From ae7194a9f2da99ad68cb08f8f81dbc89b45aadc8 Mon Sep 17 00:00:00 2001 From: dhruv Date: Sat, 1 Nov 2025 06:00:52 +0530 Subject: [PATCH] first commit --- Dockerfile | 17 + about_version.py | 9 + myenv/bin/Activate.ps1 | 247 + myenv/bin/activate | 69 + myenv/bin/activate.csh | 26 + myenv/bin/activate.fish | 69 + myenv/bin/pip | 8 + myenv/bin/pip3 | 8 + myenv/bin/pip3.10 | 8 + myenv/bin/python | 1 + myenv/bin/python3 | 1 + myenv/bin/python3.10 | 1 + .../MouseInfo-0.1.3-py3.10.egg-info/PKG-INFO | 63 + .../SOURCES.txt | 11 + .../dependency_links.txt | 1 + .../installed-files.txt | 9 + .../requires.txt | 31 + .../top_level.txt | 1 + .../site-packages/PIL/AvifImagePlugin.py | 291 + .../site-packages/PIL/BdfFontFile.py | 122 + .../site-packages/PIL/BlpImagePlugin.py | 497 + .../site-packages/PIL/BmpImagePlugin.py | 515 + .../site-packages/PIL/BufrStubImagePlugin.py | 75 + .../site-packages/PIL/ContainerIO.py | 173 + .../site-packages/PIL/CurImagePlugin.py | 75 + .../site-packages/PIL/DcxImagePlugin.py | 83 + .../site-packages/PIL/DdsImagePlugin.py | 624 ++ .../site-packages/PIL/EpsImagePlugin.py | 476 + .../python3.10/site-packages/PIL/ExifTags.py | 382 + .../site-packages/PIL/FitsImagePlugin.py | 152 + .../site-packages/PIL/FliImagePlugin.py | 178 + .../python3.10/site-packages/PIL/FontFile.py | 134 + .../site-packages/PIL/FpxImagePlugin.py | 257 + .../site-packages/PIL/FtexImagePlugin.py | 114 + .../site-packages/PIL/GbrImagePlugin.py | 103 + .../site-packages/PIL/GdImageFile.py | 102 + .../site-packages/PIL/GifImagePlugin.py | 1213 +++ .../site-packages/PIL/GimpGradientFile.py | 149 + .../site-packages/PIL/GimpPaletteFile.py | 72 + .../site-packages/PIL/GribStubImagePlugin.py | 75 + .../site-packages/PIL/Hdf5StubImagePlugin.py | 75 + .../site-packages/PIL/IcnsImagePlugin.py | 411 + .../site-packages/PIL/IcoImagePlugin.py | 381 + .../site-packages/PIL/ImImagePlugin.py | 389 + .../lib/python3.10/site-packages/PIL/Image.py | 4245 ++++++++ .../site-packages/PIL/ImageChops.py | 311 + .../python3.10/site-packages/PIL/ImageCms.py | 1123 +++ .../site-packages/PIL/ImageColor.py | 320 + .../python3.10/site-packages/PIL/ImageDraw.py | 1232 +++ .../site-packages/PIL/ImageDraw2.py | 243 + .../site-packages/PIL/ImageEnhance.py | 113 + .../python3.10/site-packages/PIL/ImageFile.py | 922 ++ .../site-packages/PIL/ImageFilter.py | 604 ++ .../python3.10/site-packages/PIL/ImageFont.py | 1339 +++ .../python3.10/site-packages/PIL/ImageGrab.py | 196 + .../python3.10/site-packages/PIL/ImageMath.py | 368 + .../python3.10/site-packages/PIL/ImageMode.py | 92 + .../site-packages/PIL/ImageMorph.py | 265 + .../python3.10/site-packages/PIL/ImageOps.py | 745 ++ .../site-packages/PIL/ImagePalette.py | 286 + .../python3.10/site-packages/PIL/ImagePath.py | 20 + .../python3.10/site-packages/PIL/ImageQt.py | 220 + .../site-packages/PIL/ImageSequence.py | 86 + .../python3.10/site-packages/PIL/ImageShow.py | 362 + .../python3.10/site-packages/PIL/ImageStat.py | 160 + .../python3.10/site-packages/PIL/ImageTk.py | 266 + .../site-packages/PIL/ImageTransform.py | 136 + .../python3.10/site-packages/PIL/ImageWin.py | 247 + .../site-packages/PIL/ImtImagePlugin.py | 103 + .../site-packages/PIL/IptcImagePlugin.py | 250 + .../site-packages/PIL/Jpeg2KImagePlugin.py | 442 + .../site-packages/PIL/JpegImagePlugin.py | 902 ++ .../site-packages/PIL/JpegPresets.py | 242 + .../site-packages/PIL/McIdasImagePlugin.py | 78 + .../site-packages/PIL/MicImagePlugin.py | 102 + .../site-packages/PIL/MpegImagePlugin.py | 84 + .../site-packages/PIL/MpoImagePlugin.py | 202 + .../site-packages/PIL/MspImagePlugin.py | 200 + .../python3.10/site-packages/PIL/PSDraw.py | 237 + .../site-packages/PIL/PaletteFile.py | 54 + .../site-packages/PIL/PalmImagePlugin.py | 217 + .../site-packages/PIL/PcdImagePlugin.py | 64 + .../site-packages/PIL/PcfFontFile.py | 254 + .../site-packages/PIL/PcxImagePlugin.py | 228 + .../site-packages/PIL/PdfImagePlugin.py | 311 + .../python3.10/site-packages/PIL/PdfParser.py | 1074 ++ .../site-packages/PIL/PixarImagePlugin.py | 72 + .../site-packages/PIL/PngImagePlugin.py | 1551 +++ .../site-packages/PIL/PpmImagePlugin.py | 375 + .../site-packages/PIL/PsdImagePlugin.py | 333 + .../site-packages/PIL/QoiImagePlugin.py | 234 + .../site-packages/PIL/SgiImagePlugin.py | 231 + .../site-packages/PIL/SpiderImagePlugin.py | 331 + .../site-packages/PIL/SunImagePlugin.py | 145 + .../lib/python3.10/site-packages/PIL/TarIO.py | 61 + .../site-packages/PIL/TgaImagePlugin.py | 264 + .../site-packages/PIL/TiffImagePlugin.py | 2339 +++++ .../python3.10/site-packages/PIL/TiffTags.py | 562 ++ .../site-packages/PIL/WalImageFile.py | 127 + .../site-packages/PIL/WebPImagePlugin.py | 320 + .../site-packages/PIL/WmfImagePlugin.py | 186 + .../site-packages/PIL/XVThumbImagePlugin.py | 83 + .../site-packages/PIL/XbmImagePlugin.py | 98 + .../site-packages/PIL/XpmImagePlugin.py | 157 + .../python3.10/site-packages/PIL/__init__.py | 87 + .../python3.10/site-packages/PIL/__main__.py | 7 + .../AvifImagePlugin.cpython-310.pyc | Bin 0 -> 6620 bytes .../__pycache__/BdfFontFile.cpython-310.pyc | Bin 0 -> 2586 bytes .../BlpImagePlugin.cpython-310.pyc | Bin 0 -> 13467 bytes .../BmpImagePlugin.cpython-310.pyc | Bin 0 -> 9915 bytes .../BufrStubImagePlugin.cpython-310.pyc | Bin 0 -> 2046 bytes .../__pycache__/ContainerIO.cpython-310.pyc | Bin 0 -> 5600 bytes .../CurImagePlugin.cpython-310.pyc | Bin 0 -> 1551 bytes .../DcxImagePlugin.cpython-310.pyc | Bin 0 -> 1893 bytes .../DdsImagePlugin.cpython-310.pyc | Bin 0 -> 14777 bytes .../EpsImagePlugin.cpython-310.pyc | Bin 0 -> 9269 bytes .../PIL/__pycache__/ExifTags.cpython-310.pyc | Bin 0 -> 10319 bytes .../FitsImagePlugin.cpython-310.pyc | Bin 0 -> 3827 bytes .../FliImagePlugin.cpython-310.pyc | Bin 0 -> 4066 bytes .../PIL/__pycache__/FontFile.cpython-310.pyc | Bin 0 -> 2945 bytes .../FpxImagePlugin.cpython-310.pyc | Bin 0 -> 4643 bytes .../FtexImagePlugin.cpython-310.pyc | Bin 0 -> 3908 bytes .../GbrImagePlugin.cpython-310.pyc | Bin 0 -> 2131 bytes .../__pycache__/GdImageFile.cpython-310.pyc | Bin 0 -> 2773 bytes .../GifImagePlugin.cpython-310.pyc | Bin 0 -> 23837 bytes .../GimpGradientFile.cpython-310.pyc | Bin 0 -> 3737 bytes .../GimpPaletteFile.cpython-310.pyc | Bin 0 -> 2037 bytes .../GribStubImagePlugin.cpython-310.pyc | Bin 0 -> 2057 bytes .../Hdf5StubImagePlugin.cpython-310.pyc | Bin 0 -> 2048 bytes .../IcnsImagePlugin.cpython-310.pyc | Bin 0 -> 10349 bytes .../IcoImagePlugin.cpython-310.pyc | Bin 0 -> 8753 bytes .../__pycache__/ImImagePlugin.cpython-310.pyc | Bin 0 -> 7214 bytes .../PIL/__pycache__/Image.cpython-310.pyc | Bin 0 -> 122558 bytes .../__pycache__/ImageChops.cpython-310.pyc | Bin 0 -> 7425 bytes .../PIL/__pycache__/ImageCms.cpython-310.pyc | Bin 0 -> 35929 bytes .../__pycache__/ImageColor.cpython-310.pyc | Bin 0 -> 8217 bytes .../PIL/__pycache__/ImageDraw.cpython-310.pyc | Bin 0 -> 27438 bytes .../__pycache__/ImageDraw2.cpython-310.pyc | Bin 0 -> 7284 bytes .../__pycache__/ImageEnhance.cpython-310.pyc | Bin 0 -> 3836 bytes .../PIL/__pycache__/ImageFile.cpython-310.pyc | Bin 0 -> 23118 bytes .../__pycache__/ImageFilter.cpython-310.pyc | Bin 0 -> 18321 bytes .../PIL/__pycache__/ImageFont.cpython-310.pyc | Bin 0 -> 60534 bytes .../PIL/__pycache__/ImageGrab.cpython-310.pyc | Bin 0 -> 3896 bytes .../PIL/__pycache__/ImageMath.cpython-310.pyc | Bin 0 -> 11211 bytes .../PIL/__pycache__/ImageMode.cpython-310.pyc | Bin 0 -> 2344 bytes .../__pycache__/ImageMorph.cpython-310.pyc | Bin 0 -> 8091 bytes .../PIL/__pycache__/ImageOps.cpython-310.pyc | Bin 0 -> 20724 bytes .../__pycache__/ImagePalette.cpython-310.pyc | Bin 0 -> 8464 bytes .../PIL/__pycache__/ImagePath.cpython-310.pyc | Bin 0 -> 318 bytes .../PIL/__pycache__/ImageQt.cpython-310.pyc | Bin 0 -> 5826 bytes .../__pycache__/ImageSequence.cpython-310.pyc | Bin 0 -> 2808 bytes .../PIL/__pycache__/ImageShow.cpython-310.pyc | Bin 0 -> 10169 bytes .../PIL/__pycache__/ImageStat.cpython-310.pyc | Bin 0 -> 5796 bytes .../PIL/__pycache__/ImageTk.cpython-310.pyc | Bin 0 -> 6979 bytes .../ImageTransform.cpython-310.pyc | Bin 0 -> 4737 bytes .../PIL/__pycache__/ImageWin.cpython-310.pyc | Bin 0 -> 9299 bytes .../ImtImagePlugin.cpython-310.pyc | Bin 0 -> 1523 bytes .../IptcImagePlugin.cpython-310.pyc | Bin 0 -> 5579 bytes .../Jpeg2KImagePlugin.cpython-310.pyc | Bin 0 -> 10506 bytes .../JpegImagePlugin.cpython-310.pyc | Bin 0 -> 20401 bytes .../__pycache__/JpegPresets.cpython-310.pyc | Bin 0 -> 7983 bytes .../McIdasImagePlugin.cpython-310.pyc | Bin 0 -> 1560 bytes .../MicImagePlugin.cpython-310.pyc | Bin 0 -> 2508 bytes .../MpegImagePlugin.cpython-310.pyc | Bin 0 -> 2413 bytes .../MpoImagePlugin.cpython-310.pyc | Bin 0 -> 5260 bytes .../MspImagePlugin.cpython-310.pyc | Bin 0 -> 3517 bytes .../PIL/__pycache__/PSDraw.cpython-310.pyc | Bin 0 -> 6172 bytes .../__pycache__/PaletteFile.cpython-310.pyc | Bin 0 -> 1591 bytes .../PalmImagePlugin.cpython-310.pyc | Bin 0 -> 6833 bytes .../PcdImagePlugin.cpython-310.pyc | Bin 0 -> 1334 bytes .../__pycache__/PcfFontFile.cpython-310.pyc | Bin 0 -> 6165 bytes .../PcxImagePlugin.cpython-310.pyc | Bin 0 -> 4093 bytes .../PdfImagePlugin.cpython-310.pyc | Bin 0 -> 5089 bytes .../PIL/__pycache__/PdfParser.cpython-310.pyc | Bin 0 -> 29870 bytes .../PixarImagePlugin.cpython-310.pyc | Bin 0 -> 1337 bytes .../PngImagePlugin.cpython-310.pyc | Bin 0 -> 34114 bytes .../PpmImagePlugin.cpython-310.pyc | Bin 0 -> 8387 bytes .../PsdImagePlugin.cpython-310.pyc | Bin 0 -> 6178 bytes .../QoiImagePlugin.cpython-310.pyc | Bin 0 -> 6371 bytes .../SgiImagePlugin.cpython-310.pyc | Bin 0 -> 4291 bytes .../SpiderImagePlugin.cpython-310.pyc | Bin 0 -> 7543 bytes .../SunImagePlugin.cpython-310.pyc | Bin 0 -> 2133 bytes .../PIL/__pycache__/TarIO.cpython-310.pyc | Bin 0 -> 1386 bytes .../TgaImagePlugin.cpython-310.pyc | Bin 0 -> 4398 bytes .../TiffImagePlugin.cpython-310.pyc | Bin 0 -> 59219 bytes .../PIL/__pycache__/TiffTags.cpython-310.pyc | Bin 0 -> 13879 bytes .../__pycache__/WalImageFile.cpython-310.pyc | Bin 0 -> 3189 bytes .../WebPImagePlugin.cpython-310.pyc | Bin 0 -> 7373 bytes .../WmfImagePlugin.cpython-310.pyc | Bin 0 -> 4116 bytes .../XVThumbImagePlugin.cpython-310.pyc | Bin 0 -> 1644 bytes .../XbmImagePlugin.cpython-310.pyc | Bin 0 -> 2440 bytes .../XpmImagePlugin.cpython-310.pyc | Bin 0 -> 3571 bytes .../PIL/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1999 bytes .../PIL/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 369 bytes .../PIL/__pycache__/_binary.cpython-310.pyc | Bin 0 -> 3049 bytes .../__pycache__/_deprecate.cpython-310.pyc | Bin 0 -> 2177 bytes .../_tkinter_finder.cpython-310.pyc | Bin 0 -> 589 bytes .../PIL/__pycache__/_typing.cpython-310.pyc | Bin 0 -> 1773 bytes .../PIL/__pycache__/_util.cpython-310.pyc | Bin 0 -> 1433 bytes .../PIL/__pycache__/_version.cpython-310.pyc | Bin 0 -> 281 bytes .../PIL/__pycache__/features.cpython-310.pyc | Bin 0 -> 10081 bytes .../PIL/__pycache__/report.cpython-310.pyc | Bin 0 -> 331 bytes .../PIL/_avif.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 87889 bytes .../python3.10/site-packages/PIL/_avif.pyi | 3 + .../python3.10/site-packages/PIL/_binary.py | 112 + .../site-packages/PIL/_deprecate.py | 72 + .../_imaging.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 3345225 bytes .../python3.10/site-packages/PIL/_imaging.pyi | 31 + ...imagingcms.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 141369 bytes .../site-packages/PIL/_imagingcms.pyi | 143 + ..._imagingft.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 298297 bytes .../site-packages/PIL/_imagingft.pyi | 69 + ...magingmath.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 161896 bytes .../site-packages/PIL/_imagingmath.pyi | 3 + ...agingmorph.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 35896 bytes .../site-packages/PIL/_imagingmorph.pyi | 3 + ..._imagingtk.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 45560 bytes .../site-packages/PIL/_imagingtk.pyi | 3 + .../site-packages/PIL/_tkinter_finder.py | 20 + .../python3.10/site-packages/PIL/_typing.py | 54 + .../lib/python3.10/site-packages/PIL/_util.py | 26 + .../python3.10/site-packages/PIL/_version.py | 4 + .../PIL/_webp.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 84193 bytes .../python3.10/site-packages/PIL/_webp.pyi | 3 + .../python3.10/site-packages/PIL/features.py | 361 + .../lib/python3.10/site-packages/PIL/py.typed | 0 .../python3.10/site-packages/PIL/report.py | 5 + .../PKG-INFO | 95 + .../SOURCES.txt | 11 + .../dependency_links.txt | 1 + .../installed-files.txt | 11 + .../requires.txt | 1 + .../top_level.txt | 1 + .../PyRect-0.2.0-py3.10.egg-info/PKG-INFO | 132 + .../PyRect-0.2.0-py3.10.egg-info/SOURCES.txt | 18 + .../dependency_links.txt | 1 + .../installed-files.txt | 6 + .../top_level.txt | 1 + myenv/lib/python3.10/site-packages/Xlib/X.py | 424 + myenv/lib/python3.10/site-packages/Xlib/XK.py | 89 + .../python3.10/site-packages/Xlib/Xatom.py | 90 + .../site-packages/Xlib/Xcursorfont.py | 99 + .../python3.10/site-packages/Xlib/Xutil.py | 81 + .../python3.10/site-packages/Xlib/__init__.py | 39 + .../Xlib/__pycache__/X.cpython-310.pyc | Bin 0 -> 7523 bytes .../Xlib/__pycache__/XK.cpython-310.pyc | Bin 0 -> 2124 bytes .../Xlib/__pycache__/Xatom.cpython-310.pyc | Bin 0 -> 1806 bytes .../__pycache__/Xcursorfont.cpython-310.pyc | Bin 0 -> 1914 bytes .../Xlib/__pycache__/Xutil.cpython-310.pyc | Bin 0 -> 1470 bytes .../Xlib/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 399 bytes .../Xlib/__pycache__/display.cpython-310.pyc | Bin 0 -> 31832 bytes .../Xlib/__pycache__/error.cpython-310.pyc | Bin 0 -> 6350 bytes .../Xlib/__pycache__/rdb.cpython-310.pyc | Bin 0 -> 14726 bytes .../Xlib/__pycache__/threaded.cpython-310.pyc | Bin 0 -> 316 bytes .../Xlib/__pycache__/xauth.cpython-310.pyc | Bin 0 -> 2947 bytes .../python3.10/site-packages/Xlib/display.py | 951 ++ .../python3.10/site-packages/Xlib/error.py | 160 + .../site-packages/Xlib/ext/__init__.py | 46 + .../ext/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 682 bytes .../ext/__pycache__/composite.cpython-310.pyc | Bin 0 -> 6104 bytes .../ext/__pycache__/damage.cpython-310.pyc | Bin 0 -> 4244 bytes .../Xlib/ext/__pycache__/dpms.cpython-310.pyc | Bin 0 -> 4707 bytes .../Xlib/ext/__pycache__/ge.cpython-310.pyc | Bin 0 -> 2247 bytes .../ext/__pycache__/nvcontrol.cpython-310.pyc | Bin 0 -> 63112 bytes .../ext/__pycache__/randr.cpython-310.pyc | Bin 0 -> 27492 bytes .../ext/__pycache__/record.cpython-310.pyc | Bin 0 -> 7006 bytes .../Xlib/ext/__pycache__/res.cpython-310.pyc | Bin 0 -> 7273 bytes .../__pycache__/screensaver.cpython-310.pyc | Bin 0 -> 4823 bytes .../ext/__pycache__/security.cpython-310.pyc | Bin 0 -> 3001 bytes .../ext/__pycache__/shape.cpython-310.pyc | Bin 0 -> 7702 bytes .../ext/__pycache__/xfixes.cpython-310.pyc | Bin 0 -> 5421 bytes .../ext/__pycache__/xinerama.cpython-310.pyc | Bin 0 -> 5434 bytes .../ext/__pycache__/xinput.cpython-310.pyc | Bin 0 -> 17337 bytes .../ext/__pycache__/xtest.cpython-310.pyc | Bin 0 -> 3117 bytes .../site-packages/Xlib/ext/composite.py | 271 + .../site-packages/Xlib/ext/damage.py | 181 + .../python3.10/site-packages/Xlib/ext/dpms.py | 232 + .../python3.10/site-packages/Xlib/ext/ge.py | 112 + .../site-packages/Xlib/ext/nvcontrol.py | 5393 +++++++++++ .../site-packages/Xlib/ext/randr.py | 1292 +++ .../site-packages/Xlib/ext/record.py | 282 + .../python3.10/site-packages/Xlib/ext/res.py | 288 + .../site-packages/Xlib/ext/screensaver.py | 198 + .../site-packages/Xlib/ext/security.py | 139 + .../site-packages/Xlib/ext/shape.py | 297 + .../site-packages/Xlib/ext/xfixes.py | 200 + .../site-packages/Xlib/ext/xinerama.py | 222 + .../site-packages/Xlib/ext/xinput.py | 777 ++ .../site-packages/Xlib/ext/xtest.py | 122 + .../site-packages/Xlib/keysymdef/__init__.py | 42 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 392 bytes .../keysymdef/__pycache__/apl.cpython-310.pyc | Bin 0 -> 654 bytes .../__pycache__/arabic.cpython-310.pyc | Bin 0 -> 1627 bytes .../__pycache__/cyrillic.cpython-310.pyc | Bin 0 -> 3112 bytes .../__pycache__/greek.cpython-310.pyc | Bin 0 -> 2336 bytes .../__pycache__/hebrew.cpython-310.pyc | Bin 0 -> 1273 bytes .../__pycache__/katakana.cpython-310.pyc | Bin 0 -> 1865 bytes .../__pycache__/korean.cpython-310.pyc | Bin 0 -> 3484 bytes .../__pycache__/latin1.cpython-310.pyc | Bin 0 -> 4398 bytes .../__pycache__/latin2.cpython-310.pyc | Bin 0 -> 1515 bytes .../__pycache__/latin3.cpython-310.pyc | Bin 0 -> 765 bytes .../__pycache__/latin4.cpython-310.pyc | Bin 0 -> 1029 bytes .../__pycache__/miscellany.cpython-310.pyc | Bin 0 -> 3691 bytes .../__pycache__/publishing.cpython-310.pyc | Bin 0 -> 2525 bytes .../__pycache__/special.cpython-310.pyc | Bin 0 -> 799 bytes .../__pycache__/technical.cpython-310.pyc | Bin 0 -> 1614 bytes .../__pycache__/thai.cpython-310.pyc | Bin 0 -> 2550 bytes .../__pycache__/xf86.cpython-310.pyc | Bin 0 -> 5585 bytes .../__pycache__/xk3270.cpython-310.pyc | Bin 0 -> 1040 bytes .../keysymdef/__pycache__/xkb.cpython-310.pyc | Bin 0 -> 3431 bytes .../site-packages/Xlib/keysymdef/apl.py | 19 + .../site-packages/Xlib/keysymdef/arabic.py | 50 + .../site-packages/Xlib/keysymdef/cyrillic.py | 107 + .../site-packages/Xlib/keysymdef/greek.py | 74 + .../site-packages/Xlib/keysymdef/hebrew.py | 40 + .../site-packages/Xlib/keysymdef/katakana.py | 70 + .../site-packages/Xlib/keysymdef/korean.py | 107 + .../site-packages/Xlib/keysymdef/latin1.py | 195 + .../site-packages/Xlib/keysymdef/latin2.py | 57 + .../site-packages/Xlib/keysymdef/latin3.py | 22 + .../site-packages/Xlib/keysymdef/latin4.py | 36 + .../Xlib/keysymdef/miscellany.py | 169 + .../Xlib/keysymdef/publishing.py | 83 + .../site-packages/Xlib/keysymdef/special.py | 24 + .../site-packages/Xlib/keysymdef/technical.py | 49 + .../site-packages/Xlib/keysymdef/thai.py | 84 + .../site-packages/Xlib/keysymdef/xf86.py | 202 + .../site-packages/Xlib/keysymdef/xk3270.py | 30 + .../site-packages/Xlib/keysymdef/xkb.py | 100 + .../site-packages/Xlib/protocol/__init__.py | 28 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 272 bytes .../__pycache__/display.cpython-310.pyc | Bin 0 -> 16975 bytes .../__pycache__/event.cpython-310.pyc | Bin 0 -> 11261 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 43221 bytes .../protocol/__pycache__/rq.cpython-310.pyc | Bin 0 -> 38137 bytes .../__pycache__/structs.cpython-310.pyc | Bin 0 -> 3196 bytes .../site-packages/Xlib/protocol/display.py | 1075 +++ .../site-packages/Xlib/protocol/event.py | 434 + .../site-packages/Xlib/protocol/request.py | 1900 ++++ .../site-packages/Xlib/protocol/rq.py | 1463 +++ .../site-packages/Xlib/protocol/structs.py | 161 + .../lib/python3.10/site-packages/Xlib/rdb.py | 712 ++ .../site-packages/Xlib/support/__init__.py | 26 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 250 bytes .../__pycache__/connect.cpython-310.pyc | Bin 0 -> 2264 bytes .../support/__pycache__/lock.cpython-310.pyc | Bin 0 -> 814 bytes .../__pycache__/unix_connect.cpython-310.pyc | Bin 0 -> 4018 bytes .../__pycache__/vms_connect.cpython-310.pyc | Bin 0 -> 1172 bytes .../site-packages/Xlib/support/connect.py | 102 + .../site-packages/Xlib/support/lock.py | 44 + .../Xlib/support/unix_connect.py | 217 + .../site-packages/Xlib/support/vms_connect.py | 74 + .../python3.10/site-packages/Xlib/threaded.py | 28 + .../python3.10/site-packages/Xlib/xauth.py | 134 + .../site-packages/Xlib/xobject/__init__.py | 29 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 288 bytes .../__pycache__/colormap.cpython-310.pyc | Bin 0 -> 4413 bytes .../__pycache__/cursor.cpython-310.pyc | Bin 0 -> 1102 bytes .../__pycache__/drawable.cpython-310.pyc | Bin 0 -> 23920 bytes .../__pycache__/fontable.cpython-310.pyc | Bin 0 -> 3141 bytes .../xobject/__pycache__/icccm.cpython-310.pyc | Bin 0 -> 1251 bytes .../__pycache__/resource.cpython-310.pyc | Bin 0 -> 1577 bytes .../site-packages/Xlib/xobject/colormap.py | 141 + .../site-packages/Xlib/xobject/cursor.py | 47 + .../site-packages/Xlib/xobject/drawable.py | 835 ++ .../site-packages/Xlib/xobject/fontable.py | 110 + .../site-packages/Xlib/xobject/icccm.py | 75 + .../site-packages/Xlib/xobject/resource.py | 54 + .../__pycache__/six.cpython-310.pyc | Bin 0 -> 27678 bytes .../site-packages/_distutils_hack/__init__.py | 222 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 7618 bytes .../__pycache__/override.cpython-310.pyc | Bin 0 -> 271 bytes .../site-packages/_distutils_hack/override.py | 1 + .../site-packages/distutils-precedence.pth | 1 + .../evdev-1.9.2.dist-info/INSTALLER | 1 + .../evdev-1.9.2.dist-info/METADATA | 78 + .../evdev-1.9.2.dist-info/RECORD | 39 + .../evdev-1.9.2.dist-info/REQUESTED | 0 .../site-packages/evdev-1.9.2.dist-info/WHEEL | 5 + .../evdev-1.9.2.dist-info/licenses/LICENSE | 29 + .../evdev-1.9.2.dist-info/top_level.txt | 1 + .../site-packages/evdev/__init__.py | 39 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 673 bytes .../evdev/__pycache__/device.cpython-310.pyc | Bin 0 -> 13495 bytes .../evdev/__pycache__/ecodes.cpython-310.pyc | Bin 0 -> 101127 bytes .../ecodes_runtime.cpython-310.pyc | Bin 0 -> 2047 bytes .../evdev/__pycache__/eventio.cpython-310.pyc | Bin 0 -> 5166 bytes .../__pycache__/eventio_async.cpython-310.pyc | Bin 0 -> 4149 bytes .../evdev/__pycache__/events.cpython-310.pyc | Bin 0 -> 6079 bytes .../evdev/__pycache__/evtest.cpython-310.pyc | Bin 0 -> 5926 bytes .../evdev/__pycache__/ff.cpython-310.pyc | Bin 0 -> 5503 bytes .../__pycache__/genecodes_c.cpython-310.pyc | Bin 0 -> 3384 bytes .../__pycache__/genecodes_py.cpython-310.pyc | Bin 0 -> 1407 bytes .../evdev/__pycache__/uinput.cpython-310.pyc | Bin 0 -> 10220 bytes .../evdev/__pycache__/util.cpython-310.pyc | Bin 0 -> 4140 bytes .../_ecodes.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 86064 bytes .../_input.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 50336 bytes .../_uinput.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 38608 bytes .../python3.10/site-packages/evdev/device.py | 440 + .../python3.10/site-packages/evdev/ecodes.py | 3880 ++++++++ .../site-packages/evdev/ecodes_runtime.py | 111 + .../python3.10/site-packages/evdev/eventio.py | 152 + .../site-packages/evdev/eventio_async.py | 106 + .../python3.10/site-packages/evdev/events.py | 192 + .../python3.10/site-packages/evdev/evtest.py | 181 + .../lib/python3.10/site-packages/evdev/ff.py | 198 + .../site-packages/evdev/genecodes_c.py | 147 + .../site-packages/evdev/genecodes_py.py | 54 + .../python3.10/site-packages/evdev/input.c | 579 ++ .../python3.10/site-packages/evdev/py.typed | 0 .../python3.10/site-packages/evdev/uinput.c | 417 + .../python3.10/site-packages/evdev/uinput.py | 375 + .../python3.10/site-packages/evdev/util.py | 146 + .../site-packages/mouseinfo/__init__.py | 901 ++ .../site-packages/mouseinfo/__main__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 19224 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 298 bytes .../pillow-11.3.0.dist-info/INSTALLER | 1 + .../pillow-11.3.0.dist-info/METADATA | 177 + .../pillow-11.3.0.dist-info/RECORD | 233 + .../pillow-11.3.0.dist-info/WHEEL | 6 + .../pillow-11.3.0.dist-info/licenses/LICENSE | 1487 +++ .../pillow-11.3.0.dist-info/top_level.txt | 1 + .../pillow-11.3.0.dist-info/zip-safe | 1 + .../pillow.libs/libXau-154567c4.so.6.0.0 | Bin 0 -> 22081 bytes .../pillow.libs/libavif-01e67780.so.16.3.0 | Bin 0 -> 5142057 bytes .../libbrotlicommon-c55a5f7a.so.1.1.0 | Bin 0 -> 144425 bytes .../libbrotlidec-2ced2f3a.so.1.1.0 | Bin 0 -> 62337 bytes .../libfreetype-083ff72c.so.6.20.2 | Bin 0 -> 1430825 bytes .../libharfbuzz-fe5b8f8d.so.0.61121.0 | Bin 0 -> 908081 bytes .../pillow.libs/libjpeg-8a13c6e0.so.62.4.0 | Bin 0 -> 832177 bytes .../pillow.libs/liblcms2-cc10e42f.so.2.0.17 | Bin 0 -> 519073 bytes .../pillow.libs/liblzma-64b7ab39.so.5.8.1 | Bin 0 -> 266369 bytes .../pillow.libs/libopenjp2-56811f71.so.2.5.3 | Bin 0 -> 585849 bytes .../pillow.libs/libpng16-d00bd151.so.16.49.0 | Bin 0 -> 278001 bytes .../pillow.libs/libsharpyuv-60a7c00b.so.0.1.1 | Bin 0 -> 46113 bytes .../pillow.libs/libtiff-13a02c81.so.6.1.0 | Bin 0 -> 746233 bytes .../pillow.libs/libwebp-5f0275c0.so.7.1.10 | Bin 0 -> 731185 bytes .../libwebpdemux-efaed568.so.2.0.16 | Bin 0 -> 30217 bytes .../pillow.libs/libwebpmux-6f2b1ad9.so.3.1.1 | Bin 0 -> 58617 bytes .../pillow.libs/libxcb-64009ff3.so.1.1.0 | Bin 0 -> 251425 bytes .../pip-23.0.1.dist-info/INSTALLER | 1 + .../pip-23.0.1.dist-info/LICENSE.txt | 20 + .../pip-23.0.1.dist-info/METADATA | 88 + .../site-packages/pip-23.0.1.dist-info/RECORD | 1002 ++ .../pip-23.0.1.dist-info/REQUESTED | 0 .../site-packages/pip-23.0.1.dist-info/WHEEL | 5 + .../pip-23.0.1.dist-info/entry_points.txt | 4 + .../pip-23.0.1.dist-info/top_level.txt | 1 + .../python3.10/site-packages/pip/__init__.py | 13 + .../python3.10/site-packages/pip/__main__.py | 31 + .../site-packages/pip/__pip-runner__.py | 50 + .../pip/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 664 bytes .../pip/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 626 bytes .../__pip-runner__.cpython-310.pyc | Bin 0 -> 1662 bytes .../site-packages/pip/_internal/__init__.py | 19 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 785 bytes .../__pycache__/build_env.cpython-310.pyc | Bin 0 -> 9743 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 9297 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 0 -> 11245 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 25970 bytes .../__pycache__/main.cpython-310.pyc | Bin 0 -> 650 bytes .../__pycache__/pyproject.cpython-310.pyc | Bin 0 -> 3652 bytes .../self_outdated_check.cpython-310.pyc | Bin 0 -> 6674 bytes .../__pycache__/wheel_builder.cpython-310.pyc | Bin 0 -> 9162 bytes .../site-packages/pip/_internal/build_env.py | 311 + .../site-packages/pip/_internal/cache.py | 293 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 305 bytes .../autocompletion.cpython-310.pyc | Bin 0 -> 5338 bytes .../__pycache__/base_command.cpython-310.pyc | Bin 0 -> 6163 bytes .../__pycache__/cmdoptions.cpython-310.pyc | Bin 0 -> 23064 bytes .../command_context.cpython-310.pyc | Bin 0 -> 1345 bytes .../cli/__pycache__/main.cpython-310.pyc | Bin 0 -> 1403 bytes .../__pycache__/main_parser.cpython-310.pyc | Bin 0 -> 3028 bytes .../cli/__pycache__/parser.cpython-310.pyc | Bin 0 -> 9987 bytes .../__pycache__/progress_bars.cpython-310.pyc | Bin 0 -> 1929 bytes .../__pycache__/req_command.cpython-310.pyc | Bin 0 -> 13124 bytes .../cli/__pycache__/spinners.cpython-310.pyc | Bin 0 -> 4995 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 0 -> 384 bytes .../pip/_internal/cli/autocompletion.py | 171 + .../pip/_internal/cli/base_command.py | 216 + .../pip/_internal/cli/cmdoptions.py | 1055 ++ .../pip/_internal/cli/command_context.py | 27 + .../site-packages/pip/_internal/cli/main.py | 70 + .../pip/_internal/cli/main_parser.py | 134 + .../site-packages/pip/_internal/cli/parser.py | 294 + .../pip/_internal/cli/progress_bars.py | 68 + .../pip/_internal/cli/req_command.py | 502 + .../pip/_internal/cli/spinners.py | 159 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 132 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3284 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 6267 bytes .../__pycache__/check.cpython-310.pyc | Bin 0 -> 1602 bytes .../__pycache__/completion.cpython-310.pyc | Bin 0 -> 4193 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 0 -> 8971 bytes .../__pycache__/debug.cpython-310.pyc | Bin 0 -> 6712 bytes .../__pycache__/download.cpython-310.pyc | Bin 0 -> 4242 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 0 -> 2667 bytes .../commands/__pycache__/hash.cpython-310.pyc | Bin 0 -> 2181 bytes .../commands/__pycache__/help.cpython-310.pyc | Bin 0 -> 1342 bytes .../__pycache__/index.cpython-310.pyc | Bin 0 -> 4619 bytes .../__pycache__/inspect.cpython-310.pyc | Bin 0 -> 3002 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 20247 bytes .../commands/__pycache__/list.cpython-310.pyc | Bin 0 -> 10329 bytes .../__pycache__/search.cpython-310.pyc | Bin 0 -> 5395 bytes .../commands/__pycache__/show.cpython-310.pyc | Bin 0 -> 6556 bytes .../__pycache__/uninstall.cpython-310.pyc | Bin 0 -> 3363 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 5438 bytes .../pip/_internal/commands/cache.py | 223 + .../pip/_internal/commands/check.py | 53 + .../pip/_internal/commands/completion.py | 126 + .../pip/_internal/commands/configuration.py | 282 + .../pip/_internal/commands/debug.py | 199 + .../pip/_internal/commands/download.py | 149 + .../pip/_internal/commands/freeze.py | 97 + .../pip/_internal/commands/hash.py | 59 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/index.py | 139 + .../pip/_internal/commands/inspect.py | 92 + .../pip/_internal/commands/install.py | 873 ++ .../pip/_internal/commands/list.py | 365 + .../pip/_internal/commands/search.py | 174 + .../pip/_internal/commands/show.py | 189 + .../pip/_internal/commands/uninstall.py | 113 + .../pip/_internal/commands/wheel.py | 203 + .../pip/_internal/configuration.py | 374 + .../pip/_internal/distributions/__init__.py | 21 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 832 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1920 bytes .../__pycache__/installed.cpython-310.pyc | Bin 0 -> 1297 bytes .../__pycache__/sdist.cpython-310.pyc | Bin 0 -> 5028 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 1664 bytes .../pip/_internal/distributions/base.py | 39 + .../pip/_internal/distributions/installed.py | 23 + .../pip/_internal/distributions/sdist.py | 150 + .../pip/_internal/distributions/wheel.py | 34 + .../site-packages/pip/_internal/exceptions.py | 747 ++ .../pip/_internal/index/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 259 bytes .../__pycache__/collector.cpython-310.pyc | Bin 0 -> 15326 bytes .../package_finder.cpython-310.pyc | Bin 0 -> 29486 bytes .../index/__pycache__/sources.cpython-310.pyc | Bin 0 -> 7152 bytes .../pip/_internal/index/collector.py | 505 + .../pip/_internal/index/package_finder.py | 1029 ++ .../pip/_internal/index/sources.py | 224 + .../pip/_internal/locations/__init__.py | 467 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 11061 bytes .../__pycache__/_distutils.cpython-310.pyc | Bin 0 -> 4634 bytes .../__pycache__/_sysconfig.cpython-310.pyc | Bin 0 -> 6025 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 2429 bytes .../pip/_internal/locations/_distutils.py | 173 + .../pip/_internal/locations/_sysconfig.py | 213 + .../pip/_internal/locations/base.py | 81 + .../site-packages/pip/_internal/main.py | 12 + .../pip/_internal/metadata/__init__.py | 127 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4763 bytes .../__pycache__/_json.cpython-310.pyc | Bin 0 -> 2219 bytes .../metadata/__pycache__/base.cpython-310.pyc | Bin 0 -> 26697 bytes .../__pycache__/pkg_resources.cpython-310.pyc | Bin 0 -> 10201 bytes .../pip/_internal/metadata/_json.py | 84 + .../pip/_internal/metadata/base.py | 688 ++ .../_internal/metadata/importlib/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 350 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 2782 bytes .../__pycache__/_dists.cpython-310.pyc | Bin 0 -> 8940 bytes .../__pycache__/_envs.cpython-310.pyc | Bin 0 -> 7736 bytes .../_internal/metadata/importlib/_compat.py | 55 + .../_internal/metadata/importlib/_dists.py | 224 + .../pip/_internal/metadata/importlib/_envs.py | 188 + .../pip/_internal/metadata/pkg_resources.py | 270 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 293 bytes .../__pycache__/candidate.cpython-310.pyc | Bin 0 -> 1445 bytes .../__pycache__/direct_url.cpython-310.pyc | Bin 0 -> 7449 bytes .../format_control.cpython-310.pyc | Bin 0 -> 2770 bytes .../models/__pycache__/index.cpython-310.pyc | Bin 0 -> 1262 bytes .../installation_report.cpython-310.pyc | Bin 0 -> 1772 bytes .../models/__pycache__/link.cpython-310.pyc | Bin 0 -> 16890 bytes .../models/__pycache__/scheme.cpython-310.pyc | Bin 0 -> 1061 bytes .../__pycache__/search_scope.cpython-310.pyc | Bin 0 -> 3580 bytes .../selection_prefs.cpython-310.pyc | Bin 0 -> 1723 bytes .../__pycache__/target_python.cpython-310.pyc | Bin 0 -> 3474 bytes .../models/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4493 bytes .../pip/_internal/models/candidate.py | 34 + .../pip/_internal/models/direct_url.py | 228 + .../pip/_internal/models/format_control.py | 80 + .../pip/_internal/models/index.py | 28 + .../_internal/models/installation_report.py | 53 + .../pip/_internal/models/link.py | 524 + .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 133 + .../pip/_internal/models/selection_prefs.py | 51 + .../pip/_internal/models/target_python.py | 110 + .../pip/_internal/models/wheel.py | 92 + .../pip/_internal/network/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 281 bytes .../network/__pycache__/auth.cpython-310.pyc | Bin 0 -> 12017 bytes .../network/__pycache__/cache.cpython-310.pyc | Bin 0 -> 2968 bytes .../__pycache__/download.cpython-310.pyc | Bin 0 -> 5563 bytes .../__pycache__/lazy_wheel.cpython-310.pyc | Bin 0 -> 8449 bytes .../__pycache__/session.cpython-310.pyc | Bin 0 -> 12451 bytes .../network/__pycache__/utils.cpython-310.pyc | Bin 0 -> 1484 bytes .../__pycache__/xmlrpc.cpython-310.pyc | Bin 0 -> 2094 bytes .../pip/_internal/network/auth.py | 446 + .../pip/_internal/network/cache.py | 69 + .../pip/_internal/network/download.py | 186 + .../pip/_internal/network/lazy_wheel.py | 210 + .../pip/_internal/network/session.py | 518 + .../pip/_internal/network/utils.py | 96 + .../pip/_internal/network/xmlrpc.py | 60 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 229 bytes .../__pycache__/check.cpython-310.pyc | Bin 0 -> 4057 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 0 -> 6234 bytes .../__pycache__/prepare.cpython-310.pyc | Bin 0 -> 15087 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 235 bytes .../__pycache__/build_tracker.cpython-310.pyc | Bin 0 -> 4316 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 0 -> 1468 bytes .../metadata_editable.cpython-310.pyc | Bin 0 -> 1502 bytes .../metadata_legacy.cpython-310.pyc | Bin 0 -> 2407 bytes .../build/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 1258 bytes .../wheel_editable.cpython-310.pyc | Bin 0 -> 1482 bytes .../__pycache__/wheel_legacy.cpython-310.pyc | Bin 0 -> 2792 bytes .../operations/build/build_tracker.py | 124 + .../_internal/operations/build/metadata.py | 39 + .../operations/build/metadata_editable.py | 41 + .../operations/build/metadata_legacy.py | 74 + .../pip/_internal/operations/build/wheel.py | 37 + .../operations/build/wheel_editable.py | 46 + .../operations/build/wheel_legacy.py | 102 + .../pip/_internal/operations/check.py | 149 + .../pip/_internal/operations/freeze.py | 254 + .../_internal/operations/install/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 293 bytes .../editable_legacy.cpython-310.pyc | Bin 0 -> 1580 bytes .../__pycache__/legacy.cpython-310.pyc | Bin 0 -> 3378 bytes .../install/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 21179 bytes .../operations/install/editable_legacy.py | 47 + .../_internal/operations/install/legacy.py | 120 + .../pip/_internal/operations/install/wheel.py | 738 ++ .../pip/_internal/operations/prepare.py | 667 ++ .../site-packages/pip/_internal/pyproject.py | 174 + .../pip/_internal/req/__init__.py | 94 + .../req/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2636 bytes .../__pycache__/constructors.cpython-310.pyc | Bin 0 -> 12406 bytes .../req/__pycache__/req_file.cpython-310.pyc | Bin 0 -> 13666 bytes .../__pycache__/req_install.cpython-310.pyc | Bin 0 -> 24423 bytes .../req/__pycache__/req_set.cpython-310.pyc | Bin 0 -> 3944 bytes .../__pycache__/req_uninstall.cpython-310.pyc | Bin 0 -> 19091 bytes .../pip/_internal/req/constructors.py | 501 + .../pip/_internal/req/req_file.py | 544 ++ .../pip/_internal/req/req_install.py | 946 ++ .../pip/_internal/req/req_set.py | 82 + .../pip/_internal/req/req_uninstall.py | 640 ++ .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 229 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1081 bytes .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 236 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 0 -> 14982 bytes .../_internal/resolution/legacy/resolver.py | 600 ++ .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 240 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 6483 bytes .../__pycache__/candidates.cpython-310.pyc | Bin 0 -> 18624 bytes .../__pycache__/factory.cpython-310.pyc | Bin 0 -> 19104 bytes .../found_candidates.cpython-310.pyc | Bin 0 -> 4900 bytes .../__pycache__/provider.cpython-310.pyc | Bin 0 -> 7741 bytes .../__pycache__/reporter.cpython-310.pyc | Bin 0 -> 3209 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 7498 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 0 -> 8213 bytes .../_internal/resolution/resolvelib/base.py | 141 + .../resolution/resolvelib/candidates.py | 556 ++ .../resolution/resolvelib/factory.py | 731 ++ .../resolution/resolvelib/found_candidates.py | 155 + .../resolution/resolvelib/provider.py | 248 + .../resolution/resolvelib/reporter.py | 68 + .../resolution/resolvelib/requirements.py | 166 + .../resolution/resolvelib/resolver.py | 296 + .../pip/_internal/self_outdated_check.py | 242 + .../pip/_internal/utils/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 224 bytes .../utils/__pycache__/_log.cpython-310.pyc | Bin 0 -> 1552 bytes .../utils/__pycache__/appdirs.cpython-310.pyc | Bin 0 -> 1650 bytes .../utils/__pycache__/compat.cpython-310.pyc | Bin 0 -> 1540 bytes .../compatibility_tags.cpython-310.pyc | Bin 0 -> 4109 bytes .../__pycache__/datetime.cpython-310.pyc | Bin 0 -> 547 bytes .../__pycache__/deprecation.cpython-310.pyc | Bin 0 -> 5132 bytes .../direct_url_helpers.cpython-310.pyc | Bin 0 -> 2115 bytes .../distutils_args.cpython-310.pyc | Bin 0 -> 1089 bytes .../__pycache__/egg_link.cpython-310.pyc | Bin 0 -> 2195 bytes .../__pycache__/encoding.cpython-310.pyc | Bin 0 -> 1337 bytes .../__pycache__/entrypoints.cpython-310.pyc | Bin 0 -> 2730 bytes .../__pycache__/filesystem.cpython-310.pyc | Bin 0 -> 4513 bytes .../__pycache__/filetypes.cpython-310.pyc | Bin 0 -> 974 bytes .../utils/__pycache__/glibc.cpython-310.pyc | Bin 0 -> 1703 bytes .../utils/__pycache__/hashes.cpython-310.pyc | Bin 0 -> 5254 bytes .../inject_securetransport.cpython-310.pyc | Bin 0 -> 1019 bytes .../utils/__pycache__/logging.cpython-310.pyc | Bin 0 -> 9749 bytes .../utils/__pycache__/misc.cpython-310.pyc | Bin 0 -> 22286 bytes .../utils/__pycache__/models.cpython-310.pyc | Bin 0 -> 2020 bytes .../__pycache__/packaging.cpython-310.pyc | Bin 0 -> 2112 bytes .../setuptools_build.cpython-310.pyc | Bin 0 -> 4631 bytes .../__pycache__/subprocess.cpython-310.pyc | Bin 0 -> 5803 bytes .../__pycache__/temp_dir.cpython-310.pyc | Bin 0 -> 7347 bytes .../__pycache__/unpacking.cpython-310.pyc | Bin 0 -> 6684 bytes .../utils/__pycache__/urls.cpython-310.pyc | Bin 0 -> 1617 bytes .../__pycache__/virtualenv.cpython-310.pyc | Bin 0 -> 3320 bytes .../utils/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4445 bytes .../site-packages/pip/_internal/utils/_log.py | 38 + .../pip/_internal/utils/appdirs.py | 52 + .../pip/_internal/utils/compat.py | 63 + .../pip/_internal/utils/compatibility_tags.py | 165 + .../pip/_internal/utils/datetime.py | 11 + .../pip/_internal/utils/deprecation.py | 188 + .../pip/_internal/utils/direct_url_helpers.py | 87 + .../pip/_internal/utils/distutils_args.py | 43 + .../pip/_internal/utils/egg_link.py | 72 + .../pip/_internal/utils/encoding.py | 36 + .../pip/_internal/utils/entrypoints.py | 84 + .../pip/_internal/utils/filesystem.py | 153 + .../pip/_internal/utils/filetypes.py | 27 + .../pip/_internal/utils/glibc.py | 88 + .../pip/_internal/utils/hashes.py | 144 + .../_internal/utils/inject_securetransport.py | 35 + .../pip/_internal/utils/logging.py | 348 + .../site-packages/pip/_internal/utils/misc.py | 739 ++ .../pip/_internal/utils/models.py | 39 + .../pip/_internal/utils/packaging.py | 57 + .../pip/_internal/utils/setuptools_build.py | 195 + .../pip/_internal/utils/subprocess.py | 260 + .../pip/_internal/utils/temp_dir.py | 246 + .../pip/_internal/utils/unpacking.py | 257 + .../site-packages/pip/_internal/utils/urls.py | 62 + .../pip/_internal/utils/virtualenv.py | 104 + .../pip/_internal/utils/wheel.py | 136 + .../pip/_internal/vcs/__init__.py | 15 + .../vcs/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 547 bytes .../vcs/__pycache__/bazaar.cpython-310.pyc | Bin 0 -> 3513 bytes .../vcs/__pycache__/git.cpython-310.pyc | Bin 0 -> 12577 bytes .../vcs/__pycache__/mercurial.cpython-310.pyc | Bin 0 -> 5093 bytes .../__pycache__/subversion.cpython-310.pyc | Bin 0 -> 8485 bytes .../versioncontrol.cpython-310.pyc | Bin 0 -> 21176 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 112 + .../site-packages/pip/_internal/vcs/git.py | 526 + .../pip/_internal/vcs/mercurial.py | 163 + .../pip/_internal/vcs/subversion.py | 324 + .../pip/_internal/vcs/versioncontrol.py | 705 ++ .../pip/_internal/wheel_builder.py | 382 + .../site-packages/pip/_vendor/__init__.py | 120 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3160 bytes .../_vendor/__pycache__/six.cpython-310.pyc | Bin 0 -> 27614 bytes .../typing_extensions.cpython-310.pyc | Bin 0 -> 65068 bytes .../pip/_vendor/cachecontrol/__init__.py | 18 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 675 bytes .../__pycache__/_cmd.cpython-310.pyc | Bin 0 -> 1613 bytes .../__pycache__/adapter.cpython-310.pyc | Bin 0 -> 3189 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 2723 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 789 bytes .../__pycache__/controller.cpython-310.pyc | Bin 0 -> 8623 bytes .../__pycache__/filewrapper.cpython-310.pyc | Bin 0 -> 2825 bytes .../__pycache__/heuristics.cpython-310.pyc | Bin 0 -> 4749 bytes .../__pycache__/serialize.cpython-310.pyc | Bin 0 -> 4364 bytes .../__pycache__/wrapper.cpython-310.pyc | Bin 0 -> 720 bytes .../pip/_vendor/cachecontrol/_cmd.py | 61 + .../pip/_vendor/cachecontrol/adapter.py | 137 + .../pip/_vendor/cachecontrol/cache.py | 65 + .../_vendor/cachecontrol/caches/__init__.py | 9 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 394 bytes .../__pycache__/file_cache.cpython-310.pyc | Bin 0 -> 4994 bytes .../__pycache__/redis_cache.cpython-310.pyc | Bin 0 -> 1652 bytes .../_vendor/cachecontrol/caches/file_cache.py | 188 + .../cachecontrol/caches/redis_cache.py | 39 + .../pip/_vendor/cachecontrol/compat.py | 32 + .../pip/_vendor/cachecontrol/controller.py | 439 + .../pip/_vendor/cachecontrol/filewrapper.py | 111 + .../pip/_vendor/cachecontrol/heuristics.py | 139 + .../pip/_vendor/cachecontrol/serialize.py | 190 + .../pip/_vendor/cachecontrol/wrapper.py | 33 + .../pip/_vendor/certifi/__init__.py | 4 + .../pip/_vendor/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 337 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 487 bytes .../certifi/__pycache__/core.cpython-310.pyc | Bin 0 -> 1957 bytes .../pip/_vendor/certifi/cacert.pem | 4527 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 108 + .../pip/_vendor/chardet/__init__.py | 115 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3205 bytes .../__pycache__/big5freq.cpython-310.pyc | Bin 0 -> 27211 bytes .../__pycache__/big5prober.cpython-310.pyc | Bin 0 -> 1189 bytes .../chardistribution.cpython-310.pyc | Bin 0 -> 6606 bytes .../charsetgroupprober.cpython-310.pyc | Bin 0 -> 2456 bytes .../__pycache__/charsetprober.cpython-310.pyc | Bin 0 -> 3862 bytes .../codingstatemachine.cpython-310.pyc | Bin 0 -> 3099 bytes .../codingstatemachinedict.cpython-310.pyc | Bin 0 -> 728 bytes .../__pycache__/cp949prober.cpython-310.pyc | Bin 0 -> 1196 bytes .../chardet/__pycache__/enums.cpython-310.pyc | Bin 0 -> 2689 bytes .../__pycache__/escprober.cpython-310.pyc | Bin 0 -> 2847 bytes .../chardet/__pycache__/escsm.cpython-310.pyc | Bin 0 -> 8550 bytes .../__pycache__/eucjpprober.cpython-310.pyc | Bin 0 -> 2633 bytes .../__pycache__/euckrfreq.cpython-310.pyc | Bin 0 -> 12095 bytes .../__pycache__/euckrprober.cpython-310.pyc | Bin 0 -> 1197 bytes .../__pycache__/euctwfreq.cpython-310.pyc | Bin 0 -> 27215 bytes .../__pycache__/euctwprober.cpython-310.pyc | Bin 0 -> 1197 bytes .../__pycache__/gb2312freq.cpython-310.pyc | Bin 0 -> 19139 bytes .../__pycache__/gb2312prober.cpython-310.pyc | Bin 0 -> 1205 bytes .../__pycache__/hebrewprober.cpython-310.pyc | Bin 0 -> 3446 bytes .../__pycache__/jisfreq.cpython-310.pyc | Bin 0 -> 22167 bytes .../__pycache__/johabfreq.cpython-310.pyc | Bin 0 -> 138791 bytes .../__pycache__/johabprober.cpython-310.pyc | Bin 0 -> 1196 bytes .../__pycache__/jpcntx.cpython-310.pyc | Bin 0 -> 38017 bytes .../langbulgarianmodel.cpython-310.pyc | Bin 0 -> 47959 bytes .../langgreekmodel.cpython-310.pyc | Bin 0 -> 46149 bytes .../langhebrewmodel.cpython-310.pyc | Bin 0 -> 44596 bytes .../langhungarianmodel.cpython-310.pyc | Bin 0 -> 47919 bytes .../langrussianmodel.cpython-310.pyc | Bin 0 -> 61060 bytes .../__pycache__/langthaimodel.cpython-310.pyc | Bin 0 -> 44772 bytes .../langturkishmodel.cpython-310.pyc | Bin 0 -> 44613 bytes .../__pycache__/latin1prober.cpython-310.pyc | Bin 0 -> 4595 bytes .../macromanprober.cpython-310.pyc | Bin 0 -> 4736 bytes .../mbcharsetprober.cpython-310.pyc | Bin 0 -> 2345 bytes .../mbcsgroupprober.cpython-310.pyc | Bin 0 -> 1293 bytes .../__pycache__/mbcssm.cpython-310.pyc | Bin 0 -> 20968 bytes .../__pycache__/resultdict.cpython-310.pyc | Bin 0 -> 608 bytes .../sbcharsetprober.cpython-310.pyc | Bin 0 -> 3714 bytes .../sbcsgroupprober.cpython-310.pyc | Bin 0 -> 1772 bytes .../__pycache__/sjisprober.cpython-310.pyc | Bin 0 -> 2671 bytes .../universaldetector.cpython-310.pyc | Bin 0 -> 7159 bytes .../__pycache__/utf1632prober.cpython-310.pyc | Bin 0 -> 6131 bytes .../__pycache__/utf8prober.cpython-310.pyc | Bin 0 -> 2141 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 473 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 + .../pip/_vendor/chardet/cli/__init__.py | 0 .../cli/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 228 bytes .../__pycache__/chardetect.cpython-310.pyc | Bin 0 -> 3070 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 ++ .../pip/_vendor/chardet/metadata/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 233 bytes .../__pycache__/languages.cpython-310.pyc | Bin 0 -> 8216 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 0 -> 511 bytes .../colorama/__pycache__/ansi.cpython-310.pyc | Bin 0 -> 3037 bytes .../__pycache__/ansitowin32.cpython-310.pyc | Bin 0 -> 8549 bytes .../__pycache__/initialise.cpython-310.pyc | Bin 0 -> 2294 bytes .../__pycache__/win32.cpython-310.pyc | Bin 0 -> 4504 bytes .../__pycache__/winterm.cpython-310.pyc | Bin 0 -> 5200 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 0 -> 231 bytes .../__pycache__/ansi_test.cpython-310.pyc | Bin 0 -> 2323 bytes .../ansitowin32_test.cpython-310.pyc | Bin 0 -> 11634 bytes .../initialise_test.cpython-310.pyc | Bin 0 -> 6931 bytes .../__pycache__/isatty_test.cpython-310.pyc | Bin 0 -> 2722 bytes .../tests/__pycache__/utils.cpython-310.pyc | Bin 0 -> 1631 bytes .../__pycache__/winterm_test.cpython-310.pyc | Bin 0 -> 3224 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 | 23 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1095 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 31441 bytes .../__pycache__/database.cpython-310.pyc | Bin 0 -> 43181 bytes .../distlib/__pycache__/index.cpython-310.pyc | Bin 0 -> 17346 bytes .../__pycache__/locators.cpython-310.pyc | Bin 0 -> 38403 bytes .../__pycache__/manifest.cpython-310.pyc | Bin 0 -> 10263 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 5067 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 0 -> 26820 bytes .../__pycache__/resources.cpython-310.pyc | Bin 0 -> 11069 bytes .../__pycache__/scripts.cpython-310.pyc | Bin 0 -> 11533 bytes .../distlib/__pycache__/util.cpython-310.pyc | Bin 0 -> 51728 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 20182 bytes .../distlib/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 28164 bytes .../pip/_vendor/distlib/compat.py | 1116 +++ .../pip/_vendor/distlib/database.py | 1350 +++ .../pip/_vendor/distlib/index.py | 508 + .../pip/_vendor/distlib/locators.py | 1300 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 152 + .../pip/_vendor/distlib/metadata.py | 1076 +++ .../pip/_vendor/distlib/resources.py | 358 + .../pip/_vendor/distlib/scripts.py | 437 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 97792 bytes .../pip/_vendor/distlib/t64-arm.exe | Bin 0 -> 182784 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 108032 bytes .../site-packages/pip/_vendor/distlib/util.py | 1932 ++++ .../pip/_vendor/distlib/version.py | 739 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 91648 bytes .../pip/_vendor/distlib/w64-arm.exe | Bin 0 -> 168448 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 101888 bytes .../pip/_vendor/distlib/wheel.py | 1082 +++ .../pip/_vendor/distro/__init__.py | 54 + .../pip/_vendor/distro/__main__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 948 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 302 bytes .../distro/__pycache__/distro.cpython-310.pyc | Bin 0 -> 42096 bytes .../pip/_vendor/distro/distro.py | 1399 +++ .../pip/_vendor/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 880 bytes .../idna/__pycache__/codec.cpython-310.pyc | Bin 0 -> 2851 bytes .../idna/__pycache__/compat.cpython-310.pyc | Bin 0 -> 780 bytes .../idna/__pycache__/core.cpython-310.pyc | Bin 0 -> 9709 bytes .../idna/__pycache__/idnadata.cpython-310.pyc | Bin 0 -> 38416 bytes .../__pycache__/intranges.cpython-310.pyc | Bin 0 -> 2017 bytes .../__pycache__/package_data.cpython-310.pyc | Bin 0 -> 244 bytes .../__pycache__/uts46data.cpython-310.pyc | Bin 0 -> 152431 bytes .../site-packages/pip/_vendor/idna/codec.py | 112 + .../site-packages/pip/_vendor/idna/compat.py | 13 + .../site-packages/pip/_vendor/idna/core.py | 400 + .../pip/_vendor/idna/idnadata.py | 2151 +++++ .../pip/_vendor/idna/intranges.py | 54 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8600 +++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 57 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1478 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 1841 bytes .../msgpack/__pycache__/ext.cpython-310.pyc | Bin 0 -> 6349 bytes .../__pycache__/fallback.cpython-310.pyc | Bin 0 -> 25516 bytes .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 193 + .../pip/_vendor/msgpack/fallback.py | 1010 ++ .../pip/_vendor/packaging/__about__.py | 26 + .../pip/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 623 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 479 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7333 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4645 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2738 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9320 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 4008 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 21560 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12223 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3608 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12958 bytes .../pip/_vendor/packaging/_manylinux.py | 301 + .../pip/_vendor/packaging/_musllinux.py | 136 + .../pip/_vendor/packaging/_structures.py | 61 + .../pip/_vendor/packaging/markers.py | 304 + .../pip/_vendor/packaging/requirements.py | 146 + .../pip/_vendor/packaging/specifiers.py | 802 ++ .../pip/_vendor/packaging/tags.py | 487 + .../pip/_vendor/packaging/utils.py | 136 + .../pip/_vendor/packaging/version.py | 504 + .../pip/_vendor/pkg_resources/__init__.py | 3296 +++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 99909 bytes .../__pycache__/py31compat.cpython-310.pyc | Bin 0 -> 693 bytes .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/platformdirs/__init__.py | 342 + .../pip/_vendor/platformdirs/__main__.py | 46 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 10618 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 1269 bytes .../__pycache__/android.cpython-310.pyc | Bin 0 -> 4359 bytes .../__pycache__/api.cpython-310.pyc | Bin 0 -> 5235 bytes .../__pycache__/macos.cpython-310.pyc | Bin 0 -> 3223 bytes .../__pycache__/unix.cpython-310.pyc | Bin 0 -> 6925 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 323 bytes .../__pycache__/windows.cpython-310.pyc | Bin 0 -> 6543 bytes .../pip/_vendor/platformdirs/android.py | 120 + .../pip/_vendor/platformdirs/api.py | 156 + .../pip/_vendor/platformdirs/macos.py | 64 + .../pip/_vendor/platformdirs/unix.py | 181 + .../pip/_vendor/platformdirs/version.py | 4 + .../pip/_vendor/platformdirs/windows.py | 184 + .../pip/_vendor/pygments/__init__.py | 82 + .../pip/_vendor/pygments/__main__.py | 17 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2981 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 621 bytes .../__pycache__/cmdline.cpython-310.pyc | Bin 0 -> 15636 bytes .../__pycache__/console.cpython-310.pyc | Bin 0 -> 1916 bytes .../__pycache__/filter.cpython-310.pyc | Bin 0 -> 2687 bytes .../__pycache__/formatter.cpython-310.pyc | Bin 0 -> 3043 bytes .../__pycache__/lexer.cpython-310.pyc | Bin 0 -> 24404 bytes .../__pycache__/modeline.cpython-310.pyc | Bin 0 -> 1225 bytes .../__pycache__/plugin.cpython-310.pyc | Bin 0 -> 2553 bytes .../__pycache__/regexopt.cpython-310.pyc | Bin 0 -> 2989 bytes .../__pycache__/scanner.cpython-310.pyc | Bin 0 -> 3591 bytes .../__pycache__/sphinxext.cpython-310.pyc | Bin 0 -> 4575 bytes .../__pycache__/style.cpython-310.pyc | Bin 0 -> 4612 bytes .../__pycache__/token.cpython-310.pyc | Bin 0 -> 4704 bytes .../__pycache__/unistring.cpython-310.pyc | Bin 0 -> 31238 bytes .../pygments/__pycache__/util.cpython-310.pyc | Bin 0 -> 9180 bytes .../pip/_vendor/pygments/cmdline.py | 668 ++ .../pip/_vendor/pygments/console.py | 70 + .../pip/_vendor/pygments/filter.py | 71 + .../pip/_vendor/pygments/filters/__init__.py | 940 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 29641 bytes .../pip/_vendor/pygments/formatter.py | 94 + .../_vendor/pygments/formatters/__init__.py | 143 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4403 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 0 -> 3963 bytes .../__pycache__/bbcode.cpython-310.pyc | Bin 0 -> 3118 bytes .../__pycache__/groff.cpython-310.pyc | Bin 0 -> 4431 bytes .../__pycache__/html.cpython-310.pyc | Bin 0 -> 29163 bytes .../__pycache__/img.cpython-310.pyc | Bin 0 -> 17595 bytes .../__pycache__/irc.cpython-310.pyc | Bin 0 -> 4621 bytes .../__pycache__/latex.cpython-310.pyc | Bin 0 -> 13831 bytes .../__pycache__/other.cpython-310.pyc | Bin 0 -> 4837 bytes .../__pycache__/pangomarkup.cpython-310.pyc | Bin 0 -> 2137 bytes .../__pycache__/rtf.cpython-310.pyc | Bin 0 -> 4167 bytes .../__pycache__/svg.cpython-310.pyc | Bin 0 -> 6365 bytes .../__pycache__/terminal.cpython-310.pyc | Bin 0 -> 4032 bytes .../__pycache__/terminal256.cpython-310.pyc | Bin 0 -> 9282 bytes .../_vendor/pygments/formatters/_mapping.py | 23 + .../pip/_vendor/pygments/formatters/bbcode.py | 108 + .../pip/_vendor/pygments/formatters/groff.py | 170 + .../pip/_vendor/pygments/formatters/html.py | 989 ++ .../pip/_vendor/pygments/formatters/img.py | 645 ++ .../pip/_vendor/pygments/formatters/irc.py | 179 + .../pip/_vendor/pygments/formatters/latex.py | 521 + .../pip/_vendor/pygments/formatters/other.py | 161 + .../pygments/formatters/pangomarkup.py | 83 + .../pip/_vendor/pygments/formatters/rtf.py | 146 + .../pip/_vendor/pygments/formatters/svg.py | 188 + .../_vendor/pygments/formatters/terminal.py | 127 + .../pygments/formatters/terminal256.py | 338 + .../pip/_vendor/pygments/lexer.py | 882 ++ .../pip/_vendor/pygments/lexers/__init__.py | 335 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 9089 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 0 -> 58916 bytes .../lexers/__pycache__/python.cpython-310.pyc | Bin 0 -> 29875 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 541 ++ .../pip/_vendor/pygments/lexers/python.py | 1204 +++ .../pip/_vendor/pygments/modeline.py | 43 + .../pip/_vendor/pygments/plugin.py | 88 + .../pip/_vendor/pygments/regexopt.py | 91 + .../pip/_vendor/pygments/scanner.py | 104 + .../pip/_vendor/pygments/sphinxext.py | 155 + .../pip/_vendor/pygments/style.py | 197 + .../pip/_vendor/pygments/styles/__init__.py | 97 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3404 bytes .../pip/_vendor/pygments/token.py | 213 + .../pip/_vendor/pygments/unistring.py | 153 + .../pip/_vendor/pygments/util.py | 308 + .../pip/_vendor/pyparsing/__init__.py | 331 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 7162 bytes .../__pycache__/actions.cpython-310.pyc | Bin 0 -> 7212 bytes .../__pycache__/common.cpython-310.pyc | Bin 0 -> 10138 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 176489 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 9096 bytes .../__pycache__/helpers.cpython-310.pyc | Bin 0 -> 35373 bytes .../__pycache__/results.cpython-310.pyc | Bin 0 -> 24814 bytes .../__pycache__/testing.cpython-310.pyc | Bin 0 -> 12130 bytes .../__pycache__/unicode.cpython-310.pyc | Bin 0 -> 10091 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 8638 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 0 -> 16614 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 | 23 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 619 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 370 bytes .../__pycache__/_impl.cpython-310.pyc | Bin 0 -> 11422 bytes .../pip/_vendor/pyproject_hooks/_compat.py | 8 + .../pip/_vendor/pyproject_hooks/_impl.py | 330 + .../pyproject_hooks/_in_process/__init__.py | 18 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 857 bytes .../__pycache__/_in_process.cpython-310.pyc | Bin 0 -> 9739 bytes .../_in_process/_in_process.py | 353 + .../pip/_vendor/requests/__init__.py | 182 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4049 bytes .../__pycache__/__version__.cpython-310.pyc | Bin 0 -> 583 bytes .../_internal_utils.cpython-310.pyc | Bin 0 -> 1598 bytes .../__pycache__/adapters.cpython-310.pyc | Bin 0 -> 16932 bytes .../requests/__pycache__/api.cpython-310.pyc | Bin 0 -> 6687 bytes .../requests/__pycache__/auth.cpython-310.pyc | Bin 0 -> 8155 bytes .../__pycache__/certs.cpython-310.pyc | Bin 0 -> 842 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 1404 bytes .../__pycache__/cookies.cpython-310.pyc | Bin 0 -> 18724 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 5774 bytes .../requests/__pycache__/help.cpython-310.pyc | Bin 0 -> 2900 bytes .../__pycache__/hooks.cpython-310.pyc | Bin 0 -> 1027 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 24299 bytes .../__pycache__/packages.cpython-310.pyc | Bin 0 -> 541 bytes .../__pycache__/sessions.cpython-310.pyc | Bin 0 -> 19607 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 0 -> 4706 bytes .../__pycache__/structures.cpython-310.pyc | Bin 0 -> 4471 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 24369 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 48 + .../pip/_vendor/requests/adapters.py | 584 ++ .../site-packages/pip/_vendor/requests/api.py | 157 + .../pip/_vendor/requests/auth.py | 315 + .../pip/_vendor/requests/certs.py | 24 + .../pip/_vendor/requests/compat.py | 67 + .../pip/_vendor/requests/cookies.py | 561 ++ .../pip/_vendor/requests/exceptions.py | 141 + .../pip/_vendor/requests/help.py | 131 + .../pip/_vendor/requests/hooks.py | 33 + .../pip/_vendor/requests/models.py | 1034 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 831 ++ .../pip/_vendor/requests/status_codes.py | 128 + .../pip/_vendor/requests/structures.py | 99 + .../pip/_vendor/requests/utils.py | 1086 +++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 639 bytes .../__pycache__/providers.cpython-310.pyc | Bin 0 -> 6690 bytes .../__pycache__/reporters.cpython-310.pyc | Bin 0 -> 2610 bytes .../__pycache__/resolvers.cpython-310.pyc | Bin 0 -> 15163 bytes .../__pycache__/structs.cpython-310.pyc | Bin 0 -> 7196 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 234 bytes .../collections_abc.cpython-310.pyc | Bin 0 -> 410 bytes .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../pip/_vendor/resolvelib/reporters.py | 43 + .../pip/_vendor/resolvelib/resolvers.py | 482 + .../pip/_vendor/resolvelib/structs.py | 165 + .../pip/_vendor/rich/__init__.py | 177 + .../pip/_vendor/rich/__main__.py | 274 + .../rich/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 6146 bytes .../rich/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 7216 bytes .../__pycache__/_cell_widths.cpython-310.pyc | Bin 0 -> 7847 bytes .../__pycache__/_emoji_codes.cpython-310.pyc | Bin 0 -> 360087 bytes .../_emoji_replace.cpython-310.pyc | Bin 0 -> 1227 bytes .../_export_format.cpython-310.pyc | Bin 0 -> 2344 bytes .../__pycache__/_extension.cpython-310.pyc | Bin 0 -> 528 bytes .../rich/__pycache__/_inspect.cpython-310.pyc | Bin 0 -> 8705 bytes .../__pycache__/_log_render.cpython-310.pyc | Bin 0 -> 2673 bytes .../rich/__pycache__/_loop.cpython-310.pyc | Bin 0 -> 1325 bytes .../__pycache__/_null_file.cpython-310.pyc | Bin 0 -> 3636 bytes .../__pycache__/_palettes.cpython-310.pyc | Bin 0 -> 5130 bytes .../rich/__pycache__/_pick.cpython-310.pyc | Bin 0 -> 673 bytes .../rich/__pycache__/_ratio.cpython-310.pyc | Bin 0 -> 5190 bytes .../__pycache__/_spinners.cpython-310.pyc | Bin 0 -> 12304 bytes .../rich/__pycache__/_stack.cpython-310.pyc | Bin 0 -> 871 bytes .../rich/__pycache__/_timer.cpython-310.pyc | Bin 0 -> 720 bytes .../_win32_console.cpython-310.pyc | Bin 0 -> 19040 bytes .../rich/__pycache__/_windows.cpython-310.pyc | Bin 0 -> 1822 bytes .../_windows_renderer.cpython-310.pyc | Bin 0 -> 2076 bytes .../rich/__pycache__/_wrap.cpython-310.pyc | Bin 0 -> 1584 bytes .../rich/__pycache__/abc.cpython-310.pyc | Bin 0 -> 1347 bytes .../rich/__pycache__/align.cpython-310.pyc | Bin 0 -> 7982 bytes .../rich/__pycache__/ansi.cpython-310.pyc | Bin 0 -> 5986 bytes .../rich/__pycache__/bar.cpython-310.pyc | Bin 0 -> 3016 bytes .../rich/__pycache__/box.cpython-310.pyc | Bin 0 -> 8436 bytes .../rich/__pycache__/cells.cpython-310.pyc | Bin 0 -> 4006 bytes .../rich/__pycache__/color.cpython-310.pyc | Bin 0 -> 17627 bytes .../__pycache__/color_triplet.cpython-310.pyc | Bin 0 -> 1470 bytes .../rich/__pycache__/columns.cpython-310.pyc | Bin 0 -> 6230 bytes .../rich/__pycache__/console.cpython-310.pyc | Bin 0 -> 82604 bytes .../__pycache__/constrain.cpython-310.pyc | Bin 0 -> 1787 bytes .../__pycache__/containers.cpython-310.pyc | Bin 0 -> 6519 bytes .../rich/__pycache__/control.cpython-310.pyc | Bin 0 -> 8192 bytes .../default_styles.cpython-310.pyc | Bin 0 -> 6231 bytes .../rich/__pycache__/diagnose.cpython-310.pyc | Bin 0 -> 1254 bytes .../rich/__pycache__/emoji.cpython-310.pyc | Bin 0 -> 3300 bytes .../rich/__pycache__/errors.cpython-310.pyc | Bin 0 -> 1560 bytes .../__pycache__/file_proxy.cpython-310.pyc | Bin 0 -> 2293 bytes .../rich/__pycache__/filesize.cpython-310.pyc | Bin 0 -> 2650 bytes .../__pycache__/highlighter.cpython-310.pyc | Bin 0 -> 8093 bytes .../rich/__pycache__/json.cpython-310.pyc | Bin 0 -> 4780 bytes .../rich/__pycache__/jupyter.cpython-310.pyc | Bin 0 -> 4032 bytes .../rich/__pycache__/layout.cpython-310.pyc | Bin 0 -> 14680 bytes .../rich/__pycache__/live.cpython-310.pyc | Bin 0 -> 11657 bytes .../__pycache__/live_render.cpython-310.pyc | Bin 0 -> 3435 bytes .../rich/__pycache__/logging.cpython-310.pyc | Bin 0 -> 9941 bytes .../rich/__pycache__/markup.cpython-310.pyc | Bin 0 -> 5974 bytes .../rich/__pycache__/measure.cpython-310.pyc | Bin 0 -> 5109 bytes .../rich/__pycache__/padding.cpython-310.pyc | Bin 0 -> 4515 bytes .../rich/__pycache__/pager.cpython-310.pyc | Bin 0 -> 1509 bytes .../rich/__pycache__/palette.cpython-310.pyc | Bin 0 -> 3741 bytes .../rich/__pycache__/panel.cpython-310.pyc | Bin 0 -> 7461 bytes .../rich/__pycache__/pretty.cpython-310.pyc | Bin 0 -> 27953 bytes .../rich/__pycache__/progress.cpython-310.pyc | Bin 0 -> 54061 bytes .../__pycache__/progress_bar.cpython-310.pyc | Bin 0 -> 6944 bytes .../rich/__pycache__/prompt.cpython-310.pyc | Bin 0 -> 11332 bytes .../rich/__pycache__/protocol.cpython-310.pyc | Bin 0 -> 1385 bytes .../rich/__pycache__/region.cpython-310.pyc | Bin 0 -> 560 bytes .../rich/__pycache__/repr.cpython-310.pyc | Bin 0 -> 4133 bytes .../rich/__pycache__/rule.cpython-310.pyc | Bin 0 -> 4342 bytes .../rich/__pycache__/scope.cpython-310.pyc | Bin 0 -> 3022 bytes .../rich/__pycache__/screen.cpython-310.pyc | Bin 0 -> 1912 bytes .../rich/__pycache__/segment.cpython-310.pyc | Bin 0 -> 20790 bytes .../rich/__pycache__/spinner.cpython-310.pyc | Bin 0 -> 4450 bytes .../rich/__pycache__/status.cpython-310.pyc | Bin 0 -> 4626 bytes .../rich/__pycache__/style.cpython-310.pyc | Bin 0 -> 20875 bytes .../rich/__pycache__/styled.cpython-310.pyc | Bin 0 -> 1796 bytes .../rich/__pycache__/syntax.cpython-310.pyc | Bin 0 -> 25710 bytes .../rich/__pycache__/table.cpython-310.pyc | Bin 0 -> 29975 bytes .../terminal_theme.cpython-310.pyc | Bin 0 -> 3049 bytes .../rich/__pycache__/text.cpython-310.pyc | Bin 0 -> 40224 bytes .../rich/__pycache__/theme.cpython-310.pyc | Bin 0 -> 4733 bytes .../rich/__pycache__/themes.cpython-310.pyc | Bin 0 -> 326 bytes .../__pycache__/traceback.cpython-310.pyc | Bin 0 -> 19658 bytes .../rich/__pycache__/tree.cpython-310.pyc | Bin 0 -> 7367 bytes .../pip/_vendor/rich/_cell_widths.py | 451 + .../pip/_vendor/rich/_emoji_codes.py | 3610 +++++++ .../pip/_vendor/rich/_emoji_replace.py | 32 + .../pip/_vendor/rich/_export_format.py | 78 + .../pip/_vendor/rich/_extension.py | 10 + .../pip/_vendor/rich/_inspect.py | 270 + .../pip/_vendor/rich/_log_render.py | 94 + .../site-packages/pip/_vendor/rich/_loop.py | 43 + .../pip/_vendor/rich/_null_file.py | 83 + .../pip/_vendor/rich/_palettes.py | 309 + .../site-packages/pip/_vendor/rich/_pick.py | 17 + .../site-packages/pip/_vendor/rich/_ratio.py | 160 + .../pip/_vendor/rich/_spinners.py | 482 + .../site-packages/pip/_vendor/rich/_stack.py | 16 + .../site-packages/pip/_vendor/rich/_timer.py | 19 + .../pip/_vendor/rich/_win32_console.py | 662 ++ .../pip/_vendor/rich/_windows.py | 72 + .../pip/_vendor/rich/_windows_renderer.py | 56 + .../site-packages/pip/_vendor/rich/_wrap.py | 56 + .../site-packages/pip/_vendor/rich/abc.py | 33 + .../site-packages/pip/_vendor/rich/align.py | 311 + .../site-packages/pip/_vendor/rich/ansi.py | 237 + .../site-packages/pip/_vendor/rich/bar.py | 94 + .../site-packages/pip/_vendor/rich/box.py | 517 + .../site-packages/pip/_vendor/rich/cells.py | 154 + .../site-packages/pip/_vendor/rich/color.py | 618 ++ .../pip/_vendor/rich/color_triplet.py | 38 + .../site-packages/pip/_vendor/rich/columns.py | 187 + .../site-packages/pip/_vendor/rich/console.py | 2612 +++++ .../pip/_vendor/rich/constrain.py | 37 + .../pip/_vendor/rich/containers.py | 167 + .../site-packages/pip/_vendor/rich/control.py | 225 + .../pip/_vendor/rich/default_styles.py | 188 + .../pip/_vendor/rich/diagnose.py | 37 + .../site-packages/pip/_vendor/rich/emoji.py | 96 + .../site-packages/pip/_vendor/rich/errors.py | 34 + .../pip/_vendor/rich/file_proxy.py | 54 + .../pip/_vendor/rich/filesize.py | 89 + .../pip/_vendor/rich/highlighter.py | 232 + .../site-packages/pip/_vendor/rich/json.py | 140 + .../site-packages/pip/_vendor/rich/jupyter.py | 101 + .../site-packages/pip/_vendor/rich/layout.py | 443 + .../site-packages/pip/_vendor/rich/live.py | 373 + .../pip/_vendor/rich/live_render.py | 113 + .../site-packages/pip/_vendor/rich/logging.py | 289 + .../site-packages/pip/_vendor/rich/markup.py | 246 + .../site-packages/pip/_vendor/rich/measure.py | 151 + .../site-packages/pip/_vendor/rich/padding.py | 141 + .../site-packages/pip/_vendor/rich/pager.py | 34 + .../site-packages/pip/_vendor/rich/palette.py | 100 + .../site-packages/pip/_vendor/rich/panel.py | 308 + .../site-packages/pip/_vendor/rich/pretty.py | 1029 ++ .../pip/_vendor/rich/progress.py | 1707 ++++ .../pip/_vendor/rich/progress_bar.py | 224 + .../site-packages/pip/_vendor/rich/prompt.py | 376 + .../pip/_vendor/rich/protocol.py | 42 + .../site-packages/pip/_vendor/rich/region.py | 10 + .../site-packages/pip/_vendor/rich/repr.py | 149 + .../site-packages/pip/_vendor/rich/rule.py | 134 + .../site-packages/pip/_vendor/rich/scope.py | 86 + .../site-packages/pip/_vendor/rich/screen.py | 54 + .../site-packages/pip/_vendor/rich/segment.py | 739 ++ .../site-packages/pip/_vendor/rich/spinner.py | 136 + .../site-packages/pip/_vendor/rich/status.py | 132 + .../site-packages/pip/_vendor/rich/style.py | 773 ++ .../site-packages/pip/_vendor/rich/styled.py | 42 + .../site-packages/pip/_vendor/rich/syntax.py | 945 ++ .../site-packages/pip/_vendor/rich/table.py | 1002 ++ .../pip/_vendor/rich/terminal_theme.py | 153 + .../site-packages/pip/_vendor/rich/text.py | 1311 +++ .../site-packages/pip/_vendor/rich/theme.py | 112 + .../site-packages/pip/_vendor/rich/themes.py | 5 + .../pip/_vendor/rich/traceback.py | 677 ++ .../site-packages/pip/_vendor/rich/tree.py | 251 + .../site-packages/pip/_vendor/six.py | 998 ++ .../pip/_vendor/tenacity/__init__.py | 519 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 16505 bytes .../__pycache__/_asyncio.cpython-310.pyc | Bin 0 -> 2647 bytes .../__pycache__/_utils.cpython-310.pyc | Bin 0 -> 1260 bytes .../__pycache__/after.cpython-310.pyc | Bin 0 -> 1264 bytes .../__pycache__/before.cpython-310.pyc | Bin 0 -> 1142 bytes .../__pycache__/before_sleep.cpython-310.pyc | Bin 0 -> 1444 bytes .../tenacity/__pycache__/nap.cpython-310.pyc | Bin 0 -> 1232 bytes .../__pycache__/retry.cpython-310.pyc | Bin 0 -> 9394 bytes .../tenacity/__pycache__/stop.cpython-310.pyc | Bin 0 -> 4050 bytes .../__pycache__/tornadoweb.cpython-310.pyc | Bin 0 -> 1797 bytes .../tenacity/__pycache__/wait.cpython-310.pyc | Bin 0 -> 9393 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 | 11 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 388 bytes .../tomli/__pycache__/_parser.cpython-310.pyc | Bin 0 -> 17102 bytes .../tomli/__pycache__/_re.cpython-310.pyc | Bin 0 -> 2934 bytes .../tomli/__pycache__/_types.cpython-310.pyc | Bin 0 -> 358 bytes .../pip/_vendor/tomli/_parser.py | 691 ++ .../site-packages/pip/_vendor/tomli/_re.py | 107 + .../site-packages/pip/_vendor/tomli/_types.py | 10 + .../pip/_vendor/typing_extensions.py | 2209 +++++ .../pip/_vendor/urllib3/__init__.py | 102 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2542 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 0 -> 10896 bytes .../__pycache__/_version.cpython-310.pyc | Bin 0 -> 247 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 13668 bytes .../connectionpool.cpython-310.pyc | Bin 0 -> 25427 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 11027 bytes .../__pycache__/fields.cpython-310.pyc | Bin 0 -> 8216 bytes .../__pycache__/filepost.cpython-310.pyc | Bin 0 -> 2783 bytes .../__pycache__/poolmanager.cpython-310.pyc | Bin 0 -> 15252 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 5659 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 22533 bytes .../pip/_vendor/urllib3/_collections.py | 337 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 567 ++ .../pip/_vendor/urllib3/connectionpool.py | 1110 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 232 bytes .../_appengine_environ.cpython-310.pyc | Bin 0 -> 1412 bytes .../__pycache__/appengine.cpython-310.pyc | Bin 0 -> 8229 bytes .../__pycache__/ntlmpool.cpython-310.pyc | Bin 0 -> 3656 bytes .../__pycache__/pyopenssl.cpython-310.pyc | Bin 0 -> 15842 bytes .../securetransport.cpython-310.pyc | Bin 0 -> 21974 bytes .../contrib/__pycache__/socks.cpython-310.pyc | Bin 0 -> 5634 bytes .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 249 bytes .../__pycache__/bindings.cpython-310.pyc | Bin 0 -> 10745 bytes .../__pycache__/low_level.cpython-310.pyc | Bin 0 -> 9132 bytes .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 397 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 518 + .../urllib3/contrib/securetransport.py | 921 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 323 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 233 bytes .../packages/__pycache__/six.cpython-310.pyc | Bin 0 -> 27687 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 243 bytes .../__pycache__/makefile.cpython-310.pyc | Bin 0 -> 1343 bytes .../urllib3/packages/backports/makefile.py | 51 + .../pip/_vendor/urllib3/packages/six.py | 1076 +++ .../pip/_vendor/urllib3/poolmanager.py | 537 + .../pip/_vendor/urllib3/request.py | 170 + .../pip/_vendor/urllib3/response.py | 879 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../util/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1142 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 3470 bytes .../util/__pycache__/proxy.cpython-310.pyc | Bin 0 -> 1375 bytes .../util/__pycache__/queue.cpython-310.pyc | Bin 0 -> 1097 bytes .../util/__pycache__/request.cpython-310.pyc | Bin 0 -> 3404 bytes .../util/__pycache__/response.cpython-310.pyc | Bin 0 -> 2390 bytes .../util/__pycache__/retry.cpython-310.pyc | Bin 0 -> 16180 bytes .../util/__pycache__/ssl_.cpython-310.pyc | Bin 0 -> 11342 bytes .../ssl_match_hostname.cpython-310.pyc | Bin 0 -> 3294 bytes .../__pycache__/ssltransport.cpython-310.pyc | Bin 0 -> 7432 bytes .../util/__pycache__/timeout.cpython-310.pyc | Bin 0 -> 8966 bytes .../util/__pycache__/url.cpython-310.pyc | Bin 0 -> 10735 bytes .../util/__pycache__/wait.cpython-310.pyc | Bin 0 -> 3126 bytes .../pip/_vendor/urllib3/util/connection.py | 149 + .../pip/_vendor/urllib3/util/proxy.py | 57 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 137 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 620 ++ .../pip/_vendor/urllib3/util/ssl_.py | 495 + .../urllib3/util/ssl_match_hostname.py | 159 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 268 + .../pip/_vendor/urllib3/util/url.py | 435 + .../pip/_vendor/urllib3/util/wait.py | 152 + .../site-packages/pip/_vendor/vendor.txt | 23 + .../pip/_vendor/webencodings/__init__.py | 342 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 9779 bytes .../__pycache__/labels.cpython-310.pyc | Bin 0 -> 5269 bytes .../__pycache__/mklabels.cpython-310.pyc | Bin 0 -> 1974 bytes .../__pycache__/tests.cpython-310.pyc | Bin 0 -> 5076 bytes .../x_user_defined.cpython-310.pyc | Bin 0 -> 2625 bytes .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + .../lib/python3.10/site-packages/pip/py.typed | 4 + .../site-packages/pkg_resources/__init__.py | 3296 +++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 100594 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 226 bytes .../__pycache__/appdirs.cpython-310.pyc | Bin 0 -> 20287 bytes .../_vendor/__pycache__/zipp.cpython-310.pyc | Bin 0 -> 10269 bytes .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/importlib_resources/__init__.py | 36 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 681 bytes .../__pycache__/_adapters.cpython-310.pyc | Bin 0 -> 7389 bytes .../__pycache__/_common.cpython-310.pyc | Bin 0 -> 2679 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 3539 bytes .../__pycache__/_itertools.cpython-310.pyc | Bin 0 -> 926 bytes .../__pycache__/_legacy.cpython-310.pyc | Bin 0 -> 4262 bytes .../__pycache__/abc.cpython-310.pyc | Bin 0 -> 5415 bytes .../__pycache__/readers.cpython-310.pyc | Bin 0 -> 5499 bytes .../__pycache__/simple.cpython-310.pyc | Bin 0 -> 4763 bytes .../_vendor/importlib_resources/_adapters.py | 170 + .../_vendor/importlib_resources/_common.py | 104 + .../_vendor/importlib_resources/_compat.py | 98 + .../_vendor/importlib_resources/_itertools.py | 35 + .../_vendor/importlib_resources/_legacy.py | 121 + .../_vendor/importlib_resources/abc.py | 137 + .../_vendor/importlib_resources/readers.py | 122 + .../_vendor/importlib_resources/simple.py | 116 + .../pkg_resources/_vendor/jaraco/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 233 bytes .../__pycache__/context.cpython-310.pyc | Bin 0 -> 6365 bytes .../__pycache__/functools.cpython-310.pyc | Bin 0 -> 15657 bytes .../pkg_resources/_vendor/jaraco/context.py | 213 + .../pkg_resources/_vendor/jaraco/functools.py | 525 + .../_vendor/jaraco/text/__init__.py | 599 ++ .../text/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 19702 bytes .../_vendor/more_itertools/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 308 bytes .../__pycache__/more.cpython-310.pyc | Bin 0 -> 123081 bytes .../__pycache__/recipes.cpython-310.pyc | Bin 0 -> 20369 bytes .../_vendor/more_itertools/more.py | 4316 +++++++++ .../_vendor/more_itertools/recipes.py | 698 ++ .../_vendor/packaging/__about__.py | 26 + .../_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 633 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 489 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7343 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4655 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2748 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9339 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 4027 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 21570 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12233 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3618 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12968 bytes .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 61 + .../_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 802 ++ .../pkg_resources/_vendor/packaging/tags.py | 487 + .../pkg_resources/_vendor/packaging/utils.py | 136 + .../_vendor/packaging/version.py | 504 + .../_vendor/pyparsing/__init__.py | 331 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 7160 bytes .../__pycache__/actions.cpython-310.pyc | Bin 0 -> 7222 bytes .../__pycache__/common.cpython-310.pyc | Bin 0 -> 10148 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 176465 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 9106 bytes .../__pycache__/helpers.cpython-310.pyc | Bin 0 -> 35383 bytes .../__pycache__/results.cpython-310.pyc | Bin 0 -> 24824 bytes .../__pycache__/testing.cpython-310.pyc | Bin 0 -> 12140 bytes .../__pycache__/unicode.cpython-310.pyc | Bin 0 -> 10101 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 8648 bytes .../_vendor/pyparsing/actions.py | 207 + .../pkg_resources/_vendor/pyparsing/common.py | 424 + .../pkg_resources/_vendor/pyparsing/core.py | 5814 +++++++++++ .../_vendor/pyparsing/diagram/__init__.py | 642 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 16600 bytes .../_vendor/pyparsing/exceptions.py | 267 + .../_vendor/pyparsing/helpers.py | 1088 +++ .../_vendor/pyparsing/results.py | 760 ++ .../_vendor/pyparsing/testing.py | 331 + .../_vendor/pyparsing/unicode.py | 352 + .../pkg_resources/_vendor/pyparsing/util.py | 235 + .../pkg_resources/_vendor/zipp.py | 329 + .../pkg_resources/extern/__init__.py | 76 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2979 bytes .../psutil-7.0.0.dist-info/INSTALLER | 1 + .../psutil-7.0.0.dist-info/LICENSE | 29 + .../psutil-7.0.0.dist-info/METADATA | 546 ++ .../psutil-7.0.0.dist-info/RECORD | 65 + .../psutil-7.0.0.dist-info/REQUESTED | 0 .../psutil-7.0.0.dist-info/WHEEL | 8 + .../psutil-7.0.0.dist-info/top_level.txt | 1 + .../site-packages/psutil/__init__.py | 2407 +++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 63583 bytes .../__pycache__/_common.cpython-310.pyc | Bin 0 -> 22770 bytes .../psutil/__pycache__/_psaix.cpython-310.pyc | Bin 0 -> 14851 bytes .../psutil/__pycache__/_psbsd.cpython-310.pyc | Bin 0 -> 20629 bytes .../__pycache__/_pslinux.cpython-310.pyc | Bin 0 -> 52743 bytes .../psutil/__pycache__/_psosx.cpython-310.pyc | Bin 0 -> 13156 bytes .../__pycache__/_psposix.cpython-310.pyc | Bin 0 -> 4108 bytes .../__pycache__/_pssunos.cpython-310.pyc | Bin 0 -> 17891 bytes .../__pycache__/_pswindows.cpython-310.pyc | Bin 0 -> 27726 bytes .../site-packages/psutil/_common.py | 950 ++ .../python3.10/site-packages/psutil/_psaix.py | 565 ++ .../python3.10/site-packages/psutil/_psbsd.py | 971 ++ .../site-packages/psutil/_pslinux.py | 2295 +++++ .../python3.10/site-packages/psutil/_psosx.py | 544 ++ .../site-packages/psutil/_psposix.py | 207 + .../site-packages/psutil/_pssunos.py | 734 ++ .../psutil/_psutil_linux.abi3.so | Bin 0 -> 115336 bytes .../psutil/_psutil_posix.abi3.so | Bin 0 -> 71640 bytes .../site-packages/psutil/_pswindows.py | 1103 +++ .../site-packages/psutil/tests/__init__.py | 2025 ++++ .../site-packages/psutil/tests/__main__.py | 12 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 54183 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 383 bytes .../__pycache__/test_aix.cpython-310.pyc | Bin 0 -> 3117 bytes .../__pycache__/test_bsd.cpython-310.pyc | Bin 0 -> 19345 bytes .../test_connections.cpython-310.pyc | Bin 0 -> 15629 bytes .../test_contracts.cpython-310.pyc | Bin 0 -> 13018 bytes .../__pycache__/test_linux.cpython-310.pyc | Bin 0 -> 74130 bytes .../__pycache__/test_memleaks.cpython-310.pyc | Bin 0 -> 22359 bytes .../__pycache__/test_misc.cpython-310.pyc | Bin 0 -> 24704 bytes .../__pycache__/test_osx.cpython-310.pyc | Bin 0 -> 6591 bytes .../__pycache__/test_posix.cpython-310.pyc | Bin 0 -> 14050 bytes .../__pycache__/test_process.cpython-310.pyc | Bin 0 -> 49914 bytes .../test_process_all.cpython-310.pyc | Bin 0 -> 16285 bytes .../__pycache__/test_scripts.cpython-310.pyc | Bin 0 -> 8657 bytes .../__pycache__/test_sunos.cpython-310.pyc | Bin 0 -> 1472 bytes .../__pycache__/test_system.cpython-310.pyc | Bin 0 -> 28912 bytes .../test_testutils.cpython-310.pyc | Bin 0 -> 22421 bytes .../__pycache__/test_unicode.cpython-310.pyc | Bin 0 -> 10472 bytes .../__pycache__/test_windows.cpython-310.pyc | Bin 0 -> 30266 bytes .../site-packages/psutil/tests/test_aix.py | 142 + .../site-packages/psutil/tests/test_bsd.py | 593 ++ .../psutil/tests/test_connections.py | 566 ++ .../psutil/tests/test_contracts.py | 325 + .../site-packages/psutil/tests/test_linux.py | 2292 +++++ .../psutil/tests/test_memleaks.py | 487 + .../site-packages/psutil/tests/test_misc.py | 873 ++ .../site-packages/psutil/tests/test_osx.py | 197 + .../site-packages/psutil/tests/test_posix.py | 488 + .../psutil/tests/test_process.py | 1667 ++++ .../psutil/tests/test_process_all.py | 535 + .../psutil/tests/test_scripts.py | 240 + .../site-packages/psutil/tests/test_sunos.py | 39 + .../site-packages/psutil/tests/test_system.py | 979 ++ .../psutil/tests/test_testutils.py | 577 ++ .../psutil/tests/test_unicode.py | 313 + .../psutil/tests/test_windows.py | 914 ++ .../pyautogui-0.9.54.dist-info/INSTALLER | 1 + .../pyautogui-0.9.54.dist-info/METADATA | 183 + .../pyautogui-0.9.54.dist-info/RECORD | 20 + .../pyautogui-0.9.54.dist-info/REQUESTED | 0 .../pyautogui-0.9.54.dist-info/WHEEL | 5 + .../licenses/AUTHORS.txt | 67 + .../licenses/LICENSE.txt | 27 + .../pyautogui-0.9.54.dist-info/top_level.txt | 1 + .../site-packages/pyautogui/__init__.py | 2171 +++++ .../site-packages/pyautogui/__main__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 58411 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 267 bytes .../_pyautogui_java.cpython-310.pyc | Bin 0 -> 221 bytes .../_pyautogui_osx.cpython-310.pyc | Bin 0 -> 9086 bytes .../_pyautogui_win.cpython-310.pyc | Bin 0 -> 12482 bytes .../_pyautogui_x11.cpython-310.pyc | Bin 0 -> 9069 bytes .../pyautogui/_pyautogui_java.py | 0 .../site-packages/pyautogui/_pyautogui_osx.py | 448 + .../site-packages/pyautogui/_pyautogui_win.py | 573 ++ .../site-packages/pyautogui/_pyautogui_x11.py | 321 + .../site-packages/pygetwindow/__init__.py | 349 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 10006 bytes .../_pygetwindow_macos.cpython-310.pyc | Bin 0 -> 6452 bytes .../_pygetwindow_win.cpython-310.pyc | Bin 0 -> 11395 bytes .../pygetwindow/_pygetwindow_macos.py | 174 + .../pygetwindow/_pygetwindow_win.py | 351 + .../pymsgbox-1.0.9.dist-info/INSTALLER | 1 + .../pymsgbox-1.0.9.dist-info/METADATA | 60 + .../pymsgbox-1.0.9.dist-info/RECORD | 9 + .../pymsgbox-1.0.9.dist-info/WHEEL | 5 + .../pymsgbox-1.0.9.dist-info/top_level.txt | 1 + .../site-packages/pymsgbox/__init__.py | 442 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 8409 bytes .../__pycache__/_native_win.cpython-310.pyc | Bin 0 -> 2835 bytes .../site-packages/pymsgbox/_native_win.py | 153 + .../pynput-1.8.1.dist-info/COPYING.LGPL | 165 + .../pynput-1.8.1.dist-info/INSTALLER | 1 + .../pynput-1.8.1.dist-info/METADATA | 914 ++ .../pynput-1.8.1.dist-info/RECORD | 55 + .../pynput-1.8.1.dist-info/REQUESTED | 0 .../pynput-1.8.1.dist-info/WHEEL | 6 + .../pynput-1.8.1.dist-info/pbr.json | 1 + .../pynput-1.8.1.dist-info/top_level.txt | 1 + .../pynput-1.8.1.dist-info/zip-safe | 1 + .../site-packages/pynput/__init__.py | 41 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 933 bytes .../pynput/__pycache__/_info.cpython-310.pyc | Bin 0 -> 275 bytes .../python3.10/site-packages/pynput/_info.py | 19 + .../site-packages/pynput/_util/__init__.py | 489 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 16107 bytes .../_util/__pycache__/darwin.cpython-310.pyc | Bin 0 -> 6637 bytes .../__pycache__/darwin_vks.cpython-310.pyc | Bin 0 -> 1219 bytes .../_util/__pycache__/uinput.cpython-310.pyc | Bin 0 -> 2514 bytes .../_util/__pycache__/win32.cpython-310.pyc | Bin 0 -> 15502 bytes .../__pycache__/win32_vks.cpython-310.pyc | Bin 0 -> 3354 bytes .../_util/__pycache__/xorg.cpython-310.pyc | Bin 0 -> 12642 bytes .../__pycache__/xorg_keysyms.cpython-310.pyc | Bin 0 -> 106196 bytes .../site-packages/pynput/_util/darwin.py | 302 + .../site-packages/pynput/_util/darwin_vks.py | 79 + .../site-packages/pynput/_util/uinput.py | 99 + .../site-packages/pynput/_util/win32.py | 598 ++ .../site-packages/pynput/_util/win32_vks.py | 179 + .../site-packages/pynput/_util/xorg.py | 496 + .../pynput/_util/xorg_keysyms.py | 1715 ++++ .../site-packages/pynput/keyboard/__init__.py | 249 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 7255 bytes .../__pycache__/_base.cpython-310.pyc | Bin 0 -> 20447 bytes .../__pycache__/_darwin.cpython-310.pyc | Bin 0 -> 7971 bytes .../__pycache__/_dummy.cpython-310.pyc | Bin 0 -> 440 bytes .../__pycache__/_uinput.cpython-310.pyc | Bin 0 -> 12777 bytes .../__pycache__/_win32.cpython-310.pyc | Bin 0 -> 9901 bytes .../__pycache__/_xorg.cpython-310.pyc | Bin 0 -> 17475 bytes .../site-packages/pynput/keyboard/_base.py | 754 ++ .../site-packages/pynput/keyboard/_darwin.py | 367 + .../site-packages/pynput/keyboard/_dummy.py | 23 + .../site-packages/pynput/keyboard/_uinput.py | 446 + .../site-packages/pynput/keyboard/_win32.py | 389 + .../site-packages/pynput/keyboard/_xorg.py | 667 ++ .../site-packages/pynput/mouse/__init__.py | 107 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2162 bytes .../mouse/__pycache__/_base.cpython-310.pyc | Bin 0 -> 9977 bytes .../mouse/__pycache__/_darwin.cpython-310.pyc | Bin 0 -> 5274 bytes .../mouse/__pycache__/_dummy.cpython-310.pyc | Bin 0 -> 422 bytes .../mouse/__pycache__/_win32.cpython-310.pyc | Bin 0 -> 5427 bytes .../mouse/__pycache__/_xorg.cpython-310.pyc | Bin 0 -> 5404 bytes .../site-packages/pynput/mouse/_base.py | 281 + .../site-packages/pynput/mouse/_darwin.py | 212 + .../site-packages/pynput/mouse/_dummy.py | 22 + .../site-packages/pynput/mouse/_win32.py | 226 + .../site-packages/pynput/mouse/_xorg.py | 184 + .../pyperclip-1.9.0-py3.10.egg-info/PKG-INFO | 63 + .../SOURCES.txt | 18 + .../dependency_links.txt | 1 + .../installed-files.txt | 8 + .../top_level.txt | 1 + .../site-packages/pyperclip/__init__.py | 660 ++ .../site-packages/pyperclip/__main__.py | 18 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 19013 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 916 bytes .../site-packages/pyrect/__init__.py | 1462 +++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 29178 bytes .../pyscreeze-1.0.1.dist-info/INSTALLER | 1 + .../pyscreeze-1.0.1.dist-info/METADATA | 181 + .../pyscreeze-1.0.1.dist-info/RECORD | 9 + .../pyscreeze-1.0.1.dist-info/WHEEL | 5 + .../licenses/AUTHORS.txt | 24 + .../licenses/LICENSE.txt | 27 + .../pyscreeze-1.0.1.dist-info/top_level.txt | 1 + .../site-packages/pyscreeze/__init__.py | 789 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 17377 bytes .../PKG-INFO | 12 + .../SOURCES.txt | 66 + .../dependency_links.txt | 1 + .../installed-files.txt | 116 + .../top_level.txt | 1 + .../python_xlib-0.33.dist-info/INSTALLER | 1 + .../python_xlib-0.33.dist-info/LICENSE | 504 + .../python_xlib-0.33.dist-info/METADATA | 158 + .../python_xlib-0.33.dist-info/RECORD | 136 + .../python_xlib-0.33.dist-info/WHEEL | 6 + .../python_xlib-0.33.dist-info/top_level.txt | 1 + .../pytweening-1.2.0-py3.10.egg-info/PKG-INFO | 253 + .../SOURCES.txt | 22 + .../dependency_links.txt | 1 + .../installed-files.txt | 6 + .../top_level.txt | 1 + .../site-packages/pytweening/__init__.py | 872 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 31026 bytes .../setuptools-65.5.0.dist-info/INSTALLER | 1 + .../setuptools-65.5.0.dist-info/LICENSE | 19 + .../setuptools-65.5.0.dist-info/METADATA | 144 + .../setuptools-65.5.0.dist-info/RECORD | 466 + .../setuptools-65.5.0.dist-info/REQUESTED | 0 .../setuptools-65.5.0.dist-info/WHEEL | 5 + .../entry_points.txt | 57 + .../setuptools-65.5.0.dist-info/top_level.txt | 3 + .../site-packages/setuptools/__init__.py | 247 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 9537 bytes .../_deprecation_warning.cpython-310.pyc | Bin 0 -> 587 bytes .../__pycache__/_entry_points.cpython-310.pyc | Bin 0 -> 3050 bytes .../__pycache__/_imp.cpython-310.pyc | Bin 0 -> 2113 bytes .../__pycache__/_importlib.cpython-310.pyc | Bin 0 -> 1383 bytes .../__pycache__/_itertools.cpython-310.pyc | Bin 0 -> 951 bytes .../__pycache__/_path.cpython-310.pyc | Bin 0 -> 1126 bytes .../__pycache__/_reqs.cpython-310.pyc | Bin 0 -> 866 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 0 -> 6217 bytes .../__pycache__/build_meta.cpython-310.pyc | Bin 0 -> 18125 bytes .../__pycache__/dep_util.cpython-310.pyc | Bin 0 -> 894 bytes .../__pycache__/depends.cpython-310.pyc | Bin 0 -> 5333 bytes .../__pycache__/discovery.cpython-310.pyc | Bin 0 -> 20624 bytes .../__pycache__/dist.cpython-310.pyc | Bin 0 -> 38413 bytes .../__pycache__/errors.cpython-310.pyc | Bin 0 -> 2521 bytes .../__pycache__/extension.cpython-310.pyc | Bin 0 -> 5934 bytes .../__pycache__/glob.cpython-310.pyc | Bin 0 -> 3772 bytes .../__pycache__/installer.cpython-310.pyc | Bin 0 -> 3018 bytes .../__pycache__/launch.cpython-310.pyc | Bin 0 -> 944 bytes .../__pycache__/logging.cpython-310.pyc | Bin 0 -> 1281 bytes .../__pycache__/monkey.cpython-310.pyc | Bin 0 -> 4477 bytes .../__pycache__/msvc.cpython-310.pyc | Bin 0 -> 40660 bytes .../__pycache__/namespaces.cpython-310.pyc | Bin 0 -> 3655 bytes .../__pycache__/package_index.cpython-310.pyc | Bin 0 -> 32722 bytes .../__pycache__/py34compat.cpython-310.pyc | Bin 0 -> 519 bytes .../__pycache__/sandbox.cpython-310.pyc | Bin 0 -> 15795 bytes .../__pycache__/unicode_utils.cpython-310.pyc | Bin 0 -> 1149 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 361 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 7629 bytes .../windows_support.cpython-310.pyc | Bin 0 -> 1067 bytes .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_distutils/__init__.py | 24 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 595 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 0 -> 2096 bytes .../__pycache__/_functools.cpython-310.pyc | Bin 0 -> 726 bytes .../__pycache__/_macos_compat.cpython-310.pyc | Bin 0 -> 490 bytes .../__pycache__/_msvccompiler.cpython-310.pyc | Bin 0 -> 13690 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 0 -> 6594 bytes .../__pycache__/bcppcompiler.cpython-310.pyc | Bin 0 -> 6850 bytes .../__pycache__/ccompiler.cpython-310.pyc | Bin 0 -> 34216 bytes .../__pycache__/cmd.cpython-310.pyc | Bin 0 -> 14025 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 3615 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 7244 bytes .../cygwinccompiler.cpython-310.pyc | Bin 0 -> 8417 bytes .../__pycache__/debug.cpython-310.pyc | Bin 0 -> 289 bytes .../__pycache__/dep_util.cpython-310.pyc | Bin 0 -> 2806 bytes .../__pycache__/dir_util.cpython-310.pyc | Bin 0 -> 6148 bytes .../__pycache__/dist.cpython-310.pyc | Bin 0 -> 34614 bytes .../__pycache__/errors.cpython-310.pyc | Bin 0 -> 5031 bytes .../__pycache__/extension.cpython-310.pyc | Bin 0 -> 7059 bytes .../__pycache__/fancy_getopt.cpython-310.pyc | Bin 0 -> 10728 bytes .../__pycache__/file_util.cpython-310.pyc | Bin 0 -> 6022 bytes .../__pycache__/filelist.cpython-310.pyc | Bin 0 -> 10850 bytes .../__pycache__/log.cpython-310.pyc | Bin 0 -> 2346 bytes .../__pycache__/msvc9compiler.cpython-310.pyc | Bin 0 -> 17820 bytes .../__pycache__/msvccompiler.cpython-310.pyc | Bin 0 -> 15052 bytes .../__pycache__/py38compat.cpython-310.pyc | Bin 0 -> 470 bytes .../__pycache__/py39compat.cpython-310.pyc | Bin 0 -> 771 bytes .../__pycache__/spawn.cpython-310.pyc | Bin 0 -> 2911 bytes .../__pycache__/sysconfig.cpython-310.pyc | Bin 0 -> 13205 bytes .../__pycache__/text_file.cpython-310.pyc | Bin 0 -> 8268 bytes .../__pycache__/unixccompiler.cpython-310.pyc | Bin 0 -> 10990 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 13540 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 7872 bytes .../versionpredicate.cpython-310.pyc | Bin 0 -> 5364 bytes .../setuptools/_distutils/_collections.py | 56 + .../setuptools/_distutils/_functools.py | 20 + .../setuptools/_distutils/_macos_compat.py | 12 + .../setuptools/_distutils/_msvccompiler.py | 572 ++ .../setuptools/_distutils/archive_util.py | 280 + .../setuptools/_distutils/bcppcompiler.py | 408 + .../setuptools/_distutils/ccompiler.py | 1220 +++ .../setuptools/_distutils/cmd.py | 436 + .../setuptools/_distutils/command/__init__.py | 25 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 553 bytes .../_framework_compat.cpython-310.pyc | Bin 0 -> 1960 bytes .../command/__pycache__/bdist.cpython-310.pyc | Bin 0 -> 4018 bytes .../__pycache__/bdist_dumb.cpython-310.pyc | Bin 0 -> 3690 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 0 -> 12380 bytes .../command/__pycache__/build.cpython-310.pyc | Bin 0 -> 3944 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 0 -> 4910 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 0 -> 16348 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 0 -> 9846 bytes .../__pycache__/build_scripts.cpython-310.pyc | Bin 0 -> 4637 bytes .../command/__pycache__/check.cpython-310.pyc | Bin 0 -> 4697 bytes .../command/__pycache__/clean.cpython-310.pyc | Bin 0 -> 2169 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 10401 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 17245 bytes .../__pycache__/install_data.cpython-310.pyc | Bin 0 -> 2390 bytes .../install_egg_info.cpython-310.pyc | Bin 0 -> 3355 bytes .../install_headers.cpython-310.pyc | Bin 0 -> 1805 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 0 -> 5233 bytes .../install_scripts.cpython-310.pyc | Bin 0 -> 2238 bytes .../__pycache__/py37compat.cpython-310.pyc | Bin 0 -> 1077 bytes .../__pycache__/register.cpython-310.pyc | Bin 0 -> 8592 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 0 -> 14547 bytes .../__pycache__/upload.cpython-310.pyc | Bin 0 -> 5400 bytes .../_distutils/command/_framework_compat.py | 55 + .../setuptools/_distutils/command/bdist.py | 157 + .../_distutils/command/bdist_dumb.py | 144 + .../_distutils/command/bdist_rpm.py | 615 ++ .../setuptools/_distutils/command/build.py | 153 + .../_distutils/command/build_clib.py | 208 + .../_distutils/command/build_ext.py | 787 ++ .../setuptools/_distutils/command/build_py.py | 407 + .../_distutils/command/build_scripts.py | 173 + .../setuptools/_distutils/command/check.py | 151 + .../setuptools/_distutils/command/clean.py | 76 + .../setuptools/_distutils/command/config.py | 377 + .../setuptools/_distutils/command/install.py | 814 ++ .../_distutils/command/install_data.py | 84 + .../_distutils/command/install_egg_info.py | 91 + .../_distutils/command/install_headers.py | 45 + .../_distutils/command/install_lib.py | 238 + .../_distutils/command/install_scripts.py | 61 + .../_distutils/command/py37compat.py | 31 + .../setuptools/_distutils/command/register.py | 319 + .../setuptools/_distutils/command/sdist.py | 531 + .../setuptools/_distutils/command/upload.py | 205 + .../setuptools/_distutils/config.py | 139 + .../setuptools/_distutils/core.py | 291 + .../setuptools/_distutils/cygwinccompiler.py | 364 + .../setuptools/_distutils/debug.py | 5 + .../setuptools/_distutils/dep_util.py | 96 + .../setuptools/_distutils/dir_util.py | 243 + .../setuptools/_distutils/dist.py | 1286 +++ .../setuptools/_distutils/errors.py | 127 + .../setuptools/_distutils/extension.py | 248 + .../setuptools/_distutils/fancy_getopt.py | 470 + .../setuptools/_distutils/file_util.py | 249 + .../setuptools/_distutils/filelist.py | 371 + .../setuptools/_distutils/log.py | 80 + .../setuptools/_distutils/msvc9compiler.py | 832 ++ .../setuptools/_distutils/msvccompiler.py | 695 ++ .../setuptools/_distutils/py38compat.py | 8 + .../setuptools/_distutils/py39compat.py | 22 + .../setuptools/_distutils/spawn.py | 109 + .../setuptools/_distutils/sysconfig.py | 558 ++ .../setuptools/_distutils/text_file.py | 287 + .../setuptools/_distutils/unixccompiler.py | 401 + .../setuptools/_distutils/util.py | 513 + .../setuptools/_distutils/version.py | 358 + .../setuptools/_distutils/versionpredicate.py | 175 + .../site-packages/setuptools/_entry_points.py | 86 + .../site-packages/setuptools/_imp.py | 82 + .../site-packages/setuptools/_importlib.py | 47 + .../site-packages/setuptools/_itertools.py | 23 + .../site-packages/setuptools/_path.py | 29 + .../site-packages/setuptools/_reqs.py | 19 + .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 223 bytes .../__pycache__/ordered_set.cpython-310.pyc | Bin 0 -> 16359 bytes .../typing_extensions.cpython-310.pyc | Bin 0 -> 66617 bytes .../_vendor/__pycache__/zipp.cpython-310.pyc | Bin 0 -> 10266 bytes .../_vendor/importlib_metadata/__init__.py | 1047 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 37456 bytes .../__pycache__/_adapters.cpython-310.pyc | Bin 0 -> 2443 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 0 -> 1618 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 2107 bytes .../__pycache__/_functools.cpython-310.pyc | Bin 0 -> 3208 bytes .../__pycache__/_itertools.cpython-310.pyc | Bin 0 -> 2089 bytes .../__pycache__/_meta.cpython-310.pyc | Bin 0 -> 2397 bytes .../__pycache__/_text.cpython-310.pyc | Bin 0 -> 3141 bytes .../_vendor/importlib_metadata/_adapters.py | 68 + .../importlib_metadata/_collections.py | 30 + .../_vendor/importlib_metadata/_compat.py | 71 + .../_vendor/importlib_metadata/_functools.py | 104 + .../_vendor/importlib_metadata/_itertools.py | 73 + .../_vendor/importlib_metadata/_meta.py | 48 + .../_vendor/importlib_metadata/_text.py | 99 + .../_vendor/importlib_resources/__init__.py | 36 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 678 bytes .../__pycache__/_adapters.cpython-310.pyc | Bin 0 -> 7386 bytes .../__pycache__/_common.cpython-310.pyc | Bin 0 -> 2676 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 3536 bytes .../__pycache__/_itertools.cpython-310.pyc | Bin 0 -> 923 bytes .../__pycache__/_legacy.cpython-310.pyc | Bin 0 -> 4259 bytes .../__pycache__/abc.cpython-310.pyc | Bin 0 -> 5412 bytes .../__pycache__/readers.cpython-310.pyc | Bin 0 -> 5496 bytes .../__pycache__/simple.cpython-310.pyc | Bin 0 -> 4760 bytes .../_vendor/importlib_resources/_adapters.py | 170 + .../_vendor/importlib_resources/_common.py | 104 + .../_vendor/importlib_resources/_compat.py | 98 + .../_vendor/importlib_resources/_itertools.py | 35 + .../_vendor/importlib_resources/_legacy.py | 121 + .../_vendor/importlib_resources/abc.py | 137 + .../_vendor/importlib_resources/readers.py | 122 + .../_vendor/importlib_resources/simple.py | 116 + .../setuptools/_vendor/jaraco/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 230 bytes .../__pycache__/context.cpython-310.pyc | Bin 0 -> 6362 bytes .../__pycache__/functools.cpython-310.pyc | Bin 0 -> 15648 bytes .../setuptools/_vendor/jaraco/context.py | 213 + .../setuptools/_vendor/jaraco/functools.py | 525 + .../_vendor/jaraco/text/__init__.py | 599 ++ .../text/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 19690 bytes .../_vendor/more_itertools/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 304 bytes .../__pycache__/more.cpython-310.pyc | Bin 0 -> 110025 bytes .../__pycache__/recipes.cpython-310.pyc | Bin 0 -> 18004 bytes .../setuptools/_vendor/more_itertools/more.py | 3824 ++++++++ .../_vendor/more_itertools/recipes.py | 620 ++ .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 26 + .../setuptools/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 630 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 486 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7340 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4652 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2745 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9333 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 4021 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 21567 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12230 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3615 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12965 bytes .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 61 + .../setuptools/_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 802 ++ .../setuptools/_vendor/packaging/tags.py | 487 + .../setuptools/_vendor/packaging/utils.py | 136 + .../setuptools/_vendor/packaging/version.py | 504 + .../setuptools/_vendor/pyparsing/__init__.py | 331 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 7157 bytes .../__pycache__/actions.cpython-310.pyc | Bin 0 -> 7219 bytes .../__pycache__/common.cpython-310.pyc | Bin 0 -> 10145 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 176462 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 9103 bytes .../__pycache__/helpers.cpython-310.pyc | Bin 0 -> 35380 bytes .../__pycache__/results.cpython-310.pyc | Bin 0 -> 24821 bytes .../__pycache__/testing.cpython-310.pyc | Bin 0 -> 12137 bytes .../__pycache__/unicode.cpython-310.pyc | Bin 0 -> 10098 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 8645 bytes .../setuptools/_vendor/pyparsing/actions.py | 207 + .../setuptools/_vendor/pyparsing/common.py | 424 + .../setuptools/_vendor/pyparsing/core.py | 5814 +++++++++++ .../_vendor/pyparsing/diagram/__init__.py | 642 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 16597 bytes .../_vendor/pyparsing/exceptions.py | 267 + .../setuptools/_vendor/pyparsing/helpers.py | 1088 +++ .../setuptools/_vendor/pyparsing/results.py | 760 ++ .../setuptools/_vendor/pyparsing/testing.py | 331 + .../setuptools/_vendor/pyparsing/unicode.py | 352 + .../setuptools/_vendor/pyparsing/util.py | 235 + .../setuptools/_vendor/tomli/__init__.py | 11 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 395 bytes .../tomli/__pycache__/_parser.cpython-310.pyc | Bin 0 -> 17109 bytes .../tomli/__pycache__/_re.cpython-310.pyc | Bin 0 -> 2941 bytes .../tomli/__pycache__/_types.cpython-310.pyc | Bin 0 -> 365 bytes .../setuptools/_vendor/tomli/_parser.py | 691 ++ .../setuptools/_vendor/tomli/_re.py | 107 + .../setuptools/_vendor/tomli/_types.py | 10 + .../setuptools/_vendor/typing_extensions.py | 2296 +++++ .../site-packages/setuptools/_vendor/zipp.py | 329 + .../site-packages/setuptools/archive_util.py | 213 + .../site-packages/setuptools/build_meta.py | 511 + .../site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli-arm64.exe | Bin 0 -> 137216 bytes .../site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 12 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 481 bytes .../command/__pycache__/alias.cpython-310.pyc | Bin 0 -> 2414 bytes .../__pycache__/bdist_egg.cpython-310.pyc | Bin 0 -> 13164 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 0 -> 1627 bytes .../command/__pycache__/build.cpython-310.pyc | Bin 0 -> 6124 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 0 -> 2501 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 0 -> 12111 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 0 -> 13981 bytes .../__pycache__/develop.cpython-310.pyc | Bin 0 -> 6190 bytes .../__pycache__/dist_info.cpython-310.pyc | Bin 0 -> 4776 bytes .../__pycache__/easy_install.cpython-310.pyc | Bin 0 -> 64459 bytes .../editable_wheel.cpython-310.pyc | Bin 0 -> 31954 bytes .../__pycache__/egg_info.cpython-310.pyc | Bin 0 -> 23321 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 4323 bytes .../install_egg_info.cpython-310.pyc | Bin 0 -> 2497 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 0 -> 4209 bytes .../install_scripts.cpython-310.pyc | Bin 0 -> 2491 bytes .../__pycache__/py36compat.cpython-310.pyc | Bin 0 -> 4574 bytes .../__pycache__/register.cpython-310.pyc | Bin 0 -> 878 bytes .../__pycache__/rotate.cpython-310.pyc | Bin 0 -> 2545 bytes .../__pycache__/saveopts.cpython-310.pyc | Bin 0 -> 964 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 0 -> 7890 bytes .../__pycache__/setopt.cpython-310.pyc | Bin 0 -> 4726 bytes .../command/__pycache__/test.cpython-310.pyc | Bin 0 -> 8227 bytes .../__pycache__/upload.cpython-310.pyc | Bin 0 -> 851 bytes .../__pycache__/upload_docs.cpython-310.pyc | Bin 0 -> 6438 bytes .../site-packages/setuptools/command/alias.py | 78 + .../setuptools/command/bdist_egg.py | 457 + .../setuptools/command/bdist_rpm.py | 40 + .../site-packages/setuptools/command/build.py | 146 + .../setuptools/command/build_clib.py | 101 + .../setuptools/command/build_ext.py | 383 + .../setuptools/command/build_py.py | 368 + .../setuptools/command/develop.py | 193 + .../setuptools/command/dist_info.py | 142 + .../setuptools/command/easy_install.py | 2312 +++++ .../setuptools/command/editable_wheel.py | 844 ++ .../setuptools/command/egg_info.py | 763 ++ .../setuptools/command/install.py | 139 + .../setuptools/command/install_egg_info.py | 63 + .../setuptools/command/install_lib.py | 122 + .../setuptools/command/install_scripts.py | 70 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 134 + .../setuptools/command/register.py | 18 + .../setuptools/command/rotate.py | 64 + .../setuptools/command/saveopts.py | 22 + .../site-packages/setuptools/command/sdist.py | 210 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 251 + .../setuptools/command/upload.py | 17 + .../setuptools/command/upload_docs.py | 213 + .../setuptools/config/__init__.py | 35 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1480 bytes .../_apply_pyprojecttoml.cpython-310.pyc | Bin 0 -> 13563 bytes .../config/__pycache__/expand.cpython-310.pyc | Bin 0 -> 17622 bytes .../__pycache__/pyprojecttoml.cpython-310.pyc | Bin 0 -> 16360 bytes .../__pycache__/setupcfg.cpython-310.pyc | Bin 0 -> 22092 bytes .../setuptools/config/_apply_pyprojecttoml.py | 377 + .../config/_validate_pyproject/__init__.py | 34 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1555 bytes .../error_reporting.cpython-310.pyc | Bin 0 -> 11610 bytes .../extra_validations.cpython-310.pyc | Bin 0 -> 1450 bytes .../fastjsonschema_exceptions.cpython-310.pyc | Bin 0 -> 2487 bytes ...fastjsonschema_validations.cpython-310.pyc | Bin 0 -> 68754 bytes .../__pycache__/formats.cpython-310.pyc | Bin 0 -> 8621 bytes .../_validate_pyproject/error_reporting.py | 318 + .../_validate_pyproject/extra_validations.py | 36 + .../fastjsonschema_exceptions.py | 51 + .../fastjsonschema_validations.py | 1035 ++ .../config/_validate_pyproject/formats.py | 259 + .../site-packages/setuptools/config/expand.py | 462 + .../setuptools/config/pyprojecttoml.py | 493 + .../setuptools/config/setupcfg.py | 762 ++ .../site-packages/setuptools/dep_util.py | 25 + .../site-packages/setuptools/depends.py | 176 + .../site-packages/setuptools/discovery.py | 600 ++ .../site-packages/setuptools/dist.py | 1222 +++ .../site-packages/setuptools/errors.py | 58 + .../site-packages/setuptools/extension.py | 148 + .../setuptools/extern/__init__.py | 76 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3054 bytes .../site-packages/setuptools/glob.py | 167 + .../site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../site-packages/setuptools/gui-arm64.exe | Bin 0 -> 137728 bytes .../site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/installer.py | 104 + .../site-packages/setuptools/launch.py | 36 + .../site-packages/setuptools/logging.py | 36 + .../site-packages/setuptools/monkey.py | 165 + .../site-packages/setuptools/msvc.py | 1703 ++++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1126 +++ .../site-packages/setuptools/py34compat.py | 13 + .../site-packages/setuptools/sandbox.py | 530 + .../setuptools/script (dev).tmpl | 6 + .../site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/unicode_utils.py | 42 + .../site-packages/setuptools/version.py | 6 + .../site-packages/setuptools/wheel.py | 222 + .../setuptools/windows_support.py | 29 + .../six-1.17.0.dist-info/INSTALLER | 1 + .../six-1.17.0.dist-info/LICENSE | 18 + .../six-1.17.0.dist-info/METADATA | 43 + .../site-packages/six-1.17.0.dist-info/RECORD | 8 + .../site-packages/six-1.17.0.dist-info/WHEEL | 6 + .../six-1.17.0.dist-info/top_level.txt | 1 + myenv/lib/python3.10/site-packages/six.py | 1003 ++ myenv/lib64 | 1 + myenv/pyvenv.cfg | 3 + one.py | 23 + print_all_devices_absPath.py | 33 + requirements.log | 47 + requirements.sh | 11 + requirements.txt | 4 + run_at_boot.txt | 31 + two.py | 23 + 2110 files changed, 382375 insertions(+) create mode 100644 Dockerfile create mode 100644 about_version.py create mode 100644 myenv/bin/Activate.ps1 create mode 100644 myenv/bin/activate create mode 100644 myenv/bin/activate.csh create mode 100644 myenv/bin/activate.fish create mode 100755 myenv/bin/pip create mode 100755 myenv/bin/pip3 create mode 100755 myenv/bin/pip3.10 create mode 120000 myenv/bin/python create mode 120000 myenv/bin/python3 create mode 120000 myenv/bin/python3.10 create mode 100644 myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/PKG-INFO create mode 100644 myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/SOURCES.txt create mode 100644 myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/dependency_links.txt create mode 100644 myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/installed-files.txt create mode 100644 myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/requires.txt create mode 100644 myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/PIL/AvifImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/BdfFontFile.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/BlpImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/BmpImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ContainerIO.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/CurImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/DcxImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/DdsImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/EpsImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ExifTags.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/FitsImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/FliImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/FontFile.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/FpxImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/FtexImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/GbrImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/GdImageFile.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/GifImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/GimpGradientFile.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/GimpPaletteFile.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/IcoImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/Image.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageChops.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageCms.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageColor.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageDraw.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageDraw2.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageEnhance.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageFile.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageFilter.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageFont.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageGrab.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageMath.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageMode.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageMorph.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageOps.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImagePalette.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImagePath.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageQt.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageSequence.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageShow.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageStat.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageTk.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageTransform.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImageWin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/ImtImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/JpegImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/JpegPresets.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/MicImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/MpegImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/MpoImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/MspImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PSDraw.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PaletteFile.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PalmImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PcdImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PcfFontFile.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PdfImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PdfParser.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PixarImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PngImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/PsdImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/QoiImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/SgiImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/SunImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/TarIO.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/TgaImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/TiffImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/TiffTags.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/WalImageFile.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/WmfImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/XbmImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/XpmImagePlugin.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/AvifImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/GimpGradientFile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/Image.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageCms.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageEnhance.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageFont.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageSequence.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageShow.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PcfFontFile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/SunImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/_binary.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/_tkinter_finder.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/_typing.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/_util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/_version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/features.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/PIL/__pycache__/report.cpython-310.pyc create mode 100755 myenv/lib/python3.10/site-packages/PIL/_avif.cpython-310-x86_64-linux-gnu.so create mode 100644 myenv/lib/python3.10/site-packages/PIL/_avif.pyi create mode 100644 myenv/lib/python3.10/site-packages/PIL/_binary.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/_deprecate.py create mode 100755 myenv/lib/python3.10/site-packages/PIL/_imaging.cpython-310-x86_64-linux-gnu.so create mode 100644 myenv/lib/python3.10/site-packages/PIL/_imaging.pyi create mode 100755 myenv/lib/python3.10/site-packages/PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so create mode 100644 myenv/lib/python3.10/site-packages/PIL/_imagingcms.pyi create mode 100755 myenv/lib/python3.10/site-packages/PIL/_imagingft.cpython-310-x86_64-linux-gnu.so create mode 100644 myenv/lib/python3.10/site-packages/PIL/_imagingft.pyi create mode 100755 myenv/lib/python3.10/site-packages/PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so create mode 100644 myenv/lib/python3.10/site-packages/PIL/_imagingmath.pyi create mode 100755 myenv/lib/python3.10/site-packages/PIL/_imagingmorph.cpython-310-x86_64-linux-gnu.so create mode 100644 myenv/lib/python3.10/site-packages/PIL/_imagingmorph.pyi create mode 100755 myenv/lib/python3.10/site-packages/PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so create mode 100644 myenv/lib/python3.10/site-packages/PIL/_imagingtk.pyi create mode 100644 myenv/lib/python3.10/site-packages/PIL/_tkinter_finder.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/_typing.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/_util.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/_version.py create mode 100755 myenv/lib/python3.10/site-packages/PIL/_webp.cpython-310-x86_64-linux-gnu.so create mode 100644 myenv/lib/python3.10/site-packages/PIL/_webp.pyi create mode 100644 myenv/lib/python3.10/site-packages/PIL/features.py create mode 100644 myenv/lib/python3.10/site-packages/PIL/py.typed create mode 100644 myenv/lib/python3.10/site-packages/PIL/report.py create mode 100644 myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/PKG-INFO create mode 100644 myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/SOURCES.txt create mode 100644 myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/dependency_links.txt create mode 100644 myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/installed-files.txt create mode 100644 myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/requires.txt create mode 100644 myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/PKG-INFO create mode 100644 myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/SOURCES.txt create mode 100644 myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/dependency_links.txt create mode 100644 myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/installed-files.txt create mode 100644 myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/Xlib/X.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/XK.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/Xatom.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/Xcursorfont.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/Xutil.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/X.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/XK.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/Xatom.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/Xcursorfont.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/Xutil.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/display.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/error.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/rdb.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/threaded.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/__pycache__/xauth.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/display.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/error.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/composite.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/damage.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/dpms.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/ge.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/nvcontrol.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/randr.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/record.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/res.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/screensaver.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/security.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/shape.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xfixes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xinerama.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xinput.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xtest.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/composite.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/damage.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/dpms.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/ge.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/nvcontrol.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/randr.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/record.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/res.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/screensaver.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/security.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/shape.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/xfixes.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/xinerama.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/xinput.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/ext/xtest.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/apl.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/arabic.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/cyrillic.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/greek.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/hebrew.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/katakana.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/korean.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin1.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin2.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin3.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin4.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/miscellany.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/publishing.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/special.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/technical.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/thai.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/xf86.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/xk3270.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/xkb.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/apl.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/arabic.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/cyrillic.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/greek.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/hebrew.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/katakana.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/korean.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin1.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin2.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin3.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin4.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/miscellany.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/publishing.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/special.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/technical.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/thai.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/xf86.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/xk3270.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/keysymdef/xkb.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/display.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/event.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/request.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/rq.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/structs.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/display.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/event.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/request.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/rq.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/protocol/structs.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/rdb.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/__pycache__/connect.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/__pycache__/lock.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/__pycache__/unix_connect.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/__pycache__/vms_connect.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/connect.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/lock.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/unix_connect.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/support/vms_connect.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/threaded.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xauth.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/colormap.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/cursor.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/drawable.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/fontable.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/icccm.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/resource.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/colormap.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/cursor.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/drawable.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/fontable.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/icccm.py create mode 100644 myenv/lib/python3.10/site-packages/Xlib/xobject/resource.py create mode 100644 myenv/lib/python3.10/site-packages/__pycache__/six.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/_distutils_hack/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/_distutils_hack/override.py create mode 100644 myenv/lib/python3.10/site-packages/distutils-precedence.pth create mode 100644 myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/REQUESTED create mode 100644 myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/licenses/LICENSE create mode 100644 myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/evdev/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/device.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/ecodes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/ecodes_runtime.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/eventio.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/eventio_async.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/events.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/evtest.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/ff.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/genecodes_c.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/genecodes_py.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/uinput.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/evdev/__pycache__/util.cpython-310.pyc create mode 100755 myenv/lib/python3.10/site-packages/evdev/_ecodes.cpython-310-x86_64-linux-gnu.so create mode 100755 myenv/lib/python3.10/site-packages/evdev/_input.cpython-310-x86_64-linux-gnu.so create mode 100755 myenv/lib/python3.10/site-packages/evdev/_uinput.cpython-310-x86_64-linux-gnu.so create mode 100644 myenv/lib/python3.10/site-packages/evdev/device.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/ecodes.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/ecodes_runtime.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/eventio.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/eventio_async.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/events.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/evtest.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/ff.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/genecodes_c.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/genecodes_py.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/input.c create mode 100644 myenv/lib/python3.10/site-packages/evdev/py.typed create mode 100644 myenv/lib/python3.10/site-packages/evdev/uinput.c create mode 100644 myenv/lib/python3.10/site-packages/evdev/uinput.py create mode 100644 myenv/lib/python3.10/site-packages/evdev/util.py create mode 100644 myenv/lib/python3.10/site-packages/mouseinfo/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/mouseinfo/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/mouseinfo/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/mouseinfo/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/licenses/LICENSE create mode 100644 myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/zip-safe create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libXau-154567c4.so.6.0.0 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libavif-01e67780.so.16.3.0 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libbrotlicommon-c55a5f7a.so.1.1.0 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libbrotlidec-2ced2f3a.so.1.1.0 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libfreetype-083ff72c.so.6.20.2 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libharfbuzz-fe5b8f8d.so.0.61121.0 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libjpeg-8a13c6e0.so.62.4.0 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/liblcms2-cc10e42f.so.2.0.17 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/liblzma-64b7ab39.so.5.8.1 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libopenjp2-56811f71.so.2.5.3 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libpng16-d00bd151.so.16.49.0 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libsharpyuv-60a7c00b.so.0.1.1 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libtiff-13a02c81.so.6.1.0 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libwebp-5f0275c0.so.7.1.10 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libwebpdemux-efaed568.so.2.0.16 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libwebpmux-6f2b1ad9.so.3.1.1 create mode 100755 myenv/lib/python3.10/site-packages/pillow.libs/libxcb-64009ff3.so.1.1.0 create mode 100644 myenv/lib/python3.10/site-packages/pip-23.0.1.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/pip-23.0.1.dist-info/LICENSE.txt create mode 100644 myenv/lib/python3.10/site-packages/pip-23.0.1.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/pip-23.0.1.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/pip-23.0.1.dist-info/REQUESTED create mode 100644 myenv/lib/python3.10/site-packages/pip-23.0.1.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/pip-23.0.1.dist-info/entry_points.txt create mode 100644 myenv/lib/python3.10/site-packages/pip-23.0.1.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/pip/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/__pip-runner__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/__pycache__/__pip-runner__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__pycache__/build_env.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__pycache__/cache.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__pycache__/configuration.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__pycache__/exceptions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__pycache__/main.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__pycache__/pyproject.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/build_env.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cache.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/parser.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/command_context.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/main.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/parser.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/spinners.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/cli/status_codes.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/cache.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/check.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/completion.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/debug.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/download.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/hash.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/help.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/index.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/list.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/search.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/show.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/cache.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/check.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/completion.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/configuration.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/debug.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/download.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/freeze.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/hash.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/help.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/index.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/inspect.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/install.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/list.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/search.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/show.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/commands/wheel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/configuration.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/base.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/base.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/installed.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/distributions/wheel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/exceptions.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/index/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/collector.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/sources.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/index/collector.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/index/sources.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/locations/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/base.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/locations/base.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/main.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/base.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/_json.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/base.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_compat.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_dists.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_envs.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/candidate.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/format_control.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/index.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/link.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/scheme.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/target_python.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/candidate.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/direct_url.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/format_control.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/index.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/installation_report.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/link.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/scheme.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/search_scope.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/target_python.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/models/wheel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/auth.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/download.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/session.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/utils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/auth.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/cache.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/download.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/session.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/utils.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/check.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/build_tracker.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_editable.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_editable.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/check.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/freeze.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/legacy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/install/legacy.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/operations/prepare.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/pyproject.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_file.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_install.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_set.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/constructors.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/req_file.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/req_install.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/req_set.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/base.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/base.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/self_outdated_check.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/_log.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/logging.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/misc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/urls.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/_log.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/appdirs.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/compat.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/datetime.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/deprecation.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/distutils_args.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/egg_link.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/encoding.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/filesystem.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/filetypes.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/glibc.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/hashes.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/logging.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/misc.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/models.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/packaging.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/subprocess.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/unpacking.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/urls.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/utils/wheel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/git.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/git.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/subversion.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_internal/wheel_builder.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/certifi/core.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachinedict.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/johabfreq.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/johabprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/macromanprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/resultdict.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/utf1632prober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/chardet/version.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/ansi_test.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/initialise_test.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/isatty_test.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/utils.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/winterm_test.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/win32.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/database.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/index.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/locators.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/markers.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/resources.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/t64-arm.exe create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/util.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/version.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/w64-arm.exe create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distro/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distro/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/distro/distro.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/core.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/codec.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/compat.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/core.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/intranges.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/package_data.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/tags.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/packaging/version.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/cmdline.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/console.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/filter.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatter.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/img.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/irc.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/latex.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/other.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/rtf.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/svg.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal256.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/lexer.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/_mapping.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/python.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/modeline.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/plugin.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/regexopt.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/scanner.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/sphinxext.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/style.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/token.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/unistring.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pygments/util.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/actions.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/common.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/core.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/exceptions.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/helpers.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/results.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/testing.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/unicode.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyparsing/util.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_compat.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_impl.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/api.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/help.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/models.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/__version__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/api.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/auth.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/certs.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/compat.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/cookies.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/help.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/hooks.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/models.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/packages.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/structures.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/align.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/box.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/console.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/control.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/json.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/live.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/region.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/status.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/style.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/table.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/text.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_cell_widths.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_codes.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_replace.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_export_format.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_extension.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_log_render.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_loop.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_null_file.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_palettes.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_pick.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_ratio.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_spinners.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_stack.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_timer.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_win32_console.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_windows.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_windows_renderer.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/_wrap.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/abc.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/align.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/ansi.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/bar.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/box.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/cells.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/color.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/color_triplet.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/columns.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/console.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/constrain.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/containers.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/control.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/default_styles.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/diagnose.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/emoji.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/errors.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/file_proxy.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/filesize.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/highlighter.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/json.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/jupyter.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/layout.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/live.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/live_render.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/logging.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/markup.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/measure.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/padding.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/pager.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/palette.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/panel.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/pretty.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/progress.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/progress_bar.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/prompt.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/protocol.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/region.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/repr.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/rule.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/scope.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/screen.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/segment.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/spinner.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/status.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/style.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/styled.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/syntax.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/table.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/terminal_theme.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/text.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/theme.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/themes.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/traceback.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/rich/tree.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/six.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/_asyncio.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/_utils.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/after.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/before.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/before_sleep.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/nap.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/retry.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/stop.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/tornadoweb.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tomli/_re.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/tomli/_types.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/typing_extensions.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/request.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/vendor.txt create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 myenv/lib/python3.10/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 myenv/lib/python3.10/site-packages/pip/py.typed create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/zipp.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_adapters.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_common.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_itertools.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_legacy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/abc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/readers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/simple.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_adapters.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_common.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_compat.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_itertools.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_legacy.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/abc.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/readers.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/simple.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/__pycache__/context.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/__pycache__/functools.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/context.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/functools.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/text/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/text/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__pycache__/more.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__pycache__/recipes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/more.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/recipes.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_manylinux.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_musllinux.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/tags.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/common.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/core.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/results.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/__pycache__/util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/actions.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/common.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/core.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/diagram/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/exceptions.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/helpers.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/results.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/testing.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/unicode.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing/util.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/_vendor/zipp.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/extern/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil-7.0.0.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/psutil-7.0.0.dist-info/LICENSE create mode 100644 myenv/lib/python3.10/site-packages/psutil-7.0.0.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/psutil-7.0.0.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/psutil-7.0.0.dist-info/REQUESTED create mode 100644 myenv/lib/python3.10/site-packages/psutil-7.0.0.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/psutil-7.0.0.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/psutil/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/__pycache__/_common.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/__pycache__/_psaix.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/__pycache__/_psbsd.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/__pycache__/_pslinux.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/__pycache__/_psosx.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/__pycache__/_psposix.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/__pycache__/_pssunos.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/__pycache__/_pswindows.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/_common.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/_psaix.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/_psbsd.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/_pslinux.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/_psosx.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/_psposix.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/_pssunos.py create mode 100755 myenv/lib/python3.10/site-packages/psutil/_psutil_linux.abi3.so create mode 100755 myenv/lib/python3.10/site-packages/psutil/_psutil_posix.abi3.so create mode 100644 myenv/lib/python3.10/site-packages/psutil/_pswindows.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_aix.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_bsd.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_connections.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_contracts.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_linux.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_memleaks.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_misc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_osx.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_posix.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_process.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_process_all.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_scripts.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_sunos.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_system.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_testutils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_unicode.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/__pycache__/test_windows.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_aix.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_bsd.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_connections.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_contracts.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_linux.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_memleaks.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_misc.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_osx.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_posix.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_process.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_process_all.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_scripts.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_sunos.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_system.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_testutils.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_unicode.py create mode 100644 myenv/lib/python3.10/site-packages/psutil/tests/test_windows.py create mode 100644 myenv/lib/python3.10/site-packages/pyautogui-0.9.54.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/pyautogui-0.9.54.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/pyautogui-0.9.54.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/pyautogui-0.9.54.dist-info/REQUESTED create mode 100644 myenv/lib/python3.10/site-packages/pyautogui-0.9.54.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/pyautogui-0.9.54.dist-info/licenses/AUTHORS.txt create mode 100644 myenv/lib/python3.10/site-packages/pyautogui-0.9.54.dist-info/licenses/LICENSE.txt create mode 100644 myenv/lib/python3.10/site-packages/pyautogui-0.9.54.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/__pycache__/_pyautogui_java.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/__pycache__/_pyautogui_osx.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/__pycache__/_pyautogui_win.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/__pycache__/_pyautogui_x11.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/_pyautogui_java.py create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/_pyautogui_osx.py create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/_pyautogui_win.py create mode 100644 myenv/lib/python3.10/site-packages/pyautogui/_pyautogui_x11.py create mode 100644 myenv/lib/python3.10/site-packages/pygetwindow/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pygetwindow/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pygetwindow/__pycache__/_pygetwindow_macos.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pygetwindow/__pycache__/_pygetwindow_win.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pygetwindow/_pygetwindow_macos.py create mode 100644 myenv/lib/python3.10/site-packages/pygetwindow/_pygetwindow_win.py create mode 100644 myenv/lib/python3.10/site-packages/pymsgbox-1.0.9.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/pymsgbox-1.0.9.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/pymsgbox-1.0.9.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/pymsgbox-1.0.9.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/pymsgbox-1.0.9.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/pymsgbox/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pymsgbox/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pymsgbox/__pycache__/_native_win.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pymsgbox/_native_win.py create mode 100644 myenv/lib/python3.10/site-packages/pynput-1.8.1.dist-info/COPYING.LGPL create mode 100644 myenv/lib/python3.10/site-packages/pynput-1.8.1.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/pynput-1.8.1.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/pynput-1.8.1.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/pynput-1.8.1.dist-info/REQUESTED create mode 100644 myenv/lib/python3.10/site-packages/pynput-1.8.1.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/pynput-1.8.1.dist-info/pbr.json create mode 100644 myenv/lib/python3.10/site-packages/pynput-1.8.1.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/pynput-1.8.1.dist-info/zip-safe create mode 100644 myenv/lib/python3.10/site-packages/pynput/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/__pycache__/_info.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/_info.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/__pycache__/darwin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/__pycache__/darwin_vks.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/__pycache__/uinput.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/__pycache__/win32.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/__pycache__/win32_vks.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/__pycache__/xorg.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/__pycache__/xorg_keysyms.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/darwin.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/darwin_vks.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/uinput.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/win32.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/win32_vks.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/xorg.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/_util/xorg_keysyms.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/__pycache__/_base.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/__pycache__/_darwin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/__pycache__/_dummy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/__pycache__/_uinput.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/__pycache__/_win32.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/__pycache__/_xorg.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/_base.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/_darwin.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/_dummy.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/_uinput.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/_win32.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/keyboard/_xorg.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/__pycache__/_base.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/__pycache__/_darwin.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/__pycache__/_dummy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/__pycache__/_win32.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/__pycache__/_xorg.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/_base.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/_darwin.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/_dummy.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/_win32.py create mode 100644 myenv/lib/python3.10/site-packages/pynput/mouse/_xorg.py create mode 100644 myenv/lib/python3.10/site-packages/pyperclip-1.9.0-py3.10.egg-info/PKG-INFO create mode 100644 myenv/lib/python3.10/site-packages/pyperclip-1.9.0-py3.10.egg-info/SOURCES.txt create mode 100644 myenv/lib/python3.10/site-packages/pyperclip-1.9.0-py3.10.egg-info/dependency_links.txt create mode 100644 myenv/lib/python3.10/site-packages/pyperclip-1.9.0-py3.10.egg-info/installed-files.txt create mode 100644 myenv/lib/python3.10/site-packages/pyperclip-1.9.0-py3.10.egg-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/pyperclip/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pyperclip/__main__.py create mode 100644 myenv/lib/python3.10/site-packages/pyperclip/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pyperclip/__pycache__/__main__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pyrect/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pyrect/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/pyscreeze-1.0.1.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/pyscreeze-1.0.1.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/pyscreeze-1.0.1.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/pyscreeze-1.0.1.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/pyscreeze-1.0.1.dist-info/licenses/AUTHORS.txt create mode 100644 myenv/lib/python3.10/site-packages/pyscreeze-1.0.1.dist-info/licenses/LICENSE.txt create mode 100644 myenv/lib/python3.10/site-packages/pyscreeze-1.0.1.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/pyscreeze/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pyscreeze/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/python3_xlib-0.15-py3.10.egg-info/PKG-INFO create mode 100644 myenv/lib/python3.10/site-packages/python3_xlib-0.15-py3.10.egg-info/SOURCES.txt create mode 100644 myenv/lib/python3.10/site-packages/python3_xlib-0.15-py3.10.egg-info/dependency_links.txt create mode 100644 myenv/lib/python3.10/site-packages/python3_xlib-0.15-py3.10.egg-info/installed-files.txt create mode 100644 myenv/lib/python3.10/site-packages/python3_xlib-0.15-py3.10.egg-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/python_xlib-0.33.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/python_xlib-0.33.dist-info/LICENSE create mode 100644 myenv/lib/python3.10/site-packages/python_xlib-0.33.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/python_xlib-0.33.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/python_xlib-0.33.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/python_xlib-0.33.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/pytweening-1.2.0-py3.10.egg-info/PKG-INFO create mode 100644 myenv/lib/python3.10/site-packages/pytweening-1.2.0-py3.10.egg-info/SOURCES.txt create mode 100644 myenv/lib/python3.10/site-packages/pytweening-1.2.0-py3.10.egg-info/dependency_links.txt create mode 100644 myenv/lib/python3.10/site-packages/pytweening-1.2.0-py3.10.egg-info/installed-files.txt create mode 100644 myenv/lib/python3.10/site-packages/pytweening-1.2.0-py3.10.egg-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/pytweening/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/pytweening/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools-65.5.0.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/setuptools-65.5.0.dist-info/LICENSE create mode 100644 myenv/lib/python3.10/site-packages/setuptools-65.5.0.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/setuptools-65.5.0.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/setuptools-65.5.0.dist-info/REQUESTED create mode 100644 myenv/lib/python3.10/site-packages/setuptools-65.5.0.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/setuptools-65.5.0.dist-info/entry_points.txt create mode 100644 myenv/lib/python3.10/site-packages/setuptools-65.5.0.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/_entry_points.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/_imp.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/_importlib.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/_itertools.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/_path.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/_reqs.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/archive_util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/build_meta.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/dep_util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/depends.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/discovery.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/dist.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/errors.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/extension.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/glob.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/installer.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/launch.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/logging.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/monkey.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/msvc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/namespaces.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/package_index.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/py34compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/sandbox.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/unicode_utils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/__pycache__/windows_support.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_deprecation_warning.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_collections.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_functools.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_macos_compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/archive_util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/bcppcompiler.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/ccompiler.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/config.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/core.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/debug.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dir_util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dist.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/errors.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/extension.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/filelist.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/log.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/py38compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/py39compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/unixccompiler.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/_collections.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/_functools.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/_macos_compat.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/_msvccompiler.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/archive_util.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/bcppcompiler.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/ccompiler.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/cmd.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/_framework_compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/py37compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/upload.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/_framework_compat.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_dumb.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_rpm.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/build.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/build_clib.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/build_py.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/build_scripts.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/check.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/clean.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/config.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/install.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/install_data.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/install_egg_info.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/install_headers.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/install_lib.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/install_scripts.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/py37compat.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/register.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/command/upload.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/config.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/core.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/cygwinccompiler.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/debug.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/dep_util.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/dir_util.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/dist.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/errors.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/extension.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/fancy_getopt.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/file_util.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/filelist.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/log.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/msvc9compiler.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/msvccompiler.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/py38compat.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/py39compat.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/spawn.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/sysconfig.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/text_file.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/unixccompiler.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/util.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/version.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_distutils/versionpredicate.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_entry_points.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_imp.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_importlib.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_itertools.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_path.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_reqs.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/typing_extensions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/zipp.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_adapters.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_collections.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_functools.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_itertools.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_meta.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_text.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_collections.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_compat.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_functools.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_meta.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_text.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_adapters.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_common.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_itertools.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_legacy.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/abc.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/readers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/simple.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_adapters.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_common.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_compat.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_itertools.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_legacy.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/abc.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/readers.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/simple.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/__pycache__/context.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/__pycache__/functools.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/context.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_manylinux.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_musllinux.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/tags.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/common.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/core.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/results.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/__pycache__/util.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/actions.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/common.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/core.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/diagram/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/exceptions.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/helpers.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/results.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/testing.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/unicode.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing/util.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__pycache__/_parser.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__pycache__/_re.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__pycache__/_types.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/tomli/_parser.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/tomli/_re.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/tomli/_types.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/typing_extensions.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/_vendor/zipp.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/archive_util.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/build_meta.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/cli-32.exe create mode 100644 myenv/lib/python3.10/site-packages/setuptools/cli-64.exe create mode 100644 myenv/lib/python3.10/site-packages/setuptools/cli-arm64.exe create mode 100644 myenv/lib/python3.10/site-packages/setuptools/cli.exe create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/alias.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/build.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_clib.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_ext.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_py.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/develop.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/dist_info.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/easy_install.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/editable_wheel.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/egg_info.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/install.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_lib.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_scripts.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/py36compat.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/register.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/rotate.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/saveopts.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/sdist.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/setopt.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/test.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/upload.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/__pycache__/upload_docs.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/alias.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/bdist_egg.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/bdist_rpm.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/build.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/build_clib.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/build_ext.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/build_py.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/develop.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/dist_info.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/easy_install.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/editable_wheel.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/egg_info.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/install.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/install_egg_info.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/install_lib.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/install_scripts.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/launcher manifest.xml create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/py36compat.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/register.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/rotate.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/saveopts.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/sdist.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/setopt.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/test.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/upload.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/command/upload_docs.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/__pycache__/_apply_pyprojecttoml.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/__pycache__/expand.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/__pycache__/pyprojecttoml.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/__pycache__/setupcfg.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/error_reporting.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/extra_validations.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/fastjsonschema_exceptions.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/fastjsonschema_validations.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/formats.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/error_reporting.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/extra_validations.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/formats.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/expand.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/config/setupcfg.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/dep_util.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/depends.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/discovery.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/dist.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/errors.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/extension.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/extern/__init__.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/extern/__pycache__/__init__.cpython-310.pyc create mode 100644 myenv/lib/python3.10/site-packages/setuptools/glob.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/gui-32.exe create mode 100644 myenv/lib/python3.10/site-packages/setuptools/gui-64.exe create mode 100644 myenv/lib/python3.10/site-packages/setuptools/gui-arm64.exe create mode 100644 myenv/lib/python3.10/site-packages/setuptools/gui.exe create mode 100644 myenv/lib/python3.10/site-packages/setuptools/installer.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/launch.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/logging.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/monkey.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/msvc.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/namespaces.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/package_index.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/py34compat.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/sandbox.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/script (dev).tmpl create mode 100644 myenv/lib/python3.10/site-packages/setuptools/script.tmpl create mode 100644 myenv/lib/python3.10/site-packages/setuptools/unicode_utils.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/version.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/wheel.py create mode 100644 myenv/lib/python3.10/site-packages/setuptools/windows_support.py create mode 100644 myenv/lib/python3.10/site-packages/six-1.17.0.dist-info/INSTALLER create mode 100644 myenv/lib/python3.10/site-packages/six-1.17.0.dist-info/LICENSE create mode 100644 myenv/lib/python3.10/site-packages/six-1.17.0.dist-info/METADATA create mode 100644 myenv/lib/python3.10/site-packages/six-1.17.0.dist-info/RECORD create mode 100644 myenv/lib/python3.10/site-packages/six-1.17.0.dist-info/WHEEL create mode 100644 myenv/lib/python3.10/site-packages/six-1.17.0.dist-info/top_level.txt create mode 100644 myenv/lib/python3.10/site-packages/six.py create mode 120000 myenv/lib64 create mode 100644 myenv/pyvenv.cfg create mode 100755 one.py create mode 100644 print_all_devices_absPath.py create mode 100644 requirements.log create mode 100644 requirements.sh create mode 100644 requirements.txt create mode 100644 run_at_boot.txt create mode 100644 two.py diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3c6574f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.10 + +WORKDIR /app + +# Copy source code only (not local venv due to .dockerignore) +COPY . . + +# Create fresh venv and install dependencies +RUN echo "[🛠️ BUILD TIME] Creating venv..." && \ + python -m venv myenv && \ + ./myenv/bin/pip install --upgrade pip && \ + if [ -f requirements.txt ]; then ./myenv/bin/pip install -r requirements.txt; fi && \ + echo "[✅ BUILD TIME] Python version:" && \ + ./myenv/bin/python --version + +# Run-time: use the venv +CMD ["/bin/bash", "-c", "echo '[🚀 CONTAINER TIME] Running in venv...' && source myenv/bin/activate && python --version"] diff --git a/about_version.py b/about_version.py new file mode 100644 index 0000000..67ffaaf --- /dev/null +++ b/about_version.py @@ -0,0 +1,9 @@ +import evdev +import psutil +import pynput +import pyautogui + +print("evdev:", evdev.__version__) +print("psutil:", psutil.__version__) +print("pynput:", pynput.__version__) +print("pyautogui:", pyautogui.__version__) diff --git a/myenv/bin/Activate.ps1 b/myenv/bin/Activate.ps1 new file mode 100644 index 0000000..b49d77b --- /dev/null +++ b/myenv/bin/Activate.ps1 @@ -0,0 +1,247 @@ +<# +.Synopsis +Activate a Python virtual environment for the current PowerShell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +https://go.microsoft.com/fwlink/?LinkID=135170 + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove VIRTUAL_ENV_PROMPT altogether. + if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) { + Remove-Item -Path env:VIRTUAL_ENV_PROMPT + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0, 1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} +else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} +else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } + $env:VIRTUAL_ENV_PROMPT = $Prompt +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/myenv/bin/activate b/myenv/bin/activate new file mode 100644 index 0000000..ada5d93 --- /dev/null +++ b/myenv/bin/activate @@ -0,0 +1,69 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + unset VIRTUAL_ENV_PROMPT + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV=/home/dhruv/Desktop/python_power_button__based__rustdesk_toggler/myenv +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/"bin":$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + PS1='(myenv) '"${PS1:-}" + export PS1 + VIRTUAL_ENV_PROMPT='(myenv) ' + export VIRTUAL_ENV_PROMPT +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null +fi diff --git a/myenv/bin/activate.csh b/myenv/bin/activate.csh new file mode 100644 index 0000000..5163a22 --- /dev/null +++ b/myenv/bin/activate.csh @@ -0,0 +1,26 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . +# Ported to Python 3.3 venv by Andrew Svetlov + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV /home/dhruv/Desktop/python_power_button__based__rustdesk_toggler/myenv + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/"bin":$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = '(myenv) '"$prompt" + setenv VIRTUAL_ENV_PROMPT '(myenv) ' +endif + +alias pydoc python -m pydoc + +rehash diff --git a/myenv/bin/activate.fish b/myenv/bin/activate.fish new file mode 100644 index 0000000..7d7d32e --- /dev/null +++ b/myenv/bin/activate.fish @@ -0,0 +1,69 @@ +# This file must be used with "source /bin/activate.fish" *from fish* +# (https://fishshell.com/); you cannot run it directly. + +function deactivate -d "Exit virtual environment and return to normal shell environment" + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + set -e _OLD_FISH_PROMPT_OVERRIDE + # prevents error when using nested fish instances (Issue #93858) + if functions -q _old_fish_prompt + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + end + + set -e VIRTUAL_ENV + set -e VIRTUAL_ENV_PROMPT + if test "$argv[1]" != "nondestructive" + # Self-destruct! + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV /home/dhruv/Desktop/python_power_button__based__rustdesk_toggler/myenv + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/"bin $PATH + +# Unset PYTHONHOME if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # fish uses a function instead of an env var to generate the prompt. + + # Save the current fish_prompt function as the function _old_fish_prompt. + functions -c fish_prompt _old_fish_prompt + + # With the original prompt function renamed, we can override with our own. + function fish_prompt + # Save the return status of the last command. + set -l old_status $status + + # Output the venv prompt; color taken from the blue of the Python logo. + printf "%s%s%s" (set_color 4B8BBE) '(myenv) ' (set_color normal) + + # Restore the return status of the previous command. + echo "exit $old_status" | . + # Output the original/"old" prompt. + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" + set -gx VIRTUAL_ENV_PROMPT '(myenv) ' +end diff --git a/myenv/bin/pip b/myenv/bin/pip new file mode 100755 index 0000000..c247029 --- /dev/null +++ b/myenv/bin/pip @@ -0,0 +1,8 @@ +#!/home/dhruv/Desktop/python_power_button__based__rustdesk_toggler/myenv/bin/python3.10 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/myenv/bin/pip3 b/myenv/bin/pip3 new file mode 100755 index 0000000..c247029 --- /dev/null +++ b/myenv/bin/pip3 @@ -0,0 +1,8 @@ +#!/home/dhruv/Desktop/python_power_button__based__rustdesk_toggler/myenv/bin/python3.10 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/myenv/bin/pip3.10 b/myenv/bin/pip3.10 new file mode 100755 index 0000000..c247029 --- /dev/null +++ b/myenv/bin/pip3.10 @@ -0,0 +1,8 @@ +#!/home/dhruv/Desktop/python_power_button__based__rustdesk_toggler/myenv/bin/python3.10 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/myenv/bin/python b/myenv/bin/python new file mode 120000 index 0000000..c3cc991 --- /dev/null +++ b/myenv/bin/python @@ -0,0 +1 @@ +python3.10 \ No newline at end of file diff --git a/myenv/bin/python3 b/myenv/bin/python3 new file mode 120000 index 0000000..c3cc991 --- /dev/null +++ b/myenv/bin/python3 @@ -0,0 +1 @@ +python3.10 \ No newline at end of file diff --git a/myenv/bin/python3.10 b/myenv/bin/python3.10 new file mode 120000 index 0000000..5202249 --- /dev/null +++ b/myenv/bin/python3.10 @@ -0,0 +1 @@ +/usr/bin/python3.10 \ No newline at end of file diff --git a/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/PKG-INFO b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/PKG-INFO new file mode 100644 index 0000000..32beb98 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/PKG-INFO @@ -0,0 +1,63 @@ +Metadata-Version: 2.1 +Name: MouseInfo +Version: 0.1.3 +Summary: An application to display XY position and RGB color information for the pixel currently under the mouse. Works on Python 2 and 3. +Home-page: https://github.com/asweigart/mouseinfo +Author: Al Sweigart +Author-email: al@inventwithpython.com +License: GPLv3+ +Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+) +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.2 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Description-Content-Type: text/markdown + +MouseInfo +====== + +An application to display XY position and RGB color information for the pixel currently under the mouse. Works on Python 2 and 3. This is useful for GUI automation planning. + +The full documentation is at https://mouseinfo.readthedocs.io/en/latest/ + +Installation +------------ + +To install with pip, run: + + pip install mouseinfo + +Quickstart Guide +---------------- + +To run this application, enter the following into the terminal: + + python3 -m mouseinfo + +Or for Python 2, run: + + python -m mouseinfo + +Alternatively, to run it from the interactive shell or a Python program: + + >>> import mouseinfo + >>> mouseinfo.mouseInfo() + +The Mouse Info application displays the current XY coordinates of the mouse cursor, as well as the RGB color information of the pixel directly under the cursor. This can be useful for planning out GUI automation tests where the mouse is controlled by a script (such as a Python script with PyAutoGUI) to click on the screen at specific coordinates. + +The "Copy" buttons will copy this mouse information to the clipboard, while the "Log" buttons will add this mouse information to the text field in the application. The RGB color information is given as a comman-delimited, three-integer red, green, and blue values as decimals from 0 to 255. The hex values of the RGB value is also given. + +For practical use, you should set the keyboard focus on these buttons by tabbing over them. This leaves you free to move the mouse into position and then press space or Enter to log the current mouse coordinates/RGB value. + +The contents of the log text field can be saved by clicking "Save Log". This will automatically overwrite any file with the provided name. A screenshot can also be saved by clicking "Save Screenshot" + +Contribute +---------- + +If you'd like to contribute to MouseInfo, check out https://github.com/asweigart/mouseinfo diff --git a/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/SOURCES.txt b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/SOURCES.txt new file mode 100644 index 0000000..c9cb87e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/SOURCES.txt @@ -0,0 +1,11 @@ +MANIFEST.in +README.md +setup.cfg +setup.py +src/MouseInfo.egg-info/PKG-INFO +src/MouseInfo.egg-info/SOURCES.txt +src/MouseInfo.egg-info/dependency_links.txt +src/MouseInfo.egg-info/requires.txt +src/MouseInfo.egg-info/top_level.txt +src/mouseinfo/__init__.py +src/mouseinfo/__main__.py \ No newline at end of file diff --git a/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/dependency_links.txt b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/installed-files.txt b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/installed-files.txt new file mode 100644 index 0000000..36abbd6 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/installed-files.txt @@ -0,0 +1,9 @@ +../mouseinfo/__init__.py +../mouseinfo/__main__.py +../mouseinfo/__pycache__/__init__.cpython-310.pyc +../mouseinfo/__pycache__/__main__.cpython-310.pyc +PKG-INFO +SOURCES.txt +dependency_links.txt +requires.txt +top_level.txt diff --git a/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/requires.txt b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/requires.txt new file mode 100644 index 0000000..592efed --- /dev/null +++ b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/requires.txt @@ -0,0 +1,31 @@ +pyperclip + +[:platform_system == "Darwin"] +rubicon-objc + +[:platform_system == "Linux" and python_version < "3.0"] +Xlib + +[:platform_system == "Linux" and python_version >= "3.0"] +python3-Xlib + +[:python_version == "2.7"] +Pillow>=2.0.0 + +[:python_version == "3.2"] +Pillow<=3.4.2,>=2.0.0 + +[:python_version == "3.3"] +Pillow<=4.3.0,>=2.0.0 + +[:python_version == "3.4"] +Pillow<=5.4.1,>=2.5.0 + +[:python_version == "3.5"] +Pillow>=3.2.0 + +[:python_version == "3.6"] +Pillow>=4.0.0 + +[:python_version == "3.7"] +Pillow>=5.2.0 diff --git a/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/top_level.txt b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/top_level.txt new file mode 100644 index 0000000..a04104b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/MouseInfo-0.1.3-py3.10.egg-info/top_level.txt @@ -0,0 +1 @@ +mouseinfo diff --git a/myenv/lib/python3.10/site-packages/PIL/AvifImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/AvifImagePlugin.py new file mode 100644 index 0000000..366e0c8 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/AvifImagePlugin.py @@ -0,0 +1,291 @@ +from __future__ import annotations + +import os +from io import BytesIO +from typing import IO + +from . import ExifTags, Image, ImageFile + +try: + from . import _avif + + SUPPORTED = True +except ImportError: + SUPPORTED = False + +# Decoder options as module globals, until there is a way to pass parameters +# to Image.open (see https://github.com/python-pillow/Pillow/issues/569) +DECODE_CODEC_CHOICE = "auto" +DEFAULT_MAX_THREADS = 0 + + +def get_codec_version(codec_name: str) -> str | None: + versions = _avif.codec_versions() + for version in versions.split(", "): + if version.split(" [")[0] == codec_name: + return version.split(":")[-1].split(" ")[0] + return None + + +def _accept(prefix: bytes) -> bool | str: + if prefix[4:8] != b"ftyp": + return False + major_brand = prefix[8:12] + if major_brand in ( + # coding brands + b"avif", + b"avis", + # We accept files with AVIF container brands; we can't yet know if + # the ftyp box has the correct compatible brands, but if it doesn't + # then the plugin will raise a SyntaxError which Pillow will catch + # before moving on to the next plugin that accepts the file. + # + # Also, because this file might not actually be an AVIF file, we + # don't raise an error if AVIF support isn't properly compiled. + b"mif1", + b"msf1", + ): + if not SUPPORTED: + return ( + "image file could not be identified because AVIF support not installed" + ) + return True + return False + + +def _get_default_max_threads() -> int: + if DEFAULT_MAX_THREADS: + return DEFAULT_MAX_THREADS + if hasattr(os, "sched_getaffinity"): + return len(os.sched_getaffinity(0)) + else: + return os.cpu_count() or 1 + + +class AvifImageFile(ImageFile.ImageFile): + format = "AVIF" + format_description = "AVIF image" + __frame = -1 + + def _open(self) -> None: + if not SUPPORTED: + msg = "image file could not be opened because AVIF support not installed" + raise SyntaxError(msg) + + if DECODE_CODEC_CHOICE != "auto" and not _avif.decoder_codec_available( + DECODE_CODEC_CHOICE + ): + msg = "Invalid opening codec" + raise ValueError(msg) + self._decoder = _avif.AvifDecoder( + self.fp.read(), + DECODE_CODEC_CHOICE, + _get_default_max_threads(), + ) + + # Get info from decoder + self._size, self.n_frames, self._mode, icc, exif, exif_orientation, xmp = ( + self._decoder.get_info() + ) + self.is_animated = self.n_frames > 1 + + if icc: + self.info["icc_profile"] = icc + if xmp: + self.info["xmp"] = xmp + + if exif_orientation != 1 or exif: + exif_data = Image.Exif() + if exif: + exif_data.load(exif) + original_orientation = exif_data.get(ExifTags.Base.Orientation, 1) + else: + original_orientation = 1 + if exif_orientation != original_orientation: + exif_data[ExifTags.Base.Orientation] = exif_orientation + exif = exif_data.tobytes() + if exif: + self.info["exif"] = exif + self.seek(0) + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + + # Set tile + self.__frame = frame + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 0, self.mode)] + + def load(self) -> Image.core.PixelAccess | None: + if self.tile: + # We need to load the image data for this frame + data, timescale, pts_in_timescales, duration_in_timescales = ( + self._decoder.get_frame(self.__frame) + ) + self.info["timestamp"] = round(1000 * (pts_in_timescales / timescale)) + self.info["duration"] = round(1000 * (duration_in_timescales / timescale)) + + if self.fp and self._exclusive_fp: + self.fp.close() + self.fp = BytesIO(data) + + return super().load() + + def load_seek(self, pos: int) -> None: + pass + + def tell(self) -> int: + return self.__frame + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, save_all: bool = False +) -> None: + info = im.encoderinfo.copy() + if save_all: + append_images = list(info.get("append_images", [])) + else: + append_images = [] + + total = 0 + for ims in [im] + append_images: + total += getattr(ims, "n_frames", 1) + + quality = info.get("quality", 75) + if not isinstance(quality, int) or quality < 0 or quality > 100: + msg = "Invalid quality setting" + raise ValueError(msg) + + duration = info.get("duration", 0) + subsampling = info.get("subsampling", "4:2:0") + speed = info.get("speed", 6) + max_threads = info.get("max_threads", _get_default_max_threads()) + codec = info.get("codec", "auto") + if codec != "auto" and not _avif.encoder_codec_available(codec): + msg = "Invalid saving codec" + raise ValueError(msg) + range_ = info.get("range", "full") + tile_rows_log2 = info.get("tile_rows", 0) + tile_cols_log2 = info.get("tile_cols", 0) + alpha_premultiplied = bool(info.get("alpha_premultiplied", False)) + autotiling = bool(info.get("autotiling", tile_rows_log2 == tile_cols_log2 == 0)) + + icc_profile = info.get("icc_profile", im.info.get("icc_profile")) + exif_orientation = 1 + if exif := info.get("exif"): + if isinstance(exif, Image.Exif): + exif_data = exif + else: + exif_data = Image.Exif() + exif_data.load(exif) + if ExifTags.Base.Orientation in exif_data: + exif_orientation = exif_data.pop(ExifTags.Base.Orientation) + exif = exif_data.tobytes() if exif_data else b"" + elif isinstance(exif, Image.Exif): + exif = exif_data.tobytes() + + xmp = info.get("xmp") + + if isinstance(xmp, str): + xmp = xmp.encode("utf-8") + + advanced = info.get("advanced") + if advanced is not None: + if isinstance(advanced, dict): + advanced = advanced.items() + try: + advanced = tuple(advanced) + except TypeError: + invalid = True + else: + invalid = any(not isinstance(v, tuple) or len(v) != 2 for v in advanced) + if invalid: + msg = ( + "advanced codec options must be a dict of key-value string " + "pairs or a series of key-value two-tuples" + ) + raise ValueError(msg) + + # Setup the AVIF encoder + enc = _avif.AvifEncoder( + im.size, + subsampling, + quality, + speed, + max_threads, + codec, + range_, + tile_rows_log2, + tile_cols_log2, + alpha_premultiplied, + autotiling, + icc_profile or b"", + exif or b"", + exif_orientation, + xmp or b"", + advanced, + ) + + # Add each frame + frame_idx = 0 + frame_duration = 0 + cur_idx = im.tell() + is_single_frame = total == 1 + try: + for ims in [im] + append_images: + # Get number of frames in this image + nfr = getattr(ims, "n_frames", 1) + + for idx in range(nfr): + ims.seek(idx) + + # Make sure image mode is supported + frame = ims + rawmode = ims.mode + if ims.mode not in {"RGB", "RGBA"}: + rawmode = "RGBA" if ims.has_transparency_data else "RGB" + frame = ims.convert(rawmode) + + # Update frame duration + if isinstance(duration, (list, tuple)): + frame_duration = duration[frame_idx] + else: + frame_duration = duration + + # Append the frame to the animation encoder + enc.add( + frame.tobytes("raw", rawmode), + frame_duration, + frame.size, + rawmode, + is_single_frame, + ) + + # Update frame index + frame_idx += 1 + + if not save_all: + break + + finally: + im.seek(cur_idx) + + # Get the final output from the encoder + data = enc.finish() + if data is None: + msg = "cannot write file as AVIF (encoder returned None)" + raise OSError(msg) + + fp.write(data) + + +Image.register_open(AvifImageFile.format, AvifImageFile, _accept) +if SUPPORTED: + Image.register_save(AvifImageFile.format, _save) + Image.register_save_all(AvifImageFile.format, _save_all) + Image.register_extensions(AvifImageFile.format, [".avif", ".avifs"]) + Image.register_mime(AvifImageFile.format, "image/avif") diff --git a/myenv/lib/python3.10/site-packages/PIL/BdfFontFile.py b/myenv/lib/python3.10/site-packages/PIL/BdfFontFile.py new file mode 100644 index 0000000..f175e2f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/BdfFontFile.py @@ -0,0 +1,122 @@ +# +# The Python Imaging Library +# $Id$ +# +# bitmap distribution font (bdf) file parser +# +# history: +# 1996-05-16 fl created (as bdf2pil) +# 1997-08-25 fl converted to FontFile driver +# 2001-05-25 fl removed bogus __init__ call +# 2002-11-20 fl robustification (from Kevin Cazabon, Dmitry Vasiliev) +# 2003-04-22 fl more robustification (from Graham Dumpleton) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +""" +Parse X Bitmap Distribution Format (BDF) +""" +from __future__ import annotations + +from typing import BinaryIO + +from . import FontFile, Image + + +def bdf_char( + f: BinaryIO, +) -> ( + tuple[ + str, + int, + tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]], + Image.Image, + ] + | None +): + # skip to STARTCHAR + while True: + s = f.readline() + if not s: + return None + if s.startswith(b"STARTCHAR"): + break + id = s[9:].strip().decode("ascii") + + # load symbol properties + props = {} + while True: + s = f.readline() + if not s or s.startswith(b"BITMAP"): + break + i = s.find(b" ") + props[s[:i].decode("ascii")] = s[i + 1 : -1].decode("ascii") + + # load bitmap + bitmap = bytearray() + while True: + s = f.readline() + if not s or s.startswith(b"ENDCHAR"): + break + bitmap += s[:-1] + + # The word BBX + # followed by the width in x (BBw), height in y (BBh), + # and x and y displacement (BBxoff0, BByoff0) + # of the lower left corner from the origin of the character. + width, height, x_disp, y_disp = (int(p) for p in props["BBX"].split()) + + # The word DWIDTH + # followed by the width in x and y of the character in device pixels. + dwx, dwy = (int(p) for p in props["DWIDTH"].split()) + + bbox = ( + (dwx, dwy), + (x_disp, -y_disp - height, width + x_disp, -y_disp), + (0, 0, width, height), + ) + + try: + im = Image.frombytes("1", (width, height), bitmap, "hex", "1") + except ValueError: + # deal with zero-width characters + im = Image.new("1", (width, height)) + + return id, int(props["ENCODING"]), bbox, im + + +class BdfFontFile(FontFile.FontFile): + """Font file plugin for the X11 BDF format.""" + + def __init__(self, fp: BinaryIO) -> None: + super().__init__() + + s = fp.readline() + if not s.startswith(b"STARTFONT 2.1"): + msg = "not a valid BDF file" + raise SyntaxError(msg) + + props = {} + comments = [] + + while True: + s = fp.readline() + if not s or s.startswith(b"ENDPROPERTIES"): + break + i = s.find(b" ") + props[s[:i].decode("ascii")] = s[i + 1 : -1].decode("ascii") + if s[:i] in [b"COMMENT", b"COPYRIGHT"]: + if s.find(b"LogicalFontDescription") < 0: + comments.append(s[i + 1 : -1].decode("ascii")) + + while True: + c = bdf_char(fp) + if not c: + break + id, ch, (xy, dst, src), im = c + if 0 <= ch < len(self.glyph): + self.glyph[ch] = xy, dst, src, im diff --git a/myenv/lib/python3.10/site-packages/PIL/BlpImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/BlpImagePlugin.py new file mode 100644 index 0000000..f7be774 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/BlpImagePlugin.py @@ -0,0 +1,497 @@ +""" +Blizzard Mipmap Format (.blp) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +BLP1 files, used mostly in Warcraft III, are not fully supported. +All types of BLP2 files used in World of Warcraft are supported. + +The BLP file structure consists of a header, up to 16 mipmaps of the +texture + +Texture sizes must be powers of two, though the two dimensions do +not have to be equal; 512x256 is valid, but 512x200 is not. +The first mipmap (mipmap #0) is the full size image; each subsequent +mipmap halves both dimensions. The final mipmap should be 1x1. + +BLP files come in many different flavours: +* JPEG-compressed (type == 0) - only supported for BLP1. +* RAW images (type == 1, encoding == 1). Each mipmap is stored as an + array of 8-bit values, one per pixel, left to right, top to bottom. + Each value is an index to the palette. +* DXT-compressed (type == 1, encoding == 2): +- DXT1 compression is used if alpha_encoding == 0. + - An additional alpha bit is used if alpha_depth == 1. + - DXT3 compression is used if alpha_encoding == 1. + - DXT5 compression is used if alpha_encoding == 7. +""" + +from __future__ import annotations + +import abc +import os +import struct +from enum import IntEnum +from io import BytesIO +from typing import IO + +from . import Image, ImageFile + + +class Format(IntEnum): + JPEG = 0 + + +class Encoding(IntEnum): + UNCOMPRESSED = 1 + DXT = 2 + UNCOMPRESSED_RAW_BGRA = 3 + + +class AlphaEncoding(IntEnum): + DXT1 = 0 + DXT3 = 1 + DXT5 = 7 + + +def unpack_565(i: int) -> tuple[int, int, int]: + return ((i >> 11) & 0x1F) << 3, ((i >> 5) & 0x3F) << 2, (i & 0x1F) << 3 + + +def decode_dxt1( + data: bytes, alpha: bool = False +) -> tuple[bytearray, bytearray, bytearray, bytearray]: + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 8 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block_index in range(blocks): + # Decode next 8-byte block. + idx = block_index * 8 + color0, color1, bits = struct.unpack_from("> 2 + + a = 0xFF + if control == 0: + r, g, b = r0, g0, b0 + elif control == 1: + r, g, b = r1, g1, b1 + elif control == 2: + if color0 > color1: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + else: + r = (r0 + r1) // 2 + g = (g0 + g1) // 2 + b = (b0 + b1) // 2 + elif control == 3: + if color0 > color1: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + else: + r, g, b, a = 0, 0, 0, 0 + + if alpha: + ret[j].extend([r, g, b, a]) + else: + ret[j].extend([r, g, b]) + + return ret + + +def decode_dxt3(data: bytes) -> tuple[bytearray, bytearray, bytearray, bytearray]: + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block_index in range(blocks): + idx = block_index * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + bits = struct.unpack_from("<8B", block) + color0, color1 = struct.unpack_from(">= 4 + else: + high = True + a &= 0xF + a *= 17 # We get a value between 0 and 15 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +def decode_dxt5(data: bytes) -> tuple[bytearray, bytearray, bytearray, bytearray]: + """ + input: one "row" of data (i.e. will produce 4 * width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block_index in range(blocks): + idx = block_index * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + a0, a1 = struct.unpack_from("> alphacode_index) & 0x07 + elif alphacode_index == 15: + alphacode = (alphacode2 >> 15) | ((alphacode1 << 1) & 0x06) + else: # alphacode_index >= 18 and alphacode_index <= 45 + alphacode = (alphacode1 >> (alphacode_index - 16)) & 0x07 + + if alphacode == 0: + a = a0 + elif alphacode == 1: + a = a1 + elif a0 > a1: + a = ((8 - alphacode) * a0 + (alphacode - 1) * a1) // 7 + elif alphacode == 6: + a = 0 + elif alphacode == 7: + a = 255 + else: + a = ((6 - alphacode) * a0 + (alphacode - 1) * a1) // 5 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +class BLPFormatError(NotImplementedError): + pass + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith((b"BLP1", b"BLP2")) + + +class BlpImageFile(ImageFile.ImageFile): + """ + Blizzard Mipmap Format + """ + + format = "BLP" + format_description = "Blizzard Mipmap Format" + + def _open(self) -> None: + self.magic = self.fp.read(4) + if not _accept(self.magic): + msg = f"Bad BLP magic {repr(self.magic)}" + raise BLPFormatError(msg) + + compression = struct.unpack(" tuple[int, int]: + try: + self._read_header() + self._load() + except struct.error as e: + msg = "Truncated BLP file" + raise OSError(msg) from e + return -1, 0 + + @abc.abstractmethod + def _load(self) -> None: + pass + + def _read_header(self) -> 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 + return ImageFile._safe_read(self.fd, length) + + def _read_palette(self) -> list[tuple[int, int, int, int]]: + ret = [] + for i in range(256): + try: + b, g, r, a = struct.unpack("<4B", self._safe_read(4)) + except struct.error: + break + ret.append((b, g, r, a)) + return ret + + def _read_bgra( + self, palette: list[tuple[int, int, int, int]], alpha: bool + ) -> bytearray: + data = bytearray() + _data = BytesIO(self._safe_read(self._lengths[0])) + while True: + try: + (offset,) = struct.unpack(" None: + self._compression, self._encoding, alpha = self.args + + if self._compression == Format.JPEG: + self._decode_jpeg_stream() + + elif self._compression == 1: + if self._encoding in (4, 5): + palette = self._read_palette() + data = self._read_bgra(palette, alpha) + self.set_as_raw(data) + else: + msg = f"Unsupported BLP encoding {repr(self._encoding)}" + raise BLPFormatError(msg) + else: + msg = f"Unsupported BLP compression {repr(self._encoding)}" + raise BLPFormatError(msg) + + def _decode_jpeg_stream(self) -> None: + from .JpegImagePlugin import JpegImageFile + + (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._offsets[0]) + + if self._compression == 1: + # Uncompressed or DirectX compression + + if self._encoding == Encoding.UNCOMPRESSED: + data = self._read_bgra(palette, alpha) + + elif self._encoding == Encoding.DXT: + data = bytearray() + 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._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._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._alpha_encoding)}" + raise BLPFormatError(msg) + else: + msg = f"Unknown BLP encoding {repr(self._encoding)}" + raise BLPFormatError(msg) + + else: + msg = f"Unknown BLP compression {repr(self._compression)}" + raise BLPFormatError(msg) + + self.set_as_raw(data) + + +class BLPEncoder(ImageFile.PyEncoder): + _pushes_fd = True + + def _write_palette(self) -> bytes: + data = b"" + assert self.im is not None + palette = self.im.getpalette("RGBA", "RGBA") + for i in range(len(palette) // 4): + r, g, b, a = palette[i * 4 : (i + 1) * 4] + data += struct.pack("<4B", b, g, r, a) + while len(data) < 256 * 4: + data += b"\x00" * 4 + return data + + def encode(self, bufsize: int) -> tuple[int, int, bytes]: + palette_data = self._write_palette() + + offset = 20 + 16 * 4 * 2 + len(palette_data) + data = struct.pack("<16I", offset, *((0,) * 15)) + + assert self.im is not None + w, h = self.im.size + data += struct.pack("<16I", w * h, *((0,) * 15)) + + data += palette_data + + for y in range(h): + for x in range(w): + data += struct.pack(" None: + if im.mode != "P": + msg = "Unsupported BLP image mode" + raise ValueError(msg) + + magic = b"BLP1" if im.encoderinfo.get("blp_version") == "BLP1" else b"BLP2" + fp.write(magic) + + assert im.palette is not None + fp.write(struct.pack(" mode, rawmode + 1: ("P", "P;1"), + 4: ("P", "P;4"), + 8: ("P", "P"), + 16: ("RGB", "BGR;15"), + 24: ("RGB", "BGR"), + 32: ("RGB", "BGRX"), +} + +USE_RAW_ALPHA = False + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"BM") + + +def _dib_accept(prefix: bytes) -> bool: + return i32(prefix) in [12, 40, 52, 56, 64, 108, 124] + + +# ============================================================================= +# Image plugin for the Windows BMP format. +# ============================================================================= +class BmpImageFile(ImageFile.ImageFile): + """Image plugin for the Windows Bitmap format (BMP)""" + + # ------------------------------------------------------------- Description + format_description = "Windows Bitmap" + format = "BMP" + + # -------------------------------------------------- BMP Compression values + COMPRESSIONS = {"RAW": 0, "RLE8": 1, "RLE4": 2, "BITFIELDS": 3, "JPEG": 4, "PNG": 5} + for k, v in COMPRESSIONS.items(): + vars()[k] = v + + def _bitmap(self, header: int = 0, offset: int = 0) -> None: + """Read relevant info about the BMP""" + read, seek = self.fp.read, self.fp.seek + if header: + seek(header) + # read bmp header size @offset 14 (this is part of the header size) + file_info: dict[str, bool | int | tuple[int, ...]] = { + "header_size": i32(read(4)), + "direction": -1, + } + + # -------------------- If requested, read header at a specific position + # read the rest of the bmp header, without its size + assert isinstance(file_info["header_size"], int) + header_data = ImageFile._safe_read(self.fp, file_info["header_size"] - 4) + + # ------------------------------- Windows Bitmap v2, IBM OS/2 Bitmap v1 + # ----- This format has different offsets because of width/height types + # 12: BITMAPCOREHEADER/OS21XBITMAPHEADER + if file_info["header_size"] == 12: + file_info["width"] = i16(header_data, 0) + file_info["height"] = i16(header_data, 2) + file_info["planes"] = i16(header_data, 4) + file_info["bits"] = i16(header_data, 6) + file_info["compression"] = self.COMPRESSIONS["RAW"] + file_info["palette_padding"] = 3 + + # --------------------------------------------- Windows Bitmap v3 to v5 + # 40: BITMAPINFOHEADER + # 52: BITMAPV2HEADER + # 56: BITMAPV3HEADER + # 64: BITMAPCOREHEADER2/OS22XBITMAPHEADER + # 108: BITMAPV4HEADER + # 124: BITMAPV5HEADER + elif file_info["header_size"] in (40, 52, 56, 64, 108, 124): + file_info["y_flip"] = header_data[7] == 0xFF + file_info["direction"] = 1 if file_info["y_flip"] else -1 + file_info["width"] = i32(header_data, 0) + file_info["height"] = ( + i32(header_data, 4) + if not file_info["y_flip"] + else 2**32 - i32(header_data, 4) + ) + file_info["planes"] = i16(header_data, 8) + file_info["bits"] = i16(header_data, 10) + file_info["compression"] = i32(header_data, 12) + # byte size of pixel data + file_info["data_size"] = i32(header_data, 16) + file_info["pixels_per_meter"] = ( + i32(header_data, 20), + i32(header_data, 24), + ) + file_info["colors"] = i32(header_data, 28) + file_info["palette_padding"] = 4 + assert isinstance(file_info["pixels_per_meter"], tuple) + self.info["dpi"] = tuple(x / 39.3701 for x in file_info["pixels_per_meter"]) + if file_info["compression"] == self.COMPRESSIONS["BITFIELDS"]: + masks = ["r_mask", "g_mask", "b_mask"] + if len(header_data) >= 48: + if len(header_data) >= 52: + masks.append("a_mask") + else: + file_info["a_mask"] = 0x0 + for idx, mask in enumerate(masks): + file_info[mask] = i32(header_data, 36 + idx * 4) + else: + # 40 byte headers only have the three components in the + # bitfields masks, ref: + # https://msdn.microsoft.com/en-us/library/windows/desktop/dd183376(v=vs.85).aspx + # See also + # https://github.com/python-pillow/Pillow/issues/1293 + # There is a 4th component in the RGBQuad, in the alpha + # location, but it is listed as a reserved component, + # and it is not generally an alpha channel + file_info["a_mask"] = 0x0 + for mask in masks: + file_info[mask] = i32(read(4)) + assert isinstance(file_info["r_mask"], int) + assert isinstance(file_info["g_mask"], int) + assert isinstance(file_info["b_mask"], int) + assert isinstance(file_info["a_mask"], int) + file_info["rgb_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + ) + file_info["rgba_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + file_info["a_mask"], + ) + else: + msg = f"Unsupported BMP header type ({file_info['header_size']})" + raise OSError(msg) + + # ------------------ Special case : header is reported 40, which + # ---------------------- is shorter than real size for bpp >= 16 + assert isinstance(file_info["width"], int) + assert isinstance(file_info["height"], int) + self._size = file_info["width"], file_info["height"] + + # ------- If color count was not found in the header, compute from bits + assert isinstance(file_info["bits"], int) + file_info["colors"] = ( + file_info["colors"] + if file_info.get("colors", 0) + else (1 << file_info["bits"]) + ) + assert isinstance(file_info["colors"], int) + if offset == 14 + file_info["header_size"] and file_info["bits"] <= 8: + offset += 4 * file_info["colors"] + + # ---------------------- Check bit depth for unusual unsupported values + self._mode, raw_mode = BIT2MODE.get(file_info["bits"], ("", "")) + if not self.mode: + msg = f"Unsupported BMP pixel depth ({file_info['bits']})" + raise OSError(msg) + + # ---------------- Process BMP with Bitfields compression (not palette) + decoder_name = "raw" + if file_info["compression"] == self.COMPRESSIONS["BITFIELDS"]: + SUPPORTED: dict[int, list[tuple[int, ...]]] = { + 32: [ + (0xFF0000, 0xFF00, 0xFF, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0x0), + (0xFF000000, 0xFF00, 0xFF, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0xFF), + (0xFF, 0xFF00, 0xFF0000, 0xFF000000), + (0xFF0000, 0xFF00, 0xFF, 0xFF000000), + (0xFF000000, 0xFF00, 0xFF, 0xFF0000), + (0x0, 0x0, 0x0, 0x0), + ], + 24: [(0xFF0000, 0xFF00, 0xFF)], + 16: [(0xF800, 0x7E0, 0x1F), (0x7C00, 0x3E0, 0x1F)], + } + MASK_MODES = { + (32, (0xFF0000, 0xFF00, 0xFF, 0x0)): "BGRX", + (32, (0xFF000000, 0xFF0000, 0xFF00, 0x0)): "XBGR", + (32, (0xFF000000, 0xFF00, 0xFF, 0x0)): "BGXR", + (32, (0xFF000000, 0xFF0000, 0xFF00, 0xFF)): "ABGR", + (32, (0xFF, 0xFF00, 0xFF0000, 0xFF000000)): "RGBA", + (32, (0xFF0000, 0xFF00, 0xFF, 0xFF000000)): "BGRA", + (32, (0xFF000000, 0xFF00, 0xFF, 0xFF0000)): "BGAR", + (32, (0x0, 0x0, 0x0, 0x0)): "BGRA", + (24, (0xFF0000, 0xFF00, 0xFF)): "BGR", + (16, (0xF800, 0x7E0, 0x1F)): "BGR;16", + (16, (0x7C00, 0x3E0, 0x1F)): "BGR;15", + } + if file_info["bits"] in SUPPORTED: + if ( + file_info["bits"] == 32 + and file_info["rgba_mask"] in SUPPORTED[file_info["bits"]] + ): + assert isinstance(file_info["rgba_mask"], tuple) + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgba_mask"])] + self._mode = "RGBA" if "A" in raw_mode else self.mode + elif ( + file_info["bits"] in (24, 16) + and file_info["rgb_mask"] in SUPPORTED[file_info["bits"]] + ): + assert isinstance(file_info["rgb_mask"], tuple) + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgb_mask"])] + else: + msg = "Unsupported BMP bitfields layout" + raise OSError(msg) + else: + msg = "Unsupported BMP bitfields layout" + raise OSError(msg) + elif file_info["compression"] == self.COMPRESSIONS["RAW"]: + if file_info["bits"] == 32 and ( + header == 22 or USE_RAW_ALPHA # 32-bit .cur offset + ): + raw_mode, self._mode = "BGRA", "RGBA" + elif file_info["compression"] in ( + self.COMPRESSIONS["RLE8"], + self.COMPRESSIONS["RLE4"], + ): + decoder_name = "bmp_rle" + else: + msg = f"Unsupported BMP compression ({file_info['compression']})" + raise OSError(msg) + + # --------------- Once the header is processed, process the palette/LUT + if self.mode == "P": # Paletted for 1, 4 and 8 bit images + # ---------------------------------------------------- 1-bit images + if not (0 < file_info["colors"] <= 65536): + msg = f"Unsupported BMP Palette size ({file_info['colors']})" + raise OSError(msg) + else: + assert isinstance(file_info["palette_padding"], int) + padding = file_info["palette_padding"] + palette = read(padding * file_info["colors"]) + grayscale = True + indices = ( + (0, 255) + if file_info["colors"] == 2 + else list(range(file_info["colors"])) + ) + + # ----------------- Check if grayscale and ignore palette if so + for ind, val in enumerate(indices): + rgb = palette[ind * padding : ind * padding + 3] + if rgb != o8(val) * 3: + grayscale = False + + # ------- If all colors are gray, white or black, ditch palette + if grayscale: + self._mode = "1" if file_info["colors"] == 2 else "L" + raw_mode = self.mode + else: + self._mode = "P" + self.palette = ImagePalette.raw( + "BGRX" if padding == 4 else "BGR", palette + ) + + # ---------------------------- Finally set the tile data for the plugin + self.info["compression"] = file_info["compression"] + args: list[Any] = [raw_mode] + if decoder_name == "bmp_rle": + args.append(file_info["compression"] == self.COMPRESSIONS["RLE4"]) + else: + assert isinstance(file_info["width"], int) + args.append(((file_info["width"] * file_info["bits"] + 31) >> 3) & (~3)) + args.append(file_info["direction"]) + self.tile = [ + ImageFile._Tile( + decoder_name, + (0, 0, file_info["width"], file_info["height"]), + offset or self.fp.tell(), + tuple(args), + ) + ] + + def _open(self) -> None: + """Open file, check magic number and read header""" + # read 14 bytes: magic number, filesize, reserved, header final offset + head_data = self.fp.read(14) + # choke if the file does not have the required magic bytes + if not _accept(head_data): + msg = "Not a BMP file" + raise SyntaxError(msg) + # read the start position of the BMP image data (u32) + offset = i32(head_data, 10) + # load bitmap information (offset=raster info) + self._bitmap(offset=offset) + + +class BmpRleDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + rle4 = self.args[1] + data = bytearray() + x = 0 + dest_length = self.state.xsize * self.state.ysize + while len(data) < dest_length: + pixels = self.fd.read(1) + byte = self.fd.read(1) + if not pixels or not byte: + break + num_pixels = pixels[0] + if num_pixels: + # encoded mode + if x + num_pixels > self.state.xsize: + # Too much data for row + num_pixels = max(0, self.state.xsize - x) + if rle4: + first_pixel = o8(byte[0] >> 4) + second_pixel = o8(byte[0] & 0x0F) + for index in range(num_pixels): + if index % 2 == 0: + data += first_pixel + else: + data += second_pixel + else: + data += byte * num_pixels + x += num_pixels + else: + if byte[0] == 0: + # end of line + while len(data) % self.state.xsize != 0: + data += b"\x00" + x = 0 + elif byte[0] == 1: + # end of bitmap + break + elif byte[0] == 2: + # delta + bytes_read = self.fd.read(2) + if len(bytes_read) < 2: + break + right, up = self.fd.read(2) + data += b"\x00" * (right + up * self.state.xsize) + x = len(data) % self.state.xsize + else: + # absolute mode + if rle4: + # 2 pixels per byte + byte_count = byte[0] // 2 + bytes_read = self.fd.read(byte_count) + for byte_read in bytes_read: + data += o8(byte_read >> 4) + data += o8(byte_read & 0x0F) + else: + byte_count = byte[0] + bytes_read = self.fd.read(byte_count) + data += bytes_read + if len(bytes_read) < byte_count: + break + x += byte[0] + + # align to 16-bit word boundary + if self.fd.tell() % 2 != 0: + self.fd.seek(1, os.SEEK_CUR) + rawmode = "L" if self.mode == "L" else "P" + self.set_as_raw(bytes(data), rawmode, (0, self.args[-1])) + return -1, 0 + + +# ============================================================================= +# Image plugin for the DIB format (BMP alias) +# ============================================================================= +class DibImageFile(BmpImageFile): + format = "DIB" + format_description = "Windows Bitmap" + + def _open(self) -> None: + self._bitmap() + + +# +# -------------------------------------------------------------------- +# Write BMP file + + +SAVE = { + "1": ("1", 1, 2), + "L": ("L", 8, 256), + "P": ("P", 8, 256), + "RGB": ("BGR", 24, 0), + "RGBA": ("BGRA", 32, 0), +} + + +def _dib_save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, False) + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, bitmap_header: bool = True +) -> None: + try: + rawmode, bits, colors = SAVE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as BMP" + raise OSError(msg) from e + + info = im.encoderinfo + + dpi = info.get("dpi", (96, 96)) + + # 1 meter == 39.3701 inches + ppm = tuple(int(x * 39.3701 + 0.5) for x in dpi) + + stride = ((im.size[0] * bits + 7) // 8 + 3) & (~3) + header = 40 # or 64 for OS/2 version 2 + image = stride * im.size[1] + + if im.mode == "1": + palette = b"".join(o8(i) * 3 + b"\x00" for i in (0, 255)) + elif im.mode == "L": + palette = b"".join(o8(i) * 3 + b"\x00" for i in range(256)) + elif im.mode == "P": + palette = im.im.getpalette("RGB", "BGRX") + colors = len(palette) // 4 + else: + palette = None + + # bitmap header + if bitmap_header: + offset = 14 + header + colors * 4 + file_size = offset + image + if file_size > 2**32 - 1: + msg = "File size is too large for the BMP format" + raise ValueError(msg) + fp.write( + b"BM" # file type (magic) + + o32(file_size) # file size + + o32(0) # reserved + + o32(offset) # image data offset + ) + + # bitmap info header + fp.write( + o32(header) # info header size + + o32(im.size[0]) # width + + o32(im.size[1]) # height + + o16(1) # planes + + o16(bits) # depth + + o32(0) # compression (0=uncompressed) + + o32(image) # size of bitmap + + o32(ppm[0]) # resolution + + o32(ppm[1]) # resolution + + o32(colors) # colors used + + o32(colors) # colors important + ) + + fp.write(b"\0" * (header - 40)) # padding (for OS/2 format) + + if palette: + fp.write(palette) + + ImageFile._save( + im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, stride, -1))] + ) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(BmpImageFile.format, BmpImageFile, _accept) +Image.register_save(BmpImageFile.format, _save) + +Image.register_extension(BmpImageFile.format, ".bmp") + +Image.register_mime(BmpImageFile.format, "image/bmp") + +Image.register_decoder("bmp_rle", BmpRleDecoder) + +Image.register_open(DibImageFile.format, DibImageFile, _dib_accept) +Image.register_save(DibImageFile.format, _dib_save) + +Image.register_extension(DibImageFile.format, ".dib") + +Image.register_mime(DibImageFile.format, "image/bmp") diff --git a/myenv/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py new file mode 100644 index 0000000..8c5da14 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library +# $Id$ +# +# BUFR stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +from typing import IO + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific BUFR image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith((b"BUFR", b"ZCZC")) + + +class BufrStubImageFile(ImageFile.StubImageFile): + format = "BUFR" + format_description = "BUFR" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "Not a BUFR file" + raise SyntaxError(msg) + + self.fp.seek(-4, os.SEEK_CUR) + + # make something up + self._mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self) -> ImageFile.StubHandler | None: + return _handler + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "BUFR save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(BufrStubImageFile.format, BufrStubImageFile, _accept) +Image.register_save(BufrStubImageFile.format, _save) + +Image.register_extension(BufrStubImageFile.format, ".bufr") diff --git a/myenv/lib/python3.10/site-packages/PIL/ContainerIO.py b/myenv/lib/python3.10/site-packages/PIL/ContainerIO.py new file mode 100644 index 0000000..ec9e66c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ContainerIO.py @@ -0,0 +1,173 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a class to read from a container file +# +# History: +# 1995-06-18 fl Created +# 1995-09-07 fl Added readline(), readlines() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +from collections.abc import Iterable +from typing import IO, AnyStr, NoReturn + + +class ContainerIO(IO[AnyStr]): + """ + A file object that provides read access to a part of an existing + file (for example a TAR file). + """ + + def __init__(self, file: IO[AnyStr], offset: int, length: int) -> None: + """ + Create file object. + + :param file: Existing file. + :param offset: Start of region, in bytes. + :param length: Size of region, in bytes. + """ + self.fh: IO[AnyStr] = file + self.pos = 0 + self.offset = offset + self.length = length + self.fh.seek(offset) + + ## + # Always false. + + def isatty(self) -> bool: + return False + + def seekable(self) -> bool: + return True + + def seek(self, offset: int, mode: int = io.SEEK_SET) -> int: + """ + Move file pointer. + + :param offset: Offset in bytes. + :param mode: Starting position. Use 0 for beginning of region, 1 + for current offset, and 2 for end of region. You cannot move + the pointer outside the defined region. + :returns: Offset from start of region, in bytes. + """ + if mode == 1: + self.pos = self.pos + offset + elif mode == 2: + self.pos = self.length + offset + else: + self.pos = offset + # clamp + self.pos = max(0, min(self.pos, self.length)) + self.fh.seek(self.offset + self.pos) + return self.pos + + def tell(self) -> int: + """ + Get current file pointer. + + :returns: Offset from start of region, in bytes. + """ + return self.pos + + def readable(self) -> bool: + return True + + def read(self, n: int = -1) -> AnyStr: + """ + Read data. + + :param n: Number of bytes to read. If omitted, zero or negative, + read until end of region. + :returns: An 8-bit string. + """ + if n > 0: + n = min(n, self.length - self.pos) + else: + n = self.length - self.pos + if n <= 0: # EOF + return b"" if "b" in self.fh.mode else "" # type: ignore[return-value] + self.pos = self.pos + n + return self.fh.read(n) + + def readline(self, n: int = -1) -> AnyStr: + """ + Read a line of text. + + :param n: Number of bytes to read. If omitted, zero or negative, + read until end of line. + :returns: An 8-bit string. + """ + s: AnyStr = b"" if "b" in self.fh.mode else "" # type: ignore[assignment] + newline_character = b"\n" if "b" in self.fh.mode else "\n" + while True: + c = self.read(1) + if not c: + break + s = s + c + if c == newline_character or len(s) == n: + break + return s + + def readlines(self, n: int | None = -1) -> list[AnyStr]: + """ + Read multiple lines of text. + + :param n: Number of lines to read. If omitted, zero, negative or None, + read until end of region. + :returns: A list of 8-bit strings. + """ + lines = [] + while True: + s = self.readline() + if not s: + break + lines.append(s) + if len(lines) == n: + break + return lines + + def writable(self) -> bool: + return False + + def write(self, b: AnyStr) -> NoReturn: + raise NotImplementedError() + + def writelines(self, lines: Iterable[AnyStr]) -> NoReturn: + raise NotImplementedError() + + def truncate(self, size: int | None = None) -> int: + raise NotImplementedError() + + def __enter__(self) -> ContainerIO[AnyStr]: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def __iter__(self) -> ContainerIO[AnyStr]: + return self + + def __next__(self) -> AnyStr: + line = self.readline() + if not line: + msg = "end of region" + raise StopIteration(msg) + return line + + def fileno(self) -> int: + return self.fh.fileno() + + def flush(self) -> None: + self.fh.flush() + + def close(self) -> None: + self.fh.close() diff --git a/myenv/lib/python3.10/site-packages/PIL/CurImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/CurImagePlugin.py new file mode 100644 index 0000000..b817dbc --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/CurImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Cursor support for PIL +# +# notes: +# uses BmpImagePlugin.py to read the bitmap data. +# +# history: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import BmpImagePlugin, Image, ImageFile +from ._binary import i16le as i16 +from ._binary import i32le as i32 + +# +# -------------------------------------------------------------------- + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"\0\0\2\0") + + +## +# Image plugin for Windows Cursor files. + + +class CurImageFile(BmpImagePlugin.BmpImageFile): + format = "CUR" + format_description = "Windows Cursor" + + def _open(self) -> None: + offset = self.fp.tell() + + # check magic + s = self.fp.read(6) + if not _accept(s): + msg = "not a CUR file" + raise SyntaxError(msg) + + # pick the largest cursor in the file + m = b"" + for i in range(i16(s, 4)): + s = self.fp.read(16) + if not m: + m = s + elif s[0] > m[0] and s[1] > m[1]: + m = s + if not m: + msg = "No cursors were found" + raise TypeError(msg) + + # load as bitmap + self._bitmap(i32(m, 12) + offset) + + # patch up the bitmap height + self._size = self.size[0], self.size[1] // 2 + d, e, o, a = self.tile[0] + self.tile[0] = ImageFile._Tile(d, (0, 0) + self.size, o, a) + + +# +# -------------------------------------------------------------------- + +Image.register_open(CurImageFile.format, CurImageFile, _accept) + +Image.register_extension(CurImageFile.format, ".cur") diff --git a/myenv/lib/python3.10/site-packages/PIL/DcxImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/DcxImagePlugin.py new file mode 100644 index 0000000..aea661b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/DcxImagePlugin.py @@ -0,0 +1,83 @@ +# +# The Python Imaging Library. +# $Id$ +# +# DCX file handling +# +# DCX is a container file format defined by Intel, commonly used +# for fax applications. Each DCX file consists of a directory +# (a list of file offsets) followed by a set of (usually 1-bit) +# PCX files. +# +# History: +# 1995-09-09 fl Created +# 1996-03-20 fl Properly derived from PcxImageFile. +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2002-07-30 fl Fixed file handling +# +# Copyright (c) 1997-98 by Secret Labs AB. +# Copyright (c) 1995-96 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image +from ._binary import i32le as i32 +from ._util import DeferredError +from .PcxImagePlugin import PcxImageFile + +MAGIC = 0x3ADE68B1 # QUIZ: what's this value, then? + + +def _accept(prefix: bytes) -> bool: + return len(prefix) >= 4 and i32(prefix) == MAGIC + + +## +# Image plugin for the Intel DCX format. + + +class DcxImageFile(PcxImageFile): + format = "DCX" + format_description = "Intel DCX" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # Header + s = self.fp.read(4) + if not _accept(s): + msg = "not a DCX file" + raise SyntaxError(msg) + + # Component directory + self._offset = [] + for i in range(1024): + offset = i32(self.fp.read(4)) + if not offset: + break + self._offset.append(offset) + + self._fp = self.fp + self.frame = -1 + self.n_frames = len(self._offset) + self.is_animated = self.n_frames > 1 + self.seek(0) + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if isinstance(self._fp, DeferredError): + raise self._fp.ex + self.frame = frame + self.fp = self._fp + self.fp.seek(self._offset[frame]) + PcxImageFile._open(self) + + def tell(self) -> int: + return self.frame + + +Image.register_open(DcxImageFile.format, DcxImageFile, _accept) + +Image.register_extension(DcxImageFile.format, ".dcx") diff --git a/myenv/lib/python3.10/site-packages/PIL/DdsImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/DdsImagePlugin.py new file mode 100644 index 0000000..f9ade18 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/DdsImagePlugin.py @@ -0,0 +1,624 @@ +""" +A Pillow plugin for .dds files (S3TC-compressed aka DXTC) +Jerome Leclanche + +Documentation: +https://web.archive.org/web/20170802060935/http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: +https://creativecommons.org/publicdomain/zero/1.0/ +""" + +from __future__ import annotations + +import io +import struct +import sys +from enum import IntEnum, IntFlag +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i32le as i32 +from ._binary import o8 +from ._binary import o32le as o32 + +# Magic ("DDS ") +DDS_MAGIC = 0x20534444 + + +# DDS flags +class DDSD(IntFlag): + CAPS = 0x1 + HEIGHT = 0x2 + WIDTH = 0x4 + PITCH = 0x8 + PIXELFORMAT = 0x1000 + MIPMAPCOUNT = 0x20000 + LINEARSIZE = 0x80000 + DEPTH = 0x800000 + + +# DDS caps +class DDSCAPS(IntFlag): + COMPLEX = 0x8 + TEXTURE = 0x1000 + MIPMAP = 0x400000 + + +class DDSCAPS2(IntFlag): + CUBEMAP = 0x200 + CUBEMAP_POSITIVEX = 0x400 + CUBEMAP_NEGATIVEX = 0x800 + CUBEMAP_POSITIVEY = 0x1000 + CUBEMAP_NEGATIVEY = 0x2000 + CUBEMAP_POSITIVEZ = 0x4000 + CUBEMAP_NEGATIVEZ = 0x8000 + VOLUME = 0x200000 + + +# Pixel Format +class DDPF(IntFlag): + ALPHAPIXELS = 0x1 + ALPHA = 0x2 + FOURCC = 0x4 + PALETTEINDEXED8 = 0x20 + RGB = 0x40 + LUMINANCE = 0x20000 + + +# dxgiformat.h +class DXGI_FORMAT(IntEnum): + UNKNOWN = 0 + R32G32B32A32_TYPELESS = 1 + R32G32B32A32_FLOAT = 2 + R32G32B32A32_UINT = 3 + R32G32B32A32_SINT = 4 + R32G32B32_TYPELESS = 5 + R32G32B32_FLOAT = 6 + R32G32B32_UINT = 7 + R32G32B32_SINT = 8 + R16G16B16A16_TYPELESS = 9 + R16G16B16A16_FLOAT = 10 + R16G16B16A16_UNORM = 11 + R16G16B16A16_UINT = 12 + R16G16B16A16_SNORM = 13 + R16G16B16A16_SINT = 14 + R32G32_TYPELESS = 15 + R32G32_FLOAT = 16 + R32G32_UINT = 17 + R32G32_SINT = 18 + R32G8X24_TYPELESS = 19 + D32_FLOAT_S8X24_UINT = 20 + R32_FLOAT_X8X24_TYPELESS = 21 + X32_TYPELESS_G8X24_UINT = 22 + R10G10B10A2_TYPELESS = 23 + R10G10B10A2_UNORM = 24 + R10G10B10A2_UINT = 25 + R11G11B10_FLOAT = 26 + R8G8B8A8_TYPELESS = 27 + R8G8B8A8_UNORM = 28 + R8G8B8A8_UNORM_SRGB = 29 + R8G8B8A8_UINT = 30 + R8G8B8A8_SNORM = 31 + R8G8B8A8_SINT = 32 + R16G16_TYPELESS = 33 + R16G16_FLOAT = 34 + R16G16_UNORM = 35 + R16G16_UINT = 36 + R16G16_SNORM = 37 + R16G16_SINT = 38 + R32_TYPELESS = 39 + D32_FLOAT = 40 + R32_FLOAT = 41 + R32_UINT = 42 + R32_SINT = 43 + R24G8_TYPELESS = 44 + D24_UNORM_S8_UINT = 45 + R24_UNORM_X8_TYPELESS = 46 + X24_TYPELESS_G8_UINT = 47 + R8G8_TYPELESS = 48 + R8G8_UNORM = 49 + R8G8_UINT = 50 + R8G8_SNORM = 51 + R8G8_SINT = 52 + R16_TYPELESS = 53 + R16_FLOAT = 54 + D16_UNORM = 55 + R16_UNORM = 56 + R16_UINT = 57 + R16_SNORM = 58 + R16_SINT = 59 + R8_TYPELESS = 60 + R8_UNORM = 61 + R8_UINT = 62 + R8_SNORM = 63 + R8_SINT = 64 + A8_UNORM = 65 + R1_UNORM = 66 + R9G9B9E5_SHAREDEXP = 67 + R8G8_B8G8_UNORM = 68 + G8R8_G8B8_UNORM = 69 + BC1_TYPELESS = 70 + BC1_UNORM = 71 + BC1_UNORM_SRGB = 72 + BC2_TYPELESS = 73 + BC2_UNORM = 74 + BC2_UNORM_SRGB = 75 + BC3_TYPELESS = 76 + BC3_UNORM = 77 + BC3_UNORM_SRGB = 78 + BC4_TYPELESS = 79 + BC4_UNORM = 80 + BC4_SNORM = 81 + BC5_TYPELESS = 82 + BC5_UNORM = 83 + BC5_SNORM = 84 + B5G6R5_UNORM = 85 + B5G5R5A1_UNORM = 86 + B8G8R8A8_UNORM = 87 + B8G8R8X8_UNORM = 88 + R10G10B10_XR_BIAS_A2_UNORM = 89 + B8G8R8A8_TYPELESS = 90 + B8G8R8A8_UNORM_SRGB = 91 + B8G8R8X8_TYPELESS = 92 + B8G8R8X8_UNORM_SRGB = 93 + BC6H_TYPELESS = 94 + BC6H_UF16 = 95 + BC6H_SF16 = 96 + BC7_TYPELESS = 97 + BC7_UNORM = 98 + BC7_UNORM_SRGB = 99 + AYUV = 100 + Y410 = 101 + Y416 = 102 + NV12 = 103 + P010 = 104 + P016 = 105 + OPAQUE_420 = 106 + YUY2 = 107 + Y210 = 108 + Y216 = 109 + NV11 = 110 + AI44 = 111 + IA44 = 112 + P8 = 113 + A8P8 = 114 + B4G4R4A4_UNORM = 115 + P208 = 130 + V208 = 131 + V408 = 132 + SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189 + SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190 + + +class D3DFMT(IntEnum): + UNKNOWN = 0 + R8G8B8 = 20 + A8R8G8B8 = 21 + X8R8G8B8 = 22 + R5G6B5 = 23 + X1R5G5B5 = 24 + A1R5G5B5 = 25 + A4R4G4B4 = 26 + R3G3B2 = 27 + A8 = 28 + A8R3G3B2 = 29 + X4R4G4B4 = 30 + A2B10G10R10 = 31 + A8B8G8R8 = 32 + X8B8G8R8 = 33 + G16R16 = 34 + A2R10G10B10 = 35 + A16B16G16R16 = 36 + A8P8 = 40 + P8 = 41 + L8 = 50 + A8L8 = 51 + A4L4 = 52 + V8U8 = 60 + L6V5U5 = 61 + X8L8V8U8 = 62 + Q8W8V8U8 = 63 + V16U16 = 64 + A2W10V10U10 = 67 + D16_LOCKABLE = 70 + D32 = 71 + D15S1 = 73 + D24S8 = 75 + D24X8 = 77 + D24X4S4 = 79 + D16 = 80 + D32F_LOCKABLE = 82 + D24FS8 = 83 + D32_LOCKABLE = 84 + S8_LOCKABLE = 85 + L16 = 81 + VERTEXDATA = 100 + INDEX16 = 101 + INDEX32 = 102 + Q16W16V16U16 = 110 + R16F = 111 + G16R16F = 112 + A16B16G16R16F = 113 + R32F = 114 + G32R32F = 115 + A32B32G32R32F = 116 + CxV8U8 = 117 + A1 = 118 + A2B10G10R10_XR_BIAS = 119 + BINARYBUFFER = 199 + + UYVY = i32(b"UYVY") + R8G8_B8G8 = i32(b"RGBG") + YUY2 = i32(b"YUY2") + G8R8_G8B8 = i32(b"GRGB") + DXT1 = i32(b"DXT1") + DXT2 = i32(b"DXT2") + DXT3 = i32(b"DXT3") + DXT4 = i32(b"DXT4") + DXT5 = i32(b"DXT5") + DX10 = i32(b"DX10") + BC4S = i32(b"BC4S") + BC4U = i32(b"BC4U") + BC5S = i32(b"BC5S") + BC5U = i32(b"BC5U") + ATI1 = i32(b"ATI1") + ATI2 = i32(b"ATI2") + MULTI2_ARGB8 = i32(b"MET1") + + +# Backward compatibility layer +module = sys.modules[__name__] +for item in DDSD: + assert item.name is not None + setattr(module, f"DDSD_{item.name}", item.value) +for item1 in DDSCAPS: + assert item1.name is not None + setattr(module, f"DDSCAPS_{item1.name}", item1.value) +for item2 in DDSCAPS2: + assert item2.name is not None + setattr(module, f"DDSCAPS2_{item2.name}", item2.value) +for item3 in DDPF: + assert item3.name is not None + setattr(module, f"DDPF_{item3.name}", item3.value) + +DDS_FOURCC = DDPF.FOURCC +DDS_RGB = DDPF.RGB +DDS_RGBA = DDPF.RGB | DDPF.ALPHAPIXELS +DDS_LUMINANCE = DDPF.LUMINANCE +DDS_LUMINANCEA = DDPF.LUMINANCE | DDPF.ALPHAPIXELS +DDS_ALPHA = DDPF.ALPHA +DDS_PAL8 = DDPF.PALETTEINDEXED8 + +DDS_HEADER_FLAGS_TEXTURE = DDSD.CAPS | DDSD.HEIGHT | DDSD.WIDTH | DDSD.PIXELFORMAT +DDS_HEADER_FLAGS_MIPMAP = DDSD.MIPMAPCOUNT +DDS_HEADER_FLAGS_VOLUME = DDSD.DEPTH +DDS_HEADER_FLAGS_PITCH = DDSD.PITCH +DDS_HEADER_FLAGS_LINEARSIZE = DDSD.LINEARSIZE + +DDS_HEIGHT = DDSD.HEIGHT +DDS_WIDTH = DDSD.WIDTH + +DDS_SURFACE_FLAGS_TEXTURE = DDSCAPS.TEXTURE +DDS_SURFACE_FLAGS_MIPMAP = DDSCAPS.COMPLEX | DDSCAPS.MIPMAP +DDS_SURFACE_FLAGS_CUBEMAP = DDSCAPS.COMPLEX + +DDS_CUBEMAP_POSITIVEX = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_POSITIVEX +DDS_CUBEMAP_NEGATIVEX = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_NEGATIVEX +DDS_CUBEMAP_POSITIVEY = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_POSITIVEY +DDS_CUBEMAP_NEGATIVEY = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_NEGATIVEY +DDS_CUBEMAP_POSITIVEZ = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_POSITIVEZ +DDS_CUBEMAP_NEGATIVEZ = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_NEGATIVEZ + +DXT1_FOURCC = D3DFMT.DXT1 +DXT3_FOURCC = D3DFMT.DXT3 +DXT5_FOURCC = D3DFMT.DXT5 + +DXGI_FORMAT_R8G8B8A8_TYPELESS = DXGI_FORMAT.R8G8B8A8_TYPELESS +DXGI_FORMAT_R8G8B8A8_UNORM = DXGI_FORMAT.R8G8B8A8_UNORM +DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = DXGI_FORMAT.R8G8B8A8_UNORM_SRGB +DXGI_FORMAT_BC5_TYPELESS = DXGI_FORMAT.BC5_TYPELESS +DXGI_FORMAT_BC5_UNORM = DXGI_FORMAT.BC5_UNORM +DXGI_FORMAT_BC5_SNORM = DXGI_FORMAT.BC5_SNORM +DXGI_FORMAT_BC6H_UF16 = DXGI_FORMAT.BC6H_UF16 +DXGI_FORMAT_BC6H_SF16 = DXGI_FORMAT.BC6H_SF16 +DXGI_FORMAT_BC7_TYPELESS = DXGI_FORMAT.BC7_TYPELESS +DXGI_FORMAT_BC7_UNORM = DXGI_FORMAT.BC7_UNORM +DXGI_FORMAT_BC7_UNORM_SRGB = DXGI_FORMAT.BC7_UNORM_SRGB + + +class DdsImageFile(ImageFile.ImageFile): + format = "DDS" + format_description = "DirectDraw Surface" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "not a DDS file" + raise SyntaxError(msg) + (header_size,) = struct.unpack(" None: + pass + + +class DdsRgbDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + bitcount, masks = self.args + + # Some masks will be padded with zeros, e.g. R 0b11 G 0b1100 + # Calculate how many zeros each mask is padded with + mask_offsets = [] + # And the maximum value of each channel without the padding + mask_totals = [] + for mask in masks: + offset = 0 + if mask != 0: + while mask >> (offset + 1) << (offset + 1) == mask: + offset += 1 + mask_offsets.append(offset) + mask_totals.append(mask >> offset) + + data = bytearray() + bytecount = bitcount // 8 + dest_length = self.state.xsize * self.state.ysize * len(masks) + while len(data) < dest_length: + value = int.from_bytes(self.fd.read(bytecount), "little") + for i, mask in enumerate(masks): + masked_value = value & mask + # Remove the zero padding, and scale it to 8 bits + data += o8( + int(((masked_value >> mask_offsets[i]) / mask_totals[i]) * 255) + ) + self.set_as_raw(data) + return -1, 0 + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode not in ("RGB", "RGBA", "L", "LA"): + msg = f"cannot write mode {im.mode} as DDS" + raise OSError(msg) + + flags = DDSD.CAPS | DDSD.HEIGHT | DDSD.WIDTH | DDSD.PIXELFORMAT + bitcount = len(im.getbands()) * 8 + pixel_format = im.encoderinfo.get("pixel_format") + args: tuple[int] | str + if pixel_format: + codec_name = "bcn" + flags |= DDSD.LINEARSIZE + pitch = (im.width + 3) * 4 + rgba_mask = [0, 0, 0, 0] + pixel_flags = DDPF.FOURCC + if pixel_format == "DXT1": + fourcc = D3DFMT.DXT1 + args = (1,) + elif pixel_format == "DXT3": + fourcc = D3DFMT.DXT3 + args = (2,) + elif pixel_format == "DXT5": + fourcc = D3DFMT.DXT5 + args = (3,) + else: + fourcc = D3DFMT.DX10 + if pixel_format == "BC2": + args = (2,) + dxgi_format = DXGI_FORMAT.BC2_TYPELESS + elif pixel_format == "BC3": + args = (3,) + dxgi_format = DXGI_FORMAT.BC3_TYPELESS + elif pixel_format == "BC5": + args = (5,) + dxgi_format = DXGI_FORMAT.BC5_TYPELESS + if im.mode != "RGB": + msg = "only RGB mode can be written as BC5" + raise OSError(msg) + else: + msg = f"cannot write pixel format {pixel_format}" + raise OSError(msg) + else: + codec_name = "raw" + flags |= DDSD.PITCH + pitch = (im.width * bitcount + 7) // 8 + + alpha = im.mode[-1] == "A" + if im.mode[0] == "L": + pixel_flags = DDPF.LUMINANCE + args = im.mode + if alpha: + rgba_mask = [0x000000FF, 0x000000FF, 0x000000FF] + else: + rgba_mask = [0xFF000000, 0xFF000000, 0xFF000000] + else: + pixel_flags = DDPF.RGB + args = im.mode[::-1] + rgba_mask = [0x00FF0000, 0x0000FF00, 0x000000FF] + + if alpha: + r, g, b, a = im.split() + im = Image.merge("RGBA", (a, r, g, b)) + if alpha: + pixel_flags |= DDPF.ALPHAPIXELS + rgba_mask.append(0xFF000000 if alpha else 0) + + fourcc = D3DFMT.UNKNOWN + fp.write( + o32(DDS_MAGIC) + + struct.pack( + "<7I", + 124, # header size + flags, # flags + im.height, + im.width, + pitch, + 0, # depth + 0, # mipmaps + ) + + struct.pack("11I", *((0,) * 11)) # reserved + # pfsize, pfflags, fourcc, bitcount + + struct.pack("<4I", 32, pixel_flags, fourcc, bitcount) + + struct.pack("<4I", *rgba_mask) # dwRGBABitMask + + struct.pack("<5I", DDSCAPS.TEXTURE, 0, 0, 0, 0) + ) + if fourcc == D3DFMT.DX10: + fp.write( + # dxgi_format, 2D resource, misc, array size, straight alpha + struct.pack("<5I", dxgi_format, 3, 0, 0, 1) + ) + ImageFile._save(im, fp, [ImageFile._Tile(codec_name, (0, 0) + im.size, 0, args)]) + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"DDS ") + + +Image.register_open(DdsImageFile.format, DdsImageFile, _accept) +Image.register_decoder("dds_rgb", DdsRgbDecoder) +Image.register_save(DdsImageFile.format, _save) +Image.register_extension(DdsImageFile.format, ".dds") diff --git a/myenv/lib/python3.10/site-packages/PIL/EpsImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/EpsImagePlugin.py new file mode 100644 index 0000000..5e2ddad --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/EpsImagePlugin.py @@ -0,0 +1,476 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EPS file handling +# +# History: +# 1995-09-01 fl Created (0.1) +# 1996-05-18 fl Don't choke on "atend" fields, Ghostscript interface (0.2) +# 1996-08-22 fl Don't choke on floating point BoundingBox values +# 1996-08-23 fl Handle files from Macintosh (0.3) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2003-09-07 fl Check gs.close status (from Federico Di Gregorio) (0.5) +# 2014-05-07 e Handling of EPS with binary preview and fixed resolution +# resizing +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import re +import subprocess +import sys +import tempfile +from typing import IO + +from . import Image, ImageFile +from ._binary import i32le as i32 + +# -------------------------------------------------------------------- + + +split = re.compile(r"^%%([^:]*):[ \t]*(.*)[ \t]*$") +field = re.compile(r"^%[%!\w]([^:]*)[ \t]*$") + +gs_binary: str | bool | None = None +gs_windows_binary = None + + +def has_ghostscript() -> bool: + global gs_binary, gs_windows_binary + if gs_binary is None: + if sys.platform.startswith("win"): + if gs_windows_binary is None: + import shutil + + for binary in ("gswin32c", "gswin64c", "gs"): + if shutil.which(binary) is not None: + gs_windows_binary = binary + break + else: + gs_windows_binary = False + gs_binary = gs_windows_binary + else: + try: + subprocess.check_call(["gs", "--version"], stdout=subprocess.DEVNULL) + gs_binary = "gs" + except OSError: + gs_binary = False + return gs_binary is not False + + +def Ghostscript( + tile: list[ImageFile._Tile], + size: tuple[int, int], + fp: IO[bytes], + scale: int = 1, + transparency: bool = False, +) -> Image.core.ImagingCore: + """Render an image using Ghostscript""" + global gs_binary + if not has_ghostscript(): + msg = "Unable to locate Ghostscript on paths" + raise OSError(msg) + assert isinstance(gs_binary, str) + + # Unpack decoder tile + args = tile[0].args + assert isinstance(args, tuple) + length, bbox = args + + # Hack to support hi-res rendering + scale = int(scale) or 1 + width = size[0] * scale + height = size[1] * scale + # resolution is dependent on bbox and size + res_x = 72.0 * width / (bbox[2] - bbox[0]) + res_y = 72.0 * height / (bbox[3] - bbox[1]) + + out_fd, outfile = tempfile.mkstemp() + os.close(out_fd) + + infile_temp = None + if hasattr(fp, "name") and os.path.exists(fp.name): + infile = fp.name + else: + in_fd, infile_temp = tempfile.mkstemp() + os.close(in_fd) + infile = infile_temp + + # Ignore length and offset! + # Ghostscript can read it + # Copy whole file to read in Ghostscript + with open(infile_temp, "wb") as f: + # fetch length of fp + fp.seek(0, io.SEEK_END) + fsize = fp.tell() + # ensure start position + # go back + fp.seek(0) + lengthfile = fsize + while lengthfile > 0: + s = fp.read(min(lengthfile, 100 * 1024)) + if not s: + break + lengthfile -= len(s) + f.write(s) + + if transparency: + # "RGBA" + device = "pngalpha" + else: + # "pnmraw" automatically chooses between + # PBM ("1"), PGM ("L"), and PPM ("RGB"). + device = "pnmraw" + + # Build Ghostscript command + command = [ + gs_binary, + "-q", # quiet mode + f"-g{width:d}x{height:d}", # set output geometry (pixels) + f"-r{res_x:f}x{res_y:f}", # set input DPI (dots per inch) + "-dBATCH", # exit after processing + "-dNOPAUSE", # don't pause between pages + "-dSAFER", # safe mode + f"-sDEVICE={device}", + f"-sOutputFile={outfile}", # output file + # adjust for image origin + "-c", + f"{-bbox[0]} {-bbox[1]} translate", + "-f", + infile, # input file + # showpage (see https://bugs.ghostscript.com/show_bug.cgi?id=698272) + "-c", + "showpage", + ] + + # push data through Ghostscript + try: + startupinfo = None + if sys.platform.startswith("win"): + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + subprocess.check_call(command, startupinfo=startupinfo) + with Image.open(outfile) as out_im: + out_im.load() + return out_im.im.copy() + finally: + try: + os.unlink(outfile) + if infile_temp: + os.unlink(infile_temp) + except OSError: + pass + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"%!PS") or ( + len(prefix) >= 4 and i32(prefix) == 0xC6D3D0C5 + ) + + +## +# Image plugin for Encapsulated PostScript. This plugin supports only +# a few variants of this format. + + +class EpsImageFile(ImageFile.ImageFile): + """EPS File Parser for the Python Imaging Library""" + + format = "EPS" + format_description = "Encapsulated Postscript" + + mode_map = {1: "L", 2: "LAB", 3: "RGB", 4: "CMYK"} + + def _open(self) -> None: + (length, offset) = self._find_offset(self.fp) + + # go to offset - start of "%!PS" + self.fp.seek(offset) + + self._mode = "RGB" + + # When reading header comments, the first comment is used. + # When reading trailer comments, the last comment is used. + bounding_box: list[int] | None = None + imagedata_size: tuple[int, int] | None = None + + byte_arr = bytearray(255) + bytes_mv = memoryview(byte_arr) + bytes_read = 0 + reading_header_comments = True + reading_trailer_comments = False + trailer_reached = False + + def check_required_header_comments() -> None: + """ + The EPS specification requires that some headers exist. + This should be checked when the header comments formally end, + when image data starts, or when the file ends, whichever comes first. + """ + if "PS-Adobe" not in self.info: + msg = 'EPS header missing "%!PS-Adobe" comment' + raise SyntaxError(msg) + if "BoundingBox" not in self.info: + msg = 'EPS header missing "%%BoundingBox" comment' + raise SyntaxError(msg) + + def read_comment(s: str) -> bool: + nonlocal bounding_box, reading_trailer_comments + try: + m = split.match(s) + except re.error as e: + msg = "not an EPS file" + raise SyntaxError(msg) from e + + if not m: + return False + + k, v = m.group(1, 2) + self.info[k] = v + if k == "BoundingBox": + if v == "(atend)": + reading_trailer_comments = True + elif not bounding_box or (trailer_reached and reading_trailer_comments): + try: + # Note: The DSC spec says that BoundingBox + # fields should be integers, but some drivers + # put floating point values there anyway. + bounding_box = [int(float(i)) for i in v.split()] + except Exception: + pass + return True + + while True: + byte = self.fp.read(1) + if byte == b"": + # if we didn't read a byte we must be at the end of the file + if bytes_read == 0: + if reading_header_comments: + check_required_header_comments() + break + elif byte in b"\r\n": + # if we read a line ending character, ignore it and parse what + # we have already read. if we haven't read any other characters, + # continue reading + if bytes_read == 0: + continue + else: + # ASCII/hexadecimal lines in an EPS file must not exceed + # 255 characters, not including line ending characters + if bytes_read >= 255: + # only enforce this for lines starting with a "%", + # otherwise assume it's binary data + if byte_arr[0] == ord("%"): + msg = "not an EPS file" + raise SyntaxError(msg) + else: + if reading_header_comments: + check_required_header_comments() + reading_header_comments = False + # reset bytes_read so we can keep reading + # data until the end of the line + bytes_read = 0 + byte_arr[bytes_read] = byte[0] + bytes_read += 1 + continue + + if reading_header_comments: + # Load EPS header + + # if this line doesn't start with a "%", + # or does start with "%%EndComments", + # then we've reached the end of the header/comments + if byte_arr[0] != ord("%") or bytes_mv[:13] == b"%%EndComments": + check_required_header_comments() + reading_header_comments = False + continue + + s = str(bytes_mv[:bytes_read], "latin-1") + if not read_comment(s): + m = field.match(s) + if m: + k = m.group(1) + if k.startswith("PS-Adobe"): + self.info["PS-Adobe"] = k[9:] + else: + self.info[k] = "" + elif s[0] == "%": + # handle non-DSC PostScript comments that some + # tools mistakenly put in the Comments section + pass + else: + msg = "bad EPS header" + raise OSError(msg) + elif bytes_mv[:11] == b"%ImageData:": + # Check for an "ImageData" descriptor + # https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577413_pgfId-1035096 + + # If we've already read an "ImageData" descriptor, + # don't read another one. + if imagedata_size: + bytes_read = 0 + continue + + # Values: + # columns + # rows + # bit depth (1 or 8) + # mode (1: L, 2: LAB, 3: RGB, 4: CMYK) + # number of padding channels + # block size (number of bytes per row per channel) + # binary/ascii (1: binary, 2: ascii) + # data start identifier (the image data follows after a single line + # consisting only of this quoted value) + image_data_values = byte_arr[11:bytes_read].split(None, 7) + columns, rows, bit_depth, mode_id = ( + int(value) for value in image_data_values[:4] + ) + + if bit_depth == 1: + self._mode = "1" + elif bit_depth == 8: + try: + self._mode = self.mode_map[mode_id] + except ValueError: + break + else: + break + + # Parse the columns and rows after checking the bit depth and mode + # in case the bit depth and/or mode are invalid. + imagedata_size = columns, rows + elif bytes_mv[:5] == b"%%EOF": + break + elif trailer_reached and reading_trailer_comments: + # Load EPS trailer + s = str(bytes_mv[:bytes_read], "latin-1") + read_comment(s) + elif bytes_mv[:9] == b"%%Trailer": + trailer_reached = True + bytes_read = 0 + + # A "BoundingBox" is always required, + # even if an "ImageData" descriptor size exists. + if not bounding_box: + msg = "cannot determine EPS bounding box" + raise OSError(msg) + + # An "ImageData" size takes precedence over the "BoundingBox". + self._size = imagedata_size or ( + bounding_box[2] - bounding_box[0], + bounding_box[3] - bounding_box[1], + ) + + self.tile = [ + ImageFile._Tile("eps", (0, 0) + self.size, offset, (length, bounding_box)) + ] + + def _find_offset(self, fp: IO[bytes]) -> tuple[int, int]: + s = fp.read(4) + + if s == b"%!PS": + # for HEAD without binary preview + fp.seek(0, io.SEEK_END) + length = fp.tell() + offset = 0 + elif i32(s) == 0xC6D3D0C5: + # FIX for: Some EPS file not handled correctly / issue #302 + # EPS can contain binary data + # or start directly with latin coding + # more info see: + # https://web.archive.org/web/20160528181353/http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf + s = fp.read(8) + offset = i32(s) + length = i32(s, 4) + else: + msg = "not an EPS file" + raise SyntaxError(msg) + + return length, offset + + def load( + self, scale: int = 1, transparency: bool = False + ) -> Image.core.PixelAccess | None: + # Load EPS via Ghostscript + if self.tile: + self.im = Ghostscript(self.tile, self.size, self.fp, scale, transparency) + self._mode = self.im.mode + self._size = self.im.size + self.tile = [] + return Image.Image.load(self) + + def load_seek(self, pos: int) -> None: + # we can't incrementally load, so force ImageFile.parser to + # use our custom load method by defining this method. + pass + + +# -------------------------------------------------------------------- + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes, eps: int = 1) -> None: + """EPS Writer for the Python Imaging Library.""" + + # make sure image data is available + im.load() + + # determine PostScript image mode + if im.mode == "L": + operator = (8, 1, b"image") + elif im.mode == "RGB": + operator = (8, 3, b"false 3 colorimage") + elif im.mode == "CMYK": + operator = (8, 4, b"false 4 colorimage") + else: + msg = "image mode is not supported" + raise ValueError(msg) + + if eps: + # write EPS header + fp.write(b"%!PS-Adobe-3.0 EPSF-3.0\n") + fp.write(b"%%Creator: PIL 0.1 EpsEncode\n") + # fp.write("%%CreationDate: %s"...) + fp.write(b"%%%%BoundingBox: 0 0 %d %d\n" % im.size) + fp.write(b"%%Pages: 1\n") + fp.write(b"%%EndComments\n") + fp.write(b"%%Page: 1 1\n") + fp.write(b"%%ImageData: %d %d " % im.size) + fp.write(b'%d %d 0 1 1 "%s"\n' % operator) + + # image header + fp.write(b"gsave\n") + fp.write(b"10 dict begin\n") + fp.write(b"/buf %d string def\n" % (im.size[0] * operator[1])) + fp.write(b"%d %d scale\n" % im.size) + fp.write(b"%d %d 8\n" % im.size) # <= bits + fp.write(b"[%d 0 0 -%d 0 %d]\n" % (im.size[0], im.size[1], im.size[1])) + fp.write(b"{ currentfile buf readhexstring pop } bind\n") + fp.write(operator[2] + b"\n") + if hasattr(fp, "flush"): + fp.flush() + + ImageFile._save(im, fp, [ImageFile._Tile("eps", (0, 0) + im.size)]) + + fp.write(b"\n%%%%EndBinary\n") + fp.write(b"grestore end\n") + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- + + +Image.register_open(EpsImageFile.format, EpsImageFile, _accept) + +Image.register_save(EpsImageFile.format, _save) + +Image.register_extensions(EpsImageFile.format, [".ps", ".eps"]) + +Image.register_mime(EpsImageFile.format, "application/postscript") diff --git a/myenv/lib/python3.10/site-packages/PIL/ExifTags.py b/myenv/lib/python3.10/site-packages/PIL/ExifTags.py new file mode 100644 index 0000000..2280d5c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ExifTags.py @@ -0,0 +1,382 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EXIF tags +# +# Copyright (c) 2003 by Secret Labs AB +# +# See the README file for information on usage and redistribution. +# + +""" +This module provides constants and clear-text names for various +well-known EXIF tags. +""" +from __future__ import annotations + +from enum import IntEnum + + +class Base(IntEnum): + # possibly incomplete + InteropIndex = 0x0001 + ProcessingSoftware = 0x000B + NewSubfileType = 0x00FE + SubfileType = 0x00FF + ImageWidth = 0x0100 + ImageLength = 0x0101 + BitsPerSample = 0x0102 + Compression = 0x0103 + PhotometricInterpretation = 0x0106 + Thresholding = 0x0107 + CellWidth = 0x0108 + CellLength = 0x0109 + FillOrder = 0x010A + DocumentName = 0x010D + ImageDescription = 0x010E + Make = 0x010F + Model = 0x0110 + StripOffsets = 0x0111 + Orientation = 0x0112 + SamplesPerPixel = 0x0115 + RowsPerStrip = 0x0116 + StripByteCounts = 0x0117 + MinSampleValue = 0x0118 + MaxSampleValue = 0x0119 + XResolution = 0x011A + YResolution = 0x011B + PlanarConfiguration = 0x011C + PageName = 0x011D + FreeOffsets = 0x0120 + FreeByteCounts = 0x0121 + GrayResponseUnit = 0x0122 + GrayResponseCurve = 0x0123 + T4Options = 0x0124 + T6Options = 0x0125 + ResolutionUnit = 0x0128 + PageNumber = 0x0129 + TransferFunction = 0x012D + Software = 0x0131 + DateTime = 0x0132 + Artist = 0x013B + HostComputer = 0x013C + Predictor = 0x013D + WhitePoint = 0x013E + PrimaryChromaticities = 0x013F + ColorMap = 0x0140 + HalftoneHints = 0x0141 + TileWidth = 0x0142 + TileLength = 0x0143 + TileOffsets = 0x0144 + TileByteCounts = 0x0145 + SubIFDs = 0x014A + InkSet = 0x014C + InkNames = 0x014D + NumberOfInks = 0x014E + DotRange = 0x0150 + TargetPrinter = 0x0151 + ExtraSamples = 0x0152 + SampleFormat = 0x0153 + SMinSampleValue = 0x0154 + SMaxSampleValue = 0x0155 + TransferRange = 0x0156 + ClipPath = 0x0157 + XClipPathUnits = 0x0158 + YClipPathUnits = 0x0159 + Indexed = 0x015A + JPEGTables = 0x015B + OPIProxy = 0x015F + JPEGProc = 0x0200 + JpegIFOffset = 0x0201 + JpegIFByteCount = 0x0202 + JpegRestartInterval = 0x0203 + JpegLosslessPredictors = 0x0205 + JpegPointTransforms = 0x0206 + JpegQTables = 0x0207 + JpegDCTables = 0x0208 + JpegACTables = 0x0209 + YCbCrCoefficients = 0x0211 + YCbCrSubSampling = 0x0212 + YCbCrPositioning = 0x0213 + ReferenceBlackWhite = 0x0214 + XMLPacket = 0x02BC + RelatedImageFileFormat = 0x1000 + RelatedImageWidth = 0x1001 + RelatedImageLength = 0x1002 + Rating = 0x4746 + RatingPercent = 0x4749 + ImageID = 0x800D + CFARepeatPatternDim = 0x828D + BatteryLevel = 0x828F + Copyright = 0x8298 + ExposureTime = 0x829A + FNumber = 0x829D + IPTCNAA = 0x83BB + ImageResources = 0x8649 + ExifOffset = 0x8769 + InterColorProfile = 0x8773 + ExposureProgram = 0x8822 + SpectralSensitivity = 0x8824 + GPSInfo = 0x8825 + ISOSpeedRatings = 0x8827 + OECF = 0x8828 + Interlace = 0x8829 + TimeZoneOffset = 0x882A + SelfTimerMode = 0x882B + SensitivityType = 0x8830 + StandardOutputSensitivity = 0x8831 + RecommendedExposureIndex = 0x8832 + ISOSpeed = 0x8833 + ISOSpeedLatitudeyyy = 0x8834 + ISOSpeedLatitudezzz = 0x8835 + ExifVersion = 0x9000 + DateTimeOriginal = 0x9003 + DateTimeDigitized = 0x9004 + OffsetTime = 0x9010 + OffsetTimeOriginal = 0x9011 + OffsetTimeDigitized = 0x9012 + ComponentsConfiguration = 0x9101 + CompressedBitsPerPixel = 0x9102 + ShutterSpeedValue = 0x9201 + ApertureValue = 0x9202 + BrightnessValue = 0x9203 + ExposureBiasValue = 0x9204 + MaxApertureValue = 0x9205 + SubjectDistance = 0x9206 + MeteringMode = 0x9207 + LightSource = 0x9208 + Flash = 0x9209 + FocalLength = 0x920A + Noise = 0x920D + ImageNumber = 0x9211 + SecurityClassification = 0x9212 + ImageHistory = 0x9213 + TIFFEPStandardID = 0x9216 + MakerNote = 0x927C + UserComment = 0x9286 + SubsecTime = 0x9290 + SubsecTimeOriginal = 0x9291 + SubsecTimeDigitized = 0x9292 + AmbientTemperature = 0x9400 + Humidity = 0x9401 + Pressure = 0x9402 + WaterDepth = 0x9403 + Acceleration = 0x9404 + CameraElevationAngle = 0x9405 + XPTitle = 0x9C9B + XPComment = 0x9C9C + XPAuthor = 0x9C9D + XPKeywords = 0x9C9E + XPSubject = 0x9C9F + FlashPixVersion = 0xA000 + ColorSpace = 0xA001 + ExifImageWidth = 0xA002 + ExifImageHeight = 0xA003 + RelatedSoundFile = 0xA004 + ExifInteroperabilityOffset = 0xA005 + FlashEnergy = 0xA20B + SpatialFrequencyResponse = 0xA20C + FocalPlaneXResolution = 0xA20E + FocalPlaneYResolution = 0xA20F + FocalPlaneResolutionUnit = 0xA210 + SubjectLocation = 0xA214 + ExposureIndex = 0xA215 + SensingMethod = 0xA217 + FileSource = 0xA300 + SceneType = 0xA301 + CFAPattern = 0xA302 + CustomRendered = 0xA401 + ExposureMode = 0xA402 + WhiteBalance = 0xA403 + DigitalZoomRatio = 0xA404 + FocalLengthIn35mmFilm = 0xA405 + SceneCaptureType = 0xA406 + GainControl = 0xA407 + Contrast = 0xA408 + Saturation = 0xA409 + Sharpness = 0xA40A + DeviceSettingDescription = 0xA40B + SubjectDistanceRange = 0xA40C + ImageUniqueID = 0xA420 + CameraOwnerName = 0xA430 + BodySerialNumber = 0xA431 + LensSpecification = 0xA432 + LensMake = 0xA433 + LensModel = 0xA434 + LensSerialNumber = 0xA435 + CompositeImage = 0xA460 + CompositeImageCount = 0xA461 + CompositeImageExposureTimes = 0xA462 + Gamma = 0xA500 + PrintImageMatching = 0xC4A5 + DNGVersion = 0xC612 + DNGBackwardVersion = 0xC613 + UniqueCameraModel = 0xC614 + LocalizedCameraModel = 0xC615 + CFAPlaneColor = 0xC616 + CFALayout = 0xC617 + LinearizationTable = 0xC618 + BlackLevelRepeatDim = 0xC619 + BlackLevel = 0xC61A + BlackLevelDeltaH = 0xC61B + BlackLevelDeltaV = 0xC61C + WhiteLevel = 0xC61D + DefaultScale = 0xC61E + DefaultCropOrigin = 0xC61F + DefaultCropSize = 0xC620 + ColorMatrix1 = 0xC621 + ColorMatrix2 = 0xC622 + CameraCalibration1 = 0xC623 + CameraCalibration2 = 0xC624 + ReductionMatrix1 = 0xC625 + ReductionMatrix2 = 0xC626 + AnalogBalance = 0xC627 + AsShotNeutral = 0xC628 + AsShotWhiteXY = 0xC629 + BaselineExposure = 0xC62A + BaselineNoise = 0xC62B + BaselineSharpness = 0xC62C + BayerGreenSplit = 0xC62D + LinearResponseLimit = 0xC62E + CameraSerialNumber = 0xC62F + LensInfo = 0xC630 + ChromaBlurRadius = 0xC631 + AntiAliasStrength = 0xC632 + ShadowScale = 0xC633 + DNGPrivateData = 0xC634 + MakerNoteSafety = 0xC635 + CalibrationIlluminant1 = 0xC65A + CalibrationIlluminant2 = 0xC65B + BestQualityScale = 0xC65C + RawDataUniqueID = 0xC65D + OriginalRawFileName = 0xC68B + OriginalRawFileData = 0xC68C + ActiveArea = 0xC68D + MaskedAreas = 0xC68E + AsShotICCProfile = 0xC68F + AsShotPreProfileMatrix = 0xC690 + CurrentICCProfile = 0xC691 + CurrentPreProfileMatrix = 0xC692 + ColorimetricReference = 0xC6BF + CameraCalibrationSignature = 0xC6F3 + ProfileCalibrationSignature = 0xC6F4 + AsShotProfileName = 0xC6F6 + NoiseReductionApplied = 0xC6F7 + ProfileName = 0xC6F8 + ProfileHueSatMapDims = 0xC6F9 + ProfileHueSatMapData1 = 0xC6FA + ProfileHueSatMapData2 = 0xC6FB + ProfileToneCurve = 0xC6FC + ProfileEmbedPolicy = 0xC6FD + ProfileCopyright = 0xC6FE + ForwardMatrix1 = 0xC714 + ForwardMatrix2 = 0xC715 + PreviewApplicationName = 0xC716 + PreviewApplicationVersion = 0xC717 + PreviewSettingsName = 0xC718 + PreviewSettingsDigest = 0xC719 + PreviewColorSpace = 0xC71A + PreviewDateTime = 0xC71B + RawImageDigest = 0xC71C + OriginalRawFileDigest = 0xC71D + SubTileBlockSize = 0xC71E + RowInterleaveFactor = 0xC71F + ProfileLookTableDims = 0xC725 + ProfileLookTableData = 0xC726 + OpcodeList1 = 0xC740 + OpcodeList2 = 0xC741 + OpcodeList3 = 0xC74E + NoiseProfile = 0xC761 + + +"""Maps EXIF tags to tag names.""" +TAGS = { + **{i.value: i.name for i in Base}, + 0x920C: "SpatialFrequencyResponse", + 0x9214: "SubjectLocation", + 0x9215: "ExposureIndex", + 0x828E: "CFAPattern", + 0x920B: "FlashEnergy", + 0x9216: "TIFF/EPStandardID", +} + + +class GPS(IntEnum): + 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.""" +GPSTAGS = {i.value: i.name for i in GPS} + + +class Interop(IntEnum): + InteropIndex = 0x0001 + InteropVersion = 0x0002 + RelatedImageFileFormat = 0x1000 + RelatedImageWidth = 0x1001 + RelatedImageHeight = 0x1002 + + +class IFD(IntEnum): + Exif = 0x8769 + GPSInfo = 0x8825 + MakerNote = 0x927C + Makernote = 0x927C # Deprecated + Interop = 0xA005 + IFD1 = -1 + + +class LightSource(IntEnum): + 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/myenv/lib/python3.10/site-packages/PIL/FitsImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/FitsImagePlugin.py new file mode 100644 index 0000000..a3fdc0e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/FitsImagePlugin.py @@ -0,0 +1,152 @@ +# +# The Python Imaging Library +# $Id$ +# +# FITS file handling +# +# Copyright (c) 1998-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import gzip +import math + +from . import Image, ImageFile + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"SIMPLE") + + +class FitsImageFile(ImageFile.ImageFile): + format = "FITS" + format_description = "FITS" + + def _open(self) -> None: + assert self.fp is not None + + headers: dict[bytes, bytes] = {} + header_in_progress = False + decoder_name = "" + while True: + header = self.fp.read(80) + if not header: + msg = "Truncated FITS file" + raise OSError(msg) + keyword = header[:8].strip() + if keyword in (b"SIMPLE", b"XTENSION"): + header_in_progress = True + elif headers and not header_in_progress: + # This is now a data unit + break + elif keyword == b"END": + # Seek to the end of the header unit + self.fp.seek(math.ceil(self.fp.tell() / 2880) * 2880) + if not decoder_name: + decoder_name, offset, args = self._parse_headers(headers) + + header_in_progress = False + continue + + if decoder_name: + # Keep going to read past the headers + continue + + value = header[8:].split(b"/")[0].strip() + if value.startswith(b"="): + value = value[1:].strip() + if not headers and (not _accept(keyword) or value != b"T"): + msg = "Not a FITS file" + raise SyntaxError(msg) + headers[keyword] = value + + if not decoder_name: + msg = "No image data" + raise ValueError(msg) + + offset += self.fp.tell() - 80 + self.tile = [ImageFile._Tile(decoder_name, (0, 0) + self.size, offset, args)] + + def _get_size( + self, headers: dict[bytes, bytes], prefix: bytes + ) -> tuple[int, int] | None: + naxis = int(headers[prefix + b"NAXIS"]) + if naxis == 0: + return None + + if naxis == 1: + return 1, int(headers[prefix + b"NAXIS1"]) + else: + return int(headers[prefix + b"NAXIS1"]), int(headers[prefix + b"NAXIS2"]) + + def _parse_headers( + self, headers: dict[bytes, bytes] + ) -> tuple[str, int, tuple[str | int, ...]]: + prefix = b"" + decoder_name = "raw" + offset = 0 + if ( + headers.get(b"XTENSION") == b"'BINTABLE'" + and headers.get(b"ZIMAGE") == b"T" + and headers[b"ZCMPTYPE"] == b"'GZIP_1 '" + ): + no_prefix_size = self._get_size(headers, prefix) or (0, 0) + number_of_bits = int(headers[b"BITPIX"]) + offset = no_prefix_size[0] * no_prefix_size[1] * (number_of_bits // 8) + + prefix = b"Z" + decoder_name = "fits_gzip" + + size = self._get_size(headers, prefix) + if not size: + return "", 0, () + + self._size = size + + number_of_bits = int(headers[prefix + b"BITPIX"]) + if number_of_bits == 8: + self._mode = "L" + elif number_of_bits == 16: + self._mode = "I;16" + elif number_of_bits == 32: + self._mode = "I" + elif number_of_bits in (-32, -64): + self._mode = "F" + + args: tuple[str | int, ...] + if decoder_name == "raw": + args = (self.mode, 0, -1) + else: + args = (number_of_bits,) + return decoder_name, offset, args + + +class FitsGzipDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + value = gzip.decompress(self.fd.read()) + + rows = [] + offset = 0 + number_of_bits = min(self.args[0] // 8, 4) + for y in range(self.state.ysize): + row = bytearray() + for x in range(self.state.xsize): + row += value[offset + (4 - number_of_bits) : offset + 4] + offset += 4 + rows.append(row) + self.set_as_raw(bytes([pixel for row in rows[::-1] for pixel in row])) + return -1, 0 + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(FitsImageFile.format, FitsImageFile, _accept) +Image.register_decoder("fits_gzip", FitsGzipDecoder) + +Image.register_extensions(FitsImageFile.format, [".fit", ".fits"]) diff --git a/myenv/lib/python3.10/site-packages/PIL/FliImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/FliImagePlugin.py new file mode 100644 index 0000000..7c5bfee --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/FliImagePlugin.py @@ -0,0 +1,178 @@ +# +# The Python Imaging Library. +# $Id$ +# +# FLI/FLC file handling. +# +# History: +# 95-09-01 fl Created +# 97-01-03 fl Fixed parser, setup decoder tile +# 98-07-15 fl Renamed offset attribute to avoid name clash +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import i32le as i32 +from ._binary import o8 +from ._util import DeferredError + +# +# decoder + + +def _accept(prefix: bytes) -> bool: + return ( + len(prefix) >= 6 + and i16(prefix, 4) in [0xAF11, 0xAF12] + and i16(prefix, 14) in [0, 3] # flags + ) + + +## +# Image plugin for the FLI/FLC animation format. Use the seek +# method to load individual frames. + + +class FliImageFile(ImageFile.ImageFile): + format = "FLI" + format_description = "Autodesk FLI/FLC Animation" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # HEAD + s = self.fp.read(128) + if not (_accept(s) and s[20:22] == b"\x00\x00"): + msg = "not an FLI/FLC file" + raise SyntaxError(msg) + + # frames + self.n_frames = i16(s, 6) + self.is_animated = self.n_frames > 1 + + # image characteristics + self._mode = "P" + self._size = i16(s, 8), i16(s, 10) + + # animation speed + duration = i32(s, 16) + magic = i16(s, 4) + if magic == 0xAF11: + duration = (duration * 1000) // 70 + self.info["duration"] = duration + + # look for palette + palette = [(a, a, a) for a in range(256)] + + s = self.fp.read(16) + + self.__offset = 128 + + if i16(s, 4) == 0xF100: + # prefix chunk; ignore it + self.__offset = self.__offset + i32(s) + self.fp.seek(self.__offset) + s = self.fp.read(16) + + if i16(s, 4) == 0xF1FA: + # look for palette chunk + number_of_subchunks = i16(s, 6) + chunk_size: int | None = None + for _ in range(number_of_subchunks): + if chunk_size is not None: + self.fp.seek(chunk_size - 6, os.SEEK_CUR) + s = self.fp.read(6) + chunk_type = i16(s, 4) + if chunk_type in (4, 11): + self._palette(palette, 2 if chunk_type == 11 else 0) + break + chunk_size = i32(s) + if not chunk_size: + break + + self.palette = ImagePalette.raw( + "RGB", b"".join(o8(r) + o8(g) + o8(b) for (r, g, b) in palette) + ) + + # set things up to decode first frame + self.__frame = -1 + self._fp = self.fp + self.__rewind = self.fp.tell() + self.seek(0) + + def _palette(self, palette: list[tuple[int, int, int]], shift: int) -> None: + # load palette + + i = 0 + for e in range(i16(self.fp.read(2))): + s = self.fp.read(2) + i = i + s[0] + n = s[1] + if n == 0: + n = 256 + s = self.fp.read(n * 3) + for n in range(0, len(s), 3): + r = s[n] << shift + g = s[n + 1] << shift + b = s[n + 2] << shift + palette[i] = (r, g, b) + i += 1 + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0) + + for f in range(self.__frame + 1, frame + 1): + self._seek(f) + + def _seek(self, frame: int) -> None: + if isinstance(self._fp, DeferredError): + raise self._fp.ex + if frame == 0: + self.__frame = -1 + self._fp.seek(self.__rewind) + self.__offset = 128 + else: + # ensure that the previous frame was loaded + self.load() + + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + self.__frame = frame + + # move to next frame + self.fp = self._fp + self.fp.seek(self.__offset) + + s = self.fp.read(4) + if not s: + msg = "missing frame size" + raise EOFError(msg) + + framesize = i32(s) + + self.decodermaxblock = framesize + self.tile = [ImageFile._Tile("fli", (0, 0) + self.size, self.__offset)] + + self.__offset += framesize + + def tell(self) -> int: + return self.__frame + + +# +# registry + +Image.register_open(FliImageFile.format, FliImageFile, _accept) + +Image.register_extensions(FliImageFile.format, [".fli", ".flc"]) diff --git a/myenv/lib/python3.10/site-packages/PIL/FontFile.py b/myenv/lib/python3.10/site-packages/PIL/FontFile.py new file mode 100644 index 0000000..1e0c1c1 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/FontFile.py @@ -0,0 +1,134 @@ +# +# The Python Imaging Library +# $Id$ +# +# base class for raster font file parsers +# +# history: +# 1997-06-05 fl created +# 1997-08-19 fl restrict image width +# +# Copyright (c) 1997-1998 by Secret Labs AB +# Copyright (c) 1997-1998 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +from typing import BinaryIO + +from . import Image, _binary + +WIDTH = 800 + + +def puti16( + fp: BinaryIO, values: tuple[int, int, int, int, int, int, int, int, int, int] +) -> None: + """Write network order (big-endian) 16-bit sequence""" + for v in values: + if v < 0: + v += 65536 + fp.write(_binary.o16be(v)) + + +class FontFile: + """Base class for raster font file handlers.""" + + bitmap: Image.Image | None = None + + def __init__(self) -> None: + self.info: dict[bytes, bytes | int] = {} + self.glyph: list[ + tuple[ + tuple[int, int], + tuple[int, int, int, int], + tuple[int, int, int, int], + Image.Image, + ] + | None + ] = [None] * 256 + + def __getitem__(self, ix: int) -> ( + tuple[ + tuple[int, int], + tuple[int, int, int, int], + tuple[int, int, int, int], + Image.Image, + ] + | None + ): + return self.glyph[ix] + + def compile(self) -> None: + """Create metrics and bitmap""" + + if self.bitmap: + return + + # create bitmap large enough to hold all data + h = w = maxwidth = 0 + lines = 1 + for glyph in self.glyph: + if glyph: + d, dst, src, im = glyph + h = max(h, src[3] - src[1]) + w = w + (src[2] - src[0]) + if w > WIDTH: + lines += 1 + w = src[2] - src[0] + maxwidth = max(maxwidth, w) + + xsize = maxwidth + ysize = lines * h + + if xsize == 0 and ysize == 0: + return + + self.ysize = h + + # paste glyphs into bitmap + self.bitmap = Image.new("1", (xsize, ysize)) + self.metrics: list[ + tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]] + | None + ] = [None] * 256 + x = y = 0 + for i in range(256): + glyph = self[i] + if glyph: + d, dst, src, im = glyph + xx = src[2] - src[0] + x0, y0 = x, y + x = x + xx + if x > WIDTH: + x, y = 0, y + h + x0, y0 = x, y + x = xx + s = src[0] + x0, src[1] + y0, src[2] + x0, src[3] + y0 + self.bitmap.paste(im.crop(src), s) + self.metrics[i] = d, dst, s + + def save(self, filename: str) -> None: + """Save font""" + + self.compile() + + # font data + if not self.bitmap: + msg = "No bitmap created" + raise ValueError(msg) + self.bitmap.save(os.path.splitext(filename)[0] + ".pbm", "PNG") + + # font metrics + with open(os.path.splitext(filename)[0] + ".pil", "wb") as fp: + fp.write(b"PILfont\n") + fp.write(f";;;;;;{self.ysize};\n".encode("ascii")) # HACK!!! + fp.write(b"DATA\n") + for id in range(256): + m = self.metrics[id] + if not m: + puti16(fp, (0,) * 10) + else: + puti16(fp, m[0] + m[1] + m[2]) diff --git a/myenv/lib/python3.10/site-packages/PIL/FpxImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/FpxImagePlugin.py new file mode 100644 index 0000000..fd992cd --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/FpxImagePlugin.py @@ -0,0 +1,257 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library. +# $Id$ +# +# FlashPix support for PIL +# +# History: +# 97-01-25 fl Created (reads uncompressed RGB images only) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import olefile + +from . import Image, ImageFile +from ._binary import i32le as i32 + +# we map from colour field tuples to (mode, rawmode) descriptors +MODES = { + # opacity + (0x00007FFE,): ("A", "L"), + # monochrome + (0x00010000,): ("L", "L"), + (0x00018000, 0x00017FFE): ("RGBA", "LA"), + # photo YCC + (0x00020000, 0x00020001, 0x00020002): ("RGB", "YCC;P"), + (0x00028000, 0x00028001, 0x00028002, 0x00027FFE): ("RGBA", "YCCA;P"), + # standard RGB (NIFRGB) + (0x00030000, 0x00030001, 0x00030002): ("RGB", "RGB"), + (0x00038000, 0x00038001, 0x00038002, 0x00037FFE): ("RGBA", "RGBA"), +} + + +# +# -------------------------------------------------------------------- + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(olefile.MAGIC) + + +## +# Image plugin for the FlashPix images. + + +class FpxImageFile(ImageFile.ImageFile): + format = "FPX" + format_description = "FlashPix" + + def _open(self) -> None: + # + # read the OLE directory and see if this is a likely + # to be a FlashPix file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError as e: + msg = "not an FPX file; invalid OLE file" + raise SyntaxError(msg) from e + + root = self.ole.root + if not root or root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": + msg = "not an FPX file; bad root CLSID" + raise SyntaxError(msg) + + self._open_index(1) + + def _open_index(self, index: int = 1) -> None: + # + # get the Image Contents Property Set + + prop = self.ole.getproperties( + [f"Data Object Store {index:06d}", "\005Image Contents"] + ) + + # size (highest resolution) + + assert isinstance(prop[0x1000002], int) + assert isinstance(prop[0x1000003], int) + self._size = prop[0x1000002], prop[0x1000003] + + size = max(self.size) + i = 1 + while size > 64: + size = size // 2 + i += 1 + self.maxid = i - 1 + + # mode. instead of using a single field for this, flashpix + # requires you to specify the mode for each channel in each + # resolution subimage, and leaves it to the decoder to make + # sure that they all match. for now, we'll cheat and assume + # that this is always the case. + + id = self.maxid << 16 + + s = prop[0x2000002 | id] + + if not isinstance(s, bytes) or (bands := i32(s, 4)) > 4: + msg = "Invalid number of bands" + raise OSError(msg) + + # note: for now, we ignore the "uncalibrated" flag + colors = tuple(i32(s, 8 + i * 4) & 0x7FFFFFFF for i in range(bands)) + + self._mode, self.rawmode = MODES[colors] + + # load JPEG tables, if any + self.jpeg = {} + for i in range(256): + id = 0x3000001 | (i << 16) + if id in prop: + self.jpeg[i] = prop[id] + + self._open_subimage(1, self.maxid) + + def _open_subimage(self, index: int = 1, subimage: int = 0) -> None: + # + # setup tile descriptors for a given subimage + + stream = [ + f"Data Object Store {index:06d}", + f"Resolution {subimage:04d}", + "Subimage 0000 Header", + ] + + fp = self.ole.openstream(stream) + + # skip prefix + fp.read(28) + + # header stream + s = fp.read(36) + + size = i32(s, 4), i32(s, 8) + # tilecount = i32(s, 12) + tilesize = i32(s, 16), i32(s, 20) + # channels = i32(s, 24) + offset = i32(s, 28) + length = i32(s, 32) + + if size != self.size: + msg = "subimage mismatch" + raise OSError(msg) + + # get tile descriptors + fp.seek(28 + offset) + s = fp.read(i32(s, 12) * length) + + x = y = 0 + xsize, ysize = size + xtile, ytile = tilesize + self.tile = [] + + for i in range(0, len(s), length): + x1 = min(xsize, x + xtile) + y1 = min(ysize, y + ytile) + + compression = i32(s, i + 8) + + if compression == 0: + self.tile.append( + ImageFile._Tile( + "raw", + (x, y, x1, y1), + i32(s, i) + 28, + self.rawmode, + ) + ) + + elif compression == 1: + # FIXME: the fill decoder is not implemented + self.tile.append( + ImageFile._Tile( + "fill", + (x, y, x1, y1), + i32(s, i) + 28, + (self.rawmode, s[12:16]), + ) + ) + + elif compression == 2: + internal_color_conversion = s[14] + jpeg_tables = s[15] + rawmode = self.rawmode + + if internal_color_conversion: + # The image is stored as usual (usually YCbCr). + if rawmode == "RGBA": + # For "RGBA", data is stored as YCbCrA based on + # negative RGB. The following trick works around + # this problem : + jpegmode, rawmode = "YCbCrK", "CMYK" + else: + jpegmode = None # let the decoder decide + + else: + # The image is stored as defined by rawmode + jpegmode = rawmode + + self.tile.append( + ImageFile._Tile( + "jpeg", + (x, y, x1, y1), + i32(s, i) + 28, + (rawmode, jpegmode), + ) + ) + + # FIXME: jpeg tables are tile dependent; the prefix + # data must be placed in the tile descriptor itself! + + if jpeg_tables: + self.tile_prefix = self.jpeg[jpeg_tables] + + else: + msg = "unknown/invalid compression" + raise OSError(msg) + + x = x + xtile + if x >= xsize: + x, y = 0, y + ytile + if y >= ysize: + break # isn't really required + + self.stream = stream + self._fp = self.fp + self.fp = None + + def load(self) -> Image.core.PixelAccess | None: + if not self.fp: + self.fp = self.ole.openstream(self.stream[:2] + ["Subimage 0000 Data"]) + + return ImageFile.ImageFile.load(self) + + def close(self) -> None: + self.ole.close() + super().close() + + def __exit__(self, *args: object) -> None: + self.ole.close() + super().__exit__() + + +# +# -------------------------------------------------------------------- + + +Image.register_open(FpxImageFile.format, FpxImageFile, _accept) + +Image.register_extension(FpxImageFile.format, ".fpx") diff --git a/myenv/lib/python3.10/site-packages/PIL/FtexImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/FtexImagePlugin.py new file mode 100644 index 0000000..d60e75b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/FtexImagePlugin.py @@ -0,0 +1,114 @@ +""" +A Pillow loader for .ftc and .ftu files (FTEX) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +Independence War 2: Edge Of Chaos - Texture File Format - 16 October 2001 + +The textures used for 3D objects in Independence War 2: Edge Of Chaos are in a +packed custom format called FTEX. This file format uses file extensions FTC +and FTU. +* FTC files are compressed textures (using standard texture compression). +* FTU files are not compressed. +Texture File Format +The FTC and FTU texture files both use the same format. This +has the following structure: +{header} +{format_directory} +{data} +Where: +{header} = { + u32:magic, + u32:version, + u32:width, + u32:height, + u32:mipmap_count, + u32:format_count +} + +* The "magic" number is "FTEX". +* "width" and "height" are the dimensions of the texture. +* "mipmap_count" is the number of mipmaps in the texture. +* "format_count" is the number of texture formats (different versions of the +same texture) in this file. + +{format_directory} = format_count * { u32:format, u32:where } + +The format value is 0 for DXT1 compressed textures and 1 for 24-bit RGB +uncompressed textures. +The texture data for a format starts at the position "where" in the file. + +Each set of texture data in the file has the following structure: +{data} = format_count * { u32:mipmap_size, mipmap_size * { u8 } } +* "mipmap_size" is the number of bytes in that mip level. For compressed +textures this is the size of the texture data compressed with DXT1. For 24 bit +uncompressed textures, this is 3 * width * height. Following this are the image +bytes for that mipmap level. + +Note: All data is stored in little-Endian (Intel) byte order. +""" + +from __future__ import annotations + +import struct +from enum import IntEnum +from io import BytesIO + +from . import Image, ImageFile + +MAGIC = b"FTEX" + + +class Format(IntEnum): + DXT1 = 0 + UNCOMPRESSED = 1 + + +class FtexImageFile(ImageFile.ImageFile): + format = "FTEX" + format_description = "Texture File Format (IW2:EOC)" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "not an FTEX file" + raise SyntaxError(msg) + struct.unpack(" None: + pass + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(MAGIC) + + +Image.register_open(FtexImageFile.format, FtexImageFile, _accept) +Image.register_extensions(FtexImageFile.format, [".ftc", ".ftu"]) diff --git a/myenv/lib/python3.10/site-packages/PIL/GbrImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/GbrImagePlugin.py new file mode 100644 index 0000000..f319d7e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/GbrImagePlugin.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library +# +# load a GIMP brush file +# +# History: +# 96-03-14 fl Created +# 16-01-08 es Version 2 +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# Copyright (c) Eric Soroos 2016. +# +# See the README file for information on usage and redistribution. +# +# +# See https://github.com/GNOME/gimp/blob/mainline/devel-docs/gbr.txt for +# format documentation. +# +# This code Interprets version 1 and 2 .gbr files. +# Version 1 files are obsolete, and should not be used for new +# brushes. +# Version 2 files are saved by GIMP v2.8 (at least) +# Version 3 files have a format specifier of 18 for 16bit floats in +# the color depth field. This is currently unsupported by Pillow. +from __future__ import annotations + +from . import Image, ImageFile +from ._binary import i32be as i32 + + +def _accept(prefix: bytes) -> bool: + return len(prefix) >= 8 and i32(prefix, 0) >= 20 and i32(prefix, 4) in (1, 2) + + +## +# Image plugin for the GIMP brush format. + + +class GbrImageFile(ImageFile.ImageFile): + format = "GBR" + format_description = "GIMP brush file" + + def _open(self) -> None: + header_size = i32(self.fp.read(4)) + if header_size < 20: + msg = "not a GIMP brush" + raise SyntaxError(msg) + version = i32(self.fp.read(4)) + if version not in (1, 2): + msg = f"Unsupported GIMP brush version: {version}" + raise SyntaxError(msg) + + width = i32(self.fp.read(4)) + height = i32(self.fp.read(4)) + color_depth = i32(self.fp.read(4)) + if width <= 0 or height <= 0: + msg = "not a GIMP brush" + raise SyntaxError(msg) + if color_depth not in (1, 4): + msg = f"Unsupported GIMP brush color depth: {color_depth}" + raise SyntaxError(msg) + + if version == 1: + comment_length = header_size - 20 + else: + comment_length = header_size - 28 + magic_number = self.fp.read(4) + if magic_number != b"GIMP": + msg = "not a GIMP brush, bad magic number" + raise SyntaxError(msg) + self.info["spacing"] = i32(self.fp.read(4)) + + comment = self.fp.read(comment_length)[:-1] + + if color_depth == 1: + self._mode = "L" + else: + self._mode = "RGBA" + + self._size = width, height + + self.info["comment"] = comment + + # Image might not be small + Image._decompression_bomb_check(self.size) + + # Data is an uncompressed block of w * h * bytes/pixel + self._data_size = width * height * color_depth + + def load(self) -> Image.core.PixelAccess | None: + if self._im is None: + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self._data_size)) + return Image.Image.load(self) + + +# +# registry + + +Image.register_open(GbrImageFile.format, GbrImageFile, _accept) +Image.register_extension(GbrImageFile.format, ".gbr") diff --git a/myenv/lib/python3.10/site-packages/PIL/GdImageFile.py b/myenv/lib/python3.10/site-packages/PIL/GdImageFile.py new file mode 100644 index 0000000..891225c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/GdImageFile.py @@ -0,0 +1,102 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GD file handling +# +# History: +# 1996-04-12 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +""" +.. note:: + This format cannot be automatically recognized, so the + class is not registered for use with :py:func:`PIL.Image.open()`. To open a + gd file, use the :py:func:`PIL.GdImageFile.open()` function instead. + +.. warning:: + THE GD FORMAT IS NOT DESIGNED FOR DATA INTERCHANGE. This + implementation is provided for convenience and demonstrational + purposes only. +""" +from __future__ import annotations + +from typing import IO + +from . import ImageFile, ImagePalette, UnidentifiedImageError +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._typing import StrOrBytesPath + + +class GdImageFile(ImageFile.ImageFile): + """ + Image plugin for the GD uncompressed format. Note that this format + is not supported by the standard :py:func:`PIL.Image.open()` function. To use + this plugin, you have to import the :py:mod:`PIL.GdImageFile` module and + use the :py:func:`PIL.GdImageFile.open()` function. + """ + + format = "GD" + format_description = "GD uncompressed images" + + def _open(self) -> None: + # Header + assert self.fp is not None + + s = self.fp.read(1037) + + if i16(s) not in [65534, 65535]: + msg = "Not a valid GD 2.x .gd file" + raise SyntaxError(msg) + + self._mode = "P" + self._size = i16(s, 2), i16(s, 4) + + true_color = s[6] + true_color_offset = 2 if true_color else 0 + + # transparency index + tindex = i32(s, 7 + true_color_offset) + if tindex < 256: + self.info["transparency"] = tindex + + self.palette = ImagePalette.raw( + "RGBX", s[7 + true_color_offset + 6 : 7 + true_color_offset + 6 + 256 * 4] + ) + + self.tile = [ + ImageFile._Tile( + "raw", + (0, 0) + self.size, + 7 + true_color_offset + 6 + 256 * 4, + "L", + ) + ] + + +def open(fp: StrOrBytesPath | IO[bytes], mode: str = "r") -> GdImageFile: + """ + Load texture from a GD image file. + + :param fp: GD file name, or an opened file handle. + :param mode: Optional mode. In this version, if the mode argument + is given, it must be "r". + :returns: An image instance. + :raises OSError: If the image could not be read. + """ + if mode != "r": + msg = "bad mode" + raise ValueError(msg) + + try: + return GdImageFile(fp) + except SyntaxError as e: + msg = "cannot identify this image file" + raise UnidentifiedImageError(msg) from e diff --git a/myenv/lib/python3.10/site-packages/PIL/GifImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/GifImagePlugin.py new file mode 100644 index 0000000..b03aa7f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/GifImagePlugin.py @@ -0,0 +1,1213 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GIF file handling +# +# History: +# 1995-09-01 fl Created +# 1996-12-14 fl Added interlace support +# 1996-12-30 fl Added animation support +# 1997-01-05 fl Added write support, fixed local colour map bug +# 1997-02-23 fl Make sure to load raster data in getdata() +# 1997-07-05 fl Support external decoder (0.4) +# 1998-07-09 fl Handle all modes when saving (0.5) +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2001-04-16 fl Added rewind support (seek to frame 0) (0.6) +# 2001-04-17 fl Added palette optimization (0.7) +# 2002-06-06 fl Added transparency support for save (0.8) +# 2004-02-24 fl Disable interlacing for small images +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import itertools +import math +import os +import subprocess +from enum import IntEnum +from functools import cached_property +from typing import IO, Any, Literal, NamedTuple, Union, cast + +from . import ( + Image, + ImageChops, + ImageFile, + ImageMath, + ImageOps, + ImagePalette, + ImageSequence, +) +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 +from ._util import DeferredError + +TYPE_CHECKING = False +if TYPE_CHECKING: + from . import _imaging + from ._typing import Buffer + + +class LoadingStrategy(IntEnum): + """.. versionadded:: 9.1.0""" + + RGB_AFTER_FIRST = 0 + RGB_AFTER_DIFFERENT_PALETTE_ONLY = 1 + RGB_ALWAYS = 2 + + +#: .. versionadded:: 9.1.0 +LOADING_STRATEGY = LoadingStrategy.RGB_AFTER_FIRST + +# -------------------------------------------------------------------- +# Identify/read GIF files + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith((b"GIF87a", b"GIF89a")) + + +## +# Image plugin for GIF images. This plugin supports both GIF87 and +# GIF89 images. + + +class GifImageFile(ImageFile.ImageFile): + format = "GIF" + format_description = "Compuserve GIF" + _close_exclusive_fp_after_loading = False + + global_palette = None + + def data(self) -> bytes | None: + s = self.fp.read(1) + if s and s[0]: + return self.fp.read(s[0]) + return None + + def _is_palette_needed(self, p: bytes) -> bool: + for i in range(0, len(p), 3): + if not (i // 3 == p[i] == p[i + 1] == p[i + 2]): + return True + return False + + def _open(self) -> None: + # Screen + s = self.fp.read(13) + if not _accept(s): + msg = "not a GIF file" + raise SyntaxError(msg) + + self.info["version"] = s[:6] + self._size = i16(s, 6), i16(s, 8) + flags = s[10] + bits = (flags & 7) + 1 + + if flags & 128: + # get global palette + self.info["background"] = s[11] + # check if palette contains colour indices + p = self.fp.read(3 << bits) + if self._is_palette_needed(p): + p = ImagePalette.raw("RGB", p) + self.global_palette = self.palette = p + + self._fp = self.fp # FIXME: hack + self.__rewind = self.fp.tell() + self._n_frames: int | None = None + self._seek(0) # get ready to read first frame + + @property + def n_frames(self) -> int: + if self._n_frames is None: + current = self.tell() + try: + while True: + self._seek(self.tell() + 1, False) + except EOFError: + self._n_frames = self.tell() + 1 + self.seek(current) + return self._n_frames + + @cached_property + def is_animated(self) -> bool: + if self._n_frames is not None: + return self._n_frames != 1 + + current = self.tell() + if current: + return True + + try: + self._seek(1, False) + is_animated = True + except EOFError: + is_animated = False + + self.seek(current) + return is_animated + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if frame < self.__frame: + self._im = None + self._seek(0) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError as e: + self.seek(last_frame) + msg = "no more images in GIF file" + raise EOFError(msg) from e + + def _seek(self, frame: int, update_image: bool = True) -> None: + if isinstance(self._fp, DeferredError): + raise self._fp.ex + if frame == 0: + # rewind + self.__offset = 0 + self.dispose: _imaging.ImagingCore | None = None + self.__frame = -1 + self._fp.seek(self.__rewind) + self.disposal_method = 0 + if "comment" in self.info: + del self.info["comment"] + else: + # ensure that the previous frame was loaded + if self.tile and update_image: + self.load() + + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + + self.fp = self._fp + if self.__offset: + # backup to last frame + self.fp.seek(self.__offset) + while self.data(): + pass + self.__offset = 0 + + s = self.fp.read(1) + if not s or s == b";": + msg = "no more images in GIF file" + raise EOFError(msg) + + palette: ImagePalette.ImagePalette | Literal[False] | None = None + + info: dict[str, Any] = {} + frame_transparency = None + interlace = None + frame_dispose_extent = None + while True: + if not s: + s = self.fp.read(1) + if not s or s == b";": + break + + elif s == b"!": + # + # extensions + # + s = self.fp.read(1) + block = self.data() + if s[0] == 249 and block is not None: + # + # graphic control extension + # + flags = block[0] + if flags & 1: + frame_transparency = block[3] + info["duration"] = i16(block, 1) * 10 + + # disposal method - find the value of bits 4 - 6 + dispose_bits = 0b00011100 & flags + dispose_bits = dispose_bits >> 2 + if dispose_bits: + # only set the dispose if it is not + # unspecified. I'm not sure if this is + # correct, but it seems to prevent the last + # frame from looking odd for some animations + self.disposal_method = dispose_bits + elif s[0] == 254: + # + # comment extension + # + comment = b"" + + # Read this comment block + while block: + comment += block + block = self.data() + + if "comment" in info: + # If multiple comment blocks in frame, separate with \n + info["comment"] += b"\n" + comment + else: + info["comment"] = comment + s = None + continue + elif s[0] == 255 and frame == 0 and block is not None: + # + # application extension + # + info["extension"] = block, self.fp.tell() + if block.startswith(b"NETSCAPE2.0"): + block = self.data() + if block and len(block) >= 3 and block[0] == 1: + self.info["loop"] = i16(block, 1) + while self.data(): + pass + + elif s == b",": + # + # local image + # + s = self.fp.read(9) + + # extent + x0, y0 = i16(s, 0), i16(s, 2) + x1, y1 = x0 + i16(s, 4), y0 + i16(s, 6) + if (x1 > self.size[0] or y1 > self.size[1]) and update_image: + self._size = max(x1, self.size[0]), max(y1, self.size[1]) + Image._decompression_bomb_check(self._size) + frame_dispose_extent = x0, y0, x1, y1 + flags = s[8] + + interlace = (flags & 64) != 0 + + if flags & 128: + bits = (flags & 7) + 1 + p = self.fp.read(3 << bits) + if self._is_palette_needed(p): + palette = ImagePalette.raw("RGB", p) + else: + palette = False + + # image data + bits = self.fp.read(1)[0] + self.__offset = self.fp.tell() + break + s = None + + if interlace is None: + msg = "image not found in GIF frame" + raise EOFError(msg) + + self.__frame = frame + if not update_image: + return + + self.tile = [] + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + + self._frame_palette = palette if palette is not None else self.global_palette + self._frame_transparency = frame_transparency + if frame == 0: + if self._frame_palette: + if LOADING_STRATEGY == LoadingStrategy.RGB_ALWAYS: + self._mode = "RGBA" if frame_transparency is not None else "RGB" + else: + self._mode = "P" + else: + self._mode = "L" + + if palette: + self.palette = palette + elif self.global_palette: + from copy import copy + + self.palette = copy(self.global_palette) + else: + self.palette = None + else: + if self.mode == "P": + if ( + LOADING_STRATEGY != LoadingStrategy.RGB_AFTER_DIFFERENT_PALETTE_ONLY + or palette + ): + if "transparency" in self.info: + self.im.putpalettealpha(self.info["transparency"], 0) + self.im = self.im.convert("RGBA", Image.Dither.FLOYDSTEINBERG) + self._mode = "RGBA" + del self.info["transparency"] + else: + self._mode = "RGB" + self.im = self.im.convert("RGB", Image.Dither.FLOYDSTEINBERG) + + def _rgb(color: int) -> tuple[int, int, int]: + if self._frame_palette: + if color * 3 + 3 > len(self._frame_palette.palette): + color = 0 + return cast( + tuple[int, int, int], + tuple(self._frame_palette.palette[color * 3 : color * 3 + 3]), + ) + else: + return (color, color, color) + + self.dispose = None + self.dispose_extent: tuple[int, int, int, int] | None = frame_dispose_extent + if self.dispose_extent and self.disposal_method >= 2: + try: + if self.disposal_method == 2: + # replace with background colour + + # only dispose the extent in this frame + x0, y0, x1, y1 = self.dispose_extent + dispose_size = (x1 - x0, y1 - y0) + + Image._decompression_bomb_check(dispose_size) + + # by convention, attempt to use transparency first + dispose_mode = "P" + color = self.info.get("transparency", frame_transparency) + if color is not None: + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGBA" + color = _rgb(color) + (0,) + else: + color = self.info.get("background", 0) + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGB" + color = _rgb(color) + self.dispose = Image.core.fill(dispose_mode, dispose_size, color) + else: + # replace with previous contents + if self._im is not None: + # only dispose the extent in this frame + self.dispose = self._crop(self.im, self.dispose_extent) + elif frame_transparency is not None: + x0, y0, x1, y1 = self.dispose_extent + dispose_size = (x1 - x0, y1 - y0) + + Image._decompression_bomb_check(dispose_size) + dispose_mode = "P" + color = frame_transparency + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGBA" + color = _rgb(frame_transparency) + (0,) + self.dispose = Image.core.fill( + dispose_mode, dispose_size, color + ) + except AttributeError: + pass + + if interlace is not None: + transparency = -1 + if frame_transparency is not None: + if frame == 0: + if LOADING_STRATEGY != LoadingStrategy.RGB_ALWAYS: + self.info["transparency"] = frame_transparency + elif self.mode not in ("RGB", "RGBA"): + transparency = frame_transparency + self.tile = [ + ImageFile._Tile( + "gif", + (x0, y0, x1, y1), + self.__offset, + (bits, interlace, transparency), + ) + ] + + if info.get("comment"): + self.info["comment"] = info["comment"] + for k in ["duration", "extension"]: + if k in info: + self.info[k] = info[k] + elif k in self.info: + del self.info[k] + + def load_prepare(self) -> None: + temp_mode = "P" if self._frame_palette else "L" + self._prev_im = None + if self.__frame == 0: + if self._frame_transparency is not None: + self.im = Image.core.fill( + temp_mode, self.size, self._frame_transparency + ) + elif self.mode in ("RGB", "RGBA"): + self._prev_im = self.im + if self._frame_palette: + self.im = Image.core.fill("P", self.size, self._frame_transparency or 0) + self.im.putpalette("RGB", *self._frame_palette.getdata()) + else: + self._im = None + if not self._prev_im and self._im is not None and self.size != self.im.size: + expanded_im = Image.core.fill(self.im.mode, self.size) + if self._frame_palette: + expanded_im.putpalette("RGB", *self._frame_palette.getdata()) + expanded_im.paste(self.im, (0, 0) + self.im.size) + + self.im = expanded_im + self._mode = temp_mode + self._frame_palette = None + + super().load_prepare() + + def load_end(self) -> None: + if self.__frame == 0: + if self.mode == "P" and LOADING_STRATEGY == LoadingStrategy.RGB_ALWAYS: + if self._frame_transparency is not None: + self.im.putpalettealpha(self._frame_transparency, 0) + self._mode = "RGBA" + else: + self._mode = "RGB" + self.im = self.im.convert(self.mode, Image.Dither.FLOYDSTEINBERG) + return + if not self._prev_im: + return + if self.size != self._prev_im.size: + if self._frame_transparency is not None: + expanded_im = Image.core.fill("RGBA", self.size) + else: + expanded_im = Image.core.fill("P", self.size) + expanded_im.putpalette("RGB", "RGB", self.im.getpalette()) + expanded_im = expanded_im.convert("RGB") + expanded_im.paste(self._prev_im, (0, 0) + self._prev_im.size) + + self._prev_im = expanded_im + assert self._prev_im is not None + if self._frame_transparency is not None: + if self.mode == "L": + frame_im = self.im.convert_transparent("LA", self._frame_transparency) + else: + self.im.putpalettealpha(self._frame_transparency, 0) + frame_im = self.im.convert("RGBA") + else: + frame_im = self.im.convert("RGB") + + assert self.dispose_extent is not None + frame_im = self._crop(frame_im, self.dispose_extent) + + self.im = self._prev_im + self._mode = self.im.mode + if frame_im.mode in ("LA", "RGBA"): + self.im.paste(frame_im, self.dispose_extent, frame_im) + else: + self.im.paste(frame_im, self.dispose_extent) + + def tell(self) -> int: + return self.__frame + + +# -------------------------------------------------------------------- +# Write GIF files + + +RAWMODE = {"1": "L", "L": "L", "P": "P"} + + +def _normalize_mode(im: Image.Image) -> Image.Image: + """ + Takes an image (or frame), returns an image in a mode that is appropriate + for saving in a Gif. + + It may return the original image, or it may return an image converted to + palette or 'L' mode. + + :param im: Image object + :returns: Image object + """ + if im.mode in RAWMODE: + im.load() + return im + if Image.getmodebase(im.mode) == "RGB": + im = im.convert("P", palette=Image.Palette.ADAPTIVE) + assert im.palette is not None + if im.palette.mode == "RGBA": + for rgba in im.palette.colors: + if rgba[3] == 0: + im.info["transparency"] = im.palette.colors[rgba] + break + return im + return im.convert("L") + + +_Palette = Union[bytes, bytearray, list[int], ImagePalette.ImagePalette] + + +def _normalize_palette( + im: Image.Image, palette: _Palette | None, info: dict[str, Any] +) -> Image.Image: + """ + Normalizes the palette for image. + - Sets the palette to the incoming palette, if provided. + - Ensures that there's a palette for L mode images + - Optimizes the palette if necessary/desired. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: Image object + """ + source_palette = None + if palette: + # a bytes palette + if isinstance(palette, (bytes, bytearray, list)): + source_palette = bytearray(palette[:768]) + if isinstance(palette, ImagePalette.ImagePalette): + source_palette = bytearray(palette.palette) + + if im.mode == "P": + if not source_palette: + im_palette = im.getpalette(None) + assert im_palette is not None + source_palette = bytearray(im_palette) + else: # L-mode + if not source_palette: + source_palette = bytearray(i // 3 for i in range(768)) + im.palette = ImagePalette.ImagePalette("RGB", palette=source_palette) + assert source_palette is not None + + if palette: + used_palette_colors: list[int | None] = [] + assert im.palette is not None + for i in range(0, len(source_palette), 3): + source_color = tuple(source_palette[i : i + 3]) + index = im.palette.colors.get(source_color) + if index in used_palette_colors: + index = None + used_palette_colors.append(index) + for i, index in enumerate(used_palette_colors): + if index is None: + for j in range(len(used_palette_colors)): + if j not in used_palette_colors: + used_palette_colors[i] = j + break + dest_map: list[int] = [] + for index in used_palette_colors: + assert index is not None + dest_map.append(index) + im = im.remap_palette(dest_map) + else: + optimized_palette_colors = _get_optimize(im, info) + if optimized_palette_colors is not None: + im = im.remap_palette(optimized_palette_colors, source_palette) + if "transparency" in info: + try: + info["transparency"] = optimized_palette_colors.index( + info["transparency"] + ) + except ValueError: + del info["transparency"] + return im + + assert im.palette is not None + im.palette.palette = source_palette + return im + + +def _write_single_frame( + im: Image.Image, + fp: IO[bytes], + palette: _Palette | None, +) -> None: + im_out = _normalize_mode(im) + for k, v in im_out.info.items(): + if isinstance(k, str): + im.encoderinfo.setdefault(k, v) + im_out = _normalize_palette(im_out, palette, im.encoderinfo) + + for s in _get_global_header(im_out, im.encoderinfo): + fp.write(s) + + # local image header + flags = 0 + if get_interlace(im): + flags = flags | 64 + _write_local_header(fp, im, (0, 0), flags) + + im_out.encoderconfig = (8, get_interlace(im)) + ImageFile._save( + im_out, fp, [ImageFile._Tile("gif", (0, 0) + im.size, 0, RAWMODE[im_out.mode])] + ) + + fp.write(b"\0") # end of image data + + +def _getbbox( + base_im: Image.Image, im_frame: Image.Image +) -> tuple[Image.Image, tuple[int, int, int, int] | None]: + palette_bytes = [ + bytes(im.palette.palette) if im.palette else b"" for im in (base_im, im_frame) + ] + if palette_bytes[0] != palette_bytes[1]: + im_frame = im_frame.convert("RGBA") + base_im = base_im.convert("RGBA") + delta = ImageChops.subtract_modulo(im_frame, base_im) + return delta, delta.getbbox(alpha_only=False) + + +class _Frame(NamedTuple): + im: Image.Image + bbox: tuple[int, int, int, int] | None + encoderinfo: dict[str, Any] + + +def _write_multiple_frames( + im: Image.Image, fp: IO[bytes], palette: _Palette | None +) -> bool: + duration = im.encoderinfo.get("duration") + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + + im_frames: list[_Frame] = [] + previous_im: Image.Image | None = None + frame_count = 0 + background_im = None + for imSequence in itertools.chain([im], im.encoderinfo.get("append_images", [])): + for im_frame in ImageSequence.Iterator(imSequence): + # a copy is required here since seek can still mutate the image + im_frame = _normalize_mode(im_frame.copy()) + if frame_count == 0: + for k, v in im_frame.info.items(): + if k == "transparency": + continue + if isinstance(k, str): + im.encoderinfo.setdefault(k, v) + + encoderinfo = im.encoderinfo.copy() + if "transparency" in im_frame.info: + encoderinfo.setdefault("transparency", im_frame.info["transparency"]) + im_frame = _normalize_palette(im_frame, palette, encoderinfo) + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + elif duration is None and "duration" in im_frame.info: + encoderinfo["duration"] = im_frame.info["duration"] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + frame_count += 1 + + diff_frame = None + if im_frames and previous_im: + # delta frame + delta, bbox = _getbbox(previous_im, im_frame) + if not bbox: + # This frame is identical to the previous frame + if encoderinfo.get("duration"): + im_frames[-1].encoderinfo["duration"] += encoderinfo["duration"] + continue + if im_frames[-1].encoderinfo.get("disposal") == 2: + # To appear correctly in viewers using a convention, + # only consider transparency, and not background color + color = im.encoderinfo.get( + "transparency", im.info.get("transparency") + ) + if color is not None: + if background_im is None: + background = _get_background(im_frame, color) + background_im = Image.new("P", im_frame.size, background) + 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] + else: + bbox = (0, 0) + im_frame.size + elif encoderinfo.get("optimize") and im_frame.mode != "1": + if "transparency" not in encoderinfo: + assert im_frame.palette is not None + try: + encoderinfo["transparency"] = ( + im_frame.palette._new_color_index(im_frame) + ) + except ValueError: + pass + if "transparency" in encoderinfo: + # When the delta is zero, fill the image with transparency + diff_frame = im_frame.copy() + fill = Image.new("P", delta.size, encoderinfo["transparency"]) + if delta.mode == "RGBA": + r, g, b, a = delta.split() + mask = ImageMath.lambda_eval( + lambda args: args["convert"]( + args["max"]( + args["max"]( + args["max"](args["r"], args["g"]), args["b"] + ), + args["a"], + ) + * 255, + "1", + ), + r=r, + g=g, + b=b, + a=a, + ) + else: + if delta.mode == "P": + # Convert to L without considering palette + delta_l = Image.new("L", delta.size) + delta_l.putdata(delta.getdata()) + delta = delta_l + mask = ImageMath.lambda_eval( + lambda args: args["convert"](args["im"] * 255, "1"), + im=delta, + ) + diff_frame.paste(fill, mask=ImageOps.invert(mask)) + else: + bbox = None + previous_im = im_frame + im_frames.append(_Frame(diff_frame or im_frame, bbox, encoderinfo)) + + if len(im_frames) == 1: + if "duration" in im.encoderinfo: + # Since multiple frames will not be written, use the combined duration + im.encoderinfo["duration"] = im_frames[0].encoderinfo["duration"] + return False + + for frame_data in im_frames: + im_frame = frame_data.im + if not frame_data.bbox: + # global header + for s in _get_global_header(im_frame, frame_data.encoderinfo): + fp.write(s) + offset = (0, 0) + else: + # compress difference + if not palette: + frame_data.encoderinfo["include_color_table"] = True + + if frame_data.bbox != (0, 0) + im_frame.size: + im_frame = im_frame.crop(frame_data.bbox) + offset = frame_data.bbox[:2] + _write_frame_data(fp, im_frame, offset, frame_data.encoderinfo) + return True + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, save_all: bool = False +) -> None: + # header + if "palette" in im.encoderinfo or "palette" in im.info: + palette = im.encoderinfo.get("palette", im.info.get("palette")) + else: + palette = None + im.encoderinfo.setdefault("optimize", True) + + if not save_all or not _write_multiple_frames(im, fp, palette): + _write_single_frame(im, fp, palette) + + fp.write(b";") # end of file + + if hasattr(fp, "flush"): + fp.flush() + + +def get_interlace(im: Image.Image) -> int: + interlace = im.encoderinfo.get("interlace", 1) + + # workaround for @PIL153 + if min(im.size) < 16: + interlace = 0 + + return interlace + + +def _write_local_header( + fp: IO[bytes], im: Image.Image, offset: tuple[int, int], flags: int +) -> None: + try: + transparency = im.encoderinfo["transparency"] + except KeyError: + transparency = None + + if "duration" in im.encoderinfo: + duration = int(im.encoderinfo["duration"] / 10) + else: + duration = 0 + + disposal = int(im.encoderinfo.get("disposal", 0)) + + if transparency is not None or duration != 0 or disposal: + packed_flag = 1 if transparency is not None else 0 + packed_flag |= disposal << 2 + + fp.write( + b"!" + + o8(249) # extension intro + + o8(4) # length + + o8(packed_flag) # packed fields + + o16(duration) # duration + + o8(transparency or 0) # transparency index + + o8(0) + ) + + include_color_table = im.encoderinfo.get("include_color_table") + if include_color_table: + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + if color_table_size: + flags = flags | 128 # local color table flag + flags = flags | color_table_size + + fp.write( + b"," + + o16(offset[0]) # offset + + o16(offset[1]) + + o16(im.size[0]) # size + + o16(im.size[1]) + + o8(flags) # flags + ) + if include_color_table and color_table_size: + fp.write(_get_header_palette(palette_bytes)) + fp.write(o8(8)) # bits + + +def _save_netpbm(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # Unused by default. + # To use, uncomment the register_save call at the end of the file. + # + # If you need real GIF compression and/or RGB quantization, you + # can use the external NETPBM/PBMPLUS utilities. See comments + # below for information on how to enable this. + tempfile = im._dump() + + try: + with open(filename, "wb") as f: + if im.mode != "RGB": + subprocess.check_call( + ["ppmtogif", tempfile], stdout=f, stderr=subprocess.DEVNULL + ) + else: + # Pipe ppmquant output into ppmtogif + # "ppmquant 256 %s | ppmtogif > %s" % (tempfile, filename) + quant_cmd = ["ppmquant", "256", tempfile] + togif_cmd = ["ppmtogif"] + quant_proc = subprocess.Popen( + quant_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + togif_proc = subprocess.Popen( + togif_cmd, + stdin=quant_proc.stdout, + stdout=f, + stderr=subprocess.DEVNULL, + ) + + # Allow ppmquant to receive SIGPIPE if ppmtogif exits + assert quant_proc.stdout is not None + quant_proc.stdout.close() + + retcode = quant_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, quant_cmd) + + retcode = togif_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, togif_cmd) + finally: + try: + os.unlink(tempfile) + except OSError: + pass + + +# Force optimization so that we can test performance against +# cases where it took lots of memory and time previously. +_FORCE_OPTIMIZE = False + + +def _get_optimize(im: Image.Image, info: dict[str, Any]) -> list[int] | None: + """ + Palette optimization is a potentially expensive operation. + + This function determines if the palette should be optimized using + some heuristics, then returns the list of palette entries in use. + + :param im: Image object + :param info: encoderinfo + :returns: list of indexes of palette entries in use, or None + """ + if im.mode in ("P", "L") and info and info.get("optimize"): + # Potentially expensive operation. + + # The palette saves 3 bytes per color not used, but palette + # lengths are restricted to 3*(2**N) bytes. Max saving would + # be 768 -> 6 bytes if we went all the way down to 2 colors. + # * If we're over 128 colors, we can't save any space. + # * If there aren't any holes, it's not worth collapsing. + # * If we have a 'large' image, the palette is in the noise. + + # create the new palette if not every color is used + optimise = _FORCE_OPTIMIZE or im.mode == "L" + if optimise or im.width * im.height < 512 * 512: + # check which colors are used + used_palette_colors = [] + for i, count in enumerate(im.histogram()): + if count: + used_palette_colors.append(i) + + if optimise or max(used_palette_colors) >= len(used_palette_colors): + return used_palette_colors + + assert im.palette is not None + num_palette_colors = len(im.palette.palette) // Image.getmodebands( + im.palette.mode + ) + current_palette_size = 1 << (num_palette_colors - 1).bit_length() + if ( + # check that the palette would become smaller when saved + len(used_palette_colors) <= current_palette_size // 2 + # check that the palette is not already the smallest possible size + and current_palette_size > 2 + ): + return used_palette_colors + return None + + +def _get_color_table_size(palette_bytes: bytes) -> int: + # calculate the palette size for the header + if not palette_bytes: + return 0 + elif len(palette_bytes) < 9: + return 1 + else: + return math.ceil(math.log(len(palette_bytes) // 3, 2)) - 1 + + +def _get_header_palette(palette_bytes: bytes) -> bytes: + """ + Returns the palette, null padded to the next power of 2 (*3) bytes + suitable for direct inclusion in the GIF header + + :param palette_bytes: Unpadded palette bytes, in RGBRGB form + :returns: Null padded palette + """ + color_table_size = _get_color_table_size(palette_bytes) + + # add the missing amount of bytes + # the palette has to be 2< 0: + palette_bytes += o8(0) * 3 * actual_target_size_diff + return palette_bytes + + +def _get_palette_bytes(im: Image.Image) -> bytes: + """ + Gets the palette for inclusion in the gif header + + :param im: Image object + :returns: Bytes, len<=768 suitable for inclusion in gif header + """ + if not im.palette: + return b"" + + palette = bytes(im.palette.palette) + if im.palette.mode == "RGBA": + palette = b"".join(palette[i * 4 : i * 4 + 3] for i in range(len(palette) // 3)) + return palette + + +def _get_background( + im: Image.Image, + info_background: int | tuple[int, int, int] | tuple[int, int, int, int] | None, +) -> int: + background = 0 + if info_background: + if isinstance(info_background, tuple): + # WebPImagePlugin stores an RGBA value in info["background"] + # So it must be converted to the same format as GifImagePlugin's + # info["background"] - a global color table index + assert im.palette is not None + try: + background = im.palette.getcolor(info_background, im) + except ValueError as e: + if str(e) not in ( + # If all 256 colors are in use, + # then there is no need for the background color + "cannot allocate more than 256 colors", + # Ignore non-opaque WebP background + "cannot add non-opaque RGBA color to RGB palette", + ): + raise + else: + background = info_background + return background + + +def _get_global_header(im: Image.Image, info: dict[str, Any]) -> list[bytes]: + """Return a list of strings representing a GIF header""" + + # Header Block + # https://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp + + version = b"87a" + if im.info.get("version") == b"89a" or ( + info + and ( + "transparency" in info + or info.get("loop") is not None + or info.get("duration") + or info.get("comment") + ) + ): + version = b"89a" + + background = _get_background(im, info.get("background")) + + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + + header = [ + b"GIF" # signature + + version # version + + o16(im.size[0]) # canvas width + + o16(im.size[1]), # canvas height + # Logical Screen Descriptor + # size of global color table + global color table flag + o8(color_table_size + 128), # packed fields + # background + reserved/aspect + o8(background) + o8(0), + # Global Color Table + _get_header_palette(palette_bytes), + ] + if info.get("loop") is not None: + header.append( + b"!" + + o8(255) # extension intro + + o8(11) + + b"NETSCAPE2.0" + + o8(3) + + o8(1) + + o16(info["loop"]) # number of loops + + o8(0) + ) + if info.get("comment"): + comment_block = b"!" + o8(254) # extension intro + + comment = info["comment"] + if isinstance(comment, str): + comment = comment.encode() + for i in range(0, len(comment), 255): + subblock = comment[i : i + 255] + comment_block += o8(len(subblock)) + subblock + + comment_block += o8(0) + header.append(comment_block) + return header + + +def _write_frame_data( + fp: IO[bytes], + im_frame: Image.Image, + offset: tuple[int, int], + params: dict[str, Any], +) -> None: + try: + im_frame.encoderinfo = params + + # local image header + _write_local_header(fp, im_frame, offset, 0) + + ImageFile._save( + im_frame, + fp, + [ImageFile._Tile("gif", (0, 0) + im_frame.size, 0, RAWMODE[im_frame.mode])], + ) + + fp.write(b"\0") # end of image data + finally: + del im_frame.encoderinfo + + +# -------------------------------------------------------------------- +# Legacy GIF utilities + + +def getheader( + im: Image.Image, palette: _Palette | None = None, info: dict[str, Any] | None = None +) -> tuple[list[bytes], list[int] | None]: + """ + Legacy Method to get Gif data from image. + + Warning:: May modify image data. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: tuple of(list of header items, optimized palette) + + """ + if info is None: + info = {} + + used_palette_colors = _get_optimize(im, info) + + if "background" not in info and "background" in im.info: + info["background"] = im.info["background"] + + im_mod = _normalize_palette(im, palette, info) + im.palette = im_mod.palette + im.im = im_mod.im + header = _get_global_header(im, info) + + return header, used_palette_colors + + +def getdata( + im: Image.Image, offset: tuple[int, int] = (0, 0), **params: Any +) -> list[bytes]: + """ + Legacy Method + + Return a list of strings representing this image. + The first string is a local image header, the rest contains + encoded image data. + + To specify duration, add the time in milliseconds, + e.g. ``getdata(im_frame, duration=1000)`` + + :param im: Image object + :param offset: Tuple of (x, y) pixels. Defaults to (0, 0) + :param \\**params: e.g. duration or other encoder info parameters + :returns: List of bytes containing GIF encoded frame data + + """ + from io import BytesIO + + class Collector(BytesIO): + data = [] + + def write(self, data: Buffer) -> int: + self.data.append(data) + return len(data) + + im.load() # make sure raster data is available + + fp = Collector() + + _write_frame_data(fp, im, offset, params) + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GifImageFile.format, GifImageFile, _accept) +Image.register_save(GifImageFile.format, _save) +Image.register_save_all(GifImageFile.format, _save_all) +Image.register_extension(GifImageFile.format, ".gif") +Image.register_mime(GifImageFile.format, "image/gif") + +# +# Uncomment the following line if you wish to use NETPBM/PBMPLUS +# instead of the built-in "uncompressed" GIF encoder + +# Image.register_save(GifImageFile.format, _save_netpbm) diff --git a/myenv/lib/python3.10/site-packages/PIL/GimpGradientFile.py b/myenv/lib/python3.10/site-packages/PIL/GimpGradientFile.py new file mode 100644 index 0000000..ec62f8e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/GimpGradientFile.py @@ -0,0 +1,149 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read (and render) GIMP gradient files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +""" +Stuff to translate curve segments to palette values (derived from +the corresponding code in GIMP, written by Federico Mena Quintero. +See the GIMP distribution for more information.) +""" +from __future__ import annotations + +from math import log, pi, sin, sqrt +from typing import IO, Callable + +from ._binary import o8 + +EPSILON = 1e-10 +"""""" # Enable auto-doc for data member + + +def linear(middle: float, pos: float) -> float: + if pos <= middle: + if middle < EPSILON: + return 0.0 + else: + return 0.5 * pos / middle + else: + pos = pos - middle + middle = 1.0 - middle + if middle < EPSILON: + return 1.0 + else: + return 0.5 + 0.5 * pos / middle + + +def curved(middle: float, pos: float) -> float: + return pos ** (log(0.5) / log(max(middle, EPSILON))) + + +def sine(middle: float, pos: float) -> float: + return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 + + +def sphere_increasing(middle: float, pos: float) -> float: + return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) + + +def sphere_decreasing(middle: float, pos: float) -> float: + return 1.0 - sqrt(1.0 - linear(middle, pos) ** 2) + + +SEGMENTS = [linear, curved, sine, sphere_increasing, sphere_decreasing] +"""""" # Enable auto-doc for data member + + +class GradientFile: + gradient: ( + list[ + tuple[ + float, + float, + float, + list[float], + list[float], + Callable[[float, float], float], + ] + ] + | None + ) = None + + def getpalette(self, entries: int = 256) -> tuple[bytes, str]: + assert self.gradient is not None + palette = [] + + ix = 0 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + for i in range(entries): + x = i / (entries - 1) + + while x1 < x: + ix += 1 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + w = x1 - x0 + + if w < EPSILON: + scale = segment(0.5, 0.5) + else: + scale = segment((xm - x0) / w, (x - x0) / w) + + # expand to RGBA + r = o8(int(255 * ((rgb1[0] - rgb0[0]) * scale + rgb0[0]) + 0.5)) + g = o8(int(255 * ((rgb1[1] - rgb0[1]) * scale + rgb0[1]) + 0.5)) + b = o8(int(255 * ((rgb1[2] - rgb0[2]) * scale + rgb0[2]) + 0.5)) + a = o8(int(255 * ((rgb1[3] - rgb0[3]) * scale + rgb0[3]) + 0.5)) + + # add to palette + palette.append(r + g + b + a) + + return b"".join(palette), "RGBA" + + +class GimpGradientFile(GradientFile): + """File handler for GIMP's gradient format.""" + + def __init__(self, fp: IO[bytes]) -> None: + if not fp.readline().startswith(b"GIMP Gradient"): + msg = "not a GIMP gradient file" + raise SyntaxError(msg) + + line = fp.readline() + + # GIMP 1.2 gradient files don't contain a name, but GIMP 1.3 files do + if line.startswith(b"Name: "): + line = fp.readline().strip() + + count = int(line) + + self.gradient = [] + + for i in range(count): + s = fp.readline().split() + w = [float(x) for x in s[:11]] + + x0, x1 = w[0], w[2] + xm = w[1] + rgb0 = w[3:7] + rgb1 = w[7:11] + + segment = SEGMENTS[int(s[11])] + cspace = int(s[12]) + + if cspace != 0: + msg = "cannot handle HSV colour space" + raise OSError(msg) + + self.gradient.append((x0, x1, xm, rgb0, rgb1, segment)) diff --git a/myenv/lib/python3.10/site-packages/PIL/GimpPaletteFile.py b/myenv/lib/python3.10/site-packages/PIL/GimpPaletteFile.py new file mode 100644 index 0000000..379ffd7 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/GimpPaletteFile.py @@ -0,0 +1,72 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read GIMP palette files +# +# History: +# 1997-08-23 fl Created +# 2004-09-07 fl Support GIMP 2.0 palette files. +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1997-2004. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re +from io import BytesIO +from typing import IO + + +class GimpPaletteFile: + """File handler for GIMP's palette format.""" + + rawmode = "RGB" + + def _read(self, fp: IO[bytes], limit: bool = True) -> None: + if not fp.readline().startswith(b"GIMP Palette"): + msg = "not a GIMP palette file" + raise SyntaxError(msg) + + palette: list[int] = [] + i = 0 + while True: + if limit and i == 256 + 3: + break + + i += 1 + s = fp.readline() + if not s: + break + + # skip fields and comment lines + if re.match(rb"\w+:|#", s): + continue + if limit and len(s) > 100: + msg = "bad palette file" + raise SyntaxError(msg) + + v = s.split(maxsplit=3) + if len(v) < 3: + msg = "bad palette entry" + raise ValueError(msg) + + palette += (int(v[i]) for i in range(3)) + if limit and len(palette) == 768: + break + + self.palette = bytes(palette) + + def __init__(self, fp: IO[bytes]) -> None: + self._read(fp) + + @classmethod + def frombytes(cls, data: bytes) -> GimpPaletteFile: + self = cls.__new__(cls) + self._read(BytesIO(data), False) + return self + + def getpalette(self) -> tuple[bytes, str]: + return self.palette, self.rawmode diff --git a/myenv/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py new file mode 100644 index 0000000..439fc5a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library +# $Id$ +# +# GRIB stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +from typing import IO + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific GRIB image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"GRIB") and prefix[7] == 1 + + +class GribStubImageFile(ImageFile.StubImageFile): + format = "GRIB" + format_description = "GRIB" + + def _open(self) -> None: + if not _accept(self.fp.read(8)): + msg = "Not a GRIB file" + raise SyntaxError(msg) + + self.fp.seek(-8, os.SEEK_CUR) + + # make something up + self._mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self) -> ImageFile.StubHandler | None: + return _handler + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "GRIB save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GribStubImageFile.format, GribStubImageFile, _accept) +Image.register_save(GribStubImageFile.format, _save) + +Image.register_extension(GribStubImageFile.format, ".grib") diff --git a/myenv/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py new file mode 100644 index 0000000..76e640f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library +# $Id$ +# +# HDF5 stub adapter +# +# Copyright (c) 2000-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +from typing import IO + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific HDF5 image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"\x89HDF\r\n\x1a\n") + + +class HDF5StubImageFile(ImageFile.StubImageFile): + format = "HDF5" + format_description = "HDF5" + + def _open(self) -> None: + if not _accept(self.fp.read(8)): + msg = "Not an HDF file" + raise SyntaxError(msg) + + self.fp.seek(-8, os.SEEK_CUR) + + # make something up + self._mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self) -> ImageFile.StubHandler | None: + return _handler + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "HDF5 save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(HDF5StubImageFile.format, HDF5StubImageFile, _accept) +Image.register_save(HDF5StubImageFile.format, _save) + +Image.register_extensions(HDF5StubImageFile.format, [".h5", ".hdf"]) diff --git a/myenv/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py new file mode 100644 index 0000000..5a88429 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py @@ -0,0 +1,411 @@ +# +# The Python Imaging Library. +# $Id$ +# +# macOS icns file decoder, based on icns.py by Bob Ippolito. +# +# history: +# 2004-10-09 fl Turned into a PIL plugin; removed 2.3 dependencies. +# 2020-04-04 Allow saving on all operating systems. +# +# Copyright (c) 2004 by Bob Ippolito. +# Copyright (c) 2004 by Secret Labs. +# Copyright (c) 2004 by Fredrik Lundh. +# Copyright (c) 2014 by Alastair Houghton. +# Copyright (c) 2020 by Pan Jing. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import struct +import sys +from typing import IO + +from . import Image, ImageFile, PngImagePlugin, features +from ._deprecate import deprecate + +enable_jpeg2k = features.check_codec("jpg_2000") +if enable_jpeg2k: + from . import Jpeg2KImagePlugin + +MAGIC = b"icns" +HEADERSIZE = 8 + + +def nextheader(fobj: IO[bytes]) -> tuple[bytes, int]: + return struct.unpack(">4sI", fobj.read(HEADERSIZE)) + + +def read_32t( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + # The 128x128 icon seems to have an extra header for some reason. + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(4) + if sig != b"\x00\x00\x00\x00": + msg = "Unknown signature, expecting 0x00000000" + raise SyntaxError(msg) + return read_32(fobj, (start + 4, length - 4), size) + + +def read_32( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + """ + Read a 32bit RGB icon resource. Seems to be either uncompressed or + an RLE packbits-like scheme. + """ + (start, length) = start_length + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + if length == sizesq * 3: + # uncompressed ("RGBRGBGB") + indata = fobj.read(length) + im = Image.frombuffer("RGB", pixel_size, indata, "raw", "RGB", 0, 1) + else: + # decode image + im = Image.new("RGB", pixel_size, None) + for band_ix in range(3): + data = [] + bytesleft = sizesq + while bytesleft > 0: + byte = fobj.read(1) + if not byte: + break + byte_int = byte[0] + if byte_int & 0x80: + blocksize = byte_int - 125 + byte = fobj.read(1) + for i in range(blocksize): + data.append(byte) + else: + blocksize = byte_int + 1 + data.append(fobj.read(blocksize)) + bytesleft -= blocksize + if bytesleft <= 0: + break + if bytesleft != 0: + msg = f"Error reading channel [{repr(bytesleft)} left]" + raise SyntaxError(msg) + band = Image.frombuffer("L", pixel_size, b"".join(data), "raw", "L", 0, 1) + im.im.putband(band.im, band_ix) + return {"RGB": im} + + +def read_mk( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + # Alpha masks seem to be uncompressed + start = start_length[0] + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + band = Image.frombuffer("L", pixel_size, fobj.read(sizesq), "raw", "L", 0, 1) + return {"A": band} + + +def read_png_or_jpeg2000( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(12) + + im: Image.Image + if sig.startswith(b"\x89PNG\x0d\x0a\x1a\x0a"): + fobj.seek(start) + im = PngImagePlugin.PngImageFile(fobj) + Image._decompression_bomb_check(im.size) + return {"RGBA": im} + elif ( + sig.startswith((b"\xff\x4f\xff\x51", b"\x0d\x0a\x87\x0a")) + or sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ): + if not enable_jpeg2k: + msg = ( + "Unsupported icon subimage format (rebuild PIL " + "with JPEG 2000 support to fix this)" + ) + raise ValueError(msg) + # j2k, jpc or j2c + fobj.seek(start) + jp2kstream = fobj.read(length) + f = io.BytesIO(jp2kstream) + im = Jpeg2KImagePlugin.Jpeg2KImageFile(f) + Image._decompression_bomb_check(im.size) + if im.mode != "RGBA": + im = im.convert("RGBA") + return {"RGBA": im} + else: + msg = "Unsupported icon subimage format" + raise ValueError(msg) + + +class IcnsFile: + SIZES = { + (512, 512, 2): [(b"ic10", read_png_or_jpeg2000)], + (512, 512, 1): [(b"ic09", read_png_or_jpeg2000)], + (256, 256, 2): [(b"ic14", read_png_or_jpeg2000)], + (256, 256, 1): [(b"ic08", read_png_or_jpeg2000)], + (128, 128, 2): [(b"ic13", read_png_or_jpeg2000)], + (128, 128, 1): [ + (b"ic07", read_png_or_jpeg2000), + (b"it32", read_32t), + (b"t8mk", read_mk), + ], + (64, 64, 1): [(b"icp6", read_png_or_jpeg2000)], + (32, 32, 2): [(b"ic12", read_png_or_jpeg2000)], + (48, 48, 1): [(b"ih32", read_32), (b"h8mk", read_mk)], + (32, 32, 1): [ + (b"icp5", read_png_or_jpeg2000), + (b"il32", read_32), + (b"l8mk", read_mk), + ], + (16, 16, 2): [(b"ic11", read_png_or_jpeg2000)], + (16, 16, 1): [ + (b"icp4", read_png_or_jpeg2000), + (b"is32", read_32), + (b"s8mk", read_mk), + ], + } + + def __init__(self, fobj: IO[bytes]) -> None: + """ + fobj is a file-like object as an icns resource + """ + # signature : (start, length) + self.dct = {} + self.fobj = fobj + sig, filesize = nextheader(fobj) + if not _accept(sig): + msg = "not an icns file" + raise SyntaxError(msg) + i = HEADERSIZE + while i < filesize: + sig, blocksize = nextheader(fobj) + if blocksize <= 0: + msg = "invalid block header" + raise SyntaxError(msg) + i += HEADERSIZE + blocksize -= HEADERSIZE + self.dct[sig] = (i, blocksize) + fobj.seek(blocksize, io.SEEK_CUR) + i += blocksize + + def itersizes(self) -> list[tuple[int, int, int]]: + sizes = [] + for size, fmts in self.SIZES.items(): + for fmt, reader in fmts: + if fmt in self.dct: + sizes.append(size) + break + return sizes + + def bestsize(self) -> tuple[int, int, int]: + sizes = self.itersizes() + if not sizes: + msg = "No 32bit icon resources found" + raise SyntaxError(msg) + return max(sizes) + + def dataforsize(self, size: tuple[int, int, int]) -> dict[str, Image.Image]: + """ + Get an icon resource as {channel: array}. Note that + the arrays are bottom-up like windows bitmaps and will likely + need to be flipped or transposed in some way. + """ + dct = {} + for code, reader in self.SIZES[size]: + desc = self.dct.get(code) + if desc is not None: + dct.update(reader(self.fobj, desc, size)) + return dct + + def getimage( + self, size: tuple[int, int] | tuple[int, int, int] | None = None + ) -> Image.Image: + if size is None: + size = self.bestsize() + elif len(size) == 2: + size = (size[0], size[1], 1) + channels = self.dataforsize(size) + + im = channels.get("RGBA") + if im: + return im + + im = channels["RGB"].copy() + try: + im.putalpha(channels["A"]) + except KeyError: + pass + return im + + +## +# Image plugin for Mac OS icons. + + +class IcnsImageFile(ImageFile.ImageFile): + """ + PIL image support for Mac OS .icns files. + Chooses the best resolution, but will possibly load + a different size image if you mutate the size attribute + before calling 'load'. + + The info dictionary has a key 'sizes' that is a list + of sizes that the icns file has. + """ + + format = "ICNS" + format_description = "Mac OS icns resource" + + def _open(self) -> None: + self.icns = IcnsFile(self.fp) + self._mode = "RGBA" + self.info["sizes"] = self.icns.itersizes() + self.best_size = self.icns.bestsize() + self.size = ( + self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2], + ) + + @property # type: ignore[override] + def size(self) -> tuple[int, int] | tuple[int, int, int]: + return self._size + + @size.setter + def size(self, value: tuple[int, int] | tuple[int, int, int]) -> None: + if len(value) == 3: + deprecate("Setting size to (width, height, scale)", 12, "load(scale)") + if value in self.info["sizes"]: + self._size = value # type: ignore[assignment] + return + else: + # Check that a matching size exists, + # or that there is a scale that would create a size that matches + for size in self.info["sizes"]: + simple_size = size[0] * size[2], size[1] * size[2] + scale = simple_size[0] // value[0] + if simple_size[1] / value[1] == scale: + self._size = value + return + msg = "This is not one of the allowed sizes of this image" + raise ValueError(msg) + + def load(self, scale: int | None = None) -> Image.core.PixelAccess | None: + if scale is not None or len(self.size) == 3: + if scale is None and len(self.size) == 3: + scale = self.size[2] + assert scale is not None + width, height = self.size[:2] + self.size = width * scale, height * scale + self.best_size = width, height, scale + + px = Image.Image.load(self) + if self._im is not None and self.im.size == self.size: + # Already loaded + return px + self.load_prepare() + # This is likely NOT the best way to do it, but whatever. + im = self.icns.getimage(self.best_size) + + # If this is a PNG or JPEG 2000, it won't be loaded yet + px = im.load() + + self.im = im.im + self._mode = im.mode + self.size = im.size + + return px + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + """ + Saves the image as a series of PNG files, + that are then combined into a .icns file. + """ + if hasattr(fp, "flush"): + fp.flush() + + sizes = { + b"ic07": 128, + b"ic08": 256, + b"ic09": 512, + b"ic10": 1024, + b"ic11": 32, + b"ic12": 64, + b"ic13": 256, + b"ic14": 512, + } + provided_images = {im.width: im for im in im.encoderinfo.get("append_images", [])} + size_streams = {} + for size in set(sizes.values()): + image = ( + provided_images[size] + if size in provided_images + else im.resize((size, size)) + ) + + temp = io.BytesIO() + image.save(temp, "png") + size_streams[size] = temp.getvalue() + + entries = [] + for type, size in sizes.items(): + stream = size_streams[size] + entries.append((type, HEADERSIZE + len(stream), stream)) + + # Header + fp.write(MAGIC) + file_length = HEADERSIZE # Header + file_length += HEADERSIZE + 8 * len(entries) # TOC + file_length += sum(entry[1] for entry in entries) + fp.write(struct.pack(">i", file_length)) + + # TOC + fp.write(b"TOC ") + fp.write(struct.pack(">i", HEADERSIZE + len(entries) * HEADERSIZE)) + for entry in entries: + fp.write(entry[0]) + fp.write(struct.pack(">i", entry[1])) + + # Data + for entry in entries: + fp.write(entry[0]) + fp.write(struct.pack(">i", entry[1])) + fp.write(entry[2]) + + if hasattr(fp, "flush"): + fp.flush() + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(MAGIC) + + +Image.register_open(IcnsImageFile.format, IcnsImageFile, _accept) +Image.register_extension(IcnsImageFile.format, ".icns") + +Image.register_save(IcnsImageFile.format, _save) +Image.register_mime(IcnsImageFile.format, "image/icns") + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 IcnsImagePlugin.py [file]") + sys.exit() + + with open(sys.argv[1], "rb") as fp: + imf = IcnsImageFile(fp) + for size in imf.info["sizes"]: + width, height, scale = imf.size = size + imf.save(f"out-{width}-{height}-{scale}.png") + with Image.open(sys.argv[1]) as im: + im.save("out.png") + if sys.platform == "windows": + os.startfile("out.png") diff --git a/myenv/lib/python3.10/site-packages/PIL/IcoImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/IcoImagePlugin.py new file mode 100644 index 0000000..bd35ac8 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/IcoImagePlugin.py @@ -0,0 +1,381 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Icon support for PIL +# +# History: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +# This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis +# . +# https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki +# +# Icon format references: +# * https://en.wikipedia.org/wiki/ICO_(file_format) +# * https://msdn.microsoft.com/en-us/library/ms997538.aspx +from __future__ import annotations + +import warnings +from io import BytesIO +from math import ceil, log +from typing import IO, NamedTuple + +from . import BmpImagePlugin, Image, ImageFile, PngImagePlugin +from ._binary import i16le as i16 +from ._binary import i32le as i32 +from ._binary import o8 +from ._binary import o16le as o16 +from ._binary import o32le as o32 + +# +# -------------------------------------------------------------------- + +_MAGIC = b"\0\0\1\0" + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + fp.write(_MAGIC) # (2+2) + bmp = im.encoderinfo.get("bitmap_format") == "bmp" + sizes = im.encoderinfo.get( + "sizes", + [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)], + ) + frames = [] + provided_ims = [im] + im.encoderinfo.get("append_images", []) + width, height = im.size + for size in sorted(set(sizes)): + if size[0] > width or size[1] > height or size[0] > 256 or size[1] > 256: + continue + + for provided_im in provided_ims: + if provided_im.size != size: + continue + frames.append(provided_im) + if bmp: + bits = BmpImagePlugin.SAVE[provided_im.mode][1] + bits_used = [bits] + for other_im in provided_ims: + if other_im.size != size: + continue + bits = BmpImagePlugin.SAVE[other_im.mode][1] + if bits not in bits_used: + # Another image has been supplied for this size + # with a different bit depth + frames.append(other_im) + bits_used.append(bits) + break + else: + # TODO: invent a more convenient method for proportional scalings + frame = provided_im.copy() + frame.thumbnail(size, Image.Resampling.LANCZOS, reducing_gap=None) + frames.append(frame) + fp.write(o16(len(frames))) # idCount(2) + offset = fp.tell() + len(frames) * 16 + for frame in frames: + width, height = frame.size + # 0 means 256 + fp.write(o8(width if width < 256 else 0)) # bWidth(1) + fp.write(o8(height if height < 256 else 0)) # bHeight(1) + + bits, colors = BmpImagePlugin.SAVE[frame.mode][1:] if bmp else (32, 0) + fp.write(o8(colors)) # bColorCount(1) + fp.write(b"\0") # bReserved(1) + fp.write(b"\0\0") # wPlanes(2) + fp.write(o16(bits)) # wBitCount(2) + + image_io = BytesIO() + if bmp: + frame.save(image_io, "dib") + + if bits != 32: + and_mask = Image.new("1", size) + ImageFile._save( + and_mask, + image_io, + [ImageFile._Tile("raw", (0, 0) + size, 0, ("1", 0, -1))], + ) + else: + frame.save(image_io, "png") + image_io.seek(0) + image_bytes = image_io.read() + if bmp: + image_bytes = image_bytes[:8] + o32(height * 2) + image_bytes[12:] + bytes_len = len(image_bytes) + fp.write(o32(bytes_len)) # dwBytesInRes(4) + fp.write(o32(offset)) # dwImageOffset(4) + current = fp.tell() + fp.seek(offset) + fp.write(image_bytes) + offset = offset + bytes_len + fp.seek(current) + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(_MAGIC) + + +class IconHeader(NamedTuple): + width: int + height: int + nb_color: int + reserved: int + planes: int + bpp: int + size: int + offset: int + dim: tuple[int, int] + square: int + color_depth: int + + +class IcoFile: + def __init__(self, buf: IO[bytes]) -> None: + """ + Parse image from file-like object containing ico file data + """ + + # check magic + s = buf.read(6) + if not _accept(s): + msg = "not an ICO file" + raise SyntaxError(msg) + + self.buf = buf + self.entry = [] + + # Number of items in file + self.nb_items = i16(s, 4) + + # Get headers for each item + for i in range(self.nb_items): + s = buf.read(16) + + # See Wikipedia + width = s[0] or 256 + height = s[1] or 256 + + # No. of colors in image (0 if >=8bpp) + nb_color = s[2] + bpp = i16(s, 6) + icon_header = IconHeader( + width=width, + height=height, + nb_color=nb_color, + reserved=s[3], + planes=i16(s, 4), + bpp=i16(s, 6), + size=i32(s, 8), + offset=i32(s, 12), + dim=(width, height), + square=width * height, + # See Wikipedia notes about color depth. + # We need this just to differ images with equal sizes + color_depth=bpp or (nb_color != 0 and ceil(log(nb_color, 2))) or 256, + ) + + self.entry.append(icon_header) + + self.entry = sorted(self.entry, key=lambda x: x.color_depth) + # ICO images are usually squares + self.entry = sorted(self.entry, key=lambda x: x.square, reverse=True) + + def sizes(self) -> set[tuple[int, int]]: + """ + Get a set of all available icon sizes and color depths. + """ + return {(h.width, h.height) for h in self.entry} + + def getentryindex(self, size: tuple[int, int], bpp: int | bool = False) -> int: + for i, h in enumerate(self.entry): + if size == h.dim and (bpp is False or bpp == h.color_depth): + return i + return 0 + + def getimage(self, size: tuple[int, int], bpp: int | bool = False) -> Image.Image: + """ + Get an image from the icon + """ + return self.frame(self.getentryindex(size, bpp)) + + def frame(self, idx: int) -> Image.Image: + """ + Get an image from frame idx + """ + + header = self.entry[idx] + + self.buf.seek(header.offset) + data = self.buf.read(8) + self.buf.seek(header.offset) + + im: Image.Image + if data[:8] == PngImagePlugin._MAGIC: + # png frame + im = PngImagePlugin.PngImageFile(self.buf) + Image._decompression_bomb_check(im.size) + else: + # XOR + AND mask bmp frame + im = BmpImagePlugin.DibImageFile(self.buf) + Image._decompression_bomb_check(im.size) + + # change tile dimension to only encompass XOR image + im._size = (im.size[0], int(im.size[1] / 2)) + d, e, o, a = im.tile[0] + im.tile[0] = ImageFile._Tile(d, (0, 0) + im.size, o, a) + + # figure out where AND mask image starts + if header.bpp == 32: + # 32-bit color depth icon image allows semitransparent areas + # PIL's DIB format ignores transparency bits, recover them. + # The DIB is packed in BGRX byte order where X is the alpha + # channel. + + # Back up to start of bmp data + self.buf.seek(o) + # extract every 4th byte (eg. 3,7,11,15,...) + alpha_bytes = self.buf.read(im.size[0] * im.size[1] * 4)[3::4] + + # convert to an 8bpp grayscale image + try: + mask = Image.frombuffer( + "L", # 8bpp + im.size, # (w, h) + alpha_bytes, # source chars + "raw", # raw decoder + ("L", 0, -1), # 8bpp inverted, unpadded, reversed + ) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + mask = None + else: + raise + else: + # get AND image from end of bitmap + w = im.size[0] + if (w % 32) > 0: + # bitmap row data is aligned to word boundaries + w += 32 - (im.size[0] % 32) + + # the total mask data is + # padded row size * height / bits per char + + total_bytes = int((w * im.size[1]) / 8) + and_mask_offset = header.offset + header.size - total_bytes + + self.buf.seek(and_mask_offset) + mask_data = self.buf.read(total_bytes) + + # convert raw data to image + try: + mask = Image.frombuffer( + "1", # 1 bpp + im.size, # (w, h) + mask_data, # source chars + "raw", # raw decoder + ("1;I", int(w / 8), -1), # 1bpp inverted, padded, reversed + ) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + mask = None + else: + raise + + # now we have two images, im is XOR image and mask is AND image + + # apply mask image as alpha channel + if mask: + im = im.convert("RGBA") + im.putalpha(mask) + + return im + + +## +# Image plugin for Windows Icon files. + + +class IcoImageFile(ImageFile.ImageFile): + """ + PIL read-only image support for Microsoft Windows .ico files. + + By default the largest resolution image in the file will be loaded. This + can be changed by altering the 'size' attribute before calling 'load'. + + The info dictionary has a key 'sizes' that is a list of the sizes available + in the icon file. + + Handles classic, XP and Vista icon formats. + + When saving, PNG compression is used. Support for this was only added in + Windows Vista. If you are unable to view the icon in Windows, convert the + image to "RGBA" mode before saving. + + This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis + . + https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki + """ + + format = "ICO" + format_description = "Windows Icon" + + def _open(self) -> None: + self.ico = IcoFile(self.fp) + self.info["sizes"] = self.ico.sizes() + self.size = self.ico.entry[0].dim + self.load() + + @property + def size(self) -> tuple[int, int]: + return self._size + + @size.setter + def size(self, value: tuple[int, int]) -> None: + if value not in self.info["sizes"]: + msg = "This is not one of the allowed sizes of this image" + raise ValueError(msg) + self._size = value + + def load(self) -> Image.core.PixelAccess | None: + if self._im is not None and self.im.size == self.size: + # Already loaded + return Image.Image.load(self) + im = self.ico.getimage(self.size) + # if tile is PNG, it won't really be loaded yet + im.load() + self.im = im.im + self._mode = im.mode + if im.palette: + self.palette = im.palette + if im.size != self.size: + warnings.warn("Image was not the expected size") + + index = self.ico.getentryindex(self.size) + sizes = list(self.info["sizes"]) + sizes[index] = im.size + self.info["sizes"] = set(sizes) + + self.size = im.size + return Image.Image.load(self) + + def load_seek(self, pos: int) -> None: + # Flag the ImageFile.Parser so that it + # just does all the decode at the end. + pass + + +# +# -------------------------------------------------------------------- + + +Image.register_open(IcoImageFile.format, IcoImageFile, _accept) +Image.register_save(IcoImageFile.format, _save) +Image.register_extension(IcoImageFile.format, ".ico") + +Image.register_mime(IcoImageFile.format, "image/x-icon") diff --git a/myenv/lib/python3.10/site-packages/PIL/ImImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/ImImagePlugin.py new file mode 100644 index 0000000..71b9996 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImImagePlugin.py @@ -0,0 +1,389 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IFUNC IM file handling for PIL +# +# history: +# 1995-09-01 fl Created. +# 1997-01-03 fl Save palette images +# 1997-01-08 fl Added sequence support +# 1997-01-23 fl Added P and RGB save support +# 1997-05-31 fl Read floating point images +# 1997-06-22 fl Save floating point images +# 1997-08-27 fl Read and save 1-bit images +# 1998-06-25 fl Added support for RGB+LUT images +# 1998-07-02 fl Added support for YCC images +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 1998-12-29 fl Added I;16 support +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# 2003-09-26 fl Added LA/PA support +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +import re +from typing import IO, Any + +from . import Image, ImageFile, ImagePalette +from ._util import DeferredError + +# -------------------------------------------------------------------- +# Standard tags + +COMMENT = "Comment" +DATE = "Date" +EQUIPMENT = "Digitalization equipment" +FRAMES = "File size (no of images)" +LUT = "Lut" +NAME = "Name" +SCALE = "Scale (x,y)" +SIZE = "Image size (x*y)" +MODE = "Image type" + +TAGS = { + COMMENT: 0, + DATE: 0, + EQUIPMENT: 0, + FRAMES: 0, + LUT: 0, + NAME: 0, + SCALE: 0, + SIZE: 0, + MODE: 0, +} + +OPEN = { + # ifunc93/p3cfunc formats + "0 1 image": ("1", "1"), + "L 1 image": ("1", "1"), + "Greyscale image": ("L", "L"), + "Grayscale image": ("L", "L"), + "RGB image": ("RGB", "RGB;L"), + "RLB image": ("RGB", "RLB"), + "RYB image": ("RGB", "RLB"), + "B1 image": ("1", "1"), + "B2 image": ("P", "P;2"), + "B4 image": ("P", "P;4"), + "X 24 image": ("RGB", "RGB"), + "L 32 S image": ("I", "I;32"), + "L 32 F image": ("F", "F;32"), + # old p3cfunc formats + "RGB3 image": ("RGB", "RGB;T"), + "RYB3 image": ("RGB", "RYB;T"), + # extensions + "LA image": ("LA", "LA;L"), + "PA image": ("LA", "PA;L"), + "RGBA image": ("RGBA", "RGBA;L"), + "RGBX image": ("RGB", "RGBX;L"), + "CMYK image": ("CMYK", "CMYK;L"), + "YCC image": ("YCbCr", "YCbCr;L"), +} + +# ifunc95 extensions +for i in ["8", "8S", "16", "16S", "32", "32F"]: + OPEN[f"L {i} image"] = ("F", f"F;{i}") + OPEN[f"L*{i} image"] = ("F", f"F;{i}") +for i in ["16", "16L", "16B"]: + OPEN[f"L {i} image"] = (f"I;{i}", f"I;{i}") + OPEN[f"L*{i} image"] = (f"I;{i}", f"I;{i}") +for i in ["32S"]: + OPEN[f"L {i} image"] = ("I", f"I;{i}") + OPEN[f"L*{i} image"] = ("I", f"I;{i}") +for j in range(2, 33): + OPEN[f"L*{j} image"] = ("F", f"F;{j}") + + +# -------------------------------------------------------------------- +# Read IM directory + +split = re.compile(rb"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") + + +def number(s: Any) -> float: + try: + return int(s) + except ValueError: + return float(s) + + +## +# Image plugin for the IFUNC IM file format. + + +class ImImageFile(ImageFile.ImageFile): + format = "IM" + format_description = "IFUNC Image Memory" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # Quick rejection: if there's not an LF among the first + # 100 bytes, this is (probably) not a text header. + + if b"\n" not in self.fp.read(100): + msg = "not an IM file" + raise SyntaxError(msg) + self.fp.seek(0) + + n = 0 + + # Default values + self.info[MODE] = "L" + self.info[SIZE] = (512, 512) + self.info[FRAMES] = 1 + + self.rawmode = "L" + + while True: + s = self.fp.read(1) + + # Some versions of IFUNC uses \n\r instead of \r\n... + if s == b"\r": + continue + + if not s or s == b"\0" or s == b"\x1a": + break + + # FIXME: this may read whole file if not a text file + s = s + self.fp.readline() + + if len(s) > 100: + msg = "not an IM file" + raise SyntaxError(msg) + + if s.endswith(b"\r\n"): + s = s[:-2] + elif s.endswith(b"\n"): + s = s[:-1] + + try: + m = split.match(s) + except re.error as e: + msg = "not an IM file" + raise SyntaxError(msg) from e + + if m: + k, v = m.group(1, 2) + + # Don't know if this is the correct encoding, + # but a decent guess (I guess) + k = k.decode("latin-1", "replace") + v = v.decode("latin-1", "replace") + + # Convert value as appropriate + if k in [FRAMES, SCALE, SIZE]: + v = v.replace("*", ",") + v = tuple(map(number, v.split(","))) + if len(v) == 1: + v = v[0] + elif k == MODE and v in OPEN: + v, self.rawmode = OPEN[v] + + # Add to dictionary. Note that COMMENT tags are + # combined into a list of strings. + if k == COMMENT: + if k in self.info: + self.info[k].append(v) + else: + self.info[k] = [v] + else: + self.info[k] = v + + if k in TAGS: + n += 1 + + else: + msg = f"Syntax error in IM header: {s.decode('ascii', 'replace')}" + raise SyntaxError(msg) + + if not n: + msg = "Not an IM file" + raise SyntaxError(msg) + + # Basic attributes + self._size = self.info[SIZE] + self._mode = self.info[MODE] + + # Skip forward to start of image data + while s and not s.startswith(b"\x1a"): + s = self.fp.read(1) + if not s: + msg = "File truncated" + raise SyntaxError(msg) + + if LUT in self.info: + # convert lookup table to palette or lut attribute + palette = self.fp.read(768) + greyscale = 1 # greyscale palette + linear = 1 # linear greyscale palette + for i in range(256): + if palette[i] == palette[i + 256] == palette[i + 512]: + if palette[i] != i: + linear = 0 + else: + greyscale = 0 + if self.mode in ["L", "LA", "P", "PA"]: + if greyscale: + if not linear: + self.lut = list(palette[:256]) + else: + if self.mode in ["L", "P"]: + self._mode = self.rawmode = "P" + elif self.mode in ["LA", "PA"]: + self._mode = "PA" + self.rawmode = "PA;L" + self.palette = ImagePalette.raw("RGB;L", palette) + elif self.mode == "RGB": + if not greyscale or not linear: + self.lut = list(palette) + + self.frame = 0 + + self.__offset = offs = self.fp.tell() + + self._fp = self.fp # FIXME: hack + + if self.rawmode.startswith("F;"): + # ifunc95 formats + try: + # use bit decoder (if necessary) + bits = int(self.rawmode[2:]) + if bits not in [8, 16, 32]: + self.tile = [ + ImageFile._Tile( + "bit", (0, 0) + self.size, offs, (bits, 8, 3, 0, -1) + ) + ] + return + except ValueError: + pass + + if self.rawmode in ["RGB;T", "RYB;T"]: + # Old LabEye/3PC files. Would be very surprised if anyone + # ever stumbled upon such a file ;-) + size = self.size[0] * self.size[1] + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offs, ("G", 0, -1)), + ImageFile._Tile("raw", (0, 0) + self.size, offs + size, ("R", 0, -1)), + ImageFile._Tile( + "raw", (0, 0) + self.size, offs + 2 * size, ("B", 0, -1) + ), + ] + else: + # LabEye/IFUNC files + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1)) + ] + + @property + def n_frames(self) -> int: + return self.info[FRAMES] + + @property + def is_animated(self) -> bool: + return self.info[FRAMES] > 1 + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if isinstance(self._fp, DeferredError): + raise self._fp.ex + + self.frame = frame + + if self.mode == "1": + bits = 1 + else: + bits = 8 * len(self.mode) + + size = ((self.size[0] * bits + 7) // 8) * self.size[1] + offs = self.__offset + frame * size + + self.fp = self._fp + + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1)) + ] + + def tell(self) -> int: + return self.frame + + +# +# -------------------------------------------------------------------- +# Save IM files + + +SAVE = { + # mode: (im type, raw mode) + "1": ("0 1", "1"), + "L": ("Greyscale", "L"), + "LA": ("LA", "LA;L"), + "P": ("Greyscale", "P"), + "PA": ("LA", "PA;L"), + "I": ("L 32S", "I;32S"), + "I;16": ("L 16", "I;16"), + "I;16L": ("L 16L", "I;16L"), + "I;16B": ("L 16B", "I;16B"), + "F": ("L 32F", "F;32F"), + "RGB": ("RGB", "RGB;L"), + "RGBA": ("RGBA", "RGBA;L"), + "RGBX": ("RGBX", "RGBX;L"), + "CMYK": ("CMYK", "CMYK;L"), + "YCbCr": ("YCC", "YCbCr;L"), +} + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + image_type, rawmode = SAVE[im.mode] + except KeyError as e: + msg = f"Cannot save {im.mode} images as IM" + raise ValueError(msg) from e + + frames = im.encoderinfo.get("frames", 1) + + fp.write(f"Image type: {image_type} image\r\n".encode("ascii")) + if filename: + # Each line must be 100 characters or less, + # or: SyntaxError("not an IM file") + # 8 characters are used for "Name: " and "\r\n" + # Keep just the filename, ditch the potentially overlong path + if isinstance(filename, bytes): + filename = filename.decode("ascii") + name, ext = os.path.splitext(os.path.basename(filename)) + name = "".join([name[: 92 - len(ext)], ext]) + + fp.write(f"Name: {name}\r\n".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") + fp.write(b"\000" * (511 - fp.tell()) + b"\032") + if im.mode in ["P", "PA"]: + im_palette = im.im.getpalette("RGB", "RGB;L") + colors = len(im_palette) // 3 + palette = b"" + for i in range(3): + palette += im_palette[colors * i : colors * (i + 1)] + palette += b"\x00" * (256 - colors) + fp.write(palette) # 768 bytes + ImageFile._save( + im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, 0, -1))] + ) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(ImImageFile.format, ImImageFile) +Image.register_save(ImImageFile.format, _save) + +Image.register_extension(ImImageFile.format, ".im") diff --git a/myenv/lib/python3.10/site-packages/PIL/Image.py b/myenv/lib/python3.10/site-packages/PIL/Image.py new file mode 100644 index 0000000..d209405 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/Image.py @@ -0,0 +1,4245 @@ +# +# The Python Imaging Library. +# $Id$ +# +# the Image class wrapper +# +# partial release history: +# 1995-09-09 fl Created +# 1996-03-11 fl PIL release 0.0 (proof of concept) +# 1996-04-30 fl PIL release 0.1b1 +# 1999-07-28 fl PIL release 1.0 final +# 2000-06-07 fl PIL release 1.1 +# 2000-10-20 fl PIL release 1.1.1 +# 2001-05-07 fl PIL release 1.1.2 +# 2002-03-15 fl PIL release 1.1.3 +# 2003-05-10 fl PIL release 1.1.4 +# 2005-03-28 fl PIL release 1.1.5 +# 2006-12-02 fl PIL release 1.1.6 +# 2009-11-15 fl PIL release 1.1.7 +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from __future__ import annotations + +import abc +import atexit +import builtins +import io +import logging +import math +import os +import re +import struct +import sys +import tempfile +import warnings +from collections.abc import Callable, Iterator, MutableMapping, Sequence +from enum import IntEnum +from types import ModuleType +from typing import IO, Any, Literal, Protocol, cast + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION was removed in Pillow 9.0.0. +# Use __version__ instead. +from . import ( + ExifTags, + ImageMode, + TiffTags, + UnidentifiedImageError, + __version__, + _plugins, +) +from ._binary import i32le, o32be, o32le +from ._deprecate import deprecate +from ._util import DeferredError, is_path + +ElementTree: ModuleType | None +try: + from defusedxml import ElementTree +except ImportError: + ElementTree = None + +logger = logging.getLogger(__name__) + + +class DecompressionBombWarning(RuntimeWarning): + pass + + +class DecompressionBombError(Exception): + pass + + +WARN_POSSIBLE_FORMATS: bool = False + +# Limit to around a quarter gigabyte for a 24-bit (3 bpp) image +MAX_IMAGE_PIXELS: int | None = int(1024 * 1024 * 1024 // 4 // 3) + + +try: + # If the _imaging C module is not present, Pillow will not load. + # Note that other modules should not refer to _imaging directly; + # import Image and use the Image.core variable instead. + # Also note that Image.core is not a publicly documented interface, + # and should be considered private and subject to change. + from . import _imaging as core + + if __version__ != getattr(core, "PILLOW_VERSION", None): + msg = ( + "The _imaging extension was built for another version of Pillow or PIL:\n" + f"Core version: {getattr(core, 'PILLOW_VERSION', None)}\n" + f"Pillow version: {__version__}" + ) + raise ImportError(msg) + +except ImportError as v: + core = DeferredError.new(ImportError("The _imaging C module is not installed.")) + # Explanations for ways that we know we might have an import error + if str(v).startswith("Module use of python"): + # The _imaging C module is present, but not compiled for + # the right version (windows only). Print a warning, if + # possible. + warnings.warn( + "The _imaging extension was built for another version of Python.", + RuntimeWarning, + ) + elif str(v).startswith("The _imaging extension"): + warnings.warn(str(v), RuntimeWarning) + # Fail here anyway. Don't let people run with a mostly broken Pillow. + # see docs/porting.rst + raise + + +def isImageType(t: Any) -> TypeGuard[Image]: + """ + Checks if an object is an image object. + + .. warning:: + + This function is for internal use only. + + :param t: object to check if it's an image + :returns: True if the object is an image + """ + deprecate("Image.isImageType(im)", 12, "isinstance(im, Image.Image)") + return hasattr(t, "im") + + +# +# Constants + + +# transpose +class Transpose(IntEnum): + FLIP_LEFT_RIGHT = 0 + FLIP_TOP_BOTTOM = 1 + ROTATE_90 = 2 + ROTATE_180 = 3 + ROTATE_270 = 4 + TRANSPOSE = 5 + TRANSVERSE = 6 + + +# transforms (also defined in Imaging.h) +class Transform(IntEnum): + AFFINE = 0 + EXTENT = 1 + PERSPECTIVE = 2 + QUAD = 3 + MESH = 4 + + +# resampling filters (also defined in Imaging.h) +class Resampling(IntEnum): + NEAREST = 0 + BOX = 4 + BILINEAR = 2 + HAMMING = 5 + BICUBIC = 3 + LANCZOS = 1 + + +_filters_support = { + Resampling.BOX: 0.5, + Resampling.BILINEAR: 1.0, + Resampling.HAMMING: 1.0, + Resampling.BICUBIC: 2.0, + Resampling.LANCZOS: 3.0, +} + + +# dithers +class Dither(IntEnum): + NONE = 0 + ORDERED = 1 # Not yet implemented + RASTERIZE = 2 # Not yet implemented + FLOYDSTEINBERG = 3 # default + + +# palettes/quantizers +class Palette(IntEnum): + WEB = 0 + ADAPTIVE = 1 + + +class Quantize(IntEnum): + MEDIANCUT = 0 + MAXCOVERAGE = 1 + FASTOCTREE = 2 + LIBIMAGEQUANT = 3 + + +module = sys.modules[__name__] +for enum in (Transpose, Transform, Resampling, Dither, Palette, Quantize): + for item in enum: + setattr(module, item.name, item.value) + + +if hasattr(core, "DEFAULT_STRATEGY"): + DEFAULT_STRATEGY = core.DEFAULT_STRATEGY + FILTERED = core.FILTERED + HUFFMAN_ONLY = core.HUFFMAN_ONLY + RLE = core.RLE + FIXED = core.FIXED + + +# -------------------------------------------------------------------- +# Registries + +TYPE_CHECKING = False +if TYPE_CHECKING: + import mmap + from xml.etree.ElementTree import Element + + from IPython.lib.pretty import PrettyPrinter + + from . import ImageFile, ImageFilter, ImagePalette, ImageQt, TiffImagePlugin + from ._typing import CapsuleType, NumpyArray, StrOrBytesPath, TypeGuard +ID: list[str] = [] +OPEN: dict[ + str, + tuple[ + Callable[[IO[bytes], str | bytes], ImageFile.ImageFile], + Callable[[bytes], bool | str] | None, + ], +] = {} +MIME: dict[str, str] = {} +SAVE: dict[str, Callable[[Image, IO[bytes], str | bytes], None]] = {} +SAVE_ALL: dict[str, Callable[[Image, IO[bytes], str | bytes], None]] = {} +EXTENSION: dict[str, str] = {} +DECODERS: dict[str, type[ImageFile.PyDecoder]] = {} +ENCODERS: dict[str, type[ImageFile.PyEncoder]] = {} + +# -------------------------------------------------------------------- +# Modes + +_ENDIAN = "<" if sys.byteorder == "little" else ">" + + +def _conv_type_shape(im: Image) -> tuple[tuple[int, ...], str]: + m = ImageMode.getmode(im.mode) + shape: tuple[int, ...] = (im.height, im.width) + extra = len(m.bands) + if extra != 1: + shape += (extra,) + return shape, m.typestr + + +MODES = [ + "1", + "CMYK", + "F", + "HSV", + "I", + "I;16", + "I;16B", + "I;16L", + "I;16N", + "L", + "LA", + "La", + "LAB", + "P", + "PA", + "RGB", + "RGBA", + "RGBa", + "RGBX", + "YCbCr", +] + +# raw modes that may be memory mapped. NOTE: if you change this, you +# may have to modify the stride calculation in map.c too! +_MAPMODES = ("L", "P", "RGBX", "RGBA", "CMYK", "I;16", "I;16L", "I;16B") + + +def getmodebase(mode: str) -> str: + """ + Gets the "base" mode for given mode. This function returns "L" for + images that contain grayscale data, and "RGB" for images that + contain color data. + + :param mode: Input mode. + :returns: "L" or "RGB". + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).basemode + + +def getmodetype(mode: str) -> str: + """ + Gets the storage type mode. Given a mode, this function returns a + single-layer mode suitable for storing individual bands. + + :param mode: Input mode. + :returns: "L", "I", or "F". + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).basetype + + +def getmodebandnames(mode: str) -> tuple[str, ...]: + """ + Gets a list of individual band names. Given a mode, this function returns + a tuple containing the names of individual bands (use + :py:method:`~PIL.Image.getmodetype` to get the mode used to store each + individual band. + + :param mode: Input mode. + :returns: A tuple containing band names. The length of the tuple + gives the number of bands in an image of the given mode. + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).bands + + +def getmodebands(mode: str) -> int: + """ + Gets the number of individual bands for this mode. + + :param mode: Input mode. + :returns: The number of bands in this mode. + :exception KeyError: If the input mode was not a standard mode. + """ + return len(ImageMode.getmode(mode).bands) + + +# -------------------------------------------------------------------- +# Helpers + +_initialized = 0 + + +def preinit() -> None: + """ + Explicitly loads BMP, GIF, JPEG, PPM and PPM file format drivers. + + It is called when opening or saving images. + """ + + global _initialized + if _initialized >= 1: + return + + try: + from . import BmpImagePlugin + + assert BmpImagePlugin + except ImportError: + pass + try: + from . import GifImagePlugin + + assert GifImagePlugin + except ImportError: + pass + try: + from . import JpegImagePlugin + + assert JpegImagePlugin + except ImportError: + pass + try: + from . import PpmImagePlugin + + assert PpmImagePlugin + except ImportError: + pass + try: + from . import PngImagePlugin + + assert PngImagePlugin + except ImportError: + pass + + _initialized = 1 + + +def init() -> bool: + """ + Explicitly initializes the Python Imaging Library. This function + loads all available file format drivers. + + It is called when opening or saving images if :py:meth:`~preinit()` is + insufficient, and by :py:meth:`~PIL.features.pilinfo`. + """ + + global _initialized + if _initialized >= 2: + return False + + parent_name = __name__.rpartition(".")[0] + for plugin in _plugins: + try: + logger.debug("Importing %s", plugin) + __import__(f"{parent_name}.{plugin}", globals(), locals(), []) + except ImportError as e: + logger.debug("Image: failed to import %s: %s", plugin, e) + + if OPEN or SAVE: + _initialized = 2 + return True + return False + + +# -------------------------------------------------------------------- +# Codec factories (used by tobytes/frombytes and ImageFile.load) + + +def _getdecoder( + mode: str, decoder_name: str, args: Any, extra: tuple[Any, ...] = () +) -> core.ImagingDecoder | ImageFile.PyDecoder: + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + decoder = DECODERS[decoder_name] + except KeyError: + pass + else: + return decoder(mode, *args + extra) + + try: + # get decoder + decoder = getattr(core, f"{decoder_name}_decoder") + except AttributeError as e: + msg = f"decoder {decoder_name} not available" + raise OSError(msg) from e + return decoder(mode, *args + extra) + + +def _getencoder( + mode: str, encoder_name: str, args: Any, extra: tuple[Any, ...] = () +) -> core.ImagingEncoder | ImageFile.PyEncoder: + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + encoder = ENCODERS[encoder_name] + except KeyError: + pass + else: + return encoder(mode, *args + extra) + + try: + # get encoder + encoder = getattr(core, f"{encoder_name}_encoder") + except AttributeError as e: + msg = f"encoder {encoder_name} not available" + raise OSError(msg) from e + return encoder(mode, *args + extra) + + +# -------------------------------------------------------------------- +# Simple expression analyzer + + +class ImagePointTransform: + """ + Used with :py:meth:`~PIL.Image.Image.point` for single band images with more than + 8 bits, this represents an affine transformation, where the value is multiplied by + ``scale`` and ``offset`` is added. + """ + + def __init__(self, scale: float, offset: float) -> None: + self.scale = scale + self.offset = offset + + def __neg__(self) -> ImagePointTransform: + return ImagePointTransform(-self.scale, -self.offset) + + def __add__(self, other: ImagePointTransform | float) -> ImagePointTransform: + if isinstance(other, ImagePointTransform): + return ImagePointTransform( + self.scale + other.scale, self.offset + other.offset + ) + return ImagePointTransform(self.scale, self.offset + other) + + __radd__ = __add__ + + def __sub__(self, other: ImagePointTransform | float) -> ImagePointTransform: + return self + -other + + def __rsub__(self, other: ImagePointTransform | float) -> ImagePointTransform: + return other + -self + + def __mul__(self, other: ImagePointTransform | float) -> ImagePointTransform: + if isinstance(other, ImagePointTransform): + return NotImplemented + return ImagePointTransform(self.scale * other, self.offset * other) + + __rmul__ = __mul__ + + def __truediv__(self, other: ImagePointTransform | float) -> ImagePointTransform: + if isinstance(other, ImagePointTransform): + return NotImplemented + return ImagePointTransform(self.scale / other, self.offset / other) + + +def _getscaleoffset( + expr: Callable[[ImagePointTransform], ImagePointTransform | float], +) -> tuple[float, float]: + a = expr(ImagePointTransform(1, 0)) + return (a.scale, a.offset) if isinstance(a, ImagePointTransform) else (0, a) + + +# -------------------------------------------------------------------- +# Implementation wrapper + + +class SupportsGetData(Protocol): + def getdata( + self, + ) -> tuple[Transform, Sequence[int]]: ... + + +class Image: + """ + This class represents an image object. To create + :py:class:`~PIL.Image.Image` objects, use the appropriate factory + functions. There's hardly ever any reason to call the Image constructor + directly. + + * :py:func:`~PIL.Image.open` + * :py:func:`~PIL.Image.new` + * :py:func:`~PIL.Image.frombytes` + """ + + format: str | None = None + format_description: str | None = None + _close_exclusive_fp_after_loading = True + + def __init__(self) -> None: + # FIXME: take "new" parameters / other image? + self._im: core.ImagingCore | DeferredError | None = None + self._mode = "" + self._size = (0, 0) + self.palette: ImagePalette.ImagePalette | None = None + self.info: dict[str | tuple[int, int], Any] = {} + self.readonly = 0 + self._exif: Exif | None = None + + @property + def im(self) -> core.ImagingCore: + if isinstance(self._im, DeferredError): + raise self._im.ex + assert self._im is not None + return self._im + + @im.setter + def im(self, im: core.ImagingCore) -> None: + self._im = im + + @property + def width(self) -> int: + return self.size[0] + + @property + def height(self) -> int: + return self.size[1] + + @property + def size(self) -> tuple[int, int]: + return self._size + + @property + def mode(self) -> str: + return self._mode + + @property + def readonly(self) -> int: + return (self._im and self._im.readonly) or self._readonly + + @readonly.setter + def readonly(self, readonly: int) -> None: + self._readonly = readonly + + def _new(self, im: core.ImagingCore) -> Image: + new = Image() + new.im = im + new._mode = im.mode + new._size = im.size + if im.mode in ("P", "PA"): + if self.palette: + new.palette = self.palette.copy() + else: + from . import ImagePalette + + new.palette = ImagePalette.ImagePalette() + new.info = self.info.copy() + return new + + # Context manager support + def __enter__(self): + return self + + def __exit__(self, *args): + from . import ImageFile + + if isinstance(self, ImageFile.ImageFile): + if getattr(self, "_exclusive_fp", False): + self._close_fp() + self.fp = None + + def close(self) -> None: + """ + This operation will destroy the image core and release its memory. + The image data will be unusable afterward. + + This function is required to close images that have multiple frames or + have not had their file read and closed by the + :py:meth:`~PIL.Image.Image.load` method. See :ref:`file-handling` for + more information. + """ + if getattr(self, "map", None): + if sys.platform == "win32" and hasattr(sys, "pypy_version_info"): + self.map.close() + self.map: mmap.mmap | None = None + + # Instead of simply setting to None, we're setting up a + # deferred error that will better explain that the core image + # object is gone. + self._im = DeferredError(ValueError("Operation on closed image")) + + def _copy(self) -> None: + self.load() + self.im = self.im.copy() + self.readonly = 0 + + def _ensure_mutable(self) -> None: + if self.readonly: + self._copy() + else: + self.load() + + def _dump( + self, file: str | None = None, format: str | None = None, **options: Any + ) -> str: + suffix = "" + if format: + suffix = f".{format}" + + if not file: + f, filename = tempfile.mkstemp(suffix) + os.close(f) + else: + filename = file + if not filename.endswith(suffix): + filename = filename + suffix + + self.load() + + if not format or format == "PPM": + self.im.save_ppm(filename) + else: + self.save(filename, format, **options) + + return filename + + def __eq__(self, other: object) -> bool: + if self.__class__ is not other.__class__: + return False + assert isinstance(other, Image) + return ( + self.mode == other.mode + and self.size == other.size + and self.info == other.info + and self.getpalette() == other.getpalette() + and self.tobytes() == other.tobytes() + ) + + def __repr__(self) -> str: + 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: + """IPython plain text display support""" + + # Same as __repr__ but without unpredictable id(self), + # to keep Jupyter notebook `text/plain` output stable. + p.text( + 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: + """Helper function for iPython display hook. + + :param image_format: Image format. + :returns: image as bytes, saved into the given format. + """ + b = io.BytesIO() + try: + self.save(b, image_format, **kwargs) + except Exception: + return None + return b.getvalue() + + def _repr_png_(self) -> bytes | None: + """iPython display hook support for PNG format. + + :returns: PNG version of the image as bytes + """ + return self._repr_image("PNG", compress_level=1) + + def _repr_jpeg_(self) -> bytes | None: + """iPython display hook support for JPEG format. + + :returns: JPEG version of the image as bytes + """ + return self._repr_image("JPEG") + + @property + def __array_interface__(self) -> dict[str, str | bytes | int | tuple[int, ...]]: + # numpy array interface support + new: dict[str, str | bytes | int | tuple[int, ...]] = {"version": 3} + if self.mode == "1": + # Binary images need to be extended from bits to bytes + # See: https://github.com/python-pillow/Pillow/issues/350 + new["data"] = self.tobytes("raw", "L") + else: + new["data"] = self.tobytes() + new["shape"], new["typestr"] = _conv_type_shape(self) + return new + + def __arrow_c_schema__(self) -> object: + self.load() + return self.im.__arrow_c_schema__() + + def __arrow_c_array__( + self, requested_schema: object | None = None + ) -> tuple[object, object]: + self.load() + return (self.im.__arrow_c_schema__(), self.im.__arrow_c_array__()) + + def __getstate__(self) -> list[Any]: + im_data = self.tobytes() # load image first + return [self.info, self.mode, self.size, self.getpalette(), im_data] + + def __setstate__(self, state: list[Any]) -> None: + Image.__init__(self) + info, mode, size, palette, data = state[:5] + self.info = info + self._mode = mode + self._size = size + self.im = core.new(mode, size) + if mode in ("L", "LA", "P", "PA") and palette: + self.putpalette(palette) + self.frombytes(data) + + def tobytes(self, encoder_name: str = "raw", *args: Any) -> bytes: + """ + Return image as a bytes object. + + .. warning:: + + This method returns raw image data derived from Pillow's internal + storage. For compressed image data (e.g. PNG, JPEG) use + :meth:`~.save`, with a BytesIO parameter for in-memory data. + + :param encoder_name: What encoder to use. + + The default is to use the standard "raw" encoder. + To see how this packs pixel data into the returned + bytes, see :file:`libImaging/Pack.c`. + + A list of C encoders can be seen under codecs + section of the function array in + :file:`_imaging.c`. Python encoders are registered + within the relevant plugins. + :param args: Extra arguments to the encoder. + :returns: A :py:class:`bytes` object. + """ + + encoder_args: Any = args + if len(encoder_args) == 1 and isinstance(encoder_args[0], tuple): + # may pass tuple instead of argument list + encoder_args = encoder_args[0] + + if encoder_name == "raw" and encoder_args == (): + encoder_args = self.mode + + self.load() + + if self.width == 0 or self.height == 0: + return b"" + + # unpack data + e = _getencoder(self.mode, encoder_name, encoder_args) + e.setimage(self.im) + + from . import ImageFile + + bufsize = max(ImageFile.MAXBLOCK, self.size[0] * 4) # see RawEncode.c + + output = [] + while True: + bytes_consumed, errcode, data = e.encode(bufsize) + output.append(data) + if errcode: + break + if errcode < 0: + msg = f"encoder error {errcode} in tobytes" + raise RuntimeError(msg) + + return b"".join(output) + + def tobitmap(self, name: str = "image") -> bytes: + """ + Returns the image converted to an X11 bitmap. + + .. note:: This method only works for mode "1" images. + + :param name: The name prefix to use for the bitmap variables. + :returns: A string containing an X11 bitmap. + :raises ValueError: If the mode is not "1" + """ + + self.load() + if self.mode != "1": + msg = "not a bitmap" + raise ValueError(msg) + data = self.tobytes("xbm") + return b"".join( + [ + f"#define {name}_width {self.size[0]}\n".encode("ascii"), + f"#define {name}_height {self.size[1]}\n".encode("ascii"), + f"static char {name}_bits[] = {{\n".encode("ascii"), + data, + b"};", + ] + ) + + def frombytes( + self, + data: bytes | bytearray | SupportsArrayInterface, + decoder_name: str = "raw", + *args: Any, + ) -> None: + """ + Loads this image with pixel data from a bytes object. + + This method is similar to the :py:func:`~PIL.Image.frombytes` function, + but loads data into this image instead of creating a new image object. + """ + + if self.width == 0 or self.height == 0: + return + + decoder_args: Any = args + if len(decoder_args) == 1 and isinstance(decoder_args[0], tuple): + # may pass tuple instead of argument list + decoder_args = decoder_args[0] + + # default format + if decoder_name == "raw" and decoder_args == (): + decoder_args = self.mode + + # unpack data + d = _getdecoder(self.mode, decoder_name, decoder_args) + d.setimage(self.im) + s = d.decode(data) + + if s[0] >= 0: + msg = "not enough image data" + raise ValueError(msg) + if s[1] != 0: + msg = "cannot decode image data" + raise ValueError(msg) + + def load(self) -> core.PixelAccess | None: + """ + Allocates storage for the image and loads the pixel data. In + normal cases, you don't need to call this method, since the + Image class automatically loads an opened image when it is + accessed for the first time. + + If the file associated with the image was opened by Pillow, then this + method will close it. The exception to this is if the image has + multiple frames, in which case the file will be left open for seek + operations. See :ref:`file-handling` for more information. + + :returns: An image access object. + :rtype: :py:class:`.PixelAccess` + """ + if self._im is not None and self.palette and self.palette.dirty: + # realize palette + mode, arr = self.palette.getdata() + self.im.putpalette(self.palette.mode, mode, arr) + self.palette.dirty = 0 + self.palette.rawmode = None + if "transparency" in self.info and mode in ("LA", "PA"): + if isinstance(self.info["transparency"], int): + self.im.putpalettealpha(self.info["transparency"], 0) + else: + self.im.putpalettealphas(self.info["transparency"]) + self.palette.mode = "RGBA" + else: + self.palette.palette = self.im.getpalette( + self.palette.mode, self.palette.mode + ) + + if self._im is not None: + return self.im.pixel_access(self.readonly) + return None + + def verify(self) -> None: + """ + Verifies the contents of a file. For data read from a file, this + method attempts to determine if the file is broken, without + actually decoding the image data. If this method finds any + problems, it raises suitable exceptions. If you need to load + the image after using this method, you must reopen the image + file. + """ + pass + + def convert( + self, + mode: str | None = None, + matrix: tuple[float, ...] | None = None, + dither: Dither | None = None, + palette: Palette = Palette.WEB, + colors: int = 256, + ) -> Image: + """ + Returns a converted copy of this image. For the "P" mode, this + method translates pixels through the palette. If mode is + omitted, a mode is chosen so that all information in the image + and the palette can be represented without a palette. + + This supports all possible conversions between "L", "RGB" and "CMYK". The + ``matrix`` argument only supports "L" and "RGB". + + When translating a color image to grayscale (mode "L"), + the library uses the ITU-R 601-2 luma transform:: + + L = R * 299/1000 + G * 587/1000 + B * 114/1000 + + The default method of converting a grayscale ("L") or "RGB" + image into a bilevel (mode "1") image uses Floyd-Steinberg + dither to approximate the original image luminosity levels. If + dither is ``None``, all values larger than 127 are set to 255 (white), + all other values to 0 (black). To use other thresholds, use the + :py:meth:`~PIL.Image.Image.point` method. + + When converting from "RGBA" to "P" without a ``matrix`` argument, + this passes the operation to :py:meth:`~PIL.Image.Image.quantize`, + and ``dither`` and ``palette`` are ignored. + + When converting from "PA", if an "RGBA" palette is present, the alpha + channel from the image will be used instead of the values from the palette. + + :param mode: The requested mode. See: :ref:`concept-modes`. + :param matrix: An optional conversion matrix. If given, this + should be 4- or 12-tuple containing floating point values. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`Dither.NONE` or :data:`Dither.FLOYDSTEINBERG` + (default). Note that this is not used when ``matrix`` is supplied. + :param palette: Palette to use when converting from mode "RGB" + to "P". Available palettes are :data:`Palette.WEB` or + :data:`Palette.ADAPTIVE`. + :param colors: Number of colors to use for the :data:`Palette.ADAPTIVE` + palette. Defaults to 256. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if mode in ("BGR;15", "BGR;16", "BGR;24"): + deprecate(mode, 12) + + self.load() + + has_transparency = "transparency" in self.info + if not mode and self.mode == "P": + # determine default mode + if self.palette: + mode = self.palette.mode + else: + mode = "RGB" + if mode == "RGB" and has_transparency: + mode = "RGBA" + if not mode or (mode == self.mode and not matrix): + return self.copy() + + if matrix: + # matrix conversion + if mode not in ("L", "RGB"): + msg = "illegal conversion" + raise ValueError(msg) + im = self.im.convert_matrix(mode, matrix) + new_im = self._new(im) + if has_transparency and self.im.bands == 3: + transparency = new_im.info["transparency"] + + def convert_transparency( + m: tuple[float, ...], v: tuple[int, int, int] + ) -> int: + value = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * 0.5 + return max(0, min(255, int(value))) + + if mode == "L": + transparency = convert_transparency(matrix, transparency) + elif len(mode) == 3: + transparency = tuple( + convert_transparency(matrix[i * 4 : i * 4 + 4], transparency) + for i in range(len(transparency)) + ) + new_im.info["transparency"] = transparency + return new_im + + if mode == "P" and self.mode == "RGBA": + return self.quantize(colors) + + trns = None + delete_trns = False + # transparency handling + if has_transparency: + if (self.mode in ("1", "L", "I", "I;16") and mode in ("LA", "RGBA")) or ( + self.mode == "RGB" and mode in ("La", "LA", "RGBa", "RGBA") + ): + # Use transparent conversion to promote from transparent + # color to an alpha channel. + new_im = self._new( + self.im.convert_transparent(mode, self.info["transparency"]) + ) + del new_im.info["transparency"] + return new_im + elif self.mode in ("L", "RGB", "P") and mode in ("L", "RGB", "P"): + t = self.info["transparency"] + if isinstance(t, bytes): + # Dragons. This can't be represented by a single color + warnings.warn( + "Palette images with Transparency expressed in bytes should be " + "converted to RGBA images" + ) + delete_trns = True + else: + # get the new transparency color. + # use existing conversions + trns_im = new(self.mode, (1, 1)) + if self.mode == "P": + assert self.palette is not None + trns_im.putpalette(self.palette, self.palette.mode) + if isinstance(t, tuple): + err = "Couldn't allocate a palette color for transparency" + assert trns_im.palette is not None + try: + t = trns_im.palette.getcolor(t, self) + except ValueError as e: + if str(e) == "cannot allocate more than 256 colors": + # If all 256 colors are in use, + # then there is no need for transparency + t = None + else: + raise ValueError(err) from e + if t is None: + trns = None + else: + trns_im.putpixel((0, 0), t) + + if mode in ("L", "RGB"): + trns_im = trns_im.convert(mode) + else: + # can't just retrieve the palette number, got to do it + # after quantization. + trns_im = trns_im.convert("RGB") + trns = trns_im.getpixel((0, 0)) + + elif self.mode == "P" and mode in ("LA", "PA", "RGBA"): + t = self.info["transparency"] + delete_trns = True + + if isinstance(t, bytes): + self.im.putpalettealphas(t) + elif isinstance(t, int): + self.im.putpalettealpha(t, 0) + else: + msg = "Transparency for P mode should be bytes or int" + raise ValueError(msg) + + if mode == "P" and palette == Palette.ADAPTIVE: + im = self.im.quantize(colors) + new_im = self._new(im) + from . import ImagePalette + + new_im.palette = ImagePalette.ImagePalette( + "RGB", new_im.im.getpalette("RGB") + ) + if delete_trns: + # This could possibly happen if we requantize to fewer colors. + # The transparency would be totally off in that case. + del new_im.info["transparency"] + if trns is not None: + try: + new_im.info["transparency"] = new_im.palette.getcolor( + cast(tuple[int, ...], trns), # trns was converted to RGB + new_im, + ) + except Exception: + # if we can't make a transparent color, don't leave the old + # transparency hanging around to mess us up. + del new_im.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + return new_im + + if "LAB" in (self.mode, mode): + im = self + if mode == "LAB": + if im.mode not in ("RGB", "RGBA", "RGBX"): + im = im.convert("RGBA") + other_mode = im.mode + else: + other_mode = mode + if other_mode in ("RGB", "RGBA", "RGBX"): + from . import ImageCms + + srgb = ImageCms.createProfile("sRGB") + lab = ImageCms.createProfile("LAB") + profiles = [lab, srgb] if im.mode == "LAB" else [srgb, lab] + transform = ImageCms.buildTransform( + profiles[0], profiles[1], im.mode, mode + ) + return transform.apply(im) + + # colorspace conversion + if dither is None: + dither = Dither.FLOYDSTEINBERG + + try: + im = self.im.convert(mode, dither) + except ValueError: + try: + # normalize source image and try again + modebase = getmodebase(self.mode) + if modebase == self.mode: + raise + im = self.im.convert(modebase) + im = im.convert(mode, dither) + except KeyError as e: + msg = "illegal conversion" + raise ValueError(msg) from e + + new_im = self._new(im) + if mode == "P" and palette != Palette.ADAPTIVE: + from . import ImagePalette + + new_im.palette = ImagePalette.ImagePalette("RGB", im.getpalette("RGB")) + if delete_trns: + # crash fail if we leave a bytes transparency in an rgb/l mode. + del new_im.info["transparency"] + if trns is not None: + if new_im.mode == "P" and new_im.palette: + try: + new_im.info["transparency"] = new_im.palette.getcolor( + cast(tuple[int, ...], trns), new_im # trns was converted to RGB + ) + except ValueError as e: + del new_im.info["transparency"] + if str(e) != "cannot allocate more than 256 colors": + # If all 256 colors are in use, + # then there is no need for transparency + warnings.warn( + "Couldn't allocate palette entry for transparency" + ) + else: + new_im.info["transparency"] = trns + return new_im + + def quantize( + self, + colors: int = 256, + method: int | None = None, + kmeans: int = 0, + palette: Image | None = None, + dither: Dither = Dither.FLOYDSTEINBERG, + ) -> Image: + """ + Convert the image to 'P' mode with the specified number + of colors. + + :param colors: The desired number of colors, <= 256 + :param method: :data:`Quantize.MEDIANCUT` (median cut), + :data:`Quantize.MAXCOVERAGE` (maximum coverage), + :data:`Quantize.FASTOCTREE` (fast octree), + :data:`Quantize.LIBIMAGEQUANT` (libimagequant; check support + using :py:func:`PIL.features.check_feature` with + ``feature="libimagequant"``). + + By default, :data:`Quantize.MEDIANCUT` will be used. + + The exception to this is RGBA images. :data:`Quantize.MEDIANCUT` + and :data:`Quantize.MAXCOVERAGE` do not support RGBA images, so + :data:`Quantize.FASTOCTREE` is used by default instead. + :param kmeans: Integer greater than or equal to zero. + :param palette: Quantize to the palette of given + :py:class:`PIL.Image.Image`. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`Dither.NONE` or :data:`Dither.FLOYDSTEINBERG` + (default). + :returns: A new image + """ + + self.load() + + if method is None: + # defaults: + method = Quantize.MEDIANCUT + if self.mode == "RGBA": + method = Quantize.FASTOCTREE + + if self.mode == "RGBA" and method not in ( + Quantize.FASTOCTREE, + Quantize.LIBIMAGEQUANT, + ): + # Caller specified an invalid mode. + msg = ( + "Fast Octree (method == 2) and libimagequant (method == 3) " + "are the only valid methods for quantizing RGBA images" + ) + raise ValueError(msg) + + if palette: + # use palette from reference image + palette.load() + if palette.mode != "P": + msg = "bad mode for palette image" + raise ValueError(msg) + if self.mode not in {"RGB", "L"}: + msg = "only RGB or L mode images can be quantized to a palette" + raise ValueError(msg) + im = self.im.convert("P", dither, palette.im) + new_im = self._new(im) + assert palette.palette is not None + new_im.palette = palette.palette.copy() + return new_im + + if kmeans < 0: + msg = "kmeans must not be negative" + raise ValueError(msg) + + im = self._new(self.im.quantize(colors, method, kmeans)) + + from . import ImagePalette + + mode = im.im.getpalettemode() + palette_data = im.im.getpalette(mode, mode)[: colors * len(mode)] + im.palette = ImagePalette.ImagePalette(mode, palette_data) + + return im + + def copy(self) -> Image: + """ + Copies this image. Use this method if you wish to paste things + into an image, but still retain the original. + + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + self.load() + return self._new(self.im.copy()) + + __copy__ = copy + + def crop(self, box: tuple[float, float, float, float] | None = None) -> Image: + """ + Returns a rectangular region from this image. The box is a + 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. + + Note: Prior to Pillow 3.4.0, this was a lazy operation. + + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if box is None: + return self.copy() + + if box[2] < box[0]: + msg = "Coordinate 'right' is less than 'left'" + raise ValueError(msg) + elif box[3] < box[1]: + msg = "Coordinate 'lower' is less than 'upper'" + raise ValueError(msg) + + self.load() + return self._new(self._crop(self.im, box)) + + def _crop( + self, im: core.ImagingCore, box: tuple[float, float, float, float] + ) -> core.ImagingCore: + """ + Returns a rectangular region from the core image object im. + + This is equivalent to calling im.crop((x0, y0, x1, y1)), but + includes additional sanity checks. + + :param im: a core image object + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :returns: A core image object. + """ + + x0, y0, x1, y1 = map(int, map(round, box)) + + absolute_values = (abs(x1 - x0), abs(y1 - y0)) + + _decompression_bomb_check(absolute_values) + + return im.crop((x0, y0, x1, y1)) + + def draft( + self, mode: str | None, size: tuple[int, int] | None + ) -> tuple[str, tuple[int, int, float, float]] | None: + """ + Configures the image file loader so it returns a version of the + image that as closely as possible matches the given mode and + size. For example, you can use this method to convert a color + JPEG to grayscale while loading it. + + If any changes are made, returns a tuple with the chosen ``mode`` and + ``box`` with coordinates of the original image within the altered one. + + Note that this method modifies the :py:class:`~PIL.Image.Image` object + in place. If the image has already been loaded, this method has no + effect. + + Note: This method is not implemented for most images. It is + currently implemented only for JPEG and MPO images. + + :param mode: The requested mode. + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + """ + pass + + def _expand(self, xmargin: int, ymargin: int | None = None) -> Image: + if ymargin is None: + ymargin = xmargin + self.load() + return self._new(self.im.expand(xmargin, ymargin)) + + def filter(self, filter: ImageFilter.Filter | type[ImageFilter.Filter]) -> Image: + """ + Filters this image using the given filter. For a list of + available filters, see the :py:mod:`~PIL.ImageFilter` module. + + :param filter: Filter kernel. + :returns: An :py:class:`~PIL.Image.Image` object.""" + + from . import ImageFilter + + self.load() + + if callable(filter): + filter = filter() + if not hasattr(filter, "filter"): + msg = "filter argument should be ImageFilter.Filter instance or class" + raise TypeError(msg) + + multiband = isinstance(filter, ImageFilter.MultibandFilter) + if self.im.bands == 1 or multiband: + return self._new(filter.filter(self.im)) + + ims = [ + self._new(filter.filter(self.im.getband(c))) for c in range(self.im.bands) + ] + return merge(self.mode, ims) + + def getbands(self) -> tuple[str, ...]: + """ + Returns a tuple containing the name of each band in this image. + For example, ``getbands`` on an RGB image returns ("R", "G", "B"). + + :returns: A tuple containing band names. + :rtype: tuple + """ + return ImageMode.getmode(self.mode).bands + + def getbbox(self, *, alpha_only: bool = True) -> tuple[int, int, int, int] | None: + """ + Calculates the bounding box of the non-zero regions in the + image. + + :param alpha_only: Optional flag, defaulting to ``True``. + If ``True`` and the image has an alpha channel, trim transparent pixels. + Otherwise, trim pixels when all channels are zero. + Keyword-only argument. + :returns: The bounding box is returned as a 4-tuple defining the + left, upper, right, and lower pixel coordinate. See + :ref:`coordinate-system`. If the image is completely empty, this + method returns None. + + """ + + self.load() + return self.im.getbbox(alpha_only) + + def getcolors( + self, maxcolors: int = 256 + ) -> list[tuple[int, tuple[int, ...]]] | list[tuple[int, float]] | None: + """ + Returns a list of colors used in this image. + + The colors will be in the image's mode. For example, an RGB image will + return a tuple of (red, green, blue) color values, and a P image will + return the index of the color in the palette. + + :param maxcolors: Maximum number of colors. If this number is + exceeded, this method returns None. The default limit is + 256 colors. + :returns: An unsorted list of (count, pixel) values. + """ + + self.load() + if self.mode in ("1", "L", "P"): + h = self.im.histogram() + out: list[tuple[int, float]] = [(h[i], i) for i in range(256) if h[i]] + if len(out) > maxcolors: + return None + return out + return self.im.getcolors(maxcolors) + + def getdata(self, band: int | None = None) -> core.ImagingCore: + """ + Returns the contents of this image as a sequence object + containing pixel values. The sequence object is flattened, so + that values for line one follow directly after the values of + line zero, and so on. + + Note that the sequence object returned by this method is an + internal PIL data type, which only supports certain sequence + operations. To convert it to an ordinary sequence (e.g. for + printing), use ``list(im.getdata())``. + + :param band: What band to return. The default is to return + all bands. To return a single band, pass in the index + value (e.g. 0 to get the "R" band from an "RGB" image). + :returns: A sequence-like object. + """ + + self.load() + if band is not None: + return self.im.getband(band) + return self.im # could be abused + + def getextrema(self) -> tuple[float, float] | tuple[tuple[int, int], ...]: + """ + Gets the minimum and maximum pixel values for each band in + the image. + + :returns: For a single-band image, a 2-tuple containing the + minimum and maximum pixel value. For a multi-band image, + a tuple containing one 2-tuple for each band. + """ + + self.load() + if self.im.bands > 1: + return tuple(self.im.getband(i).getextrema() for i in range(self.im.bands)) + return self.im.getextrema() + + def getxmp(self) -> dict[str, Any]: + """ + Returns a dictionary containing the XMP tags. + Requires defusedxml to be installed. + + :returns: XMP tags in a dictionary. + """ + + def get_name(tag: str) -> str: + return re.sub("^{[^}]+}", "", tag) + + def get_value(element: Element) -> str | dict[str, Any] | None: + value: dict[str, Any] = {get_name(k): v for k, v in element.attrib.items()} + children = list(element) + if children: + for child in children: + name = get_name(child.tag) + child_value = get_value(child) + if name in value: + if not isinstance(value[name], list): + value[name] = [value[name]] + value[name].append(child_value) + else: + value[name] = child_value + elif value: + if element.text: + value["text"] = element.text + else: + return element.text + return value + + if ElementTree is None: + warnings.warn("XMP data cannot be read without defusedxml dependency") + return {} + if "xmp" not in self.info: + return {} + root = ElementTree.fromstring(self.info["xmp"].rstrip(b"\x00 ")) + return {get_name(root.tag): get_value(root)} + + def getexif(self) -> Exif: + """ + Gets EXIF data from the image. + + :returns: an :py:class:`~PIL.Image.Exif` object. + """ + if self._exif is None: + self._exif = Exif() + elif self._exif._loaded: + return self._exif + self._exif._loaded = True + + exif_info = self.info.get("exif") + if exif_info is None: + if "Raw profile type exif" in self.info: + exif_info = bytes.fromhex( + "".join(self.info["Raw profile type exif"].split("\n")[3:]) + ) + elif hasattr(self, "tag_v2"): + self._exif.bigtiff = self.tag_v2._bigtiff + self._exif.endian = self.tag_v2._endian + self._exif.load_from_fp(self.fp, self.tag_v2._offset) + if exif_info is not None: + self._exif.load(exif_info) + + # XMP tags + if ExifTags.Base.Orientation not in self._exif: + xmp_tags = self.info.get("XML:com.adobe.xmp") + pattern: str | bytes = r'tiff:Orientation(="|>)([0-9])' + if not xmp_tags and (xmp_tags := self.info.get("xmp")): + pattern = rb'tiff:Orientation(="|>)([0-9])' + if xmp_tags: + match = re.search(pattern, xmp_tags) + if match: + self._exif[ExifTags.Base.Orientation] = int(match[2]) + + return self._exif + + def _reload_exif(self) -> None: + if self._exif is None or not self._exif._loaded: + return + self._exif._loaded = False + self.getexif() + + def get_child_images(self) -> list[ImageFile.ImageFile]: + from . import ImageFile + + deprecate("Image.Image.get_child_images", 13) + return ImageFile.ImageFile.get_child_images(self) # type: ignore[arg-type] + + def getim(self) -> CapsuleType: + """ + Returns a capsule that points to the internal image memory. + + :returns: A capsule object. + """ + + self.load() + return self.im.ptr + + def getpalette(self, rawmode: str | None = "RGB") -> list[int] | None: + """ + Returns the image palette as a list. + + :param rawmode: The mode in which to return the palette. ``None`` will + return the palette in its current mode. + + .. versionadded:: 9.1.0 + + :returns: A list of color values [r, g, b, ...], or None if the + image has no palette. + """ + + self.load() + try: + mode = self.im.getpalettemode() + except ValueError: + return None # no palette + if rawmode is None: + rawmode = mode + return list(self.im.getpalette(mode, rawmode)) + + @property + def has_transparency_data(self) -> bool: + """ + Determine if an image has transparency data, whether in the form of an + alpha channel, a palette with an alpha channel, or a "transparency" key + in the info dictionary. + + Note the image might still appear solid, if all of the values shown + within are opaque. + + :returns: A boolean. + """ + if ( + self.mode in ("LA", "La", "PA", "RGBA", "RGBa") + or "transparency" in self.info + ): + return True + if self.mode == "P": + assert self.palette is not None + return self.palette.mode.endswith("A") + return False + + def apply_transparency(self) -> None: + """ + If a P mode image has a "transparency" key in the info dictionary, + remove the key and instead apply the transparency to the palette. + Otherwise, the image is unchanged. + """ + if self.mode != "P" or "transparency" not in self.info: + return + + from . import ImagePalette + + palette = self.getpalette("RGBA") + assert palette is not None + transparency = self.info["transparency"] + if isinstance(transparency, bytes): + for i, alpha in enumerate(transparency): + palette[i * 4 + 3] = alpha + else: + palette[transparency * 4 + 3] = 0 + self.palette = ImagePalette.ImagePalette("RGBA", bytes(palette)) + self.palette.dirty = 1 + + del self.info["transparency"] + + def getpixel( + self, xy: tuple[int, int] | list[int] + ) -> float | tuple[int, ...] | None: + """ + Returns the pixel value at a given position. + + :param xy: The coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: The pixel value. If the image is a multi-layer image, + this method returns a tuple. + """ + + self.load() + return self.im.getpixel(tuple(xy)) + + def getprojection(self) -> tuple[list[int], list[int]]: + """ + Get projection to x and y axes + + :returns: Two sequences, indicating where there are non-zero + pixels along the X-axis and the Y-axis, respectively. + """ + + self.load() + x, y = self.im.getprojection() + return list(x), list(y) + + def histogram( + self, mask: Image | None = None, extrema: tuple[float, float] | None = None + ) -> list[int]: + """ + Returns a histogram for the image. The histogram is returned as a + list of pixel counts, one for each pixel value in the source + image. Counts are grouped into 256 bins for each band, even if + the image has more than 8 bits per band. If the image has more + than one band, the histograms for all bands are concatenated (for + example, the histogram for an "RGB" image contains 768 values). + + A bilevel image (mode "1") is treated as a grayscale ("L") image + by this method. + + If a mask is provided, the method returns a histogram for those + parts of the image where the mask image is non-zero. The mask + image must have the same size as the image, and be either a + bi-level image (mode "1") or a grayscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A list containing pixel counts. + """ + self.load() + if mask: + mask.load() + return self.im.histogram((0, 0), mask.im) + if self.mode in ("I", "F"): + return self.im.histogram( + extrema if extrema is not None else self.getextrema() + ) + return self.im.histogram() + + def entropy( + self, mask: Image | None = None, extrema: tuple[float, float] | None = None + ) -> float: + """ + Calculates and returns the entropy for the image. + + A bilevel image (mode "1") is treated as a grayscale ("L") + image by this method. + + If a mask is provided, the method employs the histogram for + those parts of the image where the mask image is non-zero. + The mask image must have the same size as the image, and be + either a bi-level image (mode "1") or a grayscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A float value representing the image entropy + """ + self.load() + if mask: + mask.load() + return self.im.entropy((0, 0), mask.im) + if self.mode in ("I", "F"): + return self.im.entropy( + extrema if extrema is not None else self.getextrema() + ) + return self.im.entropy() + + def paste( + self, + im: Image | str | float | tuple[float, ...], + box: Image | tuple[int, int, int, int] | tuple[int, int] | None = None, + mask: Image | None = None, + ) -> None: + """ + Pastes another image into this image. The box argument is either + a 2-tuple giving the upper left corner, a 4-tuple defining the + left, upper, right, and lower pixel coordinate, or None (same as + (0, 0)). See :ref:`coordinate-system`. If a 4-tuple is given, the size + of the pasted image must match the size of the region. + + If the modes don't match, the pasted image is converted to the mode of + this image (see the :py:meth:`~PIL.Image.Image.convert` method for + details). + + Instead of an image, the source can be a integer or tuple + containing pixel values. The method then fills the region + with the given color. When creating RGB images, you can + also use color strings as supported by the ImageColor module. + + If a mask is given, this method updates only the regions + indicated by the mask. You can use either "1", "L", "LA", "RGBA" + or "RGBa" images (if present, the alpha band is used as mask). + Where the mask is 255, the given image is copied as is. Where + the mask is 0, the current value is preserved. Intermediate + values will mix the two images together, including their alpha + channels if they have them. + + See :py:meth:`~PIL.Image.Image.alpha_composite` if you want to + combine images with respect to their alpha channels. + + :param im: Source image or pixel value (integer, float or tuple). + :param box: An optional 4-tuple giving the region to paste into. + If a 2-tuple is used instead, it's treated as the upper left + corner. If omitted or None, the source is pasted into the + upper left corner. + + If an image is given as the second argument and there is no + third, the box defaults to (0, 0), and the second argument + is interpreted as a mask image. + :param mask: An optional mask image. + """ + + if isinstance(box, Image): + if mask is not None: + msg = "If using second argument as mask, third argument must be None" + raise ValueError(msg) + # abbreviated paste(im, mask) syntax + mask = box + box = None + + if box is None: + box = (0, 0) + + if len(box) == 2: + # upper left corner given; get size from image or mask + if isinstance(im, Image): + size = im.size + elif isinstance(mask, Image): + size = mask.size + else: + # FIXME: use self.size here? + msg = "cannot determine region size; use 4-item box" + raise ValueError(msg) + box += (box[0] + size[0], box[1] + size[1]) + + source: core.ImagingCore | str | float | tuple[float, ...] + if isinstance(im, str): + from . import ImageColor + + source = ImageColor.getcolor(im, self.mode) + elif isinstance(im, Image): + im.load() + if self.mode != im.mode: + if self.mode != "RGB" or im.mode not in ("LA", "RGBA", "RGBa"): + # should use an adapter for this! + im = im.convert(self.mode) + source = im.im + else: + source = im + + self._ensure_mutable() + + if mask: + mask.load() + self.im.paste(source, box, mask.im) + else: + self.im.paste(source, box) + + def alpha_composite( + self, im: Image, dest: Sequence[int] = (0, 0), source: Sequence[int] = (0, 0) + ) -> None: + """'In-place' analog of Image.alpha_composite. Composites an image + onto this image. + + :param im: image to composite over this one + :param dest: Optional 2 tuple (left, top) specifying the upper + left corner in this (destination) image. + :param source: Optional 2 (left, top) tuple for the upper left + corner in the overlay source image, or 4 tuple (left, top, right, + bottom) for the bounds of the source rectangle + + Performance Note: Not currently implemented in-place in the core layer. + """ + + if not isinstance(source, (list, tuple)): + msg = "Source must be a list or tuple" + raise ValueError(msg) + if not isinstance(dest, (list, tuple)): + msg = "Destination must be a list or tuple" + raise ValueError(msg) + + if len(source) == 4: + overlay_crop_box = tuple(source) + elif len(source) == 2: + overlay_crop_box = tuple(source) + im.size + else: + msg = "Source must be a sequence of length 2 or 4" + raise ValueError(msg) + + if not len(dest) == 2: + msg = "Destination must be a sequence of length 2" + raise ValueError(msg) + if min(source) < 0: + msg = "Source must be non-negative" + raise ValueError(msg) + + # over image, crop if it's not the whole image. + if overlay_crop_box == (0, 0) + im.size: + overlay = im + else: + overlay = im.crop(overlay_crop_box) + + # target for the paste + box = tuple(dest) + (dest[0] + overlay.width, dest[1] + overlay.height) + + # destination image. don't copy if we're using the whole image. + if box == (0, 0) + self.size: + background = self + else: + background = self.crop(box) + + result = alpha_composite(background, overlay) + self.paste(result, box) + + def point( + self, + lut: ( + Sequence[float] + | NumpyArray + | Callable[[int], float] + | Callable[[ImagePointTransform], ImagePointTransform | float] + | ImagePointHandler + ), + mode: str | None = None, + ) -> Image: + """ + Maps this image through a lookup table or function. + + :param lut: A lookup table, containing 256 (or 65536 if + self.mode=="I" and mode == "L") values per band in the + image. A function can be used instead, it should take a + single argument. The function is called once for each + possible pixel value, and the resulting table is applied to + all bands of the image. + + It may also be an :py:class:`~PIL.Image.ImagePointHandler` + object:: + + class Example(Image.ImagePointHandler): + def point(self, im: Image) -> Image: + # Return result + :param mode: Output mode (default is same as input). This can only be used if + the source image has mode "L" or "P", and the output has mode "1" or the + source image mode is "I" and the output mode is "L". + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if isinstance(lut, ImagePointHandler): + return lut.point(self) + + if callable(lut): + # if it isn't a list, it should be a function + if self.mode in ("I", "I;16", "F"): + # check if the function can be used with point_transform + # UNDONE wiredfool -- I think this prevents us from ever doing + # a gamma function point transform on > 8bit images. + scale, offset = _getscaleoffset(lut) # type: ignore[arg-type] + return self._new(self.im.point_transform(scale, offset)) + # for other modes, convert the function to a table + flatLut = [lut(i) for i in range(256)] * self.im.bands # type: ignore[arg-type] + else: + flatLut = lut + + if self.mode == "F": + # FIXME: _imaging returns a confusing error message for this case + msg = "point operation not supported for this mode" + raise ValueError(msg) + + if mode != "F": + flatLut = [round(i) for i in flatLut] + return self._new(self.im.point(flatLut, mode)) + + def putalpha(self, alpha: Image | int) -> None: + """ + Adds or replaces the alpha layer in this image. If the image + does not have an alpha layer, it's converted to "LA" or "RGBA". + The new layer must be either "L" or "1". + + :param alpha: The new alpha layer. This can either be an "L" or "1" + image having the same size as this image, or an integer. + """ + + self._ensure_mutable() + + if self.mode not in ("LA", "PA", "RGBA"): + # attempt to promote self to a matching alpha mode + try: + mode = getmodebase(self.mode) + "A" + try: + self.im.setmode(mode) + except (AttributeError, ValueError) as e: + # do things the hard way + im = self.im.convert(mode) + if im.mode not in ("LA", "PA", "RGBA"): + msg = "alpha channel could not be added" + raise ValueError(msg) from e # sanity check + self.im = im + self._mode = self.im.mode + except KeyError as e: + msg = "illegal image mode" + raise ValueError(msg) from e + + if self.mode in ("LA", "PA"): + band = 1 + else: + band = 3 + + if isinstance(alpha, Image): + # alpha layer + if alpha.mode not in ("1", "L"): + msg = "illegal image mode" + raise ValueError(msg) + alpha.load() + if alpha.mode == "1": + alpha = alpha.convert("L") + else: + # constant alpha + try: + self.im.fillband(band, alpha) + except (AttributeError, ValueError): + # do things the hard way + alpha = new("L", self.size, alpha) + else: + return + + self.im.putband(alpha.im, band) + + def putdata( + self, + data: Sequence[float] | Sequence[Sequence[int]] | core.ImagingCore | NumpyArray, + scale: float = 1.0, + offset: float = 0.0, + ) -> None: + """ + Copies pixel data from a flattened sequence object into the image. The + values should start at the upper left corner (0, 0), continue to the + end of the line, followed directly by the first value of the second + line, and so on. Data will be read until either the image or the + sequence ends. The scale and offset values are used to adjust the + sequence values: **pixel = value*scale + offset**. + + :param data: A flattened sequence object. + :param scale: An optional scale value. The default is 1.0. + :param offset: An optional offset value. The default is 0.0. + """ + + self._ensure_mutable() + + self.im.putdata(data, scale, offset) + + def putpalette( + self, + data: ImagePalette.ImagePalette | bytes | Sequence[int], + rawmode: str = "RGB", + ) -> None: + """ + Attaches a palette to this image. The image must be a "P", "PA", "L" + or "LA" image. + + The palette sequence must contain at most 256 colors, made up of one + integer value for each channel in the raw mode. + For example, if the raw mode is "RGB", then it can contain at most 768 + values, made up of red, green and blue values for the corresponding pixel + index in the 256 colors. + If the raw mode is "RGBA", then it can contain at most 1024 values, + containing red, green, blue and alpha values. + + Alternatively, an 8-bit string may be used instead of an integer sequence. + + :param data: A palette sequence (either a list or a string). + :param rawmode: The raw mode of the palette. Either "RGB", "RGBA", or a mode + that can be transformed to "RGB" or "RGBA" (e.g. "R", "BGR;15", "RGBA;L"). + """ + from . import ImagePalette + + if self.mode not in ("L", "LA", "P", "PA"): + msg = "illegal image mode" + raise ValueError(msg) + if isinstance(data, ImagePalette.ImagePalette): + if data.rawmode is not None: + palette = ImagePalette.raw(data.rawmode, data.palette) + else: + palette = ImagePalette.ImagePalette(palette=data.palette) + palette.dirty = 1 + else: + if not isinstance(data, bytes): + data = bytes(data) + palette = ImagePalette.raw(rawmode, data) + self._mode = "PA" if "A" in self.mode else "P" + self.palette = palette + self.palette.mode = "RGBA" if "A" in rawmode else "RGB" + self.load() # install new palette + + def putpixel( + self, xy: tuple[int, int], value: float | tuple[int, ...] | list[int] + ) -> None: + """ + Modifies the pixel at the given position. The color is given as + a single numerical value for single-band images, and a tuple for + multi-band images. In addition to this, RGB and RGBA tuples are + accepted for P and PA images. + + Note that this method is relatively slow. For more extensive changes, + use :py:meth:`~PIL.Image.Image.paste` or the :py:mod:`~PIL.ImageDraw` + module instead. + + See: + + * :py:meth:`~PIL.Image.Image.paste` + * :py:meth:`~PIL.Image.Image.putdata` + * :py:mod:`~PIL.ImageDraw` + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param value: The pixel value. + """ + + if self.readonly: + self._copy() + self.load() + + if ( + self.mode in ("P", "PA") + and isinstance(value, (list, tuple)) + and len(value) in [3, 4] + ): + # RGB or RGBA value for a P or PA image + if self.mode == "PA": + alpha = value[3] if len(value) == 4 else 255 + value = value[:3] + assert self.palette is not None + palette_index = self.palette.getcolor(tuple(value), self) + value = (palette_index, alpha) if self.mode == "PA" else palette_index + return self.im.putpixel(xy, value) + + def remap_palette( + self, dest_map: list[int], source_palette: bytes | bytearray | None = None + ) -> Image: + """ + Rewrites the image to reorder the palette. + + :param dest_map: A list of indexes into the original palette. + e.g. ``[1,0]`` would swap a two item palette, and ``list(range(256))`` + is the identity transform. + :param source_palette: Bytes or None. + :returns: An :py:class:`~PIL.Image.Image` object. + + """ + from . import ImagePalette + + if self.mode not in ("L", "P"): + msg = "illegal image mode" + raise ValueError(msg) + + bands = 3 + palette_mode = "RGB" + if source_palette is None: + if self.mode == "P": + self.load() + palette_mode = self.im.getpalettemode() + if palette_mode == "RGBA": + bands = 4 + source_palette = self.im.getpalette(palette_mode, palette_mode) + else: # L-mode + source_palette = bytearray(i // 3 for i in range(768)) + elif len(source_palette) > 768: + bands = 4 + palette_mode = "RGBA" + + palette_bytes = b"" + new_positions = [0] * 256 + + # pick only the used colors from the palette + for i, oldPosition in enumerate(dest_map): + palette_bytes += source_palette[ + oldPosition * bands : oldPosition * bands + bands + ] + new_positions[oldPosition] = i + + # replace the palette color id of all pixel with the new id + + # Palette images are [0..255], mapped through a 1 or 3 + # byte/color map. We need to remap the whole image + # from palette 1 to palette 2. New_positions is + # an array of indexes into palette 1. Palette 2 is + # palette 1 with any holes removed. + + # We're going to leverage the convert mechanism to use the + # C code to remap the image from palette 1 to palette 2, + # by forcing the source image into 'L' mode and adding a + # mapping 'L' mode palette, then converting back to 'L' + # sans palette thus converting the image bytes, then + # assigning the optimized RGB palette. + + # perf reference, 9500x4000 gif, w/~135 colors + # 14 sec prepatch, 1 sec postpatch with optimization forced. + + mapping_palette = bytearray(new_positions) + + m_im = self.copy() + m_im._mode = "P" + + m_im.palette = ImagePalette.ImagePalette( + palette_mode, palette=mapping_palette * bands + ) + # possibly set palette dirty, then + # m_im.putpalette(mapping_palette, 'L') # converts to 'P' + # or just force it. + # UNDONE -- this is part of the general issue with palettes + m_im.im.putpalette(palette_mode, palette_mode + ";L", m_im.palette.tobytes()) + + m_im = m_im.convert("L") + + m_im.putpalette(palette_bytes, palette_mode) + m_im.palette = ImagePalette.ImagePalette(palette_mode, palette=palette_bytes) + + if "transparency" in self.info: + try: + m_im.info["transparency"] = dest_map.index(self.info["transparency"]) + except ValueError: + if "transparency" in m_im.info: + del m_im.info["transparency"] + + return m_im + + def _get_safe_box( + self, + size: tuple[int, int], + resample: Resampling, + box: tuple[float, float, float, float], + ) -> tuple[int, int, int, int]: + """Expands the box so it includes adjacent pixels + that may be used by resampling with the given resampling filter. + """ + filter_support = _filters_support[resample] - 0.5 + scale_x = (box[2] - box[0]) / size[0] + scale_y = (box[3] - box[1]) / size[1] + support_x = filter_support * scale_x + support_y = filter_support * scale_y + + return ( + max(0, int(box[0] - support_x)), + max(0, int(box[1] - support_y)), + min(self.size[0], math.ceil(box[2] + support_x)), + min(self.size[1], math.ceil(box[3] + support_y)), + ) + + def resize( + self, + size: tuple[int, int] | list[int] | NumpyArray, + resample: int | None = None, + box: tuple[float, float, float, float] | None = None, + reducing_gap: float | None = None, + ) -> Image: + """ + Returns a resized copy of this image. + + :param size: The requested size in pixels, as a tuple or array: + (width, height). + :param resample: An optional resampling filter. This can be + one of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If the image has mode "1" or "P", it is always set to + :py:data:`Resampling.NEAREST`. If the image mode is "BGR;15", + "BGR;16" or "BGR;24", then the default filter is + :py:data:`Resampling.NEAREST`. Otherwise, the default filter is + :py:data:`Resampling.BICUBIC`. See: :ref:`concept-filters`. + :param box: An optional 4-tuple of floats providing + the source image region to be scaled. + The values must be within (0, 0, width, height) rectangle. + If omitted or None, the entire source is used. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce`. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is None (no optimization). + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if resample is None: + bgr = self.mode.startswith("BGR;") + resample = Resampling.NEAREST if bgr else Resampling.BICUBIC + elif resample not in ( + Resampling.NEAREST, + Resampling.BILINEAR, + Resampling.BICUBIC, + Resampling.LANCZOS, + Resampling.BOX, + Resampling.HAMMING, + ): + msg = f"Unknown resampling filter ({resample})." + + filters = [ + f"{filter[1]} ({filter[0]})" + for filter in ( + (Resampling.NEAREST, "Image.Resampling.NEAREST"), + (Resampling.LANCZOS, "Image.Resampling.LANCZOS"), + (Resampling.BILINEAR, "Image.Resampling.BILINEAR"), + (Resampling.BICUBIC, "Image.Resampling.BICUBIC"), + (Resampling.BOX, "Image.Resampling.BOX"), + (Resampling.HAMMING, "Image.Resampling.HAMMING"), + ) + ] + msg += f" Use {', '.join(filters[:-1])} or {filters[-1]}" + raise ValueError(msg) + + if reducing_gap is not None and reducing_gap < 1.0: + msg = "reducing_gap must be 1.0 or greater" + raise ValueError(msg) + + if box is None: + box = (0, 0) + self.size + + size = tuple(size) + if self.size == size and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ("1", "P"): + resample = Resampling.NEAREST + + if self.mode in ["LA", "RGBA"] and resample != Resampling.NEAREST: + im = self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + im = im.resize(size, resample, box) + return im.convert(self.mode) + + self.load() + + if reducing_gap is not None and resample != Resampling.NEAREST: + factor_x = int((box[2] - box[0]) / size[0] / reducing_gap) or 1 + factor_y = int((box[3] - box[1]) / size[1] / reducing_gap) or 1 + if factor_x > 1 or factor_y > 1: + reduce_box = self._get_safe_box(size, cast(Resampling, resample), box) + factor = (factor_x, factor_y) + self = ( + self.reduce(factor, box=reduce_box) + if callable(self.reduce) + else Image.reduce(self, factor, box=reduce_box) + ) + box = ( + (box[0] - reduce_box[0]) / factor_x, + (box[1] - reduce_box[1]) / factor_y, + (box[2] - reduce_box[0]) / factor_x, + (box[3] - reduce_box[1]) / factor_y, + ) + + return self._new(self.im.resize(size, resample, box)) + + def reduce( + self, + factor: int | tuple[int, int], + box: tuple[int, int, int, int] | None = None, + ) -> Image: + """ + Returns a copy of the image reduced ``factor`` times. + If the size of the image is not dividable by ``factor``, + the resulting size will be rounded up. + + :param factor: A greater than 0 integer or tuple of two integers + for width and height separately. + :param box: An optional 4-tuple of ints providing + the source image region to be reduced. + The values must be within ``(0, 0, width, height)`` rectangle. + If omitted or ``None``, the entire source is used. + """ + if not isinstance(factor, (list, tuple)): + factor = (factor, factor) + + if box is None: + box = (0, 0) + self.size + + if factor == (1, 1) and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ["LA", "RGBA"]: + im = self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + im = im.reduce(factor, box) + return im.convert(self.mode) + + self.load() + + return self._new(self.im.reduce(factor, box)) + + def rotate( + self, + angle: float, + resample: Resampling = Resampling.NEAREST, + expand: int | bool = False, + center: tuple[float, float] | None = None, + translate: tuple[int, int] | None = None, + fillcolor: float | tuple[float, ...] | str | None = None, + ) -> Image: + """ + Returns a rotated copy of this image. This method returns a + copy of this image, rotated the given number of degrees counter + clockwise around its centre. + + :param angle: In degrees counter clockwise. + :param resample: An optional resampling filter. This can be + one of :py:data:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image has + mode "1" or "P", it is set to :py:data:`Resampling.NEAREST`. + See :ref:`concept-filters`. + :param expand: Optional expansion flag. If true, expands the output + image to make it large enough to hold the entire rotated image. + If false or omitted, make the output image the same size as the + input image. Note that the expand flag assumes rotation around + the center and no translation. + :param center: Optional center of rotation (a 2-tuple). Origin is + the upper left corner. Default is the center of the image. + :param translate: An optional post-rotate translation (a 2-tuple). + :param fillcolor: An optional color for area outside the rotated image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + angle = angle % 360.0 + + # Fast paths regardless of filter, as long as we're not + # translating or changing the center. + if not (center or translate): + if angle == 0: + return self.copy() + if angle == 180: + return self.transpose(Transpose.ROTATE_180) + if angle in (90, 270) and (expand or self.width == self.height): + return self.transpose( + Transpose.ROTATE_90 if angle == 90 else Transpose.ROTATE_270 + ) + + # Calculate the affine matrix. Note that this is the reverse + # transformation (from destination image to source) because we + # want to interpolate the (discrete) destination pixel from + # the local area around the (floating) source pixel. + + # The matrix we actually want (note that it operates from the right): + # (1, 0, tx) (1, 0, cx) ( cos a, sin a, 0) (1, 0, -cx) + # (0, 1, ty) * (0, 1, cy) * (-sin a, cos a, 0) * (0, 1, -cy) + # (0, 0, 1) (0, 0, 1) ( 0, 0, 1) (0, 0, 1) + + # The reverse matrix is thus: + # (1, 0, cx) ( cos -a, sin -a, 0) (1, 0, -cx) (1, 0, -tx) + # (0, 1, cy) * (-sin -a, cos -a, 0) * (0, 1, -cy) * (0, 1, -ty) + # (0, 0, 1) ( 0, 0, 1) (0, 0, 1) (0, 0, 1) + + # In any case, the final translation may be updated at the end to + # compensate for the expand flag. + + w, h = self.size + + if translate is None: + post_trans = (0, 0) + else: + post_trans = translate + if center is None: + center = (w / 2, h / 2) + + angle = -math.radians(angle) + matrix = [ + round(math.cos(angle), 15), + round(math.sin(angle), 15), + 0.0, + round(-math.sin(angle), 15), + round(math.cos(angle), 15), + 0.0, + ] + + def transform(x: float, y: float, matrix: list[float]) -> tuple[float, float]: + (a, b, c, d, e, f) = matrix + return a * x + b * y + c, d * x + e * y + f + + matrix[2], matrix[5] = transform( + -center[0] - post_trans[0], -center[1] - post_trans[1], matrix + ) + matrix[2] += center[0] + matrix[5] += center[1] + + if expand: + # calculate output size + xx = [] + yy = [] + for x, y in ((0, 0), (w, 0), (w, h), (0, h)): + transformed_x, transformed_y = transform(x, y, matrix) + xx.append(transformed_x) + yy.append(transformed_y) + nw = math.ceil(max(xx)) - math.floor(min(xx)) + nh = math.ceil(max(yy)) - math.floor(min(yy)) + + # We multiply a translation matrix from the right. Because of its + # special form, this is the same as taking the image of the + # translation vector as new translation vector. + matrix[2], matrix[5] = transform(-(nw - w) / 2.0, -(nh - h) / 2.0, matrix) + w, h = nw, nh + + return self.transform( + (w, h), Transform.AFFINE, matrix, resample, fillcolor=fillcolor + ) + + def save( + self, fp: StrOrBytesPath | IO[bytes], format: str | None = None, **params: Any + ) -> None: + """ + Saves this image under the given filename. If no format is + specified, the format to use is determined from the filename + extension, if possible. + + Keyword options can be used to provide additional instructions + to the writer. If a writer doesn't recognise an option, it is + silently ignored. The available options are described in the + :doc:`image format documentation + <../handbook/image-file-formats>` for each writer. + + You can use a file object instead of a filename. In this case, + you must always specify the format. The file object must + implement the ``seek``, ``tell``, and ``write`` + methods, and be opened in binary mode. + + :param fp: A filename (string), os.PathLike object or file object. + :param format: Optional format override. If omitted, the + format to use is determined from the filename extension. + If a file object was used instead of a filename, this + parameter should always be used. + :param params: Extra parameters to the image writer. These can also be + set on the image itself through ``encoderinfo``. This is useful when + saving multiple images:: + + # Saving XMP data to a single image + from PIL import Image + red = Image.new("RGB", (1, 1), "#f00") + red.save("out.mpo", xmp=b"test") + + # Saving XMP data to the second frame of an image + from PIL import Image + black = Image.new("RGB", (1, 1)) + red = Image.new("RGB", (1, 1), "#f00") + red.encoderinfo = {"xmp": b"test"} + black.save("out.mpo", save_all=True, append_images=[red]) + :returns: None + :exception ValueError: If the output format could not be determined + from the file name. Use the format option to solve this. + :exception OSError: If the file could not be written. The file + may have been created, and may contain partial data. + """ + + filename: str | bytes = "" + open_fp = False + if is_path(fp): + filename = os.fspath(fp) + open_fp = True + elif fp == sys.stdout: + try: + fp = sys.stdout.buffer + except AttributeError: + pass + if not filename and hasattr(fp, "name") and is_path(fp.name): + # only set the name for metadata purposes + filename = os.fspath(fp.name) + + preinit() + + filename_ext = os.path.splitext(filename)[1].lower() + ext = filename_ext.decode() if isinstance(filename_ext, bytes) else filename_ext + + if not format: + if ext not in EXTENSION: + init() + try: + format = EXTENSION[ext] + except KeyError as e: + msg = f"unknown file extension: {ext}" + raise ValueError(msg) from e + + from . import ImageFile + + # may mutate self! + if isinstance(self, ImageFile.ImageFile) and os.path.abspath( + filename + ) == os.path.abspath(self.filename): + self._ensure_mutable() + else: + self.load() + + save_all = params.pop("save_all", None) + self._default_encoderinfo = params + encoderinfo = getattr(self, "encoderinfo", {}) + self._attach_default_encoderinfo(self) + self.encoderconfig: tuple[Any, ...] = () + + if format.upper() not in SAVE: + init() + if save_all or ( + save_all is None + and params.get("append_images") + and format.upper() in SAVE_ALL + ): + save_handler = SAVE_ALL[format.upper()] + else: + save_handler = SAVE[format.upper()] + + created = False + if open_fp: + created = not os.path.exists(filename) + if params.get("append", False): + # Open also for reading ("+"), because TIFF save_all + # writer needs to go back and edit the written data. + fp = builtins.open(filename, "r+b") + else: + fp = builtins.open(filename, "w+b") + else: + fp = cast(IO[bytes], fp) + + try: + save_handler(self, fp, filename) + except Exception: + if open_fp: + fp.close() + if created: + try: + os.remove(filename) + except PermissionError: + pass + raise + finally: + self.encoderinfo = encoderinfo + if open_fp: + fp.close() + + def _attach_default_encoderinfo(self, im: Image) -> dict[str, Any]: + encoderinfo = getattr(self, "encoderinfo", {}) + self.encoderinfo = {**im._default_encoderinfo, **encoderinfo} + return encoderinfo + + def seek(self, frame: int) -> None: + """ + Seeks to the given frame in this sequence file. If you seek + beyond the end of the sequence, the method raises an + ``EOFError`` exception. When a sequence file is opened, the + library automatically seeks to frame 0. + + See :py:meth:`~PIL.Image.Image.tell`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :param frame: Frame number, starting at 0. + :exception EOFError: If the call attempts to seek beyond the end + of the sequence. + """ + + # overridden by file handlers + if frame != 0: + msg = "no more images in file" + raise EOFError(msg) + + def show(self, title: str | None = None) -> None: + """ + Displays this image. This method is mainly intended for debugging purposes. + + This method calls :py:func:`PIL.ImageShow.show` internally. You can use + :py:func:`PIL.ImageShow.register` to override its default behaviour. + + The image is first saved to a temporary file. By default, it will be in + PNG format. + + On Unix, the image is then opened using the **xdg-open**, **display**, + **gm**, **eog** or **xv** utility, depending on which one can be found. + + On macOS, the image is opened with the native Preview application. + + On Windows, the image is opened with the standard PNG display utility. + + :param title: Optional title to use for the image window, where possible. + """ + + _show(self, title=title) + + def split(self) -> tuple[Image, ...]: + """ + Split this image into individual bands. This method returns a + tuple of individual image bands from an image. For example, + splitting an "RGB" image creates three new images each + containing a copy of one of the original bands (red, green, + blue). + + If you need only one band, :py:meth:`~PIL.Image.Image.getchannel` + method can be more convenient and faster. + + :returns: A tuple containing bands. + """ + + self.load() + if self.im.bands == 1: + return (self.copy(),) + return tuple(map(self._new, self.im.split())) + + def getchannel(self, channel: int | str) -> Image: + """ + Returns an image containing a single channel of the source image. + + :param channel: What channel to return. Could be index + (0 for "R" channel of "RGB") or channel name + ("A" for alpha channel of "RGBA"). + :returns: An image in "L" mode. + + .. versionadded:: 4.3.0 + """ + self.load() + + if isinstance(channel, str): + try: + channel = self.getbands().index(channel) + except ValueError as e: + msg = f'The image has no channel "{channel}"' + raise ValueError(msg) from e + + return self._new(self.im.getband(channel)) + + def tell(self) -> int: + """ + Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :returns: Frame number, starting with 0. + """ + return 0 + + def thumbnail( + self, + size: tuple[float, float], + resample: Resampling = Resampling.BICUBIC, + reducing_gap: float | None = 2.0, + ) -> None: + """ + Make this image into a thumbnail. This method modifies the + image to contain a thumbnail version of itself, no larger than + the given size. This method calculates an appropriate thumbnail + size to preserve the aspect of the image, calls the + :py:meth:`~PIL.Image.Image.draft` method to configure the file reader + (where applicable), and finally resizes the image. + + Note that this function modifies the :py:class:`~PIL.Image.Image` + object in place. If you need to use the full resolution image as well, + apply this method to a :py:meth:`~PIL.Image.Image.copy` of the original + image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: Optional resampling filter. This can be one + of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If omitted, it defaults to :py:data:`Resampling.BICUBIC`. + (was :py:data:`Resampling.NEAREST` prior to version 2.5.0). + See: :ref:`concept-filters`. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce` or + :py:meth:`~PIL.Image.Image.draft` for JPEG images. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is 2.0 (very close to fair resampling + while still being faster in many cases). + :returns: None + """ + + provided_size = tuple(map(math.floor, size)) + + def preserve_aspect_ratio() -> tuple[int, int] | None: + def round_aspect(number: float, key: Callable[[int], float]) -> int: + return max(min(math.floor(number), math.ceil(number), key=key), 1) + + x, y = provided_size + if x >= self.width and y >= self.height: + return None + + aspect = self.width / self.height + if x / y >= aspect: + x = round_aspect(y * aspect, key=lambda n: abs(aspect - n / y)) + else: + y = round_aspect( + x / aspect, key=lambda n: 0 if n == 0 else abs(aspect - x / n) + ) + return x, y + + preserved_size = preserve_aspect_ratio() + if preserved_size is None: + return + final_size = preserved_size + + box = None + if reducing_gap is not None: + res = self.draft( + None, (int(size[0] * reducing_gap), int(size[1] * reducing_gap)) + ) + if res is not None: + box = res[1] + + if self.size != final_size: + im = self.resize(final_size, resample, box=box, reducing_gap=reducing_gap) + + self.im = im.im + self._size = final_size + self._mode = self.im.mode + + self.readonly = 0 + + # FIXME: the different transform methods need further explanation + # instead of bloating the method docs, add a separate chapter. + def transform( + self, + size: tuple[int, int], + method: Transform | ImageTransformHandler | SupportsGetData, + data: Sequence[Any] | None = None, + resample: int = Resampling.NEAREST, + fill: int = 1, + fillcolor: float | tuple[float, ...] | str | None = None, + ) -> Image: + """ + Transforms this image. This method creates a new image with the + given size, and the same mode as the original, and copies data + to the new image using the given transform. + + :param size: The output size in pixels, as a 2-tuple: + (width, height). + :param method: The transformation method. This is one of + :py:data:`Transform.EXTENT` (cut out a rectangular subregion), + :py:data:`Transform.AFFINE` (affine transform), + :py:data:`Transform.PERSPECTIVE` (perspective transform), + :py:data:`Transform.QUAD` (map a quadrilateral to a rectangle), or + :py:data:`Transform.MESH` (map a number of source quadrilaterals + in one operation). + + It may also be an :py:class:`~PIL.Image.ImageTransformHandler` + object:: + + class Example(Image.ImageTransformHandler): + def transform(self, size, data, resample, fill=1): + # Return result + + Implementations of :py:class:`~PIL.Image.ImageTransformHandler` + for some of the :py:class:`Transform` methods are provided + in :py:mod:`~PIL.ImageTransform`. + + It may also be an object with a ``method.getdata`` method + that returns a tuple supplying new ``method`` and ``data`` values:: + + class Example: + def getdata(self): + method = Image.Transform.EXTENT + data = (0, 0, 100, 100) + return method, data + :param data: Extra data to the transformation method. + :param resample: Optional resampling filter. It can be one of + :py:data:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image + has mode "1" or "P", it is set to :py:data:`Resampling.NEAREST`. + See: :ref:`concept-filters`. + :param fill: If ``method`` is an + :py:class:`~PIL.Image.ImageTransformHandler` object, this is one of + the arguments passed to it. Otherwise, it is unused. + :param fillcolor: Optional fill color for the area outside the + transform in the output image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if self.mode in ("LA", "RGBA") and resample != Resampling.NEAREST: + return ( + self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + .transform(size, method, data, resample, fill, fillcolor) + .convert(self.mode) + ) + + if isinstance(method, ImageTransformHandler): + return method.transform(size, self, resample=resample, fill=fill) + + if hasattr(method, "getdata"): + # compatibility w. old-style transform objects + method, data = method.getdata() + + if data is None: + msg = "missing method data" + raise ValueError(msg) + + im = new(self.mode, size, fillcolor) + if self.mode == "P" and self.palette: + im.palette = self.palette.copy() + im.info = self.info.copy() + if method == Transform.MESH: + # list of quads + for box, quad in data: + im.__transformer( + box, self, Transform.QUAD, quad, resample, fillcolor is None + ) + else: + im.__transformer( + (0, 0) + size, self, method, data, resample, fillcolor is None + ) + + return im + + def __transformer( + self, + box: tuple[int, int, int, int], + image: Image, + method: Transform, + data: Sequence[float], + resample: int = Resampling.NEAREST, + fill: bool = True, + ) -> None: + w = box[2] - box[0] + h = box[3] - box[1] + + if method == Transform.AFFINE: + data = data[:6] + + elif method == Transform.EXTENT: + # convert extent to an affine transform + x0, y0, x1, y1 = data + xs = (x1 - x0) / w + ys = (y1 - y0) / h + method = Transform.AFFINE + data = (xs, 0, x0, 0, ys, y0) + + elif method == Transform.PERSPECTIVE: + data = data[:8] + + elif method == Transform.QUAD: + # quadrilateral warp. data specifies the four corners + # given as NW, SW, SE, and NE. + nw = data[:2] + sw = data[2:4] + se = data[4:6] + ne = data[6:8] + x0, y0 = nw + As = 1.0 / w + At = 1.0 / h + data = ( + x0, + (ne[0] - x0) * As, + (sw[0] - x0) * At, + (se[0] - sw[0] - ne[0] + x0) * As * At, + y0, + (ne[1] - y0) * As, + (sw[1] - y0) * At, + (se[1] - sw[1] - ne[1] + y0) * As * At, + ) + + else: + msg = "unknown transformation method" + raise ValueError(msg) + + if resample not in ( + Resampling.NEAREST, + Resampling.BILINEAR, + Resampling.BICUBIC, + ): + if resample in (Resampling.BOX, Resampling.HAMMING, Resampling.LANCZOS): + unusable: dict[int, str] = { + Resampling.BOX: "Image.Resampling.BOX", + Resampling.HAMMING: "Image.Resampling.HAMMING", + Resampling.LANCZOS: "Image.Resampling.LANCZOS", + } + msg = unusable[resample] + f" ({resample}) cannot be used." + else: + msg = f"Unknown resampling filter ({resample})." + + filters = [ + f"{filter[1]} ({filter[0]})" + for filter in ( + (Resampling.NEAREST, "Image.Resampling.NEAREST"), + (Resampling.BILINEAR, "Image.Resampling.BILINEAR"), + (Resampling.BICUBIC, "Image.Resampling.BICUBIC"), + ) + ] + msg += f" Use {', '.join(filters[:-1])} or {filters[-1]}" + raise ValueError(msg) + + image.load() + + self.load() + + if image.mode in ("1", "P"): + resample = Resampling.NEAREST + + self.im.transform(box, image.im, method, data, resample, fill) + + def transpose(self, method: Transpose) -> Image: + """ + Transpose image (flip or rotate in 90 degree steps) + + :param method: One of :py:data:`Transpose.FLIP_LEFT_RIGHT`, + :py:data:`Transpose.FLIP_TOP_BOTTOM`, :py:data:`Transpose.ROTATE_90`, + :py:data:`Transpose.ROTATE_180`, :py:data:`Transpose.ROTATE_270`, + :py:data:`Transpose.TRANSPOSE` or :py:data:`Transpose.TRANSVERSE`. + :returns: Returns a flipped or rotated copy of this image. + """ + + self.load() + return self._new(self.im.transpose(method)) + + def effect_spread(self, distance: int) -> Image: + """ + Randomly spread pixels in an image. + + :param distance: Distance to spread pixels. + """ + self.load() + return self._new(self.im.effect_spread(distance)) + + def toqimage(self) -> ImageQt.ImageQt: + """Returns a QImage copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.toqimage(self) + + def toqpixmap(self) -> ImageQt.QPixmap: + """Returns a QPixmap copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.toqpixmap(self) + + +# -------------------------------------------------------------------- +# Abstract handlers. + + +class ImagePointHandler(abc.ABC): + """ + Used as a mixin by point transforms + (for use with :py:meth:`~PIL.Image.Image.point`) + """ + + @abc.abstractmethod + def point(self, im: Image) -> Image: + pass + + +class ImageTransformHandler(abc.ABC): + """ + Used as a mixin by geometry transforms + (for use with :py:meth:`~PIL.Image.Image.transform`) + """ + + @abc.abstractmethod + def transform( + self, + size: tuple[int, int], + image: Image, + **options: Any, + ) -> Image: + pass + + +# -------------------------------------------------------------------- +# Factories + + +def _check_size(size: Any) -> None: + """ + Common check to enforce type and sanity check on size tuples + + :param size: Should be a 2 tuple of (width, height) + :returns: None, or raises a ValueError + """ + + if not isinstance(size, (list, tuple)): + msg = "Size must be a list or tuple" + raise ValueError(msg) + if len(size) != 2: + msg = "Size must be a sequence of length 2" + raise ValueError(msg) + if size[0] < 0 or size[1] < 0: + msg = "Width and height must be >= 0" + raise ValueError(msg) + + +def new( + mode: str, + size: tuple[int, int] | list[int], + color: float | tuple[float, ...] | str | None = 0, +) -> Image: + """ + Creates a new image with the given mode and size. + + :param mode: The mode to use for the new image. See: + :ref:`concept-modes`. + :param size: A 2-tuple, containing (width, height) in pixels. + :param color: What color to use for the image. Default is black. + If given, this should be a single integer or floating point value + for single-band modes, and a tuple for multi-band modes (one value + per band). When creating RGB or HSV images, you can also use color + strings as supported by the ImageColor module. If the color is + None, the image is not initialised. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if mode in ("BGR;15", "BGR;16", "BGR;24"): + deprecate(mode, 12) + + _check_size(size) + + if color is None: + # don't initialize + return Image()._new(core.new(mode, size)) + + if isinstance(color, str): + # css3-style specifier + + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + + im = Image() + if ( + mode == "P" + and isinstance(color, (list, tuple)) + and all(isinstance(i, int) for i in color) + ): + color_ints: tuple[int, ...] = cast(tuple[int, ...], tuple(color)) + if len(color_ints) == 3 or len(color_ints) == 4: + # RGB or RGBA value for a P image + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette() + color = im.palette.getcolor(color_ints) + return im._new(core.fill(mode, size, color)) + + +def frombytes( + mode: str, + size: tuple[int, int], + data: bytes | bytearray | SupportsArrayInterface, + decoder_name: str = "raw", + *args: Any, +) -> Image: + """ + Creates a copy of an image memory from pixel data in a buffer. + + In its simplest form, this function takes three arguments + (mode, size, and unpacked pixel data). + + You can also use any pixel decoder supported by PIL. For more + information on available decoders, see the section + :ref:`Writing Your Own File Codec `. + + Note that this function decodes pixel data only, not entire images. + If you have an entire image in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load + it. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A byte buffer containing raw data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + im = new(mode, size) + if im.width != 0 and im.height != 0: + decoder_args: Any = args + if len(decoder_args) == 1 and isinstance(decoder_args[0], tuple): + # may pass tuple instead of argument list + decoder_args = decoder_args[0] + + if decoder_name == "raw" and decoder_args == (): + decoder_args = mode + + im.frombytes(data, decoder_name, decoder_args) + return im + + +def frombuffer( + mode: str, + size: tuple[int, int], + data: bytes | SupportsArrayInterface, + decoder_name: str = "raw", + *args: Any, +) -> Image: + """ + Creates an image memory referencing pixel data in a byte buffer. + + This function is similar to :py:func:`~PIL.Image.frombytes`, but uses data + in the byte buffer, where possible. This means that changes to the + original buffer object are reflected in this image). Not all modes can + share memory; supported modes include "L", "RGBX", "RGBA", and "CMYK". + + Note that this function decodes pixel data only, not entire images. + If you have an entire image file in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load it. + + The default parameters used for the "raw" decoder differs from that used for + :py:func:`~PIL.Image.frombytes`. This is a bug, and will probably be fixed in a + future release. The current release issues a warning if you do this; to disable + the warning, you should provide the full set of parameters. See below for details. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A bytes or other buffer object containing raw + data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. For the + default encoder ("raw"), it's recommended that you provide the + full set of parameters:: + + frombuffer(mode, size, data, "raw", mode, 0, 1) + + :returns: An :py:class:`~PIL.Image.Image` object. + + .. versionadded:: 1.1.4 + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw": + if args == (): + args = mode, 0, 1 + if args[0] in _MAPMODES: + im = new(mode, (0, 0)) + im = im._new(core.map_buffer(data, size, decoder_name, 0, args)) + if mode == "P": + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette("RGB", im.im.getpalette("RGB")) + im.readonly = 1 + return im + + return frombytes(mode, size, data, decoder_name, args) + + +class SupportsArrayInterface(Protocol): + """ + An object that has an ``__array_interface__`` dictionary. + """ + + @property + def __array_interface__(self) -> dict[str, Any]: + raise NotImplementedError() + + +class SupportsArrowArrayInterface(Protocol): + """ + An object that has an ``__arrow_c_array__`` method corresponding to the arrow c + data interface. + """ + + def __arrow_c_array__( + self, requested_schema: "PyCapsule" = None # type: ignore[name-defined] # noqa: F821, UP037 + ) -> tuple["PyCapsule", "PyCapsule"]: # type: ignore[name-defined] # noqa: F821, UP037 + raise NotImplementedError() + + +def fromarray(obj: SupportsArrayInterface, mode: str | None = None) -> Image: + """ + Creates an image memory from an object exporting the array interface + (using the buffer protocol):: + + from PIL import Image + import numpy as np + a = np.zeros((5, 5)) + im = Image.fromarray(a) + + If ``obj`` is not contiguous, then the ``tobytes`` method is called + and :py:func:`~PIL.Image.frombuffer` is used. + + In the case of NumPy, be aware that Pillow modes do not always correspond + to NumPy dtypes. Pillow modes only offer 1-bit pixels, 8-bit pixels, + 32-bit signed integer pixels, and 32-bit floating point pixels. + + Pillow images can also be converted to arrays:: + + from PIL import Image + import numpy as np + im = Image.open("hopper.jpg") + a = np.asarray(im) + + When converting Pillow images to arrays however, only pixel values are + transferred. This means that P and PA mode images will lose their palette. + + :param obj: Object with array interface + :param mode: Optional mode to use when reading ``obj``. Will be determined from + type if ``None``. Deprecated. + + This will not be used to convert the data after reading, but will be used to + change how the data is read:: + + from PIL import Image + import numpy as np + a = np.full((1, 1), 300) + im = Image.fromarray(a, mode="L") + im.getpixel((0, 0)) # 44 + im = Image.fromarray(a, mode="RGB") + im.getpixel((0, 0)) # (44, 1, 0) + + See: :ref:`concept-modes` for general information about modes. + :returns: An image object. + + .. versionadded:: 1.1.6 + """ + arr = obj.__array_interface__ + shape = arr["shape"] + ndim = len(shape) + strides = arr.get("strides", None) + if mode is None: + try: + typekey = (1, 1) + shape[2:], arr["typestr"] + except KeyError as e: + msg = "Cannot handle this data type" + raise TypeError(msg) from e + try: + mode, rawmode = _fromarray_typemap[typekey] + except KeyError as e: + typekey_shape, typestr = typekey + msg = f"Cannot handle this data type: {typekey_shape}, {typestr}" + raise TypeError(msg) from e + else: + deprecate("'mode' parameter", 13) + rawmode = mode + if mode in ["1", "L", "I", "P", "F"]: + ndmax = 2 + elif mode == "RGB": + ndmax = 3 + else: + ndmax = 4 + if ndim > ndmax: + msg = f"Too many dimensions: {ndim} > {ndmax}." + raise ValueError(msg) + + size = 1 if ndim == 1 else shape[1], shape[0] + if strides is not None: + if hasattr(obj, "tobytes"): + obj = obj.tobytes() + elif hasattr(obj, "tostring"): + obj = obj.tostring() + else: + msg = "'strides' requires either tobytes() or tostring()" + raise ValueError(msg) + + return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) + + +def fromarrow( + obj: SupportsArrowArrayInterface, mode: str, size: tuple[int, int] +) -> Image: + """Creates an image with zero-copy shared memory from an object exporting + the arrow_c_array interface protocol:: + + from PIL import Image + import pyarrow as pa + arr = pa.array([0]*(5*5*4), type=pa.uint8()) + im = Image.fromarrow(arr, 'RGBA', (5, 5)) + + If the data representation of the ``obj`` is not compatible with + Pillow internal storage, a ValueError is raised. + + Pillow images can also be converted to Arrow objects:: + + from PIL import Image + import pyarrow as pa + im = Image.open('hopper.jpg') + arr = pa.array(im) + + As with array support, when converting Pillow images to arrays, + only pixel values are transferred. This means that P and PA mode + images will lose their palette. + + :param obj: Object with an arrow_c_array interface + :param mode: Image mode. + :param size: Image size. This must match the storage of the arrow object. + :returns: An Image object + + Note that according to the Arrow spec, both the producer and the + consumer should consider the exported array to be immutable, as + unsynchronized updates will potentially cause inconsistent data. + + See: :ref:`arrow-support` for more detailed information + + .. versionadded:: 11.2.1 + + """ + if not hasattr(obj, "__arrow_c_array__"): + msg = "arrow_c_array interface not found" + raise ValueError(msg) + + (schema_capsule, array_capsule) = obj.__arrow_c_array__() + _im = core.new_arrow(mode, size, schema_capsule, array_capsule) + if _im: + return Image()._new(_im) + + msg = "new_arrow returned None without an exception" + raise ValueError(msg) + + +def fromqimage(im: ImageQt.QImage) -> ImageFile.ImageFile: + """Creates an image instance from a QImage image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.fromqimage(im) + + +def fromqpixmap(im: ImageQt.QPixmap) -> ImageFile.ImageFile: + """Creates an image instance from a QPixmap image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.fromqpixmap(im) + + +_fromarray_typemap = { + # (shape, typestr) => mode, rawmode + # first two members of shape are set to one + ((1, 1), "|b1"): ("1", "1;8"), + ((1, 1), "|u1"): ("L", "L"), + ((1, 1), "|i1"): ("I", "I;8"), + ((1, 1), "u2"): ("I", "I;16B"), + ((1, 1), "i2"): ("I", "I;16BS"), + ((1, 1), "u4"): ("I", "I;32B"), + ((1, 1), "i4"): ("I", "I;32BS"), + ((1, 1), "f4"): ("F", "F;32BF"), + ((1, 1), "f8"): ("F", "F;64BF"), + ((1, 1, 2), "|u1"): ("LA", "LA"), + ((1, 1, 3), "|u1"): ("RGB", "RGB"), + ((1, 1, 4), "|u1"): ("RGBA", "RGBA"), + # shortcuts: + ((1, 1), f"{_ENDIAN}i4"): ("I", "I"), + ((1, 1), f"{_ENDIAN}f4"): ("F", "F"), +} + + +def _decompression_bomb_check(size: tuple[int, int]) -> None: + if MAX_IMAGE_PIXELS is None: + return + + pixels = max(1, size[0]) * max(1, size[1]) + + if pixels > 2 * MAX_IMAGE_PIXELS: + msg = ( + f"Image size ({pixels} pixels) exceeds limit of {2 * MAX_IMAGE_PIXELS} " + "pixels, could be decompression bomb DOS attack." + ) + raise DecompressionBombError(msg) + + if pixels > MAX_IMAGE_PIXELS: + warnings.warn( + f"Image size ({pixels} pixels) exceeds limit of {MAX_IMAGE_PIXELS} pixels, " + "could be decompression bomb DOS attack.", + DecompressionBombWarning, + ) + + +def open( + fp: StrOrBytesPath | IO[bytes], + mode: Literal["r"] = "r", + formats: list[str] | tuple[str, ...] | None = None, +) -> ImageFile.ImageFile: + """ + Opens and identifies the given image file. + + This is a lazy operation; this function identifies the file, but + the file remains open and the actual image data is not read from + the file until you try to process the data (or call the + :py:meth:`~PIL.Image.Image.load` method). See + :py:func:`~PIL.Image.new`. See :ref:`file-handling`. + + :param fp: A filename (string), os.PathLike object or a file object. + The file object must implement ``file.read``, + ``file.seek``, and ``file.tell`` methods, + and be opened in binary mode. The file object will also seek to zero + before reading. + :param mode: The mode. If given, this argument must be "r". + :param formats: A list or tuple of formats to attempt to load the file in. + This can be used to restrict the set of formats checked. + Pass ``None`` to try all supported formats. You can print the set of + available formats by running ``python3 -m PIL`` or using + the :py:func:`PIL.features.pilinfo` function. + :returns: An :py:class:`~PIL.Image.Image` object. + :exception FileNotFoundError: If the file cannot be found. + :exception PIL.UnidentifiedImageError: If the image cannot be opened and + identified. + :exception ValueError: If the ``mode`` is not "r", or if a ``StringIO`` + instance is used for ``fp``. + :exception TypeError: If ``formats`` is not ``None``, a list or a tuple. + """ + + if mode != "r": + msg = f"bad mode {repr(mode)}" # type: ignore[unreachable] + raise ValueError(msg) + elif isinstance(fp, io.StringIO): + msg = ( # type: ignore[unreachable] + "StringIO cannot be used to open an image. " + "Binary data must be used instead." + ) + raise ValueError(msg) + + if formats is None: + formats = ID + elif not isinstance(formats, (list, tuple)): + msg = "formats must be a list or tuple" # type: ignore[unreachable] + raise TypeError(msg) + + exclusive_fp = False + filename: str | bytes = "" + if is_path(fp): + filename = os.fspath(fp) + fp = builtins.open(filename, "rb") + exclusive_fp = True + else: + fp = cast(IO[bytes], fp) + + try: + fp.seek(0) + except (AttributeError, io.UnsupportedOperation): + fp = io.BytesIO(fp.read()) + exclusive_fp = True + + prefix = fp.read(16) + + preinit() + + warning_messages: list[str] = [] + + def _open_core( + fp: IO[bytes], + filename: str | bytes, + prefix: bytes, + formats: list[str] | tuple[str, ...], + ) -> ImageFile.ImageFile | None: + for i in formats: + i = i.upper() + if i not in OPEN: + init() + try: + factory, accept = OPEN[i] + result = not accept or accept(prefix) + if isinstance(result, str): + warning_messages.append(result) + elif result: + fp.seek(0) + im = factory(fp, filename) + _decompression_bomb_check(im.size) + return im + except (SyntaxError, IndexError, TypeError, struct.error) as e: + if WARN_POSSIBLE_FORMATS: + warning_messages.append(i + " opening failed. " + str(e)) + except BaseException: + if exclusive_fp: + fp.close() + raise + return None + + im = _open_core(fp, filename, prefix, formats) + + if im is None and formats is ID: + checked_formats = ID.copy() + if init(): + im = _open_core( + fp, + filename, + prefix, + tuple(format for format in formats if format not in checked_formats), + ) + + if im: + im._exclusive_fp = exclusive_fp + return im + + if exclusive_fp: + fp.close() + for message in warning_messages: + warnings.warn(message) + msg = "cannot identify image file %r" % (filename if filename else fp) + raise UnidentifiedImageError(msg) + + +# +# Image processing. + + +def alpha_composite(im1: Image, im2: Image) -> Image: + """ + Alpha composite im2 over im1. + + :param im1: The first image. Must have mode RGBA. + :param im2: The second image. Must have mode RGBA, and the same size as + the first image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.alpha_composite(im1.im, im2.im)) + + +def blend(im1: Image, im2: Image, alpha: float) -> Image: + """ + Creates a new image by interpolating between two input images, using + a constant alpha:: + + out = image1 * (1.0 - alpha) + image2 * alpha + + :param im1: The first image. + :param im2: The second image. Must have the same mode and size as + the first image. + :param alpha: The interpolation alpha factor. If alpha is 0.0, a + copy of the first image is returned. If alpha is 1.0, a copy of + the second image is returned. There are no restrictions on the + alpha value. If necessary, the result is clipped to fit into + the allowed output range. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.blend(im1.im, im2.im, alpha)) + + +def composite(image1: Image, image2: Image, mask: Image) -> Image: + """ + Create composite image by blending images using a transparency mask. + + :param image1: The first image. + :param image2: The second image. Must have the same mode and + size as the first image. + :param mask: A mask image. This image can have mode + "1", "L", or "RGBA", and must have the same size as the + other two images. + """ + + image = image2.copy() + image.paste(image1, None, mask) + return image + + +def eval(image: Image, *args: Callable[[int], float]) -> Image: + """ + Applies the function (which should take one argument) to each pixel + in the given image. If the image has more than one band, the same + function is applied to each band. Note that the function is + evaluated once for each possible pixel value, so you cannot use + random components or other generators. + + :param image: The input image. + :param function: A function object, taking one integer argument. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + return image.point(args[0]) + + +def merge(mode: str, bands: Sequence[Image]) -> Image: + """ + Merge a set of single band images into a new multiband image. + + :param mode: The mode to use for the output image. See: + :ref:`concept-modes`. + :param bands: A sequence containing one single-band image for + each band in the output image. All bands must have the + same size. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if getmodebands(mode) != len(bands) or "*" in mode: + msg = "wrong number of bands" + raise ValueError(msg) + for band in bands[1:]: + if band.mode != getmodetype(mode): + msg = "mode mismatch" + raise ValueError(msg) + if band.size != bands[0].size: + msg = "size mismatch" + raise ValueError(msg) + for band in bands: + band.load() + return bands[0]._new(core.merge(mode, *[b.im for b in bands])) + + +# -------------------------------------------------------------------- +# Plugin registry + + +def register_open( + id: str, + factory: ( + Callable[[IO[bytes], str | bytes], ImageFile.ImageFile] + | type[ImageFile.ImageFile] + ), + accept: Callable[[bytes], bool | str] | None = None, +) -> None: + """ + Register an image file plugin. This function should not be used + in application code. + + :param id: An image format identifier. + :param factory: An image file factory method. + :param accept: An optional function that can be used to quickly + reject images having another format. + """ + id = id.upper() + if id not in ID: + ID.append(id) + OPEN[id] = factory, accept + + +def register_mime(id: str, mimetype: str) -> None: + """ + Registers an image MIME type by populating ``Image.MIME``. This function + should not be used in application code. + + ``Image.MIME`` provides a mapping from image format identifiers to mime + formats, but :py:meth:`~PIL.ImageFile.ImageFile.get_format_mimetype` can + provide a different result for specific images. + + :param id: An image format identifier. + :param mimetype: The image MIME type for this format. + """ + MIME[id.upper()] = mimetype + + +def register_save( + id: str, driver: Callable[[Image, IO[bytes], str | bytes], None] +) -> None: + """ + Registers an image save function. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE[id.upper()] = driver + + +def register_save_all( + id: str, driver: Callable[[Image, IO[bytes], str | bytes], None] +) -> None: + """ + Registers an image function to save all the frames + of a multiframe format. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE_ALL[id.upper()] = driver + + +def register_extension(id: str, extension: str) -> None: + """ + Registers an image extension. This function should not be + used in application code. + + :param id: An image format identifier. + :param extension: An extension used for this format. + """ + EXTENSION[extension.lower()] = id.upper() + + +def register_extensions(id: str, extensions: list[str]) -> None: + """ + Registers image extensions. This function should not be + used in application code. + + :param id: An image format identifier. + :param extensions: A list of extensions used for this format. + """ + for extension in extensions: + register_extension(id, extension) + + +def registered_extensions() -> dict[str, str]: + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + init() + return EXTENSION + + +def register_decoder(name: str, decoder: type[ImageFile.PyDecoder]) -> None: + """ + Registers an image decoder. This function should not be + used in application code. + + :param name: The name of the decoder + :param decoder: An ImageFile.PyDecoder object + + .. versionadded:: 4.1.0 + """ + DECODERS[name] = decoder + + +def register_encoder(name: str, encoder: type[ImageFile.PyEncoder]) -> None: + """ + Registers an image encoder. This function should not be + used in application code. + + :param name: The name of the encoder + :param encoder: An ImageFile.PyEncoder object + + .. versionadded:: 4.1.0 + """ + ENCODERS[name] = encoder + + +# -------------------------------------------------------------------- +# Simple display support. + + +def _show(image: Image, **options: Any) -> None: + from . import ImageShow + + ImageShow.show(image, **options) + + +# -------------------------------------------------------------------- +# Effects + + +def effect_mandelbrot( + size: tuple[int, int], extent: tuple[float, float, float, float], quality: int +) -> Image: + """ + Generate a Mandelbrot set covering the given extent. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param extent: The extent to cover, as a 4-tuple: + (x0, y0, x1, y1). + :param quality: Quality. + """ + return Image()._new(core.effect_mandelbrot(size, extent, quality)) + + +def effect_noise(size: tuple[int, int], sigma: float) -> Image: + """ + Generate Gaussian noise centered around 128. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param sigma: Standard deviation of noise. + """ + return Image()._new(core.effect_noise(size, sigma)) + + +def linear_gradient(mode: str) -> Image: + """ + Generate 256x256 linear gradient from black to white, top to bottom. + + :param mode: Input mode. + """ + return Image()._new(core.linear_gradient(mode)) + + +def radial_gradient(mode: str) -> Image: + """ + Generate 256x256 radial gradient from black to white, centre to edge. + + :param mode: Input mode. + """ + return Image()._new(core.radial_gradient(mode)) + + +# -------------------------------------------------------------------- +# Resources + + +def _apply_env_variables(env: dict[str, str] | None = None) -> None: + env_dict = env if env is not None else os.environ + + for var_name, setter in [ + ("PILLOW_ALIGNMENT", core.set_alignment), + ("PILLOW_BLOCK_SIZE", core.set_block_size), + ("PILLOW_BLOCKS_MAX", core.set_blocks_max), + ]: + if var_name not in env_dict: + continue + + var = env_dict[var_name].lower() + + units = 1 + for postfix, mul in [("k", 1024), ("m", 1024 * 1024)]: + if var.endswith(postfix): + units = mul + var = var[: -len(postfix)] + + try: + var_int = int(var) * units + except ValueError: + warnings.warn(f"{var_name} is not int") + continue + + try: + setter(var_int) + except ValueError as e: + warnings.warn(f"{var_name}: {e}") + + +_apply_env_variables() +atexit.register(core.clear_cache) + + +if TYPE_CHECKING: + _ExifBase = MutableMapping[int, Any] +else: + _ExifBase = MutableMapping + + +class Exif(_ExifBase): + """ + This class provides read and write access to EXIF image data:: + + from PIL import Image + im = Image.open("exif.png") + exif = im.getexif() # Returns an instance of this class + + Information can be read and written, iterated over or deleted:: + + print(exif[274]) # 1 + exif[274] = 2 + for k, v in exif.items(): + print("Tag", k, "Value", v) # Tag 274 Value 2 + del exif[274] + + To access information beyond IFD0, :py:meth:`~PIL.Image.Exif.get_ifd` + returns a dictionary:: + + from PIL import ExifTags + im = Image.open("exif_gps.jpg") + exif = im.getexif() + gps_ifd = exif.get_ifd(ExifTags.IFD.GPSInfo) + print(gps_ifd) + + 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:: + + print(exif[ExifTags.Base.Software]) # PIL + print(gps_ifd[ExifTags.GPS.GPSDateStamp]) # 1999:99:99 99:99:99 + """ + + endian: str | None = None + bigtiff = False + _loaded = False + + def __init__(self) -> None: + self._data: dict[int, Any] = {} + self._hidden_data: dict[int, Any] = {} + self._ifds: dict[int, dict[int, Any]] = {} + self._info: TiffImagePlugin.ImageFileDirectory_v2 | None = None + self._loaded_exif: bytes | None = None + + def _fixup(self, value: Any) -> Any: + try: + if len(value) == 1 and isinstance(value, tuple): + return value[0] + except Exception: + pass + return value + + def _fixup_dict(self, src_dict: dict[int, Any]) -> dict[int, Any]: + # Helper function + # returns a dict with any single item tuples/lists as individual values + return {k: self._fixup(v) for k, v in src_dict.items()} + + def _get_ifd_dict( + self, offset: int, group: int | None = None + ) -> dict[int, Any] | None: + try: + # an offset pointer to the location of the nested embedded IFD. + # It should be a long, but may be corrupted. + self.fp.seek(offset) + except (KeyError, TypeError): + return None + else: + from . import TiffImagePlugin + + info = TiffImagePlugin.ImageFileDirectory_v2(self.head, group=group) + info.load(self.fp) + return self._fixup_dict(dict(info)) + + def _get_head(self) -> bytes: + version = b"\x2b" if self.bigtiff else b"\x2a" + if self.endian == "<": + head = b"II" + version + b"\x00" + o32le(8) + else: + head = b"MM\x00" + version + o32be(8) + if self.bigtiff: + head += o32le(8) if self.endian == "<" else o32be(8) + head += b"\x00\x00\x00\x00" + return head + + def load(self, data: bytes) -> None: + # Extract EXIF information. This is highly experimental, + # and is likely to be replaced with something better in a future + # version. + + # The EXIF record consists of a TIFF file embedded in a JPEG + # application marker (!). + if data == self._loaded_exif: + return + self._loaded_exif = data + self._data.clear() + self._hidden_data.clear() + self._ifds.clear() + while data and data.startswith(b"Exif\x00\x00"): + data = data[6:] + if not data: + self._info = None + return + + self.fp: IO[bytes] = io.BytesIO(data) + self.head = self.fp.read(8) + # process dictionary + from . import TiffImagePlugin + + self._info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + self.endian = self._info._endian + self.fp.seek(self._info.next) + self._info.load(self.fp) + + def load_from_fp(self, fp: IO[bytes], offset: int | None = None) -> None: + self._loaded_exif = None + self._data.clear() + self._hidden_data.clear() + self._ifds.clear() + + # process dictionary + from . import TiffImagePlugin + + self.fp = fp + if offset is not None: + self.head = self._get_head() + else: + self.head = self.fp.read(8) + self._info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + if self.endian is None: + self.endian = self._info._endian + if offset is None: + offset = self._info.next + self.fp.tell() + self.fp.seek(offset) + self._info.load(self.fp) + + def _get_merged_dict(self) -> dict[int, Any]: + merged_dict = dict(self) + + # get EXIF extension + if ExifTags.IFD.Exif in self: + ifd = self._get_ifd_dict(self[ExifTags.IFD.Exif], ExifTags.IFD.Exif) + if ifd: + merged_dict.update(ifd) + + # GPS + if ExifTags.IFD.GPSInfo in self: + merged_dict[ExifTags.IFD.GPSInfo] = self._get_ifd_dict( + self[ExifTags.IFD.GPSInfo], ExifTags.IFD.GPSInfo + ) + + return merged_dict + + def tobytes(self, offset: int = 8) -> bytes: + from . import TiffImagePlugin + + 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, + ExifTags.IFD.GPSInfo, + ] and not isinstance(value, dict): + value = self.get_ifd(tag) + if ( + tag == ExifTags.IFD.Exif + and ExifTags.IFD.Interop in value + and not isinstance(value[ExifTags.IFD.Interop], dict) + ): + value = value.copy() + value[ExifTags.IFD.Interop] = self.get_ifd(ExifTags.IFD.Interop) + ifd[tag] = value + return b"Exif\x00\x00" + head + ifd.tobytes(offset) + + def get_ifd(self, tag: int) -> dict[int, Any]: + if tag not in self._ifds: + if tag == ExifTags.IFD.IFD1: + if self._info is not None and self._info.next != 0: + ifd = self._get_ifd_dict(self._info.next) + if ifd is not None: + self._ifds[tag] = ifd + elif tag in [ExifTags.IFD.Exif, ExifTags.IFD.GPSInfo]: + offset = self._hidden_data.get(tag, self.get(tag)) + if offset is not None: + 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]: + 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: + from .TiffImagePlugin import ImageFileDirectory_v2 + + if tag_data.startswith(b"FUJIFILM"): + ifd_offset = i32le(tag_data, 8) + ifd_data = tag_data[ifd_offset:] + + makernote = {} + for i in range(struct.unpack(" 4: + (offset,) = struct.unpack("H", tag_data[:2])[0]): + ifd_tag, typ, count, data = struct.unpack( + ">HHL4s", tag_data[i * 12 + 2 : (i + 1) * 12 + 2] + ) + if ifd_tag == 0x1101: + # CameraInfo + (offset,) = struct.unpack(">L", data) + self.fp.seek(offset) + + camerainfo: dict[str, int | bytes] = { + "ModelID": self.fp.read(4) + } + + self.fp.read(4) + # Seconds since 2000 + camerainfo["TimeStamp"] = i32le(self.fp.read(12)) + + self.fp.read(4) + camerainfo["InternalSerialNumber"] = self.fp.read(4) + + self.fp.read(12) + parallax = self.fp.read(4) + handler = ImageFileDirectory_v2._load_dispatch[ + TiffTags.FLOAT + ][1] + camerainfo["Parallax"] = handler( + ImageFileDirectory_v2(), parallax, False + )[0] + + self.fp.read(4) + camerainfo["Category"] = self.fp.read(2) + + makernote = {0x1101: camerainfo} + self._ifds[tag] = makernote + else: + # Interop + ifd = self._get_ifd_dict(tag_data, tag) + if ifd is not None: + self._ifds[tag] = ifd + ifd = self._ifds.setdefault(tag, {}) + if tag == ExifTags.IFD.Exif and self._hidden_data: + ifd = { + k: v + for (k, v) in ifd.items() + if k not in (ExifTags.IFD.Interop, ExifTags.IFD.MakerNote) + } + return ifd + + def hide_offsets(self) -> None: + for tag in (ExifTags.IFD.Exif, ExifTags.IFD.GPSInfo): + if tag in self: + self._hidden_data[tag] = self[tag] + del self[tag] + + def __str__(self) -> str: + if self._info is not None: + # Load all keys into self._data + for tag in self._info: + self[tag] + + return str(self._data) + + def __len__(self) -> int: + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return len(keys) + + def __getitem__(self, tag: int) -> Any: + if self._info is not None and tag not in self._data and tag in self._info: + self._data[tag] = self._fixup(self._info[tag]) + del self._info[tag] + return self._data[tag] + + def __contains__(self, tag: object) -> bool: + return tag in self._data or (self._info is not None and tag in self._info) + + def __setitem__(self, tag: int, value: Any) -> None: + if self._info is not None and tag in self._info: + del self._info[tag] + self._data[tag] = value + + def __delitem__(self, tag: int) -> None: + if self._info is not None and tag in self._info: + del self._info[tag] + else: + del self._data[tag] + + def __iter__(self) -> Iterator[int]: + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return iter(keys) diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageChops.py b/myenv/lib/python3.10/site-packages/PIL/ImageChops.py new file mode 100644 index 0000000..29a5c99 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageChops.py @@ -0,0 +1,311 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard channel operations +# +# History: +# 1996-03-24 fl Created +# 1996-08-13 fl Added logical operations (for "1" images) +# 2000-10-12 fl Added offset method (from Image.py) +# +# Copyright (c) 1997-2000 by Secret Labs AB +# Copyright (c) 1996-2000 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from __future__ import annotations + +from . import Image + + +def constant(image: Image.Image, value: int) -> Image.Image: + """Fill a channel with a given gray level. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.new("L", image.size, value) + + +def duplicate(image: Image.Image) -> Image.Image: + """Copy a channel. Alias for :py:meth:`PIL.Image.Image.copy`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return image.copy() + + +def invert(image: Image.Image) -> Image.Image: + """ + Invert an image (channel). :: + + out = MAX - image + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image.load() + return image._new(image.im.chop_invert()) + + +def lighter(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Compares the two images, pixel by pixel, and returns a new image containing + the lighter values. :: + + out = max(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_lighter(image2.im)) + + +def darker(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Compares the two images, pixel by pixel, and returns a new image containing + the darker values. :: + + out = min(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_darker(image2.im)) + + +def difference(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Returns the absolute value of the pixel-by-pixel difference between the two + images. :: + + out = abs(image1 - image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_difference(image2.im)) + + +def multiply(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two images on top of each other. + + If you multiply an image with a solid black image, the result is black. If + you multiply with a solid white image, the image is unaffected. :: + + out = image1 * image2 / MAX + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_multiply(image2.im)) + + +def screen(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two inverted images on top of each other. :: + + out = MAX - ((MAX - image1) * (MAX - image2) / MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_screen(image2.im)) + + +def soft_light(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two images on top of each other using the Soft Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_soft_light(image2.im)) + + +def hard_light(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two images on top of each other using the Hard Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_hard_light(image2.im)) + + +def overlay(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two images on top of each other using the Overlay algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_overlay(image2.im)) + + +def add( + image1: Image.Image, image2: Image.Image, scale: float = 1.0, offset: float = 0 +) -> Image.Image: + """ + Adds two images, dividing the result by scale and adding the + offset. If omitted, scale defaults to 1.0, and offset to 0.0. :: + + out = ((image1 + image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add(image2.im, scale, offset)) + + +def subtract( + image1: Image.Image, image2: Image.Image, scale: float = 1.0, offset: float = 0 +) -> Image.Image: + """ + Subtracts two images, dividing the result by scale and adding the offset. + If omitted, scale defaults to 1.0, and offset to 0.0. :: + + out = ((image1 - image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract(image2.im, scale, offset)) + + +def add_modulo(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Add two images, without clipping the result. :: + + out = ((image1 + image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add_modulo(image2.im)) + + +def subtract_modulo(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Subtract two images, without clipping the result. :: + + out = ((image1 - image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract_modulo(image2.im)) + + +def logical_and(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Logical AND between two images. + + Both of the images must have mode "1". If you would like to perform a + logical AND on an image with a mode other than "1", try + :py:meth:`~PIL.ImageChops.multiply` instead, using a black-and-white mask + as the second image. :: + + out = ((image1 and image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_and(image2.im)) + + +def logical_or(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Logical OR between two images. + + Both of the images must have mode "1". :: + + out = ((image1 or image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_or(image2.im)) + + +def logical_xor(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Logical XOR between two images. + + Both of the images must have mode "1". :: + + out = ((bool(image1) != bool(image2)) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_xor(image2.im)) + + +def blend(image1: Image.Image, image2: Image.Image, alpha: float) -> Image.Image: + """Blend images using constant transparency weight. Alias for + :py:func:`PIL.Image.blend`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.blend(image1, image2, alpha) + + +def composite( + image1: Image.Image, image2: Image.Image, mask: Image.Image +) -> Image.Image: + """Create composite using transparency mask. Alias for + :py:func:`PIL.Image.composite`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.composite(image1, image2, mask) + + +def offset(image: Image.Image, xoffset: int, yoffset: int | None = None) -> Image.Image: + """Returns a copy of the image where data has been offset by the given + distances. Data wraps around the edges. If ``yoffset`` is omitted, it + is assumed to be equal to ``xoffset``. + + :param image: Input image. + :param xoffset: The horizontal distance. + :param yoffset: The vertical distance. If omitted, both + distances are set to the same value. + :rtype: :py:class:`~PIL.Image.Image` + """ + + if yoffset is None: + yoffset = xoffset + image.load() + return image._new(image.im.offset(xoffset, yoffset)) diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageCms.py b/myenv/lib/python3.10/site-packages/PIL/ImageCms.py new file mode 100644 index 0000000..a1584f1 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageCms.py @@ -0,0 +1,1123 @@ +# The Python Imaging Library. +# $Id$ + +# Optional color management support, based on Kevin Cazabon's PyCMS +# library. + +# Originally released under LGPL. Graciously donated to PIL in +# March 2009, for distribution under the standard PIL license + +# History: + +# 2009-03-08 fl Added to PIL. + +# Copyright (C) 2002-2003 Kevin Cazabon +# Copyright (c) 2009 by Fredrik Lundh +# Copyright (c) 2013 by Eric Soroos + +# See the README file for information on usage and redistribution. See +# below for the original description. +from __future__ import annotations + +import operator +import sys +from enum import IntEnum, IntFlag +from functools import reduce +from typing import Any, Literal, SupportsFloat, SupportsInt, Union + +from . import Image, __version__ +from ._deprecate import deprecate +from ._typing import SupportsRead + +try: + from . import _imagingcms as core + + _CmsProfileCompatible = Union[ + str, SupportsRead[bytes], core.CmsProfile, "ImageCmsProfile" + ] +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import DeferredError + + core = DeferredError.new(ex) + +_DESCRIPTION = """ +pyCMS + + a Python / PIL interface to the littleCMS ICC Color Management System + Copyright (C) 2002-2003 Kevin Cazabon + kevin@cazabon.com + https://www.cazabon.com + + pyCMS home page: https://www.cazabon.com/pyCMS + littleCMS home page: https://www.littlecms.com + (littleCMS is Copyright (C) 1998-2001 Marti Maria) + + Originally released under LGPL. Graciously donated to PIL in + March 2009, for distribution under the standard PIL license + + The pyCMS.py module provides a "clean" interface between Python/PIL and + pyCMSdll, taking care of some of the more complex handling of the direct + pyCMSdll functions, as well as error-checking and making sure that all + relevant data is kept together. + + While it is possible to call pyCMSdll functions directly, it's not highly + recommended. + + Version History: + + 1.0.0 pil Oct 2013 Port to LCMS 2. + + 0.1.0 pil mod March 10, 2009 + + Renamed display profile to proof profile. The proof + profile is the profile of the device that is being + simulated, not the profile of the device which is + actually used to display/print the final simulation + (that'd be the output profile) - also see LCMSAPI.txt + input colorspace -> using 'renderingIntent' -> proof + colorspace -> using 'proofRenderingIntent' -> output + colorspace + + Added LCMS FLAGS support. + Added FLAGS["SOFTPROOFING"] as default flag for + buildProofTransform (otherwise the proof profile/intent + would be ignored). + + 0.1.0 pil March 2009 - added to PIL, as PIL.ImageCms + + 0.0.2 alpha Jan 6, 2002 + + Added try/except statements around type() checks of + potential CObjects... Python won't let you use type() + on them, and raises a TypeError (stupid, if you ask + me!) + + Added buildProofTransformFromOpenProfiles() function. + Additional fixes in DLL, see DLL code for details. + + 0.0.1 alpha first public release, Dec. 26, 2002 + + Known to-do list with current version (of Python interface, not pyCMSdll): + + none + +""" + +_VERSION = "1.0.0 pil" + + +def __getattr__(name: str) -> Any: + if name == "DESCRIPTION": + deprecate("PIL.ImageCms.DESCRIPTION", 12) + return _DESCRIPTION + elif name == "VERSION": + deprecate("PIL.ImageCms.VERSION", 12) + return _VERSION + elif name == "FLAGS": + deprecate("PIL.ImageCms.FLAGS", 12, "PIL.ImageCms.Flags") + return _FLAGS + msg = f"module '{__name__}' has no attribute '{name}'" + raise AttributeError(msg) + + +# --------------------------------------------------------------------. + + +# +# intent/direction values + + +class Intent(IntEnum): + PERCEPTUAL = 0 + RELATIVE_COLORIMETRIC = 1 + SATURATION = 2 + ABSOLUTE_COLORIMETRIC = 3 + + +class Direction(IntEnum): + INPUT = 0 + OUTPUT = 1 + PROOF = 2 + + +# +# flags + + +class Flags(IntFlag): + """Flags and documentation are taken from ``lcms2.h``.""" + + NONE = 0 + NOCACHE = 0x0040 + """Inhibit 1-pixel cache""" + NOOPTIMIZE = 0x0100 + """Inhibit optimizations""" + NULLTRANSFORM = 0x0200 + """Don't transform anyway""" + GAMUTCHECK = 0x1000 + """Out of Gamut alarm""" + SOFTPROOFING = 0x4000 + """Do softproofing""" + BLACKPOINTCOMPENSATION = 0x2000 + NOWHITEONWHITEFIXUP = 0x0004 + """Don't fix scum dot""" + HIGHRESPRECALC = 0x0400 + """Use more memory to give better accuracy""" + LOWRESPRECALC = 0x0800 + """Use less memory to minimize resources""" + # this should be 8BITS_DEVICELINK, but that is not a valid name in Python: + USE_8BITS_DEVICELINK = 0x0008 + """Create 8 bits devicelinks""" + GUESSDEVICECLASS = 0x0020 + """Guess device class (for ``transform2devicelink``)""" + KEEP_SEQUENCE = 0x0080 + """Keep profile sequence for devicelink creation""" + FORCE_CLUT = 0x0002 + """Force CLUT optimization""" + CLUT_POST_LINEARIZATION = 0x0001 + """create postlinearization tables if possible""" + CLUT_PRE_LINEARIZATION = 0x0010 + """create prelinearization tables if possible""" + NONEGATIVES = 0x8000 + """Prevent negative numbers in floating point transforms""" + COPY_ALPHA = 0x04000000 + """Alpha channels are copied on ``cmsDoTransform()``""" + NODEFAULTRESOURCEDEF = 0x01000000 + + _GRIDPOINTS_1 = 1 << 16 + _GRIDPOINTS_2 = 2 << 16 + _GRIDPOINTS_4 = 4 << 16 + _GRIDPOINTS_8 = 8 << 16 + _GRIDPOINTS_16 = 16 << 16 + _GRIDPOINTS_32 = 32 << 16 + _GRIDPOINTS_64 = 64 << 16 + _GRIDPOINTS_128 = 128 << 16 + + @staticmethod + def GRIDPOINTS(n: int) -> Flags: + """ + Fine-tune control over number of gridpoints + + :param n: :py:class:`int` in range ``0 <= n <= 255`` + """ + return Flags.NONE | ((n & 0xFF) << 16) + + +_MAX_FLAG = reduce(operator.or_, Flags) + + +_FLAGS = { + "MATRIXINPUT": 1, + "MATRIXOUTPUT": 2, + "MATRIXONLY": (1 | 2), + "NOWHITEONWHITEFIXUP": 4, # Don't hot fix scum dot + # Don't create prelinearization tables on precalculated transforms + # (internal use): + "NOPRELINEARIZATION": 16, + "GUESSDEVICECLASS": 32, # Guess device class (for transform2devicelink) + "NOTCACHE": 64, # Inhibit 1-pixel cache + "NOTPRECALC": 256, + "NULLTRANSFORM": 512, # Don't transform anyway + "HIGHRESPRECALC": 1024, # Use more memory to give better accuracy + "LOWRESPRECALC": 2048, # Use less memory to minimize resources + "WHITEBLACKCOMPENSATION": 8192, + "BLACKPOINTCOMPENSATION": 8192, + "GAMUTCHECK": 4096, # Out of Gamut alarm + "SOFTPROOFING": 16384, # Do softproofing + "PRESERVEBLACK": 32768, # Black preservation + "NODEFAULTRESOURCEDEF": 16777216, # CRD special + "GRIDPOINTS": lambda n: (n & 0xFF) << 16, # Gridpoints +} + + +# --------------------------------------------------------------------. +# Experimental PIL-level API +# --------------------------------------------------------------------. + +## +# Profile. + + +class ImageCmsProfile: + def __init__(self, profile: str | SupportsRead[bytes] | core.CmsProfile) -> None: + """ + :param profile: Either a string representing a filename, + a file like object containing a profile or a + low-level profile object + + """ + self.filename = None + self.product_name = None # profile.product_name + self.product_info = None # profile.product_info + + if isinstance(profile, str): + if sys.platform == "win32": + profile_bytes_path = profile.encode() + try: + profile_bytes_path.decode("ascii") + except UnicodeDecodeError: + with open(profile, "rb") as f: + self.profile = core.profile_frombytes(f.read()) + return + self.filename = profile + self.profile = core.profile_open(profile) + elif hasattr(profile, "read"): + self.profile = core.profile_frombytes(profile.read()) + elif isinstance(profile, core.CmsProfile): + self.profile = profile + else: + msg = "Invalid type for Profile" # type: ignore[unreachable] + raise TypeError(msg) + + def tobytes(self) -> bytes: + """ + Returns the profile in a format suitable for embedding in + saved images. + + :returns: a bytes object containing the ICC profile. + """ + + return core.profile_tobytes(self.profile) + + +class ImageCmsTransform(Image.ImagePointHandler): + """ + Transform. This can be used with the procedural API, or with the standard + :py:func:`~PIL.Image.Image.point` method. + + Will return the output profile in the ``output.info['icc_profile']``. + """ + + def __init__( + self, + input: ImageCmsProfile, + output: ImageCmsProfile, + input_mode: str, + output_mode: str, + intent: Intent = Intent.PERCEPTUAL, + proof: ImageCmsProfile | None = None, + proof_intent: Intent = Intent.ABSOLUTE_COLORIMETRIC, + flags: Flags = Flags.NONE, + ): + supported_modes = ( + "RGB", + "RGBA", + "RGBX", + "CMYK", + "I;16", + "I;16L", + "I;16B", + "YCbCr", + "LAB", + "L", + "1", + ) + for mode in (input_mode, output_mode): + if mode not in supported_modes: + deprecate( + mode, + 12, + { + "L;16": "I;16 or I;16L", + "L:16B": "I;16B", + "YCCA": "YCbCr", + "YCC": "YCbCr", + }.get(mode), + ) + if proof is None: + self.transform = core.buildTransform( + input.profile, output.profile, input_mode, output_mode, intent, flags + ) + else: + self.transform = core.buildProofTransform( + input.profile, + output.profile, + proof.profile, + input_mode, + output_mode, + intent, + proof_intent, + flags, + ) + # Note: inputMode and outputMode are for pyCMS compatibility only + self.input_mode = self.inputMode = input_mode + self.output_mode = self.outputMode = output_mode + + self.output_profile = output + + def point(self, im: Image.Image) -> Image.Image: + return self.apply(im) + + def apply(self, im: Image.Image, imOut: Image.Image | None = None) -> Image.Image: + if imOut is None: + imOut = Image.new(self.output_mode, im.size, None) + self.transform.apply(im.getim(), imOut.getim()) + imOut.info["icc_profile"] = self.output_profile.tobytes() + return imOut + + def apply_in_place(self, im: Image.Image) -> Image.Image: + if im.mode != self.output_mode: + msg = "mode mismatch" + raise ValueError(msg) # wrong output mode + self.transform.apply(im.getim(), im.getim()) + im.info["icc_profile"] = self.output_profile.tobytes() + return im + + +def get_display_profile(handle: SupportsInt | None = None) -> ImageCmsProfile | None: + """ + (experimental) Fetches the profile for the current display device. + + :returns: ``None`` if the profile is not known. + """ + + if sys.platform != "win32": + return None + + from . import ImageWin # type: ignore[unused-ignore, unreachable] + + if isinstance(handle, ImageWin.HDC): + profile = core.get_display_profile_win32(int(handle), 1) + else: + profile = core.get_display_profile_win32(int(handle or 0)) + if profile is None: + return None + return ImageCmsProfile(profile) + + +# --------------------------------------------------------------------. +# pyCMS compatible layer +# --------------------------------------------------------------------. + + +class PyCMSError(Exception): + """(pyCMS) Exception class. + This is used for all errors in the pyCMS API.""" + + pass + + +def profileToProfile( + im: Image.Image, + inputProfile: _CmsProfileCompatible, + outputProfile: _CmsProfileCompatible, + renderingIntent: Intent = Intent.PERCEPTUAL, + outputMode: str | None = None, + inPlace: bool = False, + flags: Flags = Flags.NONE, +) -> Image.Image | None: + """ + (pyCMS) Applies an ICC transformation to a given image, mapping from + ``inputProfile`` to ``outputProfile``. + + If the input or output profiles specified are not valid filenames, a + :exc:`PyCMSError` will be raised. If ``inPlace`` is ``True`` and + ``outputMode != im.mode``, a :exc:`PyCMSError` will be raised. + If an error occurs during application of the profiles, + a :exc:`PyCMSError` will be raised. + If ``outputMode`` is not a mode supported by the ``outputProfile`` (or by pyCMS), + a :exc:`PyCMSError` will be raised. + + This function applies an ICC transformation to im from ``inputProfile``'s + color space to ``outputProfile``'s color space using the specified rendering + intent to decide how to handle out-of-gamut colors. + + ``outputMode`` can be used to specify that a color mode conversion is to + be done using these profiles, but the specified profiles must be able + to handle that mode. I.e., if converting im from RGB to CMYK using + profiles, the input profile must handle RGB data, and the output + profile must handle CMYK data. + + :param im: An open :py:class:`~PIL.Image.Image` object (i.e. Image.new(...) + or Image.open(...), etc.) + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this image, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this image, or a profile object + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param outputMode: A valid PIL mode for the output image (i.e. "RGB", + "CMYK", etc.). Note: if rendering the image "inPlace", outputMode + MUST be the same mode as the input, or omitted completely. If + omitted, the outputMode will be the same as the mode of the input + image (im.mode) + :param inPlace: Boolean. If ``True``, the original image is modified in-place, + and ``None`` is returned. If ``False`` (default), a new + :py:class:`~PIL.Image.Image` object is returned with the transform applied. + :param flags: Integer (0-...) specifying additional flags + :returns: Either None or a new :py:class:`~PIL.Image.Image` object, depending on + the value of ``inPlace`` + :exception PyCMSError: + """ + + if outputMode is None: + outputMode = im.mode + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + transform = ImageCmsTransform( + inputProfile, + outputProfile, + im.mode, + outputMode, + renderingIntent, + flags=flags, + ) + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + return imOut + + +def getOpenProfile( + profileFilename: str | SupportsRead[bytes] | core.CmsProfile, +) -> ImageCmsProfile: + """ + (pyCMS) Opens an ICC profile file. + + The PyCMSProfile object can be passed back into pyCMS for use in creating + transforms and such (as in ImageCms.buildTransformFromOpenProfiles()). + + If ``profileFilename`` is not a valid filename for an ICC profile, + a :exc:`PyCMSError` will be raised. + + :param profileFilename: String, as a valid filename path to the ICC profile + you wish to open, or a file-like object. + :returns: A CmsProfile class object. + :exception PyCMSError: + """ + + try: + return ImageCmsProfile(profileFilename) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def buildTransform( + inputProfile: _CmsProfileCompatible, + outputProfile: _CmsProfileCompatible, + inMode: str, + outMode: str, + renderingIntent: Intent = Intent.PERCEPTUAL, + flags: Flags = Flags.NONE, +) -> ImageCmsTransform: + """ + (pyCMS) Builds an ICC transform mapping from the ``inputProfile`` to the + ``outputProfile``. Use applyTransform to apply the transform to a given + image. + + If the input or output profiles specified are not valid filenames, a + :exc:`PyCMSError` will be raised. If an error occurs during creation + of the transform, a :exc:`PyCMSError` will be raised. + + If ``inMode`` or ``outMode`` are not a mode supported by the ``outputProfile`` + (or by pyCMS), a :exc:`PyCMSError` will be raised. + + This function builds and returns an ICC transform from the ``inputProfile`` + to the ``outputProfile`` using the ``renderingIntent`` to determine what to do + with out-of-gamut colors. It will ONLY work for converting images that + are in ``inMode`` to images that are in ``outMode`` color format (PIL mode, + i.e. "RGB", "RGBA", "CMYK", etc.). + + Building the transform is a fair part of the overhead in + ImageCms.profileToProfile(), so if you're planning on converting multiple + images using the same input/output settings, this can save you time. + Once you have a transform object, it can be used with + ImageCms.applyProfile() to convert images without the need to re-compute + the lookup table for the transform. + + The reason pyCMS returns a class object rather than a handle directly + to the transform is that it needs to keep track of the PIL input/output + modes that the transform is meant for. These attributes are stored in + the ``inMode`` and ``outMode`` attributes of the object (which can be + manually overridden if you really want to, but I don't know of any + time that would be of use, or would even work). + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + return ImageCmsTransform( + inputProfile, outputProfile, inMode, outMode, renderingIntent, flags=flags + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def buildProofTransform( + inputProfile: _CmsProfileCompatible, + outputProfile: _CmsProfileCompatible, + proofProfile: _CmsProfileCompatible, + inMode: str, + outMode: str, + renderingIntent: Intent = Intent.PERCEPTUAL, + proofRenderingIntent: Intent = Intent.ABSOLUTE_COLORIMETRIC, + flags: Flags = Flags.SOFTPROOFING, +) -> ImageCmsTransform: + """ + (pyCMS) Builds an ICC transform mapping from the ``inputProfile`` to the + ``outputProfile``, but tries to simulate the result that would be + obtained on the ``proofProfile`` device. + + If the input, output, or proof profiles specified are not valid + filenames, a :exc:`PyCMSError` will be raised. + + If an error occurs during creation of the transform, + a :exc:`PyCMSError` will be raised. + + If ``inMode`` or ``outMode`` are not a mode supported by the ``outputProfile`` + (or by pyCMS), a :exc:`PyCMSError` will be raised. + + This function builds and returns an ICC transform from the ``inputProfile`` + to the ``outputProfile``, but tries to simulate the result that would be + obtained on the ``proofProfile`` device using ``renderingIntent`` and + ``proofRenderingIntent`` to determine what to do with out-of-gamut + colors. This is known as "soft-proofing". It will ONLY work for + converting images that are in ``inMode`` to images that are in outMode + color format (PIL mode, i.e. "RGB", "RGBA", "CMYK", etc.). + + Usage of the resulting transform object is exactly the same as with + ImageCms.buildTransform(). + + Proof profiling is generally used when using an output device to get a + good idea of what the final printed/displayed image would look like on + the ``proofProfile`` device when it's quicker and easier to use the + output device for judging color. Generally, this means that the + output device is a monitor, or a dye-sub printer (etc.), and the simulated + device is something more expensive, complicated, or time consuming + (making it difficult to make a real print for color judgement purposes). + + Soft-proofing basically functions by adjusting the colors on the + output device to match the colors of the device being simulated. However, + when the simulated device has a much wider gamut than the output + device, you may obtain marginal results. + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + (monitor, usually) profile you wish to use for this transform, or a + profile object + :param proofProfile: String, as a valid filename path to the ICC proof + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the input->proof (simulated) transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param proofRenderingIntent: Integer (0-3) specifying the rendering intent + you wish to use for proof->output transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + if not isinstance(proofProfile, ImageCmsProfile): + proofProfile = ImageCmsProfile(proofProfile) + return ImageCmsTransform( + inputProfile, + outputProfile, + inMode, + outMode, + renderingIntent, + proofProfile, + proofRenderingIntent, + flags, + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +buildTransformFromOpenProfiles = buildTransform +buildProofTransformFromOpenProfiles = buildProofTransform + + +def applyTransform( + im: Image.Image, transform: ImageCmsTransform, inPlace: bool = False +) -> Image.Image | None: + """ + (pyCMS) Applies a transform to a given image. + + If ``im.mode != transform.input_mode``, a :exc:`PyCMSError` is raised. + + If ``inPlace`` is ``True`` and ``transform.input_mode != transform.output_mode``, a + :exc:`PyCMSError` is raised. + + If ``im.mode``, ``transform.input_mode`` or ``transform.output_mode`` is not + supported by pyCMSdll or the profiles you used for the transform, a + :exc:`PyCMSError` is raised. + + If an error occurs while the transform is being applied, + a :exc:`PyCMSError` is raised. + + This function applies a pre-calculated transform (from + ImageCms.buildTransform() or ImageCms.buildTransformFromOpenProfiles()) + to an image. The transform can be used for multiple images, saving + considerable calculation time if doing the same conversion multiple times. + + If you want to modify im in-place instead of receiving a new image as + the return value, set ``inPlace`` to ``True``. This can only be done if + ``transform.input_mode`` and ``transform.output_mode`` are the same, because we + can't change the mode in-place (the buffer sizes for some modes are + different). The default behavior is to return a new :py:class:`~PIL.Image.Image` + object of the same dimensions in mode ``transform.output_mode``. + + :param im: An :py:class:`~PIL.Image.Image` object, and ``im.mode`` must be the same + as the ``input_mode`` supported by the transform. + :param transform: A valid CmsTransform class object + :param inPlace: Bool. If ``True``, ``im`` is modified in place and ``None`` is + returned, if ``False``, a new :py:class:`~PIL.Image.Image` object with the + transform applied is returned (and ``im`` is not changed). The default is + ``False``. + :returns: Either ``None``, or a new :py:class:`~PIL.Image.Image` object, + depending on the value of ``inPlace``. The profile will be returned in + the image's ``info['icc_profile']``. + :exception PyCMSError: + """ + + try: + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + return imOut + + +def createProfile( + colorSpace: Literal["LAB", "XYZ", "sRGB"], colorTemp: SupportsFloat = 0 +) -> core.CmsProfile: + """ + (pyCMS) Creates a profile. + + If colorSpace not in ``["LAB", "XYZ", "sRGB"]``, + a :exc:`PyCMSError` is raised. + + If using LAB and ``colorTemp`` is not a positive integer, + a :exc:`PyCMSError` is raised. + + If an error occurs while creating the profile, + a :exc:`PyCMSError` is raised. + + Use this function to create common profiles on-the-fly instead of + having to supply a profile on disk and knowing the path to it. It + returns a normal CmsProfile object that can be passed to + ImageCms.buildTransformFromOpenProfiles() to create a transform to apply + to images. + + :param colorSpace: String, the color space of the profile you wish to + create. + Currently only "LAB", "XYZ", and "sRGB" are supported. + :param colorTemp: Positive number for the white point for the profile, in + degrees Kelvin (i.e. 5000, 6500, 9600, etc.). The default is for D50 + illuminant if omitted (5000k). colorTemp is ONLY applied to LAB + profiles, and is ignored for XYZ and sRGB. + :returns: A CmsProfile class object + :exception PyCMSError: + """ + + if colorSpace not in ["LAB", "XYZ", "sRGB"]: + msg = ( + f"Color space not supported for on-the-fly profile creation ({colorSpace})" + ) + raise PyCMSError(msg) + + if colorSpace == "LAB": + try: + colorTemp = float(colorTemp) + except (TypeError, ValueError) as e: + msg = f'Color temperature must be numeric, "{colorTemp}" not valid' + raise PyCMSError(msg) from e + + try: + return core.createProfile(colorSpace, colorTemp) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileName(profile: _CmsProfileCompatible) -> str: + """ + + (pyCMS) Gets the internal product name for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, + a :exc:`PyCMSError` is raised If an error occurs while trying + to obtain the name tag, a :exc:`PyCMSError` is raised. + + Use this function to obtain the INTERNAL name of the profile (stored + in an ICC tag in the profile itself), usually the one used when the + profile was originally created. Sometimes this tag also contains + additional information supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal name of the profile as stored + in an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # do it in python, not c. + # // name was "%s - %s" (model, manufacturer) || Description , + # // but if the Model and Manufacturer were the same or the model + # // was long, Just the model, in 1.x + model = profile.profile.model + manufacturer = profile.profile.manufacturer + + if not (model or manufacturer): + return (profile.profile.profile_description or "") + "\n" + if not manufacturer or (model and len(model) > 30): + return f"{model}\n" + return f"{model} - {manufacturer}\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileInfo(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the internal product information for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, + a :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the info tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + info tag. This often contains details about the profile, and how it + was created, as supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # add an extra newline to preserve pyCMS compatibility + # Python, not C. the white point bits weren't working well, + # so skipping. + # info was description \r\n\r\n copyright \r\n\r\n K007 tag \r\n\r\n whitepoint + description = profile.profile.profile_description + cpright = profile.profile.copyright + elements = [element for element in (description, cpright) if element] + return "\r\n\r\n".join(elements) + "\r\n\r\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileCopyright(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the copyright for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the copyright tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + copyright tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.copyright or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileManufacturer(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the manufacturer for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the manufacturer tag, a + :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + manufacturer tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.manufacturer or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileModel(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the model for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the model tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + model tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.model or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileDescription(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the description for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the description tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + description tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in an + ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.profile_description or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getDefaultIntent(profile: _CmsProfileCompatible) -> int: + """ + (pyCMS) Gets the default intent name for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the default intent, a + :exc:`PyCMSError` is raised. + + Use this function to determine the default (and usually best optimized) + rendering intent for this profile. Most profiles support multiple + rendering intents, but are intended mostly for one type of conversion. + If you wish to use a different intent than returned, use + ImageCms.isIntentSupported() to verify it will work first. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: Integer 0-3 specifying the default rendering intent for this + profile. + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.rendering_intent + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def isIntentSupported( + profile: _CmsProfileCompatible, intent: Intent, direction: Direction +) -> Literal[-1, 1]: + """ + (pyCMS) Checks if a given intent is supported. + + Use this function to verify that you can use your desired + ``intent`` with ``profile``, and that ``profile`` can be used for the + input/output/proof profile as you desire. + + Some profiles are created specifically for one "direction", can cannot + be used for others. Some profiles can only be used for certain + rendering intents, so it's best to either verify this before trying + to create a transform with them (using this function), or catch the + potential :exc:`PyCMSError` that will occur if they don't + support the modes you select. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :param intent: Integer (0-3) specifying the rendering intent you wish to + use with this profile + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param direction: Integer specifying if the profile is to be used for + input, output, or proof + + INPUT = 0 (or use ImageCms.Direction.INPUT) + OUTPUT = 1 (or use ImageCms.Direction.OUTPUT) + PROOF = 2 (or use ImageCms.Direction.PROOF) + + :returns: 1 if the intent/direction are supported, -1 if they are not. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # FIXME: I get different results for the same data w. different + # compilers. Bug in LittleCMS or in the binding? + if profile.profile.is_intent_supported(intent, direction): + return 1 + else: + return -1 + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def versions() -> tuple[str, str | None, str, str]: + """ + (pyCMS) Fetches versions. + """ + + deprecate( + "PIL.ImageCms.versions()", + 12, + '(PIL.features.version("littlecms2"), sys.version, PIL.__version__)', + ) + return _VERSION, core.littlecms_version, sys.version.split()[0], __version__ diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageColor.py b/myenv/lib/python3.10/site-packages/PIL/ImageColor.py new file mode 100644 index 0000000..9a15a8e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageColor.py @@ -0,0 +1,320 @@ +# +# The Python Imaging Library +# $Id$ +# +# map CSS3-style colour description strings to RGB +# +# History: +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-15 fl Added RGBA support +# 2004-03-27 fl Fixed remaining int() problems for Python 1.5.2 +# 2004-07-19 fl Fixed gray/grey spelling issues +# 2009-03-05 fl Fixed rounding error in grayscale calculation +# +# Copyright (c) 2002-2004 by Secret Labs AB +# Copyright (c) 2002-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re +from functools import lru_cache + +from . import Image + + +@lru_cache +def getrgb(color: str) -> tuple[int, int, int] | tuple[int, int, int, int]: + """ + Convert a color string to an RGB or RGBA tuple. If the string cannot be + parsed, this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(red, green, blue[, alpha])`` + """ + if len(color) > 100: + msg = "color specifier is too long" + raise ValueError(msg) + color = color.lower() + + rgb = colormap.get(color, None) + if rgb: + if isinstance(rgb, tuple): + return rgb + rgb_tuple = getrgb(rgb) + assert len(rgb_tuple) == 3 + colormap[color] = rgb_tuple + return rgb_tuple + + # check for known string formats + if re.match("#[a-f0-9]{3}$", color): + return int(color[1] * 2, 16), int(color[2] * 2, 16), int(color[3] * 2, 16) + + if re.match("#[a-f0-9]{4}$", color): + return ( + int(color[1] * 2, 16), + int(color[2] * 2, 16), + int(color[3] * 2, 16), + int(color[4] * 2, 16), + ) + + if re.match("#[a-f0-9]{6}$", color): + return int(color[1:3], 16), int(color[3:5], 16), int(color[5:7], 16) + + if re.match("#[a-f0-9]{8}$", color): + return ( + int(color[1:3], 16), + int(color[3:5], 16), + int(color[5:7], 16), + int(color[7:9], 16), + ) + + m = re.match(r"rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return int(m.group(1)), int(m.group(2)), int(m.group(3)) + + m = re.match(r"rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) + if m: + return ( + int((int(m.group(1)) * 255) / 100.0 + 0.5), + int((int(m.group(2)) * 255) / 100.0 + 0.5), + int((int(m.group(3)) * 255) / 100.0 + 0.5), + ) + + m = re.match( + r"hsl\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hls_to_rgb + + rgb_floats = hls_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(3)) / 100.0, + float(m.group(2)) / 100.0, + ) + return ( + int(rgb_floats[0] * 255 + 0.5), + int(rgb_floats[1] * 255 + 0.5), + int(rgb_floats[2] * 255 + 0.5), + ) + + m = re.match( + r"hs[bv]\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hsv_to_rgb + + rgb_floats = hsv_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(2)) / 100.0, + float(m.group(3)) / 100.0, + ) + return ( + int(rgb_floats[0] * 255 + 0.5), + int(rgb_floats[1] * 255 + 0.5), + int(rgb_floats[2] * 255 + 0.5), + ) + + m = re.match(r"rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return int(m.group(1)), int(m.group(2)), int(m.group(3)), int(m.group(4)) + msg = f"unknown color specifier: {repr(color)}" + raise ValueError(msg) + + +@lru_cache +def getcolor(color: str, mode: str) -> int | tuple[int, ...]: + """ + Same as :py:func:`~PIL.ImageColor.getrgb` for most modes. However, if + ``mode`` is HSV, converts the RGB value to a HSV value, or if ``mode`` is + not color or a palette image, converts the RGB value to a grayscale value. + If the string cannot be parsed, this function raises a :py:exc:`ValueError` + exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :param mode: Convert result to this mode + :return: ``graylevel, (graylevel, alpha) or (red, green, blue[, alpha])`` + """ + # same as getrgb, but converts the result to the given mode + rgb, alpha = getrgb(color), 255 + if len(rgb) == 4: + alpha = rgb[3] + rgb = rgb[:3] + + if mode == "HSV": + from colorsys import rgb_to_hsv + + r, g, b = rgb + h, s, v = rgb_to_hsv(r / 255, g / 255, b / 255) + return int(h * 255), int(s * 255), int(v * 255) + elif Image.getmodebase(mode) == "L": + r, g, b = rgb + # ITU-R Recommendation 601-2 for nonlinear RGB + # scaled to 24 bits to match the convert's implementation. + graylevel = (r * 19595 + g * 38470 + b * 7471 + 0x8000) >> 16 + if mode[-1] == "A": + return graylevel, alpha + return graylevel + elif mode[-1] == "A": + return rgb + (alpha,) + return rgb + + +colormap: dict[str, str | tuple[int, int, int]] = { + # X11 colour table from https://drafts.csswg.org/css-color-4/, with + # gray/grey spelling issues fixed. This is a superset of HTML 4.0 + # colour names used in CSS 1. + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgrey": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkslategrey": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dimgrey": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "grey": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgreen": "#90ee90", + "lightgray": "#d3d3d3", + "lightgrey": "#d3d3d3", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightslategrey": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370db", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#db7093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "rebeccapurple": "#663399", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "slategrey": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32", +} diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageDraw.py b/myenv/lib/python3.10/site-packages/PIL/ImageDraw.py new file mode 100644 index 0000000..6cf1ee6 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageDraw.py @@ -0,0 +1,1232 @@ +# +# The Python Imaging Library +# $Id$ +# +# drawing interface operations +# +# History: +# 1996-04-13 fl Created (experimental) +# 1996-08-07 fl Filled polygons, ellipses. +# 1996-08-13 fl Added text support +# 1998-06-28 fl Handle I and F images +# 1998-12-29 fl Added arc; use arc primitive to draw ellipses +# 1999-01-10 fl Added shape stuff (experimental) +# 1999-02-06 fl Added bitmap support +# 1999-02-11 fl Changed all primitives to take options +# 1999-02-20 fl Fixed backwards compatibility +# 2000-10-12 fl Copy on write, when necessary +# 2001-02-18 fl Use default ink for bitmap/text also in fill mode +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-10 fl Added experimental support for RGBA-on-RGB drawing +# 2002-12-11 fl Refactored low-level drawing API (work in progress) +# 2004-08-26 fl Made Draw() a factory function, added getdraw() support +# 2004-09-04 fl Added width support to line primitive +# 2004-09-10 fl Added font mode handling +# 2006-06-19 fl Added font bearing support (getmask2) +# +# Copyright (c) 1997-2006 by Secret Labs AB +# Copyright (c) 1996-2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import math +import struct +from collections.abc import Sequence +from types import ModuleType +from typing import Any, AnyStr, Callable, Union, cast + +from . import Image, ImageColor +from ._deprecate import deprecate +from ._typing import Coords + +# experimental access to the outline API +Outline: Callable[[], Image.core._Outline] = Image.core.outline + +TYPE_CHECKING = False +if TYPE_CHECKING: + from . import ImageDraw2, ImageFont + +_Ink = Union[float, tuple[int, ...], str] + +""" +A simple 2D drawing interface for PIL images. +

+Application code should use the Draw factory, instead of +directly. +""" + + +class ImageDraw: + font: ( + ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | None + ) = None + + def __init__(self, im: Image.Image, mode: str | None = None) -> None: + """ + Create a drawing instance. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + im.load() + if im.readonly: + im._copy() # make it writeable + blend = 0 + if mode is None: + mode = im.mode + if mode != im.mode: + if mode == "RGBA" and im.mode == "RGB": + blend = 1 + else: + msg = "mode mismatch" + raise ValueError(msg) + if mode == "P": + self.palette = im.palette + else: + self.palette = None + self._image = im + self.im = im.im + self.draw = Image.core.draw(self.im, blend) + self.mode = mode + if mode in ("I", "F"): + self.ink = self.draw.draw_ink(1) + else: + self.ink = self.draw.draw_ink(-1) + if mode in ("1", "P", "I", "F"): + # FIXME: fix Fill2 to properly support matte for I+F images + self.fontmode = "1" + else: + self.fontmode = "L" # aliasing is okay for other modes + self.fill = False + + def getfont( + self, + ) -> ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont: + """ + Get the current default font. + + To set the default font for this ImageDraw instance:: + + from PIL import ImageDraw, ImageFont + draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf") + + To set the default font for all future ImageDraw instances:: + + from PIL import ImageDraw, ImageFont + ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf") + + If the current default font is ``None``, + it is initialized with ``ImageFont.load_default()``. + + :returns: An image font.""" + if not self.font: + # FIXME: should add a font repository + from . import ImageFont + + self.font = ImageFont.load_default() + return self.font + + def _getfont( + self, font_size: float | None + ) -> ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont: + if font_size is not None: + from . import ImageFont + + return ImageFont.load_default(font_size) + else: + return self.getfont() + + def _getink( + self, ink: _Ink | None, fill: _Ink | None = None + ) -> tuple[int | None, int | None]: + result_ink = None + result_fill = None + if ink is None and fill is None: + if self.fill: + result_fill = self.ink + else: + result_ink = self.ink + else: + if ink is not None: + if isinstance(ink, str): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and isinstance(ink, tuple): + ink = self.palette.getcolor(ink, self._image) + result_ink = self.draw.draw_ink(ink) + if fill is not None: + if isinstance(fill, str): + fill = ImageColor.getcolor(fill, self.mode) + if self.palette and isinstance(fill, tuple): + fill = self.palette.getcolor(fill, self._image) + result_fill = self.draw.draw_ink(fill) + return result_ink, result_fill + + def arc( + self, + xy: Coords, + start: float, + end: float, + fill: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw an arc.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_arc(xy, start, end, ink, width) + + def bitmap( + self, xy: Sequence[int], bitmap: Image.Image, fill: _Ink | None = None + ) -> None: + """Draw a bitmap.""" + bitmap.load() + ink, fill = self._getink(fill) + if ink is None: + ink = fill + if ink is not None: + self.draw.draw_bitmap(xy, bitmap.im, ink) + + def chord( + self, + xy: Coords, + start: float, + end: float, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a chord.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_chord(xy, start, end, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_chord(xy, start, end, ink, 0, width) + + def ellipse( + self, + xy: Coords, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw an ellipse.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_ellipse(xy, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_ellipse(xy, ink, 0, width) + + def circle( + self, + xy: Sequence[float], + radius: float, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a circle given center coordinates and a radius.""" + ellipse_xy = (xy[0] - radius, xy[1] - radius, xy[0] + radius, xy[1] + radius) + self.ellipse(ellipse_xy, fill, outline, width) + + def line( + self, + xy: Coords, + fill: _Ink | None = None, + width: int = 0, + joint: str | None = None, + ) -> None: + """Draw a line, or a connected sequence of line segments.""" + ink = self._getink(fill)[0] + if ink is not None: + self.draw.draw_lines(xy, ink, width) + if joint == "curve" and width > 4: + points: Sequence[Sequence[float]] + if isinstance(xy[0], (list, tuple)): + points = cast(Sequence[Sequence[float]], xy) + else: + points = [ + cast(Sequence[float], tuple(xy[i : i + 2])) + for i in range(0, len(xy), 2) + ] + for i in range(1, len(points) - 1): + point = points[i] + angles = [ + math.degrees(math.atan2(end[0] - start[0], start[1] - end[1])) + % 360 + for start, end in ( + (points[i - 1], point), + (point, points[i + 1]), + ) + ] + if angles[0] == angles[1]: + # This is a straight line, so no joint is required + continue + + def coord_at_angle( + coord: Sequence[float], angle: float + ) -> tuple[float, ...]: + x, y = coord + angle -= 90 + distance = width / 2 - 1 + return tuple( + p + (math.floor(p_d) if p_d > 0 else math.ceil(p_d)) + for p, p_d in ( + (x, distance * math.cos(math.radians(angle))), + (y, distance * math.sin(math.radians(angle))), + ) + ) + + flipped = ( + angles[1] > angles[0] and angles[1] - 180 > angles[0] + ) or (angles[1] < angles[0] and angles[1] + 180 > angles[0]) + coords = [ + (point[0] - width / 2 + 1, point[1] - width / 2 + 1), + (point[0] + width / 2 - 1, point[1] + width / 2 - 1), + ] + if flipped: + start, end = (angles[1] + 90, angles[0] + 90) + else: + start, end = (angles[0] - 90, angles[1] - 90) + self.pieslice(coords, start - 90, end - 90, fill) + + if width > 8: + # Cover potential gaps between the line and the joint + if flipped: + gap_coords = [ + coord_at_angle(point, angles[0] + 90), + point, + coord_at_angle(point, angles[1] + 90), + ] + else: + gap_coords = [ + coord_at_angle(point, angles[0] - 90), + point, + coord_at_angle(point, angles[1] - 90), + ] + self.line(gap_coords, fill, width=3) + + def shape( + self, + shape: Image.core._Outline, + fill: _Ink | None = None, + outline: _Ink | None = None, + ) -> None: + """(Experimental) Draw a shape.""" + shape.close() + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_outline(shape, fill_ink, 1) + if ink is not None and ink != fill_ink: + self.draw.draw_outline(shape, ink, 0) + + def pieslice( + self, + xy: Coords, + start: float, + end: float, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a pieslice.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_pieslice(xy, start, end, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_pieslice(xy, start, end, ink, 0, width) + + def point(self, xy: Coords, fill: _Ink | None = None) -> None: + """Draw one or more individual pixels.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_points(xy, ink) + + def polygon( + self, + xy: Coords, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a polygon.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_polygon(xy, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + if width == 1: + self.draw.draw_polygon(xy, ink, 0, width) + elif self.im is not None: + # To avoid expanding the polygon outwards, + # use the fill as a mask + mask = Image.new("1", self.im.size) + mask_ink = self._getink(1)[0] + draw = Draw(mask) + draw.draw.draw_polygon(xy, mask_ink, 1) + + self.draw.draw_polygon(xy, ink, 0, width * 2 - 1, mask.im) + + def regular_polygon( + self, + bounding_circle: Sequence[Sequence[float] | float], + n_sides: int, + rotation: float = 0, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a regular polygon.""" + xy = _compute_regular_polygon_vertices(bounding_circle, n_sides, rotation) + self.polygon(xy, fill, outline, width) + + def rectangle( + self, + xy: Coords, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a rectangle.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_rectangle(xy, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_rectangle(xy, ink, 0, width) + + def rounded_rectangle( + self, + xy: Coords, + radius: float = 0, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + *, + corners: tuple[bool, bool, bool, bool] | None = None, + ) -> None: + """Draw a rounded rectangle.""" + if isinstance(xy[0], (list, tuple)): + (x0, y0), (x1, y1) = cast(Sequence[Sequence[float]], xy) + else: + x0, y0, x1, y1 = cast(Sequence[float], xy) + if x1 < x0: + msg = "x1 must be greater than or equal to x0" + raise ValueError(msg) + if y1 < y0: + msg = "y1 must be greater than or equal to y0" + raise ValueError(msg) + if corners is None: + corners = (True, True, True, True) + + d = radius * 2 + + x0 = round(x0) + y0 = round(y0) + x1 = round(x1) + y1 = round(y1) + full_x, full_y = False, False + if all(corners): + full_x = d >= x1 - x0 - 1 + if full_x: + # The two left and two right corners are joined + d = x1 - x0 + full_y = d >= y1 - y0 - 1 + if full_y: + # The two top and two bottom corners are joined + d = y1 - y0 + if full_x and full_y: + # If all corners are joined, that is a circle + return self.ellipse(xy, fill, outline, width) + + if d == 0 or not any(corners): + # If the corners have no curve, + # or there are no corners, + # that is a rectangle + return self.rectangle(xy, fill, outline, width) + + r = int(d // 2) + ink, fill_ink = self._getink(outline, fill) + + def draw_corners(pieslice: bool) -> None: + parts: tuple[tuple[tuple[float, float, float, float], int, int], ...] + if full_x: + # Draw top and bottom halves + parts = ( + ((x0, y0, x0 + d, y0 + d), 180, 360), + ((x0, y1 - d, x0 + d, y1), 0, 180), + ) + elif full_y: + # Draw left and right halves + parts = ( + ((x0, y0, x0 + d, y0 + d), 90, 270), + ((x1 - d, y0, x1, y0 + d), 270, 90), + ) + else: + # Draw four separate corners + parts = tuple( + part + for i, part in enumerate( + ( + ((x0, y0, x0 + d, y0 + d), 180, 270), + ((x1 - d, y0, x1, y0 + d), 270, 360), + ((x1 - d, y1 - d, x1, y1), 0, 90), + ((x0, y1 - d, x0 + d, y1), 90, 180), + ) + ) + if corners[i] + ) + for part in parts: + if pieslice: + self.draw.draw_pieslice(*(part + (fill_ink, 1))) + else: + self.draw.draw_arc(*(part + (ink, width))) + + if fill_ink is not None: + draw_corners(True) + + if full_x: + self.draw.draw_rectangle((x0, y0 + r + 1, x1, y1 - r - 1), fill_ink, 1) + elif x1 - r - 1 > x0 + r + 1: + self.draw.draw_rectangle((x0 + r + 1, y0, x1 - r - 1, y1), fill_ink, 1) + if not full_x and not full_y: + left = [x0, y0, x0 + r, y1] + if corners[0]: + left[1] += r + 1 + if corners[3]: + left[3] -= r + 1 + self.draw.draw_rectangle(left, fill_ink, 1) + + right = [x1 - r, y0, x1, y1] + if corners[1]: + right[1] += r + 1 + if corners[2]: + right[3] -= r + 1 + self.draw.draw_rectangle(right, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + draw_corners(False) + + if not full_x: + top = [x0, y0, x1, y0 + width - 1] + if corners[0]: + top[0] += r + 1 + if corners[1]: + top[2] -= r + 1 + self.draw.draw_rectangle(top, ink, 1) + + bottom = [x0, y1 - width + 1, x1, y1] + if corners[3]: + bottom[0] += r + 1 + if corners[2]: + bottom[2] -= r + 1 + self.draw.draw_rectangle(bottom, ink, 1) + if not full_y: + left = [x0, y0, x0 + width - 1, y1] + if corners[0]: + left[1] += r + 1 + if corners[3]: + left[3] -= r + 1 + self.draw.draw_rectangle(left, ink, 1) + + right = [x1 - width + 1, y0, x1, y1] + if corners[1]: + right[1] += r + 1 + if corners[2]: + right[3] -= r + 1 + self.draw.draw_rectangle(right, ink, 1) + + def _multiline_check(self, text: AnyStr) -> bool: + split_character = "\n" if isinstance(text, str) else b"\n" + + return split_character in text + + def text( + self, + xy: tuple[float, float], + text: AnyStr, + fill: _Ink | None = None, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + stroke_fill: _Ink | None = None, + embedded_color: bool = False, + *args: Any, + **kwargs: Any, + ) -> None: + """Draw text.""" + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self._getfont(kwargs.get("font_size")) + + if self._multiline_check(text): + return self.multiline_text( + xy, + text, + fill, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + stroke_fill, + embedded_color, + ) + + def getink(fill: _Ink | None) -> int: + ink, fill_ink = self._getink(fill) + if ink is None: + assert fill_ink is not None + return fill_ink + return ink + + def draw_text(ink: int, stroke_width: float = 0) -> None: + mode = self.fontmode + if stroke_width == 0 and embedded_color: + mode = "RGBA" + coord = [] + for i in range(2): + coord.append(int(xy[i])) + start = (math.modf(xy[0])[0], math.modf(xy[1])[0]) + try: + mask, offset = font.getmask2( # type: ignore[union-attr,misc] + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + stroke_filled=True, + anchor=anchor, + ink=ink, + start=start, + *args, + **kwargs, + ) + coord = [coord[0] + offset[0], coord[1] + offset[1]] + except AttributeError: + try: + mask = font.getmask( # type: ignore[misc] + text, + mode, + direction, + features, + language, + stroke_width, + anchor, + ink, + start=start, + *args, + **kwargs, + ) + except TypeError: + mask = font.getmask(text) + if mode == "RGBA": + # font.getmask2(mode="RGBA") returns color in RGB bands and mask in A + # extract mask and set text alpha + color, mask = mask, mask.getband(3) + ink_alpha = struct.pack("i", ink)[3] + color.fillband(3, ink_alpha) + x, y = coord + if self.im is not None: + self.im.paste( + color, (x, y, x + mask.size[0], y + mask.size[1]), mask + ) + else: + self.draw.draw_bitmap(coord, mask, ink) + + ink = getink(fill) + if ink is not None: + stroke_ink = None + if stroke_width: + stroke_ink = getink(stroke_fill) if stroke_fill is not None else ink + + if stroke_ink is not None: + # Draw stroked text + draw_text(stroke_ink, stroke_width) + + # Draw normal text + if ink != stroke_ink: + draw_text(ink) + else: + # Only draw normal text + draw_text(ink) + + def _prepare_multiline_text( + self, + xy: tuple[float, float], + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ), + anchor: str | None, + spacing: float, + align: str, + direction: str | None, + features: list[str] | None, + language: str | None, + stroke_width: float, + embedded_color: bool, + font_size: float | None, + ) -> tuple[ + ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont, + list[tuple[tuple[float, float], str, AnyStr]], + ]: + if anchor is None: + anchor = "lt" if direction == "ttb" else "la" + elif len(anchor) != 2: + msg = "anchor must be a 2 character string" + raise ValueError(msg) + elif anchor[1] in "tb" and direction != "ttb": + msg = "anchor not supported for multiline text" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + + lines = text.split("\n" if isinstance(text, str) else b"\n") + line_spacing = ( + self.textbbox((0, 0), "A", font, stroke_width=stroke_width)[3] + + stroke_width + + spacing + ) + + top = xy[1] + parts = [] + if direction == "ttb": + left = xy[0] + for line in lines: + parts.append(((left, top), anchor, line)) + left += line_spacing + else: + widths = [] + max_width: float = 0 + for line in lines: + line_width = self.textlength( + line, + font, + direction=direction, + features=features, + language=language, + embedded_color=embedded_color, + ) + widths.append(line_width) + max_width = max(max_width, line_width) + + if anchor[1] == "m": + top -= (len(lines) - 1) * line_spacing / 2.0 + elif anchor[1] == "d": + top -= (len(lines) - 1) * line_spacing + + for idx, line in enumerate(lines): + left = xy[0] + width_difference = max_width - widths[idx] + + # align by align parameter + if align in ("left", "justify"): + pass + elif align == "center": + left += width_difference / 2.0 + elif align == "right": + left += width_difference + else: + msg = 'align must be "left", "center", "right" or "justify"' + raise ValueError(msg) + + if ( + align == "justify" + and width_difference != 0 + and idx != len(lines) - 1 + ): + words = line.split(" " if isinstance(text, str) else b" ") + if len(words) > 1: + # align left by anchor + if anchor[0] == "m": + left -= max_width / 2.0 + elif anchor[0] == "r": + left -= max_width + + word_widths = [ + self.textlength( + word, + font, + direction=direction, + features=features, + language=language, + embedded_color=embedded_color, + ) + for word in words + ] + word_anchor = "l" + anchor[1] + width_difference = max_width - sum(word_widths) + for i, word in enumerate(words): + parts.append(((left, top), word_anchor, word)) + left += word_widths[i] + width_difference / (len(words) - 1) + top += line_spacing + continue + + # align left by anchor + if anchor[0] == "m": + left -= width_difference / 2.0 + elif anchor[0] == "r": + left -= width_difference + parts.append(((left, top), anchor, line)) + top += line_spacing + + return font, parts + + def multiline_text( + self, + xy: tuple[float, float], + text: AnyStr, + fill: _Ink | None = None, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + stroke_fill: _Ink | None = None, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> None: + font, lines = self._prepare_multiline_text( + xy, + text, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + embedded_color, + font_size, + ) + + for xy, anchor, line in lines: + self.text( + xy, + line, + fill, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + stroke_fill=stroke_fill, + embedded_color=embedded_color, + ) + + def textlength( + self, + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> float: + """Get the length of a given string, in pixels with 1/64 precision.""" + if self._multiline_check(text): + msg = "can't measure length of multiline text" + raise ValueError(msg) + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + mode = "RGBA" if embedded_color else self.fontmode + return font.getlength(text, mode, direction, features, language) + + def textbbox( + self, + xy: tuple[float, float], + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> tuple[float, float, float, float]: + """Get the bounding box of a given string, in pixels.""" + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + + if self._multiline_check(text): + return self.multiline_textbbox( + xy, + text, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + embedded_color, + ) + + mode = "RGBA" if embedded_color else self.fontmode + bbox = font.getbbox( + text, mode, direction, features, language, stroke_width, anchor + ) + return bbox[0] + xy[0], bbox[1] + xy[1], bbox[2] + xy[0], bbox[3] + xy[1] + + def multiline_textbbox( + self, + xy: tuple[float, float], + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> tuple[float, float, float, float]: + font, lines = self._prepare_multiline_text( + xy, + text, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + embedded_color, + font_size, + ) + + bbox: tuple[float, float, float, float] | None = None + + for xy, anchor, line in lines: + bbox_line = self.textbbox( + xy, + line, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + embedded_color=embedded_color, + ) + if bbox is None: + bbox = bbox_line + else: + bbox = ( + min(bbox[0], bbox_line[0]), + min(bbox[1], bbox_line[1]), + max(bbox[2], bbox_line[2]), + max(bbox[3], bbox_line[3]), + ) + + if bbox is None: + return xy[0], xy[1], xy[0], xy[1] + return bbox + + +def Draw(im: Image.Image, mode: str | None = None) -> ImageDraw: + """ + A simple 2D drawing interface for PIL images. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + try: + return getattr(im, "getdraw")(mode) + except AttributeError: + return ImageDraw(im, mode) + + +def getdraw( + im: Image.Image | None = None, hints: list[str] | None = None +) -> tuple[ImageDraw2.Draw | None, ModuleType]: + """ + :param im: The image to draw in. + :param hints: An optional list of hints. Deprecated. + :returns: A (drawing context, drawing resource factory) tuple. + """ + if hints is not None: + deprecate("'hints' parameter", 12) + from . import ImageDraw2 + + draw = ImageDraw2.Draw(im) if im is not None else None + return draw, ImageDraw2 + + +def floodfill( + image: Image.Image, + xy: tuple[int, int], + value: float | tuple[int, ...], + border: float | tuple[int, ...] | None = None, + thresh: float = 0, +) -> None: + """ + .. warning:: This method is experimental. + + Fills a bounded region with a given color. + + :param image: Target image. + :param xy: Seed position (a 2-item coordinate tuple). See + :ref:`coordinate-system`. + :param value: Fill color. + :param border: Optional border value. If given, the region consists of + pixels with a color different from the border color. If not given, + the region consists of pixels having the same color as the seed + pixel. + :param thresh: Optional threshold value which specifies a maximum + tolerable difference of a pixel value from the 'background' in + order for it to be replaced. Useful for filling regions of + non-homogeneous, but similar, colors. + """ + # based on an implementation by Eric S. Raymond + # amended by yo1995 @20180806 + pixel = image.load() + assert pixel is not None + x, y = xy + try: + background = pixel[x, y] + if _color_diff(value, background) <= thresh: + return # seed point already has fill color + pixel[x, y] = value + except (ValueError, IndexError): + return # seed point outside image + edge = {(x, y)} + # use a set to keep record of current and previous edge pixels + # to reduce memory consumption + full_edge = set() + while edge: + new_edge = set() + for x, y in edge: # 4 adjacent method + for s, t in ((x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)): + # If already processed, or if a coordinate is negative, skip + if (s, t) in full_edge or s < 0 or t < 0: + continue + try: + p = pixel[s, t] + except (ValueError, IndexError): + pass + else: + full_edge.add((s, t)) + if border is None: + fill = _color_diff(p, background) <= thresh + else: + fill = p not in (value, border) + if fill: + pixel[s, t] = value + new_edge.add((s, t)) + full_edge = edge # discard pixels processed + edge = new_edge + + +def _compute_regular_polygon_vertices( + bounding_circle: Sequence[Sequence[float] | float], n_sides: int, rotation: float +) -> list[tuple[float, float]]: + """ + Generate a list of vertices for a 2D regular polygon. + + :param bounding_circle: The bounding circle is a sequence defined + by a point and radius. The polygon is inscribed in this circle. + (e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``) + :param n_sides: Number of sides + (e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon) + :param rotation: Apply an arbitrary rotation to the polygon + (e.g. ``rotation=90``, applies a 90 degree rotation) + :return: List of regular polygon vertices + (e.g. ``[(25, 50), (50, 50), (50, 25), (25, 25)]``) + + How are the vertices computed? + 1. Compute the following variables + - theta: Angle between the apothem & the nearest polygon vertex + - side_length: Length of each polygon edge + - centroid: Center of bounding circle (1st, 2nd elements of bounding_circle) + - polygon_radius: Polygon radius (last element of bounding_circle) + - angles: Location of each polygon vertex in polar grid + (e.g. A square with 0 degree rotation => [225.0, 315.0, 45.0, 135.0]) + + 2. For each angle in angles, get the polygon vertex at that angle + The vertex is computed using the equation below. + X= xcos(φ) + ysin(φ) + Y= −xsin(φ) + ycos(φ) + + Note: + φ = angle in degrees + x = 0 + y = polygon_radius + + The formula above assumes rotation around the origin. + In our case, we are rotating around the centroid. + To account for this, we use the formula below + X = xcos(φ) + ysin(φ) + centroid_x + Y = −xsin(φ) + ycos(φ) + centroid_y + """ + # 1. Error Handling + # 1.1 Check `n_sides` has an appropriate value + if not isinstance(n_sides, int): + msg = "n_sides should be an int" # type: ignore[unreachable] + raise TypeError(msg) + if n_sides < 3: + msg = "n_sides should be an int > 2" + raise ValueError(msg) + + # 1.2 Check `bounding_circle` has an appropriate value + if not isinstance(bounding_circle, (list, tuple)): + msg = "bounding_circle should be a sequence" + raise TypeError(msg) + + if len(bounding_circle) == 3: + if not all(isinstance(i, (int, float)) for i in bounding_circle): + msg = "bounding_circle should only contain numeric data" + raise ValueError(msg) + + *centroid, polygon_radius = cast(list[float], list(bounding_circle)) + elif len(bounding_circle) == 2 and isinstance(bounding_circle[0], (list, tuple)): + if not all( + isinstance(i, (int, float)) for i in bounding_circle[0] + ) or not isinstance(bounding_circle[1], (int, float)): + msg = "bounding_circle should only contain numeric data" + raise ValueError(msg) + + if len(bounding_circle[0]) != 2: + msg = "bounding_circle centre should contain 2D coordinates (e.g. (x, y))" + raise ValueError(msg) + + centroid = cast(list[float], list(bounding_circle[0])) + polygon_radius = cast(float, bounding_circle[1]) + else: + msg = ( + "bounding_circle should contain 2D coordinates " + "and a radius (e.g. (x, y, r) or ((x, y), r) )" + ) + raise ValueError(msg) + + if polygon_radius <= 0: + msg = "bounding_circle radius should be > 0" + raise ValueError(msg) + + # 1.3 Check `rotation` has an appropriate value + if not isinstance(rotation, (int, float)): + msg = "rotation should be an int or float" # type: ignore[unreachable] + raise ValueError(msg) + + # 2. Define Helper Functions + def _apply_rotation(point: list[float], degrees: float) -> tuple[float, float]: + return ( + round( + point[0] * math.cos(math.radians(360 - degrees)) + - point[1] * math.sin(math.radians(360 - degrees)) + + centroid[0], + 2, + ), + round( + point[1] * math.cos(math.radians(360 - degrees)) + + point[0] * math.sin(math.radians(360 - degrees)) + + centroid[1], + 2, + ), + ) + + def _compute_polygon_vertex(angle: float) -> tuple[float, float]: + start_point = [polygon_radius, 0] + return _apply_rotation(start_point, angle) + + def _get_angles(n_sides: int, rotation: float) -> list[float]: + angles = [] + degrees = 360 / n_sides + # Start with the bottom left polygon vertex + current_angle = (270 - 0.5 * degrees) + rotation + for _ in range(n_sides): + angles.append(current_angle) + current_angle += degrees + if current_angle > 360: + current_angle -= 360 + return angles + + # 3. Variable Declarations + angles = _get_angles(n_sides, rotation) + + # 4. Compute Vertices + return [_compute_polygon_vertex(angle) for angle in angles] + + +def _color_diff( + color1: float | tuple[int, ...], color2: float | tuple[int, ...] +) -> float: + """ + Uses 1-norm distance to calculate difference between two values. + """ + first = color1 if isinstance(color1, tuple) else (color1,) + second = color2 if isinstance(color2, tuple) else (color2,) + + return sum(abs(first[i] - second[i]) for i in range(len(second))) diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageDraw2.py b/myenv/lib/python3.10/site-packages/PIL/ImageDraw2.py new file mode 100644 index 0000000..3d68658 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageDraw2.py @@ -0,0 +1,243 @@ +# +# The Python Imaging Library +# $Id$ +# +# WCK-style drawing interface operations +# +# History: +# 2003-12-07 fl created +# 2005-05-15 fl updated; added to PIL as ImageDraw2 +# 2005-05-15 fl added text support +# 2005-05-20 fl added arc/chord/pieslice support +# +# Copyright (c) 2003-2005 by Secret Labs AB +# Copyright (c) 2003-2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +""" +(Experimental) WCK-style drawing interface operations + +.. seealso:: :py:mod:`PIL.ImageDraw` +""" +from __future__ import annotations + +from typing import Any, AnyStr, BinaryIO + +from . import Image, ImageColor, ImageDraw, ImageFont, ImagePath +from ._typing import Coords, StrOrBytesPath + + +class Pen: + """Stores an outline color and width.""" + + def __init__(self, color: str, width: int = 1, opacity: int = 255) -> None: + self.color = ImageColor.getrgb(color) + self.width = width + + +class Brush: + """Stores a fill color""" + + def __init__(self, color: str, opacity: int = 255) -> None: + self.color = ImageColor.getrgb(color) + + +class Font: + """Stores a TrueType font and color""" + + def __init__( + self, color: str, file: StrOrBytesPath | BinaryIO, size: float = 12 + ) -> None: + # FIXME: add support for bitmap fonts + self.color = ImageColor.getrgb(color) + self.font = ImageFont.truetype(file, size) + + +class Draw: + """ + (Experimental) WCK-style drawing interface + """ + + def __init__( + self, + image: Image.Image | str, + size: tuple[int, int] | list[int] | None = None, + color: float | tuple[float, ...] | str | None = None, + ) -> None: + if isinstance(image, str): + if size is None: + msg = "If image argument is mode string, size must be a list or tuple" + raise ValueError(msg) + image = Image.new(image, size, color) + self.draw = ImageDraw.Draw(image) + self.image = image + self.transform: tuple[float, float, float, float, float, float] | None = None + + def flush(self) -> Image.Image: + return self.image + + def render( + self, + op: str, + xy: Coords, + pen: Pen | Brush | None, + brush: Brush | Pen | None = None, + **kwargs: Any, + ) -> None: + # handle color arguments + outline = fill = None + width = 1 + if isinstance(pen, Pen): + outline = pen.color + width = pen.width + elif isinstance(brush, Pen): + outline = brush.color + width = brush.width + if isinstance(brush, Brush): + fill = brush.color + elif isinstance(pen, Brush): + fill = pen.color + # handle transformation + if self.transform: + path = ImagePath.Path(xy) + path.transform(self.transform) + xy = path + # render the item + if op in ("arc", "line"): + kwargs.setdefault("fill", outline) + else: + kwargs.setdefault("fill", fill) + kwargs.setdefault("outline", outline) + if op == "line": + kwargs.setdefault("width", width) + getattr(self.draw, op)(xy, **kwargs) + + def settransform(self, offset: tuple[float, float]) -> None: + """Sets a transformation offset.""" + (xoffset, yoffset) = offset + self.transform = (1, 0, xoffset, 0, 1, yoffset) + + def arc( + self, + xy: Coords, + pen: Pen | Brush | None, + start: float, + end: float, + *options: Any, + ) -> None: + """ + Draws an arc (a portion of a circle outline) between the start and end + angles, inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.arc` + """ + self.render("arc", xy, pen, *options, start=start, end=end) + + def chord( + self, + xy: Coords, + pen: Pen | Brush | None, + start: float, + end: float, + *options: Any, + ) -> None: + """ + Same as :py:meth:`~PIL.ImageDraw2.Draw.arc`, but connects the end points + with a straight line. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.chord` + """ + self.render("chord", xy, pen, *options, start=start, end=end) + + def ellipse(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws an ellipse inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse` + """ + self.render("ellipse", xy, pen, *options) + + def line(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws a line between the coordinates in the ``xy`` list. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line` + """ + self.render("line", xy, pen, *options) + + def pieslice( + self, + xy: Coords, + pen: Pen | Brush | None, + start: float, + end: float, + *options: Any, + ) -> None: + """ + Same as arc, but also draws straight lines between the end points and the + center of the bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.pieslice` + """ + self.render("pieslice", xy, pen, *options, start=start, end=end) + + def polygon(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws a polygon. + + The polygon outline consists of straight lines between the given + coordinates, plus a straight line between the last and the first + coordinate. + + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.polygon` + """ + self.render("polygon", xy, pen, *options) + + def rectangle(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws a rectangle. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle` + """ + self.render("rectangle", xy, pen, *options) + + def text(self, xy: tuple[float, float], text: AnyStr, font: Font) -> None: + """ + Draws the string at the given position. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.text` + """ + if self.transform: + path = ImagePath.Path(xy) + path.transform(self.transform) + xy = path + self.draw.text(xy, text, font=font.font, fill=font.color) + + def textbbox( + self, xy: tuple[float, float], text: AnyStr, font: Font + ) -> tuple[float, float, float, float]: + """ + Returns bounding box (in pixels) of given text. + + :return: ``(left, top, right, bottom)`` bounding box + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textbbox` + """ + if self.transform: + path = ImagePath.Path(xy) + path.transform(self.transform) + xy = path + return self.draw.textbbox(xy, text, font=font.font) + + def textlength(self, text: AnyStr, font: Font) -> float: + """ + Returns length (in pixels) of given text. + This is the amount by which following text should be offset. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textlength` + """ + return self.draw.textlength(text, font=font.font) diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageEnhance.py b/myenv/lib/python3.10/site-packages/PIL/ImageEnhance.py new file mode 100644 index 0000000..0e7e6dd --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageEnhance.py @@ -0,0 +1,113 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image enhancement classes +# +# For a background, see "Image Processing By Interpolation and +# Extrapolation", Paul Haeberli and Douglas Voorhies. Available +# at http://www.graficaobscura.com/interp/index.html +# +# History: +# 1996-03-23 fl Created +# 2009-06-16 fl Fixed mean calculation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image, ImageFilter, ImageStat + + +class _Enhance: + image: Image.Image + degenerate: Image.Image + + def enhance(self, factor: float) -> Image.Image: + """ + Returns an enhanced image. + + :param factor: A floating point value controlling the enhancement. + Factor 1.0 always returns a copy of the original image, + lower factors mean less color (brightness, contrast, + etc), and higher values more. There are no restrictions + on this value. + :rtype: :py:class:`~PIL.Image.Image` + """ + return Image.blend(self.degenerate, self.image, factor) + + +class Color(_Enhance): + """Adjust image color balance. + + This class can be used to adjust the colour balance of an image, in + a manner similar to the controls on a colour TV set. An enhancement + factor of 0.0 gives a black and white image. A factor of 1.0 gives + the original image. + """ + + def __init__(self, image: Image.Image) -> None: + self.image = image + self.intermediate_mode = "L" + if "A" in image.getbands(): + self.intermediate_mode = "LA" + + if self.intermediate_mode != image.mode: + image = image.convert(self.intermediate_mode).convert(image.mode) + self.degenerate = image + + +class Contrast(_Enhance): + """Adjust image contrast. + + This class can be used to control the contrast of an image, similar + to the contrast control on a TV set. An enhancement factor of 0.0 + gives a solid gray image. A factor of 1.0 gives the original image. + """ + + def __init__(self, image: Image.Image) -> None: + self.image = image + if image.mode != "L": + image = image.convert("L") + mean = int(ImageStat.Stat(image).mean[0] + 0.5) + self.degenerate = Image.new("L", image.size, mean) + if self.degenerate.mode != self.image.mode: + self.degenerate = self.degenerate.convert(self.image.mode) + + if "A" in self.image.getbands(): + self.degenerate.putalpha(self.image.getchannel("A")) + + +class Brightness(_Enhance): + """Adjust image brightness. + + This class can be used to control the brightness of an image. An + enhancement factor of 0.0 gives a black image. A factor of 1.0 gives the + original image. + """ + + def __init__(self, image: Image.Image) -> None: + self.image = image + self.degenerate = Image.new(image.mode, image.size, 0) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) + + +class Sharpness(_Enhance): + """Adjust image sharpness. + + This class can be used to adjust the sharpness of an image. An + enhancement factor of 0.0 gives a blurred image, a factor of 1.0 gives the + original image, and a factor of 2.0 gives a sharpened image. + """ + + def __init__(self, image: Image.Image) -> None: + self.image = image + self.degenerate = image.filter(ImageFilter.SMOOTH) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageFile.py b/myenv/lib/python3.10/site-packages/PIL/ImageFile.py new file mode 100644 index 0000000..bf556a2 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageFile.py @@ -0,0 +1,922 @@ +# +# The Python Imaging Library. +# $Id$ +# +# base class for image file handlers +# +# history: +# 1995-09-09 fl Created +# 1996-03-11 fl Fixed load mechanism. +# 1996-04-15 fl Added pcx/xbm decoders. +# 1996-04-30 fl Added encoders. +# 1996-12-14 fl Added load helpers +# 1997-01-11 fl Use encode_to_file where possible +# 1997-08-27 fl Flush output in _save +# 1998-03-05 fl Use memory mapping for some modes +# 1999-02-04 fl Use memory mapping also for "I;16" and "I;16B" +# 1999-05-31 fl Added image parser +# 2000-10-12 fl Set readonly flag on memory-mapped images +# 2002-03-20 fl Use better messages for common decoder errors +# 2003-04-21 fl Fall back on mmap/map_buffer if map is not available +# 2003-10-30 fl Added StubImageFile class +# 2004-02-25 fl Made incremental parser more robust +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import abc +import io +import itertools +import logging +import os +import struct +from typing import IO, Any, NamedTuple, cast + +from . import ExifTags, Image +from ._deprecate import deprecate +from ._util import DeferredError, is_path + +TYPE_CHECKING = False +if TYPE_CHECKING: + from ._typing import StrOrBytesPath + +logger = logging.getLogger(__name__) + +MAXBLOCK = 65536 + +SAFEBLOCK = 1024 * 1024 + +LOAD_TRUNCATED_IMAGES = False +"""Whether or not to load truncated image files. User code may change this.""" + +ERRORS = { + -1: "image buffer overrun error", + -2: "decoding error", + -3: "unknown error", + -8: "bad configuration", + -9: "out of memory error", +} +""" +Dict of known error codes returned from :meth:`.PyDecoder.decode`, +:meth:`.PyEncoder.encode` :meth:`.PyEncoder.encode_to_pyfd` and +:meth:`.PyEncoder.encode_to_file`. +""" + + +# +# -------------------------------------------------------------------- +# Helpers + + +def _get_oserror(error: int, *, encoder: bool) -> OSError: + try: + msg = Image.core.getcodecstatus(error) + except AttributeError: + msg = ERRORS.get(error) + if not msg: + msg = f"{'encoder' if encoder else 'decoder'} error {error}" + msg += f" when {'writing' if encoder else 'reading'} image file" + return OSError(msg) + + +def raise_oserror(error: int) -> OSError: + deprecate( + "raise_oserror", + 12, + action="It is only useful for translating error codes returned by a codec's " + "decode() method, which ImageFile already does automatically.", + ) + raise _get_oserror(error, encoder=False) + + +def _tilesort(t: _Tile) -> int: + # sort on offset + return t[2] + + +class _Tile(NamedTuple): + codec_name: str + extents: tuple[int, int, int, int] | None + offset: int = 0 + args: tuple[Any, ...] | str | None = None + + +# +# -------------------------------------------------------------------- +# ImageFile base class + + +class ImageFile(Image.Image): + """Base class for image file format handlers.""" + + def __init__( + self, fp: StrOrBytesPath | IO[bytes], filename: str | bytes | None = None + ) -> None: + super().__init__() + + self._min_frame = 0 + + self.custom_mimetype: str | None = None + + self.tile: list[_Tile] = [] + """ A list of tile descriptors """ + + self.readonly = 1 # until we know better + + self.decoderconfig: tuple[Any, ...] = () + self.decodermaxblock = MAXBLOCK + + if is_path(fp): + # filename + self.fp = open(fp, "rb") + self.filename = os.fspath(fp) + self._exclusive_fp = True + else: + # stream + self.fp = cast(IO[bytes], fp) + self.filename = filename if filename is not None else "" + # can be overridden + self._exclusive_fp = False + + try: + try: + self._open() + except ( + IndexError, # end of data + TypeError, # end of data (ord) + KeyError, # unsupported mode + EOFError, # got header but not the first frame + struct.error, + ) as v: + raise SyntaxError(v) from v + + if not self.mode or self.size[0] <= 0 or self.size[1] <= 0: + msg = "not identified by this driver" + raise SyntaxError(msg) + except BaseException: + # close the file only if we have opened it this constructor + if self._exclusive_fp: + self.fp.close() + raise + + def _open(self) -> None: + pass + + def _close_fp(self): + if getattr(self, "_fp", False) and not isinstance(self._fp, DeferredError): + if self._fp != self.fp: + self._fp.close() + self._fp = DeferredError(ValueError("Operation on closed image")) + if self.fp: + self.fp.close() + + def close(self) -> None: + """ + Closes the file pointer, if possible. + + This operation will destroy the image core and release its memory. + The image data will be unusable afterward. + + This function is required to close images that have multiple frames or + have not had their file read and closed by the + :py:meth:`~PIL.Image.Image.load` method. See :ref:`file-handling` for + more information. + """ + try: + self._close_fp() + self.fp = None + except Exception as msg: + logger.debug("Error closing: %s", msg) + + super().close() + + def get_child_images(self) -> list[ImageFile]: + child_images = [] + exif = self.getexif() + ifds = [] + if ExifTags.Base.SubIFDs in exif: + subifd_offsets = exif[ExifTags.Base.SubIFDs] + if subifd_offsets: + if not isinstance(subifd_offsets, tuple): + subifd_offsets = (subifd_offsets,) + 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(ExifTags.Base.JpegIFOffset): + assert exif._info is not None + ifds.append((ifd1, exif._info.next)) + + offset = None + for ifd, ifd_offset in ifds: + assert self.fp is not None + current_offset = self.fp.tell() + if offset is None: + offset = current_offset + + fp = self.fp + if ifd is not None: + 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) + + length = ifd.get(ExifTags.Base.JpegIFByteCount) + assert isinstance(length, int) + data = self.fp.read(length) + fp = io.BytesIO(data) + + with Image.open(fp) as im: + from . import TiffImagePlugin + + if thumbnail_offset is None and isinstance( + im, TiffImagePlugin.TiffImageFile + ): + im._frame_pos = [ifd_offset] + im._seek(0) + im.load() + child_images.append(im) + + if offset is not None: + assert self.fp is not None + self.fp.seek(offset) + return child_images + + def get_format_mimetype(self) -> str | None: + if self.custom_mimetype: + return self.custom_mimetype + if self.format is not None: + return Image.MIME.get(self.format.upper()) + return None + + def __getstate__(self) -> list[Any]: + return super().__getstate__() + [self.filename] + + def __setstate__(self, state: list[Any]) -> None: + self.tile = [] + if len(state) > 5: + self.filename = state[5] + super().__setstate__(state) + + def verify(self) -> None: + """Check file integrity""" + + # raise exception if something's wrong. must be called + # directly after open, and closes file when finished. + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def load(self) -> Image.core.PixelAccess | None: + """Load image data based on tile list""" + + if not self.tile and self._im is None: + msg = "cannot load this image" + raise OSError(msg) + + pixel = Image.Image.load(self) + if not self.tile: + return pixel + + self.map: mmap.mmap | None = None + use_mmap = self.filename and len(self.tile) == 1 + + readonly = 0 + + # look for read/seek overrides + if hasattr(self, "load_read"): + read = self.load_read + # don't use mmap if there are custom read/seek functions + use_mmap = False + else: + read = self.fp.read + + if hasattr(self, "load_seek"): + seek = self.load_seek + use_mmap = False + else: + seek = self.fp.seek + + if use_mmap: + # try memory mapping + decoder_name, extents, offset, args = self.tile[0] + if isinstance(args, str): + args = (args, 0, 1) + if ( + decoder_name == "raw" + and isinstance(args, tuple) + and len(args) >= 3 + and args[0] == self.mode + and args[0] in Image._MAPMODES + ): + try: + # use mmap, if possible + import mmap + + with open(self.filename) as fp: + self.map = mmap.mmap(fp.fileno(), 0, access=mmap.ACCESS_READ) + if offset + self.size[1] * args[1] > self.map.size(): + msg = "buffer is not large enough" + raise OSError(msg) + self.im = Image.core.map_buffer( + self.map, self.size, decoder_name, offset, args + ) + readonly = 1 + # After trashing self.im, + # we might need to reload the palette data. + if self.palette: + self.palette.dirty = 1 + except (AttributeError, OSError, ImportError): + self.map = None + + self.load_prepare() + err_code = -3 # initialize to unknown error + if not self.map: + # sort tiles in file order + self.tile.sort(key=_tilesort) + + # FIXME: This is a hack to handle TIFF's JpegTables tag. + prefix = getattr(self, "tile_prefix", b"") + + # Remove consecutive duplicates that only differ by their offset + self.tile = [ + list(tiles)[-1] + for _, tiles in itertools.groupby( + self.tile, lambda tile: (tile[0], tile[1], tile[3]) + ) + ] + for i, (decoder_name, extents, offset, args) in enumerate(self.tile): + seek(offset) + decoder = Image._getdecoder( + self.mode, decoder_name, args, self.decoderconfig + ) + try: + decoder.setimage(self.im, extents) + if decoder.pulls_fd: + decoder.setfd(self.fp) + err_code = decoder.decode(b"")[1] + else: + b = prefix + while True: + read_bytes = self.decodermaxblock + if i + 1 < len(self.tile): + next_offset = self.tile[i + 1].offset + if next_offset > offset: + read_bytes = next_offset - offset + try: + s = read(read_bytes) + except (IndexError, struct.error) as e: + # truncated png/gif + if LOAD_TRUNCATED_IMAGES: + break + else: + msg = "image file is truncated" + raise OSError(msg) from e + + if not s: # truncated jpeg + if LOAD_TRUNCATED_IMAGES: + break + else: + msg = ( + "image file is truncated " + f"({len(b)} bytes not processed)" + ) + raise OSError(msg) + + b = b + s + n, err_code = decoder.decode(b) + if n < 0: + break + b = b[n:] + finally: + # Need to cleanup here to prevent leaks + decoder.cleanup() + + self.tile = [] + self.readonly = readonly + + self.load_end() + + if self._exclusive_fp and self._close_exclusive_fp_after_loading: + self.fp.close() + self.fp = None + + if not self.map and not LOAD_TRUNCATED_IMAGES and err_code < 0: + # still raised if decoder fails to return anything + raise _get_oserror(err_code, encoder=False) + + return Image.Image.load(self) + + def load_prepare(self) -> None: + # create image memory if necessary + if self._im is None: + self.im = Image.core.new(self.mode, self.size) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def load_end(self) -> None: + # may be overridden + pass + + # may be defined for contained formats + # def load_seek(self, pos: int) -> None: + # pass + + # may be defined for blocked formats (e.g. PNG) + # def load_read(self, read_bytes: int) -> bytes: + # pass + + def _seek_check(self, frame: int) -> bool: + if ( + frame < self._min_frame + # Only check upper limit on frames if additional seek operations + # are not required to do so + or ( + not (hasattr(self, "_n_frames") and self._n_frames is None) + and frame >= getattr(self, "n_frames") + self._min_frame + ) + ): + msg = "attempt to seek outside sequence" + raise EOFError(msg) + + return self.tell() != frame + + +class StubHandler(abc.ABC): + def open(self, im: StubImageFile) -> None: + pass + + @abc.abstractmethod + def load(self, im: StubImageFile) -> Image.Image: + pass + + +class StubImageFile(ImageFile, metaclass=abc.ABCMeta): + """ + Base class for stub image loaders. + + A stub loader is an image loader that can identify files of a + certain format, but relies on external code to load the file. + """ + + @abc.abstractmethod + def _open(self) -> None: + pass + + def load(self) -> Image.core.PixelAccess | None: + loader = self._load() + if loader is None: + msg = f"cannot find loader for this {self.format} file" + raise OSError(msg) + image = loader.load(self) + assert image is not None + # become the other object (!) + self.__class__ = image.__class__ # type: ignore[assignment] + self.__dict__ = image.__dict__ + return image.load() + + @abc.abstractmethod + def _load(self) -> StubHandler | None: + """(Hook) Find actual image loader.""" + pass + + +class Parser: + """ + Incremental image parser. This class implements the standard + feed/close consumer interface. + """ + + incremental = None + image: Image.Image | None = None + data: bytes | None = None + decoder: Image.core.ImagingDecoder | PyDecoder | None = None + offset = 0 + finished = 0 + + def reset(self) -> None: + """ + (Consumer) Reset the parser. Note that you can only call this + method immediately after you've created a parser; parser + instances cannot be reused. + """ + assert self.data is None, "cannot reuse parsers" + + def feed(self, data: bytes) -> None: + """ + (Consumer) Feed data to the parser. + + :param data: A string buffer. + :exception OSError: If the parser failed to parse the image file. + """ + # collect data + + if self.finished: + return + + if self.data is None: + self.data = data + else: + self.data = self.data + data + + # parse what we have + if self.decoder: + if self.offset > 0: + # skip header + skip = min(len(self.data), self.offset) + self.data = self.data[skip:] + self.offset = self.offset - skip + if self.offset > 0 or not self.data: + return + + n, e = self.decoder.decode(self.data) + + if n < 0: + # end of stream + self.data = None + self.finished = 1 + if e < 0: + # decoding error + self.image = None + raise _get_oserror(e, encoder=False) + else: + # end of image + return + self.data = self.data[n:] + + elif self.image: + # if we end up here with no decoder, this file cannot + # be incrementally parsed. wait until we've gotten all + # available data + pass + + else: + # attempt to open this file + try: + with io.BytesIO(self.data) as fp: + im = Image.open(fp) + except OSError: + pass # not enough data + else: + flag = hasattr(im, "load_seek") or hasattr(im, "load_read") + if flag or len(im.tile) != 1: + # custom load code, or multiple tiles + self.decode = None + else: + # initialize decoder + im.load_prepare() + d, e, o, a = im.tile[0] + im.tile = [] + self.decoder = Image._getdecoder(im.mode, d, a, im.decoderconfig) + self.decoder.setimage(im.im, e) + + # calculate decoder offset + self.offset = o + if self.offset <= len(self.data): + self.data = self.data[self.offset :] + self.offset = 0 + + self.image = im + + def __enter__(self) -> Parser: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def close(self) -> Image.Image: + """ + (Consumer) Close the stream. + + :returns: An image object. + :exception OSError: If the parser failed to parse the image file either + because it cannot be identified or cannot be + decoded. + """ + # finish decoding + if self.decoder: + # get rid of what's left in the buffers + self.feed(b"") + self.data = self.decoder = None + if not self.finished: + msg = "image was incomplete" + raise OSError(msg) + if not self.image: + msg = "cannot parse this image" + raise OSError(msg) + if self.data: + # incremental parsing not possible; reopen the file + # not that we have all data + with io.BytesIO(self.data) as fp: + try: + self.image = Image.open(fp) + finally: + self.image.load() + return self.image + + +# -------------------------------------------------------------------- + + +def _save(im: Image.Image, fp: IO[bytes], tile: list[_Tile], bufsize: int = 0) -> None: + """Helper to save image based on tile list + + :param im: Image object. + :param fp: File object. + :param tile: Tile list. + :param bufsize: Optional buffer size + """ + + im.load() + if not hasattr(im, "encoderconfig"): + im.encoderconfig = () + tile.sort(key=_tilesort) + # FIXME: make MAXBLOCK a configuration parameter + # It would be great if we could have the encoder specify what it needs + # But, it would need at least the image size in most cases. RawEncode is + # a tricky case. + bufsize = max(MAXBLOCK, bufsize, im.size[0] * 4) # see RawEncode.c + try: + fh = fp.fileno() + fp.flush() + _encode_tile(im, fp, tile, bufsize, fh) + except (AttributeError, io.UnsupportedOperation) as exc: + _encode_tile(im, fp, tile, bufsize, None, exc) + if hasattr(fp, "flush"): + fp.flush() + + +def _encode_tile( + im: Image.Image, + fp: IO[bytes], + tile: list[_Tile], + bufsize: int, + fh: int | None, + exc: BaseException | None = None, +) -> None: + for encoder_name, extents, offset, args in tile: + if offset > 0: + fp.seek(offset) + encoder = Image._getencoder(im.mode, encoder_name, args, im.encoderconfig) + try: + encoder.setimage(im.im, extents) + if encoder.pushes_fd: + encoder.setfd(fp) + errcode = encoder.encode_to_pyfd()[1] + else: + if exc: + # compress to Python file-compatible object + while True: + errcode, data = encoder.encode(bufsize)[1:] + fp.write(data) + if errcode: + break + else: + # slight speedup: compress to real file object + assert fh is not None + errcode = encoder.encode_to_file(fh, bufsize) + if errcode < 0: + raise _get_oserror(errcode, encoder=True) from exc + finally: + encoder.cleanup() + + +def _safe_read(fp: IO[bytes], size: int) -> bytes: + """ + Reads large blocks in a safe way. Unlike fp.read(n), this function + doesn't trust the user. If the requested size is larger than + SAFEBLOCK, the file is read block by block. + + :param fp: File handle. Must implement a read method. + :param size: Number of bytes to read. + :returns: A string containing size bytes of data. + + Raises an OSError if the file is truncated and the read cannot be completed + + """ + if size <= 0: + return b"" + if size <= SAFEBLOCK: + data = fp.read(size) + if len(data) < size: + msg = "Truncated File Read" + raise OSError(msg) + return data + blocks: list[bytes] = [] + remaining_size = size + while remaining_size > 0: + block = fp.read(min(remaining_size, SAFEBLOCK)) + if not block: + break + blocks.append(block) + remaining_size -= len(block) + if sum(len(block) for block in blocks) < size: + msg = "Truncated File Read" + raise OSError(msg) + return b"".join(blocks) + + +class PyCodecState: + def __init__(self) -> None: + self.xsize = 0 + self.ysize = 0 + self.xoff = 0 + self.yoff = 0 + + def extents(self) -> tuple[int, int, int, int]: + return self.xoff, self.yoff, self.xoff + self.xsize, self.yoff + self.ysize + + +class PyCodec: + fd: IO[bytes] | None + + def __init__(self, mode: str, *args: Any) -> None: + self.im: Image.core.ImagingCore | None = None + self.state = PyCodecState() + self.fd = None + self.mode = mode + self.init(args) + + def init(self, args: tuple[Any, ...]) -> None: + """ + Override to perform codec specific initialization + + :param args: Tuple of arg items from the tile entry + :returns: None + """ + self.args = args + + def cleanup(self) -> None: + """ + Override to perform codec specific cleanup + + :returns: None + """ + pass + + def setfd(self, fd: IO[bytes]) -> None: + """ + Called from ImageFile to set the Python file-like object + + :param fd: A Python file-like object + :returns: None + """ + self.fd = fd + + def setimage( + self, + im: Image.core.ImagingCore, + extents: tuple[int, int, int, int] | None = None, + ) -> None: + """ + Called from ImageFile to set the core output image for the codec + + :param im: A core image object + :param extents: a 4 tuple of (x0, y0, x1, y1) defining the rectangle + for this tile + :returns: None + """ + + # following c code + self.im = im + + if extents: + (x0, y0, x1, y1) = extents + else: + (x0, y0, x1, y1) = (0, 0, 0, 0) + + if x0 == 0 and x1 == 0: + self.state.xsize, self.state.ysize = self.im.size + else: + self.state.xoff = x0 + self.state.yoff = y0 + self.state.xsize = x1 - x0 + self.state.ysize = y1 - y0 + + if self.state.xsize <= 0 or self.state.ysize <= 0: + msg = "Size cannot be negative" + raise ValueError(msg) + + if ( + self.state.xsize + self.state.xoff > self.im.size[0] + or self.state.ysize + self.state.yoff > self.im.size[1] + ): + msg = "Tile cannot extend outside image" + raise ValueError(msg) + + +class PyDecoder(PyCodec): + """ + Python implementation of a format decoder. Override this class and + add the decoding logic in the :meth:`decode` method. + + See :ref:`Writing Your Own File Codec in Python` + """ + + _pulls_fd = False + + @property + def pulls_fd(self) -> bool: + return self._pulls_fd + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + """ + Override to perform the decoding process. + + :param buffer: A bytes object with the data to be decoded. + :returns: A tuple of ``(bytes consumed, errcode)``. + If finished with decoding return -1 for the bytes consumed. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + msg = "unavailable in base decoder" + raise NotImplementedError(msg) + + def set_as_raw( + self, data: bytes, rawmode: str | None = None, extra: tuple[Any, ...] = () + ) -> None: + """ + Convenience method to set the internal image from a stream of raw data + + :param data: Bytes to be set + :param rawmode: The rawmode to be used for the decoder. + If not specified, it will default to the mode of the image + :param extra: Extra arguments for the decoder. + :returns: None + """ + + if not rawmode: + rawmode = self.mode + d = Image._getdecoder(self.mode, "raw", rawmode, extra) + assert self.im is not None + d.setimage(self.im, self.state.extents()) + s = d.decode(data) + + if s[0] >= 0: + msg = "not enough image data" + raise ValueError(msg) + if s[1] != 0: + msg = "cannot decode image data" + raise ValueError(msg) + + +class PyEncoder(PyCodec): + """ + Python implementation of a format encoder. Override this class and + add the decoding logic in the :meth:`encode` method. + + See :ref:`Writing Your Own File Codec in Python` + """ + + _pushes_fd = False + + @property + def pushes_fd(self) -> bool: + return self._pushes_fd + + def encode(self, bufsize: int) -> tuple[int, int, bytes]: + """ + Override to perform the encoding process. + + :param bufsize: Buffer size. + :returns: A tuple of ``(bytes encoded, errcode, bytes)``. + If finished with encoding return 1 for the error code. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + msg = "unavailable in base encoder" + raise NotImplementedError(msg) + + def encode_to_pyfd(self) -> tuple[int, int]: + """ + If ``pushes_fd`` is ``True``, then this method will be used, + and ``encode()`` will only be called once. + + :returns: A tuple of ``(bytes consumed, errcode)``. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + if not self.pushes_fd: + return 0, -8 # bad configuration + bytes_consumed, errcode, data = self.encode(0) + if data: + assert self.fd is not None + self.fd.write(data) + return bytes_consumed, errcode + + def encode_to_file(self, fh: int, bufsize: int) -> int: + """ + :param fh: File handle. + :param bufsize: Buffer size. + + :returns: If finished successfully, return 0. + Otherwise, return an error code. Err codes are from + :data:`.ImageFile.ERRORS`. + """ + errcode = 0 + while errcode == 0: + status, errcode, buf = self.encode(bufsize) + if status > 0: + os.write(fh, buf[status:]) + return errcode diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageFilter.py b/myenv/lib/python3.10/site-packages/PIL/ImageFilter.py new file mode 100644 index 0000000..b9ed54a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageFilter.py @@ -0,0 +1,604 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard filters +# +# History: +# 1995-11-27 fl Created +# 2002-06-08 fl Added rank and mode filters +# 2003-09-15 fl Fixed rank calculation in rank filter; added expand call +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2002 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import abc +import functools +from collections.abc import Sequence +from types import ModuleType +from typing import Any, Callable, cast + +TYPE_CHECKING = False +if TYPE_CHECKING: + from . import _imaging + from ._typing import NumpyArray + + +class Filter(abc.ABC): + @abc.abstractmethod + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + pass + + +class MultibandFilter(Filter): + pass + + +class BuiltinFilter(MultibandFilter): + filterargs: tuple[Any, ...] + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + if image.mode == "P": + msg = "cannot filter palette images" + raise ValueError(msg) + return image.filter(*self.filterargs) + + +class Kernel(BuiltinFilter): + """ + Create a convolution kernel. This only supports 3x3 and 5x5 integer and floating + point kernels. + + Kernels can only be applied to "L" and "RGB" images. + + :param size: Kernel size, given as (width, height). This must be (3,3) or (5,5). + :param kernel: A sequence containing kernel weights. The kernel will be flipped + vertically before being applied to the image. + :param scale: Scale factor. If given, the result for each pixel is divided by this + value. The default is the sum of the kernel weights. + :param offset: Offset. If given, this value is added to the result, after it has + been divided by the scale factor. + """ + + name = "Kernel" + + def __init__( + self, + size: tuple[int, int], + kernel: Sequence[float], + scale: float | None = None, + offset: float = 0, + ) -> None: + if scale is None: + # default scale is sum of kernel + scale = functools.reduce(lambda a, b: a + b, kernel) + if size[0] * size[1] != len(kernel): + msg = "not enough coefficients in kernel" + raise ValueError(msg) + self.filterargs = size, scale, offset, kernel + + +class RankFilter(Filter): + """ + Create a rank filter. The rank filter sorts all pixels in + a window of the given size, and returns the ``rank``'th value. + + :param size: The kernel size, in pixels. + :param rank: What pixel value to pick. Use 0 for a min filter, + ``size * size / 2`` for a median filter, ``size * size - 1`` + for a max filter, etc. + """ + + name = "Rank" + + def __init__(self, size: int, rank: int) -> None: + self.size = size + self.rank = rank + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + if image.mode == "P": + msg = "cannot filter palette images" + raise ValueError(msg) + image = image.expand(self.size // 2, self.size // 2) + return image.rankfilter(self.size, self.rank) + + +class MedianFilter(RankFilter): + """ + Create a median filter. Picks the median pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Median" + + def __init__(self, size: int = 3) -> None: + self.size = size + self.rank = size * size // 2 + + +class MinFilter(RankFilter): + """ + Create a min filter. Picks the lowest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Min" + + def __init__(self, size: int = 3) -> None: + self.size = size + self.rank = 0 + + +class MaxFilter(RankFilter): + """ + Create a max filter. Picks the largest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Max" + + def __init__(self, size: int = 3) -> None: + self.size = size + self.rank = size * size - 1 + + +class ModeFilter(Filter): + """ + Create a mode filter. Picks the most frequent pixel value in a box with the + given size. Pixel values that occur only once or twice are ignored; if no + pixel value occurs more than twice, the original pixel value is preserved. + + :param size: The kernel size, in pixels. + """ + + name = "Mode" + + def __init__(self, size: int = 3) -> None: + self.size = size + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + return image.modefilter(self.size) + + +class GaussianBlur(MultibandFilter): + """Blurs the image with a sequence of extended box filters, which + approximates a Gaussian kernel. For details on accuracy see + + + :param radius: Standard deviation of the Gaussian kernel. Either a sequence of two + numbers for x and y, or a single number for both. + """ + + name = "GaussianBlur" + + def __init__(self, radius: float | Sequence[float] = 2) -> None: + self.radius = radius + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + xy = self.radius + if isinstance(xy, (int, float)): + xy = (xy, xy) + if xy == (0, 0): + return image.copy() + return image.gaussian_blur(xy) + + +class BoxBlur(MultibandFilter): + """Blurs the image by setting each pixel to the average value of the pixels + in a square box extending radius pixels in each direction. + Supports float radius of arbitrary size. Uses an optimized implementation + which runs in linear time relative to the size of the image + for any radius value. + + :param radius: Size of the box in a direction. Either a sequence of two numbers for + x and y, or a single number for both. + + Radius 0 does not blur, returns an identical image. + Radius 1 takes 1 pixel in each direction, i.e. 9 pixels in total. + """ + + name = "BoxBlur" + + def __init__(self, radius: float | Sequence[float]) -> None: + xy = radius if isinstance(radius, (tuple, list)) else (radius, radius) + if xy[0] < 0 or xy[1] < 0: + msg = "radius must be >= 0" + raise ValueError(msg) + self.radius = radius + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + xy = self.radius + if isinstance(xy, (int, float)): + xy = (xy, xy) + if xy == (0, 0): + return image.copy() + return image.box_blur(xy) + + +class UnsharpMask(MultibandFilter): + """Unsharp mask filter. + + See Wikipedia's entry on `digital unsharp masking`_ for an explanation of + the parameters. + + :param radius: Blur Radius + :param percent: Unsharp strength, in percent + :param threshold: Threshold controls the minimum brightness change that + will be sharpened + + .. _digital unsharp masking: https://en.wikipedia.org/wiki/Unsharp_masking#Digital_unsharp_masking + + """ + + name = "UnsharpMask" + + def __init__( + self, radius: float = 2, percent: int = 150, threshold: int = 3 + ) -> None: + self.radius = radius + self.percent = percent + self.threshold = threshold + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + return image.unsharp_mask(self.radius, self.percent, self.threshold) + + +class BLUR(BuiltinFilter): + name = "Blur" + # fmt: off + filterargs = (5, 5), 16, 0, ( + 1, 1, 1, 1, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class CONTOUR(BuiltinFilter): + name = "Contour" + # fmt: off + filterargs = (3, 3), 1, 255, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class DETAIL(BuiltinFilter): + name = "Detail" + # fmt: off + filterargs = (3, 3), 6, 0, ( + 0, -1, 0, + -1, 10, -1, + 0, -1, 0, + ) + # fmt: on + + +class EDGE_ENHANCE(BuiltinFilter): + name = "Edge-enhance" + # fmt: off + filterargs = (3, 3), 2, 0, ( + -1, -1, -1, + -1, 10, -1, + -1, -1, -1, + ) + # fmt: on + + +class EDGE_ENHANCE_MORE(BuiltinFilter): + name = "Edge-enhance More" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 9, -1, + -1, -1, -1, + ) + # fmt: on + + +class EMBOSS(BuiltinFilter): + name = "Emboss" + # fmt: off + filterargs = (3, 3), 1, 128, ( + -1, 0, 0, + 0, 1, 0, + 0, 0, 0, + ) + # fmt: on + + +class FIND_EDGES(BuiltinFilter): + name = "Find Edges" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class SHARPEN(BuiltinFilter): + name = "Sharpen" + # fmt: off + filterargs = (3, 3), 16, 0, ( + -2, -2, -2, + -2, 32, -2, + -2, -2, -2, + ) + # fmt: on + + +class SMOOTH(BuiltinFilter): + name = "Smooth" + # fmt: off + filterargs = (3, 3), 13, 0, ( + 1, 1, 1, + 1, 5, 1, + 1, 1, 1, + ) + # fmt: on + + +class SMOOTH_MORE(BuiltinFilter): + name = "Smooth More" + # fmt: off + filterargs = (5, 5), 100, 0, ( + 1, 1, 1, 1, 1, + 1, 5, 5, 5, 1, + 1, 5, 44, 5, 1, + 1, 5, 5, 5, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class Color3DLUT(MultibandFilter): + """Three-dimensional color lookup table. + + Transforms 3-channel pixels using the values of the channels as coordinates + in the 3D lookup table and interpolating the nearest elements. + + This method allows you to apply almost any color transformation + in constant time by using pre-calculated decimated tables. + + .. versionadded:: 5.2.0 + + :param size: Size of the table. One int or tuple of (int, int, int). + Minimal size in any dimension is 2, maximum is 65. + :param table: Flat lookup table. A list of ``channels * size**3`` + float elements or a list of ``size**3`` channels-sized + tuples with floats. Channels are changed first, + then first dimension, then second, then third. + Value 0.0 corresponds lowest value of output, 1.0 highest. + :param channels: Number of channels in the table. Could be 3 or 4. + Default is 3. + :param target_mode: A mode for the result image. Should have not less + than ``channels`` channels. Default is ``None``, + which means that mode wouldn't be changed. + """ + + name = "Color 3D LUT" + + def __init__( + self, + size: int | tuple[int, int, int], + table: Sequence[float] | Sequence[Sequence[int]] | NumpyArray, + channels: int = 3, + target_mode: str | None = None, + **kwargs: bool, + ) -> None: + if channels not in (3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + self.size = size = self._check_size(size) + self.channels = channels + self.mode = target_mode + + # Hidden flag `_copy_table=False` could be used to avoid extra copying + # of the table if the table is specially made for the constructor. + copy_table = kwargs.get("_copy_table", True) + items = size[0] * size[1] * size[2] + wrong_size = False + + numpy: ModuleType | None = None + if hasattr(table, "shape"): + try: + import numpy + except ImportError: + pass + + if numpy and isinstance(table, numpy.ndarray): + numpy_table: NumpyArray = table + if copy_table: + numpy_table = numpy_table.copy() + + if numpy_table.shape in [ + (items * channels,), + (items, channels), + (size[2], size[1], size[0], channels), + ]: + table = numpy_table.reshape(items * channels) + else: + wrong_size = True + + else: + if copy_table: + table = list(table) + + # Convert to a flat list + if table and isinstance(table[0], (list, tuple)): + raw_table = cast(Sequence[Sequence[int]], table) + flat_table: list[int] = [] + for pixel in raw_table: + if len(pixel) != channels: + msg = ( + "The elements of the table should " + f"have a length of {channels}." + ) + raise ValueError(msg) + flat_table.extend(pixel) + table = flat_table + + if wrong_size or len(table) != items * channels: + msg = ( + "The table should have either channels * size**3 float items " + "or size**3 items of channels-sized tuples with floats. " + f"Table should be: {channels}x{size[0]}x{size[1]}x{size[2]}. " + f"Actual length: {len(table)}" + ) + raise ValueError(msg) + self.table = table + + @staticmethod + def _check_size(size: Any) -> tuple[int, int, int]: + try: + _, _, _ = size + except ValueError as e: + msg = "Size should be either an integer or a tuple of three integers." + raise ValueError(msg) from e + except TypeError: + size = (size, size, size) + size = tuple(int(x) for x in size) + for size_1d in size: + if not 2 <= size_1d <= 65: + msg = "Size should be in [2, 65] range." + raise ValueError(msg) + return size + + @classmethod + def generate( + cls, + size: int | tuple[int, int, int], + callback: Callable[[float, float, float], tuple[float, ...]], + channels: int = 3, + target_mode: str | None = None, + ) -> Color3DLUT: + """Generates new LUT using provided callback. + + :param size: Size of the table. Passed to the constructor. + :param callback: Function with three parameters which correspond + three color channels. Will be called ``size**3`` + times with values from 0.0 to 1.0 and should return + a tuple with ``channels`` elements. + :param channels: The number of channels which should return callback. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + size_1d, size_2d, size_3d = cls._check_size(size) + if channels not in (3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + + table: list[float] = [0] * (size_1d * size_2d * size_3d * channels) + idx_out = 0 + for b in range(size_3d): + for g in range(size_2d): + for r in range(size_1d): + table[idx_out : idx_out + channels] = callback( + r / (size_1d - 1), g / (size_2d - 1), b / (size_3d - 1) + ) + idx_out += channels + + return cls( + (size_1d, size_2d, size_3d), + table, + channels=channels, + target_mode=target_mode, + _copy_table=False, + ) + + def transform( + self, + callback: Callable[..., tuple[float, ...]], + with_normals: bool = False, + channels: int | None = None, + target_mode: str | None = None, + ) -> Color3DLUT: + """Transforms the table values using provided callback and returns + a new LUT with altered values. + + :param callback: A function which takes old lookup table values + and returns a new set of values. The number + of arguments which function should take is + ``self.channels`` or ``3 + self.channels`` + if ``with_normals`` flag is set. + Should return a tuple of ``self.channels`` or + ``channels`` elements if it is set. + :param with_normals: If true, ``callback`` will be called with + coordinates in the color cube as the first + three arguments. Otherwise, ``callback`` + will be called only with actual color values. + :param channels: The number of channels in the resulting lookup table. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + if channels not in (None, 3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + ch_in = self.channels + ch_out = channels or ch_in + size_1d, size_2d, size_3d = self.size + + table: list[float] = [0] * (size_1d * size_2d * size_3d * ch_out) + idx_in = 0 + idx_out = 0 + for b in range(size_3d): + for g in range(size_2d): + for r in range(size_1d): + values = self.table[idx_in : idx_in + ch_in] + if with_normals: + values = callback( + r / (size_1d - 1), + g / (size_2d - 1), + b / (size_3d - 1), + *values, + ) + else: + values = callback(*values) + table[idx_out : idx_out + ch_out] = values + idx_in += ch_in + idx_out += ch_out + + return type(self)( + self.size, + table, + channels=ch_out, + target_mode=target_mode or self.mode, + _copy_table=False, + ) + + def __repr__(self) -> str: + r = [ + f"{self.__class__.__name__} from {self.table.__class__.__name__}", + "size={:d}x{:d}x{:d}".format(*self.size), + f"channels={self.channels:d}", + ] + if self.mode: + r.append(f"target_mode={self.mode}") + return "<{}>".format(" ".join(r)) + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + from . import Image + + return image.color_lut_3d( + self.mode or image.mode, + Image.Resampling.BILINEAR, + self.channels, + self.size, + self.table, + ) diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageFont.py b/myenv/lib/python3.10/site-packages/PIL/ImageFont.py new file mode 100644 index 0000000..329c463 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageFont.py @@ -0,0 +1,1339 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIL raster font management +# +# History: +# 1996-08-07 fl created (experimental) +# 1997-08-25 fl minor adjustments to handle fonts from pilfont 0.3 +# 1999-02-06 fl rewrote most font management stuff in C +# 1999-03-17 fl take pth files into account in load_path (from Richard Jones) +# 2001-02-17 fl added freetype support +# 2001-05-09 fl added TransposedFont wrapper class +# 2002-03-04 fl make sure we have a "L" or "1" font +# 2002-12-04 fl skip non-directory entries in the system path +# 2003-04-29 fl add embedded default font +# 2003-09-27 fl added support for truetype charmap encodings +# +# Todo: +# Adapt to PILFONT2 format (16-bit fonts, compressed, single file) +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from __future__ import annotations + +import base64 +import os +import sys +import warnings +from enum import IntEnum +from io import BytesIO +from types import ModuleType +from typing import IO, Any, BinaryIO, TypedDict, cast + +from . import Image, features +from ._typing import StrOrBytesPath +from ._util import DeferredError, is_path + +TYPE_CHECKING = False +if TYPE_CHECKING: + from . import ImageFile + from ._imaging import ImagingFont + from ._imagingft import Font + + +class Axis(TypedDict): + minimum: int | None + default: int | None + maximum: int | None + name: bytes | None + + +class Layout(IntEnum): + BASIC = 0 + RAQM = 1 + + +MAX_STRING_LENGTH = 1_000_000 + + +core: ModuleType | DeferredError +try: + from . import _imagingft as core +except ImportError as ex: + core = DeferredError.new(ex) + + +def _string_length_check(text: str | bytes | bytearray) -> None: + if MAX_STRING_LENGTH is not None and len(text) > MAX_STRING_LENGTH: + msg = "too many characters in string" + raise ValueError(msg) + + +# FIXME: add support for pilfont2 format (see FontFile.py) + +# -------------------------------------------------------------------- +# Font metrics format: +# "PILfont" LF +# fontdescriptor LF +# (optional) key=value... LF +# "DATA" LF +# binary data: 256*10*2 bytes (dx, dy, dstbox, srcbox) +# +# To place a character, cut out srcbox and paste at dstbox, +# relative to the character position. Then move the character +# position according to dx, dy. +# -------------------------------------------------------------------- + + +class ImageFont: + """PIL font wrapper""" + + font: ImagingFont + + def _load_pilfont(self, filename: str) -> None: + with open(filename, "rb") as fp: + image: ImageFile.ImageFile | None = None + root = os.path.splitext(filename)[0] + + for ext in (".png", ".gif", ".pbm"): + if image: + image.close() + try: + fullname = root + ext + image = Image.open(fullname) + except Exception: + pass + else: + if image and image.mode in ("1", "L"): + break + else: + if image: + image.close() + + msg = f"cannot find glyph data file {root}.{{gif|pbm|png}}" + raise OSError(msg) + + self.file = fullname + + self._load_pilfont_data(fp, image) + image.close() + + def _load_pilfont_data(self, file: IO[bytes], image: Image.Image) -> None: + # read PILfont header + if file.readline() != b"PILfont\n": + msg = "Not a PILfont file" + raise SyntaxError(msg) + file.readline().split(b";") + self.info = [] # FIXME: should be a dictionary + while True: + s = file.readline() + if not s or s == b"DATA\n": + break + self.info.append(s) + + # read PILfont metrics + data = file.read(256 * 20) + + # check image + if image.mode not in ("1", "L"): + msg = "invalid font image mode" + raise TypeError(msg) + + image.load() + + self.font = Image.core.font(image.im, data) + + def getmask( + self, text: str | bytes, mode: str = "", *args: Any, **kwargs: Any + ) -> Image.core.ImagingCore: + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + _string_length_check(text) + Image._decompression_bomb_check(self.font.getsize(text)) + return self.font.getmask(text, mode) + + def getbbox( + self, text: str | bytes | bytearray, *args: Any, **kwargs: Any + ) -> tuple[int, int, int, int]: + """ + Returns bounding box (in pixels) of given text. + + .. versionadded:: 9.2.0 + + :param text: Text to render. + + :return: ``(left, top, right, bottom)`` bounding box + """ + _string_length_check(text) + width, height = self.font.getsize(text) + return 0, 0, width, height + + def getlength( + self, text: str | bytes | bytearray, *args: Any, **kwargs: Any + ) -> int: + """ + Returns length (in pixels) of given text. + This is the amount by which following text should be offset. + + .. versionadded:: 9.2.0 + """ + _string_length_check(text) + width, height = self.font.getsize(text) + return width + + +## +# Wrapper for FreeType fonts. Application code should use the +# truetype factory function to create font objects. + + +class FreeTypeFont: + """FreeType font wrapper (requires _imagingft service)""" + + font: Font + font_bytes: bytes + + def __init__( + self, + font: StrOrBytesPath | BinaryIO, + size: float = 10, + index: int = 0, + encoding: str = "", + layout_engine: Layout | None = None, + ) -> None: + # FIXME: use service provider instead + + if isinstance(core, DeferredError): + raise core.ex + + if size <= 0: + msg = f"font size must be greater than 0, not {size}" + raise ValueError(msg) + + self.path = font + self.size = size + self.index = index + self.encoding = encoding + + try: + from packaging.version import parse as parse_version + except ImportError: + pass + else: + if freetype_version := features.version_module("freetype2"): + if parse_version(freetype_version) < parse_version("2.9.1"): + warnings.warn( + "Support for FreeType 2.9.0 is deprecated and will be removed " + "in Pillow 12 (2025-10-15). Please upgrade to FreeType 2.9.1 " + "or newer, preferably FreeType 2.10.4 which fixes " + "CVE-2020-15999.", + DeprecationWarning, + ) + + if layout_engine not in (Layout.BASIC, Layout.RAQM): + layout_engine = Layout.BASIC + if core.HAVE_RAQM: + layout_engine = Layout.RAQM + elif layout_engine == Layout.RAQM and not core.HAVE_RAQM: + warnings.warn( + "Raqm layout was requested, but Raqm is not available. " + "Falling back to basic layout." + ) + layout_engine = Layout.BASIC + + self.layout_engine = layout_engine + + def load_from_bytes(f: IO[bytes]) -> None: + self.font_bytes = f.read() + self.font = core.getfont( + "", size, index, encoding, self.font_bytes, layout_engine + ) + + if is_path(font): + font = os.fspath(font) + if sys.platform == "win32": + font_bytes_path = font if isinstance(font, bytes) else font.encode() + try: + font_bytes_path.decode("ascii") + except UnicodeDecodeError: + # FreeType cannot load fonts with non-ASCII characters on Windows + # So load it into memory first + with open(font, "rb") as f: + load_from_bytes(f) + return + self.font = core.getfont( + font, size, index, encoding, layout_engine=layout_engine + ) + else: + load_from_bytes(cast(IO[bytes], font)) + + def __getstate__(self) -> list[Any]: + return [self.path, self.size, self.index, self.encoding, self.layout_engine] + + def __setstate__(self, state: list[Any]) -> None: + path, size, index, encoding, layout_engine = state + FreeTypeFont.__init__(self, path, size, index, encoding, layout_engine) + + def getname(self) -> tuple[str | None, str | None]: + """ + :return: A tuple of the font family (e.g. Helvetica) and the font style + (e.g. Bold) + """ + return self.font.family, self.font.style + + def getmetrics(self) -> tuple[int, int]: + """ + :return: A tuple of the font ascent (the distance from the baseline to + the highest outline point) and descent (the distance from the + baseline to the lowest outline point, a negative value) + """ + return self.font.ascent, self.font.descent + + def getlength( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + ) -> float: + """ + Returns length (in pixels with 1/64 precision) of given text when rendered + in font with provided direction, features, and language. + + This is the amount by which following text should be offset. + Text bounding box may extend past the length in some fonts, + e.g. when using italics or accents. + + The result is returned as a float; it is a whole number if using basic layout. + + Note that the sum of two lengths may not equal the length of a concatenated + string due to kerning. If you need to adjust for kerning, include the following + character and subtract its length. + + For example, instead of :: + + hello = font.getlength("Hello") + world = font.getlength("World") + hello_world = hello + world # not adjusted for kerning + assert hello_world == font.getlength("HelloWorld") # may fail + + use :: + + hello = font.getlength("HelloW") - font.getlength("W") # adjusted for kerning + world = font.getlength("World") + hello_world = hello + world # adjusted for kerning + assert hello_world == font.getlength("HelloWorld") # True + + or disable kerning with (requires libraqm) :: + + hello = draw.textlength("Hello", font, features=["-kern"]) + world = draw.textlength("World", font, features=["-kern"]) + hello_world = hello + world # kerning is disabled, no need to adjust + assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"]) + + .. versionadded:: 8.0.0 + + :param text: Text to measure. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + :return: Either width for horizontal text, or height for vertical text. + """ + _string_length_check(text) + return self.font.getlength(text, mode, direction, features, language) / 64 + + def getbbox( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ) -> tuple[float, float, float, float]: + """ + Returns bounding box (in pixels) of given text relative to given anchor + when rendered in font with provided direction, features, and language. + + Use :py:meth:`getlength()` to get the offset of following text with + 1/64 pixel precision. The bounding box includes extra margins for + some fonts, e.g. italics or accents. + + .. versionadded:: 8.0.0 + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + :param stroke_width: The width of the text stroke. + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left, + specifically ``la`` for horizontal text and ``lt`` for + vertical text. See :ref:`text-anchors` for details. + + :return: ``(left, top, right, bottom)`` bounding box + """ + _string_length_check(text) + size, offset = self.font.getsize( + text, mode, direction, features, language, anchor + ) + left, top = offset[0] - stroke_width, offset[1] - stroke_width + width, height = size[0] + 2 * stroke_width, size[1] + 2 * stroke_width + return left, top, left + width, top + height + + def getmask( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ink: int = 0, + start: tuple[float, float] | None = None, + ) -> Image.core.ImagingCore: + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. If the font has embedded color data, the bitmap + should have mode ``RGBA``. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left, + specifically ``la`` for horizontal text and ``lt`` for + vertical text. See :ref:`text-anchors` for details. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.0 + + :param start: Tuple of horizontal and vertical offset, as text may render + differently when starting at fractional coordinates. + + .. versionadded:: 9.4.0 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + return self.getmask2( + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + anchor=anchor, + ink=ink, + start=start, + )[0] + + def getmask2( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ink: int = 0, + start: tuple[float, float] | None = None, + *args: Any, + **kwargs: Any, + ) -> tuple[Image.core.ImagingCore, tuple[int, int]]: + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. If the font has embedded color data, the bitmap + should have mode ``RGBA``. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left, + specifically ``la`` for horizontal text and ``lt`` for + vertical text. See :ref:`text-anchors` for details. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.0 + + :param start: Tuple of horizontal and vertical offset, as text may render + differently when starting at fractional coordinates. + + .. versionadded:: 9.4.0 + + :return: A tuple of an internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module, and the text offset, the + gap between the starting coordinate and the first marking + """ + _string_length_check(text) + if start is None: + start = (0, 0) + + def fill(width: int, height: int) -> Image.core.ImagingCore: + size = (width, height) + Image._decompression_bomb_check(size) + return Image.core.fill("RGBA" if mode == "RGBA" else "L", size) + + return self.font.render( + text, + fill, + mode, + direction, + features, + language, + stroke_width, + kwargs.get("stroke_filled", False), + anchor, + ink, + start, + ) + + def font_variant( + self, + font: StrOrBytesPath | BinaryIO | None = None, + size: float | None = None, + index: int | None = None, + encoding: str | None = None, + layout_engine: Layout | None = None, + ) -> FreeTypeFont: + """ + Create a copy of this FreeTypeFont object, + using any specified arguments to override the settings. + + Parameters are identical to the parameters used to initialize this + object. + + :return: A FreeTypeFont object. + """ + if font is None: + try: + font = BytesIO(self.font_bytes) + except AttributeError: + font = self.path + return FreeTypeFont( + font=font, + size=self.size if size is None else size, + index=self.index if index is None else index, + encoding=self.encoding if encoding is None else encoding, + layout_engine=layout_engine or self.layout_engine, + ) + + def get_variation_names(self) -> list[bytes]: + """ + :returns: A list of the named styles in a variation font. + :exception OSError: If the font is not a variation font. + """ + try: + names = self.font.getvarnames() + except AttributeError as e: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + return [name.replace(b"\x00", b"") for name in names] + + def set_variation_by_name(self, name: str | bytes) -> None: + """ + :param name: The name of the style. + :exception OSError: If the font is not a variation font. + """ + names = self.get_variation_names() + if not isinstance(name, bytes): + name = name.encode() + index = names.index(name) + 1 + + if index == getattr(self, "_last_variation_index", None): + # When the same name is set twice in a row, + # there is an 'unknown freetype error' + # https://savannah.nongnu.org/bugs/?56186 + return + self._last_variation_index = index + + self.font.setvarname(index) + + def get_variation_axes(self) -> list[Axis]: + """ + :returns: A list of the axes in a variation font. + :exception OSError: If the font is not a variation font. + """ + try: + axes = self.font.getvaraxes() + except AttributeError as e: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + for axis in axes: + if axis["name"]: + axis["name"] = axis["name"].replace(b"\x00", b"") + return axes + + def set_variation_by_axes(self, axes: list[float]) -> None: + """ + :param axes: A list of values for each axis. + :exception OSError: If the font is not a variation font. + """ + try: + self.font.setvaraxes(axes) + except AttributeError as e: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + + +class TransposedFont: + """Wrapper for writing rotated or mirrored text""" + + def __init__( + self, font: ImageFont | FreeTypeFont, orientation: Image.Transpose | None = None + ): + """ + Wrapper that creates a transposed font from any existing font + object. + + :param font: A font object. + :param orientation: An optional orientation. If given, this should + be one of Image.Transpose.FLIP_LEFT_RIGHT, Image.Transpose.FLIP_TOP_BOTTOM, + Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_180, or + Image.Transpose.ROTATE_270. + """ + self.font = font + self.orientation = orientation # any 'transpose' argument, or None + + def getmask( + self, text: str | bytes, mode: str = "", *args: Any, **kwargs: Any + ) -> Image.core.ImagingCore: + im = self.font.getmask(text, mode, *args, **kwargs) + if self.orientation is not None: + return im.transpose(self.orientation) + return im + + def getbbox( + self, text: str | bytes, *args: Any, **kwargs: Any + ) -> tuple[int, int, float, float]: + # TransposedFont doesn't support getmask2, move top-left point to (0, 0) + # this has no effect on ImageFont and simulates anchor="lt" for FreeTypeFont + left, top, right, bottom = self.font.getbbox(text, *args, **kwargs) + width = right - left + height = bottom - top + if self.orientation in (Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_270): + return 0, 0, height, width + return 0, 0, width, height + + def getlength(self, text: str | bytes, *args: Any, **kwargs: Any) -> float: + if self.orientation in (Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_270): + msg = "text length is undefined for text rotated by 90 or 270 degrees" + raise ValueError(msg) + return self.font.getlength(text, *args, **kwargs) + + +def load(filename: str) -> ImageFont: + """ + Load a font file. This function loads a font object from the given + bitmap font file, and returns the corresponding font object. For loading TrueType + or OpenType fonts instead, see :py:func:`~PIL.ImageFont.truetype`. + + :param filename: Name of font file. + :return: A font object. + :exception OSError: If the file could not be read. + """ + f = ImageFont() + f._load_pilfont(filename) + return f + + +def truetype( + font: StrOrBytesPath | BinaryIO, + size: float = 10, + index: int = 0, + encoding: str = "", + layout_engine: Layout | None = None, +) -> FreeTypeFont: + """ + Load a TrueType or OpenType font from a file or file-like object, + and create a font object. This function loads a font object from the given + file or file-like object, and creates a font object for a font of the given + size. For loading bitmap fonts instead, see :py:func:`~PIL.ImageFont.load` + and :py:func:`~PIL.ImageFont.load_path`. + + Pillow uses FreeType to open font files. On Windows, be aware that FreeType + will keep the file open as long as the FreeTypeFont object exists. Windows + limits the number of files that can be open in C at once to 512, so if many + fonts are opened simultaneously and that limit is approached, an + ``OSError`` may be thrown, reporting that FreeType "cannot open resource". + A workaround would be to copy the file(s) into memory, and open that instead. + + This function requires the _imagingft service. + + :param font: A filename or file-like object containing a TrueType font. + If the file is not found in this filename, the loader may also + search in other directories, such as: + + * The :file:`fonts/` directory on Windows, + * :file:`/Library/Fonts/`, :file:`/System/Library/Fonts/` + and :file:`~/Library/Fonts/` on macOS. + * :file:`~/.local/share/fonts`, :file:`/usr/local/share/fonts`, + and :file:`/usr/share/fonts` on Linux; or those specified by + the ``XDG_DATA_HOME`` and ``XDG_DATA_DIRS`` environment variables + for user-installed and system-wide fonts, respectively. + + :param size: The requested size, in pixels. + :param index: Which font face to load (default is first available face). + :param encoding: Which font encoding to use (default is Unicode). Possible + encodings include (see the FreeType documentation for more + information): + + * "unic" (Unicode) + * "symb" (Microsoft Symbol) + * "ADOB" (Adobe Standard) + * "ADBE" (Adobe Expert) + * "ADBC" (Adobe Custom) + * "armn" (Apple Roman) + * "sjis" (Shift JIS) + * "gb " (PRC) + * "big5" + * "wans" (Extended Wansung) + * "joha" (Johab) + * "lat1" (Latin-1) + + This specifies the character set to use. It does not alter the + encoding of any text provided in subsequent operations. + :param layout_engine: Which layout engine to use, if available: + :attr:`.ImageFont.Layout.BASIC` or :attr:`.ImageFont.Layout.RAQM`. + If it is available, Raqm layout will be used by default. + Otherwise, basic layout will be used. + + Raqm layout is recommended for all non-English text. If Raqm layout + is not required, basic layout will have better performance. + + You can check support for Raqm layout using + :py:func:`PIL.features.check_feature` with ``feature="raqm"``. + + .. versionadded:: 4.2.0 + :return: A font object. + :exception OSError: If the file could not be read. + :exception ValueError: If the font size is not greater than zero. + """ + + def freetype(font: StrOrBytesPath | BinaryIO) -> FreeTypeFont: + return FreeTypeFont(font, size, index, encoding, layout_engine) + + try: + return freetype(font) + except OSError: + if not is_path(font): + raise + ttf_filename = os.path.basename(font) + + dirs = [] + if sys.platform == "win32": + # check the windows font repository + # NOTE: must use uppercase WINDIR, to work around bugs in + # 1.5.2's os.environ.get() + windir = os.environ.get("WINDIR") + if windir: + dirs.append(os.path.join(windir, "fonts")) + elif sys.platform in ("linux", "linux2"): + data_home = os.environ.get("XDG_DATA_HOME") + if not data_home: + # The freedesktop spec defines the following default directory for + # when XDG_DATA_HOME is unset or empty. This user-level directory + # takes precedence over system-level directories. + data_home = os.path.expanduser("~/.local/share") + xdg_dirs = [data_home] + + data_dirs = os.environ.get("XDG_DATA_DIRS") + if not data_dirs: + # Similarly, defaults are defined for the system-level directories + data_dirs = "/usr/local/share:/usr/share" + xdg_dirs += data_dirs.split(":") + + dirs += [os.path.join(xdg_dir, "fonts") for xdg_dir in xdg_dirs] + elif sys.platform == "darwin": + dirs += [ + "/Library/Fonts", + "/System/Library/Fonts", + os.path.expanduser("~/Library/Fonts"), + ] + + ext = os.path.splitext(ttf_filename)[1] + first_font_with_a_different_extension = None + for directory in dirs: + for walkroot, walkdir, walkfilenames in os.walk(directory): + for walkfilename in walkfilenames: + if ext and walkfilename == ttf_filename: + return freetype(os.path.join(walkroot, walkfilename)) + elif not ext and os.path.splitext(walkfilename)[0] == ttf_filename: + fontpath = os.path.join(walkroot, walkfilename) + if os.path.splitext(fontpath)[1] == ".ttf": + return freetype(fontpath) + if not ext and first_font_with_a_different_extension is None: + first_font_with_a_different_extension = fontpath + if first_font_with_a_different_extension: + return freetype(first_font_with_a_different_extension) + raise + + +def load_path(filename: str | bytes) -> ImageFont: + """ + Load font file. Same as :py:func:`~PIL.ImageFont.load`, but searches for a + bitmap font along the Python path. + + :param filename: Name of font file. + :return: A font object. + :exception OSError: If the file could not be read. + """ + if not isinstance(filename, str): + filename = filename.decode("utf-8") + for directory in sys.path: + try: + return load(os.path.join(directory, filename)) + except OSError: + pass + msg = f'cannot find font file "{filename}" in sys.path' + if os.path.exists(filename): + msg += f', did you mean ImageFont.load("{filename}") instead?' + + raise OSError(msg) + + +def load_default_imagefont() -> ImageFont: + f = ImageFont() + f._load_pilfont_data( + # courB08 + BytesIO( + base64.b64decode( + b""" +UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA +BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL +AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA +AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB +ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A +BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB +//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA +AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH +AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA +ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv +AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/ +/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5 +AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA +AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG +AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA +BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA +AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA +2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF +AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA//// ++gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA +////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA +BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv +AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA +AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA +AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA +BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP// +//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA +AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF +AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB +mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn +AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA +AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7 +AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA +Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB +//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA +AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ +AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC +DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ +AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/ ++wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5 +AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/ +///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG +AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA +BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA +Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC +eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG +AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA//// ++gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA +////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA +BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT +AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A +AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA +Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA +Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP// +//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA +AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ +AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA +LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5 +AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA +AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5 +AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA +AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG +AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA +EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK +AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA +pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG +AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// ++QAGAAIAzgAKANUAEw== +""" + ) + ), + Image.open( + BytesIO( + base64.b64decode( + b""" +iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u +Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 +M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g +LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F +IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA +Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791 +NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx +in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9 +SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY +AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt +y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG +ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY +lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H +/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3 +AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47 +c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/ +/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw +pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv +oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR +evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA +AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v// +Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR +w7IkEbzhVQAAAABJRU5ErkJggg== +""" + ) + ) + ), + ) + return f + + +def load_default(size: float | None = None) -> FreeTypeFont | ImageFont: + """If FreeType support is available, load a version of Aileron Regular, + https://dotcolon.net/fonts/aileron, with a more limited character set. + + Otherwise, load a "better than nothing" font. + + .. versionadded:: 1.1.4 + + :param size: The font size of Aileron Regular. + + .. versionadded:: 10.1.0 + + :return: A font object. + """ + if isinstance(core, ModuleType) or size is not None: + return truetype( + BytesIO( + base64.b64decode( + b""" +AAEAAAAPAIAAAwBwRkZUTYwDlUAAADFoAAAAHEdERUYAqADnAAAo8AAAACRHUE9ThhmITwAAKfgAA +AduR1NVQnHxefoAACkUAAAA4k9TLzJovoHLAAABeAAAAGBjbWFw5lFQMQAAA6gAAAGqZ2FzcP//AA +MAACjoAAAACGdseWYmRXoPAAAGQAAAHfhoZWFkE18ayQAAAPwAAAA2aGhlYQboArEAAAE0AAAAJGh +tdHjjERZ8AAAB2AAAAdBsb2NhuOexrgAABVQAAADqbWF4cAC7AEYAAAFYAAAAIG5hbWUr+h5lAAAk +OAAAA6Jwb3N0D3oPTQAAJ9wAAAEKAAEAAAABGhxJDqIhXw889QALA+gAAAAA0Bqf2QAAAADhCh2h/ +2r/LgOxAyAAAAAIAAIAAAAAAAAAAQAAA8r/GgAAA7j/av9qA7EAAQAAAAAAAAAAAAAAAAAAAHQAAQ +AAAHQAQwAFAAAAAAACAAAAAQABAAAAQAAAAAAAAAADAfoBkAAFAAgCigJYAAAASwKKAlgAAAFeADI +BPgAAAAAFAAAAAAAAAAAAAAcAAAAAAAAAAAAAAABVS1dOAEAAIPsCAwL/GgDIA8oA5iAAAJMAAAAA +AhICsgAAACAAAwH0AAAAAAAAAU0AAADYAAAA8gA5AVMAVgJEAEYCRAA1AuQAKQKOAEAAsAArATsAZ +AE7AB4CMABVAkQAUADc/+EBEgAgANwAJQEv//sCRAApAkQAggJEADwCRAAtAkQAIQJEADkCRAArAk +QAMgJEACwCRAAxANwAJQDc/+ECRABnAkQAUAJEAEQB8wAjA1QANgJ/AB0CcwBkArsALwLFAGQCSwB +kAjcAZALGAC8C2gBkAQgAZAIgADcCYQBkAj8AZANiAGQCzgBkAuEALwJWAGQC3QAvAmsAZAJJADQC +ZAAiAqoAXgJuACADuAAaAnEAGQJFABMCTwAuATMAYgEv//sBJwAiAkQAUAH0ADIBLAApAhMAJAJjA +EoCEQAeAmcAHgIlAB4BIgAVAmcAHgJRAEoA7gA+AOn/8wIKAEoA9wBGA1cASgJRAEoCSgAeAmMASg +JnAB4BSgBKAcsAGAE5ABQCUABCAgIAAQMRAAEB4v/6AgEAAQHOABQBLwBAAPoAYAEvACECRABNA0Y +AJAItAHgBKgAcAkQAUAEsAHQAygAgAi0AOQD3ADYA9wAWAaEANgGhABYCbAAlAYMAeAGDADkA6/9q +AhsAFAIKABUB/QAVAAAAAwAAAAMAAAAcAAEAAAAAAKQAAwABAAAAHAAEAIgAAAAeABAAAwAOAH4Aq +QCrALEAtAC3ALsgGSAdICYgOiBEISL7Av//AAAAIACpAKsAsAC0ALcAuyAYIBwgJiA5IEQhIvsB// +//4/+5/7j/tP+y/7D/reBR4E/gR+A14CzfTwVxAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAMEBQYHCAkKCwwNDg8QERIT +FBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMT +U5PUFFSU1RVVldYWVpbXF1eX2BhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAA +AAAAAAYnFmAAAAAABlAAAAAAAAAAAAAAAAAAAAAAAAAAAAY2htAAAAAAAAAABrbGlqAAAAAHAAbm9 +ycwBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmACYAJgAmAD4AUgCCAMoBCgFO +AVwBcgGIAaYBvAHKAdYB6AH2AgwCIAJKAogCpgLWAw4DIgNkA5wDugPUA+gD/AQQBEYEogS8BPoFJ +gVSBWoFgAWwBcoF1gX6BhQGJAZMBmgGiga0BuIHGgdUB2YHkAeiB8AH3AfyCAoIHAgqCDoITghcCG +oIogjSCPoJKglYCXwJwgnqCgIKKApACl4Klgq8CtwLDAs8C1YLjAuyC9oL7gwMDCYMSAxgDKAMrAz +qDQoNTA1mDYQNoA2uDcAN2g3oDfYODA4iDkoOXA5sDnoOnA7EDvwAAAAFAAAAAAH0ArwAAwAGAAkA +DAAPAAAxESERAxMhExcRASELARETAfT6qv6syKr+jgFUqsiqArz9RAGLAP/+1P8B/v3VAP8BLP4CA +P8AAgA5//IAuQKyAAMACwAANyMDMwIyFhQGIiY0oE4MZk84JCQ4JLQB/v3AJDgkJDgAAgBWAeUBPA +LfAAMABwAAEyMnMxcjJzOmRgpagkYKWgHl+vr6AAAAAAIARgAAAf4CsgAbAB8AAAEHMxUjByM3Iwc +jNyM1MzcjNTM3MwczNzMHMxUrAQczAZgdZXEvOi9bLzovWmYdZXEvOi9bLzovWp9bHlsBn4w429vb +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 +EQQ/BCQvEjQCFQZWFSEWQv40AcxCDiUblhP9uSEAAAAAAAAWAQ4AAQAAAAAAAAATACgAAQAAAAAAA +QAHAEwAAQAAAAAAAgAHAGQAAQAAAAAAAwAaAKIAAQAAAAAABAAHAM0AAQAAAAAABQA8AU8AAQAAAA +AABgAPAawAAQAAAAAACAALAdQAAQAAAAAACQALAfgAAQAAAAAACwAXAjQAAQAAAAAADAAXAnwAAwA +BBAkAAAAmAAAAAwABBAkAAQAOADwAAwABBAkAAgAOAFQAAwABBAkAAwA0AGwAAwABBAkABAAOAL0A +AwABBAkABQB4ANUAAwABBAkABgAeAYwAAwABBAkACAAWAbwAAwABBAkACQAWAeAAAwABBAkACwAuA +gQAAwABBAkADAAuAkwATgBvACAAUgBpAGcAaAB0AHMAIABSAGUAcwBlAHIAdgBlAGQALgAATm8gUm +lnaHRzIFJlc2VydmVkLgAAQQBpAGwAZQByAG8AbgAAQWlsZXJvbgAAUgBlAGcAdQBsAGEAcgAAUmV +ndWxhcgAAMQAuADEAMAAyADsAVQBLAFcATgA7AEEAaQBsAGUAcgBvAG4ALQBSAGUAZwB1AGwAYQBy +AAAxLjEwMjtVS1dOO0FpbGVyb24tUmVndWxhcgAAQQBpAGwAZQByAG8AbgAAQWlsZXJvbgAAVgBlA +HIAcwBpAG8AbgAgADEALgAxADAAMgA7AFAAUwAgADAAMAAxAC4AMQAwADIAOwBoAG8AdABjAG8Abg +B2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADk +AAFZlcnNpb24gMS4xMDI7UFMgMDAxLjEwMjtob3Rjb252IDEuMC43MDttYWtlb3RmLmxpYjIuNS41 +ODMyOQAAQQBpAGwAZQByAG8AbgAtAFIAZQBnAHUAbABhAHIAAEFpbGVyb24tUmVndWxhcgAAUwBvA +HIAYQAgAFMAYQBnAGEAbgBvAABTb3JhIFNhZ2FubwAAUwBvAHIAYQAgAFMAYQBnAGEAbgBvAABTb3 +JhIFNhZ2FubwAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGQAbwB0AGMAbwBsAG8AbgAuAG4AZQB0AAB +odHRwOi8vd3d3LmRvdGNvbG9uLm5ldAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGQAbwB0AGMAbwBs +AG8AbgAuAG4AZQB0AABodHRwOi8vd3d3LmRvdGNvbG9uLm5ldAAAAAACAAAAAAAA/4MAMgAAAAAAA +AAAAAAAAAAAAAAAAAAAAHQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATAB +QAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAA +xADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0A +TgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAIsAqQCDAJMAjQDDAKoAtgC3A +LQAtQCrAL4AvwC8AIwAwADBAAAAAAAB//8AAgABAAAADAAAABwAAAACAAIAAwBxAAEAcgBzAAIABA +AAAAIAAAABAAAACgBMAGYAAkRGTFQADmxhdG4AGgAEAAAAAP//AAEAAAAWAANDQVQgAB5NT0wgABZ +ST00gABYAAP//AAEAAAAA//8AAgAAAAEAAmxpZ2EADmxvY2wAFAAAAAEAAQAAAAEAAAACAAYAEAAG +AAAAAgASADQABAAAAAEATAADAAAAAgAQABYAAQAcAAAAAQABAE8AAQABAGcAAQABAE8AAwAAAAIAE +AAWAAEAHAAAAAEAAQAvAAEAAQBnAAEAAQAvAAEAGgABAAgAAgAGAAwAcwACAE8AcgACAEwAAQABAE +kAAAABAAAACgBGAGAAAkRGTFQADmxhdG4AHAAEAAAAAP//AAIAAAABABYAA0NBVCAAFk1PTCAAFlJ +PTSAAFgAA//8AAgAAAAEAAmNwc3AADmtlcm4AFAAAAAEAAAAAAAEAAQACAAYADgABAAAAAQASAAIA +AAACAB4ANgABAAoABQAFAAoAAgABACQAPQAAAAEAEgAEAAAAAQAMAAEAOP/nAAEAAQAkAAIGigAEA +AAFJAXKABoAGQAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAD/sv+4/+z/7v/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9T/6AAAAAD/8QAA +ABD/vQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAAAAAAAAAAAAAAAAAA//MAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAP/5AAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gAAD/4AAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//L/9AAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAA/+gAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/mAAAAAAAAAAAAAAAAAAD +/4gAA//AAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAP/OAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zv/qAAAAAP/0AAAACAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/ZAAD/egAA/1kAAAAA/5D/rgAAAAAAAAAAAA +AAAAAAAAAAAAAAAAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAD/8AAA/7b/8P+wAAD/8P/E/98AAAAA/8P/+P/0//oAAAAAAAAAAAAA//gA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/w//C/9MAAP/SAAD/9wAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAD/yAAA/+kAAAAA//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9wAAAAD//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAP/cAAAAAAAAAAAAAAAA/7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAkAFAAEAAAAAQACwAAABcA +BgAAAAAAAAAIAA4AAAAAAAsAEgAAAAAAAAATABkAAwANAAAAAQAJAAAAAAAAAAAAAAAAAAAAGAAAA +AAABwAAAAAAAAAAAAAAFQAFAAAAAAAYABgAAAAUAAAACgAAAAwAAgAPABEAFgAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAEAEQBdAAYAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAAAAAABwAAAAAACAAAAAAAAAAAAAcAAAAHAAAAEwAJ +ABUADgAPAAAACwAQAAAAAAAAAAAAAAAAAAUAGAACAAIAAgAAAAIAGAAXAAAAGAAAABYAFgACABYAA +gAWAAAAEQADAAoAFAAMAA0ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEgAGAAEAHgAkAC +YAJwApACoALQAuAC8AMgAzADcAOAA5ADoAPAA9AEUASABOAE8AUgBTAFUAVwBZAFoAWwBcAF0AcwA +AAAAAAQAAAADa3tfFAAAAANAan9kAAAAA4QodoQ== +""" + ) + ), + 10 if size is None else size, + layout_engine=Layout.BASIC, + ) + return load_default_imagefont() diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageGrab.py b/myenv/lib/python3.10/site-packages/PIL/ImageGrab.py new file mode 100644 index 0000000..1eb4507 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageGrab.py @@ -0,0 +1,196 @@ +# +# The Python Imaging Library +# $Id$ +# +# screen grabber +# +# History: +# 2001-04-26 fl created +# 2001-09-17 fl use builtin driver, if present +# 2002-11-19 fl added grabclipboard support +# +# Copyright (c) 2001-2002 by Secret Labs AB +# Copyright (c) 2001-2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import shutil +import subprocess +import sys +import tempfile + +from . import Image + +TYPE_CHECKING = False +if TYPE_CHECKING: + from . import ImageWin + + +def grab( + bbox: tuple[int, int, int, int] | None = None, + include_layered_windows: bool = False, + all_screens: bool = False, + xdisplay: str | None = None, + window: int | ImageWin.HWND | None = None, +) -> Image.Image: + im: Image.Image + if xdisplay is None: + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + args = ["screencapture"] + if bbox: + left, top, right, bottom = bbox + args += ["-R", f"{left},{top},{right-left},{bottom-top}"] + subprocess.call(args + ["-x", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_resized = im.resize((right - left, bottom - top)) + im.close() + return im_resized + return im + elif sys.platform == "win32": + if window is not None: + all_screens = -1 + offset, size, data = Image.core.grabscreen_win32( + include_layered_windows, + all_screens, + int(window) if window is not None else 0, + ) + im = Image.frombytes( + "RGB", + size, + data, + # RGB, 32-bit line padding, origin lower left corner + "raw", + "BGR", + (size[0] * 3 + 3) & -4, + -1, + ) + if bbox: + x0, y0 = offset + left, top, right, bottom = bbox + im = im.crop((left - x0, top - y0, right - x0, bottom - y0)) + return im + # Cast to Optional[str] needed for Windows and macOS. + display_name: str | None = xdisplay + try: + if not Image.core.HAVE_XCB: + msg = "Pillow was built without XCB support" + raise OSError(msg) + size, data = Image.core.grabscreen_x11(display_name) + except OSError: + if display_name is None and sys.platform not in ("darwin", "win32"): + if shutil.which("gnome-screenshot"): + args = ["gnome-screenshot", "-f"] + elif shutil.which("grim"): + args = ["grim"] + elif shutil.which("spectacle"): + args = ["spectacle", "-n", "-b", "-f", "-o"] + else: + raise + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + subprocess.call(args + [filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_cropped = im.crop(bbox) + im.close() + return im_cropped + return im + else: + raise + else: + im = Image.frombytes("RGB", size, data, "raw", "BGRX", size[0] * 4, 1) + if bbox: + im = im.crop(bbox) + return im + + +def grabclipboard() -> Image.Image | list[str] | None: + if sys.platform == "darwin": + p = subprocess.run( + ["osascript", "-e", "get the clipboard as «class PNGf»"], + capture_output=True, + ) + if p.returncode != 0: + return None + + 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 + import struct + + o = struct.unpack_from("I", data)[0] + if data[16] == 0: + files = data[o:].decode("mbcs").split("\0") + else: + files = data[o:].decode("utf-16le").split("\0") + return files[: files.index("")] + if isinstance(data, bytes): + data = io.BytesIO(data) + if fmt == "png": + from . import PngImagePlugin + + return PngImagePlugin.PngImageFile(data) + elif fmt == "DIB": + from . import BmpImagePlugin + + return BmpImagePlugin.DibImageFile(data) + return None + else: + if os.getenv("WAYLAND_DISPLAY"): + session_type = "wayland" + elif os.getenv("DISPLAY"): + session_type = "x11" + else: # Session type check failed + session_type = None + + if shutil.which("wl-paste") and session_type in ("wayland", None): + args = ["wl-paste", "-t", "image"] + elif shutil.which("xclip") and session_type in ("x11", None): + args = ["xclip", "-selection", "clipboard", "-t", "image/png", "-o"] + else: + msg = "wl-paste or xclip is required for ImageGrab.grabclipboard() on Linux" + raise NotImplementedError(msg) + + p = subprocess.run(args, capture_output=True) + if p.returncode != 0: + err = p.stderr + for silent_error in [ + # wl-paste, when the clipboard is empty + b"Nothing is copied", + # Ubuntu/Debian wl-paste, when the clipboard is empty + b"No selection", + # Ubuntu/Debian wl-paste, when an image isn't available + b"No suitable type of content copied", + # wl-paste or Ubuntu/Debian xclip, when an image isn't available + b" not available", + # xclip, when an image isn't available + b"cannot convert ", + # xclip, when the clipboard isn't initialized + b"xclip: Error: There is no owner for the ", + ]: + if silent_error in err: + return None + msg = f"{args[0]} error" + if err: + msg += f": {err.strip().decode()}" + raise ChildProcessError(msg) + + data = io.BytesIO(p.stdout) + im = Image.open(data) + im.load() + return im diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageMath.py b/myenv/lib/python3.10/site-packages/PIL/ImageMath.py new file mode 100644 index 0000000..c33809c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageMath.py @@ -0,0 +1,368 @@ +# +# The Python Imaging Library +# $Id$ +# +# a simple math add-on for the Python Imaging Library +# +# History: +# 1999-02-15 fl Original PIL Plus release +# 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 +# 2005-09-12 fl Fixed int() and float() for Python 2.4.1 +# +# Copyright (c) 1999-2005 by Secret Labs AB +# Copyright (c) 2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import builtins +from types import CodeType +from typing import Any, Callable + +from . import Image, _imagingmath +from ._deprecate import deprecate + + +class _Operand: + """Wraps an image operand, providing standard operators""" + + def __init__(self, im: Image.Image): + self.im = im + + def __fixup(self, im1: _Operand | float) -> Image.Image: + # convert image to suitable mode + if isinstance(im1, _Operand): + # argument was an image. + if im1.im.mode in ("1", "L"): + return im1.im.convert("I") + elif im1.im.mode in ("I", "F"): + return im1.im + else: + msg = f"unsupported mode: {im1.im.mode}" + raise ValueError(msg) + else: + # argument was a constant + if isinstance(im1, (int, float)) and self.im.mode in ("1", "L", "I"): + return Image.new("I", self.im.size, im1) + else: + return Image.new("F", self.im.size, im1) + + def apply( + self, + op: str, + im1: _Operand | float, + im2: _Operand | float | None = None, + mode: str | None = None, + ) -> _Operand: + im_1 = self.__fixup(im1) + if im2 is None: + # unary operation + out = Image.new(mode or im_1.mode, im_1.size, None) + try: + op = getattr(_imagingmath, f"{op}_{im_1.mode}") + except AttributeError as e: + msg = f"bad operand type for '{op}'" + raise TypeError(msg) from e + _imagingmath.unop(op, out.getim(), im_1.getim()) + else: + # binary operation + im_2 = self.__fixup(im2) + if im_1.mode != im_2.mode: + # convert both arguments to floating point + if im_1.mode != "F": + im_1 = im_1.convert("F") + if im_2.mode != "F": + im_2 = im_2.convert("F") + if im_1.size != im_2.size: + # crop both arguments to a common size + size = ( + min(im_1.size[0], im_2.size[0]), + min(im_1.size[1], im_2.size[1]), + ) + if im_1.size != size: + im_1 = im_1.crop((0, 0) + size) + if im_2.size != size: + im_2 = im_2.crop((0, 0) + size) + out = Image.new(mode or im_1.mode, im_1.size, None) + try: + op = getattr(_imagingmath, f"{op}_{im_1.mode}") + except AttributeError as e: + msg = f"bad operand type for '{op}'" + raise TypeError(msg) from e + _imagingmath.binop(op, out.getim(), im_1.getim(), im_2.getim()) + return _Operand(out) + + # unary operators + def __bool__(self) -> bool: + # an image is "true" if it contains at least one non-zero pixel + return self.im.getbbox() is not None + + def __abs__(self) -> _Operand: + return self.apply("abs", self) + + def __pos__(self) -> _Operand: + return self + + def __neg__(self) -> _Operand: + return self.apply("neg", self) + + # binary operators + def __add__(self, other: _Operand | float) -> _Operand: + return self.apply("add", self, other) + + def __radd__(self, other: _Operand | float) -> _Operand: + return self.apply("add", other, self) + + def __sub__(self, other: _Operand | float) -> _Operand: + return self.apply("sub", self, other) + + def __rsub__(self, other: _Operand | float) -> _Operand: + return self.apply("sub", other, self) + + def __mul__(self, other: _Operand | float) -> _Operand: + return self.apply("mul", self, other) + + def __rmul__(self, other: _Operand | float) -> _Operand: + return self.apply("mul", other, self) + + def __truediv__(self, other: _Operand | float) -> _Operand: + return self.apply("div", self, other) + + def __rtruediv__(self, other: _Operand | float) -> _Operand: + return self.apply("div", other, self) + + def __mod__(self, other: _Operand | float) -> _Operand: + return self.apply("mod", self, other) + + def __rmod__(self, other: _Operand | float) -> _Operand: + return self.apply("mod", other, self) + + def __pow__(self, other: _Operand | float) -> _Operand: + return self.apply("pow", self, other) + + def __rpow__(self, other: _Operand | float) -> _Operand: + return self.apply("pow", other, self) + + # bitwise + def __invert__(self) -> _Operand: + return self.apply("invert", self) + + def __and__(self, other: _Operand | float) -> _Operand: + return self.apply("and", self, other) + + def __rand__(self, other: _Operand | float) -> _Operand: + return self.apply("and", other, self) + + def __or__(self, other: _Operand | float) -> _Operand: + return self.apply("or", self, other) + + def __ror__(self, other: _Operand | float) -> _Operand: + return self.apply("or", other, self) + + def __xor__(self, other: _Operand | float) -> _Operand: + return self.apply("xor", self, other) + + def __rxor__(self, other: _Operand | float) -> _Operand: + return self.apply("xor", other, self) + + def __lshift__(self, other: _Operand | float) -> _Operand: + return self.apply("lshift", self, other) + + def __rshift__(self, other: _Operand | float) -> _Operand: + return self.apply("rshift", self, other) + + # logical + def __eq__(self, other: _Operand | float) -> _Operand: # type: ignore[override] + return self.apply("eq", self, other) + + def __ne__(self, other: _Operand | float) -> _Operand: # type: ignore[override] + return self.apply("ne", self, other) + + def __lt__(self, other: _Operand | float) -> _Operand: + return self.apply("lt", self, other) + + def __le__(self, other: _Operand | float) -> _Operand: + return self.apply("le", self, other) + + def __gt__(self, other: _Operand | float) -> _Operand: + return self.apply("gt", self, other) + + def __ge__(self, other: _Operand | float) -> _Operand: + return self.apply("ge", self, other) + + +# conversions +def imagemath_int(self: _Operand) -> _Operand: + return _Operand(self.im.convert("I")) + + +def imagemath_float(self: _Operand) -> _Operand: + return _Operand(self.im.convert("F")) + + +# logical +def imagemath_equal(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("eq", self, other, mode="I") + + +def imagemath_notequal(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("ne", self, other, mode="I") + + +def imagemath_min(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("min", self, other) + + +def imagemath_max(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("max", self, other) + + +def imagemath_convert(self: _Operand, mode: str) -> _Operand: + return _Operand(self.im.convert(mode)) + + +ops = { + "int": imagemath_int, + "float": imagemath_float, + "equal": imagemath_equal, + "notequal": imagemath_notequal, + "min": imagemath_min, + "max": imagemath_max, + "convert": imagemath_convert, +} + + +def lambda_eval( + expression: Callable[[dict[str, Any]], Any], + options: dict[str, Any] = {}, + **kw: Any, +) -> Any: + """ + Returns the result of an image function. + + :py:mod:`~PIL.ImageMath` only supports single-layer images. To process multi-band + images, use the :py:meth:`~PIL.Image.Image.split` method or + :py:func:`~PIL.Image.merge` function. + + :param expression: A function that receives a dictionary. + :param options: Values to add to the function's dictionary. Deprecated. + You can instead use one or more keyword arguments. + :param **kw: Values to add to the function's dictionary. + :return: The expression result. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + """ + + if options: + deprecate( + "ImageMath.lambda_eval options", + 12, + "ImageMath.lambda_eval keyword arguments", + ) + + args: dict[str, Any] = ops.copy() + args.update(options) + args.update(kw) + for k, v in args.items(): + if isinstance(v, Image.Image): + args[k] = _Operand(v) + + out = expression(args) + try: + return out.im + except AttributeError: + return out + + +def unsafe_eval( + expression: str, + options: dict[str, Any] = {}, + **kw: Any, +) -> Any: + """ + Evaluates an image expression. This uses Python's ``eval()`` function to process + the expression string, and carries the security risks of doing so. It is not + recommended to process expressions without considering this. + :py:meth:`~lambda_eval` is a more secure alternative. + + :py:mod:`~PIL.ImageMath` only supports single-layer images. To process multi-band + images, use the :py:meth:`~PIL.Image.Image.split` method or + :py:func:`~PIL.Image.merge` function. + + :param expression: A string containing a Python-style expression. + :param options: Values to add to the evaluation context. Deprecated. + You can instead use one or more keyword arguments. + :param **kw: Values to add to the evaluation context. + :return: The evaluated expression. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + """ + + if options: + deprecate( + "ImageMath.unsafe_eval options", + 12, + "ImageMath.unsafe_eval keyword arguments", + ) + + # build execution namespace + args: dict[str, Any] = ops.copy() + for k in [*options, *kw]: + if "__" in k or hasattr(builtins, k): + msg = f"'{k}' not allowed" + raise ValueError(msg) + + args.update(options) + args.update(kw) + for k, v in args.items(): + if isinstance(v, Image.Image): + args[k] = _Operand(v) + + compiled_code = compile(expression, "", "eval") + + def scan(code: CodeType) -> None: + for const in code.co_consts: + if type(const) is type(compiled_code): + scan(const) + + for name in code.co_names: + if name not in args and name != "abs": + msg = f"'{name}' not allowed" + raise ValueError(msg) + + scan(compiled_code) + out = builtins.eval(expression, {"__builtins": {"abs": abs}}, args) + try: + return out.im + except AttributeError: + return out + + +def eval( + expression: str, + _dict: dict[str, Any] = {}, + **kw: Any, +) -> Any: + """ + Evaluates an image expression. + + Deprecated. Use lambda_eval() or unsafe_eval() instead. + + :param expression: A string containing a Python-style expression. + :param _dict: Values to add to the evaluation context. You + can either use a dictionary, or one or more keyword + arguments. + :return: The evaluated expression. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + + .. deprecated:: 10.3.0 + """ + + deprecate( + "ImageMath.eval", + 12, + "ImageMath.lambda_eval or ImageMath.unsafe_eval", + ) + return unsafe_eval(expression, _dict, **kw) diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageMode.py b/myenv/lib/python3.10/site-packages/PIL/ImageMode.py new file mode 100644 index 0000000..92a08d2 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageMode.py @@ -0,0 +1,92 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard mode descriptors +# +# History: +# 2006-03-20 fl Added +# +# Copyright (c) 2006 by Secret Labs AB. +# Copyright (c) 2006 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import sys +from functools import lru_cache +from typing import NamedTuple + +from ._deprecate import deprecate + + +class ModeDescriptor(NamedTuple): + """Wrapper for mode strings.""" + + mode: str + bands: tuple[str, ...] + basemode: str + basetype: str + typestr: str + + def __str__(self) -> str: + return self.mode + + +@lru_cache +def getmode(mode: str) -> ModeDescriptor: + """Gets a mode descriptor for the given mode.""" + endian = "<" if sys.byteorder == "little" else ">" + + modes = { + # core modes + # Bits need to be extended to bytes + "1": ("L", "L", ("1",), "|b1"), + "L": ("L", "L", ("L",), "|u1"), + "I": ("L", "I", ("I",), f"{endian}i4"), + "F": ("L", "F", ("F",), f"{endian}f4"), + "P": ("P", "L", ("P",), "|u1"), + "RGB": ("RGB", "L", ("R", "G", "B"), "|u1"), + "RGBX": ("RGB", "L", ("R", "G", "B", "X"), "|u1"), + "RGBA": ("RGB", "L", ("R", "G", "B", "A"), "|u1"), + "CMYK": ("RGB", "L", ("C", "M", "Y", "K"), "|u1"), + "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr"), "|u1"), + # UNDONE - unsigned |u1i1i1 + "LAB": ("RGB", "L", ("L", "A", "B"), "|u1"), + "HSV": ("RGB", "L", ("H", "S", "V"), "|u1"), + # extra experimental modes + "RGBa": ("RGB", "L", ("R", "G", "B", "a"), "|u1"), + "BGR;15": ("RGB", "L", ("B", "G", "R"), "|u1"), + "BGR;16": ("RGB", "L", ("B", "G", "R"), "|u1"), + "BGR;24": ("RGB", "L", ("B", "G", "R"), "|u1"), + "LA": ("L", "L", ("L", "A"), "|u1"), + "La": ("L", "L", ("L", "a"), "|u1"), + "PA": ("RGB", "L", ("P", "A"), "|u1"), + } + if mode in modes: + if mode in ("BGR;15", "BGR;16", "BGR;24"): + deprecate(mode, 12) + base_mode, base_type, bands, type_str = modes[mode] + return ModeDescriptor(mode, bands, base_mode, base_type, type_str) + + mapping_modes = { + # I;16 == I;16L, and I;32 == I;32L + "I;16": "u2", + "I;16BS": ">i2", + "I;16N": f"{endian}u2", + "I;16NS": f"{endian}i2", + "I;32": "u4", + "I;32L": "i4", + "I;32LS": " +from __future__ import annotations + +import re + +from . import Image, _imagingmorph + +LUT_SIZE = 1 << 9 + +# fmt: off +ROTATION_MATRIX = [ + 6, 3, 0, + 7, 4, 1, + 8, 5, 2, +] +MIRROR_MATRIX = [ + 2, 1, 0, + 5, 4, 3, + 8, 7, 6, +] +# fmt: on + + +class LutBuilder: + """A class for building a MorphLut from a descriptive language + + The input patterns is a list of a strings sequences like these:: + + 4:(... + .1. + 111)->1 + + (whitespaces including linebreaks are ignored). The option 4 + describes a series of symmetry operations (in this case a + 4-rotation), the pattern is described by: + + - . or X - Ignore + - 1 - Pixel is on + - 0 - Pixel is off + + The result of the operation is described after "->" string. + + The default is to return the current pixel value, which is + returned if no other match is found. + + Operations: + + - 4 - 4 way rotation + - N - Negate + - 1 - Dummy op for no other operation (an op must always be given) + - M - Mirroring + + Example:: + + lb = LutBuilder(patterns = ["4:(... .1. 111)->1"]) + lut = lb.build_lut() + + """ + + def __init__( + self, patterns: list[str] | None = None, op_name: str | None = None + ) -> None: + if patterns is not None: + self.patterns = patterns + else: + self.patterns = [] + self.lut: bytearray | None = None + if op_name is not None: + known_patterns = { + "corner": ["1:(... ... ...)->0", "4:(00. 01. ...)->1"], + "dilation4": ["4:(... .0. .1.)->1"], + "dilation8": ["4:(... .0. .1.)->1", "4:(... .0. ..1)->1"], + "erosion4": ["4:(... .1. .0.)->0"], + "erosion8": ["4:(... .1. .0.)->0", "4:(... .1. ..0)->0"], + "edge": [ + "1:(... ... ...)->0", + "4:(.0. .1. ...)->1", + "4:(01. .1. ...)->1", + ], + } + if op_name not in known_patterns: + msg = f"Unknown pattern {op_name}!" + raise Exception(msg) + + self.patterns = known_patterns[op_name] + + def add_patterns(self, patterns: list[str]) -> None: + self.patterns += patterns + + def build_default_lut(self) -> None: + symbols = [0, 1] + m = 1 << 4 # pos of current pixel + self.lut = bytearray(symbols[(i & m) > 0] for i in range(LUT_SIZE)) + + def get_lut(self) -> bytearray | None: + return self.lut + + def _string_permute(self, pattern: str, permutation: list[int]) -> str: + """string_permute takes a pattern and a permutation and returns the + string permuted according to the permutation list. + """ + assert len(permutation) == 9 + return "".join(pattern[p] for p in permutation) + + def _pattern_permute( + self, basic_pattern: str, options: str, basic_result: int + ) -> list[tuple[str, int]]: + """pattern_permute takes a basic pattern and its result and clones + the pattern according to the modifications described in the $options + parameter. It returns a list of all cloned patterns.""" + patterns = [(basic_pattern, basic_result)] + + # rotations + if "4" in options: + res = patterns[-1][1] + for i in range(4): + patterns.append( + (self._string_permute(patterns[-1][0], ROTATION_MATRIX), res) + ) + # mirror + if "M" in options: + n = len(patterns) + for pattern, res in patterns[:n]: + patterns.append((self._string_permute(pattern, MIRROR_MATRIX), res)) + + # negate + if "N" in options: + n = len(patterns) + for pattern, res in patterns[:n]: + # Swap 0 and 1 + pattern = pattern.replace("0", "Z").replace("1", "0").replace("Z", "1") + res = 1 - int(res) + patterns.append((pattern, res)) + + return patterns + + def build_lut(self) -> bytearray: + """Compile all patterns into a morphology lut. + + TBD :Build based on (file) morphlut:modify_lut + """ + self.build_default_lut() + assert self.lut is not None + patterns = [] + + # Parse and create symmetries of the patterns strings + for p in self.patterns: + m = re.search(r"(\w*):?\s*\((.+?)\)\s*->\s*(\d)", p.replace("\n", "")) + if not m: + msg = 'Syntax error in pattern "' + p + '"' + raise Exception(msg) + options = m.group(1) + pattern = m.group(2) + result = int(m.group(3)) + + # Get rid of spaces + pattern = pattern.replace(" ", "").replace("\n", "") + + patterns += self._pattern_permute(pattern, options, result) + + # compile the patterns into regular expressions for speed + compiled_patterns = [] + for pattern in patterns: + p = pattern[0].replace(".", "X").replace("X", "[01]") + compiled_patterns.append((re.compile(p), pattern[1])) + + # Step through table and find patterns that match. + # Note that all the patterns are searched. The last one + # caught overrides + for i in range(LUT_SIZE): + # Build the bit pattern + bitpattern = bin(i)[2:] + bitpattern = ("0" * (9 - len(bitpattern)) + bitpattern)[::-1] + + for pattern, r in compiled_patterns: + if pattern.match(bitpattern): + self.lut[i] = [0, 1][r] + + return self.lut + + +class MorphOp: + """A class for binary morphological operators""" + + def __init__( + self, + lut: bytearray | None = None, + op_name: str | None = None, + patterns: list[str] | None = None, + ) -> None: + """Create a binary morphological operator""" + self.lut = lut + if op_name is not None: + self.lut = LutBuilder(op_name=op_name).build_lut() + elif patterns is not None: + self.lut = LutBuilder(patterns=patterns).build_lut() + + def apply(self, image: Image.Image) -> tuple[int, Image.Image]: + """Run a single morphological operation on an image + + Returns a tuple of the number of changed pixels and the + morphed image""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + outimage = Image.new(image.mode, image.size, None) + count = _imagingmorph.apply(bytes(self.lut), image.getim(), outimage.getim()) + return count, outimage + + def match(self, image: Image.Image) -> list[tuple[int, int]]: + """Get a list of coordinates matching the morphological operation on + an image. + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + return _imagingmorph.match(bytes(self.lut), image.getim()) + + def get_on_pixels(self, image: Image.Image) -> list[tuple[int, int]]: + """Get a list of all turned on pixels in a binary image + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + return _imagingmorph.get_on_pixels(image.getim()) + + def load_lut(self, filename: str) -> None: + """Load an operator from an mrl file""" + with open(filename, "rb") as f: + self.lut = bytearray(f.read()) + + if len(self.lut) != LUT_SIZE: + self.lut = None + msg = "Wrong size operator file!" + raise Exception(msg) + + def save_lut(self, filename: str) -> None: + """Save an operator to an mrl file""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + with open(filename, "wb") as f: + f.write(self.lut) + + def set_lut(self, lut: bytearray | None) -> None: + """Set the lut from an external source""" + self.lut = lut diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageOps.py b/myenv/lib/python3.10/site-packages/PIL/ImageOps.py new file mode 100644 index 0000000..da28854 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageOps.py @@ -0,0 +1,745 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard image operations +# +# History: +# 2001-10-20 fl Created +# 2001-10-23 fl Added autocontrast operator +# 2001-12-18 fl Added Kevin's fit operator +# 2004-03-14 fl Fixed potential division by zero in equalize +# 2005-05-05 fl Fixed equalize for low number of values +# +# Copyright (c) 2001-2004 by Secret Labs AB +# Copyright (c) 2001-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import functools +import operator +import re +from collections.abc import Sequence +from typing import Literal, Protocol, cast, overload + +from . import ExifTags, Image, ImagePalette + +# +# helpers + + +def _border(border: int | tuple[int, ...]) -> tuple[int, int, int, int]: + if isinstance(border, tuple): + if len(border) == 2: + left, top = right, bottom = border + elif len(border) == 4: + left, top, right, bottom = border + else: + left = top = right = bottom = border + return left, top, right, bottom + + +def _color(color: str | int | tuple[int, ...], mode: str) -> int | tuple[int, ...]: + if isinstance(color, str): + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + return color + + +def _lut(image: Image.Image, lut: list[int]) -> Image.Image: + if image.mode == "P": + # FIXME: apply to lookup table, not image data + msg = "mode P support coming soon" + raise NotImplementedError(msg) + elif image.mode in ("L", "RGB"): + if image.mode == "RGB" and len(lut) == 256: + lut = lut + lut + lut + return image.point(lut) + else: + msg = f"not supported for mode {image.mode}" + raise OSError(msg) + + +# +# actions + + +def autocontrast( + image: Image.Image, + cutoff: float | tuple[float, float] = 0, + ignore: int | Sequence[int] | None = None, + mask: Image.Image | None = None, + preserve_tone: bool = False, +) -> Image.Image: + """ + Maximize (normalize) image contrast. This function calculates a + histogram of the input image (or mask region), removes ``cutoff`` percent of the + lightest and darkest pixels from the histogram, and remaps the image + so that the darkest pixel becomes black (0), and the lightest + becomes white (255). + + :param image: The image to process. + :param cutoff: The percent to cut off from the histogram on the low and + high ends. Either a tuple of (low, high), or a single + number for both. + :param ignore: The background pixel value (use None for no background). + :param mask: Histogram used in contrast operation is computed using pixels + within the mask. If no mask is given the entire image is used + for histogram computation. + :param preserve_tone: Preserve image tone in Photoshop-like style autocontrast. + + .. versionadded:: 8.2.0 + + :return: An image. + """ + if preserve_tone: + histogram = image.convert("L").histogram(mask) + else: + histogram = image.histogram(mask) + + lut = [] + for layer in range(0, len(histogram), 256): + h = histogram[layer : layer + 256] + if ignore is not None: + # get rid of outliers + if isinstance(ignore, int): + h[ignore] = 0 + else: + for ix in ignore: + h[ix] = 0 + if cutoff: + # cut off pixels from both ends of the histogram + if not isinstance(cutoff, tuple): + cutoff = (cutoff, cutoff) + # get number of pixels + n = 0 + for ix in range(256): + n = n + h[ix] + # remove cutoff% pixels from the low end + cut = int(n * cutoff[0] // 100) + for lo in range(256): + if cut > h[lo]: + cut = cut - h[lo] + h[lo] = 0 + else: + h[lo] -= cut + cut = 0 + if cut <= 0: + break + # remove cutoff% samples from the high end + cut = int(n * cutoff[1] // 100) + for hi in range(255, -1, -1): + if cut > h[hi]: + cut = cut - h[hi] + h[hi] = 0 + else: + h[hi] -= cut + cut = 0 + if cut <= 0: + break + # find lowest/highest samples after preprocessing + for lo in range(256): + if h[lo]: + break + for hi in range(255, -1, -1): + if h[hi]: + break + if hi <= lo: + # don't bother + lut.extend(list(range(256))) + else: + scale = 255.0 / (hi - lo) + offset = -lo * scale + for ix in range(256): + ix = int(ix * scale + offset) + if ix < 0: + ix = 0 + elif ix > 255: + ix = 255 + lut.append(ix) + return _lut(image, lut) + + +def colorize( + image: Image.Image, + black: str | tuple[int, ...], + white: str | tuple[int, ...], + mid: str | int | tuple[int, ...] | None = None, + blackpoint: int = 0, + whitepoint: int = 255, + midpoint: int = 127, +) -> Image.Image: + """ + Colorize grayscale image. + This function calculates a color wedge which maps all black pixels in + the source image to the first color and all white pixels to the + second color. If ``mid`` is specified, it uses three-color mapping. + The ``black`` and ``white`` arguments should be RGB tuples or color names; + optionally you can use three-color mapping by also specifying ``mid``. + Mapping positions for any of the colors can be specified + (e.g. ``blackpoint``), where these parameters are the integer + value corresponding to where the corresponding color should be mapped. + These parameters must have logical order, such that + ``blackpoint <= midpoint <= whitepoint`` (if ``mid`` is specified). + + :param image: The image to colorize. + :param black: The color to use for black input pixels. + :param white: The color to use for white input pixels. + :param mid: The color to use for midtone input pixels. + :param blackpoint: an int value [0, 255] for the black mapping. + :param whitepoint: an int value [0, 255] for the white mapping. + :param midpoint: an int value [0, 255] for the midtone mapping. + :return: An image. + """ + + # Initial asserts + assert image.mode == "L" + if mid is None: + assert 0 <= blackpoint <= whitepoint <= 255 + else: + assert 0 <= blackpoint <= midpoint <= whitepoint <= 255 + + # Define colors from arguments + rgb_black = cast(Sequence[int], _color(black, "RGB")) + rgb_white = cast(Sequence[int], _color(white, "RGB")) + rgb_mid = cast(Sequence[int], _color(mid, "RGB")) if mid is not None else None + + # Empty lists for the mapping + red = [] + green = [] + blue = [] + + # Create the low-end values + for i in range(blackpoint): + red.append(rgb_black[0]) + green.append(rgb_black[1]) + blue.append(rgb_black[2]) + + # Create the mapping (2-color) + if rgb_mid is None: + range_map = range(whitepoint - blackpoint) + + for i in range_map: + red.append( + rgb_black[0] + i * (rgb_white[0] - rgb_black[0]) // len(range_map) + ) + green.append( + rgb_black[1] + i * (rgb_white[1] - rgb_black[1]) // len(range_map) + ) + blue.append( + rgb_black[2] + i * (rgb_white[2] - rgb_black[2]) // len(range_map) + ) + + # Create the mapping (3-color) + else: + range_map1 = range(midpoint - blackpoint) + range_map2 = range(whitepoint - midpoint) + + for i in range_map1: + red.append( + rgb_black[0] + i * (rgb_mid[0] - rgb_black[0]) // len(range_map1) + ) + green.append( + rgb_black[1] + i * (rgb_mid[1] - rgb_black[1]) // len(range_map1) + ) + blue.append( + rgb_black[2] + i * (rgb_mid[2] - rgb_black[2]) // len(range_map1) + ) + for i in range_map2: + red.append(rgb_mid[0] + i * (rgb_white[0] - rgb_mid[0]) // len(range_map2)) + green.append( + rgb_mid[1] + i * (rgb_white[1] - rgb_mid[1]) // len(range_map2) + ) + blue.append(rgb_mid[2] + i * (rgb_white[2] - rgb_mid[2]) // len(range_map2)) + + # Create the high-end values + for i in range(256 - whitepoint): + red.append(rgb_white[0]) + green.append(rgb_white[1]) + blue.append(rgb_white[2]) + + # Return converted image + image = image.convert("RGB") + return _lut(image, red + green + blue) + + +def contain( + image: Image.Image, size: tuple[int, int], method: int = Image.Resampling.BICUBIC +) -> Image.Image: + """ + Returns a resized version of the image, set to the maximum width and height + within the requested size, while maintaining the original aspect ratio. + + :param image: The image to resize. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :return: An image. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio != dest_ratio: + if im_ratio > dest_ratio: + new_height = round(image.height / image.width * size[0]) + if new_height != size[1]: + size = (size[0], new_height) + else: + new_width = round(image.width / image.height * size[1]) + if new_width != size[0]: + size = (new_width, size[1]) + return image.resize(size, resample=method) + + +def cover( + image: Image.Image, size: tuple[int, int], method: int = Image.Resampling.BICUBIC +) -> Image.Image: + """ + Returns a resized version of the image, so that the requested size is + covered, while maintaining the original aspect ratio. + + :param image: The image to resize. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :return: An image. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio != dest_ratio: + if im_ratio < dest_ratio: + new_height = round(image.height / image.width * size[0]) + if new_height != size[1]: + size = (size[0], new_height) + else: + new_width = round(image.width / image.height * size[1]) + if new_width != size[0]: + size = (new_width, size[1]) + return image.resize(size, resample=method) + + +def pad( + image: Image.Image, + size: tuple[int, int], + method: int = Image.Resampling.BICUBIC, + color: str | int | tuple[int, ...] | None = None, + centering: tuple[float, float] = (0.5, 0.5), +) -> Image.Image: + """ + Returns a resized and padded version of the image, expanded to fill the + requested aspect ratio and size. + + :param image: The image to resize and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :param color: The background color of the padded image. + :param centering: Control the position of the original image within the + padded version. + + (0.5, 0.5) will keep the image centered + (0, 0) will keep the image aligned to the top left + (1, 1) will keep the image aligned to the bottom + right + :return: An image. + """ + + resized = contain(image, size, method) + if resized.size == size: + out = resized + else: + out = Image.new(image.mode, size, color) + if resized.palette: + palette = resized.getpalette() + if palette is not None: + out.putpalette(palette) + if resized.width != size[0]: + x = round((size[0] - resized.width) * max(0, min(centering[0], 1))) + out.paste(resized, (x, 0)) + else: + y = round((size[1] - resized.height) * max(0, min(centering[1], 1))) + out.paste(resized, (0, y)) + return out + + +def crop(image: Image.Image, border: int = 0) -> Image.Image: + """ + Remove border from image. The same amount of pixels are removed + from all four sides. This function works on all image modes. + + .. seealso:: :py:meth:`~PIL.Image.Image.crop` + + :param image: The image to crop. + :param border: The number of pixels to remove. + :return: An image. + """ + left, top, right, bottom = _border(border) + return image.crop((left, top, image.size[0] - right, image.size[1] - bottom)) + + +def scale( + image: Image.Image, factor: float, resample: int = Image.Resampling.BICUBIC +) -> Image.Image: + """ + Returns a rescaled image by a specific factor given in parameter. + A factor greater than 1 expands the image, between 0 and 1 contracts the + image. + + :param image: The image to rescale. + :param factor: The expansion factor, as a float. + :param resample: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + if factor == 1: + return image.copy() + elif factor <= 0: + msg = "the factor must be greater than 0" + raise ValueError(msg) + else: + size = (round(factor * image.width), round(factor * image.height)) + return image.resize(size, resample) + + +class SupportsGetMesh(Protocol): + """ + An object that supports the ``getmesh`` method, taking an image as an + argument, and returning a list of tuples. Each tuple contains two tuples, + the source box as a tuple of 4 integers, and a tuple of 8 integers for the + final quadrilateral, in order of top left, bottom left, bottom right, top + right. + """ + + def getmesh( + self, image: Image.Image + ) -> list[ + tuple[tuple[int, int, int, int], tuple[int, int, int, int, int, int, int, int]] + ]: ... + + +def deform( + image: Image.Image, + deformer: SupportsGetMesh, + resample: int = Image.Resampling.BILINEAR, +) -> Image.Image: + """ + Deform the image. + + :param image: The image to deform. + :param deformer: A deformer object. Any object that implements a + ``getmesh`` method can be used. + :param resample: An optional resampling filter. Same values possible as + in the PIL.Image.transform function. + :return: An image. + """ + return image.transform( + image.size, Image.Transform.MESH, deformer.getmesh(image), resample + ) + + +def equalize(image: Image.Image, mask: Image.Image | None = None) -> Image.Image: + """ + Equalize the image histogram. This function applies a non-linear + mapping to the input image, in order to create a uniform + distribution of grayscale values in the output image. + + :param image: The image to equalize. + :param mask: An optional mask. If given, only the pixels selected by + the mask are included in the analysis. + :return: An image. + """ + if image.mode == "P": + image = image.convert("RGB") + h = image.histogram(mask) + lut = [] + for b in range(0, len(h), 256): + histo = [_f for _f in h[b : b + 256] if _f] + if len(histo) <= 1: + lut.extend(list(range(256))) + else: + step = (functools.reduce(operator.add, histo) - histo[-1]) // 255 + if not step: + lut.extend(list(range(256))) + else: + n = step // 2 + for i in range(256): + lut.append(n // step) + n = n + h[i + b] + return _lut(image, lut) + + +def expand( + image: Image.Image, + border: int | tuple[int, ...] = 0, + fill: str | int | tuple[int, ...] = 0, +) -> Image.Image: + """ + Add border to the image + + :param image: The image to expand. + :param border: Border width, in pixels. + :param fill: Pixel fill value (a color value). Default is 0 (black). + :return: An image. + """ + left, top, right, bottom = _border(border) + width = left + image.size[0] + right + height = top + image.size[1] + bottom + color = _color(fill, image.mode) + if image.palette: + palette = ImagePalette.ImagePalette(palette=image.getpalette()) + if isinstance(color, tuple) and (len(color) == 3 or len(color) == 4): + color = palette.getcolor(color) + else: + palette = None + out = Image.new(image.mode, (width, height), color) + if palette: + out.putpalette(palette.palette) + out.paste(image, (left, top)) + return out + + +def fit( + image: Image.Image, + size: tuple[int, int], + method: int = Image.Resampling.BICUBIC, + bleed: float = 0.0, + centering: tuple[float, float] = (0.5, 0.5), +) -> Image.Image: + """ + Returns a resized and cropped version of the image, cropped to the + requested aspect ratio and size. + + This function was contributed by Kevin Cazabon. + + :param image: The image to resize and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :param bleed: Remove a border around the outside of the image from all + four edges. The value is a decimal percentage (use 0.01 for + one percent). The default value is 0 (no border). + Cannot be greater than or equal to 0.5. + :param centering: Control the cropping position. Use (0.5, 0.5) for + center cropping (e.g. if cropping the width, take 50% off + of the left side, and therefore 50% off the right side). + (0.0, 0.0) will crop from the top left corner (i.e. if + cropping the width, take all of the crop off of the right + side, and if cropping the height, take all of it off the + bottom). (1.0, 0.0) will crop from the bottom left + corner, etc. (i.e. if cropping the width, take all of the + crop off the left side, and if cropping the height take + none from the top, and therefore all off the bottom). + :return: An image. + """ + + # by Kevin Cazabon, Feb 17/2000 + # kevin@cazabon.com + # https://www.cazabon.com + + centering_x, centering_y = centering + + if not 0.0 <= centering_x <= 1.0: + centering_x = 0.5 + if not 0.0 <= centering_y <= 1.0: + centering_y = 0.5 + + if not 0.0 <= bleed < 0.5: + bleed = 0.0 + + # calculate the area to use for resizing and cropping, subtracting + # the 'bleed' around the edges + + # number of pixels to trim off on Top and Bottom, Left and Right + bleed_pixels = (bleed * image.size[0], bleed * image.size[1]) + + live_size = ( + image.size[0] - bleed_pixels[0] * 2, + image.size[1] - bleed_pixels[1] * 2, + ) + + # calculate the aspect ratio of the live_size + live_size_ratio = live_size[0] / live_size[1] + + # calculate the aspect ratio of the output image + output_ratio = size[0] / size[1] + + # figure out if the sides or top/bottom will be cropped off + if live_size_ratio == output_ratio: + # live_size is already the needed ratio + crop_width = live_size[0] + crop_height = live_size[1] + elif live_size_ratio >= output_ratio: + # live_size is wider than what's needed, crop the sides + crop_width = output_ratio * live_size[1] + crop_height = live_size[1] + else: + # live_size is taller than what's needed, crop the top and bottom + crop_width = live_size[0] + crop_height = live_size[0] / output_ratio + + # make the crop + crop_left = bleed_pixels[0] + (live_size[0] - crop_width) * centering_x + crop_top = bleed_pixels[1] + (live_size[1] - crop_height) * centering_y + + crop = (crop_left, crop_top, crop_left + crop_width, crop_top + crop_height) + + # resize the image and return it + return image.resize(size, method, box=crop) + + +def flip(image: Image.Image) -> Image.Image: + """ + Flip the image vertically (top to bottom). + + :param image: The image to flip. + :return: An image. + """ + return image.transpose(Image.Transpose.FLIP_TOP_BOTTOM) + + +def grayscale(image: Image.Image) -> Image.Image: + """ + Convert the image to grayscale. + + :param image: The image to convert. + :return: An image. + """ + return image.convert("L") + + +def invert(image: Image.Image) -> Image.Image: + """ + Invert (negate) the image. + + :param image: The image to invert. + :return: An image. + """ + lut = list(range(255, -1, -1)) + return image.point(lut) if image.mode == "1" else _lut(image, lut) + + +def mirror(image: Image.Image) -> Image.Image: + """ + Flip image horizontally (left to right). + + :param image: The image to mirror. + :return: An image. + """ + return image.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + + +def posterize(image: Image.Image, bits: int) -> Image.Image: + """ + Reduce the number of bits for each color channel. + + :param image: The image to posterize. + :param bits: The number of bits to keep for each channel (1-8). + :return: An image. + """ + mask = ~(2 ** (8 - bits) - 1) + lut = [i & mask for i in range(256)] + return _lut(image, lut) + + +def solarize(image: Image.Image, threshold: int = 128) -> Image.Image: + """ + Invert all pixel values above a threshold. + + :param image: The image to solarize. + :param threshold: All pixels above this grayscale level are inverted. + :return: An image. + """ + lut = [] + for i in range(256): + if i < threshold: + lut.append(i) + else: + lut.append(255 - i) + return _lut(image, lut) + + +@overload +def exif_transpose(image: Image.Image, *, in_place: Literal[True]) -> None: ... + + +@overload +def exif_transpose( + image: Image.Image, *, in_place: Literal[False] = False +) -> Image.Image: ... + + +def exif_transpose(image: Image.Image, *, in_place: bool = False) -> Image.Image | None: + """ + If an image has an EXIF Orientation tag, other than 1, transpose the image + accordingly, and remove the orientation data. + + :param image: The image to transpose. + :param in_place: Boolean. Keyword-only argument. + If ``True``, the original image is modified in-place, and ``None`` is returned. + If ``False`` (default), a new :py:class:`~PIL.Image.Image` object is returned + with the transposition applied. If there is no transposition, a copy of the + image will be returned. + """ + image.load() + image_exif = image.getexif() + orientation = image_exif.get(ExifTags.Base.Orientation, 1) + method = { + 2: Image.Transpose.FLIP_LEFT_RIGHT, + 3: Image.Transpose.ROTATE_180, + 4: Image.Transpose.FLIP_TOP_BOTTOM, + 5: Image.Transpose.TRANSPOSE, + 6: Image.Transpose.ROTATE_270, + 7: Image.Transpose.TRANSVERSE, + 8: Image.Transpose.ROTATE_90, + }.get(orientation) + if method is not None: + if in_place: + 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() + if ExifTags.Base.Orientation in exif: + del exif[ExifTags.Base.Orientation] + if "exif" in exif_image.info: + exif_image.info["exif"] = exif.tobytes() + elif "Raw profile type exif" in exif_image.info: + exif_image.info["Raw profile type exif"] = exif.tobytes().hex() + for key in ("XML:com.adobe.xmp", "xmp"): + if key in exif_image.info: + for pattern in ( + r'tiff:Orientation="([0-9])"', + r"([0-9])", + ): + value = exif_image.info[key] + if isinstance(value, str): + value = re.sub(pattern, "", value) + elif isinstance(value, tuple): + value = tuple( + re.sub(pattern.encode(), b"", v) for v in value + ) + else: + value = re.sub(pattern.encode(), b"", value) + exif_image.info[key] = value + if not in_place: + return transposed_image + elif not in_place: + return image.copy() + return None diff --git a/myenv/lib/python3.10/site-packages/PIL/ImagePalette.py b/myenv/lib/python3.10/site-packages/PIL/ImagePalette.py new file mode 100644 index 0000000..1036971 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImagePalette.py @@ -0,0 +1,286 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image palette object +# +# History: +# 1996-03-11 fl Rewritten. +# 1997-01-03 fl Up and running. +# 1997-08-23 fl Added load hack +# 2001-04-16 fl Fixed randint shadow bug in random() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import array +from collections.abc import Sequence +from typing import IO + +from . import GimpGradientFile, GimpPaletteFile, ImageColor, PaletteFile + +TYPE_CHECKING = False +if TYPE_CHECKING: + from . import Image + + +class ImagePalette: + """ + Color palette for palette mapped images + + :param mode: The mode to use for the palette. See: + :ref:`concept-modes`. Defaults to "RGB" + :param palette: An optional palette. If given, it must be a bytearray, + an array or a list of ints between 0-255. The list must consist of + all channels for one color followed by the next color (e.g. RGBRGBRGB). + Defaults to an empty palette. + """ + + def __init__( + self, + mode: str = "RGB", + palette: Sequence[int] | bytes | bytearray | None = None, + ) -> None: + self.mode = mode + self.rawmode: str | None = None # if set, palette contains raw data + self.palette = palette or bytearray() + self.dirty: int | None = None + + @property + def palette(self) -> Sequence[int] | bytes | bytearray: + return self._palette + + @palette.setter + def palette(self, palette: Sequence[int] | bytes | bytearray) -> None: + self._colors: dict[tuple[int, ...], int] | None = None + self._palette = palette + + @property + def colors(self) -> dict[tuple[int, ...], int]: + if self._colors is None: + mode_len = len(self.mode) + self._colors = {} + for i in range(0, len(self.palette), mode_len): + color = tuple(self.palette[i : i + mode_len]) + if color in self._colors: + continue + self._colors[color] = i // mode_len + return self._colors + + @colors.setter + def colors(self, colors: dict[tuple[int, ...], int]) -> None: + self._colors = colors + + def copy(self) -> ImagePalette: + new = ImagePalette() + + new.mode = self.mode + new.rawmode = self.rawmode + if self.palette is not None: + new.palette = self.palette[:] + new.dirty = self.dirty + + return new + + def getdata(self) -> tuple[str, Sequence[int] | bytes | bytearray]: + """ + Get palette contents in format suitable for the low-level + ``im.putpalette`` primitive. + + .. warning:: This method is experimental. + """ + if self.rawmode: + return self.rawmode, self.palette + return self.mode, self.tobytes() + + def tobytes(self) -> bytes: + """Convert palette to bytes. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(self.palette, bytes): + return self.palette + arr = array.array("B", self.palette) + return arr.tobytes() + + # Declare tostring as an alias for tobytes + tostring = tobytes + + def _new_color_index( + self, image: Image.Image | None = None, e: Exception | None = None + ) -> int: + if not isinstance(self.palette, bytearray): + self._palette = bytearray(self.palette) + index = len(self.palette) // 3 + special_colors: tuple[int | tuple[int, ...] | None, ...] = () + if image: + special_colors = ( + image.info.get("background"), + image.info.get("transparency"), + ) + while index in special_colors: + index += 1 + if index >= 256: + if image: + # Search for an unused index + for i, count in reversed(list(enumerate(image.histogram()))): + if count == 0 and i not in special_colors: + index = i + break + if index >= 256: + msg = "cannot allocate more than 256 colors" + raise ValueError(msg) from e + return index + + def getcolor( + self, + color: tuple[int, ...], + image: Image.Image | None = None, + ) -> int: + """Given an rgb tuple, allocate palette entry. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(color, tuple): + if self.mode == "RGB": + if len(color) == 4: + if color[3] != 255: + msg = "cannot add non-opaque RGBA color to RGB palette" + raise ValueError(msg) + color = color[:3] + elif self.mode == "RGBA": + if len(color) == 3: + color += (255,) + try: + return self.colors[color] + except KeyError as e: + # allocate new color slot + index = self._new_color_index(image, e) + assert isinstance(self._palette, bytearray) + self.colors[color] = index + if index * 3 < len(self.palette): + self._palette = ( + self._palette[: index * 3] + + bytes(color) + + self._palette[index * 3 + 3 :] + ) + else: + self._palette += bytes(color) + self.dirty = 1 + return index + else: + msg = f"unknown color specifier: {repr(color)}" # type: ignore[unreachable] + raise ValueError(msg) + + def save(self, fp: str | IO[str]) -> None: + """Save palette to text file. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(fp, str): + fp = open(fp, "w") + fp.write("# Palette\n") + fp.write(f"# Mode: {self.mode}\n") + for i in range(256): + fp.write(f"{i}") + for j in range(i * len(self.mode), (i + 1) * len(self.mode)): + try: + fp.write(f" {self.palette[j]}") + except IndexError: + fp.write(" 0") + fp.write("\n") + fp.close() + + +# -------------------------------------------------------------------- +# Internal + + +def raw(rawmode: str, data: Sequence[int] | bytes | bytearray) -> ImagePalette: + palette = ImagePalette() + palette.rawmode = rawmode + palette.palette = data + palette.dirty = 1 + return palette + + +# -------------------------------------------------------------------- +# Factories + + +def make_linear_lut(black: int, white: float) -> list[int]: + if black == 0: + return [int(white * i // 255) for i in range(256)] + + msg = "unavailable when black is non-zero" + raise NotImplementedError(msg) # FIXME + + +def make_gamma_lut(exp: float) -> list[int]: + return [int(((i / 255.0) ** exp) * 255.0 + 0.5) for i in range(256)] + + +def negative(mode: str = "RGB") -> ImagePalette: + palette = list(range(256 * len(mode))) + palette.reverse() + return ImagePalette(mode, [i // len(mode) for i in palette]) + + +def random(mode: str = "RGB") -> ImagePalette: + from random import randint + + palette = [randint(0, 255) for _ in range(256 * len(mode))] + return ImagePalette(mode, palette) + + +def sepia(white: str = "#fff0c0") -> ImagePalette: + bands = [make_linear_lut(0, band) for band in ImageColor.getrgb(white)] + return ImagePalette("RGB", [bands[i % 3][i // 3] for i in range(256 * 3)]) + + +def wedge(mode: str = "RGB") -> ImagePalette: + palette = list(range(256 * len(mode))) + return ImagePalette(mode, [i // len(mode) for i in palette]) + + +def load(filename: str) -> tuple[bytes, str]: + # FIXME: supports GIMP gradients only + + with open(filename, "rb") as fp: + paletteHandlers: list[ + type[ + GimpPaletteFile.GimpPaletteFile + | GimpGradientFile.GimpGradientFile + | PaletteFile.PaletteFile + ] + ] = [ + GimpPaletteFile.GimpPaletteFile, + GimpGradientFile.GimpGradientFile, + PaletteFile.PaletteFile, + ] + for paletteHandler in paletteHandlers: + try: + fp.seek(0) + lut = paletteHandler(fp).getpalette() + if lut: + break + except (SyntaxError, ValueError): + pass + else: + msg = "cannot load palette" + raise OSError(msg) + + return lut # data, rawmode diff --git a/myenv/lib/python3.10/site-packages/PIL/ImagePath.py b/myenv/lib/python3.10/site-packages/PIL/ImagePath.py new file mode 100644 index 0000000..77e8a60 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImagePath.py @@ -0,0 +1,20 @@ +# +# The Python Imaging Library +# $Id$ +# +# path interface +# +# History: +# 1996-11-04 fl Created +# 2002-04-14 fl Added documentation stub class +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image + +Path = Image.core.path diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageQt.py b/myenv/lib/python3.10/site-packages/PIL/ImageQt.py new file mode 100644 index 0000000..df7a57b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageQt.py @@ -0,0 +1,220 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a simple Qt image interface. +# +# history: +# 2006-06-03 fl: created +# 2006-06-04 fl: inherit from QImage instead of wrapping it +# 2006-06-05 fl: removed toimage helper; move string support to ImageQt +# 2013-11-13 fl: add support for Qt5 (aurelien.ballier@cyclonit.com) +# +# Copyright (c) 2006 by Secret Labs AB +# Copyright (c) 2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import sys +from io import BytesIO +from typing import Any, Callable, Union + +from . import Image +from ._util import is_path + +TYPE_CHECKING = False +if TYPE_CHECKING: + import PyQt6 + import PySide6 + + from . import ImageFile + + QBuffer: type + QByteArray = Union[PyQt6.QtCore.QByteArray, PySide6.QtCore.QByteArray] + QIODevice = Union[PyQt6.QtCore.QIODevice, PySide6.QtCore.QIODevice] + QImage = Union[PyQt6.QtGui.QImage, PySide6.QtGui.QImage] + QPixmap = Union[PyQt6.QtGui.QPixmap, PySide6.QtGui.QPixmap] + +qt_version: str | None +qt_versions = [ + ["6", "PyQt6"], + ["side6", "PySide6"], +] + +# If a version has already been imported, attempt it first +qt_versions.sort(key=lambda version: version[1] in sys.modules, reverse=True) +for version, qt_module in qt_versions: + try: + qRgba: Callable[[int, int, int, int], int] + if qt_module == "PyQt6": + from PyQt6.QtCore import QBuffer, QIODevice + from PyQt6.QtGui import QImage, QPixmap, qRgba + elif qt_module == "PySide6": + from PySide6.QtCore import QBuffer, QIODevice + from PySide6.QtGui import QImage, QPixmap, qRgba + except (ImportError, RuntimeError): + continue + qt_is_installed = True + qt_version = version + break +else: + qt_is_installed = False + qt_version = None + + +def rgb(r: int, g: int, b: int, a: int = 255) -> int: + """(Internal) Turns an RGB color into a Qt compatible color integer.""" + # use qRgb to pack the colors, and then turn the resulting long + # into a negative integer with the same bitpattern. + return qRgba(r, g, b, a) & 0xFFFFFFFF + + +def fromqimage(im: QImage | QPixmap) -> ImageFile.ImageFile: + """ + :param im: QImage or PIL ImageQt object + """ + buffer = QBuffer() + qt_openmode: object + if qt_version == "6": + try: + qt_openmode = getattr(QIODevice, "OpenModeFlag") + except AttributeError: + qt_openmode = getattr(QIODevice, "OpenMode") + else: + qt_openmode = QIODevice + buffer.open(getattr(qt_openmode, "ReadWrite")) + # preserve alpha channel with png + # otherwise ppm is more friendly with Image.open + if im.hasAlphaChannel(): + im.save(buffer, "png") + else: + im.save(buffer, "ppm") + + b = BytesIO() + b.write(buffer.data()) + buffer.close() + b.seek(0) + + return Image.open(b) + + +def fromqpixmap(im: QPixmap) -> ImageFile.ImageFile: + return fromqimage(im) + + +def align8to32(bytes: bytes, width: int, mode: str) -> bytes: + """ + converts each scanline of data from 8 bit to 32 bit aligned + """ + + bits_per_pixel = {"1": 1, "L": 8, "P": 8, "I;16": 16}[mode] + + # calculate bytes per line and the extra padding if needed + bits_per_line = bits_per_pixel * width + full_bytes_per_line, remaining_bits_per_line = divmod(bits_per_line, 8) + bytes_per_line = full_bytes_per_line + (1 if remaining_bits_per_line else 0) + + extra_padding = -bytes_per_line % 4 + + # already 32 bit aligned by luck + if not extra_padding: + return bytes + + new_data = [ + bytes[i * bytes_per_line : (i + 1) * bytes_per_line] + b"\x00" * extra_padding + for i in range(len(bytes) // bytes_per_line) + ] + + return b"".join(new_data) + + +def _toqclass_helper(im: Image.Image | str | QByteArray) -> dict[str, Any]: + data = None + colortable = None + exclusive_fp = False + + # handle filename, if given instead of image name + if hasattr(im, "toUtf8"): + # FIXME - is this really the best way to do this? + im = str(im.toUtf8(), "utf-8") + if is_path(im): + im = Image.open(im) + exclusive_fp = True + assert isinstance(im, Image.Image) + + qt_format = getattr(QImage, "Format") if qt_version == "6" else QImage + if im.mode == "1": + format = getattr(qt_format, "Format_Mono") + elif im.mode == "L": + format = getattr(qt_format, "Format_Indexed8") + colortable = [rgb(i, i, i) for i in range(256)] + elif im.mode == "P": + format = getattr(qt_format, "Format_Indexed8") + palette = im.getpalette() + assert palette is not None + colortable = [rgb(*palette[i : i + 3]) for i in range(0, len(palette), 3)] + elif im.mode == "RGB": + # Populate the 4th channel with 255 + im = im.convert("RGBA") + + data = im.tobytes("raw", "BGRA") + format = getattr(qt_format, "Format_RGB32") + elif im.mode == "RGBA": + data = im.tobytes("raw", "BGRA") + format = getattr(qt_format, "Format_ARGB32") + elif im.mode == "I;16": + im = im.point(lambda i: i * 256) + + format = getattr(qt_format, "Format_Grayscale16") + else: + if exclusive_fp: + im.close() + msg = f"unsupported image mode {repr(im.mode)}" + raise ValueError(msg) + + size = im.size + __data = data or align8to32(im.tobytes(), size[0], im.mode) + if exclusive_fp: + im.close() + return {"data": __data, "size": size, "format": format, "colortable": colortable} + + +if qt_is_installed: + + class ImageQt(QImage): # type: ignore[misc] + def __init__(self, im: Image.Image | str | QByteArray) -> None: + """ + An PIL image wrapper for Qt. This is a subclass of PyQt's QImage + class. + + :param im: A PIL Image object, or a file name (given either as + Python string or a PyQt string object). + """ + im_data = _toqclass_helper(im) + # must keep a reference, or Qt will crash! + # All QImage constructors that take data operate on an existing + # buffer, so this buffer has to hang on for the life of the image. + # Fixes https://github.com/python-pillow/Pillow/issues/1370 + self.__data = im_data["data"] + super().__init__( + self.__data, + im_data["size"][0], + im_data["size"][1], + im_data["format"], + ) + if im_data["colortable"]: + self.setColorTable(im_data["colortable"]) + + +def toqimage(im: Image.Image | str | QByteArray) -> ImageQt: + return ImageQt(im) + + +def toqpixmap(im: Image.Image | str | QByteArray) -> QPixmap: + qimage = toqimage(im) + pixmap = getattr(QPixmap, "fromImage")(qimage) + if qt_version == "6": + pixmap.detach() + return pixmap diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageSequence.py b/myenv/lib/python3.10/site-packages/PIL/ImageSequence.py new file mode 100644 index 0000000..a6fc340 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageSequence.py @@ -0,0 +1,86 @@ +# +# The Python Imaging Library. +# $Id$ +# +# sequence support classes +# +# history: +# 1997-02-20 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +from __future__ import annotations + +from typing import Callable + +from . import Image + + +class Iterator: + """ + This class implements an iterator object that can be used to loop + over an image sequence. + + You can use the ``[]`` operator to access elements by index. This operator + will raise an :py:exc:`IndexError` if you try to access a nonexistent + frame. + + :param im: An image object. + """ + + def __init__(self, im: Image.Image) -> None: + if not hasattr(im, "seek"): + msg = "im must have seek method" + raise AttributeError(msg) + self.im = im + self.position = getattr(self.im, "_min_frame", 0) + + def __getitem__(self, ix: int) -> Image.Image: + try: + self.im.seek(ix) + return self.im + except EOFError as e: + msg = "end of sequence" + raise IndexError(msg) from e + + def __iter__(self) -> Iterator: + return self + + def __next__(self) -> Image.Image: + try: + self.im.seek(self.position) + self.position += 1 + return self.im + except EOFError as e: + msg = "end of sequence" + raise StopIteration(msg) from e + + +def all_frames( + im: Image.Image | list[Image.Image], + func: Callable[[Image.Image], Image.Image] | None = None, +) -> list[Image.Image]: + """ + Applies a given function to all frames in an image or a list of images. + The frames are returned as a list of separate images. + + :param im: An image, or a list of images. + :param func: The function to apply to all of the image frames. + :returns: A list of images. + """ + if not isinstance(im, list): + im = [im] + + ims = [] + for imSequence in im: + current = imSequence.tell() + + ims += [im_frame.copy() for im_frame in Iterator(imSequence)] + + imSequence.seek(current) + return [func(im) for im in ims] if func else ims diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageShow.py b/myenv/lib/python3.10/site-packages/PIL/ImageShow.py new file mode 100644 index 0000000..7705608 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageShow.py @@ -0,0 +1,362 @@ +# +# The Python Imaging Library. +# $Id$ +# +# im.show() drivers +# +# History: +# 2008-04-06 fl Created +# +# Copyright (c) Secret Labs AB 2008. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import abc +import os +import shutil +import subprocess +import sys +from shlex import quote +from typing import Any + +from . import Image + +_viewers = [] + + +def register(viewer: type[Viewer] | Viewer, order: int = 1) -> None: + """ + The :py:func:`register` function is used to register additional viewers:: + + from PIL import ImageShow + ImageShow.register(MyViewer()) # MyViewer will be used as a last resort + ImageShow.register(MySecondViewer(), 0) # MySecondViewer will be prioritised + ImageShow.register(ImageShow.XVViewer(), 0) # XVViewer will be prioritised + + :param viewer: The viewer to be registered. + :param order: + Zero or a negative integer to prepend this viewer to the list, + a positive integer to append it. + """ + if isinstance(viewer, type) and issubclass(viewer, Viewer): + viewer = viewer() + if order > 0: + _viewers.append(viewer) + else: + _viewers.insert(0, viewer) + + +def show(image: Image.Image, title: str | None = None, **options: Any) -> bool: + r""" + Display a given image. + + :param image: An image object. + :param title: Optional title. Not all viewers can display the title. + :param \**options: Additional viewer options. + :returns: ``True`` if a suitable viewer was found, ``False`` otherwise. + """ + for viewer in _viewers: + if viewer.show(image, title=title, **options): + return True + return False + + +class Viewer: + """Base class for viewers.""" + + # main api + + def show(self, image: Image.Image, **options: Any) -> int: + """ + The main function for displaying an image. + Converts the given image to the target format and displays it. + """ + + if not ( + image.mode in ("1", "RGBA") + or (self.format == "PNG" and image.mode in ("I;16", "LA")) + ): + base = Image.getmodebase(image.mode) + if image.mode != base: + image = image.convert(base) + + return self.show_image(image, **options) + + # hook methods + + format: str | None = None + """The format to convert the image into.""" + options: dict[str, Any] = {} + """Additional options used to convert the image.""" + + def get_format(self, image: Image.Image) -> str | None: + """Return format name, or ``None`` to save as PGM/PPM.""" + return self.format + + def get_command(self, file: str, **options: Any) -> str: + """ + Returns the command used to display the file. + Not implemented in the base class. + """ + msg = "unavailable in base viewer" + raise NotImplementedError(msg) + + def save_image(self, image: Image.Image) -> str: + """Save to temporary file and return filename.""" + return image._dump(format=self.get_format(image), **self.options) + + def show_image(self, image: Image.Image, **options: Any) -> int: + """Display the given image.""" + return self.show_file(self.save_image(image), **options) + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + os.system(self.get_command(path, **options)) # nosec + return 1 + + +# -------------------------------------------------------------------- + + +class WindowsViewer(Viewer): + """The default viewer on Windows is the default system application for PNG files.""" + + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + def get_command(self, file: str, **options: Any) -> str: + return ( + f'start "Pillow" /WAIT "{file}" ' + "&& ping -n 4 127.0.0.1 >NUL " + f'&& del /f "{file}"' + ) + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen( + self.get_command(path, **options), + shell=True, + creationflags=getattr(subprocess, "CREATE_NO_WINDOW"), + ) # nosec + return 1 + + +if sys.platform == "win32": + register(WindowsViewer) + + +class MacViewer(Viewer): + """The default viewer on macOS using ``Preview.app``.""" + + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + def get_command(self, file: str, **options: Any) -> str: + # on darwin open returns immediately resulting in the temp + # file removal while app is opening + command = "open -a Preview.app" + command = f"({command} {quote(file)}; sleep 20; rm -f {quote(file)})&" + return command + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.call(["open", "-a", "Preview.app", path]) + + pyinstaller = getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS") + executable = (not pyinstaller and sys.executable) or shutil.which("python3") + if executable: + subprocess.Popen( + [ + executable, + "-c", + "import os, sys, time; time.sleep(20); os.remove(sys.argv[1])", + path, + ] + ) + return 1 + + +if sys.platform == "darwin": + register(MacViewer) + + +class UnixViewer(abc.ABC, Viewer): + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + @abc.abstractmethod + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + pass + + def get_command(self, file: str, **options: Any) -> str: + command = self.get_command_ex(file, **options)[0] + return f"{command} {quote(file)}" + + +class XDGViewer(UnixViewer): + """ + The freedesktop.org ``xdg-open`` command. + """ + + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + command = executable = "xdg-open" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen(["xdg-open", path]) + return 1 + + +class DisplayViewer(UnixViewer): + """ + The ImageMagick ``display`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex( + self, file: str, title: str | None = None, **options: Any + ) -> tuple[str, str]: + command = executable = "display" + if title: + command += f" -title {quote(title)}" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + args = ["display"] + title = options.get("title") + if title: + args += ["-title", title] + args.append(path) + + subprocess.Popen(args) + return 1 + + +class GmDisplayViewer(UnixViewer): + """The GraphicsMagick ``gm display`` command.""" + + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + executable = "gm" + command = "gm display" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen(["gm", "display", path]) + return 1 + + +class EogViewer(UnixViewer): + """The GNOME Image Viewer ``eog`` command.""" + + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + executable = "eog" + command = "eog -n" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen(["eog", "-n", path]) + return 1 + + +class XVViewer(UnixViewer): + """ + The X Viewer ``xv`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex( + self, file: str, title: str | None = None, **options: Any + ) -> tuple[str, str]: + # note: xv is pretty outdated. most modern systems have + # imagemagick's display command instead. + command = executable = "xv" + if title: + command += f" -name {quote(title)}" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + args = ["xv"] + title = options.get("title") + if title: + args += ["-name", title] + args.append(path) + + subprocess.Popen(args) + return 1 + + +if sys.platform not in ("win32", "darwin"): # unixoids + if shutil.which("xdg-open"): + register(XDGViewer) + if shutil.which("display"): + register(DisplayViewer) + if shutil.which("gm"): + register(GmDisplayViewer) + if shutil.which("eog"): + register(EogViewer) + if shutil.which("xv"): + register(XVViewer) + + +class IPythonViewer(Viewer): + """The viewer for IPython frontends.""" + + def show_image(self, image: Image.Image, **options: Any) -> int: + ipython_display(image) + return 1 + + +try: + from IPython.display import display as ipython_display +except ImportError: + pass +else: + register(IPythonViewer) + + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 ImageShow.py imagefile [title]") + sys.exit() + + with Image.open(sys.argv[1]) as im: + print(show(im, *sys.argv[2:])) diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageStat.py b/myenv/lib/python3.10/site-packages/PIL/ImageStat.py new file mode 100644 index 0000000..8bc5045 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageStat.py @@ -0,0 +1,160 @@ +# +# The Python Imaging Library. +# $Id$ +# +# global image statistics +# +# History: +# 1996-04-05 fl Created +# 1997-05-21 fl Added mask; added rms, var, stddev attributes +# 1997-08-05 fl Added median +# 1998-07-05 hk Fixed integer overflow error +# +# Notes: +# This class shows how to implement delayed evaluation of attributes. +# To get a certain value, simply access the corresponding attribute. +# The __getattr__ dispatcher takes care of the rest. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996-97. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import math +from functools import cached_property + +from . import Image + + +class Stat: + def __init__( + self, image_or_list: Image.Image | list[int], mask: Image.Image | None = None + ) -> None: + """ + Calculate statistics for the given image. If a mask is included, + only the regions covered by that mask are included in the + statistics. You can also pass in a previously calculated histogram. + + :param image: A PIL image, or a precalculated histogram. + + .. note:: + + For a PIL image, calculations rely on the + :py:meth:`~PIL.Image.Image.histogram` method. The pixel counts are + grouped into 256 bins, even if the image has more than 8 bits per + channel. So ``I`` and ``F`` mode images have a maximum ``mean``, + ``median`` and ``rms`` of 255, and cannot have an ``extrema`` maximum + of more than 255. + + :param mask: An optional mask. + """ + if isinstance(image_or_list, Image.Image): + self.h = image_or_list.histogram(mask) + elif isinstance(image_or_list, list): + self.h = image_or_list + else: + msg = "first argument must be image or list" # type: ignore[unreachable] + raise TypeError(msg) + self.bands = list(range(len(self.h) // 256)) + + @cached_property + def extrema(self) -> list[tuple[int, int]]: + """ + Min/max values for each band in the image. + + .. note:: + This relies on the :py:meth:`~PIL.Image.Image.histogram` method, and + simply returns the low and high bins used. This is correct for + images with 8 bits per channel, but fails for other modes such as + ``I`` or ``F``. Instead, use :py:meth:`~PIL.Image.Image.getextrema` to + return per-band extrema for the image. This is more correct and + efficient because, for non-8-bit modes, the histogram method uses + :py:meth:`~PIL.Image.Image.getextrema` to determine the bins used. + """ + + def minmax(histogram: list[int]) -> tuple[int, int]: + res_min, res_max = 255, 0 + for i in range(256): + if histogram[i]: + res_min = i + break + for i in range(255, -1, -1): + if histogram[i]: + res_max = i + break + return res_min, res_max + + return [minmax(self.h[i:]) for i in range(0, len(self.h), 256)] + + @cached_property + def count(self) -> list[int]: + """Total number of pixels for each band in the image.""" + return [sum(self.h[i : i + 256]) for i in range(0, len(self.h), 256)] + + @cached_property + def sum(self) -> list[float]: + """Sum of all pixels for each band in the image.""" + + v = [] + for i in range(0, len(self.h), 256): + layer_sum = 0.0 + for j in range(256): + layer_sum += j * self.h[i + j] + v.append(layer_sum) + return v + + @cached_property + def sum2(self) -> list[float]: + """Squared sum of all pixels for each band in the image.""" + + v = [] + for i in range(0, len(self.h), 256): + sum2 = 0.0 + for j in range(256): + sum2 += (j**2) * float(self.h[i + j]) + v.append(sum2) + return v + + @cached_property + def mean(self) -> list[float]: + """Average (arithmetic mean) pixel level for each band in the image.""" + return [self.sum[i] / self.count[i] for i in self.bands] + + @cached_property + def median(self) -> list[int]: + """Median pixel level for each band in the image.""" + + v = [] + for i in self.bands: + s = 0 + half = self.count[i] // 2 + b = i * 256 + for j in range(256): + s = s + self.h[b + j] + if s > half: + break + v.append(j) + return v + + @cached_property + def rms(self) -> list[float]: + """RMS (root-mean-square) for each band in the image.""" + return [math.sqrt(self.sum2[i] / self.count[i]) for i in self.bands] + + @cached_property + def var(self) -> list[float]: + """Variance for each band in the image.""" + return [ + (self.sum2[i] - (self.sum[i] ** 2.0) / self.count[i]) / self.count[i] + for i in self.bands + ] + + @cached_property + def stddev(self) -> list[float]: + """Standard deviation for each band in the image.""" + return [math.sqrt(self.var[i]) for i in self.bands] + + +Global = Stat # compatibility diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageTk.py b/myenv/lib/python3.10/site-packages/PIL/ImageTk.py new file mode 100644 index 0000000..3a4cb81 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageTk.py @@ -0,0 +1,266 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Tk display interface +# +# History: +# 96-04-08 fl Created +# 96-09-06 fl Added getimage method +# 96-11-01 fl Rewritten, removed image attribute and crop method +# 97-05-09 fl Use PyImagingPaste method instead of image type +# 97-05-12 fl Minor tweaks to match the IFUNC95 interface +# 97-05-17 fl Support the "pilbitmap" booster patch +# 97-06-05 fl Added file= and data= argument to image constructors +# 98-03-09 fl Added width and height methods to Image classes +# 98-07-02 fl Use default mode for "P" images without palette attribute +# 98-07-02 fl Explicitly destroy Tkinter image objects +# 99-07-24 fl Support multiple Tk interpreters (from Greg Couch) +# 99-07-26 fl Automatically hook into Tkinter (if possible) +# 99-08-15 fl Hook uses _imagingtk instead of _imaging +# +# Copyright (c) 1997-1999 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import tkinter +from io import BytesIO +from typing import Any + +from . import Image, ImageFile + +TYPE_CHECKING = False +if TYPE_CHECKING: + from ._typing import CapsuleType + +# -------------------------------------------------------------------- +# Check for Tkinter interface hooks + + +def _get_image_from_kw(kw: dict[str, Any]) -> ImageFile.ImageFile | None: + source = None + if "file" in kw: + source = kw.pop("file") + elif "data" in kw: + source = BytesIO(kw.pop("data")) + if not source: + return None + return Image.open(source) + + +def _pyimagingtkcall( + command: str, photo: PhotoImage | tkinter.PhotoImage, ptr: CapsuleType +) -> None: + tk = photo.tk + try: + tk.call(command, photo, repr(ptr)) + except tkinter.TclError: + # activate Tkinter hook + # may raise an error if it cannot attach to Tkinter + from . import _imagingtk + + _imagingtk.tkinit(tk.interpaddr()) + tk.call(command, photo, repr(ptr)) + + +# -------------------------------------------------------------------- +# PhotoImage + + +class PhotoImage: + """ + A Tkinter-compatible photo image. This can be used + everywhere Tkinter expects an image object. If the image is an RGBA + image, pixels having alpha 0 are treated as transparent. + + The constructor takes either a PIL image, or a mode and a size. + Alternatively, you can use the ``file`` or ``data`` options to initialize + the photo image object. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. + :param size: If the first argument is a mode string, this defines the size + of the image. + :keyword file: A filename to load the image from (using + ``Image.open(file)``). + :keyword data: An 8-bit string containing image data (as loaded from an + image file). + """ + + def __init__( + self, + image: Image.Image | str | None = None, + size: tuple[int, int] | None = None, + **kw: Any, + ) -> None: + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if image is None: + msg = "Image is required" + raise ValueError(msg) + elif isinstance(image, str): + mode = image + image = None + + if size is None: + msg = "If first argument is mode, size is required" + raise ValueError(msg) + else: + # got an image instead of a mode + mode = image.mode + if mode == "P": + # palette mapped data + image.apply_transparency() + image.load() + mode = image.palette.mode if image.palette else "RGB" + size = image.size + kw["width"], kw["height"] = size + + if mode not in ["1", "L", "RGB", "RGBA"]: + mode = Image.getmodebase(mode) + + self.__mode = mode + self.__size = size + self.__photo = tkinter.PhotoImage(**kw) + self.tk = self.__photo.tk + if image: + self.paste(image) + + def __del__(self) -> None: + try: + name = self.__photo.name + except AttributeError: + return + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def __str__(self) -> str: + """ + Get the Tkinter photo image identifier. This method is automatically + called by Tkinter whenever a PhotoImage object is passed to a Tkinter + method. + + :return: A Tkinter photo image identifier (a string). + """ + return str(self.__photo) + + def width(self) -> int: + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self) -> int: + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def paste(self, im: Image.Image) -> None: + """ + Paste a PIL image into the photo image. Note that this can + be very slow if the photo image is displayed. + + :param im: A PIL image. The size must match the target region. If the + mode does not match, the image is converted to the mode of + the bitmap image. + """ + # convert to blittable + ptr = im.getim() + image = im.im + if not image.isblock() or im.mode != self.__mode: + block = Image.core.new_block(self.__mode, im.size) + image.convert2(block, image) # convert directly between buffers + ptr = block.ptr + + _pyimagingtkcall("PyImagingPhoto", self.__photo, ptr) + + +# -------------------------------------------------------------------- +# BitmapImage + + +class BitmapImage: + """ + A Tkinter-compatible bitmap image. This can be used everywhere Tkinter + expects an image object. + + The given image must have mode "1". Pixels having value 0 are treated as + transparent. Options, if any, are passed on to Tkinter. The most commonly + used option is ``foreground``, which is used to specify the color for the + non-transparent parts. See the Tkinter documentation for information on + how to specify colours. + + :param image: A PIL image. + """ + + def __init__(self, image: Image.Image | None = None, **kw: Any) -> None: + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if image is None: + msg = "Image is required" + raise ValueError(msg) + self.__mode = image.mode + self.__size = image.size + + self.__photo = tkinter.BitmapImage(data=image.tobitmap(), **kw) + + def __del__(self) -> None: + try: + name = self.__photo.name + except AttributeError: + return + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def width(self) -> int: + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self) -> int: + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def __str__(self) -> str: + """ + Get the Tkinter bitmap image identifier. This method is automatically + called by Tkinter whenever a BitmapImage object is passed to a Tkinter + method. + + :return: A Tkinter bitmap image identifier (a string). + """ + return str(self.__photo) + + +def getimage(photo: PhotoImage) -> Image.Image: + """Copies the contents of a PhotoImage to a PIL image memory.""" + im = Image.new("RGBA", (photo.width(), photo.height())) + + _pyimagingtkcall("PyImagingPhotoGet", photo, im.getim()) + + return im diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageTransform.py b/myenv/lib/python3.10/site-packages/PIL/ImageTransform.py new file mode 100644 index 0000000..fb144ff --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageTransform.py @@ -0,0 +1,136 @@ +# +# The Python Imaging Library. +# $Id$ +# +# transform wrappers +# +# History: +# 2002-04-08 fl Created +# +# Copyright (c) 2002 by Secret Labs AB +# Copyright (c) 2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from collections.abc import Sequence +from typing import Any + +from . import Image + + +class Transform(Image.ImageTransformHandler): + """Base class for other transforms defined in :py:mod:`~PIL.ImageTransform`.""" + + method: Image.Transform + + def __init__(self, data: Sequence[Any]) -> None: + self.data = data + + def getdata(self) -> tuple[Image.Transform, Sequence[int]]: + return self.method, self.data + + def transform( + self, + size: tuple[int, int], + image: Image.Image, + **options: Any, + ) -> Image.Image: + """Perform the transform. Called from :py:meth:`.Image.transform`.""" + # can be overridden + method, data = self.getdata() + return image.transform(size, method, data, **options) + + +class AffineTransform(Transform): + """ + Define an affine image transform. + + This function takes a 6-tuple (a, b, c, d, e, f) which contain the first + two rows from the inverse of an affine transform matrix. For each pixel + (x, y) in the output image, the new value is taken from a position (a x + + b y + c, d x + e y + f) in the input image, rounded to nearest pixel. + + This function can be used to scale, translate, rotate, and shear the + original image. + + See :py:meth:`.Image.transform` + + :param matrix: A 6-tuple (a, b, c, d, e, f) containing the first two rows + from the inverse of an affine transform matrix. + """ + + method = Image.Transform.AFFINE + + +class PerspectiveTransform(Transform): + """ + Define a perspective image transform. + + This function takes an 8-tuple (a, b, c, d, e, f, g, h). For each pixel + (x, y) in the output image, the new value is taken from a position + ((a x + b y + c) / (g x + h y + 1), (d x + e y + f) / (g x + h y + 1)) in + the input image, rounded to nearest pixel. + + This function can be used to scale, translate, rotate, and shear the + original image. + + See :py:meth:`.Image.transform` + + :param matrix: An 8-tuple (a, b, c, d, e, f, g, h). + """ + + method = Image.Transform.PERSPECTIVE + + +class ExtentTransform(Transform): + """ + Define a transform to extract a subregion from an image. + + Maps a rectangle (defined by two corners) from the image to a rectangle of + the given size. The resulting image will contain data sampled from between + the corners, such that (x0, y0) in the input image will end up at (0,0) in + the output image, and (x1, y1) at size. + + This method can be used to crop, stretch, shrink, or mirror an arbitrary + rectangle in the current image. It is slightly slower than crop, but about + as fast as a corresponding resize operation. + + See :py:meth:`.Image.transform` + + :param bbox: A 4-tuple (x0, y0, x1, y1) which specifies two points in the + input image's coordinate system. See :ref:`coordinate-system`. + """ + + method = Image.Transform.EXTENT + + +class QuadTransform(Transform): + """ + Define a quad image transform. + + Maps a quadrilateral (a region defined by four corners) from the image to a + rectangle of the given size. + + See :py:meth:`.Image.transform` + + :param xy: An 8-tuple (x0, y0, x1, y1, x2, y2, x3, y3) which contain the + upper left, lower left, lower right, and upper right corner of the + source quadrilateral. + """ + + method = Image.Transform.QUAD + + +class MeshTransform(Transform): + """ + Define a mesh image transform. A mesh transform consists of one or more + individual quad transforms. + + See :py:meth:`.Image.transform` + + :param data: A list of (bbox, quad) tuples. + """ + + method = Image.Transform.MESH diff --git a/myenv/lib/python3.10/site-packages/PIL/ImageWin.py b/myenv/lib/python3.10/site-packages/PIL/ImageWin.py new file mode 100644 index 0000000..98c28f2 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImageWin.py @@ -0,0 +1,247 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Windows DIB display interface +# +# History: +# 1996-05-20 fl Created +# 1996-09-20 fl Fixed subregion exposure +# 1997-09-21 fl Added draw primitive (for tzPrint) +# 2003-05-21 fl Added experimental Window/ImageWindow classes +# 2003-09-05 fl Added fromstring/tostring methods +# +# Copyright (c) Secret Labs AB 1997-2003. +# Copyright (c) Fredrik Lundh 1996-2003. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image + + +class HDC: + """ + Wraps an HDC integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods. + """ + + def __init__(self, dc: int) -> None: + self.dc = dc + + def __int__(self) -> int: + return self.dc + + +class HWND: + """ + Wraps an HWND integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods, instead of a DC. + """ + + def __init__(self, wnd: int) -> None: + self.wnd = wnd + + def __int__(self) -> int: + return self.wnd + + +class Dib: + """ + A Windows bitmap with the given mode and size. The mode can be one of "1", + "L", "P", or "RGB". + + If the display requires a palette, this constructor creates a suitable + palette and associates it with the image. For an "L" image, 128 graylevels + are allocated. For an "RGB" image, a 6x6x6 colour cube is used, together + with 20 graylevels. + + To make sure that palettes work properly under Windows, you must call the + ``palette`` method upon certain events from Windows. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. The mode can be one of "1", + "L", "P", or "RGB". + :param size: If the first argument is a mode string, this + defines the size of the image. + """ + + def __init__( + self, image: Image.Image | str, size: tuple[int, int] | None = None + ) -> None: + if isinstance(image, str): + mode = image + image = "" + if size is None: + msg = "If first argument is mode, size is required" + raise ValueError(msg) + else: + mode = image.mode + size = image.size + if mode not in ["1", "L", "P", "RGB"]: + mode = Image.getmodebase(mode) + self.image = Image.core.display(mode, size) + self.mode = mode + self.size = size + if image: + assert not isinstance(image, str) + self.paste(image) + + def expose(self, handle: int | HDC | HWND) -> None: + """ + Copy the bitmap contents to a device context. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. In PythonWin, you can use + ``CDC.GetHandleAttrib()`` to get a suitable handle. + """ + handle_int = int(handle) + if isinstance(handle, HWND): + dc = self.image.getdc(handle_int) + try: + self.image.expose(dc) + finally: + self.image.releasedc(handle_int, dc) + else: + self.image.expose(handle_int) + + def draw( + self, + handle: int | HDC | HWND, + dst: tuple[int, int, int, int], + src: tuple[int, int, int, int] | None = None, + ) -> None: + """ + Same as expose, but allows you to specify where to draw the image, and + what part of it to draw. + + The destination and source areas are given as 4-tuple rectangles. If + the source is omitted, the entire image is copied. If the source and + the destination have different sizes, the image is resized as + necessary. + """ + if src is None: + src = (0, 0) + self.size + handle_int = int(handle) + if isinstance(handle, HWND): + dc = self.image.getdc(handle_int) + try: + self.image.draw(dc, dst, src) + finally: + self.image.releasedc(handle_int, dc) + else: + self.image.draw(handle_int, dst, src) + + def query_palette(self, handle: int | HDC | HWND) -> int: + """ + Installs the palette associated with the image in the given device + context. + + This method should be called upon **QUERYNEWPALETTE** and + **PALETTECHANGED** events from Windows. If this method returns a + non-zero value, one or more display palette entries were changed, and + the image should be redrawn. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. + :return: The number of entries that were changed (if one or more entries, + this indicates that the image should be redrawn). + """ + handle_int = int(handle) + if isinstance(handle, HWND): + handle = self.image.getdc(handle_int) + try: + result = self.image.query_palette(handle) + finally: + self.image.releasedc(handle, handle) + else: + result = self.image.query_palette(handle_int) + return result + + def paste( + self, im: Image.Image, box: tuple[int, int, int, int] | None = None + ) -> None: + """ + Paste a PIL image into the bitmap image. + + :param im: A PIL image. The size must match the target region. + If the mode does not match, the image is converted to the + mode of the bitmap image. + :param box: A 4-tuple defining the left, upper, right, and + lower pixel coordinate. See :ref:`coordinate-system`. If + None is given instead of a tuple, all of the image is + assumed. + """ + im.load() + if self.mode != im.mode: + im = im.convert(self.mode) + if box: + self.image.paste(im.im, box) + else: + self.image.paste(im.im) + + def frombytes(self, buffer: bytes) -> None: + """ + Load display memory contents from byte data. + + :param buffer: A buffer containing display data (usually + data returned from :py:func:`~PIL.ImageWin.Dib.tobytes`) + """ + self.image.frombytes(buffer) + + def tobytes(self) -> bytes: + """ + Copy display memory contents to bytes object. + + :return: A bytes object containing display data. + """ + return self.image.tobytes() + + +class Window: + """Create a Window with the given title size.""" + + def __init__( + self, title: str = "PIL", width: int | None = None, height: int | None = None + ) -> None: + self.hwnd = Image.core.createwindow( + title, self.__dispatcher, width or 0, height or 0 + ) + + def __dispatcher(self, action: str, *args: int) -> None: + getattr(self, f"ui_handle_{action}")(*args) + + def ui_handle_clear(self, dc: int, x0: int, y0: int, x1: int, y1: int) -> None: + pass + + def ui_handle_damage(self, x0: int, y0: int, x1: int, y1: int) -> None: + pass + + def ui_handle_destroy(self) -> None: + pass + + def ui_handle_repair(self, dc: int, x0: int, y0: int, x1: int, y1: int) -> None: + pass + + def ui_handle_resize(self, width: int, height: int) -> None: + pass + + def mainloop(self) -> None: + Image.core.eventloop() + + +class ImageWindow(Window): + """Create an image window which displays the given image.""" + + def __init__(self, image: Image.Image | Dib, title: str = "PIL") -> None: + if not isinstance(image, Dib): + image = Dib(image) + self.image = image + width, height = image.size + super().__init__(title, width=width, height=height) + + def ui_handle_repair(self, dc: int, x0: int, y0: int, x1: int, y1: int) -> None: + self.image.draw(dc, (x0, y0, x1, y1)) diff --git a/myenv/lib/python3.10/site-packages/PIL/ImtImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/ImtImagePlugin.py new file mode 100644 index 0000000..c4eccee --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/ImtImagePlugin.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IM Tools support for PIL +# +# history: +# 1996-05-27 fl Created (read 8-bit images only) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.2) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re + +from . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +field = re.compile(rb"([a-z]*) ([^ \r\n]*)") + + +## +# Image plugin for IM Tools images. + + +class ImtImageFile(ImageFile.ImageFile): + format = "IMT" + format_description = "IM Tools" + + def _open(self) -> None: + # Quick rejection: if there's not a LF among the first + # 100 bytes, this is (probably) not a text header. + + assert self.fp is not None + + buffer = self.fp.read(100) + if b"\n" not in buffer: + msg = "not an IM file" + raise SyntaxError(msg) + + xsize = ysize = 0 + + while True: + if buffer: + s = buffer[:1] + buffer = buffer[1:] + else: + s = self.fp.read(1) + if not s: + break + + if s == b"\x0c": + # image data begins + self.tile = [ + ImageFile._Tile( + "raw", + (0, 0) + self.size, + self.fp.tell() - len(buffer), + self.mode, + ) + ] + + break + + else: + # read key/value pair + if b"\n" not in buffer: + buffer += self.fp.read(100) + lines = buffer.split(b"\n") + s += lines.pop(0) + buffer = b"\n".join(lines) + if len(s) == 1 or len(s) > 100: + break + if s[0] == ord(b"*"): + continue # comment + + m = field.match(s) + if not m: + break + k, v = m.group(1, 2) + if k == b"width": + xsize = int(v) + self._size = xsize, ysize + elif k == b"height": + ysize = int(v) + self._size = xsize, ysize + elif k == b"pixel" and v == b"n8": + self._mode = "L" + + +# +# -------------------------------------------------------------------- + +Image.register_open(ImtImageFile.format, ImtImageFile) + +# +# no extension registered (".im" is simply too common) diff --git a/myenv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py new file mode 100644 index 0000000..fc024d6 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py @@ -0,0 +1,250 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IPTC/NAA file handling +# +# history: +# 1995-10-01 fl Created +# 1998-03-09 fl Cleaned up and added to PIL +# 2002-06-18 fl Added getiptcinfo helper +# +# Copyright (c) Secret Labs AB 1997-2002. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from collections.abc import Sequence +from io import BytesIO +from typing import cast + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._deprecate import deprecate + +COMPRESSION = {1: "raw", 5: "jpeg"} + + +def __getattr__(name: str) -> bytes: + if name == "PAD": + deprecate("IptcImagePlugin.PAD", 12) + return b"\0\0\0\0" + msg = f"module '{__name__}' has no attribute '{name}'" + raise AttributeError(msg) + + +# +# Helpers + + +def _i(c: bytes) -> int: + return i32((b"\0\0\0\0" + c)[-4:]) + + +def _i8(c: int | bytes) -> int: + return c if isinstance(c, int) else c[0] + + +def i(c: bytes) -> int: + """.. deprecated:: 10.2.0""" + deprecate("IptcImagePlugin.i", 12) + return _i(c) + + +def dump(c: Sequence[int | bytes]) -> None: + """.. deprecated:: 10.2.0""" + deprecate("IptcImagePlugin.dump", 12) + for i in c: + print(f"{_i8(i):02x}", end=" ") + print() + + +## +# Image plugin for IPTC/NAA datastreams. To read IPTC/NAA fields +# from TIFF and JPEG files, use the getiptcinfo function. + + +class IptcImageFile(ImageFile.ImageFile): + format = "IPTC" + format_description = "IPTC/NAA" + + def getint(self, key: tuple[int, int]) -> int: + return _i(self.info[key]) + + def field(self) -> tuple[tuple[int, int] | None, int]: + # + # get a IPTC field header + s = self.fp.read(5) + if not s.strip(b"\x00"): + return None, 0 + + tag = s[1], s[2] + + # syntax + if s[0] != 0x1C or tag[0] not in [1, 2, 3, 4, 5, 6, 7, 8, 9, 240]: + msg = "invalid IPTC/NAA file" + raise SyntaxError(msg) + + # field size + size = s[3] + if size > 132: + msg = "illegal field length in IPTC/NAA file" + raise OSError(msg) + elif size == 128: + size = 0 + elif size > 128: + size = _i(self.fp.read(size - 128)) + else: + size = i16(s, 3) + + return tag, size + + def _open(self) -> None: + # load descriptive fields + while True: + offset = self.fp.tell() + tag, size = self.field() + if not tag or tag == (8, 10): + break + if size: + tagdata = self.fp.read(size) + else: + tagdata = None + if tag in self.info: + if isinstance(self.info[tag], list): + self.info[tag].append(tagdata) + else: + self.info[tag] = [self.info[tag], tagdata] + else: + self.info[tag] = tagdata + + # mode + layers = self.info[(3, 60)][0] + component = self.info[(3, 60)][1] + if (3, 65) in self.info: + id = self.info[(3, 65)][0] - 1 + else: + id = 0 + if layers == 1 and not component: + self._mode = "L" + elif layers == 3 and component: + self._mode = "RGB"[id] + elif layers == 4 and component: + self._mode = "CMYK"[id] + + # size + self._size = self.getint((3, 20)), self.getint((3, 30)) + + # compression + try: + compression = COMPRESSION[self.getint((3, 120))] + except KeyError as e: + msg = "Unknown IPTC image compression" + raise OSError(msg) from e + + # tile + if tag == (8, 10): + self.tile = [ + ImageFile._Tile("iptc", (0, 0) + self.size, offset, compression) + ] + + def load(self) -> Image.core.PixelAccess | None: + if len(self.tile) != 1 or self.tile[0][0] != "iptc": + return ImageFile.ImageFile.load(self) + + offset, compression = self.tile[0][2:] + + self.fp.seek(offset) + + # Copy image data to temporary file + o = BytesIO() + if compression == "raw": + # To simplify access to the extracted file, + # prepend a PPM header + o.write(b"P5\n%d %d\n255\n" % self.size) + while True: + type, size = self.field() + if type != (8, 10): + break + while size > 0: + s = self.fp.read(min(size, 8192)) + if not s: + break + o.write(s) + size -= len(s) + + with Image.open(o) as _im: + _im.load() + self.im = _im.im + self.tile = [] + return Image.Image.load(self) + + +Image.register_open(IptcImageFile.format, IptcImageFile) + +Image.register_extension(IptcImageFile.format, ".iim") + + +def getiptcinfo( + im: ImageFile.ImageFile, +) -> dict[tuple[int, int], bytes | list[bytes]] | None: + """ + Get IPTC information from TIFF, JPEG, or IPTC file. + + :param im: An image containing IPTC data. + :returns: A dictionary containing IPTC information, or None if + no IPTC information block was found. + """ + from . import JpegImagePlugin, TiffImagePlugin + + data = None + + info: dict[tuple[int, int], bytes | list[bytes]] = {} + if isinstance(im, IptcImageFile): + # return info dictionary right away + for k, v in im.info.items(): + if isinstance(k, tuple): + info[k] = v + return info + + elif isinstance(im, JpegImagePlugin.JpegImageFile): + # extract the IPTC/NAA resource + photoshop = im.info.get("photoshop") + if photoshop: + data = photoshop.get(0x0404) + + elif isinstance(im, TiffImagePlugin.TiffImageFile): + # get raw data from the IPTC/NAA tag (PhotoShop tags the data + # as 4-byte integers, so we cannot use the get method...) + try: + data = im.tag_v2._tagdata[TiffImagePlugin.IPTC_NAA_CHUNK] + except KeyError: + pass + + if data is None: + return None # no properties + + # create an IptcImagePlugin object without initializing it + class FakeImage: + pass + + fake_im = FakeImage() + fake_im.__class__ = IptcImageFile # type: ignore[assignment] + iptc_im = cast(IptcImageFile, fake_im) + + # parse the IPTC information chunk + iptc_im.info = {} + iptc_im.fp = BytesIO(data) + + try: + iptc_im._open() + except (IndexError, KeyError): + pass # expected failure + + for k, v in iptc_im.info.items(): + if isinstance(k, tuple): + info[k] = v + return info diff --git a/myenv/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py new file mode 100644 index 0000000..e0f4eca --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py @@ -0,0 +1,442 @@ +# +# The Python Imaging Library +# $Id$ +# +# JPEG2000 file handling +# +# History: +# 2014-03-12 ajh Created +# 2021-06-30 rogermb Extract dpi information from the 'resc' header box +# +# Copyright (c) 2014 Coriolis Systems Limited +# Copyright (c) 2014 Alastair Houghton +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import struct +from collections.abc import Callable +from typing import IO, cast + +from . import Image, ImageFile, ImagePalette, _binary + + +class BoxReader: + """ + A small helper class to read fields stored in JPEG2000 header boxes + and to easily step into and read sub-boxes. + """ + + def __init__(self, fp: IO[bytes], length: int = -1) -> None: + self.fp = fp + self.has_length = length >= 0 + self.length = length + self.remaining_in_box = -1 + + def _can_read(self, num_bytes: int) -> bool: + if self.has_length and self.fp.tell() + num_bytes > self.length: + # Outside box: ensure we don't read past the known file length + return False + if self.remaining_in_box >= 0: + # Inside box contents: ensure read does not go past box boundaries + return num_bytes <= self.remaining_in_box + else: + return True # No length known, just read + + def _read_bytes(self, num_bytes: int) -> bytes: + if not self._can_read(num_bytes): + msg = "Not enough data in header" + raise SyntaxError(msg) + + data = self.fp.read(num_bytes) + if len(data) < num_bytes: + msg = f"Expected to read {num_bytes} bytes but only got {len(data)}." + raise OSError(msg) + + if self.remaining_in_box > 0: + self.remaining_in_box -= num_bytes + return data + + def read_fields(self, field_format: str) -> tuple[int | bytes, ...]: + size = struct.calcsize(field_format) + data = self._read_bytes(size) + return struct.unpack(field_format, data) + + def read_boxes(self) -> BoxReader: + size = self.remaining_in_box + data = self._read_bytes(size) + return BoxReader(io.BytesIO(data), size) + + def has_next_box(self) -> bool: + if self.has_length: + return self.fp.tell() + self.remaining_in_box < self.length + else: + return True + + def next_box_type(self) -> bytes: + # Skip the rest of the box if it has not been read + if self.remaining_in_box > 0: + self.fp.seek(self.remaining_in_box, os.SEEK_CUR) + self.remaining_in_box = -1 + + # Read the length and type of the next box + lbox, tbox = cast(tuple[int, bytes], self.read_fields(">I4s")) + if lbox == 1: + lbox = cast(int, self.read_fields(">Q")[0]) + hlen = 16 + else: + hlen = 8 + + if lbox < hlen or not self._can_read(lbox - hlen): + msg = "Invalid header length" + raise SyntaxError(msg) + + self.remaining_in_box = lbox - hlen + return tbox + + +def _parse_codestream(fp: IO[bytes]) -> tuple[tuple[int, int], str]: + """Parse the JPEG 2000 codestream to extract the size and component + count from the SIZ marker segment, returning a PIL (size, mode) tuple.""" + + hdr = fp.read(2) + lsiz = _binary.i16be(hdr) + siz = hdr + fp.read(lsiz - 2) + lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, _, _, _, _, csiz = struct.unpack_from( + ">HHIIIIIIIIH", siz + ) + + size = (xsiz - xosiz, ysiz - yosiz) + if csiz == 1: + ssiz = struct.unpack_from(">B", siz, 38) + if (ssiz[0] & 0x7F) + 1 > 8: + mode = "I;16" + else: + mode = "L" + elif csiz == 2: + mode = "LA" + elif csiz == 3: + mode = "RGB" + elif csiz == 4: + mode = "RGBA" + else: + msg = "unable to determine J2K image mode" + raise SyntaxError(msg) + + return size, mode + + +def _res_to_dpi(num: int, denom: int, exp: int) -> float | None: + """Convert JPEG2000's (numerator, denominator, exponent-base-10) resolution, + calculated as (num / denom) * 10^exp and stored in dots per meter, + to floating-point dots per inch.""" + if denom == 0: + return None + return (254 * num * (10**exp)) / (10000 * denom) + + +def _parse_jp2_header( + fp: IO[bytes], +) -> tuple[ + tuple[int, int], + str, + str | None, + tuple[float, float] | None, + ImagePalette.ImagePalette | None, +]: + """Parse the JP2 header box to extract size, component count, + color space information, and optionally DPI information, + returning a (size, mode, mimetype, dpi) tuple.""" + + # Find the JP2 header box + reader = BoxReader(fp) + header = None + mimetype = None + while reader.has_next_box(): + tbox = reader.next_box_type() + + if tbox == b"jp2h": + header = reader.read_boxes() + break + elif tbox == b"ftyp": + if reader.read_fields(">4s")[0] == b"jpx ": + mimetype = "image/jpx" + assert header is not None + + size = None + mode = None + bpc = None + nc = None + dpi = None # 2-tuple of DPI info, or None + palette = None + + while header.has_next_box(): + tbox = header.next_box_type() + + if tbox == b"ihdr": + height, width, nc, bpc = header.read_fields(">IIHB") + assert isinstance(height, int) + assert isinstance(width, int) + assert isinstance(bpc, int) + size = (width, height) + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 2: + mode = "LA" + elif nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + elif tbox == b"colr" and nc == 4: + meth, _, _, enumcs = header.read_fields(">BBBI") + if meth == 1 and enumcs == 12: + mode = "CMYK" + elif tbox == b"pclr" and mode in ("L", "LA"): + ne, npc = header.read_fields(">HB") + assert isinstance(ne, int) + assert isinstance(npc, int) + max_bitdepth = 0 + for bitdepth in header.read_fields(">" + ("B" * npc)): + assert isinstance(bitdepth, int) + if bitdepth > max_bitdepth: + max_bitdepth = bitdepth + if max_bitdepth <= 8: + palette = ImagePalette.ImagePalette("RGBA" if npc == 4 else "RGB") + for i in range(ne): + color: list[int] = [] + for value in header.read_fields(">" + ("B" * npc)): + assert isinstance(value, int) + color.append(value) + palette.getcolor(tuple(color)) + mode = "P" if mode == "L" else "PA" + elif tbox == b"res ": + res = header.read_boxes() + while res.has_next_box(): + tres = res.next_box_type() + if tres == b"resc": + vrcn, vrcd, hrcn, hrcd, vrce, hrce = res.read_fields(">HHHHBB") + assert isinstance(vrcn, int) + assert isinstance(vrcd, int) + assert isinstance(hrcn, int) + assert isinstance(hrcd, int) + assert isinstance(vrce, int) + assert isinstance(hrce, int) + hres = _res_to_dpi(hrcn, hrcd, hrce) + vres = _res_to_dpi(vrcn, vrcd, vrce) + if hres is not None and vres is not None: + dpi = (hres, vres) + break + + if size is None or mode is None: + msg = "Malformed JP2 header" + raise SyntaxError(msg) + + return size, mode, mimetype, dpi, palette + + +## +# Image plugin for JPEG2000 images. + + +class Jpeg2KImageFile(ImageFile.ImageFile): + format = "JPEG2000" + format_description = "JPEG 2000 (ISO 15444)" + + def _open(self) -> None: + sig = self.fp.read(4) + 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) + + if sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a": + self.codec = "jp2" + header = _parse_jp2_header(self.fp) + self._size, self._mode, self.custom_mimetype, dpi, self.palette = header + 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" + raise SyntaxError(msg) + + self._reduce = 0 + self.layers = 0 + + fd = -1 + length = -1 + + try: + fd = self.fp.fileno() + length = os.fstat(fd).st_size + except Exception: + fd = -1 + try: + pos = self.fp.tell() + self.fp.seek(0, io.SEEK_END) + length = self.fp.tell() + self.fp.seek(pos) + except Exception: + length = -1 + + self.tile = [ + ImageFile._Tile( + "jpeg2k", + (0, 0) + self.size, + 0, + (self.codec, self._reduce, self.layers, fd, length), + ) + ] + + def _parse_comment(self) -> None: + while True: + marker = self.fp.read(2) + if not marker: + break + typ = marker[1] + if typ in (0x90, 0xD9): + # Start of tile or end of codestream + break + hdr = self.fp.read(2) + length = _binary.i16be(hdr) + if typ == 0x64: + # Comment + self.info["comment"] = self.fp.read(length - 2)[2:] + break + else: + self.fp.seek(length - 2, os.SEEK_CUR) + + @property # type: ignore[override] + def reduce( + self, + ) -> ( + Callable[[int | tuple[int, int], tuple[int, int, int, int] | None], Image.Image] + | int + ): + # https://github.com/python-pillow/Pillow/issues/4343 found that the + # new Image 'reduce' method was shadowed by this plugin's 'reduce' + # property. This attempts to allow for both scenarios + return self._reduce or super().reduce + + @reduce.setter + def reduce(self, value: int) -> None: + self._reduce = value + + def load(self) -> Image.core.PixelAccess | None: + if self.tile and self._reduce: + power = 1 << self._reduce + adjust = power >> 1 + self._size = ( + int((self.size[0] + adjust) / power), + int((self.size[1] + adjust) / power), + ) + + # Update the reduce and layers settings + t = self.tile[0] + assert isinstance(t[3], tuple) + t3 = (t[3][0], self._reduce, self.layers, t[3][3], t[3][4]) + self.tile = [ImageFile._Tile(t[0], (0, 0) + self.size, t[2], t3)] + + return ImageFile.ImageFile.load(self) + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith( + (b"\xff\x4f\xff\x51", b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a") + ) + + +# ------------------------------------------------------------ +# Save support + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # Get the keyword arguments + info = im.encoderinfo + + if isinstance(filename, str): + filename = filename.encode() + if filename.endswith(b".j2k") or info.get("no_jp2", False): + kind = "j2k" + else: + kind = "jp2" + + offset = info.get("offset", None) + tile_offset = info.get("tile_offset", None) + tile_size = info.get("tile_size", None) + quality_mode = info.get("quality_mode", "rates") + quality_layers = info.get("quality_layers", None) + if quality_layers is not None and not ( + isinstance(quality_layers, (list, tuple)) + and all( + isinstance(quality_layer, (int, float)) for quality_layer in quality_layers + ) + ): + msg = "quality_layers must be a sequence of numbers" + raise ValueError(msg) + + num_resolutions = info.get("num_resolutions", 0) + cblk_size = info.get("codeblock_size", None) + precinct_size = info.get("precinct_size", None) + irreversible = info.get("irreversible", False) + progression = info.get("progression", "LRCP") + cinema_mode = info.get("cinema_mode", "no") + mct = info.get("mct", 0) + signed = info.get("signed", False) + comment = info.get("comment") + if isinstance(comment, str): + comment = comment.encode() + plt = info.get("plt", False) + + fd = -1 + if hasattr(fp, "fileno"): + try: + fd = fp.fileno() + except Exception: + fd = -1 + + im.encoderconfig = ( + offset, + tile_offset, + tile_size, + quality_mode, + quality_layers, + num_resolutions, + cblk_size, + precinct_size, + irreversible, + progression, + cinema_mode, + mct, + signed, + fd, + comment, + plt, + ) + + ImageFile._save(im, fp, [ImageFile._Tile("jpeg2k", (0, 0) + im.size, 0, kind)]) + + +# ------------------------------------------------------------ +# Registry stuff + + +Image.register_open(Jpeg2KImageFile.format, Jpeg2KImageFile, _accept) +Image.register_save(Jpeg2KImageFile.format, _save) + +Image.register_extensions( + Jpeg2KImageFile.format, [".jp2", ".j2k", ".jpc", ".jpf", ".jpx", ".j2c"] +) + +Image.register_mime(Jpeg2KImageFile.format, "image/jp2") diff --git a/myenv/lib/python3.10/site-packages/PIL/JpegImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/JpegImagePlugin.py new file mode 100644 index 0000000..defe9f7 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/JpegImagePlugin.py @@ -0,0 +1,902 @@ +# +# The Python Imaging Library. +# $Id$ +# +# JPEG (JFIF) file handling +# +# See "Digital Compression and Coding of Continuous-Tone Still Images, +# Part 1, Requirements and Guidelines" (CCITT T.81 / ISO 10918-1) +# +# History: +# 1995-09-09 fl Created +# 1995-09-13 fl Added full parser +# 1996-03-25 fl Added hack to use the IJG command line utilities +# 1996-05-05 fl Workaround Photoshop 2.5 CMYK polarity bug +# 1996-05-28 fl Added draft support, JFIF version (0.1) +# 1996-12-30 fl Added encoder options, added progression property (0.2) +# 1997-08-27 fl Save mode 1 images as BW (0.3) +# 1998-07-12 fl Added YCbCr to draft and save methods (0.4) +# 1998-10-19 fl Don't hang on files using 16-bit DQT's (0.4.1) +# 2001-04-16 fl Extract DPI settings from JFIF files (0.4.2) +# 2002-07-01 fl Skip pad bytes before markers; identify Exif files (0.4.3) +# 2003-04-25 fl Added experimental EXIF decoder (0.5) +# 2003-06-06 fl Added experimental EXIF GPSinfo decoder +# 2003-09-13 fl Extract COM markers +# 2009-09-06 fl Added icc_profile support (from Florian Hoech) +# 2009-03-06 fl Changed CMYK handling; always use Adobe polarity (0.6) +# 2009-03-08 fl Added subsampling support (from Justin Huff). +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import array +import io +import math +import os +import struct +import subprocess +import sys +import tempfile +import warnings +from typing import IO, Any + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._binary import o16be as o16 +from ._deprecate import deprecate +from .JpegPresets import presets + +TYPE_CHECKING = False +if TYPE_CHECKING: + from .MpoImagePlugin import MpoImageFile + +# +# Parser + + +def Skip(self: JpegImageFile, marker: int) -> None: + n = i16(self.fp.read(2)) - 2 + ImageFile._safe_read(self.fp, n) + + +def APP(self: JpegImageFile, marker: int) -> None: + # + # Application marker. Store these in the APP dictionary. + # Also look for well-known application markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + app = f"APP{marker & 15}" + + self.app[app] = s # compatibility + self.applist.append((app, s)) + + if marker == 0xFFE0 and s.startswith(b"JFIF"): + # extract JFIF information + self.info["jfif"] = version = i16(s, 5) # version + self.info["jfif_version"] = divmod(version, 256) + # extract JFIF properties + try: + jfif_unit = s[7] + jfif_density = i16(s, 8), i16(s, 10) + except Exception: + pass + 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.startswith(b"Exif\0\0"): + # extract EXIF information + if "exif" in self.info: + self.info["exif"] += s[6:] + else: + self.info["exif"] = s + self._exif_offset = self.fp.tell() - n + 6 + elif marker == 0xFFE1 and s.startswith(b"http://ns.adobe.com/xap/1.0/\x00"): + self.info["xmp"] = s.split(b"\x00", 1)[1] + elif marker == 0xFFE2 and s.startswith(b"FPXR\0"): + # extract FlashPix information (incomplete) + self.info["flashpix"] = s # FIXME: value will change + elif marker == 0xFFE2 and s.startswith(b"ICC_PROFILE\0"): + # Since an ICC profile can be larger than the maximum size of + # a JPEG marker (64K), we need provisions to split it into + # multiple markers. The format defined by the ICC specifies + # one or more APP2 markers containing the following data: + # Identifying string ASCII "ICC_PROFILE\0" (12 bytes) + # Marker sequence number 1, 2, etc (1 byte) + # Number of markers Total of APP2's used (1 byte) + # Profile data (remainder of APP2 data) + # Decoders should use the marker sequence numbers to + # reassemble the profile, rather than assuming that the APP2 + # markers appear in the correct sequence. + self.icclist.append(s) + elif marker == 0xFFED and s.startswith(b"Photoshop 3.0\x00"): + # parse the image resource block + offset = 14 + photoshop = self.info.setdefault("photoshop", {}) + while s[offset : offset + 4] == b"8BIM": + try: + offset += 4 + # resource code + code = i16(s, offset) + offset += 2 + # resource name (usually empty) + name_len = s[offset] + # name = s[offset+1:offset+1+name_len] + offset += 1 + name_len + offset += offset & 1 # align + # resource data block + size = i32(s, offset) + offset += 4 + data = s[offset : offset + size] + if code == 0x03ED: # ResolutionInfo + photoshop[code] = { + "XResolution": i32(data, 0) / 65536, + "DisplayedUnitsX": i16(data, 4), + "YResolution": i32(data, 8) / 65536, + "DisplayedUnitsY": i16(data, 12), + } + else: + photoshop[code] = data + offset += size + offset += offset & 1 # align + except struct.error: + break # insufficient data + + elif marker == 0xFFEE and s.startswith(b"Adobe"): + self.info["adobe"] = i16(s, 5) + # extract Adobe custom properties + try: + adobe_transform = s[11] + except IndexError: + pass + else: + self.info["adobe_transform"] = adobe_transform + elif marker == 0xFFE2 and s.startswith(b"MPF\0"): + # extract MPO information + self.info["mp"] = s[4:] + # offset is current location minus buffer size + # plus constant header size + self.info["mpoffset"] = self.fp.tell() - n + 4 + + +def COM(self: JpegImageFile, marker: int) -> None: + # + # Comment marker. Store these in the APP dictionary. + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + self.info["comment"] = s + self.app["COM"] = s # compatibility + self.applist.append(("COM", s)) + + +def SOF(self: JpegImageFile, marker: int) -> None: + # + # Start of frame marker. Defines the size and mode of the + # image. JPEG is colour blind, so we use some simple + # heuristics to map the number of layers to an appropriate + # mode. Note that this could be made a bit brighter, by + # looking for JFIF and Adobe APP markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + self._size = i16(s, 3), i16(s, 1) + + self.bits = s[0] + if self.bits != 8: + msg = f"cannot handle {self.bits}-bit layers" + raise SyntaxError(msg) + + self.layers = s[5] + if self.layers == 1: + self._mode = "L" + elif self.layers == 3: + self._mode = "RGB" + elif self.layers == 4: + self._mode = "CMYK" + else: + msg = f"cannot handle {self.layers}-layer images" + raise SyntaxError(msg) + + if marker in [0xFFC2, 0xFFC6, 0xFFCA, 0xFFCE]: + self.info["progressive"] = self.info["progression"] = 1 + + if self.icclist: + # fixup icc profile + self.icclist.sort() # sort by sequence number + if self.icclist[0][13] == len(self.icclist): + profile = [p[14:] for p in self.icclist] + icc_profile = b"".join(profile) + else: + icc_profile = None # wrong number of fragments + self.info["icc_profile"] = icc_profile + self.icclist = [] + + for i in range(6, len(s), 3): + t = s[i : i + 3] + # 4-tuples: id, vsamp, hsamp, qtable + self.layer.append((t[0], t[1] // 16, t[1] & 15, t[2])) + + +def DQT(self: JpegImageFile, marker: int) -> None: + # + # Define quantization table. Note that there might be more + # than one table in each marker. + + # FIXME: The quantization tables can be used to estimate the + # compression quality. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + while len(s): + v = s[0] + precision = 1 if (v // 16 == 0) else 2 # in bytes + qt_length = 1 + precision * 64 + if len(s) < qt_length: + msg = "bad quantization table marker" + raise SyntaxError(msg) + data = array.array("B" if precision == 1 else "H", s[1:qt_length]) + if sys.byteorder == "little" and precision > 1: + data.byteswap() # the values are always big-endian + self.quantization[v & 15] = [data[i] for i in zigzag_index] + s = s[qt_length:] + + +# +# JPEG marker table + +MARKER = { + 0xFFC0: ("SOF0", "Baseline DCT", SOF), + 0xFFC1: ("SOF1", "Extended Sequential DCT", SOF), + 0xFFC2: ("SOF2", "Progressive DCT", SOF), + 0xFFC3: ("SOF3", "Spatial lossless", SOF), + 0xFFC4: ("DHT", "Define Huffman table", Skip), + 0xFFC5: ("SOF5", "Differential sequential DCT", SOF), + 0xFFC6: ("SOF6", "Differential progressive DCT", SOF), + 0xFFC7: ("SOF7", "Differential spatial", SOF), + 0xFFC8: ("JPG", "Extension", None), + 0xFFC9: ("SOF9", "Extended sequential DCT (AC)", SOF), + 0xFFCA: ("SOF10", "Progressive DCT (AC)", SOF), + 0xFFCB: ("SOF11", "Spatial lossless DCT (AC)", SOF), + 0xFFCC: ("DAC", "Define arithmetic coding conditioning", Skip), + 0xFFCD: ("SOF13", "Differential sequential DCT (AC)", SOF), + 0xFFCE: ("SOF14", "Differential progressive DCT (AC)", SOF), + 0xFFCF: ("SOF15", "Differential spatial (AC)", SOF), + 0xFFD0: ("RST0", "Restart 0", None), + 0xFFD1: ("RST1", "Restart 1", None), + 0xFFD2: ("RST2", "Restart 2", None), + 0xFFD3: ("RST3", "Restart 3", None), + 0xFFD4: ("RST4", "Restart 4", None), + 0xFFD5: ("RST5", "Restart 5", None), + 0xFFD6: ("RST6", "Restart 6", None), + 0xFFD7: ("RST7", "Restart 7", None), + 0xFFD8: ("SOI", "Start of image", None), + 0xFFD9: ("EOI", "End of image", None), + 0xFFDA: ("SOS", "Start of scan", Skip), + 0xFFDB: ("DQT", "Define quantization table", DQT), + 0xFFDC: ("DNL", "Define number of lines", Skip), + 0xFFDD: ("DRI", "Define restart interval", Skip), + 0xFFDE: ("DHP", "Define hierarchical progression", SOF), + 0xFFDF: ("EXP", "Expand reference component", Skip), + 0xFFE0: ("APP0", "Application segment 0", APP), + 0xFFE1: ("APP1", "Application segment 1", APP), + 0xFFE2: ("APP2", "Application segment 2", APP), + 0xFFE3: ("APP3", "Application segment 3", APP), + 0xFFE4: ("APP4", "Application segment 4", APP), + 0xFFE5: ("APP5", "Application segment 5", APP), + 0xFFE6: ("APP6", "Application segment 6", APP), + 0xFFE7: ("APP7", "Application segment 7", APP), + 0xFFE8: ("APP8", "Application segment 8", APP), + 0xFFE9: ("APP9", "Application segment 9", APP), + 0xFFEA: ("APP10", "Application segment 10", APP), + 0xFFEB: ("APP11", "Application segment 11", APP), + 0xFFEC: ("APP12", "Application segment 12", APP), + 0xFFED: ("APP13", "Application segment 13", APP), + 0xFFEE: ("APP14", "Application segment 14", APP), + 0xFFEF: ("APP15", "Application segment 15", APP), + 0xFFF0: ("JPG0", "Extension 0", None), + 0xFFF1: ("JPG1", "Extension 1", None), + 0xFFF2: ("JPG2", "Extension 2", None), + 0xFFF3: ("JPG3", "Extension 3", None), + 0xFFF4: ("JPG4", "Extension 4", None), + 0xFFF5: ("JPG5", "Extension 5", None), + 0xFFF6: ("JPG6", "Extension 6", None), + 0xFFF7: ("JPG7", "Extension 7", None), + 0xFFF8: ("JPG8", "Extension 8", None), + 0xFFF9: ("JPG9", "Extension 9", None), + 0xFFFA: ("JPG10", "Extension 10", None), + 0xFFFB: ("JPG11", "Extension 11", None), + 0xFFFC: ("JPG12", "Extension 12", None), + 0xFFFD: ("JPG13", "Extension 13", None), + 0xFFFE: ("COM", "Comment", COM), +} + + +def _accept(prefix: bytes) -> bool: + # Magic number was taken from https://en.wikipedia.org/wiki/JPEG + return prefix.startswith(b"\xff\xd8\xff") + + +## +# Image plugin for JPEG and JFIF images. + + +class JpegImageFile(ImageFile.ImageFile): + format = "JPEG" + format_description = "JPEG (ISO 10918)" + + def _open(self) -> None: + s = self.fp.read(3) + + if not _accept(s): + msg = "not a JPEG file" + raise SyntaxError(msg) + s = b"\xff" + + # Create attributes + self.bits = self.layers = 0 + self._exif_offset = 0 + + # JPEG specifics (internal) + self.layer: list[tuple[int, int, int, int]] = [] + self._huffman_dc: dict[Any, Any] = {} + self._huffman_ac: dict[Any, Any] = {} + self.quantization: dict[int, list[int]] = {} + self.app: dict[str, bytes] = {} # compatibility + self.applist: list[tuple[str, bytes]] = [] + self.icclist: list[bytes] = [] + + while True: + i = s[0] + if i == 0xFF: + s = s + self.fp.read(1) + i = i16(s) + else: + # Skip non-0xFF junk + s = self.fp.read(1) + continue + + if i in MARKER: + name, description, handler = MARKER[i] + if handler is not None: + handler(self, i) + if i == 0xFFDA: # start of scan + rawmode = self.mode + if self.mode == "CMYK": + rawmode = "CMYK;I" # assume adobe conventions + self.tile = [ + ImageFile._Tile("jpeg", (0, 0) + self.size, 0, (rawmode, "")) + ] + # self.__offset = self.fp.tell() + break + s = self.fp.read(1) + elif i in {0, 0xFFFF}: + # padded marker or junk; move on + s = b"\xff" + elif i == 0xFF00: # Skip extraneous data (escaped 0xFF) + s = self.fp.read(1) + else: + msg = "no marker found" + raise SyntaxError(msg) + + self._read_dpi_from_exif() + + def __getattr__(self, name: str) -> Any: + if name in ("huffman_ac", "huffman_dc"): + deprecate(name, 12) + 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: + self.layers, self.layer = state[6:] + super().__setstate__(state) + + def load_read(self, read_bytes: int) -> bytes: + """ + internal: read more image data + For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker + so libjpeg can finish decoding + """ + s = self.fp.read(read_bytes) + + if not s and ImageFile.LOAD_TRUNCATED_IMAGES and not hasattr(self, "_ended"): + # Premature EOF. + # Pretend file is finished adding EOI marker + self._ended = True + return b"\xff\xd9" + + return s + + def draft( + self, mode: str | None, size: tuple[int, int] | None + ) -> tuple[str, tuple[int, int, float, float]] | None: + if len(self.tile) != 1: + return None + + # Protect from second call + if self.decoderconfig: + return None + + d, e, o, a = self.tile[0] + scale = 1 + original_size = self.size + + assert isinstance(a, tuple) + if a[0] == "RGB" and mode in ["L", "YCbCr"]: + self._mode = mode + a = mode, "" + + if size: + scale = min(self.size[0] // size[0], self.size[1] // size[1]) + for s in [8, 4, 2, 1]: + if scale >= s: + break + assert e is not None + e = ( + e[0], + e[1], + (e[2] - e[0] + s - 1) // s + e[0], + (e[3] - e[1] + s - 1) // s + e[1], + ) + self._size = ((self.size[0] + s - 1) // s, (self.size[1] + s - 1) // s) + scale = s + + self.tile = [ImageFile._Tile(d, e, o, a)] + self.decoderconfig = (scale, 0) + + box = (0, 0, original_size[0] / scale, original_size[1] / scale) + return self.mode, box + + def load_djpeg(self) -> None: + # ALTERNATIVE: handle JPEGs via the IJG command line utilities + + f, path = tempfile.mkstemp() + os.close(f) + if os.path.exists(self.filename): + subprocess.check_call(["djpeg", "-outfile", path, self.filename]) + else: + try: + os.unlink(path) + except OSError: + pass + + msg = "Invalid Filename" + raise ValueError(msg) + + try: + with Image.open(path) as _im: + _im.load() + self.im = _im.im + finally: + try: + os.unlink(path) + except OSError: + pass + + self._mode = self.im.mode + self._size = self.im.size + + self.tile = [] + + def _getexif(self) -> dict[int, Any] | None: + return _getexif(self) + + def _read_dpi_from_exif(self) -> None: + # If DPI isn't in JPEG header, fetch from EXIF + if "dpi" in self.info or "exif" not in self.info: + return + try: + exif = self.getexif() + resolution_unit = exif[0x0128] + x_resolution = exif[0x011A] + try: + dpi = float(x_resolution[0]) / x_resolution[1] + except TypeError: + dpi = x_resolution + if math.isnan(dpi): + msg = "DPI is not a number" + raise ValueError(msg) + if resolution_unit == 3: # cm + # 1 dpcm = 2.54 dpi + dpi *= 2.54 + self.info["dpi"] = dpi, dpi + except ( + struct.error, # truncated EXIF + KeyError, # dpi not included + SyntaxError, # invalid/unreadable EXIF + TypeError, # dpi is an invalid float + ValueError, # dpi is an invalid float + ZeroDivisionError, # invalid dpi rational value + ): + self.info["dpi"] = 72, 72 + + def _getmp(self) -> dict[int, Any] | None: + return _getmp(self) + + +def _getexif(self: JpegImageFile) -> dict[int, Any] | None: + if "exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + +def _getmp(self: JpegImageFile) -> dict[int, Any] | None: + # Extract MP information. This method was inspired by the "highly + # experimental" _getexif version that's been in use for years now, + # itself based on the ImageFileDirectory class in the TIFF plugin. + + # The MP record essentially consists of a TIFF file embedded in a JPEG + # application marker. + try: + data = self.info["mp"] + except KeyError: + return None + file_contents = io.BytesIO(data) + head = file_contents.read(8) + endianness = ">" if head.startswith(b"\x4d\x4d\x00\x2a") else "<" + # process dictionary + from . import TiffImagePlugin + + try: + info = TiffImagePlugin.ImageFileDirectory_v2(head) + file_contents.seek(info.next) + info.load(file_contents) + mp = dict(info) + except Exception as e: + msg = "malformed MP Index (unreadable directory)" + raise SyntaxError(msg) from e + # it's an error not to have a number of images + try: + quant = mp[0xB001] + except KeyError as e: + msg = "malformed MP Index (no number of images)" + raise SyntaxError(msg) from e + # get MP entries + mpentries = [] + try: + rawmpentries = mp[0xB002] + for entrynum in range(quant): + unpackedentry = struct.unpack_from( + f"{endianness}LLLHH", rawmpentries, entrynum * 16 + ) + labels = ("Attribute", "Size", "DataOffset", "EntryNo1", "EntryNo2") + mpentry = dict(zip(labels, unpackedentry)) + mpentryattr = { + "DependentParentImageFlag": bool(mpentry["Attribute"] & (1 << 31)), + "DependentChildImageFlag": bool(mpentry["Attribute"] & (1 << 30)), + "RepresentativeImageFlag": bool(mpentry["Attribute"] & (1 << 29)), + "Reserved": (mpentry["Attribute"] & (3 << 27)) >> 27, + "ImageDataFormat": (mpentry["Attribute"] & (7 << 24)) >> 24, + "MPType": mpentry["Attribute"] & 0x00FFFFFF, + } + if mpentryattr["ImageDataFormat"] == 0: + mpentryattr["ImageDataFormat"] = "JPEG" + else: + msg = "unsupported picture format in MPO" + raise SyntaxError(msg) + mptypemap = { + 0x000000: "Undefined", + 0x010001: "Large Thumbnail (VGA Equivalent)", + 0x010002: "Large Thumbnail (Full HD Equivalent)", + 0x020001: "Multi-Frame Image (Panorama)", + 0x020002: "Multi-Frame Image: (Disparity)", + 0x020003: "Multi-Frame Image: (Multi-Angle)", + 0x030000: "Baseline MP Primary Image", + } + mpentryattr["MPType"] = mptypemap.get(mpentryattr["MPType"], "Unknown") + mpentry["Attribute"] = mpentryattr + mpentries.append(mpentry) + mp[0xB002] = mpentries + except KeyError as e: + msg = "malformed MP Index (bad MP Entry)" + raise SyntaxError(msg) from e + # Next we should try and parse the individual image unique ID list; + # we don't because I've never seen this actually used in a real MPO + # file and so can't test it. + return mp + + +# -------------------------------------------------------------------- +# stuff to save JPEG files + +RAWMODE = { + "1": "L", + "L": "L", + "RGB": "RGB", + "RGBX": "RGB", + "CMYK": "CMYK;I", # assume adobe conventions + "YCbCr": "YCbCr", +} + +# fmt: off +zigzag_index = ( + 0, 1, 5, 6, 14, 15, 27, 28, + 2, 4, 7, 13, 16, 26, 29, 42, + 3, 8, 12, 17, 25, 30, 41, 43, + 9, 11, 18, 24, 31, 40, 44, 53, + 10, 19, 23, 32, 39, 45, 52, 54, + 20, 22, 33, 38, 46, 51, 55, 60, + 21, 34, 37, 47, 50, 56, 59, 61, + 35, 36, 48, 49, 57, 58, 62, 63, +) + +samplings = { + (1, 1, 1, 1, 1, 1): 0, + (2, 1, 1, 1, 1, 1): 1, + (2, 2, 1, 1, 1, 1): 2, +} +# fmt: on + + +def get_sampling(im: Image.Image) -> int: + # There's no subsampling when images have only 1 layer + # (grayscale images) or when they are CMYK (4 layers), + # so set subsampling to the default value. + # + # NOTE: currently Pillow can't encode JPEG to YCCK format. + # If YCCK support is added in the future, subsampling code will have + # to be updated (here and in JpegEncode.c) to deal with 4 layers. + if not isinstance(im, JpegImageFile) or im.layers in (1, 4): + return -1 + sampling = im.layer[0][1:3] + im.layer[1][1:3] + im.layer[2][1:3] + return samplings.get(sampling, -1) + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.width == 0 or im.height == 0: + msg = "cannot write empty image as JPEG" + raise ValueError(msg) + + try: + rawmode = RAWMODE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as JPEG" + raise OSError(msg) from e + + info = im.encoderinfo + + dpi = [round(x) for x in info.get("dpi", (0, 0))] + + quality = info.get("quality", -1) + subsampling = info.get("subsampling", -1) + qtables = info.get("qtables") + + if quality == "keep": + quality = -1 + subsampling = "keep" + qtables = "keep" + elif quality in presets: + preset = presets[quality] + quality = -1 + subsampling = preset.get("subsampling", -1) + qtables = preset.get("quantization") + elif not isinstance(quality, int): + msg = "Invalid quality setting" + raise ValueError(msg) + else: + if subsampling in presets: + subsampling = presets[subsampling].get("subsampling", -1) + if isinstance(qtables, str) and qtables in presets: + qtables = presets[qtables].get("quantization") + + if subsampling == "4:4:4": + subsampling = 0 + elif subsampling == "4:2:2": + subsampling = 1 + elif subsampling == "4:2:0": + subsampling = 2 + elif subsampling == "4:1:1": + # For compatibility. Before Pillow 4.3, 4:1:1 actually meant 4:2:0. + # Set 4:2:0 if someone is still using that value. + subsampling = 2 + elif subsampling == "keep": + if im.format != "JPEG": + msg = "Cannot use 'keep' when original image is not a JPEG" + raise ValueError(msg) + subsampling = get_sampling(im) + + def validate_qtables( + qtables: ( + str | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | None + ), + ) -> list[list[int]] | None: + if qtables is None: + return qtables + if isinstance(qtables, str): + try: + lines = [ + int(num) + for line in qtables.splitlines() + for num in line.split("#", 1)[0].split() + ] + except ValueError as e: + msg = "Invalid quantization table" + raise ValueError(msg) from e + else: + qtables = [lines[s : s + 64] for s in range(0, len(lines), 64)] + if isinstance(qtables, (tuple, list, dict)): + if isinstance(qtables, dict): + qtables = [ + qtables[key] for key in range(len(qtables)) if key in qtables + ] + elif isinstance(qtables, tuple): + qtables = list(qtables) + if not (0 < len(qtables) < 5): + msg = "None or too many quantization tables" + raise ValueError(msg) + for idx, table in enumerate(qtables): + try: + if len(table) != 64: + msg = "Invalid quantization table" + raise TypeError(msg) + table_array = array.array("H", table) + except TypeError as e: + msg = "Invalid quantization table" + raise ValueError(msg) from e + else: + qtables[idx] = list(table_array) + return qtables + + if qtables == "keep": + if im.format != "JPEG": + msg = "Cannot use 'keep' when original image is not a JPEG" + raise ValueError(msg) + qtables = getattr(im, "quantization", None) + qtables = validate_qtables(qtables) + + extra = info.get("extra", b"") + + MAX_BYTES_IN_MARKER = 65533 + if xmp := info.get("xmp"): + overhead_len = 29 # b"http://ns.adobe.com/xap/1.0/\x00" + max_data_bytes_in_marker = MAX_BYTES_IN_MARKER - overhead_len + if len(xmp) > max_data_bytes_in_marker: + msg = "XMP data is too long" + raise ValueError(msg) + size = o16(2 + overhead_len + len(xmp)) + extra += b"\xff\xe1" + size + b"http://ns.adobe.com/xap/1.0/\x00" + xmp + + if icc_profile := info.get("icc_profile"): + overhead_len = 14 # b"ICC_PROFILE\0" + o8(i) + o8(len(markers)) + max_data_bytes_in_marker = MAX_BYTES_IN_MARKER - overhead_len + markers = [] + while icc_profile: + markers.append(icc_profile[:max_data_bytes_in_marker]) + icc_profile = icc_profile[max_data_bytes_in_marker:] + i = 1 + for marker in markers: + size = o16(2 + overhead_len + len(marker)) + extra += ( + b"\xff\xe2" + + size + + b"ICC_PROFILE\0" + + o8(i) + + o8(len(markers)) + + marker + ) + i += 1 + + comment = info.get("comment", im.info.get("comment")) + + # "progressive" is the official name, but older documentation + # says "progression" + # FIXME: issue a warning if the wrong form is used (post-1.1.7) + progressive = info.get("progressive", False) or info.get("progression", False) + + optimize = info.get("optimize", False) + + exif = info.get("exif", b"") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + if len(exif) > MAX_BYTES_IN_MARKER: + msg = "EXIF data is too long" + raise ValueError(msg) + + # get keyword arguments + im.encoderconfig = ( + quality, + progressive, + info.get("smooth", 0), + optimize, + info.get("keep_rgb", False), + info.get("streamtype", 0), + dpi, + subsampling, + info.get("restart_marker_blocks", 0), + info.get("restart_marker_rows", 0), + qtables, + comment, + extra, + exif, + ) + + # if we optimize, libjpeg needs a buffer big enough to hold the whole image + # in a shot. Guessing on the size, at im.size bytes. (raw pixel size is + # channels*size, this is a value that's been used in a django patch. + # https://github.com/matthewwithanm/django-imagekit/issues/50 + if optimize or progressive: + # CMYK can be bigger + if im.mode == "CMYK": + bufsize = 4 * im.size[0] * im.size[1] + # keep sets quality to -1, but the actual value may be high. + elif quality >= 95 or quality == -1: + bufsize = 2 * im.size[0] * im.size[1] + else: + bufsize = im.size[0] * im.size[1] + if exif: + bufsize += len(exif) + 5 + if extra: + bufsize += len(extra) + 1 + else: + # The EXIF info needs to be written as one block, + APP1, + one spare byte. + # Ensure that our buffer is big enough. Same with the icc_profile block. + bufsize = max(len(exif) + 5, len(extra) + 1) + + ImageFile._save( + im, fp, [ImageFile._Tile("jpeg", (0, 0) + im.size, 0, rawmode)], bufsize + ) + + +def _save_cjpeg(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # ALTERNATIVE: handle JPEGs via the IJG command line utilities. + tempfile = im._dump() + subprocess.check_call(["cjpeg", "-outfile", filename, tempfile]) + try: + os.unlink(tempfile) + except OSError: + pass + + +## +# Factory for making JPEG and MPO instances +def jpeg_factory( + fp: IO[bytes], filename: str | bytes | None = None +) -> JpegImageFile | MpoImageFile: + im = JpegImageFile(fp, filename) + try: + mpheader = im._getmp() + if mpheader is not None and mpheader[45057] > 1: + for segment, content in im.applist: + if segment == "APP1" and b' hdrgm:Version="' in content: + # Ultra HDR images are not yet supported + return im + # It's actually an MPO + from .MpoImagePlugin import MpoImageFile + + # Don't reload everything, just convert it. + im = MpoImageFile.adopt(im, mpheader) + except (TypeError, IndexError): + # It is really a JPEG + pass + except SyntaxError: + warnings.warn( + "Image appears to be a malformed MPO file, it will be " + "interpreted as a base JPEG file" + ) + return im + + +# --------------------------------------------------------------------- +# Registry stuff + +Image.register_open(JpegImageFile.format, jpeg_factory, _accept) +Image.register_save(JpegImageFile.format, _save) + +Image.register_extensions(JpegImageFile.format, [".jfif", ".jpe", ".jpg", ".jpeg"]) + +Image.register_mime(JpegImageFile.format, "image/jpeg") diff --git a/myenv/lib/python3.10/site-packages/PIL/JpegPresets.py b/myenv/lib/python3.10/site-packages/PIL/JpegPresets.py new file mode 100644 index 0000000..d0e64a3 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/JpegPresets.py @@ -0,0 +1,242 @@ +""" +JPEG quality settings equivalent to the Photoshop settings. +Can be used when saving JPEG files. + +The following presets are available by default: +``web_low``, ``web_medium``, ``web_high``, ``web_very_high``, ``web_maximum``, +``low``, ``medium``, ``high``, ``maximum``. +More presets can be added to the :py:data:`presets` dict if needed. + +To apply the preset, specify:: + + quality="preset_name" + +To apply only the quantization table:: + + qtables="preset_name" + +To apply only the subsampling setting:: + + subsampling="preset_name" + +Example:: + + im.save("image_name.jpg", quality="web_high") + +Subsampling +----------- + +Subsampling is the practice of encoding images by implementing less resolution +for chroma information than for luma information. +(ref.: https://en.wikipedia.org/wiki/Chroma_subsampling) + +Possible subsampling values are 0, 1 and 2 that correspond to 4:4:4, 4:2:2 and +4:2:0. + +You can get the subsampling of a JPEG with the +:func:`.JpegImagePlugin.get_sampling` function. + +In JPEG compressed data a JPEG marker is used instead of an EXIF tag. +(ref.: https://exiv2.org/tags.html) + + +Quantization tables +------------------- + +They are values use by the DCT (Discrete cosine transform) to remove +*unnecessary* information from the image (the lossy part of the compression). +(ref.: https://en.wikipedia.org/wiki/Quantization_matrix#Quantization_matrices, +https://en.wikipedia.org/wiki/JPEG#Quantization) + +You can get the quantization tables of a JPEG with:: + + im.quantization + +This will return a dict with a number of lists. You can pass this dict +directly as the qtables argument when saving a JPEG. + +The quantization table format in presets is a list with sublists. These formats +are interchangeable. + +Libjpeg ref.: +https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html + +""" + +from __future__ import annotations + +# fmt: off +presets = { + 'web_low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [20, 16, 25, 39, 50, 46, 62, 68, + 16, 18, 23, 38, 38, 53, 65, 68, + 25, 23, 31, 38, 53, 65, 68, 68, + 39, 38, 38, 53, 65, 68, 68, 68, + 50, 38, 53, 65, 68, 68, 68, 68, + 46, 53, 65, 68, 68, 68, 68, 68, + 62, 65, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68], + [21, 25, 32, 38, 54, 68, 68, 68, + 25, 28, 24, 38, 54, 68, 68, 68, + 32, 24, 32, 43, 66, 68, 68, 68, + 38, 38, 43, 53, 68, 68, 68, 68, + 54, 54, 66, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68] + ]}, + 'web_medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [16, 11, 11, 16, 23, 27, 31, 30, + 11, 12, 12, 15, 20, 23, 23, 30, + 11, 12, 13, 16, 23, 26, 35, 47, + 16, 15, 16, 23, 26, 37, 47, 64, + 23, 20, 23, 26, 39, 51, 64, 64, + 27, 23, 26, 37, 51, 64, 64, 64, + 31, 23, 35, 47, 64, 64, 64, 64, + 30, 30, 47, 64, 64, 64, 64, 64], + [17, 15, 17, 21, 20, 26, 38, 48, + 15, 19, 18, 17, 20, 26, 35, 43, + 17, 18, 20, 22, 26, 30, 46, 53, + 21, 17, 22, 28, 30, 39, 53, 64, + 20, 20, 26, 30, 39, 48, 64, 64, + 26, 26, 30, 39, 48, 63, 64, 64, + 38, 35, 46, 53, 64, 64, 64, 64, + 48, 43, 53, 64, 64, 64, 64, 64] + ]}, + 'web_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 14, 19, + 6, 6, 6, 11, 12, 15, 19, 28, + 9, 8, 10, 12, 16, 20, 27, 31, + 11, 10, 12, 15, 20, 27, 31, 31, + 12, 12, 14, 19, 27, 31, 31, 31, + 16, 12, 19, 28, 31, 31, 31, 31], + [7, 7, 13, 24, 26, 31, 31, 31, + 7, 12, 16, 21, 31, 31, 31, 31, + 13, 16, 17, 31, 31, 31, 31, 31, + 24, 21, 31, 31, 31, 31, 31, 31, + 26, 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] + ]}, + 'web_very_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 11, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 11, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'web_maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 1, 1, 2, 2, 3, 3, + 1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 2, 2, 3, 3, 3, 3], + [1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 1, 2, 3, 3, 3, 3, + 1, 1, 1, 3, 3, 3, 3, 3, + 2, 2, 3, 3, 3, 3, 3, 3, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3] + ]}, + 'low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [18, 14, 14, 21, 30, 35, 34, 17, + 14, 16, 16, 19, 26, 23, 12, 12, + 14, 16, 17, 21, 23, 12, 12, 12, + 21, 19, 21, 23, 12, 12, 12, 12, + 30, 26, 23, 12, 12, 12, 12, 12, + 35, 23, 12, 12, 12, 12, 12, 12, + 34, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [20, 19, 22, 27, 20, 20, 17, 17, + 19, 25, 23, 14, 14, 12, 12, 12, + 22, 23, 14, 14, 12, 12, 12, 12, + 27, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [12, 8, 8, 12, 17, 21, 24, 17, + 8, 9, 9, 11, 15, 19, 12, 12, + 8, 9, 10, 12, 19, 12, 12, 12, + 12, 11, 12, 21, 12, 12, 12, 12, + 17, 15, 19, 12, 12, 12, 12, 12, + 21, 19, 12, 12, 12, 12, 12, 12, + 24, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [13, 11, 13, 16, 20, 20, 17, 17, + 11, 14, 14, 14, 14, 12, 12, 12, + 13, 14, 14, 14, 12, 12, 12, 12, + 16, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 12, 12, + 6, 6, 6, 11, 12, 12, 12, 12, + 9, 8, 10, 12, 12, 12, 12, 12, + 11, 10, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 16, 12, 12, 12, 12, 12, 12, 12], + [7, 7, 13, 24, 20, 20, 17, 17, + 7, 12, 16, 14, 14, 12, 12, 12, + 13, 16, 14, 14, 12, 12, 12, 12, + 24, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 10, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 10, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, +} +# fmt: on diff --git a/myenv/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py new file mode 100644 index 0000000..9a47933 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py @@ -0,0 +1,78 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Basic McIdas support for PIL +# +# History: +# 1997-05-05 fl Created (8-bit images only) +# 2009-03-08 fl Added 16/32-bit support. +# +# Thanks to Richard Jones and Craig Swank for specs and samples. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import struct + +from . import Image, ImageFile + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"\x00\x00\x00\x00\x00\x00\x00\x04") + + +## +# Image plugin for McIdas area images. + + +class McIdasImageFile(ImageFile.ImageFile): + format = "MCIDAS" + format_description = "McIdas area file" + + def _open(self) -> None: + # parse area file directory + assert self.fp is not None + + s = self.fp.read(256) + if not _accept(s) or len(s) != 256: + msg = "not an McIdas area file" + raise SyntaxError(msg) + + self.area_descriptor_raw = s + self.area_descriptor = w = [0, *struct.unpack("!64i", s)] + + # get mode + if w[11] == 1: + mode = rawmode = "L" + elif w[11] == 2: + mode = rawmode = "I;16B" + elif w[11] == 4: + # FIXME: add memory map support + mode = "I" + rawmode = "I;32B" + else: + msg = "unsupported McIdas format" + raise SyntaxError(msg) + + self._mode = mode + self._size = w[10], w[9] + + offset = w[34] + w[15] + stride = w[15] + w[10] * w[11] * w[14] + + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offset, (rawmode, stride, 1)) + ] + + +# -------------------------------------------------------------------- +# registry + +Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept) + +# no default extension diff --git a/myenv/lib/python3.10/site-packages/PIL/MicImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/MicImagePlugin.py new file mode 100644 index 0000000..9ce38c4 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/MicImagePlugin.py @@ -0,0 +1,102 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Microsoft Image Composer support for PIL +# +# Notes: +# uses TiffImagePlugin.py to read the actual image streams +# +# History: +# 97-01-20 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import olefile + +from . import Image, TiffImagePlugin + +# +# -------------------------------------------------------------------- + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(olefile.MAGIC) + + +## +# Image plugin for Microsoft's Image Composer file format. + + +class MicImageFile(TiffImagePlugin.TiffImageFile): + format = "MIC" + format_description = "Microsoft Image Composer" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # read the OLE directory and see if this is a likely + # to be a Microsoft Image Composer file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError as e: + msg = "not an MIC file; invalid OLE file" + raise SyntaxError(msg) from e + + # find ACI subfiles with Image members (maybe not the + # best way to identify MIC files, but what the... ;-) + + self.images = [ + path + for path in self.ole.listdir() + if path[1:] and path[0].endswith(".ACI") and path[1] == "Image" + ] + + # if we didn't find any images, this is probably not + # an MIC file. + if not self.images: + msg = "not an MIC file; no image entries" + raise SyntaxError(msg) + + self.frame = -1 + self._n_frames = len(self.images) + self.is_animated = self._n_frames > 1 + + self.__fp = self.fp + self.seek(0) + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + filename = self.images[frame] + self.fp = self.ole.openstream(filename) + + TiffImagePlugin.TiffImageFile._open(self) + + self.frame = frame + + def tell(self) -> int: + return self.frame + + def close(self) -> None: + self.__fp.close() + self.ole.close() + super().close() + + def __exit__(self, *args: object) -> None: + self.__fp.close() + self.ole.close() + super().__exit__() + + +# +# -------------------------------------------------------------------- + +Image.register_open(MicImageFile.format, MicImageFile, _accept) + +Image.register_extension(MicImageFile.format, ".mic") diff --git a/myenv/lib/python3.10/site-packages/PIL/MpegImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/MpegImagePlugin.py new file mode 100644 index 0000000..47ebe9d --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/MpegImagePlugin.py @@ -0,0 +1,84 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPEG file handling +# +# History: +# 95-09-09 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image, ImageFile +from ._binary import i8 +from ._typing import SupportsRead + +# +# Bitstream parser + + +class BitStream: + def __init__(self, fp: SupportsRead[bytes]) -> None: + self.fp = fp + self.bits = 0 + self.bitbuffer = 0 + + def next(self) -> int: + return i8(self.fp.read(1)) + + def peek(self, bits: int) -> int: + while self.bits < bits: + self.bitbuffer = (self.bitbuffer << 8) + self.next() + self.bits += 8 + return self.bitbuffer >> (self.bits - bits) & (1 << bits) - 1 + + def skip(self, bits: int) -> None: + while self.bits < bits: + self.bitbuffer = (self.bitbuffer << 8) + i8(self.fp.read(1)) + self.bits += 8 + self.bits = self.bits - bits + + def read(self, bits: int) -> int: + v = self.peek(bits) + self.bits = self.bits - bits + return v + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"\x00\x00\x01\xb3") + + +## +# Image plugin for MPEG streams. This plugin can identify a stream, +# but it cannot read it. + + +class MpegImageFile(ImageFile.ImageFile): + format = "MPEG" + format_description = "MPEG" + + def _open(self) -> None: + assert self.fp is not None + + s = BitStream(self.fp) + if s.read(32) != 0x1B3: + msg = "not an MPEG file" + raise SyntaxError(msg) + + self._mode = "RGB" + self._size = s.read(12), s.read(12) + + +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open(MpegImageFile.format, MpegImageFile, _accept) + +Image.register_extensions(MpegImageFile.format, [".mpg", ".mpeg"]) + +Image.register_mime(MpegImageFile.format, "video/mpeg") diff --git a/myenv/lib/python3.10/site-packages/PIL/MpoImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/MpoImagePlugin.py new file mode 100644 index 0000000..b1ae078 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/MpoImagePlugin.py @@ -0,0 +1,202 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPO file handling +# +# See "Multi-Picture Format" (CIPA DC-007-Translation 2009, Standard of the +# Camera & Imaging Products Association) +# +# The multi-picture object combines multiple JPEG images (with a modified EXIF +# data format) into a single file. While it can theoretically be used much like +# a GIF animation, it is commonly used to represent 3D photographs and is (as +# of this writing) the most commonly used format by 3D cameras. +# +# History: +# 2014-03-13 Feneric Created +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +import struct +from typing import IO, Any, cast + +from . import ( + Image, + ImageFile, + ImageSequence, + JpegImagePlugin, + TiffImagePlugin, +) +from ._binary import o32le +from ._util import DeferredError + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + JpegImagePlugin._save(im, fp, filename) + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + append_images = im.encoderinfo.get("append_images", []) + if not append_images and not getattr(im, "is_animated", False): + _save(im, fp, filename) + return + + mpf_offset = 28 + offsets: list[int] = [] + im_sequences = [im, *append_images] + total = sum(getattr(seq, "n_frames", 1) for seq in im_sequences) + for im_sequence in im_sequences: + for im_frame in ImageSequence.Iterator(im_sequence): + if not offsets: + # APP2 marker + ifd_length = 66 + 16 * total + im_frame.encoderinfo["extra"] = ( + b"\xff\xe2" + + struct.pack(">H", 6 + ifd_length) + + b"MPF\0" + + b" " * ifd_length + ) + exif = im_frame.encoderinfo.get("exif") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + im_frame.encoderinfo["exif"] = exif + if exif: + mpf_offset += 4 + len(exif) + + JpegImagePlugin._save(im_frame, fp, filename) + offsets.append(fp.tell()) + else: + encoderinfo = im_frame._attach_default_encoderinfo(im) + im_frame.save(fp, "JPEG") + im_frame.encoderinfo = encoderinfo + offsets.append(fp.tell() - offsets[-1]) + + ifd = TiffImagePlugin.ImageFileDirectory_v2() + ifd[0xB000] = b"0100" + ifd[0xB001] = len(offsets) + + mpentries = b"" + data_offset = 0 + for i, size in enumerate(offsets): + if i == 0: + mptype = 0x030000 # Baseline MP Primary Image + else: + mptype = 0x000000 # Undefined + mpentries += struct.pack(" None: + self.fp.seek(0) # prep the fp in order to pass the JPEG test + JpegImagePlugin.JpegImageFile._open(self) + self._after_jpeg_open() + + def _after_jpeg_open(self, mpheader: dict[int, Any] | None = None) -> None: + self.mpinfo = mpheader if mpheader is not None else self._getmp() + if self.mpinfo is None: + msg = "Image appears to be a malformed MPO file" + raise ValueError(msg) + self.n_frames = self.mpinfo[0xB001] + self.__mpoffsets = [ + mpent["DataOffset"] + self.info["mpoffset"] for mpent in self.mpinfo[0xB002] + ] + self.__mpoffsets[0] = 0 + # Note that the following assertion will only be invalid if something + # gets broken within JpegImagePlugin. + assert self.n_frames == len(self.__mpoffsets) + del self.info["mpoffset"] # no longer needed + self.is_animated = self.n_frames > 1 + self._fp = self.fp # FIXME: hack + self._fp.seek(self.__mpoffsets[0]) # get ready to read first frame + self.__frame = 0 + self.offset = 0 + # for now we can only handle reading and individual frame extraction + self.readonly = 1 + + def load_seek(self, pos: int) -> None: + if isinstance(self._fp, DeferredError): + raise self._fp.ex + self._fp.seek(pos) + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if isinstance(self._fp, DeferredError): + raise self._fp.ex + self.fp = self._fp + self.offset = self.__mpoffsets[frame] + + original_exif = self.info.get("exif") + if "exif" in self.info: + del self.info["exif"] + + self.fp.seek(self.offset + 2) # skip SOI marker + if not self.fp.read(2): + msg = "No data found for frame" + raise ValueError(msg) + self.fp.seek(self.offset) + JpegImagePlugin.JpegImageFile._open(self) + if self.info.get("exif") != original_exif: + self._reload_exif() + + self.tile = [ + ImageFile._Tile("jpeg", (0, 0) + self.size, self.offset, self.tile[0][-1]) + ] + self.__frame = frame + + def tell(self) -> int: + return self.__frame + + @staticmethod + def adopt( + jpeg_instance: JpegImagePlugin.JpegImageFile, + mpheader: dict[int, Any] | None = None, + ) -> MpoImageFile: + """ + Transform the instance of JpegImageFile into + an instance of MpoImageFile. + After the call, the JpegImageFile is extended + to be an MpoImageFile. + + This is essentially useful when opening a JPEG + file that reveals itself as an MPO, to avoid + double call to _open. + """ + jpeg_instance.__class__ = MpoImageFile + mpo_instance = cast(MpoImageFile, jpeg_instance) + mpo_instance._after_jpeg_open(mpheader) + return mpo_instance + + +# --------------------------------------------------------------------- +# Registry stuff + +# Note that since MPO shares a factory with JPEG, we do not need to do a +# separate registration for it here. +# Image.register_open(MpoImageFile.format, +# JpegImagePlugin.jpeg_factory, _accept) +Image.register_save(MpoImageFile.format, _save) +Image.register_save_all(MpoImageFile.format, _save_all) + +Image.register_extension(MpoImageFile.format, ".mpo") + +Image.register_mime(MpoImageFile.format, "image/mpo") diff --git a/myenv/lib/python3.10/site-packages/PIL/MspImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/MspImagePlugin.py new file mode 100644 index 0000000..277087a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/MspImagePlugin.py @@ -0,0 +1,200 @@ +# +# The Python Imaging Library. +# +# MSP file handling +# +# This is the format used by the Paint program in Windows 1 and 2. +# +# History: +# 95-09-05 fl Created +# 97-01-03 fl Read/write MSP images +# 17-02-21 es Fixed RLE interpretation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-97. +# Copyright (c) Eric Soroos 2017. +# +# See the README file for information on usage and redistribution. +# +# More info on this format: https://archive.org/details/gg243631 +# Page 313: +# Figure 205. Windows Paint Version 1: "DanM" Format +# Figure 206. Windows Paint Version 2: "LinS" Format. Used in Windows V2.03 +# +# See also: https://www.fileformat.info/format/mspaint/egff.htm +from __future__ import annotations + +import io +import struct +from typing import IO + +from . import Image, ImageFile +from ._binary import i16le as i16 +from ._binary import o16le as o16 + +# +# read MSP files + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith((b"DanM", b"LinS")) + + +## +# Image plugin for Windows MSP images. This plugin supports both +# uncompressed (Windows 1.0). + + +class MspImageFile(ImageFile.ImageFile): + format = "MSP" + format_description = "Windows Paint" + + def _open(self) -> None: + # Header + assert self.fp is not None + + s = self.fp.read(32) + if not _accept(s): + msg = "not an MSP file" + raise SyntaxError(msg) + + # Header checksum + checksum = 0 + for i in range(0, 32, 2): + checksum = checksum ^ i16(s, i) + if checksum != 0: + msg = "bad MSP checksum" + raise SyntaxError(msg) + + self._mode = "1" + self._size = i16(s, 4), i16(s, 6) + + if s.startswith(b"DanM"): + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 32, "1")] + else: + self.tile = [ImageFile._Tile("MSP", (0, 0) + self.size, 32)] + + +class MspDecoder(ImageFile.PyDecoder): + # The algo for the MSP decoder is from + # https://www.fileformat.info/format/mspaint/egff.htm + # cc-by-attribution -- That page references is taken from the + # Encyclopedia of Graphics File Formats and is licensed by + # O'Reilly under the Creative Common/Attribution license + # + # For RLE encoded files, the 32byte header is followed by a scan + # line map, encoded as one 16bit word of encoded byte length per + # line. + # + # NOTE: the encoded length of the line can be 0. This was not + # handled in the previous version of this encoder, and there's no + # mention of how to handle it in the documentation. From the few + # examples I've seen, I've assumed that it is a fill of the + # background color, in this case, white. + # + # + # Pseudocode of the decoder: + # Read a BYTE value as the RunType + # If the RunType value is zero + # Read next byte as the RunCount + # Read the next byte as the RunValue + # Write the RunValue byte RunCount times + # If the RunType value is non-zero + # Use this value as the RunCount + # Read and write the next RunCount bytes literally + # + # e.g.: + # 0x00 03 ff 05 00 01 02 03 04 + # would yield the bytes: + # 0xff ff ff 00 01 02 03 04 + # + # which are then interpreted as a bit packed mode '1' image + + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + img = io.BytesIO() + blank_line = bytearray((0xFF,) * ((self.state.xsize + 7) // 8)) + try: + self.fd.seek(32) + rowmap = struct.unpack_from( + f"<{self.state.ysize}H", self.fd.read(self.state.ysize * 2) + ) + except struct.error as e: + msg = "Truncated MSP file in row map" + raise OSError(msg) from e + + for x, rowlen in enumerate(rowmap): + try: + if rowlen == 0: + img.write(blank_line) + continue + row = self.fd.read(rowlen) + if len(row) != rowlen: + msg = f"Truncated MSP file, expected {rowlen} bytes on row {x}" + raise OSError(msg) + idx = 0 + while idx < rowlen: + runtype = row[idx] + idx += 1 + if runtype == 0: + (runcount, runval) = struct.unpack_from("Bc", row, idx) + img.write(runval * runcount) + idx += 2 + else: + runcount = runtype + img.write(row[idx : idx + runcount]) + idx += runcount + + except struct.error as e: + msg = f"Corrupted MSP file in row {x}" + raise OSError(msg) from e + + self.set_as_raw(img.getvalue(), "1") + + return -1, 0 + + +Image.register_decoder("MSP", MspDecoder) + + +# +# write MSP files (uncompressed only) + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode != "1": + msg = f"cannot write mode {im.mode} as MSP" + raise OSError(msg) + + # create MSP header + header = [0] * 16 + + header[0], header[1] = i16(b"Da"), i16(b"nM") # version 1 + header[2], header[3] = im.size + header[4], header[5] = 1, 1 + header[6], header[7] = 1, 1 + header[8], header[9] = im.size + + checksum = 0 + for h in header: + checksum = checksum ^ h + header[12] = checksum # FIXME: is this the right field? + + # header + for h in header: + fp.write(o16(h)) + + # image body + ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 32, "1")]) + + +# +# registry + +Image.register_open(MspImageFile.format, MspImageFile, _accept) +Image.register_save(MspImageFile.format, _save) + +Image.register_extension(MspImageFile.format, ".msp") diff --git a/myenv/lib/python3.10/site-packages/PIL/PSDraw.py b/myenv/lib/python3.10/site-packages/PIL/PSDraw.py new file mode 100644 index 0000000..7fd4c5c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PSDraw.py @@ -0,0 +1,237 @@ +# +# The Python Imaging Library +# $Id$ +# +# Simple PostScript graphics interface +# +# History: +# 1996-04-20 fl Created +# 1999-01-10 fl Added gsave/grestore to image method +# 2005-05-04 fl Fixed floating point issue in image (from Eric Etheridge) +# +# Copyright (c) 1997-2005 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import sys +from typing import IO + +from . import EpsImagePlugin + +TYPE_CHECKING = False + + +## +# Simple PostScript graphics interface. + + +class PSDraw: + """ + Sets up printing to the given file. If ``fp`` is omitted, + ``sys.stdout.buffer`` is assumed. + """ + + def __init__(self, fp: IO[bytes] | None = None) -> None: + if not fp: + fp = sys.stdout.buffer + self.fp = fp + + def begin_document(self, id: str | None = None) -> None: + """Set up printing of a document. (Write PostScript DSC header.)""" + # FIXME: incomplete + self.fp.write( + b"%!PS-Adobe-3.0\n" + b"save\n" + b"/showpage { } def\n" + b"%%EndComments\n" + b"%%BeginDocument\n" + ) + # self.fp.write(ERROR_PS) # debugging! + self.fp.write(EDROFF_PS) + self.fp.write(VDI_PS) + self.fp.write(b"%%EndProlog\n") + self.isofont: dict[bytes, int] = {} + + def end_document(self) -> None: + """Ends printing. (Write PostScript DSC footer.)""" + self.fp.write(b"%%EndDocument\nrestore showpage\n%%End\n") + if hasattr(self.fp, "flush"): + self.fp.flush() + + def setfont(self, font: str, size: int) -> None: + """ + Selects which font to use. + + :param font: A PostScript font name + :param size: Size in points. + """ + font_bytes = bytes(font, "UTF-8") + if font_bytes not in self.isofont: + # reencode font + self.fp.write( + b"/PSDraw-%s ISOLatin1Encoding /%s E\n" % (font_bytes, font_bytes) + ) + self.isofont[font_bytes] = 1 + # rough + self.fp.write(b"/F0 %d /PSDraw-%s F\n" % (size, font_bytes)) + + def line(self, xy0: tuple[int, int], xy1: tuple[int, int]) -> None: + """ + Draws a line between the two points. Coordinates are given in + PostScript point coordinates (72 points per inch, (0, 0) is the lower + left corner of the page). + """ + self.fp.write(b"%d %d %d %d Vl\n" % (*xy0, *xy1)) + + def rectangle(self, box: tuple[int, int, int, int]) -> None: + """ + Draws a rectangle. + + :param box: A tuple of four integers, specifying left, bottom, width and + height. + """ + self.fp.write(b"%d %d M 0 %d %d Vr\n" % box) + + def text(self, xy: tuple[int, int], text: str) -> None: + """ + Draws text at the given position. You must use + :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method. + """ + text_bytes = bytes(text, "UTF-8") + text_bytes = b"\\(".join(text_bytes.split(b"(")) + text_bytes = b"\\)".join(text_bytes.split(b")")) + self.fp.write(b"%d %d M (%s) S\n" % (xy + (text_bytes,))) + + if TYPE_CHECKING: + from . import Image + + def image( + self, box: tuple[int, int, int, int], im: Image.Image, dpi: int | None = None + ) -> None: + """Draw a PIL image, centered in the given box.""" + # default resolution depends on mode + if not dpi: + if im.mode == "1": + dpi = 200 # fax + else: + dpi = 100 # grayscale + # image size (on paper) + x = im.size[0] * 72 / dpi + y = im.size[1] * 72 / dpi + # max allowed size + xmax = float(box[2] - box[0]) + ymax = float(box[3] - box[1]) + if x > xmax: + y = y * xmax / x + x = xmax + if y > ymax: + x = x * ymax / y + y = ymax + dx = (xmax - x) / 2 + box[0] + dy = (ymax - y) / 2 + box[1] + self.fp.write(b"gsave\n%f %f translate\n" % (dx, dy)) + if (x, y) != im.size: + # EpsImagePlugin._save prints the image at (0,0,xsize,ysize) + sx = x / im.size[0] + sy = y / im.size[1] + self.fp.write(b"%f %f scale\n" % (sx, sy)) + EpsImagePlugin._save(im, self.fp, "", 0) + self.fp.write(b"\ngrestore\n") + + +# -------------------------------------------------------------------- +# PostScript driver + +# +# EDROFF.PS -- PostScript driver for Edroff 2 +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + + +EDROFF_PS = b"""\ +/S { show } bind def +/P { moveto show } bind def +/M { moveto } bind def +/X { 0 rmoveto } bind def +/Y { 0 exch rmoveto } bind def +/E { findfont + dup maxlength dict begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + /Encoding exch def + dup /FontName exch def + currentdict end definefont pop +} bind def +/F { findfont exch scalefont dup setfont + [ exch /setfont cvx ] cvx bind def +} bind def +""" + +# +# VDI.PS -- PostScript driver for VDI meta commands +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + +VDI_PS = b"""\ +/Vm { moveto } bind def +/Va { newpath arcn stroke } bind def +/Vl { moveto lineto stroke } bind def +/Vc { newpath 0 360 arc closepath } bind def +/Vr { exch dup 0 rlineto + exch dup 0 exch rlineto + exch neg 0 rlineto + 0 exch neg rlineto + setgray fill } bind def +/Tm matrix def +/Ve { Tm currentmatrix pop + translate scale newpath 0 0 .5 0 360 arc closepath + Tm setmatrix +} bind def +/Vf { currentgray exch setgray fill setgray } bind def +""" + +# +# ERROR.PS -- Error handler +# +# History: +# 89-11-21 fl: created (pslist 1.10) +# + +ERROR_PS = b"""\ +/landscape false def +/errorBUF 200 string def +/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def +errordict begin /handleerror { + initmatrix /Courier findfont 10 scalefont setfont + newpath 72 720 moveto $error begin /newerror false def + (PostScript Error) show errorNL errorNL + (Error: ) show + /errorname load errorBUF cvs show errorNL errorNL + (Command: ) show + /command load dup type /stringtype ne { errorBUF cvs } if show + errorNL errorNL + (VMstatus: ) show + vmstatus errorBUF cvs show ( bytes available, ) show + errorBUF cvs show ( bytes used at level ) show + errorBUF cvs show errorNL errorNL + (Operand stargck: ) show errorNL /ostargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall errorNL + (Execution stargck: ) show errorNL /estargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall + end showpage +} def end +""" diff --git a/myenv/lib/python3.10/site-packages/PIL/PaletteFile.py b/myenv/lib/python3.10/site-packages/PIL/PaletteFile.py new file mode 100644 index 0000000..2a26e5d --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PaletteFile.py @@ -0,0 +1,54 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read simple, teragon-style palette files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from typing import IO + +from ._binary import o8 + + +class PaletteFile: + """File handler for Teragon-style palette files.""" + + rawmode = "RGB" + + def __init__(self, fp: IO[bytes]) -> None: + palette = [o8(i) * 3 for i in range(256)] + + while True: + s = fp.readline() + + if not s: + break + if s.startswith(b"#"): + continue + if len(s) > 100: + msg = "bad palette file" + raise SyntaxError(msg) + + v = [int(x) for x in s.split()] + try: + [i, r, g, b] = v + except ValueError: + [i, r] = v + g = b = r + + if 0 <= i <= 255: + palette[i] = o8(r) + o8(g) + o8(b) + + self.palette = b"".join(palette) + + def getpalette(self) -> tuple[bytes, str]: + return self.palette, self.rawmode diff --git a/myenv/lib/python3.10/site-packages/PIL/PalmImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/PalmImagePlugin.py new file mode 100644 index 0000000..15f7129 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PalmImagePlugin.py @@ -0,0 +1,217 @@ +# +# The Python Imaging Library. +# $Id$ +# + +## +# Image plugin for Palm pixmap images (output only). +## +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile +from ._binary import o8 +from ._binary import o16be as o16b + +# fmt: off +_Palm8BitColormapValues = ( + (255, 255, 255), (255, 204, 255), (255, 153, 255), (255, 102, 255), + (255, 51, 255), (255, 0, 255), (255, 255, 204), (255, 204, 204), + (255, 153, 204), (255, 102, 204), (255, 51, 204), (255, 0, 204), + (255, 255, 153), (255, 204, 153), (255, 153, 153), (255, 102, 153), + (255, 51, 153), (255, 0, 153), (204, 255, 255), (204, 204, 255), + (204, 153, 255), (204, 102, 255), (204, 51, 255), (204, 0, 255), + (204, 255, 204), (204, 204, 204), (204, 153, 204), (204, 102, 204), + (204, 51, 204), (204, 0, 204), (204, 255, 153), (204, 204, 153), + (204, 153, 153), (204, 102, 153), (204, 51, 153), (204, 0, 153), + (153, 255, 255), (153, 204, 255), (153, 153, 255), (153, 102, 255), + (153, 51, 255), (153, 0, 255), (153, 255, 204), (153, 204, 204), + (153, 153, 204), (153, 102, 204), (153, 51, 204), (153, 0, 204), + (153, 255, 153), (153, 204, 153), (153, 153, 153), (153, 102, 153), + (153, 51, 153), (153, 0, 153), (102, 255, 255), (102, 204, 255), + (102, 153, 255), (102, 102, 255), (102, 51, 255), (102, 0, 255), + (102, 255, 204), (102, 204, 204), (102, 153, 204), (102, 102, 204), + (102, 51, 204), (102, 0, 204), (102, 255, 153), (102, 204, 153), + (102, 153, 153), (102, 102, 153), (102, 51, 153), (102, 0, 153), + (51, 255, 255), (51, 204, 255), (51, 153, 255), (51, 102, 255), + (51, 51, 255), (51, 0, 255), (51, 255, 204), (51, 204, 204), + (51, 153, 204), (51, 102, 204), (51, 51, 204), (51, 0, 204), + (51, 255, 153), (51, 204, 153), (51, 153, 153), (51, 102, 153), + (51, 51, 153), (51, 0, 153), (0, 255, 255), (0, 204, 255), + (0, 153, 255), (0, 102, 255), (0, 51, 255), (0, 0, 255), + (0, 255, 204), (0, 204, 204), (0, 153, 204), (0, 102, 204), + (0, 51, 204), (0, 0, 204), (0, 255, 153), (0, 204, 153), + (0, 153, 153), (0, 102, 153), (0, 51, 153), (0, 0, 153), + (255, 255, 102), (255, 204, 102), (255, 153, 102), (255, 102, 102), + (255, 51, 102), (255, 0, 102), (255, 255, 51), (255, 204, 51), + (255, 153, 51), (255, 102, 51), (255, 51, 51), (255, 0, 51), + (255, 255, 0), (255, 204, 0), (255, 153, 0), (255, 102, 0), + (255, 51, 0), (255, 0, 0), (204, 255, 102), (204, 204, 102), + (204, 153, 102), (204, 102, 102), (204, 51, 102), (204, 0, 102), + (204, 255, 51), (204, 204, 51), (204, 153, 51), (204, 102, 51), + (204, 51, 51), (204, 0, 51), (204, 255, 0), (204, 204, 0), + (204, 153, 0), (204, 102, 0), (204, 51, 0), (204, 0, 0), + (153, 255, 102), (153, 204, 102), (153, 153, 102), (153, 102, 102), + (153, 51, 102), (153, 0, 102), (153, 255, 51), (153, 204, 51), + (153, 153, 51), (153, 102, 51), (153, 51, 51), (153, 0, 51), + (153, 255, 0), (153, 204, 0), (153, 153, 0), (153, 102, 0), + (153, 51, 0), (153, 0, 0), (102, 255, 102), (102, 204, 102), + (102, 153, 102), (102, 102, 102), (102, 51, 102), (102, 0, 102), + (102, 255, 51), (102, 204, 51), (102, 153, 51), (102, 102, 51), + (102, 51, 51), (102, 0, 51), (102, 255, 0), (102, 204, 0), + (102, 153, 0), (102, 102, 0), (102, 51, 0), (102, 0, 0), + (51, 255, 102), (51, 204, 102), (51, 153, 102), (51, 102, 102), + (51, 51, 102), (51, 0, 102), (51, 255, 51), (51, 204, 51), + (51, 153, 51), (51, 102, 51), (51, 51, 51), (51, 0, 51), + (51, 255, 0), (51, 204, 0), (51, 153, 0), (51, 102, 0), + (51, 51, 0), (51, 0, 0), (0, 255, 102), (0, 204, 102), + (0, 153, 102), (0, 102, 102), (0, 51, 102), (0, 0, 102), + (0, 255, 51), (0, 204, 51), (0, 153, 51), (0, 102, 51), + (0, 51, 51), (0, 0, 51), (0, 255, 0), (0, 204, 0), + (0, 153, 0), (0, 102, 0), (0, 51, 0), (17, 17, 17), + (34, 34, 34), (68, 68, 68), (85, 85, 85), (119, 119, 119), + (136, 136, 136), (170, 170, 170), (187, 187, 187), (221, 221, 221), + (238, 238, 238), (192, 192, 192), (128, 0, 0), (128, 0, 128), + (0, 128, 0), (0, 128, 128), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)) +# fmt: on + + +# so build a prototype image to be used for palette resampling +def build_prototype_image() -> Image.Image: + image = Image.new("L", (1, len(_Palm8BitColormapValues))) + image.putdata(list(range(len(_Palm8BitColormapValues)))) + palettedata: tuple[int, ...] = () + for colormapValue in _Palm8BitColormapValues: + palettedata += colormapValue + palettedata += (0, 0, 0) * (256 - len(_Palm8BitColormapValues)) + image.putpalette(palettedata) + return image + + +Palm8BitColormapImage = build_prototype_image() + +# OK, we now have in Palm8BitColormapImage, +# a "P"-mode image with the right palette +# +# -------------------------------------------------------------------- + +_FLAGS = {"custom-colormap": 0x4000, "is-compressed": 0x8000, "has-transparent": 0x2000} + +_COMPRESSION_TYPES = {"none": 0xFF, "rle": 0x01, "scanline": 0x00} + + +# +# -------------------------------------------------------------------- + +## +# (Internal) Image save plugin for the Palm format. + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode == "P": + rawmode = "P" + bpp = 8 + version = 1 + + elif im.mode == "L": + if im.encoderinfo.get("bpp") in (1, 2, 4): + # this is 8-bit grayscale, so we shift it to get the high-order bits, + # and invert it because + # Palm does grayscale from white (0) to black (1) + bpp = im.encoderinfo["bpp"] + maxval = (1 << bpp) - 1 + shift = 8 - bpp + im = im.point(lambda x: maxval - (x >> shift)) + elif im.info.get("bpp") in (1, 2, 4): + # here we assume that even though the inherent mode is 8-bit grayscale, + # only the lower bpp bits are significant. + # We invert them to match the Palm. + bpp = im.info["bpp"] + maxval = (1 << bpp) - 1 + im = im.point(lambda x: maxval - (x & maxval)) + else: + msg = f"cannot write mode {im.mode} as Palm" + raise OSError(msg) + + # we ignore the palette here + im._mode = "P" + rawmode = f"P;{bpp}" + version = 1 + + elif im.mode == "1": + # monochrome -- write it inverted, as is the Palm standard + rawmode = "1;I" + bpp = 1 + version = 0 + + else: + msg = f"cannot write mode {im.mode} as Palm" + raise OSError(msg) + + # + # make sure image data is available + im.load() + + # write header + + cols = im.size[0] + rows = im.size[1] + + rowbytes = int((cols + (16 // bpp - 1)) / (16 // bpp)) * 2 + transparent_index = 0 + compression_type = _COMPRESSION_TYPES["none"] + + flags = 0 + if im.mode == "P": + flags |= _FLAGS["custom-colormap"] + colormap = im.im.getpalette() + colors = len(colormap) // 3 + colormapsize = 4 * colors + 2 + else: + colormapsize = 0 + + if "offset" in im.info: + offset = (rowbytes * rows + 16 + 3 + colormapsize) // 4 + else: + offset = 0 + + fp.write(o16b(cols) + o16b(rows) + o16b(rowbytes) + o16b(flags)) + fp.write(o8(bpp)) + fp.write(o8(version)) + fp.write(o16b(offset)) + fp.write(o8(transparent_index)) + fp.write(o8(compression_type)) + fp.write(o16b(0)) # reserved by Palm + + # now write colormap if necessary + + if colormapsize: + fp.write(o16b(colors)) + for i in range(colors): + fp.write(o8(i)) + fp.write(colormap[3 * i : 3 * i + 3]) + + # now convert data to raw form + ImageFile._save( + im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, rowbytes, 1))] + ) + + if hasattr(fp, "flush"): + fp.flush() + + +# +# -------------------------------------------------------------------- + +Image.register_save("Palm", _save) + +Image.register_extension("Palm", ".palm") + +Image.register_mime("Palm", "image/palm") diff --git a/myenv/lib/python3.10/site-packages/PIL/PcdImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/PcdImagePlugin.py new file mode 100644 index 0000000..3aa2499 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PcdImagePlugin.py @@ -0,0 +1,64 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCD file handling +# +# History: +# 96-05-10 fl Created +# 96-05-27 fl Added draft mode (128x192, 256x384) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image, ImageFile + +## +# Image plugin for PhotoCD images. This plugin only reads the 768x512 +# image from the file; higher resolutions are encoded in a proprietary +# encoding. + + +class PcdImageFile(ImageFile.ImageFile): + format = "PCD" + format_description = "Kodak PhotoCD" + + def _open(self) -> None: + # rough + assert self.fp is not None + + self.fp.seek(2048) + s = self.fp.read(2048) + + if not s.startswith(b"PCD_"): + msg = "not a PCD file" + raise SyntaxError(msg) + + orientation = s[1538] & 3 + self.tile_post_rotate = None + if orientation == 1: + self.tile_post_rotate = 90 + elif orientation == 3: + self.tile_post_rotate = -90 + + self._mode = "RGB" + self._size = 768, 512 # FIXME: not correct for rotated images! + self.tile = [ImageFile._Tile("pcd", (0, 0) + self.size, 96 * 2048)] + + def load_end(self) -> None: + if self.tile_post_rotate: + # Handle rotated PCDs + self.im = self.im.rotate(self.tile_post_rotate) + self._size = self.im.size + + +# +# registry + +Image.register_open(PcdImageFile.format, PcdImageFile) + +Image.register_extension(PcdImageFile.format, ".pcd") diff --git a/myenv/lib/python3.10/site-packages/PIL/PcfFontFile.py b/myenv/lib/python3.10/site-packages/PIL/PcfFontFile.py new file mode 100644 index 0000000..0d1968b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PcfFontFile.py @@ -0,0 +1,254 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library +# $Id$ +# +# portable compiled font file parser +# +# history: +# 1997-08-19 fl created +# 2003-09-13 fl fixed loading of unicode fonts +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +from typing import BinaryIO, Callable + +from . import FontFile, Image +from ._binary import i8 +from ._binary import i16be as b16 +from ._binary import i16le as l16 +from ._binary import i32be as b32 +from ._binary import i32le as l32 + +# -------------------------------------------------------------------- +# declarations + +PCF_MAGIC = 0x70636601 # "\x01fcp" + +PCF_PROPERTIES = 1 << 0 +PCF_ACCELERATORS = 1 << 1 +PCF_METRICS = 1 << 2 +PCF_BITMAPS = 1 << 3 +PCF_INK_METRICS = 1 << 4 +PCF_BDF_ENCODINGS = 1 << 5 +PCF_SWIDTHS = 1 << 6 +PCF_GLYPH_NAMES = 1 << 7 +PCF_BDF_ACCELERATORS = 1 << 8 + +BYTES_PER_ROW: list[Callable[[int], int]] = [ + lambda bits: ((bits + 7) >> 3), + lambda bits: ((bits + 15) >> 3) & ~1, + lambda bits: ((bits + 31) >> 3) & ~3, + lambda bits: ((bits + 63) >> 3) & ~7, +] + + +def sz(s: bytes, o: int) -> bytes: + return s[o : s.index(b"\0", o)] + + +class PcfFontFile(FontFile.FontFile): + """Font file plugin for the X11 PCF format.""" + + name = "name" + + def __init__(self, fp: BinaryIO, charset_encoding: str = "iso8859-1"): + self.charset_encoding = charset_encoding + + magic = l32(fp.read(4)) + if magic != PCF_MAGIC: + msg = "not a PCF file" + raise SyntaxError(msg) + + super().__init__() + + count = l32(fp.read(4)) + self.toc = {} + for i in range(count): + type = l32(fp.read(4)) + self.toc[type] = l32(fp.read(4)), l32(fp.read(4)), l32(fp.read(4)) + + self.fp = fp + + self.info = self._load_properties() + + metrics = self._load_metrics() + bitmaps = self._load_bitmaps(metrics) + encoding = self._load_encoding() + + # + # create glyph structure + + for ch, ix in enumerate(encoding): + if ix is not None: + ( + xsize, + ysize, + left, + right, + width, + ascent, + descent, + attributes, + ) = metrics[ix] + self.glyph[ch] = ( + (width, 0), + (left, descent - ysize, xsize + left, descent), + (0, 0, xsize, ysize), + bitmaps[ix], + ) + + def _getformat( + self, tag: int + ) -> tuple[BinaryIO, int, Callable[[bytes], int], Callable[[bytes], int]]: + format, size, offset = self.toc[tag] + + fp = self.fp + fp.seek(offset) + + format = l32(fp.read(4)) + + if format & 4: + i16, i32 = b16, b32 + else: + i16, i32 = l16, l32 + + return fp, format, i16, i32 + + def _load_properties(self) -> dict[bytes, bytes | int]: + # + # font properties + + properties = {} + + fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) + + nprops = i32(fp.read(4)) + + # read property description + p = [(i32(fp.read(4)), i8(fp.read(1)), i32(fp.read(4))) for _ in range(nprops)] + + if nprops & 3: + fp.seek(4 - (nprops & 3), io.SEEK_CUR) # pad + + data = fp.read(i32(fp.read(4))) + + for k, s, v in p: + property_value: bytes | int = sz(data, v) if s else v + properties[sz(data, k)] = property_value + + return properties + + def _load_metrics(self) -> list[tuple[int, int, int, int, int, int, int, int]]: + # + # font metrics + + metrics: list[tuple[int, int, int, int, int, int, int, int]] = [] + + fp, format, i16, i32 = self._getformat(PCF_METRICS) + + append = metrics.append + + if (format & 0xFF00) == 0x100: + # "compressed" metrics + for i in range(i16(fp.read(2))): + left = i8(fp.read(1)) - 128 + right = i8(fp.read(1)) - 128 + width = i8(fp.read(1)) - 128 + ascent = i8(fp.read(1)) - 128 + descent = i8(fp.read(1)) - 128 + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, 0)) + + else: + # "jumbo" metrics + for i in range(i32(fp.read(4))): + left = i16(fp.read(2)) + right = i16(fp.read(2)) + width = i16(fp.read(2)) + ascent = i16(fp.read(2)) + descent = i16(fp.read(2)) + attributes = i16(fp.read(2)) + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, attributes)) + + return metrics + + def _load_bitmaps( + self, metrics: list[tuple[int, int, int, int, int, int, int, int]] + ) -> list[Image.Image]: + # + # bitmap data + + fp, format, i16, i32 = self._getformat(PCF_BITMAPS) + + nbitmaps = i32(fp.read(4)) + + if nbitmaps != len(metrics): + msg = "Wrong number of bitmaps" + raise OSError(msg) + + offsets = [i32(fp.read(4)) for _ in range(nbitmaps)] + + bitmap_sizes = [i32(fp.read(4)) for _ in range(4)] + + # byteorder = format & 4 # non-zero => MSB + bitorder = format & 8 # non-zero => MSB + padindex = format & 3 + + bitmapsize = bitmap_sizes[padindex] + offsets.append(bitmapsize) + + data = fp.read(bitmapsize) + + pad = BYTES_PER_ROW[padindex] + mode = "1;R" + if bitorder: + mode = "1" + + bitmaps = [] + for i in range(nbitmaps): + xsize, ysize = metrics[i][:2] + b, e = offsets[i : i + 2] + bitmaps.append( + Image.frombytes("1", (xsize, ysize), data[b:e], "raw", mode, pad(xsize)) + ) + + return bitmaps + + def _load_encoding(self) -> list[int | None]: + fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) + + first_col, last_col = i16(fp.read(2)), i16(fp.read(2)) + first_row, last_row = i16(fp.read(2)), i16(fp.read(2)) + + i16(fp.read(2)) # default + + nencoding = (last_col - first_col + 1) * (last_row - first_row + 1) + + # map character code to bitmap index + encoding: list[int | None] = [None] * min(256, nencoding) + + encoding_offsets = [i16(fp.read(2)) for _ in range(nencoding)] + + for i in range(first_col, len(encoding)): + try: + encoding_offset = encoding_offsets[ + ord(bytearray([i]).decode(self.charset_encoding)) + ] + if encoding_offset != 0xFFFF: + encoding[i] = encoding_offset + except UnicodeDecodeError: + # character is not supported in selected encoding + pass + + return encoding diff --git a/myenv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py new file mode 100644 index 0000000..458d586 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py @@ -0,0 +1,228 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCX file handling +# +# This format was originally used by ZSoft's popular PaintBrush +# program for the IBM PC. It is also supported by many MS-DOS and +# Windows applications, including the Windows PaintBrush program in +# Windows 3. +# +# history: +# 1995-09-01 fl Created +# 1996-05-20 fl Fixed RGB support +# 1997-01-03 fl Fixed 2-bit and 4-bit support +# 1999-02-03 fl Fixed 8-bit support (broken in 1.0b1) +# 1999-02-07 fl Added write support +# 2002-06-09 fl Made 2-bit and 4-bit support a bit more robust +# 2002-07-30 fl Seek from to current position, not beginning of file +# 2003-06-03 fl Extract DPI settings (info["dpi"]) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import logging +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +logger = logging.getLogger(__name__) + + +def _accept(prefix: bytes) -> bool: + return prefix[0] == 10 and prefix[1] in [0, 2, 3, 5] + + +## +# Image plugin for Paintbrush images. + + +class PcxImageFile(ImageFile.ImageFile): + format = "PCX" + format_description = "Paintbrush" + + def _open(self) -> None: + # header + assert self.fp is not None + + s = self.fp.read(68) + if not _accept(s): + msg = "not a PCX file" + raise SyntaxError(msg) + + # image + bbox = i16(s, 4), i16(s, 6), i16(s, 8) + 1, i16(s, 10) + 1 + if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]: + msg = "bad PCX image size" + raise SyntaxError(msg) + logger.debug("BBox: %s %s %s %s", *bbox) + + offset = self.fp.tell() + 60 + + # format + version = s[1] + bits = s[3] + planes = s[65] + provided_stride = i16(s, 66) + logger.debug( + "PCX version %s, bits %s, planes %s, stride %s", + version, + bits, + planes, + provided_stride, + ) + + self.info["dpi"] = i16(s, 12), i16(s, 14) + + if bits == 1 and planes == 1: + mode = rawmode = "1" + + elif bits == 1 and planes in (2, 4): + mode = "P" + rawmode = f"P;{planes}L" + self.palette = ImagePalette.raw("RGB", s[16:64]) + + elif version == 5 and bits == 8 and planes == 1: + mode = rawmode = "L" + # FIXME: hey, this doesn't work with the incremental loader !!! + self.fp.seek(-769, io.SEEK_END) + s = self.fp.read(769) + if len(s) == 769 and s[0] == 12: + # check if the palette is linear grayscale + for i in range(256): + if s[i * 3 + 1 : i * 3 + 4] != o8(i) * 3: + mode = rawmode = "P" + break + if mode == "P": + self.palette = ImagePalette.raw("RGB", s[1:]) + + elif version == 5 and bits == 8 and planes == 3: + mode = "RGB" + rawmode = "RGB;L" + + else: + msg = "unknown PCX mode" + raise OSError(msg) + + self._mode = mode + self._size = bbox[2] - bbox[0], bbox[3] - bbox[1] + + # Don't trust the passed in stride. + # Calculate the approximate position for ourselves. + # CVE-2020-35653 + stride = (self._size[0] * bits + 7) // 8 + + # While the specification states that this must be even, + # not all images follow this + if provided_stride != stride: + stride += stride % 2 + + bbox = (0, 0) + self.size + logger.debug("size: %sx%s", *self.size) + + self.tile = [ImageFile._Tile("pcx", bbox, offset, (rawmode, planes * stride))] + + +# -------------------------------------------------------------------- +# save PCX files + + +SAVE = { + # mode: (version, bits, planes, raw mode) + "1": (2, 1, 1, "1"), + "L": (5, 8, 1, "L"), + "P": (5, 8, 1, "P"), + "RGB": (5, 8, 3, "RGB;L"), +} + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + version, bits, planes, rawmode = SAVE[im.mode] + except KeyError as e: + msg = f"Cannot save {im.mode} images as PCX" + raise ValueError(msg) from e + + # bytes per plane + stride = (im.size[0] * bits + 7) // 8 + # stride should be even + stride += stride % 2 + # Stride needs to be kept in sync with the PcxEncode.c version. + # Ideally it should be passed in in the state, but the bytes value + # gets overwritten. + + logger.debug( + "PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d", + im.size[0], + bits, + stride, + ) + + # under windows, we could determine the current screen size with + # "Image.core.display_mode()[1]", but I think that's overkill... + + screen = im.size + + dpi = 100, 100 + + # PCX header + fp.write( + o8(10) + + o8(version) + + o8(1) + + o8(bits) + + o16(0) + + o16(0) + + o16(im.size[0] - 1) + + o16(im.size[1] - 1) + + o16(dpi[0]) + + o16(dpi[1]) + + b"\0" * 24 + + b"\xff" * 24 + + b"\0" + + o8(planes) + + o16(stride) + + o16(1) + + o16(screen[0]) + + o16(screen[1]) + + b"\0" * 54 + ) + + assert fp.tell() == 128 + + ImageFile._save( + im, fp, [ImageFile._Tile("pcx", (0, 0) + im.size, 0, (rawmode, bits * planes))] + ) + + if im.mode == "P": + # colour palette + fp.write(o8(12)) + palette = im.im.getpalette("RGB", "RGB") + palette += b"\x00" * (768 - len(palette)) + fp.write(palette) # 768 bytes + elif im.mode == "L": + # grayscale palette + fp.write(o8(12)) + for i in range(256): + fp.write(o8(i) * 3) + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PcxImageFile.format, PcxImageFile, _accept) +Image.register_save(PcxImageFile.format, _save) + +Image.register_extension(PcxImageFile.format, ".pcx") + +Image.register_mime(PcxImageFile.format, "image/x-pcx") diff --git a/myenv/lib/python3.10/site-packages/PIL/PdfImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/PdfImagePlugin.py new file mode 100644 index 0000000..e9c20dd --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PdfImagePlugin.py @@ -0,0 +1,311 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PDF (Acrobat) file handling +# +# History: +# 1996-07-16 fl Created +# 1997-01-18 fl Fixed header +# 2004-02-21 fl Fixes for 1/L/CMYK images, etc. +# 2004-02-24 fl Fixes for 1 and P images. +# +# Copyright (c) 1997-2004 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996-1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +# Image plugin for PDF images (output only). +## +from __future__ import annotations + +import io +import math +import os +import time +from typing import IO, Any + +from . import Image, ImageFile, ImageSequence, PdfParser, __version__, features + +# +# -------------------------------------------------------------------- + +# object ids: +# 1. catalogue +# 2. pages +# 3. image +# 4. page +# 5. page contents + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +## +# (Internal) Image save plugin for the PDF format. + + +def _write_image( + im: Image.Image, + filename: str | bytes, + existing_pdf: PdfParser.PdfParser, + image_refs: list[PdfParser.IndirectReference], +) -> tuple[PdfParser.IndirectReference, str]: + # FIXME: Should replace ASCIIHexDecode with RunLengthDecode + # (packbits) or LZWDecode (tiff/lzw compression). Note that + # PDF 1.2 also supports Flatedecode (zip compression). + + params = None + decode = None + + # + # Get image characteristics + + width, height = im.size + + dict_obj: dict[str, Any] = {"BitsPerComponent": 8} + if im.mode == "1": + if features.check("libtiff"): + decode_filter = "CCITTFaxDecode" + dict_obj["BitsPerComponent"] = 1 + params = PdfParser.PdfArray( + [ + PdfParser.PdfDict( + { + "K": -1, + "BlackIs1": True, + "Columns": width, + "Rows": height, + } + ) + ] + ) + else: + decode_filter = "DCTDecode" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "L": + decode_filter = "DCTDecode" + # params = f"<< /Predictor 15 /Columns {width-2} >>" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "LA": + decode_filter = "JPXDecode" + # params = f"<< /Predictor 15 /Columns {width-2} >>" + procset = "ImageB" # grayscale + dict_obj["SMaskInData"] = 1 + elif im.mode == "P": + decode_filter = "ASCIIHexDecode" + palette = im.getpalette() + assert palette is not None + dict_obj["ColorSpace"] = [ + PdfParser.PdfName("Indexed"), + PdfParser.PdfName("DeviceRGB"), + len(palette) // 3 - 1, + PdfParser.PdfBinary(palette), + ] + procset = "ImageI" # indexed color + + if "transparency" in im.info: + smask = im.convert("LA").getchannel("A") + smask.encoderinfo = {} + + image_ref = _write_image(smask, filename, existing_pdf, image_refs)[0] + dict_obj["SMask"] = image_ref + elif im.mode == "RGB": + decode_filter = "DCTDecode" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceRGB") + procset = "ImageC" # color images + elif im.mode == "RGBA": + decode_filter = "JPXDecode" + procset = "ImageC" # color images + dict_obj["SMaskInData"] = 1 + elif im.mode == "CMYK": + decode_filter = "DCTDecode" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceCMYK") + procset = "ImageC" # color images + decode = [1, 0, 1, 0, 1, 0, 1, 0] + else: + msg = f"cannot save mode {im.mode}" + raise ValueError(msg) + + # + # image + + op = io.BytesIO() + + if decode_filter == "ASCIIHexDecode": + ImageFile._save(im, op, [ImageFile._Tile("hex", (0, 0) + im.size, 0, im.mode)]) + elif decode_filter == "CCITTFaxDecode": + im.save( + op, + "TIFF", + compression="group4", + # use a single strip + strip_size=math.ceil(width / 8) * height, + ) + elif decode_filter == "DCTDecode": + Image.SAVE["JPEG"](im, op, filename) + elif decode_filter == "JPXDecode": + del dict_obj["BitsPerComponent"] + Image.SAVE["JPEG2000"](im, op, filename) + else: + msg = f"unsupported PDF filter ({decode_filter})" + raise ValueError(msg) + + stream = op.getvalue() + filter: PdfParser.PdfArray | PdfParser.PdfName + if decode_filter == "CCITTFaxDecode": + stream = stream[8:] + filter = PdfParser.PdfArray([PdfParser.PdfName(decode_filter)]) + else: + filter = PdfParser.PdfName(decode_filter) + + image_ref = image_refs.pop(0) + existing_pdf.write_obj( + image_ref, + stream=stream, + Type=PdfParser.PdfName("XObject"), + Subtype=PdfParser.PdfName("Image"), + Width=width, # * 72.0 / x_resolution, + Height=height, # * 72.0 / y_resolution, + Filter=filter, + Decode=decode, + DecodeParms=params, + **dict_obj, + ) + + return image_ref, procset + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, save_all: bool = False +) -> None: + is_appending = im.encoderinfo.get("append", False) + filename_str = filename.decode() if isinstance(filename, bytes) else filename + if is_appending: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename_str, mode="r+b") + else: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename_str, mode="w+b") + + dpi = im.encoderinfo.get("dpi") + if dpi: + x_resolution = dpi[0] + y_resolution = dpi[1] + else: + x_resolution = y_resolution = im.encoderinfo.get("resolution", 72.0) + + info = { + "title": ( + None if is_appending else os.path.splitext(os.path.basename(filename))[0] + ), + "author": None, + "subject": None, + "keywords": None, + "creator": None, + "producer": None, + "creationDate": None if is_appending else time.gmtime(), + "modDate": None if is_appending else time.gmtime(), + } + for k, default in info.items(): + v = im.encoderinfo.get(k) if k in im.encoderinfo else default + if v: + existing_pdf.info[k[0].upper() + k[1:]] = v + + # + # make sure image data is available + im.load() + + existing_pdf.start_writing() + existing_pdf.write_header() + existing_pdf.write_comment(f"created by Pillow {__version__} PDF driver") + + # + # pages + ims = [im] + if save_all: + append_images = im.encoderinfo.get("append_images", []) + for append_im in append_images: + append_im.encoderinfo = im.encoderinfo.copy() + ims.append(append_im) + number_of_pages = 0 + image_refs = [] + page_refs = [] + contents_refs = [] + for im in ims: + im_number_of_pages = 1 + if save_all: + im_number_of_pages = getattr(im, "n_frames", 1) + number_of_pages += im_number_of_pages + for i in range(im_number_of_pages): + image_refs.append(existing_pdf.next_object_id(0)) + if im.mode == "P" and "transparency" in im.info: + image_refs.append(existing_pdf.next_object_id(0)) + + page_refs.append(existing_pdf.next_object_id(0)) + contents_refs.append(existing_pdf.next_object_id(0)) + existing_pdf.pages.append(page_refs[-1]) + + # + # catalog and list of pages + existing_pdf.write_catalog() + + page_number = 0 + for im_sequence in ims: + im_pages: ImageSequence.Iterator | list[Image.Image] = ( + ImageSequence.Iterator(im_sequence) if save_all else [im_sequence] + ) + for im in im_pages: + image_ref, procset = _write_image(im, filename, existing_pdf, image_refs) + + # + # page + + existing_pdf.write_page( + page_refs[page_number], + Resources=PdfParser.PdfDict( + ProcSet=[PdfParser.PdfName("PDF"), PdfParser.PdfName(procset)], + XObject=PdfParser.PdfDict(image=image_ref), + ), + MediaBox=[ + 0, + 0, + im.width * 72.0 / x_resolution, + im.height * 72.0 / y_resolution, + ], + Contents=contents_refs[page_number], + ) + + # + # page contents + + page_contents = b"q %f 0 0 %f 0 0 cm /image Do Q\n" % ( + im.width * 72.0 / x_resolution, + im.height * 72.0 / y_resolution, + ) + + existing_pdf.write_obj(contents_refs[page_number], stream=page_contents) + + page_number += 1 + + # + # trailer + existing_pdf.write_xref_and_trailer() + if hasattr(fp, "flush"): + fp.flush() + existing_pdf.close() + + +# +# -------------------------------------------------------------------- + + +Image.register_save("PDF", _save) +Image.register_save_all("PDF", _save_all) + +Image.register_extension("PDF", ".pdf") + +Image.register_mime("PDF", "application/pdf") diff --git a/myenv/lib/python3.10/site-packages/PIL/PdfParser.py b/myenv/lib/python3.10/site-packages/PIL/PdfParser.py new file mode 100644 index 0000000..73d8c21 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PdfParser.py @@ -0,0 +1,1074 @@ +from __future__ import annotations + +import calendar +import codecs +import collections +import mmap +import os +import re +import time +import zlib +from typing import IO, Any, NamedTuple, Union + + +# see 7.9.2.2 Text String Type on page 86 and D.3 PDFDocEncoding Character Set +# on page 656 +def encode_text(s: str) -> bytes: + return codecs.BOM_UTF16_BE + s.encode("utf_16_be") + + +PDFDocEncoding = { + 0x16: "\u0017", + 0x18: "\u02d8", + 0x19: "\u02c7", + 0x1A: "\u02c6", + 0x1B: "\u02d9", + 0x1C: "\u02dd", + 0x1D: "\u02db", + 0x1E: "\u02da", + 0x1F: "\u02dc", + 0x80: "\u2022", + 0x81: "\u2020", + 0x82: "\u2021", + 0x83: "\u2026", + 0x84: "\u2014", + 0x85: "\u2013", + 0x86: "\u0192", + 0x87: "\u2044", + 0x88: "\u2039", + 0x89: "\u203a", + 0x8A: "\u2212", + 0x8B: "\u2030", + 0x8C: "\u201e", + 0x8D: "\u201c", + 0x8E: "\u201d", + 0x8F: "\u2018", + 0x90: "\u2019", + 0x91: "\u201a", + 0x92: "\u2122", + 0x93: "\ufb01", + 0x94: "\ufb02", + 0x95: "\u0141", + 0x96: "\u0152", + 0x97: "\u0160", + 0x98: "\u0178", + 0x99: "\u017d", + 0x9A: "\u0131", + 0x9B: "\u0142", + 0x9C: "\u0153", + 0x9D: "\u0161", + 0x9E: "\u017e", + 0xA0: "\u20ac", +} + + +def decode_text(b: bytes) -> str: + if b[: len(codecs.BOM_UTF16_BE)] == codecs.BOM_UTF16_BE: + return b[len(codecs.BOM_UTF16_BE) :].decode("utf_16_be") + else: + return "".join(PDFDocEncoding.get(byte, chr(byte)) for byte in b) + + +class PdfFormatError(RuntimeError): + """An error that probably indicates a syntactic or semantic error in the + PDF file structure""" + + pass + + +def check_format_condition(condition: bool, error_message: str) -> None: + if not condition: + raise PdfFormatError(error_message) + + +class IndirectReferenceTuple(NamedTuple): + object_id: int + generation: int + + +class IndirectReference(IndirectReferenceTuple): + def __str__(self) -> str: + return f"{self.object_id} {self.generation} R" + + def __bytes__(self) -> bytes: + return self.__str__().encode("us-ascii") + + def __eq__(self, other: object) -> bool: + if self.__class__ is not other.__class__: + return False + assert isinstance(other, IndirectReference) + return other.object_id == self.object_id and other.generation == self.generation + + def __ne__(self, other: object) -> bool: + return not (self == other) + + def __hash__(self) -> int: + return hash((self.object_id, self.generation)) + + +class IndirectObjectDef(IndirectReference): + def __str__(self) -> str: + return f"{self.object_id} {self.generation} obj" + + +class XrefTable: + def __init__(self) -> None: + self.existing_entries: dict[int, tuple[int, int]] = ( + {} + ) # object ID => (offset, generation) + self.new_entries: dict[int, tuple[int, int]] = ( + {} + ) # object ID => (offset, generation) + self.deleted_entries = {0: 65536} # object ID => generation + self.reading_finished = False + + def __setitem__(self, key: int, value: tuple[int, int]) -> None: + if self.reading_finished: + self.new_entries[key] = value + else: + self.existing_entries[key] = value + if key in self.deleted_entries: + del self.deleted_entries[key] + + def __getitem__(self, key: int) -> tuple[int, int]: + try: + return self.new_entries[key] + except KeyError: + return self.existing_entries[key] + + def __delitem__(self, key: int) -> None: + if key in self.new_entries: + generation = self.new_entries[key][1] + 1 + del self.new_entries[key] + self.deleted_entries[key] = generation + elif key in self.existing_entries: + generation = self.existing_entries[key][1] + 1 + self.deleted_entries[key] = generation + elif key in self.deleted_entries: + generation = self.deleted_entries[key] + else: + msg = f"object ID {key} cannot be deleted because it doesn't exist" + raise IndexError(msg) + + def __contains__(self, key: int) -> bool: + return key in self.existing_entries or key in self.new_entries + + def __len__(self) -> int: + return len( + set(self.existing_entries.keys()) + | set(self.new_entries.keys()) + | set(self.deleted_entries.keys()) + ) + + def keys(self) -> set[int]: + return ( + set(self.existing_entries.keys()) - set(self.deleted_entries.keys()) + ) | set(self.new_entries.keys()) + + def write(self, f: IO[bytes]) -> int: + keys = sorted(set(self.new_entries.keys()) | set(self.deleted_entries.keys())) + deleted_keys = sorted(set(self.deleted_entries.keys())) + startxref = f.tell() + f.write(b"xref\n") + while keys: + # find a contiguous sequence of object IDs + prev: int | None = None + for index, key in enumerate(keys): + if prev is None or prev + 1 == key: + prev = key + else: + contiguous_keys = keys[:index] + keys = keys[index:] + break + else: + contiguous_keys = keys + keys = [] + f.write(b"%d %d\n" % (contiguous_keys[0], len(contiguous_keys))) + for object_id in contiguous_keys: + if object_id in self.new_entries: + f.write(b"%010d %05d n \n" % self.new_entries[object_id]) + else: + this_deleted_object_id = deleted_keys.pop(0) + check_format_condition( + object_id == this_deleted_object_id, + f"expected the next deleted object ID to be {object_id}, " + f"instead found {this_deleted_object_id}", + ) + try: + next_in_linked_list = deleted_keys[0] + except IndexError: + next_in_linked_list = 0 + f.write( + b"%010d %05d f \n" + % (next_in_linked_list, self.deleted_entries[object_id]) + ) + return startxref + + +class PdfName: + name: bytes + + def __init__(self, name: PdfName | bytes | str) -> None: + if isinstance(name, PdfName): + self.name = name.name + elif isinstance(name, bytes): + self.name = name + else: + self.name = name.encode("us-ascii") + + def name_as_str(self) -> str: + return self.name.decode("us-ascii") + + def __eq__(self, other: object) -> bool: + return ( + isinstance(other, PdfName) and other.name == self.name + ) or other == self.name + + def __hash__(self) -> int: + return hash(self.name) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({repr(self.name)})" + + @classmethod + def from_pdf_stream(cls, data: bytes) -> PdfName: + return cls(PdfParser.interpret_name(data)) + + allowed_chars = set(range(33, 127)) - {ord(c) for c in "#%/()<>[]{}"} + + def __bytes__(self) -> bytes: + result = bytearray(b"/") + for b in self.name: + if b in self.allowed_chars: + result.append(b) + else: + result.extend(b"#%02X" % b) + return bytes(result) + + +class PdfArray(list[Any]): + def __bytes__(self) -> bytes: + return b"[ " + b" ".join(pdf_repr(x) for x in self) + b" ]" + + +TYPE_CHECKING = False +if TYPE_CHECKING: + _DictBase = collections.UserDict[Union[str, bytes], Any] +else: + _DictBase = collections.UserDict + + +class PdfDict(_DictBase): + def __setattr__(self, key: str, value: Any) -> None: + if key == "data": + collections.UserDict.__setattr__(self, key, value) + else: + self[key.encode("us-ascii")] = value + + def __getattr__(self, key: str) -> str | time.struct_time: + try: + value = self[key.encode("us-ascii")] + except KeyError as e: + raise AttributeError(key) from e + if isinstance(value, bytes): + value = decode_text(value) + if key.endswith("Date"): + if value.startswith("D:"): + value = value[2:] + + relationship = "Z" + if len(value) > 17: + relationship = value[14] + offset = int(value[15:17]) * 60 + if len(value) > 20: + offset += int(value[18:20]) + + format = "%Y%m%d%H%M%S"[: len(value) - 2] + value = time.strptime(value[: len(format) + 2], format) + if relationship in ["+", "-"]: + offset *= 60 + if relationship == "+": + offset *= -1 + value = time.gmtime(calendar.timegm(value) + offset) + return value + + def __bytes__(self) -> bytes: + out = bytearray(b"<<") + for key, value in self.items(): + if value is None: + continue + value = pdf_repr(value) + out.extend(b"\n") + out.extend(bytes(PdfName(key))) + out.extend(b" ") + out.extend(value) + out.extend(b"\n>>") + return bytes(out) + + +class PdfBinary: + def __init__(self, data: list[int] | bytes) -> None: + self.data = data + + def __bytes__(self) -> bytes: + return b"<%s>" % b"".join(b"%02X" % b for b in self.data) + + +class PdfStream: + def __init__(self, dictionary: PdfDict, buf: bytes) -> None: + self.dictionary = dictionary + self.buf = buf + + def decode(self) -> bytes: + try: + filter = self.dictionary[b"Filter"] + except KeyError: + return self.buf + if filter == b"FlateDecode": + try: + expected_length = self.dictionary[b"DL"] + except KeyError: + expected_length = self.dictionary[b"Length"] + return zlib.decompress(self.buf, bufsize=int(expected_length)) + else: + msg = f"stream filter {repr(filter)} unknown/unsupported" + raise NotImplementedError(msg) + + +def pdf_repr(x: Any) -> bytes: + if x is True: + return b"true" + elif x is False: + return b"false" + elif x is None: + return b"null" + elif isinstance(x, (PdfName, PdfDict, PdfArray, PdfBinary)): + return bytes(x) + elif isinstance(x, (int, float)): + return str(x).encode("us-ascii") + elif isinstance(x, time.struct_time): + return b"(D:" + time.strftime("%Y%m%d%H%M%SZ", x).encode("us-ascii") + b")" + elif isinstance(x, dict): + return bytes(PdfDict(x)) + elif isinstance(x, list): + return bytes(PdfArray(x)) + elif isinstance(x, str): + return pdf_repr(encode_text(x)) + elif isinstance(x, bytes): + # XXX escape more chars? handle binary garbage + x = x.replace(b"\\", b"\\\\") + x = x.replace(b"(", b"\\(") + x = x.replace(b")", b"\\)") + return b"(" + x + b")" + else: + return bytes(x) + + +class PdfParser: + """Based on + https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf + Supports PDF up to 1.4 + """ + + def __init__( + self, + filename: str | None = None, + f: IO[bytes] | None = None, + buf: bytes | bytearray | None = None, + start_offset: int = 0, + mode: str = "rb", + ) -> None: + if buf and f: + msg = "specify buf or f or filename, but not both buf and f" + raise RuntimeError(msg) + self.filename = filename + self.buf: bytes | bytearray | mmap.mmap | None = buf + self.f = f + self.start_offset = start_offset + self.should_close_buf = False + self.should_close_file = False + if filename is not None and f is None: + self.f = f = open(filename, mode) + self.should_close_file = True + if f is not None: + self.buf = self.get_buf_from_file(f) + self.should_close_buf = True + if not filename and hasattr(f, "name"): + self.filename = f.name + self.cached_objects: dict[IndirectReference, Any] = {} + self.root_ref: IndirectReference | None + self.info_ref: IndirectReference | None + self.pages_ref: IndirectReference | None + self.last_xref_section_offset: int | None + if self.buf: + self.read_pdf_info() + else: + self.file_size_total = self.file_size_this = 0 + self.root = PdfDict() + self.root_ref = None + self.info = PdfDict() + self.info_ref = None + self.page_tree_root = PdfDict() + self.pages: list[IndirectReference] = [] + self.orig_pages: list[IndirectReference] = [] + self.pages_ref = None + self.last_xref_section_offset = None + self.trailer_dict: dict[bytes, Any] = {} + self.xref_table = XrefTable() + self.xref_table.reading_finished = True + if f: + self.seek_end() + + def __enter__(self) -> PdfParser: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def start_writing(self) -> None: + self.close_buf() + self.seek_end() + + def close_buf(self) -> None: + if isinstance(self.buf, mmap.mmap): + self.buf.close() + self.buf = None + + def close(self) -> None: + if self.should_close_buf: + self.close_buf() + if self.f is not None and self.should_close_file: + self.f.close() + self.f = None + + def seek_end(self) -> None: + assert self.f is not None + self.f.seek(0, os.SEEK_END) + + def write_header(self) -> None: + assert self.f is not None + self.f.write(b"%PDF-1.4\n") + + def write_comment(self, s: str) -> None: + assert self.f is not None + self.f.write(f"% {s}\n".encode()) + + def write_catalog(self) -> IndirectReference: + assert self.f is not None + self.del_root() + self.root_ref = self.next_object_id(self.f.tell()) + self.pages_ref = self.next_object_id(0) + self.rewrite_pages() + self.write_obj(self.root_ref, Type=PdfName(b"Catalog"), Pages=self.pages_ref) + self.write_obj( + self.pages_ref, + Type=PdfName(b"Pages"), + Count=len(self.pages), + Kids=self.pages, + ) + return self.root_ref + + def rewrite_pages(self) -> None: + pages_tree_nodes_to_delete = [] + for i, page_ref in enumerate(self.orig_pages): + page_info = self.cached_objects[page_ref] + del self.xref_table[page_ref.object_id] + pages_tree_nodes_to_delete.append(page_info[PdfName(b"Parent")]) + if page_ref not in self.pages: + # the page has been deleted + continue + # make dict keys into strings for passing to write_page + stringified_page_info = {} + for key, value in page_info.items(): + # key should be a PdfName + stringified_page_info[key.name_as_str()] = value + stringified_page_info["Parent"] = self.pages_ref + new_page_ref = self.write_page(None, **stringified_page_info) + for j, cur_page_ref in enumerate(self.pages): + if cur_page_ref == page_ref: + # replace the page reference with the new one + self.pages[j] = new_page_ref + # delete redundant Pages tree nodes from xref table + for pages_tree_node_ref in pages_tree_nodes_to_delete: + while pages_tree_node_ref: + pages_tree_node = self.cached_objects[pages_tree_node_ref] + if pages_tree_node_ref.object_id in self.xref_table: + del self.xref_table[pages_tree_node_ref.object_id] + pages_tree_node_ref = pages_tree_node.get(b"Parent", None) + self.orig_pages = [] + + def write_xref_and_trailer( + self, new_root_ref: IndirectReference | None = None + ) -> None: + assert self.f is not None + if new_root_ref: + self.del_root() + self.root_ref = new_root_ref + if self.info: + self.info_ref = self.write_obj(None, self.info) + start_xref = self.xref_table.write(self.f) + num_entries = len(self.xref_table) + trailer_dict: dict[str | bytes, Any] = { + b"Root": self.root_ref, + b"Size": num_entries, + } + if self.last_xref_section_offset is not None: + trailer_dict[b"Prev"] = self.last_xref_section_offset + if self.info: + trailer_dict[b"Info"] = self.info_ref + self.last_xref_section_offset = start_xref + self.f.write( + b"trailer\n" + + bytes(PdfDict(trailer_dict)) + + b"\nstartxref\n%d\n%%%%EOF" % start_xref + ) + + def write_page( + self, ref: int | IndirectReference | None, *objs: Any, **dict_obj: Any + ) -> IndirectReference: + obj_ref = self.pages[ref] if isinstance(ref, int) else ref + if "Type" not in dict_obj: + dict_obj["Type"] = PdfName(b"Page") + if "Parent" not in dict_obj: + dict_obj["Parent"] = self.pages_ref + return self.write_obj(obj_ref, *objs, **dict_obj) + + def write_obj( + self, ref: IndirectReference | None, *objs: Any, **dict_obj: Any + ) -> IndirectReference: + assert self.f is not None + f = self.f + if ref is None: + ref = self.next_object_id(f.tell()) + else: + self.xref_table[ref.object_id] = (f.tell(), ref.generation) + f.write(bytes(IndirectObjectDef(*ref))) + stream = dict_obj.pop("stream", None) + if stream is not None: + dict_obj["Length"] = len(stream) + if dict_obj: + f.write(pdf_repr(dict_obj)) + for obj in objs: + f.write(pdf_repr(obj)) + if stream is not None: + f.write(b"stream\n") + f.write(stream) + f.write(b"\nendstream\n") + f.write(b"endobj\n") + return ref + + def del_root(self) -> None: + if self.root_ref is None: + return + del self.xref_table[self.root_ref.object_id] + del self.xref_table[self.root[b"Pages"].object_id] + + @staticmethod + def get_buf_from_file(f: IO[bytes]) -> bytes | mmap.mmap: + if hasattr(f, "getbuffer"): + return f.getbuffer() + elif hasattr(f, "getvalue"): + return f.getvalue() + else: + try: + return mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) + except ValueError: # cannot mmap an empty file + return b"" + + def read_pdf_info(self) -> None: + assert self.buf is not None + self.file_size_total = len(self.buf) + self.file_size_this = self.file_size_total - self.start_offset + self.read_trailer() + check_format_condition( + self.trailer_dict.get(b"Root") is not None, "Root is missing" + ) + self.root_ref = self.trailer_dict[b"Root"] + assert self.root_ref is not None + self.info_ref = self.trailer_dict.get(b"Info", None) + self.root = PdfDict(self.read_indirect(self.root_ref)) + if self.info_ref is None: + self.info = PdfDict() + else: + self.info = PdfDict(self.read_indirect(self.info_ref)) + check_format_condition(b"Type" in self.root, "/Type missing in Root") + check_format_condition( + self.root[b"Type"] == b"Catalog", "/Type in Root is not /Catalog" + ) + check_format_condition( + self.root.get(b"Pages") is not None, "/Pages missing in Root" + ) + check_format_condition( + isinstance(self.root[b"Pages"], IndirectReference), + "/Pages in Root is not an indirect reference", + ) + self.pages_ref = self.root[b"Pages"] + assert self.pages_ref is not None + self.page_tree_root = self.read_indirect(self.pages_ref) + self.pages = self.linearize_page_tree(self.page_tree_root) + # save the original list of page references + # in case the user modifies, adds or deletes some pages + # and we need to rewrite the pages and their list + self.orig_pages = self.pages[:] + + def next_object_id(self, offset: int | None = None) -> IndirectReference: + try: + # TODO: support reuse of deleted objects + reference = IndirectReference(max(self.xref_table.keys()) + 1, 0) + except ValueError: + reference = IndirectReference(1, 0) + if offset is not None: + self.xref_table[reference.object_id] = (offset, 0) + return reference + + delimiter = rb"[][()<>{}/%]" + delimiter_or_ws = rb"[][()<>{}/%\000\011\012\014\015\040]" + whitespace = rb"[\000\011\012\014\015\040]" + whitespace_or_hex = rb"[\000\011\012\014\015\0400-9a-fA-F]" + whitespace_optional = whitespace + b"*" + whitespace_mandatory = whitespace + b"+" + # No "\012" aka "\n" or "\015" aka "\r": + whitespace_optional_no_nl = rb"[\000\011\014\040]*" + newline_only = rb"[\r\n]+" + newline = whitespace_optional_no_nl + newline_only + whitespace_optional_no_nl + re_trailer_end = re.compile( + whitespace_mandatory + + rb"trailer" + + whitespace_optional + + rb"<<(.*>>)" + + newline + + rb"startxref" + + newline + + rb"([0-9]+)" + + newline + + rb"%%EOF" + + whitespace_optional + + rb"$", + re.DOTALL, + ) + re_trailer_prev = re.compile( + whitespace_optional + + rb"trailer" + + whitespace_optional + + rb"<<(.*?>>)" + + newline + + rb"startxref" + + newline + + rb"([0-9]+)" + + newline + + rb"%%EOF" + + whitespace_optional, + re.DOTALL, + ) + + def read_trailer(self) -> None: + assert self.buf is not None + search_start_offset = len(self.buf) - 16384 + if search_start_offset < self.start_offset: + search_start_offset = self.start_offset + m = self.re_trailer_end.search(self.buf, search_start_offset) + check_format_condition(m is not None, "trailer end not found") + # make sure we found the LAST trailer + last_match = m + while m: + last_match = m + m = self.re_trailer_end.search(self.buf, m.start() + 16) + if not m: + m = last_match + assert m is not None + trailer_data = m.group(1) + self.last_xref_section_offset = int(m.group(2)) + self.trailer_dict = self.interpret_trailer(trailer_data) + self.xref_table = XrefTable() + self.read_xref_table(xref_section_offset=self.last_xref_section_offset) + if b"Prev" in self.trailer_dict: + self.read_prev_trailer(self.trailer_dict[b"Prev"]) + + def read_prev_trailer(self, xref_section_offset: int) -> None: + assert self.buf is not None + trailer_offset = self.read_xref_table(xref_section_offset=xref_section_offset) + m = self.re_trailer_prev.search( + self.buf[trailer_offset : trailer_offset + 16384] + ) + check_format_condition(m is not None, "previous trailer not found") + assert m is not None + trailer_data = m.group(1) + check_format_condition( + int(m.group(2)) == xref_section_offset, + "xref section offset in previous trailer doesn't match what was expected", + ) + trailer_dict = self.interpret_trailer(trailer_data) + if b"Prev" in trailer_dict: + self.read_prev_trailer(trailer_dict[b"Prev"]) + + re_whitespace_optional = re.compile(whitespace_optional) + re_name = re.compile( + whitespace_optional + + rb"/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=" + + delimiter_or_ws + + rb")" + ) + re_dict_start = re.compile(whitespace_optional + rb"<<") + re_dict_end = re.compile(whitespace_optional + rb">>" + whitespace_optional) + + @classmethod + def interpret_trailer(cls, trailer_data: bytes) -> dict[bytes, Any]: + trailer = {} + offset = 0 + while True: + m = cls.re_name.match(trailer_data, offset) + if not m: + m = cls.re_dict_end.match(trailer_data, offset) + check_format_condition( + m is not None and m.end() == len(trailer_data), + "name not found in trailer, remaining data: " + + repr(trailer_data[offset:]), + ) + break + key = cls.interpret_name(m.group(1)) + assert isinstance(key, bytes) + value, value_offset = cls.get_value(trailer_data, m.end()) + trailer[key] = value + if value_offset is None: + break + offset = value_offset + check_format_condition( + b"Size" in trailer and isinstance(trailer[b"Size"], int), + "/Size not in trailer or not an integer", + ) + check_format_condition( + b"Root" in trailer and isinstance(trailer[b"Root"], IndirectReference), + "/Root not in trailer or not an indirect reference", + ) + return trailer + + re_hashes_in_name = re.compile(rb"([^#]*)(#([0-9a-fA-F]{2}))?") + + @classmethod + def interpret_name(cls, raw: bytes, as_text: bool = False) -> str | bytes: + name = b"" + for m in cls.re_hashes_in_name.finditer(raw): + if m.group(3): + name += m.group(1) + bytearray.fromhex(m.group(3).decode("us-ascii")) + else: + name += m.group(1) + if as_text: + return name.decode("utf-8") + else: + return bytes(name) + + re_null = re.compile(whitespace_optional + rb"null(?=" + delimiter_or_ws + rb")") + re_true = re.compile(whitespace_optional + rb"true(?=" + delimiter_or_ws + rb")") + re_false = re.compile(whitespace_optional + rb"false(?=" + delimiter_or_ws + rb")") + re_int = re.compile( + whitespace_optional + rb"([-+]?[0-9]+)(?=" + delimiter_or_ws + rb")" + ) + re_real = re.compile( + whitespace_optional + + rb"([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=" + + delimiter_or_ws + + rb")" + ) + re_array_start = re.compile(whitespace_optional + rb"\[") + re_array_end = re.compile(whitespace_optional + rb"]") + re_string_hex = re.compile( + whitespace_optional + rb"<(" + whitespace_or_hex + rb"*)>" + ) + re_string_lit = re.compile(whitespace_optional + rb"\(") + re_indirect_reference = re.compile( + whitespace_optional + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"R(?=" + + delimiter_or_ws + + rb")" + ) + re_indirect_def_start = re.compile( + whitespace_optional + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"obj(?=" + + delimiter_or_ws + + rb")" + ) + re_indirect_def_end = re.compile( + whitespace_optional + rb"endobj(?=" + delimiter_or_ws + rb")" + ) + re_comment = re.compile( + rb"(" + whitespace_optional + rb"%[^\r\n]*" + newline + rb")*" + ) + re_stream_start = re.compile(whitespace_optional + rb"stream\r?\n") + re_stream_end = re.compile( + whitespace_optional + rb"endstream(?=" + delimiter_or_ws + rb")" + ) + + @classmethod + def get_value( + cls, + data: bytes | bytearray | mmap.mmap, + offset: int, + expect_indirect: IndirectReference | None = None, + max_nesting: int = -1, + ) -> tuple[Any, int | None]: + if max_nesting == 0: + return None, None + m = cls.re_comment.match(data, offset) + if m: + offset = m.end() + m = cls.re_indirect_def_start.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object definition: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object definition: generation must be non-negative", + ) + check_format_condition( + expect_indirect is None + or expect_indirect + == IndirectReference(int(m.group(1)), int(m.group(2))), + "indirect object definition different than expected", + ) + object, object_offset = cls.get_value( + data, m.end(), max_nesting=max_nesting - 1 + ) + if object_offset is None: + return object, None + m = cls.re_indirect_def_end.match(data, object_offset) + check_format_condition( + m is not None, "indirect object definition end not found" + ) + assert m is not None + return object, m.end() + check_format_condition( + not expect_indirect, "indirect object definition not found" + ) + m = cls.re_indirect_reference.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object reference: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object reference: generation must be non-negative", + ) + return IndirectReference(int(m.group(1)), int(m.group(2))), m.end() + m = cls.re_dict_start.match(data, offset) + if m: + offset = m.end() + result: dict[Any, Any] = {} + m = cls.re_dict_end.match(data, offset) + current_offset: int | None = offset + while not m: + assert current_offset is not None + key, current_offset = cls.get_value( + data, current_offset, max_nesting=max_nesting - 1 + ) + if current_offset is None: + return result, None + value, current_offset = cls.get_value( + data, current_offset, max_nesting=max_nesting - 1 + ) + result[key] = value + if current_offset is None: + return result, None + m = cls.re_dict_end.match(data, current_offset) + current_offset = m.end() + m = cls.re_stream_start.match(data, current_offset) + if m: + stream_len = result.get(b"Length") + if stream_len is None or not isinstance(stream_len, int): + msg = f"bad or missing Length in stream dict ({stream_len})" + raise PdfFormatError(msg) + stream_data = data[m.end() : m.end() + stream_len] + m = cls.re_stream_end.match(data, m.end() + stream_len) + check_format_condition(m is not None, "stream end not found") + assert m is not None + current_offset = m.end() + return PdfStream(PdfDict(result), stream_data), current_offset + return PdfDict(result), current_offset + m = cls.re_array_start.match(data, offset) + if m: + offset = m.end() + results = [] + m = cls.re_array_end.match(data, offset) + current_offset = offset + while not m: + assert current_offset is not None + value, current_offset = cls.get_value( + data, current_offset, max_nesting=max_nesting - 1 + ) + results.append(value) + if current_offset is None: + return results, None + m = cls.re_array_end.match(data, current_offset) + return results, m.end() + m = cls.re_null.match(data, offset) + if m: + return None, m.end() + m = cls.re_true.match(data, offset) + if m: + return True, m.end() + m = cls.re_false.match(data, offset) + if m: + return False, m.end() + m = cls.re_name.match(data, offset) + if m: + return PdfName(cls.interpret_name(m.group(1))), m.end() + m = cls.re_int.match(data, offset) + if m: + return int(m.group(1)), m.end() + m = cls.re_real.match(data, offset) + if m: + # XXX Decimal instead of float??? + return float(m.group(1)), m.end() + m = cls.re_string_hex.match(data, offset) + if m: + # filter out whitespace + hex_string = bytearray( + b for b in m.group(1) if b in b"0123456789abcdefABCDEF" + ) + if len(hex_string) % 2 == 1: + # append a 0 if the length is not even - yes, at the end + hex_string.append(ord(b"0")) + return bytearray.fromhex(hex_string.decode("us-ascii")), m.end() + m = cls.re_string_lit.match(data, offset) + if m: + return cls.get_literal_string(data, m.end()) + # return None, offset # fallback (only for debugging) + msg = f"unrecognized object: {repr(data[offset : offset + 32])}" + raise PdfFormatError(msg) + + re_lit_str_token = re.compile( + rb"(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))" + ) + escaped_chars = { + b"n": b"\n", + b"r": b"\r", + b"t": b"\t", + b"b": b"\b", + b"f": b"\f", + b"(": b"(", + b")": b")", + b"\\": b"\\", + ord(b"n"): b"\n", + ord(b"r"): b"\r", + ord(b"t"): b"\t", + ord(b"b"): b"\b", + ord(b"f"): b"\f", + ord(b"("): b"(", + ord(b")"): b")", + ord(b"\\"): b"\\", + } + + @classmethod + def get_literal_string( + cls, data: bytes | bytearray | mmap.mmap, offset: int + ) -> tuple[bytes, int]: + nesting_depth = 0 + result = bytearray() + for m in cls.re_lit_str_token.finditer(data, offset): + result.extend(data[offset : m.start()]) + if m.group(1): + result.extend(cls.escaped_chars[m.group(1)[1]]) + elif m.group(2): + result.append(int(m.group(2)[1:], 8)) + elif m.group(3): + pass + elif m.group(5): + result.extend(b"\n") + elif m.group(6): + result.extend(b"(") + nesting_depth += 1 + elif m.group(7): + if nesting_depth == 0: + return bytes(result), m.end() + result.extend(b")") + nesting_depth -= 1 + offset = m.end() + msg = "unfinished literal string" + raise PdfFormatError(msg) + + re_xref_section_start = re.compile(whitespace_optional + rb"xref" + newline) + re_xref_subsection_start = re.compile( + whitespace_optional + + rb"([0-9]+)" + + whitespace_mandatory + + rb"([0-9]+)" + + whitespace_optional + + newline_only + ) + re_xref_entry = re.compile(rb"([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)") + + def read_xref_table(self, xref_section_offset: int) -> int: + assert self.buf is not None + subsection_found = False + m = self.re_xref_section_start.match( + self.buf, xref_section_offset + self.start_offset + ) + check_format_condition(m is not None, "xref section start not found") + assert m is not None + offset = m.end() + while True: + m = self.re_xref_subsection_start.match(self.buf, offset) + if not m: + check_format_condition( + subsection_found, "xref subsection start not found" + ) + break + subsection_found = True + offset = m.end() + first_object = int(m.group(1)) + num_objects = int(m.group(2)) + for i in range(first_object, first_object + num_objects): + m = self.re_xref_entry.match(self.buf, offset) + check_format_condition(m is not None, "xref entry not found") + assert m is not None + offset = m.end() + is_free = m.group(3) == b"f" + if not is_free: + generation = int(m.group(2)) + new_entry = (int(m.group(1)), generation) + if i not in self.xref_table: + self.xref_table[i] = new_entry + return offset + + def read_indirect(self, ref: IndirectReference, max_nesting: int = -1) -> Any: + offset, generation = self.xref_table[ref[0]] + check_format_condition( + generation == ref[1], + f"expected to find generation {ref[1]} for object ID {ref[0]} in xref " + f"table, instead found generation {generation} at offset {offset}", + ) + assert self.buf is not None + value = self.get_value( + self.buf, + offset + self.start_offset, + expect_indirect=IndirectReference(*ref), + max_nesting=max_nesting, + )[0] + self.cached_objects[ref] = value + return value + + def linearize_page_tree( + self, node: PdfDict | None = None + ) -> list[IndirectReference]: + page_node = node if node is not None else self.page_tree_root + check_format_condition( + page_node[b"Type"] == b"Pages", "/Type of page tree node is not /Pages" + ) + pages = [] + for kid in page_node[b"Kids"]: + kid_object = self.read_indirect(kid) + if kid_object[b"Type"] == b"Page": + pages.append(kid) + else: + pages.extend(self.linearize_page_tree(node=kid_object)) + return pages diff --git a/myenv/lib/python3.10/site-packages/PIL/PixarImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/PixarImagePlugin.py new file mode 100644 index 0000000..d2b6d0a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PixarImagePlugin.py @@ -0,0 +1,72 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIXAR raster support for PIL +# +# history: +# 97-01-29 fl Created +# +# notes: +# This is incomplete; it is based on a few samples created with +# Photoshop 2.5 and 3.0, and a summary description provided by +# Greg Coats . Hopefully, "L" and +# "RGBA" support will be added in future versions. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image, ImageFile +from ._binary import i16le as i16 + +# +# helpers + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"\200\350\000\000") + + +## +# Image plugin for PIXAR raster images. + + +class PixarImageFile(ImageFile.ImageFile): + format = "PIXAR" + format_description = "PIXAR raster image" + + def _open(self) -> None: + # assuming a 4-byte magic label + assert self.fp is not None + + s = self.fp.read(4) + if not _accept(s): + msg = "not a PIXAR file" + raise SyntaxError(msg) + + # read rest of header + s = s + self.fp.read(508) + + self._size = i16(s, 418), i16(s, 416) + + # get channel/depth descriptions + mode = i16(s, 424), i16(s, 426) + + if mode == (14, 2): + self._mode = "RGB" + # FIXME: to be continued... + + # create tile descriptor (assuming "dumped") + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 1024, self.mode)] + + +# +# -------------------------------------------------------------------- + +Image.register_open(PixarImageFile.format, PixarImageFile, _accept) + +Image.register_extension(PixarImageFile.format, ".pxr") diff --git a/myenv/lib/python3.10/site-packages/PIL/PngImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/PngImagePlugin.py new file mode 100644 index 0000000..1b9a89a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PngImagePlugin.py @@ -0,0 +1,1551 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PNG support code +# +# See "PNG (Portable Network Graphics) Specification, version 1.0; +# W3C Recommendation", 1996-10-01, Thomas Boutell (ed.). +# +# history: +# 1996-05-06 fl Created (couldn't resist it) +# 1996-12-14 fl Upgraded, added read and verify support (0.2) +# 1996-12-15 fl Separate PNG stream parser +# 1996-12-29 fl Added write support, added getchunks +# 1996-12-30 fl Eliminated circular references in decoder (0.3) +# 1998-07-12 fl Read/write 16-bit images as mode I (0.4) +# 2001-02-08 fl Added transparency support (from Zircon) (0.5) +# 2001-04-16 fl Don't close data source in "open" method (0.6) +# 2004-02-24 fl Don't even pretend to support interlaced files (0.7) +# 2004-08-31 fl Do basic sanity check on chunk identifiers (0.8) +# 2004-09-20 fl Added PngInfo chunk container +# 2004-12-18 fl Added DPI read support (based on code by Niki Spahiev) +# 2008-08-13 fl Added tRNS support for RGB images +# 2009-03-06 fl Support for preserving ICC profiles (by Florian Hoech) +# 2009-03-08 fl Added zTXT support (from Lowell Alleman) +# 2009-03-29 fl Read interlaced PNG files (from Conrado Porto Lopes Gouvua) +# +# Copyright (c) 1997-2009 by Secret Labs AB +# Copyright (c) 1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import itertools +import logging +import re +import struct +import warnings +import zlib +from collections.abc import Callable +from enum import IntEnum +from typing import IO, Any, NamedTuple, NoReturn, cast + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._binary import o16be as o16 +from ._binary import o32be as o32 +from ._deprecate import deprecate +from ._util import DeferredError + +TYPE_CHECKING = False +if TYPE_CHECKING: + from . import _imaging + +logger = logging.getLogger(__name__) + +is_cid = re.compile(rb"\w\w\w\w").match + + +_MAGIC = b"\211PNG\r\n\032\n" + + +_MODES = { + # supported bits/color combinations, and corresponding modes/rawmodes + # Grayscale + (1, 0): ("1", "1"), + (2, 0): ("L", "L;2"), + (4, 0): ("L", "L;4"), + (8, 0): ("L", "L"), + (16, 0): ("I;16", "I;16B"), + # Truecolour + (8, 2): ("RGB", "RGB"), + (16, 2): ("RGB", "RGB;16B"), + # Indexed-colour + (1, 3): ("P", "P;1"), + (2, 3): ("P", "P;2"), + (4, 3): ("P", "P;4"), + (8, 3): ("P", "P"), + # Grayscale with alpha + (8, 4): ("LA", "LA"), + (16, 4): ("RGBA", "LA;16B"), # LA;16B->LA not yet available + # Truecolour with alpha + (8, 6): ("RGBA", "RGBA"), + (16, 6): ("RGBA", "RGBA;16B"), +} + + +_simple_palette = re.compile(b"^\xff*\x00\xff*$") + +MAX_TEXT_CHUNK = ImageFile.SAFEBLOCK +""" +Maximum decompressed size for a iTXt or zTXt chunk. +Eliminates decompression bombs where compressed chunks can expand 1000x. +See :ref:`Text in PNG File Format`. +""" +MAX_TEXT_MEMORY = 64 * MAX_TEXT_CHUNK +""" +Set the maximum total text chunk size. +See :ref:`Text in PNG File Format`. +""" + + +# APNG frame disposal modes +class Disposal(IntEnum): + OP_NONE = 0 + """ + No disposal is done on this frame before rendering the next frame. + See :ref:`Saving APNG sequences`. + """ + OP_BACKGROUND = 1 + """ + This frame’s modified region is cleared to fully transparent black before rendering + the next frame. + See :ref:`Saving APNG sequences`. + """ + OP_PREVIOUS = 2 + """ + This frame’s modified region is reverted to the previous frame’s contents before + rendering the next frame. + See :ref:`Saving APNG sequences`. + """ + + +# APNG frame blend modes +class Blend(IntEnum): + OP_SOURCE = 0 + """ + All color components of this frame, including alpha, overwrite the previous output + image contents. + See :ref:`Saving APNG sequences`. + """ + OP_OVER = 1 + """ + This frame should be alpha composited with the previous output image contents. + See :ref:`Saving APNG sequences`. + """ + + +def _safe_zlib_decompress(s: bytes) -> bytes: + dobj = zlib.decompressobj() + plaintext = dobj.decompress(s, MAX_TEXT_CHUNK) + if dobj.unconsumed_tail: + msg = "Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK" + raise ValueError(msg) + return plaintext + + +def _crc32(data: bytes, seed: int = 0) -> int: + return zlib.crc32(data, seed) & 0xFFFFFFFF + + +# -------------------------------------------------------------------- +# Support classes. Suitable for PNG and related formats like MNG etc. + + +class ChunkStream: + def __init__(self, fp: IO[bytes]) -> None: + self.fp: IO[bytes] | None = fp + self.queue: list[tuple[bytes, int, int]] | None = [] + + def read(self) -> tuple[bytes, int, int]: + """Fetch a new chunk. Returns header information.""" + cid = None + + assert self.fp is not None + if self.queue: + cid, pos, length = self.queue.pop() + self.fp.seek(pos) + else: + s = self.fp.read(8) + cid = s[4:] + pos = self.fp.tell() + length = i32(s) + + if not is_cid(cid): + if not ImageFile.LOAD_TRUNCATED_IMAGES: + msg = f"broken PNG file (chunk {repr(cid)})" + raise SyntaxError(msg) + + return cid, pos, length + + def __enter__(self) -> ChunkStream: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def close(self) -> None: + self.queue = self.fp = None + + def push(self, cid: bytes, pos: int, length: int) -> None: + assert self.queue is not None + self.queue.append((cid, pos, length)) + + def call(self, cid: bytes, pos: int, length: int) -> bytes: + """Call the appropriate chunk handler""" + + logger.debug("STREAM %r %s %s", cid, pos, length) + return getattr(self, f"chunk_{cid.decode('ascii')}")(pos, length) + + def crc(self, cid: bytes, data: bytes) -> None: + """Read and verify checksum""" + + # Skip CRC checks for ancillary chunks if allowed to load truncated + # images + # 5th byte of first char is 1 [specs, section 5.4] + if ImageFile.LOAD_TRUNCATED_IMAGES and (cid[0] >> 5 & 1): + self.crc_skip(cid, data) + return + + assert self.fp is not None + try: + crc1 = _crc32(data, _crc32(cid)) + crc2 = i32(self.fp.read(4)) + if crc1 != crc2: + msg = f"broken PNG file (bad header checksum in {repr(cid)})" + raise SyntaxError(msg) + except struct.error as e: + msg = f"broken PNG file (incomplete checksum in {repr(cid)})" + raise SyntaxError(msg) from e + + def crc_skip(self, cid: bytes, data: bytes) -> None: + """Read checksum""" + + assert self.fp is not None + self.fp.read(4) + + def verify(self, endchunk: bytes = b"IEND") -> list[bytes]: + # Simple approach; just calculate checksum for all remaining + # blocks. Must be called directly after open. + + cids = [] + + assert self.fp is not None + while True: + try: + cid, pos, length = self.read() + except struct.error as e: + msg = "truncated PNG file" + raise OSError(msg) from e + + if cid == endchunk: + break + self.crc(cid, ImageFile._safe_read(self.fp, length)) + cids.append(cid) + + return cids + + +class iTXt(str): + """ + Subclass of string to allow iTXt chunks to look like strings while + keeping their extra information + + """ + + lang: str | bytes | None + tkey: str | bytes | None + + @staticmethod + def __new__( + cls, text: str, lang: str | None = None, tkey: str | None = None + ) -> iTXt: + """ + :param cls: the class to use when creating the instance + :param text: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + """ + + self = str.__new__(cls, text) + self.lang = lang + self.tkey = tkey + return self + + +class PngInfo: + """ + PNG chunk container (for use with save(pnginfo=)) + + """ + + def __init__(self) -> None: + self.chunks: list[tuple[bytes, bytes, bool]] = [] + + def add(self, cid: bytes, data: bytes, after_idat: bool = False) -> None: + """Appends an arbitrary chunk. Use with caution. + + :param cid: a byte string, 4 bytes long. + :param data: a byte string of the encoded data + :param after_idat: for use with private chunks. Whether the chunk + should be written after IDAT + + """ + + self.chunks.append((cid, data, after_idat)) + + def add_itxt( + self, + key: str | bytes, + value: str | bytes, + lang: str | bytes = "", + tkey: str | bytes = "", + zip: bool = False, + ) -> None: + """Appends an iTXt chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + :param zip: compression flag + + """ + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + if not isinstance(value, bytes): + value = value.encode("utf-8", "strict") + if not isinstance(lang, bytes): + lang = lang.encode("utf-8", "strict") + if not isinstance(tkey, bytes): + tkey = tkey.encode("utf-8", "strict") + + if zip: + self.add( + b"iTXt", + key + b"\0\x01\0" + lang + b"\0" + tkey + b"\0" + zlib.compress(value), + ) + else: + self.add(b"iTXt", key + b"\0\0\0" + lang + b"\0" + tkey + b"\0" + value) + + def add_text( + self, key: str | bytes, value: str | bytes | iTXt, zip: bool = False + ) -> None: + """Appends a text chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key, text or an + :py:class:`PIL.PngImagePlugin.iTXt` instance + :param zip: compression flag + + """ + if isinstance(value, iTXt): + return self.add_itxt( + key, + value, + value.lang if value.lang is not None else b"", + value.tkey if value.tkey is not None else b"", + zip=zip, + ) + + # The tEXt chunk stores latin-1 text + if not isinstance(value, bytes): + try: + value = value.encode("latin-1", "strict") + except UnicodeError: + return self.add_itxt(key, value, zip=zip) + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + + if zip: + self.add(b"zTXt", key + b"\0\0" + zlib.compress(value)) + else: + self.add(b"tEXt", key + b"\0" + value) + + +# -------------------------------------------------------------------- +# PNG image stream (IHDR/IEND) + + +class _RewindState(NamedTuple): + info: dict[str | tuple[int, int], Any] + tile: list[ImageFile._Tile] + seq_num: int | None + + +class PngStream(ChunkStream): + def __init__(self, fp: IO[bytes]) -> None: + super().__init__(fp) + + # local copies of Image attributes + self.im_info: dict[str | tuple[int, int], Any] = {} + self.im_text: dict[str, str | iTXt] = {} + self.im_size = (0, 0) + self.im_mode = "" + self.im_tile: list[ImageFile._Tile] = [] + self.im_palette: tuple[str, bytes] | None = None + self.im_custom_mimetype: str | None = None + self.im_n_frames: int | None = None + self._seq_num: int | None = None + self.rewind_state = _RewindState({}, [], None) + + self.text_memory = 0 + + def check_text_memory(self, chunklen: int) -> None: + self.text_memory += chunklen + if self.text_memory > MAX_TEXT_MEMORY: + msg = ( + "Too much memory used in text chunks: " + f"{self.text_memory}>MAX_TEXT_MEMORY" + ) + raise ValueError(msg) + + def save_rewind(self) -> None: + self.rewind_state = _RewindState( + self.im_info.copy(), + self.im_tile, + self._seq_num, + ) + + def rewind(self) -> None: + self.im_info = self.rewind_state.info.copy() + self.im_tile = self.rewind_state.tile + self._seq_num = self.rewind_state.seq_num + + def chunk_iCCP(self, pos: int, length: int) -> bytes: + # ICC profile + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + i = s.find(b"\0") + logger.debug("iCCP profile name %r", s[:i]) + comp_method = s[i + 1] + logger.debug("Compression method %s", comp_method) + if comp_method != 0: + msg = f"Unknown compression method {comp_method} in iCCP chunk" + raise SyntaxError(msg) + try: + icc_profile = _safe_zlib_decompress(s[i + 2 :]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + icc_profile = None + else: + raise + except zlib.error: + icc_profile = None # FIXME + self.im_info["icc_profile"] = icc_profile + return s + + def chunk_IHDR(self, pos: int, length: int) -> bytes: + # image header + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 13: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated IHDR chunk" + raise ValueError(msg) + self.im_size = i32(s, 0), i32(s, 4) + try: + self.im_mode, self.im_rawmode = _MODES[(s[8], s[9])] + except Exception: + pass + if s[12]: + self.im_info["interlace"] = 1 + if s[11]: + msg = "unknown filter category" + raise SyntaxError(msg) + return s + + def chunk_IDAT(self, pos: int, length: int) -> NoReturn: + # image data + if "bbox" in self.im_info: + tile = [ImageFile._Tile("zip", self.im_info["bbox"], pos, self.im_rawmode)] + else: + if self.im_n_frames is not None: + self.im_info["default_image"] = True + tile = [ImageFile._Tile("zip", (0, 0) + self.im_size, pos, self.im_rawmode)] + self.im_tile = tile + self.im_idat = length + msg = "image data found" + raise EOFError(msg) + + def chunk_IEND(self, pos: int, length: int) -> NoReturn: + msg = "end of PNG image" + raise EOFError(msg) + + def chunk_PLTE(self, pos: int, length: int) -> bytes: + # palette + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + self.im_palette = "RGB", s + return s + + def chunk_tRNS(self, pos: int, length: int) -> bytes: + # transparency + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + if _simple_palette.match(s): + # tRNS contains only one full-transparent entry, + # other entries are full opaque + i = s.find(b"\0") + if i >= 0: + self.im_info["transparency"] = i + else: + # otherwise, we have a byte string with one alpha value + # for each palette entry + self.im_info["transparency"] = s + elif self.im_mode in ("1", "L", "I;16"): + self.im_info["transparency"] = i16(s) + elif self.im_mode == "RGB": + self.im_info["transparency"] = i16(s), i16(s, 2), i16(s, 4) + return s + + def chunk_gAMA(self, pos: int, length: int) -> bytes: + # gamma setting + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + self.im_info["gamma"] = i32(s) / 100000.0 + return s + + def chunk_cHRM(self, pos: int, length: int) -> bytes: + # chromaticity, 8 unsigned ints, actual value is scaled by 100,000 + # WP x,y, Red x,y, Green x,y Blue x,y + + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + 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 + + def chunk_sRGB(self, pos: int, length: int) -> bytes: + # srgb rendering intent, 1 byte + # 0 perceptual + # 1 relative colorimetric + # 2 saturation + # 3 absolute colorimetric + + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 1: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated sRGB chunk" + raise ValueError(msg) + self.im_info["srgb"] = s[0] + return s + + def chunk_pHYs(self, pos: int, length: int) -> bytes: + # pixels per unit + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 9: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated pHYs chunk" + raise ValueError(msg) + px, py = i32(s, 0), i32(s, 4) + unit = s[8] + if unit == 1: # meter + dpi = px * 0.0254, py * 0.0254 + self.im_info["dpi"] = dpi + elif unit == 0: + self.im_info["aspect"] = px, py + return s + + def chunk_tEXt(self, pos: int, length: int) -> bytes: + # text + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + # fallback for broken tEXt tags + k = s + v = b"" + if k: + k_str = k.decode("latin-1", "strict") + v_str = v.decode("latin-1", "replace") + + self.im_info[k_str] = v if k == b"exif" else v_str + self.im_text[k_str] = v_str + self.check_text_memory(len(v_str)) + + return s + + def chunk_zTXt(self, pos: int, length: int) -> bytes: + # compressed text + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + k = s + v = b"" + if v: + comp_method = v[0] + else: + comp_method = 0 + if comp_method != 0: + msg = f"Unknown compression method {comp_method} in zTXt chunk" + raise SyntaxError(msg) + try: + v = _safe_zlib_decompress(v[1:]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + v = b"" + else: + raise + except zlib.error: + v = b"" + + if k: + k_str = k.decode("latin-1", "strict") + v_str = v.decode("latin-1", "replace") + + self.im_info[k_str] = self.im_text[k_str] = v_str + self.check_text_memory(len(v_str)) + + return s + + def chunk_iTXt(self, pos: int, length: int) -> bytes: + # international text + assert self.fp is not None + r = s = ImageFile._safe_read(self.fp, length) + try: + k, r = r.split(b"\0", 1) + except ValueError: + return s + if len(r) < 2: + return s + cf, cm, r = r[0], r[1], r[2:] + try: + lang, tk, v = r.split(b"\0", 2) + except ValueError: + return s + if cf != 0: + if cm == 0: + try: + v = _safe_zlib_decompress(v) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + else: + raise + except zlib.error: + return s + else: + return s + if k == b"XML:com.adobe.xmp": + self.im_info["xmp"] = v + try: + k_str = k.decode("latin-1", "strict") + lang_str = lang.decode("utf-8", "strict") + tk_str = tk.decode("utf-8", "strict") + v_str = v.decode("utf-8", "strict") + except UnicodeError: + return s + + self.im_info[k_str] = self.im_text[k_str] = iTXt(v_str, lang_str, tk_str) + self.check_text_memory(len(v_str)) + + return s + + def chunk_eXIf(self, pos: int, length: int) -> bytes: + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + self.im_info["exif"] = b"Exif\x00\x00" + s + return s + + # APNG chunks + def chunk_acTL(self, pos: int, length: int) -> bytes: + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 8: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "APNG contains truncated acTL chunk" + raise ValueError(msg) + if self.im_n_frames is not None: + self.im_n_frames = None + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + n_frames = i32(s) + if n_frames == 0 or n_frames > 0x80000000: + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + self.im_n_frames = n_frames + self.im_info["loop"] = i32(s, 4) + self.im_custom_mimetype = "image/apng" + return s + + def chunk_fcTL(self, pos: int, length: int) -> bytes: + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 26: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "APNG contains truncated fcTL chunk" + raise ValueError(msg) + seq = i32(s) + if (self._seq_num is None and seq != 0) or ( + self._seq_num is not None and self._seq_num != seq - 1 + ): + msg = "APNG contains frame sequence errors" + raise SyntaxError(msg) + self._seq_num = seq + width, height = i32(s, 4), i32(s, 8) + px, py = i32(s, 12), i32(s, 16) + im_w, im_h = self.im_size + if px + width > im_w or py + height > im_h: + msg = "APNG contains invalid frames" + raise SyntaxError(msg) + self.im_info["bbox"] = (px, py, px + width, py + height) + delay_num, delay_den = i16(s, 20), i16(s, 22) + if delay_den == 0: + delay_den = 100 + self.im_info["duration"] = float(delay_num) / float(delay_den) * 1000 + self.im_info["disposal"] = s[24] + self.im_info["blend"] = s[25] + return s + + def chunk_fdAT(self, pos: int, length: int) -> bytes: + assert self.fp is not None + if length < 4: + if ImageFile.LOAD_TRUNCATED_IMAGES: + s = ImageFile._safe_read(self.fp, length) + return s + msg = "APNG contains truncated fDAT chunk" + raise ValueError(msg) + s = ImageFile._safe_read(self.fp, 4) + seq = i32(s) + if self._seq_num != seq - 1: + msg = "APNG contains frame sequence errors" + raise SyntaxError(msg) + self._seq_num = seq + return self.chunk_IDAT(pos + 4, length - 4) + + +# -------------------------------------------------------------------- +# PNG reader + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(_MAGIC) + + +## +# Image plugin for PNG images. + + +class PngImageFile(ImageFile.ImageFile): + format = "PNG" + format_description = "Portable network graphics" + + def _open(self) -> None: + if not _accept(self.fp.read(8)): + msg = "not a PNG file" + raise SyntaxError(msg) + self._fp = self.fp + self.__frame = 0 + + # + # Parse headers up to the first IDAT or fDAT chunk + + self.private_chunks: list[tuple[bytes, bytes] | tuple[bytes, bytes, bool]] = [] + self.png: PngStream | None = PngStream(self.fp) + + while True: + # + # get next chunk + + cid, pos, length = self.png.read() + + try: + s = self.png.call(cid, pos, length) + except EOFError: + break + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + if cid[1:2].islower(): + self.private_chunks.append((cid, s)) + + self.png.crc(cid, s) + + # + # Copy relevant attributes from the PngStream. An alternative + # would be to let the PngStream class modify these attributes + # directly, but that introduces circular references which are + # difficult to break if things go wrong in the decoder... + # (believe me, I've tried ;-) + + self._mode = self.png.im_mode + self._size = self.png.im_size + self.info = self.png.im_info + self._text: dict[str, str | iTXt] | None = None + self.tile = self.png.im_tile + self.custom_mimetype = self.png.im_custom_mimetype + self.n_frames = self.png.im_n_frames or 1 + self.default_image = self.info.get("default_image", False) + + if self.png.im_palette: + rawmode, data = self.png.im_palette + self.palette = ImagePalette.raw(rawmode, data) + + if cid == b"fdAT": + self.__prepare_idat = length - 4 + else: + self.__prepare_idat = length # used by load_prepare() + + if self.png.im_n_frames is not None: + self._close_exclusive_fp_after_loading = False + self.png.save_rewind() + self.__rewind_idat = self.__prepare_idat + self.__rewind = self._fp.tell() + if self.default_image: + # IDAT chunk contains default image and not first animation frame + self.n_frames += 1 + self._seek(0) + self.is_animated = self.n_frames > 1 + + @property + def text(self) -> dict[str, str | iTXt]: + # experimental + if self._text is None: + # iTxt, tEXt and zTXt chunks may appear at the end of the file + # So load the file to ensure that they are read + if self.is_animated: + frame = self.__frame + # for APNG, seek to the final frame before loading + self.seek(self.n_frames - 1) + self.load() + if self.is_animated: + self.seek(frame) + assert self._text is not None + return self._text + + def verify(self) -> None: + """Verify PNG file""" + + if self.fp is None: + msg = "verify must be called directly after open" + raise RuntimeError(msg) + + # back up to beginning of IDAT block + self.fp.seek(self.tile[0][2] - 8) + + assert self.png is not None + self.png.verify() + self.png.close() + + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0, True) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError as e: + self.seek(last_frame) + msg = "no more images in APNG file" + raise EOFError(msg) from e + + def _seek(self, frame: int, rewind: bool = False) -> None: + assert self.png is not None + if isinstance(self._fp, DeferredError): + raise self._fp.ex + + self.dispose: _imaging.ImagingCore | None + dispose_extent = None + if frame == 0: + if rewind: + self._fp.seek(self.__rewind) + self.png.rewind() + self.__prepare_idat = self.__rewind_idat + self._im = None + self.info = self.png.im_info + self.tile = self.png.im_tile + self.fp = self._fp + self._prev_im = None + self.dispose = None + self.default_image = self.info.get("default_image", False) + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + dispose_extent = self.info.get("bbox") + self.__frame = 0 + else: + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + + # ensure previous frame was loaded + self.load() + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + self._prev_im = self.im.copy() + + self.fp = self._fp + + # advance to the next frame + if self.__prepare_idat: + ImageFile._safe_read(self.fp, self.__prepare_idat) + self.__prepare_idat = 0 + frame_start = False + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + msg = "No more images in APNG file" + raise EOFError(msg) + if cid == b"fcTL": + if frame_start: + # there must be at least one fdAT chunk between fcTL chunks + msg = "APNG missing frame data" + raise SyntaxError(msg) + frame_start = True + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + if frame_start: + self.__prepare_idat = length + break + ImageFile._safe_read(self.fp, length) + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + ImageFile._safe_read(self.fp, length) + + self.__frame = frame + self.tile = self.png.im_tile + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + dispose_extent = self.info.get("bbox") + + if not self.tile: + msg = "image not found in APNG frame" + raise EOFError(msg) + if dispose_extent: + self.dispose_extent: tuple[float, float, float, float] = dispose_extent + + # setup frame disposal (actual disposal done when needed in the next _seek()) + if self._prev_im is None and self.dispose_op == Disposal.OP_PREVIOUS: + self.dispose_op = Disposal.OP_BACKGROUND + + self.dispose = None + if self.dispose_op == Disposal.OP_PREVIOUS: + if self._prev_im: + self.dispose = self._prev_im.copy() + self.dispose = self._crop(self.dispose, self.dispose_extent) + elif self.dispose_op == Disposal.OP_BACKGROUND: + self.dispose = Image.core.fill(self.mode, self.size) + self.dispose = self._crop(self.dispose, self.dispose_extent) + + def tell(self) -> int: + return self.__frame + + def load_prepare(self) -> None: + """internal: prepare to read PNG file""" + + if self.info.get("interlace"): + self.decoderconfig = self.decoderconfig + (1,) + + self.__idat = self.__prepare_idat # used by load_read() + ImageFile.ImageFile.load_prepare(self) + + def load_read(self, read_bytes: int) -> bytes: + """internal: read more image data""" + + assert self.png is not None + while self.__idat == 0: + # end of chunk, skip forward to next one + + self.fp.read(4) # CRC + + cid, pos, length = self.png.read() + + if cid not in [b"IDAT", b"DDAT", b"fdAT"]: + self.png.push(cid, pos, length) + return b"" + + if cid == b"fdAT": + try: + self.png.call(cid, pos, length) + except EOFError: + pass + self.__idat = length - 4 # sequence_num has already been read + else: + self.__idat = length # empty chunks are allowed + + # read more data from this chunk + if read_bytes <= 0: + read_bytes = self.__idat + else: + read_bytes = min(read_bytes, self.__idat) + + self.__idat = self.__idat - read_bytes + + return self.fp.read(read_bytes) + + def load_end(self) -> None: + """internal: finished reading image data""" + assert self.png is not None + if self.__idat != 0: + self.fp.read(self.__idat) + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + break + elif cid == b"fcTL" and self.is_animated: + # start of the next frame, stop reading + self.__prepare_idat = 0 + self.png.push(cid, pos, length) + break + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + try: + ImageFile._safe_read(self.fp, length) + except OSError as e: + if ImageFile.LOAD_TRUNCATED_IMAGES: + break + else: + raise e + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + if cid[1:2].islower(): + self.private_chunks.append((cid, s, True)) + self._text = self.png.im_text + if not self.is_animated: + self.png.close() + self.png = None + else: + if self._prev_im and self.blend_op == Blend.OP_OVER: + updated = self._crop(self.im, self.dispose_extent) + if self.im.mode == "RGB" and "transparency" in self.info: + mask = updated.convert_transparent( + "RGBA", self.info["transparency"] + ) + else: + if self.im.mode == "P" and "transparency" in self.info: + t = self.info["transparency"] + if isinstance(t, bytes): + updated.putpalettealphas(t) + elif isinstance(t, int): + updated.putpalettealpha(t) + mask = updated.convert("RGBA") + self._prev_im.paste(updated, self.dispose_extent, mask) + self.im = self._prev_im + + def _getexif(self) -> dict[int, Any] | None: + if "exif" not in self.info: + self.load() + if "exif" not in self.info and "Raw profile type exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + def getexif(self) -> Image.Exif: + if "exif" not in self.info: + self.load() + + return super().getexif() + + +# -------------------------------------------------------------------- +# PNG writer + +_OUTMODES = { + # supported PIL modes, and corresponding rawmode, bit depth and color type + "1": ("1", b"\x01", b"\x00"), + "L;1": ("L;1", b"\x01", b"\x00"), + "L;2": ("L;2", b"\x02", b"\x00"), + "L;4": ("L;4", b"\x04", b"\x00"), + "L": ("L", b"\x08", b"\x00"), + "LA": ("LA", b"\x08", b"\x04"), + "I": ("I;16B", b"\x10", b"\x00"), + "I;16": ("I;16B", b"\x10", b"\x00"), + "I;16B": ("I;16B", b"\x10", b"\x00"), + "P;1": ("P;1", b"\x01", b"\x03"), + "P;2": ("P;2", b"\x02", b"\x03"), + "P;4": ("P;4", b"\x04", b"\x03"), + "P": ("P", b"\x08", b"\x03"), + "RGB": ("RGB", b"\x08", b"\x02"), + "RGBA": ("RGBA", b"\x08", b"\x06"), +} + + +def putchunk(fp: IO[bytes], cid: bytes, *data: bytes) -> None: + """Write a PNG chunk (including CRC field)""" + + byte_data = b"".join(data) + + fp.write(o32(len(byte_data)) + cid) + fp.write(byte_data) + crc = _crc32(byte_data, _crc32(cid)) + fp.write(o32(crc)) + + +class _idat: + # wrap output from the encoder in IDAT chunks + + def __init__(self, fp: IO[bytes], chunk: Callable[..., None]) -> None: + self.fp = fp + self.chunk = chunk + + def write(self, data: bytes) -> None: + self.chunk(self.fp, b"IDAT", data) + + +class _fdat: + # wrap encoder output in fdAT chunks + + def __init__(self, fp: IO[bytes], chunk: Callable[..., None], seq_num: int) -> None: + self.fp = fp + self.chunk = chunk + self.seq_num = seq_num + + def write(self, data: bytes) -> None: + self.chunk(self.fp, b"fdAT", o32(self.seq_num), data) + self.seq_num += 1 + + +class _Frame(NamedTuple): + im: Image.Image + bbox: tuple[int, int, int, int] | None + encoderinfo: dict[str, Any] + + +def _write_multiple_frames( + im: Image.Image, + fp: IO[bytes], + chunk: Callable[..., None], + mode: str, + rawmode: str, + default_image: Image.Image | None, + append_images: list[Image.Image], +) -> Image.Image | None: + duration = im.encoderinfo.get("duration") + loop = im.encoderinfo.get("loop", im.info.get("loop", 0)) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal", Disposal.OP_NONE)) + blend = im.encoderinfo.get("blend", im.info.get("blend", Blend.OP_SOURCE)) + + if default_image: + chain = itertools.chain(append_images) + else: + chain = itertools.chain([im], append_images) + + im_frames: list[_Frame] = [] + frame_count = 0 + for im_seq in chain: + for im_frame in ImageSequence.Iterator(im_seq): + if im_frame.mode == mode: + im_frame = im_frame.copy() + else: + im_frame = im_frame.convert(mode) + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + elif duration is None and "duration" in im_frame.info: + encoderinfo["duration"] = im_frame.info["duration"] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + if isinstance(blend, (list, tuple)): + encoderinfo["blend"] = blend[frame_count] + frame_count += 1 + + if im_frames: + previous = im_frames[-1] + prev_disposal = previous.encoderinfo.get("disposal") + prev_blend = previous.encoderinfo.get("blend") + if prev_disposal == Disposal.OP_PREVIOUS and len(im_frames) < 2: + prev_disposal = Disposal.OP_BACKGROUND + + if prev_disposal == Disposal.OP_BACKGROUND: + base_im = previous.im.copy() + dispose = Image.core.fill("RGBA", im.size, (0, 0, 0, 0)) + bbox = previous.bbox + if bbox: + dispose = dispose.crop(bbox) + else: + bbox = (0, 0) + im.size + base_im.paste(dispose, bbox) + elif prev_disposal == Disposal.OP_PREVIOUS: + base_im = im_frames[-2].im + else: + base_im = previous.im + delta = ImageChops.subtract_modulo( + im_frame.convert("RGBA"), base_im.convert("RGBA") + ) + bbox = delta.getbbox(alpha_only=False) + if ( + not bbox + and prev_disposal == encoderinfo.get("disposal") + and prev_blend == encoderinfo.get("blend") + and "duration" in encoderinfo + ): + previous.encoderinfo["duration"] += encoderinfo["duration"] + continue + else: + bbox = None + im_frames.append(_Frame(im_frame, bbox, encoderinfo)) + + if len(im_frames) == 1 and not default_image: + return im_frames[0].im + + # animation control + chunk( + fp, + b"acTL", + o32(len(im_frames)), # 0: num_frames + o32(loop), # 4: num_plays + ) + + # default image IDAT (if it exists) + if default_image: + if im.mode != mode: + im = im.convert(mode) + ImageFile._save( + im, + cast(IO[bytes], _idat(fp, chunk)), + [ImageFile._Tile("zip", (0, 0) + im.size, 0, rawmode)], + ) + + seq_num = 0 + for frame, frame_data in enumerate(im_frames): + im_frame = frame_data.im + if not frame_data.bbox: + bbox = (0, 0) + im_frame.size + else: + bbox = frame_data.bbox + im_frame = im_frame.crop(bbox) + size = im_frame.size + encoderinfo = frame_data.encoderinfo + frame_duration = int(round(encoderinfo.get("duration", 0))) + frame_disposal = encoderinfo.get("disposal", disposal) + frame_blend = encoderinfo.get("blend", blend) + # frame control + chunk( + fp, + b"fcTL", + o32(seq_num), # sequence_number + o32(size[0]), # width + o32(size[1]), # height + o32(bbox[0]), # x_offset + o32(bbox[1]), # y_offset + o16(frame_duration), # delay_numerator + o16(1000), # delay_denominator + o8(frame_disposal), # dispose_op + o8(frame_blend), # blend_op + ) + seq_num += 1 + # frame data + if frame == 0 and not default_image: + # first frame must be in IDAT chunks for backwards compatibility + ImageFile._save( + im_frame, + cast(IO[bytes], _idat(fp, chunk)), + [ImageFile._Tile("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + else: + fdat_chunks = _fdat(fp, chunk, seq_num) + ImageFile._save( + im_frame, + cast(IO[bytes], fdat_chunks), + [ImageFile._Tile("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + seq_num = fdat_chunks.seq_num + return None + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +def _save( + im: Image.Image, + fp: IO[bytes], + filename: str | bytes, + chunk: Callable[..., None] = putchunk, + save_all: bool = False, +) -> None: + # save an image to disk (called by the save method) + + if save_all: + default_image = im.encoderinfo.get( + "default_image", im.info.get("default_image") + ) + modes = set() + sizes = set() + append_images = im.encoderinfo.get("append_images", []) + for im_seq in itertools.chain([im], append_images): + for im_frame in ImageSequence.Iterator(im_seq): + modes.add(im_frame.mode) + sizes.add(im_frame.size) + for mode in ("RGBA", "RGB", "P"): + if mode in modes: + break + else: + mode = modes.pop() + size = tuple(max(frame_size[i] for frame_size in sizes) for i in range(2)) + else: + size = im.size + mode = im.mode + + outmode = mode + if mode == "P": + # + # attempt to minimize storage requirements for palette images + if "bits" in im.encoderinfo: + # number of bits specified by user + colors = min(1 << im.encoderinfo["bits"], 256) + else: + # check palette contents + if im.palette: + colors = max(min(len(im.palette.getdata()[1]) // 3, 256), 1) + else: + colors = 256 + + if colors <= 16: + if colors <= 2: + bits = 1 + elif colors <= 4: + bits = 2 + else: + bits = 4 + outmode += f";{bits}" + + # encoder options + im.encoderconfig = ( + im.encoderinfo.get("optimize", False), + im.encoderinfo.get("compress_level", -1), + im.encoderinfo.get("compress_type", -1), + im.encoderinfo.get("dictionary", b""), + ) + + # get the corresponding PNG mode + try: + rawmode, bit_depth, color_type = _OUTMODES[outmode] + except KeyError as e: + msg = f"cannot write mode {mode} as PNG" + raise OSError(msg) from e + if outmode == "I": + deprecate("Saving I mode images as PNG", 13, stacklevel=4) + + # + # write minimal PNG file + + fp.write(_MAGIC) + + chunk( + fp, + b"IHDR", + o32(size[0]), # 0: size + o32(size[1]), + bit_depth, + color_type, + b"\0", # 10: compression + b"\0", # 11: filter category + b"\0", # 12: interlace flag + ) + + chunks = [b"cHRM", b"cICP", b"gAMA", b"sBIT", b"sRGB", b"tIME"] + + icc = im.encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + # ICC profile + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + name = b"ICC Profile" + data = name + b"\0\0" + zlib.compress(icc) + chunk(fp, b"iCCP", data) + + # You must either have sRGB or iCCP. + # Disallow sRGB chunks when an iCCP-chunk has been emitted. + chunks.remove(b"sRGB") + + info = im.encoderinfo.get("pnginfo") + if info: + chunks_multiple_allowed = [b"sPLT", b"iTXt", b"tEXt", b"zTXt"] + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + elif cid in chunks_multiple_allowed: + chunk(fp, cid, data) + elif cid[1:2].islower(): + # Private chunk + after_idat = len(info_chunk) == 3 and info_chunk[2] + if not after_idat: + chunk(fp, cid, data) + + if im.mode == "P": + palette_byte_number = colors * 3 + palette_bytes = im.im.getpalette("RGB")[:palette_byte_number] + while len(palette_bytes) < palette_byte_number: + palette_bytes += b"\0" + chunk(fp, b"PLTE", palette_bytes) + + transparency = im.encoderinfo.get("transparency", im.info.get("transparency", None)) + + if transparency or transparency == 0: + if im.mode == "P": + # limit to actual palette size + alpha_bytes = colors + if isinstance(transparency, bytes): + chunk(fp, b"tRNS", transparency[:alpha_bytes]) + else: + transparency = max(0, min(255, transparency)) + alpha = b"\xff" * transparency + b"\0" + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + elif im.mode in ("1", "L", "I", "I;16"): + transparency = max(0, min(65535, transparency)) + chunk(fp, b"tRNS", o16(transparency)) + elif im.mode == "RGB": + red, green, blue = transparency + chunk(fp, b"tRNS", o16(red) + o16(green) + o16(blue)) + else: + if "transparency" in im.encoderinfo: + # don't bother with transparency if it's an RGBA + # and it's in the info dict. It's probably just stale. + msg = "cannot use transparency for this mode" + raise OSError(msg) + else: + if im.mode == "P" and im.im.getpalettemode() == "RGBA": + alpha = im.im.getpalette("RGBA", "A") + alpha_bytes = colors + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + + dpi = im.encoderinfo.get("dpi") + if dpi: + chunk( + fp, + b"pHYs", + o32(int(dpi[0] / 0.0254 + 0.5)), + o32(int(dpi[1] / 0.0254 + 0.5)), + b"\x01", + ) + + if info: + chunks = [b"bKGD", b"hIST"] + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + + exif = im.encoderinfo.get("exif") + if exif: + if isinstance(exif, Image.Exif): + exif = exif.tobytes(8) + if exif.startswith(b"Exif\x00\x00"): + exif = exif[6:] + chunk(fp, b"eXIf", exif) + + single_im: Image.Image | None = im + if save_all: + single_im = _write_multiple_frames( + im, fp, chunk, mode, rawmode, default_image, append_images + ) + if single_im: + ImageFile._save( + single_im, + cast(IO[bytes], _idat(fp, chunk)), + [ImageFile._Tile("zip", (0, 0) + single_im.size, 0, rawmode)], + ) + + if info: + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid[1:2].islower(): + # Private chunk + after_idat = len(info_chunk) == 3 and info_chunk[2] + if after_idat: + chunk(fp, cid, data) + + chunk(fp, b"IEND", b"") + + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- +# PNG chunk converter + + +def getchunks(im: Image.Image, **params: Any) -> list[tuple[bytes, bytes, bytes]]: + """Return a list of PNG chunks representing this image.""" + from io import BytesIO + + chunks = [] + + def append(fp: IO[bytes], cid: bytes, *data: bytes) -> None: + byte_data = b"".join(data) + crc = o32(_crc32(byte_data, _crc32(cid))) + chunks.append((cid, byte_data, crc)) + + fp = BytesIO() + + try: + im.encoderinfo = params + _save(im, fp, "", append) + finally: + del im.encoderinfo + + return chunks + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(PngImageFile.format, PngImageFile, _accept) +Image.register_save(PngImageFile.format, _save) +Image.register_save_all(PngImageFile.format, _save_all) + +Image.register_extensions(PngImageFile.format, [".png", ".apng"]) + +Image.register_mime(PngImageFile.format, "image/png") diff --git a/myenv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py new file mode 100644 index 0000000..db34d10 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py @@ -0,0 +1,375 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PPM support for PIL +# +# History: +# 96-03-24 fl Created +# 98-03-06 fl Write RGBA images (as RGB, that is) +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import math +from typing import IO + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import o8 +from ._binary import o32le as o32 + +# +# -------------------------------------------------------------------- + +b_whitespace = b"\x20\x09\x0a\x0b\x0c\x0d" + +MODES = { + # standard + b"P1": "1", + b"P2": "L", + b"P3": "RGB", + b"P4": "1", + b"P5": "L", + b"P6": "RGB", + # extensions + b"P0CMYK": "CMYK", + b"Pf": "F", + # PIL extensions (for test purposes only) + b"PyP": "P", + b"PyRGBA": "RGBA", + b"PyCMYK": "CMYK", +} + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"P") and prefix[1] in b"0123456fy" + + +## +# Image plugin for PBM, PGM, and PPM images. + + +class PpmImageFile(ImageFile.ImageFile): + format = "PPM" + format_description = "Pbmplus image" + + def _read_magic(self) -> bytes: + assert self.fp is not None + + magic = b"" + # read until whitespace or longest available magic number + for _ in range(6): + c = self.fp.read(1) + if not c or c in b_whitespace: + break + magic += c + return magic + + def _read_token(self) -> bytes: + assert self.fp is not None + + token = b"" + while len(token) <= 10: # read until next whitespace or limit of 10 characters + c = self.fp.read(1) + if not c: + break + elif c in b_whitespace: # token ended + if not token: + # skip whitespace at start + continue + break + elif c == b"#": + # ignores rest of the line; stops at CR, LF or EOF + while self.fp.read(1) not in b"\r\n": + pass + continue + token += c + if not token: + # Token was not even 1 byte + msg = "Reached EOF while reading header" + raise ValueError(msg) + elif len(token) > 10: + msg_too_long = b"Token too long in file header: %s" % token + raise ValueError(msg_too_long) + return token + + def _open(self) -> None: + assert self.fp is not None + + magic_number = self._read_magic() + try: + mode = MODES[magic_number] + except KeyError: + msg = "not a PPM file" + raise SyntaxError(msg) + self._mode = mode + + if magic_number in (b"P1", b"P4"): + self.custom_mimetype = "image/x-portable-bitmap" + elif magic_number in (b"P2", b"P5"): + self.custom_mimetype = "image/x-portable-graymap" + elif magic_number in (b"P3", b"P6"): + self.custom_mimetype = "image/x-portable-pixmap" + + self._size = int(self._read_token()), int(self._read_token()) + + decoder_name = "raw" + if magic_number in (b"P1", b"P2", b"P3"): + decoder_name = "ppm_plain" + + args: str | tuple[str | int, ...] + if mode == "1": + args = "1;I" + elif mode == "F": + scale = float(self._read_token()) + if scale == 0.0 or not math.isfinite(scale): + msg = "scale must be finite and non-zero" + raise ValueError(msg) + self.info["scale"] = abs(scale) + + rawmode = "F;32F" if scale < 0 else "F;32BF" + args = (rawmode, 0, -1) + else: + maxval = int(self._read_token()) + if not 0 < maxval < 65536: + msg = "maxval must be greater than 0 and less than 65536" + raise ValueError(msg) + if maxval > 255 and mode == "L": + self._mode = "I" + + rawmode = mode + if decoder_name != "ppm_plain": + # If maxval matches a bit depth, use the raw decoder directly + if maxval == 65535 and mode == "L": + rawmode = "I;16B" + elif maxval != 255: + decoder_name = "ppm" + + args = rawmode if decoder_name == "raw" else (rawmode, maxval) + self.tile = [ + ImageFile._Tile(decoder_name, (0, 0) + self.size, self.fp.tell(), args) + ] + + +# +# -------------------------------------------------------------------- + + +class PpmPlainDecoder(ImageFile.PyDecoder): + _pulls_fd = True + _comment_spans: bool + + def _read_block(self) -> bytes: + assert self.fd is not None + + return self.fd.read(ImageFile.SAFEBLOCK) + + def _find_comment_end(self, block: bytes, start: int = 0) -> int: + a = block.find(b"\n", start) + b = block.find(b"\r", start) + return min(a, b) if a * b > 0 else max(a, b) # lowest nonnegative index (or -1) + + def _ignore_comments(self, block: bytes) -> bytes: + if self._comment_spans: + # Finish current comment + while block: + comment_end = self._find_comment_end(block) + if comment_end != -1: + # Comment ends in this block + # Delete tail of comment + block = block[comment_end + 1 :] + break + else: + # Comment spans whole block + # So read the next block, looking for the end + block = self._read_block() + + # Search for any further comments + self._comment_spans = False + while True: + comment_start = block.find(b"#") + if comment_start == -1: + # No comment found + break + comment_end = self._find_comment_end(block, comment_start) + if comment_end != -1: + # Comment ends in this block + # Delete comment + block = block[:comment_start] + block[comment_end + 1 :] + else: + # Comment continues to next block(s) + block = block[:comment_start] + self._comment_spans = True + break + return block + + def _decode_bitonal(self) -> bytearray: + """ + This is a separate method because in the plain PBM format, all data tokens are + exactly one byte, so the inter-token whitespace is optional. + """ + data = bytearray() + total_bytes = self.state.xsize * self.state.ysize + + while len(data) != total_bytes: + block = self._read_block() # read next block + if not block: + # eof + break + + block = self._ignore_comments(block) + + tokens = b"".join(block.split()) + for token in tokens: + if token not in (48, 49): + msg = b"Invalid token for this mode: %s" % bytes([token]) + raise ValueError(msg) + data = (data + tokens)[:total_bytes] + invert = bytes.maketrans(b"01", b"\xff\x00") + return data.translate(invert) + + def _decode_blocks(self, maxval: int) -> bytearray: + data = bytearray() + max_len = 10 + out_byte_count = 4 if self.mode == "I" else 1 + out_max = 65535 if self.mode == "I" else 255 + bands = Image.getmodebands(self.mode) + total_bytes = self.state.xsize * self.state.ysize * bands * out_byte_count + + half_token = b"" + while len(data) != total_bytes: + block = self._read_block() # read next block + if not block: + if half_token: + block = bytearray(b" ") # flush half_token + else: + # eof + break + + block = self._ignore_comments(block) + + if half_token: + block = half_token + block # stitch half_token to new block + half_token = b"" + + tokens = block.split() + + if block and not block[-1:].isspace(): # block might split token + half_token = tokens.pop() # save half token for later + if len(half_token) > max_len: # prevent buildup of half_token + msg = ( + b"Token too long found in data: %s" % half_token[: max_len + 1] + ) + raise ValueError(msg) + + for token in tokens: + if len(token) > max_len: + msg = b"Token too long found in data: %s" % token[: max_len + 1] + raise ValueError(msg) + value = int(token) + if value < 0: + msg_str = f"Channel value is negative: {value}" + raise ValueError(msg_str) + if value > maxval: + msg_str = f"Channel value too large for this mode: {value}" + raise ValueError(msg_str) + value = round(value / maxval * out_max) + data += o32(value) if self.mode == "I" else o8(value) + if len(data) == total_bytes: # finished! + break + return data + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + self._comment_spans = False + if self.mode == "1": + data = self._decode_bitonal() + rawmode = "1;8" + else: + maxval = self.args[-1] + data = self._decode_blocks(maxval) + rawmode = "I;32" if self.mode == "I" else self.mode + self.set_as_raw(bytes(data), rawmode) + return -1, 0 + + +class PpmDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + data = bytearray() + maxval = self.args[-1] + in_byte_count = 1 if maxval < 256 else 2 + out_byte_count = 4 if self.mode == "I" else 1 + out_max = 65535 if self.mode == "I" else 255 + bands = Image.getmodebands(self.mode) + dest_length = self.state.xsize * self.state.ysize * bands * out_byte_count + while len(data) < dest_length: + pixels = self.fd.read(in_byte_count * bands) + if len(pixels) < in_byte_count * bands: + # eof + break + for b in range(bands): + value = ( + pixels[b] if in_byte_count == 1 else i16(pixels, b * in_byte_count) + ) + value = min(out_max, round(value / maxval * out_max)) + data += o32(value) if self.mode == "I" else o8(value) + rawmode = "I;32" if self.mode == "I" else self.mode + self.set_as_raw(bytes(data), rawmode) + return -1, 0 + + +# +# -------------------------------------------------------------------- + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode == "1": + rawmode, head = "1;I", b"P4" + elif im.mode == "L": + rawmode, head = "L", b"P5" + elif im.mode in ("I", "I;16"): + rawmode, head = "I;16B", b"P5" + elif im.mode in ("RGB", "RGBA"): + rawmode, head = "RGB", b"P6" + elif im.mode == "F": + rawmode, head = "F;32F", b"Pf" + else: + msg = f"cannot write mode {im.mode} as PPM" + raise OSError(msg) + fp.write(head + b"\n%d %d\n" % im.size) + if head == b"P6": + fp.write(b"255\n") + elif head == b"P5": + if rawmode == "L": + fp.write(b"255\n") + else: + fp.write(b"65535\n") + elif head == b"Pf": + fp.write(b"-1.0\n") + row_order = -1 if im.mode == "F" else 1 + ImageFile._save( + im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, 0, row_order))] + ) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(PpmImageFile.format, PpmImageFile, _accept) +Image.register_save(PpmImageFile.format, _save) + +Image.register_decoder("ppm", PpmDecoder) +Image.register_decoder("ppm_plain", PpmPlainDecoder) + +Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm", ".pnm", ".pfm"]) + +Image.register_mime(PpmImageFile.format, "image/x-portable-anymap") diff --git a/myenv/lib/python3.10/site-packages/PIL/PsdImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/PsdImagePlugin.py new file mode 100644 index 0000000..f49aaee --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/PsdImagePlugin.py @@ -0,0 +1,333 @@ +# +# The Python Imaging Library +# $Id$ +# +# Adobe PSD 2.5/3.0 file handling +# +# History: +# 1995-09-01 fl Created +# 1997-01-03 fl Read most PSD images +# 1997-01-18 fl Fixed P and CMYK support +# 2001-10-21 fl Added seek/tell support (for layers) +# +# Copyright (c) 1997-2001 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +from functools import cached_property +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i8 +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import si16be as si16 +from ._binary import si32be as si32 +from ._util import DeferredError + +MODES = { + # (photoshop mode, bits) -> (pil mode, required channels) + (0, 1): ("1", 1), + (0, 8): ("L", 1), + (1, 8): ("L", 1), + (2, 8): ("P", 1), + (3, 8): ("RGB", 3), + (4, 8): ("CMYK", 4), + (7, 8): ("L", 1), # FIXME: multilayer + (8, 8): ("L", 1), # duotone + (9, 8): ("LAB", 3), +} + + +# --------------------------------------------------------------------. +# read PSD images + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"8BPS") + + +## +# Image plugin for Photoshop images. + + +class PsdImageFile(ImageFile.ImageFile): + format = "PSD" + format_description = "Adobe Photoshop" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + read = self.fp.read + + # + # header + + s = read(26) + if not _accept(s) or i16(s, 4) != 1: + msg = "not a PSD file" + raise SyntaxError(msg) + + psd_bits = i16(s, 22) + psd_channels = i16(s, 12) + psd_mode = i16(s, 24) + + mode, channels = MODES[(psd_mode, psd_bits)] + + if channels > psd_channels: + msg = "not enough channels" + raise OSError(msg) + if mode == "RGB" and psd_channels == 4: + mode = "RGBA" + channels = 4 + + self._mode = mode + self._size = i32(s, 18), i32(s, 14) + + # + # color mode data + + size = i32(read(4)) + if size: + data = read(size) + if mode == "P" and size == 768: + self.palette = ImagePalette.raw("RGB;L", data) + + # + # image resources + + self.resources = [] + + size = i32(read(4)) + if size: + # load resources + end = self.fp.tell() + size + while self.fp.tell() < end: + read(4) # signature + id = i16(read(2)) + name = read(i8(read(1))) + if not (len(name) & 1): + read(1) # padding + data = read(i32(read(4))) + if len(data) & 1: + read(1) # padding + self.resources.append((id, name, data)) + if id == 1039: # ICC profile + self.info["icc_profile"] = data + + # + # layer and mask information + + self._layers_position = None + + size = i32(read(4)) + if size: + end = self.fp.tell() + size + size = i32(read(4)) + if size: + self._layers_position = self.fp.tell() + self._layers_size = size + self.fp.seek(end) + self._n_frames: int | None = None + + # + # image descriptor + + self.tile = _maketile(self.fp, mode, (0, 0) + self.size, channels) + + # keep the file open + self._fp = self.fp + self.frame = 1 + self._min_frame = 1 + + @cached_property + def layers( + self, + ) -> list[tuple[str, str, tuple[int, int, int, int], list[ImageFile._Tile]]]: + layers = [] + if self._layers_position is not None: + if isinstance(self._fp, DeferredError): + raise self._fp.ex + self._fp.seek(self._layers_position) + _layer_data = io.BytesIO(ImageFile._safe_read(self._fp, self._layers_size)) + layers = _layerinfo(_layer_data, self._layers_size) + self._n_frames = len(layers) + return layers + + @property + def n_frames(self) -> int: + if self._n_frames is None: + self._n_frames = len(self.layers) + return self._n_frames + + @property + def is_animated(self) -> bool: + return len(self.layers) > 1 + + def seek(self, layer: int) -> None: + if not self._seek_check(layer): + return + if isinstance(self._fp, DeferredError): + raise self._fp.ex + + # seek to given layer (1..max) + _, mode, _, tile = self.layers[layer - 1] + self._mode = mode + self.tile = tile + self.frame = layer + self.fp = self._fp + + def tell(self) -> int: + # return layer number (0=image, 1..max=layers) + return self.frame + + +def _layerinfo( + fp: IO[bytes], ct_bytes: int +) -> list[tuple[str, str, tuple[int, int, int, int], list[ImageFile._Tile]]]: + # read layerinfo block + layers = [] + + def read(size: int) -> bytes: + return ImageFile._safe_read(fp, size) + + ct = si16(read(2)) + + # sanity check + if ct_bytes < (abs(ct) * 20): + msg = "Layer block too short for number of layers requested" + raise SyntaxError(msg) + + for _ in range(abs(ct)): + # bounding box + y0 = si32(read(4)) + x0 = si32(read(4)) + y1 = si32(read(4)) + x1 = si32(read(4)) + + # image info + bands = [] + ct_types = i16(read(2)) + if ct_types > 4: + fp.seek(ct_types * 6 + 12, io.SEEK_CUR) + size = i32(read(4)) + fp.seek(size, io.SEEK_CUR) + continue + + for _ in range(ct_types): + type = i16(read(2)) + + if type == 65535: + b = "A" + else: + b = "RGBA"[type] + + bands.append(b) + read(4) # size + + # figure out the image mode + bands.sort() + if bands == ["R"]: + mode = "L" + elif bands == ["B", "G", "R"]: + mode = "RGB" + elif bands == ["A", "B", "G", "R"]: + mode = "RGBA" + else: + mode = "" # unknown + + # skip over blend flags and extra information + read(12) # filler + name = "" + size = i32(read(4)) # length of the extra data field + if size: + data_end = fp.tell() + size + + length = i32(read(4)) + if length: + fp.seek(length - 16, io.SEEK_CUR) + + length = i32(read(4)) + if length: + fp.seek(length, io.SEEK_CUR) + + length = i8(read(1)) + if length: + # Don't know the proper encoding, + # Latin-1 should be a good guess + name = read(length).decode("latin-1", "replace") + + fp.seek(data_end) + layers.append((name, mode, (x0, y0, x1, y1))) + + # get tiles + layerinfo = [] + for i, (name, mode, bbox) in enumerate(layers): + tile = [] + for m in mode: + t = _maketile(fp, m, bbox, 1) + if t: + tile.extend(t) + layerinfo.append((name, mode, bbox, tile)) + + return layerinfo + + +def _maketile( + file: IO[bytes], mode: str, bbox: tuple[int, int, int, int], channels: int +) -> list[ImageFile._Tile]: + tiles = [] + read = file.read + + compression = i16(read(2)) + + xsize = bbox[2] - bbox[0] + ysize = bbox[3] - bbox[1] + + offset = file.tell() + + if compression == 0: + # + # raw compression + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tiles.append(ImageFile._Tile("raw", bbox, offset, layer)) + offset = offset + xsize * ysize + + elif compression == 1: + # + # packbits compression + i = 0 + bytecount = read(channels * ysize * 2) + offset = file.tell() + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tiles.append(ImageFile._Tile("packbits", bbox, offset, layer)) + for y in range(ysize): + offset = offset + i16(bytecount, i) + i += 2 + + file.seek(offset) + + if offset & 1: + read(1) # padding + + return tiles + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PsdImageFile.format, PsdImageFile, _accept) + +Image.register_extension(PsdImageFile.format, ".psd") + +Image.register_mime(PsdImageFile.format, "image/vnd.adobe.photoshop") diff --git a/myenv/lib/python3.10/site-packages/PIL/QoiImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/QoiImagePlugin.py new file mode 100644 index 0000000..dba5d80 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/QoiImagePlugin.py @@ -0,0 +1,234 @@ +# +# The Python Imaging Library. +# +# QOI support for PIL +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +from typing import IO + +from . import Image, ImageFile +from ._binary import i32be as i32 +from ._binary import o8 +from ._binary import o32be as o32 + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"qoif") + + +class QoiImageFile(ImageFile.ImageFile): + format = "QOI" + format_description = "Quite OK Image" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "not a QOI file" + raise SyntaxError(msg) + + self._size = i32(self.fp.read(4)), i32(self.fp.read(4)) + + channels = self.fp.read(1)[0] + 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())] + + +class QoiDecoder(ImageFile.PyDecoder): + _pulls_fd = True + _previous_pixel: bytes | bytearray | None = None + _previously_seen_pixels: dict[int, bytes | bytearray] = {} + + def _add_to_previous_pixels(self, value: bytes | bytearray) -> None: + self._previous_pixel = value + + r, g, b, a = value + hash_value = (r * 3 + g * 5 + b * 7 + a * 11) % 64 + self._previously_seen_pixels[hash_value] = value + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + self._previously_seen_pixels = {} + self._previous_pixel = bytearray((0, 0, 0, 255)) + + data = bytearray() + bands = Image.getmodebands(self.mode) + dest_length = self.state.xsize * self.state.ysize * bands + while len(data) < dest_length: + byte = self.fd.read(1)[0] + value: bytes | bytearray + if byte == 0b11111110 and self._previous_pixel: # QOI_OP_RGB + value = bytearray(self.fd.read(3)) + self._previous_pixel[3:] + elif byte == 0b11111111: # QOI_OP_RGBA + value = self.fd.read(4) + else: + op = byte >> 6 + if op == 0: # QOI_OP_INDEX + op_index = byte & 0b00111111 + value = self._previously_seen_pixels.get( + op_index, bytearray((0, 0, 0, 0)) + ) + elif op == 1 and self._previous_pixel: # QOI_OP_DIFF + value = bytearray( + ( + (self._previous_pixel[0] + ((byte & 0b00110000) >> 4) - 2) + % 256, + (self._previous_pixel[1] + ((byte & 0b00001100) >> 2) - 2) + % 256, + (self._previous_pixel[2] + (byte & 0b00000011) - 2) % 256, + self._previous_pixel[3], + ) + ) + elif op == 2 and self._previous_pixel: # QOI_OP_LUMA + second_byte = self.fd.read(1)[0] + diff_green = (byte & 0b00111111) - 32 + diff_red = ((second_byte & 0b11110000) >> 4) - 8 + diff_blue = (second_byte & 0b00001111) - 8 + + value = bytearray( + tuple( + (self._previous_pixel[i] + diff_green + diff) % 256 + for i, diff in enumerate((diff_red, 0, diff_blue)) + ) + ) + value += self._previous_pixel[3:] + elif op == 3 and self._previous_pixel: # QOI_OP_RUN + run_length = (byte & 0b00111111) + 1 + value = self._previous_pixel + if bands == 3: + value = value[:3] + data += value * run_length + continue + self._add_to_previous_pixels(value) + + if bands == 3: + value = value[:3] + data += value + self.set_as_raw(data) + return -1, 0 + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode == "RGB": + channels = 3 + elif im.mode == "RGBA": + channels = 4 + else: + msg = "Unsupported QOI image mode" + raise ValueError(msg) + + colorspace = 0 if im.encoderinfo.get("colorspace") == "sRGB" else 1 + + fp.write(b"qoif") + fp.write(o32(im.size[0])) + fp.write(o32(im.size[1])) + fp.write(o8(channels)) + fp.write(o8(colorspace)) + + ImageFile._save(im, fp, [ImageFile._Tile("qoi", (0, 0) + im.size)]) + + +class QoiEncoder(ImageFile.PyEncoder): + _pushes_fd = True + _previous_pixel: tuple[int, int, int, int] | None = None + _previously_seen_pixels: dict[int, tuple[int, int, int, int]] = {} + _run = 0 + + def _write_run(self) -> bytes: + data = o8(0b11000000 | (self._run - 1)) # QOI_OP_RUN + self._run = 0 + return data + + def _delta(self, left: int, right: int) -> int: + result = (left - right) & 255 + if result >= 128: + result -= 256 + return result + + def encode(self, bufsize: int) -> tuple[int, int, bytes]: + assert self.im is not None + + self._previously_seen_pixels = {0: (0, 0, 0, 0)} + self._previous_pixel = (0, 0, 0, 255) + + data = bytearray() + w, h = self.im.size + bands = Image.getmodebands(self.mode) + + for y in range(h): + for x in range(w): + pixel = self.im.getpixel((x, y)) + if bands == 3: + pixel = (*pixel, 255) + + if pixel == self._previous_pixel: + self._run += 1 + if self._run == 62: + data += self._write_run() + else: + if self._run: + data += self._write_run() + + r, g, b, a = pixel + hash_value = (r * 3 + g * 5 + b * 7 + a * 11) % 64 + if self._previously_seen_pixels.get(hash_value) == pixel: + data += o8(hash_value) # QOI_OP_INDEX + elif self._previous_pixel: + self._previously_seen_pixels[hash_value] = pixel + + prev_r, prev_g, prev_b, prev_a = self._previous_pixel + if prev_a == a: + delta_r = self._delta(r, prev_r) + delta_g = self._delta(g, prev_g) + delta_b = self._delta(b, prev_b) + + if ( + -2 <= delta_r < 2 + and -2 <= delta_g < 2 + and -2 <= delta_b < 2 + ): + data += o8( + 0b01000000 + | (delta_r + 2) << 4 + | (delta_g + 2) << 2 + | (delta_b + 2) + ) # QOI_OP_DIFF + else: + delta_gr = self._delta(delta_r, delta_g) + delta_gb = self._delta(delta_b, delta_g) + if ( + -8 <= delta_gr < 8 + and -32 <= delta_g < 32 + and -8 <= delta_gb < 8 + ): + data += o8( + 0b10000000 | (delta_g + 32) + ) # QOI_OP_LUMA + data += o8((delta_gr + 8) << 4 | (delta_gb + 8)) + else: + data += o8(0b11111110) # QOI_OP_RGB + data += bytes(pixel[:3]) + else: + data += o8(0b11111111) # QOI_OP_RGBA + data += bytes(pixel) + + self._previous_pixel = pixel + + if self._run: + data += self._write_run() + data += bytes((0, 0, 0, 0, 0, 0, 0, 1)) # padding + + return len(data), 0, data + + +Image.register_open(QoiImageFile.format, QoiImageFile, _accept) +Image.register_decoder("qoi", QoiDecoder) +Image.register_extension(QoiImageFile.format, ".qoi") + +Image.register_save(QoiImageFile.format, _save) +Image.register_encoder("qoi", QoiEncoder) diff --git a/myenv/lib/python3.10/site-packages/PIL/SgiImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/SgiImagePlugin.py new file mode 100644 index 0000000..8530221 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/SgiImagePlugin.py @@ -0,0 +1,231 @@ +# +# The Python Imaging Library. +# $Id$ +# +# SGI image file handling +# +# See "The SGI Image File Format (Draft version 0.97)", Paul Haeberli. +# +# +# +# History: +# 2017-22-07 mb Add RLE decompression +# 2016-16-10 mb Add save method without compression +# 1995-09-10 fl Created +# +# Copyright (c) 2016 by Mickael Bonfill. +# Copyright (c) 2008 by Karsten Hiddemann. +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1995 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +import struct +from typing import IO + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import o8 + + +def _accept(prefix: bytes) -> bool: + return len(prefix) >= 2 and i16(prefix) == 474 + + +MODES = { + (1, 1, 1): "L", + (1, 2, 1): "L", + (2, 1, 1): "L;16B", + (2, 2, 1): "L;16B", + (1, 3, 3): "RGB", + (2, 3, 3): "RGB;16B", + (1, 3, 4): "RGBA", + (2, 3, 4): "RGBA;16B", +} + + +## +# Image plugin for SGI images. +class SgiImageFile(ImageFile.ImageFile): + format = "SGI" + format_description = "SGI Image File Format" + + def _open(self) -> None: + # HEAD + assert self.fp is not None + + headlen = 512 + s = self.fp.read(headlen) + + if not _accept(s): + msg = "Not an SGI image file" + raise ValueError(msg) + + # compression : verbatim or RLE + compression = s[2] + + # bpc : 1 or 2 bytes (8bits or 16bits) + bpc = s[3] + + # dimension : 1, 2 or 3 (depending on xsize, ysize and zsize) + dimension = i16(s, 4) + + # xsize : width + xsize = i16(s, 6) + + # ysize : height + ysize = i16(s, 8) + + # zsize : channels count + zsize = i16(s, 10) + + # determine mode from bits/zsize + try: + rawmode = MODES[(bpc, dimension, zsize)] + except KeyError: + msg = "Unsupported SGI image mode" + raise ValueError(msg) + + self._size = xsize, ysize + self._mode = rawmode.split(";")[0] + if self.mode == "RGB": + self.custom_mimetype = "image/rgb" + + # orientation -1 : scanlines begins at the bottom-left corner + orientation = -1 + + # decoder info + if compression == 0: + pagesize = xsize * ysize * bpc + if bpc == 2: + self.tile = [ + ImageFile._Tile( + "SGI16", + (0, 0) + self.size, + headlen, + (self.mode, 0, orientation), + ) + ] + else: + self.tile = [] + offset = headlen + for layer in self.mode: + self.tile.append( + ImageFile._Tile( + "raw", (0, 0) + self.size, offset, (layer, 0, orientation) + ) + ) + offset += pagesize + elif compression == 1: + self.tile = [ + ImageFile._Tile( + "sgi_rle", (0, 0) + self.size, headlen, (rawmode, orientation, bpc) + ) + ] + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode not in {"RGB", "RGBA", "L"}: + msg = "Unsupported SGI image mode" + raise ValueError(msg) + + # Get the keyword arguments + info = im.encoderinfo + + # Byte-per-pixel precision, 1 = 8bits per pixel + bpc = info.get("bpc", 1) + + if bpc not in (1, 2): + msg = "Unsupported number of bytes per pixel" + raise ValueError(msg) + + # Flip the image, since the origin of SGI file is the bottom-left corner + orientation = -1 + # Define the file as SGI File Format + magic_number = 474 + # Run-Length Encoding Compression - Unsupported at this time + rle = 0 + + # X Dimension = width / Y Dimension = height + x, y = im.size + # Z Dimension: Number of channels + z = len(im.mode) + # Number of dimensions (x,y,z) + if im.mode == "L": + dimension = 1 if y == 1 else 2 + else: + dimension = 3 + + # Minimum Byte value + pinmin = 0 + # Maximum Byte value (255 = 8bits per pixel) + pinmax = 255 + # Image name (79 characters max, truncated below in write) + img_name = os.path.splitext(os.path.basename(filename))[0] + if isinstance(img_name, str): + img_name = img_name.encode("ascii", "ignore") + # Standard representation of pixel in the file + colormap = 0 + fp.write(struct.pack(">h", magic_number)) + fp.write(o8(rle)) + fp.write(o8(bpc)) + fp.write(struct.pack(">H", dimension)) + fp.write(struct.pack(">H", x)) + fp.write(struct.pack(">H", y)) + fp.write(struct.pack(">H", z)) + fp.write(struct.pack(">l", pinmin)) + fp.write(struct.pack(">l", pinmax)) + fp.write(struct.pack("4s", b"")) # dummy + fp.write(struct.pack("79s", img_name)) # truncates to 79 chars + fp.write(struct.pack("s", b"")) # force null byte after img_name + fp.write(struct.pack(">l", colormap)) + fp.write(struct.pack("404s", b"")) # dummy + + rawmode = "L" + if bpc == 2: + rawmode = "L;16B" + + for channel in im.split(): + fp.write(channel.tobytes("raw", rawmode, 0, orientation)) + + if hasattr(fp, "flush"): + fp.flush() + + +class SGI16Decoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + assert self.im is not None + + rawmode, stride, orientation = self.args + pagesize = self.state.xsize * self.state.ysize + zsize = len(self.mode) + self.fd.seek(512) + + for band in range(zsize): + channel = Image.new("L", (self.state.xsize, self.state.ysize)) + channel.frombytes( + self.fd.read(2 * pagesize), "raw", "L;16B", stride, orientation + ) + self.im.putband(channel.im, band) + + return -1, 0 + + +# +# registry + + +Image.register_decoder("SGI16", SGI16Decoder) +Image.register_open(SgiImageFile.format, SgiImageFile, _accept) +Image.register_save(SgiImageFile.format, _save) +Image.register_mime(SgiImageFile.format, "image/sgi") + +Image.register_extensions(SgiImageFile.format, [".bw", ".rgb", ".rgba", ".sgi"]) + +# End of file diff --git a/myenv/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py new file mode 100644 index 0000000..868019e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py @@ -0,0 +1,331 @@ +# +# The Python Imaging Library. +# +# SPIDER image file handling +# +# History: +# 2004-08-02 Created BB +# 2006-03-02 added save method +# 2006-03-13 added support for stack images +# +# Copyright (c) 2004 by Health Research Inc. (HRI) RENSSELAER, NY 12144. +# Copyright (c) 2004 by William Baxter. +# Copyright (c) 2004 by Secret Labs AB. +# Copyright (c) 2004 by Fredrik Lundh. +# + +## +# Image plugin for the Spider image format. This format is used +# by the SPIDER software, in processing image data from electron +# microscopy and tomography. +## + +# +# SpiderImagePlugin.py +# +# The Spider image format is used by SPIDER software, in processing +# image data from electron microscopy and tomography. +# +# Spider home page: +# https://spider.wadsworth.org/spider_doc/spider/docs/spider.html +# +# Details about the Spider image format: +# https://spider.wadsworth.org/spider_doc/spider/docs/image_doc.html +# +from __future__ import annotations + +import os +import struct +import sys +from typing import IO, Any, cast + +from . import Image, ImageFile +from ._util import DeferredError + +TYPE_CHECKING = False + + +def isInt(f: Any) -> int: + try: + i = int(f) + if f - i == 0: + return 1 + else: + return 0 + except (ValueError, OverflowError): + return 0 + + +iforms = [1, 3, -11, -12, -21, -22] + + +# There is no magic number to identify Spider files, so just check a +# series of header locations to see if they have reasonable values. +# Returns no. of bytes in the header, if it is a valid Spider header, +# otherwise returns 0 + + +def isSpiderHeader(t: tuple[float, ...]) -> int: + h = (99,) + t # add 1 value so can use spider header index start=1 + # header values 1,2,5,12,13,22,23 should be integers + for i in [1, 2, 5, 12, 13, 22, 23]: + if not isInt(h[i]): + return 0 + # check iform + iform = int(h[5]) + if iform not in iforms: + return 0 + # check other header values + labrec = int(h[13]) # no. records in file header + labbyt = int(h[22]) # total no. of bytes in header + lenbyt = int(h[23]) # record length in bytes + if labbyt != (labrec * lenbyt): + return 0 + # looks like a valid header + return labbyt + + +def isSpiderImage(filename: str) -> int: + with open(filename, "rb") as fp: + f = fp.read(92) # read 23 * 4 bytes + t = struct.unpack(">23f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + t = struct.unpack("<23f", f) # little-endian + hdrlen = isSpiderHeader(t) + return hdrlen + + +class SpiderImageFile(ImageFile.ImageFile): + format = "SPIDER" + format_description = "Spider 2D image" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # check header + n = 27 * 4 # read 27 float values + f = self.fp.read(n) + + try: + self.bigendian = 1 + t = struct.unpack(">27f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + self.bigendian = 0 + t = struct.unpack("<27f", f) # little-endian + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + msg = "not a valid Spider file" + raise SyntaxError(msg) + except struct.error as e: + msg = "not a valid Spider file" + raise SyntaxError(msg) from e + + h = (99,) + t # add 1 value : spider header index starts at 1 + iform = int(h[5]) + if iform != 1: + msg = "not a Spider 2D image" + raise SyntaxError(msg) + + self._size = int(h[12]), int(h[2]) # size in pixels (width, height) + self.istack = int(h[24]) + self.imgnumber = int(h[27]) + + if self.istack == 0 and self.imgnumber == 0: + # stk=0, img=0: a regular 2D image + offset = hdrlen + self._nimages = 1 + elif self.istack > 0 and self.imgnumber == 0: + # stk>0, img=0: Opening the stack for the first time + self.imgbytes = int(h[12]) * int(h[2]) * 4 + self.hdrlen = hdrlen + self._nimages = int(h[26]) + # Point to the first image in the stack + offset = hdrlen * 2 + self.imgnumber = 1 + elif self.istack == 0 and self.imgnumber > 0: + # stk=0, img>0: an image within the stack + offset = hdrlen + self.stkoffset + self.istack = 2 # So Image knows it's still a stack + else: + msg = "inconsistent stack header values" + raise SyntaxError(msg) + + if self.bigendian: + self.rawmode = "F;32BF" + else: + self.rawmode = "F;32F" + self._mode = "F" + + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, offset, self.rawmode)] + self._fp = self.fp # FIXME: hack + + @property + def n_frames(self) -> int: + return self._nimages + + @property + def is_animated(self) -> bool: + return self._nimages > 1 + + # 1st image index is zero (although SPIDER imgnumber starts at 1) + def tell(self) -> int: + if self.imgnumber < 1: + return 0 + else: + return self.imgnumber - 1 + + def seek(self, frame: int) -> None: + if self.istack == 0: + msg = "attempt to seek in a non-stack file" + raise EOFError(msg) + if not self._seek_check(frame): + return + if isinstance(self._fp, DeferredError): + raise self._fp.ex + self.stkoffset = self.hdrlen + frame * (self.hdrlen + self.imgbytes) + self.fp = self._fp + self.fp.seek(self.stkoffset) + self._open() + + # returns a byte image after rescaling to 0..255 + def convert2byte(self, depth: int = 255) -> Image.Image: + extrema = self.getextrema() + assert isinstance(extrema[0], float) + minimum, maximum = cast(tuple[float, float], extrema) + m: float = 1 + if maximum != minimum: + m = depth / (maximum - minimum) + b = -m * minimum + return self.point(lambda i: i * m + b).convert("L") + + if TYPE_CHECKING: + from . import ImageTk + + # returns a ImageTk.PhotoImage object, after rescaling to 0..255 + def tkPhotoImage(self) -> ImageTk.PhotoImage: + from . import ImageTk + + return ImageTk.PhotoImage(self.convert2byte(), palette=256) + + +# -------------------------------------------------------------------- +# Image series + + +# given a list of filenames, return a list of images +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 + + 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: + assert isinstance(im, SpiderImageFile) + byte_im = im.convert2byte() + except Exception: + if not isSpiderImage(img): + print(f"{img} is not a Spider image file") + continue + byte_im.info["filename"] = img + byte_imgs.append(byte_im) + return byte_imgs + + +# -------------------------------------------------------------------- +# For saving images in Spider format + + +def makeSpiderHeader(im: Image.Image) -> list[bytes]: + nsam, nrow = im.size + lenbyt = nsam * 4 # There are labrec records in the header + labrec = int(1024 / lenbyt) + if 1024 % lenbyt != 0: + labrec += 1 + labbyt = labrec * lenbyt + nvalues = int(labbyt / 4) + if nvalues < 23: + return [] + + hdr = [0.0] * nvalues + + # NB these are Fortran indices + hdr[1] = 1.0 # nslice (=1 for an image) + hdr[2] = float(nrow) # number of rows per slice + hdr[3] = float(nrow) # number of records in the image + hdr[5] = 1.0 # iform for 2D image + hdr[12] = float(nsam) # number of pixels per line + hdr[13] = float(labrec) # number of records in file header + hdr[22] = float(labbyt) # total number of bytes in header + hdr[23] = float(lenbyt) # record length in bytes + + # adjust for Fortran indexing + hdr = hdr[1:] + hdr.append(0.0) + # pack binary data into a string + return [struct.pack("f", v) for v in hdr] + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode != "F": + im = im.convert("F") + + hdr = makeSpiderHeader(im) + if len(hdr) < 256: + msg = "Error creating Spider header" + raise OSError(msg) + + # write the SPIDER header + fp.writelines(hdr) + + rawmode = "F;32NF" # 32-bit native floating point + 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: + # get the filename extension and register it with Image + filename_ext = os.path.splitext(filename)[1] + ext = filename_ext.decode() if isinstance(filename_ext, bytes) else filename_ext + Image.register_extension(SpiderImageFile.format, ext) + _save(im, fp, filename) + + +# -------------------------------------------------------------------- + + +Image.register_open(SpiderImageFile.format, SpiderImageFile) +Image.register_save(SpiderImageFile.format, _save_spider) + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 SpiderImagePlugin.py [infile] [outfile]") + sys.exit() + + filename = sys.argv[1] + if not isSpiderImage(filename): + print("input image must be in Spider format") + sys.exit() + + with Image.open(filename) as im: + print(f"image: {im}") + print(f"format: {im.format}") + print(f"size: {im.size}") + print(f"mode: {im.mode}") + print("max, min: ", end=" ") + print(im.getextrema()) + + if len(sys.argv) > 2: + outfile = sys.argv[2] + + # perform some image operation + im = im.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + print( + f"saving a flipped version of {os.path.basename(filename)} " + f"as {outfile} " + ) + im.save(outfile, SpiderImageFile.format) diff --git a/myenv/lib/python3.10/site-packages/PIL/SunImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/SunImagePlugin.py new file mode 100644 index 0000000..8912379 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/SunImagePlugin.py @@ -0,0 +1,145 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Sun image file handling +# +# History: +# 1995-09-10 fl Created +# 1996-05-28 fl Fixed 32-bit alignment +# 1998-12-29 fl Import ImagePalette module +# 2001-12-18 fl Fixed palette loading (from Jean-Claude Rimbault) +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995-1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image, ImageFile, ImagePalette +from ._binary import i32be as i32 + + +def _accept(prefix: bytes) -> bool: + return len(prefix) >= 4 and i32(prefix) == 0x59A66A95 + + +## +# Image plugin for Sun raster files. + + +class SunImageFile(ImageFile.ImageFile): + format = "SUN" + format_description = "Sun Raster File" + + def _open(self) -> None: + # The Sun Raster file header is 32 bytes in length + # and has the following format: + + # typedef struct _SunRaster + # { + # DWORD MagicNumber; /* Magic (identification) number */ + # DWORD Width; /* Width of image in pixels */ + # DWORD Height; /* Height of image in pixels */ + # DWORD Depth; /* Number of bits per pixel */ + # DWORD Length; /* Size of image data in bytes */ + # DWORD Type; /* Type of raster file */ + # DWORD ColorMapType; /* Type of color map */ + # DWORD ColorMapLength; /* Size of the color map in bytes */ + # } SUNRASTER; + + assert self.fp is not None + + # HEAD + s = self.fp.read(32) + if not _accept(s): + msg = "not an SUN raster file" + raise SyntaxError(msg) + + offset = 32 + + self._size = i32(s, 4), i32(s, 8) + + depth = i32(s, 12) + # data_length = i32(s, 16) # unreliable, ignore. + file_type = i32(s, 20) + palette_type = i32(s, 24) # 0: None, 1: RGB, 2: Raw/arbitrary + palette_length = i32(s, 28) + + if depth == 1: + self._mode, rawmode = "1", "1;I" + elif depth == 4: + self._mode, rawmode = "L", "L;4" + elif depth == 8: + self._mode = rawmode = "L" + elif depth == 24: + if file_type == 3: + self._mode, rawmode = "RGB", "RGB" + else: + self._mode, rawmode = "RGB", "BGR" + elif depth == 32: + if file_type == 3: + self._mode, rawmode = "RGB", "RGBX" + else: + self._mode, rawmode = "RGB", "BGRX" + else: + msg = "Unsupported Mode/Bit Depth" + raise SyntaxError(msg) + + if palette_length: + if palette_length > 1024: + msg = "Unsupported Color Palette Length" + raise SyntaxError(msg) + + if palette_type != 1: + msg = "Unsupported Palette Type" + raise SyntaxError(msg) + + offset = offset + palette_length + self.palette = ImagePalette.raw("RGB;L", self.fp.read(palette_length)) + if self.mode == "L": + self._mode = "P" + rawmode = rawmode.replace("L", "P") + + # 16 bit boundaries on stride + stride = ((self.size[0] * depth + 15) // 16) * 2 + + # file type: Type is the version (or flavor) of the bitmap + # file. The following values are typically found in the Type + # field: + # 0000h Old + # 0001h Standard + # 0002h Byte-encoded + # 0003h RGB format + # 0004h TIFF format + # 0005h IFF format + # FFFFh Experimental + + # Old and standard are the same, except for the length tag. + # byte-encoded is run-length-encoded + # RGB looks similar to standard, but RGB byte order + # TIFF and IFF mean that they were converted from T/IFF + # Experimental means that it's something else. + # (https://www.fileformat.info/format/sunraster/egff.htm) + + if file_type in (0, 1, 3, 4, 5): + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offset, (rawmode, stride)) + ] + elif file_type == 2: + self.tile = [ + ImageFile._Tile("sun_rle", (0, 0) + self.size, offset, rawmode) + ] + else: + msg = "Unsupported Sun Raster file type" + raise SyntaxError(msg) + + +# +# registry + + +Image.register_open(SunImageFile.format, SunImageFile, _accept) + +Image.register_extension(SunImageFile.format, ".ras") diff --git a/myenv/lib/python3.10/site-packages/PIL/TarIO.py b/myenv/lib/python3.10/site-packages/PIL/TarIO.py new file mode 100644 index 0000000..86490a4 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/TarIO.py @@ -0,0 +1,61 @@ +# +# The Python Imaging Library. +# $Id$ +# +# read files from within a tar file +# +# History: +# 95-06-18 fl Created +# 96-05-28 fl Open files in binary mode +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-96. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io + +from . import ContainerIO + + +class TarIO(ContainerIO.ContainerIO[bytes]): + """A file object that provides read access to a given member of a TAR file.""" + + def __init__(self, tarfile: str, file: str) -> None: + """ + Create file object. + + :param tarfile: Name of TAR file. + :param file: Name of member file. + """ + self.fh = open(tarfile, "rb") + + while True: + s = self.fh.read(512) + if len(s) != 512: + self.fh.close() + + msg = "unexpected end of tar file" + raise OSError(msg) + + name = s[:100].decode("utf-8") + i = name.find("\0") + if i == 0: + self.fh.close() + + msg = "cannot find subfile" + raise OSError(msg) + if i > 0: + name = name[:i] + + size = int(s[124:135], 8) + + if file == name: + break + + self.fh.seek((size + 511) & (~511), io.SEEK_CUR) + + # Open region + super().__init__(self.fh, self.fh.tell(), size) diff --git a/myenv/lib/python3.10/site-packages/PIL/TgaImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/TgaImagePlugin.py new file mode 100644 index 0000000..90d5b5c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/TgaImagePlugin.py @@ -0,0 +1,264 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TGA file handling +# +# History: +# 95-09-01 fl created (reads 24-bit files only) +# 97-01-04 fl support more TGA versions, including compressed images +# 98-07-04 fl fixed orientation and alpha layer bugs +# 98-09-11 fl fixed orientation for runlength decoder +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import warnings +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +# +# -------------------------------------------------------------------- +# Read RGA file + + +MODES = { + # map imagetype/depth to rawmode + (1, 8): "P", + (3, 1): "1", + (3, 8): "L", + (3, 16): "LA", + (2, 16): "BGRA;15Z", + (2, 24): "BGR", + (2, 32): "BGRA", +} + + +## +# Image plugin for Targa files. + + +class TgaImageFile(ImageFile.ImageFile): + format = "TGA" + format_description = "Targa" + + def _open(self) -> None: + # process header + assert self.fp is not None + + s = self.fp.read(18) + + id_len = s[0] + + colormaptype = s[1] + imagetype = s[2] + + depth = s[16] + + flags = s[17] + + self._size = i16(s, 12), i16(s, 14) + + # validate header fields + if ( + colormaptype not in (0, 1) + or self.size[0] <= 0 + or self.size[1] <= 0 + or depth not in (1, 8, 16, 24, 32) + ): + msg = "not a TGA file" + raise SyntaxError(msg) + + # image mode + if imagetype in (3, 11): + self._mode = "L" + if depth == 1: + self._mode = "1" # ??? + elif depth == 16: + self._mode = "LA" + elif imagetype in (1, 9): + self._mode = "P" if colormaptype else "L" + elif imagetype in (2, 10): + self._mode = "RGB" if depth == 24 else "RGBA" + else: + msg = "unknown TGA mode" + raise SyntaxError(msg) + + # orientation + orientation = flags & 0x30 + self._flip_horizontally = orientation in [0x10, 0x30] + if orientation in [0x20, 0x30]: + orientation = 1 + elif orientation in [0, 0x10]: + orientation = -1 + else: + msg = "unknown TGA orientation" + raise SyntaxError(msg) + + self.info["orientation"] = orientation + + if imagetype & 8: + self.info["compression"] = "tga_rle" + + if id_len: + self.info["id_section"] = self.fp.read(id_len) + + if colormaptype: + # read palette + start, size, mapdepth = i16(s, 3), i16(s, 5), s[7] + if mapdepth == 16: + self.palette = ImagePalette.raw( + "BGRA;15Z", bytes(2 * start) + self.fp.read(2 * size) + ) + self.palette.mode = "RGBA" + elif mapdepth == 24: + self.palette = ImagePalette.raw( + "BGR", bytes(3 * start) + self.fp.read(3 * size) + ) + elif mapdepth == 32: + self.palette = ImagePalette.raw( + "BGRA", bytes(4 * start) + self.fp.read(4 * size) + ) + else: + msg = "unknown TGA map depth" + raise SyntaxError(msg) + + # setup tile descriptor + try: + rawmode = MODES[(imagetype & 7, depth)] + if imagetype & 8: + # compressed + self.tile = [ + ImageFile._Tile( + "tga_rle", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, orientation, depth), + ) + ] + else: + self.tile = [ + ImageFile._Tile( + "raw", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, 0, orientation), + ) + ] + except KeyError: + pass # cannot decode + + def load_end(self) -> None: + if self._flip_horizontally: + self.im = self.im.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + + +# +# -------------------------------------------------------------------- +# Write TGA file + + +SAVE = { + "1": ("1", 1, 0, 3), + "L": ("L", 8, 0, 3), + "LA": ("LA", 16, 0, 3), + "P": ("P", 8, 1, 1), + "RGB": ("BGR", 24, 0, 2), + "RGBA": ("BGRA", 32, 0, 2), +} + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + rawmode, bits, colormaptype, imagetype = SAVE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as TGA" + raise OSError(msg) from e + + if "rle" in im.encoderinfo: + rle = im.encoderinfo["rle"] + else: + compression = im.encoderinfo.get("compression", im.info.get("compression")) + rle = compression == "tga_rle" + if rle: + imagetype += 8 + + id_section = im.encoderinfo.get("id_section", im.info.get("id_section", "")) + id_len = len(id_section) + if id_len > 255: + id_len = 255 + id_section = id_section[:255] + warnings.warn("id_section has been trimmed to 255 characters") + + if colormaptype: + palette = im.im.getpalette("RGB", "BGR") + colormaplength, colormapentry = len(palette) // 3, 24 + else: + colormaplength, colormapentry = 0, 0 + + if im.mode in ("LA", "RGBA"): + flags = 8 + else: + flags = 0 + + orientation = im.encoderinfo.get("orientation", im.info.get("orientation", -1)) + if orientation > 0: + flags = flags | 0x20 + + fp.write( + o8(id_len) + + o8(colormaptype) + + o8(imagetype) + + o16(0) # colormapfirst + + o16(colormaplength) + + o8(colormapentry) + + o16(0) + + o16(0) + + o16(im.size[0]) + + o16(im.size[1]) + + o8(bits) + + o8(flags) + ) + + if id_section: + fp.write(id_section) + + if colormaptype: + fp.write(palette) + + if rle: + ImageFile._save( + im, + fp, + [ImageFile._Tile("tga_rle", (0, 0) + im.size, 0, (rawmode, orientation))], + ) + else: + ImageFile._save( + im, + fp, + [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, 0, orientation))], + ) + + # write targa version 2 footer + fp.write(b"\000" * 8 + b"TRUEVISION-XFILE." + b"\000") + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(TgaImageFile.format, TgaImageFile) +Image.register_save(TgaImageFile.format, _save) + +Image.register_extensions(TgaImageFile.format, [".tga", ".icb", ".vda", ".vst"]) + +Image.register_mime(TgaImageFile.format, "image/x-tga") diff --git a/myenv/lib/python3.10/site-packages/PIL/TiffImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/TiffImagePlugin.py new file mode 100644 index 0000000..daf20f2 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/TiffImagePlugin.py @@ -0,0 +1,2339 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF file handling +# +# TIFF is a flexible, if somewhat aged, image file format originally +# defined by Aldus. Although TIFF supports a wide variety of pixel +# layouts and compression methods, the name doesn't really stand for +# "thousands of incompatible file formats," it just feels that way. +# +# To read TIFF data from a stream, the stream must be seekable. For +# progressive decoding, make sure to use TIFF files where the tag +# directory is placed first in the file. +# +# History: +# 1995-09-01 fl Created +# 1996-05-04 fl Handle JPEGTABLES tag +# 1996-05-18 fl Fixed COLORMAP support +# 1997-01-05 fl Fixed PREDICTOR support +# 1997-08-27 fl Added support for rational tags (from Perry Stoll) +# 1998-01-10 fl Fixed seek/tell (from Jan Blom) +# 1998-07-15 fl Use private names for internal variables +# 1999-06-13 fl Rewritten for PIL 1.0 (1.0) +# 2000-10-11 fl Additional fixes for Python 2.0 (1.1) +# 2001-04-17 fl Fixed rewind support (seek to frame 0) (1.2) +# 2001-05-12 fl Added write support for more tags (from Greg Couch) (1.3) +# 2001-12-18 fl Added workaround for broken Matrox library +# 2002-01-18 fl Don't mess up if photometric tag is missing (D. Alan Stewart) +# 2003-05-19 fl Check FILLORDER tag +# 2003-09-26 fl Added RGBa support +# 2004-02-24 fl Added DPI support; fixed rational write support +# 2005-02-07 fl Added workaround for broken Corel Draw 10 files +# 2006-01-09 fl Added support for float/double tags (from Russell Nelson) +# +# Copyright (c) 1997-2006 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import itertools +import logging +import math +import os +import struct +import warnings +from collections.abc import Iterator, MutableMapping +from fractions import Fraction +from numbers import Number, Rational +from typing import IO, Any, Callable, NoReturn, cast + +from . import ExifTags, Image, ImageFile, ImageOps, ImagePalette, TiffTags +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._deprecate import deprecate +from ._typing import StrOrBytesPath +from ._util import DeferredError, is_path +from .TiffTags import TYPES + +TYPE_CHECKING = False +if TYPE_CHECKING: + from ._typing import Buffer, IntegralLike + +logger = logging.getLogger(__name__) + +# Set these to true to force use of libtiff for reading or writing. +READ_LIBTIFF = False +WRITE_LIBTIFF = False +STRIP_SIZE = 65536 + +II = b"II" # little-endian (Intel style) +MM = b"MM" # big-endian (Motorola style) + +# +# -------------------------------------------------------------------- +# Read TIFF files + +# a few tag names, just to make the code below a bit more readable +OSUBFILETYPE = 255 +IMAGEWIDTH = 256 +IMAGELENGTH = 257 +BITSPERSAMPLE = 258 +COMPRESSION = 259 +PHOTOMETRIC_INTERPRETATION = 262 +FILLORDER = 266 +IMAGEDESCRIPTION = 270 +STRIPOFFSETS = 273 +SAMPLESPERPIXEL = 277 +ROWSPERSTRIP = 278 +STRIPBYTECOUNTS = 279 +X_RESOLUTION = 282 +Y_RESOLUTION = 283 +PLANAR_CONFIGURATION = 284 +RESOLUTION_UNIT = 296 +TRANSFERFUNCTION = 301 +SOFTWARE = 305 +DATE_TIME = 306 +ARTIST = 315 +PREDICTOR = 317 +COLORMAP = 320 +TILEWIDTH = 322 +TILELENGTH = 323 +TILEOFFSETS = 324 +TILEBYTECOUNTS = 325 +SUBIFD = 330 +EXTRASAMPLES = 338 +SAMPLEFORMAT = 339 +JPEGTABLES = 347 +YCBCRSUBSAMPLING = 530 +REFERENCEBLACKWHITE = 532 +COPYRIGHT = 33432 +IPTC_NAA_CHUNK = 33723 # newsphoto properties +PHOTOSHOP_CHUNK = 34377 # photoshop properties +ICCPROFILE = 34675 +EXIFIFD = 34665 +XMP = 700 +JPEGQUALITY = 65537 # pseudo-tag by libtiff + +# https://github.com/imagej/ImageJA/blob/master/src/main/java/ij/io/TiffDecoder.java +IMAGEJ_META_DATA_BYTE_COUNTS = 50838 +IMAGEJ_META_DATA = 50839 + +COMPRESSION_INFO = { + # Compression => pil compression name + 1: "raw", + 2: "tiff_ccitt", + 3: "group3", + 4: "group4", + 5: "tiff_lzw", + 6: "tiff_jpeg", # obsolete + 7: "jpeg", + 8: "tiff_adobe_deflate", + 32771: "tiff_raw_16", # 16-bit padding + 32773: "packbits", + 32809: "tiff_thunderscan", + 32946: "tiff_deflate", + 34676: "tiff_sgilog", + 34677: "tiff_sgilog24", + 34925: "lzma", + 50000: "zstd", + 50001: "webp", +} + +COMPRESSION_INFO_REV = {v: k for k, v in COMPRESSION_INFO.items()} + +OPEN_INFO = { + # (ByteOrder, PhotoInterpretation, SampleFormat, FillOrder, BitsPerSample, + # ExtraSamples) => mode, rawmode + (II, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (MM, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (II, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (MM, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (II, 1, (1,), 1, (1,), ()): ("1", "1"), + (MM, 1, (1,), 1, (1,), ()): ("1", "1"), + (II, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (MM, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (II, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (MM, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (II, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (MM, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (II, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (MM, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (II, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (MM, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (II, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (MM, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (II, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (MM, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (II, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (MM, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (II, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (MM, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (II, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (MM, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (II, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (MM, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (II, 1, (1,), 1, (8,), ()): ("L", "L"), + (MM, 1, (1,), 1, (8,), ()): ("L", "L"), + (II, 1, (2,), 1, (8,), ()): ("L", "L"), + (MM, 1, (2,), 1, (8,), ()): ("L", "L"), + (II, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (MM, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (II, 1, (1,), 1, (12,), ()): ("I;16", "I;12"), + (II, 0, (1,), 1, (16,), ()): ("I;16", "I;16"), + (II, 1, (1,), 1, (16,), ()): ("I;16", "I;16"), + (MM, 1, (1,), 1, (16,), ()): ("I;16B", "I;16B"), + (II, 1, (1,), 2, (16,), ()): ("I;16", "I;16R"), + (II, 1, (2,), 1, (16,), ()): ("I", "I;16S"), + (MM, 1, (2,), 1, (16,), ()): ("I", "I;16BS"), + (II, 0, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 0, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (32,), ()): ("I", "I;32N"), + (II, 1, (2,), 1, (32,), ()): ("I", "I;32S"), + (MM, 1, (2,), 1, (32,), ()): ("I", "I;32BS"), + (II, 1, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 1, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (MM, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (II, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (MM, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (II, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (MM, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (II, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (MM, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (II, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGB", "RGBX"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGB", "RGBX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGB", "RGBXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGB", "RGBXX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGB", "RGBXXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGB", "RGBXXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (MM, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (II, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16L"), + (MM, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGB", "RGBX;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGB", "RGBX;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16B"), + (II, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (MM, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (II, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (MM, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (II, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (MM, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (II, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (MM, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (II, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (MM, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (II, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (MM, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (II, 3, (1,), 1, (8,), ()): ("P", "P"), + (MM, 3, (1,), 1, (8,), ()): ("P", "P"), + (II, 3, (1,), 1, (8, 8), (0,)): ("P", "PX"), + (II, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (MM, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (II, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (MM, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (II, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (MM, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (II, 5, (1,), 1, (16, 16, 16, 16), ()): ("CMYK", "CMYK;16L"), + (MM, 5, (1,), 1, (16, 16, 16, 16), ()): ("CMYK", "CMYK;16B"), + (II, 6, (1,), 1, (8,), ()): ("L", "L"), + (MM, 6, (1,), 1, (8,), ()): ("L", "L"), + # JPEG compressed images handled by LibTiff and auto-converted to RGBX + # Minimal Baseline TIFF requires YCbCr images to have 3 SamplesPerPixel + (II, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (MM, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (II, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), + (MM, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), +} + +MAX_SAMPLESPERPIXEL = max(len(key_tp[4]) for key_tp in OPEN_INFO) + +PREFIXES = [ + b"MM\x00\x2a", # Valid TIFF header with big-endian byte order + b"II\x2a\x00", # Valid TIFF header with little-endian byte order + b"MM\x2a\x00", # Invalid TIFF header, assume big-endian + b"II\x00\x2a", # Invalid TIFF header, assume little-endian + b"MM\x00\x2b", # BigTIFF with big-endian byte order + b"II\x2b\x00", # BigTIFF with little-endian byte order +] + +if not getattr(Image.core, "libtiff_support_custom_tags", True): + deprecate("Support for LibTIFF earlier than version 4", 12) + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(tuple(PREFIXES)) + + +def _limit_rational( + val: float | Fraction | IFDRational, max_val: int +) -> tuple[IntegralLike, IntegralLike]: + 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 + + +def _limit_signed_rational( + val: IFDRational, max_val: int, min_val: int +) -> tuple[IntegralLike, IntegralLike]: + frac = Fraction(val) + n_d: tuple[IntegralLike, IntegralLike] = frac.numerator, frac.denominator + + if min(float(i) for i in n_d) < min_val: + n_d = _limit_rational(val, abs(min_val)) + + n_d_float = tuple(float(i) for i in n_d) + if max(n_d_float) > max_val: + n_d = _limit_rational(n_d_float[0] / n_d_float[1], max_val) + + return n_d + + +## +# Wrapper for TIFF IFDs. + +_load_dispatch = {} +_write_dispatch = {} + + +def _delegate(op: str) -> Any: + def delegate( + self: IFDRational, *args: tuple[float, ...] + ) -> bool | float | Fraction: + return getattr(self._val, op)(*args) + + return delegate + + +class IFDRational(Rational): + """Implements a rational class where 0/0 is a legal value to match + the in the wild use of exif rationals. + + e.g., DigitalZoomRatio - 0.00/0.00 indicates that no digital zoom was used + """ + + """ If the denominator is 0, store this as a float('nan'), otherwise store + as a fractions.Fraction(). Delegate as appropriate + + """ + + __slots__ = ("_numerator", "_denominator", "_val") + + def __init__( + self, value: float | Fraction | IFDRational, denominator: int = 1 + ) -> None: + """ + :param value: either an integer numerator, a + float/rational/other number, or an IFDRational + :param denominator: Optional integer denominator + """ + self._val: Fraction | float + if isinstance(value, IFDRational): + self._numerator = value.numerator + self._denominator = value.denominator + self._val = value._val + return + + if isinstance(value, Fraction): + self._numerator = value.numerator + self._denominator = value.denominator + else: + if TYPE_CHECKING: + self._numerator = cast(IntegralLike, value) + else: + self._numerator = value + self._denominator = denominator + + if denominator == 0: + self._val = float("nan") + elif denominator == 1: + self._val = Fraction(value) + elif int(value) == value: + self._val = Fraction(int(value), denominator) + else: + self._val = Fraction(value / denominator) + + @property + def numerator(self) -> IntegralLike: + return self._numerator + + @property + def denominator(self) -> int: + return self._denominator + + def limit_rational(self, max_denominator: int) -> tuple[IntegralLike, int]: + """ + + :param max_denominator: Integer, the maximum denominator value + :returns: Tuple of (numerator, denominator) + """ + + if self.denominator == 0: + return self.numerator, self.denominator + + assert isinstance(self._val, Fraction) + f = self._val.limit_denominator(max_denominator) + return f.numerator, f.denominator + + def __repr__(self) -> str: + return str(float(self._val)) + + def __hash__(self) -> int: # type: ignore[override] + return self._val.__hash__() + + def __eq__(self, other: object) -> bool: + val = self._val + if isinstance(other, IFDRational): + other = other._val + if isinstance(other, float): + val = float(val) + return val == other + + def __getstate__(self) -> list[float | Fraction | IntegralLike]: + return [self._val, self._numerator, self._denominator] + + def __setstate__(self, state: list[float | Fraction | IntegralLike]) -> None: + IFDRational.__init__(self, 0) + _val, _numerator, _denominator = state + assert isinstance(_val, (float, Fraction)) + self._val = _val + if TYPE_CHECKING: + self._numerator = cast(IntegralLike, _numerator) + else: + self._numerator = _numerator + assert isinstance(_denominator, int) + self._denominator = _denominator + + """ a = ['add','radd', 'sub', 'rsub', 'mul', 'rmul', + 'truediv', 'rtruediv', 'floordiv', 'rfloordiv', + 'mod','rmod', 'pow','rpow', 'pos', 'neg', + 'abs', 'trunc', 'lt', 'gt', 'le', 'ge', 'bool', + 'ceil', 'floor', 'round'] + print("\n".join("__%s__ = _delegate('__%s__')" % (s,s) for s in a)) + """ + + __add__ = _delegate("__add__") + __radd__ = _delegate("__radd__") + __sub__ = _delegate("__sub__") + __rsub__ = _delegate("__rsub__") + __mul__ = _delegate("__mul__") + __rmul__ = _delegate("__rmul__") + __truediv__ = _delegate("__truediv__") + __rtruediv__ = _delegate("__rtruediv__") + __floordiv__ = _delegate("__floordiv__") + __rfloordiv__ = _delegate("__rfloordiv__") + __mod__ = _delegate("__mod__") + __rmod__ = _delegate("__rmod__") + __pow__ = _delegate("__pow__") + __rpow__ = _delegate("__rpow__") + __pos__ = _delegate("__pos__") + __neg__ = _delegate("__neg__") + __abs__ = _delegate("__abs__") + __trunc__ = _delegate("__trunc__") + __lt__ = _delegate("__lt__") + __gt__ = _delegate("__gt__") + __le__ = _delegate("__le__") + __ge__ = _delegate("__ge__") + __bool__ = _delegate("__bool__") + __ceil__ = _delegate("__ceil__") + __floor__ = _delegate("__floor__") + __round__ = _delegate("__round__") + # Python >= 3.11 + if hasattr(Fraction, "__int__"): + __int__ = _delegate("__int__") + + +_LoaderFunc = Callable[["ImageFileDirectory_v2", bytes, bool], Any] + + +def _register_loader(idx: int, size: int) -> Callable[[_LoaderFunc], _LoaderFunc]: + def decorator(func: _LoaderFunc) -> _LoaderFunc: + from .TiffTags import TYPES + + if func.__name__.startswith("load_"): + TYPES[idx] = func.__name__[5:].replace("_", " ") + _load_dispatch[idx] = size, func # noqa: F821 + return func + + return decorator + + +def _register_writer(idx: int) -> Callable[[Callable[..., Any]], Callable[..., Any]]: + def decorator(func: Callable[..., Any]) -> Callable[..., Any]: + _write_dispatch[idx] = func # noqa: F821 + return func + + return decorator + + +def _register_basic(idx_fmt_name: tuple[int, str, str]) -> None: + from .TiffTags import TYPES + + idx, fmt, name = idx_fmt_name + TYPES[idx] = name + size = struct.calcsize(f"={fmt}") + + def basic_handler( + self: ImageFileDirectory_v2, data: bytes, legacy_api: bool = True + ) -> tuple[Any, ...]: + return self._unpack(f"{len(data) // size}{fmt}", data) + + _load_dispatch[idx] = size, basic_handler # noqa: F821 + _write_dispatch[idx] = lambda self, *values: ( # noqa: F821 + b"".join(self._pack(fmt, value) for value in values) + ) + + +if TYPE_CHECKING: + _IFDv2Base = MutableMapping[int, Any] +else: + _IFDv2Base = MutableMapping + + +class ImageFileDirectory_v2(_IFDv2Base): + """This class represents a TIFF tag directory. To speed things up, we + don't decode tags unless they're asked for. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v2() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + 'Some Data' + + Individual values are returned as the strings or numbers, sequences are + returned as tuples of the values. + + The tiff metadata type of each item is stored in a dictionary of + tag types in + :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types + are read from a tiff file, guessed from the type added, or added + manually. + + Data Structures: + + * ``self.tagtype = {}`` + + * Key: numerical TIFF tag number + * Value: integer corresponding to the data type from + :py:data:`.TiffTags.TYPES` + + .. versionadded:: 3.0.0 + + 'Internal' data structures: + + * ``self._tags_v2 = {}`` + + * Key: numerical TIFF tag number + * Value: decoded data, as tuple for multiple values + + * ``self._tagdata = {}`` + + * Key: numerical TIFF tag number + * Value: undecoded byte string from file + + * ``self._tags_v1 = {}`` + + * Key: numerical TIFF tag number + * Value: decoded data in the v1 format + + Tags will be found in the private attributes ``self._tagdata``, and in + ``self._tags_v2`` once decoded. + + ``self.legacy_api`` is a value for internal use, and shouldn't be changed + from outside code. In cooperation with + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`, if ``legacy_api`` + is true, then decoded tags will be populated into both ``_tags_v1`` and + ``_tags_v2``. ``_tags_v2`` will be used if this IFD is used in the TIFF + save routine. Tags should be read from ``_tags_v1`` if + ``legacy_api == true``. + + """ + + _load_dispatch: dict[int, tuple[int, _LoaderFunc]] = {} + _write_dispatch: dict[int, Callable[..., Any]] = {} + + def __init__( + self, + ifh: bytes = b"II\x2a\x00\x00\x00\x00\x00", + prefix: bytes | None = None, + group: int | None = None, + ) -> None: + """Initialize an ImageFileDirectory. + + To construct an ImageFileDirectory from a real file, pass the 8-byte + magic header to the constructor. To only set the endianness, pass it + as the 'prefix' keyword argument. + + :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets + endianness. + :param prefix: Override the endianness of the file. + """ + if not _accept(ifh): + msg = f"not a TIFF file (header {repr(ifh)} not valid)" + raise SyntaxError(msg) + self._prefix = prefix if prefix is not None else ifh[:2] + if self._prefix == MM: + self._endian = ">" + elif self._prefix == II: + self._endian = "<" + else: + msg = "not a TIFF IFD" + raise SyntaxError(msg) + self._bigtiff = ifh[2] == 43 + self.group = group + self.tagtype: dict[int, int] = {} + """ Dictionary of tag types """ + self.reset() + self.next = ( + self._unpack("Q", ifh[8:])[0] + if self._bigtiff + else self._unpack("L", ifh[4:])[0] + ) + self._legacy_api = False + + prefix = property(lambda self: self._prefix) + offset = property(lambda self: self._offset) + + @property + def legacy_api(self) -> bool: + return self._legacy_api + + @legacy_api.setter + def legacy_api(self, value: bool) -> NoReturn: + msg = "Not allowing setting of legacy api" + raise Exception(msg) + + def reset(self) -> None: + self._tags_v1: dict[int, Any] = {} # will remain empty if legacy_api is false + self._tags_v2: dict[int, Any] = {} # main tag storage + self._tagdata: dict[int, bytes] = {} + self.tagtype = {} # added 2008-06-05 by Florian Hoech + self._next = None + self._offset: int | None = None + + def __str__(self) -> str: + return str(dict(self)) + + def named(self) -> dict[str, Any]: + """ + :returns: dict of name|key: value + + Returns the complete tag dictionary, with named tags where possible. + """ + return { + TiffTags.lookup(code, self.group).name: value + for code, value in self.items() + } + + def __len__(self) -> int: + return len(set(self._tagdata) | set(self._tags_v2)) + + def __getitem__(self, tag: int) -> Any: + if tag not in self._tags_v2: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + self[tag] = handler(self, data, self.legacy_api) # check type + val = self._tags_v2[tag] + if self.legacy_api and not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + def __contains__(self, tag: object) -> bool: + return tag in self._tags_v2 or tag in self._tagdata + + def __setitem__(self, tag: int, value: Any) -> None: + self._setitem(tag, value, self.legacy_api) + + def _setitem(self, tag: int, value: Any, legacy_api: bool) -> None: + basetypes = (Number, bytes, str) + + info = TiffTags.lookup(tag, self.group) + values = [value] if isinstance(value, basetypes) else value + + if tag not in self.tagtype: + if info.type: + self.tagtype[tag] = info.type + else: + self.tagtype[tag] = TiffTags.UNDEFINED + if all(isinstance(v, IFDRational) for v in values): + for v in values: + assert isinstance(v, IFDRational) + if v < 0: + self.tagtype[tag] = TiffTags.SIGNED_RATIONAL + break + else: + 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): + self.tagtype[tag] = TiffTags.ASCII + elif all(isinstance(v, bytes) for v in values): + self.tagtype[tag] = TiffTags.BYTE + + if self.tagtype[tag] == TiffTags.UNDEFINED: + values = [ + v.encode("ascii", "replace") if isinstance(v, str) else v + for v in values + ] + elif self.tagtype[tag] == TiffTags.RATIONAL: + values = [float(v) if isinstance(v, int) else v for v in values] + + is_ifd = self.tagtype[tag] == TiffTags.LONG and isinstance(values, dict) + if not is_ifd: + 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 + + # Three branches: + # Spec'd length == 1, Actual length 1, store as element + # Spec'd length == 1, Actual > 1, Warn and truncate. Formerly barfed. + # No Spec, Actual length 1, Formerly (<4.2) returned a 1 element tuple. + # Don't mess with the legacy api, since it's frozen. + if not is_ifd and ( + (info.length == 1) + or self.tagtype[tag] == TiffTags.BYTE + or (info.length is None and len(values) == 1 and not legacy_api) + ): + # Don't mess with the legacy api, since it's frozen. + if legacy_api and self.tagtype[tag] in [ + TiffTags.RATIONAL, + TiffTags.SIGNED_RATIONAL, + ]: # rationals + values = (values,) + try: + (dest[tag],) = values + except ValueError: + # We've got a builtin tag with 1 expected entry + warnings.warn( + f"Metadata Warning, tag {tag} had too many entries: " + f"{len(values)}, expected 1" + ) + dest[tag] = values[0] + + else: + # Spec'd length > 1 or undefined + # Unspec'd, and length > 1 + dest[tag] = values + + def __delitem__(self, tag: int) -> None: + self._tags_v2.pop(tag, None) + self._tags_v1.pop(tag, None) + self._tagdata.pop(tag, None) + + def __iter__(self) -> Iterator[int]: + return iter(set(self._tagdata) | set(self._tags_v2)) + + def _unpack(self, fmt: str, data: bytes) -> tuple[Any, ...]: + return struct.unpack(self._endian + fmt, data) + + def _pack(self, fmt: str, *values: Any) -> bytes: + return struct.pack(self._endian + fmt, *values) + + list( + map( + _register_basic, + [ + (TiffTags.SHORT, "H", "short"), + (TiffTags.LONG, "L", "long"), + (TiffTags.SIGNED_BYTE, "b", "signed byte"), + (TiffTags.SIGNED_SHORT, "h", "signed short"), + (TiffTags.SIGNED_LONG, "l", "signed long"), + (TiffTags.FLOAT, "f", "float"), + (TiffTags.DOUBLE, "d", "double"), + (TiffTags.IFD, "L", "long"), + (TiffTags.LONG8, "Q", "long8"), + ], + ) + ) + + @_register_loader(1, 1) # Basic type, except for the legacy API. + def load_byte(self, data: bytes, legacy_api: bool = True) -> bytes: + return data + + @_register_writer(1) # Basic type, except for the legacy API. + def write_byte(self, data: bytes | int | IFDRational) -> bytes: + if isinstance(data, IFDRational): + data = int(data) + if isinstance(data, int): + data = bytes((data,)) + return data + + @_register_loader(2, 1) + def load_string(self, data: bytes, legacy_api: bool = True) -> str: + if data.endswith(b"\0"): + data = data[:-1] + return data.decode("latin-1", "replace") + + @_register_writer(2) + def write_string(self, value: str | bytes | int) -> bytes: + # remerge of https://github.com/python-pillow/Pillow/pull/1416 + if isinstance(value, int): + value = str(value) + if not isinstance(value, bytes): + value = value.encode("ascii", "replace") + return value + b"\0" + + @_register_loader(5, 8) + def load_rational( + self, data: bytes, legacy_api: bool = True + ) -> tuple[tuple[int, int] | IFDRational, ...]: + vals = self._unpack(f"{len(data) // 4}L", data) + + def combine(a: int, b: int) -> tuple[int, int] | IFDRational: + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(5) + def write_rational(self, *values: IFDRational) -> bytes: + return b"".join( + self._pack("2L", *_limit_rational(frac, 2**32 - 1)) for frac in values + ) + + @_register_loader(7, 1) + def load_undefined(self, data: bytes, legacy_api: bool = True) -> bytes: + return data + + @_register_writer(7) + def write_undefined(self, value: bytes | int | IFDRational) -> bytes: + if isinstance(value, IFDRational): + value = int(value) + if isinstance(value, int): + value = str(value).encode("ascii", "replace") + return value + + @_register_loader(10, 8) + def load_signed_rational( + self, data: bytes, legacy_api: bool = True + ) -> tuple[tuple[int, int] | IFDRational, ...]: + vals = self._unpack(f"{len(data) // 4}l", data) + + def combine(a: int, b: int) -> tuple[int, int] | IFDRational: + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(10) + def write_signed_rational(self, *values: IFDRational) -> bytes: + return b"".join( + self._pack("2l", *_limit_signed_rational(frac, 2**31 - 1, -(2**31))) + for frac in values + ) + + def _ensure_read(self, fp: IO[bytes], size: int) -> bytes: + ret = fp.read(size) + if len(ret) != size: + msg = ( + "Corrupt EXIF data. " + f"Expecting to read {size} bytes but only got {len(ret)}. " + ) + raise OSError(msg) + return ret + + def load(self, fp: IO[bytes]) -> None: + self.reset() + self._offset = fp.tell() + + try: + tag_count = ( + self._unpack("Q", self._ensure_read(fp, 8)) + if self._bigtiff + else self._unpack("H", self._ensure_read(fp, 2)) + )[0] + for i in range(tag_count): + tag, typ, count, data = ( + self._unpack("HHQ8s", self._ensure_read(fp, 20)) + if self._bigtiff + else self._unpack("HHL4s", self._ensure_read(fp, 12)) + ) + + tagname = TiffTags.lookup(tag, self.group).name + typname = TYPES.get(typ, "unknown") + msg = f"tag: {tagname} ({tag}) - type: {typname} ({typ})" + + try: + unit_size, handler = self._load_dispatch[typ] + except KeyError: + logger.debug("%s - unsupported type %s", msg, typ) + continue # ignore unsupported type + size = count * unit_size + if size > (8 if self._bigtiff else 4): + here = fp.tell() + (offset,) = self._unpack("Q" if self._bigtiff else "L", data) + msg += f" Tag Location: {here} - Data Location: {offset}" + fp.seek(offset) + data = ImageFile._safe_read(fp, size) + fp.seek(here) + else: + data = data[:size] + + if len(data) != size: + warnings.warn( + "Possibly corrupt EXIF data. " + f"Expecting to read {size} bytes but only got {len(data)}." + f" Skipping tag {tag}" + ) + logger.debug(msg) + continue + + if not data: + logger.debug(msg) + continue + + self._tagdata[tag] = data + self.tagtype[tag] = typ + + msg += " - value: " + msg += f"" if size > 32 else repr(data) + + logger.debug(msg) + + (self.next,) = ( + self._unpack("Q", self._ensure_read(fp, 8)) + if self._bigtiff + else self._unpack("L", self._ensure_read(fp, 4)) + ) + except OSError as msg: + warnings.warn(str(msg)) + return + + def _get_ifh(self) -> bytes: + 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("Q" if self._bigtiff else "H", len(self._tags_v2)) + + entries: list[tuple[int, int, int, bytes, bytes]] = [] + + fmt = "Q" if self._bigtiff else "L" + fmt_size = 8 if self._bigtiff else 4 + offset += ( + len(result) + len(self._tags_v2) * (20 if self._bigtiff else 12) + fmt_size + ) + stripoffsets = None + + # pass 1: convert tags to binary format + # always write tags in ascending order + for tag, value in sorted(self._tags_v2.items()): + if tag == STRIPOFFSETS: + stripoffsets = len(entries) + typ = self.tagtype[tag] + logger.debug("Tag %s, Type: %s, Value: %s", tag, typ, repr(value)) + is_ifd = typ == TiffTags.LONG and isinstance(value, dict) + if is_ifd: + 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 + data = ifd.tobytes(offset) + else: + values = value if isinstance(value, tuple) else (value,) + data = self._write_dispatch[typ](self, *values) + + 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}) - value: " + msg += f"" if len(data) >= 16 else str(values) + logger.debug(msg) + + # count is sum of lengths for string and arbitrary data + if is_ifd: + count = 1 + elif typ in [TiffTags.BYTE, TiffTags.ASCII, TiffTags.UNDEFINED]: + count = len(data) + else: + count = len(values) + # figure out if data fits into the entry + 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(fmt, offset), data)) + offset += (len(data) + 1) // 2 * 2 # pad to word + + # update strip offset data to point beyond auxiliary data + if stripoffsets is not None: + tag, typ, count, value, data = entries[stripoffsets] + if data: + size, handler = self._load_dispatch[typ] + values = [val + offset for val in handler(self, data, self.legacy_api)] + data = self._write_dispatch[typ](self, *values) + else: + 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( + "HHQ8s" if self._bigtiff else "HHL4s", tag, typ, count, value + ) + + # -- overwrite here for multi-page -- + result += self._pack(fmt, 0) # end of entries + + # pass 3: write auxiliary data to file + for tag, typ, count, value, data in entries: + result += data + if len(data) & 1: + result += b"\0" + + return result + + def save(self, fp: IO[bytes]) -> int: + if fp.tell() == 0: # skip TIFF header on subsequent pages + fp.write(self._get_ifh()) + + offset = fp.tell() + result = self.tobytes(offset) + fp.write(result) + return offset + len(result) + + +ImageFileDirectory_v2._load_dispatch = _load_dispatch +ImageFileDirectory_v2._write_dispatch = _write_dispatch +for idx, name in TYPES.items(): + name = name.replace(" ", "_") + setattr(ImageFileDirectory_v2, f"load_{name}", _load_dispatch[idx][1]) + setattr(ImageFileDirectory_v2, f"write_{name}", _write_dispatch[idx]) +del _load_dispatch, _write_dispatch, idx, name + + +# Legacy ImageFileDirectory support. +class ImageFileDirectory_v1(ImageFileDirectory_v2): + """This class represents the **legacy** interface to a TIFF tag directory. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v1() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + ('Some Data',) + + Also contains a dictionary of tag types as read from the tiff image file, + :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`. + + Values are returned as a tuple. + + .. deprecated:: 3.0.0 + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self._legacy_api = True + + tags = property(lambda self: self._tags_v1) + tagdata = property(lambda self: self._tagdata) + + # defined in ImageFileDirectory_v2 + tagtype: dict[int, int] + """Dictionary of tag types""" + + @classmethod + def from_v2(cls, original: ImageFileDirectory_v2) -> ImageFileDirectory_v1: + """Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + + """ + + ifd = cls(prefix=original.prefix) + ifd._tagdata = original._tagdata + ifd.tagtype = original.tagtype + ifd.next = original.next # an indicator for multipage tiffs + return ifd + + def to_v2(self) -> ImageFileDirectory_v2: + """Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + + """ + + ifd = ImageFileDirectory_v2(prefix=self.prefix) + ifd._tagdata = dict(self._tagdata) + ifd.tagtype = dict(self.tagtype) + ifd._tags_v2 = dict(self._tags_v2) + return ifd + + def __contains__(self, tag: object) -> bool: + return tag in self._tags_v1 or tag in self._tagdata + + def __len__(self) -> int: + return len(set(self._tagdata) | set(self._tags_v1)) + + def __iter__(self) -> Iterator[int]: + return iter(set(self._tagdata) | set(self._tags_v1)) + + def __setitem__(self, tag: int, value: Any) -> None: + for legacy_api in (False, True): + self._setitem(tag, value, legacy_api) + + def __getitem__(self, tag: int) -> Any: + if tag not in self._tags_v1: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + for legacy in (False, True): + self._setitem(tag, handler(self, data, legacy), legacy) + val = self._tags_v1[tag] + if not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + +# undone -- switch this pointer +ImageFileDirectory = ImageFileDirectory_v1 + + +## +# Image plugin for TIFF files. + + +class TiffImageFile(ImageFile.ImageFile): + format = "TIFF" + format_description = "Adobe TIFF" + _close_exclusive_fp_after_loading = False + + def __init__( + self, + fp: StrOrBytesPath | IO[bytes], + filename: str | bytes | None = None, + ) -> None: + self.tag_v2: ImageFileDirectory_v2 + """ Image file directory (tag dictionary) """ + + self.tag: ImageFileDirectory_v1 + """ Legacy tag entries """ + + super().__init__(fp, filename) + + def _open(self) -> None: + """Open the first image in a TIFF file""" + + # Header + ifh = self.fp.read(8) + if ifh[2] == 43: + ifh += self.fp.read(8) + + self.tag_v2 = ImageFileDirectory_v2(ifh) + + # setup frame pointers + self.__first = self.__next = self.tag_v2.next + self.__frame = -1 + self._fp = self.fp + self._frame_pos: list[int] = [] + self._n_frames: int | None = None + + logger.debug("*** TiffImageFile._open ***") + logger.debug("- __first: %s", self.__first) + logger.debug("- ifh: %s", repr(ifh)) # Use repr to avoid str(bytes) + + # and load the first frame + self._seek(0) + + @property + def n_frames(self) -> int: + current_n_frames = self._n_frames + if current_n_frames is None: + current = self.tell() + self._seek(len(self._frame_pos)) + while self._n_frames is None: + self._seek(self.tell() + 1) + self.seek(current) + assert self._n_frames is not None + return self._n_frames + + def seek(self, frame: int) -> None: + """Select a given frame as current image""" + if not self._seek_check(frame): + return + self._seek(frame) + if self._im is not None and ( + self.im.size != self._tile_size + or self.im.mode != self.mode + or self.readonly + ): + self._im = None + + def _seek(self, frame: int) -> None: + if isinstance(self._fp, DeferredError): + raise self._fp.ex + self.fp = self._fp + + while len(self._frame_pos) <= frame: + if not self.__next: + msg = "no more images in TIFF file" + raise EOFError(msg) + logger.debug( + "Seeking to frame %s, on frame %s, __next %s, location: %s", + frame, + self.__frame, + self.__next, + self.fp.tell(), + ) + if self.__next >= 2**63: + msg = "Unable to seek to frame" + raise ValueError(msg) + self.fp.seek(self.__next) + self._frame_pos.append(self.__next) + logger.debug("Loading tags, location: %s", self.fp.tell()) + self.tag_v2.load(self.fp) + if self.tag_v2.next in self._frame_pos: + # This IFD has already been processed + # Declare this to be the end of the image + self.__next = 0 + else: + self.__next = self.tag_v2.next + if self.__next == 0: + self._n_frames = frame + 1 + if len(self._frame_pos) == 1: + self.is_animated = self.__next != 0 + self.__frame += 1 + self.fp.seek(self._frame_pos[frame]) + self.tag_v2.load(self.fp) + if XMP in self.tag_v2: + xmp = self.tag_v2[XMP] + if isinstance(xmp, tuple) and len(xmp) == 1: + xmp = xmp[0] + self.info["xmp"] = xmp + elif "xmp" in self.info: + del self.info["xmp"] + self._reload_exif() + # fill the legacy tag/ifd entries + self.tag = self.ifd = ImageFileDirectory_v1.from_v2(self.tag_v2) + self.__frame = frame + self._setup() + + def tell(self) -> int: + """Return the current frame number""" + return self.__frame + + def get_photoshop_blocks(self) -> dict[int, dict[str, bytes]]: + """ + Returns a dictionary of Photoshop "Image Resource Blocks". + The keys are the image resource ID. For more information, see + https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577409_pgfId-1037727 + + :returns: Photoshop "Image Resource Blocks" in a dictionary. + """ + blocks = {} + val = self.tag_v2.get(ExifTags.Base.ImageResources) + if val: + while val.startswith(b"8BIM"): + id = i16(val[4:6]) + n = math.ceil((val[6] + 1) / 2) * 2 + size = i32(val[6 + n : 10 + n]) + data = val[10 + n : 10 + n + size] + blocks[id] = {"data": data} + + val = val[math.ceil((10 + n + size) / 2) * 2 :] + return blocks + + def load(self) -> Image.core.PixelAccess | None: + if self.tile and self.use_load_libtiff: + return self._load_libtiff() + return super().load() + + def load_prepare(self) -> None: + if self._im is None: + Image._decompression_bomb_check(self._tile_size) + self.im = Image.core.new(self.mode, self._tile_size) + ImageFile.ImageFile.load_prepare(self) + + def load_end(self) -> None: + # allow closing if we're on the first frame, there's no next + # This is the ImageFile.load path only, libtiff specific below. + if not self.is_animated: + self._close_exclusive_fp_after_loading = True + + # load IFD data from fp before it is closed + exif = self.getexif() + for key in TiffTags.TAGS_V2_GROUPS: + if key not in exif: + continue + exif.get_ifd(key) + + ImageOps.exif_transpose(self, in_place=True) + if ExifTags.Base.Orientation in self.tag_v2: + del self.tag_v2[ExifTags.Base.Orientation] + + def _load_libtiff(self) -> Image.core.PixelAccess | None: + """Overload method triggered when we detect a compressed tiff + Calls out to libtiff""" + + Image.Image.load(self) + + self.load_prepare() + + if not len(self.tile) == 1: + msg = "Not exactly one tile" + raise OSError(msg) + + # (self._compression, (extents tuple), + # 0, (rawmode, self._compression, fp)) + extents = self.tile[0][1] + args = self.tile[0][3] + + # To be nice on memory footprint, if there's a + # file descriptor, use that instead of reading + # into a string in python. + try: + fp = hasattr(self.fp, "fileno") and self.fp.fileno() + # flush the file descriptor, prevents error on pypy 2.4+ + # should also eliminate the need for fp.tell + # in _seek + if hasattr(self.fp, "flush"): + self.fp.flush() + except OSError: + # io.BytesIO have a fileno, but returns an OSError if + # it doesn't use a file descriptor. + fp = False + + if fp: + assert isinstance(args, tuple) + args_list = list(args) + args_list[2] = fp + args = tuple(args_list) + + decoder = Image._getdecoder(self.mode, "libtiff", args, self.decoderconfig) + try: + decoder.setimage(self.im, extents) + except ValueError as e: + msg = "Couldn't set the image" + raise OSError(msg) from e + + close_self_fp = self._exclusive_fp and not self.is_animated + if hasattr(self.fp, "getvalue"): + # We've got a stringio like thing passed in. Yay for all in memory. + # The decoder needs the entire file in one shot, so there's not + # a lot we can do here other than give it the entire file. + # unless we could do something like get the address of the + # underlying string for stringio. + # + # Rearranging for supporting byteio items, since they have a fileno + # that returns an OSError if there's no underlying fp. Easier to + # deal with here by reordering. + logger.debug("have getvalue. just sending in a string from getvalue") + n, err = decoder.decode(self.fp.getvalue()) + elif fp: + # we've got a actual file on disk, pass in the fp. + 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") + self.fp.seek(0) + # UNDONE -- so much for that buffer size thing. + n, err = decoder.decode(self.fp.read()) + + self.tile = [] + self.readonly = 0 + + self.load_end() + + if close_self_fp: + self.fp.close() + self.fp = None # might be shared + + if err < 0: + msg = f"decoder error {err}" + raise OSError(msg) + + return Image.Image.load(self) + + def _setup(self) -> None: + """Setup this image object based on current tags""" + + if 0xBC01 in self.tag_v2: + msg = "Windows Media Photo files not yet supported" + raise OSError(msg) + + # extract relevant tags + self._compression = COMPRESSION_INFO[self.tag_v2.get(COMPRESSION, 1)] + self._planar_configuration = self.tag_v2.get(PLANAR_CONFIGURATION, 1) + + # photometric is a required tag, but not everyone is reading + # the specification + photo = self.tag_v2.get(PHOTOMETRIC_INTERPRETATION, 0) + + # old style jpeg compression images most certainly are YCbCr + if self._compression == "tiff_jpeg": + photo = 6 + + fillorder = self.tag_v2.get(FILLORDER, 1) + + logger.debug("*** Summary ***") + logger.debug("- compression: %s", self._compression) + logger.debug("- photometric_interpretation: %s", photo) + logger.debug("- planar_configuration: %s", self._planar_configuration) + logger.debug("- fill_order: %s", fillorder) + logger.debug("- YCbCr subsampling: %s", self.tag_v2.get(YCBCRSUBSAMPLING)) + + # size + 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) + self._tile_size = xsize, ysize + orientation = self.tag_v2.get(ExifTags.Base.Orientation) + if orientation in (5, 6, 7, 8): + self._size = ysize, xsize + else: + self._size = xsize, ysize + + logger.debug("- size: %s", self.size) + + sample_format = self.tag_v2.get(SAMPLEFORMAT, (1,)) + if len(sample_format) > 1 and max(sample_format) == min(sample_format) == 1: + # SAMPLEFORMAT is properly per band, so an RGB image will + # be (1,1,1). But, we don't support per band pixel types, + # and anything more than one band is a uint8. So, just + # take the first element. Revisit this if adding support + # for more exotic images. + sample_format = (1,) + + bps_tuple = self.tag_v2.get(BITSPERSAMPLE, (1,)) + extra_tuple = self.tag_v2.get(EXTRASAMPLES, ()) + if photo in (2, 6, 8): # RGB, YCbCr, LAB + bps_count = 3 + elif photo == 5: # CMYK + bps_count = 4 + else: + bps_count = 1 + bps_count += len(extra_tuple) + bps_actual_count = len(bps_tuple) + samples_per_pixel = self.tag_v2.get( + SAMPLESPERPIXEL, + 3 if self._compression == "tiff_jpeg" and photo in (2, 6) else 1, + ) + + if samples_per_pixel > MAX_SAMPLESPERPIXEL: + # DOS check, samples_per_pixel can be a Long, and we extend the tuple below + logger.error( + "More samples per pixel than can be decoded: %s", samples_per_pixel + ) + msg = "Invalid value for samples per pixel" + raise SyntaxError(msg) + + if samples_per_pixel < bps_actual_count: + # If a file has more values in bps_tuple than expected, + # remove the excess. + bps_tuple = bps_tuple[:samples_per_pixel] + elif samples_per_pixel > bps_actual_count and bps_actual_count == 1: + # If a file has only one value in bps_tuple, when it should have more, + # presume it is the same number of bits for all of the samples. + bps_tuple = bps_tuple * samples_per_pixel + + if len(bps_tuple) != samples_per_pixel: + msg = "unknown data organization" + raise SyntaxError(msg) + + # mode: check photometric interpretation and bits per pixel + key = ( + self.tag_v2.prefix, + photo, + sample_format, + fillorder, + bps_tuple, + extra_tuple, + ) + logger.debug("format key: %s", key) + try: + self._mode, rawmode = OPEN_INFO[key] + except KeyError as e: + logger.debug("- unsupported format") + msg = "unknown pixel mode" + raise SyntaxError(msg) from e + + logger.debug("- raw mode: %s", rawmode) + logger.debug("- pil mode: %s", self.mode) + + self.info["compression"] = self._compression + + xres = self.tag_v2.get(X_RESOLUTION, 1) + yres = self.tag_v2.get(Y_RESOLUTION, 1) + + if xres and yres: + resunit = self.tag_v2.get(RESOLUTION_UNIT) + if resunit == 2: # dots per inch + self.info["dpi"] = (xres, yres) + elif resunit == 3: # dots per centimeter. convert to dpi + self.info["dpi"] = (xres * 2.54, yres * 2.54) + elif resunit is None: # used to default to 1, but now 2) + self.info["dpi"] = (xres, yres) + # For backward compatibility, + # we also preserve the old behavior + self.info["resolution"] = xres, yres + else: # No absolute unit of measurement + self.info["resolution"] = xres, yres + + # build tile descriptors + x = y = layer = 0 + self.tile = [] + self.use_load_libtiff = READ_LIBTIFF or self._compression != "raw" + if self.use_load_libtiff: + # Decoder expects entire file as one tile. + # There's a buffer size limit in load (64k) + # so large g4 images will fail if we use that + # function. + # + # Setup the one tile for the whole image, then + # use the _load_libtiff function. + + # libtiff handles the fillmode for us, so 1;IR should + # actually be 1;I. Including the R double reverses the + # bits, so stripes of the image are reversed. See + # https://github.com/python-pillow/Pillow/issues/279 + if fillorder == 2: + # Replace fillorder with fillorder=1 + key = key[:3] + (1,) + key[4:] + logger.debug("format key: %s", key) + # this should always work, since all the + # fillorder==2 modes have a corresponding + # fillorder=1 mode + self._mode, rawmode = OPEN_INFO[key] + # YCbCr images with new jpeg compression with pixels in one plane + # unpacked straight into RGB values + if ( + photo == 6 + and self._compression == "jpeg" + 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", ";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 + a = (rawmode, self._compression, False, self.tag_v2.offset) + self.tile.append(ImageFile._Tile("libtiff", (0, 0, xsize, ysize), 0, a)) + + elif STRIPOFFSETS in self.tag_v2 or TILEOFFSETS in self.tag_v2: + # striped image + if STRIPOFFSETS in self.tag_v2: + offsets = self.tag_v2[STRIPOFFSETS] + h = self.tag_v2.get(ROWSPERSTRIP, ysize) + w = xsize + else: + # tiled image + offsets = self.tag_v2[TILEOFFSETS] + tilewidth = self.tag_v2.get(TILEWIDTH) + h = self.tag_v2.get(TILELENGTH) + if not isinstance(tilewidth, int) or not isinstance(h, int): + msg = "Invalid tile dimensions" + raise ValueError(msg) + w = tilewidth + + if w == xsize and h == ysize and self._planar_configuration != 2: + # Every tile covers the image. Only use the last offset + offsets = offsets[-1:] + + for offset in offsets: + if x + w > xsize: + stride = w * sum(bps_tuple) / 8 # bytes per line + else: + stride = 0 + + tile_rawmode = rawmode + if self._planar_configuration == 2: + # each band on it's own layer + tile_rawmode = rawmode[layer] + # adjust stride width accordingly + stride /= bps_count + + args = (tile_rawmode, int(stride), 1) + self.tile.append( + ImageFile._Tile( + self._compression, + (x, y, min(x + w, xsize), min(y + h, ysize)), + offset, + args, + ) + ) + x += w + if x >= xsize: + x, y = 0, y + h + if y >= ysize: + y = 0 + layer += 1 + else: + logger.debug("- unsupported data organization") + msg = "unknown data organization" + raise SyntaxError(msg) + + # Fix up info. + if ICCPROFILE in self.tag_v2: + self.info["icc_profile"] = self.tag_v2[ICCPROFILE] + + # fixup palette descriptor + + if self.mode in ["P", "PA"]: + palette = [o8(b // 256) for b in self.tag_v2[COLORMAP]] + self.palette = ImagePalette.raw("RGB;L", b"".join(palette)) + + +# +# -------------------------------------------------------------------- +# Write TIFF files + +# little endian is default except for image modes with +# explicit big endian byte-order + +SAVE_INFO = { + # mode => rawmode, byteorder, photometrics, + # sampleformat, bitspersample, extra + "1": ("1", II, 1, 1, (1,), None), + "L": ("L", II, 1, 1, (8,), None), + "LA": ("LA", II, 1, 1, (8, 8), 2), + "P": ("P", II, 3, 1, (8,), None), + "PA": ("PA", II, 3, 1, (8, 8), 2), + "I": ("I;32S", II, 1, 2, (32,), None), + "I;16": ("I;16", II, 1, 1, (16,), None), + "I;16L": ("I;16L", II, 1, 1, (16,), None), + "F": ("F;32F", II, 1, 3, (32,), None), + "RGB": ("RGB", II, 2, 1, (8, 8, 8), None), + "RGBX": ("RGBX", II, 2, 1, (8, 8, 8, 8), 0), + "RGBA": ("RGBA", II, 2, 1, (8, 8, 8, 8), 2), + "CMYK": ("CMYK", II, 5, 1, (8, 8, 8, 8), None), + "YCbCr": ("YCbCr", II, 6, 1, (8, 8, 8), None), + "LAB": ("LAB", II, 8, 1, (8, 8, 8), None), + "I;16B": ("I;16B", MM, 1, 1, (16,), None), +} + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as TIFF" + raise OSError(msg) from e + + 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: + compression = im.info.get("compression") + if isinstance(compression, int): + # compression value may be from BMP. Ignore it + compression = None + if compression is None: + compression = "raw" + elif compression == "tiff_jpeg": + # OJPEG is obsolete, so use new-style JPEG compression instead + compression = "jpeg" + elif compression == "tiff_deflate": + compression = "tiff_adobe_deflate" + + libtiff = WRITE_LIBTIFF or compression != "raw" + + # required for color libtiff images + ifd[PLANAR_CONFIGURATION] = 1 + + ifd[IMAGEWIDTH] = im.size[0] + ifd[IMAGELENGTH] = im.size[1] + + # write any arbitrary tags passed in as an ImageFileDirectory + if "tiffinfo" in encoderinfo: + info = encoderinfo["tiffinfo"] + elif "exif" in encoderinfo: + info = encoderinfo["exif"] + if isinstance(info, bytes): + exif = Image.Exif() + exif.load(info) + info = exif + else: + info = {} + logger.debug("Tiffinfo Keys: %s", list(info)) + if isinstance(info, ImageFileDirectory_v1): + info = info.to_v2() + for key in info: + if isinstance(info, Image.Exif) and key in TiffTags.TAGS_V2_GROUPS: + ifd[key] = info.get_ifd(key) + else: + ifd[key] = info.get(key) + try: + ifd.tagtype[key] = info.tagtype[key] + except Exception: + pass # might not be an IFD. Might not have populated type + + legacy_ifd = {} + if hasattr(im, "tag"): + legacy_ifd = im.tag.to_v2() + + supplied_tags = {**legacy_ifd, **getattr(im, "tag_v2", {})} + for tag in ( + # IFD offset that may not be correct in the saved image + EXIFIFD, + # Determined by the image format and should not be copied from legacy_ifd. + SAMPLEFORMAT, + ): + if tag in supplied_tags: + del supplied_tags[tag] + + # additions written by Greg Couch, gregc@cgl.ucsf.edu + # inspired by image-sig posting from Kevin Cazabon, kcazabon@home.com + if hasattr(im, "tag_v2"): + # preserve tags from original TIFF image file + for key in ( + RESOLUTION_UNIT, + X_RESOLUTION, + Y_RESOLUTION, + IPTC_NAA_CHUNK, + PHOTOSHOP_CHUNK, + XMP, + ): + if key in im.tag_v2: + if key == IPTC_NAA_CHUNK and im.tag_v2.tagtype[key] not in ( + TiffTags.BYTE, + TiffTags.UNDEFINED, + ): + del supplied_tags[key] + else: + ifd[key] = im.tag_v2[key] + ifd.tagtype[key] = im.tag_v2.tagtype[key] + + # preserve ICC profile (should also work when saving other formats + # which support profiles as TIFF) -- 2008-06-06 Florian Hoech + icc = encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + ifd[ICCPROFILE] = icc + + for key, name in [ + (IMAGEDESCRIPTION, "description"), + (X_RESOLUTION, "resolution"), + (Y_RESOLUTION, "resolution"), + (X_RESOLUTION, "x_resolution"), + (Y_RESOLUTION, "y_resolution"), + (RESOLUTION_UNIT, "resolution_unit"), + (SOFTWARE, "software"), + (DATE_TIME, "date_time"), + (ARTIST, "artist"), + (COPYRIGHT, "copyright"), + ]: + if name in encoderinfo: + ifd[key] = encoderinfo[name] + + dpi = encoderinfo.get("dpi") + if dpi: + ifd[RESOLUTION_UNIT] = 2 + ifd[X_RESOLUTION] = dpi[0] + ifd[Y_RESOLUTION] = dpi[1] + + if bits != (1,): + ifd[BITSPERSAMPLE] = bits + if len(bits) != 1: + ifd[SAMPLESPERPIXEL] = len(bits) + if extra is not None: + ifd[EXTRASAMPLES] = extra + if format != 1: + ifd[SAMPLEFORMAT] = format + + if PHOTOMETRIC_INTERPRETATION not in ifd: + ifd[PHOTOMETRIC_INTERPRETATION] = photo + elif im.mode in ("1", "L") and ifd[PHOTOMETRIC_INTERPRETATION] == 0: + if im.mode == "1": + inverted_im = im.copy() + px = inverted_im.load() + if px is not None: + for y in range(inverted_im.height): + for x in range(inverted_im.width): + px[x, y] = 0 if px[x, y] == 255 else 255 + im = inverted_im + else: + im = ImageOps.invert(im) + + if im.mode in ["P", "PA"]: + lut = im.im.getpalette("RGB", "RGB;L") + colormap = [] + colors = len(lut) // 3 + for i in range(3): + colormap += [v * 256 for v in lut[colors * i : colors * (i + 1)]] + colormap += [0] * (256 - colors) + ifd[COLORMAP] = colormap + # data orientation + w, h = ifd[IMAGEWIDTH], ifd[IMAGELENGTH] + stride = len(bits) * ((w * bits[0] + 7) // 8) + if ROWSPERSTRIP not in ifd: + # aim for given strip size (64 KB by default) when using libtiff writer + if libtiff: + im_strip_size = encoderinfo.get("strip_size", STRIP_SIZE) + rows_per_strip = 1 if stride == 0 else min(im_strip_size // stride, h) + # JPEG encoder expects multiple of 8 rows + if compression == "jpeg": + rows_per_strip = min(((rows_per_strip + 7) // 8) * 8, h) + else: + rows_per_strip = h + if rows_per_strip == 0: + rows_per_strip = 1 + ifd[ROWSPERSTRIP] = rows_per_strip + strip_byte_counts = 1 if stride == 0 else stride * ifd[ROWSPERSTRIP] + strips_per_image = (h + ifd[ROWSPERSTRIP] - 1) // ifd[ROWSPERSTRIP] + if strip_byte_counts >= 2**16: + ifd.tagtype[STRIPBYTECOUNTS] = TiffTags.LONG + ifd[STRIPBYTECOUNTS] = (strip_byte_counts,) * (strips_per_image - 1) + ( + stride * h - strip_byte_counts * (strips_per_image - 1), + ) + ifd[STRIPOFFSETS] = tuple( + range(0, strip_byte_counts * strips_per_image, strip_byte_counts) + ) # this is adjusted by IFD writer + # no compression by default: + ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1) + + if im.mode == "YCbCr": + for tag, default_value in { + YCBCRSUBSAMPLING: (1, 1), + REFERENCEBLACKWHITE: (0, 255, 128, 255, 128, 255), + }.items(): + ifd.setdefault(tag, default_value) + + blocklist = [TILEWIDTH, TILELENGTH, TILEOFFSETS, TILEBYTECOUNTS] + if libtiff: + if "quality" in encoderinfo: + quality = encoderinfo["quality"] + if not isinstance(quality, int) or quality < 0 or quality > 100: + msg = "Invalid quality setting" + raise ValueError(msg) + if compression != "jpeg": + msg = "quality setting only supported for 'jpeg' compression" + raise ValueError(msg) + ifd[JPEGQUALITY] = quality + + logger.debug("Saving using libtiff encoder") + logger.debug("Items: %s", sorted(ifd.items())) + _fp = 0 + if hasattr(fp, "fileno"): + try: + fp.seek(0) + _fp = fp.fileno() + except io.UnsupportedOperation: + pass + + # optional types for non core tags + types = {} + # STRIPOFFSETS and STRIPBYTECOUNTS are added by the library + # based on the data in the strip. + # OSUBFILETYPE is deprecated. + # The other tags expect arrays with a certain length (fixed or depending on + # BITSPERSAMPLE, etc), passing arrays with a different length will result in + # segfaults. Block these tags until we add extra validation. + # SUBIFD may also cause a segfault. + blocklist += [ + OSUBFILETYPE, + REFERENCEBLACKWHITE, + STRIPBYTECOUNTS, + STRIPOFFSETS, + TRANSFERFUNCTION, + SUBIFD, + ] + + # bits per sample is a single short in the tiff directory, not a list. + atts: dict[int, Any] = {BITSPERSAMPLE: bits[0]} + # Merge the ones that we have with (optional) more bits from + # the original file, e.g x,y resolution so that we can + # save(load('')) == original file. + for tag, value in itertools.chain(ifd.items(), supplied_tags.items()): + # Libtiff can only process certain core items without adding + # them to the custom dictionary. + # Custom items are supported for int, float, unicode, string and byte + # values. Other types and tuples require a tagtype. + if tag not in TiffTags.LIBTIFF_CORE: + if not getattr(Image.core, "libtiff_support_custom_tags", False): + continue + + 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 + else: + type = TiffTags.lookup(tag).type + if type: + types[tag] = type + if tag not in atts and tag not in blocklist: + if isinstance(value, str): + atts[tag] = value.encode("ascii", "replace") + b"\0" + elif isinstance(value, IFDRational): + atts[tag] = float(value) + else: + atts[tag] = value + + if SAMPLEFORMAT in atts and len(atts[SAMPLEFORMAT]) == 1: + atts[SAMPLEFORMAT] = atts[SAMPLEFORMAT][0] + + logger.debug("Converted items: %s", sorted(atts.items())) + + # libtiff always expects the bytes in native order. + # we're storing image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if im.mode in ("I;16", "I;16B", "I;16L"): + rawmode = "I;16N" + + # Pass tags as sorted list so that the tags are set in a fixed order. + # This is required by libtiff for some tags. For example, the JPEGQUALITY + # pseudo tag requires that the COMPRESS tag was already set. + tags = list(atts.items()) + tags.sort() + a = (rawmode, compression, _fp, filename, tags, types) + encoder = Image._getencoder(im.mode, "libtiff", a, encoderconfig) + encoder.setimage(im.im, (0, 0) + im.size) + while True: + errcode, data = encoder.encode(ImageFile.MAXBLOCK)[1:] + if not _fp: + fp.write(data) + if errcode: + break + if errcode < 0: + msg = f"encoder error {errcode} when writing image file" + raise OSError(msg) + + else: + for tag in blocklist: + del ifd[tag] + offset = ifd.save(fp) + + ImageFile._save( + im, + fp, + [ImageFile._Tile("raw", (0, 0) + im.size, offset, (rawmode, stride, 1))], + ) + + # -- helper for multi-page save -- + if "_debug_multipage" in encoderinfo: + # just to access o32 and o16 (using correct byte order) + setattr(im, "_debug_multipage", ifd) + + +class AppendingTiffWriter(io.BytesIO): + fieldSizes = [ + 0, # None + 1, # byte + 1, # ascii + 2, # short + 4, # long + 8, # rational + 1, # sbyte + 1, # undefined + 2, # sshort + 4, # slong + 8, # srational + 4, # float + 8, # double + 4, # ifd + 2, # unicode + 4, # complex + 8, # long8 + ] + + Tags = { + 273, # StripOffsets + 288, # FreeOffsets + 324, # TileOffsets + 519, # JPEGQTables + 520, # JPEGDCTables + 521, # JPEGACTables + } + + def __init__(self, fn: StrOrBytesPath | IO[bytes], new: bool = False) -> None: + self.f: IO[bytes] + if is_path(fn): + self.name = fn + self.close_fp = True + try: + self.f = open(fn, "w+b" if new else "r+b") + except OSError: + self.f = open(fn, "w+b") + else: + self.f = cast(IO[bytes], fn) + self.close_fp = False + self.beginning = self.f.tell() + self.setup() + + def setup(self) -> None: + # Reset everything. + self.f.seek(self.beginning, os.SEEK_SET) + + self.whereToWriteNewIFDOffset: int | None = None + self.offsetOfNewPage = 0 + + self.IIMM = iimm = self.f.read(4) + self._bigtiff = b"\x2b" in iimm + if not iimm: + # empty file - first page + self.isFirst = True + return + + self.isFirst = False + if iimm not in PREFIXES: + msg = "Invalid TIFF file header" + raise RuntimeError(msg) + + self.setEndian("<" if iimm.startswith(II) else ">") + + if self._bigtiff: + self.f.seek(4, os.SEEK_CUR) + self.skipIFDs() + self.goToEnd() + + def finalize(self) -> None: + if self.isFirst: + return + + # fix offsets + self.f.seek(self.offsetOfNewPage) + + iimm = self.f.read(4) + if not iimm: + # Make it easy to finish a frame without committing to a new one. + return + + if iimm != self.IIMM: + msg = "IIMM of new page doesn't match IIMM of first page" + raise RuntimeError(msg) + + if self._bigtiff: + self.f.seek(4, os.SEEK_CUR) + ifd_offset = self._read(8 if self._bigtiff else 4) + ifd_offset += self.offsetOfNewPage + assert self.whereToWriteNewIFDOffset is not None + self.f.seek(self.whereToWriteNewIFDOffset) + self._write(ifd_offset, 8 if self._bigtiff else 4) + self.f.seek(ifd_offset) + self.fixIFD() + + def newFrame(self) -> None: + # Call this to finish a frame. + self.finalize() + self.setup() + + def __enter__(self) -> AppendingTiffWriter: + return self + + def __exit__(self, *args: object) -> None: + if self.close_fp: + self.close() + + def tell(self) -> int: + return self.f.tell() - self.offsetOfNewPage + + def seek(self, offset: int, whence: int = io.SEEK_SET) -> int: + """ + :param offset: Distance to seek. + :param whence: Whether the distance is relative to the start, + end or current position. + :returns: The resulting position, relative to the start. + """ + if whence == os.SEEK_SET: + offset += self.offsetOfNewPage + + self.f.seek(offset, whence) + return self.tell() + + def goToEnd(self) -> None: + self.f.seek(0, os.SEEK_END) + pos = self.f.tell() + + # pad to 16 byte boundary + pad_bytes = 16 - pos % 16 + if 0 < pad_bytes < 16: + self.f.write(bytes(pad_bytes)) + self.offsetOfNewPage = self.f.tell() + + def setEndian(self, endian: str) -> None: + self.endian = endian + self.longFmt = f"{self.endian}L" + self.shortFmt = f"{self.endian}H" + self.tagFormat = f"{self.endian}HH" + ("Q" if self._bigtiff else "L") + + def skipIFDs(self) -> None: + while True: + ifd_offset = self._read(8 if self._bigtiff else 4) + if ifd_offset == 0: + self.whereToWriteNewIFDOffset = self.f.tell() - ( + 8 if self._bigtiff else 4 + ) + break + + self.f.seek(ifd_offset) + num_tags = self._read(8 if self._bigtiff else 2) + self.f.seek(num_tags * (20 if self._bigtiff else 12), os.SEEK_CUR) + + def write(self, data: Buffer, /) -> int: + return self.f.write(data) + + def _fmt(self, field_size: int) -> str: + try: + return {2: "H", 4: "L", 8: "Q"}[field_size] + except KeyError: + msg = "offset is not supported" + raise RuntimeError(msg) + + def _read(self, field_size: int) -> int: + (value,) = struct.unpack( + self.endian + self._fmt(field_size), self.f.read(field_size) + ) + return value + + def readShort(self) -> int: + return self._read(2) + + def readLong(self) -> int: + return self._read(4) + + @staticmethod + def _verify_bytes_written(bytes_written: int | None, expected: int) -> None: + if bytes_written is not None and bytes_written != expected: + msg = f"wrote only {bytes_written} bytes but wanted {expected}" + raise RuntimeError(msg) + + def _rewriteLast( + self, value: int, field_size: int, new_field_size: int = 0 + ) -> None: + self.f.seek(-field_size, os.SEEK_CUR) + if not new_field_size: + new_field_size = field_size + bytes_written = self.f.write( + struct.pack(self.endian + self._fmt(new_field_size), value) + ) + self._verify_bytes_written(bytes_written, new_field_size) + + def rewriteLastShortToLong(self, value: int) -> None: + self._rewriteLast(value, 2, 4) + + def rewriteLastShort(self, value: int) -> None: + return self._rewriteLast(value, 2) + + def rewriteLastLong(self, value: int) -> None: + return self._rewriteLast(value, 4) + + def _write(self, value: int, field_size: int) -> None: + bytes_written = self.f.write( + struct.pack(self.endian + self._fmt(field_size), value) + ) + self._verify_bytes_written(bytes_written, field_size) + + def writeShort(self, value: int) -> None: + self._write(value, 2) + + def writeLong(self, value: int) -> None: + self._write(value, 4) + + def close(self) -> None: + self.finalize() + if self.close_fp: + self.f.close() + + def fixIFD(self) -> None: + num_tags = self._read(8 if self._bigtiff else 2) + + for i in range(num_tags): + tag, field_type, count = struct.unpack( + self.tagFormat, self.f.read(12 if self._bigtiff else 8) + ) + + field_size = self.fieldSizes[field_type] + total_size = field_size * count + fmt_size = 8 if self._bigtiff else 4 + is_local = total_size <= fmt_size + if not is_local: + offset = self._read(fmt_size) + self.offsetOfNewPage + self._rewriteLast(offset, fmt_size) + + if tag in self.Tags: + cur_pos = self.f.tell() + + logger.debug( + "fixIFD: %s (%d) - type: %s (%d) - type size: %d - count: %d", + TiffTags.lookup(tag).name, + tag, + TYPES.get(field_type, "unknown"), + field_type, + field_size, + count, + ) + + if is_local: + self._fixOffsets(count, field_size) + self.f.seek(cur_pos + fmt_size) + else: + self.f.seek(offset) + self._fixOffsets(count, field_size) + self.f.seek(cur_pos) + + elif is_local: + # skip the locally stored value that is not an offset + self.f.seek(fmt_size, os.SEEK_CUR) + + def _fixOffsets(self, count: int, field_size: int) -> None: + for i in range(count): + offset = self._read(field_size) + offset += self.offsetOfNewPage + + new_field_size = 0 + if self._bigtiff and field_size in (2, 4) and offset >= 2**32: + # offset is now too large - we must convert long to long8 + new_field_size = 8 + elif field_size == 2 and offset >= 2**16: + # offset is now too large - we must convert short to long + new_field_size = 4 + if new_field_size: + if count != 1: + msg = "not implemented" + raise RuntimeError(msg) # XXX TODO + + # simple case - the offset is just one and therefore it is + # local (not referenced with another offset) + self._rewriteLast(offset, field_size, new_field_size) + # Move back past the new offset, past 'count', and before 'field_type' + rewind = -new_field_size - 4 - 2 + self.f.seek(rewind, os.SEEK_CUR) + self.writeShort(new_field_size) # rewrite the type + self.f.seek(2 - rewind, os.SEEK_CUR) + else: + self._rewriteLast(offset, field_size) + + def fixOffsets( + self, count: int, isShort: bool = False, isLong: bool = False + ) -> None: + if isShort: + field_size = 2 + elif isLong: + field_size = 4 + else: + field_size = 0 + return self._fixOffsets(count, field_size) + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + append_images = list(im.encoderinfo.get("append_images", [])) + if not hasattr(im, "n_frames") and not append_images: + return _save(im, fp, filename) + + cur_idx = im.tell() + try: + with AppendingTiffWriter(fp) as tf: + for ims in [im] + append_images: + encoderinfo = ims._attach_default_encoderinfo(im) + if not hasattr(ims, "encoderconfig"): + ims.encoderconfig = () + nfr = getattr(ims, "n_frames", 1) + + for idx in range(nfr): + ims.seek(idx) + ims.load() + _save(ims, tf, filename) + tf.newFrame() + ims.encoderinfo = encoderinfo + finally: + im.seek(cur_idx) + + +# +# -------------------------------------------------------------------- +# Register + +Image.register_open(TiffImageFile.format, TiffImageFile, _accept) +Image.register_save(TiffImageFile.format, _save) +Image.register_save_all(TiffImageFile.format, _save_all) + +Image.register_extensions(TiffImageFile.format, [".tif", ".tiff"]) + +Image.register_mime(TiffImageFile.format, "image/tiff") diff --git a/myenv/lib/python3.10/site-packages/PIL/TiffTags.py b/myenv/lib/python3.10/site-packages/PIL/TiffTags.py new file mode 100644 index 0000000..86adaa4 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/TiffTags.py @@ -0,0 +1,562 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF tags +# +# This module provides clear-text names for various well-known +# TIFF tags. the TIFF codec works just fine without it. +# +# Copyright (c) Secret Labs AB 1999. +# +# See the README file for information on usage and redistribution. +# + +## +# This module provides constants and clear-text names for various +# well-known TIFF tags. +## +from __future__ import annotations + +from typing import NamedTuple + + +class _TagInfo(NamedTuple): + value: int | None + name: str + type: int | None + length: int | None + enum: dict[str, int] + + +class TagInfo(_TagInfo): + __slots__: list[str] = [] + + def __new__( + cls, + value: int | None = None, + name: str = "unknown", + type: int | None = None, + length: int | None = None, + enum: dict[str, int] | None = None, + ) -> TagInfo: + return super().__new__(cls, value, name, type, length, enum or {}) + + def cvt_enum(self, value: str) -> int | str: + # Using get will call hash(value), which can be expensive + # for some types (e.g. Fraction). Since self.enum is rarely + # used, it's usually better to test it first. + return self.enum.get(value, value) if self.enum else value + + +def lookup(tag: int, group: int | None = None) -> TagInfo: + """ + :param tag: Integer tag number + :param group: Which :py:data:`~PIL.TiffTags.TAGS_V2_GROUPS` to look in + + .. versionadded:: 8.3.0 + + :returns: Taginfo namedtuple, From the ``TAGS_V2`` info if possible, + otherwise just populating the value and name from ``TAGS``. + If the tag is not recognized, "unknown" is returned for the name + + """ + + if group is not None: + info = TAGS_V2_GROUPS[group].get(tag) if group in TAGS_V2_GROUPS else None + else: + info = TAGS_V2.get(tag) + return info or TagInfo(tag, TAGS.get(tag, "unknown")) + + +## +# Map tag numbers to tag info. +# +# id: (Name, Type, Length[, enum_values]) +# +# The length here differs from the length in the tiff spec. For +# numbers, the tiff spec is for the number of fields returned. We +# agree here. For string-like types, the tiff spec uses the length of +# field in bytes. In Pillow, we are using the number of expected +# fields, in general 1 for string-like types. + + +BYTE = 1 +ASCII = 2 +SHORT = 3 +LONG = 4 +RATIONAL = 5 +SIGNED_BYTE = 6 +UNDEFINED = 7 +SIGNED_SHORT = 8 +SIGNED_LONG = 9 +SIGNED_RATIONAL = 10 +FLOAT = 11 +DOUBLE = 12 +IFD = 13 +LONG8 = 16 + +_tags_v2: dict[int, tuple[str, int, int] | tuple[str, int, int, dict[str, int]]] = { + 254: ("NewSubfileType", LONG, 1), + 255: ("SubfileType", SHORT, 1), + 256: ("ImageWidth", LONG, 1), + 257: ("ImageLength", LONG, 1), + 258: ("BitsPerSample", SHORT, 0), + 259: ( + "Compression", + SHORT, + 1, + { + "Uncompressed": 1, + "CCITT 1d": 2, + "Group 3 Fax": 3, + "Group 4 Fax": 4, + "LZW": 5, + "JPEG": 6, + "PackBits": 32773, + }, + ), + 262: ( + "PhotometricInterpretation", + SHORT, + 1, + { + "WhiteIsZero": 0, + "BlackIsZero": 1, + "RGB": 2, + "RGB Palette": 3, + "Transparency Mask": 4, + "CMYK": 5, + "YCbCr": 6, + "CieLAB": 8, + "CFA": 32803, # TIFF/EP, Adobe DNG + "LinearRaw": 32892, # Adobe DNG + }, + ), + 263: ("Threshholding", SHORT, 1), + 264: ("CellWidth", SHORT, 1), + 265: ("CellLength", SHORT, 1), + 266: ("FillOrder", SHORT, 1), + 269: ("DocumentName", ASCII, 1), + 270: ("ImageDescription", ASCII, 1), + 271: ("Make", ASCII, 1), + 272: ("Model", ASCII, 1), + 273: ("StripOffsets", LONG, 0), + 274: ("Orientation", SHORT, 1), + 277: ("SamplesPerPixel", SHORT, 1), + 278: ("RowsPerStrip", LONG, 1), + 279: ("StripByteCounts", LONG, 0), + 280: ("MinSampleValue", SHORT, 0), + 281: ("MaxSampleValue", SHORT, 0), + 282: ("XResolution", RATIONAL, 1), + 283: ("YResolution", RATIONAL, 1), + 284: ("PlanarConfiguration", SHORT, 1, {"Contiguous": 1, "Separate": 2}), + 285: ("PageName", ASCII, 1), + 286: ("XPosition", RATIONAL, 1), + 287: ("YPosition", RATIONAL, 1), + 288: ("FreeOffsets", LONG, 1), + 289: ("FreeByteCounts", LONG, 1), + 290: ("GrayResponseUnit", SHORT, 1), + 291: ("GrayResponseCurve", SHORT, 0), + 292: ("T4Options", LONG, 1), + 293: ("T6Options", LONG, 1), + 296: ("ResolutionUnit", SHORT, 1, {"none": 1, "inch": 2, "cm": 3}), + 297: ("PageNumber", SHORT, 2), + 301: ("TransferFunction", SHORT, 0), + 305: ("Software", ASCII, 1), + 306: ("DateTime", ASCII, 1), + 315: ("Artist", ASCII, 1), + 316: ("HostComputer", ASCII, 1), + 317: ("Predictor", SHORT, 1, {"none": 1, "Horizontal Differencing": 2}), + 318: ("WhitePoint", RATIONAL, 2), + 319: ("PrimaryChromaticities", RATIONAL, 6), + 320: ("ColorMap", SHORT, 0), + 321: ("HalftoneHints", SHORT, 2), + 322: ("TileWidth", LONG, 1), + 323: ("TileLength", LONG, 1), + 324: ("TileOffsets", LONG, 0), + 325: ("TileByteCounts", LONG, 0), + 330: ("SubIFDs", LONG, 0), + 332: ("InkSet", SHORT, 1), + 333: ("InkNames", ASCII, 1), + 334: ("NumberOfInks", SHORT, 1), + 336: ("DotRange", SHORT, 0), + 337: ("TargetPrinter", ASCII, 1), + 338: ("ExtraSamples", SHORT, 0), + 339: ("SampleFormat", SHORT, 0), + 340: ("SMinSampleValue", DOUBLE, 0), + 341: ("SMaxSampleValue", DOUBLE, 0), + 342: ("TransferRange", SHORT, 6), + 347: ("JPEGTables", UNDEFINED, 1), + # obsolete JPEG tags + 512: ("JPEGProc", SHORT, 1), + 513: ("JPEGInterchangeFormat", LONG, 1), + 514: ("JPEGInterchangeFormatLength", LONG, 1), + 515: ("JPEGRestartInterval", SHORT, 1), + 517: ("JPEGLosslessPredictors", SHORT, 0), + 518: ("JPEGPointTransforms", SHORT, 0), + 519: ("JPEGQTables", LONG, 0), + 520: ("JPEGDCTables", LONG, 0), + 521: ("JPEGACTables", LONG, 0), + 529: ("YCbCrCoefficients", RATIONAL, 3), + 530: ("YCbCrSubSampling", SHORT, 2), + 531: ("YCbCrPositioning", SHORT, 1), + 532: ("ReferenceBlackWhite", RATIONAL, 6), + 700: ("XMP", BYTE, 0), + 33432: ("Copyright", ASCII, 1), + 33723: ("IptcNaaInfo", UNDEFINED, 1), + 34377: ("PhotoshopInfo", BYTE, 0), + # FIXME add more tags here + 34665: ("ExifIFD", LONG, 1), + 34675: ("ICCProfile", UNDEFINED, 1), + 34853: ("GPSInfoIFD", LONG, 1), + 36864: ("ExifVersion", UNDEFINED, 1), + 37724: ("ImageSourceData", UNDEFINED, 1), + 40965: ("InteroperabilityIFD", LONG, 1), + 41730: ("CFAPattern", UNDEFINED, 1), + # MPInfo + 45056: ("MPFVersion", UNDEFINED, 1), + 45057: ("NumberOfImages", LONG, 1), + 45058: ("MPEntry", UNDEFINED, 1), + 45059: ("ImageUIDList", UNDEFINED, 0), # UNDONE, check + 45060: ("TotalFrames", LONG, 1), + 45313: ("MPIndividualNum", LONG, 1), + 45569: ("PanOrientation", LONG, 1), + 45570: ("PanOverlap_H", RATIONAL, 1), + 45571: ("PanOverlap_V", RATIONAL, 1), + 45572: ("BaseViewpointNum", LONG, 1), + 45573: ("ConvergenceAngle", SIGNED_RATIONAL, 1), + 45574: ("BaselineLength", RATIONAL, 1), + 45575: ("VerticalDivergence", SIGNED_RATIONAL, 1), + 45576: ("AxisDistance_X", SIGNED_RATIONAL, 1), + 45577: ("AxisDistance_Y", SIGNED_RATIONAL, 1), + 45578: ("AxisDistance_Z", SIGNED_RATIONAL, 1), + 45579: ("YawAngle", SIGNED_RATIONAL, 1), + 45580: ("PitchAngle", SIGNED_RATIONAL, 1), + 45581: ("RollAngle", SIGNED_RATIONAL, 1), + 40960: ("FlashPixVersion", UNDEFINED, 1), + 50741: ("MakerNoteSafety", SHORT, 1, {"Unsafe": 0, "Safe": 1}), + 50780: ("BestQualityScale", RATIONAL, 1), + 50838: ("ImageJMetaDataByteCounts", LONG, 0), # Can be more than one + 50839: ("ImageJMetaData", UNDEFINED, 1), # see Issue #2006 +} +_tags_v2_groups = { + # ExifIFD + 34665: { + 36864: ("ExifVersion", UNDEFINED, 1), + 40960: ("FlashPixVersion", UNDEFINED, 1), + 40965: ("InteroperabilityIFD", LONG, 1), + 41730: ("CFAPattern", UNDEFINED, 1), + }, + # GPSInfoIFD + 34853: { + 0: ("GPSVersionID", BYTE, 4), + 1: ("GPSLatitudeRef", ASCII, 2), + 2: ("GPSLatitude", RATIONAL, 3), + 3: ("GPSLongitudeRef", ASCII, 2), + 4: ("GPSLongitude", RATIONAL, 3), + 5: ("GPSAltitudeRef", BYTE, 1), + 6: ("GPSAltitude", RATIONAL, 1), + 7: ("GPSTimeStamp", RATIONAL, 3), + 8: ("GPSSatellites", ASCII, 0), + 9: ("GPSStatus", ASCII, 2), + 10: ("GPSMeasureMode", ASCII, 2), + 11: ("GPSDOP", RATIONAL, 1), + 12: ("GPSSpeedRef", ASCII, 2), + 13: ("GPSSpeed", RATIONAL, 1), + 14: ("GPSTrackRef", ASCII, 2), + 15: ("GPSTrack", RATIONAL, 1), + 16: ("GPSImgDirectionRef", ASCII, 2), + 17: ("GPSImgDirection", RATIONAL, 1), + 18: ("GPSMapDatum", ASCII, 0), + 19: ("GPSDestLatitudeRef", ASCII, 2), + 20: ("GPSDestLatitude", RATIONAL, 3), + 21: ("GPSDestLongitudeRef", ASCII, 2), + 22: ("GPSDestLongitude", RATIONAL, 3), + 23: ("GPSDestBearingRef", ASCII, 2), + 24: ("GPSDestBearing", RATIONAL, 1), + 25: ("GPSDestDistanceRef", ASCII, 2), + 26: ("GPSDestDistance", RATIONAL, 1), + 27: ("GPSProcessingMethod", UNDEFINED, 0), + 28: ("GPSAreaInformation", UNDEFINED, 0), + 29: ("GPSDateStamp", ASCII, 11), + 30: ("GPSDifferential", SHORT, 1), + }, + # InteroperabilityIFD + 40965: {1: ("InteropIndex", ASCII, 1), 2: ("InteropVersion", UNDEFINED, 1)}, +} + +# Legacy Tags structure +# these tags aren't included above, but were in the previous versions +TAGS: dict[int | tuple[int, int], str] = { + 347: "JPEGTables", + 700: "XMP", + # Additional Exif Info + 32932: "Wang Annotation", + 33434: "ExposureTime", + 33437: "FNumber", + 33445: "MD FileTag", + 33446: "MD ScalePixel", + 33447: "MD ColorTable", + 33448: "MD LabName", + 33449: "MD SampleInfo", + 33450: "MD PrepDate", + 33451: "MD PrepTime", + 33452: "MD FileUnits", + 33550: "ModelPixelScaleTag", + 33723: "IptcNaaInfo", + 33918: "INGR Packet Data Tag", + 33919: "INGR Flag Registers", + 33920: "IrasB Transformation Matrix", + 33922: "ModelTiepointTag", + 34264: "ModelTransformationTag", + 34377: "PhotoshopInfo", + 34735: "GeoKeyDirectoryTag", + 34736: "GeoDoubleParamsTag", + 34737: "GeoAsciiParamsTag", + 34850: "ExposureProgram", + 34852: "SpectralSensitivity", + 34855: "ISOSpeedRatings", + 34856: "OECF", + 34864: "SensitivityType", + 34865: "StandardOutputSensitivity", + 34866: "RecommendedExposureIndex", + 34867: "ISOSpeed", + 34868: "ISOSpeedLatitudeyyy", + 34869: "ISOSpeedLatitudezzz", + 34908: "HylaFAX FaxRecvParams", + 34909: "HylaFAX FaxSubAddress", + 34910: "HylaFAX FaxRecvTime", + 36864: "ExifVersion", + 36867: "DateTimeOriginal", + 36868: "DateTimeDigitized", + 37121: "ComponentsConfiguration", + 37122: "CompressedBitsPerPixel", + 37724: "ImageSourceData", + 37377: "ShutterSpeedValue", + 37378: "ApertureValue", + 37379: "BrightnessValue", + 37380: "ExposureBiasValue", + 37381: "MaxApertureValue", + 37382: "SubjectDistance", + 37383: "MeteringMode", + 37384: "LightSource", + 37385: "Flash", + 37386: "FocalLength", + 37396: "SubjectArea", + 37500: "MakerNote", + 37510: "UserComment", + 37520: "SubSec", + 37521: "SubSecTimeOriginal", + 37522: "SubsecTimeDigitized", + 40960: "FlashPixVersion", + 40961: "ColorSpace", + 40962: "PixelXDimension", + 40963: "PixelYDimension", + 40964: "RelatedSoundFile", + 40965: "InteroperabilityIFD", + 41483: "FlashEnergy", + 41484: "SpatialFrequencyResponse", + 41486: "FocalPlaneXResolution", + 41487: "FocalPlaneYResolution", + 41488: "FocalPlaneResolutionUnit", + 41492: "SubjectLocation", + 41493: "ExposureIndex", + 41495: "SensingMethod", + 41728: "FileSource", + 41729: "SceneType", + 41730: "CFAPattern", + 41985: "CustomRendered", + 41986: "ExposureMode", + 41987: "WhiteBalance", + 41988: "DigitalZoomRatio", + 41989: "FocalLengthIn35mmFilm", + 41990: "SceneCaptureType", + 41991: "GainControl", + 41992: "Contrast", + 41993: "Saturation", + 41994: "Sharpness", + 41995: "DeviceSettingDescription", + 41996: "SubjectDistanceRange", + 42016: "ImageUniqueID", + 42032: "CameraOwnerName", + 42033: "BodySerialNumber", + 42034: "LensSpecification", + 42035: "LensMake", + 42036: "LensModel", + 42037: "LensSerialNumber", + 42112: "GDAL_METADATA", + 42113: "GDAL_NODATA", + 42240: "Gamma", + 50215: "Oce Scanjob Description", + 50216: "Oce Application Selector", + 50217: "Oce Identification Number", + 50218: "Oce ImageLogic Characteristics", + # Adobe DNG + 50706: "DNGVersion", + 50707: "DNGBackwardVersion", + 50708: "UniqueCameraModel", + 50709: "LocalizedCameraModel", + 50710: "CFAPlaneColor", + 50711: "CFALayout", + 50712: "LinearizationTable", + 50713: "BlackLevelRepeatDim", + 50714: "BlackLevel", + 50715: "BlackLevelDeltaH", + 50716: "BlackLevelDeltaV", + 50717: "WhiteLevel", + 50718: "DefaultScale", + 50719: "DefaultCropOrigin", + 50720: "DefaultCropSize", + 50721: "ColorMatrix1", + 50722: "ColorMatrix2", + 50723: "CameraCalibration1", + 50724: "CameraCalibration2", + 50725: "ReductionMatrix1", + 50726: "ReductionMatrix2", + 50727: "AnalogBalance", + 50728: "AsShotNeutral", + 50729: "AsShotWhiteXY", + 50730: "BaselineExposure", + 50731: "BaselineNoise", + 50732: "BaselineSharpness", + 50733: "BayerGreenSplit", + 50734: "LinearResponseLimit", + 50735: "CameraSerialNumber", + 50736: "LensInfo", + 50737: "ChromaBlurRadius", + 50738: "AntiAliasStrength", + 50740: "DNGPrivateData", + 50778: "CalibrationIlluminant1", + 50779: "CalibrationIlluminant2", + 50784: "Alias Layer Metadata", +} + +TAGS_V2: dict[int, TagInfo] = {} +TAGS_V2_GROUPS: dict[int, dict[int, TagInfo]] = {} + + +def _populate() -> None: + for k, v in _tags_v2.items(): + # Populate legacy structure. + TAGS[k] = v[0] + if len(v) == 4: + for sk, sv in v[3].items(): + TAGS[(k, sv)] = sk + + TAGS_V2[k] = TagInfo(k, *v) + + for group, tags in _tags_v2_groups.items(): + TAGS_V2_GROUPS[group] = {k: TagInfo(k, *v) for k, v in tags.items()} + + +_populate() +## +# Map type numbers to type names -- defined in ImageFileDirectory. + +TYPES: dict[int, str] = {} + +# +# These tags are handled by default in libtiff, without +# adding to the custom dictionary. From tif_dir.c, searching for +# case TIFFTAG in the _TIFFVSetField function: +# Line: item. +# 148: case TIFFTAG_SUBFILETYPE: +# 151: case TIFFTAG_IMAGEWIDTH: +# 154: case TIFFTAG_IMAGELENGTH: +# 157: case TIFFTAG_BITSPERSAMPLE: +# 181: case TIFFTAG_COMPRESSION: +# 202: case TIFFTAG_PHOTOMETRIC: +# 205: case TIFFTAG_THRESHHOLDING: +# 208: case TIFFTAG_FILLORDER: +# 214: case TIFFTAG_ORIENTATION: +# 221: case TIFFTAG_SAMPLESPERPIXEL: +# 228: case TIFFTAG_ROWSPERSTRIP: +# 238: case TIFFTAG_MINSAMPLEVALUE: +# 241: case TIFFTAG_MAXSAMPLEVALUE: +# 244: case TIFFTAG_SMINSAMPLEVALUE: +# 247: case TIFFTAG_SMAXSAMPLEVALUE: +# 250: case TIFFTAG_XRESOLUTION: +# 256: case TIFFTAG_YRESOLUTION: +# 262: case TIFFTAG_PLANARCONFIG: +# 268: case TIFFTAG_XPOSITION: +# 271: case TIFFTAG_YPOSITION: +# 274: case TIFFTAG_RESOLUTIONUNIT: +# 280: case TIFFTAG_PAGENUMBER: +# 284: case TIFFTAG_HALFTONEHINTS: +# 288: case TIFFTAG_COLORMAP: +# 294: case TIFFTAG_EXTRASAMPLES: +# 298: case TIFFTAG_MATTEING: +# 305: case TIFFTAG_TILEWIDTH: +# 316: case TIFFTAG_TILELENGTH: +# 327: case TIFFTAG_TILEDEPTH: +# 333: case TIFFTAG_DATATYPE: +# 344: case TIFFTAG_SAMPLEFORMAT: +# 361: case TIFFTAG_IMAGEDEPTH: +# 364: case TIFFTAG_SUBIFD: +# 376: case TIFFTAG_YCBCRPOSITIONING: +# 379: case TIFFTAG_YCBCRSUBSAMPLING: +# 383: case TIFFTAG_TRANSFERFUNCTION: +# 389: case TIFFTAG_REFERENCEBLACKWHITE: +# 393: case TIFFTAG_INKNAMES: + +# Following pseudo-tags are also handled by default in libtiff: +# TIFFTAG_JPEGQUALITY 65537 + +# some of these are not in our TAGS_V2 dict and were included from tiff.h + +# This list also exists in encode.c +LIBTIFF_CORE = { + 255, + 256, + 257, + 258, + 259, + 262, + 263, + 266, + 274, + 277, + 278, + 280, + 281, + 340, + 341, + 282, + 283, + 284, + 286, + 287, + 296, + 297, + 321, + 320, + 338, + 32995, + 322, + 323, + 32998, + 32996, + 339, + 32997, + 330, + 531, + 530, + 301, + 532, + 333, + # as above + 269, # this has been in our tests forever, and works + 65537, +} + +LIBTIFF_CORE.remove(255) # We don't have support for subfiletypes +LIBTIFF_CORE.remove(322) # We don't have support for writing tiled images with libtiff +LIBTIFF_CORE.remove(323) # Tiled images +LIBTIFF_CORE.remove(333) # Ink Names either + +# Note to advanced users: There may be combinations of these +# parameters and values that when added properly, will work and +# produce valid tiff images that may work in your application. +# It is safe to add and remove tags from this set from Pillow's point +# of view so long as you test against libtiff. diff --git a/myenv/lib/python3.10/site-packages/PIL/WalImageFile.py b/myenv/lib/python3.10/site-packages/PIL/WalImageFile.py new file mode 100644 index 0000000..87e3287 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/WalImageFile.py @@ -0,0 +1,127 @@ +# +# The Python Imaging Library. +# $Id$ +# +# WAL file handling +# +# History: +# 2003-04-23 fl created +# +# Copyright (c) 2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +""" +This reader is based on the specification available from: +https://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml +and has been tested with a few sample files found using google. + +.. note:: + This format cannot be automatically recognized, so the reader + is not registered for use with :py:func:`PIL.Image.open()`. + To open a WAL file, use the :py:func:`PIL.WalImageFile.open()` function instead. +""" +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile +from ._binary import i32le as i32 +from ._typing import StrOrBytesPath + + +class WalImageFile(ImageFile.ImageFile): + format = "WAL" + format_description = "Quake2 Texture" + + def _open(self) -> None: + self._mode = "P" + + # read header fields + header = self.fp.read(32 + 24 + 32 + 12) + self._size = i32(header, 32), i32(header, 36) + Image._decompression_bomb_check(self.size) + + # load pixel data + offset = i32(header, 40) + self.fp.seek(offset) + + # strings are null-terminated + self.info["name"] = header[:32].split(b"\0", 1)[0] + next_name = header[56 : 56 + 32].split(b"\0", 1)[0] + if next_name: + self.info["next_name"] = next_name + + def load(self) -> Image.core.PixelAccess | None: + if self._im is None: + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self.size[0] * self.size[1])) + self.putpalette(quake2palette) + return Image.Image.load(self) + + +def open(filename: StrOrBytesPath | IO[bytes]) -> WalImageFile: + """ + Load texture from a Quake2 WAL texture file. + + By default, a Quake2 standard palette is attached to the texture. + To override the palette, use the :py:func:`PIL.Image.Image.putpalette()` method. + + :param filename: WAL file name, or an opened file handle. + :returns: An image instance. + """ + return WalImageFile(filename) + + +quake2palette = ( + # default palette taken from piffo 0.93 by Hans Häggström + b"\x01\x01\x01\x0b\x0b\x0b\x12\x12\x12\x17\x17\x17\x1b\x1b\x1b\x1e" + b"\x1e\x1e\x22\x22\x22\x26\x26\x26\x29\x29\x29\x2c\x2c\x2c\x2f\x2f" + b"\x2f\x32\x32\x32\x35\x35\x35\x37\x37\x37\x3a\x3a\x3a\x3c\x3c\x3c" + b"\x24\x1e\x13\x22\x1c\x12\x20\x1b\x12\x1f\x1a\x10\x1d\x19\x10\x1b" + b"\x17\x0f\x1a\x16\x0f\x18\x14\x0d\x17\x13\x0d\x16\x12\x0d\x14\x10" + b"\x0b\x13\x0f\x0b\x10\x0d\x0a\x0f\x0b\x0a\x0d\x0b\x07\x0b\x0a\x07" + b"\x23\x23\x26\x22\x22\x25\x22\x20\x23\x21\x1f\x22\x20\x1e\x20\x1f" + b"\x1d\x1e\x1d\x1b\x1c\x1b\x1a\x1a\x1a\x19\x19\x18\x17\x17\x17\x16" + b"\x16\x14\x14\x14\x13\x13\x13\x10\x10\x10\x0f\x0f\x0f\x0d\x0d\x0d" + b"\x2d\x28\x20\x29\x24\x1c\x27\x22\x1a\x25\x1f\x17\x38\x2e\x1e\x31" + b"\x29\x1a\x2c\x25\x17\x26\x20\x14\x3c\x30\x14\x37\x2c\x13\x33\x28" + b"\x12\x2d\x24\x10\x28\x1f\x0f\x22\x1a\x0b\x1b\x14\x0a\x13\x0f\x07" + b"\x31\x1a\x16\x30\x17\x13\x2e\x16\x10\x2c\x14\x0d\x2a\x12\x0b\x27" + b"\x0f\x0a\x25\x0f\x07\x21\x0d\x01\x1e\x0b\x01\x1c\x0b\x01\x1a\x0b" + b"\x01\x18\x0a\x01\x16\x0a\x01\x13\x0a\x01\x10\x07\x01\x0d\x07\x01" + b"\x29\x23\x1e\x27\x21\x1c\x26\x20\x1b\x25\x1f\x1a\x23\x1d\x19\x21" + b"\x1c\x18\x20\x1b\x17\x1e\x19\x16\x1c\x18\x14\x1b\x17\x13\x19\x14" + b"\x10\x17\x13\x0f\x14\x10\x0d\x12\x0f\x0b\x0f\x0b\x0a\x0b\x0a\x07" + b"\x26\x1a\x0f\x23\x19\x0f\x20\x17\x0f\x1c\x16\x0f\x19\x13\x0d\x14" + b"\x10\x0b\x10\x0d\x0a\x0b\x0a\x07\x33\x22\x1f\x35\x29\x26\x37\x2f" + b"\x2d\x39\x35\x34\x37\x39\x3a\x33\x37\x39\x30\x34\x36\x2b\x31\x34" + b"\x27\x2e\x31\x22\x2b\x2f\x1d\x28\x2c\x17\x25\x2a\x0f\x20\x26\x0d" + b"\x1e\x25\x0b\x1c\x22\x0a\x1b\x20\x07\x19\x1e\x07\x17\x1b\x07\x14" + b"\x18\x01\x12\x16\x01\x0f\x12\x01\x0b\x0d\x01\x07\x0a\x01\x01\x01" + b"\x2c\x21\x21\x2a\x1f\x1f\x29\x1d\x1d\x27\x1c\x1c\x26\x1a\x1a\x24" + b"\x18\x18\x22\x17\x17\x21\x16\x16\x1e\x13\x13\x1b\x12\x12\x18\x10" + b"\x10\x16\x0d\x0d\x12\x0b\x0b\x0d\x0a\x0a\x0a\x07\x07\x01\x01\x01" + b"\x2e\x30\x29\x2d\x2e\x27\x2b\x2c\x26\x2a\x2a\x24\x28\x29\x23\x27" + b"\x27\x21\x26\x26\x1f\x24\x24\x1d\x22\x22\x1c\x1f\x1f\x1a\x1c\x1c" + b"\x18\x19\x19\x16\x17\x17\x13\x13\x13\x10\x0f\x0f\x0d\x0b\x0b\x0a" + b"\x30\x1e\x1b\x2d\x1c\x19\x2c\x1a\x17\x2a\x19\x14\x28\x17\x13\x26" + b"\x16\x10\x24\x13\x0f\x21\x12\x0d\x1f\x10\x0b\x1c\x0f\x0a\x19\x0d" + b"\x0a\x16\x0b\x07\x12\x0a\x07\x0f\x07\x01\x0a\x01\x01\x01\x01\x01" + b"\x28\x29\x38\x26\x27\x36\x25\x26\x34\x24\x24\x31\x22\x22\x2f\x20" + b"\x21\x2d\x1e\x1f\x2a\x1d\x1d\x27\x1b\x1b\x25\x19\x19\x21\x17\x17" + b"\x1e\x14\x14\x1b\x13\x12\x17\x10\x0f\x13\x0d\x0b\x0f\x0a\x07\x07" + b"\x2f\x32\x29\x2d\x30\x26\x2b\x2e\x24\x29\x2c\x21\x27\x2a\x1e\x25" + b"\x28\x1c\x23\x26\x1a\x21\x25\x18\x1e\x22\x14\x1b\x1f\x10\x19\x1c" + b"\x0d\x17\x1a\x0a\x13\x17\x07\x10\x13\x01\x0d\x0f\x01\x0a\x0b\x01" + b"\x01\x3f\x01\x13\x3c\x0b\x1b\x39\x10\x20\x35\x14\x23\x31\x17\x23" + b"\x2d\x18\x23\x29\x18\x3f\x3f\x3f\x3f\x3f\x39\x3f\x3f\x31\x3f\x3f" + b"\x2a\x3f\x3f\x20\x3f\x3f\x14\x3f\x3c\x12\x3f\x39\x0f\x3f\x35\x0b" + b"\x3f\x32\x07\x3f\x2d\x01\x3d\x2a\x01\x3b\x26\x01\x39\x21\x01\x37" + b"\x1d\x01\x34\x1a\x01\x32\x16\x01\x2f\x12\x01\x2d\x0f\x01\x2a\x0b" + b"\x01\x27\x07\x01\x23\x01\x01\x1d\x01\x01\x17\x01\x01\x10\x01\x01" + b"\x3d\x01\x01\x19\x19\x3f\x3f\x01\x01\x01\x01\x3f\x16\x16\x13\x10" + b"\x10\x0f\x0d\x0d\x0b\x3c\x2e\x2a\x36\x27\x20\x30\x21\x18\x29\x1b" + b"\x10\x3c\x39\x37\x37\x32\x2f\x31\x2c\x28\x2b\x26\x21\x30\x22\x20" +) diff --git a/myenv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py new file mode 100644 index 0000000..1716a18 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py @@ -0,0 +1,320 @@ +from __future__ import annotations + +from io import BytesIO +from typing import IO, Any + +from . import Image, ImageFile + +try: + from . import _webp + + SUPPORTED = True +except ImportError: + SUPPORTED = False + + +_VP8_MODES_BY_IDENTIFIER = { + b"VP8 ": "RGB", + b"VP8X": "RGBA", + b"VP8L": "RGBA", # lossless +} + + +def _accept(prefix: bytes) -> bool | str: + is_riff_file_format = prefix.startswith(b"RIFF") + is_webp_file = prefix[8:12] == b"WEBP" + is_valid_vp8_mode = prefix[12:16] in _VP8_MODES_BY_IDENTIFIER + + if is_riff_file_format and is_webp_file and is_valid_vp8_mode: + if not SUPPORTED: + return ( + "image file could not be identified because WEBP support not installed" + ) + return True + return False + + +class WebPImageFile(ImageFile.ImageFile): + format = "WEBP" + format_description = "WebP image" + __loaded = 0 + __logical_frame = 0 + + def _open(self) -> None: + # Use the newer AnimDecoder API to parse the (possibly) animated file, + # and access muxed chunks like ICC/EXIF/XMP. + self._decoder = _webp.WebPAnimDecoder(self.fp.read()) + + # Get info from decoder + self._size, loop_count, bgcolor, frame_count, mode = self._decoder.get_info() + self.info["loop"] = loop_count + bg_a, bg_r, bg_g, bg_b = ( + (bgcolor >> 24) & 0xFF, + (bgcolor >> 16) & 0xFF, + (bgcolor >> 8) & 0xFF, + bgcolor & 0xFF, + ) + self.info["background"] = (bg_r, bg_g, bg_b, bg_a) + self.n_frames = frame_count + self.is_animated = self.n_frames > 1 + self._mode = "RGB" if mode == "RGBX" else mode + self.rawmode = mode + + # Attempt to read ICC / EXIF / XMP chunks from file + icc_profile = self._decoder.get_chunk("ICCP") + exif = self._decoder.get_chunk("EXIF") + xmp = self._decoder.get_chunk("XMP ") + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + if xmp: + self.info["xmp"] = xmp + + # Initialize seek state + self._reset(reset=False) + + def _getexif(self) -> dict[int, Any] | None: + if "exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + + # Set logical frame to requested position + self.__logical_frame = frame + + def _reset(self, reset: bool = True) -> None: + if reset: + self._decoder.reset() + self.__physical_frame = 0 + self.__loaded = -1 + self.__timestamp = 0 + + def _get_next(self) -> tuple[bytes, int, int]: + # Get next frame + ret = self._decoder.get_next() + self.__physical_frame += 1 + + # Check if an error occurred + if ret is None: + self._reset() # Reset just to be safe + self.seek(0) + msg = "failed to decode next frame in WebP file" + raise EOFError(msg) + + # Compute duration + data, timestamp = ret + duration = timestamp - self.__timestamp + self.__timestamp = timestamp + + # libwebp gives frame end, adjust to start of frame + timestamp -= duration + return data, timestamp, duration + + def _seek(self, frame: int) -> None: + if self.__physical_frame == frame: + return # Nothing to do + if frame < self.__physical_frame: + self._reset() # Rewind to beginning + while self.__physical_frame < frame: + self._get_next() # Advance to the requested frame + + def load(self) -> Image.core.PixelAccess | None: + if self.__loaded != self.__logical_frame: + self._seek(self.__logical_frame) + + # We need to load the image data for this frame + data, timestamp, duration = self._get_next() + self.info["timestamp"] = timestamp + self.info["duration"] = duration + self.__loaded = self.__logical_frame + + # Set tile + if self.fp and self._exclusive_fp: + self.fp.close() + self.fp = BytesIO(data) + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 0, self.rawmode)] + + return super().load() + + def load_seek(self, pos: int) -> None: + pass + + def tell(self) -> int: + return self.__logical_frame + + +def _convert_frame(im: Image.Image) -> Image.Image: + # Make sure image mode is supported + if im.mode not in ("RGBX", "RGBA", "RGB"): + im = im.convert("RGBA" if im.has_transparency_data else "RGB") + return im + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + encoderinfo = im.encoderinfo.copy() + append_images = list(encoderinfo.get("append_images", [])) + + # If total frame count is 1, then save using the legacy API, which + # will preserve non-alpha modes + total = 0 + for ims in [im] + append_images: + total += getattr(ims, "n_frames", 1) + if total == 1: + _save(im, fp, filename) + return + + background: int | tuple[int, ...] = (0, 0, 0, 0) + if "background" in encoderinfo: + background = encoderinfo["background"] + elif "background" in im.info: + background = im.info["background"] + if isinstance(background, int): + # GifImagePlugin stores a global color table index in + # info["background"]. So it must be converted to an RGBA value + palette = im.getpalette() + if palette: + r, g, b = palette[background * 3 : (background + 1) * 3] + background = (r, g, b, 255) + else: + background = (background, background, background, 255) + + duration = im.encoderinfo.get("duration", im.info.get("duration", 0)) + loop = im.encoderinfo.get("loop", 0) + minimize_size = im.encoderinfo.get("minimize_size", False) + kmin = im.encoderinfo.get("kmin", None) + kmax = im.encoderinfo.get("kmax", None) + allow_mixed = im.encoderinfo.get("allow_mixed", False) + verbose = False + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + alpha_quality = im.encoderinfo.get("alpha_quality", 100) + method = im.encoderinfo.get("method", 0) + icc_profile = im.encoderinfo.get("icc_profile") or "" + exif = im.encoderinfo.get("exif", "") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + xmp = im.encoderinfo.get("xmp", "") + if allow_mixed: + lossless = False + + # Sensible keyframe defaults are from gif2webp.c script + if kmin is None: + kmin = 9 if lossless else 3 + if kmax is None: + kmax = 17 if lossless else 5 + + # Validate background color + if ( + not isinstance(background, (list, tuple)) + or len(background) != 4 + or not all(0 <= v < 256 for v in background) + ): + msg = f"Background color is not an RGBA tuple clamped to (0-255): {background}" + raise OSError(msg) + + # Convert to packed uint + bg_r, bg_g, bg_b, bg_a = background + background = (bg_a << 24) | (bg_r << 16) | (bg_g << 8) | (bg_b << 0) + + # Setup the WebP animation encoder + enc = _webp.WebPAnimEncoder( + im.size, + background, + loop, + minimize_size, + kmin, + kmax, + allow_mixed, + verbose, + ) + + # Add each frame + frame_idx = 0 + timestamp = 0 + cur_idx = im.tell() + try: + for ims in [im] + append_images: + # Get number of frames in this image + nfr = getattr(ims, "n_frames", 1) + + for idx in range(nfr): + ims.seek(idx) + + frame = _convert_frame(ims) + + # Append the frame to the animation encoder + enc.add( + frame.getim(), + round(timestamp), + lossless, + quality, + alpha_quality, + method, + ) + + # Update timestamp and frame index + if isinstance(duration, (list, tuple)): + timestamp += duration[frame_idx] + else: + timestamp += duration + frame_idx += 1 + + finally: + im.seek(cur_idx) + + # Force encoder to flush frames + enc.add(None, round(timestamp), lossless, quality, alpha_quality, 0) + + # Get the final output from the encoder + data = enc.assemble(icc_profile, exif, xmp) + if data is None: + msg = "cannot write file as WebP (encoder returned None)" + raise OSError(msg) + + fp.write(data) + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + alpha_quality = im.encoderinfo.get("alpha_quality", 100) + icc_profile = im.encoderinfo.get("icc_profile") or "" + exif = im.encoderinfo.get("exif", b"") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + if exif.startswith(b"Exif\x00\x00"): + exif = exif[6:] + xmp = im.encoderinfo.get("xmp", "") + method = im.encoderinfo.get("method", 4) + exact = 1 if im.encoderinfo.get("exact") else 0 + + im = _convert_frame(im) + + data = _webp.WebPEncode( + im.getim(), + lossless, + float(quality), + float(alpha_quality), + icc_profile, + method, + exact, + exif, + xmp, + ) + if data is None: + msg = "cannot write file as WebP (encoder returned None)" + raise OSError(msg) + + fp.write(data) + + +Image.register_open(WebPImageFile.format, WebPImageFile, _accept) +if SUPPORTED: + Image.register_save(WebPImageFile.format, _save) + Image.register_save_all(WebPImageFile.format, _save_all) + Image.register_extension(WebPImageFile.format, ".webp") + Image.register_mime(WebPImageFile.format, "image/webp") diff --git a/myenv/lib/python3.10/site-packages/PIL/WmfImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/WmfImagePlugin.py new file mode 100644 index 0000000..d569cb4 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/WmfImagePlugin.py @@ -0,0 +1,186 @@ +# +# The Python Imaging Library +# $Id$ +# +# WMF stub codec +# +# history: +# 1996-12-14 fl Created +# 2004-02-22 fl Turned into a stub driver +# 2004-02-23 fl Added EMF support +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +# WMF/EMF reference documentation: +# https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-WMF/[MS-WMF].pdf +# http://wvware.sourceforge.net/caolan/index.html +# http://wvware.sourceforge.net/caolan/ora-wmf.html +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile +from ._binary import i16le as word +from ._binary import si16le as short +from ._binary import si32le as _long + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific WMF image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +if hasattr(Image.core, "drawwmf"): + # install default handler (windows only) + + class WmfHandler(ImageFile.StubHandler): + def open(self, im: ImageFile.StubImageFile) -> None: + im._mode = "RGB" + self.bbox = im.info["wmf_bbox"] + + def load(self, im: ImageFile.StubImageFile) -> Image.Image: + im.fp.seek(0) # rewind + return Image.frombytes( + "RGB", + im.size, + Image.core.drawwmf(im.fp.read(), im.size, self.bbox), + "raw", + "BGR", + (im.size[0] * 3 + 3) & -4, + -1, + ) + + register_handler(WmfHandler()) + +# +# -------------------------------------------------------------------- +# Read WMF file + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith((b"\xd7\xcd\xc6\x9a\x00\x00", b"\x01\x00\x00\x00")) + + +## +# Image plugin for Windows metafiles. + + +class WmfStubImageFile(ImageFile.StubImageFile): + format = "WMF" + format_description = "Windows Metafile" + + def _open(self) -> None: + # check placable header + s = self.fp.read(44) + + if s.startswith(b"\xd7\xcd\xc6\x9a\x00\x00"): + # placeable windows metafile + + # get units per inch + inch = word(s, 14) + if inch == 0: + msg = "Invalid inch" + raise ValueError(msg) + self._inch: tuple[float, float] = inch, inch + + # get bounding box + x0 = short(s, 6) + y0 = short(s, 8) + x1 = short(s, 10) + y1 = short(s, 12) + + # normalize size to 72 dots per inch + self.info["dpi"] = 72 + size = ( + (x1 - x0) * self.info["dpi"] // inch, + (y1 - y0) * self.info["dpi"] // inch, + ) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + # sanity check (standard metafile header) + if s[22:26] != b"\x01\x00\t\x00": + msg = "Unsupported WMF file format" + raise SyntaxError(msg) + + elif s.startswith(b"\x01\x00\x00\x00") and s[40:44] == b" EMF": + # enhanced metafile + + # get bounding box + x0 = _long(s, 8) + y0 = _long(s, 12) + x1 = _long(s, 16) + y1 = _long(s, 20) + + # get frame (in 0.01 millimeter units) + frame = _long(s, 24), _long(s, 28), _long(s, 32), _long(s, 36) + + size = x1 - x0, y1 - y0 + + # calculate dots per inch from bbox and frame + 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 + + if xdpi == ydpi: + self.info["dpi"] = xdpi + else: + self.info["dpi"] = xdpi, ydpi + self._inch = xdpi, ydpi + + else: + msg = "Unsupported file format" + raise SyntaxError(msg) + + self._mode = "RGB" + self._size = size + + loader = self._load() + if loader: + loader.open(self) + + def _load(self) -> ImageFile.StubHandler | None: + return _handler + + def load( + self, dpi: float | tuple[float, float] | None = None + ) -> Image.core.PixelAccess | None: + if dpi is not None: + self.info["dpi"] = dpi + x0, y0, x1, y1 = self.info["wmf_bbox"] + if not isinstance(dpi, tuple): + dpi = dpi, dpi + self._size = ( + int((x1 - x0) * dpi[0] / self._inch[0]), + int((y1 - y0) * dpi[1] / self._inch[1]), + ) + return super().load() + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "WMF save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# +# -------------------------------------------------------------------- +# Registry stuff + + +Image.register_open(WmfStubImageFile.format, WmfStubImageFile, _accept) +Image.register_save(WmfStubImageFile.format, _save) + +Image.register_extensions(WmfStubImageFile.format, [".wmf", ".emf"]) diff --git a/myenv/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py new file mode 100644 index 0000000..cde2838 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py @@ -0,0 +1,83 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XV Thumbnail file handler by Charles E. "Gene" Cash +# (gcash@magicnet.net) +# +# see xvcolor.c and xvbrowse.c in the sources to John Bradley's XV, +# available from ftp://ftp.cis.upenn.edu/pub/xv/ +# +# history: +# 98-08-15 cec created (b/w only) +# 98-12-09 cec added color palette +# 98-12-28 fl added to PIL (with only a few very minor modifications) +# +# To do: +# FIXME: make save work (this requires quantization support) +# +from __future__ import annotations + +from . import Image, ImageFile, ImagePalette +from ._binary import o8 + +_MAGIC = b"P7 332" + +# standard color palette for thumbnails (RGB332) +PALETTE = b"" +for r in range(8): + for g in range(8): + for b in range(4): + PALETTE = PALETTE + ( + o8((r * 255) // 7) + o8((g * 255) // 7) + o8((b * 255) // 3) + ) + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(_MAGIC) + + +## +# Image plugin for XV thumbnail images. + + +class XVThumbImageFile(ImageFile.ImageFile): + format = "XVThumb" + format_description = "XV thumbnail image" + + def _open(self) -> None: + # check magic + assert self.fp is not None + + if not _accept(self.fp.read(6)): + msg = "not an XV thumbnail file" + raise SyntaxError(msg) + + # Skip to beginning of next line + self.fp.readline() + + # skip info comments + while True: + s = self.fp.readline() + if not s: + msg = "Unexpected EOF reading XV thumbnail file" + raise SyntaxError(msg) + if s[0] != 35: # ie. when not a comment: '#' + break + + # parse header line (already read) + s = s.strip().split() + + self._mode = "P" + self._size = int(s[0]), int(s[1]) + + self.palette = ImagePalette.raw("RGB", PALETTE) + + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, self.fp.tell(), self.mode) + ] + + +# -------------------------------------------------------------------- + +Image.register_open(XVThumbImageFile.format, XVThumbImageFile, _accept) diff --git a/myenv/lib/python3.10/site-packages/PIL/XbmImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/XbmImagePlugin.py new file mode 100644 index 0000000..1e57aa1 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/XbmImagePlugin.py @@ -0,0 +1,98 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XBM File handling +# +# History: +# 1995-09-08 fl Created +# 1996-11-01 fl Added save support +# 1997-07-07 fl Made header parser more tolerant +# 1997-07-22 fl Fixed yet another parser bug +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2001-05-13 fl Added hotspot handling (based on code from Bernhard Herzog) +# 2004-02-24 fl Allow some whitespace before first #define +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re +from typing import IO + +from . import Image, ImageFile + +# XBM header +xbm_head = re.compile( + rb"\s*#define[ \t]+.*_width[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+.*_height[ \t]+(?P[0-9]+)[\r\n]+" + b"(?P" + b"#define[ \t]+[^_]*_x_hot[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+[^_]*_y_hot[ \t]+(?P[0-9]+)[\r\n]+" + b")?" + rb"[\000-\377]*_bits\[]" +) + + +def _accept(prefix: bytes) -> bool: + return prefix.lstrip().startswith(b"#define") + + +## +# Image plugin for X11 bitmaps. + + +class XbmImageFile(ImageFile.ImageFile): + format = "XBM" + format_description = "X11 Bitmap" + + def _open(self) -> None: + assert self.fp is not None + + m = xbm_head.match(self.fp.read(512)) + + if not m: + msg = "not a XBM file" + raise SyntaxError(msg) + + xsize = int(m.group("width")) + ysize = int(m.group("height")) + + if m.group("hotspot"): + self.info["hotspot"] = (int(m.group("xhot")), int(m.group("yhot"))) + + self._mode = "1" + self._size = xsize, ysize + + self.tile = [ImageFile._Tile("xbm", (0, 0) + self.size, m.end())] + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode != "1": + msg = f"cannot write mode {im.mode} as XBM" + raise OSError(msg) + + fp.write(f"#define im_width {im.size[0]}\n".encode("ascii")) + fp.write(f"#define im_height {im.size[1]}\n".encode("ascii")) + + hotspot = im.encoderinfo.get("hotspot") + if hotspot: + fp.write(f"#define im_x_hot {hotspot[0]}\n".encode("ascii")) + fp.write(f"#define im_y_hot {hotspot[1]}\n".encode("ascii")) + + fp.write(b"static char im_bits[] = {\n") + + ImageFile._save(im, fp, [ImageFile._Tile("xbm", (0, 0) + im.size)]) + + fp.write(b"};\n") + + +Image.register_open(XbmImageFile.format, XbmImageFile, _accept) +Image.register_save(XbmImageFile.format, _save) + +Image.register_extension(XbmImageFile.format, ".xbm") + +Image.register_mime(XbmImageFile.format, "image/xbm") diff --git a/myenv/lib/python3.10/site-packages/PIL/XpmImagePlugin.py b/myenv/lib/python3.10/site-packages/PIL/XpmImagePlugin.py new file mode 100644 index 0000000..3be240f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/XpmImagePlugin.py @@ -0,0 +1,157 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XPM File handling +# +# History: +# 1996-12-29 fl Created +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re + +from . import Image, ImageFile, ImagePalette +from ._binary import o8 + +# XPM header +xpm_head = re.compile(b'"([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)') + + +def _accept(prefix: bytes) -> bool: + return prefix.startswith(b"/* XPM */") + + +## +# Image plugin for X11 pixel maps. + + +class XpmImageFile(ImageFile.ImageFile): + format = "XPM" + format_description = "X11 Pixel Map" + + def _open(self) -> None: + assert self.fp is not None + if not _accept(self.fp.read(9)): + msg = "not an XPM file" + raise SyntaxError(msg) + + # skip forward to next string + while True: + line = self.fp.readline() + if not line: + msg = "broken XPM file" + raise SyntaxError(msg) + m = xpm_head.match(line) + if m: + break + + self._size = int(m.group(1)), int(m.group(2)) + + palette_length = int(m.group(3)) + bpp = int(m.group(4)) + + # + # load palette description + + palette = {} + + for _ in range(palette_length): + line = self.fp.readline().rstrip() + + c = line[1 : bpp + 1] + s = line[bpp + 1 : -2].split() + + for i in range(0, len(s), 2): + if s[i] == b"c": + # process colour key + rgb = s[i + 1] + if rgb == b"None": + self.info["transparency"] = c + elif rgb.startswith(b"#"): + rgb_int = int(rgb[1:], 16) + palette[c] = ( + o8((rgb_int >> 16) & 255) + + o8((rgb_int >> 8) & 255) + + o8(rgb_int & 255) + ) + else: + # unknown colour + msg = "cannot read this XPM file" + raise ValueError(msg) + break + + else: + # missing colour key + msg = "cannot read this XPM file" + raise ValueError(msg) + + args: tuple[int, dict[bytes, bytes] | tuple[bytes, ...]] + if palette_length > 256: + self._mode = "RGB" + args = (bpp, palette) + else: + self._mode = "P" + self.palette = ImagePalette.raw("RGB", b"".join(palette.values())) + args = (bpp, tuple(palette.keys())) + + self.tile = [ImageFile._Tile("xpm", (0, 0) + self.size, self.fp.tell(), args)] + + def load_read(self, read_bytes: int) -> bytes: + # + # load all image data in one chunk + + xsize, ysize = self.size + + assert self.fp is not None + s = [self.fp.readline()[1 : xsize + 1].ljust(xsize) for i in range(ysize)] + + return b"".join(s) + + +class XpmDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + data = bytearray() + bpp, palette = self.args + dest_length = self.state.xsize * self.state.ysize + if self.mode == "RGB": + dest_length *= 3 + pixel_header = False + while len(data) < dest_length: + line = self.fd.readline() + if not line: + break + if line.rstrip() == b"/* pixels */" and not pixel_header: + pixel_header = True + continue + line = b'"'.join(line.split(b'"')[1:-1]) + for i in range(0, len(line), bpp): + key = line[i : i + bpp] + if self.mode == "RGB": + data += palette[key] + else: + data += o8(palette.index(key)) + self.set_as_raw(bytes(data)) + return -1, 0 + + +# +# Registry + + +Image.register_open(XpmImageFile.format, XpmImageFile, _accept) +Image.register_decoder("xpm", XpmDecoder) + +Image.register_extension(XpmImageFile.format, ".xpm") + +Image.register_mime(XpmImageFile.format, "image/xpm") diff --git a/myenv/lib/python3.10/site-packages/PIL/__init__.py b/myenv/lib/python3.10/site-packages/PIL/__init__.py new file mode 100644 index 0000000..6e4c23f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/__init__.py @@ -0,0 +1,87 @@ +"""Pillow (Fork of the Python Imaging Library) + +Pillow is the friendly PIL fork by Jeffrey A. Clark and contributors. + https://github.com/python-pillow/Pillow/ + +Pillow is forked from PIL 1.1.7. + +PIL is the Python Imaging Library by Fredrik Lundh and contributors. +Copyright (c) 1999 by Secret Labs AB. + +Use PIL.__version__ for this Pillow version. + +;-) +""" + +from __future__ import annotations + +from . import _version + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION was removed in Pillow 9.0.0. +# Use __version__ instead. +__version__ = _version.__version__ +del _version + + +_plugins = [ + "AvifImagePlugin", + "BlpImagePlugin", + "BmpImagePlugin", + "BufrStubImagePlugin", + "CurImagePlugin", + "DcxImagePlugin", + "DdsImagePlugin", + "EpsImagePlugin", + "FitsImagePlugin", + "FliImagePlugin", + "FpxImagePlugin", + "FtexImagePlugin", + "GbrImagePlugin", + "GifImagePlugin", + "GribStubImagePlugin", + "Hdf5StubImagePlugin", + "IcnsImagePlugin", + "IcoImagePlugin", + "ImImagePlugin", + "ImtImagePlugin", + "IptcImagePlugin", + "JpegImagePlugin", + "Jpeg2KImagePlugin", + "McIdasImagePlugin", + "MicImagePlugin", + "MpegImagePlugin", + "MpoImagePlugin", + "MspImagePlugin", + "PalmImagePlugin", + "PcdImagePlugin", + "PcxImagePlugin", + "PdfImagePlugin", + "PixarImagePlugin", + "PngImagePlugin", + "PpmImagePlugin", + "PsdImagePlugin", + "QoiImagePlugin", + "SgiImagePlugin", + "SpiderImagePlugin", + "SunImagePlugin", + "TgaImagePlugin", + "TiffImagePlugin", + "WebPImagePlugin", + "WmfImagePlugin", + "XbmImagePlugin", + "XpmImagePlugin", + "XVThumbImagePlugin", +] + + +class UnidentifiedImageError(OSError): + """ + Raised in :py:meth:`PIL.Image.open` if an image cannot be opened and identified. + + If a PNG image raises this error, setting :data:`.ImageFile.LOAD_TRUNCATED_IMAGES` + to true may allow the image to be opened after all. The setting will ignore missing + data and checksum failures. + """ + + pass diff --git a/myenv/lib/python3.10/site-packages/PIL/__main__.py b/myenv/lib/python3.10/site-packages/PIL/__main__.py new file mode 100644 index 0000000..043156e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/__main__.py @@ -0,0 +1,7 @@ +from __future__ import annotations + +import sys + +from .features import pilinfo + +pilinfo(supported_formats="--report" not in sys.argv) diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/AvifImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/AvifImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1cb0e6571b2556228804bd8f15a31bb41f62655 GIT binary patch literal 6620 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 MT8+#TM_au8EB6+5wg3PC literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2293f779b3b4a529fe1a94d08ca00f0814fb5d40 GIT binary patch literal 13467 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 j*6H*W%NRDsj-?+Ich3DP literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20511e97288e118b411486df4946237a31dcf732 GIT binary patch literal 9915 zcmai4Yiu0Xb)I`?c6Ro`<#M&+Ll0^s%eFSLNy(ON*;Z^(7A4D)C`ObY8Qa+`d56mt zcV}03hLT9k+KTD4Ns+cL&>(Fhw`7nuRf{&i+BE6Q4cegn(*Q<)4f?}CixvdhUv5)J zez4!Uvs{sqgOcExbI(2Zb>`gj8a8`+(i(oO(S^BRKc{K`N{!7wNi>dW8uMRcnkF>C z>RN+2j1kW3+~IiYb-iIYMkC=QKsQ99ZZ?umvSB$^BjuzN&8(*z87HgoB=8<5r*I2+ zuhXmW6!5&$r|>lJg0l^HMr1{g$cbK&7kxKOrzi@}c5y@uh`~1vrytmm*a2+dlqPnH zU2ke)mup?JmUU+kl-*(&lwnYYK-mGx9$|xGyMt)&6nn)!agW$9?iKglNI1L1<6=aN zVz%9>gW?JCq~sgZvrv0?cNVn7W8GP(rDhR)N-G^*qc>AxQKsT~&7cz0nw~#V;t@Z6 zKGMg$#WlPmt)xeZ(~U~ijZ*4yvQ~GatU@O%bvFoH%#f%ZdbA!R4?k3QZ?cFtj}X1N zL2nWrbF;}Mee%geB`$k0IpK#pxFUcj7k|`7D zSThJ%1c+~Kkbn(vGBR7zovmGq64Q%;>qn+^g9YhD#&ok;pP_?o{1C3=?-^1{(%w*8 zfnu&Qh=@MtQp8yP{l{3w|KLR}PxhYTcEijYZeHGFq=qcZNMYa_Hcw zUkls^Ta}r42;U!_JbiZbc%u~yzP?bcc_XdGC|Rz|%($)KQS8H~t)`jWhsRwfq&{`R zERX+R4ECZKWy+#9-Py?# zASj__nfxs98T@Ve>6(C7Kz22U2@ThtIlADEA#^7}S6-MRDJ+o^Xek#XVd_z?vUN2%kdFP=O-e)hzaV>~xGe#+4&Cr(A?oLdpDgjBsCGMlrrz8lD$ zm?APJnw~pD^KSeM0HIf;-r%#4V5nWvE-?i;=WV@hgiQ8^fXgtZfgb7t7~U}#`VHPr z1V#wC4rxJRnfrU6)81eKWJ=>>x?qFaDsP*eR$`vZmjf#_g}KZ@OCHr!%TldWr^Qq& z-Dzc1D|?jomJ&TfG;{8#CVKJAAJyJs-pL>en8SZlQL(ybih&J$kj8K9Y;eoYhBkJlcp(9BVrQzgL$!8xTDz9HqV8Vi zv&1#rq3=;#HcrDp#c7m0hat~2gw>5F_ZM~fi zdc*WGgQgNkvb)ap?%Js??N>T$gA2T%>I;{zL0=yE4ik@7nRrYbsdDl74ZYo? zf{LT!bK)uSv^a*pF>zcxBTn4Nv~%(NVGnK_m)ANw8He_9c?PW!$f_r%4rz+#j5;;w zq}6Y6{}FZSjd|3FSw5t-GvZ{JQ6o-@r#zhNQjyN)wK{8@QhgGw2k%-#sx?6GtWmvV z4fMooc&Ej)w{>7Mj(Inv11qD>^LA(D_;fcyCQcLG|7Nfqr@bMb!)<}&vB%*}qt9S> zbSKZ!nrhGA7w6hpXyQc7b?3XGlZx}0S(neL+l6;+Ab6N33I9|~LJzqAFCK-npT`X7 zy>kY2`g}*Pxc~35MhZ~cy`dhGtyKE6%-VTzp-uXOwy@MGKNeG7GUyKmVk%jfb^#Wl zpe({JoN-&b80N!mVQ*23q39jZzC!P8d$>Iq42!Td=$qGZg8kxRyYDUiaw-Irk8fH@ zmk){OVS`^FiP4$c8Lv;Ar&chuvLoyjOvzweJOQq;FuzK=P1ZerFB!6~VW!I3{b5#| zQ@pcb{|af_#+!r8=ee?NJC#f}?zir@luTmo_&(!a7B%tW0DQ^Qnt17$M&mm3^$)2Q zyxA_S1%HJ#Zd(B(#Jg&J8)wi~cCSL`!v1BpYE)sF%fsReh!LD6`vUy1E#10%rQ!v4 z&6{o7mFea}prQkE_{zDj;|I}cCidE8zqW*kSk$CDLvgb_3hylMAwc0ll(o2TFY-jxaR2o!BVEmHhzNekG`=ldRDZ zB}ExdzE!*C*8Oq|VQa$;T)DQ3c+Ht+y(#@IaV3R6G`mlcGlkw?#(jD<*=D$Z+D`2S zjcJ!*6Dh|0kN5Yy+bnWilBuIr*K@D6;2l&{hI^1kurpbSZ(BJy*X2<`%jH@M@715)g(p3$XiUDpyJO*X0`L2R?jthD@vA* zS&1o1x|2lyJb?=UjwP!xzmozMGcN6Z-t!k)t)>iIVM90USRL$OvE|waZn4r@4r8Gw zntTz+-TX?rwm`@}XCH`kS-D!WZW_qM*0nYKY4QYZfOP1l@t>Vn_nNLrhsZDA?vt-} z37ba5)Z4t&b<>FFRD)F)4Fz>8n;Hu09rF?ss4C{&3U2Cm%y3h$X&-1>?LBDY8l?$D zKl+Hn3_Y&Y3aKz20j*mr@>5UP6?1C(SaVgFU zAC-MHR|W~8n(YhJ>fn@9Y~WwqgqJtrU)qFMHsRBo@R=B=8zDuE)0L6#CcH`n+Cjv| zu%_ZArX~AMC4sum*4(=A?RsSqmSv6DFr-E^%n_ihOFjY+C8ry$vP8CWm#S?t6ZQd> zEn_^>mWJIRX89ONP)z60+h|T}cU%vvhKnfR_g7Wc6A3 z7;!&NKoWrAf)$(vN11l)Y#4X4i&27XhmZ73T*GF_j_3`)3bRnTs&a9T^o__3t!`$&STCNlo*g!aXc-gIO%Cb7p>0NcOXABF8pyw;eu>#u#4huY4{8~KEb}+tfWh_uPeobyNlUW~|COv_D#INU*;4q39 zU)0l>J&oCm37h3vzit6q%+QO>cm`k8^f(I4$Q z&(fS<$BOj(iD~3P&+5b2CHjHqnZa_pv7Y1n<9u=uyD^w?-P8xskG0V@*K-MzrE#hv z--j6u&OwDl82>1}zEu1)ce2H|8IUxY-)G3TJpn|;5U81~vNj7i<=K8-a76if$U9jI z6Z$f8ad0M(e;dC_abN=8&s=)&JT8GviuQm#Gw06C+o-73W^CMvX;<16j{*=xA+a}+ zFJQf;+(a|5E6T~xKsgR#i7D-!KtOOA%~*@~0gEzIi(XKz&SsjyXE#5l2GRxkiZjIWk56l!vX zQ8h!7@W9)}OFfZQR(GachCQLXw15j(j|_WFuR9&}KwKBy49;J>C31MJ%Erjcy)$?t&JaYhGdSFa(*2> zq?|%qV17~s&nOKEhM=DZd|7Lwu!i!Gc1gb!!$eU-LC6es6eto%U6_18DR)vSx48*V zhNe6iCjCR+hbY5P8exT&3{hsX253#pIB&>j0}JJvcz$CLMF?t{97e0&eS)@*o zmi&RYaJvU7R}T_xtb$ZJ7t4SOG4VdPu8P$zKrSfjD5)fNP|8P%NiyuEHNq^)G=+9P z)FG*SEH&DDr>&%>r15Vaia_dZY#pzM+0I$9*RWT;*&GsHBj!dQy?<>bvkJ2mO9=1& zK1It47W7=o(U*eGu5ni1MqjT;B7tM_ut*}=vyhT%EBT;LX-}Ve?<_93&=&}ihW=+J z;_QPAL!3KNsbA$n?-NavO#+JeBrpU*^iV-cseoui$lpXeO3`hp(A|g<2t)$cNnE3l z#z`#FLoU%E^5byKm1}W0@D-wcm4Nc?yy-{Q)cE+B@-xq0kZ*wQq)}!qSNt;ExTK3* zDku{ve~&s11YUjz^T*-xf?d-q+z_vF~!Nu)+G2;%gOq< z_nwGbuuh(EuQ_RT_2a-Pf$HB}5b=dpOfJtf7rekx=Z!g%*d4_`o6HwkuE>l-j%Oi8 zpH7~Gi!(8fTJM+%HJoTO#SzOl@jt>MEEv=8vstK z+*+t3yTm*GGa}ks0Uc6)7hs%DXaXVgoWtD&`il+nFnYHbWcrd|(N_c*Wz++pl&L6t zqBgDUE`1Ad^b@C#%Mpyb?U=Usf2^;O$yFwn{2_f6T1B`m=$i?ffG1WCmc`m*gCjnS zIs&<#Z(s`f0Fb4^=9Nd3o1KuqjUKqot@4q-OY{5=fnVsoet_QJAn{P>tGpKph^R=f zJQ|uHKuInL>Z+-{AA2W)x^_g6e;#v?Gl`QIFc62zN(PCl2#I*o+jllkU6i#%ywP<7#CT)9H63+`23A30dNncjrz{%M#k%OapRrIb{_yT6)Gjt!#24~Xi-LLu!=x?h2ZPXv6 z1S)`Cp6!ZfJ9ypzmR`x=OWFW-*Nd+Zy>NGfa8ag5=Rj>z{;?Ped*Jp>F-R^Bjw&DK z@azlw#14c3H^feyzK2ea?*MEiCw8HN-?z*Lv;a;deujB^s`?!`(BHGn0O?$)+I4t3 zr&O)H00(Bshl#kiJ5#R1o!K-pL(=Kc@l}OZrmrivR}{O$9+4e{1l1mT<`?LhVKCCSbs!Q`J<+8Xi0Bw(JgR1%{Th!c7Kp7G;DevR& z?jz8xr6as=1KE58=uYPlw~ugBk7vIL-U*ojL{e}TkBHSi?F8@O1oFq|mkk1Be(sXt z#s=iy5zF5bpo!&A2-sb)moSpbkGpe{?TbyJvS!<;scN8`s?ej>)KL@yhU6| zsrh!$Y@&oCt8Vw}G1UM&$;fV+gpQ}`5%RYPQ}InPGN#5}7+3K}WSwyr<1DQW1}Ecs zs)#`K2l+Y;xdwo81=W|0OU;@mzd}?pcTO6Wl1`OFML$vcg-U(F?Nn2g9!5I;(*oeo zqpDyd|C$E>G63S7J51&~)b*zX#t57Sh?pBEh>Jua9gg%?tKpci-Zg|Hj}awNqkjic z1r3!*b}A?;CbMar0!rw#`X52){u@9zDg#ubNHgm?M^>NZ1?2Q_?+8!&Rj!^^{RTG> za8T|~H4XzI2(osBEEuEnkBxQ1G7*$;R5oIYY4DHC1pm-9`K@%4|2%E+56l$*Uo*{r zW~>)-22UgZx0$uBq_Jd-pv1P6Ql}UND(l!BsQ4cSgfT;CsK77|40fSevSQKwh`LnX z{TGBOzw=jwsetDR;$#;~>HmlM9U4K?ZW?wkCBm}{_zxANzLLy?{1br4L|qy6e@Tii z={l>bvZTN$e!Ua}AXT2Oc@?=RQ$)W)Ko$9^ju(f;J%s&~K#ssa5x7oZnZP~*^uHP^ z?{!j>i=E6>g60Jigs(iZe2{xyGYq|cSs)ht2(57lsE(W2|?Ap7TWd5+d zX%cO@pnU`$Ai3;o@EE@3Dz6YBg>$?~nzUH5ea^8xKK{;k&J@jNK%n`9+4kQaA^)Iq zwN*fQLjjdYtElj&)MxY6v>p*gT=Q#7t!)i>JcW?6jVw!c@28oToyb-nz8) zxAbiEhEtowG)@HI7lbbhW! zWfiV}O=J_M(?15=MJ5J(Th8_d-wU;?i*isN=Jek5E*0#BHtUN$>{vpH~stf1}f2FrHseB;ISG!+4y7a?}Jy0!QfZr5=_P`rI;l9rZPIvLK$~d6zMzAI!oJQhO>R8x)O@mQ4lE-2QafXeqk9z(y@@a{(# z)-OO1B&3`G&uQpDcY)2oa$stO*LjuuAbGq7VQ-k_Ymgw#LKoeXHTaIihg^FmUV|@L z#jAb+LBm6L=n-6XOkYyf;_L<0&K%@FsavrhXEhL6bO5;iqb5q|s z$aTEGCS@UwtAyA!tWd_^T3h=mT7CA^RHCfl0w$Fl;*=I}$}LKf_Z&QsPK=YOsqt_@ z$hV_XiE!&z;DEwlw5dyd+Gd{PQJ=ZAMcuQ*8}9(yx2GiL-8D?FWhK5!BLZ|N>mUO! z?!xqz2l5lJJ%DaG;nM%T4SfgZy@}+7j2`r=kd09uXCjJB5FsA36y-(~{XUD+^A&GW z$Sl^TvzQ}Dy0J`3tXJ|g^a~xi;vA;4MCM9Nq0gZ!}Cl2q}%7)@a4eLTx?k0<3D0t764Y&Xcu!^;ornLs+quw_`ceq4Ha>99H@xs7&x7tcsQ)SEA-F zD#J1^*{tk<)bkgYuAmjslYJcQ^$5n5^Bs)uWCs5Ph_A$|CU3)FJbh3m`BWmPhDgLx z!ta#Wx7xC2^D1m!R!l4pHh|Xauz6WFF&*TWaQ2D~pBr{Aw}^c$a)rEk1I!zA{O=Y7 ee2B@QK7gSS_^bg*<+8vDS{*mI(GFU)!~O&MLFHKh literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d447afcfc9523125f6b18ab691d5d52aef7b361e GIT binary patch literal 5600 zcmcgw&2QYs73YxL6-}>XNtWf0Bn|7dPS%wr+iem@aS}VW?5MUS*K!V3TM*oxS!tzR zax#rJ`5gR_RwWXp^ZZZ^zi6aTG-)wGvw zJ!Urw&Ej&gIkY^~be0`v+%^_@9)w|}0#%Q~ zcmeOuyb>~~G(_1-%=yKncr)BwQZjKCqDMltWmu(&{f~{88??!P01?JA;|4aymMwmh zALH&bY>t1*OMDnu0oVvX0Swz&b83v=;$wXLSpnO+%}??PP+ahw;*-FR^ErNppX0BA zUefsM{0-p4!0&R8e;4=&xX<&qzR6eSU>s z#pp@?fWOP%12%!N_xUwor}zT@fX@P(#7;is*MXhpi~J-0F|aehKH)cjo#j(7-^1ki ztteDMJrr_&vD0)tJU6{sy&=4)vL>p^Q>%gUS~A+Ga}j$|1l$X%RT0OYioC#U1yXrY z%?mxk6vm`b#?Yi@eKTDnSi=-IUYOzp> zRS#8CY>040ttLgO9hTS&Q7Ee9rtBfy!tWNj?HwRp)-`;@7a;4JfM(YM#Ba@bZg zdgxU)m52|_NEO74dI$Ed!MaCHkPO-_lnaSjTTQH16idoDSprDxScvtqP5&D;>Ckvi z+%e=y4D4>qtVT^S!&hZ{W9GJq*HzS-X>F?2DD+#=6CwRdTPeKwl^_<}_hma)aQM2f zqLr0~kTcCq5pK*h>XqKKA5LGnJQLTIxYP=&>%oeMXCBVqpXm#y>DFfA_;o72EwnE*EHjQ7h+$w$hOr!faI9;Zv5#oK-f4%wYb%oQTO1~8~mMo#Qz#6^_? zHG2rBqNoG60;G#dvu?`c6sTQx+MqBFM=)w)bP}U1AGOjTS0=ZV4s4=so7)ubn73v> zF8~(tGfo>6@Pr}c?cg4amh;1N>F*&r>r{uQ zz0YIeUG}I5R1n!=NYuVCzmjhTNkm-Lwv-~IdO}rT3Ppu`S2aZd%V$n|-cO^pSJfro zYeJF!h19CR7PLxU)K)R-7K)hgxTvAb@m`YkkYNmwW;`>M2+>>-?Li%!X(1L-oPq%B93 zK2?x_#+rG?*fzIVNXgZE-$G)7kIC~K3Akph*&BxRxV2<(dx;!i_7Yc9k(%rUidVVN z`AZ(NkLXP0feH?0U^we7w3`(nDfsmnLZ>b%GwsdSyr@}MO7JPKBV^KaEH`29WBDeq zvYi$uU53adiG_xwT-ftl!s6wzP&^^QesvX{P!$J7!m9fmnmFVr;u2UUJ_9fTubRwd zHlS@gU(p-ze-0jz*|c33_1f!t)Zy)x8t5almTR_)d`;ngBI}9@_b-Xik<4d-~7Is*2 zav@UlboXeYsStcl%1CBqNiR28mXZPq6TiYLx?{w7JJzqTrb;@TcSp0^<)LBPzbW}X z_~kVM9{^Cjr{Fvq zutml&AiZC0`6;cd-F>9WbSKgp|DJdchI~dI5JHC@si+S=>V;Ajsr`scoNbv37v635 zCEn3qm-sRfgo~dJUh2?$-DqM{Orc$kR}L{rh%?Uj{{WHt{zhfN*2Q7J zX;Q|4U6X0@T~p6X2lI3GB6o|akD#PTt!Nm@Ln1^zz_dS-bXv&WcZ*Bs9Vzn_H5i%9 z{&48YEz}zAc=b@Ri`$~bHcBE9ffO$FyV0PUW-JyZQlq15Qi1-j-u-v5K z>ZBL?W5h!Sl*b8BjHlQzVWcHQX`IS8nzKD#eZ1>gnod~8t8pg3PeZo6fPa09Qmd7X z>Km?}el;D{<&!v4p~ZAmSGA7@MpHA`Qdge6W%_qZdw72h&W(W>VN&}WFmtVfBnG>8Uz&TI-p$@3 z;`az#BtW?$-z7j@hWwDg#{_N=Kn@xbwZ@R25x7s_0Rf5`seQdySu{35gdqU>st`{B zIQSsp7Tht{8nxV0u2Zr~W2KYsxNEsq3BTUokZX-tdS=-rO>1p@yM(5al0kkBkesMS zjRwBd(U;HZpi-4oDw3kwY@vUbREG6sN0N{9N_{z=Z!U4Jr$+pkQdTE=>4amJ(3PLD F{sS1*-9P{U literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81a3cb2973162eab4712964d673df6eb94b65861 GIT binary patch literal 1551 zcmZt`O=}xRbY^#UwOXxYTO@>rlIqYxMTu3%kW*4Zou&ke2u(_1X<1g9k+k-HWoFj4 z#0pBCA7UN*m*(1&pts(7>U%4@IM9K4^FC+Z=M>$pPhfeYYT>j9`4fq|%K_pAAyl0M z!U?A-$!JI^;TE@3E3-p8V+f#u#?GCbI#M?-2lah?}C)=818Ek&Mfdf#T{ z>nxs&H)%Cba^p0FX*b8KBo$!iBu7tgkmDz*Fm5TuEV(q!WT}NRt`xeGxnYx{NT+!3 z?Lyp!eS#UlMAhUPaQD;|q-O5g>wu zl#|fnG_<)DGVXDQyHGucw;=Ae32tA)^oI7yPd~1DKPNdaF4O=-s*th+_ZT)Va`90< zF@-MdCZB%+Qj=41O*dps8w}pu(6y!Q+Pb3ZKDXAkX0?4qf2Z7DGwo=%wm7>2=}YqK zXKUxi%0a7|sjq5l&E7u(9rqJbGlXYMJ_owh&;WOIqs7!K?!gPK-3w4#Pq)FUePz}3 z0og#8!~K497oK3v{fA^`)g-FSzv@8~58?sjZ7_oj{tY~`#a`NCaU?dK#EPu$kBh;yNvIk?qlm$*sB*pyP!-EL zw06qPDC`+)RvM;7ni?iW%$ri1&f8_K@^VIEBT-Le!7J8VUhL}zgc zg5xKKsbnRL6X6ju4IWB#J9MIVI8Ht&h;(M$Vm4Dk8>)<*skxz&+-7k z=dhIrz$55c&uX|Ub_k^z4_Pzp5<7e65>{t;fR4;6_*TFXiM29BVu>Yws7*d$IwwgU z%cX>Wmq?sEiLb~30_=n^xc%F3(3)4nt`ze`Y4|lTneqtL`v397r53rui2f%S<2~D@ Y<{Ru6g)amL_pAVN@4J0(|BJr$FW^9W4FCWD literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a38542dc6cd8ab84355321f7b0f7bf02029b7e3c GIT binary patch literal 1893 zcmZux%WfMt6eZ`S(P$(~N}47>9|_PD)go5g09_PCk-}~Q1C3xHn__@~7!4_DtkH}@ zQm$mkn<&eEguTqNzr#g0UHKQfY44@%+78MA$-~RX+L zhru&Ks9FQygwuk|XhJFB4tEP@<|eMiUg6FBB(T^oYO^p2Ee?wMEJ`B4wWPtjJm$@J zUJ}0`yv29k5xyg$jhi%ud)5-oqaD!{@j09b<2H_Y``m%OomZrH=K}reQPW7vveK!} zt5RLit<67}rDFk;e*W~^0zq?MjD(be|14!C!4My2OS|fMUWojU$)DewU@pZdUmAb7 z(n6U)3cZk}@rG4ZWO(vbLF_=?LniJ6&}2_xFXG>T2Gfuk@rU*}VEqNH$z(4Ffhz zmEerYh0+|>FN(N|eX_A|GCEd%FA0*L{_1@noK6Q=mij4-bCn?_Y*}SS-eQ zxjSE(8cVZG%=IJiLt$9=sq8|RLA_O67(K&~zXKphLODqsP7{|qiO1c<=Q}*$HArZ{ z+dSe8KsDaEOmfIuKuFibR~{hoiMzk|>q-5f)S`F@@VP|&8E;UP;uhs7Jgk=T-vO-2 z5jg|O&*>?Uy`~$g+T1yHw7YgT^er933g&5_yBoSsUf(@+b#T3BLr=Z6ryf&M*1+nW z)z;oQ$oS32xCVBH+=I5RBb?npN?8L?gZopo$7^!dTDTjG&i0UDYrD6#;aAS)1?(AB%>OQl+ebPX*m|M1^Y~p&gY`! z#$~Y6AIWqkWD_Qmuw-_ml18prTIRD<3vN6m#I)yQUyKY@#+|9Lp}7gRhg->Qn+~4u zvkK1N1*krQCU!#V(U1miOxu7w+M=No&=|fJJ?Y*|;I7>&KgDC*ywn*A=&B$_`P-x& z0sz{`8d9ceNE_aiBS_fBksU-w-dnmxs(l7dt0 z8VuuQ*+gVh6Xhx|l}^h{$WP#xGJwW7VrhMp_t1nv$_Logu=xU-o+Cd;jDdVWk6jKS z5QR520y<(O2Wl7T=-i?MJ-H=Z%sE!e0r~>bKmGk9h)na}ZsO&+nVsFYx0nH39_9}AEqOGg?WsG>@FUXCrDTZ((=$#ql~q2S~l zbOx$Id4~ig=F!NBK59jF?!?>W*>V68;TtLI*w}~~fO;MDeYAkb8GM&0GD9Tl3~tXb zFH^aa_*B@tllW|*^TMhiX>N@`d-ZHj9 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b5c79add187898c146f11e89f1ffb840dcf3d51 GIT binary patch literal 14777 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2633a764db2809b6da95345255b5695aaf0be08b GIT binary patch literal 9269 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..233c7ae52ac51d7685002fb6dbf0dbef6b643830 GIT binary patch literal 10319 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 Sc`O+Zt#1w{>ynX<=zjqm3-?6; literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2db873e12b68f4e3f7fe7271de8a5b8c5c47e2da GIT binary patch literal 3827 zcmZu!TXWmS6~^L5kRmBsQZ38zWSBOw%ho3Cq|;`muE#gYWopxE#dcgI8Vtk*DOeyt zEkH}+fSzfTJhjuA{sZYT{~(Y39eC=rPkQ#7AL@Q*p^K#k9PFOUE_U}^zCDa8m6C$T zYK=EPo>P?n5cB?HfVrK?kDtpb=xW@HB9~!nXG;I_5IbP(Y zZ*;rxMBy{M{EfoPp83+;*K7-t3a>&^g`@~c$ukaSJnLoIv%JEg#uV@sKI@eZRY_M# z$7}r3KqU!R*ObQm5$&_VvKcoFqr^@8D2zKtjD%`tw1@7%%ZjpF@dGb2N5bp-yP2`E zmw0hz3NIOpFw-}pDCp6wlZR*x?;|=kStnHvaPUKhMb*w56Oy&|v(=}|Si2M_u1Mk? zKiOblxjI-g!9(Nou zjuVb?P7)0UfhStSJuiIK3jB@ZX`eOk+-}8w;@uj#y)B$BZmqVTwpRQkmZw||#sfcW zj`p&GQpOA-2vnJA)D%{9$(|e)JW9S*k@m}R7cdA->OT>fp(}&&D7+DSBm&K z*QRQCJ!Rr{s>Zj&HOQ?kRs5dTInWd1z?4+sP~pW7ltadg3uu{=YH_S)F z(!^^%i!+pu&wvrBc~{x4V)eiB8Z?z-P2qHx`W59@%CwMF4`x%1UxK{0sHBC|I@AX& zRh&y)ffwdFE1A+gT7_vR^Ib6xdv4jPG!*wOL9HZzBSvbAGr+&yL^XGD_Dc2A; z@cp-Q-0vk{N+7#gm)*JqA5kFfX7s;O|j}C%N_lUCp1&BmJ zJgS^6Doe^fn`($R6}eNT2m`HwzQ(oVQF=bA4;(%(Ip&NreZ%a;v{2{4i}qR`CA5#2 zfI!OboROabQ8nzip^NKK%d^UJ*+%H@`te1x7oCBZIOO!-(kBUbYnnx-R2N|8$>IeA zo{WBbJ+}~IQd;O{{gj8Tq}`g$=K6Y%u=C_8f*`9&i~SeG3047h^pxR>09J7WcKTd$ zCb&Y*acc>PBWdM;k)03K(MP-_5lx~AEN-R-*OnBt5I^GEKNUxnCE+$_w+x!*-|p;NjEd z8`8IS``Lph%VLq#1V8qpXRF;muP*0fpV;kH=T5zTLtLQ&6c-QM-PQIBi9dqwFbP6- zR_x=da|RQC)X>Bw$n#~%?HPM|R6{?}+rPf^%cHs!wHvDcuXpd>`Ts;|Gzo(b8enC(NOcv&xjLnYo4J5`MCTS_vXsq|d7dCd9_Ps3&CHE)zwe2+A4{A>e#>I1xi%h+ zB9v|qgmCxTVd9Ct+w-J#-p*bC(Eq~$vX;bw??KRQeOARJ>_Cv>CF6uy;qMDlO zi7xYr0SVNr3fJ~kWIxp-g_qVod#tQ~GBuOpKHc`Yv?Qeq$hktQq5{!U;|gp>)S|32 zs4^f9y}sQ{wS$?oK-J9lPkE_2Lxxh282?HC6wiZJXP;1I}FB&@#1o8<-I7*v81;^@1~S{T*MI<>^&r^0NzmYvwm|^KKCJ+#tRO;$)h*hj|Ee>f`|$Ra6{2(+L@} z5=|T;LE~6ZwBR=PLz$16A>0uE2~dilKC+EHnf65r3zvexHg=`NbVs<%xn07o@3^r; z_(u2Y2`GF)>o)1rI*u7jR1k;;fY6?JF8ke!r#AEB`~_MW!&O-U=(zW5s0(WB8Y=+^ zevCAjT>fE8bdauc<=^2Oc@jSb)iA_k5-d}*g2pa7qj3<#PM?dfNO*=qXX)35;x%50 zwv>KVRgg>&G)?qo-%ln6wJ}z`03CD>Hf9ML`eXcq0vHIoCdD79`H&h3%@jJaIFt38 zOl!Nix_6wGay7dmyaBvQ;0cS1CzxW_PGz~tggt*M@pcn0jOl;g51lHr?&e^1k80SM XZliL^0+QC$k~XK$4Qh*Jc3J%&*e8LA literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..be58dae9c5d5af365ce9530c18886b736a38866e GIT binary patch literal 4066 zcmaJ^O>iSe74Gi&(MXnLS^jqdF-1ZlDzP`&KvLi=`Pp^YusB=UB!>xGgRE}ZV~=LE zJ)@278WkZ52Z|F{QdHT;Jy8W!6i2vm<~Ua_=tyxQ6t#S>C7ZRO7}dOf{d)T6{e7>M z)M^!m$J-q2|E9^?Kn=db`~aax-;e^vqHlBU#o6-R5-iG znMw;+t8Ad-!ro1is6(5bKg3&j-y++69Zbe@HsX>WI>~&-bDVkv+dX8{o{gUKkUbg}c*f z*Ee3gwwZ>RdZFL$9Kx9C=H1(OHn*d2V#sK)7sea?ev`{%Cs8XXr{cEM+sfOFQ2G=FrPak`1{2e7aIex+^TJAIwskPSD^YUr= zrO#OIkj7{HjBK|czYMxa`=MPj`!1gmzk*$ASl7T8Lgbm9@h5QXc!9_gNGd=WJDCTB ztheKfAn782bOR%rqP5_6#~#`-MaI~O=V%Q0$-=+li}5zN!jl7SBI{B#(GCQv_bB9P z&pn*%erd>a^Xpo_5Dx%oCXWq4nv0EV1#kaHq*rMD%2pJnStsfBZ+s7ZbM_^6^0gZM1xQP1(qTLUqFcn#K@Hdx)_ZTi`FHf#B}E9I z=uJtH4KP0;MVddfhI~k2%P6owkpjzveipSKV%G;kLi1WC7>s;sb6 zr4CU+(!#rU>(=*!w?25U@PhuN+Gv9J!qV-J3;Q4mE})W=>RC0UbV5QS@Ki zY4vd!%T|RpjJgF+3#*sz>1SyJ2PH4;=r>8b`FPOV1?nf=ARX*>_6PA{T2xFs(ToTF zw3{9G)m0xjCW>CfO6mI`Rk6Zt?(wQs<*v2FD^`ViyuzDSRk)%q8lsMVT~vgP*5eCi z)Z>$RHfD>*wza_B$F4&&>-?noq#-9^YtH_~8injf*`Ob(kHR>6e*K)>zh5}%e%Q_6 zmpJQCW}ZKkn3QA&vVR9ga*9Z*y9eSFmE{bvX+Y}^VD&-<$h2}t@>RA>(CSEQl?~n8 zMb#GiS!she-$LRnFaVj8VP(LfgUXKE3PA9y_{PcIRmA-bfFtqJT4vL}XZqrzU(QRp zmzTR1lHb}wj!5ej?EK*62UW@u+yzVq>Tf^=13j9q5}NR;<>+q{PtmKd6M31)B1o&E z-zJ`1uiphJcvx_y2_*_1Yf4tVN#q(4x-m=$!HWJaNQ^gK2eGXcxQATm!D$WS$OhUv zoGt!o|KnuwvfIuh*)gHpAq+Wx$Ul_5#wYK90T=@#&UlKVaSt49%MY2JgIrK?Tf~(3Eq@$0~IJ;!EXh382j7PzY@4ulqVMp8lS9z zmUgI^wMw*>>CH$gx40yvcO>kVRi_t{8lf>=C@`;{&7L--C(D>IM;C#E(wVhKD>rjE z?4Xp}uP}jg8B15DmVOE9>8FX1%}*9P=GwhZHd)V-b>seZQ&LWvy)aF~cyB5sB=xOs z6r$wNUDlA+d{GJUQJS^mj?yd1IdlV3E|Rs9{3+fmY%MdibGG*A;5zsP~Y zyY=q&MD{8^^=GB(0K|2#eYA@@c&N!oz7xDp{{w7u96JM#j529MfuU~`p@i|vle&OY zUk#NHF#I#TDW&HmM_gnEa>WAlp>>JlRe&JDr3YwS<4tiD>P#GwCC(q>={1=`#R5J- zhUgc-;-XIhjmDhyO77mm&?CI&F5vPj0ZS!h2Ue%Z)=$wY?gS%tNI*cL?-KdXxUG#b zu1KdVkhC>}x)#JJoIy}j0;-mSi1=y{JQ%d2>4@7+VE(LVPTBxB@Qx1q^e4^#O3;at zR0Zm&6AjYvp+dO}+T9H0ihPW~(LbP55iU)lfb6bG)h8Tc3}NtV4Fk{PP3b!3F|s|9 zSX5rCG%Mx$x~B0HdjkPzXa^S%`s<`?M2zaQ;93i$PIrL6cTh*0%g}3(7fcg~nHZWB z@=~xH#%+D9=|92*jy>Wi_B0hDgxUb{W#ZXfKg<#QnpS(LY*dwTMbkf`FXu00>L^oj mN`GSimy(6IHL>&!ij$P|t~NZe0GOKmDsHpJe%x@D#J>UVQl`iN literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36028d03a4b2f4dd02a918723e8d7b604db4bd83 GIT binary patch literal 2945 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0f1d904062a96dd62bb11111d660b7c05df24541 GIT binary patch literal 2131 zcmZ`4%Wm67aF<+C6h+yJ;s!O^phOy=QJY$6(^C-yN%}AXB!-co7xuuC+?7O&4|Pe| zmOx+X^bdL~3P{KPL_cJ&J?R&6X=f-qvE62got;_E?!0I7cH1T}tp0TLSBsFpk+?Vv zARZAyivb{mdXy5baXrye-P2R%v6^Oyk(you@J-(2_ABODyM(v6^NMgsumg6g zdrhG)Y|%VuiKeiYIwe3mNb~kmgOeLCNw2d)4SH0yf-K9+pp5gZSW(>5l<_nThC(&# z<@-1hz-PqwzYK*kCsGXJV`YT1QWVORqMXW1u`th*2#=o+#C4e8pka3aDM>|6DW_v2 zzh2S`j5`JM-cSrE*p9Iku{8IGypFZpFhO&0geli`#+0JC98h#K(Vp6)GM}cbI zp%T@PU|t$%$D?z%2;xyrJdION=bFbLmIgN=t_F9w#hZYc+y=L_m2)l=L*nVXPhQM7 zcb`7rcSA5@_ zSqjK+jx`yfuJ4nRM)nb4HezpWIk75>x5m0W;?BGD18&CK56(PLHI@(nzVWNJO-`C1 z9cBE+H!I>Bna(@7R;)4x8enGCtWRHiK+49#0=&6|LdE}Eq%vU=-{zRb-96a`hf4>* zyaOfX2JYKn$qn3gf5?jIWRlBL@C!fPLm>;O$FJSG272qvudkcme#en0PjcyUNWT#r z!wg$}2%x~AquBYat18@e!+^U`=yBv`(=-%PH3~@aI2*41fuZO#kGn&ZJWWMb z_FD29T&J|bL@_A>u39f=Ss5IECuJ@bi?czl3_s1efTf7%LZWzY+vftVfX-2%S$>$O zp&yMzG*%3`lvpP^}RNfO4%F^t2eN#+h4`aTN1%q|A|shojPK)wY8S zu-)4@)76LmFa+AE4fNLr$`3%Dx=*aZb+pFt^NGmr0$Mx)(4iJ(FmbhU)jEK8>b>=j zrNO@DoblbDTbiX=)YNSF9KEa0yBF(pr@sF6&AM6aM7b0@`|+_z9z(Av3b%6qQ>)nb z@JXm^^&udTW$-LaiQF#ffws^w17RA=bw-i}=D)ST%(RzK&y)ZkU9>8)q>zbpujhEW zAE$LR6hj@9o{1yHFjVpui14&HRn38f$Y5WWm^<<&f{y_xmgE74PJ0`7u+P5rpS%a; zk1z{t+BV&S&!O{cmwbT7_aKk4JINaW&hgI>Zz#+6vmh0|52=9pGffb8eE;WZkevN7 z2f0jxQgzoW#Jh-OJi&)cev0>^A{Uga)x-$P_W1C)wNMK{Q6?AEyXY{N=RYM rFZmU)c-=R9;S{ktgHuXCp^SlD6m&J+Z{+bTkl$(hh6$F*TfOP literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..13b1d6cc05147bfb7cfcf493f679f7bd6b2632e0 GIT binary patch literal 2773 zcmb7GTW{OQ73PrC#kB0iZt65`fey0Wq5`~9lK_1X7R7qkj@Lyh2eEfsuqYTxGm^OB zt;3-l8FEp?>HkO``-l3#*Y?GKVNq=QouS=m)2C9<@XY0$GjrxU-(j|~;aPav{c`p% zNdKhH>f@sGnPstJ4nbJHC77^dme{_{NOoc;aeWuED;jYlY5L8i<+qZy-!@~-crEe# zbtAVRcl-?_x8u#^mVb*`hn83q-fK&EviVK(((!MLJK~38OKiVx_*>!!CsubSe8nuw z>-Bh=X*n2p9M9=2D)=N*NvQcaOfkbpl82?vFcOW!I9_li$JsQE&ZXGpMaK0^8r5+e z76peoDJeOP3N4isWQ~`FAOv-dTc>eV0N$)5Lr?QvjGW})uc@N$*P8}W^ zgHz~6vD`J<@bZE3p)l%?vE;@CC(}C0QXZx79*Ukv=Q|5k8l}^lBYt_n5BK@w<7dCy zJLN|we0Y4y_YY2v4u=P3nD6hM?(w7H>A|xvzT6ug9?;GZ7qh7-$zz$wR3jYZr{KBD z=8?EQ=r~K~GL2+9M$}Tlg-kMRMVZxMY)s^(%CkZiJWJz6&$}XEbXm1-!fh57=-Nle zSGXUm>r`w1J!sW2;?ppeTFYwZs}!D79Ze!xN8>=LOhLO5J^1xV8sX7HBW#{%b*w&L zXjwcB^=wRDS04wR&j^zDAxO(-fTb;%?+Dv>h2u8>sHSMWcKxPk13q50zH$TM$Al$9 zkl7&5<8m6M=I-g{5O3T}mgGtnMI9>O32_|)dO#4+rr#s44s;EqqRjJ5Y3Pg=1T|i0 z#5Gjn12h=7|AT`XQ$U|FXb+rty=50n+e>x{KAAIhPdFF0c9!-fd&Pviv;voAMdQ*o@8+dFu`$}fSnHm3 z;Vd217mbvO_JymP7+qVscdbkNqOoiU?}erImJRr7iSn=ElRvT&K zuJt$jp7oZjdwTs%M{J5)(8T!nSBcwi-6{4TYzhmo+8Rb1V8^Z7 zkk7+75(K4(y_dXq%?=fNdSxRVS462-6eUGryP{ZKSrGjWvM(+2P$4N7zWeO(^FKru zR#%P+&$_l*Zkmcc>E5dBNnW`M+)+8mp=$kPfn0xS@~UbC0D;7-0Q+J7(ZkA(QV^W+ zdj~G7R$k|(YM|#gf>Y2_<jIrkr?FK1WFgaeKaNJ%YL9vke$_7`EkDV_@e4v>AJp7mfqpMv;K)SG53q$|7tN;K z!OvxF*0gt6+wQPUr_DU(+MG4txeXgLo6KhRzrABff==drrWC8L6C-t z41&rFD8$G!$ekega~a0hGp!&H*%-skx;$0e^*g}n#wyB*j@8FxlmfNV{G7V$Xnuiz zL3O!pxy)_3Y|}R56;o;l!{7e+`xMES{OI_PBVx=yRj#>t2UKo$J|@iFJOn+mYjX23 z1mpyJ;V4ho$UdvizVn6#$}idPfpXW<_ToN6zA@{(^*%?J&MRBE7tUXtGj?Wm8{tPc ztokGi1=sQ=*g^7%$`a%QGQrS>sgkI4#J&UIJWTi`AJ8}7K9Pi#^V!{asz%;JFC}@voaRu0|Q1WNoyrV zm^^Qf5F^^u`OmIDU9O8G6%K6ceXxdIxAMLY<5C(Y1_kOKY$&3Qu4~|+dNe@QuwwE9 zJXJ2G!ztzp%KElPsbJe4K<^?A+JCjbQx7pQ>@u^rZnHM|3C3!>eUeNL5H!2ns*4xF ze^SyNBXJ2~RZ}l=e7Y!yI+h`onrvvJRVx@pX{Z*ejh^}uHEY!T6ph~su5}5T^$}@H mD#?{`wlXje%sFN-hTiv+3)cH literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ef2f1cafe1e971745622493f25c79a7e05274bb GIT binary patch literal 23837 zcmcJ1d30RYdEeV+#b5w}AP6oZN2ItwqCirsMN>2>Zl+9uGzm%3Nc3ok`v49&3wYlH zNx*Mx+K^+bjuK{ZPn*O!K$m<@dhNvi_JatN&7XIciyU@RDO$%2IaS zYS?AlX56VeWk;TF*_EeP_T-r=r|@*^=|-lUk+NPr+sKu35>M6hjh=E(qfjn1ddt0y zV!7DpEB7_}%l*htt4w`eW1u|HSYKY>7%UGqHk3CshRQ>YjpdDv;qtJQ$<{YDHkY?Z zJcsz!@>YrG5r3e(P2xTE?Tu2ogm|I+p#Pw*qwQX_y`#KC@{9GIjfct)+16=G^{M_h zEYZ*E19eN{Gep=PlVf8H1-=iApn0gMeXHfRI zI)T_B%=NvhsZOcWcss0G>Wq3Gv1iqc`hYr%*b#M2y`aVrd!N$kgX#ieM^&K4)r*K7 zQ=xiUeFI|8=e=W`Z~;@l!R_FwqyP;gvWmsppVikl6WZ-48=Q?v=NT{Wnz8_wcoqy!M{(Cw;AbbyDk=K837orH0OH%_+pw&&^IEdxFzm{l{S* zmD4JPB}>PBXIoW;<}QZ18v0Xn^BYG;OV@oJVAfRy zm^*Z+^vvkN(F2;T>K+7laD=TftV6a^X=0@+l{jCiG+Ju5&Um3xxi(v^Cpno)MYSf7 z+;`#hbCqMK#!p_ToH}#i;&@zINjP!l)TxsfPL7RN&L2B_a(w(`<=oiWSK_>sIQ#Ok zS1!J7=^gB!!QHw2S6U5!zq+DlukSzM2Uo+^%>J3V@Jg#$nQ7hdb>;GG7~-XJxf)=z zD|$8v70Ok@*3?wp*ZUiDe)IbNdhK#j?eWor2lfZp{zqr36IZdh!T$4S&h9^5n>71Y zpT&}o&dlje=>I+V1w?mQ%dD?Ip z-GVH5DJqS%nts}}+M!SHqF1RPGOFP?6smL~b0!xFEp7IV`VG3#Pf+Nq=f-~tvRwa$J^d_tAMy|>nwN!Sa z)%Fn29kuiY9z79#J61<*<1z-FSFXl8~1kEZ{3D%`a0Q?=!I?g1h_zt1z4pGIO3<86P zZ}F8FInG}O+M3d>*{0HuF~J4uG+?_<6YTY)42THgo{MwMuzFJ{O6=8|ldaeV`H54N zpf>O8r&w?u3%a^`BQ8$WTbHZ#&gRCMWS3*N!qX7?^?JOavU*Q}Zv7jzriycwW@S=? zKm=^t_pgqm4G`^@)*Hc8oSLjxrvhNeS{Mjytp%)91$4SOfeHb!UBSuXG-d4pX9!`z z&N@Y>-^nA!cmZ%$wC4v_k7iUFzzmz=eTac;x_rpEPs*CL^ds0Gd&z3s^MxGtYY~vb zcjasZOp)2R*5g^BJGYAm$!3Wp7kg{HVm0j>O!Fe380JnBk$7X{vSp{){6nGQAfQTuN-OhsMdbWf878u}+ zUEtW^t{Jat5MV|y>_W0UT|7Fn|Nj6H%nImq$qq6^{XnJGw0#wXLC!2;z$MX;9kqdJ zJmwQ7fF}?xI6%t}w%z#*OGYkBzHD845Rj6Zd(H-4v8{RFg2i;?$jNuxDd3{if*pAu zhw#((KH}W~cQ-d%rAABpCGvfKP^vYTQN&25+#?680-ko_YCO2+9LlV5 zP-_hVHT^iIsmB?-h@f*CUqQT_uYV0($%_DG+$A#G$5I`1i5Ujh^MDNgs>?6c+FfVb#iplfRy&O+K(3v|F9(F<1q*9xznRqj z^liKO9OAjF&TU&CT3yPFqn$^ty~$E}^!0@(4|HbB6KU<9s7HB6E&U@%@4+PoDZ0q5@a4IhC~BkCy*Nt!wv2dHwql!l$iv?{e?? z;5U^UrLp4w11-8K@EvL(>fLBPjcq+_H9gcoI(h=YUz<)@yl+|{66lloX2y}*-(DB>qlF>v z##Ik(x1x3O4oRNx`pt+leKXv+QV#8JTq#8s1uH)sZd%-onivNlwHWn9{n5Hfubsn4 zwj{f{6|4(Tbvuh4e&DEuc7GDFZAb-7w+E7$^h5)~x~#{lZHd;)3jTPwb@2hU9dBS> znvN>9Q%Pw+F2|nK#`9{1y~ z@!Yn!op1P+NJb;*c4oPc|2sn8NPQ6HcSJbDm7NJJIQqRv-*MZ~Tf>J!Xj8B^jvkJ1 zUQp8ka^BIj60vbTAWt>gV^kgZ+yk;X`S5d9A_b%CSa z+k8%N$=>D>q&=*5Nh{vzS`a?+XlQ&A6$Ga+87N* z!%M)wl~nTt%08a-@g+bXFz@s>`~U@#|3tE%t{!3P*E@?SvuYHsE+r$*bVhvtNWiG% zL6D!k?an=6Se1lLAw1hy(>mChP0OPxCs62u$v4pFqRa;gq1u1 zf>ZNbh2JSrD4L{Pv&{IAm5V*dH^*Z8d~BbETEv@Z&CJCGsIZ#BOciYN#9W-3Xw_R< zUto*75!@XNsnB~Bg1|nsWr9mx{4f`T($#vhAQZf@zz~`u9PUBi{f}141tZCl{tBv5}!?@=cAEdXz*LKtRY%^WP-+YAP2fsu?LQ9TyGv)e*Gx6U=)* z14?~yN=7f!f#&B1lHLZ*W47>UWY1!+qNgrj!YqP*yr%78a>E{LF`V|CPy6YGvO+N5l=?2vbg#tQ{NNkYeB6E z9Tl{i`V31`K#3jyW_hiQ*qWRS{1AGjS}@asLg!VMCV#0vfB>2zNr&Ls@S)dJ`Z!a) zkP23SQ&q+Jm#XzyUnD0Z;T~XR5p#vbJ;7HIv-UE^<%H4(5^n4^syFpXCKeEsH&v96 zqXOMsKalUE+*ry2-JuAG@F}aq4mi=b^&Am*>lHE zoEbY^xj25|*!aoQuZY4>KgbFxs!n~g)w4|SCfB``pm9DwvaF~2uuTJ>oL6hCRHc*EG$gb*hXsTT3 zQ4>&bf#7^A?`G{Hg-VE(P#=geoxPWK3J@=;YJh@Q#7!P0 zPZSLhdz^xog}|Lf2xWwwMH`--PC2(w$Mf)p_jj`1kV8?`v3J-59(&&bWndof`FrfQ z;0?Lk?A=He^@Uw<&@M_8AV_&mzgv(Vogc`*%5iYq=mRYd*h7eO#048_5C=IJHQz9L zj@!XV?-krZjL?W@gUCtuq^TlcDG#G?JeT4c=ZJo86_eQx+Ng)sC~~ASZ&QM6mcHlR zD!Q1Dh}(IojoEO{7%ygpCsy<;>3fA-5wSd0hO_o=d0$zplpz`F!o4nbDTN=NcCZ<{ zMGb^bDH{x)(}q3|+7-&=P;f#7DIo@C6ynYH(3?&{s%9Q!?`e0*MagXQVZ?LFgDCPm zV%em&rB9pkYPtN(Qy|7thvh(sQ&Y^d7JHVg@3k*j-wY9vj4xWCF3%2bAuLGWjIqz` zbOxg1tz;y8&oKvV67&X`g^rweZ#Qxlds$zlO)DF%B{IgSRmpNjiN??h`xc-xq_8Sv z9xB^_&>b?sQdyeHAi>>0;gY~$WSzlCSy;RL>(l}WlKm9R67%VAW$Hzp|r z8cB)l#dQkmYrLly2bL^aNRbAxHr9*9^~mXk#zI<8fQMj1pz7uLgX_;*(3*7m{6~mE z<&7D>iC7wvw9Jfv+T0*1t7aXz57G%*|9;c@;t)Z0dP4&6=pAw( z%1?7FSpdJSvN(u8FKw(hWuXScY?Ad!V3N```9^q3>?Y# z@m<)JjRv?0zM9Iy6#}aT;03t9i5Y}m{T2f`1mDcqw=no_267Ts4#sDZ7UyvU5-KbQ zpu9ez!m9{js6WZ--;SW8*jz%qoHZm7hp$_g7H0)k{igaALjF;d%>%mgz`MltL&Wv? z5l0W${SI>o^?WxeMbL{P-m}2g%o}vpsC+x^cbx!ux&U*6v97Pmgl4=7 zRk`v@;gxDwsv&EJTc&H!I7@4Qg;G$xjt!!#;@crVqu3M~&RK?c5pTrG_yxPn#ooZTZsO1e1&Dp_ry$wMXCno{fXv_BC_twYI# z-X+T*KW;XJKFWk+g7jA8N8x`321a@e3C~j zN8AtG1w1AHV3D7a@3`61P80i~|O6GghPkyvZ-JCm zQi!qs2jz4?B|8OmKl%b2fz;Qe)vU^fIT{00PR#n-+UYPKL4gjnP;R4@j9WN*=r-fWb@X>DWHh=G3;gU2-$7HLhQ0_ioUon|@oWa;k>*#~kYuK>j{-mcqviO(p_ zGuX7RedgLHF}{41LjB&Pt{r?%#-3m9;|H)heNi5xu$ueBerPgaoDstU<^+{Lb9-R> z0(MaO$iXQ8J8WJ(i|gQ)09*PJ-4pVMt(WE0LlHMH_h&{8$Mk1mJ0%{tA>r~${f&%) zyOhG3B7dZ(8g{V5SO@q5IkKH|$73$|VpI-Rsq|>+q91mbfeMVLyw-&1PkfNng=%QB z1f+4j29|ZD`pIT63;lpWER?(bJ-{xVN>EVg(piIgq~Bn<-*cci4V;ed&d~?_RG@FD z>bd=(Of`6TeLWb$V2@;|hf2ol#h{Q9uuxd7H8~efENIQ@3BNN!L0_ZzGngj9LNNUw zDnVIB^#lC?{ysD`R-r$Ji4yFu#- zzd|?-hJLwM`;F>MM}G&}4|EIX1GE3|@PiO^Q-2(lM+!#NlD>e&ta8!pR;O+`Uu$&Y z@p`yBLBL9UYZAoFMJpGQT1L_NQyi8(4gV}3mRyXaJlyI0zUn(r)~xwX)*85fSs&oK zH<9TTfyNywCBSAvAwZP@)g~TTRHjlnQUv1)6$3?mq>zE-k8jR9C<%3lAp!JMklM(B zV&a~cD!gM#d0=H3)1T+a_93{NJ9F+;0q{$jOkfuYAo}mY4~u69KZgiVJJ2v4d0+(w z69Y8X4>ah($nHj7NR+>cCQo5v1uur z9snYQC4kb8$a2z0N30iky@m;Ck#ye6*hdhE@|^H1gp)7>fP#=62tda!z!#GC%1MT! zAf$GGvN~H2Wlgci1jodg=L&q-AiJk-XfzV{GG|$d2L+}igB6BmxMGTydy~e2WhQG= zx+o*4fS2<1XE?|O2A^X<32Y>5Ae*gvHyIj~{R-QrOMB$lS&Wnb+(rVV{AOVVi-HZHkUod+a3gZbNCAtW=%G4;aU6lHD zHt-t=;@%F1lQSQulwXI=Y0YS}ogv-gSo={g?NTq<51x{Uso&PWjl>E3y8c|e9pxHQ z$m;mIzK9L<;Szlqrx;H-391yHV2M=kSqdHfWhF7CJZdG z8RNuo4xdZVU$s55p|IkEM$k)Cp0+~%lCuPGzHMK+)y{>)m=Mb3{YEc66Ao%`k?*mrs344Hj$7M9giJ&6`PJN%eqop?W zS7-su;+3d(v0&a*3Rn{5;DZB3GU^3}&XY9`i(%g+J%S<}oeYjzud-o>?FX|>*S&9o zTGzDoO?=XW!IVH!?LTZ@FcU z3et#tv<__bKsd0tUga>4!DwKK-W{MM=yk*NPao8JsZ94)|t-{1U{%%Dd+KfVL0!>Rz^23vmz*1Q)sY+FBz)FCsbU@zN-vma6x zH<9VbJX2)e#fHB5wmo-vwGCa`pic-|CWN%%9V6rK!}w7X`{}j^qdxT7D{FE!>Ra5h zWWn0Mp*_^z2+x77(+{Yk>H|vM0Plf~@Jr}_E7jiA+%C0@*VD(ORrobb4`KyjDPP=% zcD6$|3Q8SqZudzm1JX*LS`S6Vrl>ewiUz|67k5OPpw1Y43#$ZQ7pzE>2c1tX?hGG_ zinr~VMXY>3VNIz1qt|wYyC^tOUy6BsUQ7lSEbq4d>0~be0oZ?m1YnH~P-0Mkdak`C z+A_TXCuGa?Zg|7|LAVDkZvmdhxw@2XZv|P{8*ODTx9w}csq*ayn%l&0=1>?eDr|y0d54X{;V1T4jUd5n=Op^i8WQw zcDdIuuf_>4FuDUl<*x&mh>73W7s!Le*$x+}e~`HvK^Ki8%aXxQXw*?eqGVO*SC9DW zki-$Z5{%)%N`wh{LO}$0&A`N-rHOn5x?iClZ=kW**0DVm+m~azs;7})MnOyoYl2tR zQ}=n`XAjq_jmxTfb27kaHL~!3ykkrUhu;bNBpnUsVPp(0&)!*V|^2;4|Ux*`<8o-|Xhg}M*r$~|TWEB^Iry_|tDN(@ln z!zR9w0V#i+u8AdF{{&M=FpZ%0pBVcBgI`1dQ#cLZ>yoWb?9(u3jci-Pq8jgp-$k8r zuERA3OYOUD-ho#(Os!zZjB`o)@%$j)+**f>RgrN~mSN|%uA#8D3EHW-x>5MX?i@n-&g!l z0Y(m(m|^^ego$!E)#z)0qk#Mg>G3Zyl{m}W6TE$Pw+CVoSb5B!ze2*=wa$rH#2OpWkDS>- zTmLOf{tbc&GW4Cl6e7z5p`h0xGC^Kq)XNVE^MIk@3E6?n9T~Z1j?S2p2PW2d<43OE zL(g(Nv&NdPT#b@gE0wqGRAe?#Kq!X40`Ze z!tPSQ1H@3wyC)^Y-KY!U0(>nlCq`w<{Sa9Wo4bf5qS_V?0ifV69QommO}WXS-+zco z<_--}iBLr#c^*`w-f^K56bzPVzqM3YGwNSL@qHXMnRJ{97jWxnrs}^yaJR2pzPuzJ zFkRbEqRYxM{%KHBTpxf$C!V)na;?Ii8!&tpx7+wDf~Q9*fW{6{V+)N{?iO<8^x~z~ zLrN^V&^~xeP*Q`>fww#q&rgGM@vgdfrnNF@`dO8R{OGkaQ3i_V%n|Dx_+bdF9@Nt? z$t=+EEv4XF%_sC7e1dOE-o2UEK-Nqdc@o4pKJ*S=lgecM5rP~>k%N{6?SX&E>yLnE zFF=z*AviBj_SlP-MSMKYEi? zzNJ*rya}lHjTy$r=YAb#Aj%gK0D%m{2Tkx*F_>ZS#|(}zXfmLF1_l?xO`QFJKWDtr zE->ph15zMOn2ufC=uLDm-Gc50p`feiwz-A1z)I^S&uCyelmXod=J^DhCYT9St(uBZ zupVAxh1!tUtIVK(iw*YQ*UuV|{$-SU$^}Ss$__k)L|q4z4)p2_ID?`Hq^}RqGkm0+ zcfe46HSIZH$)}vZOM|h3-%*}kKvd>QD1Je_lH|NoK-mJy!cXe&ynER!Nr`5UUAQ@q zgd%>&MdyJ%q3Q(kgggIX=sSS^7MyP>3*vL&wc)}u96lS+vAI()(jX4_e#-@ie+;k> zbIcSj+9-DlCxFJw2>QV3Os5pIcuY%288`@;x|z2;KrG(nv>X-r3U8Ee0b7~HJVpW& zivA$v<{p|*mK^w3WS7$~CFyCVzYIF!;okzslRan!Q#Syi{PzleFI)53umIzV$Qvws z5oN>T+($cQm~sO+VRfk+rp)b5nHwkpwNdQcxGZ|_a&~5>foslm*o@P-_6)6?JbkSt z4|lVhVeCHk( z=|a()@aeeRxI$nbL*v;D?~~Dm4IqCnpQiH#oRIE$u9z+Hmi|gH3#U79ASfZBb8G7# zIk%h=c^w`I=N%px4>1j#ZQbpsx{MCTmpWIINw7M9MEuLdi^r41OOfJF!J3JmQ6cE5 z(3u&KJg8f!V+1h4Hv-S<+_ zy9j6QTC$MtT0 zpFs*GhOzN0Fz8RtHYe!9QBppH77%G(h@0#({smWBvvpOv%odF8MU~*>(VUV|1o&`3 z>54zAu`{)a06O3+eskHCfQB>fS*ZmhU@~5M(AU^a6V3Qvzm<*#wf~oOt<#T)KxqGK zb}6OGBnp*tSY8|+C_Ifo^#+@Mg2DS4P_8Q%ptv;-1Wg5002kg0IPEEX ziy+bW182kI$*enk41St5pF}`se9BA%FqU-)nUMg4@?dh&bva#bA$Oly{qNAoXL(e2 zBQo4m>>)iO%TNDP3I!A!j3&6>#oIg;Krbd;g})lf!qEM{nMjs;(P1Ot|V;;R6|mN7-(C~l3c z5W)c_;0(erF=#>8i3wo>-u#~kKwXfJRCL*=_m!Hn^*T-fzyHC@B0Lwc$A&nn___u` z^|8|4haVp?qLn#Vvo%pWh%H>fpgjQ(9BL)#Q_sW0Hh8z)urtQ%CUJ-9;)o8FUTh{k zcaES4aJ0NiqFj0su3skq=aGPWN)}%klwi72C~VSA%QTWzlxx|5mpL( zx&#UoO`8}Yu|m0h?UsE7h5vJB%d*))aRvv-F}-WcI?#r)cJMrMflaLdJ|KiI#%a8H zQ&OR>rW5K;1(=g-U@%F%k>%}@PZ9o7n+3CzfqfJAQV4Q-1i_r=NOHDOkPBUE8~={SyAf2z9@*kn}Hw-{V}5y@-4abHCKr z#=RQIq!vI_Lf*BZYBTX1pw7%S3^+H^xDV)mg{b~v27)YhGWKr}e2E)F!s^`GO_u@g zWEX_3Qt)-$48$z~PKJW(cCn>TBZ$4}7Pun}HUXIb#+dXb{Ysa2k;ac_1VoYP4301O zh=*{5HFM%V(gA#jrt^7*yU&6j06Wkv8!nq2-z9lDPri%673}8F7h;0Xl@AO1{$D++%7i8`MK2$-hD{)n6V5!Mz=r^gF%Z5Maci{K*!UBE|Z^zN$@Y}9*idOqoGJ9rAp^3z$U_g{ zyy>GX`5^|fQ!BvnXGr@pcdCR4u4#aH6g`JJs6z2eaJ0SG|cYB0` z6a3R{3?{~3QQV+gS$Z7j#O?!DEqD-Hu@m0gVCfh)b|00-W|%j)b0smjaG@kVn?Q|) zl!VOsk|^A`2J;6028OCfNn3QhHSnoYk^GYJKANHVBCddVvTxTg|bDejpQOPzEe0 zK9G>-{qc6@+Gm-{+3=0yrb8U0GJeHoaQ-nv$V$~^4i4HsuzdlzJKpUgiwWN-^MMsZ zgaQDAg>NkBLwK5(XR1b&ZXm@NPjnSg0V*j05@ra$(0ow^Ot8Q-gZDA0Ga#PQQwT=- zMEP#?0fZ?*3x)`NnXd~BNQs1c80KqP^B$)Yzl&uY1o>Y;{WxoI+y>r%i!stLa&>g> zDEB7UKP%?;mCS;?SUC%E&ZMn5A74Q3AaF{+8F=Y_>SXU_p#*>)_+AzQyqD^S-WG3= ziTJG%Bhu&7xLo9TUn=%O@>y04po}O6DD1OjoJY^?dT^hu>8v?GR#3kx_ zd_9Z4vB3nfTIY{(E;MFq2j76m{9ZcNRD^mOh3x{=wPAwO@bst)h59Ka4mWV)nTDx$ z+2O`ogwHa82AI!&9rz3;J3Jvm!zP1MY`krZ^UcrVwWId@WoA(;VHA;{VN5pebBvKz zh^_~CXdmOh!9bKVJJ9G_JoM+ty})(mt~-!4p*e(_#Id*9-d77)P0bQ_H+1{JCL-kB zhYX2Wg_uB}*T|XO4zt8lTu50&g$T7Mu$HIs^$CYOq_}ZHi42!bTW=AM0g9npKs>-V z!e$571fNh6+=Q|&ziB}Mv;yBM+;7I00YuSEXHb07Byz=-#jWB?ibnK1>rYiD=1MQf zO-|x>U~u|gmuS|3KX;2B(bcJraP@Lk(~S`yo_hf<*$_BtlXIqkRQUQuu!MyCe|MCW z9RXLowO!6Q@iQcgV7Sc4oMF`2yd;@-UIte2S#Kd ziCFd8!w(yj3N-|W)|m_MCA0t_y5swc=}fl3aM9ZdY8A6OE27oeL?a?>P-h8AODWEE z7Euh5vWRAOf=yvQ%ZLbZ=G+8esO!(g+fhQ-W<)wZSyL81QkkXZ7T*HAVszd2da z6~6s=3kt;vnye3?vL0rzo52MHU2yCmfjwPhPsFzrx)vcXlL*jCvH(#`{{S)|VMt>? zfw+i=(6o#)E~z^hlVB%fzlh+U@N5yUQb#^doW^Z`mqCt-KP6qk-et6~l5Js&TNymS zKnk&gRdi#y=Qy`K_eJ*4bIMyoAR74k7S0(iskiiQ9_){?2~rYiv4cidsFD<7B}22; z%J}l;h~^M--ELh+XYsAX~8qu?}DUL(8d* zb+kp2DroIrGXFS(AN$%R_c7~d7_8Khp6DKo>HRvhq)j2eD}DY4<|i5|N&T8F$(Y~0 z2dN?|d1ve{MD5@BU!fP`AKv@$F~_>%t@topwhoMXU}t6EA( zgOpseeCx5XSbpIPS2jg@x-XUa_ivS?uI@pkD|`|;8G*F5I)BXwwsQolXSK2|E3*>* zXl2u7E1j{iuI*acZs}p?@(3Pc54Lb?T@}_e&og2cO@{OVeyw(L7N2It*J`!H%s*kU ziS70>NFj(ldiHAgA`jk_m;z0~bxSca{j=^g zT4&1ZmWy=UFUkYUNy}fFS=CYlWcghYX7;eS9s5TxOe>f{P}oEvhX3fIQnDX%3ORE@ z!DwIMmg1&!`Sd`JcP_1u77payq0Mk>Ii26y-Fw$M zy5nlqW%!j=2Rqj$8T&U4Uj7v@xXKt${scy{7L#0xkoQDOaN@1d>e(&3S7;S_PRr>P zTSYT(hoxS*RqnYh7vq9-!iip`RRLdYRm)5+$%?E#wp%rDH8}}x5?ozQfvba?mNVd{ zz|G1t;HFhgO{%(@Qq$c+Yo^TBnLI1!9y2+2C|a`^&C3Oh7S!ya)jA^=H(2A`!JplY zbg;ecrLmW4KT1MBRbFSH_mr2YZcjyNLbAResuYqvKOCsUJ1>RlFADrZ~f-&yUX4~9bj$bZS8xXDq7izz1u4Cy zblMQPxOpcped33qzZI$@K3XZ_A9w%q*T4P!pV>b?%$;5!WvKGPb{P94^^B!#muXk>4JJj#XIaLU*oKkMvmwGDV|ZiM=)EH? z(tDvf2i=CLDbR8haKGyNPnKlw?JOA;?#w}hL`Oa+c1v{(R5$> z9FaHO!11wC9UuEMQZ>iEL&xGd^&Fc44VgAA#mefI_QV$o=M|n@AS*a&D7?ycWQ8q4fjqhgw{xVbJNSbW*n)! z)E!6u5d)0mMdW}ERFYc&GF^l5&!L(2+etb%y1$rWD@|N zpJedX2kdRDM_S2yc-w%YN>)h)R;_1cX-Vr)469K!D`yT#v&s_7CXP9hrB-T7J1a@P zz_KDyXjK7ohM!}zOj?vKhkRH&(G^A)^h6i@Dc#8v-Gb2tJ<$b!O1FNZ>lj_o6J7A9 zbf+@$q>$CJ$vKwQ@l4IJr<}6~i?aB{$;4AGOWOibRBmdj2f9pzFy`og#4Qm=So1X= z*0MiazxHvXXaFuRpiXwx2!E(G(BA{e9lzgKk<9J;aS%18QF~Olt-nj6;<$RYMDQpV zkJj*9#M8@d-Q8L<^kQBdm)o2NIe(P%hj}6Cpz7va=e(Qqt(^O>BAwe+>3HwYa8Pm{ zqz2%%#aV!Fg%kXq<)#0Y>=H(cV%b{e^q;qC;$ZIO>{)rSQ-ka8V4sF+YbhQIFgL~G}&&yRGd+83<%6%msh?+e;ad12$qyU zTqdgSH}#sC?O@{6kM86uAq64OF;W9uJr zsNHx!@s5+4=FnlRw)>E#}jdd-WP3_D=-q>BBLA#J515K9S9Tvt~MQAzFmW9VG zb0m|_?~q5=k!`~w@~>#Jp|rq+Ae6vNd4T~Tiqe%6qzQy50zb{FVI?i$JVzp94w1#k zY#LQ)G^}McS=_bsuB^iL^4NBEzwpG(O27sem{7^8+m6Yl_a)WlS~Hw`C`)d{!W* zwr*uj{}Aje;gq|V3EVqzuYcwD5Sy|)%MLEQ8W1aO6viNJw^uHQF>)=r0_J$-k?F7u zHV_z$0D{WX5yAHnnQ-t<#{~E|q`aSR{0g0K7!S0Upk-2xiM)ieE2%lk-6ZvOnmi2B zoqS?rKT7>aH?)p5(i|nEKgu%?yK2f}%=W_|%}X0M)^Fcve!h_x?`#---GI0;slQLE zACs!pOS-vj4k>iv0SeJ2n&yfA5$RkYvOOa=eCK^xLo6!upK3vYFG6SzWF>uW@)VrrxhYZUZl;y)yE z1tc%F+cNF|H9n`QH=)K=2oicIq)N=@HKA#)*>FbfG2M~rkxjsi4l|*1R(}Bz;n(&6 zEk5u|Q~c#Nl7Gjvn4^}?G0=ZM+Ye zq-;xA0c~xd>7oC@KIZTA$ZJpj3psU$a%{&90S#w{L-OM{Gpl@hxxl%mcO)?zR_iIci5*ZSPVOZ}El$tvL<_YVm7_gSmN*#@bX zj`8F=HB(WRNta{2pw zo>%zPf!Ff*0%f5@%Q)@@R#{j!0~~(v>K=VCs87_7LVdY zjBcQ;^`eX?Le@IDtgWv7^yG%B^(R5-N+aDc&d;k4o*LHazb>ym{$&$!KQ~?yr?EEf zW}YX;mqHI@X595W6K&-0%>aH0z6E?#{R2ut56KZZq?{g6HO<-B(X4Rx=^wO9#x8fp zUYQh3E*2j5wqVZIK=Z#MV{fu^>=(Yeo~>x-(B-AVKVtIM_8jcEr@g}8r##ql{lmjq%eTSWfAs}NI~++DbTk`Cq5eC8m~0k7=ShY$z1x^Qv?Cj+Pa z65xq4x_w!f(Jn|>;RLvyT~}3j8M0S9A$T+o$*x6~(K9}QZ%HBYY3#ssjH>cM{JMMV zo8sCr2X!>N8S%Gv93!1jB|#ePseTgc(cJkEk!d+><56!00|hC+iAc_U z4|Olk!hXIhWVkud8jNr=Qi6w}94O5pF4TFq3r}sPLy_$?lX&xF+ug<&cbY2J;&wl3 zZ$(|9norh#Y+fkLMt^9^%UzL)y}n%e8XlnVIqbJ3GP-#&Hk2abjpZb7M~PZ#oNkM; z;_6c-!1W}~gsCVUNv(Ec-7`}g!%Rne-%FWG!=x}C6neX7oJ3^Cvn-p+vnUyeNr(q| z??RNVeN#GVkb23uN+cbLMJ~%AjFYOaypHA-G^vvFXk10HfF92R#;m9>LCjE>2GnIP zWwZ*vfPsa&!|1GCtFo${m)I=$+40Qc=;}L3Xk*^r4Ail1zQY=r0i_^^kozP15!)bg z4qSCAZ{oz{r!Y+(VbNM)(FS1{XR!`L{1PfWbcT)={&)RJka2kg9AAU5x4<9}%%BDH zF(?)cIih1$utN&{PocZ$5u?!g&`)grQQa}6FwDd*R271hcm_C~cB15G=&+bCz%6%V zp4uFJ3n8|(DnOe{M~fFRpGLl((}R8@CZDy>Yf8)KZ*>!P7Czj9$2Kp>3;fXzK%MZ& zY{pGVM!RXw1@QVVaFwpmCxx?$=)9U z)lMR%QUM0IyK?KBwYOk`&C(NnR8PBfP14Pgnz+VU;kVuUD q2!vsAZWC{OJ?zI>S7H^}E$_O?1k00Gtk@4L@>IPPK>JkbW#>Oj<>9UX literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff228794cf1ad4974708481bd863d237c630054a GIT binary patch literal 2057 zcmZuy-EJF26yBL#uh;9}SkMw^sZkMNAa*ObicnP%(hz~1su5f)LaViB>};}s%#70{ za=9RV1Rfx{?5pqybIVoU0Ocl}GfqsBGSbeRGe0}ue&;)9^LpL4pn3i2&R?!&{f*A` zRs!d#WfA!&7|dcMu~HHcf;LTPKw-2KJ9PpF<{VZ^N~s&TX*no^Pa}`rV?L|Cc7h7K z&zh_SmcL=KCDwjzu{JO7R*&tV#y(`r?0s0PbN8gdYr9Qe#ub)!mEuqIg zK#$RFtNY*#@pg%>Mp>4tNX2<32jJ7qtuum4RF^i>Xu@^H4A0_(>+(*Nv4o5BdyBc= zwweyVpHFvYok5;)?Fz1@BGV3fBYfLcLmQtpB*z0|W<@{`0HQ~s-+{K7NfjkYCn}00 z9vNIKvf!h59FIC1FE+pJ#E7bMiKOS7Q>#TJqV#HVwQ~h1AMWyz>X|)*H$;2k<+&~q zWw`#0CF(Go|K8upQ{HDgV!Ge|j>|oj7yaT;?c`ZlOFqcm$Bk2MKsz2#IpZ<^T+;%h=<6S;qQ4eoy1wMIMgk{ zC$Us;&n3Qh0hOfCd1cXrLA!Dx)msJ2*O)uSG2Nf4Mh*MPHJpxni z#uwu?2!0K(`WXxb-@Hps;Hpz{Ok{)6S47z}u>T-t#bLH8?YbrloS7AtSqXX%n5vvw zujq`5?u?!QU#BKlw;^8vm^(N_sU9^4x#~o75sm>|{LjV3g(lCs)NnW_vT7*NbX;gh z@QCT^_F<-?gLNTtp&iNjo~F6f-uC+X58>KRFLWtPbH-ti@evM54yT;F;91wk1Ibw1 zshnsR7r3|`l~RaXzW{*p9q3xbAs%T_*LI0V9nv7q#nIiji0zqE0>A49r#BK5$yLYz z8Hg&_po@nv+(IBeg1J?Aj3ylNzqcXw0T8u_`jk#08cv@d@HWAlJYd`J!?Kro*T3NYs#LIlz%m8%;B>X`G%{ zO+NNaFP34`d1Z6!7n5qgY7c{r7|yFw2`F-AeuVP7YRD88eIvz3U?`Bz)RGlNz#_*~ zHbIQGqB9%CsH_uvX3fZqVzD+Nvj-6CXrCWFFhvf{t8&(X0^Nz{b&<2KBWiE~)?yhc zC3Jaf+lWg%hG|&+5(e`PqL0?c*xkxx&>Fn|39OhR+%}qN6Y(|79F=+#C{pkuQynlq z*P`akE5p)awhdO-n_s$uv&f$4VP~#KGOnF(V|>R`_&q>;1r|7QA3E)-!y?Wm0!h`D zKrRLRSuOLerUIJ03hImEiRHlr(4Y?LiwcVAAU=n)*XHnZgZ5$zKTtfAsGI+YS*S&O h-^>O01d~C&2VKqgXbqCep}y@m+Kzv>dwt`xIWX|Qwb-v{88Vleo1xdD^$Dk-MvQ&Su7X`zfeF3apKXdO6dp+$S)5+QG#D!W;m~QmZGao&ywJIBtPh4;?gEkCVwnRQd`mtS14L?}I#ney*X> z+ZfNUKoBINoB+vb5yW?_4*LFP1d3QzPISg7?nCq3glck1?STLj*gBDz29dN-LONyX(2IeS{YZ0 zgq!B}UZInx_oOVPag`9ehLy_r+xPDM5a0RvCsT{_k_(try2L3f;g(xgqUbw#A)6W} zS2N?`hLCSYr55ASufYL@!RS(#`n1bD$D=-TX@|N;%L{J-JFvGTzUv&O=h6{hr4a!- zl1-3-7oWrQh6geP-A(A06E1zHHS~Q1K%GYNL`Dz#bx6awNOBR!CWsM_MTT-Kj(=Yy z+3}7yEoGi)(_7CmWZOih6&5P_1$@Rja>hB#V~Na_m^)uWSI8lsxPVc>IvZARSehR; zZT1c9C_jQjhmEa=zuLt5&G;B>^x?3nw1kpo^%JDuNkgQt%v&m613?3I7DP2P1&Kaq zY6HmVXtr{YjGF8_E3%?1hUM9k%o#zflgDCt8DkZqcv8GVD92&Cu7ZO1UD*NySb0^V zwKVmI+m>7s?ZPfn!M;HbP`ZMHh2j(sK825A zNwh3E6FGNX9X4^x# literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c9e0e285afa1deb2098fb05fff398be51ad5934 GIT binary patch literal 10349 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e2d828ed915dad7af171085357afbd28a1085dbe GIT binary patch literal 8753 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 z zI?PoiMzq_9v tkZw$q@^6vIhO~;}GRZsHf)%_cKRttQH1Eyn<+Ac?3m50s=}XIk`o9(G0IL81 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c2ef6dc57ed45129837143b9b96138c59d998244 GIT binary patch literal 7214 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 U1r6j_F5}M$YyAZLCzz(hzu6j@ZU6uP literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..508173089e548ee6f0a42f3caab43de4fdb43b33 GIT binary patch literal 7425 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76ecf1e857a3a9adbaf5015e13214f526eb86f1a GIT binary patch literal 27438 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 N+dJF4+i&b{{||-AnNI)! literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76134685f01fa6f0e75f8d3e7cbdbc690e1839fa GIT binary patch literal 23118 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�#uxD4dXGXJyq z1>*>;LRMfEeDsUf?V>$+f@K+QjWy~)_)G%B&kcd@7BoSLLyq(x0>Tympc;5rEyV56 zT(lPLuJwYU4s|X4w$oU3x{f*&A_SQ7z&kaQX{U|n3ahEEy$*qBJ=0Brtfp$#O@RFK zE>g0npIgjB2upX<>WOZ8eMDL;+%)lKEsm1R2B#l2UIM8^8)#*5bg`&g0O8DZZS?SC z&swY5RUEO!F)9D7l*ilp_)TLq--U{zZK#EA9_5j`I?~OuoLcW@`~9sJx`jBk5N_$A zF$i-7)>)tEVoauy)YytKk7B-~;Uwn!(@Brpx}(S`hEwa?yG6uC!X4{7yCXNvPd>0Z zMscOFYw51lakRwV4E0-RW2`&AxO>e~ztznxnBB4Rp6=NCUQbpDvAcQXyC!Bo#u1S0 zJNRF-O{1ATY6QQ39jW|(8o%d%SY~Ug*OS%wdNQ_&Zbs%{0)3?BN(E5WdabNk=01}E zF=gy>y;c(dxzK1Y)SJ_8iRhKZ6~&2?L&8|fTx!psJ9|1%Wu!$ZVYwmVEQ3sVrBRXf z>NT(I)vKY@FXOFbqejU=a8&JOQ-w#D{e^R9&kN%YO3o7$IZg2P`fNC%-)N{GVGkg? z{W3KA*xP6_Gs>i;yk=$~@&=_; znaxKIkN)%)Ic=pv^=iH0l?A;8C5H=8axjaaR1DhloSa_0pfo!4E`^SYs8F&w>wLd# zRIIk4c4~}pehY1hl$OTgPTt z7cJe!PekwuvoqBn++YJ>)7es$Bk29bqtPScVv7hwH3^t42o{biLg0arLB&U z$OHC-3>TCHl&q#x>LebK4M5bRBsJpbA!5g)?~$cdzj{qmd@?-?P^hiULG|?rYW5kwO#vef zNvB?0$#R$!E7GYvV4*YKUus?8mWGTOazry1>NotxscO}S;Hz~JL!;l0cF1$e=zkAD z!O;grj@~nY@{69eYKGwTD8+@ghIfz(a==EgvkSeiaEXvT7t^i#D5)+Q*f#r`wF&|P z2@oscfy}B0k&|16-fPuv^33EHM^;mkn?dfwNGYtQ2XaS2W^MIVw&yuJjc1+J3<>9I zJ}h?g;TY;X)6GK%Z`W)go7roY`l{rOBk!viNgm_KT}z=2lq2{oZebbyhPh0DE%<8Z z6522uTS5FLQ6jx&esU6IbYyXBx3IqLCi+Hv%FDk(NjwFDW)2awpBW@*U6S?fo{hfp z3@454>@~H%{iXph{xxr8Xe~)>k;^*W4C>}@Qi9***_wOM6B7XMOq_XHo|+> z?`0WL$QU=R)7UrkZ-nSieyfK8bGl&Ri})CZ6Xwux!$@ASYJaBWscn_;)Ox+TXII=DK~1;er3=)uo5 z19hK5j-k_c8jFWkw|2L7bJrZnL2QSyIspwvsyne}u1;c&T&&SdczE$h&H9wNvI=Qs z8>E%-@F;5Fyo;Q&?W5b84|&^q`_SD6orbxJRMBZnV%>gH%746hpErfkY*{m*Dc=tL zd2$N6Te_3mjnyrjO?S&p6KgbuRiE-48THRMvnVm;nIDHHWOd7@%;(?#6leY};sU&- zd-3ZrqU&O}%QzkD?`8?i`8^o#m+*XV{LHVvFTo>RZ|?4E9A)rYcQo$xweTUt)7}nh zmHX!uIA>>P|Ks2i2E`sxlT$3E7Q`i;nCnbcMRVwqqk!N6F{e&BNr@_kI4;UDt4!AA zY#bLJ#8#E-uLE(=@B@`G5lv@TY;!>?lyn+UVfwD$Y_%7zD)RkMKG@g%mC^_YP==YO zR=@EE(ueivY?M^^5+(NCh>$Qmm&bYo|3G?&)xtA&8b4`0PwSJZDE(p(4kt8iN7l@d z$Sjvqq9NYMisX;8RJFCVeB$W@?HkZm+)m%_?C)b#&UxlIG(VL_Z~~EDr6DBBMC@y=nChbUOY1n6QGe z6f=!xRhKzLd#SRliS5Vunz>pDsMSzwc+<3OiLsX%G#HTgR_|o6z~F}wlyc=KPF;B7 z{OL27B4>#Wk_!gk1juN%qLEXxvu7?{DqlQv>a?PELfyqmc@%`zhlV{BvV3N_((uF3 zhu*oa!WBhuiAK&XEyFaRwP*zaU%=XOMNwyl3^5dFc0C7UkP2a(3!t1)t@iT#N|f`P z?Img*{Ah$sP^=1653}to*a2D4D7)NlG=g%?19Rhtc%_w&7Qh^=5+bo6Q@3e>1V1?Tr}Iu>J$rQWxSA1gf%Gbi#0ui%Ehv%E6OYg zNnJ#5wI6k-xA*1mQfiqTKq(6|Qd!oQtt;6W?gZno{ zD_v&6D6P+HWY*OVt%cdwni-$uEr#Xoj1qf<2r_evd2h@RP;#NAF zrWTWF>tiP*@elF*5SJw}bf zI>|m+fYeQ}S!IeHU{S!j>_)B$%>+aZ&Hct4aAaPX&ZS`L?XNCUzZc6j}1?W zEc<4xrTR2-Kg0c?CNPgZ$Xi&I+kof-E0(z+Gx@jcedX#kLB&hZ;i)tQBn|xVsB_NK{N~ z$Rap0aD;b*$FiWz00n`v#-Q}pHLqzD4V`LiHV8`DUaaE+vH45OA$5KvdoH{I0@x$) z@_ZYbW*-9I2~PX3F`$A=@QRva>>2{F_@Wd0RVLicz)gaEhylg0U5Lk!4?fGS7)NT} z$~x9}^9~LLz#3q+tq)cM<$EG0PpYDQQ)A_a7$ZGW??>>e)sI6Il5`*Gz4!|Q@xQ{j zqeN0-ykE1|%1gS0OlNCSf_pVRp^h-&D1&z)h%)7}*Q!E%q;WxU$Fx3?x>fH#Q$1flz%tEtZ+2gnK@5hp$}~MW(NqXEl?w;*F_l(H8N4s$=^Xe z^(-Qt@qxZ)X#BVZ>IVi+>xkcOf9jtleYlKCN8E@nu%ll=WVj<9Sa|rzWYs@qjRf58 zO#KbyLzO%X9GcwQmHBE^tjt3n1Fr+^ub=_IWuyH-2J}ym_S+bc26StzX3o3V}hAbgoZ+BfRp z)xf^fr$99;4e|IOW@1mY8b~u*r{CX@|0kr)L;L#)3~U_&>lv|VDq@78K6r?Ts|8Q< ztjDT(D0YO{ZKVXeNcqa5e-g9|8Xub^fY346U7LEgV6RrGlO&d%u1$%#Of|iIlL{ak z4ivHMQme!K6R$SZVOosoq+~VVL6H(pNnOWCG$$(<<|BBe*_fK&av4y|0|$ks?4)4o zC{-6x$Yn(d1PWQ3MhEc=qVEK`i9C1$aw%D}GcmkKZ19$(#Ta5UbqtzIP=U6BnwX;1 zaSuGwYF(Rl&vJ%1A#nK^f}|O3C*72`{|mJF8plaIx8N^tHBAz>#GhB(@w5d__#r zcbs3s&q*R;V!+<{rPmI8JuSGKSYY^VKP{d+7Tilxh^LPOqTpbXK|G5%ygl*D!`l+x zm^k4h-d*&_M6BTL_O^Hvh>gO{M7yID;ftv~G{?lN@$M*np`zdh)>)Jzd9GPi{t{H; z$reDMK=zF5ilI{bnADeG{bMO@=A?<&gIQ5psQJEkSj<~=F$^eU&}+z7wMrFsPZxi4 zF;}Fqch9rr^H_sUL5pfym!|?I9n_d!^nHv%7&xt&depqI(vMToElj(%pd`3@=-6Vf zL_;jcmPN=mQ5hKI9wi$EmPwSEcIR_4R*v_;Y&?-^_o5FeNRUvnE_1EW*SKz_)pm*R z#IcQ@W^zW8W;EglWW!6e4!H~7ZzAHjsCPfirdWB3vTnuIZU0dGOd9AJ(*yQG)dP&X z%7^F!gD%I(zq!t2oGCeR69L3Mse!JVaCJPC>)OjAW>DNE{-uRH;&v zENl2jsK+%_Fp$UQ15vG#Z7rKk^7lZAR27zq5G_?l2=Io=@B<-il+34UZV~PYqIfmo z(j)4nxCShoJ6M}?gVYOth;@Pw#Qj;Y$KhR6Ra7pr41{rQ-WL}mql=@2wC5x(1GTI} z(nw`eZ_KEb^ckmRRFkpJo-nsg#T0t@VeeKcX#?HdW+;g>o7Tp@maM~9^x{xfPR|8CdfW1ER)aRWQ&5qW~tl@oniY{%< zdT`bE^dZ=RR8a#!$5U@As&~{)2A^lJpFxvBivdmW+IG2}F_C~yGWKZ(pJ6~vkLXR* z-(if%9L|)&+Vapr9doU|to{M>ewo307_e02)EbqA$n+w!6`7R*3bRk=Vx8aQx%>!T z({MY2#6(qs4I>#uSP||K%hHVrL|KG-dlFB_u^d_mci(nir0T)CJqf2KkZ!s*LHr*# z(_ktY&s&|5__Pyq-+?R9yFTaSce-FnzQ6oSw=2*EC|t_tfJ|cUJ?%)6NAfbIE{%!J~r+MyF1vDsW-w zdmjy)(pfqp$%(=7^D9dOUO#Z5p^tumv)NYiA|XZ#06% z>9Ktp2|masq`L%JDp`y#FhdsT-!S&?81Ovm$+}5Qrp-Zp1JD`lLL^V_I7KfAdM*%` z<+J(6^LEizET^Sx4pQ*rtz6=ftWF~F)(EW=&xnWpb5RD`ar%Xd>Zj@;zxS6$B#)o) zCcln|7RzAP!-4alJPQiqd<=1H(GFo?74u;V*F?x)WN1qDQj_rMS+zS8@b$^UZwUu{ zJ;x&o=VYqmER=QDQsP*=7c?G@%8R2lYvlz9K|a%wFdI})Z>Qy)#ikx-uE zNJwFk2I8lCJ$PxDobdzY{pCme2D~UlCr7V34a#>~w=~g>32uD}6qNFuJ9wVs%-ZrX z$XGCnZIVYj(lPfkbGgtO55)E2#Xjbq7w=n$2C)T~WRag?@BjjuTy7}roT0V4KgHM|F#`@#a>qz6M2PuA&SEtA zBqWSwnn8RoaY==;GGt9Th$k8Q1GZt+u0}Q(jsZv|kV0?{u)NRnbh>!Y=BVd}jyz@I zd}g6HpEUQ12Om$Zb6foh3aNjO;8q@TO;39HVecanGz_C#QUWbbbjk%Y#uk*)~`bg|hH=-VCn$N$dSpa)X z&BO)KOyt4tf~mfV(%lh^4cg6c6fxfSvAU_3aAylG7kNCMw|cSb+I=N8U=qBn4Q^xF zR>n0biQOp%9L+=tJS0q1lv@VC__RK$bySFoJt%0EmseRs`b;AgN((o7s9)kxcZy7>o#XHcPJ_ybQgt_OMEbZ_rSMz?z z-@F4SoDH}K>Ly~LfxgRdorb_b%tW1}80V=gt2CvBOQ+7Bk-HCUUTYGy(=$|yGBRE= zlSs@hZA6{oaqOeZCpd&e5rWAapFhE&A3r>QqUWwGUB)eNM917YxEAudW-Yc!Lw;hV z7~S@{vYx~Qd`cB5g{R~76Kv!7;rfZVGFqV!7LW8IFWQL~HkPH_x)!B)7C6boST2s( zoIbnmb6C*VXa>pCBt?rL!5t=pn4_=mMTHA1v#?)RFVO?B&mInK5{_eE_q7`@qGiw_ z@Crp6389##UREP-+;C3a;MAkkiaeYf@Rp676@;6qlf(@66)po+M6_@d33j#(jxV_+ zb8F{Y-YvXih(Jn|If7D;_X;HtVwHe!un$vSrb=04utook}{yT&J!C*79?IC1D z95jB0Yj!4wh8tgR)OzF|$NdIM!ZDL5zi$oHMnJYU03`EQ%ozS z-Ld_I_LJQH#}Vmm|G<6DU2-Ln+kaQA_f0|D3lBJeL>k&&t@q93w({=1Xna%98E?h5 zx=|*c8+Xl98d|B(SaW(U(BMK0}S`j{@@dW!| zHn!ms>JX9Tl=z#)dcVP@WXPhfgK^?-3KFN3d7gLdX%z?324hZ_WPKai4VL{XZthh< z)o_En(x`XjZqyy>FkW^Alg;b2Vg*wR5Pkh6P&w6F5`siF9KK|sT1mR?%j#5cC&_bA zgvg@&9!5L>YyxNh3u)iLoZjHP@)<~z8avEzfOniM;ss7#{SG3S^5vwHw=w0|t!H4a z2^AY2uO8!Ohwm5A?Vn?$a`>DyR5kHvdoDv?MuE57GW9Jz>Q5%4o`vciJb)~!2ty+D zVAp!O`wMctUQ~#OgzeA*(ZC#_8i4w;=23b1R;5MrfZ+RV5Fr});z>M|K)1`71hP-- zc>OkJuD*>(XS6qO@wA!~p7oaYHP`OWoD5ijS-3uHU#5eoHgpe{IF~1u+Zj+&(XiaL zRH17@%7B7=HMN>3r+$Z@XNggKNt&?95u4)^=2wUPwCc*nSGrr;x|nWCJpF(qYWm z#nj=LTXEm5@5=LVAGmSkpu2+KjiY!ToyMg;YN5f%Y0j$(qZvNmkTgbUO3b=M14+(X zz!$VVJh+<$o$Z%Eum?E1roRA;1pGyTqNBz9SP3Sh_Y#jEndlrGu0(_urf8MD^vP$R zq+US=N(yvKanik#b>m3MS~(I~H;zWu%F)f-fkaPk**Nj{qDFem;bj+im`#awnF^vE z7MY{n_HGDIV4vRX<8+)286%{8Aq;Otsd~z=Z=#1j{pxAbr^txGTyf7SqnZ76^;6 zTO!E_$r{+noBq zT}rNWKBd3E;y&GKEB8D;S0i{^*jmbqdZfoG&K!~h8ys3*IdMh0KdZNB8umIPQUdhV^8a)m#K3hxD&3K>nqnJ-zqnO;2z3gW1H>)xK_`W#Wk%q6Xs3Qj3i zSvl9Uf8UB35h#x2TN=*|Q8o0`XG98kf%AUs3XYGdSd|apyeC+pzZrdQgqS7SfY{Y} zQ0uR$njSDwn;x)*$@G;g zeTxDy90c{AElzis3|Dgv?xCYG7R0BG#B00P=5RY_6ifp^+K_jForTgLy5qtxQnm>NqNNWZuz(FMqy&!2X%-_)6Z4=#{Blq`6XH&edE}B9I3K}YlsMLY$ zKFrOKVPLgN!z>PU50phIFD2=?BL`J=k}m!tnaZU>Ae?PAU+|lCXwPsfT)x92>gw1< zLfk&+!KJCE>{5lA4H%<{VXz3Iz_^3(%1*iu%l?CH10VwHCy*bL-FOMXPg9ej*OR@Y zG+iPRFw$F~hT#WrNC%3TarXhSutCLl?`sv@Z)Zz9PTVDqm2sKI#$m|b9dplc3jvG^ zaCo6#Opmj;qxb#^8e)&t$Fa3q;_htY(Da3pcbfj7hK$u_%viC|80qR{Jak7CvL2Rz={CW20^0goA=v_MSr5VtK@gbv7eJ>_D#pxd{-&3&8ZPU79c3W$y#6=V`|J1@RURTmZ1=9 zZ!F8S>HJ28`{!7)h^h)-x-|yime8j-*ntVSeBH-j6ouzGi;a{%Unq`CE`~C}k}{M@ z#yKSnQ1*>5oOJq*6g;3R{uFxap<6b3XsEWYiE zvV8x675|vQe`Fw|V`G?8zgto6$m}Ga#^>oH{QhFC4d*a^5Cckz*dM;h*xy1BW%yYn zP&*|sbe>6Re07c~JhY0aS)~~8%<2!mP%9~pl=#d`^5I+g;3mHH(uT52e;JG-Z!~)O z=?iDdvyYsaeeB%ahf0}p-1sOnbGWGbxO|pLgF%%I&oX$O!Ot_;!(cyydl)>xKz8HZ zh~Z1U56{YFnka+V6L8JfH+z1U#i%gV=J-EjOe_h^i|KkU-*x$1-__0uUFBUWW|7XNvZp<~R zv6@jd4Cc+MSv2K0UX0^6UbSk8VnUu-)nqMIOi4abP1iETOf6f?*2aoss7n@eUQT_* zO}Xjncx|FMfx48NsZQ3Wic?1H{g|6|$3Ba>W1e|y`d+*^gPNQ>j+$|A2IYMyPq>pP zPkQ@M-jDK>JB{+Rw;$yLD9^b2P~Io)52C!^J%I87?;xHZLiwP32<1akK8*5V_Xx^I zqvXaPuhVrF<0SH{G{TeoM;7P@Z*9pnO8g$5Af0b12VA z`Bjupx~EV+CFR#pe%n2b@@Xl58Rf6IXHY&P<=0Vu$NehGUln-YaLuJy{%bot`Ml8` zbL#a*-~^RM-CsmGz2x0#dG)e~eD-R?ZB@M+TTL$?@5ay9x4P*Cr&@JZs$SPBJAQC^ z2dKhf(xpnxS*z67*ln>@Yi^xa%GoM&mcdUC$6i9M7b_ZWtY~`iTNZG_auc6f_l#n~ zO#;GnH+i{I4LsFNaA@!G{%DHA6+P8LLwVh#@`9GCm(77$m?vBdL}t$D#+G6ajm3wt zhi2FEz3QsUp;k>r$>Y0o>y4T>=dP>P-MNdNe>-S2=bBr=dZS)yHa0v}T4@CV3Z)gt z_uNuRwfw+EyHe0tTdR6%uD0dX@6J^#D`B_Og;OWz{7T@RXgcNFfZw0{=*ow41l`l? zDm1sc$yHgR4M2QCZJF)y@Tq>X_|Vd@juX}iCd}oN*zr=`sd=SRH(M&zX31`I*lv56B9@gWk{T!sXbe-GBx-lfL;Oi%mq+^ybWk}sqhseEsk9*5q zj1JK?aA;5rU6a1JAR>s4X)HREbYml)vS7-0Fh_yLZNW8o7KDQ zs5O6Nn}-mJ)AD#0IQ21PI>s$bdfQZEuDNXnM#sEoe9u6w*@@kX{|M-ok1uwOj~>5N z7W%UFJa*HmdO_gXg3*57>RLECubcgrQ*C*dlxiq_JYT{b594YEKLS@bUh~%mHcrlq z2RVzcpGJ~3EF*2?jQ0MaB^UI>i|PQ{x!^SjkoSr?Mw;RfS#3kp1{dE# z!&R_Q{BYEPRRv$E+` zZJd@{xm$6ur7K%#SMhg&>n?eYpH@gWL>2XeqcE?_9)FIaNdb$az6~^DS_@tb`9MOlgNO}{# zw1`XxRMrB^2x9jQ*Kp0xVjc5=xgGBqZu|(imTMh}?T-Z}`PJ>Xdf82ECxUn9bX*w&FVH z2&IU+bgX?;lTD#i0%8ZHQsHd1fnD{_A){N%jw(*oJ_L}qOQ_UweQ~fe4-eB@36S7ftoJn6ek;hWX zYS=EJB=RnunlcXyvz;;8lOrp5Xlf+LXO+zGI){{L$UF61Z!sqmo?uR7dI7nI$x-f{ zDwW(u8B*P%JXdGfybqt`L=aGLp2kyn-H9n zZraU2geJhJsfSy|q&opznC@n;JN4UIk~$5bx*&azQ!6|S#azJ_o-|Nn`@*Kdbu>@l zsY!Ro-l){w#zsWpns<_dK$T$VTD#MXV0oD%E-$|xtZRDSjT7JKGebQJ&_mb|I6k>x z$YD9sy#4KUCkUC8W)R>D%}V(;7Vxp}*(ZgQId%Gbm4NusomY1I%jjR(BI-9+2UQpJM7p?06TJWkH2TSQ%Ttpv#$~@QT z!#qiKf#*z2=@_7Da08^!xkHkDXlgV)iw4lsMBNa)WyJuh36>H4R`7j9j*~R9MtdIt z(g@L`;l3I*#5xEMIhVk54w=0)sQaQpx$zgkTyDkr3;qSo>OQ#AtvJ4k2eezj%0DvdsgxFX(DS~>M-=*_VmCK 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 WCqMhvbOWcZF?8c%fYtt4f8#&EZyt*P literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..21d9c0473cee857b6abcc66f2d12998fa35e4f38 GIT binary patch literal 11211 zcmds7U2q)7ao*Y8`vq_SK@$8CNi8K&MYi$yRgaTs2?L^K+&$P#r7} z3hgCLW@YZSCUdKLc}O0UgL3G$SuOx8$YEf^^0*w8+kuS$+aY%X+Xie*?gBOnY`5G4 zY`ZMUeR4mr9d5xLc1PT8?x?%n-60SBC{y0)X|qC(%R}oO0~^B#o{?VwwhLv?$}a-j4QxU_2W$_p)AHwl?FII{{1UK7 zfKAFX!1e+AvU~y9eqd+iIba8Xy(nJ-_9(EI<#}Khu&>Ck0y_xo75Oz_j{%#KuL64< z*lY6Vfjt52b$J2UAvu6az8q!kSL?2FYI6DMOUkJSmQ%B6+FZ+z%a2)gUqBw9#se>OkJp`lE!9YuOSh8(FvpedWnE!E|x;sYv(hkr9N%z53L>UH8u$=5NZcxoR)Eyq8D4R>2I- z+s211l_cbO{7ZPLrnaUvF<&dGrXjV4rd|%kn%*?)!_Cx!fv+jGbz>#HJQSwFbW?nQ zErTeSLt|B65tp>uE>jCLOV0{z1zW`O0A`G886O%e*)ZG8u8L;nZEPzmnYS`G#0@P> zujR0S(rfv3t(hXYZU`+LZl+hsYG^zL#*<_Ixdr2zq2>seCa^1LF(6GIFKApg*UYub zsEygoEl|x5!a;hHsXZE%(C@0=DoeM@@Vlzd>MMC}mq)Aj(f^RlH1oT(77w#Y2F*_9rdwFcyX*sf*v_kA>)~v6r!}r8t zwr)k6nMwm-Z7@!tI1&wS*iXy8*pAhsRGTbFSpZRH&c&7)Dn(&KR5%0FgU4#Ef*ft1 z@q#cLHNRd?p}JR9k5FZ!>eV81M!{%P(;le2vWf%o>Ua!Qc!{Vd2qTVV)2rGiBg1cm zk#N<)jiRS`DEFIg$=com_cMt`+jAHbhhy!yuBOHQinUz*2FsYg9Z#( z4WS6Srj=GE{Y_8%H}8sAY}yn$u7Dghb#L1a%GpsD^e#soQ#Y}vID=O3$Ads<#b8Zp z>lE(jQ<33J2jEAlQJ*JpA5-`r)Ua(Aw2w)ULDA)Hn7D~0NzG1!csH^0v7B+=eYn(p zaG6JSmdxzt!o*EnHUv{&KrqRQfZ45TM)kFSU6jgZ3mSgKR}q*sC8dq1~DUTMz`CHb|x5g=>0iOqGdcYe!O&4 zFB_(r@v$u4Y4hot86x#(!83D_TJ{x&%!?Vk*JjW?Gh1_*L@O2o(RqI+5CU}D{%)H` zQV1qJK!|Tp%PocAUcTRE&?Q97fn4&&hwx3#GwpHY8uRJpr1NwXpy1ZFe}E2R7rH$$ z?;F(q(oCWqD-1`f{sKW^pxgFu5*Kz{Nrf?~KMS7qU!;~>DvW#iVVgmh!XCh360JxG z-BLWz7jw~I9S;BTD$wChM3g9|4B6BNw~R{0AK;S zZU0_R7EJ2Tf+t~?TJ{xzmLB)=lQx5{Nq7KmxkY4cJK<`q}5?LX)Ah19-{xs7IT9BEAS$J-m`zAJWT&vkH3OZ{zdQpA8!0}TaSMZqx`F${S)OO#y_|9 z_~$Unzvyg=s9V7Ma#j?&5+}-msc#bK6(S6GdgpZ4-%>@6M&BlkEr={{)A~rG z5CNe0n9P)p$aF?+3aLxuyC!5br&Nu4*ad*&DjRNJ_mvohOIG;zXv9*E3iWN^eYvYu zP>EL^zj4m*Her1^jdtY4bpbQ`2Ws%k1Sn|T#43eC5>!nBA%&Lk+n+&Vx{x9HN2+^{ zz#V`G_KmEHbMxW)c5ePtyYKf1V-1tz*u=#|AxRJx^7f@6)nOLSU{QQp0Y8JG@(cQkxspN#8#&R1H1gI*!%Q=UOsCN_ zPixor!qSaZfvl<7OfO_FAzgwTX>RFxq0wJ6oz~t&*$r5x^HXFa@)ka?bJjhukgl*G zeWMau{%q$SW42M7Awf%du02s-nt*SfxcU~-|M8s#rT?#5eyy@(wKCsuRM#vF{=@{JPzjKhVw}_F|$%ouXy2As|u=* z1f*(@iU!(Mzv`+v_o}r?07p4ht25OT)|qx4Fn2;|VaD|qU0mi^G`A4mQA?#3BW~TA z`w5G4^U$4dAwfbvq{R)6hl6B$>+Ht;os9b;4uNnBS+0Os%|X|x`uT0=(QW4X*{t!@tw8(DG%&OW`J8 zw%z$_qvgxakx^l`68EqPdx@@mA z3Pucr#=Xakqm+m4s7m0@G?W)ES;`Bp1>{2|>>Rhge#tr?(jvmX!yUrE_*JZ6i5tQW zuLO_4y5YgS(bB?O1D??RMSb&w#RW-bPu;~83_TTZG zkhVexSI|(F)0*PrLAX>&&R>_)+}e+mWx$%?|G8)PW?1^abK*S)!^Skx<-uF_FB8V} zv*yHcf9}k>T~1v6Dm+@!i6`r9a^jJW^WhP+xHoi|)*Mzr1@An_gK}UsWX&^Li^&^0y8Rcetn;bxh zy@+mDqbv&OARMTDTtod1exelDiAvRuXnOt@p00 zev3#43H&yJ&c^!(^vGw1frM0JBtIn&%-xBNH!~teV=ds)wzCBf>Z5u#PuI8Yjrfny zG)mbNCU)(|WK?809PiWNqdV586X~q(;SGr27vH0kx9ObRh{w;h)^P7VERMnxp``V7 zgo%k=;7E}|s)UFrXhoFmEucpP{J-^}EP9`~vxm#FEJV585gtd46!*H=^Ke?Aus0ca zbBNd@4(`#*{gLs{x@%++OC`%{zxpR9CajYuN~cOEn6_N#1h%B@*im+lWu=5+kXdwU zCkzDVYYKW5*)rZD;xP7)ser=R`=VA}gm2KIp}1OaMXTl~qba7q3Gh*!V`I+#5mrnm zO52&6M5ZuFZ>I|q^lUt+@6mWT!2UjAJUm)taZSRCt(uR2wwf$$-#+(HK618!chiuM zR9L2(`a^&yMLs!ThZm)RBkbUVzoN`c)H)^5p&!n&J%O>RSwFWxQg0LZHUYkwyhGS~ z1inLn-6jS5JUOuk>>MK)W0#ga9p_7N(8ttF01S>~@p9LQ7y&F8+Bfq@;mK0?@}HjC W@OJc@{!e{q@KgO5zF!{s^nU=N7&%P< literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..08240d8ba0849a6a19269153af23a0aa68ee7b99 GIT binary patch literal 2344 zcmai0TXWM!6xOcRvV2Vlml7yoD3qFljgycUG8vLE4H-;^!7T;#qLICu#2`!VN=hdl z=PCSyJ{BJP(7&{=eaiGUbb3wOnVuslB&MCIH2a;)e!Dt*cD=`bsg&2?G3(LB7HHp~ zarj|i+|o1>SfFr?6IbgIixAYQODzggcl92#SnOkNre|0N=oxOf*`8^cL|fK)mYdHs zZVF>Zw{n8ew z_oKcmc1gm|anYBeY)iN-1C*im zM1#Nxq)O(%h9t2-xNBc)vIOQ{Sl{q_qRuyDv{{F^pN4+F-rov0e9!Ltp9^WXqc8-+ z#!$Fz%P0sr@a)iEUw4J9_qK$$S$Dhbbl7yQalIaNLvgL|be=lvBBqQ?F=A4aByX9a^DDB^fV(vGp= z)N$G`zy^fc6T-<;7|E$exV}xgaF%%H3&IVa1vEjLJU1j?YCQjft}*Zxz*peK*jGw@ zWj+Qy~&rSW(9 z)wo^bwK&%L3mVJoFDP&DDQMGt2HK71F%UAp)9?kH7}B}MKj@>r3(2`TeWnb{y;3Kp?iq{A4{kPY zjF9y>8A)0y_-RaE%A8H))Qm-&m?7M@WH0EUSaHCAbza?{ZRC42+0l5F@kppgO~<15 z7pl6vhC^xyb%5O>z(AjirU1GC^Qg^trxcB#p=U0dK{vo$7q#w8wLD-eHyg8q3}P!0 z&4GbdGc^|zb1^kn6LYnNBd4cu$n?}=BASV4AqAYNY_{O6>%mr_a_y~9_>v1L@oJB6 zrK%a+rLPk&_v`U@-4pIMpy#K!1Lc7*=O zCg>0BDE*!tqu;UP^jms@5_8v_G)bO}!%G<@`!C+O`#MVFr8zN9!6D+&v~0>Bl{T&2Y-j1jE5YDMK5*Ilip zSM-)qG0<;RG7W`ie#a_V{ATfMeox^h&%IE1?oh4d@RjFd_!`4ko~s*5v2a3r7Fj%I zd!8TKVbk}5@(H6(H8$2;cEgFst4;hiy++Fy?d_(bVla1-!JHF1rJ&g-S!#6pq`niA z8iN|l#&l7@j~tTI#Tb3&sG)^|Xd!5gAhb2SBM;%dO~j}GaFhz;3JAa|T2AHf^J_fE z^Dm5w&OhJXlP|2AYX^Z<_l31Z{UC#7TMvj5m}=F9-@-R{f|_Wy!{&3xa&52C z0p0R>3(wj$?(}PT;Jq zC0Gd4>e@o7RFX*P6HjSnd&jqDaN5c!RFeyFFdLhnZVj`|14_t&#-_e`PIN>+(nv$)dG_jvqGn9GBMlUfR1n z(p#?&C@q|z<4U^Hp8Ye9?rPV;2Wx)u)_h9)(f|Q>>Na7(cA;+xC+rBioMY8GLO33{ zC{Od;c00}u3pB26W3D_`GTGr)vu=65p6;Ep@^vkJbkt)a5IOA#q7PP_0iUKkK89dWa6U)iXzsnqGks4{w znfRFJBK2=!JAbPk=%E_vhwPUu!suLzc>~yCOUKHmGb>U@E$At|(8lHN49K*+T(Xuy zrlfC0_Q^Tu2l+^ANBc@rlLvjYc6oqLu9f(fX^)~NW^wamdV+FfE4lSx`(mb&srkZl z1Pox)m0G+y06(pmj_?Cmg4I6sX{I_y}gm+m^jPUyFn+WXFb%1c&$$t0PIs+hx+gk(e( zNgHtqP+YJ%@00EcdICZ{!@B2(PBT2GMt-^X5KLYaM`1w;K%xS_fdc$S36*b^Z&_XC zIyYXJAq&+*c2_xMhonN96z)tp@!NEj6Jq8Fb~*`R|Cq2_0DggMZjK$WU$cn)TDgsD z?&x#MPZXv+gWra-s1jXS-Vc$6T3U`-^Q9WIR-A>8+49|B=z%zO$T8^|wt;+6euKJM>B+A)FCJWJ3{G z0OCM&E^&jJGcu8FI3Zn?V@!%ehIMC#&XEqs*;M6X4K_6%gZpW9l3*_t+ol(8j+j;A zGnrN?FAD%dC4y9Nwxb5-50qcRfF7}LmAW*bFU&|Kc{wJ|8r>I3L{m++K_p}E$S5K` zgk^i&vaO**$ezT)!|iS-o{oG-f+(E|&uZ6Tw`3dx=S*IC7zyd$ARaoQ;4*$)OzC1$ zOfLYCVw#1RLLd9$*&}=^o8o;!#MC-=Ys(~UkQNb3LO8HA1A&QtmY*1h=lo#Sy>%x0};JIKMxxGgRu{YlIe zYmkA{ccl>vI|u{FDc?Zk7;bLXNa1=9(Y5bz{|z5-v|3$lumhdL!9G{S2a(R<9Jw~9 z92lX(;V|zio6`rGNI!x_If4t7<1j;GXzj-wGKjsOy>ac8bgg-mp;ld# z_b~hC`cb4)s?`0bRDfR-Y)QwyOC<4bh5>>{8H>_q%|+OfM2RHUQgV}Q;B}F1`Mg>D(A#2+L(GnuslC>VD5$i~T;kwEGym!K&6tmTnS9p?yOr~LE zeq#2Z95eifF|NdHrD%%l)Sa>0ZO7x{Pv~Rv(Zk1IJYIiTu0HtU@uT&x#CNH8{K5L8 zM-LyReQ{PeZ5OGB_#A`C{-kK%1S~$I<`y+c&;TllYxs6+E&PlPK>d9@7>K-Ns zv?8A|wE`=^`krH%SEg>VS$2Vu`<`W&)B>Agy4rnjSTD}-PZWV=#12!EN?GU~@?&>F z5=g6Z4ATsI4BOXX!5G=ThH?NoehQnndGkOGwIj%Lq#hX*OdhL{CN0u}1#U#@c_ifL z6@-nD{UmHW%JS?ngN$i_OhB2?lyL4C{uVNy0iHbJ>EVOkkk;g)Ok_maW9<{{{%i_o zK!}SIT*Nq}c}~H6WWRFVIG?~N)W|%_<8)&Y^b2#cb4sddKMD)sxYWwhK`xw#a8KmPKrwe}?? z-Ik2`kN{c>b)YFGYcP9FYRf+Pz`jD1yH^&T>|QUfef}i4{$ydH^wHntr*}4M{*=up$|36(WbaOyC1aMDL4CgJ>R&IfY>Imr z5Pw9?muQO9Vv%6!ucdga!ih5h;*Hw2_){7puM-;$;dk0nH$<6wzfZl{T0$hLbK)cF z(zcpjqF;tgB#VWi`0x{2`5`qIsga6B-Xlh`M3$#Aogy5BjZ)Jp`K@M{G9hN-Y)p~s z=WBlrWWg#L)0lvk<+WL~6a?q-Z-UKgv#JhlyTC58f-$9DW(76RW|;bO^?x#YcXmkg z`Y4NPxm?U7@$Dp?nnFo2O%27y;vFMJiimYWt_d=Zor9Uuk`v3P<$CEI5R zB4&?-7IZHSuQb1;P)QDttR1FTOox=etAE9g)MJ<#BD5N6k2(i0aM9YNip~b00CKzOqM(m zz51)}R7%8tz8D)+RCP|rWIkGw?dka>@`7Q!VGZ?fj%1V+mQ#)(sYLk@%q(cpQN$RB z(I+ZNSHqs7!m*=?b6h7UmGp-Ckr818Z-%pD?EqoVks0O)2hu%ulm~4!YB7c|j6ypZ z)PMV^fJA}=4eVaQxX7^8LCBbkqj^k0`3l*>X#j%8s z((LLq7UzFLwYz&{@dXK7ta;8ZN)^qnBZ#!IfoR7?c1Rgp09);Z%~sJ!*iYn^=C)$` z9rWWsu~9>5FC5ZuDGHPr{4?HwL_KflWHwPxFkv7sq3w?M1VZjM5_n7YCxN$$#l1%Z zKnIk3m)h}v7eNtf1j8?tl~^yfscBL}6cj(BrbUg1=4G0C^_hE?mo)uf@CKyw`OJWq=Z5$w zPdlQh#4wUD$*^kxpmb1FsN{&EhU$?9#nZtOik7tQ%TbmPDX0t$4S;&3I)YfGZ_nPU zZvXEzAELH#hQ{$Y6(6X0CzVif67U!TDXr5al!FXLyl8 zDo?dT78>Bx4Mg@-10zG3iO@@x4{%BEUcC>~L)NZui;}+uc~(of7M(Lz#a6jH_fz3R zhRMDRO~vrlVm8*X*pqoktiwz3L}b5<)5`!*hKoJd6QDO{^(5LGbv&_2c95dr|HPz# z{8K@lVwYY`XjH&Nh3dZt9;i3216D1W2kBWa2p2XYI8Lb*FA%6b$fw+oui z57RVt#aA|L{DEwkW|RR8D3<7OtnO~%(gW@7(9Mlqfm-e`F%nAbV(^Si#b$tgh#apl zD4lU)dkY9#=ZBneZ`uec$mY^31&RJJnM5J-3TpTL4cJREh`^ry_0O}MJ^ITY0-(U} zh?-LtOIX$`=E{4V;a4_D3U^uLn6hw}SG$uvkx$2pS{cD|YQ;)G`1>O%P(~WC8qFl9 zBRC!6wcd8pOVT8jXeg{sX)gDY7$`!63*Dr-6l;nqHQ!JpBVKZHi7^!f?NRgR)I`(_ z?kpkc7HtgtJ>G!KvW$3jm8q=oU-|L;RDLo)md{U^f@UEEN8nxW!1N*T7Q_+pm>SC5 yq~}g-IVDPBoths|BO^9i|EBF@^JWss-vZqe*IdY$>XfRhs2dm)rt%jvSN<0)2&|O= literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fdeb197b41561f4f74840945fdb6f98dd3e46424 GIT binary patch literal 20724 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 SESAQteIR7EWlcSp&irrfOv|4D literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e779ea2920a370de16533982369a9e4e888768f1 GIT binary patch literal 8464 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 d3gWP7;{=fHTgFfP^M1ki3UJKX>P literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3cb0f403fcdf20d0ef1087d8a13cd40d377268c2 GIT binary patch literal 318 zcmYjMyG{c!5M19QMByTSg60Zh5G_I!G?5UBM0btliKsxEs`DPjPqZm21g6e6O#Z9w`#I*WC!&>iLB&_8YMcnPJ6LF3?)pa8pDvvlF x=s2_&+2iWrp4!3To#xwpG-v5%{YK9|)A^M?hWV3J!jJfzzOb_h)lHRE*&p!5SBwAv literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..577628e6747332c05ed26a534874a372d6d7518d GIT binary patch literal 5826 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 TE9J_;ic>k@oUB`w*_!iz(PLSs literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageSequence.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageSequence.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c7e1762f79c2cc01df91af1e284681cd9269ce4 GIT binary patch literal 2808 zcmZ`*&2JM&6rY)0+snp;5CTQCw0nS7=EDXdwN-==h|mfNrImtO)d+1iI}>MNKg{ep z#F2w45~*B!>oFYpm-gBd=iYKa{k>T`aVTBMqc<~e-pB8KIXijMW%!)VVB;@`vA=0E z{n^;uWsK)bAS9DKW(n_dPPB+cVs$Ohmb7C#sda0d{m5iZ*7umK?}~2yL_^NW({fgx z+N*UNva!Ni^Y2N1i)a3GI9Q9-dtTkw9wtFgg~UDmS=ihqi@pb; zSeHxI6_R%?=&8%bp53+OymaLZsG2+@oAM;6x?C_;*sx*_R-7%JhlSEXk?G(%6uKV1 z#~V@Zg>jJQUX=7>m8i7Hy&(0XF{_uYJyT)f6&pd}g}7K#-XK@fD>5(6vc8d$Z7OXZ zk@;S(UJO(ks@>W-$JY8M&vVLU?2@1kc!2&hWzc%!uRI06ZW#5F= zhmZpJ zx!4b|0|txUJveXts61~Q-cm%#!Hfw{+pJ|>t74$j(q4wxP)x;(!bM4RpF(y6M8QT} z@?DY7NU^*s@4V zyk6Z~N#1+M^gMVEwmKVGqB?Rz4>mhXDt}&N{Z4-f#i`%VUMlTFc!7<-79baVU&BTT zKEKF%y;$i^GF0hiCyv&}&u+DE-snKBy50}M=g5-0^Yg<;9RuacBwzZ&(((N$jSAnt z1UqsnRF~V_;dQ>iw@**{xPShh+lN{eFwAn@s_3BYX-+b%$6`+)o{>X_(X0kh2t zF}%pxj^J#&A^DDlU|72d&ubxZ`bxayFIh`0ADmLD^s@EC%x>8RGd%;@rSssY9}Lc= zdz6IWn8T$$OB`J3)3hOMtK|$G&-gxK0!$L$zlwvLUI^ZVyR&fG<<9To!}h|I(}(OK zg?#c6O+Vu<`96Yk@A$G&)#8;QAL%BXQQ^LS3;a1{ul*6e=JuE#%IiZ|A7QgSKZX?< zTmfrSF7xl0KxR+DYz;31W^sRC@OfDtz^^HP8jSCkuJ0$A9K=L7egDNEh{rb#-<1#{}FYp?rN}!en=FauYy41V+A!nXT*AZhxJfZBeukzp4&mC?Tfc;2dN;r z6nm_yy(PAb^Z}Q(Z;xzBsu#^SOt=4F>l{r|>^UPrJS%J@&?xNy^;=D{d;NYKDa#A4V{jdsHtox? z5;ld7z^qV&DCc^J(9`-3igBO4Wq*nnKy}B`9^~!YaTW$~eh0*a^^-3ms8MZPiLQ%A+(d0{kB-ZPH)bg^FWSE~bA^dJW0xT2YdB-6)xiq_PnX zw8kHXO2ai0T)BPZ-(4J<*6lXy+!hY{%Q?{$7r4Gj>|bDM)vJDXi4KgxUlV0|%QtlI zP>)z2;130QgeDBjdNJ%rX-}h=SjjZiRb{l1dK862*GuPi)n)F`Ffa|GIoE_GvzE9r G_u*e3sj7Ye literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageShow.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageShow.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d69e1cb20ab5bb313c897266c150f5677d9c6ef0 GIT binary patch literal 10169 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 M(y;YoZ><0PU&1oG-~a#s literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98d31b6cd04d945e65f21fffc1c5859659f44efc GIT binary patch literal 5796 zcmbVQU2hx56`k2#QWQm5iN9q#_QXlkFqNppsgpo;-K0qq7^saRG6ICDO076cYVGAN zHM>+SmTZB_Mbd`?ZGi$sfda{+e@y?tzV@N;bKVRz?zwlDU$)}JSz$*rvom++o_o%n zSw@SCWr3@-*4z2_aUuRgjp@rq<82{i{Bu;a&@vDmS(lRPR$$dF{I>(UmZXiVuV?>bbi@&mCCxId86B($$q*NNwcOe2aUIBUH?GE6LqOY-I|yBf>yeu=kFHkw&&>Q^@6V4bq-{` zfYwEQL@#lxh}H}GS$&jSbKE+nk8`WUtrPkrx8`}?DSet-Wq!7-&v0vjTW9q-ZdJJT zoIcO3MJ?g&i>b2#A8(|KK6%lIOe65)Y=nDC+yf50lN*>A3Oj2S;Zg--tpl zEgCQBnJ{&z)ugbDE`oyYcL|Q0s3c+_6M0J>SY~k`zpw_@mvSH)cDTe(9Q2B8`B%{`mXWz{HPb>Rn5`Dwc5e5qqcE7wer~5 zde=oqw)S=Pj{4QLUuKOJ1?Sk(w^$&6YBdFNd+X~H!z19{XERe~N9Ndh<6()>tbe1K z>)rkJj+gALZ~YF_GxFr+*pn?qBO+Z>HxY-ff5!^|XfI4+1qjDpj!d>q)awFka4%Aq zF2A9+{V-lp9*3{RVc{sM9XD2;2thzdLiHBL!6J0}n8hZZhh9)q8twcYD@A$ZzD zYdd$4$U>^VFObG=ROi#O9|PLN4V#`RK%?pWIA*EbNgW!T&fnbcdcQCxGHJoMVcSdX zzzfsDHZY8Ue8<$Mp8r-t*$yNz`5I?t=_r zqZ@tdnZ|Z6NziC)yD{=?!(hD{;~LOFJMhd}XWt9=)&hS!pZ0p~wO7|-Kk-((Zu2%p zZ4JCz@V`j(WnO}IMpS+Zs1YE zTOsCcZZ;{`k1nbcLN=wd6;yOZ7j*Hi^C$6{_)NAeJ*P`|ONr3)iTqsNvXHFG2ljhN zS4dNfZqJ%ZQ`h})4IEH=ZqNhkC_#DHXA~it=aD>5O_Vwj?}&r+|0d$4AWt7=GJ&e6 z5hOEpOdc{A`<*Vto~8AewH8F5GNE_;HkJs!s2)N^TBg)VsnHm(nUEVZrgBYv>L)u> z+Elp~R}>1s63IjUU zSe_Qig;{5x5W`u2l!kkztw7_og`aQ8(9@+yju$P57Ii zb=2cCC`z(IlEay=oL!&GYzYPEtX6(eQf9S12mY zsMEdrF*;*<)p^lZhp%licmmgr93FFyj8bIHb13fFjGe*JS!8RGQ}6x(_3{GdasaNP zC#I;Emo8TNmFf4h!kmyRExO&V7wT$(NtVhzCVhQA zaQCsn1N~IqdPJ+{6`0t<&AYSXoP;U0^Bo@sSL9D5oDKUFe9zn*)6}KY%tL(bR+W9iQRwa9emy3 zETvv{4Yq5X*8L_nCpWC-r}Y4b@8C%Xm6_L)+Y~PNEn|fW%e6u|lQQOVF4|>rR%BU| zU9DQo3iBgO_(rMz77tmfO7x#&r)imoDfON-C&)L_%@eq1QWi= zxbEz@K`WKphp`TuDlcUS3o&ugamvu>5p1Ltd6c(T>tV%$Y8Uco&}Y#Mh|?rAKZc2_ z-M{qV^$qp1iK1kcKwphnZPlk@7zKwJMk$;bwnX{z3*LZomf7_GtoSnDoim={lcnP( z_`HdCO=3t^Pv+cTFoHSvlE@DZ_}V*+a^^DGI*f2OX8f5RzKJ4FaOnD0oL>A0f~3#0 zr$T0YUU>^|V`NT0u00L#XsgZ;Iz3g-G+C8x%%%F;z)S+6`S zKFk5zbInr%h8ce&W8_QOcC6ypIc#|Ft+3U=#ZbEjKfB>47XCT!`vFMjDh9ATORZT# z+2$u0XRc5|XQ^+@UjM>FX3{y)zmTQuL}Q6hhfNWm$e8p`dK2?0lU~+q=y+5uX5Zr! z3H~TI^m}S{K&;SnE32QKs*|gue)_iJ^nG zp*_Y_so3pjfHj^j{VqRq`_=gUjlNLV+qHQ-gY%yu+ ZO6KrYN?*L?R!)|zimX^iZ1MY&^?w_)P5l4> literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7768e62035e65c658de81b9853be871e9a01c0ba GIT binary patch literal 6979 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..606f498f940d485a6eec7abb82af538817024c05 GIT binary patch literal 4737 zcmdT|O>Y~=8Qvu+l9DJ4Zp(E^&V{*tzLmFfJ}mSXS__a1Vj(Q{ zORbXY{MHdgQToaeC0RNy|2f}UL{C{PqGwSqqP>Lnl2}H2*|wL_u80-1S8Th2_Nu6& zUA65MwAaKs+UvHxDmD(B+O=;;1NS`atIvZ#DjXcfg<;+oim zR1(*r%-f^IL&YQAiB?>Aga=7(Hsh7J~+o>a_C#x)bN6GT$5AY$9eaJwIi?V~Rr z?|sy;Doz(VYMfPVPh;9OD)y!6#bQ(t-0){B6I(xnp-)CdB~7ZLQDHxhq@SBJlVp1D zlcf~0(Ouz9c zoEn_TXVpwes8UDZ&6CkWK!ALQAe=jYbN=r9 zDfdO;i-q&tv5SZn&KElQz&X$V!~Kg3RJv!sek>JXk^zD<1UA@x9)w zQHH;UnIQG30ViC;UZcfnU#*zAViVo!27TV5&(u|ye5BsSD5}`JP#~qFdi{(r!b42xtK25 zX@|W4q?1NI!H60DRBFcAFK=1!u`OO_?K<=8Ow^gIvrdhj_5#1h{5UckbVM-e1WFsb zm^qD^ichg1;e^J5=tL@zTilt`WEw@*=SBsC273tBlN{?N!9a#~t*t?w4QoVsv`(Cw zBsG~0b=wokQ+C3`6nki^ca-hQSrUUR$eJzA2JAh%TAK~od)5x>V$wEY&3O4Bnp<7P zX(Rx46SGKiCAG=aYP`r}J{;VZECrR(546ui_{mxrasyG(QG>rc5={579%*lNidE1J zA|7T|jaNUA@?{B@sj!`J#rtFLZL^)1#cLd?AnIDT*l;AhEf+M6Um#NNLu1L~|>XT9402(woEtqizq4B8rNvaPPgZO`KN zPOZ+i#6=)KH-)fmSIg4y{~F(~5sueH{6!pCl zmet*Xk&&6v@xL$A@r;0pF601A;TtfnPTNX$iM4Dhf>kVEk6GanPl%Qk0M8>7NeKVA zBy10DGW)TL0QK5jB2%$Id(8hV?o1)kMdn0|Dvbs^1jB;o($El1WCz7*5QbBlr=o>v z-bd9mE&|%poJu)E*jRx&3;~Us9ye@ja2phU`$Z(n?CKJfm?n&--mcquQ|&JDJ#pvO z;0{*1Q={ot>p3>gYFu`Si+vR*(8r+2^?ML{Du|xe8IGEMpcMYl*{Iq9LZF6r=b3-U z=YpRqg?Nr*!S*0&ro*7yGvN>d)w5)5#Ins$+A`jT@^(3ngOKC&z+VnmVkw=(ksu#K zgy&fdezF&l@4)`;c03^N|HXu4t0b}i-0}A_ z4NYSOC2?voJ=8|_8z_u%Dk<67KAH{Q$_9@bcA3{W40iu`xVwLN^UP(F_&PiLG!TgMY`#IG1LfI8_wI zEA#9Ugi!Jj_0Hv4hS)bb;Ri!Rc#i!ph8Us#IdTH;;4c2&eL-mQmMUVERciqf_aqRw4p_@) zJg&b(?h>C;?uOWnHrt|PuG@uc%$D9*m3;l`v?@H>J^1iykG>1TlLuj w&K{RGdu{yemM^*&jmjTnx2<1MQfs=fRaPsxid)HTT=yRo_cUy3{Kx&QzG literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..101f8509dde69bcce12dd32b9d035bf01ee4558c GIT binary patch literal 9299 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 vvFK1ug7D literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..292043146e6cede4f9aaf9df50bb342677f0913b GIT binary patch literal 1523 zcmZux&2Jnv6!-Jkv$G#bwxLoR6`>qBbW=48LI@5BRic1`+NdHqplQlz5_@+inXlO1 zB)iOBnsDTQ*cB&^-1#rK`N}D0ZU_mUCmWOlmgf0=`Msatd*fndrA2TB{qZP4?hhy2 zT?~b1gn<4Q89@Z3B!dvZ@ie6&6`o+Jm$8s#Jmf$mo%@0>AZ&b1gfALbL^LEn=9gX= zNH%ZE;J77&1;q$-kMx3Tm#qi39p`yrVv`iP-n|B=q?Yew@le`ky?vFWQr}0z6@+I=Hu7jZyu}2M@ zB%!zSa(^1^yxiO`id0))Ni$ZtWxGW#j~uky6sQ1L4i6p%uM^w;&iJGjGP4qyqJ%LWsiuk#3L~N8T5t<{|f&aeR!!E3Q8l zWRFw`{e-Gl#+$qAG|`7YsPoVL1u=~ZF5#h*g9RHRlBnrUEm0g)cd&gzW>CSrB`C)C zD_;5YwqOfDJr{J|sa#&bi2M>!olrel@^He`4@)d;gP0Z3x&*{@b^6Gx&etlOf?1<# z=$~qz#=MJnYA@&kodvUI6^IV{{%r15%}bbhl~=I=MV#yT2HIB8_UqEd?%3LBTSeP% zRa30FU3BrxJE!mV?(JR+Y{j3hKdtF14%23wZ( z*Q7rxGT9d+H9qS%_>XWqfpkzpn1T+Ii8x{kdMH<6)9-mlM22QOf*%M4`V!vdTI% z00sdBlu`yAScMMmsG-cGsP7_A|Mvf3&46{Gh4vOaL|qpsv}(_;JB=rAXcv5-zfae1 zQ@h7wyH2``U3dSi3Xt@C8$?kaXEKUxD{@60r;hJL(djr&mll6eC~SpYzu6-!!jVc! z_gJYXE|#n39kS&_H#?j7X_qJZVu?;@ExyI*i=yeB4XDy&z+T!bt_2>Tr0xE!m literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fb109aba9e1685af58911120c798ea1ec9d6a22e GIT binary patch literal 5579 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 OFX25Gh=cK9)c9Z9h|ORC literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1cae9250c39e081b2c95aea20c6340e357cc6936 GIT binary patch literal 20401 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 NuuT>^+riG4{{oySdBp$# literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec750826c9376ccc516c165464b2aff95a202093 GIT binary patch literal 2508 zcmai0OK;mo5Z+xrL{YRID^CMyp%iTjwT+duKrc0d1kM8n8asfC7GO~jGRHD?b6sj+CZEqDtmf+sA2W1P|D!LSaFeD?Q=nfmx zO>#olo0j%V6-!m_r)pbQiVV)pgm#`ie7d&Uq|${wCq&M}>#xJscF`3rzAgKEtw*BV zRYkAWJ5<|69`%ZSA)~FnQZR_N;!^M^lKoO~SQn|H)5(Nvbq__p*UHkZ(`{cZ-@Dr? zQzh>7;$#L%DxGUx&-FTpE;HuKn%5iP$5L6DGg z0+`Xz;w-ee6*~M1cXZ#zFft-KYCNC2k!9wma6y z9g{}{=1Ek6aizS+?Xx{EDR)5csVdHxH9kl_cXw^j*Fa|Q4uB(byfQYV2Y0>o!7ZR> zBhDM(Xao82O(V_s;wvW#l)TiDr?5$hznD^H8Z0b>$1vH=@o2P^N^i`8s$q!+(w$fZB zi2K=t$YC?=UI76s&ybF3S>Zqo;2N-Di5vmrcG$=oPB?EXXU81@bCG>RWU+^@TJobaS$jz59Af-V zbmT2qvIfmmP2a?2o(9ZkgTh;;6kly6vJ7%& zQsG?s&P_P`-c1;C2s16wCA?`w$8fy~s*#lS>Qr|TNLw~wwRVyW3lxS>J7vEoq(nBH zP+g6pB#X-uO1QBR(@A~~9ahyp(J3Ez@*W?|dD@O;2fj(g){aQjjKOFuw#xq+Y@-tw z20O-JV}UVOegUUwFN(xLs-mdLCh@!rT6qV%3#-3`;g6_lK{vQMgWc4AtkDt+MAJ49 z$=j&7(6Wh)T3BH&x;MKbKzoo$QKbDS>K448p&Uffi+-G)&baMDLfY#381F_CEx zKl|Y=2s!`)P9<5tO!ow&aul}}d|0z0=4sxUkQk{cKf?|ok?5hGJ4Gx3lANJtf?&d7 z@LPm+nCPYsdc+1!L$))&;rsK}HAmt+RM~EtfQN{&1e{J|Pz9+OpkM7i{Az$-5`i@J zO%qdg-wqq)U{EdT) zmj{DQLa6!+6izsul9Yy&63)0YWvLT7sT;a>>`uMZ4}Gh9(@I(mtCTz<+~<{7gjWt( zSmUd_!JDt#Fo5|MUxE1*;qJPJPFNStQA5;so1!j)V}}wLw{Xnc{Mv*aGdr_lXF53I z-EGpleuCcisHw+Umg`t2d8SS%&N1UXPUDF%HT(D_nF_FD$+sXI+q0s`rB+Wx%t!c& ziH$H83*nFwx4?Kn`c)v5*iASBdG^uD&L+4MuMl{hd4&eZC`S`~9DV+S7T_ zFXnnD&!QrKCS)|6X$^yD7%Rb}NY0ezU>E6pGMNh5Pv;`r?@yEA>9(&nzWk!E5-si( z@n{c%ulie$f9pRf#Kb0HYdV`G*+wxp)hJ4`L`Tsr@I?6_eCpGHE;`F_ZJe1HC&}~( z;hkNmyKvj6AQnvy$Syr%oF3CdTE+v@*mESl`!pz!1m2@^1!r(qDXxKL+)O;zcR^Da z?KWMs&i%k8*@WqLGJ{80AD)5&9zb^Xh`f!yaC#qRj@U8z0G<)#%Y}7Lzkzf{OIzik zZMk!e`~YQj0Q)#wBb$)b*UsRi3U8LDP|ye2LUA3$YgQt$vsd91LhOA4MhfdYpsTb+ zgMaQg7h$2vJBYC0EusM^OGJ0i5NQUQbL4V{asFRq5RWxP53OUHNThGivym)OEK?&_ zVM(r`xC%t=CB^5ka0=v(1=79*1Whgh!EoVifgr&k5#Y)(eSz-NQ>W+w1ESDDkI9>0 zWBmfYSax7c4c))ujdgPamMmcd+Mw{QRemKeskSA0NM8VV$|l3vo+EE^=LOTw0Xw8G zDR+VBu3h(zOFMXufpL*%TeLqoS%+hiH_*KnZTMQP$Jsjiv_1y+jPvx-gAeuQ@@Y#Y!6SPM8?r9Qhw z7u`$o*|4@)4d+om5@B0VpXY$D;$rewWkl|4CZN-;^4hL0SENMcoo-Q^r~e32>qnYdt> lCaHKIKvVs$EX(`&T~e5`Myt&l&>vcUaJy4$cRQ@Z{sj^w?u7sV literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a867f6d3ecf3cdf799091e2150d8953cbc28e83 GIT binary patch literal 5260 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a914fa693c991d90fd1b9aacf65dd231f97b174 GIT binary patch literal 6172 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c463663f186b9b56e3e0f3e12a0665f8aac15781 GIT binary patch literal 1591 zcmZ`(O>Y}T7@l|b(;FvEqR>XrLqsn%G;t9Eafl)WEmb6xMzjK9h?ccyY;Uuk-OP-W z+FD<5{s8|VIrd-h8#vCDlMkGF%K><2oq$`xtmfVKYu=A%KJw+|h~NmD!~U->A-`K; zaX2V^P6((^kzs^EMh4IVusqG^z-c+iJIu}8f!FeYJR!_u{yAa(l(u{pJR^;8W+OJh zEG0tZI?-t^6pD2J=?u{F3fcU#j&)ib|D?W;T25NPNQ*LPIgGYkw#)(+p1UoNt+0qK zA?LF?Cc9;p4wH;)&A&=BKHj!;tDgv#akil^&s`nEP&Z(M|0b=bI;A z7}_naYWq)rXpb~kN5+?252Y~fK`wZQE|h4Y3vqsF0s0LY28^B)jetzy5t+h-)<_8# za7iXk>8LevSUMM!d6yvXoYXYxrojATSKed6#MN%;PT^-@p^bu`-X*D`c;m42esm}P zB$$Mg+IK{(xkUS;$3X0dHfn8U;1X;9o(MQ2tXBFiamX>qLlzuLP_EpBZz1Hpkw#wX4v-eoS+3;-bAKHN^%rVKx3oW4A~&R z&=ZOaVP-c_dPo}7(4B_{(pN;TqI`AQ?B@gCWPLe2Z9d}aSm#Bv80mg4;vzreGHwsG zMj>t|inBPDL!}w|#X9fxa3`CC5f`V;ENx#e`*`Q0hfS4gzFj1p`ZU$af+BsQ6ja*04z**J2L8Pr=_7{@Z zI7uTio=ilKn^5wEWvSpMQaX`Zou#^OoQw;z^lT(_^765ixip?CvQ(Ss+aw$EN+o>^ zWZV~dDok*FFEFmFc-ECQw8{6a11RGRRL{Vvyj98407~t*3O3;lknf?F`T)r~P#S_u zDMUb_4labSj?yafAx`?|rh6CYAFJ<-H~wo!uGaLh$oTwTKG;%P9=(CKg~aY?bsg)- zl;nk-(5=qn0fJj~5Xj_gkTc!@c@MqbEiXs!US!}#`MN&mVWG~78j_A!u4 zme|yotKvVjd|<&4$$-bPiQ*V@4>QZxMIuMlj#q0I;#cWx X5)L|szJ8*|y$D`cS{=gp= zI)!1eQ$)KkC=JV z%A5LYdR4DcT`MdcFY5KMb>b?A@+G~lpULt|lt0V4e(t{0-Zs0X(H!a*5276(;fUkG@gOCr8U!zzU-*|N=yy{S4+dKV=%FTieZ4deBUoV2+ zUj)62;FSx&@I)|LHt1Z1Pl5%U8wsixLG2=_Uj$H*V_+>j&^Z+epdtZOB!G$pP{{yh zEgj33VOI;l)#m_IxF1an6;P2tI(DYQne7590aPTAj-gsQ1|S^+kd6T$$kjqc0_hm4 zrDFinF?5%X0iY~felB1g1CWjZNXG!AV*pU$k;yRts7R1gTOl38LFpKPbPPZ`mX8NL zJ18gz3#4N>C>;Zkj^!)2e&mxp2hcCG5EXepl0_~Z1CWm8)%GR?kd6UBC9@D9FFU6q zE2LwnmX77!tz!UC;a~^NsRhz89F&gb3$+FTU@e(JdG~V_7)Vy+1CcCp=~#ZyItCye z1CWjZKqWH>An$ihMOH}1@@nfCfOHH%ItGxJom0t7&evuA$WPii0F}%jR7l4Fpdu^s zkx4estz!VvF#zcpfOHH1Dw#n52ogxg@`Khf0O=TjbPPZ`29WoowLk!Y`&odsNB|WH zpdtZOB*-UY2ZaikSpXFYpdtZOB;XvEupJ{`p#@N3Y5`OvfQkfAkpL($n(lG$(SU#TJwgB>Q zPKBuj(lJy+C0jlKR3wm&&8Y>_F&vbR0Z7LHq+|JbnPaDme0eo&p#N9Wf3Y3Yw1L3eoVRQs@Kesw zj{|{+43=yl@G0k)Y#{I_&X;W<@E6W6+d$y&oL{klz&|-(v4OysoUhtI;3LklAP!{E zS`Ij~j^*?mVEQCGbNLu%ok#dTg|ukGcxpyZtN5?~b;MnoQ2y~KE7IRv{I+9MT1UJy>g_F%f#A6=h3 zPA~6F`vcvbm~lLgA5X$ACjN7pTf}$Bvbv&tRaO-zyL0az7Yok#x44+n`*lZ*l;HiI)y6^HuWIue*^6o%PMSpf3 zx_Ev?FVG&irl!@*)9%ct3#Typ5Zou;qf8yUx^SX&@xU>!a9bDF9Ij0KTXdnVI=`hC zZ;4Oed@*^SIG@m^sY|;2ars2eoY7V4Tx5fQ{UxvXV%b{lg2W=P+W0l&5=vJoB9g%_sQG8B@0QJj^!Zt znRv;9_Ilolzo$;r^Yp>HrwS8Kqs~NkMd5*Hw+nG#g z+vn};lrC@Ql(Svl@9l?kz9r~sr6Rr;KBY_GQ}shCMtA+Az5Wh=~gDWt`5uNQ@J>Y3nS+dX^EriI>M8tu1NQ=b(& z)o`>+-=;t6jZ<%rdK4z({wPj;kkZ!u+s2GdTIg~)Jq5;rPW`BV7^WVVEp^}8dUyLL zx9{J-vvsfg-Y>Rq-%pF(ckce^$M?-QX(F8pjhQ_d%nLlT0@j!M{5sr}c*0-jz)wa} zVb42-?t8QarX|`)gE%(kO*+`#jmIhYL}Jo zR#c51L^ajm++C;mlG~t`{a5rGIQpXUy$$7mRU-}mE5mc>__%5c*U9_gVFeGmP0sJp z)$j}zm}e=p%X3pXpF8_9XKb&z&HWVq($~9L*ToQv5 z#<(4!0}S|*6+Gpffq-BsiXaUNnM%$cFpv8E|8Wrw~a^acTUlc1K%S-wU2oA{EA=l9irNEdmn-;;pC-w z&M}*Vyo-dLu&V$tUxk+eL9S`(7*iR4bdnnVP|Q(GP%aGB$B_F`3SH5 zvq|Pvp%a*!^^@dG+l8xE$!g=~Rf!#+YNO8A&S9X=Gpj)KBBN>dZHsbyd@-$ zc}GNO=@an?{d;`dKNKJ#AJWQlQ=!dnZ#rIX!%Z%zo+4ny!b_co}@9?qvoSw zXx_!EsmKcyZcVXyA2-Z4B1v9m#`GS3VNzE)J7ns$wz t<<_ANXjo=|r)mH7o_^+ZX$j5$VDRxbx3Bdr&87y@dFM#<mQgLBWl zxVS&g_nmXm85^?{{LJ~C?f-vHQT~?-!@nE~7Zrtt{{!Ww!WGT}rNwNkKT%A=@ z^RnM|#qP@W)Le9fz}*VG$Bdey>Pn{_UGW1i&8@WDriZ6h|82;ezwp);6-fy)<=okx z<=ol8^I4CSg|qwP-H>2@A?!r9u1 zA{3l0H}tsUh@CLvXy-(oW;5`_d~4Th-=7cst=?nj<`&M(hkoRp?z;86ScP!@#>xlt zH|mZ4>dbX_Q}cY_wzjx?VGctHX#yohz~_#h+}E@m-%XBd7iog}>f;LRVhZB%Kb}5) zn$2y7Y=c>flT@VM=W%^aZ>t{tB5?}!)bWeBXB~h0lO3O-w)DV}n=|P4-F~ZudRz_HDl%ZN5<>xtWe#{%B))-MO*6=B!=6m9j9+ZS6*0n6gf)p-E~8 zFWM39I?cTQBi+Cy9cL0sti&u<4&Xj9J5+zCo}l$rSHG6tCVjWfy@#`^comJs&q$1} zaH@uTzk*qA=Oh!aL$Bi+`4NZU$3h#@Q*6c+um-a=uG%_(p1<&g(qP==h0n+A9Dk9Q zc?BpnfYxz70WHs8lK9qb6S$q>Ctxe^SNL=M6g2A#MOW-12L5VV9CEq6Uy$?F8o*|) z8|*awcCFD7wP@R`eYmhtyRmqM$}KmVOZB$f@}3m@u=DoYzk28NLaH{pg7A}8>)Wmf zy~y#}^$z#j%~T5`QK!28?>LkKF4$Q3GFC2DW5rP-Ea?GedC2xzqQzRI-POb-R}($b zV||}}#-iN5a$p<+-Xm>uKDNclM`oPcXG_XvEip#w^TVa1^oABIck*%mymIg7w8c&V z+iV?D&qZjZLnSeBAB)XHmQY<87Ava6mVD>wkJY4@l;RRsc9{5mY{sP%%Ex9hmXwo9 zQccE_iR4%^8IN{Qn{hW1$q*9ceCSykdH9CRmC(sX9T&tVkLqHMX{ zFfC`bgFP>J?VXk<+{m+Y&0x2?J$pRWLoaB^mt@1uf&Kk@sC9x7T2>8KVr6!Q8LFk4ss(E` zXEMW5|E99hzoAVqiy6%NR{d1}W^Zx`WOGAH?>5EH@fPt5h$l>0+qozoX_+49fLbHYH*`sW(mQ8O@itzQITE(pyDQF8`5Z*5Z7sY7 z0TRbgOZKHQ;4S?N_G~o%GQ%N>*WTnKo5zPW&jdVGZp1q;{LA^)0o+>*Q6q=yZmI~_hk(#P=XHw=o zQZsCSLNxmLC#hYs~!p;_@yQS85ye25NicJXHXpJ*!VHo>Y) zSNBf+*j%5SlQ~NUexxBi-2a%ixjC}EuHIEe zo!m24;f@+@x(s8BNj?IwVFMxTGoG74*n7rOc*bHqV<|pkDIv6(=x;18#-(W`DZ`l& z@(?NuaAnxI(J=QxL-(F1S0*x&Bgqd&cQMHij~D@YX#9Z4aLF1e6-P>?ky7QS#uZn3 z;|e6i%vE1`iv6c_P>hivObDP$k>NO_LL>9kq71~#8*3|z>xf6)uGi*5dg=f{v(=0W zDd1!f8hECVVCquE5{VB;TqChc;yQ^NBz{BUeG>mpVl?Fx=VALJu8`Q6oYVk0PQg9< ze-p9nB-1NXe=Q@z_5VGqx_9DP2kymZL4$rWE?roj=H{dvjYG6hbm)>iisLHS=KvYp z(Ht7<*nGGj^1oBa|8mIxklB64dfcjU9oz~=?QyHov*$89m#z%X%_D*t7b$O3c^>yd zoR149khR6efe~92@rZXxONwApsw;8iY~b1rUP#6Oq;mf~o3AGo5t#=CUWlvlIP$$>JP{wGdR~Ofm*VO^J2dG1_w2X~ZY^c3 zy*GVJblS}ta;Gg%)H;n?FZ&t6d;d&AbpADwkfig%D4l1d{fJ3t#7%mei^f87*MOge z2it$)k_Wz%%HHW`_qsQTA7bSr2POo)DGI0PwM#cL&POWYwbT6db(!5}xRPjjg?gkzeOhRUPD_UP*~uZC4IpNl?cV&v zWon<#vX9U%WoCzRlF&9$>Im)$+w8hH*5Ht5TfGO-K-{HgHB_Z~tAl1&X#f(l18Amf zD`n3FkbgtNKjR9|Kuj2AAd~XV8FfZAH6RcP4P~1;vQYey*i7QDvzM9iRM&q9nY}?h zsY*~Hjv%#J?XBtIZ(j z;H-nJCetRBB+r#5i|FKo3}mg9QIY@L@y`S-gI1u3}Du3 z0__JlncXQ+m;i!{agiHfjuud7#@2b|mU8c=u0+=E1BR0$Q$9lZffAd*U4C_lz=@`Q z+@EJz)_ma6{hWugi0^V9iK)Mki5z=x?pZ|j&oVy*DgP;g3-T42=!{eNxV&`5SzcYd zzO=G>weR;Wzn!`JE?$vpaLu$pUhWFv?xqI!aQODJbJoPowoj!cX_H8qEoD%UD4-Z) z7aG0@Bd6X8Y!hc9sR29EC^`?)%m~dcwELqM@6nUhe$nY6N4mXT`JOpjp3m?^mN?NF z>;G_tKZBTHFQ_jdai3AE+Kf7((rF4_{*(})e_DdytN(zvpFDacu{HFOY*x=AC_;@Q zXD{gE5Ud+y7#z05O|q);;3a-Lq_;`eWmFTSXD#jxwfIlcOLT&!Parr!TaE+7?*ycm z9OvGS8}w@Oj>9{3oGwpOPjs-9n<{=y8pUKm;1{$KI8SG1(YhA|{qv|K={0I{lEfPj zlsSYG5T-(GP*trtYuuW#UYq!(te-Wq4^OYr1GKV3b0*vDOElib4nA~Yyn;fBXhNh0 zj@|fJBfsGYoh*tls8*6_-r17hb7jUah&RM75|nm|k4Vs2NzfTn5VK^*zBfs0K-g7s z<4cQ+%O5PSUD~+5wk|qU_mJu;RJXGFzH=?hlEgk)W!|)YYh`KUz4ffg)ekDuzTJ=urFNS{RdX~l7dzC~k>uhW}o?S`_VLHNTb)@<`GFtm_|qw=_^R#_EH+yCo1 Xz0bcH3qu;3f%84S2z+aqQ~Eyv`G zBfWRj2XQQnFh$>j7U)}BKx%*j`8WC>^z~4n4}Ic8o3`nv?O2`Jqhz^ofgX9Yv$MOi zv$H$D+3OSvE`i6H>)l_d5%LGD?0-zCTq1-R!=F(FDH5mA!P17~P7Dq>QU#gwRs1Ha&n1LC-NMI3>iRcUWc%gTeAtjMWt1GL#& zGrC^gX1aC|YvSm*c1YLiSQG3nnLRPWbC=x7|lbS-MBrX*kq*UjdpWI zra4`_9kgWXX?CI6l5s4dvl*N{*FuJM-o$DLtEtshayi&Y&Be`FMyaJ_+*4u77dxHS z66)T4kZ15-L6^gRkOW*l0|u_LP9Aszc)mu!TytJw=Miq7;y`A3Ccxn%0}1Zkr?4WG z2S!cplE<5K_d9JlC+@4>+T2wct;U`1Tz50R-wFM0XI(0Pu@}cs@fVws6uz%|Q7oXJ zA9q$(T2jrmH)Xgs*9sQL!`?V^_Vu|ah~?>Sb7>V^6wNK%xHY%1w2`@|)msU|Gu_S9 z_M1yfvK!BWF%eo?qv`+@OYpw%-~uk86OI5QNrMUkXN|%+V+}4GVG0ZO+!QvrBA0r* zGvS^zjD;)TYq$%|AdDBm^!us+I#NF03FQmUMzI60cJ^<;nuI)nbKRqn{SNt%Vr`2G zx=jZ(W(ghAXj-rVi;aX0>4!At2^GeW>5`92bI61>O|;C;_+>sY5<@sM1ZZxCtkUQk zz`43^VO?Dj`F(oL2bSlje#5Iwp=j-vmX?Pe#B55PVfF`k20;T%AH_awyCt!Z&GF%q7*u(w_XX4vM~$FB*5g)hyI zuELS-7XiZR%{oLveHmh6ga|RRkl=~efT1RkD z&c^xr$!PCCx(IzoZy~viqfX;IYf?pknb7G}eKCl!_o;ff)eL3EMzIQn1nJ1bfkhyx zA-X|I&(5;Ujv18Eg+5!jkkVVJap(Hw5gItU1VojA1UpZ6b^;3UFoM7!k4@-u;a0!Y z3s=L=dZ7${k>7!vV7O27<0?E4wV>|{rTR^R?<&=Wa?P#UJ z7Z*DlsnuCtj%1wLW2ZwZ0gpqT(e7?cbX8{!oGtv!=_%J!*bfk`B6AD}Breq1-j6>y=#-dCON>*G)@TjJl^Aj!dkuO+ z-)D|drR>oW=wVR~IxKdaR!x_C)MXV~XZ`Yi96#fuDf4hP5UABOkXb8rd_QcqrSGS% zj}Gj$koSE5VXxU5w^*<}?Pi>ov(ks$wWNYBW^{E6b?xQCjKh_yDv-1AMi?Lt;b3u* zX(?n@9VHk;S>zlC4y1S>)uBDnKaSFSslR)77v>)en-aMnJ zIt|jtxf{2?uWt_@qz*Alo@Zn%E!0O>bcT&|atOsDtBGB;kN( ze2ix~K*OA{G>YYP2C|>`OLE&>BRwCu!a)q*vSUZ&hBS5(V@M%mI>OD$gzGW~xfSJm z<*qj2)=1W(C4jd3Bzd%J+zMGD<3%29^x%d33Go3&*se~?!K|^-q_+a*@pWr zSnNUuo>*nkukm&e=eN8Bq)-+_Nlc`>#O@1NTZ$%X6^=i|`x z^^NsF#Pvuq?#(R)aAqQU6VS6V1v`sl`;|M7f|7*3*dFCF>+2uF{g zmpX;yD@b&_9Yqdfhc zagzZ?BbxK4mdhD8EWl{CV=?y3GT0XuXHPAYJt!cadmc-9zqqvN((>Vz~#OT96_X-0z8c z6G&=fQV+tF)QUH|P%7Aak`jgAOM0`i+;01eLD*EAO5d1X$3{%xN`Gmlwp4E} u?rZ8?%yQs2F+L)UUGJa+sTZ6J4#uC$T%+u;_p?-OJ#llTo3Qz?GyegaS+gGi literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a3cfda63da4a1c391f6f7d05d227420a3545b9fc GIT binary patch literal 5089 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b801a8bd4ed7ca2fa07dab27571396eac8948826 GIT binary patch literal 29870 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 G{XYRY$EaHX literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..136cae1fdd7c95f4d1fb41988345c06e340869d3 GIT binary patch literal 8387 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 gPv9#DF=V!Z literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c134f320bd1ee8c0163918873c703071540f5b24 GIT binary patch literal 6371 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ed9f618e356d5dad431c684deafe8577c856eae GIT binary patch literal 4291 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 Tyf>yevmRx$#d}3o;T8Tr2B7r+ literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6478048e58c374cdcc063cacb327da08c842137 GIT binary patch literal 59219 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

&fa%2vd8uRVrd>BcJp{j-KXxKLt6@; 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 GJogh@eJC^l literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca66634e3e5d2ae45604910bbe7008cf4898addb GIT binary patch literal 13879 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c41beaa8dc76f11ef61a5bd381a3f7a35b9e6c3c GIT binary patch literal 3189 zcmZ`*&2QVt73WZtD3hYerBqR0mPX&EEK9Z$$Fb_IlC;=1K#-)!qFbmaxU@L3m`I{Z zQt>+Qp0fQHdMn@@`!Dg@Q_g$Kq3xTIlQ=Cp0B7Et&-d|r@6l5fiG!BxuV=r@a@;>D zbGr$^Jm5GK%z$vXG3OwMpQ8mo<`Jc1^VmWd3qT7_d>&sU#)*YE78#$ICl^~|iP7R* zUZln;#Qm0YlFrsooU=v5m*U&lSaH5`6leP) z0?@zZ*(ki_r#$Qs!uWLpc8Tv0;@C?3E&n5|z`5iVoI@O(;+)uD`8;>Mflo{ z5|;LYyuVM^|48|*B^be?lcpTStp$Wd#7|d|K%o}Jz&kJ-00{j!Y#-+>2T-|K`6LJ+ z%&aqSab`_sWb!H!=q~69c@@Qj)!Ypu!Cg*0Q=pUcX_T0;z>N~#bQ+M*{{>w556-W_ z@Zq9A^A@D<%>4E1{%=U|D)d(U)nzz?H&)&S@vXCU7y@Iln71r{9fS_-vqJA20?h9( zF3IwBf9{^$9J|vyJm?2*NcLCuiyT1hkEWf4|YcIL3~A*x3Zt#Pdn-x%&f|Kb%a!D)j zlhR_8v=|&ME0QdV$2Fv4D@s`w2r{QY1un5kosqs70hGbScULqa`4sz1lw0C4L79wO zuu3^5W0DiV!xF!(`*c1^()>-I_)z#V8-Y_FKl>9i)1R5(Ut|gDULHQ?-XstqIQT7f z2(kyT$nxzIP#X#d%Q&niVH@A%A)0_ctID*pY!}{;`^>cSP8i~_y3ap2GpDWGYX(;;01wbggnn=8?J2MUa+!3 z?KS*VL@;H$7)p`7WCey6CeR6r=hC67(dswcB-~(#A1<*=YZInr#9mHrHUPk=Ltr?B z;g%z*4;s?zYW1Y#-=Q=YgCvcREX%sC8-`IV7R%*wtyXKbTBd1syWM`jKNt*- zj*gCxkB7tI>FH^soUWC0T+}NCZ6~i44YiO}a~Z`*D_LF1XmVPWHAPZoNs&ca66^I= zt=6pJdbLu+Wn9@Q?-WbLLZOh)=itd~Hj~Mu(`il9R8>_JWq%i&jZ(W-XjY8-z4D=1 z=r)ZO&YT`(j=SkQyZU}Z+pVazf?Ui zrQDQDHK~Zjd|5P#VkU?5EK+qOD@c^U_}yx?Q>mCcJMB`bRVXxaxtd{Av)OVwUDWlQ zrezgHmt{qgBvFL@y#sT<*WT;4I-SO@S#P(ityZPc*s0Y@l}e#h%H{J}!=M%gbIP)G zP%iG5^4)^b$!B(rbStYh(rQ&#DwT9H){sXs9H4_bS@hS{yQJLTqXsopA7o4Il=Q>|F~q^L-e5gMWNsa!nK@KL6IXw>&}bu%}j?PN4M9F01o5gv^)qf>o!qK=N_ z(LfySqpv&Ymo0QsMaMhnZUGIlsIQ}a6?J6P7Ev9c9fS;oG=#oJD4!pVs4Amu7H|ci zl23b`du@DB&6!2*^yK(>&_C?%?zO51HT={RHW4#`h}dLU7DrknT9)HYHc555roTN< zLuvR#iSTj-f2ux&4;OK)Uib-0i`JRDwEat;mM%XJ-B`44Hq$J}LX^dx-=Qo`tG7B9 hs>#z$2LBb!kwFGJVLK(Ic#Tg%Wzb_%nO774`VT@s-i!bM literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce1fc00d8aa4fc4f7774efb40cb90ec1493d1d67 GIT binary patch literal 7373 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c19a5375878f17ba4cfedd89432d9b32bffc319 GIT binary patch literal 1644 zcmZWpOK%%D5GJ`#tz_AjUrCw<0unS)&{}DIXb(k^)Nu?KscSTD5G+tERw5;@y)SdA z*fQixoF5_``!9-fKBa^+Zp17xd?PV^GqHTD)S0oJIKBhC<-6SWE5hT>1$|C_ee75N z|)tBg$>4gUpF^4zWNJ&O%bB0iR2QAgTw%$?Ocjp zbgHe+P>Dj@QmBDUwb{wCxQj>rGmys}n+P=KV?@S8(Fuis>28Z@uTY^>#Yvp8T zYL+s{RDq_Vu757j}I26=WOWY8HX1wzmX3&Ddx z4hqG=E>Ky&9}C$|h9Z62j-$@iwvF{KpR|iei7)c7djz-??Y*6s?KiLY4+cqRhD$u? zN9lS#)J_m~yCPQ)AeMpw@u*ydsSE#&f!BPB*SrUeAU@^9XPo*5XTHf@ZgCs3X>kXx zUeOEJPs4=x&Xwk@@#b|?VI*l7#mxv4Cl|n{Hg~gB+<+I)#H5w*{tnED96~J*XyN=o z-cdzS9zzrpdO?d7&d#YaM!>(Dt(X%+Nu}I12L7ClSn-IP*Q^+~ZWC@F8M2+y<4;Cx zY)#16MqBQTNZ=@URN7q7l5=lE9rqZlRFpS{%2%}sN^`0{p64E~LPQH|vlAC5I5#F{ zAEF7CI00m8yHmW-*)1sHW|%f_V9^7d_Rk*ul8Vz@bd})Et)E^rr3iVH_Wy4xvHGU> zfoQrX5i4!{y#2j4WO&kIm55_)q8Hy( zpoc~^3laCUkraJRi?RV`WCfjCL6(d339!XyKX@@VT@`8D$@86`S3m zb#~YAF3(o~TWag28|c2WtmG|l)v~o41ZkLvAkbcbHygyr*Mi`95XM(4b}y4jsB~jC z2he6+Km?x}*#<8z7`0pj@;UqkJ|`~0IP0v`?zYUb)#W_eVU5d0Agu<5&>O&; z0wG9jI!z?LLnVkM%FvgcC=KOM;;ST=kUT^~ONJ@DbW~~z5O&I}mWTOsQuL!j!GnP) v$_?C7M){GHD7)XzZvP#YPtgQYYb>)GHJNGD0APf8o!XZSKF?{m%Mbqs*ru14 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f069b0717bbf55b337b65050ef10235ed2cf97d GIT binary patch literal 2440 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ffdc0f3eb3944a5a19e0fb58b614b1abf3ee6c23 GIT binary patch literal 1999 zcmZuyO>^5e5G5tql4V;;>Q2u%Mx9!$o9T3{b~=$iq$-shHnJ0sdVoO!6j74|3xIZX zZhuK{{Y$>~lvD3LbwMc;!V}Dp!(Hs|dsqOEVt>Ewz-W0z{BP57{xL>%G{AV_IIe=1 zL!E^~U0O@rw6>_Z4z1HhQcoL;hU>7#Z(ED4UmHt@ZvEvhw#N?Lrp-Sc+GNc?>Wda_ z&7Iy3A+F>2JW0eodNvaB7KsSym?3|qW09drN|roZqA3p~k*i+2y$R;342vXZ8BJEm zpG;9?@`Dw6$)ZTI6&m)@X+pq9GKxZxX~}~^3#s~T1S8fuR|C&mavc{zKNP8#m#Bw% zNyuA6c~wjU!6=HPNK440{!#zCK12ZghSH~*8(t&HsN}b3T4Xf-1gTSzuOwf_8a)ep z=;-+P*ksLFD49l65-2o00jw(p?U_vb7~e6exX3UzONV{{gH3xjGZ6j#VXyrj_R8tG z54$AGgeDqt)O%>W@wGlw>3NIp@Qz2O<;+hC==-8`lH|6XTK2(75y`nO0xRgWkd}QG zzO!wrEc-mS?Cywb%h4Gn+)5bbR>AH_Gt1E#2R4JTy{v;VoP@`;4}PN2w~w9ONtoGO zCZVWu*`K6UvolF`)$UGm9a@f;Ia^j8PmSZ7pDoucoKRxJ&bVD>_NYu}mRr0!GiB{m z*C&b1)DLMDwBtY8C7)VH;fc@R5xc8?X04>-=Z_GSjqr=Gw{gC-?5FdbQ)WZVi_9W< zxg=G)d&who=Eikya0MXl_q+n49y$Xy6n0V9vq? z9jsAzQKvP~wEDvrR~alM(>&sA-GOr{g(P1>VyQf@30I&ZJVS$gHAtC`2RG(Mm&E%b zXW0$n5hw)W<}#wNytgP|$jm{e5wwpGaLbLJO&|mL7voKmG$2MLK^2(6{|YIlwNcXn zC7KLw)_5bHu>SPb@C;wRzPdOaUY?)f$!s`2pWl>awLn@H45eg+NGa4tpV!1-u0kr( zOq!5Bx`c=iVD})Vh%YlCp$1n92$XdVhqVaCEWA}kiXy_3Lb8oKU-TLvPB zNM}G`D=?OY(iGyb7RzPAq?fK(cIPEL*rYx0AARj9uGwKu!duuC<-wMD81sy4jQb$n zTL6CnkJ^S;%W1fc*4o$Gkvrfri--yhO9Z@{aX8ZaPak$GQod;6ycA#c(0ny74^CO+ j#x(C@%*KvWajA_6N?xTep@?mX3bG_83k1m%_dF5A=8N+EdO3dhn&4S=zE;)scb%bt!1}+t=*wH?un<=jI#(zoM6P{+u<8 zKd5r?v$68pFwFRO1k7j{%w$&A>{$)VB%JH!dUnI^gOE2I7*&H`y)3WsPsM6~uEI-(hzVS2VuI?jxSZ zl^(E%xKb67%N`+GK=hbBL9~eIDO*Lf#Gd_V)V>_9ejAAZ25uz!iSlHkuyEs~-}f1 zq}b=6VmEN>FSI4xwT+i<7^%4C#tI_Qc9nDk;U*%E+JZB*z2a>S>yB2i)ej)(xy`M! z(M>5-5DA)?>BH&RMyp($Ah%rEYQooLJj$GgF&D$2zhyd(+7-vy+cD zUUvBd>^UYDsxv@Fxsn}Nz}{MJ_{(Rp;a(dRLuz$?4kEy-MO4ipe_f z)6h@oB#!q+I-gIa)19DmvmSCe(n)b+w`OM%meLTIAwiiJw(5k0aMnuwn5~d8YK03^ zbYwmsrYA3_GrrGc)Av)y_ge|3dmIxliqdHTQ;nplG8<8d*XfhaZFKzBF%0PK270}K zZZMGNYA4ekp^c_l2BHPlNSud8jdcE0-0n%1bombLIwoVT I?bsFjZ)Z!GtN;K2 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..67bb4f45a09a579092a7ef37c988a122eee36a9e GIT binary patch literal 2177 zcmcIlOK;pZ5Edz|_Tfhy*Kz7oiS5JLHr};2NDqskEzq=pfx-bCA`<>^{S+##~na-DdBzdu;XB z`d*FU7glHO((Kzo*&G!@YN~xH;+;!WE_&VxS23)4-nW;wS+p~k4vkjkMnR%zkhNk> zhsOaw;lMKsC|G)c*h6g-<#JPPQLhg|3@uvMi%xv;&0XsygS zlrm5a!`fh(xr*yViOew@42>IRm~RvQ#^h@Q#^1oCj&c|hh~YCgMa)htwZNRSy6C4! zTN=FvApStiU9(=HW28Pxt#gajQx|CC!Z~YbJ8ir|zaX$}9%Jn3mt6FJ=)plyDZMJk{?K!)fV$fZ_u+MC<2pT`L_fq?{YkYzATE33i z%9*X}FB=t~?xpo}E49z93s*PO8e9F%h9ujNxcjsV0JI2#B8ITs9<#E(g#@(_05%wW`}ink%gnSXu^o90LF#tHayS^&z) zkyPQJkQk@h`!nPZ2y8u@5-J#(0JH}G8IIRz?;Gq7$b(ZD8)3M?Sf>cXY`YtCvR}an zwl19Owu`fWk_q4>NWdvTClj5=TCpH8Ts|&_{9QR)I`X}O81)!}m4LRomArR#_zbE2 zqDl?`7z5m%4XMnqAMZ?;C^<@?sqpKP&QMpGu6KpVw0%2K@mMAStE8%XIS;zi)$(#| z^~r<&X8-ZV*5=06;QJ z#ZlnvZ2oy7v>)2O1>hs;i)j`%%`IP$l5T#L)GD%a$vR>BmCU zX)4pQ)tn&)rCHa%?)R~m)yoT!*c5Bu6p4q7bm^IKP=52b+S;@woSF z`@5d^_Lg>|)2#V+X5OQ?4`jaGz%E)vOQ-=qH~%kV;IRX|gBOv5R^aR4RfOT!dZX6C ztb=wsi$(b6buTb5WmEvMXt?|h%sKO_sXK<4bBn~>HQX|gj+?bSuP9&$6r1%A3|TY8 pAot_T5QSE^X85L6(1vC?>&rb+F{cDkFMkos%* zOSy95FCZZ??Jg2yX=a|~_x$wCWRei9n78Z4jF6v4@PEY!-Vj2a#zhf96jiLITP7Gi z?m-=h;50)K!T>@Q9+(*J&mn?94GzqvFx3H=JLI9)$!(9jD}YR3MUXMAKUW zV+c2s0~J#hd?vHu{>4?PRhpY^Q`Vr;tx;_aX=P+ht#2(zX)zJf z2d;B{^uX_<0#Mak!F<(6>&%@%;wy9@^VO>CV-!HUQi{>y!~AA(`AJ^S-}TeC$SRku zhf8aXMOhR%TU1}bIy5OzLhkPOAHdD%q>`n znjV2%W)2j(Zk<>7PI^-mHCVpwK<_yEd!W6%c>avL(! literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/_typing.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/_typing.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..042d78d196dcc648c3937e8aade74d6765877638 GIT binary patch literal 1773 zcmZuxOK%%D5GJ|1+Lg4Dwxle$I&$Ee*FVG$53k$TwsP`F&D z@-?~kPxO|*#A{Ce3puo%*|mcN&I%fm^UVy0-wc_xS`7kUFes)UTtYtJ;`6T#i)}(^ zKBa_6B56z#$|=P;iy3F-=x_%{Cw3E$dnM+^wZ!Ls67V3Y^Loto$zFD}Ru*=@PZ7*2Zk{gcAI{Bq@DElyh=J`lp_L0iHp8 zGg;^Bl%z~;@bwa_1NI8A2ISM_-4gS8x5S!&odOm@ew%y~uUNiaEXOVxGsyWHRhLV$BbWbX{0{i7$W`!LRe`$GC2t*m zS2fg@x~JI5eYFMNINk$a7knQ~h+O-J@`sWgk=~69tU-_3W|XFxiOeiZ^8;81N9uK< z(vj-9*4arHHaOIo$wpah{o}=4{T^xS{g#6HPhi~=`>9bA9mUUQr>e&;9Ef_+x(vM= z&GRBw=+EXR7NZ0IfSSD$&qt#MZPjg-$;<3Fxg}hD?LaSDm@#-v*D%N_x# zM|mzL%HZjQcm%2Bn7&KTZ+)Vzf6eZo=a$)*eCTCx&?_LIxPcI9lqex=Lx?1kP$-y( zLcA`bxI**>+T*D|6YID{q94M)BrPCqT2b$bV=>B(v6Q3iEYh#`wh(tqbcF#{-O(}qXIe4c5O|EeO{x3yTM6En5WEH%|ZZi9bW&a0AME2o5V>Qyi+ z^M`7>xr)d7?vGWvynvM?$?jLfvOEQ#(t!lI1}Xl^K)#&cVi z<<`j;xm|+08mm!xqx;ctr19?9TGdTeA9$eAH55K#t>c%6&&2M}&vt*=KiIQ=S|mfI za~+_?0}wm})qK&fVsIy&8}1)G-O)N)@WugR<=i&+6D-*?tut-gJI3f4+y+&x!!rm9 z4~Lkg_;uDZ>g9u5$0vgf{>M|Eb#zNX=9qLl{ cU&CpGw!y9>1ARzW82fj_51lpVwi`PC1I{<1ZvX%Q literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/_util.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/_util.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c636dc1b7f0e48fa5ef2fb057a50597d40e1a40f GIT binary patch literal 1433 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 z zQ+RD*%Zv0_(G~&B)w6r;(1= zLsqH}qF%biE+rME0hh5^_Sd2;=9MTGex{EadqDan5*rT{_0 zyB^}Tl&BXk0FbJr^kt-xcD8#8A1@Y)^vVgpO{DHnC*2blmw1Qea->~bxK@btSW8FR zdZX&v8XX;5yM=tTZP2qcclD}mTrOO?ei`qt*hZlkm-54WiKs5)VGlO9I_!u!VD3U9 zjTR=twn*L->0`TdeTyK_uT~=2=a-2Z1@gACd6rn0?qsB*9LZH$mg~g9N_U77WfM{T z1-g5Gf``$s%Z7rBUO_|IuM#T?L*fN>BQ6y(sm z0ET=_iEDT-0D*rDGeJfBd`uq31qU)^iV1qd$jZ<=14Q3c6pW_-O4CrLde?7U8I-l3 zX&L?pm}q*@LODK8v4Y47J_(&5TqVXhbzncbY0E1`%A+iy$jkJg-HG#zf_4Sf{LA!a z$4ZOd(1DbZD&fCHkANOcdQh|->3G`+)}E7|iDf>%CbG>^=Ut~bdnrQ7R|!qTl@xyM z3F7CddXXL?y)#fkHXo-}=t&O~5b?bTK1HZTk-9igBJvVE+M}??*dPhdh zqh9@zf%i7(iygz>W4}}d`x}4t$EInHn*&Il35fomreO}5qiH?Gi~sw7VGfwb&^}}i Jn}dVB{|&|#Qn~;D literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/__pycache__/report.cpython-310.pyc b/myenv/lib/python3.10/site-packages/PIL/__pycache__/report.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bbc9e7fb7ba624092fa20bd104092debab3a186d GIT binary patch literal 331 zcmYk1OG?B*5Qe*xI0@s7;3b4CoL1b5xDY`Q8E}_P)3GZLreF4BB!}=IUMX8wa|Ks+ zs|#yURbNqmJ@k6LMA0e|1|H*Qg8!CBxJ3xNvzTziu|N_x7$ctXTx2qDa*QD71wVRE z)x|Ta%R`z_GX(9k9gC77;&?Eo1m`U$11)5(pn`*poYOJFg8flOMFAM!$ijZSXzZ7wf}8$FyG_OfF=II?|sBo@-48#B$-wbVQaxJeJWMRY5) H%1*LxYl&OW literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/_avif.cpython-310-x86_64-linux-gnu.so b/myenv/lib/python3.10/site-packages/PIL/_avif.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..79bbb6114866c3badeece31eef5a4614c0061b3c GIT binary patch literal 87889 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 Zr;Bqpj*Q&6(Q3ClM@NvD_TBOIe*h(p?u7sV literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/_avif.pyi b/myenv/lib/python3.10/site-packages/PIL/_avif.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_avif.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/myenv/lib/python3.10/site-packages/PIL/_binary.py b/myenv/lib/python3.10/site-packages/PIL/_binary.py new file mode 100644 index 0000000..4594ccc --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_binary.py @@ -0,0 +1,112 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Binary input/output support routines. +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1995-2003 by Fredrik Lundh +# Copyright (c) 2012 by Brian Crowell +# +# See the README file for information on usage and redistribution. +# + + +"""Binary input/output support routines.""" +from __future__ import annotations + +from struct import pack, unpack_from + + +def i8(c: bytes) -> int: + return c[0] + + +def o8(i: int) -> bytes: + return bytes((i & 255,)) + + +# Input, le = little endian, be = big endian +def i16le(c: bytes, o: int = 0) -> int: + """ + Converts a 2-bytes (16 bits) string to an unsigned integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 2-bytes (16 bits) string to a signed integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 2-bytes (16 bits) string to a signed integer, big endian. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(">h", c, o)[0] + + +def i32le(c: bytes, o: int = 0) -> int: + """ + Converts a 4-bytes (32 bits) string to an unsigned integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 4-bytes (32 bits) string to a signed integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 4-bytes (32 bits) string to a signed integer, big endian. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(">i", c, o)[0] + + +def i16be(c: bytes, o: int = 0) -> int: + return unpack_from(">H", c, o)[0] + + +def i32be(c: bytes, o: int = 0) -> int: + return unpack_from(">I", c, o)[0] + + +# Output, le = little endian, be = big endian +def o16le(i: int) -> bytes: + return pack(" bytes: + return pack(" bytes: + return pack(">H", i) + + +def o32be(i: int) -> bytes: + return pack(">I", i) diff --git a/myenv/lib/python3.10/site-packages/PIL/_deprecate.py b/myenv/lib/python3.10/site-packages/PIL/_deprecate.py new file mode 100644 index 0000000..170d444 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_deprecate.py @@ -0,0 +1,72 @@ +from __future__ import annotations + +import warnings + +from . import __version__ + + +def deprecate( + deprecated: str, + when: int | None, + replacement: str | None = None, + *, + action: str | None = None, + plural: bool = False, + stacklevel: int = 3, +) -> None: + """ + Deprecations helper. + + :param deprecated: Name of thing to be deprecated. + :param when: Pillow major version to be removed in. + :param replacement: Name of replacement. + :param action: Instead of "replacement", give a custom call to action + e.g. "Upgrade to new thing". + :param plural: if the deprecated thing is plural, needing "are" instead of "is". + + Usually of the form: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd). + Use [replacement] instead." + + You can leave out the replacement sentence: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd)" + + Or with another call to action: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd). + [action]." + """ + + is_ = "are" if plural else "is" + + if when is None: + removed = "a future version" + elif when <= int(__version__.split(".")[0]): + msg = f"{deprecated} {is_} deprecated and should be removed." + raise RuntimeError(msg) + elif when == 12: + removed = "Pillow 12 (2025-10-15)" + elif when == 13: + removed = "Pillow 13 (2026-10-15)" + else: + msg = f"Unknown removal version: {when}. Update {__name__}?" + raise ValueError(msg) + + if replacement and action: + msg = "Use only one of 'replacement' and 'action'" + raise ValueError(msg) + + if replacement: + action = f". Use {replacement} instead." + elif action: + action = f". {action.rstrip('.')}." + else: + action = "" + + warnings.warn( + f"{deprecated} {is_} deprecated and will be removed in {removed}{action}", + DeprecationWarning, + stacklevel=stacklevel, + ) diff --git a/myenv/lib/python3.10/site-packages/PIL/_imaging.cpython-310-x86_64-linux-gnu.so b/myenv/lib/python3.10/site-packages/PIL/_imaging.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..c9e5c4f456f85ab31e330d41027bebb9a49e0620 GIT binary patch literal 3345225 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"SgUqg4?q4txy;!sDBX~N*lf$T%bY6qnMIx@ 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

M)QlM@wB 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�-54Y0D2bKaB#PtyFA0O*NS3>5*9+ zk;uZm$d64u)f#!%O}eHLNpRqcwcYL^&)aL!9+e9rPZOqIHwK)_j9O9%$YAA(#BLL2 z*I=41U(-^e2|QSbQhkPwaD?STK-!S`yFDOygT>tp&3)RMYXYfR zc6I!0mdf-M-32~e2U30pA+9AO+T|0i>rvqQm8x8W@FCYLxW<}$imA1MUbE-}4B2Qk zn?P!oeGtvaE4S*Ei|Iza4{E2;cloe(=+XC@X@z}ORV{sOrbqtbS7@eR%3C|-o>clj zE(H-acInp{Zr4(>5qR8^l+bcB3fMNP`JiR#=tH!WeG!nddRGU+>8dAWZ$KDxvM(U~ zy_5X`fl{gu7`fFo2Lr-{lQROsOPm}E2$a(1Oe0_8nzI7JTb-O85UzJ}I3Q3;n{$l( zsB6v*2%mFuUO@N{C+7zQN@;TsBmc`a7X*Y~I=N>+_>+?h0|KSAxtEc1_D?Yta#29o z$H~0|!U`uB2Lwu~zK@ajbIpAN!ULRK5)de*`qJj7b zGV$b{>Oh}^Eu8cs8|N7CpOva!Q-pB6>*0@KGj$BOT&b!m0z(r+fIiCXyPRo^tSxug zxSBv8#CjmjbzgwhbGByDn4G79G$yZQ0pg_CZp-rOgXW42KwOd(kuXbIq<_k|ex?Yf ze}Aasr02NM)BB^fzsT)WOjsfZrrUTj1^;_T-G&B-xWu|(0u$?kF+b{Icd5ko<86f> z`Q6gA8qC@+mGSL~Gw<9tApcJJcw0g(WRybHjTfqJlTam7id-_G!P(>tUDFoIWro~{ zJZ4pTVoM^tV&!n)=--=G_54dsi=$6Btx{VYeTiw6+T!RNOsmuuM>$C>l}Z?*i)RF)5W&ueVP&z@2|lDXrd(k^YpI<66q@ z3HTnP);@0_X;I2n33#<0l5<{9K=@}TdjrA;o$Lz;pLDW6Al&NYKtT9`lY;@_H%`t7 z2!C>NC?NFOu5|5kg_MJhizO^80`d`hd?@j9VGMJO9-+puDxa)n;qHb8q~`9;=G!*V z-94V$JdSOLnr-LH6>faHHw-q;lCe}rrM!_hxYu=%X%O z|5+x|!d2En3&=pz2@A#D5!1`R-wQsydKXk_5Q0flXiiZ zWyJ^L-0E8_m_+|movrTdOS9<@TFRUQE><7KH+{vsCdj8M&s~$A0P|?8(eC{ zHl3c_(fBc|;*Dn*I!Sj;()}aU<^LPSpP>OgW|3G<sr+Jr6 zx}*VdDe$M-W_Oq7?X_r+%3WPruNz%T6%95PCW2M zYEAce=Iym;kIIE}l`N0qh4){;O~?op2!Dv zxIEq{?g=pWyYF~5@($Z{c(_(CBy$-sUX=DXSI{-shEj z1HuhX_63ApPVNW@pYm=BQ!CDE`JYifKU$;PCIZ5TT@QFuryhcLUcOnYbv9db zO&~SPS(7GWr{&a(@!zS|W-B)$c!NbZ(%gSob4?&MySuSoIlAn2ZD`KaZj?#X^{-kR zqLb%0l9N|yDNY7H&ZyP`?Qt(Ht7Qz~U?+P6!u_1=3kVN#vOgd^)X9N>@E9it147fu z83Ex;Cx-&U*-p+32p2dxD$=LznxlRrTgcmwFCm_7c$+-dH8YN}x2mB|~lg}U# zu6Ml;DEx#|F*>!s$>EF#s}+YBdcfKQY^k+34m?(=zQ#p80pS!UdjrB+C;I}zxlZ;6 zgl9Q95D;GKWoEXm{-NP#JQUXW+V@cybdf6jJyja4~)G2E)UH49+(~GMtS`m0s)fC z_Z=3kE6h71#0W1%yGdk15jilfi)Ylj!=hdcLj4bi70Tqp%7d%_RNc2|w6&Dg33$0t ztuyXTTH{()s}sUzCwl|Jc~15PgiD<44+zh7av&hQ*vY|w@M^FboO(6%&wKz`5 z!GafM$-;|2Hb=C9zch!*l7-+7Yv&H@x@3{}w^=Vupf|V{NW*E#Lh`tjmMjlTdIqga zT;lZ212d8bMwYBRFtTJ3B@c`&SqL5&S+Wp5WNwrt3&Eo$OBTYX%{wE61usRr$!>;ORO{J)Oj>WyQm%M`|E5%5ZbP91aNoWi7TEx*RUnGX74)(W|N(smd(XGX73Pbwuuj!yVwqCOEc2xns1H z^&$?v_LuS~k~N>W1KPO**5wYkq_^OJOZp2AxMZ;4fOg#h@$ts^ixD`4p+?8VTeiK~ z;0M!@kPp1;JS71<5KSO1m8GO7AkcK0sYveO@=V3IT|6A~HFxm{F22?>N9HI3xmIlf z5N@_~8mVVkH77I?@aRBHqysYt&!}j*X@$obyd0P~`an5QA9rcO#a|_i|J4U}K;x3e z%X?2)xNy}hdCSM%i{ihF_Fp;wzyl(RuTlta)L}3zsnUBNRsLP8Fx#X`|9w=c=i923 zZ}(NJHhn5Fn?ra0F0B|nzt^%c3VeuBt#2s&xlwC@Gj;W;))j>1P7Vcx1DqTV2uJ$j zwOXNkZc*7fB%iURbp=K~!KseKPv2NO;MVyuTUQ>Z+*7oi=DLDU+yU*}0qb%H$hwj{ zK-QJq0kW>-4rtdM5Z9IXk!gMS(J^UVsSiH>ig3JLpAWq2x+1^1qA75=d8rBX=!^pK zbG6tY&|g|?klgLlT5PZbx5v4f`+Wqz->bP;eKLrE|Et9YVSx>7r0(_DN8RlMF}n`T zygs9%WlgC&T@Iwhratbe7Mn(+KD0U2a$`%&uXK0}LJrH)Vu$DGn8+>`8u`rsFfUjC&G=HyYJ?il*1atTc_az?UgitsMw&b8;vk zyxqy+fN;IF*xIG=b6WbI1m=r+q;pRK_ccFeYsan1-J#_)*N*cu2efkstjirBYe((? zSvztE$l8%Rpj~$Wdy@L_eNR#!JbRLS;9b`a2J3-n0&!`zOd!y7S|*U(!_!(O=#&(T zvn+S<2rhoU#;;l?5O8(1Od!0@B0W-faO|V*VcnC|9c+7&x_@m?QXltJ%S3%(3*sUX zUq5!js!Mt*up;bKyBUY*q!;XnPM_+$N_9vl(dnn10oADwa9>$7WLv9hX)8;g(_0{p zx+g6VCu%7R1n@GWS~GOY%(XRRE${%Pss#e!NGFE^!u_2b4hRph7F(+oo~os9E?`dA zBb}QIxDh{Q3q(`7v$UM%0)bE50qxuY>v9Lk0+BmF7Kq#dvOwexXxAOU=Au4)-(1uO z&*mZ@c-IA@(O|g8nU|VCkIpC%KUb>;0{x{`1IgV!tyKd%aC@9|x!*_d`+jO}wQ3;X z|7z7hILrn%Quli7qwaRyT-3d8n~S>BZF5l{_f)G!ePA-%)5Mh(AuS*B0z$Q$afnV@ zEJP?+s3{yAW(|tUPhkbnu`JgrD*PL_~!1%w|tc|t%S;PQFV zgDv_?Er8>|6&C1=wg&_cbn)R~c^$3>?@JcMCh#t`Mn3NZ9-@7u^JzVGWZsq1g&Rll z#$dWR*pWPBN<1g!sWOtMirgN|Q$=p!=cyvM@bgrWTljgZ$SwRlRn8wQq>B9LR-P*7 z4;4~Hesn8OmGfs6Qbm4rD^Hd4hb>h;YFQyax`jZ>R2vF}FIdDzfMij8>QcU1vvO{h zR~(sV$wjoQeS$`ugo+%Px1PU!pr*?$Xkx(PQs#vQXWygKr}K( zRr38R*-o1zfmH0DRz=RDB#KlVnpQ>5uq2aI9G+H1PPinTRGdGpikyE*N~ySTS`|4R zv&Koq#nY6cn^Zh} zS`|6bvvy0xqo!4n^FH%aDjqkjifjXzy;AXnX;ow^z|<^!0j{?(^?&)??3KC6)|F`| zTz`E=2{%-qEW!=f=YeqZ>nSeW!g}@!x452|!Y!@moN&wQ=_K5$dZq|>NIeOJJG>rW z;f|_@PPpUhQ4#KhhOUpCg?r@{Kwx%T!fmggD=T?-uU%q2yM7t@dD`zjPfOWg0Y79^ ztN#~Ci&DNJ2BfUMA%<|6>I>N$5GaN0GqUBH{Q-eeGzW~l#5D&40;OoqF!GJAITR2m zMRTT+pK{Gv0fAC9XB+uT*BlNAl%hGu$bEmw6~vag0fAC9=NWmDYt9b{l%lzZkxzEb z1p$FlH1{;}rLMU!AW(|tUPgYJKZz735>VinnfGI7Rj zmb8IBamJYt`)m5h^a7r0870>*2jmzc}}hh2=8|Ckbv+tCl3z@_d0o0Kse08a^Z0S;S?uN2nYncx_&`;ods|l z_(rQN*DnYj=q}eU1n~k3ViVZ5KH9*yEA^LOztAt468FVtAa{ZF0id?^tDhF9$<@yDI zl&P*?5RSHpjR46au2SY^dBu@=wzLrK7?YjaBncHcFv+z$*Dv*0%MNXN*DstyNdl=j zz3UfFsU(V2oZj^dXIPR+Do*eEg%d6bCl#l6{lfW|q?C%&yMEzxOyWw#>0Q5Yb|$%{ z;`FXxI9W3Rq~i3hUpRL&Nu=WRu3tEnGm)g?^sZkxvoqPG;`FXxIMFj9rQ-CiUuNm# zVSY-*>0Q6D4Pf?4#pzwYuoYlx?$-57eQwG=y-}Zb!u8i@lyF1!$s*iveI5umznA{o^=nlv+pSIZdQWMr_@WncyV&wkJBZ}ziTPGQsALK zNrz-({k)$h_!=#%k0cQ&h3pLoltT6y`Btyq9}wQ_ea)yzg@ajVW;ag75 z3<#9c=ByGq+sGez_2Gcf^RwgwsXiwlPzpJ>M9wpEj#r-_5LP(3M?j#IHW!r0J&iol zt1k=)Cp)=UK%kU17nR7pjeM+EUmOrNI=N3kpp-WEEs;x%JlCr)4G0%GDZgK<0;ROM ztVHf_i`@_=xYl9IB(Pn(`x3nF~o$;$%5cf9g<75>Vp!ZM>2Q^@B_8+%@2_1n7? zVwa4tKOlV3_42NZ3lg1v$>wbn=tgI+Yfc%QzLP==m>t)jy4{gu4A>giB=9%Y?x+XG zjZv>Yn5b8DWc*&#?yY3fTpZQvAEvQALQ7f4fd6Dv>*^mRElSxH0N<#GBrZJxfl|oc z64__u^m8Ajgf)rSJY&z+nZ5GbY1StW9|k-zim!vSFrO(Lm2 zCm>J?Ik!a4Gjgd{pC1s8c5;t^Kq+l5D3N;_d4gA87!Xc%a<70uDQzw)k$W52_UelR z!kJF)6A&n+&3#Mc5+k4N)t3f@=P4P_oC>cny{+5BD^&=tca1`3rBp3Ul*wNotQ1Im z&+;}YO(|b31Cp85!%YaJmXN)cXXJ*EeU>N$S4jCbjhak!gdDI?;a(vJ&DZ!x$QkA= zcS1XNLUHY5$YVCKn?QG8_GNdO`Th16anXHog~D0Pe!0aB^vNqPK|}D_C%3o}eEP^O zZUoQ&E&Z12tJRNkt8*YAcvf%OVF|p}@}-F@@m{pM?!GRoEgz$&U0~zNJJOnXqn5IA z{z&1SMvVY_)#oxZ`UApTCx-&UJSXK*3l;X!QaV|#@DMHIYhmIy4Ui94K0XYX-X9Kg zwAHANl+P$#M)^J)QXA+4Z{-7Tcc9H`#++PL#OX=>l2 zrOZ0u=I^FMa&Gw64-)(@ErnX3<}cDR{vL^#A%22cqDSH{n8aDTMdfE|DUFmZi@(>5 zT{F#yHqh-F&Fvb+MC^-eLwfyx-hXxii1yI)BI~&cbj!0dZ{?rri`>-5%$RC*J0n*& zR5qH}j0a@}?aAC0>vr*5`naia{_QDR7ilRm1%BG7@oO~VZ?wpd?^5_hEtBu!izQ*c zsz*9sED84wKW1+@yG^;DXxT01`L3n%rF@}S4SuB=-Uj+uM(_O3G-66gdf+VWxmrUI z4sxZ7`#o5 z+|$MEPML#OUtnHs0^PV4kgnuw+CX|sOFxoFxja9r{G@Nf7xTI9naJS+Qcvaw5Fb?Y zquzOGe(>GdSf)$cxcZSIy&AchjcxMS`P~ndZ_JV?%lwc$DPA2ST^{6zds#iBVr~Lu>+JsQ#r5 z(jcx!c$irrYZ(w1S8G|_2eB@LCGDjykkM9k>q9K9gHjAeIH41#DQCY(Hnu5D;{yOe% z12Ht7V%q`9&29s+At@qx_g(h?(FnS4SZJF-T9+Lgkfzf~ABpiw4gkIHY=>XnQmJx{ zzDcW?uk}$@`LBM&`;h}f;)-6(?fi0D8U9I2@jP&sQLX*7>%+{1QQ-ZQlKAuoga?{lYqi2N zw2VKw7cbY5Tgu1RlgA5udGJ=5zpK?4S9!CRG8cKRINj{V=t0>`dhcC!1@ictlTTB5LQ844WW=O1 zN{U`j`tI44YS>$~l=%*HTgO*@DVcqumZAlGic+$A^aq4jI5`v${>{nZfbc^n=LduZ zIvQznVL&*-$;ANyCyJ&#bgdfh(ec$v;aR_1v{{clwX<0S+*&n@;6BcF43mA1PyfYy z+5{e~y~(lz#OgE!k$em-Ah8$c0~tiBi{yr8yE+M@Z!W4+O-#|4qZm!ptd^N&(iYGzKzOQ zzG`D>1AQ!`cj>SwWi|jC+Oy1B`N>!n<~rFM5SBXG7Z46}vOgf4;G}#itimZy4h96A zEWOVN2=4JwJWk1FKQg}c8wD_Un;N;N%Zq-ME_n5m=G7+9jcWnvN^YY9=`F1>NFL?V z8l!6peG|Sozv`Ze94;XBWWECNK{a3NotNfob-qorqx^5hMlI6jZq2Cp;C%IVjR5lp zn?j?&hK9aZ-sc1ES56v8uj&Xev-F5eOCTvI4fKN-cmwHuApvHwHvlAErGX*va&I8L zc_hFb7S3kHz z{g|zO85bktxARr9raHXTcfUwZX83BPf_(};w zWLPN=)9NRBGra-f(M}Eogtn9Nz>f+9w_4f}Jkp~(RgaSHk%_h&3`4A`f$Xs_F6~71 z>lW1}&})_!=8h$iHb{fGnBrk(fh@#8TwE>0bsxmK43@N)xXbVz=v82DqQhq?Ot4pN3>o#5AZe5Q7 z=}msax777m-t}0i>%7w@onmx45tk~Xd7C+FtzaGrR8Ab*Lxl>pX?&P)>Jot zL&to(x#O(*aF8FSwP?MkarOmT%Pl{feEf|ycs7tk>up@Mnno!*&ogwy$o7y8RP__D zOXIzgUoSp%N#GE+ENWa9e*^Y{6l&MQz)RJdLQ@=ima6P2y=Coikb!pVuRi*2dJKDV zdAfS|1s)#;K*v3e&Gg|R+dR1$q{nJAIIE{|7R|lJqH`9_eby-&m|Py3#s3_dbL-Bb zIfCBPIA?M*NWazD!Bmi+owr>V8F@dUm``$;DZq<=Jnnn3S6yR#KtK(F{Fp0ODoRlAt>-B0z1gUP6u#N1n-!j7zG$AK@XJQE?^W1qju=^? z5Fg3j#cck62;Qmgc)yl%6$AW~Qgh`uovTZpE$QU@HRZo+Rn`IT_A2SLs8xp4oeRyw z>mH?W%qifxN=e7*N>E$5SoweOD!^BJm2~Z=RsKo&>%GcP6yD<$aIS_}Iv(mA@e<_^ zwrp4j{9CUwv$M*hl^^#iFH!g!r-0WfB^?iUwsNELpY$rgZ+ewEomGCO{O`QVQJRwv zwlrM_Y$+uj&+lwylk!jTD!?6HWslA(S1SKHukuBO-*O6gmr~O4!p>HDbY{%4$+8Z3 zfKpOrug)sRDF0BevPIz~MvVfmP)b@^T(z<-W%X;6f0I`MzTd0t(^=&vJxje zJn>Ui(Jkfube11y6Tby~lu}Y<(k`^E{06TA+~QRx?LseA{#jO~34DcDnPgbD#PGwX zjXSSR>s{mBtb3zCO8LxG?sn?&Sy~F&8xR&aIS~*J=x8zPKc3U*dafz9flI7GIe{T~ zgT)gV&HY|SB&RMQHOm(^ap3jJ)!9akSgvL93}lYHPP^S@-H!q(D@P)HPW38BB7D)w ziGc8*-eT^@_#qozf7}$?K-!RY$LMMu)yhpf3K5L3#I6zkG0qYg9gd{@e=d$p9y zYhc6LZvlIis$QsyFw;r-(GC^nIN2BGtFW+>L^wl9Irjn2b3OTeDivPoq`W{_g@4qt zeETmZv5sr8DYk)2twBj*1aGkDdz!;XlEgr2mVMt}-OP|gR(t3#CN1~?H7GvB0cN04 z4@^&`hdp9wv4}R}y`^}M^+0W(`tTj;0L=1azS_ON=LvANQ7zy}N>zD+aGI070pT%D z_Jt7@#yd%btCW;b1K;aTLJ zJONU3>O7$V`it=gpRESP_=6c})C1E~w>-fj+8`g!(e|ki-{CQZ`dp^wcKRGy4ozRK z8t7@<9?~kb^%^_N{qP+L{zgmjAaLeCr9<-kWKTfY&&l3^aIlko0pT~jLbK2FXJ2rHeO z7Z4ud{TPdmAHK=_4|ivz;I zJ8kUy1cZH@+&3VsbaF{Rc!-lr147fu{Q|-hoLm+V&U14AfbeuDmxt%55VVwYDex_( zCog~bCdX~9Dco0(-@O0J{?atmg*=~NZ6?@HZGw#e?^UY0U5~J*rK3FCfxw&+O`l*7 zbItyMu*S)Ofbc{o2Ll3gO4{@Z_A=KT3J7m=a%MpIkdw0l0&_~*^a=I@*BlNAzjty@ zK$vIgDDMzJU`|P!KEeLhHRT=bDm>Q7Jp#gJCl>?+=9IMQ6YL7tTo@4E4!9{oUgualPrgiks-5fGS?)jk}d$L4489Pg(?X4i>!`f37M z6M7o!fG;xZo4_9#wGMcvQBC0Qjap~WOw4Yi#t*nKjPq*T9bg8di<}Ro8)9kLU#Ew- zo|%1tQ%uZHIK{kLqPZm%nHJ|cMOOd2QzYdQ8+DtUdZJUr|0_mij_5X|zno`7@<&@j zTR>LLx$?+D=Uof7EA!1mE#RI?NtJXzLGO+1r~E3f!mee+Dc~A!CEdQ$R@l>=?NxwJ z^eXB0omSbR{6$`ct<9UA0=~^#Nw@E`6*fLMcoiV4vy3?1zSAmfi$3F3*#F$)6p%$) zT1mI>v=w$o!p=ufk618mEA7@>bIAJ8gx1*898)kduLoINiR}D(u2;_9|?*?r{ppIYC;Pbo-9Y z*s#sQ7LYTBRGD=9j;-2qufm?};Z6ZLaY!pmJEs#nwsEfle4J8JWxviU?B~w)D(ueQ zZPW;mvxeLk++MY!x3)j5svq|%K+Y*r<+9EyUsBco@G8Y6X!5o%ULnc#)Xpo@-uJm$ z%H9(A;H%OhImNvA^$C7VOSx7C&VB=%XL;`jLet5ifbc3O<=xCGeACJK0b!+Hw#jAw z!hrC2Cl?0zwyDO8wTy-<{G?UBWP3pPmg`N^VR{LQ)4pO(YXjYB&D?42+-dS` zd+xMtC8upGIc;0XY4U7)?zC+sr^&PJIBmN*qYb>usI@>`CqMS*e!Ru?fbQC^TO6GD zGIL@RNGp>*Vx_@5Uy4|A$tSDo2~K)@cAowI%z%dMM_oeA-vK_ zxh1N?HCA~9NZHd^4}7y%?Fk6iI@uc#Zt(Vil+qsXCa)?F2&wQnCwl|Jt==AxQrZK4 z&#U$Xgr7Ot8xZdC_JEYq9c1cW1<>z>c1-DfM*CjzUk@?5OvEyr1^4)_NKN z($i4m*Lxgaz3zztQTma3pMHdnCYSfu?&w2q-_j_hQ1w=Yn%oT1$yswPnxT|n<;`V} zz@`SrvgQi8+s>OSoFtFZNNzR%W{-8wuo>8}Imm>HXDjf#b;iZB8W{gYJuulH^}u)` z>ecNooe_H)7=E@6K=SpvVis*vh1Y1=(|A1aLtgjog}OZrrtgbvXcsgX8jbYIQ+(b2 zsQ(;WpGJTkP4@hY9zNGh907Lp()sA(qz>r?%j7|_8??no*@CwL7gLH>-P6T~-lVH4 z0al-wR+r~!DH{mj`ja@}uK_+ysp?5)grBO={h`idYdNK?UrO`?WtqfTT31? zMqZ-4Jh8e&lWDmn)mgQXnD}qn0j>8m&VG+JL>z>|KM$}5&jykMQ$J)(H;ii!`7C>D z{50Di9p(_0ENpC#3NUinT9UA@aPXaq>mqZ*h5kk+sW z&kF@)%(12!WZ(hXl~3cs9(^oRDm*{k>AnkW0PC3*ZtS!cg}6zO|L0$x?rW~rQg&6q zM=Di4*N5;}Cnv&~3Y)#MjoU#-FON3GHgJPAD31prc!R~bWAqYht_h@Om#xvHF;gdQ zZWuHcL=OCT?Iv!Pd{`Z*`nubd|ByU+$a7N}_opvR@bg*<1-w%!aqdJw__gc(hT}HG z?Czf$Fsbt|sS)xqA<*p^!JbcBKP@08$Q|bG1$$b#J%tRFw_s@h?=w4^z&;yE`S&O$ zjRT`&7_j<9YIWpxDaP!`f$?GtSKaKW*Aci1#(Bjb?cSvAAJo{IK1@7z)vViR$fl_J zMB;>1vm5v9d%#vXH644PoTF9*^gp5X4v^0+@1qK;L|~~^+0w{6K5*6m8QjGEj>no=POlB z2!sn=@97Gk?bM_$U6|DQ1=e{R==O|Y&*|1^3y2BTgg|h6TDd*N34s&ZW=9j~Bbj1C zP#>dX0%P^zYIWpRE5_2ufw4MHh`QPLH6dvC;o81Uh+||z^f4ihUp1?-ebR(L|5U9P zC&YbJL6r!^6i-#QH1ZD6YH0^0ZO>A)M$H_}?s^Aa1y#Ig6GDfPCIp6gJx|0*sLIM) zo{^@+9a_qi06ys=P8;h!up`0mYbhV_0q1HO^)=)JK7>6jx7ICGxXP(XR@4OS`KsB| z2D&|KvFCGU&syM@m6BQ89}s@;dbvGWu6LS*Jxk3QO&~_dnGJ{$asdORKhXm2ZLVkn z-8w3JB;{G(CLr(Kw|wrE*B zU5#+9lk&-+3h#BYFCg6MWPd=o%gKR&aLm(FhtkntKzM+YGXlakCx-&UMNZBP2-iC~ zD2;S=Ebs z0>VeE>e`Pg{EShBt1wNCD(nP(+#=it5`6ilFwpa01iP=ap2mS6R!V;NXnR0#Bgb7$;{1geN&UJ0NUxayTGd>*Sn(aJ`dr1HuoS zoEH%8aB_Y?xJyY11dvi@B5;moq&zy)6A(^taz{Wo$#Qq?$qFB1)O}1(lH*oQ5;@-k zNfMc!K+l&E2D69tG!A@-Qq}ZCa3jZaBfCyd%)86XYXU!LUTg!gDNRo#_eE)XPMRW& zFHStFGl0l}8BE-G)JM~8(#ClkZ)=ULO<6jorDOr{Pe!dgHqMj72!tL z`&WgZb1JR}-TtuWZ0o!YbbDIZbBZ*e+oZfUx8*z(Pe5vXpa%)0#1%i^6BxsNjI{`)Okp*LJ+o$|_MD^~8@*}M9nK%G};-2=PT zJ-^Xe4fWS*wWW=YepGdfyzM%5g4SDA`+!dEPNTdEs$|WdGbYcRNl50}EvKhQepO3J z2;d7Joes%*``PgXf1#yNz{4~JtEU$cPO-e4@(QeB-5+6nwSnG!lkUH4-M4{XHEJF3 zdrDPv4Pn?UT6eTUH!@rE+)Mc9Ff*_T#42$a5EEo$0Hin30(!^UiAV40SBv16G$c48 zrhL7l$k7u+jnf58K%yQPGol_ClS9P7VZwpE@}h5DroYOGh&T!l;u& z0pY_oJ6bm?{FGCkEj5(Ro9dkJnv>eV1?Hr6K=<1SonK`=tpk2Qsp|BG;6|>?jV$gS zh~HgiS`+BQ>$dbasEx@ncd&WA8W_2qim@+pbpxlJcRE3?JR#-C`?QqI13vPBmU+*5 zSb~(2dBFdphpNm&_@$G*0pWhDEgky;!r4yt2ZYx%O=;UBPn4u1@G7sT6Cx^lV zR5;N>GYWjPQLUW{Kj~C01t*JDLgKsEoA27dFB!EC=t;44Gm`&?|*DF<} zEy9Og59q@wrY&P)AlI1HO(3SqRvn0`vNi+VlWia-r0p@18g3{p@FXXf287Fab>@L4Ah2?#%S^6-E#Q*%Lv zc~n3+%*o>d!pTma5D+M(`h&yis_`T(#lgT!t+ISa9N`77M~ZfoyBX7V9@BOnQ~AnE z9#i?sOCD4C%1a(o`N~TkQ~AnE9#i?sOCD4C%1a*8ZKarQE5&qMDW=;>G2K>*>9$f# zx0PbL&13phi&Yy)7^^q^A$Ux)neVY>CVtIkViQOX$*Bj}wyvANXBssQ^p3MlqRhnZ z$;3@9T_hUWG7*=YJg1s@PRR>9@|==i8_#n}er-I@DfzXwJg4N>#`Bz#TgrJ(ZJANX zsVzf=bz;lR!aA{KR$-mkGP|%&Y#Fw7Vu^-9?jFwx2&@-E?y$wvduEh-$DXDbWwk1;t@njY#20Y%?7J(n` zYQVp9wSB>V?`pt{U2Pfo`K|_ht*fm7|C6f$Z*;YTz@Kt8;MZO4Fz_9&2E5zVjsy={ z>b8J;DJ6b827Iuq0m*bxdjNQ~sWpL21W|j?W<7k7sf_^1<6e0vshFbO*SM*VumVb> z^N&iqmPK01865Z&qgp$TNm|d=Qg%(ie^5&H13dxZ`A+r*gv*`m3kYv=vOgfa)yaW? z@D3*j1HwC^Sc~0&b5LP-V-^W$qP$%~a2!}hlC?MS5$-M)@Y9|*5 zgp-}zCm@{S$P&VIZ=#vtIdgWc)Hr0 zD2Ky#XLG{Zd!^-L3&;{Gri^p zfh%2YKKM9S1LA1ubRqZ*Q)>bVf~YNKwYbRCMu6`7t=kKWK%%O<$?`hOL-i8=uvE&) zuutJSqgrn|A{~9FmNLR!3P0-<@K&X&2Nx0Ua6RBJj2Z>@9*G&HkGgzLMI@S7@20l@ z~EiGMoilKE2<1DXt z961t)2LG(pKw|qX9qyf4%Ek=%NAtvmz2Nyaz!Bhn45@M9AowU(13u8zW`Q5&YQQzF zHWz%hs{x?-K|3{!0bUu4uc@U_;9JeY*wy<|UX5If0xXwm~U zQwm4r&cFC7Un|7@ufOI7LmzTvNA-zw zsfV8a#w~}WWo)+gAh823R!YLOJs=$KdTyp6888jbGsQOWXlqcmN(kOyab=>pZ>XKJ zMF3K>i}S1Os8_ER0W|{)A_sne9xH`JKjBx6el6vv{M7X@d+8CGGeDXb<*w1d!Z5xoU)8qUO zcu#h+foO)5osdCAbJN2THQ!gqx zRX&r>o!Z8El!Nls*|Jm9FOrv>ntqWycWQC=$9yGGUuOPq0tuBo5dx&)v?w5X>`I#o zj~%n4nj>^fkg~d%NT|FU!VQ;%3oSa((`jGlW>rhvSI)?8ufpfI}axM{B@KWm+ANVb^98+6A~6ta117auq2H$3^FbwQBZN= zqM}AcMaKmdC9dPX;keC=q9UT8qN1YW_&;^)e9yV>R=p!Di8vJQNTQgT8ZE)mXka->9fk&_Ebgts}lxJ3A@lS@j3A37<&Y^wsL zSYKNHM9E)jDSZLnZ&bU`<#KmlHh~XOsyd+{tZ=<%R4dujF(5*#vD?*R*a3Q2yM&ce zzE1;Op$^OI?|~9w%*nwLVXc!xCBjRc94-;w>ExUe;fqerEfGAd7tPCrwUdUmOISTz z+1;6iPy@4<1*ipN80CFD5POn$Kp)W#@IV`>Q-SVHvS7(b*`yGx2j4>dVU)s*VoXSR z$txfUU)@y^Ncd{Qj6lK*DbIX0=p?+5!co6(#R|B5rYIDJ7yBctltL+HB+|_`ub+v`y zH@O<{!>+aq_-n2P{En;b4kqtqSzfHcBa?DRst~R)>BGV5!Im-9)p{|yEUp^kTFP(& zKWbEa+x}6DQXB$)Sua)h1O!SU2TKG>A%~3op;sR+5&rDtoDzXjs?W`l^Nif_fatAg zj+6+8IJrZKKq;C#=E(U*9_`f^ln76Aa;Fl3QrcXYBNrLj_3DdDgy%WAbBRDHZSImI zcQx`tufC*2c!`s{l?as5=I%Li4jGW1YX-$yy!O>;LKhSD%y+yK=t}zm~?eaYjp7 z?@!z}Qj{`z2TFve=tUt1O9VMTx8@&U2}1XKq;C#8~Hic+@(aI z6wO_Y{GMwrDG?||b2lUJa?RaK1WM7|!^mPkyEE=tB2bFvUPdl(&Am$mO3~cM$o*Y& zX^B87nh!DZ2-n=VM4%MS{fs=(HJ6nLl%l!6k$>fy2b2huqIsZ^t6cM-5`j`Q4>s}~ z*F2;|pcKtRjl9$~4=WKUMe}eYU+kI>EfFY1^9Unf=bA^B2$Z7vFeBgUnh!4#C`I!q zBR}Mt%S!}G(LCD7PrBxc5`j`Qk1_IJT=Uoxfl@RdVdVE*^N}S2rD#6N$a`G#(Io<< zXgMJkH1=y{QR#d^w`R&UU982QD?Ly-XpcoXH1Dgoo=zA>{{|RaoKV z<`Ur~CG(E~!^4nS{*!yNEZOOD-D$4Oa#VeaE&%7)LLh&z2EiA>^@Fwu`YN`5$W}35 zhU8T2pJVHYF9hr7+CtzndHp<_$vze3Q@#j3m)7rKbIB*e`WV zRtM-dlE)abeEXKQiQ*$k*Sai8H2IA{K$`EpcRXh46AG2TO$aI4Qr+pu(+A z4wne`Iw`-;pu%o8ZRNwX2*)}(uS6Jga->99@8k|8!qrahSR%Z~$@wM17oA*CBHZbu ze0)rWyPTXU5q_nl1P;jJ!bfHomN1lD@l<1Y^P5B&-~ah7Vz4=&TfyXJ6-Kq;DYjQls(oLeGLisn2c zf9;whB?6^r?qKBb-mzao?pPvF3OV1%eOz-vi9jiu@=0vfIMOv2mI#!hxyZ=>M4%MShZy-e*W9;6pcKvhjJ(Y?mz4;VqPf43zjVz5N(4&LJkZFI zeJn!`DiJ6}^I#+Qa?L|Z1WM67)X1Y;^RNSZ!M!wiJSCj~pqIryw*ShAhB?6^rKElX%x#lBF z1WM6-l#w5E%}19Al%n|Mf12Ed3<@RR-144^l>1iJRKh>5f-VQkb@<{ zK2B~f5f1hic^p$Ko45F0c}~4p$sJ0B18n#%+Ob6VODE@-2+whHL5Z-% z$(>4s_d2<-MDUcjXpxQnw^dWN+`!w7Y8N_^KBD>0S;(Lrvw1;g8h)>^!hb43H;Y9TzY)8luZq#BC==WLKA|m*WQl7sd_?=FkzajXoN}j(V z_`OD+zajX|LbiwqzS_(8tq^>}8`V-?u{W1yjCnh2SfmeBTPemn`|d6~gPi z&7DdFUx?&6Ap&cT1P(|hu@PLDtT0^hL}PgSY!Pby(C6HZ(d{B2G z_}#7s;(h*dEoIZYtL}p-W!?i1*GqCZ94HY^a&oXlm~?WeM0k#q z!zIG=ot#r5Tm$N$kRN*)C}F;-SLVhm z<+oJ6Q%h;QmU0dsFs!RBtR0|7x=mOqTJ_?3RT>ZmiFdpgnakDhieQzHpYAoMwgVF-hs@(8_G#ua8Ao+miKIf#f z0z-^cSdW_N7C3tQC39#LNOxs#HIQUepY=_iVBDymjQnT&gycBz^GeCy>XP!CDtzDd zJSiQ~9Cc+T1HESUi4HYCYzA6DYUV#xS`=8g&8nuKj20KOzgeS;(qjGc!JhUdgmK_` zMom8XsJL`d%3=uY>Lq!_HBcg)AIb0&V%E>t;!dsl2TOz#Q$$2Hh zN1Yrg5k9V@O#IsvQqGm1V-1TJ^3U}8NaSVlg87wRp~kOO9uP#SvA9(Zs%vXeBAv%^I!D>IsPQ(+84#t|B{w+fBNx1M(S=Y zE58ta?c`vI@E=YNl?d}+8k>>o@^@NQ*u}{?CBj}#&MgrRa&lgYaI}*nCBmbf+@VA` z!O0yWN zEfHShBD~ef-Ajb`I=M%Q@DV5XED=8A$Ei30<853(~EhS}vOO0xusPM^JR_~w?p6=wPa!Q2@ zw9LP53bQ@Vxgwo29el#7+#i8YFVSU2}7ZaGH}dC4#$}z30aJHg0aS zsoetNuG}qv9=aCrEDOja&<$sIJ(y%Q39AtXrIS0A2xCqzED=^axu`_=8z&c+2pgT;xkUI| zCwD0ku5@zO65$#rmy`%^baJ;6;T=xyULt(h$vsMhPdd40iSQ*S_bL&-<>cNa!W~ZT zQzHDr$)zR2@11-|X~G9=i1#grRM^?c{YnJNYLPooHBQu0vKaVet1J&p5k{TdRIX8B zlUI&QLeIao6)l}Joz#I24m`zdg%wQ&cR*G&gh|)jTq2z1bgJvbIfYi)KOXh#Z z!H_hUsvCF^IPiz{TJGzSMM0R}Wqr%XKYlmjfzAqpJj0W)%7TI} z>H_zi8wW$;0bHh(9GWjF5uWUN=gx~&)@dm-0C>4lGXBFQ!Zl8gln6ICxu8V2#mU7b z!q=Q!QX>4w$vsPid!1ZbnlKW*t=8os6?Sp*pb}w!Cl4zTmOFW5iEx6G%S(i(J9%u0 zaGH~kE)mXk^7s;ga=2K#tthWkm91Kahvf1U;FzT)%niL)?jRX5~Pbwe&yH{?=vLoQV} z$<=QguT%Rja4%*;K8rWK)$oX{vTe)k`b|$AM&LbtgdZRL$K9LYnG-td#fY ziYaR#kl83lEa1gDdE#vX34cWqh`-Vt@OGPclR&)8-*qH~XPZjZJxMf}Pqk&A*%IzX zY5KR)^p_{2Y5L0x&2*)f7nc$StjzCdzhezE1=O;-(v zAC_E{tn9Umi<1R@PO)~=ii4BYeO^UpW{h08aK*uLfvh9@!?=UVvHUKCY4D)SY6h*< zo9+2p%5xXs-zg<;Du=-T;A+5ExY|7MYh4ZaR#%%3ewV8OZ+5js;E%f+@XM~YEBIer z4fq3B+XH;3s{w!MYWskH=W4)0Ge!ckA9${1Q5(3()eZ#j=4!xwUF}ftL9PaTn5!KD zKE~C6$Gh55;Q!-lz^Ay{G2oV~0Z(zYM}e6nk|99mi%g;GwFY@C)POGZq;KYtURbfi z&y2iIcMf0E(*8on(FYBk__f&10apz^@{p0`2aPO0WWBtSK=m%IatMFaBVR@TB*_6K zUM*4Y_LmPgRX-S$uXmA{LiISUvR|<&{3=cV3c0EH1@-ecTFQ3&0BvttOS$>vYJOR3 z%(o5E%7Q)CSnXrnjmB& zMAw2yHq4DdOn&NRKoTO;e*6oFx%Tx+(^Hkh_w;7F1&3?genS=gUSEK_hJWNg*}DRN z8X2Lw!26AA1D~nCoKtOQ5w1~EX2H$6clm^tk_y0YC{>-j5Pst1NQrR2lM70OMe#9L zA=MX`2>PwRKrZ3ykHsTgbI%gtiB2vp5yqTcRwAr%@}LsoJSPt;5iWJ|$P(eDPA)GI zu60sAQ>ns@PCmLsxY^0$O9aYz^14k`?$pvxUNCp}UXgn+%&&W|$QBsp_j*NA0(hG3 zI=jHHDOH`k5ZI+k>S)F^i~mHb9%V_`0g|8MDzI8=MN<|5AlX^{3_HRrELA&cs*b0r zDkrZrRpsQBrmCF0(o~g`SDLDF@*;1^PB|UqQdLe~X{yS}D@|27d8Mf;C$BVB<>Zy7 zs+_#iRF#ugnyPa0N>f!%UZg1Ha1l;kX{vIHN>i1SSDLESNmI2$s!my|jswZg>g0vs zshT@^#iv<~^Q$mRn0Wb4x;5cmH} zj%2m_0lf%Y^K@Rc(s?0AvUFa^ku04TawJRVg&fJ!c_Bx#bY94jj7h>&kn_*H%)F2z zSvoJ|NS4kEIg+LGLXKqVypSVVIxpl%#=Llk4sdlOLtuUgIb)OMgSNc3fMkiBy6&?h z86;)x;^JgF>5;5Cm+VN^oJw{iBkPzJVcfyw*nh{7Y@6QMKdq(g7=X7b6^>-!Z@U`s z4p*B8zT4G+zjw9y;6J+>aDk4B7+nP3#YU8nqrfk7 zHQ;Mp?HKUuT@Cm)S9=tgNg{CrG9_e*yj^RM$3mU0t0n0>P)sxya@`oj9RMpHy9N0< zM?EUQJVv()a^;eEh=BP^y%Ijg7JkB$)tNhwoD8%rn2XgpxuR{sd|I!B-`@*uHGK{_ z8}l~fG3NvI2mi$5P0{0wXIdxYnbyIx_nBw0mrc*Y5QP6{{L&LsCX$=``lWR;ercVi z{cv<_+MZw(!vXdO@dPP{Ydu=Wu7^vvH7*^n-Ve&(ZC-oiA!V~CVkeGc)=ms$-cIaH zxR$lk?4-yo9o-FD%8}|LNv>xa+N#T%0;nF4SY&Vu?_sJQ61ptl@_FM}Zd_ zH3j5%)MdPY?{h8Shm0Br-lEil>C&FoOb19GWNieVZ(3tOTnolJB@*7r_fvo$wYnW( z-O)ayIY5h-YxS_x0Ke6moB+O4siEThnLhcU8d{ueZHxooZ`2s@GfKsfB9WD~?EX%V zBGTR7qM})g6{g++;>bWT4aAEWc_jDACJkOhMI`rWdRAxj;=$%q3y32F#S{=Pf~i)C zRoJN%pp^%K3+ z&%9pK&w)q`yhJa&PRn75#(pKzyOfoEE0DlNMaE>Ja_}T zv7ne53#?gDFeD|0-k@CA+e$W+$h4n%kROJR>Q`CywbkGud-d#2CDgj~-LdZVTFR;n z{DM(qz^^G4R)z5rY3KLEHsrn)LGE7+U1zO!fL}Ih0!Y)rP{$12;fg@F-N{*v9Ja5q z`YqsBjhX`1ZMQPEr&8Ok2ewUAB}IX>6W3Uz!lKy*4k{HDk-Y2eym`8fJxN#~#zKqT z63JUk9x3ZQEUwacy-&*>i=j&&GQYB4!hOzSI!Y|DP*=ZS)##5bx4C}2Q`NlH_P;Ad zs}j>(%{sSM_c-@zDR~Zjl1>v@$bn}WH4Z$`IyC`2M5z$O@e=89Qyd4bHEII5uBUF@ z(XMf@@kgtfS-l4`H7C=W*;m}r z4=lgiEO+TpX_mXdw<$GJ{AQPj{qDHm73JrZxz&|{wZc?{J-%cKpoL_L)uFp=N*6*CeLT%9uVmHGNiU z`mBs;_T(84u1!ooGh=!*HT}%g^fNQ2M>95+dShbx?2PGdYWnQd^w}BH$pR$1b-h)v z4s%DZ-Q2l_)NbzFLPQJ8+^B^DlH-}<-C$)Fqi$h}zPSavA9!=QLweQVfx1eaWUJLU z&~4Za5F6Y8pQdxt4Q0p57gcVL{qB@3Q7kms?U^^nT~=22wC1ds-?6GeD6Er zB{}B--=|bGh4e432>eEmA`+eGb8^I&$C)pyfz+H^{Cem&J0F{D&+1*InHO6#Yk+uM zHM7gHCGzL32Wx;kY5Y({KFs2}2H4}Av|4utj8l&_r%ngH(wEBN zCAq$xk?otPrhPjj+c#0gk$Oqrj3GC_HZu#moMKg40pg0TI)3@DoeLE}LH&IRd zc2>4;qKYGw14H2n(U86x+@`&wlm+tBO0{o@RfGbbqf~VYIZ4y&pDfKrZ&COuEyIr! z$=|Lkk?D>!$?TygnUy*CsUJNY3EO)d`;$5tK4t(u#+>Z{A7#$2pD7VebUixrx8{Eb zSSnThJ}?5qB{zrE`OM8Bb$4BINEygDV{^a7h8nRq36GGs@dFNLA}pgQ_pECMH!nuD(8|_9_@3n>8WyV+T4(w zC~1ztmYkwF266i`FTS1*MrhKb(x%C^7J@c#y;5@e+WFY(^o8#~bYQV`V+`Rf zW@L=USwS=R%;6pjG&fX?EVCOM4OV2c$%Y<=di?bQQQtskq@lI^Pw67xXA19cWR{J*t*RPW*>gUo@{)0}E|g4uNNb zafIy%^10^NYT%tpp^Ch~Tw4vq+sYE2c{!`QYclShn{`(h7A1yU8ju zFjVcAweR>LS@cY$o^4@STbw8NJ!Je4RquI3)d5hNy{LZ%xuG%oh(Spz`a+yDQ%cTy zH48KsZlBHe0@rLX`)R(a#qX)lv?$#>LnDBL;l~C;BzDroa4(Zcgm~w=!?OhaWx`Dz2SKJG&y5ddm}4fsczw76DJSx?{lAMrE^2Ktz<2a0BK^P>v7amP=~nZp13b-I7z5%(@TpTGz0nncco7wm+^5`~$lSxH zJI$vSaJ8A50OCb3)iR&1cSRsxL`5X`X~G=HfYhfpKAmo+rhs*y+UC=nT@i>E!KZeK zppeOr>(9C#EallH{(<0Q$VRFnNvfmw8py92c%Ud>EU0P zcYoJ!vT4HT$(|1tq>D&+&3(aHpLsU|PEp3Tox zDHG6CDHG6CDHG6CDHG79k_7bTnKWTCYPq;K)dq@8+?z`IxM#F7ac5b&)fSITBBx53 zxTi{)xTi{)xTi{)xTi{)bs<$sZW04Us+5U&Q)z*GOziw(>AGU+COKfF zC+cV8&el?PbHIn&#$_e&Xr;nUb-YAc>x#g2J&H(gbH%z3O^i>cn@=6!q1M6}5HEsH z9rNi~t_Z}7sEFh~CAn4i3!gTcPc7hKW@-Xh_o-z*J=+z5coBSRl}PSWlFGCD)W)ZW znyD#Z-KVzsbgnA`@gn%t&iItfoY{Tq;?t34Y8qJgscSy{jVl7{K6NubB@?wM(h*B0 zYECJcsP*0joVGhj4;Pr@tAGzNY7)5Is8zsv940Le&vQj!Jr0wZIAm6k_iD!eyJc=> zrA?KR*)UL~N=bU=l#+bODJ28wO8;h#Cj*#MN(RuCJOtYjr~KWm8H3#VI#B#XT_y{% zyNXmP6Z2Fl6Z2Fl6Z2Fl6Z580pIt>pEw`&^s%3W-O{IL?Gg_Hl1=Hgin>m?WPn9xp zPn9xpPn9xpPn9xpPn9yco+@Q>Jypu&dQ)j(eODnrf6-j?28w2lT;BKAI`R4_KTAv5 zSpeT=)EMx+N`;%wc!_kED*}Jhqlk2)oyh#Ji}7beQ=%0j&GlNuuBDExul8_FBMq7&Qf~``R*Jf9{GvybHdzN~DLHuT#Lf zudN5|Ya3tRWiCtu>%O+l*Lz$Mh(;h^U^X&~b*hwEtW%}TVx1~w7VA_gbC*Hs`{sBuT;4lZ zN`}joJOrznqnIkm`rK5K*I_tCQ@ML>sJ2X9jXQX{(lU#{};3#&}6S(+YftQnE$6 z^kRftl#HW;^lh&V+}%gE?m`{o&Nb#v2lzf~a14m8V7XHwxtV0zx+x63%nY@FH<_U+ zAWa8DEi**FF zo3TBe+D<-r?Y&QJug3OQ)V3tnZ5JU7+CZ!Z;t=mYkv;CoiZ`46H5vPNX6&!Y+LzBa zr1saiy(UWgKZ*TsSnO8;X*%TGq!}XMa;yP*-;<9&52y>*Yx6|5{>3^t?8y*ZaWMim z>J@&c!!o4PxvJ3YEAl7R^5?CCqd;s({rfNaj5hjZ8}m^hK2&=*r~JH&7HuYSm+{iP0++Uh5Q)rBk|e+eP)RI9~kv zi1*P_7G~h%j2Z(zUa7bSdn*wQ6wCDbQC4-lsTAdH{}9VRYAI%cKYkIdjRAkARNib* zPuuIzUcGYu#++7eq+L;)U=D*bbvITJs@NNs@N+5Bl z*0esK|9<8Rqm6U4ToCSf^0~){{btvP?OVdq(ju;I**f#v5m9J5SQO`KL$_QElI}*#t*z{u<2zWG7W6&)4;Z*f#5+g zuwFxcwS|5Z_%@})ts4gre&FP*hB7`S4GtIUJ~LR-Ce{0Vd`iAVe?@HcLt4rd1Af>N zW(;_XQu4c^pV^!l$Xt6J+Vjd`gVgLxkW*(`xytz|mR4@(D(9zI&h~1m@29<%Nw#$c zf!=WQ-@g8=p-rmG0pzKriSnK4Kg9zT_Xw1Uo-@lK{6Sb5q z1%BQlJO=!#Qj(>2=Cia&+UwAsSMHakY2{X~a=$F4`X1JoHgJEVCV+K!@>wd8NqVyy zhu*4}WG#Hv3<7P=wic#suAxn;OPlE@IKnt#=Y49tcQJ&e8Q*Z+nBNN&#rw6PRXVUX zAvX2faQt3t)Q!Xm@v44CVutbWJ+F@FF|UcGWE}8RqsD+|Di!y#NZVWy__-cMq!rg< zWDIz`QX|EdD`)18+_bcWnQPndSsqc)jabr|L(HKLkWR_3$N?uzYXV4*LjO7?(z&MC z0e;M=2_T(}b&-y-E>8gIU{pl9-4%f!x-NDrDk6DYl833i(ddoIf#z`wNU!DD43I7d zldVhuS_I$|*4z}3F2}k^Z+~s{LyQ2wY1G-kM`-Vd<%QRNB@$hYE#`Vx=NNs)S8j_y zx+gzd2dwwBo#|vojfw*6-KsbzF1I6lk z?;X?N{?_0cV6DNMX3_@Ncq0*2hlAo$?bxF%MW=yeuY62@8JJE>u$%40(+BMxXYH*5 z(uTBm7}(oe)oiaWuYFaNKB}dxWWd%n@lqJC@e=73%8DZJ-MSh^MWnAOD~iCMDJA=& z)9Ow%aq3hj=Ts--R43d?$16Lb0)%3P0r`~t){?WWiPt}qX#f%qHiBH^-p z`xfZlCs|+p)kyi%mf^qS)hea50Hg=i_k0mns=jP4XG(k07b`1ufp0WwCGZzLb&(dlJhmuxfls;$Y9(+~sc0AJWmlUb z@Ft_ifeSTS^2sD1$sU`Fjr99B4N!-EpJ2X^0dY7cH;!JQUPTt^JLc;c5C@|o67FWc z`j_`Q^|{5M;(M^rDv=mA*~pr*sC^RtrCgoRH_IJT{MKm z=!r)_!VnenJB8Zu-L@st|wAQtk2IzW0`>E-(O33UTo^7xcU?Plvn@@OI6c<3t&+>XVyBUgXp zkUQr;eCNm0-jMoUzs7hoQ1xp$9|O0W`bqfYx6hg;gi0fEI+4JbMB-I5O)IfKO&f#7 zhQ&=Ifooa`T(d>weG|XWYBnjqn9^)fsEps&C4NUMs}mb*(gxRL8oaVkgEwk}AJ+a<%?8Twn~mV}EX${WzfnrY?8=z|T~S$NDv|}|J$kVs zKcE76R*{VV%qyaE75RJ>=t@Q6JmsKv0!Jz9&f`>VjeBOgBK_Ve8mHu^o@tyiZ)A#o z(?y9r9i%V0;Sg&B`m@);@Uk6P#_fcF|T-qCQb_88wdgK&|Oa%%=IvR;lKsL*3E zP7Dsx(96E(>5Wkkim)`xd-NsIvKPlIq6&P5QDeZ>N`>WgyhPgVAE`UmY~JP6PzOV_ zQzZ*RY1TWy`D&-qLvZ6AH`YX{@m9w8t7cN;t&H(k&7{U>`It;y>FsMRB!W#v56^fHW^dazmfBFSLmI^=4@F{R%(f z6mHz*)bAAzza%;)rspbL;#AJ*$X)q&vHZN2lHS1I88rs{vr;j=kw!1W_89OKqxwuN z?0(&hbbz!GjC4vQZ?R7r)8fBci!C5+gce(w7W27T9V)-8t=(^}P6O%woG{l996>zX zx;_m&Mk)D2otsMpoXTtq#Zk!R(~jTN`!y{q8AFQzy?hXFI^ll#032Q%eOZ zpJA0-zK`+WWq>Hwmm) zp8eynaeyw}6w6O)DdP#;XLGzH_XXe!m6Emm#uh5c>6S~aHt>f=jRT+ceA5D6 zV$?YBv)0dvsQ%#orH?mTA3MMi>*F+#zRK?r4wMM=D$XjT-SmDY3mA~T$`i4H5`o^z zAOm;NURHVtgdkc$A_`I)c!kAi8hDdZu`bd#T@mlUV_)ya?%E#sg!KT2TBBbSX)hYw7H+G8^P*Z^fG;xnn1=ZsIApd zY}8WJ(ukygNMt*rF-xx>ZoQtO*B>zIRN$A4np%2kH26d<2Z~dHrx`W%QiX3c>Qtb| zZ;Cl^ziRgoFrj>eQyBhbVm3q@ky=kT1 zWX}47=3p9|Zt9KQ9Nn94>Pa3F^ zKM;%Z;=E~3D6A1gp@<{#5~>*|p@`Bpi_$0%&qb@h$3^k*OXJn2YAGuxklTa&%){om zIzHl{&GPe6EO2l4DnPo~tkO)G?82T|vZHS#u;2SSw`hp{MwhrPHkxi_Zwq-Fjdiza zuW^}>^|>YBN1t0l^dS8=?e`f?KV)6THp3+p_81PK($@3+mNR5(qm|ldr8Y7Pa6cQ} z)J8Y8(M@e6%c}Q_P2Cgq#wy#fHz*|igkoN?I0?l)&Zk;CoobmE4VZ2kmOt56G%W|N zX*zIC+ktBu4_y8~EOWmS&EbsY;Y^Fe`4(ZXyf~t7YAMgpfahKkFUi6Je6CXA1T$VD zz1kIlA2MnjxYkd*z|BVWdB@Q7^0Ve;2lyDXGyz;`)D#d`gX5iy;}bZ3z18gi-OC5@ z^p3cG$vkcWiLdN~f%mGG+$0c2ccApm~g zDy{;q(IFDgZk|Cn$Hr|{I+T4^hoT@TZ?T}XfsZoNQ$WT}d(mR)Us>W|Gj5o7FZ6;eLx(8%ST{qYfmxD^Uc}-KdB}k3|tkPog4{ z_iL7QoBl8s@~C12m#)y51`doDGBbc*tf>)mY=^3ZjV0nAuYUMSy+?jQOSw}6=j)A0?$p5jlnT>jyhK`| zKRY3cz)7RVf$x}#K8O}@>a0k`=8ztGwkZO~m5Pc;XPM$S@b%BKy1;|h*Nq^(Kw0qy zc-w}$BGUKIw-$l(E~qOa{ZLtH5jbaKT@mT0%8DZJp%>N_k$$GEC<0%q=@kPJEA{-l z-2)$LG5DXc!S4VWak;|)8SY@alNtPpbnrV2{{5B@6TnxV5*?4tA^lugu?zg0T9$N5 zBvL~Zf#gMO5sB20(;JY~kh(zfBGyGZ)Usp(_>5XQbxI_1NLmDvK(R$6a!3?`Bv4dD zI@{7|0{Hq`-gQbOl1*9!*0Uu034#BoEcuvaNef77$f6CbXGtrQC1Yupw8)ZqHuz&e z@*)JMRU(lZVi!nWL`5W0LllAJMN~v0HRSFLBsHWiki3X>kycoii~-4usE9;rNQ*%7 zA}S)08lng!FQOt6sUeC$@**lCks6{1tY=B~Qy>3NS;E~zHd#PYLvEeGdX}^^Su&kw zNt-Nr=c#ewkmi8gIzpe@B@!bpia>@tDk3rB;xmvDm%2cPJJv;FAVm?#C`Lsj22vD( zjAB$oVthmq$gLwPB60T+Mc~HTjig;7U1K+rY2cT86p^^iNQ=OFmSjK4v)x(3-G;P~ zGYF8hkjJ^edWLi}88Ve-NS6$GnPtcnkemn+>}E1#DwiSMGR=@~njurU4C$6>hD_x$ zq+6yLGL_4aZkcAtR4zlhB^mN*+iFY!zfl|bZi&Qb%K!lD1K%y*2ptVgAZzpc@^%|?6_NIayC+b=jw2l^-*@KInbCbwVE9Nelh-De;xvgwJ) z+r2Us#l7n9@7!--ZBXyK0D;c<&&p+n^geU{*}5Q!r}tfe@J=P?6`Lft<(KIo7;|qN zrj`ZwU4THUyE*}?<;Q&&Adn}n4#VnHd5J&PVTej}4u%c4Re^Yqp5E{W znd}wUf%Qa=tv3@{lyhkul}Tgv;8;Xv7j7;>km}MpkR11p!jR~q3?#!{8HPQ%Csow*%iQAhU#?ATvkYAPjeTYaN0cy;p%DTcJxcpP`U*w9uCpgoXI!fgi=ss;Jx9AKRNCV+=qZUKS~_98)c*jNu`JIuQq(6z=fJHl^!b%t3^c;$scWq z@d%G^6*9V&9`l{aT#?NX&L+P}!}@g(FR&KgD=fUX=uJWlU6Bj#6&qi#VSTfQ_lk`~ z@)8YNRULtdN+*dViC*a;ywM{GB*>Lsa|y0Ua`9lx$x&b}lH&FSF-)~cUZDq`+2Y5w z+ckbZrAL9aI9_LQ;DT9BrFr@J*5q^%n>J>8n?!PdmD z?7585%$9inMD>17G5Yf1moG&;S?T$Ko_zW6xLjNUIjR>I`o)%9Uku;Y>q~mBpZfCQ zwrGuTl_2ez(dxW>xGQ#bdVWmH{+ej8MDDF^Zn=H)%ZJ6cXgjuw4$El&R?)aeSK--O zMdxH4<)y`zPl{~`UCsxz&QR@r`)F^uex`~9dh9m$DPF$hk}%n>8eUpTP={sTY7$D! z%B7+#n^L>ptIc#}rJJpj=)6@|!~UT|gGFGrR!MtSyxDZo;r`O!17`lSbt#;!RdiT3 zXCFMYSX27@z(T`TbJk%)iB)O#VPm;suR6OnT5Movb)>mo#Knba`z@W^!^M_uo6D^_ zHJB=qZH`i8x368fGc+3&s@bAY+uPh^+T3K?oGvlmXuj9-5;$#cJZ(-NmOOBCt+csT z+FbG(A3lK1Xt0<{q;K0?vT(jfdlgw0J}gGInaz=P$0O=zPvX%uCREdsP)##JZNCkB z4MvCLT~unLmDn~oNS%c; zc9+iBdtlby$TnBm$hz0{ac;IN(P&1-#mI8+A`v3%mLkGlQ8X<|L@>urLnt5~ z$hP;65 z$lSoOZQ?{8I36YO94T;YZFtZXxCiU$@{Fg;GoCKbc)C2}>GF)H%QK#4zZjT3AQ4?Q z%JOLl{BQY;RG&9|&7mi7TYW7H zdqI`nt))yWpocST8p+_-ofaFGtd;`o-Evk5pD_1DPmQ z?dG6WWOK|aG99wuWpl_XRYvTvjr9&89j&ay1Nf&NMWh`sjMYUE$TmOvuGiVc$DSko zdjhU3#x-rw6ts67F*}5^)o2?t^4YO8yv(=tEon#3y z2IPQN=^=dA@?i{Ei%$9!sQ2|eF(Cl*vFXLl{s*qv{lGPQAGl`c1J~?(;OIK8299y6 zl|AFgi{FcE{6>MeFOj(~myPM$-b%CCgNkf+p(2}osK{m~DzfH1u%{P+oY7BUpQKLZSiM$$Kx+;3{g41Fd-a{*Vw^7{#bbGKuOVMJJaGY%iRskQc4=*J| z&81JM=DHyitHwNgeYFbsuSTr|vb7c`SVYK6p@0i4sV0C=Qi>3+?+GDSpQc&|YoL3y zLgdfusfPL{t#+7J+wzsoR}I&OD6L72ztx&Y%u;j9J-w}!R4TRd@eiVMaAj>zCurrP z+S&;ZvNieHnx4*Cb#=Ch1@bJ8*}y}8XaW}?c+h=I&gD)x+3GK>FnF={RV z+dt4O8EhG)=fHR9mNFcS6moNrT#i%H|E(=4HR#uKh$V%07GZerID8h3OF{yXJlr*oCU*E#hS zg+JFac(?4d*z$2&1`DH#*#HE+=IuUk>1}(O+cx)TiTicQloao{OS4f7X2H+ZITTEQ z-)!895==UV;QdCgbCU^m$xL>OfdiAGVKBgCWbg(2RohM;Q-aCKFhF2ZFw_PA$m*^r z!Q^G|g?qrS>W>wUyf}`>v07FEj8yI4o(vjr7Vw+;q*T1TV&lPjzaph75@EUKR4@znoLfGwCWa&AQ1<*4=4YS7>U4 zN5KlozS@nrwou%uTD5o=ED*2IuUla;j5qkzwpE=1Ua!nHqEBhtf6!76&Op`=d5Cr21#=J8f$rFVj{-@HLD?}d zvGLGh^^XTN_npf+@_b76l<%EkDhCE`^VM$RBO*L#plMY zPp{??8X8J50X$AGLUo87v2`8K1y40~9zS;bpW`{i}0Yt_fm--tmAFbhkCJHIM2jv}9E9+uw-_TOt0|EEeHGinsFjFEB1<`BfO|U><_OacP2j-8; z$%+CzL09~t;=Gv>!B@lN<0u|SP&00lV}$VM8cKO8$gH07TL93f%PEBM8TQ0$0_b;z z4*5V}B{`eD7K#A)YJUnYH%pwulltfp?s{x#GH~0MbWMw?{31=NtF@Fv7x0xzEiBF} zt{NEm^WGbZeJ_?@-+R6CZ}%#|cY2ips$3*hZc_f^UIq9muQEuL3#H0!nwLMd{A>Y# zrqse>?Il%}_0h54Dqm>+O1=Syl#(i&sPa6qvXk-QFf4o-#GF`+rE?NN5)x4zGLGw3M7K^JNK7l){)UdKXE#!rR-#Z+>$Cs$n`(lIx-F<7P3@b zl37Q_2>|7QJOvmKfezERxy7%3d8dSn4l@1VaTUMdagC)59(&F5woYVrSI=ZM1wP)W zG2qEc#SbM0Z&AW`DT}-(HJi(|5AWa8Dof2u<6@hMBJK`1{VSB#SZvjs-Y6^(8 zV7ryEJ(b#?<@SJWqAKed@Cjyn8d$g8&e)z#Z6}|#OZ$yM*-rug!fdYu)@^q)wpXUM zlZ}_#4k+#WB=(i5Ca^t^g2I1RJH$C77|2k5YUWCnmac4r^ zlH&mI^rzC`=z4`T*e8Vgt~8ObGX^VRoNTj18 z(gF)-7f7U|A`+P_nGqyd`&U0^-#+w%)XJ`Tj3 z1ebjVkl4$o1%UNon6zPdzYW6}kig4_1)m5e^77IiNZ94m2SCCuT0mkhT0lZ6T0r6$ zOoEAzr~z4-r7)n5JE{JAR!FRfp4`mZv(%fl>DWinG%6m%jz;u6Q00^=Ejxd_7gag{O@dn zw1Jl^Rhd8_{l&xvO>71#GzWgKC4C3TLO)cjpRrZn2DIoj7p2hL{n`v88aVI|ZMt-T zKd~Ezm_Q&4GGC90$8mW-ABH&|&GpV2r#tKhJgaUGlog-}?eNah?viOK5>k4I!x?Zz)t{8rvm_{aV zMHR@Bq;`lcX(yV%%QUd6Nq!Mr(FBrbs)=ZcC10>(ymW0)&EB+$Nh6%ZUP3-F5FcGu z;g9!-ziBK6lB$ICd6r!hKo$k2CNj%_)F#Xx(+Oh7%0O*o0w}eClyl^xmNIt4lnGA@ z$gKR*0_VEF>Z!CeBgt4v(g5Rklm(f zI8^NL=MsV71Vti41S&;tX2c>W(o4D+I53M-Rk=?WdT4GTzHd0XZ017MSTh?cl5xlP z;0hzjQeG+IKfYHa0?yYv!lbAa5g4kV2xif$6nnZ>32~`qW4XQyZhHjnULb=22a+5oUhclNMGuMayXyNaw2aX==Kan$8?q z@75T+QZu;U1AyW?8d9wHb0lprW3{m6=!BdG(wfO#^ft>vEu;HerC77G10Gkp)J7|{(MoN!QX833 zE{em|m9J|luKZcyd-cg_#=Fq_v}P-hK}pz5fjqJP^3l z)9)V@vR%p!-5XSC%yYE2=^&*_`qAIIYN|9=zg)*ZQloz|XQvmd{S(cPY2ee0ngHVM z&hksMCmt-fiJ4;GON#3DP`4BDN0KgPMxm)BvA*^~|E895)B!$J zpJ7S#Pg1!2FQT?kk5_o9Q!iEcsVA8h@H0xuM!iqTL0R>9h3^sg4-pM4|W^)fgVMq&v}c$#TuU2BGO|mj&0zE9z~?jx}rf1 zWNdLjrM)fUZQ#ltMWhQ|5%|>}MWj1i5%|jSQ_MsGVuAe#Oanuw_4(Kfuu_4 zN4G>`Wsw$vq)Jpoy2TQwYp^zY-IBz4xs6^INCw0fk?wXyAQ=!9kqR4>E|3g}ibxZ# z2z+jBn7bv?R#yZvu(3rXALis{P>pX`<-&ipvhjXF-!%B!2DE>zHvvXGJpE=+$87l8 zzzL*dhGTfm#@DIH?;2rhm5J(DX?l2whak1p=ulH|Aex z6_PMC$7;l~61bB!l~_RnH>%uMv*c4NTX8x?z9;VQ`~Z%Tob`95%!byO;{c#_mq>~)o^lxX$(#Z@MQga}AU z#op$*da9-PM02gS*fNut7V>x+NV-e6fS&miKo<49E48ViFs$+XKO)y*VY}NFvCgl6 zI)t@6d8$$EmO?T`W+p4x&93!vg#mcFmoc_W6*tyG4et+wCN z#(+z7e0ZsaYzsp%2K;ALog*upynt!06Jn>iD5xf*%8-gCkWG;CRG{$_l_BazEkS7&7-4X|Q=S5sLc?cMxhLGt0#g&{Ly&6Gm!q zN03H=l=^Ox)L`+KHpu~&b*T(w(6urmrDy_wtxJSzB9a;-@pA-{#c6g-kR2=$(kzg4 z&}I=?ImCOQCrlNQG+~m*r_BVa(nH8*VuW{AWCq)bz%l3yZuK6kIlMuU@nz5|#paL& z#pd7y?yDMD0$o)`AiP15z!IZM5rOCg#b#(K#UvOh5oVA5$1aRTFEreoD^TmLwSKOU*ou}lZJ?ix(bUFhYGX9Dk$Gv; z&qgb?(MoN!QX83PW%p}m7qaQee^=rqs`gq7Q!A~RX}&1Znv-eG%`IFS%sM#Go zMIqx`d%Sw0cjD;^$^Sl&IiI7A&3OB(wdOi+%tpNi(weQbW;P;e&B?T85|Q}TH2Iwf zb?f`?9yh3yY?C>9nQkAq+KzIR$;0B6iAaANt<**3ouoxKx8o5f2)JXiZeWM+waYNM6fXr(qfPU@Fv0UvGD z6!0ZRjRW`4CoS^5CE)Q!jRQYw)D-YjN`)tp<0aCqrZ^6~-KZ(x&x{%e?xg#4@dLPz zQRBc9^spvcnUGZ!aeI^nsRP_>-5;a-A2v_M=z`lwjt;>)+fxN ziAjZwo@`HnI3}O00WvP41!P=A3-}7_$prB2Mz!9p@MfbX=r7|WZ2=i4u?S=YL<@MN zjn4#djZrP&A{(*^;GssffFAU8`|aQ1?g@2aJV9S!5pDwsYsk`ei9}>&nF12osE9;x zMG;8Yq9PKJ6Gb4Ai;74C7NJof`7Tc^HU`hP$=C%F^n#1TQKg?P3|-1=d6P;J!9fSTGk`LQeuoVfl&)aA%9;B#;GPw16bKd?vR<@+jEndIB%q?zOg~;`RiB*> z7i%xNV$#kLa;|-qChC!&EYRWo2YAdP-vzR0S6`k%C|wW8u*lakZ=5+s$A(b|HlC{- zx1+!@Bv;v3t^~ePsi9)?Oo_mF$tNZc(SR~up*ipqE!fk*Co45nY?>(%UhaB8?iiIG z!uwq>9pdRf=v4+Wc*5v0rNm+2$vV4&T66IV9IMyGJ_~`*SE?EdgnxEDAoH{OitGV8 zNm=ZI4X`Iy@&+}$ajO0wvo54oct%KB{6;rw57AUuB7cZHyl2|n^A#Pgk{uF<-)e<@ zb%65~xk?7f7rdt%36!r$ijW_9Ev7QVnb%_SGQxQ+t}_1ODq~HVugFz0LV^RN%va

o6Se}~QjUVAgg?xV{8(R^ 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�j<-lxC8gsnQ{MA!#SQ_7lqFYw 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 float: ... + def __getattr__(self, name: str) -> Any: ... + +class ImagingFont: + def __getattr__(self, name: str) -> Any: ... + +class ImagingDraw: + def __getattr__(self, name: str) -> Any: ... + +class PixelAccess: + def __getitem__(self, xy: tuple[int, int]) -> float | tuple[int, ...]: ... + def __setitem__( + self, xy: tuple[int, int], color: float | tuple[int, ...] + ) -> None: ... + +class ImagingDecoder: + def __getattr__(self, name: str) -> Any: ... + +class ImagingEncoder: + def __getattr__(self, name: str) -> Any: ... + +class _Outline: + def close(self) -> None: ... + def __getattr__(self, name: str) -> Any: ... + +def font(image: ImagingCore, glyphdata: bytes) -> ImagingFont: ... +def outline() -> _Outline: ... +def __getattr__(name: str) -> Any: ... diff --git a/myenv/lib/python3.10/site-packages/PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so b/myenv/lib/python3.10/site-packages/PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..fc65619943b2fd9dc9b2908f384a3f02a0fe948d GIT binary patch literal 141369 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/_imagingcms.pyi b/myenv/lib/python3.10/site-packages/PIL/_imagingcms.pyi new file mode 100644 index 0000000..ddcf93a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_imagingcms.pyi @@ -0,0 +1,143 @@ +import datetime +import sys +from typing import Literal, SupportsFloat, TypedDict + +from ._typing import CapsuleType + +littlecms_version: str | None + +_Tuple3f = tuple[float, float, float] +_Tuple2x3f = tuple[_Tuple3f, _Tuple3f] +_Tuple3x3f = tuple[_Tuple3f, _Tuple3f, _Tuple3f] + +class _IccMeasurementCondition(TypedDict): + observer: int + backing: _Tuple3f + geo: str + flare: float + illuminant_type: str + +class _IccViewingCondition(TypedDict): + illuminant: _Tuple3f + surround: _Tuple3f + illuminant_type: str + +class CmsProfile: + @property + def rendering_intent(self) -> int: ... + @property + def creation_date(self) -> datetime.datetime | None: ... + @property + def copyright(self) -> str | None: ... + @property + def target(self) -> str | None: ... + @property + def manufacturer(self) -> str | None: ... + @property + def model(self) -> str | None: ... + @property + def profile_description(self) -> str | None: ... + @property + def screening_description(self) -> str | None: ... + @property + def viewing_condition(self) -> str | None: ... + @property + def version(self) -> float: ... + @property + def icc_version(self) -> int: ... + @property + def attributes(self) -> int: ... + @property + def header_flags(self) -> int: ... + @property + def header_manufacturer(self) -> str: ... + @property + def header_model(self) -> str: ... + @property + def device_class(self) -> str: ... + @property + def connection_space(self) -> str: ... + @property + def xcolor_space(self) -> str: ... + @property + def profile_id(self) -> bytes: ... + @property + def is_matrix_shaper(self) -> bool: ... + @property + def technology(self) -> str | None: ... + @property + def colorimetric_intent(self) -> str | None: ... + @property + def perceptual_rendering_intent_gamut(self) -> str | None: ... + @property + def saturation_rendering_intent_gamut(self) -> str | None: ... + @property + def red_colorant(self) -> _Tuple2x3f | None: ... + @property + def green_colorant(self) -> _Tuple2x3f | None: ... + @property + def blue_colorant(self) -> _Tuple2x3f | None: ... + @property + def red_primary(self) -> _Tuple2x3f | None: ... + @property + def green_primary(self) -> _Tuple2x3f | None: ... + @property + def blue_primary(self) -> _Tuple2x3f | None: ... + @property + def media_white_point_temperature(self) -> float | None: ... + @property + def media_white_point(self) -> _Tuple2x3f | None: ... + @property + def media_black_point(self) -> _Tuple2x3f | None: ... + @property + def luminance(self) -> _Tuple2x3f | None: ... + @property + def chromatic_adaptation(self) -> tuple[_Tuple3x3f, _Tuple3x3f] | None: ... + @property + def chromaticity(self) -> _Tuple3x3f | None: ... + @property + def colorant_table(self) -> list[str] | None: ... + @property + def colorant_table_out(self) -> list[str] | None: ... + @property + def intent_supported(self) -> dict[int, tuple[bool, bool, bool]] | None: ... + @property + def clut(self) -> dict[int, tuple[bool, bool, bool]] | None: ... + @property + def icc_measurement_condition(self) -> _IccMeasurementCondition | None: ... + @property + def icc_viewing_condition(self) -> _IccViewingCondition | None: ... + def is_intent_supported(self, intent: int, direction: int, /) -> int: ... + +class CmsTransform: + def apply(self, id_in: CapsuleType, id_out: CapsuleType) -> int: ... + +def profile_open(profile: str, /) -> CmsProfile: ... +def profile_frombytes(profile: bytes, /) -> CmsProfile: ... +def profile_tobytes(profile: CmsProfile, /) -> bytes: ... +def buildTransform( + input_profile: CmsProfile, + output_profile: CmsProfile, + in_mode: str, + out_mode: str, + rendering_intent: int = 0, + cms_flags: int = 0, + /, +) -> CmsTransform: ... +def buildProofTransform( + input_profile: CmsProfile, + output_profile: CmsProfile, + proof_profile: CmsProfile, + in_mode: str, + out_mode: str, + rendering_intent: int = 0, + proof_intent: int = 0, + cms_flags: int = 0, + /, +) -> CmsTransform: ... +def createProfile( + color_space: Literal["LAB", "XYZ", "sRGB"], color_temp: SupportsFloat = 0.0, / +) -> CmsProfile: ... + +if sys.platform == "win32": + def get_display_profile_win32(handle: int = 0, is_dc: int = 0, /) -> str | None: ... diff --git a/myenv/lib/python3.10/site-packages/PIL/_imagingft.cpython-310-x86_64-linux-gnu.so b/myenv/lib/python3.10/site-packages/PIL/_imagingft.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..631313cfe082cccd0c42275cc9ffb3206acfe5ad GIT binary patch literal 298297 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

iw4*tUAPAA7H9UP_=l4N^`=el7W=D$~)$f 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�pIBswEY3nm8wHotM7o2!R94&+DVhfk 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/_imagingft.pyi b/myenv/lib/python3.10/site-packages/PIL/_imagingft.pyi new file mode 100644 index 0000000..1cb1429 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_imagingft.pyi @@ -0,0 +1,69 @@ +from typing import Any, Callable + +from . import ImageFont, _imaging + +class Font: + @property + def family(self) -> str | None: ... + @property + def style(self) -> str | None: ... + @property + def ascent(self) -> int: ... + @property + def descent(self) -> int: ... + @property + def height(self) -> int: ... + @property + def x_ppem(self) -> int: ... + @property + def y_ppem(self) -> int: ... + @property + def glyphs(self) -> int: ... + def render( + self, + string: str | bytes, + fill: Callable[[int, int], _imaging.ImagingCore], + mode: str, + dir: str | None, + features: list[str] | None, + lang: str | None, + stroke_width: float, + stroke_filled: bool, + anchor: str | None, + foreground_ink_long: int, + start: tuple[float, float], + /, + ) -> tuple[_imaging.ImagingCore, tuple[int, int]]: ... + def getsize( + self, + string: str | bytes | bytearray, + mode: str, + dir: str | None, + features: list[str] | None, + lang: str | None, + anchor: str | None, + /, + ) -> tuple[tuple[int, int], tuple[int, int]]: ... + def getlength( + self, + string: str | bytes, + mode: str, + dir: str | None, + features: list[str] | None, + lang: str | None, + /, + ) -> float: ... + def getvarnames(self) -> list[bytes]: ... + def getvaraxes(self) -> list[ImageFont.Axis]: ... + def setvarname(self, instance_index: int, /) -> None: ... + def setvaraxes(self, axes: list[float], /) -> None: ... + +def getfont( + filename: str | bytes, + size: float, + index: int, + encoding: str, + font_bytes: bytes, + layout_engine: int, +) -> Font: ... +def __getattr__(name: str) -> Any: ... diff --git a/myenv/lib/python3.10/site-packages/PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so b/myenv/lib/python3.10/site-packages/PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..d458528386665abaf1c5591d0b5e9b4528c17e2e GIT binary patch literal 161896 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%0DXxE^qOfQ#`qHPUkd8h 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 Any: ... diff --git a/myenv/lib/python3.10/site-packages/PIL/_imagingmorph.cpython-310-x86_64-linux-gnu.so b/myenv/lib/python3.10/site-packages/PIL/_imagingmorph.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..ea41a9e27b3914e7a4f192da35e3be1cc5b8ada9 GIT binary patch literal 35896 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/_imagingmorph.pyi b/myenv/lib/python3.10/site-packages/PIL/_imagingmorph.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_imagingmorph.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/myenv/lib/python3.10/site-packages/PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so b/myenv/lib/python3.10/site-packages/PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..d4302f4bc93d136d0af56fe4797beb93dd5f9556 GIT binary patch literal 45560 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/_imagingtk.pyi b/myenv/lib/python3.10/site-packages/PIL/_imagingtk.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_imagingtk.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/myenv/lib/python3.10/site-packages/PIL/_tkinter_finder.py b/myenv/lib/python3.10/site-packages/PIL/_tkinter_finder.py new file mode 100644 index 0000000..9c01430 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_tkinter_finder.py @@ -0,0 +1,20 @@ +"""Find compiled module linking to Tcl / Tk libraries""" + +from __future__ import annotations + +import sys +import tkinter + +tk = getattr(tkinter, "_tkinter") + +try: + if hasattr(sys, "pypy_find_executable"): + TKINTER_LIB = tk.tklib_cffi.__file__ + else: + TKINTER_LIB = tk.__file__ +except AttributeError: + # _tkinter may be compiled directly into Python, in which case __file__ is + # not available. load_tkinter_funcs will check the binary first in any case. + TKINTER_LIB = None + +tk_version = str(tkinter.TkVersion) diff --git a/myenv/lib/python3.10/site-packages/PIL/_typing.py b/myenv/lib/python3.10/site-packages/PIL/_typing.py new file mode 100644 index 0000000..373938e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_typing.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +import os +import sys +from collections.abc import Sequence +from typing import Any, Protocol, TypeVar, Union + +TYPE_CHECKING = False +if TYPE_CHECKING: + from numbers import _IntegralLike as IntegralLike + + try: + import numpy.typing as npt + + NumpyArray = npt.NDArray[Any] # requires numpy>=1.21 + except (ImportError, AttributeError): + pass + +if sys.version_info >= (3, 13): + from types import CapsuleType +else: + CapsuleType = object + +if sys.version_info >= (3, 12): + from collections.abc import Buffer +else: + Buffer = Any + +if sys.version_info >= (3, 10): + from typing import TypeGuard +else: + try: + from typing_extensions import TypeGuard + except ImportError: + + class TypeGuard: # type: ignore[no-redef] + def __class_getitem__(cls, item: Any) -> type[bool]: + return bool + + +Coords = Union[Sequence[float], Sequence[Sequence[float]]] + + +_T_co = TypeVar("_T_co", covariant=True) + + +class SupportsRead(Protocol[_T_co]): + def read(self, length: int = ..., /) -> _T_co: ... + + +StrOrBytesPath = Union[str, bytes, os.PathLike[str], os.PathLike[bytes]] + + +__all__ = ["Buffer", "IntegralLike", "StrOrBytesPath", "SupportsRead", "TypeGuard"] diff --git a/myenv/lib/python3.10/site-packages/PIL/_util.py b/myenv/lib/python3.10/site-packages/PIL/_util.py new file mode 100644 index 0000000..8ef0d36 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_util.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +import os +from typing import Any, NoReturn + +from ._typing import StrOrBytesPath, TypeGuard + + +def is_path(f: Any) -> TypeGuard[StrOrBytesPath]: + return isinstance(f, (bytes, str, os.PathLike)) + + +class DeferredError: + def __init__(self, ex: BaseException): + self.ex = ex + + def __getattr__(self, elt: str) -> NoReturn: + raise self.ex + + @staticmethod + def new(ex: BaseException) -> Any: + """ + Creates an object that raises the wrapped exception ``ex`` when used, + and casts it to :py:obj:`~typing.Any` type. + """ + return DeferredError(ex) diff --git a/myenv/lib/python3.10/site-packages/PIL/_version.py b/myenv/lib/python3.10/site-packages/PIL/_version.py new file mode 100644 index 0000000..74e6335 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_version.py @@ -0,0 +1,4 @@ +# Master version for Pillow +from __future__ import annotations + +__version__ = "11.3.0" diff --git a/myenv/lib/python3.10/site-packages/PIL/_webp.cpython-310-x86_64-linux-gnu.so b/myenv/lib/python3.10/site-packages/PIL/_webp.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..6e1e542a9ae8d05efb85a3344a27a527490af79a GIT binary patch literal 84193 zcmeFa33yf2)i-|5J@?$4?>jMv>uy5;4vaUccA) zTgp{k71Aq>pn|8q)mRhw7XI%->1NWOO{TEsJgvN?lfrwY*B`YPJxdk6eP9}%?I^rg zdhIHqC)>>)t?8$gcPX^tmC^@r?2qFsn4}mA=A2qO2?{RKrPtpy-QRb$JM2^KywdXu z`<1>6G^Sqh8M=&U&?|)(I8RUGJK7m3x}jHUM^Fv%U#aeIgXYs^Q0wWH+Poe8eMh@v zn$asgyHx!bUew^fz;=e^j0MhE;EV;%Sm2BW&RF1#1^TVHz2K2ZnklrpwAJ! z`{`zVLtk_nzEa~$Ps4j~^=bH%W$ONY;c57^Q3_vw8a`L!SDl6*q466|!_UxoXTFl> z>3@grH+&j?gNAcX!&hr~;c588LzG;vohScpEq~W({2qSKY4~4j{{7#9Z#fPBwB|qh z9e88GspCDY`Ln+RA3hELC(U2<9r)7I@PF6*Ro{WHJ`MlA=3n(4_&ulLKhgaAzXRWL z8vb+5fAl->*)^xy$MZ|;X?R1o-(Pzwzvr)Qb*JJzy|>L(cupTVH&md}9D~OMYk%#E z!6&t24P#FXJ~;-zHwK>?gWnf}Pm96tkHLpy@GUX;9x?bsG5EeQ_`@;y;u!qV82pGB z{5Bn*CUB!-@OxwMv zs>*w~S^>oClr4yy7(8j-tDsudh@0pkQ5IDzfOs#L5mQ>tcf%mwJ31yDt>(MJyQ(Vh zmDLI$f1;|&dsVdpi1&_miK(vUyOQIrNrV?x^IhT7RaM^Ws}(>w8LBGptEv@1e5R_( z`-W--5U-Ew1+gs#pQTvjy*UP-9fRK$gAc{v_r%~k$KdzI;Jd`&_r>7#M-@WdAA|1} z!`~8vKPv`*C27fpP-!le(GzNcm4E|UQJ`#g(jluVd!5@#o_m07zh{5-X!5i}w zK>O#!;GGzJzZiTl2H!shpB;nGjlqXw@MB`|IWhRW7<@qtzA^@16ob!?!I#G12gKl` zG5CTQd}R#2Fa}>0gC7`!ua3bFioq|8!4HnX*T>-X7DTA4V(>#__&3Dh&xyfri@_Jg z;G1Lc!(#BeV(`Ob@OxtL=f>do#^6h0@cUx$vFpYD82rc>{+1YgX$<~Q48AM|e>es| zAqIb@dd320Eb#xo1wKtV>z~n0?>o`$_AfBcqgz@UeJ2k`Hyw1I66H<~c^>GKy?%@L zl#`rPY8D*Tp;kfgt^se3k&=PVQz8Sf&#xv_$ToA@DT9+-kHP|CjimFt-?O#{?clm|Kgs!vYT{%q>M*i@*a3b1TudPvCxpxrJ!k zBXCc`+&Z*13*4D7w+w9?1WqH&twLM9zzKx8MQE!Q*hiRKgSJY6|B2;&A-4o=rGTS5 zN~Vs+yxw7tXEE$VVh!^mePF#c#WrY3H~0!Kcq8@zF$Y1jzO5!IqYk&0kTe9g8CckH;f*MVmfq z9Rw;VF5tS9r4u7zyw8Y4@LnFt#{29@*SeJX&!bio$=zNa$pG}!cBoO8viLw#d88mE z6{-k(4oC;k>K_#B8d+xCEsoR-dAV=N+{YiI*74UN1KjbIHzp(Q*gp&NLJ0O$kp^( z>jsv{>j(~5@LtUM==P%4cmD}2nil@qYs|b3zFQRE=g1}GdlG!_9RdDQg&(Ec-%I@C zUVqc0O8a6TGmk4YhWC%4SU5(d#!5IWyYyZ!mv4vFUB<7J+UUNEQ^k ziyZ=$DyWn#d=e?TeRRgN6>^6T=R}(-oYv(KO9w?k)ZPr6@{-<6#jWj%et!OvK^y* zlNP)&Cgs6M&*-j{2mQXX18)Y)U{H}#9+b_#Ld0A!o_9;2#+s8&Qo%^6sYiCB;ri0m-#mEC{FR?z@`l-Z&T|@Dk z3=1>_cl-L% z*1wYr@mrVjQAUx=)7ad=q$r1n^`skS?J35gN#wp`8`o4W%IjK z4*fYqXGeEn>b7==_7k_)M1m8yFD7nAB>Zr^%<&I7%{Ne+9hrNv*t_MC9OUR5P>rTk z9ENQdAcaSp{-gCP$k$1tk-9~j7FJH&QD2&pT3R}3%bSh%q%9w;Sp7&G6e|3DV$&C` zi;>eKNP9JyLmBE&*6hU{1;NVV&nA z%=6*aS?KqISxgma^b&l6K*;+umfYyDk5V=d1QI!EE#y+mpJFuReL?##4CKTeHIahW z9?-Jz^G9@2{xl_MGv3EFJ=2;6h1up=v|(Zg4eJ41%4Oiwlw2$rpUP?gcp(_NqAY6t zSoicCd)o9=_Qa;oY2;TCB#7ok6A>~wbl{iZIcjbBwT$T5~{&ZbIkpT?zl$^HjT~y4}^P-49ed^0$(|=^3#0 zCM&W~o$$0ZGR4&8d$GZFNah!Ozv=w~dI1J`r?nO4=G3Ie;d@N%)?Tm??frDCixF-4 zpz)&Zqq9?fJ{maz?%pwY3v6PvKJlqo5^YL&ILT?$^bD+U5n4w#^*0++kqinXL3=vD zBT;zEY5hLhM&UarhDF)+N^I_6ryJ7MSZ*aF#CVzh)bVUO`R|m?4?&rkO(&u|l0Lvj za{3oXF~D6I;;QKO!~@tHMYnvOviVkV<0q198Ymkhzg7j>HqthI^>yRaO<$e7A{PtI zrmxJ)`of@ZVdEKX`j9qFQ+lkT9v%CEO<(=1u?raQ>tJmAL=;wxApN3)^kOVY=6Bl< zfI@y?+I}9ReiU~$)a)~O5L2M34laa@NtCf;$W|Q#TVv(Kc(_jT=?OKne+p50vTr)L zA-cUvCU+4hH*(>ONKhtsj-K45oZLCBS74NCa!-?aToWl(S@AW@+mycLkm#sv5&kIlO`6mKGhxZOL zpW9^=x?{+lj1Zk$o6DQ}-N(8uC8wuO~L$6*(c~n#e+#Ynvm-*;hR6 zfgFa&{1B3v)}Lw}%!Uwr4Mr8+exC^B!Z(`|FbOKTud3o4dqQrGwr`H?XP=nr)r|l8 zXw!X>4ZuV(q-`uQ(jo%Q0A%`Zj_lHSOrgz@J%T^T>RyeH5;!b)q=e0pqo}rC40Q`% ziSBqHvH>9XJWzKF6tCb^seyjH8M*HJQu$zAFYGm5!LGgVx#*4?L>LCjjR*ZD^ZHtF za#e%MueHAa0muDXYlax*qt@N;bNr2wRa_&stR(ApI|auV+*H4JHs@O#4mYAruOevo z<5&w*4l7&*^pSZbi#_AFJp-tDj&`@O-Hsu*s79@?pr`i^Z{Hos1~(1MmFODLxDI1y za!cu}%)#;)2G8<1%1vL{DVu#tx9N~7$^GP5~~zN-JBy8mhD zzim?cyx(reEBa40eIV(19)04DAs=F2dzvBN@M_zAoH93b-n zyfL!9-5#&q+pV8Ly0nW*ySLHqQnq_sx8p>tZ(RzM)Kt#>xq!%gZ8r-W^HtMJkDSDb z9M{W>`R>6xYj2fprp;7jMghuP&j z`~~L62TlYlQXXtcdGNWWCktEpeq7e~IK)2fqR~={#YVnky~o`NZ^%m`IKe_PbXvDV zM@-gjn>f}TCHEmYw_YZ=RSgWZOGL!etqY|8XIpEO5pGXDsml-U2y`7WEysNM6RGr7PzxUQ`oaFb|c6 zaLuA6wM!coEnC`POdC6@jBmWEj1@~8R@B!oTi#e(6JE4r-bJlMU&aW(6x@bwcqPD{o z6j!@kU{yCRs%@ORXldOtsmRczMk^T0YcVWiUQLbR4c<7vVpQeaNi(bFPM$Jj?wBbv zCzp4i#!Wu2Y~r}`xnbl7P?o=b^5mN+-+Tif zUE+?}|M!z8t5F_&6CXCA{0!xNC^OzVdGa92yHN7fv2eMi{4qttfF|D=+i%X@b zBxi56%96vI{N>3T%*n~y%rVK$xOU;%gKICYedbKie7{Xd4wolqmn8>BB|GEYivgk| z1y;BQK5>!X*4PER;R84v$|VOk`KBiG0iax5Ex2}rCMUSkca(jXvv1!&5K+FsCj{ziLU>zkaMy~7%n9KOb1mYlQI zE=w-h6d0S_;`2S8kX%rnoC8yiO3nr=Y*g-2{(iK50I|Xcm6ZI6B0mW550noYZN%3? zT&=*}1>DE&eL~5HFv`c{-1B0=G42J);n5xuvLNCv$lDKj7Ihy_`;Vvn$0MYC zGvI*H;(+n)h3)k+_dE|h=Ba0*VBBPF^{w=95OV{re?e|N=FiP2l^>>ji%rTAsWX!I z!zL}T$$r>mpJ^4E-yDCLTlY=mDAzY0*wLq($_HgnHz2}Ye02ln+bYcGTFg(S*Tiqp z3-MuBCLglLBp=3g6xT6at+G{}A`1UHR@>6ug6R&X-8uGp{oiIAeh`7WiLi0q^^^ zr+>fpyN2q0uQqLz;_$vV>wQnw`(Et-vaepB8P0#x0^b!s|F7`d=6t)Pp<#s|qs#Mj zS*OdDy4A4%OutU7n}QI$f^Rasmrapyh)e$=<-2bKBLPcx>UWL`W;sf_id&3 zJ^a&Y-uLON=bujbufaae=6yf^^j3G5or*Cv=;43;9dr->^mout$Di6u2jqPp-@|ar z&6kJ&(|5@C@ZR_BRjZEg0(*Gx`}L>OPse-o)5}l3qkj+YeZSsoXX?u7c#nR1>G7YA z_v~MFI^lmRyx@PP;@{;TFaEQ?i{XFRaJ}Da_@AQo*wLehhjYeGp4m5CI5>Y`eqnfE z!N4H}g@py-oM||*j?Qb;guHY3W)EC0Xpc)E58e|KM=uD58Nd6uWv3igWM+t7Nx zkEh$d?e+CEFV{Mz8HckwK5q0AT;JBv=lAn~&-w{Y%bX)wr4Z%QihTaK-6;Hy z&vf2L&puz=Wc27W10Mpiehbd{URjkWtY^?meDBU{+1O{-gn@b$-&~2$$!G@3_S=h= zHX7CkMD^`7mRyc~`&r;hK(Fz+T}pwn+AzlWn?gTg{a@%P{^l;M2PooixZ+CjW*XK# zZ1aTB9OpQ2(C8n~D4z9%NAWd*qX~u1CP;G^qyRH0juH&_0M2X^hQ{;D2#&i4YzgNG z5OjOsam<7w0kYjv97!h(6Cms+;VdX&xBxkBHygmY0u;DoD4@Kf&fMdQ04M_iV5YNc03<~x6YfP;qh1jM;e%2z_N~WGZ-9)ga92z zy~MM`UI!rQZ&1r|9%uC^q&UuVs0#0!9&b9ZU!ZY3G1guLMB=3MzX9Qh-;>K==)~>G zUxA89y9I-`4k1L7Lg|-+$@&WdF{yLqP&KWn8n20`;yJXzUIuFHDE(v`^UA}-BQW`Usf#2u&lkr6gD+|8$kLr3W zP{9xJw#y7Y;f%$%c-<6Gf-Uyl{6??489E0Kq;f>r?ytiDo(xh<*j)xx@X50X5ra|yeX-}ckX7@!{EBI>KKLPA=|3T4z&3GHq_PA#wY=XzqOQG*x z_aSQVh75b3o6I(Erxl^ies^2~fVQN3^w8q+^O)cVse_=wA$K<09G77qb`N$2@M-Gz zKsoB3PvEn(ivb*Sdm!F|Uxf0J1X^8-qECc|0XXg!k?qUSwE#|}4ut=MUxjV}V3?^k z$NjIAS1?G&OudDS|4v&8c|kLEOc=%2X&V7$o2g5PJgIzSraeb(4Kw*#U~|m0tB}Bg zrkV0IzydSvVh9iV%%ocZ7MW>XX+q0PUVwp?nrYkVAHOL>jhbo4=x^H;9V*SVi#Uvc z0;|llztVqk3amEMzRz(v3S4NW4abZL#w)PiOj}F4Czuj0tIV|L>Bl59Z7hbm0U$?^ zqNv-Z(@AhJYpz91TAA>z ze~HDwPS5r?#51ZT!u^fOD^NGw*I*+53K0=BtR=wtS6Wx1u>Oi6`uBJG4eE~b6y7sv ze_ok<1CkQrS-0jxJO9I-+E8~K#-i{t8iiLiu-*skf230i3dhOByKpg|n}SKs!zZ@6tEtnc|uZO$@7umUud)T)4)2TntjhB~lgZn+QAqq2MxMU4i#b%t)Dv zcs8QW|6K4IAzn`+lak0VtR_UL|M|?H2=V857h^GJs7~G$RUXF__rH)yFIz?Q_-|AG zEG=GV3mT4zrK5!wz5yj*04UNIxj1^X<^h~QS~1)3Vxr-kh3mj{SQiyotV!4|4?=Q zc!B>&<~`EQeO@F3tg1PJb6?H~%peqjS ziU$RZ;2@O*yDqL>Y6J(XY3nX$ZWY;dA2IY1m!N>`^2@#GS;{G0deebKI_^ z3{Pb@1+K|#d#(UQ?j6jM#R8PNAF@q}Xb^>$I6muwFmNNRK4@wsV(SqsO?d-#$7#j8 zgngTT;w>8;n6n zBS<+4Gj|J{!G-ao5MA!mAO)8M{|c<(HgH*6DuCm5;=-{^fS@}JvoBaLK(_lY4(U<> z!tU+N{L5u6&2bBp0W_ri0@4cHMR07eQGg=1iKba0K&iVMV+*cSi-mhHd>p(?DA-?8 z+A0xU-V2$*%LQ2Ip2dFF2vF}n&(-A$0am#KsM}hRw!!@pF&tbc{@CXJ zn{4Za((JxL%9YY)m-{5!Y!qORyPPB4B*0$RrPiAT*yrBEb!v-@bibRx)qJZ^THG!i z=~V(8a(gf$wh3_9UCcI30vvTOaA~=HA2+->GrLA`eaNPYZfolagk@`0- zyVnVTrTsPbx>Lr0rF|@o^?jjXX}_AIxIrKs8(6ntegto{<{}c(D}y)3ze;Z}rRZHr zTp0}aTuy{rq=Do9i?VJ_ZE4}?~c!cE8TuH(>+?RVn)Z0 zwO-7T!M*8RW3b}BPecF2dK--XDKG zVD}cb{Fzu0H(2cY=gOompUnyG6CmjB18?vb$!DX;Hmq{${Yz^Gp!8tyf%qpWX&caCf55)LyB71i^9V;XSo?D$_&IeV%MN!j=s=??X<~%W#zA3^A^Va1Y$Nl#kv)3tbB+~ zO;>9ohn?E5D^+)#zk`~v9%jtR$PJzYE)k!RXQ_SHN$_Umrxb$_bZ5hW83U4;U9;VP zVvWftNTP$o##t;JhwUv2%P6$|LBYSnTQH*}xRQc@hz>JGNR~I;?$9w~q>K|jBVR_T zH5qIP^B`(r#)P1a>FoBzyvdlDF$x63eTZC>Qs|-__g;8AW3m7R?t_@%8B;{FBKJlD zmBEj|UFyz2BFUKAmBON~O99h@+`Ck|12}-`F86g+t_{m&%t+*Zr5XdFA{G_Nm}zZ9 z-Eq1>fMobWR8*W#hE9gH389jim{kIFQZH!cIOMSULtv+jj2WnRpWE1gO@CIglM3g% zE5nA7H8S-W>W16c13;+&j{8@%$tnxI4NB1M4Ov;`8KWQ|+x-b5JgY*lmIXj%jnS*+ zgP53EV+F`@Z-D8uCJK=2_Qqt(s!Vzx(hA&t7(~{zw4MNp+~bIutmy)jy0a-@hOF07 z_ZiqEYo@w;aD!y45}?ZEx7V^}2~h3sLLg*aAizSm0vSDPZl^y$biG?cMHgg!0-)J- z;G(QrVcX??4|dMFNOardegV^FEfUIJw+JrEx;VWQ_SomX!@(^Uw*780Jejpb*jn7K z>~w1)w~dF~Ozc0hu9EOM?7m0=P15G5JC6dkOPgcvI;wMx0Ilx%m~C0t3UJ(Agdonk zE_nfp6X8WQM%MLGN2>2ZyWNnu0Yh+*&R4@jojPT71K4Bkq6PyEKu=1^C*2v0ciBr! zLq&xJJto^dweTnOV$#bxD|k6L+-7>Huc&IccM<59Ndj+$D8k}Q$?9*hp3nj-g|qU4 zFS2Diy)js{H{34t#^BB}>)apEFoSy&2)f&;{m`y#!u)g%WyVuxk;S^>Fd`j^M8}aa zI`o|5M1i-8AtTMn%wqjgNJ@)O=>)4ePFK9kIESDTo91ba`d6ugG z3O>)Ct?H}5n0=9|2O%VTiPWv%plxV)pS98r4qxaa-Z_(D?!+x}Tt7s7ipK>x25CSpsCZPa_0E7YLB;Cc%55IT@53c1!Rc zs!rloHpktMoNPW%;spg;9|LiY$?wjYabXj1$+pmeQoTyBIWizN(K zgiTSx4C@Ho6RNb>ryRG@sBxu02B6n00FJ|RFvsDMA{Gi@I?+0rm%?#CT!OkZq%EYO zCGS3krIrGlMu2jtXithiX`yijFkM#D5;)snR>oWc$`|y={ z0dn1c!`Idd0Sep$Hh{|n80=1`qN@cca?hc(H3Ag7QxQhiS^-Mk-y>YD^#YW;ClIdI zl>$Uvo}F5o1eoZq;C$aIK&4yGPOlbVhWk0}Wo;Lr%FSn|I|P{R9>g56t`nfzwP0@R z1_5f^zi~V_3b4@qF*UeZfW>Y)CbP9mfO;IjQubX4S1a80N?0_$9&cw8VVG8d>EyxW zk=NP&98=mDkw#=pYq**GDJG6Tax+bOuA(`S?^F1>W^yyyC-z#6WM(EZ@`AlqupVSR zyVpwAGguEt=F*KNs(nu6dsL^ylzm=quX%LVXB@TRHWS4B3`yBCW^-g0<88i@xhwK9 zd#_c!?}>a)XrYq1FA~R*FErC>hy9VSNLyqka^utz$z+@@QBsaY4og5Qs5OGWPl<>& z)_*B#gcz|puV0A{@U*KHSQLQ z{;L4ZZh+E`C7utX-{2l+n>U2A%l(RR@^=AtyIcXSHwD<^zCp@c0^H?3N~63jz+U%G z+Up$w?sHAHX%%3f`w`o;3GhJI`gt|D&q|yNt@j(&g>+oc9`YFo>tXA2=N4F}>yp|f z*quvosyu3)NE{3sIBp_s|D^yyCGDRgE!*gQKZY9TA4^-Fm&`O28jl%hgl@$^&CqB} zO<(A3su|)*h2OB)z?yBb$KEf%g1Yf-$w^QzGz)Ew&_VE+p-~uvFT@SI75WD>@Q2=n zM{S&f(C~LzM<61=oJg<5m7?M|+(0|phPp}erfS5uf?-$K@}8ppKJ_C4>(1o zi_jVv$_QNqxB5dTI8#C=5Pp863wfDHfGjtbrVZM+Y zT8CC3E%-xsqm>;Ri*W@)Q<1ykLN8$^IH5+giVuy!G*1YvL|fPBLfKX?(=s46Kua)b zh$T!6j|jnXq6^jsER&#MIpqW!X9Ol=B)|4x>`||UQ3Bn%9{?(W_3Xfd&gTH!0KzWt zkdCyO&^NGOLe-JwJMgf47>Ch1$a0_&B5$DF$WbX{!(exsUqU4g13QK#!l zR3(Q7yUs&3TT-jbbQ*YE}L$#q-c|G)uJqrm+b z9tu1uK#{vpfHVd`sk@p2o)QX9GVaucS=^Q0-nzra#Eo>kVrF{2u7hn;$>r zu$~jR&2+W`l0_(RyGq@LEJA@h6y%Tm2jU^HM?p^HhtMkULj@&9c+45NQ$fLA%p8Hc z%*6Z9cZOl{_&d<^?CaSb>k|Wyn@&R*-3>;}2A)vOjL011|3Hg^upS~Y1r8|4iR958 zPbw%e@-GhHNi&UeBpBgW5CR7kEhDm>?GBphq-94|(j`wTTGvQ3t@w56FzW5G6NuV1QLwU zD&Wn~2Z$eEXaq)Wh3>&D^oLqt9Xr&YP6!3iXsuLk(PFIhTTA3i8Jv;*25~TlGdTOyyqyD%xKcot(K{WPK`YtT zZ4Z?^2M#nsx5JQT=yizkgl$WfSB`* z>6r#Z4(pEZY||+L6qx|^d=XO?RwFVR+W7h^ze0gun*hi5nGD8wa_10{>-(kYJi)du zH1Pe(%nSf9BKKo(z6VrWC$a>#_C2Ve#K<-<_#RSFFmj&{kdFC`$n)@oPe*xngF5BdlkJx?>45I-djT`p&RayG0%z}g6B#FcgJ1w?!Xu|!w{F`Bs1J%<93zKBhD58ZYku) z{YKJ@;f4`maVjbL-9I8K;+{yPZyZ_P;|?U2M7R^0fhdl9Qg(v{*j&)p<=u8dS`O=x zxE#~@3{d1stnG1qJ@XH<0QFOlUz`!wUqOyIDlS(+i4i_p5tpYRm2KkkmC=xGuBFh5 zJ~lLoXDD0?5BDIV zXzR6<=aC%&Q_KsDm?eTPklRcmm?XfUJ8FC1#U#J0;(OmC4+m$u&IQ+Ea^h;FVrw zUK>BUmnZl-Eg0W^HO%WGBm~_r!f4o>MjvOpuOocSoyl}%soZ6o*UOD@CA#ELt$$;p znBTWfuuJ~FlzF4>(x{OhjR5EP8c2>S1;S_KuEJ7pCi%Kt0vt435W{w-$L2S3bKwuO ztFO!T!e)4EJji{{W3!Ch!H7chgfHV^Ve_6h4)A>GxW{H1x#uB1%@iwiOxV1~k@J?q zNS%kviruF-c2zvu$>hPSI@HQLAInLXrYxdMNS9;tynLvfktOFk)4f(k{(30vH`R^R z#YFStN+a)|n35Se!n}c4zQK4rZXMtOlIloK%U=o;CXO)^ z8I3QH$j5d>nF1s4Z}70MtuwR0d!$KgsgWIB9fI=;<7_03LB1q^AFxa&A^%xOwR-u& zWD655Z@p1Nqu1bg$6<8k-^{zOfGK>F$amV7b>LqxkF2lL=90!YH0143A%D0mZkCz0 ziUbCiQMeqV^gn^;If$ZJjeLGCA2&vczt7{$d9$&FIjes%ZM}(HtYk8kWtO65>h>==ck28qasG$0L(AndI`f}#I^^L3dp?SL5!+IMm5W8 zrS3>d*?wRVa=&kN+9jkh5{_ z!MyeTL>PY8&L9%n6@y>F>GP{VZX*{nq!N?Aj={TG*~sVzw8VGb^e~3eBonF&u_BUh zM&1|b()zIkR4GaF#+%8^JdnM4$rHBxb$)c5;tR3i9P+YbBk!*We(O1r&_FEbm66v7 z5j}cj(9G8oE51-&-iC>g{Sz_Ky{C{cy`QU4b$16-Lr~&ml{5K${mgfviJsL1Ow63@ z-O|gz2f%ptWog}VK|X=`Vho4|fmzv&z@SGV-ORR3_PAjvM+32{FwEWS(J1#ugn}8e zvR&*F-!6m_uo95mO0A?C~uieU`x1`)WSHEAC2yDdL%mwEz$cFqzqh=z_P6xA4J zoF#|lOMtovSJ6ttbQG!u;Dfk^t(k%$Xid##M5viy+2=y!@Fr0BQ?dhaoqJOZoBuG_ z{O9=Mhu;P4CXm=;Cj< zN`Hv(2Qr^Q$lrD4=VG}$(KiPwg{+-_xjgqTnLrHkxv-I8?L2mQ?hzsedx$qL&&>$~ zF~n=qdU-BSx6Pp*;{D5u79s4;@g?!&iWTT&39hn51%_GVlen{X9=|-dB_552`I31Y zV(mO}d9KT04fhZm*5n4L+PNNL+nSNQr!|We;*XH|G6(P(=9gLGlP9IDoy}`Ko;4%+I{{{?PfiZ|VHpeKDq41lVV0>e+zt2+T)A&UH*=J)^TVR! z-Zi5xjd&f%YB`=Q^By-l;IbL470)~J8E#O9aW9a9xZ_Dc^GXr z`I0zWKS8q(*#ovChIzFwnO=kTSCq(KWdV}OeHEIC^OtJp>j*8WmsQ>{K1RSa3lpQ% zD8A&>*zxZ?ba_Ao7w=3ixAa>)*9e})I-r-B*I&1CRwJ9Tp9-{e*BK$IuVczBI#NFs$(902AMK$v;GR(VG_kFPs?S*UPy9jLa#|l{s z#5`O@_z4}uyw{h;ox_iS;Il!abF^)^ui>kBAUK!f(Gv47KG~Y{^V0Wm4f{Ekm150p z7NBeMZ@#2_un&I>lzxcH99-qGY!=zONxeF?c3%J2c;`XNMf^Hp4=*@yP`Oale21QB;37=HL25?$2> zc(SsS03^%cRxN=_kSoz}q@MDkZj#9xv#QO>KlM&9kB zo#pFFjxKR{Rs~lDgNwJ0e3@PajPf#VpZ!;GcLbNmVR;pgH72-5c(htrpIi4{_{?^G z56FMpl&yz($vOBDbJ=OUZT6&&(oPF z`4ui%$vifjY~D)t1*o6mn)DnNt0b+Bd5jzr?Lm}t1cV{*C!g>ykL9w2t1KiOb3nZi z7ZyQJidqvVckfFqJ|D=z+n@)TxUbe`*A)4IG7!z(gG;=@Uu|~d;ID$nO}Ny~_G&Ya z$Y+4y-ZD20tERc#%wRKX=b^Q^PtmN`m>E0^;npmdPvw|9OucnHx^}|c3?QyG<)Ct; zMA3CBiulZK8ZNZ~Y&NqR!jy4rt@8LzW%upi-~*jSauRyI*@?j zTZ{LpREya@fq&&`*cQlpSTo~`Qt0W&X3~svA@3$oa&ZTlgKPMm0P0a$j7z-jwXrJE z#-3^QU=w|9(^8TF}Jp6OK_Eg19UBFGiX z%?EciuFBXJ);C&cD_#Z8Ex0geJQg))N-FdSx$6H2!ZFJBRsYgb)v?6Ep|wWIJk9(L z%<+^k&tU8e{V3>nYdQ~4-cZ8gt&aQfcQyHGG&eAjXi>GGH)I! zN8`DQ$~w4zlv0Ze2_MTI^bqew`>B~;pRb5FBVPG3cRvGmwfgl_33eY0aW5`4)BBkN zIn#Z~`1w2_)vaWIwd^4J*Qr~{To2K@PTfl8d5Gid)Lmn~H}y}fQ+JI6Jj90e>aMZC zLu^~0d%O!&D^$q=w`%K0ZjT3IpxKq$@_~Ck#a|?!t_(6e@gR&}px#5I+>i`5lX*j8 zV)!2sDJ$O)wc@-4u?Rf1i%hdw&N-;*Zd)b4#P!KlUXPekasc_oL-flP_KgBki5*< zX1r4hnVgBgg1legk{Ri7T3*F#;?2mT;5>p$X5XxtB%cQlOQ$0|7Cj@c*PZd^r3lJ%*mC<5Z=DNg@`d5Upu7nxG)nH#{Ji@* zuQY~Vw#jw4qvwmWXGJNg*r*z#1&2v^r6%+K=Nd)k9o$zz&K75_uX zT1A=8STy#m*UG&VBj^JqNDdeN6(ga2fL`l;y0tNkrhGi#ke3-|$W)m2T<9Sd9|!wY z;F8tDW3$L+Yb$RBb)#5Wwl9Y~KOUo~b*7y>N(aYNV0wb07*8IXMK&)W_+6?mamj-A zJ5Nw4HW>(lPdt^*!J^Lx5kw`A%MvcF63?-g;6f_)=yd#uvDzX!3Lem-W?rs@mM~I# zUhdZs2Fy@$H+BLA?#5bC;BIWgdZXlzS^__$SgItbIAUCkcwCQwdxw(0Xamx(7}pG*^u3`E`dZe_)^fBF`b^Ya- z?p^PcZryp3so#@CU4T7b7}rcm)bC54ZUg*xT<7s?B<2Tc{5+yG3!gRMl5@ec)SU~z z3i2*4Ic*pWL-J*AF!7dPCQK+tVDhw~1c!vfa1{^JEZ%8@%7ov3+Q2)wM?H~V1$QCx zGJBi$9T4Af2j_8EUd3aLxr3WZnMJu;gjewx&6Dw;oFdX=u)K=L86&dfk2*9MjRlyuj4o;X~h@UbTj%QTrM4*0W= zoLrJDd6&-@PaJ-z@!rW3jyE)wCkqd2>Nv zbiwv73zy0tw@CiD0PqZ4{rN1Sd8?k?*R1c)#}Un2gUyh{eOG@zRb~DlnU8>4J8xLu zpU+j9yEXr=_5Jy*lzE$mcdzfyr=`r>HN0ni|7}$1_7o-WuJ!%-#FTl5rte+f|9R{w z%{>~vZ+-tv-j)8aD?fe2>F9c8qdUb$zl6U0!mY|CKay<1M*xQ6nwpPw=_{mGzD%!z z-G;o(2NM=YkuXZZ#IMpG!d0BqOA-00C<9z}+UopwDvu+t(e(BTG*!}GNP2|Qcp4dp zeX5PC_!iCWokmLfQKykpKSNO8rs<|vL26dgew*HN9HjBl*<48KhiiB`fa$1AB@hO1 zIV!7g75`Gp;m5&@e`?L!Pk6uNBRziRiyFv`T@#H`)t%&vYq)`+du2_$0R`5?U04%0 zXz9E`*`y@Iw?BzwlpNJ$2ImhHStcMK(cz1?Cco171}OBo#&cr6B6w`Bc8yZZM#)(^ zrb+(TBPW(>a`Dg@vdsH>uccAd;=s)p%7?Mln(guS3Bb+TbXi_5Je$kQ-7ws3xMp#6 zyl^0Q7>Ql+K>)7v9spooBJp=A;7f2xFP~u&&0KAmi{;7OgFrum>jEk_vtcE(xLwme9FXS|TTBio1yAzH$;ogHH?a%l13>YOZ zYAGDgEh0sojeik?|3wTwEnkTy|8pJq$-Ok5k2sVRYe1fbz!=&yQM~n0scH|^zDuX# z3u5{Z8y{_-BXS7N^)!xh78vKxp!GVN8{ksDFoWb}?!FRC(`8%Nxj*Ya31iOSn!HW3 zy1C$V9DXu;elGU-W~N!MNy#DusNFnEQc^NSN-HG1fosHS&C16$j0?*#5#xH8gLzzM zF*AJ8MOM$?Ue2^w~$T*!r%?Dv)uTjP5R zuvqw(E6&*&7`;7BN#(83T;>9MS~(wWn#&wuPah!a5KO0p_-&~jj)A`GNAs+NtYtVWg ze=7wTd3?c`9|Yb%*q34P36y!u>Iw8CvoZfHbmRZ4nPKsBG$FmN&-LebN&)G2ApO=O z{m$$wtrqapjCv}L*EOm@1kIU>)ov|F!!iEBxQ1U1;2Ko6;;OkB0GFxSyHNQXFh_CK z{sKU5Ppq4`Y91GsJ?m>+TF1`n*hw8b7)wiff_+}4UGQJb_>OxBkLvd-9$UAo%dTM|T8Jm>Hc6D|xtkt~<=-xsN{u6yzDr z;2>F;=D2hdq_`f&xby)aI^-d9d~aazbbY#MCA+Q?LQeerVTa5jv`Fme1b2bypcX?n ze2&|}HZnw13i6>56nS=sywp?V+1S%)giWQ3fJjd_V-?8AH2Z{<*7))#b?ih8b<5J7 zN>kNow%;7#azyA6XmW*epjuaG-dQS1_!w6YLE7N~YiQtjX5$dML4z2T&&o8Y0X`SR zV4PS=_>`8=y$9^!aPU3Fz`&f{ZUC)L}`V(9#KG&noZ1M-d2xiKXn z#wa|sfs!(?9SMEJLpg~tgMGdVVV?SsHfwGbu$aor+*$VdV(Hd+lOhsXZMehV2-6P#}9u#9(HtYY|NK2|4uY9BikoFJVl;}o+` zYVTFd2}P;?WMvlZ!YSlARp-j~W*RReocb+TiksH1fCSNLo}aGAA_1>`I71Ie;b7#M zry!Jf&eOw;ZFv5vU7a%4Djj~`ro=2AezCGHpkuMkIyGvQ17@EpOCjgPjs#oK{Pz6H za1SE}=Ein|Pda0zC>eM-uOsHMQH$+daV*H!?r5KJHG>)buu`p5ly&M@$4bQcUL0DQ ztTF`V`SWR5b&O6HRwnbSQaU zTwPy#D*nH(uQwzERv55&(R}X@UaG(Cn2)mq?3Y%o%3o;sU}^b_j;gNyk|F9aDH!I8 zGK!@B*r8W%Z{5&XQ&U?9v>(R~R2@~UJL=CL&K)yuVg(S`r+3uQV$m`nw*k)M`{=jED z25stB%byBW;_Fv8G~&-bo(`a4{c8E+nH(D$X=?(&9bOIo=-dr(0|BO$%38mw>cHfGar0%s_LTX0`=!fRWpcRw4{Eq0v6QbZ>Xwj@%$Bw7So_3 zFb%Nx8f3)#yyIDGmucE|diyKG9u%+|O*_F#tg;7Ljg73;*^c4!o4%4X+YVT%kNACd zA8VJ-w5<#~Az)S=@|%jodV4LT1-9Bbfpoi@v(N4|&(4`(JJakOYt?wW*EkR-pfAu< zP@N5?Kq@Mq+fKl=GuX*SfGu_+Ks)f3pyLCx?4*F{x9mOv>u2V8+e&Az>@<-rte5eL zU{YWLwCZJjzg;V5JQ$J!*85NizvyeHLQEGaC)j47b7Ppq%MaP{n{9iuGYhzMJ7`@v z-ZrgX`F4E3TJi|6Y>E2vd|ihMJ#VMMpiD4q+atz9tQnYK+uiM<0qg5^M?gd^)s7!v z4{fNj<4cN*m2s-bz!6X z?H)AY06W37vxqQ3+i7>5V4qEB8s9cj-^)z9h~qgIzywq={5q-9u-(ZPm};lqZ}$aL z?+JERvEBE4yHmcMJHehh&aNo72R7Ohs_d!b?QtcFf2=)jl0CH8o`SF#Z|6dU6}VK9 zOx3$5xtQX|^Q}s0ZLKu1-^bUg0^_yTBnC7~qLpUa=74Zm>t$W~h@JZBcWWlvN9~G< z_P}DT6(Ft3w-cr+=cBj4WQM+-Fu_hb-%h|hc$N(r{$6~T zn6Be7tRz#kX*K?Hb#_zJz`tx4QtY>E>`5W>0#1O9oMJQUIDEg2v0aC`gV`3s9L>N; zK>WaGhC#Be@2@Rp=!dKou`B`WgwOQb*0#0dH^Rk)WMW}WBTb@9M*>5Od-LTeyni)G!HDUmU z?HD6*=9)?sF9!qis_GM%tLgw_aX`&K|k(&ti!VjxRZu=mN(j+EVq#z#v~_SA6XBQ zZ`*82+cPEUPad-aVJ=N*K=6u)={HM!&Mq~kVOL{ncc0s5SS{tlPGJB^=Ae& zRunPk1UumpJJY(n7^n$$XLvoM7S)STCD#NUDO)|{=Y0T)QbKyR5#x6=csPi>AeW@;b942id@8ZparikV`q*&CfZ5CpWIY31i* zfeBbOb&_6~d*TB>`c$Mp{hvyYxAw0^xO6I3jTcB*^u1l;@xH)Y?BqNXS<3prr17;I znYWn#Z7cr1jhH;l6}E#VLq<4Dk8p}T5Y|g-uwAE)K5+&(XWSOs%n=2npi<0e>1#dZ;u?_|X@PftK5=T=BXt*@t^8Jy_Wzhbhe zST4cZ;v3HyZGE-24yFtMhD>N8F;6FK<1(VwRisC_+y~KBb|*EF;{!XX9C@(oNw6MW zM~9?YPh&#I2cDC*@d1Q2g`m^8}&8t+9+F4vS94ES6G{P=vv-SY7^)~;skIjzeZ?d*VggxICGGe0$=>P!$D zfgImV^6hBd)#Nb1Hor>J7`W~iuE7E8km(@)y?Bf*Gi;DAWim@sC`i&iT6DN3Y0(DQx+gp)-RETA)zyfIp*MnzM zhE8<%>pXYCW(iAD^c1%;Hp03LNV%Pm68i?3KYv)mn}sy%et(snv_X>;tC~TddNXOo zH!JBGnKHc&t?`CHBO-bG)#N<1=1?&a0b(x5($mIDXwE#nib<4ts_)|iH$Jy%v+i@2 z9@5RSe!KyTePeZs-FR9*fcentm+OjUMVgKvyT+86vf=-<_cg$k9o3nwk!L&xW5#9z zcKDM$29JS}=ilQ^*o-uiMoLD~v)+?tjK{uydhbel%=`2Ekwzx=OfXcuKzVI~!4xE# zI0UB*p@yGbh!Y9|AvmxQ@5UzH{Fq6+62vzt+wWd8F;s1(*0-eB zea}68`t<43r%(Ufz9%*wajq{7cdTH#+#SMRT!+Yo@Tj^-|GtfP-wu)EKt-40K8ZnD zf9bcF>-+!bE#zBW*#GYJr~oktPu;@uWakro z3!Wp*Z=k*Zj}865f1+>0#@|~1stxcDHvTd-4aDJG}PqU?%#mq8@WY|F>?vYXdo}>xn@BJ@|yy zMjAV8?zbd1P}w*2e;w7e89mVVP@GGss@I*5xvSi2&}kJ*;X)Tj_5|H}w;h&unqZ-V zFGVyk;n8jv7ej*^M#!yB@^nUUFzk$A62cq~=W|2#N^K;h35XVfLrl|zEpvEuI2Yt* zM)RYEU}SV`X!cOSbeaK9T`zWUY;A6J^mr*KVDe_P)oQfNv0CxCY2O@FIyj55Q)~e* z$mOSI%u=x(6p=%*Q)$!0hp_O{2L+o1x8lRXd z1i6U=h1r==LzTS})PPzx&0?!lp<)NsO0Cj?K7oNeso#QOZjo&ll?|cJ7uzUM5HuDR zpc-Avh)dsQ36;ZYrx-Mg)v(hEX?8NebS(>Yr3IC2u_iz}W|?n!RXY1V030?dM3yX%@igI6Vp@MgXy`^nXyCDharAQ<#;Dp1~JU!QX^<^n_@9c z&K?P{O({ucYWC0}qBS%*S{R+7qNu{#W>B_`E~rCmDP_JeRG7^Nv-#1PU}$)HroehO z**y-q(EK4PlBWCYG$HBMLbcIAE2=D4P(!#^Efu}R%w{uKsgyfQ+Mse)KofOLTGmUU znVcRO4TcZS3_&+KRlL?MO&zHc$|dSs+5*WjT&k`gt`pVMD6tan?qQ!8WcPX4NQm1Pjulq*m$w6b=!0$C^Poa|$zzR*CUKsm`?BU5VcFwtRcK5S7#fHe$T zP0Iip8reWnfP`(HI50hBa5{oCYO0+hV)7s}mJ8SN{9TivO0T0wPSb=Rr z9iJ{t3r9D@P*ggr#1D5F#7}N@uGkWpOWoxmf3&j$jmEJG7(+$Q92_1R?k+5VGSr~e z3dR~O*jAET5w$=lD2t*5uraXK#nLhEIfSa{DI@1vjYU|l_BgU2HNeVD)v(n@O_dBj zZ8~sZ$JJ-?b<=@uwNAGlzHu?EL)0bQ7F(sIH)8o^+uq#++ZG45P461mwy@GFHkT2? zYMI4Km8bWuzM@3PA6<*r&JPXc3nI00rL)BKNN8bw5lv5&fVwQJ2)1#|z`9jx(t8H9 zu(V?@%v-YgP0tpB>9JsPbaHy;I>Tz&TD4XOVoY}2Q`ECSL&#i0^3*j;Rn0^0K^;9n z+cdhJX18Ozky5waY19Hbgg%*T%mCRwqJw6FehGavX(-hoj1uLZE23k8Z7wYVgC9tb zs9jpI+i6(c=BJcKJ3ZTUu_A%K(soej3g%a6t&OBCeg-%CT9eD%t+y+S^{_mE>{=^Pg&;>9@kVUJ=4a~L}vIJ!IAz@Hnk;=QCqS# zVJfAPv|JEhs9+%A!C0$N%kyf_P`#X|CrcGn+9Jvr@KRt6Wdxg4f)Tg|%(E6p zsv>S!880kJ^MnN3PI}0`RE2qn_eA;Gd~S4VWOT&Z2;0{Wp)0I5TJ0uWDJqd#hhUf# zkK7em_FINvS~*_P17SHd$-QpJgk@%~kY^^{T_&g4A&ZR;99FbETM> zN2N%kE5g-Xfj8DFuEGp8+gKPh;z!tS))T$90(A6EbW-$PqWJ}Kq2U{neZ*RC*bbUu zE8uR?EW?;KT4dl{8@Dd-VRmA;c9EJK8b+{v2la_$AYq2d&9RL>K(&*f(rpG4eP!JN^ch&^RHdfK}iFjWGQ-EkN= zu~h6k08|ebF&bMA@eUP@-6o+sa4y@Nv(zT5n)O&<)@W$RBeVq(KDBbPblM%bK_l#t z)zvYKN69fT?P{X~=bg0=tif=#$rNpZA+s<+l~RM5;^aj4~%^?SnV#yEz|5& zem0kbi#$3KjE%x=#_*y>h6hrF49N?cnBs9COer@uxDh2=MD$$;;0JcX2_5IK(PAUe zHW<6Dpu4wC3c6LR!p$x&w#l53qpsDX-B{FFICA7<28}w#knv`g=*nx{A5)!EvnBmQ zH<7TWd6HX9_dBg_sIES%kdDn~h7M0m9i$?Yvy~@T3O!rR8W*yi+$OtZS&+d2S26Hz zNwcug04^AwaGT6SfYKmco1y9&hYL{+Avx9hcRRef3k8f?#RU1x_L&&b<965?kPpmJ5QP*v-Sz<* zxW+_C?q@4R%Ve1^p_Z^02ZCx~m}J`!58MZwp8-Q7o+f-o^v8; zFlwOLXzkXTK@GtNOfe6Mxxr&_Qe?3oq!Bc?*Ey?NZ2DLs*)Oa~C*OqYWG&u-d@i8s zQ6tf&=7t=kt?)?7HfbgWq4QvhYm{7lC=eBb%FR{)9I$sql>~#&<7C%pgg2fEC~;qa zA#1k-tzbimj-OG*2#wL8E~X+AQ*%RyCPwU#8qJ+%L{NJ&^+8i3kuf1}=m0$j8+O}I zTL-~1WErK_A9ESRZ{~4jFw{=ET|}kTpjLve(spcCvrEO&61o-Imc_$unNJ{#Lig77 zAlcBwO>ziG-Iwz)+oY&yp=gyfbfp=ez;vDGL5&f^m1E$z5|GcxnvNux0>IdcYXeD! zgu^+S_OT3F?V1^diJWpH$stlGHkD|Nn5yB*W3{omtFs+4nTBm~gc9?S<4z@H6FDw4 zOGCwi05CH_g|5_Z?p9hnpH`_OPjqIBb@cneLZjR2EYaAZUWXNdp(O{YUB@^{$4*pi zVym=_L4MWROd8F^ba!?xm>kOg3iP19I8bhM=gHL(uN`ApJB0*4(3#jg>=`;$O!L`J zXdh%YM3aE(5@3c2E;mdE3bqm!k5$R#wx!Cg(yVEa$9xP-tW^;tXKQHvE@G4P%@>%R zBBX}M9Ro;HVYPv9Qy>xNtWsFVPKMy{!Nhpy#TqK7oWf45khO6gkaK)&4LFa(jw8j? z#7gH{Hn#z5S9x-xi)lYA3v_+Vq~$DXYvhIS11So}t;Y#-g~>M5Ae$fRMTlP-;fLd7 zS?LiuPu31eccycN^bkHZx;)aMlAT^)HOF)nDjV~N+)_y4(d|t&Y@^h9Pj+=+$}m~d z4yy}PmBcA?FpS0u1uNEczSEnPrd~d`I&1gj#fD&}UdEf4?8tZ{6ef)CIfGDPw8#f)G69gHZ?dgnJ}x|^@*iqF|)zx;Ju~*!`|{9(k5GX+^8{O ziC)OicGI9_CxAHtx?T(zX*5LMw%Sy5&a;!FQw5Y<1`uq0;hx$07wZH6NG6Sv_FxE} zxeoK}%sfqYuM{yhbq0E=jF}#CNMw0{!2!e~kn!sPvsl{!(yHea5$ zry*C|l_0Mg9v5Z>1I&T6!$P-N4TC&N$Ezgh_Dfad0dlb9Y}<8i)~*M5uC?-rqCmd3 z&*V9wT|413(w1;J{K3JmGjSP6GNZD{*Sce(&u^5m; zm|VfuX9B7(-^9#z+}$mV9>H82^^T&LHn0vztb-b{13#zdc$8@hpc;C}99U6n$H@ zTdSK@ZVCy~u3tv2RA2)`>6lk&b&G9ceCmaLP1LX|Sv0eaZVx>y#<*?U`NL%k_Uzqb zWX=O0YPFLZJV&@-XKFD-!{7rg0cMV-*QG6@*R!4-MiF-MgO(9<4b--69L4!I$|J*V z8uViFfkjO|T(r8v4&-D76R)vmwNy1||$VzYq<^RvD=(`m{e3LR5ZCsy?eAPhA%6K%GHFvci13>~Hc zkP>U3kg&E`>jS#gO*{0Nq8FW;J@;f$|!CNI>V9@Au8F>D^yOh?bcDyCeuzhnUmo`y6PF z4*H`@$@ZB!3rPD_j_!2na~h3E=9MI!SV32x$!qjW4wTbqlyTmoN5A&1tN$oz?r~|; za`;nus^r$0?Q0Pw8^g;)=Ip5XDUJE3O%}Gnae;U1doMcvl&-FXs9B9ZDimxrS~UMx zlmDtqUeM?_9B5Xfaf*eW(kksM@p3R-+a&BWIgS3I109`tvBhdi*k_JDD$$n+;{aJ4 z|Mz^nrcKwYUD`P%qcosaN=CU((KM=Xdnw6#gmk~T`=8%(p3sl-DQG?)lShpAHer~K zyriqo6h0!+uSm#v_No8-zeOldJK^LsN@sD>1&!8>S6rEU)R!>zaU_SlvJ%N5HRUCe z*QZ>bH>w0*?aFl{<>6nik`$kHDUWK(!!BiNRqmD)k$`W|l*)CVxxvrR-ajsBzvXhx z?UvleT&}sQL~n~gJ~_OoX72VFq1NnklGeiUPTO-%Yx&SBejqA_MkA@@eO{mtelh6& zgHp;(1uTN9{wxm4A;FAhHO}zgs@o)&ZDD$9G>K=xv@!c+u-zg!o zefZWjy}Q>XPVFO3lk{9&t*{5dD498U`Q-;Q$D=tq8H&d)h9QT7w} zo9@MHe%>3XNsix%0-F&;H}-CDt(`+3H@i!r~fSRh_#bK@$C{q;u?L3_{EhjUi(aw-|3PUH2NV2 zn$>8WVs9s{J>FL(p^^MwVESLX-)6U_uyf>DpSf0}*ErDJ2PCTbrF5@&=a~8~&QlAq zQIe50)%X>TYEGjw4wR=ag$jMVj4s&CGq;bGjGo3n9MRLL7M1Dgjj~VlB2I0rw?2-F%)ct( zI{S?yIkiq*K=JCJwB{>ibe@ey3{u)!T%P4w6NDWf;aT4P)~OuJ%P((+7Y}_ z^LQizX&%4e^0=`#j~>(9XV#?Zv}vV`+f?Hlzj zFHoe`XqZ6My9Xmgjs9H%(PruYD&y-Nmj#XPb)Z>|#wlj?w#K|i65i_w3^$&r-N1L+U|;fgVyxXt?-Z}cI9rxZi5!1V2oPl=N&kBJArqe@yO3 zh%Wf_i8Z~e2{dIE0w2hghd*>kJ!;!$ek2bs6xQJ7zUzd*T#$-(*R!ChtWx>1WIrz% z{-u-2tVaJtMgT~y(Ju?gDyQDvCcflZWb=s2rl8R;x@__qRl<}_VNLI%YBCk>UL?>P7 z2v4l(&D8?5`mcARQEH9elt9$G)d*3eZ%H8P-P;`EtVZ9SK-9ZGc8Gb6eldY)3z7A! zBKa35l7fpm%GdTuRJpUwQty;OtUGE{xwD9R_Z~;FpwT$5yQMi zbF&)#u>;L%^r)MLr5zIyU-8((lI-tX@`6Uc<3O_-jZ^Hc7TfZ^A<2|62u-8P82ST^ z#wn)p_!23@%iQE~&-{li&ZHn*8zE}+O%9aTsAh}l^td!A-nZ@*f`5gC>2;ir*DIBX z{&&RL?RSl8R-@Anl-KAx1!QyAyWfuxHTv-cVw7DnHXvA+I|4b4h7L5hB+)w}kmmfc z2$ZC(cglFdA?7q%cA&iG@aqvs3B<$eG5#{9i;xBNSnMEW&K}Q z=)OKJ*N0t^d)%2zrE`0YgjYzY{=mZumo^xeD8;wSbL}L568=8H-!Gwd(3;+-f0MKr z4a;(`iue0=<_j4*GJ@PveS zOQ?fW9f|tsRW$;s;--Xejnp=gF-w`ZKaV{;P!k772BlafjURmQbev@0I)C zl+d4p^y%wFU=}@{N7T?yf39r(c(H_=C48-f{{9j_{bt!tbCGP9x>)wLoR-kXzfAD2 zkWe=Sy;tskM?&4M9P{00d<;_1bvPXS%$DR65*)!dU7mzrD)5{K$7f_P8FP`@zi9DgxXPar z?lUhk`@A)dHw&G+JUYuv=X|r>!@mdcH2!~+@h>!|LPT)s49O=DC;t7<<9!)$e5wLx zrxSLB|2K&DnG4KKlJ8c2YRpp%zsTgIT=-rdUq8Sv(SLZ4y}#cEW*rJn^v@J6U`gOF z7Wm0|3pgq8mkazRfe#4$Qi0>kWqh3yI8DJ2{Zj(JN#Fpd%4d@CUuceu3t}utljrro zUx$yQy=!j_5z!*kxxnoA>ZQ)`%gh}fd>_cDBwc`{Il z4L=I_I@;PYkc87DPJ1jgr$A(`5Jk41A72_vq(A`rR@O9|X@qve)>*oL;=z-#^ zFMy}zJDdSO%=Dq3+bpqu@Ilu?2L4IG_dj4yAF@y5ljZ=@_#w|E4NmhsX>=aR!2ebT z{D&EEd{sP^{zZVN@w0{T&ou*ATDgpieD-AEk7m%nUg-GWnXYBv-y!$|VgO!mvo~uQ z__QH0O>UphfYa!Y^!B8*FL4me6B+nV1D+gUW<@W(kD_0*p z_%!%SGvHeRPm|le4ES^gyp{ofJHyX4{`aOokb(c708iup3mN#|$iROp10PK>mHy9V zz+VgafGT$^+z&XlYa@2=)$(jEgH9dr%VOy@`X88%-bLa28Gdfh=O;g&f&aM-_#;B+ zhvj?p>1g`r`bHDy>(`i3Leaqm>89#27UkMBQtXkz$4uyb(d;2utx^6spPP7XGr zH~NE#!X%2U+5o;t7Yg*&AKuKHbSJ;@>&J3}5RTS}o$BSC8O8-+PfXdj z`uGeQevfoS4j=VSejwE32{b^!X)TF^7A?q9l=D%%*DZ+*zcFc1V<)L3Uj($LL{J9w z2B@XQ-1eL<$CZfSFaYa(_l+9rb}i zp*^RZcmkO(!`{bE1*5F2(D)#i6fyHTq?V&v_ju}?=JXVj*7t#(7?QfD?@1FjwU($R z^|(2(hgYTLd|5dd(CGk~y6E*`WTz(;c=TYfvQEKJ8|RKoXM>n(4wE&dtgF5AkCO_5 z(s4TU*Pa=XV41i}C|RQ4S#)Ou5FRQ*8XVun&gx=|Of`fz$feTlIR<91y;{S2+Xy=? z8!lk@fkily8mCm01qd)Z#ag8VesEkK{S0z$ zmhwDKF&l)7LPxk-j=5xmbihhw9w$}caT#ZMEP`~gPDdchE!$juG(V5?OZ5pI*{N~J zO`|wlR--~m{i>fbr0Jh$o_VH$;W=M_BhIjf9}@Vb5-OgCvw;6Nmj0y7SZcUk(rrOV zLv`m53cQRELodwb*h^(o@m=^v3}s zzTm#wYakio3-yVM@`_(=+{Dul4A`d{(s)09=~zR<+wd@+Uguji{HQlr(sWAmZC-kv zpVLq#*cF{+(y@vl8Xf$cB>2*GO-&v;r0@4!ynqKEY_e=V5 zJd0lg@f*Y+!+$*e9Wu{($FxN};^8ab8vd=9Ugt@ll=Sqe_xPphH2eoIz0Oacxz?sS zBJD?M3}{5ce?&;MT=^I6gMEi>xYY*k*Vo_g;t8?1-C@{>rXTd+S{x1k1WuWCk@V}lwP-*6>od|n_z}zSUCuDsdq4d( z8R>ud6BhsLp8fFCk4k#KoELw|rhnI^Hq>8DuVGHo>vIi1M2dy$-@V3$`m5>mp4Jt7 z7(ILZg#z{T&&Q>EwLMCc!ZTE{xK6%+14Hv_O5Ou1 z&cFwGGk|~p+6Mfze1DX|=VclAf00q%lNoyZ_ZjpT!C;y^&!7Nl@DspKEzE-&C)ZRWavf#z@0 z_6vMk@cnh>3g?S`3f_A1G0E3opX?KSe?JZ#c|-a7`&Pa!`8I{mcZsat#Cnc=y>&%8 zMu_P6`(r2iD6T)Yf!Qr|{PplX!l%E^eB}A-c?mo(f#)Ug zyab+?z`qd*NLTm&bwFzXbbU(Zo6x=Ub=13G@$U7_6~%wO_xu;+{(PZl25dyvWpth9 z5_zuc7rO4WQQ$u>p{`H7LhkkX4}SbigFrg}2RDZ=olg@sjLz@Lw5ZYfHJSsYOXv0A z_VA_a32^WD()Bdm?=I7W=4J9+*WDDZ>v+niuII@Mq%J>NLnIQqZb)mAbgy##j@;|I zW2g-1&?zJn^c^?`OM@bWqB zg6a9LND?>N&=T9<5$(r_eJ~)IF1ZULmKM7_bZ-ci%HIxVzwOogQB{YVx?3fgcU)?T zoma9wMZ}j(RObyg>7N#(%)xihW*Ds&q3df#vedk{$ySZ-kfQXHcBhlw9hJHX2x+_> zK54r~1PfIY+uLW0sM-xbCPQxnqketV=IXvW<%uG`doj*_9FDy^-d8BO z!o2-xz;c_xcdbCLj;U4ceyTsIOMY5F6s`-mV4O4@l`nKC&gw?Ja|N zlTT1Nv8{qVyQea?n5BMFjW#gJr!kZczM35Hz9#uh^kBO&cr`wA$={5wb&u2iF1;_) zms$z3lOXtZ41I)*?zhu@iDG+=?ux~BL5;D1}0f>13 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/PIL/_webp.pyi b/myenv/lib/python3.10/site-packages/PIL/_webp.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/_webp.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/myenv/lib/python3.10/site-packages/PIL/features.py b/myenv/lib/python3.10/site-packages/PIL/features.py new file mode 100644 index 0000000..573f1d4 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/features.py @@ -0,0 +1,361 @@ +from __future__ import annotations + +import collections +import os +import sys +import warnings +from typing import IO + +import PIL + +from . import Image +from ._deprecate import deprecate + +modules = { + "pil": ("PIL._imaging", "PILLOW_VERSION"), + "tkinter": ("PIL._tkinter_finder", "tk_version"), + "freetype2": ("PIL._imagingft", "freetype2_version"), + "littlecms2": ("PIL._imagingcms", "littlecms_version"), + "webp": ("PIL._webp", "webpdecoder_version"), + "avif": ("PIL._avif", "libavif_version"), +} + + +def check_module(feature: str) -> bool: + """ + Checks if a module is available. + + :param feature: The module to check for. + :returns: ``True`` if available, ``False`` otherwise. + :raises ValueError: If the module is not defined in this version of Pillow. + """ + if feature not in modules: + msg = f"Unknown module {feature}" + raise ValueError(msg) + + module, ver = modules[feature] + + try: + __import__(module) + return True + except ModuleNotFoundError: + return False + except ImportError as ex: + warnings.warn(str(ex)) + return False + + +def version_module(feature: str) -> str | None: + """ + :param feature: The module to check for. + :returns: + The loaded version number as a string, or ``None`` if unknown or not available. + :raises ValueError: If the module is not defined in this version of Pillow. + """ + if not check_module(feature): + return None + + module, ver = modules[feature] + + return getattr(__import__(module, fromlist=[ver]), ver) + + +def get_supported_modules() -> list[str]: + """ + :returns: A list of all supported modules. + """ + return [f for f in modules if check_module(f)] + + +codecs = { + "jpg": ("jpeg", "jpeglib"), + "jpg_2000": ("jpeg2k", "jp2klib"), + "zlib": ("zip", "zlib"), + "libtiff": ("libtiff", "libtiff"), +} + + +def check_codec(feature: str) -> bool: + """ + Checks if a codec is available. + + :param feature: The codec to check for. + :returns: ``True`` if available, ``False`` otherwise. + :raises ValueError: If the codec is not defined in this version of Pillow. + """ + if feature not in codecs: + msg = f"Unknown codec {feature}" + raise ValueError(msg) + + codec, lib = codecs[feature] + + return f"{codec}_encoder" in dir(Image.core) + + +def version_codec(feature: str) -> str | None: + """ + :param feature: The codec to check for. + :returns: + The version number as a string, or ``None`` if not available. + Checked at compile time for ``jpg``, run-time otherwise. + :raises ValueError: If the codec is not defined in this version of Pillow. + """ + if not check_codec(feature): + return None + + codec, lib = codecs[feature] + + version = getattr(Image.core, f"{lib}_version") + + if feature == "libtiff": + return version.split("\n")[0].split("Version ")[1] + + return version + + +def get_supported_codecs() -> list[str]: + """ + :returns: A list of all supported codecs. + """ + return [f for f in codecs if check_codec(f)] + + +features: dict[str, tuple[str, str | bool, str | None]] = { + "webp_anim": ("PIL._webp", True, None), + "webp_mux": ("PIL._webp", True, None), + "transp_webp": ("PIL._webp", True, None), + "raqm": ("PIL._imagingft", "HAVE_RAQM", "raqm_version"), + "fribidi": ("PIL._imagingft", "HAVE_FRIBIDI", "fribidi_version"), + "harfbuzz": ("PIL._imagingft", "HAVE_HARFBUZZ", "harfbuzz_version"), + "libjpeg_turbo": ("PIL._imaging", "HAVE_LIBJPEGTURBO", "libjpeg_turbo_version"), + "mozjpeg": ("PIL._imaging", "HAVE_MOZJPEG", "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), +} + + +def check_feature(feature: str) -> bool | None: + """ + Checks if a feature is available. + + :param feature: The feature to check for. + :returns: ``True`` if available, ``False`` if unavailable, ``None`` if unknown. + :raises ValueError: If the feature is not defined in this version of Pillow. + """ + if feature not in features: + msg = f"Unknown feature {feature}" + raise ValueError(msg) + + module, flag, ver = features[feature] + + if isinstance(flag, bool): + deprecate(f'check_feature("{feature}")', 12) + try: + imported_module = __import__(module, fromlist=["PIL"]) + if isinstance(flag, bool): + return flag + return getattr(imported_module, flag) + except ModuleNotFoundError: + return None + except ImportError as ex: + warnings.warn(str(ex)) + return None + + +def version_feature(feature: str) -> str | None: + """ + :param feature: The feature to check for. + :returns: The version number as a string, or ``None`` if not available. + :raises ValueError: If the feature is not defined in this version of Pillow. + """ + if not check_feature(feature): + return None + + module, flag, ver = features[feature] + + if ver is None: + return None + + return getattr(__import__(module, fromlist=[ver]), ver) + + +def get_supported_features() -> list[str]: + """ + :returns: A list of all supported features. + """ + supported_features = [] + for f, (module, flag, _) in features.items(): + if flag is True: + for feature, (feature_module, _) in modules.items(): + if feature_module == module: + if check_module(feature): + supported_features.append(f) + break + elif check_feature(f): + supported_features.append(f) + return supported_features + + +def check(feature: str) -> bool | None: + """ + :param feature: A module, codec, or feature name. + :returns: + ``True`` if the module, codec, or feature is available, + ``False`` or ``None`` otherwise. + """ + + if feature in modules: + return check_module(feature) + if feature in codecs: + return check_codec(feature) + if feature in features: + return check_feature(feature) + warnings.warn(f"Unknown feature '{feature}'.", stacklevel=2) + return False + + +def version(feature: str) -> str | None: + """ + :param feature: + The module, codec, or feature to check for. + :returns: + The version number as a string, or ``None`` if unknown or not available. + """ + if feature in modules: + return version_module(feature) + if feature in codecs: + return version_codec(feature) + if feature in features: + return version_feature(feature) + return None + + +def get_supported() -> list[str]: + """ + :returns: A list of all supported modules, features, and codecs. + """ + + ret = get_supported_modules() + ret.extend(get_supported_features()) + ret.extend(get_supported_codecs()) + return ret + + +def pilinfo(out: IO[str] | None = None, supported_formats: bool = True) -> None: + """ + Prints information about this installation of Pillow. + This function can be called with ``python3 -m PIL``. + It can also be called with ``python3 -m PIL.report`` or ``python3 -m PIL --report`` + to have "supported_formats" set to ``False``, omitting the list of all supported + image file formats. + + :param out: + The output stream to print to. Defaults to ``sys.stdout`` if ``None``. + :param supported_formats: + If ``True``, a list of all supported image file formats will be printed. + """ + + if out is None: + out = sys.stdout + + Image.init() + + print("-" * 68, file=out) + print(f"Pillow {PIL.__version__}", file=out) + py_version_lines = sys.version.splitlines() + print(f"Python {py_version_lines[0].strip()}", file=out) + for py_version in py_version_lines[1:]: + print(f" {py_version.strip()}", file=out) + print("-" * 68, file=out) + print(f"Python executable is {sys.executable or 'unknown'}", file=out) + if sys.prefix != sys.base_prefix: + print(f"Environment Python files loaded from {sys.prefix}", file=out) + print(f"System Python files loaded from {sys.base_prefix}", file=out) + print("-" * 68, file=out) + print( + f"Python Pillow modules loaded from {os.path.dirname(Image.__file__)}", + file=out, + ) + print( + f"Binary Pillow modules loaded from {os.path.dirname(Image.core.__file__)}", + file=out, + ) + print("-" * 68, file=out) + + for name, feature in [ + ("pil", "PIL CORE"), + ("tkinter", "TKINTER"), + ("freetype2", "FREETYPE2"), + ("littlecms2", "LITTLECMS2"), + ("webp", "WEBP"), + ("avif", "AVIF"), + ("jpg", "JPEG"), + ("jpg_2000", "OPENJPEG (JPEG2000)"), + ("zlib", "ZLIB (PNG/ZIP)"), + ("libtiff", "LIBTIFF"), + ("raqm", "RAQM (Bidirectional Text)"), + ("libimagequant", "LIBIMAGEQUANT (Quantization method)"), + ("xcb", "XCB (X protocol)"), + ]: + if check(name): + v: str | None = None + if name == "jpg": + libjpeg_turbo_version = version_feature("libjpeg_turbo") + if libjpeg_turbo_version is not None: + v = "mozjpeg" if check_feature("mozjpeg") else "libjpeg-turbo" + v += " " + libjpeg_turbo_version + if v is None: + v = version(name) + if v is not None: + version_static = name in ("pil", "jpg") + if name == "littlecms2": + # 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 == "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: + v += f", {f} {v2}" + print("---", feature, "support ok,", t, v, file=out) + else: + print("---", feature, "support ok", file=out) + else: + print("***", feature, "support not installed", file=out) + print("-" * 68, file=out) + + if supported_formats: + extensions = collections.defaultdict(list) + for ext, i in Image.EXTENSION.items(): + extensions[i].append(ext) + + for i in sorted(Image.ID): + line = f"{i}" + if i in Image.MIME: + line = f"{line} {Image.MIME[i]}" + print(line, file=out) + + if i in extensions: + print( + "Extensions: {}".format(", ".join(sorted(extensions[i]))), file=out + ) + + features = [] + if i in Image.OPEN: + features.append("open") + if i in Image.SAVE: + features.append("save") + if i in Image.SAVE_ALL: + features.append("save_all") + if i in Image.DECODERS: + features.append("decode") + if i in Image.ENCODERS: + features.append("encode") + + print("Features: {}".format(", ".join(features)), file=out) + print("-" * 68, file=out) diff --git a/myenv/lib/python3.10/site-packages/PIL/py.typed b/myenv/lib/python3.10/site-packages/PIL/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/myenv/lib/python3.10/site-packages/PIL/report.py b/myenv/lib/python3.10/site-packages/PIL/report.py new file mode 100644 index 0000000..d2815e8 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PIL/report.py @@ -0,0 +1,5 @@ +from __future__ import annotations + +from .features import pilinfo + +pilinfo(supported_formats=False) diff --git a/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/PKG-INFO b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/PKG-INFO new file mode 100644 index 0000000..c957b47 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/PKG-INFO @@ -0,0 +1,95 @@ +Metadata-Version: 2.1 +Name: PyGetWindow +Version: 0.0.9 +Summary: A simple, cross-platform module for obtaining GUI information on application's windows. +Home-page: https://github.com/asweigart/pygetwindow +Author: Al Sweigart +Author-email: al@inventwithpython.com +License: BSD +Keywords: gui window geometry resize minimize maximize close title +Classifier: Development Status :: 4 - Beta +Classifier: Environment :: Win32 (MS Windows) +Classifier: Environment :: X11 Applications +Classifier: Environment :: MacOS X +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Description-Content-Type: text/markdown + +PyGetWindow +=========== + +A simple, cross-platform module for obtaining GUI information on and controlling application's windows. + + +Still under development. Currently only the Windows platform is implemented. If you want to help contribute, please contact al@inventwithpython.com! + + +Install +------- + + pip install pygetwindow + + +Examples +-------- + +(For this example, I'm using Windows and opened the Notepad application, which has a title of "Untitled - Notepad". Most of the effects of these functions can't be seen in text.) + +PyGetWindow has functions for obtaining ``Window`` objects from a place on the screen, from the window title, or just getting all windows. (``hWnd`` is specific to the Windows platform.) + + >>> import pygetwindow as gw + >>> gw.getAllTitles() + ('', 'C:\\WINDOWS\\system32\\cmd.exe - pipenv shell - python', 'C:\\github\\PyGetWindow\\README.md • - Sublime Text', "asweigart/PyGetWindow: A simple, cross-platform module for obtaining GUI information on application's windows. - Google Chrome", 'Untitled - Notepad', 'C:\\Users\\Al\\Desktop\\xlibkey.py • - Sublime Text', 'https://tronche.com/gui/x/xlib/ - Google Chrome', 'Xlib Programming Manual: XGetWindowAttributes - Google Chrome', 'Generic Ubuntu Box [Running] - Oracle VM VirtualBox', 'Oracle VM VirtualBox Manager', 'Microsoft Edge', 'Microsoft Edge', 'Microsoft Edge', '', 'Microsoft Edge', 'Settings', 'Settings', 'Microsoft Store', 'Microsoft Store', '', '', 'Backup and Sync', 'Google Hangouts - asweigart@gmail.com', 'Downloads', '', '', 'Program Manager') + >>> gw.getAllWindows() + (Win32Window(hWnd=131318), Win32Window(hWnd=1050492), Win32Window(hWnd=67206), Win32Window(hWnd=66754), Win32Window(hWnd=264354), Win32Window(hWnd=329210), Win32Window(hWnd=1114374), Win32Window(hWnd=852550), Win32Window(hWnd=328358), Win32Window(hWnd=66998), Win32Window(hWnd=132508), Win32Window(hWnd=66964), Win32Window(hWnd=66882), Win32Window(hWnd=197282), Win32Window(hWnd=393880), Win32Window(hWnd=66810), Win32Window(hWnd=328466), Win32Window(hWnd=132332), Win32Window(hWnd=262904), Win32Window(hWnd=65962), Win32Window(hWnd=65956), Win32Window(hWnd=197522), Win32Window(hWnd=131944), Win32Window(hWnd=329334), Win32Window(hWnd=395034), Win32Window(hWnd=132928), Win32Window(hWnd=65882)) + >>> gw.getWindowsWithTitle('Untitled') + (Win32Window(hWnd=264354),) + >>> gw.getActiveWindow() + Win32Window(hWnd=1050492) + >>> gw.getActiveWindow().title + 'C:\\WINDOWS\\system32\\cmd.exe - pipenv shell - python' + >>> gw.getWindowsAt(10, 10) + (Win32Window(hWnd=67206), Win32Window(hWnd=66754), Win32Window(hWnd=329210), Win32Window(hWnd=1114374), Win32Window(hWnd=852550), Win32Window(hWnd=132508), Win32Window(hWnd=66964), Win32Window(hWnd=66882), Win32Window(hWnd=197282), Win32Window(hWnd=393880), Win32Window(hWnd=66810), Win32Window(hWnd=328466), Win32Window(hWnd=395034), Win32Window(hWnd=132928), Win32Window(hWnd=65882)) + + +``Window`` objects can be minimized/maximized/restored/activated/resized/moved/closed and also have attributes for their current position, size, and state. + + >>> notepadWindow = gw.getWindowsWithTitle('Untitled')[0] + >>> notepadWindow.isMaximized + False + >>> notepadWindow.maximize() + >>> notepadWindow.isMaximized + True + >>> notepadWindow.restore() + >>> notepadWindow.minimize() + >>> notepadWindow.restore() + >>> notepadWindow.activate() + >>> notepadWindow.resize(10, 10) # increase by 10, 10 + >>> notepadWindow.resizeTo(100, 100) # set size to 100x100 + >>> notepadWindow.move(10, 10) # move 10 pixels right and 10 down + >>> notepadWindow.moveTo(10, 10) # move window to 10, 10 + >>> notepadWindow.size + (132, 100) + >>> notepadWindow.width + 132 + >>> notepadWindow.height + 100 + >>> notepadWindow.topleft + (10, 10) + >>> notepadWindow.top + 10 + >>> notepadWindow.left + 10 + >>> notepadWindow.bottomright + (142, 110) + >>> notepadWindow.close() + >>> diff --git a/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/SOURCES.txt b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/SOURCES.txt new file mode 100644 index 0000000..78150a1 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/SOURCES.txt @@ -0,0 +1,11 @@ +README.md +setup.cfg +setup.py +src/PyGetWindow.egg-info/PKG-INFO +src/PyGetWindow.egg-info/SOURCES.txt +src/PyGetWindow.egg-info/dependency_links.txt +src/PyGetWindow.egg-info/requires.txt +src/PyGetWindow.egg-info/top_level.txt +src/pygetwindow/__init__.py +src/pygetwindow/_pygetwindow_macos.py +src/pygetwindow/_pygetwindow_win.py \ No newline at end of file diff --git a/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/dependency_links.txt b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/installed-files.txt b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/installed-files.txt new file mode 100644 index 0000000..4518baa --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/installed-files.txt @@ -0,0 +1,11 @@ +../pygetwindow/__init__.py +../pygetwindow/__pycache__/__init__.cpython-310.pyc +../pygetwindow/__pycache__/_pygetwindow_macos.cpython-310.pyc +../pygetwindow/__pycache__/_pygetwindow_win.cpython-310.pyc +../pygetwindow/_pygetwindow_macos.py +../pygetwindow/_pygetwindow_win.py +PKG-INFO +SOURCES.txt +dependency_links.txt +requires.txt +top_level.txt diff --git a/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/requires.txt b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/requires.txt new file mode 100644 index 0000000..f2b1100 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/requires.txt @@ -0,0 +1 @@ +pyrect diff --git a/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/top_level.txt b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/top_level.txt new file mode 100644 index 0000000..392e30f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyGetWindow-0.0.9-py3.10.egg-info/top_level.txt @@ -0,0 +1 @@ +pygetwindow diff --git a/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/PKG-INFO b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/PKG-INFO new file mode 100644 index 0000000..745689a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/PKG-INFO @@ -0,0 +1,132 @@ +Metadata-Version: 2.1 +Name: PyRect +Version: 0.2.0 +Summary: PyRect is a simple module with a Rect class for Pygame-like rectangular areas. +Home-page: https://github.com/asweigart/pyrect +Author: Al Sweigart +Author-email: al@inventwithpython.com +License: BSD +Keywords: pygame rect rectangular rectangle area +Classifier: Development Status :: 4 - Beta +Classifier: Environment :: Win32 (MS Windows) +Classifier: Environment :: MacOS X +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.5 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.1 +Classifier: Programming Language :: Python :: 3.2 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +License-File: LICENSE.txt +License-File: AUTHORS.txt + +====== +PyRect +====== +PyRect is a simple module with a Rect class for Pygame-like rectangular areas. + +This module is like a stand-alone version of Pygame's Rect class. It is similar to the Rect module by Simon Wittber, but compatible with both Python 2 and 3. + +Currently under development, though the basic features work. + +Installation +============ + + ``pip install pyrect`` + +Quickstart Guide +================ + +First, create a Rect object by providing the XY coordinates of its top-left corner, and then the width and height: + + >>> import pyrect + >>> r = pyrect.Rect(0, 0, 10, 20) + +There are several attributes that are automatically calculated (they have the same names as Pygame's Rect objects): + + >>> r.width, r.height, r.size + (10, 20, (10, 20)) + >>> r. left + 0 + >>> r.right + 10 + >>> r.top + 0 + >>> r.bottom + 20 + >>> r.center + (5, 10) + >>> r.topleft + (0, 0) + >>> r.topright + (10, 0) + >>> r.midleft + (0, 10) + +Changing these attributes re-calculates the others. The top-left corner is anchored for any growing or shrinking that takes place. + + >>> r.topleft + (0, 0) + >>> r.left = 100 + >>> r.topleft + (100, 0) + >>> r.topright + (110, 0) + >>> r.width = 30 + >>> r.topright + (130, 0) + +Rect objects are locked to integers, unless you set `enableFloat` to `True`: + + >>> r = pyrect.Rect(0, 0, 10, 20) + >>> r.width = 10.5 + >>> r.width + 10 + >>> r.enableFloat = True + >>> r.width = 10.5 + >>> r.width + 10.5 + >>> r2 = pyrect.Rect(0, 0, 10.5, 20.5, enableFloat=True) + >>> r2.size + (10.5, 20.5) + +Rect Attributes +=============== + +Rect objects have several attributes that can be read or modified. They are identical to Pygame's Rect objects: + + ``x, y`` + + ``top, left, bottom, right`` + + ``topleft, bottomleft, topright, bottomright`` + + ``midtop, midleft, midbottom, midright`` + + ``center, centerx, centery`` + + ``size, width, height`` + + ``w, h`` + +There are a couple other attributes as well: + + ``box (a tuple (left, top, width, height))`` + + ``area (read-only)`` + + ``perimeter (read-only)`` + diff --git a/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/SOURCES.txt b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/SOURCES.txt new file mode 100644 index 0000000..742ce2f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/SOURCES.txt @@ -0,0 +1,18 @@ +AUTHORS.txt +LICENSE.txt +README.rst +setup.cfg +setup.py +PyRect.egg-info/PKG-INFO +PyRect.egg-info/SOURCES.txt +PyRect.egg-info/dependency_links.txt +PyRect.egg-info/top_level.txt +docs/Makefile +docs/conf.py +docs/index.rst +docs/make.bat +docs/modules.rst +docs/pyrect.rst +docs/roadmap.rst +pyrect/__init__.py +tests/test_pyrect.py \ No newline at end of file diff --git a/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/dependency_links.txt b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/installed-files.txt b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/installed-files.txt new file mode 100644 index 0000000..82d983b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/installed-files.txt @@ -0,0 +1,6 @@ +../pyrect/__init__.py +../pyrect/__pycache__/__init__.cpython-310.pyc +PKG-INFO +SOURCES.txt +dependency_links.txt +top_level.txt diff --git a/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/top_level.txt b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/top_level.txt new file mode 100644 index 0000000..f2b1100 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/PyRect-0.2.0-py3.10.egg-info/top_level.txt @@ -0,0 +1 @@ +pyrect diff --git a/myenv/lib/python3.10/site-packages/Xlib/X.py b/myenv/lib/python3.10/site-packages/Xlib/X.py new file mode 100644 index 0000000..826854f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/X.py @@ -0,0 +1,424 @@ +# Xlib.X -- basic X constants +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +# Avoid overwriting None if doing "from Xlib.X import *" +NONE = 0 + +ParentRelative = 1 # background pixmap in CreateWindow + # and ChangeWindowAttributes + +CopyFromParent = 0 # border pixmap in CreateWindow + # and ChangeWindowAttributes + # special VisualID and special window + # class passed to CreateWindow + +PointerWindow = 0 # destination window in SendEvent +InputFocus = 1 # destination window in SendEvent +PointerRoot = 1 # focus window in SetInputFocus +AnyPropertyType = 0 # special Atom, passed to GetProperty +AnyKey = 0 # special Key Code, passed to GrabKey +AnyButton = 0 # special Button Code, passed to GrabButton +AllTemporary = 0 # special Resource ID passed to KillClient +CurrentTime = 0 # special Time +NoSymbol = 0 # special KeySym + + +#----------------------------------------------------------------------- +# Event masks: +# +NoEventMask = 0 +KeyPressMask = (1<<0) +KeyReleaseMask = (1<<1) +ButtonPressMask = (1<<2) +ButtonReleaseMask = (1<<3) +EnterWindowMask = (1<<4) +LeaveWindowMask = (1<<5) +PointerMotionMask = (1<<6) +PointerMotionHintMask = (1<<7) +Button1MotionMask = (1<<8) +Button2MotionMask = (1<<9) +Button3MotionMask = (1<<10) +Button4MotionMask = (1<<11) +Button5MotionMask = (1<<12) +ButtonMotionMask = (1<<13) +KeymapStateMask = (1<<14) +ExposureMask = (1<<15) +VisibilityChangeMask = (1<<16) +StructureNotifyMask = (1<<17) +ResizeRedirectMask = (1<<18) +SubstructureNotifyMask = (1<<19) +SubstructureRedirectMask = (1<<20) +FocusChangeMask = (1<<21) +PropertyChangeMask = (1<<22) +ColormapChangeMask = (1<<23) +OwnerGrabButtonMask = (1<<24) + +#----------------------------------------------------------------------- +# Event names: +# +# Used in "type" field in XEvent structures. Not to be confused with event +# masks above. They start from 2 because 0 and 1 are reserved in the +# protocol for errors and replies. +# +KeyPress = 2 +KeyRelease = 3 +ButtonPress = 4 +ButtonRelease = 5 +MotionNotify = 6 +EnterNotify = 7 +LeaveNotify = 8 +FocusIn = 9 +FocusOut = 10 +KeymapNotify = 11 +Expose = 12 +GraphicsExpose = 13 +NoExpose = 14 +VisibilityNotify = 15 +CreateNotify = 16 +DestroyNotify = 17 +UnmapNotify = 18 +MapNotify = 19 +MapRequest = 20 +ReparentNotify = 21 +ConfigureNotify = 22 +ConfigureRequest = 23 +GravityNotify = 24 +ResizeRequest = 25 +CirculateNotify = 26 +CirculateRequest = 27 +PropertyNotify = 28 +SelectionClear = 29 +SelectionRequest = 30 +SelectionNotify = 31 +ColormapNotify = 32 +ClientMessage = 33 +MappingNotify = 34 +LASTEvent = 35 # must be bigger than any event + + +#----------------------------------------------------------------------- +# Key masks: +# +# Used as modifiers to GrabButton and GrabKey, results of QueryPointer, +# state in various key-, mouse-, and button-related events. +# +ShiftMask = (1<<0) +LockMask = (1<<1) +ControlMask = (1<<2) +Mod1Mask = (1<<3) +Mod2Mask = (1<<4) +Mod3Mask = (1<<5) +Mod4Mask = (1<<6) +Mod5Mask = (1<<7) + + +#----------------------------------------------------------------------- +# Modifier names: +# +# Used to build a SetModifierMapping request or to read a +# GetModifierMapping request. These correspond to the masks defined above. +# +ShiftMapIndex = 0 +LockMapIndex = 1 +ControlMapIndex = 2 +Mod1MapIndex = 3 +Mod2MapIndex = 4 +Mod3MapIndex = 5 +Mod4MapIndex = 6 +Mod5MapIndex = 7 + +#----------------------------------------------------------------------- +# Button masks: +# +# Used in same manner as Key masks above. Not to be confused with button +# names below. Note that 0 is already defined above as "AnyButton". +# +Button1Mask = (1<<8) +Button2Mask = (1<<9) +Button3Mask = (1<<10) +Button4Mask = (1<<11) +Button5Mask = (1<<12) + +AnyModifier = (1<<15) # used in GrabButton, GrabKey + +#----------------------------------------------------------------------- +# Button names: +# +# Used as arguments to GrabButton and as detail in ButtonPress and +# ButtonRelease events. Not to be confused with button masks above. +# Note that 0 is already defined above as "AnyButton". +# +Button1 = 1 +Button2 = 2 +Button3 = 3 +Button4 = 4 +Button5 = 5 + + +#----------------------------------------------------------------------- +# XXX These still need documentation -- for now, read +# +NotifyNormal = 0 +NotifyGrab = 1 +NotifyUngrab = 2 +NotifyWhileGrabbed = 3 +NotifyHint = 1 +NotifyAncestor = 0 +NotifyVirtual = 1 +NotifyInferior = 2 +NotifyNonlinear = 3 +NotifyNonlinearVirtual = 4 +NotifyPointer = 5 +NotifyPointerRoot = 6 +NotifyDetailNone = 7 +VisibilityUnobscured = 0 +VisibilityPartiallyObscured = 1 +VisibilityFullyObscured = 2 +PlaceOnTop = 0 +PlaceOnBottom = 1 +FamilyInternet = 0 +FamilyDECnet = 1 +FamilyChaos = 2 +FamilyServerInterpreted = 5 +FamilyInternetV6 = 6 +PropertyNewValue = 0 +PropertyDelete = 1 +ColormapUninstalled = 0 +ColormapInstalled = 1 +GrabModeSync = 0 +GrabModeAsync = 1 +GrabSuccess = 0 +AlreadyGrabbed = 1 +GrabInvalidTime = 2 +GrabNotViewable = 3 +GrabFrozen = 4 +AsyncPointer = 0 +SyncPointer = 1 +ReplayPointer = 2 +AsyncKeyboard = 3 +SyncKeyboard = 4 +ReplayKeyboard = 5 +AsyncBoth = 6 +SyncBoth = 7 +RevertToNone = 0 +RevertToPointerRoot = PointerRoot +RevertToParent = 2 +Success = 0 +BadRequest = 1 +BadValue = 2 +BadWindow = 3 +BadPixmap = 4 +BadAtom = 5 +BadCursor = 6 +BadFont = 7 +BadMatch = 8 +BadDrawable = 9 +BadAccess = 10 +BadAlloc = 11 +BadColor = 12 +BadGC = 13 +BadIDChoice = 14 +BadName = 15 +BadLength = 16 +BadImplementation = 17 +FirstExtensionError = 128 +LastExtensionError = 255 +InputOutput = 1 +InputOnly = 2 +CWBackPixmap = (1<<0) +CWBackPixel = (1<<1) +CWBorderPixmap = (1<<2) +CWBorderPixel = (1<<3) +CWBitGravity = (1<<4) +CWWinGravity = (1<<5) +CWBackingStore = (1<<6) +CWBackingPlanes = (1<<7) +CWBackingPixel = (1<<8) +CWOverrideRedirect = (1<<9) +CWSaveUnder = (1<<10) +CWEventMask = (1<<11) +CWDontPropagate = (1<<12) +CWColormap = (1<<13) +CWCursor = (1<<14) +CWX = (1<<0) +CWY = (1<<1) +CWWidth = (1<<2) +CWHeight = (1<<3) +CWBorderWidth = (1<<4) +CWSibling = (1<<5) +CWStackMode = (1<<6) +ForgetGravity = 0 +NorthWestGravity = 1 +NorthGravity = 2 +NorthEastGravity = 3 +WestGravity = 4 +CenterGravity = 5 +EastGravity = 6 +SouthWestGravity = 7 +SouthGravity = 8 +SouthEastGravity = 9 +StaticGravity = 10 +UnmapGravity = 0 +NotUseful = 0 +WhenMapped = 1 +Always = 2 +IsUnmapped = 0 +IsUnviewable = 1 +IsViewable = 2 +SetModeInsert = 0 +SetModeDelete = 1 +DestroyAll = 0 +RetainPermanent = 1 +RetainTemporary = 2 +Above = 0 +Below = 1 +TopIf = 2 +BottomIf = 3 +Opposite = 4 +RaiseLowest = 0 +LowerHighest = 1 +PropModeReplace = 0 +PropModePrepend = 1 +PropModeAppend = 2 +GXclear = 0x0 +GXand = 0x1 +GXandReverse = 0x2 +GXcopy = 0x3 +GXandInverted = 0x4 +GXnoop = 0x5 +GXxor = 0x6 +GXor = 0x7 +GXnor = 0x8 +GXequiv = 0x9 +GXinvert = 0xa +GXorReverse = 0xb +GXcopyInverted = 0xc +GXorInverted = 0xd +GXnand = 0xe +GXset = 0xf +LineSolid = 0 +LineOnOffDash = 1 +LineDoubleDash = 2 +CapNotLast = 0 +CapButt = 1 +CapRound = 2 +CapProjecting = 3 +JoinMiter = 0 +JoinRound = 1 +JoinBevel = 2 +FillSolid = 0 +FillTiled = 1 +FillStippled = 2 +FillOpaqueStippled = 3 +EvenOddRule = 0 +WindingRule = 1 +ClipByChildren = 0 +IncludeInferiors = 1 +Unsorted = 0 +YSorted = 1 +YXSorted = 2 +YXBanded = 3 +CoordModeOrigin = 0 +CoordModePrevious = 1 +Complex = 0 +Nonconvex = 1 +Convex = 2 +ArcChord = 0 +ArcPieSlice = 1 +GCFunction = (1<<0) +GCPlaneMask = (1<<1) +GCForeground = (1<<2) +GCBackground = (1<<3) +GCLineWidth = (1<<4) +GCLineStyle = (1<<5) +GCCapStyle = (1<<6) +GCJoinStyle = (1<<7) +GCFillStyle = (1<<8) +GCFillRule = (1<<9) +GCTile = (1<<10) +GCStipple = (1<<11) +GCTileStipXOrigin = (1<<12) +GCTileStipYOrigin = (1<<13) +GCFont = (1<<14) +GCSubwindowMode = (1<<15) +GCGraphicsExposures = (1<<16) +GCClipXOrigin = (1<<17) +GCClipYOrigin = (1<<18) +GCClipMask = (1<<19) +GCDashOffset = (1<<20) +GCDashList = (1<<21) +GCArcMode = (1<<22) +GCLastBit = 22 +FontLeftToRight = 0 +FontRightToLeft = 1 +FontChange = 255 +XYBitmap = 0 +XYPixmap = 1 +ZPixmap = 2 +AllocNone = 0 +AllocAll = 1 +DoRed = (1<<0) +DoGreen = (1<<1) +DoBlue = (1<<2) +CursorShape = 0 +TileShape = 1 +StippleShape = 2 +AutoRepeatModeOff = 0 +AutoRepeatModeOn = 1 +AutoRepeatModeDefault = 2 +LedModeOff = 0 +LedModeOn = 1 +KBKeyClickPercent = (1<<0) +KBBellPercent = (1<<1) +KBBellPitch = (1<<2) +KBBellDuration = (1<<3) +KBLed = (1<<4) +KBLedMode = (1<<5) +KBKey = (1<<6) +KBAutoRepeatMode = (1<<7) +MappingSuccess = 0 +MappingBusy = 1 +MappingFailed = 2 +MappingModifier = 0 +MappingKeyboard = 1 +MappingPointer = 2 +DontPreferBlanking = 0 +PreferBlanking = 1 +DefaultBlanking = 2 +DisableScreenSaver = 0 +DisableScreenInterval = 0 +DontAllowExposures = 0 +AllowExposures = 1 +DefaultExposures = 2 +ScreenSaverReset = 0 +ScreenSaverActive = 1 +HostInsert = 0 +HostDelete = 1 +EnableAccess = 1 +DisableAccess = 0 +StaticGray = 0 +GrayScale = 1 +StaticColor = 2 +PseudoColor = 3 +TrueColor = 4 +DirectColor = 5 +LSBFirst = 0 +MSBFirst = 1 diff --git a/myenv/lib/python3.10/site-packages/Xlib/XK.py b/myenv/lib/python3.10/site-packages/Xlib/XK.py new file mode 100644 index 0000000..4b8bf8c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/XK.py @@ -0,0 +1,89 @@ +# Xlib.XK -- X keysym defs +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA +# +# This module defines some functions for working with X keysyms as well +# as a modular keysym definition and loading mechanism. See the keysym +# definition modules in the Xlib/keysymdef directory. + +from Xlib.X import NoSymbol + +def string_to_keysym(keysym): + '''Return the (16 bit) numeric code of keysym. + + Given the name of a keysym as a string, return its numeric code. + Don't include the 'XK_' prefix, just use the base, i.e. 'Delete' + instead of 'XK_Delete'.''' + return globals().get('XK_' + keysym, NoSymbol) + +def load_keysym_group(group): + '''Load all the keysyms in group. + + Given a group name such as 'latin1' or 'katakana' load the keysyms + defined in module 'Xlib.keysymdef.group-name' into this XK module.''' + if '.' in group: + raise ValueError('invalid keysym group name: %s' % group) + + G = globals() #Get a reference to XK.__dict__ a.k.a. globals + + #Import just the keysyms module. + mod = __import__('Xlib.keysymdef.%s' % group, G, locals(), [group]) + + #Extract names of just the keysyms. + keysyms = [n for n in dir(mod) if n.startswith('XK_')] + + #Copy the named keysyms into XK.__dict__ + for keysym in keysyms: + ## k = mod.__dict__[keysym]; assert k == int(k) #probably too much. + G[keysym] = mod.__dict__[keysym] + + #And get rid of the keysym module. + del mod + +def _load_keysyms_into_XK(mod): + '''keysym definition modules need no longer call Xlib.XK._load_keysyms_into_XK(). + You should remove any calls to that function from your keysym modules.''' + pass + +# Always import miscellany and latin1 keysyms +load_keysym_group('miscellany') +load_keysym_group('latin1') + + +def keysym_to_string(keysym): + '''Translate a keysym (16 bit number) into a python string. + + This will pass 0 to 0xff as well as XK_BackSpace, XK_Tab, XK_Clear, + XK_Return, XK_Pause, XK_Scroll_Lock, XK_Escape, XK_Delete. For other + values it returns None.''' + + # ISO latin 1, LSB is the code + if keysym & 0xff00 == 0: + return chr(keysym & 0xff) + + if keysym in [XK_BackSpace, XK_Tab, XK_Clear, XK_Return, + XK_Pause, XK_Scroll_Lock, XK_Escape, XK_Delete]: + return chr(keysym & 0xff) + + # We should be able to do these things quite automatically + # for latin2, latin3, etc, in Python 2.0 using the Unicode, + # but that will have to wait. + + return None diff --git a/myenv/lib/python3.10/site-packages/Xlib/Xatom.py b/myenv/lib/python3.10/site-packages/Xlib/Xatom.py new file mode 100644 index 0000000..6fedaaf --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/Xatom.py @@ -0,0 +1,90 @@ +# Xlib.Xatom -- Standard X atoms +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +PRIMARY = 1 +SECONDARY = 2 +ARC = 3 +ATOM = 4 +BITMAP = 5 +CARDINAL = 6 +COLORMAP = 7 +CURSOR = 8 +CUT_BUFFER0 = 9 +CUT_BUFFER1 = 10 +CUT_BUFFER2 = 11 +CUT_BUFFER3 = 12 +CUT_BUFFER4 = 13 +CUT_BUFFER5 = 14 +CUT_BUFFER6 = 15 +CUT_BUFFER7 = 16 +DRAWABLE = 17 +FONT = 18 +INTEGER = 19 +PIXMAP = 20 +POINT = 21 +RECTANGLE = 22 +RESOURCE_MANAGER = 23 +RGB_COLOR_MAP = 24 +RGB_BEST_MAP = 25 +RGB_BLUE_MAP = 26 +RGB_DEFAULT_MAP = 27 +RGB_GRAY_MAP = 28 +RGB_GREEN_MAP = 29 +RGB_RED_MAP = 30 +STRING = 31 +VISUALID = 32 +WINDOW = 33 +WM_COMMAND = 34 +WM_HINTS = 35 +WM_CLIENT_MACHINE = 36 +WM_ICON_NAME = 37 +WM_ICON_SIZE = 38 +WM_NAME = 39 +WM_NORMAL_HINTS = 40 +WM_SIZE_HINTS = 41 +WM_ZOOM_HINTS = 42 +MIN_SPACE = 43 +NORM_SPACE = 44 +MAX_SPACE = 45 +END_SPACE = 46 +SUPERSCRIPT_X = 47 +SUPERSCRIPT_Y = 48 +SUBSCRIPT_X = 49 +SUBSCRIPT_Y = 50 +UNDERLINE_POSITION = 51 +UNDERLINE_THICKNESS = 52 +STRIKEOUT_ASCENT = 53 +STRIKEOUT_DESCENT = 54 +ITALIC_ANGLE = 55 +X_HEIGHT = 56 +QUAD_WIDTH = 57 +WEIGHT = 58 +POINT_SIZE = 59 +RESOLUTION = 60 +COPYRIGHT = 61 +NOTICE = 62 +FONT_NAME = 63 +FAMILY_NAME = 64 +FULL_NAME = 65 +CAP_HEIGHT = 66 +WM_CLASS = 67 +WM_TRANSIENT_FOR = 68 +LAST_PREDEFINED = 68 diff --git a/myenv/lib/python3.10/site-packages/Xlib/Xcursorfont.py b/myenv/lib/python3.10/site-packages/Xlib/Xcursorfont.py new file mode 100644 index 0000000..e7d0815 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/Xcursorfont.py @@ -0,0 +1,99 @@ +# Xlib.Xcursorfont -- standard cursors +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +num_glyphs = 154 +X_cursor = 0 +arrow = 2 +based_arrow_down = 4 +based_arrow_up = 6 +boat = 8 +bogosity = 10 +bottom_left_corner = 12 +bottom_right_corner = 14 +bottom_side = 16 +bottom_tee = 18 +box_spiral = 20 +center_ptr = 22 +circle = 24 +clock = 26 +coffee_mug = 28 +cross = 30 +cross_reverse = 32 +crosshair = 34 +diamond_cross = 36 +dot = 38 +dotbox = 40 +double_arrow = 42 +draft_large = 44 +draft_small = 46 +draped_box = 48 +exchange = 50 +fleur = 52 +gobbler = 54 +gumby = 56 +hand1 = 58 +hand2 = 60 +heart = 62 +icon = 64 +iron_cross = 66 +left_ptr = 68 +left_side = 70 +left_tee = 72 +leftbutton = 74 +ll_angle = 76 +lr_angle = 78 +man = 80 +middlebutton = 82 +mouse = 84 +pencil = 86 +pirate = 88 +plus = 90 +question_arrow = 92 +right_ptr = 94 +right_side = 96 +right_tee = 98 +rightbutton = 100 +rtl_logo = 102 +sailboat = 104 +sb_down_arrow = 106 +sb_h_double_arrow = 108 +sb_left_arrow = 110 +sb_right_arrow = 112 +sb_up_arrow = 114 +sb_v_double_arrow = 116 +shuttle = 118 +sizing = 120 +spider = 122 +spraycan = 124 +star = 126 +target = 128 +tcross = 130 +top_left_arrow = 132 +top_left_corner = 134 +top_right_corner = 136 +top_side = 138 +top_tee = 140 +trek = 142 +ul_angle = 144 +umbrella = 146 +ur_angle = 148 +watch = 150 +xterm = 152 diff --git a/myenv/lib/python3.10/site-packages/Xlib/Xutil.py b/myenv/lib/python3.10/site-packages/Xlib/Xutil.py new file mode 100644 index 0000000..b691561 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/Xutil.py @@ -0,0 +1,81 @@ +# Xlib.Xutil -- ICCCM definitions and similar stuff +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + + +NoValue = 0x0000 +XValue = 0x0001 +YValue = 0x0002 +WidthValue = 0x0004 +HeightValue = 0x0008 +AllValues = 0x000F +XNegative = 0x0010 +YNegative = 0x0020 +USPosition = (1 << 0) +USSize = (1 << 1) +PPosition = (1 << 2) +PSize = (1 << 3) +PMinSize = (1 << 4) +PMaxSize = (1 << 5) +PResizeInc = (1 << 6) +PAspect = (1 << 7) +PBaseSize = (1 << 8) +PWinGravity = (1 << 9) +PAllHints = (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect) +InputHint = (1 << 0) +StateHint = (1 << 1) +IconPixmapHint = (1 << 2) +IconWindowHint = (1 << 3) +IconPositionHint = (1 << 4) +IconMaskHint = (1 << 5) +WindowGroupHint = (1 << 6) +MessageHint = (1 << 7) +UrgencyHint = (1 << 8) +AllHints = (InputHint|StateHint|IconPixmapHint|IconWindowHint| + IconPositionHint|IconMaskHint|WindowGroupHint|MessageHint| + UrgencyHint) +WithdrawnState = 0 +NormalState = 1 +IconicState = 3 +DontCareState = 0 +ZoomState = 2 +InactiveState = 4 +RectangleOut = 0 +RectangleIn = 1 +RectanglePart = 2 +VisualNoMask = 0x0 +VisualIDMask = 0x1 +VisualScreenMask = 0x2 +VisualDepthMask = 0x4 +VisualClassMask = 0x8 +VisualRedMaskMask = 0x10 +VisualGreenMaskMask = 0x20 +VisualBlueMaskMask = 0x40 +VisualColormapSizeMask = 0x80 +VisualBitsPerRGBMask = 0x100 +VisualAllMask = 0x1FF +ReleaseByFreeingColormap = 1 +BitmapSuccess = 0 +BitmapOpenFailed = 1 +BitmapFileInvalid = 2 +BitmapNoMemory = 3 +XCSUCCESS = 0 +XCNOMEM = 1 +XCNOENT = 2 diff --git a/myenv/lib/python3.10/site-packages/Xlib/__init__.py b/myenv/lib/python3.10/site-packages/Xlib/__init__.py new file mode 100644 index 0000000..f164c43 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/__init__.py @@ -0,0 +1,39 @@ +# Xlib.__init__ -- glue for Xlib package +# +# Copyright (C) 2000-2002 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +__version__ = (0, 33) + +__version_extra__ = '' + +__version_string__ = '.'.join(map(str, __version__)) + __version_extra__ + +__all__ = [ + 'X', + 'XK', + 'Xatom', + 'Xcursorfont', + 'Xutil', + 'display', + 'error', + 'rdb', + # Explicitly exclude threaded, so that it isn't imported by + # from Xlib import * + ] diff --git a/myenv/lib/python3.10/site-packages/Xlib/__pycache__/X.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/__pycache__/X.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e70e8ce641537bd112809f612be1f167d75a9ff GIT binary patch literal 7523 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/__pycache__/XK.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/__pycache__/XK.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0c33d55ce8614256d277c6759667f346b0ca180c GIT binary patch literal 2124 zcmZuyPjA~c6elHHQ9P$e1FUU|bs(@6u7OleHeiP#2!b_j4=I9S35LwTpwS|2tCmEU zq>?&tc9{1CcHFH!_OLIrqpk%8^egPrJ(9|nq!Yk@kB^T(zV~}iVr8X;;9KsMu z-kQbb&x6G-G-W!57|u|R`xqnUG5=T8_gI59Vf0zRmSAjfpM?w9hjH1Ati?V8d6Tsd zQFrAXSV3J}g$LqrmJdXhU?ZtNGjBk91Wm0$r_lnv!VJ&RZKS=|9+>dX{``*XQWivy zIeD=46&a+uONuh*GEGP#7$;&#CVZx5dDLnV_@1UG-02rIx7)NW5MqH$jHNjK)+0`GzLxj*;!(2vXKAbH-LH`YOa-q=Pj zKKt2Y0T5#8?2l&xTuQUdM#X_t5GgW}qMTmg0Ch5Ad7#QPZP5mhL9h$XjP+cwGBYdyUqwy_b|ZV~Lvuj~w6p*dsUpYwwSH9L=ijR%&jgJqZsk_jPzke%aAzu?rLqd+n57AbyUnU;ZC3bc z<%3WAOSQk{5?Htn@#Y6uJ~v2Lp$nUB9C)|CiX5;YcO#-Oa^ z;)D}g%4U6&k`xYAYE;5u24Ov;?5;Oi+>ifkH> zZN3~1O}3uGQ_Khz^BX8vhfuSi)WYhB4(#|S<5X_gYz3+NS=fzlDU@eBJ4~d=viO-u zCU*T;C3NbxTuF||6DS4(vR_(5kgX+$nxgA}gdzu`;8BX+Ls$%@-oXSNbeAhX8OwhA zGPr)=!1Y5IEx7*jzrd`}0_)!Z;U!>J$pN!d2TTTV&vhcKI{umx?TYmiP*OLbYlm&z z@{G0U(CJ_(3aXpHL|2=3Gm;jAjbt$17m{Cql1aZn@QcWLLA#kB2tzcCVH&{*eZU7A#VCzojK(oe6PTb$OwtslXd2Tr zgBhB|EX`q#<}ptTSfE8L(h`1#xb4XgaiZ?P#_JO`sk#4v3dEz=k)T9X=dU~3zJ~f z$;MuiOp4(nf5|XyOqO}i1FzuerA9fWQLewW`y~`j51@)I5WXa zGE>YnGsDa>bId%mz$`LL%rdjW4I)}}|)t=+Rx64Qr48JTKBsJmch9yiD*{1DsEujUj zXS>K~fgcuvVo|!Q(PS-}tVffLXtEhiwxY>)G}%E?cg2|~m=f`#ZTV<5EMJzSi-cpG z^9{8)wkjdzO3fEmNlk2brDq4OCd0C@1kcU7r9#-)f+{&^Ka!aNPj`^xFZuDECnH@>OlN@+FH49|9@&dGDa^IgL#A^Ef61;R9RB+d*=x6hD1E34(p>UMM_ zReY-M*h2?bO+#9|kfv%9ZK`Cbj)aydM>5ZVYML5rlye+#H_W#$%BliSiKMXY@5`jh zh822_&?M4)*;||{i}UZHwDh+y>jjQ!R*YmzDk zruiDCHQ{_;jXR~8f^S+yzAG%R(X66+{Bx@AhmLB!EUHcGf5aY2>c`dKuV3>w)w@cb zZXO=L<@HMKOTBuZzkjOVRKJGz)!!-);nicku9EQTvR0ume0Z$YNzDuE)$8lq%0vF{ zsq*z({`T|L+hrRoYpeO%=Xz!N{_>YEm)DhA{+vh8FYDF2mHVgXrUK86bJAn>@H@34S`(AJs~9I!V;2@8zCeiHbkY8H&hgkYJ~Jcq$Vj8YpTSnEmFDzsUl(sDcXhp^x@p5A~y;s;E*8HL9ad0~jC+77b#M8fefEhG-bWG=dRo zqDgzPmqsy4`>>D3Fh=7Tr~TMZ2XKH6;vgNuAv%o1bOc9e0uyu;N9h=j(QzE76F5O9 zagt8q6rILtI)gKG7H4S^lXMQ}XbMww9_Q%-F3>cl=^`%DC0wG*xJ*}Yg=R2AEwpGB zvvd_#X%2IA4cF*8uG0do9^Ha-Njv6zyjUFJzB&f-N$`e!V*2e z1A2&u^azh=8O!t-kLd}X&{I66XLv@>@tjt$LND-wUg9Oa!Yf++s51S*&L3RI9sX8! z_6Sv>E^y&1JF*Tt!$MOS6~=`9!a?D%Fd-ZhP6(%jGs2`WC0r0L3YUc$VOE$Et_$;|40Pxq)^!_>x{s-jc|YltPpMAZdYezB&f0-0Uy{$Mad_r| zV>;?xkc3XabKxs77enr`)VAw65qGJr2P!id=;$^-#Guy6!gd!mzRIVo_?gRVo^ni@ zSAADUX!u4)j$Vy9aEK8;~-1W{4!HX>htjB@(z|OBI7s8W-)pDtj;%;s&gqpHIEz19_3AMwZFKLP#}@n?uXNBjV}J*@W->wSUszQlTuu--n_ z^O#E>L-z#wukd^d{nzOG4e+H}x5vCwl{U`)1u#0tX4zHd?)9{vsfD5k*$zNOR~>g+I6BHWMXf0llnN|uHEC;fA$zrz)F f3c2^)yYEocbNO8U?f)!a_`9(7zFzOjmva9A;n}7W literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..471604be324d6fe24855acb993568719d0bc501e GIT binary patch literal 399 zcmYjLu};G<6tta$7D@*Yh?$KH)F4)b7}$_lSRyY^N&QGnlQ^=SLS}vh*!U9u!7EdL zfe9BOm6P5{_uf6->FIQb1Z?xZ`iu$rT8sZkg18Q2PXb9Ih@^r__R28A7|9EJqezd4 zNJ=83cPh4Id{5FOWvk#PtK&ePcsfhRo@Rn&w<5`MryDWJ=Do4nJm}ViUGG%wM^f3Y z&Ig~MG1`d8$l@*?`3b-hja9k@5PKVe&(7okK7Q1y^-+^|KC;e;{f#9^)t13C0?6wc z;DeZHDD_L5I(;e>ySB0cbKcRu5cWxb9>8+E&2Tqq|jfOV^ zwo6{C;_vNZc7DdKa(LS1^F>~w<=OfQpjzbsX5HY&myMQvjaM`jvExATVayKLF8cu` C=6Q<% literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/__pycache__/display.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/__pycache__/display.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4cbe220b48afa4f4c88505331492cd8f90fb5fbf GIT binary patch literal 31832 zcmdsgdz2g3c^}@uVjo;Cm!w2VG$>mVS6YFhB-^qr%c7Q~L`z!AByCc#Wf+S)yNe|j zvzoz@Tm*C+({gObPJK?}ByF6ObX=!Oo77F*x{suF)03pF+n)BcX;Z{a+oWmh^p#Xe z)8l7i`ooT1nGqp@QrLrp5&aUTbIl0c`I$z7nbph9fT0yRh?c#c=HYV34T$gL* z_3_&H`b2F)^2XYe>r=HUxh~^+S8bPEkK=l}HZ9i^xZYjcE!UH{o~g~GQ{L3t9&gv$ zEIxbj+2>8K?Z@X9d~Wr2uO0Aa)^1Z%pB}5-u6C(uwOh@6I$OKr$&}ioW7?L*E!uY&u7Dt$IJxBsh{b!u@gJ=og}yhhinZ+4da&5o+Cd)-xEeKn28 zc$)Wuzz=Yd^{#aBmA>$DdQeoYaHHMWn#&G~f%oF37j{wblGo`DGQo=|RSLY&-wc`_ zuT{{v+*oSM^|IgT+Uus@_Jj4t2Fetgn?Z{@Ou-%qWi`{~c5&!k$Ze&)03A5N!vm8ut1>TK%e^x|A`u(xiZTVFyy z&2}RUy>O6g`Wst=Y4^T=lT3 zxzKAb4|0uQ1?^t+w!)WF!66LyYvGYqf89HxR)ft;M~-{p#jd|`WMc~$)2VOxm%X6A zwAtc&=ZJ9<7rh!v2O(+AS!bZ>7Q##K9ylTAX{{t?o7d=~HtpFq-2_fu=BOR1pD z?|%ALz_goQ%k=pK>-mZ7)oeezmhECCE@p#+yw)WjP4OD5n^}B08a3c($C7>uz*`BbOt1)XDnEMSQ=-~TMF*t zvveSE*2$gBDXn;2S)8}yE+l!BG5_hzM0O%w$PB^3mR)=~eR3|(^<~po-*Uaa?yJo< zuP5sD7dIPi{X~Ep+>2&o9doGz_8#m-@;E*M`ckTtpUO*K6M2b0&g^k~!nI6{LO!N4 zDhtX0Ck2J1NFl0-@4PChF?<(PS&iens3z1TzDsIK?ZWpM`5C^;YDVqB_qdu>d+|M? z_No2&o>aG}Tk$=mKBf+++t9-MmT( zs=L)ac(zv^R&)5?r|wnv;d{TDSNG%l7FAV8@O`U#Kpn;R0rjAI2;aA9-@>K^a#+MIfu`IlZUs6}-e`S+s4bLt(q zx=)=^XVK@pI;Y-=@B7ue)OmbY)dlrDzK^JydN;lwK#ljP7f|D<)Osu)v{Va&Kr=ks#?f-qgqoJk@JZ9glemGYwp zEvOHwYxq8{KBQj4_X+i3^@I36iIN{tA4SP0MUMTM;5K00ViQ>B{>E|T=zbCWw+s5d z2HLNuReA+ndsaBE@Kwy?A?)2L3h1E*TB)cd%Dy8+_lVA z@cZkt{p^kORq6ZsUX(7Z?PHJq{Pq3dO9i=3t&Ls3h2_$z7vGH0m9O7=BZWTpp^xI# zl8pC2zj$lv>R9)-{@B{>{jueAzjTeX851J%dSF0sA>sIkvn%tIE7}G zlXXZDNb!2phco~SGPmK@dN`P>Z*C~6AUbo9Yju`=Xi%*Vb65j6jVtzMum`!QSnmdn zPS|dATYe`Tl+nA_3FUgP$Ud-SlLN`u?1qC|jZBF>(8^925M^rP$5HHj(Ae1Ug2Aq+ zw$^NRwZY({s$oDBt4-BoS(?$d);IisLbV8X+~{`E7F48QD=Jvq6N0Hn9jrIj{Gc`= zUv+8L>-0&+bJZbg@aTz3ltoabde@O?}y$FD)ArNI8Y<;G^a3pg9) zYFy-u5n1RmtQC=p>?%Se$VC|r?%RcY0eQ$RmNHY>5=uafWv1~xk;!~uCI?}b z&ZRTysc%gc52SBT=f2gOHfoBK?g>>2xR)Z)Q@FoET^?vF$`lYZ-TT}bue%v^!b*45 zt8g}z&CpYou3u^TosQS+@{-R&FSrC?R=gJOf^xY6xrrJAx{p8UXxfNEer~D z*$i46UCgJmxxVBD6@OVK45Ppc+FP7|=r=EV-Kv}4xz$!!(KJ-Sm4h09+i17_%atUs zupEA6$*XKoV^yvdD4T#}Rev3xb5JR8Tpd4n216c3xJBgsIp#l$q&H>Zplj?n`&Vch zSVV!fMN25td*ede4?UTyS%Y~jrRUidw<*y5U!n-Zf#S~hy1{WRIW8S2;0dO%&^t)cUZm}iyMMn^%p2DY}E ztCh>GcAH>sVhxCuSW#R#aBp^WaiuGVRaZS+^*7s~lEy_q<1*GTSlJ}*hLr~XSFjZ8 zji?=C`6Y)iUx5K2BZOt*ca&?Ra+t$5b>?J@ZbTUCqTlhVmC9LDEh?+LNaq197kT+>~vdggB#?!z&qg?oH+*_!_f$C7G(ghcM6e$&v@09 zs^-jS757@=HabMSMg$?DjSyrYynks6DBSddZUd0AYlq6vA|PWGz?2^BAs^lFTeRCC zLOb2SZ;yf(4CJj&^YZ|hpwvX6H{nnU4|ar?<-UE*eFYXBh-1Bw)ygU1xPb?%0ZRC0 zeGLZ9lkeJ_Lx}reKLQu>49lRWs6-({ z&o&%6-5RF)%lHJ(BkAq4-6d;oW7t*&2}K1l{smD%-nX#oVRc%|l_kHcIfhm?gdjNG zX1fLET7l{uknqFJ4JwWTi3@J-SR<|0iW&o+ZSSjd>EQJks%3s-?#U4Q8%%=EB5m_m z+#L7XIVPSbTqs!-=4Sz)klr-PB$x|uo$#ukxt8H%8;=1F3*tuvky&|ZR3yZl6XV5<{$!7N)4Fh-{Z z2MqiTXs6w1F~kz6s8#@R+}@h6gsn~!J$JS$7a}AKD{2e+Duh+L4gLz>f%Je?b_25L zEm}#(2X&&AON~~Ws&J%A8d4P#2M$@v^WbqNM7?2*-lu01IYRZUe;q}IA~R zJ-3_~Dq@{la>E44evC{QvTScNnHyDD22q#tA4PTwh4YIH%hNdw}5)3AE6Hox4vHUOe zAG`xeZ`Oi1{&>fMTT%ax*ifTEk_}oFUN;95^a@mwW|tcKupMb8AtJyDwHYz`600z3 zI>8DC{|aXzg6)8v#rE1wI?U}K>49Esp$V#nz?byJOt6oOLB1dC>cW-Q&+JQ)2H?0# z0f#b=rc@pnlwMAEvv91XRrW?^e+q7}9NbPvujae?K3q;$3uvVvtvrlYa{YWivus-G z7U%?nbFA1K>(doiWDT}_KK0@u&|himjHW+OWwAw(ixQ8fp2yS6()(PY@yBovIC)qH zUozWThpp94BO6wpVc2sKBR{5~iFV>VuA)8X#?FP2a{7t4pIA6Y6^qMAYKN?H{7&~k zOBdZr3EKD<~D)Hl0!m|Swn)4S=)r4%}jI< z6M}rcO%O`vkT6_4_Us7@9&x@HPlEOoL@)p>Prh?;;oPayi!9!79cxR|Ee~{k8tBWd zAnZEXCp9YfaHr~?NQ?-5_YQ-ddg~inzWIP0b}J#gEE(x>yt#5$D6FdY+R?@Dvc3(L zT$~%DeHjX)o;n7LC7^RmxVYx~dm?eP+VY^%HCML=S&&(=!Mm3XQ2XuBipE`X=Am9uX!3>Fh4Wxb}b&cNcbU#;zS9`5+y~u0v zUT0Mrg64LXznbmRTRjF6PhZPgo3Zh+ZR9E@!eM$s!5A;W&Gv30(hJ)O)s5WRP?d$# z$0O{6{~~BLfwpXj`qPPbk#ZfTk%FZ!Xyfoo0V7$!c~II=M3t_{l3aWd-W73VyH*T- zcf8B-##}RSGmsx}VAY7zz}T~d;;*-Wu;|EGc+`Gdx;LTQ z0WrzJU|MKz0$YfAwp~>RIc*h1G_?3~S*u>+V;<9cxgi|d*iWQS7`wW+00Rbj0fJCm zZ4Y_uP>X{i=0K1IkDxfzBf)s=Q^UQT#i9z*4+?-9Z<0#GU{BPTG|lLOyMZR+87ohe z((ox~rZS~WAw84n-8LGLWo4VhTl>d-N{7eK;Rbk|1s-RC$JpUDc$^3B=3{sa@pJ>& z+Rq6l-@zJJa|V-%^AKJ!Z2tXi*c@&yeGdq2YhlfI#%UBHK;5busf6tNVQC0rB1@yV z*wNuCoC{iXv0??KXg612q{bZJtS^ zF7`)=tYpf@S@(muUUQXkuOI+xQ3zTXT@G z1>*>|#YhbE3RXH#C{pIm6nEqfEVm74&Jes8m3x#{P-m%t-UxNpVmTZ$IQ8*Eq3SK7XRkrp@nkCr(r?@EmCihmt;Gy@q!g7?`1#T>4bDU9M^OXzL zMgQ#9`jX#{FIXVkXz-3AUWJA+V_Gmat@TJWOUYIJT&=zyLLMuqJTbE^C;Q`O%Xl{FOIw zWFc10tS{)pwPGF!Lq>-V?DPohPB{*@T!L5d#Ng4q;E8L<)eHbty*rPEIm+wzG3g_D z*=&~-bjzbwNVeByfjFcq(F)B%i7X7SP_p#46>=0MD>U8(^cgt^$`VK7HS1V$>$8$_ zRF&=hl3gLVm}He4q<37NV`5Upjk50MMjJx!u&E10i?}&QpjwE*!v*gvtZ$74EzqHM zAvo9$uO4@*u*HR4U02qwu<56|%{`C>{LkWJHu#98eZkXZI#RQX5>KJm?huM$Pa?gI zgi4RL8|zD|@z_VWF6433souQRfb^mo^5W`+)km>U&}fH`;X+qLh+md5l@VTi0Iduo z!p!!jKIkwZw=csTe$cA(C~Pmj4HcY3qDBbSE6wmb_!4gEr`L4Y9Xt%!P%7Xa2EMr~chT>*mcjX`M!E%+)o*&OOH{o< z-Z~7$A{hXL{RM37S5d8N9jegGNy*8Ev=LYB9rUhjz+KACtjdUv7w5`@atn@B`d_gX zMW$DqOca#JL5UNr?J^IZ_O_P%MxcTRQG75dRD)jyV!KAGgaofk2E|sMe)y&+gqu`k8nXn1CAew zpJa?H+&_mAt(3c(SB!QlbTj?@we-bQa1_oT#2S%TUoFDnlfIY_?!k8!&+g%~x28I| zenGLdSiNxXi(^0(*pXCd5CcU?OYjXsfpXg7(YAyGR%NcID<^vO@sca73hn)By7`Zxy&vd4oDW`LP z6z#GlBft`DgDitwQ!tAbDOZ7tETZP%dw@lj4kr4-A`rumm^*F9@i{qaZ}p7mFrY}i ze*|AZ03z4`=a%gczw-2n=g&U>tVHrK41rsA9Y0zTuMr{$ig7!!fHO)Ck@7M1P1X)( z?!y>la1lwZC~G(cxip2|ogR9yGD;UxJ>*z>_GTkBfl4rl>M41Oe>( zFnntf5Q}SLFeEiVx4|y(mLTX2?7mFcaXX=uL!24VlzPlmHiBQG^v`@RUG%FkO+?z!W08M73K?;bbJlerW7c==U&Yy~pEX4#{Z=>I5qy8QEdJ z!Y#iD3xER|vLk&+pto$5R_Y4YeaH5aSfJyoG?G*+=NY#ZG+JTg&3U4sjuB5t4g7Ws zFAHwBf&#NtG=*y8PkLR}Sp?2$IB@Y2a2U0QlXk{(WPmQLR|v#X7HbGkTSO&^ayx=2 z_%U{x>0LG4mvGSA5}*rMRsLlJXX=PQc+o3|;jrWc=Y$Je9F43jREJpwT0l??sv>xR zn7~F|8`a7JH_ZvYiUFI2&tS}zGH71g4Je(JxI=V*nk@>f26<`SLhH|C5+gBQ0)WE=DkokctgCE8X8 zFzCX;E&3?=ZVb?n?brd4FfwSvj11Iq364iJ?2>5x)xiEa9shJ5oD&h80P}_Fsm{h` z_oUz4go9l7M79*$_n?T; z&;>LYWAsB~18P2#t-oF-c3-`Nu#{DHvSm)lV_`NhXI} zBK)!(jq3kmF||-CkzMM4<*!G`vgA z+LS(Q;9U_Gt>Zlia`;xHCMF9e9Qy=D5uXKo!UISg73HA7z)S#8cz9E2sP~?j3S%Nz zDjSUeEEAD`h#dgCbx`8`1r;Np=-S5+>~qO8pm`Fd40xadiu{qKpTl?j0t)F1$iaR1&@EJ@2 zD)m{t$T5tvM#*=9QcoKj)Br8`={R_%bPu+ShUZ^IiD6ROWl+KnU_T}u{0s{A_S=aL zl}K!BQkq+{HL2H$VF{e!;a`n2e{2aU#1Y70nn8>JWRZ@ahKoS+xd>sZ#~3hbP=(Ic zv&ma|Y-ekqyZcx>XSkKU6>CUmxT0uU+Ij-pIfkFJE8a%BG$}SV*hYmJVAbmzn%ysK z!b0kF&motNUx&=1eU7{l{~KZhE5^~uKIFLSkar1=SW^Zd&u9`hhEmCle- z-r(ssqiCCW!GyYjN|83k*hEM1q;>9b=ym%n5JAj0aCwFrQ(**w+c<1``RH1d{VyAn z3BMjsi9k1qwpzD^FGB`u+yYM}gOHeJQXY&BL@PREXk7Anmc*?h^w{-HNMlAn`xp=7 z;NX*WV0N%Ald0%-uqY>hiFb?Kv;12RKNd2`1yk)*{5UD0SoK(VyY0x+kJu za2N?(aYA_4a6L$G1;5A#UtsdrnfwhVUt}_hGAH8mc$lO~)3G#0R>vc6(ZBMaL~Ji! z>AO&L;Qx#(It@>Z1#US(gNN!26`uOJT+AD*AjYYTK``&u?n2c-z60hr8D_%YlmIv-$dH5lji!3`~k{WYTe}v6?g_d(`w@iAfqm%Sf?tU{BOOpF~R_9sMkVML-m7k#0k)L<<&`Vx5jav4Hl6 zH4!J_V2E%`^OI+|u7_N5C$0v&=p%@s(!02t_@t)BqBR^UlUPHR&Eg|#7*~V1hF9Sy z*Dk3>Ew+-CC5VAb5F`Mlb)>ZY6^8M{OAba%89+L=YIVdAG>v=M7n4SSUF0W-O@KQc zN7g{Z;@@HAq@x{8K>|6j8exis-+(us=f7aCcX%kyvm=ANf{4OXkU5@1>uA`G-O57` zx|Zk<#BmZBuFt>;3IXS>R~FH^5r-TJrmKC27(`fkWRXKgdSB&@t`&#VG?ua3*IMa7 z-ojym2nhfS;!PUb0&Lu%sOE86k1SU8+G`(bZTuZP@BOr#c-Jfc5*Em6Z*#aF#)1i$ z;5Z?U#;_yTAPUejnJN_0kwl0WNoa30eJQGl0pS`F?LC!u5oE4syP35d_DZtc`4Ue) z-bf(kFiaclpcT2t)z5OTE4WK)j=}4i)_RfLmsPeqzBYkfHfm4Y3&`+&9-rWjSE2X8 z(>Nj}z+pf!4)tKQTFY23(Fb|h7om+oM|(l(f!1ztYE%yRQqydrGUP!#rq0*7-oWu{ z?gju?$?)|iO|)~Lv{AClEhRBmi~0>eqzxRE`U!qb%4*bRX;TncqljJ9A;fFt1$HJo zskI{9h~h;R^`OLgp2Prx^DH<GJ~RN%sObtNX&$mwkm6oqqxRX5tILr!1{G2qo}FO;AsI{colGa zMNCU^g2;A+JIELnO8|-(;{e6bIV%+n-N<`@8h4}ENGSbj0H|_;43^{5{LHZ&+6Yvy zVo?mFDW0Sye~JV$U78G0_u>MX%i)NQf|cA>h|TbOHXMmlzJWu+!y-!Mf(>V(6r4#x z9S5?Pz#k*d%)+Ce*uz77>ITHK3hg?$IcRgGl6nprt3Ca|F;_NzSL< z2%F$Z$vn7u6PdJy0INFiIx0yB(FIM&vI1X^K)VmXx^NOLpT*7`UL^t9Z~@YuInQaR zZ)u&dUs0VcPPJ2eIKzH?jR!mY2~c2FBcD5XSdYMj}=bQWKnC%0-h3ehoBa z^`hO5uFu2jJcT#CX#LkXi6g=uVuiC2vBK8tu0m&8_Fp1bq~D};hw#I1MJF0Y72lD{ ztz+|3P|PDy295-?*e9EVFHP&Kaa&2qlg6?>ml{nN5=`nsf#E3>#OP@Zl2@|`@#^P> z=!|p4a7hPW$PegejJ-^_+u5>ntBhm7f_KPF!112|C?l=WN!kNK7HsHqWRC(s*{y}I z-T7D&<#yCKgTKeM%_L6bSw9JT(GyLmZWdfgmB|v2oyZ{1@rA*cIFTV-kiAMbho9#h zL|wvJfN1=b&#p{DUm|~Jc@cyZCyu|1<4|wo;$S4)hi1#|cc42T3opttCR}0W%(iB} zE|yxTO+s#|IY!LWl%_8G>TD^xY^>0Xoe+z^D9E7;Ns$CC4=egDLKraiT8Vs-x08xJ z5!0R{r^hA6fpmBojH4kw$fo(aL9_qIa3JfOikez&z|Di>8sZ*Z3r33A%e&@g2NOt>W&rA8VbEcLQQtA|X9E`P#8ODm8? zW0in1MIB*{QJP5bC?5PGnUvV)6M8Q_m(FD(+fJ+XZlE`%w6|MVp`1_QDs7y|lOji$@hfw?v2cF(!eAErRh|2_qx;2<8%e5{cu)dlzIQ?rAe46T7K-vQb)H zrICzzKXf5PRc(v!`!dl-G+1HLaD;!e_Zq9|?@%Wp=*a4G4t9h{w4KAU4TGo9D{&4KfX%yx@O7kKPA9&r%d{@K+mBZL* zm=ow8eE@fDzoF(LqF^KUAGOXcQ5~Wq=3bXX6%}6cpfK+=4B^4iScoGmk3d#%WbKDp zf&04XST&mACSv-L4RWNu?tQdThqw`9nlPivyban8pxC|zMa7* z$_-0c{{j|F_Q=pI;1*nFC>Q~_()O2PFD~O)w3pNRKIyUoc+i&SfWr+s-o^c$L7r9? z4uqRvpdrq`0Iip=jVht2)emG_sDg}PO?Dg8r`r;>ze1+Z7D@+b*g!Aek>#5j3B3X8 zs`Cj4zl@u?Oyg(Jq*WbWo%R{iI5h<8F(gRf;_wolMhA==8(Qz><=C!ZtgT2x=F&vQ z?n5}__FX!66T^x-dbL79Y`Cd|H_?XkypS4+Y;g9Hup8PfOn(fvs({y;aHx}b5-lF> z_j6Jf)3*7Z!x}+64wsmv^DBoCqpMB3~79g z#Dq_3>Xsc;14~1Y@$Qe;PHp-OZlJr?&sd%;qRiMj)ih>r(?7%H}QtaUU-dBrGY06@M054!S=%DI)W>R zPaCEYVb=h1N5>hUz!52?(up?6ne&zgc+!dV!bKs9TNudC!z@imH&t~ihoy|4%G zPx0Ce+6TQiW2#SbR<5R=3gkQH!6t_rszNn!*f3HLT8vHt%@t+QWuftN3O<7U03y63 z-LLBo2V;^`M=yhMeJS%FjJW|>VKu9DShJBCrzi79l3HFG2)+Vb(5Urqc{O12TS)K@ zcH1o=G%U~d=_R&N8}=QFw*eEwJ5jq-fbq*${bqPVNWRTphThRAe=R!XKDw!!$~go| zfA4b6!7*Zf4xawHTQSSfxTTMoVG9`-oK^#YKa6VWr-{B@?DOo{VQVgR)EeszcckZ-p>i zyg}m=E|k4@zyx@A&*F%R*EtLKQD9l24${_0Uu1wH-t0Ii$>9(9mj@GY!7TIlCfbe8 z#lbG_=pmf&3SzT1K~IinPQgJMYg}_r^R9;9CQko*CjWuSe`GQ$fM=SnQ2my!ddMLz z5H@m>D2BWU+IFvF9e26ZOLg__o+tiN2KTSP#Z5h!&h|^<8g>F$4~XqmSHJ+}A=V!%5Vn;ILz< z=ur>Zj40t&4yO?V?71@n0}cc@m`^=->0vr!K@MReJV`=x2jekd40612L^H01#8b#K zF})@_Nn(2c6Y1plb|RJu!?xLAc!q=`uFs<8?=WS)5k)k_i{6Yx8o%+q@O5H`KM4z+ujd=qy@{WJTm`ejO7d=ofq>NuOST9(O4yXUY*a%cARM14V%^onlZ zp+n(lhc+T?V`%9mb_;5;%A&x{(9vP*t42eLvBbt;WO@;i% zV}(SWl4`c&gXnxf5EBkg6%}s_0sc7DA`~&tB!WP6O{ab~^)q>lpovL>V29FFVPRdw@PHM(Q!p z`8f}7qwm0TBOXzkdk!0}K3}I?4gTveNaZ#E#}Q@rEVzOeVqYa2JLD3osDnL(kPNfV zkTh|HT_PO+8Jj!9yDlt?D7Wn)DY4G|4I*@IZ6nAZ-i$i^aI z5o_ZN0tz6r2)yAo6yo(vD^OG2vH&#|!uXpEC1-f>Y6DSQ^fe;{L*9xp3`9t!rWfmS zXCTf%Pi=Y$LH~XSLx+po3vKhxbN6C_3-n`1;Kq6{sQs+jr8m1q)_GvnW&IOm5TbZ4 z5Y&u4_Kr>)>!?c_>&#RTWt&HMw1@~1G6R=UX9ckUI>^R>k9-E8;-PMcdhE2>T^Xu4 zR!ufzM1*i;QXmg|Qe-8<9-{_L2&ORx03BJ)jn%DCLNo1f?>mZE$7IXvV8+ zfZPxpGSm!TjNg$r3USYvufR9Ps%uG4J<(5W5;P}mH6pB2)u~Mc4xrA%P zb$52t=mSxY_Rw(f5)sa9QSAoG8SBXmR8Sv3hl6O@&CvRJS!LAzl;$ZzDDh#?gZA-G znKRbzEr!61VFXI(N0fM|tqH?KV7z2a2#f6+cZ`d~ppJnHQ2m6&4dK13vKS6Bg3}f; z@irqJ6KoMrzrlYeyj%ocCW1O*HfJ1a0@+bp%*o$hFk}63f{9#U3O^tevELCic2nNL zb5U4G0SsKE+|JTr!Ng#Fq6Jc&TL?G<3f{^$uMsz&!OtwjwS6NF1#NwG)O8(`-nfrVY0SFkIUgo9j@Toflh%CD~Spe z*lJdB5+}gHV`9u=2QJ{+LD3jDh?vfI-~xk^1+QfVGr%A$sbEP0tN#aZ)G~rU!1YK* zFiX<5Yhkyff68%!al;ARi+M*CzbPyD)orXmBR7egp)wLdieHamjHw-qR>@exfeZ41 z%v=H>0BHTH4MP@~`6&iQ7+gOZ-4p3?0-yU4)QtIejw;FKl60@Jn@ev28@*mn5ZDbU z!AiIbFcRtl=`Ru7Lu#D7EXg)zA^mfXndHDs9F)mShKnY+2^p@_M9cxn`QtuCkVHa* zK|-8k<_$EdGHGuMr1z6 zAIn?%gZuCtCmclb4zN6(*l&^4FLYm>g#Ex0w7AlfTR4?=$&TCjW@Zmzn%iCjXqt zqf8jX6#PpjA7}C#O#U^K-(>Rdn9%td{0@`fW%8ey{1+y_&*Z-``R`2rClmQ~fIsBb z|7P+ElS9emPTt;zgdhz+iKK*I$Sb|2RKUMnsfe^x%FDm~<#EXyE8kn*Upi3QUn-k_ z_m;-XyUSxJRm{MZQvP;%SGiao!>3#>mhuJW%$BA~HlNNZQ;}&X>l@rP9Ij z0hGF}Jc+wPX|gF>q{lm2-L>0&{ z32T()OBVDygBYC@j3cQPujo@8LqDh->|%*&B!d#n6gd`AD;+mK3|%Yemvz(%&&f|c z*Gea`3r^!X_y=q>^W;LUv|xVFuvS=*x6SL9s;{wK0$2amWSdtb;6Erm3i8I!-#(T` tiSQ95rG5D6L7b()zw9i3hLBhIm&3P1n= literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/__pycache__/error.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/__pycache__/error.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a17d13b1b112eb950095b5ebc9b2b079da9b9693 GIT binary patch literal 6350 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 RxBlc7tUtOF&L5_x{|84scmn_c literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/__pycache__/rdb.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/__pycache__/rdb.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a213969c1c373e09250d8644224a5bfc4d1c568 GIT binary patch literal 14726 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/__pycache__/threaded.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/__pycache__/threaded.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3588a8e066380565d8ea501d99554555fb34023d GIT binary patch literal 316 zcmYjLJ5I$g5VYe2cql2k0Zj^G5G_I!)HF0GjpaPAk`VjZ@+XiZaiz3WT!D%Wyn>Z> zw6mJo9a~lB1Z&6BpmIV!H}bzSBoEl(5`V6SE_Uaofqk<4L2DmxL11(dx_1z~B=+>F*!} z(F^byZ*sEuRSNeRd=|{>%4(Ey9_i{G`7N#>LoH#$%6W6q(V1Ar zlitHj2JjJ)4Mq0oG2`@v=JZVW!Ni5uI5zbhXSWD9PFPN#kk~bevc~UItez5OAJ@2f zLjOh&$>d$-z}q@v|8R4bvE%v)$&Dw-q>0~=K}qb~CF%V`TKR6nA9y!_*BC#cBu929 z^%BuOZe}zyPnbsLnEB2;M1)n-+<7Cf`WtyQ-pH$o95jz;R@*n^f8uKy z*>jI)GCOm!de+FAUF!t7ewC?|Bj2;g_w=6qJsrDeXLyY_biPmM5v;dKj7$R;SVxrC z_SyGTzN@Zr#GyFL&GKov>waTv=}(UzZhX1+c)KtkZai9@G#6i8y~&+lYn>M-%1ecs z_c~#$``sw!-goUwmIaeLliQtS)aRwO6e0JzG8uT^ewg3$zP+1E6bhNJj~~9&*Lm`n zt$wt#_*Z?)?|FxzjH7sW-s^@@UvN()-Y}G@&{BCx*DLMHYC!D1(4g~PxRXc)H!tk> zz3xb=o{*&$U&$yqLPtF3!@JsJ5_SjQH4E< zhhb;Gu)`sId0`D@6swk7n5pP@3rBA?4hN!O-C<$K@USpIIt2wnHylL$abd$?SFbMQ zToy(=8Wd*fVe(LgFNpjNmifP@?OrkvZQhfkgZ7F@_f;}%569q_I2a~}LIyh{r7#F~ z!c_1ekfT&_*aa%t-R%q69*mKaHcsr!?e~j!KWwLw5(|0*;jT#AI^XT`oEC@U!U=*X zj#Lo*3JXZTfpDlx9meP!-X>+#JY}cMbZLX$J~f|BvsvmqW2d%ZPBB=#Lmm1KbLq@$ zqzja{nfuawHZwO%+3Ab{#M8-J(I%!AX-%3(tVx1O1zI=Q40d(8(G5O2aVLAli4d#%jqk8tDuzb^2WwzYpV-) zI~LUEZ3>+_o-z^tL9QwC2*v)vVa9m*{5$fr z4aPE$EqpUrW^@hx)o8Ks8=Tq$O*die>0(16MV(MZN$lyG8ha?OPEWJIgQZ7npKs55 zODij1u5NC^fj7Lfwz9VQ#rno#<3jPcCp=v!np^-{LVIbaC!iYO_E)f85?@$o>(qm>fFm9t*NR$eu3$trnyI?DgL`e=`c+5lC>lX9NcgC)`)&|C9fkdBMt%TO z+0tTOi;uK;#R+9k6NA*nrMH{ve`gM8!TF4m)W2B`Hig7(D;bnf?g(h2*8o$Tz1 ijw;vky5$$n{c8UoYlciU3pzI(I>T&c)9Po^>+DAd^6`xT literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/display.py b/myenv/lib/python3.10/site-packages/Xlib/display.py new file mode 100644 index 0000000..bbda44b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/display.py @@ -0,0 +1,951 @@ +# Xlib.display -- high level display object +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +# Python modules +import types + +# Python 2/3 compatibility. +from six import create_unbound_method + +# Xlib modules +from . import error +from . import ext +from . import X + +# Xlib.protocol modules +from .protocol import display as protocol_display +from .protocol import request, event, rq + +# Xlib.xobjects modules +from .xobject import resource +from .xobject import drawable +from .xobject import fontable +from .xobject import colormap +from .xobject import cursor + +_resource_baseclasses = { + 'resource': resource.Resource, + 'drawable': drawable.Drawable, + 'window': drawable.Window, + 'pixmap': drawable.Pixmap, + 'fontable': fontable.Fontable, + 'font': fontable.Font, + 'gc': fontable.GC, + 'colormap': colormap.Colormap, + 'cursor': cursor.Cursor, + } + +_resource_hierarchy = { + 'resource': ('drawable', 'window', 'pixmap', + 'fontable', 'font', 'gc', + 'colormap', 'cursor'), + 'drawable': ('window', 'pixmap'), + 'fontable': ('font', 'gc') + } + +class _BaseDisplay(protocol_display.Display): + + # Implement a cache of atom names, used by Window objects when + # dealing with some ICCCM properties not defined in Xlib.Xatom + + def __init__(self, *args, **keys): + self.resource_classes = _resource_baseclasses.copy() + protocol_display.Display.__init__(self, *args, **keys) + self._atom_cache = {} + + def get_atom(self, atomname, only_if_exists=False): + if atomname in self._atom_cache: + return self._atom_cache[atomname] + + r = request.InternAtom(display = self, name = atomname, only_if_exists = only_if_exists) + + # don't cache NONE responses in case someone creates this later + if r.atom != X.NONE: + self._atom_cache[atomname] = r.atom + + return r.atom + + +class Display(object): + def __init__(self, display = None): + self.display = _BaseDisplay(display) + + # Create the keymap cache + self._keymap_codes = [()] * 256 + self._keymap_syms = {} + self._update_keymap(self.display.info.min_keycode, + (self.display.info.max_keycode + - self.display.info.min_keycode + 1)) + + # Translations for keysyms to strings. + self.keysym_translations = {} + + # Find all supported extensions + self.extensions = [] + self.class_extension_dicts = {} + self.display_extension_methods = {} + + # a dict that maps the event name to the code + # or, when it's an event with a subcode, to a tuple of (event,subcode) + # note this wraps the dict so you address it as + # extension_event.EXTENSION_EVENT_NAME rather than + # extension_event["EXTENSION_EVENT_NAME"] + self.extension_event = rq.DictWrapper({}) + + exts = self.list_extensions() + + # Go through all extension modules + for extname, modname in ext.__extensions__: + if extname in exts: + + # Import the module and fetch it + __import__('Xlib.ext.' + modname) + mod = getattr(ext, modname) + + info = self.query_extension(extname) + self.display.set_extension_major(extname, info.major_opcode) + + # Call initialiasation function + mod.init(self, info) + + self.extensions.append(extname) + + + # Finalize extensions by creating new classes + for class_name, dictionary in self.class_extension_dicts.items(): + origcls = self.display.resource_classes[class_name] + self.display.resource_classes[class_name] = type(origcls.__name__, + (origcls,), + dictionary) + + # Problem: we have already created some objects without the + # extensions: the screen roots and default colormaps. + # Fix that by reinstantiating them. + for screen in self.display.info.roots: + screen.root = self.display.resource_classes['window'](self.display, screen.root.id) + screen.default_colormap = self.display.resource_classes['colormap'](self.display, screen.default_colormap.id) + + + def get_display_name(self): + """Returns the name used to connect to the server, either + provided when creating the Display object, or fetched from the + environmental variable $DISPLAY.""" + return self.display.get_display_name() + + def fileno(self): + """Returns the file descriptor number of the underlying socket. + This method is provided to allow Display objects to be passed + select.select().""" + return self.display.fileno() + + def close(self): + """Close the display, freeing the resources that it holds.""" + self.display.close() + + def set_error_handler(self, handler): + """Set the default error handler which will be called for all + unhandled errors. handler should take two arguments as a normal + request error handler, but the second argument (the request) will + be None. See section Error Handling.""" + self.display.set_error_handler(handler) + + def flush(self): + """Flush the request queue, building and sending the queued + requests. This can be necessary in applications that never wait + for events, and in threaded applications.""" + self.display.flush() + + def sync(self): + """Flush the queue and wait until the server has processed all + the queued requests. Use this e.g. when it is important that + errors caused by a certain request is trapped.""" + # Do a light-weight replyrequest to sync. There must + # be a better way to do it... + self.get_pointer_control() + + def next_event(self): + """Return the next event. If there are no events queued, it will + block until the next event is fetched from the server.""" + return self.display.next_event() + + def pending_events(self): + """Return the number of events queued, i.e. the number of times + that Display.next_event() can be called without blocking.""" + return self.display.pending_events() + + def has_extension(self, extension): + """Check if both the server and the client library support the X + extension named extension.""" + return extension in self.extensions + + def create_resource_object(self, type, id): + """Create a resource object of type for the integer id. type + should be one of the following strings: + + resource + drawable + window + pixmap + fontable + font + gc + colormap + cursor + + This function can be used when a resource ID has been fetched + e.g. from an resource or a command line argument. Resource + objects should never be created by instantiating the appropriate + class directly, since any X extensions dynamically added by the + library will not be available. + """ + return self.display.resource_classes[type](self.display, id) + + # We need this to handle display extension methods + def __getattr__(self, attr): + try: + function = self.display_extension_methods[attr] + return types.MethodType(function, self) + except KeyError: + raise AttributeError(attr) + + ### + ### display information retrieval + ### + + def screen(self, sno = None): + if sno is None: + return self.display.info.roots[self.display.default_screen] + else: + return self.display.info.roots[sno] + + def screen_count(self): + """Return the total number of screens on the display.""" + return len(self.display.info.roots) + + def get_default_screen(self): + """Return the number of the default screen, extracted from the + display name.""" + return self.display.get_default_screen() + + ### + ### Extension module interface + ### + + def extension_add_method(self, object, name, function): + """extension_add_method(object, name, function) + + Add an X extension module method. OBJECT is the type of + object to add the function to, a string from this list: + + display + resource + drawable + window + pixmap + fontable + font + gc + colormap + cursor + + NAME is the name of the method, a string. FUNCTION is a + normal function whose first argument is a 'self'. + """ + + if object == 'display': + if hasattr(self, name): + raise AssertionError('attempting to replace display method: %s' % name) + + self.display_extension_methods[name] = function + + else: + class_list = (object, ) + _resource_hierarchy.get(object, ()) + for class_name in class_list: + cls = _resource_baseclasses[class_name] + if hasattr(cls, name): + raise AssertionError('attempting to replace %s method: %s' % (class_name, name)) + + method = create_unbound_method(function, cls) + + # Maybe should check extension overrides too + try: + self.class_extension_dicts[class_name][name] = method + except KeyError: + self.class_extension_dicts[class_name] = { name: method } + + def extension_add_event(self, code, evt, name = None): + """extension_add_event(code, evt, [name]) + + Add an extension event. CODE is the numeric code, and EVT is + the event class. EVT will be cloned, and the attribute _code + of the new event class will be set to CODE. + + If NAME is omitted, it will be set to the name of EVT. This + name is used to insert an entry in the DictWrapper + extension_event. + """ + + newevt = type(evt.__name__, evt.__bases__, + evt.__dict__.copy()) + newevt._code = code + + self.display.add_extension_event(code, newevt) + + if name is None: + name = evt.__name__ + + setattr(self.extension_event, name, code) + + def extension_add_subevent(self, code, subcode, evt, name = None): + """extension_add_subevent(code, evt, [name]) + + Add an extension subevent. CODE is the numeric code, subcode + is the sub-ID of this event that shares the code ID with other + sub-events and EVT is the event class. EVT will be cloned, and + the attribute _code of the new event class will be set to CODE. + + If NAME is omitted, it will be set to the name of EVT. This + name is used to insert an entry in the DictWrapper + extension_event. + """ + + newevt = type(evt.__name__, evt.__bases__, + evt.__dict__.copy()) + newevt._code = code + + self.display.add_extension_event(code, newevt, subcode) + + if name is None: + name = evt.__name__ + + # store subcodes as a tuple of (event code, subcode) in the + # extension dict maintained in the display object + setattr(self.extension_event, name, (code,subcode)) + + def extension_add_error(self, code, err): + """extension_add_error(code, err) + + Add an extension error. CODE is the numeric code, and ERR is + the error class. + """ + + self.display.add_extension_error(code, err) + + ### + ### keymap cache implementation + ### + + # The keycode->keysym map is stored in a list with 256 elements. + # Each element represents a keycode, and the tuple elements are + # the keysyms bound to the key. + + # The keysym->keycode map is stored in a mapping, where the keys + # are keysyms. The values are a sorted list of tuples with two + # elements each: (index, keycode) + # keycode is the code for a key to which this keysym is bound, and + # index is the keysyms index in the map for that keycode. + + def keycode_to_keysym(self, keycode, index): + """Convert a keycode to a keysym, looking in entry index. + Normally index 0 is unshifted, 1 is shifted, 2 is alt grid, and 3 + is shift+alt grid. If that key entry is not bound, X.NoSymbol is + returned.""" + try: + return self._keymap_codes[keycode][index] + except IndexError: + return X.NoSymbol + + def keysym_to_keycode(self, keysym): + """Look up the primary keycode that is bound to keysym. If + several keycodes are found, the one with the lowest index and + lowest code is returned. If keysym is not bound to any key, 0 is + returned.""" + try: + return self._keymap_syms[keysym][0][1] + except (KeyError, IndexError): + return 0 + + def keysym_to_keycodes(self, keysym): + """Look up all the keycodes that is bound to keysym. A list of + tuples (keycode, index) is returned, sorted primarily on the + lowest index and secondarily on the lowest keycode.""" + try: + # Copy the map list, reversing the arguments + return map(lambda x: (x[1], x[0]), self._keymap_syms[keysym]) + except KeyError: + return [] + + def refresh_keyboard_mapping(self, evt): + """This method should be called once when a MappingNotify event + is received, to update the keymap cache. evt should be the event + object.""" + if isinstance(evt, event.MappingNotify): + if evt.request == X.MappingKeyboard: + self._update_keymap(evt.first_keycode, evt.count) + else: + raise TypeError('expected a MappingNotify event') + + def _update_keymap(self, first_keycode, count): + """Internal function, called to refresh the keymap cache. + """ + + # Delete all sym->code maps for the changed codes + + lastcode = first_keycode + count + for keysym, codes in self._keymap_syms.items(): + i = 0 + while i < len(codes): + code = codes[i][1] + if code >= first_keycode and code < lastcode: + del codes[i] + else: + i = i + 1 + + # Get the new keyboard mapping + keysyms = self.get_keyboard_mapping(first_keycode, count) + + # Replace code->sym map with the new map + self._keymap_codes[first_keycode:lastcode] = keysyms + + # Update sym->code map + code = first_keycode + for syms in keysyms: + index = 0 + for sym in syms: + if sym != X.NoSymbol: + if sym in self._keymap_syms: + symcodes = self._keymap_syms[sym] + symcodes.append((index, code)) + symcodes.sort() + else: + self._keymap_syms[sym] = [(index, code)] + + index = index + 1 + code = code + 1 + + ### + ### client-internal keysym to string translations + ### + + def lookup_string(self, keysym): + """Return a string corresponding to KEYSYM, or None if no + reasonable translation is found. + """ + s = self.keysym_translations.get(keysym) + if s is not None: + return s + + import Xlib.XK + return Xlib.XK.keysym_to_string(keysym) + + def rebind_string(self, keysym, newstring): + """Change the translation of KEYSYM to NEWSTRING. + If NEWSTRING is None, remove old translation if any. + """ + if newstring is None: + try: + del self.keysym_translations[keysym] + except KeyError: + pass + else: + self.keysym_translations[keysym] = newstring + + + ### + ### X requests + ### + + def intern_atom(self, name, only_if_exists = False): + """Intern the string name, returning its atom number. If + only_if_exists is true and the atom does not already exist, it + will not be created and X.NONE is returned.""" + r = request.InternAtom(display = self.display, + name = name, + only_if_exists = only_if_exists) + return r.atom + + def get_atom(self, atom, only_if_exists = False): + """Alias for intern_atom, using internal cache""" + return self.display.get_atom(atom, only_if_exists) + + + def get_atom_name(self, atom): + """Look up the name of atom, returning it as a string. Will raise + BadAtom if atom does not exist.""" + r = request.GetAtomName(display = self.display, + atom = atom) + return r.name + + def get_selection_owner(self, selection): + """Return the window that owns selection (an atom), or X.NONE if + there is no owner for the selection. Can raise BadAtom.""" + r = request.GetSelectionOwner(display = self.display, + selection = selection) + return r.owner + + def send_event(self, destination, event, event_mask = 0, propagate = False, + onerror = None): + """Send a synthetic event to the window destination which can be + a window object, or X.PointerWindow or X.InputFocus. event is the + event object to send, instantiated from one of the classes in + protocol.events. See XSendEvent(3X11) for details. + + There is also a Window.send_event() method.""" + request.SendEvent(display = self.display, + onerror = onerror, + propagate = propagate, + destination = destination, + event_mask = event_mask, + event = event) + + def ungrab_pointer(self, time, onerror = None): + """Release a grabbed pointer and any queued events. See + XUngrabPointer(3X11).""" + request.UngrabPointer(display = self.display, + onerror = onerror, + time = time) + + def change_active_pointer_grab(self, event_mask, cursor, time, onerror = None): + """Change the dynamic parameters of a pointer grab. See + XChangeActivePointerGrab(3X11).""" + request.ChangeActivePointerGrab(display = self.display, + onerror = onerror, + cursor = cursor, + time = time, + event_mask = event_mask) + + def ungrab_keyboard(self, time, onerror = None): + """Ungrab a grabbed keyboard and any queued events. See + XUngrabKeyboard(3X11).""" + request.UngrabKeyboard(display = self.display, + onerror = onerror, + time = time) + + def allow_events(self, mode, time, onerror = None): + """Release some queued events. mode should be one of + X.AsyncPointer, X.SyncPointer, X.AsyncKeyboard, X.SyncKeyboard, + X.ReplayPointer, X.ReplayKeyboard, X.AsyncBoth, or X.SyncBoth. + time should be a timestamp or X.CurrentTime.""" + request.AllowEvents(display = self.display, + onerror = onerror, + mode = mode, + time = time) + + def grab_server(self, onerror = None): + """Disable processing of requests on all other client connections + until the server is ungrabbed. Server grabbing should be avoided + as much as possible.""" + request.GrabServer(display = self.display, + onerror = onerror) + + def ungrab_server(self, onerror = None): + """Release the server if it was previously grabbed by this client.""" + request.UngrabServer(display = self.display, + onerror = onerror) + + def warp_pointer(self, x, y, src_window = X.NONE, src_x = 0, src_y = 0, + src_width = 0, src_height = 0, onerror = None): + """Move the pointer relative its current position by the offsets + (x, y). However, if src_window is a window the pointer is only + moved if the specified rectangle in src_window contains it. If + src_width is 0 it will be replaced with the width of src_window - + src_x. src_height is treated in a similar way. + + To move the pointer to absolute coordinates, use Window.warp_pointer().""" + request.WarpPointer(display = self.display, + onerror = onerror, + src_window = src_window, + dst_window = X.NONE, + src_x = src_x, + src_y = src_y, + src_width = src_width, + src_height = src_height, + dst_x = x, + dst_y = y) + + def set_input_focus(self, focus, revert_to, time, onerror = None): + """Set input focus to focus, which should be a window, + X.PointerRoot or X.NONE. revert_to specifies where the focus + reverts to if the focused window becomes not visible, and should + be X.RevertToParent, RevertToPointerRoot, or RevertToNone. See + XSetInputFocus(3X11) for details. + + There is also a Window.set_input_focus().""" + request.SetInputFocus(display = self.display, + onerror = onerror, + revert_to = revert_to, + focus = focus, + time = time) + + def get_input_focus(self): + """Return an object with the following attributes: + + focus + The window which currently holds the input + focus, X.NONE or X.PointerRoot. + revert_to + Where the focus will revert, one of X.RevertToParent, + RevertToPointerRoot, or RevertToNone. """ + return request.GetInputFocus(display = self.display) + + def query_keymap(self): + """Return a bit vector for the logical state of the keyboard, + where each bit set to 1 indicates that the corresponding key is + currently pressed down. The vector is represented as a list of 32 + integers. List item N contains the bits for keys 8N to 8N + 7 + with the least significant bit in the byte representing key 8N.""" + r = request.QueryKeymap(display = self.display) + return r.map + + def open_font(self, name): + """Open the font identifed by the pattern name and return its + font object. If name does not match any font, None is returned.""" + fid = self.display.allocate_resource_id() + ec = error.CatchError(error.BadName) + + request.OpenFont(display = self.display, + onerror = ec, + fid = fid, + name = name) + self.sync() + + if ec.get_error(): + self.display.free_resource_id(fid) + return None + else: + cls = self.display.get_resource_class('font', fontable.Font) + return cls(self.display, fid, owner = 1) + + def list_fonts(self, pattern, max_names): + """Return a list of font names matching pattern. No more than + max_names will be returned.""" + r = request.ListFonts(display = self.display, + max_names = max_names, + pattern = pattern) + return r.fonts + + def list_fonts_with_info(self, pattern, max_names): + """Return a list of fonts matching pattern. No more than + max_names will be returned. Each list item represents one font + and has the following properties: + + name + The name of the font. + min_bounds + max_bounds + min_char_or_byte2 + max_char_or_byte2 + default_char + draw_direction + min_byte1 + max_byte1 + all_chars_exist + font_ascent + font_descent + replies_hint + See the description of XFontStruct in XGetFontProperty(3X11) + for details on these values. + properties + A list of properties. Each entry has two attributes: + + name + The atom identifying this property. + value + A 32-bit unsigned value. + """ + return request.ListFontsWithInfo(display = self.display, + max_names = max_names, + pattern = pattern) + + def set_font_path(self, path, onerror = None): + """Set the font path to path, which should be a list of strings. + If path is empty, the default font path of the server will be + restored.""" + request.SetFontPath(display = self.display, + onerror = onerror, + path = path) + + def get_font_path(self): + """Return the current font path as a list of strings.""" + r = request.GetFontPath(display = self.display) + return r.paths + + def query_extension(self, name): + """Ask the server if it supports the extension name. If it is + supported an object with the following attributes is returned: + + major_opcode + The major opcode that the requests of this extension uses. + first_event + The base event code if the extension have additional events, or 0. + first_error + The base error code if the extension have additional errors, or 0. + + If the extension is not supported, None is returned.""" + r = request.QueryExtension(display = self.display, + name = name) + if r.present: + return r + else: + return None + + def list_extensions(self): + """Return a list of all the extensions provided by the server.""" + r = request.ListExtensions(display = self.display) + return r.names + + def change_keyboard_mapping(self, first_keycode, keysyms, onerror = None): + """Modify the keyboard mapping, starting with first_keycode. + keysyms is a list of tuples of keysyms. keysyms[n][i] will be + assigned to keycode first_keycode+n at index i.""" + request.ChangeKeyboardMapping(display = self.display, + onerror = onerror, + first_keycode = first_keycode, + keysyms = keysyms) + + def get_keyboard_mapping(self, first_keycode, count): + """Return the current keyboard mapping as a list of tuples, + starting at first_keycount and no more than count.""" + r = request.GetKeyboardMapping(display = self.display, + first_keycode = first_keycode, + count = count) + return r.keysyms + + def change_keyboard_control(self, onerror = None, **keys): + """Change the parameters provided as keyword arguments: + + key_click_percent + The volume of key clicks between 0 (off) and 100 (load). + -1 will restore default setting. + bell_percent + The base volume of the bell, coded as above. + bell_pitch + The pitch of the bell in Hz, -1 restores the default. + bell_duration + The duration of the bell in milliseconds, -1 restores + the default. + led + + led_mode + led_mode should be X.LedModeOff or X.LedModeOn. If led is + provided, it should be a 32-bit mask listing the LEDs that + should change. If led is not provided, all LEDs are changed. + key + + auto_repeat_mode + auto_repeat_mode should be one of X.AutoRepeatModeOff, + X.AutoRepeatModeOn, or X.AutoRepeatModeDefault. If key is + provided, that key will be modified, otherwise the global + state for the entire keyboard will be modified.""" + request.ChangeKeyboardControl(display = self.display, + onerror = onerror, + attrs = keys) + + def get_keyboard_control(self): + """Return an object with the following attributes: + + global_auto_repeat + X.AutoRepeatModeOn or X.AutoRepeatModeOff. + + auto_repeats + A list of 32 integers. List item N contains the bits for keys + 8N to 8N + 7 with the least significant bit in the byte + representing key 8N. If a bit is on, autorepeat is enabled + for the corresponding key. + + led_mask + A 32-bit mask indicating which LEDs are on. + + key_click_percent + The volume of key click, from 0 to 100. + + bell_percent + + bell_pitch + + bell_duration + The volume, pitch and duration of the bell. """ + return request.GetKeyboardControl(display = self.display) + + def bell(self, percent = 0, onerror = None): + """Ring the bell at the volume percent which is relative the base + volume. See XBell(3X11).""" + request.Bell(display = self.display, + onerror = onerror, + percent = percent) + + def change_pointer_control(self, accel = None, threshold = None, onerror = None): + """To change the pointer acceleration, set accel to a tuple (num, + denum). The pointer will then move num/denum times the normal + speed if it moves beyond the threshold number of pixels at once. + To change the threshold, set it to the number of pixels. -1 + restores the default.""" + if accel is None: + do_accel = 0 + accel_num = 0 + accel_denum = 0 + else: + do_accel = 1 + accel_num, accel_denum = accel + + if threshold is None: + do_threshold = 0 + else: + do_threshold = 1 + + request.ChangePointerControl(display = self.display, + onerror = onerror, + do_accel = do_accel, + do_thresh = do_threshold, + accel_num = accel_num, + accel_denum = accel_denum, + threshold = threshold) + + def get_pointer_control(self): + """Return an object with the following attributes: + + accel_num + + accel_denom + The acceleration as numerator/denumerator. + + threshold + The number of pixels the pointer must move before the + acceleration kicks in.""" + return request.GetPointerControl(display = self.display) + + def set_screen_saver(self, timeout, interval, prefer_blank, allow_exposures, onerror = None): + """See XSetScreenSaver(3X11).""" + request.SetScreenSaver(display = self.display, + onerror = onerror, + timeout = timeout, + interval = interval, + prefer_blank = prefer_blank, + allow_exposures = allow_exposures) + + def get_screen_saver(self): + """Return an object with the attributes timeout, interval, + prefer_blanking, allow_exposures. See XGetScreenSaver(3X11) for + details.""" + return request.GetScreenSaver(display = self.display) + + def change_hosts(self, mode, host_family, host, onerror = None): + """mode is either X.HostInsert or X.HostDelete. host_family is + one of X.FamilyInternet, X.FamilyDECnet, X.FamilyChaos, + X.FamilyServerInterpreted or X.FamilyInternetV6. + + host is a list of bytes. For the Internet family, it should be the + four bytes of an IPv4 address.""" + request.ChangeHosts(display = self.display, + onerror = onerror, + mode = mode, + host_family = host_family, + host = host) + + def list_hosts(self): + """Return an object with the following attributes: + +mode + X.EnableAccess if the access control list is used, X.DisableAccess otherwise. +hosts + The hosts on the access list. Each entry has the following attributes: + + family + X.FamilyInternet, X.FamilyDECnet, X.FamilyChaos, X.FamilyServerInterpreted or X.FamilyInternetV6. + name + A list of byte values, the coding depends on family. For the Internet family, it is the 4 bytes of an IPv4 address. + +""" + return request.ListHosts(display = self.display) + + def set_access_control(self, mode, onerror = None): + """Enable use of access control lists at connection setup if mode + is X.EnableAccess, disable if it is X.DisableAccess.""" + request.SetAccessControl(display = self.display, + onerror = onerror, + mode = mode) + + def set_close_down_mode(self, mode, onerror = None): + """Control what will happen with the client's resources at + connection close. The default is X.DestroyAll, the other values + are X.RetainPermanent and X.RetainTemporary.""" + request.SetCloseDownMode(display = self.display, + onerror = onerror, + mode = mode) + + def force_screen_saver(self, mode, onerror = None): + """If mode is X.ScreenSaverActive the screen saver is activated. + If it is X.ScreenSaverReset, the screen saver is deactivated as + if device input had been received.""" + request.ForceScreenSaver(display = self.display, + onerror = onerror, + mode = mode) + + def set_pointer_mapping(self, map): + """Set the mapping of the pointer buttons. map is a list of + logical button numbers. map must be of the same length as the + list returned by Display.get_pointer_mapping(). + + map[n] sets the + logical number for the physical button n+1. Logical number 0 + disables the button. Two physical buttons cannot be mapped to the + same logical number. + + If one of the buttons to be altered are + logically in the down state, X.MappingBusy is returned and the + mapping is not changed. Otherwise the mapping is changed and + X.MappingSuccess is returned.""" + r = request.SetPointerMapping(display = self.display, + map = map) + return r.status + + def get_pointer_mapping(self): + """Return a list of the pointer button mappings. Entry N in the + list sets the logical button number for the physical button N+1.""" + r = request.GetPointerMapping(display = self.display) + return r.map + + def set_modifier_mapping(self, keycodes): + """Set the keycodes for the eight modifiers X.Shift, X.Lock, + X.Control, X.Mod1, X.Mod2, X.Mod3, X.Mod4 and X.Mod5. keycodes + should be a eight-element list where each entry is a list of the + keycodes that should be bound to that modifier. + + If any changed + key is logically in the down state, X.MappingBusy is returned and + the mapping is not changed. If the mapping violates some server + restriction, X.MappingFailed is returned. Otherwise the mapping + is changed and X.MappingSuccess is returned.""" + r = request.SetModifierMapping(display = self.display, + keycodes = keycodes) + return r.status + + def get_modifier_mapping(self): + """Return a list of eight lists, one for each modifier. The list + can be indexed using X.ShiftMapIndex, X.Mod1MapIndex, and so on. + The sublists list the keycodes bound to that modifier.""" + r = request.GetModifierMapping(display = self.display) + return r.keycodes + + def no_operation(self, onerror = None): + """Do nothing but send a request to the server.""" + request.NoOperation(display = self.display, + onerror = onerror) diff --git a/myenv/lib/python3.10/site-packages/Xlib/error.py b/myenv/lib/python3.10/site-packages/Xlib/error.py new file mode 100644 index 0000000..2d27722 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/error.py @@ -0,0 +1,160 @@ +# Xlib.error -- basic error classes +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +# Xlib modules +from . import X + +# Xlib.protocol modules +from .protocol import rq + + +class DisplayError(Exception): + def __init__(self, display): + self.display = display + + def __str__(self): + return 'Display error "%s"' % self.display + +class DisplayNameError(DisplayError): + def __str__(self): + return 'Bad display name "%s"' % self.display + +class DisplayConnectionError(DisplayError): + def __init__(self, display, msg): + self.display = display + self.msg = msg + + def __str__(self): + return 'Can\'t connect to display "%s": %s' % (self.display, self.msg) + +class ConnectionClosedError(Exception): + def __init__(self, whom): + self.whom = whom + + def __str__(self): + return 'Display connection closed by %s' % self.whom + + +class XauthError(Exception): pass +class XNoAuthError(Exception): pass + +class ResourceIDError(Exception): pass + + +class XError(rq.GetAttrData, Exception): + _fields = rq.Struct( rq.Card8('type'), # Always 0 + rq.Card8('code'), + rq.Card16('sequence_number'), + rq.Card32('resource_id'), + rq.Card16('minor_opcode'), + rq.Card8('major_opcode'), + rq.Pad(21) + ) + + def __init__(self, display, data): + self._data, _ = self._fields.parse_binary(data, display, rawdict = True) + + def __str__(self): + s = [] + for f in ('code', 'resource_id', 'sequence_number', + 'major_opcode', 'minor_opcode'): + s.append('{0} = {1}'.format(f, self._data[f])) + + return '{0}: {1}'.format(self.__class__, ', '.join(s)) + +class XResourceError(XError): + _fields = rq.Struct( rq.Card8('type'), # Always 0 + rq.Card8('code'), + rq.Card16('sequence_number'), + rq.Resource('resource_id'), + rq.Card16('minor_opcode'), + rq.Card8('major_opcode'), + rq.Pad(21) + ) + +class BadRequest(XError): pass +class BadValue(XError): pass +class BadWindow(XResourceError): pass +class BadPixmap(XResourceError): pass +class BadAtom(XError): pass +class BadCursor(XResourceError): pass +class BadFont(XResourceError): pass +class BadMatch(XError): pass +class BadDrawable(XResourceError): pass +class BadAccess(XError): pass +class BadAlloc(XError): pass +class BadColor(XResourceError): pass +class BadGC(XResourceError): pass +class BadIDChoice(XResourceError): pass +class BadName(XError): pass +class BadLength(XError): pass +class BadImplementation(XError): pass + +xerror_class = { + X.BadRequest: BadRequest, + X.BadValue: BadValue, + X.BadWindow: BadWindow, + X.BadPixmap: BadPixmap, + X.BadAtom: BadAtom, + X.BadCursor: BadCursor, + X.BadFont: BadFont, + X.BadMatch: BadMatch, + X.BadDrawable: BadDrawable, + X.BadAccess: BadAccess, + X.BadAlloc: BadAlloc, + X.BadColor: BadColor, + X.BadGC: BadGC, + X.BadIDChoice: BadIDChoice, + X.BadName: BadName, + X.BadLength: BadLength, + X.BadImplementation: BadImplementation, + } + + +class CatchError(object): + def __init__(self, *errors): + self.error_types = errors + self.error = None + self.request = None + + def __call__(self, error, request): + if self.error_types: + for etype in self.error_types: + if isinstance(error, etype): + self.error = error + self.request = request + return 1 + + return 0 + else: + self.error = error + self.request = request + return 1 + + def get_error(self): + return self.error + + def get_request(self): + return self.request + + def reset(self): + self.error = None + self.request = None diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__init__.py b/myenv/lib/python3.10/site-packages/Xlib/ext/__init__.py new file mode 100644 index 0000000..394c92c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/__init__.py @@ -0,0 +1,46 @@ +# Xlib.ext.__init__ -- X extension modules +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +# __extensions__ is a list of tuples: (extname, extmod) +# extname is the name of the extension according to the X +# protocol. extmod is the name of the module in this package. + +__extensions__ = [ + # We load this first so other extensions can register generic event data + # structures. + ('Generic Event Extension', 'ge'), + ('XTEST', 'xtest'), + ('SHAPE', 'shape'), + ('XINERAMA', 'xinerama'), + ('RECORD', 'record'), + ('Composite', 'composite'), + ('RANDR', 'randr'), + ('XFIXES', 'xfixes'), + ('SECURITY', 'security'), + ('XInputExtension', 'xinput'), + ('NV-CONTROL', 'nvcontrol'), + ('DAMAGE', 'damage'), + ('DPMS', 'dpms'), + ('X-Resource', 'res'), + ('MIT-SCREEN-SAVER', 'screensaver'), + ] + +__all__ = map(lambda x: x[1], __extensions__) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..583a161fcb12cec0923a431d604dcb72ee823b64 GIT binary patch literal 682 zcmYjP&2G~`5MDcpaZ;5cgoMheS056CxT30&vy@20sq9dhy{sJXl32C9*6unu5jVK= z4%~PpUpes#oS1EC#Yi(de>?NdXvFdH2muZKX8YYi=$A46rydv=!0H8v4PxkrMG&`` z#q4j0qpvoxSuaLj-#hW_!}CjCahYdlc*iS!hFi@mm5ZvgH{7$yAX(vfMF!wj+Su{C z=@sqlf0cLI3`Z}DQ~$l9bz1Oh~}%0ovV1($XxHidy>qny3r4C;X`g5FwrQy z9tX>C6)oSBVYSOdrKKoL?HS;_#Kd8M@^-rZ>}nB{KC4UUbQmS$h%3>^jCVb0njfAl z=BsfWL>PzTczTT^a-=fJVMXbV%glle-;>d8-~d>;Aif}Gog!GY9sV}KpUAU1tCc2p zEB>_pR+QXlTiNXV8CN%2)PB9!TT#(keCCp_8?C{h>r`<@sce*HkVm!HYzi*@a?h)s zU*zk5-(F8%z4XnN$90vyMOq93Ur!=o}P3ffGckY`aE!QkPpBS_Twu|HuJfYVk tk12)xyE9OfcD*vKyGN9!MF9{V;NNNH7NJ}zSX1zGGpFjCa;Hz9{RK?BzM}vD literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/composite.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/composite.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..62c2ecf73f3a24eba756a2a8b15a7724bcc6401b GIT binary patch literal 6104 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/damage.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/damage.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef4f73c69f6a89a75880ca890b5d2a970ae362a0 GIT binary patch literal 4244 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 L^+FWYqe}IAX&q`+ literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/dpms.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/dpms.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3efea124a2f1a02ec6cd41f7b95994fb13268cbe GIT binary patch literal 4707 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 MTtCwYFSY#t07Z)uO8@`> literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/nvcontrol.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/nvcontrol.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f11866ce5ebed221215d146c953571f389fe5216 GIT binary patch literal 63112 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/randr.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/randr.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3679302382d76a6b82cf4aa4f2355bdb873a2c22 GIT binary patch literal 27492 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/record.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/record.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..56c14bd9b3ffe60c602187c4415d071277d8c4e4 GIT binary patch literal 7006 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/res.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/res.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dfbd461a7c26a023f117b4157869ced38de269d2 GIT binary patch literal 7273 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/screensaver.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/screensaver.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..08b898f8cf40235df1c0f1d9488626d6a798f874 GIT binary patch literal 4823 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xfixes.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xfixes.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..500fefba2e2dc325df9ee804f77cbb01b217a82a GIT binary patch literal 5421 zcmb7IOLyDG6$U^M1Ydekv?R+f`Vq&>!?fep^-0rIsr-n~ap}Zr8y{>?nlln1lLS2g zC9_9e^fX;$;YFA2%Gy)dE_vq8+y~}y@11)u;1`QI z4Zm!y-}?6{P5T!i<3AI~Dq3(u*EFU%8q=B4);oq{=o(8oDW*FnGo3V=#nMiOS&ofy z7W5qYJZJ@si+41ZVfL3Av$?S~^T(7k%d#x@rRL0mlV=5R3gFCxQ({Fn1I_|CvuqBW zxtLRC^Q;8UF>n@G8Ju#=S!Bo9A~;LnEU{&9mcd!ZY{x-4&Q?HK;m3im06)P_0zawn z6TnZg)4)$F{3P%*tOC3e&wYxWW#=&WX>iW73*cM;ht6<@y~QqqQvv5~b_twI@v3K8 zmAwPbIri?lR(9u)>cf&^L`Q3`YQ3+eT^6>WEhqu-%{AtL$ z0qB=2mHXZHK=D5H7+>p)z!#N9m*v)5{!WYv{-n=?Fd%wmows?D=B)dnw=t;jZ7c$o z;FX^6w=oI3oI4=%R&{BJCyo^@dH~yM2L=JMcN6W z;5S^5cBJL^nm*%#wl0gE#+EPK?U+~Wc-;gQDH53tNK@S=cf0-0BQ6f+K&@A2rR}=i zMu)qu%(-sIXZ<#f3$FX5-)Ki1L8_6~dMNtMP^Q-!g58kTeYF8ud=Q!79`A03Eol+= z+6S06HjT_a;Jx->4V#sz&l)U}xO!dY6@B;^#38k>i50A+z_;7Amfztu))M{g+D#rj z4*g!OHwasP*X{W`T)2<=VF<*1)Cf3pUC|Fh201tMH#gf{)H(y+-LAF0NAY9VE?>P; z3%roO-)l42Zgje*Dz(I$`u zsG4dOaS~&>u*pMrbVpoecbNf!EVZvoGvMuwM2F%8Jye9{#bD?jAA=N7)U))QZs2cy zFU|s;a(mjrD%y(=0N&i~_bB?&@zOGvTwHai1B6&O(vH_<{!V>ACknttk-!WA@-s0@ zfV@-86DR>l>kIXWC=+GmA<>AAD9!`iLVH0oj@j&c#hJ1YshuqJf|NRGpeZA|ePorlAP z#`Q>dEj*+yPC++SL_kb|L61v2=s$8*0wn*6OrG|4 zx?HH!%WUX%P!}{hJ!c^~?TC0l_pn-+@CccXrZi~EBn&MPn)t*bP?>QzJl{b8#u1kF!BRQHya2U5ra;RV=Hbnc@i*&lFFnM?674!}6-nv4ZMnS&^r< zX7-G|qBF;4VB1+abBBkqVLPY|qX?YFu2lssD9}j#sniEDz2h;ebz9uqY=w^bwB-X1 z0L5*R|0#e|h_&v~WcBL&9064?(L=)fOL-hXoaviMVkp{57FlE?0i@v8dcZTY+bpDb1HiKiVKs; z`ot;6>_hJ{D%?7ym^D^tk7(mX>dN62hTcZykFyl>Cf%^Q;FObhtp;OmhvV&&snSTj zGpQ0@)x9eCDMxh{4?lxSMSX~H@*AEA@b*SuCFHS(x9NRzl<^`zlc$E{BQw3q*z(*^ zCN6M~$jd6l-s?q2Q0V=m;`W88dDh-vbl^vCpRB;eFnToCy5|t^GD#t7^iX+ng zDEgf9F%^{om2>7|A#ED?>#8BR4*QZ}&zCZGrexW6DQ#y<_FQq!oHI)%aN91ItU~U; DNEEEc literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xinerama.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xinerama.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0abde4c9501b255ef4bd46c5e99668f513efb9ec GIT binary patch literal 5434 zcmcIo&2!tv6$d~N1i$oU*|C#2L7cWO8=H)q)OFfUE5~Uvnn~2w%A^|1v>1rH6d{8E zy}OjGjMGbV=q0EA16FVDpU`9fgkCy>LoYq)>_a9_ll1o%5J^!|D<4A6K5+N#V&A^s z`&y>WX3fB-+8Oo#^@3sin>y1U8=Vz2nSn6FH<-z+*c@2CH7NNd(_kgve$QYwD}QRR zGPkzNe=PY9b6Dk5!>@qjvMM;$g5$CptAkSor@@-wGz(6R&9QlK>fkJ}MQ|1iPJ=D6 zbKo?=S!U6KWS79XRB#s9^Xvt17QuOuT?XfJ!C7K2v6sO)$2|55 zp3CgYy3u+yJg^L7BTBdk2cdV}8;W!%V%!V6T`r}kQcv}{H=e*BD4xhDO}r@SrD6~& z{BGB3ANIMxB5KNuc_)du3+p zr_0Lw=Dy=si&Zr}%Vmz{)>%bA8+x?P^0oExS{G|8ev?(}T{Jlr_Y^X4U4Uee`3G8$}haj*>5T5B$IgCGe9JP5K{ z5DZc_is^SF2=2pMbB>_bWKM1ZS@}*V*saX@m6jrF-px(=eV%NoepdQ*$neg>&a>)W zK8*M7K-|osbvJHibv;x}cQ6wZ9vk8k_R!?%gHAsk@DA&X(N5b~fVfS9R#bsxM zxQJ<;2So&I5BCJc{@2jtcR*ajHeGxjOJ6dPSEMeE6Z?4%!_w`8hY2oX9B|LPGnLo{0L6bd@Gnv0j zCcJOYnERnYH^>>_2+hI?a&w;}XMl^$vkJ7~X6}1jt&@Z2Y9QTY&Tf>jbT=z&&le<^ zAm?0bErtSh zT4nvpeDp;Oh|3_E6){25Ov$V9u9A^xRec2R6BmTAwoT`2(L(22L;5i6)eEHaz^1K& za4(RaE0CTeq`S!6$(RNJdqLw4+y5_45!t{T7TjSPgHh`g5!fe{E#VF^cQa$GOuUlpvx8 zF>`Vdb%@h`n>lfwBg(rGL#lB4Jlg831Hyf+^=#1Q+2oBMPC=}FSiAJ8j(i=Nm!Q-7&yPy(?()Y+elTo~4q@E4cEw zf~z1StkUI7L;GXwn>jm?#7$z#nXh2@8Ok@I-St##b)r8NMLPQ5(Po?(@&0J(_NAbi zN8&tL${52F<2=Rq(kB)(VBj;Q+iffcu=LUyU{T>w#1=F|yhUUtV7nBs>4y6cFvl)! znYFLQ+ZZ__qlJO7j6HN78jtiJR?6HjnR&0oY-LUL%D9D0c#g8iJ(E>bd8+3sXR23K z73%5J*4Ff?{0oP-C)^gN?iqO%w=`zz6hwu+f9dGhR1M@`Jc&ga%b&bx9PWJpR$bq{g>GNm? zT|IIcb%jagVO|SpX?4P&IG;xl3IMsuk)dc2ri@EVuS){=XZbz<=M<*&UDv*_FmGE+ XC3ktL;w}_zd8zKsFS+QWHOl`5j1##V literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xinput.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xinput.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9e1710cbdb52eabcdce618d72608f35feeed231 GIT binary patch literal 17337 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 a=UicV;Z1M`#<=OD^+MPJ)7Fpj>Hh`qCJrM2 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xtest.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/ext/__pycache__/xtest.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe7cdb28233a1f6c0206da33560bdf3b11846116 GIT binary patch literal 3117 zcma)8TW{Mo6c%-}EXz*fq?g@q*amNC-3wN9TQLO9x}v+dMO$ozfI)CfCb4TsmKrP-^oh77Sg#7H;UCtP$Cvo>V-_#LbA{L8SuZ@7`6^$- z7%Th)KZ$RhpSoi;PVZr+R)cAF56YGgV(;GFYj^JMF*J9`w)oKM*CE*tP{N8Cw_;m3 zPh5z{*^J@qbK87NGt0C(rWSD5e9PRMv6&xZWv17>-Q&4mnfrx*Y2P2d0S`>S3NK^U zp$@ML^{tRuHyvs}9d%MJBu!aY2kl-elil1V-MpX$~`DN|jG_%mv+cbKn zz81r6wWFO|ZLWQCIe!Ub%iO4alt%r@ZWQkM&)o{(&@+Fk@>b6h`<|u}g z-^658m(W1rZ#de`M1M=Ec+fFV9L6>kq$;} zDK^G3!(vQq40Qd6-62mOYQJMFSUN%=%b4HZt5B`Rij44;RZ=xllo7c^YMImuDR33= z`kfgn_KTm`)abTuwyxp#V=2W@6_yj!XO+|%DcTte@il;@Aj>zQK7wRa+egkabDu?} z0ylpfuMYie{v5!}+h{$48LQ_`8KLG!dusQ*0y_pAd2HT7FG*b+z8OC^5&q;WP}=Tt z`3{*KNntXsnjJw&t&@j6$)mdg*NnnRKyeLFd{=&eh7RPwL$O_lWWPWi7b@Hp zKq5#LQrq%o4xq6Qk(@u53#hE{61?hLY(`AGL_CP^DlZq`umBeEV-&CP3ZfP1@)zy< z;>K_^RwiJ36n`CxT_ibClaa`Y(dR<7yM67d?m%c)rm5Pa-Kg0k%_gnJiDQGyxg(UM zpTxmeVscB0EQ>>wZi~JES;dvBhPrY?HLuKV(Ko5WK5s#9O$_dUQ4r?E3-VozDBq)D zy&FSy{*pA%d`_7;Dh(DtgwvOhjJ)SqjF83ReHM6x$XdZ{DE}d;PlqUI{!p2S!T^B= zI)Y5F+0>c3Q*Y`6p8=ihIXZ&{be=&^NvtEAq|TALKF62b&o~~S% z?ahsJsASsD!RBB{9d-wR*={!-XRSu%xIl{Ct0{(A#RxCX^(9!lkcK5&m`Fn zunmEdjyRK3B7>tjMJDN9R%Fsy$mC`CBVjb?;e^?F!pP%rUZQP8BsruHdTK5 zg#XBoQF-wcufRIBp5XGxZN+Aon5jA3Rrd25;~oyzxs7pOxl}VtD7DN~;}vtlCkqFm zB-)JE^7ez&7cb|n`-qC`MgN7hG`x6i|6Fc!o(u%8C)^yThA0i#%nBPeuDLktwc8zT zrH4a=#;)4MbWCV!*q1d{XYy0Dv>L0iOV^Z~PpVWrJCdnNJ3t0u%W%AWpB59{rfXDj z<;t%RbhPJ(0x`EP&5g9{;!1JS-38$pV#z0L5=?n9Ggz4H^TSRDSMtl?XLQXpccthA b_{DbZx*e?4OF^w(@>c^E{#(bTDf0dUEgPEd literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/composite.py b/myenv/lib/python3.10/site-packages/Xlib/ext/composite.py new file mode 100644 index 0000000..f956c62 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/composite.py @@ -0,0 +1,271 @@ +# $Id: xtest.py,v 1.1 2000/08/21 10:03:45 petli Exp $ +# +# Xlib.ext.composite -- Composite extension module +# +# Copyright (C) 2007 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +"""Composite extension, allowing windows to be rendered to off-screen +storage. + +For detailed description, see the protocol specification at +http://freedesktop.org/wiki/Software/CompositeExt + +By itself this extension is not very useful, it is intended to be used +together with the DAMAGE and XFIXES extensions. Typically you would +also need RENDER or glX or some similar method of creating fancy +graphics. +""" + +from Xlib.protocol import rq +from Xlib.xobject import drawable + +extname = 'Composite' + +RedirectAutomatic = 0 +RedirectManual = 1 + +class QueryVersion(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card32('major_version'), + rq.Card32('minor_version') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('major_version'), + rq.Card32('minor_version'), + rq.Pad(16), + ) + +def query_version(self): + return QueryVersion( + display = self.display, + opcode = self.display.get_extension_major(extname), + major_version=0, + minor_version=4 + ) + + +class RedirectWindow(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(1), + rq.RequestLength(), + rq.Window('window'), + rq.Set('update', 1, (RedirectAutomatic, RedirectManual)), + rq.Pad(3), + ) + +def redirect_window(self, update, onerror = None): + """Redirect the hierarchy starting at this window to off-screen + storage. + """ + RedirectWindow(display = self.display, + onerror = onerror, + opcode = self.display.get_extension_major(extname), + window = self, + update = update, + ) + + +class RedirectSubwindows(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + rq.Window('window'), + rq.Set('update', 1, (RedirectAutomatic, RedirectManual)), + rq.Pad(3), + ) + +def redirect_subwindows(self, update, onerror = None): + """Redirect the hierarchies starting at all current and future + children to this window to off-screen storage. + """ + RedirectSubwindows(display = self.display, + onerror = onerror, + opcode = self.display.get_extension_major(extname), + window = self, + update = update, + ) + + +class UnredirectWindow(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(3), + rq.RequestLength(), + rq.Window('window'), + rq.Set('update', 1, (RedirectAutomatic, RedirectManual)), + rq.Pad(3), + ) + +def unredirect_window(self, update, onerror = None): + """Stop redirecting this window hierarchy. + """ + UnredirectWindow(display = self.display, + onerror = onerror, + opcode = self.display.get_extension_major(extname), + window = self, + update = update, + ) + + +class UnredirectSubindows(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength(), + rq.Window('window'), + rq.Set('update', 1, (RedirectAutomatic, RedirectManual)), + rq.Pad(3), + ) + +def unredirect_subwindows(self, update, onerror = None): + """Stop redirecting the hierarchies of children to this window. + """ + RedirectWindow(display = self.display, + onerror = onerror, + opcode = self.display.get_extension_major(extname), + window = self, + update = update, + ) + + +class CreateRegionFromBorderClip(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(5), + rq.RequestLength(), + rq.Card32('region'), # FIXME: this should be a Region from XFIXES extension + rq.Window('window'), + ) + +def create_region_from_border_clip(self, onerror = None): + """Create a region of the border clip of the window, i.e. the area + that is not clipped by the parent and any sibling windows. + """ + + rid = self.display.allocate_resource_id() + CreateRegionFromBorderClip( + display = self.display, + onerror = onerror, + opcode = self.display.get_extension_major(extname), + region = rid, + window = self, + ) + + # FIXME: create Region object and return it + return rid + + +class NameWindowPixmap(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(6), + rq.RequestLength(), + rq.Window('window'), + rq.Pixmap('pixmap'), + ) + +def name_window_pixmap(self, onerror = None): + """Create a new pixmap that refers to the off-screen storage of + the window, including its border. + + This pixmap will remain allocated until freed whatever happens + with the window. However, the window will get a new off-screen + pixmap every time it is mapped or resized, so to keep track of the + contents you must listen for these events and get a new pixmap + after them. + """ + + pid = self.display.allocate_resource_id() + NameWindowPixmap(display = self.display, + onerror = onerror, + opcode = self.display.get_extension_major(extname), + window = self, + pixmap = pid, + ) + + cls = self.display.get_resource_class('pixmap', drawable.Pixmap) + return cls(self.display, pid, owner = 1) + +class GetOverlayWindow(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(7), + rq.RequestLength(), + rq.Window('window') + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('overlay_window'), + rq.Pad(20), + ) + +def get_overlay_window(self): + """Return the overlay window of the root window. + """ + + return GetOverlayWindow(display = self.display, + opcode = self.display.get_extension_major(extname), + window = self) + +def init(disp, info): + disp.extension_add_method('display', + 'composite_query_version', + query_version) + + disp.extension_add_method('window', + 'composite_redirect_window', + redirect_window) + + disp.extension_add_method('window', + 'composite_redirect_subwindows', + redirect_subwindows) + + disp.extension_add_method('window', + 'composite_unredirect_window', + unredirect_window) + + disp.extension_add_method('window', + 'composite_unredirect_subwindows', + unredirect_subwindows) + + disp.extension_add_method('window', + 'composite_create_region_from_border_clip', + create_region_from_border_clip) + + disp.extension_add_method('window', + 'composite_name_window_pixmap', + name_window_pixmap) + + disp.extension_add_method('window', + 'composite_get_overlay_window', + get_overlay_window) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/damage.py b/myenv/lib/python3.10/site-packages/Xlib/ext/damage.py new file mode 100644 index 0000000..614c808 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/damage.py @@ -0,0 +1,181 @@ +# Xlib.ext.damage -- DAMAGE extension module +# +# Copyright (C) 2018 Joseph Kogut +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + + +from Xlib import X +from Xlib.protocol import rq, structs +from Xlib.error import XError + +extname = 'DAMAGE' + +# Event codes # +DamageNotifyCode = 0 + +# Error codes # +BadDamageCode = 0 + +class BadDamageError(XError): + pass + +# DamageReportLevel options +DamageReportRawRectangles = 0 +DamageReportDeltaRectangles = 1 +DamageReportBoundingBox = 2 +DamageReportNonEmpty = 3 + +DamageReportLevel = ( + DamageReportRawRectangles, + DamageReportDeltaRectangles, + DamageReportBoundingBox, + DamageReportNonEmpty, +) + +DAMAGE = rq.Card32 + +# Methods + +class QueryVersion(rq.ReplyRequest): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card32('major_version'), + rq.Card32('minor_version'), + ) + + _reply = rq.Struct(rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('major_version'), + rq.Card32('minor_version'), + rq.Pad(16), + ) + +def query_version(self): + return QueryVersion(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1) + +class DamageCreate(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(1), + rq.RequestLength(), + DAMAGE('damage'), + rq.Drawable('drawable'), + rq.Set('level', 1, DamageReportLevel), + rq.Pad(3), + ) + +def damage_create(self, level): + did = self.display.allocate_resource_id() + DamageCreate(display=self.display, + opcode=self.display.get_extension_major(extname), + damage=did, + drawable=self.id, + level=level, + ) + return did + +class DamageDestroy(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + DAMAGE('damage') + ) + +def damage_destroy(self, damage): + DamageDestroy(display=self.display, + opcode=self.display.get_extension_major(extname), + damage=damage, + ) + + self.display.free_resource_id(damage) + +class DamageSubtract(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(3), + rq.RequestLength(), + DAMAGE('damage'), + rq.Card32('repair'), + rq.Card32('parts') + ) + +def damage_subtract(self, damage, repair=X.NONE, parts=X.NONE): + DamageSubtract(display=self.display, + opcode=self.display.get_extension_major(extname), + damage=damage, + repair=repair, + parts=parts) + +class DamageAdd(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength(), + rq.Card32('repair'), + rq.Card32('parts'), + ) + +def damage_add(self, repair, parts): + DamageAdd(display=self.display, + opcode=self.display.get_extension_major(extname), + repair=repair, + parts=parts) + +# Events # + +class DamageNotify(rq.Event): + _code = None + _fields = rq.Struct( + rq.Card8('type'), + rq.Card8('level'), + rq.Card16('sequence_number'), + rq.Drawable('drawable'), + DAMAGE('damage'), + rq.Card32('timestamp'), + rq.Object('area', structs.Rectangle), + rq.Object('drawable_geometry', structs.Rectangle) + ) + +def init(disp, info): + disp.extension_add_method('display', + 'damage_query_version', + query_version) + + disp.extension_add_method('drawable', + 'damage_create', + damage_create) + + disp.extension_add_method('display', + 'damage_destroy', + damage_destroy) + + disp.extension_add_method('display', + 'damage_subtract', + damage_subtract) + + disp.extension_add_method('drawable', + 'damage_add', + damage_add) + + disp.extension_add_event(info.first_event + DamageNotifyCode, DamageNotify) + + disp.extension_add_error(code=BadDamageCode, err=BadDamageError) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/dpms.py b/myenv/lib/python3.10/site-packages/Xlib/ext/dpms.py new file mode 100644 index 0000000..5804169 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/dpms.py @@ -0,0 +1,232 @@ +# Xlib.ext.dpms -- X Display Power Management Signaling +# +# Copyright (C) 2020 Thiago Kenji Okada +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +''' +This extension provides X Protocol control over the VESA Display +Power Management Signaling (DPMS) characteristics of video boards +under control of the X Window System. + +Documentation: https://www.x.org/releases/X11R7.7/doc/xextproto/dpms.html +''' + +from Xlib.protocol import rq + +extname = 'DPMS' + + +# DPMS Extension Power Levels +# 0 DPMSModeOn In use +# 1 DPMSModeStandby Blanked, low power +# 2 DPMSModeSuspend Blanked, lower power +# 3 DPMSModeOff Shut off, awaiting activity +DPMSModeOn = 0 +DPMSModeStandby = 1 +DPMSModeSuspend = 2 +DPMSModeOff = 3 + +DPMSPowerLevel = ( + DPMSModeOn, + DPMSModeStandby, + DPMSModeSuspend, + DPMSModeOff, +) + + +class DPMSGetVersion(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card16('major_version'), + rq.Card16('minor_version'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('major_version'), + rq.Card16('minor_version'), + rq.Pad(20), + ) + + +def get_version(self): + return DPMSGetVersion(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1) + + +class DPMSCapable(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Bool('capable'), + rq.Pad(23), + ) + + +def capable(self): + return DPMSCapable(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1) + + +class DPMSGetTimeouts(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('standby_timeout'), + rq.Card16('suspend_timeout'), + rq.Card16('off_timeout'), + rq.Pad(18), + ) + + +def get_timeouts(self): + return DPMSGetTimeouts(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1) + + +class DPMSSetTimeouts(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(3), + rq.RequestLength(), + rq.Card16('standby_timeout'), + rq.Card16('suspend_timeout'), + rq.Card16('off_timeout'), + rq.Pad(2) + ) + + +def set_timeouts(self, standby_timeout, suspend_timeout, off_timeout): + return DPMSSetTimeouts(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1, + standby_timeout=standby_timeout, + suspend_timeout=suspend_timeout, + off_timeout=off_timeout) + + +class DPMSEnable(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength(), + ) + + +def enable(self): + return DPMSEnable(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1) + + +class DPMSDisable(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(5), + rq.RequestLength(), + ) + + +def disable(self): + return DPMSDisable(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1) + + +class DPMSForceLevel(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(6), + rq.RequestLength(), + rq.Resource('power_level', DPMSPowerLevel), + ) + + +def force_level(self, power_level): + return DPMSForceLevel(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1, + power_level=power_level) + + +class DPMSInfo(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(7), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('power_level'), + rq.Bool('state'), + rq.Pad(21), + ) + + +def info(self): + return DPMSInfo(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1) + + +def init(disp, _info): + disp.extension_add_method('display', 'dpms_get_version', get_version) + disp.extension_add_method('display', 'dpms_capable', capable) + disp.extension_add_method('display', 'dpms_get_timeouts', get_timeouts) + disp.extension_add_method('display', 'dpms_set_timeouts', set_timeouts) + disp.extension_add_method('display', 'dpms_enable', enable) + disp.extension_add_method('display', 'dpms_disable', disable) + disp.extension_add_method('display', 'dpms_force_level', force_level) + disp.extension_add_method('display', 'dpms_info', info) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/ge.py b/myenv/lib/python3.10/site-packages/Xlib/ext/ge.py new file mode 100644 index 0000000..85d2d01 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/ge.py @@ -0,0 +1,112 @@ +# Xlib.ext.ge -- Generic Event extension module +# +# Copyright (C) 2012 Outpost Embedded, LLC +# Forest Bond +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +''' +ge - Generic Event Extension +''' + +from Xlib.protocol import rq + +extname = 'Generic Event Extension' + + +GenericEventCode = 35 + + +class GEQueryVersion(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card32('major_version'), + rq.Card32('minor_version'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('major_version'), + rq.Card32('minor_version'), + rq.Pad(16), + ) + + +def query_version(self): + return GEQueryVersion( + display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=0, + ) + + +class GenericEvent(rq.Event): + _code = GenericEventCode + _fields = rq.Struct( + rq.Card8('type'), + rq.Card8('extension'), + rq.Card16('sequence_number'), + rq.Card32('length'), + rq.Card16('evtype'), + # Some generic events make use of this space, but with + # others the data is simply discarded. In any case we + # don't need to explicitly pad this out as we are + # always given at least 32 bytes and we save + # everything after the first ten as the "data" field. + #rq.Pad(22), + ) + + def __init__(self, binarydata = None, display = None, **keys): + if binarydata: + data = binarydata[10:] + binarydata = binarydata[:10] + else: + data = '' + + rq.Event.__init__( + self, + binarydata=binarydata, + display=display, + **keys + ) + + if display: + ge_event_data = getattr(display, 'ge_event_data', None) + if ge_event_data: + estruct = ge_event_data.get((self.extension, self.evtype), None) + if estruct: + data, _ = estruct.parse_binary(data, display) + + self._data['data'] = data + + +def add_event_data(self, extension, evtype, estruct): + if not hasattr(self.display, 'ge_event_data'): + self.display.ge_event_data = {} + self.display.ge_event_data[(extension, evtype)] = estruct + + +def init(disp, info): + disp.extension_add_method('display', 'ge_query_version', query_version) + disp.extension_add_method('display', 'ge_add_event_data', add_event_data) + disp.extension_add_event(GenericEventCode, GenericEvent) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/nvcontrol.py b/myenv/lib/python3.10/site-packages/Xlib/ext/nvcontrol.py new file mode 100644 index 0000000..3b0bfb6 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/nvcontrol.py @@ -0,0 +1,5393 @@ +# Xlib.ext.nvcontrol -- NV-CONTROL extension module +# +# Copyright (C) 2019 Roberto Leinardi +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + + +"""NV-CONTROL - provide access to the NV-CONTROL extension information.""" + +from Xlib.protocol import rq + +extname = 'NV-CONTROL' + + +def query_target_count(self, target): + """Return the target count""" + reply = NVCtrlQueryTargetCountReplyRequest(display=self.display, + opcode=self.display.get_extension_major(extname), + target_type=target.type()) + return int(reply._data.get('count')) + + +def query_int_attribute(self, target, display_mask, attr): + """Return the value of an integer attribute""" + reply = NVCtrlQueryAttributeReplyRequest(display=self.display, + opcode=self.display.get_extension_major(extname), + target_id=target.id(), + target_type=target.type(), + display_mask=display_mask, + attr=attr) + if not reply._data.get('flags'): + return None + return int(reply._data.get('value')) + + +def set_int_attribute(self, target, display_mask, attr, value): + """Set the value of an integer attribute""" + reply = NVCtrlSetAttributeAndGetStatusReplyRequest(display=self.display, + opcode=self.display.get_extension_major(extname), + target_id=target.id(), + target_type=target.type(), + display_mask=display_mask, + attr=attr, + value=value) + return reply._data.get('flags') != 0 + + +def query_string_attribute(self, target, display_mask, attr): + """Return the value of a string attribute""" + reply = NVCtrlQueryStringAttributeReplyRequest(display=self.display, + opcode=self.display.get_extension_major(extname), + target_id=target.id(), + target_type=target.type(), + display_mask=display_mask, + attr=attr) + if not reply._data.get('flags'): + return None + return str(reply._data.get('string')).strip('\0') + + +def query_valid_attr_values(self, target, display_mask, attr): + """Return the value of an integer attribute""" + reply = NVCtrlQueryValidAttributeValuesReplyRequest(display=self.display, + opcode=self.display.get_extension_major(extname), + target_id=target.id(), + target_type=target.type(), + display_mask=display_mask, + attr=attr) + if not reply._data.get('flags'): + return None + return int(reply._data.get('min')), int(reply._data.get('max')) + + +def query_binary_data(self, target, display_mask, attr): + """Return binary data""" + reply = NVCtrlQueryBinaryDataReplyRequest(display=self.display, + opcode=self.display.get_extension_major(extname), + target_id=target.id(), + target_type=target.type(), + display_mask=display_mask, + attr=attr) + if not reply._data.get('flags'): + return None + return reply._data.get('data') + + +def get_coolers_used_by_gpu(self, target): + reply = NVCtrlQueryListCard32ReplyRequest(display=self.display, + opcode=self.display.get_extension_major(extname), + target_id=target.id(), + target_type=target.type(), + display_mask=0, + attr=NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU) + if not reply._data.get('flags'): + return None + fans = reply._data.get('list') + if len(fans) > 1: + return fans[1:] + else: + return None + + +def get_gpu_count(self): + """Return the number of GPU's present in the system.""" + return int(query_target_count(self, Gpu())) + + +def get_name(self, target): + """Return the GPU product name on which the specified X screen is running""" + return query_string_attribute(self, target, 0, NV_CTRL_STRING_PRODUCT_NAME) + + +def get_driver_version(self, target): + """Return the NVIDIA (kernel level) driver version for the specified screen or GPU""" + return query_string_attribute(self, target, 0, NV_CTRL_STRING_NVIDIA_DRIVER_VERSION) + + +def get_vbios_version(self, target): + """Return the version of the VBIOS for the specified screen or GPU""" + return query_string_attribute(self, target, 0, NV_CTRL_STRING_VBIOS_VERSION) + + +def get_gpu_uuid(self, target): + return query_string_attribute(self, target, 0, NV_CTRL_STRING_GPU_UUID) + + +def get_utilization_rates(self, target): + string = query_string_attribute(self, target, 0, NV_CTRL_STRING_GPU_UTILIZATION) + result = {} + if string is not None and string != '': + for line in string.split(','): + [key, value] = line.split('=')[:2] + result[key.strip()] = int(value) if value.isdigit() else value + return result + + +def get_performance_modes(self, target): + string = query_string_attribute(self, target, 0, NV_CTRL_STRING_PERFORMANCE_MODES) + result = [] + if string is not None and string != '': + for perf in string.split(';'): + perf_dict = {} + for line in perf.split(','): + [key, value] = line.split('=')[:2] + perf_dict[key.strip()] = int(value) if value.isdigit() else value + result.append(perf_dict) + return result + + +def get_clock_info(self, target): + string = query_string_attribute(self, target, 0, NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS) + result = {} + if string is not None and string != '': + for line in string.split(','): + [key, value] = line.split('=')[:2] + result[key.strip()] = int(value) if value.isdigit() else value + return result + + +def get_vram(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_VIDEO_RAM) + + +def get_irq(self, target): + """Return the interrupt request line used by the GPU driving the screen""" + return query_int_attribute(self, target, 0, NV_CTRL_IRQ) + + +def supports_framelock(self, target): + """Return whether the underlying GPU supports Frame Lock. + + All of the other frame lock attributes are only applicable if this returns True. + """ + return query_int_attribute(self, target, 0, NV_CTRL_FRAMELOCK) == 1 + + +def gvo_supported(self, screen): + """Return whether this X screen supports GVO + + If this screen does not support GVO output, then all other GVO attributes are unavailable. + """ + return query_int_attribute(self, screen, [], NV_CTRL_GVO_SUPPORTED) + + +def get_core_temp(self, target): + """Return the current core temperature of the GPU driving the X screen.""" + return query_int_attribute(self, target, 0, NV_CTRL_GPU_CORE_TEMPERATURE) + + +def get_core_threshold(self, target): + """Return the current GPU core slowdown threshold temperature. + + It reflects the temperature at which the GPU is throttled to prevent overheating. + """ + return query_int_attribute(self, target, 0, NV_CTRL_GPU_CORE_THRESHOLD) + + +def get_default_core_threshold(self, target): + """Return the default core threshold temperature.""" + return query_int_attribute(self, target, 0, NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD) + + +def get_max_core_threshold(self, target): + """Return the maximum core threshold temperature.""" + return query_int_attribute(self, target, 0, NV_CTRL_GPU_MAX_CORE_THRESHOLD) + + +def get_ambient_temp(self, target): + """Return the current temperature in the immediate neighbourhood of the GPU driving the X screen.""" + return query_int_attribute(self, target, 0, NV_CTRL_AMBIENT_TEMPERATURE) + + +def get_cuda_cores(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_GPU_CORES) + + +def get_memory_bus_width(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_GPU_MEMORY_BUS_WIDTH) + + +def get_total_dedicated_gpu_memory(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_TOTAL_DEDICATED_GPU_MEMORY) + + +def get_used_dedicated_gpu_memory(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_USED_DEDICATED_GPU_MEMORY) + + +def get_curr_pcie_link_width(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH) + + +def get_max_pcie_link_width(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH) + + +def get_curr_pcie_link_generation(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_GPU_PCIE_GENERATION) + + +def get_encoder_utilization(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_VIDEO_ENCODER_UTILIZATION) + + +def get_decoder_utilization(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_VIDEO_DECODER_UTILIZATION) + + +def get_current_performance_level(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL) + + +def get_gpu_nvclock_offset(self, target, perf_level): + return query_int_attribute(self, target, perf_level, NV_CTRL_GPU_NVCLOCK_OFFSET) + + +def set_gpu_nvclock_offset(self, target, perf_level, offset): + return set_int_attribute(self, target, perf_level, NV_CTRL_GPU_NVCLOCK_OFFSET, offset) + + +def set_gpu_nvclock_offset_all_levels(self, target, offset): + return set_int_attribute(self, target, 0, NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS, offset) + + +def get_gpu_nvclock_offset_range(self, target, perf_level): + return query_valid_attr_values(self, target, perf_level, NV_CTRL_GPU_NVCLOCK_OFFSET) + + +def get_mem_transfer_rate_offset(self, target, perf_level): + return query_int_attribute(self, target, perf_level, NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET) + + +def set_mem_transfer_rate_offset(self, target, perf_level, offset): + return set_int_attribute(self, target, perf_level, NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET, offset) + + +def set_mem_transfer_rate_offset_all_levels(self, target, offset): + return set_int_attribute(self, target, 0, NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS, offset) + + +def get_mem_transfer_rate_offset_range(self, target, perf_level): + return query_valid_attr_values(self, target, perf_level, NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET) + + +def get_cooler_manual_control_enabled(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_GPU_COOLER_MANUAL_CONTROL) + + +def set_cooler_manual_control_enabled(self, target, enabled): + return set_int_attribute(self, target, 0, NV_CTRL_GPU_COOLER_MANUAL_CONTROL, 1 if enabled else 0) == 1 + + +def get_fan_duty(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL) + + +def set_fan_duty(self, cooler, speed): + return set_int_attribute(self, cooler, 0, NV_CTRL_THERMAL_COOLER_LEVEL, speed) + + +def get_fan_rpm(self, target): + return query_int_attribute(self, target, 0, NV_CTRL_THERMAL_COOLER_SPEED) + + +def get_max_displays(self, target): + """Return the maximum number of display devices that can be driven simultaneously on a GPU. + + Note that this does not indicate the maximum number of bits that can be set in + NV_CTRL_CONNECTED_DISPLAYS, because more display devices can be connected than are actively + in use. + """ + return query_int_attribute(self, target, 0, NV_CTRL_MAX_DISPLAYS) + + +def _displaystr2num(st): + """Return a display number from a string""" + num = None + for s, n in [('DFP-', 16), ('TV-', 8), ('CRT-', 0)]: + if st.startswith(s): + try: + curnum = int(st[len(s):]) + if 0 <= curnum <= 7: + num = n + curnum + break + except Exception: + pass + if num is not None: + return num + else: + raise ValueError('Unrecognised display name: ' + st) + + +def _displays2mask(displays): + """Return a display mask from an array of display numbers.""" + mask = 0 + for d in displays: + mask += (1 << _displaystr2num(d)) + return mask + + +def init(disp, info): + disp.extension_add_method('display', 'nvcontrol_query_target_count', query_target_count) + disp.extension_add_method('display', 'nvcontrol_query_int_attribute', query_int_attribute) + disp.extension_add_method('display', 'nvcontrol_query_string_attribute', query_string_attribute) + disp.extension_add_method('display', 'nvcontrol_query_valid_attr_values', query_valid_attr_values) + disp.extension_add_method('display', 'nvcontrol_query_binary_data', query_binary_data) + disp.extension_add_method('display', 'nvcontrol_get_gpu_count', get_gpu_count) + disp.extension_add_method('display', 'nvcontrol_get_vram', get_vram) + disp.extension_add_method('display', 'nvcontrol_get_irq', get_irq) + disp.extension_add_method('display', 'nvcontrol_supports_framelock', supports_framelock) + disp.extension_add_method('display', 'nvcontrol_get_core_temp', get_core_temp) + disp.extension_add_method('display', 'nvcontrol_get_core_threshold', get_core_threshold) + disp.extension_add_method('display', 'nvcontrol_get_default_core_threshold', get_default_core_threshold) + disp.extension_add_method('display', 'nvcontrol_get_max_core_threshold', get_max_core_threshold) + disp.extension_add_method('display', 'nvcontrol_get_ambient_temp', get_ambient_temp) + disp.extension_add_method('display', 'nvcontrol_get_cuda_cores', get_cuda_cores) + disp.extension_add_method('display', 'nvcontrol_get_memory_bus_width', get_memory_bus_width) + disp.extension_add_method('display', 'nvcontrol_get_total_dedicated_gpu_memory', get_total_dedicated_gpu_memory) + disp.extension_add_method('display', 'nvcontrol_get_used_dedicated_gpu_memory', get_used_dedicated_gpu_memory) + disp.extension_add_method('display', 'nvcontrol_get_curr_pcie_link_width', get_curr_pcie_link_width) + disp.extension_add_method('display', 'nvcontrol_get_max_pcie_link_width', get_max_pcie_link_width) + disp.extension_add_method('display', 'nvcontrol_get_curr_pcie_link_generation', get_curr_pcie_link_generation) + disp.extension_add_method('display', 'nvcontrol_get_encoder_utilization', get_encoder_utilization) + disp.extension_add_method('display', 'nvcontrol_get_decoder_utilization', get_decoder_utilization) + disp.extension_add_method('display', 'nvcontrol_get_current_performance_level', get_current_performance_level) + disp.extension_add_method('display', 'nvcontrol_get_gpu_nvclock_offset', get_gpu_nvclock_offset) + disp.extension_add_method('display', 'nvcontrol_set_gpu_nvclock_offset', set_gpu_nvclock_offset) + disp.extension_add_method('display', 'nvcontrol_set_gpu_nvclock_offset_all_levels', set_gpu_nvclock_offset_all_levels) + disp.extension_add_method('display', 'nvcontrol_get_mem_transfer_rate_offset', get_mem_transfer_rate_offset) + disp.extension_add_method('display', 'nvcontrol_set_mem_transfer_rate_offset', set_mem_transfer_rate_offset) + disp.extension_add_method('display', 'nvcontrol_set_mem_transfer_rate_offset_all_levels', set_mem_transfer_rate_offset_all_levels) + disp.extension_add_method('display', 'nvcontrol_get_cooler_manual_control_enabled', + get_cooler_manual_control_enabled) + disp.extension_add_method('display', 'nvcontrol_get_fan_duty', get_fan_duty) + disp.extension_add_method('display', 'nvcontrol_set_fan_duty', set_fan_duty) + disp.extension_add_method('display', 'nvcontrol_get_fan_rpm', get_fan_rpm) + disp.extension_add_method('display', 'nvcontrol_get_coolers_used_by_gpu', get_coolers_used_by_gpu) + disp.extension_add_method('display', 'nvcontrol_get_max_displays', get_max_displays) + disp.extension_add_method('display', 'nvcontrol_get_name', get_name) + disp.extension_add_method('display', 'nvcontrol_get_driver_version', get_driver_version) + disp.extension_add_method('display', 'nvcontrol_get_vbios_version', get_vbios_version) + disp.extension_add_method('display', 'nvcontrol_get_gpu_uuid', get_gpu_uuid) + disp.extension_add_method('display', 'nvcontrol_get_utilization_rates', get_utilization_rates) + disp.extension_add_method('display', 'nvcontrol_get_performance_modes', get_performance_modes) + disp.extension_add_method('display', 'nvcontrol_get_clock_info', get_clock_info) + disp.extension_add_method('display', 'nvcontrol_set_cooler_manual_control_enabled', + set_cooler_manual_control_enabled) + disp.extension_add_method('display', 'nvcontrol_get_gpu_nvclock_offset_range', + get_gpu_nvclock_offset_range) + disp.extension_add_method('display', 'nvcontrol_get_mem_transfer_rate_offset_range', + get_mem_transfer_rate_offset_range) + + +############################################################################ +# +# Attributes +# +# Some attributes may only be read; some may require a display_mask +# argument and others may be valid only for specific target types. +# This information is encoded in the "permission" comment after each +# attribute #define, and can be queried at run time with +# XNVCTRLQueryValidAttributeValues() and/or +# XNVCTRLQueryValidTargetAttributeValues() +# +# Key to Integer Attribute "Permissions": +# +# R: The attribute is readable (in general, all attributes will be +# readable) +# +# W: The attribute is writable (attributes may not be writable for +# various reasons: they represent static system information, they +# can only be changed by changing an XF86Config option, etc). +# +# D: The attribute requires the display mask argument. The +# attributes NV_CTRL_CONNECTED_DISPLAYS and NV_CTRL_ENABLED_DISPLAYS +# will be a bitmask of what display devices are connected and what +# display devices are enabled for use in X, respectively. Each bit +# in the bitmask represents a display device; it is these bits which +# should be used as the display_mask when dealing with attributes +# designated with "D" below. For attributes that do not require the +# display mask, the argument is ignored. +# +# Alternatively, NV-CONTROL versions 1.27 and greater allow these +# attributes to be accessed via display target types, in which case +# the display_mask is ignored. +# +# G: The attribute may be queried using an NV_CTRL_TARGET_TYPE_GPU +# target type via XNVCTRLQueryTargetAttribute(). +# +# F: The attribute may be queried using an NV_CTRL_TARGET_TYPE_FRAMELOCK +# target type via XNVCTRLQueryTargetAttribute(). +# +# X: When Xinerama is enabled, this attribute is kept consistent across +# all Physical X Screens; assignment of this attribute will be +# broadcast by the NVIDIA X Driver to all X Screens. +# +# V: The attribute may be queried using an NV_CTRL_TARGET_TYPE_VCSC +# target type via XNVCTRLQueryTargetAttribute(). +# +# I: The attribute may be queried using an NV_CTRL_TARGET_TYPE_GVI target type +# via XNVCTRLQueryTargetAttribute(). +# +# Q: The attribute is a 64-bit integer attribute; use the 64-bit versions +# of the appropriate query interfaces. +# +# C: The attribute may be queried using an NV_CTRL_TARGET_TYPE_COOLER target +# type via XNVCTRLQueryTargetAttribute(). +# +# S: The attribute may be queried using an NV_CTRL_TARGET_TYPE_THERMAL_SENSOR +# target type via XNVCTRLQueryTargetAttribute(). +# +# T: The attribute may be queried using an +# NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER target type +# via XNVCTRLQueryTargetAttribute(). +# +# NOTE: Unless mentioned otherwise, all attributes may be queried using +# an NV_CTRL_TARGET_TYPE_X_SCREEN target type via +# XNVCTRLQueryTargetAttribute(). +# + + +############################################################################ + +# +# Integer attributes: +# +# Integer attributes can be queried through the XNVCTRLQueryAttribute() and +# XNVCTRLQueryTargetAttribute() function calls. +# +# Integer attributes can be set through the XNVCTRLSetAttribute() and +# XNVCTRLSetTargetAttribute() function calls. +# +# Unless otherwise noted, all integer attributes can be queried/set +# using an NV_CTRL_TARGET_TYPE_X_SCREEN target. Attributes that cannot +# take an NV_CTRL_TARGET_TYPE_X_SCREEN also cannot be queried/set through +# XNVCTRLQueryAttribute()/XNVCTRLSetAttribute() (Since these assume +# an X Screen target). +# + + +# +# NV_CTRL_FLATPANEL_SCALING - not supported +# + +NV_CTRL_FLATPANEL_SCALING = 2 # not supported +NV_CTRL_FLATPANEL_SCALING_DEFAULT = 0 # not supported +NV_CTRL_FLATPANEL_SCALING_NATIVE = 1 # not supported +NV_CTRL_FLATPANEL_SCALING_SCALED = 2 # not supported +NV_CTRL_FLATPANEL_SCALING_CENTERED = 3 # not supported +NV_CTRL_FLATPANEL_SCALING_ASPECT_SCALED = 4 # not supported + +# +# NV_CTRL_FLATPANEL_DITHERING - not supported +# +# NV_CTRL_DITHERING should be used instead. +# + +NV_CTRL_FLATPANEL_DITHERING = 3 # not supported +NV_CTRL_FLATPANEL_DITHERING_DEFAULT = 0 # not supported +NV_CTRL_FLATPANEL_DITHERING_ENABLED = 1 # not supported +NV_CTRL_FLATPANEL_DITHERING_DISABLED = 2 # not supported + +# +# NV_CTRL_DITHERING - the requested dithering configuration; +# possible values are: +# +# 0: auto (the driver will decide when to dither) +# 1: enabled (the driver will always dither when possible) +# 2: disabled (the driver will never dither) +# + +NV_CTRL_DITHERING = 3 # RWDG +NV_CTRL_DITHERING_AUTO = 0 +NV_CTRL_DITHERING_ENABLED = 1 +NV_CTRL_DITHERING_DISABLED = 2 + +# +# NV_CTRL_DIGITAL_VIBRANCE - sets the digital vibrance level for the +# specified display device. +# + +NV_CTRL_DIGITAL_VIBRANCE = 4 # RWDG + +# +# NV_CTRL_BUS_TYPE - returns the bus type through which the specified device +# is connected to the computer. +# When this attribute is queried on an X screen target, the bus type of the +# GPU driving the X screen is returned. +# + +NV_CTRL_BUS_TYPE = 5 # R--GI +NV_CTRL_BUS_TYPE_AGP = 0 +NV_CTRL_BUS_TYPE_PCI = 1 +NV_CTRL_BUS_TYPE_PCI_EXPRESS = 2 +NV_CTRL_BUS_TYPE_INTEGRATED = 3 + +# +# NV_CTRL_TOTAL_GPU_MEMORY - returns the total amount of memory available +# to the specified GPU (or the GPU driving the specified X +# screen). Note: if the GPU supports TurboCache(TM), the value +# reported may exceed the amount of video memory installed on the +# GPU. The value reported for integrated GPUs may likewise exceed +# the amount of dedicated system memory set aside by the system +# BIOS for use by the integrated GPU. +# + +NV_CTRL_TOTAL_GPU_MEMORY = 6 # R--G +NV_CTRL_VIDEO_RAM = NV_CTRL_TOTAL_GPU_MEMORY + +# +# NV_CTRL_IRQ - returns the interrupt request line used by the specified +# device. +# When this attribute is queried on an X screen target, the IRQ of the GPU +# driving the X screen is returned. +# + +NV_CTRL_IRQ = 7 # R--GI + +# +# NV_CTRL_OPERATING_SYSTEM - returns the operating system on which +# the X server is running. +# + +NV_CTRL_OPERATING_SYSTEM = 8 # R--G +NV_CTRL_OPERATING_SYSTEM_LINUX = 0 +NV_CTRL_OPERATING_SYSTEM_FREEBSD = 1 +NV_CTRL_OPERATING_SYSTEM_SUNOS = 2 + +# +# NV_CTRL_SYNC_TO_VBLANK - enables sync to vblank for OpenGL clients. +# This setting is only applied to OpenGL clients that are started +# after this setting is applied. +# + +NV_CTRL_SYNC_TO_VBLANK = 9 # RW-X +NV_CTRL_SYNC_TO_VBLANK_OFF = 0 +NV_CTRL_SYNC_TO_VBLANK_ON = 1 + +# +# NV_CTRL_LOG_ANISO - enables anisotropic filtering for OpenGL +# clients; on some NVIDIA hardware, this can only be enabled or +# disabled; on other hardware different levels of anisotropic +# filtering can be specified. This setting is only applied to OpenGL +# clients that are started after this setting is applied. +# + +NV_CTRL_LOG_ANISO = 10 # RW-X + +# +# NV_CTRL_FSAA_MODE - the FSAA setting for OpenGL clients; possible +# FSAA modes: +# +# NV_CTRL_FSAA_MODE_2x "2x Bilinear Multisampling" +# NV_CTRL_FSAA_MODE_2x_5t "2x Quincunx Multisampling" +# NV_CTRL_FSAA_MODE_15x15 "1.5 x 1.5 Supersampling" +# NV_CTRL_FSAA_MODE_2x2 "2 x 2 Supersampling" +# NV_CTRL_FSAA_MODE_4x "4x Bilinear Multisampling" +# NV_CTRL_FSAA_MODE_4x_9t "4x Gaussian Multisampling" +# NV_CTRL_FSAA_MODE_8x "2x Bilinear Multisampling by 4x Supersampling" +# NV_CTRL_FSAA_MODE_16x "4x Bilinear Multisampling by 4x Supersampling" +# NV_CTRL_FSAA_MODE_8xS "4x Multisampling by 2x Supersampling" +# +# This setting is only applied to OpenGL clients that are started +# after this setting is applied. +# + +NV_CTRL_FSAA_MODE = 11 # RW-X +NV_CTRL_FSAA_MODE_NONE = 0 +NV_CTRL_FSAA_MODE_2x = 1 +NV_CTRL_FSAA_MODE_2x_5t = 2 +NV_CTRL_FSAA_MODE_15x15 = 3 +NV_CTRL_FSAA_MODE_2x2 = 4 +NV_CTRL_FSAA_MODE_4x = 5 +NV_CTRL_FSAA_MODE_4x_9t = 6 +NV_CTRL_FSAA_MODE_8x = 7 +NV_CTRL_FSAA_MODE_16x = 8 +NV_CTRL_FSAA_MODE_8xS = 9 +NV_CTRL_FSAA_MODE_8xQ = 10 +NV_CTRL_FSAA_MODE_16xS = 11 +NV_CTRL_FSAA_MODE_16xQ = 12 +NV_CTRL_FSAA_MODE_32xS = 13 +NV_CTRL_FSAA_MODE_32x = 14 +NV_CTRL_FSAA_MODE_64xS = 15 +NV_CTRL_FSAA_MODE_MAX = NV_CTRL_FSAA_MODE_64xS + +# +# NV_CTRL_UBB - returns whether UBB is enabled for the specified X +# screen. +# + +NV_CTRL_UBB = 13 # R-- +NV_CTRL_UBB_OFF = 0 +NV_CTRL_UBB_ON = 1 + +# +# NV_CTRL_OVERLAY - returns whether the RGB overlay is enabled for +# the specified X screen. +# + +NV_CTRL_OVERLAY = 14 # R-- +NV_CTRL_OVERLAY_OFF = 0 +NV_CTRL_OVERLAY_ON = 1 + +# +# NV_CTRL_STEREO - returns whether stereo (and what type) is enabled +# for the specified X screen. +# + +NV_CTRL_STEREO = 16 # R-- +NV_CTRL_STEREO_OFF = 0 +NV_CTRL_STEREO_DDC = 1 +NV_CTRL_STEREO_BLUELINE = 2 +NV_CTRL_STEREO_DIN = 3 +NV_CTRL_STEREO_PASSIVE_EYE_PER_DPY = 4 +NV_CTRL_STEREO_VERTICAL_INTERLACED = 5 +NV_CTRL_STEREO_COLOR_INTERLACED = 6 +NV_CTRL_STEREO_HORIZONTAL_INTERLACED = 7 +NV_CTRL_STEREO_CHECKERBOARD_PATTERN = 8 +NV_CTRL_STEREO_INVERSE_CHECKERBOARD_PATTERN = 9 +NV_CTRL_STEREO_3D_VISION = 10 +NV_CTRL_STEREO_3D_VISION_PRO = 11 +NV_CTRL_STEREO_HDMI_3D = 12 +NV_CTRL_STEREO_TRIDELITY_SL = 13 +NV_CTRL_STEREO_INBAND_STEREO_SIGNALING = 14 +NV_CTRL_STEREO_MAX = NV_CTRL_STEREO_INBAND_STEREO_SIGNALING + +# +# NV_CTRL_EMULATE - not supported +# + +NV_CTRL_EMULATE = 17 # not supported +NV_CTRL_EMULATE_NONE = 0 # not supported + +# +# NV_CTRL_TWINVIEW - returns whether TwinView is enabled for the +# specified X screen. +# + +NV_CTRL_TWINVIEW = 18 # R-- +NV_CTRL_TWINVIEW_NOT_ENABLED = 0 +NV_CTRL_TWINVIEW_ENABLED = 1 + +# +# NV_CTRL_CONNECTED_DISPLAYS - deprecated +# +# NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU and +# NV_CTRL_BINARY_DATA_DISPLAYS_ASSIGNED_TO_XSCREEN should be used instead. +# + +NV_CTRL_CONNECTED_DISPLAYS = 19 # deprecated + +# +# NV_CTRL_ENABLED_DISPLAYS - Event that notifies when one or more display +# devices are enabled or disabled on a GPU and/or X screen. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# +# Note: Querying this value has been deprecated. +# NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU, +# NV_CTRL_DISPLAY_ENABLED, and +# NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN should be used +# instead to obtain the list of enabled displays. +# + +NV_CTRL_ENABLED_DISPLAYS = 20 # ---G + +############################################################################ +# +# Integer attributes specific to configuring Frame Lock on boards that +# support it. +# + + +# +# NV_CTRL_FRAMELOCK - returns whether the underlying GPU supports +# Frame Lock. All of the other frame lock attributes are only +# applicable if NV_CTRL_FRAMELOCK is _SUPPORTED. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_FRAMELOCK = 21 # R--G +NV_CTRL_FRAMELOCK_NOT_SUPPORTED = 0 +NV_CTRL_FRAMELOCK_SUPPORTED = 1 + +# +# NV_CTRL_FRAMELOCK_MASTER - deprecated +# +# NV_CTRL_FRAMELOCK_DISPLAY_CONFIG should be used instead. +# + +NV_CTRL_FRAMELOCK_MASTER = 22 # deprecated +NV_CTRL_FRAMELOCK_MASTER_FALSE = 0 # deprecated +NV_CTRL_FRAMELOCK_MASTER_TRUE = 1 # deprecated + +# +# NV_CTRL_FRAMELOCK_POLARITY - sync either to the rising edge of the +# frame lock pulse, the falling edge of the frame lock pulse or both. +# +# On Quadro Sync II, this attribute is ignored when +# NV_CTRL_USE_HOUSE_SYNC is OUTPUT. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_POLARITY = 23 # RW-F +NV_CTRL_FRAMELOCK_POLARITY_RISING_EDGE = 0x1 +NV_CTRL_FRAMELOCK_POLARITY_FALLING_EDGE = 0x2 +NV_CTRL_FRAMELOCK_POLARITY_BOTH_EDGES = 0x3 + +# +# NV_CTRL_FRAMELOCK_SYNC_DELAY - delay between the frame lock pulse +# and the GPU sync. This value must be multiplied by +# NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION to determine the sync delay in +# nanoseconds. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# +# USAGE NOTE: NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX and +# NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR are deprecated. +# The Sync Delay _MAX and _FACTOR are different for different +# Quadro Sync products and so, to be correct, the valid values for +# NV_CTRL_FRAMELOCK_SYNC_DELAY must be queried to get the range +# of acceptable sync delay values, and +# NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION must be queried to +# obtain the correct factor. +# + +NV_CTRL_FRAMELOCK_SYNC_DELAY = 24 # RW-F +NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX = 2047 # deprecated +NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR = 7.81 # deprecated + +# +# NV_CTRL_FRAMELOCK_SYNC_INTERVAL - how many house sync pulses +# between the frame lock sync generation (0 == sync every house sync); +# this only applies to the master when receiving house sync. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_SYNC_INTERVAL = 25 # RW-F + +# +# NV_CTRL_FRAMELOCK_PORT0_STATUS - status of the rj45 port0. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_PORT0_STATUS = 26 # R--F +NV_CTRL_FRAMELOCK_PORT0_STATUS_INPUT = 0 +NV_CTRL_FRAMELOCK_PORT0_STATUS_OUTPUT = 1 + +# +# NV_CTRL_FRAMELOCK_PORT1_STATUS - status of the rj45 port1. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_PORT1_STATUS = 27 # R--F +NV_CTRL_FRAMELOCK_PORT1_STATUS_INPUT = 0 +NV_CTRL_FRAMELOCK_PORT1_STATUS_OUTPUT = 1 + +# +# NV_CTRL_FRAMELOCK_HOUSE_STATUS - returns whether or not the house +# sync input signal was detected on the BNC connector of the frame lock +# board. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_HOUSE_STATUS = 28 # R--F +NV_CTRL_FRAMELOCK_HOUSE_STATUS_NOT_DETECTED = 0 +NV_CTRL_FRAMELOCK_HOUSE_STATUS_DETECTED = 1 + +# +# NV_CTRL_FRAMELOCK_SYNC - enable/disable the syncing of display +# devices to the frame lock pulse as specified by previous calls to +# NV_CTRL_FRAMELOCK_DISPLAY_CONFIG. +# +# This attribute can only be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be +# queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. +# + +NV_CTRL_FRAMELOCK_SYNC = 29 # RW-G +NV_CTRL_FRAMELOCK_SYNC_DISABLE = 0 +NV_CTRL_FRAMELOCK_SYNC_ENABLE = 1 + +# +# NV_CTRL_FRAMELOCK_SYNC_READY - reports whether a frame lock +# board is receiving sync (regardless of whether or not any display +# devices are using the sync). +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_SYNC_READY = 30 # R--F +NV_CTRL_FRAMELOCK_SYNC_READY_FALSE = 0 +NV_CTRL_FRAMELOCK_SYNC_READY_TRUE = 1 + +# +# NV_CTRL_FRAMELOCK_STEREO_SYNC - this indicates that the GPU stereo +# signal is in sync with the frame lock stereo signal. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_STEREO_SYNC = 31 # R--G +NV_CTRL_FRAMELOCK_STEREO_SYNC_FALSE = 0 +NV_CTRL_FRAMELOCK_STEREO_SYNC_TRUE = 1 + +# +# NV_CTRL_FRAMELOCK_TEST_SIGNAL - to test the connections in the sync +# group, tell the master to enable a test signal, then query port[01] +# status and sync_ready on all slaves. When done, tell the master to +# disable the test signal. Test signal should only be manipulated +# while NV_CTRL_FRAMELOCK_SYNC is enabled. +# +# The TEST_SIGNAL is also used to reset the Universal Frame Count (as +# returned by the glXQueryFrameCountNV() function in the +# GLX_NV_swap_group extension). Note: for best accuracy of the +# Universal Frame Count, it is recommended to toggle the TEST_SIGNAL +# on and off after enabling frame lock. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_FRAMELOCK_TEST_SIGNAL = 32 # RW-G +NV_CTRL_FRAMELOCK_TEST_SIGNAL_DISABLE = 0 +NV_CTRL_FRAMELOCK_TEST_SIGNAL_ENABLE = 1 + +# +# NV_CTRL_FRAMELOCK_ETHERNET_DETECTED - The frame lock boards are +# cabled together using regular cat5 cable, connecting to rj45 ports +# on the backplane of the card. There is some concern that users may +# think these are ethernet ports and connect them to a +# router/hub/etc. The hardware can detect this and will shut off to +# prevent damage (either to itself or to the router). +# NV_CTRL_FRAMELOCK_ETHERNET_DETECTED may be called to find out if +# ethernet is connected to one of the rj45 ports. An appropriate +# error message should then be displayed. The _PORT0 and _PORT1 +# values may be or'ed together. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED = 33 # R--F +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_NONE = 0 +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT0 = 0x1 +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT1 = 0x2 + +# +# NV_CTRL_FRAMELOCK_VIDEO_MODE - get/set what video mode is used +# to interperate the house sync signal. This should only be set +# on the master. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_VIDEO_MODE = 34 # RW-F +NV_CTRL_FRAMELOCK_VIDEO_MODE_NONE = 0 +NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL = 1 +NV_CTRL_FRAMELOCK_VIDEO_MODE_NTSCPALSECAM = 2 +NV_CTRL_FRAMELOCK_VIDEO_MODE_HDTV = 3 + +# +# During FRAMELOCK bring-up, the above values were redefined to +# these: +# + +NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_AUTO = 0 +NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_BI_LEVEL = 2 +NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_TRI_LEVEL = 3 + +# +# NV_CTRL_FRAMELOCK_SYNC_RATE - this is the refresh rate that the +# frame lock board is sending to the GPU, in milliHz. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_FRAMELOCK_SYNC_RATE = 35 # R--F + +############################################################################ + +# +# NV_CTRL_FORCE_GENERIC_CPU - not supported +# + +NV_CTRL_FORCE_GENERIC_CPU = 37 # not supported +NV_CTRL_FORCE_GENERIC_CPU_DISABLE = 0 # not supported +NV_CTRL_FORCE_GENERIC_CPU_ENABLE = 1 # not supported + +# +# NV_CTRL_OPENGL_AA_LINE_GAMMA - for OpenGL clients, allow +# Gamma-corrected antialiased lines to consider variances in the +# color display capabilities of output devices when rendering smooth +# lines. Only available on recent Quadro GPUs. This setting is only +# applied to OpenGL clients that are started after this setting is +# applied. +# + +NV_CTRL_OPENGL_AA_LINE_GAMMA = 38 # RW-X +NV_CTRL_OPENGL_AA_LINE_GAMMA_DISABLE = 0 +NV_CTRL_OPENGL_AA_LINE_GAMMA_ENABLE = 1 + +# +# NV_CTRL_FRAMELOCK_TIMING - this is TRUE when the gpu is both receiving +# and locked to an input timing signal. Timing information may come from +# the following places: Another frame lock device that is set to master, +# the house sync signal, or the GPU's internal timing from a display +# device. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_FRAMELOCK_TIMING = 39 # R--G +NV_CTRL_FRAMELOCK_TIMING_FALSE = 0 +NV_CTRL_FRAMELOCK_TIMING_TRUE = 1 + +# +# NV_CTRL_FLIPPING_ALLOWED - when TRUE, OpenGL will swap by flipping +# when possible; when FALSE, OpenGL will always swap by blitting. +# + +NV_CTRL_FLIPPING_ALLOWED = 40 # RW-X +NV_CTRL_FLIPPING_ALLOWED_FALSE = 0 +NV_CTRL_FLIPPING_ALLOWED_TRUE = 1 + +# +# NV_CTRL_ARCHITECTURE - returns the architecture on which the X server is +# running. +# + +NV_CTRL_ARCHITECTURE = 41 # R-- +NV_CTRL_ARCHITECTURE_X86 = 0 +NV_CTRL_ARCHITECTURE_X86_64 = 1 +NV_CTRL_ARCHITECTURE_IA64 = 2 +NV_CTRL_ARCHITECTURE_ARM = 3 +NV_CTRL_ARCHITECTURE_AARCH64 = 4 +NV_CTRL_ARCHITECTURE_PPC64LE = 5 + +# +# NV_CTRL_TEXTURE_CLAMPING - texture clamping mode in OpenGL. By +# default, _SPEC is used, which forces OpenGL texture clamping to +# conform with the OpenGL specification. _EDGE forces NVIDIA's +# OpenGL implementation to remap GL_CLAMP to GL_CLAMP_TO_EDGE, +# which is not strictly conformant, but some applications rely on +# the non-conformant behavior. +# + +NV_CTRL_TEXTURE_CLAMPING = 42 # RW-X +NV_CTRL_TEXTURE_CLAMPING_EDGE = 0 +NV_CTRL_TEXTURE_CLAMPING_SPEC = 1 + +# +# The NV_CTRL_CURSOR_SHADOW - not supported +# +# use an ARGB cursor instead. +# + +NV_CTRL_CURSOR_SHADOW = 43 # not supported +NV_CTRL_CURSOR_SHADOW_DISABLE = 0 # not supported +NV_CTRL_CURSOR_SHADOW_ENABLE = 1 # not supported + +NV_CTRL_CURSOR_SHADOW_ALPHA = 44 # not supported +NV_CTRL_CURSOR_SHADOW_RED = 45 # not supported +NV_CTRL_CURSOR_SHADOW_GREEN = 46 # not supported +NV_CTRL_CURSOR_SHADOW_BLUE = 47 # not supported + +NV_CTRL_CURSOR_SHADOW_X_OFFSET = 48 # not supported +NV_CTRL_CURSOR_SHADOW_Y_OFFSET = 49 # not supported + +# +# When Application Control for FSAA is enabled, then what the +# application requests is used, and NV_CTRL_FSAA_MODE is ignored. If +# this is disabled, then any application setting is overridden with +# NV_CTRL_FSAA_MODE +# + +NV_CTRL_FSAA_APPLICATION_CONTROLLED = 50 # RW-X +NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED = 1 +NV_CTRL_FSAA_APPLICATION_CONTROLLED_DISABLED = 0 + +# +# When Application Control for LogAniso is enabled, then what the +# application requests is used, and NV_CTRL_LOG_ANISO is ignored. If +# this is disabled, then any application setting is overridden with +# NV_CTRL_LOG_ANISO +# + +NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED = 51 # RW-X +NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_ENABLED = 1 +NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_DISABLED = 0 + +# +# IMAGE_SHARPENING adjusts the sharpness of the display's image +# quality by amplifying high frequency content. Valid values will +# normally be in the range [0,32). Only available on GeForceFX or +# newer. +# + +NV_CTRL_IMAGE_SHARPENING = 52 # RWDG + +# +# NV_CTRL_TV_OVERSCAN - not supported +# + +NV_CTRL_TV_OVERSCAN = 53 # not supported + +# +# NV_CTRL_TV_FLICKER_FILTER - not supported +# + +NV_CTRL_TV_FLICKER_FILTER = 54 # not supported + +# +# NV_CTRL_TV_BRIGHTNESS - not supported +# + +NV_CTRL_TV_BRIGHTNESS = 55 # not supported + +# +# NV_CTRL_TV_HUE - not supported +# + +NV_CTRL_TV_HUE = 56 # not supported + +# +# NV_CTRL_TV_CONTRAST - not suppoerted +# + +NV_CTRL_TV_CONTRAST = 57 # not supported + +# +# NV_CTRL_TV_SATURATION - not supported +# + +NV_CTRL_TV_SATURATION = 58 # not supported + +# +# NV_CTRL_TV_RESET_SETTINGS - not supported +# + +NV_CTRL_TV_RESET_SETTINGS = 59 # not supported + +# +# NV_CTRL_GPU_CORE_TEMPERATURE reports the current core temperature +# of the GPU driving the X screen. +# + +NV_CTRL_GPU_CORE_TEMPERATURE = 60 # R--G + +# +# NV_CTRL_GPU_CORE_THRESHOLD reports the current GPU core slowdown +# threshold temperature, NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD and +# NV_CTRL_GPU_MAX_CORE_THRESHOLD report the default and MAX core +# slowdown threshold temperatures. +# +# NV_CTRL_GPU_CORE_THRESHOLD reflects the temperature at which the +# GPU is throttled to prevent overheating. +# + +NV_CTRL_GPU_CORE_THRESHOLD = 61 # R--G +NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD = 62 # R--G +NV_CTRL_GPU_MAX_CORE_THRESHOLD = 63 # R--G + +# +# NV_CTRL_AMBIENT_TEMPERATURE reports the current temperature in the +# immediate neighbourhood of the GPU driving the X screen. +# + +NV_CTRL_AMBIENT_TEMPERATURE = 64 # R--G + +# +# NV_CTRL_PBUFFER_SCANOUT_SUPPORTED - returns whether this X screen +# supports scanout of FP pbuffers; +# +# if this screen does not support PBUFFER_SCANOUT, then all other +# PBUFFER_SCANOUT attributes are unavailable. +# +# PBUFFER_SCANOUT is supported if and only if: +# - Twinview is configured with clone mode. The secondary screen is used to +# scanout the pbuffer. +# - The desktop is running in with 16 bits per pixel. +# +NV_CTRL_PBUFFER_SCANOUT_SUPPORTED = 65 # not supported +NV_CTRL_PBUFFER_SCANOUT_FALSE = 0 +NV_CTRL_PBUFFER_SCANOUT_TRUE = 1 + +# +# NV_CTRL_PBUFFER_SCANOUT_XID indicates the XID of the pbuffer used for +# scanout. +# +NV_CTRL_PBUFFER_SCANOUT_XID = 66 # not supported + +############################################################################ +# +# The NV_CTRL_GVO_* integer attributes are used to configure GVO +# (Graphics to Video Out). This functionality is available, for +# example, on the Quadro SDI Output card. +# +# The following is a typical usage pattern for the GVO attributes: +# +# - query NV_CTRL_GVO_SUPPORTED to determine if the X screen supports GV0. +# +# - specify NV_CTRL_GVO_SYNC_MODE (one of FREE_RUNNING, GENLOCK, or +# FRAMELOCK); if you specify GENLOCK or FRAMELOCK, you should also +# specify NV_CTRL_GVO_SYNC_SOURCE. +# +# - Use NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED and +# NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED to detect what input syncs are +# present. +# +# (If no analog sync is detected but it is known that a valid +# bi-level or tri-level sync is connected set +# NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE appropriately and +# retest with NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED). +# +# - if syncing to input sync, query the +# NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT attribute; note that Input video +# format can only be queried after SYNC_SOURCE is specified. +# +# - specify the NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT +# +# - specify the NV_CTRL_GVO_DATA_FORMAT +# +# - specify any custom Color Space Conversion (CSC) matrix, offset, +# and scale with XNVCTRLSetGvoColorConversion(). +# +# - if using the GLX_NV_video_out extension to display one or more +# pbuffers, call glXGetVideoDeviceNV() to lock the GVO output for use +# by the GLX client; then bind the pbuffer(s) to the GVO output with +# glXBindVideoImageNV() and send pbuffers to the GVO output with +# glXSendPbufferToVideoNV(); see the GLX_NV_video_out spec for more +# details. +# +# - if using the GLX_NV_present_video extension, call +# glXBindVideoDeviceNV() to bind the GVO video device to current +# OpenGL context. +# +# Note that setting most GVO attributes only causes the value to be +# cached in the X server. The values will be flushed to the hardware +# either when the next MetaMode is set that uses the GVO display +# device, or when a GLX pbuffer is bound to the GVO output (with +# glXBindVideoImageNV()). +# +# Note that GLX_NV_video_out/GLX_NV_present_video and X screen use +# are mutually exclusive. If a MetaMode is currently using the GVO +# device, then glXGetVideoDeviceNV and glXBindVideoImageNV() will +# fail. Similarly, if a GLX client has locked the GVO output (via +# glXGetVideoDeviceNV or glXBindVideoImageNV), then setting a +# MetaMode that uses the GVO device will fail. The +# NV_CTRL_GVO_GLX_LOCKED event will be sent when a GLX client locks +# the GVO output. +# +# + + +# +# NV_CTRL_GVO_SUPPORTED - returns whether this X screen supports GVO; +# if this screen does not support GVO output, then all other GVO +# attributes are unavailable. +# + +NV_CTRL_GVO_SUPPORTED = 67 # R-- +NV_CTRL_GVO_SUPPORTED_FALSE = 0 +NV_CTRL_GVO_SUPPORTED_TRUE = 1 + +# +# NV_CTRL_GVO_SYNC_MODE - selects the GVO sync mode; possible values +# are: +# +# FREE_RUNNING - GVO does not sync to any external signal +# +# GENLOCK - the GVO output is genlocked to an incoming sync signal; +# genlocking locks at hsync. This requires that the output video +# format exactly match the incoming sync video format. +# +# FRAMELOCK - the GVO output is frame locked to an incoming sync +# signal; frame locking locks at vsync. This requires that the output +# video format have the same refresh rate as the incoming sync video +# format. +# + +NV_CTRL_GVO_SYNC_MODE = 68 # RW- +NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING = 0 +NV_CTRL_GVO_SYNC_MODE_GENLOCK = 1 +NV_CTRL_GVO_SYNC_MODE_FRAMELOCK = 2 + +# +# NV_CTRL_GVO_SYNC_SOURCE - if NV_CTRL_GVO_SYNC_MODE is set to either +# GENLOCK or FRAMELOCK, this controls which sync source is used as +# the incoming sync signal (either Composite or SDI). If +# NV_CTRL_GVO_SYNC_MODE is FREE_RUNNING, this attribute has no +# effect. +# + +NV_CTRL_GVO_SYNC_SOURCE = 69 # RW- +NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE = 0 +NV_CTRL_GVO_SYNC_SOURCE_SDI = 1 + +# +# NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT - specifies the desired output video +# format for GVO devices or the desired input video format for GVI devices. +# +# Note that for GVO, the valid video formats may vary depending on +# the NV_CTRL_GVO_SYNC_MODE and the incoming sync video format. See +# the definition of NV_CTRL_GVO_SYNC_MODE. +# +# Note that when querying the ValidValues for this data type, the +# values are reported as bits within a bitmask +# (ATTRIBUTE_TYPE_INT_BITS); unfortunately, there are more valid +# value bits than will fit in a single 32-bit value. To solve this, +# query the ValidValues for NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT to +# check which of the first 31 VIDEO_FORMATS are valid, query the +# ValidValues for NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 to check which +# of the 32-63 VIDEO_FORMATS are valid, and query the ValidValues of +# NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 to check which of the 64-95 +# VIDEO_FORMATS are valid. +# +# Note: Setting this attribute on a GVI device may also result in the +# following NV-CONTROL attributes being reset on that device (to +# ensure the configuration remains valid): +# NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT +# NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING +# + +NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT = 70 # RW--I + +NV_CTRL_GVIO_VIDEO_FORMAT_NONE = 0 +NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC = 1 +NV_CTRL_GVIO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL = 2 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_59_94_SMPTE296 = 3 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296 = 4 +NV_CTRL_GVIO_VIDEO_FORMAT_1035I_59_94_SMPTE260 = 5 +NV_CTRL_GVIO_VIDEO_FORMAT_1035I_60_00_SMPTE260 = 6 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE295 = 7 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE274 = 8 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_SMPTE274 = 9 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_SMPTE274 = 10 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_976_SMPTE274 = 11 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_SMPTE274 = 12 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_SMPTE274 = 13 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_SMPTE274 = 14 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_SMPTE274 = 15 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_50_00_SMPTE296 = 16 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_SMPTE274 = 17 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_SMPTE274 = 18 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_30_00_SMPTE296 = 19 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_29_97_SMPTE296 = 20 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_25_00_SMPTE296 = 21 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_24_00_SMPTE296 = 22 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_23_98_SMPTE296 = 23 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274 = 24 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274 = 25 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274 = 26 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274 = 27 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274 = 28 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_SMPTE372 = 29 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_SMPTE372 = 30 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_SMPTE372 = 31 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_SMPTE372 = 32 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_SMPTE372 = 33 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_SMPTE372 = 34 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_SMPTE372 = 35 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_SMPTE372 = 36 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_SMPTE372 = 37 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_SMPTE372 = 38 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_A_SMPTE274 = 39 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_A_SMPTE274 = 40 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_A_SMPTE274 = 41 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_B_SMPTE274 = 42 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_3G_LEVEL_B_SMPTE274 = 43 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_3G_LEVEL_B_SMPTE372 = 44 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_B_SMPTE274 = 45 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_3G_LEVEL_B_SMPTE274 = 46 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_3G_LEVEL_B_SMPTE372 = 47 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_3G_LEVEL_B_SMPTE274 = 48 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_3G_LEVEL_B_SMPTE372 = 49 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_3G_LEVEL_B_SMPTE274 = 50 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_3G_LEVEL_B_SMPTE372 = 51 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_3G_LEVEL_B_SMPTE274 = 52 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_3G_LEVEL_B_SMPTE372 = 53 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_3G_LEVEL_B_SMPTE274 = 54 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_3G_LEVEL_B_SMPTE372 = 55 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_B_SMPTE274 = 56 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_3G_LEVEL_B_SMPTE274 = 57 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_3G_LEVEL_B_SMPTE372 = 58 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_3G_LEVEL_B_SMPTE274 = 59 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_3G_LEVEL_B_SMPTE372 = 60 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_98_3G_LEVEL_B_SMPTE274 = 61 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_3G_LEVEL_B_SMPTE372 = 62 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_3G_LEVEL_B_SMPTE274 = 63 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_3G_LEVEL_B_SMPTE372 = 64 + +# +# The following have been renamed; NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT and the +# corresponding NV_CTRL_GVIO_* formats should be used instead. +# +NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT = 70 # renamed + +NV_CTRL_GVO_VIDEO_FORMAT_NONE = 0 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC = 1 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL = 2 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_720P_59_94_SMPTE296 = 3 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_720P_60_00_SMPTE296 = 4 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1035I_59_94_SMPTE260 = 5 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1035I_60_00_SMPTE260 = 6 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE295 = 7 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE274 = 8 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080I_59_94_SMPTE274 = 9 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080I_60_00_SMPTE274 = 10 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080P_23_976_SMPTE274 = 11 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080P_24_00_SMPTE274 = 12 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080P_25_00_SMPTE274 = 13 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080P_29_97_SMPTE274 = 14 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080P_30_00_SMPTE274 = 15 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_720P_50_00_SMPTE296 = 16 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080I_48_00_SMPTE274 = 17 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080I_47_96_SMPTE274 = 18 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_720P_30_00_SMPTE296 = 19 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_720P_29_97_SMPTE296 = 20 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_720P_25_00_SMPTE296 = 21 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_720P_24_00_SMPTE296 = 22 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_720P_23_98_SMPTE296 = 23 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274 = 24 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274 = 25 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274 = 26 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274 = 27 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274 = 28 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048P_30_00_SMPTE372 = 29 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048P_29_97_SMPTE372 = 30 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048I_60_00_SMPTE372 = 31 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048I_59_94_SMPTE372 = 32 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048P_25_00_SMPTE372 = 33 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048I_50_00_SMPTE372 = 34 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048P_24_00_SMPTE372 = 35 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048P_23_98_SMPTE372 = 36 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048I_48_00_SMPTE372 = 37 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_2048I_47_96_SMPTE372 = 38 # renamed + +# +# NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT - indicates the input video format +# detected for GVO or GVI devices; the possible values are the +# NV_CTRL_GVIO_VIDEO_FORMAT constants. +# +# For GVI devices, the jack number should be specified in the lower +# 16 bits of the "display_mask" parameter, while the channel number should be +# specified in the upper 16 bits. +# + +NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT = 71 # R--I + +# +# NV_CTRL_GVO_INPUT_VIDEO_FORMAT - renamed +# +# NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT should be used instead. +# + +NV_CTRL_GVO_INPUT_VIDEO_FORMAT = 71 # renamed + +# +# NV_CTRL_GVO_DATA_FORMAT - This controls how the data in the source +# (either the X screen or the GLX pbuffer) is interpretted and +# displayed. +# +# Note: some of the below DATA_FORMATS have been renamed. For +# example, R8G8B8_TO_RGB444 has been renamed to X8X8X8_444_PASSTHRU. +# This is to more accurately reflect DATA_FORMATS where the +# per-channel data could be either RGB or YCrCb -- the point is that +# the driver and GVO hardware do not perform any implicit color space +# conversion on the data; it is passed through to the SDI out. +# + +NV_CTRL_GVO_DATA_FORMAT = 72 # RW- +NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444 = 0 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4444 = 1 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4444 = 2 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422 = 3 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4224 = 4 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4224 = 5 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_RGB444 = 6 # renamed +NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU = 6 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_RGBA4444 = 7 # renamed +NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4444_PASSTHRU = 7 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_RGBZ4444 = 8 # renamed +NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4444_PASSTHRU = 8 +NV_CTRL_GVO_DATA_FORMAT_Y10CR10CB10_TO_YCRCB444 = 9 # renamed +NV_CTRL_GVO_DATA_FORMAT_X10X10X10_444_PASSTHRU = 9 +NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8_TO_YCRCB444 = 10 # renamed +NV_CTRL_GVO_DATA_FORMAT_X10X8X8_444_PASSTHRU = 10 +NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8A10_TO_YCRCBA4444 = 11 # renamed +NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4444_PASSTHRU = 11 +NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8Z10_TO_YCRCBZ4444 = 12 # renamed +NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4444_PASSTHRU = 12 +NV_CTRL_GVO_DATA_FORMAT_DUAL_R8G8B8_TO_DUAL_YCRCB422 = 13 +NV_CTRL_GVO_DATA_FORMAT_DUAL_Y8CR8CB8_TO_DUAL_YCRCB422 = 14 # renamed +NV_CTRL_GVO_DATA_FORMAT_DUAL_X8X8X8_TO_DUAL_422_PASSTHRU = 14 +NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB422 = 15 +NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB444 = 16 +NV_CTRL_GVO_DATA_FORMAT_Y12CR12CB12_TO_YCRCB444 = 17 # renamed +NV_CTRL_GVO_DATA_FORMAT_X12X12X12_444_PASSTHRU = 17 +NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB444 = 18 +NV_CTRL_GVO_DATA_FORMAT_X8X8X8_422_PASSTHRU = 19 +NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4224_PASSTHRU = 20 +NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4224_PASSTHRU = 21 +NV_CTRL_GVO_DATA_FORMAT_X10X10X10_422_PASSTHRU = 22 +NV_CTRL_GVO_DATA_FORMAT_X10X8X8_422_PASSTHRU = 23 +NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4224_PASSTHRU = 24 +NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4224_PASSTHRU = 25 +NV_CTRL_GVO_DATA_FORMAT_X12X12X12_422_PASSTHRU = 26 +NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB422 = 27 + +# +# NV_CTRL_GVO_DISPLAY_X_SCREEN - not supported +# + +NV_CTRL_GVO_DISPLAY_X_SCREEN = 73 # not supported +NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE = 1 # not supported +NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE = 0 # not supported + +# +# NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED - indicates whether +# Composite Sync input is detected. +# + +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED = 74 # R-- +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE = 0 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_TRUE = 1 + +# +# NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE - get/set the +# Composite Sync input detect mode. +# + +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE = 75 # RW- +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO = 0 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL = 1 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL = 2 + +# +# NV_CTRL_GVO_SYNC_INPUT_DETECTED - indicates whether SDI Sync input +# is detected, and what type. +# + +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED = 76 # R-- +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE = 0 +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD = 1 +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD = 2 + +# +# NV_CTRL_GVO_VIDEO_OUTPUTS - indicates which GVO video output +# connectors are currently outputing data. +# + +NV_CTRL_GVO_VIDEO_OUTPUTS = 77 # R-- +NV_CTRL_GVO_VIDEO_OUTPUTS_NONE = 0 +NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO1 = 1 +NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO2 = 2 +NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO_BOTH = 3 + +# +# NV_CTRL_GVO_FIRMWARE_VERSION - deprecated +# +# NV_CTRL_STRING_GVIO_FIRMWARE_VERSION should be used instead. +# + +NV_CTRL_GVO_FIRMWARE_VERSION = 78 # deprecated + +# +# NV_CTRL_GVO_SYNC_DELAY_PIXELS - controls the delay between the +# input sync and the output sync in numbers of pixels from hsync; +# this is a 12 bit value. +# +# If the NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW bit is set, +# then setting this value will set an advance instead of a delay. +# + +NV_CTRL_GVO_SYNC_DELAY_PIXELS = 79 # RW- + +# +# NV_CTRL_GVO_SYNC_DELAY_LINES - controls the delay between the input +# sync and the output sync in numbers of lines from vsync; this is a +# 12 bit value. +# +# If the NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW bit is set, +# then setting this value will set an advance instead of a delay. +# + +NV_CTRL_GVO_SYNC_DELAY_LINES = 80 # RW- + +# +# NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE - must be set for a period +# of about 2 seconds for the new InputVideoFormat to be properly +# locked to. In nvidia-settings, we do a reacquire whenever genlock +# or frame lock mode is entered into, when the user clicks the +# "detect" button. This value can be written, but always reads back +# _FALSE. +# + +NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE = 81 # -W- +NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_FALSE = 0 +NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_TRUE = 1 + +# +# NV_CTRL_GVO_GLX_LOCKED - deprecated +# +# NV_CTRL_GVO_LOCK_OWNER should be used instead. +# + +NV_CTRL_GVO_GLX_LOCKED = 82 # deprecated +NV_CTRL_GVO_GLX_LOCKED_FALSE = 0 # deprecated +NV_CTRL_GVO_GLX_LOCKED_TRUE = 1 # deprecated + +# +# NV_CTRL_GVIO_VIDEO_FORMAT_{WIDTH,HEIGHT,REFRESH_RATE} - query the +# width, height, and refresh rate for the specified +# NV_CTRL_GVIO_VIDEO_FORMAT_*. So that this can be queried with +# existing interfaces, XNVCTRLQueryAttribute() should be used, and +# the video format specified in the display_mask field; eg: +# +# XNVCTRLQueryAttribute (dpy, +# screen, +# NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC, +# NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH, +# &value); +# +# Note that Refresh Rate is in milliHertz values +# + +NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH = 83 # R--I +NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT = 84 # R--I +NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE = 85 # R--I + +# The following have been renamed; use the NV_CTRL_GVIO_* versions, instead +NV_CTRL_GVO_VIDEO_FORMAT_WIDTH = 83 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_HEIGHT = 84 # renamed +NV_CTRL_GVO_VIDEO_FORMAT_REFRESH_RATE = 85 # renamed + +# +# NV_CTRL_GVO_X_SCREEN_PAN_[XY] - not supported +# + +NV_CTRL_GVO_X_SCREEN_PAN_X = 86 # not supported +NV_CTRL_GVO_X_SCREEN_PAN_Y = 87 # not supported + +# +# NV_CTRL_GPU_OVERCLOCKING_STATE - not supported +# + +NV_CTRL_GPU_OVERCLOCKING_STATE = 88 # not supported +NV_CTRL_GPU_OVERCLOCKING_STATE_NONE = 0 # not supported +NV_CTRL_GPU_OVERCLOCKING_STATE_MANUAL = 1 # not supported + +# +# NV_CTRL_GPU_{2,3}D_CLOCK_FREQS - not supported +# + +NV_CTRL_GPU_2D_CLOCK_FREQS = 89 # not supported +NV_CTRL_GPU_3D_CLOCK_FREQS = 90 # not supported + +# +# NV_CTRL_GPU_DEFAULT_{2,3}D_CLOCK_FREQS - not supported +# + +NV_CTRL_GPU_DEFAULT_2D_CLOCK_FREQS = 91 # not supported +NV_CTRL_GPU_DEFAULT_3D_CLOCK_FREQS = 92 # not supported + +# +# NV_CTRL_GPU_CURRENT_CLOCK_FREQS - query the current GPU and memory +# clocks of the graphics device driving the X screen. +# +# NV_CTRL_GPU_CURRENT_CLOCK_FREQS is a "packed" integer attribute; +# the GPU clock is stored in the upper 16 bits of the integer, and +# the memory clock is stored in the lower 16 bits of the integer. +# All clock values are in MHz. All clock values are in MHz. +# + +NV_CTRL_GPU_CURRENT_CLOCK_FREQS = 93 # R--G + +# +# NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS - not supported +# + +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS = 94 # not supported +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID = 0 # not supported + +# +# NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION - not supported +# + +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION = 95 # not supported +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_START = 0 # not supported +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_CANCEL = 1 # not supported + +# +# NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE - not supported +# + +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE = 96 # not supported +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_IDLE = 0 # not supported +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_BUSY = 1 # not supported + +# +# NV_CTRL_FLATPANEL_CHIP_LOCATION - for the specified display device, +# report whether the flat panel is driven by the on-chip controller, +# or a separate controller chip elsewhere on the graphics board. +# This attribute is only available for flat panels. +# + +NV_CTRL_FLATPANEL_CHIP_LOCATION = 215 # R-DG +NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL = 0 +NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL = 1 + +# +# NV_CTRL_FLATPANEL_LINK - report the number of links for a DVI connection, or +# the main link's active lane count for DisplayPort. +# This attribute is only available for flat panels. +# + +NV_CTRL_FLATPANEL_LINK = 216 # R-DG +NV_CTRL_FLATPANEL_LINK_SINGLE = 0 +NV_CTRL_FLATPANEL_LINK_DUAL = 1 +NV_CTRL_FLATPANEL_LINK_QUAD = 3 + +# +# NV_CTRL_FLATPANEL_SIGNAL - for the specified display device, report +# whether the flat panel is driven by an LVDS, TMDS, or DisplayPort signal. +# This attribute is only available for flat panels. +# + +NV_CTRL_FLATPANEL_SIGNAL = 217 # R-DG +NV_CTRL_FLATPANEL_SIGNAL_LVDS = 0 +NV_CTRL_FLATPANEL_SIGNAL_TMDS = 1 +NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT = 2 + +# +# NV_CTRL_USE_HOUSE_SYNC - when INPUT, the server (master) frame lock +# device will propagate the incoming house sync signal as the outgoing +# frame lock sync signal. If the frame lock device cannot detect a +# frame lock sync signal, it will default to using the internal timings +# from the GPU connected to the primary connector. +# +# When set to OUTPUT, the server (master) frame lock device will +# generate a house sync signal from its internal timing and output +# this signal over the BNC connector on the frame lock device. This +# is only allowed on a Quadro Sync II device. If an incoming house +# sync signal is present on the BNC connector, this setting will +# have no effect. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_USE_HOUSE_SYNC = 218 # RW-F +NV_CTRL_USE_HOUSE_SYNC_DISABLED = 0 # aliases with FALSE +NV_CTRL_USE_HOUSE_SYNC_INPUT = 1 # aliases with TRUE +NV_CTRL_USE_HOUSE_SYNC_OUTPUT = 2 +NV_CTRL_USE_HOUSE_SYNC_FALSE = 0 +NV_CTRL_USE_HOUSE_SYNC_TRUE = 1 + +# +# NV_CTRL_EDID_AVAILABLE - report if an EDID is available for the +# specified display device. +# +# This attribute may also be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# + +NV_CTRL_EDID_AVAILABLE = 219 # R-DG +NV_CTRL_EDID_AVAILABLE_FALSE = 0 +NV_CTRL_EDID_AVAILABLE_TRUE = 1 + +# +# NV_CTRL_FORCE_STEREO - when TRUE, OpenGL will force stereo flipping +# even when no stereo drawables are visible (if the device is configured +# to support it, see the "Stereo" X config option). +# When false, fall back to the default behavior of only flipping when a +# stereo drawable is visible. +# + +NV_CTRL_FORCE_STEREO = 220 # RW- +NV_CTRL_FORCE_STEREO_FALSE = 0 +NV_CTRL_FORCE_STEREO_TRUE = 1 + +# +# NV_CTRL_IMAGE_SETTINGS - the image quality setting for OpenGL clients. +# +# This setting is only applied to OpenGL clients that are started +# after this setting is applied. +# + +NV_CTRL_IMAGE_SETTINGS = 221 # RW-X +NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY = 0 +NV_CTRL_IMAGE_SETTINGS_QUALITY = 1 +NV_CTRL_IMAGE_SETTINGS_PERFORMANCE = 2 +NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE = 3 + +# +# NV_CTRL_XINERAMA - return whether xinerama is enabled +# + +NV_CTRL_XINERAMA = 222 # R--G +NV_CTRL_XINERAMA_OFF = 0 +NV_CTRL_XINERAMA_ON = 1 + +# +# NV_CTRL_XINERAMA_STEREO - when TRUE, OpenGL will allow stereo flipping +# on multiple X screens configured with Xinerama. +# When FALSE, flipping is allowed only on one X screen at a time. +# + +NV_CTRL_XINERAMA_STEREO = 223 # RW- +NV_CTRL_XINERAMA_STEREO_FALSE = 0 +NV_CTRL_XINERAMA_STEREO_TRUE = 1 + +# +# NV_CTRL_BUS_RATE - if the bus type of the specified device is AGP, then +# NV_CTRL_BUS_RATE returns the configured AGP transfer rate. If the bus type +# is PCI Express, then this attribute returns the maximum link width. +# When this attribute is queried on an X screen target, the bus rate of the +# GPU driving the X screen is returned. +# + +NV_CTRL_BUS_RATE = 224 # R--GI + +# +# NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH - returns the maximum +# PCIe link width, in number of lanes. +# +NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH = NV_CTRL_BUS_RATE +# +# NV_CTRL_SHOW_SLI_VISUAL_INDICATOR - when TRUE, OpenGL will draw information +# about the current SLI mode. +# + +NV_CTRL_SHOW_SLI_VISUAL_INDICATOR = 225 # RW-X +NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE = 0 +NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE = 1 + +# +# NV_CTRL_SHOW_SLI_HUD - when TRUE, OpenGL will draw information about the +# current SLI mode. +# Renamed this attribute to NV_CTRL_SHOW_SLI_VISUAL_INDICATOR +# + +NV_CTRL_SHOW_SLI_HUD = NV_CTRL_SHOW_SLI_VISUAL_INDICATOR +NV_CTRL_SHOW_SLI_HUD_FALSE = NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE +NV_CTRL_SHOW_SLI_HUD_TRUE = NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE + +# +# NV_CTRL_XV_SYNC_TO_DISPLAY - deprecated +# +# NV_CTRL_XV_SYNC_TO_DISPLAY_ID should be used instead. +# + +NV_CTRL_XV_SYNC_TO_DISPLAY = 226 # deprecated + +# +# NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 - this attribute is only +# intended to be used to query the ValidValues for +# NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for VIDEO_FORMAT values between +# 31 and 63. See NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for details. +# + +NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 = 227 # ---GI + +# +# NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT2 - renamed +# +# NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 should be used instead. +# +NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT2 = 227 # renamed + +# +# NV_CTRL_GVO_OVERRIDE_HW_CSC - Override the SDI hardware's Color Space +# Conversion with the values controlled through +# XNVCTRLSetGvoColorConversion() and XNVCTRLGetGvoColorConversion(). If +# this attribute is FALSE, then the values specified through +# XNVCTRLSetGvoColorConversion() are ignored. +# + +NV_CTRL_GVO_OVERRIDE_HW_CSC = 228 # RW- +NV_CTRL_GVO_OVERRIDE_HW_CSC_FALSE = 0 +NV_CTRL_GVO_OVERRIDE_HW_CSC_TRUE = 1 + +# +# NV_CTRL_GVO_CAPABILITIES - this read-only attribute describes GVO +# capabilities that differ between NVIDIA SDI products. This value +# is a bitmask where each bit indicates whether that capability is +# available. +# +# APPLY_CSC_IMMEDIATELY - whether the CSC matrix, offset, and scale +# specified through XNVCTRLSetGvoColorConversion() will take affect +# immediately, or only after SDI output is disabled and enabled +# again. +# +# APPLY_CSC_TO_X_SCREEN - whether the CSC matrix, offset, and scale +# specified through XNVCTRLSetGvoColorConversion() will also apply +# to GVO output of an X screen, or only to OpenGL GVO output, as +# enabled through the GLX_NV_video_out extension. +# +# COMPOSITE_TERMINATION - whether the 75 ohm termination of the +# SDI composite input signal can be programmed through the +# NV_CTRL_GVO_COMPOSITE_TERMINATION attribute. +# +# SHARED_SYNC_BNC - whether the SDI device has a single BNC +# connector used for both (SDI & Composite) incoming signals. +# +# MULTIRATE_SYNC - whether the SDI device supports synchronization +# of input and output video modes that match in being odd or even +# modes (ie, AA.00 Hz modes can be synched to other BB.00 Hz modes and +# AA.XX Hz can match to BB.YY Hz where .XX and .YY are not .00) +# + +NV_CTRL_GVO_CAPABILITIES = 229 # R-- +NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY = 0x00000001 +NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_TO_X_SCREEN = 0x00000002 +NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION = 0x00000004 +NV_CTRL_GVO_CAPABILITIES_SHARED_SYNC_BNC = 0x00000008 +NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC = 0x00000010 +NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW = 0x00000020 + +# +# NV_CTRL_GVO_COMPOSITE_TERMINATION - enable or disable 75 ohm +# termination of the SDI composite input signal. +# + +NV_CTRL_GVO_COMPOSITE_TERMINATION = 230 # RW- +NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE = 1 +NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE = 0 + +# +# NV_CTRL_ASSOCIATED_DISPLAY_DEVICES - deprecated +# +# NV_CTRL_BINARY_DATA_DISPLAYS_ASSIGNED_TO_XSCREEN should be used instead. +# + +NV_CTRL_ASSOCIATED_DISPLAY_DEVICES = 231 # deprecated + +# +# NV_CTRL_FRAMELOCK_SLAVES - deprecated +# +# NV_CTRL_FRAMELOCK_DISPLAY_CONFIG should be used instead. +# + +NV_CTRL_FRAMELOCK_SLAVES = 232 # deprecated + +# +# NV_CTRL_FRAMELOCK_MASTERABLE - deprecated +# +# NV_CTRL_FRAMELOCK_DISPLAY_CONFIG should be used instead. +# + +NV_CTRL_FRAMELOCK_MASTERABLE = 233 # deprecated + +# +# NV_CTRL_PROBE_DISPLAYS - re-probes the hardware to detect what +# display devices are connected to the GPU or GPU driving the +# specified X screen. The return value is deprecated and should not be used. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_PROBE_DISPLAYS = 234 # R--G + +# +# NV_CTRL_REFRESH_RATE - Returns the refresh rate of the specified +# display device in 100# Hz (ie. to get the refresh rate in Hz, divide +# the returned value by 100.) +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_REFRESH_RATE = 235 # R-DG + +# +# NV_CTRL_GVO_FLIP_QUEUE_SIZE - The Graphics to Video Out interface +# exposed through NV-CONTROL and the GLX_NV_video_out extension uses +# an internal flip queue when pbuffers are sent to the video device +# (via glXSendPbufferToVideoNV()). The NV_CTRL_GVO_FLIP_QUEUE_SIZE +# can be used to query and assign the flip queue size. This +# attribute is applied to GLX when glXGetVideoDeviceNV() is called by +# the application. +# + +NV_CTRL_GVO_FLIP_QUEUE_SIZE = 236 # RW- + +# +# NV_CTRL_CURRENT_SCANLINE - query the current scanline for the +# specified display device. +# + +NV_CTRL_CURRENT_SCANLINE = 237 # R-DG + +# +# NV_CTRL_INITIAL_PIXMAP_PLACEMENT - Controls where X pixmaps are initially +# created. +# +# NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM causes pixmaps to stay in +# system memory. These pixmaps can't be accelerated by the NVIDIA driver; this +# will cause blank windows if used with an OpenGL compositing manager. +# NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM creates pixmaps in system memory +# initially, but allows them to migrate to video memory. +# NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM creates pixmaps in video memory +# when enough resources are available. +# NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED is currently reserved for future +# use. Behavior is undefined. +# NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM creates pixmaps in GPU accessible +# system memory when enough resources are available. +# + +NV_CTRL_INITIAL_PIXMAP_PLACEMENT = 238 # RW- +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM = 0 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM = 1 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM = 2 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED = 3 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM = 4 + +# +# NV_CTRL_PCI_BUS - Returns the PCI bus number the specified device is using. +# + +NV_CTRL_PCI_BUS = 239 # R--GI + +# +# NV_CTRL_PCI_DEVICE - Returns the PCI device number the specified device is +# using. +# + +NV_CTRL_PCI_DEVICE = 240 # R--GI + +# +# NV_CTRL_PCI_FUNCTION - Returns the PCI function number the specified device +# is using. +# + +NV_CTRL_PCI_FUNCTION = 241 # R--GI + +# +# NV_CTRL_FRAMELOCK_FPGA_REVISION - Queries the FPGA revision of the +# Frame Lock device. +# +# This attribute must be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK target. +# + +NV_CTRL_FRAMELOCK_FPGA_REVISION = 242 # R--F + +# +# NV_CTRL_MAX_SCREEN_{WIDTH,HEIGHT} - the maximum allowable size, in +# pixels, of either the specified X screen (if the target_type of the +# query is an X screen), or any X screen on the specified GPU (if the +# target_type of the query is a GPU). +# + +NV_CTRL_MAX_SCREEN_WIDTH = 243 # R--G +NV_CTRL_MAX_SCREEN_HEIGHT = 244 # R--G + +# +# NV_CTRL_MAX_DISPLAYS - The maximum number of display devices that +# can be driven simultaneously on a GPU (e.g., that can be used in a +# MetaMode at once). Note that this does not indicate the maximum +# number of displays that are listed in NV_CTRL_BINARY_DATA_DISPLAYS_ON_GPU +# and NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU because more display +# devices can be connected than are actively in use. +# + +NV_CTRL_MAX_DISPLAYS = 245 # R--G + +# +# NV_CTRL_DYNAMIC_TWINVIEW - Returns whether or not the screen +# supports dynamic twinview. +# + +NV_CTRL_DYNAMIC_TWINVIEW = 246 # R-- + +# +# NV_CTRL_MULTIGPU_DISPLAY_OWNER - Returns the (NV-CONTROL) GPU ID of +# the GPU that has the display device(s) used for showing the X Screen. +# + +NV_CTRL_MULTIGPU_DISPLAY_OWNER = 247 # R-- + +# +# NV_CTRL_GPU_SCALING - not supported +# + +NV_CTRL_GPU_SCALING = 248 # not supported + +NV_CTRL_GPU_SCALING_TARGET_INVALID = 0 # not supported +NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT = 1 # not supported +NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE = 2 # not supported + +NV_CTRL_GPU_SCALING_METHOD_INVALID = 0 # not supported +NV_CTRL_GPU_SCALING_METHOD_STRETCHED = 1 # not supported +NV_CTRL_GPU_SCALING_METHOD_CENTERED = 2 # not supported +NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED = 3 # not supported + +# +# NV_CTRL_FRONTEND_RESOLUTION - not supported +# + +NV_CTRL_FRONTEND_RESOLUTION = 249 # not supported + +# +# NV_CTRL_BACKEND_RESOLUTION - not supported +# + +NV_CTRL_BACKEND_RESOLUTION = 250 # not supported + +# +# NV_CTRL_FLATPANEL_NATIVE_RESOLUTION - not supported +# + +NV_CTRL_FLATPANEL_NATIVE_RESOLUTION = 251 # not supported + +# +# NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION - not supported +# + +NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION = 252 # not supported + +# +# NV_CTRL_GPU_SCALING_ACTIVE - not supported +# + +NV_CTRL_GPU_SCALING_ACTIVE = 253 # not supported + +# +# NV_CTRL_DFP_SCALING_ACTIVE - not supported +# + +NV_CTRL_DFP_SCALING_ACTIVE = 254 # not supported + +# +# NV_CTRL_FSAA_APPLICATION_ENHANCED - Controls how the NV_CTRL_FSAA_MODE +# is applied when NV_CTRL_FSAA_APPLICATION_CONTROLLED is set to +# NV_CTRL_APPLICATION_CONTROLLED_DISABLED. When +# NV_CTRL_FSAA_APPLICATION_ENHANCED is _DISABLED, OpenGL applications will +# be forced to use the FSAA mode specified by NV_CTRL_FSAA_MODE. when set +# to _ENABLED, only those applications that have selected a multisample +# FBConfig will be made to use the NV_CTRL_FSAA_MODE specified. +# +# This attribute is ignored when NV_CTRL_FSAA_APPLICATION_CONTROLLED is +# set to NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED. +# + +NV_CTRL_FSAA_APPLICATION_ENHANCED = 255 # RW-X +NV_CTRL_FSAA_APPLICATION_ENHANCED_ENABLED = 1 +NV_CTRL_FSAA_APPLICATION_ENHANCED_DISABLED = 0 + +# +# NV_CTRL_FRAMELOCK_SYNC_RATE_4 - This is the refresh rate that the +# frame lock board is sending to the GPU with 4 digits of precision. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK. +# + +NV_CTRL_FRAMELOCK_SYNC_RATE_4 = 256 # R--F + +# +# NV_CTRL_GVO_LOCK_OWNER - indicates that the GVO device is available +# or in use (by GLX or an X screen). +# +# The GVO device is locked by GLX when either glXGetVideoDeviceNV +# (part of GLX_NV_video_out) or glXBindVideoDeviceNV (part of +# GLX_NV_present_video) is called. All GVO output resources are +# locked until released by the GLX_NV_video_out/GLX_NV_present_video +# client. +# +# The GVO device is locked/unlocked by an X screen, when the GVO device is +# used in a MetaMode on an X screen. +# +# When the GVO device is locked, setting of the following GVO NV-CONTROL +# attributes will not happen immediately and will instead be cached. The +# GVO resource will need to be disabled/released and re-enabled/claimed for +# the values to be flushed. These attributes are: +# +# NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT +# NV_CTRL_GVO_DATA_FORMAT +# NV_CTRL_GVO_FLIP_QUEUE_SIZE +# + +NV_CTRL_GVO_LOCK_OWNER = 257 # R-- +NV_CTRL_GVO_LOCK_OWNER_NONE = 0 +NV_CTRL_GVO_LOCK_OWNER_GLX = 1 +NV_CTRL_GVO_LOCK_OWNER_CLONE = 2 # not supported +NV_CTRL_GVO_LOCK_OWNER_X_SCREEN = 3 + +# +# NV_CTRL_HWOVERLAY - when a workstation overlay is in use, reports +# whether the hardware overlay is used, or if the overlay is emulated. +# + +NV_CTRL_HWOVERLAY = 258 # R-- +NV_CTRL_HWOVERLAY_FALSE = 0 +NV_CTRL_HWOVERLAY_TRUE = 1 + +# +# NV_CTRL_NUM_GPU_ERRORS_RECOVERED - Returns the number of GPU errors +# occured. This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_NUM_GPU_ERRORS_RECOVERED = 259 # R--- + +# +# NV_CTRL_REFRESH_RATE_3 - Returns the refresh rate of the specified +# display device in 1000# Hz (ie. to get the refresh rate in Hz, divide +# the returned value by 1000.) +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_REFRESH_RATE_3 = 260 # R-DG + +# +# NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS - not supported +# + +NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS = 261 # not supported +NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_OFF = 0 # not supported +NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_ON = 1 # not supported + +# +# NV_CTRL_GPU_POWER_SOURCE reports the type of power source +# of the GPU driving the X screen. +# + +NV_CTRL_GPU_POWER_SOURCE = 262 # R--G +NV_CTRL_GPU_POWER_SOURCE_AC = 0 +NV_CTRL_GPU_POWER_SOURCE_BATTERY = 1 + +# +# NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE - not supported +# + +NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE = 263 # not supported +NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_DESKTOP = 0 # not supported +NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_MAXPERF = 1 # not supported + +# NV_CTRL_GLYPH_CACHE - Enables RENDER Glyph Caching to VRAM + +NV_CTRL_GLYPH_CACHE = 264 # RW- +NV_CTRL_GLYPH_CACHE_DISABLED = 0 +NV_CTRL_GLYPH_CACHE_ENABLED = 1 + +# +# NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL reports the current +# Performance level of the GPU driving the X screen. Each +# Performance level has associated NVClock and Mem Clock values. +# + +NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL = 265 # R--G + +# +# NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE reports if Adaptive Clocking +# is Enabled on the GPU driving the X screen. +# + +NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE = 266 # R--G +NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_DISABLED = 0 +NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_ENABLED = 1 + +# +# NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED - Returns whether or not the GVO output +# video is locked to the GPU. +# + +NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED = 267 # R--- +NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_FALSE = 0 +NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_TRUE = 1 + +# +# NV_CTRL_GVO_SYNC_LOCK_STATUS - Returns whether or not the GVO device +# is locked to the input ref signal. If the sync mode is set to +# NV_CTRL_GVO_SYNC_MODE_GENLOCK, then this returns the genlock +# sync status, and if the sync mode is set to NV_CTRL_GVO_SYNC_MODE_FRAMELOCK, +# then this reports the frame lock status. +# + +NV_CTRL_GVO_SYNC_LOCK_STATUS = 268 # R--- +NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED = 0 +NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED = 1 + +# +# NV_CTRL_GVO_ANC_TIME_CODE_GENERATION - Allows SDI device to generate +# time codes in the ANC region of the SDI video output stream. +# + +NV_CTRL_GVO_ANC_TIME_CODE_GENERATION = 269 # RW-- +NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_DISABLE = 0 +NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_ENABLE = 1 + +# +# NV_CTRL_GVO_COMPOSITE - Enables/Disables SDI compositing. This attribute +# is only available when an SDI input source is detected and is in genlock +# mode. +# + +NV_CTRL_GVO_COMPOSITE = 270 # RW-- +NV_CTRL_GVO_COMPOSITE_DISABLE = 0 +NV_CTRL_GVO_COMPOSITE_ENABLE = 1 + +# +# NV_CTRL_GVO_COMPOSITE_ALPHA_KEY - When compositing is enabled, this +# enables/disables alpha blending. +# + +NV_CTRL_GVO_COMPOSITE_ALPHA_KEY = 271 # RW-- +NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_DISABLE = 0 +NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_ENABLE = 1 + +# +# NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE - Set the values of a luma +# channel range. This is a packed int that has the following format +# (in order of high-bits to low bits): +# +# Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits) +# +# To query the current values, pass the range # throught the display_mask +# variable. +# + +NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE = 272 # RW-- + +# +# NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE - Set the values of a CR +# channel range. This is a packed int that has the following format +# (in order of high-bits to low bits): +# +# Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits) +# +# To query the current values, pass the range # throught he display_mask +# variable. +# + +NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE = 273 # RW-- + +# +# NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE - Set the values of a CB +# channel range. This is a packed int that has the following format +# (in order of high-bits to low bits): +# +# Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits) +# +# To query the current values, pass the range # throught he display_mask +# variable. +# + +NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE = 274 # RW-- + +# +# NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES - Returns the number of ranges +# available for each channel (Y/Luma, Cr, and Cb.) +# + +NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES = 275 # R--- + +# +# NV_CTRL_SWITCH_TO_DISPLAYS - not supported +# + +NV_CTRL_SWITCH_TO_DISPLAYS = 276 # not supported + +# +# NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT - not supported +# + +NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT = 277 # not supported + +# +# NV_CTRL_NOTEBOOK_INTERNAL_LCD - deprecated +# + +NV_CTRL_NOTEBOOK_INTERNAL_LCD = 278 # deprecated + +# +# NV_CTRL_DEPTH_30_ALLOWED - returns whether the NVIDIA X driver supports +# depth 30 on the specified X screen or GPU. +# + +NV_CTRL_DEPTH_30_ALLOWED = 279 # R--G + +# +# NV_CTRL_MODE_SET_EVENT This attribute is sent as an event +# when hotkey, ctrl-alt-+/- or randr event occurs. Note that +# This attribute cannot be set or queried and is meant to +# be received by clients that wish to be notified of when +# mode set events occur. +# + +NV_CTRL_MODE_SET_EVENT = 280 # --- + +# +# NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE - the gamma value used by +# OpenGL when NV_CTRL_OPENGL_AA_LINE_GAMMA is enabled +# + +NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE = 281 # RW-X + +# +# NV_CTRL_VCSC_HIGH_PERF_MODE - deprecated +# +# Is used to both query High Performance Mode status on the Visual Computing +# System, and also to enable or disable High Performance Mode. +# + +NV_CTRL_VCSC_HIGH_PERF_MODE = 282 # RW-V +NV_CTRL_VCSC_HIGH_PERF_MODE_DISABLE = 0 +NV_CTRL_VCSC_HIGH_PERF_MODE_ENABLE = 1 + +# +# NV_CTRL_DISPLAYPORT_LINK_RATE - returns the negotiated lane bandwidth of the +# DisplayPort main link. The numerical value of this attribute is the link +# rate in bps divided by 27000000. +# This attribute is only available for DisplayPort flat panels. +# + +NV_CTRL_DISPLAYPORT_LINK_RATE = 291 # R-DG +NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED = 0x0 +NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS = 0x6 # deprecated +NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS = 0xA # deprecated + +# +# NV_CTRL_STEREO_EYES_EXCHANGE - Controls whether or not the left and right +# eyes of a stereo image are flipped. +# + +NV_CTRL_STEREO_EYES_EXCHANGE = 292 # RW-X +NV_CTRL_STEREO_EYES_EXCHANGE_OFF = 0 +NV_CTRL_STEREO_EYES_EXCHANGE_ON = 1 + +# +# NV_CTRL_NO_SCANOUT - returns whether the special "NoScanout" mode is +# enabled on the specified X screen or GPU; for details on this mode, +# see the description of the "none" value for the "UseDisplayDevice" +# X configuration option in the NVIDIA driver README. +# + +NV_CTRL_NO_SCANOUT = 293 # R--G +NV_CTRL_NO_SCANOUT_DISABLED = 0 +NV_CTRL_NO_SCANOUT_ENABLED = 1 + +# +# NV_CTRL_GVO_CSC_CHANGED_EVENT This attribute is sent as an event +# when the color space conversion matrix has been altered by another +# client. +# + +NV_CTRL_GVO_CSC_CHANGED_EVENT = 294 # --- + +# +# NV_CTRL_FRAMELOCK_SLAVEABLE - deprecated +# +# NV_CTRL_FRAMELOCK_DISPLAY_CONFIG should be used instead. +# + +NV_CTRL_FRAMELOCK_SLAVEABLE = 295 # deprecated + +# +# NV_CTRL_GVO_SYNC_TO_DISPLAY This attribute controls whether or not +# the non-SDI display device will be sync'ed to the SDI display device +# (when configured in TwinView, Clone Mode or when using the SDI device +# with OpenGL). +# + +NV_CTRL_GVO_SYNC_TO_DISPLAY = 296 # --- +NV_CTRL_GVO_SYNC_TO_DISPLAY_DISABLE = 0 +NV_CTRL_GVO_SYNC_TO_DISPLAY_ENABLE = 1 + +# +# NV_CTRL_X_SERVER_UNIQUE_ID - returns a pseudo-unique identifier for this +# X server. Intended for use in cases where an NV-CONTROL client communicates +# with multiple X servers, and wants some level of confidence that two +# X Display connections correspond to the same or different X servers. +# + +NV_CTRL_X_SERVER_UNIQUE_ID = 297 # R--- + +# +# NV_CTRL_PIXMAP_CACHE - This attribute controls whether the driver attempts to +# store video memory pixmaps in a cache. The cache speeds up allocation and +# deallocation of pixmaps, but could use more memory than when the cache is +# disabled. +# + +NV_CTRL_PIXMAP_CACHE = 298 # RW-X +NV_CTRL_PIXMAP_CACHE_DISABLE = 0 +NV_CTRL_PIXMAP_CACHE_ENABLE = 1 + +# +# NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB - When the pixmap cache is enabled and +# there is not enough free space in the cache to fit a new pixmap, the driver +# will round up to the next multiple of this number of kilobytes when +# allocating more memory for the cache. +# + +NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB = 299 # RW-X + +# +# NV_CTRL_IS_GVO_DISPLAY - returns whether or not a given display is an +# SDI device. +# + +NV_CTRL_IS_GVO_DISPLAY = 300 # R-D +NV_CTRL_IS_GVO_DISPLAY_FALSE = 0 +NV_CTRL_IS_GVO_DISPLAY_TRUE = 1 + +# +# NV_CTRL_PCI_ID - Returns the PCI vendor and device ID of the specified +# device. +# +# NV_CTRL_PCI_ID is a "packed" integer attribute; the PCI vendor ID is stored +# in the upper 16 bits of the integer, and the PCI device ID is stored in the +# lower 16 bits of the integer. +# + +NV_CTRL_PCI_ID = 301 # R--GI + +# +# NV_CTRL_GVO_FULL_RANGE_COLOR - Allow full range color data [4-1019] +# without clamping to [64-940]. +# + +NV_CTRL_GVO_FULL_RANGE_COLOR = 302 # RW- +NV_CTRL_GVO_FULL_RANGE_COLOR_DISABLED = 0 +NV_CTRL_GVO_FULL_RANGE_COLOR_ENABLED = 1 + +# +# NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE - Returns whether or not +# SLI Mosaic Mode supported. +# + +NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE = 303 # R-- +NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_FALSE = 0 +NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_TRUE = 1 + +# +# NV_CTRL_GVO_ENABLE_RGB_DATA - Allows clients to specify when +# the GVO board should process colors as RGB when the output data +# format is one of the NV_CTRL_GVO_DATA_FORMAT_???_PASSTRHU modes. +# + +NV_CTRL_GVO_ENABLE_RGB_DATA = 304 # RW- +NV_CTRL_GVO_ENABLE_RGB_DATA_DISABLE = 0 +NV_CTRL_GVO_ENABLE_RGB_DATA_ENABLE = 1 + +# +# NV_CTRL_IMAGE_SHARPENING_DEFAULT - Returns default value of +# Image Sharpening. +# + +NV_CTRL_IMAGE_SHARPENING_DEFAULT = 305 # R-- + +# +# NV_CTRL_PCI_DOMAIN - Returns the PCI domain number the specified device is +# using. +# + +NV_CTRL_PCI_DOMAIN = 306 # R--GI + +# +# NV_CTRL_GVI_NUM_JACKS - Returns the number of input BNC jacks available +# on a GVI device. +# + +NV_CTRL_GVI_NUM_JACKS = 307 # R--I + +# +# NV_CTRL_GVI_MAX_LINKS_PER_STREAM - Returns the maximum supported number of +# links that can be tied to one stream. +# + +NV_CTRL_GVI_MAX_LINKS_PER_STREAM = 308 # R--I + +# +# NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT - Returns the detected +# number of bits per component (BPC) of data on the given input jack+ +# channel. +# +# The jack number should be specified in the lower 16 bits of the +# "display_mask" parameter, while the channel number should be specified in +# the upper 16 bits. +# + +NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT = 309 # R--I +NV_CTRL_GVI_BITS_PER_COMPONENT_UNKNOWN = 0 +NV_CTRL_GVI_BITS_PER_COMPONENT_8 = 1 +NV_CTRL_GVI_BITS_PER_COMPONENT_10 = 2 +NV_CTRL_GVI_BITS_PER_COMPONENT_12 = 3 + +# +# NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT - Specify the number of +# bits per component (BPC) of data for the captured stream. +# The stream number should be specified in the "display_mask" parameter. +# +# Note: Setting this attribute may also result in the following +# NV-CONTROL attributes being reset on the GVI device (to ensure +# the configuration remains valid): +# NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING +# + +NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT = 310 # RW-I + +# +# NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING - Returns the detected +# sampling format for the input jack+channel. +# +# The jack number should be specified in the lower 16 bits of the +# "display_mask" parameter, while the channel number should be specified in +# the upper 16 bits. +# + +NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING = 311 # R--I +NV_CTRL_GVI_COMPONENT_SAMPLING_UNKNOWN = 0 +NV_CTRL_GVI_COMPONENT_SAMPLING_4444 = 1 +NV_CTRL_GVI_COMPONENT_SAMPLING_4224 = 2 +NV_CTRL_GVI_COMPONENT_SAMPLING_444 = 3 +NV_CTRL_GVI_COMPONENT_SAMPLING_422 = 4 +NV_CTRL_GVI_COMPONENT_SAMPLING_420 = 5 + +# +# NV_CTRL_GVI_REQUESTED_COMPONENT_SAMPLING - Specify the sampling format for +# the captured stream. +# The possible values are the NV_CTRL_GVI_DETECTED_COMPONENT_SAMPLING +# constants. +# The stream number should be specified in the "display_mask" parameter. +# + +NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING = 312 # RW-I + +# +# NV_CTRL_GVI_CHROMA_EXPAND - Enable or disable 4:2:2 -> 4:4:4 chroma +# expansion for the captured stream. This value is ignored when a +# COMPONENT_SAMPLING format is selected that does not use chroma subsampling, +# or if a BITS_PER_COMPONENT value is selected that is not supported. +# The stream number should be specified in the "display_mask" parameter. +# + +NV_CTRL_GVI_REQUESTED_STREAM_CHROMA_EXPAND = 313 # RW-I +NV_CTRL_GVI_CHROMA_EXPAND_FALSE = 0 +NV_CTRL_GVI_CHROMA_EXPAND_TRUE = 1 + +# +# NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE - Returns the detected color space +# of the input jack+channel. +# +# The jack number should be specified in the lower 16 bits of the +# "display_mask" parameter, while the channel number should be specified in +# the upper 16 bits. +# + +NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE = 314 # R--I +NV_CTRL_GVI_COLOR_SPACE_UNKNOWN = 0 +NV_CTRL_GVI_COLOR_SPACE_GBR = 1 +NV_CTRL_GVI_COLOR_SPACE_GBRA = 2 +NV_CTRL_GVI_COLOR_SPACE_GBRD = 3 +NV_CTRL_GVI_COLOR_SPACE_YCBCR = 4 +NV_CTRL_GVI_COLOR_SPACE_YCBCRA = 5 +NV_CTRL_GVI_COLOR_SPACE_YCBCRD = 6 + +# +# NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID - Returns the detected link identifier +# for the given input jack+channel. +# +# The jack number should be specified in the lower 16 bits of the +# "display_mask" parameter, while the channel number should be specified in +# the upper 16 bits. +# + +NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID = 315 # R--I +NV_CTRL_GVI_LINK_ID_UNKNOWN = 0xFFFF + +# +# NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER - Returns the 4-byte +# SMPTE 352 identifier from the given input jack+channel. +# +# The jack number should be specified in the lower 16 bits of the +# "display_mask" parameter, while the channel number should be specified in +# the upper 16 bits. +# + +NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER = 316 # R--I + +# +# NV_CTRL_GVI_GLOBAL_IDENTIFIER - Returns a global identifier for the +# GVI device. This identifier can be used to relate GVI devices named +# in NV-CONTROL with those enumerated in OpenGL. +# + +NV_CTRL_GVI_GLOBAL_IDENTIFIER = 317 # R--I + +# +# NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION - Returns the number of nanoseconds +# that one unit of NV_CTRL_FRAMELOCK_SYNC_DELAY corresponds to. +# +NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION = 318 # R-- + +# +# NV_CTRL_GPU_COOLER_MANUAL_CONTROL - Query the current or set a new +# cooler control state; the value of this attribute controls the +# availability of additional cooler control attributes (see below). +# +# Note: this attribute is unavailable unless cooler control support +# has been enabled in the X server (by the user). +# + +NV_CTRL_GPU_COOLER_MANUAL_CONTROL = 319 # RW-G +NV_CTRL_GPU_COOLER_MANUAL_CONTROL_FALSE = 0 +NV_CTRL_GPU_COOLER_MANUAL_CONTROL_TRUE = 1 + +# +# NV_CTRL_THERMAL_COOLER_LEVEL - The cooler's target level. +# Normally, the driver dynamically adjusts the cooler based on +# the needs of the GPU. But when NV_CTRL_GPU_COOLER_MANUAL_CONTROL=TRUE, +# the driver will attempt to make the cooler achieve the setting in +# NV_CTRL_THERMAL_COOLER_LEVEL. The actual current level of the cooler +# is reported in NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL. +# + +NV_CTRL_THERMAL_COOLER_LEVEL = 320 # RW-C + +# NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT - Sets default values of +# cooler. +# + +NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT = 321 # -W-C + +# +# NV_CTRL_THERMAL_COOLER_CONTROL_TYPE - +# Returns a cooler's control signal characteristics. +# The possible types are restricted, Variable and Toggle. +# + +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE = 322 # R--C +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_NONE = 0 +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_TOGGLE = 1 +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_VARIABLE = 2 + +# +# NV_CTRL_THERMAL_COOLER_TARGET - Returns objects that cooler cools. +# Targets may be GPU, Memory, Power Supply or All of these. +# GPU_RELATED = GPU | MEMORY | POWER_SUPPLY +# +# + +NV_CTRL_THERMAL_COOLER_TARGET = 323 # R--C +NV_CTRL_THERMAL_COOLER_TARGET_NONE = 0 +NV_CTRL_THERMAL_COOLER_TARGET_GPU = 1 +NV_CTRL_THERMAL_COOLER_TARGET_MEMORY = 2 +NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY = 4 +NV_CTRL_THERMAL_COOLER_TARGET_GPU_RELATED = NV_CTRL_THERMAL_COOLER_TARGET_GPU | NV_CTRL_THERMAL_COOLER_TARGET_MEMORY | NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY + +# +# NV_CTRL_GPU_ECC_SUPPORTED - Reports whether ECC is supported by the +# targeted GPU. +# +NV_CTRL_GPU_ECC_SUPPORTED = 324 # R--G +NV_CTRL_GPU_ECC_SUPPORTED_FALSE = 0 +NV_CTRL_GPU_ECC_SUPPORTED_TRUE = 1 + +# +# NV_CTRL_GPU_ECC_STATUS - Returns the current hardware ECC setting +# for the targeted GPU. +# +NV_CTRL_GPU_ECC_STATUS = 325 # R--G +NV_CTRL_GPU_ECC_STATUS_DISABLED = 0 +NV_CTRL_GPU_ECC_STATUS_ENABLED = 1 + +# +# NV_CTRL_GPU_ECC_CONFIGURATION - Reports whether ECC can be configured +# dynamically for the GPU in question. +# +NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED = 326 # R--G +NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_FALSE = 0 +NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_TRUE = 1 + +# +# NV_CTRL_GPU_ECC_CONFIGURATION_SETTING - Returns the current ECC +# configuration setting or specifies new settings. New settings do not +# take effect until the next POST. +# +NV_CTRL_GPU_ECC_CONFIGURATION = 327 # RW-G +NV_CTRL_GPU_ECC_CONFIGURATION_DISABLED = 0 +NV_CTRL_GPU_ECC_CONFIGURATION_ENABLED = 1 + +# +# NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_SETTING - Returns the default +# ECC configuration setting. +# +NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION = 328 # R--G +NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_DISABLED = 0 +NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_ENABLED = 1 + +# +# NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS - Returns the number of single-bit +# ECC errors detected by the targeted GPU since the last POST. +# Note: this attribute is a 64-bit integer attribute. +# +NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS = 329 # R--GQ + +# +# NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS - Returns the number of double-bit +# ECC errors detected by the targeted GPU since the last POST. +# Note: this attribute is a 64-bit integer attribute. +# +NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS = 330 # R--GQ + +# +# NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS - Returns the number of +# single-bit ECC errors detected by the targeted GPU since the +# last counter reset. +# Note: this attribute is a 64-bit integer attribute. +# +NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS = 331 # R--GQ + +# +# NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS - Returns the number of +# double-bit ECC errors detected by the targeted GPU since the +# last counter reset. +# Note: this attribute is a 64-bit integer attribute. +# +NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS = 332 # R--GQ + +# +# NV_CTRL_GPU_ECC_RESET_ERROR_STATUS - Resets the volatile/aggregate +# single-bit and double-bit error counters. This attribute is a +# bitmask attribute. +# +NV_CTRL_GPU_ECC_RESET_ERROR_STATUS = 333 # -W-G +NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_VOLATILE = 0x00000001 +NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_AGGREGATE = 0x00000002 + +# +# NV_CTRL_GPU_POWER_MIZER_MODE - Provides a hint to the driver +# as to how to manage the performance of the GPU. +# +# ADAPTIVE - adjust GPU clocks based on GPU +# utilization +# PREFER_MAXIMUM_PERFORMANCE - raise GPU clocks to favor +# maximum performance, to the extent +# that thermal and other constraints +# allow +# AUTO - let the driver choose the performance +# policy +# PREFER_CONSISTENT_PERFORMANCE - lock to GPU base clocks +# +NV_CTRL_GPU_POWER_MIZER_MODE = 334 # RW-G +NV_CTRL_GPU_POWER_MIZER_MODE_ADAPTIVE = 0 +NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE = 1 +NV_CTRL_GPU_POWER_MIZER_MODE_AUTO = 2 +NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCE = 3 + +# +# NV_CTRL_GVI_SYNC_OUTPUT_FORMAT - Returns the output sync signal +# from the GVI device. +# + +NV_CTRL_GVI_SYNC_OUTPUT_FORMAT = 335 # R--I + +# +# NV_CTRL_GVI_MAX_CHANNELS_PER_JACK - Returns the maximum +# supported number of (logical) channels within a single physical jack of +# a GVI device. For most SDI video formats, there is only one channel +# (channel 0). But for 3G video formats (as specified in SMPTE 425), +# as an example, there are two channels (channel 0 and channel 1) per +# physical jack. +# + +NV_CTRL_GVI_MAX_CHANNELS_PER_JACK = 336 # R--I + +# +# NV_CTRL_GVI_MAX_STREAMS - Returns the maximum number of streams +# that can be configured on the GVI device. +# + +NV_CTRL_GVI_MAX_STREAMS = 337 # R--I + +# +# NV_CTRL_GVI_NUM_CAPTURE_SURFACES - The GVI interface exposed through +# NV-CONTROL and the GLX_NV_video_input extension uses internal capture +# surfaces when frames are read from the GVI device. The +# NV_CTRL_GVI_NUM_CAPTURE_SURFACES can be used to query and assign the +# number of capture surfaces. This attribute is applied when +# glXBindVideoCaptureDeviceNV() is called by the application. +# +# A lower number of capture surfaces will mean less video memory is used, +# but can result in frames being dropped if the application cannot keep up +# with the capture device. A higher number will prevent frames from being +# dropped, making capture more reliable but will consume move video memory. +# +NV_CTRL_GVI_NUM_CAPTURE_SURFACES = 338 # RW-I + +# +# NV_CTRL_OVERSCAN_COMPENSATION - not supported +# +NV_CTRL_OVERSCAN_COMPENSATION = 339 # not supported + +# +# NV_CTRL_GPU_PCIE_GENERATION - Reports the current PCIe generation. +# +NV_CTRL_GPU_PCIE_GENERATION = 341 # R--GI +NV_CTRL_GPU_PCIE_GENERATION1 = 0x00000001 +NV_CTRL_GPU_PCIE_GENERATION2 = 0x00000002 +NV_CTRL_GPU_PCIE_GENERATION3 = 0x00000003 + +# +# NV_CTRL_GVI_BOUND_GPU - Returns the NV_CTRL_TARGET_TYPE_GPU target_id of +# the GPU currently bound to the GVI device. Returns -1 if no GPU is +# currently bound to the GVI device. +# +NV_CTRL_GVI_BOUND_GPU = 342 # R--I + +# +# NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 - this attribute is only +# intended to be used to query the ValidValues for +# NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for VIDEO_FORMAT values between +# 64 and 95. See NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for details. +# + +NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 = 343 # ---GI + +# +# NV_CTRL_ACCELERATE_TRAPEZOIDS - Toggles RENDER Trapezoid acceleration +# + +NV_CTRL_ACCELERATE_TRAPEZOIDS = 344 # RW- +NV_CTRL_ACCELERATE_TRAPEZOIDS_DISABLE = 0 +NV_CTRL_ACCELERATE_TRAPEZOIDS_ENABLE = 1 + +# +# NV_CTRL_GPU_CORES - Returns number of GPU cores supported by the graphics +# pipeline. +# + +NV_CTRL_GPU_CORES = 345 # R--G + +# +# NV_CTRL_GPU_MEMORY_BUS_WIDTH - Returns memory bus bandwidth on the associated +# subdevice. +# + +NV_CTRL_GPU_MEMORY_BUS_WIDTH = 346 # R--G + +# +# NV_CTRL_GVI_TEST_MODE - This attribute controls the GVI test mode. When +# enabled, the GVI device will generate fake data as quickly as possible. All +# GVI settings are still valid when this is enabled (e.g., the requested video +# format is honored and sets the video size). +# This may be used to test the pipeline. +# + +NV_CTRL_GVI_TEST_MODE = 347 # R--I +NV_CTRL_GVI_TEST_MODE_DISABLE = 0 +NV_CTRL_GVI_TEST_MODE_ENABLE = 1 + +# +# NV_CTRL_COLOR_SPACE - This option controls the preferred color space of the +# video signal. This may not match the current color space depending on the +# current mode on this display. +# +# NV_CTRL_CURRENT_COLOR_SPACE will reflect the actual color space in use. +# +NV_CTRL_COLOR_SPACE = 348 # RWDG +NV_CTRL_COLOR_SPACE_RGB = 0 +NV_CTRL_COLOR_SPACE_YCbCr422 = 1 +NV_CTRL_COLOR_SPACE_YCbCr444 = 2 + +# +# NV_CTRL_COLOR_RANGE - This option controls the preferred color range of the +# video signal. +# +# If the current color space requires it, the actual color range will be +# limited. +# +# NV_CTRL_CURRENT_COLOR_RANGE will reflect the actual color range in use. +# +NV_CTRL_COLOR_RANGE = 349 # RWDG +NV_CTRL_COLOR_RANGE_FULL = 0 +NV_CTRL_COLOR_RANGE_LIMITED = 1 + +# +# NV_CTRL_GPU_SCALING_DEFAULT_TARGET - not supported +# + +NV_CTRL_GPU_SCALING_DEFAULT_TARGET = 350 # not supported + +# +# NV_CTRL_GPU_SCALING_DEFAULT_METHOD - not supported +# + +NV_CTRL_GPU_SCALING_DEFAULT_METHOD = 351 # not supported + +# +# NV_CTRL_DITHERING_MODE - Controls the dithering mode, when +# NV_CTRL_CURRENT_DITHERING is Enabled. +# +# AUTO: allow the driver to choose the dithering mode automatically. +# +# DYNAMIC_2X2: use a 2x2 matrix to dither from the GPU's pixel +# pipeline to the bit depth of the flat panel. The matrix values +# are changed from frame to frame. +# +# STATIC_2X2: use a 2x2 matrix to dither from the GPU's pixel +# pipeline to the bit depth of the flat panel. The matrix values +# do not change from frame to frame. +# +# TEMPORAL: use a pseudorandom value from a uniform distribution calculated at +# every pixel to achieve stochastic dithering. This method produces a better +# visual result than 2x2 matrix approaches. +# +NV_CTRL_DITHERING_MODE = 352 # RWDG +NV_CTRL_DITHERING_MODE_AUTO = 0 +NV_CTRL_DITHERING_MODE_DYNAMIC_2X2 = 1 +NV_CTRL_DITHERING_MODE_STATIC_2X2 = 2 +NV_CTRL_DITHERING_MODE_TEMPORAL = 3 + +# +# NV_CTRL_CURRENT_DITHERING - Returns the current dithering state. +# +NV_CTRL_CURRENT_DITHERING = 353 # R-DG +NV_CTRL_CURRENT_DITHERING_DISABLED = 0 +NV_CTRL_CURRENT_DITHERING_ENABLED = 1 + +# +# NV_CTRL_CURRENT_DITHERING_MODE - Returns the current dithering +# mode. +# +NV_CTRL_CURRENT_DITHERING_MODE = 354 # R-DG +NV_CTRL_CURRENT_DITHERING_MODE_NONE = 0 +NV_CTRL_CURRENT_DITHERING_MODE_DYNAMIC_2X2 = 1 +NV_CTRL_CURRENT_DITHERING_MODE_STATIC_2X2 = 2 +NV_CTRL_CURRENT_DITHERING_MODE_TEMPORAL = 3 + +# +# NV_CTRL_THERMAL_SENSOR_READING - Returns the thermal sensor's current +# reading. +# +NV_CTRL_THERMAL_SENSOR_READING = 355 # R--S + +# +# NV_CTRL_THERMAL_SENSOR_PROVIDER - Returns the hardware device that +# provides the thermal sensor. +# +NV_CTRL_THERMAL_SENSOR_PROVIDER = 356 # R--S +NV_CTRL_THERMAL_SENSOR_PROVIDER_NONE = 0 +NV_CTRL_THERMAL_SENSOR_PROVIDER_GPU_INTERNAL = 1 +NV_CTRL_THERMAL_SENSOR_PROVIDER_ADM1032 = 2 +NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7461 = 3 +NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX6649 = 4 +NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX1617 = 5 +NV_CTRL_THERMAL_SENSOR_PROVIDER_LM99 = 6 +NV_CTRL_THERMAL_SENSOR_PROVIDER_LM89 = 7 +NV_CTRL_THERMAL_SENSOR_PROVIDER_LM64 = 8 +NV_CTRL_THERMAL_SENSOR_PROVIDER_G781 = 9 +NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7473 = 10 +NV_CTRL_THERMAL_SENSOR_PROVIDER_SBMAX6649 = 11 +NV_CTRL_THERMAL_SENSOR_PROVIDER_VBIOSEVT = 12 +NV_CTRL_THERMAL_SENSOR_PROVIDER_OS = 13 +NV_CTRL_THERMAL_SENSOR_PROVIDER_UNKNOWN = 0xFFFFFFFF + +# +# NV_CTRL_THERMAL_SENSOR_TARGET - Returns what hardware component +# the thermal sensor is measuring. +# +NV_CTRL_THERMAL_SENSOR_TARGET = 357 # R--S +NV_CTRL_THERMAL_SENSOR_TARGET_NONE = 0 +NV_CTRL_THERMAL_SENSOR_TARGET_GPU = 1 +NV_CTRL_THERMAL_SENSOR_TARGET_MEMORY = 2 +NV_CTRL_THERMAL_SENSOR_TARGET_POWER_SUPPLY = 4 +NV_CTRL_THERMAL_SENSOR_TARGET_BOARD = 8 +NV_CTRL_THERMAL_SENSOR_TARGET_UNKNOWN = 0xFFFFFFFF + +# +# NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR - when TRUE, OpenGL will +# draw information about the current MULTIGPU mode. +# +NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR = 358 # RW-X +NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_FALSE = 0 +NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_TRUE = 1 + +# +# NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS - Returns GPU's processor +# clock freqs. +# +NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS = 359 # RW-G + +# +# NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS - query the flags (various information +# for the specified NV_CTRL_GVIO_VIDEO_FORMAT_*. So that this can be +# queried with existing interfaces, the video format should be specified +# in the display_mask field; eg: +# +# XNVCTRLQueryTargetAttribute(dpy, +# NV_CTRL_TARGET_TYPE_GVI, +# gvi, +# NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296, +# NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS, +# &flags); +# +# Note: The NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC flag is set +# for those 1080P 3G modes (level A and B) that do not support +# 12 bits per component (when configuring a GVI stream.) +# + +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS = 360 # R--I +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_NONE = 0x00000000 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_INTERLACED = 0x00000001 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PROGRESSIVE = 0x00000002 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PSF = 0x00000004 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A = 0x00000008 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B = 0x00000010 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G = NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A | NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC = 0x00000020 + +# +# NV_CTRL_GPU_PCIE_MAX_LINK_SPEED - returns maximum PCIe link speed, +# in gigatransfers per second (GT/s). +# + +NV_CTRL_GPU_PCIE_MAX_LINK_SPEED = 361 # R--GI + +# +# NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS - Resets the +# 3D Vision Pro transceiver to its factory settings. +# +NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS = 363 # -W-T + +# +# NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL - Controls the channel that is +# currently used by the 3D Vision Pro transceiver. +# +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL = 364 # RW-T + +# +# NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE - Controls the mode in which the +# 3D Vision Pro transceiver operates. +# NV_CTRL_3D_VISION_PRO_TM_LOW_RANGE is bidirectional +# NV_CTRL_3D_VISION_PRO_TM_MEDIUM_RANGE is bidirectional +# NV_CTRL_3D_VISION_PRO_TM_HIGH_RANGE may be bidirectional just up to a +# given range, and unidirectional beyond it +# NV_CTRL_3D_VISION_PRO_TM_COUNT is the total number of +# 3D Vision Pro transceiver modes +# +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE = 365 # RW-T +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_INVALID = 0 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_LOW_RANGE = 1 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_MEDIUM_RANGE = 2 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_HIGH_RANGE = 3 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_COUNT = 4 + +# +# NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES - controls whether updates to the color +# lookup table (LUT) are synchronous with respect to X rendering. For example, +# if an X client sends XStoreColors followed by XFillRectangle, the driver will +# guarantee that the FillRectangle request is not processed until after the +# updated LUT colors are actually visible on the screen if +# NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES is enabled. Otherwise, the rendering may +# occur first. +# +# This makes a difference for applications that use the LUT to animate, such as +# XPilot. If you experience flickering in applications that use LUT +# animations, try enabling this attribute. +# +# When synchronous updates are enabled, XStoreColors requests will be processed +# at your screen's refresh rate. +# + +NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES = 367 # RWDG +NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_DISABLE = 0 +NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_ENABLE = 1 + +# +# NV_CTRL_DITHERING_DEPTH - Controls the dithering depth when +# NV_CTRL_CURRENT_DITHERING is ENABLED. Some displays connected +# to the GPU via the DVI or LVDS interfaces cannot display the +# full color range of ten bits per channel, so the GPU will +# dither to either 6 or 8 bits per channel. +# +NV_CTRL_DITHERING_DEPTH = 368 # RWDG +NV_CTRL_DITHERING_DEPTH_AUTO = 0 +NV_CTRL_DITHERING_DEPTH_6_BITS = 1 +NV_CTRL_DITHERING_DEPTH_8_BITS = 2 + +# +# NV_CTRL_CURRENT_DITHERING_DEPTH - Returns the current dithering +# depth value. +# +NV_CTRL_CURRENT_DITHERING_DEPTH = 369 # R-DG +NV_CTRL_CURRENT_DITHERING_DEPTH_NONE = 0 +NV_CTRL_CURRENT_DITHERING_DEPTH_6_BITS = 1 +NV_CTRL_CURRENT_DITHERING_DEPTH_8_BITS = 2 + +# +# NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY - Returns the +# frequency of the channel(in kHz) of the 3D Vision Pro transceiver. +# Use the display_mask parameter to specify the channel number. +# +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY = 370 # R--T + +# +# NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY - Returns the +# quality of the channel(in percentage) of the 3D Vision Pro transceiver. +# Use the display_mask parameter to specify the channel number. +# +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY = 371 # R--T + +# +# NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT - Returns the number of +# channels on the 3D Vision Pro transceiver. +# +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT = 372 # R--T + +# +# NV_CTRL_3D_VISION_PRO_PAIR_GLASSES - Puts the 3D Vision Pro +# transceiver into pairing mode to gather additional glasses. +# NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP - stops any pairing +# NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON - starts continuous +# pairing via beacon mode +# Any other value, N - Puts the 3D Vision Pro transceiver into +# authenticated pairing mode for N seconds. +# +NV_CTRL_3D_VISION_PRO_PAIR_GLASSES = 373 # -W-T +NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP = 0 +NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON = 0xFFFFFFFF + +# +# NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES - Tells a specific pair +# of glasses to unpair. The glasses will "forget" the address +# of the 3D Vision Pro transceiver to which they have been paired. +# To unpair all the currently paired glasses, specify +# the glasses id as 0. +# +NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES = 374 # -W-T + +# +# NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES - Tells the 3D Vision Pro +# transceiver about the glasses that have been paired using +# NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON. Unless this is done, +# the 3D Vision Pro transceiver will not know about glasses paired in +# beacon mode. +# +NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES = 375 # -W-T + +# +# NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES - Causes glasses LEDs to +# flash for a short period of time. +# +NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES = 376 # -W-T + +# +# NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE - Controls the +# sync cycle duration(in milliseconds) of the glasses. +# Use the display_mask parameter to specify the glasses id. +# +NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE = 378 # RW-T + +# +# NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES - Returns the +# number of state sync cycles recently missed by the glasses. +# Use the display_mask parameter to specify the glasses id. +# +NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES = 379 # R--T + +# +# NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL - Returns the +# battery level(in percentage) of the glasses. +# Use the display_mask parameter to specify the glasses id. +# +NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL = 380 # R--T + +# +# NV_CTRL_GVO_ANC_PARITY_COMPUTATION - Controls the SDI device's computation +# of the parity bit (bit 8) for ANC data words. +# + +NV_CTRL_GVO_ANC_PARITY_COMPUTATION = 381 # RW--- +NV_CTRL_GVO_ANC_PARITY_COMPUTATION_AUTO = 0 +NV_CTRL_GVO_ANC_PARITY_COMPUTATION_ON = 1 +NV_CTRL_GVO_ANC_PARITY_COMPUTATION_OFF = 2 + +# +# NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT - This attribute is sent +# as an event when glasses get paired in response to pair command +# from any of the clients. +# +NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT = 382 # ---T + +# +# NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT - This attribute is sent +# as an event when glasses get unpaired in response to unpair command +# from any of the clients. +# +NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT = 383 # ---T + +# +# NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH - returns the current +# PCIe link width, in number of lanes. +# +NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH = 384 # R--GI + +# +# NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED - returns the current +# PCIe link speed, in megatransfers per second (GT/s). +# +NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED = 385 # R--GI + +# +# NV_CTRL_GVO_AUDIO_BLANKING - specifies whether the GVO device should delete +# audio ancillary data packets when frames are repeated. +# +# When a new frame is not ready in time, the current frame, including all +# ancillary data packets, is repeated. When this data includes audio packets, +# this can result in stutters or clicks. When this option is enabled, the GVO +# device will detect when frames are repeated, identify audio ancillary data +# packets, and mark them for deletion. +# +# This option is applied when the GVO device is bound. +# +NV_CTRL_GVO_AUDIO_BLANKING = 386 # RW- +NV_CTRL_GVO_AUDIO_BLANKING_DISABLE = 0 +NV_CTRL_GVO_AUDIO_BLANKING_ENABLE = 1 + +# +# NV_CTRL_CURRENT_METAMODE_ID - switch modes to the MetaMode with +# the specified ID. +# +NV_CTRL_CURRENT_METAMODE_ID = 387 # RW- + +# +# NV_CTRL_DISPLAY_ENABLED - Returns whether or not the display device +# is currently enabled. +# +NV_CTRL_DISPLAY_ENABLED = 388 # R-D +NV_CTRL_DISPLAY_ENABLED_TRUE = 1 +NV_CTRL_DISPLAY_ENABLED_FALSE = 0 + +# +# NV_CTRL_FRAMELOCK_INCOMING_HOUSE_SYNC_RATE: this is the rate +# of an incomming house sync signal to the frame lock board, in milliHz. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN +# target. +# +NV_CTRL_FRAMELOCK_INCOMING_HOUSE_SYNC_RATE = 389 # R--F + +# +# NV_CTRL_FXAA - enables FXAA. A pixel shader based anti- +# aliasing method. +# +NV_CTRL_FXAA = 390 # RW-X +NV_CTRL_FXAA_DISABLE = 0 +NV_CTRL_FXAA_ENABLE = 1 + +# +# NV_CTRL_DISPLAY_RANDR_OUTPUT_ID - the RandR Output ID (type RROutput) +# that corresponds to the specified Display Device target. If a new +# enough version of RandR is not available in the X server, +# DISPLAY_RANDR_OUTPUT_ID will be 0. +# +NV_CTRL_DISPLAY_RANDR_OUTPUT_ID = 391 # R-D- + +# +# NV_CTRL_FRAMELOCK_DISPLAY_CONFIG - Configures whether the display device +# should listen, ignore or drive the framelock sync signal. +# +# Note that whether or not a display device may be set as a client/server +# depends on the current configuration. For example, only one server may be +# set per Quadro Sync device, and displays can only be configured as a client +# if their refresh rate sufficiently matches the refresh rate of the server +# device. +# +# Note that when querying the ValidValues for this data type, the values are +# reported as bits within a bitmask (ATTRIBUTE_TYPE_INT_BITS); +# +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG = 392 # RWD +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_DISABLED = 0 +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_CLIENT = 1 +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_SERVER = 2 + +# +# NV_CTRL_TOTAL_DEDICATED_GPU_MEMORY - Returns the total amount of dedicated +# GPU video memory, in MB, on the specified GPU. This excludes any TurboCache +# padding included in the value returned by NV_CTRL_TOTAL_GPU_MEMORY. +# +NV_CTRL_TOTAL_DEDICATED_GPU_MEMORY = 393 # R--G + +# +# NV_CTRL_USED_DEDICATED_GPU_MEMORY- Returns the amount of video memory +# currently used on the graphics card in MB. +# +NV_CTRL_USED_DEDICATED_GPU_MEMORY = 394 # R--G + +# +# NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE +# Some GPUs can make a tradeoff between double-precision floating-point +# performance and clock speed. Enabling double-precision floating point +# performance may benefit CUDA or OpenGL applications that require high +# bandwidth double-precision performance. Disabling this feature may benefit +# graphics applications that require higher clock speeds. +# +# This attribute is only available when toggling double precision boost +# can be done immediately (without need for a rebooot). +# +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE = 395 # RW-G +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE_DISABLED = 0 +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE_ENABLED = 1 + +# +# NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT +# Some GPUs can make a tradeoff between double-precision floating-point +# performance and clock speed. Enabling double-precision floating point +# performance may benefit CUDA or OpenGL applications that require high +# bandwidth double-precision performance. Disabling this feature may benefit +# graphics applications that require higher clock speeds. +# +# This attribute is only available when toggling double precision boost +# requires a reboot. +# + +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT = 396 # RW-G +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT_DISABLED = 0 +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT_ENALED = 1 + +# +# NV_CTRL_DPY_HDMI_3D - Returns whether the specified display device is +# currently using HDMI 3D Frame Packed Stereo mode. Clients may use this +# to help interpret the refresh rate returned by NV_CTRL_REFRESH_RATE or +# NV_CTRL_REFRESH_RATE_3, which will be doubled when using HDMI 3D mode. +# +# This attribute may be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU target. +# + +NV_CTRL_DPY_HDMI_3D = 397 # R-DG +NV_CTRL_DPY_HDMI_3D_DISABLED = 0 +NV_CTRL_DPY_HDMI_3D_ENABLED = 1 + +# +# NV_CTRL_BASE_MOSAIC - Returns whether Base Mosaic is currently enabled on the +# given GPU. Querying the valid values of this attribute returns capabilities. +# + +NV_CTRL_BASE_MOSAIC = 398 # R--G +NV_CTRL_BASE_MOSAIC_DISABLED = 0 +NV_CTRL_BASE_MOSAIC_FULL = 1 +NV_CTRL_BASE_MOSAIC_LIMITED = 2 + +# +# NV_CTRL_MULTIGPU_MASTER_POSSIBLE - Returns whether the GPU can be configured +# as the master GPU in a Multi GPU configuration (SLI, SLI Mosaic, +# Base Mosaic). +# + +NV_CTRL_MULTIGPU_MASTER_POSSIBLE = 399 # R--G +NV_CTRL_MULTIGPU_MASTER_POSSIBLE_FALSE = 0 +NV_CTRL_MULTIGPU_MASTER_POSSIBLE_TRUE = 1 + +# +# NV_CTRL_GPU_POWER_MIZER_DEFAULT_MODE - Returns the default PowerMizer mode +# for the given GPU. +# +NV_CTRL_GPU_POWER_MIZER_DEFAULT_MODE = 400 # R--G + +# +# NV_CTRL_XV_SYNC_TO_DISPLAY_ID - When XVideo Sync To VBlank is enabled, this +# controls which display device will be synched to if the display is enabled. +# Returns NV_CTRL_XV_SYNC_TO_DISPLAY_ID_AUTO if no display has been +# selected. +# +NV_CTRL_XV_SYNC_TO_DISPLAY_ID = 401 # RW- +NV_CTRL_XV_SYNC_TO_DISPLAY_ID_AUTO = 0xFFFFFFFF + +# +# NV_CTRL_BACKLIGHT_BRIGHTNESS - The backlight brightness of an internal panel. +# +NV_CTRL_BACKLIGHT_BRIGHTNESS = 402 # RWD- + +# +# NV_CTRL_GPU_LOGO_BRIGHTNESS - Controls brightness +# of the logo on the GPU, if any. The value is variable from 0% - 100%. +# +NV_CTRL_GPU_LOGO_BRIGHTNESS = 403 # RW-G + +# +# NV_CTRL_GPU_SLI_LOGO_BRIGHTNESS - Controls brightness of the logo +# on the SLI bridge, if any. The value is variable from 0% - 100%. +# +NV_CTRL_GPU_SLI_LOGO_BRIGHTNESS = 404 # RW-G + +# +# NV_CTRL_THERMAL_COOLER_SPEED - Returns cooler's current operating speed in +# rotations per minute (RPM). +# + +NV_CTRL_THERMAL_COOLER_SPEED = 405 # R--C + +# +# NV_CTRL_PALETTE_UPDATE_EVENT - The Color Palette has been changed and the +# color correction info needs to be updated. +# + +NV_CTRL_PALETTE_UPDATE_EVENT = 406 # --- + +# +# NV_CTRL_VIDEO_ENCODER_UTILIZATION - Returns the video encoder engine +# utilization as a percentage. +# +NV_CTRL_VIDEO_ENCODER_UTILIZATION = 407 # R--G + +# +# NV_CTRL_GSYNC_ALLOWED - when TRUE, OpenGL will enable G-SYNC when possible; +# when FALSE, OpenGL will always use a fixed monitor refresh rate. +# + +NV_CTRL_GSYNC_ALLOWED = 408 # RW-X +NV_CTRL_GSYNC_ALLOWED_FALSE = 0 +NV_CTRL_GSYNC_ALLOWED_TRUE = 1 + +# +# NV_CTRL_GPU_NVCLOCK_OFFSET - This attribute controls the GPU clock offsets +# (in MHz) used for overclocking per performance level. +# Use the display_mask parameter to specify the performance level. +# +# Note: To enable overclocking support, set the X configuration +# option "Coolbits" to value "8". +# +# This offset can have any integer value between +# NVCTRLAttributeValidValues.u.range.min and +# NVCTRLAttributeValidValues.u.range.max (inclusive). +# +# This attribute is available on GeForce GTX 400 series and later +# Geforce GPUs. +# +NV_CTRL_GPU_NVCLOCK_OFFSET = 409 # RW-G + +# +# NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET - This attribute controls +# the memory transfer rate offsets (in MHz) used for overclocking +# per performance level. +# Use the display_mask parameter to specify the performance level. +# +# Note: To enable overclocking support, set the X configuration +# option "Coolbits" to value "8". +# +# This offset can have any integer value between +# NVCTRLAttributeValidValues.u.range.min and +# NVCTRLAttributeValidValues.u.range.max (inclusive). +# +# This attribute is available on GeForce GTX 400 series and later +# Geforce GPUs. +# +NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET = 410 # RW-G + +# +# NV_CTRL_VIDEO_DECODER_UTILIZATION - Returns the video decoder engine +# utilization as a percentage. +# +NV_CTRL_VIDEO_DECODER_UTILIZATION = 411 # R--G + +# +# NV_CTRL_GPU_OVER_VOLTAGE_OFFSET - This attribute controls +# the overvoltage offset in microvolts (uV). +# +# Note: To enable overvoltage support, set the X configuration +# option "Coolbits" to value "16". +# +# This offset can have any integer value between +# NVCTRLAttributeValidValues.u.range.min and +# NVCTRLAttributeValidValues.u.range.max (inclusive). +# +# This attribute is available on GeForce GTX 400 series and later +# Geforce GPUs. +# + +NV_CTRL_GPU_OVER_VOLTAGE_OFFSET = 412 # RW-G + +# +# NV_CTRL_GPU_CURRENT_CORE_VOLTAGE - This attribute returns the +# GPU's current operating voltage in microvolts (uV). +# +# This attribute is available on GPUs that support +# NV_CTRL_GPU_OVER_VOLTAGE_OFFSET. +# +NV_CTRL_GPU_CURRENT_CORE_VOLTAGE = 413 # R--G + +# +# NV_CTRL_CURRENT_COLOR_SPACE - Returns the current color space of the video +# signal. +# +# This will match NV_CTRL_COLOR_SPACE unless the current mode on this display +# device is an HDMI 2.0 4K@60Hz mode and the display device or GPU does not +# support driving this mode in RGB, in which case YCbCr420 will be returned. +# +NV_CTRL_CURRENT_COLOR_SPACE = 414 # R-DG +NV_CTRL_CURRENT_COLOR_SPACE_RGB = 0 +NV_CTRL_CURRENT_COLOR_SPACE_YCbCr422 = 1 +NV_CTRL_CURRENT_COLOR_SPACE_YCbCr444 = 2 +NV_CTRL_CURRENT_COLOR_SPACE_YCbCr420 = 3 + +# +# NV_CTRL_CURRENT_COLOR_RANGE - Returns the current color range of the video +# signal. +# +NV_CTRL_CURRENT_COLOR_RANGE = 415 # R-DG +NV_CTRL_CURRENT_COLOR_RANGE_FULL = 0 +NV_CTRL_CURRENT_COLOR_RANGE_LIMITED = 1 + +# +# NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR - when TRUE, OpenGL will indicate when +# G-SYNC is in use for full-screen applications. +# + +NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR = 416 # RW-X +NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR_FALSE = 0 +NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR_TRUE = 1 + +# +# NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL - Returns cooler's current +# operating level. This may fluctuate dynamically. When +# NV_CTRL_GPU_COOLER_MANUAL_CONTROL=TRUE, the driver attempts +# to make this match NV_CTRL_THERMAL_COOLER_LEVEL. When +# NV_CTRL_GPU_COOLER_MANUAL_CONTROL=FALSE, the driver adjusts the +# current level based on the needs of the GPU. +# + +NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL = 417 # R--C + +# +# NV_CTRL_STEREO_SWAP_MODE - This attribute controls the swap mode when +# Quad-Buffered stereo is used. +# NV_CTRL_STEREO_SWAP_MODE_APPLICATION_CONTROL : Stereo swap mode is derived +# from the value of swap interval. +# If it's odd, the per eye swap mode is used. +# If it's even, the per eye pair swap mode is used. +# NV_CTRL_STEREO_SWAP_MODE_PER_EYE : The driver swaps each eye as it is ready. +# NV_CTRL_STEREO_SWAP_MODE_PER_EYE_PAIR : The driver waits for both eyes to +# complete rendering before swapping. +# + +NV_CTRL_STEREO_SWAP_MODE = 418 # RW-X +NV_CTRL_STEREO_SWAP_MODE_APPLICATION_CONTROL = 0 +NV_CTRL_STEREO_SWAP_MODE_PER_EYE = 1 +NV_CTRL_STEREO_SWAP_MODE_PER_EYE_PAIR = 2 + +# +# NV_CTRL_CURRENT_XV_SYNC_TO_DISPLAY_ID - When XVideo Sync To VBlank is +# enabled, this returns the display id of the device currently synched to. +# Returns NV_CTRL_XV_SYNC_TO_DISPLAY_ID_AUTO if no display is currently +# set. +# + +NV_CTRL_CURRENT_XV_SYNC_TO_DISPLAY_ID = 419 # R-- + +# +# NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED - Returns true if the +# Quadro Sync card connected to this GPU has a firmware version incompatible +# with this GPU. +# + +NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED = 420 # R--G +NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_FALSE = 0 +NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_TRUE = 1 + +# +# NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE - Returns the connector type used by +# a DisplayPort display. +# + +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE = 421 # R-DG +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_UNKNOWN = 0 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_DISPLAYPORT = 1 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_HDMI = 2 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_DVI = 3 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_VGA = 4 + +# +# NV_CTRL_DISPLAYPORT_IS_MULTISTREAM - Returns multi-stream support for +# DisplayPort displays. +# +NV_CTRL_DISPLAYPORT_IS_MULTISTREAM = 422 # R-DG + +# +# NV_CTRL_DISPLAYPORT_SINK_IS_AUDIO_CAPABLE - Returns whether a DisplayPort +# device supports audio. +# +NV_CTRL_DISPLAYPORT_SINK_IS_AUDIO_CAPABLE = 423 # R-DG + +# +# NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS - This attribute +# controls the GPU clock offsets (in MHz) used for overclocking. +# The offset is applied to all performance levels. +# +# Note: To enable overclocking support, set the X configuration +# option "Coolbits" to value "8". +# +# This offset can have any integer value between +# NVCTRLAttributeValidValues.u.range.min and +# NVCTRLAttributeValidValues.u.range.max (inclusive). +# +# This attribute is available on GeForce GTX 1000 series and later +# Geforce GPUs. +# +NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS = 424 # RW-G + +# +# NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS - This +# attribute controls the memory transfer rate offsets (in MHz) used +# for overclocking. The offset is applied to all performance levels. +# +# Note: To enable overclocking support, set the X configuration +# option "Coolbits" to value "8". +# +# This offset can have any integer value between +# NVCTRLAttributeValidValues.u.range.min and +# NVCTRLAttributeValidValues.u.range.max (inclusive). +# +# This attribute is available on GeForce GTX 1000 series and later +# Geforce GPUs. +# +NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS = 425 # RW-G + +# +# NV_CTRL_FRAMELOCK_FIRMWARE_VERSION - Queries the firmware major version of +# the Frame Lock device. +# +# This attribute must be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK target. +# + +NV_CTRL_FRAMELOCK_FIRMWARE_VERSION = 426 # R--F + +# +# NV_CTRL_FRAMELOCK_FIRMWARE_MINOR_VERSION - Queries the firmware minor +# version of the Frame Lock device. +# +# This attribute must be queried through XNVCTRLQueryTargetAttribute() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK target. +# + +NV_CTRL_FRAMELOCK_FIRMWARE_MINOR_VERSION = 427 # R--F + +# +# NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR - when TRUE, graphics APIs will +# indicate various runtime information such as flip/blit, vsync status, API +# in use. +# + +NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR = 428 # RW-X +NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR_FALSE = 0 +NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR_TRUE = 1 + +NV_CTRL_LAST_ATTRIBUTE = NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR + +############################################################################ + +# +# String Attributes: +# +# String attributes can be queryied through the XNVCTRLQueryStringAttribute() +# and XNVCTRLQueryTargetStringAttribute() function calls. +# +# String attributes can be set through the XNVCTRLSetStringAttribute() +# function call. (There are currently no string attributes that can be +# set on non-X Screen targets.) +# +# Unless otherwise noted, all string attributes can be queried/set using an +# NV_CTRL_TARGET_TYPE_X_SCREEN target. Attributes that cannot take an +# NV_CTRL_TARGET_TYPE_X_SCREEN target also cannot be queried/set through +# XNVCTRLQueryStringAttribute()/XNVCTRLSetStringAttribute() (Since +# these assume an X Screen target). +# + + +# +# NV_CTRL_STRING_PRODUCT_NAME - the product name on which the +# specified X screen is running, or the product name of the specified +# Frame Lock device. +# +# This attribute may be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target to +# return the product name of the GPU, or a NV_CTRL_TARGET_TYPE_FRAMELOCK to +# return the product name of the Frame Lock device. +# + +NV_CTRL_STRING_PRODUCT_NAME = 0 # R--GF + +# +# NV_CTRL_STRING_VBIOS_VERSION - the video bios version on the GPU on +# which the specified X screen is running. +# + +NV_CTRL_STRING_VBIOS_VERSION = 1 # R--G + +# +# NV_CTRL_STRING_NVIDIA_DRIVER_VERSION - string representation of the +# NVIDIA driver version number for the NVIDIA X driver in use. +# + +NV_CTRL_STRING_NVIDIA_DRIVER_VERSION = 3 # R--G + +# +# NV_CTRL_STRING_DISPLAY_DEVICE_NAME - name of the display device +# specified in the display_mask argument. +# +# This attribute may be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_STRING_DISPLAY_DEVICE_NAME = 4 # R-DG + +# +# NV_CTRL_STRING_TV_ENCODER_NAME - not supported +# + +NV_CTRL_STRING_TV_ENCODER_NAME = 5 # not supported + +# +# NV_CTRL_STRING_GVIO_FIRMWARE_VERSION - indicates the version of the +# Firmware on the GVIO device. +# + +NV_CTRL_STRING_GVIO_FIRMWARE_VERSION = 8 # R--I + +# +# NV_CTRL_STRING_GVO_FIRMWARE_VERSION - renamed +# +# NV_CTRL_STRING_GVIO_FIRMWARE_VERSION should be used instead. +# +NV_CTRL_STRING_GVO_FIRMWARE_VERSION = 8 # renamed + +# +# NV_CTRL_STRING_CURRENT_MODELINE - Return the ModeLine currently +# being used by the specified display device. +# +# This attribute may be queried through XNVCTRLQueryTargetStringAttribute() +# using an NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# +# The ModeLine string may be prepended with a comma-separated list of +# "token=value" pairs, separated from the ModeLine string by "::". +# This "token=value" syntax is the same as that used in +# NV_CTRL_BINARY_DATA_MODELINES +# + +NV_CTRL_STRING_CURRENT_MODELINE = 9 # R-DG + +# +# NV_CTRL_STRING_ADD_MODELINE - Adds a ModeLine to the specified +# display device. The ModeLine is not added if validation fails. +# +# The ModeLine string should have the same syntax as a ModeLine in +# the X configuration file; e.g., +# +# "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync +# + +NV_CTRL_STRING_ADD_MODELINE = 10 # -WDG + +# +# NV_CTRL_STRING_DELETE_MODELINE - Deletes an existing ModeLine +# from the specified display device. The currently selected +# ModeLine cannot be deleted. (This also means you cannot delete +# the last ModeLine.) +# +# The ModeLine string should have the same syntax as a ModeLine in +# the X configuration file; e.g., +# +# "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync +# + +NV_CTRL_STRING_DELETE_MODELINE = 11 # -WDG + +# +# NV_CTRL_STRING_CURRENT_METAMODE - Returns the metamode currently +# being used by the specified X screen. The MetaMode string has the +# same syntax as the MetaMode X configuration option, as documented +# in the NVIDIA driver README. +# +# The returned string may be prepended with a comma-separated list of +# "token=value" pairs, separated from the MetaMode string by "::". +# This "token=value" syntax is the same as that used in +# NV_CTRL_BINARY_DATA_METAMODES. +# + +NV_CTRL_STRING_CURRENT_METAMODE = 12 # RW-- +NV_CTRL_STRING_CURRENT_METAMODE_VERSION_1 = NV_CTRL_STRING_CURRENT_METAMODE + +# +# NV_CTRL_STRING_ADD_METAMODE - Adds a MetaMode to the specified +# X Screen. +# +# It is recommended to not use this attribute, but instead use +# NV_CTRL_STRING_OPERATION_ADD_METAMODE. +# + +NV_CTRL_STRING_ADD_METAMODE = 13 # -W-- + +# +# NV_CTRL_STRING_DELETE_METAMODE - Deletes an existing MetaMode from +# the specified X Screen. The currently selected MetaMode cannot be +# deleted. (This also means you cannot delete the last MetaMode). +# The MetaMode string should have the same syntax as the MetaMode X +# configuration option, as documented in the NVIDIA driver README. +# + +NV_CTRL_STRING_DELETE_METAMODE = 14 # -WD-- + +# +# NV_CTRL_STRING_VCSC_PRODUCT_NAME - deprecated +# +# Queries the product name of the VCSC device. +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# + +NV_CTRL_STRING_VCSC_PRODUCT_NAME = 15 # R---V + +# +# NV_CTRL_STRING_VCSC_PRODUCT_ID - deprecated +# +# Queries the product ID of the VCSC device. +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# + +NV_CTRL_STRING_VCSC_PRODUCT_ID = 16 # R---V + +# +# NV_CTRL_STRING_VCSC_SERIAL_NUMBER - deprecated +# +# Queries the unique serial number of the VCS device. +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# + +NV_CTRL_STRING_VCSC_SERIAL_NUMBER = 17 # R---V + +# +# NV_CTRL_STRING_VCSC_BUILD_DATE - deprecated +# +# Queries the date of the VCS device. the returned string is in the following +# format: "Week.Year" +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# + +NV_CTRL_STRING_VCSC_BUILD_DATE = 18 # R---V + +# +# NV_CTRL_STRING_VCSC_FIRMWARE_VERSION - deprecated +# +# Queries the firmware version of the VCS device. +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# + +NV_CTRL_STRING_VCSC_FIRMWARE_VERSION = 19 # R---V + +# +# NV_CTRL_STRING_VCSC_FIRMWARE_REVISION - deprecated +# +# Queries the firmware revision of the VCS device. +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCS target. +# + +NV_CTRL_STRING_VCSC_FIRMWARE_REVISION = 20 # R---V + +# +# NV_CTRL_STRING_VCSC_HARDWARE_VERSION - deprecated +# +# Queries the hardware version of the VCS device. +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# + +NV_CTRL_STRING_VCSC_HARDWARE_VERSION = 21 # R---V + +# +# NV_CTRL_STRING_VCSC_HARDWARE_REVISION - deprecated +# +# Queries the hardware revision of the VCS device. +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# + +NV_CTRL_STRING_VCSC_HARDWARE_REVISION = 22 # R---V + +# +# NV_CTRL_STRING_MOVE_METAMODE - Moves a MetaMode to the specified +# index location. The MetaMode must already exist in the X Screen's +# list of MetaModes (as returned by the NV_CTRL_BINARY_DATA_METAMODES +# attribute). If the index is larger than the number of MetaModes in +# the list, the MetaMode is moved to the end of the list. The +# MetaMode string should have the same syntax as the MetaMode X +# configuration option, as documented in the NVIDIA driver README. + +# The MetaMode string must be prepended with a comma-separated list +# of "token=value" pairs, separated from the MetaMode string by "::". +# Currently, the only valid token is "index", which indicates where +# in the MetaMode list the MetaMode should be moved to. +# +# Other tokens may be added in the future. +# +# E.g., +# "index=5 :: CRT-0: 1024x768 @1024x768 +0+0" +# + +NV_CTRL_STRING_MOVE_METAMODE = 23 # -W-- + +# +# NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES - returns the valid +# horizontal sync ranges used to perform mode validation for the +# specified display device. The ranges are in the same format as the +# "HorizSync" X config option: +# +# "horizsync-range may be a comma separated list of either discrete +# values or ranges of values. A range of values is two values +# separated by a dash." +# +# The values are in kHz. +# +# Additionally, the string may be prepended with a comma-separated +# list of "token=value" pairs, separated from the HorizSync string by +# "::". Valid tokens: +# +# Token Value +# "source" "edid" - HorizSync is from the display device's EDID +# "xconfig" - HorizSync is from the "HorizSync" entry in +# the Monitor section of the X config file +# "option" - HorizSync is from the "HorizSync" NVIDIA X +# config option +# "builtin" - HorizSync is from NVIDIA X driver builtin +# default values +# +# Additional tokens and/or values may be added in the future. +# +# Example: "source=edid :: 30.000-62.000" +# + +NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES = 24 # R-DG + +# +# NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES - returns the valid +# vertical refresh ranges used to perform mode validation for the +# specified display device. The ranges are in the same format as the +# "VertRefresh" X config option: +# +# "vertrefresh-range may be a comma separated list of either discrete +# values or ranges of values. A range of values is two values +# separated by a dash." +# +# The values are in Hz. +# +# Additionally, the string may be prepended with a comma-separated +# list of "token=value" pairs, separated from the VertRefresh string by +# "::". Valid tokens: +# +# Token Value +# "source" "edid" - VertRefresh is from the display device's EDID +# "xconfig" - VertRefresh is from the "VertRefresh" entry in +# the Monitor section of the X config file +# "option" - VertRefresh is from the "VertRefresh" NVIDIA X +# config option +# "builtin" - VertRefresh is from NVIDIA X driver builtin +# default values +# +# Additional tokens and/or values may be added in the future. +# +# Example: "source=edid :: 50.000-75.000" +# + +NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES = 25 # R-DG + +# +# NV_CTRL_STRING_SCREEN_RECTANGLE - returns the physical X Screen's +# initial position and size (in absolute coordinates) within the +# desktop as the "token=value" string: "x=#, y=#, width=#, height=#" +# +# Querying this attribute returns success only when Xinerama is enabled +# or the X server ABI is greater than equal to 12. +# + +NV_CTRL_STRING_SCREEN_RECTANGLE = 26 # R--- + +# +# NV_CTRL_STRING_XINERAMA_SCREEN_INFO - renamed +# +# NV_CTRL_STRING_SCREEN_RECTANGLE should be used instead. +# + +NV_CTRL_STRING_XINERAMA_SCREEN_INFO = 26 # renamed + +# +# NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER - used to specify the +# order that display devices will be returned via Xinerama when +# nvidiaXineramaInfo is enabled. Follows the same syntax as the +# nvidiaXineramaInfoOrder X config option. +# + +NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER = 27 # RW-- + +NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER = NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER # for backwards compatibility: + +# +# NV_CTRL_STRING_SLI_MODE - returns a string describing the current +# SLI mode, if any, or FALSE if SLI is not currently enabled. +# +# This string should be used for informational purposes only, and +# should not be used to distinguish between SLI modes, other than to +# recognize when SLI is disabled (FALSE is returned) or +# enabled (the returned string is non-NULL and describes the current +# SLI configuration). +# + +NV_CTRL_STRING_SLI_MODE = 28 # R---*/ + +# +# NV_CTRL_STRING_PERFORMANCE_MODES - returns a string with all the +# performance modes defined for this GPU along with their associated +# NV Clock and Memory Clock values. +# Not all tokens will be reported on all GPUs, and additional tokens +# may be added in the future. +# For backwards compatibility we still provide nvclock, memclock, and +# processorclock those are the same as nvclockmin, memclockmin and +# processorclockmin. +# +# Note: These clock values take into account the offset +# set by clients through NV_CTRL_GPU_NVCLOCK_OFFSET and +# NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET. +# +# Each performance modes are returned as a comma-separated list of +# "token=value" pairs. Each set of performance mode tokens are separated +# by a ";". Valid tokens: +# +# Token Value +# "perf" integer - the Performance level +# "nvclock" integer - the GPU clocks (in MHz) for the perf level +# "nvclockmin" integer - the GPU clocks min (in MHz) for the perf level +# "nvclockmax" integer - the GPU clocks max (in MHz) for the perf level +# "nvclockeditable" integer - if the GPU clock domain is editable +# for the perf level +# "memclock" integer - the memory clocks (in MHz) for the perf level +# "memclockmin" integer - the memory clocks min (in MHz) for the perf level +# "memclockmax" integer - the memory clocks max (in MHz) for the perf level +# "memclockeditable" integer - if the memory clock domain is editable +# for the perf level +# "memtransferrate" integer - the memory transfer rate (in MHz) +# for the perf level +# "memtransferratemin" integer - the memory transfer rate min (in MHz) +# for the perf level +# "memtransferratemax" integer - the memory transfer rate max (in MHz) +# for the perf level +# "memtransferrateeditable" integer - if the memory transfer rate is editable +# for the perf level +# "processorclock" integer - the processor clocks (in MHz) +# for the perf level +# "processorclockmin" integer - the processor clocks min (in MHz) +# for the perf level +# "processorclockmax" integer - the processor clocks max (in MHz) +# for the perf level +# "processorclockeditable" integer - if the processor clock domain is editable +# for the perf level +# +# Example: +# +# perf=0, nvclock=324, nvclockmin=324, nvclockmax=324, nvclockeditable=0, +# memclock=324, memclockmin=324, memclockmax=324, memclockeditable=0, +# memtransferrate=648, memtransferratemin=648, memtransferratemax=648, +# memtransferrateeditable=0 ; +# perf=1, nvclock=324, nvclockmin=324, nvclockmax=640, nvclockeditable=0, +# memclock=810, memclockmin=810, memclockmax=810, memclockeditable=0, +# memtransferrate=1620, memtransferrate=1620, memtransferrate=1620, +# memtransferrateeditable=0 ; +# +# This attribute may be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_STRING_PERFORMANCE_MODES = 29 # R--G + +# +# NV_CTRL_STRING_VCSC_FAN_STATUS - deprecated +# +# Returns a string with status of all the fans in the Visual Computing System, +# if such a query is supported. Fan information is reported along with its +# tachometer reading (in RPM) and a flag indicating whether the fan has failed +# or not. +# +# Valid tokens: +# +# Token Value +# "fan" integer - the Fan index +# "speed" integer - the tachometer reading of the fan in rpm +# "fail" integer - flag to indicate whether the fan has failed +# +# Example: +# +# fan=0, speed=694, fail=0 ; fan=1, speed=693, fail=0 +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# +# + +NV_CTRL_STRING_VCSC_FAN_STATUS = 30 # R---V + +# +# NV_CTRL_STRING_VCSC_TEMPERATURES - Deprecated +# +# Returns a string with all Temperature readings in the Visual Computing +# System, if such a query is supported. Intake, Exhaust and Board Temperature +# values are reported in Celcius. +# +# Valid tokens: +# +# Token Value +# "intake" integer - the intake temperature for the VCS +# "exhaust" integer - the exhaust temperature for the VCS +# "board" integer - the board temperature of the VCS +# +# Example: +# +# intake=29, exhaust=46, board=41 +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# +# + +NV_CTRL_STRING_VCSC_TEMPERATURES = 31 # R---V + +# +# NV_CTRL_STRING_VCSC_PSU_INFO - Deprecated +# +# Returns a string with all Power Supply Unit related readings in the Visual +# Computing System, if such a query is supported. Current in amperes, Power +# in watts, Voltage in volts and PSU state may be reported. Not all PSU types +# support all of these values, and therefore some readings may be unknown. +# +# Valid tokens: +# +# Token Value +# "current" integer - the current drawn in amperes by the VCS +# "power" integer - the power drawn in watts by the VCS +# "voltage" integer - the voltage reading of the VCS +# "state" integer - flag to indicate whether PSU is operating normally +# +# Example: +# +# current=10, power=15, voltage=unknown, state=normal +# +# This attribute must be queried through XNVCTRLQueryTargetStringAttribute() +# using a NV_CTRL_TARGET_TYPE_VCSC target. +# +# + + +NV_CTRL_STRING_VCSC_PSU_INFO = 32 # R---V + +# +# NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME - query the name for the specified +# NV_CTRL_GVIO_VIDEO_FORMAT_*. So that this can be queried with existing +# interfaces, XNVCTRLQueryStringAttribute() should be used, and the video +# format specified in the display_mask field; eg: +# +# XNVCTRLQueryStringAttribute(dpy, +# screen, +# NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296, +# NV_CTRL_GVIO_VIDEO_FORMAT_NAME, +# &name); +# + +NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME = 33 # R--GI + +# +# NV_CTRL_STRING_GVO_VIDEO_FORMAT_NAME - renamed +# +# NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME should be used instead. +# +NV_CTRL_STRING_GVO_VIDEO_FORMAT_NAME = 33 # renamed + +# +# NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS - returns a string with the +# associated NV Clock, Memory Clock and Processor Clock values. +# +# Current valid tokens are "nvclock", "nvclockmin", "nvclockmax", +# "memclock", "memclockmin", "memclockmax", "processorclock", +# "processorclockmin" and "processorclockmax". +# Not all tokens will be reported on all GPUs, and additional tokens +# may be added in the future. +# +# Note: These clock values take into account the offset +# set by clients through NV_CTRL_GPU_NVCLOCK_OFFSET and +# NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET. +# +# Clock values are returned as a comma-separated list of +# "token=value" pairs. +# Valid tokens: +# +# Token Value +# "nvclock" integer - the GPU clocks (in MHz) for the perf level +# "nvclockmin" integer - the GPU clocks min (in MHz) for the perf level +# "nvclockmax" integer - the GPU clocks max (in MHz) for the perf level +# "nvclockeditable" integer - if the GPU clock domain is editable +# for the perf level +# "memclock" integer - the memory clocks (in MHz) for the perf level +# "memclockmin" integer - the memory clocks min (in MHz) for the perf level +# "memclockmax" integer - the memory clocks (max in MHz) for the perf level +# "memclockeditable" integer - if the memory clock domain is editable +# for the perf level +# "memtransferrate" integer - the memory transfer rate (in MHz) +# for the perf level +# "memtransferratemin" integer - the memory transfer rate min (in MHz) +# for the perf level +# "memtransferratemax" integer - the memory transfer rate max (in MHz) +# for the perf level +# "memtransferrateeditable" integer - if the memory transfer rate is editable +# for the perf level +# "processorclock" integer - the processor clocks (in MHz) +# for the perf level +# "processorclockmin" integer - the processor clocks min (in MHz) +# for the perf level +# "processorclockmax" integer - the processor clocks max (in MHz) +# for the perf level +# "processorclockeditable" integer - if the processor clock domain is editable +# for the perf level +# +# Example: +# +# nvclock=324, nvclockmin=324, nvclockmax=324, nvclockeditable=0 +# memclock=324, memclockmin=324, memclockmax=324, memclockeditable=0 +# memtrasferrate=628 +# +# This attribute may be queried through XNVCTRLQueryTargetStringAttribute() +# using an NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS = 34 # RW-G + +# +# NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION - Returns the +# hardware revision of the 3D Vision Pro transceiver. +# +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION = 35 # R--T + +# +# NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A - Returns the +# firmware version of chip A of the 3D Vision Pro transceiver. +# +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A = 36 # R--T + +# +# NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A - Returns the +# date of the firmware of chip A of the 3D Vision Pro transceiver. +# +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A = 37 # R--T + +# +# NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B - Returns the +# firmware version of chip B of the 3D Vision Pro transceiver. +# +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B = 38 # R--T + +# +# NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B - Returns the +# date of the firmware of chip B of the 3D Vision Pro transceiver. +# +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B = 39 # R--T + +# +# NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS - Returns the RF address +# of the 3D Vision Pro transceiver. +# +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS = 40 # R--T + +# +# NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A - Returns the +# firmware version of chip A of the glasses. +# Use the display_mask parameter to specify the glasses id. +# +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A = 41 # R--T + +# +# NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A - Returns the +# date of the firmware of chip A of the glasses. +# Use the display_mask parameter to specify the glasses id. +# +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A = 42 # R--T + +# +# NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS - Returns the RF address +# of the glasses. +# Use the display_mask parameter to specify the glasses id. +# +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS = 43 # R--T + +# +# NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME - Controls the name the +# glasses should use. +# Use the display_mask parameter to specify the glasses id. +# Glasses' name should start and end with an alpha-numeric character. +# +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME = 44 # RW-T + +# +# NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 - Returns the metamode currently +# being used by the specified X screen. The MetaMode string has the same +# syntax as the MetaMode X configuration option, as documented in the NVIDIA +# driver README. Also, see NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 for more +# details on the base syntax. +# +# The returned string may also be prepended with a comma-separated list of +# "token=value" pairs, separated from the MetaMode string by "::". +# +NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 = 45 # RW-- + +# +# NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME - Returns a type name for the +# display device ("CRT", "DFP", or "TV"). However, note that the determination +# of the name is based on the protocol through which the X driver communicates +# to the display device. E.g., if the driver communicates using VGA ,then the +# basename is "CRT"; if the driver communicates using TMDS, LVDS, or DP, then +# the name is "DFP". +# +NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME = 46 # R-D- + +# +# NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID - Returns the type-based name + ID for +# the display device, e.g. "CRT-0", "DFP-1", "TV-2". If this device is a +# DisplayPort multistream device, then this name will also be prepended with the +# device's port address like so: "DFP-1.0.1.2.3". See +# NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME for more information about the +# construction of type-based names. +# +NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID = 47 # R-D- + +# +# NV_CTRL_STRING_DISPLAY_NAME_DP_GUID - Returns the GUID of the DisplayPort +# display device. e.g. "DP-GUID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c" +# +# The display device must be a DisplayPort 1.2 device. +# +NV_CTRL_STRING_DISPLAY_NAME_DP_GUID = 48 # R-D- + +# +# NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH - Returns the SHA-1 hash of the +# display device's EDID in 8-4-4-4-12 UID format. e.g. +# "DPY-EDID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c" +# +# The display device must have a valid EDID. +# +NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH = 49 # R-D- + +# +# NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX - Returns the current NV-CONTROL +# target ID (name) of the display device. e.g. "DPY-1", "DPY-4" +# +# This name for the display device is not guarenteed to be the same between +# different runs of the X server. +# +NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX = 50 # R-D- + +# +# NV_CTRL_STRING_DISPLAY_NAME_RANDR - Returns the RandR output name for the +# display device. e.g. "VGA-1", "DVI-I-0", "DVI-D-3", "LVDS-1", "DP-2", +# "HDMI-3", "eDP-6". This name should match If this device is a DisplayPort +# 1.2 device, then this name will also be prepended with the device's port +# address like so: "DVI-I-3.0.1.2.3" +# +NV_CTRL_STRING_DISPLAY_NAME_RANDR = 51 # R-D- + +# +# NV_CTRL_STRING_GPU_UUID - Returns the UUID of the given GPU. +# +NV_CTRL_STRING_GPU_UUID = 52 # R--G + +# +# NV_CTRL_STRING_GPU_UTILIZATION - Returns the current percentage usage +# of the various components of the GPU. +# +# Current valid tokens are "graphics", "memory", "video" and "PCIe". +# Not all tokens will be reported on all GPUs, and additional tokens +# may be added in the future. +# +# Utilization values are returned as a comma-separated list of +# "token=value" pairs. +# Valid tokens: +# +# Token Value +# "graphics" integer - the percentage usage of graphics engine. +# "memory" integer - the percentage usage of FB. +# "video" integer - the percentage usage of video engine. +# "PCIe" integer - the percentage usage of PCIe bandwidth. +# +# +# Example: +# +# graphics=45, memory=6, video=0, PCIe=0 +# +# This attribute may be queried through XNVCTRLQueryTargetStringAttribute() +# using an NV_CTRL_TARGET_TYPE_GPU. +# +NV_CTRL_STRING_GPU_UTILIZATION = 53 # R--G + +# +# NV_CTRL_STRING_MULTIGPU_MODE - returns a string describing the current +# MULTIGPU mode, if any, or FALSE if MULTIGPU is not currently enabled. +# +NV_CTRL_STRING_MULTIGPU_MODE = 54 # R--- + +# +# NV_CTRL_STRING_PRIME_OUTPUTS_DATA - returns a semicolon delimited list of +# strings that describe all PRIME configured displays. +# +# ex. "xpos=1920, ypos=0, width=1280, height=1024, screen=0;xpos=3200, +# ypos=0, width=800, height=600, screen=0;" +# +NV_CTRL_STRING_PRIME_OUTPUTS_DATA = 55 # R--- + +NV_CTRL_STRING_LAST_ATTRIBUTE = NV_CTRL_STRING_PRIME_OUTPUTS_DATA + +############################################################################ + +# +# Binary Data Attributes: +# +# Binary data attributes can be queryied through the XNVCTRLQueryBinaryData() +# and XNVCTRLQueryTargetBinaryData() function calls. +# +# There are currently no binary data attributes that can be set. +# +# Unless otherwise noted, all Binary data attributes can be queried +# using an NV_CTRL_TARGET_TYPE_X_SCREEN target. Attributes that cannot take +# an NV_CTRL_TARGET_TYPE_X_SCREEN target also cannot be queried through +# XNVCTRLQueryBinaryData() (Since an X Screen target is assumed). +# + + +# +# NV_CTRL_BINARY_DATA_EDID - Returns a display device's EDID information +# data. +# +# This attribute may be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_BINARY_DATA_EDID = 0 # R-DG + +# +# NV_CTRL_BINARY_DATA_MODELINES - Returns a display device's supported +# ModeLines. ModeLines are returned in a buffer, separated by a single +# '\0' and terminated by two consecutive '\0' s like so: +# +# "ModeLine 1\0ModeLine 2\0ModeLine 3\0Last ModeLine\0\0" +# +# This attribute may be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. +# +# Each ModeLine string may be prepended with a comma-separated list +# of "token=value" pairs, separated from the ModeLine string with a +# "::". Valid tokens: +# +# Token Value +# "source" "xserver" - the ModeLine is from the core X server +# "xconfig" - the ModeLine was specified in the X config file +# "builtin" - the NVIDIA driver provided this builtin ModeLine +# "vesa" - this is a VESA standard ModeLine +# "edid" - the ModeLine was in the display device's EDID +# "nv-control" - the ModeLine was specified via NV-CONTROL +# +# "xconfig-name" - for ModeLines that were specified in the X config +# file, this is the name the X config file +# gave for the ModeLine. +# +# Note that a ModeLine can have several sources; the "source" token +# can appear multiple times in the "token=value" pairs list. +# Additional source values may be specified in the future. +# +# Additional tokens may be added in the future, so it is recommended +# that any token parser processing the returned string from +# NV_CTRL_BINARY_DATA_MODELINES be implemented to gracefully ignore +# unrecognized tokens. +# +# E.g., +# +# "source=xserver, source=vesa, source=edid :: "1024x768_70" 75.0 1024 1048 1184 1328 768 771 777 806 -HSync -VSync" +# "source=xconfig, xconfig-name=1600x1200_60.00 :: "1600x1200_60_0" 161.0 1600 1704 1880 2160 1200 1201 1204 1242 -HSync +VSync" +# + +NV_CTRL_BINARY_DATA_MODELINES = 1 # R-DG + +# +# NV_CTRL_BINARY_DATA_METAMODES - Returns an X Screen's supported +# MetaModes. MetaModes are returned in a buffer separated by a +# single '\0' and terminated by two consecutive '\0' s like so: +# +# "MetaMode 1\0MetaMode 2\0MetaMode 3\0Last MetaMode\0\0" +# +# The MetaMode string should have the same syntax as the MetaMode X +# configuration option, as documented in the NVIDIA driver README. + +# Each MetaMode string may be prepended with a comma-separated list +# of "token=value" pairs, separated from the MetaMode string with +# "::". Currently, valid tokens are: +# +# Token Value +# "id" - the id of this MetaMode; this is stored in +# the Vertical Refresh field, as viewed +# by the XRandR and XF86VidMode X# +# extensions. +# +# "switchable" "yes"/"no" - whether this MetaMode may be switched to via +# ctrl-alt-+/-; Implicit MetaModes (see +# the "IncludeImplicitMetaModes" X +# config option), for example, are not +# normally made available through +# ctrl-alt-+/-. +# +# "source" "xconfig" - the MetaMode was specified in the X +# config file. +# "implicit" - the MetaMode was implicitly added; see the +# "IncludeImplicitMetaModes" X config option +# for details. +# "nv-control" - the MetaMode was added via the NV-CONTROL X +# extension to the currently running X server. +# "RandR" - the MetaMode was modified in response to an +# RandR RRSetCrtcConfig request. +# +# Additional tokens may be added in the future, so it is recommended +# that any token parser processing the returned string from +# NV_CTRL_BINARY_DATA_METAMODES be implemented to gracefully ignore +# unrecognized tokens. +# +# E.g., +# +# "id=50, switchable=yes, source=xconfig :: CRT-0: 1024x768 @1024x768 +0+0" +# + +NV_CTRL_BINARY_DATA_METAMODES = 2 # R-D- +NV_CTRL_BINARY_DATA_METAMODES_VERSION_1 = NV_CTRL_BINARY_DATA_METAMODES + +# +# NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU - Returns the list of X +# screens currently driven by the given GPU. +# +# The format of the returned data is: +# +# 4 CARD32 number of screens +# 4# n CARD32 screen indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be +# queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. +# + +NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU = 3 # R-DG + +# +# NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN - Returns the list of GPUs +# currently in use by the given X screen. +# +# The format of the returned data is: +# +# 4 CARD32 number of GPUs +# 4# n CARD32 GPU indices +# + +NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN = 4 # R--- + +# +# NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK - Returns the list of +# GPUs currently connected to the given frame lock board. +# +# The format of the returned data is: +# +# 4 CARD32 number of GPUs +# 4# n CARD32 GPU indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_FRAMELOCK target. This attribute cannot be +# queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. +# + +NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK = 5 # R-DF + +# +# NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT - Returns the Display Device's +# viewport box into the given X Screen (in X Screen coordinates.) +# +# The format of the returned data is: +# +# 4 CARD32 Offset X +# 4 CARD32 Offset Y +# 4 CARD32 Width +# 4 CARD32 Height +# + +NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT = 6 # R-DG + +# +# NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU - Returns the list of +# Framelock devices currently connected to the given GPU. +# +# The format of the returned data is: +# +# 4 CARD32 number of Framelocks +# 4# n CARD32 Framelock indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be +# queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. +# + +NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU = 7 # R-DG + +# +# NV_CTRL_BINARY_DATA_GPUS_USING_VCSC - Deprecated +# +# Returns the list of GPU devices connected to the given VCS. +# +# The format of the returned data is: +# +# 4 CARD32 number of GPUs +# 4# n CARD32 GPU indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_VCSC target. This attribute cannot be +# queried using a NV_CTRL_TARGET_TYPE_X_SCREEN and cannot be queried using +# a NV_CTRL_TARGET_TYPE_X_GPU +# + +NV_CTRL_BINARY_DATA_GPUS_USING_VCSC = 8 # R-DV + +# +# NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU - Deprecated +# +# Returns the VCSC device that is controlling the given GPU. +# +# The format of the returned data is: +# +# 4 CARD32 number of VCS (always 1) +# 4# n CARD32 VCS indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be +# queried using a NV_CTRL_TARGET_TYPE_X_SCREEN +# + +NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU = 9 # R-DG + +# +# NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU - Returns the coolers that +# are cooling the given GPU. +# +# The format of the returned data is: +# +# 4 CARD32 number of COOLER +# 4# n CARD32 COOLER indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be +# queried using a NV_CTRL_TARGET_TYPE_X_SCREEN +# + +NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU = 10 # R-DG + +# +# NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN - Returns the list of +# GPUs currently driving the given X screen. If Xinerama is enabled, this +# will return all GPUs that are driving any X screen. +# +# The format of the returned data is: +# +# 4 CARD32 number of GPUs +# 4# n CARD32 GPU indices +# + +NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN = 11 # R--- + +# +# NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU - Returns the sensors that +# are attached to the given GPU. +# +# The format of the returned data is: +# +# 4 CARD32 number of SENSOR +# 4# n CARD32 SENSOR indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be +# queried using a NV_CTRL_TARGET_TYPE_X_SCREEN +# + +NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU = 12 # R--G + +# +# NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER - Returns +# the id of the glasses that are currently paired to the given +# 3D Vision Pro transceiver. +# +# The format of the returned data is: +# +# 4 CARD32 number of glasses +# 4# n CARD32 id of glasses +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER target. +# +NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER = 13 # R--T + +# +# NV_CTRL_BINARY_DATA_DISPLAY_TARGETS - Returns all the display devices +# currently connected to any GPU on the X server. +# +# The format of the returned data is: +# +# 4 CARD32 number of display devices +# 4# n CARD32 display device indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData(). +# + +NV_CTRL_BINARY_DATA_DISPLAY_TARGETS = 14 # R--- + +# +# NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU - Returns the list of +# display devices that are connected to the GPU target. +# +# The format of the returned data is: +# +# 4 CARD32 number of display devices +# 4# n CARD32 display device indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU target. +# + +NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU = 15 # R--G + +# +# NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 - Returns values similar to +# NV_CTRL_BINARY_DATA_METAMODES(_VERSION_1) but also returns extended syntax +# information to indicate a specific display device, as well as other per- +# display deviceflags as "token=value" pairs. For example: +# +# "DPY-1: 1280x1024 {Stereo=PassiveLeft}, +# DPY-2: 1280x1024 {Stereo=PassiveRight}," +# +# The display device names have the form "DPY-%d", where the integer +# part of the name is the NV-CONTROL target ID for that display device +# for this instance of the X server. Note that display device NV-CONTROL +# target IDs are not guaranteed to be the same from one run of the X +# server to the next. +# + +NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 = 16 # R-D- + +# +# NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN - Returns the list of +# display devices that are currently scanning out the X screen target. +# +# The format of the returned data is: +# +# 4 CARD32 number of display devices +# 4# n CARD32 display device indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN = 17 # R--- + +# +# NV_CTRL_BINARY_DATA_DISPLAYS_ASSIGNED_TO_XSCREEN - Returns the list of +# display devices that are currently assigned the X screen target. +# +# The format of the returned data is: +# +# 4 CARD32 number of display devices +# 4# n CARD32 display device indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + +NV_CTRL_BINARY_DATA_DISPLAYS_ASSIGNED_TO_XSCREEN = 18 # R--- + +# +# NV_CTRL_BINARY_DATA_GPU_FLAGS - Returns a list of flags for the +# given GPU. A flag can, for instance, be a capability which enables +# or disables some features according to the GPU state. +# +# The format of the returned data is: +# +# 4 CARD32 number of GPU flags +# 4# n CARD32 GPU flag +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU target. +# +NV_CTRL_BINARY_DATA_GPU_FLAGS = 19 # R--- + +# Stereo and display composition transformations are mutually exclusive. +NV_CTRL_BINARY_DATA_GPU_FLAGS_STEREO_DISPLAY_TRANSFORM_EXCLUSIVE = 0 +# Overlay and display composition transformations are mutually exclusive. +NV_CTRL_BINARY_DATA_GPU_FLAGS_OVERLAY_DISPLAY_TRANSFORM_EXCLUSIVE = 1 +# Depth 8 and display composition transformations are mutually exclusive. +NV_CTRL_BINARY_DATA_GPU_FLAGS_DEPTH_8_DISPLAY_TRANSFORM_EXCLUSIVE = 2 + +# +# NV_CTRL_BINARY_DATA_DISPLAYS_ON_GPU - Returns the list of valid +# display devices that can be connected to the GPU target. +# +# The format of the returned data is: +# +# 4 CARD32 number of display devices +# 4# n CARD32 display device indices +# +# This attribute can only be queried through XNVCTRLQueryTargetBinaryData() +# using a NV_CTRL_TARGET_TYPE_GPU target. +# + +NV_CTRL_BINARY_DATA_DISPLAYS_ON_GPU = 20 # R--G + +NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE = NV_CTRL_BINARY_DATA_DISPLAYS_ON_GPU + +############################################################################ + +# +# String Operation Attributes: +# +# These attributes are used with the XNVCTRLStringOperation() +# function; a string is specified as input, and a string is returned +# as output. +# +# Unless otherwise noted, all attributes can be operated upon using +# an NV_CTRL_TARGET_TYPE_X_SCREEN target. +# + + +# +# NV_CTRL_STRING_OPERATION_ADD_METAMODE - provide a MetaMode string +# as input, and returns a string containing comma-separated list of +# "token=value" pairs as output. Currently, the only output token is +# "id", which indicates the id that was assigned to the MetaMode. +# +# All ModeLines referenced in the MetaMode must already exist for +# each display device (as returned by the +# NV_CTRL_BINARY_DATA_MODELINES attribute). +# +# The MetaMode string should have the same syntax as the MetaMode X +# configuration option, as documented in the NVIDIA driver README. +# +# The input string can optionally be prepended with a string of +# comma-separated "token=value" pairs, separated from the MetaMode +# string by "::". Currently, the only valid token is "index" which +# indicates the insertion index for the MetaMode. +# +# E.g., +# +# Input: "index=5 :: 1600x1200+0+0, 1600x1200+1600+0" +# Output: "id=58" +# +# which causes the MetaMode to be inserted at position 5 in the +# MetaMode list (all entries after 5 will be shifted down one slot in +# the list), and the X server's containing mode stores 58 as the +# VRefresh, so that the MetaMode can be uniquely identifed through +# XRandR and XF86VidMode. +# + +NV_CTRL_STRING_OPERATION_ADD_METAMODE = 0 # ---- + +# +# NV_CTRL_STRING_OPERATION_GTF_MODELINE - provide as input a string +# of comma-separated "token=value" pairs, and returns a ModeLine +# string, computed using the GTF formula using the parameters from +# the input string. Valid tokens for the input string are "width", +# "height", and "refreshrate". +# +# E.g., +# +# Input: "width=1600, height=1200, refreshrate=60" +# Output: "160.96 1600 1704 1880 2160 1200 1201 1204 1242 -HSync +VSync" +# +# This operation does not have any impact on any display device's +# modePool, and the ModeLine is not validated; it is simply intended +# for generating ModeLines. +# + +NV_CTRL_STRING_OPERATION_GTF_MODELINE = 1 # --- + +# +# NV_CTRL_STRING_OPERATION_CVT_MODELINE - provide as input a string +# of comma-separated "token=value" pairs, and returns a ModeLine +# string, computed using the CVT formula using the parameters from +# the input string. Valid tokens for the input string are "width", +# "height", "refreshrate", and "reduced-blanking". The +# "reduced-blanking" argument can be "0" or "1", to enable or disable +# use of reduced blanking for the CVT formula. +# +# E.g., +# +# Input: "width=1600, height=1200, refreshrate=60, reduced-blanking=1" +# Output: "130.25 1600 1648 1680 1760 1200 1203 1207 1235 +HSync -VSync" +# +# This operation does not have any impact on any display device's +# modePool, and the ModeLine is not validated; it is simply intended +# for generating ModeLines. +# + +NV_CTRL_STRING_OPERATION_CVT_MODELINE = 2 # --- + +# +# NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL - build a ModePool for the +# specified display device on the specified target (either an X +# screen or a GPU). This is typically used to generate a ModePool +# for a display device on a GPU on which no X screens are present. +# +# Currently, a display device's ModePool is static for the life of +# the X server, so XNVCTRLStringOperation will return FALSE if +# requested to build a ModePool on a display device that already has +# a ModePool. +# +# The string input to BUILD_MODEPOOL may be NULL. If it is not NULL, +# then it is interpreted as a double-colon ("::") separated list +# of "option=value" pairs, where the options and the syntax of their +# values are the X configuration options that impact the behavior of +# modePool construction; namely: +# +# "ModeValidation" +# "HorizSync" +# "VertRefresh" +# "FlatPanelProperties" +# "ExactModeTimingsDVI" +# "UseEdidFreqs" +# +# An example input string might look like: +# +# "ModeValidation=NoVesaModes :: HorizSync=50-110 :: VertRefresh=50-150" +# +# This request currently does not return a string. +# + +NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL = 3 # DG + +# +# NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS - Configure the streams- +# to-jack+channel topology for a GVI (Graphics capture board). +# +# The string input to GVI_CONFIGURE_STREAMS may be NULL. If this is the +# case, then the current topology is returned. +# +# If the input string to GVI_CONFIGURE_STREAMS is not NULL, the string +# is interpreted as a semicolon (";") separated list of comma-separated +# lists of "option=value" pairs that define a stream's composition. The +# available options and their values are: +# +# "stream": Defines which stream this comma-separated list describes. +# Valid values are the integers between 0 and +# NV_CTRL_GVI_NUM_STREAMS-1 (inclusive). +# +# "linkN": Defines a jack+channel pair to use for the given link N. +# Valid options are the string "linkN", where N is an integer +# between 0 and NV_CTRL_GVI_MAX_LINKS_PER_STREAM-1 (inclusive). +# Valid values for these options are strings of the form +# "jackX" and/or "jackX.Y", where X is an integer between 0 and +# NV_CTRL_GVI_NUM_JACKS-1 (inclusive), and Y (optional) is an +# integer between 0 and NV_CTRL_GVI_MAX_CHANNELS_PER_JACK-1 +# (inclusive). +# +# An example input string might look like: +# +# "stream=0, link0=jack0, link1=jack1; stream=1, link0=jack2.1" +# +# This example specifies two streams, stream 0 and stream 1. Stream 0 +# is defined to capture link0 data from the first channel (channel 0) of +# BNC jack 0 and link1 data from the first channel of BNC jack 1. The +# second stream (Stream 1) is defined to capture link0 data from channel 1 +# (second channel) of BNC jack 2. +# +# This example shows a possible configuration for capturing 3G input: +# +# "stream=0, link0=jack0.0, link1=jack0.1" +# +# Applications should query the following attributes to determine +# possible combinations: +# +# NV_CTRL_GVI_MAX_STREAMS +# NV_CTRL_GVI_MAX_LINKS_PER_STREAM +# NV_CTRL_GVI_NUM_JACKS +# NV_CTRL_GVI_MAX_CHANNELS_PER_JACK +# +# Note: A jack+channel pair can only be tied to one link/stream. +# +# Upon successful configuration or querying of this attribute, a string +# representing the current topology for all known streams on the device +# will be returned. On failure, NULL is returned. +# +# Note: Setting this attribute may also result in the following +# NV-CONTROL attributes being reset on the GVI device (to ensure +# the configuration remains valid): +# NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT +# NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT +# NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING +# + +NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS = 4 # RW-I + +# +# NV_CTRL_STRING_OPERATION_PARSE_METAMODE - Parses the given MetaMode string +# and returns the validated MetaMode string - possibly re-calculating various +# values such as ViewPortIn. If the MetaMode matches an existing MetaMode, +# the details of the existing MetaMode are returned. If the MetaMode fails to +# be parsed, NULL is returned. +# +NV_CTRL_STRING_OPERATION_PARSE_METAMODE = 5 # R--- + +NV_CTRL_STRING_OPERATION_LAST_ATTRIBUTE = NV_CTRL_STRING_OPERATION_PARSE_METAMODE + +############################################################################### +# NV-CONTROL major op numbers. these constants identify the request type +# +X_nvCtrlQueryExtension = 0 +X_nvCtrlQueryAttribute = 2 +X_nvCtrlQueryStringAttribute = 4 +X_nvCtrlQueryValidAttributeValues = 5 +X_nvCtrlSetStringAttribute = 9 +X_nvCtrlSetAttributeAndGetStatus = 19 +X_nvCtrlQueryBinaryData = 20 +X_nvCtrlQueryTargetCount = 24 +X_nvCtrlStringOperation = 25 + +############################################################################### +# various lists that go with attrs, but are handled more compactly +# this way. these lists are indexed by the possible values of their attrs +# and are explained in NVCtrl.h +# + +ATTRIBUTE_TYPE_UNKNOWN = 0 +ATTRIBUTE_TYPE_INTEGER = 1 +ATTRIBUTE_TYPE_BITMASK = 2 +ATTRIBUTE_TYPE_BOOL = 3 +ATTRIBUTE_TYPE_RANGE = 4 +ATTRIBUTE_TYPE_INT_BITS = 5 + +ATTRIBUTE_TYPE_READ = 0x01 +ATTRIBUTE_TYPE_WRITE = 0x02 +ATTRIBUTE_TYPE_DISPLAY = 0x04 +ATTRIBUTE_TYPE_GPU = 0x08 +ATTRIBUTE_TYPE_FRAMELOCK = 0x10 +ATTRIBUTE_TYPE_X_SCREEN = 0x20 +ATTRIBUTE_TYPE_XINERAMA = 0x40 +ATTRIBUTE_TYPE_VCSC = 0x80 + +############################################################################ + +# +# Attribute Targets +# +# Targets define attribute groups. For example, some attributes are only +# valid to set on a GPU, others are only valid when talking about an +# X Screen. Target types are then what is used to identify the target +# group of the attribute you wish to set/query. +# +# Here are the supported target types: +# + +NV_CTRL_TARGET_TYPE_X_SCREEN = 0 +NV_CTRL_TARGET_TYPE_GPU = 1 +NV_CTRL_TARGET_TYPE_FRAMELOCK = 2 +# Visual Computing System - deprecated. To be removed along with all +# VCS-specific attributes in a later release. +NV_CTRL_TARGET_TYPE_VCSC = 3 +NV_CTRL_TARGET_TYPE_GVI = 4 +NV_CTRL_TARGET_TYPE_COOLER = 5 # e.g., fan +NV_CTRL_TARGET_TYPE_THERMAL_SENSOR = 6 +NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER = 7 +NV_CTRL_TARGET_TYPE_DISPLAY = 8 + + +############################################################################### +# Targets, to indicate where a command should be executed. +# +class Target(object): + def __init__(self): + self._id = -1 + self._type = -1 + self._name = '' + + def id(self): + return self._id + + def type(self): + return self._type + + def __str__(self): + return ''.format(self._name, self.id()) + + +class Gpu(Target): + def __init__(self, ngpu=0): + """Target a GPU""" + super(self.__class__, self).__init__() + self._id = ngpu + self._type = NV_CTRL_TARGET_TYPE_GPU + self._name = 'GPU' + + +class Screen(Target): + def __init__(self, nscr=0): + """Target an X screen""" + super(self.__class__, self).__init__() + self._id = nscr + self._type = NV_CTRL_TARGET_TYPE_X_SCREEN + self._name = 'X screen' + + +class Cooler(Target): + def __init__(self, nfan=0): + """Target a fann""" + super(self.__class__, self).__init__() + self._id = nfan + self._type = NV_CTRL_TARGET_TYPE_COOLER + self._name = 'Cooler' + + +class NVCtrlQueryTargetCountReplyRequest(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(X_nvCtrlQueryTargetCount), + rq.RequestLength(), + rq.Card32('target_type'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('padb1'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('count'), + rq.Card32('pad4'), + rq.Card32('pad5'), + rq.Card32('pad6'), + rq.Card32('pad7'), + rq.Card32('pad8'), + ) + + +class NVCtrlQueryAttributeReplyRequest(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(X_nvCtrlQueryAttribute), + rq.RequestLength(), + rq.Card16('target_id'), + rq.Card16('target_type'), + rq.Card32('display_mask'), + rq.Card32('attr'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('pad0'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('flags'), + rq.Int32('value'), + rq.Card32('pad4'), + rq.Card32('pad5'), + rq.Card32('pad6'), + rq.Card32('pad7'), + ) + + +class NVCtrlSetAttributeAndGetStatusReplyRequest(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(X_nvCtrlSetAttributeAndGetStatus), + rq.RequestLength(), + rq.Card16('target_id'), + rq.Card16('target_type'), + rq.Card32('display_mask'), + rq.Card32('attr'), + rq.Int32('value') + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('pad0'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('flags'), + rq.Card32('pad3'), + rq.Card32('pad4'), + rq.Card32('pad5'), + rq.Card32('pad6'), + rq.Card32('pad7'), + ) + + +class NVCtrlQueryStringAttributeReplyRequest(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(X_nvCtrlQueryStringAttribute), + rq.RequestLength(), + rq.Card16('target_id'), + rq.Card16('target_type'), + rq.Card32('display_mask'), + rq.Card32('attr'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('pad0'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('flags'), + rq.Card32('string', 4), + rq.Card32('pad4'), + rq.Card32('pad5'), + rq.Card32('pad6'), + rq.Card32('pad7'), + rq.String8('string'), + ) + + +class NVCtrlQueryValidAttributeValuesReplyRequest(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(X_nvCtrlQueryValidAttributeValues), + rq.RequestLength(), + rq.Card16('target_id'), + rq.Card16('target_type'), + rq.Card32('display_mask'), + rq.Card32('attr'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('pad0'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('flags'), + rq.Int32('attr_type'), + rq.Int32('min'), + rq.Int32('max'), + rq.Card32('bits'), + rq.Card32('perms'), + ) + + +class NVCtrlQueryBinaryDataReplyRequest(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(X_nvCtrlQueryBinaryData), + rq.RequestLength(), + rq.Card16('target_id'), + rq.Card16('target_type'), + rq.Card32('display_mask'), + rq.Card32('attr'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('pad0'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('flags'), + rq.Card32('data', 4), + rq.Card32('pad4'), + rq.Card32('pad5'), + rq.Card32('pad6'), + rq.Card32('pad7'), + rq.Binary('data'), + ) + + +class NVCtrlQueryListCard32ReplyRequest(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(X_nvCtrlQueryBinaryData), + rq.RequestLength(), + rq.Card16('target_id'), + rq.Card16('target_type'), + rq.Card32('display_mask'), + rq.Card32('attr'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('pad0'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('flags'), + rq.Card32('list', 4), + rq.Card32('pad4'), + rq.Card32('pad5'), + rq.Card32('pad6'), + rq.Card32('pad7'), + rq.List('list', rq.Card32), + ) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/randr.py b/myenv/lib/python3.10/site-packages/Xlib/ext/randr.py new file mode 100644 index 0000000..8149c48 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/randr.py @@ -0,0 +1,1292 @@ +# Xlib.ext.randr -- RandR extension module +# +# Copyright (C) 2006 Mike Meyer +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + + +"""RandR - provide access to the RandR extension information. + +This implementation is based off version 1.5 of the XRandR protocol, and may +not be compatible with other versions. + +Version 1.5 of the protocol is documented at: +http://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt + +Version 1.3.1 here: +http://www.x.org/releases/X11R7.5/doc/randrproto/randrproto.txt + +""" + + +from Xlib import X +from Xlib.protocol import rq + +extname = 'RANDR' + + +# Event codes # +RRScreenChangeNotify = 0 + +# V1.2 additions +RRNotify = 1 + +# RRNotify Subcodes +RRNotify_CrtcChange = 0 +RRNotify_OutputChange = 1 +RRNotify_OutputProperty = 2 + + +# Event selection bits # +RRScreenChangeNotifyMask = (1 << 0) + +# V1.2 additions +RRCrtcChangeNotifyMask = (1 << 1) +RROutputChangeNotifyMask = (1 << 2) +RROutputPropertyNotifyMask = (1 << 3) + + +# Constants # +SetConfigSuccess = 0 +SetConfigInvalidConfigTime = 1 +SetConfigInvalidTime = 2 +SetConfigFailed = 3 + +# used in the rotation field; rotation and reflection in 0.1 proto. +Rotate_0 = 1 +Rotate_90 = 2 +Rotate_180 = 4 +Rotate_270 = 8 + +# new in 1.0 protocol, to allow reflection of screen +Reflect_X = 16 +Reflect_Y = 32 + +# new in 1.2 protocol +HSyncPositive = 0x00000001 +HSyncNegative = 0x00000002 +VSyncPositive = 0x00000004 +VSyncNegative = 0x00000008 +Interlace = 0x00000010 +DoubleScan = 0x00000020 +CSync = 0x00000040 +CSyncPositive = 0x00000080 +CSyncNegative = 0x00000100 +HSkewPresent = 0x00000200 +BCast = 0x00000400 +PixelMultiplex = 0x00000800 +DoubleClock = 0x00001000 +ClockDivideBy2 = 0x00002000 + +# event types? +Connected = 0 +Disconnected = 1 +UnknownConnection = 2 + +# Conventional RandR output properties +PROPERTY_RANDR_EDID = "EDID" +PROPERTY_SIGNAL_FORMAT = "SignalFormat" +PROPERTY_SIGNAL_PROPERTIES = "SignalProperties" +PROPERTY_CONNECTOR_TYPE = "ConnectorType" +PROPERTY_CONNECTOR_NUMBER = "ConnectorNumber" +PROPERTY_COMPATIBILITY_LIST = "CompatibilityList" +PROPERTY_CLONE_LIST = "CloneList" + +# subpixel order - TODO: These constants are part of the RENDER extension and +# should be moved there if/when that extension is added to python-xlib. +SubPixelUnknown = 0 +SubPixelHorizontalRGB = 1 +SubPixelHorizontalBGR = 2 +SubPixelVerticalRGB = 3 +SubPixelVerticalBGR = 4 +SubPixelNone = 5 + + +# Error Codes # +BadRROutput = 0 +BadRRCrtc = 1 +BadRRMode = 2 + +# Error classes # +class BadRROutputError(Exception): pass + +class BadRRCrtcError(Exception): pass + +class BadRRModeError(Exception): pass + +# Data Structures # + +RandR_ScreenSizes = rq.Struct( + rq.Card16('width_in_pixels'), + rq.Card16('height_in_pixels'), + rq.Card16('width_in_millimeters'), + rq.Card16('height_in_millimeters'), + ) + + +RandR_ModeInfo = rq.Struct( + rq.Card32('id'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card32('dot_clock'), + rq.Card16('h_sync_start'), + rq.Card16('h_sync_end'), + rq.Card16('h_total'), + rq.Card16('h_skew'), + rq.Card16('v_sync_start'), + rq.Card16('v_sync_end'), + rq.Card16('v_total'), + rq.Card16('name_length'), + rq.Card32('flags'), + ) + +RandR_Rates = rq.Struct( + rq.LengthOf('rates', 2), + rq.List('rates', rq.Card16Obj) + ) + +# TODO: This struct is part of the RENDER extension and should be moved there +# if/when that extension is added to python-xlib. +Render_Transform = rq.Struct( + rq.Card32('matrix11'), #FIXME: All of these are listed as FIXED in the protocol header. + rq.Card32('matrix12'), + rq.Card32('matrix13'), + rq.Card32('matrix21'), + rq.Card32('matrix22'), + rq.Card32('matrix23'), + rq.Card32('matrix31'), + rq.Card32('matrix32'), + rq.Card32('matrix33'), + ) + +MonitorInfo = rq.Struct( + rq.Card32('name'), + rq.Bool('primary'), + rq.Bool('automatic'), + rq.LengthOf('crtcs', 2), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width_in_pixels'), + rq.Card16('height_in_pixels'), + rq.Card32('width_in_millimeters'), + rq.Card32('height_in_millimeters'), + rq.List('crtcs', rq.Card32Obj) +) + +# Requests # + +class QueryVersion(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card32('major_version'), + rq.Card32('minor_version'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('major_version'), + rq.Card32('minor_version'), + rq.Pad(16), + ) + +def query_version(self): + """Get the current version of the RandR extension. + + """ + return QueryVersion( + display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=5, + ) + + +class _1_0SetScreenConfig(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.Card32('timestamp'), + rq.Card32('config_timestamp'), + rq.Card16('size_id'), + rq.Card16('rotation'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('new_timestamp'), + rq.Card32('new_config_timestamp'), + rq.Window('root'), + rq.Card16('subpixel_order'), + rq.Pad(10), + ) + +def _1_0set_screen_config(self, size_id, rotation, config_timestamp, timestamp=X.CurrentTime): + """Sets the screen to the specified size and rotation. + + """ + return _1_0SetScreenConfig( + display=self.display, + opcode=self.display.get_extension_major(extname), + drawable=self, + timestamp=timestamp, + config_timestamp=config_timestamp, + size_id=size_id, + rotation=rotation, + ) + + +class SetScreenConfig(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.Card32('timestamp'), + rq.Card32('config_timestamp'), + rq.Card16('size_id'), + rq.Card16('rotation'), + rq.Card16('rate'), # added in version 1.1 + rq.Pad(2), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('new_timestamp'), + rq.Card32('new_config_timestamp'), + rq.Window('root'), + rq.Card16('subpixel_order'), + rq.Pad(10), + ) + +def set_screen_config(self, size_id, rotation, config_timestamp, rate=0, timestamp=X.CurrentTime): + """Sets the screen to the specified size, rate, rotation and reflection. + + rate can be 0 to have the server select an appropriate rate. + + """ + return SetScreenConfig( + display=self.display, + opcode=self.display.get_extension_major(extname), + drawable=self, + timestamp=timestamp, + config_timestamp=config_timestamp, + size_id=size_id, + rotation=rotation, + rate=rate, + ) + + +class SelectInput(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength(), + rq.Window('window'), + rq.Card16('mask'), + rq.Pad(2), + ) + +def select_input(self, mask): + return SelectInput( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + mask=mask, + ) + + +class GetScreenInfo(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(5), + rq.RequestLength(), + rq.Window('window'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('set_of_rotations'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('root'), + rq.Card32('timestamp'), + rq.Card32('config_timestamp'), + rq.LengthOf('sizes', 2), + rq.Card16('size_id'), + rq.Card16('rotation'), + rq.Card16('rate'), # added in version 1.1 + rq.Card16('n_rate_ents'), # XCB's protocol description disagrees with the X headers on this; ignoring. + rq.Pad(2), + rq.List('sizes', RandR_ScreenSizes), + #rq.List('rates', RandR_Rates) #FIXME: Why does uncommenting this cause an error? + ) + +def get_screen_info(self): + """Retrieve information about the current and available configurations for + the screen associated with this window. + + """ + return GetScreenInfo( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + ) + + +# version 1.2 + +class GetScreenSizeRange(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(6), + rq.RequestLength(), + rq.Window('window'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('min_width'), + rq.Card16('min_height'), + rq.Card16('max_width'), + rq.Card16('max_height'), + rq.Pad(16), + ) + +def get_screen_size_range(self): + """Retrieve the range of possible screen sizes. The screen may be set to + any size within this range. + + """ + return GetScreenSizeRange( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + ) + + +class SetScreenSize(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(7), + rq.RequestLength(), + rq.Window('window'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card32('width_in_millimeters'), + rq.Card32('height_in_millimeters'), + ) + +def set_screen_size(self, width, height, width_in_millimeters=None, height_in_millimeters=None): + return SetScreenSize( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + width=width, + height=height, + width_in_millimeters=width_in_millimeters, + height_in_millimeters=height_in_millimeters, + ) + + +class GetScreenResources(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(8), + rq.RequestLength(), + rq.Window('window'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('timestamp'), + rq.Card32('config_timestamp'), + rq.LengthOf('crtcs', 2), + rq.LengthOf('outputs', 2), + rq.LengthOf('modes', 2), + rq.LengthOf('mode_names', 2), + rq.Pad(8), + rq.List('crtcs', rq.Card32Obj), + rq.List('outputs', rq.Card32Obj), + rq.List('modes', RandR_ModeInfo), + rq.String8('mode_names'), + ) + +def get_screen_resources(self): + return GetScreenResources( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + ) + + +class GetOutputInfo(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(9), + rq.RequestLength(), + rq.Card32('output'), + rq.Card32('config_timestamp'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('timestamp'), + rq.Card32('crtc'), + rq.Card32('mm_width'), + rq.Card32('mm_height'), + rq.Card8('connection'), + rq.Card8('subpixel_order'), + rq.LengthOf('crtcs', 2), + rq.LengthOf('modes', 2), + rq.Card16('num_preferred'), + rq.LengthOf('clones', 2), + rq.LengthOf('name', 2), + rq.List('crtcs', rq.Card32Obj), + rq.List('modes', rq.Card32Obj), + rq.List('clones', rq.Card32Obj), + rq.String8('name'), + ) + +def get_output_info(self, output, config_timestamp): + return GetOutputInfo( + display=self.display, + opcode=self.display.get_extension_major(extname), + output=output, + config_timestamp=config_timestamp, + ) + + +class ListOutputProperties(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(10), + rq.RequestLength(), + rq.Card32('output'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('atoms', 2), + rq.Pad(22), + rq.List('atoms', rq.Card32Obj), + ) + +def list_output_properties(self, output): + return ListOutputProperties ( + display=self.display, + opcode=self.display.get_extension_major(extname), + output=output, + ) + + +class QueryOutputProperty(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(11), + rq.RequestLength(), + rq.Card32('output'), + rq.Card32('property'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Bool('pending'), + rq.Bool('range'), + rq.Bool('immutable'), + rq.Pad(21), + rq.List('valid_values', rq.Card32Obj), + ) + +def query_output_property(self, output, property): + return QueryOutputProperty ( + display=self.display, + opcode=self.display.get_extension_major(extname), + output=output, + property=property, + ) + + +class ConfigureOutputProperty (rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(12), + rq.RequestLength(), + rq.Card32('output'), + rq.Card32('property'), + rq.Bool('pending'), + rq.Bool('range'), + rq.Pad(2), + rq.List('valid_values', rq.Card32Obj), + ) + +def configure_output_property (self, output, property): + return ConfigureOutputProperty ( + display=self.display, + opcode=self.display.get_extension_major(extname), + output=output, + property=property, + ) + + +class ChangeOutputProperty(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(13), + rq.RequestLength(), + rq.Card32('output'), + rq.Card32('property'), + rq.Card32('type'), + rq.Format('value', 1), + rq.Card8('mode'), + rq.Pad(2), + rq.LengthOf('value', 4), + rq.PropertyData('value'), + ) + +def change_output_property(self, output, property, type, mode, value): + return ChangeOutputProperty( + display=self.display, + opcode=self.display.get_extension_major(extname), + output=output, + property=property, + type=type, + mode=mode, + value=value, + ) + + +class DeleteOutputProperty(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(14), + rq.RequestLength(), + rq.Card32('output'), + rq.Card32('property'), + ) + +def delete_output_property(self, output, property): + return DeleteOutputProperty( + display=self.display, + opcode=self.display.get_extension_major(extname), + output=output, + property=property, + ) + + +class GetOutputProperty(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(15), + rq.RequestLength(), + rq.Card32('output'), + rq.Card32('property'), + rq.Card32('type'), + rq.Card32('long_offset'), + rq.Card32('long_length'), + rq.Bool('delete'), + rq.Bool('pending'), + rq.Pad(2), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Format('value', 1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('property_type'), + rq.Card32('bytes_after'), + rq.LengthOf('value', 4), + rq.Pad(12), + rq.List('value', rq.Card8Obj), + ) + +def get_output_property(self, output, property, type, long_offset, long_length, delete=False, pending=False): + return GetOutputProperty( + display=self.display, + opcode=self.display.get_extension_major(extname), + output=output, + property=property, + type=type, + long_offset=long_offset, + long_length=long_length, + delete=delete, + pending=pending, + ) + + +class CreateMode(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(16), + rq.RequestLength(), + rq.Window('window'), + rq.Object('mode', RandR_ModeInfo), + rq.String8('name'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('mode'), + rq.Pad(20), + ) + +def create_mode(self, mode, name): + return CreateMode ( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + mode=mode, + name=name, + ) + + +class DestroyMode(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(17), + rq.RequestLength(), + rq.Card32('mode'), + ) + +def destroy_mode(self, mode): + return DestroyMode( + display=self.display, + opcode=self.display.get_extension_major(extname), + mode=mode, + ) + + +class AddOutputMode(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(18), + rq.RequestLength(), + rq.Card32('output'), + rq.Card32('mode'), + ) + +def add_output_mode(self, output, mode): + return AddOutputMode( + display=self.display, + opcode=self.display.get_extension_major(extname), + output=output, + mode=mode, + ) + + +class DeleteOutputMode(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(19), + rq.RequestLength(), + rq.Card32('output'), + rq.Card32('mode'), + ) + +def delete_output_mode(self, output, mode): + return DeleteOutputMode( + display=self.display, + opcode=self.display.get_extension_major(extname), + output=output, + mode=mode, + ) + + +class GetCrtcInfo(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(20), + rq.RequestLength(), + rq.Card32('crtc'), + rq.Card32('config_timestamp'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('timestamp'), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card32('mode'), + rq.Card16('rotation'), + rq.Card16('possible_rotations'), + rq.LengthOf('outputs', 2), + rq.LengthOf('possible_outputs', 2), + rq.List('outputs', rq.Card32Obj), + rq.List('possible_outputs', rq.Card32Obj), + ) + +def get_crtc_info(self, crtc, config_timestamp): + return GetCrtcInfo ( + display=self.display, + opcode=self.display.get_extension_major(extname), + crtc=crtc, + config_timestamp=config_timestamp, + ) + + +class SetCrtcConfig(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(21), + rq.RequestLength(), + rq.Card32('crtc'), + rq.Card32('timestamp'), + rq.Card32('config_timestamp'), + rq.Int16('x'), + rq.Int16('y'), + rq.Card32('mode'), + rq.Card16('rotation'), + rq.Pad(2), + rq.List('outputs', rq.Card32Obj), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('new_timestamp'), + rq.Pad(20), + ) + +def set_crtc_config(self, crtc, config_timestamp, x, y, mode, rotation, outputs, timestamp=X.CurrentTime): + return SetCrtcConfig ( + display=self.display, + opcode=self.display.get_extension_major(extname), + crtc=crtc, + config_timestamp=config_timestamp, + x=x, + y=y, + mode=mode, + rotation=rotation, + outputs=outputs, + timestamp=timestamp, + ) + + +class GetCrtcGammaSize(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(22), + rq.RequestLength(), + rq.Card32('crtc'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('size'), + rq.Pad(22), + ) + +def get_crtc_gamma_size(self, crtc): + return GetCrtcGammaSize ( + display=self.display, + opcode=self.display.get_extension_major(extname), + crtc=crtc, + ) + + +class GetCrtcGamma(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(23), + rq.RequestLength(), + rq.Card32('crtc'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf(('red', 'green', 'blue'), 2), + rq.Pad(22), + rq.List('red', rq.Card16Obj), + rq.List('green', rq.Card16Obj), + rq.List('blue', rq.Card16Obj), + ) + +def get_crtc_gamma(self, crtc): + return GetCrtcGamma ( + display=self.display, + opcode=self.display.get_extension_major(extname), + crtc=crtc, + ) + + +class SetCrtcGamma(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(24), + rq.RequestLength(), + rq.Card32('crtc'), + rq.Card16('size'), + rq.Pad(2), + rq.List('red', rq.Card16Obj), + rq.List('green', rq.Card16Obj), + rq.List('blue', rq.Card16Obj), + ) + +def set_crtc_gamma(self, crtc, size, red, green, blue): + return SetCrtcGamma( + display=self.display, + opcode=self.display.get_extension_major(extname), + crtc=crtc, + size=size, + red=red, + green=green, + blue=blue, + ) + + +# version 1.3 + +class GetScreenResourcesCurrent(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(25), + rq.RequestLength(), + rq.Window('window'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('timestamp'), + rq.Card32('config_timestamp'), + rq.LengthOf('crtcs', 2), + rq.LengthOf('outputs', 2), + rq.LengthOf('modes', 2), + rq.LengthOf('names', 2), + rq.Pad(8), + rq.List('crtcs', rq.Card32Obj), + rq.List('outputs', rq.Card32Obj), + rq.List('modes', RandR_ModeInfo), + rq.String8('names'), + ) + +def get_screen_resources_current(self): + return GetScreenResourcesCurrent( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + ) + + +class SetCrtcTransform(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(26), + rq.RequestLength(), + rq.Card32('crtc'), + rq.Object('transform', Render_Transform), + rq.LengthOf('filter_name', 2), + rq.Pad(2), + rq.String8('filter_name'), + rq.List('filter_params', rq.Card32Obj), #FIXME: The protocol says FIXED? http://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt#n2161 + ) + +def set_crtc_transform(self, crtc, n_bytes_filter): + return SetCrtcTransform( + display=self.display, + opcode=self.display.get_extension_major(extname), + crtc=crtc, + n_bytes_filter=n_bytes_filter, + ) + + +class GetCrtcTransform(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(27), + rq.RequestLength(), + rq.Card32('crtc'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Object('pending_transform', Render_Transform), + rq.Bool('has_transforms'), + rq.Pad(3), + rq.Object('current_transform', Render_Transform), + rq.Pad(4), + rq.LengthOf('pending_filter_name', 2), + rq.LengthOf('pending_filter_params', 2), + rq.LengthOf('current_filter_name', 2), + rq.LengthOf('current_filter_params', 2), + rq.String8('pending_filter_name'), + rq.List('pending_filter_params', rq.Card32Obj), #FIXME: The protocol says FIXED? http://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt#n2161 + rq.String8('current_filter_name'), + rq.List('current_filter_params', rq.Card32Obj), #FIXME: The protocol says FIXED? http://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt#n2161 + ) + +def get_crtc_transform(self, crtc): + return GetCrtcTransform( + display=self.display, + opcode=self.display.get_extension_major(extname), + crtc=crtc, + ) + + +class GetPanning(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(28), + rq.RequestLength(), + rq.Card32('crtc'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('timestamp'), + rq.Card16('left'), + rq.Card16('top'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('track_left'), + rq.Card16('track_top'), + rq.Card16('track_width'), + rq.Card16('track_height'), + rq.Int16('border_left'), + rq.Int16('border_top'), + rq.Int16('border_right'), + rq.Int16('border_bottom'), + ) + +def get_panning(self, crtc): + return GetPanning ( + display=self.display, + opcode=self.display.get_extension_major(extname), + crtc=crtc, + ) + + +class SetPanning(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(29), + rq.RequestLength(), + rq.Card32('crtc'), + rq.Card32('timestamp'), + rq.Card16('left'), + rq.Card16('top'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('track_left'), + rq.Card16('track_top'), + rq.Card16('track_width'), + rq.Card16('track_height'), + rq.Int16('border_left'), + rq.Int16('border_top'), + rq.Int16('border_right'), + rq.Int16('border_bottom'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('new_timestamp'), + rq.Pad(20), + ) + +def set_panning(self, crtc, left, top, width, height, track_left, track_top, track_width, track_height, border_left, border_top, border_width, border_height, timestamp=X.CurrentTime): + return SetPanning ( + display=self.display, + opcode=self.display.get_extension_major(extname), + crtc=crtc, + left=left, + top=top, + width=width, + height=height, + track_left=track_left, + track_top=track_top, + track_width=track_width, + track_height=track_height, + border_left=border_left, + border_top=border_top, + border_width=border_width, + border_height=border_height, + timestamp=timestamp, + ) + + +class SetOutputPrimary(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(30), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('output'), + ) + +def set_output_primary(self, output): + return SetOutputPrimary( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + output=output, + ) + + +class GetOutputPrimary(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(31), + rq.RequestLength(), + rq.Window('window'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('output'), + rq.Pad(20), + ) + +def get_output_primary(self): + return GetOutputPrimary( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + ) + + +# Version 1.5 methods + +class GetMonitors(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(42), + rq.RequestLength(), + rq.Window('window'), + rq.Bool('is_active'), + rq.Pad(3) + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('timestamp'), + rq.LengthOf('monitors', 4), + rq.Card32('outputs'), + rq.Pad(12), + rq.List('monitors', MonitorInfo) + ) + + +def get_monitors(self, is_active=True): + return GetMonitors( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + is_active=is_active + ) + +class SetMonitor(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(43), + rq.RequestLength(), + rq.Window('window'), + rq.Object('monitor_info', MonitorInfo) + ) + + +def set_monitor(self, monitor_info): + return SetMonitor( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + monitor_info=monitor_info + ) + + +class DeleteMonitor(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(44), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('name') + ) + + +def delete_monitor(self, name): + return DeleteMonitor( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + name=name + ) + +# Events # + +class ScreenChangeNotify(rq.Event): + _code = None + _fields = rq.Struct( + rq.Card8('type'), + rq.Card8('rotation'), + rq.Card16('sequence_number'), + rq.Card32('timestamp'), + rq.Card32('config_timestamp'), + rq.Window('root'), + rq.Window('window'), + rq.Card16('size_id'), + rq.Card16('subpixel_order'), + rq.Card16('width_in_pixels'), + rq.Card16('height_in_pixels'), + rq.Card16('width_in_millimeters'), + rq.Card16('height_in_millimeters'), + ) + + +class CrtcChangeNotify(rq.Event): + _code = None + _fields = rq.Struct( + rq.Card8('type'), + rq.Card8('sub_code'), + rq.Card16('sequence_number'), + rq.Card32('timestamp'), + rq.Window('window'), + rq.Card32('crtc'), + rq.Card32('mode'), + rq.Card16('rotation'), + rq.Pad(2), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + ) + + +class OutputChangeNotify(rq.Event): + _code = None + _fields = rq.Struct( + rq.Card8('type'), + rq.Card8('sub_code'), + rq.Card16('sequence_number'), + rq.Card32('timestamp'), + rq.Card32('config_timestamp'), + rq.Window('window'), + rq.Card32('output'), + rq.Card32('crtc'), + rq.Card32('mode'), + rq.Card16('rotation'), + rq.Card8('connection'), + rq.Card8('subpixel_order'), + ) + + +class OutputPropertyNotify(rq.Event): + _code = None + _fields = rq.Struct( + rq.Card8('type'), + rq.Card8('sub_code'), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Card32('output'), + rq.Card32('atom'), + rq.Card32('timestamp'), + rq.Card8('state'), + rq.Pad(11), + ) +# Initialization # + +def init(disp, info): + disp.extension_add_method('display', 'xrandr_query_version', query_version) + disp.extension_add_method('window', 'xrandr_select_input', select_input) + disp.extension_add_method('window', 'xrandr_get_screen_info', get_screen_info) + disp.extension_add_method('drawable', 'xrandr_1_0set_screen_config', _1_0set_screen_config) + disp.extension_add_method('drawable', 'xrandr_set_screen_config', set_screen_config) + disp.extension_add_method('window', 'xrandr_get_screen_size_range', get_screen_size_range) + disp.extension_add_method('window', 'xrandr_set_screen_size', set_screen_size) + disp.extension_add_method('window', 'xrandr_get_screen_resources', get_screen_resources) + disp.extension_add_method('display', 'xrandr_get_output_info', get_output_info) + disp.extension_add_method('display', 'xrandr_list_output_properties', list_output_properties) + disp.extension_add_method('display', 'xrandr_query_output_property', query_output_property) + disp.extension_add_method('display', 'xrandr_configure_output_property ', configure_output_property ) + disp.extension_add_method('display', 'xrandr_change_output_property', change_output_property) + disp.extension_add_method('display', 'xrandr_delete_output_property', delete_output_property) + disp.extension_add_method('display', 'xrandr_get_output_property', get_output_property) + disp.extension_add_method('window', 'xrandr_create_mode', create_mode) + disp.extension_add_method('display', 'xrandr_destroy_mode', destroy_mode) + disp.extension_add_method('display', 'xrandr_add_output_mode', add_output_mode) + disp.extension_add_method('display', 'xrandr_delete_output_mode', delete_output_mode) + disp.extension_add_method('display', 'xrandr_get_crtc_info', get_crtc_info) + disp.extension_add_method('display', 'xrandr_set_crtc_config', set_crtc_config) + disp.extension_add_method('display', 'xrandr_get_crtc_gamma_size', get_crtc_gamma_size) + disp.extension_add_method('display', 'xrandr_get_crtc_gamma', get_crtc_gamma) + disp.extension_add_method('display', 'xrandr_set_crtc_gamma', set_crtc_gamma) + disp.extension_add_method('window', 'xrandr_get_screen_resources_current', get_screen_resources_current) + disp.extension_add_method('display', 'xrandr_set_crtc_transform', set_crtc_transform) + disp.extension_add_method('display', 'xrandr_get_crtc_transform', get_crtc_transform) + disp.extension_add_method('window', 'xrandr_set_output_primary', set_output_primary) + disp.extension_add_method('window', 'xrandr_get_output_primary', get_output_primary) + disp.extension_add_method('display', 'xrandr_get_panning', get_panning) + disp.extension_add_method('display', 'xrandr_set_panning', set_panning) + + # If the server is running RANDR 1.5+, enable 1.5 compatible methods and events + version = query_version(disp) + if version.major_version == 1 and version.minor_version >= 5: + # version 1.5 compatible + disp.extension_add_method('window', 'xrandr_get_monitors', get_monitors) + disp.extension_add_method('window', 'xrandr_set_monitor', set_monitor) + disp.extension_add_method('window', 'xrandr_delete_monitor', delete_monitor) + + disp.extension_add_event(info.first_event + RRScreenChangeNotify, ScreenChangeNotify) + # add RRNotify events (1 event code with 3 subcodes) + disp.extension_add_subevent(info.first_event + RRNotify, RRNotify_CrtcChange, CrtcChangeNotify) + disp.extension_add_subevent(info.first_event + RRNotify, RRNotify_OutputChange, OutputChangeNotify) + disp.extension_add_subevent(info.first_event + RRNotify, RRNotify_OutputProperty, OutputPropertyNotify) + + disp.extension_add_error(BadRROutput, BadRROutputError) + disp.extension_add_error(BadRRCrtc, BadRRCrtcError) + disp.extension_add_error(BadRRMode, BadRRModeError) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/record.py b/myenv/lib/python3.10/site-packages/Xlib/ext/record.py new file mode 100644 index 0000000..5b1e2a8 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/record.py @@ -0,0 +1,282 @@ +# Xlib.ext.record -- RECORD extension module +# +# Copyright (C) 2006 Alex Badea +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +from Xlib.protocol import rq + +extname = 'RECORD' + +FromServerTime = 0x01 +FromClientTime = 0x02 +FromClientSequence = 0x04 + +CurrentClients = 1 +FutureClients = 2 +AllClients = 3 + +FromServer = 0 +FromClient = 1 +ClientStarted = 2 +ClientDied = 3 +StartOfData = 4 +EndOfData = 5 + +Record_Range8 = rq.Struct( + rq.Card8('first'), + rq.Card8('last')) +Record_Range16 = rq.Struct( + rq.Card16('first'), + rq.Card16('last')) +Record_ExtRange = rq.Struct( + rq.Card8('major_range_first'), + rq.Card8('major_range_last'), + rq.Card16('minor_range_first'), + rq.Card16('minor_range_last')) +Record_Range = rq.Struct( + rq.Object('core_requests', Record_Range8), + rq.Object('core_replies', Record_Range8), + rq.Object('ext_requests', Record_ExtRange), + rq.Object('ext_replies', Record_ExtRange), + rq.Object('delivered_events', Record_Range8), + rq.Object('device_events', Record_Range8), + rq.Object('errors', Record_Range8), + rq.Bool('client_started'), + rq.Bool('client_died')) + +Record_ClientInfo = rq.Struct( + rq.Card32('client_resource'), + rq.LengthOf('ranges', 4), + rq.List('ranges', Record_Range)) + + +class RawField(rq.ValueField): + """A field with raw data, stored as a string""" + + structcode = None + + def pack_value(self, val): + return val, len(val), None + + def parse_binary_value(self, data, display, length, format): + return data, '' + + +class GetVersion(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card16('major_version'), + rq.Card16('minor_version')) + _reply = rq.Struct( + rq.Pad(2), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('major_version'), + rq.Card16('minor_version'), + rq.Pad(20)) + +def get_version(self, major, minor): + return GetVersion( + display = self.display, + opcode = self.display.get_extension_major(extname), + major_version = major, + minor_version = minor) + + +class CreateContext(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(1), + rq.RequestLength(), + rq.Card32('context'), # Record_RC + rq.Card8('element_header'), # Record_Element_Header + rq.Pad(3), + rq.LengthOf('clients', 4), + rq.LengthOf('ranges', 4), + rq.List('clients', rq.Card32Obj), + rq.List('ranges', Record_Range)) + +def create_context(self, datum_flags, clients, ranges): + context = self.display.allocate_resource_id() + CreateContext( + display = self.display, + opcode = self.display.get_extension_major(extname), + context = context, + element_header = datum_flags, + clients = clients, + ranges = ranges) + return context + + +class RegisterClients(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + rq.Card32('context'), # Record_RC + rq.Card8('element_header'), # Record_Element_Header + rq.Pad(3), + rq.LengthOf('clients', 4), + rq.LengthOf('ranges', 4), + rq.List('clients', rq.Card32Obj), + rq.List('ranges', Record_Range)) + +def register_clients(self, context, element_header, clients, ranges): + RegisterClients( + display = self.display, + opcode = self.display.get_extension_major(extname), + context = context, + element_header = element_header, + clients = clients, + ranges = ranges) + + +class UnregisterClients(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(3), + rq.RequestLength(), + rq.Card32('context'), # Record_RC + rq.LengthOf('clients', 4), + rq.List('clients', rq.Card32Obj)) + +def unregister_clients(self, context, clients): + UnregisterClients( + display = self.display, + opcode = self.display.get_extension_major(extname), + context = context, + clients = clients) + + +class GetContext(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength(), + rq.Card32('context')) # Record_RC + _reply = rq.Struct( + rq.Pad(2), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card8('element_header'), # Record_Element_Header + rq.Pad(3), + rq.LengthOf('client_info', 4), + rq.Pad(16), + rq.List('client_info', Record_ClientInfo)) + +def get_context(self, context): + return GetContext( + display = self.display, + opcode = self.display.get_extension_major(extname), + context = context) + + +class EnableContext(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(5), + rq.RequestLength(), + rq.Card32('context')) # Record_RC + _reply = rq.Struct( + rq.Pad(1), + rq.Card8('category'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card8('element_header'), # Record_Element_Header + rq.Bool('client_swapped'), + rq.Pad(2), + rq.Card32('id_base'), # Record_XIDBase + rq.Card32('server_time'), + rq.Card32('recorded_sequence_number'), + rq.Pad(8), + RawField('data')) + + # This request receives multiple responses, so we need to keep + # ourselves in the 'sent_requests' list in order to receive them all. + + # See the discussion on ListFonstsWithInfo in request.py + + def __init__(self, callback, *args, **keys): + self._callback = callback + rq.ReplyRequest.__init__(self, *args, **keys) + + def _parse_response(self, data): + r, d = self._reply.parse_binary(data, self._display) + self._callback(r) + + if r.category == StartOfData: + # Hack ourselves a sequence number, used by the code in + # Xlib.protocol.display.Display.parse_request_response() + self.sequence_number = r.sequence_number + + if r.category == EndOfData: + self._response_lock.acquire() + self._data = r + self._response_lock.release() + else: + self._display.sent_requests.insert(0, self) + +def enable_context(self, context, callback): + EnableContext( + callback = callback, + display = self.display, + opcode = self.display.get_extension_major(extname), + context = context) + + +class DisableContext(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(6), + rq.RequestLength(), + rq.Card32('context')) # Record_RC + +def disable_context(self, context): + DisableContext( + display = self.display, + opcode = self.display.get_extension_major(extname), + context = context) + + +class FreeContext(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(7), + rq.RequestLength(), + rq.Card32('context')) # Record_RC + +def free_context(self, context): + FreeContext( + display = self.display, + opcode = self.display.get_extension_major(extname), + context = context) + self.display.free_resource_id(context) + + +def init(disp, info): + disp.extension_add_method('display', 'record_get_version', get_version) + disp.extension_add_method('display', 'record_create_context', create_context) + disp.extension_add_method('display', 'record_register_clients', register_clients) + disp.extension_add_method('display', 'record_unregister_clients', unregister_clients) + disp.extension_add_method('display', 'record_get_context', get_context) + disp.extension_add_method('display', 'record_enable_context', enable_context) + disp.extension_add_method('display', 'record_disable_context', disable_context) + disp.extension_add_method('display', 'record_free_context', free_context) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/res.py b/myenv/lib/python3.10/site-packages/Xlib/ext/res.py new file mode 100644 index 0000000..810a3b9 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/res.py @@ -0,0 +1,288 @@ +# Xlib.ext.res -- X-Resource extension module +# +# Copyright (C) 2021 Aleksei Bavshin +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation; either version 2.1 +# of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, +# Fifth Floor, +# Boston, MA 02110-1301 USA + +"""X-Resource extension allows a client to query the X server about its usage +of various resources. + +For detailed description see any of the following documents. +Protocol specification: + https://www.x.org/releases/current/doc/resourceproto/resproto.txt +XCB Protocol specification: + https://cgit.freedesktop.org/xcb/proto/tree/src/res.xml +""" +from Xlib.protocol import rq + +RES_MAJOR_VERSION = 1 +RES_MINOR_VERSION = 2 + +extname = "X-Resource" + +# v1.0 +ResQueryVersion = 0 +ResQueryClients = 1 +ResQueryClientResources = 2 +ResQueryClientPixmapBytes = 3 +# v1.2 +ResQueryClientIds = 4 +ResQueryResourceBytes = 5 + + +class QueryVersion(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8("opcode"), + rq.Opcode(ResQueryVersion), + rq.RequestLength(), + rq.Card8("client_major"), + rq.Card8("client_minor"), + rq.Pad(2)) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16("sequence_number"), + rq.ReplyLength(), + rq.Card16("server_major"), + rq.Card16("server_minor"), + rq.Pad(20)) + + +def query_version(self, client_major=RES_MAJOR_VERSION, + client_minor=RES_MINOR_VERSION): + """ Query the protocol version supported by the X server. + + The client sends the highest supported version to the server and the + server sends the highest version it supports, but no higher than the + requested version.""" + return QueryVersion( + display=self.display, + opcode=self.display.get_extension_major(extname), + client_major=client_major, + client_minor=client_minor) + + +Client = rq.Struct( + rq.Card32("resource_base"), + rq.Card32("resource_mask")) + + +class QueryClients(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8("opcode"), + rq.Opcode(ResQueryClients), + rq.RequestLength()) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16("sequence_number"), + rq.ReplyLength(), + rq.LengthOf("clients", 4), + rq.Pad(20), + rq.List("clients", Client)) + + +def query_clients(self): + """Request the list of all currently connected clients.""" + return QueryClients( + display=self.display, + opcode=self.display.get_extension_major(extname)) + + +Type = rq.Struct( + rq.Card32("resource_type"), + rq.Card32("count")) + + +class QueryClientResources(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8("opcode"), + rq.Opcode(ResQueryClientResources), + rq.RequestLength(), + rq.Card32("client")) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16("sequence_number"), + rq.ReplyLength(), + rq.LengthOf("types", 4), + rq.Pad(20), + rq.List("types", Type)) + + +def query_client_resources(self, client): + """Request the number of resources owned by a client. + + The server will return the counts of each type of resource. + """ + return QueryClientResources( + display=self.display, + opcode=self.display.get_extension_major(extname), + client=client) + + +class QueryClientPixmapBytes(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8("opcode"), + rq.Opcode(ResQueryClientPixmapBytes), + rq.RequestLength(), + rq.Card32("client")) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16("sequence_number"), + rq.ReplyLength(), + rq.Card32("bytes"), + rq.Card32("bytes_overflow"), + rq.Pad(16)) + + +def query_client_pixmap_bytes(self, client): + """Query the pixmap usage of some client. + + The returned number is a sum of memory usage of each pixmap that can be + attributed to the given client. + """ + return QueryClientPixmapBytes( + display=self.display, + opcode=self.display.get_extension_major(extname), + client=client) + + +class SizeOf(rq.LengthOf): + """A SizeOf stores the size in bytes of some other Field whose size + may vary, e.g. List + """ + def __init__(self, name, size, item_size): + rq.LengthOf.__init__(self, name, size) + self.item_size = item_size + + def parse_value(self, length, display): + return length // self.item_size + + +ClientXIDMask = 1 << 0 +LocalClientPIDMask = 1 << 1 + + +ClientIdSpec = rq.Struct( + rq.Card32("client"), + rq.Card32("mask")) + + +ClientIdValue = rq.Struct( + rq.Object("spec", ClientIdSpec), + SizeOf("value", 4, 4), + rq.List("value", rq.Card32Obj)) + + +class QueryClientIds(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8("opcode"), + rq.Opcode(ResQueryClientIds), + rq.RequestLength(), + rq.LengthOf("specs", 4), + rq.List("specs", ClientIdSpec)) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16("sequence_number"), + rq.ReplyLength(), + rq.LengthOf("ids", 4), + rq.Pad(20), + rq.List("ids", ClientIdValue)) + + +def query_client_ids(self, specs): + """Request to identify a given set of clients with some identification method. + + The request sends a list of specifiers that select clients and + identification methods to server. The server then tries to identify the + chosen clients using the identification methods specified for each client. + The server returns IDs for those clients that were successfully identified. + """ + return QueryClientIds( + display=self.display, + opcode=self.display.get_extension_major(extname), + specs=specs) + + +ResourceIdSpec = rq.Struct( + rq.Card32("resource"), + rq.Card32("type")) + + +ResourceSizeSpec = rq.Struct( + # inline struct ResourceIdSpec to work around + # a parser bug with nested objects + rq.Card32("resource"), + rq.Card32("type"), + rq.Card32("bytes"), + rq.Card32("ref_count"), + rq.Card32("use_count")) + + +ResourceSizeValue = rq.Struct( + rq.Object("size", ResourceSizeSpec), + rq.LengthOf("cross_references", 4), + rq.List("cross_references", ResourceSizeSpec)) + + +class QueryResourceBytes(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8("opcode"), + rq.Opcode(ResQueryResourceBytes), + rq.RequestLength(), + rq.Card32("client"), + rq.LengthOf("specs", 4), + rq.List("specs", ResourceIdSpec)) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16("sequence_number"), + rq.ReplyLength(), + rq.LengthOf("sizes", 4), + rq.Pad(20), + rq.List("sizes", ResourceSizeValue)) + + +def query_resource_bytes(self, client, specs): + """Query the sizes of resources from X server. + + The request sends a list of specifiers that selects resources for size + calculation. The server tries to calculate the sizes of chosen resources + and returns an estimate for a resource only if the size could be determined + """ + return QueryResourceBytes( + display=self.display, + opcode=self.display.get_extension_major(extname), + client=client, + specs=specs) + + +def init(disp, info): + disp.extension_add_method("display", "res_query_version", query_version) + disp.extension_add_method("display", "res_query_clients", query_clients) + disp.extension_add_method("display", "res_query_client_resources", + query_client_resources) + disp.extension_add_method("display", "res_query_client_pixmap_bytes", + query_client_pixmap_bytes) + disp.extension_add_method("display", "res_query_client_ids", + query_client_ids) + disp.extension_add_method("display", "res_query_resource_bytes", + query_resource_bytes) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/screensaver.py b/myenv/lib/python3.10/site-packages/Xlib/ext/screensaver.py new file mode 100644 index 0000000..d6bad53 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/screensaver.py @@ -0,0 +1,198 @@ +# Xlib.ext.screensaver -- X ScreenSaver extension module +# +# Copyright (C) 2022 Vladimir Panteleev +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation; either version 2.1 +# of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, +# Fifth Floor, +# Boston, MA 02110-1301 USA + +"""This extension allows registering the client as an X screensaver, +or query information about the current screensaver. + +For detailed description see any of the following documents. +Protocol specification: + https://www.x.org/releases/X11R7.7/doc/scrnsaverproto/saver.html +XCB Protocol specification: + https://cgit.freedesktop.org/xcb/proto/tree/src/screensaver.xml + +""" + +from Xlib import X +from Xlib.protocol import rq, structs + +extname = 'MIT-SCREEN-SAVER' + +# Event members +NotifyMask = 1 +CycleMask = 2 + +# Notify state +StateOff = 0 +StateOn = 1 +StateCycle = 2 + +# Notify kind +KindBlanked = 0 +KindInternal = 1 +KindExternal = 2 + +class QueryVersion(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card8('major_version'), + rq.Card8('minor_version'), + rq.Pad(2), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('major_version'), + rq.Card16('minor_version'), + rq.Pad(20), + ) + +def query_version(self): + return QueryVersion(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=0) + + +class QueryInfo(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(1), + rq.RequestLength(), + rq.Drawable('drawable'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('state'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('saver_window'), + rq.Card32('til_or_since'), + rq.Card32('idle'), + rq.Card32('event_mask'), # rq.Set('event_mask', 4, (NotifyMask, CycleMask)), + rq.Card8('kind'), + rq.Pad(7), + ) + +def query_info(self): + return QueryInfo(display=self.display, + opcode=self.display.get_extension_major(extname), + drawable=self, + ) + + +class SelectInput(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.Card32('event_mask'), # rq.Set('event_mask', 4, (NotifyMask, CycleMask)), + ) + +def select_input(self, mask): + return SelectInput(display=self.display, + opcode=self.display.get_extension_major(extname), + drawable=self, + event_mask=mask, + ) + + +class SetAttributes(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(3), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('border_width'), + rq.Set('window_class', 1, (X.CopyFromParent, X.InputOutput, X.InputOnly)), + rq.Card8('depth'), + rq.Card32('visual'), + structs.WindowValues('attrs'), + ) + +def set_attributes(self, x, y, width, height, border_width, + window_class = X.CopyFromParent, + depth = X.CopyFromParent, + visual = X.CopyFromParent, + onerror = None, + **keys): + return SetAttributes(display=self.display, + onerror = onerror, + opcode=self.display.get_extension_major(extname), + drawable=self, + x = x, + y = y, + width = width, + height = height, + border_width = border_width, + window_class = window_class, + depth = depth, + visual = visual, + attrs = keys) + + +class UnsetAttributes(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength(), + rq.Drawable('drawable'), + ) + +def unset_attributes(self, onerror = None): + return UnsetAttributes(display=self.display, + onerror = onerror, + opcode=self.display.get_extension_major(extname), + drawable=self) + + +class Notify(rq.Event): + _code = None + _fields = rq.Struct( + rq.Card8('type'), + rq.Set('state', 1, (StateOff, StateOn, StateCycle)), + rq.Card16('sequence_number'), + rq.Card32('timestamp'), + rq.Window('root'), + rq.Window('window'), + rq.Set('kind', 1, (KindBlanked, KindInternal, KindExternal)), + rq.Bool('forced'), + rq.Pad(14), + ) + +def init(disp, info): + disp.extension_add_method('display', 'screensaver_query_version', query_version) + disp.extension_add_method('drawable', 'screensaver_query_info', query_info) + disp.extension_add_method('drawable', 'screensaver_select_input', select_input) + disp.extension_add_method('drawable', 'screensaver_set_attributes', set_attributes) + disp.extension_add_method('drawable', 'screensaver_unset_attributes', unset_attributes) + + disp.extension_add_event(info.first_event + 0, Notify) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/security.py b/myenv/lib/python3.10/site-packages/Xlib/ext/security.py new file mode 100644 index 0000000..ea5070c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/security.py @@ -0,0 +1,139 @@ +# Xlib.ext.security -- SECURITY extension module +# +# Copyright (C) 2010-2013 Outpost Embedded, LLC +# Forest Bond +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +''' +A partial implementation of the SECURITY extension. Support for the +SecurityAuthorizationRevoked event is not implemented. +''' + +from Xlib.protocol import rq + + +extname = 'SECURITY' + + +SecurityClientTrusted = 0 +SecurityClientUntrusted = 1 + +SecurityAuthorizationRevokedMask = 1 + + +AUTHID = rq.Card32 + + +class QueryVersion(rq.ReplyRequest): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card16('major_version'), + rq.Card16('minor_version') + ) + _reply = rq.Struct(rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('major_version'), + rq.Card16('minor_version'), + rq.Pad(20) + ) + + +def query_version(self): + return QueryVersion(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=0) + + +class SecurityGenerateAuthorization(rq.ReplyRequest): + # The order of fields here does not match the specifications I've seen + # online, but it *does* match with the X.org implementation. I guess the + # spec is out-of-date. + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(1), + rq.RequestLength(), + rq.LengthOf('auth_proto', 2), + rq.LengthOf('auth_data', 2), + rq.Card32('value_mask'), + rq.String8('auth_proto'), + rq.Binary('auth_data'), + rq.List('values', rq.Card32Obj) + ) + _reply = rq.Struct(rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + AUTHID('authid'), + rq.LengthOf('auth_data_return', 2), + rq.Pad(18), + rq.Binary('auth_data_return') + ) + + +def generate_authorization(self, auth_proto, auth_data=b'', timeout=None, + trust_level=None, group=None, event_mask=None): + value_mask = 0 + values = [] + if timeout is not None: + value_mask |= 1 + values.append(timeout) + if trust_level is not None: + value_mask |= 2 + values.append(trust_level) + if group is not None: + value_mask |= 4 + values.append(group) + if event_mask is not None: + value_mask |= 8 + values.append(event_mask) + return SecurityGenerateAuthorization(display=self.display, + opcode=self.display.get_extension_major(extname), + value_mask=value_mask, + auth_proto=auth_proto, + auth_data=auth_data, + values=values) + + +class SecurityRevokeAuthorization(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + AUTHID('authid') + ) + + +def revoke_authorization(self, authid): + return SecurityRevokeAuthorization(display=self.display, + opcode=self.display.get_extension_major(extname), + authid=authid) + + +def init(disp, info): + disp.extension_add_method('display', + 'security_query_version', + query_version) + disp.extension_add_method('display', + 'security_generate_authorization', + generate_authorization) + disp.extension_add_method('display', + 'security_revoke_authorization', + revoke_authorization) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/shape.py b/myenv/lib/python3.10/site-packages/Xlib/ext/shape.py new file mode 100644 index 0000000..1fd440a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/shape.py @@ -0,0 +1,297 @@ +# Automatically generated file; DO NOT EDIT. +# Generated from: /usr/share/xcb/shape.xml + +from Xlib.protocol import rq, structs + + +extname = 'SHAPE' + +OP = rq.Card8 + +class SO: + Set = 0 + Union = 1 + Intersect = 2 + Subtract = 3 + Invert = 4 + +class SK: + Bounding = 0 + Clip = 1 + Input = 2 + +class KIND(rq.Set): + + def __init__(self, name): + super(KIND, self).__init__(name, 1, + values=(SK.Bounding, + SK.Clip, + SK.Input)) + +class NotifyEventData(rq.Event): + _code = None + _fields = rq.Struct( + rq.Card8('type'), + KIND('shape_kind'), + rq.Card16('sequence_number'), + rq.Window('affected_window'), + rq.Int16('extents_x'), + rq.Int16('extents_y'), + rq.Card16('extents_width'), + rq.Card16('extents_height'), + rq.Card32('server_time'), + rq.Card8('shaped'), + rq.Pad(11), + ) + +class QueryVersion(rq.ReplyRequest): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('major_version'), + rq.Card16('minor_version'), + ) + +class Rectangles(rq.Request): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(1), + rq.RequestLength(), + OP('operation'), + KIND('destination_kind'), + rq.Card8('ordering'), + rq.Pad(1), + rq.Window('destination_window'), + rq.Int16('x_offset'), + rq.Int16('y_offset'), + rq.List('rectangles', structs.Rectangle, pad=0), + ) + +class Mask(rq.Request): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + OP('operation'), + KIND('destination_kind'), + rq.Pad(2), + rq.Window('destination_window'), + rq.Int16('x_offset'), + rq.Int16('y_offset'), + rq.Pixmap('source_bitmap'), + ) + +class Combine(rq.Request): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(3), + rq.RequestLength(), + OP('operation'), + KIND('destination_kind'), + KIND('source_kind'), + rq.Pad(1), + rq.Window('destination_window'), + rq.Int16('x_offset'), + rq.Int16('y_offset'), + rq.Window('source_window'), + ) + +class Offset(rq.Request): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength(), + KIND('destination_kind'), + rq.Pad(3), + rq.Window('destination_window'), + rq.Int16('x_offset'), + rq.Int16('y_offset'), + ) + +class QueryExtents(rq.ReplyRequest): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(5), + rq.RequestLength(), + rq.Window('destination_window'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card8('bounding_shaped'), + rq.Card8('clip_shaped'), + rq.Pad(2), + rq.Int16('bounding_shape_extents_x'), + rq.Int16('bounding_shape_extents_y'), + rq.Card16('bounding_shape_extents_width'), + rq.Card16('bounding_shape_extents_height'), + rq.Int16('clip_shape_extents_x'), + rq.Int16('clip_shape_extents_y'), + rq.Card16('clip_shape_extents_width'), + rq.Card16('clip_shape_extents_height'), + ) + +class SelectInput(rq.Request): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(6), + rq.RequestLength(), + rq.Window('destination_window'), + rq.Card8('enable'), + rq.Pad(3), + ) + +class InputSelected(rq.ReplyRequest): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(7), + rq.RequestLength(), + rq.Window('destination_window'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('enabled'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + ) + +class GetRectangles(rq.ReplyRequest): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(8), + rq.RequestLength(), + rq.Window('window'), + KIND('source_kind'), + rq.Pad(3), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('ordering'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('rectangles', 4), + rq.Pad(20), + rq.List('rectangles', structs.Rectangle, pad=0), + ) + +class Event: + # Sub events. + Notify = 0 + +def combine(self, operation, destination_kind, source_kind, x_offset, y_offset): + Combine( + display=self.display, + opcode=self.display.get_extension_major(extname), + source_window=self, + operation=operation, + destination_kind=destination_kind, + source_kind=source_kind, + x_offset=x_offset, + y_offset=y_offset, + ) + +def get_rectangles(self, source_kind): + return GetRectangles( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + source_kind=source_kind, + ) + +def input_selected(self, ): + return InputSelected( + display=self.display, + opcode=self.display.get_extension_major(extname), + destination_window=self, + ) + +def mask(self, operation, destination_kind, x_offset, y_offset, source_bitmap): + Mask( + display=self.display, + opcode=self.display.get_extension_major(extname), + destination_window=self, + operation=operation, + destination_kind=destination_kind, + x_offset=x_offset, + y_offset=y_offset, + source_bitmap=source_bitmap, + ) + +def offset(self, destination_kind, x_offset, y_offset): + Offset( + display=self.display, + opcode=self.display.get_extension_major(extname), + destination_window=self, + destination_kind=destination_kind, + x_offset=x_offset, + y_offset=y_offset, + ) + +def query_extents(self, ): + return QueryExtents( + display=self.display, + opcode=self.display.get_extension_major(extname), + destination_window=self, + ) + +def query_version(self, ): + return QueryVersion( + display=self.display, + opcode=self.display.get_extension_major(extname), + ) + +def rectangles(self, operation, destination_kind, ordering, x_offset, y_offset, rectangles): + Rectangles( + display=self.display, + opcode=self.display.get_extension_major(extname), + destination_window=self, + operation=operation, + destination_kind=destination_kind, + ordering=ordering, + x_offset=x_offset, + y_offset=y_offset, + rectangles=rectangles, + ) + +def select_input(self, enable): + SelectInput( + display=self.display, + opcode=self.display.get_extension_major(extname), + destination_window=self, + enable=enable, + ) + +def init(disp, info): + disp.extension_add_method('window', 'shape_combine', combine) + disp.extension_add_method('window', 'shape_get_rectangles', get_rectangles) + disp.extension_add_method('window', 'shape_input_selected', input_selected) + disp.extension_add_method('window', 'shape_mask', mask) + disp.extension_add_method('window', 'shape_offset', offset) + disp.extension_add_method('window', 'shape_query_extents', query_extents) + disp.extension_add_method('display', 'shape_query_version', query_version) + disp.extension_add_method('window', 'shape_rectangles', rectangles) + disp.extension_add_method('window', 'shape_select_input', select_input) + disp.extension_add_event(info.first_event + Event.Notify, NotifyEventData, 'ShapeNotify') + diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/xfixes.py b/myenv/lib/python3.10/site-packages/Xlib/ext/xfixes.py new file mode 100644 index 0000000..a7cf35f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/xfixes.py @@ -0,0 +1,200 @@ +# Xlib.ext.xfixes -- XFIXES extension module +# +# Copyright (C) 2010-2011 Outpost Embedded, LLC +# Forest Bond +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +''' +A partial implementation of the XFIXES extension. Only the HideCursor and +ShowCursor requests and SelectionNotify events are provided. +''' + +from Xlib.protocol import rq + +extname = 'XFIXES' + +XFixesSelectionNotify = 0 +XFixesCursorNotify = 1 + +XFixesSetSelectionOwnerNotifyMask = (1 << 0) +XFixesSelectionWindowDestroyNotifyMask = (1 << 1) +XFixesSelectionClientCloseNotifyMask = (1 << 2) +XFixesDisplayCursorNotifyMask = (1 << 0) + +XFixesSetSelectionOwnerNotify = 0 +XFixesSelectionWindowDestroyNotify = 1 +XFixesSelectionClientCloseNotify = 2 +XFixesDisplayCursorNotify = 0 + +class QueryVersion(rq.ReplyRequest): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card32('major_version'), + rq.Card32('minor_version') + ) + _reply = rq.Struct(rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('major_version'), + rq.Card32('minor_version'), + rq.Pad(16) + ) + + +def query_version(self): + return QueryVersion(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=4, + minor_version=0) + + +class HideCursor(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(29), + rq.RequestLength(), + rq.Window('window') + ) + +def hide_cursor(self): + HideCursor(display=self.display, + opcode=self.display.get_extension_major(extname), + window=self) + + +class ShowCursor(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(30), + rq.RequestLength(), + rq.Window('window') + ) + + +def show_cursor(self): + ShowCursor(display=self.display, + opcode=self.display.get_extension_major(extname), + window=self) + +class SelectSelectionInput(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('selection'), + rq.Card32('mask') + ) + +def select_selection_input(self, window, selection, mask): + return SelectSelectionInput(opcode=self.display.get_extension_major(extname), + display=self.display, + window=window, + selection=selection, + mask=mask) + + +class SelectionNotify(rq.Event): + _code = None + _fields = rq.Struct(rq.Card8('type'), + rq.Card8('sub_code'), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Window('owner'), + rq.Card32('selection'), + rq.Card32('timestamp'), + rq.Card32('selection_timestamp'), + rq.Pad(8)) + + +class SetSelectionOwnerNotify(SelectionNotify): + pass + + +class SelectionWindowDestroyNotify(SelectionNotify): + pass + + +class SelectionClientCloseNotify(SelectionNotify): + pass + + +class SelectCursorInput(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(3), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('mask') + ) + +def select_cursor_input(self, window, mask): + return SelectCursorInput(opcode=self.display.get_extension_major(extname), + display=self.display, + window=window, + cursor_serial=0, + mask=mask) + + +class GetCursorImage(rq.ReplyRequest): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength() + ) + _reply = rq.Struct(rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('xhot'), + rq.Card16('yhot'), + rq.Card32('cursor_serial'), + rq.Pad(8), + rq.List('cursor_image', rq.Card32) + ) + +def get_cursor_image(self, window): + return GetCursorImage(opcode=self.display.get_extension_major(extname), + display=self.display, + ) + + +class DisplayCursorNotify(rq.Event): + _code = None + _fields = rq.Struct(rq.Card8('type'), + rq.Card8('sub_code'), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Card32('cursor_serial'), + rq.Card32('timestamp')) + + +def init(disp, info): + disp.extension_add_method('display', 'xfixes_select_selection_input', select_selection_input) + disp.extension_add_method('display', 'xfixes_query_version', query_version) + disp.extension_add_method('window', 'xfixes_hide_cursor', hide_cursor) + disp.extension_add_method('window', 'xfixes_show_cursor', show_cursor) + disp.extension_add_method('display', 'xfixes_select_cursor_input', select_cursor_input) + disp.extension_add_method('display', 'xfixes_get_cursor_image', get_cursor_image) + + disp.extension_add_subevent(info.first_event + XFixesSelectionNotify, XFixesSetSelectionOwnerNotify, SetSelectionOwnerNotify) + disp.extension_add_subevent(info.first_event + XFixesSelectionNotify, XFixesSelectionWindowDestroyNotify, SelectionWindowDestroyNotify) + disp.extension_add_subevent(info.first_event + XFixesSelectionNotify, XFixesSelectionClientCloseNotify, SelectionClientCloseNotify) + disp.extension_add_subevent(info.first_event + XFixesCursorNotify, XFixesDisplayCursorNotify, DisplayCursorNotify) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/xinerama.py b/myenv/lib/python3.10/site-packages/Xlib/ext/xinerama.py new file mode 100644 index 0000000..eff1acd --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/xinerama.py @@ -0,0 +1,222 @@ +# Xlib.ext.xinerama -- Xinerama extension module +# +# Copyright (C) 2006 Mike Meyer +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + + +"""Xinerama - provide access to the Xinerama extension information. + +There are at least there different - and mutually incomparable - +Xinerama extensions available. This uses the one bundled with XFree86 +4.6 and/or Xorg 6.9 in the ati/radeon driver. It uses the include +files from that X distribution, so should work with it as well. I +provide code for the lone Sun 1.0 request that isn't part of 1.1, but +this is untested because I don't have a server that implements it. + +The functions loosely follow the libXineram functions. Mostly, they +return an rq.Struct in lieu of passing in pointers that get data from +the rq.Struct crammed into them. The exception is isActive, which +returns the state information - because that's what libXinerama does.""" + + +from Xlib.protocol import rq, structs + +extname = 'XINERAMA' + + +class QueryVersion(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card8('major_version'), + rq.Card8('minor_version'), + rq.Pad(2), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('major_version'), + rq.Card16('minor_version'), + rq.Pad(20), + ) + +def query_version(self): + return QueryVersion(display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=1, + minor_version=1) + + +class GetState(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(1), + rq.RequestLength(), + rq.Window('window'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Bool('state'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('window'), + rq.Pad(20), + ) + +def get_state(self): + return GetState(display=self.display, + opcode=self.display.get_extension_major(extname), + window=self.id, + ) + + +class GetScreenCount(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + rq.Window('window'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('screen_count'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('window'), + rq.Pad(20), + ) + +def get_screen_count(self): + return GetScreenCount(display=self.display, + opcode=self.display.get_extension_major(extname), + window=self.id, + ) + + +class GetScreenSize(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(3), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('screen'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Card32('length'), + rq.Card32('width'), + rq.Card32('height'), + rq.Window('window'), + rq.Card32('screen'), + rq.Pad(8), + ) + +def get_screen_size(self, screen_no): + """Returns the size of the given screen number""" + return GetScreenSize(display=self.display, + opcode=self.display.get_extension_major(extname), + window=self.id, + screen=screen_no, + ) + + +# IsActive is only available from Xinerama 1.1 and later. +# It should be used in preference to GetState. +class IsActive(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength(), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('state'), + rq.Pad(20), + ) + +def is_active(self): + r = IsActive(display=self.display, + opcode=self.display.get_extension_major(extname), + ) + return r.state + + +# QueryScreens is only available from Xinerama 1.1 and later +class QueryScreens(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(5), + rq.RequestLength(), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('number'), + rq.Pad(20), + rq.List('screens', structs.Rectangle), + ) + +def query_screens(self): + # Hmm. This one needs to read the screen data from the socket. Ooops... + return QueryScreens(display=self.display, + opcode=self.display.get_extension_major(extname), + ) + + +# GetInfo is only available from some Xinerama 1.0, and *NOT* later! Untested +class GetInfo(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(4), + rq.RequestLength(), + rq.Card32('visual'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('window'), + # An array of subwindow slots goes here. Bah. + ) + +def get_info(self, visual): + r = GetInfo(display=self.display, + opcode=self.display.get_extension_major(extname), + visual=visual) + +def init(disp, info): + disp.extension_add_method('display', 'xinerama_query_version', query_version) + disp.extension_add_method('window', 'xinerama_get_state', get_state) + disp.extension_add_method('window', 'xinerama_get_screen_count', get_screen_count) + disp.extension_add_method('window', 'xinerama_get_screen_size', get_screen_size) + disp.extension_add_method('display', 'xinerama_is_active', is_active) + disp.extension_add_method('display', 'xinerama_query_screens', query_screens) + disp.extension_add_method('display', 'xinerama_get_info', get_info) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/xinput.py b/myenv/lib/python3.10/site-packages/Xlib/ext/xinput.py new file mode 100644 index 0000000..95560dd --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/xinput.py @@ -0,0 +1,777 @@ +# Xlib.ext.xinput -- XInput extension module +# +# Copyright (C) 2012 Outpost Embedded, LLC +# Forest Bond +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +''' +A very incomplete implementation of the XInput extension. +''' + +import sys +import array +import struct + +# Python 2/3 compatibility. +from six import integer_types + +from Xlib.protocol import rq +from Xlib import X + + +extname = 'XInputExtension' + +PropertyDeleted = 0 +PropertyCreated = 1 +PropertyModified = 2 + +NotifyNormal = 0 +NotifyGrab = 1 +NotifyUngrab = 2 +NotifyWhileGrabbed = 3 +NotifyPassiveGrab = 4 +NotifyPassiveUngrab = 5 + +NotifyAncestor = 0 +NotifyVirtual = 1 +NotifyInferior = 2 +NotifyNonlinear = 3 +NotifyNonlinearVirtual = 4 +NotifyPointer = 5 +NotifyPointerRoot = 6 +NotifyDetailNone = 7 + +GrabtypeButton = 0 +GrabtypeKeycode = 1 +GrabtypeEnter = 2 +GrabtypeFocusIn = 3 +GrabtypeTouchBegin = 4 + +AnyModifier = (1 << 31) +AnyButton = 0 +AnyKeycode = 0 + +AsyncDevice = 0 +SyncDevice = 1 +ReplayDevice = 2 +AsyncPairedDevice = 3 +AsyncPair = 4 +SyncPair = 5 + +SlaveSwitch = 1 +DeviceChange = 2 + +MasterAdded = (1 << 0) +MasterRemoved = (1 << 1) +SlaveAdded = (1 << 2) +SlaveRemoved = (1 << 3) +SlaveAttached = (1 << 4) +SlaveDetached = (1 << 5) +DeviceEnabled = (1 << 6) +DeviceDisabled = (1 << 7) + +AddMaster = 1 +RemoveMaster = 2 +AttachSlave = 3 +DetachSlave = 4 + +AttachToMaster = 1 +Floating = 2 + +ModeRelative = 0 +ModeAbsolute = 1 + +MasterPointer = 1 +MasterKeyboard = 2 +SlavePointer = 3 +SlaveKeyboard = 4 +FloatingSlave = 5 + +KeyClass = 0 +ButtonClass = 1 +ValuatorClass = 2 +ScrollClass = 3 +TouchClass = 8 + +KeyRepeat = (1 << 16) + +AllDevices = 0 +AllMasterDevices = 1 + +DeviceChanged = 1 +KeyPress = 2 +KeyRelease = 3 +ButtonPress = 4 +ButtonRelease = 5 +Motion = 6 +Enter = 7 +Leave = 8 +FocusIn = 9 +FocusOut = 10 +HierarchyChanged = 11 +PropertyEvent = 12 +RawKeyPress = 13 +RawKeyRelease = 14 +RawButtonPress = 15 +RawButtonRelease = 16 +RawMotion = 17 + +DeviceChangedMask = (1 << DeviceChanged) +KeyPressMask = (1 << KeyPress) +KeyReleaseMask = (1 << KeyRelease) +ButtonPressMask = (1 << ButtonPress) +ButtonReleaseMask = (1 << ButtonRelease) +MotionMask = (1 << Motion) +EnterMask = (1 << Enter) +LeaveMask = (1 << Leave) +FocusInMask = (1 << FocusIn) +FocusOutMask = (1 << FocusOut) +HierarchyChangedMask = (1 << HierarchyChanged) +PropertyEventMask = (1 << PropertyEvent) +RawKeyPressMask = (1 << RawKeyPress) +RawKeyReleaseMask = (1 << RawKeyRelease) +RawButtonPressMask = (1 << RawButtonPress) +RawButtonReleaseMask = (1 << RawButtonRelease) +RawMotionMask = (1 << RawMotion) + +GrabModeSync = 0 +GrabModeAsync = 1 +GrabModeTouch = 2 + +DEVICEID = rq.Card16 +DEVICE = rq.Card16 +DEVICEUSE = rq.Card8 + +PROPERTY_TYPE_FLOAT = 'FLOAT' + +class FP1616(rq.Int32): + + def check_value(self, value): + return int(value * 65536.0) + + def parse_value(self, value, display): + return float(value) / float(1 << 16) + +class FP3232(rq.ValueField): + structcode = 'lL' + structvalues = 2 + + def check_value(self, value): + return value + + def parse_value(self, value, display): + integral, frac = value + ret = float(integral) + # optimised math.ldexp(float(frac), -32) + ret += float(frac) * (1.0 / (1 << 32)) + return ret + +class XIQueryVersion(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(47), + rq.RequestLength(), + rq.Card16('major_version'), + rq.Card16('minor_version'), + ) + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('major_version'), + rq.Card16('minor_version'), + rq.Pad(20), + ) + + +def query_version(self): + return XIQueryVersion( + display=self.display, + opcode=self.display.get_extension_major(extname), + major_version=2, + minor_version=0, + ) + +class Mask(rq.List): + + def __init__(self, name): + rq.List.__init__(self, name, rq.Card32, pad=0) + + def pack_value(self, val): + + mask_seq = array.array(rq.struct_to_array_codes['L']) + + if isinstance(val, integer_types): + # We need to build a "binary mask" that (as far as I can tell) is + # encoded in native byte order from end to end. The simple case is + # with a single unsigned 32-bit value, for which we construct an + # array with just one item. For values too big to fit inside 4 + # bytes we build a longer array, being careful to maintain native + # byte order across the entire set of values. + if sys.byteorder == 'little': + def fun(val): + mask_seq.insert(0, val) + elif sys.byteorder == 'big': + fun = mask_seq.append + else: + raise AssertionError(sys.byteorder) + while val: + fun(val & 0xFFFFFFFF) + val = val >> 32 + else: + mask_seq.extend(val) + + return rq.encode_array(mask_seq), len(mask_seq), None + +EventMask = rq.Struct( + DEVICE('deviceid'), + rq.LengthOf('mask', 2), + Mask('mask'), +) + + +class XISelectEvents(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(46), + rq.RequestLength(), + rq.Window('window'), + rq.LengthOf('masks', 2), + rq.Pad(2), + rq.List('masks', EventMask), + ) + +def select_events(self, event_masks): + ''' + select_events(event_masks) + + event_masks: + Sequence of (deviceid, mask) pairs, where deviceid is a numerical device + ID, or AllDevices or AllMasterDevices, and mask is either an unsigned + integer or sequence of 32 bits unsigned values + ''' + return XISelectEvents( + display=self.display, + opcode=self.display.get_extension_major(extname), + window=self, + masks=event_masks, + ) + +AnyInfo = rq.Struct( + rq.Card16('type'), + rq.Card16('length'), + rq.Card16('sourceid'), + rq.Pad(2), +) + +class ButtonMask(object): + + def __init__(self, value, length): + self._value = value + self._length = length + + def __len__(self): + return self._length + + def __getitem__(self, key): + return self._value & (1 << key) + + def __str__(self): + return repr(self) + + def __repr__(self): + return '0b{value:0{width}b}'.format(value=self._value, + width=self._length) + +class ButtonState(rq.ValueField): + + structcode = None + + def __init__(self, name): + rq.ValueField.__init__(self, name) + + def parse_binary_value(self, data, display, length, fmt): + # Mask: bitfield of button states. + mask_len = 4 * ((((length + 7) >> 3) + 3) >> 2) + mask_data = data[:mask_len] + mask_value = 0 + for byte in reversed(struct.unpack('={0:d}B'.format(mask_len), mask_data)): + mask_value <<= 8 + mask_value |= byte + data = data[mask_len:] + assert (mask_value & 1) == 0 + return ButtonMask(mask_value >> 1, length), data + +ButtonInfo = rq.Struct( + rq.Card16('type'), + rq.Card16('length'), + rq.Card16('sourceid'), + rq.LengthOf(('state', 'labels'), 2), + ButtonState('state'), + rq.List('labels', rq.Card32), +) + +KeyInfo = rq.Struct( + rq.Card16('type'), + rq.Card16('length'), + rq.Card16('sourceid'), + rq.LengthOf('keycodes', 2), + rq.List('keycodes', rq.Card32), +) + +ValuatorInfo = rq.Struct( + rq.Card16('type'), + rq.Card16('length'), + rq.Card16('sourceid'), + rq.Card16('number'), + rq.Card32('label'), + FP3232('min'), + FP3232('max'), + FP3232('value'), + rq.Card32('resolution'), + rq.Card8('mode'), + rq.Pad(3), +) + +ScrollInfo = rq.Struct( + rq.Card16('type'), + rq.Card16('length'), + rq.Card16('sourceid'), + rq.Card16('number'), + rq.Card16('scroll_type'), + rq.Pad(2), + rq.Card32('flags'), + FP3232('increment'), +) + +TouchInfo = rq.Struct( + rq.Card16('type'), + rq.Card16('length'), + rq.Card16('sourceid'), + rq.Card8('mode'), + rq.Card8('num_touches'), +) + +INFO_CLASSES = { + KeyClass: KeyInfo, + ButtonClass: ButtonInfo, + ValuatorClass: ValuatorInfo, + ScrollClass: ScrollInfo, + TouchClass: TouchInfo, +} + +class ClassInfoClass(object): + + structcode = None + + def parse_binary(self, data, display): + class_type, length = struct.unpack('=HH', data[:4]) + class_struct = INFO_CLASSES.get(class_type, AnyInfo) + class_data, _ = class_struct.parse_binary(data, display) + data = data[length * 4:] + return class_data, data + +ClassInfo = ClassInfoClass() + +DeviceInfo = rq.Struct( + DEVICEID('deviceid'), + rq.Card16('use'), + rq.Card16('attachment'), + rq.LengthOf('classes', 2), + rq.LengthOf('name', 2), + rq.Bool('enabled'), + rq.Pad(1), + rq.String8('name', 4), + rq.List('classes', ClassInfo), +) + +class XIQueryDevice(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(48), + rq.RequestLength(), + DEVICEID('deviceid'), + rq.Pad(2), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('devices', 2), + rq.Pad(22), + rq.List('devices', DeviceInfo), + ) + +def query_device(self, deviceid): + return XIQueryDevice( + display=self.display, + opcode=self.display.get_extension_major(extname), + deviceid=deviceid, + ) + +class XIListProperties(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(56), + rq.RequestLength(), + DEVICEID('deviceid'), + rq.Pad(2), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('atoms', 2), + rq.Pad(22), + rq.List('atoms', rq.Card32Obj), + ) + +def list_device_properties(self, deviceid): + return XIListProperties( + display=self.display, + opcode=self.display.get_extension_major(extname), + deviceid=deviceid, + ) + +class XIGetProperty(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(59), + rq.RequestLength(), + DEVICEID('deviceid'), + rq.Card8('delete'), + rq.Pad(1), + rq.Card32('property'), + rq.Card32('type'), + rq.Card32('offset'), + rq.Card32('length'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('type'), + rq.Card32('bytes_after'), + rq.LengthOf('value', 4), + rq.Format('value', 1), + rq.Pad(11), + rq.PropertyData('value') + ) + +def get_device_property(self, deviceid, property, type, offset, length, delete=False): + return XIGetProperty( + display=self.display, + opcode=self.display.get_extension_major(extname), + deviceid=deviceid, + property=property, + type=type, + offset=offset, + length=length, + delete=delete, + ) + +class XIChangeProperty(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(57), + rq.RequestLength(), + DEVICEID('deviceid'), + rq.Card8('mode'), + rq.Format('value', 1), + rq.Card32('property'), + rq.Card32('type'), + rq.LengthOf('value', 4), + rq.PropertyData('value'), + ) + +def change_device_property(self, deviceid, property, type, mode, value): + return XIChangeProperty( + display=self.display, + opcode=self.display.get_extension_major(extname), + deviceid=deviceid, + property=property, + type=type, + mode=mode, + value=value, + ) + +class XIDeleteProperty(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(58), + rq.RequestLength(), + DEVICEID('deviceid'), + rq.Pad(2), + rq.Card32('property'), + ) + +def delete_device_property(self, deviceid, property): + return XIDeleteProperty( + display=self.display, + opcode=self.display.get_extension_major(extname), + deviceid=deviceid, + property=property, + ) + +class XIGrabDevice(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(51), + rq.RequestLength(), + rq.Window('grab_window'), + rq.Card32('time'), + rq.Cursor('cursor', (X.NONE, )), + DEVICEID('deviceid'), + rq.Set('grab_mode', 1, (GrabModeSync, GrabModeAsync)), + rq.Set('paired_device_mode', 1, (GrabModeSync, GrabModeAsync)), + rq.Bool('owner_events'), + rq.Pad(1), + rq.LengthOf('mask', 2), + Mask('mask'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card8('status'), + rq.Pad(23), + ) + +def grab_device(self, deviceid, time, grab_mode, paired_device_mode, owner_events, event_mask): + return XIGrabDevice( + display=self.display, + opcode=self.display.get_extension_major(extname), + deviceid=deviceid, + grab_window=self, + time=time, + cursor=X.NONE, + grab_mode=grab_mode, + paired_device_mode=paired_device_mode, + owner_events=owner_events, + mask=event_mask, + ) + +class XIUngrabDevice(rq.Request): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(52), + rq.RequestLength(), + rq.Card32('time'), + DEVICEID('deviceid'), + rq.Pad(2), + ) + +def ungrab_device(self, deviceid, time): + return XIUngrabDevice( + display=self.display, + opcode=self.display.get_extension_major(extname), + time=time, + deviceid=deviceid, + ) + +class XIPassiveGrabDevice(rq.ReplyRequest): + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(54), + rq.RequestLength(), + rq.Card32('time'), + rq.Window('grab_window'), + rq.Cursor('cursor', (X.NONE, )), + rq.Card32('detail'), + DEVICEID('deviceid'), + rq.LengthOf('modifiers', 2), + rq.LengthOf('mask', 2), + rq.Set('grab_type', 1, (GrabtypeButton, GrabtypeKeycode, GrabtypeEnter, + GrabtypeFocusIn, GrabtypeTouchBegin)), + rq.Set('grab_mode', 1, (GrabModeSync, GrabModeAsync)), + rq.Set('paired_device_mode', 1, (GrabModeSync, GrabModeAsync)), + rq.Bool('owner_events'), + rq.Pad(2), + Mask('mask'), + rq.List('modifiers', rq.Card32), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('modifiers', 2), + rq.Pad(22), + rq.List('modifiers', rq.Card32), + ) + +def passive_grab_device(self, deviceid, time, detail, + grab_type, grab_mode, paired_device_mode, + owner_events, event_mask, modifiers): + return XIPassiveGrabDevice( + display=self.display, + opcode=self.display.get_extension_major(extname), + deviceid=deviceid, + grab_window=self, + time=time, + cursor=X.NONE, + detail=detail, + grab_type=grab_type, + grab_mode=grab_mode, + paired_device_mode=paired_device_mode, + owner_events=owner_events, + mask=event_mask, + modifiers=modifiers, + ) + +def grab_keycode(self, deviceid, time, keycode, + grab_mode, paired_device_mode, + owner_events, event_mask, modifiers): + return passive_grab_device(self, deviceid, time, keycode, + GrabtypeKeycode, + grab_mode, paired_device_mode, + owner_events, event_mask, modifiers) + +class XIPassiveUngrabDevice(rq.Request): + + _request = rq.Struct( + rq.Card8('opcode'), + rq.Opcode(55), + rq.RequestLength(), + rq.Window('grab_window'), + rq.Card32('detail'), + DEVICEID('deviceid'), + rq.LengthOf('modifiers', 2), + rq.Set('grab_type', 1, (GrabtypeButton, GrabtypeKeycode, + GrabtypeEnter, GrabtypeFocusIn, + GrabtypeTouchBegin)), + rq.Pad(3), + rq.List('modifiers', rq.Card32), + ) + +def passive_ungrab_device(self, deviceid, detail, grab_type, modifiers): + return XIPassiveUngrabDevice( + display=self.display, + opcode=self.display.get_extension_major(extname), + deviceid=deviceid, + grab_window=self, + detail=detail, + grab_type=grab_type, + modifiers=modifiers, + ) + +def ungrab_keycode(self, deviceid, keycode, modifiers): + return passive_ungrab_device(self, deviceid, keycode, + GrabtypeKeycode, modifiers) + +HierarchyInfo = rq.Struct( + DEVICEID('deviceid'), + DEVICEID('attachment'), + DEVICEUSE('type'), + rq.Bool('enabled'), + rq.Pad(2), + rq.Card32('flags'), +) + + +HierarchyEventData = rq.Struct( + DEVICEID('deviceid'), + rq.Card32('time'), + rq.Card32('flags'), + rq.LengthOf('info', 2), + rq.Pad(10), + rq.List('info', HierarchyInfo), +) + +ModifierInfo = rq.Struct( + rq.Card32('base_mods'), + rq.Card32('latched_mods'), + rq.Card32('locked_mods'), + rq.Card32('effective_mods'), +) + +GroupInfo = rq.Struct( + rq.Card8('base_group'), + rq.Card8('latched_group'), + rq.Card8('locked_group'), + rq.Card8('effective_group'), +) + +DeviceEventData = rq.Struct( + DEVICEID('deviceid'), + rq.Card32('time'), + rq.Card32('detail'), + rq.Window('root'), + rq.Window('event'), + rq.Window('child'), + FP1616('root_x'), + FP1616('root_y'), + FP1616('event_x'), + FP1616('event_y'), + rq.LengthOf('buttons', 2), + rq.Card16('valulators_len'), + DEVICEID('sourceid'), + rq.Pad(2), + rq.Card32('flags'), + rq.Object('mods', ModifierInfo), + rq.Object('groups', GroupInfo), + ButtonState('buttons'), +) + +DeviceChangedEventData = rq.Struct( + DEVICEID('deviceid'), + rq.Card32('time'), + rq.LengthOf('classes', 2), + DEVICEID('sourceid'), + rq.Card8('reason'), + rq.Pad(11), + rq.List('classes', ClassInfo), +) + +PropertyEventData = rq.Struct( + DEVICEID('deviceid'), + rq.Card32('time'), + rq.Card32('property'), + rq.Card8('what'), + rq.Pad(11), +) + +def init(disp, info): + disp.extension_add_method('display', 'xinput_query_version', query_version) + disp.extension_add_method('window', 'xinput_select_events', select_events) + disp.extension_add_method('display', 'xinput_query_device', query_device) + disp.extension_add_method('window', 'xinput_grab_device', grab_device) + disp.extension_add_method('display', 'xinput_ungrab_device', ungrab_device) + disp.extension_add_method('window', 'xinput_grab_keycode', grab_keycode) + disp.extension_add_method('window', 'xinput_ungrab_keycode', ungrab_keycode) + disp.extension_add_method('display', 'xinput_get_device_property', get_device_property) + disp.extension_add_method('display', 'xinput_list_device_properties', list_device_properties) + disp.extension_add_method('display', 'xinput_change_device_property', change_device_property) + disp.extension_add_method('display', 'xinput_delete_device_property', delete_device_property) + if hasattr(disp,"ge_add_event_data"): + for device_event in (ButtonPress, ButtonRelease, KeyPress, KeyRelease, Motion): + disp.ge_add_event_data(info.major_opcode, device_event, DeviceEventData) + disp.ge_add_event_data(info.major_opcode, DeviceChanged, DeviceEventData) + disp.ge_add_event_data(info.major_opcode, HierarchyChanged, HierarchyEventData) + disp.ge_add_event_data(info.major_opcode, PropertyEvent, PropertyEventData) diff --git a/myenv/lib/python3.10/site-packages/Xlib/ext/xtest.py b/myenv/lib/python3.10/site-packages/Xlib/ext/xtest.py new file mode 100644 index 0000000..0b5d7da --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/ext/xtest.py @@ -0,0 +1,122 @@ +# Xlib.ext.xtest -- XTEST extension module +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +from Xlib import X +from Xlib.protocol import rq + +extname = 'XTEST' + +CurrentCursor = 1 + +class GetVersion(rq.ReplyRequest): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(0), + rq.RequestLength(), + rq.Card8('major_version'), + rq.Pad(1), + rq.Card16('minor_version') + ) + + _reply = rq.Struct(rq.Pad(1), + rq.Card8('major_version'), + rq.Card16('sequence_number'), + rq.Pad(4), + rq.Card16('minor_version'), + rq.Pad(22) + ) + +def get_version(self, major, minor): + return GetVersion(display = self.display, + opcode = self.display.get_extension_major(extname), + major_version = major, + minor_version = minor) + + +class CompareCursor(rq.ReplyRequest): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(1), + rq.RequestLength(), + rq.Window('window'), + rq.Cursor('cursor', (X.NONE, CurrentCursor)), + ) + + _reply = rq.Struct(rq.Pad(1), + rq.Card8('same'), + rq.Card16('sequence_number'), + rq.Pad(28), + ) + +def compare_cursor(self, cursor): + r = CompareCursor(display = self.display, + opcode = self.display.get_extension_major(extname), + window = self.id, + cursor = cursor) + return r.same + +class FakeInput(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(2), + rq.RequestLength(), + rq.Set('event_type', 1, (X.KeyPress, + X.KeyRelease, + X.ButtonPress, + X.ButtonRelease, + X.MotionNotify)), + rq.Card8('detail'), + rq.Pad(2), + rq.Card32('time'), + rq.Window('root', (X.NONE, )), + rq.Pad(8), + rq.Int16('x'), + rq.Int16('y'), + rq.Pad(8) + ) + +def fake_input(self, event_type, detail = 0, time = X.CurrentTime, + root = X.NONE, x = 0, y = 0): + + FakeInput(display = self.display, + opcode = self.display.get_extension_major(extname), + event_type = event_type, + detail = detail, + time = time, + root = root, + x = x, + y = y) + +class GrabControl(rq.Request): + _request = rq.Struct(rq.Card8('opcode'), + rq.Opcode(3), + rq.RequestLength(), + rq.Bool('impervious'), + rq.Pad(3) + ) + +def grab_control(self, impervious): + GrabControl(display = self.display, + opcode = self.display.get_extension_major(extname), + impervious = impervious) + +def init(disp, info): + disp.extension_add_method('display', 'xtest_get_version', get_version) + disp.extension_add_method('window', 'xtest_compare_cursor', compare_cursor) + disp.extension_add_method('display', 'xtest_fake_input', fake_input) + disp.extension_add_method('display', 'xtest_grab_control', grab_control) diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__init__.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__init__.py new file mode 100644 index 0000000..6c7ebb2 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__init__.py @@ -0,0 +1,42 @@ +# Xlib.keysymdef -- X keysym defs +# +# Copyright (C) 2001 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +__all__ = [ + 'apl', + 'arabic', + 'cyrillic', + 'greek', + 'hebrew', + 'katakana', + 'korean', + 'latin1', + 'latin2', + 'latin3', + 'latin4', + 'miscellany', + 'publishing', + 'special', + 'technical', + 'thai', + 'xf86', + 'xk3270', + 'xkb', + ] diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..846e363dcacc91b321236ce17cc627ad495c02c9 GIT binary patch literal 392 zcmYjNyG{c!5cDPC@=#JCJ|YEi9tbE9qM)XsL2j(QyUm?tpU<*=Nv`21_yanA$t{0D zg%71*q@CH(?nhuN^$;0>>~dE zM?dehYHFlKW!nRNMkjq^sOfywXl|M#TAsDuN5eC4Sa5Dz=Zm<Z(rxH8Y)dlV;=Ryn5`O0)*@=!NLtMD=DbL|73U;P4Te}4!7 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/apl.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/apl.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..504e3e8d0d82b241155f27b796b711e583104b23 GIT binary patch literal 654 zcmaix%}T>S6on_Y_CMCD&mg$aQQV5Sa3_f1M(!r0y<-!bcH+#WlD%&th`xoWxDe5W zAR_L33vuDxY5iL{AzyNG&$)MoNZ+q9yQ(~kjy=ZSNc>**8{4qA-myRi3_b900w%Bk z1uQ}lCt(sxP{J~lu>uvWLKSOJ!#dQl0S)xQ$0?Y?CNyyxrm+ProPimf-DL}N@kyPr z_>^!)I44{XE(uqJYr+lTmT*V7Cp-`y2~UJ)!VBS*@L{pNFbj>ntsoKmrV}b*z_&`p z-DoVSi1KJKD%PyZ(w}!Z6sjF6sE=JH?DU}OOgfUnwWhQ-aUz^68{jBXvaSPZplqLq zS%~A*_tzFNC|xR5~deH%#kJLF+^uHY5a~{dQ;25cF$Tx-V z8JY4lH<26!sXP)YXlKS)5wt@sFbGtp4O(AdWVf3L#rwG!40#f_$FbF=m1VADBNkIT qEbI!+_o&(vxz772_Ia2lOKJX6S?f#860uIZ(eoBXR`mY6D&8k0y14oP literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/arabic.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/arabic.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b81a6f464d6cc201883e6378e91def508c475cf9 GIT binary patch literal 1627 zcmcJP$#2s@6vmx4-J9ejngoLGcb#@Fo$z6kMppA3$Tcbu!KvnjLVS5H0Y?q3a-E^uAb25*UYmunr5CO zoF`l$TqIl~Tqay0TqRs1TqoQh+$7v0Y!hx1?hx)0?h)=29uOW99uXcBo)DfAo)MlC zb_g#BFA1**yM)(-H-xu@cZBzZ4}_0|PlV5eFNCjzZ-noJAB3NT(|8cEha1e^V$dBWZHCBPhZT8VwZq(= z-4&(x>@q7u-##~RkbB`Y|K=;)fR-p9rc#m4%E!tepBr-9*}!L@gruv^;Tv&%l5<;) z8!Q&LNGr1;E5>J&x;fgB$JD1=%yd*OICs>d3WE$~cEM1U7?*y0D_e0%YboblFvw_+ zw&pXx%z06rKQBw6tiHkWsNIRmh@7^H{>@}a?9My$o}-D$Yhz|n8|p7@KNS6 zzFR01xu@F|?riEsGrKqJKzemW7pBjbODt!x0vGx^J+*j6RBYsVorPa`x>VVzKWMuc T6!{_AkU)u~mQ4KLUwz^)KCI^o literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/cyrillic.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/cyrillic.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0956786f823153484ddd97f870fa0734010f294c GIT binary patch literal 3112 zcmds(cXtz45XEIMV2bIzcQ9a!-kWX7mT&`00(&Tm?7Nm0$yy(+M2`3)-z7aHISJ|Y zr1xG)LV8H=y^#8@v|jv{ZxH#+?`U>r-kWzdPqI~AJ;tYAqy2@{A@%MYouRJ^fk&hRbkem8g^v7$GB-jlxK&QZ^c+WQ?-0sFHEYsxex|E1Q5ZG7)2C z62{47RLc})Q!!qqVS-G@M45p}G82y-B>4kuwM3JgVbZAG+>i7VzUIWMS|EW zP1q*Q*e)ULkT7=2KJ1bf?3PySkv8m=cGOD;8e~5j;s)YI;wIu|;xus!aVv2faXWDbaVK#X zaW`=faW8QnaX;|@@gVUK@i6fS@hI^a@i_4W@g(sS@ig%a@htHi@jUSY@gngO@iOrW z@hb5e@j7vac!PM8c#AkoyiL4Ayi2@Cyia^Ud`NsmoFhIaJ|R9OJ|jLSz97CNz9POR zz9GIPz9YUTejt7%eja!i>gZ&dg-Y-nePW1m(xlxrC__vT?JVzy~G&q9tHo$Z$%e z+F7E!f@j5|S=!QF(ed3D)DEm4Y+AYO$PH(lmIveXwS=rEfj$!k3-Wf#D??hPOjjul zMI&S73bxIY+bJuTFO&pxH^)g;t4VsY+-#tJCtJfb_M5c25HRp^8T%A+HQA zD&-=@BcYDYXiQf;AgXq#;sNmpSS*yfcTbbh_3bHt`ffPy%&YqVhF;)Iyc;+A^wTDt z5pWYy3B3VRCJ!Ch(j1j%-YrRcnlv(c4@SSo&+1!PdU(Kdgrax(oStvkx}Pr(vD;oj zKk?wuyYUl-Ox2EP_2o;m&uEot#I z8En;?4z_vxc72NuJ-pv@gl_NhoqB#SqWjVEw}RVVOh579y>#OTgZc*(>1c{Z!p-ga zeeMo+#`JyEebzqVh*!FxJ`|Bqqsq`q8kPFmP=x9`1Kj(RFUNmMOE`a-KV|hBex!1R z6aIirB5BzEE=JQv(JuDG==1kFKdf~F#j{mA`z;hQ#%{J`pHZmv MRaX4p{;Dee11H|CrT_o{ literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/greek.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/greek.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d0a8ad8ab7a4f42d81784c6d301e3025a0276fc GIT binary patch literal 2336 zcmd6oS8v;96o#q9iT9p~6K4-6wrR)NaU9FGBB`-#A+`bI+z6BoBM}-TNGhpapueJj zpbKqKphb7mUUlz@?z=YKd#{`JdmWnm)ck=`-~+wq9G>yvP%;}E>lAU-s^#2DwW3^u zkgt#s6XJFT#5Yz*;Shy*9j)W_w4SS|iZ{>(-bfp{nyR^mYPgnaxsK|%p6a=Q8n}@f zxrv&%nVPwUTDX;3xsBSmo!YsBI=GWMxr@5Eo4UD&dUz9U;?1;~d#RVV&=%fGTe*+= zcpGiw?X+FoJ9r1}_3ZpQbZB zP7{2F!aPBf9HuFrq-ma_2v5^lj!=}(QjDV%=h(c`A2)6n2Ws2_+zH$T+zs3V+zVU= z?gQ=z9snK$9s(W)9swQ&9s?c+t^ikoCx9n`r+}w{XMksc=YZ#d7l0Rmmw=anSAbW6 z*MQf7H-I;Rw}7{ScYt?+_kj0-4}cGWkAY8sYrv<#XTayc7r>XmSHRc6H^8^Rcfj|+ z55SMWPr%Q>FTk(BZ@}-sAHbi$U%;*ZD9UXAP1Lb;E)}(PJ)a8CBx7MMlhI2qb@|pv zay~vYH|yEk0{g;RY`brZ&-un60gP;Dx~)5gBPE_o#HY^tiG%pXih@0Ua?j3&mnmp` zE)j{YHPh|KU+>rtZ}lBH(>7Mpnk|j46|9_g!|1x@7zML*!|1xZ78{Iin7*;ouLPst zKyQWlKivi6n?)mI`$YqLxuTiiSUkI5rq3@^@r3UWj?FCU*|kBM{HIp8fEs;08CeKZ z;Esk930Y4^W`w`R5BJtZNJNmHcvOrWOt27Mlu~(XDfyEzIoDK$61y#BUR_*C zudbnV8fmdFkA0 z3qx@B#j+$yvbfohy7U%YinR=>M>}UqO*lqYj2vwH1*4=DoT64JT=xXCxmsB&;_bea z*UHING8Ia^T2jr`_d*)fxn#JR+-1eaKl&>EzD3Q6D3x<|`Jy_lJ9*c%RBPGInWdCv zUefJUy6n0_q|%zBb1G$*9hXI1$~Cjuf^MtDWxaG!Ef{IJq$pec4$qvVK9$;zxSOTK=eJtY~t%ppT;;=Qe>Vr7HCQ`qYH}1&8vuCjbBd literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/hebrew.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/hebrew.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..198319001a5501d0680c38d8f83b9731776cb62e GIT binary patch literal 1273 zcmb`GNpI6Y6vv$=ZId)Po%l*8j?Xgjx9GPpR@Bsle&@cx% zoPsG*9`jHjO=AIONV7N%MVx^W&O(_qhefE6s#t<~QVq*c$2n+V1)5le7S6*0)?g9q zu!Ie0V-uE1E7*cnT!1xPgmqkk4bmpI;TY*SF2f1ZNnC+bxC*Cn4bG6x;yRqejXT=b zruDd@Y1R|QQ^qsK9^*MD5mhq19p7DY4k@1P~nem13mGO=7o$-V5 zlkto3n{mLn|3}kqZJmeq&P_v#P9TN`dU3}Vwl}mbS3qq%VA{f$P#p(4B7*shm1=(9 za)b@_aRLQ6qAZEDW~8R10ST4yBq`J_hvrb-a%5Vry57i4D4^8Tm9)N6@`R1D9gxj5 zn0N@SaVb5^HSK{(hoJ0`dZi`XbOb_kVwNKuwG6hCDQ@hlDQuOq3u)P|oQw=IrKHU_ zCU*9PdYa@W8ycB-WYAK(Op}zZ$!Eszdf8875ckySfe15|hLWyHxt55oHDh~er#BA2 z$Z%*yUHMQ8_-{{fa8H+>BXpEOysKXq;UMyS-A^LvxrXlzMPPK|C?aEY%ut|V1aTN4 z7pK5k+|TS-GSK`p}xbT1CfM@gQBM&{vX?Z@~C*l V@i4ZJ4gVOaj!+5|G z`H6*-sc?9MVFiN>#3+VEvt*hzb^i}qrOhOwJQu!l_SrO|MV zVVL$|gvMdgevHxqjL|{tqeB>{!`M$paDa~DARWUYn!sT?jw3XQqjUntXbKaQ#Bn-_ zNjilSbQ)7MjbzpsI%zM&4a0thd6s#Od7gQJd69XEd6~Jwyu!T7yvDrFyurN5yv4lD zyu-Z9yvMxHe85~~t}!1nA2HXNkC{)HPnpk{&zUcnFPX2HubFR{8_Z4S7IT~VmidnP zp80|Kk@<=FnfZnJmHCai!`x+lXZ~RRWd36AF@H1vF#j_DG548;M~0CeIzwF-&*pVq z)g0SZ)Duq1mTToN1&-tSx=I7B62R-vr?XuaTQPpl_e`wO~Kv8X?qx=#ge z!ME#*dRvPX8*mh~Po1r$3+Je#Ra;SMM`aL|Dk^ov3 z?P#~C;OW3c)H)fJvr&0IDyO6JT=a8ilcJs#^?6ZGi&|u}$>^xr84=Eka8`t~BAgT9 zQ!<>Jjk@M!r<~}T6J2wnYg*h+TAU~?vT2b`i|mZZ$^)Gd*%?`jJ~N_EO7uyIGo(Z| zC9)}zofFwPv42kN$%s7}(LW>hXGH&u$X*bSNt(LDXSlBILhE7b3+JAy*m8~cG#^Iq zvh5d2SBx6}|2KKKV3u@6nJCqQx_Mf89~m1pJ=<5q)$k3ripn!D^3}3xc#R6wC9`b#7N2LN b+PK#~QPBt-HOWWvo(_o{@!0?4+a7xihTjX$ literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/korean.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/korean.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ceb993b53de95496ba59e0678d025d1695204f15 GIT binary patch literal 3484 zcmds)_g55G6vr1u1rh9BV=q`(5xa;YtimEiS6udM83(?@GVHRm*`kMYa`JEF=k%Cr zdhfk=lb9aUdoTWC=FV&~Z?gIi1P-6W`@Z|$z3;wz--1fe{>ukt{_iM`094V>HKL49if)a+Gr{#O8JNMDn8{g~#o3t6Ihez_n9GZB5$9nZ z=VLw>U;!6mAs1m07h^G(U@?X2OH7Io!H4H zG_e`Y3?al_*u~x0%@(w<6|D>-%r>-f5B9Jf?d(7YJJHE5ba5~Cav%0Ff(Z9xKfBS* z1317aqU=ErV~7y|58@yX;SdkwFpuB}HE2AFqtv0Z7rpF59|_Wc!G82JjyMM}Koceh zF~~$DP@Obu&jkYJT0xy)onXCSgJ7dzlVG!8i(spuUa(EjAlNRrRB(BfjVlCK3a%1d zEx1N-t>8Mr3BmP(8w58BZW7!qxJ7VMaI4@p!R>-O1a}JV65K7gM{uv;KEeHh2Lula z9uhn(ctr51;4#7Df+qw|3Z4=?EqF%otl&Ap^MV%yFA81~yexP{@T%Z7!RvxI1aAsX z3EmRCEqF(8TJWymJ;D2e4+I|yJ`#K^_(X6<@TuT4!RLZ61YZii5_~QAM)0lRJHhvY z9|S)NeiHmF_(kxm;5WhVfr?c}UZ(Uc$aJ?ye zby?Y*E6(%`BW5a|G@A4jP3k!Vv%RVId@^UIFED94IA&V;thaKaw=$A8`b<5k#+*HF z=K2OyrOg~RtT?7B%d&P#3-T0Cc9n=}Wz{2hm_|MY#mo`HwmMj(w%DrAce9x=@+|UQ zkd?&lvsWfnJ4Yyv(UIG2;~~|#qjuS9uX?AB>KsRj-VyiPrnw?-T?4kAf)aN1U_t5F{ z7xVe+R{cf&{-VBh(NcdJ}^T*8{8J0)Cf?v`7z-$KuiKR3wl6@QH($73$N9E&d(J1h{pFL~4)dkE&FwLtnR{%XS>eP! zGxxBwyt;5w88fVmnR4fpkBvw^m9Ss-RNQ_H-IQEl(oK%ys7p^dX;AFj5>|ZBY}S*u zC->xYyeL#pg|L+js^KZGMq@@d8r8SQ5kl$%9oGJdWUlAT?wg`meD$LGlfMDltc;0o*|H(;f-v~}FbXubJd&K_vJde)$( zW%Ah^Z96Sz#qE#kOmJw}NF56%&ECSYx|-TG!K|4xR;Ts8gdR7t!5*1S7{l4&AsYR` hgcC|ldiZo%{gB0c(rA!?vZrj621-l*Z{KAle*@V)L!STu literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin1.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin1.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eb584d1f4161f32c6bfcf008c58db32104a56aa1 GIT binary patch literal 4398 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin3.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin3.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00ef7f9db81a35dafdb81cb72a8c6c713db6ba90 GIT binary patch literal 765 zcma))%}U)s6vrpmtKM(F?K24KC~idrg=-bMk%AnAkmQU>dXqaLGr1b@W!wm&8#hAH zt-e8_6xvN`eF8xWEzZ%>o9n6*@?%bZ=lo|DkZz-`Ki&)xH5T zU}%AbB`Dz#3}G3{I1Ix$0wXvIqga6oR-uYDs9_!I*nkE$p@}VM;TVkJIE>>2OyDF; z;uK8bG)&_R%;4-Un|l+Ulo$(731@_J!Uf@ya7Fk?xF*~XZV7jUPlV5euY_-eAB3NT z2f`!aH{p-LySZ7Y?d{lGN~f|TphbHxOuZ~Vh{O>zO#RkzWlx~gP&HNCO-1jeal6n+ zAweM|D7d*ml9v)!z4GcMFPQy@5gRmGuX# zU$7LL^0&>HCpLd7O)Gk4K^VcWh;Gd5Nn~i-pATI*u2R^?y&rdIIdH+-(2= literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin4.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/latin4.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca2fca6f3670e1cf81e56e6aa7b572f2697a0bfe GIT binary patch literal 1029 zcmbu;NsALv5C`ziGMTKi@B4O{gVTy0MHC#yFcLux40UNbsb|up)350z67XaA2^0mF zo9Mv>y$K?SdQwmX4_*XOPYNUUKMV6b+o6B`URAxScZn<%vRd?H^sxRSu4$jKQJ+|} zIT^kF)dzTxJVUcQOLII&^E^)ryg-Y*NK3p#%e+i0yh5wI zN^87E>%4wJ+uX3OB{a>t4sL*(;5N7e?t**ZK6n5gf=A#ncmke+XW%(_30{HM;0<^S z-hmI`BlrZqfUn>i_zr%6pWqkR2Y(_;n;Vqc+cg@VNojmd*EJ~@tdxQF7-R($T=mkt0v05UKn5Q-WT;{Wt^$3 zEoHR$XSAhEaMTG>Ni@_%sEiH|Mu*+{TbhS|K!@K~^tx;co$FrM(oYM&5lB~e+d*AA zhAS@%&!~h!5N(W#=?gXtFZ2VB>Wo0vYPRt7W?MKd-L@*dV@J1+9M*j+5Qki|+AwRv s*Y}WZh_>Huvbdz%W?(tTw%qpn^zo+T&=x0fA^%K7QcK4E|Cf&a1#1o-N&o-= literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/miscellany.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/miscellany.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..70c6490fcb43fe5b21fd838c2355677d0fa91c41 GIT binary patch literal 3691 zcmeH~=X)E+5ynATg``ADR&kSyxZPcp4ZX_UPl|nHt~AeEY`{! zXbW$ot-Oi0@n+i2t<=U_D9u}`owrejw^NqeD935);CAZd40Umqy2W}pM?1KKuH;U- zio0khchfHJq20WLuI4Lg4_`%lc_;1TU9_KfQ!igleY}VI#jfGKG$3|>_tCYyp9Z;? z^4v#5+)u-N4PD0rG{OhyAYV%k57H>-X^e+xoQLTUUq^>|gpTk*x}F^(9;F+2jBey{ zx`_|b&3u>&e1wkj_2e?q1m8eKzLA)3BE>h;Bo}Ckk5Y+U^2Cnu1eL`qT%>6+pP2%& zDl0lJ7V;!TVlhuqA~wS%Iw5wFJ*tV_!pG=VvD>&zw~L+P3Y``^!_#z!*q!XtU1E20 zK=+8<%T>Bh?0!B@XT@H}A-!Jg4II$}VsGS_-X!*BPUu0ghj@k_7JGzG(4%6H@kx4I z>_&+#dGo=?+T_zb<3@1VEwo%D9Ti{8O^(>wVddKceI z@8n>wxvZ24Eww z3D^v@0$YHsz&2nz&<3P|c3=cJ2spqfFb0eRhk(Pt5#T7`0uw+HP{1TG1(W~}I0lq~ zQ^0B93~&~B0C*612zVHH1b7s940s%P0(cU53V0fL26z^D4tO5;4DcS{y}SWP=YcN(Uj)7cd>Qx(@KxYzz}JCq0N(_@ z1$-O$4)9&zd%*XB9{@iDegym&_zCb+;Agg(@A+y{ zDW*mV_E(e}Qj>U&ij&aSjU#RnDOxOzqs1_&R0{c^Sf*ygwMY_=>j(OxqFYtk?Nt>O zD?R2=Qi;7nS=DG6@;!g5qV~H!%kd!@E2K?lRR6nmBvdnAkVLb&kT>Z1$2_fiC@Cqw z?D|^PfOZQ*ft)$eZelZyVA{2h40xeC<@&CEe$b6wdEC_!>UX4n+lt8%dMzhLr0?}Z!#u?eO{ClOo-a*Fb<}qKw6;; zQy2_NftjwWOt3&Q2ZCuuaPmsJnkUY9RWFp|O_gGOr#CoZ*DmyeP)}jRol;1|gTv}% ztOe>uos2Ef=bK%yPfdBgp3A7LWHC0oAoToL_tbY%6%$!KO!j~usnCo$?#mI4-W_F~ zA>}8!rQegDkuJ+wR2AJepejc7zEHVky^dJGLUh85izQkr*- zI8rd%89hr--_hds`LPPMYzg`^=e+DWFL%!C(36rpU01B8_`0-u%Z;FDb~saDo1)8R zZ;a?N>qQy->V|GC>yP~<_ePV6ICNz_trSrj zbkv>By3~?v9hv8mSbgQjV#B?${JaYm6bKJ94jkpWI0w=&d74=vT{a`ld-yT zMv#-S!g5BDld;NjMv{}U(sD+Vlj+nii$1jq`PcZ4-bDKYKb9|q+`*QrNA{jujb_h6 z+XFr%coT+HEC=PR>*%+0ZzYySyoK-_Gh9+tVSQ-roA!a)Y`gKD7gHhrv(WhWnRH2x z%`}(7WG3CKqH-Km)74sB3j9JfI3aybBylW3VZx0R7Ybn##VmORb0&xB>6-Fq(iLyQ zK9+0Cw5KC4R@>#9T9(r_N*}>p`PfCZX;zczX)lt~uHyQ&wrcIA#+}mvCl$3Dq9R8) QH#N86|9}6x3N$wS2Lu9b6#xJL literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/publishing.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/publishing.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..62b28feaddec940446c05b5bdac4230c7467fdf6 GIT binary patch literal 2525 zcmd6pRc~BJ6vx+zlh}?OW@s23@FsDXnK^xk&Wm;Tp4q*ly_A``cKp__Qc9buDw9-t zC`e^gtESwPNo7cJ{&VlfanujcwfxhZb7tn?tTyTBXe-%IYdH(rTS}#i5U%_*Sz){V z*T?OOOH|?}YT_X@gon~lZl-1)M#FeG4d)Rwf?KGCTd9@XsEtR`NN%Tg?w}4HMWc8$ zjpi{lhR4!a9!KMNJdNiGG=V45M4m*Gcrs1qDKv$r(o~*C(|9^f=NUAEXVOf*hOXgR zG>d1`Y@S1NcrMN5c{Gpb(|le)3wR+dgLt7n%B@8UQ26v9j)W_w4OK62Hr>;c@u5o&9s@f&=%fGTX`F8 zq0X|3v`4AoA!*rOB&=EdLNBI~X z{1Ga1(Gda1OWyxD_}L+y>kZ+yUGP+y&eX+ymST z+y~qbJODfhJOn%pJOVrlJO(@tJOMljJOw-rJOexnJO?}vya2oiyac=qyaK!myav1u zyaBukyaikU-Ui+Q-UZ$R-UmJaJ_J4jE&?9|p8%f%p8=l(UjSbMUjbhO-vHkN-vQqP zKL9@hKLI}jzW~1izX87kmw-QjKY_o1zkz=&j&`1+w$q1tM5I&C7x_BQ*CU<2`$}PT zE_7H6%bGL;Vw%N%A+}qq31o2#q`;FZ-`eW#WKRd=ma$uovRW-`v8+}?FRqjG9ELL0 zQqwqVQ3r>vNki^1zQB2NXU*ZJaFjZyM1PzlDG{KDtln{lCG^$Ca3K3rI zrCOe~C!J09=8|^7`koR=)s?6!YcBBd_DCqI#*1sAs3^~`3qzx=l7%lLFH92|8=7Dh zO4fqG+mL_csk%@uOzT--PvFkGFmpMNyJ}-;$Z()VuZSB8R{`a*z&Q3q4~~Rf*1LA`oZ2n(`u- zc2$O;d~*gNSldQIot#16MmwB5qWzxN#y5I;B37 z*@-IDxDPw8hzT_=x{zT+h* z3HoxC*15s^L3!L%+p$H$uCWcp2&?eJtm1mX(u-^}sKqJ+;i>##*hgWTCGx)D39whI z6?f(BE)OMgz3oC#wVihpV0{VQA61gjg<7@a zcv<0|j0i;<*oWuJY8sMlL892kggU^U*ttmqKS}#twk{)l85mdVe5%8wZ(!olf;^c) zYNYFDN+;@kN#S>g!=>xWK@y2F2P*3=?-sgllC+%m8|%3zP5OlDsbt1j!B#*E?&(pP zHf;Cxn51T3nkq;ABJM4RvQixD?pnE`tfdjl?U#Dps|j5`4QpNW+j_95mQ(xUq_$tu ewXU@PLd)hT;Vcwe5tKe>(Ohb7`oI6RH2n+ukrLwo literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/special.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/special.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ce90ab0ab533dc63fadf69bbb57270550f920a2 GIT binary patch literal 799 zcma*l%Wj)M6b4{$>=>LlwsY?zWYLf)s-j9&)kSxey6Gl58w8v&j2JU$W^hELK2Tn% zn_kjNz29%@s&l4YSoNkLzM1oL21W=u91c8tgi%v;I-Yk$#p2=H;*PyETF?UzeekgZ z9bADG>_QiN(8E<&#Xj^gfB-`XaR38cgEd@-bsWMFH(&!tFv2m6aRL+EgiYLnE!>7} z+<_h3gDy>_c#NFHS{Ll`yh1Ed@v9$xK%0f~;U!$y6#6h0wDdg>l1l>V{0Y zLHwyI;i|cTiR~2fT=BdxnN$^1Ft$-sFDCTDrWS0v*kV`xlVnP2&8uASifQ-cLMndY z$}Fjlm!p&A=*Dt%x*XkfpM&0SAhf%4yEV|a(^T4wCPvl<26i%M%A|?9^c4Lvj$aR> zLe5x(g=*%}U8YOh9o4NVWEI!)oT)f%jIl+WCYoU!t415NefF_=E|`jDEvx2{;OXCG zCx^#Jk>-Y7uam4ya;Bp*x?8eVw=-nZNY^ami8!p=N5QR`#73~&v?G0F>3UuN|Ifhx E4Sx{mN&o-= literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/technical.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/technical.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0c2bebd374282cf3371b134a9a9bdf46344f7a88 GIT binary patch literal 1614 zcmcJPxpNdp6vk&^fz`1(kU#>&eF~69!YSo);LKG{oKP>>n%&pC)1{g2p}S|rlK5`{ z8*FR?w(*gGuPRsJz;@;U8wgBJ=D=6c-|Quca_HIGU(LI|d9UZ~>S}c~@YhI~$Ir?^ z@H>o+SIHZ%`LBKG!2tzaq7rYTZM>bfbD7G#gLd#v+R3|U7gwmlBQ(OJG|FQ%#^W^3 zRjTp?P4Fa5@)S++G)?nv+RZaG!?QHYduR{urM)~yb39M;ypQ(re%j9m=m0O!0w1J< ze25P5VLHr5=m;OBqkN2x@o_rNC+Gy9q?3G#PVs3v&1dKgFVZ5PrL%mF&hdFV&r7t# z%e2fPg}g#5y!uwKctKvP1cAH`yaT)o+yHI@?*Z=vw}20T4}p(>+rS;*F7Pq%3GgX! z5BLoD9QXqG61WdM0KNjg2EGBl1-=8m2Oa`H06zjh0Y3x30FQuQf!~0~z!Tsp@ErI9 z_zUdAlu)8&=E=b?xQ4i5hFd5uCmZ4;wmXyO~C|;w@gEy2Xp<^t#O=Ba|h0dXha) zZ=#}dgR3vrbItiW^pQ&DL^N`fbkL=sc^@chUy5uTDNobLNv$@GG;l6-+r)|3zH@jq zi282+Bf9B0`o#oqe}aJ|VTcXA4g)xqL|E(MNQuk2e`90bqqOT9n51Pyo5`s$z(qX$yVyYpmZ311N>6gICC}Ck_+Yi+ig>*AlT_wzm<%o>Y>qV=%ufRQ&ixcmfNMyaP3hP#2 z@NZe*&$q)^ry}Ioc;35wD^r PTlXjj<wOcFgY-x9K>AuZnxSVs& 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/xkb.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/__pycache__/xkb.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0277a0252cfa898e202e17c71b7f636fcd7db90 GIT binary patch literal 3431 zcmdUxS63TX5XXg$Z949~cWi@@1n#j72wbQ}fbqDjS34JJqt&jmMIb-qQ{+qJo8&1c z$w^-Fl*H-17pLC;u2#+Z0)fNtX#X>F@7y~xE3EGBj)?qek9yfRJ0p>2c&Pnpkqc3$^e%TF2{YJ-1RTZ=emlkv8%s+Qed+RFdv~Ke3XvzF*?S_={TRD6MT|R@+msSr|C5JQ6Hb7GkliL@;N%k{nXC`G{8}c z@*oXzjA9(8I43BHG|O7b|3^8`)sO}fdq=oa6m+kA)a@FY$06ix9oP4f)R@GQ;p9L@1v zy36x4&nZgr0xj?&E%FjA@jbf7%e2h*={^$?KcENvkRI|Qdc=?EF)O6-6MDibshp-X zYosx!B7H({`6m+5*8%H+R$v40>c0{j@o5v#2DAemKqt@zbOSv=FK`$*0vrX70mp$8 zz)9c~a2n_X&H!hDb3i{Z07QX7AO^&N1TX~50e69UAO$P{i@*|a4_F570|Yz(9s-Ym z$AAJn0p0@M2HpYQ1>OS+z$<_aIDiXyKoM94)_@Z56!-x65cmjq27C;B0(=U527C^D z0elI31$+&B1AGg72Ye6w0Q?C21pEyA0{ja62K)~E4g3K-2mS>9l9=gZ>Rg^wZl`9I zDND=Iw(vm|g%MY#R9DN^iwPx_)mPj`G4R}48=eT347HoK&|9sX0%(lx<~V|gYMs^_bY$m?~M zO6qB0SgS}Kg$w3wNw-~3HhoI7g$QQBAKE6mKle>^e;6Bdyv!Dao!3p(6-r9jMOh+T z*odYH$5~d!O;z58KQ5s(Aq1yYEf?BQ^?6Ycsyiu4PN<@iDS3=q4W6U&5;W1Mrd(ai zm1n&J_b)6_JopyWgzL-cU=iCR#kyFd`!!>+)2i!l;C!v~!m3_pSeeKruog z7%ntJsK}wJjqryF*H*Rri{KKfQm_mT7HWv|9dR?YV&IC`XsC{Qu4|b}a>a1{DXG_E zO|*CuEzv|9YN8GMZ5r;8OdDf{EKsm}U9M$I%y0Ha|9De1(NrC3st(tywweiYsI5*? zsxg1=EBi|&{(_QtK^b~M8TP+?!gYe?M_1O#e%}dOPK^Im5qhIEqppeZYo=pdUys=M zH{ZweQZ#GjMU=C)SBxfwlXI;?v`})hvdjf*RlY#eLCux4{8C{>u|3CS>8H3>CSwRY znlA~n7&Y{CIV>>{8;m--EBfUZT~5siC%O!4PM)BYXR#7p%cTbjrT5#e<}LONaShox QZ%DL8T3i1Azilo50m-{?!2kdN literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/apl.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/apl.py new file mode 100644 index 0000000..f503d42 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/apl.py @@ -0,0 +1,19 @@ +XK_leftcaret = 0xba3 +XK_rightcaret = 0xba6 +XK_downcaret = 0xba8 +XK_upcaret = 0xba9 +XK_overbar = 0xbc0 +XK_downtack = 0xbc2 +XK_upshoe = 0xbc3 +XK_downstile = 0xbc4 +XK_underbar = 0xbc6 +XK_jot = 0xbca +XK_quad = 0xbcc +XK_uptack = 0xbce +XK_circle = 0xbcf +XK_upstile = 0xbd3 +XK_downshoe = 0xbd6 +XK_rightshoe = 0xbd8 +XK_leftshoe = 0xbda +XK_lefttack = 0xbdc +XK_righttack = 0xbfc diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/arabic.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/arabic.py new file mode 100644 index 0000000..2eedb71 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/arabic.py @@ -0,0 +1,50 @@ +XK_Arabic_comma = 0x5ac +XK_Arabic_semicolon = 0x5bb +XK_Arabic_question_mark = 0x5bf +XK_Arabic_hamza = 0x5c1 +XK_Arabic_maddaonalef = 0x5c2 +XK_Arabic_hamzaonalef = 0x5c3 +XK_Arabic_hamzaonwaw = 0x5c4 +XK_Arabic_hamzaunderalef = 0x5c5 +XK_Arabic_hamzaonyeh = 0x5c6 +XK_Arabic_alef = 0x5c7 +XK_Arabic_beh = 0x5c8 +XK_Arabic_tehmarbuta = 0x5c9 +XK_Arabic_teh = 0x5ca +XK_Arabic_theh = 0x5cb +XK_Arabic_jeem = 0x5cc +XK_Arabic_hah = 0x5cd +XK_Arabic_khah = 0x5ce +XK_Arabic_dal = 0x5cf +XK_Arabic_thal = 0x5d0 +XK_Arabic_ra = 0x5d1 +XK_Arabic_zain = 0x5d2 +XK_Arabic_seen = 0x5d3 +XK_Arabic_sheen = 0x5d4 +XK_Arabic_sad = 0x5d5 +XK_Arabic_dad = 0x5d6 +XK_Arabic_tah = 0x5d7 +XK_Arabic_zah = 0x5d8 +XK_Arabic_ain = 0x5d9 +XK_Arabic_ghain = 0x5da +XK_Arabic_tatweel = 0x5e0 +XK_Arabic_feh = 0x5e1 +XK_Arabic_qaf = 0x5e2 +XK_Arabic_kaf = 0x5e3 +XK_Arabic_lam = 0x5e4 +XK_Arabic_meem = 0x5e5 +XK_Arabic_noon = 0x5e6 +XK_Arabic_ha = 0x5e7 +XK_Arabic_heh = 0x5e7 +XK_Arabic_waw = 0x5e8 +XK_Arabic_alefmaksura = 0x5e9 +XK_Arabic_yeh = 0x5ea +XK_Arabic_fathatan = 0x5eb +XK_Arabic_dammatan = 0x5ec +XK_Arabic_kasratan = 0x5ed +XK_Arabic_fatha = 0x5ee +XK_Arabic_damma = 0x5ef +XK_Arabic_kasra = 0x5f0 +XK_Arabic_shadda = 0x5f1 +XK_Arabic_sukun = 0x5f2 +XK_Arabic_switch = 0xFF7E diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/cyrillic.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/cyrillic.py new file mode 100644 index 0000000..60f804d --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/cyrillic.py @@ -0,0 +1,107 @@ +XK_Serbian_dje = 0x6a1 +XK_Macedonia_gje = 0x6a2 +XK_Cyrillic_io = 0x6a3 +XK_Ukrainian_ie = 0x6a4 +XK_Ukranian_je = 0x6a4 +XK_Macedonia_dse = 0x6a5 +XK_Ukrainian_i = 0x6a6 +XK_Ukranian_i = 0x6a6 +XK_Ukrainian_yi = 0x6a7 +XK_Ukranian_yi = 0x6a7 +XK_Cyrillic_je = 0x6a8 +XK_Serbian_je = 0x6a8 +XK_Cyrillic_lje = 0x6a9 +XK_Serbian_lje = 0x6a9 +XK_Cyrillic_nje = 0x6aa +XK_Serbian_nje = 0x6aa +XK_Serbian_tshe = 0x6ab +XK_Macedonia_kje = 0x6ac +XK_Byelorussian_shortu = 0x6ae +XK_Cyrillic_dzhe = 0x6af +XK_Serbian_dze = 0x6af +XK_numerosign = 0x6b0 +XK_Serbian_DJE = 0x6b1 +XK_Macedonia_GJE = 0x6b2 +XK_Cyrillic_IO = 0x6b3 +XK_Ukrainian_IE = 0x6b4 +XK_Ukranian_JE = 0x6b4 +XK_Macedonia_DSE = 0x6b5 +XK_Ukrainian_I = 0x6b6 +XK_Ukranian_I = 0x6b6 +XK_Ukrainian_YI = 0x6b7 +XK_Ukranian_YI = 0x6b7 +XK_Cyrillic_JE = 0x6b8 +XK_Serbian_JE = 0x6b8 +XK_Cyrillic_LJE = 0x6b9 +XK_Serbian_LJE = 0x6b9 +XK_Cyrillic_NJE = 0x6ba +XK_Serbian_NJE = 0x6ba +XK_Serbian_TSHE = 0x6bb +XK_Macedonia_KJE = 0x6bc +XK_Byelorussian_SHORTU = 0x6be +XK_Cyrillic_DZHE = 0x6bf +XK_Serbian_DZE = 0x6bf +XK_Cyrillic_yu = 0x6c0 +XK_Cyrillic_a = 0x6c1 +XK_Cyrillic_be = 0x6c2 +XK_Cyrillic_tse = 0x6c3 +XK_Cyrillic_de = 0x6c4 +XK_Cyrillic_ie = 0x6c5 +XK_Cyrillic_ef = 0x6c6 +XK_Cyrillic_ghe = 0x6c7 +XK_Cyrillic_ha = 0x6c8 +XK_Cyrillic_i = 0x6c9 +XK_Cyrillic_shorti = 0x6ca +XK_Cyrillic_ka = 0x6cb +XK_Cyrillic_el = 0x6cc +XK_Cyrillic_em = 0x6cd +XK_Cyrillic_en = 0x6ce +XK_Cyrillic_o = 0x6cf +XK_Cyrillic_pe = 0x6d0 +XK_Cyrillic_ya = 0x6d1 +XK_Cyrillic_er = 0x6d2 +XK_Cyrillic_es = 0x6d3 +XK_Cyrillic_te = 0x6d4 +XK_Cyrillic_u = 0x6d5 +XK_Cyrillic_zhe = 0x6d6 +XK_Cyrillic_ve = 0x6d7 +XK_Cyrillic_softsign = 0x6d8 +XK_Cyrillic_yeru = 0x6d9 +XK_Cyrillic_ze = 0x6da +XK_Cyrillic_sha = 0x6db +XK_Cyrillic_e = 0x6dc +XK_Cyrillic_shcha = 0x6dd +XK_Cyrillic_che = 0x6de +XK_Cyrillic_hardsign = 0x6df +XK_Cyrillic_YU = 0x6e0 +XK_Cyrillic_A = 0x6e1 +XK_Cyrillic_BE = 0x6e2 +XK_Cyrillic_TSE = 0x6e3 +XK_Cyrillic_DE = 0x6e4 +XK_Cyrillic_IE = 0x6e5 +XK_Cyrillic_EF = 0x6e6 +XK_Cyrillic_GHE = 0x6e7 +XK_Cyrillic_HA = 0x6e8 +XK_Cyrillic_I = 0x6e9 +XK_Cyrillic_SHORTI = 0x6ea +XK_Cyrillic_KA = 0x6eb +XK_Cyrillic_EL = 0x6ec +XK_Cyrillic_EM = 0x6ed +XK_Cyrillic_EN = 0x6ee +XK_Cyrillic_O = 0x6ef +XK_Cyrillic_PE = 0x6f0 +XK_Cyrillic_YA = 0x6f1 +XK_Cyrillic_ER = 0x6f2 +XK_Cyrillic_ES = 0x6f3 +XK_Cyrillic_TE = 0x6f4 +XK_Cyrillic_U = 0x6f5 +XK_Cyrillic_ZHE = 0x6f6 +XK_Cyrillic_VE = 0x6f7 +XK_Cyrillic_SOFTSIGN = 0x6f8 +XK_Cyrillic_YERU = 0x6f9 +XK_Cyrillic_ZE = 0x6fa +XK_Cyrillic_SHA = 0x6fb +XK_Cyrillic_E = 0x6fc +XK_Cyrillic_SHCHA = 0x6fd +XK_Cyrillic_CHE = 0x6fe +XK_Cyrillic_HARDSIGN = 0x6ff diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/greek.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/greek.py new file mode 100644 index 0000000..8cb062a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/greek.py @@ -0,0 +1,74 @@ +XK_Greek_ALPHAaccent = 0x7a1 +XK_Greek_EPSILONaccent = 0x7a2 +XK_Greek_ETAaccent = 0x7a3 +XK_Greek_IOTAaccent = 0x7a4 +XK_Greek_IOTAdiaeresis = 0x7a5 +XK_Greek_OMICRONaccent = 0x7a7 +XK_Greek_UPSILONaccent = 0x7a8 +XK_Greek_UPSILONdieresis = 0x7a9 +XK_Greek_OMEGAaccent = 0x7ab +XK_Greek_accentdieresis = 0x7ae +XK_Greek_horizbar = 0x7af +XK_Greek_alphaaccent = 0x7b1 +XK_Greek_epsilonaccent = 0x7b2 +XK_Greek_etaaccent = 0x7b3 +XK_Greek_iotaaccent = 0x7b4 +XK_Greek_iotadieresis = 0x7b5 +XK_Greek_iotaaccentdieresis = 0x7b6 +XK_Greek_omicronaccent = 0x7b7 +XK_Greek_upsilonaccent = 0x7b8 +XK_Greek_upsilondieresis = 0x7b9 +XK_Greek_upsilonaccentdieresis = 0x7ba +XK_Greek_omegaaccent = 0x7bb +XK_Greek_ALPHA = 0x7c1 +XK_Greek_BETA = 0x7c2 +XK_Greek_GAMMA = 0x7c3 +XK_Greek_DELTA = 0x7c4 +XK_Greek_EPSILON = 0x7c5 +XK_Greek_ZETA = 0x7c6 +XK_Greek_ETA = 0x7c7 +XK_Greek_THETA = 0x7c8 +XK_Greek_IOTA = 0x7c9 +XK_Greek_KAPPA = 0x7ca +XK_Greek_LAMDA = 0x7cb +XK_Greek_LAMBDA = 0x7cb +XK_Greek_MU = 0x7cc +XK_Greek_NU = 0x7cd +XK_Greek_XI = 0x7ce +XK_Greek_OMICRON = 0x7cf +XK_Greek_PI = 0x7d0 +XK_Greek_RHO = 0x7d1 +XK_Greek_SIGMA = 0x7d2 +XK_Greek_TAU = 0x7d4 +XK_Greek_UPSILON = 0x7d5 +XK_Greek_PHI = 0x7d6 +XK_Greek_CHI = 0x7d7 +XK_Greek_PSI = 0x7d8 +XK_Greek_OMEGA = 0x7d9 +XK_Greek_alpha = 0x7e1 +XK_Greek_beta = 0x7e2 +XK_Greek_gamma = 0x7e3 +XK_Greek_delta = 0x7e4 +XK_Greek_epsilon = 0x7e5 +XK_Greek_zeta = 0x7e6 +XK_Greek_eta = 0x7e7 +XK_Greek_theta = 0x7e8 +XK_Greek_iota = 0x7e9 +XK_Greek_kappa = 0x7ea +XK_Greek_lamda = 0x7eb +XK_Greek_lambda = 0x7eb +XK_Greek_mu = 0x7ec +XK_Greek_nu = 0x7ed +XK_Greek_xi = 0x7ee +XK_Greek_omicron = 0x7ef +XK_Greek_pi = 0x7f0 +XK_Greek_rho = 0x7f1 +XK_Greek_sigma = 0x7f2 +XK_Greek_finalsmallsigma = 0x7f3 +XK_Greek_tau = 0x7f4 +XK_Greek_upsilon = 0x7f5 +XK_Greek_phi = 0x7f6 +XK_Greek_chi = 0x7f7 +XK_Greek_psi = 0x7f8 +XK_Greek_omega = 0x7f9 +XK_Greek_switch = 0xFF7E diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/hebrew.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/hebrew.py new file mode 100644 index 0000000..94ce089 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/hebrew.py @@ -0,0 +1,40 @@ +XK_hebrew_doublelowline = 0xcdf +XK_hebrew_aleph = 0xce0 +XK_hebrew_bet = 0xce1 +XK_hebrew_beth = 0xce1 +XK_hebrew_gimel = 0xce2 +XK_hebrew_gimmel = 0xce2 +XK_hebrew_dalet = 0xce3 +XK_hebrew_daleth = 0xce3 +XK_hebrew_he = 0xce4 +XK_hebrew_waw = 0xce5 +XK_hebrew_zain = 0xce6 +XK_hebrew_zayin = 0xce6 +XK_hebrew_chet = 0xce7 +XK_hebrew_het = 0xce7 +XK_hebrew_tet = 0xce8 +XK_hebrew_teth = 0xce8 +XK_hebrew_yod = 0xce9 +XK_hebrew_finalkaph = 0xcea +XK_hebrew_kaph = 0xceb +XK_hebrew_lamed = 0xcec +XK_hebrew_finalmem = 0xced +XK_hebrew_mem = 0xcee +XK_hebrew_finalnun = 0xcef +XK_hebrew_nun = 0xcf0 +XK_hebrew_samech = 0xcf1 +XK_hebrew_samekh = 0xcf1 +XK_hebrew_ayin = 0xcf2 +XK_hebrew_finalpe = 0xcf3 +XK_hebrew_pe = 0xcf4 +XK_hebrew_finalzade = 0xcf5 +XK_hebrew_finalzadi = 0xcf5 +XK_hebrew_zade = 0xcf6 +XK_hebrew_zadi = 0xcf6 +XK_hebrew_qoph = 0xcf7 +XK_hebrew_kuf = 0xcf7 +XK_hebrew_resh = 0xcf8 +XK_hebrew_shin = 0xcf9 +XK_hebrew_taw = 0xcfa +XK_hebrew_taf = 0xcfa +XK_Hebrew_switch = 0xFF7E diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/katakana.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/katakana.py new file mode 100644 index 0000000..ca0428d --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/katakana.py @@ -0,0 +1,70 @@ +XK_overline = 0x47e +XK_kana_fullstop = 0x4a1 +XK_kana_openingbracket = 0x4a2 +XK_kana_closingbracket = 0x4a3 +XK_kana_comma = 0x4a4 +XK_kana_conjunctive = 0x4a5 +XK_kana_middledot = 0x4a5 +XK_kana_WO = 0x4a6 +XK_kana_a = 0x4a7 +XK_kana_i = 0x4a8 +XK_kana_u = 0x4a9 +XK_kana_e = 0x4aa +XK_kana_o = 0x4ab +XK_kana_ya = 0x4ac +XK_kana_yu = 0x4ad +XK_kana_yo = 0x4ae +XK_kana_tsu = 0x4af +XK_kana_tu = 0x4af +XK_prolongedsound = 0x4b0 +XK_kana_A = 0x4b1 +XK_kana_I = 0x4b2 +XK_kana_U = 0x4b3 +XK_kana_E = 0x4b4 +XK_kana_O = 0x4b5 +XK_kana_KA = 0x4b6 +XK_kana_KI = 0x4b7 +XK_kana_KU = 0x4b8 +XK_kana_KE = 0x4b9 +XK_kana_KO = 0x4ba +XK_kana_SA = 0x4bb +XK_kana_SHI = 0x4bc +XK_kana_SU = 0x4bd +XK_kana_SE = 0x4be +XK_kana_SO = 0x4bf +XK_kana_TA = 0x4c0 +XK_kana_CHI = 0x4c1 +XK_kana_TI = 0x4c1 +XK_kana_TSU = 0x4c2 +XK_kana_TU = 0x4c2 +XK_kana_TE = 0x4c3 +XK_kana_TO = 0x4c4 +XK_kana_NA = 0x4c5 +XK_kana_NI = 0x4c6 +XK_kana_NU = 0x4c7 +XK_kana_NE = 0x4c8 +XK_kana_NO = 0x4c9 +XK_kana_HA = 0x4ca +XK_kana_HI = 0x4cb +XK_kana_FU = 0x4cc +XK_kana_HU = 0x4cc +XK_kana_HE = 0x4cd +XK_kana_HO = 0x4ce +XK_kana_MA = 0x4cf +XK_kana_MI = 0x4d0 +XK_kana_MU = 0x4d1 +XK_kana_ME = 0x4d2 +XK_kana_MO = 0x4d3 +XK_kana_YA = 0x4d4 +XK_kana_YU = 0x4d5 +XK_kana_YO = 0x4d6 +XK_kana_RA = 0x4d7 +XK_kana_RI = 0x4d8 +XK_kana_RU = 0x4d9 +XK_kana_RE = 0x4da +XK_kana_RO = 0x4db +XK_kana_WA = 0x4dc +XK_kana_N = 0x4dd +XK_voicedsound = 0x4de +XK_semivoicedsound = 0x4df +XK_kana_switch = 0xFF7E diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/korean.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/korean.py new file mode 100644 index 0000000..86480d0 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/korean.py @@ -0,0 +1,107 @@ +XK_Hangul = 0xff31 +XK_Hangul_Start = 0xff32 +XK_Hangul_End = 0xff33 +XK_Hangul_Hanja = 0xff34 +XK_Hangul_Jamo = 0xff35 +XK_Hangul_Romaja = 0xff36 +XK_Hangul_Codeinput = 0xff37 +XK_Hangul_Jeonja = 0xff38 +XK_Hangul_Banja = 0xff39 +XK_Hangul_PreHanja = 0xff3a +XK_Hangul_PostHanja = 0xff3b +XK_Hangul_SingleCandidate = 0xff3c +XK_Hangul_MultipleCandidate = 0xff3d +XK_Hangul_PreviousCandidate = 0xff3e +XK_Hangul_Special = 0xff3f +XK_Hangul_switch = 0xFF7E +XK_Hangul_Kiyeog = 0xea1 +XK_Hangul_SsangKiyeog = 0xea2 +XK_Hangul_KiyeogSios = 0xea3 +XK_Hangul_Nieun = 0xea4 +XK_Hangul_NieunJieuj = 0xea5 +XK_Hangul_NieunHieuh = 0xea6 +XK_Hangul_Dikeud = 0xea7 +XK_Hangul_SsangDikeud = 0xea8 +XK_Hangul_Rieul = 0xea9 +XK_Hangul_RieulKiyeog = 0xeaa +XK_Hangul_RieulMieum = 0xeab +XK_Hangul_RieulPieub = 0xeac +XK_Hangul_RieulSios = 0xead +XK_Hangul_RieulTieut = 0xeae +XK_Hangul_RieulPhieuf = 0xeaf +XK_Hangul_RieulHieuh = 0xeb0 +XK_Hangul_Mieum = 0xeb1 +XK_Hangul_Pieub = 0xeb2 +XK_Hangul_SsangPieub = 0xeb3 +XK_Hangul_PieubSios = 0xeb4 +XK_Hangul_Sios = 0xeb5 +XK_Hangul_SsangSios = 0xeb6 +XK_Hangul_Ieung = 0xeb7 +XK_Hangul_Jieuj = 0xeb8 +XK_Hangul_SsangJieuj = 0xeb9 +XK_Hangul_Cieuc = 0xeba +XK_Hangul_Khieuq = 0xebb +XK_Hangul_Tieut = 0xebc +XK_Hangul_Phieuf = 0xebd +XK_Hangul_Hieuh = 0xebe +XK_Hangul_A = 0xebf +XK_Hangul_AE = 0xec0 +XK_Hangul_YA = 0xec1 +XK_Hangul_YAE = 0xec2 +XK_Hangul_EO = 0xec3 +XK_Hangul_E = 0xec4 +XK_Hangul_YEO = 0xec5 +XK_Hangul_YE = 0xec6 +XK_Hangul_O = 0xec7 +XK_Hangul_WA = 0xec8 +XK_Hangul_WAE = 0xec9 +XK_Hangul_OE = 0xeca +XK_Hangul_YO = 0xecb +XK_Hangul_U = 0xecc +XK_Hangul_WEO = 0xecd +XK_Hangul_WE = 0xece +XK_Hangul_WI = 0xecf +XK_Hangul_YU = 0xed0 +XK_Hangul_EU = 0xed1 +XK_Hangul_YI = 0xed2 +XK_Hangul_I = 0xed3 +XK_Hangul_J_Kiyeog = 0xed4 +XK_Hangul_J_SsangKiyeog = 0xed5 +XK_Hangul_J_KiyeogSios = 0xed6 +XK_Hangul_J_Nieun = 0xed7 +XK_Hangul_J_NieunJieuj = 0xed8 +XK_Hangul_J_NieunHieuh = 0xed9 +XK_Hangul_J_Dikeud = 0xeda +XK_Hangul_J_Rieul = 0xedb +XK_Hangul_J_RieulKiyeog = 0xedc +XK_Hangul_J_RieulMieum = 0xedd +XK_Hangul_J_RieulPieub = 0xede +XK_Hangul_J_RieulSios = 0xedf +XK_Hangul_J_RieulTieut = 0xee0 +XK_Hangul_J_RieulPhieuf = 0xee1 +XK_Hangul_J_RieulHieuh = 0xee2 +XK_Hangul_J_Mieum = 0xee3 +XK_Hangul_J_Pieub = 0xee4 +XK_Hangul_J_PieubSios = 0xee5 +XK_Hangul_J_Sios = 0xee6 +XK_Hangul_J_SsangSios = 0xee7 +XK_Hangul_J_Ieung = 0xee8 +XK_Hangul_J_Jieuj = 0xee9 +XK_Hangul_J_Cieuc = 0xeea +XK_Hangul_J_Khieuq = 0xeeb +XK_Hangul_J_Tieut = 0xeec +XK_Hangul_J_Phieuf = 0xeed +XK_Hangul_J_Hieuh = 0xeee +XK_Hangul_RieulYeorinHieuh = 0xeef +XK_Hangul_SunkyeongeumMieum = 0xef0 +XK_Hangul_SunkyeongeumPieub = 0xef1 +XK_Hangul_PanSios = 0xef2 +XK_Hangul_KkogjiDalrinIeung = 0xef3 +XK_Hangul_SunkyeongeumPhieuf = 0xef4 +XK_Hangul_YeorinHieuh = 0xef5 +XK_Hangul_AraeA = 0xef6 +XK_Hangul_AraeAE = 0xef7 +XK_Hangul_J_PanSios = 0xef8 +XK_Hangul_J_KkogjiDalrinIeung = 0xef9 +XK_Hangul_J_YeorinHieuh = 0xefa +XK_Korean_Won = 0xeff diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin1.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin1.py new file mode 100644 index 0000000..350ccff --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin1.py @@ -0,0 +1,195 @@ +XK_space = 0x020 +XK_exclam = 0x021 +XK_quotedbl = 0x022 +XK_numbersign = 0x023 +XK_dollar = 0x024 +XK_percent = 0x025 +XK_ampersand = 0x026 +XK_apostrophe = 0x027 +XK_quoteright = 0x027 +XK_parenleft = 0x028 +XK_parenright = 0x029 +XK_asterisk = 0x02a +XK_plus = 0x02b +XK_comma = 0x02c +XK_minus = 0x02d +XK_period = 0x02e +XK_slash = 0x02f +XK_0 = 0x030 +XK_1 = 0x031 +XK_2 = 0x032 +XK_3 = 0x033 +XK_4 = 0x034 +XK_5 = 0x035 +XK_6 = 0x036 +XK_7 = 0x037 +XK_8 = 0x038 +XK_9 = 0x039 +XK_colon = 0x03a +XK_semicolon = 0x03b +XK_less = 0x03c +XK_equal = 0x03d +XK_greater = 0x03e +XK_question = 0x03f +XK_at = 0x040 +XK_A = 0x041 +XK_B = 0x042 +XK_C = 0x043 +XK_D = 0x044 +XK_E = 0x045 +XK_F = 0x046 +XK_G = 0x047 +XK_H = 0x048 +XK_I = 0x049 +XK_J = 0x04a +XK_K = 0x04b +XK_L = 0x04c +XK_M = 0x04d +XK_N = 0x04e +XK_O = 0x04f +XK_P = 0x050 +XK_Q = 0x051 +XK_R = 0x052 +XK_S = 0x053 +XK_T = 0x054 +XK_U = 0x055 +XK_V = 0x056 +XK_W = 0x057 +XK_X = 0x058 +XK_Y = 0x059 +XK_Z = 0x05a +XK_bracketleft = 0x05b +XK_backslash = 0x05c +XK_bracketright = 0x05d +XK_asciicircum = 0x05e +XK_underscore = 0x05f +XK_grave = 0x060 +XK_quoteleft = 0x060 +XK_a = 0x061 +XK_b = 0x062 +XK_c = 0x063 +XK_d = 0x064 +XK_e = 0x065 +XK_f = 0x066 +XK_g = 0x067 +XK_h = 0x068 +XK_i = 0x069 +XK_j = 0x06a +XK_k = 0x06b +XK_l = 0x06c +XK_m = 0x06d +XK_n = 0x06e +XK_o = 0x06f +XK_p = 0x070 +XK_q = 0x071 +XK_r = 0x072 +XK_s = 0x073 +XK_t = 0x074 +XK_u = 0x075 +XK_v = 0x076 +XK_w = 0x077 +XK_x = 0x078 +XK_y = 0x079 +XK_z = 0x07a +XK_braceleft = 0x07b +XK_bar = 0x07c +XK_braceright = 0x07d +XK_asciitilde = 0x07e +XK_nobreakspace = 0x0a0 +XK_exclamdown = 0x0a1 +XK_cent = 0x0a2 +XK_sterling = 0x0a3 +XK_currency = 0x0a4 +XK_yen = 0x0a5 +XK_brokenbar = 0x0a6 +XK_section = 0x0a7 +XK_diaeresis = 0x0a8 +XK_copyright = 0x0a9 +XK_ordfeminine = 0x0aa +XK_guillemotleft = 0x0ab +XK_notsign = 0x0ac +XK_hyphen = 0x0ad +XK_registered = 0x0ae +XK_macron = 0x0af +XK_degree = 0x0b0 +XK_plusminus = 0x0b1 +XK_twosuperior = 0x0b2 +XK_threesuperior = 0x0b3 +XK_acute = 0x0b4 +XK_mu = 0x0b5 +XK_paragraph = 0x0b6 +XK_periodcentered = 0x0b7 +XK_cedilla = 0x0b8 +XK_onesuperior = 0x0b9 +XK_masculine = 0x0ba +XK_guillemotright = 0x0bb +XK_onequarter = 0x0bc +XK_onehalf = 0x0bd +XK_threequarters = 0x0be +XK_questiondown = 0x0bf +XK_Agrave = 0x0c0 +XK_Aacute = 0x0c1 +XK_Acircumflex = 0x0c2 +XK_Atilde = 0x0c3 +XK_Adiaeresis = 0x0c4 +XK_Aring = 0x0c5 +XK_AE = 0x0c6 +XK_Ccedilla = 0x0c7 +XK_Egrave = 0x0c8 +XK_Eacute = 0x0c9 +XK_Ecircumflex = 0x0ca +XK_Ediaeresis = 0x0cb +XK_Igrave = 0x0cc +XK_Iacute = 0x0cd +XK_Icircumflex = 0x0ce +XK_Idiaeresis = 0x0cf +XK_ETH = 0x0d0 +XK_Eth = 0x0d0 +XK_Ntilde = 0x0d1 +XK_Ograve = 0x0d2 +XK_Oacute = 0x0d3 +XK_Ocircumflex = 0x0d4 +XK_Otilde = 0x0d5 +XK_Odiaeresis = 0x0d6 +XK_multiply = 0x0d7 +XK_Ooblique = 0x0d8 +XK_Ugrave = 0x0d9 +XK_Uacute = 0x0da +XK_Ucircumflex = 0x0db +XK_Udiaeresis = 0x0dc +XK_Yacute = 0x0dd +XK_THORN = 0x0de +XK_Thorn = 0x0de +XK_ssharp = 0x0df +XK_agrave = 0x0e0 +XK_aacute = 0x0e1 +XK_acircumflex = 0x0e2 +XK_atilde = 0x0e3 +XK_adiaeresis = 0x0e4 +XK_aring = 0x0e5 +XK_ae = 0x0e6 +XK_ccedilla = 0x0e7 +XK_egrave = 0x0e8 +XK_eacute = 0x0e9 +XK_ecircumflex = 0x0ea +XK_ediaeresis = 0x0eb +XK_igrave = 0x0ec +XK_iacute = 0x0ed +XK_icircumflex = 0x0ee +XK_idiaeresis = 0x0ef +XK_eth = 0x0f0 +XK_ntilde = 0x0f1 +XK_ograve = 0x0f2 +XK_oacute = 0x0f3 +XK_ocircumflex = 0x0f4 +XK_otilde = 0x0f5 +XK_odiaeresis = 0x0f6 +XK_division = 0x0f7 +XK_oslash = 0x0f8 +XK_ugrave = 0x0f9 +XK_uacute = 0x0fa +XK_ucircumflex = 0x0fb +XK_udiaeresis = 0x0fc +XK_yacute = 0x0fd +XK_thorn = 0x0fe +XK_ydiaeresis = 0x0ff diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin2.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin2.py new file mode 100644 index 0000000..f0d9a15 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin2.py @@ -0,0 +1,57 @@ +XK_Aogonek = 0x1a1 +XK_breve = 0x1a2 +XK_Lstroke = 0x1a3 +XK_Lcaron = 0x1a5 +XK_Sacute = 0x1a6 +XK_Scaron = 0x1a9 +XK_Scedilla = 0x1aa +XK_Tcaron = 0x1ab +XK_Zacute = 0x1ac +XK_Zcaron = 0x1ae +XK_Zabovedot = 0x1af +XK_aogonek = 0x1b1 +XK_ogonek = 0x1b2 +XK_lstroke = 0x1b3 +XK_lcaron = 0x1b5 +XK_sacute = 0x1b6 +XK_caron = 0x1b7 +XK_scaron = 0x1b9 +XK_scedilla = 0x1ba +XK_tcaron = 0x1bb +XK_zacute = 0x1bc +XK_doubleacute = 0x1bd +XK_zcaron = 0x1be +XK_zabovedot = 0x1bf +XK_Racute = 0x1c0 +XK_Abreve = 0x1c3 +XK_Lacute = 0x1c5 +XK_Cacute = 0x1c6 +XK_Ccaron = 0x1c8 +XK_Eogonek = 0x1ca +XK_Ecaron = 0x1cc +XK_Dcaron = 0x1cf +XK_Dstroke = 0x1d0 +XK_Nacute = 0x1d1 +XK_Ncaron = 0x1d2 +XK_Odoubleacute = 0x1d5 +XK_Rcaron = 0x1d8 +XK_Uring = 0x1d9 +XK_Udoubleacute = 0x1db +XK_Tcedilla = 0x1de +XK_racute = 0x1e0 +XK_abreve = 0x1e3 +XK_lacute = 0x1e5 +XK_cacute = 0x1e6 +XK_ccaron = 0x1e8 +XK_eogonek = 0x1ea +XK_ecaron = 0x1ec +XK_dcaron = 0x1ef +XK_dstroke = 0x1f0 +XK_nacute = 0x1f1 +XK_ncaron = 0x1f2 +XK_odoubleacute = 0x1f5 +XK_udoubleacute = 0x1fb +XK_rcaron = 0x1f8 +XK_uring = 0x1f9 +XK_tcedilla = 0x1fe +XK_abovedot = 0x1ff diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin3.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin3.py new file mode 100644 index 0000000..a14c562 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin3.py @@ -0,0 +1,22 @@ +XK_Hstroke = 0x2a1 +XK_Hcircumflex = 0x2a6 +XK_Iabovedot = 0x2a9 +XK_Gbreve = 0x2ab +XK_Jcircumflex = 0x2ac +XK_hstroke = 0x2b1 +XK_hcircumflex = 0x2b6 +XK_idotless = 0x2b9 +XK_gbreve = 0x2bb +XK_jcircumflex = 0x2bc +XK_Cabovedot = 0x2c5 +XK_Ccircumflex = 0x2c6 +XK_Gabovedot = 0x2d5 +XK_Gcircumflex = 0x2d8 +XK_Ubreve = 0x2dd +XK_Scircumflex = 0x2de +XK_cabovedot = 0x2e5 +XK_ccircumflex = 0x2e6 +XK_gabovedot = 0x2f5 +XK_gcircumflex = 0x2f8 +XK_ubreve = 0x2fd +XK_scircumflex = 0x2fe diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin4.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin4.py new file mode 100644 index 0000000..4ee1d80 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/latin4.py @@ -0,0 +1,36 @@ +XK_kra = 0x3a2 +XK_kappa = 0x3a2 +XK_Rcedilla = 0x3a3 +XK_Itilde = 0x3a5 +XK_Lcedilla = 0x3a6 +XK_Emacron = 0x3aa +XK_Gcedilla = 0x3ab +XK_Tslash = 0x3ac +XK_rcedilla = 0x3b3 +XK_itilde = 0x3b5 +XK_lcedilla = 0x3b6 +XK_emacron = 0x3ba +XK_gcedilla = 0x3bb +XK_tslash = 0x3bc +XK_ENG = 0x3bd +XK_eng = 0x3bf +XK_Amacron = 0x3c0 +XK_Iogonek = 0x3c7 +XK_Eabovedot = 0x3cc +XK_Imacron = 0x3cf +XK_Ncedilla = 0x3d1 +XK_Omacron = 0x3d2 +XK_Kcedilla = 0x3d3 +XK_Uogonek = 0x3d9 +XK_Utilde = 0x3dd +XK_Umacron = 0x3de +XK_amacron = 0x3e0 +XK_iogonek = 0x3e7 +XK_eabovedot = 0x3ec +XK_imacron = 0x3ef +XK_ncedilla = 0x3f1 +XK_omacron = 0x3f2 +XK_kcedilla = 0x3f3 +XK_uogonek = 0x3f9 +XK_utilde = 0x3fd +XK_umacron = 0x3fe diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/miscellany.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/miscellany.py new file mode 100644 index 0000000..9bcb578 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/miscellany.py @@ -0,0 +1,169 @@ +XK_BackSpace = 0xFF08 +XK_Tab = 0xFF09 +XK_Linefeed = 0xFF0A +XK_Clear = 0xFF0B +XK_Return = 0xFF0D +XK_Pause = 0xFF13 +XK_Scroll_Lock = 0xFF14 +XK_Sys_Req = 0xFF15 +XK_Escape = 0xFF1B +XK_Delete = 0xFFFF +XK_Multi_key = 0xFF20 +XK_SingleCandidate = 0xFF3C +XK_MultipleCandidate = 0xFF3D +XK_PreviousCandidate = 0xFF3E +XK_Kanji = 0xFF21 +XK_Muhenkan = 0xFF22 +XK_Henkan_Mode = 0xFF23 +XK_Henkan = 0xFF23 +XK_Romaji = 0xFF24 +XK_Hiragana = 0xFF25 +XK_Katakana = 0xFF26 +XK_Hiragana_Katakana = 0xFF27 +XK_Zenkaku = 0xFF28 +XK_Hankaku = 0xFF29 +XK_Zenkaku_Hankaku = 0xFF2A +XK_Touroku = 0xFF2B +XK_Massyo = 0xFF2C +XK_Kana_Lock = 0xFF2D +XK_Kana_Shift = 0xFF2E +XK_Eisu_Shift = 0xFF2F +XK_Eisu_toggle = 0xFF30 +XK_Zen_Koho = 0xFF3D +XK_Mae_Koho = 0xFF3E +XK_Home = 0xFF50 +XK_Left = 0xFF51 +XK_Up = 0xFF52 +XK_Right = 0xFF53 +XK_Down = 0xFF54 +XK_Prior = 0xFF55 +XK_Page_Up = 0xFF55 +XK_Next = 0xFF56 +XK_Page_Down = 0xFF56 +XK_End = 0xFF57 +XK_Begin = 0xFF58 +XK_Select = 0xFF60 +XK_Print = 0xFF61 +XK_Execute = 0xFF62 +XK_Insert = 0xFF63 +XK_Undo = 0xFF65 +XK_Redo = 0xFF66 +XK_Menu = 0xFF67 +XK_Find = 0xFF68 +XK_Cancel = 0xFF69 +XK_Help = 0xFF6A +XK_Break = 0xFF6B +XK_Mode_switch = 0xFF7E +XK_script_switch = 0xFF7E +XK_Num_Lock = 0xFF7F +XK_KP_Space = 0xFF80 +XK_KP_Tab = 0xFF89 +XK_KP_Enter = 0xFF8D +XK_KP_F1 = 0xFF91 +XK_KP_F2 = 0xFF92 +XK_KP_F3 = 0xFF93 +XK_KP_F4 = 0xFF94 +XK_KP_Home = 0xFF95 +XK_KP_Left = 0xFF96 +XK_KP_Up = 0xFF97 +XK_KP_Right = 0xFF98 +XK_KP_Down = 0xFF99 +XK_KP_Prior = 0xFF9A +XK_KP_Page_Up = 0xFF9A +XK_KP_Next = 0xFF9B +XK_KP_Page_Down = 0xFF9B +XK_KP_End = 0xFF9C +XK_KP_Begin = 0xFF9D +XK_KP_Insert = 0xFF9E +XK_KP_Delete = 0xFF9F +XK_KP_Equal = 0xFFBD +XK_KP_Multiply = 0xFFAA +XK_KP_Add = 0xFFAB +XK_KP_Separator = 0xFFAC +XK_KP_Subtract = 0xFFAD +XK_KP_Decimal = 0xFFAE +XK_KP_Divide = 0xFFAF +XK_KP_0 = 0xFFB0 +XK_KP_1 = 0xFFB1 +XK_KP_2 = 0xFFB2 +XK_KP_3 = 0xFFB3 +XK_KP_4 = 0xFFB4 +XK_KP_5 = 0xFFB5 +XK_KP_6 = 0xFFB6 +XK_KP_7 = 0xFFB7 +XK_KP_8 = 0xFFB8 +XK_KP_9 = 0xFFB9 +XK_F1 = 0xFFBE +XK_F2 = 0xFFBF +XK_F3 = 0xFFC0 +XK_F4 = 0xFFC1 +XK_F5 = 0xFFC2 +XK_F6 = 0xFFC3 +XK_F7 = 0xFFC4 +XK_F8 = 0xFFC5 +XK_F9 = 0xFFC6 +XK_F10 = 0xFFC7 +XK_F11 = 0xFFC8 +XK_L1 = 0xFFC8 +XK_F12 = 0xFFC9 +XK_L2 = 0xFFC9 +XK_F13 = 0xFFCA +XK_L3 = 0xFFCA +XK_F14 = 0xFFCB +XK_L4 = 0xFFCB +XK_F15 = 0xFFCC +XK_L5 = 0xFFCC +XK_F16 = 0xFFCD +XK_L6 = 0xFFCD +XK_F17 = 0xFFCE +XK_L7 = 0xFFCE +XK_F18 = 0xFFCF +XK_L8 = 0xFFCF +XK_F19 = 0xFFD0 +XK_L9 = 0xFFD0 +XK_F20 = 0xFFD1 +XK_L10 = 0xFFD1 +XK_F21 = 0xFFD2 +XK_R1 = 0xFFD2 +XK_F22 = 0xFFD3 +XK_R2 = 0xFFD3 +XK_F23 = 0xFFD4 +XK_R3 = 0xFFD4 +XK_F24 = 0xFFD5 +XK_R4 = 0xFFD5 +XK_F25 = 0xFFD6 +XK_R5 = 0xFFD6 +XK_F26 = 0xFFD7 +XK_R6 = 0xFFD7 +XK_F27 = 0xFFD8 +XK_R7 = 0xFFD8 +XK_F28 = 0xFFD9 +XK_R8 = 0xFFD9 +XK_F29 = 0xFFDA +XK_R9 = 0xFFDA +XK_F30 = 0xFFDB +XK_R10 = 0xFFDB +XK_F31 = 0xFFDC +XK_R11 = 0xFFDC +XK_F32 = 0xFFDD +XK_R12 = 0xFFDD +XK_F33 = 0xFFDE +XK_R13 = 0xFFDE +XK_F34 = 0xFFDF +XK_R14 = 0xFFDF +XK_F35 = 0xFFE0 +XK_R15 = 0xFFE0 +XK_Shift_L = 0xFFE1 +XK_Shift_R = 0xFFE2 +XK_Control_L = 0xFFE3 +XK_Control_R = 0xFFE4 +XK_Caps_Lock = 0xFFE5 +XK_Shift_Lock = 0xFFE6 +XK_Meta_L = 0xFFE7 +XK_Meta_R = 0xFFE8 +XK_Alt_L = 0xFFE9 +XK_Alt_R = 0xFFEA +XK_Super_L = 0xFFEB +XK_Super_R = 0xFFEC +XK_Hyper_L = 0xFFED +XK_Hyper_R = 0xFFEE diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/publishing.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/publishing.py new file mode 100644 index 0000000..45b4138 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/publishing.py @@ -0,0 +1,83 @@ +XK_emspace = 0xaa1 +XK_enspace = 0xaa2 +XK_em3space = 0xaa3 +XK_em4space = 0xaa4 +XK_digitspace = 0xaa5 +XK_punctspace = 0xaa6 +XK_thinspace = 0xaa7 +XK_hairspace = 0xaa8 +XK_emdash = 0xaa9 +XK_endash = 0xaaa +XK_signifblank = 0xaac +XK_ellipsis = 0xaae +XK_doubbaselinedot = 0xaaf +XK_onethird = 0xab0 +XK_twothirds = 0xab1 +XK_onefifth = 0xab2 +XK_twofifths = 0xab3 +XK_threefifths = 0xab4 +XK_fourfifths = 0xab5 +XK_onesixth = 0xab6 +XK_fivesixths = 0xab7 +XK_careof = 0xab8 +XK_figdash = 0xabb +XK_leftanglebracket = 0xabc +XK_decimalpoint = 0xabd +XK_rightanglebracket = 0xabe +XK_marker = 0xabf +XK_oneeighth = 0xac3 +XK_threeeighths = 0xac4 +XK_fiveeighths = 0xac5 +XK_seveneighths = 0xac6 +XK_trademark = 0xac9 +XK_signaturemark = 0xaca +XK_trademarkincircle = 0xacb +XK_leftopentriangle = 0xacc +XK_rightopentriangle = 0xacd +XK_emopencircle = 0xace +XK_emopenrectangle = 0xacf +XK_leftsinglequotemark = 0xad0 +XK_rightsinglequotemark = 0xad1 +XK_leftdoublequotemark = 0xad2 +XK_rightdoublequotemark = 0xad3 +XK_prescription = 0xad4 +XK_minutes = 0xad6 +XK_seconds = 0xad7 +XK_latincross = 0xad9 +XK_hexagram = 0xada +XK_filledrectbullet = 0xadb +XK_filledlefttribullet = 0xadc +XK_filledrighttribullet = 0xadd +XK_emfilledcircle = 0xade +XK_emfilledrect = 0xadf +XK_enopencircbullet = 0xae0 +XK_enopensquarebullet = 0xae1 +XK_openrectbullet = 0xae2 +XK_opentribulletup = 0xae3 +XK_opentribulletdown = 0xae4 +XK_openstar = 0xae5 +XK_enfilledcircbullet = 0xae6 +XK_enfilledsqbullet = 0xae7 +XK_filledtribulletup = 0xae8 +XK_filledtribulletdown = 0xae9 +XK_leftpointer = 0xaea +XK_rightpointer = 0xaeb +XK_club = 0xaec +XK_diamond = 0xaed +XK_heart = 0xaee +XK_maltesecross = 0xaf0 +XK_dagger = 0xaf1 +XK_doubledagger = 0xaf2 +XK_checkmark = 0xaf3 +XK_ballotcross = 0xaf4 +XK_musicalsharp = 0xaf5 +XK_musicalflat = 0xaf6 +XK_malesymbol = 0xaf7 +XK_femalesymbol = 0xaf8 +XK_telephone = 0xaf9 +XK_telephonerecorder = 0xafa +XK_phonographcopyright = 0xafb +XK_caret = 0xafc +XK_singlelowquotemark = 0xafd +XK_doublelowquotemark = 0xafe +XK_cursor = 0xaff diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/special.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/special.py new file mode 100644 index 0000000..8a27d4e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/special.py @@ -0,0 +1,24 @@ +XK_blank = 0x9df +XK_soliddiamond = 0x9e0 +XK_checkerboard = 0x9e1 +XK_ht = 0x9e2 +XK_ff = 0x9e3 +XK_cr = 0x9e4 +XK_lf = 0x9e5 +XK_nl = 0x9e8 +XK_vt = 0x9e9 +XK_lowrightcorner = 0x9ea +XK_uprightcorner = 0x9eb +XK_upleftcorner = 0x9ec +XK_lowleftcorner = 0x9ed +XK_crossinglines = 0x9ee +XK_horizlinescan1 = 0x9ef +XK_horizlinescan3 = 0x9f0 +XK_horizlinescan5 = 0x9f1 +XK_horizlinescan7 = 0x9f2 +XK_horizlinescan9 = 0x9f3 +XK_leftt = 0x9f4 +XK_rightt = 0x9f5 +XK_bott = 0x9f6 +XK_topt = 0x9f7 +XK_vertbar = 0x9f8 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/technical.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/technical.py new file mode 100644 index 0000000..4f75a97 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/technical.py @@ -0,0 +1,49 @@ +XK_leftradical = 0x8a1 +XK_topleftradical = 0x8a2 +XK_horizconnector = 0x8a3 +XK_topintegral = 0x8a4 +XK_botintegral = 0x8a5 +XK_vertconnector = 0x8a6 +XK_topleftsqbracket = 0x8a7 +XK_botleftsqbracket = 0x8a8 +XK_toprightsqbracket = 0x8a9 +XK_botrightsqbracket = 0x8aa +XK_topleftparens = 0x8ab +XK_botleftparens = 0x8ac +XK_toprightparens = 0x8ad +XK_botrightparens = 0x8ae +XK_leftmiddlecurlybrace = 0x8af +XK_rightmiddlecurlybrace = 0x8b0 +XK_topleftsummation = 0x8b1 +XK_botleftsummation = 0x8b2 +XK_topvertsummationconnector = 0x8b3 +XK_botvertsummationconnector = 0x8b4 +XK_toprightsummation = 0x8b5 +XK_botrightsummation = 0x8b6 +XK_rightmiddlesummation = 0x8b7 +XK_lessthanequal = 0x8bc +XK_notequal = 0x8bd +XK_greaterthanequal = 0x8be +XK_integral = 0x8bf +XK_therefore = 0x8c0 +XK_variation = 0x8c1 +XK_infinity = 0x8c2 +XK_nabla = 0x8c5 +XK_approximate = 0x8c8 +XK_similarequal = 0x8c9 +XK_ifonlyif = 0x8cd +XK_implies = 0x8ce +XK_identical = 0x8cf +XK_radical = 0x8d6 +XK_includedin = 0x8da +XK_includes = 0x8db +XK_intersection = 0x8dc +XK_union = 0x8dd +XK_logicaland = 0x8de +XK_logicalor = 0x8df +XK_partialderivative = 0x8ef +XK_function = 0x8f6 +XK_leftarrow = 0x8fb +XK_uparrow = 0x8fc +XK_rightarrow = 0x8fd +XK_downarrow = 0x8fe diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/thai.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/thai.py new file mode 100644 index 0000000..9837ae5 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/thai.py @@ -0,0 +1,84 @@ +XK_Thai_kokai = 0xda1 +XK_Thai_khokhai = 0xda2 +XK_Thai_khokhuat = 0xda3 +XK_Thai_khokhwai = 0xda4 +XK_Thai_khokhon = 0xda5 +XK_Thai_khorakhang = 0xda6 +XK_Thai_ngongu = 0xda7 +XK_Thai_chochan = 0xda8 +XK_Thai_choching = 0xda9 +XK_Thai_chochang = 0xdaa +XK_Thai_soso = 0xdab +XK_Thai_chochoe = 0xdac +XK_Thai_yoying = 0xdad +XK_Thai_dochada = 0xdae +XK_Thai_topatak = 0xdaf +XK_Thai_thothan = 0xdb0 +XK_Thai_thonangmontho = 0xdb1 +XK_Thai_thophuthao = 0xdb2 +XK_Thai_nonen = 0xdb3 +XK_Thai_dodek = 0xdb4 +XK_Thai_totao = 0xdb5 +XK_Thai_thothung = 0xdb6 +XK_Thai_thothahan = 0xdb7 +XK_Thai_thothong = 0xdb8 +XK_Thai_nonu = 0xdb9 +XK_Thai_bobaimai = 0xdba +XK_Thai_popla = 0xdbb +XK_Thai_phophung = 0xdbc +XK_Thai_fofa = 0xdbd +XK_Thai_phophan = 0xdbe +XK_Thai_fofan = 0xdbf +XK_Thai_phosamphao = 0xdc0 +XK_Thai_moma = 0xdc1 +XK_Thai_yoyak = 0xdc2 +XK_Thai_rorua = 0xdc3 +XK_Thai_ru = 0xdc4 +XK_Thai_loling = 0xdc5 +XK_Thai_lu = 0xdc6 +XK_Thai_wowaen = 0xdc7 +XK_Thai_sosala = 0xdc8 +XK_Thai_sorusi = 0xdc9 +XK_Thai_sosua = 0xdca +XK_Thai_hohip = 0xdcb +XK_Thai_lochula = 0xdcc +XK_Thai_oang = 0xdcd +XK_Thai_honokhuk = 0xdce +XK_Thai_paiyannoi = 0xdcf +XK_Thai_saraa = 0xdd0 +XK_Thai_maihanakat = 0xdd1 +XK_Thai_saraaa = 0xdd2 +XK_Thai_saraam = 0xdd3 +XK_Thai_sarai = 0xdd4 +XK_Thai_saraii = 0xdd5 +XK_Thai_saraue = 0xdd6 +XK_Thai_sarauee = 0xdd7 +XK_Thai_sarau = 0xdd8 +XK_Thai_sarauu = 0xdd9 +XK_Thai_phinthu = 0xdda +XK_Thai_maihanakat_maitho = 0xdde +XK_Thai_baht = 0xddf +XK_Thai_sarae = 0xde0 +XK_Thai_saraae = 0xde1 +XK_Thai_sarao = 0xde2 +XK_Thai_saraaimaimuan = 0xde3 +XK_Thai_saraaimaimalai = 0xde4 +XK_Thai_lakkhangyao = 0xde5 +XK_Thai_maiyamok = 0xde6 +XK_Thai_maitaikhu = 0xde7 +XK_Thai_maiek = 0xde8 +XK_Thai_maitho = 0xde9 +XK_Thai_maitri = 0xdea +XK_Thai_maichattawa = 0xdeb +XK_Thai_thanthakhat = 0xdec +XK_Thai_nikhahit = 0xded +XK_Thai_leksun = 0xdf0 +XK_Thai_leknung = 0xdf1 +XK_Thai_leksong = 0xdf2 +XK_Thai_leksam = 0xdf3 +XK_Thai_leksi = 0xdf4 +XK_Thai_lekha = 0xdf5 +XK_Thai_lekhok = 0xdf6 +XK_Thai_lekchet = 0xdf7 +XK_Thai_lekpaet = 0xdf8 +XK_Thai_lekkao = 0xdf9 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/xf86.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/xf86.py new file mode 100644 index 0000000..8b98852 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/xf86.py @@ -0,0 +1,202 @@ +XK_XF86_ModeLock = 0x1008FF01 + +XK_XF86_MonBrightnessUp = 0x1008FF02 +XK_XF86_MonBrightnessDown = 0x1008FF03 +XK_XF86_KbdLightOnOff = 0x1008FF04 +XK_XF86_KbdBrightnessUp = 0x1008FF05 +XK_XF86_KbdBrightnessDown = 0x1008FF06 +XK_XF86_MonBrightnessCycle = 0x1008FF07 + +XK_XF86_Standby = 0x1008FF10 +XK_XF86_AudioLowerVolume = 0x1008FF11 +XK_XF86_AudioMute = 0x1008FF12 +XK_XF86_AudioRaiseVolume = 0x1008FF13 +XK_XF86_AudioPlay = 0x1008FF14 +XK_XF86_AudioStop = 0x1008FF15 +XK_XF86_AudioPrev = 0x1008FF16 +XK_XF86_AudioNext = 0x1008FF17 +XK_XF86_HomePage = 0x1008FF18 +XK_XF86_Mail = 0x1008FF19 +XK_XF86_Start = 0x1008FF1A +XK_XF86_Search = 0x1008FF1B +XK_XF86_AudioRecord = 0x1008FF1C + +XK_XF86_Calculator = 0x1008FF1D +XK_XF86_Memo = 0x1008FF1E +XK_XF86_ToDoList = 0x1008FF1F +XK_XF86_Calendar = 0x1008FF20 +XK_XF86_PowerDown = 0x1008FF21 +XK_XF86_ContrastAdjust = 0x1008FF22 +XK_XF86_RockerUp = 0x1008FF23 +XK_XF86_RockerDown = 0x1008FF24 +XK_XF86_RockerEnter = 0x1008FF25 + +XK_XF86_Back = 0x1008FF26 +XK_XF86_Forward = 0x1008FF27 +XK_XF86_Stop = 0x1008FF28 +XK_XF86_Refresh = 0x1008FF29 +XK_XF86_PowerOff = 0x1008FF2A +XK_XF86_WakeUp = 0x1008FF2B +XK_XF86_Eject = 0x1008FF2C +XK_XF86_ScreenSaver = 0x1008FF2D +XK_XF86_WWW = 0x1008FF2E +XK_XF86_Sleep = 0x1008FF2F +XK_XF86_Favorites = 0x1008FF30 +XK_XF86_AudioPause = 0x1008FF31 +XK_XF86_AudioMedia = 0x1008FF32 +XK_XF86_MyComputer = 0x1008FF33 +XK_XF86_VendorHome = 0x1008FF34 +XK_XF86_LightBulb = 0x1008FF35 +XK_XF86_Shop = 0x1008FF36 +XK_XF86_History = 0x1008FF37 +XK_XF86_OpenURL = 0x1008FF38 +XK_XF86_AddFavorite = 0x1008FF39 +XK_XF86_HotLinks = 0x1008FF3A +XK_XF86_BrightnessAdjust = 0x1008FF3B +XK_XF86_Finance = 0x1008FF3C +XK_XF86_Community = 0x1008FF3D +XK_XF86_AudioRewind = 0x1008FF3E +XK_XF86_XF86BackForward = 0x1008FF3F +XK_XF86_Launch0 = 0x1008FF40 +XK_XF86_Launch1 = 0x1008FF41 +XK_XF86_Launch2 = 0x1008FF42 +XK_XF86_Launch3 = 0x1008FF43 +XK_XF86_Launch4 = 0x1008FF44 +XK_XF86_Launch5 = 0x1008FF45 +XK_XF86_Launch6 = 0x1008FF46 +XK_XF86_Launch7 = 0x1008FF47 +XK_XF86_Launch8 = 0x1008FF48 +XK_XF86_Launch9 = 0x1008FF49 +XK_XF86_LaunchA = 0x1008FF4A +XK_XF86_LaunchB = 0x1008FF4B +XK_XF86_LaunchC = 0x1008FF4C +XK_XF86_LaunchD = 0x1008FF4D +XK_XF86_LaunchE = 0x1008FF4E +XK_XF86_LaunchF = 0x1008FF4F + +XK_XF86_ApplicationLeft = 0x1008FF50 +XK_XF86_ApplicationRight = 0x1008FF51 +XK_XF86_Book = 0x1008FF52 +XK_XF86_CD = 0x1008FF53 +XK_XF86_Calculater = 0x1008FF54 +XK_XF86_Clear = 0x1008FF55 +XK_XF86_Close = 0x1008FF56 +XK_XF86_Copy = 0x1008FF57 +XK_XF86_Cut = 0x1008FF58 +XK_XF86_Display = 0x1008FF59 +XK_XF86_DOS = 0x1008FF5A +XK_XF86_Documents = 0x1008FF5B +XK_XF86_Excel = 0x1008FF5C +XK_XF86_Explorer = 0x1008FF5D +XK_XF86_Game = 0x1008FF5E +XK_XF86_Go = 0x1008FF5F +XK_XF86_iTouch = 0x1008FF60 +XK_XF86_LogOff = 0x1008FF61 +XK_XF86_Market = 0x1008FF62 +XK_XF86_Meeting = 0x1008FF63 +XK_XF86_MenuKB = 0x1008FF65 +XK_XF86_MenuPB = 0x1008FF66 +XK_XF86_MySites = 0x1008FF67 +XK_XF86_New = 0x1008FF68 +XK_XF86_News = 0x1008FF69 +XK_XF86_OfficeHome = 0x1008FF6A +XK_XF86_Open = 0x1008FF6B +XK_XF86_Option = 0x1008FF6C +XK_XF86_Paste = 0x1008FF6D +XK_XF86_Phone = 0x1008FF6E +XK_XF86_Q = 0x1008FF70 +XK_XF86_Reply = 0x1008FF72 +XK_XF86_Reload = 0x1008FF73 +XK_XF86_RotateWindows = 0x1008FF74 +XK_XF86_RotationPB = 0x1008FF75 +XK_XF86_RotationKB = 0x1008FF76 +XK_XF86_Save = 0x1008FF77 +XK_XF86_ScrollUp = 0x1008FF78 +XK_XF86_ScrollDown = 0x1008FF79 +XK_XF86_ScrollClick = 0x1008FF7A +XK_XF86_Send = 0x1008FF7B +XK_XF86_Spell = 0x1008FF7C +XK_XF86_SplitScreen = 0x1008FF7D +XK_XF86_Support = 0x1008FF7E +XK_XF86_TaskPane = 0x1008FF7F +XK_XF86_Terminal = 0x1008FF80 +XK_XF86_Tools = 0x1008FF81 +XK_XF86_Travel = 0x1008FF82 +XK_XF86_UserPB = 0x1008FF84 +XK_XF86_User1KB = 0x1008FF85 +XK_XF86_User2KB = 0x1008FF86 +XK_XF86_Video = 0x1008FF87 +XK_XF86_WheelButton = 0x1008FF88 +XK_XF86_Word = 0x1008FF89 +XK_XF86_Xfer = 0x1008FF8A +XK_XF86_ZoomIn = 0x1008FF8B +XK_XF86_ZoomOut = 0x1008FF8C + +XK_XF86_Away = 0x1008FF8D +XK_XF86_Messenger = 0x1008FF8E +XK_XF86_WebCam = 0x1008FF8F +XK_XF86_MailForward = 0x1008FF90 +XK_XF86_Pictures = 0x1008FF91 +XK_XF86_Music = 0x1008FF92 + +XK_XF86_Battery = 0x1008FF93 +XK_XF86_Bluetooth = 0x1008FF94 +XK_XF86_WLAN = 0x1008FF95 +XK_XF86_UWB = 0x1008FF96 + +XK_XF86_AudioForward = 0x1008FF97 +XK_XF86_AudioRepeat = 0x1008FF98 +XK_XF86_AudioRandomPlay = 0x1008FF99 +XK_XF86_Subtitle = 0x1008FF9A +XK_XF86_AudioCycleTrack = 0x1008FF9B +XK_XF86_CycleAngle = 0x1008FF9C +XK_XF86_FrameBack = 0x1008FF9D +XK_XF86_FrameForward = 0x1008FF9E +XK_XF86_Time = 0x1008FF9F +XK_XF86_Select = 0x1008FFA0 +XK_XF86_View = 0x1008FFA1 +XK_XF86_TopMenu = 0x1008FFA2 + +XK_XF86_Red = 0x1008FFA3 +XK_XF86_Green = 0x1008FFA4 +XK_XF86_Yellow = 0x1008FFA5 +XK_XF86_Blue = 0x1008FFA6 + +XK_XF86_Suspend = 0x1008FFA7 +XK_XF86_Hibernate = 0x1008FFA8 +XK_XF86_TouchpadToggle = 0x1008FFA9 +XK_XF86_TouchpadOn = 0x1008FFB0 +XK_XF86_TouchpadOff = 0x1008FFB1 + +XK_XF86_AudioMicMute = 0x1008FFB2 + +XK_XF86_Keyboard = 0x1008FFB3 + +XK_XF86_WWAN = 0x1008FFB4 +XK_XF86_RFKill = 0x1008FFB5 + +XK_XF86_AudioPreset = 0x1008FFB6 + +XK_XF86_RotationLockToggle = 0x1008FFB7 + +XK_XF86_FullScreen = 0x1008FFB8 + +XK_XF86_Switch_VT_1 = 0x1008FE01 +XK_XF86_Switch_VT_2 = 0x1008FE02 +XK_XF86_Switch_VT_3 = 0x1008FE03 +XK_XF86_Switch_VT_4 = 0x1008FE04 +XK_XF86_Switch_VT_5 = 0x1008FE05 +XK_XF86_Switch_VT_6 = 0x1008FE06 +XK_XF86_Switch_VT_7 = 0x1008FE07 +XK_XF86_Switch_VT_8 = 0x1008FE08 +XK_XF86_Switch_VT_9 = 0x1008FE09 +XK_XF86_Switch_VT_10 = 0x1008FE0A +XK_XF86_Switch_VT_11 = 0x1008FE0B +XK_XF86_Switch_VT_12 = 0x1008FE0C + +XK_XF86_Ungrab = 0x1008FE20 +XK_XF86_ClearGrab = 0x1008FE21 +XK_XF86_Next_VMode = 0x1008FE22 +XK_XF86_Prev_VMode = 0x1008FE23 +XK_XF86_LogWindowTree = 0x1008FE24 +XK_XF86_LogGrabInfo = 0x1008FE25 diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/xk3270.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/xk3270.py new file mode 100644 index 0000000..b9395eb --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/xk3270.py @@ -0,0 +1,30 @@ +XK_3270_Duplicate = 0xFD01 +XK_3270_FieldMark = 0xFD02 +XK_3270_Right2 = 0xFD03 +XK_3270_Left2 = 0xFD04 +XK_3270_BackTab = 0xFD05 +XK_3270_EraseEOF = 0xFD06 +XK_3270_EraseInput = 0xFD07 +XK_3270_Reset = 0xFD08 +XK_3270_Quit = 0xFD09 +XK_3270_PA1 = 0xFD0A +XK_3270_PA2 = 0xFD0B +XK_3270_PA3 = 0xFD0C +XK_3270_Test = 0xFD0D +XK_3270_Attn = 0xFD0E +XK_3270_CursorBlink = 0xFD0F +XK_3270_AltCursor = 0xFD10 +XK_3270_KeyClick = 0xFD11 +XK_3270_Jump = 0xFD12 +XK_3270_Ident = 0xFD13 +XK_3270_Rule = 0xFD14 +XK_3270_Copy = 0xFD15 +XK_3270_Play = 0xFD16 +XK_3270_Setup = 0xFD17 +XK_3270_Record = 0xFD18 +XK_3270_ChangeScreen = 0xFD19 +XK_3270_DeleteWord = 0xFD1A +XK_3270_ExSelect = 0xFD1B +XK_3270_CursorSelect = 0xFD1C +XK_3270_PrintScreen = 0xFD1D +XK_3270_Enter = 0xFD1E diff --git a/myenv/lib/python3.10/site-packages/Xlib/keysymdef/xkb.py b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/xkb.py new file mode 100644 index 0000000..3be1f3d --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/keysymdef/xkb.py @@ -0,0 +1,100 @@ +XK_ISO_Lock = 0xFE01 +XK_ISO_Level2_Latch = 0xFE02 +XK_ISO_Level3_Shift = 0xFE03 +XK_ISO_Level3_Latch = 0xFE04 +XK_ISO_Level3_Lock = 0xFE05 +XK_ISO_Group_Shift = 0xFF7E +XK_ISO_Group_Latch = 0xFE06 +XK_ISO_Group_Lock = 0xFE07 +XK_ISO_Next_Group = 0xFE08 +XK_ISO_Next_Group_Lock = 0xFE09 +XK_ISO_Prev_Group = 0xFE0A +XK_ISO_Prev_Group_Lock = 0xFE0B +XK_ISO_First_Group = 0xFE0C +XK_ISO_First_Group_Lock = 0xFE0D +XK_ISO_Last_Group = 0xFE0E +XK_ISO_Last_Group_Lock = 0xFE0F +XK_ISO_Left_Tab = 0xFE20 +XK_ISO_Move_Line_Up = 0xFE21 +XK_ISO_Move_Line_Down = 0xFE22 +XK_ISO_Partial_Line_Up = 0xFE23 +XK_ISO_Partial_Line_Down = 0xFE24 +XK_ISO_Partial_Space_Left = 0xFE25 +XK_ISO_Partial_Space_Right = 0xFE26 +XK_ISO_Set_Margin_Left = 0xFE27 +XK_ISO_Set_Margin_Right = 0xFE28 +XK_ISO_Release_Margin_Left = 0xFE29 +XK_ISO_Release_Margin_Right = 0xFE2A +XK_ISO_Release_Both_Margins = 0xFE2B +XK_ISO_Fast_Cursor_Left = 0xFE2C +XK_ISO_Fast_Cursor_Right = 0xFE2D +XK_ISO_Fast_Cursor_Up = 0xFE2E +XK_ISO_Fast_Cursor_Down = 0xFE2F +XK_ISO_Continuous_Underline = 0xFE30 +XK_ISO_Discontinuous_Underline = 0xFE31 +XK_ISO_Emphasize = 0xFE32 +XK_ISO_Center_Object = 0xFE33 +XK_ISO_Enter = 0xFE34 +XK_dead_grave = 0xFE50 +XK_dead_acute = 0xFE51 +XK_dead_circumflex = 0xFE52 +XK_dead_tilde = 0xFE53 +XK_dead_macron = 0xFE54 +XK_dead_breve = 0xFE55 +XK_dead_abovedot = 0xFE56 +XK_dead_diaeresis = 0xFE57 +XK_dead_abovering = 0xFE58 +XK_dead_doubleacute = 0xFE59 +XK_dead_caron = 0xFE5A +XK_dead_cedilla = 0xFE5B +XK_dead_ogonek = 0xFE5C +XK_dead_iota = 0xFE5D +XK_dead_voiced_sound = 0xFE5E +XK_dead_semivoiced_sound = 0xFE5F +XK_dead_belowdot = 0xFE60 +XK_First_Virtual_Screen = 0xFED0 +XK_Prev_Virtual_Screen = 0xFED1 +XK_Next_Virtual_Screen = 0xFED2 +XK_Last_Virtual_Screen = 0xFED4 +XK_Terminate_Server = 0xFED5 +XK_AccessX_Enable = 0xFE70 +XK_AccessX_Feedback_Enable = 0xFE71 +XK_RepeatKeys_Enable = 0xFE72 +XK_SlowKeys_Enable = 0xFE73 +XK_BounceKeys_Enable = 0xFE74 +XK_StickyKeys_Enable = 0xFE75 +XK_MouseKeys_Enable = 0xFE76 +XK_MouseKeys_Accel_Enable = 0xFE77 +XK_Overlay1_Enable = 0xFE78 +XK_Overlay2_Enable = 0xFE79 +XK_AudibleBell_Enable = 0xFE7A +XK_Pointer_Left = 0xFEE0 +XK_Pointer_Right = 0xFEE1 +XK_Pointer_Up = 0xFEE2 +XK_Pointer_Down = 0xFEE3 +XK_Pointer_UpLeft = 0xFEE4 +XK_Pointer_UpRight = 0xFEE5 +XK_Pointer_DownLeft = 0xFEE6 +XK_Pointer_DownRight = 0xFEE7 +XK_Pointer_Button_Dflt = 0xFEE8 +XK_Pointer_Button1 = 0xFEE9 +XK_Pointer_Button2 = 0xFEEA +XK_Pointer_Button3 = 0xFEEB +XK_Pointer_Button4 = 0xFEEC +XK_Pointer_Button5 = 0xFEED +XK_Pointer_DblClick_Dflt = 0xFEEE +XK_Pointer_DblClick1 = 0xFEEF +XK_Pointer_DblClick2 = 0xFEF0 +XK_Pointer_DblClick3 = 0xFEF1 +XK_Pointer_DblClick4 = 0xFEF2 +XK_Pointer_DblClick5 = 0xFEF3 +XK_Pointer_Drag_Dflt = 0xFEF4 +XK_Pointer_Drag1 = 0xFEF5 +XK_Pointer_Drag2 = 0xFEF6 +XK_Pointer_Drag3 = 0xFEF7 +XK_Pointer_Drag4 = 0xFEF8 +XK_Pointer_Drag5 = 0xFEFD +XK_Pointer_EnableKeys = 0xFEF9 +XK_Pointer_Accelerate = 0xFEFA +XK_Pointer_DfltBtnNext = 0xFEFB +XK_Pointer_DfltBtnPrev = 0xFEFC diff --git a/myenv/lib/python3.10/site-packages/Xlib/protocol/__init__.py b/myenv/lib/python3.10/site-packages/Xlib/protocol/__init__.py new file mode 100644 index 0000000..5fa7fcb --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/protocol/__init__.py @@ -0,0 +1,28 @@ +# Xlib.protocol.__init__ -- glue for Xlib.protocol package +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +__all__ = [ + 'display', + 'event', + 'request', + 'rq', + 'structs', + ] diff --git a/myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4821a4eeef5a27b36435931b62e160809492d7ea GIT binary patch literal 272 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/request.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/request.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..338f16a37e3d3806289efef40fbf21e6dfc9df6c GIT binary patch literal 43221 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 YlJ!D+%6fsl+q%`>lYG9tH}|~%1J#TWMgRZ+ literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/rq.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/rq.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..353499d78bbff727161e518f9a1c20a29e45e98f GIT binary patch literal 38137 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 PX1=()I9A+SxcC1751@As literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/structs.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/protocol/__pycache__/structs.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..098aff4cf084d3edfcc367337976c8ec4e94f7c7 GIT binary patch literal 3196 zcma)8&2!tv6(>LtB*70!)Q4r+`Eb(ORoa-5Gt=pz(`iJD>xt^KV+s??=*aEIC7)j%$7EG+Ok zZI;|ySc@uYl=Ds6qBgTGJx~kOj;f0)<~r0i>$|i~D+?QzHQHwO<@&;2IAo*ruG3B# zwOjJFlCPJ1!|)#MVON)ImVPd68@o$4VYkWF%Dz>u-!A!1$?q7xO?M49r$fA*(yvGV z|N0KjZsELlR_DF>6>PG*vfnjv>vXT=_ey@>_}^WvyWtO8kG^Nt_2~O%-QG`Ghc$Kj zK^gx;__^dBeQ;jc|LC=iEbm*nb@3XR){-q=g<4$xX?X`U0Li~&P?hhjZ&4D|hJI%U%p=W)BhBC~ ziZp|_O`3bS%I1sL4o>$PR3RI~AbdFze40`}i?1g^M%Ldov4nJnTu>&K3)*j0Otyxx z@<$?=#cEDkS8=*hIyz9Cj(n-OV4|w`>n?3s5~NHbbh!qbBiII?F(G2ge8FfeSg436 zgBkO2J|>9AW-L|yB#EH?jR8K^CzT!R2)CAo--wMqDk`wSAUW$nkK~iX3WyBf-GZ{xL+h!!CdCf zA?FEc49dNTJ1~2FZ{^iMjJ~gkH3WI{ZGX%stWU>cI_p1W@}=TgKbxyDPyLKv;foHZ zN&|*ryr3TQFj>e_>_?R~$F* zOC_eEl8>`_-u@;|DZet;miKWU`4EF=HQxE}TK10(`(2y!FR_88|5M!$U^LY|L#?Bx z-l=ZtsOqJr8ps9JK@Ct7C0N3g0R_V~ZA@u~l})wuVdW zYNIpsK0Ba0pxv@FZ0Z^NUD)AQ}z;1%F5Z zpx_2T!GA>oc;GhOGci6zjK@00Vh`PW?}ex#4Z_8cH==18s+gxmb9ttzOdsT4gq|xJ zJNMppH1U!+W&Tx6)wqlg;i+;IJ!tV&$Q1q7sNTbzz8J;LqPUw8qY}M=pr@_q^0MVA-hG$ zRV-}C#Y)qW^)V0(w-EZ5MS)NUzb4J+$l5tiVoEw%JV{TY=qavAx>|k8r^AF9-5UfM zu75oy&3S=hDKO)s%0Z&9B7K@Da5Z@so&1cAev9S@q zMxybhjI~HNB|WX3WWlQ`J73ybUjnI5C_U5F($YwT?X)7A`d+o;RN-3AGgAozWchGD z7{>_}EG6s5X_!nYJ5D1eVlJd;8y}6kb?+8Z-qyD)=O5y(-WT05VYzjk zTl3tFf=Qgrb0-ZZjBF$GYpp^Xi~}x7^)#TQ@tmb2H9m=QN59XyT#@OM;brdpf#XHfzp7xwH$h2o z($H0dBF@CF+1e +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +# Standard modules +import errno +import math +import select +import socket +import struct +import sys + +# Python 2/3 compatibility. +from six import PY3, byte2int, indexbytes + +# Xlib modules +from .. import error +from ..ext import ge + +from ..support import lock, connect + +# Xlib.protocol modules +from . import rq +from . import event + +if PY3: + + class bytesview(object): + + def __init__(self, data, offset=0, size=None): + if size is None: + size = len(data)-offset + if isinstance(data, bytes): + view = memoryview(data) + elif isinstance(data, bytesview): + view = data.view + else: + raise TypeError('unsupported type: {}'.format(type(data))) + self.view = view[offset:offset+size] + + def __len__(self): + return len(self.view) + + def __getitem__(self, key): + if isinstance(key, slice): + return bytes(self.view[key]) + return self.view[key] + +else: + + def bytesview(data, offset=0, size=None): + if not isinstance(data, (bytes, buffer)): + raise TypeError('unsupported type: {}'.format(type(data))) + if size is None: + size = len(data)-offset + return buffer(data, offset, size) + + +class Display(object): + extension_major_opcodes = {} + error_classes = error.xerror_class.copy() + event_classes = event.event_class.copy() + + def __init__(self, display = None): + name, protocol, host, displayno, screenno = connect.get_display(display) + + self.display_name = name + self.default_screen = screenno + + self.socket = connect.get_socket(name, protocol, host, displayno) + + auth_name, auth_data = connect.get_auth(self.socket, name, + protocol, host, displayno) + + # Internal structures for communication, grouped + # by their function and locks + + # Socket error indicator, set when the socket is closed + # in one way or another + self.socket_error_lock = lock.allocate_lock() + self.socket_error = None + + # Event queue + self.event_queue_read_lock = lock.allocate_lock() + self.event_queue_write_lock = lock.allocate_lock() + self.event_queue = [] + + # Unsent request queue and sequence number counter + self.request_queue_lock = lock.allocate_lock() + self.request_serial = 1 + self.request_queue = [] + + # Send-and-receive loop, see function send_and_receive + # for a detailed explanation + self.send_recv_lock = lock.allocate_lock() + self.send_active = 0 + self.recv_active = 0 + + self.event_waiting = 0 + self.event_wait_lock = lock.allocate_lock() + self.request_waiting = 0 + self.request_wait_lock = lock.allocate_lock() + + # Calculate optimal default buffer size for recv. + buffer_size = self.socket.getsockopt(socket.SOL_SOCKET, + socket.SO_RCVBUF) + buffer_size = math.pow(2, math.floor(math.log(buffer_size, 2))) + self.recv_buffer_size = int(buffer_size) + + # Data used by the send-and-receive loop + self.sent_requests = [] + self.recv_packet_len = 0 + self.data_send = b'' + self.data_recv = b'' + self.data_sent_bytes = 0 + + # Resource ID structures + self.resource_id_lock = lock.allocate_lock() + self.resource_ids = {} + self.last_resource_id = 0 + + # Use an default error handler, one which just prints the error + self.error_handler = None + + + # Right, now we're all set up for the connection setup + # request with the server. + + # Figure out which endianness the hardware uses + self.big_endian = struct.unpack('BB', struct.pack('H', 0x0100))[0] + + if self.big_endian: + order = 0x42 + else: + order = 0x6c + + # Send connection setup + r = ConnectionSetupRequest(self, + byte_order = order, + protocol_major = 11, + protocol_minor = 0, + auth_prot_name = auth_name, + auth_prot_data = auth_data) + + # Did connection fail? + if r.status != 1: + raise error.DisplayConnectionError(self.display_name, r.reason) + + # Set up remaining info + self.info = r + self.default_screen = min(self.default_screen, len(self.info.roots) - 1) + + + # + # Public interface + # + + def get_display_name(self): + return self.display_name + + def get_default_screen(self): + return self.default_screen + + def fileno(self): + self.check_for_error() + return self.socket.fileno() + + def next_event(self): + self.check_for_error() + + # Main lock, so that only one thread at a time performs the + # event waiting code. This at least guarantees that the first + # thread calling next_event() will get the next event, although + # no order is guaranteed among other threads calling next_event() + # while the first is blocking. + + self.event_queue_read_lock.acquire() + + # Lock event queue, so we can check if it is empty + self.event_queue_write_lock.acquire() + + # We have too loop until we get an event, as + # we might be woken up when there is no event. + + while not self.event_queue: + + # Lock send_recv so no send_and_receive + # can start or stop while we're checking + # whether there are one active. + self.send_recv_lock.acquire() + + # Release event queue to allow an send_and_recv to + # insert any now. + self.event_queue_write_lock.release() + + # Call send_and_recv, which will return when + # something has occured + self.send_and_recv(event = True) + + # Before looping around, lock the event queue against + # modifications. + self.event_queue_write_lock.acquire() + + # Whiew, we have an event! Remove it from + # the event queue and relaese its write lock. + + event = self.event_queue[0] + del self.event_queue[0] + self.event_queue_write_lock.release() + + # Finally, allow any other threads which have called next_event() + # while we were waiting to proceed. + + self.event_queue_read_lock.release() + + # And return the event! + return event + + def pending_events(self): + self.check_for_error() + + # Make a send_and_recv pass, receiving any events + self.send_recv_lock.acquire() + self.send_and_recv(recv = True) + + # Lock the queue, get the event count, and unlock again. + self.event_queue_write_lock.acquire() + count = len(self.event_queue) + self.event_queue_write_lock.release() + + return count + + def flush(self): + self.check_for_error() + self.send_recv_lock.acquire() + self.send_and_recv(flush = True) + + def close(self): + self.flush() + self.close_internal('client') + + def set_error_handler(self, handler): + self.error_handler = handler + + + def allocate_resource_id(self): + """id = d.allocate_resource_id() + + Allocate a new X resource id number ID. + + Raises ResourceIDError if there are no free resource ids. + """ + + self.resource_id_lock.acquire() + try: + i = self.last_resource_id + while i in self.resource_ids: + i = i + 1 + if i > self.info.resource_id_mask: + i = 0 + if i == self.last_resource_id: + raise error.ResourceIDError('out of resource ids') + + self.resource_ids[i] = None + self.last_resource_id = i + return self.info.resource_id_base | i + finally: + self.resource_id_lock.release() + + def free_resource_id(self, rid): + """d.free_resource_id(rid) + + Free resource id RID. Attempts to free a resource id which + isn't allocated by us are ignored. + """ + + self.resource_id_lock.acquire() + try: + i = rid & self.info.resource_id_mask + + # Attempting to free a resource id outside our range + if rid - i != self.info.resource_id_base: + return None + + try: + del self.resource_ids[i] + except KeyError: + pass + finally: + self.resource_id_lock.release() + + + + def get_resource_class(self, class_name, default = None): + """class = d.get_resource_class(class_name, default = None) + + Return the class to be used for X resource objects of type + CLASS_NAME, or DEFAULT if no such class is set. + """ + + return self.resource_classes.get(class_name, default) + + def set_extension_major(self, extname, major): + self.extension_major_opcodes[extname] = major + + def get_extension_major(self, extname): + return self.extension_major_opcodes[extname] + + def add_extension_event(self, code, evt, subcode=None): + if subcode == None: + self.event_classes[code] = evt + else: + if not code in self.event_classes: + self.event_classes[code] = {subcode: evt} + else: + self.event_classes[code][subcode] = evt + + def add_extension_error(self, code, err): + self.error_classes[code] = err + + + # + # Private functions + # + + def check_for_error(self): + self.socket_error_lock.acquire() + err = self.socket_error + self.socket_error_lock.release() + + if err: + raise err + + def send_request(self, request, wait_for_response): + if self.socket_error: + raise self.socket_error + + self.request_queue_lock.acquire() + + request._serial = self.request_serial + self.request_serial = (self.request_serial + 1) % 65536 + + self.request_queue.append((request, wait_for_response)) + qlen = len(self.request_queue) + + self.request_queue_lock.release() + +# if qlen > 10: +# self.flush() + + def close_internal(self, whom): + # Clear out data structures + self.request_queue = None + self.sent_requests = None + self.event_queue = None + self.data_send = None + self.data_recv = None + + # Close the connection + self.socket.close() + + # Set a connection closed indicator + self.socket_error_lock.acquire() + self.socket_error = error.ConnectionClosedError(whom) + self.socket_error_lock.release() + + + def send_and_recv(self, flush = False, event = False, request = None, recv = False): + """send_and_recv(flush = None, event = None, request = None, recv = None) + + Perform I/O, or wait for some other thread to do it for us. + + send_recv_lock MUST be LOCKED when send_and_recv is called. + It will be UNLOCKED at return. + + Exactly or one of the parameters flush, event, request and recv must + be set to control the return condition. + + To attempt to send all requests in the queue, flush should + be true. Will return immediately if another thread is + already doing send_and_recv. + + To wait for an event to be received, event should be true. + + To wait for a response to a certain request (either an error + or a response), request should be set to that request's + serial number. + + To just read any pending data from the server, recv should be true. + + It is not guaranteed that the return condition has been + fulfilled when the function returns, so the caller has to loop + until it is finished. + """ + + # We go to sleep if there is already a thread doing what we + # want to do: + + # If flushing, we want to send + # If waiting for a response to a request, we want to send + # (to ensure that the request was sent - we alway recv + # when we get to the main loop, but sending is the important + # thing here) + # If waiting for an event, we want to recv + # If just trying to receive anything we can, we want to recv + + # FIXME: It would be good if we could also sleep when we're waiting on + # a response to a request that has already been sent. + + if (((flush or request is not None) and self.send_active) + or ((event or recv) and self.recv_active)): + + # Signal that we are waiting for something. These locks + # together with the *_waiting variables are used as + # semaphores. When an event or a request response arrives, + # it will zero the *_waiting and unlock the lock. The + # locks will also be unlocked when an active send_and_recv + # finishes to signal the other waiting threads that one of + # them has to take over the send_and_recv function. + + # All this makes these locks and variables a part of the + # send_and_recv control logic, and hence must be modified + # only when we have the send_recv_lock locked. + if event: + wait_lock = self.event_wait_lock + if not self.event_waiting: + self.event_waiting = 1 + wait_lock.acquire() + + elif request is not None: + wait_lock = self.request_wait_lock + if not self.request_waiting: + self.request_waiting = 1 + wait_lock.acquire() + + # Release send_recv, allowing a send_and_recive + # to terminate or other threads to queue up + self.send_recv_lock.release() + + # Return immediately if flushing, even if that + # might mean that not necessarily all requests + # have been sent. + if flush or recv: + return + + # Wait for something to happen, as the wait locks are + # unlocked either when what we wait for has arrived (not + # necessarily the exact object we're waiting for, though), + # or when an active send_and_recv exits. + + # Release it immediately afterwards as we're only using + # the lock for synchonization. Since we're not modifying + # event_waiting or request_waiting here we don't have + # to lock send_and_recv_lock. In fact, we can't do that + # or we trigger a dead-lock. + + wait_lock.acquire() + wait_lock.release() + + # Return to caller to let it check whether it has + # got the data it was waiting for + return + + + # There's no thread doing what we need to do. Find out exactly + # what to do + + # There must always be some thread receiving data, but it must not + # necessarily be us + + if not self.recv_active: + receiving = 1 + self.recv_active = 1 + else: + receiving = 0 + + flush_bytes = None + sending = 0 + + # Loop, receiving and sending data. + while 1: + + # We might want to start sending data + if sending or not self.send_active: + + # Turn all requests on request queue into binary form + # and append them to self.data_send + + self.request_queue_lock.acquire() + for req, wait in self.request_queue: + self.data_send = self.data_send + req._binary + if wait: + self.sent_requests.append(req) + + del self.request_queue[:] + self.request_queue_lock.release() + + # If there now is data to send, mark us as senders + + if self.data_send: + self.send_active = 1 + sending = 1 + else: + self.send_active = 0 + sending = 0 + + # We've done all setup, so release the lock and start waiting + # for the network to fire up + self.send_recv_lock.release() + + # There's no longer anything useful we can do here. + if not (sending or receiving): + break + + # If we're flushing, figure out how many bytes we + # have to send so that we're not caught in an interminable + # loop if other threads continuously append requests. + if flush and flush_bytes is None: + flush_bytes = self.data_sent_bytes + len(self.data_send) + + + try: + # We're only checking for the socket to be writable + # if we're the sending thread. We always check for it + # to become readable: either we are the receiving thread + # and should take care of the data, or the receiving thread + # might finish receiving after having read the data + + if sending: + writeset = [self.socket] + else: + writeset = [] + + # Timeout immediately if we're only checking for + # something to read or if we're flushing, otherwise block + + if recv or flush: + timeout = 0 + else: + timeout = None + + rs, ws, es = select.select([self.socket], writeset, [], timeout) + + # Ignore errors caused by a signal received while blocking. + # All other errors are re-raised. + except select.error as err: + if isinstance(err, OSError): + code = err.errno + else: + code = err[0] + if code != errno.EINTR: + raise + + # We must lock send_and_recv before we can loop to + # the start of the loop + + self.send_recv_lock.acquire() + continue + + + # Socket is ready for sending data, send as much as possible. + if ws: + try: + i = self.socket.send(self.data_send) + except socket.error as err: + self.close_internal('server: %s' % err) + raise self.socket_error + + self.data_send = self.data_send[i:] + self.data_sent_bytes = self.data_sent_bytes + i + + + # There is data to read + gotreq = 0 + if rs: + + # We're the receiving thread, parse the data + if receiving: + try: + count = self.recv_packet_len - len(self.data_recv) + count = max(self.recv_buffer_size, count) + bytes_recv = self.socket.recv(count) + except socket.error as err: + self.close_internal('server: %s' % err) + raise self.socket_error + + if not bytes_recv: + # Clear up, set a connection closed indicator and raise it + self.close_internal('server') + raise self.socket_error + + self.data_recv = bytes(self.data_recv) + bytes_recv + gotreq = self.parse_response(request) + + # Otherwise return, allowing the calling thread to figure + # out if it has got the data it needs + else: + # We must be a sending thread if we're here, so reset + # that indicator. + self.send_recv_lock.acquire() + self.send_active = 0 + self.send_recv_lock.release() + + # And return to the caller + return + + + # There are three different end of send-recv-loop conditions. + # However, we don't leave the loop immediately, instead we + # try to send and receive any data that might be left. We + # do this by giving a timeout of 0 to select to poll + # the socket. + + # When flushing: all requests have been sent + if flush and flush_bytes >= self.data_sent_bytes: + break + + # When waiting for an event: an event has been read + if event and self.event_queue: + break + + # When processing a certain request: got its reply + if request is not None and gotreq: + break + + # Always break if we just want to receive as much as possible + if recv: + break + + # Else there's may still data which must be sent, or + # we haven't got the data we waited for. Lock and loop + + self.send_recv_lock.acquire() + + + # We have accomplished the callers request. + # Record that there are now no active send_and_recv, + # and wake up all waiting thread + + self.send_recv_lock.acquire() + + if sending: + self.send_active = 0 + if receiving: + self.recv_active = 0 + + if self.event_waiting: + self.event_waiting = 0 + self.event_wait_lock.release() + + if self.request_waiting: + self.request_waiting = 0 + self.request_wait_lock.release() + + self.send_recv_lock.release() + + + def parse_response(self, request): + """Internal method. + + Parse data received from server. If REQUEST is not None + true is returned if the request with that serial number + was received, otherwise false is returned. + + If REQUEST is -1, we're parsing the server connection setup + response. + """ + + if request == -1: + return self.parse_connection_setup() + + # Parse ordinary server response + gotreq = False + while True: + if self.data_recv: + # Check the first byte to find out what kind of response it is + rtype = byte2int(self.data_recv) + + # Are we're waiting for additional data for the current packet? + if self.recv_packet_len: + if len(self.data_recv) < self.recv_packet_len: + return gotreq + + if rtype == 1: + gotreq = self.parse_request_response(request) or gotreq + continue + elif rtype & 0x7f == ge.GenericEventCode: + self.parse_event_response(rtype) + continue + else: + raise AssertionError(rtype) + + # Every response is at least 32 bytes long, so don't bother + # until we have received that much + if len(self.data_recv) < 32: + return gotreq + + # Error response + if rtype == 0: + gotreq = self.parse_error_response(request) or gotreq + + # Request response or generic event. + elif rtype == 1 or rtype & 0x7f == ge.GenericEventCode: + # Set reply length, and loop around to see if + # we have got the full response + rlen = int(struct.unpack('=L', self.data_recv[4:8])[0]) + self.recv_packet_len = 32 + rlen * 4 + + # Else non-generic event + else: + self.parse_event_response(rtype) + + + def parse_error_response(self, request): + # Code is second byte + code = indexbytes(self.data_recv, 1) + + # Fetch error class + estruct = self.error_classes.get(code, error.XError) + + e = estruct(self, self.data_recv[:32]) + self.data_recv = bytesview(self.data_recv, 32) + + # print 'recv Error:', e + + req = self.get_waiting_request(e.sequence_number) + + # Error for a request whose response we are waiting for, + # or which have an error handler. However, if the error + # handler indicates that it hasn't taken care of the + # error, pass it on to the default error handler + + if req and req._set_error(e): + + # If this was a ReplyRequest, unlock any threads waiting + # for a request to finish + + if isinstance(req, rq.ReplyRequest): + self.send_recv_lock.acquire() + + if self.request_waiting: + self.request_waiting = 0 + self.request_wait_lock.release() + + self.send_recv_lock.release() + + return request == e.sequence_number + + # Else call the error handler + else: + if self.error_handler: + rq.call_error_handler(self.error_handler, e, None) + else: + self.default_error_handler(e) + + return False + + + def default_error_handler(self, err): + sys.stderr.write('X protocol error:\n%s\n' % err) + + + def parse_request_response(self, request): + req = self.get_waiting_replyrequest() + + # Sequence number is always data[2:4] + # Do sanity check before trying to parse the data + sno = struct.unpack('=H', self.data_recv[2:4])[0] + if sno != req._serial: + raise RuntimeError("Expected reply for request %s, but got %s. Can't happen!" + % (req._serial, sno)) + + req._parse_response(self.data_recv[:self.recv_packet_len]) + # print 'recv Request:', req + + self.data_recv = bytesview(self.data_recv, self.recv_packet_len) + self.recv_packet_len = 0 + + + # Unlock any response waiting threads + + self.send_recv_lock.acquire() + + if self.request_waiting: + self.request_waiting = 0 + self.request_wait_lock.release() + + self.send_recv_lock.release() + + + return req.sequence_number == request + + + def parse_event_response(self, etype): + # Skip bit 8, that is set if this event came from an SendEvent + etype = etype & 0x7f + + if etype == ge.GenericEventCode: + length = self.recv_packet_len + else: + length = 32 + + estruct = self.event_classes.get(etype, event.AnyEvent) + if type(estruct) == dict: + subcode = self.data_recv[1] + + # Python2 compatibility + if type(subcode) == str: + subcode = ord(subcode) + + # this etype refers to a set of sub-events with individual subcodes + estruct = estruct[subcode] + + e = estruct(display = self, binarydata = self.data_recv[:length]) + + if etype == ge.GenericEventCode: + self.recv_packet_len = 0 + + self.data_recv = bytesview(self.data_recv, length) + + # Drop all requests having an error handler, + # but which obviously succeded. + + # Decrement it by one, so that we don't remove the request + # that generated these events, if there is such a one. + # Bug reported by Ilpo Nyyssönen + # Note: not all events have a sequence_number field! + # (e.g. KeymapNotify). + if hasattr(e, 'sequence_number'): + self.get_waiting_request((e.sequence_number - 1) % 65536) + + # print 'recv Event:', e + + # Insert the event into the queue + self.event_queue_write_lock.acquire() + self.event_queue.append(e) + self.event_queue_write_lock.release() + + # Unlock any event waiting threads + self.send_recv_lock.acquire() + + if self.event_waiting: + self.event_waiting = 0 + self.event_wait_lock.release() + + self.send_recv_lock.release() + + + def get_waiting_request(self, sno): + if not self.sent_requests: + return None + + # Normalize sequence numbers, even if they have wrapped. + # This ensures that + # sno <= last_serial + # and + # self.sent_requests[0]._serial <= last_serial + + if self.sent_requests[0]._serial > self.request_serial: + last_serial = self.request_serial + 65536 + if sno < self.request_serial: + sno = sno + 65536 + + else: + last_serial = self.request_serial + if sno > self.request_serial: + sno = sno - 65536 + + # No matching events at all + if sno < self.sent_requests[0]._serial: + return None + + # Find last req <= sno + req = None + reqpos = len(self.sent_requests) + adj = 0 + last = 0 + + for i in range(0, len(self.sent_requests)): + rno = self.sent_requests[i]._serial + adj + + # Did serial numbers just wrap around? + if rno < last: + adj = 65536 + rno = rno + adj + + last = rno + + if sno == rno: + req = self.sent_requests[i] + reqpos = i + 1 + break + elif sno < rno: + req = None + reqpos = i + break + + # Delete all request such as req <= sno + del self.sent_requests[:reqpos] + + return req + + def get_waiting_replyrequest(self): + for i in range(0, len(self.sent_requests)): + if hasattr(self.sent_requests[i], '_reply'): + req = self.sent_requests[i] + del self.sent_requests[:i + 1] + return req + + # Reply for an unknown request? No, that can't happen. + else: + raise RuntimeError("Request reply to unknown request. Can't happen!") + + def parse_connection_setup(self): + """Internal function used to parse connection setup response. + """ + + # Only the ConnectionSetupRequest has been sent so far + r = self.sent_requests[0] + + while True: + # print 'data_send:', repr(self.data_send) + # print 'data_recv:', repr(self.data_recv) + + if r._data: + alen = r._data['additional_length'] * 4 + + # The full response haven't arrived yet + if len(self.data_recv) < alen: + return False + + # Connection failed or further authentication is needed. + # Set reason to the reason string + if r._data['status'] != 1: + r._data['reason'] = self.data_recv[:r._data['reason_length']] + + # Else connection succeeded, parse the reply + else: + x, d = r._success_reply.parse_binary(self.data_recv[:alen], + self, rawdict = True) + r._data.update(x) + + del self.sent_requests[0] + + self.data_recv = self.data_recv[alen:] + + return True + + else: + # The base reply is 8 bytes long + if len(self.data_recv) < 8: + return False + + r._data, d = r._reply.parse_binary(self.data_recv[:8], + self, rawdict = True) + self.data_recv = self.data_recv[8:] + + # Loop around to see if we have got the additional data + # already + + +PixmapFormat = rq.Struct( rq.Card8('depth'), + rq.Card8('bits_per_pixel'), + rq.Card8('scanline_pad'), + rq.Pad(5) + ) + +VisualType = rq.Struct ( rq.Card32('visual_id'), + rq.Card8('visual_class'), + rq.Card8('bits_per_rgb_value'), + rq.Card16('colormap_entries'), + rq.Card32('red_mask'), + rq.Card32('green_mask'), + rq.Card32('blue_mask'), + rq.Pad(4) + ) + +Depth = rq.Struct( rq.Card8('depth'), + rq.Pad(1), + rq.LengthOf('visuals', 2), + rq.Pad(4), + rq.List('visuals', VisualType) + ) + +Screen = rq.Struct( rq.Window('root'), + rq.Colormap('default_colormap'), + rq.Card32('white_pixel'), + rq.Card32('black_pixel'), + rq.Card32('current_input_mask'), + rq.Card16('width_in_pixels'), + rq.Card16('height_in_pixels'), + rq.Card16('width_in_mms'), + rq.Card16('height_in_mms'), + rq.Card16('min_installed_maps'), + rq.Card16('max_installed_maps'), + rq.Card32('root_visual'), + rq.Card8('backing_store'), + rq.Card8('save_unders'), + rq.Card8('root_depth'), + rq.LengthOf('allowed_depths', 1), + rq.List('allowed_depths', Depth) + ) + + +class ConnectionSetupRequest(rq.GetAttrData): + _request = rq.Struct( rq.Set('byte_order', 1, (0x42, 0x6c)), + rq.Pad(1), + rq.Card16('protocol_major'), + rq.Card16('protocol_minor'), + rq.LengthOf('auth_prot_name', 2), + rq.LengthOf('auth_prot_data', 2), + rq.Pad(2), + rq.String8('auth_prot_name'), + rq.String8('auth_prot_data') ) + + _reply = rq.Struct ( rq.Card8('status'), + rq.Card8('reason_length'), + rq.Card16('protocol_major'), + rq.Card16('protocol_minor'), + rq.Card16('additional_length') ) + + _success_reply = rq.Struct( rq.Card32('release_number'), + rq.Card32('resource_id_base'), + rq.Card32('resource_id_mask'), + rq.Card32('motion_buffer_size'), + rq.LengthOf('vendor', 2), + rq.Card16('max_request_length'), + rq.LengthOf('roots', 1), + rq.LengthOf('pixmap_formats', 1), + rq.Card8('image_byte_order'), + rq.Card8('bitmap_format_bit_order'), + rq.Card8('bitmap_format_scanline_unit'), + rq.Card8('bitmap_format_scanline_pad'), + rq.Card8('min_keycode'), + rq.Card8('max_keycode'), + rq.Pad(4), + rq.String8('vendor'), + rq.List('pixmap_formats', PixmapFormat), + rq.List('roots', Screen), + ) + + + def __init__(self, display, *args, **keys): + self._binary = self._request.to_binary(*args, **keys) + self._data = None + + # Don't bother about locking, since no other threads have + # access to the display yet + + display.request_queue.append((self, True)) + + # However, we must lock send_and_recv, but we don't have + # to loop. + + display.send_recv_lock.acquire() + display.send_and_recv(request = -1) diff --git a/myenv/lib/python3.10/site-packages/Xlib/protocol/event.py b/myenv/lib/python3.10/site-packages/Xlib/protocol/event.py new file mode 100644 index 0000000..4524452 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/protocol/event.py @@ -0,0 +1,434 @@ +# Xlib.protocol.event -- definitions of core events +# +# Copyright (C) 2000-2002 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + + +# Xlib modules +from .. import X + +# Xlib.protocol modules +from . import rq + + +class AnyEvent(rq.Event): + _code = None + _fields = rq.Struct( rq.Card8('type'), + rq.Card8('detail'), + rq.Card16('sequence_number'), + rq.FixedBinary('data', 28), + ) + +class KeyButtonPointer(rq.Event): + _code = None + _fields = rq.Struct( rq.Card8('type'), + rq.Card8('detail'), + rq.Card16('sequence_number'), + rq.Card32('time'), + rq.Window('root'), + rq.Window('window'), + rq.Window('child', (X.NONE, )), + rq.Int16('root_x'), + rq.Int16('root_y'), + rq.Int16('event_x'), + rq.Int16('event_y'), + rq.Card16('state'), + rq.Card8('same_screen'), + rq.Pad(1), + ) + +class KeyPress(KeyButtonPointer): + _code = X.KeyPress + +class KeyRelease(KeyButtonPointer): + _code = X.KeyRelease + +class ButtonPress(KeyButtonPointer): + _code = X.ButtonPress + +class ButtonRelease(KeyButtonPointer): + _code = X.ButtonRelease + +class MotionNotify(KeyButtonPointer): + _code = X.MotionNotify + +class EnterLeave(rq.Event): + _code = None + _fields = rq.Struct( rq.Card8('type'), + rq.Card8('detail'), + rq.Card16('sequence_number'), + rq.Card32('time'), + rq.Window('root'), + rq.Window('window'), + rq.Window('child', (X.NONE, )), + rq.Int16('root_x'), + rq.Int16('root_y'), + rq.Int16('event_x'), + rq.Int16('event_y'), + rq.Card16('state'), + rq.Card8('mode'), + rq.Card8('flags'), + ) + +class EnterNotify(EnterLeave): + _code = X.EnterNotify + +class LeaveNotify(EnterLeave): + _code = X.LeaveNotify + + +class Focus(rq.Event): + _code = None + _fields = rq.Struct( rq.Card8('type'), + rq.Card8('detail'), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Card8('mode'), + rq.Pad(23), + ) + +class FocusIn(Focus): + _code = X.FocusIn + +class FocusOut(Focus): + _code = X.FocusOut + +class Expose(rq.Event): + _code = X.Expose + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Card16('x'), + rq.Card16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('count'), + rq.Pad(14), + ) + +class GraphicsExpose(rq.Event): + _code = X.GraphicsExpose + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Drawable('drawable'), + rq.Card16('x'), + rq.Card16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('minor_event'), + rq.Card16('count'), + rq.Card8('major_event'), + rq.Pad(11), + ) + +class NoExpose(rq.Event): + _code = X.NoExpose + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Drawable('window'), + rq.Card16('minor_event'), + rq.Card8('major_event'), + rq.Pad(21), + ) + +class VisibilityNotify(rq.Event): + _code = X.VisibilityNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Card8('state'), + rq.Pad(23), + ) + +class CreateNotify(rq.Event): + _code = X.CreateNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('parent'), + rq.Window('window'), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('border_width'), + rq.Card8('override'), + rq.Pad(9), + ) + +class DestroyNotify(rq.Event): + _code = X.DestroyNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('event'), + rq.Window('window'), + rq.Pad(20), + ) + +class UnmapNotify(rq.Event): + _code = X.UnmapNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('event'), + rq.Window('window'), + rq.Card8('from_configure'), + rq.Pad(19), + ) + +class MapNotify(rq.Event): + _code = X.MapNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('event'), + rq.Window('window'), + rq.Card8('override'), + rq.Pad(19), + ) + +class MapRequest(rq.Event): + _code = X.MapRequest + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('parent'), + rq.Window('window'), + rq.Pad(20), + ) + +class ReparentNotify(rq.Event): + _code = X.ReparentNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('event'), + rq.Window('window'), + rq.Window('parent'), + rq.Int16('x'), + rq.Int16('y'), + rq.Card8('override'), + rq.Pad(11), + ) + +class ConfigureNotify(rq.Event): + _code = X.ConfigureNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('event'), + rq.Window('window'), + rq.Window('above_sibling', (X.NONE, )), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('border_width'), + rq.Card8('override'), + rq.Pad(5), + ) + +class ConfigureRequest(rq.Event): + _code = X.ConfigureRequest + _fields = rq.Struct( rq.Card8('type'), + rq.Card8('stack_mode'), + rq.Card16('sequence_number'), + rq.Window('parent'), + rq.Window('window'), + rq.Window('sibling', (X.NONE, )), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('border_width'), + rq.Card16('value_mask'), + rq.Pad(4), + ) + +class GravityNotify(rq.Event): + _code = X.GravityNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('event'), + rq.Window('window'), + rq.Int16('x'), + rq.Int16('y'), + rq.Pad(16), + ) + +class ResizeRequest(rq.Event): + _code = X.ResizeRequest + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Card16('width'), + rq.Card16('height'), + rq.Pad(20), + ) + +class Circulate(rq.Event): + _code = None + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('event'), + rq.Window('window'), + rq.Pad(4), + rq.Card8('place'), + rq.Pad(15), + ) + +class CirculateNotify(Circulate): + _code = X.CirculateNotify + +class CirculateRequest(Circulate): + _code = X.CirculateRequest + +class PropertyNotify(rq.Event): + _code = X.PropertyNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Card32('atom'), + rq.Card32('time'), + rq.Card8('state'), + rq.Pad(15), + ) + +class SelectionClear(rq.Event): + _code = X.SelectionClear + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Card32('time'), + rq.Window('window'), + rq.Card32('atom'), + rq.Pad(16), + ) + +class SelectionRequest(rq.Event): + _code = X.SelectionRequest + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Card32('time'), + rq.Window('owner'), + rq.Window('requestor'), + rq.Card32('selection'), + rq.Card32('target'), + rq.Card32('property'), + rq.Pad(4), + ) + +class SelectionNotify(rq.Event): + _code = X.SelectionNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Card32('time'), + rq.Window('requestor'), + rq.Card32('selection'), + rq.Card32('target'), + rq.Card32('property'), + rq.Pad(8), + ) + +class ColormapNotify(rq.Event): + _code = X.ColormapNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Colormap('colormap', (X.NONE, )), + rq.Card8('new'), + rq.Card8('state'), + rq.Pad(18), + ) + +class MappingNotify(rq.Event): + _code = X.MappingNotify + _fields = rq.Struct( rq.Card8('type'), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.Card8('request'), + rq.Card8('first_keycode'), + rq.Card8('count'), + rq.Pad(25), + ) + +class ClientMessage(rq.Event): + _code = X.ClientMessage + _fields = rq.Struct( rq.Card8('type'), + rq.Format('data', 1), + rq.Card16('sequence_number'), + rq.Window('window'), + rq.Card32('client_type'), + rq.FixedPropertyData('data', 20), + ) + +class KeymapNotify(rq.Event): + _code = X.KeymapNotify + _fields = rq.Struct( rq.Card8('type'), + rq.FixedList('data', 31, rq.Card8Obj, pad = 0) + ) + + +event_class = { + X.KeyPress: KeyPress, + X.KeyRelease: KeyRelease, + X.ButtonPress: ButtonPress, + X.ButtonRelease: ButtonRelease, + X.MotionNotify: MotionNotify, + X.EnterNotify: EnterNotify, + X.LeaveNotify: LeaveNotify, + X.FocusIn: FocusIn, + X.FocusOut: FocusOut, + X.KeymapNotify: KeymapNotify, + X.Expose: Expose, + X.GraphicsExpose: GraphicsExpose, + X.NoExpose: NoExpose, + X.VisibilityNotify: VisibilityNotify, + X.CreateNotify: CreateNotify, + X.DestroyNotify: DestroyNotify, + X.UnmapNotify: UnmapNotify, + X.MapNotify: MapNotify, + X.MapRequest: MapRequest, + X.ReparentNotify: ReparentNotify, + X.ConfigureNotify: ConfigureNotify, + X.ConfigureRequest: ConfigureRequest, + X.GravityNotify: GravityNotify, + X.ResizeRequest: ResizeRequest, + X.CirculateNotify: CirculateNotify, + X.CirculateRequest: CirculateRequest, + X.PropertyNotify: PropertyNotify, + X.SelectionClear: SelectionClear, + X.SelectionRequest: SelectionRequest, + X.SelectionNotify: SelectionNotify, + X.ColormapNotify: ColormapNotify, + X.ClientMessage: ClientMessage, + X.MappingNotify: MappingNotify, + } diff --git a/myenv/lib/python3.10/site-packages/Xlib/protocol/request.py b/myenv/lib/python3.10/site-packages/Xlib/protocol/request.py new file mode 100644 index 0000000..608a768 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/protocol/request.py @@ -0,0 +1,1900 @@ +# Xlib.protocol.request -- definitions of core requests +# +# Copyright (C) 2000-2002 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + + +# Xlib modules +from .. import X + +# Xlib.protocol modules +from . import rq +from . import structs + + +class CreateWindow(rq.Request): + _request = rq.Struct( + rq.Opcode(1), + rq.Card8('depth'), + rq.RequestLength(), + rq.Window('wid'), + rq.Window('parent'), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('border_width'), + rq.Set('window_class', 2, (X.CopyFromParent, X.InputOutput, X.InputOnly)), + rq.Card32('visual'), + structs.WindowValues('attrs'), + ) + +class ChangeWindowAttributes(rq.Request): + _request = rq.Struct( + rq.Opcode(2), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window'), + structs.WindowValues('attrs'), + ) + +class GetWindowAttributes(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(3), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('backing_store'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('visual'), + rq.Card16('win_class'), + rq.Card8('bit_gravity'), + rq.Card8('win_gravity'), + rq.Card32('backing_bit_planes'), + rq.Card32('backing_pixel'), + rq.Card8('save_under'), + rq.Card8('map_is_installed'), + rq.Card8('map_state'), + rq.Card8('override_redirect'), + rq.Colormap('colormap', (X.NONE, )), + rq.Card32('all_event_masks'), + rq.Card32('your_event_mask'), + rq.Card16('do_not_propagate_mask'), + rq.Pad(2), + ) + +class DestroyWindow(rq.Request): + _request = rq.Struct( + rq.Opcode(4), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + +class DestroySubWindows(rq.Request): + _request = rq.Struct( + rq.Opcode(5), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + +class ChangeSaveSet(rq.Request): + _request = rq.Struct( + rq.Opcode(6), + rq.Set('mode', 1, (X.SetModeInsert, X.SetModeDelete)), + rq.RequestLength(), + rq.Window('window'), + ) + +class ReparentWindow(rq.Request): + _request = rq.Struct( + rq.Opcode(7), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window'), + rq.Window('parent'), + rq.Int16('x'), + rq.Int16('y'), + ) + +class MapWindow(rq.Request): + _request = rq.Struct( + rq.Opcode(8), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + +class MapSubwindows(rq.Request): + _request = rq.Struct( + rq.Opcode(9), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + +class UnmapWindow(rq.Request): + _request = rq.Struct( + rq.Opcode(10), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + +class UnmapSubwindows(rq.Request): + _request = rq.Struct( + rq.Opcode(11), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + +class ConfigureWindow(rq.Request): + _request = rq.Struct( + rq.Opcode(12), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window'), + rq.ValueList( 'attrs', 2, 2, + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Int16('border_width'), + rq.Window('sibling'), + rq.Set('stack_mode', 1, + (X.Above, X.Below, X.TopIf, + X.BottomIf, X.Opposite)) + ) + ) + +class CirculateWindow(rq.Request): + _request = rq.Struct( + rq.Opcode(13), + rq.Set('direction', 1, (X.RaiseLowest, X.LowerHighest)), + rq.RequestLength(), + rq.Window('window'), + ) + +class GetGeometry(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(14), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('drawable') + ) + + _reply = rq.Struct ( + rq.ReplyCode(), + rq.Card8('depth'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('root'), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card16('border_width'), + rq.Pad(10) + ) + +class QueryTree(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(15), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('root'), + rq.Window('parent', (X.NONE, )), + rq.LengthOf('children', 2), + rq.Pad(14), + rq.List('children', rq.WindowObj), + ) + +class InternAtom(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(16), + rq.Bool('only_if_exists'), + rq.RequestLength(), + rq.LengthOf('name', 2), + rq.Pad(2), + rq.String8('name'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('atom'), + rq.Pad(20), + ) + + +class GetAtomName(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(17), + rq.Pad(1), + rq.RequestLength(), + rq.Card32('atom') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('name', 2), + rq.Pad(22), + rq.String8('name'), + ) + +class ChangeProperty(rq.Request): + _request = rq.Struct( + rq.Opcode(18), + rq.Set('mode', 1, (X.PropModeReplace, X.PropModePrepend, X.PropModeAppend)), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('property'), + rq.Card32('type'), + rq.Format('data', 1), + rq.Pad(3), + rq.LengthOf('data', 4), + rq.PropertyData('data'), + ) + +class DeleteProperty(rq.Request): + _request = rq.Struct( + rq.Opcode(19), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('property'), + ) + +class GetProperty(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(20), + rq.Bool('delete'), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('property'), + rq.Card32('type'), + rq.Card32('long_offset'), + rq.Card32('long_length'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Format('value', 1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('property_type'), + rq.Card32('bytes_after'), + rq.LengthOf('value', 4), + rq.Pad(12), + rq.PropertyData('value'), + ) + +class ListProperties(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(21), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('atoms', 2), + rq.Pad(22), + rq.List('atoms', rq.Card32Obj), + ) + +class SetSelectionOwner(rq.Request): + _request = rq.Struct( + rq.Opcode(22), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('selection'), + rq.Card32('time'), + ) + +class GetSelectionOwner(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(23), + rq.Pad(1), + rq.RequestLength(), + rq.Card32('selection') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('owner', (X.NONE, )), + rq.Pad(20), + ) + +class ConvertSelection(rq.Request): + _request = rq.Struct( + rq.Opcode(24), + rq.Pad(1), + rq.RequestLength(), + rq.Window('requestor'), + rq.Card32('selection'), + rq.Card32('target'), + rq.Card32('property'), + rq.Card32('time'), + ) + +class SendEvent(rq.Request): + _request = rq.Struct( + rq.Opcode(25), + rq.Bool('propagate'), + rq.RequestLength(), + rq.Window('destination'), + rq.Card32('event_mask'), + rq.EventField('event'), + ) + +class GrabPointer(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(26), + rq.Bool('owner_events'), + rq.RequestLength(), + rq.Window('grab_window'), + rq.Card16('event_mask'), + rq.Set('pointer_mode', 1, (X.GrabModeSync, X.GrabModeAsync)), + rq.Set('keyboard_mode', 1, (X.GrabModeSync, X.GrabModeAsync)), + rq.Window('confine_to', (X.NONE, )), + rq.Cursor('cursor', (X.NONE, )), + rq.Card32('time'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Pad(24), + ) + +class UngrabPointer(rq.Request): + _request = rq.Struct( + rq.Opcode(27), + rq.Pad(1), + rq.RequestLength(), + rq.Card32('time') + ) + +class GrabButton(rq.Request): + _request = rq.Struct( + rq.Opcode(28), + rq.Bool('owner_events'), + rq.RequestLength(), + rq.Window('grab_window'), + rq.Card16('event_mask'), + rq.Set('pointer_mode', 1, (X.GrabModeSync, X.GrabModeAsync)), + rq.Set('keyboard_mode', 1, (X.GrabModeSync, X.GrabModeAsync)), + rq.Window('confine_to', (X.NONE, )), + rq.Cursor('cursor', (X.NONE, )), + rq.Card8('button'), + rq.Pad(1), + rq.Card16('modifiers'), + ) + +class UngrabButton(rq.Request): + _request = rq.Struct( + rq.Opcode(29), + rq.Card8('button'), + rq.RequestLength(), + rq.Window('grab_window'), + rq.Card16('modifiers'), + rq.Pad(2), + ) + +class ChangeActivePointerGrab(rq.Request): + _request = rq.Struct( + rq.Opcode(30), + rq.Pad(1), + rq.RequestLength(), + rq.Cursor('cursor'), + rq.Card32('time'), + rq.Card16('event_mask'), + rq.Pad(2), + ) + +class GrabKeyboard(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(31), + rq.Bool('owner_events'), + rq.RequestLength(), + rq.Window('grab_window'), + rq.Card32('time'), + rq.Set('pointer_mode', 1, (X.GrabModeSync, X.GrabModeAsync)), + rq.Set('keyboard_mode', 1, (X.GrabModeSync, X.GrabModeAsync)), + rq.Pad(2), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Pad(24), + ) + +class UngrabKeyboard(rq.Request): + _request = rq.Struct( + rq.Opcode(32), + rq.Pad(1), + rq.RequestLength(), + rq.Card32('time') + ) + +class GrabKey(rq.Request): + _request = rq.Struct( + rq.Opcode(33), + rq.Bool('owner_events'), + rq.RequestLength(), + rq.Window('grab_window'), + rq.Card16('modifiers'), + rq.Card8('key'), + rq.Set('pointer_mode', 1, (X.GrabModeSync, X.GrabModeAsync)), + rq.Set('keyboard_mode', 1, (X.GrabModeSync, X.GrabModeAsync)), + rq.Pad(3), + ) + +class UngrabKey(rq.Request): + _request = rq.Struct( + rq.Opcode(34), + rq.Card8('key'), + rq.RequestLength(), + rq.Window('grab_window'), + rq.Card16('modifiers'), + rq.Pad(2), + ) + +class AllowEvents(rq.Request): + _request = rq.Struct( + rq.Opcode(35), + rq.Set('mode', 1, (X.AsyncPointer, + X.SyncPointer, + X.ReplayPointer, + X.AsyncKeyboard, + X.SyncKeyboard, + X.ReplayKeyboard, + X.AsyncBoth, + X.SyncBoth)), + rq.RequestLength(), + rq.Card32('time'), + ) + +class GrabServer(rq.Request): + _request = rq.Struct( + rq.Opcode(36), + rq.Pad(1), + rq.RequestLength(), + ) + +class UngrabServer(rq.Request): + _request = rq.Struct( + rq.Opcode(37), + rq.Pad(1), + rq.RequestLength(), + ) + +class QueryPointer(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(38), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('same_screen'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('root'), + rq.Window('child', (X.NONE, )), + rq.Int16('root_x'), + rq.Int16('root_y'), + rq.Int16('win_x'), + rq.Int16('win_y'), + rq.Card16('mask'), + rq.Pad(6), + ) + +class GetMotionEvents(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(39), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window'), + rq.Card32('start'), + rq.Card32('stop'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('events', 4), + rq.Pad(20), + rq.List('events', structs.TimeCoord), + ) + +class TranslateCoords(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(40), + rq.Pad(1), + rq.RequestLength(), + rq.Window('src_wid'), + rq.Window('dst_wid'), + rq.Int16('src_x'), + rq.Int16('src_y'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('same_screen'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('child', (X.NONE, )), + rq.Int16('x'), + rq.Int16('y'), + rq.Pad(16), + ) + +class WarpPointer(rq.Request): + _request = rq.Struct( + rq.Opcode(41), + rq.Pad(1), + rq.RequestLength(), + rq.Window('src_window'), + rq.Window('dst_window'), + rq.Int16('src_x'), + rq.Int16('src_y'), + rq.Card16('src_width'), + rq.Card16('src_height'), + rq.Int16('dst_x'), + rq.Int16('dst_y'), + ) + +class SetInputFocus(rq.Request): + _request = rq.Struct( + rq.Opcode(42), + rq.Set('revert_to', 1, (X.RevertToNone, X.RevertToPointerRoot, + X.RevertToParent)), + rq.RequestLength(), + rq.Window('focus'), + rq.Card32('time'), + ) + +class GetInputFocus(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(43), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('revert_to'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Window('focus', (X.NONE, X.PointerRoot)), + rq.Pad(20), + ) + +class QueryKeymap(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(44), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.FixedList('map', 32, rq.Card8Obj), + ) + + +class OpenFont(rq.Request): + _request = rq.Struct( + rq.Opcode(45), + rq.Pad(1), + rq.RequestLength(), + rq.Font('fid'), + rq.LengthOf('name', 2), + rq.Pad(2), + rq.String8('name'), + ) + +class CloseFont(rq.Request): + _request = rq.Struct( + rq.Opcode(46), + rq.Pad(1), + rq.RequestLength(), + rq.Font('font') + ) + +class QueryFont(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(47), + rq.Pad(1), + rq.RequestLength(), + rq.Fontable('font') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Object('min_bounds', structs.CharInfo), + rq.Pad(4), + rq.Object('max_bounds', structs.CharInfo), + rq.Pad(4), + rq.Card16('min_char_or_byte2'), + rq.Card16('max_char_or_byte2'), + rq.Card16('default_char'), + rq.LengthOf('properties', 2), + rq.Card8('draw_direction'), + rq.Card8('min_byte1'), + rq.Card8('max_byte1'), + rq.Card8('all_chars_exist'), + rq.Int16('font_ascent'), + rq.Int16('font_descent'), + rq.LengthOf('char_infos', 4), + rq.List('properties', structs.FontProp), + rq.List('char_infos', structs.CharInfo), + ) + +class QueryTextExtents(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(48), + rq.OddLength('string'), + rq.RequestLength(), + rq.Fontable('font'), + rq.String16('string'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('draw_direction'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Int16('font_ascent'), + rq.Int16('font_descent'), + rq.Int16('overall_ascent'), + rq.Int16('overall_descent'), + rq.Int32('overall_width'), + rq.Int32('overall_left'), + rq.Int32('overall_right'), + rq.Pad(4), + ) + +class ListFonts(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(49), + rq.Pad(1), + rq.RequestLength(), + rq.Card16('max_names'), + rq.LengthOf('pattern', 2), + rq.String8('pattern'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('fonts', 2), + rq.Pad(22), + rq.List('fonts', rq.Str), + ) + + +class ListFontsWithInfo(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(50), + rq.Pad(1), + rq.RequestLength(), + rq.Card16('max_names'), + rq.LengthOf('pattern', 2), + rq.String8('pattern'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.LengthOf('name', 1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Object('min_bounds', structs.CharInfo), + rq.Pad(4), + rq.Object('max_bounds', structs.CharInfo), + rq.Pad(4), + rq.Card16('min_char_or_byte2'), + rq.Card16('max_char_or_byte2'), + rq.Card16('default_char'), + rq.LengthOf('properties', 2), + rq.Card8('draw_direction'), + rq.Card8('min_byte1'), + rq.Card8('max_byte1'), + rq.Card8('all_chars_exist'), + rq.Int16('font_ascent'), + rq.Int16('font_descent'), + rq.Card32('replies_hint'), + rq.List('properties', structs.FontProp), + rq.String8('name'), + ) + + + # Somebody must have smoked some really wicked weed when they + # defined the ListFontsWithInfo request: + # The server sends a reply for _each_ matching font... + # It then sends a special reply (name length == 0) to indicate + # that there are no more fonts in the reply. + + # This means that we have to do some special parsing to see if + # we have got the end-of-reply reply. If we haven't, we + # have to reinsert the request in the front of the + # display.sent_request queue to catch the next response. + + # Bastards. + + def __init__(self, *args, **keys): + self._fonts = [] + rq.ReplyRequest.__init__(self, *args, **keys) + + def _parse_response(self, data): + + if ord(data[1]) == 0: + self._response_lock.acquire() + self._data = self._fonts + del self._fonts + self._response_lock.release() + return + + r, d = self._reply.parse_binary(data) + self._fonts.append(r) + + self._display.sent_requests.insert(0, self) + + + # Override the default __getattr__, since it isn't usable for + # the list reply. Instead provide a __getitem__ and a __len__. + + def __getattr__(self, attr): + raise AttributeError(attr) + + def __getitem__(self, item): + return self._data[item] + + def __len__(self): + return len(self._data) + + +class SetFontPath(rq.Request): + _request = rq.Struct( + rq.Opcode(51), + rq.Pad(1), + rq.RequestLength(), + rq.LengthOf('path', 2), + rq.Pad(2), + rq.List('path', rq.Str), + ) + +class GetFontPath(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(52), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('paths', 2), + rq.Pad(22), + rq.List('paths', rq.Str), + ) + +class CreatePixmap(rq.Request): + _request = rq.Struct( + rq.Opcode(53), + rq.Card8('depth'), + rq.RequestLength(), + rq.Pixmap('pid'), + rq.Drawable('drawable'), + rq.Card16('width'), + rq.Card16('height'), + ) + +class FreePixmap(rq.Request): + _request = rq.Struct( + rq.Opcode(54), + rq.Pad(1), + rq.RequestLength(), + rq.Pixmap('pixmap') + ) + +class CreateGC(rq.Request): + _request = rq.Struct( + rq.Opcode(55), + rq.Pad(1), + rq.RequestLength(), + rq.GC('cid'), + rq.Drawable('drawable'), + structs.GCValues('attrs'), + ) + +class ChangeGC(rq.Request): + _request = rq.Struct( + rq.Opcode(56), + rq.Pad(1), + rq.RequestLength(), + rq.GC('gc'), + structs.GCValues('attrs'), + ) + +class CopyGC(rq.Request): + _request = rq.Struct( + rq.Opcode(57), + rq.Pad(1), + rq.RequestLength(), + rq.GC('src_gc'), + rq.GC('dst_gc'), + rq.Card32('mask'), + ) + +class SetDashes(rq.Request): + _request = rq.Struct( + rq.Opcode(58), + rq.Pad(1), + rq.RequestLength(), + rq.GC('gc'), + rq.Card16('dash_offset'), + rq.LengthOf('dashes', 2), + rq.List('dashes', rq.Card8Obj), + ) + +class SetClipRectangles(rq.Request): + _request = rq.Struct( + rq.Opcode(59), + rq.Set('ordering', 1, (X.Unsorted, X.YSorted, X.YXSorted, X.YXBanded)), + rq.RequestLength(), + rq.GC('gc'), + rq.Int16('x_origin'), + rq.Int16('y_origin'), + rq.List('rectangles', structs.Rectangle), + ) + +class FreeGC(rq.Request): + _request = rq.Struct( + rq.Opcode(60), + rq.Pad(1), + rq.RequestLength(), + rq.GC('gc') + ) + +class ClearArea(rq.Request): + _request = rq.Struct( + rq.Opcode(61), + rq.Bool('exposures'), + rq.RequestLength(), + rq.Window('window'), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + ) + +class CopyArea(rq.Request): + _request = rq.Struct( + rq.Opcode(62), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('src_drawable'), + rq.Drawable('dst_drawable'), + rq.GC('gc'), + rq.Int16('src_x'), + rq.Int16('src_y'), + rq.Int16('dst_x'), + rq.Int16('dst_y'), + rq.Card16('width'), + rq.Card16('height'), + ) + +class CopyPlane(rq.Request): + _request = rq.Struct( + rq.Opcode(63), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('src_drawable'), + rq.Drawable('dst_drawable'), + rq.GC('gc'), + rq.Int16('src_x'), + rq.Int16('src_y'), + rq.Int16('dst_x'), + rq.Int16('dst_y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card32('bit_plane'), + ) + +class PolyPoint(rq.Request): + _request = rq.Struct( + rq.Opcode(64), + rq.Set('coord_mode', 1, (X.CoordModeOrigin, X.CoordModePrevious)), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.List('points', structs.Point), + ) + +class PolyLine(rq.Request): + _request = rq.Struct( + rq.Opcode(65), + rq.Set('coord_mode', 1, (X.CoordModeOrigin, X.CoordModePrevious)), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.List('points', structs.Point), + ) + + +class PolySegment(rq.Request): + _request = rq.Struct( + rq.Opcode(66), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.List('segments', structs.Segment), + ) + + +class PolyRectangle(rq.Request): + _request = rq.Struct( + rq.Opcode(67), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.List('rectangles', structs.Rectangle), + ) + +class PolyArc(rq.Request): + _request = rq.Struct( + rq.Opcode(68), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.List('arcs', structs.Arc), + ) + +class FillPoly(rq.Request): + _request = rq.Struct( + rq.Opcode(69), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.Set('shape', 1, (X.Complex, X.Nonconvex, X.Convex)), + rq.Set('coord_mode', 1, (X.CoordModeOrigin, X.CoordModePrevious)), + rq.Pad(2), + rq.List('points', structs.Point), + ) + +class PolyFillRectangle(rq.Request): + _request = rq.Struct( + rq.Opcode(70), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.List('rectangles', structs.Rectangle), + ) + +class PolyFillArc(rq.Request): + _request = rq.Struct( + rq.Opcode(71), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.List('arcs', structs.Arc), + ) + +class PutImage(rq.Request): + _request = rq.Struct( + rq.Opcode(72), + rq.Set('format', 1, (X.XYBitmap, X.XYPixmap, X.ZPixmap)), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.Card16('width'), + rq.Card16('height'), + rq.Int16('dst_x'), + rq.Int16('dst_y'), + rq.Card8('left_pad'), + rq.Card8('depth'), + rq.Pad(2), + rq.Binary('data'), + ) + +class GetImage(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(73), + rq.Set('format', 1, (X.XYPixmap, X.ZPixmap)), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Card32('plane_mask'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('depth'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('visual'), + rq.Pad(20), + rq.Binary('data'), + ) + +class PolyText8(rq.Request): + _request = rq.Struct( + rq.Opcode(74), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.Int16('x'), + rq.Int16('y'), + rq.TextElements8('items'), + ) + +class PolyText16(rq.Request): + _request = rq.Struct( + rq.Opcode(75), + rq.Pad(1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.Int16('x'), + rq.Int16('y'), + rq.TextElements16('items'), + ) + +class ImageText8(rq.Request): + _request = rq.Struct( + rq.Opcode(76), + rq.LengthOf('string', 1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.Int16('x'), + rq.Int16('y'), + rq.String8('string'), + ) + +class ImageText16(rq.Request): + _request = rq.Struct( + rq.Opcode(77), + rq.LengthOf('string', 1), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.GC('gc'), + rq.Int16('x'), + rq.Int16('y'), + rq.String16('string'), + ) + +class CreateColormap(rq.Request): + _request = rq.Struct( + rq.Opcode(78), + rq.Set('alloc', 1, (X.AllocNone, X.AllocAll)), + rq.RequestLength(), + rq.Colormap('mid'), + rq.Window('window'), + rq.Card32('visual'), + ) + +class FreeColormap(rq.Request): + _request = rq.Struct( + rq.Opcode(79), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('cmap') + ) + +class CopyColormapAndFree(rq.Request): + _request = rq.Struct( + rq.Opcode(80), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('mid'), + rq.Colormap('src_cmap'), + ) + +class InstallColormap(rq.Request): + _request = rq.Struct( + rq.Opcode(81), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('cmap') + ) + +class UninstallColormap(rq.Request): + _request = rq.Struct( + rq.Opcode(82), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('cmap') + ) + +class ListInstalledColormaps(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(83), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('cmaps', 2), + rq.Pad(22), + rq.List('cmaps', rq.ColormapObj), + ) + +class AllocColor(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(84), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('cmap'), + rq.Card16('red'), + rq.Card16('green'), + rq.Card16('blue'), + rq.Pad(2), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('red'), + rq.Card16('green'), + rq.Card16('blue'), + rq.Pad(2), + rq.Card32('pixel'), + rq.Pad(12), + ) + +class AllocNamedColor(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(85), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('cmap'), + rq.LengthOf('name', 2), + rq.Pad(2), + rq.String8('name'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('pixel'), + rq.Card16('exact_red'), + rq.Card16('exact_green'), + rq.Card16('exact_blue'), + rq.Card16('screen_red'), + rq.Card16('screen_green'), + rq.Card16('screen_blue'), + rq.Pad(8), + ) + +class AllocColorCells(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(86), + rq.Bool('contiguous'), + rq.RequestLength(), + rq.Colormap('cmap'), + rq.Card16('colors'), + rq.Card16('planes'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('pixels', 2), + rq.LengthOf('masks', 2), + rq.Pad(20), + rq.List('pixels', rq.Card32Obj), + rq.List('masks', rq.Card32Obj), + ) + +class AllocColorPlanes(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(87), + rq.Bool('contiguous'), + rq.RequestLength(), + rq.Colormap('cmap'), + rq.Card16('colors'), + rq.Card16('red'), + rq.Card16('green'), + rq.Card16('blue'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('pixels', 2), + rq.Pad(2), + rq.Card32('red_mask'), + rq.Card32('green_mask'), + rq.Card32('blue_mask'), + rq.Pad(8), + rq.List('pixels', rq.Card32Obj), + ) + +class FreeColors(rq.Request): + _request = rq.Struct( + rq.Opcode(88), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('cmap'), + rq.Card32('plane_mask'), + rq.List('pixels', rq.Card32Obj), + ) + +class StoreColors(rq.Request): + _request = rq.Struct( + rq.Opcode(89), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('cmap'), + rq.List('items', structs.ColorItem), + ) + +class StoreNamedColor(rq.Request): + _request = rq.Struct( + rq.Opcode(90), + rq.Card8('flags'), + rq.RequestLength(), + rq.Colormap('cmap'), + rq.Card32('pixel'), + rq.LengthOf('name', 2), + rq.Pad(2), + rq.String8('name'), + ) + +class QueryColors(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(91), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('cmap'), + rq.List('pixels', rq.Card32Obj), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('colors', 2), + rq.Pad(22), + rq.List('colors', structs.RGB), + ) + +class LookupColor(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(92), + rq.Pad(1), + rq.RequestLength(), + rq.Colormap('cmap'), + rq.LengthOf('name', 2), + rq.Pad(2), + rq.String8('name'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('exact_red'), + rq.Card16('exact_green'), + rq.Card16('exact_blue'), + rq.Card16('screen_red'), + rq.Card16('screen_green'), + rq.Card16('screen_blue'), + rq.Pad(12), + ) + + +class CreateCursor(rq.Request): + _request = rq.Struct( + rq.Opcode(93), + rq.Pad(1), + rq.RequestLength(), + rq.Cursor('cid'), + rq.Pixmap('source'), + rq.Pixmap('mask'), + rq.Card16('fore_red'), + rq.Card16('fore_green'), + rq.Card16('fore_blue'), + rq.Card16('back_red'), + rq.Card16('back_green'), + rq.Card16('back_blue'), + rq.Card16('x'), + rq.Card16('y'), + ) + +class CreateGlyphCursor(rq.Request): + _request = rq.Struct( + rq.Opcode(94), + rq.Pad(1), + rq.RequestLength(), + rq.Cursor('cid'), + rq.Font('source'), + rq.Font('mask'), + rq.Card16('source_char'), + rq.Card16('mask_char'), + rq.Card16('fore_red'), + rq.Card16('fore_green'), + rq.Card16('fore_blue'), + rq.Card16('back_red'), + rq.Card16('back_green'), + rq.Card16('back_blue'), + ) + +class FreeCursor(rq.Request): + _request = rq.Struct( + rq.Opcode(95), + rq.Pad(1), + rq.RequestLength(), + rq.Cursor('cursor') + ) + +class RecolorCursor(rq.Request): + _request = rq.Struct( + rq.Opcode(96), + rq.Pad(1), + rq.RequestLength(), + rq.Cursor('cursor'), + rq.Card16('fore_red'), + rq.Card16('fore_green'), + rq.Card16('fore_blue'), + rq.Card16('back_red'), + rq.Card16('back_green'), + rq.Card16('back_blue'), + ) + +class QueryBestSize(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(97), + rq.Set('item_class', 1, (X.CursorShape, X.TileShape, X.StippleShape)), + rq.RequestLength(), + rq.Drawable('drawable'), + rq.Card16('width'), + rq.Card16('height'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('width'), + rq.Card16('height'), + rq.Pad(20), + ) + +class QueryExtension(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(98), + rq.Pad(1), + rq.RequestLength(), + rq.LengthOf('name', 2), + rq.Pad(2), + rq.String8('name'), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card8('present'), + rq.Card8('major_opcode'), + rq.Card8('first_event'), + rq.Card8('first_error'), + rq.Pad(20), + ) + +class ListExtensions(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(99), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.LengthOf('names', 1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Pad(24), + rq.List('names', rq.Str), + ) + +class ChangeKeyboardMapping(rq.Request): + _request = rq.Struct( + rq.Opcode(100), + rq.LengthOf('keysyms', 1), + rq.RequestLength(), + rq.Card8('first_keycode'), + rq.Format('keysyms', 1), + rq.Pad(2), + rq.KeyboardMapping('keysyms'), + ) + +class GetKeyboardMapping(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(101), + rq.Pad(1), + rq.RequestLength(), + rq.Card8('first_keycode'), + rq.Card8('count'), + rq.Pad(2), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Format('keysyms', 1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Pad(24), + rq.KeyboardMapping('keysyms'), + ) + + +class ChangeKeyboardControl(rq.Request): + _request = rq.Struct( + rq.Opcode(102), + rq.Pad(1), + rq.RequestLength(), + rq.ValueList( 'attrs', 4, 0, + rq.Int8('key_click_percent'), + rq.Int8('bell_percent'), + rq.Int16('bell_pitch'), + rq.Int16('bell_duration'), + rq.Card8('led'), + rq.Set('led_mode', 1, (X.LedModeOff, X.LedModeOn)), + rq.Card8('key'), + rq.Set('auto_repeat_mode', 1, (X.AutoRepeatModeOff, + X.AutoRepeatModeOn, + X.AutoRepeatModeDefault)) + ) + ) + +class GetKeyboardControl(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(103), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('global_auto_repeat'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card32('led_mask'), + rq.Card8('key_click_percent'), + rq.Card8('bell_percent'), + rq.Card16('bell_pitch'), + rq.Card16('bell_duration'), + rq.Pad(2), + rq.FixedList('auto_repeats', 32, rq.Card8Obj), + ) + +class Bell(rq.Request): + _request = rq.Struct( + rq.Opcode(104), + rq.Int8('percent'), + rq.RequestLength(), + ) + +class ChangePointerControl(rq.Request): + _request = rq.Struct( + rq.Opcode(105), + rq.Pad(1), + rq.RequestLength(), + rq.Int16('accel_num'), + rq.Int16('accel_denum'), + rq.Int16('threshold'), + rq.Bool('do_accel'), + rq.Bool('do_thresh'), + ) + +class GetPointerControl(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(106), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('accel_num'), + rq.Card16('accel_denom'), + rq.Card16('threshold'), + rq.Pad(18), + ) + +class SetScreenSaver(rq.Request): + _request = rq.Struct( + rq.Opcode(107), + rq.Pad(1), + rq.RequestLength(), + rq.Int16('timeout'), + rq.Int16('interval'), + rq.Set('prefer_blank', 1, (X.DontPreferBlanking, + X.PreferBlanking, + X.DefaultBlanking)), + rq.Set('allow_exposures', 1, (X.DontAllowExposures, + X.AllowExposures, + X.DefaultExposures)), + rq.Pad(2), + ) + +class GetScreenSaver(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(108), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Pad(1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Card16('timeout'), + rq.Card16('interval'), + rq.Card8('prefer_blanking'), + rq.Card8('allow_exposures'), + rq.Pad(18), + ) + +class ChangeHosts(rq.Request): + _request = rq.Struct( + rq.Opcode(109), + rq.Set('mode', 1, (X.HostInsert, X.HostDelete)), + rq.RequestLength(), + rq.Set('host_family', 1, (X.FamilyInternet, X.FamilyDECnet, X.FamilyChaos, + X.FamilyServerInterpreted, X.FamilyInternetV6)), + rq.Pad(1), + rq.LengthOf('host', 2), + rq.List('host', rq.Card8Obj) + ) + +class ListHosts(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(110), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('mode'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.LengthOf('hosts', 2), + rq.Pad(22), + rq.List('hosts', structs.Host), + ) + +class SetAccessControl(rq.Request): + _request = rq.Struct( + rq.Opcode(111), + rq.Set('mode', 1, (X.DisableAccess, X.EnableAccess)), + rq.RequestLength(), + ) + +class SetCloseDownMode(rq.Request): + _request = rq.Struct( + rq.Opcode(112), + rq.Set('mode', 1, (X.DestroyAll, X.RetainPermanent, X.RetainTemporary)), + rq.RequestLength(), + ) + +class KillClient(rq.Request): + _request = rq.Struct( + rq.Opcode(113), + rq.Pad(1), + rq.RequestLength(), + rq.Resource('resource') + ) + +class RotateProperties(rq.Request): + _request = rq.Struct( + rq.Opcode(114), + rq.Pad(1), + rq.RequestLength(), + rq.Window('window'), + rq.LengthOf('properties', 2), + rq.Int16('delta'), + rq.List('properties', rq.Card32Obj), + ) + +class ForceScreenSaver(rq.Request): + _request = rq.Struct( + rq.Opcode(115), + rq.Set('mode', 1, (X.ScreenSaverReset, X.ScreenSaverActive)), + rq.RequestLength(), + ) + +class SetPointerMapping(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(116), + rq.LengthOf('map', 1), + rq.RequestLength(), + rq.List('map', rq.Card8Obj), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Pad(24), + ) + +class GetPointerMapping(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(117), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.LengthOf('map', 1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Pad(24), + rq.List('map', rq.Card8Obj), + ) + +class SetModifierMapping(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(118), + rq.Format('keycodes', 1), + rq.RequestLength(), + rq.ModifierMapping('keycodes') + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Card8('status'), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Pad(24), + ) + +class GetModifierMapping(rq.ReplyRequest): + _request = rq.Struct( + rq.Opcode(119), + rq.Pad(1), + rq.RequestLength(), + ) + + _reply = rq.Struct( + rq.ReplyCode(), + rq.Format('keycodes', 1), + rq.Card16('sequence_number'), + rq.ReplyLength(), + rq.Pad(24), + rq.ModifierMapping('keycodes') + ) + +class NoOperation(rq.Request): + _request = rq.Struct( + rq.Opcode(127), + rq.Pad(1), + rq.RequestLength(), + ) + + +major_codes = { + 1: CreateWindow, + 2: ChangeWindowAttributes, + 3: GetWindowAttributes, + 4: DestroyWindow, + 5: DestroySubWindows, + 6: ChangeSaveSet, + 7: ReparentWindow, + 8: MapWindow, + 9: MapSubwindows, + 10: UnmapWindow, + 11: UnmapSubwindows, + 12: ConfigureWindow, + 13: CirculateWindow, + 14: GetGeometry, + 15: QueryTree, + 16: InternAtom, + 17: GetAtomName, + 18: ChangeProperty, + 19: DeleteProperty, + 20: GetProperty, + 21: ListProperties, + 22: SetSelectionOwner, + 23: GetSelectionOwner, + 24: ConvertSelection, + 25: SendEvent, + 26: GrabPointer, + 27: UngrabPointer, + 28: GrabButton, + 29: UngrabButton, + 30: ChangeActivePointerGrab, + 31: GrabKeyboard, + 32: UngrabKeyboard, + 33: GrabKey, + 34: UngrabKey, + 35: AllowEvents, + 36: GrabServer, + 37: UngrabServer, + 38: QueryPointer, + 39: GetMotionEvents, + 40: TranslateCoords, + 41: WarpPointer, + 42: SetInputFocus, + 43: GetInputFocus, + 44: QueryKeymap, + 45: OpenFont, + 46: CloseFont, + 47: QueryFont, + 48: QueryTextExtents, + 49: ListFonts, + 50: ListFontsWithInfo, + 51: SetFontPath, + 52: GetFontPath, + 53: CreatePixmap, + 54: FreePixmap, + 55: CreateGC, + 56: ChangeGC, + 57: CopyGC, + 58: SetDashes, + 59: SetClipRectangles, + 60: FreeGC, + 61: ClearArea, + 62: CopyArea, + 63: CopyPlane, + 64: PolyPoint, + 65: PolyLine, + 66: PolySegment, + 67: PolyRectangle, + 68: PolyArc, + 69: FillPoly, + 70: PolyFillRectangle, + 71: PolyFillArc, + 72: PutImage, + 73: GetImage, + 74: PolyText8, + 75: PolyText16, + 76: ImageText8, + 77: ImageText16, + 78: CreateColormap, + 79: FreeColormap, + 80: CopyColormapAndFree, + 81: InstallColormap, + 82: UninstallColormap, + 83: ListInstalledColormaps, + 84: AllocColor, + 85: AllocNamedColor, + 86: AllocColorCells, + 87: AllocColorPlanes, + 88: FreeColors, + 89: StoreColors, + 90: StoreNamedColor, + 91: QueryColors, + 92: LookupColor, + 93: CreateCursor, + 94: CreateGlyphCursor, + 95: FreeCursor, + 96: RecolorCursor, + 97: QueryBestSize, + 98: QueryExtension, + 99: ListExtensions, + 100: ChangeKeyboardMapping, + 101: GetKeyboardMapping, + 102: ChangeKeyboardControl, + 103: GetKeyboardControl, + 104: Bell, + 105: ChangePointerControl, + 106: GetPointerControl, + 107: SetScreenSaver, + 108: GetScreenSaver, + 109: ChangeHosts, + 110: ListHosts, + 111: SetAccessControl, + 112: SetCloseDownMode, + 113: KillClient, + 114: RotateProperties, + 115: ForceScreenSaver, + 116: SetPointerMapping, + 117: GetPointerMapping, + 118: SetModifierMapping, + 119: GetModifierMapping, + 127: NoOperation, + } diff --git a/myenv/lib/python3.10/site-packages/Xlib/protocol/rq.py b/myenv/lib/python3.10/site-packages/Xlib/protocol/rq.py new file mode 100644 index 0000000..c54804e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/protocol/rq.py @@ -0,0 +1,1463 @@ +# Xlib.protocol.rq -- structure primitives for request, events and errors +# +# Copyright (C) 2000-2002 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +# Standard modules +import sys +import traceback +import struct +from array import array + +# Python 2/3 compatibility. +from six import PY3, binary_type, byte2int, indexbytes, iterbytes + +# Xlib modules +from .. import X +from ..support import lock + + +def decode_string(bs): + return bs.decode('latin1') + +if PY3: + def encode_array(a): + return a.tobytes() +else: + def encode_array(a): + return a.tostring() + + +class BadDataError(Exception): pass + +# These are struct codes, we know their byte sizes + +signed_codes = { 1: 'b', 2: 'h', 4: 'l' } +unsigned_codes = { 1: 'B', 2: 'H', 4: 'L' } + + +# Unfortunately, we don't know the array sizes of B, H and L, since +# these use the underlying architecture's size for a char, short and +# long. Therefore we probe for their sizes, and additionally create +# a mapping that translates from struct codes to array codes. +# +# Bleah. + +array_unsigned_codes = { } +struct_to_array_codes = { } + +for c in 'bhil': + size = array(c).itemsize + array_unsigned_codes[size] = c.upper() + try: + struct_to_array_codes[signed_codes[size]] = c + struct_to_array_codes[unsigned_codes[size]] = c.upper() + except KeyError: + pass + +# print array_unsigned_codes, struct_to_array_codes + + +class Field(object): + """Field objects represent the data fields of a Struct. + + Field objects must have the following attributes: + + name -- the field name, or None + structcode -- the struct codes representing this field + structvalues -- the number of values encodes by structcode + + Additionally, these attributes should either be None or real methods: + + check_value -- check a value before it is converted to binary + parse_value -- parse a value after it has been converted from binary + + If one of these attributes are None, no check or additional + parsings will be done one values when converting to or from binary + form. Otherwise, the methods should have the following behaviour: + + newval = check_value(val) + Check that VAL is legal when converting to binary form. The + value can also be converted to another Python value. In any + case, return the possibly new value. NEWVAL should be a + single Python value if structvalues is 1, a tuple of + structvalues elements otherwise. + + newval = parse_value(val, display) + VAL is an unpacked Python value, which now can be further + refined. DISPLAY is the current Display object. Return the + new value. VAL will be a single value if structvalues is 1, + a tuple of structvalues elements otherwise. + + If `structcode' is None the Field must have the method + f.parse_binary_value() instead. See its documentation string for + details. + """ + name = None + default = None + + structcode = None + structvalues = 0 + + check_value = None + parse_value = None + + keyword_args = False + + def __init__(self): + pass + + def parse_binary_value(self, data, display, length, format): + """value, remaindata = f.parse_binary_value(data, display, length, format) + + Decode a value for this field from the binary string DATA. + If there are a LengthField and/or a FormatField connected to this + field, their values will be LENGTH and FORMAT, respectively. If + there are no such fields the parameters will be None. + + DISPLAY is the display involved, which is really only used by + the Resource fields. + + The decoded value is returned as VALUE, and the remaining part + of DATA shold be returned as REMAINDATA. + """ + raise RuntimeError('Neither structcode or parse_binary_value ' \ + 'provided for {0}'.format(self)) + + +class Pad(Field): + def __init__(self, size): + self.size = size + self.value = b'\0' * size + self.structcode = '{0}x'.format(size) + self.structvalues = 0 + + +class ConstantField(Field): + def __init__(self, value): + self.value = value + + +class Opcode(ConstantField): + structcode = 'B' + structvalues = 1 + +class ReplyCode(ConstantField): + structcode = 'B' + structvalues = 1 + + def __init__(self): + self.value = 1 + +class LengthField(Field): + """A LengthField stores the length of some other Field whose size + may vary, e.g. List and String8. + + Its name should be the same as the name of the field whose size + it stores. The other_fields attribute can be used to specify the + names of other fields whose sizes are stored by this field, so + a single length field can set the length of multiple fields. + + The lf.get_binary_value() method of LengthFields is not used, instead + a lf.get_binary_length() should be provided. + + Unless LengthField.get_binary_length() is overridden in child classes, + there should also be a lf.calc_length(). + """ + structcode = 'L' + structvalues = 1 + other_fields = None + + def calc_length(self, length): + """newlen = lf.calc_length(length) + + Return a new length NEWLEN based on the provided LENGTH. + """ + + return length + + +class TotalLengthField(LengthField): + pass + +class RequestLength(TotalLengthField): + structcode = 'H' + structvalues = 1 + + def calc_length(self, length): + return length // 4 + +class ReplyLength(TotalLengthField): + structcode = 'L' + structvalues = 1 + + def calc_length(self, length): + return (length - 32) // 4 + + +class LengthOf(LengthField): + def __init__(self, name, size): + if isinstance(name, (list, tuple)): + self.name = name[0] + self.other_fields = name[1:] + else: + self.name = name + self.structcode = unsigned_codes[size] + + +class OddLength(LengthField): + structcode = 'B' + structvalues = 1 + + def __init__(self, name): + self.name = name + + def calc_length(self, length): + return length % 2 + + def parse_value(self, value, display): + if value == 0: + return 'even' + else: + return 'odd' + + +class FormatField(Field): + """A FormatField encodes the format of some other field, in a manner + similar to LengthFields. + + The ff.get_binary_value() method is not used, replaced by + ff.get_binary_format(). + """ + + structvalues = 1 + + def __init__(self, name, size): + self.name = name + self.structcode = unsigned_codes[size] + +Format = FormatField + + +class ValueField(Field): + def __init__(self, name, default = None): + self.name = name + self.default = default + + +class Int8(ValueField): + structcode = 'b' + structvalues = 1 + +class Int16(ValueField): + structcode = 'h' + structvalues = 1 + +class Int32(ValueField): + structcode = 'l' + structvalues = 1 + +class Card8(ValueField): + structcode = 'B' + structvalues = 1 + +class Card16(ValueField): + structcode = 'H' + structvalues = 1 + +class Card32(ValueField): + structcode = 'L' + structvalues = 1 + + +class Resource(Card32): + cast_function = '__resource__' + class_name = 'resource' + + def __init__(self, name, codes = (), default = None): + Card32.__init__(self, name, default) + self.codes = codes + + def check_value(self, value): + if hasattr(value, self.cast_function): + return getattr(value, self.cast_function)() + else: + return value + + def parse_value(self, value, display): + # if not display: + # return value + if value in self.codes: + return value + + c = display.get_resource_class(self.class_name) + if c: + return c(display, value) + else: + return value + +class Window(Resource): + cast_function = '__window__' + class_name = 'window' + +class Pixmap(Resource): + cast_function = '__pixmap__' + class_name = 'pixmap' + +class Drawable(Resource): + cast_function = '__drawable__' + class_name = 'drawable' + +class Fontable(Resource): + cast_function = '__fontable__' + class_name = 'fontable' + +class Font(Resource): + cast_function = '__font__' + class_name = 'font' + +class GC(Resource): + cast_function = '__gc__' + class_name = 'gc' + +class Colormap(Resource): + cast_function = '__colormap__' + class_name = 'colormap' + +class Cursor(Resource): + cast_function = '__cursor__' + class_name = 'cursor' + + +class Bool(ValueField): + structvalues = 1 + structcode = 'B' + + def check_value(self, value): + return not not value + +class Set(ValueField): + structvalues = 1 + + def __init__(self, name, size, values, default = None): + ValueField.__init__(self, name, default) + self.structcode = unsigned_codes[size] + self.values = values + + def check_value(self, val): + if val not in self.values: + raise ValueError('field %s: argument %s not in %s' + % (self.name, val, self.values)) + + return val + +class Gravity(Set): + def __init__(self, name): + Set.__init__(self, name, 1, (X.ForgetGravity, X.StaticGravity, + X.NorthWestGravity, X.NorthGravity, + X.NorthEastGravity, X.WestGravity, + X.CenterGravity, X.EastGravity, + X.SouthWestGravity, X.SouthGravity, + X.SouthEastGravity)) + + +class FixedBinary(ValueField): + structvalues = 1 + + def __init__(self, name, size): + ValueField.__init__(self, name) + self.structcode = '{0}s'.format(size) + + +class Binary(ValueField): + structcode = None + + def __init__(self, name, pad = 1): + ValueField.__init__(self, name) + self.pad = pad + + def pack_value(self, val): + val_bytes = val + slen = len(val_bytes) + + if self.pad: + return val_bytes + b'\0' * ((4 - slen % 4) % 4), slen, None + else: + return val_bytes, slen, None + + def parse_binary_value(self, data, display, length, format): + if length is None: + return data, b'' + + if self.pad: + slen = length + ((4 - length % 4) % 4) + else: + slen = length + + return data[:length], data[slen:] + + +class String8(ValueField): + structcode = None + + def __init__(self, name, pad = 1): + ValueField.__init__(self, name) + self.pad = pad + + def pack_value(self, val): + if isinstance(val, bytes): + val_bytes = val + else: + val_bytes = val.encode() + slen = len(val_bytes) + + if self.pad: + return val_bytes + b'\0' * ((4 - slen % 4) % 4), slen, None + else: + return val_bytes, slen, None + + def parse_binary_value(self, data, display, length, format): + if length is None: + return decode_string(data), b'' + + if self.pad: + slen = length + ((4 - length % 4) % 4) + else: + slen = length + + data_str = decode_string(data[:length]) + + return data_str, data[slen:] + + +class String16(ValueField): + structcode = None + + def __init__(self, name, pad = 1): + ValueField.__init__(self, name) + self.pad = pad + + def pack_value(self, val): + """Convert 8-byte string into 16-byte list""" + if isinstance(val, bytes): + val = list(iterbytes(val)) + + slen = len(val) + + if self.pad: + pad = b'\0\0' * (slen % 2) + else: + pad = b'' + + return struct.pack('>' + 'H' * slen, *val) + pad, slen, None + + def parse_binary_value(self, data, display, length, format): + if length == 'odd': + length = len(data) // 2 - 1 + elif length == 'even': + length = len(data) // 2 + + if self.pad: + slen = length + (length % 2) + else: + slen = length + + return struct.unpack('>' + 'H' * length, data[:length * 2]), data[slen * 2:] + + + +class List(ValueField): + """The List, FixedList and Object fields store compound data objects. + The type of data objects must be provided as an object with the + following attributes and methods: + + ... + + """ + + structcode = None + + def __init__(self, name, type, pad = 1): + ValueField.__init__(self, name) + self.type = type + self.pad = pad + + def parse_binary_value(self, data, display, length, format): + if length is None: + ret = [] + if self.type.structcode is None: + while data: + val, data = self.type.parse_binary(data, display) + ret.append(val) + else: + scode = '=' + self.type.structcode + slen = struct.calcsize(scode) + pos = 0 + while pos + slen <= len(data): + v = struct.unpack(scode, data[pos: pos + slen]) + + if self.type.structvalues == 1: + v = v[0] + + if self.type.parse_value is None: + ret.append(v) + else: + ret.append(self.type.parse_value(v, display)) + + pos = pos + slen + + data = data[pos:] + + else: + ret = [None] * int(length) + + if self.type.structcode is None: + for i in range(0, length): + ret[i], data = self.type.parse_binary(data, display) + else: + scode = '=' + self.type.structcode + slen = struct.calcsize(scode) + pos = 0 + for i in range(0, length): + v = struct.unpack(scode, data[pos: pos + slen]) + + if self.type.structvalues == 1: + v = v[0] + + if self.type.parse_value is None: + ret[i] = v + else: + ret[i] = self.type.parse_value(v, display) + + pos = pos + slen + + data = data[pos:] + + if self.pad: + data = data[len(data) % 4:] + + return ret, data + + def pack_value(self, val): + # Single-char values, we'll assume that means integer lists. + if self.type.structcode and len(self.type.structcode) == 1: + if self.type.check_value is not None: + val = [self.type.check_value(v) for v in val] + a = array(struct_to_array_codes[self.type.structcode], val) + data = encode_array(a) + else: + data = [] + for v in val: + data.append(self.type.pack_value(v)) + + data = b''.join(data) + + if self.pad: + dlen = len(data) + data = data + b'\0' * ((4 - dlen % 4) % 4) + + return data, len(val), None + + +class FixedList(List): + def __init__(self, name, size, type, pad = 1): + List.__init__(self, name, type, pad) + self.size = size + + def parse_binary_value(self, data, display, length, format): + return List.parse_binary_value(self, data, display, self.size, format) + + def pack_value(self, val): + if len(val) != self.size: + raise BadDataError('length mismatch for FixedList %s' % self.name) + return List.pack_value(self, val) + + +class Object(ValueField): + def __init__(self, name, type, default = None): + ValueField.__init__(self, name, default) + self.type = type + self.structcode = self.type.structcode + self.structvalues = self.type.structvalues + + def parse_binary_value(self, data, display, length, format): + return self.type.parse_binary(data, display) + + def parse_value(self, val, display): + return self.type.parse_value(val, display) + + def pack_value(self, val): + return self.type.pack_value(val) + + def check_value(self, val): + if isinstance(val, tuple): + vals = [] + i = 0 + for f in self.type.fields: + if f.name: + if f.check_value is None: + v = val[i] + else: + v = f.check_value(val[i]) + if f.structvalues == 1: + vals.append(v) + else: + vals.extend(v) + i = i + 1 + return vals + + if isinstance(val, dict): + data = val + elif isinstance(val, DictWrapper): + data = val._data + else: + raise TypeError('Object value must be tuple, dictionary or DictWrapper: %s' % val) + + vals = [] + for f in self.type.fields: + if f.name: + if f.check_value is None: + v = data[f.name] + else: + v = f.check_value(data[f.name]) + if f.structvalues == 1: + vals.append(v) + else: + vals.extend(v) + + return vals + + +class PropertyData(ValueField): + structcode = None + + def parse_binary_value(self, data, display, length, format): + if length is None: + length = len(data) // (format // 8) + else: + length = int(length) + + if format == 0: + ret = None + + elif format == 8: + ret = (8, data[:length]) + data = data[length + ((4 - length % 4) % 4):] + + elif format == 16: + ret = (16, array(array_unsigned_codes[2], data[:2 * length])) + data = data[2 * (length + length % 2):] + + elif format == 32: + ret = (32, array(array_unsigned_codes[4], data[:4 * length])) + data = data[4 * length:] + + return ret, data + + def pack_value(self, value): + fmt, val = value + + if fmt not in (8, 16, 32): + raise BadDataError('Invalid property data format {0}'.format(fmt)) + + if isinstance(val, binary_type): + size = fmt // 8 + vlen = len(val) + if vlen % size: + vlen = vlen - vlen % size + data = val[:vlen] + else: + data = val + + dlen = vlen // size + + else: + if isinstance(val, tuple): + val = list(val) + + size = fmt // 8 + a = array(array_unsigned_codes[size], val) + data = encode_array(a) + dlen = len(val) + + dl = len(data) + data = data + b'\0' * ((4 - dl % 4) % 4) + + return data, dlen, fmt + + +class FixedPropertyData(PropertyData): + def __init__(self, name, size): + PropertyData.__init__(self, name) + self.size = size + + def parse_binary_value(self, data, display, length, format): + return PropertyData.parse_binary_value(self, data, display, + self.size // (format // 8), format) + + def pack_value(self, value): + data, dlen, fmt = PropertyData.pack_value(self, value) + + if len(data) != self.size: + raise BadDataError('Wrong data length for FixedPropertyData: %s' + % (value, )) + + return data, dlen, fmt + + +class ValueList(Field): + structcode = None + keyword_args = True + default = 'usekeywords' + + def __init__(self, name, mask, pad, *fields): + self.name = name + self.maskcode = '={0}{1}x'.format(unsigned_codes[mask], pad).encode() + self.maskcodelen = struct.calcsize(self.maskcode) + self.fields = [] + + flag = 1 + for f in fields: + if f.name: + self.fields.append((f, flag)) + flag = flag << 1 + + def pack_value(self, arg, keys): + mask = 0 + data = b'' + + if arg == self.default: + arg = keys + + for field, flag in self.fields: + if field.name in arg: + mask = mask | flag + + val = arg[field.name] + if field.check_value is not None: + val = field.check_value(val) + + d = struct.pack('=' + field.structcode, val) + data = data + d + b'\0' * (4 - len(d)) + + return struct.pack(self.maskcode, mask) + data, None, None + + def parse_binary_value(self, data, display, length, format): + r = {} + + mask = int(struct.unpack(self.maskcode, data[:self.maskcodelen])[0]) + data = data[self.maskcodelen:] + + for field, flag in self.fields: + if mask & flag: + if field.structcode: + vals = struct.unpack('=' + field.structcode, + data[:struct.calcsize('=' + field.structcode)]) + if field.structvalues == 1: + vals = vals[0] + + if field.parse_value is not None: + vals = field.parse_value(vals, display) + + else: + vals, d = field.parse_binary_value(data[:4], display, None, None) + + r[field.name] = vals + data = data[4:] + + return DictWrapper(r), data + + +class KeyboardMapping(ValueField): + structcode = None + + def parse_binary_value(self, data, display, length, format): + if length is None: + dlen = len(data) + else: + dlen = 4 * length * format + + a = array(array_unsigned_codes[4], bytes(data[:dlen])) + + ret = [] + for i in range(0, len(a), format): + ret.append(a[i : i + format]) + + return ret, data[dlen:] + + def pack_value(self, value): + keycodes = 0 + for v in value: + keycodes = max(keycodes, len(v)) + + a = array(array_unsigned_codes[4]) + + for v in value: + for k in v: + a.append(k) + for i in range(len(v), keycodes): + a.append(X.NoSymbol) + + return encode_array(a), len(value), keycodes + + +class ModifierMapping(ValueField): + structcode = None + + def parse_binary_value(self, data, display, length, format): + a = array(array_unsigned_codes[1], data[:8 * format]) + + ret = [] + for i in range(0, 8): + ret.append(a[i * format : (i + 1) * format]) + + return ret, data[8 * format:] + + def pack_value(self, value): + if len(value) != 8: + raise BadDataError('ModifierMapping list should have eight elements') + + keycodes = 0 + for v in value: + keycodes = max(keycodes, len(v)) + + a = array(array_unsigned_codes[1]) + + for v in value: + for k in v: + a.append(k) + for i in range(len(v), keycodes): + a.append(0) + + return encode_array(a), len(value), keycodes + +class EventField(ValueField): + structcode = None + + def pack_value(self, value): + if not isinstance(value, Event): + raise BadDataError('%s is not an Event for field %s' % (value, self.name)) + + return value._binary, None, None + + def parse_binary_value(self, data, display, length, format): + from . import event + + estruct = display.event_classes.get(byte2int(data) & 0x7f, event.AnyEvent) + if type(estruct) == dict: + # this etype refers to a set of sub-events with individual subcodes + estruct = estruct[indexbytes(data, 1)] + + return estruct(display = display, binarydata = data[:32]), data[32:] + + +# +# Objects usable for List and FixedList fields. +# Struct is also usable. +# + +class ScalarObj(object): + def __init__(self, code): + self.structcode = code + self.structvalues = 1 + self.parse_value = None + self.check_value = None + +Card8Obj = ScalarObj('B') +Card16Obj = ScalarObj('H') +Card32Obj = ScalarObj('L') + +class ResourceObj(object): + structcode = 'L' + structvalues = 1 + + def __init__(self, class_name): + self.class_name = class_name + self.check_value = None + + def parse_value(self, value, display): + # if not display: + # return value + c = display.get_resource_class(self.class_name) + if c: + return c(display, value) + else: + return value + +WindowObj = ResourceObj('window') +ColormapObj = ResourceObj('colormap') + +class StrClass(object): + structcode = None + + def pack_value(self, val): + return (chr(len(val)) + val).encode() + + def parse_binary(self, data, display): + slen = byte2int(data) + 1 + return decode_string(data[1:slen]), data[slen:] + +Str = StrClass() + + +class Struct(object): + + """Struct objects represents a binary data structure. It can + contain both fields with static and dynamic sizes. However, all + static fields must appear before all dynamic fields. + + Fields are represented by various subclasses of the abstract base + class Field. The fields of a structure are given as arguments + when instantiating a Struct object. + + Struct objects have two public methods: + + to_binary() -- build a binary representation of the structure + with the values given as arguments + parse_binary() -- convert a binary (string) representation into + a Python dictionary or object. + + These functions will be generated dynamically for each Struct + object to make conversion as fast as possible. They are + generated the first time the methods are called. + """ + + def __init__(self, *fields): + self.fields = fields + + # Structures for to_binary, parse_value and parse_binary + self.static_codes = '=' + self.static_values = 0 + self.static_fields = [] + self.static_size = None + self.var_fields = [] + + for f in self.fields: + # Append structcode if there is one and we haven't + # got any varsize fields yet. + if f.structcode is not None: + assert not self.var_fields + + self.static_codes = self.static_codes + f.structcode + + # Only store fields with values + if f.structvalues > 0: + self.static_fields.append(f) + self.static_values = self.static_values + f.structvalues + + # If we have got one varsize field, all the rest must + # also be varsize fields. + else: + self.var_fields.append(f) + + self.static_size = struct.calcsize(self.static_codes) + if self.var_fields: + self.structcode = None + self.structvalues = 0 + else: + self.structcode = self.static_codes[1:] + self.structvalues = self.static_values + + + # These functions get called only once, as they will override + # themselves with dynamically created functions in the Struct + # object + + def to_binary(self, *varargs, **keys): + """data = s.to_binary(...) + + Convert Python values into the binary representation. The + arguments will be all value fields with names, in the order + given when the Struct object was instantiated. With one + exception: fields with default arguments will be last. + + Returns the binary representation as the string DATA. + """ + # Emulate Python function argument handling with our field names + names = [f.name for f in self.fields \ + if isinstance(f, ValueField) and f.name] + field_args = dict(zip(names, varargs)) + if set(field_args).intersection(keys): + dupes = ", ".join(set(field_args).intersection(keys)) + raise TypeError("{0} arguments were passed both positionally and by keyword".format(dupes)) + field_args.update(keys) + for f in self.fields: + if f.name and (f.name not in field_args): + if f.default is None: + raise TypeError("Missing required argument {0}".format(f.name)) + field_args[f.name] = f.default + # /argument handling + + # First pack all varfields so their lengths and formats are + # available when we pack their static LengthFields and + # FormatFields + + total_length = self.static_size + var_vals = {} + lengths = {} + formats = {} + + for f in self.var_fields: + if f.keyword_args: + v, l, fm = f.pack_value(field_args[f.name], keys) + else: + v, l, fm = f.pack_value(field_args[f.name]) + var_vals[f.name] = v + lengths[f.name] = l + formats[f.name] = fm + + total_length += len(v) + + + # Construct item list for struct.pack call, packing all static fields. + pack_items = [] + + for f in self.static_fields: + if isinstance(f, LengthField): + + # If this is a total length field, insert + # the calculated field value here + if isinstance(f, TotalLengthField): + pack_items.append(f.calc_length(total_length)) + else: + pack_items.append(f.calc_length(lengths[f.name])) + + # Format field, just insert the value we got previously + elif isinstance(f, FormatField): + pack_items.append(formats[f.name]) + + # A constant field, insert its value directly + elif isinstance(f, ConstantField): + pack_items.append(f.value) + + # Value fields + else: + if f.structvalues == 1: + # If there's a value check/convert function, call it + if f.check_value is not None: + pack_items.append(f.check_value(field_args[f.name])) + # Else just use the argument as provided + else: + pack_items.append(field_args[f.name]) + + # Multivalue field. Handled like single valuefield, + # but the value are tuple unpacked into separate arguments + # which are appended to pack_items + else: + if f.check_value is not None: + pack_items.extend(f.check_value(field_args[f.name])) + else: + pack_items.extend(field_args[f.name]) + + static_part = struct.pack(self.static_codes, *pack_items) + var_parts = [var_vals[f.name] for f in self.var_fields] + return static_part + b''.join(var_parts) + + + def pack_value(self, value): + + """ This function allows Struct objects to be used in List and + Object fields. Each item represents the arguments to pass to + to_binary, either a tuple, a dictionary or a DictWrapper. + + """ + + if type(value) is tuple: + return self.to_binary(*value) + elif isinstance(value, dict): + return self.to_binary(**value) + elif isinstance(value, DictWrapper): + return self.to_binary(**value._data) + else: + raise BadDataError('%s is not a tuple or a list' % (value)) + + + def parse_value(self, val, display, rawdict = False): + + """This function is used by List and Object fields to convert + Struct objects with no var_fields into Python values. + + """ + ret = {} + vno = 0 + for f in self.static_fields: + # Fields without names should be ignored, and there should + # not be any length or format fields if this function + # ever gets called. (If there were such fields, there should + # be a matching field in var_fields and then parse_binary + # would have been called instead. + + if not f.name: + pass + + elif isinstance(f, LengthField): + pass + + elif isinstance(f, FormatField): + pass + + # Value fields + else: + # If this field has a parse_value method, call it, otherwise + # use the unpacked value as is. + if f.structvalues == 1: + field_val = val[vno] + else: + field_val = val[vno:vno+f.structvalues] + + if f.parse_value is not None: + field_val = f.parse_value(field_val, display, rawdict=rawdict) + ret[f.name] = field_val + + vno = vno + f.structvalues + + if not rawdict: + return DictWrapper(ret) + return ret + + def parse_binary(self, data, display, rawdict = False): + + """values, remdata = s.parse_binary(data, display, rawdict = False) + + Convert a binary representation of the structure into Python values. + + DATA is a string or a buffer containing the binary data. + DISPLAY should be a Xlib.protocol.display.Display object if + there are any Resource fields or Lists with ResourceObjs. + + The Python values are returned as VALUES. If RAWDICT is true, + a Python dictionary is returned, where the keys are field + names and the values are the corresponding Python value. If + RAWDICT is false, a DictWrapper will be returned where all + fields are available as attributes. + + REMDATA are the remaining binary data, unused by the Struct object. + + """ + ret = {} + val = struct.unpack(self.static_codes, data[:self.static_size]) + lengths = {} + formats = {} + + vno = 0 + for f in self.static_fields: + + # Fields without name should be ignored. This is typically + # pad and constant fields + + if not f.name: + pass + + # Store index in val for Length and Format fields, to be used + # when treating varfields. + + elif isinstance(f, LengthField): + f_names = [f.name] + if f.other_fields: + f_names.extend(f.other_fields) + field_val = val[vno] + if f.parse_value is not None: + field_val = f.parse_value(field_val, display) + for f_name in f_names: + lengths[f_name] = field_val + + elif isinstance(f, FormatField): + formats[f.name] = val[vno] + + # Treat value fields the same was as in parse_value. + else: + if f.structvalues == 1: + field_val = val[vno] + else: + field_val = val[vno:vno+f.structvalues] + + if f.parse_value is not None: + field_val = f.parse_value(field_val, display) + ret[f.name] = field_val + + vno = vno + f.structvalues + + data = data[self.static_size:] + + # Call parse_binary_value for each var_field, passing the + # length and format values from the unpacked val. + + for f in self.var_fields: + ret[f.name], data = f.parse_binary_value(data, display, + lengths.get(f.name), + formats.get(f.name), + ) + + if not rawdict: + ret = DictWrapper(ret) + return ret, data + + +class TextElements8(ValueField): + string_textitem = Struct( LengthOf('string', 1), + Int8('delta'), + String8('string', pad = 0) ) + + def pack_value(self, value): + data = b'' + args = {} + + for v in value: + # Let values be simple strings, meaning a delta of 0 + if type(v) in (str, bytes): + v = (0, v) + + # A tuple, it should be (delta, string) + # Encode it as one or more textitems + + if isinstance(v, (tuple, dict, DictWrapper)): + + if isinstance(v, tuple): + delta, m_str = v + else: + delta = v['delta'] + m_str = v['string'] + + while delta or m_str: + args['delta'] = delta + args['string'] = m_str[:254] + + data = data + self.string_textitem.to_binary(*(), **args) + + delta = 0 + m_str = m_str[254:] + + # Else an integer, i.e. a font change + else: + # Use fontable cast function if instance + if isinstance(v, Fontable): + v = v.__fontable__() + + data = data + struct.pack('>BL', 255, v) + + # Pad out to four byte length + dlen = len(data) + return data + b'\0' * ((4 - dlen % 4) % 4), None, None + + def parse_binary_value(self, data, display, length, format): + values = [] + while 1: + if len(data) < 2: + break + + # font change + if byte2int(data) == 255: + values.append(struct.unpack('>L', bytes(data[1:5]))[0]) + data = data[5:] + + # skip null strings + elif byte2int(data) == 0 and indexbytes(data, 1) == 0: + data = data[2:] + + # string with delta + else: + v, data = self.string_textitem.parse_binary(data, display) + values.append(v) + + return values, '' + + + +class TextElements16(TextElements8): + string_textitem = Struct( LengthOf('string', 1), + Int8('delta'), + String16('string', pad = 0) ) + + + +class GetAttrData(object): + def __getattr__(self, attr): + try: + if self._data: + return self._data[attr] + else: + raise AttributeError(attr) + except KeyError: + raise AttributeError(attr) + +class DictWrapper(GetAttrData): + def __init__(self, dict): + self.__dict__['_data'] = dict + + def __getitem__(self, key): + return self._data[key] + + def __setitem__(self, key, value): + self._data[key] = value + + def __delitem__(self, key): + del self._data[key] + + def __setattr__(self, key, value): + self._data[key] = value + + def __delattr__(self, key): + del self._data[key] + + def __str__(self): + return str(self._data) + + def __repr__(self): + return '%s(%s)' % (self.__class__.__name__, repr(self._data)) + + def __lt__(self, other): + if isinstance(other, DictWrapper): + return self._data < other._data + else: + return self._data < other + + def __gt__(self, other): + if isinstance(other, DictWrapper): + return self._data > other._data + else: + return self._data > other + + def __eq__(self, other): + if isinstance(other, DictWrapper): + return self._data == other._data + else: + return self._data == other + + +class Request(object): + def __init__(self, display, onerror = None, *args, **keys): + self._errorhandler = onerror + self._binary = self._request.to_binary(*args, **keys) + self._serial = None + display.send_request(self, onerror is not None) + + def _set_error(self, error): + if self._errorhandler is not None: + return call_error_handler(self._errorhandler, error, self) + else: + return 0 + +class ReplyRequest(GetAttrData): + def __init__(self, display, defer = False, *args, **keys): + self._display = display + self._binary = self._request.to_binary(*args, **keys) + self._serial = None + self._data = None + self._error = None + + self._response_lock = lock.allocate_lock() + + self._display.send_request(self, True) + if not defer: + self.reply() + + def reply(self): + # Send request and wait for reply if we hasn't + # already got one. This means that reply() can safely + # be called more than one time. + + self._response_lock.acquire() + while self._data is None and self._error is None: + self._display.send_recv_lock.acquire() + self._response_lock.release() + + self._display.send_and_recv(request = self._serial) + self._response_lock.acquire() + + self._response_lock.release() + self._display = None + + # If error has been set, raise it + if self._error: + raise self._error + + def _parse_response(self, data): + self._response_lock.acquire() + self._data, d = self._reply.parse_binary(data, self._display, rawdict = True) + self._response_lock.release() + + def _set_error(self, error): + self._response_lock.acquire() + self._error = error + self._response_lock.release() + return 1 + + def __repr__(self): + return '<%s serial = %s, data = %s, error = %s>' % (self.__class__.__name__, self._serial, self._data, self._error) + + +class Event(GetAttrData): + def __init__(self, binarydata = None, display = None, + **keys): + if binarydata: + self._binary = binarydata + self._data, data = self._fields.parse_binary(binarydata, display, + rawdict = True) + # split event type into type and send_event bit + self._data['send_event'] = not not self._data['type'] & 0x80 + self._data['type'] = self._data['type'] & 0x7f + else: + if self._code: + keys['type'] = self._code + + keys['sequence_number'] = 0 + + self._binary = self._fields.to_binary(**keys) + + keys['send_event'] = 0 + self._data = keys + + def __repr__(self): + kwlist = [] + for kw, val in self._data.items(): + if kw == 'send_event': + continue + if kw == 'type' and self._data['send_event']: + val = val | 0x80 + kwlist.append('%s = %s' % (kw, repr(val))) + + kws = ', '.join(kwlist) + return '%s(%s)' % (self.__class__.__name__, kws) + + def __lt__(self, other): + if isinstance(other, Event): + return self._data < other._data + else: + return self._data < other + + def __gt__(self, other): + if isinstance(other, Event): + return self._data > other._data + else: + return self._data > other + + def __eq__(self, other): + if isinstance(other, Event): + return self._data == other._data + else: + return self._data == other + + +def call_error_handler(handler, error, request): + try: + return handler(error, request) + except: + sys.stderr.write('Exception raised by error handler.\n') + traceback.print_exc() + return 0 diff --git a/myenv/lib/python3.10/site-packages/Xlib/protocol/structs.py b/myenv/lib/python3.10/site-packages/Xlib/protocol/structs.py new file mode 100644 index 0000000..2cbe18b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/protocol/structs.py @@ -0,0 +1,161 @@ +# Xlib.protocol.structs -- some common request structures +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +# Xlib modules +from .. import X + +# Xlib.protocol modules +from . import rq + +def WindowValues(arg): + return rq.ValueList( arg, 4, 0, + rq.Pixmap('background_pixmap'), + rq.Card32('background_pixel'), + rq.Pixmap('border_pixmap'), + rq.Card32('border_pixel'), + rq.Gravity('bit_gravity'), + rq.Gravity('win_gravity'), + rq.Set('backing_store', 1, + (X.NotUseful, X.WhenMapped, X.Always)), + rq.Card32('backing_planes'), + rq.Card32('backing_pixel'), + rq.Bool('override_redirect'), + rq.Bool('save_under'), + rq.Card32('event_mask'), + rq.Card32('do_not_propagate_mask'), + rq.Colormap('colormap'), + rq.Cursor('cursor'), + ) + +def GCValues(arg): + return rq.ValueList( arg, 4, 0, + rq.Set('function', 1, + (X.GXclear, X.GXand, X.GXandReverse, + X.GXcopy, X.GXandInverted, X.GXnoop, + X.GXxor, X.GXor, X.GXnor, X.GXequiv, + X.GXinvert, X.GXorReverse, X.GXcopyInverted, + X.GXorInverted, X.GXnand, X.GXset)), + rq.Card32('plane_mask'), + rq.Card32('foreground'), + rq.Card32('background'), + rq.Card16('line_width'), + rq.Set('line_style', 1, + (X.LineSolid, X.LineOnOffDash, X.LineDoubleDash)), + rq.Set('cap_style', 1, + (X.CapNotLast, X.CapButt, + X.CapRound, X.CapProjecting)), + rq.Set('join_style', 1, + (X.JoinMiter, X.JoinRound, X.JoinBevel)), + rq.Set('fill_style', 1, + (X.FillSolid, X.FillTiled, + X.FillStippled, X.FillOpaqueStippled)), + rq.Set('fill_rule', 1, + (X.EvenOddRule, X.WindingRule)), + rq.Pixmap('tile'), + rq.Pixmap('stipple'), + rq.Int16('tile_stipple_x_origin'), + rq.Int16('tile_stipple_y_origin'), + rq.Font('font'), + rq.Set('subwindow_mode', 1, + (X.ClipByChildren, X.IncludeInferiors)), + rq.Bool('graphics_exposures'), + rq.Int16('clip_x_origin'), + rq.Int16('clip_y_origin'), + rq.Pixmap('clip_mask'), + rq.Card16('dash_offset'), + rq.Card8('dashes'), + rq.Set('arc_mode', 1, (X.ArcChord, X.ArcPieSlice)) + ) + + + +TimeCoord = rq.Struct( + rq.Card32('time'), + rq.Int16('x'), + rq.Int16('y'), + ) + +Host = rq.Struct( + rq.Set('family', 1, (X.FamilyInternet, X.FamilyDECnet, X.FamilyChaos)), + rq.Pad(1), + rq.LengthOf('name', 2), + rq.List('name', rq.Card8Obj) + ) + +CharInfo = rq.Struct( + rq.Int16('left_side_bearing'), + rq.Int16('right_side_bearing'), + rq.Int16('character_width'), + rq.Int16('ascent'), + rq.Int16('descent'), + rq.Card16('attributes'), + ) + +FontProp = rq.Struct( + rq.Card32('name'), + rq.Card32('value'), + ) + +ColorItem = rq.Struct( + rq.Card32('pixel'), + rq.Card16('red'), + rq.Card16('green'), + rq.Card16('blue'), + rq.Card8('flags'), + rq.Pad(1), + ) + + +RGB = rq.Struct( + rq.Card16('red'), + rq.Card16('green'), + rq.Card16('blue'), + rq.Pad(2), + ) + + +Point = rq.Struct( + rq.Int16('x'), + rq.Int16('y'), + ) + +Segment = rq.Struct( + rq.Int16('x1'), + rq.Int16('y1'), + rq.Int16('x2'), + rq.Int16('y2'), + ) + +Rectangle = rq.Struct( + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + ) + +Arc = rq.Struct( + rq.Int16('x'), + rq.Int16('y'), + rq.Card16('width'), + rq.Card16('height'), + rq.Int16('angle1'), + rq.Int16('angle2'), + ) diff --git a/myenv/lib/python3.10/site-packages/Xlib/rdb.py b/myenv/lib/python3.10/site-packages/Xlib/rdb.py new file mode 100644 index 0000000..8670b30 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/rdb.py @@ -0,0 +1,712 @@ +# Xlib.rdb -- X resource database implementation +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + + +# See end of file for an explanation of the algorithm and +# data structures used. + + +# Standard modules +import re +import sys + +# Xlib modules +from .support import lock + +# Set up a few regexpes for parsing string representation of resources + +comment_re = re.compile(r'^\s*!') +resource_spec_re = re.compile(r'^\s*([-_a-zA-Z0-9?.*]+)\s*:\s*(.*)$') +value_escape_re = re.compile('\\\\([ \tn\\\\]|[0-7]{3,3})') +resource_parts_re = re.compile(r'([.*]+)') + +# Constants used for determining which match is best + +NAME_MATCH = 0 +CLASS_MATCH = 2 +WILD_MATCH = 4 +MATCH_SKIP = 6 + +# Option error class +class OptionError(Exception): + pass + + +class ResourceDB(object): + def __init__(self, file = None, string = None, resources = None): + self.db = {} + self.lock = lock.allocate_lock() + + if file is not None: + self.insert_file(file) + if string is not None: + self.insert_string(string) + if resources is not None: + self.insert_resources(resources) + + def insert_file(self, file): + """insert_file(file) + + Load resources entries from FILE, and insert them into the + database. FILE can be a filename (a string)or a file object. + + """ + + if type(file) is bytes: + file = open(file, 'r') + + self.insert_string(file.read()) + + + def insert_string(self, data): + """insert_string(data) + + Insert the resources entries in the string DATA into the + database. + + """ + + # First split string into lines + lines = data.split('\n') + + while lines: + line = lines[0] + del lines[0] + + # Skip empty line + if not line: + continue + + # Skip comments + if comment_re.match(line): + continue + + # Handle continued lines + while line[-1] == '\\': + if lines: + line = line[:-1] + lines[0] + del lines[0] + else: + line = line[:-1] + break + + # Split line into resource and value + m = resource_spec_re.match(line) + + # Bad line, just ignore it silently + if not m: + continue + + res, value = m.group(1, 2) + + # Convert all escape sequences in value + splits = value_escape_re.split(value) + + for i in range(1, len(splits), 2): + s = splits[i] + if len(s) == 3: + splits[i] = chr(int(s, 8)) + elif s == 'n': + splits[i] = '\n' + + # strip the last value part to get rid of any + # unescaped blanks + splits[-1] = splits[-1].rstrip() + + value = ''.join(splits) + + self.insert(res, value) + + + def insert_resources(self, resources): + """insert_resources(resources) + + Insert all resources entries in the list RESOURCES into the + database. Each element in RESOURCES should be a tuple: + + (resource, value) + + Where RESOURCE is a string and VALUE can be any Python value. + + """ + + for res, value in resources: + self.insert(res, value) + + def insert(self, resource, value): + """insert(resource, value) + + Insert a resource entry into the database. RESOURCE is a + string and VALUE can be any Python value. + + """ + + # Split res into components and bindings + parts = resource_parts_re.split(resource) + + # If the last part is empty, this is an invalid resource + # which we simply ignore + if parts[-1] == '': + return + + self.lock.acquire() + + db = self.db + for i in range(1, len(parts), 2): + + # Create a new mapping/value group + if parts[i - 1] not in db: + db[parts[i - 1]] = ({}, {}) + + # Use second mapping if a loose binding, first otherwise + if '*' in parts[i]: + db = db[parts[i - 1]][1] + else: + db = db[parts[i - 1]][0] + + # Insert value into the derived db + if parts[-1] in db: + db[parts[-1]] = db[parts[-1]][:2] + (value, ) + else: + db[parts[-1]] = ({}, {}, value) + + self.lock.release() + + def __getitem__(self, keys_tuple): + """db[name, class] + + Return the value matching the resource identified by NAME and + CLASS. If no match is found, KeyError is raised. + """ + + # Split name and class into their parts + name, cls = keys_tuple + + namep = name.split('.') + clsp = cls.split('.') + + # It is an error for name and class to have different number + # of parts + + if len(namep) != len(clsp): + raise ValueError('Different number of parts in resource name/class: %s/%s' % (name, cls)) + + complen = len(namep) + matches = [] + + # Lock database and wrap the lookup code in a try-finally + # block to make sure that it is unlocked. + + self.lock.acquire() + try: + + # Precedence order: name -> class -> ? + + if namep[0] in self.db: + bin_insert(matches, _Match((NAME_MATCH, ), self.db[namep[0]])) + + if clsp[0] in self.db: + bin_insert(matches, _Match((CLASS_MATCH, ), self.db[clsp[0]])) + + if '?' in self.db: + bin_insert(matches, _Match((WILD_MATCH, ), self.db['?'])) + + + # Special case for the unlikely event that the resource + # only has one component + if complen == 1 and matches: + x = matches[0] + if x.final(complen): + return x.value() + else: + raise KeyError((name, cls)) + + + # Special case for resources which begins with a loose + # binding, e.g. '*foo.bar' + if '' in self.db: + bin_insert(matches, _Match((), self.db[''][1])) + + + # Now iterate over all components until we find the best match. + + # For each component, we choose the best partial match among + # the mappings by applying these rules in order: + + # Rule 1: If the current group contains a match for the + # name, class or '?', we drop all previously found loose + # binding mappings. + + # Rule 2: A matching name has precedence over a matching + # class, which in turn has precedence over '?'. + + # Rule 3: Tight bindings have precedence over loose + # bindings. + + while matches: + + # Work on the first element == the best current match + + x = matches[0] + del matches[0] + + # print 'path: ', x.path + # if x.skip: + # print 'skip: ', x.db + # else: + # print 'group: ', x.group + # print + + i = x.match_length() + + for part, score in ((namep[i], NAME_MATCH), + (clsp[i], CLASS_MATCH), + ('?', WILD_MATCH)): + + # Attempt to find a match in x + match = x.match(part, score) + if match: + # Hey, we actually found a value! + if match.final(complen): + return match.value() + + # Else just insert the new match + else: + bin_insert(matches, match) + + # Generate a new loose match + match = x.skip_match(complen) + if match: + bin_insert(matches, match) + + # Oh well, nothing matched + raise KeyError((name, cls)) + + finally: + self.lock.release() + + def get(self, res, cls, default = None): + """get(name, class [, default]) + + Return the value matching the resource identified by NAME and + CLASS. If no match is found, DEFAULT is returned, or None if + DEFAULT isn't specified. + + """ + + try: + return self[(res, cls)] + except KeyError: + return default + + def update(self, db): + """update(db) + + Update this database with all resources entries in the resource + database DB. + + """ + + self.lock.acquire() + update_db(self.db, db.db) + self.lock.release() + + def output(self): + """output() + + Return the resource database in text representation. + """ + + self.lock.acquire() + text = output_db('', self.db) + self.lock.release() + return text + + def getopt(self, name, argv, opts): + """getopt(name, argv, opts) + + Parse X command line options, inserting the recognised options + into the resource database. + + NAME is the application name, and will be prepended to all + specifiers. ARGV is the list of command line arguments, + typically sys.argv[1:]. + + OPTS is a mapping of options to resource specifiers. The key is + the option flag (with leading -), and the value is an instance of + some Option subclass: + + NoArg(specifier, value): set resource to value. + IsArg(specifier): set resource to option itself + SepArg(specifier): value is next argument + ResArg: resource and value in next argument + SkipArg: ignore this option and next argument + SkipLine: ignore rest of arguments + SkipNArgs(count): ignore this option and count arguments + + The remaining, non-option, oparguments is returned. + + rdb.OptionError is raised if there is an error in the argument list. + """ + + while argv and argv[0] and argv[0][0] == '-': + try: + argv = opts[argv[0]].parse(name, self, argv) + except KeyError: + raise OptionError('unknown option: %s' % argv[0]) + except IndexError: + raise OptionError('missing argument to option: %s' % argv[0]) + + return argv + + +class _Match(object): + def __init__(self, path, dbs): + self.path = path + + if type(dbs) is tuple: + self.skip = 0 + self.group = dbs + + else: + self.skip = 1 + self.db = dbs + + def __lt__(self, other): + return self.path < other.path + + def __gt__(self, other): + return self.path > other.path + + def __eq__(self, other): + return self.path == other.path + + def match_length(self): + return len(self.path) + + def match(self, part, score): + if self.skip: + if part in self.db: + return _Match(self.path + (score, ), self.db[part]) + else: + return None + else: + if part in self.group[0]: + return _Match(self.path + (score, ), self.group[0][part]) + elif part in self.group[1]: + return _Match(self.path + (score + 1, ), self.group[1][part]) + else: + return None + + def skip_match(self, complen): + # Can't make another skip if we have run out of components + if len(self.path) + 1 >= complen: + return None + + # If this already is a skip match, clone a new one + if self.skip: + if self.db: + return _Match(self.path + (MATCH_SKIP, ), self.db) + else: + return None + + # Only generate a skip match if the loose binding mapping + # is non-empty + elif self.group[1]: + return _Match(self.path + (MATCH_SKIP, ), self.group[1]) + + # This is a dead end match + else: + return None + + def final(self, complen): + if not self.skip and len(self.path) == complen and len(self.group) > 2: + return 1 + else: + return 0 + + def value(self): + return self.group[2] + + +# +# Helper function for ResourceDB.__getitem__() +# + +def bin_insert(list, element): + """bin_insert(list, element) + + Insert ELEMENT into LIST. LIST must be sorted, and ELEMENT will + be inserted to that LIST remains sorted. If LIST already contains + ELEMENT, it will not be duplicated. + + """ + + if not list: + list.append(element) + return + + lower = 0 + upper = len(list) - 1 + + while lower <= upper: + center = (lower + upper) // 2 + if element < list[center]: + upper = center - 1 + elif element > list[center]: + lower = center + 1 + elif element == list[center]: + return + + if element < list[upper]: + list.insert(upper, element) + elif element > list[upper]: + list.insert(upper + 1, element) + + +# +# Helper functions for ResourceDB.update() +# + +def update_db(dest, src): + for comp, group in src.items(): + + # DEST already contains this component, update it + if comp in dest: + + # Update tight and loose binding databases + update_db(dest[comp][0], group[0]) + update_db(dest[comp][1], group[1]) + + # If a value has been set in SRC, update + # value in DEST + + if len(group) > 2: + dest[comp] = dest[comp][:2] + group[2:] + + # COMP not in src, make a deep copy + else: + dest[comp] = copy_group(group) + +def copy_group(group): + return (copy_db(group[0]), copy_db(group[1])) + group[2:] + +def copy_db(db): + newdb = {} + for comp, group in db.items(): + newdb[comp] = copy_group(group) + + return newdb + + +# +# Helper functions for output +# + +def output_db(prefix, db): + res = '' + for comp, group in db.items(): + + # There's a value for this component + if len(group) > 2: + res = res + '%s%s: %s\n' % (prefix, comp, output_escape(group[2])) + + # Output tight and loose bindings + res = res + output_db(prefix + comp + '.', group[0]) + res = res + output_db(prefix + comp + '*', group[1]) + + return res + +def output_escape(value): + value = str(value) + if not value: + return value + + for char, esc in (('\\', '\\\\'), + ('\000', '\\000'), + ('\n', '\\n')): + + value = value.replace(char, esc) + + # If first or last character is space or tab, escape them. + if value[0] in ' \t': + value = '\\' + value + if value[-1] in ' \t' and value[-2:-1] != '\\': + value = value[:-1] + '\\' + value[-1] + + return value + + +# +# Option type definitions +# + +class Option(object): + def __init__(self): + pass + + def parse(self, name, db, args): + pass + +class NoArg(Option): + """Value is provided to constructor.""" + def __init__(self, specifier, value): + self.specifier = specifier + self.value = value + + def parse(self, name, db, args): + db.insert(name + self.specifier, self.value) + return args[1:] + +class IsArg(Option): + """Value is the option string itself.""" + def __init__(self, specifier): + self.specifier = specifier + + def parse(self, name, db, args): + db.insert(name + self.specifier, args[0]) + return args[1:] + +class SepArg(Option): + """Value is the next argument.""" + def __init__(self, specifier): + self.specifier = specifier + + def parse(self, name, db, args): + db.insert(name + self.specifier, args[1]) + return args[2:] + +class ResArgClass(Option): + """Resource and value in the next argument.""" + def parse(self, name, db, args): + db.insert_string(args[1]) + return args[2:] + +ResArg = ResArgClass() + +class SkipArgClass(Option): + """Ignore this option and next argument.""" + def parse(self, name, db, args): + return args[2:] + +SkipArg = SkipArgClass() + +class SkipLineClass(Option): + """Ignore rest of the arguments.""" + def parse(self, name, db, args): + return [] + +SkipLine = SkipLineClass() + +class SkipNArgs(Option): + """Ignore this option and the next COUNT arguments.""" + def __init__(self, count): + self.count = count + + def parse(self, name, db, args): + return args[1 + self.count:] + + + +def get_display_opts(options, argv = sys.argv): + """display, name, db, args = get_display_opts(options, [argv]) + + Parse X OPTIONS from ARGV (or sys.argv if not provided). + + Connect to the display specified by a *.display resource if one is + set, or to the default X display otherwise. Extract the + RESOURCE_MANAGER property and insert all resources from ARGV. + + The four return values are: + DISPLAY -- the display object + NAME -- the application name (the filname of ARGV[0]) + DB -- the created resource database + ARGS -- any remaining arguments + """ + + from Xlib import display, Xatom + import os + + name = os.path.splitext(os.path.basename(argv[0]))[0] + + optdb = ResourceDB() + leftargv = optdb.getopt(name, argv[1:], options) + + dname = optdb.get(name + '.display', name + '.Display', None) + d = display.Display(dname) + + rdbstring = d.screen(0).root.get_full_property(Xatom.RESOURCE_MANAGER, + Xatom.STRING) + if rdbstring: + data = rdbstring.value + else: + data = None + + db = ResourceDB(string = data) + db.update(optdb) + + return d, name, db, leftargv + + +# Common X options +stdopts = {'-bg': SepArg('*background'), + '-background': SepArg('*background'), + '-fg': SepArg('*foreground'), + '-foreground': SepArg('*foreground'), + '-fn': SepArg('*font'), + '-font': SepArg('*font'), + '-name': SepArg('.name'), + '-title': SepArg('.title'), + '-synchronous': NoArg('*synchronous', 'on'), + '-xrm': ResArg, + '-display': SepArg('.display'), + '-d': SepArg('.display'), + } + + +# Notes on the implementation: + +# Resource names are split into their components, and each component +# is stored in a mapping. The value for a component is a tuple of two +# or three elements: + +# (tightmapping, loosemapping [, value]) + +# tightmapping contains the next components which are connected with a +# tight binding (.). loosemapping contains the ones connected with +# loose binding (*). If value is present, then this component is the +# last component for some resource which that value. + +# The top level components are stored in the mapping r.db, where r is +# the resource object. + +# Example: Inserting "foo.bar*gazonk: yep" into an otherwise empty +# resource database would give the following structure: + +# { 'foo': ( { 'bar': ( { }, +# { 'gazonk': ( { }, +# { }, +# 'yep') +# } +# ) +# }, +# {}) +# } diff --git a/myenv/lib/python3.10/site-packages/Xlib/support/__init__.py b/myenv/lib/python3.10/site-packages/Xlib/support/__init__.py new file mode 100644 index 0000000..d6c1746 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/support/__init__.py @@ -0,0 +1,26 @@ +# Xlib.support.__init__ -- support code package +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +__all__ = [ + 'lock', + 'connect' + # The platform specific modules should not be listed here + ] diff --git a/myenv/lib/python3.10/site-packages/Xlib/support/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/support/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0e8e216ad0e5aaf4de0ab337cbf49d2a0d9647c GIT binary patch literal 250 zcmYk1u};J=42IL(i8~Ot@(wp}KE#R;12YQ?VzJuBYOAJklsJbf@j|>(R^EaEks=0u z$)EJezX$VfccDtoA@zBs)aN4qql-M0iI)XNnX1#T%IIgcU*)yscFdcWougKs_Ep{> z*483^sIV^mUwpko&l7>^Lps4D#ZlOUpQUGqp5G{7lSGPOQ%5q0Aw@Bzhr(TFDZn(7 zJAoaVzq8xJ%@N`tbnWYQtUHSEvTS4Wo`V45;08fF_&IOyCN{~^eYJdXR-mtRwf+79 DqU}k3 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/support/__pycache__/connect.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/support/__pycache__/connect.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..410acdfe034d33c40d7f9a8b8219a01ff506c38f GIT binary patch literal 2264 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 Hae4JK@#7Kv literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/support/connect.py b/myenv/lib/python3.10/site-packages/Xlib/support/connect.py new file mode 100644 index 0000000..e8c822f --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/support/connect.py @@ -0,0 +1,102 @@ +# Xlib.support.connect -- OS-independent display connection functions +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +import sys +import importlib + +# List the modules which contain the corresponding functions + +_display_mods = { + 'OpenVMS': 'vms_connect', + } + +_default_display_mod = 'unix_connect' + +_socket_mods = { + 'OpenVMS': 'vms_connect' + } + +_default_socket_mod = 'unix_connect' + +_auth_mods = { + 'OpenVMS': 'vms_connect' + } + +_default_auth_mod = 'unix_connect' + + +# Figure out which OS we're using. +# sys.platform is either "OS-ARCH" or just "OS". + +_parts = sys.platform.split('-') +platform = _parts[0] +del _parts + + +def _relative_import(modname): + return importlib.import_module('..' + modname, __name__) + + +def get_display(display): + """dname, protocol, host, dno, screen = get_display(display) + + Parse DISPLAY into its components. If DISPLAY is None, use + the default display. The return values are: + + DNAME -- the full display name (string) + PROTOCOL -- the protocol to use (None if automatic) + HOST -- the host name (string, possibly empty) + DNO -- display number (integer) + SCREEN -- default screen number (integer) + """ + + modname = _display_mods.get(platform, _default_display_mod) + mod = _relative_import(modname) + return mod.get_display(display) + + +def get_socket(dname, protocol, host, dno): + """socket = get_socket(dname, protocol, host, dno) + + Connect to the display specified by DNAME, PROTOCOL, HOST and DNO, which + are the corresponding values from a previous call to get_display(). + + Return SOCKET, a new socket object connected to the X server. + """ + + modname = _socket_mods.get(platform, _default_socket_mod) + mod = _relative_import(modname) + return mod.get_socket(dname, protocol, host, dno) + + +def get_auth(sock, dname, protocol, host, dno): + """auth_name, auth_data = get_auth(sock, dname, protocol, host, dno) + + Return authentication data for the display on the other side of + SOCK, which was opened with DNAME, HOST and DNO, using PROTOCOL. + + Return AUTH_NAME and AUTH_DATA, two strings to be used in the + connection setup request. + """ + + modname = _auth_mods.get(platform, _default_auth_mod) + mod = _relative_import(modname) + return mod.get_auth(sock, dname, protocol, host, dno) diff --git a/myenv/lib/python3.10/site-packages/Xlib/support/lock.py b/myenv/lib/python3.10/site-packages/Xlib/support/lock.py new file mode 100644 index 0000000..29289b6 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/support/lock.py @@ -0,0 +1,44 @@ +# Xlib.support.lock -- allocate a lock +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +class _DummyLock(object): + def __init__(self): + + # This might be nerdy, but by assigning methods like this + # instead of defining them all, we create a single bound + # method object once instead of one each time one of the + # methods is called. + + # This gives some speed improvements which should reduce the + # impact of the threading infrastructure in the regular code, + # when not using threading. + + self.acquire = self.release = self.locked = self.__noop + + def __noop(self, *args): + return + + +# More optimisations: we use a single lock for all lock instances +_dummy_lock = _DummyLock() + +def allocate_lock(): + return _dummy_lock diff --git a/myenv/lib/python3.10/site-packages/Xlib/support/unix_connect.py b/myenv/lib/python3.10/site-packages/Xlib/support/unix_connect.py new file mode 100644 index 0000000..aee6dd9 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/support/unix_connect.py @@ -0,0 +1,217 @@ +# Xlib.support.unix_connect -- Unix-type display connection functions +# +# Copyright (C) 2000,2002 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +import re +import os +import platform +import socket +from Xlib import error, xauth + + +SUPPORTED_PROTOCOLS = (None, 'tcp', 'unix') + +# Darwin funky socket. +uname = platform.uname() +if (uname[0] == 'Darwin') and ([int(x) for x in uname[2].split('.')] >= [9, 0]): + SUPPORTED_PROTOCOLS += ('darwin',) + DARWIN_DISPLAY_RE = re.compile(r'^/private/tmp/[-:a-zA-Z0-9._]*:(?P[0-9]+)(\.(?P[0-9]+))?$') + +DISPLAY_RE = re.compile(r'^((?Ptcp|unix)/)?(?P[-:a-zA-Z0-9._]*):(?P[0-9]+)(\.(?P[0-9]+))?$') + + +def get_display(display): + # Use $DISPLAY if display isn't provided + if display is None: + display = os.environ.get('DISPLAY', '') + + re_list = [(DISPLAY_RE, {})] + + if 'darwin' in SUPPORTED_PROTOCOLS: + re_list.insert(0, (DARWIN_DISPLAY_RE, {'protocol': 'darwin'})) + + for re, defaults in re_list: + m = re.match(display) + if m is not None: + protocol, host, dno, screen = [ + m.groupdict().get(field, defaults.get(field)) + for field in ('proto', 'host', 'dno', 'screen') + ] + break + else: + raise error.DisplayNameError(display) + + if protocol == 'tcp' and not host: + # Host is mandatory when protocol is TCP. + raise error.DisplayNameError(display) + + dno = int(dno) + if screen: + screen = int(screen) + else: + screen = 0 + + return display, protocol, host, dno, screen + + +def _get_tcp_socket(host, dno): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((host, 6000 + dno)) + return s + + +def _get_unix_socket(address): + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.connect(address) + return s + + +def get_socket(dname, protocol, host, dno): + assert protocol in SUPPORTED_PROTOCOLS + try: + # Darwin funky socket. + if protocol == 'darwin': + s = _get_unix_socket(dname) + + # TCP socket, note the special case: `unix:0.0` is equivalent to `:0.0`. + elif (protocol is None or protocol != 'unix') and host and host != 'unix': + s = _get_tcp_socket(host, dno) + + # Unix socket. + else: + address = '/tmp/.X11-unix/X%d' % dno + if not os.path.exists(address): + # Use abstract address. + address = '\0' + address + try: + s = _get_unix_socket(address) + except socket.error: + if not protocol and not host: + # If no protocol/host was specified, fallback to TCP. + s = _get_tcp_socket(host, dno) + else: + raise + except socket.error as val: + raise error.DisplayConnectionError(dname, str(val)) + + # Make sure that the connection isn't inherited in child processes. + _ensure_not_inheritable(s) + + return s + + +def _ensure_not_inheritable(sock): + # According to PEP446, in Python 3.4 and above, + # it is not inherited in child processes by default. + # However, just in case, we explicitly make it non-inheritable. + # Also, we don't use the code like the following, + # because there would be no possibility of backporting to past versions. + # if sys.version_info.major == 3 and sys.version_info.minor >= 4: + # sock.set_inheritable(False) + # return + # We just check if the socket has `set_inheritable`. + if hasattr(sock, 'set_inheritable'): + sock.set_inheritable(False) + return + + # On Windows, + # Python doesn't support fcntl module because Windows doesn't have fcntl API. + # At least by not importing fcntl, we will be able to import python-xlib on Windows. + if platform.system() == 'Windows': + # so.. unfortunately, for Python 3.3 and below, on Windows, + # we can't make sure that the connection isn't inherited in child processes for now. + return + + import fcntl + fcntl.fcntl(sock.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC) + + +def new_get_auth(sock, dname, protocol, host, dno): + assert protocol in SUPPORTED_PROTOCOLS + # Translate socket address into the xauth domain + if protocol == 'darwin': + family = xauth.FamilyLocal + addr = socket.gethostname() + + elif protocol == 'tcp': + family = xauth.FamilyInternet + + # Convert the prettyprinted IP number into 4-octet string. + # Sometimes these modules are too damn smart... + octets = sock.getpeername()[0].split('.') + addr = bytearray(int(x) for x in octets) + else: + family = xauth.FamilyLocal + addr = socket.gethostname().encode() + + try: + au = xauth.Xauthority() + except error.XauthError: + return b'', b'' + + while 1: + try: + return au.get_best_auth(family, addr, dno) + except error.XNoAuthError: + pass + + # We need to do this to handle ssh's X forwarding. It sets + # $DISPLAY to localhost:10, but stores the xauth cookie as if + # DISPLAY was :10. Hence, if localhost and not found, try + # again as a Unix socket. + if family == xauth.FamilyInternet and addr == b'\x7f\x00\x00\x01': + family = xauth.FamilyLocal + addr = socket.gethostname().encode() + else: + return b'', b'' + + +def old_get_auth(sock, dname, host, dno): + # Find authorization cookie + auth_name = auth_data = b'' + + try: + # We could parse .Xauthority, but xauth is simpler + # although more inefficient + data = os.popen('xauth list %s 2>/dev/null' % dname).read() + + # If there's a cookie, it is of the format + # DISPLAY SCHEME COOKIE + # We're interested in the two last parts for the + # connection establishment + lines = data.split('\n') + if len(lines) >= 1: + parts = lines[0].split(None, 2) + if len(parts) == 3: + auth_name = parts[1] + hexauth = parts[2] + auth = b'' + + # Translate hexcode into binary + for i in range(0, len(hexauth), 2): + auth = auth + chr(int(hexauth[i:i+2], 16)) + + auth_data = auth + except os.error: + pass + + return auth_name, auth_data + +get_auth = new_get_auth diff --git a/myenv/lib/python3.10/site-packages/Xlib/support/vms_connect.py b/myenv/lib/python3.10/site-packages/Xlib/support/vms_connect.py new file mode 100644 index 0000000..2799bfa --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/support/vms_connect.py @@ -0,0 +1,74 @@ +# Xlib.support.vms_connect -- VMS-type display connection functions +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +import re +import socket + +from Xlib import error + +display_re = re.compile(r'^([-a-zA-Z0-9._]*):([0-9]+)(\.([0-9]+))?$') + +def get_display(display): + + # Use dummy display if none is set. We really should + # check DECW$DISPLAY instead, but that has to wait + + if display is None: + return ':0.0', None, 'localhost', 0, 0 + + m = display_re.match(display) + if not m: + raise error.DisplayNameError(display) + + name = display + + # Always return a host, since we don't have AF_UNIX sockets + host = m.group(1) + if not host: + host = 'localhost' + + dno = int(m.group(2)) + screen = m.group(4) + if screen: + screen = int(screen) + else: + screen = 0 + + return name, None, host, dno, screen + + +def get_socket(dname, protocol, host, dno): + try: + # Always use TCP/IP sockets. Later it would be nice to + # be able to use DECNET och LOCAL connections. + + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((host, 6000 + dno)) + + except socket.error as val: + raise error.DisplayConnectionError(dname, str(val)) + + return s + + +def get_auth(sock, dname, host, dno): + # VMS doesn't have xauth + return '', '' diff --git a/myenv/lib/python3.10/site-packages/Xlib/threaded.py b/myenv/lib/python3.10/site-packages/Xlib/threaded.py new file mode 100644 index 0000000..5fdf016 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/threaded.py @@ -0,0 +1,28 @@ +# Xlib.threaded -- Import this module to enable threading +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +from six.moves import _thread + +# We change the allocate_lock function in Xlib.support.lock to +# return a basic Python lock, instead of the default dummy lock + +from Xlib.support import lock +lock.allocate_lock = _thread.allocate_lock diff --git a/myenv/lib/python3.10/site-packages/Xlib/xauth.py b/myenv/lib/python3.10/site-packages/Xlib/xauth.py new file mode 100644 index 0000000..8651448 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/xauth.py @@ -0,0 +1,134 @@ +# Xlib.xauth -- ~/.Xauthority access +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +import os +import struct + +from Xlib import X, error + +FamilyInternet = X.FamilyInternet +FamilyDECnet = X.FamilyDECnet +FamilyChaos = X.FamilyChaos +FamilyServerInterpreted = X.FamilyServerInterpreted +FamilyInternetV6 = X.FamilyInternetV6 +FamilyLocal = 256 + +class Xauthority(object): + def __init__(self, filename = None): + if filename is None: + filename = os.environ.get('XAUTHORITY') + + if filename is None: + try: + filename = os.path.join(os.environ['HOME'], '.Xauthority') + except KeyError: + raise error.XauthError( + '$HOME not set, cannot find ~/.Xauthority') + + try: + with open(filename, 'rb') as fp: + raw = fp.read() + except IOError as err: + raise error.XauthError('could not read from {0}: {1}'.format(filename, err)) + + self.entries = [] + + # entry format (all shorts in big-endian) + # short family; + # short addrlen; + # char addr[addrlen]; + # short numlen; + # char num[numlen]; + # short namelen; + # char name[namelen]; + # short datalen; + # char data[datalen]; + + n = 0 + try: + while n < len(raw): + family, = struct.unpack('>H', raw[n:n+2]) + n = n + 2 + + length, = struct.unpack('>H', raw[n:n+2]) + n = n + length + 2 + addr = raw[n - length : n] + + length, = struct.unpack('>H', raw[n:n+2]) + n = n + length + 2 + num = raw[n - length : n] + + length, = struct.unpack('>H', raw[n:n+2]) + n = n + length + 2 + name = raw[n - length : n] + + length, = struct.unpack('>H', raw[n:n+2]) + n = n + length + 2 + data = raw[n - length : n] + + if len(data) != length: + break + + self.entries.append((family, addr, num, name, data)) + except struct.error: + print("Xlib.xauth: warning, failed to parse part of xauthority file {0}, aborting all further parsing".format(filename)) + + if len(self.entries) == 0: + print("Xlib.xauth: warning, no xauthority details available") + # raise an error? this should get partially caught by the XNoAuthError in get_best_auth.. + + def __len__(self): + return len(self.entries) + + def __getitem__(self, i): + return self.entries[i] + + def get_best_auth(self, family, address, dispno, + types = ( b"MIT-MAGIC-COOKIE-1", )): + + """Find an authentication entry matching FAMILY, ADDRESS and + DISPNO. + + The name of the auth scheme must match one of the names in + TYPES. If several entries match, the first scheme in TYPES + will be choosen. + + If an entry is found, the tuple (name, data) is returned, + otherwise XNoAuthError is raised. + """ + + num = str(dispno).encode() + + matches = {} + + for efam, eaddr, enum, ename, edata in self.entries: + if enum == b'' and ename not in matches: + enum = num + if efam == family and eaddr == address and num == enum: + matches[ename] = edata + + for t in types: + try: + return (t, matches[t]) + except KeyError: + pass + + raise error.XNoAuthError((family, address, dispno)) diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/__init__.py b/myenv/lib/python3.10/site-packages/Xlib/xobject/__init__.py new file mode 100644 index 0000000..6fb3bc9 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/xobject/__init__.py @@ -0,0 +1,29 @@ +# Xlib.xobject.__init__ -- glue for Xlib.xobject package +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +__all__ = [ + 'colormap', + 'cursor', + 'drawable', + 'fontable', + 'icccm', + 'resource', + ] diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f687410d9e6375e83a6892f9063d65413fd06cfc GIT binary patch literal 288 zcmYk1Jx;_h5QUuumVkCk4v~U2h!!CVY8o1pX5^nC3F~C6vAs(qPD96)(o%5+Dx4Js zPnxIsG(Xa#_4-_7oypXG9|`d_!+$L@+~*3bY>lwuqo{=~o8Fx0P-26RRWY3cDCYn^1s~_n2m5)KE%hjE%V{ScFl-}v z>Brd80G{^9pi_()K&yZjfK!Mz??I%damcbCao9=M>A$m^&GnTGUBpYT%vLoRc~)c{*vvX4 z@@?mDCx6%Sw|huBrssU1u{vu!(pV!hd$otU=Q49!Yc3qYnOc)%X2f~Ip<(mr-Y633 z5m6Hkk3=%!VYD^Ad1sS%+BYu$_uADrf~z~5SKt5ai|bcj-EX!|HFU=tU%9jSVwt!3 z><)1MeU7_yZe`(V#$mg`v$s3N4!@BF&indQ=l!;Qe?RvfFGQ%zj}D!i@DpDGi8PNe z&7+atGkT_HvF8|N`Xl1m%wXmt&2wPHVm6G_pyjX{v|Q%0I?RDIG3Qc#?C@(8CvV?9JE&0d3FJ~R@p^%3EpQI0hfF}b8aPZ!u!E+E2JP< z@nGA8-!1rwKLSa$9+_x8Izg&4@)+U-`v(U04`l>xYftD_Q_pPH6~j2#%j{$zT|F~G zIH75Bw1U@opGQ$~EO%fiqh01L@4&EMM1bFAPiSU{DBj^UV0ohPMR@%%Y3(NcsKs{q z=zi;VB<`lkur=IEcawoXOddqsZ;#RxI(|D45%YaM5-9^dKTSHFIO47TUNpGhio5N6 z*()2@ueC%sjjj%Z@NUqFMC;!;`+3stMPb?sa|3M*_c8-zybN*(OfwFl#30u3sxe+D z^w~g;iYX1?oSO0mbiiQR0Xfw6X-a!K_9iqnrY6-6Oh!}dknZb~d=?YZV;%4^!Mw_1 zdcVsuNAS=`(|S%JCCB41$0QHH_Dx%Iduu@)Ct;9Q?5of?b1NC{71D1G7=puBVH0n) z6Qwge!Z;9uTe!Qy7jWJYA(yA~73gMq7z>G!B1<^79>V5+A)6lzn2+{p!JI%iU4k~G zV8caYnT-EX$gy$qx{6)PF8cj>*z6=1W!kpJG3kTQ()pG?8i*9EQJf_0!|TAo8%R*9 zk^;+J#Xi;Hb(sGieO7_*9*-{+TW!qqK2ux{S5sB2l}`ux>SDM5BiQPwSTGgsZQK+M zF}_r6vhg%mhz?Rb*hcHfFt6AUf*L}dPB7H*@`AuNl}PCMna(4YnH|7#kQwcG6czS$ zH__AN`7;f2kKq?#DZhl|IV5wou1hCX>bwW@0s(O#!q7v&M}8WwP4z0VR;-Mv0@0BQ zeFKeDyRCip;Xa+v12Q3p1cQoyJkbv*!=91q69bcPYD|oWQ^#PQ4^8Bn7z@#gOLE#bnYb zJp0c$@CuSwk<58^ZUwoyAL0%^aOM7ucS!Ev^SYK6gqV4Y2ixfB(#tWFs;LikofzP= zhVHPe2)y zKYtC0+-nZyI$mwc$wdN8bNIUD{8eHNF@}o=+la127L7YamP*}FGh?Qip|F{0W1DRxseqyqd! zm@6Qu|1C-Gj)u}RN*RNe;FuRRmMfH>eTAZ`x(dy19hU?x^EJs~!%}5+-81mR zLtVNH*xVTMBuzk2c~NJY(uwjYv%{o6?84^^p1^Mx=ba=-=DejW^bY=)L15|GINKl% Q>QF~_pa91|Hq)$ literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/cursor.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/cursor.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..19709e576cccd0e47aad29a523d5b0598e740c5d GIT binary patch literal 1102 zcmZuwOK%e~5VpPVZBj}R6++^KgxCXF5El*zRVsp84&{PYNLI3T^XMkt+Pj5Rn-jhA zAK=Je@|9En0pfs|*-hIVaO5vD_B_Aws(wEvu%fh{P6I-Ip|ZVPP!3_60e~Qa7Gyy) zN{L{?DcHiv97^63;R^4P2v0h5_p6h6!v8>$;0k<5LT#YsSuIUuaK+H^8j8-;KOR2Te*3a7-Akci`{OMLJarnTn~d&(pWkoK~t#%T+a1OJ1ta zQuA?LRiNu??2Q0pL-joWyQ-vmwAL_l+NOKj9~)v}>Oh-JeQrI9gV<5rqL`lXFpd0f=e zhGXccGiaraK`Wy{;&$`sAIn@7N^gxsN01?jHFnU2pJ-JtAr*Rea#zYOSm-+ldkA+C z_7UzOVD}yLK*HzTW_k>Yc>oa8n1&3QWLv-Z_r>mp(~Uzyhe>2Z&X=Qw!dr)ANSHnm2l*6x2{ZTPw?`wf221|NU#evcinfBAL=*8l(j literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/drawable.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/drawable.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc7bce7df8872480be9525d738b19f7224e018a7 GIT binary patch literal 23920 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 K5Wh>MTmL`7{w$9G literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/fontable.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/fontable.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0cd6805abb841b74493499551a7e5003ea10a81 GIT binary patch literal 3141 zcma)8TW=dh6yEzSc1Y3-hyp55E(RL66p#=IMRIA7kRtW+fL2H=XJ_I#*?8TVbsJlo zC;Hm|&_4Dr%_~oRM!ZyQ;XAXwteZ%%)*PRiIWu#v-%Q?YMh3pHJ=%Y@W*C1`r~WzU zY@x{*gc;1tj3YBPO@mp?&a5Llwl(j7cVfphwhiVo?~%bgZXdXR*s+HZp9L5RxQD)v ze#j#9Bi#?!%3Y(?c#i#zmZ^Nf?~k}Fo|{!a5M1UXk#fv==}5?2q$FDZEOfTe;g#h7*$KKjb)GpOxIp6xv|#0rL9l z@$F76hISRhi`ZT{hkPt+&e4(dQoZO)Qi8%AAa)eL=+z|L?rc`GDTQJ75lkpWW^UQT>60ki+x0CK#kU4OO#;%yv(n0DoUlJD(FUMP<`d>)1HE-!BCky;ok zJCs)~5me=8ni65dq}uQMx#(bbU?>Zi<>(Pl|fWt!@(Umf%Z8rq=c_vH+$&dp3p6vut!o_!ly2QEuMr4M*oH z%{?=BS`9%Ki*+J&*J&IS=ZGVqkG%xN1I#1X5bqPYOymi`^!*QkAk4h=%%jwm+p<3f5T3e zOHP|C5=ndp0YS>wEYtYqrX+n2Gt2(8ClPJ2si&9fgsi8g>x6+Ro!{*f@5Da|N*7#s z5}m9dC5$KLQ{$vjSbzld$_A)I;85D7SNdg8hGkR&-XAw~3K>saW){3wm%fn9l4A-!JIcZQ+D^(`}*a{UAB35j$mkY`(rXtPtkR1aRYJN8xaTV<1 zSy2gSZYrR85)kw}5EMqdb=>?Ru8vlqwTRDmvn)@$#Zul@3BKMD9248wc(~uu&pJW4 z5^wZSo%8EA&AL+R17fd|YOPk)u7SEuCtm}pbnl6LG=LqXTE&a&Btft(ZV>r~$hSnk zBXSi)*=cs_!aA2~?UEj;msHPAdI9SfCNdgXJ-fpQC+a`%@3rQdIeDi_jMLkQFR)K5 z{Eynhvt;Ao>TR_7izBico}f`Ye&QxQ1UH8wFY+|cwByyZ%yrOo ktrMi{($ve&Izh#u|Eia*1k)#e@Y z4&GzlBG19qC*5+$A(feX9c)7~pGe2$QOi>vyT zXc}lh5-lZ+q&m}y;(B7Flu@E_`p(2jt2O+!#kgi|6AYMhI@OR2Pbf!>uVp^ z1lPfpp%9)$@vJF4*eeg=;T~J?$pC-4$5Z%hj}PJV4(}Xx)K}oa7ymzPhdsSJgfBT+ zA79}#ah~_~^^V$k+Tiro?d`a?UT=N82aBD+qq#PFe5dYqrZ?oGF)wNe zb;?ZOXd3e>iI&yf6qSvWiY(j+kSi39fL}#*BAKhaD=wBRiHhj9Q#7uEotrsrP$;sP zxt*)SDl)1H9?O|t;xDDOAIylMou9dvQN_EIY~12L=Xis`%QCtVa@&|9D{9GnkqIfH zB&=j4`5ncKY%JnD3kz|ZMnz9B67mhR+MV0pZkf~aG^(zd*GVvcUKfqorfaC$KcC%a z^db?LrLO8V)Dgbor$w2|JkFC+9otxQS=O;+=BrFTd&;aAZJW&cE-C@J@g@Rhy}n#y z@62DEo#$m5B`-xLtHzjf$tDXSS5QWqY_57?<4)0&S6GRNJ7T@*db1W?TcgEUmxrFe zKL3Fs?R4(qOoh$GPy83HJXY1K&!5|1m8U#_RaxHz-}CBP=0#9!Ify5-qTfHUaBo}GUERZt1ZpA=Di9W8kks0jtPdE0Lw;y6xE zi)~{+Pjjdf{*Ai(>PP%cPdxHa_jH?hgLgtEJ)^&S2OhBrH7TJ)|A!j%56}5mOMml@ U)sEWJKTIh7+p}%d_wQdH0T9q%q5uE@ literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/resource.cpython-310.pyc b/myenv/lib/python3.10/site-packages/Xlib/xobject/__pycache__/resource.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e98c09a3997cf35ab08389c7a6370591027889a7 GIT binary patch literal 1577 zcmaJ>OK;mo5Z(tRQM44l;-o==B0c2505)9&D0&Ej04dr41$>Av1uqL)yRj%yq`XTd zwxFAR?GN!^;9MlXV z%FbM=aZZ)R`FUn+G`TYQhbT+Wme*b!{cs$)v^0m)WH3(7jf;M#-OJ)^WCmqqm!Td_ zuPR@uG*3&Vp1>D}46-(F^MKEHSAZO?P7DZ{RU@5x4GLXbun|D81Xjo`t=w|!W2mES z1W~2xA%dj?N_~eFN8q;k{9wc4mlFfpT{Y5)0kzd1p_E8Q$*+aohkdc&BQX|s7rKNl z$Kn)>J7p!3bj>08HK(;uocw~U1gT4NS0*{KPOsJpYFrn!>y-pzU;E!y%3LV*JuWy3 zDBwMOp4bud?TrZN%st=NG@^?O_&yfB6>5#0ZSsS7v4I#Y=0>UKSpAz`Kz24Q(cZn> z+_40d*a)$&@*^sl=4BnJ?X7LqR_hdj6vM;~l{%!&eTX}BX!h=zTqkA^7c^>Q1f!Ie z_u>(P1nBdvm(SeO!4oY4+~YwAnqm zhdR|=&6sbXluM_mh(}WMKP1P0sdg`vH3OwcnEX!lreGYr4}3w*%pWQGUypeivOnkoE3K=*4~d mZ5&N)Q5J(Dt0Ab`%}=B$nE!aX@?SQtzM?1`{SSHv55;HFgF^=Z literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/colormap.py b/myenv/lib/python3.10/site-packages/Xlib/xobject/colormap.py new file mode 100644 index 0000000..8ba2fce --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/xobject/colormap.py @@ -0,0 +1,141 @@ +# Xlib.xobject.colormap -- colormap object +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +from Xlib import error +from Xlib.protocol import request + +from . import resource + +import re + +rgb_res = [ + re.compile(r'\Argb:([0-9a-fA-F]{1,4})/([0-9a-fA-F]{1,4})/([0-9a-fA-F]{1,4})\Z'), + re.compile(r'\A#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])\Z'), + re.compile(r'\A#([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])\Z'), + re.compile(r'\A#([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])\Z'), + re.compile(r'\A#([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])\Z'), + ] + +class Colormap(resource.Resource): + __colormap__ = resource.Resource.__resource__ + + def free(self, onerror = None): + request.FreeColormap(display = self.display, + onerror = onerror, + cmap = self.id) + + self.display.free_resource_id(self.id) + + def copy_colormap_and_free(self, scr_cmap): + mid = self.display.allocate_resource_id() + request.CopyColormapAndFree(display = self.display, + mid = mid, + src_cmap = src_cmap) + + cls = self.display.get_resource_class('colormap', Colormap) + return cls(self.display, mid, owner = 1) + + def install_colormap(self, onerror = None): + request.InstallColormap(display = self.display, + onerror = onerror, + cmap = self.id) + + def uninstall_colormap(self, onerror = None): + request.UninstallColormap(display = self.display, + onerror = onerror, + cmap = self.id) + + def alloc_color(self, red, green, blue): + return request.AllocColor(display = self.display, + cmap = self.id, + red = red, + green = green, + blue = blue) + + def alloc_named_color(self, name): + for r in rgb_res: + m = r.match(name) + if m: + rs = m.group(1) + r = int(rs + '0' * (4 - len(rs)), 16) + + gs = m.group(2) + g = int(gs + '0' * (4 - len(gs)), 16) + + bs = m.group(3) + b = int(bs + '0' * (4 - len(bs)), 16) + + return self.alloc_color(r, g, b) + + try: + return request.AllocNamedColor(display = self.display, + cmap = self.id, + name = name) + except error.BadName: + return None + + def alloc_color_cells(self, contiguous, colors, planes): + return request.AllocColorCells(display = self.display, + contiguous = contiguous, + cmap = self.id, + colors = colors, + planes = planes) + + def alloc_color_planes(self, contiguous, colors, red, green, blue): + return request.AllocColorPlanes(display = self.display, + contiguous = contiguous, + cmap = self.id, + colors = colors, + red = red, + green = green, + blue = blue) + + def free_colors(self, pixels, plane_mask, onerror = None): + request.FreeColors(display = self.display, + onerror = onerror, + cmap = self.id, + plane_mask = plane_mask, + pixels = pixels) + + def store_colors(self, items, onerror = None): + request.StoreColors(display = self.display, + onerror = onerror, + cmap = self.id, + items = items) + + def store_named_color(self, name, pixel, flags, onerror = None): + request.StoreNamedColor(display = self.display, + onerror = onerror, + flags = flags, + cmap = self.id, + pixel = pixel, + name = name) + + def query_colors(self, pixels): + r = request.QueryColors(display = self.display, + cmap = self.id, + pixels = pixels) + return r.colors + + def lookup_color(self, name): + return request.LookupColor(display = self.display, + cmap = self.id, + name = name) diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/cursor.py b/myenv/lib/python3.10/site-packages/Xlib/xobject/cursor.py new file mode 100644 index 0000000..2d49bbb --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/xobject/cursor.py @@ -0,0 +1,47 @@ +# Xlib.xobject.cursor -- cursor object +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +from Xlib.protocol import request + +from . import resource + +class Cursor(resource.Resource): + __cursor__ = resource.Resource.__resource__ + + def free(self, onerror = None): + request.FreeCursor(display = self.display, + onerror = onerror, + cursor = self.id) + self.display.free_resource_id(self.id) + + def recolor(self, foreground, background, onerror=None): + fore_red, fore_green, fore_blue = foreground + back_red, back_green, back_blue = background + + request.RecolorCursor(display = self.display, + onerror = onerror, + cursor = self.id, + fore_red = fore_red, + fore_green = fore_green, + fore_blue = fore_blue, + back_red = back_red, + back_green = back_green, + back_blue = back_blue) diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/drawable.py b/myenv/lib/python3.10/site-packages/Xlib/xobject/drawable.py new file mode 100644 index 0000000..c47b91b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/xobject/drawable.py @@ -0,0 +1,835 @@ +# Xlib.xobject.drawable -- drawable objects (window and pixmap) +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +from Xlib import X, Xatom +from Xlib.protocol import request, rq + +# Other X resource objects +from . import resource +from . import colormap +from . import cursor +from . import fontable + +# Inter-client communication conventions +from . import icccm + +class Drawable(resource.Resource): + __drawable__ = resource.Resource.__resource__ + + def get_geometry(self): + return request.GetGeometry(display = self.display, + drawable = self) + + def create_pixmap(self, width, height, depth): + pid = self.display.allocate_resource_id() + request.CreatePixmap(display = self.display, + depth = depth, + pid = pid, + drawable = self.id, + width = width, + height = height) + + cls = self.display.get_resource_class('pixmap', Pixmap) + return cls(self.display, pid, owner = 1) + + def create_gc(self, **keys): + cid = self.display.allocate_resource_id() + request.CreateGC(display = self.display, + cid = cid, + drawable = self.id, + attrs = keys) + + cls = self.display.get_resource_class('gc', fontable.GC) + return cls(self.display, cid, owner = 1) + + def copy_area(self, gc, src_drawable, src_x, src_y, width, height, dst_x, dst_y, onerror = None): + request.CopyArea(display = self.display, + onerror = onerror, + src_drawable = src_drawable, + dst_drawable = self.id, + gc = gc, + src_x = src_x, + src_y = src_y, + dst_x = dst_x, + dst_y = dst_y, + width = width, + height = height) + + def copy_plane(self, gc, src_drawable, src_x, src_y, width, height, + dst_x, dst_y, bit_plane, onerror = None): + request.CopyPlane(display = self.display, + onerror = onerror, + src_drawable = src_drawable, + dst_drawable = self.id, + gc = gc, + src_x = src_x, + src_y = src_y, + dst_x = dst_x, + dst_y = dst_y, + width = width, + height = height, + bit_plane = bit_plane) + + def poly_point(self, gc, coord_mode, points, onerror = None): + request.PolyPoint(display = self.display, + onerror = onerror, + coord_mode = coord_mode, + drawable = self.id, + gc = gc, + points = points) + + def point(self, gc, x, y, onerror = None): + request.PolyPoint(display = self.display, + onerror = onerror, + coord_mode = X.CoordModeOrigin, + drawable = self.id, + gc = gc, + points = [(x, y)]) + + def poly_line(self, gc, coord_mode, points, onerror = None): + request.PolyLine(display = self.display, + onerror = onerror, + coord_mode = coord_mode, + drawable = self.id, + gc = gc, + points = points) + + def line(self, gc, x1, y1, x2, y2, onerror = None): + request.PolySegment(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + segments = [(x1, y1, x2, y2)]) + + def poly_segment(self, gc, segments, onerror = None): + request.PolySegment(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + segments = segments) + + def poly_rectangle(self, gc, rectangles, onerror = None): + request.PolyRectangle(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + rectangles = rectangles) + + def rectangle(self, gc, x, y, width, height, onerror = None): + request.PolyRectangle(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + rectangles = [(x, y, width, height)]) + + + def poly_arc(self, gc, arcs, onerror = None): + request.PolyArc(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + arcs = arcs) + + def arc(self, gc, x, y, width, height, angle1, angle2, onerror = None): + request.PolyArc(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + arcs = [(x, y, width, height, angle1, angle2)]) + + def fill_poly(self, gc, shape, coord_mode, points, onerror = None): + request.FillPoly(display = self.display, + onerror = onerror, + shape = shape, + coord_mode = coord_mode, + drawable = self.id, + gc = gc, + points = points) + + def poly_fill_rectangle(self, gc, rectangles, onerror = None): + request.PolyFillRectangle(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + rectangles = rectangles) + + def fill_rectangle(self, gc, x, y, width, height, onerror = None): + request.PolyFillRectangle(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + rectangles = [(x, y, width, height)]) + + def poly_fill_arc(self, gc, arcs, onerror = None): + request.PolyFillArc(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + arcs = arcs) + + def fill_arc(self, gc, x, y, width, height, angle1, angle2, onerror = None): + request.PolyFillArc(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + arcs = [(x, y, width, height, angle1, angle2)]) + + + def put_image(self, gc, x, y, width, height, format, + depth, left_pad, data, onerror = None): + request.PutImage(display = self.display, + onerror = onerror, + format = format, + drawable = self.id, + gc = gc, + width = width, + height = height, + dst_x = x, + dst_y = y, + left_pad = left_pad, + depth = depth, + data = data) + + # Trivial little method for putting PIL images. Will break on anything + # but depth 1 or 24... + def put_pil_image(self, gc, x, y, image, onerror = None): + width, height = image.size + if image.mode == '1': + format = X.XYBitmap + depth = 1 + if self.display.info.bitmap_format_bit_order == 0: + rawmode = '1;R' + else: + rawmode = '1' + pad = self.display.info.bitmap_format_scanline_pad + stride = roundup(width, pad) >> 3 + elif image.mode == 'RGB': + format = X.ZPixmap + depth = 24 + if self.display.info.image_byte_order == 0: + rawmode = 'BGRX' + else: + rawmode = 'RGBX' + pad = self.display.info.bitmap_format_scanline_pad + unit = self.display.info.bitmap_format_scanline_unit + stride = roundup(width * unit, pad) >> 3 + else: + raise ValueError('Unknown data format') + + maxlen = (self.display.info.max_request_length << 2) \ + - request.PutImage._request.static_size + split = maxlen // stride + + x1 = 0 + x2 = width + y1 = 0 + + while y1 < height: + h = min(height, split) + if h < height: + subimage = image.crop((x1, y1, x2, y1 + h)) + else: + subimage = image + w, h = subimage.size + data = subimage.tobytes("raw", rawmode, stride, 0) + self.put_image(gc, x, y, w, h, format, depth, 0, data) + y1 = y1 + h + y = y + h + + + def get_image(self, x, y, width, height, format, plane_mask): + return request.GetImage(display = self.display, + format = format, + drawable = self.id, + x = x, + y = y, + width = width, + height = height, + plane_mask = plane_mask) + + def draw_text(self, gc, x, y, text, onerror = None): + request.PolyText8(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + x = x, + y = y, + items = [text]) + + def poly_text(self, gc, x, y, items, onerror = None): + request.PolyText8(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + x = x, + y = y, + items = items) + + def poly_text_16(self, gc, x, y, items, onerror = None): + request.PolyText16(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + x = x, + y = y, + items = items) + + def image_text(self, gc, x, y, string, onerror = None): + request.ImageText8(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + x = x, + y = y, + string = string) + + def image_text_16(self, gc, x, y, string, onerror = None): + request.ImageText16(display = self.display, + onerror = onerror, + drawable = self.id, + gc = gc, + x = x, + y = y, + string = string) + + def query_best_size(self, item_class, width, height): + return request.QueryBestSize(display = self.display, + item_class = item_class, + drawable = self.id, + width = width, + height = height) + +class Window(Drawable): + __window__ = resource.Resource.__resource__ + + _STRING_ENCODING = 'ISO-8859-1' + _UTF8_STRING_ENCODING = 'UTF-8' + + def create_window(self, x, y, width, height, border_width, depth, + window_class = X.CopyFromParent, + visual = X.CopyFromParent, + onerror = None, + **keys): + + wid = self.display.allocate_resource_id() + request.CreateWindow(display = self.display, + onerror = onerror, + depth = depth, + wid = wid, + parent = self.id, + x = x, + y = y, + width = width, + height = height, + border_width = border_width, + window_class = window_class, + visual = visual, + attrs = keys) + + cls = self.display.get_resource_class('window', Window) + return cls(self.display, wid, owner = 1) + + def change_attributes(self, onerror = None, **keys): + request.ChangeWindowAttributes(display = self.display, + onerror = onerror, + window = self.id, + attrs = keys) + + def get_attributes(self): + return request.GetWindowAttributes(display = self.display, + window = self.id) + + def destroy(self, onerror = None): + request.DestroyWindow(display = self.display, + onerror = onerror, + window = self.id) + + self.display.free_resource_id(self.id) + + def destroy_sub_windows(self, onerror = None): + request.DestroySubWindows(display = self.display, + onerror = onerror, + window = self.id) + + + def change_save_set(self, mode, onerror = None): + request.ChangeSaveSet(display = self.display, + onerror = onerror, + mode = mode, + window = self.id) + + def reparent(self, parent, x, y, onerror = None): + request.ReparentWindow(display = self.display, + onerror = onerror, + window = self.id, + parent = parent, + x = x, + y = y) + + def map(self, onerror = None): + request.MapWindow(display = self.display, + onerror = onerror, + window = self.id) + + def map_sub_windows(self, onerror = None): + request.MapSubwindows(display = self.display, + onerror = onerror, + window = self.id) + + def unmap(self, onerror = None): + request.UnmapWindow(display = self.display, + onerror = onerror, + window = self.id) + + def unmap_sub_windows(self, onerror = None): + request.UnmapSubwindows(display = self.display, + onerror = onerror, + window = self.id) + + def configure(self, onerror = None, **keys): + request.ConfigureWindow(display = self.display, + onerror = onerror, + window = self.id, + attrs = keys) + + def circulate(self, direction, onerror = None): + request.CirculateWindow(display = self.display, + onerror = onerror, + direction = direction, + window = self.id) + + def raise_window(self, onerror = None): + """alias for raising the window to the top - as in XRaiseWindow""" + self.configure(onerror, stack_mode = X.Above) + + def query_tree(self): + return request.QueryTree(display = self.display, + window = self.id) + + def change_property(self, property, property_type, format, data, + mode = X.PropModeReplace, onerror = None): + + request.ChangeProperty(display = self.display, + onerror = onerror, + mode = mode, + window = self.id, + property = property, + type = property_type, + data = (format, data)) + + def change_text_property(self, property, property_type, data, + mode = X.PropModeReplace, onerror = None): + if not isinstance(data, bytes): + if property_type == Xatom.STRING: + data = data.encode(self._STRING_ENCODING) + elif property_type == self.display.get_atom('UTF8_STRING'): + data = data.encode(self._UTF8_STRING_ENCODING) + self.change_property(property, property_type, 8, data, + mode=mode, onerror=onerror) + + def delete_property(self, property, onerror = None): + request.DeleteProperty(display = self.display, + onerror = onerror, + window = self.id, + property = property) + + def get_property(self, property, property_type, offset, length, delete = False): + r = request.GetProperty(display = self.display, + delete = delete, + window = self.id, + property = property, + type = property_type, + long_offset = offset, + long_length = length) + + if r.property_type: + fmt, value = r.value + r.format = fmt + r.value = value + return r + else: + return None + + def get_full_property(self, property, property_type, sizehint = 10): + prop = self.get_property(property, property_type, 0, sizehint) + if prop: + val = prop.value + if prop.bytes_after: + prop = self.get_property(property, property_type, sizehint, + prop.bytes_after // 4 + 1) + val = val + prop.value + + prop.value = val + return prop + else: + return None + + def get_full_text_property(self, property, property_type=X.AnyPropertyType, sizehint = 10): + prop = self.get_full_property(property, property_type, + sizehint=sizehint) + if prop is None or prop.format != 8: + return None + if prop.property_type == Xatom.STRING: + prop.value = prop.value.decode(self._STRING_ENCODING) + elif prop.property_type == self.display.get_atom('UTF8_STRING'): + prop.value = prop.value.decode(self._UTF8_STRING_ENCODING) + # FIXME: at least basic support for compound text would be nice. + # elif prop.property_type == self.display.get_atom('COMPOUND_TEXT'): + return prop.value + + def list_properties(self): + r = request.ListProperties(display = self.display, + window = self.id) + return r.atoms + + def set_selection_owner(self, selection, time, onerror = None): + request.SetSelectionOwner(display = self.display, + onerror = onerror, + window = self.id, + selection = selection, + time = time) + + def convert_selection(self, selection, target, property, time, onerror = None): + request.ConvertSelection(display = self.display, + onerror = onerror, + requestor = self.id, + selection = selection, + target = target, + property = property, + time = time) + + def send_event(self, event, event_mask = 0, propagate = False, onerror = None): + request.SendEvent(display = self.display, + onerror = onerror, + propagate = propagate, + destination = self.id, + event_mask = event_mask, + event = event) + + def grab_pointer(self, owner_events, event_mask, + pointer_mode, keyboard_mode, + confine_to, cursor, time): + + r = request.GrabPointer(display = self.display, + owner_events = owner_events, + grab_window = self.id, + event_mask = event_mask, + pointer_mode = pointer_mode, + keyboard_mode = keyboard_mode, + confine_to = confine_to, + cursor = cursor, + time = time) + return r.status + + def grab_button(self, button, modifiers, owner_events, event_mask, + pointer_mode, keyboard_mode, + confine_to, cursor, onerror = None): + + request.GrabButton(display = self.display, + onerror = onerror, + owner_events = owner_events, + grab_window = self.id, + event_mask = event_mask, + pointer_mode = pointer_mode, + keyboard_mode = keyboard_mode, + confine_to = confine_to, + cursor = cursor, + button = button, + modifiers = modifiers) + + def ungrab_button(self, button, modifiers, onerror = None): + request.UngrabButton(display = self.display, + onerror = onerror, + button = button, + grab_window = self.id, + modifiers = modifiers) + + + def grab_keyboard(self, owner_events, pointer_mode, keyboard_mode, time): + r = request.GrabKeyboard(display = self.display, + owner_events = owner_events, + grab_window = self.id, + time = time, + pointer_mode = pointer_mode, + keyboard_mode = keyboard_mode) + + return r.status + + def grab_key(self, key, modifiers, owner_events, pointer_mode, keyboard_mode, onerror = None): + request.GrabKey(display = self.display, + onerror = onerror, + owner_events = owner_events, + grab_window = self.id, + modifiers = modifiers, + key = key, + pointer_mode = pointer_mode, + keyboard_mode = keyboard_mode) + + def ungrab_key(self, key, modifiers, onerror = None): + request.UngrabKey(display = self.display, + onerror = onerror, + key = key, + grab_window = self.id, + modifiers = modifiers) + + def query_pointer(self): + return request.QueryPointer(display = self.display, + window = self.id) + + def get_motion_events(self, start, stop): + r = request.GetMotionEvents(display = self.display, + window = self.id, + start = start, + stop = stop) + return r.events + + def translate_coords(self, src_window, src_x, src_y): + return request.TranslateCoords(display = self.display, + src_wid = src_window, + dst_wid = self.id, + src_x = src_x, + src_y = src_y) + + def warp_pointer(self, x, y, src_window = 0, src_x = 0, src_y = 0, + src_width = 0, src_height = 0, onerror = None): + + request.WarpPointer(display = self.display, + onerror = onerror, + src_window = src_window, + dst_window = self.id, + src_x = src_x, + src_y = src_y, + src_width = src_width, + src_height = src_height, + dst_x = x, + dst_y = y) + + def set_input_focus(self, revert_to, time, onerror = None): + request.SetInputFocus(display = self.display, + onerror = onerror, + revert_to = revert_to, + focus = self.id, + time = time) + + def clear_area(self, x = 0, y = 0, width = 0, height = 0, exposures = False, onerror = None): + request.ClearArea(display = self.display, + onerror = onerror, + exposures = exposures, + window = self.id, + x = x, + y = y, + width = width, + height = height) + + def create_colormap(self, visual, alloc): + mid = self.display.allocate_resource_id() + request.CreateColormap(display = self.display, + alloc = alloc, + mid = mid, + window = self.id, + visual = visual) + cls = self.display.get_resource_class('colormap', colormap.Colormap) + return cls(self.display, mid, owner = 1) + + def list_installed_colormaps(self): + r = request.ListInstalledColormaps(display = self.display, + window = self.id) + return r.cmaps + + def rotate_properties(self, properties, delta, onerror = None): + request.RotateProperties(display = self.display, + onerror = onerror, + window = self.id, + delta = delta, + properties = properties) + + def set_wm_name(self, name, onerror = None): + self.change_text_property(Xatom.WM_NAME, Xatom.STRING, name, + onerror = onerror) + + def get_wm_name(self): + return self.get_full_text_property(Xatom.WM_NAME, Xatom.STRING) + + def set_wm_icon_name(self, name, onerror = None): + self.change_text_property(Xatom.WM_ICON_NAME, Xatom.STRING, name, + onerror = onerror) + + def get_wm_icon_name(self): + return self.get_full_text_property(Xatom.WM_ICON_NAME, Xatom.STRING) + + def set_wm_class(self, inst, cls, onerror = None): + self.change_text_property(Xatom.WM_CLASS, Xatom.STRING, + '%s\0%s\0' % (inst, cls), + onerror = onerror) + + def get_wm_class(self): + value = self.get_full_text_property(Xatom.WM_CLASS, Xatom.STRING) + if value is None: + return None + parts = value.split('\0') + if len(parts) < 2: + return None + else: + return parts[0], parts[1] + + def set_wm_transient_for(self, window, onerror = None): + self.change_property(Xatom.WM_TRANSIENT_FOR, Xatom.WINDOW, + 32, [window.id], + onerror = onerror) + + def get_wm_transient_for(self): + d = self.get_property(Xatom.WM_TRANSIENT_FOR, Xatom.WINDOW, 0, 1) + if d is None or d.format != 32 or len(d.value) < 1: + return None + else: + cls = self.display.get_resource_class('window', Window) + return cls(self.display, d.value[0]) + + + def set_wm_protocols(self, protocols, onerror = None): + self.change_property(self.display.get_atom('WM_PROTOCOLS'), + Xatom.ATOM, 32, protocols, + onerror = onerror) + + def get_wm_protocols(self): + d = self.get_full_property(self.display.get_atom('WM_PROTOCOLS'), Xatom.ATOM) + if d is None or d.format != 32: + return [] + else: + return d.value + + def set_wm_colormap_windows(self, windows, onerror = None): + self.change_property(self.display.get_atom('WM_COLORMAP_WINDOWS'), + Xatom.WINDOW, 32, + map(lambda w: w.id, windows), + onerror = onerror) + + def get_wm_colormap_windows(self): + d = self.get_full_property(self.display.get_atom('WM_COLORMAP_WINDOWS'), + Xatom.WINDOW) + if d is None or d.format != 32: + return [] + else: + cls = self.display.get_resource_class('window', Window) + return map(lambda i, d = self.display, c = cls: c(d, i), + d.value) + + + def set_wm_client_machine(self, name, onerror = None): + self.change_text_property(Xatom.WM_CLIENT_MACHINE, Xatom.STRING, name, + onerror = onerror) + + def get_wm_client_machine(self): + return self.get_full_text_property(Xatom.WM_CLIENT_MACHINE, Xatom.STRING) + + def set_wm_normal_hints(self, hints = {}, onerror = None, **keys): + self._set_struct_prop(Xatom.WM_NORMAL_HINTS, Xatom.WM_SIZE_HINTS, + icccm.WMNormalHints, hints, keys, onerror) + + def get_wm_normal_hints(self): + return self._get_struct_prop(Xatom.WM_NORMAL_HINTS, Xatom.WM_SIZE_HINTS, + icccm.WMNormalHints) + + def set_wm_hints(self, hints = {}, onerror = None, **keys): + self._set_struct_prop(Xatom.WM_HINTS, Xatom.WM_HINTS, + icccm.WMHints, hints, keys, onerror) + + def get_wm_hints(self): + return self._get_struct_prop(Xatom.WM_HINTS, Xatom.WM_HINTS, + icccm.WMHints) + + def set_wm_state(self, hints = {}, onerror = None, **keys): + atom = self.display.get_atom('WM_STATE') + self._set_struct_prop(atom, atom, icccm.WMState, hints, keys, onerror) + + def get_wm_state(self): + atom = self.display.get_atom('WM_STATE') + return self._get_struct_prop(atom, atom, icccm.WMState) + + def set_wm_icon_size(self, hints = {}, onerror = None, **keys): + self._set_struct_prop(Xatom.WM_ICON_SIZE, Xatom.WM_ICON_SIZE, + icccm.WMIconSize, hints, keys, onerror) + + def get_wm_icon_size(self): + return self._get_struct_prop(Xatom.WM_ICON_SIZE, Xatom.WM_ICON_SIZE, + icccm.WMIconSize) + + # Helper function for getting structured properties. + # pname and ptype are atoms, and pstruct is a Struct object. + # Returns a DictWrapper, or None + + def _get_struct_prop(self, pname, ptype, pstruct): + r = self.get_property(pname, ptype, 0, pstruct.static_size // 4) + if r and r.format == 32: + value = rq.encode_array(r.value) + if len(value) == pstruct.static_size: + return pstruct.parse_binary(value, self.display)[0] + + return None + + # Helper function for setting structured properties. + # pname and ptype are atoms, and pstruct is a Struct object. + # hints is a mapping or a DictWrapper, keys is a mapping. keys + # will be modified. onerror is the error handler. + + def _set_struct_prop(self, pname, ptype, pstruct, hints, keys, onerror): + if isinstance(hints, rq.DictWrapper): + keys.update(hints._data) + else: + keys.update(hints) + + value = pstruct.to_binary(*(), **keys) + + self.change_property(pname, ptype, 32, value, onerror = onerror) + + +class Pixmap(Drawable): + __pixmap__ = resource.Resource.__resource__ + + def free(self, onerror = None): + request.FreePixmap(display = self.display, + onerror = onerror, + pixmap = self.id) + + self.display.free_resource_id(self.id) + + def create_cursor(self, mask, foreground, background, x, y): + fore_red, fore_green, fore_blue = foreground + back_red, back_green, back_blue = background + cid = self.display.allocate_resource_id() + request.CreateCursor(display = self.display, + cid = cid, + source = self.id, + mask = mask, + fore_red = fore_red, + fore_green = fore_green, + fore_blue = fore_blue, + back_red = back_red, + back_green = back_green, + back_blue = back_blue, + x = x, + y = y) + cls = self.display.get_resource_class('cursor', cursor.Cursor) + return cls(self.display, cid, owner = 1) + + +def roundup(value, unit): + return (value + (unit - 1)) & ~(unit - 1) diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/fontable.py b/myenv/lib/python3.10/site-packages/Xlib/xobject/fontable.py new file mode 100644 index 0000000..4a33890 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/xobject/fontable.py @@ -0,0 +1,110 @@ +# Xlib.xobject.fontable -- fontable objects (GC, font) +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +from Xlib.protocol import request + +from . import resource +from . import cursor + +class Fontable(resource.Resource): + __fontable__ = resource.Resource.__resource__ + + def query(self): + return request.QueryFont(display = self.display, + font = self.id) + + def query_text_extents(self, string): + return request.QueryTextExtents(display = self.display, + font = self.id, + string = string) + + +class GC(Fontable): + __gc__ = resource.Resource.__resource__ + + def change(self, onerror = None, **keys): + request.ChangeGC(display = self.display, + onerror = onerror, + gc = self.id, + attrs = keys) + + + def copy(self, src_gc, mask, onerror = None): + request.CopyGC(display = self.display, + onerror = onerror, + src_gc = src_gc, + dst_gc = self.id, + mask = mask) + + def set_dashes(self, offset, dashes, onerror = None): + request.SetDashes(display = self.display, + onerror = onerror, + gc = self.id, + dash_offset = offset, + dashes = dashes) + + def set_clip_rectangles(self, x_origin, y_origin, rectangles, ordering, onerror = None): + request.SetClipRectangles(display = self.display, + onerror = onerror, + ordering = ordering, + gc = self.id, + x_origin = x_origin, + y_origin = y_origin, + rectangles = rectangles) + def free(self, onerror = None): + request.FreeGC(display = self.display, + onerror = onerror, + gc = self.id) + + self.display.free_resource_id(self.id) + + + +class Font(Fontable): + __font__ = resource.Resource.__resource__ + + def close(self, onerror = None): + request.CloseFont(display = self.display, + onerror = onerror, + font = self.id) + self.display.free_resource_id(self.id) + + def create_glyph_cursor(self, mask, source_char, mask_char, + foreground, background): + fore_red, fore_green, fore_blue = foreground + back_red, back_green, back_blue = background + + cid = self.display.allocate_resource_id() + request.CreateGlyphCursor(display = self.display, + cid = cid, + source = self.id, + mask = mask, + source_char = source_char, + mask_char = mask_char, + fore_red = fore_red, + fore_green = fore_green, + fore_blue = fore_blue, + back_red = back_red, + back_green = back_green, + back_blue = back_blue) + + cls = self.display.get_resource_class('cursor', cursor.Cursor) + return cls(self.display, cid, owner = 1) diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/icccm.py b/myenv/lib/python3.10/site-packages/Xlib/xobject/icccm.py new file mode 100644 index 0000000..a328925 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/xobject/icccm.py @@ -0,0 +1,75 @@ +# Xlib.xobject.icccm -- ICCCM structures +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +from Xlib import X, Xutil +from Xlib.protocol import rq + +Aspect = rq.Struct( rq.Int32('num'), rq.Int32('denum') ) + +WMNormalHints = rq.Struct( rq.Card32('flags'), + rq.Pad(16), + rq.Int32('min_width', default = 0), + rq.Int32('min_height', default = 0), + rq.Int32('max_width', default = 0), + rq.Int32('max_height', default = 0), + rq.Int32('width_inc', default = 0), + rq.Int32('height_inc', default = 0), + rq.Object('min_aspect', Aspect, default = (0, 0)), + rq.Object('max_aspect', Aspect, default = (0, 0)), + rq.Int32('base_width', default = 0), + rq.Int32('base_height', default = 0), + rq.Int32('win_gravity', default = 0), + ) + +WMHints = rq.Struct( rq.Card32('flags'), + rq.Card32('input', default = 0), + rq.Set('initial_state', 4, + # withdrawn is totally bogus according to + # ICCCM, but some window managers seem to + # use this value to identify dockapps. + # Oh well. + ( Xutil.WithdrawnState, + Xutil.NormalState, + Xutil.IconicState ), + default = Xutil.NormalState), + rq.Pixmap('icon_pixmap', default = 0), + rq.Window('icon_window', default = 0), + rq.Int32('icon_x', default = 0), + rq.Int32('icon_y', default = 0), + rq.Pixmap('icon_mask', default = 0), + rq.Window('window_group', default = 0), + ) + +WMState = rq.Struct( rq.Set('state', 4, + ( Xutil.WithdrawnState, + Xutil.NormalState, + Xutil.IconicState )), + rq.Window('icon', ( X.NONE, )), + ) + + +WMIconSize = rq.Struct( rq.Card32('min_width'), + rq.Card32('min_height'), + rq.Card32('max_width'), + rq.Card32('max_height'), + rq.Card32('width_inc'), + rq.Card32('height_inc'), + ) diff --git a/myenv/lib/python3.10/site-packages/Xlib/xobject/resource.py b/myenv/lib/python3.10/site-packages/Xlib/xobject/resource.py new file mode 100644 index 0000000..460b1f0 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/Xlib/xobject/resource.py @@ -0,0 +1,54 @@ +# Xlib.xobject.resource -- any X resource object +# +# Copyright (C) 2000 Peter Liljenberg +# +# 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., +# 59 Temple Place, +# Suite 330, +# Boston, MA 02111-1307 USA + +from Xlib.protocol import request + +class Resource(object): + def __init__(self, display, rid, owner = 0): + self.display = display + self.id = rid + self.owner = owner + + def __resource__(self): + return self.id + + def __eq__(self, obj): + if isinstance(obj, Resource): + if self.display == obj.display: + return self.id == obj.id + else: + return False + else: + return id(self) == id(obj) + + def __ne__(self, obj): + return not self == obj + + def __hash__(self): + return int(self.id) + + def __repr__(self): + return '<%s 0x%08x>' % (self.__class__.__name__, self.id) + + def kill_client(self, onerror = None): + request.KillClient(display = self.display, + onerror = onerror, + resource = self.id) diff --git a/myenv/lib/python3.10/site-packages/__pycache__/six.cpython-310.pyc b/myenv/lib/python3.10/site-packages/__pycache__/six.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..455a7f320c96c6544840626c7525b1166758ce64 GIT binary patch literal 27678 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 ZRd!ioMM7%LB$ir(XfKag5>IeL@jtG+rj-By literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/_distutils_hack/__init__.py b/myenv/lib/python3.10/site-packages/_distutils_hack/__init__.py new file mode 100644 index 0000000..f987a53 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/_distutils_hack/__init__.py @@ -0,0 +1,222 @@ +# don't import any costly modules +import sys +import os + + +is_pypy = '__pypy__' in sys.builtin_module_names + + +def warn_distutils_present(): + if 'distutils' not in sys.modules: + return + if is_pypy and sys.version_info < (3, 7): + # PyPy for 3.6 unconditionally imports distutils, so bypass the warning + # https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250 + return + import warnings + + warnings.warn( + "Distutils was imported before Setuptools, but importing Setuptools " + "also replaces the `distutils` module in `sys.modules`. This may lead " + "to undesirable behaviors or errors. To avoid these issues, avoid " + "using distutils directly, ensure that setuptools is installed in the " + "traditional way (e.g. not an editable install), and/or make sure " + "that setuptools is always imported before distutils." + ) + + +def clear_distutils(): + if 'distutils' not in sys.modules: + return + import warnings + + warnings.warn("Setuptools is replacing distutils.") + mods = [ + name + for name in sys.modules + if name == "distutils" or name.startswith("distutils.") + ] + for name in mods: + del sys.modules[name] + + +def enabled(): + """ + Allow selection of distutils by environment variable. + """ + which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'local') + return which == 'local' + + +def ensure_local_distutils(): + import importlib + + clear_distutils() + + # With the DistutilsMetaFinder in place, + # perform an import to cause distutils to be + # loaded from setuptools._distutils. Ref #2906. + with shim(): + importlib.import_module('distutils') + + # check that submodules load as expected + core = importlib.import_module('distutils.core') + assert '_distutils' in core.__file__, core.__file__ + assert 'setuptools._distutils.log' not in sys.modules + + +def do_override(): + """ + Ensure that the local copy of distutils is preferred over stdlib. + + See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401 + for more motivation. + """ + if enabled(): + warn_distutils_present() + ensure_local_distutils() + + +class _TrivialRe: + def __init__(self, *patterns): + self._patterns = patterns + + def match(self, string): + return all(pat in string for pat in self._patterns) + + +class DistutilsMetaFinder: + def find_spec(self, fullname, path, target=None): + # optimization: only consider top level modules and those + # found in the CPython test suite. + if path is not None and not fullname.startswith('test.'): + return + + method_name = 'spec_for_{fullname}'.format(**locals()) + method = getattr(self, method_name, lambda: None) + return method() + + def spec_for_distutils(self): + if self.is_cpython(): + return + + import importlib + import importlib.abc + import importlib.util + + try: + mod = importlib.import_module('setuptools._distutils') + except Exception: + # There are a couple of cases where setuptools._distutils + # may not be present: + # - An older Setuptools without a local distutils is + # taking precedence. Ref #2957. + # - Path manipulation during sitecustomize removes + # setuptools from the path but only after the hook + # has been loaded. Ref #2980. + # In either case, fall back to stdlib behavior. + return + + class DistutilsLoader(importlib.abc.Loader): + def create_module(self, spec): + mod.__name__ = 'distutils' + return mod + + def exec_module(self, module): + pass + + return importlib.util.spec_from_loader( + 'distutils', DistutilsLoader(), origin=mod.__file__ + ) + + @staticmethod + def is_cpython(): + """ + Suppress supplying distutils for CPython (build and tests). + Ref #2965 and #3007. + """ + return os.path.isfile('pybuilddir.txt') + + def spec_for_pip(self): + """ + Ensure stdlib distutils when running under pip. + See pypa/pip#8761 for rationale. + """ + if self.pip_imported_during_build(): + return + clear_distutils() + self.spec_for_distutils = lambda: None + + @classmethod + def pip_imported_during_build(cls): + """ + Detect if pip is being imported in a build script. Ref #2355. + """ + import traceback + + return any( + cls.frame_file_is_setup(frame) for frame, line in traceback.walk_stack(None) + ) + + @staticmethod + def frame_file_is_setup(frame): + """ + Return True if the indicated frame suggests a setup.py file. + """ + # some frames may not have __file__ (#2940) + return frame.f_globals.get('__file__', '').endswith('setup.py') + + def spec_for_sensitive_tests(self): + """ + Ensure stdlib distutils when running select tests under CPython. + + python/cpython#91169 + """ + clear_distutils() + self.spec_for_distutils = lambda: None + + sensitive_tests = ( + [ + 'test.test_distutils', + 'test.test_peg_generator', + 'test.test_importlib', + ] + if sys.version_info < (3, 10) + else [ + 'test.test_distutils', + ] + ) + + +for name in DistutilsMetaFinder.sensitive_tests: + setattr( + DistutilsMetaFinder, + f'spec_for_{name}', + DistutilsMetaFinder.spec_for_sensitive_tests, + ) + + +DISTUTILS_FINDER = DistutilsMetaFinder() + + +def add_shim(): + DISTUTILS_FINDER in sys.meta_path or insert_shim() + + +class shim: + def __enter__(self): + insert_shim() + + def __exit__(self, exc, value, tb): + remove_shim() + + +def insert_shim(): + sys.meta_path.insert(0, DISTUTILS_FINDER) + + +def remove_shim(): + try: + sys.meta_path.remove(DISTUTILS_FINDER) + except ValueError: + pass diff --git a/myenv/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a70731020396a3658896a7eeb0670ce0a1603f68 GIT binary patch literal 7618 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc b/myenv/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..52aea0cea0c6c21703e964d266884e6f51118d05 GIT binary patch literal 271 zcmZ9H!Ab)`42Ea+B$Z-)jDl?{UPU~3_TsIVuxrB3(A{R3$*kr3fdFO)mJv(tMM H*us1PTV+uI literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/_distutils_hack/override.py b/myenv/lib/python3.10/site-packages/_distutils_hack/override.py new file mode 100644 index 0000000..2cc433a --- /dev/null +++ b/myenv/lib/python3.10/site-packages/_distutils_hack/override.py @@ -0,0 +1 @@ +__import__('_distutils_hack').do_override() diff --git a/myenv/lib/python3.10/site-packages/distutils-precedence.pth b/myenv/lib/python3.10/site-packages/distutils-precedence.pth new file mode 100644 index 0000000..7f009fe --- /dev/null +++ b/myenv/lib/python3.10/site-packages/distutils-precedence.pth @@ -0,0 +1 @@ +import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'local') == 'local'; enabled and __import__('_distutils_hack').add_shim(); diff --git a/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/INSTALLER b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/METADATA b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/METADATA new file mode 100644 index 0000000..6eeadf9 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/METADATA @@ -0,0 +1,78 @@ +Metadata-Version: 2.4 +Name: evdev +Version: 1.9.2 +Summary: Bindings to the Linux input handling subsystem +Author-email: Georgi Valkov +Maintainer-email: Tobi +License: Copyright (c) 2012-2025 Georgi Valkov. 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 author 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 AUTHORS OR + COPYRIGHT HOLDERS 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: Homepage, https://github.com/gvalkov/python-evdev +Keywords: evdev,input,uinput +Classifier: Development Status :: 5 - Production/Stable +Classifier: Programming Language :: Python :: 3 +Classifier: Operating System :: POSIX :: Linux +Classifier: Intended Audience :: Developers +Classifier: Topic :: Software Development :: Libraries +Classifier: License :: OSI Approved :: BSD License +Classifier: Programming Language :: Python :: Implementation :: CPython +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +License-File: LICENSE +Dynamic: license-file + +# evdev + + + +This package provides bindings to the generic input event interface in Linux. +The *evdev* interface serves the purpose of passing events generated in the +kernel directly to userspace through character devices that are typically +located in `/dev/input/`. + +This package also comes with bindings to *uinput*, the userspace input +subsystem. *Uinput* allows userspace programs to create and handle input devices +that can inject events directly into the input subsystem. + +***Documentation:*** +https://python-evdev.readthedocs.io/en/latest/ + +***Development:*** +https://github.com/gvalkov/python-evdev + +***Package:*** +https://pypi.python.org/pypi/evdev + +***Changelog:*** +https://python-evdev.readthedocs.io/en/latest/changelog.html diff --git a/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/RECORD b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/RECORD new file mode 100644 index 0000000..1e160b6 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/RECORD @@ -0,0 +1,39 @@ +evdev-1.9.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +evdev-1.9.2.dist-info/METADATA,sha256=SFlJ2PoLjy17pdWwoYfIG4NuNvjRVyuSDDa1jeOpz8Y,3700 +evdev-1.9.2.dist-info/RECORD,, +evdev-1.9.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +evdev-1.9.2.dist-info/WHEEL,sha256=0-G7woG4LgutcYzUGJCOYFgoh749-FtfhSMeIPLVGS0,104 +evdev-1.9.2.dist-info/licenses/LICENSE,sha256=1FVJYNZJYVDIjB_QLXlzEhqaV7lh6lj-NJ-_ito4FrI,1507 +evdev-1.9.2.dist-info/top_level.txt,sha256=tgRM-peDJTah3Is39Micsqkx31ek4FTHG4usyN23Xsk,6 +evdev/__init__.py,sha256=cu0Qu3CK4loreHKefFqudMmHQP-P-rkXSjrzjxHUCbw,1011 +evdev/__pycache__/__init__.cpython-310.pyc,, +evdev/__pycache__/device.cpython-310.pyc,, +evdev/__pycache__/ecodes.cpython-310.pyc,, +evdev/__pycache__/ecodes_runtime.cpython-310.pyc,, +evdev/__pycache__/eventio.cpython-310.pyc,, +evdev/__pycache__/eventio_async.cpython-310.pyc,, +evdev/__pycache__/events.cpython-310.pyc,, +evdev/__pycache__/evtest.cpython-310.pyc,, +evdev/__pycache__/ff.cpython-310.pyc,, +evdev/__pycache__/genecodes_c.cpython-310.pyc,, +evdev/__pycache__/genecodes_py.cpython-310.pyc,, +evdev/__pycache__/uinput.cpython-310.pyc,, +evdev/__pycache__/util.cpython-310.pyc,, +evdev/_ecodes.cpython-310-x86_64-linux-gnu.so,sha256=8TJ9RZ-oCWC4gmroNOwIKwAO95DK77vgZiBWHOAvybE,86064 +evdev/_input.cpython-310-x86_64-linux-gnu.so,sha256=cPweEaP-F3A8Bg-GB0m1i13eHRcZy8YcpubsMaXyppE,50336 +evdev/_uinput.cpython-310-x86_64-linux-gnu.so,sha256=KSz0wkyM1yeCBdWCcdSY2z5sDm30mgdVlhNjmRk8qVg,38608 +evdev/device.py,sha256=8sKHGmZh3DF1lJpsIy0pF1R9L5qGzazFGretaysu1Os,12959 +evdev/ecodes.py,sha256=xMg9bIFcPFEgVBs7otCzO8WxRiRysqDmehH4TRCAR-I,97972 +evdev/ecodes_runtime.py,sha256=_QR3aSjX3pbwrk0f1dA-tXjiECKtV_uPpUtXpWP_cTI,2838 +evdev/eventio.py,sha256=4SnIINjPJadQChUEy_1lbTzuTORsydDC7zL2qkegTIY,4422 +evdev/eventio_async.py,sha256=B1qaEKYoiiop8YpG0AFf0lu2Im3CvW50dRPLug40xWA,3078 +evdev/events.py,sha256=_0vXzjv8yFtJR9drfwhmBZl9w4ZmfwQhgCo3WcrWi-Q,5905 +evdev/evtest.py,sha256=u0umJIV_HQUDlbBhLvXEKZ87UZqNIhk0XJRcm5VYIzg,5543 +evdev/ff.py,sha256=1B1VJ8TJ_CpJ01Qi4tUym1p8qZK_HKQSZvvhA8ROoJY,4961 +evdev/genecodes_c.py,sha256=_AhMK1iOQlkykOSzkbCbCJfZTk_dDU-jLsL_7FhYUqM,3618 +evdev/genecodes_py.py,sha256=-FuU-qy4-C_q7xkSwJICwMbCmAxyvezwSU4L2SRqwAs,1996 +evdev/input.c,sha256=omyOdIW51ZwmbcEGYO5_0viY93BX5AYaQ4PQS7s3z1E,16061 +evdev/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +evdev/uinput.c,sha256=9CkdJwL57R-qxaBS3T6vCJq9rC2KrRQK7BTHforK4XI,10188 +evdev/uinput.py,sha256=vJb5E0ThptDo6HeB0mc74zFXkh3_oW7a5amn-jhWo9U,13363 +evdev/util.py,sha256=WzgxwgjBuCE25n6UNPk91Bg2_j6weGUv1VO3vfyX8xU,4409 diff --git a/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/REQUESTED b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/WHEEL b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/WHEEL new file mode 100644 index 0000000..900c5c1 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (80.9.0) +Root-Is-Purelib: false +Tag: cp310-cp310-linux_x86_64 + diff --git a/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/licenses/LICENSE b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/licenses/LICENSE new file mode 100644 index 0000000..8482b07 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/licenses/LICENSE @@ -0,0 +1,29 @@ +Copyright (c) 2012-2025 Georgi Valkov. 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 author 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 AUTHORS OR +COPYRIGHT HOLDERS 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/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/top_level.txt b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/top_level.txt new file mode 100644 index 0000000..97a5e58 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev-1.9.2.dist-info/top_level.txt @@ -0,0 +1 @@ +evdev diff --git a/myenv/lib/python3.10/site-packages/evdev/__init__.py b/myenv/lib/python3.10/site-packages/evdev/__init__.py new file mode 100644 index 0000000..bae0fec --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/__init__.py @@ -0,0 +1,39 @@ +# -------------------------------------------------------------------------- +# Gather everything into a single, convenient namespace. +# -------------------------------------------------------------------------- + +# The superfluous "import name as name" syntax is here to satisfy mypy's attrs-defined rule. +# Alternatively all exported objects can be listed in __all__. + +from . import ( + ecodes as ecodes, + ff as ff, +) + +from .device import ( + AbsInfo as AbsInfo, + DeviceInfo as DeviceInfo, + EvdevError as EvdevError, + InputDevice as InputDevice, +) + +from .events import ( + AbsEvent as AbsEvent, + InputEvent as InputEvent, + KeyEvent as KeyEvent, + RelEvent as RelEvent, + SynEvent as SynEvent, + event_factory as event_factory, +) + +from .uinput import ( + UInput as UInput, + UInputError as UInputError, +) + +from .util import ( + categorize as categorize, + list_devices as list_devices, + resolve_ecodes as resolve_ecodes, + resolve_ecodes_dict as resolve_ecodes_dict, +) diff --git a/myenv/lib/python3.10/site-packages/evdev/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/evdev/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..723a66fcb7e32d7494a1bf6b9f0df39841d90c08 GIT binary patch literal 673 zcmY+BJ&)5s5QZJcABhv^lFNNiP|&8}e25kykS@guiGmZ&Hmk&*B-ZVCt=+Ye`A7Vv zZKmLrAz{Vf<`ms7ln>;{U<}k$Dwt#l4lvH;1 zSk;Xgikrwz-2QC~m9a@*7~;t%=+4m>5a;NrtA;2AYT$=mZlvnS!q>jn&W3+~kn@t{ zI|E0l%I{$3qSS^v7tWKm3k6z=7Wmow`hU%fGB=+$x7Jhi(8^7~W6{v80?LGhh!8ut zHy}q^O(-)Z(D>AhFejuAENV)+yIN4@!odcODTP{+UJ)({Ylk16x}})#r^!wdAuCR* zX|o5=&qmf+-I~x&UddnGLlc>Z|HP;^>3zAseh+L@-K(P=lHyTL%>o@X{0LhSE(pSs|~fO zRkWsF(VOW?x|ykDn%PRWnXBZQLzSUszLIYaSB9H~Nb%=4fTKxu>$HS*#S5 zR40$zbYpLGtTNWzSJ|hezDl+B>M47Cb52RozbN0|E5Da&DH|y}&ocG_``|OJa_B~i zWm)cdiskGa(ua{AVtJ(VBK;Q9!>oXGL8RYCdW4N4J!b^Fla)HA(ugegm@(w^_J z&Q!US5AI@3b7Z73AEu~fPgOE34;l;y+1V9uzEyXvf58}tyN$MQ8`cxYGaO{|rsZQ@Q~A7szgeSN zZ4nK8qCvH4Y&ia^VeQt+I3-%uT+VH8-EA??@Lj`Swb6~BiixH)3VQN<-mdvG;W)m} zofS;P6CIq2{zU4r)o9xyW*E0D)bR~&ue;p0nIXyyOk0dXs|aV_bXsAPrFFaJ)E(P1 zkmoep&DS)to@{S~PG8%o-tKg^wW7>$9DmjF4N$l3VZI6+*E~MVD{IK*c5dtKo4lQmAW;iXR(YqwXhSO*mE4INLuV!(E0arGSHFpz| z7xv+_FnHanf#ogMqod^+XTX2Yw=EV93>K1XKp3{Iu2&S3UX1VcI_zf&$&z6##yyH= zO$(E^o?t~2)#~h(CG+b^gMRMGpGvh_BDzJqju&9GTaND;>mXti>vfto(Q`uNo^Ccv zlV}o6T@1usUkJ6;2>VD5x)_eS7!JEQI4;Q28!_yFTgQDGSpFXY|8 zRsc6#tg+?#My+8r*W(3Ao+Y-(H=%$|icXqR@a|);V2xPuq~Wz|tA=lR4~Z@fyY7=b zL9V#B4vvO=3(|rYfrj1?SWg0-q!A$`DaiL|QzMNP{ZU-ScNL#U=LS>OQr*;dDJTuK z+?kg0^>k~Jc99`|ttaAFh&p9Z{~`xN;P;ghWTZYpO!w?Y{Z)#;i=KbCD+1^9nT|d3P>94vibKTvrxd~O^BVn#s*fgfe+nx_y`q1><2M-!HKi%B4TaQmS zoRzTIxv8^fPJ7VWr$C5@)&tu+ZIik^jn4sP);FPQP3$Yvyi5zEmFAVso=_J~g=OVe z*&t_{r14BM$eU)NDV4HpqUl!bsJ3{__iabH#;1 zAlb9QC7gDVxXkXNdZi>YyJ2mHLO%!%=sdI&I0?s>Q7ucD~dEvWqFv zC`gNG2N^leHaXWpNFnD%M40jda=xbEQ(vl5+V_d}p)3o6J>4p4{B2a{B?^cY{0Idk z&@vDlHjw-?d_uyCkg$*iv4rvW;|2pwCr~g;O={zEb%+_<^SM9_++ThC+`dMpvLQ#(H#$Sz5~RqbTPeP;iWb4=FfK!3hL` z2F0_xQuqi}?%?xieS+^pQYDP3oXWQGp6bz`r-C#Q@5wS`YDH(7owhSfud9bs;BuN} zo)ecp6IQcc$+2I;QXWDHS;^^2-X3P3v!Y#Kdk>QhJ;bv1h&^iWu}7&rz6={<`<|zt zDU~AX&WgIjiMo63F?*D1qD>r++m1(V*%h=L3P(uykAYO&a)(~zEcR1Rl_I-J{b2qF z*g>TC#py%rFw*1fEqj!`jSpS}=6-~|gZ1xc@3Qxx7!P1|V`yuz_mO)rOdVw(Aa#fx zV;`cu6Rd>tw-GzZK0@q>{m$CEX!{<^2^vqbQ_pqK$6(jk z8Fm&m-bdYOb`G(l_6O`dyYM`P@?-X~wGT13y`Zn47-n)2Wz_aqypBukW31yi`-JMS z8TJeGa)QlKTC7QDpR&uSG4Y3#o~o3vd#?w>^W<_!(d=B6+ZRSdtNkQ2L*y|it<8;9 z2UdhMPlUbc88xd#>Kj%kj6br}N<)FZZuzT$T4#Yy7JH!6*@xWKP4a14&ZD4ca%-bz zty?Qj!|`EY^C?JWP^{NYyI!|zzGv3x#0WGD-x+tksoUuCmh;g5CUkr5*JyJ`f3(TS zCl#vspAhj=U4<#nR4?0AT3T0mp}d5uHq}nS*Iwvd#n;x-_%c^gFV!s-zU4kWbMNK9o+mh_3z%(fJh7Re<7H!h8V$>RXA@b>bW{s*y^aXP73b44mA?n}!(neL{QXY0n|h(X1k~{r zpp_+TSzq&YKV8>0-<4u|PvmcikZQo%7Aq=cI9UTC9;9mx7iK<tSq;0ZpDp@lEaR|!^lt!Rf zf#M8`*oc`F-M>RG9$6N;GN!_UgV_K>AOGV@Q7x$If9ZwJ;XaZlTTcmtXa(H9UenM? z^ha@8B~ktd+R-E{uavTw%PUPTpn`l(s~DVNAvwg~Qx~Lob+vOSIgw9BvI|?hnTj}e^#mVWR8T_18 zU?h#WT;O@3i$Yp@?g_m4Mg-mT^mshLXP6rt^NYEACorWFrZ#cn z%5vHKa^cR>9I~*CQgZULRWg+I7w2!>To(1uy;1!y=dWG6B?mZH>LZUKXS6tXi@K9D zLc;tS$umFOH`SC&`MFtB&6{7{oD<_*e4~z|+8>wtxOS)Yu;p&RdnIhxAlOm}?;vaF zWUp3F{PIM#nh-d_@*aZP$8y>ZB)25CNnw-zx7G06nB7jR)@U;TfV;xDaIdL9LT{2A zW(N3`=gm|@)C58oDphY#P|iU(j0s3?SakxR(PbooMqQr1Z~<5m5Gl$a%;@r&(oQ6u zfYiTfbK`zuXIyogD^3gBR)E#XO+t&ZR)E;U+N}YC+BR`2KpMuusDhpYXRp|EMzxqKh%8&oN!>Z zROE&GZ>AbW4}DVtOciNF+IB({#$!v3 zX!LJe!rqfj!kwDj1W=9h<=c0b&D)C$x6RuN^X28a#ZZX07tNP%m`ls^SHD1w3#G(L zVABX2yO^|{sY_{p6YGP~e%5n>2P*mA=m4$=;NWB&1ZhFLLGxfZLD&C4HILk|!X6z~ zB5Z_%NgE+ib61i1;W(N{A_M13C-)3uv)50*fE~C7+btnB<)qkzhkLD!8>E)s*fe0p z8Mo%H5zP3%lo=f0gTeyM^6{kcNrKRCe3}lh{{Ku`utu|d=Sw=saB|^Xql~Mwx0fjA zY@GAu{L)oqeB8^Jou?X~^hr%lNKLReDK+K_t`MZykc0#o9OW28s1I%-r=lU*CoDRV zZa`M}162JZJ|QE;NJffD8KGuD7NOZ{H~Ba!Z?gf(9TnPzN@4540$hWLKrl4i3e#<^ z+Ib%D!X*d+>28?txT_=pni6&c7z5Nirkyw>{{(FU*)lQ932Ed{5ygoGMDKX$GOl#f z8=NkLiEO-%AR^K#WzYf!XcT0_p2r~C0tp_^^?O-idEX8qi<}g%Aj>gC2>u{X@|o%q z*Z}gZsSjlwV91*GkUSuzvlP#DdBY8LE;KC!)ut;8!x7|ybvMH--r5H*^tG3 zjx;Si_6ZCmB*@!?<*|4TpT0iI)R($&`#L8>E1xc&NJ$$^TRN0ff)YUD(SXhD* z-KOQ9ZcRLWpKp~w=ZB~(@nbPNamTR3oCwFjbp|f5jz<$4B|v%rt&mmvW`^pq=O_+* zn%R9O!3bgfDFyi_Q*`V~@OX8jC3pb^dl|udh4{u@IOK z0yQ9C9=Hgk+?4o-h)FC2ILP-u;SVGtfG0@9U4yvIBhIf-K-Vv?6iL4x>!|z`&6;q5 zJb;coK^?08-<`e5`3pQ{+teeQ=Lfo zRwc-_ID4g9HBK2~qZn{N8%|AL5(=w4?g!9oyJf93aHmFhV>R1>g&IP$z)ziq(08H0 ziyQHVO&6n6#zLzR-Od??+p@{9so@4rAiAq=gBjMqY+PKqM^0(aV*1MBEzCTgQ3y%K zX<8|4>IX33468vn@uu;B@}Pdhc?lPWTlA;_m8#VcG9(8kasdTaQwCTeY??jE(+Q-K zXA^OCU^@mn4Rs+B#j)W|-)TdIyK<6y=&z)8{xzP&B909ZFPb*ABQ7Zch{7eXw=Zr2 zx9jk%d;E;RRr0NJ=4e`mVIvyABnW3h$1cL$sdf#VaUKAM6osWSJ8Y&+2| z({2%guEf;K_v>R>yp4XO%4+yL>hpKvgeDM^DR&X#yawDCpVQyPvz~=ti}xi@d^mb7 z+`@D5{DKZ^*2a}HZUgD?mKP8%L|4dlXzRtDL?Rsd#Jg;a=;cf-%#oCpaX__+9FHm3 zi6#Z22<|4tRLT4lwv761E|URV*N=%MtKvH<;9cS;;!{6EVV#A;Z6aDWV;^qKY@O-W$JZ$-TVTach z(G~&cCuo^F=;680wcKIfh*u9zM22FvUy+1wEr{XKAH_9%SMhn{2>j3@dVo9pzf~5+ z>mmUqhis`N&xEDLa4w<2xs#tdM_+hDrYt$;fpQV8n2OT7z5e zTlDsr7)$14aqmu0M51+&qo<$bZf?^)v8O3*I(gGT#`sHBnB$5?sx9Vazf2h0AWx|0 zev^*|?io^Va=RN%6<54?J{FIR3x&HTz(x{3f`^TXkUz!@Icqc3&`lM1WVO^A^H1=2 z0r`^q7kRv*tDdhLp{?Sr-{rFx&OmGlxIJ}l`qD)JCWPKn^wI!+dv+Ry0)-OKMS$K%zgokEOKGIL{FwXaTHN zwsJne1*YImw$N2uYBvXeS`+EW8Jh!r@I-Ep6q5sI@8UH z^!aX9q_fX5TSI>C#Sl*UJUsWI9+YAIb5g|atmCY;w~Lk_yC;o$!wX+6hfkb6iQ~gl zp!ep4NBDO1{*<=z|8uz`ykjTX3*~G2%$ewN0I`H<-*el-m7(JuJ`z3djL>pJ+~eY` z#B)YrDn^8X`G6OPl9;_slF-q+Oa||NPewZcvpFRvB}1go;?@Ee6|rQOOT(PxQ_44; zZhSul2Pim50igi=Fa_Jr*`-+e^AemD(*N2{D#I|8BO+FYTlPkj7}zzzaAJXfO}mHs z&5x-{G4Zee2u!LE*-f;9BFO-8wzMU^Jxld6cGH# z*C=RGU{K&vaG3&u4#dWPkPmHqJQNN_!+7YKaI(z!1_fl^ax(FP9HHa5s@N2EMUVkW zfcx=pse<73Ur?=)5EQG~4ZNyIP@hvhaRGh~F$bUbIf5J@BwatC<|m6;b?l^~sx!(> zwRozy|G@rSel#A3+AU zhHxt-y~x6ns}V#Kgv?T&pxh9}1Oo(_Ta+YmlxU{7I~oyCgX5Z(x7n(3vQ+tA3Vwy4 zk_}4*4}!FGDFicxVxORj^h{CAGC_uAGs?KCs^f6D@Eql* Of>zXu)5Y<(#{UN$wc2a| literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/evdev/__pycache__/ecodes.cpython-310.pyc b/myenv/lib/python3.10/site-packages/evdev/__pycache__/ecodes.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bc4b70516a6f3c263522cf8de408909625ba8424 GIT binary patch literal 101127 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 TtBXvwNR_JYZ*Hw`zW4tCjlRlt literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/evdev/__pycache__/ecodes_runtime.cpython-310.pyc b/myenv/lib/python3.10/site-packages/evdev/__pycache__/ecodes_runtime.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4eac9bdfea1e8ff5a782b9fa56fac9987f2a376f GIT binary patch literal 2047 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 U152||xmfz5eiaqxqPb-L8_W?RjQ{`u literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/evdev/__pycache__/eventio_async.cpython-310.pyc b/myenv/lib/python3.10/site-packages/evdev/__pycache__/eventio_async.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..078a0a39f6aebd1c57626d36372eaf61ca32734e GIT binary patch literal 4149 zcmb7HTW=f36`q-0E|(NZU*af^(T7c&HeuROPSdOF8gdgQ^^4lt1>7(#R;!(%M0vT( z&MqaBkbfJhLv4fe5*$T}*XR;>i&zP(qi*5t671_Y7q3pfpvDIx# z{)n}kFK`pK`GSMCd0tifD$e=|hV=*WaFlJ(oMs#QQtfYOo#?iBVS)R_O0mU$q@o@; zto!je#HXc)7}xQpzXef@l!Ss@if62ANlV#1C@3q>>}~}!2Qx=jF{@73Tv@}+l`V65 zyIYe@T>47hc&GyTAX7TX5*-Q%pFK3D_Y=J74Ui0GKIVta=Z8dvWRM^>&sp2b?LI{0 z&2XeO)bzK5EZof-+t9l5b}Zjp-%x zyd(jKFvmIHG`gL0eFdLNW%X4|&8e`H@4rQx$hh_^&NLiLXOVapuW`liF_<_R&f9}K z9^+J-Wn%mu$8|W%tWygs_FiR&@30+qX8qYZ;z#1hd_8r}u+QhS-46Q#`wy5V|F)~S z9jm9AZeo%*AHf|3F#1WHJMf?iGvmWt^ki;p0HbCFBiDRCAT;{^_h^+&Jz2fr*D1rd zw+tZqN$0Z>9IU=9BlRy!cOX}h11!AhLy(M}@-y}iHd#4gry{dX_?~^t&p2m~*-7D& z%J}`lCC}M&j(DV4b&ohWozv|{hRpD z8pEuKh#eH+X8($S6Q~Dz5Sad`l@|xLok-!d_{7(-POKHW%MqMp&_B6Ow6% z{w_$nP8lE$2FmyIy6+DXIf`i9@cqAzf~Z*0*NC6crdNqj@N19AJ49|1DIsr0bWcrS zp{*(ECBW+PR;6XNYAwsGg!s7h5R}*ProREXTu`Kq!h(V#9sE{gRl4|fWKC58<+@xk z#iSvd_*#=KQ%b6)#69@kQWc?NNCOi&Kf+)dIh>;6x#(HbxDY4&RGf%Y3kgb`2^48S zm0|*0mL3vjVuHMkO$?h5iWCJW>=+r4HWv9z<`02fHdZqJ!;7l{huqkQqtaytP9iL*>V(Gk`;2 zk2sXpKLbPCDvtdH#`+Es-S;6>Q;U(Z;NB*Q5+E&Bg1F3yB%nm_Y}2`AK&&Zc>t7Qo z3vQVpTgzgoK`r1}xxsBdS)KWCneDZ1)b}9(Zu-~UHm`Tn0A;H`T=q@s^>i}uir%y1 zJv3gN%L=?51zSm}QJXlcA`H^{tkUqv$g|GYOBI`e<}KloD<(x>^!cu;?bJ{XrR zJ5N)j{)rY%w7z@Uj+Z^AH;DfgUeX;b`~h#_8ppWi`el)(T3zxD0f%mrQdy$r@tFSd z@X6ojCMe8|xbdj>GUi>h>q6|L9q*63{j}ukm$4KkgJF>MkxspXezptOC~s@a0LSYk zdTYx=#AdP zIl_M+Ouo{v*`LLUzV+Pr3j>7L4^J(5z77e^EJYM#DSXr8!RdTrT2@OvJyr~ zswhWHbEL~}poMlUw9w6&B8F$PUDqFx1iG#Mn1~77bsBv}gn&?(>~k7DAYx2b63Wi{ zCm>XnOs_`$gj;hRx7MmRT(j106*^ICpIhlT&6&1n>?kUCY0=g v~toO_7QKt_w8?g?=8}q z8PCE~UC2ALuUgi>NSS;pP?nI?Um>{FvbfEi*zP(l$F_KZyK$lGw%l&9RqU2prEa-Z z?p9irZnahIdM&Rz)tc%~x2A3DLyH%A>5;`tzj0bK(8|05tpcqEt;#)U9<&qCrua0p zX=rt5GrR_^25nZ9L`{^%2~iYvQ4zC|+d9clv`+E*U8^x0+;=U@yVr>n>!v)91?$Ol zJK{pItRvWB7zau%u6>mB@@!>WB-t9%S@UeC6NMcpsS*ut6v>}4b+e*?MSXK%atfzUVjmo2TTS(YaPffA3&9tEuo7)oodDK+%Op2I^ zENnE{y^in}d5{H*Yr2}>4#F&z{WZp;FpJV8kbTw-ddl=N>NHDfEG5i#3DxwxWu@|N zlx(nmnzI~5dWYM25>n4xY&Y{Piko4OiH%f712NZFV^mCouq^csO2!io!Z4Mb`ZVK3 zQV)+caGjeAIi!n6z11z1m(2}z~_ETeWG?T@1;9J`s;a?LGjlECAja)TxDSPEk8>)Hew+cx_yysFT~OMsM)3Fh4Tw4%EY-| z5N-t=wfW+RbX0Jc2_1I?#YoJr)o@wBt0$nj6&L=Z~7p4d=jG zPi^@vWNRB40WWP0tK=JW4>zDH+MK#GI6X1r{R)SsN)>50^;F-&3%B>|UHdVn``CU$ zlg6HIVn;XKCoWBVb#Q5)DIPAi_eSLKaPj;_4ux>T#tM;yd2bYlB@iQcPrivk%x>#_ z*IVxBH4O`0wQ+P|W#0#>`Ti|5dj@ZAx%M0O;N--@Miri07DXz0S>MOY!Ll~(gC${E z0O)23sr;m5md76M%{@FLv6kayqfwFHMvud)?`vo1`vjXL=n7!)t57Y!gC7Wfg-#4KQhMo5PU*$n;h91IFJPnbJiK#fv6ncM+niMsh zjN#v=X}m*%4%vht6v-Kgb4ZF#Y6Yftor+VdSKMh=mxaha^c0~jA*oG>F-3g}Ya5b6 zR91T35@lX^-{Nkovac7Rms-_*y$rq5^7tw4i77rMrrR!`<};6qEyQ~K1gNaW>wFf! zC-_P1)9GPl%-MsR%gN{zXJINPxMvU4?W8QFw6%_`F=EgEA=@+Vvt#868H8O3Yj!$t$q1BqYT^_z+7(1O!FY$r zR{LF3q-5f3y;mm6fMt_3L#)KwX`b*V`>2iaZy`n%G%nshfwPt}l~8vg1V^YUg9t95 zx!<#Hb5G{fgu=klF74M>LeG?nI^uzejVT(V48v|T(S!apJmfq!Nn>MBIsbro?X$hr z#*E>zCY2GF$p(oZk~mL-j+6WmiD?oG5C*%n1WhCwDUE`mbwZ6K=X3OE(ngPG{8ennsoT@GYuEASe(8Mal?StAB=Tzejw+mVP=~Ph0XiI%IS@g}*|UM0Dd5KL zpES7P&Yo>h!V7!OuJc%XgvYM-4u(E$?Hkxf1MI@&v5sf)^4c38` z{_7UtIqDOZ(T?SiVaQ0t!#9zhQAomVa)o1`@x(zO0~c5s`H03-*G%#Zs%n1Lni|?8+<)4syg6Ofhz?P7=phI#Aw46o zj+uYV``i&l1f>+Bx~-DA=OZ}PH+%%ARnUw#tlSZ?#^_*qnJ$D_46ZZ516fU-9&muft(3ZDHN5bp(2i= zv-Z@49%kE)>=+%n-y-Q9^PIu#c*4gYDjJRap&s#YD79%ncAi)ng;DmV`?^IqqEPDX z80VOPLhtkMsRn}>)F&s`5!{EmXbhYXRa!W`} z9!m5AiS0L4RFmnBs7fCph3;-#MSs(y`x8Zw_y(hJe-!gf0VmYyPLy?Y=+MpMEYk3y z?~GX*rm=}3UQAD47e#+3yBHLW*ZqH>=*+REp$|S|U;I4VOwouh#L+*f27?&XC+76c z;OL*!w_%%!zF&%?kI?LINNS%$iX#r8l152;M-!$kAwyEGhTCvP``5zyqkof=r literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/evdev/__pycache__/evtest.cpython-310.pyc b/myenv/lib/python3.10/site-packages/evdev/__pycache__/evtest.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8746cd384dc78d74c818440a9c9c7cfbda2b7ca5 GIT binary patch literal 5926 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 aa$WDc?j`pnZ{97Lz=s)~mQ+pqU;hO>b+7~g literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/evdev/__pycache__/ff.cpython-310.pyc b/myenv/lib/python3.10/site-packages/evdev/__pycache__/ff.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..badd9fd63bd8e19001348ec4cdb538f6d91ddaec GIT binary patch literal 5503 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 Oyw#jP42v?iVS?vCG!FUu5apf>_x%)m8srju+DX zx=ojik6pIW<3*N{l1^&cg<6&&X1fu01&q?lZZ?eZFGnvK8|--nr+VxLLc`PfyIpVar-!?fvt zedW-Wl;dpW_BkHsG9QnRCmv}NTCIIm(c1Aimp7%>s#__i)h1q|m(f^QUO=~1R9roB z^r(t))dR*>S5$Zv`Qf69szGB1T|IPM^`NogqO1|4M-2)O7&u~(Y&-szimN6Ks2DtS z)PNB~uN&lruFW4clyVz%)#$20<0x4)x@!E0K^0kJ2Mwqm)V>Y`s;crwRcDPJMTZ|% z%_WLlZ;^hUrsd7h>nXwyYUNWFN3so{ja=R_Q&Vl5wqoPy3M_HO||dn=Db_h#lPjsaJ17#!bi{EMDLBx z$ne-7!dt%EbM)xZ!LwYN1L*Iz)~1i1J&NqXjn2sSoPYG}`;STARh!Pc^U^bC(Q)sL zX~BywhpU@WQM%K1E=s+lyBnQR!-soIm*oG<8}ID&JulAtC-3%yd2b%LEbq<3{=BI5 zd0YOeZb}*aMz`ynLHyC(QjW;}T;7^X-==-N@fVcm-E!$#zOm1{{hR8r@7dRrg!Fr}lepnYqP&-;Hjkv3|1I9>k6Z*)sQCHskwdiytJ+@SlKkd$}(TU3fh zQ=8FU*{e}>qe11KQOwdi`}X{E^k}=S1g1Lh<-RQhNaCD2O;q+eGrkWYHd5JB%=jLJ zSe3H-VBgD?-30rVC>sg;<|ymSjPFq>zpl!H%=rFe{Vkye% zG2`1iVojC(_BXL6!V;8y#q1l}fvW3k035!-XliB6M4i`!Xn#8QXumj4fm|Y?4TV)|;dfZ*gx`DSt zSt_$i*>{_=rpyKi+n~$?Z>_TZe~~vuyw{cOU{)h+xw3V{Tqjtp;02bn6Fi~p5oS6% zJg)2xW;!}7QZ|v9Uf~h%DrS0xKdD{`Grhu}Rdxw8?X@eEoy#mm3LNoHBIXMGj7mP1 zw7?6L9r%-&7Wf`zJDF*Lrz%^|Oba|w*$QS_;9<%ZFw>!?zp@$3bf_s&Hi4NAE1Aj$ zGSgwDld@uFI;@G%iFXuCVoA@$8f8_?^q?!1g_!9<7c1+= zOwYtzWvR^cOw3T$l$my&$;v!t{IHeAic!k;|3Qo&>Jh6{wu4zcVWrB}F-s7Zt!z27 z`ocOZo6js!SgNw=%o+$gU0F4=hQgXEt7N7P+E7^`Gi^|xvUFzJ%MSIB6WN-X_Ofr4 zB{9;sE8E6Qd)_i-YnW-zTc~U)Go8?8E1SzqC$y=`rZUqB zZGy5f%ubay7^AE|Go8?eE6Zc16WRb}9hvEb)=yaqGrbB5l_fGukz;gMcKA19X9`PG zwwGBeVXc&HW_Fgarpi_`Yb`8R*%D@F3p<=I=VK1DbA)}btcKaS!geVe!7NqSc4d8- zohNLIvTSDO3wuXd8nX+8y{W7vvo^wBQx?zcLSfG;J9LOxTVanV+s*7EVfQH8#4JtN zEy`9gYbR{HvPI0=3%gp`EM^^q^;I^RSw~?d%7!rOBrHo=m|16GU6f@oyI5F9Wo?+H z3%f{JGP5qi&Q%u8tgEoolpXw)*d@Z6E8E4ao3MJyHZZ$X*pWOrzblz_7xt5~h0HD! zwny1aW*NdhRyK)QK-dOlRm?Jly{0V0EKArjW!;!%3wu;qDzl)l`;;|hmLu#=WgfF! zVbhiE|AiQ>^Y}Me*$!q@cV=Uhtz$<0omrK#<;-YIV%A^Td}cJ;FbgT0&Wz$AX4%TB znNg6(>U;ZWowveJobgMrOY%A+^TFYGmQh^RyLK{?C-&nfH3tU}llWhu-mg*~P$k=X!Y^OPMvNNk|6Im-4jyGqzhWt*8*3A*n6Nx$+02Fu>#i(~*$83n zm9=CxQrNl5;+c&SmZI#?PsBzGJ6YLoW@CgkRJMuPHNv8mtztG-*q?Nbalcx`Y@Dz| z%4RXE7WSjE$;`$J`&!u$W)p;crYy{CqOebtWiXp0?0sczm|ZLEEoI5ft`qi}vS?s0 zC_8w7yz9k#M%gZAlZ8F1Yy-0!gx#lXC9@la-KA_Hvnj%+E1SuzMp%uqNz85%HeOj3 zvzvttR~BM+i?9L8x-pw7te3J>X159}RMwQ)G+_Z{9<$qobyl|jM`F{3wNbW%+3mv4 zRJM-U3}MZbEoXLzumolEnavb-l*VN48`GKHDeRE4YG!u{`(9Zkv%7`uR#wPtmatEh zr8B!n*d}GInavjVwz4E<_X=C1?8ts%bA-L9Y#+1xggv8d8?*a`J*sRCvj>FTr)(*+ zxx(&HHW%2<%BC`VP`n$IjR7`US$}5p#G9ZjkJ&@Q#wqK_Y`(A|%2Jp;ENq~%L}m+w zU9Rl#55yi37E-pC*+OA?$~H55R9J?x)yy6fmac3Gv&V&XQZ|R#B4KTn)i8TPSgNuS z%oYnfTUj4wPYP?PESuR9VJ9g|WA>D=1Z6FmJuS>r7SHS%VTUMo;68cidtyt4{h(|& zvuB0vRkn%QGGV)vtz!0^ur10KFh?ZJ50zY`(H&W-kl7M_DwpRl;sncJMo5uL!$V*)C?U3LB|x1GCqJ4N$g{ z*=k|s$`&$vU0A-dnati0cB!&S%>E;+ow6!sYlNMxEX3?hVW%kT#%!&y2Fg;IZ4efv ztSPg1g&n3ClFzxvY@@J)%J%Og_MWhBmF-}*N!TuB>wtZ(Y&o;{#rs6rd}bdA`%u|* zW*-WBTUj-;&B8dwZB+al~GWrfVP3R|u$o!Lji7AtGbY@4tLl_fFzSlBFONB&D} zyRd1>_A&cJ*c4^knC%cYUfCLEp9&kMY$>yy!Uiat%j`2@eU(jRwo6z~Wn-9qE-Y7B ze`a3@>!vJ^*_XmPDeK5=x3D(KQkZ=u>;h$p%=QRNRd)DWVqXh8UD;k{doA0{>>FXH zskfThx58Q|Tf*$W!kQ_Y!)%|h1Z6eMz7yst8^P>*VMj8hAM|1NgRq~KWi#6^><49O z%zhO1wX&AX4hZ{PSv<3!gl$!J=o?}Og{@b%o7vC8-cYuQ*)PIgQMQWNufkR;Tg2>; zuosohIu4u6>^JKTVfMSQ=XKvOu*J$UnEfH%d}VEz9Ts-4vSeobEi$^dx_zbWl7A=7FMb32z^ZY>N&!CE8EBHTw#UEwlPZ;mZ@wFv-5s&1H6h zu-3|^GP_7v3uR-Nr3q`KtUs_gWqH8<&X9B7ky$(0_a|j3!1gLjWY%81?aB^+MXZCc z4a)Wcdqde~W*x;_u52~1CzLH=)=9hvl+9t*S=jB$YM5OtY_hTu%+iI8R@R4E7hzW^ z%VyS9SZ`%%%q|gDtgI!oZo;ya#WTB9SQll7b`$F^EKS*NW*NfHRkjIOOJ%E=1;lHn zY!S0eVU3l|VwNQ=QQ2f>*}~$L4Ph1(7OO1GEJv76Sq3xy-an03e_tm3pbfJ;VSgw~ zW|lAPH)YYxdIDq(Y!dCaPW%}}=g3u1$W z-K1;>v%$h9DO<;WOl8v*Oa9&yH40L zWr@tL7xtL4!@G!07Iwd~z07V9c89Xf%x)AmMcHa*Q-oD3Tf(eH*wxDBFuO@ue`Phy zZWdOmYy`7ggykvg!)&Us%amm^yH!|6WogW&2}@PhlG$y-S}KcYHeFbfvO}K{yIokU zvfa#P2s?7Aobyf0?hy97vQ^Ax3j0CXB4&3A+pTOCv%7?Ss%$c|yM?{4YzVVi!roFA zW_FJ-{_KJ8k209e7WSO7Hq7o7_LQ<@W^;r+p)8u&eZn46c5o-L`-RO?wu{*V!fsKv zf!SPPla#Gw_Mosa$`&%4Cv1?inamy%c7?J@%;pO#Q&z?7VPS>JLd+Hj%Tm^j*(1Wz zm8CLUDC|OIO_@C^ELEAu>@i`dE8G7mvB!lqQ?`TIB4G`btz-6tusCJQnJpF;qijC2 zCxsp9Cg*KBvn9d~E30Pql(0XPRWf^8*db+w%$^bUqq1~nONH%G)|%O~!geW3Vzx}! z4rNDn5PMG8R%QEuZC198*>dZxVfMVR_tjg=j`PlqE8IRoKJI4u3*ywXiwL_A+~2*j#0s znY|(GK4q(!tr0d`*%D@N3Y(#94zsnwZdO*q>@8u}D;vRVv#@GqeVA<#cD1r>W?O|_ zsVt4zN5aC&S~A-vtcS9AW*-a7P`P%^C~L!Px3G_tB{Ta< z*al_M%=QR-UD?5piG3|>g|c1D_6mDa*#>6c2%E2LC9|J}J)~?QvtNYGQ8ts=ufpzB zHi_9GVbhdVG5bx}6lEc1zYCkBtQ)gGgk7U7mDyoo!<02;_NTC`lzGhl64qbY{%yqg ze<4y#-AmaHW>LaI%GNRS3G1P3IWxboY-RJAMGNb$Y&x?TVd=`MnZ*igudI?;oUk^^ z3Yolx<_yP*^=>YnU|> z=2y0qS(327yGnna%dD}mzm!d7)?~nxl%+9C6ZV?2mdx4-dr4V5v-ZMXQFdqx zu?%6aE8ER1AdJ5&!ZFt-W|=m>Rm`%4EmLn1vut6{D4WGBDC`MklbPiRdsNvFX1T%^ zC<`;o6E;^_2D5z2+A!-O>^}99nH31TQ&}{#LSeI&9o$T;$mX|;S+TH()!V?VMA$>h zRx%3-o2P6cv!22pR5p`YrLagnCNUczY`%I`%mxZus4T?nDq&A4>&C1~*a~H-%mxWt zrK~Bl!NT59<}tfk*vrcHe@JYI&2I;@p~9Y4ZymE?!WJo8&TP1_$a$O3Y=p2#`%Pyy zQdp!7s+o-vcCY4F$!xT+yOb3&8zXF*vUFzG2%D;`HM6n8YLq208z<}rWk)_BRxRur zW&4~EkF0*Te^;R~O*>%FMP&S6y^}+@!>(6Ym zunJ{)%x(}CIc`U0HwufCIfdC2VS{zwL}oR@`YAj7KCzpGg_Z4PcC)ZjWt*AZA}mt3 z)y$>}>!scjX1Ch><}jOPy&7h>S#Jch>B4$yetnqTF06;LY-Y18OJjDAuz-3knaviK zt}LF}y}~Y1c4!l^Il|6Swwu{~!cJ4RiP`;Yl*l`Ud6SC~)PEM^Z1`?HIT zr<0k@6ZW&RA?vg{nJp6bsIrC3o)Gq+vYE^l3%f_zBxX+vyIolovn9fA zQWj$Nl(1`+bz}Cluxpg1GJ8hYP-RV-EfqFEnaAu|VSSbD-$-n^u%60xFneBDSlK#e zD}?n@ww&1uHoy7IRtoE_-gIU!3M*Gu&1{vhGG&#_UJ({4OCdAjx zvdzpsv}`rA&6X`;w#BkJ%(hxq!|Wr=MljoESs!K}Tb9jiyJcz2KC!GNvmKVjGyBxC zL+=pVY1wXOpINqv*)GdgG5g%IMa;giY!n0;+o8)kbg zOJ??sWzo#Owd~+}V*j;l7qe?TcfCdW+6HDvt+$dH|Jn^*m+iGrE+ppuqsMs)?q-SZ zH(5GW+4amQFJ=vtUCoU0Vs~UpxFiR5lfU=3i zTtnTZU@%MCP&LX*nQ23fRo0!EHdK|e^OO%!-tq&Wt|6W0tEd zfmw#IOO*Zore1*U6?{V=asi&LYzs5J08^B`&P*@B2zv@x3-#_}rWa)+Wj8U?i!w>s zNM?FbMl0*fOfO2GvLG|PC}WkiW2P5njIz_1=|vgw>M_&NE0W)DYl!LS6{Y)r#jJre z)Db$#JQ}{wtf8&;AiMX9nZW?JAL$}VE21-?w#sm!!j zbW|3{Onb$7%6@%=n4ZN}%D!Z#XR*1m_lUU$XrSO#mb3x<$`%9ri^dG@IE8Ki# zUlGf@eMjCMR~&x#E&d$^_d67|zdS)1oOqpRffFroq6JR0z=;+((E=x0;6w|YXn_+g zaH0iHw7~ywEfDNg(JNS5mQOzrm!DmcSzgAAUcut*l2Tp^m6l|eXN3idMovYDel~=c z`DKAnamcNfmu0$TUVfolW)_wQ!zCr*JeTT~Um7kC$QIhkvHbM3j_uuApKw8Dwp%ML zYu`awZlEX_Dk%*+914`yt_O^{kR&%Bnc*{7|XxnNymd73NkaBRfz;JMdb5aj-O;AK=weg1ijo z?()>Vit{l9Ka^XG80=+BBT^_uaUDDg-kX24KD&pQHumDb)i>W_dVVQXC3oBPIw_6a@S7qBK~@i$G=>FN&xu(W0z3zZX(J;6$-olmun;XtNa z_H^&P-MeflmF@1muX`_d@A>Y%#Jz{ydtopqoLL&lu{1w750cWYxCpFeg-fLr0k@}= zP3oKDNUnR&bMHOedx3kGy}0jWl@!uN#Tf=dG#pTK(yt3}GPjhvyU28;vb_8pX;oL@ z!a$j1+Rqt%+`BYzFSjnuAQ>0Q){>$kDQ0$wqYaAqql)GU|x=Wm;G|exOkI zscq`4K&Y&+g!(ZTHb+itj-1yVIk7o%W^?4!=E%9tk&~MvXO})rm)+$A7nc{+W?7b1 zT2fe8n=A;)js+pvvmhk97KG}0ML|f8SP+s!7KG%O1))%(cASEcl(ZluMJ)(PSqnl^ zf`U+_b@~O13jzh@c>%X@#cY?>o~|S*uvWO8WK${~sDK9Wf zNM?Icc^(*{9-*w-(^U|v>vZl!)%LmqIs=i8P}aAsRC>L0BIm1+#@3vmUW0iwz_{Ym zD9g171#*MB%Dve!x3^oPIn^!QKpfF)6Zyq-amy~*GNgZ z+Jv-zZL&{}wkXYOxzb5_O}c6C-ZCT>m1UPmZL&&ex{fq%X)st^d%=~KP&^T=$j&e0 z_`#J$rbG?`T(SFR6$X1#^-6k6UPS>4rFctbNl8IbptK-zh$5P2wNyNMIfo|l-hoo- zVOfRL@>#MT>_M}xS%;0q!9L-#5(;JbC|s<%t`RB?_R23QFRR_maggRi6M2aqs??QO z_RlM!xPx=bFOxH>vm7J7RQU36+e?EvG?&SM8|;%W=dq|nhv#6n5*e`~XV48_wcWlT z#C?y#LhT?06j;&3QU{8Ia%xKHQgH{(Y1cuQ9d)VWXgeK9+v!N!PKVNVI+nIi6TiI< zQSIg2=d{=S+Dm@ieA+&)6(j4^Sw!S+BWj?qkY=Y)VSZMCLqIvL*);NGmPAfrS$P@t zeK?)247EKchpq=a|m%2L{K4$Miop;K6OHfc=Tu>aT zk}GiqUskSslH^P2mr%k&9NEQ$Q`` zRw)p2Ge%~Z;>diy9io*q_ukIE(@hqU4(`39d++4lJG=Lb-Fv!w@8aHzXex z)}+8Zlemo~6malLD8INMUyeu@LEVaMWh8avHK`}BNnLqO>YE*;yAaOK-F50ZT`GL{ zN>u6*q>IiarBu?U#dM1*QXjXiH(gY2rLTMM=ib9~<4f6uwPJ-@mr_}l(R@!A7aMe= z$alQ7=DNMxiJL+9=T*rgJ3p6hWI4~0l0v%OEUrtGmS<*0nvgeUmX_04i*6R*qDS@( zL4mg9lQ|}H|7^D%acK4p;G}eRza#qU1eJL=M1`n5%)9AsTP*~OKbKcn{ z<#fv&+27?)x3V<28$_W@b_Dd!3(}Cn`R399CAYP;DZTDXWKPtE;e)Z zg*aG}vAiTyI}qj<=g9RI&ez~hABJ!)JRs)lG{wU?-J`p!jmAtGAmz%-3G^x{%?}4< z90`VWa_uDtEz%L029ezI$b1;i4@V-A^31w~+|cuJbINJPpy`m}33t4HC3FYR8|ntf zVBfmQBS3QpJu)ce*~MwFYe+()u#8CIUeW-)vZQ#l6i^nK1Oj0JI-Sv3&^bJit(k|* z>7j)?3{OwG8jcKs*}Y`836#qiRirlvf%3@yZjf~QOFUGf!){@|PG?2IBB=&PtHs%R z`enkZjq2l>yn$Vb4fUI+QPl{{JAQJYU3pybfmlRiPZ?1S7`upnejT` z{Y$Dh1z*(rvS==)hjd&p4w-bdj7ky6E~AS?Wa^`#y!@;(P{^Q&m!i?gNL8wVLuSt>DQ!s7%NKqn`dn(HQa8lq|^Z0eYWg;{w)4O$CJ zawF4OHr<@+nGKffl$S%-SFkR^=4$H~mxS|kG$^akCtiG@5ItThr-xd#C(PXyA)uRviXi>iylV@$E^SD6brpQe zSi7M%L4SOM<(%T$Cpoklx$UPlx$2m8h=`Hh3XQKIR73t+fwAG%Z0R3mjq7XkHwy z&{6=<7`KkV7*fbLdS#L7@YJ8p)uUq6uDgr7HdPz2Iu8m^Sepx%M{m&ihCPzG!*a9A zvuO~yG%?)baztB1&!-||VvmyY(qet8%0m@BehUR6Q3BomL3ASXGvA6x?{Gt}dmy9t zYIJ)?vmt+oz(u0FoC=z1={(fkYS0|nBj1fwwL@|iKX7n6XxsB+@v^dtU~zyyrr@0H z1{%fxmo3ozl1YAMeqnxC?vJudDrn^7IUrnKDjgO^|HyoXNbgtpZjC=6klN8F2YR1$ z46mJwkKyd+mX>J$J7y#A^uKQ8I)rN563YO0tTLo&?vkjTG`LG~kK;CU>$O`-=_9XW zXC%65sY8*gS4ZL6qzpwaEUL(kJl*e*T^HhUjVdD1r8_b|lA-CY_F;^B?tq|IiHs5D z#kG$Q`N;vb8-3&_J%D2xOmi&YGNV= zdnP^;IrKRme;!mv=%X-tRzTM-MJn_ji5;`)(~f^Zx4D9zLY30B>wYzK#I2glTBWa7h7^;wy4IIcc3b6lUB$vRY2pPvbb ziZ|^uYpicX5?>Kd!PW*50 zIJKZo{crC$^`K7vFONF=zu9r>L7o5K-f`+d7sJ23Z{sRvyw|MKXf`8PXG zJ@|_m$9B68$Ein$k;?FOp!Iz%i^5bp&Y$Ni7 zls}56&-W|(xc9#9y`Ot86-3V-czdb9JbBo}gq}4eMQX*c<4U{=T zAGa5XMi2ATBrjf*>}aiBEo)cH+Sju7wX8!e>mZCrzp`@r&IuomBR=<804Kuvg<-9U zTNU3u(d(U`P0vVKl20q$Dm}q)AF?raEy*i9wz{u4I2z_BF49EwEeUtiLc@O#deWhr z73I@I*a&jRvX&yW=m}lz6A;adKCN_fz1D#aSWBcTt_bwVGTfIQf$2_}g(aC4^waZ^ z^3c~D3OE9(L#Dwf3)5ziETxqrDLou@63*6rd!#o#MW8Q*^rpw={J2ztLQ3Y*vmW>rz@-m83V0(wmf+iox?FltP3Vb7-!gh0 zLSK-o&D}k^vTE&}9zE>H;`oVkr1_Tb%F3wRK~B3*clpafee#R=#(@yra7D`CF5O5) zIA*0#xEDQ!;_dX1Tg$=UkD&?$=wU3?ruLBT`!c;Sx}p zy00zpihT6!*7P$yUU%`hTj399+zNl%%PSnc=JLQLw2weHaD}KjI5?$8T>2F=w<_aF zNV-Zf1T{piv8%;_J$qOL3Tq9!FpothXIKa2j~SZiYZAA0A~{`?B`sy{Kl#=ERVm-9QcZpE1Q=lmCv$Nyt4@?zef{_*}P5lBm3ucm*MRF1p=tppn; zP4ksBhz;K2_qPqu(TSaSooIm*EpVa*PPD-P>lR4k|5Q$|gE|=V|7~|KP4oY2=hyU7 zS@I7)@GE_REcu5W_!Sw3`Ntplm7&{tPT*H$`)~go9nI;3{6C!O#s7nwUpx4}eAA2n z_cp(hHO>F~nqPOy!sGvs&oBNl3Vx~P?R!Mhnyu&NAVQJ(ivJHZzfP8g*GCT=;X|Tj zL!_Js)#LvW&acSv{yZw>kCaok{@;7g({?@fh-rGhGIV+D_LPOk5}T$e{Qu~6#&prn z)#Xur?OynQw7Zv^mDM#RwS3_CQPty9+I48#p>5iQoyWUm`y1PLY@62cJjGrc%27_I zoRkdhsxAyT&e0A%#N8>%$tQK76O_pD0>6&8XUux)I=<~E^RH;c$H)D~i|Dw&Xwfu2 zJ}UlA>L2mGxOpVSN5#J7QZd{+n?=VA9aT-c#PBaB$Gk;?f9HvQ|F5re#-s4zLbg`Q{8kqThY;*`LOZPS5x)l zlVZ-}R8rhg>WeWogkm#W^8U^FC&}hU#r-FK1{dN?$~kUL%(t}e`Kzcq$GzG39$HWK zZzmMDHi`32@!v`Zid%a+CsO@ya$^q)p3ZcFk$N(}MO<$boE z{39jC_@8ENd&4XeCi$Dw0pdPs93WQX|B!Rr;c}bq-@}PdoBT$?EdSM9(49>#pnc~0 zf1!qm`@HEdl-oi-k1TP!PvXXtBz_gSGD(45#C)@ptC> z{Mh&^%58)HJZu8GE0g|ID^`8Q!`Eq3YE-=hT0})P`jr-GQT5u;!WY%xU0S3^)f-Qu zKdRwe$~PmbUYPcaj&c>ui>mho_mwDj=ulL>Y&u%3r20hF`-+=FQk7BlhI8kV)R3rp zZE3u%C#f+}^+wQs2~n|V+%CYh=qJJQdcxIuF4IPSo%Gsjjp ze3{lge-}D%?0ATi zS}FFG=Bb2ZFQhkTa<6ly=rNab)~_}%VyQGDahIu+)a=CBz1Cltc{^Wk&(v+7$J<|T_A+l@&D*)Wn0I%R z&35s&ujtJ+5|0ORgc?^2ZkX8jn(>K^S=wzDe=jt4tE~6r-u_WD?qe}G@X@wODT3^LEbG&_#@m~H%tzT7ISP*f(R|(19m2lgT1)+{Fk9AF?!%IFRp_OXo({Rjq>6;%2nx~PW!}la*1Sr zd&)HK;(CK=mlVH`6X`C|+Fwjr#&xM*Lt9e)gLq5V#(bDG|6|k?ahJG6y1y}v7;)WP zBE$bXZ@JW!AkT~C8pT{g#f|Ik&!s(M_VRj0BcAqSW4RQ3*fVHFn#rv(@?yVZJ&V@j z0!eACccQn3JY?0WUJU~kFYbCeFzcl9d@nTP=(zQs5iW^d|4;9+~ z2v=}qQcI$qpMMTNZj?*J`}y}$<3_tglK*-x^ca^&_Mb#2FYX$bNb#5QA;-G;Fx7t< zYvUUILJgJX=Rb-NSM3t%{$joy#=As@e;v2b1R47M1-#Ehwpp(|waB<@ zU82%|J|E{gml)!|og3wPml)$u<;I`v5|jM=3rle~xZG;|_w#XXbZ26^|9w7tQ{0wW z{-eC*Cb!RAKhJ$}H@n0_KmYldxLaIei9e3_nd%bD{c*hIR#($i{sVlRX>Q9J{{-H0 zn@eo)|IG!R?h>2*iCmxCU1Ep-Qr`|9>hJPGa*Z#O@E`Kdj3mUe<`^&QYz3hLEv{*i9EMH`?d;(&*y0N@}{b5x8 zl=!paIW+UnqDT76Ut;b0b#_#m=X)H?LDp;nW;@UKGMIN;vn81AJ>Pp^zGBUD!R+Aqz6A4Y zYqkfIj{Yl{4U$a#yMjqakK>l57q`^K)(lp4Uvhc(N= z?Bw~fzGsE)@2eTfv1DyMbUR`xUSZ8U zz|8V|Pl9=yHSYs6+w;8!=JVEk49uYC`w+~}tho%#9MAVPm@%{tbzcQ$uIKv$Og>*= zt^qU8^VR1c&7~LjkiOR3Q0ca~9+L0*&H(ckYiEh^lP>tpVE$vxORTvU%=756FEmqro#~4YdA`G-hOJtLYERFX zNSpb^on(qtD^M-o)|zv{q*$Uco$^Re`NW#b!K7H?Y%rtf^EasbMldOs=mO>i*8Cbw8r6%y z>}Abg>P$DPUkPfBRimz|?R?zyW5Imdn(<&#(@z6)n>8DONliZw%zv!e9879@zT6@W zn%crN(`jH*)2{`y)S9iqq^92v=45N04n(e@(kn0~XH(N6uObVo$&@~aM z(O=fQ3``27&H=MEeIyHABnT!2QeD9;wq_xi6i5|=Imw!R!KBVK5X{G|Sy^Yg&NL3x z_pN$$oywi*HZcFN=2$SPGd%?6nJrD_Zvc}z({o@JSo01rsWZI==6Gv90On<$?-MW| zvF0OSX3&fS=DXH>5=^T55iozX=1MTB?nyLqM7qdnrYmj$(lRCyqIPhFi$z%)O|OY=`_)RnPtsy z!R+GsmV-Icn)|`*>iO1z`G7Tl0rL{iw*$;Kt$7&CZk}&Hm_Jz4S0yK!?^!SPd>##j zk@Mc{3{&?+FuQxcreI!X%@$x%Pfi7Ms5M)GNj_FcVstx-Y0R-892ovgYD)iXWc zEKn=0`ZTJoJl`Tv@387}RL}B!t3Z9psxP71+VgD!^((8cM)hpZw;R;NvrG%DMfDud zcL>yrt-1l#b3I=?&90Hg8few+sHS?pmZ08g)o)Ne&-0~$y2`3Qp?bdO%LesptNxAZ z1)i@Ds0~}27N|c+s^RX0+IYSZpmwopV^lBnd^Mm}S@mR8+j_n^px$lO(@?#L9*2PX zs#VWIl_vbvpnhZ3^H8N3e>12_XPXwd2vwT$_kwzfRXd?dbN*pa2V3GYqthy0ZiUHC=ZJugc zU<;}g1QdcAuIkcTgDQmq)u29L)kCOK955Z!wN^cXDg^@bLH*IH^0gAK zDLrhZNMJdr$>*6CNE|Fp?oP#?5vDykF>cofS< z`oKD?rlCsVKvPhEvg#$MQaq3fYK!wt3uK`hqJS0Dpj8V{?MV?UsAH^JhH5E=te`$* z)yq*WqnH)c^;R8(YB>e1p#E&tNvP6O+=ZaFyuh@;&8X7z)|H^N7pen1-(*mKvuga+(m3wo9!T*k zs3{kk7HEphUqSuD zs(Gjmq4+gLT7-lBR&7lSl%YD5;#W|MtlA&dVHCfDI?1YoQ5{b4E2xiKbrh;2D1HU? z1FKF%btJ{Fp#Evqsi=;k_!ZRF7nv5g8`aSizk*s~)p@9nq4*Wl>#Vv6)oUnz1@#H5 zK8xyDieEw9Y}M7Mj-&V$)c>*SyQo%E{0izhX{H4}LUlaFuXK~iFYYcqt@M`n6 zP|K`(E~?j4{0i!gR&9ssWQt!weafm`P`!cTS5UWEH3!ujDSid@s8z$LPNDb})brb$ z7N|tEhT>OH%dI*T)te}OrCV}-ad)Y)>Nr$yruY@qXRLYys<%-53hH*NPD6Dn#jl{! z*H!S@{w!2)rT7)pHdcKQ)oB#Jg4)}vkD+=S#jl{=Y}KWxPN(=4)Mu^wBC5Aj{0iz0 ztG;KaupZSrD1HUCtyMonbtc8Hp!T)u4pi@?_>~??MEbx~tL{PdE{b14 zea@=;QN5euS5S9a^$%2MQTz&OOefO<-cTu<8#3;p_!ZPNt2RJ&HpQ=?UT)QvsNPHQ zE2z_~dN!(aD1HU?d8=N8>U|Wyg1XD9T~NKB;#W}PI-3>AmUqRh#)vHilO7SbGjk=l^7=!Aw6u*Mn)vA+GT}JUMsDrF}E2_^? z{0izUtKNm`a*AI;ea)&5p!z(;ub_Tw)kUbTp!oHiy6)2W64L@Np!x#Eub_6b>RYI; zr1%xotF5{X)fXv#1$DMnccJSkKtH&kDt z_!ZRdR{a~*S1Eo4b*NQihQr1E8pW@m&ar9(R992{3hIBX+6>j#DSid@d#j#?>Khcl zg4*m-(*kFs`X7p4&#mh&8CJaz)io5qf;!x)olt#~;#W}bx9X*+uBG@D)HkgfM0Eqj zub}R?Y6#VLDSid@g`lGs$;#W{JtvVRh_b7e^b);3tpt_0TS5W6#_10t5b)ddw z)q7EWpW;_g4_NgPR6n5j71UEMGcE8GsvlDPnp)QfvaPxT)y)*Yf;!r&Yf;@o@hhnF zthyQ1trWk4`nFYfqWTfVub>{Z>Q|_4qxconQ!`8p>__!uieEv^vFh)rZm0Ma)N8Ej zA0h4NCizb&eg$>DRU4qXgW^|E-?3_QR6nKo71Up>dM2tnDSid@w18=W3sL=yp1*>c zXVosK?xOhhJgFuJB;%}_h3e<@{1wy%RxL#J3yNPseb=geQT@{MWq^9fs#U1&ruY@q zGcrvJOhol7ieEwPVb$rV?xFY<)bUoGjq2AFzk<5Zs*6$GOYtkH?^*Q~RKKD471ZCY zx)IfHDSid@%q-IapQ8F-ieEvczpaH)@g7w7QTz((M62#c^*f4R&#&t)k6HBys^3%m z3hMh-jTtGqxNGYNieEuJY}J!c-B0l=sApxHYMp`Vj}*UxT5Qz|Q9VHME2!66wKJ+e zQTz((BCB>s^&rKspnho89;p6I@hhl*S+y^!zfk-N>e)fl0z**!mEu=W=?4(858Qz2 zA&Or?z22(#9HSlvb+J{SK=n6@UoWWZE?cbnBC5Yr{0iz3tG;oJ+7Z-qb4;~1p!x^J zub`G%^&?adQ~V0*jaL1#PW2~vQ53*}`?PiU9qUd7ce`~Dpc_T`&IQ+(Yif1~T_3qi z!EI~ZztHuQy9V5T*7Zi!UW@*OXmYoKJI%VW=*Ez{58M^jO++`A+#}$AVcjO^(*G6r zCAF#RHwk&B9g@+FC$}}YovnL1y7kCS2X~-#TcevqZXvjLS-0)6ZY8*{TK8gf8&kgg zAtS$d#{Jg10d$*?J0096`KBET(LIUW`QUc9ZaKP5$z2ZaFzZ&J+l<_G;NEZD;pjFe zcL%s@ty_)m$>i<__keY8KsSY4@4~t^Yth5B!;E9yrr_pS_kMKGq7y{;Qnsi)##p0?j&$q6_|E-2iNyBFQ_$lU<$R_h)>_k419f%}hj52Jelxd*{LztFUUZ?tq3iY@#J z7m*v?wyy8=vTl8J)5uK*_h##!e5~6B+-251^H?_n+@01v7u|MLhA_CXMW$|P$GStn zZExMq=(eYPCxd&Xb-SV4f!tZ(&aiIIvF;*pU$Sl?x*aLsRp9QiZuzn9CU6@Tn|8Py z-Az3(r>AL$^U%#DHxFF;)7W?ea51`h zsFv!K<->{eWj+n!_X}xcPY4StvdnTB68P& z+t0eUqgzbwHgKm|cRso$|1rH$?6caKEtb%g4G&?dtkYLYZlYx6$oM`L+hP zvvs$iTS;y@xC5=b1Kk1S7J_@1b-zY;Ai0&`zG~h5=w3x`HMrke_jh!w$ej*uldx%r zsB7RF8bt1VaJySK5#7P$E(dp*b(^7kHM#4+z2Ca0qdSD$9pJ9D?s@1AC3io#2dvu( z-C^WlUFqg4|Sa$6EJtbVrig4crCRy$an?&`%TEV&E8z0SH1pgWG-mEbP6 z?xW~dle+=jt=4`1Sa%n=|5*1`bjMS^2f;nRw`qsB(49bTbcecg(aXA<(Va+cGPpNe z_p4)F{?ZY@_#7{@?tXM9QN9`A?zHZ&=w3^17~I%Crfz?sdmXt$z@@*1g7ceitScQM zx(~RX+{xfxY25^LCzCr1+!@wA3EdmWT?Fn+);$&78_8V-?jGy5Mt2Iio4{?@*VOF- zbZf}n4Q^NKc0~6kau0z!*t*@(y_wwjj?##Hj%Qmp58YeHZ3*rh)-6MKD!FOkesA6W z=-x_hHn`3EnRci`cN)2Uz|FMo2y|~FcLcbjtXqxlbaHFJooC$}(Y>AAIpD6h?sRl# zkh=ujU#xpSx_6Mf8r;(_H|_8Ux--e$3~mqWEo-Ed=*2>t2KILUJp?ebu@(=srqrHMrkecLutTk;`8`>O)5+~ z+=uSt5f z5^}wZ>)N43rD=zs(0z*Brr_pS*Zp-N%E`q9Pm`Mp?pW(Ks3wtK&V7d5Zs0DcG-YUx z?ox6?;BK^TYjmF_w+h_ft=kdZW#mo*x77eshD>yyBX=ga#nufU>n;TMI_nNYcRA&| z65Pesy%yc)$=v|%R_jhhcLlk-!2QR%ccc3Pxd*{Lf1qiHx#+GWH#(ipBE9$;>Sf)< z=)Op9GPpNe_hocnBDW2=%dEQr-IvMD0C%T#KSg&HxnXc)uQGM}9^F^S9RhB9>;8@I ztK?1w_e$%=k9RF3eSI~#v%sBU-4t|RCwCFJFIl%8x^IxX3fw)`%|v$%xtqXkSY_Iw z7~MC?-3>1PE(m-DxF5P}$vp(_VC!Cu?px%>caes1@vn8O(cMgLOK{(??)B(yAvX=& z@2xux-L2$igWG(NsoN}cKO(mexS7_Shwe6VM}RxZx{J{LnA{q0=UI0dy4%T}1MYh3 zu0r<{a+iSni*?tcyMx@-;GRC%w8JKJKP7iFxIL`99o?Pe@|TeL#pif}b$6rt8M%kS zeayN)pu3CQ#IAMueqi0-(fyp<6ma?fheH32njqP@dFTsrJA!-8)y7Rg_e*l~z%8}z zN$Bn-w?DWyTDK*-Uy(Zo+^4O3HoAMroeJ)D>$XMrYjWp;>l_rl z-M`444sMfSrX9AUOA(@PKDgbjyBA&hg@502aEDp<7j%8(t^@ae>v|L6+VqpV1KhRN zZHR6(x% z=r$yGCAj>pPblwm=r$sE1GrnQ`#QQwjwXcBge)quZR^Fu44MGicw7 z(LI^mA>g*RZV=sMawmg(rFF~EJ%!v^;PMxYpbUf1Z9(oLa9^_S1awa&cNMsMta}@} zEy>*kZbSNT8Orb=x~Gx58{DqeU54)I?2ZYcLf1sO2ZXa+nts8r-RK>+n?Z_Pg?kMY?hHiUu zYrvgn-A?FckUIz5_14WnH$d(ZaDTCGFLX1>T@5aO@CfZN5Zx?tH-p>5y5rEzCU-Bm z6Rdj^y7Wh@e22k(%)0lWn?r8mWp#b$1M5D9ZZ5eg;PQt&P`Bmi=8@YG+;ix`EV%2? z%_lbx+*0d)jBXEd`-965^&#J{&@CW$47g8Q_b+q{$(;)BcI!614*FyfxpTp#zx9D- zxDZ|X!z{j~;I_5yW$2cWy9V5T)-6RhMD8|lr&)Ipx;@F=2kr{%PC~bm+#}$AVcl8i z4j?xvqpt5H(1Q#(7fa9`NN#IzJ6rc{bgv>e9o&J|-GgowxrN}~W!)p_4kEV_+*hsJ z{Cdy5+_*EC+-h*YweDHyUQO4kLFR zxc6JPAG*WI-2pD&z(aXQqC0}z{oo$3?qqaFlIsOL_u}}W1qJAk?;YsUp9=Cd1vkgK z^UxhlZYsEAt-BcAG30gwcY$?Rp?eLvA#gWZcLTa($*ltSck6zN?l^KMf!m6LH)w~i z(5)tSCb-4c-H$H)!B^ixaIdrO5p*YzyAs^R)=iu&r^)s8iR5kocdK=qp*xA(UEuy> z-3!pYmfVBjo=-slv_lZx>&T7Htm`|yta~N8*OQwJ?#Msma8a?k?q3UsHCI|SVJ)_oP-8geItd!=^k=Y>;8!DL*%A_`6?mA0u}uxNWUlgzn?yt^v27b^D^bh}>=9PP6VHbe|x1AGj;5 zdkwma$vpz@7uLN2-6zRS3fA?Vgej&SZbx?sxvjzNY~B0NeTv+4a0goVQFNasw-DUB ztotmw&yZUQ?yJ^)1>L3OR)hPkb>Bw!S#qa?+oZ;{!xnUxlRF>W?$+Ih?(^g>2X~lt z|3P;Jx$D5a-@47H`22F$+Y99G0C#PTDet-Ht|WIqxCgA;1>G0P^>X+yGVZjv$>dvr z?kaMdf}3OAE6{y~+*EMKT6Z+Muaesh+y&OX3EkJo4S~DSy7!{Hn%pXIf4A-v=&m7m z61c5yHtq28vF=Q8i>A0(Xyfc?jT_8%s8my9wNex0-hF(PdKWZXtI!xLvK=9Nn$t9s+l; zb1&UDib!_fVj+&pkgt$QQ7d&%t&?v2)+jqW$(jsf>+>++OP z+rHnDI~CmR)_oP-|B^cw+^E}4-9D&ueeu^&_zUWVR^3yl`V)>)wrjxcYu)eB_57Z1 z3%Ivf_m?`C|7zPeU_NWj!(g`ae1C%Zi8Xnq)8>k5@A(?^kR*4Ss2QdKqG{fUm>oRd znP6UE&H7+=^n9JbEVpJ8Fgtm^d@!e2^As>Ud%i2ce9D@w!Mxb>T?6Jv*1QnRbkBDy zn15UIVlcaSz6ZfP_YTua8DMs$zoiLgPiq!|c?tb3O)#&w=9OS}qrasI<`dQ&1LkG) zw=}{0(3+FL%M68Ob^smPi$!K7Z-8O({+ zoDC-Rx*lLYYRw11q+WL=nD1G0A(+(b#)A2qHJ=2NdfhZI&$!dneI=OG>*j%(Z_WRJ zNxg0vnB%PZE|}Eo)`I!4HMf9Cy>2_0?^yFQFzLL159ZI-{07Vb{V7c_Prb|3{U98f8 zPiL@;B;(nc+1-(5XVx>br&}el4HUseRcx@aF{VOPaT%P1Kd1!C{Hj8Pgi=B!rjis% zQGo=UqFgRwOvn#c?3D9;{bTp_N=HHRU&?LmbWhLcb-#Z7`gQNF?~al4_*0sUOl)!h zr!z`8juj5$PiZppqc*vTkqh`!nvDFaP3~ai5&S7lM*fRUjx+M8D6TSc$3xcG-^|Ek zqWA$u&f4TbMlOot#~FFXCKnj_c2WEzMm}njON_i#6u-vEFWcn17^hk>CZhBUu5XE4_bq7b97u3i^qGd&e-U?Il5OAw=?vNjnaXi5~jX5QW3>BG4wGT z{Rl@VMDY+qzha|LaujiFnV~RWr0UIie2|KLyy?#?{F01_tzQPveBn{C>{15V&oGx`6))iTc2d)pW5UX z83|{7hLJDYMmG5hBjM8I?cO~9phGxCB>Zet`odV-NJ*kqZJaOinPUh}9m_8CUPpWn&ILpFH_BjL_x7}>DN zfRXU#`xyDKO|CH#&in`?zhsl|XC!?2lZ^bnO+L=ZL!$UaMs9h`8v7?138#OSk#Duh zXBY{ee~yv9O;=f5-Z z(>A%nNZ51Z?aI95A>XpeUu7ihc^xAMKWdG=&PYU?eT=NwWX4EXeu0s9+T?FA5|+P< zk?*m|_c0RDrpd@p+2n(aM6`J~Bfn{rA7dm|@uQ3sPgrArl95=&pJ3#hZ1N8o2@m-K zBUfzlvy6m?{1qebwaE)M`8`HHZIc%n319j#Bmdeazrjf8xna5IA+Orxw-^aMcQf+( zk6BiFj*;knf{{x$`2$A6L*^NI&L;njk?@drGV&8P`D%|GxT1ic-#EkAZ`kZGJ_@5m z@n)YGzmJjZTi-E8?I#-VTz1~OQ{bb$!fzJt8!L+7%=m`44as(fgt)@gsFqPP zI#w9iJUXg6qrR^MGQ#`bG*-~h$2StNnfju_Ro6?Uw(Nyc*FwpyQ>5K^L8)EDkgl#2 zet8$w$)S*jw@Asct%YCMJT^M8XZN11g{wDg*&)O=7z^6irnMgtV!PCAsHfSE!NQ@@ zQCI|37!j$kQ}(?{h+Wz;a-{e_>Yy`|+&u=(=+C}iyG@W5LR?oUD0BVXI0i9+p7&^7 zyQ-3AGds^gs)T`cO;X(P%pCL`SF?o)Jh%Z9BSz#;ViyX9S2k~g2f$S@wd4zhJ$Np} z3SPg47x~j4;Pnh%&*D`q>?vM#<*g_cda@YbQR@u9-!hsNGJG&KC)p^;(K4?jFIJu-&Z&;H;4M(R?T zOKWKqT6)gV2L zzhMn#ElEW)a$>hB5jS(1ZmSjIZ{R`zcW%~!mgqkU;(FeIZpRb99R(0~PDKeRJ4=Ys z6jB(To8wn+k)m>pQ4-fn^3sm8upS3~DU5SI^j2~gfOmNUBa1qodB0GNyHv zuejAnYTJ|}$%G$dUW#sIZ%cO_T{z(^EH9s2rUs-1^4waG)#-y+EwGQ9BT^A2#{?r$N&VV;^d29TRB<2WH9l z?LP>2cl{*B^q?IxiQNU!)QbfD^=40G4Ywuj2eW$->>p&99O+g~ET&dR>wjY5&J}Vv z8YYC2G%s0RilO75Syfmn)SYk~x!xSmv=aAYBc7k>x33hSaO!;!oz%MGDa5lAF-vRg)y5*innz zxDdxt0$Q@nl{NyUP-N(em#) zh}Upa>a6L)U~9ca!zP{U5~;YOyo?&c;H0MzggD(y|OfrgC*5p!R}kElFX1tf=miG}9@g zpqUD19zi4z_LD_vvZ1k)yLADZV>|P)8{z@hh@4OIOC5=fkMu%|(+%|=tgj*~wmU2_ zgrppCOfCk!SQA=s@Il&Ds0SUZ)taI1Wc$*u)G5H)v{CP34J>u$kKnM7Luc+zYU`#J z!Kp1&E-}4_pf^1R6({sDL&pI;rJy41$-2MPlO0<82z2VK5ytpga~emW9CxYn4mUli zwg*&qE#kRe17Q&1LN0F1m_9(TzG!IdmX0EFhikT^QMxlX>-&pwKA*&J3w3UYgSsm> zUn!31lmUq^bvi@E{&J9EV<+EG+EaJEy$1SXmS7{Q)@xHXNFf9dDelmwVf;yk7i?^5 zOOW0L>TKYiiNcH>0B8e1!|ZSd42xRpV0N|cJ|p1F%BQ5~)DUkXY6H3`r!ig70!V|J z2O}U1cDoQ0d9yXq3R`9PUXFReQf^J&9OvgIf>l3Qb-bymsRLg1z~qhojZ;{)Zs1N; zs|Tj`*W6moorJHao=VRfSJc@qdD&Vi|N6vpkfay@QO?7Lwi zjJ>FhBc=rP&81*9#IcAY*3Cq#gJVv7LuKFOdi4{YVz4{;Sg-h9L9}OQ$Waj{$XlHj z_HPu_kw9%cxRpV_d#6@Bzs=e$E%-)!nnWLK_0r(@bYW?5`fKkg6iyA|dJzTvZ9xyR zOZa?B42mDUX4m3FMpP7Wy?=}S1Rq+;`cL=OkL&uE`s!~&eL?IH7tW)AMEy~k$EzT& z7Be50x82KWl&IfH{c)Lju!=%KY!wIlczl(2S^Wtsi0xwLJPJq+m5Ha3lRp1+UR9J- zhPunQ^BL3^#1`@D0~%!6ZHeJBfPodnHu3!Lni`ewLVd}ul6QMie>LoHKCV1AtDu|K z;cs839>2Z4Uv=5g`_`#{Y@K$5m*!cHlRTC=&fGyA(JM%u9Oq)ZOGC(WuuVDjD5<)U z<74B(+rajkpm!cokOzKc^74d($Q3$nnz|h)h;tm)(z|+6_Ft z4OzWCQt$R0=g9Kx@dan$#9_w~&f&XG%pPByN24pp=S`*KX9;$z*vGpb*#REo;N&bE z)56CNFAJ%paE{(~a&GoE=j4$irxsS6mD#!57SOEYt+@oK_}h0#cNSNUBm63BpojpvLY}88ZvcMCSoKE`{ znpx0^@8+(k1Pwix4gBWr?wx8wO{$VGWpw2>Lo|k_sby#)+o@)msKBk7@D|kJ4M3PypikgpT24t#mmU= z98m3;{DQj021xNubhkl#rzO)VTuH>p|Gkzs`EM(%d!;sbdKYd;HzVKBikkc-4fpGB z`VX}HoaXK%MUhNCscvN-+fX*+H}VPUNT*@Vb%Uwi4`_aQGJ2Rg+DEy3Nz0ks^ly0m zxZ6#;Pku=QCO7n5qUNV9@H|?36zJ=rZ->)B-e8d>GPu?_3^ULMUzG!lM zBWb06`#qxN=?h?)?zVID7pHZt?2F3OCnbFGEX&4!%zkb1w@9jY>F@vd`{WyXzc=~g zJyBUQ{$r~D7zH}3X}9m5n+`sxh<@JOoBYebu43}$oHp}Q%F}s=eAo1E&O^tv{QcTc zdRcV+-^_mpvV<7@gYnE0{2fM&9K6){$SFQN-H~sGBjjCZ9#YlzC5&&;z8syb|Sp zmhMgL;OGS{kDt1hX&l$>c#*GBGW*9yl#TDn2l}#hSoQQ&Ux$6Sc&BxF`Rk4-lFt1+ I_1%j90gkTfQUCw| literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/evdev/_input.cpython-310-x86_64-linux-gnu.so b/myenv/lib/python3.10/site-packages/evdev/_input.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..2a9bde950008b33bef3eb108a3e1dad54caa2fb1 GIT binary patch literal 50336 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 str: + msg = "bus: {:04x}, vendor {:04x}, product {:04x}, version {:04x}" + return msg.format(*self) # pylint: disable=not-an-iterable + + +class InputDevice(EventIO, Generic[_AnyStr]): + """ + A linux input device from which input events can be read. + """ + + __slots__ = ("path", "fd", "info", "name", "phys", "uniq", "_rawcapabilities", "version", "ff_effects_count") + + def __init__(self, dev: Union[_AnyStr, "os.PathLike[_AnyStr]"]): + """ + Arguments + --------- + dev : str|bytes|PathLike + Path to input device + """ + + #: Path to input device. + self.path: _AnyStr = dev if not hasattr(dev, "__fspath__") else dev.__fspath__() + + # Certain operations are possible only when the device is opened in read-write mode. + try: + fd = os.open(dev, os.O_RDWR | os.O_NONBLOCK) + except OSError: + fd = os.open(dev, os.O_RDONLY | os.O_NONBLOCK) + + #: A non-blocking file descriptor to the device file. + self.fd: int = fd + + # Returns (bustype, vendor, product, version, name, phys, capabilities). + info_res = _input.ioctl_devinfo(self.fd) + + #: A :class:`DeviceInfo ` instance. + self.info = DeviceInfo(*info_res[:4]) + + #: The name of the event device. + self.name: str = info_res[4] + + #: The physical topology of the device. + self.phys: str = info_res[5] + + #: The unique identifier of the device. + self.uniq: str = info_res[6] + + #: The evdev protocol version. + self.version: int = _input.ioctl_EVIOCGVERSION(self.fd) + + #: The raw dictionary of device capabilities - see `:func:capabilities()`. + self._rawcapabilities = _input.ioctl_capabilities(self.fd) + + #: The number of force feedback effects the device can keep in its memory. + self.ff_effects_count = _input.ioctl_EVIOCGEFFECTS(self.fd) + + def __del__(self) -> None: + if hasattr(self, "fd") and self.fd is not None: + try: + self.close() + except (OSError, ImportError, AttributeError): + pass + + def _capabilities(self, absinfo: bool = True): + res = {} + + for etype, _ecodes in self._rawcapabilities.items(): + for code in _ecodes: + l = res.setdefault(etype, []) + if isinstance(code, tuple): + if absinfo: + a = code[1] # (0, 0, 0, 255, 0, 0) + i = AbsInfo(*a) + l.append((code[0], i)) + else: + l.append(code[0]) + else: + l.append(code) + + return res + + @overload + def capabilities(self, verbose: Literal[False] = ..., absinfo: bool = ...) -> Dict[int, List[int]]: + ... + @overload + def capabilities(self, verbose: Literal[True], absinfo: bool = ...) -> Dict[Tuple[str, int], List[Tuple[str, int]]]: + ... + def capabilities(self, verbose: bool = False, absinfo: bool = True) -> Union[Dict[int, List[int]], Dict[Tuple[str, int], List[Tuple[str, int]]]]: + """ + Return the event types that this device supports as a mapping of + supported event types to lists of handled event codes. + + Example + -------- + >>> device.capabilities() + { 1: [272, 273, 274], + 2: [0, 1, 6, 8] } + + If ``verbose`` is ``True``, event codes and types will be resolved + to their names. + + :: + + { ('EV_KEY', 1): [('BTN_MOUSE', 272), + ('BTN_RIGHT', 273), + ('BTN_MIDDLE', 273)], + ('EV_REL', 2): [('REL_X', 0), + ('REL_Y', 1), + ('REL_HWHEEL', 6), + ('REL_WHEEL', 8)] } + + Unknown codes or types will be resolved to ``'?'``. + + If ``absinfo`` is ``True``, the list of capabilities will also + include absolute axis information in the form of + :class:`AbsInfo` instances:: + + { 3: [ (0, AbsInfo(min=0, max=255, fuzz=0, flat=0)), + (1, AbsInfo(min=0, max=255, fuzz=0, flat=0)) ]} + + Combined with ``verbose`` the above becomes:: + + { ('EV_ABS', 3): [ (('ABS_X', 0), AbsInfo(min=0, max=255, fuzz=0, flat=0)), + (('ABS_Y', 1), AbsInfo(min=0, max=255, fuzz=0, flat=0)) ]} + + """ + + if verbose: + return dict(util.resolve_ecodes_dict(self._capabilities(absinfo))) + else: + return self._capabilities(absinfo) + + def input_props(self, verbose: bool = False): + """ + Get device properties and quirks. + + Example + ------- + >>> device.input_props() + [0, 5] + + If ``verbose`` is ``True``, input properties are resolved to their + names. Unknown codes are resolved to ``'?'``:: + + [('INPUT_PROP_POINTER', 0), ('INPUT_PROP_POINTING_STICK', 5)] + + """ + props = _input.ioctl_EVIOCGPROP(self.fd) + if verbose: + return util.resolve_ecodes(ecodes.INPUT_PROP, props) + + return props + + def leds(self, verbose: bool = False): + """ + Return currently set LED keys. + + Example + ------- + >>> device.leds() + [0, 1, 8, 9] + + If ``verbose`` is ``True``, event codes are resolved to their + names. Unknown codes are resolved to ``'?'``:: + + [('LED_NUML', 0), ('LED_CAPSL', 1), ('LED_MISC', 8), ('LED_MAIL', 9)] + + """ + leds = _input.ioctl_EVIOCG_bits(self.fd, ecodes.EV_LED) + if verbose: + return util.resolve_ecodes(ecodes.LED, leds) + + return leds + + def set_led(self, led_num: int, value: int) -> None: + """ + Set the state of the selected LED. + + Example + ------- + >>> device.set_led(ecodes.LED_NUML, 1) + """ + self.write(ecodes.EV_LED, led_num, value) + + def __eq__(self, other): + """ + Two devices are equal if their :data:`info` attributes are equal. + """ + return isinstance(other, self.__class__) and self.info == other.info and self.path == other.path + + def __str__(self) -> str: + msg = 'device {}, name "{}", phys "{}", uniq "{}"' + return msg.format(self.path, self.name, self.phys, self.uniq or "") + + def __repr__(self) -> str: + msg = (self.__class__.__name__, self.path) + return "{}({!r})".format(*msg) + + def __fspath__(self): + return self.path + + def close(self) -> None: + if self.fd > -1: + try: + super().close() + os.close(self.fd) + finally: + self.fd = -1 + + def grab(self) -> None: + """ + Grab input device using ``EVIOCGRAB`` - other applications will + be unable to receive events until the device is released. Only + one process can hold a ``EVIOCGRAB`` on a device. + + Warning + ------- + Grabbing an already grabbed device will raise an ``OSError``. + """ + + _input.ioctl_EVIOCGRAB(self.fd, 1) + + def ungrab(self) -> None: + """ + Release device if it has been already grabbed (uses `EVIOCGRAB`). + + Warning + ------- + Releasing an already released device will raise an + ``OSError('Invalid argument')``. + """ + + _input.ioctl_EVIOCGRAB(self.fd, 0) + + @contextlib.contextmanager + def grab_context(self) -> Iterator[None]: + """ + A context manager for the duration of which only the current + process will be able to receive events from the device. + """ + self.grab() + yield + self.ungrab() + + def upload_effect(self, effect: "ff.Effect"): + """ + Upload a force feedback effect to a force feedback device. + """ + + data = memoryview(effect).tobytes() + ff_id = _input.upload_effect(self.fd, data) + return ff_id + + def erase_effect(self, ff_id) -> None: + """ + Erase a force effect from a force feedback device. This also + stops the effect. + """ + + _input.erase_effect(self.fd, ff_id) + + @property + def repeat(self): + """ + Get or set the keyboard repeat rate (in characters per + minute) and delay (in milliseconds). + """ + + return KbdInfo(*_input.ioctl_EVIOCGREP(self.fd)) + + @repeat.setter + def repeat(self, value: Tuple[int, int]): + return _input.ioctl_EVIOCSREP(self.fd, *value) + + def active_keys(self, verbose: bool = False): + """ + Return currently active keys. + + Example + ------- + + >>> device.active_keys() + [1, 42] + + If ``verbose`` is ``True``, key codes are resolved to their + verbose names. Unknown codes are resolved to ``'?'``. For + example:: + + [('KEY_ESC', 1), ('KEY_LEFTSHIFT', 42)] + + """ + active_keys = _input.ioctl_EVIOCG_bits(self.fd, ecodes.EV_KEY) + if verbose: + return util.resolve_ecodes(ecodes.KEY, active_keys) + + return active_keys + + def absinfo(self, axis_num: int): + """ + Return current :class:`AbsInfo` for input device axis + + Arguments + --------- + axis_num : int + EV_ABS keycode (example :attr:`ecodes.ABS_X`) + + Example + ------- + >>> device.absinfo(ecodes.ABS_X) + AbsInfo(value=1501, min=-32768, max=32767, fuzz=0, flat=128, resolution=0) + """ + return AbsInfo(*_input.ioctl_EVIOCGABS(self.fd, axis_num)) + + def set_absinfo(self, axis_num: int, value=None, min=None, max=None, fuzz=None, flat=None, resolution=None) -> None: + """ + Update :class:`AbsInfo` values. Only specified values will be overwritten. + + Arguments + --------- + axis_num : int + EV_ABS keycode (example :attr:`ecodes.ABS_X`) + + Example + ------- + >>> device.set_absinfo(ecodes.ABS_X, min=-2000, max=2000) + + You can also unpack AbsInfo tuple that will overwrite all values + + >>> device.set_absinfo(ecodes.ABS_Y, *AbsInfo(0, -2000, 2000, 0, 15, 0)) + """ + + cur_absinfo = self.absinfo(axis_num) + new_absinfo = AbsInfo( + value if value is not None else cur_absinfo.value, + min if min is not None else cur_absinfo.min, + max if max is not None else cur_absinfo.max, + fuzz if fuzz is not None else cur_absinfo.fuzz, + flat if flat is not None else cur_absinfo.flat, + resolution if resolution is not None else cur_absinfo.resolution, + ) + _input.ioctl_EVIOCSABS(self.fd, axis_num, new_absinfo) diff --git a/myenv/lib/python3.10/site-packages/evdev/ecodes.py b/myenv/lib/python3.10/site-packages/evdev/ecodes.py new file mode 100644 index 0000000..f8a5a11 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/ecodes.py @@ -0,0 +1,3880 @@ +# Automatically generated by evdev.genecodes_py + +""" +This modules exposes the integer constants defined in ``linux/input.h`` and +``linux/input-event-codes.h``. + +Exposed constants:: + + KEY, ABS, REL, SW, MSC, LED, BTN, REP, SND, ID, EV, + BUS, SYN, FF, FF_STATUS, INPUT_PROP + +This module also provides reverse and forward mappings of the names and values +of the above mentioned constants:: + + >>> evdev.ecodes.KEY_A + 30 + + >>> evdev.ecodes.ecodes['KEY_A'] + 30 + + >>> evdev.ecodes.KEY[30] + 'KEY_A' + + >>> evdev.ecodes.REL[0] + 'REL_X' + + >>> evdev.ecodes.EV[evdev.ecodes.EV_KEY] + 'EV_KEY' + + >>> evdev.ecodes.bytype[evdev.ecodes.EV_REL][0] + 'REL_X' + +Keep in mind that values in reverse mappings may point to one or more event +codes. For example:: + + >>> evdev.ecodes.FF[80] + ('FF_EFFECT_MIN', 'FF_RUMBLE') + + >>> evdev.ecodes.FF[81] + 'FF_PERIODIC' +""" + +from typing import Final, Dict, Tuple, Union + +ABS_BRAKE: Final[int] = 10 +ABS_CNT: Final[int] = 64 +ABS_DISTANCE: Final[int] = 25 +ABS_GAS: Final[int] = 9 +ABS_HAT0X: Final[int] = 16 +ABS_HAT0Y: Final[int] = 17 +ABS_HAT1X: Final[int] = 18 +ABS_HAT1Y: Final[int] = 19 +ABS_HAT2X: Final[int] = 20 +ABS_HAT2Y: Final[int] = 21 +ABS_HAT3X: Final[int] = 22 +ABS_HAT3Y: Final[int] = 23 +ABS_MAX: Final[int] = 63 +ABS_MISC: Final[int] = 40 +ABS_MT_BLOB_ID: Final[int] = 56 +ABS_MT_DISTANCE: Final[int] = 59 +ABS_MT_ORIENTATION: Final[int] = 52 +ABS_MT_POSITION_X: Final[int] = 53 +ABS_MT_POSITION_Y: Final[int] = 54 +ABS_MT_PRESSURE: Final[int] = 58 +ABS_MT_SLOT: Final[int] = 47 +ABS_MT_TOOL_TYPE: Final[int] = 55 +ABS_MT_TOOL_X: Final[int] = 60 +ABS_MT_TOOL_Y: Final[int] = 61 +ABS_MT_TOUCH_MAJOR: Final[int] = 48 +ABS_MT_TOUCH_MINOR: Final[int] = 49 +ABS_MT_TRACKING_ID: Final[int] = 57 +ABS_MT_WIDTH_MAJOR: Final[int] = 50 +ABS_MT_WIDTH_MINOR: Final[int] = 51 +ABS_PRESSURE: Final[int] = 24 +ABS_PROFILE: Final[int] = 33 +ABS_RESERVED: Final[int] = 46 +ABS_RUDDER: Final[int] = 7 +ABS_RX: Final[int] = 3 +ABS_RY: Final[int] = 4 +ABS_RZ: Final[int] = 5 +ABS_THROTTLE: Final[int] = 6 +ABS_TILT_X: Final[int] = 26 +ABS_TILT_Y: Final[int] = 27 +ABS_TOOL_WIDTH: Final[int] = 28 +ABS_VOLUME: Final[int] = 32 +ABS_WHEEL: Final[int] = 8 +ABS_X: Final[int] = 0 +ABS_Y: Final[int] = 1 +ABS_Z: Final[int] = 2 +BTN_0: Final[int] = 256 +BTN_1: Final[int] = 257 +BTN_2: Final[int] = 258 +BTN_3: Final[int] = 259 +BTN_4: Final[int] = 260 +BTN_5: Final[int] = 261 +BTN_6: Final[int] = 262 +BTN_7: Final[int] = 263 +BTN_8: Final[int] = 264 +BTN_9: Final[int] = 265 +BTN_A: Final[int] = 304 +BTN_B: Final[int] = 305 +BTN_BACK: Final[int] = 278 +BTN_BASE: Final[int] = 294 +BTN_BASE2: Final[int] = 295 +BTN_BASE3: Final[int] = 296 +BTN_BASE4: Final[int] = 297 +BTN_BASE5: Final[int] = 298 +BTN_BASE6: Final[int] = 299 +BTN_C: Final[int] = 306 +BTN_DEAD: Final[int] = 303 +BTN_DIGI: Final[int] = 320 +BTN_DPAD_DOWN: Final[int] = 545 +BTN_DPAD_LEFT: Final[int] = 546 +BTN_DPAD_RIGHT: Final[int] = 547 +BTN_DPAD_UP: Final[int] = 544 +BTN_EAST: Final[int] = 305 +BTN_EXTRA: Final[int] = 276 +BTN_FORWARD: Final[int] = 277 +BTN_GAMEPAD: Final[int] = 304 +BTN_GEAR_DOWN: Final[int] = 336 +BTN_GEAR_UP: Final[int] = 337 +BTN_JOYSTICK: Final[int] = 288 +BTN_LEFT: Final[int] = 272 +BTN_MIDDLE: Final[int] = 274 +BTN_MISC: Final[int] = 256 +BTN_MODE: Final[int] = 316 +BTN_MOUSE: Final[int] = 272 +BTN_NORTH: Final[int] = 307 +BTN_PINKIE: Final[int] = 293 +BTN_RIGHT: Final[int] = 273 +BTN_SELECT: Final[int] = 314 +BTN_SIDE: Final[int] = 275 +BTN_SOUTH: Final[int] = 304 +BTN_START: Final[int] = 315 +BTN_STYLUS: Final[int] = 331 +BTN_STYLUS2: Final[int] = 332 +BTN_STYLUS3: Final[int] = 329 +BTN_TASK: Final[int] = 279 +BTN_THUMB: Final[int] = 289 +BTN_THUMB2: Final[int] = 290 +BTN_THUMBL: Final[int] = 317 +BTN_THUMBR: Final[int] = 318 +BTN_TL: Final[int] = 310 +BTN_TL2: Final[int] = 312 +BTN_TOOL_AIRBRUSH: Final[int] = 324 +BTN_TOOL_BRUSH: Final[int] = 322 +BTN_TOOL_DOUBLETAP: Final[int] = 333 +BTN_TOOL_FINGER: Final[int] = 325 +BTN_TOOL_LENS: Final[int] = 327 +BTN_TOOL_MOUSE: Final[int] = 326 +BTN_TOOL_PEN: Final[int] = 320 +BTN_TOOL_PENCIL: Final[int] = 323 +BTN_TOOL_QUADTAP: Final[int] = 335 +BTN_TOOL_QUINTTAP: Final[int] = 328 +BTN_TOOL_RUBBER: Final[int] = 321 +BTN_TOOL_TRIPLETAP: Final[int] = 334 +BTN_TOP: Final[int] = 291 +BTN_TOP2: Final[int] = 292 +BTN_TOUCH: Final[int] = 330 +BTN_TR: Final[int] = 311 +BTN_TR2: Final[int] = 313 +BTN_TRIGGER: Final[int] = 288 +BTN_TRIGGER_HAPPY: Final[int] = 704 +BTN_TRIGGER_HAPPY1: Final[int] = 704 +BTN_TRIGGER_HAPPY10: Final[int] = 713 +BTN_TRIGGER_HAPPY11: Final[int] = 714 +BTN_TRIGGER_HAPPY12: Final[int] = 715 +BTN_TRIGGER_HAPPY13: Final[int] = 716 +BTN_TRIGGER_HAPPY14: Final[int] = 717 +BTN_TRIGGER_HAPPY15: Final[int] = 718 +BTN_TRIGGER_HAPPY16: Final[int] = 719 +BTN_TRIGGER_HAPPY17: Final[int] = 720 +BTN_TRIGGER_HAPPY18: Final[int] = 721 +BTN_TRIGGER_HAPPY19: Final[int] = 722 +BTN_TRIGGER_HAPPY2: Final[int] = 705 +BTN_TRIGGER_HAPPY20: Final[int] = 723 +BTN_TRIGGER_HAPPY21: Final[int] = 724 +BTN_TRIGGER_HAPPY22: Final[int] = 725 +BTN_TRIGGER_HAPPY23: Final[int] = 726 +BTN_TRIGGER_HAPPY24: Final[int] = 727 +BTN_TRIGGER_HAPPY25: Final[int] = 728 +BTN_TRIGGER_HAPPY26: Final[int] = 729 +BTN_TRIGGER_HAPPY27: Final[int] = 730 +BTN_TRIGGER_HAPPY28: Final[int] = 731 +BTN_TRIGGER_HAPPY29: Final[int] = 732 +BTN_TRIGGER_HAPPY3: Final[int] = 706 +BTN_TRIGGER_HAPPY30: Final[int] = 733 +BTN_TRIGGER_HAPPY31: Final[int] = 734 +BTN_TRIGGER_HAPPY32: Final[int] = 735 +BTN_TRIGGER_HAPPY33: Final[int] = 736 +BTN_TRIGGER_HAPPY34: Final[int] = 737 +BTN_TRIGGER_HAPPY35: Final[int] = 738 +BTN_TRIGGER_HAPPY36: Final[int] = 739 +BTN_TRIGGER_HAPPY37: Final[int] = 740 +BTN_TRIGGER_HAPPY38: Final[int] = 741 +BTN_TRIGGER_HAPPY39: Final[int] = 742 +BTN_TRIGGER_HAPPY4: Final[int] = 707 +BTN_TRIGGER_HAPPY40: Final[int] = 743 +BTN_TRIGGER_HAPPY5: Final[int] = 708 +BTN_TRIGGER_HAPPY6: Final[int] = 709 +BTN_TRIGGER_HAPPY7: Final[int] = 710 +BTN_TRIGGER_HAPPY8: Final[int] = 711 +BTN_TRIGGER_HAPPY9: Final[int] = 712 +BTN_WEST: Final[int] = 308 +BTN_WHEEL: Final[int] = 336 +BTN_X: Final[int] = 307 +BTN_Y: Final[int] = 308 +BTN_Z: Final[int] = 309 +BUS_ADB: Final[int] = 23 +BUS_AMD_SFH: Final[int] = 32 +BUS_AMIGA: Final[int] = 22 +BUS_ATARI: Final[int] = 27 +BUS_BLUETOOTH: Final[int] = 5 +BUS_CEC: Final[int] = 30 +BUS_GAMEPORT: Final[int] = 20 +BUS_GSC: Final[int] = 26 +BUS_HIL: Final[int] = 4 +BUS_HOST: Final[int] = 25 +BUS_I2C: Final[int] = 24 +BUS_I8042: Final[int] = 17 +BUS_INTEL_ISHTP: Final[int] = 31 +BUS_ISA: Final[int] = 16 +BUS_ISAPNP: Final[int] = 2 +BUS_PARPORT: Final[int] = 21 +BUS_PCI: Final[int] = 1 +BUS_RMI: Final[int] = 29 +BUS_RS232: Final[int] = 19 +BUS_SPI: Final[int] = 28 +BUS_USB: Final[int] = 3 +BUS_VIRTUAL: Final[int] = 6 +BUS_XTKBD: Final[int] = 18 +EV_ABS: Final[int] = 3 +EV_CNT: Final[int] = 32 +EV_FF: Final[int] = 21 +EV_FF_STATUS: Final[int] = 23 +EV_KEY: Final[int] = 1 +EV_LED: Final[int] = 17 +EV_MAX: Final[int] = 31 +EV_MSC: Final[int] = 4 +EV_PWR: Final[int] = 22 +EV_REL: Final[int] = 2 +EV_REP: Final[int] = 20 +EV_SND: Final[int] = 18 +EV_SW: Final[int] = 5 +EV_SYN: Final[int] = 0 +EV_UINPUT: Final[int] = 257 +EV_VERSION: Final[int] = 65537 +FF_AUTOCENTER: Final[int] = 97 +FF_CNT: Final[int] = 128 +FF_CONSTANT: Final[int] = 82 +FF_CUSTOM: Final[int] = 93 +FF_DAMPER: Final[int] = 85 +FF_EFFECT_MAX: Final[int] = 87 +FF_EFFECT_MIN: Final[int] = 80 +FF_FRICTION: Final[int] = 84 +FF_GAIN: Final[int] = 96 +FF_INERTIA: Final[int] = 86 +FF_MAX: Final[int] = 127 +FF_MAX_EFFECTS: Final[int] = 96 +FF_PERIODIC: Final[int] = 81 +FF_RAMP: Final[int] = 87 +FF_RUMBLE: Final[int] = 80 +FF_SAW_DOWN: Final[int] = 92 +FF_SAW_UP: Final[int] = 91 +FF_SINE: Final[int] = 90 +FF_SPRING: Final[int] = 83 +FF_SQUARE: Final[int] = 88 +FF_STATUS_MAX: Final[int] = 1 +FF_STATUS_PLAYING: Final[int] = 1 +FF_STATUS_STOPPED: Final[int] = 0 +FF_TRIANGLE: Final[int] = 89 +FF_WAVEFORM_MAX: Final[int] = 93 +FF_WAVEFORM_MIN: Final[int] = 88 +ID_BUS: Final[int] = 0 +ID_PRODUCT: Final[int] = 2 +ID_VENDOR: Final[int] = 1 +ID_VERSION: Final[int] = 3 +INPUT_PROP_ACCELEROMETER: Final[int] = 6 +INPUT_PROP_BUTTONPAD: Final[int] = 2 +INPUT_PROP_CNT: Final[int] = 32 +INPUT_PROP_DIRECT: Final[int] = 1 +INPUT_PROP_MAX: Final[int] = 31 +INPUT_PROP_POINTER: Final[int] = 0 +INPUT_PROP_POINTING_STICK: Final[int] = 5 +INPUT_PROP_SEMI_MT: Final[int] = 3 +INPUT_PROP_TOPBUTTONPAD: Final[int] = 4 +KEY_0: Final[int] = 11 +KEY_1: Final[int] = 2 +KEY_102ND: Final[int] = 86 +KEY_10CHANNELSDOWN: Final[int] = 441 +KEY_10CHANNELSUP: Final[int] = 440 +KEY_2: Final[int] = 3 +KEY_3: Final[int] = 4 +KEY_3D_MODE: Final[int] = 623 +KEY_4: Final[int] = 5 +KEY_5: Final[int] = 6 +KEY_6: Final[int] = 7 +KEY_7: Final[int] = 8 +KEY_8: Final[int] = 9 +KEY_9: Final[int] = 10 +KEY_A: Final[int] = 30 +KEY_AB: Final[int] = 406 +KEY_ACCESSIBILITY: Final[int] = 590 +KEY_ADDRESSBOOK: Final[int] = 429 +KEY_AGAIN: Final[int] = 129 +KEY_ALL_APPLICATIONS: Final[int] = 204 +KEY_ALS_TOGGLE: Final[int] = 560 +KEY_ALTERASE: Final[int] = 222 +KEY_ANGLE: Final[int] = 371 +KEY_APOSTROPHE: Final[int] = 40 +KEY_APPSELECT: Final[int] = 580 +KEY_ARCHIVE: Final[int] = 361 +KEY_ASPECT_RATIO: Final[int] = 375 +KEY_ASSISTANT: Final[int] = 583 +KEY_ATTENDANT_OFF: Final[int] = 540 +KEY_ATTENDANT_ON: Final[int] = 539 +KEY_ATTENDANT_TOGGLE: Final[int] = 541 +KEY_AUDIO: Final[int] = 392 +KEY_AUDIO_DESC: Final[int] = 622 +KEY_AUTOPILOT_ENGAGE_TOGGLE: Final[int] = 637 +KEY_AUX: Final[int] = 390 +KEY_B: Final[int] = 48 +KEY_BACK: Final[int] = 158 +KEY_BACKSLASH: Final[int] = 43 +KEY_BACKSPACE: Final[int] = 14 +KEY_BASSBOOST: Final[int] = 209 +KEY_BATTERY: Final[int] = 236 +KEY_BLUE: Final[int] = 401 +KEY_BLUETOOTH: Final[int] = 237 +KEY_BOOKMARKS: Final[int] = 156 +KEY_BREAK: Final[int] = 411 +KEY_BRIGHTNESSDOWN: Final[int] = 224 +KEY_BRIGHTNESSUP: Final[int] = 225 +KEY_BRIGHTNESS_AUTO: Final[int] = 244 +KEY_BRIGHTNESS_CYCLE: Final[int] = 243 +KEY_BRIGHTNESS_MAX: Final[int] = 593 +KEY_BRIGHTNESS_MENU: Final[int] = 649 +KEY_BRIGHTNESS_MIN: Final[int] = 592 +KEY_BRIGHTNESS_TOGGLE: Final[int] = 431 +KEY_BRIGHTNESS_ZERO: Final[int] = 244 +KEY_BRL_DOT1: Final[int] = 497 +KEY_BRL_DOT10: Final[int] = 506 +KEY_BRL_DOT2: Final[int] = 498 +KEY_BRL_DOT3: Final[int] = 499 +KEY_BRL_DOT4: Final[int] = 500 +KEY_BRL_DOT5: Final[int] = 501 +KEY_BRL_DOT6: Final[int] = 502 +KEY_BRL_DOT7: Final[int] = 503 +KEY_BRL_DOT8: Final[int] = 504 +KEY_BRL_DOT9: Final[int] = 505 +KEY_BUTTONCONFIG: Final[int] = 576 +KEY_C: Final[int] = 46 +KEY_CALC: Final[int] = 140 +KEY_CALENDAR: Final[int] = 397 +KEY_CAMERA: Final[int] = 212 +KEY_CAMERA_ACCESS_DISABLE: Final[int] = 588 +KEY_CAMERA_ACCESS_ENABLE: Final[int] = 587 +KEY_CAMERA_ACCESS_TOGGLE: Final[int] = 589 +KEY_CAMERA_DOWN: Final[int] = 536 +KEY_CAMERA_FOCUS: Final[int] = 528 +KEY_CAMERA_LEFT: Final[int] = 537 +KEY_CAMERA_RIGHT: Final[int] = 538 +KEY_CAMERA_UP: Final[int] = 535 +KEY_CAMERA_ZOOMIN: Final[int] = 533 +KEY_CAMERA_ZOOMOUT: Final[int] = 534 +KEY_CANCEL: Final[int] = 223 +KEY_CAPSLOCK: Final[int] = 58 +KEY_CD: Final[int] = 383 +KEY_CHANNEL: Final[int] = 363 +KEY_CHANNELDOWN: Final[int] = 403 +KEY_CHANNELUP: Final[int] = 402 +KEY_CHAT: Final[int] = 216 +KEY_CLEAR: Final[int] = 355 +KEY_CLEARVU_SONAR: Final[int] = 646 +KEY_CLOSE: Final[int] = 206 +KEY_CLOSECD: Final[int] = 160 +KEY_CNT: Final[int] = 768 +KEY_COFFEE: Final[int] = 152 +KEY_COMMA: Final[int] = 51 +KEY_COMPOSE: Final[int] = 127 +KEY_COMPUTER: Final[int] = 157 +KEY_CONFIG: Final[int] = 171 +KEY_CONNECT: Final[int] = 218 +KEY_CONTEXT_MENU: Final[int] = 438 +KEY_CONTROLPANEL: Final[int] = 579 +KEY_COPY: Final[int] = 133 +KEY_CUT: Final[int] = 137 +KEY_CYCLEWINDOWS: Final[int] = 154 +KEY_D: Final[int] = 32 +KEY_DASHBOARD: Final[int] = 204 +KEY_DATA: Final[int] = 631 +KEY_DATABASE: Final[int] = 426 +KEY_DELETE: Final[int] = 111 +KEY_DELETEFILE: Final[int] = 146 +KEY_DEL_EOL: Final[int] = 448 +KEY_DEL_EOS: Final[int] = 449 +KEY_DEL_LINE: Final[int] = 451 +KEY_DICTATE: Final[int] = 586 +KEY_DIGITS: Final[int] = 413 +KEY_DIRECTION: Final[int] = 153 +KEY_DIRECTORY: Final[int] = 394 +KEY_DISPLAYTOGGLE: Final[int] = 431 +KEY_DISPLAY_OFF: Final[int] = 245 +KEY_DOCUMENTS: Final[int] = 235 +KEY_DOLLAR: Final[int] = 434 +KEY_DOT: Final[int] = 52 +KEY_DOWN: Final[int] = 108 +KEY_DO_NOT_DISTURB: Final[int] = 591 +KEY_DUAL_RANGE_RADAR: Final[int] = 643 +KEY_DVD: Final[int] = 389 +KEY_E: Final[int] = 18 +KEY_EDIT: Final[int] = 176 +KEY_EDITOR: Final[int] = 422 +KEY_EJECTCD: Final[int] = 161 +KEY_EJECTCLOSECD: Final[int] = 162 +KEY_EMAIL: Final[int] = 215 +KEY_EMOJI_PICKER: Final[int] = 585 +KEY_END: Final[int] = 107 +KEY_ENTER: Final[int] = 28 +KEY_EPG: Final[int] = 365 +KEY_EQUAL: Final[int] = 13 +KEY_ESC: Final[int] = 1 +KEY_EURO: Final[int] = 435 +KEY_EXIT: Final[int] = 174 +KEY_F: Final[int] = 33 +KEY_F1: Final[int] = 59 +KEY_F10: Final[int] = 68 +KEY_F11: Final[int] = 87 +KEY_F12: Final[int] = 88 +KEY_F13: Final[int] = 183 +KEY_F14: Final[int] = 184 +KEY_F15: Final[int] = 185 +KEY_F16: Final[int] = 186 +KEY_F17: Final[int] = 187 +KEY_F18: Final[int] = 188 +KEY_F19: Final[int] = 189 +KEY_F2: Final[int] = 60 +KEY_F20: Final[int] = 190 +KEY_F21: Final[int] = 191 +KEY_F22: Final[int] = 192 +KEY_F23: Final[int] = 193 +KEY_F24: Final[int] = 194 +KEY_F3: Final[int] = 61 +KEY_F4: Final[int] = 62 +KEY_F5: Final[int] = 63 +KEY_F6: Final[int] = 64 +KEY_F7: Final[int] = 65 +KEY_F8: Final[int] = 66 +KEY_F9: Final[int] = 67 +KEY_FASTFORWARD: Final[int] = 208 +KEY_FASTREVERSE: Final[int] = 629 +KEY_FAVORITES: Final[int] = 364 +KEY_FILE: Final[int] = 144 +KEY_FINANCE: Final[int] = 219 +KEY_FIND: Final[int] = 136 +KEY_FIRST: Final[int] = 404 +KEY_FISHING_CHART: Final[int] = 641 +KEY_FN: Final[int] = 464 +KEY_FN_1: Final[int] = 478 +KEY_FN_2: Final[int] = 479 +KEY_FN_B: Final[int] = 484 +KEY_FN_D: Final[int] = 480 +KEY_FN_E: Final[int] = 481 +KEY_FN_ESC: Final[int] = 465 +KEY_FN_F: Final[int] = 482 +KEY_FN_F1: Final[int] = 466 +KEY_FN_F10: Final[int] = 475 +KEY_FN_F11: Final[int] = 476 +KEY_FN_F12: Final[int] = 477 +KEY_FN_F2: Final[int] = 467 +KEY_FN_F3: Final[int] = 468 +KEY_FN_F4: Final[int] = 469 +KEY_FN_F5: Final[int] = 470 +KEY_FN_F6: Final[int] = 471 +KEY_FN_F7: Final[int] = 472 +KEY_FN_F8: Final[int] = 473 +KEY_FN_F9: Final[int] = 474 +KEY_FN_RIGHT_SHIFT: Final[int] = 485 +KEY_FN_S: Final[int] = 483 +KEY_FORWARD: Final[int] = 159 +KEY_FORWARDMAIL: Final[int] = 233 +KEY_FRAMEBACK: Final[int] = 436 +KEY_FRAMEFORWARD: Final[int] = 437 +KEY_FRONT: Final[int] = 132 +KEY_FULL_SCREEN: Final[int] = 372 +KEY_G: Final[int] = 34 +KEY_GAMES: Final[int] = 417 +KEY_GOTO: Final[int] = 354 +KEY_GRAPHICSEDITOR: Final[int] = 424 +KEY_GRAVE: Final[int] = 41 +KEY_GREEN: Final[int] = 399 +KEY_H: Final[int] = 35 +KEY_HANGEUL: Final[int] = 122 +KEY_HANGUEL: Final[int] = 122 +KEY_HANGUP_PHONE: Final[int] = 446 +KEY_HANJA: Final[int] = 123 +KEY_HELP: Final[int] = 138 +KEY_HENKAN: Final[int] = 92 +KEY_HIRAGANA: Final[int] = 91 +KEY_HOME: Final[int] = 102 +KEY_HOMEPAGE: Final[int] = 172 +KEY_HP: Final[int] = 211 +KEY_I: Final[int] = 23 +KEY_IMAGES: Final[int] = 442 +KEY_INFO: Final[int] = 358 +KEY_INSERT: Final[int] = 110 +KEY_INS_LINE: Final[int] = 450 +KEY_ISO: Final[int] = 170 +KEY_J: Final[int] = 36 +KEY_JOURNAL: Final[int] = 578 +KEY_K: Final[int] = 37 +KEY_KATAKANA: Final[int] = 90 +KEY_KATAKANAHIRAGANA: Final[int] = 93 +KEY_KBDILLUMDOWN: Final[int] = 229 +KEY_KBDILLUMTOGGLE: Final[int] = 228 +KEY_KBDILLUMUP: Final[int] = 230 +KEY_KBDINPUTASSIST_ACCEPT: Final[int] = 612 +KEY_KBDINPUTASSIST_CANCEL: Final[int] = 613 +KEY_KBDINPUTASSIST_NEXT: Final[int] = 609 +KEY_KBDINPUTASSIST_NEXTGROUP: Final[int] = 611 +KEY_KBDINPUTASSIST_PREV: Final[int] = 608 +KEY_KBDINPUTASSIST_PREVGROUP: Final[int] = 610 +KEY_KBD_LAYOUT_NEXT: Final[int] = 584 +KEY_KBD_LCD_MENU1: Final[int] = 696 +KEY_KBD_LCD_MENU2: Final[int] = 697 +KEY_KBD_LCD_MENU3: Final[int] = 698 +KEY_KBD_LCD_MENU4: Final[int] = 699 +KEY_KBD_LCD_MENU5: Final[int] = 700 +KEY_KEYBOARD: Final[int] = 374 +KEY_KP0: Final[int] = 82 +KEY_KP1: Final[int] = 79 +KEY_KP2: Final[int] = 80 +KEY_KP3: Final[int] = 81 +KEY_KP4: Final[int] = 75 +KEY_KP5: Final[int] = 76 +KEY_KP6: Final[int] = 77 +KEY_KP7: Final[int] = 71 +KEY_KP8: Final[int] = 72 +KEY_KP9: Final[int] = 73 +KEY_KPASTERISK: Final[int] = 55 +KEY_KPCOMMA: Final[int] = 121 +KEY_KPDOT: Final[int] = 83 +KEY_KPENTER: Final[int] = 96 +KEY_KPEQUAL: Final[int] = 117 +KEY_KPJPCOMMA: Final[int] = 95 +KEY_KPLEFTPAREN: Final[int] = 179 +KEY_KPMINUS: Final[int] = 74 +KEY_KPPLUS: Final[int] = 78 +KEY_KPPLUSMINUS: Final[int] = 118 +KEY_KPRIGHTPAREN: Final[int] = 180 +KEY_KPSLASH: Final[int] = 98 +KEY_L: Final[int] = 38 +KEY_LANGUAGE: Final[int] = 368 +KEY_LAST: Final[int] = 405 +KEY_LEFT: Final[int] = 105 +KEY_LEFTALT: Final[int] = 56 +KEY_LEFTBRACE: Final[int] = 26 +KEY_LEFTCTRL: Final[int] = 29 +KEY_LEFTMETA: Final[int] = 125 +KEY_LEFTSHIFT: Final[int] = 42 +KEY_LEFT_DOWN: Final[int] = 617 +KEY_LEFT_UP: Final[int] = 616 +KEY_LIGHTS_TOGGLE: Final[int] = 542 +KEY_LINEFEED: Final[int] = 101 +KEY_LIST: Final[int] = 395 +KEY_LOGOFF: Final[int] = 433 +KEY_M: Final[int] = 50 +KEY_MACRO: Final[int] = 112 +KEY_MACRO1: Final[int] = 656 +KEY_MACRO10: Final[int] = 665 +KEY_MACRO11: Final[int] = 666 +KEY_MACRO12: Final[int] = 667 +KEY_MACRO13: Final[int] = 668 +KEY_MACRO14: Final[int] = 669 +KEY_MACRO15: Final[int] = 670 +KEY_MACRO16: Final[int] = 671 +KEY_MACRO17: Final[int] = 672 +KEY_MACRO18: Final[int] = 673 +KEY_MACRO19: Final[int] = 674 +KEY_MACRO2: Final[int] = 657 +KEY_MACRO20: Final[int] = 675 +KEY_MACRO21: Final[int] = 676 +KEY_MACRO22: Final[int] = 677 +KEY_MACRO23: Final[int] = 678 +KEY_MACRO24: Final[int] = 679 +KEY_MACRO25: Final[int] = 680 +KEY_MACRO26: Final[int] = 681 +KEY_MACRO27: Final[int] = 682 +KEY_MACRO28: Final[int] = 683 +KEY_MACRO29: Final[int] = 684 +KEY_MACRO3: Final[int] = 658 +KEY_MACRO30: Final[int] = 685 +KEY_MACRO4: Final[int] = 659 +KEY_MACRO5: Final[int] = 660 +KEY_MACRO6: Final[int] = 661 +KEY_MACRO7: Final[int] = 662 +KEY_MACRO8: Final[int] = 663 +KEY_MACRO9: Final[int] = 664 +KEY_MACRO_PRESET1: Final[int] = 691 +KEY_MACRO_PRESET2: Final[int] = 692 +KEY_MACRO_PRESET3: Final[int] = 693 +KEY_MACRO_PRESET_CYCLE: Final[int] = 690 +KEY_MACRO_RECORD_START: Final[int] = 688 +KEY_MACRO_RECORD_STOP: Final[int] = 689 +KEY_MAIL: Final[int] = 155 +KEY_MARK_WAYPOINT: Final[int] = 638 +KEY_MAX: Final[int] = 767 +KEY_MEDIA: Final[int] = 226 +KEY_MEDIA_REPEAT: Final[int] = 439 +KEY_MEDIA_TOP_MENU: Final[int] = 619 +KEY_MEMO: Final[int] = 396 +KEY_MENU: Final[int] = 139 +KEY_MESSENGER: Final[int] = 430 +KEY_MHP: Final[int] = 367 +KEY_MICMUTE: Final[int] = 248 +KEY_MINUS: Final[int] = 12 +KEY_MIN_INTERESTING: Final[int] = 113 +KEY_MODE: Final[int] = 373 +KEY_MOVE: Final[int] = 175 +KEY_MP3: Final[int] = 391 +KEY_MSDOS: Final[int] = 151 +KEY_MUHENKAN: Final[int] = 94 +KEY_MUTE: Final[int] = 113 +KEY_N: Final[int] = 49 +KEY_NAV_CHART: Final[int] = 640 +KEY_NAV_INFO: Final[int] = 648 +KEY_NEW: Final[int] = 181 +KEY_NEWS: Final[int] = 427 +KEY_NEXT: Final[int] = 407 +KEY_NEXTSONG: Final[int] = 163 +KEY_NEXT_ELEMENT: Final[int] = 635 +KEY_NEXT_FAVORITE: Final[int] = 624 +KEY_NOTIFICATION_CENTER: Final[int] = 444 +KEY_NUMERIC_0: Final[int] = 512 +KEY_NUMERIC_1: Final[int] = 513 +KEY_NUMERIC_11: Final[int] = 620 +KEY_NUMERIC_12: Final[int] = 621 +KEY_NUMERIC_2: Final[int] = 514 +KEY_NUMERIC_3: Final[int] = 515 +KEY_NUMERIC_4: Final[int] = 516 +KEY_NUMERIC_5: Final[int] = 517 +KEY_NUMERIC_6: Final[int] = 518 +KEY_NUMERIC_7: Final[int] = 519 +KEY_NUMERIC_8: Final[int] = 520 +KEY_NUMERIC_9: Final[int] = 521 +KEY_NUMERIC_A: Final[int] = 524 +KEY_NUMERIC_B: Final[int] = 525 +KEY_NUMERIC_C: Final[int] = 526 +KEY_NUMERIC_D: Final[int] = 527 +KEY_NUMERIC_POUND: Final[int] = 523 +KEY_NUMERIC_STAR: Final[int] = 522 +KEY_NUMLOCK: Final[int] = 69 +KEY_O: Final[int] = 24 +KEY_OK: Final[int] = 352 +KEY_ONSCREEN_KEYBOARD: Final[int] = 632 +KEY_OPEN: Final[int] = 134 +KEY_OPTION: Final[int] = 357 +KEY_P: Final[int] = 25 +KEY_PAGEDOWN: Final[int] = 109 +KEY_PAGEUP: Final[int] = 104 +KEY_PASTE: Final[int] = 135 +KEY_PAUSE: Final[int] = 119 +KEY_PAUSECD: Final[int] = 201 +KEY_PAUSE_RECORD: Final[int] = 626 +KEY_PC: Final[int] = 376 +KEY_PHONE: Final[int] = 169 +KEY_PICKUP_PHONE: Final[int] = 445 +KEY_PLAY: Final[int] = 207 +KEY_PLAYCD: Final[int] = 200 +KEY_PLAYER: Final[int] = 387 +KEY_PLAYPAUSE: Final[int] = 164 +KEY_POWER: Final[int] = 116 +KEY_POWER2: Final[int] = 356 +KEY_PRESENTATION: Final[int] = 425 +KEY_PREVIOUS: Final[int] = 412 +KEY_PREVIOUSSONG: Final[int] = 165 +KEY_PREVIOUS_ELEMENT: Final[int] = 636 +KEY_PRINT: Final[int] = 210 +KEY_PRIVACY_SCREEN_TOGGLE: Final[int] = 633 +KEY_PROG1: Final[int] = 148 +KEY_PROG2: Final[int] = 149 +KEY_PROG3: Final[int] = 202 +KEY_PROG4: Final[int] = 203 +KEY_PROGRAM: Final[int] = 362 +KEY_PROPS: Final[int] = 130 +KEY_PVR: Final[int] = 366 +KEY_Q: Final[int] = 16 +KEY_QUESTION: Final[int] = 214 +KEY_R: Final[int] = 19 +KEY_RADAR_OVERLAY: Final[int] = 644 +KEY_RADIO: Final[int] = 385 +KEY_RECORD: Final[int] = 167 +KEY_RED: Final[int] = 398 +KEY_REDO: Final[int] = 182 +KEY_REFRESH: Final[int] = 173 +KEY_REFRESH_RATE_TOGGLE: Final[int] = 562 +KEY_REPLY: Final[int] = 232 +KEY_RESERVED: Final[int] = 0 +KEY_RESTART: Final[int] = 408 +KEY_REWIND: Final[int] = 168 +KEY_RFKILL: Final[int] = 247 +KEY_RIGHT: Final[int] = 106 +KEY_RIGHTALT: Final[int] = 100 +KEY_RIGHTBRACE: Final[int] = 27 +KEY_RIGHTCTRL: Final[int] = 97 +KEY_RIGHTMETA: Final[int] = 126 +KEY_RIGHTSHIFT: Final[int] = 54 +KEY_RIGHT_DOWN: Final[int] = 615 +KEY_RIGHT_UP: Final[int] = 614 +KEY_RO: Final[int] = 89 +KEY_ROOT_MENU: Final[int] = 618 +KEY_ROTATE_DISPLAY: Final[int] = 153 +KEY_ROTATE_LOCK_TOGGLE: Final[int] = 561 +KEY_S: Final[int] = 31 +KEY_SAT: Final[int] = 381 +KEY_SAT2: Final[int] = 382 +KEY_SAVE: Final[int] = 234 +KEY_SCALE: Final[int] = 120 +KEY_SCREEN: Final[int] = 375 +KEY_SCREENLOCK: Final[int] = 152 +KEY_SCREENSAVER: Final[int] = 581 +KEY_SCROLLDOWN: Final[int] = 178 +KEY_SCROLLLOCK: Final[int] = 70 +KEY_SCROLLUP: Final[int] = 177 +KEY_SEARCH: Final[int] = 217 +KEY_SELECT: Final[int] = 353 +KEY_SELECTIVE_SCREENSHOT: Final[int] = 634 +KEY_SEMICOLON: Final[int] = 39 +KEY_SEND: Final[int] = 231 +KEY_SENDFILE: Final[int] = 145 +KEY_SETUP: Final[int] = 141 +KEY_SHOP: Final[int] = 221 +KEY_SHUFFLE: Final[int] = 410 +KEY_SIDEVU_SONAR: Final[int] = 647 +KEY_SINGLE_RANGE_RADAR: Final[int] = 642 +KEY_SLASH: Final[int] = 53 +KEY_SLEEP: Final[int] = 142 +KEY_SLOW: Final[int] = 409 +KEY_SLOWREVERSE: Final[int] = 630 +KEY_SOS: Final[int] = 639 +KEY_SOUND: Final[int] = 213 +KEY_SPACE: Final[int] = 57 +KEY_SPELLCHECK: Final[int] = 432 +KEY_SPORT: Final[int] = 220 +KEY_SPREADSHEET: Final[int] = 423 +KEY_STOP: Final[int] = 128 +KEY_STOPCD: Final[int] = 166 +KEY_STOP_RECORD: Final[int] = 625 +KEY_SUBTITLE: Final[int] = 370 +KEY_SUSPEND: Final[int] = 205 +KEY_SWITCHVIDEOMODE: Final[int] = 227 +KEY_SYSRQ: Final[int] = 99 +KEY_T: Final[int] = 20 +KEY_TAB: Final[int] = 15 +KEY_TAPE: Final[int] = 384 +KEY_TASKMANAGER: Final[int] = 577 +KEY_TEEN: Final[int] = 414 +KEY_TEXT: Final[int] = 388 +KEY_TIME: Final[int] = 359 +KEY_TITLE: Final[int] = 369 +KEY_TOUCHPAD_OFF: Final[int] = 532 +KEY_TOUCHPAD_ON: Final[int] = 531 +KEY_TOUCHPAD_TOGGLE: Final[int] = 530 +KEY_TRADITIONAL_SONAR: Final[int] = 645 +KEY_TUNER: Final[int] = 386 +KEY_TV: Final[int] = 377 +KEY_TV2: Final[int] = 378 +KEY_TWEN: Final[int] = 415 +KEY_U: Final[int] = 22 +KEY_UNDO: Final[int] = 131 +KEY_UNKNOWN: Final[int] = 240 +KEY_UNMUTE: Final[int] = 628 +KEY_UP: Final[int] = 103 +KEY_UWB: Final[int] = 239 +KEY_V: Final[int] = 47 +KEY_VCR: Final[int] = 379 +KEY_VCR2: Final[int] = 380 +KEY_VENDOR: Final[int] = 360 +KEY_VIDEO: Final[int] = 393 +KEY_VIDEOPHONE: Final[int] = 416 +KEY_VIDEO_NEXT: Final[int] = 241 +KEY_VIDEO_PREV: Final[int] = 242 +KEY_VOD: Final[int] = 627 +KEY_VOICECOMMAND: Final[int] = 582 +KEY_VOICEMAIL: Final[int] = 428 +KEY_VOLUMEDOWN: Final[int] = 114 +KEY_VOLUMEUP: Final[int] = 115 +KEY_W: Final[int] = 17 +KEY_WAKEUP: Final[int] = 143 +KEY_WIMAX: Final[int] = 246 +KEY_WLAN: Final[int] = 238 +KEY_WORDPROCESSOR: Final[int] = 421 +KEY_WPS_BUTTON: Final[int] = 529 +KEY_WWAN: Final[int] = 246 +KEY_WWW: Final[int] = 150 +KEY_X: Final[int] = 45 +KEY_XFER: Final[int] = 147 +KEY_Y: Final[int] = 21 +KEY_YELLOW: Final[int] = 400 +KEY_YEN: Final[int] = 124 +KEY_Z: Final[int] = 44 +KEY_ZENKAKUHANKAKU: Final[int] = 85 +KEY_ZOOM: Final[int] = 372 +KEY_ZOOMIN: Final[int] = 418 +KEY_ZOOMOUT: Final[int] = 419 +KEY_ZOOMRESET: Final[int] = 420 +LED_CAPSL: Final[int] = 1 +LED_CHARGING: Final[int] = 10 +LED_CNT: Final[int] = 16 +LED_COMPOSE: Final[int] = 3 +LED_KANA: Final[int] = 4 +LED_MAIL: Final[int] = 9 +LED_MAX: Final[int] = 15 +LED_MISC: Final[int] = 8 +LED_MUTE: Final[int] = 7 +LED_NUML: Final[int] = 0 +LED_SCROLLL: Final[int] = 2 +LED_SLEEP: Final[int] = 5 +LED_SUSPEND: Final[int] = 6 +MSC_CNT: Final[int] = 8 +MSC_GESTURE: Final[int] = 2 +MSC_MAX: Final[int] = 7 +MSC_PULSELED: Final[int] = 1 +MSC_RAW: Final[int] = 3 +MSC_SCAN: Final[int] = 4 +MSC_SERIAL: Final[int] = 0 +MSC_TIMESTAMP: Final[int] = 5 +REL_CNT: Final[int] = 16 +REL_DIAL: Final[int] = 7 +REL_HWHEEL: Final[int] = 6 +REL_HWHEEL_HI_RES: Final[int] = 12 +REL_MAX: Final[int] = 15 +REL_MISC: Final[int] = 9 +REL_RESERVED: Final[int] = 10 +REL_RX: Final[int] = 3 +REL_RY: Final[int] = 4 +REL_RZ: Final[int] = 5 +REL_WHEEL: Final[int] = 8 +REL_WHEEL_HI_RES: Final[int] = 11 +REL_X: Final[int] = 0 +REL_Y: Final[int] = 1 +REL_Z: Final[int] = 2 +REP_CNT: Final[int] = 2 +REP_DELAY: Final[int] = 0 +REP_MAX: Final[int] = 1 +REP_PERIOD: Final[int] = 1 +SND_BELL: Final[int] = 1 +SND_CLICK: Final[int] = 0 +SND_CNT: Final[int] = 8 +SND_MAX: Final[int] = 7 +SND_TONE: Final[int] = 2 +SW_CAMERA_LENS_COVER: Final[int] = 9 +SW_CNT: Final[int] = 17 +SW_DOCK: Final[int] = 5 +SW_FRONT_PROXIMITY: Final[int] = 11 +SW_HEADPHONE_INSERT: Final[int] = 2 +SW_JACK_PHYSICAL_INSERT: Final[int] = 7 +SW_KEYPAD_SLIDE: Final[int] = 10 +SW_LID: Final[int] = 0 +SW_LINEIN_INSERT: Final[int] = 13 +SW_LINEOUT_INSERT: Final[int] = 6 +SW_MACHINE_COVER: Final[int] = 16 +SW_MAX: Final[int] = 16 +SW_MICROPHONE_INSERT: Final[int] = 4 +SW_MUTE_DEVICE: Final[int] = 14 +SW_PEN_INSERTED: Final[int] = 15 +SW_RADIO: Final[int] = 3 +SW_RFKILL_ALL: Final[int] = 3 +SW_ROTATE_LOCK: Final[int] = 12 +SW_TABLET_MODE: Final[int] = 1 +SW_VIDEOOUT_INSERT: Final[int] = 8 +SYN_CNT: Final[int] = 16 +SYN_CONFIG: Final[int] = 1 +SYN_DROPPED: Final[int] = 3 +SYN_MAX: Final[int] = 15 +SYN_MT_REPORT: Final[int] = 2 +SYN_REPORT: Final[int] = 0 +UI_FF_ERASE: Final[int] = 2 +UI_FF_UPLOAD: Final[int] = 1 + +#: Mapping of names to values. +ecodes: Dict[str, int] = { 'ABS_BRAKE': 10, + 'ABS_CNT': 64, + 'ABS_DISTANCE': 25, + 'ABS_GAS': 9, + 'ABS_HAT0X': 16, + 'ABS_HAT0Y': 17, + 'ABS_HAT1X': 18, + 'ABS_HAT1Y': 19, + 'ABS_HAT2X': 20, + 'ABS_HAT2Y': 21, + 'ABS_HAT3X': 22, + 'ABS_HAT3Y': 23, + 'ABS_MAX': 63, + 'ABS_MISC': 40, + 'ABS_MT_BLOB_ID': 56, + 'ABS_MT_DISTANCE': 59, + 'ABS_MT_ORIENTATION': 52, + 'ABS_MT_POSITION_X': 53, + 'ABS_MT_POSITION_Y': 54, + 'ABS_MT_PRESSURE': 58, + 'ABS_MT_SLOT': 47, + 'ABS_MT_TOOL_TYPE': 55, + 'ABS_MT_TOOL_X': 60, + 'ABS_MT_TOOL_Y': 61, + 'ABS_MT_TOUCH_MAJOR': 48, + 'ABS_MT_TOUCH_MINOR': 49, + 'ABS_MT_TRACKING_ID': 57, + 'ABS_MT_WIDTH_MAJOR': 50, + 'ABS_MT_WIDTH_MINOR': 51, + 'ABS_PRESSURE': 24, + 'ABS_PROFILE': 33, + 'ABS_RESERVED': 46, + 'ABS_RUDDER': 7, + 'ABS_RX': 3, + 'ABS_RY': 4, + 'ABS_RZ': 5, + 'ABS_THROTTLE': 6, + 'ABS_TILT_X': 26, + 'ABS_TILT_Y': 27, + 'ABS_TOOL_WIDTH': 28, + 'ABS_VOLUME': 32, + 'ABS_WHEEL': 8, + 'ABS_X': 0, + 'ABS_Y': 1, + 'ABS_Z': 2, + 'BTN_0': 256, + 'BTN_1': 257, + 'BTN_2': 258, + 'BTN_3': 259, + 'BTN_4': 260, + 'BTN_5': 261, + 'BTN_6': 262, + 'BTN_7': 263, + 'BTN_8': 264, + 'BTN_9': 265, + 'BTN_A': 304, + 'BTN_B': 305, + 'BTN_BACK': 278, + 'BTN_BASE': 294, + 'BTN_BASE2': 295, + 'BTN_BASE3': 296, + 'BTN_BASE4': 297, + 'BTN_BASE5': 298, + 'BTN_BASE6': 299, + 'BTN_C': 306, + 'BTN_DEAD': 303, + 'BTN_DIGI': 320, + 'BTN_DPAD_DOWN': 545, + 'BTN_DPAD_LEFT': 546, + 'BTN_DPAD_RIGHT': 547, + 'BTN_DPAD_UP': 544, + 'BTN_EAST': 305, + 'BTN_EXTRA': 276, + 'BTN_FORWARD': 277, + 'BTN_GAMEPAD': 304, + 'BTN_GEAR_DOWN': 336, + 'BTN_GEAR_UP': 337, + 'BTN_JOYSTICK': 288, + 'BTN_LEFT': 272, + 'BTN_MIDDLE': 274, + 'BTN_MISC': 256, + 'BTN_MODE': 316, + 'BTN_MOUSE': 272, + 'BTN_NORTH': 307, + 'BTN_PINKIE': 293, + 'BTN_RIGHT': 273, + 'BTN_SELECT': 314, + 'BTN_SIDE': 275, + 'BTN_SOUTH': 304, + 'BTN_START': 315, + 'BTN_STYLUS': 331, + 'BTN_STYLUS2': 332, + 'BTN_STYLUS3': 329, + 'BTN_TASK': 279, + 'BTN_THUMB': 289, + 'BTN_THUMB2': 290, + 'BTN_THUMBL': 317, + 'BTN_THUMBR': 318, + 'BTN_TL': 310, + 'BTN_TL2': 312, + 'BTN_TOOL_AIRBRUSH': 324, + 'BTN_TOOL_BRUSH': 322, + 'BTN_TOOL_DOUBLETAP': 333, + 'BTN_TOOL_FINGER': 325, + 'BTN_TOOL_LENS': 327, + 'BTN_TOOL_MOUSE': 326, + 'BTN_TOOL_PEN': 320, + 'BTN_TOOL_PENCIL': 323, + 'BTN_TOOL_QUADTAP': 335, + 'BTN_TOOL_QUINTTAP': 328, + 'BTN_TOOL_RUBBER': 321, + 'BTN_TOOL_TRIPLETAP': 334, + 'BTN_TOP': 291, + 'BTN_TOP2': 292, + 'BTN_TOUCH': 330, + 'BTN_TR': 311, + 'BTN_TR2': 313, + 'BTN_TRIGGER': 288, + 'BTN_TRIGGER_HAPPY': 704, + 'BTN_TRIGGER_HAPPY1': 704, + 'BTN_TRIGGER_HAPPY10': 713, + 'BTN_TRIGGER_HAPPY11': 714, + 'BTN_TRIGGER_HAPPY12': 715, + 'BTN_TRIGGER_HAPPY13': 716, + 'BTN_TRIGGER_HAPPY14': 717, + 'BTN_TRIGGER_HAPPY15': 718, + 'BTN_TRIGGER_HAPPY16': 719, + 'BTN_TRIGGER_HAPPY17': 720, + 'BTN_TRIGGER_HAPPY18': 721, + 'BTN_TRIGGER_HAPPY19': 722, + 'BTN_TRIGGER_HAPPY2': 705, + 'BTN_TRIGGER_HAPPY20': 723, + 'BTN_TRIGGER_HAPPY21': 724, + 'BTN_TRIGGER_HAPPY22': 725, + 'BTN_TRIGGER_HAPPY23': 726, + 'BTN_TRIGGER_HAPPY24': 727, + 'BTN_TRIGGER_HAPPY25': 728, + 'BTN_TRIGGER_HAPPY26': 729, + 'BTN_TRIGGER_HAPPY27': 730, + 'BTN_TRIGGER_HAPPY28': 731, + 'BTN_TRIGGER_HAPPY29': 732, + 'BTN_TRIGGER_HAPPY3': 706, + 'BTN_TRIGGER_HAPPY30': 733, + 'BTN_TRIGGER_HAPPY31': 734, + 'BTN_TRIGGER_HAPPY32': 735, + 'BTN_TRIGGER_HAPPY33': 736, + 'BTN_TRIGGER_HAPPY34': 737, + 'BTN_TRIGGER_HAPPY35': 738, + 'BTN_TRIGGER_HAPPY36': 739, + 'BTN_TRIGGER_HAPPY37': 740, + 'BTN_TRIGGER_HAPPY38': 741, + 'BTN_TRIGGER_HAPPY39': 742, + 'BTN_TRIGGER_HAPPY4': 707, + 'BTN_TRIGGER_HAPPY40': 743, + 'BTN_TRIGGER_HAPPY5': 708, + 'BTN_TRIGGER_HAPPY6': 709, + 'BTN_TRIGGER_HAPPY7': 710, + 'BTN_TRIGGER_HAPPY8': 711, + 'BTN_TRIGGER_HAPPY9': 712, + 'BTN_WEST': 308, + 'BTN_WHEEL': 336, + 'BTN_X': 307, + 'BTN_Y': 308, + 'BTN_Z': 309, + 'BUS_ADB': 23, + 'BUS_AMD_SFH': 32, + 'BUS_AMIGA': 22, + 'BUS_ATARI': 27, + 'BUS_BLUETOOTH': 5, + 'BUS_CEC': 30, + 'BUS_GAMEPORT': 20, + 'BUS_GSC': 26, + 'BUS_HIL': 4, + 'BUS_HOST': 25, + 'BUS_I2C': 24, + 'BUS_I8042': 17, + 'BUS_INTEL_ISHTP': 31, + 'BUS_ISA': 16, + 'BUS_ISAPNP': 2, + 'BUS_PARPORT': 21, + 'BUS_PCI': 1, + 'BUS_RMI': 29, + 'BUS_RS232': 19, + 'BUS_SPI': 28, + 'BUS_USB': 3, + 'BUS_VIRTUAL': 6, + 'BUS_XTKBD': 18, + 'EV_ABS': 3, + 'EV_CNT': 32, + 'EV_FF': 21, + 'EV_FF_STATUS': 23, + 'EV_KEY': 1, + 'EV_LED': 17, + 'EV_MAX': 31, + 'EV_MSC': 4, + 'EV_PWR': 22, + 'EV_REL': 2, + 'EV_REP': 20, + 'EV_SND': 18, + 'EV_SW': 5, + 'EV_SYN': 0, + 'EV_UINPUT': 257, + 'EV_VERSION': 65537, + 'FF_AUTOCENTER': 97, + 'FF_CNT': 128, + 'FF_CONSTANT': 82, + 'FF_CUSTOM': 93, + 'FF_DAMPER': 85, + 'FF_EFFECT_MAX': 87, + 'FF_EFFECT_MIN': 80, + 'FF_FRICTION': 84, + 'FF_GAIN': 96, + 'FF_INERTIA': 86, + 'FF_MAX': 127, + 'FF_MAX_EFFECTS': 96, + 'FF_PERIODIC': 81, + 'FF_RAMP': 87, + 'FF_RUMBLE': 80, + 'FF_SAW_DOWN': 92, + 'FF_SAW_UP': 91, + 'FF_SINE': 90, + 'FF_SPRING': 83, + 'FF_SQUARE': 88, + 'FF_STATUS_MAX': 1, + 'FF_STATUS_PLAYING': 1, + 'FF_STATUS_STOPPED': 0, + 'FF_TRIANGLE': 89, + 'FF_WAVEFORM_MAX': 93, + 'FF_WAVEFORM_MIN': 88, + 'ID_BUS': 0, + 'ID_PRODUCT': 2, + 'ID_VENDOR': 1, + 'ID_VERSION': 3, + 'INPUT_PROP_ACCELEROMETER': 6, + 'INPUT_PROP_BUTTONPAD': 2, + 'INPUT_PROP_CNT': 32, + 'INPUT_PROP_DIRECT': 1, + 'INPUT_PROP_MAX': 31, + 'INPUT_PROP_POINTER': 0, + 'INPUT_PROP_POINTING_STICK': 5, + 'INPUT_PROP_SEMI_MT': 3, + 'INPUT_PROP_TOPBUTTONPAD': 4, + 'KEY_0': 11, + 'KEY_1': 2, + 'KEY_102ND': 86, + 'KEY_10CHANNELSDOWN': 441, + 'KEY_10CHANNELSUP': 440, + 'KEY_2': 3, + 'KEY_3': 4, + 'KEY_3D_MODE': 623, + 'KEY_4': 5, + 'KEY_5': 6, + 'KEY_6': 7, + 'KEY_7': 8, + 'KEY_8': 9, + 'KEY_9': 10, + 'KEY_A': 30, + 'KEY_AB': 406, + 'KEY_ACCESSIBILITY': 590, + 'KEY_ADDRESSBOOK': 429, + 'KEY_AGAIN': 129, + 'KEY_ALL_APPLICATIONS': 204, + 'KEY_ALS_TOGGLE': 560, + 'KEY_ALTERASE': 222, + 'KEY_ANGLE': 371, + 'KEY_APOSTROPHE': 40, + 'KEY_APPSELECT': 580, + 'KEY_ARCHIVE': 361, + 'KEY_ASPECT_RATIO': 375, + 'KEY_ASSISTANT': 583, + 'KEY_ATTENDANT_OFF': 540, + 'KEY_ATTENDANT_ON': 539, + 'KEY_ATTENDANT_TOGGLE': 541, + 'KEY_AUDIO': 392, + 'KEY_AUDIO_DESC': 622, + 'KEY_AUTOPILOT_ENGAGE_TOGGLE': 637, + 'KEY_AUX': 390, + 'KEY_B': 48, + 'KEY_BACK': 158, + 'KEY_BACKSLASH': 43, + 'KEY_BACKSPACE': 14, + 'KEY_BASSBOOST': 209, + 'KEY_BATTERY': 236, + 'KEY_BLUE': 401, + 'KEY_BLUETOOTH': 237, + 'KEY_BOOKMARKS': 156, + 'KEY_BREAK': 411, + 'KEY_BRIGHTNESSDOWN': 224, + 'KEY_BRIGHTNESSUP': 225, + 'KEY_BRIGHTNESS_AUTO': 244, + 'KEY_BRIGHTNESS_CYCLE': 243, + 'KEY_BRIGHTNESS_MAX': 593, + 'KEY_BRIGHTNESS_MENU': 649, + 'KEY_BRIGHTNESS_MIN': 592, + 'KEY_BRIGHTNESS_TOGGLE': 431, + 'KEY_BRIGHTNESS_ZERO': 244, + 'KEY_BRL_DOT1': 497, + 'KEY_BRL_DOT10': 506, + 'KEY_BRL_DOT2': 498, + 'KEY_BRL_DOT3': 499, + 'KEY_BRL_DOT4': 500, + 'KEY_BRL_DOT5': 501, + 'KEY_BRL_DOT6': 502, + 'KEY_BRL_DOT7': 503, + 'KEY_BRL_DOT8': 504, + 'KEY_BRL_DOT9': 505, + 'KEY_BUTTONCONFIG': 576, + 'KEY_C': 46, + 'KEY_CALC': 140, + 'KEY_CALENDAR': 397, + 'KEY_CAMERA': 212, + 'KEY_CAMERA_ACCESS_DISABLE': 588, + 'KEY_CAMERA_ACCESS_ENABLE': 587, + 'KEY_CAMERA_ACCESS_TOGGLE': 589, + 'KEY_CAMERA_DOWN': 536, + 'KEY_CAMERA_FOCUS': 528, + 'KEY_CAMERA_LEFT': 537, + 'KEY_CAMERA_RIGHT': 538, + 'KEY_CAMERA_UP': 535, + 'KEY_CAMERA_ZOOMIN': 533, + 'KEY_CAMERA_ZOOMOUT': 534, + 'KEY_CANCEL': 223, + 'KEY_CAPSLOCK': 58, + 'KEY_CD': 383, + 'KEY_CHANNEL': 363, + 'KEY_CHANNELDOWN': 403, + 'KEY_CHANNELUP': 402, + 'KEY_CHAT': 216, + 'KEY_CLEAR': 355, + 'KEY_CLEARVU_SONAR': 646, + 'KEY_CLOSE': 206, + 'KEY_CLOSECD': 160, + 'KEY_CNT': 768, + 'KEY_COFFEE': 152, + 'KEY_COMMA': 51, + 'KEY_COMPOSE': 127, + 'KEY_COMPUTER': 157, + 'KEY_CONFIG': 171, + 'KEY_CONNECT': 218, + 'KEY_CONTEXT_MENU': 438, + 'KEY_CONTROLPANEL': 579, + 'KEY_COPY': 133, + 'KEY_CUT': 137, + 'KEY_CYCLEWINDOWS': 154, + 'KEY_D': 32, + 'KEY_DASHBOARD': 204, + 'KEY_DATA': 631, + 'KEY_DATABASE': 426, + 'KEY_DELETE': 111, + 'KEY_DELETEFILE': 146, + 'KEY_DEL_EOL': 448, + 'KEY_DEL_EOS': 449, + 'KEY_DEL_LINE': 451, + 'KEY_DICTATE': 586, + 'KEY_DIGITS': 413, + 'KEY_DIRECTION': 153, + 'KEY_DIRECTORY': 394, + 'KEY_DISPLAYTOGGLE': 431, + 'KEY_DISPLAY_OFF': 245, + 'KEY_DOCUMENTS': 235, + 'KEY_DOLLAR': 434, + 'KEY_DOT': 52, + 'KEY_DOWN': 108, + 'KEY_DO_NOT_DISTURB': 591, + 'KEY_DUAL_RANGE_RADAR': 643, + 'KEY_DVD': 389, + 'KEY_E': 18, + 'KEY_EDIT': 176, + 'KEY_EDITOR': 422, + 'KEY_EJECTCD': 161, + 'KEY_EJECTCLOSECD': 162, + 'KEY_EMAIL': 215, + 'KEY_EMOJI_PICKER': 585, + 'KEY_END': 107, + 'KEY_ENTER': 28, + 'KEY_EPG': 365, + 'KEY_EQUAL': 13, + 'KEY_ESC': 1, + 'KEY_EURO': 435, + 'KEY_EXIT': 174, + 'KEY_F': 33, + 'KEY_F1': 59, + 'KEY_F10': 68, + 'KEY_F11': 87, + 'KEY_F12': 88, + 'KEY_F13': 183, + 'KEY_F14': 184, + 'KEY_F15': 185, + 'KEY_F16': 186, + 'KEY_F17': 187, + 'KEY_F18': 188, + 'KEY_F19': 189, + 'KEY_F2': 60, + 'KEY_F20': 190, + 'KEY_F21': 191, + 'KEY_F22': 192, + 'KEY_F23': 193, + 'KEY_F24': 194, + 'KEY_F3': 61, + 'KEY_F4': 62, + 'KEY_F5': 63, + 'KEY_F6': 64, + 'KEY_F7': 65, + 'KEY_F8': 66, + 'KEY_F9': 67, + 'KEY_FASTFORWARD': 208, + 'KEY_FASTREVERSE': 629, + 'KEY_FAVORITES': 364, + 'KEY_FILE': 144, + 'KEY_FINANCE': 219, + 'KEY_FIND': 136, + 'KEY_FIRST': 404, + 'KEY_FISHING_CHART': 641, + 'KEY_FN': 464, + 'KEY_FN_1': 478, + 'KEY_FN_2': 479, + 'KEY_FN_B': 484, + 'KEY_FN_D': 480, + 'KEY_FN_E': 481, + 'KEY_FN_ESC': 465, + 'KEY_FN_F': 482, + 'KEY_FN_F1': 466, + 'KEY_FN_F10': 475, + 'KEY_FN_F11': 476, + 'KEY_FN_F12': 477, + 'KEY_FN_F2': 467, + 'KEY_FN_F3': 468, + 'KEY_FN_F4': 469, + 'KEY_FN_F5': 470, + 'KEY_FN_F6': 471, + 'KEY_FN_F7': 472, + 'KEY_FN_F8': 473, + 'KEY_FN_F9': 474, + 'KEY_FN_RIGHT_SHIFT': 485, + 'KEY_FN_S': 483, + 'KEY_FORWARD': 159, + 'KEY_FORWARDMAIL': 233, + 'KEY_FRAMEBACK': 436, + 'KEY_FRAMEFORWARD': 437, + 'KEY_FRONT': 132, + 'KEY_FULL_SCREEN': 372, + 'KEY_G': 34, + 'KEY_GAMES': 417, + 'KEY_GOTO': 354, + 'KEY_GRAPHICSEDITOR': 424, + 'KEY_GRAVE': 41, + 'KEY_GREEN': 399, + 'KEY_H': 35, + 'KEY_HANGEUL': 122, + 'KEY_HANGUEL': 122, + 'KEY_HANGUP_PHONE': 446, + 'KEY_HANJA': 123, + 'KEY_HELP': 138, + 'KEY_HENKAN': 92, + 'KEY_HIRAGANA': 91, + 'KEY_HOME': 102, + 'KEY_HOMEPAGE': 172, + 'KEY_HP': 211, + 'KEY_I': 23, + 'KEY_IMAGES': 442, + 'KEY_INFO': 358, + 'KEY_INSERT': 110, + 'KEY_INS_LINE': 450, + 'KEY_ISO': 170, + 'KEY_J': 36, + 'KEY_JOURNAL': 578, + 'KEY_K': 37, + 'KEY_KATAKANA': 90, + 'KEY_KATAKANAHIRAGANA': 93, + 'KEY_KBDILLUMDOWN': 229, + 'KEY_KBDILLUMTOGGLE': 228, + 'KEY_KBDILLUMUP': 230, + 'KEY_KBDINPUTASSIST_ACCEPT': 612, + 'KEY_KBDINPUTASSIST_CANCEL': 613, + 'KEY_KBDINPUTASSIST_NEXT': 609, + 'KEY_KBDINPUTASSIST_NEXTGROUP': 611, + 'KEY_KBDINPUTASSIST_PREV': 608, + 'KEY_KBDINPUTASSIST_PREVGROUP': 610, + 'KEY_KBD_LAYOUT_NEXT': 584, + 'KEY_KBD_LCD_MENU1': 696, + 'KEY_KBD_LCD_MENU2': 697, + 'KEY_KBD_LCD_MENU3': 698, + 'KEY_KBD_LCD_MENU4': 699, + 'KEY_KBD_LCD_MENU5': 700, + 'KEY_KEYBOARD': 374, + 'KEY_KP0': 82, + 'KEY_KP1': 79, + 'KEY_KP2': 80, + 'KEY_KP3': 81, + 'KEY_KP4': 75, + 'KEY_KP5': 76, + 'KEY_KP6': 77, + 'KEY_KP7': 71, + 'KEY_KP8': 72, + 'KEY_KP9': 73, + 'KEY_KPASTERISK': 55, + 'KEY_KPCOMMA': 121, + 'KEY_KPDOT': 83, + 'KEY_KPENTER': 96, + 'KEY_KPEQUAL': 117, + 'KEY_KPJPCOMMA': 95, + 'KEY_KPLEFTPAREN': 179, + 'KEY_KPMINUS': 74, + 'KEY_KPPLUS': 78, + 'KEY_KPPLUSMINUS': 118, + 'KEY_KPRIGHTPAREN': 180, + 'KEY_KPSLASH': 98, + 'KEY_L': 38, + 'KEY_LANGUAGE': 368, + 'KEY_LAST': 405, + 'KEY_LEFT': 105, + 'KEY_LEFTALT': 56, + 'KEY_LEFTBRACE': 26, + 'KEY_LEFTCTRL': 29, + 'KEY_LEFTMETA': 125, + 'KEY_LEFTSHIFT': 42, + 'KEY_LEFT_DOWN': 617, + 'KEY_LEFT_UP': 616, + 'KEY_LIGHTS_TOGGLE': 542, + 'KEY_LINEFEED': 101, + 'KEY_LIST': 395, + 'KEY_LOGOFF': 433, + 'KEY_M': 50, + 'KEY_MACRO': 112, + 'KEY_MACRO1': 656, + 'KEY_MACRO10': 665, + 'KEY_MACRO11': 666, + 'KEY_MACRO12': 667, + 'KEY_MACRO13': 668, + 'KEY_MACRO14': 669, + 'KEY_MACRO15': 670, + 'KEY_MACRO16': 671, + 'KEY_MACRO17': 672, + 'KEY_MACRO18': 673, + 'KEY_MACRO19': 674, + 'KEY_MACRO2': 657, + 'KEY_MACRO20': 675, + 'KEY_MACRO21': 676, + 'KEY_MACRO22': 677, + 'KEY_MACRO23': 678, + 'KEY_MACRO24': 679, + 'KEY_MACRO25': 680, + 'KEY_MACRO26': 681, + 'KEY_MACRO27': 682, + 'KEY_MACRO28': 683, + 'KEY_MACRO29': 684, + 'KEY_MACRO3': 658, + 'KEY_MACRO30': 685, + 'KEY_MACRO4': 659, + 'KEY_MACRO5': 660, + 'KEY_MACRO6': 661, + 'KEY_MACRO7': 662, + 'KEY_MACRO8': 663, + 'KEY_MACRO9': 664, + 'KEY_MACRO_PRESET1': 691, + 'KEY_MACRO_PRESET2': 692, + 'KEY_MACRO_PRESET3': 693, + 'KEY_MACRO_PRESET_CYCLE': 690, + 'KEY_MACRO_RECORD_START': 688, + 'KEY_MACRO_RECORD_STOP': 689, + 'KEY_MAIL': 155, + 'KEY_MARK_WAYPOINT': 638, + 'KEY_MAX': 767, + 'KEY_MEDIA': 226, + 'KEY_MEDIA_REPEAT': 439, + 'KEY_MEDIA_TOP_MENU': 619, + 'KEY_MEMO': 396, + 'KEY_MENU': 139, + 'KEY_MESSENGER': 430, + 'KEY_MHP': 367, + 'KEY_MICMUTE': 248, + 'KEY_MINUS': 12, + 'KEY_MIN_INTERESTING': 113, + 'KEY_MODE': 373, + 'KEY_MOVE': 175, + 'KEY_MP3': 391, + 'KEY_MSDOS': 151, + 'KEY_MUHENKAN': 94, + 'KEY_MUTE': 113, + 'KEY_N': 49, + 'KEY_NAV_CHART': 640, + 'KEY_NAV_INFO': 648, + 'KEY_NEW': 181, + 'KEY_NEWS': 427, + 'KEY_NEXT': 407, + 'KEY_NEXTSONG': 163, + 'KEY_NEXT_ELEMENT': 635, + 'KEY_NEXT_FAVORITE': 624, + 'KEY_NOTIFICATION_CENTER': 444, + 'KEY_NUMERIC_0': 512, + 'KEY_NUMERIC_1': 513, + 'KEY_NUMERIC_11': 620, + 'KEY_NUMERIC_12': 621, + 'KEY_NUMERIC_2': 514, + 'KEY_NUMERIC_3': 515, + 'KEY_NUMERIC_4': 516, + 'KEY_NUMERIC_5': 517, + 'KEY_NUMERIC_6': 518, + 'KEY_NUMERIC_7': 519, + 'KEY_NUMERIC_8': 520, + 'KEY_NUMERIC_9': 521, + 'KEY_NUMERIC_A': 524, + 'KEY_NUMERIC_B': 525, + 'KEY_NUMERIC_C': 526, + 'KEY_NUMERIC_D': 527, + 'KEY_NUMERIC_POUND': 523, + 'KEY_NUMERIC_STAR': 522, + 'KEY_NUMLOCK': 69, + 'KEY_O': 24, + 'KEY_OK': 352, + 'KEY_ONSCREEN_KEYBOARD': 632, + 'KEY_OPEN': 134, + 'KEY_OPTION': 357, + 'KEY_P': 25, + 'KEY_PAGEDOWN': 109, + 'KEY_PAGEUP': 104, + 'KEY_PASTE': 135, + 'KEY_PAUSE': 119, + 'KEY_PAUSECD': 201, + 'KEY_PAUSE_RECORD': 626, + 'KEY_PC': 376, + 'KEY_PHONE': 169, + 'KEY_PICKUP_PHONE': 445, + 'KEY_PLAY': 207, + 'KEY_PLAYCD': 200, + 'KEY_PLAYER': 387, + 'KEY_PLAYPAUSE': 164, + 'KEY_POWER': 116, + 'KEY_POWER2': 356, + 'KEY_PRESENTATION': 425, + 'KEY_PREVIOUS': 412, + 'KEY_PREVIOUSSONG': 165, + 'KEY_PREVIOUS_ELEMENT': 636, + 'KEY_PRINT': 210, + 'KEY_PRIVACY_SCREEN_TOGGLE': 633, + 'KEY_PROG1': 148, + 'KEY_PROG2': 149, + 'KEY_PROG3': 202, + 'KEY_PROG4': 203, + 'KEY_PROGRAM': 362, + 'KEY_PROPS': 130, + 'KEY_PVR': 366, + 'KEY_Q': 16, + 'KEY_QUESTION': 214, + 'KEY_R': 19, + 'KEY_RADAR_OVERLAY': 644, + 'KEY_RADIO': 385, + 'KEY_RECORD': 167, + 'KEY_RED': 398, + 'KEY_REDO': 182, + 'KEY_REFRESH': 173, + 'KEY_REFRESH_RATE_TOGGLE': 562, + 'KEY_REPLY': 232, + 'KEY_RESERVED': 0, + 'KEY_RESTART': 408, + 'KEY_REWIND': 168, + 'KEY_RFKILL': 247, + 'KEY_RIGHT': 106, + 'KEY_RIGHTALT': 100, + 'KEY_RIGHTBRACE': 27, + 'KEY_RIGHTCTRL': 97, + 'KEY_RIGHTMETA': 126, + 'KEY_RIGHTSHIFT': 54, + 'KEY_RIGHT_DOWN': 615, + 'KEY_RIGHT_UP': 614, + 'KEY_RO': 89, + 'KEY_ROOT_MENU': 618, + 'KEY_ROTATE_DISPLAY': 153, + 'KEY_ROTATE_LOCK_TOGGLE': 561, + 'KEY_S': 31, + 'KEY_SAT': 381, + 'KEY_SAT2': 382, + 'KEY_SAVE': 234, + 'KEY_SCALE': 120, + 'KEY_SCREEN': 375, + 'KEY_SCREENLOCK': 152, + 'KEY_SCREENSAVER': 581, + 'KEY_SCROLLDOWN': 178, + 'KEY_SCROLLLOCK': 70, + 'KEY_SCROLLUP': 177, + 'KEY_SEARCH': 217, + 'KEY_SELECT': 353, + 'KEY_SELECTIVE_SCREENSHOT': 634, + 'KEY_SEMICOLON': 39, + 'KEY_SEND': 231, + 'KEY_SENDFILE': 145, + 'KEY_SETUP': 141, + 'KEY_SHOP': 221, + 'KEY_SHUFFLE': 410, + 'KEY_SIDEVU_SONAR': 647, + 'KEY_SINGLE_RANGE_RADAR': 642, + 'KEY_SLASH': 53, + 'KEY_SLEEP': 142, + 'KEY_SLOW': 409, + 'KEY_SLOWREVERSE': 630, + 'KEY_SOS': 639, + 'KEY_SOUND': 213, + 'KEY_SPACE': 57, + 'KEY_SPELLCHECK': 432, + 'KEY_SPORT': 220, + 'KEY_SPREADSHEET': 423, + 'KEY_STOP': 128, + 'KEY_STOPCD': 166, + 'KEY_STOP_RECORD': 625, + 'KEY_SUBTITLE': 370, + 'KEY_SUSPEND': 205, + 'KEY_SWITCHVIDEOMODE': 227, + 'KEY_SYSRQ': 99, + 'KEY_T': 20, + 'KEY_TAB': 15, + 'KEY_TAPE': 384, + 'KEY_TASKMANAGER': 577, + 'KEY_TEEN': 414, + 'KEY_TEXT': 388, + 'KEY_TIME': 359, + 'KEY_TITLE': 369, + 'KEY_TOUCHPAD_OFF': 532, + 'KEY_TOUCHPAD_ON': 531, + 'KEY_TOUCHPAD_TOGGLE': 530, + 'KEY_TRADITIONAL_SONAR': 645, + 'KEY_TUNER': 386, + 'KEY_TV': 377, + 'KEY_TV2': 378, + 'KEY_TWEN': 415, + 'KEY_U': 22, + 'KEY_UNDO': 131, + 'KEY_UNKNOWN': 240, + 'KEY_UNMUTE': 628, + 'KEY_UP': 103, + 'KEY_UWB': 239, + 'KEY_V': 47, + 'KEY_VCR': 379, + 'KEY_VCR2': 380, + 'KEY_VENDOR': 360, + 'KEY_VIDEO': 393, + 'KEY_VIDEOPHONE': 416, + 'KEY_VIDEO_NEXT': 241, + 'KEY_VIDEO_PREV': 242, + 'KEY_VOD': 627, + 'KEY_VOICECOMMAND': 582, + 'KEY_VOICEMAIL': 428, + 'KEY_VOLUMEDOWN': 114, + 'KEY_VOLUMEUP': 115, + 'KEY_W': 17, + 'KEY_WAKEUP': 143, + 'KEY_WIMAX': 246, + 'KEY_WLAN': 238, + 'KEY_WORDPROCESSOR': 421, + 'KEY_WPS_BUTTON': 529, + 'KEY_WWAN': 246, + 'KEY_WWW': 150, + 'KEY_X': 45, + 'KEY_XFER': 147, + 'KEY_Y': 21, + 'KEY_YELLOW': 400, + 'KEY_YEN': 124, + 'KEY_Z': 44, + 'KEY_ZENKAKUHANKAKU': 85, + 'KEY_ZOOM': 372, + 'KEY_ZOOMIN': 418, + 'KEY_ZOOMOUT': 419, + 'KEY_ZOOMRESET': 420, + 'LED_CAPSL': 1, + 'LED_CHARGING': 10, + 'LED_CNT': 16, + 'LED_COMPOSE': 3, + 'LED_KANA': 4, + 'LED_MAIL': 9, + 'LED_MAX': 15, + 'LED_MISC': 8, + 'LED_MUTE': 7, + 'LED_NUML': 0, + 'LED_SCROLLL': 2, + 'LED_SLEEP': 5, + 'LED_SUSPEND': 6, + 'MSC_CNT': 8, + 'MSC_GESTURE': 2, + 'MSC_MAX': 7, + 'MSC_PULSELED': 1, + 'MSC_RAW': 3, + 'MSC_SCAN': 4, + 'MSC_SERIAL': 0, + 'MSC_TIMESTAMP': 5, + 'REL_CNT': 16, + 'REL_DIAL': 7, + 'REL_HWHEEL': 6, + 'REL_HWHEEL_HI_RES': 12, + 'REL_MAX': 15, + 'REL_MISC': 9, + 'REL_RESERVED': 10, + 'REL_RX': 3, + 'REL_RY': 4, + 'REL_RZ': 5, + 'REL_WHEEL': 8, + 'REL_WHEEL_HI_RES': 11, + 'REL_X': 0, + 'REL_Y': 1, + 'REL_Z': 2, + 'REP_CNT': 2, + 'REP_DELAY': 0, + 'REP_MAX': 1, + 'REP_PERIOD': 1, + 'SND_BELL': 1, + 'SND_CLICK': 0, + 'SND_CNT': 8, + 'SND_MAX': 7, + 'SND_TONE': 2, + 'SW_CAMERA_LENS_COVER': 9, + 'SW_CNT': 17, + 'SW_DOCK': 5, + 'SW_FRONT_PROXIMITY': 11, + 'SW_HEADPHONE_INSERT': 2, + 'SW_JACK_PHYSICAL_INSERT': 7, + 'SW_KEYPAD_SLIDE': 10, + 'SW_LID': 0, + 'SW_LINEIN_INSERT': 13, + 'SW_LINEOUT_INSERT': 6, + 'SW_MACHINE_COVER': 16, + 'SW_MAX': 16, + 'SW_MICROPHONE_INSERT': 4, + 'SW_MUTE_DEVICE': 14, + 'SW_PEN_INSERTED': 15, + 'SW_RADIO': 3, + 'SW_RFKILL_ALL': 3, + 'SW_ROTATE_LOCK': 12, + 'SW_TABLET_MODE': 1, + 'SW_VIDEOOUT_INSERT': 8, + 'SYN_CNT': 16, + 'SYN_CONFIG': 1, + 'SYN_DROPPED': 3, + 'SYN_MAX': 15, + 'SYN_MT_REPORT': 2, + 'SYN_REPORT': 0, + 'UI_FF_ERASE': 2, + 'UI_FF_UPLOAD': 1} + +#: Mapping of event types to other value/name mappings. +bytype: Dict[int, Dict[int, Union[str, Tuple[str]]]] = { 0: {0: 'SYN_REPORT', 1: 'SYN_CONFIG', 2: 'SYN_MT_REPORT', 3: 'SYN_DROPPED', 15: 'SYN_MAX', 16: 'SYN_CNT'}, + 1: { 0: 'KEY_RESERVED', + 1: 'KEY_ESC', + 2: 'KEY_1', + 3: 'KEY_2', + 4: 'KEY_3', + 5: 'KEY_4', + 6: 'KEY_5', + 7: 'KEY_6', + 8: 'KEY_7', + 9: 'KEY_8', + 10: 'KEY_9', + 11: 'KEY_0', + 12: 'KEY_MINUS', + 13: 'KEY_EQUAL', + 14: 'KEY_BACKSPACE', + 15: 'KEY_TAB', + 16: 'KEY_Q', + 17: 'KEY_W', + 18: 'KEY_E', + 19: 'KEY_R', + 20: 'KEY_T', + 21: 'KEY_Y', + 22: 'KEY_U', + 23: 'KEY_I', + 24: 'KEY_O', + 25: 'KEY_P', + 26: 'KEY_LEFTBRACE', + 27: 'KEY_RIGHTBRACE', + 28: 'KEY_ENTER', + 29: 'KEY_LEFTCTRL', + 30: 'KEY_A', + 31: 'KEY_S', + 32: 'KEY_D', + 33: 'KEY_F', + 34: 'KEY_G', + 35: 'KEY_H', + 36: 'KEY_J', + 37: 'KEY_K', + 38: 'KEY_L', + 39: 'KEY_SEMICOLON', + 40: 'KEY_APOSTROPHE', + 41: 'KEY_GRAVE', + 42: 'KEY_LEFTSHIFT', + 43: 'KEY_BACKSLASH', + 44: 'KEY_Z', + 45: 'KEY_X', + 46: 'KEY_C', + 47: 'KEY_V', + 48: 'KEY_B', + 49: 'KEY_N', + 50: 'KEY_M', + 51: 'KEY_COMMA', + 52: 'KEY_DOT', + 53: 'KEY_SLASH', + 54: 'KEY_RIGHTSHIFT', + 55: 'KEY_KPASTERISK', + 56: 'KEY_LEFTALT', + 57: 'KEY_SPACE', + 58: 'KEY_CAPSLOCK', + 59: 'KEY_F1', + 60: 'KEY_F2', + 61: 'KEY_F3', + 62: 'KEY_F4', + 63: 'KEY_F5', + 64: 'KEY_F6', + 65: 'KEY_F7', + 66: 'KEY_F8', + 67: 'KEY_F9', + 68: 'KEY_F10', + 69: 'KEY_NUMLOCK', + 70: 'KEY_SCROLLLOCK', + 71: 'KEY_KP7', + 72: 'KEY_KP8', + 73: 'KEY_KP9', + 74: 'KEY_KPMINUS', + 75: 'KEY_KP4', + 76: 'KEY_KP5', + 77: 'KEY_KP6', + 78: 'KEY_KPPLUS', + 79: 'KEY_KP1', + 80: 'KEY_KP2', + 81: 'KEY_KP3', + 82: 'KEY_KP0', + 83: 'KEY_KPDOT', + 85: 'KEY_ZENKAKUHANKAKU', + 86: 'KEY_102ND', + 87: 'KEY_F11', + 88: 'KEY_F12', + 89: 'KEY_RO', + 90: 'KEY_KATAKANA', + 91: 'KEY_HIRAGANA', + 92: 'KEY_HENKAN', + 93: 'KEY_KATAKANAHIRAGANA', + 94: 'KEY_MUHENKAN', + 95: 'KEY_KPJPCOMMA', + 96: 'KEY_KPENTER', + 97: 'KEY_RIGHTCTRL', + 98: 'KEY_KPSLASH', + 99: 'KEY_SYSRQ', + 100: 'KEY_RIGHTALT', + 101: 'KEY_LINEFEED', + 102: 'KEY_HOME', + 103: 'KEY_UP', + 104: 'KEY_PAGEUP', + 105: 'KEY_LEFT', + 106: 'KEY_RIGHT', + 107: 'KEY_END', + 108: 'KEY_DOWN', + 109: 'KEY_PAGEDOWN', + 110: 'KEY_INSERT', + 111: 'KEY_DELETE', + 112: 'KEY_MACRO', + 113: ('KEY_MIN_INTERESTING', 'KEY_MUTE'), + 114: 'KEY_VOLUMEDOWN', + 115: 'KEY_VOLUMEUP', + 116: 'KEY_POWER', + 117: 'KEY_KPEQUAL', + 118: 'KEY_KPPLUSMINUS', + 119: 'KEY_PAUSE', + 120: 'KEY_SCALE', + 121: 'KEY_KPCOMMA', + 122: ('KEY_HANGEUL', 'KEY_HANGUEL'), + 123: 'KEY_HANJA', + 124: 'KEY_YEN', + 125: 'KEY_LEFTMETA', + 126: 'KEY_RIGHTMETA', + 127: 'KEY_COMPOSE', + 128: 'KEY_STOP', + 129: 'KEY_AGAIN', + 130: 'KEY_PROPS', + 131: 'KEY_UNDO', + 132: 'KEY_FRONT', + 133: 'KEY_COPY', + 134: 'KEY_OPEN', + 135: 'KEY_PASTE', + 136: 'KEY_FIND', + 137: 'KEY_CUT', + 138: 'KEY_HELP', + 139: 'KEY_MENU', + 140: 'KEY_CALC', + 141: 'KEY_SETUP', + 142: 'KEY_SLEEP', + 143: 'KEY_WAKEUP', + 144: 'KEY_FILE', + 145: 'KEY_SENDFILE', + 146: 'KEY_DELETEFILE', + 147: 'KEY_XFER', + 148: 'KEY_PROG1', + 149: 'KEY_PROG2', + 150: 'KEY_WWW', + 151: 'KEY_MSDOS', + 152: ('KEY_COFFEE', 'KEY_SCREENLOCK'), + 153: ('KEY_DIRECTION', 'KEY_ROTATE_DISPLAY'), + 154: 'KEY_CYCLEWINDOWS', + 155: 'KEY_MAIL', + 156: 'KEY_BOOKMARKS', + 157: 'KEY_COMPUTER', + 158: 'KEY_BACK', + 159: 'KEY_FORWARD', + 160: 'KEY_CLOSECD', + 161: 'KEY_EJECTCD', + 162: 'KEY_EJECTCLOSECD', + 163: 'KEY_NEXTSONG', + 164: 'KEY_PLAYPAUSE', + 165: 'KEY_PREVIOUSSONG', + 166: 'KEY_STOPCD', + 167: 'KEY_RECORD', + 168: 'KEY_REWIND', + 169: 'KEY_PHONE', + 170: 'KEY_ISO', + 171: 'KEY_CONFIG', + 172: 'KEY_HOMEPAGE', + 173: 'KEY_REFRESH', + 174: 'KEY_EXIT', + 175: 'KEY_MOVE', + 176: 'KEY_EDIT', + 177: 'KEY_SCROLLUP', + 178: 'KEY_SCROLLDOWN', + 179: 'KEY_KPLEFTPAREN', + 180: 'KEY_KPRIGHTPAREN', + 181: 'KEY_NEW', + 182: 'KEY_REDO', + 183: 'KEY_F13', + 184: 'KEY_F14', + 185: 'KEY_F15', + 186: 'KEY_F16', + 187: 'KEY_F17', + 188: 'KEY_F18', + 189: 'KEY_F19', + 190: 'KEY_F20', + 191: 'KEY_F21', + 192: 'KEY_F22', + 193: 'KEY_F23', + 194: 'KEY_F24', + 200: 'KEY_PLAYCD', + 201: 'KEY_PAUSECD', + 202: 'KEY_PROG3', + 203: 'KEY_PROG4', + 204: ('KEY_ALL_APPLICATIONS', 'KEY_DASHBOARD'), + 205: 'KEY_SUSPEND', + 206: 'KEY_CLOSE', + 207: 'KEY_PLAY', + 208: 'KEY_FASTFORWARD', + 209: 'KEY_BASSBOOST', + 210: 'KEY_PRINT', + 211: 'KEY_HP', + 212: 'KEY_CAMERA', + 213: 'KEY_SOUND', + 214: 'KEY_QUESTION', + 215: 'KEY_EMAIL', + 216: 'KEY_CHAT', + 217: 'KEY_SEARCH', + 218: 'KEY_CONNECT', + 219: 'KEY_FINANCE', + 220: 'KEY_SPORT', + 221: 'KEY_SHOP', + 222: 'KEY_ALTERASE', + 223: 'KEY_CANCEL', + 224: 'KEY_BRIGHTNESSDOWN', + 225: 'KEY_BRIGHTNESSUP', + 226: 'KEY_MEDIA', + 227: 'KEY_SWITCHVIDEOMODE', + 228: 'KEY_KBDILLUMTOGGLE', + 229: 'KEY_KBDILLUMDOWN', + 230: 'KEY_KBDILLUMUP', + 231: 'KEY_SEND', + 232: 'KEY_REPLY', + 233: 'KEY_FORWARDMAIL', + 234: 'KEY_SAVE', + 235: 'KEY_DOCUMENTS', + 236: 'KEY_BATTERY', + 237: 'KEY_BLUETOOTH', + 238: 'KEY_WLAN', + 239: 'KEY_UWB', + 240: 'KEY_UNKNOWN', + 241: 'KEY_VIDEO_NEXT', + 242: 'KEY_VIDEO_PREV', + 243: 'KEY_BRIGHTNESS_CYCLE', + 244: ('KEY_BRIGHTNESS_AUTO', 'KEY_BRIGHTNESS_ZERO'), + 245: 'KEY_DISPLAY_OFF', + 246: ('KEY_WIMAX', 'KEY_WWAN'), + 247: 'KEY_RFKILL', + 248: 'KEY_MICMUTE', + 256: ('BTN_0', 'BTN_MISC'), + 257: 'BTN_1', + 258: 'BTN_2', + 259: 'BTN_3', + 260: 'BTN_4', + 261: 'BTN_5', + 262: 'BTN_6', + 263: 'BTN_7', + 264: 'BTN_8', + 265: 'BTN_9', + 272: ('BTN_LEFT', 'BTN_MOUSE'), + 273: 'BTN_RIGHT', + 274: 'BTN_MIDDLE', + 275: 'BTN_SIDE', + 276: 'BTN_EXTRA', + 277: 'BTN_FORWARD', + 278: 'BTN_BACK', + 279: 'BTN_TASK', + 288: ('BTN_JOYSTICK', 'BTN_TRIGGER'), + 289: 'BTN_THUMB', + 290: 'BTN_THUMB2', + 291: 'BTN_TOP', + 292: 'BTN_TOP2', + 293: 'BTN_PINKIE', + 294: 'BTN_BASE', + 295: 'BTN_BASE2', + 296: 'BTN_BASE3', + 297: 'BTN_BASE4', + 298: 'BTN_BASE5', + 299: 'BTN_BASE6', + 303: 'BTN_DEAD', + 304: ('BTN_A', 'BTN_GAMEPAD', 'BTN_SOUTH'), + 305: ('BTN_B', 'BTN_EAST'), + 306: 'BTN_C', + 307: ('BTN_NORTH', 'BTN_X'), + 308: ('BTN_WEST', 'BTN_Y'), + 309: 'BTN_Z', + 310: 'BTN_TL', + 311: 'BTN_TR', + 312: 'BTN_TL2', + 313: 'BTN_TR2', + 314: 'BTN_SELECT', + 315: 'BTN_START', + 316: 'BTN_MODE', + 317: 'BTN_THUMBL', + 318: 'BTN_THUMBR', + 320: ('BTN_DIGI', 'BTN_TOOL_PEN'), + 321: 'BTN_TOOL_RUBBER', + 322: 'BTN_TOOL_BRUSH', + 323: 'BTN_TOOL_PENCIL', + 324: 'BTN_TOOL_AIRBRUSH', + 325: 'BTN_TOOL_FINGER', + 326: 'BTN_TOOL_MOUSE', + 327: 'BTN_TOOL_LENS', + 328: 'BTN_TOOL_QUINTTAP', + 329: 'BTN_STYLUS3', + 330: 'BTN_TOUCH', + 331: 'BTN_STYLUS', + 332: 'BTN_STYLUS2', + 333: 'BTN_TOOL_DOUBLETAP', + 334: 'BTN_TOOL_TRIPLETAP', + 335: 'BTN_TOOL_QUADTAP', + 336: ('BTN_GEAR_DOWN', 'BTN_WHEEL'), + 337: 'BTN_GEAR_UP', + 352: 'KEY_OK', + 353: 'KEY_SELECT', + 354: 'KEY_GOTO', + 355: 'KEY_CLEAR', + 356: 'KEY_POWER2', + 357: 'KEY_OPTION', + 358: 'KEY_INFO', + 359: 'KEY_TIME', + 360: 'KEY_VENDOR', + 361: 'KEY_ARCHIVE', + 362: 'KEY_PROGRAM', + 363: 'KEY_CHANNEL', + 364: 'KEY_FAVORITES', + 365: 'KEY_EPG', + 366: 'KEY_PVR', + 367: 'KEY_MHP', + 368: 'KEY_LANGUAGE', + 369: 'KEY_TITLE', + 370: 'KEY_SUBTITLE', + 371: 'KEY_ANGLE', + 372: ('KEY_FULL_SCREEN', 'KEY_ZOOM'), + 373: 'KEY_MODE', + 374: 'KEY_KEYBOARD', + 375: ('KEY_ASPECT_RATIO', 'KEY_SCREEN'), + 376: 'KEY_PC', + 377: 'KEY_TV', + 378: 'KEY_TV2', + 379: 'KEY_VCR', + 380: 'KEY_VCR2', + 381: 'KEY_SAT', + 382: 'KEY_SAT2', + 383: 'KEY_CD', + 384: 'KEY_TAPE', + 385: 'KEY_RADIO', + 386: 'KEY_TUNER', + 387: 'KEY_PLAYER', + 388: 'KEY_TEXT', + 389: 'KEY_DVD', + 390: 'KEY_AUX', + 391: 'KEY_MP3', + 392: 'KEY_AUDIO', + 393: 'KEY_VIDEO', + 394: 'KEY_DIRECTORY', + 395: 'KEY_LIST', + 396: 'KEY_MEMO', + 397: 'KEY_CALENDAR', + 398: 'KEY_RED', + 399: 'KEY_GREEN', + 400: 'KEY_YELLOW', + 401: 'KEY_BLUE', + 402: 'KEY_CHANNELUP', + 403: 'KEY_CHANNELDOWN', + 404: 'KEY_FIRST', + 405: 'KEY_LAST', + 406: 'KEY_AB', + 407: 'KEY_NEXT', + 408: 'KEY_RESTART', + 409: 'KEY_SLOW', + 410: 'KEY_SHUFFLE', + 411: 'KEY_BREAK', + 412: 'KEY_PREVIOUS', + 413: 'KEY_DIGITS', + 414: 'KEY_TEEN', + 415: 'KEY_TWEN', + 416: 'KEY_VIDEOPHONE', + 417: 'KEY_GAMES', + 418: 'KEY_ZOOMIN', + 419: 'KEY_ZOOMOUT', + 420: 'KEY_ZOOMRESET', + 421: 'KEY_WORDPROCESSOR', + 422: 'KEY_EDITOR', + 423: 'KEY_SPREADSHEET', + 424: 'KEY_GRAPHICSEDITOR', + 425: 'KEY_PRESENTATION', + 426: 'KEY_DATABASE', + 427: 'KEY_NEWS', + 428: 'KEY_VOICEMAIL', + 429: 'KEY_ADDRESSBOOK', + 430: 'KEY_MESSENGER', + 431: ('KEY_BRIGHTNESS_TOGGLE', 'KEY_DISPLAYTOGGLE'), + 432: 'KEY_SPELLCHECK', + 433: 'KEY_LOGOFF', + 434: 'KEY_DOLLAR', + 435: 'KEY_EURO', + 436: 'KEY_FRAMEBACK', + 437: 'KEY_FRAMEFORWARD', + 438: 'KEY_CONTEXT_MENU', + 439: 'KEY_MEDIA_REPEAT', + 440: 'KEY_10CHANNELSUP', + 441: 'KEY_10CHANNELSDOWN', + 442: 'KEY_IMAGES', + 444: 'KEY_NOTIFICATION_CENTER', + 445: 'KEY_PICKUP_PHONE', + 446: 'KEY_HANGUP_PHONE', + 448: 'KEY_DEL_EOL', + 449: 'KEY_DEL_EOS', + 450: 'KEY_INS_LINE', + 451: 'KEY_DEL_LINE', + 464: 'KEY_FN', + 465: 'KEY_FN_ESC', + 466: 'KEY_FN_F1', + 467: 'KEY_FN_F2', + 468: 'KEY_FN_F3', + 469: 'KEY_FN_F4', + 470: 'KEY_FN_F5', + 471: 'KEY_FN_F6', + 472: 'KEY_FN_F7', + 473: 'KEY_FN_F8', + 474: 'KEY_FN_F9', + 475: 'KEY_FN_F10', + 476: 'KEY_FN_F11', + 477: 'KEY_FN_F12', + 478: 'KEY_FN_1', + 479: 'KEY_FN_2', + 480: 'KEY_FN_D', + 481: 'KEY_FN_E', + 482: 'KEY_FN_F', + 483: 'KEY_FN_S', + 484: 'KEY_FN_B', + 485: 'KEY_FN_RIGHT_SHIFT', + 497: 'KEY_BRL_DOT1', + 498: 'KEY_BRL_DOT2', + 499: 'KEY_BRL_DOT3', + 500: 'KEY_BRL_DOT4', + 501: 'KEY_BRL_DOT5', + 502: 'KEY_BRL_DOT6', + 503: 'KEY_BRL_DOT7', + 504: 'KEY_BRL_DOT8', + 505: 'KEY_BRL_DOT9', + 506: 'KEY_BRL_DOT10', + 512: 'KEY_NUMERIC_0', + 513: 'KEY_NUMERIC_1', + 514: 'KEY_NUMERIC_2', + 515: 'KEY_NUMERIC_3', + 516: 'KEY_NUMERIC_4', + 517: 'KEY_NUMERIC_5', + 518: 'KEY_NUMERIC_6', + 519: 'KEY_NUMERIC_7', + 520: 'KEY_NUMERIC_8', + 521: 'KEY_NUMERIC_9', + 522: 'KEY_NUMERIC_STAR', + 523: 'KEY_NUMERIC_POUND', + 524: 'KEY_NUMERIC_A', + 525: 'KEY_NUMERIC_B', + 526: 'KEY_NUMERIC_C', + 527: 'KEY_NUMERIC_D', + 528: 'KEY_CAMERA_FOCUS', + 529: 'KEY_WPS_BUTTON', + 530: 'KEY_TOUCHPAD_TOGGLE', + 531: 'KEY_TOUCHPAD_ON', + 532: 'KEY_TOUCHPAD_OFF', + 533: 'KEY_CAMERA_ZOOMIN', + 534: 'KEY_CAMERA_ZOOMOUT', + 535: 'KEY_CAMERA_UP', + 536: 'KEY_CAMERA_DOWN', + 537: 'KEY_CAMERA_LEFT', + 538: 'KEY_CAMERA_RIGHT', + 539: 'KEY_ATTENDANT_ON', + 540: 'KEY_ATTENDANT_OFF', + 541: 'KEY_ATTENDANT_TOGGLE', + 542: 'KEY_LIGHTS_TOGGLE', + 544: 'BTN_DPAD_UP', + 545: 'BTN_DPAD_DOWN', + 546: 'BTN_DPAD_LEFT', + 547: 'BTN_DPAD_RIGHT', + 560: 'KEY_ALS_TOGGLE', + 561: 'KEY_ROTATE_LOCK_TOGGLE', + 562: 'KEY_REFRESH_RATE_TOGGLE', + 576: 'KEY_BUTTONCONFIG', + 577: 'KEY_TASKMANAGER', + 578: 'KEY_JOURNAL', + 579: 'KEY_CONTROLPANEL', + 580: 'KEY_APPSELECT', + 581: 'KEY_SCREENSAVER', + 582: 'KEY_VOICECOMMAND', + 583: 'KEY_ASSISTANT', + 584: 'KEY_KBD_LAYOUT_NEXT', + 585: 'KEY_EMOJI_PICKER', + 586: 'KEY_DICTATE', + 587: 'KEY_CAMERA_ACCESS_ENABLE', + 588: 'KEY_CAMERA_ACCESS_DISABLE', + 589: 'KEY_CAMERA_ACCESS_TOGGLE', + 590: 'KEY_ACCESSIBILITY', + 591: 'KEY_DO_NOT_DISTURB', + 592: 'KEY_BRIGHTNESS_MIN', + 593: 'KEY_BRIGHTNESS_MAX', + 608: 'KEY_KBDINPUTASSIST_PREV', + 609: 'KEY_KBDINPUTASSIST_NEXT', + 610: 'KEY_KBDINPUTASSIST_PREVGROUP', + 611: 'KEY_KBDINPUTASSIST_NEXTGROUP', + 612: 'KEY_KBDINPUTASSIST_ACCEPT', + 613: 'KEY_KBDINPUTASSIST_CANCEL', + 614: 'KEY_RIGHT_UP', + 615: 'KEY_RIGHT_DOWN', + 616: 'KEY_LEFT_UP', + 617: 'KEY_LEFT_DOWN', + 618: 'KEY_ROOT_MENU', + 619: 'KEY_MEDIA_TOP_MENU', + 620: 'KEY_NUMERIC_11', + 621: 'KEY_NUMERIC_12', + 622: 'KEY_AUDIO_DESC', + 623: 'KEY_3D_MODE', + 624: 'KEY_NEXT_FAVORITE', + 625: 'KEY_STOP_RECORD', + 626: 'KEY_PAUSE_RECORD', + 627: 'KEY_VOD', + 628: 'KEY_UNMUTE', + 629: 'KEY_FASTREVERSE', + 630: 'KEY_SLOWREVERSE', + 631: 'KEY_DATA', + 632: 'KEY_ONSCREEN_KEYBOARD', + 633: 'KEY_PRIVACY_SCREEN_TOGGLE', + 634: 'KEY_SELECTIVE_SCREENSHOT', + 635: 'KEY_NEXT_ELEMENT', + 636: 'KEY_PREVIOUS_ELEMENT', + 637: 'KEY_AUTOPILOT_ENGAGE_TOGGLE', + 638: 'KEY_MARK_WAYPOINT', + 639: 'KEY_SOS', + 640: 'KEY_NAV_CHART', + 641: 'KEY_FISHING_CHART', + 642: 'KEY_SINGLE_RANGE_RADAR', + 643: 'KEY_DUAL_RANGE_RADAR', + 644: 'KEY_RADAR_OVERLAY', + 645: 'KEY_TRADITIONAL_SONAR', + 646: 'KEY_CLEARVU_SONAR', + 647: 'KEY_SIDEVU_SONAR', + 648: 'KEY_NAV_INFO', + 649: 'KEY_BRIGHTNESS_MENU', + 656: 'KEY_MACRO1', + 657: 'KEY_MACRO2', + 658: 'KEY_MACRO3', + 659: 'KEY_MACRO4', + 660: 'KEY_MACRO5', + 661: 'KEY_MACRO6', + 662: 'KEY_MACRO7', + 663: 'KEY_MACRO8', + 664: 'KEY_MACRO9', + 665: 'KEY_MACRO10', + 666: 'KEY_MACRO11', + 667: 'KEY_MACRO12', + 668: 'KEY_MACRO13', + 669: 'KEY_MACRO14', + 670: 'KEY_MACRO15', + 671: 'KEY_MACRO16', + 672: 'KEY_MACRO17', + 673: 'KEY_MACRO18', + 674: 'KEY_MACRO19', + 675: 'KEY_MACRO20', + 676: 'KEY_MACRO21', + 677: 'KEY_MACRO22', + 678: 'KEY_MACRO23', + 679: 'KEY_MACRO24', + 680: 'KEY_MACRO25', + 681: 'KEY_MACRO26', + 682: 'KEY_MACRO27', + 683: 'KEY_MACRO28', + 684: 'KEY_MACRO29', + 685: 'KEY_MACRO30', + 688: 'KEY_MACRO_RECORD_START', + 689: 'KEY_MACRO_RECORD_STOP', + 690: 'KEY_MACRO_PRESET_CYCLE', + 691: 'KEY_MACRO_PRESET1', + 692: 'KEY_MACRO_PRESET2', + 693: 'KEY_MACRO_PRESET3', + 696: 'KEY_KBD_LCD_MENU1', + 697: 'KEY_KBD_LCD_MENU2', + 698: 'KEY_KBD_LCD_MENU3', + 699: 'KEY_KBD_LCD_MENU4', + 700: 'KEY_KBD_LCD_MENU5', + 704: ('BTN_TRIGGER_HAPPY', 'BTN_TRIGGER_HAPPY1'), + 705: 'BTN_TRIGGER_HAPPY2', + 706: 'BTN_TRIGGER_HAPPY3', + 707: 'BTN_TRIGGER_HAPPY4', + 708: 'BTN_TRIGGER_HAPPY5', + 709: 'BTN_TRIGGER_HAPPY6', + 710: 'BTN_TRIGGER_HAPPY7', + 711: 'BTN_TRIGGER_HAPPY8', + 712: 'BTN_TRIGGER_HAPPY9', + 713: 'BTN_TRIGGER_HAPPY10', + 714: 'BTN_TRIGGER_HAPPY11', + 715: 'BTN_TRIGGER_HAPPY12', + 716: 'BTN_TRIGGER_HAPPY13', + 717: 'BTN_TRIGGER_HAPPY14', + 718: 'BTN_TRIGGER_HAPPY15', + 719: 'BTN_TRIGGER_HAPPY16', + 720: 'BTN_TRIGGER_HAPPY17', + 721: 'BTN_TRIGGER_HAPPY18', + 722: 'BTN_TRIGGER_HAPPY19', + 723: 'BTN_TRIGGER_HAPPY20', + 724: 'BTN_TRIGGER_HAPPY21', + 725: 'BTN_TRIGGER_HAPPY22', + 726: 'BTN_TRIGGER_HAPPY23', + 727: 'BTN_TRIGGER_HAPPY24', + 728: 'BTN_TRIGGER_HAPPY25', + 729: 'BTN_TRIGGER_HAPPY26', + 730: 'BTN_TRIGGER_HAPPY27', + 731: 'BTN_TRIGGER_HAPPY28', + 732: 'BTN_TRIGGER_HAPPY29', + 733: 'BTN_TRIGGER_HAPPY30', + 734: 'BTN_TRIGGER_HAPPY31', + 735: 'BTN_TRIGGER_HAPPY32', + 736: 'BTN_TRIGGER_HAPPY33', + 737: 'BTN_TRIGGER_HAPPY34', + 738: 'BTN_TRIGGER_HAPPY35', + 739: 'BTN_TRIGGER_HAPPY36', + 740: 'BTN_TRIGGER_HAPPY37', + 741: 'BTN_TRIGGER_HAPPY38', + 742: 'BTN_TRIGGER_HAPPY39', + 743: 'BTN_TRIGGER_HAPPY40'}, + 2: { 0: 'REL_X', + 1: 'REL_Y', + 2: 'REL_Z', + 3: 'REL_RX', + 4: 'REL_RY', + 5: 'REL_RZ', + 6: 'REL_HWHEEL', + 7: 'REL_DIAL', + 8: 'REL_WHEEL', + 9: 'REL_MISC', + 10: 'REL_RESERVED', + 11: 'REL_WHEEL_HI_RES', + 12: 'REL_HWHEEL_HI_RES', + 15: 'REL_MAX', + 16: 'REL_CNT'}, + 3: { 0: 'ABS_X', + 1: 'ABS_Y', + 2: 'ABS_Z', + 3: 'ABS_RX', + 4: 'ABS_RY', + 5: 'ABS_RZ', + 6: 'ABS_THROTTLE', + 7: 'ABS_RUDDER', + 8: 'ABS_WHEEL', + 9: 'ABS_GAS', + 10: 'ABS_BRAKE', + 16: 'ABS_HAT0X', + 17: 'ABS_HAT0Y', + 18: 'ABS_HAT1X', + 19: 'ABS_HAT1Y', + 20: 'ABS_HAT2X', + 21: 'ABS_HAT2Y', + 22: 'ABS_HAT3X', + 23: 'ABS_HAT3Y', + 24: 'ABS_PRESSURE', + 25: 'ABS_DISTANCE', + 26: 'ABS_TILT_X', + 27: 'ABS_TILT_Y', + 28: 'ABS_TOOL_WIDTH', + 32: 'ABS_VOLUME', + 33: 'ABS_PROFILE', + 40: 'ABS_MISC', + 46: 'ABS_RESERVED', + 47: 'ABS_MT_SLOT', + 48: 'ABS_MT_TOUCH_MAJOR', + 49: 'ABS_MT_TOUCH_MINOR', + 50: 'ABS_MT_WIDTH_MAJOR', + 51: 'ABS_MT_WIDTH_MINOR', + 52: 'ABS_MT_ORIENTATION', + 53: 'ABS_MT_POSITION_X', + 54: 'ABS_MT_POSITION_Y', + 55: 'ABS_MT_TOOL_TYPE', + 56: 'ABS_MT_BLOB_ID', + 57: 'ABS_MT_TRACKING_ID', + 58: 'ABS_MT_PRESSURE', + 59: 'ABS_MT_DISTANCE', + 60: 'ABS_MT_TOOL_X', + 61: 'ABS_MT_TOOL_Y', + 63: 'ABS_MAX', + 64: 'ABS_CNT'}, + 4: { 0: 'MSC_SERIAL', + 1: 'MSC_PULSELED', + 2: 'MSC_GESTURE', + 3: 'MSC_RAW', + 4: 'MSC_SCAN', + 5: 'MSC_TIMESTAMP', + 7: 'MSC_MAX', + 8: 'MSC_CNT'}, + 5: { 0: 'SW_LID', + 1: 'SW_TABLET_MODE', + 2: 'SW_HEADPHONE_INSERT', + 3: ('SW_RADIO', 'SW_RFKILL_ALL'), + 4: 'SW_MICROPHONE_INSERT', + 5: 'SW_DOCK', + 6: 'SW_LINEOUT_INSERT', + 7: 'SW_JACK_PHYSICAL_INSERT', + 8: 'SW_VIDEOOUT_INSERT', + 9: 'SW_CAMERA_LENS_COVER', + 10: 'SW_KEYPAD_SLIDE', + 11: 'SW_FRONT_PROXIMITY', + 12: 'SW_ROTATE_LOCK', + 13: 'SW_LINEIN_INSERT', + 14: 'SW_MUTE_DEVICE', + 15: 'SW_PEN_INSERTED', + 16: ('SW_MACHINE_COVER', 'SW_MAX'), + 17: 'SW_CNT'}, + 17: { 0: 'LED_NUML', + 1: 'LED_CAPSL', + 2: 'LED_SCROLLL', + 3: 'LED_COMPOSE', + 4: 'LED_KANA', + 5: 'LED_SLEEP', + 6: 'LED_SUSPEND', + 7: 'LED_MUTE', + 8: 'LED_MISC', + 9: 'LED_MAIL', + 10: 'LED_CHARGING', + 15: 'LED_MAX', + 16: 'LED_CNT'}, + 18: {0: 'SND_CLICK', 1: 'SND_BELL', 2: 'SND_TONE', 7: 'SND_MAX', 8: 'SND_CNT'}, + 20: {0: 'REP_DELAY', 1: ('REP_MAX', 'REP_PERIOD'), 2: 'REP_CNT'}, + 21: { 80: ('FF_EFFECT_MIN', 'FF_RUMBLE'), + 81: 'FF_PERIODIC', + 82: 'FF_CONSTANT', + 83: 'FF_SPRING', + 84: 'FF_FRICTION', + 85: 'FF_DAMPER', + 86: 'FF_INERTIA', + 87: ('FF_EFFECT_MAX', 'FF_RAMP'), + 88: ('FF_SQUARE', 'FF_WAVEFORM_MIN'), + 89: 'FF_TRIANGLE', + 90: 'FF_SINE', + 91: 'FF_SAW_UP', + 92: 'FF_SAW_DOWN', + 93: ('FF_CUSTOM', 'FF_WAVEFORM_MAX'), + 96: ('FF_GAIN', 'FF_MAX_EFFECTS'), + 97: 'FF_AUTOCENTER', + 127: 'FF_MAX', + 128: 'FF_CNT'}, + 23: {0: 'FF_STATUS_STOPPED', 1: ('FF_STATUS_MAX', 'FF_STATUS_PLAYING')}} + +#: Keys are a combination of all BTN and KEY codes. +keys: Dict[int, Union[str, Tuple[str]]] = { 0: 'KEY_RESERVED', + 1: 'KEY_ESC', + 2: 'KEY_1', + 3: 'KEY_2', + 4: 'KEY_3', + 5: 'KEY_4', + 6: 'KEY_5', + 7: 'KEY_6', + 8: 'KEY_7', + 9: 'KEY_8', + 10: 'KEY_9', + 11: 'KEY_0', + 12: 'KEY_MINUS', + 13: 'KEY_EQUAL', + 14: 'KEY_BACKSPACE', + 15: 'KEY_TAB', + 16: 'KEY_Q', + 17: 'KEY_W', + 18: 'KEY_E', + 19: 'KEY_R', + 20: 'KEY_T', + 21: 'KEY_Y', + 22: 'KEY_U', + 23: 'KEY_I', + 24: 'KEY_O', + 25: 'KEY_P', + 26: 'KEY_LEFTBRACE', + 27: 'KEY_RIGHTBRACE', + 28: 'KEY_ENTER', + 29: 'KEY_LEFTCTRL', + 30: 'KEY_A', + 31: 'KEY_S', + 32: 'KEY_D', + 33: 'KEY_F', + 34: 'KEY_G', + 35: 'KEY_H', + 36: 'KEY_J', + 37: 'KEY_K', + 38: 'KEY_L', + 39: 'KEY_SEMICOLON', + 40: 'KEY_APOSTROPHE', + 41: 'KEY_GRAVE', + 42: 'KEY_LEFTSHIFT', + 43: 'KEY_BACKSLASH', + 44: 'KEY_Z', + 45: 'KEY_X', + 46: 'KEY_C', + 47: 'KEY_V', + 48: 'KEY_B', + 49: 'KEY_N', + 50: 'KEY_M', + 51: 'KEY_COMMA', + 52: 'KEY_DOT', + 53: 'KEY_SLASH', + 54: 'KEY_RIGHTSHIFT', + 55: 'KEY_KPASTERISK', + 56: 'KEY_LEFTALT', + 57: 'KEY_SPACE', + 58: 'KEY_CAPSLOCK', + 59: 'KEY_F1', + 60: 'KEY_F2', + 61: 'KEY_F3', + 62: 'KEY_F4', + 63: 'KEY_F5', + 64: 'KEY_F6', + 65: 'KEY_F7', + 66: 'KEY_F8', + 67: 'KEY_F9', + 68: 'KEY_F10', + 69: 'KEY_NUMLOCK', + 70: 'KEY_SCROLLLOCK', + 71: 'KEY_KP7', + 72: 'KEY_KP8', + 73: 'KEY_KP9', + 74: 'KEY_KPMINUS', + 75: 'KEY_KP4', + 76: 'KEY_KP5', + 77: 'KEY_KP6', + 78: 'KEY_KPPLUS', + 79: 'KEY_KP1', + 80: 'KEY_KP2', + 81: 'KEY_KP3', + 82: 'KEY_KP0', + 83: 'KEY_KPDOT', + 85: 'KEY_ZENKAKUHANKAKU', + 86: 'KEY_102ND', + 87: 'KEY_F11', + 88: 'KEY_F12', + 89: 'KEY_RO', + 90: 'KEY_KATAKANA', + 91: 'KEY_HIRAGANA', + 92: 'KEY_HENKAN', + 93: 'KEY_KATAKANAHIRAGANA', + 94: 'KEY_MUHENKAN', + 95: 'KEY_KPJPCOMMA', + 96: 'KEY_KPENTER', + 97: 'KEY_RIGHTCTRL', + 98: 'KEY_KPSLASH', + 99: 'KEY_SYSRQ', + 100: 'KEY_RIGHTALT', + 101: 'KEY_LINEFEED', + 102: 'KEY_HOME', + 103: 'KEY_UP', + 104: 'KEY_PAGEUP', + 105: 'KEY_LEFT', + 106: 'KEY_RIGHT', + 107: 'KEY_END', + 108: 'KEY_DOWN', + 109: 'KEY_PAGEDOWN', + 110: 'KEY_INSERT', + 111: 'KEY_DELETE', + 112: 'KEY_MACRO', + 113: ('KEY_MIN_INTERESTING', 'KEY_MUTE'), + 114: 'KEY_VOLUMEDOWN', + 115: 'KEY_VOLUMEUP', + 116: 'KEY_POWER', + 117: 'KEY_KPEQUAL', + 118: 'KEY_KPPLUSMINUS', + 119: 'KEY_PAUSE', + 120: 'KEY_SCALE', + 121: 'KEY_KPCOMMA', + 122: ('KEY_HANGEUL', 'KEY_HANGUEL'), + 123: 'KEY_HANJA', + 124: 'KEY_YEN', + 125: 'KEY_LEFTMETA', + 126: 'KEY_RIGHTMETA', + 127: 'KEY_COMPOSE', + 128: 'KEY_STOP', + 129: 'KEY_AGAIN', + 130: 'KEY_PROPS', + 131: 'KEY_UNDO', + 132: 'KEY_FRONT', + 133: 'KEY_COPY', + 134: 'KEY_OPEN', + 135: 'KEY_PASTE', + 136: 'KEY_FIND', + 137: 'KEY_CUT', + 138: 'KEY_HELP', + 139: 'KEY_MENU', + 140: 'KEY_CALC', + 141: 'KEY_SETUP', + 142: 'KEY_SLEEP', + 143: 'KEY_WAKEUP', + 144: 'KEY_FILE', + 145: 'KEY_SENDFILE', + 146: 'KEY_DELETEFILE', + 147: 'KEY_XFER', + 148: 'KEY_PROG1', + 149: 'KEY_PROG2', + 150: 'KEY_WWW', + 151: 'KEY_MSDOS', + 152: ('KEY_COFFEE', 'KEY_SCREENLOCK'), + 153: ('KEY_DIRECTION', 'KEY_ROTATE_DISPLAY'), + 154: 'KEY_CYCLEWINDOWS', + 155: 'KEY_MAIL', + 156: 'KEY_BOOKMARKS', + 157: 'KEY_COMPUTER', + 158: 'KEY_BACK', + 159: 'KEY_FORWARD', + 160: 'KEY_CLOSECD', + 161: 'KEY_EJECTCD', + 162: 'KEY_EJECTCLOSECD', + 163: 'KEY_NEXTSONG', + 164: 'KEY_PLAYPAUSE', + 165: 'KEY_PREVIOUSSONG', + 166: 'KEY_STOPCD', + 167: 'KEY_RECORD', + 168: 'KEY_REWIND', + 169: 'KEY_PHONE', + 170: 'KEY_ISO', + 171: 'KEY_CONFIG', + 172: 'KEY_HOMEPAGE', + 173: 'KEY_REFRESH', + 174: 'KEY_EXIT', + 175: 'KEY_MOVE', + 176: 'KEY_EDIT', + 177: 'KEY_SCROLLUP', + 178: 'KEY_SCROLLDOWN', + 179: 'KEY_KPLEFTPAREN', + 180: 'KEY_KPRIGHTPAREN', + 181: 'KEY_NEW', + 182: 'KEY_REDO', + 183: 'KEY_F13', + 184: 'KEY_F14', + 185: 'KEY_F15', + 186: 'KEY_F16', + 187: 'KEY_F17', + 188: 'KEY_F18', + 189: 'KEY_F19', + 190: 'KEY_F20', + 191: 'KEY_F21', + 192: 'KEY_F22', + 193: 'KEY_F23', + 194: 'KEY_F24', + 200: 'KEY_PLAYCD', + 201: 'KEY_PAUSECD', + 202: 'KEY_PROG3', + 203: 'KEY_PROG4', + 204: ('KEY_ALL_APPLICATIONS', 'KEY_DASHBOARD'), + 205: 'KEY_SUSPEND', + 206: 'KEY_CLOSE', + 207: 'KEY_PLAY', + 208: 'KEY_FASTFORWARD', + 209: 'KEY_BASSBOOST', + 210: 'KEY_PRINT', + 211: 'KEY_HP', + 212: 'KEY_CAMERA', + 213: 'KEY_SOUND', + 214: 'KEY_QUESTION', + 215: 'KEY_EMAIL', + 216: 'KEY_CHAT', + 217: 'KEY_SEARCH', + 218: 'KEY_CONNECT', + 219: 'KEY_FINANCE', + 220: 'KEY_SPORT', + 221: 'KEY_SHOP', + 222: 'KEY_ALTERASE', + 223: 'KEY_CANCEL', + 224: 'KEY_BRIGHTNESSDOWN', + 225: 'KEY_BRIGHTNESSUP', + 226: 'KEY_MEDIA', + 227: 'KEY_SWITCHVIDEOMODE', + 228: 'KEY_KBDILLUMTOGGLE', + 229: 'KEY_KBDILLUMDOWN', + 230: 'KEY_KBDILLUMUP', + 231: 'KEY_SEND', + 232: 'KEY_REPLY', + 233: 'KEY_FORWARDMAIL', + 234: 'KEY_SAVE', + 235: 'KEY_DOCUMENTS', + 236: 'KEY_BATTERY', + 237: 'KEY_BLUETOOTH', + 238: 'KEY_WLAN', + 239: 'KEY_UWB', + 240: 'KEY_UNKNOWN', + 241: 'KEY_VIDEO_NEXT', + 242: 'KEY_VIDEO_PREV', + 243: 'KEY_BRIGHTNESS_CYCLE', + 244: ('KEY_BRIGHTNESS_AUTO', 'KEY_BRIGHTNESS_ZERO'), + 245: 'KEY_DISPLAY_OFF', + 246: ('KEY_WIMAX', 'KEY_WWAN'), + 247: 'KEY_RFKILL', + 248: 'KEY_MICMUTE', + 256: ('BTN_0', 'BTN_MISC'), + 257: 'BTN_1', + 258: 'BTN_2', + 259: 'BTN_3', + 260: 'BTN_4', + 261: 'BTN_5', + 262: 'BTN_6', + 263: 'BTN_7', + 264: 'BTN_8', + 265: 'BTN_9', + 272: ('BTN_LEFT', 'BTN_MOUSE'), + 273: 'BTN_RIGHT', + 274: 'BTN_MIDDLE', + 275: 'BTN_SIDE', + 276: 'BTN_EXTRA', + 277: 'BTN_FORWARD', + 278: 'BTN_BACK', + 279: 'BTN_TASK', + 288: ('BTN_JOYSTICK', 'BTN_TRIGGER'), + 289: 'BTN_THUMB', + 290: 'BTN_THUMB2', + 291: 'BTN_TOP', + 292: 'BTN_TOP2', + 293: 'BTN_PINKIE', + 294: 'BTN_BASE', + 295: 'BTN_BASE2', + 296: 'BTN_BASE3', + 297: 'BTN_BASE4', + 298: 'BTN_BASE5', + 299: 'BTN_BASE6', + 303: 'BTN_DEAD', + 304: ('BTN_A', 'BTN_GAMEPAD', 'BTN_SOUTH'), + 305: ('BTN_B', 'BTN_EAST'), + 306: 'BTN_C', + 307: ('BTN_NORTH', 'BTN_X'), + 308: ('BTN_WEST', 'BTN_Y'), + 309: 'BTN_Z', + 310: 'BTN_TL', + 311: 'BTN_TR', + 312: 'BTN_TL2', + 313: 'BTN_TR2', + 314: 'BTN_SELECT', + 315: 'BTN_START', + 316: 'BTN_MODE', + 317: 'BTN_THUMBL', + 318: 'BTN_THUMBR', + 320: ('BTN_DIGI', 'BTN_TOOL_PEN'), + 321: 'BTN_TOOL_RUBBER', + 322: 'BTN_TOOL_BRUSH', + 323: 'BTN_TOOL_PENCIL', + 324: 'BTN_TOOL_AIRBRUSH', + 325: 'BTN_TOOL_FINGER', + 326: 'BTN_TOOL_MOUSE', + 327: 'BTN_TOOL_LENS', + 328: 'BTN_TOOL_QUINTTAP', + 329: 'BTN_STYLUS3', + 330: 'BTN_TOUCH', + 331: 'BTN_STYLUS', + 332: 'BTN_STYLUS2', + 333: 'BTN_TOOL_DOUBLETAP', + 334: 'BTN_TOOL_TRIPLETAP', + 335: 'BTN_TOOL_QUADTAP', + 336: ('BTN_GEAR_DOWN', 'BTN_WHEEL'), + 337: 'BTN_GEAR_UP', + 352: 'KEY_OK', + 353: 'KEY_SELECT', + 354: 'KEY_GOTO', + 355: 'KEY_CLEAR', + 356: 'KEY_POWER2', + 357: 'KEY_OPTION', + 358: 'KEY_INFO', + 359: 'KEY_TIME', + 360: 'KEY_VENDOR', + 361: 'KEY_ARCHIVE', + 362: 'KEY_PROGRAM', + 363: 'KEY_CHANNEL', + 364: 'KEY_FAVORITES', + 365: 'KEY_EPG', + 366: 'KEY_PVR', + 367: 'KEY_MHP', + 368: 'KEY_LANGUAGE', + 369: 'KEY_TITLE', + 370: 'KEY_SUBTITLE', + 371: 'KEY_ANGLE', + 372: ('KEY_FULL_SCREEN', 'KEY_ZOOM'), + 373: 'KEY_MODE', + 374: 'KEY_KEYBOARD', + 375: ('KEY_ASPECT_RATIO', 'KEY_SCREEN'), + 376: 'KEY_PC', + 377: 'KEY_TV', + 378: 'KEY_TV2', + 379: 'KEY_VCR', + 380: 'KEY_VCR2', + 381: 'KEY_SAT', + 382: 'KEY_SAT2', + 383: 'KEY_CD', + 384: 'KEY_TAPE', + 385: 'KEY_RADIO', + 386: 'KEY_TUNER', + 387: 'KEY_PLAYER', + 388: 'KEY_TEXT', + 389: 'KEY_DVD', + 390: 'KEY_AUX', + 391: 'KEY_MP3', + 392: 'KEY_AUDIO', + 393: 'KEY_VIDEO', + 394: 'KEY_DIRECTORY', + 395: 'KEY_LIST', + 396: 'KEY_MEMO', + 397: 'KEY_CALENDAR', + 398: 'KEY_RED', + 399: 'KEY_GREEN', + 400: 'KEY_YELLOW', + 401: 'KEY_BLUE', + 402: 'KEY_CHANNELUP', + 403: 'KEY_CHANNELDOWN', + 404: 'KEY_FIRST', + 405: 'KEY_LAST', + 406: 'KEY_AB', + 407: 'KEY_NEXT', + 408: 'KEY_RESTART', + 409: 'KEY_SLOW', + 410: 'KEY_SHUFFLE', + 411: 'KEY_BREAK', + 412: 'KEY_PREVIOUS', + 413: 'KEY_DIGITS', + 414: 'KEY_TEEN', + 415: 'KEY_TWEN', + 416: 'KEY_VIDEOPHONE', + 417: 'KEY_GAMES', + 418: 'KEY_ZOOMIN', + 419: 'KEY_ZOOMOUT', + 420: 'KEY_ZOOMRESET', + 421: 'KEY_WORDPROCESSOR', + 422: 'KEY_EDITOR', + 423: 'KEY_SPREADSHEET', + 424: 'KEY_GRAPHICSEDITOR', + 425: 'KEY_PRESENTATION', + 426: 'KEY_DATABASE', + 427: 'KEY_NEWS', + 428: 'KEY_VOICEMAIL', + 429: 'KEY_ADDRESSBOOK', + 430: 'KEY_MESSENGER', + 431: ('KEY_BRIGHTNESS_TOGGLE', 'KEY_DISPLAYTOGGLE'), + 432: 'KEY_SPELLCHECK', + 433: 'KEY_LOGOFF', + 434: 'KEY_DOLLAR', + 435: 'KEY_EURO', + 436: 'KEY_FRAMEBACK', + 437: 'KEY_FRAMEFORWARD', + 438: 'KEY_CONTEXT_MENU', + 439: 'KEY_MEDIA_REPEAT', + 440: 'KEY_10CHANNELSUP', + 441: 'KEY_10CHANNELSDOWN', + 442: 'KEY_IMAGES', + 444: 'KEY_NOTIFICATION_CENTER', + 445: 'KEY_PICKUP_PHONE', + 446: 'KEY_HANGUP_PHONE', + 448: 'KEY_DEL_EOL', + 449: 'KEY_DEL_EOS', + 450: 'KEY_INS_LINE', + 451: 'KEY_DEL_LINE', + 464: 'KEY_FN', + 465: 'KEY_FN_ESC', + 466: 'KEY_FN_F1', + 467: 'KEY_FN_F2', + 468: 'KEY_FN_F3', + 469: 'KEY_FN_F4', + 470: 'KEY_FN_F5', + 471: 'KEY_FN_F6', + 472: 'KEY_FN_F7', + 473: 'KEY_FN_F8', + 474: 'KEY_FN_F9', + 475: 'KEY_FN_F10', + 476: 'KEY_FN_F11', + 477: 'KEY_FN_F12', + 478: 'KEY_FN_1', + 479: 'KEY_FN_2', + 480: 'KEY_FN_D', + 481: 'KEY_FN_E', + 482: 'KEY_FN_F', + 483: 'KEY_FN_S', + 484: 'KEY_FN_B', + 485: 'KEY_FN_RIGHT_SHIFT', + 497: 'KEY_BRL_DOT1', + 498: 'KEY_BRL_DOT2', + 499: 'KEY_BRL_DOT3', + 500: 'KEY_BRL_DOT4', + 501: 'KEY_BRL_DOT5', + 502: 'KEY_BRL_DOT6', + 503: 'KEY_BRL_DOT7', + 504: 'KEY_BRL_DOT8', + 505: 'KEY_BRL_DOT9', + 506: 'KEY_BRL_DOT10', + 512: 'KEY_NUMERIC_0', + 513: 'KEY_NUMERIC_1', + 514: 'KEY_NUMERIC_2', + 515: 'KEY_NUMERIC_3', + 516: 'KEY_NUMERIC_4', + 517: 'KEY_NUMERIC_5', + 518: 'KEY_NUMERIC_6', + 519: 'KEY_NUMERIC_7', + 520: 'KEY_NUMERIC_8', + 521: 'KEY_NUMERIC_9', + 522: 'KEY_NUMERIC_STAR', + 523: 'KEY_NUMERIC_POUND', + 524: 'KEY_NUMERIC_A', + 525: 'KEY_NUMERIC_B', + 526: 'KEY_NUMERIC_C', + 527: 'KEY_NUMERIC_D', + 528: 'KEY_CAMERA_FOCUS', + 529: 'KEY_WPS_BUTTON', + 530: 'KEY_TOUCHPAD_TOGGLE', + 531: 'KEY_TOUCHPAD_ON', + 532: 'KEY_TOUCHPAD_OFF', + 533: 'KEY_CAMERA_ZOOMIN', + 534: 'KEY_CAMERA_ZOOMOUT', + 535: 'KEY_CAMERA_UP', + 536: 'KEY_CAMERA_DOWN', + 537: 'KEY_CAMERA_LEFT', + 538: 'KEY_CAMERA_RIGHT', + 539: 'KEY_ATTENDANT_ON', + 540: 'KEY_ATTENDANT_OFF', + 541: 'KEY_ATTENDANT_TOGGLE', + 542: 'KEY_LIGHTS_TOGGLE', + 544: 'BTN_DPAD_UP', + 545: 'BTN_DPAD_DOWN', + 546: 'BTN_DPAD_LEFT', + 547: 'BTN_DPAD_RIGHT', + 560: 'KEY_ALS_TOGGLE', + 561: 'KEY_ROTATE_LOCK_TOGGLE', + 562: 'KEY_REFRESH_RATE_TOGGLE', + 576: 'KEY_BUTTONCONFIG', + 577: 'KEY_TASKMANAGER', + 578: 'KEY_JOURNAL', + 579: 'KEY_CONTROLPANEL', + 580: 'KEY_APPSELECT', + 581: 'KEY_SCREENSAVER', + 582: 'KEY_VOICECOMMAND', + 583: 'KEY_ASSISTANT', + 584: 'KEY_KBD_LAYOUT_NEXT', + 585: 'KEY_EMOJI_PICKER', + 586: 'KEY_DICTATE', + 587: 'KEY_CAMERA_ACCESS_ENABLE', + 588: 'KEY_CAMERA_ACCESS_DISABLE', + 589: 'KEY_CAMERA_ACCESS_TOGGLE', + 590: 'KEY_ACCESSIBILITY', + 591: 'KEY_DO_NOT_DISTURB', + 592: 'KEY_BRIGHTNESS_MIN', + 593: 'KEY_BRIGHTNESS_MAX', + 608: 'KEY_KBDINPUTASSIST_PREV', + 609: 'KEY_KBDINPUTASSIST_NEXT', + 610: 'KEY_KBDINPUTASSIST_PREVGROUP', + 611: 'KEY_KBDINPUTASSIST_NEXTGROUP', + 612: 'KEY_KBDINPUTASSIST_ACCEPT', + 613: 'KEY_KBDINPUTASSIST_CANCEL', + 614: 'KEY_RIGHT_UP', + 615: 'KEY_RIGHT_DOWN', + 616: 'KEY_LEFT_UP', + 617: 'KEY_LEFT_DOWN', + 618: 'KEY_ROOT_MENU', + 619: 'KEY_MEDIA_TOP_MENU', + 620: 'KEY_NUMERIC_11', + 621: 'KEY_NUMERIC_12', + 622: 'KEY_AUDIO_DESC', + 623: 'KEY_3D_MODE', + 624: 'KEY_NEXT_FAVORITE', + 625: 'KEY_STOP_RECORD', + 626: 'KEY_PAUSE_RECORD', + 627: 'KEY_VOD', + 628: 'KEY_UNMUTE', + 629: 'KEY_FASTREVERSE', + 630: 'KEY_SLOWREVERSE', + 631: 'KEY_DATA', + 632: 'KEY_ONSCREEN_KEYBOARD', + 633: 'KEY_PRIVACY_SCREEN_TOGGLE', + 634: 'KEY_SELECTIVE_SCREENSHOT', + 635: 'KEY_NEXT_ELEMENT', + 636: 'KEY_PREVIOUS_ELEMENT', + 637: 'KEY_AUTOPILOT_ENGAGE_TOGGLE', + 638: 'KEY_MARK_WAYPOINT', + 639: 'KEY_SOS', + 640: 'KEY_NAV_CHART', + 641: 'KEY_FISHING_CHART', + 642: 'KEY_SINGLE_RANGE_RADAR', + 643: 'KEY_DUAL_RANGE_RADAR', + 644: 'KEY_RADAR_OVERLAY', + 645: 'KEY_TRADITIONAL_SONAR', + 646: 'KEY_CLEARVU_SONAR', + 647: 'KEY_SIDEVU_SONAR', + 648: 'KEY_NAV_INFO', + 649: 'KEY_BRIGHTNESS_MENU', + 656: 'KEY_MACRO1', + 657: 'KEY_MACRO2', + 658: 'KEY_MACRO3', + 659: 'KEY_MACRO4', + 660: 'KEY_MACRO5', + 661: 'KEY_MACRO6', + 662: 'KEY_MACRO7', + 663: 'KEY_MACRO8', + 664: 'KEY_MACRO9', + 665: 'KEY_MACRO10', + 666: 'KEY_MACRO11', + 667: 'KEY_MACRO12', + 668: 'KEY_MACRO13', + 669: 'KEY_MACRO14', + 670: 'KEY_MACRO15', + 671: 'KEY_MACRO16', + 672: 'KEY_MACRO17', + 673: 'KEY_MACRO18', + 674: 'KEY_MACRO19', + 675: 'KEY_MACRO20', + 676: 'KEY_MACRO21', + 677: 'KEY_MACRO22', + 678: 'KEY_MACRO23', + 679: 'KEY_MACRO24', + 680: 'KEY_MACRO25', + 681: 'KEY_MACRO26', + 682: 'KEY_MACRO27', + 683: 'KEY_MACRO28', + 684: 'KEY_MACRO29', + 685: 'KEY_MACRO30', + 688: 'KEY_MACRO_RECORD_START', + 689: 'KEY_MACRO_RECORD_STOP', + 690: 'KEY_MACRO_PRESET_CYCLE', + 691: 'KEY_MACRO_PRESET1', + 692: 'KEY_MACRO_PRESET2', + 693: 'KEY_MACRO_PRESET3', + 696: 'KEY_KBD_LCD_MENU1', + 697: 'KEY_KBD_LCD_MENU2', + 698: 'KEY_KBD_LCD_MENU3', + 699: 'KEY_KBD_LCD_MENU4', + 700: 'KEY_KBD_LCD_MENU5', + 704: ('BTN_TRIGGER_HAPPY', 'BTN_TRIGGER_HAPPY1'), + 705: 'BTN_TRIGGER_HAPPY2', + 706: 'BTN_TRIGGER_HAPPY3', + 707: 'BTN_TRIGGER_HAPPY4', + 708: 'BTN_TRIGGER_HAPPY5', + 709: 'BTN_TRIGGER_HAPPY6', + 710: 'BTN_TRIGGER_HAPPY7', + 711: 'BTN_TRIGGER_HAPPY8', + 712: 'BTN_TRIGGER_HAPPY9', + 713: 'BTN_TRIGGER_HAPPY10', + 714: 'BTN_TRIGGER_HAPPY11', + 715: 'BTN_TRIGGER_HAPPY12', + 716: 'BTN_TRIGGER_HAPPY13', + 717: 'BTN_TRIGGER_HAPPY14', + 718: 'BTN_TRIGGER_HAPPY15', + 719: 'BTN_TRIGGER_HAPPY16', + 720: 'BTN_TRIGGER_HAPPY17', + 721: 'BTN_TRIGGER_HAPPY18', + 722: 'BTN_TRIGGER_HAPPY19', + 723: 'BTN_TRIGGER_HAPPY20', + 724: 'BTN_TRIGGER_HAPPY21', + 725: 'BTN_TRIGGER_HAPPY22', + 726: 'BTN_TRIGGER_HAPPY23', + 727: 'BTN_TRIGGER_HAPPY24', + 728: 'BTN_TRIGGER_HAPPY25', + 729: 'BTN_TRIGGER_HAPPY26', + 730: 'BTN_TRIGGER_HAPPY27', + 731: 'BTN_TRIGGER_HAPPY28', + 732: 'BTN_TRIGGER_HAPPY29', + 733: 'BTN_TRIGGER_HAPPY30', + 734: 'BTN_TRIGGER_HAPPY31', + 735: 'BTN_TRIGGER_HAPPY32', + 736: 'BTN_TRIGGER_HAPPY33', + 737: 'BTN_TRIGGER_HAPPY34', + 738: 'BTN_TRIGGER_HAPPY35', + 739: 'BTN_TRIGGER_HAPPY36', + 740: 'BTN_TRIGGER_HAPPY37', + 741: 'BTN_TRIGGER_HAPPY38', + 742: 'BTN_TRIGGER_HAPPY39', + 743: 'BTN_TRIGGER_HAPPY40'} + +KEY: Dict[int, Union[str, Tuple[str]]] = { 0: 'KEY_RESERVED', + 1: 'KEY_ESC', + 2: 'KEY_1', + 3: 'KEY_2', + 4: 'KEY_3', + 5: 'KEY_4', + 6: 'KEY_5', + 7: 'KEY_6', + 8: 'KEY_7', + 9: 'KEY_8', + 10: 'KEY_9', + 11: 'KEY_0', + 12: 'KEY_MINUS', + 13: 'KEY_EQUAL', + 14: 'KEY_BACKSPACE', + 15: 'KEY_TAB', + 16: 'KEY_Q', + 17: 'KEY_W', + 18: 'KEY_E', + 19: 'KEY_R', + 20: 'KEY_T', + 21: 'KEY_Y', + 22: 'KEY_U', + 23: 'KEY_I', + 24: 'KEY_O', + 25: 'KEY_P', + 26: 'KEY_LEFTBRACE', + 27: 'KEY_RIGHTBRACE', + 28: 'KEY_ENTER', + 29: 'KEY_LEFTCTRL', + 30: 'KEY_A', + 31: 'KEY_S', + 32: 'KEY_D', + 33: 'KEY_F', + 34: 'KEY_G', + 35: 'KEY_H', + 36: 'KEY_J', + 37: 'KEY_K', + 38: 'KEY_L', + 39: 'KEY_SEMICOLON', + 40: 'KEY_APOSTROPHE', + 41: 'KEY_GRAVE', + 42: 'KEY_LEFTSHIFT', + 43: 'KEY_BACKSLASH', + 44: 'KEY_Z', + 45: 'KEY_X', + 46: 'KEY_C', + 47: 'KEY_V', + 48: 'KEY_B', + 49: 'KEY_N', + 50: 'KEY_M', + 51: 'KEY_COMMA', + 52: 'KEY_DOT', + 53: 'KEY_SLASH', + 54: 'KEY_RIGHTSHIFT', + 55: 'KEY_KPASTERISK', + 56: 'KEY_LEFTALT', + 57: 'KEY_SPACE', + 58: 'KEY_CAPSLOCK', + 59: 'KEY_F1', + 60: 'KEY_F2', + 61: 'KEY_F3', + 62: 'KEY_F4', + 63: 'KEY_F5', + 64: 'KEY_F6', + 65: 'KEY_F7', + 66: 'KEY_F8', + 67: 'KEY_F9', + 68: 'KEY_F10', + 69: 'KEY_NUMLOCK', + 70: 'KEY_SCROLLLOCK', + 71: 'KEY_KP7', + 72: 'KEY_KP8', + 73: 'KEY_KP9', + 74: 'KEY_KPMINUS', + 75: 'KEY_KP4', + 76: 'KEY_KP5', + 77: 'KEY_KP6', + 78: 'KEY_KPPLUS', + 79: 'KEY_KP1', + 80: 'KEY_KP2', + 81: 'KEY_KP3', + 82: 'KEY_KP0', + 83: 'KEY_KPDOT', + 85: 'KEY_ZENKAKUHANKAKU', + 86: 'KEY_102ND', + 87: 'KEY_F11', + 88: 'KEY_F12', + 89: 'KEY_RO', + 90: 'KEY_KATAKANA', + 91: 'KEY_HIRAGANA', + 92: 'KEY_HENKAN', + 93: 'KEY_KATAKANAHIRAGANA', + 94: 'KEY_MUHENKAN', + 95: 'KEY_KPJPCOMMA', + 96: 'KEY_KPENTER', + 97: 'KEY_RIGHTCTRL', + 98: 'KEY_KPSLASH', + 99: 'KEY_SYSRQ', + 100: 'KEY_RIGHTALT', + 101: 'KEY_LINEFEED', + 102: 'KEY_HOME', + 103: 'KEY_UP', + 104: 'KEY_PAGEUP', + 105: 'KEY_LEFT', + 106: 'KEY_RIGHT', + 107: 'KEY_END', + 108: 'KEY_DOWN', + 109: 'KEY_PAGEDOWN', + 110: 'KEY_INSERT', + 111: 'KEY_DELETE', + 112: 'KEY_MACRO', + 113: ('KEY_MIN_INTERESTING', 'KEY_MUTE'), + 114: 'KEY_VOLUMEDOWN', + 115: 'KEY_VOLUMEUP', + 116: 'KEY_POWER', + 117: 'KEY_KPEQUAL', + 118: 'KEY_KPPLUSMINUS', + 119: 'KEY_PAUSE', + 120: 'KEY_SCALE', + 121: 'KEY_KPCOMMA', + 122: ('KEY_HANGEUL', 'KEY_HANGUEL'), + 123: 'KEY_HANJA', + 124: 'KEY_YEN', + 125: 'KEY_LEFTMETA', + 126: 'KEY_RIGHTMETA', + 127: 'KEY_COMPOSE', + 128: 'KEY_STOP', + 129: 'KEY_AGAIN', + 130: 'KEY_PROPS', + 131: 'KEY_UNDO', + 132: 'KEY_FRONT', + 133: 'KEY_COPY', + 134: 'KEY_OPEN', + 135: 'KEY_PASTE', + 136: 'KEY_FIND', + 137: 'KEY_CUT', + 138: 'KEY_HELP', + 139: 'KEY_MENU', + 140: 'KEY_CALC', + 141: 'KEY_SETUP', + 142: 'KEY_SLEEP', + 143: 'KEY_WAKEUP', + 144: 'KEY_FILE', + 145: 'KEY_SENDFILE', + 146: 'KEY_DELETEFILE', + 147: 'KEY_XFER', + 148: 'KEY_PROG1', + 149: 'KEY_PROG2', + 150: 'KEY_WWW', + 151: 'KEY_MSDOS', + 152: ('KEY_COFFEE', 'KEY_SCREENLOCK'), + 153: ('KEY_DIRECTION', 'KEY_ROTATE_DISPLAY'), + 154: 'KEY_CYCLEWINDOWS', + 155: 'KEY_MAIL', + 156: 'KEY_BOOKMARKS', + 157: 'KEY_COMPUTER', + 158: 'KEY_BACK', + 159: 'KEY_FORWARD', + 160: 'KEY_CLOSECD', + 161: 'KEY_EJECTCD', + 162: 'KEY_EJECTCLOSECD', + 163: 'KEY_NEXTSONG', + 164: 'KEY_PLAYPAUSE', + 165: 'KEY_PREVIOUSSONG', + 166: 'KEY_STOPCD', + 167: 'KEY_RECORD', + 168: 'KEY_REWIND', + 169: 'KEY_PHONE', + 170: 'KEY_ISO', + 171: 'KEY_CONFIG', + 172: 'KEY_HOMEPAGE', + 173: 'KEY_REFRESH', + 174: 'KEY_EXIT', + 175: 'KEY_MOVE', + 176: 'KEY_EDIT', + 177: 'KEY_SCROLLUP', + 178: 'KEY_SCROLLDOWN', + 179: 'KEY_KPLEFTPAREN', + 180: 'KEY_KPRIGHTPAREN', + 181: 'KEY_NEW', + 182: 'KEY_REDO', + 183: 'KEY_F13', + 184: 'KEY_F14', + 185: 'KEY_F15', + 186: 'KEY_F16', + 187: 'KEY_F17', + 188: 'KEY_F18', + 189: 'KEY_F19', + 190: 'KEY_F20', + 191: 'KEY_F21', + 192: 'KEY_F22', + 193: 'KEY_F23', + 194: 'KEY_F24', + 200: 'KEY_PLAYCD', + 201: 'KEY_PAUSECD', + 202: 'KEY_PROG3', + 203: 'KEY_PROG4', + 204: ('KEY_ALL_APPLICATIONS', 'KEY_DASHBOARD'), + 205: 'KEY_SUSPEND', + 206: 'KEY_CLOSE', + 207: 'KEY_PLAY', + 208: 'KEY_FASTFORWARD', + 209: 'KEY_BASSBOOST', + 210: 'KEY_PRINT', + 211: 'KEY_HP', + 212: 'KEY_CAMERA', + 213: 'KEY_SOUND', + 214: 'KEY_QUESTION', + 215: 'KEY_EMAIL', + 216: 'KEY_CHAT', + 217: 'KEY_SEARCH', + 218: 'KEY_CONNECT', + 219: 'KEY_FINANCE', + 220: 'KEY_SPORT', + 221: 'KEY_SHOP', + 222: 'KEY_ALTERASE', + 223: 'KEY_CANCEL', + 224: 'KEY_BRIGHTNESSDOWN', + 225: 'KEY_BRIGHTNESSUP', + 226: 'KEY_MEDIA', + 227: 'KEY_SWITCHVIDEOMODE', + 228: 'KEY_KBDILLUMTOGGLE', + 229: 'KEY_KBDILLUMDOWN', + 230: 'KEY_KBDILLUMUP', + 231: 'KEY_SEND', + 232: 'KEY_REPLY', + 233: 'KEY_FORWARDMAIL', + 234: 'KEY_SAVE', + 235: 'KEY_DOCUMENTS', + 236: 'KEY_BATTERY', + 237: 'KEY_BLUETOOTH', + 238: 'KEY_WLAN', + 239: 'KEY_UWB', + 240: 'KEY_UNKNOWN', + 241: 'KEY_VIDEO_NEXT', + 242: 'KEY_VIDEO_PREV', + 243: 'KEY_BRIGHTNESS_CYCLE', + 244: ('KEY_BRIGHTNESS_AUTO', 'KEY_BRIGHTNESS_ZERO'), + 245: 'KEY_DISPLAY_OFF', + 246: ('KEY_WIMAX', 'KEY_WWAN'), + 247: 'KEY_RFKILL', + 248: 'KEY_MICMUTE', + 352: 'KEY_OK', + 353: 'KEY_SELECT', + 354: 'KEY_GOTO', + 355: 'KEY_CLEAR', + 356: 'KEY_POWER2', + 357: 'KEY_OPTION', + 358: 'KEY_INFO', + 359: 'KEY_TIME', + 360: 'KEY_VENDOR', + 361: 'KEY_ARCHIVE', + 362: 'KEY_PROGRAM', + 363: 'KEY_CHANNEL', + 364: 'KEY_FAVORITES', + 365: 'KEY_EPG', + 366: 'KEY_PVR', + 367: 'KEY_MHP', + 368: 'KEY_LANGUAGE', + 369: 'KEY_TITLE', + 370: 'KEY_SUBTITLE', + 371: 'KEY_ANGLE', + 372: ('KEY_FULL_SCREEN', 'KEY_ZOOM'), + 373: 'KEY_MODE', + 374: 'KEY_KEYBOARD', + 375: ('KEY_ASPECT_RATIO', 'KEY_SCREEN'), + 376: 'KEY_PC', + 377: 'KEY_TV', + 378: 'KEY_TV2', + 379: 'KEY_VCR', + 380: 'KEY_VCR2', + 381: 'KEY_SAT', + 382: 'KEY_SAT2', + 383: 'KEY_CD', + 384: 'KEY_TAPE', + 385: 'KEY_RADIO', + 386: 'KEY_TUNER', + 387: 'KEY_PLAYER', + 388: 'KEY_TEXT', + 389: 'KEY_DVD', + 390: 'KEY_AUX', + 391: 'KEY_MP3', + 392: 'KEY_AUDIO', + 393: 'KEY_VIDEO', + 394: 'KEY_DIRECTORY', + 395: 'KEY_LIST', + 396: 'KEY_MEMO', + 397: 'KEY_CALENDAR', + 398: 'KEY_RED', + 399: 'KEY_GREEN', + 400: 'KEY_YELLOW', + 401: 'KEY_BLUE', + 402: 'KEY_CHANNELUP', + 403: 'KEY_CHANNELDOWN', + 404: 'KEY_FIRST', + 405: 'KEY_LAST', + 406: 'KEY_AB', + 407: 'KEY_NEXT', + 408: 'KEY_RESTART', + 409: 'KEY_SLOW', + 410: 'KEY_SHUFFLE', + 411: 'KEY_BREAK', + 412: 'KEY_PREVIOUS', + 413: 'KEY_DIGITS', + 414: 'KEY_TEEN', + 415: 'KEY_TWEN', + 416: 'KEY_VIDEOPHONE', + 417: 'KEY_GAMES', + 418: 'KEY_ZOOMIN', + 419: 'KEY_ZOOMOUT', + 420: 'KEY_ZOOMRESET', + 421: 'KEY_WORDPROCESSOR', + 422: 'KEY_EDITOR', + 423: 'KEY_SPREADSHEET', + 424: 'KEY_GRAPHICSEDITOR', + 425: 'KEY_PRESENTATION', + 426: 'KEY_DATABASE', + 427: 'KEY_NEWS', + 428: 'KEY_VOICEMAIL', + 429: 'KEY_ADDRESSBOOK', + 430: 'KEY_MESSENGER', + 431: ('KEY_BRIGHTNESS_TOGGLE', 'KEY_DISPLAYTOGGLE'), + 432: 'KEY_SPELLCHECK', + 433: 'KEY_LOGOFF', + 434: 'KEY_DOLLAR', + 435: 'KEY_EURO', + 436: 'KEY_FRAMEBACK', + 437: 'KEY_FRAMEFORWARD', + 438: 'KEY_CONTEXT_MENU', + 439: 'KEY_MEDIA_REPEAT', + 440: 'KEY_10CHANNELSUP', + 441: 'KEY_10CHANNELSDOWN', + 442: 'KEY_IMAGES', + 444: 'KEY_NOTIFICATION_CENTER', + 445: 'KEY_PICKUP_PHONE', + 446: 'KEY_HANGUP_PHONE', + 448: 'KEY_DEL_EOL', + 449: 'KEY_DEL_EOS', + 450: 'KEY_INS_LINE', + 451: 'KEY_DEL_LINE', + 464: 'KEY_FN', + 465: 'KEY_FN_ESC', + 466: 'KEY_FN_F1', + 467: 'KEY_FN_F2', + 468: 'KEY_FN_F3', + 469: 'KEY_FN_F4', + 470: 'KEY_FN_F5', + 471: 'KEY_FN_F6', + 472: 'KEY_FN_F7', + 473: 'KEY_FN_F8', + 474: 'KEY_FN_F9', + 475: 'KEY_FN_F10', + 476: 'KEY_FN_F11', + 477: 'KEY_FN_F12', + 478: 'KEY_FN_1', + 479: 'KEY_FN_2', + 480: 'KEY_FN_D', + 481: 'KEY_FN_E', + 482: 'KEY_FN_F', + 483: 'KEY_FN_S', + 484: 'KEY_FN_B', + 485: 'KEY_FN_RIGHT_SHIFT', + 497: 'KEY_BRL_DOT1', + 498: 'KEY_BRL_DOT2', + 499: 'KEY_BRL_DOT3', + 500: 'KEY_BRL_DOT4', + 501: 'KEY_BRL_DOT5', + 502: 'KEY_BRL_DOT6', + 503: 'KEY_BRL_DOT7', + 504: 'KEY_BRL_DOT8', + 505: 'KEY_BRL_DOT9', + 506: 'KEY_BRL_DOT10', + 512: 'KEY_NUMERIC_0', + 513: 'KEY_NUMERIC_1', + 514: 'KEY_NUMERIC_2', + 515: 'KEY_NUMERIC_3', + 516: 'KEY_NUMERIC_4', + 517: 'KEY_NUMERIC_5', + 518: 'KEY_NUMERIC_6', + 519: 'KEY_NUMERIC_7', + 520: 'KEY_NUMERIC_8', + 521: 'KEY_NUMERIC_9', + 522: 'KEY_NUMERIC_STAR', + 523: 'KEY_NUMERIC_POUND', + 524: 'KEY_NUMERIC_A', + 525: 'KEY_NUMERIC_B', + 526: 'KEY_NUMERIC_C', + 527: 'KEY_NUMERIC_D', + 528: 'KEY_CAMERA_FOCUS', + 529: 'KEY_WPS_BUTTON', + 530: 'KEY_TOUCHPAD_TOGGLE', + 531: 'KEY_TOUCHPAD_ON', + 532: 'KEY_TOUCHPAD_OFF', + 533: 'KEY_CAMERA_ZOOMIN', + 534: 'KEY_CAMERA_ZOOMOUT', + 535: 'KEY_CAMERA_UP', + 536: 'KEY_CAMERA_DOWN', + 537: 'KEY_CAMERA_LEFT', + 538: 'KEY_CAMERA_RIGHT', + 539: 'KEY_ATTENDANT_ON', + 540: 'KEY_ATTENDANT_OFF', + 541: 'KEY_ATTENDANT_TOGGLE', + 542: 'KEY_LIGHTS_TOGGLE', + 560: 'KEY_ALS_TOGGLE', + 561: 'KEY_ROTATE_LOCK_TOGGLE', + 562: 'KEY_REFRESH_RATE_TOGGLE', + 576: 'KEY_BUTTONCONFIG', + 577: 'KEY_TASKMANAGER', + 578: 'KEY_JOURNAL', + 579: 'KEY_CONTROLPANEL', + 580: 'KEY_APPSELECT', + 581: 'KEY_SCREENSAVER', + 582: 'KEY_VOICECOMMAND', + 583: 'KEY_ASSISTANT', + 584: 'KEY_KBD_LAYOUT_NEXT', + 585: 'KEY_EMOJI_PICKER', + 586: 'KEY_DICTATE', + 587: 'KEY_CAMERA_ACCESS_ENABLE', + 588: 'KEY_CAMERA_ACCESS_DISABLE', + 589: 'KEY_CAMERA_ACCESS_TOGGLE', + 590: 'KEY_ACCESSIBILITY', + 591: 'KEY_DO_NOT_DISTURB', + 592: 'KEY_BRIGHTNESS_MIN', + 593: 'KEY_BRIGHTNESS_MAX', + 608: 'KEY_KBDINPUTASSIST_PREV', + 609: 'KEY_KBDINPUTASSIST_NEXT', + 610: 'KEY_KBDINPUTASSIST_PREVGROUP', + 611: 'KEY_KBDINPUTASSIST_NEXTGROUP', + 612: 'KEY_KBDINPUTASSIST_ACCEPT', + 613: 'KEY_KBDINPUTASSIST_CANCEL', + 614: 'KEY_RIGHT_UP', + 615: 'KEY_RIGHT_DOWN', + 616: 'KEY_LEFT_UP', + 617: 'KEY_LEFT_DOWN', + 618: 'KEY_ROOT_MENU', + 619: 'KEY_MEDIA_TOP_MENU', + 620: 'KEY_NUMERIC_11', + 621: 'KEY_NUMERIC_12', + 622: 'KEY_AUDIO_DESC', + 623: 'KEY_3D_MODE', + 624: 'KEY_NEXT_FAVORITE', + 625: 'KEY_STOP_RECORD', + 626: 'KEY_PAUSE_RECORD', + 627: 'KEY_VOD', + 628: 'KEY_UNMUTE', + 629: 'KEY_FASTREVERSE', + 630: 'KEY_SLOWREVERSE', + 631: 'KEY_DATA', + 632: 'KEY_ONSCREEN_KEYBOARD', + 633: 'KEY_PRIVACY_SCREEN_TOGGLE', + 634: 'KEY_SELECTIVE_SCREENSHOT', + 635: 'KEY_NEXT_ELEMENT', + 636: 'KEY_PREVIOUS_ELEMENT', + 637: 'KEY_AUTOPILOT_ENGAGE_TOGGLE', + 638: 'KEY_MARK_WAYPOINT', + 639: 'KEY_SOS', + 640: 'KEY_NAV_CHART', + 641: 'KEY_FISHING_CHART', + 642: 'KEY_SINGLE_RANGE_RADAR', + 643: 'KEY_DUAL_RANGE_RADAR', + 644: 'KEY_RADAR_OVERLAY', + 645: 'KEY_TRADITIONAL_SONAR', + 646: 'KEY_CLEARVU_SONAR', + 647: 'KEY_SIDEVU_SONAR', + 648: 'KEY_NAV_INFO', + 649: 'KEY_BRIGHTNESS_MENU', + 656: 'KEY_MACRO1', + 657: 'KEY_MACRO2', + 658: 'KEY_MACRO3', + 659: 'KEY_MACRO4', + 660: 'KEY_MACRO5', + 661: 'KEY_MACRO6', + 662: 'KEY_MACRO7', + 663: 'KEY_MACRO8', + 664: 'KEY_MACRO9', + 665: 'KEY_MACRO10', + 666: 'KEY_MACRO11', + 667: 'KEY_MACRO12', + 668: 'KEY_MACRO13', + 669: 'KEY_MACRO14', + 670: 'KEY_MACRO15', + 671: 'KEY_MACRO16', + 672: 'KEY_MACRO17', + 673: 'KEY_MACRO18', + 674: 'KEY_MACRO19', + 675: 'KEY_MACRO20', + 676: 'KEY_MACRO21', + 677: 'KEY_MACRO22', + 678: 'KEY_MACRO23', + 679: 'KEY_MACRO24', + 680: 'KEY_MACRO25', + 681: 'KEY_MACRO26', + 682: 'KEY_MACRO27', + 683: 'KEY_MACRO28', + 684: 'KEY_MACRO29', + 685: 'KEY_MACRO30', + 688: 'KEY_MACRO_RECORD_START', + 689: 'KEY_MACRO_RECORD_STOP', + 690: 'KEY_MACRO_PRESET_CYCLE', + 691: 'KEY_MACRO_PRESET1', + 692: 'KEY_MACRO_PRESET2', + 693: 'KEY_MACRO_PRESET3', + 696: 'KEY_KBD_LCD_MENU1', + 697: 'KEY_KBD_LCD_MENU2', + 698: 'KEY_KBD_LCD_MENU3', + 699: 'KEY_KBD_LCD_MENU4', + 700: 'KEY_KBD_LCD_MENU5', + 767: 'KEY_MAX', + 768: 'KEY_CNT'} + +ABS: Dict[int, Union[str, Tuple[str]]] = { 0: 'ABS_X', + 1: 'ABS_Y', + 2: 'ABS_Z', + 3: 'ABS_RX', + 4: 'ABS_RY', + 5: 'ABS_RZ', + 6: 'ABS_THROTTLE', + 7: 'ABS_RUDDER', + 8: 'ABS_WHEEL', + 9: 'ABS_GAS', + 10: 'ABS_BRAKE', + 16: 'ABS_HAT0X', + 17: 'ABS_HAT0Y', + 18: 'ABS_HAT1X', + 19: 'ABS_HAT1Y', + 20: 'ABS_HAT2X', + 21: 'ABS_HAT2Y', + 22: 'ABS_HAT3X', + 23: 'ABS_HAT3Y', + 24: 'ABS_PRESSURE', + 25: 'ABS_DISTANCE', + 26: 'ABS_TILT_X', + 27: 'ABS_TILT_Y', + 28: 'ABS_TOOL_WIDTH', + 32: 'ABS_VOLUME', + 33: 'ABS_PROFILE', + 40: 'ABS_MISC', + 46: 'ABS_RESERVED', + 47: 'ABS_MT_SLOT', + 48: 'ABS_MT_TOUCH_MAJOR', + 49: 'ABS_MT_TOUCH_MINOR', + 50: 'ABS_MT_WIDTH_MAJOR', + 51: 'ABS_MT_WIDTH_MINOR', + 52: 'ABS_MT_ORIENTATION', + 53: 'ABS_MT_POSITION_X', + 54: 'ABS_MT_POSITION_Y', + 55: 'ABS_MT_TOOL_TYPE', + 56: 'ABS_MT_BLOB_ID', + 57: 'ABS_MT_TRACKING_ID', + 58: 'ABS_MT_PRESSURE', + 59: 'ABS_MT_DISTANCE', + 60: 'ABS_MT_TOOL_X', + 61: 'ABS_MT_TOOL_Y', + 63: 'ABS_MAX', + 64: 'ABS_CNT'} + +REL: Dict[int, Union[str, Tuple[str]]] = { 0: 'REL_X', + 1: 'REL_Y', + 2: 'REL_Z', + 3: 'REL_RX', + 4: 'REL_RY', + 5: 'REL_RZ', + 6: 'REL_HWHEEL', + 7: 'REL_DIAL', + 8: 'REL_WHEEL', + 9: 'REL_MISC', + 10: 'REL_RESERVED', + 11: 'REL_WHEEL_HI_RES', + 12: 'REL_HWHEEL_HI_RES', + 15: 'REL_MAX', + 16: 'REL_CNT'} + +SW: Dict[int, Union[str, Tuple[str]]] = { 0: 'SW_LID', + 1: 'SW_TABLET_MODE', + 2: 'SW_HEADPHONE_INSERT', + 3: ('SW_RADIO', 'SW_RFKILL_ALL'), + 4: 'SW_MICROPHONE_INSERT', + 5: 'SW_DOCK', + 6: 'SW_LINEOUT_INSERT', + 7: 'SW_JACK_PHYSICAL_INSERT', + 8: 'SW_VIDEOOUT_INSERT', + 9: 'SW_CAMERA_LENS_COVER', + 10: 'SW_KEYPAD_SLIDE', + 11: 'SW_FRONT_PROXIMITY', + 12: 'SW_ROTATE_LOCK', + 13: 'SW_LINEIN_INSERT', + 14: 'SW_MUTE_DEVICE', + 15: 'SW_PEN_INSERTED', + 16: ('SW_MACHINE_COVER', 'SW_MAX'), + 17: 'SW_CNT'} + +MSC: Dict[int, Union[str, Tuple[str]]] = { 0: 'MSC_SERIAL', + 1: 'MSC_PULSELED', + 2: 'MSC_GESTURE', + 3: 'MSC_RAW', + 4: 'MSC_SCAN', + 5: 'MSC_TIMESTAMP', + 7: 'MSC_MAX', + 8: 'MSC_CNT'} + +LED: Dict[int, Union[str, Tuple[str]]] = { 0: 'LED_NUML', + 1: 'LED_CAPSL', + 2: 'LED_SCROLLL', + 3: 'LED_COMPOSE', + 4: 'LED_KANA', + 5: 'LED_SLEEP', + 6: 'LED_SUSPEND', + 7: 'LED_MUTE', + 8: 'LED_MISC', + 9: 'LED_MAIL', + 10: 'LED_CHARGING', + 15: 'LED_MAX', + 16: 'LED_CNT'} + +BTN: Dict[int, Union[str, Tuple[str]]] = { 256: ('BTN_0', 'BTN_MISC'), + 257: 'BTN_1', + 258: 'BTN_2', + 259: 'BTN_3', + 260: 'BTN_4', + 261: 'BTN_5', + 262: 'BTN_6', + 263: 'BTN_7', + 264: 'BTN_8', + 265: 'BTN_9', + 272: ('BTN_LEFT', 'BTN_MOUSE'), + 273: 'BTN_RIGHT', + 274: 'BTN_MIDDLE', + 275: 'BTN_SIDE', + 276: 'BTN_EXTRA', + 277: 'BTN_FORWARD', + 278: 'BTN_BACK', + 279: 'BTN_TASK', + 288: ('BTN_JOYSTICK', 'BTN_TRIGGER'), + 289: 'BTN_THUMB', + 290: 'BTN_THUMB2', + 291: 'BTN_TOP', + 292: 'BTN_TOP2', + 293: 'BTN_PINKIE', + 294: 'BTN_BASE', + 295: 'BTN_BASE2', + 296: 'BTN_BASE3', + 297: 'BTN_BASE4', + 298: 'BTN_BASE5', + 299: 'BTN_BASE6', + 303: 'BTN_DEAD', + 304: ('BTN_A', 'BTN_GAMEPAD', 'BTN_SOUTH'), + 305: ('BTN_B', 'BTN_EAST'), + 306: 'BTN_C', + 307: ('BTN_NORTH', 'BTN_X'), + 308: ('BTN_WEST', 'BTN_Y'), + 309: 'BTN_Z', + 310: 'BTN_TL', + 311: 'BTN_TR', + 312: 'BTN_TL2', + 313: 'BTN_TR2', + 314: 'BTN_SELECT', + 315: 'BTN_START', + 316: 'BTN_MODE', + 317: 'BTN_THUMBL', + 318: 'BTN_THUMBR', + 320: ('BTN_DIGI', 'BTN_TOOL_PEN'), + 321: 'BTN_TOOL_RUBBER', + 322: 'BTN_TOOL_BRUSH', + 323: 'BTN_TOOL_PENCIL', + 324: 'BTN_TOOL_AIRBRUSH', + 325: 'BTN_TOOL_FINGER', + 326: 'BTN_TOOL_MOUSE', + 327: 'BTN_TOOL_LENS', + 328: 'BTN_TOOL_QUINTTAP', + 329: 'BTN_STYLUS3', + 330: 'BTN_TOUCH', + 331: 'BTN_STYLUS', + 332: 'BTN_STYLUS2', + 333: 'BTN_TOOL_DOUBLETAP', + 334: 'BTN_TOOL_TRIPLETAP', + 335: 'BTN_TOOL_QUADTAP', + 336: ('BTN_GEAR_DOWN', 'BTN_WHEEL'), + 337: 'BTN_GEAR_UP', + 544: 'BTN_DPAD_UP', + 545: 'BTN_DPAD_DOWN', + 546: 'BTN_DPAD_LEFT', + 547: 'BTN_DPAD_RIGHT', + 704: ('BTN_TRIGGER_HAPPY', 'BTN_TRIGGER_HAPPY1'), + 705: 'BTN_TRIGGER_HAPPY2', + 706: 'BTN_TRIGGER_HAPPY3', + 707: 'BTN_TRIGGER_HAPPY4', + 708: 'BTN_TRIGGER_HAPPY5', + 709: 'BTN_TRIGGER_HAPPY6', + 710: 'BTN_TRIGGER_HAPPY7', + 711: 'BTN_TRIGGER_HAPPY8', + 712: 'BTN_TRIGGER_HAPPY9', + 713: 'BTN_TRIGGER_HAPPY10', + 714: 'BTN_TRIGGER_HAPPY11', + 715: 'BTN_TRIGGER_HAPPY12', + 716: 'BTN_TRIGGER_HAPPY13', + 717: 'BTN_TRIGGER_HAPPY14', + 718: 'BTN_TRIGGER_HAPPY15', + 719: 'BTN_TRIGGER_HAPPY16', + 720: 'BTN_TRIGGER_HAPPY17', + 721: 'BTN_TRIGGER_HAPPY18', + 722: 'BTN_TRIGGER_HAPPY19', + 723: 'BTN_TRIGGER_HAPPY20', + 724: 'BTN_TRIGGER_HAPPY21', + 725: 'BTN_TRIGGER_HAPPY22', + 726: 'BTN_TRIGGER_HAPPY23', + 727: 'BTN_TRIGGER_HAPPY24', + 728: 'BTN_TRIGGER_HAPPY25', + 729: 'BTN_TRIGGER_HAPPY26', + 730: 'BTN_TRIGGER_HAPPY27', + 731: 'BTN_TRIGGER_HAPPY28', + 732: 'BTN_TRIGGER_HAPPY29', + 733: 'BTN_TRIGGER_HAPPY30', + 734: 'BTN_TRIGGER_HAPPY31', + 735: 'BTN_TRIGGER_HAPPY32', + 736: 'BTN_TRIGGER_HAPPY33', + 737: 'BTN_TRIGGER_HAPPY34', + 738: 'BTN_TRIGGER_HAPPY35', + 739: 'BTN_TRIGGER_HAPPY36', + 740: 'BTN_TRIGGER_HAPPY37', + 741: 'BTN_TRIGGER_HAPPY38', + 742: 'BTN_TRIGGER_HAPPY39', + 743: 'BTN_TRIGGER_HAPPY40'} + +REP: Dict[int, Union[str, Tuple[str]]] = {0: 'REP_DELAY', 1: ('REP_MAX', 'REP_PERIOD'), 2: 'REP_CNT'} + +SND: Dict[int, Union[str, Tuple[str]]] = {0: 'SND_CLICK', 1: 'SND_BELL', 2: 'SND_TONE', 7: 'SND_MAX', 8: 'SND_CNT'} + +ID: Dict[int, Union[str, Tuple[str]]] = {0: 'ID_BUS', 1: 'ID_VENDOR', 2: 'ID_PRODUCT', 3: 'ID_VERSION'} + +EV: Dict[int, Union[str, Tuple[str]]] = { 0: 'EV_SYN', + 1: 'EV_KEY', + 2: 'EV_REL', + 3: 'EV_ABS', + 4: 'EV_MSC', + 5: 'EV_SW', + 17: 'EV_LED', + 18: 'EV_SND', + 20: 'EV_REP', + 21: 'EV_FF', + 22: 'EV_PWR', + 23: 'EV_FF_STATUS', + 31: 'EV_MAX', + 32: 'EV_CNT', + 257: 'EV_UINPUT', + 65537: 'EV_VERSION'} + +BUS: Dict[int, Union[str, Tuple[str]]] = { 1: 'BUS_PCI', + 2: 'BUS_ISAPNP', + 3: 'BUS_USB', + 4: 'BUS_HIL', + 5: 'BUS_BLUETOOTH', + 6: 'BUS_VIRTUAL', + 16: 'BUS_ISA', + 17: 'BUS_I8042', + 18: 'BUS_XTKBD', + 19: 'BUS_RS232', + 20: 'BUS_GAMEPORT', + 21: 'BUS_PARPORT', + 22: 'BUS_AMIGA', + 23: 'BUS_ADB', + 24: 'BUS_I2C', + 25: 'BUS_HOST', + 26: 'BUS_GSC', + 27: 'BUS_ATARI', + 28: 'BUS_SPI', + 29: 'BUS_RMI', + 30: 'BUS_CEC', + 31: 'BUS_INTEL_ISHTP', + 32: 'BUS_AMD_SFH'} + +SYN: Dict[int, Union[str, Tuple[str]]] = {0: 'SYN_REPORT', 1: 'SYN_CONFIG', 2: 'SYN_MT_REPORT', 3: 'SYN_DROPPED', 15: 'SYN_MAX', 16: 'SYN_CNT'} + +FF: Dict[int, Union[str, Tuple[str]]] = { 80: ('FF_EFFECT_MIN', 'FF_RUMBLE'), + 81: 'FF_PERIODIC', + 82: 'FF_CONSTANT', + 83: 'FF_SPRING', + 84: 'FF_FRICTION', + 85: 'FF_DAMPER', + 86: 'FF_INERTIA', + 87: ('FF_EFFECT_MAX', 'FF_RAMP'), + 88: ('FF_SQUARE', 'FF_WAVEFORM_MIN'), + 89: 'FF_TRIANGLE', + 90: 'FF_SINE', + 91: 'FF_SAW_UP', + 92: 'FF_SAW_DOWN', + 93: ('FF_CUSTOM', 'FF_WAVEFORM_MAX'), + 96: ('FF_GAIN', 'FF_MAX_EFFECTS'), + 97: 'FF_AUTOCENTER', + 127: 'FF_MAX', + 128: 'FF_CNT'} + +UI_FF: Dict[int, Union[str, Tuple[str]]] = {1: 'UI_FF_UPLOAD', 2: 'UI_FF_ERASE'} + +FF_STATUS: Dict[int, Union[str, Tuple[str]]] = {0: 'FF_STATUS_STOPPED', 1: ('FF_STATUS_MAX', 'FF_STATUS_PLAYING')} + +INPUT_PROP: Dict[int, Union[str, Tuple[str]]] = { 0: 'INPUT_PROP_POINTER', + 1: 'INPUT_PROP_DIRECT', + 2: 'INPUT_PROP_BUTTONPAD', + 3: 'INPUT_PROP_SEMI_MT', + 4: 'INPUT_PROP_TOPBUTTONPAD', + 5: 'INPUT_PROP_POINTING_STICK', + 6: 'INPUT_PROP_ACCELEROMETER', + 31: 'INPUT_PROP_MAX', + 32: 'INPUT_PROP_CNT'} + diff --git a/myenv/lib/python3.10/site-packages/evdev/ecodes_runtime.py b/myenv/lib/python3.10/site-packages/evdev/ecodes_runtime.py new file mode 100644 index 0000000..47f3b23 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/ecodes_runtime.py @@ -0,0 +1,111 @@ +# pylint: disable=undefined-variable +""" +This modules exposes the integer constants defined in ``linux/input.h`` and +``linux/input-event-codes.h``. + +Exposed constants:: + + KEY, ABS, REL, SW, MSC, LED, BTN, REP, SND, ID, EV, + BUS, SYN, FF, FF_STATUS, INPUT_PROP + +This module also provides reverse and forward mappings of the names and values +of the above mentioned constants:: + + >>> evdev.ecodes.KEY_A + 30 + + >>> evdev.ecodes.ecodes['KEY_A'] + 30 + + >>> evdev.ecodes.KEY[30] + 'KEY_A' + + >>> evdev.ecodes.REL[0] + 'REL_X' + + >>> evdev.ecodes.EV[evdev.ecodes.EV_KEY] + 'EV_KEY' + + >>> evdev.ecodes.bytype[evdev.ecodes.EV_REL][0] + 'REL_X' + +Keep in mind that values in reverse mappings may point to one or more event +codes. For example:: + + >>> evdev.ecodes.FF[80] + ('FF_EFFECT_MIN', 'FF_RUMBLE') + + >>> evdev.ecodes.FF[81] + 'FF_PERIODIC' +""" + +from inspect import getmembers + +from . import _ecodes + +#: Mapping of names to values. +ecodes = {} + +prefixes = "KEY ABS REL SW MSC LED BTN REP SND ID EV BUS SYN FF_STATUS FF INPUT_PROP UI_FF".split() +prev_prefix = "" +g = globals() + +# eg. code: 'REL_Z', val: 2 +for code, val in getmembers(_ecodes): + for prefix in prefixes: # eg. 'REL' + if code.startswith(prefix): + ecodes[code] = val + # FF_STATUS codes should not appear in the FF reverse mapping + if not code.startswith(prev_prefix): + d = g.setdefault(prefix, {}) + # codes that share the same value will be added to a list. eg: + # >>> ecodes.FF_STATUS + # {0: 'FF_STATUS_STOPPED', 1: ['FF_STATUS_MAX', 'FF_STATUS_PLAYING']} + if val in d: + if isinstance(d[val], list): + d[val].append(code) + else: + d[val] = [d[val], code] + else: + d[val] = code + + prev_prefix = prefix + + +# Convert lists to tuples. +k, v = None, None +for prefix in prefixes: + for k, v in g[prefix].items(): + if isinstance(v, list): + g[prefix][k] = tuple(v) + + +#: Keys are a combination of all BTN and KEY codes. +keys = {} +keys.update(BTN) +keys.update(KEY) + +# make keys safe to use for the default list of uinput device +# capabilities +del keys[_ecodes.KEY_MAX] +del keys[_ecodes.KEY_CNT] + +#: Mapping of event types to other value/name mappings. +bytype = { + _ecodes.EV_KEY: keys, + _ecodes.EV_ABS: ABS, + _ecodes.EV_REL: REL, + _ecodes.EV_SW: SW, + _ecodes.EV_MSC: MSC, + _ecodes.EV_LED: LED, + _ecodes.EV_REP: REP, + _ecodes.EV_SND: SND, + _ecodes.EV_SYN: SYN, + _ecodes.EV_FF: FF, + _ecodes.EV_FF_STATUS: FF_STATUS, +} + +from evdev._ecodes import * + +# cheaper than whitelisting in an __all__ +del code, val, prefix, getmembers, g, d, k, v, prefixes, prev_prefix diff --git a/myenv/lib/python3.10/site-packages/evdev/eventio.py b/myenv/lib/python3.10/site-packages/evdev/eventio.py new file mode 100644 index 0000000..bdb91a4 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/eventio.py @@ -0,0 +1,152 @@ +import fcntl +import functools +import os +import select +from typing import Iterator, Union + +from . import _input, _uinput, ecodes +from .events import InputEvent + + +# -------------------------------------------------------------------------- +class EvdevError(Exception): + pass + + +class EventIO: + """ + Base class for reading and writing input events. + + This class is used by :class:`InputDevice` and :class:`UInput`. + + - On, :class:`InputDevice` it used for reading user-generated events (e.g. + key presses, mouse movements) and writing feedback events (e.g. leds, + beeps). + + - On, :class:`UInput` it used for writing user-generated events (e.g. + key presses, mouse movements) and reading feedback events (e.g. leds, + beeps). + """ + + def fileno(self): + """ + Return the file descriptor to the open event device. This makes + it possible to pass instances directly to :func:`select.select()` and + :class:`asyncore.file_dispatcher`. + """ + return self.fd + + def read_loop(self) -> Iterator[InputEvent]: + """ + Enter an endless :func:`select.select()` loop that yields input events. + """ + + while True: + r, w, x = select.select([self.fd], [], []) + for event in self.read(): + yield event + + def read_one(self) -> Union[InputEvent, None]: + """ + Read and return a single input event as an instance of + :class:`InputEvent `. + + Return ``None`` if there are no pending input events. + """ + + # event -> (sec, usec, type, code, val) + event = _input.device_read(self.fd) + + if event: + return InputEvent(*event) + + def read(self) -> Iterator[InputEvent]: + """ + Read multiple input events from device. Return a generator object that + yields :class:`InputEvent ` instances. Raises + `BlockingIOError` if there are no available events at the moment. + """ + + # events -> ((sec, usec, type, code, val), ...) + events = _input.device_read_many(self.fd) + + for event in events: + yield InputEvent(*event) + + # pylint: disable=no-self-argument + def need_write(func): + """ + Decorator that raises :class:`EvdevError` if there is no write access to the + input device. + """ + + @functools.wraps(func) + def wrapper(*args): + fd = args[0].fd + if fcntl.fcntl(fd, fcntl.F_GETFL) & os.O_RDWR: + # pylint: disable=not-callable + return func(*args) + msg = 'no write access to device "%s"' % args[0].path + raise EvdevError(msg) + + return wrapper + + def write_event(self, event): + """ + Inject an input event into the input subsystem. Events are + queued until a synchronization event is received. + + Arguments + --------- + event: InputEvent + InputEvent instance or an object with an ``event`` attribute + (:class:`KeyEvent `, :class:`RelEvent + ` etc). + + Example + ------- + >>> ev = InputEvent(1334414993, 274296, ecodes.EV_KEY, ecodes.KEY_A, 1) + >>> ui.write_event(ev) + """ + + if hasattr(event, "event"): + event = event.event + + self.write(event.type, event.code, event.value) + + @need_write + def write(self, etype: int, code: int, value: int): + """ + Inject an input event into the input subsystem. Events are + queued until a synchronization event is received. + + Arguments + --------- + etype + event type (e.g. ``EV_KEY``). + + code + event code (e.g. ``KEY_A``). + + value + event value (e.g. 0 1 2 - depends on event type). + + Example + --------- + >>> ui.write(e.EV_KEY, e.KEY_A, 1) # key A - down + >>> ui.write(e.EV_KEY, e.KEY_A, 0) # key A - up + """ + + _uinput.write(self.fd, etype, code, value) + + def syn(self): + """ + Inject a ``SYN_REPORT`` event into the input subsystem. Events + queued by :func:`write()` will be fired. If possible, events + will be merged into an 'atomic' event. + """ + + self.write(ecodes.EV_SYN, ecodes.SYN_REPORT, 0) + + def close(self): + pass diff --git a/myenv/lib/python3.10/site-packages/evdev/eventio_async.py b/myenv/lib/python3.10/site-packages/evdev/eventio_async.py new file mode 100644 index 0000000..4af1aab --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/eventio_async.py @@ -0,0 +1,106 @@ +import asyncio +import select +import sys + +from . import eventio +from .events import InputEvent + +# needed for compatibility +from .eventio import EvdevError + +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing import Any as Self + + +class ReadIterator: + def __init__(self, device): + self.current_batch = iter(()) + self.device = device + + # Standard iterator protocol. + def __iter__(self) -> Self: + return self + + def __next__(self) -> InputEvent: + try: + # Read from the previous batch of events. + return next(self.current_batch) + except StopIteration: + r, w, x = select.select([self.device.fd], [], []) + self.current_batch = self.device.read() + return next(self.current_batch) + + def __aiter__(self) -> Self: + return self + + def __anext__(self) -> "asyncio.Future[InputEvent]": + future = asyncio.Future() + try: + # Read from the previous batch of events. + future.set_result(next(self.current_batch)) + except StopIteration: + + def next_batch_ready(batch): + try: + self.current_batch = batch.result() + future.set_result(next(self.current_batch)) + except Exception as e: + future.set_exception(e) + + self.device.async_read().add_done_callback(next_batch_ready) + return future + + +class EventIO(eventio.EventIO): + def _do_when_readable(self, callback): + loop = asyncio.get_event_loop() + + def ready(): + loop.remove_reader(self.fileno()) + callback() + + loop.add_reader(self.fileno(), ready) + + def _set_result(self, future, cb): + try: + future.set_result(cb()) + except Exception as error: + future.set_exception(error) + + def async_read_one(self): + """ + Asyncio coroutine to read and return a single input event as + an instance of :class:`InputEvent `. + """ + future = asyncio.Future() + self._do_when_readable(lambda: self._set_result(future, self.read_one)) + return future + + def async_read(self): + """ + Asyncio coroutine to read multiple input events from device. Return + a generator object that yields :class:`InputEvent ` + instances. + """ + future = asyncio.Future() + self._do_when_readable(lambda: self._set_result(future, self.read)) + return future + + def async_read_loop(self) -> ReadIterator: + """ + Return an iterator that yields input events. This iterator is + compatible with the ``async for`` syntax. + + """ + return ReadIterator(self) + + def close(self): + try: + loop = asyncio.get_event_loop() + loop.remove_reader(self.fileno()) + except RuntimeError: + # no event loop present, so there is nothing to + # remove the reader from. Ignore + pass diff --git a/myenv/lib/python3.10/site-packages/evdev/events.py b/myenv/lib/python3.10/site-packages/evdev/events.py new file mode 100644 index 0000000..922bfe6 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/events.py @@ -0,0 +1,192 @@ +""" +This module provides the :class:`InputEvent` class, which closely +resembles the ``input_event`` struct defined in ``linux/input.h``: + +.. code-block:: c + + struct input_event { + struct timeval time; + __u16 type; + __u16 code; + __s32 value; + }; + +This module also defines several :class:`InputEvent` sub-classes that +know more about the different types of events (key, abs, rel etc). The +:data:`event_factory` dictionary maps event types to these classes. + +Assuming you use the :func:`evdev.util.categorize()` function to +categorize events according to their type, adding or replacing a class +for a specific event type becomes a matter of modifying +:data:`event_factory`. + +All classes in this module have reasonable ``str()`` and ``repr()`` +methods:: + + >>> print(event) + event at 1337197425.477827, code 04, type 04, val 458792 + >>> print(repr(event)) + InputEvent(1337197425L, 477827L, 4, 4, 458792L) + + >>> print(key_event) + key event at 1337197425.477835, 28 (KEY_ENTER), up + >>> print(repr(key_event)) + KeyEvent(InputEvent(1337197425L, 477835L, 1, 28, 0L)) +""" + +# event type descriptions have been taken mot-a-mot from: +# http://www.kernel.org/doc/Documentation/input/event-codes.txt + +# pylint: disable=no-name-in-module +from typing import Final +from .ecodes import ABS, EV_ABS, EV_KEY, EV_REL, EV_SYN, KEY, REL, SYN, keys + + +class InputEvent: + """A generic input event.""" + + __slots__ = "sec", "usec", "type", "code", "value" + + def __init__(self, sec, usec, type, code, value): + #: Time in seconds since epoch at which event occurred. + self.sec: int = sec + + #: Microsecond portion of the timestamp. + self.usec: int = usec + + #: Event type - one of ``ecodes.EV_*``. + self.type: int = type + + #: Event code related to the event type. + self.code: int = code + + #: Event value related to the event type. + self.value: int = value + + def timestamp(self) -> float: + """Return event timestamp as a float.""" + return self.sec + (self.usec / 1000000.0) + + def __str__(self): + msg = "event at {:f}, code {:02d}, type {:02d}, val {:02d}" + return msg.format(self.timestamp(), self.code, self.type, self.value) + + def __repr__(self): + msg = "{}({!r}, {!r}, {!r}, {!r}, {!r})" + return msg.format(self.__class__.__name__, self.sec, self.usec, self.type, self.code, self.value) + + +class KeyEvent: + """An event generated by a keyboard, button or other key-like devices.""" + + key_up: Final[int] = 0x0 + key_down: Final[int] = 0x1 + key_hold: Final[int] = 0x2 + + __slots__ = "scancode", "keycode", "keystate", "event" + + def __init__(self, event: InputEvent, allow_unknown: bool = False): + """ + The ``allow_unknown`` argument determines what to do in the event of an event code + for which a key code cannot be found. If ``False`` a ``KeyError`` will be raised. + If ``True`` the keycode will be set to the hex value of the event code. + """ + + self.scancode: int = event.code + + if event.value == 0: + self.keystate = KeyEvent.key_up + elif event.value == 2: + self.keystate = KeyEvent.key_hold + elif event.value == 1: + self.keystate = KeyEvent.key_down + + try: + self.keycode = keys[event.code] + except KeyError: + if allow_unknown: + self.keycode = "0x{:02X}".format(event.code) + else: + raise + + #: Reference to an :class:`InputEvent` instance. + self.event: InputEvent = event + + def __str__(self): + try: + ks = ("up", "down", "hold")[self.keystate] + except IndexError: + ks = "unknown" + + msg = "key event at {:f}, {} ({}), {}" + return msg.format(self.event.timestamp(), self.scancode, self.keycode, ks) + + def __repr__(self): + return "{}({!r})".format(self.__class__.__name__, self.event) + + +class RelEvent: + """A relative axis event (e.g moving the mouse 5 units to the left).""" + + __slots__ = "event" + + def __init__(self, event: InputEvent): + #: Reference to an :class:`InputEvent` instance. + self.event: InputEvent = event + + def __str__(self): + msg = "relative axis event at {:f}, {}" + return msg.format(self.event.timestamp(), REL[self.event.code]) + + def __repr__(self): + return "{}({!r})".format(self.__class__.__name__, self.event) + + +class AbsEvent: + """An absolute axis event (e.g the coordinates of a tap on a touchscreen).""" + + __slots__ = "event" + + def __init__(self, event: InputEvent): + #: Reference to an :class:`InputEvent` instance. + self.event: InputEvent = event + + def __str__(self): + msg = "absolute axis event at {:f}, {}" + return msg.format(self.event.timestamp(), ABS[self.event.code]) + + def __repr__(self): + return "{}({!r})".format(self.__class__.__name__, self.event) + + +class SynEvent: + """ + A synchronization event. Used as markers to separate events. Events may be + separated in time or in space, such as with the multitouch protocol. + """ + + __slots__ = "event" + + def __init__(self, event: InputEvent): + #: Reference to an :class:`InputEvent` instance. + self.event: InputEvent = event + + def __str__(self): + msg = "synchronization event at {:f}, {}" + return msg.format(self.event.timestamp(), SYN[self.event.code]) + + def __repr__(self): + return "{}({!r})".format(self.__class__.__name__, self.event) + + +#: A mapping of event types to :class:`InputEvent` sub-classes. Used +#: by :func:`evdev.util.categorize()` +event_factory = { + EV_KEY: KeyEvent, + EV_REL: RelEvent, + EV_ABS: AbsEvent, + EV_SYN: SynEvent, +} + + +__all__ = ("InputEvent", "KeyEvent", "RelEvent", "SynEvent", "AbsEvent", "event_factory") diff --git a/myenv/lib/python3.10/site-packages/evdev/evtest.py b/myenv/lib/python3.10/site-packages/evdev/evtest.py new file mode 100644 index 0000000..6ea3bb5 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/evtest.py @@ -0,0 +1,181 @@ +""" +Usage: evtest [options] [, ...] + +Input device enumerator and event monitor. + +Running evtest without any arguments will let you select +from a list of all readable input devices. + +Options: + -h, --help Show this help message and exit. + -c, --capabilities List device capabilities and exit. + -g, --grab Other applications will not receive events from + the selected devices while evtest is running. + +Examples: + evtest /dev/input/event0 /dev/input/event1 +""" + +import atexit +import optparse +import re +import select +import sys +import termios + +from . import AbsInfo, InputDevice, ecodes, list_devices + + +def parseopt(): + parser = optparse.OptionParser(add_help_option=False) + parser.add_option("-h", "--help", action="store_true") + parser.add_option("-g", "--grab", action="store_true") + parser.add_option("-c", "--capabilities", action="store_true") + return parser.parse_args() + + +def main(): + opts, devices = parseopt() + if opts.help: + print(__doc__.strip()) + return 0 + + if not devices: + devices = select_devices() + else: + devices = [InputDevice(path) for path in devices] + + if opts.capabilities: + for device in devices: + print_capabilities(device) + return 0 + + if opts.grab: + for device in devices: + device.grab() + + # Disable tty echoing if stdin is a tty. + if sys.stdin.isatty(): + toggle_tty_echo(sys.stdin, enable=False) + atexit.register(toggle_tty_echo, sys.stdin, enable=True) + + print("Listening for events (press ctrl-c to exit) ...") + fd_to_device = {dev.fd: dev for dev in devices} + while True: + r, w, e = select.select(fd_to_device, [], []) + + for fd in r: + for event in fd_to_device[fd].read(): + print_event(event) + + +def select_devices(device_dir="/dev/input"): + """ + Select one or more devices from a list of accessible input devices. + """ + + def devicenum(device_path): + digits = re.findall(r"\d+$", device_path) + return [int(i) for i in digits] + + devices = sorted(list_devices(device_dir), key=devicenum) + devices = [InputDevice(path) for path in devices] + if not devices: + msg = "error: no input devices found (do you have rw permission on %s/*?)" + print(msg % device_dir, file=sys.stderr) + sys.exit(1) + + dev_format = "{0:<3} {1.path:<20} {1.name:<35} {1.phys:<35} {1.uniq:<4}" + dev_lines = [dev_format.format(num, dev) for num, dev in enumerate(devices)] + + print("ID {:<20} {:<35} {:<35} {}".format("Device", "Name", "Phys", "Uniq")) + print("-" * len(max(dev_lines, key=len))) + print("\n".join(dev_lines)) + print() + + choices = input("Select devices [0-%s]: " % (len(dev_lines) - 1)) + + try: + choices = choices.split() + choices = [devices[int(num)] for num in choices] + except ValueError: + choices = None + + if not choices: + msg = "error: invalid input - please enter one or more numbers separated by spaces" + print(msg, file=sys.stderr) + sys.exit(1) + + return choices + + +def print_capabilities(device): + capabilities = device.capabilities(verbose=True) + input_props = device.input_props(verbose=True) + + print("Device name: {.name}".format(device)) + print("Device info: {.info}".format(device)) + print("Repeat settings: {}\n".format(device.repeat)) + + if ("EV_LED", ecodes.EV_LED) in capabilities: + leds = ",".join(i[0] for i in device.leds(True)) + print("Active LEDs: %s" % leds) + + active_keys = ",".join(k[0] for k in device.active_keys(True)) + print("Active keys: %s\n" % active_keys) + + if input_props: + print("Input properties:") + for type, code in input_props: + print(" %s %s" % (type, code)) + print() + + print("Device capabilities:") + for type, codes in capabilities.items(): + print(" Type {} {}:".format(*type)) + for code in codes: + # code <- ('BTN_RIGHT', 273) or (['BTN_LEFT', 'BTN_MOUSE'], 272) + if isinstance(code[1], AbsInfo): + print(" Code {:<4} {}:".format(*code[0])) + print(" {}".format(code[1])) + else: + # Multiple names may resolve to one value. + s = ", ".join(code[0]) if isinstance(code[0], list) else code[0] + print(" Code {:<4} {}".format(s, code[1])) + print("") + + +def print_event(e): + if e.type == ecodes.EV_SYN: + if e.code == ecodes.SYN_MT_REPORT: + msg = "time {:<17} +++++++++++++ {} +++++++++++++" + elif e.code == ecodes.SYN_DROPPED: + msg = "time {:<17} !!!!!!!!!!!!! {} !!!!!!!!!!!!!" + else: + msg = "time {:<17} ------------- {} -------------" + print(msg.format(e.timestamp(), ecodes.SYN[e.code])) + else: + if e.type in ecodes.bytype: + codename = ecodes.bytype[e.type][e.code] + else: + codename = "?" + + evfmt = "time {:<17} type {} ({}), code {:<4} ({}), value {}" + print(evfmt.format(e.timestamp(), e.type, ecodes.EV[e.type], e.code, codename, e.value)) + + +def toggle_tty_echo(fh, enable=True): + flags = termios.tcgetattr(fh.fileno()) + if enable: + flags[3] |= termios.ECHO + else: + flags[3] &= ~termios.ECHO + termios.tcsetattr(fh.fileno(), termios.TCSANOW, flags) + + +if __name__ == "__main__": + try: + ret = main() + except (KeyboardInterrupt, EOFError): + ret = 0 + sys.exit(ret) diff --git a/myenv/lib/python3.10/site-packages/evdev/ff.py b/myenv/lib/python3.10/site-packages/evdev/ff.py new file mode 100644 index 0000000..260c362 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/ff.py @@ -0,0 +1,198 @@ +import ctypes + +from . import ecodes + +_u8 = ctypes.c_uint8 +_u16 = ctypes.c_uint16 +_u32 = ctypes.c_uint32 +_s16 = ctypes.c_int16 +_s32 = ctypes.c_int32 + + +class Replay(ctypes.Structure): + """ + Defines scheduling of the force-feedback effect + @length: duration of the effect + @delay: delay before effect should start playing + """ + + _fields_ = [ + ("length", _u16), + ("delay", _u16), + ] + + +class Trigger(ctypes.Structure): + """ + Defines what triggers the force-feedback effect + @button: number of the button triggering the effect + @interval: controls how soon the effect can be re-triggered + """ + + _fields_ = [ + ("button", _u16), + ("interval", _u16), + ] + + +class Envelope(ctypes.Structure): + """ + Generic force-feedback effect envelope + @attack_length: duration of the attack (ms) + @attack_level: level at the beginning of the attack + @fade_length: duration of fade (ms) + @fade_level: level at the end of fade + + The @attack_level and @fade_level are absolute values; when applying + envelope force-feedback core will convert to positive/negative + value based on polarity of the default level of the effect. + Valid range for the attack and fade levels is 0x0000 - 0x7fff + """ + + _fields_ = [ + ("attack_length", _u16), + ("attack_level", _u16), + ("fade_length", _u16), + ("fade_level", _u16), + ] + + +class Constant(ctypes.Structure): + """ + Defines parameters of a constant force-feedback effect + @level: strength of the effect; may be negative + @envelope: envelope data + """ + + _fields_ = [ + ("level", _s16), + ("ff_envelope", Envelope), + ] + + +class Ramp(ctypes.Structure): + """ + Defines parameters of a ramp force-feedback effect + @start_level: beginning strength of the effect; may be negative + @end_level: final strength of the effect; may be negative + @envelope: envelope data + """ + + _fields_ = [ + ("start_level", _s16), + ("end_level", _s16), + ("ff_envelope", Envelope), + ] + + +class Condition(ctypes.Structure): + """ + Defines a spring or friction force-feedback effect + @right_saturation: maximum level when joystick moved all way to the right + @left_saturation: same for the left side + @right_coeff: controls how fast the force grows when the joystick moves to the right + @left_coeff: same for the left side + @deadband: size of the dead zone, where no force is produced + @center: position of the dead zone + """ + + _fields_ = [ + ("right_saturation", _u16), + ("left_saturation", _u16), + ("right_coeff", _s16), + ("left_coeff", _s16), + ("deadband", _u16), + ("center", _s16), + ] + + +class Periodic(ctypes.Structure): + """ + Defines parameters of a periodic force-feedback effect + @waveform: kind of the effect (wave) + @period: period of the wave (ms) + @magnitude: peak value + @offset: mean value of the wave (roughly) + @phase: 'horizontal' shift + @envelope: envelope data + @custom_len: number of samples (FF_CUSTOM only) + @custom_data: buffer of samples (FF_CUSTOM only) + """ + + _fields_ = [ + ("waveform", _u16), + ("period", _u16), + ("magnitude", _s16), + ("offset", _s16), + ("phase", _u16), + ("envelope", Envelope), + ("custom_len", _u32), + ("custom_data", ctypes.POINTER(_s16)), + ] + + +class Rumble(ctypes.Structure): + """ + Defines parameters of a periodic force-feedback effect + @strong_magnitude: magnitude of the heavy motor + @weak_magnitude: magnitude of the light one + + Some rumble pads have two motors of different weight. Strong_magnitude + represents the magnitude of the vibration generated by the heavy one. + """ + + _fields_ = [ + ("strong_magnitude", _u16), + ("weak_magnitude", _u16), + ] + + +class EffectType(ctypes.Union): + _fields_ = [ + ("ff_constant_effect", Constant), + ("ff_ramp_effect", Ramp), + ("ff_periodic_effect", Periodic), + ("ff_condition_effect", Condition * 2), # one for each axis + ("ff_rumble_effect", Rumble), + ] + + +class Effect(ctypes.Structure): + _fields_ = [ + ("type", _u16), + ("id", _s16), + ("direction", _u16), + ("ff_trigger", Trigger), + ("ff_replay", Replay), + ("u", EffectType), + ] + + +class UInputUpload(ctypes.Structure): + _fields_ = [ + ("request_id", _u32), + ("retval", _s32), + ("effect", Effect), + ("old", Effect), + ] + + +class UInputErase(ctypes.Structure): + _fields_ = [ + ("request_id", _u32), + ("retval", _s32), + ("effect_id", _u32), + ] + + +# ff_types = { +# ecodes.FF_CONSTANT, +# ecodes.FF_PERIODIC, +# ecodes.FF_RAMP, +# ecodes.FF_SPRING, +# ecodes.FF_FRICTION, +# ecodes.FF_DAMPER, +# ecodes.FF_RUMBLE, +# ecodes.FF_INERTIA, +# ecodes.FF_CUSTOM, +# } diff --git a/myenv/lib/python3.10/site-packages/evdev/genecodes_c.py b/myenv/lib/python3.10/site-packages/evdev/genecodes_c.py new file mode 100644 index 0000000..15a6693 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/genecodes_c.py @@ -0,0 +1,147 @@ +""" +Generate a Python extension module with the constants defined in linux/input.h. +""" + +import getopt +import os +import re +import sys + +# ----------------------------------------------------------------------------- +# The default header file locations to try. +headers = [ + "/usr/include/linux/input.h", + "/usr/include/linux/input-event-codes.h", + "/usr/include/linux/uinput.h", +] + +opts, args = getopt.getopt(sys.argv[1:], "", ["ecodes", "stubs", "reproducible"]) +if not opts: + print("usage: genecodes.py [--ecodes|--stubs] [--reproducible] ") + exit(2) + +if args: + headers = args + +reproducible = ("--reproducible", "") in opts + + +# ----------------------------------------------------------------------------- +macro_regex = r"#define\s+((?:KEY|ABS|REL|SW|MSC|LED|BTN|REP|SND|ID|EV|BUS|SYN|FF|UI_FF|INPUT_PROP)_\w+)" +macro_regex = re.compile(macro_regex) + +if reproducible: + uname = "hidden for reproducibility" +else: + # Uname without hostname. + uname = list(os.uname()) + uname = " ".join((uname[0], *uname[2:])) + + +# ----------------------------------------------------------------------------- +template_ecodes = r""" +#include +#ifdef __FreeBSD__ +#include +#include +#else +#include +#include +#endif + +/* Automatically generated by evdev.genecodes */ +/* Generated on %s */ +/* Generated from %s */ + +#define MODULE_NAME "_ecodes" +#define MODULE_HELP "linux/input.h macros" + +static PyMethodDef MethodTable[] = { + { NULL, NULL, 0, NULL} +}; + +static struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, + MODULE_NAME, + MODULE_HELP, + -1, /* m_size */ + MethodTable, /* m_methods */ + NULL, /* m_reload */ + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL, /* m_free */ +}; + +PyMODINIT_FUNC +PyInit__ecodes(void) +{ + PyObject* m = PyModule_Create(&moduledef); + if (m == NULL) return NULL; + +%s + + return m; +} +""" + + +template_stubs = r""" +# Automatically generated by evdev.genecodes +# Generated on %s +# Generated from %s + +# pylint: skip-file + +ecodes: dict[str, int] +keys: dict[int, str|list[str]] +bytype: dict[int, dict[int, str|list[str]]] + +KEY: dict[int, str|list[str]] +ABS: dict[int, str|list[str]] +REL: dict[int, str|list[str]] +SW: dict[int, str|list[str]] +MSC: dict[int, str|list[str]] +LED: dict[int, str|list[str]] +BTN: dict[int, str|list[str]] +REP: dict[int, str|list[str]] +SND: dict[int, str|list[str]] +ID: dict[int, str|list[str]] +EV: dict[int, str|list[str]] +BUS: dict[int, str|list[str]] +SYN: dict[int, str|list[str]] +FF_STATUS: dict[int, str|list[str]] +FF_INPUT_PROP: dict[int, str|list[str]] + +%s +""" + + +def parse_headers(headers=headers): + for header in headers: + try: + fh = open(header) + except (IOError, OSError): + continue + + for line in fh: + macro = macro_regex.search(line) + if macro: + yield macro.group(1) + + +all_macros = list(parse_headers()) +if not all_macros: + print("no input macros found in: %s" % " ".join(headers), file=sys.stderr) + sys.exit(1) + +# pylint: disable=possibly-used-before-assignment, used-before-assignment +if ("--ecodes", "") in opts: + body = (" PyModule_AddIntMacro(m, %s);" % macro for macro in all_macros) + template = template_ecodes +elif ("--stubs", "") in opts: + body = ("%s: int" % macro for macro in all_macros) + template = template_stubs + +body = os.linesep.join(body) +text = template % (uname, headers if not reproducible else ["hidden for reproducibility"], body) +print(text.strip()) diff --git a/myenv/lib/python3.10/site-packages/evdev/genecodes_py.py b/myenv/lib/python3.10/site-packages/evdev/genecodes_py.py new file mode 100644 index 0000000..f00020c --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/genecodes_py.py @@ -0,0 +1,54 @@ +import sys +from unittest import mock +from pprint import PrettyPrinter + +sys.modules["evdev.ecodes"] = mock.Mock() +from evdev import ecodes_runtime as ecodes + +pprint = PrettyPrinter(indent=2, sort_dicts=True, width=120).pprint + + +print("# Automatically generated by evdev.genecodes_py") +print() +print('"""') +print(ecodes.__doc__.strip()) +print('"""') + +print() +print("from typing import Final, Dict, Tuple, Union") +print() + +for name, value in ecodes.ecodes.items(): + print(f"{name}: Final[int] = {value}") +print() + +entries = [ + ("ecodes", "Dict[str, int]", "#: Mapping of names to values."), + ("bytype", "Dict[int, Dict[int, Union[str, Tuple[str]]]]", "#: Mapping of event types to other value/name mappings."), + ("keys", "Dict[int, Union[str, Tuple[str]]]", "#: Keys are a combination of all BTN and KEY codes."), + ("KEY", "Dict[int, Union[str, Tuple[str]]]", None), + ("ABS", "Dict[int, Union[str, Tuple[str]]]", None), + ("REL", "Dict[int, Union[str, Tuple[str]]]", None), + ("SW", "Dict[int, Union[str, Tuple[str]]]", None), + ("MSC", "Dict[int, Union[str, Tuple[str]]]", None), + ("LED", "Dict[int, Union[str, Tuple[str]]]", None), + ("BTN", "Dict[int, Union[str, Tuple[str]]]", None), + ("REP", "Dict[int, Union[str, Tuple[str]]]", None), + ("SND", "Dict[int, Union[str, Tuple[str]]]", None), + ("ID", "Dict[int, Union[str, Tuple[str]]]", None), + ("EV", "Dict[int, Union[str, Tuple[str]]]", None), + ("BUS", "Dict[int, Union[str, Tuple[str]]]", None), + ("SYN", "Dict[int, Union[str, Tuple[str]]]", None), + ("FF", "Dict[int, Union[str, Tuple[str]]]", None), + ("UI_FF", "Dict[int, Union[str, Tuple[str]]]", None), + ("FF_STATUS", "Dict[int, Union[str, Tuple[str]]]", None), + ("INPUT_PROP", "Dict[int, Union[str, Tuple[str]]]", None) +] + +for key, annotation, doc in entries: + if doc: + print(doc) + + print(f"{key}: {annotation} = ", end="") + pprint(getattr(ecodes, key)) + print() \ No newline at end of file diff --git a/myenv/lib/python3.10/site-packages/evdev/input.c b/myenv/lib/python3.10/site-packages/evdev/input.c new file mode 100644 index 0000000..4ad0408 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/input.c @@ -0,0 +1,579 @@ + +/* + * Python bindings to certain linux input subsystem functions. + * + * While everything here can be implemented in pure Python with struct and + * fcntl.ioctl, imho, it is much more straightforward to do so in C. + * + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __FreeBSD__ +#include +#else +#include +#endif + +#ifndef input_event_sec +#define input_event_sec time.tv_sec +#define input_event_usec time.tv_usec +#endif + +#define MAX_NAME_SIZE 256 + +extern char* EV_NAME[EV_CNT]; +extern int EV_TYPE_MAX[EV_CNT]; +extern char** EV_TYPE_NAME[EV_CNT]; +extern char* BUS_NAME[]; + + +int test_bit(const char* bitmask, int bit) { + return bitmask[bit/8] & (1 << (bit % 8)); +} + + +// Read input event from a device and return a tuple that mimics input_event +static PyObject * +device_read(PyObject *self, PyObject *args) +{ + struct input_event event; + + // get device file descriptor (O_RDONLY|O_NONBLOCK) + int fd = (int)PyLong_AsLong(PyTuple_GET_ITEM(args, 0)); + + int n = read(fd, &event, sizeof(event)); + + if (n < 0) { + if (errno == EAGAIN) { + Py_INCREF(Py_None); + return Py_None; + } + + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + PyObject* sec = PyLong_FromLong(event.input_event_sec); + PyObject* usec = PyLong_FromLong(event.input_event_usec); + PyObject* val = PyLong_FromLong(event.value); + PyObject* type = PyLong_FromLong(event.type); + PyObject* code = PyLong_FromLong(event.code); + PyObject* py_input_event = PyTuple_Pack(5, sec, usec, type, code, val); + + return py_input_event; +} + + +// Read multiple input events from a device and return a list of tuples +static PyObject * +device_read_many(PyObject *self, PyObject *args) +{ + // get device file descriptor (O_RDONLY|O_NONBLOCK) + int fd = (int)PyLong_AsLong(PyTuple_GET_ITEM(args, 0)); + + PyObject* py_input_event = NULL; + PyObject* events = NULL; + PyObject* sec = NULL; + PyObject* usec = NULL; + PyObject* val = NULL; + PyObject* type = NULL; + PyObject* code = NULL; + + struct input_event event[64]; + + size_t event_size = sizeof(struct input_event); + ssize_t nread = read(fd, event, event_size*64); + + if (nread < 0) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + // Construct a tuple of event tuples. Each tuple is the arguments to InputEvent. + size_t num_events = nread / event_size; + events = PyTuple_New(num_events); + for (size_t i = 0 ; i < num_events; i++) { + sec = PyLong_FromLong(event[i].input_event_sec); + usec = PyLong_FromLong(event[i].input_event_usec); + val = PyLong_FromLong(event[i].value); + type = PyLong_FromLong(event[i].type); + code = PyLong_FromLong(event[i].code); + + py_input_event = PyTuple_Pack(5, sec, usec, type, code, val); + PyTuple_SET_ITEM(events, i, py_input_event); + } + + return events; +} + + +// Get the event types and event codes that the input device supports +static PyObject * +ioctl_capabilities(PyObject *self, PyObject *args) +{ + int fd, ev_type, ev_code; + char ev_bits[EV_MAX/8 + 1], code_bits[KEY_MAX/8 + 1]; + struct input_absinfo absinfo; + + int ret = PyArg_ParseTuple(args, "i", &fd); + if (!ret) return NULL; + + // @todo: figure out why fd gets zeroed on an ioctl after the + // refactoring and get rid of this workaround + const int _fd = fd; + + // Capabilities is a mapping of supported event types to lists of handled + // events e.g: {1: [272, 273, 274, 275], 2: [0, 1, 6, 8]} + PyObject* capabilities = PyDict_New(); + PyObject* eventcodes = NULL; + PyObject* evlong = NULL; + PyObject* capability = NULL; + PyObject* py_absinfo = NULL; + PyObject* absitem = NULL; + + memset(&ev_bits, 0, sizeof(ev_bits)); + + if (ioctl(_fd, EVIOCGBIT(0, sizeof(ev_bits)), ev_bits) < 0) + goto on_err; + + // Build a dictionary of the device's capabilities + for (ev_type=0 ; ev_type tuple(ABS_X, (0, 255, 0, 0)) + PyList_Append(eventcodes, absitem); + + Py_DECREF(absitem); + Py_DECREF(py_absinfo); + } + else { + evlong = PyLong_FromLong(ev_code); + PyList_Append(eventcodes, evlong); + } + + Py_DECREF(evlong); + } + } + // capabilities[EV_KEY] = [KEY_A, KEY_B, KEY_C, ...] + // capabilities[EV_ABS] = [(ABS_X, (0, 255, 0, 0)), ...] + PyDict_SetItem(capabilities, capability, eventcodes); + + Py_DECREF(capability); + Py_DECREF(eventcodes); + } + } + + return capabilities; + + on_err: + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} + + +// An all-in-one function for describing an input device +static PyObject * +ioctl_devinfo(PyObject *self, PyObject *args) +{ + int fd; + + struct input_id iid; + char name[MAX_NAME_SIZE]; + char phys[MAX_NAME_SIZE] = {0}; + char uniq[MAX_NAME_SIZE] = {0}; + + int ret = PyArg_ParseTuple(args, "i", &fd); + if (!ret) return NULL; + + memset(&iid, 0, sizeof(iid)); + + if (ioctl(fd, EVIOCGID, &iid) < 0) goto on_err; + if (ioctl(fd, EVIOCGNAME(sizeof(name)), name) < 0) goto on_err; + + // Some devices do not have a physical topology associated with them + ioctl(fd, EVIOCGPHYS(sizeof(phys)), phys); + + // Some kernels have started reporting bluetooth controller MACs as phys. + // This lets us get the real physical address. As with phys, it may be blank. + ioctl(fd, EVIOCGUNIQ(sizeof(uniq)), uniq); + + return Py_BuildValue("hhhhsss", iid.bustype, iid.vendor, iid.product, iid.version, + name, phys, uniq); + + on_err: + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} + + +static PyObject * +ioctl_EVIOCGABS(PyObject *self, PyObject *args) +{ + int fd, ev_code; + struct input_absinfo absinfo; + PyObject* py_absinfo = NULL; + + int ret = PyArg_ParseTuple(args, "ii", &fd, &ev_code); + if (!ret) return NULL; + + memset(&absinfo, 0, sizeof(absinfo)); + ret = ioctl(fd, EVIOCGABS(ev_code), &absinfo); + if (ret == -1) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + py_absinfo = Py_BuildValue("(iiiiii)", + absinfo.value, + absinfo.minimum, + absinfo.maximum, + absinfo.fuzz, + absinfo.flat, + absinfo.resolution); + return py_absinfo; +} + + +static PyObject * +ioctl_EVIOCSABS(PyObject *self, PyObject *args) +{ + int fd, ev_code; + struct input_absinfo absinfo; + + int ret = PyArg_ParseTuple(args, + "ii(iiiiii)", + &fd, + &ev_code, + &absinfo.value, + &absinfo.minimum, + &absinfo.maximum, + &absinfo.fuzz, + &absinfo.flat, + &absinfo.resolution); + if (!ret) return NULL; + + ret = ioctl(fd, EVIOCSABS(ev_code), &absinfo); + if (ret == -1) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + + +static PyObject * +ioctl_EVIOCGREP(PyObject *self, PyObject *args) +{ + int fd, ret; + unsigned int rep[REP_CNT] = {0}; + ret = PyArg_ParseTuple(args, "i", &fd); + if (!ret) return NULL; + + ret = ioctl(fd, EVIOCGREP, &rep); + if (ret == -1) + return NULL; + + return Py_BuildValue("(ii)", rep[REP_DELAY], rep[REP_PERIOD]); +} + + +static PyObject * +ioctl_EVIOCSREP(PyObject *self, PyObject *args) +{ + int fd, ret; + unsigned int rep[REP_CNT] = {0}; + + ret = PyArg_ParseTuple(args, "iii", &fd, &rep[0], &rep[1]); + if (!ret) return NULL; + + ret = ioctl(fd, EVIOCSREP, &rep); + if (ret == -1) + return NULL; + + return Py_BuildValue("i", ret); +} + + +static PyObject * +ioctl_EVIOCGVERSION(PyObject *self, PyObject *args) +{ + int fd, ret, res; + ret = PyArg_ParseTuple(args, "i", &fd); + if (!ret) return NULL; + + ret = ioctl(fd, EVIOCGVERSION, &res); + if (ret == -1) + return NULL; + + return Py_BuildValue("i", res); +} + + +static PyObject * +ioctl_EVIOCGRAB(PyObject *self, PyObject *args) +{ + int fd, ret, flag; + ret = PyArg_ParseTuple(args, "ii", &fd, &flag); + if (!ret) return NULL; + + ret = ioctl(fd, EVIOCGRAB, (intptr_t)flag); + if (ret != 0) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + + +static PyObject * +ioctl_EVIOCG_bits(PyObject *self, PyObject *args) +{ + int max, fd, evtype, ret; + + ret = PyArg_ParseTuple(args, "ii", &fd, &evtype); + if (!ret) return NULL; + + switch (evtype) { + case EV_LED: + max = LED_MAX; break; + case EV_SND: + max = SND_MAX; break; + case EV_KEY: + max = KEY_MAX; break; + case EV_SW: + max = SW_MAX; break; + default: + return NULL; + } + + char bytes[(max+7)/8]; + memset(bytes, 0, sizeof bytes); + + switch (evtype) { + case EV_LED: + ret = ioctl(fd, EVIOCGLED(sizeof(bytes)), &bytes); + break; + case EV_SND: + ret = ioctl(fd, EVIOCGSND(sizeof(bytes)), &bytes); + break; + case EV_KEY: + ret = ioctl(fd, EVIOCGKEY(sizeof(bytes)), &bytes); + break; + case EV_SW: + ret = ioctl(fd, EVIOCGSW(sizeof(bytes)), &bytes); + break; + } + + if (ret == -1) + return NULL; + + PyObject* res = PyList_New(0); + for (int i=0; i<=max; i++) { + if (test_bit(bytes, i)) { + PyList_Append(res, Py_BuildValue("i", i)); + } + } + + return res; +} + + +static PyObject * +ioctl_EVIOCGEFFECTS(PyObject *self, PyObject *args) +{ + int fd, ret, res; + ret = PyArg_ParseTuple(args, "i", &fd); + if (!ret) return NULL; + + ret = ioctl(fd, EVIOCGEFFECTS, &res); + if (ret == -1) + return NULL; + + return Py_BuildValue("i", res); +} + +void print_ff_effect(struct ff_effect* effect) { + fprintf(stderr, + "ff_effect:\n" + " type: %d \n" + " id: %d \n" + " direction: %d\n" + " trigger: (%d, %d)\n" + " replay: (%d, %d)\n", + effect->type, effect->id, effect->direction, + effect->trigger.button, effect->trigger.interval, + effect->replay.length, effect->replay.delay + ); + + + switch (effect->type) { + case FF_CONSTANT: + fprintf(stderr, " constant: (%d, (%d, %d, %d, %d))\n", effect->u.constant.level, + effect->u.constant.envelope.attack_length, + effect->u.constant.envelope.attack_level, + effect->u.constant.envelope.fade_length, + effect->u.constant.envelope.fade_level); + break; + case FF_RUMBLE: + fprintf(stderr, " rumble: (%d, %d)\n", + effect->u.rumble.strong_magnitude, + effect->u.rumble.weak_magnitude); + break; + } +} + + +static PyObject * +upload_effect(PyObject *self, PyObject *args) +{ + int fd, ret; + PyObject* effect_data; + ret = PyArg_ParseTuple(args, "iO", &fd, &effect_data); + if (!ret) return NULL; + + void* data = PyBytes_AsString(effect_data); + struct ff_effect effect = {}; + memmove(&effect, data, sizeof(struct ff_effect)); + + // print_ff_effect(&effect); + + ret = ioctl(fd, EVIOCSFF, &effect); + if (ret != 0) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + return Py_BuildValue("i", effect.id); +} + + +static PyObject * +erase_effect(PyObject *self, PyObject *args) +{ + int fd, ret; + PyObject* ff_id_obj; + ret = PyArg_ParseTuple(args, "iO", &fd, &ff_id_obj); + if (!ret) return NULL; + + long ff_id = PyLong_AsLong(ff_id_obj); + ret = ioctl(fd, EVIOCRMFF, ff_id); + if (ret != 0) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +ioctl_EVIOCGPROP(PyObject *self, PyObject *args) +{ + int fd, ret; + + ret = PyArg_ParseTuple(args, "i", &fd); + if (!ret) return NULL; + + char bytes[(INPUT_PROP_MAX+7)/8]; + memset(bytes, 0, sizeof bytes); + + ret = ioctl(fd, EVIOCGPROP(sizeof(bytes)), &bytes); + + if (ret == -1) + return NULL; + + PyObject* res = PyList_New(0); + for (int i=0; i + +#include +#include +#include +#include +#include +#include +#include + +#ifdef __FreeBSD__ +#include +#include +#else +#include +#include +#endif + +#ifndef input_event_sec +#define input_event_sec time.tv_sec +#define input_event_usec time.tv_usec +#endif + +// Workaround for installing on kernels newer than 4.4. +#ifndef FF_MAX_EFFECTS +#define FF_MAX_EFFECTS FF_GAIN; +#endif + +int _uinput_close(int fd) +{ + if (ioctl(fd, UI_DEV_DESTROY) < 0) { + int oerrno = errno; + close(fd); + errno = oerrno; + return -1; + } + + return close(fd); +} + + +static PyObject * +uinput_open(PyObject *self, PyObject *args) +{ + const char* devnode; + + int ret = PyArg_ParseTuple(args, "s", &devnode); + if (!ret) return NULL; + + int fd = open(devnode, O_RDWR | O_NONBLOCK); + if (fd < 0) { + PyErr_SetString(PyExc_OSError, "could not open uinput device in write mode"); + return NULL; + } + + return Py_BuildValue("i", fd); +} + + +static PyObject * +uinput_set_phys(PyObject *self, PyObject *args) +{ + int fd; + const char* phys; + + int ret = PyArg_ParseTuple(args, "is", &fd, &phys); + if (!ret) return NULL; + + if (ioctl(fd, UI_SET_PHYS, phys) < 0) + goto on_err; + + Py_RETURN_NONE; + + on_err: + _uinput_close(fd); + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} + +static PyObject * +uinput_set_prop(PyObject *self, PyObject *args) +{ + int fd; + uint16_t prop; + + int ret = PyArg_ParseTuple(args, "ih", &fd, &prop); + if (!ret) return NULL; + + if (ioctl(fd, UI_SET_PROPBIT, prop) < 0) + goto on_err; + + Py_RETURN_NONE; + + on_err: + _uinput_close(fd); + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} + +static PyObject * +uinput_get_sysname(PyObject *self, PyObject *args) +{ + int fd; + char sysname[64]; + + int ret = PyArg_ParseTuple(args, "i", &fd); + if (!ret) return NULL; + + #ifdef UI_GET_SYSNAME + if (ioctl(fd, UI_GET_SYSNAME(sizeof(sysname)), &sysname) < 0) + goto on_err; + + return Py_BuildValue("s", &sysname); + #endif + + on_err: + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} + +// Different kernel versions have different device setup methods. You can read +// more about it here: +// https://github.com/torvalds/linux/commit/052876f8e5aec887d22c4d06e54aa5531ffcec75 + +// Setup function for kernel >= v4.5 +#if defined(UI_DEV_SETUP) && defined(UI_ABS_SETUP) +static PyObject * +uinput_setup(PyObject *self, PyObject *args) { + int fd, len, i; + uint16_t vendor, product, version, bustype; + uint32_t max_effects; + + PyObject *absinfo = NULL, *item = NULL; + + struct uinput_abs_setup abs_setup; + + const char* name; + int ret = PyArg_ParseTuple(args, "isHHHHOI", &fd, &name, &vendor, + &product, &version, &bustype, &absinfo, &max_effects); + if (!ret) return NULL; + + // Setup absinfo: + len = PyList_Size(absinfo); + for (i=0; i (ABS_X, 0, 255, 0, 0, 0, 0) + item = PyList_GetItem(absinfo, i); + + memset(&abs_setup, 0, sizeof(abs_setup)); // Clear struct + abs_setup.code = PyLong_AsLong(PyList_GetItem(item, 0)); + abs_setup.absinfo.value = PyLong_AsLong(PyList_GetItem(item, 1)); + abs_setup.absinfo.minimum = PyLong_AsLong(PyList_GetItem(item, 2)); + abs_setup.absinfo.maximum = PyLong_AsLong(PyList_GetItem(item, 3)); + abs_setup.absinfo.fuzz = PyLong_AsLong(PyList_GetItem(item, 4)); + abs_setup.absinfo.flat = PyLong_AsLong(PyList_GetItem(item, 5)); + abs_setup.absinfo.resolution = PyLong_AsLong(PyList_GetItem(item, 6)); + + if(ioctl(fd, UI_ABS_SETUP, &abs_setup) < 0) + goto on_err; + } + + // Setup evdev: + struct uinput_setup usetup; + + memset(&usetup, 0, sizeof(usetup)); + strncpy(usetup.name, name, sizeof(usetup.name) - 1); + usetup.id.vendor = vendor; + usetup.id.product = product; + usetup.id.version = version; + usetup.id.bustype = bustype; + usetup.ff_effects_max = max_effects; + + if(ioctl(fd, UI_DEV_SETUP, &usetup) < 0) + goto on_err; + + Py_RETURN_NONE; + + on_err: + _uinput_close(fd); + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} + +// Fallback setup function (Linux <= 4.5 and FreeBSD). +#else +static PyObject * +uinput_setup(PyObject *self, PyObject *args) { + int fd, len, i, abscode; + uint16_t vendor, product, version, bustype; + uint32_t max_effects; + + PyObject *absinfo = NULL, *item = NULL; + + struct uinput_user_dev uidev; + const char* name; + + int ret = PyArg_ParseTuple(args, "isHHHHOI", &fd, &name, &vendor, + &product, &version, &bustype, &absinfo, &max_effects); + if (!ret) return NULL; + + memset(&uidev, 0, sizeof(uidev)); + strncpy(uidev.name, name, sizeof(uidev.name) - 1); + uidev.id.vendor = vendor; + uidev.id.product = product; + uidev.id.version = version; + uidev.id.bustype = bustype; + uidev.ff_effects_max = max_effects; + + len = PyList_Size(absinfo); + for (i=0; i (ABS_X, 0, 255, 0, 0, 0, 0) + item = PyList_GetItem(absinfo, i); + abscode = (int)PyLong_AsLong(PyList_GetItem(item, 0)); + + /* min/max/fuzz/flat start from index 2 because index 1 is value */ + uidev.absmin[abscode] = PyLong_AsLong(PyList_GetItem(item, 2)); + uidev.absmax[abscode] = PyLong_AsLong(PyList_GetItem(item, 3)); + uidev.absfuzz[abscode] = PyLong_AsLong(PyList_GetItem(item, 4)); + uidev.absflat[abscode] = PyLong_AsLong(PyList_GetItem(item, 5)); + } + + if (write(fd, &uidev, sizeof(uidev)) != sizeof(uidev)) + goto on_err; + + Py_RETURN_NONE; + + on_err: + _uinput_close(fd); + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} +#endif + + +static PyObject * +uinput_create(PyObject *self, PyObject *args) +{ + int fd; + + int ret = PyArg_ParseTuple(args, "i", &fd); + if (!ret) return NULL; + + if (ioctl(fd, UI_DEV_CREATE) < 0) + goto on_err; + + Py_RETURN_NONE; + + on_err: + _uinput_close(fd); + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} + + +static PyObject * +uinput_close(PyObject *self, PyObject *args) +{ + int fd; + + int ret = PyArg_ParseTuple(args, "i", &fd); + if (!ret) return NULL; + + if (_uinput_close(fd) < 0) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + Py_RETURN_NONE; +} + + +static PyObject * +uinput_write(PyObject *self, PyObject *args) +{ + int fd, type, code, value; + + int ret = PyArg_ParseTuple(args, "iiii", &fd, &type, &code, &value); + if (!ret) return NULL; + + struct input_event event; + struct timeval tval; + memset(&event, 0, sizeof(event)); + gettimeofday(&tval, 0); + event.input_event_usec = tval.tv_usec; + event.input_event_sec = tval.tv_sec; + event.type = type; + event.code = code; + event.value = value; + + if (write(fd, &event, sizeof(event)) != sizeof(event)) { + // @todo: elaborate + // PyErr_SetString(PyExc_OSError, "error writing event to uinput device"); + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + Py_RETURN_NONE; +} + + +static PyObject * +uinput_enable_event(PyObject *self, PyObject *args) +{ + int fd; + uint16_t type, code; + unsigned long req; + + int ret = PyArg_ParseTuple(args, "ihh", &fd, &type, &code); + if (!ret) return NULL; + + switch (type) { + case EV_KEY: req = UI_SET_KEYBIT; break; + case EV_ABS: req = UI_SET_ABSBIT; break; + case EV_REL: req = UI_SET_RELBIT; break; + case EV_MSC: req = UI_SET_MSCBIT; break; + case EV_SW: req = UI_SET_SWBIT; break; + case EV_LED: req = UI_SET_LEDBIT; break; + case EV_FF: req = UI_SET_FFBIT; break; + case EV_SND: req = UI_SET_SNDBIT; break; + default: + errno = EINVAL; + goto on_err; + } + + if (ioctl(fd, UI_SET_EVBIT, type) < 0) + goto on_err; + + if (ioctl(fd, req, code) < 0) + goto on_err; + + Py_RETURN_NONE; + + on_err: + _uinput_close(fd); + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} + +int _uinput_begin_upload(int fd, struct uinput_ff_upload *upload) +{ + return ioctl(fd, UI_BEGIN_FF_UPLOAD, upload); +} + +int _uinput_end_upload(int fd, struct uinput_ff_upload *upload) +{ + return ioctl(fd, UI_END_FF_UPLOAD, upload); +} + +int _uinput_begin_erase(int fd, struct uinput_ff_erase *upload) +{ + return ioctl(fd, UI_BEGIN_FF_ERASE, upload); +} + +int _uinput_end_erase(int fd, struct uinput_ff_erase *upload) +{ + return ioctl(fd, UI_END_FF_ERASE, upload); +} + + +static PyMethodDef MethodTable[] = { + { "open", uinput_open, METH_VARARGS, + "Open uinput device node."}, + + { "setup", uinput_setup, METH_VARARGS, + "Set an uinput device up."}, + + { "create", uinput_create, METH_VARARGS, + "Create an uinput device."}, + + { "close", uinput_close, METH_VARARGS, + "Destroy uinput device."}, + + { "write", uinput_write, METH_VARARGS, + "Write event to uinput device."}, + + { "enable", uinput_enable_event, METH_VARARGS, + "Enable a type of event."}, + + { "set_phys", uinput_set_phys, METH_VARARGS, + "Set physical path"}, + + { "get_sysname", uinput_get_sysname, METH_VARARGS, + "Obtain the sysname of the uinput device."}, + + { "set_prop", uinput_set_prop, METH_VARARGS, + "Set device input property"}, + + { NULL, NULL, 0, NULL} +}; + +static struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, + "_uinput", + "Python bindings for parts of linux/uinput.c", + -1, /* m_size */ + MethodTable, /* m_methods */ + NULL, /* m_reload */ + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL, /* m_free */ +}; + +static PyObject * +moduleinit(void) +{ + PyObject* m = PyModule_Create(&moduledef); + if (m == NULL) return NULL; + + PyModule_AddIntConstant(m, "maxnamelen", UINPUT_MAX_NAME_SIZE); + return m; +} + +PyMODINIT_FUNC +PyInit__uinput(void) +{ + return moduleinit(); +} diff --git a/myenv/lib/python3.10/site-packages/evdev/uinput.py b/myenv/lib/python3.10/site-packages/evdev/uinput.py new file mode 100644 index 0000000..2c69c2b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/uinput.py @@ -0,0 +1,375 @@ +import ctypes +import os +import platform +import re +import stat +import time +from collections import defaultdict +from typing import Union, Tuple, Dict, Sequence, Optional + +from . import _uinput, ecodes, ff, util +from .device import InputDevice, AbsInfo +from .events import InputEvent + +try: + from evdev.eventio_async import EventIO +except ImportError: + from evdev.eventio import EventIO + + +class UInputError(Exception): + pass + + +class UInput(EventIO): + """ + A userland input device and that can inject input events into the + linux input subsystem. + """ + + __slots__ = ( + "name", + "vendor", + "product", + "version", + "bustype", + "events", + "devnode", + "fd", + "device", + ) + + @classmethod + def from_device( + cls, + *devices: Union[InputDevice, Union[str, bytes, os.PathLike]], + filtered_types: Tuple[int] = (ecodes.EV_SYN, ecodes.EV_FF), + **kwargs, + ): + """ + Create an UInput device with the capabilities of one or more input + devices. + + Arguments + --------- + devices : InputDevice|str + Varargs of InputDevice instances or paths to input devices. + + filtered_types : Tuple[event type codes] + Event types to exclude from the capabilities of the uinput device. + + **kwargs + Keyword arguments to UInput constructor (i.e. name, vendor etc.). + """ + + device_instances = [] + for dev in devices: + if not isinstance(dev, InputDevice): + dev = InputDevice(str(dev)) + device_instances.append(dev) + + all_capabilities = defaultdict(set) + + if "max_effects" not in kwargs: + kwargs["max_effects"] = min([dev.ff_effects_count for dev in device_instances]) + + # Merge the capabilities of all devices into one dictionary. + for dev in device_instances: + for ev_type, ev_codes in dev.capabilities().items(): + all_capabilities[ev_type].update(ev_codes) + + for evtype in filtered_types: + if evtype in all_capabilities: + del all_capabilities[evtype] + + return cls(events=all_capabilities, **kwargs) + + def __init__( + self, + events: Optional[Dict[int, Sequence[int]]] = None, + name: str = "py-evdev-uinput", + vendor: int = 0x1, + product: int = 0x1, + version: int = 0x1, + bustype: int = 0x3, + devnode: str = "/dev/uinput", + phys: str = "py-evdev-uinput", + input_props=None, + # CentOS 7 has sufficiently old headers that FF_MAX_EFFECTS is not defined there, + # which causes the whole module to fail loading. Fallback on a hardcoded value of + # FF_MAX_EFFECTS if it is not defined in the ecodes. + max_effects=ecodes.ecodes.get("FF_MAX_EFFECTS", 96), + ): + """ + Arguments + --------- + events : dict + Dictionary of event types mapping to lists of event codes. The + event types and codes that the uinput device will be able to + inject - defaults to all key codes. + + name + The name of the input device. + + vendor + Vendor identifier. + + product + Product identifier. + + version + Version identifier. + + bustype + Bustype identifier. + + phys + Physical path. + + input_props + Input properties and quirks. + + max_effects + Maximum simultaneous force-feedback effects. + + Note + ---- + If you do not specify any events, the uinput device will be able + to inject only ``KEY_*`` and ``BTN_*`` event codes. + """ + + self.name: str = name #: Uinput device name. + self.vendor: int = vendor #: Device vendor identifier. + self.product: int = product #: Device product identifier. + self.version: int = version #: Device version identifier. + self.bustype: int = bustype #: Device bustype - e.g. ``BUS_USB``. + self.phys: str = phys #: Uinput device physical path. + self.devnode: str = devnode #: Uinput device node - e.g. ``/dev/uinput/``. + + if not events: + events = {ecodes.EV_KEY: ecodes.keys.keys()} + + self._verify() + + #: Write-only, non-blocking file descriptor to the uinput device node. + self.fd = _uinput.open(devnode) + + # Prepare the list of events for passing to _uinput.enable and _uinput.setup. + absinfo, prepared_events = self._prepare_events(events) + + # Set phys name + _uinput.set_phys(self.fd, phys) + + # Set properties + input_props = input_props or [] + for prop in input_props: + _uinput.set_prop(self.fd, prop) + + for etype, code in prepared_events: + _uinput.enable(self.fd, etype, code) + + _uinput.setup(self.fd, name, vendor, product, version, bustype, absinfo, max_effects) + + # Create the uinput device. + _uinput.create(self.fd) + + self.dll = ctypes.CDLL(_uinput.__file__) + self.dll._uinput_begin_upload.restype = ctypes.c_int + self.dll._uinput_end_upload.restype = ctypes.c_int + + #: An :class:`InputDevice ` instance + #: for the fake input device. ``None`` if the device cannot be + #: opened for reading and writing. + self.device: InputDevice = self._find_device(self.fd) + + def _prepare_events(self, events): + """Prepare events for passing to _uinput.enable and _uinput.setup""" + absinfo, prepared_events = [], [] + for etype, codes in events.items(): + for code in codes: + # Handle max, min, fuzz, flat. + if isinstance(code, (tuple, list, AbsInfo)): + # Flatten (ABS_Y, (0, 255, 0, 0, 0, 0)) to (ABS_Y, 0, 255, 0, 0, 0, 0). + f = [code[0]] + f.extend(code[1]) + # Ensure the tuple is always 6 ints long, since uinput.c:uinput_create + # does little in the way of checking the length. + f.extend([0] * (6 - len(code[1]))) + absinfo.append(f) + code = code[0] + prepared_events.append((etype, code)) + return absinfo, prepared_events + + def __enter__(self): + return self + + def __exit__(self, type, value, tb): + if hasattr(self, "fd"): + self.close() + + def __repr__(self): + # TODO: + v = (repr(getattr(self, i)) for i in ("name", "bustype", "vendor", "product", "version", "phys")) + return "{}({})".format(self.__class__.__name__, ", ".join(v)) + + def __str__(self): + msg = 'name "{}", bus "{}", vendor "{:04x}", product "{:04x}", version "{:04x}", phys "{}"\nevent types: {}' + + evtypes = [i[0] for i in self.capabilities(True).keys()] + msg = msg.format( + self.name, ecodes.BUS[self.bustype], self.vendor, self.product, self.version, self.phys, " ".join(evtypes) + ) + + return msg + + def close(self): + # Close the associated InputDevice, if it was previously opened. + if self.device is not None: + self.device.close() + + # Destroy the uinput device. + if self.fd > -1: + _uinput.close(self.fd) + self.fd = -1 + + def capabilities(self, verbose: bool = False, absinfo: bool = True): + """See :func:`capabilities `.""" + if self.device is None: + raise UInputError("input device not opened - cannot read capabilities") + + return self.device.capabilities(verbose, absinfo) + + def begin_upload(self, effect_id): + upload = ff.UInputUpload() + upload.effect_id = effect_id + + ret = self.dll._uinput_begin_upload(self.fd, ctypes.byref(upload)) + if ret: + raise UInputError("Failed to begin uinput upload: " + os.strerror(ret)) + + return upload + + def end_upload(self, upload): + ret = self.dll._uinput_end_upload(self.fd, ctypes.byref(upload)) + if ret: + raise UInputError("Failed to end uinput upload: " + os.strerror(ret)) + + def begin_erase(self, effect_id): + erase = ff.UInputErase() + erase.effect_id = effect_id + + ret = self.dll._uinput_begin_erase(self.fd, ctypes.byref(erase)) + if ret: + raise UInputError("Failed to begin uinput erase: " + os.strerror(ret)) + return erase + + def end_erase(self, erase): + ret = self.dll._uinput_end_erase(self.fd, ctypes.byref(erase)) + if ret: + raise UInputError("Failed to end uinput erase: " + os.strerror(ret)) + + def _verify(self): + """ + Verify that an uinput device exists and is readable and writable + by the current process. + """ + try: + m = os.stat(self.devnode)[stat.ST_MODE] + assert stat.S_ISCHR(m) + except (IndexError, OSError, AssertionError): + msg = '"{}" does not exist or is not a character device file - verify that the uinput module is loaded' + raise UInputError(msg.format(self.devnode)) + + if not os.access(self.devnode, os.W_OK): + msg = '"{}" cannot be opened for writing' + raise UInputError(msg.format(self.devnode)) + + if len(self.name) > _uinput.maxnamelen: + msg = "uinput device name must not be longer than {} characters" + raise UInputError(msg.format(_uinput.maxnamelen)) + + def _find_device(self, fd: int) -> InputDevice: + """ + Tries to find the device node. Will delegate this task to one of + several platform-specific functions. + """ + if platform.system() == "Linux": + try: + sysname = _uinput.get_sysname(fd) + return self._find_device_linux(sysname) + except OSError: + # UI_GET_SYSNAME returned an error code. We're likely dealing with + # an old kernel. Guess the device based on the filesystem. + pass + + # If we're not running or Linux or the above method fails for any reason, + # use the generic fallback method. + return self._find_device_fallback() + + def _find_device_linux(self, sysname: str) -> InputDevice: + """ + Tries to find the device node when running on Linux. + """ + + syspath = f"/sys/devices/virtual/input/{sysname}" + + # The sysfs entry for event devices should contain exactly one folder + # whose name matches the format "event[0-9]+". It is then assumed that + # the device node in /dev/input uses the same name. + regex = re.compile("event[0-9]+") + for entry in os.listdir(syspath): + if regex.fullmatch(entry): + device_path = f"/dev/input/{entry}" + break + else: # no break + raise FileNotFoundError() + + # It is possible that there is some delay before /dev/input/event* shows + # up on old systems that do not use devtmpfs, so if the device cannot be + # found, wait for a short amount and then try again once. + # + # Furthermore, even if devtmpfs is in use, it is possible that the device + # does show up immediately, but without the correct permissions that + # still need to be set by udev. Wait for up to two seconds for either the + # device to show up or the permissions to be set. + for attempt in range(19): + try: + return InputDevice(device_path) + except (FileNotFoundError, PermissionError): + time.sleep(0.1) + + # Last attempt. If this fails, whatever exception the last attempt raises + # shall be the exception that this function raises. + return InputDevice(device_path) + + def _find_device_fallback(self) -> Union[InputDevice, None]: + """ + Tries to find the device node when UI_GET_SYSNAME is not available or + we're running on a system sufficiently exotic that we do not know how + to interpret its return value. + """ + #:bug: the device node might not be immediately available + time.sleep(0.1) + + # There could also be another device with the same name already present, + # make sure to select the newest one. + # Strictly speaking, we cannot be certain that everything returned by list_devices() + # ends at event[0-9]+: it might return something like "/dev/input/events_all". Find + # the devices that have the expected structure and extract their device number. + path_number_pairs = [] + regex = re.compile("/dev/input/event([0-9]+)") + for path in util.list_devices("/dev/input/"): + regex_match = regex.fullmatch(path) + if not regex_match: + continue + device_number = int(regex_match[1]) + path_number_pairs.append((path, device_number)) + + # The modification date of the devnode is not reliable unfortunately, so we + # are sorting by the number in the name + path_number_pairs.sort(key=lambda pair: pair[1], reverse=True) + + for path, _ in path_number_pairs: + d = InputDevice(path) + if d.name == self.name: + return d diff --git a/myenv/lib/python3.10/site-packages/evdev/util.py b/myenv/lib/python3.10/site-packages/evdev/util.py new file mode 100644 index 0000000..db89a22 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/evdev/util.py @@ -0,0 +1,146 @@ +import collections +import glob +import os +import re +import stat +from typing import Union, List + +from . import ecodes +from .events import InputEvent, event_factory, KeyEvent, RelEvent, AbsEvent, SynEvent + + +def list_devices(input_device_dir: Union[str, bytes, os.PathLike] = "/dev/input") -> List[str]: + """List readable character devices in ``input_device_dir``.""" + + fns = glob.glob("{}/event*".format(input_device_dir)) + return list(filter(is_device, fns)) + + +def is_device(fn: Union[str, bytes, os.PathLike]) -> bool: + """Check if ``fn`` is a readable and writable character device.""" + + if not os.path.exists(fn): + return False + + m = os.stat(fn)[stat.ST_MODE] + if not stat.S_ISCHR(m): + return False + + if not os.access(fn, os.R_OK | os.W_OK): + return False + + return True + + +def categorize(event: InputEvent) -> Union[InputEvent, KeyEvent, RelEvent, AbsEvent, SynEvent]: + """ + Categorize an event according to its type. + + The :data:`event_factory ` dictionary + maps event types to sub-classes of :class:`InputEvent + `. If the event cannot be categorized, it + is returned unmodified.""" + + if event.type in event_factory: + return event_factory[event.type](event) + else: + return event + + +def resolve_ecodes_dict(typecodemap, unknown="?"): + """ + Resolve event codes and types to their verbose names. + + :param typecodemap: mapping of event types to lists of event codes. + :param unknown: symbol to which unknown types or codes will be resolved. + + Example + ------- + >>> resolve_ecodes_dict({ 1: [272, 273, 274] }) + { ('EV_KEY', 1): [('BTN_MOUSE', 272), + ('BTN_RIGHT', 273), + ('BTN_MIDDLE', 274)] } + + If ``typecodemap`` contains absolute axis info (instances of + :class:`AbsInfo ` ) the result would look + like: + + >>> resolve_ecodes_dict({ 3: [(0, AbsInfo(...))] }) + { ('EV_ABS', 3L): [(('ABS_X', 0L), AbsInfo(...))] } + """ + + for etype, codes in typecodemap.items(): + type_name = ecodes.EV[etype] + + # ecodes.keys are a combination of KEY_ and BTN_ codes + if etype == ecodes.EV_KEY: + ecode_dict = ecodes.keys + else: + ecode_dict = getattr(ecodes, type_name.split("_")[-1]) + + resolved = resolve_ecodes(ecode_dict, codes, unknown) + yield (type_name, etype), resolved + + +def resolve_ecodes(ecode_dict, ecode_list, unknown="?"): + """ + Resolve event codes and types to their verbose names. + + Example + ------- + >>> resolve_ecodes(ecodes.BTN, [272, 273, 274]) + [(['BTN_LEFT', 'BTN_MOUSE'], 272), ('BTN_RIGHT', 273), ('BTN_MIDDLE', 274)] + """ + res = [] + for ecode in ecode_list: + # elements with AbsInfo(), eg { 3 : [(0, AbsInfo(...)), (1, AbsInfo(...))] } + if isinstance(ecode, tuple): + if ecode[0] in ecode_dict: + l = ((ecode_dict[ecode[0]], ecode[0]), ecode[1]) + else: + l = ((unknown, ecode[0]), ecode[1]) + + # just ecodes, e.g: { 0 : [0, 1, 3], 1 : [30, 48] } + else: + if ecode in ecode_dict: + l = (ecode_dict[ecode], ecode) + else: + l = (unknown, ecode) + res.append(l) + + return res + + +def find_ecodes_by_regex(regex): + """ + Find ecodes matching a regex and return a mapping of event type to event codes. + + regex can be a pattern string or a compiled regular expression object. + + Example + ------- + >>> find_ecodes_by_regex(r'(ABS|KEY)_BR(AKE|EAK)') + {1: [411], 3: [10]} + >>> res = find_ecodes_by_regex(r'(ABS|KEY)_BR(AKE|EAK)') + >>> resolve_ecodes_dict(res) + { + ('EV_KEY', 1): [('KEY_BREAK', 411)], + ('EV_ABS', 3): [('ABS_BRAKE', 10)] + } + """ + + regex = re.compile(regex) # re.compile is idempotent + result = collections.defaultdict(list) + + for type_code, codes in ecodes.bytype.items(): + for code, names in codes.items(): + names = (names,) if isinstance(names, str) else names + for name in names: + if regex.match(name): + result[type_code].append(code) + break + + return dict(result) + + +__all__ = ("list_devices", "is_device", "categorize", "resolve_ecodes", "resolve_ecodes_dict", "find_ecodes_by_regex") diff --git a/myenv/lib/python3.10/site-packages/mouseinfo/__init__.py b/myenv/lib/python3.10/site-packages/mouseinfo/__init__.py new file mode 100644 index 0000000..5bb0586 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/mouseinfo/__init__.py @@ -0,0 +1,901 @@ +# MouseInfo by Al Sweigart al@inventwithpython.com + +# Note: how to specify where a tkintr window opens: +# https://stackoverflow.com/questions/14910858/how-to-specify-where-a-tkinter-window-opens + +""" +Features we should consider adding: +* Register a global hotkey for copying/logging info. (Should this hotkey be configurable?) + +Features that have been considered and rejected: + +* The Save Log/Save Screenshot buttons should open a file dialog box. +* The Save Log button should append text, instead of overwrite it. +* The log text area should prepopulate itself with the contents of the given filename. +* The button delay should be configurable instead of just set to 3 seconds. +""" + +__version__ = '0.1.3' +import pyperclip, sys, os, platform, webbrowser + +#from enum import Enum +from ctypes import ( + c_bool, c_int32, c_int64, c_size_t, c_uint16, c_uint32, c_void_p, + cdll, util, +) + +# ========================================================================= +# Originally, these functions were pulled in from PyAutoGUI. However, to +# make this module independent of PyAutoGUI, the code for these functions +# has been copy/pasted into the following section: +# NOTE: Any bug fixes for these functions in PyAutoGUI will have to be +# manually merged into MouseInfo. +#from pyautogui import position, screenshot, size +# ========================================================================= +# Alternatively, this code makes this application not dependent on PyAutoGUI +# by copying the code for the position() and screenshot() functions into this +# source code file. +import datetime, subprocess + +try: + from PIL import Image + _PILLOW_INSTALLED = True +except ImportError: + _PILLOW_INSTALLED = False + +if sys.platform == 'win32': + import ctypes + + if _PILLOW_INSTALLED: + from PIL import ImageGrab + + # Makes this process aware of monitor scaling so the screenshots are correctly sized: + try: + ctypes.windll.user32.SetProcessDPIAware() + except AttributeError: + pass # Windows XP doesn't support this, so just do nothing. + + dc = ctypes.windll.user32.GetDC(0) + + class POINT(ctypes.Structure): + _fields_ = [('x', ctypes.c_long), + ('y', ctypes.c_long)] + + def _winPosition(): + cursor = POINT() + ctypes.windll.user32.GetCursorPos(ctypes.byref(cursor)) + return (cursor.x, cursor.y) + position = _winPosition + + + def _winScreenshot(filename=None): + # TODO - Use the winapi to get a screenshot, and compare performance with ImageGrab.grab() + # https://stackoverflow.com/a/3586280/1893164 + try: + im = ImageGrab.grab() + if filename is not None: + im.save(filename) + except NameError: + raise ImportError('Pillow module must be installed to use screenshot functions on Windows.') + return im + screenshot = _winScreenshot + + def _winSize(): + return (ctypes.windll.user32.GetSystemMetrics(0), ctypes.windll.user32.GetSystemMetrics(1)) + size = _winSize + + def _winGetPixel(x, y): + colorRef = ctypes.windll.gdi32.GetPixel(dc, x, y) # A COLORREF value as 0x00bbggrr. See https://docs.microsoft.com/en-us/windows/win32/gdi/colorref + red = colorRef % 256 + colorRef //= 256 + green = colorRef % 256 + colorRef //= 256 + blue = colorRef + + return (red, green, blue) + getPixel = _winGetPixel + + +elif sys.platform == 'darwin': + from rubicon.objc import ObjCClass, CGPoint + from rubicon.objc.types import register_preferred_encoding + + ##################################################################### + + appkit = cdll.LoadLibrary(util.find_library('AppKit')) + + NSEvent = ObjCClass('NSEvent') + NSEvent.declare_class_property('mouseLocation') + # NSSystemDefined = ObjCClass('NSSystemDefined') + + ##################################################################### + + core_graphics = cdll.LoadLibrary(util.find_library('CoreGraphics')) + + CGDirectDisplayID = c_uint32 + + CGEventRef = c_void_p + register_preferred_encoding(b'^{__CGEvent=}', CGEventRef) + + CGEventSourceRef = c_void_p + register_preferred_encoding(b'^{__CGEventSource=}', CGEventSourceRef) + + CGEventTapLocation = c_uint32 + + CGEventType = c_uint32 + + CGEventField = c_uint32 + + CGKeyCode = c_uint16 + + CGMouseButton = c_uint32 + + CGScrollEventUnit = c_uint32 + + # size_t CGDisplayPixelsWide(CGDirectDisplayID display); + core_graphics.CGDisplayPixelsWide.argtypes = [CGDirectDisplayID] + core_graphics.CGDisplayPixelsWide.restype = c_size_t + + # CGEventRef CGEventCreateKeyboardEvent(CGEventSourceRef source, CGKeyCode virtualKey, bool keyDown); + core_graphics.CGEventCreateKeyboardEvent.argtypes = [CGEventSourceRef, CGKeyCode, c_bool] + core_graphics.CGEventCreateKeyboardEvent.restype = CGEventRef + + # CGEventRef CGEventCreateMouseEvent( + # CGEventSourceRef source, CGEventType mouseType, CGPoint mouseCursorPosition, CGMouseButton mouseButton); + core_graphics.CGEventCreateMouseEvent.argtypes = [CGEventSourceRef, CGEventType, CGPoint, CGMouseButton] + core_graphics.CGEventCreateMouseEvent.restype = CGEventRef + + # CGEventRef CGEventCreateScrollWheelEvent( + # CGEventSourceRef source, CGScrollEventUnit units, uint32_t wheelCount, int32_t wheel1, ...); + core_graphics.CGEventCreateScrollWheelEvent.argtypes = [CGEventSourceRef, CGScrollEventUnit, c_uint32, c_int32] + core_graphics.CGEventCreateScrollWheelEvent.restype = CGEventRef + + # void CGEventSetIntegerValueField(CGEventRef event, CGEventField field, int64_t value); + core_graphics.CGEventSetIntegerValueField.argtypes = [CGEventRef, CGEventField, c_int64] + core_graphics.CGEventSetIntegerValueField.restype = None + + # void CGEventSetType(CGEventRef event, CGEventType type); + core_graphics.CGEventSetType.argtype = [CGEventRef, CGEventType] + core_graphics.CGEventSetType.restype = None + + # void CGEventPost(CGEventTapLocation tap, CGEventRef event); + core_graphics.CGEventPost.argtypes = [CGEventTapLocation, CGEventRef] + core_graphics.CGEventPost.restype = None + + # CGDirectDisplayID CGMainDisplayID(void); + core_graphics.CGMainDisplayID.argtypes = [] + core_graphics.CGMainDisplayID.restype = CGDirectDisplayID + + + + def _macPosition(): + loc = NSEvent.mouseLocation + return int(loc.x), int(core_graphics.CGDisplayPixelsHigh(0) - loc.y) + position = _macPosition + + + def _macScreenshot(filename=None): + if filename is not None: + tmpFilename = filename + else: + tmpFilename = 'screenshot%s.png' % (datetime.datetime.now().strftime('%Y-%m%d_%H-%M-%S-%f')) + subprocess.call(['screencapture', '-x', tmpFilename]) + im = Image.open(tmpFilename) + + # force loading before unlinking, Image.open() is lazy + im.load() + + if filename is None: + os.unlink(tmpFilename) + return im + screenshot = _macScreenshot + + def _macSize(): + return ( + core_graphics.CGDisplayPixelsWide(core_graphics.CGMainDisplayID()), + core_graphics.CGDisplayPixelsHigh(core_graphics.CGMainDisplayID()) + ) + size = _macSize + + def _macGetPixel(x, y): + rgbValue = screenshot().getpixel((x, y)) + return rgbValue[0], rgbValue[1], rgbValue[2] + getPixel = _macGetPixel + + +elif platform.system() == 'Linux': + from Xlib.display import Display + import errno + + scrotExists = False + try: + whichProc = subprocess.Popen( + ['which', 'scrot'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + scrotExists = whichProc.wait() == 0 + except OSError as ex: + if ex.errno == errno.ENOENT: + # if there is no "which" program to find scrot, then assume there + # is no scrot. + pass + else: + raise + + _display = Display(os.environ['DISPLAY']) + + def _linuxPosition(): + coord = _display.screen().root.query_pointer()._data + return coord["root_x"], coord["root_y"] + position = _linuxPosition + + def _linuxScreenshot(filename=None): + if not scrotExists: + raise NotImplementedError('"scrot" must be installed to use screenshot functions in Linux. Run: sudo apt-get install scrot') + + if filename is not None: + tmpFilename = filename + else: + tmpFilename = '.screenshot%s.png' % (datetime.datetime.now().strftime('%Y-%m%d_%H-%M-%S-%f')) + + if scrotExists: + subprocess.call(['scrot', '-z', tmpFilename]) + im = Image.open(tmpFilename) + + # force loading before unlinking, Image.open() is lazy + im.load() + + if filename is None: + os.unlink(tmpFilename) + return im + else: + raise Exception('The scrot program must be installed to take a screenshot with PyScreeze on Linux. Run: sudo apt-get install scrot') + screenshot = _linuxScreenshot + + def _linuxSize(): + return _display.screen().width_in_pixels, _display.screen().height_in_pixels + size = _linuxSize + + def _linuxGetPixel(x, y): + rgbValue = screenshot().getpixel((x, y)) + return rgbValue[0], rgbValue[1], rgbValue[2] + getPixel = _linuxGetPixel +# ========================================================================= + +RUNNING_PYTHON_2 = sys.version_info[0] == 2 + +if platform.system() == 'Linux': + if RUNNING_PYTHON_2: + try: + import Tkinter as tkinter + ttk = tkinter + from Tkinter import Event + except ImportError: + sys.exit('NOTE: You must install tkinter on Linux to use MouseInfo. Run the following: sudo apt-get install python-tk python-dev') + else: + # Running Python 3+: + try: + import tkinter + from tkinter import ttk + from tkinter import Event + except ImportError: + sys.exit('NOTE: You must install tkinter on Linux to use MouseInfo. Run the following: sudo apt-get install python3-tk python3-dev') +else: + # Running Windows or macOS: + if RUNNING_PYTHON_2: + import Tkinter as tkinter + ttk = tkinter + from Tkinter import Event + else: + # Running Python 3+: + import tkinter + from tkinter import ttk + from tkinter import Event + +MOUSE_INFO_BUTTON_WIDTH = 16 # A standard width for the buttons in the MouseInfo window. + +class MouseInfoWindow: + def _updateMouseInfoTextFields(self): + # Update the XY and RGB text fields in the MouseInfo window. + + # Get the XY coordinates of the current mouse position: + x, y = position() + self.xyTextboxSV.set('%s,%s' % (x - self.xOrigin, y - self.yOrigin)) + + # MouseInfo currently only works on the primary monitor, and doesn't + # support multi-monitor setups. The color information isn't reliable + # when the mouse is not on the primary monitor, so display an error instead. + width, height = size() + if not _PILLOW_INSTALLED: + self.rgbSV.set('NA_Pillow_unsupported') + elif sys.platform == 'darwin': + # TODO - Until I can get screenshots without the mouse cursor, this feature doesn't work on mac. + self.rgbSV.set('NA_on_macOS') + elif not (0 <= x < width and 0 <= y < height): + self.rgbSV.set('NA_on_multimonitor_setups') + else: + # Get the RGB color value of the pixel currently under the mouse: + # NOTE: On Windows & Linux, Pillow's getpixel() returns a 3-integer tuple, but on macOS it returns a 4-integer tuple. + r, g, b = getPixel(x, y) + self.rgbSV.set('%s,%s,%s' % (r, g, b)) + + if not _PILLOW_INSTALLED: + self.rgbHexSV.set('NA_Pillow_unsupported') + elif sys.platform == 'darwin': + # TODO - Until I can get screenshots without the mouse cursor, this feature doesn't work on mac. + self.rgbHexSV.set('NA_on_macOS') + elif not (0 <= x < width and 0 <= y < height): + self.rgbHexSV.set('NA_on_multimonitor_setups') + else: + # Convert this RGB value into a hex RGB value: + rHex = hex(r)[2:].upper().rjust(2, '0') + gHex = hex(g)[2:].upper().rjust(2, '0') + bHex = hex(b)[2:].upper().rjust(2, '0') + hexColor = '#%s%s%s' % (rHex, gHex, bHex) + self.rgbHexSV.set(hexColor) + + if (not _PILLOW_INSTALLED) or (sys.platform == 'darwin') or (not (0 <= x < width and 0 <= y < height)): + self.colorFrame.configure(background='black') + else: + # Update the color panel: + self.colorFrame.configure(background=hexColor) + + # As long as the self.isRunning variable is True, + # schedule this function to be called again in 100 milliseconds. + # NOTE: Previously this if-else code was at the top of the function + # so that I could avoid the "invalid command name" message that + # was popping up (this didn't work though), but it was also causing + # a weird bug where the text fields weren't populated until I moved + # the tkinter window. I have no idea why that behavior was happening. + # You can reproduce it by moving this if-else code to the top of this + # function. + if self.isRunning: + self._updateMouseInfoJob = self.root.after(100, self._updateMouseInfoTextFields) + else: + return # MouseInfo window has been closed, so return immediately. + + + def _copyText(self, textToCopy): + try: + pyperclip.copy(textToCopy) + self.statusbarSV.set('Copied ' + textToCopy) + except pyperclip.PyperclipException as e: + if platform.system() == 'Linux': + self.statusbarSV.set('Copy failed. Run "sudo apt-get install xsel".') + else: + self.statusbarSV.set('Clipboard error: ' + str(e)) + + + def _copyXyMouseInfo(self, *args): + # Copy the contents of the XY coordinate text field in the MouseInfo + # window to the clipboard. + + if len(args) > 0 and isinstance(args[0], Event): + args = () # When the hotkey is pressed, an Event object is in args. Let's just get rid of it and let the rest of the code run as normal. + + if self.delayEnabledSV.get() == 'on' and len(args) == 0: + # Start countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyXyMouseInfo, 2) + self.xyCopyButtonSV.set('Copy in 3') + elif len(args) == 1 and args[0] == 2: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyXyMouseInfo, 1) + self.xyCopyButtonSV.set('Copy in 2') + elif len(args) == 1 and args[0] == 1: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyXyMouseInfo, 0) + self.xyCopyButtonSV.set('Copy in 1') + else: + # Delay disabled or countdown has finished: + self._copyText(self.xyTextboxSV.get()) + self.xyCopyButtonSV.set('Copy XY') + + + def _copyRgbMouseInfo(self, *args): + # Copy the contents of the RGB color text field in the MouseInfo + # window to the clipboard. + + if len(args) > 0 and isinstance(args[0], Event): + args = () # When the hotkey is pressed, an Event object is in args. Let's just get rid of it and let the rest of the code run as normal. + + if self.delayEnabledSV.get() == 'on' and len(args) == 0: + # Start countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyRgbMouseInfo, 2) + self.rgbCopyButtonSV.set('Copy in 3') + elif len(args) == 1 and args[0] == 2: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyRgbMouseInfo, 1) + self.rgbCopyButtonSV.set('Copy in 2') + elif len(args) == 1 and args[0] == 1: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyRgbMouseInfo, 0) + self.rgbCopyButtonSV.set('Copy in 1') + else: + # Delay disabled or countdown has finished: + self._copyText(self.rgbSV.get()) + self.rgbCopyButtonSV.set('Copy RGB') + + + def _copyRgbHexMouseInfo(self, *args): + # Copy the contents of the RGB hex color text field in the MouseInfo + # window to the clipboard. + + if len(args) > 0 and isinstance(args[0], Event): + args = () # When the hotkey is pressed, an Event object is in args. Let's just get rid of it and let the rest of the code run as normal. + + if self.delayEnabledSV.get() == 'on' and len(args) == 0: + # Start countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyRgbHexMouseInfo, 2) + self.rgbHexCopyButtonSV.set('Copy in 3') + elif len(args) == 1 and args[0] == 2: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyRgbHexMouseInfo, 1) + self.rgbHexCopyButtonSV.set('Copy in 2') + elif len(args) == 1 and args[0] == 1: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyRgbHexMouseInfo, 0) + self.rgbHexCopyButtonSV.set('Copy in 1') + else: + # Delay disabled or countdown has finished: + self._copyText(self.rgbHexSV.get()) + self.rgbHexCopyButtonSV.set('Copy RGB Hex') + + + def _copyAllMouseInfo(self, *args): + # Copy the contents of the XY coordinate and RGB color text fields in the + # MouseInfo window to the log text field. + textFieldContents = '%s %s %s' % (self.xyTextboxSV.get(), + self.rgbSV.get(), + self.rgbHexSV.get()) + #self._copyText(textFieldContents) + + if len(args) > 0 and isinstance(args[0], Event): + args = () # When the hotkey is pressed, an Event object is in args. Let's just get rid of it and let the rest of the code run as normal. + + if self.delayEnabledSV.get() == 'on' and len(args) == 0: + # Start countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyAllMouseInfo, 2) + self.allCopyButtonSV.set('Copy in 3') + elif len(args) == 1 and args[0] == 2: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyAllMouseInfo, 1) + self.allCopyButtonSV.set('Copy in 2') + elif len(args) == 1 and args[0] == 1: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._copyAllMouseInfo, 0) + self.allCopyButtonSV.set('Copy in 1') + else: + # Delay disabled or countdown has finished: + textFieldContents = '%s %s %s' % (self.xyTextboxSV.get(), + self.rgbSV.get(), + self.rgbHexSV.get()) + self._copyText(textFieldContents) + self.allCopyButtonSV.set('Copy All') + + + def _logXyMouseInfo(self, *args): + # Log the contents of the XY coordinate text field in the MouseInfo + # window to the log text field. + + if len(args) > 0 and isinstance(args[0], Event): + args = () # When the hotkey is pressed, an Event object is in args. Let's just get rid of it and let the rest of the code run as normal. + + if self.delayEnabledSV.get() == 'on' and len(args) == 0: + # Start countdown by having after() call this function in 1 second: + self.root.after(1000, self._logXyMouseInfo, 2) + self.xyLogButtonSV.set('Log in 3') + elif len(args) == 1 and args[0] == 2: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._logXyMouseInfo, 1) + self.xyLogButtonSV.set('Log in 2') + elif len(args) == 1 and args[0] == 1: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._logXyMouseInfo, 0) + self.xyLogButtonSV.set('Log in 1') + else: + # Delay disabled or countdown has finished: + logContents = self.logTextarea.get('1.0', 'end-1c') + '%s\n' % (self.xyTextboxSV.get()) # 'end-1c' doesn't include the final newline + self.logTextboxSV.set(logContents) + self._setLogTextAreaContents(logContents) + self.statusbarSV.set('Logged ' + self.xyTextboxSV.get()) + self.xyLogButtonSV.set('Log XY') + + + def _logRgbMouseInfo(self, *args): + # Log the contents of the RGB color text field in the MouseInfo + # window to the log text field. + + if len(args) > 0 and isinstance(args[0], Event): + args = () # When the hotkey is pressed, an Event object is in args. Let's just get rid of it and let the rest of the code run as normal. + + if self.delayEnabledSV.get() == 'on' and len(args) == 0: + # Start countdown by having after() call this function in 1 second: + self.root.after(1000, self._logRgbMouseInfo, 2) + self.rgbLogButtonSV.set('Log in 3') + elif len(args) == 1 and args[0] == 2: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._logRgbMouseInfo, 1) + self.rgbLogButtonSV.set('Log in 2') + elif len(args) == 1 and args[0] == 1: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._logRgbMouseInfo, 0) + self.rgbLogButtonSV.set('Log in 1') + else: + # Delay disabled or countdown has finished: + logContents = self.logTextarea.get('1.0', 'end-1c') + '%s\n' % (self.rgbSV.get()) # 'end-1c' doesn't include the final newline + self.logTextboxSV.set(logContents) + self._setLogTextAreaContents(logContents) + self.statusbarSV.set('Logged ' + self.rgbSV.get()) + self.rgbLogButtonSV.set('Log RGB') + + + def _logRgbHexMouseInfo(self, *args): + # Log the contents of the RGB hex color text field in the MouseInfo + # window to the log text field. + + if len(args) > 0 and isinstance(args[0], Event): + args = () # When the hotkey is pressed, an Event object is in args. Let's just get rid of it and let the rest of the code run as normal. + + if self.delayEnabledSV.get() == 'on' and len(args) == 0: + # Start countdown by having after() call this function in 1 second: + self.root.after(1000, self._logRgbHexMouseInfo, 2) + self.rgbHexLogButtonSV.set('Log in 3') + elif len(args) == 1 and args[0] == 2: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._logRgbHexMouseInfo, 1) + self.rgbHexLogButtonSV.set('Log in 2') + elif len(args) == 1 and args[0] == 1: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._logRgbHexMouseInfo, 0) + self.rgbHexLogButtonSV.set('Log in 1') + else: + # Delay disabled or countdown has finished: + logContents = self.logTextarea.get('1.0', 'end-1c') + '%s\n' % (self.rgbHexSV.get()) # 'end-1c' doesn't include the final newline + self.logTextboxSV.set(logContents) + self._setLogTextAreaContents(logContents) + self.statusbarSV.set('Logged ' + self.rgbHexSV.get()) + self.rgbHexLogButtonSV.set('Log RGB Hex') + + + def _logAllMouseInfo(self, *args): + # Log the contents of the XY coordinate and RGB color text fields in the + # MouseInfo window to the log text field. + + if len(args) > 0 and isinstance(args[0], Event): + args = () # When the hotkey is pressed, an Event object is in args. Let's just get rid of it and let the rest of the code run as normal. + + if self.delayEnabledSV.get() == 'on' and len(args) == 0: + # Start countdown by having after() call this function in 1 second: + self.root.after(1000, self._logAllMouseInfo, 2) + self.allLogButtonSV.set('Log in 3') + elif len(args) == 1 and args[0] == 2: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._logAllMouseInfo, 1) + self.allLogButtonSV.set('Log in 2') + elif len(args) == 1 and args[0] == 1: + # Continue countdown by having after() call this function in 1 second: + self.root.after(1000, self._logAllMouseInfo, 0) + self.allLogButtonSV.set('Log in 1') + else: + # Delay disabled or countdown has finished: + textFieldContents = '%s %s %s' % (self.xyTextboxSV.get(), + self.rgbSV.get(), + self.rgbHexSV.get()) + logContents = self.logTextarea.get('1.0', 'end-1c') + '%s\n' % (textFieldContents) # 'end-1c' doesn't include the final newline + self.logTextboxSV.set(logContents) + self._setLogTextAreaContents(logContents) + self.statusbarSV.set('Logged ' + textFieldContents) + self.allLogButtonSV.set('Log All') + + def _xyOriginChanged(self, sv): + contents = sv.get() + if len(contents.split(',')) != 2: + return # Do nothing if the text is invalid + x, y = contents.split(',') + x = x.strip() + y = y.strip() + if not x.isdecimal() or not y.isdecimal(): + return # Do nothing. + self.xOrigin = int(x) + self.yOrigin = int(y) + self.statusbarSV.set('Set XY Origin to ' + str(self.xOrigin) + ', ' + str(self.yOrigin)) + + def _setLogTextAreaContents(self, logContents): + if RUNNING_PYTHON_2: + self.logTextarea.delete('1.0', tkinter.END) + self.logTextarea.insert(tkinter.END, logContents) + else: + self.logTextarea.replace('1.0', tkinter.END, logContents) + + # Scroll to the bottom of the text area: + topOfTextArea, bottomOfTextArea = self.logTextarea.yview() + self.logTextarea.yview_moveto(bottomOfTextArea) + + + def _saveLogFile(self, *args): + # Save the current contents of the log file text field. Automatically + # overwrites the file if it exists. Displays an error message in the + # status bar if there is a problem. + try: + with open(self.logFilenameSV.get(), 'w') as fo: + fo.write(self.logTextboxSV.get()) + except Exception as e: + self.statusbarSV.set('ERROR: ' + str(e)) + else: + self.statusbarSV.set('Log file saved to ' + self.logFilenameSV.get()) + + + def _saveScreenshotFile(self, *args): + # Saves a screenshot. Automatically overwrites the file if it exists. + # Displays an error message in the status bar if there is a problem. + + if not _PILLOW_INSTALLED: + self.statusbarSV.set('ERROR: NA_Pillow_unsupported') + return + + try: + screenshot(self.screenshotFilenameSV.get()) + except Exception as e: + self.statusbarSV.set('ERROR: ' + str(e)) + else: + self.statusbarSV.set('Screenshot file saved to ' + self.screenshotFilenameSV.get()) + + + def __init__(self): + """Launches the MouseInfo window, which displays XY coordinate and RGB + color information for the mouse's current position.""" + + self.isRunning = True # While True, the text fields will update. + + # Create the MouseInfo window: + self.root = tkinter.Tk() + self.root.title('MouseInfo ' + __version__) + self.root.minsize(400, 100) + + # Create the main frame in the MouseInfo window: + if RUNNING_PYTHON_2: + mainframe = tkinter.Frame(self.root) + else: + mainframe = ttk.Frame(self.root, padding='3 3 12 12') + + # Set up the grid for the MouseInfo window's widgets: + mainframe.grid(column=0, row=0, sticky=(tkinter.N, tkinter.W, tkinter.E, tkinter.S)) + mainframe.columnconfigure(0, weight=1) + mainframe.rowconfigure(0, weight=1) + + # WIDGETS ON ROW 1: + CUR_ROW = 1 # I'm using a variable because it's easier to make changes to the source code this way. + + # Set up the instructional text label: + #ttk.Label(mainframe, text='Tab over the buttons and press Enter to\n"click" them as you move the mouse around.').grid(column=1, row=1, columnspan=2, sticky=tkinter.W) + self.delayEnabledSV = tkinter.StringVar() + self.delayEnabledSV.set('on') + delayCheckbox = ttk.Checkbutton(mainframe, text='3 Sec. Button Delay', variable=self.delayEnabledSV, onvalue='on', offvalue='off') + delayCheckbox.grid(column=1, row=CUR_ROW, columnspan=2, sticky=tkinter.W) + + # Set up the button to copy the XY coordinates to the clipboard: + self.allCopyButtonSV = tkinter.StringVar() + self.allCopyButtonSV.set('Copy All (F1)') + self.allCopyButton = ttk.Button(mainframe, textvariable=self.allCopyButtonSV, width=MOUSE_INFO_BUTTON_WIDTH, command=self._copyAllMouseInfo) + self.allCopyButton.grid(column=3, row=CUR_ROW, sticky=tkinter.W) + self.allCopyButton.bind('', self._copyAllMouseInfo) + + # Set up the button to copy the XY coordinates to the clipboard: + self.allLogButtonSV = tkinter.StringVar() + self.allLogButtonSV.set('Log All (F5)') + self.allLogButton = ttk.Button(mainframe, textvariable=self.allLogButtonSV, width=MOUSE_INFO_BUTTON_WIDTH, command=self._logAllMouseInfo) + self.allLogButton.grid(column=4, row=CUR_ROW, sticky=tkinter.W) + self.allLogButton.bind('', self._logAllMouseInfo) + + # Set up the variables for the content of the MouseInfo window's text fields: + self.xyTextboxSV = tkinter.StringVar() # The str contents of the xy text field. + self.rgbSV = tkinter.StringVar() # The str contents of the rgb text field. + self.rgbHexSV = tkinter.StringVar() # The str contents of the rgb hex text field. + self.xyOriginSV = tkinter.StringVar() # The str contents of the xy origin field. + self.logTextboxSV = tkinter.StringVar() # The str contents of the log text area. + self.logFilenameSV = tkinter.StringVar() # The str contents of the log filename text field. + self.screenshotFilenameSV = tkinter.StringVar() # The str contents of the screenshot filename text field. + self.statusbarSV = tkinter.StringVar() # The str contents of the status bar at the bottom of the window. + + # WIDGETS ON ROW 3: + CUR_ROW += 1 + + # Set up the XY coordinate text field and label: + self.xyInfoTextbox = ttk.Entry(mainframe, width=16, textvariable=self.xyTextboxSV) + self.xyInfoTextbox.grid(column=2, row=CUR_ROW, sticky=(tkinter.W, tkinter.E)) + ttk.Label(mainframe, text='XY Position').grid(column=1, row=CUR_ROW, sticky=tkinter.W) + + # Set up the button to copy the XY coordinates to the clipboard: + self.xyCopyButtonSV = tkinter.StringVar() + self.xyCopyButtonSV.set('Copy XY (F2)') + self.xyCopyButton = ttk.Button(mainframe, textvariable=self.xyCopyButtonSV, width=MOUSE_INFO_BUTTON_WIDTH, command=self._copyXyMouseInfo) + self.xyCopyButton.grid(column=3, row=CUR_ROW, sticky=tkinter.W) + self.xyCopyButton.bind('', self._copyXyMouseInfo) + + # Set up the button to log the XY coordinates: + self.xyLogButtonSV = tkinter.StringVar() + self.xyLogButtonSV.set('Log XY (F6)') + self.xyLogButton = ttk.Button(mainframe, textvariable=self.xyLogButtonSV, width=MOUSE_INFO_BUTTON_WIDTH, command=self._logXyMouseInfo) + self.xyLogButton.grid(column=4, row=CUR_ROW, sticky=tkinter.W) + self.xyLogButton.bind('', self._logXyMouseInfo) + + # WIDGETS ON ROW 4: + CUR_ROW += 1 + + # Set up the RGB color text field and label: + self.rgbSV_entry = ttk.Entry(mainframe, width=16, textvariable=self.rgbSV) + self.rgbSV_entry.grid(column=2, row=CUR_ROW, sticky=(tkinter.W, tkinter.E)) + ttk.Label(mainframe, text='RGB Color').grid(column=1, row=CUR_ROW, sticky=tkinter.W) + + # Set up the button to copy the RGB color to the clipboard: + self.rgbCopyButtonSV = tkinter.StringVar() + self.rgbCopyButtonSV.set('Copy RGB (F3)') + self.rgbCopyButton = ttk.Button(mainframe, textvariable=self.rgbCopyButtonSV, width=MOUSE_INFO_BUTTON_WIDTH, command=self._copyRgbMouseInfo) + self.rgbCopyButton.grid(column=3, row=CUR_ROW, sticky=tkinter.W) + self.rgbCopyButton.bind('', self._copyRgbMouseInfo) + + # Set up the button to log the XY coordinates: + self.rgbLogButtonSV = tkinter.StringVar() + self.rgbLogButtonSV.set('Log RGB (F7)') + self.rgbLogButton = ttk.Button(mainframe, textvariable=self.rgbLogButtonSV, width=MOUSE_INFO_BUTTON_WIDTH, command=self._logRgbMouseInfo) + self.rgbLogButton.grid(column=4, row=CUR_ROW, sticky=tkinter.W) + self.rgbLogButton.bind('', self._logRgbMouseInfo) + + # WIDGETS ON ROW 5: + CUR_ROW += 1 + + # Set up the RGB hex color text field and label: + self.rgbHexSV_entry = ttk.Entry(mainframe, width=16, textvariable=self.rgbHexSV) + self.rgbHexSV_entry.grid(column=2, row=CUR_ROW, sticky=(tkinter.W, tkinter.E)) + ttk.Label(mainframe, text='RGB as Hex').grid(column=1, row=CUR_ROW, sticky=tkinter.W) + + # Set up the button to copy the RGB hex color to the clipboard: + self.rgbHexCopyButtonSV = tkinter.StringVar() + self.rgbHexCopyButtonSV.set('Copy RGB Hex (F4)') + self.rgbHexCopyButton = ttk.Button(mainframe, textvariable=self.rgbHexCopyButtonSV, width=MOUSE_INFO_BUTTON_WIDTH, command=self._copyRgbHexMouseInfo) + self.rgbHexCopyButton.grid(column=3, row=CUR_ROW, sticky=tkinter.W) + self.rgbHexCopyButton.bind('', self._copyRgbHexMouseInfo) + + # Set up the button to log the XY coordinates: + self.rgbHexLogButtonSV = tkinter.StringVar() + self.rgbHexLogButtonSV.set('Log RGB Hex (F8)') + self.rgbHexLogButton = ttk.Button(mainframe, textvariable=self.rgbHexLogButtonSV, width=MOUSE_INFO_BUTTON_WIDTH, command=self._logRgbHexMouseInfo) + self.rgbHexLogButton.grid(column=4, row=CUR_ROW, sticky=tkinter.W) + self.rgbHexLogButton.bind('', self._logRgbHexMouseInfo) + + # WIDGETS ON ROW 6: + CUR_ROW += 1 + + # Set up the frame that displays the color of the pixel currently under the mouse cursor: + self.colorFrame = tkinter.Frame(mainframe, width=50, height=50) + self.colorFrame.grid(column=2, row=CUR_ROW, sticky=(tkinter.W, tkinter.E)) + ttk.Label(mainframe, text='Color').grid(column=1, row=CUR_ROW, sticky=tkinter.W) + + # WIDGETS ON ROW 7: + CUR_ROW += 1 + + # Set up the XY origin text field and label: + self.xOrigin = 0 + self.yOrigin = 0 + self.xyOriginSV.set('0, 0') + ttk.Label(mainframe, text='XY Origin').grid(column=1, row=CUR_ROW, sticky=tkinter.W) + self.xyOriginSV.trace("w", lambda name, index, mode, sv=self.xyOriginSV: self._xyOriginChanged(sv)) + self.xyOriginSV_entry = ttk.Entry(mainframe, width=16, textvariable=self.xyOriginSV) + self.xyOriginSV_entry.grid(column=2, row=CUR_ROW, sticky=(tkinter.W, tkinter.E)) + + # WIDGETS ON ROW 8: + CUR_ROW += 1 + + # Set up the multiline text widget where the log info appears: + self.logTextarea = tkinter.Text(mainframe, width=20, height=6) + self.logTextarea.grid(column=1, row=CUR_ROW, columnspan=4, sticky=(tkinter.W, tkinter.E, tkinter.N, tkinter.S)) + self.logTextareaScrollbar = ttk.Scrollbar(mainframe, orient=tkinter.VERTICAL, command=self.logTextarea.yview) + self.logTextareaScrollbar.grid(column=5, row=CUR_ROW, sticky=(tkinter.N, tkinter.S)) + self.logTextarea['yscrollcommand'] = self.logTextareaScrollbar.set + + # WIDGETS ON ROW 9: + CUR_ROW += 1 + + self.logFilenameTextbox = ttk.Entry(mainframe, width=16, textvariable=self.logFilenameSV) + self.logFilenameTextbox.grid(column=1, row=CUR_ROW, columnspan=3, sticky=(tkinter.W, tkinter.E)) + self.saveLogButton = ttk.Button(mainframe, text='Save Log', width=MOUSE_INFO_BUTTON_WIDTH, command=self._saveLogFile) + self.saveLogButton.grid(column=4, row=CUR_ROW, sticky=tkinter.W) + self.saveLogButton.bind('', self._saveLogFile) + self.logFilenameSV.set(os.path.join(os.getcwd(), 'mouseInfoLog.txt')) + + # WIDGETS ON ROW 10: + CUR_ROW += 1 + + G_MOUSE_INFO_SCREENSHOT_FILENAME_entry = ttk.Entry(mainframe, width=16, textvariable=self.screenshotFilenameSV) + G_MOUSE_INFO_SCREENSHOT_FILENAME_entry.grid(column=1, row=CUR_ROW, columnspan=3, sticky=(tkinter.W, tkinter.E)) + self.saveScreenshotButton = ttk.Button(mainframe, text='Save Screenshot', width=MOUSE_INFO_BUTTON_WIDTH, command=self._saveScreenshotFile) + self.saveScreenshotButton.grid(column=4, row=CUR_ROW, sticky=tkinter.W) + self.saveScreenshotButton.bind('', self._saveScreenshotFile) + self.screenshotFilenameSV.set(os.path.join(os.getcwd(), 'mouseInfoScreenshot.png')) + + # WIDGETS ON ROW 11: + CUR_ROW += 1 + + statusbar = ttk.Label(mainframe, relief=tkinter.SUNKEN, textvariable=self.statusbarSV) + statusbar.grid(column=1, row=CUR_ROW, columnspan=5, sticky=(tkinter.W, tkinter.E)) + + # Add padding to all of the widgets: + for child in mainframe.winfo_children(): + # Ensure the scrollbar and text area don't have padding in between them: + if child == self.logTextareaScrollbar: + child.grid_configure(padx=0, pady=3) + elif child == self.logTextarea: + child.grid_configure(padx=(3, 0), pady=3) + elif child == statusbar: + child.grid_configure(padx=0, pady=(3, 0)) + else: + # All other widgets have a standard padding of 3: + child.grid_configure(padx=3, pady=3) + + # Add keyboard hotkeys for the Copy/Log buttons: + self.root.option_add('*tearOff', tkinter.FALSE) # Disable tkinter's ugly tear-off menus which are enabled by default. + + menu = tkinter.Menu(self.root) + self.root.config(menu=menu) + + copyMenu = tkinter.Menu(menu) + copyMenu.add_command(label='Copy All', command=self._copyAllMouseInfo, accelerator='F1', underline=5) + copyMenu.add_command(label='Copy XY', command=self._copyXyMouseInfo, accelerator='F2', underline=5) + copyMenu.add_command(label='Copy RGB', command=self._copyRgbMouseInfo, accelerator='F3', underline=5) + copyMenu.add_command(label='Copy RGB as Hex', command=self._copyRgbHexMouseInfo, accelerator='F4', underline=12) + menu.add_cascade(label='Copy', menu=copyMenu, underline=0) + + logMenu = tkinter.Menu(menu) + logMenu.add_command(label='Log All', command=self._logAllMouseInfo, accelerator='F5', underline=4) + logMenu.add_command(label='Log XY', command=self._logXyMouseInfo, accelerator='F6', underline=4) + logMenu.add_command(label='Log RGB', command=self._logRgbMouseInfo, accelerator='F7', underline=4) + logMenu.add_command(label='Log RGB as Hex', command=self._logRgbHexMouseInfo, accelerator='F8', underline=11) + menu.add_cascade(label='Log', menu=logMenu, underline=0) + + helpMenu = tkinter.Menu(menu) + helpMenu.add_command(label='Online Documentation', command=lambda: webbrowser.open('https://mouseinfo.readthedocs.io'), underline=6) + menu.add_cascade(label='Help', menu=helpMenu, underline=0) + + self.root.bind_all('', self._copyAllMouseInfo) + self.root.bind_all('', self._copyXyMouseInfo) + self.root.bind_all('', self._copyRgbMouseInfo) + self.root.bind_all('', self._copyRgbHexMouseInfo) + self.root.bind_all('', self._logAllMouseInfo) + self.root.bind_all('', self._logXyMouseInfo) + self.root.bind_all('', self._logRgbMouseInfo) + self.root.bind_all('', self._logRgbHexMouseInfo) + + + self.root.resizable(False, False) # Prevent the window from being resized. + + self.xyInfoTextbox.focus() # Put the focus on the XY coordinate text field to start. + + self._updateMouseInfoJob = self.root.after(100, self._updateMouseInfoTextFields) # Begin updating the text fields. + + # Make the mouse info window "always on top". + self.root.attributes('-topmost', True) + self.root.update() + + # Start the application: + self.root.mainloop() + + # Application has closed, set isRunning to False and cancel any "after" commands already queued: + self.root.after_cancel(self._updateMouseInfoJob) + self.isRunning = False + + # Destroy the tkinter root widget: + try: + self.root.destroy() + except tkinter.TclError: + pass + +def mouseInfo(): + """ + Launch the MouseInfo application in a new window. + + This exists as a shortcut instead of running MouseInfoWindow() because + PyAutoGUI (which imports mouseinfo) is set up with a simple mouseInfo() + function and I'd like to keep this consistent with that. + """ + MouseInfoWindow() + +if __name__ == '__main__': + MouseInfoWindow() diff --git a/myenv/lib/python3.10/site-packages/mouseinfo/__main__.py b/myenv/lib/python3.10/site-packages/mouseinfo/__main__.py new file mode 100644 index 0000000..a882b7d --- /dev/null +++ b/myenv/lib/python3.10/site-packages/mouseinfo/__main__.py @@ -0,0 +1,4 @@ +import mouseinfo + +if __name__ == '__main__': + mouseinfo.MouseInfoWindow() diff --git a/myenv/lib/python3.10/site-packages/mouseinfo/__pycache__/__init__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/mouseinfo/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aa3a0afa7ba8040548033c40e107486bd49eedad GIT binary patch literal 19224 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/mouseinfo/__pycache__/__main__.cpython-310.pyc b/myenv/lib/python3.10/site-packages/mouseinfo/__pycache__/__main__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e13521fad16ee34b97e6342a653d9043df7192d2 GIT binary patch literal 298 zcmYjLu}Z{16x`&lSjE#{u)V@t#a6_^#zH|Xgn&FY?lTF=?pt;@cLe+f|3J{vU%J-H zU$D`aL&bra#|&>^Xg1pxjHk!vyKBDhqxp}V%^5T9vlwBrP80$&lec-;Me&lqij32n z4d;^&{t{Pf31D^O0Opfo%Tgb)aSt@cPFn;h_AbZpg2UU!8Ct!GFy-b(J_l8kMP=&H zFV#85Hj!6;NHsa|w88*opAs7=bwmRY`j`y=L87YaFep2qTdJ-pe`?2zqeB&&ga=;V ix4Ocp{#L2qtqVV_<%uQJcX*odnkZSMkoitF{rU!UwpOnI literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/INSTALLER b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/METADATA b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/METADATA new file mode 100644 index 0000000..ea8c3fd --- /dev/null +++ b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/METADATA @@ -0,0 +1,177 @@ +Metadata-Version: 2.4 +Name: pillow +Version: 11.3.0 +Summary: Python Imaging Library (Fork) +Author-email: "Jeffrey A. Clark" +License-Expression: MIT-CMU +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.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 +Keywords: Imaging +Classifier: Development Status :: 6 - Mature +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Multimedia :: Graphics +Classifier: Topic :: Multimedia :: Graphics :: Capture :: Digital Camera +Classifier: Topic :: Multimedia :: Graphics :: Capture :: Screen Capture +Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion +Classifier: Topic :: Multimedia :: Graphics :: Viewers +Classifier: Typing :: Typed +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.2; extra == "docs" +Requires-Dist: sphinx-autobuild; 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" +Provides-Extra: mic +Requires-Dist: olefile; extra == "mic" +Provides-Extra: test-arrow +Requires-Dist: pyarrow; extra == "test-arrow" +Provides-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: pytest-xdist; 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" +Provides-Extra: xmp +Requires-Dist: defusedxml; extra == "xmp" +Dynamic: license-file + +

+ Pillow logo +

+ +# Pillow + +## Python Imaging Library (Fork) + +Pillow is the friendly PIL fork by [Jeffrey A. Clark and +contributors](https://github.com/python-pillow/Pillow/graphs/contributors). +PIL is the Python Imaging Library by Fredrik Lundh and contributors. +As of 2019, Pillow development is +[supported by Tidelift](https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=readme&utm_campaign=enterprise). + + + + + + + + + + + + + + + + + + +
docs + Documentation Status +
tests + GitHub Actions build status (Lint) + GitHub Actions build status (Test Linux and macOS) + GitHub Actions build status (Test Windows) + GitHub Actions build status (Test MinGW) + GitHub Actions build status (Test Cygwin) + GitHub Actions build status (Test Docker) + GitHub Actions build status (Wheels) + Code coverage + Fuzzing Status +
package + Zenodo + Tidelift + Newest PyPI version + Number of PyPI downloads + OpenSSF Best Practices +
social + Join the chat at https://gitter.im/python-pillow/Pillow + Follow on https://fosstodon.org/@pillow +
+ +## Overview + +The Python Imaging Library adds image processing capabilities to your Python interpreter. + +This library provides extensive file format support, an efficient internal representation, and fairly powerful image processing capabilities. + +The core image library is designed for fast access to data stored in a few basic pixel formats. It should provide a solid foundation for a general image processing tool. + +## More information + +- [Documentation](https://pillow.readthedocs.io/) + - [Installation](https://pillow.readthedocs.io/en/latest/installation/basic-installation.html) + - [Handbook](https://pillow.readthedocs.io/en/latest/handbook/index.html) +- [Contribute](https://github.com/python-pillow/Pillow/blob/main/.github/CONTRIBUTING.md) + - [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/releases) + - [Pre-fork](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst#pre-fork) + +## Report a vulnerability + +To report a security vulnerability, please follow the procedure described in the [Tidelift security policy](https://tidelift.com/docs/security). diff --git a/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/RECORD b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/RECORD new file mode 100644 index 0000000..c4281a2 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/RECORD @@ -0,0 +1,233 @@ +PIL/AvifImagePlugin.py,sha256=5IiDMvMZQXLnS3t25XJjlwgNWmeVSNaGfReWAp-V5lo,8994 +PIL/BdfFontFile.py,sha256=PhlZfIRmEfmorbhZZeSM5eebGo1Ei7fL-lR9XlfTZZA,3285 +PIL/BlpImagePlugin.py,sha256=Ub4vVKBEniiNBEgNizxScEpO1VKbC1w6iecWUU7T-Vs,16533 +PIL/BmpImagePlugin.py,sha256=-SNdj2godmaKYAc08dEng6z3mRPbYYHezjveIR5e-tU,19855 +PIL/BufrStubImagePlugin.py,sha256=JSqDhkPNPnFw0Qcz-gQJl-D_iSCFdtcLvPynshKJ4WM,1730 +PIL/ContainerIO.py,sha256=wkBqL2GDAb5fh3wrtfTGUfqioJipCl-lg2GxbjQrTZw,4604 +PIL/CurImagePlugin.py,sha256=bICiwXZrzSONWBu4bKtshxZSNFj8su0lbDojYntEUYs,1797 +PIL/DcxImagePlugin.py,sha256=DhqsmW7MjmnUSTGZ-Skv9hz1XeX3XoQQoAl9GWLAEEY,2145 +PIL/DdsImagePlugin.py,sha256=fjdfZK_eQtUp_-bjoRmt-5wgOT5GTmvg6aI-itch4mo,18906 +PIL/EpsImagePlugin.py,sha256=ROWwCv08bC_B41eMf2AFe8UW6ZH4_XQ18x12KB_aQLM,16389 +PIL/ExifTags.py,sha256=zW6kVikCosiyoCo7J7R62evD3hoxjKPchnVh8po7CZc,9931 +PIL/FitsImagePlugin.py,sha256=-oDJnAH113CK5qPvwz9lL81fkV1gla_tNfqLcq8zKgo,4644 +PIL/FliImagePlugin.py,sha256=DaWuH8f-9GihS0VVZqF1bT3uDv1Vb0VBl0chnNd82Ow,4786 +PIL/FontFile.py,sha256=St7MxO5Q-oakCLWn3ZrgrtaT3wSsmAarxm8AU-G8Moc,3577 +PIL/FpxImagePlugin.py,sha256=aXfg0YdvNeJhxqh-f-f22D1NobQ8tSVCj-tpLE2PKfE,7293 +PIL/FtexImagePlugin.py,sha256=v2I5YkdfNA3iW35JzKnWry9v6Rgvr0oezGVOuArREac,3535 +PIL/GbrImagePlugin.py,sha256=5t0UfLubTPQcuDDbafwC78OLR7IsD5hjpvhUZ5g8z4A,3006 +PIL/GdImageFile.py,sha256=LP4Uxv3Y2ivGZIyOVuGJarDDVS7zK6F1Q6SNl4wyGuQ,2788 +PIL/GifImagePlugin.py,sha256=SkXboZwxTolq0uteXYX0ncrZiUxyASywqAurOcVAi3U,42201 +PIL/GimpGradientFile.py,sha256=Z_4TUYMdPyUsiP40KSIpMJ5yLGMnBaIKOAkHyiQGEWE,3906 +PIL/GimpPaletteFile.py,sha256=YHEhKThsEVlXVjFQUnGvhDgNsJcfFqUAN0O0ucG9G-Q,1815 +PIL/GribStubImagePlugin.py,sha256=degHg344X3JXL8u-x8NWn08BsmM9wRh-Jg08HHrvfOc,1738 +PIL/Hdf5StubImagePlugin.py,sha256=OuEQijGqVwTTSG4dB2vAyQzmN-NYT22tiuZHFH0Q0Sw,1741 +PIL/IcnsImagePlugin.py,sha256=qvi-OP0g8CRlNlJE--5_rPlfyxLFLlSOil66Fw4TMwU,12949 +PIL/IcoImagePlugin.py,sha256=QCo29Toh08UX8vEcdCAaIeuidSolbPiZlCnQ4rUu2SQ,12491 +PIL/ImImagePlugin.py,sha256=wo5OL2PAcQW2MwRkJnS-N16toZzXWL95jx9FBM7l9ok,11567 +PIL/Image.py,sha256=95Jefi2QFIfZYOyfHNBRTwBtwrnNZsn5oCsLQsBLdK8,148332 +PIL/ImageChops.py,sha256=GEjlymcoDtA5OOeIxQVIX96BD-s6AXhb7TmSLYn2tUg,7946 +PIL/ImageCms.py,sha256=A5ZVaTjjxR6AeDNNvK-hmu0QqKOMTscou6BUBTLob0g,41934 +PIL/ImageColor.py,sha256=IGA9C2umeED_EzS2Cvj6KsU0VutC9RstWIYPe8uDsVk,9441 +PIL/ImageDraw.py,sha256=Enr0ctBHKBnSHVBDlqcIbIAyHgVj5ZbLL-swVb8s8Vo,42845 +PIL/ImageDraw2.py,sha256=pdVMW7bVw3KwhXvRZh28Md4y-2xFfuo5fHcDnaYqVK4,7227 +PIL/ImageEnhance.py,sha256=4Elhz_lyyxLmx0GkSHrwOAmNJ2TkqVQPHejzGihZUMI,3627 +PIL/ImageFile.py,sha256=HLgKqn6K9J4HlnyiPFZUTAfcqxXYjE06fZeKO6V-haw,29334 +PIL/ImageFilter.py,sha256=MiTowY9micg1dSfwZkExXSBNPr2b_11kDCGreP6W8x4,18671 +PIL/ImageFont.py,sha256=rVQm3zwnTFZ1HSp4OeA5THKjTezhE8HMrnOhHzmqfEM,64292 +PIL/ImageGrab.py,sha256=I9PHpsQf2VyNX4T8QL-8awFNotyAzB1mGxTt_I5FbTE,6471 +PIL/ImageMath.py,sha256=XasMsgjaD9p2OZa7naOdpEACq3yJl-Q2RGTf4xo7CgM,11919 +PIL/ImageMode.py,sha256=5yOxODAZ7jG03DsUFrt7eQayTtIpWPgvfyhlXDWwcv8,2681 +PIL/ImageMorph.py,sha256=TowXnk1Q2wX9AXVBDWRRQhCfAbFOUWGMo00vq4yn-fU,8563 +PIL/ImageOps.py,sha256=A69qjt-mxDI99387z_4cHI-wtH85SLL_ENTI9EeOQGI,25525 +PIL/ImagePalette.py,sha256=M5tYUgadWR7mxUEByyVl7IV9QFFzAGiKKmAhCZtdG0w,9009 +PIL/ImagePath.py,sha256=5yUG5XCUil1KKTTA_8PgGhcmg-mnue-GK0FwTBlhjw4,371 +PIL/ImageQt.py,sha256=dQbadF2Lg59OJVjiNVcbz3wvymqEpL-uEZG32b8E-bg,6841 +PIL/ImageSequence.py,sha256=gx2EvywPBEjxNJujCqdpbfAm2BpyNV2_f1IaO3niubw,2200 +PIL/ImageShow.py,sha256=Ju0_Db2B4_n3yKJV9sDsF7_HAgciEdXlq6I1Eiw1YTo,10106 +PIL/ImageStat.py,sha256=S43FZ89r_u4hKCj59lVuWpyVJfhbUy3igXkp9DwaMgM,5325 +PIL/ImageTk.py,sha256=b5SntckGXs0ECsI2MmdJg3CSX6AtELsWh0Ohxu41u_k,8132 +PIL/ImageTransform.py,sha256=-qek7P3lzLddcXt9cWt5w_L11JGp2yY3AJtOfmJAkDc,3916 +PIL/ImageWin.py,sha256=LT05w8_vTfRrC3n9S9pM0TNbXrzZLEJHlCJil7Xv80k,8085 +PIL/ImtImagePlugin.py,sha256=SL5IrsHcblltxtX4v_HVFhYnR6haJ0AOd2NHhZKMImY,2665 +PIL/IptcImagePlugin.py,sha256=3BVI_oEbFEJC-yn6zmp5Joqf8edCJLKH9N5FQanyaV8,6719 +PIL/Jpeg2KImagePlugin.py,sha256=k9UoU7-Hq8vAWi9ZoosA4bfufNJsctBd4ttM1RFxwnk,13865 +PIL/JpegImagePlugin.py,sha256=WaCZTpdmzuCM5mi44bNyN4p1EXOsnKz63qv4XEbm8Ns,31786 +PIL/JpegPresets.py,sha256=lnqWHo4DLIHIulcdHp0NJ7CWexHt8T3w51kIKlLfkIA,12379 +PIL/McIdasImagePlugin.py,sha256=baOIkD-CIIeCgBFTf8kos928PKBuCUqYYa38u3WES_8,1877 +PIL/MicImagePlugin.py,sha256=aoIwkWVyr_X-dPvB6ldZOJF3a9kd_OeuEW3say5Y0QM,2564 +PIL/MpegImagePlugin.py,sha256=g7BZd93kWpFi41SG_wKFoi0yEPsioI4kj45b2F-3Vrw,2010 +PIL/MpoImagePlugin.py,sha256=S45qt7OcY7rBjYlwEk0nUmEj5IOu5z8KVLo066V1RBE,6722 +PIL/MspImagePlugin.py,sha256=oxk_MLUDvzJ4JDuOZCHkmqOPXniG42PHOyNGwe60slY,5892 +PIL/PSDraw.py,sha256=KMBGj3vXaFpblaIcA9KjFFTpdal41AQggY-UgzqoMkQ,6918 +PIL/PaletteFile.py,sha256=suDdAL6VMljXw4oEn1vhTt4DQ4vbpIHGd3A4oxOgE6s,1216 +PIL/PalmImagePlugin.py,sha256=WJ1b8I1xTSAXYDJhIpkVFCLu2LlpbiBD5d1Hr-m2l08,8748 +PIL/PcdImagePlugin.py,sha256=VweZ108HBHeNEfsoE26EOR4ktxqNGSOWOnd58DhS8Fo,1601 +PIL/PcfFontFile.py,sha256=NPZQ0XkbGB8uTlGqgmIPGkwuLMYBdykDeVuvFgIC7JU,7147 +PIL/PcxImagePlugin.py,sha256=2dqnjRjSLbjm8Opub4sZRhOIdYLdn3y7Q_ETV8EmiOQ,6224 +PIL/PdfImagePlugin.py,sha256=AbJA2f4qzH8G1olfmk18SzQlcx3WsipUYDc5bcR8Wvk,9349 +PIL/PdfParser.py,sha256=LnmX0Cm7ZQwGkB1uYP4rvXZUkERmURzmYo78zjeq6VI,37987 +PIL/PixarImagePlugin.py,sha256=l_4GwBd0mATnIXYJbwmmODU2vP7wewLu6BRviHCB2EI,1758 +PIL/PngImagePlugin.py,sha256=jPBNqZ50txFHWIsDikcdkeeBfLNY1PxT5wzcPMcmcmQ,51117 +PIL/PpmImagePlugin.py,sha256=QJM-V-odV7w-prA7B5bLRQcykdC4d7OJ5BBbCvPPIzY,12370 +PIL/PsdImagePlugin.py,sha256=ImnNRG4VANs2GATXVEB5Q-yy1Jskc6XRVRtZYi2fALg,8685 +PIL/QoiImagePlugin.py,sha256=RPO63QsgHAsyPpcxh7ymeMYlnjVu5gT5ELolkvJt0vc,8572 +PIL/SgiImagePlugin.py,sha256=3Ql89s8vycNWjcxJwMw28iksV9Yj2xWoKBQ6c5DHXBg,6389 +PIL/SpiderImagePlugin.py,sha256=Bsg6pfZMctas1xYx__oL-ZZseUReZdnLy5a-aKEJhpE,10249 +PIL/SunImagePlugin.py,sha256=Hdxkhk0pxpBGxYhPJfCDLwsYcO1KjxjtplNMFYibIvk,4589 +PIL/TarIO.py,sha256=BqYUChCBb9F7Sh-uZ86iz1Dtoy2D0obNwGm65z1rdc0,1442 +PIL/TgaImagePlugin.py,sha256=2vDsFTcBUBHw1V80wpVv4tgpLDbPr6yVHi6Fvaqf0HY,6980 +PIL/TiffImagePlugin.py,sha256=IK7Ur131NNyJET-wk50tzLkSyd7TI1lwSES4N_txy5w,85029 +PIL/TiffTags.py,sha256=-gbXLZ5rlHD6crwtY6TkafDm2tamlc5v8e7FjS8PcIg,17082 +PIL/WalImageFile.py,sha256=Lfuq_WZ_V_onwucfUc6GWfvY7z_K4s-5EdaQGu_2DD4,5704 +PIL/WebPImagePlugin.py,sha256=YFWo6_FYBSrzAf6XMbmrF4YRtR4x7tYecCWF7EA13WQ,10010 +PIL/WmfImagePlugin.py,sha256=Z1hzGuHGt08tBLsxgBV7ZVOLdQPykDMYd4RGkw1J8rw,5243 +PIL/XVThumbImagePlugin.py,sha256=cJSapkBasFt11O6XYXxqcyA-njxA5BD3wHhNj6VC7Fk,2115 +PIL/XbmImagePlugin.py,sha256=Fd6GVDEo73nyFICA3Z3w4LjkwoZWvhHB6rKCm5yVrho,2669 +PIL/XpmImagePlugin.py,sha256=jtUKavJCYwIAsJaJwSx8vJsx1oTbCywfDxePENmA93w,4400 +PIL/__init__.py,sha256=Q4KOEpR7S_Xsj30fvOsvR94xEpX4KUsVeUwaVP1fU80,2031 +PIL/__main__.py,sha256=Lpj4vef8mI7jA1sRCUAoVYaeePD_Uc898xF5c7XLx1A,133 +PIL/__pycache__/AvifImagePlugin.cpython-310.pyc,, +PIL/__pycache__/BdfFontFile.cpython-310.pyc,, +PIL/__pycache__/BlpImagePlugin.cpython-310.pyc,, +PIL/__pycache__/BmpImagePlugin.cpython-310.pyc,, +PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc,, +PIL/__pycache__/ContainerIO.cpython-310.pyc,, +PIL/__pycache__/CurImagePlugin.cpython-310.pyc,, +PIL/__pycache__/DcxImagePlugin.cpython-310.pyc,, +PIL/__pycache__/DdsImagePlugin.cpython-310.pyc,, +PIL/__pycache__/EpsImagePlugin.cpython-310.pyc,, +PIL/__pycache__/ExifTags.cpython-310.pyc,, +PIL/__pycache__/FitsImagePlugin.cpython-310.pyc,, +PIL/__pycache__/FliImagePlugin.cpython-310.pyc,, +PIL/__pycache__/FontFile.cpython-310.pyc,, +PIL/__pycache__/FpxImagePlugin.cpython-310.pyc,, +PIL/__pycache__/FtexImagePlugin.cpython-310.pyc,, +PIL/__pycache__/GbrImagePlugin.cpython-310.pyc,, +PIL/__pycache__/GdImageFile.cpython-310.pyc,, +PIL/__pycache__/GifImagePlugin.cpython-310.pyc,, +PIL/__pycache__/GimpGradientFile.cpython-310.pyc,, +PIL/__pycache__/GimpPaletteFile.cpython-310.pyc,, +PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc,, +PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc,, +PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc,, +PIL/__pycache__/IcoImagePlugin.cpython-310.pyc,, +PIL/__pycache__/ImImagePlugin.cpython-310.pyc,, +PIL/__pycache__/Image.cpython-310.pyc,, +PIL/__pycache__/ImageChops.cpython-310.pyc,, +PIL/__pycache__/ImageCms.cpython-310.pyc,, +PIL/__pycache__/ImageColor.cpython-310.pyc,, +PIL/__pycache__/ImageDraw.cpython-310.pyc,, +PIL/__pycache__/ImageDraw2.cpython-310.pyc,, +PIL/__pycache__/ImageEnhance.cpython-310.pyc,, +PIL/__pycache__/ImageFile.cpython-310.pyc,, +PIL/__pycache__/ImageFilter.cpython-310.pyc,, +PIL/__pycache__/ImageFont.cpython-310.pyc,, +PIL/__pycache__/ImageGrab.cpython-310.pyc,, +PIL/__pycache__/ImageMath.cpython-310.pyc,, +PIL/__pycache__/ImageMode.cpython-310.pyc,, +PIL/__pycache__/ImageMorph.cpython-310.pyc,, +PIL/__pycache__/ImageOps.cpython-310.pyc,, +PIL/__pycache__/ImagePalette.cpython-310.pyc,, +PIL/__pycache__/ImagePath.cpython-310.pyc,, +PIL/__pycache__/ImageQt.cpython-310.pyc,, +PIL/__pycache__/ImageSequence.cpython-310.pyc,, +PIL/__pycache__/ImageShow.cpython-310.pyc,, +PIL/__pycache__/ImageStat.cpython-310.pyc,, +PIL/__pycache__/ImageTk.cpython-310.pyc,, +PIL/__pycache__/ImageTransform.cpython-310.pyc,, +PIL/__pycache__/ImageWin.cpython-310.pyc,, +PIL/__pycache__/ImtImagePlugin.cpython-310.pyc,, +PIL/__pycache__/IptcImagePlugin.cpython-310.pyc,, +PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc,, +PIL/__pycache__/JpegImagePlugin.cpython-310.pyc,, +PIL/__pycache__/JpegPresets.cpython-310.pyc,, +PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc,, +PIL/__pycache__/MicImagePlugin.cpython-310.pyc,, +PIL/__pycache__/MpegImagePlugin.cpython-310.pyc,, +PIL/__pycache__/MpoImagePlugin.cpython-310.pyc,, +PIL/__pycache__/MspImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PSDraw.cpython-310.pyc,, +PIL/__pycache__/PaletteFile.cpython-310.pyc,, +PIL/__pycache__/PalmImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PcdImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PcfFontFile.cpython-310.pyc,, +PIL/__pycache__/PcxImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PdfImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PdfParser.cpython-310.pyc,, +PIL/__pycache__/PixarImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PngImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PpmImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PsdImagePlugin.cpython-310.pyc,, +PIL/__pycache__/QoiImagePlugin.cpython-310.pyc,, +PIL/__pycache__/SgiImagePlugin.cpython-310.pyc,, +PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc,, +PIL/__pycache__/SunImagePlugin.cpython-310.pyc,, +PIL/__pycache__/TarIO.cpython-310.pyc,, +PIL/__pycache__/TgaImagePlugin.cpython-310.pyc,, +PIL/__pycache__/TiffImagePlugin.cpython-310.pyc,, +PIL/__pycache__/TiffTags.cpython-310.pyc,, +PIL/__pycache__/WalImageFile.cpython-310.pyc,, +PIL/__pycache__/WebPImagePlugin.cpython-310.pyc,, +PIL/__pycache__/WmfImagePlugin.cpython-310.pyc,, +PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc,, +PIL/__pycache__/XbmImagePlugin.cpython-310.pyc,, +PIL/__pycache__/XpmImagePlugin.cpython-310.pyc,, +PIL/__pycache__/__init__.cpython-310.pyc,, +PIL/__pycache__/__main__.cpython-310.pyc,, +PIL/__pycache__/_binary.cpython-310.pyc,, +PIL/__pycache__/_deprecate.cpython-310.pyc,, +PIL/__pycache__/_tkinter_finder.cpython-310.pyc,, +PIL/__pycache__/_typing.cpython-310.pyc,, +PIL/__pycache__/_util.cpython-310.pyc,, +PIL/__pycache__/_version.cpython-310.pyc,, +PIL/__pycache__/features.cpython-310.pyc,, +PIL/__pycache__/report.cpython-310.pyc,, +PIL/_avif.cpython-310-x86_64-linux-gnu.so,sha256=_OLlpUW_hDaovCG426O3dKcytzna0bnEftAStUhyLi4,87889 +PIL/_avif.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63 +PIL/_binary.py,sha256=pcM6AL04GxgmGeLfcH1V1BZHENwIrQH0uxhJ7r0HIL0,2550 +PIL/_deprecate.py,sha256=JYJfJgemvedcdHMH6_RFTDBLNp4vSJqd-o32e3WzNlM,2034 +PIL/_imaging.cpython-310-x86_64-linux-gnu.so,sha256=qYpamZqYqAtfyYPF0efDuQi7e7L9Y-lY95jzN_MYhEw,3345225 +PIL/_imaging.pyi,sha256=StMbXUZS32AegATP1sUHfs5P05A3TD_BiQKsDHQBW40,868 +PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so,sha256=bTOjqVzQAuPoQvyz_HRsMnacDYct0pHYt4i48Gc_r3o,141369 +PIL/_imagingcms.pyi,sha256=brpjxRoiY_2ItyfTrjhKeGEsExe4GPG-25q9AQP8Jp8,4389 +PIL/_imagingft.cpython-310-x86_64-linux-gnu.so,sha256=7b17Tr2yVmWPrudhRvRLujsBEjvoDEI-2BK-UxRGtF4,298297 +PIL/_imagingft.pyi,sha256=IYdFGfApwsqYiJVoD5AVOvgMvnO1eP1J3cMA6L0YZJ0,1806 +PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so,sha256=czXmZlP6DXHYPPzB7NeHNW2aoCYEbPA_i82jGxwz52Y,161896 +PIL/_imagingmath.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63 +PIL/_imagingmorph.cpython-310-x86_64-linux-gnu.so,sha256=Yj96EhgQp4hrO-zx1kpcBPovsltfh5rLOz6RXl4IZAA,35896 +PIL/_imagingmorph.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63 +PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so,sha256=djXYcrWZQG3sMZ7DDmze_lpF_N5Cn3IRvq_zT0EKjVM,45560 +PIL/_imagingtk.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63 +PIL/_tkinter_finder.py,sha256=GIZ4stmFhUosmHKSrdxcjStiocDNfyJn7RBie2SWxU0,538 +PIL/_typing.py,sha256=1NAWJ7Z59TP98cFv9qGpBMgSHbyR4CAByLjMRRbSZxY,1251 +PIL/_util.py,sha256=E76J1WLAe6Xg5yNWYztQwYzxUT_sR_VQxFJu7IZ3S3k,635 +PIL/_version.py,sha256=Zwv2LKWt6v32STL5K9uN7PdcJmZhDlokKTLkDA7Ky1w,87 +PIL/_webp.cpython-310-x86_64-linux-gnu.so,sha256=85GawQF0nCwVzqEFfFOItf3CWRTKTsAuTr_F0hwbt64,84193 +PIL/_webp.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63 +PIL/features.py,sha256=FfyYObVJbzYQUXf8KuRuqY6kvA8md2LorE81k3EuQrw,11479 +PIL/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +PIL/report.py,sha256=4JY6-IU7sH1RKuRbOvy1fUt0dAoi79FX4tYJN3p1DT0,100 +pillow-11.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pillow-11.3.0.dist-info/METADATA,sha256=1T1NePio7-GCOWcR73aEA4bSukzNrUIfWMwAw7NAH3M,9023 +pillow-11.3.0.dist-info/RECORD,, +pillow-11.3.0.dist-info/WHEEL,sha256=Obtqci3x5vy5ZivY2BiOH9GHO8-xQ0d4HFhTOtXMNhw,152 +pillow-11.3.0.dist-info/licenses/LICENSE,sha256=LECn2IlBJv96mTp1JQW5FWlKr-emIIie82isv1S4cUQ,66498 +pillow-11.3.0.dist-info/top_level.txt,sha256=riZqrk-hyZqh5f1Z0Zwii3dKfxEsByhu9cU9IODF-NY,4 +pillow-11.3.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +pillow.libs/libXau-154567c4.so.6.0.0,sha256=BUhNJL94y47QMWnxywZyBNgpy3ryHeiCBADSnRFeQyA,22081 +pillow.libs/libavif-01e67780.so.16.3.0,sha256=xCXlA8_rggzsCA_EsWKFzgqPBmT1ihpZCo3iMyvD1P0,5142057 +pillow.libs/libbrotlicommon-c55a5f7a.so.1.1.0,sha256=HaLbMm3YehX759wgF7ZU0kVwhdgX4ukfvQNKytoarw8,144425 +pillow.libs/libbrotlidec-2ced2f3a.so.1.1.0,sha256=BOwekVTiRipkYusnBXmzGGhiPsBwBI6DDWPLkvxAbRE,62337 +pillow.libs/libfreetype-083ff72c.so.6.20.2,sha256=nR7Qj8vHmYmFqPKudV_uWIjG3NoY3ZEIGqySuB3Fxi0,1430825 +pillow.libs/libharfbuzz-fe5b8f8d.so.0.61121.0,sha256=7BYYYjM0M0rNxEo1d1yqqSoOGLCcbs-Jqi1KWqxvomM,908081 +pillow.libs/libjpeg-8a13c6e0.so.62.4.0,sha256=L9LNO3lhekD_kggV6DrgsleI_gXfl3EfWwApiRwxy9k,832177 +pillow.libs/liblcms2-cc10e42f.so.2.0.17,sha256=5JMjEDVKMwxcinhbQl6qhRLaezAiQFYEPSz-KultHe0,519073 +pillow.libs/liblzma-64b7ab39.so.5.8.1,sha256=hN2B2RPEM6wOgvER_g43fNjbNQ_SsrenX2wlAfHW-nA,266369 +pillow.libs/libopenjp2-56811f71.so.2.5.3,sha256=aG9iy-0yE3nj44vnrpTFZBHUNFvejVTlV7QEctmnaTo,585849 +pillow.libs/libpng16-d00bd151.so.16.49.0,sha256=VYiCiAoDB6dnWllbcSpOu9DrHKQ3Th4tepiWdhdg_mw,278001 +pillow.libs/libsharpyuv-60a7c00b.so.0.1.1,sha256=jySHi3I26NspkZW9eAaQsPCDwB8_D_Guh7g5d-ROCAQ,46113 +pillow.libs/libtiff-13a02c81.so.6.1.0,sha256=AH827ZKX4f_-DpYv66BELczkhkVdbNmLLFile8vRVgU,746233 +pillow.libs/libwebp-5f0275c0.so.7.1.10,sha256=s6N3iSclHhrkhSaM_cFqk7IAZrWe1pgGmwJk-wzhSYk,731185 +pillow.libs/libwebpdemux-efaed568.so.2.0.16,sha256=q8bcLAXcqize_gg5VszKAHNQ-nBcDU7VVyFKytD1J68,30217 +pillow.libs/libwebpmux-6f2b1ad9.so.3.1.1,sha256=Amxlm7OxjsJWAu9Q-bI59RnoZ9GiZS6FKb2bGccAPUw,58617 +pillow.libs/libxcb-64009ff3.so.1.1.0,sha256=t0N-0WuuesRJgEn9FOENG9HD59FdDl6rHS6tQqg6SdE,251425 diff --git a/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/WHEEL b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/WHEEL new file mode 100644 index 0000000..12e67ca --- /dev/null +++ b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: setuptools (80.9.0) +Root-Is-Purelib: false +Tag: cp310-cp310-manylinux_2_27_x86_64 +Tag: cp310-cp310-manylinux_2_28_x86_64 + diff --git a/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/licenses/LICENSE b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..8df788b --- /dev/null +++ b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/licenses/LICENSE @@ -0,0 +1,1487 @@ +The Python Imaging Library (PIL) is + + Copyright © 1997-2011 by Secret Labs AB + Copyright © 1995-2011 by Fredrik Lundh and contributors + +Pillow is the friendly PIL fork. It is + + Copyright © 2010 by Jeffrey A. Clark and contributors + +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 +with the following terms and conditions: + +Permission to use, copy, modify and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appears in all copies, and that +both that copyright notice and this permission notice appear in supporting +documentation, and that the name of Secret Labs AB or the author not be +used in advertising or publicity pertaining to distribution of the software +without specific, written prior permission. + +SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, +INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +---- + +AOM + +Copyright (c) 2016, Alliance for Open Media. 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. + +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. + + +---- + +BROTLI + +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +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. + + +---- + +BZIP2 + + +-------------------------------------------------------------------------- + +This program, "bzip2", the associated library "libbzip2", and all +documentation, are copyright (C) 1996-2019 Julian R Seward. 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. 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. + +3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + +4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + +Julian Seward, jseward@acm.org +bzip2/libbzip2 version 1.0.8 of 13 July 2019 + +-------------------------------------------------------------------------- + + +---- + +DAV1D + +Copyright © 2018-2019, VideoLAN and dav1d authors +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. + +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. + + +---- + +FREETYPE2 + +The FreeType 2 font engine is copyrighted work and cannot be used +legally without a software license. In order to make this project +usable to a vast majority of developers, we distribute it under two +mutually exclusive open-source licenses. + +This means that *you* must choose *one* of the two licenses described +below, then obey all its terms and conditions when using FreeType 2 in +any of your projects or products. + + - The FreeType License, found in the file `docs/FTL.TXT`, which is + similar to the original BSD license *with* an advertising clause + that forces you to explicitly cite the FreeType project in your + product's documentation. All details are in the license file. + This license is suited to products which don't use the GNU General + Public License. + + Note that this license is compatible to the GNU General Public + License version 3, but not version 2. + + - The GNU General Public License version 2, found in + `docs/GPLv2.TXT` (any later version can be used also), for + programs which already use the GPL. Note that the FTL is + incompatible with GPLv2 due to its advertisement clause. + +The contributed BDF and PCF drivers come with a license similar to +that of the X Window System. It is compatible to the above two +licenses (see files `src/bdf/README` and `src/pcf/README`). The same +holds for the source code files `src/base/fthash.c` and +`include/freetype/internal/fthash.h`; they were part of the BDF driver +in earlier FreeType versions. + +The gzip module uses the zlib license (see `src/gzip/zlib.h`) which +too is compatible to the above two licenses. + +The files `src/autofit/ft-hb.c` and `src/autofit/ft-hb.h` contain code +taken almost verbatim from the HarfBuzz file `hb-ft.cc`, which uses +the 'Old MIT' license, compatible to the above two licenses. + +The MD5 checksum support (only used for debugging in development +builds) is in the public domain. + +-------------------------------------------------------------------------- + + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright © The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + https://www.freetype.org + + +--- end of FTL.TXT --- + +The following license details are part of `src/bdf/README`: + +``` +License +******* + +Copyright (C) 2001-2002 by Francesco Zappa Nardelli + +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. + +*** Portions of the driver (that is, bdflib.c and bdf.h): + +Copyright 2000 Computing Research Labs, New Mexico State University +Copyright 2001-2002, 2011 Francesco Zappa Nardelli + +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 COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY 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. + + +Credits +******* + +This driver is based on excellent Mark Leisher's bdf library. If you +find something good in this driver you should probably thank him, not +me. +``` + +The following license details are part of `src/pcf/README`: + +``` +License +******* + +Copyright (C) 2000 by Francesco Zappa Nardelli + +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. + + +Credits +******* + +Keith Packard wrote the pcf driver found in XFree86. His work is at +the same time the specification and the sample implementation of the +PCF format. Undoubtedly, this driver is inspired from his work. +``` + + +---- + +HARFBUZZ + +HarfBuzz is licensed under the so-called "Old MIT" license. Details follow. +For parts of HarfBuzz that are licensed under different licenses see individual +files names COPYING in subdirectories where applicable. + +Copyright © 2010-2022 Google, Inc. +Copyright © 2015-2020 Ebrahim Byagowi +Copyright © 2019,2020 Facebook, Inc. +Copyright © 2012,2015 Mozilla Foundation +Copyright © 2011 Codethink Limited +Copyright © 2008,2010 Nokia Corporation and/or its subsidiary(-ies) +Copyright © 2009 Keith Stribley +Copyright © 2011 Martin Hosken and SIL International +Copyright © 2007 Chris Wilson +Copyright © 2005,2006,2020,2021,2022,2023 Behdad Esfahbod +Copyright © 2004,2007,2008,2009,2010,2013,2021,2022,2023 Red Hat, Inc. +Copyright © 1998-2005 David Turner and Werner Lemberg +Copyright © 2016 Igalia S.L. +Copyright © 2022 Matthias Clasen +Copyright © 2018,2021 Khaled Hosny +Copyright © 2018,2019,2020 Adobe, Inc +Copyright © 2013-2015 Alexei Podtelezhnikov + +For full copyright notices consult the individual files in the package. + + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + + +---- + +LCMS2 + +Little CMS +Copyright (c) 1998-2020 Marti Maria Saguer + +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. + + +---- + +LIBAVIF + +Copyright 2019 Joe Drago. 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. + +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. + +------------------------------------------------------------------------------ + +Files: src/obu.c + +Copyright © 2018-2019, VideoLAN and dav1d authors +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. + +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. + +------------------------------------------------------------------------------ + +Files: third_party/iccjpeg/* + +In plain English: + +1. We don't promise that this software works. (But if you find any bugs, + please let us know!) +2. You can use this software for whatever you want. You don't have to pay us. +3. You may not pretend that you wrote this software. If you use it in a + program, you must acknowledge somewhere in your documentation that + you've used the IJG code. + +In legalese: + +The authors make NO WARRANTY or representation, either express or implied, +with respect to this software, its quality, accuracy, merchantability, or +fitness for a particular purpose. This software is provided "AS IS", and you, +its user, assume the entire risk as to its quality and accuracy. + +This software is copyright (C) 1991-2013, Thomas G. Lane, Guido Vollbeding. +All Rights Reserved except as specified below. + +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. + +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. + +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". + +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. + + +The Unix configuration script "configure" was produced with GNU Autoconf. +It is copyright by the Free Software Foundation but is freely distributable. +The same holds for its supporting scripts (config.guess, config.sub, +ltmain.sh). Another support script, install-sh, is copyright by X Consortium +but is also freely distributable. + +The IJG distribution formerly included code to read and write GIF files. +To avoid entanglement with the Unisys LZW patent, GIF reading support has +been removed altogether, and the GIF writer has been simplified to produce +"uncompressed GIFs". This technique does not use the LZW algorithm; the +resulting GIF files are larger than usual, but are readable by all standard +GIF decoders. + +We are required to state that + "The Graphics Interchange Format(c) is the Copyright property of + CompuServe Incorporated. GIF(sm) is a Service Mark property of + CompuServe Incorporated." + +------------------------------------------------------------------------------ + +Files: contrib/gdk-pixbuf/* + +Copyright 2020 Emmanuel Gil Peyrot. 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. + +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. + +------------------------------------------------------------------------------ + +Files: android_jni/gradlew* + + + 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. + +------------------------------------------------------------------------------ + +Files: third_party/libyuv/* + +Copyright 2011 The LibYuv Project Authors. 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 Google 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. + + +---- + +LIBJPEG + +1. We don't promise that this software works. (But if you find any bugs, + please let us know!) +2. You can use this software for whatever you want. You don't have to pay us. +3. You may not pretend that you wrote this software. If you use it in a + program, you must acknowledge somewhere in your documentation that + you've used the IJG code. + +In legalese: + +The authors make NO WARRANTY or representation, either express or implied, +with respect to this software, its quality, accuracy, merchantability, or +fitness for a particular purpose. This software is provided "AS IS", and you, +its user, assume the entire risk as to its quality and accuracy. + +This software is copyright (C) 1991-2020, Thomas G. Lane, Guido Vollbeding. +All Rights Reserved except as specified below. + +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. + +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. + +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". + +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. + + +---- + +LIBLZMA + +XZ Utils Licensing +================== + + Different licenses apply to different files in this package. Here + is a rough summary of which licenses apply to which parts of this + package (but check the individual files to be sure!): + + - liblzma is in the public domain. + + - xz, xzdec, and lzmadec command line tools are in the public + domain unless GNU getopt_long had to be compiled and linked + in from the lib directory. The getopt_long code is under + GNU LGPLv2.1+. + + - The scripts to grep, diff, and view compressed files have been + adapted from gzip. These scripts and their documentation are + under GNU GPLv2+. + + - All the documentation in the doc directory and most of the + XZ Utils specific documentation files in other directories + are in the public domain. + + - Translated messages are in the public domain. + + - The build system contains public domain files, and files that + are under GNU GPLv2+ or GNU GPLv3+. None of these files end up + in the binaries being built. + + - Test files and test code in the tests directory, and debugging + utilities in the debug directory are in the public domain. + + - The extra directory may contain public domain files, and files + that are under various free software licenses. + + You can do whatever you want with the files that have been put into + the public domain. If you find public domain legally problematic, + take the previous sentence as a license grant. If you still find + the lack of copyright legally problematic, you have too many + lawyers. + + As usual, this software is provided "as is", without any warranty. + + If you copy significant amounts of public domain code from XZ Utils + into your project, acknowledging this somewhere in your software is + polite (especially if it is proprietary, non-free software), but + naturally it is not legally required. Here is an example of a good + notice to put into "about box" or into documentation: + + This software includes code from XZ Utils . + + The following license texts are included in the following files: + - COPYING.LGPLv2.1: GNU Lesser General Public License version 2.1 + - COPYING.GPLv2: GNU General Public License version 2 + - COPYING.GPLv3: GNU General Public License version 3 + + Note that the toolchain (compiler, linker etc.) may add some code + pieces that are copyrighted. Thus, it is possible that e.g. liblzma + binary wouldn't actually be in the public domain in its entirety + even though it contains no copyrighted code from the XZ Utils source + package. + + If you have questions, don't hesitate to ask the author(s) for more + information. + + +---- + +LIBPNG + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE +========================================= + +PNG Reference Library License version 2 +--------------------------------------- + + * Copyright (c) 1995-2022 The PNG Reference Library Authors. + * Copyright (c) 2018-2022 Cosmin Truta. + * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. + * Copyright (c) 1996-1997 Andreas Dilger. + * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + +The software is supplied "as is", without warranty of any kind, +express or implied, including, without limitation, the warranties +of merchantability, fitness for a particular purpose, title, and +non-infringement. In no event shall the Copyright owners, or +anyone distributing the software, be liable for any damages or +other liability, whether in contract, tort or otherwise, arising +from, out of, or in connection with the software, or the use or +other dealings in the software, even if advised of the possibility +of such damage. + +Permission is hereby granted to use, copy, modify, and distribute +this software, or portions hereof, for any purpose, without fee, +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 Copyright notice may not be removed or altered from any + source or altered source distribution. + + +PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) +----------------------------------------------------------------------- + +libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are +Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are +derived from libpng-1.0.6, and are distributed according to the same +disclaimer and license as libpng-1.0.6 with the following individuals +added to the list of Contributing Authors: + + Simon-Pierre Cadieux + Eric S. Raymond + Mans Rullgard + Cosmin Truta + Gilles Vollant + James Yu + Mandar Sahastrabuddhe + Google Inc. + Vadim Barkov + +and with the following additions to the disclaimer: + + There is no warranty against interference with your enjoyment of + the library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is + with the user. + +Some files in the "contrib" directory and some configure-generated +files that are distributed with libpng have other copyright owners, and +are released under other open source licenses. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are +Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from +libpng-0.96, and are distributed according to the same disclaimer and +license as libpng-0.96, with the following individuals added to the +list of Contributing Authors: + + Tom Lane + Glenn Randers-Pehrson + Willem van Schaik + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88, +and are distributed according to the same disclaimer and license as +libpng-0.88, with the following individuals added to the list of +Contributing Authors: + + John Bowler + Kevin Bracey + Sam Bushell + Magnus Holmgren + Greg Roelofs + Tom Tanner + +Some files in the "scripts" directory have other copyright owners, +but are released under this license. + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + +For the purposes of this copyright and license, "Contributing Authors" +is defined as the following set of individuals: + + Andreas Dilger + Dave Martindale + Guy Eric Schalnat + Paul Schmidt + Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing +Authors and Group 42, Inc. disclaim all warranties, expressed or +implied, including, without limitation, the warranties of +merchantability and of fitness for any purpose. The Contributing +Authors and Group 42, Inc. assume no liability for direct, indirect, +incidental, special, exemplary, or consequential damages, which may +result from the use of the PNG Reference Library, even if advised of +the possibility of such damage. + +Permission is hereby granted to use, copy, modify, and distribute this +source code, or portions hereof, for any purpose, without fee, subject +to the following restrictions: + + 1. The origin of this source code must not be misrepresented. + + 2. Altered versions must be plainly marked as such and must not + be misrepresented as being the original source. + + 3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + +The Contributing Authors and Group 42, Inc. specifically permit, +without fee, and encourage the use of this source code as a component +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. + + +---- + +LIBTIFF + +Copyright (c) 1988-1997 Sam Leffler +Copyright (c) 1991-1997 Silicon Graphics, Inc. + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, provided +that (i) the above copyright notices and this permission notice appear in +all copies of the software and related documentation, and (ii) the names of +Sam Leffler and Silicon Graphics may not be used in any advertising or +publicity relating to the software without the specific, prior written +permission of Sam Leffler and Silicon Graphics. + +THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, +EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY +WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR +ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF +LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + + +---- + +LIBWEBP + +Copyright (c) 2010, Google Inc. 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 Google 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. + + +---- + +LIBYUV + +Copyright 2011 The LibYuv Project Authors. 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 Google 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. + + +---- + +OPENJPEG + +* + * The copyright in this software is being made available under the 2-clauses + * BSD License, included below. This software may be subject to other third + * party and contributor rights, including patent rights, and no such rights + * are granted under this license. + * + * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2002-2014, Professor Benoit Macq + * Copyright (c) 2003-2014, Antonin Descampe + * Copyright (c) 2003-2009, Francois-Olivier Devaux + * Copyright (c) 2005, Herve Drolon, FreeImage Team + * Copyright (c) 2002-2003, Yannick Verschueren + * Copyright (c) 2001-2003, David Janssens + * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France + * Copyright (c) 2012, CS Systemes d'Information, France + * + * 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. + * + * 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. + */ + + +---- + +RAQM + +The MIT License (MIT) + +Copyright © 2015 Information Technology Authority (ITA) +Copyright © 2016 Khaled Hosny + +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. + + +---- + +XAU + +Copyright 1988, 1993, 1994, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +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 +OPEN GROUP 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. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +---- + +XCB + +Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall +be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +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. + +Except as contained in this notice, the names of the authors +or their institutions shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this +Software without prior written authorization from the +authors. + + +---- + +XDMCP + +Copyright 1989, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +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 +OPEN GROUP 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. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +Author: Keith Packard, MIT X Consortium + + +---- + +ZLIB + + (C) 1995-2017 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. + + 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. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +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. + +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. diff --git a/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/top_level.txt b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/top_level.txt new file mode 100644 index 0000000..b338169 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/top_level.txt @@ -0,0 +1 @@ +PIL diff --git a/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/zip-safe b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/myenv/lib/python3.10/site-packages/pillow-11.3.0.dist-info/zip-safe @@ -0,0 +1 @@ + diff --git a/myenv/lib/python3.10/site-packages/pillow.libs/libXau-154567c4.so.6.0.0 b/myenv/lib/python3.10/site-packages/pillow.libs/libXau-154567c4.so.6.0.0 new file mode 100755 index 0000000000000000000000000000000000000000..ff06a58be7b9ff80cee9b8eb45d5e9a28cf67d1b GIT binary patch literal 22081 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 literal 0 HcmV?d00001 diff --git a/myenv/lib/python3.10/site-packages/pillow.libs/libavif-01e67780.so.16.3.0 b/myenv/lib/python3.10/site-packages/pillow.libs/libavif-01e67780.so.16.3.0 new file mode 100755 index 0000000000000000000000000000000000000000..121cc080370d6d8ec7693561a4a63d04f5176293 GIT binary patch literal 5142057 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

xGJ_%AJ+?xt9&4rS?ZMO<_o!*^DMdg!R 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�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%0D1E?L-&(p^aYV`WGn+rQ!!;V)NbRTNgLSfSo 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

AS@WeF&A`xt+ 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

uo?;=7dKGj}2D*PgfIEFX# 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�~vW_)cC zi{9n>&e@7}Dore%luysJDct>Tk{N6IAcs?(?KNty6fhTGA>UoDry}INmgnHwsdq~q zpU&aqjq>qZKOogyx|8R%&;3-@F_JoR_}=Lh9+k`Y-BQ?IdO&{E2sU0IPmA|So=d1v zjjXU^O%2b|ez6!%n@cA;V}J14K9~AKWMHV>r|wQQtwaYyFDsJm2w)mO_dzA z;)j4jutOh6?{%`CA?e@lm+qE<*rOI)Lb`OK57fC%`gxMxznEVk>AK5Q`sgu6!BGRe&c>YW>QO`St zC+8pa(hp?yxXQ@tIyhp@3&|o&T@+q(v0Mo`X-?|la(Qd5^-Aro4+qjmkEGb6I=}z5 zy6-2UuWnb_8re$wA6M)`K(Mty)qPqaKTRL}K#hLXx_nBQi#wce92U;t0LWV;N%6u1 z&TiW<_{Uk3HkCFIMPl`Dqz(nWb1&ljT=@riw?}nfKxM79f8uTQH7}jlTKgnVuS`|& z{RfX+YHL^Wn|GN?dR8U%Eu~LcxYTi9E@Ns@Ejuk-q$X|Dm*&CoGBR|1b_2!wtQ^*U}SLZpj$8a$@h#_ z_NslcX8BslD=(j0@8}RbIlph;kh_r?c>TC*C);?e`K`F zLPJ>0r7pn(0K7;$AANb>gE;BzO>H`uLecEJCjLqw74g8EX;@?Q=eauOU%*9FOp`N& zO<}-e+jh*K*Mpk;(s4=|K4Ydi?wIJh`?a3fyyIy~Kfcs=xqaI?NZ&T%e!nMnUEf!w zRNq%7NNS&gd`<|3{yG`LiT=0L{z^MdUnKU|VjBO_zl(^ya8DcX6fddJ9nTD41y{Kj z!mLho5=I9b&sBrD>jtcG9;CrP>o$JeRrR3=Hva7=ECeHWstDF*c*nJeI!rdDGO z`_5GnKZ6^Se1I|Fd^42FU9gq3NIEd&W_u5E|5CC1v*?}6!3 z<{fL#dpM!5cnec29Dh_~__Y>ozct&laGzx5=4F1S?a*F{=~)L8=6i(FG&jXkdB!mO zHXjaS+3rX=FzjVVXT(O_{H5qJvQ7Im&0FC8NT02RU&7-i8bw}r>VFHnJK9(q-B)Yk zTVdf5UWEfkG}^rO)CYuZEnh#arFIXTzl_*92YQ9~p4A`UShtA;=OxkR=p_b6!;NR4 zA0wnX7u(*jzCK$E6n|Kq9jeNxg+09Bbc_HWX3Jz)CJ?|Mk@4{;xHZx!rS^T-pN=f+Z zLApVBWzCK!2cp%#W&)a%vzhB#2^7*{)>Z`g-c0`7kTkdUOs;UF!ru)Bn>EQPn zyssp%ir>EA&vlK@XxHd|La!vvE|KJ^4Nx4m{<4}i<8N5s#E){p5VDYxnVI~9>)~&h z?QOWXk#D%)xWF3kLBfWiA$&k<0Dm*B@os*y9G3vBSJ;EAA~`OXgk?elcq35w3sBHk zodHa|WyPQ0@iTH|_3T8~8Xmp*y0*>0UaseLqiOG1C7 z1;Y}0{mVSvswpO@fifkOG-sISf3(=(zlbb})s1Tun)evjbp023VWx>Y6ExYu&YQ}TNPk>{l!0{N&m~B1nI1n&KZgSwZlLj2P zy~5M2O2aEDqysPtbo9RcvE#jWKvzk}^?U!5B3)&4*vXk=tr8u11-X16m6`X2zDjig zpWl;r0KcCLYnnj!=&SaJU#SDX2?~BjvJ=9!SDc|_Cs<=eu?Z(SVy9jCZa*+y4+hHD z7d->x%nx{Y4J6pl<$t1vQA7F-YBGGwKx$tqTjUDU5J7K>`Ca0?@T@6RWX_&OQz zB5|GpOEDWw?!Pd0rvC4;V)(5WNK0I98p@$7S%KnB43^Mz<2D7Y)pKv)p8v$z$|C+h zBt5Zp^h1xbSLVs&WPuf4Ccf3^`X?l5(&&dC<9Gh}(e+Qu?`71-s%y(@>(~E0)&K8R z03|w}XmM5@=0vQ}SPs2k>ACu<;ud|vPH=d!xw9V*6kk$UMJTapNSR`U%}t{E%b8K! zFkXY-D>n#e?X=&kcZzw%Q}6|>9PsW#J<(cY{E#h$Zs4=CqqrL540WoV6>+!EEnfIueEb(HRwHC$#C*D#=NUW`k}57X;+%Tog(Y4M5YJJVOSZBGIxEBX3M`aa5o6bKVt=?`sFGe_sgWUu9ZHQJO09N}wKLEuK5;TBy3AT6luXcC(I!6}Mm;5^ptB1wE&5vI9CGQASMb=tH%z{;QX_5mQ8$U;Vo#01~Ts!+K z9^^F3l=|FUY_6kpgeZTTt_xsPi!OX7mbL-=u0%i?x3om21b}ilRJ9F%H`#t6Z)V^| zr{vu`*`%dDjEIQ~-V`vq11R{t|Hnjv{*bOej~o1!*efK=#OS_yKwqXq@jr&l7Cfk_ zw#rMkM@}E7Kc9K66vBc#wp^-+i9bQ=My$yrWik- zAQ+V?vcBr!``{hws}@=6=l-SqXplP(+kFp9c(98&xgWltCxxB0t@^6_ACL@NAuk5% zzi)!sZ@UK)(%^n6M_wtV@?vo7(SP5_qQKUHcAVz!cbaorq4XljuQmU>5`9^v;J^F6 zNV=TtU0=776>UAK>HDSsWR(2>T9I;!sr8h!>XXqr#gaAH8$C2A@~!Bhj7SdHHcDj2 zb49#kr?pHiaK%|(^89=S&x4%jrzRD+W?JsKE&qqQp1u*&mW8VojeT+NL4gP#L3S$WtYJY_>2lux`7evzaC4c6lqop-tT6Dqe zbnM~uCG{jm*TjGYMCdEkzY1C#o>0$Ug{yXPHpBvX2S6FsHw5iz9>t+FqVwI@ZLR91 z47`|0pvH5&`=4qZ=am~w>o^$Fnk$k~JO4+n>H$H!Iy;_85q9Nwa4d-){pQ-5k*;d5 zs*CdQLsEs*>BB_$JDiS;d&abYLAbF2)9^~@|Of{y(2Ck9gePdZy zEv*`fE!B79Zz_0hz*@RY25!&gCQ!Rn9<7yf7UF)0?>^_}Z09G(m{M*B3wW^>Kj!4I z7C)*ULU=@KhFuVh$e-ErXRiF2H^pym3s|*}kSj5K(Y?q;i8U*uZmC@`IHmeLE+P{K zmZ9{6ZP(%rC9t!0ry&YX52pGr%Hrdd9J20qB2=WG&^tb^$$4eDy?V8@k4aCtXn2I} z$J-Z(j;%y*%Bkf`boH}jV9Fk9aue4XT=!N z8LfdbisEX7KS8s;jr_46LkKaUVOMpzQM;~%FR9hz46A-6Pln1_Zgx`ZbIl}#taZ|@ zp!JZHMZR7UvI7M$O#-v!PoyF-Jl_FDjyQ5j;DB#-fb>|5Rsxp&s1&YxyWE~p5U_qP zpq>hNLKh05n|Y@7oEibM8no8QsNmD69vBt$0f2u#HQ6%lJhoVYybM+9_M{fK;66u_ z8_hBmBu+GBjOiQ&qQ?08v{2QX!CSVA-jbLcxX)0+Ac;1jPvTG5enLK#yj62KI(BbE z#dtX{BJSz`qy}@xK#y;j^!6Yv>-|k zo3Z$E%!9>%RpDjPi$cpS>7z-m^~m;cEvBDANB`fs1H- z6L9JXjBvN&eU-blQW#4b*e{Y%hasa-IuKeNQES@e?JA~Ee!=Q8fLK<%NuLn2-8Ro` z$rju=e#Edmw)-JT;W2~wqUe}b*31u9jlSG=UlOdk(=AcupqRw}U#zyYAmx`+L@gpi z>=E${WNbfd9t>O4GORm&s3bm$Ly3@;j**q}(AYdF)!iBEVub_74r3bK%i4}p=qu6p zXQ7_HNG(+5NMd1&Oi|aogu+=_CoK&&LRmiJW$1o8|2gTcTDl*I!rWmD39RFzFJtuj zD*n$;={IPj=_AoYW5fq!h-jnM+-41ShVW^?jM4dk`5}&P)CSmo$g*S|FrJlaFmEs_ z2I@DPQJZVRwIqXMWZh^y#4;G1(0i#5zC)2I#x!wx{f04>;rWyMJ#P13>A|XIxtqL- z6_{%6igNQ6=8Nr!Mbkj0cE$xVwRnQM?-fyk>~#h?HC$DZ8Lq0#vSt^D5g1!@bI_9< z_%eJrOwWQ=ROTN^GT-2?4YjV^la*u4G>Y8sy500UwgQwRF ziypkNCNn-HSu}Nl2i~bt;$TPickzk}By$zr6VzATD>r5p?OxbMIoAEcZQ+`w=WQ$L zmWx!bK6x|DF8mlJ8rgZpkxcIJI$C7E*);O?=vSgnwiohsZ^*h=CN`;x?7k(Po zLpcnUZnW}cGLy$~?QjzPd7Y>N!Xi}3pwQBwInP%R`&&d2b5p>dr6GIK^y{HeS8Ugx z?_k3`t19D1CQfO~O<#N50v1;6vsMYDG4F zq|0>6H<<;QBAJB(nT4|060voQZd9|dPcY)iH|`nJrX+93plZ3VCaX)fe$*ch);7zD&l;+*XGc`6vS6qrZ>yW+6=Tze?xmqTK$ zzc|qw)Su(I>KiSNln%cEN6V!KwP0Akwgin`&4mDxtUs()I79fO48ehwUYErhtAj53 zHor3ZD``(Ggw2hyFpqea1!}Bi*T8Lh-AFR|NABwBsNJPS&O)Ao%4oc-p?Vm7*O$n3 zq^x1SH>RIC)D<5s>HdaU!^#?d?rpfnD_Q=~jL$^4(7^kgy2i*k(YY_umINU%xM)jsulg$!yk< z0}oL9@Un(GW#}~-Wes6q z;gYJ{`m1bn(lSC-6Feb;Lf|7F7f=|=gz`8cS1l6ktF>DX$^ig!oYW4!pf)e2=lIC} z4d4KKWGd`o@)E4VmDs3zT9K64?u|hUHpFT8{TxwySc_yR)&Jt{`h>SQ+de+_g3PiV z(1a1@-Way<425Sc&X(A?|4qg8p6OO>-n?Url?=qSABC;M->~bK4>mi~Of(kc- z1|0w;S<2zm#|4Z;!R`+sQ6dLKV%T;ZM8A`l83@~cG-mVpF0-B52p8*sim;Ib0hRuB zP>nF6pE$5GkW}d_P~iSLyiUJe!RvgCv%$fBro)_#tdM%t4cvg- z+$=ZemuJu^u(u*FYS*jQ743{x+H_xzkS)29(JV()+2yqq?YH5BHmU1q3dfK>qX3!S zkel~|>=7b)tjwj#yR#e$+}}%mwMvAB<|MrOFe2ToNFK#v`VUy+d!|%p3$TK zkoVbct4y{gv8T(P6EEOm2_oOoYxY7jd8s60dna!hO|g`Lcqna8Lp64?HuvNB%xabvz;*6`E=Jjd)=vKFdG#4Ghxqal#I6wHX-ej6BUQ{3NYaWfi? z3#Q`w7Df3N07P6;v?jKW+{$$1kqS|vNuLw1jNBaCNu7k$X?QyI*E9iDxe4JKFbKu+JOA^Tpjb_|(9SYm$O14W=H z0rBStEgJieO^F0V6xRWvYW;gW%OBD7=k#< zEuRk-v|jf)AJo}FuOk^UVcR?NgtI$Hrb|5+H~^1)&%ir|18>Y4*kW0PO914H6v!R- z6vx4ixTDS|K*uPJ{$|C7scr%L8`Qo$4*hP@VTlI2hg=p5eB8%YSpMr{-c@uo2PeTx{+w5)K3M=AkB; z_$rhZf>mrOWxgX9ssYTH^8$=`AMqXOjk_QM-(YyCQN5%zT4kgasq9h^K&2V$fBsBgvmsM?8aN6I?2olKKt`;4?We$$6M8XkV8Q*5 zM{YD;6iNdgl#oWJ%i>2qF)V1W-iaQQszPPNBQ19wPc?Q#4|P(DC>*RB8x)t_BZIf} z?yRK3)VsS5QDMYGn<$Mu~;Hj~{BTnHC9#j3P5XM#H3~RBQzUV6! zi@gVwAF>EBr|ipyyA!37op1>TUHMP?m;8jX+-stB} zz>PpE8a~b`YFUOI2ber)anij_dadw~Su-C?~gm-!8C& zc4+ick?rdDy~f+3Z6TI@^zmkIyih;KFt^rimK01TgR zFpc#MGhB!+e7Sk;W;0c=t$k(%m@ig`L-vZ~q4 zXz7w$gaA#>q1cBv?H32Yh<(L%P=!188|We$%}N3%-)xQ@yywK|7mn>e`UAj1MtkQe zMjQP1qg_xS>285Set#%9&>`ly-}i(5>8F6se3@AhBy*=NX{`axIuIIN)KWcQbhyP0 zjF2OL1dLky!zkb?O`mgiNqaR8MUybC;)b5tVqRoUM5x>fBwdKslR|a04BGmmr7M-Y zoics>f#k(Of*P@zZswvZ>si)RnL|*qdX>LLcIaI*C7RI2!bWw-oy9UYFhN|+ra!9J zd3p6)&k5Naz-CM#k@~~Tli&Kg+#&*)+6hWQg3n(AWa`H7lBEgRRi9kqX#X^_zB#F^ zdIu?$`eZ^kK}?9VA-~yzP`=ay%(yj7ms1I1^sn-j-JXRl;-#V(8;T~ft9O9Ob5g2P zdQiXN7!TM#!`QR~J6}2SJ%&A=cm&6`;Sw46%Lc&~3*9>&aLuLLKcbJQtI`p68tN`M zFmAHPokd0;=DfN+jPEF1jC0pD>PvcA?N+$1%r?%7_FkqhlCIa|{=1W3df_AKbsh+3vz}AbBZa-& zj!9@Dlys1?w4&=+%)i+wi-XFdJ=)^w+6|)iYd#+?ox4`?tjHhE!~SM+!goB3Lgtg} z@Y&`FO+<)O@=DDmvvv$I+xT?*7qjM+`6?;B6Td6d|?9OXz>KsB!e5kn+su4Ynhe+_pyb&i488-f^;9(==Bvl?d4gL#{~F8@snP%c|p37Xv;es z-%Cuj1%m_7=Y@N_lmgD%iC0SA)R#<YQ4$zfG<0Ydck~uTbj?$7^kQ zLDedb5De|u*u^kpu}j6hM2##`zgWC~#8{dR4`n1#I28r-M>#pRq?qXWEjv{4^M&5g2?I?4XKP6;*@|=2iuxfIa6J3MeT?G(i~9Ngv>~AVsti69UGA zsH_&g-6gt$;z6g~uWiHsC;~_KI5YFRv;>-HL75{$d`3;QYEe~tKuGMJ0f>?NQIcC^ z4K6p|k;2{jijE0r&FL$)$SbZmS9DCW^DnmZ2aPlH7ZONqE67CaP~(0;#*G?-j9V5Y zamrR42x+eij@}k9zle93;Y&rO?0e`(qj4ohr`o54Wh_Rg&@}M0G0GZb-2wfu7a6|C z&y4xa)6mh@K8Ix};PGos0X%1~Hq1fT!xJKzZ1E3H+E0`k$btmfol)w?O>9PdT_rKQHC>KmS^V_sch6iBMtHmfAT|TcQ zfXZts>vZ3vcEz#2Rj+27bk@)ltZb6m1cd}FO;MXdZH2QrnNHbpsl1b(^y{_ipq;OJ zt~x4R3)w|^f=;^eH0tzPI!glAM0#BGwH`-&Pq24hPxg4F(___Hpoi85h&@^Z8=+IKkXC_M7x!7hFWfZEAw=#hzkY1mJ1(hfIgyrX5(fZcn7rC zSWdhJOy978_6|QIq}Xahu5v899opxtcKoksZ;I-`k(%=jb11qk9C;f<+CFx4uOPX$ zkoK~yADD1&8Rpwm-5cK|6+PkCb_BGyxJw$^TjjP>`%3LS9NM#aGKwfmG+q1>ZIKmA zfk#=*s0+$nI$&m+T_ZUvmA_Kip#l5K!^CA(iXuviDGpuPq(tVO^aW8vn|7(Uus*57 zu&-otcgW8D$i6EDI5r$z*wtj zKyuf2%dTfD^Yb`BsMZd z_^y?KNsW9LG@^!D`T#L}=1;MPS-)^Q(Lg0Ei)Cck`4>sV7S6mpzqZM|g?;%l_%FK2 ztsRo+BFsBH{zq#X%o%PRtfEtoPETvV-08P|?2W&E5|)uek4PumIP}b~qMHYZn&4|Q z{OEKW_KycfKRgm`@pA9V5l3Z}5FSh6EMLA-n3<(ZIaY5F$FoY*o?*K~N&t}(%xeus zKg(c!Xw~DU2}^&jbKv>dH90^Q)-o62*a9RT)A*Y2hyqkbAeajra^$M)js2J$@d9k#QtG2K2x)cLF4 zW~Bt}aqU7qqC(%kz0+@Bm)O=@UZreD6hy$Sj|K<@t1sXM;cLm@<4?{TK)kSa)tl5o;5-lbIbL(nqrwHZ9#nko~nmzTwdtH9K`Z1 z6awgGQZ6FJZ$9Rg<|J*lRi~cE>MPv8Re@&xc^{yPBi)#-+$cB2GEAp?f;qY_W#v;2 zEtZ2&o?R)j3lUGBw4%_u=h%|#li$9b^~CwKa8D%}4=qvj15j)@wSA8Wb3cs$8`PyoPHYQT0;Jkcss#HdG zemGP?sg|{x6T1?B)U*7)0)l`GumK|qS8uDEZhZzb8L~6n;#OPee%yQkAbrUt(tb}1 zf8i3q*pHkioCx-BJ(UqYVIw;-Y-cQz7VyE1LTKiquJvkJpzU3SOI-BQy36yr84|9$ z(F@OiIGJ}lH$)^=ki)W_1!qfut^oAqP1ZcEbZqK8?ZsJ%0oHVlSdh~PkT6|aJwA2% zfEVSdF)*uR0Ka8+=C8Fw*1Q45EWYWsi(&&-%b!O6mD!~m{MsA#vP*@}s-VzxXdspj z_oIj&zYkD(p}I5ygtjMjxi1S?B^P5eJ!!3ZcUI{z*zd#Kss3R{X626a5!J4^8oZGMKH>FiiC8u;=ikmsTi@tCY4s_-cXmh#l zn_nZk`v@!>F@p9&k3Fp>c7}>&ddhiS08&!(DzjQ%wd2H$q5+!5n##bM6sb1TM+9Is ztvz%$Y#|k^I?5bMPHxi7sSCt+?lZ->m9AX%n%9uju07V=eA4T;QI6LYpX zIdAXlOX{fBnwL_XI`5*@{9_7In1Ti4E&re+<5S&(#;5uRx&5dSzsR4I((!hYvv9~T zP%;c8!$9|VeMQk9Sprm3NHv92qm@yh@I~t4m$hM+E;8&FFOyl712m^8F>st&`Ugx9 zx^7}!f?B+I|CZ@YwD`5X8pa5Ox9v*6ufe;wAd$kxe#k~b+b8)nqOk~`>6Z1v5d$WD z)^`J^xgeEBW6e+*;fuc6q*&ucsg-0m`Zl#B7|MqIK5Kkdv?fPfqg*=fbJ&BA=o?zuMUNP3N6-jGmIm^^07H@c(OHck@9Dnfq`sza zXlfvd$EV5uw7#L4$0xMj!UVaP7GXr}l#Negi1B&b!|GTn7u#;dtlHkGj*$%V6p)AB z%MXsw%J}hXy|4wByayeg{EkDuNlBwCii@~abOb2A#3?Qx zC|<#jtYu}hPM--T2bpWw(+9YNRpTH<7!|Q3sxC)#)&Uhw6p0nD3c9Vr#eZ901)OSC zmwWlNjo(a_1-EFZvf(JNDdCNFHby^74{Cg!<^~L3THq;dYqIx=SA*LRk-AcUerpgj zTBteSFiW+jnd223X##p{P5e=ilA!94?Zqq2|+KgxdM5Ig_>EZeAaPK1qwS=NyeXC zUSG04WJRp?&=Y)-VJrHWoEe7wqyWmFC(0y9Dq|u7iV<)+o!@tanpi1SuQuV(q?z?N zae}s4UAU#`(4c5DQ0#yX0*cLK?8FK=e1zLXwoxOA4? z=)}tvAn7Y6d9{Nw8+dj~o#csL=8ACG-^lK^GfVX636F=8?yhK!&qdVY6_aw&4b0ct zh*2DOYi-+lsbje##k^or7QP&DeUaDcB=E-94BlC_Y|-t#N-`X5Qgl^G8xC9-r^GLq ziQeV8->+r$$qk$1oo17HXj^5Id2U?n9>yS_P5`(BlrS)H%e-itSa*-<_q`1=)F*G@=9d3kEzl-T zEo-&TWR28e>DCDNmRt2-H91bMAyby5jCa(UX9#cCSUvBf)}98$8aV zwDi9SIKSt$JHKI@c7EUa%=tZ-{7p~h_a%SlNxe9!+m__MAGF6O z5?gR52P2+~5Ta|hVFwe4HdeEwUB5MYdTsY0`Qbu8xm8XTOoNgqOBm0<=1VN?M}(59 z5G)XrmA+G6i^1++%4y4)(=9B+GWpalpMuUI?DsX6aIw>u+`_B{Fg#-JzXT~4vi=0+ z!(DMdC+kTHc7j7z>-QCs71_w3fHl`$Zhpy!7b(^4&y#D!vu2yVqJ@Wl0%~6M`#z_1 z$g0Q{La8%g=cm(|r}yh#_oasA4OaC^mwV~xN<<10w0_bX!gC2i){)qz@RsA*mSrku z(?3C&kE&y9p6?0LUS#1uI)A3Hi=Ge)LwfO;P!`L>+|uFL$rVQeP(3#P!g8xJM^^rR zL-%HkmfW$)R`yH0UX^jWyt3$<;h(?1U$1P6Z>9D&vOfwfw_Ll{_e6XtDImWl5}xjI zZu!%{av7;*-u+|sVeYdfT#JepA{eLLNDXF61m8_UAdrA}^vzv1Fa5TMHOUR2Cc7g; zR)fZz5J(`f766p4HVqFMi}c)f$mB-VAx)7b&T|LHcq<8#qakU`Q-w3<=c`u zUC-UPU%z(ie!aO#)2FxTGdAj1H0{@~+O%KKZ?_v3oVH+$nK1xw+xVYvbTd-ysC&z* z*$xzU-@9MGj@E~{?-eBoX{xKmy27pcQgWqxuE){h>Dk%x%<1fy)&pO#eI6c(HNmQl zX!isyw|H2<7lm*DvBd6Cyml_`d0)*?21g6`+{^+3k3Y&!(99IQnx5Z_gT|!qU95@2 zgyFKU_2tNwLt17^v#?)}v(l<>Bc>}(N+W}i7WxM^M!plDym|qdW$)&!UZ|e7)Qq4*0asj4 ze)^~;jfAnF7~})!)KT)^yn z(bo+U`66fHC1mj=5t9LtVK(J?l6=)`>W8EQayKkzKNJ!DoGCQL?T1q2I)7 z3mK^lial&oFV!OCI%0@R;6zw^!$7-0ZsZ9arz#}OAlhuQJg0p*}?X+rBW`h zsiCg)Rq6By2oC};R`Fd0gidxwB9lBB5S_UwxiEBk(bp*Bpgyl2+N5<$F$|s1u>{56!9lkNM44(bEy=u_~lo2w&lv^9|}*QvBMhC9U)G!c{$H(?mN`RDh~T(S>;j z>=&BN%+KMg^huk> z+7XYI7#I({aq<|CwSx+dL3 zjbzeSiQ#8Sy;0Q-QM7TYoN;_yzTPQ zjv``wGST9kUfAOj(ca2Ar4R@Pj`F4u6MBQY@>Z<^j3#KQg4IwUTwZnH<%I3~RIn-0 zeZ@L#Gd0GqENrx=Jsv$&Ip+$159h1*zr?#&hrS_m%G9+o>v`f$KwizRssC>k|BQ;| zrrsqYIs3uOnGtDV%+$3*=@e}&qmBO6N{_#(ry0`Izq1;v^95ORlAZR>`quuX}^0|7{beakB~H}%DtGR z^oKY#G8o8^QGf+5{bFj|?B~+D)G3F(74Hr3-$lsY6@_#5K?*xc=bab-z@3pH5^;|> z>;v1YC&bTGNFIBSvy$k)qh>f&5Xf_A68*nj<3^nfsYQklA4@xQ`#M@e{|fimVeO^F zX0U!2<$oebcqO1r9$e_}E0kGtVbGqB77uuij}2T&LC0>L8;Vi#(t^+YSm~Y{s@hLD zBMo16Z^p%CLrtd9;D#H6j_|Xpn8JBLTW3MQ9gBno6MB;;V-h)c)SQbL5zWQ0xf_T4 z`yUIGwAXwO4ql4iY-;ekamvKkp7>DESIuBBrm!<5egffVyn;4c_6Yhbt} zfKGwLAVH^Z*Q8PgNS*~Y-M~=TgTbmIwWefb)feE*qWSY~egpEgI z^xWXA#Od%?1#HARN6H8O6;jVl{yQhL(q=U#zZ;263ArZA;G~tKJej5a^~_6gQibWU zT>E74z%Nsr;Kg(S62>b;X;9F6t}@#}-$M8{;Oa?@ep0jfH%~-g^YkS{A<~sjm&ne7 zLgfY_kra82yLjskjHGj{tBD3g1zECXypSeE6Rq&>T&_Kc>)aEqYd^{5gNPq1t((16 zfzSkAJLhW_p;$zEc!O05yR1wE6s1j{c)0UZAd6nkCS$SLWSH-g*0kG09m3p+kZ~^0 zWip5g$d$Ypx3?u%0T0M~QQInjX_pll$`Mrg+n&R4XvkO~5G|8V-V6@b4Z`sK!SB0X zSaTXmEZ6#=QUJL;<*+fhZO3%`Bbmj*El}9*$Y84T{kG>QOo(D0MVwJ&L_g3O33W$& zMKr~$7;seek|Bq@aDIr6%gYV?@>5J6)RA~9<*N}rrq`siXs>rgN|Y@OZVpObXC_{s z>b#ch;AO{Dqhd;h_|&iL^IszZuj1HGesnkyA360_G%x;r4$kMG!kqe(^*hLVq@P`%z>Fu8(x&vX0A)d) zSb$x3Ef9rVSaZe|;i}J*&J4u$1+K`#%48&qsgZ>Mkmc5osLWmSvx<^;O@xv2euQx? zL!8T@R}QgJRDoH_TuG=9_{|OQry#8LR;ZCM`o!>c0cUKSg)BY>2Zj98LCMg%giRlF z#}|pbcgwY&_%e=r;V#)8v`z!X!l4}?PAZ9noO%az%~bqDSW}DfOJG$LO-;vu# zPf)H0vJpq^f^pL<`3?j$^bi_D$O*Ka^>0VKLF<0elSHcjs~cSULoI&m`k=q$`r_(z z7>7@I(fQNfHs4eh-%v|C2~UCp^X;7kQwcs27EN{HVt{x^=Mh~&AxO!HTL&iy$&b74 zeR8miC2D?_a9B;hE;ZI1k zd!-z^aF1N~{MLUIi0?Au6$enO`ee<`fGTLOY|9bPvEn=JEl!A{@T~pCxN#VTCy^l! zTuRie>gW@!G)Wha>2w)@iwV;h`5S_0^c3Gcs7yK7jBd``+&i%6bFi4 z#}UR1oJ&aHG@M`(S!v-OVQU9XNE>#aM{t~1;<_r-#)5fKapF^|3$gd9Ms!RN@ap`o zRnqt9VU18*GU2d1-I(^suLrXIPo%}u$-CSYx$D+61iFS93!7bXuf_9(TyiSH;L%*; z3idR&VS0eW3_)570T;_|Er@BoYVQ;{sYq&aBJ~FnP*hoIgCy#pFT$ZiH zZg1L`;9SbB;X=g+qDJ5mX09ie-j?Bt?}j40jMA;OQV0K24~zlM?qJdn-Nzpfaha4* zXVk|*t2nl9Q?iZPx!JDji=uPAOdUu`&NvTUEJZzFd?uW#+(^3eNf;lhino?|rGa={ zy-7{7-sQzBwo6Z{#&1T-z?p%&PA`ZUQn;cZF&h$qkt>IJ^8}%l<;I4;p5eOcI#oD2 zw}QoSHK2z*Zzy#Yt{S+*(wB&je94o=5-3H5kU_<0CUnataT#$zI4w(g%iP{cNGubb zwxgOdNDfAKCak(eF^u`OZOW-81}dGrp??~iGZ!6&KR|md6_Bk~FvB@e-$b(~%7qM4 z=7Fe0I{Fn!znH9TIfn&eS=p%00@yU`jCZd_IO=* znb1jig2`f~*zS6rOwrD664BR(1+Waqmvu^r!;rJ#*C4nTF{0{YWGEOIaW%RN%D`K) zR#J~OB}k1q*P;ev7WpLg22#1G9`Zy|?XkTfdzmjniqaN95+S}nB-f3kDPtU!VF1YH zDJKhr>r+lsv`+-1h|i}lIZRhkW@3fp8s=NlJ!0peE{WC31e{Eh(~Iat$vo>GBCkZ3 zw$Ofuq)zH)9lN01EuytjE-{4u?j|q|TV2?(S@y(ZL2E_^fq}Hy zmRdnSrLq4s6c0X!4oC%(-7ZyYz3d7K+?oQcaR>65QwGjVYwTuu@D&{W7Rr_@J{b?z11hl?yiD!6Ni15-++gTxeW| zL+v6}gT1s3jl{jP37(W#>fOTh!ygHlAHXDI;$K2wA%!J7ukQyRp^SM<9MV<29YUh0 zwQx)-VXh~vZ4GPtB?y!GzEhQaa@vqevY1rWZt!?pqFTg|`6dm7L#aPk3^B^6d(PIx zL#juPrf?aV{lUC;vWJ6tTai^@>t=9I@^h!U3{IwYMbeqW3C9gw&}o&eJdb4q**H12 z=l7t~0y4^_U1Ijq@C2ymq?Ijg2oa__>yr|bV(m|7xURmcVLELrzH$n`WB9EQs;&>0 z$f2R+-GbPrhh7Am$$twV@{~0+eBWBZ6Zgv0$~0qYhBYvJm<~0sYCG6z;g9lQz^qci z=W7=+o5|_U_Hu8(p9F5zf@nO*!W;+5*zJNlsCeZCQZd&Z8O{yzgiaV!CQrGt9B^te zZ%;))bl*NVt}yp;44df6sdJ0XD|^(R7=F*CxRw`}mT~}xVPsoye&~8)_#-8w#eJmt ze#mT9Rda$L1Z-?a5jTrZ-LhEQKZYn4A=YN=gQ;=k8M3F5Iuz z{E6m~Ow`=d==`2PQ$LDOqUNV%GxeVkFgi&RcC&Y6tLfNtcGQjkiaI{~_5zK%w(QbLf>l0b3K zkN=H`(rm_QKBLuk!tm%lUJa>r9PRtezHaW6y(r-Vrqod0eb1Hf*Qrq7;|DmfrozWRSF2A2{BbJmG@k}_!?dN{KK`8f zG^j$;mihFXPgbZ@b5f80)O;GoyYD&Sfzy^Lb;l=5nF3lv}&rZw=??Kwoqf;!t!85M1a?pG&Y)!Mg!}UAO@?OiLE^K{*KlMr83M}vV z(E!2(lbohxWhx=Lyvg#MZ+V7tGQHgL03~yQpP7K#$l2DB4gBNv$M3lf)c$xEzXGjB zfjb}W>UL2a<=o@~%hPRnCQ|>AFI%22vXKbv9GL(x9r=Ea<%#pVU^J=VLqAy1!TXIR zyqEL7j+aS#pkjj)4b*#qDg+~)>hGYo3O-kW6%`x#_rB%XPO;h4*>1Y!v~{uS&2j2< zs!LT>;8aDEcU1g;t_nGaoDSlIfm4KW#;lW8Zv^^>G7+=NHcIh$9!Wo^6}$>xe~fmO!Sk)OxmyKms!gOClWqlN-@p z9f{5ukt8KYgiR(Y_qPMXk!$hOnH*}Zo(-HxBt^-3--|N6!Yp- zEDltjD68yrw1_4Ip_Rk(~S554fz2JZ7*2sxcS0X+KI;idG zIhlb4D|a#!Z!0q$pkzwDX~;eEcZ}^ahY7M%Sc4n;=u2aIC?^{&Zng%Z<36W{iU>}9 zv8kect)}(?S-&77Z_)l<&JH!YbFY2eSUxS5O#=o5@Yfr`ZRSJ0rLHk)*G03>R{_|s zek5bXNo&?UKT;0T3(>^j^RiyK-9S$jt* z@uD`%n_mdJ>tw*`G3pn8ViP@`J=V?Mj6p;e#Ln{cS)N0)twr0?`LmPjP@ditaXG>B zA$HUwC-jGHb=Fplp3O^*Hx4n zdsNvGioV86AD_E2czHe5408`jlgf)B9bU$hlRif8&8fF&Deuf~Ie<&dHw0CZFZQk@D(J zHdme77bZCg!1}kupCSdOQMiTDq;%faA@l|YYXDJF>#oETrStX za(T*P-2@oUdA;(e7W66J?M52{{ivgSt7NyDUkF8i(f~u}E==^_@90Ax>77+ru5Tq= zweVu)w_ADYDPKCTW$5^5{z)FwRA)E8zIh*w&}{)7ZkO5+dKNa?Sdz%3p}Z;^C7rmv>hDZ3$K8`*P_i6EKhzbe@2zFjs@c_ zPxcBPa;Ni@Tj8@j#0~K<(KFqPXHT$ZW|#1)9S$y@Wjhiotgt-C^~D_^)3}9{IK=DR z!ockD*32=}Ezdso;cNhU=BPPZJi)=-{KX{Z&Y_;e%A7l$Cx{JyKh*muJt4j4@0%=R zj#}a{t{=qD`kCQ0uQ{R4dL;?2`UMg#dU%b8W<9XI_OI6i3_!ow&e_)O?AHP@>rNPe zes`he*+7O}uj@}UDbO|kf^SNALw{NTD)@;z*x9Tt5JPazSG?6){pxAZ3cA({$UHJA z`jyzZFj|#sb0IB0LpijC1taMp*Sr46EqO19?D)K`bbLVrq<#YyrlII#hJF<7XA|># zw~x1Sa&b07Mnp=U?H%Cr?b}nN;!a=?ECuftbkDZtgFW+kUie|!Z0mK*E*CHF8^y_J9M{Oe+vA|(9XK7=k-ysba4 z>Cc<|Ir1*6+@^=kD#R*nGzD#HDuLnF4~dd)Ul{* zs7k7(BSP?XrpipcG9XwtmO;}+Hz?Yqbcm9(wEAcc4ZG^KP~$Ccb^tT=toTJxd0Ys) z_JtF*@ehUdbq4F`T%uCw!kZg#WX)VT*@0X%o~ z%U&4JxqV+W|6-K6T)-@%;X5~X?qP$nJn!&tb7wbQoc|6BbeNUnaWl)ZpEWv~=I!a| z*BW_yijF!9xbQU=Zow{AtPoYE6%Cpt+Y+dJ1Gq5$V_C8drNw<#^z(eOJikr@e`#iA z8mtq)>6YgOG1v~i9t7Kdsw+JpYmBdZX@BO^X&eXi@Pt@4>=x3X` z9p4JpoqKs{R+c?{2DM79T}l#R=zk9izK(}oyZJVcVs~)#;{w;P*;Y-xOlUdTCEeAW z5o%n-d9bz+&At)88V&qw%!zN;5`%>7^F*71(mx>tUA9h4?Vz)^?B6y!DEOlIE#zEC zS)Gg9<|4of615xD^NS!VJMyDER7AO~(L@h_CXb5T4f&YKqR(s#Aba!fEA_t5+Sa2% zxe5oLK5v3zS){aSVfXo>*Kx|7*EkAq?NG`dEgUAjQHRFv=fT)i|_9SrLeeDYb5@m)O6+n0;{GeOrv6 zC%%p*ted!yhO9}sD-Z&i0?HCE7EI;1&7sL>&8cVZD?sam>-h&oJ;^$pd`&&(lm*|2 zKN+h|k}1l}ffwTxpcchoDbqqL$3G`WPZhCwhqU)1Qq$KwxQ5uxq);6c>mU#sdH+_yZ95nq>pVS|~uGd{t zM6Fxg>K61qw)E-G=+cr4iuRlK6WjQyabK3$WO?0l5-ot9Kxq)@IY+@W&u?>RbWSJ# z*sJFJ-ya2iH=(B`o(?+K0YNPqYR7z2Mi5y>UdYlKO*NG7ah^FOS{p^V2k?2Gg z32naU^-1ggn;|Juj&TNinNC9y%_+;sw>Wk*`Ms}OYY&^dW3KvO278K$vtAILmc+!D zYhxQBFgW95mqBrQRS<{uVmQ#$0U|Z<63>=oO^z0x&Cv#hhr7^UoL^XTu{Oi5apIwDISqZp+X-~~j4uyNYH)$kIetZMmhN@^N=K>*j*nblTr8Q zu8HQ3e5HiX^L7l!WfQwIW|m~6kAZm&cvXQ~!FU;@Qcc~esd5JvLYyl?QTGZ=m21YG z57gzOJ%H(CAQqZvxL;@U z-34I5I+t1%+x4fNu2o1(R-t{kVv}r&sp1H9vvuYYOLfmGBk7$^dx6X8z zEkZT01A!EjJtEd}p}y(}iT$!ZSY9|RrHTAQz*C9nK9wldn-NneBZo+(6*w8e9VONk zO5h*+(*cA$9#!QrMOj13qXHf}rH)v0K+HLNRNz$Wb13idzDhpb0i_RW+j%|Rtn+S~ z9b=lEWr%{qA$)-3r+X-WcJpUmx8h!FPB8=RMUM#^k)4-uz)dli+n=h0Gs|-e9TZ!H2u&ea*n&mPqRwNE>L4G+H=4 ze5b`T#;;j4^*H0FMMINQbI*9q%(Dgzt^Whgx%%ueYoV0&W@ao8fRLJ~dF$w$kxD@d zVP^oWj@j3U7zVk{j%8JL%~|y8b-uk3uR)e4o*3sE{HxF6T4xp{AMaok}C#}i0HUMO$ail4mO_K`FCf%k*m#zSN|br;0Mit%Y2>B*B{nf zUhdzqX8N?o{MMN>n6-Kti^3-9w)kUlKZ4(iR%|37KJJmq-c9yE^e=_A{EGkU=2xiB zM#i-XUCI*Dad<{=!I@mlhlG^AM6%#D!BRuzjHM0Fr6V38iev&Tq@4O z+sM$v6Cj;m(1&dN9vu~d%^j{pcY&e2%xtUH(g+~l7+8O$^chNeYKd9Obt>^ajpai< z%{mL&-#Y=sXxymMP#-kQqhbmDd0S{L8o(!K#msc1R_fFOrHG+#pNL^BcKn!rH;E%E zfbT`10y~@{Pw$C50pFZ7tt}&BXQzrZpDvPPx}m8XD63ASRsdl8v8sU9ftVZ^Q+18! z)Os$?QD`#TSKPlusH=nhTk#Prn9x;dD-`x)Y60Fp?C{NV7~3G`#oQYSRrUw%&Xj#z z>Vkf+77l({)Ca-JSbiiKHZY8g-(EkvW4|Nny^TW(tW}1!`Y2_>d#o3wq`3T+TNbF<|->ceC26zxEFR(TXHuTc^31(*4-d_FlOn*-N^77qJwDH&yO8p5X# zF9klV6ILx#&%{Vd*TDW8a&_jwD2X6-P*vQ)s?{+R1f)0I1!0q=sj`J9|JD3clq7s8FT%X3I*sS`3 zSZwVceARNuTzCYeddZMW%wD6T@QIe=PshFJ>rhXl&){UfXq!utIgX9poF$MZEqXiC z5Z6W9GK3m$lgeGDR$=!;^im~syyyIH&3sJ?66ntw=fm3o+@h`_hFs6ov7JnuA~-NO z(ocy3cz3=ChuSr4KGvIGXX}mC(tWZ)xi}QE-3cc+9C8ZO>HZEKEQR^Nsar?n)n8^_ zlZ|DrKGgZX;tp%IOhDte0A2tUlWO1!h)RNJ*gQECf{ctAj@+4R4r0KRPGULkg?8MV z(5$cL45pLC=wRgmM(?-d+Ke>uch)n>2N|QiO{XzuTQVf6qfb0g3E6dI&}#8HwMB8- zBF{&RmSYp2P9WJg2M}wuE-$e%tUx0))EL9pFkr@k&lQbIx=#|4HSA&mtiy4kZ~Zvtq!PX0|`S;_2`4$poZox zRo1018u>s%h7wLyCMnWT(_lS$)L7;~-LYR&l~WU-bGu0WolsCm%wXht_0VhNM;bO_ zhD~Pdh#4fCnnw}#NS*ZL)PR#7;B~P9FJ>TsdmVw-P!c3bpy^LgL<|mkPm@E%$m0+e zBcI&z78p|a7eg7%q0BjqeII$k1j!R7c=$7ER4DTOtWf2o9I%V^nAyguY`#p48~l;) z(DMcK+=vn+VX*g+qhWT(K0(rGqO_Qpw%D8)dg4Vmu%OQoG;Ec2CsI>rZ$ZT~uJG0K z&Actx=J!evv#=@6yE8gDiPY*iImoa%=I#7+BvQ7|LZZ{Svi(dX zsy|ie6G+s~hu9UwuLn|2QK>^I3_1z(jd-MVd9vzqusS0`2v~a$${r<`$7a1}gbR{G zzXzHaXsb!*B9-OEhB{W}+F0f~l+-S@+#^i;rJx2w)RH3PyfI`os4ejax7*AKBAWx^ zp$e3vTx82QTJz{ikJ|`$MDEtmU3u(~>_t+MGR&=A1nSNy#Lj#`AOki%W^#gY2zgTI ztGO9SFz8!9D8ZnwnTszoD9|@0-&@pW(09$CtOk8gRR;RLE%bGCU#HMlb;ovamE1vJ zj#>`-N|M4fmm)yqi5&s_1rV8VzjbIQN%P1$Xxhgz?c6yn)Zk9bqRM0Ooyg*&q0a-X zC)c9_9lQiv+{4Wpu&Xrb(2|4AAk5EJm>)m42i!Q=Ds>%Ufy{x&TCGb2&;a4~CuqRd z0SOGKFENX>=G|IE#4bJj+Asw||EWkp?#zlz7wVS?^#i!=Dai{(Dzb!3{A;uK`6GN8 zKzHz5cLOCx3RTL$Wo82?KS1~x&4S+K22NMbdCHIg+|WiA7kalFu0`B%`@H}uVh*4#2R0|i(K$8X79+vzFDGn+RD8f`+e(Z-J%puS%A4LZf%oPEpvWko7~3|> zQ&_0XUE0U_`aYi?Ev%(is*Zm#fx$!Oo$;194-XEU6kjT=AVmnbkl$G2JBD-}syF-M zsl6X7E-KN`WT8)Rnj9=;;Z{QSQFS6uUk$pidE3x14Gk*BGCEX@BPCSKZF&r)IS{+$ z|E8TQuc4jXPi<%Hr?jIZ=p}@#rXeiD?<*Wz=6WsY+R1#JI%GM^#Vl=QV(_AdkCP`2 z)?kLCNG&rGupRC#@C)RUA zuJ>_GzyVw5%^6rGLb?UG1F$HmUSU>In|`y9RHiB4H1l_UCcFSfpg>0}^kuXFS$Z)c zg-HH%0i2N*zNM!R1*#Q#dQZTuMzpp9a!Cq@Fm)%HP&V5@WK5wXM?6rA0lE}yVeCV8 z!6d3eDyij-a&aTRWG){ypvET$_S7S!8agdFa2ose4hTIjYnX>vPfS!lCB89-ghM*1 zA8H3ebt*;;xa$pMU((NtRWqF0neh5;?X^H_Ai|Y6&37#op90za+fpFAP)ESL!En39 zZ6(;BGBj2Vvm*Ap?Sr~D?f<=N6QxzX?z1~reyVfikuAB?KNrfoJ0PdpsMN_!w3+Vf zWMA_TLo>i{Rz&N^)bHfDEjZ*l+-Qdz*Mg!iVcHS*1zr7|J@Y874Fo~_XzRhV!3Mm@ z8Y!JL8-7G}Q?1pLB*a^`PP^Bj&20*rGESH%j>8{%#Be+ww0HQ5+iJcB{Ca4@H9ZN8KW7y_F4q?_N40L+FW!39vvdW!mK?W5UDi!W$C%6V zQ1Cch$dP(g>o0zN$#}RBLB#P9vNtidE3*$Wu-C1rMCY8w!QsX>10Szj(*TbJ{YmXE z$uw)~G0W3$-FQ6lSIc`}_6kM*IM;B3cZ$D2&GIH4eX|{}K{-{!jj?6?hwxnzldfR; z<*g;$Qoxfqwk>XqZ0fV(B{~66lVy%8KV*x16G+`MG7w(pxwVOjI&AKqIdg?Pa7N*Z zAdXd;D=22feI0Y2V`fP6rM;e=l4%;>lfW!+R^bY!#LN-e3LpM}Rz1ozF-emx4-WO5 z&D@OPxK#9-tJhHW&9)9~P{kOUEh%BTzQsR!bzF8a$Jwh7Y?Xb6^#j=UePGdo_M{q@ zIQI?BAf0Grx>}gYhQzZbLW<_uoaOK2lyp1hG;dPwO<1oxnA|Pyv!!f}-+Fp3n9(2d z?@j(~NuPczM&|GzLA&kw0{ZW}kv;2gSn6q^*|*B`AIQW{Ce zoL>>Ab?brYbFYw;X6NBQ1?Dwl2o^|6TR-Qdv4REQ>N5;~W7F=*uFm((Dq5a|IkeoK z;KaUTSyNgGQ|LK~?@c4bCvXNMo_`VoHovI|4XTVMq?DJ<1cw`D25}2IR)6vPR`hd1 zq{S`7wP`>kGVp$!UD*80($!nj}?Xn zzeUSOcIpr6z9Vmu_dUM#YdP9fSY_T8ha+i=2p}IjO^sCZ0o8J*PpR4~Hu2H?S+v6# zQ!z5^FjCF+o2oe4P=V|=Xp}E3CWO@-C(+eQDua0p%(XIOxWN;L=6M*8^K$^f`@T1U z&)f+H`ZHK@E_=C-gg>f{zb!_XHEh*#8dufK5Acpjwpo0=qMWA`8;G*<==Gq=#unQMB6unRJUI;0$7U~```DP~i7IC}UuCrC%Q6E|FG3eSKu55JPf0BAdXFar8)j7E9(XCh@BkUxXbQWd07Tz#yfdS=PtPI}6T(SswySQ1y zj#@$xo_ogV`eU4<^^Mc0|6#*S-$2mvUBU3WoWH9rHk4WtYzGVJBY=K@9}QeWr9)gH zP*Q^)TxP|r_3f_NwtN6+ng`*IA_Y-!VuhIK9Inf*xm44L2w!uV7wcO&aA!8FsvM#O z_n2p|c!W%`kN70OW5P*nE?Mk~jl17TVgWf#KMyGaG)uA~PwC!e5bjm>{Bn@f^$ zn{O?(s)!zQ0+?>9$%#$2kC=#Qw-{s+c4CAda0eo`!h8iHKgqf?)6^bV*7$ez{#aR}ZrfaBb-H>qBpg@~>sqUW!ov>t~ z%3Zi8*mwP9X zj4yh(i?8`?@8RC;s?QO8E?V)hyH4ZBK7J?J#}Z{G*+QO6OzsPn z)9>o@rB8Dy`-8wW{LxE3GCyB$u& z)eFXQX2gKidgVAjQzb6SvsTI9t}k5UMtmV+tcCLsP9E#{fa_54#+qE~)hpBoT8o0V zeK3a!aQBsIX7Vabgi&3un@-vO;@sAC0+7&kUX|M zdEQ^hO5<5<0n{MGt5C@~)gc2wMVqgUX8$4ad3+_{=B%@3h4pHY`ch(7{hYoWCrC>o zMmk{w#{7~OyC~#pNE}cAfpA=6^7Q!m>_hnVH^ui3WV`EQ<=gMKUYS)m1wR_{x4-IN z>7N8BB2NY`)RVEP6)2E4Ycb*mX9VfY5_d?CX$(CsZu$Wz>V4L+E-S!uvbAd1wb7|B zgD{CN(>9P^^HH$U{fofd`hP{h%?-XR{x!#@lH5@@mfYMY8YL(BZ-B?cuCI zVsFUBlH%h&ej`JH5D1zF5dyAD+8a*^_P7HJF?oa`aOjqc|8WB$Ia!;0K0VGS$@qvV z;s{lF9wh=KBB%u{;aRkX$AHr7Q|Y657JVdrERXFx%GFU9zmb%dJn~Bui#IxMIf-eY z6`RR3+vH*?6uAP7yKxc@lZcKwK9awZ*Ou$dYnEP#8emufK4;?}%&J>O4P42FwsG+x zi7yRc{QxxFVd7P8LQplK=e``DY8t_h|izrA4p-S4-lrI-Tbj zrw4(#ZE7C?jLgmTM}m1c7plfbQCk&Jgn!!zJxdJbL4k42sS(!`xrnX!_-s?^yJFp%TKf{!`F#3Wz;BI7s6p6%E|J3kK5UW81DKbzfHrXsf4q>XppQYu(?!lm1t?w z+W`^H=9Amofp?oxnLOqZ?^C`Bi9pWH>+^_WAazFpT;ya-Sp4?5!o*O)JP#NcUZBR@ zWXMwnW?%P}+zGVMXmfdD_1@8gr>?DfLfz)-@urVpYc9bS_<=-EH8+C+79pksd=Ymc zPr@W9^q|YV@%#S*4C7=IPhe-=Q7)HS`9F*N@?&P9sO{MHhQ3VG6JWQn<{~_!APT#v za~I7Nx;U|3{Yw)U@=^R0edJqte(A6`tU8Gmh@M{cox6w7yRQ;au`j1;N^RdcRW~IT z`NGFtKI`H2csZyZ`g8^X$*XVU`DvJ-(zg;*pU&W=s_bdPWPM7`EBR>sywQK@KEk3T zzM?w5K(Nw_2WK6wDu=6h-!CL-p*!I$u6I>zO6=7rd?W?B}mLRhBZw!eWtA%#%n9Yu|TSb${c*dPYt(e=4Mk6T9q+&c5fVN}DzP&gNXm|ZY zF>9;eCu= z|AS`dijtp9Szcdri*unCw{4ril}222cM!3TzAyixRw$a;8>H`cn|coVg22V~a_Pek zH@Wp!MLY1ctJ&+Ye%ln+8G~wY$GLisa3Y%d;y~ft(Sz6NnrQY#_!eF*0?c^cQZ9mh zi+IK#)%Ve%BNl$PM@6~SSTNgiN=qRs* zNr?Sd&ml#&_WD*%%m~MZjZ3$FQIFF_l8Vb@;eAL`Yib_>Yn7fjkJPG5*_vbbI3>>` zSta3w#)0?0SeMAalttKVfrACO#>&E-!z2{hc;PW=d8B3AC#*?OLqqNC$DEzdk($d} z3sFrl$`Sd4%xSS8cB@}HWhc;ab7_GnniL{-8o?G$+k%Ig8Y|DoQ0`}3@v2mhg-{f~~KyK--ei>`%=T(6f=y0w+ zZm=eIz?gBd)VHEMnOI3xFDnD}`K`bvIEMKnT!U);luBQtu&I>F|E}I}Q@Sd~dTZ&h z)JPKl8y-0N`QLsEpT5P7HPcebm_83h1n9IFJhlzO%y3<};{3Z|bbVHf;xWxQ{@}A4 z6+4G^uB06?-MzlzLrZ>Oh_IQ^(rET@ti1`pQff`wD2wlB=6n9(P&2DHepbWWD3QR| zY5W)B2RQ~QIJ1uGfXB2c9L^;TXJ_HmW1>N185bGFuUB7$HNN~jh|xU!SbQ545iN4K z*Hv|Hvc98N)^#-p3>)?+pQ6_w4}n1_+8>I3^@idinR97)MaKI~f&H#=N`}XtjuXrG z2P{7g7RRcGhhRLUs;)W*hZ%(h$JPT{X(4^iJJzgcCthuILVvis9}v%G$!dsYcN|;H zcsJiM(dSVBDkHh*e#!uR?#X6Gll2YVLlmjc7~Xp~$mCwyGWfU)a9f{Me8^{&Nq@#x zcmagC)OvMB8OJq3TdeKG--&>;o=~1I&=9~mIG!i7dd&*N{;+`e>*~uZ%Hr*yh1bz| zi1cD2{7m*pzw02iR!yVUMrwWC)f$k83!t;XfldVq9pqr&x59@?qc^?kV#g=D219)6 zCSwMp3)*H(i3iJ~H>H=^9lEYi^F8uhUu3GOwhFNxnkp0e3K%;fLOusfg>9r3Vymv`XOqj*creQMr! zX8UEQ+nx}R%AyqwaXTDI?Roe0DxAhq*lJME@_aSKyXCoZ8b3&2e^QUQXV*0T5c*tJ z>DH=A!m9}fgO&YA*j|vlMMQpl)csAI@&Wj~x$zJbozR2oDG>E%7+lL?(j<3Y(CQd* zW8FZdy1m6MEBjz{`~h!AxSK%G0x8rp)dWo1tSwAO#Eui*_EOi0@V*?s7o$Oh9-+!E zJUIDXtrM`4`y9<#Ir$mO+p0&c9EzxLQJ*e7ZYs5=NhQM&D)^Vu2w79tOBus=qHeb0 z(vC)QRAxseX|Gde<4X1OlckzdrDTpH)7}mIJ0yG9JY(0R8n&gA*5`X3=1)4@`RLC~ z)_uw$>&`_xhLA%l30)EA@6I89Yift`_AuG=xk)}1qV8!X7s~gks4DMjmvr~8&MaP! z^G_1-yWYyOrb;Aw*PB@sJK0GECs7zrjq~q4%1SAH@+1A(Lv1qcnJFC!#-pXyTq#QC zBKGEbA_8=CA5?crk4R3>y-y5+m^5<%RCjxItHWoEo(CE7ZD(@cMgOn`gHfU+w?lRF zt<~RTFGqcM3BHAlpB!(8!-R1_MgYV$%YCr|LdG%QS;p|^BOh0J|0u2K8K4iG%WFO| zvHn2iapGy(>kYu02;&~kSDf=eo!EwgL-^h$US?D5RXrlsX5YZH^BW3HA6C01$^k9Z9C5#|%!*}KJT=5l_E z3UfhUStS65I+yleV+q@>Rg#us`+xCa%=`1d8J+tvG(pd~7h4{}R$}dZ706_6E5B`d z1a}p0q7$^d1jj_@Br}CFsK*gRPr4EX_RaCN)O^LnVICLYkKH-Q*qo0^(rd?`g2kRUz26& zN!@HXDYFYqJsBN3!i+HKfp$aG;UFALu$bB?`mwQ zD)81FjmNg*T-eWwW zhV1v*wZ?`jxlIc)=NQJ04N*v)3+#RzJD4wQUQbipKv;*LvpjE(j7slS; z*@>M-U$SELyp}DO%P_np2IQU8dblyG-C8dH+5wJO@<%HD4>}L4?nxekmCYf0AKRX< z_}wMn2t|xZ*1~}Ok;I4|BgCX{1==oW9??3Js>Ln{xQHp*muQu6WO31cd_FI%nI4Qz z{VEc_;-;FBD~B8DFL|7h6A8Srn96fSX5Q6KpA|bhRV4;-xgHZHCKoyI%4|21(-p%* zNKQW_c4^{wPl=|~W8{jUJtuaR1`T5x`gucU%4^!Mc`DU@>{40}ME*;{V?s7neNmHrEYZ)g{#0lGX&^J5J#>NA z1NdIY;ic;|Vl;*Ov#P!{5YQ-MIU$W&ky0617Lu098?Z3d_;NU&P*l{FA zM#j4%7ue_1`m~VkaHPREnY$tRxQ3hmxCXVRZP)5`GFTPp#IJK*Rg) z8wX_W%;p$oakQWsN#Tn2w}+(>nlko_h}qK%z$e)hWIkU^q(*5pITINd8BHk3VpAY8 zlD7e7GYZEUW)FPF15bv)tdcl&`^qZ2;Y$OUU`ZYu%6P1>R=?3PC>mH(kg=4Ytx+8n z@KL;mpR}r>*0cA0H7((`o>`J+_c!bvfmgrq)oC>&e32pE9>{B>t0jD|JB@uja=&_P z5}RBt%UaTqeA3n*Vo6t!xWG;msoWEj5=dNhKSVF81He!B7rmF zDf(_=$1gF_Tj7mhjO1rh=Vg17;kTq$9c!@iR{``IlH42vWjNoc>%wrxKy<40JQZ-I ziyu#E@yAwF@k;!5Z>jxd`n#C>5AwB5Zfg={4R1u4NBUV%YR^WbV+X zvP8C~i=)+;80n;u`YLzPlR_BB83hO7A`x!s(!7zbr)=hQkFAytXhrjq?P{H;#Z;H$ zG@V>eZEMI8pUiZH@15$Zc@nRy(__2lA4sm8vRKb62nQ3pVh-;-5YQy@sg%%MrbEpX zh)girRHJgtGaH?z1eNr3w9&olj4eHuCMY(aR#G0Et-Al<8%F4(!*=)Rx&u? zsAQv)e*6w4%}|vi!o_LTBk`~hZWC14 z1as96sk1rVjwvnvpr+n$#{j1>X8Z8j1Rl`(jK+&6{lqYTQVU%j7dz+o2Asx;sbs~7 zq1)I}t3J{mSW{7e5M;*hob4=2!&p2$_M3UB-q$W(oL2pLZE{(WlB%o6FI)om+l4A` zd=(yW^8*>T%t?)sQZ2J7r8q|WsX2m?CqR$Tf5d}yU`mcZG9`-+1tQnD`3Vt?GCN@7 zI=y}@bSq@X{gH(^;XYRt7Q1I{g;t<~LIi&04W?@t1fY!ZN3Nxs@owCFPer?)cjNVH zV{Gy+j?7i^S=*8PCOb~~w8;2uY#q?M1|m7J?eHJYOL$$m9R8g5?hVCE^>yIrHMz#6 z^iu*wJWJ~|AE;bUm<*hgvj2q_=cQS7yM%WFM2gr4B2y51KBoe)uV0LX^Sabm#jme{bNh>tA?`n((fVr!1?oLcDf&3fyx8M@tH9w9L`(D z8@7Em4tAayhg;E3Jf;pI7CZNWU2hPPF7ngdTLd{z7nq+X^7-M&Gm z-~Pr|ru|muNp902TW{b#X=KV+U-6Vcl@yy($`O&Trzcz+-v>ePNAKaL$=c4+==7wu z7Uyui=nH(d3xK>xdzGM~#7^go|6M-#iy@+N)Ok$Bp< z(25QdE2$;BdI(N>8Tg=G5oc`NO1HNbH!uAjO{En#E}drg$nAB*(vaQG1Lmwt$2aUb z8&U8J@D6DWd(Wn=K35Oju$$?j->&}^Oe$#&{fG+g%A)IZ*k}9P@UKLH;wif+*y5ra zSl8i`B6>F$V4p9bGMvC-!y(;1-mrDFf~h(Dr>5oyL^}Qn$7sL(ztko)-Y*4Vw?J#o~RAf~*0}?5x`=QExuwwJpd+_O3 zW*=}O0~jd|hrl0&L~wHWJQ{Kh#sG$a=)^odKu8b~#kQUUJ7Skg{ZM^{7Ez&F;XwK2H(8K$kFJ_NdqkhFbBY1Mxei z+M;?xn}ErlKVFd*yU3|HFRdDcP;bKPvjWBIt>r&pRtM_+fOS1bP=b0W|Q=uN6KQMwn(}rm;_UE(3Z{5r1B-nB^b_rbzRwe^;lXJd6>8&{$|25@j zl>XJJ(u*kVx9^=kDLO`kIt{5W%9P)kLjKD~pHb@mQ>DJGHZ`E|$-L^}?4^LDAptdC)T=x_Jtruw$u+Mzyb7$AW*R^B_BDY|?n;Du`%&J2 zaKk=vgIT<)FR~rLi6U>S4AqS-%ZKoPfQGO$?^4YIJb&V01-`;4>yYRn-jz%N;O3%&O7G5f>1v(7FhII}ilh}eg z&Dn)O-%@dDZ!-ZhQz>?9TA}z2V-8HNzTu zGZMp!b|f+l=y4$teo9B5kDwyiv9A&=n#0p#mvc$r&dd}u7J`#_mrSTILeVR4?MfyI z+2SyyAaH){a0M1}m5(|cYIGjvDf?jx#s)GTHDkEVH$7+*WmrrT+cfyUFF5z4P&Syc zw7d)^rJIEv8{|yUQ^ucIY~0)3y@3=M|0OTs9un*8z1dtA?A!k8s^5lsBmI8eVOd{t`P0rI4Xu2r-*|B5aHxy`k>~?*R z+&dbQ7rW7U9vdrj9!g?<=V4ClYCVMStw^i7GIGsS(XM2xzqq^R3&FYT>Ol*UJtFIh zYQ`*6Xh~LV2oH(&Sdwvn8r{NSzSy%!fCzDok-GcaXUY*I4wkVm2t1NXuy4wV{6Z+_ zw}*Cio7md+M0e9C%f3cMXOvZfeN%4a7qUY2+Y_@+70y1zA(j$-Clwp$5ujOT4iSUt z#&@vJZ8Kz-1!NjI05c>(0AVuM;j6-IJN`)NShH{98y9if^p0Mit3IQYNYYq!2;Ygn ziU6hsu8G4)HYxcaN;XFfyCLc(%ov*%=#|ZN)P`MWA+G0Khsa*Zb^|$caY}~oOqjv` zV_nfYS1rB#Qu4cuOsq+zV@Zcab*)$wj`7il7`1U4GM`b4k6(;2ENHt4#@QTEQ#23! z6))xYzUMP!s&g+f3>r-QvsQC2?aTd%aax z11w>&DJBONso1%|T60-sY_gfF0h#taCrVZ>c9*QUCuu#iIMYA3#l?RmD;5*%1Wz`- ziA_lJ=w|f-Q?;C7SH!+R{l+CTEmT>ekD~*2bD8TvQ8IBB?vP{OCqvv#%f(Lk&6?5v zh)c1_n=!7MaKgXR=k~9dkmS@bAz9|?FP+<}R{bkTwugmW$8m$lh~@+pA5krqYYO$p zgNbsx7%%7Wz_2xY%|jp=MCGM_0xIkK6n zAnhzx&4rOGaPS*$B$QKiTFJ^ECw(ib-DR$m3DlVg18FYy@K9khPi7LhR43sO2C%1Q z@`6ZlY9_x`vhto}$%=nMVcVDJ4%jWRn<$(Z5CLBGFQ-L-kGc^7N}z%OA=yNo1*nP} zcAf2Q$GkKzUMCF_wx#rO(Ah#40D8sYS8@%2P%HKZV_g8s`R({VBc2!qp?*LoGH+p z0lOwdn-id|fljz^(XG1e{nQFeP?hhyK45PvB|v4zfg1uHal0}0ALyHXxA<;NTwm^d zDz$rVK|_Vdx{i_ z1j@QXqEJX-gKV2e$!h}wSCr33V=v>;DRK?rquP8giTU<*evFpbckFFL5p$j^Ab#_Ed&qVLK~QC9xX!oxyNRi6fo(gaW{Bi=BsSZNI%C9@KB-HsWOOuvYakwa+D& zvT@>CW$G(>@&J#Xvb1&cgg1YFpf*W5{M*vy+&{4eI z3Uw+zp|$oMYIqwKAcG4o?0*3~+eZSqcUO06s4^$~zm9L*}8@9TsjW;IUz^e7h}{t@J&)z89Qqhy3=IhW;V*jw)Mo z0gpt9B-_G^AR=TlrzD@ZgSl_$8!~URvNaa)h)joU<@w845ZXP*Wb`)Jtqr|H=G7}( zeF2Zy2-(NUSaR{~W819Yar>Zt1Fu`p64s+_Ufa-U_VZ2^H3&2kU$#3;z7D&={2C_~ z&(^z;qNIOY4JqieBYh#zJv@k_2S+n6zT`5{X-7&Uja5m}W}z&sdHBQ8n8akkt>Zjr zYT+DwbAg=-REDmFr))~ExtE(*WHO@hqPC7+zNU6-f3(mDm_R7Z+DDmZgf;m0B8TMA zAh9D#MgvAt9{=3@Ltzg_TdRfxp_KJZi1;_LDD{MZ-01hluvGIlE^A~wY0LWh$zwgx z#WNi&93Q!FliRy>d}QiIw_F6{2H4y0Th^?+zGeMR=0E9$2<6dn++$qZQyQ&mF7P$% zN%tW>k{7XDeYDmdni#EmC8w0AW2Zmj%W8{0QD)1aG6x~~s!AmWC1aFR8XcoX8Yf2m zPv!Vn2Osh%KYNzjA9W9f#~B~>*XEE;vUW23xms)cqW%X8oHQR{wUP~S)J>edAd2z_ zTY21=Tm|fdC|ZE~*F)43^tM`c|ITEDi2ZkLN6-pDrnzpjufTeld!R3G@P!)+ghXTk ziTrIiwH1N1UX2Gk_lCU006=0@b567j#Mu?-=nLSM2?RdNLEw0x^L^?IHuMsY>8$x9 zFhvY=$BUu4ucu@@{T^hBuVPa9s ztZ&(el61!+=G#Z7zGY(|ayMyCLP$r>@i|19_;=D^DYButIA9?$7kFEUZi%18*4lTY z*$?nk@G2p^n6$O;HFTflbGa!H`(_8!E>;_DU zstamgyydGf7u6TkzBpYERp)ZO_4bk zx;6gs$%DxznN?oTJr1>@J8EmoM-EMkJ>%_7zA}sQaQvlNF#I|lY&f?AmniczVOFc)qmCwn`Ok= zuawYB0PxCtlF8UJ(+(t29Ld0!!^GSCpg((58J4Y6&!YbF^jp8z5KBK52v)o8am5|h zAS4A46X=QD|40Es^!j^-9_vDM0+UB|Ye*_OdOES$37Wm@B7(2ogkdM_p^3)!XC*u{ z3Ymwi;r;Z657I-C$8*{+xIE!K;wwI|aBJa~(wQv+v;OG?JwS z`SObEF67(eq;RfWhJD1(*k4AI>8~c~te@~>GI9Yf*HspAH>|kk3jAMiX~b_&8N;4z zy)y2cqP7)NzCj-@vhPLd(O83yk9&|Kxxkl=biU*GicrQyy3+W5StPpy*?{%Rmg1J0 z0+Z_^<>KniD^)qkXy|O0$^B*Jep~q3#F70214Ig-3mm^CJmd<6_YRrj(F zwbRK_8>~G0F9s~JqEx-Sz-;bPy&M8$%@+He>Rq-@WgI&5_dSdJefdv*)*_TKE)bd9CRm^jvWc z2F6H1bo?C-zPxYL==**t~E4=h)K+DK~)N@oNgL`i39o+L^ zs@_kT^A{SOo>L~(^FatyboBImJVG01V$b2e&s@n_POU2Q_qCdvk*6!xq@7vuuRpuu z5vlH;p6Ef{HNw0>7608l_&&ShryKskJiH>44g+SaJA|rK#fRKiAT=P&8ayAf2o6@N?{Wp4rKp zWw>zoPod)G>U{x@=cGPwE+5;+a9R@$r_m)g7OsYG4TSgAI;FhtBL6OKtllGVE;-fb zPmt}82Rc4NEv3Mj`p*RC&6q12aE4~5IuF@q%i9~frv87_`Twr3pH7TUO>ee($@H2Y z4n~a8sU8Y3m{T*o&P)gJ&cpn~ehmZ5e(=1En~Lh0H>QPZJ{`+XP0KlIFf}a(SO)KA zFJd138PhUKt({&|ivGhj4V&fs>?Qnfre$PmT1*cIPs@d=9)9|?K%QgaS5ni$E;BGK zRFj&P@ORUyE)>4NN9V;}K6DTb0++Y#Yx3-KZ*3wtybpyPM;35b)|EckNlEfaI%s$L zi?3Qz5PKfgICmrh4SUmLm#6}Ymr4^~^=&@_RQr2boO{2=$!RT@lz)hr9J56;IBQ6bDUM<>uVE_) zHRBPa`-{u7Yd(quU~Q{9iGF=wdmbI#z#Ss)@~rY5M z*b@^(r04k|ERxg-4?!Ld|C{qFnR7F!4xjZ(wO09I@;JWyh7XcebCl93 z*6_yRQrRUho1-fH6v(P+rZ;nR&NY^QvotS$TyROuKsjCgCMv46N*7!u2%6>0i@z}7 zi;T~4^$>)Sx=M^0U`l6C)g)E;@pJH!sesC&vnfw21^(hL`;hf;U12RXdt2<69P`YV z%(N*4+Sk+&1=sLB7`fJi&Fc)taTsTL#Z)lXyOlDUD9P%kTdO48BYg%;aRCDL3gE2V zZt=d6GW>KMCmZfsR*?<+0!Dy7YJTC^hWI7A!tAsDWu4r@_=dekbT=>7fqyZTmqtgO z?MDipUE?dQ+g<(Di$J(8G z3{;;}>lkTZR(#kx$6cJT@SMRsoO9T^t(}x}l8x~u&S0uPSx-F`@d&SkCzwTRC2_yL zv7GcqZX;=W4vzwNgnPU#jQ4@$L{McS0GttUBLL3Jd7<(t)pn>wH-?om5v* zw1f8$mng9<`yL8b@n#v zVS0@K_Y^wLG1k~)$P$c<_sBzLE&bBsLeB&YSyVaJPsmos9K+B3K%ikGnfSorx6$a< zyohY;$s(i#{`KS1jWHlXE9A2~mv3Hdab=W?1CtytuL&;ynSiWFDTA1rAX))wyVRVw zfjU&q)k+=NHRJ780OKqG!%)otcbNnl$vIl}8T7S;9EPB)(Wq@ho7*d8V zRfVya)0YxsbjgMWX2prt@`a*m_nsixdaR6foBafN82k{qeqH2@SJmPYNIkx z;piDsr3;*^N!F?=#8A5AkfW<^$aP08XZC364Uuna)x*4i9Ne8;FZ%rBVB`i*nf)Q5 zg5;t1GOmAKDCJ+nu5>8a^qMhdb;}}SjuO5_mlVrSE$x@}sobpV`FboUbN$V%DT`F4 zMapgFHy^1XKVwCaFT-JG!q#gE0%cbZ57|D~;rQ*sTrluzEjQC+tWQLa3X&MO949F| z+3NGYV2;SOZQOg$vnpS=GyQFxm`U7Ql2(Wn*`4lrZ3YL0)v+MRo$U2IU+^fx6YE z-wWbwkLG?|69qFdc`Fa)-hTUGLyuVQY^ned4};e+3TW*X%JzxvhQQ|!0mG(Q@p@C? z_1XqDOd6$UVMPGXwxbp zX$?uTiifNg9YsZpm#xV-NH}CTHOGlK^}c31KB2{=v9G;OAI8)MO09sgYXPL zMlvF|)+!Mua;ckuDLOB%A-6HBW3_*FlPXX77>{7VA+=+1YfXv4hhzi94ojN97`J4n zFyd?xyDo|ur1+-Zw9MEBLGKPa^p3QLNTVOvV2Kf7$8jAbRgZ4*Ut=qKpIl=9=w{0N|^!$TE!U z3v7Vas#3Di8IH=J2jE+g+(^Y*SqR=7Yn8=!5jhQ7WofQNpmh<2xGfHAdWoNVX_Gq5 zLFG+qF4v5XkB&)aeYI8&L_NV1OHcx*1cc-RAm-Z!D_YAJHc}WP*wzP~rVWEMc>~Lp zqfiX_T!+*t9)W?sIKE^&3M=>^R{e3xiXEDK&;XX-^*UTo`4C+KHad9p?gPl36P7 zv4`^uV+HGMV!#V%G!#6p#Q%w0zA0sPJ11GrrR>20rV-04S`{4991}{({z66 znD3?Zpu;UHyPU|x(VW#IH)TieM&~%WAQYLHS00%-ihoq_-SSvp56(`h8!TDpNu9(A z1&9Gy(76ixH}pv#+~Q3$DnP6poO!25T1*srXZu#LqF74=@y!{@uMI?Aja}kKv)NwM zhKp55B<59^Y{$lp&&H0Mcb_7?3!N4-IxZd9qY7igz7ASMna$~FfbfH%4e|hc1@2ly zg`bn8&J$a4eRf&~YZZ~{ut%Cm`rXxb1u*s z!yS8n>0x7S;6}(PO;Yr{c_+LOX=T83OuEbtU`ozG#4V2t&pCA`mj;X1RXrStzPyGG z$Kp>PO4i<6fGZ&kHtW{Q)18f3I*+wHx-wW81Pk3-*rwW=De2GYVsP~s>zVUI(ad?V zu|{YJfqXC17ao_DR&x;=x(VfQ5NML?a>nL>HvR{)GF56oHLbhctS`bABWWqxasBMl zNa1aMF5SK&lc7@Y9>0Ce+hVR_%*K*wd@q(XvE~U!b#=UIM6fdS8xT3l%~9L`8=d86 zV;)xh!r-f2+z&*2=Z;KNuQSuCa#s!+KEXA7Li+Ft8N(;I!#yrwrU@aL@C$Ji(~g;AiBklC7XO$;;m0`O*^(E6B|A*+aZz*_hnW8 zE_@=LdsqItuIkM2@nm%dH|K7(TL&bF((88y?LNY5*41yivDOQ!i&rgOU=85XR> zbl2f0kPKF53!ZvH2=g9GjMN@@mT%>lYw^jEWyFELmBwpRcbN-^5br53=7{qPdH)FO zy2DQ-{-AwsEKVf(fyd=V18ym$oiU(IP|$+;Lj($Nr>X|8sC$GPSp zf`pvU-hfQ>yArpVoA%Ri#4pby9ByEIh{rrki1nc+=ED#HQUjG+aIuc_;eJIM(Kg0J zG=;pF*vw%56vw2pL(dRXCAbjA?q6~p-aWs8Ic{;=qG7Y`G4fTGICO1v95>Rrw}Hu~ zNGFcaBl!I&KE7x;hGSzUDU)H9djqb{plb_;g091fr^Jc+Fe{{btQ^;FIEG7`wT<{! z^Se5b{Q|#b-i?7rLf*DA*NzYlcQng>O>n@~=5uYM`(>^sCKeB*L02mw#QaxtjeE&? zOqC|H8>h9Y$!bjOE~@8#aA3(uEKKPupMsi4)airWq9BHi+?4fH#Uyk)8-{I&gz9?jUaUJX{@9h{l|xBab8*kop~c7S9&Xik zcDve}N@@x5k;C8gs*xpiN2@<4jmFSG%fu}8E;2D2Gnt9(N?G>A+>#Y{7l;7Z?U9F9 zfB1DQOE%YBnA}jEZV$1ZdDvn+X|Bf0&$l05eP3RRcAW@CA6SSb&MA2OF z&!ksnlsuCW`RC~{s6cio`p+JurV>Gp(x1`MJMsL~#>j948i~|m9TbZG{=On*KKi_R ztXyN*4xpu>=$~dml_dZ96Tu{KO<{5zeu59#7b$CxN#Fx1-~Xo6cjOyLQ@-C%zbY;5 zspRt|m!NI4_mc3)jbwY``531z5)MB>SFGi~r(s|C#i?I(r)lk$^{FRV0k@PC^j4++ zIio1KB4W-8ZFZ!Vqm6O&WxrU?MEIijxSGQ&*&NcE!*$fkPY%<~&+rTR@!OHVeO@QK zs;i3Xo5Me2e%F^=I}WbrM?jq<+^F4m!hzmV>Ew>sRE1Y8&fqh zVOab?BAU&jrJvaezx`k8sM8lJR9~pjblFUC3%9)JOB%mA$#dik&j$wlkw0m9g@vQb zB3}d&Fht#Nt*Rx9?CeJAK6oo^ZDd8=2#p$N;_O4sbt5!C8U7Uyj?g5uJfPN9Zz){a z7y|;Y&H;wy&oz(SPJfC|T0gHFq3O!-7mk74wuCjODrZOBW{In4@&V0YVt7kfN#X%C zf^qVlKPD8__45>e$5_Uytbz=V!%H6ySzEZ*mBDS1_C=e-@c=Rh^f5O0Q0bM@cpow=aD^@kM*9%#)K#t43n% zem2^`mms>Tcp< zooIkTQ%P48v{WZT(HM+T61CMrY$B3|Altfy-F3U!uK%suW!H4q)_@i!+)>m3it#?+ zEn^ss=wLue{@>qo-bsSl?q~Hw<~`>;=k}cEJhyXOU;lW$6%%V-+l&9Z_B7T-8-DQs z-J#PL9H;Xu7G(S9rm5e_RSnktT@CfwzVi7e`}zx!F&EU9?!zzCXrbUa*#my;ZG8lOO$(KA5%2iE)6LKK`{ zY5EH+&()fFYq_vsVQ3XT_EpPoo3rRi4)=5vHZ5JtN*WsKX?PVnWO=gWP?~$Fq-e+T zi%S?CwM$y(LNccdG);a_BUMAc5wM; zLBqIT$X&1N@vW*9AQSR_ieH8DccV|P&Z#*QBT@a;=HSNX2XUNQkG<)q4aTx^ZNNw-#+%k%}$q#!JoHQEs6L$WfQJOwVB?F!u>f zy}*Sq&_D1NJ^?D)LB($GitXGp*tIwEZa+W{R3I1AhYfT3cW@}1UUk;~8>6qTH+b!RW>U88j5ez@tSKMVFl+xR8xE$Uo9m*~re7`ynpEO={uih3uez!QtW9+%^OCzlC{-FyQ;r-zpGwL+K$92v75_9^Gou`k^86gfd z4pVPV(`cz4lkHf0t=niUrac*v_YQog4BhIFXOe?z-eWIvne5!N%eod`0vnZ{3E>CX zHj&?bdvSAFy6(it+pBc@1^A?5G%pn4NngD8TUg!aTvRt>1e-=DUFzC5jvJ5f-{D%e z>5I;k=Fky#_gmS9*==2ui+Q>P=PhfB*xFrFW{=C^qW2BqiyBM*J%7Q~G-4u+2xsxg z0dW~U&pUPNyN%ngn6oIQElePCa;#~c4E?$vv;E_=lBP!s=~?#}J_`8Y%#PO}m(83- zvnSGeZYpPSYCiijI3Bf7uBz4~L6l*@b8 z0^E7=h}`ZkXFqdx-J_yuQcm}2ip(WFr|ypxwuOC(c7Sbr^L^cref7_pZy@q#f4hXg z(VzYPhx~9JJ7?A9oUJ@()ukh(oO<3Let!dc^3H|=iMkODdlc2|qVi4E;o={n{?dZ! zOXy+Qf4?y`r}=(+4D<&G@ZyE3iMW|uf%BJePpUsR=QMJ8we|yDUdq9L_rwrfiw(sS ziUTnoYu%J{kX1fSILTIytw9qtm35m=BRaSCIth3-*FZ<(cCoK{^ZmK6d^Lyh>8}~t zII-TfbWH8rklDZN)h6i}F4I8MykC5RB~S}_B=TZK?X}%{M7(}RJqG_kuKe0}Qyq+w zy>aYcfub8Lx${KVWc=!l_xp=YZqcF;RMJ$lBTwFkBGb~~$?w#R=MZe*uWtFUW-2#@ zyvNmRI}qm_AjIaLtCL%K{oE}zv7oVLBI+@he)@QQq;%0qZ8t2i+s;g-(EBRQy4@J_H#z}0!bmAWJO+Z2TC4CqH%jX!3kRMqOAFB?ZJJb&!Fi@#e{f* zcAd_?PR5bqH5`ECN}8_xu%u{KZ|%2nhv&~MI{cG>{2ycM?;O`(`|a4G-QClOTpkwM zzFvRlWX8OMJJ+bGdm;(7UP;q6J-cRoBJyS5djM&}wG2O0GbR_;Z;{4=;?LI|Qh{o@ z?+y-cjV$hek_$O6u6z6|MuD}{$r{e789%dWa}6qPNzwA2ZiAdWvuK@cANU*>%KqV{ zlG7Gy)%==I)Y>teA}jG?yZd*?>fa5dLTFN`qWMLcyZ#(M?`IL)c}+Fr3U-x@o1rE) zE*polnCQcKO{Eiwp6H@4om_u%%<}oiKvr&T87;}@P3(W#hMCVnl=`1wSATtG(aikX zQ8OD}s)4<}ReV-$UgP_A(yWBdV54{xpz(?Rt(@Wr6g{_MFMIg8mSMl2X-3xy*b}zUrnf#2L2@z3_s^?mZl^gnG)D;0uxTd(#4yn8?SoQgvoVpCvV{fzGnl(vhi zzUE4F*qC%mL%~M*Vi7a%1A?4}zMFHTqMqQ)U}8Y+P-mX`K~=?Zu4!qYe)hmw^$JwoOeB zQbpJI*Bs}RF=}X8{U2A4qw6yp-@nnwnj5&ztSlnjbt7g9UcvWnH2#ARd~vAouf>Yu z_P6Y>@hTV3gTzZO?w`o%B)8h6GZGkhUB6s;T*7Rq4$b29M>Xdx{{l~Cn}{oVzGf;b zYDBY9A(5Nd);#gT`rZ9SM{CYt3uYVIU_Tj1--c%&$NZ?*tBa5_dA-^2IiCvG-|VOV z*JsJG>li-#NzYUjAs@F(Z)wWgx(#<;5&J<{X*|u^z*d@?%LuteDUv?JGX%Dm!%u#{ z=3CtHhQ?d_xoisHw^{1UqV}2zxok8odcO9w+++McO-DG^#d%FHoW~WlY2K8}8x4;S z#4e~~vrkZWSo zqXnW@_Vh?)`ZOL1v`j-D4IC}_2r2Hxz=%W`o4k1c&z=|LX}{-?Y>|9D@yBnJ!t}VG zo&l`oKHZ5b+<(q5pznd_{JeL^c#$zOVYoM(j4U*)4_2%Mge)o*CkGKQF>6$P)jxy*O|A&Ea{ZrtH&CAOO)On6fNPlo$CFQIL%Y z+S7XoVZFMyI210PCp9gKCd;ZX?O=81dwO6`?LgI}`-MVVL20vlSh?#*kd_Iy(#U?i z>5yr`ckg-WM`ux9phA|45JS7SFr<@}Y%v%^-6(mvQr?Ucf!62ZkGLDfNGS zQctZJGUK@&T8{wp&h4}8eP8}PFEC>^CdDjJzRL^TH5+=^&2_=My+8?9A3{Jp*vONZ zA_Oi7)@!aA?md3?DSLBLZ}>jTjlYv3tg{1rWj?PUwcMa*Ni(yf zB+M-XlxH9NltjDYA1i4tq?TC`hdleJ`-TJhP)Fu7d^ga%K5kCV++H2ytxf`al}vTI z@L2GDPwOem@S&okY_ehg+oP9Bd-rk){aexr3SOt5+w4i%XSwb9Itcehp2f81i;1SL zWiP11?dos>)yjLo9iAS%#G6O@zNrTg0~dVtH`BH6s*51{-C`7+Er&1##9BGqHi7WX z--!VE&4d=KCv(Z)1k&(4!GNXD+@J;JPI8wtEt%YOCF)LTXeo_2>RmJbsehd=x8p*N z1nwy=dX~e4as+vE4=?e)b^P|vsQO>yKj4rb#{iX9-@9V@7j=N}zyF`2uS)2943;X% zXhgK4A=G0HziL#cXpFOVxHhczRlgF^E7E zY>eW6^n<4p%)u}A!M}T3^3GDPy)7kYjo^cFtT}sdZnSs(`$Wz*7JJ{^OYHbRx0KeN-{K_1sl-!pC9KLX_13f_c;-~>vggfE#)5{{ zrlq09>~S7BnV1D!S#jWF93i+5NpC70Ig#Im?gpBV=def+tMBAsgPj1zwCchdyMY~3 ztd6{!yF=z|klQ;h8M(ACd{%5?$yxEqZ8-SY!1$D&{5gXw6~AhX{6Mlk@dfo)gEF4R zYesh%s;}uisy$J?bez-$qt=-dh~X;hS{%?3&jq6v|H_8ThUhBzlzc?H|4DJzbf}Hq zJwk&!%H4Pfztq74tZedDl7u(tD1@3~$f28x8(9{_v3Ceful@B=ygpU*V$J0``OTAD z$TB!&Fn0HePHL##T#N#QY1F6?%dmRL*=-*5!VR_+ zp8<_~kq4|nUIgr^!Gr_$+kjRNwMLhyI3|+*RUx;HW*Mx#~@qK#qZnlf> zdXWu=Kq9-c-Rx3i9c`IY-yZ7@svBi~Qw`UI<9=9Bs8o+<3Ua>NcmNUag>SSbBPjE@ zh3@Oe@I}n)_U19zeLLtCy!aJ(@xXVUzG3;xFaBgs(ZSk3_V1j-DX>&pj=%c$d|sHR zxI|v+A|jYY<9`lsfpIjm?EH@*t^l-Vk>e;@NXFzI5xag^E~{%R4CW=ZkBzLYj~DxP^*^sKk$%LFL_ z7ns@lrHkI@*`f}1!S9%!zPPz$8oLlean>0yTgKq#FGTssQ&DU_UvrT9*+NvOpB^!| z@XV%?|4_>(Z5N|qgPb%2d^hY}Yv2nR6K?F3XX2%kI$v^8Zr*JuaCK_b!)UDNSQq8aXr0r)GxarOGt0{CJ$g0u0)s_b zj8{Wpz3kvEO`XZ1$5{Q+P@pdNwf>zfK+mb~s)Oijp4VzM3RxIht)9u*8t+#an9rLx zed>mv$weEOc0;56o)=ri@Z|2FllvrGrIq`SigwOyI=hbBaL*p;{i>a{Z=`Kp#RW=6 zo_)7g*5Zu4kh6mhqC)CQEcJC8m}%JSDCVk$y&@75(m#0OsCV@qZ~pi>R`peTKk&}p zb9eiS&#btR*EaB$U!@J_JBj7F^W4%az(Y#)MRU*o8#YYuL(jQxozEX9RnVHU6;w|N@ zT6o;7VlT|g2;p(F3FTepw7`jTiPd8`yoG+l+iL4)6+UCLUVS2D`=KuiTM zMTL2#Dy-)}ctyr5=O2%@m*{aBUb`1}MrGTM8pjJ4nJ1W;nQi>3+@n9R=gc1dC3s~6 zp6Shdn(4eh$e(9}-aKiUwBT7(#AhKf43=j*xsUCh68Zwi0?O3RPHADC?1};pvGy*m z(!=r<#04ww)7+*az1vfrpquBSkB)<<%p1)mEc^}fmuf2B=eKl3ftuZ}FH~VY?13It zj!IlX<4Q-+EZ8}{RA_X88dMBc_*2fCuwmR?^LLYc@)>nh*n4^~hF+_Rr~H`8od(Fe zBv^2Ix}LNrPJ!M>%wCJ}D&H|+FS2xuo+QfXEuSI4R3>1qbfJ21df10vJSHe;J(z;e zDBCn*KzQW~US#2z0!BMpp9*^Syw3dE<^{gu1?C3ZM4Db;e!vS{PbblLQ{J^lylc05 z*NWeIJG(9$`1&1Rnoi%lm$ztkrgOZ7o!-Kvx3I%oxZAt-P4C)QylbEHu6;@{(*+aW zE-)xE>0JeVRKJnqUGR3WA$)}B+4OWS6456Yr-qu!kb=}n< z(^2;luW&5(^JpdU51~CvU}Tw9#=ipoMgL@$l|5oumTP6weUfpdu`$cLGT~yQ#EQ$g zQdhRP&p5Gb-6wUgtmE^4sR~(_t;&4{Rh9dsnJW|SGsCyr&)Z;=qg#MSV;Y!bT&3#(e z+^2QTeOlMtr*+MJTG!mCbR-%PZq9)Z!Xd=0e%7xlqET6}V8gYc7;@X#p3? zcFl#!hZbTCtb+LOot2kSWCE2)a7e+p)wb0aiO>it#zSl7piliIv1*Tp|vg) zccB&+Ds!P$7mB)2!i5T4sKbSVE|hekfD84wP!6GOoAS@gKM$ecRbkch)ExdOcmsZc z!m;S*Ln0t)$r&(t3e)_&Cs$cyto0~L4^{u z@S5N-FpG(->#$;0CS7TPVPF;$S?AK7kPolP83txCk##*3lO-PsgHy<($Hc<``3y@> zTKXXQ3FSe1-w6bpY|~EE)z-=Kzd+ zEb)ILAA|Wc`3x&6?!eaC*sN@^pEYH}z$|7M`3wV#y3$%*X$ee^yVj}BYy3-Y5)5E|lCbF)~l@@oUtsMqt zF_CpH-D#z;>|tOQ6Ioa7imA5rm30;xiV#bHUAaovI_UVY(kupc<-l4TSlKWzi-F!8 zSgQkz4g<3o*p&lIIIx0YU={RFGDSi~3 zq8Uuf4BBD_tFbC+CbqMxWl`UHcpQIT=T9G?m4No`rM3W(hm?}!PbDTUYOVQlSo)jx zyX9&DPTmX)XqgQE-r*nqpS};3oqsC$EoHaTRZ!m%%At^3-yFw-uwM8rDPnXJ3%K%4 z@asiBM+|vW*tOSy;mhd%te`q?9jAX9wMmnxn{Fh$@RV=z>34V9pIbBz9U1~!)XfY| znYr|%d~QLu&+-tfY3h_UEkpGgEO)t`% z6DqyUi+sabcUP*dqOsZ4exoLB{E6@+mx(+^yLm19d17!1Oq$CtEyDr-q8HZMq}qW; ze$p>3!SD%ocm!L6PV@Bub|0nm5$llpCN0w);spb&@^umzEj@*uf-q9AG0-QqurSk0Gvm!8#L-CkcBV{H&BV)tnNmji zINzm|j9gcYSca*X!J!D@<37|{wBFfHGcbM3AYsIi2@z_>PzWiN)Izg>htAThyjOle ziK*vt^)c?5B(64U(CU4k5TmD+ZF2R!Wqhg4II|wi|TRvN(&g7kRmDK{`=z^%4 zLSZ<#MNXyNglJ~ljofNPEdoB81K+knz1N zx=ovT?mnWE(O~{}KhmI#|9gJud6cnjlQ7~{i%pUSp!AMv5@H(P!yApG;JmaKABmpy zQ}P*y)JC)@T`ONDaYfRUdzHlOkr!Jo`B6)(sijvR2tbj(EQ+etgR#K)Hz#kak z4MC8DJel&JY=2Y+I70bDNtYXeLkuH7s?74)pB%I-r_&^yQ}heigAtf8J2L zdMHek`ZgTtePYuoftoz%=PP}bfncpk@GlXzd6s$thP0c1Y7_I8T(9$$dInf_1t6-g zyq#V#rU$5dGX2mRN%{IZ+6qW0M18N1Bk7JPY4So(y@CuBDE5-kR+sX&gaL=AoTZ}Z zlBh|%1`gm)72_l2npWdKCmhklV@7g}(`$q>Zv&cCJs%UDP&50~g;$BmP^8ua(p@y@ zF1A0>{2sStQ;uL9|D0-NstERihg=h?U~_$+sD+vnEG3a9_cnt^Wzq{YA54Ov3eaT6 zQ_|MWH7ynGBeqhUDzgg_LZhBk&K+L(Oi*HUV%;+y(8m-{ziJK74k*%ywQeDXA{b8b z6*{e+F_;V%Y^9Qial*Z-eXoFxf^9&(Fq=GpOn*YT3$r827;UFvZ>vBWZ6gVaJ|=F; zS8sDj&2ovu z19en!><^(dcY&KS!jY7i(Xx2PHdno>WN{6}pwjj2B|}4~PBH!nXv9pFgW_x!GFuFT z1f}d%Ce*W}a?k@vl3q|m0JKn6c5lKXwl|?`(Ggq36bIYJE>q?PuFbi@jZS@)%i#I~ zZLnJ(Yi4;v`fP<3(8m9;*4V?SoA{;UC_b>(3ig~`Q0ZdeHdE^yP&XMgU?0Fve&C`G z5tNM29I-tPQ*Toy#tO{`J}-6zfawlBn%=7vl|Vv##|qDYg3NX*n5!U3Z|jeV8J2FO zUuRD6kM&g3;9z!rD#Pm&IroW{`i=|z$kQru8YC1^Jz!^XXuZ?&h@_~#q$b}(BrFWI zd6AkB&0^3y)h4!1EDq&sdt$hZjSD-qc_By^NjYhU;*U;vAv0$6#EOpA?vK@PmwGyB zc8w&3$F6=~Fi5AK&B>E_R1-c7#Cbq~f>A#($P11wQ-<^U?FU_T(p2KX`)sJrkoG=2 zl;|&8bS6nGLzNM)G*pgq@NjO|e{CN`e<=$w}FUh%@*n-6AOIl2#o?IXsBHRIsVV3N z!!&`+3ruo`nj*mstfR6AK!~>w=A;J04ZX;1alfgWX;w6UKpqUyislbo_%#)M81T!Y zG*?8VikNg_5HIoXd7vw#@-Q0Ire*2OR+aFgh#e~F+X^>?(JCLgZCcX~$u}r+KcJ?A zQb!m~H*#5!Ca@!zx*-A@EuA>Ui1{m*sprU+f;?s6%6hv}KIhr68P7L{ZZ2br7J@;4 zBNRk+J|WsVeuUw*{1BgSR|^2~Amfd>J$@$d9qJ2sJ5!)vM1Il_L zfo@&#D#;{7!CB}4${E^uIVyKW%6gA9G~2{%*!NTd%fL~7Arqm(iZ-3iVTci{gfMO{ zAlW$H(-N3o1zF2KqJJ@3OOLe9n|WW@M_J6A6y6hxN~yQ=tVeyl6wW;iK82WUREg9K z>d8i}v?V}=87hqXV`^I|Fh!<)nNk=*e>ka0X2*M~09Ze`hzwQ9<`^6!5~_89)=UfCHly-1P()0X)M2~ z>wE|k-$_!qfmL>BMxgwmeOw|DmV%WXF-9=kzJXy=TBXE|hE5wSO#d#Ig;+r~lae|ECmJx>0osEyeHvy-=d4UDhW2$211U5UFVtlYSTJOEZs3 zK|*?}-6<(~X%qiHzezNi{?ImqR4|#!B~@VdRZIvbFu1TeE*)>L@iR3FBU!@|8EuWS zme6pi5OkX_byJjF2^ZELfeKmB<(i2S21}xZM1=f(Lo81T=F}0YEB6Xa-8HF>MdCos z1~sKw<8SlB2myS6fqg7SVqwyzE0F^9qf%xFMkYHYZ2v)um9i@fEGY#~l&vCX)|F+< z?fJ~@QDHFQ^Vf1#0alcOgU+l0`6WYB`3h!U^-Ij^sh1D|>3-efQ59`3(5R5bo_BJo zP4u_v+N5HG=wts%c+^w}jY%Pq>Ulb8H3c3 zewWCDUic$2r4I8a-9wwS5oFSxm2UR*s$0tm7-Gw%6=d+@DSFZv^_H+T8HHYrMR}n8 znm}sfkWPqc4>qNeu{5ieR-|N$;v(=Ho_>q6rHjk81yM^nV=U7+9uAZ8$d_h$N~$=r z_&bWwjGy$I8*QRdWR>9A@M5kg+Ji@-Dh}Fh`<6r=ZKI{M-AGm~6@m=gOtbk?2PsCa zdaw@Pg(RS3Qr-Jmj|FeB#U;gTvP2Ez;~cN!czkf57w?1 zZk1Y(hW;MtHQQGvZ8alMO)U?#TH>Um8VIlahA7R)j>w?GjDOe0qpimvMzuJILK2?? z4Rz9s`5oV7@n|>jy=WYgzTUEpPw+$fd7UmD^C|;>uaY#L^r7NF%Wm*5*CdJv(Xnd& zOxtbnCc|Wzl&`9zA`LXSFdFUa1Z>JaSA>)C2o{VQqNo0r=&Vfxl_5?TVd^#7?GqCm zH6IY>_l%HGZW5~>KsmCENk+?*<(R5=_A*t2awqya1ZAM=2Ub2%YZGc9Wtny&F^QfJ zm;?aMHwrVKipbacK$VUL`775)zM}7t$mt{8SR&9VL@7<4bcR3H-88rbChEh;K9*~e?cd}`L+RyWV{$Dx(IG~5 zW(fVD?RpxAL5Ofl;X9Dl8=xzHL$s9NxY{JNr;m_B`VOw!aW-~7|E2*09!ujnCW|Lk zQvf+WmTgfcp@YX%j)%&Rkz%scxsi|3aGsUp?mF*#Y6c@MLBmwmxS_j+r~F-o;^htY z$F~Eh0r4S*Ds-z26nRwT!%Wm{+u~_L_<1i33Y{r&wG}6+V*~Aku&h(34dDIbz>86k zYVpZ|kpzb*RgUGp;YBd60W6>=MwCG04ueO+S4jR%34aeBOfEe6icBTr@3Vz{F+fLEQoLI;!B^Ty7T_? zhoFj#HW7cP00lfp^Mrbn{^%0r8u;<&2-|d8trsqsp>77s^@~addCC!H(%I&SO^pOi zlb^}-Gt=Ln7UregXNWG>5KJ`EFby8d6tek1APJIFGJV;r7;!g@Dn`{x>oXrsT6{%2 zPSaMkoAZGCP82WoA-#Q*9HMl0%)tiA#*S`_z85oiv`1 zC+VTh@3gd=^gL0aPeuYZhY9hEnKS92_dGN5)UcJerG5W`U6y7 zuZ}4sso4u7*v+W_P@R@&W8N@96|%_*FN6d8%vX6CYpcchu0L@YRdEzeA?oWl z%1yywU?ca3T3jUFWB1mx+95}ZMl@)@_xlGX9heq`o>MR=@rjo0z_(1RjjOJCaa*dY4?J0iy#%e>=1T}0YD`c#fVzct~s&_ zs&;yjvqNwiL8!E}1cr4Jok~096?&aoY&m2>R8cf=W~@aE3%DL{%`cW_-z#qgaF!A4p6lge36z zU2#c5lZr~w>Iqj$IIY2C}&-*T_?xLO_e>q{{H zh+mxZ)&kN}FfI<^7=}&PH-;)+qM1wcb}=J2n0Hx#EdbgqX8jL($`cQ+)JRq0{@4&| zRXH>l7``oI9-MDgSw2v+9jdvWkOGgH9(-Qlw<3{QPsv7{SUnyzp;?c)HR~ zxSWBh*h@{juQ3f-$^~mV#_D}ToAzdK-kf(32&$z>n-A7rt3`c-S|tf8W&gwSsl>*T z7%)2*v4o~YZLqkCL*Vttt~PToKdss%fCM2?kU`zKJ!sYVGZ8u9W6(_(n;4SxHZj~b z5UQddZ-F>?Yz2l2IK=4;c|WBJB$GZ;^C4=fB{#AoBmtIwX7!7AXSuk@i6QqYV7smn`fDR= z8zrV}6CUY~tSYhS%yTN!JTKzmRyxzo=n{571uD`C&|gH5qzLjob zQ_`{0N5oXi)ZY&rXLV<-p3sU&9Ds8C($iL5Z3L2)m%c=BO<-L8WeFQh8UzQkrWhBa zC5)B19*m<^VyfeMg@22&uoe-bS!P+dX92RD-K992!#{Q#mTYk=aHtcGz0)ra_B?JZ zAE}|mU{Xw@!*&U(hom?7dM*45bivKQHy7 zrgXJ+uIOCBN1`qHY!Zqw?Th7+Rd=kqgHS?`1QxP~jv3%n7g$*aCtba8EaMDZVY(1in$1fs%UhN^5Yx9z z6I7w{r528bv;C#zVra)v}6t7!(u=lvGyYrR14zQ8<>B)xxpRD~Zxd zjU^ylTfmEhfgNWiB+Su{|pM__VdZ>dwIl1f?4OU^ZsJ_6d! zllF~no)~#n9oiTzjh0d>=NidIyPbZdEa(R=%hpZ1Z`ys6RV^UYH=R7xx_A$3aV*EmVOcI*>(?^b4(O1)z33?{fyn3Rpm^+O27>iTj-Kg=~A6 z&8lCHO`FcLjWtw?>>*piScSFu8JD8wV*{9~gz1H>{zPWDCbVK)P@sCW z)-Co$g=yHQ7Q2y{zOW)wnPsvo9a3%z8+V8kO;2oNAij23-yj@yYs}R@sFNJ{Xnqqgwo^0@{qJrlG(YBL*2a{Ag28nl%O5KL|;AQK5?UCHRcNNiRzwF7ZGC zNB=sp_p$iN4bNp;q6~d;t`-9~5i4sA3m^7wohwsHWU>5_qPpyam$pf(Q<+ z6pmf02t0)1A8?HOO$?|(Ypon`X}`>We!CX!5}y-zm>P^xifb}e$xRayVxRH@NXxQ? zRESDUJVkQI7?e(>Z>bSUoa02spBFxu$ z%`}NYvLYZ5weLwdt=ynNxdp|H;p+i&IHoa~{Rt)iV+uuy%54KF_|J-;`+Y0)0cVA- zGlur(c)%(Z@78|Ak(v^0;;dOMho3<8)5@4L!~#@CX_YKI|5Fb`C37Y2 z*6t3V785y&_WU`N+}G-3nWbf>M|O|K_-{~# zEJrVc&&#md<0Dg;HKkpclr5ck6BZ2tm8m2*cI4A2RAM;$^3I$FRKTS?;i*@taQL#D zfCF`Y+oJu=aszeC8?L$;SywLwXE0G7?y%`=qb&CYle!WPU`^5z%hdm#t6Go*4o+S# zhFfhoPO}Pp^d>E}0*S9ZZR4wy$?B#)>$?buK4<)P_~j32j8Q8k;}n2;MRpS3hK$N1 zQr6W7H|@CVVT1ENg{L)86P2>t!dxczSjAdYr-d0hVy+phoW3TlI3r%6+{{EXpJX8# zs%gCT+E6>BG3oQ)RpFJN@IB@GeA}v41*MfUSkqFaijk+lP71K-BYzWECc>7?djZJy zu*+3o#+gGlYZJn@<}K3`W0qAjx)^X>#?xg!6oBl4OLaLYWQQMiKOoZ3eF$`~IJG6{ zh&EvvZ|kcWtMdN$CDp6DU9%3Ui}+?_Ha;4+S_fK3gDBTd0nsRbsl!gX(8CHOS~+`6 z&I?lzW%v#QI2NUu;}TS6ad56xCem|m32_r6KUS0&kO^ly(#=fM+)xry>pE-zFC zb3*P(TlcZexTiWigg#PbD_08XtiPZFXlE34I^$f`p%rL@O$y}^NT`o)-EX>yGJZg4 zwJ9Aqid25uc~q6dsgeLRn6^O`PEB!8niZDWsU`qP?-&Y{a@L9!AO(c9T`D)bER}Xv zwT9lQ7>>#fUfK!pqrP>C2q_I&r<{Njv=j|Iq+ch^B%}q=KWrufm*hhU$x{+gld=gt zenJa?l#X4Raw|8=(EC zmG)|7ZLJk#LX#wVt#J-Hg{{SEaOrS}Ubxvy+&{!1ew4XDy>K+TpR# zdil6p?z09O_H8a^r)$bjrmd`lpb(fO68Ca?H@mH1)IAnvcCsA_brCguwbP-)t9?By zjmze7Q_TU|t2{XxB;bNJSOajRtu|GEY+Kfx@FlDQ`plYHf-XjZcAY-)kpg9;d>A~`=fe-n{+3=RSxw_VAS6^@I@ zcZ+D2i&mxj6k@E~29i4AR@jV+Jd+G8+6<&DG9)VEn38 zX8zwfHS~wSbiXTqF`$lqb&IK^Qa#O|5FQyGxv_Ueuk$BhV8XVm+BXK52YpwRIeIn) z-wD2hSAniq9p3bi_mH=F{jv4O9y8Y!aW8IqXvIS-P-(lkdIHr{Zn4_~rbdx^aI+j1 zrfwisbzsfB2>dM^t0PX%l5F3YzaoEy>6{3~I3>V;oPFB9QEm@ALT8Qzr91ln8LBoDrQg4MmfnWf=kT8uWZq>A|t@#rD`Uw2rq1VeRMnnd1su9`4G2G zAR*r&8V3`&%C=kq}1S#jtFt}{C~4>%62 zX}uua8P&=bG_t28G$5ObOi!!7>SJD>(q%<0zniU6y4aZHonIO`mj_?m^76+@sUEmCZ zp-P6$pboK#xFN=-By7*N{8lp0#oWSEAEZ{BeW+`isby5mB&@F)Y(2i?EsQejGiehPP>{CX%Ay!=E`3YRIRNv2uKN48(|ltl!VnRe4>=o z4+smVr?Vftuyf05#`FLOkX#?-T6tkIU>L%j@#||JuvBYR$ug2qh@`P~m&9PLBqXi1 z6k!6LHB`DTWy$t6Fqq7UX%Cgq12J##vw?3_o?u?keY7K})|n7etR)v*0hHZC*=9Rw zB0T6@CMF=P*OEf2Ut7;1Xx9)nWUH@Hn|^q^3>Qm9XucPT_7zy98*R0>&Ie-r5DqjR zWK3IDY!Y+oo%TzMTY#b$Ro2CTQ692a{(_{2!dRh67c0%Jbs3|P%Uab0EzjA^E7s8M zJL^58DSmm(Gqi9&v5s<;vDLz|xlAXjKwb%~j%Zr?3Yxh%NEw5G1V_nv8N@=VBx^La zG?LMlCH7$nU+6r@Vam{#DQD8+p+7*JdqqLh-(?+%P}D!-z&c8_?cN2+5Bi>{#kLm_ zg_MB=ocYV&)xN?5Hzb5vo*nKS8yJ=q?DrAVZ3Mp7!oE9?I$H^M-T4O|nD9MC){=m$ z<9_G;S!m8A>IcDqQM0cJjr!N`KxHBdJEg()7UlpOy{4RTA(RNYqZ_!bF(P%An@{kg zRnVj<1AM@44Fwr(r5EC)p@K(gC^B10XAr{j)!8RZxr@&FKlr_rH zddefFrI6g&HlS)T!0`?MTe zOM}lCrft1SxXt3l5K`a};g}NAp>QnQP~-t9=sNR3S(2+wKXH%J@6x;HbVWtI( zrstTcfYyboTb1DVfZKD4OhQ@9axjdAJYbo2y0RC|6h>qH52MBLfdE10ky)UfM6iDs zN3+BhGj9^E(8n|x{k79A`jthFiZ^U6fG(bnO#Fg>pccwnc2@T7i9Wv zHL68`I0GGvp}Als1x8#nUdTFS1Zl1Ol8jBI?km|#qxo9uBW6R8s_kpI<8mNh;P4&s z0fwE6#4VI1|qf1Q4Y66fNQ zTjW|IAsC(rLXz-p9>A0Z>nvEKQRNtk9OOYk#fgTZa9gf6b)Ii+{4JL&z5=HO(<%f1 zVWGxO6+G$2*sNDZ)Qna$)67L@wi@ae-Z^vhgTfA1K6AYCeahBO>~d{elMnYue@^ihW`B%qB~VzpMHpt1c(J*3JWe!JF~vin-s zg=?Mi+wiji<@ex!xSc(Sod3ZSr!6Uo-z0vsc|fOp?4cVTy20)2SJmEp>hq>a1T6iv}bVgCs>QX{lHwyMl;}I`PuJv29`7LQ`W0`9BkkZXpde zCC^EoBjXOjdN^UlK?`Q>X~gOj!`5mm+m>V*6ugM}wfVJwvPfyh%G}~I2Q0H=OxY$m zo%z$dW}L%ovs7s1PxzJVhdHRJ>GHFu=do3f4X>XWO_w%?mxh-rL&rddotxX{w9T

GVVDpKM%h9n;1h1+T_QXh3Z7tpo1Yq1xuhRkiB9LkUS7rw9B?`F?H ztyyR5pXjF3->cr*9KSh!Go?w9hl9A%*7~Ix@@%Kkw#TBsi~jCUc6#!KlP^?$BLlWg z2>}HZq6`@JcodadW~I+9+v3cGs$E;0Fd^HC(YW9qpdI!m&6=s@P?3juQzo0MwYcI-zVwl`ZPBeIQT4 zTKgWF{itae*%He95?W3vA?`{*NDbs4bQqf;798@Ht30a@!n zm?0^D5`o$Ve;?Wdp)wz=Rln#*8eLUa?Xq#*1ZA`kpq0;1#^XN3>QIND!zfCH*O3)) zW}Q;V)^iF(+GkK;IOzlAn1ptml=2x5*q~%QrHpeEu zDve4(lIexPVy$!jVu4{l__asLN$bf3z3QbIOd{hQe8IH}$1arn7xY`(Q`k#@(te^1 z`>q^kD5$0atDXwPmVn@tgZseuIO>5%z#24Ll7J}O zW52L+V=)j~f%|yCoM~MT{8|Q#BY><2gsL9*RVLRt#*{M;cFYyaTdfwyqixzM`rg3i zS9T5P6gfCk_hnwh86I?1L3Y}%SaFnoBA>+qLxqs6riVs}sl_ttb+>EbSTpJ7kr56K zd7JzMkV7p6{1lEY#TwM_LK!d(KErep#i@=e1UmIdHOXFjN_Yu3;43u)ySk)@6mSjP}L+C6KdmN2|C_DMcyey44m6@{xh!=%WAu4+p@ z7Ea+CK;B9VeRpwe)@u&4v| z<0P7L;2Rj`;OS|wk3p!jaux5<7r%MfU3S@vE`-HD6CVEy;Q8&t;9^BJ!zvQ&(e=@8 z)8Ga;oNH=7D@rfWCNwy&Pm7Yuo}CKLH-lxyT8K{OZ7|Z+-XJ0<^Sn}54Zd#CZT65Q z3xm)Sv)Y7NMJdB?>q}O!PsK(_#B#GGEfFTocSdt6wJ4**Ikby48T1&niQ#i&#MU&D z_FyB*V(gQ(--k!t?I3e;c+WtyH6G(JTnbCTpQYUhOhzGralo5ooCtxZdBm{R(FU-s zBh7A}^Wm5^xuIbdl5&e6fa&@vH}@Hlg-!vPC$7enO;DnZO_>ltWqQ(VpeQ83TB=fM z{^~c)>M;C~)XE3NYvnElEh(B|&(3<(JmHUvL&QDA37B$^WM@7ClT_;3OEUOU?c%9% zi)Erj6=S{dqaZ+{L`LFCwAocDM5%Bh+|X*41r5>_YrRt$>TWf^UH|#_VmFRMm{Z9n z*7!TWF1N?D55Jc6D z94g(#TN=B?vZn0_C~inzl7z;zm&qPqH1A`Iqg+tg6HrJ}t|*RfX)%z!h1yeeLS0q; zP;=7u3lUjj4Cj9H&{+IyvGKjbOe@nN7SgK;RaV%NgR)aM+EhfpQm?UGWO3Z~f6 ztP7`7a*T1(RPzX;6eAP(fg&;prQLEtaf5E(Fkpgz`hO2VwYOy-W z$uD*4Hk}Gx`37RBtemsGaAlXKkpE`fm^*?dH8*U%)YxVuT`L*PuvPE4P#+OT~wuS4$ zb?z>W1as?H_AWHDma970J(h2?ibdb?fBcFNi>m|Gkr1iYG0q_55Xs!>6(0ZQmnqi-fV;_(!z0cuuNLUQmOP2@dgX1g zyh5!SqCf2D@%0!t*w!YBw_W|re6YNH@acAleJV@)xJqir8pV|Ex#p3dkm#Igwy62jP$T3j|IxRtGz*V1sbOIi?t3LO- zXfSO-Yed3%8wTMyYZu|THJK6)++cMAPuD$h5hLPBw@I774?6M*X43*E=b(F6)u>)LI1e5Z7AwhrD)$p%s;eCh~s#@yXTHN|VQ zbt(y5jp--pBz!Z^Ek(3a90}<4{Kd!2-%=ANi%p#1(x!EiTw*^`i^N4u0z;co3vci@ z!ZtXMBGamx_^xA+suyOP69JlJ=Wh8m;TCqLoz=u@2@GGYw(5~Ix&wCYPssP+yC1$t~r`{NDOkpHvTtEo4i9(^%8&j@4)2LJi31SY?zXVOtX?A=#ZA1b* zs13`+&|@I+j#x!bpb?F}=LUxZobJP^z$E#tXJ}NJKvj!|NM&?A-eh~GXd2`z)wWt< zHBMJ)6n}MMECtsYuu`0I;DLMETD@tx?+x=*3l9b^acg#Qi`-L z!E5rF4ArA0*CV?6^t$9e%y1AGX#LHk91yMzaQI{y@s zf3<2r?Eb}iW5r^hCU&*g+22dGUS;W3oO@LtXPbg3x?{iS4jGC$m-<&szSo$_; z8o$UKovr$>FSreeSGy#;UXyXt>A~NSgyihtA8Nv>hXyez?J$tZ7-yKFc}ShmUQRnG zjYLBDI5~s};#NXc-U~|Owo$fRJC={o_*W(y((FbLQ}j@?*c3_Ybx}g*9XN&55K3d&l9t=TqUm%} zI<$aEod9vgV|Y?4g^^W<@MxLd|FI=KNKdTMrp5KlF4e8RVN_0QcJ&{FbnSk1-4Mdf zZFaQ6t#re$v_fu=?pc3ay|fSkYP)<WshNy+M2CglxM+j9&buL%_N$0ql>|DhW zRi``r-TkZ9)i;#cjX!h(TC=@%+h*zG$5uUM*-It5QLa+6?JoEL$MA?>5l}-DAe(5% zpr;)9yarEg;YJxXNNw3gq?H4TyVVxC<6K)*Z$=N!OxX$$(YCH@t)U^Owuzj2Cdf8L zhSw#jR}z?3fivAE#Opn%^)@v3xEj?-){Uw0dHuoh&Cv4knqQGC%1lENd@5kjDNwf` zR;u*}_(*GWTMDLP7jC9eYErLiDL+V>kO)VSLnS2_hb=Z61;Vb(WP-LdmzXz zd&I1x$`q!d^4qey@Z$?GPp; zO=!1O6}A>hWSgLnS@5(Me$eqy7`=F>koq)emMTq~_-j{?*)_#zLt)nlVI4)=gp{-Z z5ptTBrk%ig&~G_K`aPAvmHbx2H6Cnj81T2eVfr>QTfKq2CG{~W@R+Du>V6C85~5xI zRFy7`$D`unQ?^UQ>GjBTtAp`-#77U^Ww0N}B8f!_vWX1@wH<_l7*hanz6OeI~;)VEOmsw4~la2 zl-!>Zg?$hDJrm6o5;eJxP=wL#ua78F0jp$?wWUE~Gwy}(2(fV@`9$tS!C zXOKHs`z0?BW5Fk>W@E#)f+#B)vG^+ z)k_B9t=H#Uco3`K9L#UM{^B6KVdZoS3jq$RCk!h}a-;UnVA#rk(ZYjReZs<)-^$-) z;X$namayCGG^Q=ef5HG~0k16pgUPmNP81caFppO>^lV^ZUKJ?PCK;Z9RPajsi`vJN zb9R$7Gg}W1uxSsHA zbPro$-faMIN3iN8zAz6J6_M`h{?qlMnR5#&9Wl3-8)Kjg^O&Q$`9$sm85g=Y-@E0| z7;Enm@A~#_+77npL?fE>sF(6lYd(_09$lD&243}q_lM8vo6gGha?AUt!9$uE zn;bZY5<0{=V!2zr0JWpH6rPsk&y)mz^qhO)Y4qmg*5dkJZv_QipWrL67PKrM-F*j- zuaEA&)eFQy2+J6Sr=dR=PI*IFai|rZhBA8cFqyV{6GoFSSUbxLM1xf0gMYdvN@7q? zs_XwtQM2@d52W80E9&rmS_1WLW3tgB_t<&L-bpux;72?!f->6lBX(MZ%VH$=dyCMg zdvHDV;E*f^@e7Lx4ni1j@T;|HaLbS~EFwOn42zgMqzsGr&X6oBIyG%b7K=D@NEVA2 ztBCn?8b2;>JUY{x-(P&?%*LmSuPB~3vvKZ%E?f*>y$E#t5% zc6M>&zNYGlB~8)EZJ#5(xbgW|(}j$2j>bP{cccfKMTT9~v64ulIo4l%;80_G+ZljH zdWsLcP2|knd_~szeIv^ca=0AFKxanw0oa!*sW@BS{<592ly_`Nz@?_TEp}6Q1Z_O^? zyg*)&l3TU*Q0(2HOPJ!YGVMO-TH>AWJ(EX8=X>vsBSOn)wzX9)k&(fAAqE8J<$x8` zYxx)zy8X*8qvVM=%Q{++TJcU=8Nls2LnY~0_4(f0BV5+gG5qA4U};HZ@^u)Kmp3S~ zrOC-jka)ONC3^tJ{Ww;?D?e4h?CRe!Gk0HocU`I%+S{TLrqJU%W=`J^Vw-Tt3EvD% zZ)r2HQe{a9MW-aRs{XJSYZ}WSJO`0@fpOm}X>4yiF>`w2z~POPgre{Zk@sylUeI{n zC|}}B{M#3i8Msu(jF!U7xJcT&iIWO9v8=|r!OWr_uXzJ4DQVmqYpMyYXE>(!w;vu8 z%Qa%meV@T8&3&Hf1bm#1i{n!_tTsaP$So4@O`xYuFwWXy5i?K zV@zvLp}8lizG73(DEjA>|I~iDzxKZb0YbHNy5eV2`}FZstuhIpC%}b09##HZKaF)@ z;n9Q?6Sz_ou&9U5DlDT{^ zW=moSomdkusa@23?&r~9mUxG@#&TKR7We-oZ#mo_zE3t}z(_BW3!%j7+og~MQjO3E zBk~~Gw-@&(igVvD&V4a;DY3D;w~I4<{|Chji+@mjP4Tq|T&})CFcs#E|MSzdw01@| z_$>?aq_LmuhY=kHKI%f!E#Ef`a8^`roop+fU%Kc8cp`i;QGBJC;uV+2ny)=s!W@h> zVNcC!p7FO3opHnDMa?tHN??gcN}EbUg<^)Ck3~s@+76U7@}OF5(W?-uN#BwpJ+QXs zW0D)UUer7;P~3d(`NfSp+TR&f+}Ky#e)5dz>AMg2LJGz0eP?`kQM%X*ocq1TC)$q_ zI0h8_$EC-pv4_;Nzt?zzct4XD2z{^dC|M2k*g))=-xL2xUe+8Mp^r{ldZg&7pIjf~ zqi4xQUSUDrH~V+k$GC4Z(uD>7&qU4mov~ch0lQKe>Vu@TrdT*aTj~l&NXU*r!0YX` zTa&01g=dM7u21l1d0yzdxi5GBO-XKVNpAm~`b1tzO5Kp5E1qB6_(5^=Eyy1q&vzdQ zjLQYHuwn_FI}|_&mGLVimo&|vD6HNO_m1Ybfhik>he{gvX%M=KH!>G<4kW#Y9|={H zXXGQH8~FLV#`gBU(~CbkUXr^LJ81g;;(p!>eR$h<7qJsBYJ-)$xH<1jvGt78%f^Nd z$Ec=-$nVG2>$4S&{2wVh#|0COJ@v^??m6bgw(dJVbNaFA={buI#1`?)*28F15WNFi zAKR5U3GXY7BveSJ-d4=lSF(B5Nq%}7$AyZPhVJ*)TufiY^kOuZ4lm&6yNjNlIsK)Q zY$$h+_voeh?Y*PxlU{Lq@9Eyd?X;hIauczUBQ?`Hy+B}2Zl^wX`@hN3#`Zb6FO(E5 z4D~F(MJX*<2f6$^cY@5cFDR;&VJm<{3k#T}nXSa1{RM?!lbNFeAWbhv6^?*o6c(go zxpLFKqX;xpH~y%_ho!Nel~{7IcQEg&IrZD}x>uDp@x-D^Xe)Yk`K5E4XXMeNjY4@T zL)=k{JnWd|Z8>|vZ0`>4cvB=`87`j7K#50x~{2+hfTc4qUL9s^u_;NvAT z8_&Ed*1xU$cOWGWiu!ltI$Ra!9!vc<#AT{M)BMS$i{4@e&JUMFI&d(L?kf;?t(uJz zkpS&2MmZ7)#gUF;6atvXzQ%3EXbmF&oOW~vL`<=14+mbK8PSS(d53_T&-?-zM1#;u z)yF?8OGTs>2kO zU{>A_>21#;BH5gGTj`=i)9gU~;ZKNUYdLN}pgNoLe(zHtLrz4`^aPyx{v2=4R?vzh zou2j{?jfNgwrHnO*#N!u!np3Q?;1&B9s~y$Dr2S~b~Qb+Gi=VHqbNQuMlWD8#oAAd zM)qM1GQD}r>`y>uW=P2{D&y&!G`f=W-)O1*&6 zYW}kR!kn73>sN$wpxMHj&m&&})3L2v-_Fy8Rbofo6A(yzBAL1+b8@-^L_n{H*r5QU zLjH&jdmvcc4E#&vm*yT%UCOi-E8h&juhu^<)^bacU$UT;d2OQ zvF{-qzP)e6J^NRTo}T#V#qPr9OZu}D4}wi-3fPvxCv!@Qb}pang+Gt1M`2`q^rq@z z_KVE#>3)5iOB^GO;&2w==yoqMyQlk&Z8B9vQFbTgpS4xk_xu7K0@E_h$)xQ~S=M(3 zs!Zn+Z`n(u<+R4KARYfTbWQ>r1h}Acc98TwWZtrm^NHmAe2uWP>=hPidWh%|I0SZb zD}IA0tJv82Wm-y5xqYW=&j>kmED+O_%h^!3ypv4$Wv@t2WGlqd5S`@ECu=qo%AXT7 zW@)I<4B2IU1W+;jWH`yP6ZtAItTVHu+(314VqaAYUl^gBcd%qt&GcCIn$)pnuUg+0 zP#MqqpzNMBXY_i&`$kv;9to{7{E)Wn1u6Z@UZINBp*D*ZFY}i5=Lz1*d--&&pX{~` zuFLxKfj@~i`;pLkzYxM&s9yHs8G_4q2Fgif!m?NC-O26BuvY*dE67foM?w#gm2Y$< z#UIbJb}s8@VjAYL+R3ABGs`-`Kqf(7COz73?EBpp$jYxibw6w#|Vt`Z-z zQs^XQ#V8BeOA$gX0d^J_Mp=m~jQ)T2-Uq&_>dg1ffdfRFxDUgPmzg>(^`cdq@HdDk z5rsq$0wSCwf{2wQD9QW%J!|g}{L`8F+&lOE-1nV)J~?~uwbovLp7pHf-+G?4<#Qof z>uasl{MA@&OHEfV3fVRI*Y~nk9|kW(ELuv!riEU7H2%oWp3o z4r7D>&LR2hUDUw6eNAu;Ru&1_^h0Y)m|?o;X`&Mxm~ z0Sb1oqu!A*P|#vOf{WE&0g4kmDvx9;TJPAeuL73&sO`B-tT*sc+v*ku$$g>|iTWH}ebS>OwJuuToFe$ugd1>S->na;}GO zt$%aSZ(IkC&Td{SNj;t2lB%i7#Xftjc?M+PB)1`*JpdCPnaLi`u*uN47G-Wdv?UrN z^$NVNX-IcKj2%SX@!dSeuRBf@1UkAqp}VQN!~KC>Gu;j9Zf-saKZbix?n_ndy5mQT zs3BxCXl$umWh9;5k!oxnle(_4b3oR~_cQX;U`y)S#(jOM#!mkC4y0<**|)CEu9typ zzDeAKJOz@sSW{LQnp+iX;9c~Ic$V3fte25?;pcz7?#;nlYVeB9WiBkp)V}t`T=dhD zvt~A~iNXiVuuh~C&*e%A65Z9gIk6Mz?5>u5BmCMmw>&>u<&xa$TIuH&#hPhD4~2fM zUPS~fOy};5`dJg*%JU@xI~*Q;p*Me?JE5RX~CAG?32F)%mQ#O!n0( zgsyq%#&uK$(DP5xX%*w#rr!KEdw^Dlqm-GgF8{%xOr4Kd0*WvR`B9{45l+p}HHh8p z<|@RYdE9JDGhP-J%MbdAJA{ybVJ3#OdV4#R{`Q?>Aukl72`rp3Q9H#8uX#%kRTslD zIUWN@YXegd&~tI{ESi&Q>>1%LKHr2d0G39S0BKr! zgdT+wm00f;k5uWfV~D2FOEM8Vk4PN@mdTUTwkMN4X5bAcA`|H`=-0$5GvG>jhVpTn z-h6zmCIGk&hk054=WE=&F!kb{z`QvBL(&BEV!<4G0m)*K&lV}$KIRJVoai|+GnCU$ zWCjPwjK)wMd8RRsMDXq~^%j2~cp}H8Bd-F*3{dn0;Jemo4TQ@GQ%Y*u(I&$eoLo*F!> z%c;hE)LZ-nOVVeaW=fr?^CLxQ?HfQeE!R3N*Lkt=e(jcEnO>PIvgLYZZlWz$)@CMG za+<%?`_CpbP70*vWvjHYMilw9;o6tVGP zhp%AOej@Cx9=vn}uL?(FgcWs}>|h43<6(Hix^xp>9btDI3hHDG+1Tc58PC;%#$g0f zouBdhQzx3)hg|bTmK{%Mo+rlqp=kyK^DV+*@XsdKhtLToRarx!As=WUT`_n7ZKp=!Z{RmfL^-+gfQ_VYtxbDa4H)QMML-~ zY4~h+Mgq3`P^%c@q})1oad&HjiK~$|ADl%*QO3BaP}>M*X;Vz|XC+wcFTy2K7@% zDLt;rw*DB~Up9{}tyz@)rmt~tq_H!?(r(~w3Q93bB`_o29m{i@-|*O*;xmO+*;iHR zL)1erd1ZJnQ-dWNs_(^>_T5oe43-S6ZssrD zvOfx6lIqQpYoI|b>T>FMMD{{t>1Ir151QMoNT@<<(k(AX2a)&QYGtjUw5hb384xIj`T{;M zt2`H_X&+#|R@KboV>; zIT7%jNWQu$#!FSP>8eWbRaMi2YL@d(YVbLA9X|D#!9dkMM0)<#J%fYlNtxf|j%)=< zRMSkAXtpuMAqaMaiZwX($|Du56_`+n#B<;`|(b;CGCC;R}?FTlYh zFn`TPUHlrBh_60nh7sEqf@#1)W+BqChkr8#=Ab}*om800oVJuV_7gm|aGmi5c7Ddz ze2$t zz+za!H$Rd=LXK>NC}~kclpdlK<1V9smTXJsNWV5uLNwBxsmW$psqT_~xsq(FRJBMfj0$OLha z)=47F{#*%1TEY4A9|5@+S#SMXD4`!&X&J(ixqj|`hw(va$sNsfBpaYi=jvg|4N9t$(IqJ@QcqRBH#shx+ zsbhNLWp878;&##`1J8J|MQ~yfuQgp)42vuI{v!7@rL^grrP3g$H+{Q!$)Z>zMe?=S zmNDEk>GbZtorK#xlS){^`cF&#OaYWhOyt=_Nr^IE=$*bqb&8i!Gb}t`XdN4FUHeNHM`=7F7=yH*pJ|3Xf~skd^DZt z_Y(ty&DHEHv~-SQD?{qnHT=|EQ|#5Wcr}ov*=sI`z>G!tES_Ak^^O<)NIxD&naGnq z+rxuf?%2f6&}yw*wppipQ~0T9_kJM1vaUZpt)QUcF@yd{Z}E7bX0Y{hXT6y!N9Fi- znR=~$R?}kXADzh__i-;U3wE;L{C{| zh#th_i6F{<=mlAcI+19rDmueb_H;_I-VPPRq%{*mVIAuZ_4RJ6(MvpNmF1tK2!#5I zBia)z^%nn?G(k|P5GbbQ@4)XG!09diGeK?zYoM`ZWNyKy-!C*SY&?kM^p^Lle!q4w z|EZe}4f>0ly+!k(#Hpq!WvQlbmSuA9-|%pfKFyClT#$0z^yKURNe$6QT+A zglO~BZsw05+VMf;ue~GE*=L#L(G&0}iT)5w`yt+^Gk#bOu7PnvH>H(%H60H7V3j0| zjh-zJg%k+bD(A6COD3`@6WJ~V{B75_fWt{Vdtw-#-S>In*;n3%XLMC~HaX`HA=z*Y zWAC88JuMp_7?#=#h9yA44SufZM}m|XMw!}x;vlDDmce}@TY?S(BO$$|3&g95l@8)I zx_2~~SDw!HX0p#R6J=iUpJ<7l3*R;$P_Ou!tzPj}^8ZnhE57`QoQyEKO5gmdJYV!pnw!_jxQdK%5Q&2IG7HzK z?cBcReQ0HLR9RfGsVQs3)_An~D5w|KN( z4sTbY;#y9wp%+L4^S=P*qv3dq`;7^Jm6^!X>By6r$gvRf+sNtq7YwtxNxv-w(1!Wo zykG^|f2KA-`@4>xg7(k+=HHL@evj*QasH979vVztpZapwW!B&|BB{Tj(OaOxBSZYJ z*yt_(I}&q$H7aH5Q)9~*=`eji#;YON7dGW6u>&orapQ;y&pH*T;+Z=~CHm2?y%a^75zHkg$%BiVSwQP%7s3^ev&QA?ajA-4)S-|-dEM32G z9rSWitm|ngZ;G5^5OA;=8*FaU`XoJWJlL!TN2)>UDm8lH(`u^e%CaVq6~0$mUHi?l z^u~>>ou*DF}8Uv0=g&Afk6TkzRI^)9hdYB+?8UP_^n ze3Oa1n*T$7aPVr(zphwjSg~YvqL&gG3QKy)KS@cegX+GRTW}fe(eM0kh9zV7J)zX{ z{7;9aQutC!F3W$H7g=HRc7wVGOlY%YzT|#;a(o{w;T|kb}=TBlLZw)(q!8}ZWa@l zLmWa+rs9a)61o&=ppM4%jwY=-@`lu+`I@k#23PJDhXym4iOmq)D6Eyh!Z0jn9UzP= zjkRr(yxBx;fe;tvEsk0v(9`^f|NPKk*FPRJ1K#vNo_(GRypBWVLIARfGh$J>Eo1I-gE^vQ4CMq zmsa5~diR__Q@}z$XDuLKxmFb6jx(CBh{|SPM!}+<4`~ZxoF=6_-LmgA*oy8Uqm4z% zr(98078*ISao?EJ)_9A%r~u& zq;vBY7ffiDJ~q?R!DL8Vs-k(}7yMie;dKl_hD%=rzsg}mb^$a;ktuY<*Ma~oSRz&6 zK}H0q7Pp>+?~ok^J-dFBdlY}L<-EsNXe z&(e+S3cFHJnMM>EV-`i#*aQawK-WLhfmClZp06kiLi%HX1Bv|e!{onAF4#kzwsV5G zK^y@{$dJyigSJq9;V=B!9mr;j3#xOO9~I!uSFv^BOho26_YrPi9J^2Oo0-Wz?G;~% zNGG?P;!Na#cl~ebpIWQ$Ikj^BSESwlo$^BIP1FM(OiC8yy;te{?>tH zr1zC=T7bwACEtN@+=c+vx1v*RYgV<`Vvsk#N`UowNEjj zOgVF!vuT_;xuS1jT>j0h=v3pzsBbg(H|&<%tT9zd(=eE;o^7sE2K=|r)67(4o#x~F z3@X~Qc)}(yX4{%!KBi)9uFI$exiM;ry9r zGpEza6rN;$0bfHVmz}N~XY;^m)#HYN(P1x*e7eD(~7w4|>tUKnQ)hy@b zWWlI4&y^Qc9J#ZE{>TWOe4i(B;U%s<(vx31?|hZ2UxTOCnO@urowQzq43porRsn33 zp1?vrFruPm;W)euj-<1^bITY&nU>K!(tA1X0wa1lDUD*La3VgNg*Qnz^Q4wW5dL?^ zA>3>G%-?PCrg??(*z_Bp5f4&iz%<1YK(EqSTqNp8v-^*Y01C`@^vpF_nGQuUKFvnW zSUB2`Y@du%%JYA;I>mfUu4uUv|EqLDvoj*j)6Q+CX;LeNe!t;U1x?WkU;Q&>+afi4kHsR{#mg6Ha_h3tbn@xlo zy{rs8hcSwZF_cwRz^}Y}{s*ZhRHSP$5@HFTJmHZ1HcS0n$ph+Jp_EAM4s&7?7cNYB zPk7=N<=Jle8D#Wkv6iKIAXKIX*Nbl^oxjB6H3XwlfEs%91wMWCp19grLad5CIQU?p zUM4(gvF-^CM!n=>Hkp2N#p_yZ#$wHjNPl*OJMR-CduP9DCO~f%7CKAc9e6 z98SP7Q)VV6hJBQZwmZ)f)-vyW(|Zh2DeU()7xx@ww$j<-sqE&--oqzd{qK6EF9w_% z`;k|n^o+fH-i5&a&nA>(N8NOJQ&9s?Fa0uEa8*;ZIkl~y4a}QJ^{beA?};rvn6EYw zE0i1c?d2#JxeMp>qKXD$#;6tNCkifaiZ%czU_9!B=V^Lz4V+RNYhdraP!Q3Md&>#A z>y9Huz^dKE%w@7Kku=ffJ5@nM$CP#2NrHh0==tw{S|EP-O~$j+&t3Xq8YX=bjnu6B z6f(rabIzwjXKkeK>cEuRqI-P(=Pq4WUS0skQDowWFpKA+M8@T{Cv*f#o6be=N@oxI zP0`SMWz?cu##_X6CVhX)Cw~G`o0C@_0klfb0K30b`-it}S#1$B#??>OD+&SYQfnWl2nB_0<_Af3wwbNPhks*3!b z7x>v{5Gu^*KiHg~#@m_fhD`Puzp<+!|0k2xBC97I>Fe35O{+3Y;~UeBha0*s231u< z7hZ1ozll0_H{_2HbC`+j?Rgo{GJ%sTUcEDpG9>RQy5RG2&}mY#yQ>jko|qcR&j6S` z+u(|&o_CK_0ES#jyK{0y=RyBKlT0nf_m<;PVme#)5;|=Ar z9{fG;7I;+~5jSlD6d4n;o#EtP-fA;em2 zII}U_j4iB=wD&x1;$visU$NtkU-!h+#lkzz2at26m-(W#Pf?72E|ZE7zBgMnZeew> zARNt&ld|X>t7}e`%B0IDeaZ{SX zQUY$}`LnJT`Q^^XGiUnc!ekYM04I$Ai$yoCE$jKI(n~Yh?HRCmE6q%an4n+*n~g1= z2@I{2nIVzk{XclBykK$jyfLhEzwt>-5LL`qw!>e_CIpNIiFIei;X5yaxsFX|aocPe zWLE-|jbL7!sdG${?~7KrkY)MlZ;xamEj?SrVvGm8)uotla7Z|D3Jw9!wPz(bHREA4 zzvF@C2PHn^g7Shd{myWUZ_E}Vqc=@z5S7Oz|JK2ZJvbTE#A4o*JwNV!(_hL$T3o=g zNmX9sI$uwQwRPr6*3>NWB&vLin zm2lQ?Kq#r(mp4uPPAd1MLQGpc7CTIgW(R4y(PGhy2fI9-=V4 zU|x-%?V8Y>$)P_Yu16PM1Z6d{3OzMq`X)vFTedc+(Im*n8ak&Tliiqq?DJ5+&4!)T zwFht+lX69e3wu6d_#a*PlJ?Pg18hg1!Ptha?z?(xue9mt!VB>qFe!v?#nOZ8v_2}; z4hv)-Q0UGtEM+l3zY7a{o+7gf#kEAwrDdte20JVQloRp{N4e{SXKV^e+6y)XWnxM- z^qt{-Zz9?)C~)tG5g!zHKtguY^kkie81br;e@rfDJ+ z;jE8ak&@FhP2-I~6y@)GUEF8Kqu>{`Z+HIjNpw29n^SGrp#{oC1(I2?=L9A86xb){aUnX-sf_u-btgs`QJjN^4Pi+cT739uI7$JL;q=a z+;FmHI)>rk{{k{WbZpnx=_9)46{nO@*M^nJYS9k$jym3!|IaXLl1?eY>qDdaA0Sra zUquVS z#?K=?KX<)0COq%lT+weq4z`{#Riv}8NokGrrh7YjDsn}ib|a|WBr_f+>Jf-m*6EXd zrtUGe^tg$B#*aKBeUs9&)WM;ykBFSo^Y0J!{QK5(>A#dmp3@qZx6kb_MCtIt5)O%3 z$PpsS=|Ev#So9fwqTf_IKbEFc+mg<1OI-)E80nn-au+^*@FLXOyIz?Il(0E2@pJFL zg(Tz#Zdtuj9y7InQq^=-l+_#284)bws>qQhd{B9(>9bAcP1i)Lv-`Ha*;EefoC69Sa z=fkr({zGPk4R3Rg#{?F}WaP-7N1Qw4yi zHv3p?3CPHv>ye;l?Px3|i9OR~!KG8ymKS6alv`%o9MzFS>D+HL)4Xgi)OPp2;3v>4 zW@vxRbyY`7koi8gXwKD}OK6oDfq7$BrD_b0=n8&qhbcKK(Mky)t)bK+HkUbXtJ-!y zveQrO>21eAzEm%-;AON0oU0=3ewNJ&o>ve4e(?9$TAZdWPO!ujZxPJG0y7+C*H{#k zK8G;(FgDJWvH84M@mOp%6X4x**|>s&qgQxGNTqe zzH6P7v%nfIS*z;H{NcKi2o=ekA zKn9;pe=sI5A#2Tx6Z0IlLDST$o>8yrEM)eG9JJo39V?(7D6>@bN1b@rR@ItXZl@)+ zn71C(mkB09EuA+9)?8TH0)M4koZ60F=^dH$Iij+X0^_RFMFWn0!8;QD)AU^%1yEXg zHR$%s1{FHA-&6HTUMIKHdQT7cyFRCs&m)JWQOFN^%yBCA1?e_@nR`xbHIs9gFtv_X zxH-U(I&L6DFXeRu^p&wb4Zxc1-tXF`Cb;EGYE14b{%6n-;*CJb$OTj0WorOLW^_HCk#hv5+*IKB7*w8Vu_@UXfoQIKM=Y z^t$=DMqWdoFSvLe2h=4y`S@tE#FM)(So*$@8rTR>1n_ z*7Is>%34+v!&+TxtER*F}9vM z#?`~dSQw76b@&*88^@Wx+Zglz#u)qFIY!q4WL;xoYvb77K%CH`G&g{KVTc^%yBtKc$gOJFaxwq7@^ zqF3EUWGyYE^7qI30)PhyAsW65dZnUq6$S4K#f%v1bfK;dkJbqh?>spZ-G>#gS{ID! zu~^btG0Xt7IXTMfAbylD&?L_%Hnw}06@(1wV++uK8uNq3O06+s;W!P)PC9ENOb1v& zyyPtf6Qb~Rs~#804%S#Zb#$~-D`B-KR#`}{X1L=Sa%r|(U!&<@b_tGF4Lo%Zdehtkyw^dM z80tO_%c0c$u|oBDn!A#)n-g^Uyg1(5dfPhzN3sI$O2Xa74Y}FoO>_5N97)HOexCGY z#)8$RSTPAO0+&nN;oZhZZt|XAW}Hsd@PD`QE!9&hbf?~=tqAIxuBAg=x>Azwvbr@v z6?Z#=ZpT@wRh49fTBz2#d*l9?7P3a@7W4_|(ft9%V)#pfOkJtpGM5_Wk+~wsbl0JA zC?NR+h;V<*;Y1)u2%1S7>8-Cv)S!D{{1RBG+{Q1QwIP=pT<>;kVOmf~!TRJ9Ld=qP zP@|Qg8@iH-FCNoneS99a=Mr%rrFmZ^;{h+E2YM#MaaoT>>RbXe6H&xf0We%5lu~`Q zD)4SGFuG?lKnP_pHM)|pSChHKK?>O~$ka8=ToGoj4l?Z;Uu7H;RGlYw#jjS#JRQ-% zZ>jwz?RUDXD5GM#GZcgKBIa@1$HMzV#EY*qrfW&1%7vhi%iH|wKm{VV1+88&g{7p{ zh&%C{w_m9Ejd}xuX}`Yx)=|-J{203tM|Hb7lnUn95eB=T^J;1&B^4D zczLhT665yk+i#tyW4prw*d-I|-{oXt5lR0p*u7Cp#_)=ABpEvLc>-@4$j6NwE5PK0 zZ>}E7zx5?FUPtcd ziiqncF0x%`$VRXLuJXTHf%{^vD2C?NyBoDlN{=aYC~DH%vRm9C1y!*nrmekPUAq@0 z4eic!FZ{Cr7E-{QVYj+DQ|%bD7P z%3IpIM>W+BDn~D%Cn~))EE(BD;dJ&XX-{Hk&dwM)RGoOGIyaGK_J1)q=fVQw=`&f7 z_v+llk7gn->OP;TJ=*(1b>fYybFojO*`fNO)^VH`WiCkPCZ74I6fc$R%hVp}ZAVyJ zlS#aGb#DBp{iWDa3sDhK1e-}eS{-?j*4~Hps?;>MRi>->wYEgqA3dqH;S`OMHh|jA z)X`s9M8T*{tMEHU`^DK&%w&nif%?3ZE6_hv_siY=``A8Wj{)7DXQI?6$k$}T;E<|! z4Tmwx*0UP77Cb2y-aS%y277M+?&u@BAc*Lq?E6Q~WEr6NS$fl7t1vRFE4)D$1tqCu z(MaYHy}Je#R`t8Lr5kcnEBH)SyDn2iJ%zz^7K-omEk7^uvs)6~FbUW7Uv)w$7Z}YtU|pItBEkaW8>UXrqg1Dc_K;+iK6>Fk#6rWa zH#CAEVduz%(v>yKm^P~~g}_36Q4dN*Luquf*Cu6UST|t)Xh_{oGN$E1;I9V7O2MRa z)q|yO+y$5Z>#wC|t}?FSH~qEdYG?+QG8&O#_9e$hHjU8>WDPCn*DCf?>k9h3}n>ps26p&y95VqEBe`uc0z zfOOI}o^&crw@%vccqUZ%=*SI0mw%?NMpT4Z|9~~m=%|rkKf^KjxjHb}>)*y}Gh(Gw zd7MY-1RC==W{+M-qGQQSr#4>Jshj;$NBga$JQTtb;-x_qZ3DamCIsbz$2gB~L5e!a z8Oje5;-sT!8tOmfhOGIT>~$l_CGK{N4f=)=4)C;7lRj3a=DYPV!QDs+-Op&r{N9j0 zP5*!IY=vZseW_Hk;H>6{AOr#Ey>8Hoz96^To3@lFj!*?OZn8RpMa2}%cL0#u(9P$> zARY!z>By=ju5=V(Hl4WZ*QbVdZ>3#6jrOJh4j1lzPCX@V0EpQrRFJ-D{gE-GB^rgI zHED$Q5m?r&5sKvbL^HPWfdsK!3u2%qQjpv`v=k20FN}%yYA18b#uKf+XtVjKLkDT4 zV4`FZhHZeZ<6iKj=u@hM^Oo*5snK%ht0dz?clvuz9dL9K;NC#l5efB;x#hV zPgAQh(yfLmfs7~wz8iWQK3<{Di|)YyRsDRc!{B72WN-{pC08>x4GBs@tB-50HJnyA z9P7g4ZrW|23y7hj&(k$Dl^-IOkK4RzpzXYB6Q(ZLY5w>*waYe5YQ5E3r_Y)d`g(E- zf*v|+Kzq(&uLy;W!}-I|`o z)iV)pt~L{{+)4)=RSv?xKG|FNBO5o}?NJr&s-l|Q9|bS~b*zCC8rC5%4#wIuMnZb8 z3hoiy?VWp66&$2(pMwQJi`#HRr0ftg)|fl#=3xOf>GCxLza1ifzYW%bjud{I+NxP> zw+^@~lS5!r_b!;LHTt?*#}85 zKo(GIdlK^6M%0&%zUsiW#w-KUT01zz%*`?|3XB4Qae&-zSp?AOHIivq4cskhs0+i? z(L9hOakErh-FtCRUQ|U@78)%$u|*nqa3AQ+=*+H@l;hKv7y#^@=kE_ySW|lau%e_^ z9hKZ(kz;wYGW0;3Ej3^gWr+TsP6c17>*GfY_)2xuqG1Eg4e zfhmA~_N!$}q&}gh)t9vSp#iQWz%zkT*d^b(64(Xwx+Pd$)G^%^yW80T93+B=z&s(^ zG#r3XY1K&4H-!*-PVjkT1OWN)tXvg2A$I=a|M0=dycJb~|QZk0kQAB3SNA3`iu109l=4jw_9K z&?;8p2LmexiF%18vl~Zbp6m_n6a*Fk`ZJ#l$(x8iY*2BV)U6JW#4@+r?I1FQ8+G>6 zjc^)xn`<8nnQI?N*$wYbr_hNVR?U3fqMVp`96xVuB?uX{B!Y+vF*$1%L_ z2g99^6A)OQT$P7;ILx9p0Arq*uN%6zSJFkHj0~$C$vF%`?e15?QYGl7)#Y^K>|7OV z*8@8-y3f0e+0W>q&t>RaF$iXCrP~R6c5>LlahxTKT(%I07&yXG;b^!~4Vf-Ejh-wl zqD))Y-zx&~u5~kMB=kqHW304WtJ4b4+SPgye%M##N}fz}!Zr>%91NU&8fU`BS7v5v zPtVj|9?j~|TTK_oE-dA;?Ks=mf8f2weYP1*5}VOQoadW~-RmvB6HruVH)pbI7ayDV ze(&+^i5-tpq`>o!r+Rnx?qmWld*J8ggmyfadQ{uXC{7!yYj^s!J2Tnm@mDD%&>xmoE*=3PU)sg0OgrjxWn%|)gUPNnI z5NprmR!cMm9?61@Ikyd4UvEwk<|5QwHXdjc3C1tW-+-v+wyQCy7vue~A)WRW_hFQq5G?UL(fW>Xd zdwoC#*`#BD-R@9C>7XdvsoF!3)`|M0J%K#(iI=zmkx5d#Z0izHT&;{%+O(6a)bMKV z!>t@@d5%`>wA4bNbPh843BEOV9N6fCXUPIY-UaNAX}@`l25`R(Kp+}dpyzQwqgh~} z8ul;fkoHF=j#J*mG7=%_mcCQzkDBD+HVoXZs7~Z;GtF+Fr*|H6aCY6L2Oatn1E+Ah zEdqTGb&qyRjRk9K(>5lwsd(Z!{U98i+(=7#)0Bu(tY3YUVjB73c9v*~!E%9YlAMgX zR22Yl0k-~|9M>|e(^S%X9@XjuI~LFDQ-d6o>OBvbwA<20`W()8 zp2iPig9ytGFTOyAN!nPg*O`GEnWPiwmi)fTyRvU`94qDN%8m4a16Y+O{f%IZ%VDGe zT-3o^U$&(2fZq1_F)Fgr!_aQuNh{kwn27+F?H|B5uWKAA`Hp30Hoq_C#>M=sKJIl{ z>Cezpvrk@~8+TeJfz!(ROadxgzabNO-IgDQv?;ksADxmbDa|Ba#Aa3eMUHI5UMAZe zUf<)2Ic|&>6x@$FY><$=W}!_VUfLWi`E#vyvbAx-va62#!9q{)@O~^T45ElG$(lbga|u3(_xdKhu?9sD_0|#zu`EWTmQn|PV$$d^!`Sy-2{W5n z-AhbX_J_UmeM_N-{VxP2vmtYp=_O>aB-u5cr*E8pDqb`_;oA2XeP`5}2$ts}fn0Rwe7_tUt_-ZJe6T%vK4m23q54%9a(pfKI3b zt1UIaZuP^qh^e7RHUF(zG_~t*-AF|QSnO!KXyS~ngC+lpdXr?T&Y&*6)ifmGHyKQA z2DKjg+0>sWgm)%AT9FLloJN2Xn|JfH?@X?`NpIXT99n!LKnlJ3rGZ2P{$&Uf?a!Uq zOy1ucFa)ljyDrmgH%kzciD*+lOA-agnx*}9dfKmcp@x4T;SFmS>SB#|8jO4`NQlZY z^7T>Zj(H~2Q1pb}o5l~>5CE({-@tsYWvE5%jxp9&q6~mKB6}Y4(KK@DPbbN9jCwr( zw3hu+3#1?s@<6q#X$$u4zAp3pZZ)!6mC*BG-E)MkNmWC1gXT}Ll1@P9f+D!);PG%H zK)&&1sD!A6S&sS`{$6!d-vQOP<JpkzPpt0aI>TYe9t*Riq9Zjm78~Z@m0B+(~sD;@?frQORM-^Lo-iJpG{|9z>m#ayq%Nn2a?atGT1k1oR}4YgmQ4JX$VEn<#kR>-80s*3xa zD1Xo2;I^mD`l1gjlwbvj)1GQvGlJ`5l3JK)zy~@}i&OQDUCgPOQYnX5-xhQSbXj_l6%Wg6=9m`CrZvU&wz5heXMd8I? zi`-5s)ECRhmZuk0iI?k~=>7vbbMam)x!OvSwnrJ;RYX1Mc!7>@4H+1wSA9&$cK7w| z+>U^6lXj3=oVZDP_ZqEox)A4c@Q_t~y~$d1!bB^H&QpmJ8?AYrsM4nIhIf$3`SPr8 zS(7`=ZXhi~0vm}YVTqW?0mE4;%mEGI;N1kZb;jSUZqx9ckOpO;9?54|0whLIn>vi+ zMzD{;9zmZq3Jo{IC5sYS?xbssY%LPt@TXfK0VR}HOk$%_47X0Xm!-Z`IDx}j(M6h` ziSfWeN!U=DVdj_96oYl>utX1UJKHeD$hrYKPBjNqzdnIwUTvt5q_r#Upg?XjuBYvRCzcYQqsS18>pn`7VS>KN z)W1%!ko>5xagihoIi#F|-G*L*5OMumeN5(Rm$!j$CBml{bpp^%G#h~g1^T{E5-Ns_4tfe6b*yp*1h5l10_IRhdy4|g4t^~# ziK-a*^O#wJFvsvjIf=7S|D%#L)m=%N@{~IveZp;TyH}UmD<<{2EK|CzR@Mr&wThe7 zN%>r1+eb(X^3{~Ma)M)wS>Z1E*4~K!wteuu8f2W7UzPzucxod6p|P1zYpEGBgpuO0 zIK=S7EtbI(u)1Y|#!eOjGe0CFO|1;K@#nymsiZwj7LIT~M?9Gy<`-**KIXtH$uQ4X zp6`--n2{IZrQ*=tUYuP3Zk{6%BdJVDH_~mhI7s>qm@C$TVayd$H5=6?5V|>B_QM=0 zjnqAs)2+HbNd&+j=W4I^?y1f`<>$tqm%$Ccb}*gT)w?@Wi$?r{IY$$qeXRF|t8(MY z{K!VJEp5-wfQe-{+vYaD)ID-r7S~!2d$QBanU{Kf?ySBU%~u>`>D4+QTI@!=0G@=; zBl4>@y*VE|^mV4r>O{X|gPFwZa7gydKd*ztBa%Do`#799&1nTx6R@^ooYmozYdMDa zY`7jD#SIQJp~!Mt;_RB!t7~<_fblxn3iv?Z1X)fCM*Y)|@DHt$nt=S@&g^*i{CA`P zq?G%Mg-^yhSP>HZy@kt)P4EwQv2ANR5YVfema6>FcDU_uhkAfF=LOy_DF)}YXSA%? z)OVNa4CoR%oz0vw+LipN3A;)*O!vM2HL8MJtxU<85%F^o@KbtX9fW)a zfPl6jcbgjOSjv0!ie+<3uiB|s!u~SbqOlec)8O>1A=jt8`mH{x7#oD4D#7`%@&kC+ zPN^sP5I*Xf70`saX@U%sWk0eBQd7`P^#?RI#wtSC4ZWPU zOJn@Ske2uhLmRDSo0%j>nb+!+MMq>ttl|Q9*b1 zme9`L2v{+L-wHHehk{}9)_Pn)FHCqadriQlg)a7*BxqE zqcLqUbe_?Y9nUs10<1hxhGEpkuUQTd01RbA$}q^J2+f7#CJb5BNg8)CwJj{UBoi6v zs^RcGjOGpW@f3BKkH(!0m45wS721{M6SZvw#*RES$m_dgR-q^o_f~I_% zHyqA@nCWrjlUp9~|Cr%XgJrefYCd*{(oRZf4g?72^9S(iIl;n74AmyrpiJ*1IO_zW z3}IiQYuZ@_k?@pxAcqA~>NRtNi10lgGx+VP)yNB(>?%W=>e|;V(CiH~a#O@9k81uR zpKJ89Zkyb%MX*XIUO}Rwx(sldPa966N=J5OvNxc(69=8xYiYdAt8V{_9SZ}jmV^uR z(lLlt$iKD7SV&ZRdUq2$hP1}0w6la9#5omj)KX{4i!O|C)0MO5bzRp3wFa=FyiE3VD>YNmlr6RwS!DWB=mV3gHiJ@%_ z@d8@d;*lYWpwiGqEKTh7L-ja20q$W6G{mr99hKI$n&HVvw#4Wm6tmS5oSDqEss4%Z z0u!+|>KEI8*M>#U-mBpbIp|A$SCkowyV{|>JXgT?NdZh0$ElD7myU08PI#ivQk^G# zUcW_QbeCY{R9o3v_&6aBzz#@`IndXa1rJ;yRvNFTM3(@fK&5_tL>OD5G*#nUD8{Qy z0kL#SQ7NEb0hFZacD%t&x1h*gLAZ0L(HzrzeT;zGrN?%wKA=XMg=Qfi))^&==mueF z@9aYSkaa^8mTnw#omF3`T;grVcI%FZ^6k}M6SaP+GphwP`cY~vB9lnAK#AtGUya>T zHGu_}wr3qo>#Q4^bljcs)$Y<&dnn!ey&9wm_Fa`lWS4gs4ILaL4J}1!go8nN z*RV3t2?o@^KeQpKhP*@g_$xy#u$U|iXTAVPi9Rnbumlnh?*p-JiC&>xD;G>{F{{-T zL+fXW!QbL*_S^cDcqCaLTD!zb!#yp0hAlBfE~PKEcNn1hpsv!C30h%OYB^}(LGuK# zZrp%zfEBwUXi>yK!{lA0pSOZmBr$4fyOvg14}e!V+SR=LZ??EP7$wHC$6~E-Yc7-^ z)hta(P?ToFz#s%x7Hn7+c|N?fXtI^i1Z1~RH5B|REV>L^%B@K zl~c;>Uaa{kRi^lXmcDE!{VxqoJg`!(m_ax*B86DaC^C_gx3F+=H*TaqN~*4MrVBR; zMV(fjExB9ohu)F9l)TCzZLl+=kre7xZ6%voirE1Q@=+3zaZn0T&5aY6BlXl`J(rog ziSW%Fc<4P01K*2NxP}eNh$4coH5N4Dkj;5(sV8yE)E6e(u;g}}Z~{FNt~87xVOkBd zBVzJ7pSpW6aN5%@uVWb)5>Q{1le7vE0G)Nv0&U?{#MxTLLA4}awNF%bo%AYNk>J?f z2i4oa7+-;qyew z+7$B1t9BF!9%cfFS`B@{tSk7b1&}2U%}OZ5M2#p?NLL!_?n5M|nC1v?B3(&6fhu%@ zxH&crD2Dk3PbC0?tCjdCH@oCv<#;L1Dyj-EGX9;fit2B71udAV&kEqQRI2LTrd6oM zlBmT%b#a&J;+Iv0?-DGSNh^k(D#CAFB2u>+<3Xde6|6>GCJD-5Ji1a6^>bMm6UI%D zscV?I)anNkOM^^Z$%LxYd2gD#hNYbs6{Ur2APT`sG-eMdEufqeM(lk_G~5^<48H}& zLaQ{qI>S8^ctR5h3ac|zgx4XxK>2Yu)MCzSd25u`3xmGuN~Wn>h2cPwmiWB0jH-Js z;l%T**>FQ-hKJ|zKXer=b3St9AJ+?cRSyodx+()dyOXYU=8?A~%v_?Zy?t1Eepq_nu=K)V>7~Qc>C=OBmg=D(nOlUJpf@W6 z_dML&;NtwkRrzhT-@N@6@;lFbM%eqc`{|Y*w_m)}YcTdhSdRJF!k2%a z+ahah|5u*17Ik*i8#}=p`zPWQt<>m8=&78+8aeFdKSg`|qCWRoUAqs(5rZ~L7HT81 zQ5A7zvSVjrOVJ=v_Dst(C2uEs9%Q#*)ZO2<6Ff3f9VUPY{Bk+8#N_iNshOTS98CWRE z7U@YdgMONLMQSO!<0)ZiQwT#t4-LZ5j&TS|7>34nGht|aCSez4Eb}X2M)F*~BwlgqoB|QFYnY?=~KARj$Y)$tG~ziaRuZ zx$@CX`+Ne^T6qYM9RZuMQ+5Gh3SNo&b)9P<0)8i>c~AM9CWM5}k0Y zT~>L0`2{~p7JyS1MZ6_BEWyK!dTgQa>RzNm>w>ZI@Rb8%}%r&(b*9I{#G zYA(2}a)IKHY@SqioVthRW(5ES5;hg91-g?{!B^md30y&2HWko4NlBW8aGQbQmU zVi<5GipN51$V5o!T)}Z7bEfNHxSQR+mr5C^f^4S~b{Sag8ne?jAh@9H(>A zZCN|jlNG|8VAi_v!J-RbBo!$LslL`q)hT$iQ!3ca!_^UN7VfsHOZ?1Be^&u zG-zs+Fe@Dd11v})U#mq2I-)|!Kz9Be-zsNheAJ1gJyvkO>-b^0L_#__5QT86=O}|C zSG-g8DZ$j~Hr?%_oFwS(tumimPuVE7b3IKuh} z+W?2GKAGHApN3`fnpNXW{;FCf_S}z(ue6iLkTL5ehQ2D--P2^Ev}` ziliI5z~;3D3JsXO6j-=T432MD6-YVSL3cX_rUh${$?(*K9J;WYT7<>u??yX>o=Hov zrQtSLhA4w_;qiR(Knt9~B(0Qh%8;SsBuAg}8jS&lyc#(ugu5JUaY#kgVAXr|bcJ;s zwf?w>6~<3S8FX7Kc6B%|so-sl?ZH6av*=fgNVBHHFfll(ikA;SQ`}O*4-xv+774*9JUW@rU%4zR7q7lY=81) zNcb9QmP&_Az6HVUZ*j-~QwpM_>&T>FADPY#j|>L36&m?i7?CC%*+y?b6n7*J%)=tm ztcy^cK<%K8?mj!D#6}WeO&mSb8kyEiNv9EWb5N>eAsO7SayA{T7;%@tD@-Rj&zYKP zQ;YG)h=TmtX|PZW42yuSByh5jJ2eFx0*bmzbT)*fEk(x_^@g5#V_6W8=B^}|4Z#r} zEE)4%Dfks7TdfLbzEY3$Oa`X}D1$n6CBb?j-e8$af=pe*%+@e-MUbg0ndpuhy4eKg zb0>p@Qp`4>gs_6ru!2&15ye^Uy9cL$YmKTRP;X^$S`T0^wMyO9+UpZkX+>8RXa5|P zTkmR?l0k7@Nx;X#Nk)Lz?OBlcHbYKW$8^_2__GbsU9CgBV^$JTF)A7YGW1=8p#lr+ z(}UU*(YI#Wt)e08kJYg{Y-MTCie0e?U{ypNvs_ed6l>RJJ1M5AGq}~kE4o7Au#ehr z9ltPs!#r+Q*p1$!9`Hk7r}k@xVem5$1X6}nBzVecB{JDJpIE_MA-Z9@f?p2P)hC$66t) z1bw#O`TV-h*o{cDh<+hYs{(=x<1`GRoEp}iyv3x6ULg^jcvC5>O}!%p7f_37?Pik^ z9mA4|w%Z2fxN)NgrBG$cvT!!tSSXurTpXKi&Vwhivz|DvbPH+Y>DEr1>=bo}akE9a zCz!3ns9=Y6BcI>yw?x=1>Dk}-ZkVc^4ISk@|LdM>@A+f)Kq8Jyd(C; zxwYGwsTTRRtX|&XTdv5J#L|gPm`5^+^~l)@fOD}oG7D&<8*>Rp6S4*{416GTPM2R^ z1ed{PYy&t067=Ry+Nazzn1-7r59UvadaJ4ku<)Kkc->jV+Zb(P#Mo0_A4a@g2|;lI zM}%Z4;LRf4f=Dk51}kA(!d#%3FAfZ)SV@^hyM@ZH(nGQR4VVt{?t&obO`b)eTtkl8 z+i{*+fYA+3rN}oazCsKI-6$pgvL33>P*nHop9 zn{ysxrvdLK^s712ukv9H(nFzq0@?y|tp)gW8#^>UK1&5g-a>;S&`rtO5=jWPH7UmWPw_!YB0q4n6{CztX zPf+7V6e8TPlzM~xisws7lF#isV%+G}v)k`D#cP_8r$uaP1!qd`O z0s!KdO}a(vi=&R#^R30=>coyr0(w%vA)VM9#{-8q<(0`r&9@aR*`NeN!qqal zl43vcJT^AWMu0L5Xu}9NdBV;qx$z%$(QJ5uT%DWuF+}W|7@zm}!-Qw6D%j%?MZc#J zVj$DgyT-SzwfMFlzazfQ;@R|85Z~5pBv*2*#gRoqGaVvsR`PWa5%(VPZP_93yBC7M zxG;7LSUause>%Qx>5vEBQYY{eTIMA(;Gt-NWO0kTGu7z_)*ohQ$oaqje=5H1C#Js$ zIzMqEl|SUa8QyWe=xqykmvSYg|PhCnc&#= z8D}98u<4{YSRTint>2;&g5$gX@{h)|9mxJKif7yO-tlZtSUgrOAEtV>I{R96_6>_? zOD8(2!=uy1SLG)kQs&lb#k@g{+~x>J z&?z2XE^^f9JoynF_zDps1Fok~IB1w{P^`&hofYNOU^duO!KgQHRB*5}Zm@wtR9hzd zM}pZzBj=xtX#2){MzpOO7SR^S7bhdyCcPt~?P+-N_>1`AJ2B4p26{s&oQU9Q z0q&ZaQv%wa4&xy-$Gs-LUKHTN@PIZk9wtqbYZIY@?-tOu8@zh&fVNj{Zkg{HCj;7s zHYv8M2Ri~+Oq=N8Jnd}(Z5w1Ii%WwI-2}yZdBFnO*y%)_{jY$w_+$SS&}P<+|Kxx+ zN%hF?frI=WK1)XoTdy~k5VqI4D*lZSHW#`ECwr=Q4)Ae^47zn;8ZLpc316V7zCKmTf5k&3t;y~t+4_Q=x&QY9*k&kzjlF5sqs-U$nnC7& zTL9aTwu??1y9BDSomhrp0q8`mVgH_x;hT#$ynDdfb*b#@cKpb88M-HD*Ik=x+~1eo zGGWt~ChV-L*nH{ z@|RLdUsNmR%c1iqQI(x|IUkek=^0!b>6#pQq34%jz}#BCDrXxIe6^ImC!=WX$!O$} z;Hy`W7Wr0t$p}C7+#|1Z&^iJNMt`#h&L(ByIbQq&UL1e!B;O@hC7Aq^5k1SHPeDkt0&e})x_aaxlxZU zkMlY4d-3-u;%UKpeFr)|u8^Oa!eV|ig=PF!6_%$O-{J(DbKu}OQ5HqL1mA_E_bHsQ zKUNdn&$_7Z$KRz|R?cZ{LS^`$+d1WwGPx4$_`A55N_$?-Kvz7ObKx7N?i(HG5Y z^ts8o%~gIDV=s}yRk690x*=AVs>%Nrmw(kWG97u{@-I9W>4bOrN?9h$7dj)a1CE0A zUSd(KfkEXL@xt`$)x%`Zr?eApWW|Q zeH_I>FL)dnE!@d}D(FV^5;{TW@dKzW^sXc1FBVhzJ<{r|{U{~zyu&l`Vv15j-xxmP z=XRs(qZjK1&4+j0ZaPEjr}ln>LY?Cz))#%oz246E4#Sa($6d#)4E@b!jweJ+)4zaTcZJ&z4;=ILfY7mkf?JgtbnBsyG#;u92T_JU`0XniQEP)|3ew>2_rhmC>Dj!QtwY)lF z!n3Ttkr{lhi!aYbAE)yLso$|RUEq6D*acgY0Ou+HEyjpdPHVb`Uu&G({J2@=tZ8R;iAYnra{vDD-0`>8Xv znX*GOm71RVayq+aa>Xm&JwH=XP1VKdIW|>}fVio;IDqZtfL2{(S1$ne#c!LX1$1ee zW+|EfinSG0(5R|)vlP};^-1Pg6Ew;uh;C1cY1WeI#x-x7rE{p~%hz{Z%PiU42&Sc) zOaRt(FO+~VYLVKID{%HG8~G8m0)Sgj*nK_p9|z@|yw|w-Ml(bmWq=Kv8{rAWl^h>)Zp>$Wt>6@kXOulVZ`31bd31FQ2Ai)G zKT*s>RiuT7Y2_7&-1Tf}B`eqIXLcF8nqEd{#U(3`y4G;gsg$uOS-EX+6O1^u?WL-0 z2Ojb_c>@e(U_Hj8`ptvzvE%F5BV$`+U<*kChFs|^CoW}^l;y13OrBW*r)RL zZKD^>B;cAfK==3I4}%%}IGk}n(MZY5HZjft`gVMsJ$6uY@-kz@{Cdd>jPJ>cXDF1c zfYigC?CO`Z04t06F9QJH;^hqa(bM^XLDR?9R0YmPnKjv?shmG*+de)~yX`=BN83Oz z)zu&4|JB^L1k?dzI>2avi~+Xn2cF@d>E4Hd6zFn;F=F4-yn)Bnz6~^g8L@+N_mh*n zj8P^p+oB(K#*-D8ERq%MekLoP3VO;qn+l`#t)pwRTXWYO11B(qb1v=phlCCLgbfdl zZJ_Hpf6%_ZzHMJP!+6=vT}MlEw+x$R>aQF_CxMP|a$k!upnP>O=@l(rrd2K|1%sQm zb!ImXw%U*>SkDLzfeA0@nX+2IvgVMI09A8#tAVOhpxUSR+Kvys3ClhC_I5fnprefI z;YJEo@b<9`l9!1;(t2XFm$;JgURlOJW4{s^U3K}g^w8e}PQ3Cmr=LqiG8E@A6XLZ?eO!euRVCU=|gEA>0gzjkPH@89sx0`LJo zVf-|pWobLGGJCA!xlf&fSM~qWzwfPpqq>EN2EbU;m<0?|anaz+Py4V;OFX7^;UOf+=5CjpWo5Pn^X-9>gJp32>& z(p{#y%S?Bf>n;uMa<98AcbA9UrP*D!x=W|K9C4QdM0K_2E@kdg?k+OKkvG*{X1dE< zcWH2!d);NZyFBDB&F-?*T{_+6h`SV+4A@ZYE@kdg?k<(?GSywQ`A_R}-KD`@?sb>t z?(&ekG`q`Icjux=XATVH?n7BN35ODT+uu4l7%14m3-O~D|XELSj&MCBoBD^H%FS+=1M-_*g9Bo zblw>)2S=<%AQ-G_8A$iy<57Z)fHCb zV`3(}qT&c29UF_F|7j_vIFX!f9?=uej^t18MF`|@S7|Tt_4zlCnM}C7OxlO-TYm&a z9)X(gjYI#pkMJAU`H-E1ewI+5sChtwEC_zuFMlI$2q%hssQry$Iw&Li*bG>-fV?6bpgYfF3$Sa9xp|5O26Np}(kF{r8v+(q} zFBZ^pY3g?ch*KEOH}T~)3V?m$3}2=v#z52q4vpTnZ?($NDH6mEnHQt{NCK&fqjx6g zSJ4>PFVRboJXtAB20L!sTSPC5BI(BF;+|*MR=jp+oL-)zUiJ-wBS#T8l9jMevGm(I zi`3__e&d?rp67-k-%P`+n<+Aj4@q2IX-FvKn*}O>6<^0kX$~qms3rs)j(nBIedAvM z{8yKQ$8%4uYU+Dc^}upb!{N34f`!KnKhSKK?{?}E|6YS#ez4pw|JZ34x)ApD2hElO z7k#(x(xGA9y$P(jPSOH>{NBCx-VYwK%Rd@vR@tF?xBiiOA8>CCtNIuBs(9i7dn@tX zBRuKc|7&tn28|*Bm}10dz&EXY8`CREp+3(viyID*Fo1P`-(LP1$p94(AcgH?ea|lD zir~YmiD{tzn6;>wwa=!rN2{_=vj$Vy&H4L;?RZCOEso$opR-wi`ag~Tabr2Se5^=g zvwpy^T;&{>b#TQ~m7mylADL`*vmiS9bGg1Axu{gS&6${>xnt@PLUcdmKo} zMsuy7eFM;ZDZ35(R;P;p2JrZ`YmwYDTM$ajcide}=52EoY}ddW z)w%JbN%$w-bNyU(?glG0Sx@6)d_OX(qCx@{(-k0(^x_}&63Q-$ko-Xoi;T#l0vLS6 zsFfE#SI^~S&SEBK#45S_GV^*vY^u`0%o(wnN}H*)x!nEiUh0++Lsy=EvfQ2@jJYf4 z74ocdom?5mKW%l_pEbMdPmXYHS`{mXamiL=*^8UKMe9gMS>x4h`A6Y`+&l$rxG1o0 zD`&yw|AAyLez!HDll_K$w5-p=whX@tcRzSDXsj}v~n!nm6I!4zy0&ItSdj; zi{$?$B>qh9{CR(WQGt_tHv6|6E6H6oGP?%Bqm1Exs|*A@ecL{6FE4+jm~KMiY-2lf z35IfP+i<`eE}@5WpEbpJ-X%q}dnqJoZU-QgZ2yWvDw35_eZ}CCm2yInp~7A*r0Ux= zrb>vVv}9Qb3M!-5Qx^ z3%r=7Z|4mT;c~C@mY4W8lL_U0j(46zPT)O$I(Qjj=4OP3SzFDhG^fQ&e4%{t&O5F# z4GLn3e)|7#_x5pe7T2BcfMt-e>>k;2OcEuYO?s1=gv5iRjeG8*qz4Z$!ozxOUSs2U zVsUK(Y8b4IlRPntt+3o583$4%%ad9L_3k> z5FpwYoQQmO4z4*|ymIR`cU*a~y$uLqcXBpZKILzShR}*zX$4(SviDNNS0J9*h@?t- zqbWnoF{vq=B5bmI$Bwa=bGhr@f}zoWe(oDMu)f29>pyQr`NhGB|8Um-cz4J71LfQG zm7u}Fl}o;m>wcGpoI%I|yNs6yYxNgahKLAkadLe)Rq@7_6o-(_#De&fEr|HzR8 zpKIs&|3yk-?}dOL7;dlQ=jWk&?=k3Z$02;6x4pzalQKuZ8;>b*2aFFMU5G_+{(;|V zFRV?Exx%|S*)yN|3qYP2Z1!GoKGtfn9m6tLF9|z_y?+9_`q|X*!9bzv-Gc+={X-Ik zAJoe)X%|8US*$!eWICXNGFB_{$)WwnG!^-!edE{r5!bdHzoYjUzRU0>6!OtW4PF6!{6od?fNMvtbbqoGapoU- zDA&V2BegxOI`Q2P9(h2wG2jiilOFIIs9wbJ_Q;iQv@?!{QKs2hqjT;{71dW@3dOot zMn2|(PCm59FS>8@tlp?o%jSN0?RAqvp}5;+cJ)8-7(PmFnh`%9ljpvPIDCvAwc}cj zTd%4tV_N7bsM9}+_i1t^WA~@JjOM$!?#~rTt37MniUh?0t{U~V;^y{Tw}Or_CioZW z`fx5FXJDIyW>H?D^Q1iJ@^_P@+aeqL1+bsD8ERgxZyYo#5G1RLm8Wqp)sB$U$6{Vs z?p=Z6)8svBqVP`?`dEbu#nbYXZ0b%y?QKAt0Bq>!fEF%$YLUWGYf{w?6<)3{4;T9G z_p`nfjI*C2yLgg^zkv$;vh!Ho3d?m(Z&O!zHtqm{Kb%a(z_ZlRULanj%htB`m~Ps-3rprn#&IhJ<4Iv z*;qI|r}y&j!$k?_A9!rXpho9#=wnAmdAqcZT6qTlI4WN0N76~Uc%Tc@n#~*fpjYqu zf1gbw`inehPmr)ikLf2g!q?nZU{hqx{*xHdn9AN3dB>L+&{se0bDyz0vSsnCMkt!; zVm5!5p2XAo#Z@IC-D@h&8+}#)s}_&a?9uJcdB3DM?XNAK78I}dIct0@y?ThRT0E>Q zjc&%J>*-Viny%^`=^sD0*grl#mCC#-xW{N8cB535(W;-jM9s>gHw|6}d{W@@uuG#T zf@x3x_+M5cal5(GD_G_Q>pc%KQ2=x+Kr;cPofYE_Q_@heslkLI3bOfx4yDOb^{zQM zH>Lb>C+KF{rWDN&I(fkVYPXga9$CPFy(~~|nq@9z z(b8DPh00iYh?EZ$RgVXoE`lu-{k`{MgDk95jULTK%r6WSea8o$FgPES?LVqd0fAka zHQg-QG-?hds}P{NdbqG0uh8l|^{zHLkbsE;p%Lkj>%LfeZK3$CU=v6*MXf?gG#$(c zms~Q-pEsA(Se^=fRb>}ZPx%!K`430PnB~#DGvS5hn#9ZmkxxF~P(cROi!#}B-8eXC z5c8Puu`ydHUSXsSg$ap#2|}UI`ODcx=8{QCGyK%PZ$k!Op|2to_kwM;%NCaFvf)Be zD!Z~ZCkn6MK&V!jH$|e3#5d#&v7>z0?=Hmj2Cr36yQsxPC&yB{xpv?RsHVx11PL<# zR%znVt}=;nH~~2b0csosU^&r*nn{ zO`RpbhV|P-tQr^7nPMz_(8md{$d3wbRfT2aMgM!otqaWofGIP|PXJh!0xa>TZ?DIf z_Oby4@Ap)x)CD%jRZK^1`ILnw1iebaLJruf)+629*fy8Xstckbg<|^Gw~Dl`A`;{v z+vMmJt#%VE7TtI1&EK+CCDECbxu>nVy+UHkU9siJw(+@oiE5wjI6-7A@hpbSVhu!s zn%uiEn;I+)eSEv8J5ei=gvTu^;)N6vI$YxdjMS*TB4to!t;G+B=5y*p-8s^bMsS+M z2QOT!Ea@+*tgbt;AX!>GCRwqwK@o8U9@w=Q@nU5Ky0=6{(B%&Ggn?V#BQY9|6anjY z*I6lv`8&^J#==2PRRl`GXegbM_lY=~=~8+mJfY`981Y#AKuG~{H%5mp=i6pI_6WAh zMrAXG+fD8lt8|ob$f2VScHl(Qs?GB409+sIN2*%wf?(1=Ur7afaighIbUaV4;A5Ky z`kST`bTJge&@>$IV1bep#OyKyw4I(JYFG>@(lF&9_>z)=pAhq?vF-5a9LY z`=pbEZ#2}B!HF9TS3gtc{MENf3waHr1Dpbr^zSfvi=@ypK0jn3#|GuB;e4EvPx z^7z@qwB}B$7b7H`?K-PMWTk>$Dm^xygu(g&VR}ORii&@jBG>}fR-TugM8*p$c`(wT zX(~`jvsjxShFX+zS;RCZDRC<}{Xdoy(iF)MzK9w`(* zHQeVRTKw}_5v^tF)|Pt2%RfvjnW<+1Dw2f0_$Adw3QsD6*2Ijn9g~asTQi)ut&;i0 zl%pB8bcdn5$(LzQLhvzl2$&(c;!3!#iLlRnw0 zeBBapAsrNxs#G(7plrlUnG94-rpwUCSaTixg?+(QD5^y3sPQv5)YvL#hRk(;X)2>Z zn^H^iIj$EnE(&~V#3cVQH8lB9j=qLdlaUI&Dvd6dbO%y0Jl@+mu&^Bp=Lj+5nMK4Q5hbq9%PXui@)3I>pQ1B*soq6=D1 zh=E17fw-a1+^PxGu@e-ltoj|TRI=E?P~kbKa=>W;Q9<1Ap&jxPYHU#kLRPJ(odSxe zgxU9mixE6aZW^0HU?ggwvRbGs$&h+#*y#N^GLkkf3#2CX5>>Ys4Cti{QC$`lLhNxV zRfZ0vF^_^`nVBeeGez3OosI><|85u7N5lx-PlK$eeoYgSlIS);yg+4K(JR_1DYabj zm*Sh4p#NxMDl5*BA|((_A7;tEM|Gv`#%HX{QK z8G29@s+r(ub#jMX8XrUk<2H;Dvn z)lIK+s%1=oGDFde-4D^0G$fO%K?b`EVKf9C2ou#hRMdLnBfN&NrbboNR<%s(BpMIV zENnNcF^s;(=1^f&Mk*L;GW4_DrLpcb^>bjLyB;zV&F{#Eq_@}V7c*_hjqN( z5+hWtXxNfW4S!x(-4vm==6TZ?_@z!p&F|At!i@8ACG9EU0YNKs<*cIOC7L(u=Xcjsu-0wTBAo?G5QHCO&G z{P-Vl`SD-ViLXYsJMpcrNCWAFB*?Oc&Gy{W--mj38nsQC{Cq#Il4Rd~dAGML2uxYn zKT#y{jw6E`@cD695i0b8!R=K}ax8hTR=n%`t765PJBcc}U*87Xy<+{({r6C9MS6c%jWPxDB!Q~%N5R4G#4x!I!=C- z<=Xy^uxCn#SDK*3#cv%t?!f~$?_f8cO;utH`?hmDtdq?c4zC^J4B856KV6-0;0e6) zzl3H$C<-+oa}BLrxT*Pfn^0;A>f4d)c_&*qI|!ROyn?T+PJCVccJ9BbSNcC>3~xp4 zoZ>at{WmlG=!8RoqU;Co4@{*n#fsl!=)aAspjcXh~(ni+|`Ebh_oMRz0aIpN`nu90mn*`m1Yi{pUl=Ai` z7YrV^GuQpr`ZGidl^-PlNRVp|E?jdcXGnV9AEPzs_NN5S*Jm9{`Bn!Yt$Ah1m0xBS z?}o%TWBgn!-@Fe+0YOy)E}MNl({5>S zSq+2BVh~*}eqQvEkM1~kMfrslWj?9EClmGzPW;O(<7sf>V^}{d0B;>CZ};Z?;F@QN zx7gJ=*!Sp_x}^8lU@iynwsr^^J+&m?}O=UDBYB=*J)p|ppq~tgC-`oXfb3N0=NUz$y>FlKlH;-L!wkM)|@0 zL!n zt4N(SJ5{c5<##@EY}Zrq;KbiZ0_J-EW*2Jfea&U`dfPx$?BtvAknGHU^vE() z!|l?ut~GdnNqPT{jIvwcap8AsRK=1rB~UbjI(E9pVyjtRe0bJwN;r_k@v{ z{bp}02w0V3li6AYr{IIF!MQnxnuoIq6*twHOi?i9*ReahiW-I z6tVEI7f^agbnWOrA5Bd$T8}tJ3#I1A=MI$lVEeVRKq*E{mtwO14-b`}djG_-lLvJh z58tG(olZRJF9-;)$2&S!tT}*=xu<>$hZI&^{YnR#!$)crg)qF3;QoPqr8*&=JI!RdS6HPIhCnz;#3*7#AkA$Z{aF7w^tr4 zug`BIt$*SiM*ouw2Y7#4L;JV~t)4zmTeHmoEvF`$Mlv8q;bGe3wKH@4%+7)1o*x+h zPhEZYjhA`{#y>HP;FNxh5A)DoV;lcUmHDE)Hm_-8puBrv{LGOfoOT!(|K?<5Xg*_0 zzkWt}NBO=(dynktKlB6OHTNBQXrNq$HSE@vo#B- z>tTI3^f1TIIJB2rmz39~C1iH|+A&HCV%QL+|58*K0o(UkxHc7iLoodA zR$39bG9aaYtTud`DD4I4HjBCj`HL{I3Ng?7d_%DQwDj1=KU_vgdm6%z&}e zNoo>tK1!&%(B}NC8WZOO>@zK0uz-E-PMTR)&b5yN$1uKd6bChR-m02eoJdk=P3f;+ zB_F;jvXFmxFKNQ~wJ(xNRSKy5WKm-rm8eu&N>VyN8-Wz!0%1p*L$n22x?l+jiUBAT zf53aQGJb7cnAis(WJgo491t~BKTkKieSD=RPiu``*`BreQKXMdt-YF*YJ7wirwl_v zFGk5^w?03s6cBw^oams8-0*lPH|9s*CciI*=zb9Ge#jLST~UW~Qc00CYLY~3uJp~r!PBf9N&09aOF^qZ z__0)Gj2Qz~CfM%-t2-{*05u8(sHx>BKolMyV{U_?uy&@)f*Agm?q+a`h@CjxTa@$0@*qGxJO4trFK`VK@C z#DrW!3*Q{tm>;nKlzxA-RiAAHcGgl&!XtY0J8902J_XS%$|)@1Wk9u);Mf>BhnZPs zNju!Xb(z`$xm*pnEzT}<$1mC3>A-W;{>^DOIB^C_o`S&AHcuQPvJ0~HTaEgEK>gfe z0Omr`is7q%WLrO&0&Q(f*6iarabuNRu~*g4gDDy&Dr8g+g&a}H zNr~YlIyDKJYSA?!&Tte&Kg5U^it_GhySbgCQKIxj4u+)C(J7axyr`qsMvYeeyDdKw zRg2M#OADOlm3!TXq8|248fNr+Ge%q)!<8Jm+dY90y3jtI%$NElPAjGBdoRVeCn zOD-9k1M>=xxynuX5es;bY6+19gA`>$QYI1=?}zh%Vg8`Fxg|d(%9yNnlUBReY~;hQ z%rcW81tL`^I%MxPbxH(RIhig6D66IFQE?ZXazQY3T0jcL_qs@hig;jyM0BiAUis$i zx4J}u@V_W_9umSy&G)U!ERQO*#ba}hT31)e=$y&$xQ&X3NR2YsOn`04rw3M}pp%tP zc|}DBeFZ_sIUH=$0gtpURU}t*XfO4t?VV~Fc;!ti#)LpAd}3La);IVe z3@lPN%JkIMT0?Zwiz^KgxWmS z)G#I{CmxORAaTiE;44wfo1FeJ9y9BWs>N(cagUoSs>`Oeyl((+i9A z9Lkqwn&m@s6BYWjhnymsW52b}Th;4bw2c2{tqbBip_(JNu6cf8=0llZ!{C}DUB}cC zkbN-%hgamz*ge>HU+$V;(OJ_qM|xMC^sQdf_r0BWn&f3-Z~~J? z&0%7gRTC$eg!EfpkXK%ZpP2~O=Bomu*p!o?L5VXdaazCNFl$J!@IKss{?NoWC-q-A zG_lDa)$KoTaALF5&R6V_zNhpdIjMa|Y;lO{M@br@>S2ECFFzH#Dd&`{=agUWKVP7o zSf!i*863yPs^6=_LrNrD=}IJXpnOWc{*TXKDVO&RaCti^<7@M;B17Xhw_7`YCq|H6sW5B6U$xPfZ7R~O30%?et-m4m+jc4>+|b*5feL+zGUJ;kw7AB zXZ$K{+m>D#7%z4Wj9=O-vv-ggtaMee@4kWYkQmJ0a=r;E#Rcx&QV2{CrTq843mY$d*x9=IB zo+48xLCY9OFmRyEW{ON9hipAu-jZKL?c>u`zyKNKg@ZdXNcl`3FQg3#V7RCe-a+$~ zhgLu$bw4~%-s6y{SKORVz$FYy6o%=*a2`JcWx4mhE-oC>cRD|&?RanFQ05{4#wW+f zBk=>6bKPGO7aUjqu*iX2)v(PrGX*YIfg4P_Qm1%5^f2iou8B*MdA`I*D=j?Zleh7l zFtH08Bu)awp>*Iy+W6#d{tM-3hEns~K$*ZVKrS`PZyP1AU1XK{C^3&$IOp*!M}0Ov zDWllAGsY2+`r_00q%3cm`AJ;mpX}tpu5%gYqH0rqjBMCDvVfc^o)z2x=+~7_R7@AG zc$|li73IDd(PEO7X;vvxb&<`UA1GDfRTC-e9TtM{cQO*dKP9(-am`1OfU|?*xGKCz zVjPG`Q9vt|;+wUe3UkD!=r>l>(#UDA2Pk?3SPivqgcU?;yD$>+-G*@{0nP;A)c5Aq zJ|DK4U`H}i)dzEkAD@RwwKaCm+f27s% z+d&5#Um`Rd4|6Em8`YU$rDISR%q3y2KG~CVJXM|$&m=-mc|E}11UM2D)HG#xF1fOi-kwvcuIGg~bz=}1?<^ZenNF7OlQt%~Pcg^GfeAv+hTTRVc7)W9N9Fx`T zv5d-qo04;d(UOI6iosC^b9fTi7C`{LC`tCGs)NusPw6sfI8s$MVUIDNPQXiHZz1NSgl6Zvn zw^=x2v|bTbV8fHu%8+}E(=fSGI5EK^Z%upt2)Mpa(JRpTH3IdCw@^qm5zj)glW_>? z5dfAxahj*6$7sUpSpcuGv?-hy>S9Z79;L1vu0 zBc|QCO@G02M9>i;s~a8EJ!XbMO6*-}n~y12I*xgqrhQlp6`P`J`da6}FvkL0)h)Jc z2A=rjEVLlmZnN3ODl4p%RxsqO3fbq=>)b72A*#g+zvLQ4H@RiFHreoQD^yH{+cX=bRcgY&9EN;fmLXTx#0>!8M-1^Au17_2p}U*fQZlIqGBq&R7JMhS0mCA zDrKz-h?%cM#Mt_z{%Ez4fZyi-o_cfusRjw~pr}Ilux3nhR*$0;2@=r228>afz}Oe2 zWu}{&B39U7;aeO_U<$XTxr?H?%t;n_H_r{5rU%?G^GMWfwzq&x_y!VJW1a@-P^ev@ z%`MMnLaE$mU8<6mO6<{yRw;2LfDJaAfsF+hb-qsfdp^z74%opUp~gwg9{i4V@H@Ds zKIUB!Vpr|DTYjsG?h#y8ZJ%#rSxy>pC)A;`lc}yg&OH-(#M|p(sbr9CScF+vX0tqF z5zg1cGLu2JVG(9wsb+b`BAjzr)D}qz&C>q}a5WB7J|?_sfp83RGwC&tutyBiB?{!m zcfdlgg2@|08hd7$#1G&IR9pP-a1lkV_oH69b zMey*<$28((%yswn6mV3K+~}YSG3^XI_zn#%Xa8$qQM06tF#7#q#k7SasM7XFLee>h zM3hHWS`eXNLvK{MPNk9r&nHHgbHJi!T^cRxCbK-9O0?Zc z*S#i|N(R}6Wr{RvSSN~HgRuzb>tUJ6AltB1NE4Q7mS-%&Ifq4UQ4JwL%Y8dQvmC>hM@JmC3YD8~L6uVH`jz*3}jOoDTOS9a&JSD&>^6MAeX z#=?9MV0LdIPm%l%j>5mHQgoNk;1Z1kI<_1lF>UC~K!`w|;$NZY&}w|^V9=&aQ*Hs~ zf5DJM3==!?K}l1GQIlaQfpGC#-3G02s_F&GXy2KC%*7O=1b*vyV1Wo03?&s4Ph?bs zy$71j`4PQ>I_7dwO|rbCO+^hV$cqJ8L`$_*63leXtkL3t)=%94&JKy7G}N2u>L@s% zlA<#l6*Sc~__CDBh!7PzLxQVF+?oxPthrWW`3Fhdb%C)!0ih37_AVM1oB|sUbibRA z)@;O?<`&L%;nraguQE*n|7n94cI`yDH^_S=CEGc#W2~;KY1gswO9Q3YCj0AMTdXu< z%}Z{s`=}Cx3cotUai%Q0O3gKY9Bfjfc$*dDr$sw}o3o&RCu9ipMv})(;x4*Va8cZx zq7>C}yJ6;i#24x?2>Gvp}l~gF)#ep#!>F zB&QmSI1GzCRfQwR^@m{_E*}w45djkJTeaWZsfl7TT7I!zP&AfGW)dQ{T(;zsDzP!N z9#t*$odHthoF6Z41`nwcgAqBqxzEg zd)G>93lj*<&^dHPnqSP~MOxhRrlCi89BHuZ5^on2)A2+tuE@IWlT)E1ORh~y4zGDj;5Ll$UP##6~{Cos1V*T$3!ntqI@LXH2veFanIX+B$Wn;cr`*QSvCf=JuKkX3vW_a6%$*@DVSy|qi>wY)Nk_Ivniz|qb zL$TG%_z+(~ixBxc74p~#uZlDJ_kF@~BNX>|SgL(fS^SKSOzCP}!^g!R++~8EBJ^nS zLY(XVP0BAM@K}l*wat(yjPZ5P*lK4ad8Or|cg2av6hSQx5V(t9IJ%?yNqEZ0EPn~ezq#H{@nl= z3xMeWh@Y)WtbZc_CIet90ODt>66=2z0J8y534r+7s>J%L0H_AQOaR2sRweddwC{s} z3=?+kQ#i!Ce_(Wl_P_pkl(2l_zz4<$kc3l=M>qZtj*!RS=Q``}j70iwaCmTHl)tOG z>c>Z7FNsAG`MavO{>+`+632N8{uGp6nt`*y`YClGoEe+GCFpOFgV3p>Odxt_!<;~j1S{hw1Y%(Tbg5|f zy5RtbpRG!)KefjgdIO*s0P(X`iS?ZUFdG140T4gYoqrzy)c}|bfcSBD*4GBWOaM#; zK>Tb~Vtr)*R03c+0ODt>5)p_ZAngL-8w4y9aYn;pQU5t3l0?`F;Q&V!W?3$d+@W?B zkqa9c^lo%A((!m?Asy?)Te9K@8Mz~}ie#x1$cmq&n+x6!9Xb7M+u2x%#$Im;sGiAy4=_zbNC=(SVg zX%Zcdg49^aCXFTB4Q;rGTS${c&qoKU$v~x$1*WN5hE4?$K~>a-ZsgxYH}=}-R1kEk ztPS1hPe!N49z~W)fJe1_c*nUhX>fhv;MF^4Nh&|UNSsolB_^`eOm1!*t^c~S#w0CvFBmDF7sW0E`4c{P;v} zecw)x{;2>M4uJT%MTzy@0U)UdLoop2=N2W_{~-V>0ni%&@pFq3>(>UrOaOERK>XaI z#QOgk0M!8K41oB#MTzx+0GJJcjsS?CTa;M;WdJxZ{3q$a@crlD7(!?0@8gp5b9R)s zx1B}EF7QRDeHMXrgtfks-UvJ?e|Mm~vp)Q{(!D-g99*-1to}Y;hWhqg`NR3gZTq)& zsq%GyZ>@)Gepi(5a7|iF_70S{KTy373)5dO__oF+dRjvtOnMUoN`s0a`*SQOKGnKh zhCU8L{&An#iMgJi0fHOqxXJxTE6T6%{enNMaCBqW8Rgv*quf0GmJgrx?)an-V!rYq zSG4pKKBRBY=;Gg8_uKpVpaXQQI#u=oA9dh)0Bef6nD+O2E(d_#^R?^xV) zVf70nJ!hC3POYd+L|8PQr61~jb<0|uG{c~xiBcD_9(Y4aHQ^!=ALcZ@( zo)O{AHFU$sGq{C3m-&>twyE_c2TlcX^E4%7vQrnQ=`o;vfJs5Sh2k@|LiPiBn5SA5 zv&Kg~4+vgQjc4>k6FA2Nz%2Lr59Thca1@*4zd9`cM_o`r+@WrG`goD&d&$$`{hqUX z9b47lq)Ov%-hFja+|@X`@2_YIE|e7$f28<^TPP(H6kFb%Np6R#@E;; zToyIHuA~Dn+$dSUn@e*+*2_@tq98YZ!<3!%Z$$F2?q+o|gz$lYzlr2gl1H3;56N6T zPx7D+#`OPwcDv&%e2m1mJHGb}f`!&ReJLWOZ(kwTNDl;EyjWyiv3QhQ`cLBNhQ*W7 z$2(+Y`x6YMjoCerS1guuc61ND2H;Ep`a-3Pxymuejs`3*eYK(t;2sd%#<&7fcLM?O zFfCS09rbdx<6jt3duzz7&N|32EPZt>mH#2}C4i<|UP1VMLWL5Ni}PJsKoc+s@ij+M z=n|6jnNj%hTMk}2?s;D`RI+up0P!rrN{~oAufT^LL*>jj_)gckdt4=U(6oP{gPkFe(vYn`mVe1vBBI3`EfdGgs5#}@A* z*O#XjvFFv)I6%schdnHING&dvIAzfIF>f-i`I?O?_YJQ5N&7Z`VXb@1aJg^kn^84j z5WEIlg$DPrVOLnLdnOdHTIkbFdQh%fb?;!R#+=XXOpmj<_;K$hfg&(w(AalGTn)0{wz&wNP4ul(?BO`GR16@{r@&G!w)~IV1JeJNX5ZYE(Xs$1OG@1iyfqau3q2T5j$Y$nj=%5E~Z942ZJ!zxn;cJep zTER5QocJE5NlkuTK&EN(GGx;;V%s!HHzEg(dns}Dh$hcr{+&L$@2?rku@dvq)FP8( z-_G1QJ2h>lS#qfS(EM4Fd8D-jYtK#Jpwo>PMVhp;{`cHSoz0UJMZ!tmQU5|Dd!BT% zrqA2!`i2$Io+n8rZ8v}0>mQ4ItuNite?hth_Z7b35Fd`&sp*lqk!AG_MQ)qB^IPZ` znx8mVsPH)uyuH7yn~s?^7wTurVg>GKjrB%1-6}cagrh-VTsp<0d8)#yF+&Syd49sP z<>tjzO2a#;)w+rcca9EE>qah(P$oxuM61LBdH!N{P7w}XW$~|3J#r0G1~*}Y=moGqO?-b*$uNXd=?+j(X-Lu* zbQ%vt*0XpY1PSqgWNA)}vkqF-8_&@vTK_#xf*z?6H4eEDSvX7q#a$hy!iFxK^?hnE zrWV^h+IM1$19-lrwOWoI)2=(4aG_I}XbH!sGN(HK2h)~ryaq*) z|60qyE5h9wTJWg?hRau1+j-3+xwT(|vka4;<3<$D<@5CUDN=O7bdDQg5uC)k>yKM&8CEJOy3q3D44R&^M*~jFt_SF6N67lx7>LOA z4T!vdxf1WbDUtLqR^#1wV($Aj#(;-0-*Fk5hyb;|or=OUJ?$g#v}eIS(`b?)8d&P3UY za(~6Si}KD~n;#<$h*|%HeX;-uLbx?kyp|d^{U1@ou73I=*)2zDVlj=tt%1dS13D>V z8^8mLO$hl0%RiIeQ~#U6ykxIb6z5P9<_~ z%yOS-4qn^;%nMg5$$`;AGT^#Ku9_-5wAD0hw8exaEW%quJq*N%B}%ADj!`n{psvzGwnYG!g12d;zXc7I zIfYbfztjcHqq(SgZu#S;ODUSQ!z~3=dnD6TnbU7CDjr~0Y5DB=CROk&#CNq3FJxjE9b#9$l6jn*|E{I0k<0oSA)>Biq0QGne~ zfckPcBR7%eKfchjIosjVB2=qt|7*sjz3Ib6cVUz1_M?>}D(UNyi~5@J%26uSoTQ0V z=w4M~CndbJus)DR)!LK|f#LQyt$>mofkm*`Jqm1}WZ8uhw$7*4-0_$JWp@l`EN4UZL-K*2=W= zta6ICR6q#-qmg~wZ_N%nSfGFqF6@zBaHl|3$m@H|Jd#1cmiH))w(KQTMq)E1W^4Mi zYWQ7(_foAddS2pPQr`y}SG!v?NBjZGHnT0P4I&5-P{^;kCaX1K%cR;VvxcsV-+*ii*^sDP27xX4x?1)8yhZ{i-k({teN5PX%H-k@V8;F$nF0@zvjOQ&yv( zq-cuh_1VxT{DitGAit7&&D6mt)#08@f=W+@HYvK?Ai=Xk8HbaFvZ7Yxnk|`X>Wh1= zNQ?}fF4R)w6RI5H4X{tegl0;=gj)5|#qg@it3eg~6as;HO4h|d1a%?b89I+h_CSp$ zg^vj$WY?CtB{=S4N@7a0sFC)|e2qe$0H6#bmjA0|#Waz%xjNIpJ}BlpK1Na(L%q{b zF<3pn&w@hhkcec=;c8>-j+sPFGdbV62$d;vQ-KXI#>bOEs%ADoUDH$!0tUOR;e#S> zMAfH((+P<&X+KUKRe*_LK>j9X-5RbUV(j&KaC;XBXqGS%ESgDH3HRZfV76I zM2{Pl#Q@pGTs7$qKyH*o?8;DlC<1L*ZiJ8?Dvh&Jkfe^u4^MD7xB0m61)2+QJ{wxLkxr!_iq`P>tiT09| z<|QbiQ!3(vAbg=-A0K~6M_7~=E1jZ9vkuVZe^{KIku3Bh6M@B;)$+ zxjtqr)h1n;fulr8E5Dzg<#*q29M^KhaMXd9f5R7Zzl^&ga8g`bI&~!Y`-W?cMQfJo zsV{o!D921TIx))X&pqkPqfNNo^#>y(GvOE!8Wp$Ize&1hy_OX=NhO&DH$|>9&QFWg2Qlw zTdNlrY`$SV*x3^sCXtF2ueR$ROdEWT7Zl_--;LcUBO z3}MqH`-85>BD;#Zc1Ld5bX>Ri&=Y*{YdJe8#i=1)chUQ7jvA|f-{hPL1uvgKO2 zQXjJ9%&^;KGHq|F&I$-@*wGH*FAD!~)~<%$Iy1v=7aI#o7%{bDl*|k}Gr_=Jsq!|% z4)Obs@F+9vm_PnmWV36>%+AC~5a3Yu5e2+yAYsiCkInBa0Wa8Adew*@R0kRC6aD6%u zRcBCAFGQ`I!&?=kxCezXqIOvRJ&GdGc(N?rM5Zd z7mXj9L+`h7r;V>b5h`I#Bih|8q9ito1f~GSXs+9uS_~i0JjsQEGKfHDcC8QmWtRYD zgFdX{Y^XdY{jXPtfQn$pHuV5x-veoZoibMO17*f4PdNCcVJ7YnNzg+;cp@+?*_a42 z-$@K^(G-(ULvx0DDF!ePHq;19fHB{paX*j{NLXxhH*NzWOoD6zkO|=KSx(Sm8bGpb zXGDdyTrn~ZdQ_Cw>WMJWZQ(MCBzdAqNDL<=V!Wjk+Ygm{# zVIYey^57(g9b<1AjM1c)Nomj5(I&GHheyna?Gb>)BLl%_=sj3P~#O{F1>IFi*B}kdh7RO`*r;o{uATYCx zrq~0zO=24suD>>7^SD!W#QrsTBfK>pr&Kj3vsjDLFiA~Gzv>XIw{yb^)&NlTp4Tx~ zp}}j{tkC>_Y#d84LTDYZtb;w`P1Km|S*6LBW}`O*fwss(m*0+dVBp%SmW_@?g(xRX zD(jg;7?QV6vTLVMo0S{Ak+!bqnYpgrG%(L+;%qk3;bOictm$%D@?+|8F)s!9hZ%}3 z4_z3MFg%tjTG(1K@1`%GB*%j^nZn-ZZzRK-vKZPLcOEfP1=V&&=JC#1|(U+a8GCMG+Q%HW;8fNpZ!$m5vVdiIPM`ci&+#- zlZay%XBP7RKaArMG>f0cI3Bf9(`Fn;LNbnpMQev9`}%VnQC?pa9p znO*uyHovUaXBGKnt~?8W*qOupj_^Ce?ztB4w)F9V`irlbx&M`;P@i!W>N^04PuKSkQ+xk;`_7<2^?}#K_N7B7cI3Uue;Kp-DaP{`$ri zCK!F{{g5Pnz1UEzpMs~N<3oW7fJDl3^#=e*t#(&k(0`skfpg%T`q?dvZSAZ7oiVD5 zNEOl_e`bCcU40bB5B8sT>Ky|<%tWF3m;TFog z;8r$rU*9>jveGjQK+FT<6eVuy04W zS?8jwS>E(}v)bm+J}2OixqIPu1*|EHs)ICf;gs-?Vq7un$D&8u>}d?8-m zuqLQ_k;F}--2h_`I2(6~$~dKAoDiXKT(XJjxu3T7@vkAiu_91M?w znM=_lWOW7-O>oyuGCUGaJ(AKnSFaugGnb-A!OYdGN5Rac=ut3p_3BYDb18b{27gae zE6T5)pZn(ib5DKbgDWOh{Q{27)0W=65Ms*v>&N#oG}i3s9K8CKF;cF4lnJ0 zXjIu>8K&&jJH$1LcXU$xk*xTN^5LPC4-J+Nm1ic-KEj>)9&6{6A9_F`;<`a{XyP3Y zocwNhQ>wjhV#!Awe!g$df6MtydXud6EZjI#^5o(ns3J--Tbx?o-Jj$8irXXxdXcMMLP3BL*6 z?m#rf1zupKqo3(BhPOVrGI$)_6`hK==#Q$4m{Dd2`)05F!H$XlbR^bUt_19)i~qRm zfhs?r>gC@jg?feuU$l7P2zYOm7<^!qf7eOQ=+q`V=iiD!>T3p-B;B85@ZDdZwnY6y zC4p9zj%USR@#2EUYD%9``ffhqIhztH@Ir!#Sowy3xelxR?d5Mq=2acabhAWF3V-c+ zl26owEQ1orAb*L30j=Q{PIYa(je9sA=hJ;8(;!5K__Dq7n|#;1CDP)QY1!)wyi z)$pDRNBE~U_qffuo@j1Qx>Ye6+2cm$dZKAPZkp6b2(95;u!6K>VB*7kCgY8Z-+|no zhkT#2@)14|a%gbn^L)Q;;kn2-f_n0bFG7-=1NFh9JJ`cpA zEf=oso1H>W`QUa$$ z^yLrAy{p44DS*EC9Fyw_s!r~IJQQS8lLbb$W>Xfaj}$2C+mitY1entFX)})80IqvJ zGz;tpfKTTrSV)-k-5ST`l>SFmJt?u3AZwg%q;Yk1uH7fK2^t6IjA*{6G zp))z@k<0aTkyYY*e;P>&3fOeey?!K<>c~Eeo^_n{K9%3b&s=si^h2wTyxvWgA-SF z4o>`O=SM!e?@eSuQ|U+j=bw?g@W>gbKJ$s8+@H<%pU3?DrnkMj0_ z3Z>KmccNarl2oWg>&7hktMW`trB8PX2z-ah8YYV+C0F_<&tGXz?@xy1>sc7c9;M{P z`5R4v(4I_@T@>-Rya)2#6ux@e^$+C>ysQ{)RkxL=mnptF&$n%^786uc`Yq4!-d@F^ zs;B~}j8@4@dAd#I{-D>}hXeVG68*DbLO5T9?d@j@xtp1h7K!AmqLC8=|C#0Gi3M~K zS-Z6KNH6xf+xMN^#CFsfX%r{&Z&8lu`~D-h^LWa;5NPzzd=4~mr-g2V?_Tz9zoTks zK!)#=?Yu?r;zipzzQs&Y-0?l^JAtk}h(v4TI@-H&7ftU74J?KW5Pz`d1prSw;cjdY-$uFdBb)h&Q z(zNSlneb&dy267m&WW@uEI~xnQ&{fAhN2+PLoO71uaT{FPJw0@2^XuGLKGBPudu`O zC@h%U40A~yxhfRlvFJNl7}>~R!KE>5is-x122ogjIDIfiLq(OScH2Q$mPQC9I z{Az@e<4dRKdY1jliZ!=&s-QxBnCIzz9Ya|3oBHM^0H^%o3emwgo&m1YvS7e7}MGQ6E!)ld<0E= zU?Tq=fon!$oR0Cx8hg&l$2C)F9#D!VxpP)Nqv_0xwI(o@TTNi_gMjfgjjdozG9c$q zVC!N+aN_S3HL5olMo))@L-SdYq&h?VikPBEt+%EEZc_DZ#iUq;m{#GFA+NuyRj`}a zKOEsT;0sVzTBT0Sg2+o>osHrOa4+@4?bVVJ-TFz%QB`sgug>+%CICbw0KPg+;h2LG zO#iU9FV_W5Rk|@BaT=xH>op!_-{|bp&6)re`ObW{Cr2)NH$HJke3%87--=exLY?c` zoZlTNE1K5^%eyb%^H!}zOmLp$$^-eW82l^m;NeA0c`J0@bB~?|SpzGV?|F;LrPtjP zi{94uI&=A+MQyM3iA5huuYKp`U(8MX*$MPN!n9Sh)q9yTb3Cx5cQ4{AvIF@FgF>U6 zx#g8JNqi^IOPMA)$i%qtOEA6l3xG)4Mu zt||$QU7FD-z*oyC4Vag3_NqXHc@?uQ7^L<%>`iu$79Y(f1&(Lxq!2BLI5dKPwVSa{ zRFHF+8j_W&<$wtW>r5BJ34vm5ne-rPCp1X&)I@!;CU>2bY$z%tjsr-yjqjYLne05T z0GpzX%G24ZSg@qjr7srg<~$e$;@$jdj&1BANpm6%+RHoBE!ArVmV)RxZ)1M1gcn%1 zSmxSLegps4My~+o#YxNR#;l{_+eU#+!FXEm4yz;837YxE2<^RYvrI9Op7Pr(FeJqc zBCQG4<6)JTzgdl0(bgcgW19txnl53n(Y}!+Qk1f!_*7V-SS7tBhuS#Ype9umhaln9 z*04I3Lh0L28{As$|B6mIIcN}1TF)Tz)@)^~5g`$hsI6h+07?fjpU8EGtVty9GIa}~ zN5&$YmQ?r>V2y+ImPywnbqxUZ@fGij}g>wW2N^`cD^w0A9NCxgPPp3d}M z;#Xy!hu8*bQ2hAJhyb%GHO1Lg`O}>YUysk_%}71*)j?cUUrk z5|4KVERGCFf}j(AoG})gokE+DOobrWjPTgX)?OH5<%-p_`w?N>t2W~n)XXf-NGnk< zU8MAiNWe>@rd&!w<2Dg?mAIgDm~j+Q5j^Ws4}KrCT&t}&t^Y#kqqpq7T_uD{YRELH zDF)z%n9a>o)oRvki3uIzpD?l;16kF`WJ+1Qb$(@oazN^70$XuQO!lBNd*O&k+bt-X z9Wn2Iqs)xaDfZkWTwy<36T01MC|`YCdV*wtX|*+qYWEyrLCE!-<{SoC&mt=mRyV}% zm!xwrc$WMk&7YM@!a({>(R@&fig=>|2gK6fT#+;vt2XoW6m2|fXh>fHG;fuLx?C%^ zaEQ#{8Ws!iFLN@hNzbC+S+RyMCX>F^|9AWUOeb_MI6=wv&V5(u>$+FpCZ#5GsPiop zT3l-AKC-ubVgb%Z47S7l7syQG8!s#O^`FP$c;>_s+gwBC{pZVKL%o?e<%{RaV3Qt$ zMl*2v!zW<1&Bz5i&s;m>^1BzI7_sLQL{M9R?O8 z-5?2FN#k0&&R!$a$wV58ksf0$&>FIzDP>zyk^~0ESul~h*&jkPS*pU)F7(Pd9K@^W zLUmu_(4`slr}Y$+Y%nF8JxHToF?yRn_2b$MDWu(CQckKVK8acodcsIGMbLZt;q?!% z8Y(ZzpKge}De(n40>ndo62=HhpT5Y-HSMUH zo*}s{KoceT?jV(BFTup zn61E^Q{Hvv#DZtYP|gazzb!3xsEqP|mh5=h49<{x`@;p7Km3+cD???%Hn3iBpggev zb7$c4+DVL2$}AI%EEgcU<&%+3LY57dAA;fW1t_x1auY8s3`G`yu#^y~ofWNP>q195 zo!NKk?`jSX#daZ6V$1d?h~I#hSee569Z))tFa3%MlY0hNE3;5MO{yg~vUV>+t1lGu zR&u++Rz>ez_HG?%M|I#?>MM0RAI+t)&y@(7v`Ow^a4i6fRGbFkhVTIzS9$LzOf%{$ zdm>c%13=`MZ0wMR{$4FLS{*r+NT$?M1(9e)#yiJh6teYA=Oy&+YBT{}6-fVrjUM?1 zSs(W2x}{$0{)mQ*?pJ}&zcbgfid7z*I_}uuaN~vd^G0l>T!UzNRQVmLIt35@=JQ~! ztDvlcQ{JVD7NDzZ6QZFdQ)(J@5xR4suIXt=5gf2?;}}9|G+N7BRy)&f)7s6AJnR*d zpi%0UGVJWo>B#0zqxLFZ;a$OnVgoRTjZNwq)pBRHJrC+ar_<-sluT2zMIQHoh=deN zc_~;p*LZ~u{@p4-pGxTvNmbDLz82quyvi*}>$i^O`RWbziX#ZJJxO0y5(iSqgy#sr4&n_NXzw5mgXN>q5$qP`DMM6mmtInqesLuot{>O|&k& z^)=uqCRsN>Wzul-wY)`Q`lVtV*taS@sm@4A6H{)BGoxv_CK@%#mRSj36V-c@S7yEV z94*CK-YwPY)3hh2cGyT$7_uw{qTNmwh5MwVUuFIvEd_ysEaFlnJ0k3&fQJR^^Xlb{ z%S2RPq*vWEAB{y`fC`P0ijbaM530Wk?he$%2&%onH{?oNpV)6pR>};!}}Y=E;@J zG4@ngyB-S0KMZlA8F57sb?bDu5qVoe?*OrEvgFYP>st^qb*xl*R#1JK?%ZByLLDh`xA+YfAF78>*o4 zys*Dev4X$Csb!w5jb4@q$2qkoM(84YHTEJQ)&Pviat5GlvMo>NWF(om$f+rHP|vi% zYZBfG4ML3&`z3e~YSBb3P2y4z@F?s(Q!~|W(l`kt7cLI&M0GG-cg2bI{A)HK9{~sq zF;C0G?t7=`%X+E@5BZFn<2Hm+)Xqk~tz*-4Rs3j=n$_d<);aHvorK(l5*oNMR z6HPmrt>QC=yn?{xtlDZSt4p|BiL(hzl$$zY2sY;h>IA(EQ`h*}UE?>cC3Rr@YwP@T z{SEvadg#!j1LL>c=#-mw^F#Yy9zVNR-Egqqe3du)3Qja1`hNeRM-M$Te$ys_v7dYp zLk9g*@WobTy$~lb((f6+snWtI`YdFDt}DS%cBEBy1VUYs)X`Sz=v?acW5!2A%|lhC zie4V~sn}G4NaiecsvTUM$}-dqE%1>nRi}HM3eM*EO}FuC{$>2u%cQX&kTB@kaUU-g zFP@1nmExIA#3?jw{HAXMJuv=vb$-UbR^>l&CJGGeKg50a-G4qq3LQ}1lz){*0%#i1 zok~9*|JvgM$9$T7li^#K#{{a?WB4S6yHd zls6e@T-@IW{nBVwD*a9e#IzfN@+Y;blbJ$T9M{M1OoDNd8}hv=dy;o1tK9;f4G^(X z%Lr&VY?rDS7JT=&X0sa8@2HbM*Co(ON}F6@(6014lNE{Nsl=RWmYtH*YgU22L_iSJ zh!A(U-@3o03XmSHq0{lG`xdt4JKyLEM}(sLkBeHkendZWG%gh!Q;SrP6B?;t-37@P z^nOI@x*|C)HI)$eGOsALpO@@|ydND&Uc#u$9*N;q^9!AyWv zK_QcFR_c2ugi}IF$d#_&n6NMl29tUd7IbJ&JqoJ}HX-aYE)~inBC_5eMFEX2B_OoH zD9}Ai*FP<^t@Z?y*d9w@3_q<((q}05yb0MHCDg%_$2O!Z6*jEG#RR8b6M}uID(ahc z*5>%6oLFgIkSI@k>H52(wd!~4~8iymt8zB zzpK4GmUQVdbd$C=_qOM+&ra&@7T{@V;#{9E&Ig*xcmmKs3yA39IZD^36T;L4(CQY@ z$b6vb3{yG)Y*n?gGOG4tU4cVHbbUQ zC`xl^0nW|`?3hD%nH&XL47vY}mAfTaytV;d+5+mF57buWWisdkQ`dZ;7X4X%uk%Zn zb!UBgnT<#0?5qVDWN|*GHnv_i*s5-LK2WQJkh7~=KqK>kTD`5BB$0fgg#*9H4|lw; zD1TcF8J%Bbo-`?cjQm{pSJb>*_ZP%30+@?~YjzcNMNK$P3db@1Y51-k#S z(;WGVz~}fY-*sFp$L5@N&HqtNGl$}|>ko4&zPbA=N#!f_J)TRU&vtz)qWt=*WHYDxWj^|mQLWl3vt@7x^Bru>LtU^Bt^oAV=Z7It%q2dNnB z;s#%AQvHL89$5v_*i@r5{ita=;Z|+JZ*I8Os&b5NYZutIaApp@t!F$ha+tVMY4 zld4TRmI@VHwavD*L?lQ1y3oCiDywZa6`X0+CiT3%w&8?wlMRg)nO!WA=BUAaYe&RP zOeaj6^RgGfgl-c4_nHibUdq8frZr1bTsmN(MGZ-~(m7^4K}7igDw{Qdj0yzeQFH8G z(x@<}q>)L%8ZljH;0c$*d!WTsdG94Wx*3`Dt{^FHN7Wv5B_^D9BInmkP`avDRa2>| zuEe2Mi>b4%#nT3(o>njPnl_HExEBzGYAZ|JcZa%AVuS@Xb=~*e@K*OFu-UopQ@_)i z7p#uX7bM9U?L%}uSg_va`Zi?D*yjts#8z@Ym1yKim5BmKu`3mBY|Kktu|Tv)@v!mG z3b~EhOT)~AE^EWcF$J?xIIpSFKjeVJQK4}glbZ5GTbE^xv6b3z zv9GF#vdWh%GHGbDPGMNwZl`%DW+Tt}X*Rk`z~Z$Us_BpdZ~e4iUA(1lk}vcmJrM{P zVXMUzSHIjrbFXAu&bJ3}Qx7XDwnXq~lz|WaY~Evr1la($W^km6ry<|weMNo*+BENN z%8w=9afObIX2_I2CPs`1m6n|yLhT+h@6*Oi(Rpia;7T$pR8bXL&j-^+!Vmzd0nwzj zYga^m)5g=NY8HNsKtX9mLyTGEC=0FJc_RvBOT``@XSbswQ1}wNwxKNzEZR38CFj{% zc)L7Kz+22}PSi6aRp(LP>%jqQMRagR3=F2hq7mnt|12)8kujxaxJ2rP`J;L?>c6&^ z>QPwKjXKt;5V|%D7KLoA9li1kB}J`5aAu{->Ld^K8xCD@)yEzsj`l_PtL5P-faE_@01QPDRt{G=c z`5G}ssNt&}{zBhvTGl32pE`ick?3g^77~i+w~~-`K^;(xYBt}PhIxgmbZ1j*LZA~x z2D|<-$uJct(rrs?lIdfFGK@-Gml$Z|d9>`5(BiMqsyn7co^%DM1}Dn9K9i`es4gD0d4WPtV*8 zzoEXL8z(yOz<~{MRdc34o_y_;h*mf0EJb1YE4iM3aUXSm!);U!Gw`?6HXTHJ4GfiI zF-#fy8?#xCFbLi2V3^6^=4hxG`Ww|OM;L^z4TJUZXbN=CwL$d$i%?QT<*gxWoD5<@ zc>eH@zK}JzX5Uz@=by&Rt(zwG)ALXM>GtQ;c&kRQvu5MBF`1UFP%-v=W}8V=oK79nUaQdDwQ zq{0lZAu#5_Zd*tgbyt=YzqyL6EN7)=jww|=s#K!e8d+8$_Tn>Xuf{lYRfR$z_IA6%GF-{^!-YWtJY!$vgZN9 zTQ-M2_&IzG!Vy4Jm4<`}8GEhgPn!RNI?ymyqRe>FcL{6uAPm|V* zDqC@C*h5hhsE0~I>4bjq0HXtne=QCH2Vv+mvZJuiXQ z5W~k{)kR;d;zWqr{kVyLM3oc`w#mw~Q|%B*nlh_0Rsay8J5CY-w^^Jy)(UcrT4D%E=AHyY>B0_Ai|e{RdyXfP%S5nxp-Uy1(BsUic(Io4k#fjFKTvWArRp zR(=phF4E}N_s;JdJaX&2@15&38M3lWCn07yS(C3Gp$Fic}5!qf7I- z?o;xy$%&-)YFh5~H(JDh%qn*agMweW)3Lv(u1aOdbXwHcd%WwtE4`1V{L%D2mfpwG zd#|w-IQ&i}x`LA6-b|4do)O?k;FPQS-j3QQB)q*Ye}iWr74@MJ-Ib}!C^PpdaKlkv z7vG1>6iF!SQ=^Mcvv|;{9P@*3++E_6f!m*?Kj}j{224LuK5{+hEvM6WX{cGI)ES5Z zMU#{mu_ffE#fV5qI1|D(jU~Bj&arQsDL`{cms-mnRIH~c6pB-uiNS;;jhRKuF%Mj) z8pDHa36=94BtL&>E(|CSy_-83%|qqbdhwh@MH2twgCN;#k1G#r9d$5-)J+D~Lh;_A z^1&DW-k?>y97g1Q1hfN*rxdIg{$BnMRSHj(I7y-*DM>$P<#=}J-E1_Z>R_ze9;2Z- z0_JK23BLqK$(bNk=h3XYe5GVLFs?%?5&hoU%9gfg{z=9hW7;7$3Pku>u$cR;+a&vo zL_}L?yZh25O_m*qSDBL-5HLES#-T|Z3Ww`ih0(g7*?66Vq%-~a?XOC zTogchF{*b@%Q^~LSGhReS86_n;@&7i=sgNaRy<=w?=j#-Kol8TZ1Kn8jbSDph7M`3 z?Ts%QMdBs07*)I+#i@rK3^6W|L8x>zP`3@WF*KXUp;7qIf2#h)k>IhH7LHhxw92vX zA1hCjTd^gjN?aR>dJLY-h?RCdT7 zw~10swrCRz+ZmkHZ|tC{qSDH?sj+xNnpLp0ix>>3V;rTeZQa$~X1lg_TlWXuT1D$+ zLbzKsfKu=};%#D7B9yC;`M*Es`A#w*w!8a#{e4O1`+Y9wIp;j*oaa2}xqNMlzI;L3 zC}}=8R~g+IglF$`(5Q=PaVn-cw#BlTM%@#S3N^73Uz#}xZ|Z`Cq$m;<)DmM5YFAB1gLUQ0!0I9Ol|>eXrmoVqK!Z`u?LRkac{0re2AR}0 zhoh#X*W&WSF}g~8?UBK+;<8~N2`j=vb%{e5>Kdo{9G+mTgj*(zzn<5!i73RBxTkT z;iWr^UG3W#D7dL>oo?u2gs7CA7VUq|gE&)N>@GC8ty1Gc`<|-VzkXbivWIKnPzI|v z?X*GY4m2e-1pH+Ig1-h7K^iq)_eZtwshfSja}wG>-t44x(*K*2Fn@1|A!zne^Aje- zrF;@nq%b0}97Rfj!N3WfnN)Kj2X)=)sZ1sOg5n-335;>y;#F=5l_gr0ajI*Ei*6#8 zu2~TM&hjAHHpD=bB+*%6uu(RaFlfQVmu5@|kx(0@2G;pmMlt#zkj;|i9IPJLD@e1Vk!Vwa4@wjII4{z3Q4_9&n!%+8(A!}+e5MqPi+AW%o1oEL<6ju!3t}1GiSeU zfzOGK%z{dSiA67+KI&lAkUlQ5T3C6HyV}5mf{a7a0J_^PRkDI~hr>d*5ClZraD*enf_IzQ`DJh_?C*kM3j$3A=b!$4)E9FtyJ_Mn$}kVR zpQ0I51r6PMbQ|@#2hBF5v!fk5D+JyH0o`B3Zl#8W>t~G!z8g}P7-<}}JMXr1DeDV1 zwP1%kbDiL;Ana@3lKG=i_Dc49MZnPye9Ig;naDDi+c{U?)i>o4dMV^K)z@Q7(#ta2 zl39PmN7bfc!@@PQKAFm}aef^UvYCjQzWAw~{A`S3WYl&IYotyW%pMC| z@UMw~&HQWis@p_6Kbi;g)9HSexSyQ+>2W`K_tWowEHYT#rU(-C6e8lM#{DGRPm}v; zc0aA|r_KE=azCB!XNmjCxt|{QlXpM;{B$QT;zFFv(_Dy?c`mrkH}jOJz?c3>ce}F-VM5bwz9V4#sW_yofm~+b}!YXN7r$m7P~U_+4h;|HS6&m zJr+7{T7bWQxsenDtW zsAE!0+uNz88tOOzogL%Ps~uJmEQGjMP1uH~b;@78i+jnZC|YcSICHbxrN4nvj1j=F z9rNotO8fDJP7oOb@3x?TV+YNshTtP-#JDW{N}k%7#z@<3#6o^{N%q?~?C*Nxo_f0jG8FHC~i0D)i zBk37Dh>{AwIv51F0pbVt*6XOGUDsHbIIER*2bPsIn3uZ5MKPu6G)-`BRd-Z^))K%{ z|80(}C~Fn#O1puC@q$8-Qr)v^96ZpHU}v0P@NHeHuk*BZiOZTyLV~OMzR{%O&@*#W zb`l0-fEfk`L+q0#DBYC2l-Q$0G+y8Lw!8VbA7#sS`30`{7Tu_@WrIw;Sf*&Lkn^hC zw^%e_IUZ2$1Mt^gbhqaWLZ%>(<@9@7826b5qhtcK$NI9PTw7Rsx1WGwo03}t9z!pw(fmoh`JV2emi0OMu z&3e^ySzQt^t4g}&PxP-YxmU?9DuT2sYLVY*IlZo76$<7Mxuyxg>r&QWgrwKaX)%@O#l~yV5PUgQl*E2bdww2Yj_7ol-aCyBrdUS28f?YY2}!zF+&7zh~Flz03lo=nc-9# zo`jBkUXboc$76oS+;}2Q?F5;Hm%gp_eFPr(eugv5tV3AStSnlSTvU}NR|UJK0#*2mDo};#w1OyFP$5qRAQ3XMf`kCACZJla z#)2RSu2s5LBfFV&<4lu#fH3#K1}XQz^qvQy(;uLd<5%5e&NLT`SKl9ORKl3?EUnn? z&EuX1)gwgBD5IE7D?Q18a>JIfz1Y<}rX?v!|fJY+<9O6HjUJcdRR?+^MCOw^aKA8-R* zG^jngXqAeiyH(Gcj>!d4bHPz+yfGjgG{PfG_0l z5BlDHIyzWwVRE*GT@1um1VsBJXkUT^LL5B-6`^5k2z(n{hQchUWJIqNgp zIUVGrGUMV_xUdmbmj#G6Wcu~-fDTk0rdnp^d7pBH=h;ZjL|_gLl}`lzqAR(Y3UVc@ zOiWJug1x9J)u9uQdnQPmzI}`GZb} zl&jb8>d9*kFm&1SiHR2%*87wp55}b7dXhqU5P@B^pVN znvw&ZmKTG9SSd&84{{X6W0o%+SW|vG%SxRBI1ZGr}slnPhcM6TgGrv{&_05kfE3CBCE18rX(|ZLi<9*SF2tmZ5d^ z?o2pEf{D7ERa5aC=6ExpEZ_2t6ku znz{cE;@{D1?Zm zm7l70WtXhwoo;^(WtS=0xte^f6S|_3Sv8Fp;vNUs#tdyS_a?X5eOku`0-dzPHzkd6 zlM*~|yU`6b!o%Hwp<5*N4FCn(n*^ie)N5p-l=!q=W#AKI4kdJPzj8#R(H4ZH@&8=? zz)xh}V5J|*JMscz3|rxDNaa;U^jK8e`COnd2%^2U&+W!bcLNX)-MEAm=Dy|>)UeAh;Ab5Rm@icqBQ8y zLkyv+Egu}uBcxWKYT_PM_>&&%cLS2)uav`{EQa5l#%SgC^Xi5&0BDVEul5W~w0kyn z9lUOO->Z$I_I*p+3$Bx+CS)K;CFdYos~Q4SSAZ4isGF!g7TnQT6SQv4IX{+~&f!ss zV6TnpAu}K}h_2oCT#sLca+u>GsMe0cSAhlri-Ww5F={yg!#)k#9Ym4htab165mb;zNEUYUSBES5BM33BD|O7Ic=6QI#R8WYStwd=Nza&GptCSBr777J9H6| zN0IxT`WcDMK|cjFi0${A>X(;e5Aq?)iF;OVk)R+W>U@2){2-u0Xd*@z&`m*B{c5Y& z7F0C;<8&UXq9)fv2-N4SV#1ZAlUjMA#D^7bhqqXZp?{5)-5bGNwHbk{8)f5Yp+1 zOWhVr4IK7OVeRRZ+-%WxsRQnwS0`#gR1O;KuJ|UQ_(c%eE3!1^SYXA58}q|4-fkl8 zRR!UjQaH$>8hDpd3aZgP7!omy=t@F{Zjm9$U3gleA(BAIBroEuFtp{AkAS&YjR}SE z`hL@TQ7`!sxK@F);<}V8@9Nb}bf%?8qg#&w#vn*?a_*&`%YqS)0A`Ft!%=7%Z>2s) z9le6(CWOWZB9$nfac~7$k|U5)$II4;xf8X?#mo$_@N?9mfq_ByHCToWXB-Q%1l?Kz z{mxSRntiHn6Tc?Ynhr_Q@}(N~3nVb70QSwedcSS|kQrUXyU?o%;vDjpT%5z_$>JO} zn%6Wb&e2IyVaL}s$;BxFG?QV-Cu%{4h>^ev@w_4K%pyjNT}Su2r4_n}&@XkS#hYbq zH1r6KyjT_RgcUEPLZ{6OrBj-Uns74s8zoe26D16DqCgv+N= zs!%xcWX+Z-83bK&MirvMuX*2sR*I#(eA0o1jZHva6hLkZ3akGMzbO?K4x%iGyyOGO zi-N+PD!hQgTA>^ayadXF04y=!FcGc_BMGsLd(1_e<&~8-tHTJ|icvwb*~zcCxm zT1u9j9kr6kaqOXWlxngy?-Cgz>c>4U50cPMQt+YSG#us-*S{sa` zU4p2LDffs0U z@#5w{;o9ui8Jr;Wf{0<>6?!55!bn=UdYTKp#D+pI7$0&0fCBb2Q-{wvJ6n0U9&bB* zx3O&I_k3n=Zc5i_DXpum?1IA;Xi>kJhI&DA>hL#a8918jY~rx7w9*_3(OZ`IFs-;Ae2TyiJ|u zs*BsI9(D9_kCp;6uC9eUG;RU+{f-i~uHGWo$WE(VQz8ZuD+a6M&$;B>Wj}Z@+mR3_rvp`L$O*IqX#qd)it9cMr8P`(T zwo+LTzfmu0YRLikL41x3f=ukZ!nS~vqD_hcE8M0hk-diN{z!15=(sg=*)Dd#S)2&p z4j2?$KeQ~nwzMou5Q!YD5k(j73@!yUW7?@o44sK{qx@j?^n9}kI)nUb8BwAv^yF?f zS5U(Zs%{O}ikeiF%(oqR6P#7-!(e>K8A^2tJ4|Or6L=4`8dK{M_bsu9vh^_zAgv-I zrB)wW>MiE+AmjJQtg>!Mx(o1tRa){Fi9_)0K&H-4e=;U zm#uFmjlfAwLuNyYz1zE90E|e{w+v=79?isGutj-97MvMK2Hx?i?h`0xqJ*YQqSb`$ zUvgI%|0F<;iO0Ze_`W)T!sVV6dPzP@!#aF2pbsW2?olSS_)w;c z0R!emE2sVDHu-U-Z3ERSRN;dSMD$!WtRaKECL6M&} zIaoB~5Oc)@LB(>)6{j95Rba&&pzN{?CPCy~#?<2eAPA^kV2rKsT?j1BJLrbmYXaD# z1aj=cKAJS-1*{}D_qCQ);fn6kd`DHBFbr04{70zzl_5650CtiRvnaI^wTGcrIt_%X zl(oVw1os4+80r$=K=0fsm3&b4vKT4qWU=TCkt(}n?Kv7%PF=5F@8m_~7)sE2U(8{k z`c^k&@32NCNql>-YKfeOnq8Im#7QFn;9CV$wo^@B*6dZ|iCa^PI|G2W!hFBm%Hf~W7*t|4xrB1yx~q~-GjR<% zm5|8~S9(>Igc=-E0ECWuKr+kS-KvppqVhWg&pQSLCv~^&e&@oNfWi)o{9V2EJJt=iYE_Rx3!bC z8q-Tsoi|VqCHOHoZ28p5)|lQYPFUIMITZ*=(t`1iGea6s7)^qyJb2mIftYui*pH#Zl11ZGZjN+_exS58AUZUTa;pn}6z!VG3Obv!C=|G6G|EYWAjGX@^E(5V zjgYkQgR_ZFr6m!aY8d6UU)qrp3$*hBLEa@94xOe)NQ|&WSRHzlCg`ZYwr8cTUZed) zLK)EQ3R)P?g|q|D)EekFD8kBOO(Ai#1k30HlxS-r6;hQ&d>E)XDjL0cK`?sN&l=|uN{+1XiC`PTS8?{TI)

*cA6Ab2WeW>>n;#^Zz<-@ zq)`H+u~ReGeq_S!9MiN@)<|{s8JroE#3N$D=OTM7)?Mlf>Fd2rI|uEIu08<~O+!IW zi#qyFKp^PE-b|d`W)grg5dKsg)TSf=>Bbm_2Za!gd4`0evFdf5<4_(mXdP#%p)4+j zB7rs}y~3@cZR(5wbGu+)clA?xu41nsrpP8w2wrLNumlgE0}cY}75>=?U~@#GhFfXi z)v|<(%i}kTk;J<+Qm%T1Rsk}+gnv6ueNHei4t6_oxn(IgtW9~3BS~3ywn4bv}e!) z2F~`&0E?f_X4(bmg3Q2YLRA8QDj5JFh#(LJGWbD+Rw6pZ5fj*R64)p#8xT{Y91(Gl zgi?>=IwqmCpaMx|2wY`pa$ex6qeh47fJI)FMMi)&_*0u{0tBdnfU82Y$W;SP2IlF+*Dk@MzMS-oNLRx2sTqFmP+$*)#wF7M~SM~x!)#~1YQOKP(?zE-`;Y{S@R^TU? z*$4ob6;TgEg+6nqAT)opP@;&ZS%yU==)zN^Fi;6@CI=mM z8lWabv8pA^1RDy1uX|B6uWu%9+*|Z)FMV3irY5@0mV1FeR(Guk#xI`&|Q*Dzb4fhjq6!47=g?j?83Mf4! zs3r7-1r4vNH0@(yVTr*qomRM?LgqHGjNlrVok&=9o#z)|bV-aEf`VuD(NLTmt8l+T z(OQN*1g+7Kt3Ff&cpomJ6fMU@=}>K1rQ2+bv5(uh;Uxzt#`Gm>fWDG4yE=Nog`&bN~;9l1@{?U0{b;+H3#8p zd34}SD%v2Tv0<-M&j6+jNlCi^tSiOj;7UJu(*0z{$@o>}y zZgN2l+ChP#8mNnEKyWH>Hfmf&8nA5!LMKKh$RNI z%B{f|x7)0UV;H^C>R#Po!mTe*OBEr`##$|94nkGKDlDmxOtNGu=z3>}Fm#mFWdvF& zcDy;1oM%fpjk&l(t{MQN0YFBr5&*5mS3A()TME$yT_lYw5$Bv`Gmk(LOezK-rCZeI zmKJ?)*7cJciOiTXMBHO)Ch8nRK+9M`XITKrDUfxr$(9DzlAx&nXkC>%MF2{=Sq!;t zaHgn9pA)KyYt)voQ}HI__P{i=ZNcopl~pMrFjNY+AttCSfLd+zTk3Bhq$vt}LRo2a z3`Qa4phM~j4U8Z`!q~VF7Bmexr5*)sW_0Ei!#URsOtW#>P&61|V2Uo?hdG24_`VYo z>hu++mTRixu`G*?!xWTB(3o!M;6-$b7TGE_6cvX3z$y*+!T4%;lBfBe6L$~<3$UBz zDoNnXoj2YG(1|ZOESar^T*tU*oL&T}Mu|feHE}SjQ=%e3+sT9~ED0(&21X^vH3ASA z9}hM`!=UR=u4?6>QKihr9b5t+Lx@lU0vsOVBLrFia?ub35lAv?2Eqjl)$w#hn*J=c ztalE*-suz+E2FDCxr2kgb8DnvV?LsJhv=wR{V|PBO@e0%*WPcG>agkFxi;M@m8T~A z8O{f7)|VYx+SBm+yeiO&_Tga)f~-<4;Id1h`uv!xwFa2mEcJ&yK}BuvKyfYeK=e@Z z^K0-|wT;`p;wLetDI3#l8`Rx7L$@@{<)P1j|N9cssh#kuSWDciT`(H}Bs<`G&hT?m z+9Rf@sV1-LIRQ``d+nMfJ{owp@KS%bQnzFz924D`G+4b^oJ0zouF3tpyE&+vpnd24 zDI1w(#Fyh6^{Ri{IY@y+5lE|q+aHcy$W#HISQvJgwRU@0`$?iP3cEYlq zfm4^OxFMRel2maIfhpE}#Y~f6->ocZMH|0Xsaepfe^_HcOG5xKluk`&l@El`6TonE z!S$GfVLu?`(t)9bkARU6U_`A5Fbrt*5A`mhTskn6J_tigFOC+}>h6BQsBRBYg;k?j zcBWWoe_!D^u{%br6U19GJ;k-Q1(@11b1a_ZsKq`E^KF9lsvIwcpS?N27UACuUgo{R zo%Tjlh%7(zGGMiRShbQ%W3*iONiW6cFV~v%#edIQ$H?j4HT}c9>chOMvyf4H{t~); zR;=_A;{_peIW@c_N-qgsno2Jy$yv>%mu6mCOD~A&&26+Dyx*i}k`|RE>6xU?vLrp1 zw)(opZ(8D#a{QEF>6ubJWl4G_DPNYPXOjBMlJrcH*j9q2XOdhe8o4*Qj=ecnR!Yy5 zswqp-Gf9cEBt4VVRFdhm=0S@`~U7P8Gt-Des(}fVYF* z`OGqoz%$_53TY1EP00ohigF}gD7;oKxzFp36E9h8rIXx1V&9NRw=b_kT)TAxRA#Ri z{frm=_C7xw`5nC&@}iXwdC~O9h!>qUa-Uzl%!^Li7p!m&Jn2^}3bfjbMtO_uj?uvk#6Dgiiry@IE60?=OdH2 zRAyu{vpN-ClkD2f$AkIuu%$*urm~Tmu7M+zY`0;(sm~AFr5~d{uR_zkOBkxITmgu< z3RiUPIf5_pPRfoCaj0C?C_xP4%0Gnrf#X$eneJV^!9nw?&qMJ+bq2A}t3h|hI)K}a zTX*@obF2EinA-5FPw?$$64oH%u{rAVYR#}VRB%|;hGD`V!^aXih0Yws%Du!hh<$g1cGDHVk2Py{dB)tbgY~v%F^29c`9! zU`toCt8NBcTrZ>w+;d&yRsW4w{bMU$eN)bAodxda!r}Xz38ZL%P}LoatiYkc{y1Uk zUIzIWA*BG_es0QHzS&B?{^m;G=Mu}?u+j%HX%KbS@g>x!gdpRN{>FU{5u>oZ#E91042l*CAG~`4o$~} z%?EVD^cY;So~ynoZ!Esq$U=$?$bF8iaxN|UGthtRcv~(-F%e7~_H&bC`puz$5c|2$ zbx(O4)^8uB2M9=61Ji4OZqiYGlM|bpjcHKepgX3OLtkVWhvv_ZUC)&@@QWHpf%P11 z=nWw$jisHkMe*N6^u1 zM3&PLQwnX^&rNyDzu6KY$KLL9iREo{TE<7T;V>(2qedvvANF%ozae;YjlsC1)wR)Y zKjm#K`Lk`5iVyP2z|n>>=nsCn7q0gf?4V%-#dJE#Lu2v)S1BIs^Zhzy#CQ#Z_$6$J$G>H4?}c5(!O_?pZ)m#ypuVW=VXO< z$3LMO-2PLcw9^tUZ=%mHpRuQfnM6>z2!`+ERxI2(Z>Fa&Td#ejf=ZPCj4;rS-_SGl zOqlB;I5%~XZtt9pT&h{Yv%Y`3e?>KU|A1$}MNr;l{KM%Z=pV}Q_fiVfMPKD$#bvtz zi1_8FduMoCDww|a-P--|F#aQb;;P#XAr5!UeD&c7{|U2)592@3)8XTNZ;|r85n>3F zqIF=~S+-O8+Ox(q$r0k+{xh=(I?cAFL=evk0flh?>OxOJ5K)NG>-LujfTK%q5uIkN zi@X-l2+>dzUJjM|eNs&S29Zh;pY-;_!$Z(64nR9_qKf@({6;`M+&RNr3-#-I&%-U~ zzV)nPK-0|LTh1ErTUHj~Hyv{8l##_-Do4VbZw&a^vsmElzwBuKeEjOHb?<2n?swv3 zei!caZvO!UL*a7vu<`RGd{98|46j@LL??>aXWHM367R4je`7-g54A32A9Re^o)b&p zQIv|jx-b~;$5GzT^_tMhA2~*s;nm^`o#8zhHpl34N;PltM*IEV=&5-&*?AYe-aB0c z;(jFtm?z+}ajEN_-4Fi_cwUg~dhM|DQ*7^#rK&e~=!5Y3@FS=kbCGHlkq#5SyhN;?8J!$PEib`Us;i+#>S`#v zN5p+n{nG==`z48byNrMHB5ZI!$TPsMf9i(Sec#4Yu7L4z^+gSc*41zT@^V7x zm*Yn6!DrvIT-brMLwLOyZCDe=aG00!E+ZsT>G|zl(PaJF8-9TU>u~YI#1Q(fkJPT| z`#zJUSMXoa8B=Jt~(Rh~R)46jYu^swDF zq1ljMhkVb3yt>fp#Dbl(KDIOwN`y$-)V>tY0#21 z?}xva<=Xc|=3zuOj_iY{^G3=(NU{4mlf@Mc;eELM4dJ!DS03o2gD%?x;XRiWv==Mp zUD&?0!l=!T|6&HvGhfNPPn2fQy1g6nyloS|TAzkPI*u_DbEs>v*7Mx@MF?1%8x~B|GXz zw8|NmV5XH#4GX8UmmVEu%wdqZ?dVS0Y0Qp4yfHg!cv_0_2c7&%(Bf1-GoHIGX2mOt zIUjIi1o$q$dS&~g_Raf{x1g4>uQr#?ypqmzApzTemCpQ;$J%$d|4LK0%sS+%q5hBF z?XQAEV@r2!k#Q?oTsAoyneVqSxm=B$`QcnL^JqpS=~qPh;r_<#giK?5j!U#xMH}kh z^KQ=o0-k>^nrvSYkt8r8*lcbG1H-lZ5D;BtjY{&&rg@Ak9dRqw7chQXl{!{Ea9U%`n?Pec7H^B$^Q zAU|2;-g3{Tsp|qFU zv@|5XyxUN_6YVQ3ZG(u0TDejE2oPK^nVxzS$GhWt+`BSf|MJo@UQdna&d1whTs(PJ zcFJ*KU|f!>UYAR@KgG_p#oY1!@lTw03O$~(wX4=0JT8cn(?M6<(8a*6yPI zxEs~mb~74?pd2v{_*7`U2IE;DR=`Wf)@ zwyX7Fofc?HWv?2R&Q4gkk3Pzt8HUVhOQF(;(GAVI*^jhTb)ml7yX{@^i}!>(h_(Lg z?1Z|)cfabocTA9oE0eQ~W-^e~Wc&W%H+-zIWrf9{s#1~Wls6^kO<7I(nhrLti0jlz zw!a%GoW8eM)NpO*5TugV^i=A-o`GQ=qr@45agWRG9rO?JI`$u7F{UEi03|mLakz;UCl4aTdgy#ic=*b1dzm+FWm%T)$&{{L9(M zxCTsQm~{dm$ejAr_;Cs@-hL{D#4BBZ3&U#)$v(732@LKrZtyGAkT5AbYlJbo=GNQH z@NRgsq(2b7J?YIG^|@IiWg6G?jo_yiXKcqFnJ>Scj>UrJqP#KOUXwo@dQ%HSn2Sj7 zcTF2d#n1GjbH_!pQ$~b%N{!pc-%;aKVGyC3lSgObXk{bSKJTGwxuOvkVIR63i0`V{OJya%`&zt<^FFZgn^>sxj zn5)Pz!5lEbT=^lvbV8ZRY;s{(GN-Z`^d;DN%$Bf+$098;3Pb< zh%qtJcZ(C2m8s!w-98y!Az?{|SM}DzFg&Y5&EIV;;=ImZE-$St&bx5^cfXKXXI|s3 z=Xb3$M=@8ML%>2KF85BwFUP@t*PHHhzzpvQD>2=BmAlW*?XO=sdrSAM<5ZR#jHYXdyU1bEPcAHGP@DZ09^~ZAGjjKL%8yKD{%}F&x$_%aHfg0M z)p38kO-#>Bh$k=TaHCe!`4{>;YOFA;kUu4b&amn@D?Ww}8pXhJ#osf0hMzBtK5>8X)^vQ15p9F-wD=f$9_wX;@XRUku^aL! zdU{k5;_Xtf*5@V8c*u33kALN8<|*}kUUs~hKDKB!vii}o)*qgZH*-JPO)`f*t0m$7 z+MOvrdz{@3&J7FSopl)VgpipoW@vCFlFm-tFzquu*L@CG{Mt8ZX?c~MNtUaXuQ&c^$3fqT*8?@#KKJ-YXkL{U z{goI+5p9^($8-i(kd}98I;UZ2PbHtQqt1*blrvAn{6ePG*W{1n&#Om@29NS5W3t{} zhQ&HuvxBR6({y!XxP2wFmM;D+i^*^8Ei!~K^-G1{N)4Y9zq}#b-`lNWn3b|rW_6hq zW_Gi7!WTY1KH@v4Fc}zonAVT7V>Q+#yFNG~m8~4k59$%w#vHpLJ8GEU@qxAYgtkxe=2fm|T70p-nEK5wy^nf6+yzWM#@7ZbQ{=6s3iAvgRBmH+ zMcHE+fxpT9So12G7=073l1{&p5%dy#?pJwyl1KLLWA3kJAH)p45Oq=XfOzTgq{O`H zvue7NQyMe-xc9m-vzE0X%tDn{#r54>ckfl<8_k@?qyx`lIOdH$S%&d9!Ip{9`SJF7 zu~4dGTD*>b&E5h}(w2Fy<3c*S?&O@exF;2U9;2bz=#L{{m>-k!7Uvtn zFHUZGy)nG6eO^2?YYepXX!JjZj@%M)le?3b^&QRx6oUUDFTY{G!Up@X)H9g|zDhE^ z%D5GYYf`##So_@g)QETc0|+xncvTG{Z~$?-e+zxAsMX0iA%saPLu!h*ST_S4kqU1T zDw?XXLTMQ3{`4KJ_Fbco9{~ozGK_dU7$eyJD#;cW3H5zW`1F0&Ta13PqlP;jQei@< zS1qFxRmcxNW7y7SPCd`&)Eh@i+`5x6nGV+yVLH4j#fnIR6_IAI>N4#+J-3NJ-+;8^ z>7^d8N|z#CRHFqM*r$)UeUr9!%%itJDW*VKq^Y0|c=jUe$&Z4-qK z(8Zj{LqNf=&F-E(uvT9TKW>A&(#ieI85vRCTUR#(0a$^2dow=a3dtNuDD zNENi8%XZZZYlJV^^vetmz@7tk>f{-MKLaXeV4$vE?p2>oRg{F)!s>IHz3MNuDxzTP z;X@Ii^L4klWJ(Y1|OGhF$J@Y_(flIqBexqc3T6~lbAT?e6{K8zShDdJQjR@Bmee(WIvOd7dVa-IU6#=j3suXR+rB&OEqsUy6ly}XwqRSA zhishf=h4D3gp8iZc~5Ze#*J^#5GSdN-wG^59E(tqT~N{XM6q~PZXcg@P3s0)UxRdciu83{#_EMFD#a&e9!xlrQE53?^DaJ z>e`=zfGB1Ek-BqxCldOn{hF*lQirLl@n?gr61`_T7qybE=!8MIHLLky++NC0c2-@4 zdQmce$?JwU$?j45lsZgYie6-89M8XM!+wa;NO}D(-p3kMS z-`fLmb;7TD#Zo4Iq52ixxrO#Ud%f%okffg`kU6R$`=#O&*j&3dMT=G&-g=l1H-xIY zQkmTi@bQ+MZ>DQ1>sRuQ{7<_;EIfV<{ zN&nw#dhAu-7Vm`Qbk^Nb#2yT7YtE76)^ZrjhS_(9Fg>U|fKx{aF`D{v@Nm?5!NZ8J z@-VoM7%&QjsD-HgE(kWe-Qx~(k)H_in}Ymie*G-_%hY_Hl?*8=h3)&h#oKe zHPdNbTWLtLuT1`8@+%0&go`i-IlAmZ#8OIqk+^>0`DCSv-Foqvo?e*Fyjgr8J_gC> zM?t1Ez=W!oY(BPNgj^Ui2Bvn&!wm@(QC+_bD-FzvI$KFM;#=7a}IZ+*VQ+y_E6%N z3g-?jfj<~tCV{{0{jNjfa_^xRQY^)VyE8Ahzezm$uz5$O>cPpo<1mO%+Fhl>F_rls z`NST`PFAzt(VMK!`PmUOXJ}W@8KlBlzTd6!Z+|Se0%%+7e z%sDby|MCqLNtDb8P#9qGDj5Y7#}DsLdeIq?J$!Iu&Paxiy3o})(78Fx+7!*=y-Jdx z?x5eMQY$V~ejD#JoXXs0J;$O0%{3SPRnr5?H4~oqs#dUyz;wV#3_4qQ@{Ey!Qo&qs zYO;Q-1`qYS1{4AGZc9UL?^ozkQrbwFj!NCAoP`hb7q=2h({R9Vc^OA1vg!9?PoNM- zoj6QV?@qav(taAGnFct;8F3ZeBEpXPfn}D|!KsI{ICGAq%gcDi?rG5?yOVY5P$CPL zOEXnt;|eRG%ewi85Xn;ZWwq3vg(;i_rziv7vQgm;)7b24uS zH)b&%dWRiLsZ1|(Z<>|iEw!vp8*DzB9=0d536pXf0-&8+cZo5}gsu6?*oPy-;)~mJ zT}rz-NOOF_UBF5{0VwukRm#lm$lcy6GefAWrpSxTTgRA~5^?IO2X})M`i~AZ7gnbV!fc=4E zLlrHUGTRz;NMEL^3*ig~M@#;fLqehIPlvGhO>pzSZSgn$1&jYVv427QUJ=#4yeS!8 zF5CYKQ`z34WA#6pj*G9Q0kp(IZ^0v^(qnaClpYj8albUI78Y$31*MTKuuQ?o7AQ6& zTLOVScx1cie?sP88rahB(*X2|IIe*&_MQN7sSZ{_O<07kSzPEyW!_6?wv>dT@XT|H zGQDY|v3(%T`acj3OZK9R)~tPh>B?%ujen!MX94%=3+zm6^?jUn^np1|N3CWDXem7zFhc?b&F%RA#5`w@uwjBqR+@tPzbE_|j)WVwm^%rSba0tqDor z)^wJmT7G6lW)s_SwRNB(vl%8;7Cuit*ct~b(i~)fhBJ!KWu7PTTmsTG4}XDB`|hsI zu(a^EqCm;%%-e9F;#sKypst_=baC865%Pa(^!-NPTMB+IPM^%RI6PX!Yozp{(d(NsbkP+ns(O{ltKb^E`kNdt{WBba) z!zfzFzRy;u`2Jxbd&Ry$hAZi^-sS6l4}&!l#G=#IM`An{u3Iutv_x0lC4Q4cP63Eg z4xl{32Uq>}?pWje0rNB#!Z=B+cwE*MDeu8Xwh)Z?%^yz>wSPAPiL1};7`1xV;R|xJ zNA!-1Z%0kTsg7htrYl)|HJN!ov(eA2ZOrUWWxpP2$UHwO8~GP7Vhh`1Mn?jajbXlq z>SJPGWv_NmWA=MtZIJQncblPMM}hB6T3wsl{;T$Z$n4J%JillS{y-$bpDBrGd)F{U zxZtDq2el|%c3O@Y>@YDhS-<9n4c+Yn6|-wf^@vbJr$+s&R*&+FIo82q)MnW!s7=Kq zlJ#9TZ0yDZPq%C&tlCvzZ+iZ)g*$!koUU5X%q7^~4g$CE=h9o)lNC+h665cTTWWws zcQEGO_iWwB_Dvev!$>tU24f)}6=k=Ux4IU4LHCpY{5)Mt^epQ#@|F%JJu2 z{drw~UeKTQ`m;uVa{5y|j&RS;a}-+FpV#&01^rpCKWp?Sr$5DW@WylrxT1DC*{NU} zx}zud?Wf}Xq$_l(o3h`*htlrCx)ay%wqv@tO*M55{?%4>m7a9@&DFXF>gpZ(qZ>(1 zWJUg#PK1+_1Mz-Besw3Z@>O?Y(H`}6V<6gJQ`{FWR_5#a!)~d%6L~bg|rMzvrQNhykdf)^+g0oEl$Zh$QS3M`nn+|wxptzPw_Ht^^9u0`&5(Gt;9eM`>0-qK^QOY`ovt)E}F zZz=eiVb_-7$teh8W9Cm6C|=EmGxi01!q0w#+p6b&B8t@=gLUFW(P940uQcAg6`{~$ zU;1Wz8Ajh!=KWOWZ8Mh4KMMbcnRF@X6+ioc-Evc?7)-V0C{i_P*@pjDD!bLn;wBVc zB-IA4Mw~&}W5qTy8@(!)&bkr|Co!)&ne(c?)X#5^S9OzU<1x>p$m6l!uU|d;>BjlX zWn#Um8_lYt$y$>^wyAt$KM3$h{TuVN!6Wr=w5`O|iT=j=<+E2|3`KgGG1Pv%?1blN zB!tdlOt<^tq95MMa@`m>G~B;=D<`4|#E!xtsVE!+B@B?GGzw#y@hZpo+26|AUi|mH zJD7X|ZwEu$2Tg^ePJ`&|@01su5iIN-?~*hkacq#E!doPLO~v4o()a<=I#S#Ac;3y^ zD3hGxJ-CL>OBzaRK ziH6NW2#>0FG{q^we#K+>={rq-F5!<2Ng7P5hN^OuF{ru+kE3@ZK-_R;?Gy%>8wQOG zmAqRe|DHx%$-bjXHTo*bTUmCfx<6FiPf>S}j=P774bkzV&r|F_KxVMmtV0zWEoe8E z7n^*jVrK!3q13*cTKLZ|=;gh_iN6X4T{{&QFd@gV+Iv3$Aq4&%CDvV3PSm?hFFwSO z$Eh_4e{ul7`#%l=|FP4H#lCY({1O`X917r%DK-dj-x&_!YYqkQOq#}Ppm1T%-%<`G zLad|&-58F{YQ`$!myk2o_y8&HH}@bj=(MbQzPfV((E|S3}^?TLS|t;*dCh1p|3jam&JMH zS%>j4itgx%@+yd@9em8o4#RQGYkL1AuX@TU{Z_?o=U2ktC^>alf2w|3{7R zRxYV7dnosK4X2eK9y(t*PQ%x$8c|qU(1^ny2AplItlEIIjpd?kI2zknW{s*%HK#$p z`}{^&j1gj!EGCGJhq>9q(>K3TZi7z3t1Hp*jL z>XZY`75=neGFO=451FgeCFf+2GoUXUfgh%%NgKbllHYB{Lg?=IX3N6-x_~h2`cdcBo=s2b#1WhKCC0(OcLF z-i>>OPpo2!#MB8siW!C77=YgY;=RmbeXZPLJ;t7>fbm1zd(1CuVk^Uac@qz;Jg|wU zFTiM>S8lYfI26qLC}udz7~Opk%;tk&P5^JIyK$N1G0Ygle@Ao<)eUH7yw6xa>C}$t0AXH7K^ZD z4qu5~d)Z&NiNnu{81XuoeTlh58YmNwS$e?k0TPWq%}f zfPHVL!*3}b5QXoB|8pv$r@nYxh)KS^=LdyR})$!M8L9MP?ktG72KL!`fn`NyAZ%1IuD2olxO{hEc7gh4%`zvC_3;t=%TB{ z`;xR-S6TEg2-Ii}K@3rWnlZGlpoj>{PB_kjHGbypvS1C&Da`-uV6a9#GkX&~BO!B$ z7aks49;{J`^C{u8rjmKvf;DXWK2)#<+6yndL`fH{>1J^JAm%N+782NXpLG|H0poyJ zjRxBTVl-pet*4U*rQLeZyLgOP>_oe;^|GK3Yy^7i5##>zN_5=EI=)iQ;&XmF=)hs= ziQ)`(%;(4=>N?I>aOUO0Cyy8VSH%4J``c*GTX>FRzxa9p`<=Sqxy;$M3j@0*jW^4N zvPcL~7R=gvU8mC-++t*AE;Bx^vE^m6ZWueh?t{wEUxk;5fXmL+t|3f#u!+mORCr7g zatk(TC#H=Afl>Nny8eyXuUi09CcA(gBsf^e^Xqr89gra>203G~bBUsTypOuoOKYn-1mo&OlbOs?;r{g%nJsZ}uS zy!H#exXg-KhTG%#~-5rKANXF9>t*AqM`QqhLZ>eJ;=uYgP(LU{1o%E zvlETke~gvVir~+CB6w$>*`}fem)ty*oFmzHNKOuKFRY?Ky8hkScc$Is*3Z1;cx)Un z(I_mx6w={=xVt6bst_r0^)c|7Twj2zF;X8%@F(D^Rw$*lZdqcS8`WH&4KlX(AC0kX z)SCUAtLNA$@6)lkuZUl%$&n#boVXO{v?mT6D&cTp z^l>9~R#)tnE}Pj(7M~4d|1Hkc6?)-|7AQ?@UgX92VXS$}ndAFe5IQ?M{zQ|PMqG2J zOimG=Yi!?_n4P!sff=C-+Gw&c!qFlW9W9KR;F(3i4_IG-x*^%9g5QB9cs(aeFoobe zJA+v$8N0f0)m;N}?#Ci2h^5xyV&a{#F{ROPrPf+lp_mbm73w*spx}Omk$FRh^ z622hhS$5Pwr_TX3z9LeUI*Q1Sg2ROvd#-VOXTPCB_-`u23J4QR&Xq!6^)gI7v#MdG zz1fC)IeqUHSv!H|LBk|@(V+C5e?qcEDUw%6ofyyn7cooD#H(bXsZ^|y_D#XZsOX?#9GNvBTCh+@iw$5E58Fh}k24c$ji z;<#xNr_ouyjq3&3yQqRn7zsJPg=5|gTv!u77t5f3t!qW|!^|twnO*jUE>pOzg*fz) zWZb1UC&P@X*=ypk> z>gHT-P4L>|UYmp0ynAg8UJVBA2CpJT?ef#eVaA2KHRbwHG|{?s^P|?SjM&M{vl_Hr zzXq=EpOv+Ap1EiQU+bll3H3&%Bf?!G4wkS3!%^9YZ zVxCj-H!SulifZ3g@5c(Sv(gpB_Lz$d^*-1jBCoh1*?jA3 z!nW$a>d47@s38J#azalD7Qjw!qo`h*^pfL6BZL;#W)C6)*%!1eRwu$@0`9=_FKhdeed<7lSRz|e>ve4PSvjY zQb+t2-oAJL>7mTaXLm&UW!|udBYs)^8GuBV@EWz7*x3IS_0HiBDjp@ZlE@c7RfV}f z9AHKDL3ZpPbv`=BBH7r9d|8a`VSxD*k7TksHlBdXh--Sr>9sN{(Cvj`Od55*mV>V? ze@eD5ufUBRk?h(x-0zS%f>YEP08_tZ{1P62`<;^vDP|UBm3yS-Qvr07RDBwCyHvNX z@UK4@D4v;(#M2q9wH6^Iw&aXc#J)M*(uZ53k`;>0>3q*P@Ah|KA`-#!E~W$T4r*hC zBY%&CK~OQ*p5H(Fugw0DUzuFm#NaFcaaUmuQmD1?F_y~^rRlErjdju;EKV~3>{5PB za@Xc!kDf4;du!LwKvn&o>%T>~&#P*R7P~OO$VM}ojvsy{YkZfiB_nTptFI&&rt6#t zlUbbaN$oE8W@y*-GOoGus?R1W_B8};QjOMLtDAEK%6bTrOsu zdpO>7I`anH1RJhITY3E?XXk`n9rsz4(04Aso4>Dg$d7R)GtZ~P?|P5>VKx_3AP9ZG z(;ks%cHD7k28jeGsr;6AlU@6V`>?p7e*e6aVD2<{mriGPV({1{!oH`*@H5Ml2nx|$@$+O;5_o2j~&+PKmkH>k~drZRqbZ{NR_ zsmKbaA~eW02DH;J(@s&qLB7FoJh`YSCn3siT>H!IZR`6Py-2^Z0rvVcP3;&)7;6IM z6H5+KKHI0_3T56#>wZ8VtKt~;+x9JW+Bfa94425hsUK&fq<*grs^1LMZ(2$H3Z{N9 zmefxT7CL?xsGs!d0QEznx#_NSEr$l1IVn1=eGk^!d|Vopw$1u1BD>;rY=3dhq>fQb zdHcyjr-v9|b|*LNVceOHAp2~pD0q**(>H?CmYUm)*#2`@MuHgS{lpV(5LzlR<@L_k zXKerC7)H0H(n9)t44TM@F^nQ(O;Iy1b2jvxZr;ZgUcC+8WRH4Oh@hbiP2cB{tf`#G z4z%;9;KlGVANbF%85cT>jruhV4dAy_!@{73al+FLF{e!ghL4(>A`4YkdRAyJOv@-i zIr<+?3c+y!fd7N_8RQOB@*y?d*)dSerap_i%Jt#ME7R0%XzKMt zn)>-v{j2|fs%mFRRaa@7Q15U?GquRB*n@QS|4~gDN&9|5SLj%9{ae>hGS#uMyfj9N zG39Ey%8ijxS2FYbd6IVC3jOs{-Hy2;!Ih)+ozWcE69OKqOnv!2> z=s3HwcY#Lq@Xm(J>g2_}KmT~Ch2&C9QYiVg-l{Jj9&(K)mlFRBP3;}ibU2pidy&wr zqmn?N=G5M;b^8L;?Dc+pv{EIV0h`*}KY0j@=I>K`TYSKrPbr5;;Xj$QO#RwdxnOm@ z%|_T9l8vx2WE3v?I|&v#M@8AD#Szg@@Fy}_@zdk=$JQ@xB@-VkE$3f%u20cb*;owS zA|LgtD&yL7!`r2HrNDD`7Srz3W*?7T%ff=^HTkf)d3zab_VT`$!*rE#4g@|aP{1?j z96w`WwVL9(wAHSKwfhFH**?r0{V}G6%p<=X^G07>!{TS+V)kF*`@UJ&ee*!kHr&~z zpSB>GWIk*Wq0A0^n&awD37zjIP7v(dT4ZKu%fy>RN(z5?b#S6I7zHYv^j9pP9gP{H z#7AwJc)9TXp{j}#yWJN1RCR+o+MUZ*fVObip-Qe8L&-1Eh%0&MEfX&nPCiuKAFGuk zs4EBF=!gsz8=~X3zoytdATwC(rTiht{Q{Wu%^587@S(~i0R<@v3b)-v5S+G|NDk4x z>k~9}7m1E#wo76%&!vKemLaG^wVtNs0P0DHg8C$M_BE8Va_phN+)J?l%xen|f!t*@ zrl8{TH&_|Pv^{>pv2i>pGRwc%QEjGmegMNs`!@BTVB;xEw_euH`Kr3-Tp&F z2J2&|-Nz=FNDsGj?^Br?ZqieviAg2LpJ(*g_hLCVcx``_KkxHr2NTF0oGY#yw!y5- z4t!XB{p{M!Trz;g3G!sp$k~Be<7Pi))PoXtZ(3+ zaqR151abCd+Fpl>A9HXvoc$i>ch#lg3F0Q5@ zxHjTBj;bu)2)`YJIagc3;Gw>WvU|6yv4yqbbbJi=`h;gs(KLYTo}Qv>!`oTgDL&1d zb3EK0R{ykj`^!N0o`|NrClUiizMQ;x89kd0BLhICmGydNn~4S&KdeA>__@BvtG5A2 z`+$^)kW43%wby&%h-7$;w^&yTro&J2A!gf^^HeHxsoGnnoxj5x>R+69wfDp|11eqY zPRoa!p6aM$KQfKmt%Ul3GuW{8yq|-&jp3b~E#~7^i&skK$jnA+y~R6)CPcCop2oVv z@9T^%N8-k~HXFSsp7F!*qmTQ{A{?a}6_OZxPfYU$8Zs}YGcUua*OJAjl8=eMT%wr! zr{u2vlUx2!Ts!-UWLN(9bod3`Wd^^A@8~FVHM}O@)yZKfD4*2~=pFmWg|V1D2+S>5HHJ$^buUUP0tZFMBIg7$W=l zn{FC_g_pDOe_A|!!-$3jxmhQWFlS#wW*>CFfw-A4leUHTw|GZ#3D?1(SK;)YbokB5 zEpJT@zbXj+ykl_$M?;U*do2~-YyJKlJ@iySj_ylzq}w3P?Q*)EW_^8Sd|oBYh+O0s zmoyM+%NMlNuiujZytI7|r>U&X7(Z`@n8Hto%tv0)?%@I4g zT$?zPqlx`456%=Nzs@QM%Q`V4hr79Hm+q*Vb!_^oHHT%#XW^Ti1k=l%eV^wl!@;){ zw@`k1#hz~;!M__d@S$15*s77hty{78h6?^gd}gD48@pBXoE3ZL{j-WKf9=&1jtEmY zLgBWE3eWpl9z(hOwaq8om}B1&7fvxMtk|0vj0+*WQM*Bu!g^xB(2%l&;HDg1oY>Ky@J62-#bF?_a6v<61+i>J z7RLO>Zfh7vZ;aDq;?Z~$DLz*-9H?_OJLc-8kO-0LC*bB114E?hG3y(!P#TVecg$ZU?ic;)P23OF3KPI16`wQfu%xZC;vWjPTE2}wV)WC< z5{T_4A#;zNUFKNluUDJ`4uJh4OAPKjrh#wbSjuCR)CqndPNl>X?y)&})vCkXMl zc2S%BmN7~0N63C2LiA$m)2Yn3c#8Y+dc1R&rNRZkOekSFD@v&e9b@AlzI%AeJBJ9! zorYR~vftsp&Sv-h+-cmzKEtidAC06G*Jf0Sc^us@F^@d129-%#5T7c6xXaIu8%}~) zH3tz`MM`*+>u`QSs0K6$W}vL?`2l*c4T_c2o)7bOo9J&r$kN%!@Oqc)-Tq&6hxg#L z5onn%??~u5%!9xr81%W@>2rE+V%VeDLnoTFimin2!}>EdyAh=XI6&So*AyZjR;)jk=i~afQ?1Gx0#HAgP#Hl zaW5^(DtS?X!l$*r4Hy+1Rf?sjPw>VISJa=^}*X4+dm+2qZSmgZjJow zP4a@|sXJK+SNu!?z$9p+nit)4pu1KY#CXu$bNLAd7njregw7fISd?G$JGF zD%H(?i;*cWwCC^5pG3X&sqpwX_60v`f_KM4$q^DPD_k<)=`6SC7+6l=_SEh~5Q;0) zEr)Z4CXx=bBQD2gfUoRp9~j9l()ML_>>(f9Sl=`I83B@o79gP@Kv9{Si~|G=0EIc2 zu_l!PobG7uinI^Z&3*$Ub5QQjUnN`xZ7sL=CVC%*%ie(%^H1{N}9nWebw69bhgr#5~C_I2G{vf>x+ht3GMg;T!8jP z+girCI#l1Ue#Rd@feUGFi(gLt#>^Rh2SNLDvg4SS;%E5yyR2T$h{tM+=Vaqu9g{UX zk2ex7VnurFW$;1pTwl7E0_d}#k*xP#mG2l)sI=OaY0 z%E`wdDkLA_uk_29B9mA05jx4V4Ce*t==sBcOTK&UIfmB)is4@MxrMUV))RQ`;jS2$ zJ7EYELLeHkVK#JQ#Tedj6flB;qY#~B$T&ygF?0fq3=eY@3b+K4?MbLmH03N8id zAr-uw>Dz)L7}((i%0eCo70w(oVgV0J3$Zv$oz`3mFmC_SY`Gx9*~Xff8d5H3M9|0u zq+n7mAc-j#@YtvzSuw{&ejwu<<7m%Lq>` zfY#(L2jkDCC=bR@f{^jE`C$Bw%#R$KBzj9WTTaG5k&J($Fn%T}j4mGX4OdF==haPnJx1eU$MNAaWhe_keA=F#egRB7Zg}!Wp?(LMn~`qBQbH zdZxe(WWx;CCpSlBBZrZMg<(==O(8~U5fl`{$Pu2*Q7eo*I3WrvEi!Ua9*q19em!*% zm>?b)w;5 zxvZ^Wxv+5gTZjZ?xm=Gqi=A%YQ(D>cS*{d|F@#g*M{`L+4k+kFz;bbXsysJkA*yum z?oZo17eXF8CjcH=avsCQ%4c|_;kd$SU&u`Z0x;Xx$#uc7v7IN!1>0Q#(Q1_AQpQ%6 zoBgpYcTz={VYzu^xp|yf72B2NA`q-3N6m3UjMm|GE9aQ-TcoySD^q4uH=My>yMn3f zLu9C9`R(7}Q@~<+9@_6(Tv)rCY*!R_JYg)LTU@8Ccq_m_>b`@ih_;l{J;rj11Yan` ziUt>mP^V*#!LNx2%1S3*3b20X+r>mD!U%7}$fW-)_z*15x!rfV;AjZlSi7r`v%k2u zi^VNxL8UC{HoTOeAb2SoTUw3(!x8H1573SQtzwf{_fj_(84vUWPFLM^vd_a|7yLBJ z8nXxxsWq|8&A$M}pix~^b2M{vP~J;ZU763H$o$qGI7kYHvo3=E`@W%X_);4%=42c} zs7n=v4SkfCzbkRQwQ(3O;1(QraCQf5AB2~NeK*h@;d_4C?gC4ss7x%`;>Z?*1M0y{ zAAQl$sly?dh`-O}v;6 z!{0C!|L1z66&yAg3*mXY*4+$?ifj-kV*@=$Mi$lf6xL-w;-cZ#%z;HSqu2(#fxlP3 z?t6SHTgcmVB5>53zQ_Uh2G3yck<-6}>rW>0S(X2<^(s>W0 zLeUXll==L-=(@s-!t6Wgq?%aOWH+qaaHq)NZ1{-npMW0Ta7?-^f_|Ef&wr1ivm$n9 z!GsYidE91En2V~FpMp2Y4>NtV-ee_W=SrSO`;zMB3Boh9U_qLY)olX));wRv&V z-Qq8{9h7ERdxWl>;pm(9ci8@y(IdR>D1m-R_DAG6#?kS4Z>^h$uDEVmVQmB-=D`tm zUF!cVoC)v$&%P`!T!KUC(A0qB*Ing?N9LJ07lA|%#c=RAoq}9VI``qOqPOv_FMB{p z9dnIfZ0w7G{CM<4uSCz|LLv4G^oW0`yl-}3p0#cfeS~00PUn!zV)KyMX#S2!_c4xj z=4ZY6=)XZ69u1>d8BnlxJlB5w`J&oAh4c2WYrG!%xvU#9pUeFewxfkJ!=v>Kvz|~R zLLbRDOssv~-*w}_r^|uIx;@`s0-d?*4i_HnqDaLz+wi?SlH5CBjgp&aA|5nwIhK>7 zT#QRy8wyffbq~O`@u3M2jB##o5UafgSL~bqqPqdvWIK9{S!W$m;{_ zzP*6zBlsDOLy#^yhyy=61%%1CU@UJB%iEJ9MeM|TLEZq9pyu6&@wAV3itTHUUV~8s z_IH##qD1a9dX<+<#3w?l=14@lF?HpRik0t@FdxeGH7j^~(h9bRo`&~v6!xJr*w2B? zOFvEL$(bwnyMKc7&DY$gaUa4y>;xyvXb3pmKS7kc_6F>q0}|DaC{OJTSsIP~t_|Xd zetFn$O!Cr93RXZTGz&A z&(8g-Jf^doJgs1_(oY|6JB;v=IVXgLz#J4bPG7&SMQY=31Y_Vdmn$u zB1G&y{u5XQ8_K}wS4KaUL?lChw{I`bfN6?iljc(QPcko^EDfDJww<3sJK?i-Grfq{ zz6@r<@tgVV85!4mF@iakWz_zYX*X1159dbM?6Nn}{+oPr9xHO3#XhCjai(xyVBJz& zZ-$mnlt;z{T&9uw7?g5svo!o98y;fgah;xyGi`XpG#u4m-96gy!)Of~jx77&PI_PO z@t;uaK+oU?tXI)7C54W@=>NcAlH2ldeu^3c1&Mb!nU`V^)ZTy*;7T*2#Fb_XB|LiR7;)F^S#$a6UD$uasOW>tg7_uwk=^c*UB}<4 z?Z6%lPMT(l^5g!Cp};9PnZa8P(vHKf273^=%nA=}cz251v8%d2wYFUloCL%Pd`-Cv ze@;wVGyh1K}J)|8F4xVi|~P z15r8_0s)Z8K$Pn9vFdT%tznSKz&Qf4$G`=~!D$#|GH@vdE<6rS!yuD^ z3u7nsvBON$HwO${&N#Ab7{koKH5xeQI5-W1at5y2z?F`J(=g~~;7Sc#^*A^UgMJ3i zY2X^i!D$%uGjKTuE-(&G!=RsmOEGZaac~+2{R~_fYIvca49nz#_G2BUn5LS(Ibh&) z7>~kf81yr6jRwv+4xffWKLb~7;7Z5AX&Ce~aHR&WdK{dFK|cfMG;odM;4}>S8Mqt+ z7Z?YpVbIUOr5L#II5-W1eg-a#EtAksmc>!J=rRfVY5L}XfzxGn6i&mSpMh&MaL#e~ zGz|I~xM~AeIu1_5pr3&&HE`AA;4}>S891kbYa9osVbIUOtpT>N5ilz*o2YFuVl7?oSrE;_)VQ+CGG-?y_+od*3?b-6<>-@dLJx02QS=V~P5d8ZRU{}9l?V_`fy+WghGSKn?8-xmn=SKh{-bTq6A@hfO%e zgi}nl!m<{RA%h7!O?smVmzr?330IqNsR=ilu+xMCCY)o!VG~XFt7k z+Evr8QlypMpEhzZRC+fC_#DQiop}%EJ&fLfX$TNKUybNc|E%<*p{29ZyOEpL!qTtr}s*Mn=&?KXo17`b@8RcUs_dK73#k- zy(6^r%Ji^6^&ad!m_)kAs;qiE*HG}6avMjee^L4#{tO9t^@G(9D$>d-c$_Cq*WMQi z^)E;d_=lzqO#=eh4>7v3>X*5tcnK{8Nu`d}tmDE3=@vp;YZs0K0k zz@0<25-(=V;?_KcLEW?$;V4I69?#9;3u&>ba#JNvv+XShXUz7dXyN zMpExo>nE!ZO|=du4gzLH?lkK+tIwn&;h^TpgUKV3nN)z-vn&H2n-g=X;$YHpB%PUH z{mbfumqQ3yz+rzm-sPPb*nFzs*^5A5EpxEI=8xkKE zgD`7-!b1v3GxazXK&;ka06==C6$-9OyvDp!`PRvwSFMxCSisla)>`l7Z%>?+VtqDo z2dEoNJPa9zzsnKRC$W*x&Q&S9QO&FO+kiuokO#nXh`;hJ#?MO>=K4df&n6DY>ums0 z>p}$8+`; z^dmYH{OfbawLZbSPFlgchXq-hpxI`144#rVw-p>53H28_KNLJXXb$zeoM%I>Rd=*FUb}I_0t9!*Rt9#}9*6=wCe?k21gyrmHoRM*SbDaC}EUN9=Q9V+PuiWva zH;l;6vwyn*6?8r-UN_VIpZD}2p!?4p*gsllVWLB z~!A_X9LF7a>mFwO-gt0yAE8b|U^^mW}v&#vi^bZXLe6SHR0H*IgZ? zWhi*}U6D|5?OnU^c6S%v?%rw5Ub@R#wY10j%{`#)J)PFtrMs=*(&N_fJv&3ec`No< z!FvvcT=Q0Pu5FQ(!0Lb`%7E0MW93PZZv_dtGKy%Z(5=Iu;Ng`h9U-T+7E6g#isQc= zkvNsZFOK9QT{xXZ9dmO*p9Qamj;zY;PD5uc*e$QA@@k#DAH#j!ZaiPLhVKQ*$`F17 zUk#4TZqIBD_}r-*4o|uE*2i)G!Bkgm7SAw2f;L<&u(zlTeY^I)UO29sh!1qI5U$1b z?8ns5*yEe^+tyj|bcA~n@s03pc)tY)byFABz7uk-z3(Vk$y%6%$%bJY)^9iNiOa&X zur3Yf1L*8aVV~u>G+uXUT~TUXe%+F++Q)O<0H`a@sdJ{f_MU@J=M9G)8!Gc)GwJCB z0_7-~HJy;ka6q*tb5UmN(chuADTOnSWV#Q~GwS7t!{>5^GZ#(UPzjGdMa9!LjL z6f7%TdsA3O5FFO%w9+bpAjtABvd8m=6?DXlk zi)Y5+6Q$U33ZU?BTI}fM0Z;9t!qYruyH3AVJTru0%w#k*4f%>4M=_3X@?G~iPgy_i z6#mTVgPz)F29BRPI|et;qN9hJRrh zBQ%I)PLab`&$l`+cSfkIg z66|5T&zBnUTsd@PNx{1gt7mxF@~wJTYBU1z1e}I>U5mP{kn73=flzSKz>w4@jrHjR zc+D7aH1$t_M=*x1*jwkU!GS%N^;W`)4eZDBk9hW2)}a@2w-H}#;6or+_GS&f&tdR_ zm`n=gCrh&?7Of9xgI1D;1mC2s`4n5mk%*Ro38E)V`f@f9#K^uzFnkVP(Y5!Ul99-4 zGCC7p#T6=BS@1`o_P&tItbz_dpCBLy4^7lK{s@O6I)}Th&Q<+Fv^`Rx<)DHU>keDT z4jh$6Spbomk__j=y3dFGqg68w9XU4h=8XsRT>uCr1OU^<112DI$%Y*xV@4wx+k`~o3VHn(86Ly&v|HeCv_pkSv!OcRJB ziwe#-tnKI3YSAzhAgEJBx_1mkT80lp!?Ef}CX!+G0-~6CfVKC^Lz1VRdHT8|pd#nO zpg=~f*5Q*@->P?n+^4KglirE+CcO70P6>SHi4U!&ftVFb#H^kZ16C)V39pot*kY=4 z!n`m(0*GJcvPkx_lil8TLL;mm$ZZ@OZfQhfpMbgv!q_~iCSWC|Gx3bvfQdrQ3t`d( zCc$0R+Rs}(J@27jJwWq}%r8MBGlZG8vHMt=O?+V`BcIf2+#*2^scR7YOe22KUihD$7~ z&sh)wlzaW7vIufWSg};r*yE7#Uo_ z#RI1q`wnBtFf_J!;1px~8Ou3n$9}-r!*0h@Qom5JcmTr5lDEQqi(7qfy=(Oy`lYTi zodc(>;E55mVFg6uzW33~tcta4kF-9vsy`KJ9aw-~!*cbiHTb=b(2+z+N3Z<})TJ;I z#q*t!0Ex`%T56^ zM1W*g$0-)VkxW3+)gbUVAQ}Kc|LKEd;^KOU2=;sv-#e4@bK#`uAvFM(1yG)37ipx( zH|G<`4}oO|MFXN(jts>!-$OOP*kQ!^Tj?-}BoHMqv~LUSpu}JcCpXbI3Z)PLgR83m z;wi(hL?Le9{K?4Zu2W{u+#OgX9#w`*u>tbMO}_77(~*EYx(NbCF>b^5U6;Plm!T$F zDm|nD8M-6=MqkFK*a2iBuoVi-#z(Sy=2bul*a5LE6nt=9?nIv7qCoZ$q=0H{V_u9AFvw!LJQ3L$wv3G@ zQW3a-_|KBXu!Jr(rON5m3Ws_|mSq|4YEvNP%i}+V*hP&<`Nr7ZB+8SZ7 zBDC18>A65$+GI*eKwKIDix?v?ur(~=7eviguxT8uQVhwJC(Q`Xn9o)Ty+SGkQK~s# z2wKi^K0*kRCG6v*noTHB1OOFg*5oc{k3ZjtJzl7-W5(0f*acCBf#5{aAnhgj>as03 z6n3T z9aBt%Xt>_X%Z0_{*~Or;FS4@9B2ejnkV*^wJhtXJyQTjuEj5A_C7ko?o@S8RxC8@i z_n#6*Vt0={Lb-&T*PyXYVJ4AiML4s^4rQhDi;PIufLy4iUx-xk|QCv2M^ zT-R*3qu#VbWFv|?=Ob;mk=j*tv#Mpm8Ffk8kHy_SzT$ZTKDXdihXnx%$j5FDwh=kx zAy(*xT)WCp)QDXZj>8oAjj&`9EBo29@?6M8<%AGk) zogC>De5A#;^pz&LjP%u>9HnI4BB?PZDN!W_DUM`e?|mwL%{Wi`+GL}VnaoTQ!^$jY z5)sRbiik$~x+hhnuY?!&@DLfEQSpko)0oMYz9Ou!ift6HBxs9XZUIEByl4|)3NG04 zm_}^!LP0U%ea7r?mD8!1g@K+1N>LKpgeQB(mX%B|L7;)?Wfl(QnO4sLb(TGlyCNuu zGLpz$%MAubh{(nDmuNz^ASNPLUNY7QVux8|&X`yc#KMf_EL02-#*!k~CQwC%GRj|@ zME>I9XW3%ee^w4Vv#!HBu=-#sG(@>jfv#PbJ(U6)!`Yb(XIun1ExKSxG}OJ&P`j4U z9CS(BVpr`ekh!4wx$|FV;R~D$eAYSX7kEXk`|v3a4>8t45;NK&*R2qsZYivVOP8bJ z!n#Y{Wvf!D=vkb#_iXKfq?%`XdvO_zF#!k zREO)KU8fHg*S>Q4t)iI+a35gtOc=49f`qe2WS_75uFEYdd$rhcNc1~!cEPlR{3O#6 zEQXn}W0*pm;}AcBaqJSqQ)nFh!bBkh9kLFbI9e!T%V*hvKf^{(R04CRxL|2kw7yNG zlb@~iK9eJPezCaVx*P{S&||#W9CN4lLbfa@P*%jTzC0A)z+jPXzrphdX*E9-ay=A( zYK{U{7QF1hqGj*Rio17OiD76CDyTW29NxMrEc>>ARoT58$1~W!oj6Tuf0aNTAy?%< zH@2u5(^y>URc=#N*Mh{JP+Mg|&=GRYI?=@|)s#TxDo?Z#A{KJZ9q5FrBZ0ciJ@G0M zps7vtyo{A4j=wgmZ`mm;k=SJ=R)tgXf;N0Fz}-QhmnRC)^zZ+3kK+U$a6=P~-Y@3p z7mNcL2H*5e&n>F8;4IBO^W;sw=_zi<*<$!2adfb^WhC6_oBuhet{|39E1ubhTVQb? z;+K)y@1d2Z+cyUvaHeJz&wLAREVH)8plk90|@@=q2h8LL*tNTQ($nnR*d6kf2 zFXPH`W?eIT9Zx@nHy3PF-MXwlxbCl{OED5SZ_(2-eIX)LE4R3Q{fuicPDFf#5;6sH&h@o39#K5t9Yau(b<9{VkmNGIu{qNZ6$DYu zGN=G0+!r!RCDjdy;g_xL$$n0B@3jUGV0%6Qo%Mt3gguAaqB9x@;~h2e4*6xbE+TqayF$OQoz9FuAss1zpHneBvZz={MN%98KR(#Xz?8 zJuADRB(FGtpOpiLtTXFG1PUFA&iDsm!bGu;s=ha@tz+^WH=}LkfanA+Bi-X1chFMw zpeYLydqb|vPrL`lit!#?2__Khfh7ud(=i+y^!0C_~g)fg8g;9>eGwT98FiM4U zj&*ac3a!WDI30^)uS8`38KYCLC~~|KJ&K;f`Q3S|BbP>4vHC7|{`0JqqTu0)@SVYx zG5ihRnyFde@ZCB!PAWk0n_M7oG0JjsTJ8#Y_EA{(N$S7rzFJtfWLn+*sdYD}7MJbD zhx-_G)OKG=Z8yCBxTv#-zg%~(%THBzAsm`ueS|{CfHsFJWj0Hc-T{})PuAiLrr`v97~ydYbK1e) z`~~^`5e4AeF>H9*Cb&ZO>8ztJE+UihB({_u@NhPtYjj51hL^E8t8x?JIhR;x4xQu*C>cBC5(&2%q)QHU1u=klPS;&dy3Tk?<%Yqh0lyuC(_OgT*E|VE`WLd!h zs_inSaSC5C(G((FTb2NJYWx5Cgl1pa{07 z#NcqJ)rSq4kLxUS+a2KT*d}zxA=Xoy*>?asx`A`ptn^BZ8!^B-aMl{^rpXhum5A8` z<;xifr3ra*_&fa?n?D5~ihqJJbMivcAl8VaX58b_Pz&wg#s&>QT*enM_0a;nzHo)m z0X37h7#%2^@)~4eyBVaoEI}69LyDh*sU|^H-uA>u$W;s_l@Gx*sNGMTu?7>b zQ*XuP=#+Ii;+G@p6{`kZbP)W}b@7Qo>ZhBp)}cJ!L1L zvZ@V%>v4ATIBMpr#kG)UAm89b>S*!IDCRh(>W#iRIhg07x4{g@)Jy{$r`jv<7)J#Y ztM4g0b^5K4%W;Coubi=LtEcP?P|LB^my2hf#0eQxQ(uFO#Hq}s1HW{W1v#qFH($QX zvu9|LW0!nfrY>5Fd9$g`W2_1A<*JJY9KT$I`eebA1fv>Rq;LKwXP@Fs$H>O@MVWkY z%c+-z(=IAZxoXJLAcGlNsNuqSi@}ZKSO~FFXJ_H(_sWWQ!v9hm*(#zQ&0=@q<*6(t zp07M2-T?3#R!#n;n>)jGaS+>U__v_q^5Cv}NiYtt*vTo=tA3lwutl(Q0Py$ZSvGFj zVjG5SSZ^Cv0b7Dgba!LqlJ)8=%|rf&F;;7o z#BkfF5Xa0B8_pV293_WGbpvbGhhTC?jNR`R-4RQ15iS5-U%LfvyY>h}1 zBIfW-DlOZ1*{E~JE}LvDv=6TP9Vt$#7^I^jbE4Zu8WY(`l4L=ZWKStjouQPvE4c8yiJ%hn|5`Rs*(&5s|`zi%-Oi5C-{ZYvNWc zkQBur8|@R7eG@>jNG?8c9MVw_7FsIyc@)982w*M9>1Y^s)h8qrOLPIU5Zlk1^Cc;K z6OokXlakb7-DOVyiiNG^Y<>>qR$(d#xr&jga?HyWmMd)lPd3wDf#uzCE;^ZWYn-g* zF53k^yKg)NL92Ez*Em|0oo}fyb*r&dC@Sl?1^3NPw5=4d8qLNw=1*8ETvk~34VWt2 zdI?PxE{WI8rm4bL&o@=L`D0BLh9IE)Z<#8baRji$tDyp2aAJcCQ-wVik2;LG0xYhe zo=@5=K%b5k!#+GHE<1_y5g0Ad%0Y}4WFy>rlP~+zuHTK|Ai+K!@RYrL`fZZ!uoy6a zj|5z}k}3`29X5Mw@9W^YOIc7286XRa;lmg^hEs&-pm@lF#u_uw=z&6C8Wvv|Gmsxp ze>`fxFaS{z_6uY!v^(^`Fu@@QIXFR}_QVa}nB#2|@JT99TC$j2hGQK*xtGW1rF&>N z0bxwyz~!jEg*#0!w3*~z*k8#a?f~5UE68wgq63g3-|rc(EafkoDnQd|qVxr3)RVZp$#wRkv)v={V@V;ubQkAPo!C}b@<^eXme z?+3(Mfte$i(m?lqhX`}UheFT}AelxCiwV2neTsPr6!es88>z6j#qR7W(#Eld3(%Yr zViTJth6PW_v5OF%-D1+0Bb@?k_U8q|c*BJ;kQ_8NCS%KxM6Z3x5lQ_!P}3UWe7&_B zgn;0xid!~BYKKNc^@w3c94VhPdmlDe#?clL_&J!CbHs^d1I2sz!ZEfEG;RR>6fjgK zh7ISR87vS>2AHFauiEzEsH(rEC244hnI#;Tv}C|YV4fcAe~!saIVX_dZNtN?lau7_ zNt)4E2F}6`sR{2r2_CVWvaAyc=+sYvZ&7RZfoRY8%?V1xS-w_lRHqKn3Gp~(m!hFe zmKXM>n=zfDNPy`LK-$?WOv$rhCB{mq^$!X&FN8@G80;9prmlsGZ4mW=B@bXX*=RUf zB$LFjgyl@4Mq6H3X*X&hnvd0~P{_Y82+|Y*cYiEWf;8V?^CB!ZsYPc+Hc2UH2FrHa zS(i&z3EK6_V;T|4i)01CNqAX>!LaiX7Ri`d`VOHf?2*p*&B?)dn+EcAu0xWAs{6h} zYQ(^V0z0AeeHg6(7pDRfIR7-q`=_j$L+=59%<>)j(CR^Wy9u|LaH|Ph1I8Gt6EDkw z0b4}$AYWqGqP5c=3md{k1Ls1ni?A#7E!)G;8UDcNlg3)o)1xL0uVYQaZnkpXMUeNa z;EU=hJy|e@6V#ah=6}Pgp�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

6BrXCx98Sv}z+Av=5eIV57q|RB0DH-y{M- zeMt*y+xc4IBm0WsP%hLyr1r_y!_){$epFgSdzbMRVlE#e=|RYhCcWzVfP`Eir57)9`5FghuBj1W%l)vG_z_ELT)l9jACs;@ zYANmGn32;QGK?&nxF!ICx zUG123tq^i7Y=uu<2Bq-@r**YLB7%?X%`1eXO@Gb%dMdgjoJ|4F&fEW4Xm71)3poP1 z51W}jXArMA4_yE1vn1s-v+8^~XGcKG2!vyKf%%7tmaHvq;ow~aar8m0dVdo6Jc|&3 z`HZ0EN9X+98$KJaSg0={9gtQnA*s)SOE4G-x2%TfZ*0Lyp`g~>6n>YE3`uXF#070U z=H}@9EADRQM9c6X+X!`97fbv`l6V|-glXC8oq!V!n%sq*5mozjN9-dkJnIgk0W`b^ zaun+_@f@M?$S~NhHKMJ^mbi>Jy*OWtfdq{wBIpt)%(JnN;)SYGPn!x#&Pb95ob{NF zdZIZnK0?0GSD3Hi!=*-WLKs3SL|Mt7j-%6y$OVSG%i*~b>A4_E4Z)ydM5m>E3kue; zCP#j|AxH#D$H2s4<&I4d;tJy+l_~3E3N*N0AH&X2K)>5nbCkTe5yz9Noe^kQT1V9A zG|!Bo1g-{%K`W7>xdQr_jAWO|1t~JnP%>J=d3z++jk|5euP??P&(Y8wWZ0-&+A$sj zKm6xn%0%s?(=qF6Pc<5Vygd|!paTKT5lcv?e58!U0ezS;1J|iBZ_B2LjKbtHyZ}UR zR~4hpMLXFs|FsWm--T%>_R~oOQPk~vD9;&~f1E_i_;d6S?zX`nL|fAp|9}^lOm&Y@ z$IRY-(td*csPJ1v9=bU`$uGTqgy!@as#f5M{06T-$0LrPU=w^^|2W=(J`ux)!a+ql zl=*(<$I{!Uk!*Z^@HlSEpUycdUgFfYDbm|r;ws`g>ge4EwFbq0diNJf{;}Ej_%lzH zVL?x)T#<&tzLKTQA1axhk=yOk+nu}jxn{h39oZu;wI5K;q{n*#6Vs0_k?~pXR_oSIN^6A zZ0m;NpXB}FJ@_t@9_x_2L#Nk#*stAj;9U92f8Yz>vS*1+AzKkmfKXTBXSvkclM`iIU$;Hqlr<6I} zQ$mredm>%5)mB82Q8QA?gba%PI4KhY4JAPgZAK{NI5ysZjC%{CBWc%S#R7W-W+X4r z%A|Afe28s1WS6B(e@8y{4yiydvEpSWL)Z`8Bc8;Pyzon$f!jm!7I=b@pQU4?F#aB; zA85Zwj6Kz&F`8f*<~LHGUC_1IWx#6E|1q{~_^wzX`L*b}Si(P4=Ky=Jw~B)+TUroc zM^93r@k8j`?UA|S^@9}MpDt@DSO|vFaYM!Uh@-Le9E*5A&W`D0l5*l@x5jOuixA?f zSQ2gmH_LiT&S^9DG{xHJez3m8iL+x7$1Dsg8Q9K~WXQ5ZPEPmiKAXIx3g$Nag*~;K zxq@DZGHz=DLH>A|FwX3gfTl}t}1t#Hc4 zrFk?CCBq8P7UIa?Ek|vog=Dv|K2z);jNI}nVrI`o(h7Xcd35BKl@$K`x-lTRmbT*5 zWkJ0FE9tn=Hb=BfAgDcrQc+Mwp>`sOU8(uoCjOMnH2Re0q%Lu{2`fGl0w+cadYzv3 ztGqoO)h>S{+ylL$pq7Q&2jts>iy|m(!8w~rSka=_=zRcM6{#Amw0;}ajJB}=x%IgY zY0C*nel{Q%HX|;M^{2FbMAq(9j`rh7CAF z=~&D%ST4L1x8)((j%$JrnG}=g(;j8vBVWOjGNYIX5f&D3g`mbp1E9eApN1O6vYo;D6C{%Yz1(1Wu zD?Bc$er?c$L2n(od;EDjmD-7(48JtG!FV5s1C%;IDA*0j$-+ybkXP*Y;7Y^qqE|N2 z2I@C<)F>AiE<|A!ieFT?vI&1@Bie`8llsrS5@ly&W%>HRD{N>Mby;27s5)ho9mURs zws~U%l-iJICicp`n8_UtCbNCR^hR#>qk2vFQ?)S)@e_W4&~2cXi#1TyMyiE?FhtKKd~vZ)kTqO|4uSt76?UF|C^5u0) zW4fU_bBJ3SDNx85g(E> z8vvEdnN8wd@yr%f=poToa2^I{KTL0sR?aE4G}*7Uk}{v!YwEH*A<>urMwziv{2!E= zy0_AJ#YX*vFBIrgP~RddFyxud1rid@%66bYVMThCdKZ;S67z4=+A8(CYQ5Lqt3cE{ zR}MEM$>AnEUDP1eq@wptrECyNS@jQs$J#=JD6nI;$9m|8*8dMcO$u-FqskEa%v*!5G^;v3ZGhWdqvcLt|T#zl)mFBKOJ*`=* zFVuqg)Ev!ae%(P7LEEn>Otwke8GB0wSsI(&Voj}A(N$Gh+YSlJLW)by#Mwc@s7gly zVqKXXa{hMQ-!`PRVH$PBBji0%WWf?qvNV1>n#N1{+`o2-kp-I>+jFAr^iym~-J|fJ z;*sVBvp^dzD1i`!0U*;%;bMgJQh^KCbV!J?0Dlrupy{%Oo)Ge^>om1fv^Em7tm`J= z+;AHy7S>PL!k$PMb#NOKneJAh`TT+E;w@x8i$pplObe{2*Lb-db2$tin8sjRB^des zEAP<3>q~Ie0ZZrfi)DLT`wX@(p1z!gEzV|x9ck4Bx^CqqwqRWZmx3=GCDCW^>bih8 z==}ekx76Oe<$|}^PQhD(vB~$g{|c-TDKc|-w1Aox z`#ji-92!2G6mt3X;TpCh{o3$WdU)_4no-2-3k#}%3V{^yF>KX2@Y_&M6|a(nyjy8R zh`p#UoK0;g!;5~_9$Kz1olOp9Su1k#kg~{MeKa&h*8AgK6ymMo8aOm)bd&SPIw~>% zL;=8!&`5FGSR5dNZVe+R2*(RtGhWsvHaiFbGc1RaWa|cMz8bmP1?w%X#cAy(C%A3a z$Dbo485+_K07A z#Qw7`o>5c#ksD7eg3w8{49q6$&;j~l7&l(I0%y(nNo@G(mjj97(Y*WsBEGRs7I9b< zh55l0INAsgRd(0;2BXXsM2^8EfG?XMOkX1&UI2|L*df6iH?W4%+ST-01ksGFTi(XS zd5u929m8G?W`o!~BYZ(k+Omd8Yb!m=VCSSQJ{RV8H214Q5n!8SoZg)fXf`R(L?=(Q z6`mE~56RiY<~nFL{hLQFL>f>~wqNE4uIg5VpdZOwUVmg-U0#PC{AkPfh`z2BfAn0 zCgOw`P%xyZ5&W10486D$1mmZ6zARPK5k=&mQnj(f4Z0vn$}LsDfWNp#NRu zk(<0tWa3^+zY1P^dn1mg*%QMN?M2`f=kYXBVfKkTv~&GJbLh-{=6<~N+e|VGKZv;O zV|@OoSn^}Tk2<_?aNQ)AudaNsuddRCx1sFV{i+z^w;zwKq3J8;qQq3}B4X6!ka>R4 zjd;Y+gj%ZJgTL4)A%Rn{=0Xr?Zp7RSX5zJ>;F;bug9k*hpU3&8`u)k+h!FClSJB>z zU|)^=@apa2M6X$kVjTLT)^j0eGqOb-P2=?}H%x#ZqJO+j=|^6kB4ZF&2#+JyqHb#w8bEum+UMf9)NJEY zyu5=+BN`wVm8FZYKD56JE2e5s0b+3Q0w)up!{iHalPiZ5nkLsi>YNPY^v~&y7)*-s zBSm?#Xv$jTGt^SNyR*i#5d0v89@&$&w$iH(QN$QOz)>cgG=@_*O0IOGnLMUEc}z(A z-HLQUWFd&C>ma4#e>93-IdmkXTdI@O23KvuCe#Bm= zba_+)QmT-GbJ}=yvD)K99BHM3c!hF~l~(n|*0y5sa?uj^eH& z%G977jHzMXQSJgz3A)ltT~c@g*Z@o&jotkk$hA}*1Av!bsK4<7_dltG9y^1fx)tp# zRd1(wRKN+IXDj-0vWCWxt8u3vZu5E0SCRG40tIb6h*0x-Q)!l}tC5OcBQsaWQYB+z z77rUzWITjnjmY-u8MSnWI6qD+y5fX2RQ2Hd&be+Nkr@nP9Y|%w-^V#A%$_@)co;*K zg6~65=!kCmVmM441tVZc9E))pvl(wMCeg*{g%fWg&TuKg7zNHne-P+y@=d_+^pFg2 z)1M2sB+=!++65F>;bZxYKqD=ni+Qs#aMEiy84vQU&h@!MVrCm#u8h&}QGF4RWxQW}0Gg&kQkOzfp;)X- zAmSFPL=#s!AZ|Q$)zLV9e-&pcq?$)T%WUJYF|Z(6TJSomF(0>rfk`qWRsZq-aCR<$ zQB~L8pCJ+C*s$y?7;>);V;d6B{&@@bJ+#B^D7W7wbgnEkbY-&14v) zEn0i8ZRxFT`C59RS4yKIBs>Eu22qHB7!>gg;iV`KHO%+>?{g*z);{h3ZyUm#ZbsN0fw?a+b7FH3c} z8lzIGRsI-Oa~Pp%6^9KHD~w$<`~*9?&%`o#1`)s9e<^a7{mC<53jLr)1^c zSXRx(lvdm~)R{X!jT6L2{`fBfiuoN;Kr=x`0hr97yZr|dr8}AR?5tT92z`K5W+Y=b zWOtuJKgifSn#L5_($zoAjjclF2hTAh-x$=9=mL6Z(Z^POu~%nSx@_y0b@|iC8E=@+ z@Ue_LfEWe%YH${326oX0_~&KK&8pu^a8fRmOv%iB6VPia23d8#B!b1tIs`tKwFIqS zu1mEf9`tX0m!pJ+b+B~5cFstROXN0PMbZqqqvWg_F<<`Qc`5%9cF$GiKOKM_@4e&r zEZJse98lX5m=}uFU` zW+)^2xI2B4=U%8@buo0#3WJjXGCQ(7oUr}oWD|n>gA2@%Xjz!)VWX(RTp=50%fBZ_ z;^3(~v7pZh_#AsK;$IJk<73zmA+L*UL6$ff)SiNZ__B->W*}E&bnvuOx8%}}(6F3v zVzeK+3u^-%%N3+IyD-GML_PR{Rh4#ZODJQ-!y+BKcr#P~gFmuUFX7~KV4qo+`DSJ5 zt!d_E2K$>u07DfzU0y(wf7Hl^vCEUv6h+%=L7@cJbj4x(7Qscr8_f$VYVP`%Hd#H)bT6;G_M@azZVc^*cbL?PJ?1sVo zo!yILlc#|i!%cW_)W7jU9TCrLL=E@Ny;SyR;p4c;=|B(iauAyZb1sj6mytC07zMM+ z5^4!uJU#7+V1{$XG?tMQLx$!e+pTOSce!BHwmY5DFrHs#Q!%3Mg8V#YZ&HYmk;#qw zQ6zPxC$hkel#SD%GC(T0h+re`FUTLMSAv4(iJED8!xd2!F7swM9?Vi3T8X0xs*110 zO4&0T5;77ttaL%|8TOtP-m}VkPWGPDd4}Tg3M4UQo1stclSpi!WOM3jRB_$4FLL%j zat6!jb2cob8J%yS84llgQ)2M7LcQ!9dt}{!R?-MTD{8iLx_NHasNxkF&4g(w%p55X z)~wWmOgJMdQuNN1u@&|S{PqksZU}G95)Bt4WV}lLng+3(urzvMHbw}KtT@Ds zf2JQY2G(+Ob->1O6F{qH+@^r-Qow3?I$7r-3B)!aY;uTd9UCXr4r}>}j7?PG?Ek#x zH1^VnZ$_Jz!cb{1qLcEP^4y4aMbzYRjI`#m&nV{CrkEOKtV?ICUWcQs#4?xM-D-^+ zv6g7bmwl1acvA%c#8wOz3Wej(RGA)IQK?~!H`Tgv1~1~z%=h9ngz=`OZk$0Q?Es^H z*qDOFgB(01|LotSte{A0>#wU!PSy$AOB8RsvN`vgB#}XAH^)+J zCLFcCZiMRdYgVeOr(#ol{ApcyNF~KfpQ4ic`h^;scHv3OjZ|s$4l~x$odh};xrGib ztxLgYpvcMV>jEmZ52G|WC8c(<0fBz*R-Ma7#wr)~UQOscIN>yP0Hux_KxMt8P!aFQQFt!ZNGQtfE#QggbK%(R^0(dSf5!TH4s@M=Eoa6IhV6h77J4nT__?!6*#}~XRWa9Q1v;pg=)1+cV@W{+k%n`#IGsx%%@H`@eI8%@ zk6hulS?q5<0nC?5$l}0cYhELYn?O*AW>O^xH7+ygrf|)y(G^RZNam{b73- zoL}6|F*w9U*$Y?~M?VmyN&&AG6h}Z%#1%tlu#i&!$^Nd;@BDe)2dP`XC4)!V^HiyS zv&&-#lPOA7JwfGRO5D*cOckd$Fuy124_h~R8;c8*PT6u+yEp*XGgTI^j{MFO-_rtl z0^J4J1g5`>6>=k?nLc$i)S3%$&(qS;uXhilR?*ZGGVvg{1eEnGE zr#3Ym`>_~sxH@j=iGr1+)ZfKWG^h&yYon_Va_b$&))qD*_T$ze;b|EfLYe<1Arlvf zCg?l}a8E{T#RxM6kb6G4V+%%9sDolFvb~u<+syDJ(=0OKwxk#{xKI%CpGXYrgR=&O z!zEr6mng5s#(~UM_o9&#giSCBfZ^HQZVw=-ECMR*f31u=zwT1GqTHW<&Q%a)yYIO^ z<-%}N76JP6Y*#M=u4t}}XD3c-EAuf9Y2fHRg{c=!8cH3hu6&h1=epxYcT@u0pM{#}>5;*fwrGWTzd%j6A!vb9wzOCw3edEx$?8b#)n80s)~NW_;v`9*Eq z&x{B9FnV_|>}f_AuU!o5Bd~(NRI|094keB;ix2A5J{lneeRHm1MV^!e*OBDlMq=er z8h_1LCJN>BMZTWyNba-}4j6$K#AqhAoNUb`a?V?2{N3h=t0+JiBstk|6{BuCCss<4 zgtMB(Qe!4bg}eERG(;&1Y(Ihrs04~`pacyNuaouawv{zRD^Uf>q(Q{-2Vclonn&8m zOG2@JU0=j5@O@HZmJ%%VLp@ar8@>J;&cy$LC(*p34A=bUwZ`*|pV3#-jbJcS?&@As zZt)Q-@m(SiCDdKM$V~?I4Ytb`<1rY6_?NEw=Mn$t*h8sreY>+z-KT!;?s^re4lj!t z%~f6N4EQr!Wa*yi>1x3mBSK+Navh?DGUl3&a5{lOv&f%-HB9n~FuRm1dUI}pYHG7? ze#!ayQu>7vHUDsTdLr^eZ(K=I;B}Ax2)$+)v;-1!pNaUhxK*#7^0$SHod-*V(V#V_ z5x8VA%(C$^cSPAqERb5>%41S?F{l3)B3%raYY?8Ql?Zu34_Xdl8^vP?%CLvY9TM0g z*K?I`znUQ4W-?}%hs_>`GgLg|Y5+CY&-eF21T425F)7q3k_&hxe~Xydt(=_C(G*74 zkWtOoyjpgtmYQ>nAQX|+R9GpjO5V#$Hw~^Z;D=&M4J|e;g(5qRb;lJ|T$FJsRd~p( z}EJ+~dm};A_>TjIb+2AVE0){ydEMo8rT_rE&N)L803@r8E4$ z|IbVqT2|X6*j1Qb0~B#cBLb^;^kH@oaALCFmIz*ZiVFj;<}J+==r`wfKuFtY;*T$5 z3^=f0)&GDo6%*!OOv9~?^>8ca+U#zANX&cH(-!ZS)R9)r+C(&I_qQTAAHYnSTp7 zX}YrRm72>;Pj+5tNYJV;=|y&-*dh&GQbqReYPwc3QEY%QF#H|5n#sXP^?T10oCepO zgdrQ1-AyWghfc1j_$PAFMtKs=Sh%w-fg@O|F3uQpy7c!?%sZ15jEkERRpmEssw|p!Du5 zG$}MGGzQ0@HqTccU^rhr7Yyn8}G`t(4eHz&VE`<<(!u(zZW#*jhfp^Bv>){JY zZK!5UKT%Ch|7h2B*2Db?m9gCI=LJT=8m%2EyS2vIL97G@_LJU%7o~BU7}O9o(DXoh zK`OOitq;-`$L*jY20A?%vMSO$FD}BllWXgM^@2zvuTKoayY)Iw&-J!@aAl1v5`631 zu%z%4pNhsBt$v-!)*6G@-9~Wp9qG@i+enbMvmY--yp%FojTEqIh-R~H2kmbfTxr>J zM%bTpzSD6)J#wZIRP#uhe3|K_yIZ{ZmZ{d$Mx|A!*x?|!cXo)p9}b61m4wxtvyMp27^O-h0-p-D{Vk)bH|h?0RAhr8 z_U#iSWtPop@sYf&EY-QHR+$ zX6V^j^8dVcd*d)wf?wp!a+U|P$Yaetg?Q+xj9*I((+z~|#PX!f>etdVt-`Vl*W+@* zOaW^Qc7-j@wZHjmE^gH=qEy;wWL1yu1-%igU1Np+wbnHH z#OemijG%nYYCYzQ*ouH_Vep2m*Lo+ZjhP{x+W%6B)G}vu-eV`GW>QXfWzd&w5g8Qi zR*^0TvxG51tV>tQzQJ^jrub6-eh8x9=<5BWDZ?PtX(knpC9}%}G}9K7JarQY&(yH) z!TY&eTDZ>)ZWRJPfN6b5-2S(;&Uw0zp`2?pXLA(AwJes$++hN*0u<)Tz8uvF5+Ei_ z+5%o>UhN$6=}bD)6I4SSQo7ejrd;D=^1GdE8FpPe`;D2-weY4x{-&J}IaR;{^X)F@z$I%=k30tBp?dwCbMSGc04zpwXABSiK_7{ZZQwQFb9)eNdH zEz)w`l#HXNStJ$$$fxbSS8R7J5=_6wK5o?)383nzR;HpSuCpFBL*p&n&) z+2G(Ui9UGoXZJotK7&3^wwq{hz=<`FYmrNy-Z58rF$HMZi%{1EhfxVs=PHnByG;7L7G;%Lk z=|>kRq?V9S<2MJD*6rl3RCZi!h@SN8;u`$=r8Z)IpUy5L`C^}b(dw{&V}pCA0v8+U zV3U8dX1K{|mmDl9%&_JyqvX&v-_N${wV{J@XMHJj&20l+FCB0V;S=Wxf{is}f+N3w zX3fmTga)`R8QtSAzA>j}Dk~{mb-F6_=PZ89|0lrj)ISd>Eo7^8D~BOUt#FHp=v!Kt zEX7^h@iz!cminELzoi@%%4kp_#Ovt~HnA7wOLpjU@au^MS0A|;++a%`k@3Mlshu6< z0yMJ~GRQ4|{S=!qI0{6Igc;slFK_B(&vbIwm2$S=j#e1opp# z{gEp<$72kZN{jP0BR(mUaJW~dDav#^yQ?VN5JG~x)=1(!e~m5_Ggoawi3+0U1doIS zvn8P0d}hd^CGV= zyfH9B>}H?oPb!&Q;QUgzYXqiC2)ffW__^ya&H#t&HF-7t9{%91pRK9NXah*!FhGSoPnhH;wn$^2F0J zYq2x}rr5@2t=l{_lTK2C0s0c_3E@QWidpy}-UbRk{uCjck+POQ{2LSZWPUTxt^3#z zAZftJ}5KKTKlyig@Xj_ES_m2mR z9Z%2=Z)UDheHJSL-S@kg_T#p3Ylq!`ok^nll%#CV`XYu<5o>IAg1~WRxNhOBNB3a6 z0sX}5$`UvDLl;fOEMfK`gf6-xKUjRin)f}Kci0etz{j3`b9xxep6;7xyLwo&E zdH{|B+QCtzb|^!)h5&q7PN+GRs%y6DT1jgCWp4hLNm0T@^q4FzAB0DRcp%()ne`WU zn^H-inlp(QWFkTpeLJ%ggKsgs$d41wNtd!rU3X6=xD>yW{b?-C;>yCYS7uRmIk+N@ zWMA|_srBm*?_>K8PCls2uGCq(*qiEqA<8*- zBOOTJ+0jG(`<_Z3pdZ|Ys>Hy%-#?$e9`aw0UEr%N@drYU!}`!01rMB|4rdKqSfp17|9k$E_Qat zfGfxuvp^a|!;wl8Q}g?3x)5Nc#qU^k{nSXW|L_y0DWRwP#@f+?-2C>x=)!FqTmV&j z=P%sB6ClrP;Ov#B=w|z(wG7*#`#1oa9=6jf{pTv2YbGpVpc%VwdKCk)|Gr-)i)ddr z>xCE?q)>cOHgZ)c-teRbE84|Qug8T>atwx@OxFwI+l$?TI^n|ph<@{d7IW=%=e}o8 zpTIku?+~I3*SMN|ueq6e2D3C?o4hIIp62ZEoR&Zs`P1K8=6`Xt{}Y|&Ph|Sfyo`x` zKC;}kg9Ed2`0Y0f_f}7HsB+GplzeX?p>UB#hdR)7AKm4F-y|d}E&jx++YHz}#3=j8 z>GY_EO#f`6c7Cx!mH^^Ks`V6P{iV*3Dz3FV`e=s|JFEV((OTYWTfg3Dap^SEg&Z`# z!ON$H%-u$Ki=nB1Ol6-Mu|KSHQ6*VN!N`+3`Q(cfdlWb1_@VP5wLXEG{tQmgF4paw zi6IyLSOnOIYr&sVA22K0cs#HFDIWs;EOld!p9UnYx?vR9+1GwPhi95|xFl)V1`gCb z{Ns+7UP%AH;u-S9HNojvD>Txj>>l^99$F%ZV()e?u+2$9L1cz8+9V|OMR3*d>#pyg zWk*w4oD3qdy-Fm~xuYAZ%G00%+JA-&Kh?)K0GO&ZQ$n;UV5*LXu3acpiacb`nT2A^ z#;*DZg0u7y&51qp5VE$JRML|R)3%v(w66-z>CH=PH+X9Ha}s_0HD7XVcdi|;+kz)n zi!{VUCYn_-&bF(yINU8ZV#MZN#FK&8Tz5}Ca5G^^7h=NNue;$r%`ZM*Dpd5N*|TTi z;RWD~EK!=pn-LgFvw4%G&{)5SK9z%r}( z0K+%?DqS*)^MnQFh+R4DoxqK-%|zjwmtBV_8oYCL&1#vNH5r!cI#f-+)#7K}dU{&+ zG#G{F(rD9*#-4X^-A3JE>nSXF$`3QChKq3whGJvQy?{a_G8?i7s%eJeekh8Y32l{r z0pU3@@B$uE6uC?Xv4AAHFadEe;KzR>lJb!>%y%~%(ET6b**9G6`jf?XJnH4Ca6E7% zT)Z0jxlMhfreG+{pyT=y{9snyM$|~58e^=}moYnyg7XpG|Ub_HL5n&SW z$o;E_4xv<#NCP90Sq#+J`_(exk2CTt&UZ!ER(*P<(W?8MNkc=+tMfb)E5_dr7g)An z%bTQU@mVSFNz}Kab0PL)%q5^ zjUZi)$A7P&RVqR2S|7_@w>}jvtkbe|63BHGC6-lIyw*y*O|uke(4C@-!UmDJK?)41H{6>A%VSUF*9tJ4xmrtJHlCTcAAQQqPWWk6b!>mImbCO-VHj(n z5waq33lAXs7|Ynh(&S_REt5uh@l%EzW_^zS#jm3KMXf>A+ItJBu)~-XDP@;npnJp4 zw$(1TLmPwLW8f!-9n$XUv%$%aTH#Zt5o#?7+@nqEU7?l=qIc<_bT_JF7+6wvZ(vmy zyTQG>5!Cg%5fK=8O%JLhbtmozb@eK@sH%dzqrbsS>vknIW|zT z?p{;lI9C>u5@jZ2ky4Hme+%&oR1@7klS^7ctGdmAln|0vAsnI7Hat6~FewCc%q`^*shU*~zPnX=C5EXy zd|6-zKBI$JYtX0;y&rMkk959b%L~Y46v*Mn*vX4R3#brqEf1OH%q*MdME`Qs>;$yq zk37YZG&{O#5jV*TpuETz`KsWEi;sI=Vdf?A716cWKAnsQ+-v8Jy~lq9U#v>b#x(r$ zKbzxd1KnCv3ms59Bi9!hz}<2D&B*GsCeg9$i3Bf|#`)1^zweocc%ulAx5qjvb|~!C z(|C9#o`Q{r7Jnq0iHRKHAPx#-fYL{nRezOeOZ{%vYgM;ZKa8;GbCtUD%BtgBJFbBH zS<9P#!zpv;)Q8wPIDwbN1T`?G749MX8noieL4oBZ2z;EM(HzyEE5fM3To5?mXZGn(!bbUKM zr*fR%_Z45Q4kcc#)~;&RU3R#sYT18bV&b`>XFNtK{fhC)L*8FGrnB+6GPamP6% zI{u2?^0E2m*tR4c{6^+vgjue`q-D2!l2M)*I-or5UdUQ?ZfWcd`}k{i%fSn8NKCzg zBwZOHRsfZ?=3;EIxAysr6s5%nYBE!HfK7Z+&Vm%XPDN^#NN&@Zb4{Rs)1=rnlVYR# zY#0@wJ?uAY##6>n*={SWN9FJjPrFLLkVtt-o)O{>pGWs&IYAAZHI%z0MW{lVXS0+f zF|fornsTBoZ^V55&)4(c7vM5C*$k#QKnQ zVmJ-(37K(c$dzviilB~Ar%|~)F}O{xYPQV!H%%K#%a(_;7b;21p3HE@O;w|!B|l^P zsI@A~TD9!)`NUYOX7uSkpxB*_$R87lJG0}*-?YM~?C1&qtgO_=**U3~JNwoQ@Sntg z=e)O7G7d-PhCz(n#vjR28QT)wQ&f90&t11S@Uq2QPb`=5kr*w*)qgTj$KH#r__IJr zwKOcaN>IiUCL-FLRVH^pMe6nVPoIKG*o}W#$OEdUrYz@cOW=#_bBh@pqnxW%IQtGC zNX}?rxr(4V(3MKv6+oykRLD5oeXkTTEVTGgJ^% z&*p^+xA`H|V_^N#;wIy6VKWCKTMD;va#{ApUpCWbxxy~3YpHpICDOdk06G*NsFpm1 zPJ*wkpa{d>&{q%XbYCco%MHjQ(#qMkR=c9le1)vCLnRL`qD$przQ?;fy+)gz8s?lghICJp^s;f6O$jf&Tqb1lRbdE}W(A?4T| zpHMPTbb|O+jBDARG`K&mT$fwI$Ext2M(1*5x11fi;MzhmIJw_5H^}8-eyv@#SnOKn zND)mrLb}R~45kSI3Gbr#1B7r$kvrzoH7+wXrmJH>>WoM(JH6bI2W4bx7K}vX@N~v6 z+m9ez?0mYS2d|<=A1R>10vI1{2);V6KeouSgOES;(8Be|{jz+V>qY{Ci z6XfGm`J>u>0bh!B)sN6|lGe&Mm*y<~cb;*2ghS#a;AOy}S| zZdb85D9MNE;1s{4%R^!;V$^h)T(C;EF)E}QgWqZOjT$8Xs*A|!oYA^J6?efl(PUtgr{HuK-nE`}nJ+8NU%m8(`@o6>b;5Xw6eQ$fZ=N7MQ;x*o<)o zuBhG6PVHsMlly*^EMU`kQci^SPRYefg}=r5J|MVY4H8&vWyAb5^Y zB=8_3wJ+SCf@EiiX}hOZmJ&xu9^KC|s=Ym=wcsh$GRe+3d(x=*+^7D>{kVyHSQnVy z)#AbB1WJ^sr8s!7!BdwKh!oj4b$81g9hu^hk6OxTDJrbqvR2^-*s6d4^Sg2y&RyB{a0^B66HaO~R(~*fD3%T4AF-=c{6JR^8iD z3MhNBFT&-kX(_VvESTaQ@CIy^{@Gtn76K-eRyE7e}r)l@gb63{Msyh`j+GukDS>mhw{yXJAVVi{g#o4&+cjVGi%iB zzR9snWa*J9;~j$FxVC#~ibu!rco7S9?Q&(q#}4=SSrOmT)Pa%J;h|v^s(0|}Tsmbx zzJ$|#9imdV7joUnX`m*j%mDVHWoQR5j1pj7uF0W{OS%y46OTXs82Dh^di=zy`#l_W z_(4t1swHv`IfC}J{~9^dOn*bc4}Vb89|$c9!vQaAz;IDO8IPkuj6b}w`0&1%4m^VF zg8lw6~=kKD)gwY1)jZ zy)6wjAD*|RJU*=YOn!~ngRAA3ZEhgaydYYx11`|1mWN;k1A$rqs{-fOmzW#yIJqMo zCdmy55>&XcW2bf!CI;U7?-#(`36VZW+odGq35ffuVo6ED`qne(J;UC!f~WR^@bEkD z=E}dh&>Ld;EIjv!!3^?-K>k!fUsigog9=DjbST!j6z!EEWXpM!`0QoYVBK4BQ&wlD;j1a7HGCMFB)#$ z1_7gIsJ-rUeTLbop9;aupnF4X)tjxc?!HqqB>$`N_}s<4$K%#6Z#>vnVus_b8QyTn zp^^IjQ)9BiwYqd4o=`FkiJlq~MzMQTzHyE>Dju^rZD7(P!mRNY?e_+SsicE1XC3;2 zXS&ed^z;~Y?^AHc=F@u=xNSZ$s2_~9zm0utUSD1rM|Cd{yvRcmgw*Yr>qI8G7m^tV z`Avb`dgyL{?{Vl&cgba>2LVd(8DNAsbM05K5hD-NM5dSk($G@6LFcs+L!;CV; zsmV0{1)JavfN>^lNdAp9*%a!E&zstqRci^6#reW+I^rITcD7}QVQN`a;e4@Wf2wns zurrrWDQIDyB$5p|$SeEP&AmBwCVi@+Dh!utHv_};FF}DioYj-|GuOYu#vR!EjOSr( zvf>FKVW^N;yfh1RoWXh8TEaO$j7|gn^wl-&VP3B9qe~^t741RR!?#(+c&MT2W-xHJczdq?1S9ip-W9eJFl{p~3Xm^olW}Y|$qE(2-z$ z6vH+h$g|4euZ9Lfg#$RZF&Gp^oy{sMx)#~b#j^@r2T$N{`WRgf@tK*=@6K$h_A(n* z@Q*WhG^cA;hIGy9h0|(|9sC=WFC;&>lg`X$Sz}TtZvFm1sUaFNHg|PqYJ{glq4O0G zI{+?71^RxbeSDW9*@0$8(MW+by#N5{5W-vupKaL;gxc5L#}&qZZ#U~x@1lLdxqJFm zGx$itosU)-4WlTjogfMof|gUFi_fU6FkFJZp%K%IJ7VUoa*QiU0%L&|LZSldgsOt@+Q+3gE9W$6VfI-y$bA6aINtaI@Q1e0{=O+?qk_JLqNx ztx}rf9r+W|rT$Hx&_7)YS%S(QW;#*pe337!ST#gY+hgoo{x)Y>v%)1C?LOPmmAo23 z9Pv>waI*tkf#hEf$UjQ98PX6|6~ z!NB+_Q={)>z&)f(q*V(;&RCD%;O`(gz8b#g;9%$IpAqGm$~m-R)R+lj)KAWcXgWs9 z>Qnr}tm<;6e*sn&Yc1n!d0BjR6|1%w@%s59U*W5Quj{YP?^jb4ot5L`aw{)=dHm)H z@voNoTfUZ2;^*=!4s5jHS8R6w4W&7>7kL18!8qF;-1#$2oec!Va*`6G{;E|KQ>F@J z(}r||y!JUoG(k(2Pr4;!B-K6eNf&`1EkkuoK7tPUH&~U>5`GM?Qg8iDURCa1E>h)u z@Qh189u*qy?r{~RVLYmOF@W{y)P#dOSbx&E!)`JlOB1r@KbO(<${h1DCtFFm!KcAb z-pNq|JmZELkJA==tmPXySyg>(^xenQk%DM+>_x6K?HW_&Kjq$&!hKJ95KtB>k@c6M zXrQd_#75+!MrJz~?teEGACW)0dT2g!z5}Fe$05G{7;5Y~>#^0=V}bm7u2g@eCJ!6t zQUoT}uf_6No+|gZ$LrSZVhJZ%NeD`BTY2>!_K{w`>LPtLk7_JA$4f2}&h<(NHq7K& z^2Ap@N3xr&mDyjwopJu?yARf$54LfG2Svx;XM3sPpDpiRcVnV1_ZocFgj-VAh2k^U zW#MmjAr(g7#pUMuvc!tw3GgdvKw#)$;}BWb*tGoNklAE}D?(O!*{dsSOducpzK%7v z>n?4^Y(UWk?OKCMRA%~|m9>Y=WvscnTgy(2=*O0$dEfk^Z?ykaR!l<4OAUB8#!K?( zqb#{Fd!js%{ZQg-s8MZUYt`WKc0Bt>tVHav!ds%9eYlK1wW;N;Gol}-B3BTf{q53t zAQpb`(fN0u5=5I zu7r_61R9zzMv9p%N5d?-Z6*L-{1n9#{e-?4S=0f>9?PM-bT35U)>VVKY(XZGHa-ng z$YiBiYD#s_9q7Bs`!>VEcdPd;My>cZ^Bv01(?`1(+3teS!6yJc$yXyD;v4FW-GkQx zUbidMjpWPW%X#f(ksIbB-w$wi<(=!6gWcTZZ!l@}a@LGWp5BKk$VbYz>@Z#eVrE(3 z1b*fqLKWfyjA^;7f{6zkM>>7jiB4;t zFd3kh+NQS47%;p%QfC0OfAQ1{Ft!`l^10e?#l9@^=3v>&1#dZf@rp@rmK#YwFiCo{ zO`L)&?UILzOXhe^I5ZdN5)udz2BP8gTfb<=FqpTx!F6_sGgfGlp33#R8>_AQ9U@Xy z7q4w)Zv)Mnz^cx?H3X}33aIGy*7J4JFxy(r9o6xS#Ng*C+Sp8JmV_CyXK}icsQ}%H zh3LeP>jfgQ%_bqu48`*wBK*JamX12&p-}9-(&7(h57@%x?r-r{lgV?-N1RoNy@0;W z`Yh#H3{^SN{% zt$s;n7K@i~d4jw=Wbh&Oh#t$#Qo~Ve(3APH&d`vjjD3ZW#b$(4Lmn7P5HV5#-WsQzeLx#L8j+a zcMs&>dR?`Uq^AkrqJg*WRJ$p6YiD0;JRN}O6IC1V5l@@U5vg#?yO&IgXHAL+Ij-vp z+i7D;coh~tUlxCpT25w6(ta#bNM^QHz4t`;8O7+2rm|MYj#6T@=FTmLb2aMLm95{; zBXaIs;Y6$jDz=u;A)l z(gd(Ef_tqI<=^jNTl(_of0nW*uMpw z<2mo*tD2ipDE0}vVOifFlNT%5c&Q2+1XrG)jJjSlg&JK03S$3U!`JO^0M-cfKqiDc zBq@}eGt_Euh10)@BRP=A6Dl&gHpo2boZatGic75}Y)3o##pg!v%<7p} zYsAdZmBk*=aR$H(s5k7`m6J9EC|zI{sgIob9ds6!-cFV|X;Bu*aCLHX9($(~&uROT zwd4rl*<3UE(R6bV z@)N04A`FFL+GX<6bBey7^ur-V~rC&5_Z;HEj8*FdVF4oAER4>%7kSj$uzVp1{ z$3BJJE+Mlto*R8G$e^)ZrkJsSK&-l{AYSk7We6*rqo5^u94@x%x&#SdT!XjpDXLVS z21kM3yzbBY5~hd|+|`pBUC&O?X5u(VsyTIFeTzG%N~dtSKI8ynIF;h9ybb-{E`HT|v_dSQXX_m^F&TZF1pKQo)0ID0a<}KEO61exh;{QiZ4qFD zlsh>X4q`0ud5(1!n44aZV1JN1lQ`=KVe?K5oIKeGKz<%rtix0+FO^MdmAXDYVh)q8 zcnOjQZ{qhj3x9~@pkv>7$(&Gp*hA!yfXNjpGtuv@C9<$KE04Qs$)=+&v%68{u=hxd zAPZbJ%~OrlcaSH1xfi|6gvScy+oYaBej@9Pw8Bo^4vOh{EONi}0EX$R zM<$6xh5r_L5YxLP00Duhae_|``*dg0QIyl@+A4w3K`5fCVD;4u{%hRnWZGCS%vUcu zOa0x4A-nm$=R3?ypMQ1m5zx&*(R;PjF!L9l{O4bhzmRXho?!deCYK7vC}r zIG|~8y0XrQZE~`O#7y;w@|j?|0hCNAU=Xdv4Xqc;^DT+kW#3QJVCVAGy3YR; zpd)pi!!R{Qvqi9>=|}1mrV^D=#LUi2?v(F%7rmId9lG;T|x)5r1=egW!D zBbXedV!9>=|9aiVn*6URvR^DS18BC}YOU~D)=udf^L`jk88aCybzo?`Ug&;C$P_O z5j429n4~zC!A@beo_d@ny`L!5;0hD8K65FVCG=#;KSUlpOSJ2ER?k0RBp@Ui)?4<` z!z16prhr@ZIUr6rUOypER5Q|P=qDe@v`@n9Gv)v-%x=Bm-BhO)PT=p>-OwC+ zlYVuZnr^4L7O718r^;fl(UD{5!ggVKe2F&rO1aNPzjpD8nR#m1TcVF07KTmNUCCxg zOM&yN<$iV}tz6hY;Cq&N))!k-<{DU}8gpH^0b1w0_{8nPUyM++ub-2BbRU>7WCf!^ zOvH{qyo@~qbfaNgVAynmvxI8X*=5QB<01EwR1#&dVMYE!s)-vYK_9gKsJ@^*=imBr z6u0qlr?1gmhf?SPW@5YHvAv`FNTfKE$o)imA#4b(U0JQI3N=}}U+=NzRI}Yse}u$# zyk0|$06bJh7xDcR-@J~n>i<9v?A8yC_SIZw*FG=LH@>C*$mb>d9msq)6F>-&(fXIo|{gIyVDzct8M{hw}C-`W*>PVeHZKMY6ndasDjQwPVkl%B2^*mH-g>l96_e>Mh=(u!!`OwkpIP_FiPFLVphLo3+{vtx%M5))F4Jhr=C3=?M64#NZs zk67W=#cQm2ab@#F6>)IPA>7|Wy_#POcQ{!`59;Qk4!*>l^R&z5oY?V}J%Q-E{raB_ zHeRC!znj(nWW$X#752|ctGbHr8B`NUz0lbZu0El*8+chE30fL?k9px?(_+bq!@L^He@SV{a;Vf&x8jtFn$$#=Qn>TaB zio(&#_%loIf)LbY(4FBv^vK%TxqfcisbN258g%FC`h%$+0$pEgI0=>O91!|Ed{0+> z*~Ny3S#xiMUnQ>wnnvpJ>esfN#FGZQ!x*fNFow)fSpe_e5GAVbAP}k%;cF(vJC5N) z+QcIPPEW~mP@%lJIgc-e3bi~od?%PM3}PxE%#dW2B&aN6Av#a8=DpZmfwAV5fn6fW zDr2_|S5Lr1Se4ZqCB9%%xLHS6uN8~o8na>JbRc114MSg^xb!ArfbgZ9I+g-}L5KFR zf2VnI@Vbvfih!h+5%M=Pl9xb$$xPlWM~bwa+L4atrO0@d#Ih=d=Ta)=iF|b3kU5c; zJ(#Q|gGjmmc4FO)`SENSHGe>WwS-riGr_YTN+O(~F=dBb6{#1hEa|K+MLQcBI9^7J z1O~j$iN7wCB)@204FQZF0TPu~78EI)20(-=hCt}B!3xx9s7Zs&?*E%$Lr_@Ix``h% zCQ7U+75^}#Zsm(RlY`d0LF5y1Cqn0glY7Y>WK{t;SCAxBd?%LHdHZ-pU{(<%Wz~7- z^@+h>&;_ZS__%o!i3Mkf5mhE@-hb;Wwg*K-;nqBP4x!R^9)PX7WiZ{v6YawFMr|~O z1tw;PF|p8NMHIZ(1U+f+5wuhu=gF%bolj8NFhT_(=P99oJ;4ik(Jn|?PumpOA_J#M z<${pB6Lcbn*q`lxAsOPcH1=xJ;u%|$dg14_Cli5QH$WEh49b?F{Js7n%o zmDmlItPJ*3KHDeb0FLgc5WRavp~h&z2gt+@ai61y|o>=+kA zMjC6iyz>%+SDuWX<7~a-XeuclAh?5q+fJ>~z1S11c~=u$TEDY5N$DN{K^`zYZmdGRv?kBo4h-_YPvz>NaKe?8FRnRtrjzsR5;SklTU3Xa26dv3~)V8{FyGDUS7j3^C@CpbYx27y1-JYB?U2KoZ!TdO z!tUAMQG)LWXV@F+gWv2U{-YuIvqWeve8|(o16C z)|LQ@> z6oQTm@dlMSoe&}>^8kgoSmZarH~b(tRynIU#4Lxz_KF=#4&Ml)WZ&OmyVA_-+NC$r zIgjIZ3{KH)w`#`c;0o#e>pELP{+*pmJ%EQ?48V5dFQtTEGqg{npPj1D#az!=OsCJT zqCV3fwN2^+LM|~O%ze&rgnT1nfkJ3dA8SKwBJ<1tbCGXUV;~Q8F3|J5y#jvBLT7HK5x=$M>a@&rzEht;iL2<4-mG z(iEd_X>1=eV_S1Bd^^jT`6qTbo@tWS90CQ5IpGd&PLDq>{#m$#W>?0x74ING;)-?i zQ9_DL_~h7@;vLq_FPQsaSmd5nq(iSW!qsTu*;|LdQoL$qdo&UbJEE9uK+2LBwUSoYv9N+E^g)vH{*PS zdXV#fjhLE-J;c1!u=!Y0XQ*U?1UsC^4((@UjxXU#2qb(h}>d(+hU zW_W+TgspdLI&%y{dWgyas-1R&!C88)roXveJ>rX4(u`j@wl6h&Bdf`ev1eiVV>)oI z!En!?f2^gS9OpM(`!INqe?F{`Ah%w328JI*W~S{qSfC?t!5co_mqIyT>#hDNMyE$JXMAvp>}Kp% zgw#gGvujcBwss^c=ckUhU$hzyFccrqC1h5c^NckP;8y=9^vTR-Z{2GrX4a)Jt%ojp zH&py`O+P0@w{(u3b@|s4f&O;l8=n-PSn8`eGy2ic2ZGesy8cpM=ZNS>*$=R{Ec5sJ zx-2pN6Mu@$yks}&@EesmT`}28H-N8O_-YK~*zw0?`GGaE*zUw$FN^=VnQyf-%PE@J z&HN{+yP_*cV26MmPjJ6>acq#U8{My^Qg|#6|NBOp!W-zi$mJ+NMX&bvMVqGoi#oSn z>NPS{2YFMicJagQyjb;p66}US@g3Z9*~SL48wS|1HGJ>nyS@0MS>Hit6GO5+F>nj#lsEW~m}AFf84oX| zrIYOFNBtkj2v+UZFsmK|2swLEr)tRv#*i+4&&!#qXE-`c_{%O_iV0T|~ z7eCnQG$LtRo&D|ZOU%n+pJ?;WR$L`u;dsQD>f%#ji=bmpe0o(pc&8{kOA~x8T_oqY z$Pnz_F$QAMc{WLyDl;XGms-vyeThB=Yt+ETs|%w}63S3H?DN;WILJ4J&3 zP-d)Lrxo6=xvPW}#CXfVMB`g$`AdeOXdkD%MkeNvL70KNiS$R^>ST~eQf5goIfCl2n>Nk*&oX6xozqG z)M%s_b&B0MZm2!-wVLs@&x^DGK9Rn)58`LFf9-E1 z?w#uFA8qwF)azaKE>*o&-CTVFRDTyJU(GB#J}!?Q$YPYTQ=9r9sb5_)r5n(AX&@G@ zqsquQg*6-CuPZ|XQwtjyLFY1BV6EiMoJUX-p6zae0i7n8rl<+4XD2(e8x8mkrYXV3 zKWp+HomiHyi|)%4e-KAJzCK7`n)1$IbYDNV%;hhXwKtPU zr}PccXiZRi=H5G^_s9q-u1v#+AL@j(uO!?FE3C%S*p{#5OQgM5*z zIo|v)jiYlVS`-XFR(sMPv=*!n`(HtSJ$u*Vh)toNWZ_)T!Zv(T7qF%3q6K&06(qgM z4DEkIjx*;Zmhbp;LUuf@OlN*!@1wK&k5E+1&{{aUcI0W)UmDw>t$StBmr}-9A3ZR^ zllqZ)gyGu1hrtUjP|o7VLP8+75n=9V%haGUMYB2uapxK1s4M_PmW$w_poTm0zfSU^ z`-h0>kBqg1Vw*yogt`Lus|&;oiZ-|grI*Q2ZYADg?CGsQJ{gK)>k%n~ln`?I9p0DX z<3=~neDP=O14FIEpU40dH>Rw*-|{NCrwEJP%Igts8b|aE#XbzS9SpL|xNc|7-JCq1 zaVNB0J}MFViVt2p9uS85o#NHAMyuq!G@e|iF9{$cG7RS9cu~^p{eu)_J*zD@9M;L= zG5Vf^XJg#U58jwqQSjxfK-}dA_Q`=n(MpD%X*J}i2LIo! zq2;7&S1V8z*Q-B6*VYnB6(}?Dk>=6Mkj4k4}H2BK{bQ6s2R6GnO-w; zy*x$*9UDqSGJWR!M!1yy^t8Trwo7Ckj;_r$V5y>xe^8Mow<_nrCvG-MR3;~#Nw$M@ zC-<&q1?iJNgABZJDN?Tm{;EN}$0g1l6LpxnXJk6LX<@p8Ua8H%ITLzi2~G)|h8l~g zTt$U}K&55&j_roISCP(uUZqu-{+W{b_aJtA=GEgpU{5d^1hZ!2Dg$KagI*U@35vdd zuRy1vS6P!?2>yPC@x3xkpVHTBq5(jdO^u(~(mXF)@>Z{t@B(Q%3I8)a)b*KJ-#ONe zcA_;QLoLWKrJrdmt^2H8VtG~0@5$;8u)8y4NRwS+y|>;;Iu zG{y+Vxv5R%@jGQWpP669jF?^1e-3g3)PM7vY%r}E$Z76u_j@Ym733y{?ey{!lTni& z+wFYrd^0a(#}3&sMAZPF!;jgqes-+Jm;8eoXD*hKkICYXXJ1Z^Jwx~5(w>tJ%|94; zy!}~UtU2 zc_k22t@9&OUO$S<=~Y}ZNsZ|ele_ppcgSYLtT?T9&YBB`y&}Ht79n)4Kv~U6K20J! z)ml^S!TiPl3(Wn!Oe|~1O3fB4gF@NXRY29W5T~JIXuHsW&7!Tyf zR&V);mSr7B1v}mzTdlsa^=_SQ01dTJ@vd{F2Uc%BOvu7;qR37yD=Hi6F{wPszzU-swO|01u;*|~fT#&|H|^HyOX z-zvn$K}gBDR)H2H6TB26RuVK8(WKzc{5%!ataL>L&OG0DG^FB)JE@dG6?egNr}#H1 zWKDfn3E9O@YG@kSi{JN4t%6-jTSba#TdjgOt%B`V!G`B*`8Ub7rtaeBd$01-zLv_S zzru+|tDQt|^ELHk$Qswq?(9ic`&<02v8{qmYuwsN)_reeSp^-G-%QTkodoQHpX}0C zyA!f1UoEx9>*L;6{QO27es-+}>}^WGU2_G8DZYKX;+k!1{2^6(sMH$w8bux?>i&a- zt|#3GR70&Bl>E3dujOYqOa0^4>t(fR)pLISkwVa0yVsI+2Y+lU@1V-JN#X##fl!eJ zdud7_--K9|?-&^ParXB7Se0rU=?+{PJ9MeWVlSmkCZI~G?%jLFB=cii)q723spY%_ z0A6f=UaR-o*4P7H&hNcLaqpL&u-n(#a}ayr)OC{~OE89NFi{KD ziUevaDXUHh%YwvI=I1;Y@CAHUVM)GKFqJ(Apiza=wd)7lja8+xtB&YL<5_irZ0g2o zFYxj%@N8snSHXKE?^*)@UFx!~7ONmTpWp)opL}0&tM$|AzS&mSCZ$?G$?AGhK`Ong zRc~NX!8(2IN>#By{~0Z*hyfrt&^P!{Xjo&DUm7Q z7zMnVp)fU|>ja#moq0*43VGxo4m*$OgP;}m9%-7mr`c$IFp zD%XRp*4VchlsBP;c0hXB8nC zB!(%uy?5Vk!%*NQJ4r-AyET~iZuNun?^)wF^08~@BrEbBkiDULc2k~M%=-iykUkV# zVg#b6)i9UckjOErx}Ou3Y0ZdHZ*18ef@s=tUq0=gFz$mkEvXcFh4 zlCBpNT?O``o)YRgxMNhI6!P2;jpg@Mx4VW&z z7lh4FKEGZ`6d`q7aTS!|F65d-(@i3kuX;Lo0zRz9nnw3bKjwZ}1#USehnQ*?XjZVF zlqcb!bYa)~{M_4S*it1fImBgPSL99}=v z>o&1L4JgW}Qlfj1?5vQ1wSlJ*mRWA9hOS1=Z0Y5K+`&-C&@2jR!@Qb_l2=aw$HH8pB zk){vS+zLU#f@|eIy{sd0Go`3U+&82c3WcYtP-vwU$k&Igu_&fiCH_OlwHnadywcr0 zW-hQA4686()8b}p?8{ccC%hqpP?f2{8pl;eib51QAe87(A!>h)I#(}du*ZqwNVds> zpP7F58h6)PQ32b_Dq&-!u1)8k&r7KhXtuan+2Cq=-0Iq;ioApfiYA|u^Mb@P?j#M} z8c1i#VW^oxhyyK!#-?BHLeQv$&y9m`K(RSeMsvitNDhC>E5r8`L1eqHJ&UFyP9Z6k zLLhvF!n$`=I?R~(K>_t@r3wr3kv z@b(9Wp$c9lRd78ae@BZ<4%vA)C7rNXI^oa$LE@inKb-RPLTkK{FF5FY5{0m^C7cK# z1WqgFFZ*27zFc)s4qqiGf!PR((*|GQ_1U!RK!a%kqX8Bv;zH?z<%xhvzzhM&%pr@ydPQ7l)+SQbi;|r%k4YV+X0Dj2nZx;pCX`O;zswoZ#RSxL6NK6hd6SK zH21!$LD&T{wBy@${6P|CX&&u znf&p>yk!0k0mo5*>-xw@L9}5HC80ERouVCGYBIRcb&|P30w^jg??iwpuFyf}cO9oh zGoPyHlM-#F(xk3z{GJpDG0@HkN92IHNObBFB6S_0>77-6hHSq)L8SAtont z>eQE%$naqiqs!qlq|#9j6aQTsJ-v?Nw`Cx}5QIR6c6Y#tAq)fUx$n(@!VqxB?gy+5 zD4kZpJ{c&`mV`Vz7?xRQ^Y>j4v`>}jE^d}1NhN3B8_veG27&m+w=Ha2Zk z8pA%7aGyRW^37ygx)eCQBEK5O2TQo zs-L(PQj*5B$IvmM6gCk}X*?XGpq)_z7^#=-pmKW)Tx2U1ZHLTo3=93yLe^Q=(_6>L>fE<6k#vZd$8s%!(ASD^YKU*2UH z3Ges5b;cx%W5-s3v}i|Wk1EL{_wF%Tp0M+EV3UvpvA~7^9{Qe$?M|%S*`#jE0ytg{ zbP7;X%BVC^BK2k^hkhj~wZCW;U{Euu$8E9-pY$X=?^$?r#`(u}F z8GZ@>nkG``4m}35+06XyPkJx^hzV_D_H>m{%z*{Fxr$u;2f(VNM`elcQ2&YWJ==~d zP|W5O0Xv1Anzp2wcfk&gL@;e|j!_c@hr}ntqO6Hqj4onziG6{Dk|C#w6c(FAZeB)p zqk+G}iG(O2%@2W&R?MlFfq-09H3j`@#oWBr| zNFXJ@3;Byz8M+`kRb!MeS}wVE>LV9c;jg%*W*C*3{%RE2Ge@VyjkYLV^Z6NMmt zDKEOe_5(yqr`w$*qLn^*2VvK> zpFzoB)fN(?^^s$-!5VAqVuOWB%6uobY(@5g^NxC|Lbf(|?l>gtiF*xeg1Z>X>e1_F zv#M@*4OP+rN?K!dJSs6mFVH+Z)1+j^-Uu?DPA;jUY9C`q!Av!b!CKLalxPi&j8WGV4k?FMWQrHPOo^`zvnsZ!;|UFjV+E!;^;QkS|;MiAPa zLqe+QMs{G5^-c4mv3DZ-Blo}PWzckgmu94?;#RCi7=ty6qrkxCeV446U9Vb|LZ+@) z_0tB_GVi09c0dIx7yW>5)B&K_uAlXY1lHL1k#4ohF&2hK&Z%v(UTEGxPJMxZyI#=@ zT7fOh8Vj``=WgU3oZHNZNQNHQVinfq*HVk-vau*5);Py|Eka*K&4*LcW;n}F0N$wB4YSM(3%X(8tIt_TnEQ!Yf_mKgoS2ui%8i3#`kb2X zq?uk)&7z*Z(zB|T9IbTjT3Ao$8trK^9?9kdOL_dptj0cO)ou%AuxdB?fiIv1-5@P! z8%t#5SGux9S)q@t2Pf8QuT^-urJB&kau-ENlZJ}Y}0*~=4meG=PYH|0=o zc`Q3W5%`cdR>2m#$K+TrOLDHd-zVCPcxEdZ;@SBtl{%bQ;rUG7l!hxcq>$QTJIZx{ z@UU}LF`H1%0k%^cYwn{_V;{JPMqQ&u`3Y4^l#|wIjc?cgXYE|zqpGg`Ka&g?G5$%}ize_GI8IC`7+=oRb3lM$SEs6j=`mp47@~?84&)USRYO2%ErH$Q)6l=0#39 zzDmk+$ui7%J_EoDo>YQmzDXfTaHY%rW+~?qt8ZV)}j7t(=r>KR&Kx}!te&9l7YcibZ zt?UG7nvK9G0(GmAm(VW1z-omUL#d!DBD&&&P((wGc8D94*tYZUo;~|7lWy(O}$D}tY1?y*&#Y&hc1`*k6 zrzvb8UJSeDjev)&Qe12{o!{{h;Z#XTr|lWV>?8;d4S-zwQ%4C5iZU{iNH_%k!pL~c z9`6QQOZ8n=AkQ4BovjW|pLR*ws6VhS#Yn_b&9iw(4==1!{828;=ktl}z;64wm5m!!@51DcCzqM+2k z5-E*vYV_>t9%azn8*XRj^VS4pTe2G6W3Ij$r93h=8!D~+9it=l4G>OykW2wLiWfGb zN+Yadirg*>WJXBcC++yey+*I5y-?~KGd)Is02Q$6NEEMV)gcqq88y-^0PGexXj+pi z(2RA6MB4eS?c<;=hONOxtdYd{B6J)uC zRX&~mz@krw54{CjK+01#$m&6dzyDf39sB-K*3hjC{!Ln&AwtCkCmFuklz<+hp+R=Xttk5;I2|HkkwVryl7zJ3gq2lVT9dAmQwRT{F5$&Cb7`s!v%Z_VB z%Jx9YB%VqrW(~m+eMl%qAeIh$$EUS|L3sEmgiVOp9?HrcVTZUrya9OHrBzKH<`>Qf zahWvrXfF)BL}KZtRm`Z>)aK6JX8zU~5!ahKYo}^C=E=p+XhhH`$!9N%knPfd=*=xb zlVXk6!k}>@IZJwW|0aGA12l5$=@&g~h#1e`-6eS#j!YEQ72ix5G;ZoNU*8A66JPu0U3=_jJ5JvC7!8+3c-C(7zPqu zKtN*jPQ<>Qu#`-TC+|yGJ!B}0j6JPpdUq`K9yBZPhxCcLnz_dl#2Z*aFCAFGQBSa< zc_Ujt)z-NhS;og=xCCD?q#%?L8ax6Be>u|#G;qs^21TZr(j*N_@Pk9fHYfng{|1rX z6LYmck%qM3nGZdyCNHAVk~>&CWbLNwlH^pc#0^sm>AjisOueKSDOVats2vxNLa!OW z+)WT@AtGc%qepiPdyf^bSdy(V&ZyT=Hm@0&buShINeqG#Go_!9HV|7PMMS zBjZlQf9kjjAY*9%XlO;;K__m6Yx#3wj1-!C>*J+=WKrc;8OgRzJ792)43|{>ZS6jg zeZa&tYpbKT@E92y1?A$4gkJVU`fNlnljnrdz%`lK^=K3s={=c?JbR_g(V)`_jK#25l}C&iJyTWB6uC58)pxf`nmj7S z8PYs+>ZMbM**>X8vrAdf7uitHo{d$tNDU*j@oGXYMQT*b;yF(2k~+l{)zX>iaYxy_ z7!EVyD{K!t$hV{)$=FThM@D(WLwrCB4~8@wd_Q5B=I_2_ga8Ob+kx2l>e3v6#(V6vQ)&&piR9S(h2z#>#;Oj(}SiBG8*m3bco45xB%!kbRP2- z`#gPw+@_{lx6_50@CdiJS!aIdh;`Ae`S) z%@@SZnS^ccI_eut$ZApn(GKgJT9}3#sP!sp&7^i)=hTsUD|OG4U)L$(;LiCDNi!qd2c*uJu%H|ypdyfS?KEmUM$`G8M z$`nQtIs6QbBt{WSt&$_Qqk{Z$(0&wmu2l}Fz++y{QXW_FXgfA1_A5uk5~GN}Qd1do zY&+&u;>3SLQDRIe;?&kU_GHJdJ9I}Y+4CAMTkssT&gb7$?cYj}O{X;Rmk0Pz?QgB} zzp5JiX=hfbubRH{x@p*%JZ+Uq>XU-9FS!@p`<<(4(2q}Mx8Djthk_Z(LDd6 zYc4_w$~nu{_i|f%a^i3MM>6b6h37s)DF*9_A<2LO%-t-I?6-Gj5yiCFq zYO8E(%y}uCzLpDyNK&#hI%pfW@OIp!IiMTgM1ano*MG7n9i9{>5Cezj!a5~TUB7FB z^M1s6SKa0IJv_w)Z9-&h)Q`s^#TmvBC3w?)zPAcqFJBRXGsmD7}+RByBkqT(n(hVFL;8?SK@T;0R0ry89*812vnY^u! z?@hbEzIc!3;}qU+LLbCK(D^A#4AnSi4 zoZc>vekeeGDAk&2X5gS)2GvPRb@e9erye=v0hQ^JvW{T!Erbj!2=!HEMUH3*$E+1^^Y1Xl#w166nR zMAG$+&b#VZ(5-l9uQ@Osj9l(vnWly#qS@JLEah-1*MSv;MkmocHe8}boauigQ!T!< zTyF5d-gM7TXp7??dAU~edjO@m)oOm5-)v>`zraCg%{d{l-BGm6$yW|tSkAgtz9!E2 zzOv<5NmpvbmLr$wHT8L2ayhRki(w7t3@ClJSGue(Pjx<69kA*r?G6{viq0`tl^LY22Vooy$B>aVYXb79YfosHIt_Zd_xUF0sk zaGH>FBSU7&9C&rzVa%-ice)3ExK{@Y3uFEeQ@|%e;HG}THJFESwy<@5a*&WZs>Zte zF6c}a0M^|<;w=Nd(aD1AbS+Jn)sldGWPq6*k))V!bTW3kui`nYWfq?ppL*$snx6mr zz379lSh##|x}m^yJ?y;Ocq(6-{%vo%TA{}GSJ%G~ON2nu=TH}D!i14b>ov*1C-e~H z)=m4ij==^Q?POrT8q`Y>aYHqln6uX|c{bajYfsX}!5%ZCnZWV&@$_S zCb)c8Uoxrq-EfTRMcq$SY!Eu)96G!+^Koo4bf0OMOh7i~-%HI=|GrFBMP4b07p=rw zb9)H+pqN5JpC_dFhm6IK>gUUgG#|db8E? zJipnG&O2s-Yq_lIPxfyLS8Q(lF`3k;-kxoo8A;B(#NfEEx_*CSe$1a@I>!H>z3J51 znK`=Rng{o$8;6j5#xM7#%l23M`9GM5e*&23EdXmt4ee+tdDuogaca^sBS0?Q5Mrga zW8R7m z0B-js$8!Np{c%VZqabwmxMb)``Wf@Tqi!Vg!4qO8h}6aWyY!qFt>36$z$yw%=-`s~ zVkLaa*JKMm$!kw?zRpU@_dYu+#v?KV>!irM9L$9W1kFUqg+gpxCNY!U(05$bk{r(& zn;iNy6@hY-2}F=tlKvf;I*6?3-SJe!b){w@ih7E0!Z@iZf4iMvw~4RIjZug;X^4h< zzV`7*R4$l!ht=tFw7xexfcpKWQw8Q00XClfeO=jY``=5QB}BS2??VITR9<>}&v!`- z>(2Fs0*8mTEcS3kN8^t)Rk;nPnbm8x)U)B5$4GMcpUseyS4{pD7*xP~B(FFX90GA@ z8s~42iRGO|CMK*OpTzb3clcx)wp#u!M9S(3mZSr|5#>^0L}g5-HI70tt9rLd8A^9!h4esoKMI7s)+PID}_6pn~Pl0Du%{cF3CC~B@W=)u7`JKo)Drp+*McKq0t)}1+wkV%{kc3*M-UUTcuR7OHTQXEpx1>m|m zTGaE#AP>dh9&|v{Fnim0SSx)L;N12wOwoT1%`!!oe)~^ZrszSFXaKzEKR(RtHD2Nz zG0c~+6Pgb_&Tw#w;5v|L>)}jH7UBB2!cn{bYp(E%6oM;M)qN~sUjrZI3WUzZgI(If_%&|9_ak zhdqkXJaiyOv7`n10lp=xXysi8Wjjn2KMmoww}Sl6=HDDvH47pZHf!`>tXe}jGix@p zg8PQZWj$3nha)Hr>i26& zi7-nl>Bxj;Bq5mLh2pIj#=E;A3Rf~!q!)=O9I5Ch3g{mCh(h52qOc!UfR!*iiy4qf zv(3n5B`KAgYQ+Odr!-hE*J7`)7)&V}&Rgwp{r!>>zDqt21?FF1$Cza^_`< zS!)4k#9BKu6!V5;wi(4gX=MnAU0CHgQX-N>>_$CLi#Q*&eGnurUva~fs*1z&IN%-$ z)kZ32D&R@VfC`W)Yp`Lo>1kh=KGYwLjeU<;B}IoP(|O5wqRGj-Xqa86Gt)<*i@%ZJ z03+GHAYh_u9YrfoKB4fyjkOZ!2+Vv`p}5g$AW!2>;_ zobqG@tG3h^9G59DyGJSVg+jCe?%&@g5lk7`UIt7w`xNt$ekpgRW&+YKsvfD}FzdK? znG|#k4Lx<487OvtdFgKAs+kKTB@nfGP@z||An<2BX7U(kVnK>~)Y z?ccrqtr_X2u@F))OVdFkjWnWJx%79BB8eE;i-q4Wd)-W56;h%>gPo0V#h7Mg#!GKC zS`U=0rwka`)FK+bk+U>l!cZ<)zmRDd=%zCXJ&Lnk*F;WGw1tDz72h|TaY%zk15(1- z&PY)Bu({nJt3+Wc+=^GV3w5;Y|Iyjfo@_&P@@l{GBoK;Ro;iKAv=x1YDr~$2iMT|v zuihkptA1yvH?xMN9T{>v9mL@$f-r&c6G+3OSQL_mzshf>p7~!!oK+Rb!e24H*dSRL z3383ENg)-&C7r3SLd?TkPKFn}tF+YTvjVZo`HevA)qr&2=6IE)&M@LIq0;s!_o>Lk zk>u|r4;vi_p>*v}u?4Ox&=%Oh>4{4Y7Vb@>U(hft#X`Si@paif@xlIFzx-rht_w}B z$F3D;dJvhBMN)k*dX0dsplxc<^!V@R16XTBtpu;VeDTdr8=r{^MRr*oO@m z-8;@Q@XN-*exi`U!vb-=0ynH&dVH;^EYN0Dbd492WRsLSkB8;0=G&^wH`ROx->BKH zPobnG2tDDlW&((01gWI{RkI@)QN9`>8F{9jPAO6HIvvc*AX3ap#Y)~xPDEax`vcuV-;Tyl5_VZ9jPk0s~r6_T;2f<+SbzkYZppEWc6)i6Cq zq+|aX5t4xZ1J<|GJ5VCRn=M3E z3QDGWsb@xix`c6*BU(ZK%l%N6UP5M}pS&vW9 zJ@$!Vr)q6Dd(C2LxSWKqdI_m7W;3#emGO1bX>BL##amfe6^7M%iTNaQ;y+pNsaQQ+ z9F!)8)KS0nnq>Z!sI)kZpP?`@?^;xtAI2Q>yZV4KqtjbdN|cOL7%OpOC9trBj`Ijv zvIcbqdM}5*^dY0v8CgvR1S(6k4AGZz!*FIV+KE7DoHQ(2Vkp!2oXHyF)=`>JU+55; zhU7>l6K$QTf!&4=-l9@YKa0n7H>~AV!}1!qxV~&VB9=y9aR@iZY;OpVOb;>|i@tWH z{qocmAy2{Oky~`!hteHV+RbpJDKzl&_tc#iEsTU;j!vrSU8hZX59Nd7iz+b3uP; zH?t&Ey0d@1Sf=y|@1t3y-_x^94+9oP8CHq^&BD-lt(F7*uz=w~OR|fEjFRN=hm<6B z(x%5kQ}hQeKNgxP>jt1*c&>B>pR& zlN7u*-%QTgFwz}QLxMm`_J7_E^5)IJgZ)`7j3Uay=1-Qd@+JmZU|yb~KYwK?;@GE1 zZ%CZ+NbdO1%(i22$LnC}+HF4?M2UzFSEnO=%smBcFCwaKm^^%-7}^}TgmB4LGrp=8 z94f}@vd}+re!CC0|ZtWqi5+S@0P;`puw9_a; z&}q*7YOMaCw0$U>JF?Z-pbqz2U?@O=VJhTTWsPWD6!T*@JC<6*UTo&XYB>@Bs#`I& z)ql`ehZW((!UrGfCKfkoymnC97#UvZSxZ6D%jTzf=$nUa5^0%f0@6V+bfaS(YF2)x z@NXLbW=cd!Uit^ih-*b*B3+`o{3jx^*t@O7qa{+(G%-PL{69TW)!&ha2zq&uyQ~kNj62J6?Ds8`mTr5sVd4(TV_&ogwK58|4tu;_jHq-nd za)p#aSHt9ZE1tl2Q_O`Gb5CQsinQ3n&U(U+BR_~(c-o;#qaEtZOl%?8C*04dhUWOL zq*%H1LfxP3r-}phLIbJdCxJUnP0NaZ9#0E>p%RgWI&HNgBei`>Ayzm(D|E>0yL>K| zZm8U3gqqZ{KKg27;98=nVd5uphyWyw3$$^nv?MoITWc}?B;dCFN21OKh6}1y zGS-T&hG`x+K1DM{5x`Rvqog!eQ!ErqH4T%Rjfr7s-9tuST|W1 z_zZ+`=*uX3hK>0h${y!kmV{_o@{$Gl!q5NV;+Xm$0~bffAaCcRmP14Oc0S&IHafd9 z{%?Pl-=5mH^O5E0QCV^}pDcYye;P}QNJNqTgnOcJ>|Oh@W8 zz~36;G=*37apuQyIUi4;c0b(D71FT%%l?^*yN&L_=KwS; zdm`#u-e@$rmN28^5%TuIl68zF^##;N9vY)Q@~}AdFl^TB0SY9XZVq^ELP3rNg)H~y zqu-Qnq!_=hNXYVd5tKgXnLDi$KPhBu!dL&&x4(I@&wXx#Kt+wg8;SWy5PuvIio|vX5ELLBa#XUJ4Y0ud zetbWC`FL}OYJvTL$RBE-z`FFNNNy;eTE#`HzhwZ^APWPa5+3httP+vlG{JfC`nJ8e z3mjx5L2Kpwp_SzuzIWbVa>~1`(Oq0*5O2+?IAV=G5`QNr>>N!EQuxfa8bZ|K2fva7 zBr7*fF!$BH!Bg2*F~~zDM-{poF5HJo(7e8d@lsP-_{6_6WQ1{%UK@k!n0_CPuk) zp>wSzGENhKyM=7rttuH$rh|O$NzWaV8#xay175U`q!x`y6qKjWzVN{>z)o=N&UWNX z`Ld{2O^rsaYfg${$yjK-JMK)~83{3GS&tu;yY!*LxER0|-N;Te;}LS*V-Sw zOZbMb$0~Yd0>opHF3mmDhQ{ARU#k{=4%@%&d@`Eu=qU$YQEN?3v~5pdOtQIXeUVxi z-@@)^ngQU%+@+PSnA7XI(}llbFX+Giy`&58KcjFJa-*#xB$kP88>zTUfr00p&TSCR z=8C%&ka)hOTN@mL7dmJ3{7rCUbd})^gEear=h;|&F#wOh<4r>GXYQJvH`rJ0^jOWm zHbCZbh=?P19pOx#{>b67!$?%Yno)_!pNePrYurIQPo}vETiZ7H625%!_a>l)w|xya zI-A#GI_6|%W1h2dYTGfZttUA3aN60dXI%ImRr2Aqo=&Z7I+62(5>LEJ6tpK|kLGbp zffM^no*h3js4iBn)9WM6@UvsYShj~iur7ShC=efFwhi?WCSl?K0P2vE>7k803Y|=x+d_Nd` zz?%F_DnO&p9I$R~Q@}s#i(AyAWnTGqWvShoqRy|M{qXNhon1Vi-}Ue?9|I(+E#KGC z#rDjNAKop;3{_VgKcGo+M#5DsH*Bf2!Kfv?LlRn1pvPkvqEHxU{Un;rq1B4`dUOuf z;t`~i)I}xGF@-R`TS+~-jK!|6QvB-9K(4>DIrkV@2+3OzTDUa#AAH@=9Pfo=kgiA> z$&eHglq4cVLu5U)>KWX)QRUwOq)hn9| zsBL!7qNGL>p+?JiUf_NjKQ4ss^!;2)UPTr(Met$* znsxW~lbqnqSlE@a7NAHeDv>Olj0{3|rfo%6u~KWKq-Wt`153a^IgUvw9zz(owc#@)UNt^rYVX1T$Py&eXLF+W(!$Lo=Gy{`4 zpH=%!t4*_me|Q>mEC^~uStxFh&w?*eZBW5@5qWTPWBU%K6IH&X?a!bX@v9@r*?u}$ z#0r*e*9#IxTY`XxX8%27y&ZSI*CexLgl$0TH@9>K4c$0Nev;;0>wrbTWkny zjg-7YVkMuYekg+5i$zMdl2nUqM=&Ya5=}_SG4hv_FuvpnA16bxhE@`IW>lhKXss$A zc~v4dwB{<3?ashygBLcRCR|rkYO{;*E_{zTs}n-_|Je)y3EC?55PRas;j?>M2xNvW zur&{6&(JVNI?eYAo7GIRh74P=;N7c+8&1zmhbAEPje&DhKLK>@VmBI;-e^CNXf_MW zX+Ce`rK+g!qq&f{@9SC5^nd+Ov3v6-^v`#~m&J|Gr#H^~-{Xe>%u@D{MDQ$jFM7vd ziiV8qJ)gmuC^7Fr7;Z!2U>Wph600hl9OYN>SwM1%Fk(YmH<|x5=%#_i_CCM{8+l7UbC7728#z8 zFo@NjA+7l#NP|#~RqkQh1Zcro8M1noA*?T_PpB+z&2<9yo9GQE6(*?gadPcvIa-J=#?D zEAk;H5e6pMczditj0s$4^Hv5iv~3OU`5Y*rQ5urVL~8Vq-2j^u0uO{DQ%Pswtib>% zf03BIlJ14gXL%&C8fTT(g^SM;mWFe)sHj2r&9&J%vmIyG%=SH;pgW(XJN+=BC(!Zk z8h$x@<1xw^z!(q#n9Lqlsy*zL3sT(0i_hyTSr{>YSqQK%Yqt@OvtTu@%;akQ>UBbR z0_{XTgxh_Kb)~MH5pH|;#sJdFe_EdZVz#+QVQD-|u?OtpeW1)RMjr*m(7jMWz^jgf z;$|kyAnN>@saw2DaLNaux=v?JQm};GmNkiEW}G%7oVaxhC&zTAj1!?Rayou52ctQ! zeG8}6rnht8my@$wdEVM?O?rl6Q>|m1KRw1NILj)zI@sRP^WAQ% z`tmCsM~|-S=$ZaP$I-pJI*z`$spIdrtnc{y^k+Jbey_{l@%Qg-@sqW^gnqWAYA3g56`1fh+akN}lPBqS0sw zRnFsb7rvR3W%zl{(wmDj=d6--Ivs$ZPUFY@UE7YpmOWWX{qfd|u``Zahn~4rX9w0* zwd`pK{H3yl8$=6A?R01A4=8A4OR0?b_gDG<*7FS((ST`*CC9^X$MY~l;z^2l0A0XfW{jZkrq!Fj z5h?$jI%6#vuFWLzxVl?i{|r5Tq+>VfD%u6g`3UD{0ZLMkbx<};(ylvg5L>B()*A!uRrnmmqYZ3(;(`OH+0#1)5lk4>n z*Lc(?cCuw7Z;8h>6DSD`keM*`$NijNN&+*I#CtGotDBJsV()&>Rd#^&-tdc}8;(M{{7> zwUgiMx-oo%r#f)6s)L)N$y<+nM1R16IPPnS@9O4gRK=$6U)FKrJA-4%K#~=~k|^pp zIX`f>($@cW-u%cZMg5PJ{f~92b)4J_$GeZHlD6-kp-(tco5HCS5>LgJ?+?Mk-Rg|E zJJs9H=QH_t>ID8=-0}V`>pI?_zM1E9Su}Q{ibmdlrQ`kgxAME5-)Hz#Y^|v(?$~?s z_4T`se!IJ4|4D4?Rl$xECp$XcKlyCO-rcWt?BD%D$BEq(*!@h$-rFdATig1!AI%Ty zkAMA}b1Q+bRoy(CnfnhMUSQ1f>@xdix|77K-kmGLal=njU`5I zB=^(vxVkm45N0$26AjU+B(eD7Pb<+&7)inpUpn6xNeo}e)>9g(XSN5&7QDLu}w;v=;u*YYW%vbK9BIi=nzvf~i&${6lp zBD1*1Q>oO6!+U;|X610VR5aag$J>McBj)4>*tz4zKBQ!`KsAXXcTl?a5?`M_%lW`s zc~o<>V4n@+H8wFqS%z+h4kiLk8fB194@LRs&bUO}zD!+nx9RinCLaIN6Y^<9T*Wsc zkN2FppD`uF&VJyUV`LySij}s%*G{s_h-fm)Ib{77MXiy{?Vt~Z?xk104{?0OPBxoR)$D#1ug{wduL3;sft~RrDTW4cvR0r2Fv*c< zqmJ1Qx*O*u_mAItpId|1aKYCIbMO(})synr2_Jr$8Ntr(fn0!&#@7W?zoBA~PNxl= zS6VO#OC^f(yW-h-wN`N@XVmSYbQ|XyDy`zWRy)3qU(TA(fJIQONxRFOLZ6{HCdAW$ zm$;qiDKiPTd>voNcsm(q5?ozT9}BYv#{=?wjw6mDl_Z*htm&Us=WIV{C!Rf&+^C%he!5_mY+ zH)Gl*Ad5k<-~9M92IUGqf-wUTjEgptg9cMPgJ7voe>{S5pLtH+lSP{N3V=HH1)3{1 zxaMvh`F~xP$1^*Fu4lc zt5{D8YC;SjMbhOu7i&f@>0N}7xSf~~ir){i6P@XH#WtBqM4Xufu)4i7Rj;5AVQYrM zV%*wIHfo)rc$K$qP<^UQ;jV7ir}hD@!dl--e5)Cq=4y{y3HLHX(N}2Xh;k8P=XO5N zJjO3~eiQ7(z)OKrYFIc{3E?tOK{J15^_YN8l?K>6$}Fy!K23ra0gxpvDsaUz^Xr-8 z(}WLNQ;l9^w^t2I?OyOgORWF_m5MVa>+JYD!HU1lv#jDOpD0iVp?GsrJ=OL9 zfHkw74&<3=+gky-Pvy_M%BxfwD!e@*%kB#LVzYW6>zd&#wKOvw^S^JVIo%~Dz}ql& zviwoA&9ZUGI<#SQa(JligIsi0Q2qM-?y9f8&sMA5qit^>T=B--&l;MlDaMb6(P|rJ z+VSR(`u9iUok4d?-TUd(3m-#Wvs3=lYx^jmB$B?}wj2~0n=n)UAIx)x;(g{BZ_1e+ zFW#+a97EOy{H^*+4BZo>0!j?JYc z`OAPXhDvDxycxHhl=~fq%+6;hTHnHO-(fcT@gQKJKL8J21P_M$8cL$|>$QuPVi<(= zl5iP!gV5d#7Jw7N0$<9Nqbs}k>tUlji83KxZSE>MWj4j^qz8lqd6{Y7pPBY>`niU@ zunDW0>hyRkt>Mge`FuIV8|$apBV~z=g#yAKlvmm?kKb%ov8L!lt5{r9wbKzEA4Rw} z@+BuPVu>}n3*2@%8~m`b3B{cB!ttR3rVYa=d$OC07n#`$>?9l=wmoJrn7NPo3G6oJ z8ueHL<&;O$J6R?EgTJ%uA2SLUDbGsn{7N4;M*P4|E-vf62);K_kZAa%U2hXrdF2nz;b>@-PiL4-@Qza1lI#g7fNa&W|S}*)CNn8ild9t4lKg z4#tY>OkX0-u?R2>x%1yV2u8z4Qej8AZZqNp!k}PIk>kT10ljg+7zw7s0>HEFgx+{ z+9KH^ud(gq72`IY?{iun=Ex38fG&PwiO*3Vhvr*W@y3S6#Q`fvBDSuZhzcg+aQ(V8 zD7N$XGQK;HKg8ek*}e-1E1XCwsoLo#muf?tPnhpi_6T314&3y*YtdSs-E}_s(K?XI zs5@IWs1_ zHQ7bv$bUm>SlQNa#Y^+vv~N3BTy`j$JCbb`=GU$B;k*WZ7wbOY*Hvvmd%7p+)twS1G+lDgQdcQ5sps$MdB6`yi)SAWH?tt|!{-6#KD zPLrc+)g>;zH$ylS&JJOc+%6M8;cFT)bI9#T?@CAOPp)YNd0odVS~sxhuD+r}DH={* z#o?y!%Qs0N<(QV|i&j1TxN5+^sSY1jnH_@jrmR`^#93a5EcLd~-3j;v20EWJu!%qP zHSq+lqHF6u0Uqc6q|WUXxV4NJ3Cy4w$y0rKljKb?z?QBXXqXxkEj!H9s5~i}ZUJy( zlOz5NNU)&oi6JK}qrNdtKSsjvXmaQ| zQu9>W^-GNjjOvIeb;QOpZtV9|LD;OuFU90s7Ij(;6S5;xvDnmVE$NX0%VB|b#<++( z-F9$!)ZfJ!oYZTC!a4~TefF>>ad4XmI8^QIO9rOl0h|b+3THq=ZKpZZL|<1`@@Lx- z-ei0Y-_~)$J6k=CM~p^04)4(WgGO2rEtn;?CGG}vAc)6lnG-+|e!iKPW@D(*23z3) zz*_P(y1K}d6HWB5HEL8jwjJ4aGMsy39!fJ(e9i$Y(pIvLD~V|-lnk7P;R;v5oU%=< zjG~g~pew_jo|0E8wp(MjGm3)bq`Ymr31L*E2_+%VYN_SXFOH{1T`Esh23uZjtYQ-n zRmlHr$(wxV4N@|av*QGg2%ILbcQ(PlmU7sm%385rvs){BVjVY_R{M`s`+Iw2tdImo z7fN;TE-(B9Hk@=sM=!{(oKYr^O35u-N9~i)cX53+;_$~2%_>|0Gl8>0*s9)=9DimG zPFO3t{0FuX)JMi;*p1wC6?lrW)mEgdn&VUpaCZpeND*_kA6#y-p-i&%!h|>es%IEY z5Z1zY%uud|iV9IH&Qh6Tot}YBP0VZAuV$#|ziBCcG`I2pm|M_WUTuiV zy_qVf$+;mV z9n1!-2-OabOAm^5e3y)b(nY|Nzzq=ee8md`lJo`O%TCE`HiydfZhG?o&hiF}W?{Zu z4FUkw$>MNCA?QeuMk3;L#4zD49$#N7Eon^_A+44UK7f9sDHy_l1^QjAewgu&43%xA znIeNt{&wIROWq|E%%BuUF0ReV4m?FLlnnAEh{n63JtmxuC4Z&@tWYxr20D?_a-)H90Owj`(yqHPXIReuKf3G*M%=!qnblT~g*ef(pe>@Yk0plU!QX2qAJtT6t1{J0rZ6<3=RZGyQChHGKp#Nj!xPK6T^QYd)OlZL({T>O zSu%diZ{62g_G%teDoof#iBUz7 z#F)Yw6EJdXjXR_HVEX277@y>Hd${7Y`6~$^<-CWts^z}^rvqv1<`$FP@0;j!RpFI8 zDOTUww~cU6{<-M%jircN@>sMJ_pZ8tNB_%-=|qvai1=sLimmP+*S3peX)KOZGa!I>BkT3W-_eeGqNMmMbpZORcdn3Ea@5atPb(KZ!6$wl(QB!L^268Ggs+?EoP?>xt%m>0 zX|1LveEoG2bEia{clepVwv$V9hw@Fw zA`re`vg`8~99%xCv)S~@pBf|V37}Z`_EYD}o>%`mUgEo-mQki)AtT-ps}C$uMV#3& z70JD}V(Yw5fRr)kxfpVpf5*Y)aG5>G!kUdlVma-_62&OkTb`v?Uen35^JyWL{I|l- zNuJHWgRS((w38Tlhh2Z~GKwVP5AwGPH)$A$l5OD<%*wCME0+y>E1Ll)VRy6Q^D27h zT`-mKqbJJ_adsu}JFxj#hX_q>n`iKHRkUw+X|yhEX;~WoCy10XgD|CZDFf{mC9)x97)#sQ-cn7 zg`M?Y3s~_z%-C)Uw zWWM^BCop%&_|fU@T29vk5up(j#7;F$lpuakr2}4@0b# zQAEW2Gn~$ALE5=bfONc;I4`@CXPO>QyYVK^X^g7^RVXfJ#i*Fvf1CN1ED*Sh(`!yZuICVB_%MO+?e0|< z(o(o$J?74C_b23gQVCAm;g>CYBZu6_Z4OsFWBqzvrS%(>W50%s{YDcCNDpzmsUZOE zBH-+xOTUH__xO7X6Ol&>QCXy>A+7sKW4c;n$q{$)+ZIa>zpE@=l^A-mDlz^9D|Q1M z8=Y9OrK)1vTrhl7V1euJda~q#GkzM6sl05zSD~5p}u-d(ef}bV=3uwv7 z6@vF;bbHw05K1_HBxv2el#y5~uSO$!`XEq?c`WdIvP*JI`qP^upWYN{S=VqLmfV&$ zIPFxB--g1`9G7f4+IVW%IZ{=zZhk5?xaC;GfwI;`OB#xZe!FN*qkhVde&1Sj|H2Z~ zTnGFBWJp&#v2ec+y4~-PnEIrhSYoz~#E_;R`3E#eX7i{MdFt+XTVZJ9W z5X+KWyYLG>9~@V5)$eiZ^%57nt8WLFw@VGM#e^9=5*{z=>fbcMu7CIXvR6USg^Prj zlS2!uo!252f17`aWa_SYLmBLFj-)gM2|)YUrJ^cR!_J87MUdX$n!Kq0ZwOw`u`{9Z zs;YPyrFnAb8D7~^Ywhrf*4n`J$>u>hu>WNQsmhspNt6EpIpTCYod&ENcpcZVFmSHw z`y0yAn4bW@?WxDXb@j-bk9ONYTevK9zSKOPE_A`ZLSy6d96S?u6|$EZrd@$yShNp^ zYWW_gHApgwjqUgvgYAcpW*kjbBYRFpviUm_!{qRF;cImRCTL!lUK*;Sd>E6q4UQJa zpL%36gmvD92-`k)(R;hnkwxFc;>pYF@9aufHSe)nF4GZbY}TlnQCQ^5em#Qs$<}Wo zp&6+C(;G>d8G-AaY%MvJ%$&UD0AE#08q7fi+rtn%+^RU-a8@{ZwV#?Uk85OPU=@&O zA1`XdPW~xR=_}$9e&8?4&CgR>wh{jkX}cegxVLDb7$^Ux)}w)lwPu(5)){^R?$Qrp zM{#7_#KaEIuGz6ZCY8T~9`GOAx+!vzwvinO&j%@3R0=?=n%70!RT=PL4w zi`;Mg{-rP;0T&s53Q)rt(6{i@2H9XMbwcAFk`v4Z&n0TtiGRHieY9|tAuZh;da0Ja7(PZXrlk_Z6 z8iURA4Y{};@je_&O9W9WKlx-aE7*!~zO96CZRxO|m>y`N4y?&kKRo7tJK}7ST!+K< zZ8Huiz^zDzOg+;8Px&>;IWvQ(;8oq+61m-ww~|JJ;Z=-RY=kk$nHt$L+;2X8Ae}k` zEXeb8o_9TSGHptStp_^^7z$TC-FHoLO?^+~QD3H3u)Wf3MdJte znyTH?Rj>7=@^}@0fr{yi+;Z|@avmURYa~d59j@3g_baNq%<1LhfXbyjtn^y&d(|3t zQr-TK)gP(;`M;e^8v;eWC?jtWMDQO1BwhukS6N$Rkbx0LsM!4$)iA=_d=2Q-q*?(` zCTDoS=wLI(B*z!`x)o~lv;DBTkv98BsLS-C*PtUia%5(y~A*T7LF}D z+ot`1nLXn)y3T#(DH{8vhLP9bhRNW*xtTelN|dBn;KQ7z6t=_lk8m4?nU2RYI76Sj zW~IH$b7xbh3g$8XCxla6bRs7E@HNST;a)~}Jb94zMYnwo1!Nv-ny04ZtbjX>ruiz0 z?IWC6Lue>n8Xh!R;++B4=DS_L+N@(~8?|h+M+zg5lYdYUA0h(ZozQ2qhLN1j>461p zHGGZ0$%)EH3#lKENXpw<^d#ngFP8X|)|Q>S+L-nfXF((<+%z}lYbb>i@TcL4ufx!B zvMgO=C!38nvu1*xMzTTG$bi)xia~m7QpKoemAUNDf0NVw>637*@%1%kGwXSf!xGrA zdvfvdHze0;zL}&A(hdNco@1Wxzt-kJ9&BRR>_Zs|KfGFbF*mq+LF>%G!sHl^d2NnW?E2mt)sUSD z@t;igHx7w{L4Lw{zpZ zkgC9?AMkqnK zl8xjDm24rvigRc0pNIIIc0l(P(=v)&1}ptxp0iMGyXW35`y8uGoeI+D+6|;Wu!I1A zipgZM+6ipkOHX+Q7*@Pujbq>R|ATtj?1}7qq_pvsSmF;s`caKoi{AD<_xy^t8LfB3 zmAYw===zaD?lq_5t)}A(mOVlZiJG;*e91IM5>3QjphlU!7QZx2 z?ZEZ!R`0O;(P;(M1`Mby@%uZ!DcX}xEHqeSX6Bx9(=)*-`H05qUbu`UMu|d$B2Fzh zF_gM%iJUI{yU{Vf>8b@)^|8IqA{G%HSQ|Q<b|yLQ`< zv#?wf9A954q&7CiYUepENh5JSgJ_Q5Oe;%L2XkreXOdT<_00f#qy7va3V|?C-szZT3c`bB*@kR=BS_fqA zt6?j6S2xw@y!14^^k!aW>qVzO!`7K5hu(vkcV!Zl{FWlyC6^kLlN_mV@4?D3NX#)Q>`nq&K!mNW>YH(JocuxhZA>e2w{{G?_g{J+Cgm|%w$nj;;!X< za)<6XkgmM}(Y`Zr@A4sok&Pc+#*bjo##r**K`#h8(l1&oyP%mP-9HxW<9=|aG>5+< zLma(#r@SXX?W91tooo)>L(PIjX_yU+8H`;QbB={43ZH8E2QPrJM6n)bx_f`tW6&Kx zG3VjX9tu7Q(@$x3O4UN2ZN2Q^C9`|-CWtcQ^6#J@l~iX7wPvc$I(PIdJ?Ze*!#BWY z3y8>S83?wftfr@K=GeZ^i=&CMN#Fa>>4OdVV4f6C z>NOzQ^E7{?XsGhY+zC(JaM0N{OMEhsc#MY#cs@KiyoD*{la|o7 z6N!YF3)!@aBAI(}!rPA9$uT)P8jOTH2tTZ|urOG~3sgc2-sbrco)dRJWHkBR&L zp@fyfC$S-gRf(2|`Kau*ZnBXhd{DO{bZo5Gc;)BGn`xNvd*H+O&j}~4FF@W@5CH&R z$j_=G{zy6=jwN|?{uxcjOy;xaXEL9C4i8!{HoFv|obcT7j+iT`%E?%= z87Dcq;+eNSeIgl_(LKo~dC*4apBIckwZMq1Hg zP3@T~r`=4I)P{LcjXY1$vz7^knp9|&Xp8;{q;%Hj{&q(yEqX!(tMmWx4d$L=2H-)8 zxpBTKWtQ>_Z_xm)4s`(w84Z&WUk>TZsfTu&_(7{f!h=enb>7(iZFPAWNsN5&&9q>R z+d*<&Ku!{xL0Y~Pkwe3hQ(Y}VXg%hVZ&rfwWWU@|eOXsrshq5AzNS#VD8;UQJT%=;$pb;uk z*>zB(BD|u9TFq5d&bcHQ4P;ztf`ZZd{q7qjZ>Ps3mhKaj(V_i=iflO0+ha~o%yBU* z;O`9U5Z_gYb<0jJ&X?vg!$sg6(a%M6+VM74QMjLr2#brj9#9oQk2t93Au6cfz)n~s zf>Q3j{QQCRO|{Wvl|O7^LLn67;0OX{*l=~_WVCfu6|+OJw{ugfPOEzw8!^=iuSDo@ z!ybeacw(`cV0K{RS7J(uS~8onDPXVi-Sa_O|CFPY4nvUk?GfRyc~MFALF5O5 zGm<1iA}kJ7>R}W0Mf7lplsP;Ad$VsFEuuEg)uE*(ndk}uDx=a`y@QsO0-Ku5GYNr^ zNU)R)Xp~}9CvB{#mOKVTwPL`tkY{)1hJBLq^Lz~#3EtlLOFY0ULE{xi6YAxGi427k z_lxn9`eo5d@qX?nHmkn3SjQgA7j*x6s$uzlm=jK131jOv>{X6K`0Xc~hZ=lKJ{Vf2 zF0p22hh=$t!(;u5VEuMu{a{K&+GsH1{(T|LhDa4-))2c@Ff(U*cX{V^75RDV)f@DT z$A2gz@-i=|gBc)BVug_`t3fK0)fxcI^$zvd?e-9PFW-c~*4(%W=3GT42 zp7c%Oo1FHZD*z|LU($=Y@I;x~^L)Aw{!#tWOxp}>2OsPtIv%}qfECtBW9445TfaKY zj9{U1Xapt)oJpcm^f~5sv>-_Gz_{`Be9v0D)T<2?QyCnCthLRdS9ruEMn>cd+!2EA z&(;DWH3dcjB|v`Dnw~Vw*lcFa&%6sbH0DbVE#|G6r$YX*d<KlVWenU9jH^CR+R_?T8=&$62K_1JY z64x}vr#l8LNYNRy{F^nw1U!Ypq(jFt@);zV5N~_^0nquf6mC! zlO-3KMp_Yr3g>;UPYfDWCm{$~$kZUxY6VBtm=}@JR97F#RqK^z0Q67alpqo_V8q^c z(z7Gh_r4K_o7NbKtYP?6&_Mvl_$?T_$GQ!m^}GNdB!sLMeeT)WpU}LOXR%|m!5aA! z>W)4@S4Rsb7B1dsEGqYoyF7~1#9I1DGg=cn$gbrpCX6*Ui&u{@@j&teypqe+8*BoP z`*?J3=+@M?hOhMm9mta@23v-}^RVG7Cy128d2vUK&8~-#y4a+L)AwhEAE#X*Mq9cl z>%puvmG3>=_>>tmfGwgq1F$RvOS1{RJV-T`SMgx;ajKYiF>65(1NZYCFO3C}A9l{g z9dtP#td?B#0~&2BG@vY9_G;OFr(9gy+wT3JMx}wWPJOLK{QCuFwYw#YCPx0^I`jeS zX3P|@rx9b$z2$YE@9Q`FJF+!7#ddPE|0((di9V9k_~+CdL0Xf=gld_%C2#PJ z??ViEb^Vd71v`9QEO8l*Twgo&la#QUAE0XF7j83I!c$pm%T}u;$&;c=B>y_)l7P>7 zmdJ3?ba6XO;1gyCYlrFViQ|MT|V3-oHyL+yQDL1_?&{+M(ZCtXAYlOgz&Y04<{a5`2erm z-Wr0#&9R}4Z}c3Xd?HcTnyUsHa9D_|i!xHq$)ufTt-N=t(smE&N+cQvq<$-#dhcvf zi3u2J`~>lntma<{5-T75Cf`#RB@#3H%a}AZuQ*FTBF{API9rsGnt`MSx>UyJJReA- zYmqAIXkKHA>wuFJjyE0i|A6;&W0?l|I+4Q54$)+;DS|z_6P_E-rYff=n!NuWprK2H zZu;dxv`?#eV@RnXtK_VZ!hn3kz}Ym82+rS7dls|yYq(tQy9*@;;+EmOU+th4{<(Ca z3nzy-)bcFqJ)8x;y6ESBpsx7tQxZ$>S%wP`ZAXmO~RVMrDgZHb8g z5BW&hCd-uYImeuqz*dhRu_TN<>o@D9OC9>@E%KK@^xJ}*FeQ0|f8k=pH#+P2ZVLM@ z!t|WDvkVFu_~>|H8x{_#i}+pg6lpmAUSQNj1)^Yubhy(L zD6&@E<+*hHyc|fGGmBVh;r2r7qUiV=&RY~05~_cdN_t;C)5((rv~rIM$g#}DeK!E~+;|H$;_PaojmlNZkKxlebx zPg2@`z*_lm?$0Q!{kqb(s)A88mGUUX+)e>kQwutPV)!s7w>d()#0 zBTbLSu;F@LszmFH+vnMTUW#)iP@+RQ$+57V>W>Ts4Se`ew?1RKMUBe`t6yIEE9TyN zK4;u^$auFXaEgI7s{~^N=w=V<9YcTRjSi#ky7yz$wN@UHCnSgR8nibuHPue9O1qmf zpE-$Daj>zltTh8Y?u~?c3^oHmRlrB0!F)XenjU;S9z>+l9B zq$|%L9T<7HNgbiMuSIF$-q$V{?nM?o=HVW>YfVSXHffT#Rww2kaf|N5C8!M-KWt3> z->aP?Ok%)%(-eNt7|Ko{p^4srfGuYH?$_uZgi+5>F-<3tx>p|Ro6^$eP29>|znvM& z`7H7kP^z_W+lp@W#YEtt@WMa{M?_||6u0{*fF~FUOY8hY_i*meTKO)zv0P|Esc1r} zuuk(bE3&YZ`u?KjS08x9FZ|>Ws;G53o*wnT&~uYmiOC)nLTA6?^|m*04(G;~_VD2j ziCT^4G8v^-Rq~s;^YWjDHkcT8_WYrw_;s$#o+r+&^c157nLnt?*;lqdmU!4;NDL-O z7|FEBWu<0b3?~2|S1E@(Pw|C2tDrr^lSeTRpqw7}rfoagqvY>?~ zePMrR6t2s^t*`4ZrT$!%oEh@>TGY@z2#VXI$9ml1Sd$3KFAvF+F(_pi4eO!u5c#w-Ch12LNm`>0AYfEtggmk&9%t=q31 zrF2NUv%^|(r)WHTsj$%2a=U-vavRQayWPinYw<{{%$FI`dZ$P0&$d?1RS!#Sf^Rj5+zHeyn(`K6x?S0Q(^c9g57AsVj@0@(d+t^SJ8E^P9orAcZ z{`2#-R6Vjw(n}({tXin7i{21CyC2*crLjQNPmyPX zOllN|&{RGe54htEXnMQWbFFklv03X;-J{6G0xL^esM%V0ISr&au9&UIamgY1WruO{ zbLJGV#UQ7>EiLPerVSg~Eu6@?CkP*nII}S>XmNfOrrUe0aJNzMM1SMO6GvdalTlrn zoVX-VotVPKXa}{y)GRBY!EO5Hn{4YDZCAUW@q@}LuvfU(@TpJAzz3K9#Rr#OsM1p@ zO^>+3iCr7@=$q=%1*B$rGdX^MMng51(MVYYQd8HpE7!uW``Sh7otK!&DL*)6Qi-5? zTI;SOTmNMrt;$!<|43CnPBv_)K%dkWI)0HlE-ClHz}R!)2ZFMjPyJu};G)sL`M{zx z_|$KyD8?w!PuxG;Xyk7d4C(yY3CZ7k;n``~i^6~|()X`;>agS?oap;+cT&)#C$0U@#5q!6@L7-dka> zVui__6jj(gyX~IWL*KYKk^gHMkfk-0Qc&_1^7OcP#G`khIA}f0fM6#d zv4+oGiHxlcU7fLpo9^y=a16LiW8&V786-+G;;_dd<9MOu*d;+j`du@|k_g=Fe`<-{Qq+?z3tD89ev zPq5G;MCT%DK341ET*l3(4>ZTInvH2b+#D}6SD~aoC@6g02b<&Q)x=ubYwv#n{HW0~ z2lqnVf~~%A8% zMovjjnR=h0j`nu6L>_LaulV9|jin{6#!$bFpR}Q#v6<2qaj`L$PWsYtL!I`EGj@6{ zQzt;p$QbMA_&?NEzjnB-{wc3h)kC)Wg$P#J>OT4dBH?8<=DC>Z8Vg9n*AM7cstYTw znHuaR$C~Q@*jwzG>Sl3fn6(~MSBF$1W330=bMHN3t+O7RmRX*)ZYpq#(m9TAuwOAD ztu!9rU=JQ;uzTjw(FS{TOxj>)RRJ1QjfBTo?8budEcUcoINW0Y z!WWKkZ=K|hgnjQ1aiBt7Fj zc&zb$nU?&?+B_*yY^2yRmb;90ndmjfL=RZTd_Q8jr;|U5_~-bqI+ z_tzj%EO(^YRCanj?IBTU988Wj;D6>B@Gs$(pEls94H@t({^Z2>;ZY*%y@Fq94>kNs zeW($PcrNLA4U7Hv;;2Vi>@_|8X$`^HzC9_4Wy8cN6p*@sBGC^cZ%Eth1M35zyeU&L zen-#Y$^pV)U)nXKcD#yL!(wAKlN6-AAmlN1?r7v~S)lJnC=(f;Z4>~OLp%dKC?gMK zsEKc4nkq)=FHumYA=Ab0M-2)cn?I16wDvkdYp=tMtQXDtSDKm%(>9i@wF-B8scbAn ziN^^->w^rc4VQh-w8L8?$KEf;p<>ivPf4+2IM6d7ybRv5ey_jY@&=R%k{Irq^x+oMr{=G5nT5cf?sAKg8y;Eetvz+ za4Q|3IA%*TmbTLGJz}NT4Xq|V+xK11N)P5Vol5tE80aGLIiCQ~wiQ~Ljfs9HCVJ4< zbc**~Ci>JlqxF4cXr<5C=Rxdqn&~*!FvnJ>2X$Hl<@S%8k8hRB3z^-CM>n&;>&!il zU49r8sm{4qcDe0bVeE2Sc6p2Ja&1juOh#l(?jmC(F)4tbZh=%#O?zO-GM_;lxpIZK zPn+h<(N2whwd_k-eLogHs@U*)j@02cR}Zr*kEz1_CLjB*rw00lg}&D7+cfp9 zdRX6x82>)=JOX}8Yj%G+{)jalf)G5r{W5h{_EAusok0!mEHd_gBh$|ht#i$Uk67m- zG8!BGpS-SLqOLFG`NKf+?wKC~l0WjXf69jy|ITMVq<9S<`wJkvI#nTK{X6F!5xEU; zDU^go@3YqD4_WKMzN(|Fb#4(pSEWSfRC%<~ZaX*2XvbPNV%Ia;C3P!SGksa{jXiH@ z={x5^W3(TXNFM*Tk)fDesmg=IidMbWrB5(hWoa=QKLgTOFWwNti`-;!tfI(^zTotG96xB<>~;@|lgM zkTWX8&t!*#IiWoEC6bJx{6##PbQryZ7j{jm=WSd;5Sa8fpyw7j~(HW*j1OAg- z*oG%qYSAD_(l>@-)@b=?!ej+^sR>=7NJ++}K^P6Prg^CC-nE{48loL#eZQx%8=bqd zoeQ;9H4$0#ve1RaQ`&Qz9;eT!t(h9Rv=P&kL{uU>VMuig#OJ8M_VeaG>ij|tQw{WITKGZmrm|EZl22CYE z83k-yRzR6J>K0C83d0)n^kj0<94xZgoq5z#kp zkGf+fo^U6Nik@$xwW@~jPYuPPZ-lNi(Us_U4Zd_*SDUB@TXB_cVpd`$PXG(N6m!cP z2u2R$GB?4`f*Kg4=d0xUKI?@H>-#jl%N!;N5rfJ>YAnmkP$`WMnkkv++SsJdT_w&b zVT@HlTx+@{mN`>U(LA4JUYR1#4VjL=WU?@z8JMHa+N$X)V$6_+SY41z#)F9uA^5(|87MtW zI*g1bF@N(giwE8p>!(}H2%5|atqJgMYULnobhp3#)zK_yE-qO@^5go}b1=S*fSm2U zqm4mXqys7skq&UfU;JX$9GGkFixa*m=gwjS6cIUTXJtOF=c6D}MmpBrtdiS{^lB>` zGlx$=M##jBXRVovi5f<%q?SzZ&}sTvX+&2O_lg=XY?4g1Sv;)fpWHt3p>jC3@zDXx zydl~NPSB+@=aG>%C+Jw1WDHGc37RBg6|XdcgQOyoB$kT#b>Dk{*wLK*FisEb1#+`k z9jaEOe!)W`I2{=g&NJf9?_f5XCFzhe*$;M4sNhU+JC&DKfpnUh5QG_mHi+)sGpHzf zcZ7UNt%&3k;4_jFdr1^8R4x+doxzYwA;Af$v2ShqBAg2KB#8GgzDSCfC1XLYWr1FSos& z(viHR4n4#SW=N?Lh9GBxZOaYFIluy*bEJu6{q9Kr_VTOQa`_d}?U}|MT)s|oC_=2& zfKI(N$`VH;y<=eRfBc2mzPuzUN0ba%@rDyKWG)nYdfb<^1zTz?PjSJA1^)z!W&p=&C;=Zvp*43^Z{ z1d*z7&bc=}pbOqMr;^rh2yg3)?l_E-xv#Uor+wEbxW1exvKr6235WH|L~q5isRBH( zM{=asLAUC;6vvH)*S3Te!Syy(&+F74S;SYSt{Q&e8=)LQUnz#=MC-nomc{0ENGKhV zj++!F`U-Qb`x|z2ZgUn#51qLU?qgFFD*5m0^f}jUYJG#Zn+cD+w-K%2O*ilpMXPwz zU7&0@mHjNh%qDqSa}Fce_XuH(H*LCN^@Uj%vQWOwi!;)B;MQ%c3$o+`IJWHHzL>@P zj*eGn*8;v>p)2(CqT;{(IsP<9P~MF{qx;@u_1!)3w^pA;8|?>1 zjPGhq&NY{vbFnPG`W(*cJTw-C-Wsml(fOAbp9on~Hbs2gH2z}eUvBI6 z;e1V(I;+P20q^rUXOpw6Qh!3e&O-;bbUt<4etPt~_Rgmc?dv>rXmjVG+qUKElCRBt z|GUi{Kb}1|HqA(_XnO(I%NB6^!rB5_?f+Tlf$uKxD1M3WFm2%PO4l_+%2%{=$>Ez@ zJKCG3=i^+p(HncmYu84S+&ebc?+>Mj1=+&_MBiWdLtWWAiO_lAIbX#0ie343(;j*F zn+@0=Drdbe8Bo8H+?)7ZPQ>?`T{+P7Ix*T^a~Bpjk{y{!^>6r8etYT1pUSg`rt)lR z%S>glPVF2!l?6?E`nGya{@*_(C&(U4qahdw9=gA}S4jAZ@K6{F2I_EcW>Pv2&dt%p z_)lQwn3au9yN*9Afn#RnnI9c9D_4S-5ZDz2n&nKm;w;9WA=s=(VtHv2yKrb;F8pir z5@24oe2jUC>uSBu@c0*rG5WtqD1yzggtE*d6nz>Z6a&MLK`3LG6&uak0H0YACm2D6 z@jto+_q@d?Pqjp7xmkLT?_k2X(QJsW4$g&czWe=N*bNgFDv0>{A`scjVk@3oWM)1) zHZhkaQ2%#Zlv}T8s=mp-JrOAG_snf?`t~_!E}XcEV}ji}$*{2_boZ^hJ0{)TyjR>Z z9YXN(aGWTaJA0Yh<_SJSqEP0bVX~U;ROj8d?&!SxyT5}e%qm&R(_cC!fd!S%TMM70 z`EWehJ~$#oXvb4h8@UnjOZ>Z){lTXzpP&0i-!I5vFX4*9TL(HqzBdWQ@lGVs9IPI{ znY!=BQ+`&-U^p@N!p^5&Y%E!-=)8ZH_xv{4-g8{aH?8E)op;aO78=jVoENQyDEcWeO-IxnA-Kf-FQb%`ObZX#F zB>ir)l3s!d9(t1W{BT=i$v`+!Yf*O&bw{YN?Us^$svOx-Uml2*^fODhs&2~dpvZ~5 zPA%yrZ@AZcAgk(xg{aO;j#sDhcy*3T*GcXVsWX_a zlfJ0VeeWHopUUIa`Q%EkpX4@mLO0istB!Af+-M*5o0x*_k4x|19uuBl5M>yhBf}Cy zQ!i&b=3jn@0pan(F1C@#)m*}%n)dP})Vil~%be2q6IJn-+7FHhjenNd!*kEFmymk0 zmi!5KLi7r#?3Ti=epHD_3BboCv~NAVq|L3N-voFewK%0zg28*&~^;yq~+>ok@9zkoAEN|sS`xTLMR z{&!(tyZU-Wi|G8z^!!f{HqaYGM@ESV7k2fHgfSAt`4bfO=`3Ws?p#I1+(z)};hbs+ zGc?E{Yzy)-3^TqhEIop4${Jd&JZ72K&3(+9#UaeNl7-hH-O&V0Kl>qARnWAnk0@~eFU@^2 z@!vo9zhv4oG&YQwq%=SF1DM5-TK2m86TQcGV}YV>fx_WjqCn*E;3u|TvVg#e9DC`v z&zC{i^fD-+X_l}E5%Bz~3_^&$)2p|~AO%cm{-g_q6eCamm`E{Pk^TUrpfAybf&crE zLOQb1$3K7}JmP#jq@cd{F$9waLjXpGAq*kKFb+!|kRl>{fPWbNivV{Q-k(Mi%EElz zIhl8mfKY7it(o^+y}#pL$GgXwx!~7Bn{4914S*HIfh#b4XRztDqxjBH&YYo~7m>4H z9O^aUSz4Tl^$=A|8hsky2xGo6bR~DV-uf!B#;*`7&*}xk1{A7mz8}qF6S85z6KG*% z7#uQdz>{da?yyP^Qy6ikzb|Gpvu?!sk>~q{&XqzB{Xrw&{J0FF1_|8W+112_ap-Ag*+wn zqJ0lZukA|NotQCN#gSgO{W(`DJJG|b!^p1Jr1I->+*|vpXOlknCuZc!VnBTTmK&p$ zgk8~)W6JZVn=aO!Xq7$-yl}h@j2M)upzM(n z1nb{*F*!+I&ovf-icZC5pq_IBTO^myHTDMO&kY==H<%rJ_;|x^lVg`M-mpb~x=r3r zvV5!4Dt$vqy*vZtUf36H-@>)mJ0!WMZw3+tecTi*gJ3}M&ANz*$5ByZ6zs5CuY+L@ z83p|);vR=Hm^Y-N1wrQ_6-^>=m_cyu@sxMv@f7VDKl4rPG`TE0SwZ1gXaCbi zWZt?xZ4jh&J}wcM`aJgtM0~$5-wU2f;p;%*3yt4{sqsIq@LA&{6EG#(3+(8jg2vG% zJbd3x8C{Q9INMr}$J(vw2;M3m>ybC2>*Z#2y{RQ_*7&LU%Z_MzQ%jae%@b()R)DpY z&&(Nz)Gl0>YPU|xB1lW2KFOA`P71P|(#4&MtXwl$=?P6+qQavgWX>Q7s3asAA+7O) z?Tvr_iH9T^#AAZET_OI2ynVZ>(P1Z{J#Y(8$Y(Ce)ji)<9sgz|-?ke1viS4L75w@A zFK@J-JDbx^Ja?yVw7#>I_p`kBSHP#|#(B@bzk=se()oT#=B;GTWb7T5amTQX+f=#b z73xyu$#fZh()I38(R97rR5X)aZ6wu(GN$vSKl3w^#4u;G@3WXxRG{kk6QFKp>ze(L z23@v;lz*suFwFflzGTlqVjNB_88Al_{=9z&&x3ZN z@IRRx3<5c-y~k2Sc~aq^%)WK^zF)=%QeDko)BZ#)dn1vC!`h!_-kwmX(GfU{gvW6D z%f>4qb#Bx&WlYV8wV`CjBxmAJFdstPz19B4xGJLD?teMVj+bx0>A*$Y7XmwI zO|q}`v^wzUGr)%!cTPAqz#@EQyR|?L(saxK%SUA04gQk_jKMXjxrBURM;fqIc3D%} z*JQPT;$2pxo!x2c(E)X(mr>^zR8#0Ak_i8J0JY&Q9^0vJkKHqfYeRW^m?U;QXJk!^ z=l|T8n7U|y1h(4p&(f3G{|Qb!C5D-MwQ5_+&_0z_u=wnsaGZ7AozOn}bxuBY>$B68Y^b!LAx3>xH{eR+1J?ZmvL%!%%$#qUC?0e8n4 z`%=OAYZdF!y_Pdm@r`CHu629U*|wA8wAfqZ+}ZdUyFU677b|lvyZLXJ)|_bBv!k-2 zs~dRXDzT)TC7k;en3&mOo4<7aq~f+%$zyz-nBR0Vw?tRuv$wmFcY2W3Uyy!5sAcJ+ z6szQ&C#{ZBlYktnvbqtryw(pR{}a55TYxIe#^F89!)LdQEn>ooi&hkYVx^! z$U7Xv_L~X)Q6z7ZV)qw6Lyg^XPw*RDG)#Ls=G1rcSwhZe7DupcXYIi6MzN#5lYpwd zC+D#jyVm8$W`D7Z0@cnvwE^XRWWaoUWKbWStobcJr#Ae!m5(QF+I`K5_5!9w?IrF?v6+d>g6Fox^;-IF+`ioWzgL8Bd=S#}8FE(DUF#!Y z*!mg#==7vEB&(czrt=zMyLSbz5OI+<%&EEIi zLSgsIckHF9G^i2}EOmTYYi0@@@#i@iXRbR*JD|k8sK|gTsqd88VOmPNO!3~EeqYM> zYUkoIO~C-qA?IQ}F5(euGujc@_sa~@F8hTEd!*3Su~gaxjh{1_w2k`nSihpvsR|$Yxn3p@4DQbbF-v{XwRQR6qwt4_-tg^I z;}>BLMcH?LPMg3Sn7tCG$0YTDP9gwnm0j%au(>%aZi?U(QOc3EJB_>VTIFzm1mb`g zrq8AqkYZgL%_2?(+=gDAM6db{-zjjveg-2UQ?nCo#`Vs*Ur2_o5{mBhHH`*yqX&Il zjMc%tw9(!?FOp?+gNe{&;`BCsHoA7YhS79d*m-0IPwbpFo`|z%bZsMV6kgn!dctb` zi-DpQ+siL8o`f?PH@!h3!Ety#nAd5UsAV3IMZE5cfY-I4ApLn~t$}p&QIIY)cQI&8 z=SRILszD+m?G=v=W?3;4C5BmRwmHilv|`_ZE~FRB#GaRuwhnJ5iw|&jpPquUAe%>J#5LQP>41M57gJAw7azZEn2#XxNyl z|7Fm?#soXXYh?G)@DXU<`rZ&|(r_?<5ugB01}b(=j^}qM7+hQ1KNcvI2`FHS0f~7b zvB)I0?zCb*$ByqmVOYM9bC1x5US?37%8D{m$rNO{Z|pbS)$!D!sZ?;LHa>b&sxDtZ zmv0Phxun1+=anJqswuAG?rPEtb69u?wVmQT5&?x3Gd+4Jd(KD^XU^Oc6IH3`pwGHj z&Qkrk=ExKXy(B;rR@>Pm^0w4_JHvYueNVUU`2=rPvK3=m4h%P9pp?JKj+hvXWl8x+r7Tv)efA`o7 zm=VHVC*{GcYIyCxgp|mydF4-Q64(7}m#l?G8>-Bt0!&)X=bz;@dcYFjOK~f1YPC#JLIOL2ZMB(VD zVTta4Ce#YNcr<@;ORY}mv=X_NkjuU2K8he(RK(n#6Q1u?8SiW#l)vd}K9~#pvaNqj zhR^64zmbEhrpIVhYTJqdMD?v9Ah>4dTlf5$gqG$4xPmeek4B=P*+%J-^+l!naX)=s ze@bBlPv!-gZPNC0`oP-olzOCwtqt18;7)`tD^S!xfBMu(5K~pH_BX|G|I$EGX>U$y_vCUHj)(2jQR7|zJJU)jG6Ik zyc)N%YuxRjc>DO@p@PTVQ2a@2!&@3~=lEyh2Xy!2Gts9~zIH2izsW5C0jd2jTlS!W z&T1Ir2hz7h`VKTU42OyOw1W(C^Gou31V-|nR5v~pR=NVo>#J8>eO7hx&i+xjAi>z^ z8fj+gp%tu$b~lH$giAU@mB~A%GUMu=BwARkFVl@o#IzGRw%7Uiw&avn4pvMxzhcHS{Q%$+9jXWX_Atn~qE<;VqhW0n-XZCjt0 zs%gJ%U7cH#cV?CnFtE>Vzw>rjOBpwF*mukrCUz&it+0ooZy>< zn=dKwSH-W-tBU_9i$zL)#9~^r%-b}oWo=1`Op;*v-VL=B3B`XUE6ZK@IXNiG8yt1I^$xOB zJL?zWBa7eaiyO}LZmKI!x@VMdSJPBJBS#UezO?Spcoqg8I+6A0{Zfy2#H*9R#w)Xrz<1UIg604bLx1h%TphJ zqq_QU9scp6(7g2$|9=K(cmC~Bjnil}Cu`0bNUFvOs>8JW`Ali0NCh+6QJre`wD0~C z^+g(T$mkvhU(z#dRQ}0{^*c`hE{R_W)?RQRrd~5RK!RI4R;N2<%cv41i>bJwp=3`} z^vo9b^Fzsuz~o+{+^uiy5@D)zuhK!n3b7;kMI$ow=%({a6Oaz3-|G4ctLyJFcPtT+ z)OU~*41WpYbgc6M+{1Kme&Lr}6m(T*1gupDA(9=`lEtn?0nunpL+i{aTILq`n#P2j zDdB48stJ9q=99-BahKr2f^|lo*v^&s@LyMGTj49q!p^0fO}es`}s5S z1H1hESD0U~w`$(&(Q&(-*2p~YGocEQK*n9xbQlNiX8oW%xqJ#M^x zg|D*v_LKC1C9=96mzB@^lfL9dZL!adgV^}M-3m;VP;fuTm@2zSDkDMlU1a@Z>~m+3 zt$e%pO=_Lbq<)sv>UmpCaH4sgA`34B7onSTxJZ|+kG@+JO%S0u$VbpK$&b%k?2(q? zVMNK9acwpzP47e&aCKy>9dE8d71eOo*0CPNZLzV-c#E!`0aN)j;camj@1n9S771b- zt=Ktyq<&E>=<+${~p_MIhtZ&11^4;$Wk zAlW}gF@Ihng*8|jq0lqDq@_u8ZK0OQP@NGfB4%q_YD-j2TM>r0uMXP9>Ui z&+7^Qo$YRRPcL_BBJphAwYZ$L%3rC4^#E&b3!^Df&`##tRH3}X?l61qO8Uu=ds14Icpd3*WI-{l}d9h;HxFHd>Cq3kO#-H zfq^+^Ro0?+0^gNc0QdU_4H=WhT0At&-R>A+UgevEV2h^gyXNn&Qxpn;ZS1YW0lX$z8Z9GAm9z6S289- zjX{2`M-S`RRt1k-NX$Nw2D6Pid319Mbfnz-s$h325KXqoNKhT|&1`S<`-#5(4vuS~ zR7WVjLRqTkB@On+TeR+86JZ2s*t zx}$^srcPp<-!9L*CF<}2xJHEm1XHe2MiS5mUs7XldFzV??8-4Y-b$rK&eQ9pN;}aA+1}MwK_S^^9g|@0d4J zl%%^P%V@OK$#{o1gtYRmVwzu5Vl5@4qo{$<_zrF{TddJ=uxzKE&3NPidXU*UhuKjl zgwEB8skwr~0yB7Lr5U-_$QXP${(VDh^EPT`nT2ex;CH$mM1fHte0XONi1E; z4_6DHndPp&QVaP;6ngZ>5mauVfvzMZy*zg+59BPQS1bpQhk3TWJ#*V4EppHF=-O}q z-?r-dST6fYS(AMJH7b$Rvs1VRWnc;yWfrdCWdkn}y=<_ND=p-h&C#nNV)p5I2dVHN z^PETPa8)1njJU1OPQe!Jlvlu>=K;y|1$C(o;4MKNs7`HB7S$8=_>sSwtKY2F=X64g zq&B`3uv=HjIb9yD`%csc08(U_rig1NoKoyd5aIZ?x1psK_6j7KXieM?Hdl`IlO|u4 zCqtczfEwQL@YW>snb#Td4sD}q)oT*fh(J^gpI56XDhP6+s3DJtuUC6FOVV91tgo3_ zuTkv{UrTc#)vUp&gQ@~|KEIJlRMo&uy-P{cj)f;uy#0xoC%&pyuz8P+)5m41BL2*J z88vFv<(I3N-9=M{C+WG*Fp!kLsV76H2DRLoCYwjO?ge_OuUe;aEvk==*@Zvmp=E8O z6q?3n+BLF+#?5xhGomyxZGP0U*|Xx;-FLayyt)TC^-aX4tj=xuq00SXD?;QaYs%&j z&efUz!GazMjfbnQG#IdgWA3Ty%KdY)SNKA0RR+qohhFfD%|YK0+yb4Fv>|k=CcwkI zPJ>wUJf$*-m?Lzl+1`a|tVgHG`i<6K-J9rUbnQ;|4zh_pvsRm@S-%NB#87ih2F#1~IDAvH$~jA1J->H(;shwTctyBRkz)J*sgqQ&ZjjKZ6rDC@}-c(52TI!?gN!wa~ohmZ-(X_ z%8KP=&7Cc*HCY$jTk?cFq zvnwBwRer~phcdRO{A8YU282-AKIb$8jpM=}!W0hsMdP+T4`>+1k|A=b8EM+}+f0f` zBlt^A%3--H0pyAnc&c|tjaqMBpHCL|$;*UAyt+RzPY@@3y3TX65QyO@R%8HnB(i2_ zR62?tttkW80KGi<(%R--^!|kC8ts&G9}38u1^^4(IuTu()l~DfdT*{oAxp^?$MqnU zGwBON0nlV6CeFoU!>-&vn?1#JGyrd!K3T8*+XrC6#@u?x^BGLgRhnMH43(!@CP|Gr&%Q;ku2LfyZa!1;d73Z)e=38>%x!o zF3F#L6BCthp8d10(;0ttFtl1d!>XvcX#~fnXOJhr`lC6Qn-1mzX<#_IV>O5Dg#fGo zOG!dMD|RL;Bu8wsQ+Vt99<>T5ir9UGV-gPKh<-0D3&r2 zFC57Az}n0ZMBS#tA|L55wZl5RdP=6lji0SfbwF+EnZc|I(IV>)NYOi_J-)|>G+L+@ z;#@;yp2&>4W9`JBT-#|L+yV z({ha_l4Q^*D#q5_lmpn+r4VsZyuBS!fTm^GDBiwwXcV6wt|Fiocxu318bC3BXk{B^ z6NM<&G@1ra^wsR>>xb7!7>0ejeVg42sgQ5Vno3H=-O~SaQCq2@wqa_-&$S?NBY)CM z0~xB73ki(rA#ea68T^W*Y1G%`>!H@}9)yGlN5JY|X!AYts_^w)&dbCTnl4ZzlOiu$ z{pH1wTsC=U6K?LFA1j~tx&HDAriM>@HT;{Y;Uv{C`j{FfdNn|v)bNwxHAEm`0Zk3O$e2kfiuzPGh)W;$651Ra@l$oGe`0j^h?axdcbyY)rYndYIXS=C{$5_B{#Q~yCs*zg z-#W>FQHR#&ZT8f|gZ`$MG-+icJnN6b$=v1z>E z%X*P!X$brt@P@!&&^Jq&$29%zQJIeq=>n<&(i^P>4^XJ@J2YzF95aF<7hOO=j(8qV zVp>I9>A8kc>p6%TmpK22-6a5?i_*gJgW;UwEp}pxg1h8lqx3lEwEGSUuy`60J*wKt zf5K+XBen;ubJl9EP)J!$& ztGr4s{-wb*g_vtOF#4EE0O7Do{$qG0z>rF`;HLV2Z7R`%n|(9F!>oLivCj4NZ6$y+ z0$XLgT<+8Ux<9&kyfeNkJ{Wdx@T;={{INQ#e7(f&sP=7};`ldC*5ciRU=m*|LcV9i zge(J2t)zr~e+X6Xoin>?K6|NyqjamxEnJpYe+h_sC?`_cIprS15kuO|x6QGlY_>h?imDus0!RMM{hfe=^tTob8$b@qwsSM8+Dv226G z)lzMZCR#1l(+%F{Rj1mcn__lwMxyqmO)%a!pR5D&359Mu2T%3YF>uu*jZ+-sc;QZUO%eS{| zxFJA~rL8N4N%(=K|j;x@ju;|dYokT)qSYwleCs3-cfTc2pm zZ%vw*AVm2{b>aPpPik`L5^4p^=)r%y4K4ya}%3m)CysP;9zQs1T}>_^|6+mMLx;I+}UCIaz1t+`GtxQcLfj zByz8%4OK~*4$7>iwk#Y9^c>#^85Jm?UMS}QQ5Mm47JGM>C&pGa1t@pUm(vC$MI^m@ z5Y4_p{CK^Kt>fqxT6(OdR{Su$SUB`DA6}CmI`1A;Y9)fFX?SVn%e$Kt8M}w-?A!n+ z+%%p6y~Ve1;oyo#@f3@$ANY5inC5V=_WETcxFc?OB^8?gtED_=k}jY2N(!GVtF`x3 z$|j<6zX&fBU;r}mK_YJy8d1>K}-zs zGc_@|Q-$W=`|x%%rBY&6gBe-zEj@oq0~qF3$gJdZ!HP4vhAR)lGqrE{qC^@hikGed^qeWbO zBdE8itW(I_nlGz}_6*aioj&PyBqgA7ra4Udwz`^O2}SCS6v1I>0i~@V4d$~YW|sTt z7dap#4%;SjKXaBg2qK6X0}hBl+Jf+(q*gG#=(7%j4$F4Vp2jxiG=0CFk>(0HC4E6($WggK)_?H7LeQ z`F;h~Q>_<2EsYcg#baG11&n0J!W!0ibQOh7TWp$Fpy1 z?q-2vwf`Ff`qM3kWJ@fif7Db4dYQXcp@urf%m3J@|Dlf%y-3DRtTa?-C%k}&H~9dj zNI<|W)}K-n39>?uVdEBeXD2ZB5WkJ6SnD*HLF&%(zo)ufRVyDvu`IVZrYV8=Qf06oK zUr+dZH9-QKeKWeCVT@UP#38hS@U#`$Wiw2s`P*bcTdLrr=xixS#W(%9&yCm{7hKCnAyFjW9o?R(0xF-oqne}^$2h@ z@*~I9JNadj_3BR>Ut-ZMLepC^!V5c(hkFd9aP+ zmTg|l)@5{nm(^Ok!v5vXQpk)1m8{`6bl$4M(?(=9jbvOa*eA$LnH-~U64!sAoBn(Q zEvW|9mZTP~0F_cw=ppsW4UOdXbaaLCt$4aF9|a;c7J^d#(LC7+_#v5^vIz@J0U5Ev zWX-t{s>r;@%oeEL1H8+FZ=Lxf?rNH%vxYhrn+)!}OTi|u4=7~vjcAIh zQ%=6B>zb=WEeCU&O5=ygmq$XnO?Tb5fY4%-m!uhd>FZ>0>SK{+EdBxjp!uaFD&nFB zp%H7QQ2WDei%aChqCTsK?uDcJQsMbtB3%=R**^5zM9FEUPNG4v5y=DZ5q|uX6+GOs zZ_%%IhOO3HNHGE@W*+FH&4VBjG`|_+z>DXZ(c6aIdybLhA!g;qJ1oqjEQ-MdJP@-z zC&cXgrZGxk@$i6>>8d!sABFJ?WQ{*;1c81fFNmx<&GhFMUL>nkUh)x51hJErlqeew zLJWNrS+3w0C1i#hdpMOcOxT9RYq9aCz^sW`0C`2&rQY?&CjU;WA82O8RVk#2UXKom96&&N*X97iJjJHVgPvhwM&V z>1(Sgh&Si0Rxgl$pAp80Jk60r63$S95rkZ^qGt(1l=YXuX5KV-*4!1gRgb{TNJZA9 za-SzmXyPk}pPL{jA4x`y5>=p794T&WJz$X^k3LLuNM<_CcD~0VP<6jeLED-#$X?45 z%K8cWxmk<$>pV{qGHNm_mz#F2g*}?C`jvascXW#VMyDX?9vT*3&?okLA<;eDXMGVr zMN?$K9x+pjJd-Z+TPrrl6p20K74cLkIkLvSts*qNf+A^{Dpa_r&vptD7yH^K6>xOf zPJFMRZPH1bCuL)2c_{Aw=1G|(-iri~NYJ*{C#90*@jU+@f6jP-cy4mHKl&aXGgB(YM9+|YDl+4QwflO6 z16VY#cQIKtZ50sVY;&D8K4#doRdDeNJr9^q7bo>xkgsePZ_{(Yd+yb95G$1Q0X^5q zK1I&S&A@8am2Z=r*mAG)+<~hG<9`I{fuCOZ_^=rT(wA3GU|fDvHjKGgj2Xu_-0V>> z5oCtEMJ6?XFA0#`>)2}$OaGb^+o>^Y?X%F!@2oXkf}E023bpOzIW>8TrH!kppQH_0 zi{4G?pKz%`De%ETG8?~G-sM#zl%t;&yn3WT-Yn&nib#Ipp7Ix_^ViY~!Q2QA3{NIb zQHYEAj7N@IQs|rN#0G`HSHU7)jq8spU?W#P(E7cFUuCz=cLa)gUs+PhFQ3cw3cpu7 z)PD}IUrQ{0Snw39GzvQ1*uiI5R-yVnLO9S&$4AOEclp9bnCWbGv zK;UJW_D05S+G>4}CF#qc)c+mR?hn@=O3@#~oGJ%qp8*1@%lMzk#M8aY+FcbIfU4pZ zIx`($|5ltd)mSma$-d;N(vBn3UYxARi9P!s<($ROiu7$~R0_YNw#y3ILMQcqCc}NL z*f>67Ko*&(ss zC6tFBFwV~|a*^V!h&<kZJ@BINb(&g;T9nKk;digvuJ046uyIH(a zUH{nj^IrpG#(d7G5bpQ?)ia}eX-x|jEM_b>Hnlia8U~3e`!xBsAk@B#&83byc1G?z zO$V$6z3TWLMm|HIMY*JesYLIQ%3ak~WKXzqcgTwTE)C1&B?AIEt4Wl)gWc~vVoX$TVft}`6ma2wtl-jAk7FHU3@E!43t(?M8+`Snx*H~&YROG)Fe zreueP3ey%7j{x}{{8m+VR#}rf6$>v?`3hkCtzFrNKJk>i{2If$OsdhWu$yUuvkKr} zcNV-Xs+Q-`vt~l@gM-DA{=A2J$ZBz5=J3OSLEqG2g?g{!U&AqUDfz4K5+s^|%z!g! zl|eJ93j%=qsec)wSBfS{qNK}DsIn7hCs&jwAc*85mA#C%!>)80ZKp2XY1I5RFdSy8 zk@$w4yh=d84x8JUB|Sp9RL9!^4cl7Jr})a4_I-KrKE~I1?~J|wGeX9KrcW8d6z?Rn zmS?E4j7p?g5x>G){hf1V`F6O+^f_O194+R<%cr*=$n_l{Q2XCF&Qc|PHpU8kxKUeSc6_frv=4c{et|W9@tpEwW>{f z0t~o-Nc@jp!eWeBD`zPtvkGJ9T*5N>mVG}pp03WKHmX1?ytF%R9-T#6;V}s&L)^UE zs1oRo=%U?roJWWAP3gA+z7-9<)f734)VXwxdUO_Pfq!_7X2IX7DLYb%h3=Y)Bd-@O#76beO&^`QMcCBWEM-a!dQU)JeA$=^4Yoo6X zOdht;SIr&U@h6G5nNPk5ka?tvTX|cfyj@o9d|xwR*FQZu-aa|;PfLYtPK7v$$1f{o$C#v%!@fSjDGS*ZlLjD?e%4)RcXh+eeP0`Kc2%_B`e=0t(hOT5O2=fp3AF!i) ziuP4opC6?^p}hF!#3kcM_O=io-Hg(H>BfE5=eO;%u6u%i8?Dmreb!0rVeGT6=4skS zx7dD#(}QfYyvc_!XE0m8`gUrcRWSDX-;`wWOWq~au!BH4*3~`wXPw=B=eT{=HCs7C zIp*KlWF;2`mEjsf1)bexJ(yId3C6DwKdDT7A3MH}y~}3c3%#x2M?3QNnhA_X9J@h4 zh2I8)^Ou*%`KT>ia+94fC!DmQ1GtJ++SkfyzxXGLa1L`G)X;+jabCW z6G~n59KEwhY&#Q6?A$E+g-^^Vo1oA4T@Q-Wua%b0@s}kUQc*W&V(wj5sAa=boLS6j zI-zeOS%NKxN8WWJiN95%6)ROS`eS;S$o;`+vv14^`q;gtCyd~R5R9!5p8K&BU7*-j zudYOB|HN$Tp50#J6D0Z?<#=Jmo>x+I!!!!Bghh`gJzB!W82%dTCtX%_jlQ-`&SB=S z#%p4X)p{Y_fKT5{Umo&md(!LKLf*9Ak+(rp=a#o}5DolW%?sP9&b`xV0pJz5kMG-+ z@&K*rHoJcDc5ls^4T;Us$IpYKxZnKMUhkWS6|AciKMprw-4h=vzM;ewn7C@KDWyga z7c`BMi5Pp9*Nhbnk_0FuCcd2HaD2Z)&&p%P{nJ@EZt>m5ZqfH%^ZifmGo)+3LHP|r zS*sR%lAwO2$(-;96X62fj?;B7K|bbEQ}%TBQEfA!5I#l)p`b9==Z*;A}?Mug@Ks+ur}5wKzs0F-4%bg>72%KV(N?zxoFq^Ls8hZ5sk zf_cwdF|E+8fheHvH<%hTY~fumNr|ZiseM01Z0Thl7AGD4Qu$U{7%nOLm0Z*BAipe8 z3gohgck(mdOj zImocUQz9#0Y2-NPokfw#*Bc3G4Dawhgyvrw2zX~BjTWVm&n`!1Xm%WB zOH-={O@}i3ev0as?TTr*v|r177gt9&Yrc!muv#mCN8g}XScMUu=T&dr*9n)% z)aPz}bC)8n2z&cxm+g+#)1}4@)5kiz1p+-WBO=i95;33Q>}!}M{WsU~SUlLCi&|8k7{>fD#k-^*sN68&zO; zReT_<8+))_I@?rZ}W?IJ&ZRI)Qn(WM|1vBmZImBiM}t#Oyo|8@V-wGmoom8uB%;! zdJ0F1&>!7pn6KI9vDybS&3*KZFF@Ab(J6ouQE>^qystTaEo#jYGpljGc-q_CcGt)& znes>~#3MkEuAnxXns}60sGhl5m>`uNrlJ%K=m1CiTa-#U3;+x#>%S(ROQK9z`~geU zuzGxm|5k`<|`l zT(}GsYR_mU%3@teRGWW_eXWvvt z|1z3KRm}bO!^P&!!)5pEpYM_#_#RD6E0?N2i#rK_u!YxVDxbCgW&2cW^4!X*XTHak z?nIP+*eq)$Pt+WF3t1jC(EnV)VBVG;YrJpE3`o4v9%qXNg9fA9M1-e~$^`l8B5N=mC898L4SxWxTuRbaoXf{G zhJ%2lgs?npJafj$$g;*n8nrG_oxxh9O}wJ!7M zov8|GFMPW4H2|U_l_8-SPre1l2SF>s>nO>q(Q2$QhsDeq`t+6tIj|{^1!KF9bNe33gShmtltxygN8x48TbMVMZ$=#6 zDeNJwjI_S}=?@>hVih~KDmB)(QY8Jc`lzZtypN{h7f}NVQoxnt@lVhMT)<jL1$XgjQoCW_ZaF!{zMTv}dfaI_vpKs_=2g>l$jrm1=`YNnbxR-xWVH(i8 z&8~vlhj6dBjm4H#k#U?4c__WcG%?Rw^>rV?Qu2HUWYeTGTdQV`%N>@hg0ub{{}lYG z-~D%FwPS43XY;ul+pM< z$wVwYS>yJYkjw;I>j4Hx2Kj^X(RhhM9Lw9k1B&0m`%*PX-a5y>C`}%N>7*c_G|#>P zE?g(CC^zf`DBkXl<9!hs-Ih^%%^H$eS|LF*Jo?G_dUU#Vd@m=U?hboA3bwcGr+cDl zGa!~=iwnF*O&Bgo{dnU9Bs1IxM?-eejsV4!Lt_*9shVD8^^)Nb25fX!sbCC+i;RZ7 zS-f)ziADnDW~p%dt0T<

G>xyi^5LpFTC+IBaI*!;pd(=J7#>qHmMHlt)U?)bbkV zyA~H|lIVuo4<(9GVqrmc{fj7`J8a@_Y3qL8Ca>9dM^Q)L%jyiEnn54!PwuYQgpTgxFNJ-BbcMr!* z*WKQcMD@86_*0N6;HF$6*=~71^oM~xz?2E>A>;9N+_4GE=uiapEi*ob+HS^3&jKF1 zUToMqd4;NsVKqNoF5+|lG(wCP8Cbs6tQV#Q94O(|(_i{7#4|`zR6{|PPcwG!xDCTD z17VhuPE)n+GD=;04LMbgiSgu0qIiUvk?Q(>v)o5d3^JH$>GY6Up`}LzG3(Q5^kZ$>nBa2*;#KNT zCKyb4vY&I;UK-CQVwGbAgyKD`>5+uaQht0K%o^=2S~QNgD<3kLJ7=6klLllKC*{B* zf>Bf?H9#oh?KTcq$}s2Kf0=V0%d9Kqekg8i9CxZ5pmxGf+~ z2^Oeq^nxra)=3-?X2dqv^~KjM)-d~4km!k|ck)Gzh$0m-NS5Z9X~8tHLA;~_o!AyR zCnlOR&I}*HbXdBm8VWlXh?sj0Yxh@tJyH0Wlt>Q5CW?tLIriC`i~u?Td&v_(DDM8z zX$dr%`voH?@e(o@qxR+G@wYHLv>Ht@E984ZJ>l*M&NFgmI+DZTb_o}1$k(cqK2`a; zGhaC}S2#M9n0AuS=)>LbR`ys^UZ4xzGr8)i_}7fm2qTYUN*G-w;2A*)*8);`8DS(T z!kvylwqA~1;FKTDai|FiPv@3PYJ$9M=FD}s9Y zn#MwWMUdzjqvHLtCml3GBIry8di8anz0fto{lgzm1huH>FcIXnZiF3893^|w($D=B zoeh2Sn*Wz15SrKa50gOo83|N)d1 z=yoj`q{WYsMH#K#$RI2eV=7=IHGC{1DgR!ic6DOniJs|`IQ`P;+MUnrvQIog(n?a( zT2(De=mabwK<1^)#lV?(9@fv1JUQ>n<5!-M_TBCKIV@1%lbU7n}geo6R z1pOPOuDgDi2vXZ0O9VCICh(AFJYfNOEyKHx5j{stBKK^Xyyof;kUnbuBicVUS^sD3 zpZa0;&sDO2Dv!2*K1B40j|9W#qB_f zWm97Z{lEl7R*aO4WyoqBZ)PC{+$~^oa8WQrMemTImR?@bV#+YPmLph;&H6RE?{oIN zjakaseh}}PZF8>RoCq7wXG%N9o+I{G+SaUJ9FtkbCOyXGgV>c1^gm}*Un4JA6YoFG zEU-3Kc#Es%EvqrocRJRa_vO>(OA}`dSS8i=Q$Y5DG}FEba+!L6@>h@%Dug@2Z88GM z5g95dTIEW4YvCitlEFTdh`UrWSQ5J8(!>O_Qdt$>6v0OKxuKqS)u4nY#}6=fE=u^9 z=#KAo{uYL2?DwAD@~!DkRbeKxCycX0?&@hsW#q1!WH%;q3ii>esi));aD*U0tENaa z=lR~^wZLqE_?}i*dS2DHY)nj(n}x|jOg}#Xn-bw{4l#{=Ui^ zlOOIiL$gVoGNNsHJCPy@32#Y@rTn@V{sp!!gPB=rCQ|SFlS8lQ{-DJ;v$8538 z+^*36S|-kaTDZnG5PN{(f)Z!>J-uwT;P}M|qVML+JuPvOU-`n>gsxv~K3c6W&{Tg8 zYN&u6*4i1g{>Pr)@j3!2v?5w7fqQ+=vDk>`(h?jf^XCCnYt>3K;rLPc_3nF1tHW!w zSI|9Z7KAnRC#9a4J35qla&B%kIkG<|nmm#9)g{7$E)6lknF7jUBkPAXe}L?5uW4Op zsmZePf(j~)zbr7TKemsh&b0qN0nRSlcL=4#`y^9Dg$T!%SEEZP*OQDQQ*@Btfn~3#jrgSw|$kTPAc#R_L zX*f}zVn)rxQ`1uF#GZT!l7XF;#{cM^uWDf&W+1BG*saHK5Z^|Srq^qnrJrhgU&K08_sWaxWBlCkjU- z5DC-;2UuJvRxireukQ(Q;>XjJFU~8}w znGsqM1}6hKIUb}fQEn?OSEbk6+QO~!PziZK60mB3s;E`*0iH0T2sH#0=Ko#$%p_>N z{r&FmuOBjJzxQ5yt+m%)d+oIa!V0DO$sYcz*ag%-@l&DxWKL#Z4Fw96x`YcnrgHkZ z+A&{y_#e`M5Teksuz=SL-VeNtzN zLZt2_@xOkm`0#b&*Otx39P%p+fRipd0Rxbp{tE_h)>jxn_r=Pr@?Wg*t(C@BwZb3& zC$eAuPh_8(mehExj6IVIWL=+hHk6(%G(Xj?NPY*OH?qrSao;JiY_DMiDwdo)ItPca z?oQ)X`>x%4d7xqEiJ}%o-rjA2>YX^2fWE(+2z`(E8hsyB3wnyaW#voJcWOZw+O`$3 zs|7t%9W?eaLPg&Pgueg$^)((8bC&iM3YGfEe8xeC%v0<4H;}oYqaeu`)3X|8aLVeg z*xWypdunO-?pAcIP1qf{^AvJVlDJUu$WP>uSgr96xj*tR$vwHkchDI{?n(L(_v^R_ zLE-Kf$LETopH)OIl>OkTlzj*};-4rxJGTAngxyIKD6*1kw-7eVx1!M`eM8rM%lKmj ztI7Tibj`|cKgiqk0^AfKOV(2f`Sx!l^9~SZ?A*-VQOG2I}b*2#i|8^DE zmOc1&LUsg@|1%+fbtUf}MLp`;X}(LVK(}ASKiTBK+Lr?^F$hiyRF-4MBA2^s)qHRY z{lBzm5m~Dc0TcU~|D|oqw+|>+S#n($TO^0-!UJK>V)YZhPS!m1V2(`}Tv;A+SrD++ zttM3(ZDuIKfwTNvl)FPL2|dHm+&`waXdF?q20BJ&?l@C`eDt(qc$YLblea0RvNu9o zpESBlpH*06j2uNXWR`p0R9N*;{Jz(mIwQYq)ET+0Of6^5sv`)ocB>s;y*Nyq4^Fiyx5au_MUi1~|P z_hD_wq=Kx&T=!zMXGe%}?t}5FI^L<(ov@k;Z6S}xU*62ezrDgmF5Z{FwNoo>u}9>* zhk4v2mJkagU%2W?d4!%^9d}WUHu-Df6*vhOxGtKO;I%*$#`V@cjdn3Cla` ziwpEvkiV#oV==o=HzvD)P{>nZsSKG5N$5(n7orJISGi^o7z#Rh-w3^#|+J^R^m2u&N12(!``gB(q#qDJ*1FuI%2oM zGbwVO&x*6Vx6SCKWA}}_5FATe$1uM!WaTpV-*1-_Tif+VY%X9va#yjlL=MRkv|$;SOy!h zzmga*onnC;GZ}7_YLH}dm>0Gw6IzVeV`MaA(wr*Sc}h87w$WtvK-dcox3vkyo)wLF5E@{ZZ5qEA?ehSU@Lq&uL(OjR9b&$ z<7eoN=$iV9N(JV68JO81;3~&>!Lq78kY1`m*zdgcSt6O&&$cSxHrCh3%d~=&|MXXUiV$brIg)~{F zfmh#**ve#_G|mfV&ERg!Ue2{*`9v78bt>7rUTPxMTrXXaato3P(n*ydIVowx=JVln z^5~x7&6n(jITgvR2(dM<%~*X8*Fucg95Pi@Z|*2$+eb|{~=%7TS? zY#LvF?-R{nsJ3iN7P4mjLr-iae9^ZJPi)3@XbZYlrefR!U z2_xoVTn^51o@GhMh`IO+MoWwA{9|4Grh+~Y{%`$Z9JyxGqt*Q}rmw(=9g>m?mVVQc zKv9dS0D*m~`;fU_pj>4tp!wa0+=sS^;DVK`YS~m!1~KNSS{tNty{I|ytJRDl(kS@g zy7jj31(8OXa##4QNTbZQD?B*TC=-h@%q<|CxnAbinW}J+ZjDRx8wa)sqTZ=qoQmQF z$eD%B8CA3K`}*td6N&i1Boc-%l@iM1-6>_hTHsC!q&hJ$*>>oPZz`u-{*14+HiE)Q z)C*%e(>RkZq&jG8U+Ib@OAq^dV}D}zH_fos__f-9Ahh|N?b_VRahbe&+hwLOE$d||U7 zuxcn^H53YhTI&n=vFq0#5GPJ+go8z1D1gvirpjQdbR#yD1iUcqQ%uo_?V)Ndb}!nc zK(!^P?bsg~ui=S$U=J@lH}*;w8U@RXgvm;ejMzW;3lRwI3F(T;WpM1Tyq>NCtkR_c zD`Umw@|^m$FTIo}c1vX`+C>@ADDHU_bEsXL6EQ<#fyG4B(T&KPMT2#^J=Udm~pOw{7bdk7pP!1f51?D;~QN zqV;>%E2u2{1?d&lJ@pRMOf^x?x)gBtR9K#?{X9#tVZIyDsM$EadvCoZ?W8NjT)F#w z(-JIn?=%|}NSn5^<7LC^wPaSq)5@(0JWg#%Qwz`M!M&?9%SXAxL%A+g;r3g%rRzEA2R+C%J43+q?kr5*lHkKGRq@ZnFz+G+AXC-EsX({rCC#r) zauSrRt1{QANfy?@oL8Aqnd>T+JDFvcwH|kunl>g^z|cR<`pwA>R|Tw?NIUW?)2+ht zYyaw1XQq?=>6^5_GlQp0+A4wlDU&wzYHb6Gpr3QmzBx5x%-#D2(3_EB?%@>EtAO!;|gDrF!d?_^HkZp)l>zzMi?|c za~4?ES($RIFCTj1AHo3?-=H#?1SnRJk)wI!jKJstbJN%j*>7@{7sUvw>T}r=`+T@1 z(7xp>zHhMl$asGVo5EkU8eJH}XI2=8qT3Tv#oTk*7zHw<;^#(5?RW}VQ(?Fq|2v&+ zR5flITlUx4GdHs*C!FypRk3m3!S|FZ_SRjbNnlvdQrakd^RPDK4ccy-H{h`LgWc@6 z+t?v$wH!XW^rIjn7wXM+ZQwu6~?RV>~0);iA$fvwgz_1_IB~dSrFd@)6*y^b>m#Guvdi6DzC#A&mFhGpQlSTWiL<>)c0l?H2!^T=v|= z-UPx*LBeY<9LxpPrV;eQ9(I+nJX( zc@@Langom!69d+HKf9NnEdIEVY;q+%3l)!O2xU9^u&^e%B*zlUeLV3UgBgZb+t4ZQ zV`c_sZy!-h&JuuT+#bL7tqx!zJt3jzD7HOebLS9QWS z%cyeghn_er7l8c=%H$~wf?u@ushSA;(QGb`PbwJU?V5`VSUD0E9H6NY71e)NGfPLN z4nMMn$r#DYUfp8&7X2a-;+|y^dI|2@bM1x2gD0eGboclyt!Yg1a}We{@+Y7kDns&D zp)gACzMd*@12(e4TErcAE@mb%NQMq73yz+G$`F{=bX;rd(KosAFB0t-06SvL=9ZNMC)HL*4PIW&=t24F%?jX5{X zZ&r|cGM#moq4v1(YcnTbo=r^m2Jn(~3m29P{pKugSxv%OeISVUuh2z0`!(N4Zan(% zD8P;N*Q;)3|B@Is>jEx_vRK45qKP3TG3?x*%dOF&+%DyIBNxE^#xcL~2@bc2O9fxn z6H{^p1+rjCy5T86<@VejNQIb-UJO7s!e!BR=Mp`OviyKsG3Q7h ziV1d=kvwIp&9FX9P8gh^b)wV<=%-IlaK^nrZU zZcg|#be*W7yVtNU#b_p2kQIANtLvdausY7YOr?$+i;LQ4>1ySjZ`V-~OhCFdGGLWM z+8F6nx<8O3&XL+fTSy*jdUn_7>6t+sCBw*&l4&3y=^LGZtv}t{bW+?S?r)XV9yROQt6uCqwqc_fO61_x93}s<~cCFAP|Y zeZ4e-;4y=@58dzCLgkp36OuO2v{GnpmY+Piy3tXQXzl(kOERYgxvtQ7eBx&UI9XI2 zC=)R*jdFPk#G?J@i7`)GdQOdQoK-`@`8DZPX@P2=hlnX$G^fw;LDZJzj!t3%RK4MG z(J#^#>eg8Hp1QfBHX9ukgY&rCFnlSp$9h*hEm5HizY&k0kHJ`4Xz*Bb#nT=lD-tio z-*`dP2XT*-VZ5Hii`|v55@5RxFa82@R-{uwzO5hR{{-#R{!1W80d)PbA5byRWr^d* zkq@j@oz-gB5}5=<>Awa9?SBI#6c7|RoC;$NR0ssLWe@T34Ny?D2YO@~dx{R}-W8h# z8az@?ZsUkEU_sBRgag%Wy4Lg^{!K^=-q|I1DY%%Wo3*uqt9*~V(Hb$74CR=2HBIJi z^wH%rwN=gT!=oqPuKl+4!Y+wE$Gv0p<5@T+1k>z(wxP(d9F=hh;}tfj)y1 zmKOv7(tuTJ5GL> z8#-X1;Inucy<42pi)2kHW#v_sXy}sGh<=D)@!Wj3oS|XL#evld$y)A(wQ&M9_oup* zt^6d+6h4cEM2l28pDp4x7vy}mnJI`NI3ZQlfW(SK6eUWmconoic-w|2QypEpTbi3M z9h~ELgAl#<4j?v{tEf~blp-$!s>inF(VajPh~(?hHc$8GYW%EG)JWG@M;-Ry>;63l zhEVdhBqf`T!Wd=reboFXBy)v}4k6FfqCZjA0;dqO{XIHKuV$)zih8wZ1-S$c(y#6^ z0w7wcLvY=7PB1GibhdDitUv2I{z*U~$n&CF!a$y#HTZKEld zwRqs(M8eyzUcSw7NFuwedMSb~7`LIB)`P0l zgly|ClDp--bnnX#WLou-{dspYRllxPzV7$Fg0yf=E(6J1Z{V7{48bA5jpM)Wp6^8=ZYMUgxH0Z*X{}p z!-Hoihjq~!Hif!z+LLxh{4&~I;6&=l$n5wT-eU_+R~fHN#$_6ZrnjLXSiUKXO8rHh zek(XAt$gSpEU&)}*u2k?ln0dp}3p*gQ}+hEsDmLCQy&3XNuXiIGR}05Vnh~hJR|5O;9$$EV5bN88EJ%|~p?K>!S<-<2P9yt z76s{`wxO4&=(1#|1|*U^Imd4Q_I}P_n~HCS9R;cng|8Nl#)Wa@dLCx|YnUyq(Ji7# zejxqlx%!mJ!d7TjcwAy=+q7Ha7jlrSgcY2Y28_>+{6TUfhwvrt-{?{0ogd0*N}6v- zpK)2C9$lE{3ZJQK8z;L0W|)6+i2GZ(VqH4&Xz3|j0__0)fY<=)lPZj@C<>$+gy+wB z9ekqBzQvzGSJ?ciJHa*4vN^8MWhi5v(_>eCxNbuqK%}r?j8Y%y9+}rvv!;KLNU_g=S?w}7GLaf(IwoLeo{3N zN&0=;yHWW2*8FKs&)d)eAl!3OyuI?yW>KI7+}oM5oFJxg)l-HBtH=)+*(={bJ{~~8QU1$YqN;j&*=3GUgN=b=w3H~y+j1+=Djd)gpJ?#fDZh6d^_A7!?DkQqOhH<)-sJ7Euj{p)72 zY(P5f(FBY(9qqH!ZjH~kCg#JKhUn3)9vQjT4vam?(7X^0<*OE=is%NSA4qjxIL5-IvYw1|2}bI3W%Yv;^c`4`_HWm-~|b} zLX*v?m<=U|@F@;%?Z1(1J|h=4l3n`L{y?IlxnIlpM-`j*wb%w?X)K>;8Vg!ah&GB7 z3H!T}eeRr8Q}*42{odJgw1;-nlQCxKkD=$0U{n{YNK0je%$~hM;B1c~c1&cm3Jkb! zh)U3%cI-D=`Uf?h*QX0)q+5wp1}mYFe)Aa_sE(+Ebo;5_IBXB5Itk-wQH4)PZo>Ie z)KK-wC|se-C0129S5+v6SD|4#jI~f1Q)Em1Ulptl$a@@;#Gpb1v2ppW2i8jNV`93Y}%nEtUwsO5=UwPi-%sk^4*2l+8m(t}75( zKqPII%6G1l!4s*N0T?g%whiOqK^8YADYIJw8lcboI= zm+y^ym-IyM51paGp7LrbNF&boBn2uFz@b+}kB$ z3lUC5g3a`JW*FejQa1)9{R7gOg}deZm(KS+^1VdL@q6tG-fcybThiRqIslPh*07cX z>C@d^Nxq7xbx5{6Sux)0XbMOp+7qwOO-s1+3p-ohPsa^!j7ZnORyCaHjV8AICiF^ztGOrCvjycQ|MbdyIG%^Pz+M#v8%v zcl~lnxJUQyz=sFUB-eJ7yE|FUgYH%_jqil`)S$o#nJXfTwIA422RM}$TWgJoxARB;Tqv-&>8pLg$ zq8;AX=oOKfMEZ+5q+jS5Cma`JIj#ZxC9B-s;`hG0aA;+9OUd?1cbE6&MW^YBHr?G4 z|A-TiiF$orR_UAC_}zg-3u%X(G$}GDRYWpQZ>#0e_6LEWvkPheGtl9P;vbWZ6P$+2 zPGjzA&JJUuw&4w5X@@qZ*Z$sZ`x4I&qY#k3m|o^ks?>81FK?IZDswY5B&Z8_s2kQr zE!NQMspTcIaQr^*Y4!`FMy#}k-mLwy**~h_-=~wE$sW=r;D~;rl{EVz`;Uf406~$9 zuW`zKGKf7)wzu9>TH2|NZz&s~J=!9h6*oTdFYKhKSm>SUizGbSZ>ivW@qayVrR2B1@AI;atJ7LaVH|Quq&6ovllU*m$dx_hbT5C zO@-Kc67di0%an-Ap~rUde^7Pg55d#$p0CA*%YuNjabz#4+;9EJtz_erP>g8+Lb0)v z%h&WJ)k1H73snE5vL`F*;&V^A_Z4lKTa-8~4FUX>%6&hsr=dz5YmQt}!~G2%pu>9* zV2*&tyY!a$1(ohye&ek%WX(DHR>?blH{MIJYyG@p_dfR6ofY1f7R-+B69-{W_u`Iv zOJb1_@n^j7@p7P}-4#KYl~7RKQtP^2YZ`eLqU2{Bf9w&DGVDxIH5Z{J#U(3nZPu-y zxl3L)cGA%9-m%8W2TS&dIL_(so-u|e%0u$q-)8kvJ4O`8)vjc89!O$<|)ZL&Ej z1u$(|13+v!c!6$w3~=7!YF?$A+vI!4X-#Frb+-*^mm4R<9jmtXML~tV43e9Z`zoqm z3U~=Fcp%8FggrXox*l*H3c6c37yw>DZ%YL?nkqV)1zsu?WQ&D&6{(5Qcd^rx**aHT z{St2GE=mive~eFNCX%ep{*o4V_ZWN@;SX8hMMBA5x6PyiwqNO5`7r_Ad+du67>=Mm zsxeO88$l{Cn~dXs6wcNQ*%ljJ|9(`gR+@2j(#fa$5Om-#YFCeO?8Y}d+7s*A|Dr&7 z(TgIgzvMTz<7!oGZu8Bhk72tVFxM{U#~4}QtKYaSdG?EL13ld z_(1kb%n>_LHkVud-n;^!T!2x)2Hda0cX_@;9Ps+hK)&fIfaA95XjaZymtL}~v`rh= zhIi0&wGA+PRKVTxb}_~d<=)SVmU4w<{0_*uYaq^vas0|M5x6MpZ}2e2F56Kh_y zKmJEKc+6gKDE_!?BTwC3z?6?*8$WrXvD?@ITIbI`yw`6&>St4Fob5Mm^cWkz6vF`Y ze@t}IYc2aTjE!PLsn7mwudz`X4RGRD^s>L`WzziKH+|agw&~tCjE%jN^VO{t<3wHi z-BzL*I=*`ONUDul0}uZ!Db{FmDU^ z%^&9*k336D=G2jpsNa~9Q|{hjjLS71*`#9g{66Q_!gJnejDRoX?bh0^o%BHE82R2@-Z=;(#@2PzP}e~z;7&DPC)K8E?L0`Pw$lM;?O0~ zYAlHm=32l?`7xGs@*~TCwxH(_6Qe#O*88)^U z@3docro$I?<8@9_J^GXyTpoHVjdsNl^+}cJE|7wnPEM?{zZm?XtkkF$>_dENO&B@g zkh8!SZHpMK9IV&0oZzB6cT}{dgP6T&Ti%McMh4p8lD2{S>S(dy`ciC`w)U{L_CSlB zpTUwoXQ-W zF?^Dy#_(y{KaF9djN!X#3>#$(Bfen_8yUkvY%6388yQ39|GzQp(!Mf=HiCU)*g)Xx zV_*^M;8fh$#fk8p&2ETXpIphiF{u0gs$17bCTm-^Pt=+?kW_HjHgMjF&Rb%p$r`ATz3|E2@y`2X3 z{)4oDRW-=oxO{&i@_{>ao=U}hrQmduBv-&v&xzR$LP0WpvdX z-6KS}qXy>(ft@udwa2vbdUue+P&DiX`(gt*w)dSC78U zYNiDa=r^H{EFFzD?sILz=UmXr27s7>tQe3(WO7&^**9O0WBwCq3%}#H?nwlVkJKK$ zTx&e2Tj7MAMXKNERsc6Xk$b7wF?^J0E^4GqleZ5EkbZO9NGs_+| zhd!bkZHQfOdQWH*PWX$uy*qikPL3N&OAZ39GDIsMZv>Vt{AszBHv(sYelN^&;jLq> zN!JQI0*L=&M-W7DuJh*FjDp+sDGX^O<_4VEirns#;Y^dkRtd}k_6$Tc5@+e|c7EoA zT|j{<;>f)|q-St-|O@Ju8s3I7v;`EI${BpeuDw5-^v@ zb93T4r24Ufy+Ai$WFxn(<;fmIIF_HMB&&7plGS-GwW|tR1&1oqH*O-j()hicIw1Tm z6@e9KW)JWi_P^^#IeuHaG}weJ-D2#KFwCQX8g%0gPUZnAv zBEAY^*?gUa)mXBes0!1A!Vv7@H8Sz4&*vQFk)3wZn7IMw_=gFu6_4h-U0Z*G++HQa(<&c7N9qZ?jK-J z{+29b0aA2H5HZ*O`@NLE$kM`*{QKlE-R?H!Yz6MSwM2#2W$LS z{4hX@gGstWz}YXsCfud&dIJydl=i>aq+RsRI;l5+ei z8G;sj7wqZpxuon(rfeexmhn^YE6rbj$B^(?ZNmdDdo;ZSi<~)2lCOOp14MtHnl&XH zW|r4}C>!buYemL{5sYu1zAuq1K$5oX5>$P@`tT56{R27n`Eil)7#jF)FQK|5pd2u* zjP|%?{-v%xQr8vKRbQTytPZl7p*)EHmC-pMU(@o>Jvsvw#f%I&$dP(_q@E9a`w}Wv zt9_O3)RzxoNn3UmEQwvaw&9TxeEF?eC-`1+CEwgGh0#3H?(X!qhEBuMWGgz356j&j zR#tz=EC?^_g91<0oWTq8`Cm#yKc^untS!AqX*gvPtLS42xka2lBl5rykDx=^m6#%} zgK|*8@K^zPc{fuAXJ&R+_(;Nw&Y00#-rffgHh0 zPdz1MuyGbD!Q<%1>Gm>u`t|9OX8LApzBF?y&G_o?aR!-0X~}e7uDwVq5U3RRPQE1l zT1WxrYFK}KgjPN!;FcYKlihj6UaG%L99D#KPMpBReB-sZ+u zw)GisIKlzz?mvlw6EXQF%)rP$V%FDKcI)Me{HFle!d%(*FVL21a0-;Yg^ogE_ul_P zndsJH6G3!7t6-wfI-iA{;=j+QI^N?lpM3y%B4FKssX=r1e~Z<#1!bykKDV z!81;wDK)4pnFnh{p(`J_U3x7{fD+NYN6T`w*n_9TuX!58;CWaT;RDA?4t8I{kIH5b zE=$*zPA8jsoeqJ=L0lO*%teNjqd;h_aQ_;uq65O_GKEHkIibhJw|!qJv8j*lbq9{_ ziSAWpH9F?rLOH3!DO;N?t7)|#4n|&SIpG*PCfnVoIaECRpsHYSvhl(lRAL7x+x=%s zsri$K(dOsdhmhz_=>vy9(sOC}6Ux-9byn5cY|J3J-f9iAi(e5Qw&yg6{LXfemv$WrFP$>SE9N8+6QO7zevQ{C+8-ic; zhyjy>^77qbxeB6l_5nWUfNpwAw@Bbv8+hy~pJH5NmAkpW43TjMN;j~(%Dz;CPs(3y&xp49((J^3?e3>&cUtUD81%-`w?a4{N z?jbCM#GRpx*^jU}t)I<7x|(ER9c--%3M*!BWjQ^VAMwgiGM;$g3RkqO(6#VZ)iPTT*&_C}8JN8-)7Sh- zT690IELXU5`)}vz_Q8u(6WW%!`g1v|0vd)ohh9iib>#Ii79ZWKeVE-61>tvy=uNILww>)+*d>KZuV{_zTNOZ3I6?euD)PN7! zdDzdtpHQ-kMPX5T<=VfeErgOqFx|m$&eP_FX?4*YDoXO}`Wtdlo$41Y{UJS&G3SPg zBli!-IHkhe@>D*0Z!G-mYp4cB#@;S`2ChzEs~>NbvD0Z+d^qFHEa^G9UD20J1?eL~ zmk8X-3haL`g-yU@wPmB>Hwvt1sooi{IyR;c1Fpjs&sl=DBIYZIr=Y)5%^T#L1bZRK z?68q*shijK1n&CLtyJ#{-h&b`o`pu=o&?z8tdU2oifsqJBUAGhE-w#!M|RNa z-F7`u``ap1d6D@(SLjS=rWB=PsX#e_ZEITiH}II$>zer=p#ezRVH{5nXDIUv)LPoI zA5uW5p_u!tPZlntvkG!l(i_gH~;U96SIa3{QjBLj|h|*^e{Bx8A0x zDUh+}QmPUzR>`&(sX(+b854?5j_65+FNV1z~s zRPjB8Y{vtxbrWtjP%QY1_IleFoQKvI$QQL4??gXv?>vd0v!|}1%sXnkuI6YZVGQ=& zB?qNH^86R(ji?2zX_#En2sm+zH@>i3uP>1dJ`{2Z4y4O?1`n;jahSH6k9)+voo67= zkXOK|qEIgC+(pe&6*xvYj(+1CmGiJ%fOt1^s!iAkM#xkkiA@LEtPVI8uC3zpDR(Fa2iyhTxpgL;Zu2lXD(~12QjBnZrY5)N{~i9j;fd6o#f%aHH26c4Rp=FmIV7 z9^`xcFGw;A9_0GROl_I4fAGhTqVV>G#Z`WTJNVr^2E}reB^2x9nJf1`L1FmZB(|XE z+=jOH7E$`;#J9WS@lD!>b1+4}&0qhx^Sm0eWop}XKYKBrLFWxgIl8U3?eE?ykSQxb zr)OpS`L7p)dfD8#$av!51$=sP6D^5OsKN61kn&((2Y){bpH0$q{EC>ws~k>zLrW?j7CslUwknOC%4`Q%zg0wJlgtf5;4zOt*i)c2 z`7Q@pX3Dqe%M))js4x2Vu%Ld2AXAREA=f@_q>!n4*_N4!^)grXV;>~9ip&mnLR^b| zhwR+wTA^Mq6sMg+VfHY%x#A7U965@=lQq|IVkAvW;14mSshC`e$yG9i=yr3pWum_0 z)~uXa=V;6BrURAMpP%Ii7v!K|0FC>ZdSuJf#JKPyM_symYrIQwV`jD39-Og1p*$Bk zMs3!xOCJ_vBM!!zA(BZL46R=#7&COS>3Ps^?Br4d@p9Y5XH6O`7h-a~J224F>nlCj z40%E=Lx)XV$HuWu)Y&TbjG~W6FBceR%hA$wcz}-EyC=kPLB2cd>oEmERO%7Z8Ox-g(Nk`g{YFre3(zyTSBs5>bd7&7UZs#? zkbYn|-=2LHS8$Fd(&{v`%uYa--}wx9RR?{riI53*v^~&GAC_kL7eH(N?i| zn;4HnH39A6$D#G^b^M_^A5IE>Dzp!ZTN%d;C~bR5k6^R7yq1$wRQ@vIGPC5^NDfIQ zSoqaxC1z48rcfrjP+s^!y=+&!rxd$0M1xI>qxL*1aj^a>g_xWjgdkJR`?q-~*&|igy z{Y21b%-_#^E)?cd3Wo_xIc~gdC`$`_j1%!J`!A^ZxJw}~{aVA?9|D~aZL9y`H}ixe zO(p`|s;GVyyT5>&Q(D2W`C#63)q@?d?cMPC!3*j{PyZz{)mg>jF1!?*Jnp+^mtgz> z4o=v?ycJV)7RvVB$0;zI0-%OZ@_}6ZW|z2+tE^<3BSbSxTPAXgAFl2bE;vV1$KFB9 zp;mD1A;A*U^J^j8I=+RFBm4sY08T#+PZnEq!7I_}&t%~Q_2kXMrzNi-h|n6*LTq{a zz!}F4H`(R~&7`MPkWp>nqg#uup;_cmjT%FLUG9Fn`wlP=qV2A9Fp>G@lHVDEg82># zP6LU%_o{nfuq^nxS(PVT%<^;bJ?EyyJ;L?gYyb7QK?afZSHW@KO$6pH`09<(Q4dfekhvrT)lJF) zE1z)yA$+!7jrs{P%A0QlU>pNlQtg=PLOSh^P-GEd`lxi4oSK z?&&h+N;5X!zHDOZYJcca1i&)498U@!4VUitxS*R8y}iJfMu3OD*KVU_Uj~6W{?Sh> zG|;RWOgzw!P>2M-v&iH0-p`E~oGN6>P-oJze{^j@Etxb+Y_@dsEFtWf73t$(MKB8< zNX3m!_&XKUNM@z7!7J95Bp5KT<`m zF*+((%@>#P65)ZEJ8QLXNf{1)>A?ujim3?U5v{!}PJa6UX9=>d`2F-KAg2Z^oJpA7 zjI}h}?b)=eui@0{8Zn(Nmae3$t#N3Gd~46axLx6l=b$1m`>=vOjrr^r6khRa77DW6 zg)4#;9duD%h!PI6;7qCQbebI@ih>OK5YJA99)$-8f@G&nI&NlEx?CTo zRY26ei7ui)kaY~WX&YWlo^!}@on`+AihhZg+*yA2Czwpduk6p>mls1S$$syt*{O>X z#)0^Z{sLdGU#Eboo9i@JvLdy_ujtSG_1cG~GE_LZ{QfnUJk zj!RF0gG83;2K{2bx`(iB7gI$BPBby)#%JAfxtD8w-IvPmO+mSo@a|-hXi8-%p+&?k zA%cASKldu}qZF;s^l~eh;qs3*9nSlyl&zZF{Sj03FRQqnDsEM1eVc>On)M82Z?5Y8 zPl^Hz2-xXDxwYU*>DM>*WEY-;^eIk8NBjy%XOX{>r-H@yTCxxo;AA?VjQSKAmKu@j zdjGIw9SPczf2wiD*K7QNxGSQzZZ|!y`d5Hj_%1x64}xmA{p~pg4NrkRm2Ad{f^P9f ztWW({6<$eB8K0Aca0z12XOV;XiQi z_e8<$cm~GY%~=ktVZT~{V65fD#8mglAGHmt`?|UDDGo>JRp)hF&L0x1qk75JB|Wzq z=Mywk-;xEGN5d+hKXUUG-gRQnxh{&WBp(}qG~ImkY3egp<&njR&E#)|shZUB9e{^O zBDm2ha4}*}JAo%v;3>&!#frx$h~*Hn%WgP~PfZ!HD|Dx+Dl;vqm_c^YUEEZO_{r znT;}gYNyMl+14+UCD4guabn)u>??`GLuY`d%u?^@@EQ1U_m1_XCPLyX%mL9&fes3U z{MhsC*)@=NjTd^cc9`_Hfh^PC5-kQBqoqEAS>b&0$V`akkwEZT*E)}D;h>I~!1_!6 zr|(L=V>Lu@=JH%b_2l({_*9Vp7U6muD6G3$4QdmG)+OZ9OH4lTd$*1Y9RXu`mlVVO z0-r(v{H%64mG5eu+Rt+q8V- zkKH2kFrPw`_H%1-%9XSaP=0H+1s0HXv)2}Jbg`wFC*rmeWK_0MMqS04$&Y`9zW8_>x5$U_E^>g7AgfD zfni5%nq0$Sa)BDIMc^}mO)7$@_Sk$9nWflFHMOx>&d(g@r_}lJIX?mU>4+8cBh|IX zs`$b_=7*dWIDDWZw)Y2axulWMJ7Txr+V^Sqf8KptU+kg&&(O@i*xvrn1*npxvbyw| zj1;XB0$uX~Owfu&Mkd5vqHw_~ zd%?oETFt3JB5=?3rW7V99FKCz8vSNWn2Bi#f1$KcW0h^@eViya*GM}e6381mm*~+( z*S&66+QJLwk2DrCw9NL{`*hl+JsKO$FD_g| zBa=uNxj>yMi1+NCi&Scz%8LT8e(7Qs4SkE4$2gI|HN>n2UXZEazeNFK)if%+R=z_8 zJVFFJnnAN1k>#C{OblnY^roR;b;l&D)1fSSQc8&In{lS#4&M}Ml&~ulNb)80lMNpd zgZr;OwNIjxn~AvFe`^|{JCVVuMyOVi~`!+AIZ8#|PLXW@oaMnn@0hbq%t^&YTe z@Im_mSN+f-_@o)%`j<5I!vatj{RNG%Y?tZ+$A;xs0RZG31&56P&Szg^RpoMaBEBNi z+G__(26w>Q8jeG@%P+@Kkqj_stx1+Frr|M>vWs2e)6u6Y(m2%pAX$XzO0DL4$x^pU z%C^UT!QX`amovL%h2BKEz6m;Wtu$h#_CdzFU` zO!XZ!RSK@cbYro&ud9f*;Fh&_Nce?r@dpK3`Z(YT^1VkxHEz+nN6HRHoB>^Nf z{yHoOUzT{uC%c0UD)_9FX3_gT(}dIeWN4ZSJxyp+zSP^g`*^)26-5ttcK5ctKPYN@ zj=tHlcaYKW6q&HsXcVfTh9{+r05Nnya*ae*p`fy!v|k^PWEW5x#Jk{9h?m9K4|@yG zgZ&9RbcOFp))u;*C?9FA@GZ%M#rjpkkVZ|*n+v5Y2_@i-9fB=~OH+7ahDmy$*tB|y z<}__iMLMR24SNYCmiHn&KqjZLsz{^KQNR`8lWqk0fgu#9+VbU({lx!AGH;RxPboPiCxxPzs8jXT>yj74zh@X|tkDwBC$`r_dRJ)Q- z1d3W1G2G|Zg1FH}sUcg7If6$@AQLGrU~Q_(fLnFq&&C}23p`PdZ+CoLj6jB6A0 zgxl<*g6ie7`-P!>J>yhspUg@U8MN5zD&*iw_{wPGAy!vc2$QeIi-4~?oQ0qwi=~^G zi~C|^#dJp-Ka|W`t?*HtyF3OTU(6;vu_$>8ZZ>X~D1p|Z(9JbwY`+)kSpOk^S+=+G zW3;L}D_zDRb%&+B#$4Y{w6<{<7gyY^sc1;KMy?MA4iT+w>~SCRwrasw${|uZVk(}D zbinExv@AhIdsJN}}EcsEV~M4rTrG!_U%9MU`!=`PZEiA1nRheBbICQw$<^GSnigl$ zP7VkckQ#DQAD22fg#2}XE}vHW5TWFFd95_pU%Fl>N~`sONR`@_{V@1BWjJVwZeAmz zmHXd_ziIZ#{d7$bRIjl31gq!f3XO9zP&40w4RHd<=0dEB7Kf%Z&B0AVFDp$m z9;|B1Wjz8)?X?+_Bpb_IVldihkQtUE{`FN&A`Xshg-#V5?yIQq2myuY{ly#BasiVW$>Z-BW5pWZC{^2QMs0(9#!H>DXN13{3R$(S zr^8V2C%Ek?5J1P7mYfVr$(j8n<&$M>8tn(G*9fF&ErU~!43XW(M9WsY!q?H~*P><1 zUEyoG3v(25cL~(3j7PD@(l@|6r683fWlVGEi^QLiSf4j7j=K>D5Z|z{oph0zy}wD81uvlE{aYK%4tsPK)0SSCYe@lpe{CcWAf*_=~+ z9f?}3_4HI#n!MQ(p=*F7kJu#A`sx+H{Pha*zPkBob<=WmL~(!JoFU~GEse5rX|-Z( z!a-;U3ZBhr7ontA#3_fh#Oxr(Uq3X>$uMaf%@0w{hwf1*V6+A-zs38IU8%0Nybofm z7$%5ej;!~ttKuWn!OWy%d_a&rp3)-~M`)BBv+W{tG+V!tgb?q}e~PlXW)sT_jPIKxRag zKt@bN1=*hb7G#GXi#`ZDyE;N(Rd^t~8PD#4E?z1B!lOc263UKzF(CY7(y|Gq>ImJM zM2aK|;Jc`?fG!%FWBCwehiXb_Dt=9J0-SVcvrFFa9lcqpi9)aS=j^U$J1f*Cz5FV* zftxOS`3WxGwu0{G2TV(3oEqpV(DEK0fxWfbpRq5|V&kcTfhiGFi#1bBt~10o@#}IJ05Zc1n*RKiOAv;h*JJ_I|E-vB)D(kt;kRMPV1$5GU#;m9J_30IBix zC)gp`k=+?sY#C>^MuZo zIJm0Fz%Ch=P)&|jd#ChZSNIx6Bnku9!Yh(14fY`ob3~>)u4KBQ)SJU%IgRoG40#?F zYmy{D!bQn4y7^GUCMk1Fl{tf@reP&v_b%?IK710&NOC)^wv}pQJwb;71+7c|^x=gJ zZoNpv;{LIrC29{2nyZxZ3)dn&Pl6sdTGi z0t>X{0S(;g9J;=`wr+EYTy<*??B35~QwkLaTGzV+yY~_a#^5K{-NVp>;GAdSX+oo! zDt&*@{pt199xQ$F+}P5aQQ>V{FgURIq>M|8WzcyA-YXbV_fbY0$WY!TqpkUYYnS7( zA~aFUc~Eri$pPzHQEkRv!bHoD3LoMl%4p)HvUr6-4sH3u)F{3s7K&!_cyY4&9YFn%=v-SSHT3(6dRy5h7T zAizF(O1&Dp?7>V+;@IB_1SfXcydVX9oIM(P3DMwA z-JFu;sER=-c~r&0SF|=#t30)aP6@$S);`_56?eG@YFeD7Fx^;XQ*lkp7wPzFSaU#q zZ;o9=&UBoJe3@R8%z)-m6791maK#?ix{7CCrB8JFsM`JHF4$*su$I)y;O(EkbRcod z_v>P-r3>$hrMjhbU=V`c`+M?ODl1nulCvrvaM$}7eR4m+txqd2HjPEC!t$Rd#zL`` z)Lo?~9({^VB*$tts9~7aF9C9Lr~;=N??Y-Z;i2Ywfq#wnSp^1OxIuugG-I953D2uN zuk(X16E)_Xv`Vus-<9Q>YBorAv-GaJ?I}+JHg0=36W1M9~- zd)CM_J^CabD|8%I@k24g5(IE&*@(@e75n;n0kLf0wGCYy_DI~p9c%!d3FmM?ihvI{ znJUpK%r;U=-{r#S?m(68uW%3wW8g^B)5=K(?vI*0g9NXgxj_%Qor!LgV#b@5#$K6{ z^@3AO-b(55e=oNg%Y4$Y@GGb>Vr6_P9dMf2DBq|eU_5--9tM{LI|#Q*1`ZeIuhD_m zlO*&zJOy_HE$kS%-2D3EiNy3<9N_mo1gr)mUQ%XQttN)T))ArV~C?i0ySG&|Mvu3<+zHAO{` z8`aC*X{9K@9RLuJSrbZn8ak`8?|`P`QfP`0C%Kbl|5c$R`K2gGNG&;?%zLOHMMs#z zzv0ZUj=?&_H1IzX@B?QyleAmo_dezj>3O`mMbByo3$F?f?jFiq$}xu^x3eKb{j-U{ zUj}nDP#5#^nIgu3d(SAf@eBDQjgo*f;K-&;2;HvG)yWN7pnAPXf7pqACQ@Huwk4IF zFdti-1O0j*Q>Ry2?JCO1O9#zak>f+c{}s<}R~81Y?phL35?^e>Ickka%JV)a0*P1` z9p_;>0YFqK;?ljV@(F3ysspmVG{|vrQqX~3`;MQJM;diiY4z%87<1(S{zn7W{dsI5 zU!YLk*jzIvr^QFslx(jXJDhcdfWK~H4(A{BvF8ZXX#dunJlfE<@V@uVW|(MB0n22K z_QU2HZB8>b57A!&EwfhbT#OsC#bFhEQ;x1{n->nN8#{zDX;LPYXDmKtlwjuA9~3iF zH66Zb9Mbrvv&ti%IVB`fX&(XgtNE!2B*88N4@Tf58ASF z6bI^8^POC+Ik7qOWp2M(*XHpfI3~@BK%AD1az3U`iFfyU+vlFo7J77pkQRUI>ZOo)_n?=hNTb{+l9jzKC!TbQXwj;rnPqka~m_{9~~kN#Z@DRwRV zn77{Nf14e4`lH1dP?*1*Lx2s+-zrQk`kb=6P`cCGWwR27dpO&cMcL2g1Em)PRPg~N z+h2Huj|y}BG-BB#2^fOB>twDMsR@^NTJ&@XsbZ51oBtN|Z<&MM_RtUYlRLs!mLs5) z<8sM)P@uIOg|yB~6~plCF%B=aEj35qKu_IS!_(sTeao~23@wc!0i_`iJE}yi8FB;? zonMDU^oy&NIY845^iwN;1viFse}rOPm}2x;`n>C%eSGy-R)$$hSDY7Mo;i=Wk>L*~C330+F0D!j2|yJ4+_0ORG%xe$IoD4ZHF z=e<0MuxUgz3xH9B~A@XHTctCtW z^jI3}^RB>i4){61_P!jty2lwyxCm`{?H!o3M^%+Dk7)$Za23*Vy|ift3%>TCUu7tj z(TB4*o*KYDEj_?l%fpwGqSr4G(FMbD)-Ft&a>*BD|HAr@HCE90(@MS^d0ioa>~GqY zyys$f@+64@Q$(Yu`NVYPS$O4ZIi(%fRo5V8 zg60|#*3{v5jGp!=D=~Ly0Zd>I=@p|r1>v9cckG@iIPg`LT^B!dE?U{Nx>dbo3s|eV zXpN)sI&~~b_m+pqCb|ScHQ%A{Bdtzq$x%OSJ)IK= z9dop1CWZKwBuh{kvzhCifn;31@dDUwgOCs=YsHQMf^KXLL{FxN1}BkAi!}l*bl<<* z1X4Qh3La)RqAo-}E=iH5Ug0fTt(f~K$&AoTvSo3|i%=6GPB)jMH{eWU{(!>)?efkz zruHo?@PVD(fq^X&)uP_BoYqO!$f;SIoqJsLwP3*djSz$(S~qTEPQmqz<{G23ZD&O z57cV^i`@wibTd29>|+Fwd_QDO30Nb~t*CCW)#u;`Z^rFyT@4SFIEO&)Lmcgl%W=sg z(e1HyXaKl*)Cm=evO$vc<%ZG&TGNw4H2kCL4rV1-$Zb9=S_+6w9!q+0mrMSynp%a|w`-5xl;^rDfz>5*8p zq@ZTV1ZFfSEui2PPi%^pT8>VDR)xWtk!*$yw8ANE^_0_UkEhydt02lP7f1ps<#I$U zZHbra9wUlkA)u1q=ezcvBzQdUdw%a9FPhowetFijp7pF}J?mL_z*0#4hkZ8qHH^zp zX4s+0vj}xB%KKP?B2|*uJR_VoRl}64b?o|-CZxN$rq!AA!3X~UH_)8fjy#SSwK=HSEyDyC>>zy-=ii8*eY(mT8oJGQTsFmvXVd6P4D_IEt+ zaL#em-w1BUtIaJ!~2$JU)#9Su~02Zs{g9Q?qLs zlvZ3-?5qXHh9O&+Ggh3x2fniGYTQwR1=w?Z<{_u<^zI~R0Xg{i6CeDr;W|fqkcix(T+kH!+ULIKLEi$^a{y}Fb{ixvY9a1BS91-L$oME6il1Od`#US&WZh>w0apj55 zw{=jpydhk8&`W5gRw)@rD=c_{c?^_)_)=_?oYzmJ%ie~?=UV3c2t)IT#~yv*J$N(G zp?-7n0dWmlgLsP2c+4Am{^#GG2|W{OHk8nl++xyOuzzTx-dfAG%>?ik z2VV)vDAcD4*e_FmwPX}l@(8~uVOpsV1o!x+SEWW}CEHCfYv^k@!i$W$Kq&FS0F*9H zvKBTGSe-Uo?uq10{!w`on;ctB2dJ-ld@S;}h0i(4DToVw&% zir_eRpur&!;N`$p`_S&UbcyyIwihb_scm-Ow&9xW?TtqZ8jlY<`=gLEbRY>lIN*M8^dor#kp~{AghIV4`RCidMdklXTGVsH!O2S6#Db(!`pHx^}yBA`3OA1!6X% z>8UxkQ6A*o_*Elv?7f~UAzikfZmv$7M7#`*u$MJ=H>O+-Z-ZK@y;`e|H{C#{wRo;_ z@|ky9BgMoptwkERu)<;`nHwLM4>b$PSwgis@DZIQ&oX>zBdIAj>!`Klbn(A6hKoba zZm(8@Nx0G^l&5^PU~MgFHAAdA(q@+~#}+oe zn^$X(?Tf9GgCnm%=Yr!o^q_7>G(C|8-sm7`71ToG$#of~X)qxIG9pch z>$+wYc8z2emIxfV`06+Vj{0UjDY^!4{B#5cjg5GmTn20i>sXH!&GwMD$d@-t_wj7> zlngu(1lBJe*$-KxGcI7kpO~dPZFoU;EM42Y{XpGUkdf1@tSMzS^&KbAI|WrWwajkq z8a#%oxpA!}NJ7OLPyN~JMc3fL#L^-SbtK?5Ols8uBVfs#4@2VZM*;>9JU%+GT37?g z;5T57I5V%ZMTPPpk2TFi8L9EjlN#Img`Hq-M?Xxl*p5)Fd&vmfA8}R-h&d#Zpas5F zjCHie5mW6+m;6=8u%bJlg=b9guki24GB&(P6T9e+KzhYfv_!H1k84UhPvDm&&)!;7 z?)ncqu=bJN^Tf*T;L&SCs>tbO@d~;FPX2_92{P*H8PZ&561_lVZ>>3WM{Y=$sZk0x z+>zFio9-kbXt6?@@zC_>m=)6We4uZXsf{CTw(E?qnQei0*+%3_XMP|{V|;^FSJt={ zEzz3IzNQjT;&G35KL=E_Z*;+CA!fAkvwqRQ=DHG0($70Hw7~3?o(FPsv^CO>5#wvx z7&1py8HNUYZYf&xUp}9t@c+gqMaGz&kmU$_TT(B=dhnKn39EO+h$OexolASffJB|u zLeEIr@DhGt#A7fHJ+{bXj;2>|l0%wDm7|_rSK8x0)~%!)=HibjD!suZ^D=u`P2^q% zlKSh(?C+odhi$Vb4rUGf1Lejyh{G!4C{40I>mg}*_AGI+8?wR$4!JzxLV2IM@japg zxAQCs4Q3mef%s+31qkeS{+JTK8BfNB^9XTw2yYs7CYhNEIRzW3%sk3}|R`OAoXUtxNM zO6;D1{-D|`#GWoP_iVbkP!L$xay-s6Vz1D}omfBrGERpWr2icXAg|P@#xKv2K8}B% zaIFSD>&qgG4>f-f|5w0^iKUGID+pV6|FMBb$34C>D`Bt1)VyJ@Yk8l6lc8t07=oPy zzX{pPOg`TF$SlUVW56QAdWY)Gbtk{JMbl1B?wfbcqWBYL1XimB9`}isBpQ+}<0t3T zKjcMjP^A0Z`{GmUiv0pwD+cA|tOi_Pg-#snZh!z9G{mafzDA?WYA$s-tA#CQ7sK|&2mcAQ(%Kj~+1fa% z*qt^QjSc6!J8pn*-Wa+`hT(6DI{)0sleuQp;&V^VnZMH7_^3c&t(lwaZoZC+YF>iS z|4XBUHz*x0f(;DjCim4{T7)}6@^uF$fsvlx@WJA2`Y&mtsX)x`Ki z>77$!IXz*t_H$yRd(oiS>9Eos=N#C}j45)>-bec>*v`_D+V#UrkcBGr#D!9(QQsy()LC2*$XzjhX_1`vS0D>lpHuh8vGrNp(wZUOX#8Ud%^oxPw!R;x3=7$qtp#&eCMgvL(6 zyNb3pIs!MsnBw$uvybtUB~3E_SPQlL@l9Oi5ZKc53Xin1b7D8R`&3|aczl0e3p83< z8^i)*h zl#BWfskF=6i!-Zjoi3^4?yMpuRncweT`!d4>c%m{G9bVbS9$2k*cdWCQKDl>j(2&{ z!f>8qtziKPlNpn=^9dE9zbADpsvC{Uko#o40q2~Kb1<-l{?o2jBZ?FJNivci(qe;R z&ZCm`uqBwKKu?a?bBBe1nF{v~uh}X{uYgaEm$;pdaA=1o+jC^ygvGw1;t5WVtSz6F zYo-248woGS?`oQhHe6nd4fTai*+Xzo?&U7My`!t6Ou8*SEL*1vH0riGBR_#<+wpgC zVxj3=^dJ%N*IB#%#VYSW3})Ck&z?D5nFX$Otu}2pM+9D(U8^-vp0MGLz@*9UMH9_k z$dMhThyabeN`%MWdq;o*l^ed$=Mdf3r*vRrP`4?3bBbs9+jhU5=#n61tZ;vR?|WT& zc?1e(b{=f7xM6VI$g(E$nDU8&tftVSWKf&r`s5`-iAebhjfb^F>Z@!V2GkPQy)Z2Tbq$vb8n@QxOrn~&j4#@~I zvahe@<0=T4uheHHFULbGMcmj43*TPgiWV0+Q?(SG!-=Xe*{5_G#H^evJ%rhi*mO|j z@X(Xps)m|3bz^1Bb^fK@%hQN2EKl5^&NlASN6hjB(NsMmn$Z8sVt+k~I?wqlP|~bG zjK>ZtU>2OtPDu0FTXW&Z{1Qw{J=LTaMyNFVZ#~ow&5OfjTM^z-mHx4d6+&_iR2{ch z8>On%KJC*80U0Im_u77e`wu<7C|Mxzpwc1z>fO}CmeT9(Q=_Hx2RHCW z2lLvHGTu_C_;M1)I2!WRwOVlZiti?0p(*YUB0l{(SEyh}Aag*PWPvO>Ls6^CJ!=xQ z^M+}86ei%pL~k zsv`r8JEAj#GUawRG3_H*aZP!&Wg<@H(6F`Xs{Z_-@#0koI*63eK&4`o)U*%>7Mcd$ z!os;v4#iIDTCJ4sUxs82o>{4xX3g4Q!e2b~V{=Pl3Ssg4a=p%1zvWDtg+Y^Mh4T62fDVd=vdBj zwW?3M-j_95YbIlzgp(Xjsy;bc(y2kgP~P&?=yAC1K|x=L;vY6eu_E-}R_Gm^{fHFI z8;f!dy=7GH50?0(z{Ifp5zdki5bO!i?5ba$P>rF^bU0-`~szF!5*}l`h9z}hT!@6-4YIbZ~VoR(q2qJaMsrx#C zM*qbbe9>=)G0x^RaTHEY6DdbIBfE8EdXV{ow$^QI4AIWQ;)+*T+A(Z~$6R{dcPIYa zdl25(2%nR(l5_V^iob!jl6T1GbFW?Y+@j2M6JQ3|z21Er^*+HpveJH3<5QJhyd}Aq zZQH)sMShDsF;{@25sgEu!A*$Od~=2c))1Ka9IEf{L;TZs=sRnSVHus(%1C};w@mcJ zsQ~Un{EAzCbqBDUL;^_p3PBPgsDyQM*ybuDY^>@CIr&At5(m==^23gxF@j0i#y3tl z+2-NzohGcj?f!pBr$(6)OkGAyBehbGyE*i@zjgCOi9lTq>NqdDUYrg8=9eAr>8)*O zSGE0Cwf(r#`QY$@*;y^8R7CHpP*3$)5Fs9OMOC7%bsd=x=G<%$12 zof@Njf|f$*MOmZ0-4g$NE~SX=^5p(ns=vrV{WrP)=GRV;`;Rq`1 zKgLomRN#bgrA}&`4F(^)a~r_-1c7Eyy}K+PtBHaU!JL>ZR~B#Y&Dctr{m|oC;#hLR z%y+J0&SM-u+;&F9UcN=bD=v&^6B96-7|wneFP{GJ@HEDwq<(AJdDNSIjHjcLXA=6A zc&f7ASnKIXV+JMa%r17hV|L;E(xA^&z-S&a1e9d{m2owQ0TcN3aA|I%({r zVP76N`zKBLoLMz4IDVlL{%d21Rhs+i-nGmUUiE8BG!`e0mdrWH+Vm&SIlG@2{ESNx zQ52#|paMM6iWQZ&7yPg=C!Q0hp6P|wrhn;g3|kFEO@`UGPQRp?$juqDOeD()Zp8Rm zsE91+W>}k|{llp@VrPwWs?Q9BoLE_4=h20$>u%6%hy9VhvY|Mk(7&jdjn^3V>8 zZ>Xo+IqAhI-M5F+sla%}+|!xvo=Rh&DVZXk(UCNIhv^DRpn%9cWQ{Q?d z`!k-8{)a4y8UY@n+2U?Hp;##Pt%MrW&B)6T+OltYNJcR+6^q(%7^A+iTRuXi=gI$I zCV1(v`RhKrkEgoL8;|Bu4qj2{#Dk-txwp5<1mmh{y z2i~Yy^as73RFOPfHxM=1<>nQc%*XVw;`sKeMeBolal7ua^n%T#YU~_Pi)sF4#HJUt z^#thNPF0fq`HMK1|0ado|M$Ei^n^lc1ZiHY6L1-vOU_81DIK}xLA`G3=}#s5PPv64 zVSsiXPfr>&&bj|z;VUi~dA_u&iUy`<6^EVQa>=SIJ*jXfZ=N54YW@s5|8&NBI#Lu0 z{KNU9V#9ee^NFOMp@HprBi-pYv3TQQG#Kd-Zd86Og=f1_%VQC0y*Y@(K)bqzfc18& z^%~3JMWHSt)nIL3y8FgFn`c%s;2Vh3Xt>XFfJ8+@+_FFE5H%Jxg2GB!V+RH4b~U@0 zN!5-An`-+gTYNV-0Xb0R=?IC=kV)(z-6Eo6od3BujW@Ai-BUr`c9x9(a~&%3?qn5@ z+IqsMy1P|;A%?8oEq^st-z59)GSDB=C6D=VoxI#up?OgoCKJfQLjoVljiq{;C*#i} z!o&}CSKpvZ7V^@Zp<(Xa^rgN|jDv(Q;+E*lt6NXL`v#RY=yR&tQ-|optIq4Ie_U`U zCBc9M%|oGjA!mxrXx|tt$xH6uahY(!oFC-z@O7l7EoArMwt@BZ&Zs@UFtVU2N94Tm zSih)!ZEYvQy|r@>%-khTwrrq`S9L;Q8&A@sr{3~FfY zV1C_GzI7bl^SPj|^-J6ALwDfMIm}(KS+t|an7Da{p~`OIjS2fz#EVm=PLA*{QsVsx zaKYnDDKq@--9czR4qLtQU7~?Gs5SRu1PD9I)cy(}=Ua@S(2*!>(;K->=eZgL$cd zY4gWY)F^9Ob(sO*6ns>}S#u+-W_r|vgtarV!n}yYd-5Yy&!wuzRABTb{TlVQ#pp1P zuYI$-(nVBijFE>IDVScBOssjWD?S9e$zdeQKHsctNtzx&dXF+@E#C1H00CB-BSR1< zMta6LbLwtLXTYUZSJJ9+WAcCUz%^EO!7R+HY|PuHqNi#|#HpHFi#K(b9;JVUr&Y-iyf%gJ`4m5QP#K0P-_6MZp z3v_s@ZXh{FG7+lK%Wy_8Wf&oH5p>rzPx7-{!X^ax!vlFXC6Hq z-`P(m=eIYQL*~51s%P+HUOoMAy<+T1g&o|OHIMALn`Z-p^use0kxoxD@!u|GElIE6 zJ=6H^-&u@_%kmxb-|tu)O>8MNFBkQ+TTl|4{K-`NRlx>{>_fVoi$YeYzA#ijDX?gv zIA1PjrjzDHyO3Rx@BRl+1B+j+fZxEX!iRXVP74poYHzHzPSyqO>0Uj}lMZoz?%|it z$vI?AD_F|c{nxA8yRJWEjc5RJYvYtZwd{buh?X3(iU-_n5*J^WkEh@!&oj&_%~+*x zq~{bKvTl6ODm}>OE$7-!d*>nR=6~#Nw@N=t%r6QMdhC#OGIWgK&A3Jd4_Oy*m(7}Y z7+*M;UpLMEXsr;6!p8=8x7$0r+LUDNKEigl<7`{oo^>{u*S{2c^LGAPOj*{vf6%2) z{wR(@$5Mq#wn`gu+!h=}Of#;#fttMXfbtoxr{VpDW6@8ex})~{baC&#X&$mz{)I$HxUFtGzt zCYE+gR|}zs?)SVjrirA1_akzPJ4uy5tFk$UGN7$99K5Q-lIc{!7C!i~TPC3i!Ic>Bb zh9mz)cCuaV5vQPR>p3~ieE*XeeQ))@r~BWX=3CPgwGUQ1gBD^sN;=lgpuX_5&lgPy z^D{1T`_}JYikRj0t*4<{QXSaJb@8Hcc<(#4?AQP;LqgSjbYMVnZu?M`0gvYGm@f*#3b{=YmmY`-!& z^c{HOqIrccVhu1SJiLjk9L3i2o%Va2&YUZCE$jK?@`&jh?D;?U{4H*Q=l{&}Z*l(t ze_H9>|4km+Vs#FD7-(($FxQQpo|AL^4XDcBl+{gCi`u+5!VsBzTVMNAF*)2y?JS(< zy({#yBS)*8=>gL)!y)Kpgtv~XjkH+HS*LaN&Pu1~Of;+@*N9nJfdgBQ?5}o44P?pt zBwF)nB!Hmxh)S(HXB@k*uQa}qTRYA!x*JdR;2imEtCEO8I6H0{Z#_SDGThlGVY_p8 zCy$Konp!#+LS*qOD98m zdd5qgEBycb6~!5 z8fZOV{V3M%pP%w5d>HRQ;fy_^fU%G0!Nd}6ve5e0;`(!@jM9JIr02aKl8!J*M^HBN zXiI*t)OV4(lGK;v@;l{{9DZY?7eD2;H;c#gf}T!b4~rKZBV!Hw??K}XxZ+$?ad;|m7> zMW`(J8#1pod&FVt)agkm$rk|5WqCl$J2LD%?sxF-TXITP{6Q$$DvP=vjUqIoBo zK?x6MORg6>+ezKkb{Tjy-&*)&5isOA!roy&B`m^jVRVj_O#AMcxaS-9dQ&alS-y7_ zdGX%rd!O;V-|@X-hls7j%hV`Jxcw9DpT|y-yX-*1Elji@;bmUMCWEp-KrF;5R!ro2 z6M#+dLZWF;Q6Y~uCr#(d4)ojm1U6egfHC*e6=K>w8596dN(S5blpVnF1P&$KLc;X8 zLhqT1Ncw_Bi2R7+UUlX>TyygtlH~Q1-R)g%pzKih#b~?u<02jcR6;JkI?3QjTrX%Z z5J3`Xw;p=DqZZm$q;zZ@%21#2((Hc6iFAe7i*Dz71+hb|r^A}k z%Z3(bLsW`MR{|;QPB%1?=qjpPpROvZN_EZc%dFqs-l5Nt*P+Msm&T~ueDIB>ed(&9 zU!L?iFR4Bxtu{$Ve0kDmyrlY&)JXn)9BHsycXlS;)x*=;BNj>Ih-^kU6~6Pf;E=p< zpwpS7?c6B)2+y^yrwEcyta+Q1ldg2e>clL^{RE!=TnT-~x-g5mZF=;>hj5}#i-p>a&De?oq$UA$A zEOBr4i=4|1#Y_F-B5s7xkF5*B!67mnamLPba`08Fb;)3y(g~=c%Z#|+I>NHV3!&hF z44R={Ro)(}K;_3HQqG_us&yup&WvO9w<(*~3wxE#iPI3jeE0psJg0X{huO2zTqEpR zY`SsiF~~SYJm)nrv6;hgB(d(3|1irUF+9quYSn`)olzs*A1g+alzfO_vF;jt!t_De z&gYhTHu5Sbb_vU7PjsnU=tU!OL!#HyYjUdTDn?)_a#zrMJ*yUpP|GxdyunoQoB*371lfMZLHK#<}f7o-arG+Vw@U=ifU|Z;4k$3bBz?& z92GpJQjmn2D3a_jer8|Prszk^yS3Hn+a#>;@JwPKZ;&Z?Qo_x}S4z2M4O-=AGEgeA z{5caCv93XQL{|op0*RNw+R|!WG4Zj{sX`u_40f7o{V@C*O@q;j6p%0k88j(}_KV14>9}c=wJALMxV0%Z=D3=Bp&FuiuO)tC$JyaakEqs)A-nE zlkww^QF#e?>GeFfU;v{XzJz?p-6jV95eZOtn8pcSk$?~3Ky%k(Gd5Q03E^J%v|%KB zW=1SHLy-2yM6>7(rkDzzp$yq{-aKVCnpwD!BxbH;Ck{!OR?CBNVB}9P6?N4o6y+3z zKOD)mpf{Cc6oB*)mwL0*4B*k`dgXNrED|e1xJu%7Q{r;(iDgDOj^6_|Gm}Th6CMkZ zOAdqW0S~LW(Q2Y2NZ$xjVSSiIoDWWiV)Mm zfe$We$uT!a^TF5$G^wN-FzOg+i1?nI>YC+-;o04ej5Xv;&`aYSQGh`s?Hz2PgWulS z>0sGzrL}47_()BowJCpmIPfknvGJhZr(Ez4bSiD&D4Yg~56mXn1J2GYx+7AUIG4K&5Q^e_xJ&=M~9SXgT*dV7LZ z1xYkZN+6SAS|GFhXzBzbd;#kdbc9rs@BzDNN?gMm;fiD}BxVZEYJ%FlAf`NLU+TS4 z1lP0LnloroJEQu_In7^3Cn0gnpDl_%3Hnkr2h>wtxbyEpG2ME4D}S#AcyqlG$IF~+ zZV7B7kr=SRHUSd>>+WNWU@381`Hn)%js(xBlt5cJ(BQ%RM2MHwVkSx;-=#wVk(p;` zc>SQV6GvisutCB37k7j;61y}K+ssJp%#H*vrjvw`xQ9myy|LO+jv$NU2CLefgg}5z zib1m?T`lFT*w)g%09{asXp$&DI9-iX2_u2lFa->;Qd^-O8wkni$VCvr;8eITTme(3 zVRE1LU9;TBeb-#~7rtwT`(xwsxE?p@2N%0P!et6uuz4m0+itI28=LkaYSYYCHk;Zy zMeO`w#BQIYurL0=c+526Cpg?~<7i%D^Gr5>l4{znow0tEYM75$DszguX>Vog$)?xd zYv!7w5rSC@H&I`;Gx(0}5`;x-#=ck`c&+Q*#`n&!cVzYuXSZek#3!`i=-sjJ-c^Au z!O()v3E#cD4vwxO`C9Ck3y$A@_jjXpKeb+bqu;$hwwo5bnZsim3y$S*SEX)&-PG8b z-*~Jj(QYkxQzW8alc_&(?3=L%634EL%}pGe7`r!dY-sH6#If^Yw`AlsX;_-$|sq7jKK>fKI>yG z5xc?eDcMQLT3uOGukF2!ZUNI%1JE3@Uoy=B$)nnvM7hgpzXrKt1H|EWdGq}IYP+F% zGV9c+aaycGW&4JIjAue%&)mM{AK8bj>euZ(wf4{ns1QZ>Aj^|ZTVRK>ZX@drY=g@i z=bff$g>Z0F(fF$2ZMES*{y36${GA5uj@sJ{F%8>WcfVQIz{7Fm4K#b=334dgZ4+{> zO*f9`XT{DSEpqkimI_Q?wP=1Sfdgc&B;*?_G~cN{ zsjzGxjzESc@3ddCuK6?kz|c4;svpe73TR+!?}!`YxjF=)5f6GuDlzD8K!{Y}PM5XH zDJTW7_@;V3)PCf-u)r4jg^1&)m%>cv^F_b=_9X*&(PM@Y%EH zHM|L&b3_b zLinATsJW%g-?l&M+GY+iUNa{f4IEtTNE|!aT6m!jhn)duZlhH-`9H>f+{oN6>R1*|D;*3>5JTC;au-=yQ5>l@q~z?hG5WOmV$ z-dTV9KV`N3tR0}Bse0j0$x3YnKUJ2Cnr08+xM1)SJeeqsQp`r_ zua2pwb8gGT88AZ5nr}k>Y?U@!3m4LB4>q$eRmUcnif$bIuqo!|!Arg3n%uuJOO<&X z0U8A0*4z!Va#Lc{Y)*Y{9z0T>(x!~KbTy#Ji?kk+S_lvr{1pO}(Bhlmn@t{dy22!w)|8p+H~d+zhjtE~fi>W|LT&%; zH+pKl+{;;TD&Nev{M@RK2Fy99W1LEV=P7x2GI^|pr};^gPcYMg>VQ|3ptLb_%$vyt ze=r#ut%ouuzysUn4OD$mud4rpR07*C_-4fV8DwVU`8?UC49C+Os9bbp34OQ-x| zy~0jK-!S~wS2>ZMU=Br?-#jyz-x)tY-qrrdTuLWHMK3n;7 z`D@^>gTF2Oy;5uaOM4zaZ}9VZD}UR`8A}u^JfQG^RZ6DY>G-X%hQ&n*(zMiC@3C1@ z?hiKO-iCdsaGX3Jyo{?TF5qNlXlXlGwpHLcY(*M@PK&ifFI2#c`n)MO2WT)G%A#>0 zxYEEIA?L<^g-+3biV00PMOVSE{yR!(SHXpH6q)5kx50~6_wb^LZeFxI!sA6d94C?| z0R2(8jZQ_;IQ`x@F87c%Z|nqqfE1H~zF}nfB|fMu+{*W!cj?TnhjF}tj14ZV4H{{IKLADeAX)cz=H@3Oc1`;5lP>jE%*sLWb-ckF%> zOth{$+_eoz7E3=5%15myT96oOo-q7dm*0p~X z(wG@lYyCrDZ132J-Uh(pZyvyzwV835N3F9qPYvLo*I<6z!_Lsa7g2297$iPik3pw` z9m;Snr#znza<$Fv7cOrKqfb@+=aAi|eatv)@`tQwo7sD9jRs!oXsovP-k@E}`hD82 z3>Hmi9Xz0Gzs@CNkWops$thT&XqyY}1qtIC*O{?011*O(S~%|)VQ^7divqswejlgW-_K9o~8z&2f0SYD3@_0 z)@ebeZi_N#p%kF4HF2#!0DWZw}V9I#u^sxUAEals%+!v zF8d`_`NgvT;Fn$ZM8tVgYSKDndtn}5=UG=7@c!rl_7Q*4vZHzo#O5&dBB=wGy@g=g z#g)37pv*1&Si|CEq@5qS2de`)8Q0`wc%D`H)u_o$?_^X6xzDZSU-&6kftV=>06w!7g2r3p@ac(BFmgdAvm&G{7 zHyC(8Zp;v%IhT&)a{=qR^yJapYXzMIgYk12H?ZJ0BuhLnBrs=22uV@cnRGbu=I60H zIhVFlKZF_J*3ruCDwWIJ@3^zRqH#iYRBT9v*Pq1P(ww?qrI+ocD5S%E(-lGV2Y$@4 zf`;~iAJM;;)IU>%>b}02ptV`}$d%{d;Nv;x(hFdsd5eTq6`IQX`4b;uPHUwX`&~7|%n5AhpOa3QiO_(tyu>=q#~kVCc4J)O zeTX^jb^|oO8fq3kR;9Mq{e&ZSjx*gie<(nI==K*%{5lJth~R6bgrVtY42%!Qwx=V( z)K)9?&jfZfexbkDWi=>3ky5Ei3^521L&j$4(49EK>HpBg4yT_M?LnK{BSOqpT7&`P zf3QbL|J0lD3)LUZ@sBl~K$_IIQ`R}qe#KcCD53)Fhqh;uWi$%zIC2<9kldZ7|U z1HV+3$nd>U+XNVbaTf_f>4k>QP<9M&Rr+~VO*U0+3@x8$QY|%5-fAUJ!)tQOK^uH> za|vyTrl0r7%^E{)KEiU?;e|fE`9;3!`lSjFp{9wI>EtB@siah?DrVv*cdAHdVO)M0 z-$l@hcQ0OZc+XSw)k1G zdf{zASM%naMCb9?SEJ4*kM91>9XH48_Iu!YsNcf5q!Sd*lsCP}AOK6-DvILWpk4?7 zl}r7`gm#brPw|@Ze;7y4_y=e#x{+?L0mg}yvc_d`?nf(|SjiuO>^*RjdRs3zZ3QsB;IycYzOOgSus8^RJ!fijo>jc?;!G1w>{&7} zl)PLR4@od^5jm_B^aSZPlKT1SRF)d8hgs|%TJjBLu@;#~JtZzu{NS%~WLgNWUDgBl z)Y)FwMC3BxCB;PN`7BG(r>6^IDOzJBxsd#k9?X44-4Ji}ltR`^|H z{X%$*aMP#0YP~lDvU#Q{&wAmIKQsKYDioee9o#~QkT}j14%zQxc3(t7|J(!PbOm(3 zTSep?wad<)NDr#k=D|9C_O02#*ILe7(PH&y&w7Y>O6DpG6g&LszheDkvM{kCKbAG+| z6}a$(Rzm%2O$b@_4-UK&F66}Zm5UN$#vsWL3Pqg_d-1u~sz7GeR~fg6^8mL1w@f42 z9f%*!C7Reg#Qn(?ft>2{19clBt(7xWKG%6Fa7W~J-v(fKX893wBdv+J-2B72%yZGW zmA=b;RvDc8X1c#Mj&=1!xc}z4H8Ad*A>IVLuQ0%K_V*3pXzK+Pm43JaB55Qc3v*5Q z!ZTx(4uAsJ!K#wdt!0Ih(dVY=Bq) zmtH9Mf8#XmxxLAZ5!NmfO@T;j{F%WXFs9--yanlS#8%C4eU(kP-N*oe<5P&;*X}s2Hp9?P`-u-9W&C` zqGr7?m!Eui6}vZ42PjvXs2mw!#~PcZtqNsCxU}M~qMS(j0Vt6h8Qxi4-pLeps5I?Q)-i)x68}z2V56p&s(+uj^s{QX6X{oPtn^!Jw%TpzE9D>L;>(MwuY8Yn z&BqX>>J}pv)V$_4+nNL=8G1(g|0*S!sb?`VG2Mi18Hx*v@$bZ zH)N)Dg19VJ(uG4b5OOBo?TidRx}Z@Tzs5}7p~#a0?L^vCpNEOfg@zR+WM9YtyFPK7 zAp8ox`owo}>ba!TU@PM56ahc*A)l7Yuk{RdfU-7<@u1-P%AorZd0Q&a>tA1a?nX9K z22_6~EbC$9>Ju7cx0O(9&9nY^n{YF}PkZ5V`{Q4k@BW-XlEl}kRa~(v^ektqH^Ych z<%xQgdUDoh%a@1G&r_dRM2MB-f(GkZ!AHO55YSF6CrpL>xxz0*lgoWM>-#tPHfDXl zlSC+(&<<{|tmX*2$X+!*2AU04XEhFBWdh$JJe7`2668;51QFk46$Jc3g z=CoECt_{joY$f|MO3E~mOfN|FqE+`SG|9~rs;@k|tbyBqDEY@uGOM$dTtsiIHU3Pu zk~QiaC7eVFeCrdM4esYxfP)i@*t>p1dA|YeyC9N4f~S`YrlPo7RT3G#gIO}aD6^9$ zE{m{_jupl4&*j18L%e4N+XHK2xAkI9Jh>QEt)lSyM6Kyz?7od9v{x<25S;bc3F&yb zdkC@am1!@E05)Tw&W!>)(Bvh;X8ieth%yhHHGZ-oes{4C>$DHNI^i@Td5y-UqA$?G;TZ!X~`3^tOy(SwnKHq)oGL<>LFx%&35xG73-bNI9 zk5s7cCj&%e=dfEu5kOIqxf$K0_37|NElH}igUneEsO|1M!9U1-3BNxBxZ-N1`T#w| zE{2UCG{8#U;J3b#bfCSpCT}dv{RVIos+COfRab@FAiowsYt6%2f|A^+(7Zy+Z@1aT zCTS3{$+1+BxtO1BymiO=QzT7#_s?11V)Td67Q*VlJ zbv;kHnCzyC2Z+iR0T$IKBnff9M<`&C+X?4VrW9H-+a$lx#{W?b+nPK`j24TQ%CiGw z1F=(NcljhB7r(CrR{$4tm7OZp_2LiJ<0r-l4v(qKMcH;H?kmc(l6T?Fv?xcG|9jCV zW+aA~J*)xSn1xRRlQ+dZvno{9x@pI#r>8){>zl;&-kz$q!eH8!Dsceff#R{(D-7UrYm!lx9mq+5ilU4Djn0QSEe_~+b?Db5oW_53VzDK^m1z968 zKT4%h4gn;|G3P2s!!@8pmZ}vyJeDf!*<*F_WxnIs~jL?A;YfQUF+r29?Gru+yYc6>)hgAij%A0 z64t#08cC3!x&sFa?vHq#O2sKu+Z)zzL>;pWWSj77CZN-@7FIzpIQRWvdQggo3p~X` zb3T~P52oXjXei6o4(G~3yJhzWJQ%jyJ-Y?7CUqNnA&(~yNE)^F$c6s(ss)<`kKXJ- z>W60uK>5LNI)0;pKm%80(-qt`X-YpMCY)E2w4sstB>PXsA}!CVERKFv{0I4}(=#Hx z;2nEd9%Y0-i9Hlw`zd)KoBimxwPx98Dj_{I7`c7hG*BpF??HwBq#?~XC0LzxD)6vf z67j0Km3*u}jyFE%xphQ7I)l4?m&v6XctJPCHw%SifJou44yasS;E_;C06$yGW(VQZT*&4{Gqk~ATt+97F^4pBy* zrxuP1Mx1|@xFh|Lew|2Q%+*M$_Z350wl3@+Nf!lQWCC;@wEpm8Nk7sHBn|<>1IL64 z@9hWv*d`>MFh?WI@X^d1ua4NYvL{voxOIBSjfL#V2%O{~#{0qS>BxCH9bxx5G^i6< zUszdkv)8e<87RLebU>nR9=k=YR>F6YCd}X<-HfcakBd0ZwT!bX(5yr`1hxeN+?u#!KJz5-GWom!U%mtCA?Gbc=9{ltx8r?_Cq>Ka_ zC4rA{i(4d-GcuSPR@KZN5_ONazj*I=pB)9c^j1d5WQ+T2`573IMmx-fs-F;`0yD>Z zudmjc`bK)re9$cojI?Qd%fCI+N_~gA(#y;QIK~9{#@CquZ+@OQ2J&vC1w!R?WQ3+l zmAu?it0*y?O#MnfI?`G(g9hZZR*cjqlS7FbDO$leToRZXlz_^==MuTl2MT0x%~@Ou zPS->-my*MmqiCY>*eqzehs*uU>S@esD>-7QJp3=Toy&%H{0y^ol?n(kt?{`~F5?{D z>D0&Zlr?zU+3NJ&Gpg!WYxN4%uh3~|Bt1S7Uu(9B5rND~{{9Sc?kPh!5aSCN`X@P1 zv20%gvOs+8Ts}EgY9~{g;}IoFHDEI~)sJwaC!}SrMzQe?%0eG*mal$Ae|)0*|9Y{Q z>6COzOxfvW+FjZxeFOQeBa}8JmVhPsR6oJWo&-|>Na(Ps*fX(dh2g$a1G1&X*NXR} zg~QHP`QQN7p4Dm;_DEu2u7Y43)UVu1 zrSw`seagya?*`6hWlpb9Rfn5cdNDzvQ}fh~kd+>=TrFQqN}UH&#s zQ0zV);G$4NX!kKpEm})18zcI;EYXNf_cre3l{d^kWN)|D>$rUH{Ey3bTGiXQ>0|7HW`>w%uUED9=8*lT zif?fd@tz?aW06xLzNbry3w>*~T6XUsA^Ptw0=!r$pwzyo*<5e_CO!*;D0A z>f)+OOG@-eL%I7{2uVFh=JU8oxQwUx+F;4K!@7846Dh)houTr!`7Yz6458t>UmzO| zYDJOlrBJ=IQK9zBxEgR(j6Ql#Nk>%=Lo4}dRsG|NtNPaCf`r%5d>V>%OcOyvQHxvS zRp2+i%I>UkuI8rV8#GlE6ihf860|svUo!p*n!bzcc0CpO`&?_yF?z!efAIrhs5KXc zLgm}%XP^Zh8Q#S`tlBC&S*6a|2XQ_()g&xz$E-LjI}m9}y`TyyB-KJ0{%(1{`wY*S z36pt!hF~{@*KR6n&@`(WMg!|pTM0Kv9AB%wZcg2Ikt)a6YAXhLc;*{sCb)&YGA0Ql z<2Gev{0@A*r_67AQ7;i?ILo6KlN9sfN=tuUHlNfhe$HpfNkQB3YAW6av!((c@q%^v zgy7^Wuzt)?(T~1XYAM9X&?UP3Dk%iF)NUMWbsue_^Y|XzaKH+d3QXn|fyJ!1Xk=pH z#W2<7R3Qp{E6b7*!%`D$K3@lX2kgeP9awFZrxq*MY+~PH*lhVI4(*GwXN+7*)<-v=KapidU&$z5qL8%29>sp zx;@2Kipw~DOo^46+U=>Zcqbzp6Sq=nJcf;S?wjUbJ`GQ64avN78Ly7kTk;ZrPBYAU6S|>!*m9YK2YOaw# zf)k!`rGoe;D+bFvr}Ruy-=t}1dbxl68VBy$U+6Bh(q$Q)8jMq>??rBUG-5YJoP4_0 zPQwpI>_}lc5{cNO(-qa_joh$h$ry7Ltk`h~IlzE$h%2%yN7|D|WX`}Q0P;4Pny8O4 z=K0$8Wb$R$U|0qG>e%2$$?l`+`J>(O*Q!kzZ!o|c2Et<07G)D{Q+!Rt-S46b!z^hE zsi{MQ%;f6e*U}GHlcao`HF1Y|pk>fc&?BBQrPO{{TfWBk3at&htg0s4DELLvH$)<0 zQ|GfXyeLtsU-psX`%T%KphD>VDTc=i%nkJy<9M*0rv$N+dU}J|1VD!dfcqXyH>WQ& zzBX#zjb8a(&DQYBip&|9Ht_oIZ}Bjm0?unA5lQ?AMlsc&6q)o#W?pE{6knJNcm0$Z zK(hs2TnJn{3#^3?3W=Qo*IX5ZVn%8PakFk)*PDW)H=mHDo}|K_?BPc#uf5bG3!|A` zYI&rlVuaBP(K+4iho=bu&PuU7QA|v52)wxnwVfh9(i4Bug<@6kn-20Eh1}jrGH+KxMVP~G?HfJ^ zei<@S!*y$O0S`Uf+nYRvPvfxtT(Jjh^NACEAFo*6An;?KAr@#nhu4&0YP3?<$kGQ! z58$j9NQ^2zU<_e+{jEoG1YWXaw;9Qy%0hiNQzArbMT1#o%zW)cjQlI+s)483efe8D zmMR64tJKfcl=&ec+5P39;K9U$l6V9%LqG(dUyHAuMUxouuaVSR^UMOjFJbk?PUYjx z^i@<=U%`;Ab!MK;xJCmtnM3@_X%Tk+g|!i`gb-3;omx4ABg8i5MZ|u12On#ALU}xd zO;=WA9WyfF&fe>1HB+IO<7N-*l8X@ThSnFVg~Q_fY67o$#BbxOAZ=tBt9vgq$%u`^ zy_m%Wk(nUDe*b|>v4XmMdWoE773Ec9KjRs`(czmBsm(tl^8?1T*Bp*gzLmV5z;W^W zOE~oVpqm{%o8qKNft9lsY=a10&cBQfb9ej{WBr4m_}JpOl^g))=+XO2)`yKyfY$tB zfG-3nWBW%VlO)f{*~HS4*?qvi}G;T~(Nn&Xv ze{RdykhLuLWUIUCs>L2BC$jm3CS4&zUWQiJVPFKiCMq9b3&{Ra>fp?or1i%Id770x z8NYX?`k~ZPX1T9kEpC@__6#)~p4b~6SHM=WzIXR*C9TPN4A1C3L`W7Qth8$Q6XFHj z0c!YSui;zk9yS`^&1ag1Kh)iDPu>21X#9|jL;CLV(s{6zj1%OyKQjhKwTB-RpF&Ht zhOq{%(!P*YOWQH5N@GgT-FLQWstj^BiI2-NOwqgvCHACv544fMrTQqNeiG5vl z=GzGLmvv*~!=!`wET`nLU9rov1TQw~gc%h(*PBhPi#YUVutdp;eYcw_u;Z~D} zM##%L7o7uDjrGO33#XBfG`NdQ{syB(`n20kx4M_0Um%pr-2OrLJYSiyNtJj(+k}9% z@OANvsf(Cm@wIBOC>@^6c3GUFd7lj<`!5f4m#Z+BFhHq|nBAn!+&rx)^(+2Miz4xD zUc7c}ioFK%2pD~#5aMifZ3@hi=*wu+$y{+6hBwv4qeIpY;@a792`;6t{O|aFedRyw z`}LK-Po9@vU-?h<{rXzZ$F=!rmSAT+(Apf*ywVPj6pv8L<6h zYu3xmj96Qg_b@3?3Iaop{FztY>-P}<9`Rd<-^bU zdv}(YP~U^fA4z;qq47kld0ac(6J}cNz&Hzyzl^%HsLo>Z7+M!#l-c!1)@ro7*hnMT zyqpyJ2Lp4poPgocaX9!s9_Gut(Bt`(i9MQb5`^px=A^=xzs1h?`4=g=0a z@+X~7F+KPnZB5;#0{BP0cll1h&Fiyxx|jIWlLM)5D`V!&C7cBHsUIl;z!u*i#M%L! z%VzN9qRH)F|Ez8cz6>1EazBj0E!L59Wo=0@L;5K=zlN}w%(3Vx+ zXS4Tly-yK*4RIsA&lK+?`LYmonbJ_eW8OFQobPY*{o*VX|Gw}4%=Z`j`AfX7Gs^de zeg8DyKU3ds2IxvU8Ff-|0weZaLDs(2Nfo$W?T@g|m2{LCIY_8=y!d*~Us{5!h{0-% zHxzlYBQnqsO3eE#kH8{$ z3P#tY4sBvuF?+4MuPr>nMcKO>xG>zLc`?2?U6+puR4ReJ8nXMiy8&uP05a|&1j_tb zpLAUz5s!Hh3K^fD`2Z^8udkdIbGT?YdC??prfHUYV*1p7o-HsxP{`A%U|>tCodoQ^ z-tCOGR>_$II`1_OoWn7iQ{RrySC@mBGta^tl0@w-T>s(f{4iiM_A$o6h!&!G50tp; zz7jxc``r=TZz6;AzWZ=)0zak6gD$Ngm}M(|aE3Op-kB`|(YncovDo>hcJ8t9-Rra7 zJ^WI}Vrb@#zS)n@%f>(8#e=`5p0`f-^7rxMfxd`%AoJ5NukT*Jyn<|b z(@lB)8FC~&X$BCpl21{5bqyR| z^+)nr48F4-?_!58dQ{q{xZUbfi2dPtLEnW5b zf0Y!WB(URtgVw;!l+e8k+ECW5LbKm}fTTz~g#Z3INys*bG@`GA|L*Yso#=5&G*p0} z;>_GoJ?(@;Ky}RJpL=Bnki?@qUbR_m&;9OKsENcPM*ei0OTL`gfb0${`PZ*?N2L_S zl?=o!?75_Ur22NKK7i_#F)9c=At60S@yk#3*a&u>E8zXcJg8XSo}-jZl7Mcxn8>D1 zW08$baxbWa{^NoDK$I%a4bwYmRWRGjE-MaR_*F7NO)i z524ID9T`OIk9ajERK7WERi9Ac{HHl^J`pZ|?#gRdqFBXJCK{Mo+XHE9Wr=R0m@i`_3BmYEF%N4=8NWw z9Y0d|BVEiFlwm)sh$n3R7xVqGmF89IQmP+$8oZQ3yptmesKX)W$M2^3C5BZGfk#Vv1)-mvO6|%vSG@TC3+c=Dq_2BI z@H|iY^2p|oGQM2f%}7`)i_03 z^*GllvI#NB+L{MM7U%b#UHmdqh`@Z=@5`v-WKUc3?57gc);x7cGJ*`G255@*$0ps^ z6e?=s8n5=pQ1NKpm&7KWC6N?7MHV&Hu|fFbdf)o`iN%GW39(6u-N1JVUxWz_1KvF+ z0ngV|w}t%Ag^QjOM5>?_e>shK+?UG1dnTd4MQO5yi#jD|x&DmE^WorIAy%+496G8T z02sSA%*#e~jbY7LtFLl1Z4YbX+Ew%xqTAEauM+*dL<`>3@gRxuyqgpX?u0@=cat_q zmyFNTDQ}SS2`MZSJ$3s?`6Qjf5vT$u3y5->lYzD!p0K@)13})2-4W7^?JK2StQ+H+ zu;tR0?SK^-O==Utp&_Rq0S*!Z(cImtQ^TUU+YXN_F>+fZ4t(XeH}4oDxAXA4g+^}I z;c?|rx4c)DHoOVB3VQ3Zc89F54QJJR&0 zgei3{!X>YYsgl+CD@PoPEWmV@6;YF=W}V3X_AJHaYb8_Ga&rwy-V)=iXT{I(r4*MW zS<1v{NVZkqqO`Iwpw7mLYvA(PY4O-s!6@g$O~e2R@qdzUh(V*xEy4k}Y6(6ymeM8uVnS$vE1Cf6O3!zu}C&IK?=9KWA zw#YWxC5~__VNVFkoQ2=}HCS2wJ#8d86P1uBy#`)d4(`veJAd7k!8eglP5|8cy4z`k zfR%l#;70`-)!v=kd3-5tckK#Khg(Pt`zr60fYYnATI6m|EdoBR6AjF=d4jSc#lBl8 zn7Xoyig2$A9oiC9YYOjS9S{=={B7%Icc^rOxv3~ww6%28iXQ&e?VFp+1EU+)$On}^ z_1{2@%8{9SUKO#PJkJ%P@R&26O5r7|1-7|0%yM12F;uiwFKP;vZk5&i{4)?fIIlU` zM8~@&RC-7++FOJX$zE-7s#qr7yD?g}uToom&;O{Z{Kb{7>Et-;?tFLKNdMkJf~6b3 zk*aXyD$nW^Qd_vFo!Y{s?PC3wu1-r#5a5tOAw48_xU|X37;K-Di@$VT3Dr`k95qI* zqt|(BpE_T{%q3jYf{lG`f8bLDth3r znTmEyCOFReLxI~ljza@(MamPAKrw-TSVhAQuV`(bis+G`u2l3lRZ%gcn6BuwOhpfN zs8PJ%9mSVK=qxy*s^1p5llHX`-unyaSh(~pX;r3UgOLpjbY%@M75@Dg6@J&P@L{Pi zY`!IRnXfW_dQn@r^i^5l7vJSo#}FO}m%bS`pVy0$dQp2g_`D3^d-`gwKw)ExdDkgu zDM2SK@c^Tt2lsKSS{u6_L3SV1bSEPX>9V_?(&{{$|+c2G zbEO!Z=xdJWZ%3P)Ys>joT3v15+4mm)sOeh z<4(DsA?>qQ&3u7&>^dI^*2V7m8>em}kg(V1^*rzVZ79v*{H>fH?Zmj0=~M^CmUsT< zocVf&zq@b?p9gNef_sc}y=~+I?k;{f*OM}R;fkHIv+^~CA1>UM4Zt0$;NI4!y;!(& z_U*N|cB6t@&kyaDGDm?sN#JJmG2VDgZvlR*I%Ye@c$5Hgm!HhyTolsO9gJC6pxaUJmU|5f{Eu2=AD`Jw$%<|yz_I2!zE;AiSF zG$Y46uPp>3?Jwbn_Dh+g!2i?s?D4UFEe9=P$Gh-m5@csxm)wGcWV2Nida}>mkSxw| zUO?Rw?>b#uFnqI6I?5+ZgDwc(nm#6axO1m#5`8A=TrgyB=}zsPGgB>$ORt5@L9r1+ z;%?SX95vJVbdzLn?#(_e^}9aVzsSly%~>benB=WXgGjk1OQXi2b0_pG=?#FT82d$ zy50XDjfqHEM{7fzdedX_7;Md%K?M5P^myDR)zsHXapwkv!!&=U1zr8!h432`Vp>1G6sqGluyz4U-?kMJP@kB?X@ zr$eRcYTA5NY>g`$wUNC@vS;#6ByWq*w_Ibp?AUoHlebWKndJS>vGYzL?@TzU%6mw5 z63f1{4O7Y6Dm+-=ZaH?|Ysp(8>x|_6?_=l1tZZd1tDDMuM{nNJ&Fs9JOS^p>7=GM{ z%zYy-kM9$;;CQVRgFCG>QCtg#LTmTPTsDX9R@N}Qqp7X{HHV&5-xQc$x3A{Zx<<9h zz=J48&9jbUzD0OsAFvnmo|wp+6S+x#N)T0GI=nH=Z&9P#WTq`nag`MUnSF4 zt+F$?XVzd3PCs*_yk$9y+NPjMQdwTnD!YP*GFkeYd*xXnX*0mk_;08w2)62GTZsBX z!OfYBezry&q$H$uRC%qOrhH9uZXsuDIM|kH*?^E#>%Mg;dyZ++y6mj2nXCi3pe8Q` zEmBZt72hbW%+C5sCMys3b;rAVVmx-Y`W_ji^w3HVr_12ZmBK~r-nE9NA#g)+&BHs5 ziKpblB_tVG$sbdr!8>bn^FzVib7b6w&fGDbSUgjbPr^w4gy69!xi_leE2= zG&PEM7uV7aH@S=C?o6^8ySvrck<7gpj_2fxLqm%SY}6LZft^>+02z>a7ZN@PPG(}< z0g?%np$&G;JzfvKGCSZE7$hSiEj-qU%!VywMr68ttXDkb7$YJq=1WIJ62ELjB<&a@ zBFTr3$n0EiL}Dtyi2QXiDjjX@9D_*ht(|ql3HPqw575NJ*6(>+ z`>x-o{%36v)IVAq)*`m1*Y9sqh4X(R$M&w@Pp}>I7FOqtmow{kW_@4krVDuIB8JMt zmrVL?Zo1%^^FnX=zT-JoGJVN-iXneSMswve0oL0WWh9{Fv;9cI>GA9!+&i8k4|yjS zo;WmB+R|rIH+=pdHA1-S(Hb$Mw-JfYUt&P7A)sj>yug?YaPb3JA%I1jB9RXhnf{<5KSIt+HAu$#x*rqv2HCv@q)Z+p2j|SEa)y>c zimTlMViUx)D+?}BSv(GZhfRA{TuOVWye47C*lWpk5-MQBS`wlx_D=GH9afYdIR}?t zY2^b4REy-aOHQ0`mxY6hJd33|3mkX+oGEAYE-z5Pd4#=#l>R9nOa$h?GrgEfHzqMg zglN}Z!LmWsQS=#0l8^@+^F)?NFG;z2J_&Cl>@0)bru&fEOoD4kT=yaq zo{4{&cxM$cVz#H`BzXk45DMMDEgXDTYq)QK=qEo#;?x@E6Xx1paF5n-6G3xR@Q~K9 z6|%tvc5t)SkR&L&O1Xh^gDTe&4mPWYVzg*eII-jQLC}zh!>}z`f^$@agou#+lN%u+ zB4kZ*BP2wGa9}q=LPQ9cbR#50gc6z+Pze#?ZWilSu=RHy;!k??Q>%HeMP2A+xUPkU zYF8?P#uvO$Xmi~(;^ZGhQuhH<7KuNrqO`gqRNrLC;Tsal6?IC8Qp8`OOkr>$rgDLcrRa01z-X5(qMb*$^r|b0M6?uQX}(r)dUt&04jL&7*)M z44|#dnYum@U|TJ5zjia%-SD{@k2htwGMxA&5_NAI7Ho}0B`hdMxI)5$ZG<^nbq_rV zW5?i1(u7Zwu=JO3zJvv{I7+U&Q5ffa>iF^~ij=XWVk$|^c$y?oLD>_-yqa@MMWKWW zB{Wn*LnTB@P7GH_XuO2ROK7Turb=kKgr*a!t)*vt)XA@WFY&(RSH2(ezU5cGg_}rz z`IYZR?^}N5yOm$z+mc7ZPAyoh#4^Se>|R(;Z#nTVh&K*|b_MBEXMQ5cBd9N*a8DA& zSXRDJ#z+ZH2D)I;X`&(VRuW@a`it6P-tvdYWZR5@&?3~D-G%a&V>@wJtvp1XbzF8ZO?1STgpj#QSbh60B>g!*NDBa|dni1rK5@Y%Wa+c?H)pcU@Un;%NylT^JmD0P zj{X6bvYrTC9HncQWOeN->6*bGLF#Arq$ywqP?iHb$FUfLky}&B4!riR%^BE>)Xplo+)W+v`_J}`J$~G%$`CT}^F!?~Zepqq1{>EZP;K|~LfDw@)N(EbX z;<)HR0a|JO+;Ds-VV2XK9H;yMA>o$J8HChL+xUutwM1YQCs5-nL_NmFvUof{#9rmb ziXu#6C%Um?+*nb0N$g}dw#<#4+2Y1dabv&k#)=wC@=kSQ2e`4Ku#(to-Pn)OHq!=C zO-bxD6&)TrHHQJYMS$YqY!g(aoLW#Ew|@&oaNdTpam*q%DT>Rs0)(F?)`84b~bK zzbK}`bE?y;G=g60F46^^3hGDpiDHO@r5|zKJ+i(%YB1lj)ispUul1_cZZ) z4!@1%O>i&UwV(%o4UkH6~XJs z)EQo?tl>wdPV`b`%{(&oLN7IYZ<(pLZXC$&e1$CVOIPvYJn&KP;H3f|!r%jR4hAXW zxLNlMAE`Yb5Y2ki8!fb%+D`Pja+X0pAr$9X1}R-U^^6qi1FKOA{pAQ)EfT#r3s$SZ znj^4;6$`JPE`_`gDicXDHHA3BHxkCi_ga3ON142pvWhvs{y^q;7$!*z>VaWZa8q}& zgbZt$%L?^E!@M=%d;w2)i$vux-F-?U@g7TxI{23x8km=0%E2O-vHA$MV;Z-)LVIw% z^QQm1nYB5BAxU7h-5C*R|yjJDWchL5r@T0-`GV$xN1_c+Bq!gZ3+O5cD5dt zf+H(H!ND*eDcvlmK1FR(f0B3|0RcB6&oi{aH$vt%)cJ2{jC4yKsWey&jH%7)H|pub>k-P?yC^D1gWbYpAsHHyH? z{OC|7f$q+Cs3C)sFFOh~WXW+x9du#;Nnn>KnbLU{pojIcNDU2RkJ+fS?6BmW^y2XG zoOKygVjYUb^U@ZP` zBK1{DP?deF8X0wsS~a`lnZu_~Els29 zb$+)nF0tZWy7`e_%6m@}i?*($e*a4Hxr9pc}_D| z{#;MrRFB`GUoS~-rOQ8m4oi)1tsWznJEu2F_cPrlpNxTYfBFVec)Cp6>i>Zr{~TvP z{iN;@xzVZv(W;%J@y$};)01!dM-R>`2(gtIU7z;@7@oFxyWp`sw_jz|j>@VY$ylDw zSWc!>$=pw6eB90GKSsv>Dx<9DKpc3CjD9lCsUlP07?}o0rXP`MFq!a~cGTttH_iEa zygARP+F(?P?Wx!L(BQoCP<`HDu5~QhL3<8IjJiESt6-mCLQ0;gt=6##*#ElWL#w!h z3%Kn@6&E&MH(!sxk@pD-LTY`zyZU(@4j0~eclMSAe_8J%JC3uh1+bn}z4 zp0W+9v5L4Hc~s0AX!bL=S+fRyVb1FJg%hJzsxvj|*cZ-b)Mn;3?de$q4^@+XNIjOc zWRkq3VR)~pSc43U-TKUep7HtOmLAt87}8&Pm2=ts>2sFex0CSeiHja<)QFH(Rbfw? zYmF+8zf&7;oEzU&8^1FY&>l>-?=q@dztsa9z*@NGG|_ebgBjpunToPT+{l-0=osaV zi#V9l>{k40Nl~o@a?Yy73XWqL41}g-=l$KXuYNFbs4!(BIg%4A1 zLJ3&RGm96~f!Khdss1z>^+0SQijDwSY2XACf9cYYucIn$qy$%BM->vHr!JnZ#U9lj zQWEujX!uecugiLoZs+}8JHf|_j=JSYMLiws1y4-yVZUKLCUrR9{XOH9z2M}y<14<5 zmDF!uVG!(9YM--=gN3O1u!N)LFJ{US z%^;p=LaBl`pjEQ-Ni9`p4}X_%)Ld1|kGvOy$DpvvvrY2cB6*;T3WLR?f_%yqECVj7 zl7O==rDclY7MEx4O3hhUlxd3zw0DctE&Y=tXl%isI{gQt3vLRupAf15Bj34z6IL7jZwby@s_r3 zykG>&aUiwhK7}XTr>1n2{STnYEINads71YGikkP=QZb3ex-~K{YA%%)qPrT;j~TC* zze^WMl)ZF`N_j=8vQjs1WruDp8!C;lMilEkzbz+NY5i6;4|svP#wazEX!W13Cb6b zWL8L`trAHX;pM3`?==WAGX{FusQLE*Kb6ewKrn#G1ut?`OfOC_g1282Gkn|BgvVPI&@_ca?A6l#R3+KDvmfw9npF>pW0Dp~*X7@@eyZ3{dDb$S z=7-i|@%4;>*6gfN^M=doaAriB<1%jYPmRGN?Ovt7{1Z84wnQ;0W8r>O$j(AN8(cvL zHbu=>7~<57dsso}Sp2y@%~@72m#q+xgNxNf*4+f_bL5ZGGjbnI9u{PAch_(FV_(o1 zK9lES*6s8j+BucXieozYg!=M7{c?E*yf3k1;5|=pn3PLKz&G=AtSdq|u@gBpS9}{p ztwORamo72?LkTx};c~6+I}lP?V|;D^HLzj>uti8;u%<9g`pW-DiB^hJErP-ZUb-7i znWs?3AO*1)k9s9YsALhY5HPF~aj6h4ha4->^^DBZ&8tEY`znKz<_g&h&)XunI}AtL zAL~7oh`3}f^j*l(SAV^Lg{T>0d$vpC^04;2bwa(I%!qZrNEs-$>*SSa2>t3VMd(Iz znEna2%?>m}qN=mug61&0RhiaMak*hmDvX%_lwm_>+bGe!7*2+v#Hs_vRyZ|IhW@&Zm`dw$!Ce_z`Y^9Wh0zODT7Qz&K#^RfwW5}A>W6JWu%DGYscYCH zdgMlK>XX=rIca8ZOUNo9QWui7()^2rE6rzX( z-sMQqkkN;R7%HTOSELK6-~9%}CIDt)w?k?|tll923ek)@t z%RFabaEy^Gf7Wl^q0EYCR4wX_xC~d4yI@nu8tpFTwz~!@7$m%7_ zWoh7!w_zqp6A{&D2H}Zoo-bTj1(6?((r&|SvF{ROas6$$@1moCbo)bcCyxB3OS*Ka z-tAIWL?f`Wa~O0fE7|Q*R)pK7tO&PDnFw>e*Q-~gO1^ zKT{^bkCJ185nq!dxe=CQrx@|M@*==u`LSs&?D^DX)smt833~A~j6~1$NN_Qh= z+)@{~VHvVisT-EjO5uVBAa}A@y((Bux0(@4h-+3ttO}O$>R9izlH0h_8K7#(oB2O%e`>T`G-{5gXG3+uT~Bzr7m#K${$_u8XgHbmbf@Yk!nafZzdKos-2Bep z7x!6WCK&dZL8~iN=XZ4(_V^Nmr^VwRAV$e+vIqYvj#X=Pb$(ba?gzOU(kOKJU8M3; zIk{vTfu?hOA?Kl-jM5fF!B|Lp8 zn+fZ59LdHCjpjj;*ctx?4?LY@{eq)+9Oqhh26`qG)O}dP?pd}rz>xMaDLdIe{N$fI zv-S_YI|&zW<^^+Vb84~khMr<4W9^}>-c*amU8@cSE6}t2f$9Was9e5&POC#dsK~AP zKwmB$;ClCQ;=Vo+=1aG7=N%AeTH-=J)zZ-VK38O#T{;q;oSPrA&~&sYw;^Yfi!i)4 zYHsA#JWhYRJF?xat9~@*8(5emKBc-~pyuO{Z+svdDV7<>?MwP%b9J{TTHYy{oZdD-DsyUO>E!tq9XfS*SI=-4E!QdZA+LMfZ z+X&{@>~(HtQWaiW`Mltfsiot-G=A#wu0dLZXj>zIbM-Wv4fB+cd3hjY4qR*HJ1$~) z_&n0et96oOM@Q+%!%{AQ+p_>%WcxLf!s8Wytj4MR6#L&!9XoP!1E`~|o)OSizb-qR z!ivPcId>vr4HgpsbP;$VIFPI;-=ifSVZ$OXO>Q_*26BKdl zoBJoMD`MyOa8Wu2=v!Ls8ji5v@te~Fh+uQ_N}bt?c7)FvRVAwU+o~?Ng$-AeoCeW( z7>GOp5iRvQqPAqeUzM*~^n%+~)x3sl-15=$IV4GXupOkwpBI|G*nhtBVb_}au4D-mTlq@}u7Q5t_j_H}A3LMHPy zC+~adS!uWdaLypcI}xx;o$DrMUpqi z`LoKKU;xqKrpF@yifxMeHUd0)9P`i?JBQr;oaHJrdxJTZey4^Hx4-h8<4n%}9_%bq zd20o(jAg{{ER+mcJa5T_hh{g~35=?&5sr{KV-VeEyeU7pKK9k&gKPHid%O|v@ztCq zoLu4SdMqQvAS3E)F$2vN0q6p`Z`;u^Y>rR>KXXU2DZGisf)zEA%# zkIfZJp-@GC4pHjh;3Ij3aYnATEH94gwe5fqc{y{j9#0(o@n3sRNPBvQpFekSou{*U z|2CYpaGG+cTHnvp8pi%mZfErmdo*pq`}71z0RU)=|H4Nv5d2T^4UF>yPQPQp`PI$H zoO-3G_4icz4qa^f*Nn4=EsOeED}8-^WxMzjvVH(d9#By~9o6v6&!fRk)+XNuu~uCq zyU&R4eUA2mvx>ja>g439&#r;_p|ApC2nur&rNfY90L~8W$ z;MG3ex@<_;o`f$wHRINnv4xWP znAwfxtPvf`cGRU?@uBjrM&J`stB5my-y!UT7~P%0mf5#+VspPZkD89psLHB!xQ!ZT zpH>_7t>@VmcGAnpz2qYMw9`=`8>Ji^_+mv!tE{moGY1&KPh#1wTs%1@lVNc4sLxei zuBpH8t%FhDCOI|uyNo%?rTgfR5(B{NR`I8?RMrsIu13_#AonxTs`YZt{aRTMcO^N) zkOqq%^@pOQ?uy!{{YJ*1OC*nntkCjuwu4Xp5THmTJbMSIXz@d0q1}Z)p5O(@SN2aJ zm|x5KXY@a(iDJ+2>XeNa6j(bR>Nz{%K#FY^%jrpkTtz?afi8(a?Bz_CSQvk*7L z|47`yC~kvcM}z3JW)(k#8AO9$?8X!SAWNhQ(*NPg>mYqAUweAQIQsV_PNDW{k7AS1 zmOPNJJ-T0ebhEiX*>k%6%#U&kF`(`FF`J&A6N3A-afep>FeM`tJ!Ec59y%S*^pa(T z%5vz0;3jR{o)s#~CM~)LM`}X<_-8T{YdkPeH(T`m+sfWRZ%bVD{x@{9i%_Tb^uFXF zQadFTdsCw`1$&)_Zw9Q1RsfOjY5bK9}_vNxP{-2 zZ)esgp{39d3|{JJf|?`p736V_r}z+8WLx9!cG+{fLcx!9EqX9`VAd(|^<3h57t5JX zgL`J@T0_J2lNsir9DQShI`=Wbm0j}Ah~Zl&^RI&db>9Y>)SZeF)d@%4X23+E!Dg-Q zAr_P@9wPFf*Pinz6dF!jN~JALzEH4x)|d$r&BVGYCS6-|hPLL0e#U)p)e*OnBh>G^yjs+3 zCbdV`5qQDenCw2?UUZ_&>Pj`M2TtJ0qH!Bns#%rCi+*R{oiEADRdV+UnEy9v<64)i z41&?x)A%NPSvOnt&XLPcLm{ zAF_Wth|@|R`-e(lK!QuWVAPqrH%>(l;^u3MZk`yeN{UaFP8vgybNDEXfrnARqmGl@ z^_RujzyVKUEqQ|dYCevS4D`#IKyDKVDRG)`t?*<$*`-w{4@p--rA?)veCxd3hv-fG z%|prE`EuB|>rifMHJI;qL!E|et9K~6;#xP<74Lv(arU-);;G+_tOP3m;MCfqugJ?P z99nU=mwD0cyNBd3^2u)Qnrh>=y2Q9wi*7YPQp9+Hq-syUk3C585N6ZsLE=vKUC^xh zh~lH{ox;d+7e0|ijS>6@=BCU~BFVRhMss(`1l7%_cj;c%lvO7`*CIuDiDH#j~_#@}{pm>H})BD+w zJr*qZT#FVlxtqkqVNQf!*;eBU`O`jQa!TL+d*c(+DuZ7^ zU*Nv*9ioo-K@igiVk#&Rn3lNWtn|GRHpgvbTI&(Cd8N~z^XYApgpX@ zB|_K70c-?A795y{2Xl46Bgu)yEX93^ava^zR=-j|rTBDYW1-3nzp4&i1y!Bwk>z&H z?x4qzWyCtC(F4s+aiLF9<-FO*mL65M>a|=bZ^TL^R(yJ>yap)qsV4M;n%tTvT?!@b zI*&H5BI!ul9HU~NEM9UHBz)5K8qk+KucUwov}y7z5mZzjWFx*0I`T!njIYa&1V7Lc za>x}5-jq}GVb*9@FM;{^DxuHq+M<*D(C5&j(`Tj+|8ME@T-~}^XilwNx$hrIpCPLz zCqtmtO<8$`KL3rONt5VkNYou1mqat;G9+sRyzz-?(cq+(CeL|du=|G?IeK>tqO zP83)0qb)lRSIrz(22lgEvTEa!Y_Ept=BGGj7`GmMf^TI$kjXNUk|DQbIX`48$3cm! z5XS|q%1^e*VY#R>6H67uY4qmy^d3<}&&I8M~09!ZxKJ%io50S<4fdkw0Iboy`}YO}_UImBHiUfZ`#+YDT6`P(FR3TM3-cm{%9Zcu#e2u9oI?Jt z5SMg`MiYsN*GT2^F8*ypzHRMY_-MzkWpe+kbz986nvvYUoh+KM)oc#=w)4O$$-B)q zlJ{vwTkR^5GIGqe*s0aY9xdM3-@XW0tXnJXDs4kT$0W^ct~Q@3mJ^+7o>vx|Nh_f~ z%|vl4Uvlg8YFgJY3gdz->Zx9W3wF7zA^&viH!?WHG^%eEe9j9FzgvxwX0K;v04@Vo zwgEGuatu%~!ohk>o}!azG2a^&wVzZqm$t@}{fsJi+)=ifo7yf^PlV;!l91nmx=%i)k8NkxrYNq}4b$rz@qchJCjh z1KQix6>OniX{;R{Xxvwc%@@WM@dNoZ`C9D(v^I(2S_TP?obS>J<1Yi?Q~=U2c6#Ia zl0?X|gVi0-3r*L1Qcqj#Zv6ETnhtaumwz8G$<6ZgMVtIC3 zw@wF|%twEBh6G66jyV(6jTKZ0a@=7LDT}{}K|*KjEOxf}^F{}1Wr+zk#m>#1_FnmV zUWLjrucAO@j5ijNxyBJ$gHx-4*3GBkNB=1qp+vFhv;d7IY2q_tJhF*e4~aqx^FVP` zB!k&@i0xk6f%q;hQq_iO=X1Pb2}RXL`p=gh(%)g4u06OeVy+dLNsvg>7XKB*QsU6F zv^aVjMpLcxUl}|&s#-GSOUYT~hieafYg1AD9;+x6$Vbu3YYV*gi@t*_{>E~QX z&kAx=H5>Jb%Akw`WXb0OkijRv;7fk$_fqJ}kd&JHJ5hHS3fDo`0>jtL_jq427%dKI z4O0;SEVr-n%$Y1q%#mp2WM)*KNq$Ir1|yU{17sMLlm`!(UE0_rcjM=LQ-v!DGbjJk zmtC+=$YC!mven1+w@oAcX$4lTPBFC$aRj3X{8QopPrF0y& zU2(M{0qlPiQmCm%rYzAOY_vnTFk+BA3XQk;jQfxZE6N%XlKQzw^C0B+mVIN6kg?FY zZhpW-pf@KsccUX>pb3n84+efF4thCp5mbq`Y1io_7c#aZZo8F%m>T?e#`O$J;n^-G z(P!9mZ8c}S%%GvfbHaK&tmT(xnl8L~9|IztPR;<$R zgsjO0q2T1e?2|ASlgkZ8J|@K{1~_HUN9QI?3~O>0!q^~l4^_9{(jVd5lSNM#KCf11NDSD z8%ox^imCrVlM3cONcGyXDXgYDw1yrK9-5hZ98S-NqJlaI3uBBD%34G=mn#s$dccQa z=BEDc62w`5=~h{x_!f*!zB{0_&6<#>Tx0^}>}M1UJ=;rta{wB&i~Gf!{qZJ$^1T7c z-2+5P8$5uE|D+y799eT54u$bi-G&@C3TIZWZpsE?)#hz8(9&|qHFjgQ zdGU0RO7Lj>3Py_EYNudBDf&=3(JE6%D(Xq)?VKd^7iK1sp26!rrRdA^W5=2OTs7Xt z*a<3FXpZdU>QK#IvdTgRzQy4DLa)hP{UMj!RvuH39XapH&U>zl_$*Zp0-(T`e*{H* z%n{9#CqgdXh>Rs=1FmGg)v$)s$}I@z3$1xdI0xercLanqz?~2Qp^0*6#hNFwx%E2{ z%|q7jlx%K_Y%U_WNDdiHcKA6xn&DQ81MhMi0GuYg?vr@e=TCV$meZvHCH@e)hnKJC~|jFiRZ3# zzTpVz{8glLj?rA{d_%T$z9uc5e?w`Xd&TomX=7SGrzF&rD1MEx6bbzeewiEjBvw{P z=Qg;uNVu^5ULn^HYo9ruKQULzRjWyqk`GZti2gcL}N@zSJcsFV1q{IFeq=XB=@nylE%SyZt)&FT#69Nr1rqEN(R zdgdN@+?^QdT%4DLqp`RO>odENq=vE>m2(5f562S>=>LqnkdqINSBlbp04%asUWKN@ z{ZL18H&Ywi&FP~=zfrY0o3m+%ZR`PvO%eujNJeH7*iCu`$jkRYZOv?d@X*}L z;iXbQ?ox^_fh622HO;zL2EC2jLcZ8Ug~vs*8iGGB&`*z+meXGDQ}Nh}bQW529wpJ0 z2L)cWDYswNXy8z^wU48U$FG6I`1HAseLr&hFc0jYoidzWiRn#fZDFLxkc5nU) zPe{yLAhOMK01!E6LY91(Dt#5)oT6W)BtvHafXW&XCo<&oq#_?!lh92LtjYO4LRA|# z&6>^4?4x;wUN#+VJ@z>#gX5xe;N%Ki%MaN%2im%61&89>Lc#aL_Gv*_^ULg@L-wtK z;L93b#z1a&)7aMSDrPxxYk1s^7R?9Sk>FlRZ55^4;t%M(QKdE?7*UJd&lnZl0RPJS zjVsL~*7xoOxGR_1fZQv6E794tlG$sczHresUU_7#G@&T?*sgG!3Sd^r|6r_e6Zt_~H( z72uRjtkA?I?=FDYmr0v>94K~5A%S)XitW_0&?$xVX|hqpS+c*_j1}hx+qJRnuI)oJ zn}89R%68BS*$Vy&Hl#=)%49QWZ<{a6*}_a=UQ$QYo>myCdP$$eP>Pa=+j3|k5YP)M z?Ge9aAX9U;fqL4q%Lil2-}Lih^d>`==)RYJ62gP%I%=z6;s9;FAG_VCa&cZvH>hi$ zf%c1+$8NEHj_l$UeTjgZ=9LJOll+}CYSeesG6(gbOMt{O0L ziEpy*+Zqn;pSxBnFJ$Ysi+T+ENi{)eGrE0q@4)--q7>2Wkz?ON-_1(VP^kRK_|P`x z)srbU37(`YW>&(8>56?tt2T08dl8#yZcDSJ@h@adevLSNZ@zVMrJ0PBCUrCl$Qbz| zi${Zv$QTmjvEoj?YPfI7$;MY{)!Wi4oTVt<;8fG^NR@~+TH;*ML0EakS)zDa{)Siq zrfl_^Lno?JJ&Mdpp%@f3z;gNHJOsjJ%MO+j8g!oC*uTSR<-I7-oNavkeP3{=Hg=~Vw?bDrU^ux@OZ*?KL>_^80sa=X zZ!Q!y^-OSp1iSnsC}x%e3dJ$`rwb|Z4W$h*>rk9zR6*#l(c zniQI9iI^~8Pw%E$f`UfSJ!+3G#0pIqOixGH@OF}ss&(*TsnIHKmdZJQh?=`owp(GS zm>Ms5>{_WYw7@4X@=2AiYxeO}Bh@Z*`V(Ru5Ft}J7gTE^(vY&FQCy!;w2Af2RKmwy zikY%f?}6!INA#-J(2oIkMBgFuuVH=P2%fLityLQD358q$&3BgZ;dSs+R!O1y57cVO z0+>za&Q-+9vQvUSf+x&2h;ju=1&U(NE;Ci*qLdP;VQ(%h5?|fI0QkiI<8w@Hx4V7{cIgu*O)#Gi zF~>t|0`SUmGC>lHm&*_5V=$x5hHnFAG-yXhtWo@}|LVs`jjt9{S6{?jCAzaY$4T!I zt7Cldbf>)XiDsPp)%S+1%LWF)s~Cxy!NPd2{%2*bLw#knz-9h zSI#WpyMS+w{cne@&Me_u!X?&d3~O(}8^JAWBj))CT;sO!R1CMhnWImxyo%ji3m4Va zi`b!GU5zIRhfhvTZcK80EH2WjcTeLNt3{7Cn%n%&TqYlNN7)7$Hs>4Albj=Ae-JUZ z%H`e{<#O+*SaGY{+9lR}xhw!rmKC;Z;f)37C!O4xd2m!=^5fIPr7acpcYfP!4$12Yt&+O@bRf9f@GgBh&OkB1VVe-` zBI9?d#V>Dlwg|{f5f5Nd24Km*3-EgY416iTGco{6|6PDX0hsrt0ME<-{La4%und6t zUkb1|1MuvB7vOmS9P*_Azm)-a&c6%rd;k_SD_@Ds9Os#8a(d@mP4-#9WdhGN_lJ1+ zp{wYXl`_qxUG9P-v#b`J`ccD#txpBZ9wA+?T`k8MIW^xXYcxllrtTt^WNAM@uFU5Jm@dezcA!hxk3vzU&6;&v?2Gr*T$NTszfZfXCGYctSM?}~P=POZ* zx4OYFdEc&x*Fd?To75Kn)T>}>$XqG_)`z}wfj?5U#fZ{FD?HLb=xC- zrm9^E55UN=;p;#}&X{n4M>1oq&^=h{B6GbeFjx8KUapQKPb^8d z1u%6dF!sV7uOq<`8#&gKQ0aSmZMR<}{{Ro|g|v~IS?pgHC{gi3#YLfu%PZ}?HNp+g z4(dFB@`_&CU52?pcVS2y^-9Q`5F%Un>?{1?qU|~l)s=1sP*yS*q9r--CCO1YIqyr7 z$5S*vYzkz(XyXyUv4b_ycCuxA(ZzxmTz{FjRk*^eJ#2y5bvDM^jRFt0*(j&gT{5hV z=<{b`^Bp>SEU3_;-ZYf5y~*)fAi6oghNI?4WO9HIN6jG{02fC7m*iNK$pKoVVPx8< z9FUwnrvSHQ-RMsb6l$YdOzUpSIJ?;&Fc3xj^zI+g46G^tD&$}-S)L~sD}GY}Ifkv1 zluPy-p{WVngVqu^5W;z5L8Xw`O?*Vnk;saw&a{aZ}MM-u7c&v(XZm zu;y4}ridK#3rb*@VO+l<|71>_`*T-w#bZqc`fo=Wh#O1~cCTUZ^x_j++wPbKBfX>(q`jvv$r| zLHL6h%}c)6Qtrw(2b&=x&FU~T}OKYuBqh>0!8_Nd8yo#rc@c`pCHq#(lW zS2k1$WkF%K0S6$lcK`;AS+CD+33ktTCHTsWM#H+#pdokch>t zhrzcJ_azv7FS*hfd?aE9J8z?X&(DZukn#pW$`fQB|9`>18NK)?vto; z{)j9frPn>QdTbJJ_xGb2By>FK;2TP5AN|Xpe*~M>LbU zgPYA-RiVbkj}mB9KwI|6AF0^gKcl`GV$JVlCPk5B#kUPnp?oV|kBW}QwS+kY7;ep! z>Ko=jEFp8t{_RCg2xsh12Sn`=r>KQNe7f4>PiK#tVtWk*4qsY`{h-!>+jvwm8>99) zHnrd=N}|j5p?;IQYk^ev^*foCRh^U~u54e*A)>5tVf<}k3~Rv3eP?itM$YE=He%!- zZlD5s^BDD|&R?p1Q*4e_ZFww;N{%#92nN z%a6LJNjC@KI8!;rTTCHxH_ED4^{!zbP%sO1=1jWUX!?{DQiT}GjgGS zY1DqWk=cxz@1@4x%-F|QrTAps<;8O8e&tgFoNNE!b6py9z!4T|#Jf(c2O8 ze7C)VaJ#4sgo}K7278Ow6n6E+H7+UO756R*rI8Bs%HS0k=?8;yz7)UCS55mj@ay8E z;a3K|RKt3)jDb7~mPNP}o!CiBkBVu3{a3(1qyOvp2XcepmrM~u=zI*gXw^GH5K;5p zRM}1GQICy7x6OEeuX-nxu)$Q!O0hhgtWi?trZ0;V{^p#I+*#HrCpOsI4Z)xn6SaU7 zMl6rF^f-T^Hs`{5JA0fm{-ot4!@5^kCDXM~u+TN|z!%Qh{S5o*$x>HlK8)stQ;3j% zirAYMUYq`e?vWVGg;KyN<-h|ZaPbSCZP<^>8Hds{n)iyG1r!tD$1tC+;HP<^!Cy?1 z2t^6WzvhMGy%2Pr+J6HhW3PHd_(^j-hZJU>_olCr0sBZO=Ud2jR$Mp)t7!+WO+LmO zgmXIMcf@+aLBXN}XVBxciMgx)oEf#&OyAodG5z~uL7BgXcex-+wza8p$P%8EnocvU zzbD8f&PwkINP1VqUh@Ju<^A4xBP7NNn9|{=@4Z;cSGgt2L5T>P_hYiiBTWHy%l0cW z^dE9Zp%+23g0f!nrVoy$*7<_#w7AIK(d*w4p|rC9b-a-9WU=rM-AbrmdfrxPKU3^7 zqn=cfW=E_)6br7Qq1Zr=wG$VqPkrG)=}^zL3?Q~~zwfPH4jrv43*chZ znm~FV(0>w3r{ErbbJ`5+Zx0a^UtH^~8o#(!T_$9dyU?uQNA(H|4EKD1=qWKzG8a6(pzN#%C9x$aoq=ikc5ULQd!JgcV&f z)4?%QwD{?m-QX&c?TR&evfh966t}V4-Mzq7g1j>7&>w$gMqkYZn)UEweByOXOPt3H zM>t6-FzhF!F?6P8jPnGGAN7RLl`7Yltt<*`sIw;d8|; z?!)j{32s$A#`Qh2W*Yrh$*OGm7Y+{xW-WoosA05tN~}{%jZlT@W>Yx#`Oc8`_%~}h z!?_!^x@+K!oTX|Dy&spor1&x=U~TH=$FXym;jD#%u7RXro^i&kx;iB0X@ zdTE>3Z*$UOl!7?-){>1I`x{q?w{T92ca$b0_K>Bld|%^Wu^o$tMvj^4IsA#*e^@Kd zxjL>`5^oI5lU;OeY;gN~@#X-x=%dZdYQtOD(u3&$8B0tE+U zb!2B&;)Zo`!AR>FO9V7+**uYJnGySDI+W0$D0{4v02>1 zlfSK{GSj%5FnmqcNy8`Qv1w!_nAa_I!#Hx$xij}HenmtfRxOtd5Tgx6wuy+WWZk$9 zMZ^+nM#QpVIZF4a;H4$Bh&|?7VZs%-bW@_%Le7df3`+g)l`bbAIF(;wxc=v|=K$x$ zW^?Xlvm5+>{KqxewqusfRVaVRx(=CYGItFR4b~Rs+yTe5kH2dS*W>YbSLL5)_*!~) zRhnI{1SGw(;!7AUZ!#&yqz#0|c`1q)9>Uh_fVxgA`)XIVZ+{nwt^(t63LBld!xl#E zCw8%Ih?@IT2dj3XDV-eoooz;ix*wP3h8&oApWO0D^HA2xJ~TfN@?c6j)oN5C>P zdpd({&GyH`0UyULrsMg+6x9p#A?wN(#ZZm27qz<#6@glmBC=<5n`XF8v;6ag8`|69 zTVjwp)KCS(3y00m+9j0y3?%Y)32Bt&(Uh;L5mmbdb6TIB!a}vyh@4Y-6-7bZK^v(M{2sAn%qhJldvP#-vm^gY8=fSH4|HqxVtU`xky$O@y@N)l>tqy zDq7+!g3V#S)FsvLVPc&5ioiz|2m)Nl;Jm^-%u8nCLfH784txNPcX>=a%onXIL<9R|(C_E8YPtM)4j zuSXSB$Cu0gA7PLY>&zXp zKn5bQL{Q(JSj@y&l5VyN?cZnl=k0IR9&Xj*(p83s1qbmqObZc9UW7*r{fhW!EtO(i z*K*4ZnNK8N+QUs+yp0L>L>;G5tU;E_u50)tbc4%CItrWT(Cc@?=bdE-WSF>Zj=4%`U~qd+FmQ%!-^H;74Y?xnl~;`q(b# ztC(de`K-q83}qlaJdfgmQ;|ha>Q`{2lSwHvBGMxQjVEhVVkuLvIio z^fE1IsA$Nv012rCHW9I(86fRST{@Q0z5xnWNG<$q$rL>H3eq>LgC?o6Q%lCBc`{ao z)+wwnoY^m02!2Rk0?oAv5~YY?FR$k(6`epUNXp{L2eAHiey&ief;I3tpGz>7JjOFr z4}K9F$fHhjV=%M04q_#R>c!JG?5-}sEH1>rO_4Sevap|UFn6gHwZwR&3wJU%UFrE8 zmUiCZ-&JLKD(ra!Zjjl+6hZ;@>NaOepBP>De5tWvB%W)^g|Mo(eZb(4LdEba5( zW;R#2qXa#=2XeyeevZCCO@j5SDRukcbxr9;_8FTBvMFBoeFDDqG<*KJghZ54r9FO! z$DVkR*ByJr&@`9J9G+$O;y}$V=QDV{r@vG_*~M8XVpqKDpthhDjuNsS77@OWXjk_w z-rZHAT?C=N7yE|GS0B+XaT(ifg>T|$w8xe0nxK6pBP#r=Im`Jf<**lkEaDYYe9m>S zT4X>~EOif=RX){8H?9bNxm-pvjjU-zbtTWmw?kKgntK?ZG@{1BI)-1r9E`NB5I1(g zY8Wb4MMOr84X$fkEq0??s8i^<^*XtyvnoK&=J+tRu0o-I8z)TUsF*&48WpDhw|bFS z2h*wl8!+E5!Sp%g$0zC^B2)zG7o*}B1PeA23 zJ0Uhf%Z#KLfLsJ2hdQ^@p*~4n01@$7C1(W1#4F^}?GVq!+Df>D*y=XO+16bAOvAG$ zL4K71e9_554&y-b9NA{rx-LfJ*4vGXtnIWIDy18`)USt!kGmfmU<<_|qSC$4d#$ zitauWS*br0N0bxeV>tkN7WR{$x!!8zOou6lc?nFBfYXI!m7)1RjdxpA;%>p!QsaDq zj#_OGPGXJo_5{u^;ks(+c5OtMKzFS+nAirU!JSKHHM4lXGm1GYrXfmfuW`pfMk60d zzh`Mqdh(7n=rZ>?X4ZI%((G8{?NUV6nE&+RonWsoM~2)Fi{Lmx^fNa_jef za{AxI@{?xK>?Z#o=H3QAs_I%Fo=FA>n0g{cOl`zer~VVAHnG$uN^u5e!Wo=EG)DCnMohCeU`52ck?;xw5N zc=)X?`PJrE)MWmf8cgU@)Y?A3xnxHb`#4T8GM>CGVA%}Y% z>VoayyVyrSr(Dy$+I|n(t-G;hYAW|ZOv1k!K75Uxn}JpCZkSY6i^hK{J>%U?mtWJB z%AY}IafZAYb|TpnV2Y-}e|xO8aj&CB;9Z=}DM$*ch%zTzsp~El#X(v!PNIp9z4*o$ z80Ih&vf}phNoC0hbV6nDWr;tDT9&koz=Et=B`^jWbf6njwH66Anvp_`dX=ih=*Q?Q z=-ygm3IVp$K#i#?FGX0aj1-FO9k?%4PreYs1y|3?h@+^Fj=Ynz?-RKaN0n5Q=S=qD z9It~HSRz&Glhsw(mYS;u)?I37#=8*wS_X$#Ah*5cTxn99D=&?Wml1i{9<$eZ$9c({&7XwQ4bCM1u$pBGN&x^5WtRBl?1@1(lY&D zg9jmRD)ins!~Z2_@XAK!S?Ec_^8c}E`Nu9hSPNlqT1Hd9yB(*wpYmkw#*{d=kepPr zPQv<+-IJ+sXq)s&0jVenS%%L}2aA*VI^P z-!M{x3^vZbhm|rZOWL+!XxrvYD8T*)QwV26DoZg(bI$1OB0~m0fDC3b^f$C;7sVtn z4W)X-EvV1Dr#;94QV-MK>zl`E@0w zY8#pb>ASy7t~#^gVJf*`!sJ#WG8y8xCSi&3LRQo>1LJ6yU~0a ztwiAT0i|+0ZrzJHZU5~}9JEHGiNk?;2C$mAmnWUCiCZ!Za(Di2^8!{*+5v*>TBX~p z{0M14qKC$b&iOmXarowIo#V}T__faQ8a(`(AjO9Hkw#Q3tcOp+j#dmLaM*Bxb{M0y zvcZvI&|2bjBGZ0{GYB*7-o8gzmwXF1umyJCl#hcv6A;`Nx{jXdLeJN*wbON8;C!Ib(0zYpULjejc$C?UDV^ip>CMeiP&Pk+psMVD1c$HN1* zqi8vc9+`ozBlM^>ZTcR1>vNjZIw%i)H?lQV%8vEL`4^3l7Pnp@+Nrbw->lRYSI6tK znbPKB8Vsus&NF;as=7ZmBrYwy!Ug$1f?H|yj4m|71D8c0!w>o}RA*A&856 z8?%NoJ*lkGWTlWUx*@jxCCY-gqgjT0a^wK>xSaHdH9lF9#f}RN1>t*QZ9q3pEg}4X z2Yj?rf3&(;(-!5P3Oj9p-nFEYbs*zHw;KH`$LF2r?Ou297uC(`Uh}%o?Oma|VMX&A zgga+={%1V;nrtq`!*7&LnxGyqzxsxTuE#WuhA!elV9fDTj3VCwmdbT400-5P=cvO$ zHD~&n(6aRS#j$Y%yGmcD`E4h1!mSTUVGdP2k6grNn@6w3Te$k5b^-f4>Om3*`#`#7XE(DxboLN16&O&b}y8E#n`gFJ@G%OeYsKE&Kso4ATc01Ezb?n8NA6qx*0* z5)fxu_>(;3h}wu^GgRlEDBi$bY+&-=vK=iSd%o6j=Fj%9b&M>NNLeyQGuS`IH&<#~ zoxo?TxE$zBlzPUT?_r$MaxFcb9JMse=x&~O1RPck>BN;NKwKzqo?2n*S>_f?hWN3l~^ASX@y!Ln#vmZOPtKP>wCr;?KROZi>MNJ~{@zNUkC%-c1 zGdYqlMW_Yk)+0h|arX^s(*p1i8yQBrk^ho_d-0Sq5ZMY10xCL2^V-SwPt~H99^G`X zrJL#wSoS##r(enC#a6Q;8qa?k83x|Xc^z$!m{3Cr;a?Y?uL|6M zBQpOXMo0>yQEIHGkw)lFG!8FV4DC$@Wt5enP^-|)A25}eyHMfXfi2O<9RNmrG+t#& zW*b)J8AD^z)r66T@*1pV|4f5eN;p{5jnzxC4j|ldlUcY1`9&Xt2dFvH9wD=Ak?&H{ z3MTD|+n)iy74!a&6H8duZBvU0l}-6n;iB_#cH;2%Smg9VWG0 z$7ayZ0NJ|Fl?5b=_aM+lvOJqU8hhMBb_2=2b?`C}N-6CX{s$5jPduf3=eH715aI)h zl?Q4`8~-EV8KXIa5gf)2yUvsaNNY(8W5HhXT-%0&-|vYr12OX8-S`+Y$~S&XjM0q? zwjnj?R%DDZgFo4b*2QQ)HlqE(+0pjUWcJ{HV}t`^;l+Gc(niqEM`YEp8KIEt_iQ|P z4-%3s31JZ1yZm|U;Ba2vIXDC_T}a4-LawJ=GL)rr(0h>*3sA@*;*wD)pppsM{Hpvv z%@-2wJ)2N^E;D7LB^%vH@89FnJ31wn-qB`y6OdleoBEtvcSQpo3O2ciIdx3l0Cs-T zfI8pH{(~NQ+^}!nq{6T}+7gq=##4q&ZrJybqrUOfJ++Oe&Xvi=uOK|J$09t9oxf_p z2R8it(zf|vDu_(lK}z@+vFuacAq4T>!GvXia$RHBxnkLPij>XAag^tgav3ORA)}Pi zRB%1nwQ@tPWGI7_Z^m;+JwB4?T#aY$soU_;8C%Pa#_k0Q zWm4+GX5{9@e2!SVg&C36&zT;QS&+Qpqj|Zt_6;AE9yN~bNJ>6^=ceSW5EnQv@EGAM*^ zQ3x$=$+C+-Q`Nwc3aNDDJJ!$Xz5aq&V(s6wee={wQ@=cqz)gF3UXo+O*Ceh3arOVY z#EH0}e1FMS5K>l%FV7M;gWR;2%aRJMfj)0ENy|7ecx$| z=R`goMPEi&l>g0OXxh_dE~fl&#k8k?;hI;6xK&}xC6eE4ur<#$T-Y*S#n>7zY~gp~ zw5RdAO@4PB94_&!mfZN$c-QGK5#i0H$+4Un@7fub5WP))aE_Wm{aQUC(xns&5 z?~p&o2iRO=L*qZ~=>js#-*$s#`JIS)gd-Kg`R~E`<t?u$Flp0e*I@Tpw2-#Hk=4AlIUZrI5l_q%n zWrX3A-_#Q*bG}R(j$_1hM};@5&5L!eJV^}Okm2;!z6bla24WHDs8ISgc)Ux%d1C?f z-uHitrRZwiS1EAbF=N*NM(o)|-zKk=+=xi<^tqCo0Q~kd@NzuwyA0r$0HwPI;IzS4 ze#N&qJq~SqD|%PycizFxhiur?N%Po1$N)*zT{o0USv*d5|BsX z%FbSRxIO+MRG7Mc4WOQDqoxu63f)#+Dtn|>dEJKBsfxgQK#u}#V9w42&>N?q(W}e+ zwxCK=>nMCQPRR!Pt)L90sh-a~iVI&CqRDaD?3>WkKxrr$fPEL&BHQ4aWlV=!l)My) zt#{&QlMg@JmZ|n*^r!@F3kCQ@bZ@b;V3AF_=mkqtjO!B_#&uD)`P^kbFEpP|HJ{Hi zt`jOiB)=LzqyC7W2`}*$o$rECD4zurI(T~&Kgjn56H<7WfuB*?ymj%mkhfELI}0tO z^7zj|_wxp%Fn>BSY1CYKm@f};pI?eXnNThdbL1h`lNs`kWB116w4X`vaTPF*-t&a+ z!K(KKDcUyr-uHaz(Pww+_hJpmVlM3Rhko-CF5bMixQsa)=ODg?9d)>T>E_8}Dz>^c zs5tlp8}4wPOCvlIDSqX}u+RSCXnn@>5KTB&O8=clcWT&ASfLMI=Ci|te~UPrDzJaz z&)N@*0FJ42ooKR`D#M#SFhNw_mN=lJ%1Uee7vp=(np8fbO2QjZ7T8%Y&mM zQZaer!8DQ6gF#2GTRVfS==A0tW>ztJ4;;8BdGn6o{s_Ylft@@9`SLrT{R^+Meu~o} z`*1J^i981*UVTPl3eKMSE6jjOC9O?N>UJOz4lZTD~k+x>0SqaWlIEf|WZE@9(e0T^j}k_aNXA4i@^gAQ|(wc=aJeeRbU# zo}0=+cu5qt>7y!BhpDI54Zj@|n6<2}%6xD!`F-8NR@VUfvs#0;TF&NSpVj zRHst)eIOr>jB`gZ1Buq}(@w8G8vdBu;K^hYme`eF>c+sslXnXDa7o%dua8$t@dl?m zq78Wm%b!ydOPy)aX0VW}REcK`>|=qPqO9QG$sKL<+%&_9<%A@HKh_YJSvpFK^wj?{?e9#zScR8^0{x)OcoA+dmq=-1TzdX39@yjDy z8MqGZz5=Z=4{OZW@RuONVhul=H6wSaz%`yi+rQzXhf+O?18!T<@I&W!D2>O^8{nN^ zF&h32^$*!vptC3QO`Gw?X!lK>wZ07RyN&nnCxC|EZ0vj9x8i-OvH>AC0^xmQxT(zt zqT{TVy%O??x>#+r??}ny-e};jM=n?mJd@XJT^d!|SuM-()9O37k#9U>H1fDEW#f+P z6KvG^oQ*lIqbl$-;g9&qujOqAeg^O^gLf|cOqhx$cfo&39(AM9ZalSM6x-_s%jHoQ zT5F_o0$b|^3yqvaTa7FmWwh1zF(T2BJ=mov`U%@>zy3oyVuDQOQb%!3JN9AWoSdX- z^=H)Ee!p!1G(Kpclb_!iL$4k%(WE!Jh}_Ugs~!_HKdD4t3iQo-${X0mV{1IM?A`y0 z!ZNK61S@yJDq^G3^1ywU8Z!F8{Q!PB%3=C#Coi{KpR3g5+TQs6)eqjXpOtkgQ_*E~5 zCVsoiwsG1&9&n)&P(AKyqlRgFmw4CqX@5H8dSDYZ#~*B+Am6o3`_sInl6usL%xQm~ zhqG{5CFZ3YIKdr#Z(fRl6W!5wlqDat5i)h8M&P){XxiQd{h;|sEt&S{Jev)}fT;PT zAN2g6WkAp0JO3IZOe&vH#opUJ(s+_-Jb`)-Ej?Kg5>(lfpxdzSQMWN_fDA||`d1)7 zsp`OmC7!u#z3MMPU4WkB!PGx=8+}Og`kPT=>Pd{mmu-peMd#KGuKF%;JfTKw%a6iI zGat;)I_E*R&w7CT$(+^VV?fyMo0Eh+#}iQKGZ*-ufMO4B9lthie+{4OwF%|z4fsgK zM{;Rh7WeHu1m?FYzO~DB9BJ?|Y2fj%&BrFKhV#*avL=CLkg;Ht@r5zSSdgD6uSPlK zGNBjKxhZZq!2K()+s!|o{Pb1Np4@h2%?P`)=2E(l#On4r15ebWr@IwPw5qn1<^&T@ z)F+f)Q>=L|?ml=G>FAGOo7Vd(9LA&5gVuC$r zzWC~uHa)+)K-=llXADoMfsSK?ZRTiA6yrL84)o+7V@V#`1BiG(wErU$@bj=8X2JsP zEqHs=I@>xiyJolj_9WbMuNjk=)rCFK`mLA>zED|If_OaoYJ+Ua7H#V=JvFoLh{K}~ zhMGCE-rO5T?O{9o8{)J~WhU%a(>4*bLZ5)nFcWIR)NP=Ram1`za8-iALP@7;-&yRT z%?>}c#mZgV0J@=7%-##iv$oNDV)y&_;XQ)10p7KdVHz-Gx)+BqC?yR2Q3?Zg@);wY z-NF022qkpMW}+Q@Eipl(+4UCh>iC@W@lx6K0W=yI;!bbEffQJlt5lA{vI$0kG=NIS8|wgTMy9%7;bRdOoEsc?30mjuAqr$`#X z`863+?%Koew&IhoVhrAkkMZ~{CP$`-JDt^-sV4=4OVDd!gt#*^t;Jvt*|HDxOPEU~ z_58qO6RGDH_i_}~Exb_MlPm?Jc)9@jxZDcZ=9`YHlb@pCZZb_Z3?=C z^yj9UxqsZwIm=ofigmCAo2m)+VHZ`NV2 zJ|FYy=rR^~kG$>S5f~fr=NkQnM z-Ox56F@|nN?dL8kT?`)`g{Mp?=3tQ;LpR#hhzC^TsC`0{QSPF)x(h+?La<%XX*o$d z6ISq9wMm#e--Mh#T~|CD7VAM??F)C{<4%wLQ<&5`JodYtxZjVCWEavvbKVzT-I-TV z^fCCX>q>EJ?*e%3jrRKd;GnBK`aL*yd9Skcd4$G0ul+51y}RyA3O+y}GYC%NL6FD3 zEl47Q%)kE|DLD8VE@rq7!R5&*IblbGnr^Im#Nhy=O?2b)2Ig)&4mLKtI9&sO(M*e!RxuXQ(mw zG0%5w_Bg+waM0WujeNqDdl(VX6J%^abO8oLU)guY21IdQ0klL6mrh6C$D#}a9^8k; z8I{O2WGzNz*wWKXukl;xHU3@0YrJ1;91Dv!4AysG+_l>sy)-l&{*B7M;|cxTDK^!o zDV`y(3u`G~xs;B9aC`{11#=^6bX+sme2pC>dz<^k!fA(1?^8HN?2YL^LiIF*hUU-_ zP?a44J)z;CUR!#dPoIy4|HoijZibeG3~XN1$t(V30GM@ZVI4EJ4(C3oe-F*cB!%sG z8=5nSa6jQA4)}rl0nT;B+EAR4GsG7vOYuSSQjqPfbeS1EgJ5AbeGm2-d0mKiL}-o^ zi-BF(ZCC)ab2btUw>ynk2M@P9hun#DD3B(fm2rL>#!YhZuKou(wmZ~57$TuA2Yo@C58oc)DPcXH3n;rhE zykaUVFEd}Er^72xcqv{*df}l}zM&YK^|Mdvc!hdGi*-TnbVAus>=e-wb8^){JmvBPX4zX23 z!(9HNe5~z-vk-si!6cL?=O?hMXE_}2FR#bBfSkfecPlFzlofSoH>3F9HC%V3wRd9b zA_Hg7=A6KR4wzM`ib4dM;2IM14RA_18!m9dDE}|j#My9BG69|lOCL}}<1;U3M5IOwGk6flBs?udMrOdR1Ia@uGkt;iaL!(JjO0S2oG6>hw}3q%?+_4nXVun7 zOnJ39R-zW}mvX)KPIr5!yQ)E{+KYhT=>hD6Z1Yi+nO4M?P0wPi$5?gk$9*Q(U2Bb; zp2GVu+#~w1p9YB=87loK?Uqpar)l6UBXkQUamHr*?I&=QMxjT)E$SW@os$_Yb@J3W zPoaDKc&1BL7dDbOlUK;qTvNF=b^5UAxE+~3xX!>t=LVOt-AILFsIn(;uYN=Q`SwJ5 zs&CF%(# zV|CkD1lxxrgK5mN*RttnO~^iRa`VH`Nq`14bCw*v*dJF2G*Z5kv{DNvn>VQ zl%&pLS_*#SKJ;swhlM<^qY*8=OUl}4UdLzqwD;x67v$`jw2`6m&NQ?|?y-LRVfREd zk$(G;Xj!Iv0>gORV`-}{bdTY&y;Hc6isAuDhCzH>Lnd=|7V{DwlCW*1LAoA;E4Sh7 zipMWim7*G*lf$w0z>m_vQtgjx-O<^ds8OG=gE%Q?ium=am$3NLJs#HcF=KILd+kWH zd3Ov^wKrzHiuKi6l?xYbr#^gWp#BQQSC4iK9!<2Wad@oiRn@#;p}JNz9Vq-LmO1hO zqUSNL@aF7_T!i+mxY~^rh(uGmL;6&N^oB+ZSt}Bq)k68sYlU3b`-&z)uEUV)s#fey z#>c3WcT%iXY#b`8nu{+zTGb?6{Q8Q!TR|u1kYD?~iU(kUul?FzNZ+S@;MdwiRh4`L z3BM&&dYBS^1Sg}7a`{3N;9)^0%Y}aX{!mo~5Khm6EzocO)E#{gbyldU2Di~ygA5vy zm=ymYSE76>_RJc2ws+8khH;9>Ix>)7rHbw8*T0c z_9n|4+;w|QdDgPQvi>aWxmkFOp#J78f5`^f-A=2 zl~yI0sJz(aOI(oR9_tQ`9)g@@R-5UC9o5XUykj_ANexM+pq<+rebt3vY}}MJLM$Z2 zkbe0*umSU)*sf@Uza;25|5X7foyaOb#*7Ct0Ow2tqCv+1Unt+K^x~9DYW}qzEn@YL z6eFzR#RN%8)D;{8^cGsgE9n}W7ALxo{`7` ztqVfsMT4m|pw9o*Ne$r%W?)EX#zVLcV9xF{^zx?t{$9K;z zqklH?9_rZ*Uxvv zGmQA!@i+|v`)M%l!nt(z=Jx&6?V+$^c;N{S`msB&9p#V3-34%Qw-U!hdEfyREco;RPW0&>PlEKs2-S_pse%1CvgCw^$`hGvV zS1M~}C&1rXI~INH$IE0?^QA}8s*3yFrTc-PHKdYvcqgO>;LN(i4tN-LFuJt3+(3Ug zLU$x{aONl|+5v4S(+l^2BlW@GQ&*zDghOOy%}^XlmPl~-2UYXC>j|>YA zxtP8?l*&60A?k1vhO6`tT>u}BMW=Bry5IhuiWOJ-!~`|($h_}hDUjWVEsaa=HN#_K zY&mPcO&@e4-e7<_^L_Bb4lfP(42Pu%Fs&IQ z@0l3bPdhS7PrnFn&{ZShm}`MfJOg^ndp-^G2zNz!zF6Dq=7i8Od>+NR78nv{oroWx zS95%ip>9bd*yR*QH^#i(8xTp!reb9uXAQcsG7JM}kFt+*HJE+D&kj6#i|=HfrJgeY zTn|=v%rX=FgU=zT66tX0UW!p26e@KGT zjfo@VjZ$(HSC|jF@$RnA@sA{O5gp$n8<5wuBs3wiUA0C?W=Y9M_@@uF@O3ueedAg zk>B(d&bZ#4KS+eLct zMps>rsx^*ldp`M!y3E-+w9I$1!eo!s%fFZ4vv1~?an(N_#@ZJ|i+bwTYN2R(5_)@r zBcc$qvM}WRcj^_Ku%n}z<*YYqA(P+;}3J-)1 zi}3=x{ss^<3;E=X#Ws-FrZ*Oemy=q(jno2H z;}D6n>3Y=uQ7}b%}IgkFvNYU zssHzt)HW246F;ZPoPSBVAVlNlE8vfhRM*NPp5?n zV0;*#jbYhgyvU^W0fXg2_e6}BVSymSQwztsConyQzJ*Of7s;B$QL{=Rj#(hM-W>)A zbBKIC14OJn{4Xc4G!NF#`8fJ-e5R2XIQSc81@x^dR+(Zu;IN!+(6?|9iK`p>XR$}K z!PT%QZ(G@CY8&)RWM5p?(1+)T5L}i@nxFZ^bDz0OzCiyM(?w$gYATEj!$Y1|X=Esp zs*LbX7#NUgU!o-)pAGxMQQ8-7#fwagXJr`i>8tg@`GXrZ6JAnB1h$i93KSfF+HrB&x)4X6> zo-saH_}R+!XwhI+&|xcLJxLRj0=s~Wm|fuj?Fwi%RlU+#m`#&QE#*TEKW`cpiZOOZ z=Fpztl>u~t_JtQ`9)(I^ouh8uX=l~KaF|0KW9$qw-Y`reF`nFF2U?g?$vD+o%Z4^2c>ni#PE@yCn0F z8K)Xq<|}IO>&qoaRWyy+Fw;`vGsQ5w2lgxGCCo%ykQB)#S`t5j1*<^v32kII-lQ64 zt7suic(DqP4x-RKK^px@X3{BS;&)~`8_8Lw)#~eJ+W%ml#+?>if)0wGyu@=b`Blwx z1pF|#4#@bndW%4QzH+xfL|T2AAxWg0fJ9Otz(R!QVjD!Tp*lunmOvr0OdyH8%#bAV z4graLK|oF%sBQ+4WNEsXit1E>LL^-vi8vXOL`y9r2S1_6nb5(trUAd^U?Kq0b3Ac-tzND^5^KqAi&NX8Nfkyn6BBI^VSkqrV# zhnmBO2Sv4-Pzh9%)}^3or~5kozvo12aDxi*VmtN6O5EP`Vv zs*yVIDi<8bR&@{6VLixks!y*8BMGX$a1y&%tv-(Ce+MFd#2!mReH!9_tXq++T-FG+<zJ`2sX&{7L6v(OV3 zdeTBqS!lh5>Mhh{Ag>l214QZbYSj}2ZUbC7S>P@(Q9YYMw~?JqL|FZy1s^0L>n}Y_ zbONYmK2a1O2OkA8NiGs7Bp(wfB%fwbA-RP}NIpv>B>zSvBwrvBk}m_9B-aQOl4}JD z$!!cOBo7mjWW{j{ov=`sg}N;?a6s&fD=l=jg|3OA;C6l?Ebb%{7IzZ~i~E2~7WWGj z77qv{ixtzEj-zMe>k z-#{e9ZzK}pLy3g=Fd&n7zCa;9QlJp0-(-XMWDDJ4q4^ei)Iy6a^q7T~TIdA}y=q2_hl+B$1GOibzO4 z4P=shR-lmln?NDCol$c(y4phUe%pk(+y1{IRsM8ZTuS`78JP(KS@XrYxBsu-GL~SnSXDlFb8%gydyJLUJIHkh~JeB$@VI zJe0IthQlO)Kzx$C7UFXSO4i?Kyhmx~@*9a}5|KnRmq?;nNhHzK0GV03L!iO0Kp{Cf zMzZ2z3q5I}rQZV~VeJJAZL!c{3-wQrh3kKL3|()bF)>uVmXw92?QF+@UgHj$8AMkFL(1~N%*6DTB)3lx%zERxR>3CSiR zA-SK(D8qp z5vCJKtGCMd0J)Iv3i*t#D#UPQexROY+c{Pwp zGR+_f;wvq*+CnuJYB3O^u91%=>K1{LJDGgXs4I5Fz6s_M2@@)jFfoZpn3xV^X82rz zLNX{&NQN0yNKUy5$S8FSm0M_ug;rT8-5L90kcEa=$R9(&PR1cDCh=QgF^x!A%mgx7 z94gR|34w-8FsQ*|jAX?JF%(?Kw?e#yNQmzy65@w}Oyb=Fg?KW)Hg(f|F+$Zdh@@Q0 ziG<`5A|bhoNJu^hWRhGbP)NQdko;C0XHdz=gdfCEe+xZfp=T|$#zIXN+7Uz5R}u+h zgNcMO50Nl7jz}208^~m=RG=`nNT4t_`Dz3e#_qFFxrLU*P<5CjCBjZ3qvZJ3C^;gD z@ERa9!W#ujgd+t?gsT{o5mrA(BqY}n3CS%)MtKn#dN!LKq-oP29-)VlSpJ_Hj&84gG3@D4-<*R&j&I|J}OX1E)pmtn;29`K1C!XpC%HL z&k_mAzYz(^7l2HXFAEfsYXl0(O$;h>dB8%4Ep$AFs<#kHgxiQ1Va18q+n2Tj;YrO- zULg^?jcfHjlOC+?%|sy(A7k4@&bH6hzmVhIq)=;c z-)&&i%rwajxwUEa^NNp}CF_ZDJKlZSCl01~`o-2^qy>cZZC0f0n z=nzo#d`2T#`xKFs<$5A1%PmAwmb-z>XvSI59F~U?O}9Xa=0d)gXa*8VG*gHqn!AZ4 zni)h=d7dGX^gm~zS7NB96o}SRlFd#*e1keRlIE6nXSPZ zx#RP-7TRZ_{T4b9Lp95YB&VMMGHcC~0wsT+5-9omG=mBYhl!YPtDhy3oL)~PIbBaA zIo(7g1-gkyqS*puMzc+zM6+F>M6;7YC7RG>v=~}FfQSjGcr5m; z`Z^*>%JoE&lpBa7DK`>HjtvDelQK-8Bqd* zwopR0NxAwdK9dAIO(Y3;mPiutHzLtHdK+J$?!JI$W>Q`jC`nl(P?EBiA4yWy6N!v% zCz5D(5=k_>i6okRL=sIuE1LayW=3;BphR<6phR<=A4xPPh$NZ|`ME^XpGcw^0EB|9 zxy-m$4CNci)nOLOHxN=ckfEUXU1?lbUd=07rfZDr>g$YaaDs8I7>TPvZ4?k%q{+sM z>M?R#{W5QRbQ8|sQqM5-6BYW&EK5I;SzF3;Z}c{?nH}EuGw*jvaw{&B+gNMWU+x%e zfQ25k(8Cs*A49=+z><+Q`-r3j_7jPu9tJY={e(ct_b!2w@7)Y4`JO>i^0 zrrzF4G*^%|A_?nq&Gj5=V5m*iI!kem_=8DnZ9jpR?W~V>$L%MafR&FwDc*9G?e(NY ztl-cqRK|MmHW%!Js(rf}y2SS*cuG?LqK1C*QCjzl&T zFe`ubYG#V6jZJB;AmZP_9W`*w9zEDzT>UwmgDV&HQA7DDsx|_<$$FDyucHB1iXBd+ zu#)*mE!Ju$MT!t1?p5rwdBoVcNN%c5%)K2;AXJ=SIQu8$Xm|?0hfAnJtad(9tG;f; zXsb}0hr5WCi-u?5KU;wV%b~L@Rr*(LEwI@2@)03SZ~W49vKc^D)@O$ZF~;l zJc_Cl?g?102)?+w5leBgTQaG2{8**xw+Qaj-d4HaPzNrk!bt*^0ATn{jPr2)5{r1l zw|%@DhoRJ#&Jl*2@q(|WCp9Ar04;{KYyDbLQY;-Yj`1wJ*_FzWejJnT*Jfo%F4T|= z{wi>n)^q52EFComSO5{D9QO6JQP^ZsI#bqZVv*)oQsT(*QNl0wn_%e)k`#UxB2Jcn zrW)+}wW%?7!B4Kq4-x@>rjs96Ofa|$roo8(uo3yEau?%E1i_L3+_`$>!ITwT@>3ua za4%kxkFumo^^*K-02C_1Ya?7e_0!zsij*|V)~xXN2E%8mQsPCvCh`hO!%4|YsmPE` zk3G?wlF*Yq)kYbOVDZ^hD~~Cms@6ws9+5&R!fhH^@E{Cw?-pbu788!hjQ`m9#Dhhj z7L{`-s5&-CDIwP%D&4J=5p$>Psa_vOhYy|`KrV#_wln=W-F&SD?kma`FyGF6;Wz5cOHc)>kq1@;Dy{S-Df z`Eg!5xA5hhK($x5s6`unIP950HzTN9d2R4N5YYXm@RJ8$X`{Dd)ovAh-l|*ucI-ah z=(pGTu>V+j&5uPeb$e6PzQ=|uua*8bc0(G!#^MrOlNYLW`w-x`s$GmQ;}#}pt#utK zeOu5PBNxm1pS8-a0tv?+r_)KLVPDY(p7Py^#fdH~Fbv?{9oS%xJjKO3#y$h>JtO;( z`APXsTVyp}q5Qm|?`qg)wMpBK(|6W7K(W0G?hVR*>ekgnFIH%_pW>#$?{2iiM@M~N zZzuZAI_$@2@l>@bE9!BoN9a=IuD@RE195WMUPrEQmzgK44rhLEs_SsrTYN>Eu}KV` z9){`3AKI|)6}f`7zT69Y@_kiNThu_LLajTMoss zML3+iuCpIJzxG5{ftZZ_b=)>Vr|YHwvU+0aWODe5pWAI~`yrH{o5+q}y~o9v$Jf$#!m$f`eJ?d+Xca%{yJT zm%e$E&ih=r9&p1vR9$oHykC)*Wo18aR;0UG797CkjI&9do; zB|Lhf-G+^;AX54-Jex(HnU0Bw8RU||>cOXt@9^4**G8=28_1f)3Kr;Ng=w&i{ohK7 zfJx9x8#BX)Cd6XE8EbeCGFXRe#B%I5E0#zeTRpaS*qEFKj7ZtjNq%deqrPj~RsE6$ zZ(e0HddbsRxg7W`H&l`qx-*@%J_Y;F%XcPlp>Go4jGc*rPp$}jbOjgar?~^&38lR# zW`%zJClB3sjm=loj3dcV03NN|7jiVA&iWG9Il1^N+UhH6mGzZ&MwPSC6)bh8 zd-BjiG@wRTI!IqxRp-eIE30a;653u@!y1uw6as6n_29Y^%X(eQAX2Km4r`tt$I*yX zg2Jy(vdeCiA0n?jSTmYNpTbGLq9$1m&PBE8Yv1Ta`=Vdc^~P0@?@zf{m?`({ z>@A)hnDf|S;jhQu-t>B{3A;B{t&zF!*V@8ALG96^2CU;4CYML7q(v&4@kzy`; z&A92;bH9W9SQ25eBTTv*Bl!mnWIurMG|#aPIbC=EuIQWYTy1dpTQ(OvfNgR!r(c0~S&U_JF!7-a!q zH(o7QjAz)}xQ`Ee_~?UhJGj3oNJh(5Mw3o)imQ~>jF1JG9v7u#t;E}n?PkKYFpS9Q zqg8^Rn^-r_Hx6%&1(%#NSOWuD^#=p7@-+N+_=^r0n}fNHCdrRg@_|#>NqQ3UsJ$IH zg>z=#K`IOMXDMtxea#23nj=TULs6aCoVDVuD|oG|;tYa*z?+IQ*ulIG=nYCRj`K6? zFTR4~BwM%=UwZm>VlP?QXK07@OMd+NRW@59)H;38W5t1aD9NfFh(0*H5AG6dT*{6| zE96nqExO~d8mdmp#k1E&I*PSh9B>laJ2)0zCSp(RcnaAYlNcPEsA?-27MUII6^8vq zPnvd^X}WJb(^NK~De-*an-UYK793J4xvV%i+=0eH`kb{HV9=)zYC;OJ3tw1UKdV=u z>C*6|pW1D&vz=Y*!VlgD!j}ez_v#7NJJ57d_D-z1Q7 z_YF8y81F6OLK(-z#o|vS)hBT-Z{%dgEMA&)$A9ot598_8@SVW;;r%`T3vUNYHzBz(N;QjtPdJeD9NX_!64C7-K#?*(h7FM=uX@zbFtJq8QxmQ_tjQcbyJ1*qs zvoQp^ztf`~gNvZ{Fg6U`fOFo)VAs+L7&|U;)LcdV{H}iJ{0BXapSz#7kI-k7+1w{T zaMyj}aMyk8a0d?I=rQ^Wn&EWum<5kVdGnzJ3;;aXTcj#)_Vw8Jf<=Fzqg$!G6S3xO zgbV7HeBGJD7?ZEYrW~JNFV&%luNl=3@eO(mUEX7i=@+(>?=zyhy%J9#BGD9r+&GLk zuq)h%WfE?#bKBo04^t$b{#HD0`&<9RXr>~XyW^vo9v96Fi6(SGEII%4Xl5ar()eiR z#zj*u(Tqk{XXM)dG@9p}6%ZF~iIWw!C$e?UpmA^H-gC|+xRoeBO^!vGuMhgZ{nbc|M|;M(Di-AeD@qjQ|18Eo zf)*0_j1dFnLtk4!4p>p4kUkto7K#dNTZ@Qx5$)-ErL74_a9AGCkQ%ZETqx z0*FMN+yUY*;cJYD0^uaB()kK*+{&A`CfGM=*w|#;T?BU$l}`5CqKIhFOWzE?jtXeY zYu4&((gBo$_i&=*=vHZi8dD;#etO^pcM zRcCAx1%g{g_>+Wd#4BKjfDeW){FiJY9fNQed^2>>p(32k%>IOd;02)z|Kj=@Ul!BX z0bcG2&J4OC}fFrD-G5@iqS7grNj(7G{4;{&3Sp57s3e@-fKl{SdcZ z9eDl`0>W#`6obq;AfRBtD7Vz#|84 z+{*k-;v}#G2}Iw7gKS&j!w3e6TIF#{L1YLzT#jfUdRuo6-1YGlwL|}2E_tF73+s*+__y}@$@@+5=eh+#t_J$_GTZUT#>X9AwO|51fL_@T#Cc2;HYj>~8aOb_FEZyM{;;V!>1}zD0XiWNaA3T&A65+6kt$%_ny$zRhm?X5six2GJ!3$Mg=7!2#P^Dvy!-kS+PzlxI+6_4ddh zs(c|F45fwDx^RY4bvwTG6%9*+G6BMB8#ZJ6LxUT%Iv-l*_5;46w{Rv7jCv06 zHIsZf{zhZR-|Q!MKn1y-jXiY`FhgBOV^z^+B$KQ8;HnvFPBOXbja~#V{cZ>7wwKLGbL{=~tXW05DvB7fhA9GVX!j~J2r z9gN%&i+n30cQEn`J@$y^cSz(3M&#d*MgFV*&B$?LA5+dfl#=o;_|w38AMHIqtO;LB zJaj}Peh?Es-so|W^W&D;Pa^TDlTjqtnr@{1KoXLNw2zatmm%Y~U=O^cy#V&%wpik! zCw_|fow4{ImiXf$-)iOj|M!viG9v#^h@vF^432Kb#z-k~i8o&#{9SiDj5Sl(ejQ_Q ze_}e5KlW?MpZ(3rzaPn`vMb5IATISdUh*`I2Umju`s=E^9Ds6%=;F9Q-hqk#KjQC$ z_)#aHMOBpee-FSRM-+CmpNjZX)K#qoDW1@;KszQ{7Jj76;Z6c+hNzobR%8VZZkFZ@ zjf^J`XWRV{9)TjiMUi4C6B!EE#At)qm7)#8NzYODIyUUS5T+0HOGfD^~2y$7iD=4<29UBfhgI>$go&_4I^iHe(xQAm8@mk2-k5=Ps)NJi-$ z$QIhsMe`gdn&)H@geRFNPue|t@Thszp;PTLc*w|3vOv|Le0gQ$G$u4c2G)0pU z8@wy}lU1}!{X9@d$Kkv?_#b$k>ZV6m;YIGvaNZsbN9;9F`{bO7^lL!=HfWz(9aK-z z)D}Mi{-D2Lm0qMb8V{pwmF6_r1(g=#%U&3whbrs;i0p)Z9PCE6jC<6Mcd2gL`@dh0 z-0>CFt04z={7(sffkqaiyZif*dp59U`CVCTin+qTFqf#{-a zkye4|LTnNC#qM?JH*Ar$0=e8E@**H*!=rUTZa!aq73^m_@yv+$cZd&M2XNWas{(WR?(tq|1LNHA2PKX{KsB`7*~-f*=MG%Z)1|5C(55o~l{Y@4yO2p3 zO;q5Wzv#GLV3$6(eV?{UhHq-<&J?YcZtv!LvO2_tieLX1jfy!qZV<*&{Nvc})ArJI z*Z?vyKjhb<_Fdr#s0V!;Xe>MeLvSX?CeT3wcOWBZW1TciAM`w;v;|iR+vvu+AwU^4 zm#0=RL>eZx95@>42ia1KDib=K_!P0t8m2q0t@|hewi&%Jib$u^b;{BL)JA=H6q*nW z1TewT3yQ}%4uM(EYz5j$+|H1=Rk#M{+3~2H)vgR&dbzGd&a9I0DWk~c>=-C#^Cm?z zMyfG;i8u}euj91Vymsw9WmJP&bQBEFKpwg5%~XBCC;SmBzGi%0s5NV?oCkoFsTo$L zyl!R5d?pF~^HhIUCp0Bjf&MFqj~r=87eczHcNA|6RcfGT;GhQ18$5b3<_ML_f#4hO zGT}~RoU)`h676oX+t{+@iavsOuAtK1@jBDD+Fo{nA1ZX6eOQyDzio9w{H=YpBmOpF zbyECo;_8(6TgU2*_}gBqUGcZQS65)&ZPCUiN54LS!|)8$oCG(J_5%A+Pu_l<*8^5C zK?OZ`jmi@OGjWz$YA$N=`<~zoXTCS@ARR%Ez#0npmGcB423SGi&D#kd;+1u!6Dzls zj-_{>3`ro8>p;e|cLWtPjY<_gY(*}XD&dm+keDPmCP}m|D?=g&P>0NV!w4!d3uddV zRjL;93a#@YT=4>$f=Aoomia!nQh=G(QT2!zjyAj4_&D?3?H>jExRt**1V`J&mW$w? z;KT%v^7qzA6(Z@ew^8I&afL#m%qY-HP}bw%rWyloUsh8Ayg9)ihzgBmme1aVz%HMC zdlppKXA;~HOTTs$&R*c@B_@AJ+YO|NEN-&zLnuupsY?vRXevW~c#H0g}ng^Ejs~k6(>u22Df|MHMpS-KZ**Qa4;&X*)14 zR>`+UTfxOMAT+mbFKpKpDJLM%aO;BiJ>#Hg2VzHAqUiFGc`)gB1^Y;$pzuc9`Fw=( z_ZBggM{Y&@5;9iE@a!q&2I(kEmatx}JqRfv&OkozVAi7|*&>&acgTI@cK~QR(E??) z>gkihZ9lWy>GhbZZHwxT zpK`GUlZ$qtE$f)>@7tYsYTgI>Xgex%3(CS}%j(jHMH`B%;dbU|7TmeU!q+6=4@3Ui zV&y@M`ewG&@HjW+qQx0t7FLRlSa+`pq9f2bY)R@;Ij|L7){EB=uJ{F8r-c#2=ypSF>vIc0>mLxnjnJ z|3dsv#Xqb)JY-D*ES@S<7SA#+6~?6+7p4syR2Ur4s)D;hVS4dYT$mLe;U_~r`c1ZR zaT%9Fxh%FBmlV15LF6fsv8ciHZ>6=U`ggwkBW8-l0PWLGkN4nk1$Z>mFWLPk%w6h( zp2VydoDkiagof|8kn(vP=Z#1G9PDHt1rI)B(an7x9CaC-&h|!oKLc!HlJT)pw3sd| zjCct3c(`L&#kzz{Jh7D}Rl;9C=kwK2y3?Ce+cdn7t!emWHtHy459u|vc!hYp@Je!d z*DdEvzD84Fbz9?2)ZgepFqxOdL^GaZTG=@R4$C~wnFj~Q`fE@uh1Z>0gk$6H4h1-2 z0J;fCGP=JIS%BV>fSEKkvH%NaSg;|*xa7#6`OxR%w-7%gPg!l!u&is_9l2aA1}dN-2m(RTYnj%Fq%@n5lt{|$U(6og0H z&v*7c(bmu{X`%bm*`%eR_yNUDzDQhJ{n6wFn7&UbvCkeibS;9xeWmyIj4_}tGvE>6? zJb<+m&?{h%F_sl1Qec!n)G2E=y7M+De?U~{tReWu1q7wJm`N-`XUU0V@t3`iof}%m zB*-@O2(zgz?hEO6SDdo{>H#y~L_p0f8y-#FQ&98{l-659j`t!BJ^iC6>lg|VP9Tx% zl5tuaa%~6}Xv|4NLOqRkd%gXrHZ~m{h+kRy3nWBqid@IOPwGFrrEI!b!x0N`h{sRf z?d{g@!|XTuE73C9v0%|hBkFCF7p*DsD;E#^jgp5d<K z!8izSZn*mcVU^lmCLU(kTW(rJ(&QJ+D*6kE;rs+r!ga>S{4T35!tMzAb=EP~(n(Tl z>F7~f7ff|RuF@laLsw_EGbT|8IlFHhcsgr6(j1gXl9x`&YNNVa;7C=pkGq? zJG8zSRIt`&$4wX;vnF-QD6I17oDYNBPoP-gNM~0foc(p8y{^WLbU#&D|8SB|cRcE< zj4F>OAqC1BV-jALpTR+T-k0UCh+RJKpV>&bqQ4FCL(w|W_${pi#u}fS?GW7b@7DT@ zP#PE!=bQ+1B;lNKu#`~)nzk&uM^D#B;Cv!y=D{(fXYax{X{_;?P(tDBw7t__pHu6p zq8`1X7A$#qu1P`d2+i>ttry4?w_Vl;7_3p}bmTQDI#fpXaUN%)WF+2>uJ*Ps(l*BKI`1x5E5wc{QvRBl`JutVUGUk49HI|93r+46#3Wfl&@J38k!u z*L}Ehg`MIGxE~BXl3t*fZ|y{uqRf(LFB=hZyk6Y0^_(JR|Fb zlovnbZQZ91kA087XpdTSN>6^93k5OC!dVtrEC}a_r;NpdTYDA@(tM8fvL40vzVhO` zFdir`R(lW!O7-FlW3`}}S&=Q$5<-uON!wW>h+KL6pU^hlW??S*F@mFic745nraWc9 zOtL-&<>%KIH{fFA2V2!_tQ~c*OU%qWj-2f5&Wcar+J zF^Ozj((Aes!gIE>s)D$bCF%~_1-MRSb-*I7Mt9y}9PmpfDI5t9@jtDE>0l6^P;T;C z(VV6;RZL<#~Ed#5TGkit6P+qH?)6pQR_68oU;Y(cQ z>_kpU7$gqlE#S) zm@6A*;w!KQMp=%WbKw{eo@K;5Nmo{|Y=AQ0Ww_RblR&7L_<`&@f>cF|7^d?$9E(E_pi;YKeqe#AX)C3u@1*N@JS5Ql`Z{c{@b3`1lV9 z>I!BD3loBqaE=%9-Ca?`CE2h*-4EMTlgnYllZVmR+LX#)B5x7KX~xT}UCK2dD50qc zV55O$x&ZVlDRjP@>w$UYB|P%uRIx#7Xc2WLKX_ctXRts05m#6-mfLC#P&uFjK(9=A z2CE*>+USE9`SeA!J7H3erSA&Q`4NV=hyd$RjPENkwlyevLPl)Cd>n0ibb*nlNlmWa zNE>Q+A8-T65O>*N-NupyQ?LY;-6e}C`JNToG-%NzA^a0+C{f#u6xc_&rvI4m7F zI|--L)L|G>dBqs4$|6Tz-p#5XPYSrcS^g*N!z+CazAK(g_rslz2x7(DUWoBItfoF-FMLb@YQsD@9OQY=!AA~ z$Y%y`a;2i-c169&nx!Le=2Hj*tr970gE+vXx`V~Vt3T!54;+CGg&(Zr2S1Dd;DKKnQKM>HVsCO? zY7eZFtbsjsWf?}YwF}pYrE~%EMR|&MX~5znA{-sJ~--lTZS{WYQ{60r$c`A!Yo0v4jt}N=Bg@vcM#e@pPrJ^Q8TzVJMC5UrYVn*dq0=gAUSVhj4&eC;LeP{yfQ?ZGo+6)Dzl7IZu7w`;45r!dgRC&~ zRlV2f$Fb;4J7n_faSmcZVfuP3Ky z^VUh5=L@~!bX|m3=uBZ+`B(TD>Tlr~&>eyUSdDM|_MLoCxUil>S|QR}80&~}{95!C znTBxRit?RQ$l6oLIxRs;(Txe1MWC9^xi@r6x;HdDEqvfB5DaXXif=MlVJ;hjdlqv6 z+T{qk}h_k#V%27 zXJ7(naKNZkaeKqYQrxPgHBo922WJLy91fzQvMnlK?Y4AlMJvW2ww z;;FSIw}d$s)blE<-5~Tx6jGz|1&r2J6v;*t(P#kHqbbafa7-vdOu3`etX-`P0jyLj zm+%S4NQ7wLQKo9~^m5q%k&3yG712poF1Na~uyfX)7V*3`Xcr}d|?Kl_9oHsX7+lsY^3lh!9tGSgI=!;q>x#z6TDm%kAHKzFaO z9V-~Quo}XCn8}4M=dn~d59K)II}h=p&6)uahwb>CFk;Gfq)z&hAT(H3;VL9E*Hq#2 z-ItR{9AJWlz$F$jnrvDtBL*avbhBxMo{wYFlC%BEz%cqG)hR~L#Z0uXr5jZ3E5;(c zyXkbkn7$XHXLFCibgBd_eqRG75yNsSBKT~%4uRty83IQq14|I~t9|dLp2aR7EZ!m( zIMADR!R@__Vx?5>c8NAXNXTOiUp5w-9x0~3QRy%C89(kNJ*D&hRqK$Pxc5S zync|^LZ(oj&W;nsCqbt!`U^qbAJD8!jsIXY#iOr|D{{+Nt6^W1Tcys;0hJi>Uk9ac zX|yURI2*Cv@AZ&PUh_{N@T)D+nU;Vwbche?4&!-LbWSeYYuC0tsKf$jZ3mAVSi#=Q zzlkk^WrA~v83yD9pR_2jE7+wG-9mIuVUE$z!)BB8B4cTQvk`fiYco8k2Vk@5!dkij zM>p1--^O_;bO>)25MAH-GtVMt33XsNrb&eV^k{a2w9r2@h<)P*)aMhjq*P5H%T0qf;e&B%`l|O?MgC_<7i@d3y$c zWAfh?l4Lh33(XBg;{<&mvVhNBbOJ*Q`q&!IgQ8?Hv`h%(68839YGHX+@@8W8Y&3h! zLp#kwuVBkVm~R|8)_N*bOjV77k>4v$sp8yXCPXj6p4Q@MW$0Ih&`t8F)?@x zLo*}w;&2~04XEIdmepQuY-sora2~WT@TF?rbUCgWFb-V6VBC~P>*L^g|M?nkX+$s~ z>_Ud|O(O_ru4=+UR1{rvA4?(N_fN`t!aR9`gf1ckQc*G>QoImgN-h={g6#YFAHXSz z%IA>~iNbO>Wwq~?-gSPArF4fC?74FU9G|Y5lBWhCMHl5ljPrckV@G`RN-$U}%Rcf; z!d&UjXqYg7vFj1T+o&lFsG!W5ke{|p81dZGP<3G}M1F1NcN)K~!*?K}Qn9kT0n@H2 z!BigW8erP1eXY_V7YMyBwM`hv!I$E31B`f&(oPSqdV6+Sx@X@t`!Mh96In72z|XWM zouqp=+EgObS@$IX8wv0zYI!5l9_uc>aWKYqE@R3wZaM1<%wRe`g6yC}fubG`<{63Q zI$PTQggluYRaQ{w#*;nH&vF-QJ?OyQe2q0HVFI41n>FTadH(o;HTt6#()BDG30%_ zO!(FN=?<*f`Tpc}!)9U$z(Ubw+AcRQl4;w7p~Aj)iB3z&wJV*@#96p2c)`W2*9~xs%B=|{-liSkZmXKpLFP^O%S$~%0aJ6pm^T5ZWN}FT z>8r*}<8TWp12$BCf#zStQ+d|}7#|g(T9=bqr)GVY3pl+dyGWqYLaCGxImh*g z&(+|zeDah?9@*ZdlkIgyIptDop8@1oh571F^D>ERS)D#SJ*@8woOH)iXjh3H zgdCl7Qcm44idKL(MvB~o#leMNkjDtb3lZPJgfG@zZ>(qQvOLo<qbo+~R# z=eLhy4vfa{6{`_;y{sFD!S-CM|Jo^J4A_`PV8ryBe%FVbarg^B3@F7_jB#a)FUsiR;j zGmO(bVLZRPQ5esQ;U5N^lrM~@$H5UVMu9N{kg#2tDi$dm%CEp78|Fzjy+onUYlAC_^1;N{wd5Jcs#6;A#RjE+L;`B8Enb}t4qD* zyfHs++W{Gfba;k5NT>L97OM3``j^w-4i-Ci#SEUC`5fXVBD!=^pkbYkfn*t5o43mR zc2UqLt0<*;2F^#oloUX#CZNZV<+DrrRX4{hQ~nf;|v}JU`dU7k4}z`4h(9q zb2pgnj_DXAs_sXUM^?cYgtJz#RA~W|j4M|kgsUHA@f0&tUzAQAlSk`wDT8kIV?JvY zFa`>@E|th6b!lx^6S|8Y>$4J#bgL((8QPw#9I&3D8lrbPj%q{ze3uMqnZ6r;C+^qM ztsJILy0uZJGd&%~waxOaoNr!|yaxKd&d`$5dv_7Mw%pziqF|uZxl&r8Z)oqXtnj0F z&c$dfX2Y`Pup9+W-Wp|VAubv5!T%-?oH1DWB{)@7m(xfHC2w6uhU7zw_!~;jUn(!w z68^dr0Tl%j0S>c^1xkYR-v%}j5kmezONO zOww~fdrWcOgK??aw=-`^0}r6AgfL9P&iw4_yg!yx&fhfyS)O>awF846mYe27y9pJ9 zJC01lo&$M^~#!A9d)P8Z0Rv# z&3X3ZyqPUWjLPoHj#yVW5p=M4$%GNjl>g2CJf}@>qu<5&CMHd1bIRj)G^;8w690!@ z0~Sa{fWjI&o%5LNo65tH0l035WZE(xD4w^B{Wu33_G8RLABENtL0rr^wEr;{< zaK*(`rP?3sxoUe7()=U+n1dKj6$|FR~KjIrdio zAiT&T@ZxLf!=3~<6Z?}I3BLuu+Fb7Pq1@*!*LKUD-v*a?8<$C4r0vDEa9%4H+I7t| zw(KBWM9u5+kjq0#9`bm2M;?eT!Odbk6!7q&JQVWKEf0iIsQDzqjbRHpfWCz(p~qbu zxfpXNZUdN;a!ud1nZ@G<5>aa2<-F(5ES@_sU*0a}tx(>I8IhG_(TqH;aib%aI_h|Agy`&dbZGe^GZ% z@L(cE?|pSoBx{BRMW}^g;?~-KQG+jW0hWQibbw}M3qcm5EK_t|8N$z)ttg0%_$B3R z8Dqmde{{~^!ib&!sZ54=P1N?V@`d$AFuHEsJ{ZOvBXRg5KH+Ymz!gdkoMM-aGd7wW zcz8^FGzh~a+Ueh%IRb*KsS1p+vAn6bB`X3LQx>$yX( zNPN8T5td`UKqnjWHu1@@rwuJ{InqDYS`ezj0Xx!R4WYN@snT0+{e05x?RJ_$pY#pw zZHd?0pGa?I$H)l~x3?w6#yQ-9d9(CZXFLeYTQiK76I%qS_>Q#n(>X)!_GW^5D4!&UhMUR;TVB{VoCvb|SCy!u;RTyzayLf)pnfkRpInYKIK?gj9;bXD{}=)$?gs6u6F(vL9|!j@*P|w?1I(xD6_0XILHDB`TYO6+-uLsX_(qSh{-~{ zBM^H>HB9PfG`7SZ6Sr7+)sdTw#NA@(vRYuBHx-D4X7jEtAsUkib}LJAv+8LXcEGs11;-yTZ7uU{ zH;Ilk0$k%7j4*|RB-%uztw+mbwPM~CykATo(&IB4r!d7MAE%CM4(KX3nEjo%5cksi zWLh7STshmq*{{-IRAEM^-af__>GEr2M23{O~P%6Y9eh2zT(JH48coP z-WDla4`h!7AtKm9Y*<~ksx`4_3f_I}I<&6Mqrtt*G1A!ksb6A7vNo;cl=?|u1grkp zXC$txkWxUb@o0brY7`$11T$`EE_p;cO_I2ApjFaWLNto{t(?$mpm(2fPwVjgybr6k zOKuP3K1R86oo6Iykns)-(8a ze?b;04P638*_Mfu>8A+A8LK36smP(K{b3?Y>2gJ~x(F@=DOFROWJX0O6}j~p9@Cb{ z7kECQgeqOc)f7+^?{U|jXrJ5ik$6{MR366B6GNk_z0|t++=FUeJauaAuzSP4kAppb zM*f7%LAS3R9Y?O-m)b;_ssUJTn8y%wq3e#7WU)$SWc20K!aF43NY!9*@@jQY*J(Z~uNFkC$z23z*s@hF{+|50KIY0}N+0v&@g054mq%^}C2xT|eyERy^4P79 z{p9fz;XC&6Cjc`c%CEn`ba)*wdpltEcEIfIfZ5vtv$q3gZwH9@EZve0m@pwbjKq78 z6!wwQX_pbnUl6owa+zgwX7L;j*FR@0ejYO#iNcCtScOC7OQC+*=zbBlWE9-Uoc@~n zdpA|slTq*?bJ$SSa=V)J4tHuq&g=NFAc7KXOxrZ5ib!^)yYrfK*8t zM#|@%3B2J*#Qx&aWc3gdpQ5}fSc~o8HP6Zd@>?PCs08_?t+5#wt|f({!*lJD*Z|Ps z8u4GCRF`mFiE(Um^`QtR?-XYwjrAGwz3s*_0k?=qFqOb^`Zc=YY-xgs4w%M_#szXY zt-3tNo9l)Mdn6=J>6pmT>fmbD9`TH*f*b;BNnKa5!t1DLC?%>;z`9>!twgMk#@q1` zXBBvZ0ec9G#R-DcwgPOe7B-MPY+fUz`&c@Dh^11yKOX=8GsS`Gv2RM1zHZk2{MN@> zASygXTE{oIpG~NTG#)14UAT&wc#8?}MzS|9R)bzon2*1igTtb8=nXwPJG$BVHtfHm zdeG81&)K7Dof6q=zf1t5pptPazT=ZFc;dG8etp}**y|0)2B+1Ob8Ay0y| zvMtKF&K^?54kO1r#H}E)aw>tdm5%E3sE=B85a1fGPPG^xKcm!x#BfkU}5J7fFvoCv?tuNMLnE(KuV4K=O- zJD5}_wOE&r!-4Ve^F2Lc_Q`t<$AnFPra7q0;^kn!>dLo6l{-T?+}bv;60H$Pyotvq zR=LL+fh9JL|EhgBkhVIz=$k##7fdc518AU6FSjG7_8fX~`12g8t9sH{{ChG~K8a^& zd1cC3&I`R@pwpP~fM@Q)45H>PPL>{H?Q(tyWVjj#BzZlQUwVud0tua|#Y@O6Fa|Bk z?czmr9>=S>o4ssA>2~!ynk`~48kJLioazIGI@u=}gGx?<1t>mojlwKS!(}J_EC4EB zj#b5bIyTX`4?BJ^UY&zaRA)X1cQ%;*6Mb^kNz$8BPy9I`z3DZtFNs*(<=ny{*Q4e5 zfMGgQMtlQPLE!h7@cmdLx-a=Br*md-zVrErwLCr9(+fm#+C^shm;TtyGhLWoC?7=$ zCI8YNSMcn*WBE2sZjXOHr?2pZ;3zea+M!Ai>E8kX?vk>2){)S+Wi=5}qo{v#SKr5b=LdoLtQUomMH+MW_3$ z8+r2he?qC$u!66=6!U*r3l?Sy%8YzQL1C;irP44t#rM3{NVhZJP7IBFc6*@UD1~w; zlxcW|ykzVDGWjLT7Q)Qr9{brHxK7kCov0I3(K|UOfYwYC3bN8ASr0I5t}KIg?btTm zA)u$KIhBTCwfbl*UA0>^Qlpr3W>i}Ql6bX<2o4}hcOeDz3XVx{W;x`B2FcSU&jOyk zdE|aKP^$uKL>56at{@}gYo2_aXe}R@Q|^LkZ#g#`1Cjd5defzA!}Oyp00CUxK02Bt z%g~!ulcHV~gZreTt!37x`}-uiN=s?))ML_RLY34EF@94s3fl7qYPLp7&g8wu0xisS*)MkUYcd0hWph(Ac-kWCPZXC_|3WXg7Lmi?Tey~btD$YHUwZa^*sUyj_9%KKbFG*Ggd!^S|&se z*L&T_f^2CRP|lFX>MM3j53*Y1v5WfTpP;QMzdA|PSG*`WC2a+1j>uz-03+4A$OAL8 zM>^9QnM+d0y5Gfmv?-DI-kmw#TCOcu6XL7o&#<2NyW~)Ec1c6NO_XvQ1xa687_?rL zj6t7^L$%?08rFe=USyy-ZA`X|D~)bIF7Eh34eny|p_zPQ4kQ;B%vHH-az~DChqN!4YV7v@vO2ci~_hNRM&MFBU z_ZxJc()4C}(kDk32|~(NWPe~zE)c`ki3!(tMBUj4YmO+Uaq~_4!LQL933h=fl3IQk z9a<{Sd0@BX8>GsQhNXowm_zFIwZ#ji(HxSZB%%KhLBh1TB!vguMDwuLuew*=MDy?g zv|mSUnsF0t6P?pt$VBn$?$04^3qjurKWbYVD8W6+)XP9-`!pEwf1yt*w}~%L z1-|8x+VA=C1%}0)V(pH-b^3Ta^i5(E<2%!~f>CQYU7PVJ-eUt+$U$H{1_S<(eO?co zPXk45(|4Yo|LybbVPQEWM^LHUustoe=zKeJTA9S?t9&LHdp*DIl!pFjU`kN=)D20? zCz|AMnEWBB_4^~D%tNtr9wkdupB7ABP-MoMO9)GF6yu7CDdimGJ4P9=NI1HF+~>=b-r z^#WkK2Y?jHeA7|~6tJrlz+jlHZf+6raV1!~!LVq$mTQaFR{6G7zG=}WEvm3S^0Q&x zxmC0Eg0N|?)4?1=6x0+fhl1t13%DplZ4Yq!5)jX{EfGLmzVgi8Hpa?M_(!x6hDE#L zDVbNbH?+rx$};FYmvHTtP$7H3J6&vC`xk6$*SnPfp=qBR>6UC`jl^=y;PZ#N``6vn zT5%S6#Q(MLetlNf9+g)q?1;Nvr~0iH*{-oyWv^E0UXANsjaW~?uzXWCDZ4Q&9w2@U z(a|D_%qpgjvJ2UjOUnAT*G2=nz2+R0t1I{E`0Sv&w>IhCx=8kxZ@=z*Z$DuX%i2dJ zJF@D`dKCY0_LuA}(|4q8d=ZB}f5y(*TJMCCm&?w2-H87j%|>QtMeHx0)X#JI%Gz9> z%U5QDiOW~n=FA@JNPXMu`Y2?PzhkkVt~ltfH`;og z0jn;ryglA8z3|Qtg~m)NXZWr?YCN2EMg<5agWBCxu!U z%e%Z12E3twzZUlVHxxR2>K9^UJo(%W@DdvU^%O4k64I(UxIuc*@>&t?uQsH+;J=wx znc-YSMup#o{Gpi+e1pVv2iQN^9a#ETJCJJ(8ei&s%T2H(wKN`x4HCNBJumQq|e_5`T#=h*r^OxTMh6%&4if|>bK*7KO*>;8rf z&f4G3HYBRBA_IXjIg}`?hezLzh!xj0GiAYkE!k|m#IYc9t~G_84!v}|WD9Y0A&Y)z zI8VZt6ya*jvb+D(UE)iy`C0oe>v4(EcuBtKkGQSKv`WQmP!4kitDdfZL+Ps$cGrL7 z)mN}LgFPfE+kfNvzsrBa3GIQhGpgu2;7jCdYy zs)6WHTzjf`A}fA*$Z=w?N1QGR+vAAxxUr_FIyqk~_DKWd9xjYVq6t+t#`+*e$=I9y z0>&L}LA&g>fYEr+F8dSFC8un+jOd&pI1iokb;`jl2($28Wu_yKvlbx?X18;E#G&vRP7kSD6#i)ajbXf$3Y@L}x-$NBcp>&MI)@hAz%M_ZmFTdaH-H=!7K5 z7(C!Rw@4o6G(N#{sdIXhSd)f{DEo5I=>T}kz31#i5)HT|qw!9}67DR=#y-ng+qz>(7do(WQ zU^VKW>Qu1v4QH_y4Y`LmjreXXGeiK>GuX~An{{uG%UG5sasUmvbCv|0w%&Fw*(ji# z<)7y|=DD}DIp5hW@C#6jD{CZ+#W-{2(Mk!MCY)S`dG`WT5yY^MGkG8Oo!DObRe3aL z{7$K#P_cR_SV1?EY>;EQM&tQ-7vR=$9R{XL2ICH%4+fKev1T7OOx87r1boBgJg~o+ z2f529ZH^a*arHwK`(X@sh^5V3q$L}Z!HEAk`Q>P^>8&*0Bgsqru77#E>tEjCyt+x2 zWZLn*DbKV(W~}#)U0_)~Z;3qvD7HYU45MNEhd3V+={^25SO_nZ21rv_wyK`!i&#!( z*%vQ{SXmDU?UKzHAU=qgBGW)1UQOdRV2Df^@e!D-Bx(V8Gi=|fxx_0ZY;BO!<|#S8 zqGV5$VFBlhl)~Ib)ZPyIPpl%8#g5G*=V7qG>fUkg1YTf)kq?DO7Yv_uNY_2&7@bqb z36Bk{PYK9`qblT%K(UziE9V_glX#e+YJy~tgt0RA4~%%nneK;EX7FKy8h;yiR<+a@ zv$0p75+xDYQhH+Nk1kkQAfwWd46ZX1v0P>&R>Qf^!hfs{I~yl7nex;pZ@IKBz}j-- z7Z=G%xA`+mPrZmpJ3HF6nCj6$J_5k^4$kw)5O>yz#)d^YBpI73b;U0J^O4%+)vDN) zgjpm=u<7{IkU_F8?H!CP^BPhKZdULhz1ME**_XD|bowYVhjW&+Peio0@N(7NZMB4~ zZg%xHcJ(>#uI`2=IoG|)&h7OZ#cPycbIw?hE{0LL8CX3-#XIRGAV%@_%)E*HXIc~c zJ6FEw4zftlhl0Iny&$eH;#$=<;h&0~d~m(!jy#XyxaUHAEmERuUz1;1Kd^S%0ok?Y zspgUo&bOY_t~5i5GhMkL(-q&uBBv8oD+i3`$V%6pddy&M`R`L?*;pzG3zE^{>IqNL z_ps%2WXbr)`DM`xq$$D;lawist}E@5uk~X`Z{xX~%y|UnYmYCIa#EC3{jD3qQ^5V+ z496df$2AMHGp=g2n%r*)s}fbFu{64_P>a={HF_t{UcuH_e5sZqsa$H8T2*O9t9@!+ zr?{$V_P+x4>vRxx1C6^S3%ZsqSCXuVUJli2fRNO;Qb#Qg3X+9Yo`37jd%)AiF z2zP@;89lD7tf=O6=SW*AopHieh{HpA(_AKmm^^~t&snPI zJbSw496wzn*-JW8!KQw6kvnq=`4O&>qfSgDEQ!u$#CBWINlu3>!Uz6@F=ZyCW6IcT zGcjeZ@n0OVc4hk!4&RAmEdGPqychE(ao-wcv7ew5y0F?_cJP>AyyaD`2D#ixL&y0VCK0`5^9U%P8yv=G z+;RsSA2KTwu4h)Y1hRn9c#}A@8;!Sl4)gIBnL{@H`PfCSF1YlA;qr2>`sfUkO4YvRjeBJ-(U23r`Dc2B?__+7P64GnOct`Z=7P?r zPQKa0TRN7Rz6t%E|4irA^XC*8bq1vE(mzvGv+u_{E*6jEXYDd28xq3#CB;-?KO%MLpxuhp*G2*e^z3kFwUwU5KK32jX@puEh?09{tGD71+8LD9*j##k zKKmTJGk4uFtlAV>M?o>Gr)dXcc76tFCOE+Lf=%HkBzIr(u=oPfoU_FNS7zfkL{n>QSLQtM@d+Pbj1b6+HNg+jIIC zshHg`>0~^rcTSXhQ{SgDB0a9YXPngZ9zdz3beu z@QJ&@8YU2A2d#KIgi-ulI-{SXzrckk@fBXdKzh!8KXUYQaxP}EpHv*BWUDnSQW+z@ ztscWDs46-SNi{y6T}K;fv}@RB_E!OSB!ihN-7U566g5?cTv&}J5O!g4f3k?rKHmF# z2VfP*H4&%d9~MLS&d#al^3F6O6hd!Qx-P87hHL!YhGj|_7 zZQODyYfBWHM5H26{{_ypeqL&q>o$^8x+mKa>%)+-AzY-DyiHclQGG$C-G_ra=8BRF z!^v;q%*$mQv=)-47L!Z(hG7!QsyZ1j6XJ@7qW<3ql_64JPW_qDrW<5G)DemHC+>8) zo~C*U)ZUhvrZKPC6eQjbB&D~D$E3=JnJxfkcgZ*AzG32!aV+gCUlAk%$T}Z&nZ^TO2 zb8Qpz1#Mhi=tcYC>vq2+v*doNwxKWEGF zZhV@a)LELJ3yt=P$jrpOC4%fa=F1agtL?c%ea=I>*qmMjBt>!>25E7*J1M2RHrrG2@R+G|N8yGa8GCG%}SFDsK3r_xprDq7ED}7Z$a24`?|uAaj_kjpJl~&XL)( z^W-QQ{{Kd0M`asl$zpGIYlmi9v-L2Uv*1r&7uy3x)Su(rO#^L{N^_iC2mr09{?n5i z!`7W5N;;cy3`qCbu>V_dGpF3>b*W2T%HZJ@q!3&rdJ-51-y3LuvpBDFbm-!fjg3ZfqEHX7IUn*rt%0W!xUDW%GPYAQSX zZRlC72T$G#wz$#A!3R%>G@M38tv;Xs3{*P(_@k%b)#NN=44BC~M6`e_7JIoOh>`f| z!mCHu4W3OBSgkX*oAq0I;eQLh;?xRa@P614iR>qqkW{o!x&FQYrBWpG7C07L@QJCQ1W!rB4isKIRaQ=xzgtMiXCnEF~lb&Zu2U@o$9rR|x%~*ti ze^HXs0#&vIl_gw_!)-miBX0QK zF%vU2BSl#)u@7?5IB{QhD)%#Fsq&00Wwplk=SGkCu0x_CcV@b>B+Vb5Xu4`L64hta zaLmkUi#l_kksk~!li0L^**Sp}y8QS_d-i$3wy3Q!ceRi^hut{ffD z$wWhl@aJflIMA7|DD_?E+Yk5jv>fJErXzOQtyzckdQa#%ueOtgqle?J=e9>L7PQ2h z&_jsNnZEz&(L<-329yp;_^G>DY$1$F6P>r%ZxZ1uVSve+FhgU_dDe)RLZ1~IazUe$ z#|!-%Z;!b!T#LO)uB+a~+ZOk59=ga1^f!FrC^H(P!Z$j%u@)}6`25>~ z=6ge8IosdMM(%&OAN;XM4HGQqSXrM^`}SAa)h_p#cc-8{;UMRe^LP&O$E123q$nt* zcp91Ppb}%l_x;Iv!$kFlw~KYezOg_UccXE+8>{#PoaC-FC%M@AA{+Z+|7e=UoIXa` zIe5i~Xk-{C58>4aTR!@ra%_I`g4QO(9e!@vxyl`uBn3h%f>n!!r`^@sHHv@h9sPIAyODg&Ka65A6P=&>2Tq9*i0;k^YHC`Ad7L zoTyGqqrgYiAtSyXz)(uKng=_W7duK6yg%{mq=0z$_y;{MA{sF@cx+9em#sMr-RRv8 zK3by_?>XHMWrNo+40?)<6lKy|POmHxh@va5uWZKHu#hEkv7Obf9WAG$5>jyrADVK& zL2|RpU=&M3g}~%BeFCq1T|rZ~u*|OR*G1~CNyJt6p82fIyPEdTC#@}B0=TVoO{tz=747P1~FimW9xi{ZN>%CAVxvr>KzBdRbUp_(K)(JaB6 zB%=}k8puaiEWM4Tx1Lg!xz|xJG3AU8s=YKv`Vu{oCk%nB@}w5YC&hB=lxXJ!c<#dx z00-%HU(^A&atsx3Vhn$Yim%QZqpC$`r9z$F+UUSOgNon4*#5s!@m{2I!~Z8LzTBna zJD45B4OxI}*5`@iC(YRD0Ya=fS1B_AvvuvW=Pyf-?Cssm6#gUB$-SWQ|3RJnk^tIg zs*`sgKVvUL)D*%*we+~RRp7HvB}iSs4@#MZbEayV`)HMoMh?-rq2kiI<%TxXc4LXV zr_v|*(XyDXLYY(Paw}tNRvb8V%c&h}Q7D5$XNXo=WMQGOsvSUC`2kPPptql_gqotYLHgTv#*o<$1mw{YX=MbGczL289=neSF#OF#a!lR*SD#ZU{ zizp?YVTT$EYk?;*nW7Wv!7?EW6F5T00sc=N7w z1HGCN|6+kOGlz<_2S($>p~Yf;M%Q``foEB+GejVIq$& zl77}*??Smtid4Y!OdYw#!il02Tc<{mLL+__hNq@60K%Ga{Mj%{KtjC9WF0X63>Ea3 zd!6ACr9zY2&5Y_c<$;A7rS4}bL<#f}6Dy1wU05PrFcPP+1kw$W(uf`{I-h^Nucv1m zRQL__3hq?XO5gNhJlrG`Gve6>gjf*&wR+(lu;Z&OtTwOKECiu6>+ z&qTsSSE;)5pOQh^env9_0Xl}yScDU{U)h>b=HI!U4rmO7pPozyM2|l=-2tz8^!Tas zwFj^;Gkuc=I{&UYbV4*#{S!=6u5rs|=qmS^4C7c8@alX|JW0f%i=L-7pf?mrijd3b zx}q+Mowf<|ox^$?LCs`_}W-E^YeS~W6fTgy}5-oZTb|>0C@F0`K(hYHG}M7?FT;M6t2--)vEwr&jln+1AG0%~Da7a9Wf3%nuGk47gnL?Et^Y$g{zxqhyy{fw^rntYL5*o?mxaC5c# zw(4APexgml(G5?2B|Ax134LY5q%xmCcpgCB)Wi-4xYH!)uq&O;*i7=Uw(9 zU@?`8Q}EjcNHC4$FHA1+qLVR!ZN=|Fp5D_?WeyOlEdxXa zoyBNxtTIdtK;X8ZoHEbMB`LRPsIrTp_g<*7R^pOf#{_oTbzdh`SsPRORLIwyH(w?& z=<5htt;t(u4vofz-t5Y3zC$O1YjVo@+r%R?EaA#p(z8jpvaJ%XEIpe$LlzUJ@yf_! z?zGxiB?(yeyc@7g4qliY(T(nWYQVCi*#XP;WdfE#-$2tD9rM|2a~C-t?}w2kGOVJD zqjyR|IS?Y4_=F`}>CUBlCTTJx_@B!$ zW4W1Tcq2$>a>9H{6N$g1TlM{Q-KsB3|Jge$e^s}dRZN$Qeyb?yiD|BGH7iqEEx1`G z`FQ6PHSKxS(v!kAZ1E=9`Qrh!17j(;CcvK!!a+HknAU8`B0U?1T@GxZn#XB2_4 zoLK$UzMh`3tq@DNLru7s2MwTnN3&c)v$Rz?3-)@VR7U<|^8d}(?Rc2~XPae^Fk)P? zqx4zs+A$I{gcWd!ex9-TLf*9Eu?)HQ9-k53Ti<(pyoyiNiu(|Lr$6=d5%iAps#2{@ zdc|(|M@W8I0`ou6k;p?FDVF5~h~ssVGl(Pgeyg_xMCXY$7c^XaD)$ZhtwVCWZ5Fph zJ45&XebYAW7|VhBMyaR)D?|LZ>jr#=(cqslMguQn|15h!mdO0=6EL3j6EpUL;|m{y z2(%qV1jlEE$r6J~Q_iStp;`7KYKD6RRYO9ze4;amRFRoRRn;$U02F@Uedlor60cBtCDl_35f_X->OE$$gG5=(h@dL-fWsGu1ge{%LP zyc!P4J%U&refDJh8sG;;;<@=Ct-Ck*#aoc2lxRqsm%}`8q+d=knD(vgD0Gl>pCYPX zhqw%I%Arh-0XzUbaQdm)&9ndh1*6*EiTJa&%U?69W#RN=);r6nmX#?@U6-DClPt;J zB(l20Qd>5MHxiE!KoBj!MA15&`Pz0-1!M)h z$Nh|0GxP8Z66esJ@Tvu#GpiJmt-o5mj>R8&6RG0h9)E}JVdwXE=67No61jtU*F`wb zUZidZsk;C0M(zAi>^{EdG*8%Gv|biX^QLOZ<7|-6S(9MBfS!F=s_qApjIC;>FIdFy zFsGh*R5Bd}V_;Em#_fdYgS(nO{EG4yBGwu9XhL0iNDNz&D)}MADoViDzWIvWTSG_A_LtW)Kfi-$3XR*>}vs}0?N&wgQ;wK{n z!+ch83o*yQEeqOCj9WM-S57`{!}FYNn>ZLF^3WUtg{pEdqayuk+B<^^3%;loUVWzb zYtl+z<)vV*K#{X?G2pyy^g-t)I1a^vvXx3#Fe60Mj5j_F?90afBM)g?-fwtzhM-I7 zE2!ch&kha}&En9D&P5UeBui>@?vwgOT>-ybcal7fMfye;9X*`4rifL7(nr^Q)!lvf zw2mdn;bMZ3!TaX%MgHD<4Db6BK4bFY{3is3=4|+i3<@hhJkL*&bir*yH7VO|x?;pxZ|?g;X+#dh8l>Al(M8mU)$})>e5IJxC?gxvSfG zpSoaRE=KWDwllU)wH`iW;XR9hm|qJZ`&vx$a&rZHxbdxC>IRC7x_l;y$P-Hq}N zCgPl=KX>A(4HHj=sP{6yZL(RcHgJd>!UcCY8&UX)yTrZJKRTm8Fcw{+XawoCk6W$t z8&I!VYx)VSZPvmP<2WG>w)r;2X?fA^6=+f;z7`y5KZ&DwySLTjZddUgYy0BP&Cp*C zEQ)6?jkRsrvx~fFv#QSlGIw z?3FYRmD+k4dt?x9x54Q3#W)U4g3A&lyPNg}Ot`NncC??d_+LqP?%Jw)B&k5V{iGK8lF8i9K%(uAdh%OxrfZU6S7Ju?m}GTYuaub z2+Cl@3Ovmtc2b}{bqV~MGEGSh&h1@LCczE%(Wk7f0>|@zyp*Du?SYb4{DOdgmS5RW};v)t5X`NxCGCHs`2_fd`ARu#qz+&i(w+B#9jG8(vi0P#sMlal_)1 z_C&O(0VSRJo@a8vbTRCC<r|h9VYFvXEch$I0FcY4qxpNs94nRm-aEYw@6yp=myVsPRfPptTM=v|p`5B)w z0Qo~+(ue8pTu6`i^XG3?fo4m3gCKcIi(N?%E$hUg&e$02elMn561*gMaqwGV>(k)0 zu=UKh)|b+ui>w3KOg_bLgL@Xw=g{*dgvhQR7D?V%N<@n}u&33@hvxEwne5AU{#Qa( z?Z$HG>^@_8^W3TNo%NH0Yo#7s=6hT6^ijlK2w5+4%OJ*y&QHhNa|h>yeVgqN7a3;N zLLK=;zTRo!Ie+!b!*>K@>m`c4M0V@!;!?k|3M2jlU^3Woq~mDVbz2WwdmyO6*lUKU z3QjI(XU1MN*d9gJ2eCH|5YOtf0-3~;H7bEU-+8q22!_%}=x&bhVC*$t?9JR__uS0t z{x6Z}o_#t>Z{QFL-Z&Y_jyj2iv{5cci13U9eq-6FV9#B0#7-iP!BUa~qgF7sM&fp3 zoE!|MkN7?a;r3z=9$Q8wc8SSdCX;zBzKhp%%r=;ZZ1QoAz}ge>y_Pxy#D)?v!9~iL*sk(xj{bbJ-j~n$ z-e&?x=L9RS@^f=bZ1ae$Yg@ea5<8rrO|!O*2s85~*bDL0*u4eey!qX%veB5sWg>b? zK>EH2or$(9s#I$?M?pdrd28rljsjIwPG6WYE$c3!zWt1$Fy)0rw%yeZOQ0AgU zVd`*6Kho~@%1CUdTfoej{Ls$VvwMdr!o^r2Yk$Zpt4O_ft=q}Xve4H1Ya|2Th=O88jZXjq&Sw;0ZYlLzbi|zwX z?a);@9Z2i#=}|~7P9V5l{~2qO_DA+6IKP5ZLV~-r+y6#GQm3p?v2@*=3nTF)MH&1k zelknrbC*VJ;O^3N*Sn*Z+Y&RAt~PRSY4T(=JH1>h-CTZFg(_J?smPhZYA`$BaJQw~ z0t0hf5Yx!*UhyluMszBxZ z+6}EQKQ+>;B3GILkEf?X!NN$a2acJKa(>+XMlly8yjcP7(dV)XRx;I9=gv!`%pQm- z-DTiG(S~$+otNh}$pd!kZ4a89nCdq7(Bb1@Pe?$zq3gU#rnn8cV1{i;8j^g{&_!OJ zO1Gh`fk{Je&;sK!-G;uQJ@rNe!A%1>z8?U2u~*Y8bS`MUw?;DPIs`k8R{QGRVHQZ6 zuUz9!z$4_8FTtj<>AYG>@~rjp+)5q~$f?3Y5uiY>e37x}R_J{i$T?N&ZdJ);B);r+ z-R>43m+(Vs8={``xV$44F)X!Mf{M8>=^a(q|d z=PBT*?L;t?n@au69rgx#)^|-oEk@$!^pv@N=@2lqBp9pq`?MbgN{i@%k|U)>)yYS4 zVAE1}c@5wWUpH-hM6t ztn>=>&`)U%Eku$-=F( zZf|#dB)uIYz1>^v&O|tAd%c~V)my1p#vf=HGpKJD8{C=}XibCvi&|v($Y03KC6gn* zjskZE2ccQaOGwp-0sR=s=&#cG&2QfBA`zTd3c6JwA@%$5C+IE4=)-TOyxOD3XpC3d6VckLiE z`7Po%-`pbgt=fuT0e*g4rqsT!ih$%@aupnbs(fA6MSh~OzWimPv0{+DqItGdmj?ys z$I{65=iDWC$r$!1xR4MU+VTi$6Mxw1+54^D`6cRG2tNqxm2k3bbLtx($m-RPPfqZ! zEUh0vUy7oS$u#F++nKMmN;~vA-`CAG^}%x%x@|lG5g?dJ0JN0E*P?DEob%XYnSVJS zCsAXIl1ZIHZr3yIM|Mb$y>kpntuE*evpRXpI0jIiTqu{_T@d_M(w0jtL&TmL4| zFcPo8aE(5wDDqt%Q`^x7o5_TLZ){E)BBGByBCB8|KF@#zz;Fgl0|h`36f0*7xgVF{3oSaGui2A(5>Fcmv1xQ10lWtKo~v442h16ZlB889 zAG};3?-%~+fo_v&(zU{^M!+yZ-0PPBVlwAm5H1o^(#xYAcji2{O4fB_} zb|TuT^q5djyvbrE6QZji1TjqqH&*ah4%^2+<{j2o?l(iq$00j8MTTx2P7nT}pUU9J z=-}mE#1ABjkzkJzV=_@)}6? zI!opxn6zXjf>oBxi;OE#1scLTBelK1Z)(ujT?^D0hmtb3v^2if>KhdH!>S ztcmqOwS943P^qaJUs|fImn7H-&fRYYTVBtFGNF&F_C3J^`mlW8Q|i0D>HwFq37m9< zNJ-jJu)VytRQqIgsh9Os*wVE|$-T{(y1nWtW9n0(s#lH0B2QQQ+Ms=SpkdCew%!a{ zPwegQ@n?XhoXEh+dB|$Zf`g-ZL5v5TZ=v3UeHI{SIa1hixF0~_+e-J!Q2H@(3J>mn z$!}J;=mQhqm_XxIZ`S{(0*2~G`lvVqIqt4Fr2#+Yyx75v)dK4 zr{v|`A)~Lhwg>S>l>56wLgClu^4BiE#b;Y#abB7<4 zl}w28m=%(PCHWzH#_9Av%#dQQcQO1=eC;s|2li?dzHA7>Ampw0gML#>{Cj$0>jg{s zWSN%&FP~s4@8Z6#Rd044>Fl;2EY}hTnLP1NG<|zIkGK_-Qvu7Hicp8_v7+RXVbF=# zk^ROZxqDCdT{1d@aI4_!$_x!QllA`2ZWfE!C)+S(8;>rU8ln-RUfOptdexhb?W1mk z*kxEQVhjz+=CydMp|r+X;Rrjx zR_lce=~?2ZyN<*x&&(~XF7AarO)#a53CEK)ut+_XJ1RRKi_%?4N9@&pKzd#*hpIY{ z5YW2Ej-1>x`~yg4;-Cl&$=i$gMD+fjo$h>&!dVaw{bUYI&IZNv_!1qPQ}>?J;uexf zfnsUM=ZbnW`KKmYn`oDu9>n@}eObi*)egQhE>!lxs>31U{HK%GGo-4+#?-^6J^4%A zXdSLSf{b(&d-+B)@39qB5WG;#&ZWuQWG<{}75K^iR z@DhR#h)F|P@Yp-k&E%uXS%WZ&k{eeD7|3K+H8lW(#w}xqk|6K^jguI@Q$YkCUFG-8%jb==qmk^*B$XA;`Lt#ww@k4_jfgjQFke zO?q7#seMBj$7?Ii9w4yWh%S6BRfcD4ju;xnMDWZWq zmU3XqdNMh+h+|sUo*bL!_XUi*+5*Hnmocuwml^0}Kmal>1Ts&OkbF2U>#|B9evFyC zhJ(80ToxLtIEQMC1?z=BUMqqS8sa4~P05D^A%yIaF3$wN=dZ>uBK|eHNS>%npHLTx zXZ89JK+3+phb>TTZLYT3@y9+plDu6eh;U$7kL>9^G(0ZY@($Muz5hDCzi^LxO?%y( zi2}Z{x4J=4FN-`@90c?dvtO^19=p##~^@8iaxuX`D0Z_B<}g?w)tO6l=@=!qrlF@@0m6 z*_!>O#GaQgUna_z?b%;S30;W+mV3|n@&sREZG~Px=6<=1uxK}&%$J9s(lQ?)g;{l9 z_QObXcY1CFFQIZHA@($v(zsLyBtFhq^#>u8keBYka6Ny>0fp901V{Q)qX$7eYPUeH zx5(hl%67Bmt-RFallMr_Pn1?@S0Stf6*8?RDNO`%(7d%$>JTF9VQ|6L_fr9MPmr~Q z#F5#Iy$ws;*b%X#ie}e{`eVu!JB30;?E7m3A8Y-Qqs`A?SDY=Bfp$%CUON(j9ryuc!oTCq>Z1U=7 zOB+yVFp)K*O(iT1D>$EnxJUtGv@`VM4noIycOCQnKJZWal~UCqJaTf(&q1r(WS2rzdp z;S7n6i2J6^s>Ahuyc0HuYj3%nf_Nw7aVr!OF1^yxa6!Qoi>pnVMnG^=a|SX?hxRDH zg2WUt%#Xr{UeQULVwj(pwRcK8$`Vbs^FO7NIAG>KNOP@bXP0T$1X6Es?THBfV|8dm zboJ(Ri8Nr!3F@!#B^lMd6KgFuxq7GJcfvji7fX<@|A^FX<;LO<(l&0uZA#*Gqv1UA zoM(@#2wOXF4>@}Z*e2q8MY|fY?yRA93E}ULSPO{X#G>6fR)4sSTHfxN&W~wrn88nV zoLlH$m)Vo$z>Nw4v&*{YH+-_o{wRa87R+L{tUG10iO=?irroJCDEu3t$>ebOf|Vyx zVq`+Tx}(G`o4qP(*3LH~wI3;vM3R4)jVx={#;&BcNb)|eIHf~xvn;!i7wS)oSY2lA z?X&qvQk%&Q6mmtt)^w#)h%%gP8b#+)&zH#ZydnjJHDyUYH4p9H5Fl&VFgJ(oGGg9u zVKsJ0q`B0;7r9HZQ_)n`7Lv+z3vHDzvE~3?{!?TfCNe3^{ZXA2)4DTC#)z+5=f5A{ zBG!KT_>Acz{x$Ok3B@2>fz}m5Z_#; zMA_PyNcyPtOJmJ9wsiNiVxpZgR>g$dwYF5nzN7h1OXrusnb-J}8)m_ag^~+IGZsoN zzLFoj1n+1a-7MD$-O+64*Wg-D)Pp-(?ffNHY&TsaLcvt>of9kNrS5dLiM=*T?Wv#E zN@uPC?P>-~GidKjds;<^fZXUS$YQT8B}PVS|16#n(BZ<@iqaM7=!%`9zDmvN2ZmR& zpjZGBA?&Uo15*Z-XopF6>rMVx?oIqJ<-v_r_sL*GRrl5DSg&TL4<=Hyh@#**>W!|y zPjO6QJ1<(^XuLzN4AFy+zd-k%Tt)@Le3z!`zKr;}{wcnKlpbQ*jK)Vq!j$HomNNFa z4?Xo2es1rUMvcbx9i$?Lx*B7cbko`=Wb8b9% z(p39?V-)=gTii&X9AXG?YQdlcyBWs;Og)gI&a zO~K-qtK;txln%2k8HP%Y)Z&(WUP~5zgc}l{VP=N#e{s0>8GhV}fU$XDzfsyj{8-rj ztB4_cdl9(J81yR{9ohsxZ{)tXls{ql6Tm0rxH5A02xUg-Pt5enluH@;6DU7HnOSa` z>28@hUYSu+M*ajwouJGzw@iauW~EmqAZ6rFAaH^*Tir5EZkgR)nHtG1f5J6VM#k^X zgUrFNQkwbpZnsPk7?+$E&yei$Cotm#?TjE7Mg95{6Z|b@W=k3Q6PSI1GSl5Mrdwu~ zTP7N1=_zri{GvbJ$+P7?myMU0OMaR)ZQIi#1CXc`yM(g;{ zB~)n)iT4{JfLGg&LXtwUm2U1D$wt6!{fcpSqHAhvYMPQ zf^9AK!7!FHs~dHZ7bHgV5{D)!acG3|ihw#$;>yi35SdM3t22_kMPkozGoXwU@>L$} zd{Z{z2y~mj?|-uatkp;*WuE#?>06b%PF1^B*PDz&+4jex$AB-W%bQ1AdA!WvprJMA_pkx!&VKh*6`%0l1 zgJN6x!7MpFTb0?X*2vQZt;yYysu$`z zogbo~(@{taIIL`{i9@LaDldhr047C`8A-m+gYl<#}Sv0M;YfL*9*s?o#xdnE-5jS_^{H72 zt)C0Zho`q5oyAC%)*oO|DfonG-8Gvu%HPc693Gvm=rrvqJ$Buh2rpcZxeaX}Ji!zE z|DjpA)vVm_bm0_27QT`Aq*=M$SxE}|*VjcUnU*Ko;?MmjppX|kf^=NOqLT1SHvu92 z5Lrq1m79RB;7vDSxtoBp;#oK0ZZ`pKiMZ-fvAnLSMUzG78;kjEl-4w zPt7ZOW&_))hx2(&G=ndc0*VM=#JhDa;q|PQTPZ_$AR(~KK59GXN=Z zu42VRSr}jwpu`e=`b$S&Rz_Ghh;WB6!oZmTA+pv2DGT=7NyCKUBa4M1>iumkUH!!H zY^884;h|gEN;MrclUwO#!Cm zHBOlkSLk=bvf#<#$LrX%7M2T$1l%48YZR`1FLj1=D!DemYig)GU-79jOXq0y@6&?h zq^~7mYqJ?^&r1z=8L4p6Sd-9OeYkyQl#6~>L*_5irkTDd~z?&g$~7Ae$j%7J>D?NMQ5Yj{ zQc1AtUXhJ(pp}>8!dYafYBLgRd36r#&$ODVk_rX<(pv%Y91w{<_4LQ?W;owlF?Tbt z58U3e2depEJs@p6PjZNs8I*pd-t2jqD*Gx32BILyOU?DF>=Xh+*E3b>SY=yn(iiJt~Ms{yE>JcWylygNxwDRVxLc&ryXH*qgay!DMEgj}8kLO zZV+7M{9pFo20W_rO!&_s2~0G4f{lv1D5;%p8H+Vhw2WfSfeD<66M}$1tF36fBN7xpXw(jcgx|MG2Vyg|HfSEu(0L6SL22l*3&JclsNJ50<{oT)*Nd~KJ zci;E@U;pcW{c~NDbI$X5KVSEA-}iIh_Y)$7YYlzY3Wfeew>~fDfX{kCCPVZA^?AhS zp#A7i;@LR_@ma6PnNBocB>~B-Q!Dl+K1F^b`fYwL#Z5S0Tk4#zsmtodBPpt4Lb8nh zR*1&XGb1U?sDEMwy(WKHg5tQFNc0>Y)@4^|l)JqZ%q*%a{l#-o2JD@?C$Z z&?N-0Ig{dD;4gpj^NtMi_mxD8`=sm4qE3D7%X1~Ucp1R_kMGy!iYyZZnrT0x@fazG zh^X_aU?a3v2tBM^#us6hVQ0?uhn|&*0q2e4D&pI!xf()MeNCqsKAMcreShdpnS7@8 z>O_R2tTr%W$u~%ME$$Ck!JmoWs7_fddorJjL*UMj}Q%HFu#dVcEnw7+H zy4ixXlU?A|87dJ%tbcP7<;#7~VKW?|(i+qH`F+Gw)*MNOu95ZXeBS)_+Ahd98H*7< z#w{!I!o_0d$O)(Yh8#8rtfNSLg`uwx%Ke=3XZ^fG3JIapT~#TUkVeigR+2H+@H zBbW|Q5(;+n>3=II$KM2SwjWm4jI2V2!rCxQeF~ZK%NpE5a}6_m>{BG zbGl_8S|=kQU4r3cd&;G~auiR1xGF?P!|=YPKed`d&{FYf$I(&&SEtp$J#sfAN-F8N zZxW@h%qRWH&rVb`_U7mk(e(SdYm|)2KWa$2%3lI-1?(AmJqD~^wMl@X_AI~v00B>Q zxQyVNGXIh{@=qPPa`_9l>~a@pbIU;oxL(8dC)*2d?rrHEW2c{oo67ER_aL8lANLB7 zDclRNC+H(!w9^Lx9_RNr-zIR0zbOGYuoa(?ng0}r+WL7$3|#y+K>z+C4sZzo$NNn> zG7g;nbQq}gsw#mPiRL?RDrl>k4Fthx455DZi9I3Nuorj%(oVlt!Pq+xpnz1XH@wfv zh%LMhKutJn=}cd>sX$c#rmXNMFLiqKf@c>?j|PV*5KRr_(5K~?A=40=j_G0r1N;~C zBXe>%w+JeE7pBYSlV~J2%d#4<9$QjJn}prQUamY-@IolX?GG&%)E9)>($;;>*mp2@(B)@FfaNWg=zwpCwJK*^@3Rgm(K zXf5^z=v#0scAel3ru4Jw(7UC_&~^%!8}3dKjk`ur(p-PhPN#>{n@#QyId|$tbDYdPsHpMKan%5`k-JW`HTKN-?C51?Ej6T zLvC(bB=e721I_L}K-A)iPs3;lDPwd5O#PH<(_e(xRM-pAo=jO1n-Wnm2XoRPo}(vR z)rNr0FRs+`PH>;Tl6!)7t-jQN^?$i{tv4i841Oz>aYDPy6w2WtdL5ndxuQ7 zSQqJZO#3E%@DP3Q^o(d33DD1az51$|?_Alq_yJ=Ys`GuCP|6qq@smTWv9X4hD_;M* zL(K3O2q4#dU?xw;N8Mwt`k*Mg%b#BLjHA}S&1#fcw1Tj{S=4@w(mRZ7zfQX95gB$P z^rn>AH~O*M-BzRborP0FPdKyeO~uarPkXH7sdHLi=C_xN2r1_XmNjnC@p+MHXy<9* zsC09cP;BGW@o~sGJM`8W`h+?nU7R2m)e7yU;+1NtOaG}# zwmhxYXN?_dG@UKmq_o>hh8v;fiZDT$X*4&fM`Jq#8hkm;O{X3GJn0;cTx3r`v+yoR z?Di}A1#1#3nyIlA7|}1}%$;MVk9}wrjC4NBI-W^az<1HRZh*wx;4z)?aLJy_oqtK93XKbj59euY!&u-yK6C zgQRf~-I<|@8Aj6=rfq)5485{Wx~b@kJn!3i`h>SdThWVi@xmG=5xRRnZ)D{=Dtzl+ zP#vnKoH6+y&{q_-z3D%S&Y*tg@+~~#_A-Wb@^;fYJ6Q<|gKvu161m`;vfq}RSHE;6 z+kpHT!9|eiX?e&?DsH1k1NQIMAt5yFA7=&ZKaPSHNZ9Mtc{6l$0%$I{) zm6|6w>jxBZP6oR8<47d82Y(F5Vq#r?u+|m%k1+&!KP!Dj;$6g}f@uO{WP|fAly4*> zT^Ksdbr_!OVti1^RotqVC1a;ZcoeKItNu32t1Ok}x@hSD%E=%$^6vS95;u0xn4H~_ z8>o)2F1{jHIq!4i{R(-<5a|*X_IO6*0$xHDvR718FZ`DH*|A6e%0%uAW1fQEtk4#b zRTtt1=AR|eqBfuPAIs=VSaDb4y!l>y|HTkVI0YqIc^(kWqNlU@h6M@lyU=Vp9J#;! zquywR;2O35nJ-y%VkkEy*wur*DG}=AVd>K{WVHQ0;9fc=#n>QwT~rv=gbpuWar;J* z48)A3T#=i1s>$t9CO#1{H3-I~6%ilcU#AFfk+2;~;@vK9V z;O75`I58RcVp{*O#H23yRAR2bplGa&oW~i^_S?aM=HQ8F5t>T^?r5;Ojd7N4-TO2Bs zLYwPVi*+8O2bB!N$yT}cAAEq$r}Lnn24-z0sb2oa3_k7gS=g;0p9!!{OHUNoYeor} zyc2WOZ=w9MrJ(2x1- zUVl=8?Et|(d+06dcDPdj%>ku%r@p*hUiYTRb;E7EnxVts~*gH2JyCi}{uje>-CE->I(w`-tE;KYr?vi~v)7*Lg0C>FsVVlv*ju`R z8#(m2dJ%V8Hv~5<7C(My9CJ7+p8n-9uzV*Hr<@~WDqsFq2Z-9wrsxmWW%w7@%DJ0A zc!mQvvDn~nw7}ZgH*ikA{=tJG5Pv|eZ_AJ^6_hVJZj4bzbZ3b7D37(Ez3g%!MNCGC9RO%p%DA znH(oaD#29#qH&bHFbl*iUR5Nx>7bN6ZUi08ozgu4tJAQS3feU4$Bkg@(Ff1&>9saf zd}Tnu1KtArCD}AXD?TOurWJ|;vX{!vChg*cXf*lJwh9O}(HVJgWW0cPnE(YMaSQ!H zvKlx2LGtS5QTc!lqy!`MyfV+SzOX(DAG{C(VvOy(Jc&_EVCH4EbFhgiteu&xb%_-R zP9^cOjI9^?*eYMwSev7iUv!?fx;-Dj1`i4EyTI_Yz?y891%g9E%GB3<;W>sl;_xu7 zyQ#bL1G_w<3|OpfKF>BpHzMvJ+u~1pZviq-BbndvS=AH@E3wt*iCWtv>$Zff-o&F@g(0t`&3WOrz{|7jr48^n7HV_d@2d-G5Js5pgFa zSi!XRM4rDvw(pN4<5?l9^U|J}PtsT)=7oMHOVl1WC|H*)B1REX^$bw1lni^)AR}0l ztkF}J$QZ-j$ws()fIWX05H@Jd{I3%j_i-Pz{ve7H_iVuq$Y=i$?Sp%^x9sN@42eeh zbyhg|NgGp3NL%<(cS+=2%}<2i<3K3}n_>dG9w>K9!M0f8@oM5I@!SJWnW-5$F?Cw5Fv zh};M*ov@um4M<9P-4gE%Io^(?q))O`ZA&{iZtV|rKv+72+0!35oRo3n*>X{Y!r6|T zisw|fPZE08UteA?XX5fF??U~`A3L$^2Fg4qSU(i+ z*bH`YMcPU^`z_)+uT9I&Q+pG>G-qygwv^+6(BfRO7eKVwp*zcS?Rl7uC2OY)?^@vr z;PxR^==W-VuNa|{&O3v3eJMo#s#i=RMS{d`;u>|TnV_WCC9;KkFg~f4jxl_ zEs_7c4yyF$l&i+o_T9jJ$ma#y&gkXm(Iz>1kOe236t;8r^}oI9N_x5TjTdQ5|G-X7ww_B z@*;lGxor71-IO1wI;BhF}vN^%!w~rVuRO@p70bh`i;Y13%3gn0 zC8=1*#3_5d#Yz7VAO51XYJb$%tX11(Xj9T=<`%BxBTML6c0rLasLk;xL(;!FCQ&ro z^hzni{ud!}1ES|qVE>mw*_@+}QfISAb9M);dpVD>Y74A0tjX-?Dj@3XZwO?!446#V zwr*;)7j{K{DpiM;xutHuHKEJIdOx)zXk?&g*ctJw*noRT*?P6%mtHJsWtRG_3;UA_ zk6P}QeU%;?=W;%W#y&Fq{uXmmk|85K78yu%^qYjN!1al6c_H7j z++g(}C^oIy@G7|(?(-Oz_~=yJBm70t^Rdx+{+!X-pDNVhUgmM)0NqV?Geoz4kaG%} zOhzbjWETjMEj&6=ErndzDj6l~lR$_;p#?ESaFDh~I_63LJ8SR22Oo*^(Z}QV;(1mV ztPTv1;B_vC#^zaWc9+uFiZ~QYSrV|_bt~AsVsfxZ)764(_LqM8hLU0Y7^w#9seY*d zCV$SP_NW;aeMRKd&?}f}$R7IMRdm=}N@s}8M}QK#w_fc_l9!$86+%pVo*7B|!r58w zroL!C>P=D(ct|Kp!RH5A-_hah)Dj+f;|RhP;c2YP84pSpV%u;3*C;3r$C*WBhyc#< zFy|yb5Mj1V;B4uzQB3PBe2n&sV^`n+Lhg(6RdknJ17F=H)1@RGS)5Fq$PT85H0STS zoN4lu%pLo2SEPa$nS#MBL(IjsG7Xu6rGF6PmLbx?Qd@T4&K8XVz2Dw&g+fJFW$#fR z3KwNxi*6cQflHzV8R6|FQhvRYLLsDEr;7I4QHfXh$TiK0R0!!fA2LDzS;|aAMvtJp z0xlI~5^1GB;`s3m5x*sLKtGImLJO^kW2)G?TPh1KdI!6Ee?svB!+ha@H)XLA^3~s& zun-(lu#;IQY_vmX#$+I&@_{l&%y?6r({z8kP{d}BJ-?ZJ(=@;OX*V1_+kqs zF?IBNgy(Saj@o)-yRqL|Ea5?Db$Bsu!jhImn!!Rc%_2 zWSRBjWdq?nY<$M%gzj7sn&#r-b-X0u0h8P;*{iMii`)#bciWx-Nu-}+o2 z;)YMty3}lmP`VGS9-5XV?yWh;X}>L@tiSjg-*-8yFi_hJ)&SQdfH|R;`i!&&!`rm* z;(&MO+>c@{6bqH|f1t+|7@j77OIskVIy(K_`Sw@C-}V1e_#Z(rNk`KP?~rduf4BcY z^>gqj`^h$?cgcOLxFxO`yeMFCS>@qdoNh6K-J?pzmN%E&f^+jn zusfQ@beWbl?+Vco_u1oI@bAvFnAGd@psBMjkhZP;g;-a&|5M-oD`s)wqgkbcaG{*M zxp+k^MNai*hp)i^Qs3BPD3|BAbH!U|jBB!Cbr>!C1EKSL)^5*d-mba-5U_Swr#)R} z%ON#*))VJ&>fh59*K<{9Wg z+}2BtzOaAq8vee~ENf7!NE& zE9(^J?Q9C{=Pp_Ha;e%#9HL}H-ps$#Kn=qPc4c8SNE+(eWrj@ZGPCA2nD%YJIT1Jq z*XOzf=ZK1X_>gz;zB2WZU3zhU{-Xq`3)9=5Q4j22)#-u1s{2xo7izbbxa|nD5pxjD*~bEjGvj&?)xi75B#IX z?-K`om@Q#4- zI`iAO-D+AlM7ja;Hp!S`Y>;kudcjbhByTrb4k%wolk@BmBU=vU>}KxW5+CoraYfwL zj;r#!Tug6;paa$*X8T?EEwUQ%d;}ik7T+dqv(IX1Y13N0wfYiq2;&Rg<;ttrUAi%j z^5?zGxv6Hn;f!4&J;|Pam&yeV)U1`bFOGT-R!?^e0UbtS>TF z+JD9P7c%~Z|Gn{V0|9Pk0!n8*1Tk}$E3L!l{a_*EzqN1wknN)rqRYWR)jrQIy28&6 zvX8+23Gmmx#r7}G$B>K1UEbe58I^c(bC2>so=iBg%L{&inZ44QQT*B>wsz|M5z3%b0F;b1Z_X5?38pEvV!6 zSP^qqmDFi?9Lcb@<9bPyM6bwgJlfbUZ^Q5`5RqeX5)nKKK4YF+e5VhCdQ3O$30xf_ zLNM{WuGK~-${J93OhN@by$V(99;7O8+Y2rSwBz=D$bTXc&Xp4i)hj~GEmg4Ns+>DX ztR7XiV@whm|NugR#JXZ=28=9wJ2f=J%T)7c!D%w1>M!5sk>~i z6ZXeWJ)Z*1*Tu`J{84UZN3LGgiQIP^=Ee5HUIY=T1$N-(Ec49)vA?fIMNWOzjcln| zruAeS3({BlGm)M7y-lTu3W^X%rGEGm58T7XBxuI`5Vww>177dG1o(c*3_t)JUMH3M z>_QlW!+bZ0dr}IT{OXn1jP6YpXQWJojzT+dK^AT&wvuU1b)twT5!w}%PbQ^EuheAe zgY(<;!Ak^81)tRu{h^HIurfxFA&mEvXw6dJ{y#ADw$VT7s(-@!a3aAKCIBTJ#H6@6 zOYi_LK>^!(G6`~3YALqHwD~HZlwL5s-KA~nQXuHi{_=lIZImCRd$#ziy}2W;Xf zC~30(d^lhi4&Y{omVH_c7tD#Pf=+VGP*33ru@jh97Ij zC6_Rh(Ywr0=QHxpOg8m5_ngq@e8^-tcAz-GNmk`f%tb#f_UW@lRk@q=6FFJAH%cn} z0r~WM8&!%9i6l(i0nO$>Y6kwnXPl+b8Tc%jv(=CSfME zV4T5O$DC%PI8Xhj%rLp%m#Vipg{5iV; zat4X1NYx{a(HBk|z`w$Q3_`XH#31d28j3IXf916Eh@LY@(r90s=6p%x;$OzsCP`N% zsC2P3cl>Ex7f5{CpDpLYzH-vE6O_>Sy38PD+Zvl=mE-lzQVxDK{|r0>;z|BYv!n#o zJ1Jk=EUZ~K&C&Qb@$1v1#*0b)+G1oJoMOH{jf{bUX5iNrBSYX6^Yv+@d;gjtSB?7m zX(2Z2j0Pa6_zV4Mn9IU3Nl-%aMiPBT=O>i*}(Eh$V~} z-kQz$?;tutFx$-V! z(H7*FF2Z~VHRSbL7$-lOiV~{7B8i-vWchI<$&mrC z893$(ShzVVxd7q826vfMF23&Eet{o6mBa5QdSo$jIX0$e!`>eDdz?F-#9< zSpn@3EYBlYQRHdWEys$Dw9#`5ygN$Yw8Bc=H&ApKMR}Cb0RjIgFS@hYpy)@c@4$kE zy2@EUNl;)_qjmm`Oh2ba=z$3dH3l>;n>nYp4Rg!b_zJvlmu{q6hKe8;mDY-v2&9%Q zC33@n26?m?4h=8hN=Y>jP|7hDBj92aE^5!SjvD&2TlA_|)g~Q2n96o|zR%iABaN1$ zrfp|S@7N>Ky(bp_SnguN4=J*|gfR^i?ZK!BcXio*t-YY=2x|MGBuw@S?O6|?C4w#S zgspzFbk1Al5D6=( zd!ZC%`0$hD7U@@jo2F#k#5svH9YL{A#yC>EB4_tvraYa{K~0Y{dYggBPC^ieQLD9! zhP6Zt^e4O@KR#841DgrpH|&w4g-FDF$xLV~S#-fKIH|n$V#M zuQDImX4UCbusW;q_FljDXz3B=ccux6EI$5MDX6tDOq&rr?V9H?PK8rSAK*;3Bwer4 zjLJa-3@DvtF5V)mIe{`YL-64{{MI0{V#Tj@`K>8~y8QMuU^%Tj^F41-f{J zhoBpuRWr71!RY}>#yXk?ZIAJq5{v6kZw`Q9ULa6BEnX|BlJNm86~R|X*mbyPLWIDT zE$S%jv=-pQL?!23Imt|tAq0w*1;$iIRT>) zQQ;mVqd@yymIye}=QeS6^mR0GA^|7(hQn{~Q9MIC!(2r!b3!i+%k;&CkORWrmP69?I>B^Di_=~kFBU8X-p@;Gs3!~3 zvf>f~VrMO>SG@$`-V{8dfz&!kFxpT5w6qDhBmGu~&(rbETGk*KWwIEV+ypTx)aibn z+%}K;Q4iz9T7j1?abF9@Rkl{?6BJry$t_QqPQ@!&Y{hBD0K_mZid@tYhvLOw3kQds zvK=@|Iy3;m2UQ%9Q4S!+H#fIL0OUsqIP{7i(g=a%(LP9SbRfwTNUr+|NZ3DB{fh@k z`vCz6jwXO7`zuS_SHZ2z|IXyg(>FHD%vHzNK5IvTSZk$vZ}TLL>CJ4E&56_%jip!V z8&LwfIEx5%B+UI*tJpYe;NB7pj(giE-(2r7k{Zoqs>4QxgWWDYcqb5@s=;(8nKq!i zrRp4BIp|akT&_mgxn)5Llmj5a=ahGyl!q*r0(TQ>s1pAfJ_213N1COYB3OoU%YOi_ zQvrEab1|Bbm-a-zt602Tbm?3hqJ3>rYWb;yev)VLVBGkze;AD z_~`I9EjSWgt%w>2UYUI&zjVsYVCX29sS{x8{7JboUX+)Hwn#P8W!s|T(YNB~dV->v zFs8i_LC!#~#_VF%TnHA#fb_UeYl@lc-=XTxWn4J-ljQhuvXW!T&nGzwue-D+(Y{Nz znlSMHQa@WTJnG)nSbu9BxQ1DDI%am2%f9vHc%r+be^g-l=mg+2Rr6R14?z?xH_C8p zUonmj($^m0hDz0oX%Qj#XfKa+*q?T`|Apy0L|Q5Bjz-^QFO&U6%F9*5kXT;n!aRNL z?s#FoG@TNbwa)*o#b-*1hbUvgWs@WHn`{?=x8sT8FG6G?&@#-%Fy@Cr` zV#AA>7Fmu(<-V_2?E%bU|FrJ@%ANMT7_YyL`kfChOs1^;(S=U+&V2aO>d8<2X~U^n zdgZgI_`P>}k*b|OOl)<3%?y$=|LB;Z(!cc3!l65;R|+~DEu|oESSHlNo$l*Y&BwuG zT+wr@pfFT!;^W_0oTku+fZV;PBf8zmDWYUq&-RGVWm#&m+$Q9s!h!MphSs6*pBBwy zq8yK&;S@W*1g$}`2G2xaqDTjiG+TpINN;~gv0A1_2~hJ=tgMobbg5-alB1r52ZX|f|7d0t&*N+Y6 z7!f=3<_Y%5r>T|0To{sVum^s7%F`U`*Fw76V1QmDd?dvmJ~&V`51;b6gd`2P@1t=g zLa5HS>I2^Hc^BYi@o#XtsV}*R6v19yf6C%TXl%V|UIsUDU+mDSTPrb;YE=F2t8{^! za&s%^go`b63%>?_Z}Ds7_b$IyejoB{<9C2xgx{z9I{2OB*TwHlz}r~*nsqw3w*$C_ zTRTvLS0Z2>3K$;9U86VHHSpnpUiDp|nT)d8$UlGuAbgr~E5BFymalTER&0$+;pgI) z&M$*sCch#4aLq4Np$4O6;Cosxe@li48fdt*O`KVV+YpwH9N?=I-&VI~_$nu8_CuPt zQ-A7TNvcxWB?D5{I~V?aJa78BaVf<4<8joNSZ^wESI6TrgW-XR z(U|fL7NBk4fFYGwh}@b{$?1loz)s|Ox9H17`UXV|CvqRSvP2frd}Qtc`}*8}xiZPQ z+EYle@p{#)o&o$1^dvKb?+X+`j~d?h0%FAPZNmTF9axoZQ|DJXr#QW0WJMrR+Z%KX0K zDHXFU+@#NoAbT(MH}%!ujE~DH;-OsXM<$r|;_YRuZEwe-YGLk5pnQf456rb0dqF=O z;ulE;yu8iL?(MK{u>F}*n zo*tm+v-6Ozrc>LA;uTbNpB1LEk{%5gLaM40eO1vZ3j?aI6QBjD>-#8}I(7ZdsVhU( z1v-XwORQ_<(@Ut-p+{AH(!s~=iM*n2-9&? zyvIHD6m%V-^vM+W2(WCf2sK6t%D3Lf&DkiwcjvtG1IP_B^riWvRk-$iffDSN1+vYS z_3Oe6N3Yse`JRbW0;?v5ZzsV#)PQj3ZZ5X+>-cTsw}W3Zzn%O(;J1h0K7NPz9p-nG z-wA%F_;vH^F};UNU;Proy@3hAbrFVV8|DtZcuae^0C?^Pp8K;+yW|yQp;hl$Q6Ct0 zM{ebVVBD!-+^JyPsbJixVBD!-+^JyPsbJh@cyf(}!i~^i+z+G^S(<`zCv*JMgvpGc zTu|Rs@qjToo0nw4xjnl5I}$tT?2-(S?l~zG)|FGVz7(L{b5bOGdmewFFBZgmPOM1Sk?;oE zOz<3Dt9eC4QpuxVL=v5dt{&COyo*;03{I`g#^GG<&iT)+Sz{^#s}lrE%ir#z`C+PY!U zp}sw;OJAJzBA~^d_gozhzVeZ&0Gb z*XY=NsWgSJRer(O(E_qNSugpESra<1zZ-p_%P3O8lh)$1et6Pbx1c?Gihgp66>Ra} zYGXnz!aw;!Ieq2t^jQy`lx81}rU18fLimdl`0817+Sv!nyQsJS@K?l2P@7Fi*Yx0r zbo*-f^}h!oAy7XiY2~HNtMd1Fv#N^`uJuH>@~+0$;&@E>NbQ8T5&rPoQn0!nQN#fh zd<1M8;pPO_yqk?vTPXK$C|41@FH2J9eU`6sI8jva%Xmnhb)a~hH7lzpx-?!-Y%6Lr z?LvfWsF3bOdOm9q%rU%fgQ0EVlA|uEM_)3TJXq=Ddg@RY*BIeY(;6|@+cEdEs8=em zA91lapt?si^n_0SPOZxkF6v7T|G^Bd=*?UWn$_XVLeGVD-5QiXgr-AI5F* z0P%FAcHaQkqzOO7KCk$o^8#A4&s)vB5gP__u`_YP`8Bzm9lI|h#2y)Mm5l65dA2b_ za&n5Usucc9CaZ9GQY8~#J!ndL|B zbK3dmDmA>-3r<9@CKpWQb+O)&iUiyQC|LliGA93JR3_c?X;kh-!X)uh5!glrd8i4& z@cXRcG6Bv+pCC}3hrkb>5Ep4X#YGx4-0eQ=ZOq$+B@{(@*t9lzEQ_&eco7pRuJC=r zALc>{XOqTZ_wXw(=RLv*625?N;ru|Q_~hPz!yr($CoHrxF~a=$*x|wNuepavGDL~O z6=v}cR~S(>#5l#_gbCX?5f(B3=fWb6K=Zkab?{?xB$S6J9;eiW+daq~tD(ZHeO6nr zZ5TN+tcdgC7HY3bEfQAW?|8wV20p6;_G37JMPyHXEY>=cJx2BkKi9sA_sk+>K$%Yq zPY98{1jR|Am0j4L37!idPGMgjC_&R@B~3@;Ab1*rCKG~BLT3oEJqu!HzA%t;gnONC zSla{ME;(<{%r-@R>MiJA{O-a&-XnCR;@NJ+7|f0Aep{|y^)?iZ#nH3igWSrigq-nJ z=EFbc!$0Q3KjyT(U|tZgAg^_=~p>0gAMzxNf+V*3s>eYqtXM( zlwnlPL^Ua2%kys6pL&6$qzc#pSIW8ZcrzoutUvxs`ICuXcyBCk`nh>iBo6VKDwhfq z>rIt7{GF+|%wWyHglIZv;b8EP3#F*@E6-D0WIkMEjmYuyI3-_>y#UB@R{)A-h7jzW zbujRJ%@-PAj?8}nSth&8E}00fsnd+xnD8t4M$Qs&PXwc7Gp&3wmCT5-k0M13iHI>P z&Ls?WxP;Lp9Vt}HC^h}z68d=q;S1#WgPDT~SruSy)u7xV`M(g}fSX-?9&{@|V8OH) z9QL0T{Gqr8!*iI%zz)<1JMepUWW^2$Um$gHBBKlv+-A`cE=LU%;R1kjlWvD4$dwgi zv?v^D%E}(i(#k@>91Um(5eBYC*44)w2>Bo54`2?2Gw@q)D^}niS(zXf{OQp+N*Sp* zfNa0_{XP!BB#GhxzA1pkIe-HD-c&9)iE#k&_2R3X^nZl@_j}*%r~h4!z~!sy|DtR~ zu?zhVyIZ+KC`eyr@n1*%yM+3$ys)4C=N63rkJA5~y>g_i=>NZs)BkQJzB8@C$Z7{5 zV4|q7;yfJs7ToOYG#k{eB2=&9a2+-p zPZ#|B%5NrlAW9#^bbn5bvMb>{V0N22p)A(-;gE7RXB)G-iuIk(mXS^Luuw^n3*m~9 zp6}jYtbZ&P=nd<7lX~Si;X?`%?ZVmL9#7dkG4?O!_O^ZdNc|D1d2c6dHVIV;+$8rg z@9ldCld34OcrR%Q`I2e!v^Ea4Dw{Ma&l&RY-u?-BXzpyvC_YYF!anAy$^uro{ca|4QrF$U zJX7ibZV4AV{5b~zMu6W9kUv!bE(8F5@a)`T{mj+(#DLWYUqe2ki#hYz&5d6l^WJ`x zu9evB}ImogN*geiEXEP*zBtZ zsd@y|eW;A8{Ip|t5BW*o-bvWapJk~rB##=y?ij2xhEhIhiaVGRyX(l*iNamGe5naS zF~z4zPLhv#s^S3oZnDiJPO7^b&}T|DfG^?FjjGo^!l&Fsdh7CXsu%xq#9dygKvBc| zmEAVq0hOlx-|e<6RnMRAwsZ%U|4z5*v;TK{Y=-pMzYSA8mL)y*Yu;lE<12gY85J)J z>i=$!{Xo_8=X>lb2bMqIWAS;Ww=>^lwx|g&bB_foI;JwKYaConOzdj_uZtK zNxX#ZMq~7+t<0)9(qA=KsQ$`cCpgg~zV580LdtC>W9sKa@!2UMg84A2V+GGn?I2Je zJSZMdFjIAQ>S+}`UZ!g5S?8SrnVqU#F3HEsfTX56?^HZHHO+a?F0BA_$~G3SR`>y7 z-M$dk&2PPX`((WGi7~cmeI`z<Z+b@L=0BFB;B(kX)&FVP7u?7IM z0#~j$EB~I8K3N(QSwU(N3H+3i5^I6ddgw32$?c02kvKYn><(XsPHY^|h)I+HS}~32 z_)g3;k@4yqk6apIY@*}o|2fb<)aLTnQ?+!lzuxx^;iA!r_@vA4!4XmV-#7{ieZ|G( zhXFh2BUAKdis+{T`rnklLhF>w5Q7;a=e_Xu+-?%N@(Lx0s`w?cx7@+7)jkjm#% zIW9f|j(N1TOF%VR4vJ3CBzjoc21aM`CNLS^EekGa5)iMmTBGv`?XR+_-5&al_FpNz z2+GZ(T>H*st^L>i{e>@$fY`oT-H=AU(4?UlvqoLvy@T+nXbyyET^Yi@=$W+-|Cb1!0KN&Yis+*nR` zp`(u(JI7 zssRb9hMbe?BfiN0!vUm9PDqt;PO7!BRLP`DNk}DBqN;KJ{i@F8v2-bVIyAtI- z+MF;^zWPlIxVd{f)E{~G31!q8qllJq&;>3Xt^Ekg0yda zGpUf93h{ula4=;`ox*~_N(d_?ELt~p%sDbaTC|%lpxZ~tK5A9a0EyH-XZHkNh&WpV z1F@5VIgWbD8Bt+Alw5K*1H4{(gF8s) zZpi(LG~UK}mvUKRF3Jg)()X)5+tUlV(tihcZRV$UabUeQ-UlrAy;uZp=qVy=;xU^V7SiJfnHBl9jM zXwFb{w|hJt3`p)!MQ`O)7aPH|SrB~~3=^EX-e7&&+!897kV(oNi;_jNoGPS*?#*|?cs}}<{;*t z&i30^mTbTMsn*3(C6kKnw=b1!zbe)I`&6APV(C&y$MzdfXB{UI+wWKs&6_RNrILWH zHJ(6izfM8JB+acv55ncsz|KbeSc<{6?7jZ98qaaH_X@J|G!$5u8J00LdOPwZxt}50 zi?XHPI@h5G_ZuYazZB8F5l7jMwqY6ICMk*&end!4eeDgAPq|S$bbA&W%h~$c#}KNm zO}0*B(QDNp2ZqLi&U2%cg4KVq^^Kh7VDB*fnHmjMjLC>`g`Q;jE51i9^*j%{EUeCL z?M*Ry_;zJSZ(5)CxoG~S4wW}CIoOq4a*-5aH9Ccq3wVy%y z6+T^sr%Cvx#PD1dp5FeO1bmCJg`Iwh`MMw?+&uT1*7qx_u^e|HpU3Hn3_QFGA=8Ff zHprd&g&lQqOM9N%~gm(qDO!tVb{?yL7dygmbUdUuO!FI)3=( z6?~-8De40c4>{HAzfVE^`xaps zdHtpG*uI{DNowD+9*wS~_Kp38A@2=6k}kr{RCq`Gi6n}Cy>}6_lsiVfjgx&i23RlO zoPaQbunsYA6fGR_1Zu3B&JT365nEnvxsfYC7x!>LpQHyG*GXay0K5w)b!XBc*p*I`8^Lw6C!oD=w)9$O zJ3r#qq)h@A*HLejHnDY0IOhFa4;;0QcJAR0@nBt6xM!gCdFMxX5->mK{-UDeatRan z41y@<%h3%~({X?2E^Zv(!DaIP796E)H9B`uw4s|@^Frnjv`tly8TRj`H<{0c$61={ zEpXgA-noms!Ejdi^gwGz=N@D6X{XC}SUWlNDFzV#POFak%q!JL9Xf%~SKI?gPb7Kj z?38D27JIKn)EjyTX9f%A_lCPMV>2@F$h&GWPD>c{ zHJ#k%8un>*o)eq!jGv^et2g05t(UjJ&d@_c^fixWhTAT%ZcDMBk-mXuY|^?tjZmp1 zms?|BSIO1XGF%Sa*lTt;M6J)hH?8;fG4@EIuafLp7xhjy^fz1W^ds_Zgu60)_Q>nN zs}ng(%r)$xXh3rc;^WZU2U+>lm3XN_EhX4JKz|~OcL>BUUZ*Ev_N$FIdzo!eRJ}>M zXMr23syGXN5W#yaBw~ak>aHn7jRf&;i%JP?*wZChTqN%S83}7;(2k@s46Bdr=HG+J zX~|-|A#+)hin%rh;>tYBDUC$iCFT2KjD3nk9P|6NF20bJ^RL~fd+v0vLqOc!DM>gb z5UXvF6~UG2KUZb&zFNv3o`8N=K<^IVHwmk{np|Ff)W*MiIv^w)^tu{I-r2KoS6a8N zlD8JU?!%Atx_9M$uM^fCa7XmIeUh$GuiH#ax6e(^770P7-F>fgR`&uo9RX?TNU*!1 zW_vi#rJeH{v!nr}ncc$6$u7cX?;*!~h#-aNZQ>nc^qwhl-7=v>AC<=S(xJs7TqnUv zesTaZ8{zr9_p*3FSb37)oMuwZImN$w#QOetu|D^d#=m_sR6Tt5NH7U^w-9iWR#VS9 z-NQe^rR2s~epOOmA>`M4Ae!_Z4tG=;WR>icBSp~7{G$l6&ppApzurS(0*ImC!*I_% zBn3#_9Ct{bc{_ocjH{%FAde|bidaR8cL_Rq)@h`a5No>tL}BkshBHo+uq{08R7HL7 z_W@HWB~_}D^q#g@o1|l;IkB#gX3)#CIiXSDyqiV2J@o%cm<`ntV)%cO+&%BmkR#-F z`u2d7!&oJhLraAX>cRcMNfJ{YMafFpDrsS!=I&M9kIbxxbh~#+e0zWkp(|!{*hW1f zW1hW0V4m0NlGsQra9(Rl-zTzWCwAd1cSJ(lB#{bLiPR^=Pb|^B%s>*gN+K1i617qh zaK_TyDRWiergG_epqsY~MzIH8Y9Z6QKXE+O>OV~-8DmApQ?2{cRFd(WR9~vAay54Y z=Ze7A+H3^(pD8HX4D#Tz`VoVS(CzplzTJfut>*)7rOWf|G#1w>M76l52Q;NG74w6< zP-%Kz=z$dRh&bBte4gj&$+M2-!FDgMcM|tHiJw;}?tSiB>o&r@1M=(z(_B7{?l-LW zLD^>|5S#Pyco<2M@YPaGES$jED)Fj3tFHtn@r^3Hf$(_ZJnh(cd&-RzGR56xSX}qL zW~cZ#H?(Ga7G07;aH~%g64ty&s82g=5b7c{V%U>4Hh`zDp>-4NS%WhEVjnzm^}HxH<9t;a68HieMY5^_SNm?|k&NsbP_ zB}KM`G)M{+veWiur(j^xWi{w)>N#@Ox@?~&A+1=-tO-j#6lF<=xXv1!NFbHkPWdoEKD4OMN)&1|k**gr{uv;&D|4pq8vaMSW zyiZP`lShvMFDMr-3!&LZWI6>IcyER1gv^v8fUFn$p2D6@s+dka&_jFP<5y=`k7gEl z8hPD}oZRf(L-RUJTpqND?WMF1A2vJCj1mSn&(3@;t|TQctSDSd@*dXw2hZApedJ zD%KBdBYEaTQtjp#?kvL1MbK}>`Yr^A$Djd933)$^uY}P!EJz32;WIJc74U3*Y@|_38nCy zW4E^dUhy~dr>8sCpLExs>(5#AP+xya=l1pK>~s2b79!cN?pM8B{0;w)`gW1iw^6yX zE6$6lb2&S8=4l20Plo{BCH#Jp!6?r@XHtmf%))!!ka)A07~?AzC-GZlW%XewR%B1A@FnorhW{a;wny4_h5gM=}1q#&bd{9J7<@AK;{Heeavl zX+Nv>U`Bso^f-dTz9Oo|$AJ$X0&-4D#XGP-j^o$1?07*^3I#-8PRz^s3qwyYfgD2P zvv~h@pz}%zyG!Q8)!*ksdWOX?)ObAt5|i_kQ9?7WohtL8A%;K{%7|eRMl?3j<9LIi z*!dNB!_J>57(?Wee;H9&QwIv3(ANfHI0F5>)LkqaXT8$pOlm_E};tIhX zO%b0}ICL|4<0$0)04J@-3PN`{D5U*M#TKNsitA5>Lt2#j{Mha7zxdznv;W8Y;MV{1 zeb6^`MUDhM-F5QHq%Hd%e{|ZA+Ox9<%G+I+@c&0yecO~Dv)16=w%X4hY8<#F{OH2l zKCC^m`&~Yd532qAz_!}Y&!$h@5`KJb`Ez$nn z9e=vh5UGkd6ns`~Ol5P&Zx^~h#_f652co&-I0NGzx5b}|ijZkNk z>o1`UWznDl%T-`bGZccTuM^|L0)i!Nmn)JXUJUVZO5rt0$M?F}b3^P|9ecWC&zED* z;qufyPI>Z_g5)VAhdiYq${WQ)o}*(=GxiL`o(!Uj&y78^W6zQDRK5tTDef)ptaTZ0 z$ifjy#xH#4YEi#`K~&$L<3cy0Uh&kR`a7-1)5K5BfbHZUkyx9ja|qHRG3!h9AZGGBa0I<^shbD{?yYjcd1sTS=6k0%(;lbV|;C@%-YsAxmFSKl#z+;=@ zT*ntGUnbBR8shm|QA!WMmr~x=O2 z0gR@_9^*yF=dpqAQXz(A+W~Q1XhQb5&~vJCpKYdK1x+T&O8PE|k*Z?fXQ=7cR9al^ zdTaQ*prp!F8-UqFU%;~{S zNdX=6pwEp6?4BI}2hH{10wJCrywlyt|9jmj8r04`^YPazhosbS0xiH+|EgU^O~e&kd0Ha666xxBPGz$^L7D=2uaVCm;&hR&A$8FW`Y@c z7a=QPAbpT<`DUv1w4y1ZFZ^I;gWT&)!Y#i0Pt3%e@c^wRDGa;}*bc2@X0=?Sc7O9s zt%3Qo0ntSlG79c?RNw1nR*M>feAZahu~}=dqBE%{$QPN^g zCWglGsFgFTm#NRKh!nO8niFBcd)hXteE0t5`2^zHF@s#9&j6UCWo`jrtph9exA%u< z&TJM?RpDZ_887^~nbp!r1tTS-$D_6 z#iSFUBeZV5#5FquMrjmYCh1xo@Ep*AzSkZ)08lE41C(VvXbV&O3ucM}ip`q&&BUly zL%0o(fsBg2hJB!w$7WhN#oY)%nMkK- zrFMe&j+xC;u8&=WPRb-kGN{SeHM7@&c&oO93FDGUB}Hb)$nM|__x>F-X+R^ONQiXj zySxL`365Y%4N!HlR`fuHrAwWsdHHbWR;g2!ilkY3T!kNqznqM}oKY|LZ=D%)en8pq z?SiYp(==+n;r(cCs?TcAIpy6lV%2g(!89C>d-u)#5vtaP z_pP~iVgP7$1Upj9Ro@Mi-zO$)Gs4mHEEiThfhXs5=Nt~7 zP3PY}os;*pZtK19;ncC8!N)GghWQ@M6)M=9p~6DAdSx0n9W7n*qIMrjlG zme0VFIbi>myR(w=usKKgTXZOoTUchf&#aRqdFNbj#eH2^d7}tfDSJttwFeE}gu?*Q z=Lon_0CWuLM_Q&m@;J_k@E|tFuYKHp1^kb`X{63SjA+9c*HvqXwhiq#+Sm(lgmfxx zM=AHAKluu!D_#7SLrpy_iIyI+1X6L!wrLSjj`$g+hF(YfTuBrPmAIYgD#WiO;m{&y z@~mB0?@hvhFL>6kS9l0c7~Z(tn7%ZE;s$dJ@$Eq|zMaQmS-3ZFSxe%ANtYfWU zG@m}iv_85FH=}LbNBVEqUYQg;^sPKxIn@0f>Lg}SUBFH$%ePaiF|Qwsw_TCPA>_BZ zq~8o?Kv%Larz@u`+?&q7Hl{$eFAbLt;YjMYV^bhytPc-FT}EXt77z`kVGK7W71-t^ zzxPP#?@*_|lO zr5OmJIJ@K&rwhMBTsGd+#rIpeWtc$Y?W$Vr^63-EbMvz5+{y*+UgsK>VB6m@WF9H4 z(Xhv#ZD|WuC&SFy>1C#!f-JULqBxeQOPFBAE7auMNWHRn+oYS}Dh|Rxo3y00z}n6c zCW5h9?pGZCk!v?@7E7RbvCPj`=y)8xw)wSP?dLey>R+abRrZHU|L5tOJo+YGO}2U_ zF#a9&HE#=@&jItYr=&lkY2nh=(3q40YnSk=8<2rj*hIwUwHo`DHo1|!x}|HZzA61e ztzo^I)(v=qU9YBfgB}QvtxUO4TG=SI_|adg;66=dfsO-^dU}_>a}2bGx7$5K(ph|U6uE+RBxC{+J*45WH6dXGe| zV7*FVxA*0rhA0-lzVWqshK0KLQ#r`;g%%6a3jL;4eK-WLNKhJO*{;ju2u>EQ{(KGV z7Wu`hUeckb`c1sH)l{x@2l-^!t#Y@p0+>zxZE%A+q0y9Q<;$vrZK@N2et^lf5 zgl8Y_k~E$vU|Fw;t2J;Os{3tSnulvL)0;a2g_8Ll9SVv4Fg#T{XgPrhf z3g@1^P=U+`ftGI}o)uk}|i2+dzp&c*NNlG?_JVtRy7>!J*2mI%xjHlM5)4l9x zlqn2lBN%Lo^wV_lA5o3CzbhrU4?K`;|0630Pb-K4vM~DN{J4n}tHsgC3)~8(yegPl zlRRHBkN}AwXC2~WzVQdSOpTXJ!v^TaAsjxV8w(H<*9rN7<2d|p>1za~3L*QP))*-2 zq9)F#kUEg#WiMQ|ZePJrf@ohL%~0`J_X>@C+4c>@h|j6P`i$u31QBMI$w7HaqY0TS zyrQYjyq|N-`|Zpzf^sta2-bMIOhvG+_Tl>k8d4^VR)=obboHT7t*fO=Yc;q#Yx#BO(*t+9SKNg_L8E1S$H*}KRR5x1Np)Ye7JYRsTia2FpRiko%m@%WgSp%HF; zeycH&5yAh_Skkp6hG8gW4;?FG5oy^cq6mG>N;OpM8_5#fp|2^RBR8cC(AVUpz|YGd zp{uB6tdl*(2%kyC1P>oPZR=!bQSX5^$=SuGm|-R_Q-g@}dQcjkRQ#Ilb7@UoGF0^U zi0rQ%uebmD@uKe>rv%QP*VfX-@>r!s*w6~uHERVF$il+6**cyZP??^sSBQIWLR(2V zQTkRC(dnk5tu&KH4+XGI>F4Qd#=@7}n$8#ofH_0$q2aDnHE;U2(fF`3>x;HC0@6R? zWHx!FYB=Jxiz;@D_x?#*o;~Fv2rF#USdOs{$mE`f((7Xr7XIiNXTokXv~6mZa{fOs zFZmgnx)8DSa}zsKMKfwAO(+D*td&`bo6^j|^h9Id)KzpDc=iJ?(xN*NKTl{xZ6wwi zf%hsihsb*)8@-7v3VNu{>j-l6r^FtSEHC4Kk){7{91wyGUJ&H;O0+YkXTS>ZRXzY! z%=M4nLwdP5hL(F4ncOSbt8b(`(Pv3^RHAXTiK}3S| zhu}Bf8A@_Rx3!eVe(Nq6AJuuD4c zKJYoq-DgiqMv0c?ZHBwEL}V>{C9g3}mB-}wR zfpQH<H<3MQ$S5tR@dQCOWYH};pvT~4OBE;syyF`WjlNX(eMZGZ-D8!XcI5+K3 zM%GB&ppApmbl0W;ZI^sgi!iEj(`tWP0wdEYZ_Zd)Au*yR1abQ1TE{1uUTi3LE%dReYfw1UL{sF5 zc$$~kT5)iE09h@CUjGE7$JzF7DgJs18w1N^=ueXBLVSk8ZHoGoLVaRGp*~%jsHOTw zo6~T2(RlGZ#B{yAp9C!s2~vL%NWv~TISUN+ak2bRMu@}Mq;;Y~JVe(CaW*n=ks=z) z8^*ZTrXgfbbbOE-kH&P0+}1~to%*~XcHLiyYO**Q@~(y`7hWZKS|m+8v>CS#W^s~C zBI+c9TC+UtXc#v{vEl6e--sm4PYnfyM>?OAnloIae zF3X$q8LOp7NN%Z6TZh;Hi1#-JVvr?CF2LGk<{Y~nCufOP!5G}Yv=SKbgc@m-$q+M- zx9vYg)wXZmk^iD83j*2Vo(y&L6aNkrN4Gom1z^89hTgpay+f4CT)&|QRf|TUgYjId z)vZUpfUkT{rDvFZOrK{#7hk8s>%nbN8Bo5=Q6kb%qtmauC2{A;bd7|M@CkKeh!vIC z!cPhxgQ~?t)PFUF)}%;(541M%Wmt_xQA^_8SAhy{-i7bQ&-#Z3YYpgyosxEf#~(N_ zV=o(Ka652lFVpsI?#Jo^{?|SRv3mgpV1iy;f^F%FTDx014Z<(;0=8Cd;EE*=8lMWz zhkbeOkLl=Q!}3TRD?SU9@6=}zI&H08cOBRwF-#l@6F^3!9)YJ{jALfq8Dt-ccGk{4 ziFW1*k(%3Ex{>GU>{e2|rKu~gxI=75N%2}=us3uIHjMnE-ClIeZX#mj%IMHd*ndTD zYKacT(JM{p;98f1nIl)F=17}5;_~-Z)t2;ZVUPleEmA8>G8IYQ$<;wR|X>g&%3xDKZ)M{v&vs zmaz2l;!4S4(j`>`r_(T5(ro^xPfYxeO-uF@aSHHgE4`r^u z?byfHx1RX->;LG|_2my?Lz%nT$e(^^@UfzLY*)Ok$qladV3^2$i}@=K5k?Xu2cxQp zYPTSJfuJtA$WNHi(HyFd=6)!wj^eyy)_ssdC_mUAZeP2SR63nV4KrUWg+#xYj zbm$7oXiW(+juzj%p+>S*B7vLCbB{+;Of>D55qbw@z+WF2A!WeN>#qb99q3f2?S9Gc z1m8wl72E?NnP|q_T-VC*mKv!MHyw6edoE%l_0q1DuRLkkwdkiwKU^&(Wkz{=ev-^<4K6fWzqFK z(95M}SHM&WUKwg9f3i%M>FXldtbUJM7U8p9QB?Ok-NGW7K`as`enXPPTq7eYb&m?A zz0UE$g1bQ=>P?wClqTXejYHW-KaRQ0Fg(Xg4Ojd&y4Xfu&`7&$ORad+`cMtNHc^`K zodK(na=b64fqbOr!5z`X0MJ|Fp#69zqFbB`7d<~yf`}jU`j$jK{%HY50NM9gqCmob z)H5F4$1Dk8?qXysa|S_tmj$jKNT;|xfNRK?gnNy>P_Cx96vL`^wNoF!fSUtQXxrSS zbjnQ1MDYpwvVDpsaf->#C8Zqjg@KXvNKom>6<(mk%Y%Y) zpFqb7EEm(#0HILDMHq$;1)uvaW+w<^iPjXq*CAPIHur71M6pL#JAEIIVfl#xN#%=6&+Ep$I>M08=hEFM?qKXHyp! z(#Is;l>B%EAd5>A9Z&>-1puqHgR7Q&Czu4=&WT>pU@tJ#Zy;Pm%*3H8gX$WEz3cAS zfbE%UfZow=!vmPa=bZq0CW&DOw#F2tKv?<8 z)F&5n^qi!+ubCx|!6z6Hw1|gMP~85<$a8TH!;+tI>TlH%&D^YjT}uJuSm=Gb_IcKx zg(f8FvRuQfaq7j?#+!3hlJo2t3$>8%uhcJWNzPLH5ciexDmcBIbMG+>6i%TJ*;oc z-l%UgcZKfmnu9iLg*Pm@I!zW1wzy}#Sabx47`NGYQ%_EmSNLrrESXmTqmc&WBY_G0 zm6Xlnf)+r%_(|2Cd~-#y}W38gUtMEWnRIZnsiRCqp$KN1+@z7TqJgRc1b-b z3Qy_Y7<1klZZAVg(LF)9n&f@17qjy@YklNemuBCtSsjEwR2&3WWc01x=x4mqXXr{t z6r-yG(#G84_TX*DaG@REoUi9EH%APXsfQS{%gr+N*s-%(#8`2@xjw%5Q|$Djw^*>} z{>;C2wtv~>FCW*>7KZ@{wN_GkLBvQw-{6Ej@kE%o^cpc7`&nd{i?U1VN85JYXU$0o z7^J*y)l-K;BWjw4C66*JAoz^wK$Y)iZ}d9!Lp6?Jid@3&OBnCEEOU|3irC`CuKKt> z*Q~kO@n+L%FSCOL-JCX<+CRfsZdu?P{#0?B>^Hg-Ee~(b9UnJ6O!A3OHb3|dF*oxc zGesM8m%qsc`q^Zm&B+OxbQTz}@t=!u$>1|1B5CG&0sTV#EH1Uqhrp_KT?eNMK=O9s zw2`{VMY4eot~U;(r8AJbBFgEp2HP>N)f&W4C0@sOKAzbLl0~GS7;^qyNnZNNqBeNx zp1g4JTD8;$XM;xopNWR8j@`5gj%Vl=xLq;RJ7Vqu{44YqiQaTFI<#35J+TaR8~F@! zuXKI@zCf?s2HFcxlAV|gdro(K=D~0a#aqQygqvZERaA`eqUvvoq0j|S;w@^4$IBTd6nd zYIzPKj$6Tq(ol>2!~aEb8k*VR{8p?q++AbwR@HdNB%e|;-Vi8p4&}i!6iE6@Senw` zz{yor!FQ;5Oi!`z%#Gx1_-V}3u}0sgpZ93e zXhRxHbXguzSelUJ9o7#qC+$bM{JJCSkhDYub$S=KbWbSn?y*jv_4Uzz23yiUp{WA$||J-Ej4IoppRa z(g*$G_-mk@Eh=(QKUf8}w&OvT%IfNLE|ZgPmdV6Mu9ZgilhKaKSk-a!58Sdxg+d-Kl{?{-X0Ed zT)H*YC|dhxF4^QK?IvH!F-`90Fk$_)IPPoc?SrpceD znk@Jfn!Lg^IU&{LXFi1{^GuVc*|}!m!#{;4uQW~mL#oNo{UJ?;y{fB(JHnw4s_&wQ zvFi)VDvq(gFlT??0o%0v87Gi9x>O6 z7hvT|-IGzAZY;URC>br_x>P5W9k9IKP};(gA(w zb*S)6NFC{Vh3CRPc&uIZ&=*kYI*!&noR(oD_`(r==74_osK^u*nf8v}H|u8&1QJ?a z33o69l3aeA&-IWX3fi-g65SB+^7m=3d$WEp2d{)E!Y5GfkiG&(ieDcJzON(*=O2DBnKbMgsq34dW-k zN_2}Gkrj(l;KSCc`L#-8mXc|jxo%!HM!#Yw75QH!-8Iv62MKcbq_zzk$I2T9P{K@; zAZ~5?I$FZX6hRyGM5qU99O0+?7z1fnMwPhC>8tsfeORMEu6MG@5fjv|TsbqM9IdS4 zhu{^oBF?INuUav=2YH&VPtHDMS`jBkHuc2U!K_T*uNSzN)^lpZEWiO3I>>9gR)A8p zu~KauG;N4wBioiYDZ>}N=a*8*51L@X#FGIr_A@N?Gg{?#)<6u}Gw<`CC6t3L!+w3p zGi+If_jtP}P|0=O%GucBNQK)>^z6{%x5cId>{&bt=V~X;g+CmhW2y(5Mtxk!`|hIQHYLb}NnU=L(Ld zo5tE#2X4e0eSTR8?6n7ZPsDg#>Tu39+IH+u3uyWgvo@D`kDxlf)2`h~H^D3uP$R~d z|2Z&*yUO5$&3T9`6WvUIfnniUKbH%IU<=mxavE$#!VAMn4TE9vj@`{!V$4N1(_+Nk9I+>M zBaoT@_inq|PqjVwANxksp%HPXYlgM66vz3cAx`z1xui=YCIhdNO0v-ZM?0tj$JV9H ztFhE5t-zK3(P=t0kBoYMw!Q$Frk8gIp~}C2@CzdV)CtMUbFs->efAwmXO@hIDTHV7fc$J5k_k&*d!!matE+orb(C|Bs_dqWv?;_;F0PW0e{M{d;@-3KW@D4;) zb0Uz#=9xfWHShTDv&+G0vl2Lyu&XYB`it;TeV5M8#$*o1dO>tuDFsmCyw48m(2tO1 zII_OsQSV_y_`7u6&o8lmL?rdq{8>HpY^nEsGCK59CJFhEur63#QhU~}H4*{u2Sf~8 zjW438IoUtY=k#T0$csDzDRZ-ai>`x60R*IqPtrU3k6Xg6%0LbPvPBOVk8}7Bfe4(Y z($|x;W@c;C@qmB2Hza4~2ddqUv;P2NXk=v5juoF#-BvSdww%2D%@9tXbxcXqn4WTB z#;y)EF1l&bw+m5rQU16v^LFib0+595O0aPGTHF}Uk()NcB#|zBUP)1tu1g7KuAWR` zry1RHb_n9By1?5s9h7GX8&4zsN#l<&uHwce;#xUJH1->KJqZ+32OR~=#>bGI@_ z%#UykU!)mxj>c?)e$%eKUEP3uI5vHE>@GvH-`15>rRl=^<%4atTL(NpXvd0R3-RxZb%+Y{98RojN)J2O#f zc%(5>sH*+E37Pn-)WjQGh$MB8bh@9Fo{ZXgIaC|YRb!P zy`Le`Rk>!2Tspng&rqZ?dLgdI_jn2Zn*IJzy@GZTCGi0CnJy}jS@}6#dOxv(5%^y% z2g+ONax3fpIDci=YQ<_P%VLrP*TY?)L|AYuF581^ z!a)pyF90P9;=;A$FHiG~mf#LqSbDz-2{xK~hK{WtJzV6UqwR6-WU%Vh8CUw?Boa$! zzg_o^t{`ewPD|sA{PV2g7Q`w@5in0TRU?YeIEJ39Hc>tRWiHZgwIbNbFBw$~h|!Vr zbfnp_q)PBDy2xb|*-kJ{a?@Dvts$moy+cdt#|Ue~cAV0ATd`JC-7|f)cE!-I!a`v9 zrTSN8n4GFTiD}%zfZZ_+BhLCr7`%Rg0QVmRO~svx_xY=@ko7H01Q-|Z--wR@_-pR|}Qbh!r$=5fV z`xB5uFN}=v6;VOn55OVq9USxSx9pd;A{Nxm$QHvT86@~J%G$I9V+S&7G#B`7Djb77 z^9u9Df*B!1l&C~MY6|Bz*|m~a#=NnxVokAN6Sk`GU-L-Qhj@I4M|;UtFgr$~FJXJt zuHU?n^#Z7BCdM^}+wxI-qiB+70Muv(7;bFQW60cwwn`z+C?K*mHhhksQ&4nDkJ=K;= z-<~>{3)XBR&A9D-ob|Z65TB1t(DBW4|CM;RX2xpXg^;6us?s>GU4c|!*07F$)^NjTOiR~C(*-$j7QRm>R68D z>PR<@VMAbR4tCN|7aXKcpwre{Eb+9H8sM#%NziKrF8O=I_)I8Ld5aSVM;Md7PI%LSfgw$X+$m8TOvC0Lwdw-cnZafwNRw zg{@z7bC@7uLGAYU*7sJ7GgvO>G z@~&SV_g?+Hs@9Lmk8rcSU~pPROrMe!KTyS+O~nHrQ*k4Wr1~7_tN01N_~W#SgZe7| zyI-t+B>A=S!Bo1W;BmC zjP+iz%yf*(SIM{#QVhKcG+21;D3#Q&oI`v%ZtOGlmx@=LZ^QbQRw_*vY2=guCWdgs zB5oVl&;I2;eRHh$YK}gLwP5{ox!~O<1dglb{$9}8|8-Cw$i}XFlhbzEr;)M>&#g-g zF)h(Q1 zPZPAG)SFY(%f{|{ld)K3LAF4-a2=X>!e~C40@a)z3^KG|S_rmDVLq^)5T4OAiUPu% zB%i)UBWgqQWOx)f`{6VnPn`x&yFN1#yZq?RoWcPBGnz5bQ>^A(0vQ5E%+hH6pY~sH; z2(BeZC$4S$=M-Xgtin!S;Os4brcb@A-TJn6YuX88?$1y>F!-J$h8eLrXPmHW%Rx`L zP;i2$A|NPCtHDpLEH&V2RAkzOoDS%KaphmViSi_K|M|b>0k;;yP{KFn;P6-g&x+pY zZ|Lx_ks))P%?Y4Dx3&^LPU9RUk-#*Kjst|@WV<*eZ3q8IU}pw(TBYA5ky)CCRE*;Z zDMC@(L3BQv0tfnN>Rt8eZ&B4uqAA^R`va$9ik}q`_xV|zh{Mp%2I6Dr>KG)YF@mVZ z+={d-1~m?z1K8zDch7|6h77x{Vt?z$+^!h%-e_v$fth;65qFiUevY`2l*o=4Jf{c` zM<#f`_^LLGW=QpR+Y8R~>emZK+|_CIa^#fU|K`a{)LZ#+^#U2{(a%@<>V2f2gEIBA z`o8`?)~p_!>gLCO$_bsQ{v)5gyPhc-b!)`1O9o@W=o^dy#uLYco~ZW}PCnk9gH-B7 z!UH*_-IIU_Mtz;;2n)GC9Mo!HmH*3b$9wDc7Z{e?T|c^y1KS2p>~Gty zyLKSb1Fn4z>ub^_PsXQ2N4b#jDf90&N-8xy->^}E45=q-mg6p_+Jev1^t43XasrzUQtG-Z$vSoVTF zKxYJ2Ppsf-p7GI%%f?do{O|OMusyNmw^Gh0`d~#Ojo%FIa@_sUq=K&^qU;Rq#lSw;ps$g!fc9hnv%tmeuZ|~Gk!S4q8NDCE~lb+k&7OG9~ zimq|IC*W4`e0~VYV>W77;ZP&dpXdi)r56Id&xlo^V~I%psGZ{@45nmx8)%k(?2&VJ6ZdsA){0e(vIh}XByDZ0Z zIPTEF79z~?kIrG=Rggc9oWF4KB~Pu0(s!qCDzI{fqtYKN@}O zYhc#V?+Vlq#k9?a|G26??_SfZ@V%Bas!Ky#<^qAR0ai0^@WVLm`RRiz%>F^i4M8;F zhyL~aO<8}`3ml@XKR9aPl?SH<4@1qx0hG#f!w$sfQ#tBPQWRE>H5&0K+*;=q{6sVAu8VmO42cFe#W>V((wQSCef~Ww;?XGHLQ35W zG4FBWY2kLI)Vnh$x~5s+AGKh-(B%>}+|nLc6qA?qCEvZk!EZGBnuymFnb+llc-cI$ zwNnX6u#LZEct&0l0X_Zl9Hqt-;bkXmb*of9Y2C@^t9kB9K1&*cB*m1u3F${~^7$5? zd&Uw7BA2K-48?2={Dn>0iKkVwF?QB}=YqX#GCc9Jd6@Ha3-Zfz$;#KHeeBw_k9{%i zV_!=9*sY)BV?BHfc6iymK?6TlkoK|b(mqy{_OU-o``GAD@-f0KPlg*_HgCwlk9{WX zW1mg?*dM2T>`&4@cH1ZT*wuVXhMDt*4*V8UfW9TWKJ8m0)4ml<`_}FM{Lq^jsqCHgVesf3VL*@e{@Pq zXf4{ZCE(;3VI{pbbb`GD}C#85W4C&0aDuo4;}X%5?uIcZK#V_4KK% zVvp~PR+O(xVl3Q25tfAWg-h3U@IqlY&SCCo`+PIb7JJfqqrtr-FPDYbXq^Z(yQ{r< zmOb$#T$=FPEhw2=n?gI?7JK4mCxi<5q;&)}P1Q1$9H{%ke_7gny->RrU}6gd!BS?FEy0 zir`Vm-QzU12TGd`2ACjYFBFkiiF^(w9I3czNJ)?IovO3(+w|7v-LVTStOa3qqH%7MTi2twfZXqi{J=lYc&$ntu>8<)e!xw9%ecd zU0h#)O5rAZp?vfw{>m`4FVOQW<}`47;z2kBpZ*C{kobj*08^j?haG^7pdFYMg!aMg zc6-53Sw5gLf+q6;@ayqBO^PCQ4XdS6NX4ig? z2Ucd1_uO#n+qjCu`X#3<)b;c=#6K>z*5FSs7V5Hp_-%?&lQZ<|dXfva4GxFzQV!o` z*5)*p#L#aze`z9Iw0e$x^|+3*(Ehpa;2=?}w+5H?C1+NnpYY$921OHom>!-R{LDyp z*Y!BNtmjxf6IYyCy=L9r>2PEP4AuRH^V)CRZ%5B8guCRHYS7kP~#R+@i>nsrnb5b8B0tLw+qxYpk10gYT5>6K}$+2WWy9{;=?l5k5))_9}s$3jbACD zDJJv=UoU09y)Xv8al8q=#b^39L$_VF+8}W4i-mtBlX1CulSIG6e2Al#aN_1f1(lQX z8t2}nR|)WmALU(VpSmgObP>ve@b|@c#qh$@uDUyj*N{{AsacG7x3!EOGuJU=VUC;P zi0|=IBCp)H*tIf|aGJV?PVh!yS+l<8fc0XR+fYZPu#!lW`Ba zluTp`N5bw0;UKpJbBanLUc|DaYtQbH5W~XSW^2sa8sCN$^*As56;_Eav2vrMi(^)Y z-v8FLgx%xu!`ME z2e={)P`S1MgN@X^;crVA>e*e+*%m4443Aa3&ujvRT@9wU+x&k>Q}wwM`UVB85Jj-$B7!un)?UP*l}5CxoQ#n)CJKh#8@~ zChx8RHBC&jdi;UqM$SlsfkmiIl7_>wj} z1g|?#9gQxvlK&97#&C~Ow+?buylwzi;d~jb=%{JTjk$rZgG^59Oh`moLJZB_!EuoB zQVj;L`lM6YsP+aNM~%Ft*>ZJ?o9Ql zXayGDEl~h98cd|E(DX(2l6=Ax;50TW7K~OuC|(EGG#vHX2MIQ^>ATLhI1UZm9f`l$ zAbE7D+ZA@#@D;wm2kLsOzZR|7?6qN{B+j>kGaD3(O#3I*K5f$=t#4N2#Jt^{ z_&27~j9;2`Tm=y@_@smLr5$|3T|f111~O77`Cl;qp3_^?34N5=T2mr`@DzFR@k6-a zB@~Qaw??fKsqZ5%F5wK`2!)il@fi>~U5HIXZXCTIk0{`Ce(UYj2~2?)Gr-aM=3` zwytEwH;^Q5!=jt8TE|nk@% z--f>RFswfB>TR112dbJ@Ey;= z_hDK>iRa+QB`x7=o-=4b!WTSe@PLFXxri~hFoCQ1yaA?>thRt@y`sEri#y+i3MR&_ z6DHLh9Eubl;=W@mAb`em;vS%wzwIlN@X!oA01hYcsO&?7;6Qjc1qc6{2@d{4*B@WX z8J7P~wbt%7C)kQN)?Tyx!`1C^|7nX4!(mom!u&bUviz}%UC8PRzYqZ#H&;K-`VUN* z3IGgD83zOmOeqEg2BzEy3=B;9C=fgtb2oig5Ww7lvNn|=>|s_{oo{iP~_R3-BDaF`}lx+oJ-;ZRlPJm;PPml0f^I);L(Wg;jo|t zBM7636s04CY+7O8|A!z193>}V;!p}E+JK3oFGj4k(CQ>iq^I~Wk)GniM0$!36X_{F zOr)pu!^AKULqwOA3n8YZ6&o(59{r3sJPFR2C15r5W4-7HfV5G76nbaQm&SPoH!L0f zr(&1qU*#3t=7hHW=ANmtqm@6fMyDyB4>`NVJ^3I==er;xUv`{Wxl#nD1hH_dy>K32 z*ZwaCK8n|w){>uS|7{UR`T-e+!FQdoO=wFg;=-RR(l8 z%Nwn`%O}S|8Kig=xK*6|Z4uZ&cwfxu9Sh|)>&$d_wBsM4=5N%M_=wQC>aaL}6pt|T zj#``GD6ynLZu0BN$etU^kPp?WF{+}yU}t;FJTad!RzOS%o4;kQ;}W|PB3mp3NcxDp9_clR2jn=VbS z=n?;q$-#)>Uy*RwFUdX+{sLxswArWq@CiNa7s9+;LM_IveOETT3LSCFqcDl1e1%i#pO)RZo(II(BjFU_R@ zj6+^EMYth;Oxy{@%lW#Hn79*kSyU(4Mn6k{g_ivLoyXs6&AT~sg500r95BmX9vE*m zLm@)Dp1;ms9=;>HrYYNM4()z^h~5H(#NYrNvp$G~R@-&&1OEVQuG{7AFFv!ayXkn2 zgg^WzY^M~u%hw@9*pa1fNc_YM>O`ygj1qs>%lld%erNs=KZ!l-;s(B?Lvz(`$d=oL z>)%=hOkpl$J&+v!GdD)PSeeFeQ3)Py2X~+AYTiAM_N0cy9V=cXiOglKn;x8kYd{8Z zwSbV9?9htpL3#)n9S}q|9d>OKT`RMWn|{75xtqB5_P?dM_uf!m-3_R7k2I~7>-#F*&V~mOCSvk}1{^gug>^3KEG!ioCV=?r1x4VV=Fah21#?-9aFE>zx zk{kGA*1kD$fyXreULz;Rd!Xy|WF!EXq~FPWx!ocEolEEY{<+9sc2T~6`?Z6!zB83T z7=nf=?v|-7op;y7ztSfyh`M8njLZd{m@EIk12++$vd~%jE6od6UAc&#g&z@uNy1?N znvl6+i4-JVuOEOBEB;4$U=_*?cek9~#b>?e z2FVfW;CLPx&TkYnB)X;%*x|x#6=NO2l6?lDPz?7rg+h~M6?@hEElv;z$$=v7Z;7DM zB)3xq`aGxy)kwCKq}W`RHK*oJPD=2rLoD`q#65~4@L;Fr&>h>}<5*l6d`J9`BpgOQ zP>OWb9aV(ojj-;J{uowgecv%aI_6dx+oT$GE0( zgpTLIcVgBaK3MOdim+}@1X5^id3KYdv)_kulkC(SMh9(+b9U?5T?pu+i{T^i(L{61 z&Qj9_qvEigw%5>Z`#(=#6mA%W&q)TVi;8?RQ}Wwmb(dOQ%uSd}is5$MU`^yj2YU&A zn%-k?mUVU)h#iqTx=T2fiQyg7Ivzht%g%4`bS8KO8T2N; zts&rtHQ5Xoyf}k%e)j@JoVOq}Su{lx@&7~3mhTmfNGSA#*(&nqSA_L1|H{1a$SNk| z9#+%qu8#leFyFb~dBE@L8&omARNUtH|G&?lI(I-b#asIuN^9mXXa-5kEXsmXz)xI@ zSC2Cn;?7hQGn^?g?@`N05Q|%V{^v-{eGh&jK08;8z?v9h(|vQ}Dcp$6L?g>e{S|&e z$w&f+3vg#H68&{|`*O*s_kiWD1!KH;RC_FpYxBiizN`{T$;VL4dFLi0rW_A6a-as6 zXvgK*wLhY?V0GC8JdF3ghX)^beQ*=PN)%`2&$viZxpMxLC^CUtxSI*P?;(;jQ%c_r zS2w}?UQthcG_z)!*9C>ZOI zPiGd>sX1!-b8k?6{3izl*JdpfGpX43eZlwLIxjQ=+7<6|T=?*A01>&~zA{Kh&C%Sn zNk;x>FZom497Su|t@yh+2H@G{r9eF499QQ0&>%Ts3f__5xtodbn3S_k;b=XTgY?}T z7Z!{Jm=O6J;o7Y{yFG9KN!i+#rVrrj5Ut^y3lDI8{rv;a(;dn4G+#=cr{C+BueqqI zf6Q?jS1G!6b& z-|@x+p=k*v-gsndX$fER#v@xxOZb8}9@$!2!j+hcz-^jiTJi|}9J{f!;*@`cJ~;q3 zULXtj_^AAqbI>|-dfuOYdfuti^S3T>dVbLDmb{LWGjdwzp~MvlagaJU&wsi7Ul*x0 zb7H2+_6;eS4yK%ma==>hyaUO4J+v zzV#(WL4Hgl?8WyQEqVEDBuQv^q;Xv~-W&Z-8mk-@--3kbcY49TSYaE$$fF(m$1AqI zhb8g_zto(f!j>Lt7s>Bi?ay(9>NFkVzWJzK>+!ON6R8S1#9>o8%S!;@b_Q5As@Wm3o0%LndJT3QHRTD}>2! zNBI^x#cEt_@;1VMTLnRJUO1m^*PbPQ>I+>w$*IhL>7*^t-71!gGf{i^5%DuZ_` zE^u}gTR8&H?JucagtTaWJy#SZte6?P5aJ|n%uuFdvW$@3vob=zPaT>jdy83mnuk1K zO3Xd15I0CjW+0FN)64&9E*D$1QwXdRlWhLIG?+?zOs${2e6Z9|V%C|;#($%SHSrgk zI&)nIos^Ap4;X|Qb0KK+0aI)LZ?bUU=b*qSZNR9t&n#c>7CwrF*s8fdq<@|b9Zyesy zM@O-azgtnzI{*sAUPSZ|1cl6?>Y#sy?b$TlJ|Gz&2k+?|f?C_~8o+b=N*|F;=Zq{P z5#z=RBjPCM-R8N!l|%&xc`TupA{Tjh%squLg?;8A)`+_M%>>5W9y5W_niT=3cRPAC z^V^mQRFQ}>38NhsDdx-%(BSScDnrE#VCL$GyOOtFU_24<3hKnIA@0bQ*8l35B20f5 zy2e-42_*I3lMDpQY8faN;%4(F0X{%VW70YR2?Td9R-TUYX8dyTU}PrTWmNqs`6{Wz9acGlSKVGnVlrJ7@PnbL!Bd2BjS-b(g?zk} zVc=~1S0K#A7h2MPnLK~doJz=IhiG>8gxb33uT7G8pZPG6LlhIrJrutggL}M}pnBGA~>ki)b%M83- zuJerLy5C=!wHsN|4jyC?U3HRDWnd(9L6c;bfu)f6sedAQ@#oQ>m&xR5i8fH-lFOhz$qAjmhCug6aCP7 z`ol6SOKS{-&r^w}Q^WFCeVWPCRM`E?@HT}QZQmps^S8_SWOP<~?-|JDEQ7$t_!Q7G zXt8{-(K4tRIR|;X#lHG(I7ead34{D~0HCVsU(o*fl$N4i`Var9t5N@&`68?JX)j3q z8~()fLDYZHns7|$3fOi3iVR$P;})$+qyOnoWqZ_1^Zq|~P1?*C|0C9BuT(Y{Ap$W7x~H(>V?Qxp*DKvj{qLY`Tjg z8El|0yc1Vu`YF1(c+ci`wFB?=x$vKH!zkEwVFWBbe*nly zHV&RH-wKd`D2&&w8C=}UZ0!Q_YuTY4fmt}hrNIX<3Liigjkf{bA79&t+`s4}m2pDu zG;=vEd^?Gk_Cw3*&^Y0x%WWdLjb2SQp%wgpXyulebq*0y6MJFwb!B#lk1Zr?Z{92#gD z;M9L6g8V8R`p{lbPt~Y*PoP1*20w9i%yqL(^^ww~H9QHKs0Fc9->C97Ixg2dJdso>7-s7f+DX{kf@o z%VpNZ<>QCdk2c(cUf(C|Z%xxx?1s?B>QN2%+>VA00d`Qy_4ki;(i|Al4Gik9Hu!e{ zqF!(>_cP`I@N$5VLJhY>y~zPz@6nr>izo`8^|*lVWkj5;CvC!3VVxc2f_8QN6UE9i1BC|lx%-ChGjd+vkHmd6Xg+X(Gkm}XUPJ|WE zhO4=$+zhfl-Yc~Tt~uL=fY+Mg>QKKhu6KM@E9{Bw3vfY4@Pl-OgUttP_|KU}{^DTb z?Z?67vZLiX(yskuIuNZ`??5ql&_r8S2ZnfP`y=IOtm7ftSZ{fETA_{h0v%Ch1Mu&b z&JHDPZ~Z4NouksPe$vtbAY=9?>ct>RDqcY5{-WAlZ=t%4N&Z&jAT(<2v6p099qC~u z>$44fB}qaTPC!zG)UIvrG&iwZ6Sqr%vg*lCkYdjUS}0`+>XRgC~V+W_l?e* zpsp-usZOp>WW|5xNA?+x2($$0fbv-$@;SpQ|JjT4{rcDV`S)L(@7E_nt?Gv^&iCuX zab`U+G=6=?{H%D_QRq_5%8UDlKuGm>XUxxvzj<-K|NVTw{?9VzGyaduM-HX&-G6bu zKYnCo>R%{hepdYYi}U^d>Gz2%;$7_*jXy1aSbTTJ{K4@zGv*J9|14vEApUH|{2}rC zGv?>ULmBgP;@4-)&yIH;$uxc|zB^<7(D<7f^MU`1^ZoUc=;(yJeFlJIZ($NFc?XZz^^7^^a#7KkJ_{ zpY_j}&-#B{J|bST{u%RG|BU&pf5v>)KVv@Y|Nh5}-}I05&zR5pXUu2)Gv>4Y8S`2H zjQOm8#(dU4V?OJTR=_3U-;AI2&zR5pXUu2)FV6SzD_0xB-_K^u2mfE3@8b_?5r98J z8T0ev*JsSP<6YeGUvm7W{j1`;Gv;3re=}qLu=vk1<`0fPn=yY-{Qivjfp{om{*d_f z8S``FU57G_KPSFBV}5r0&5Ze0{AU^SS^tdrtpCU53ktOU8S`2HjQOnp!H*fgX`l7a zn9urW%xC>G=Cl48^I89l`K*7&eAYi>KI@Mzz$M||jGy(-n9urW%xC>G=Cl48^I89o z=A${{ES1U|i$A76^9522f8C#-7cb11Z^zHS+c)@2)W0geH)H-4@wYPO4~xH=F@JFU zxs3UP;tyra55&i0%pVdj%$T1WKi`&V{5kQx8S}H_Z)ME4;;&}R9~yryV}4frp-bea z&QDyvn*HBjWZ?PAa+hd=Cl7Z=Cl7Z=Cl7Z=Cl7Z=Cl7Z=Cl7Z z=Cl9b$uxfUf5v?Ff5v?Ff5v?Ff5v?F|3~x9{ze*Y_J4oo!2N6T+5Z{y+5hOZC6V7H z>a+hd=Cl7Z=Cl7Z=Cl7Z=Cl7Z=Cl7Z=Cl7Z=Cl7%(EIrDv;Q;Zv;Q;Zv;Q;Zv;Q;Z zv;Qxhj}Qyw|E*MJzdTR!6=@cdpBKL|W4;~lZA}jTlJ&2O@6VWjMSOY2{9*CG&zL_r zK0jmrp!g#h^8@j3Wy~KEzcFKeZoGF-rt#;*_h-z{jxW!cZ^i#UWB$M% zm6JuwB%v#<>9p*+Q3#XJ1B=tZzNapUh)glnnTX7AZR z=(s)ULQPXnQ?Ep zLEII=4d{boIQ9LjWN&X&G+yeI)*otM#M5?yYbSVlC3s_f!(NEx0_o@E;1k{5v%44s zes6Z!3oDedRAAuzR=;Nakr2+?CpI~63QQuQwGlgpnN~D_8%sj5Y;bBCb5I1&A<_%4 zE3n=GP>3Go1Ioaq#@BZWPJs7GCs^w;q2=j?&hb)Zc>3qe(3auVqJD%u0lV zn{h%o%z&S9Dgx~F+R<*OeoWD#7+w%wL$A8bI$vgW*F0JD3t;6NABB|?#=KU+XFBje zX(G?;(j2GO3I*Ya7r2kf`jzJ5?^f7LS`%R!nZ8K-_%#KkUOa)_IWFwtE{FicVUk}D z2XSMOwodlKnM{+)g;nV7ND!67eJppxF5L%+*b66;uZ0`WU$x+`9E&O=&Q80wno|dB z+?oCT&-O3nz5Zo;EsMhb12)%UE!LO)@@MELU`YDgPSDJ!fq<8LE^w2ertLbs?3;?` zotwBcis?&FnIwGw(hWu7J|tc8wFK!ormsYTiHKKtf7pwCC5z10$9aWUgsl};yDS!8 zv$k0qyobJ!+jK5a|J^L|z;;ZKyKkKL&{wjs2iMSm<2NGK1}9m^v6R|@XD~;Jr^b5^ z-I(jp!ua}!24O@{_&>rl{f25rtlbeSq1UC@d|1128|GN+zL5O4OXot3`?MVGF zwd3Utjkw&c<$amv*D6=d@l5^QRPbADQYVaCrNw?1Y11!uh^BK*XCw7_pVI=h5%4k+ z+>q?t>wYn8D-xR4MX8P&6p(yj3Qh0zNrq3`$%I1@%Y6B0-$%mrc_ZobxBSi$VNGA` zNEX+(QcW_S$;YEKozl8XyRW7 zOdrI-2jFyr0Vj;9$3s4_?lqOd1|qFa^%|pJHL#d46!-_gq9x*m7gMP-V6C@KOsEe$ zX`NK1rD5FUWLe!jzHNb&j)Z|miX^0~yBI%qVTOX8snz5a{2UVwxiTg2UcFcFGq2!* zWWu=mf>*Qv+``6+&L^gxOWxlFyO$drYcOr78!wNB1oITzX>$0|N0PlCpkzTjqe-0* zWNWieE;r+j6(k8BG(o)=amP$Bf?PxD4F+xM&I#`Dai$zCfipq3C&90Yb=_(97*6PI z(*eiS#I4WUh6^xVu@Xj6#qXfc8_<)@^rQ=`56}et3Cp{SNrEe`!@pa!%XsY@Gu$*` z8h}DTgM2Li5f%ZpVk=x<(rZZkUeuow!#g!okRNu0VVL*{j5G|>nskOq-X{#hgcCi- zZFTV0jO#ZOersC<-%_tg-$5>a-IelC5j-!vun0XT=j>jH-a&2oMbKDiwH{i|P4EgU z!VpQ=Clfl%JqHr#W1q-<(0=7A1k2&j6vIF9=!7;nzY%F<-ZuDT)9^>J^(}hv+&}B^=zA zWTL__Reg-q0G;*{?8`gNT>ryB64__(BC-#?V@kx4+`#1DpoxQS?jxZvM^pZSFcj$W zp`t_l$JH;s7#}K<9mjCqkLqPh^5ryculv}OinQl@K?Z#pcS4ner;<#}H>rNK@9k^6 zo$h5}i`1<6d0!GL`7l$NvMM;Z_Qp zjDD*5{p+-6mkvm?{}xR1QKI_~0@Zq2pnHpa_Q?5-Ha1HzaRdI296Pqo-&4XCdY{C* zU?rIu_DbQK2z)YWyaLIDykBnnm11+Bof(+eiz0h1Wp6OAI2_hFdI}7q(i%)&?*nm+`tO z;0y-^_D+5D2GIERhBg$A1DhM%zZOOTu51>l{R;twVxbR_`p;4FJ5Df3f8iurto4xS zQdkQ7PFuUgS5W$dSMUQE2Gi{>YY&vubUSuMz`(Xbiw5v@9(6b32hop0=#7@oLN|4%xGOY+nVY&0{_{>}bV zxU65$yb2G>V)VBT82t;>W&D`h;3;-hz@LGRIp1~a-kF0-Co==MC?^ueV#dxuHTF4! zbRc_ZP{~rw$=rMnL0_5>Fsd|6z_zx@BJ#PM@|J38jVG`7<7baE?Dik~`ZX)_2adPT zq|0C5)Y=B@+Qqa`>h2h@wqpja?e)oZ{espJ8|J=sd?bAx_n;rTIBi)N$CR8Bvy!l8 zPQ&=XO}mgX__xG5u3j-6j|cTy(HdzAg@B7h)3As36iMm6g4dW3q4Cb6Zr-@Wt+Du>ZTAD)CUeCyyP>{Nf3V+~bwetK>+wC3rdQE$RX^*u~q^M5m()lzT& za z`oB{07{n(;M|I9LS#t`boZ)L%&<~t2WZO$-=QuT;z0c1U;G_aRYa8qQ?VL6Taw>bMUm9CpYj@ zIc9d(Mnik%u6*#jE9AdE?^9fGvB;oecUef6$*z z*(V#d&0XLXGxmf=?&C}cr&sg{bdzx?T;9JKm4;kG|URiEts|4jDDYE?VCQ{ z9W~LxnBV>-M-w=(?L2W#!G{LIhF`Xuw0)%MX{;MqSPJ`t1f)d>EwpjY^WvDj`|)$X-`6qchV+T@DGUC zuiS>JA(REscL}b(&fgB$`)5yO!mPWa4WErROadyupI_E+cW!CJH_93w%&)nSP0(66 z#WHU;0>TY3Z+>N%DlhKF0JXwbL^k44&S6ABoga3 zkd|2Lt~QC!DsgzSWGb=x;>5mEwWsXb>*&UvUg7Kbu&yjsG_(~lVr1AqS{2T1$21m@ zk^j5}lPHEnx45}1?q_n~t zczy0+tS2t43f#R~9xU$qt#<�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%0ACOmMdDGfY$FM@U}Q_al9 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

ds$V}z?yqG$7`Tzx>E@0mQxDg}b{0#FfhI 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¥oU6J{A03EW_P_Sxt2B$&835c>z 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

cv>0V#sLuFUNgyDu}yWvAY~X(cuBA|P=f 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�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

+ pypi version + License + Packaging status +