From b44a63312ecb93798d5f61449c0b5b6a64937d5a Mon Sep 17 00:00:00 2001 From: KenwoodFox Date: Wed, 30 Jun 2021 11:07:28 -0400 Subject: [PATCH] I have no idea what happened here... --- .idea/.gitignore | 3 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/lewis-crawler-software.iml | 10 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + photos/image2vector.svg | 1 + requirements.txt | 1 - sstv.py | 76 +- venv/bin/Activate.ps1 | 241 + venv/bin/activate | 66 + venv/bin/activate.csh | 25 + venv/bin/activate.fish | 64 + venv/bin/pip | 8 + venv/bin/pip3 | 8 + venv/bin/pip3.9 | 8 + venv/bin/python | 1 + venv/bin/python3 | 1 + venv/bin/python3.9 | 1 + .../site-packages/PIL/BdfFontFile.py | 110 + .../site-packages/PIL/BlpImagePlugin.py | 422 + .../site-packages/PIL/BmpImagePlugin.py | 380 + .../site-packages/PIL/BufrStubImagePlugin.py | 73 + .../site-packages/PIL/ContainerIO.py | 120 + .../site-packages/PIL/CurImagePlugin.py | 75 + .../site-packages/PIL/DcxImagePlugin.py | 89 + .../site-packages/PIL/DdsImagePlugin.py | 190 + .../site-packages/PIL/EpsImagePlugin.py | 419 + .../python3.9/site-packages/PIL/ExifTags.py | 318 + .../site-packages/PIL/FitsStubImagePlugin.py | 76 + .../site-packages/PIL/FliImagePlugin.py | 171 + .../python3.9/site-packages/PIL/FontFile.py | 111 + .../site-packages/PIL/FpxImagePlugin.py | 242 + .../site-packages/PIL/FtexImagePlugin.py | 106 + .../site-packages/PIL/GbrImagePlugin.py | 100 + .../site-packages/PIL/GdImageFile.py | 90 + .../site-packages/PIL/GifImagePlugin.py | 888 ++ .../site-packages/PIL/GimpGradientFile.py | 140 + .../site-packages/PIL/GimpPaletteFile.py | 56 + .../site-packages/PIL/GribStubImagePlugin.py | 73 + .../site-packages/PIL/Hdf5StubImagePlugin.py | 73 + .../site-packages/PIL/IcnsImagePlugin.py | 383 + .../site-packages/PIL/IcoImagePlugin.py | 328 + .../site-packages/PIL/ImImagePlugin.py | 376 + venv/lib/python3.9/site-packages/PIL/Image.py | 3491 +++++++ .../python3.9/site-packages/PIL/ImageChops.py | 328 + .../python3.9/site-packages/PIL/ImageCms.py | 999 ++ .../python3.9/site-packages/PIL/ImageColor.py | 300 + .../python3.9/site-packages/PIL/ImageDraw.py | 898 ++ .../python3.9/site-packages/PIL/ImageDraw2.py | 179 + .../site-packages/PIL/ImageEnhance.py | 103 + .../python3.9/site-packages/PIL/ImageFile.py | 697 ++ .../site-packages/PIL/ImageFilter.py | 534 ++ .../python3.9/site-packages/PIL/ImageFont.py | 1057 +++ .../python3.9/site-packages/PIL/ImageGrab.py | 120 + .../python3.9/site-packages/PIL/ImageMath.py | 253 + .../python3.9/site-packages/PIL/ImageMode.py | 64 + .../python3.9/site-packages/PIL/ImageMorph.py | 245 + .../python3.9/site-packages/PIL/ImageOps.py | 558 ++ .../site-packages/PIL/ImagePalette.py | 221 + .../python3.9/site-packages/PIL/ImagePath.py | 19 + .../python3.9/site-packages/PIL/ImageQt.py | 202 + .../site-packages/PIL/ImageSequence.py | 75 + .../python3.9/site-packages/PIL/ImageShow.py | 236 + .../python3.9/site-packages/PIL/ImageStat.py | 147 + .../python3.9/site-packages/PIL/ImageTk.py | 300 + .../site-packages/PIL/ImageTransform.py | 102 + .../python3.9/site-packages/PIL/ImageWin.py | 230 + .../site-packages/PIL/ImtImagePlugin.py | 93 + .../site-packages/PIL/IptcImagePlugin.py | 230 + .../site-packages/PIL/Jpeg2KImagePlugin.py | 314 + .../site-packages/PIL/JpegImagePlugin.py | 805 ++ .../site-packages/PIL/JpegPresets.py | 248 + .../site-packages/PIL/McIdasImagePlugin.py | 75 + .../site-packages/PIL/MicImagePlugin.py | 107 + .../site-packages/PIL/MpegImagePlugin.py | 83 + .../site-packages/PIL/MpoImagePlugin.py | 134 + .../site-packages/PIL/MspImagePlugin.py | 194 + .../lib/python3.9/site-packages/PIL/PSDraw.py | 235 + .../site-packages/PIL/PaletteFile.py | 53 + .../site-packages/PIL/PalmImagePlugin.py | 227 + .../site-packages/PIL/PcdImagePlugin.py | 63 + .../site-packages/PIL/PcfFontFile.py | 248 + .../site-packages/PIL/PcxImagePlugin.py | 213 + .../site-packages/PIL/PdfImagePlugin.py | 246 + .../python3.9/site-packages/PIL/PdfParser.py | 995 ++ .../site-packages/PIL/PixarImagePlugin.py | 70 + .../site-packages/PIL/PngImagePlugin.py | 1395 +++ .../site-packages/PIL/PpmImagePlugin.py | 164 + .../site-packages/PIL/PsdImagePlugin.py | 313 + .../python3.9/site-packages/PIL/PyAccess.py | 352 + .../site-packages/PIL/SgiImagePlugin.py | 229 + .../site-packages/PIL/SpiderImagePlugin.py | 324 + .../site-packages/PIL/SunImagePlugin.py | 136 + venv/lib/python3.9/site-packages/PIL/TarIO.py | 65 + .../site-packages/PIL/TgaImagePlugin.py | 248 + .../site-packages/PIL/TiffImagePlugin.py | 1924 ++++ .../python3.9/site-packages/PIL/TiffTags.py | 499 + .../site-packages/PIL/WalImageFile.py | 126 + .../site-packages/PIL/WebPImagePlugin.py | 351 + .../site-packages/PIL/WmfImagePlugin.py | 178 + .../site-packages/PIL/XVThumbImagePlugin.py | 78 + .../site-packages/PIL/XbmImagePlugin.py | 94 + .../site-packages/PIL/XpmImagePlugin.py | 130 + .../python3.9/site-packages/PIL/__init__.py | 139 + .../python3.9/site-packages/PIL/__main__.py | 3 + .../python3.9/site-packages/PIL/_binary.py | 92 + .../_imaging.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 665840 bytes ..._imagingcms.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 43080 bytes .../_imagingft.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 43000 bytes ...imagingmath.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 24440 bytes ...magingmorph.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 8312 bytes .../_imagingtk.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 9656 bytes .../site-packages/PIL/_tkinter_finder.py | 9 + venv/lib/python3.9/site-packages/PIL/_util.py | 19 + .../python3.9/site-packages/PIL/_version.py | 2 + .../PIL/_webp.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 41840 bytes .../python3.9/site-packages/PIL/features.py | 313 + .../Pillow-8.1.1.dist-info/INSTALLER | 1 + .../Pillow-8.1.1.dist-info/LICENSE | 564 ++ .../Pillow-8.1.1.dist-info/METADATA | 137 + .../Pillow-8.1.1.dist-info/RECORD | 212 + .../Pillow-8.1.1.dist-info/WHEEL | 5 + .../Pillow-8.1.1.dist-info/top_level.txt | 1 + .../Pillow-8.1.1.dist-info/zip-safe | 1 + .../Pillow.libs/libXau-312dbc56.so.6.0.0 | Bin 0 -> 12848 bytes .../Pillow.libs/libXdmcp-e15573e7.so.6.0.0 | Bin 0 -> 21912 bytes .../libfreetype-6ad068c6.so.6.17.4 | Bin 0 -> 1307624 bytes .../Pillow.libs/libjpeg-ba7bf5af.so.9.4.0 | Bin 0 -> 250504 bytes .../Pillow.libs/liblcms2-a76503ec.so.2.0.12 | Bin 0 -> 465560 bytes .../Pillow.libs/liblzma-99449165.so.5.2.5 | Bin 0 -> 216664 bytes .../Pillow.libs/libopenjp2-f0612b30.so.2.4.0 | Bin 0 -> 532880 bytes .../Pillow.libs/libpng16-bedcb7ea.so.16.37.0 | Bin 0 -> 283920 bytes .../Pillow.libs/libtiff-d147fec3.so.5.6.0 | Bin 0 -> 690040 bytes .../Pillow.libs/libwebp-305e7d94.so.7.1.1 | Bin 0 -> 592616 bytes .../libwebpdemux-2a7a19d5.so.2.0.7 | Bin 0 -> 29528 bytes .../Pillow.libs/libwebpmux-1d369df0.so.3.0.6 | Bin 0 -> 58616 bytes .../Pillow.libs/libxcb-2dfad6c3.so.1.1.0 | Bin 0 -> 263776 bytes .../Pillow.libs/libz-a147dcb0.so.1.2.3 | Bin 0 -> 87848 bytes .../PySSTV-0.4.3-py3.9.egg-info/PKG-INFO | 97 + .../PySSTV-0.4.3-py3.9.egg-info/SOURCES.txt | 40 + .../dependency_links.txt | 1 + .../installed-files.txt | 39 + .../PySSTV-0.4.3-py3.9.egg-info/requires.txt | 2 + .../PySSTV-0.4.3-py3.9.egg-info/top_level.txt | 1 + .../site-packages/_distutils_hack/__init__.py | 123 + .../site-packages/_distutils_hack/override.py | 1 + .../site-packages/distutils-precedence.pth | 1 + .../pip-21.0.1.dist-info/INSTALLER | 1 + .../pip-21.0.1.dist-info/LICENSE.txt | 20 + .../pip-21.0.1.dist-info/METADATA | 92 + .../site-packages/pip-21.0.1.dist-info/RECORD | 761 ++ .../site-packages/pip-21.0.1.dist-info/WHEEL | 5 + .../pip-21.0.1.dist-info/entry_points.txt | 5 + .../pip-21.0.1.dist-info/top_level.txt | 1 + .../python3.9/site-packages/pip/__init__.py | 18 + .../python3.9/site-packages/pip/__main__.py | 24 + .../site-packages/pip/_internal/__init__.py | 17 + .../site-packages/pip/_internal/build_env.py | 242 + .../site-packages/pip/_internal/cache.py | 293 + .../pip/_internal/cli/__init__.py | 4 + .../pip/_internal/cli/autocompletion.py | 164 + .../pip/_internal/cli/base_command.py | 226 + .../pip/_internal/cli/cmdoptions.py | 969 ++ .../pip/_internal/cli/command_context.py | 36 + .../site-packages/pip/_internal/cli/main.py | 73 + .../pip/_internal/cli/main_parser.py | 96 + .../site-packages/pip/_internal/cli/parser.py | 281 + .../pip/_internal/cli/progress_bars.py | 271 + .../pip/_internal/cli/req_command.py | 426 + .../pip/_internal/cli/spinners.py | 171 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 115 + .../pip/_internal/commands/cache.py | 232 + .../pip/_internal/commands/check.py | 51 + .../pip/_internal/commands/completion.py | 96 + .../pip/_internal/commands/configuration.py | 280 + .../pip/_internal/commands/debug.py | 218 + .../pip/_internal/commands/download.py | 144 + .../pip/_internal/commands/freeze.py | 107 + .../pip/_internal/commands/hash.py | 61 + .../pip/_internal/commands/help.py | 44 + .../pip/_internal/commands/install.py | 733 ++ .../pip/_internal/commands/list.py | 323 + .../pip/_internal/commands/search.py | 167 + .../pip/_internal/commands/show.py | 184 + .../pip/_internal/commands/uninstall.py | 93 + .../pip/_internal/commands/wheel.py | 194 + .../pip/_internal/configuration.py | 406 + .../pip/_internal/distributions/__init__.py | 24 + .../pip/_internal/distributions/base.py | 42 + .../pip/_internal/distributions/installed.py | 25 + .../pip/_internal/distributions/sdist.py | 105 + .../pip/_internal/distributions/wheel.py | 37 + .../site-packages/pip/_internal/exceptions.py | 384 + .../pip/_internal/index/__init__.py | 2 + .../pip/_internal/index/collector.py | 666 ++ .../pip/_internal/index/package_finder.py | 1005 ++ .../site-packages/pip/_internal/locations.py | 184 + .../site-packages/pip/_internal/main.py | 16 + .../pip/_internal/models/__init__.py | 2 + .../pip/_internal/models/candidate.py | 39 + .../pip/_internal/models/direct_url.py | 239 + .../pip/_internal/models/format_control.py | 88 + .../pip/_internal/models/index.py | 34 + .../pip/_internal/models/link.py | 245 + .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 135 + .../pip/_internal/models/selection_prefs.py | 50 + .../pip/_internal/models/target_python.py | 117 + .../pip/_internal/models/wheel.py | 78 + .../pip/_internal/network/__init__.py | 2 + .../pip/_internal/network/auth.py | 310 + .../pip/_internal/network/cache.py | 79 + .../pip/_internal/network/download.py | 202 + .../pip/_internal/network/lazy_wheel.py | 230 + .../pip/_internal/network/session.py | 424 + .../pip/_internal/network/utils.py | 97 + .../pip/_internal/network/xmlrpc.py | 53 + .../pip/_internal/operations/__init__.py | 0 .../_internal/operations/build/__init__.py | 0 .../_internal/operations/build/metadata.py | 38 + .../operations/build/metadata_legacy.py | 77 + .../pip/_internal/operations/build/wheel.py | 47 + .../operations/build/wheel_legacy.py | 113 + .../pip/_internal/operations/check.py | 155 + .../pip/_internal/operations/freeze.py | 270 + .../_internal/operations/install/__init__.py | 2 + .../operations/install/editable_legacy.py | 52 + .../_internal/operations/install/legacy.py | 130 + .../pip/_internal/operations/install/wheel.py | 828 ++ .../pip/_internal/operations/prepare.py | 585 ++ .../site-packages/pip/_internal/pyproject.py | 186 + .../pip/_internal/req/__init__.py | 101 + .../pip/_internal/req/constructors.py | 468 + .../pip/_internal/req/req_file.py | 560 ++ .../pip/_internal/req/req_install.py | 879 ++ .../pip/_internal/req/req_set.py | 202 + .../pip/_internal/req/req_tracker.py | 146 + .../pip/_internal/req/req_uninstall.py | 654 ++ .../pip/_internal/resolution/__init__.py | 0 .../pip/_internal/resolution/base.py | 21 + .../_internal/resolution/legacy/__init__.py | 0 .../_internal/resolution/legacy/resolver.py | 473 + .../resolution/resolvelib/__init__.py | 0 .../_internal/resolution/resolvelib/base.py | 156 + .../resolution/resolvelib/candidates.py | 598 ++ .../resolution/resolvelib/factory.py | 499 + .../resolution/resolvelib/found_candidates.py | 145 + .../resolution/resolvelib/provider.py | 174 + .../resolution/resolvelib/reporter.py | 84 + .../resolution/resolvelib/requirements.py | 201 + .../resolution/resolvelib/resolver.py | 296 + .../pip/_internal/self_outdated_check.py | 195 + .../pip/_internal/utils/__init__.py | 0 .../pip/_internal/utils/appdirs.py | 42 + .../pip/_internal/utils/compat.py | 152 + .../pip/_internal/utils/compatibility_tags.py | 176 + .../pip/_internal/utils/datetime.py | 12 + .../pip/_internal/utils/deprecation.py | 102 + .../pip/_internal/utils/direct_url_helpers.py | 121 + .../pip/_internal/utils/distutils_args.py | 48 + .../pip/_internal/utils/encoding.py | 41 + .../pip/_internal/utils/entrypoints.py | 31 + .../pip/_internal/utils/filesystem.py | 200 + .../pip/_internal/utils/filetypes.py | 26 + .../pip/_internal/utils/glibc.py | 96 + .../pip/_internal/utils/hashes.py | 160 + .../_internal/utils/inject_securetransport.py | 36 + .../pip/_internal/utils/logging.py | 362 + .../site-packages/pip/_internal/utils/misc.py | 927 ++ .../pip/_internal/utils/models.py | 41 + .../pip/_internal/utils/packaging.py | 93 + .../pip/_internal/utils/parallel.py | 105 + .../pip/_internal/utils/pkg_resources.py | 44 + .../pip/_internal/utils/setuptools_build.py | 181 + .../pip/_internal/utils/subprocess.py | 296 + .../pip/_internal/utils/temp_dir.py | 282 + .../pip/_internal/utils/typing.py | 38 + .../pip/_internal/utils/unpacking.py | 277 + .../site-packages/pip/_internal/utils/urls.py | 54 + .../pip/_internal/utils/virtualenv.py | 116 + .../pip/_internal/utils/wheel.py | 218 + .../pip/_internal/vcs/__init__.py | 15 + .../site-packages/pip/_internal/vcs/bazaar.py | 114 + .../site-packages/pip/_internal/vcs/git.py | 454 + .../pip/_internal/vcs/mercurial.py | 171 + .../pip/_internal/vcs/subversion.py | 346 + .../pip/_internal/vcs/versioncontrol.py | 722 ++ .../pip/_internal/wheel_builder.py | 365 + .../site-packages/pip/_vendor/__init__.py | 114 + .../site-packages/pip/_vendor/appdirs.py | 633 ++ .../pip/_vendor/cachecontrol/__init__.py | 11 + .../pip/_vendor/cachecontrol/_cmd.py | 57 + .../pip/_vendor/cachecontrol/adapter.py | 133 + .../pip/_vendor/cachecontrol/cache.py | 39 + .../_vendor/cachecontrol/caches/__init__.py | 2 + .../_vendor/cachecontrol/caches/file_cache.py | 146 + .../cachecontrol/caches/redis_cache.py | 33 + .../pip/_vendor/cachecontrol/compat.py | 29 + .../pip/_vendor/cachecontrol/controller.py | 376 + .../pip/_vendor/cachecontrol/filewrapper.py | 80 + .../pip/_vendor/cachecontrol/heuristics.py | 135 + .../pip/_vendor/cachecontrol/serialize.py | 188 + .../pip/_vendor/cachecontrol/wrapper.py | 29 + .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__main__.py | 12 + .../pip/_vendor/certifi/cacert.pem | 4325 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 60 + .../pip/_vendor/chardet/__init__.py | 83 + .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 233 + .../pip/_vendor/chardet/charsetgroupprober.py | 107 + .../pip/_vendor/chardet/charsetprober.py | 145 + .../pip/_vendor/chardet/cli/__init__.py | 1 + .../pip/_vendor/chardet/cli/chardetect.py | 84 + .../pip/_vendor/chardet/codingstatemachine.py | 88 + .../pip/_vendor/chardet/compat.py | 36 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 76 + .../pip/_vendor/chardet/escprober.py | 101 + .../pip/_vendor/chardet/escsm.py | 246 + .../pip/_vendor/chardet/eucjpprober.py | 92 + .../pip/_vendor/chardet/euckrfreq.py | 195 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 387 + .../pip/_vendor/chardet/euctwprober.py | 46 + .../pip/_vendor/chardet/gb2312freq.py | 283 + .../pip/_vendor/chardet/gb2312prober.py | 46 + .../pip/_vendor/chardet/hebrewprober.py | 292 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/jpcntx.py | 233 + .../pip/_vendor/chardet/langbulgarianmodel.py | 4650 +++++++++ .../pip/_vendor/chardet/langgreekmodel.py | 4398 +++++++++ .../pip/_vendor/chardet/langhebrewmodel.py | 4383 +++++++++ .../pip/_vendor/chardet/langhungarianmodel.py | 4650 +++++++++ .../pip/_vendor/chardet/langrussianmodel.py | 5718 +++++++++++ .../pip/_vendor/chardet/langthaimodel.py | 4383 +++++++++ .../pip/_vendor/chardet/langturkishmodel.py | 4383 +++++++++ .../pip/_vendor/chardet/latin1prober.py | 145 + .../pip/_vendor/chardet/mbcharsetprober.py | 91 + .../pip/_vendor/chardet/mbcsgroupprober.py | 54 + .../pip/_vendor/chardet/mbcssm.py | 572 ++ .../pip/_vendor/chardet/metadata/__init__.py | 0 .../pip/_vendor/chardet/metadata/languages.py | 310 + .../pip/_vendor/chardet/sbcharsetprober.py | 145 + .../pip/_vendor/chardet/sbcsgroupprober.py | 83 + .../pip/_vendor/chardet/sjisprober.py | 92 + .../pip/_vendor/chardet/universaldetector.py | 286 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 6 + .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 258 + .../pip/_vendor/colorama/initialise.py | 80 + .../pip/_vendor/colorama/win32.py | 152 + .../pip/_vendor/colorama/winterm.py | 169 + .../site-packages/pip/_vendor/contextlib2.py | 518 + .../pip/_vendor/distlib/__init__.py | 23 + .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/shutil.py | 764 ++ .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 786 ++ .../pip/_vendor/distlib/_backport/tarfile.py | 2607 +++++ .../pip/_vendor/distlib/compat.py | 1120 +++ .../pip/_vendor/distlib/database.py | 1339 +++ .../pip/_vendor/distlib/index.py | 516 + .../pip/_vendor/distlib/locators.py | 1302 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 131 + .../pip/_vendor/distlib/metadata.py | 1056 +++ .../pip/_vendor/distlib/resources.py | 355 + .../pip/_vendor/distlib/scripts.py | 419 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 96768 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 105984 bytes .../site-packages/pip/_vendor/distlib/util.py | 1761 ++++ .../pip/_vendor/distlib/version.py | 736 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 90112 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 99840 bytes .../pip/_vendor/distlib/wheel.py | 1018 ++ .../site-packages/pip/_vendor/distro.py | 1230 +++ .../pip/_vendor/html5lib/__init__.py | 35 + .../pip/_vendor/html5lib/_ihatexml.py | 289 + .../pip/_vendor/html5lib/_inputstream.py | 918 ++ .../pip/_vendor/html5lib/_tokenizer.py | 1735 ++++ .../pip/_vendor/html5lib/_trie/__init__.py | 5 + .../pip/_vendor/html5lib/_trie/_base.py | 40 + .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_utils.py | 159 + .../pip/_vendor/html5lib/constants.py | 2946 ++++++ .../pip/_vendor/html5lib/filters/__init__.py | 0 .../filters/alphabeticalattributes.py | 29 + .../pip/_vendor/html5lib/filters/base.py | 12 + .../html5lib/filters/inject_meta_charset.py | 73 + .../pip/_vendor/html5lib/filters/lint.py | 93 + .../_vendor/html5lib/filters/optionaltags.py | 207 + .../pip/_vendor/html5lib/filters/sanitizer.py | 916 ++ .../_vendor/html5lib/filters/whitespace.py | 38 + .../pip/_vendor/html5lib/html5parser.py | 2795 ++++++ .../pip/_vendor/html5lib/serializer.py | 409 + .../_vendor/html5lib/treeadapters/__init__.py | 30 + .../_vendor/html5lib/treeadapters/genshi.py | 54 + .../pip/_vendor/html5lib/treeadapters/sax.py | 50 + .../_vendor/html5lib/treebuilders/__init__.py | 88 + .../pip/_vendor/html5lib/treebuilders/base.py | 417 + .../pip/_vendor/html5lib/treebuilders/dom.py | 239 + .../_vendor/html5lib/treebuilders/etree.py | 343 + .../html5lib/treebuilders/etree_lxml.py | 392 + .../_vendor/html5lib/treewalkers/__init__.py | 154 + .../pip/_vendor/html5lib/treewalkers/base.py | 252 + .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/etree.py | 131 + .../html5lib/treewalkers/etree_lxml.py | 215 + .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../pip/_vendor/idna/__init__.py | 2 + .../site-packages/pip/_vendor/idna/codec.py | 118 + .../site-packages/pip/_vendor/idna/compat.py | 12 + .../site-packages/pip/_vendor/idna/core.py | 400 + .../pip/_vendor/idna/idnadata.py | 2050 ++++ .../pip/_vendor/idna/intranges.py | 53 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8357 +++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 54 + .../pip/_vendor/msgpack/_version.py | 1 + .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 193 + .../pip/_vendor/msgpack/fallback.py | 1087 +++ .../pip/_vendor/packaging/__about__.py | 27 + .../pip/_vendor/packaging/__init__.py | 26 + .../pip/_vendor/packaging/_compat.py | 38 + .../pip/_vendor/packaging/_structures.py | 86 + .../pip/_vendor/packaging/_typing.py | 48 + .../pip/_vendor/packaging/markers.py | 336 + .../pip/_vendor/packaging/requirements.py | 160 + .../pip/_vendor/packaging/specifiers.py | 864 ++ .../pip/_vendor/packaging/tags.py | 866 ++ .../pip/_vendor/packaging/utils.py | 138 + .../pip/_vendor/packaging/version.py | 556 ++ .../pip/_vendor/pep517/__init__.py | 6 + .../pip/_vendor/pep517/_in_process.py | 280 + .../site-packages/pip/_vendor/pep517/build.py | 124 + .../site-packages/pip/_vendor/pep517/check.py | 203 + .../pip/_vendor/pep517/colorlog.py | 115 + .../pip/_vendor/pep517/compat.py | 34 + .../pip/_vendor/pep517/dirtools.py | 44 + .../pip/_vendor/pep517/envbuild.py | 167 + .../site-packages/pip/_vendor/pep517/meta.py | 92 + .../pip/_vendor/pep517/wrappers.py | 327 + .../pip/_vendor/pkg_resources/__init__.py | 3296 +++++++ .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/progress/__init__.py | 177 + .../site-packages/pip/_vendor/progress/bar.py | 91 + .../pip/_vendor/progress/counter.py | 41 + .../pip/_vendor/progress/spinner.py | 43 + .../site-packages/pip/_vendor/pyparsing.py | 7107 ++++++++++++++ .../pip/_vendor/requests/__init__.py | 142 + .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 42 + .../pip/_vendor/requests/adapters.py | 533 ++ .../site-packages/pip/_vendor/requests/api.py | 161 + .../pip/_vendor/requests/auth.py | 305 + .../pip/_vendor/requests/certs.py | 18 + .../pip/_vendor/requests/compat.py | 76 + .../pip/_vendor/requests/cookies.py | 549 ++ .../pip/_vendor/requests/exceptions.py | 123 + .../pip/_vendor/requests/help.py | 119 + .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/models.py | 956 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 781 ++ .../pip/_vendor/requests/status_codes.py | 123 + .../pip/_vendor/requests/structures.py | 105 + .../pip/_vendor/requests/utils.py | 992 ++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 119 + .../pip/_vendor/resolvelib/reporters.py | 37 + .../pip/_vendor/resolvelib/resolvers.py | 454 + .../pip/_vendor/resolvelib/structs.py | 149 + .../site-packages/pip/_vendor/retrying.py | 267 + .../site-packages/pip/_vendor/six.py | 982 ++ .../pip/_vendor/toml/__init__.py | 25 + .../site-packages/pip/_vendor/toml/decoder.py | 1057 +++ .../site-packages/pip/_vendor/toml/encoder.py | 304 + .../site-packages/pip/_vendor/toml/ordered.py | 15 + .../site-packages/pip/_vendor/toml/tz.py | 24 + .../pip/_vendor/urllib3/__init__.py | 85 + .../pip/_vendor/urllib3/_collections.py | 337 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 535 ++ .../pip/_vendor/urllib3/connectionpool.py | 1067 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 396 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 121 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 509 + .../urllib3/contrib/securetransport.py | 920 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 313 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 5 + .../urllib3/packages/backports/__init__.py | 0 .../urllib3/packages/backports/makefile.py | 51 + .../pip/_vendor/urllib3/packages/six.py | 1021 ++ .../packages/ssl_match_hostname/__init__.py | 22 + .../ssl_match_hostname/_implementation.py | 160 + .../pip/_vendor/urllib3/poolmanager.py | 536 ++ .../pip/_vendor/urllib3/request.py | 170 + .../pip/_vendor/urllib3/response.py | 821 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../pip/_vendor/urllib3/util/connection.py | 150 + .../pip/_vendor/urllib3/util/proxy.py | 56 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 143 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 601 ++ .../pip/_vendor/urllib3/util/ssl_.py | 474 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 268 + .../pip/_vendor/urllib3/util/url.py | 430 + .../pip/_vendor/urllib3/util/wait.py | 153 + .../site-packages/pip/_vendor/vendor.txt | 23 + .../pip/_vendor/webencodings/__init__.py | 342 + .../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 + .../site-packages/pkg_resources/__init__.py | 3288 +++++++ .../pkg_resources/_vendor/__init__.py | 0 .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/packaging/__about__.py | 27 + .../_vendor/packaging/__init__.py | 26 + .../_vendor/packaging/_compat.py | 38 + .../_vendor/packaging/_structures.py | 86 + .../_vendor/packaging/_typing.py | 48 + .../_vendor/packaging/markers.py | 328 + .../_vendor/packaging/requirements.py | 145 + .../_vendor/packaging/specifiers.py | 863 ++ .../pkg_resources/_vendor/packaging/tags.py | 751 ++ .../pkg_resources/_vendor/packaging/utils.py | 65 + .../_vendor/packaging/version.py | 535 ++ .../pkg_resources/_vendor/pyparsing.py | 5742 +++++++++++ .../pkg_resources/extern/__init__.py | 72 + .../data/my-test-package-source/setup.py | 6 + .../site-packages/pysstv/__init__.py | 3 + .../site-packages/pysstv/__main__.py | 92 + .../python3.9/site-packages/pysstv/color.py | 200 + .../site-packages/pysstv/examples/__init__.py | 3 + .../site-packages/pysstv/examples/codegen.py | 167 + .../pysstv/examples/get_floats.py | 22 + .../pysstv/examples/get_freq_bits.py | 23 + .../pysstv/examples/gimp-plugin.py | 253 + .../site-packages/pysstv/examples/overlay.py | 17 + .../pysstv/examples/pyaudio_sstv.py | 51 + .../site-packages/pysstv/examples/repeater.py | 73 + .../site-packages/pysstv/grayscale.py | 43 + .../python3.9/site-packages/pysstv/sstv.py | 140 + .../site-packages/pysstv/tests/__init__.py | 3 + .../site-packages/pysstv/tests/common.py | 9 + .../site-packages/pysstv/tests/test_color.py | 44 + .../site-packages/pysstv/tests/test_sstv.py | 82 + .../setuptools-54.0.0.dist-info/INSTALLER | 1 + .../setuptools-54.0.0.dist-info/LICENSE | 19 + .../setuptools-54.0.0.dist-info/METADATA | 113 + .../setuptools-54.0.0.dist-info/RECORD | 296 + .../setuptools-54.0.0.dist-info/WHEEL | 5 + .../dependency_links.txt | 2 + .../entry_points.txt | 61 + .../setuptools-54.0.0.dist-info/top_level.txt | 4 + .../site-packages/setuptools/__init__.py | 241 + .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_distutils/__init__.py | 15 + .../setuptools/_distutils/_msvccompiler.py | 561 ++ .../setuptools/_distutils/archive_util.py | 256 + .../setuptools/_distutils/bcppcompiler.py | 393 + .../setuptools/_distutils/ccompiler.py | 1116 +++ .../setuptools/_distutils/cmd.py | 403 + .../setuptools/_distutils/command/__init__.py | 31 + .../setuptools/_distutils/command/bdist.py | 143 + .../_distutils/command/bdist_dumb.py | 123 + .../_distutils/command/bdist_msi.py | 749 ++ .../_distutils/command/bdist_rpm.py | 579 ++ .../_distutils/command/bdist_wininst.py | 377 + .../setuptools/_distutils/command/build.py | 157 + .../_distutils/command/build_clib.py | 209 + .../_distutils/command/build_ext.py | 755 ++ .../setuptools/_distutils/command/build_py.py | 416 + .../_distutils/command/build_scripts.py | 160 + .../setuptools/_distutils/command/check.py | 148 + .../setuptools/_distutils/command/clean.py | 76 + .../setuptools/_distutils/command/config.py | 344 + .../setuptools/_distutils/command/install.py | 677 ++ .../_distutils/command/install_data.py | 79 + .../_distutils/command/install_egg_info.py | 77 + .../_distutils/command/install_headers.py | 47 + .../_distutils/command/install_lib.py | 217 + .../_distutils/command/install_scripts.py | 60 + .../_distutils/command/py37compat.py | 30 + .../setuptools/_distutils/command/register.py | 304 + .../setuptools/_distutils/command/sdist.py | 494 + .../setuptools/_distutils/command/upload.py | 214 + .../setuptools/_distutils/config.py | 130 + .../setuptools/_distutils/core.py | 234 + .../setuptools/_distutils/cygwinccompiler.py | 403 + .../setuptools/_distutils/debug.py | 5 + .../setuptools/_distutils/dep_util.py | 92 + .../setuptools/_distutils/dir_util.py | 210 + .../setuptools/_distutils/dist.py | 1257 +++ .../setuptools/_distutils/errors.py | 97 + .../setuptools/_distutils/extension.py | 240 + .../setuptools/_distutils/fancy_getopt.py | 457 + .../setuptools/_distutils/file_util.py | 238 + .../setuptools/_distutils/filelist.py | 327 + .../setuptools/_distutils/log.py | 77 + .../setuptools/_distutils/msvc9compiler.py | 788 ++ .../setuptools/_distutils/msvccompiler.py | 643 ++ .../setuptools/_distutils/py35compat.py | 19 + .../setuptools/_distutils/py38compat.py | 7 + .../setuptools/_distutils/spawn.py | 125 + .../setuptools/_distutils/sysconfig.py | 573 ++ .../setuptools/_distutils/text_file.py | 286 + .../setuptools/_distutils/unixccompiler.py | 328 + .../setuptools/_distutils/util.py | 561 ++ .../setuptools/_distutils/version.py | 347 + .../setuptools/_distutils/versionpredicate.py | 166 + .../site-packages/setuptools/_imp.py | 82 + .../setuptools/_vendor/__init__.py | 0 .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 27 + .../setuptools/_vendor/packaging/__init__.py | 26 + .../setuptools/_vendor/packaging/_compat.py | 38 + .../_vendor/packaging/_structures.py | 86 + .../setuptools/_vendor/packaging/_typing.py | 48 + .../setuptools/_vendor/packaging/markers.py | 328 + .../_vendor/packaging/requirements.py | 145 + .../_vendor/packaging/specifiers.py | 863 ++ .../setuptools/_vendor/packaging/tags.py | 751 ++ .../setuptools/_vendor/packaging/utils.py | 65 + .../setuptools/_vendor/packaging/version.py | 535 ++ .../setuptools/_vendor/pyparsing.py | 5742 +++++++++++ .../site-packages/setuptools/archive_util.py | 205 + .../site-packages/setuptools/build_meta.py | 276 + .../site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 17 + .../site-packages/setuptools/command/alias.py | 78 + .../setuptools/command/bdist_egg.py | 456 + .../setuptools/command/bdist_rpm.py | 31 + .../setuptools/command/bdist_wininst.py | 30 + .../setuptools/command/build_clib.py | 101 + .../setuptools/command/build_ext.py | 322 + .../setuptools/command/build_py.py | 270 + .../setuptools/command/develop.py | 216 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2290 +++++ .../setuptools/command/egg_info.py | 727 ++ .../setuptools/command/install.py | 125 + .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_lib.py | 122 + .../setuptools/command/install_scripts.py | 68 + .../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 | 222 + .../setuptools/command/setopt.py | 148 + .../site-packages/setuptools/command/test.py | 274 + .../setuptools/command/upload.py | 17 + .../setuptools/command/upload_docs.py | 202 + .../site-packages/setuptools/config.py | 710 ++ .../site-packages/setuptools/dep_util.py | 25 + .../site-packages/setuptools/depends.py | 175 + .../site-packages/setuptools/dist.py | 1023 ++ .../site-packages/setuptools/errors.py | 16 + .../site-packages/setuptools/extension.py | 55 + .../setuptools/extern/__init__.py | 72 + .../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.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/installer.py | 97 + .../site-packages/setuptools/launch.py | 36 + .../site-packages/setuptools/lib2to3_ex.py | 68 + .../site-packages/setuptools/monkey.py | 177 + .../site-packages/setuptools/msvc.py | 1826 ++++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1145 +++ .../site-packages/setuptools/py34compat.py | 13 + .../site-packages/setuptools/sandbox.py | 496 + .../setuptools/script (dev).tmpl | 6 + .../site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/ssl_support.py | 266 + .../site-packages/setuptools/unicode_utils.py | 42 + .../site-packages/setuptools/version.py | 6 + .../site-packages/setuptools/wheel.py | 213 + .../setuptools/windows_support.py | 29 + .../six-1.15.0.dist-info/INSTALLER | 1 + .../six-1.15.0.dist-info/LICENSE | 18 + .../six-1.15.0.dist-info/METADATA | 49 + .../site-packages/six-1.15.0.dist-info/RECORD | 8 + .../site-packages/six-1.15.0.dist-info/WHEEL | 6 + .../six-1.15.0.dist-info/top_level.txt | 1 + venv/lib/python3.9/site-packages/six.py | 982 ++ venv/lib64 | 1 + venv/pyvenv.cfg | 3 + working/working.jpg | Bin 4787 -> 6481 bytes working/working.wav | Bin 0 -> 3543404 bytes 716 files changed, 236008 insertions(+), 32 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/lewis-crawler-software.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 photos/image2vector.svg create mode 100644 venv/bin/Activate.ps1 create mode 100644 venv/bin/activate create mode 100644 venv/bin/activate.csh create mode 100644 venv/bin/activate.fish create mode 100755 venv/bin/pip create mode 100755 venv/bin/pip3 create mode 100755 venv/bin/pip3.9 create mode 120000 venv/bin/python create mode 120000 venv/bin/python3 create mode 120000 venv/bin/python3.9 create mode 100644 venv/lib/python3.9/site-packages/PIL/BdfFontFile.py create mode 100644 venv/lib/python3.9/site-packages/PIL/BlpImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/BmpImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/BufrStubImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ContainerIO.py create mode 100644 venv/lib/python3.9/site-packages/PIL/CurImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/DcxImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/DdsImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/EpsImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ExifTags.py create mode 100644 venv/lib/python3.9/site-packages/PIL/FitsStubImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/FliImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/FontFile.py create mode 100644 venv/lib/python3.9/site-packages/PIL/FpxImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/FtexImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/GbrImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/GdImageFile.py create mode 100644 venv/lib/python3.9/site-packages/PIL/GifImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/GimpGradientFile.py create mode 100644 venv/lib/python3.9/site-packages/PIL/GimpPaletteFile.py create mode 100644 venv/lib/python3.9/site-packages/PIL/GribStubImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/Hdf5StubImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/IcnsImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/IcoImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/Image.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageChops.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageCms.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageColor.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageDraw.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageDraw2.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageEnhance.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageFile.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageFilter.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageFont.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageGrab.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageMath.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageMode.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageMorph.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageOps.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImagePalette.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImagePath.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageQt.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageSequence.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageShow.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageStat.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageTk.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageTransform.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImageWin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/ImtImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/IptcImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/Jpeg2KImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/JpegImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/JpegPresets.py create mode 100644 venv/lib/python3.9/site-packages/PIL/McIdasImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/MicImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/MpegImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/MpoImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/MspImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PSDraw.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PaletteFile.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PalmImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PcdImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PcfFontFile.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PcxImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PdfImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PdfParser.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PixarImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PngImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PpmImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PsdImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/PyAccess.py create mode 100644 venv/lib/python3.9/site-packages/PIL/SgiImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/SpiderImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/SunImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/TarIO.py create mode 100644 venv/lib/python3.9/site-packages/PIL/TgaImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/TiffImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/TiffTags.py create mode 100644 venv/lib/python3.9/site-packages/PIL/WalImageFile.py create mode 100644 venv/lib/python3.9/site-packages/PIL/WebPImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/WmfImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/XVThumbImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/XbmImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/XpmImagePlugin.py create mode 100644 venv/lib/python3.9/site-packages/PIL/__init__.py create mode 100644 venv/lib/python3.9/site-packages/PIL/__main__.py create mode 100644 venv/lib/python3.9/site-packages/PIL/_binary.py create mode 100755 venv/lib/python3.9/site-packages/PIL/_imaging.cpython-39-x86_64-linux-gnu.so create mode 100755 venv/lib/python3.9/site-packages/PIL/_imagingcms.cpython-39-x86_64-linux-gnu.so create mode 100755 venv/lib/python3.9/site-packages/PIL/_imagingft.cpython-39-x86_64-linux-gnu.so create mode 100755 venv/lib/python3.9/site-packages/PIL/_imagingmath.cpython-39-x86_64-linux-gnu.so create mode 100755 venv/lib/python3.9/site-packages/PIL/_imagingmorph.cpython-39-x86_64-linux-gnu.so create mode 100755 venv/lib/python3.9/site-packages/PIL/_imagingtk.cpython-39-x86_64-linux-gnu.so create mode 100644 venv/lib/python3.9/site-packages/PIL/_tkinter_finder.py create mode 100644 venv/lib/python3.9/site-packages/PIL/_util.py create mode 100644 venv/lib/python3.9/site-packages/PIL/_version.py create mode 100755 venv/lib/python3.9/site-packages/PIL/_webp.cpython-39-x86_64-linux-gnu.so create mode 100644 venv/lib/python3.9/site-packages/PIL/features.py create mode 100644 venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/INSTALLER create mode 100644 venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/LICENSE create mode 100644 venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/METADATA create mode 100644 venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/RECORD create mode 100644 venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/WHEEL create mode 100644 venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/top_level.txt create mode 100644 venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/zip-safe create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libXau-312dbc56.so.6.0.0 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libXdmcp-e15573e7.so.6.0.0 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libfreetype-6ad068c6.so.6.17.4 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libjpeg-ba7bf5af.so.9.4.0 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/liblcms2-a76503ec.so.2.0.12 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/liblzma-99449165.so.5.2.5 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libopenjp2-f0612b30.so.2.4.0 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libpng16-bedcb7ea.so.16.37.0 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libtiff-d147fec3.so.5.6.0 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libwebp-305e7d94.so.7.1.1 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libwebpdemux-2a7a19d5.so.2.0.7 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libwebpmux-1d369df0.so.3.0.6 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libxcb-2dfad6c3.so.1.1.0 create mode 100755 venv/lib/python3.9/site-packages/Pillow.libs/libz-a147dcb0.so.1.2.3 create mode 100644 venv/lib/python3.9/site-packages/PySSTV-0.4.3-py3.9.egg-info/PKG-INFO create mode 100644 venv/lib/python3.9/site-packages/PySSTV-0.4.3-py3.9.egg-info/SOURCES.txt create mode 100644 venv/lib/python3.9/site-packages/PySSTV-0.4.3-py3.9.egg-info/dependency_links.txt create mode 100644 venv/lib/python3.9/site-packages/PySSTV-0.4.3-py3.9.egg-info/installed-files.txt create mode 100644 venv/lib/python3.9/site-packages/PySSTV-0.4.3-py3.9.egg-info/requires.txt create mode 100644 venv/lib/python3.9/site-packages/PySSTV-0.4.3-py3.9.egg-info/top_level.txt create mode 100644 venv/lib/python3.9/site-packages/_distutils_hack/__init__.py create mode 100644 venv/lib/python3.9/site-packages/_distutils_hack/override.py create mode 100644 venv/lib/python3.9/site-packages/distutils-precedence.pth create mode 100644 venv/lib/python3.9/site-packages/pip-21.0.1.dist-info/INSTALLER create mode 100644 venv/lib/python3.9/site-packages/pip-21.0.1.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.9/site-packages/pip-21.0.1.dist-info/METADATA create mode 100644 venv/lib/python3.9/site-packages/pip-21.0.1.dist-info/RECORD create mode 100644 venv/lib/python3.9/site-packages/pip-21.0.1.dist-info/WHEEL create mode 100644 venv/lib/python3.9/site-packages/pip-21.0.1.dist-info/entry_points.txt create mode 100644 venv/lib/python3.9/site-packages/pip-21.0.1.dist-info/top_level.txt create mode 100644 venv/lib/python3.9/site-packages/pip/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/__main__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/build_env.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cache.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/base_command.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/command_context.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/main.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/main_parser.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/parser.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/req_command.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/spinners.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/status_codes.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/cache.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/check.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/completion.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/configuration.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/debug.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/download.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/freeze.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/hash.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/help.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/install.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/list.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/search.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/show.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/uninstall.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/wheel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/configuration.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/base.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/installed.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/wheel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/exceptions.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/index/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/index/collector.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/index/package_finder.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/locations.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/main.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/candidate.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/direct_url.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/format_control.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/index.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/link.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/scheme.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/search_scope.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/target_python.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/wheel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/auth.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/cache.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/download.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/session.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/utils.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/check.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/freeze.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/legacy.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/prepare.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/pyproject.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/constructors.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_file.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_install.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_set.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_tracker.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/base.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/self_outdated_check.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/appdirs.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/compat.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/datetime.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/deprecation.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/distutils_args.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/encoding.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/filesystem.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/filetypes.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/glibc.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/hashes.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/logging.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/misc.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/models.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/packaging.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/parallel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/pkg_resources.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/subprocess.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/typing.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/unpacking.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/urls.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/wheel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/git.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/subversion.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 venv/lib/python3.9/site-packages/pip/_internal/wheel_builder.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/appdirs.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/certifi/core.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/compat.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/enums.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/chardet/version.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/colorama/win32.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/contextlib2.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/compat.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/database.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/index.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/locators.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/markers.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/resources.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/util.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/version.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/distro.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/idna/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/idna/codec.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/idna/compat.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/idna/core.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/idna/intranges.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/idna/package_data.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/msgpack/_version.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/_compat.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/_typing.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/markers.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/tags.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/utils.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/packaging/version.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/build.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/check.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/colorlog.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/compat.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/dirtools.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/envbuild.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/meta.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pep517/wrappers.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/progress/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/progress/bar.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/progress/counter.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/progress/spinner.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/pyparsing.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/__version__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/adapters.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/api.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/auth.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/certs.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/compat.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/cookies.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/help.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/hooks.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/models.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/packages.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/structures.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/requests/utils.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/retrying.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/six.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/toml/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/toml/decoder.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/toml/encoder.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/toml/ordered.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/toml/tz.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/request.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/vendor.txt create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_typing.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/tags.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/extern/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/__main__.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/color.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/examples/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/examples/codegen.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/examples/get_floats.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/examples/get_freq_bits.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/examples/gimp-plugin.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/examples/overlay.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/examples/pyaudio_sstv.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/examples/repeater.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/grayscale.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/sstv.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/tests/__init__.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/tests/common.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/tests/test_color.py create mode 100644 venv/lib/python3.9/site-packages/pysstv/tests/test_sstv.py create mode 100644 venv/lib/python3.9/site-packages/setuptools-54.0.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.9/site-packages/setuptools-54.0.0.dist-info/LICENSE create mode 100644 venv/lib/python3.9/site-packages/setuptools-54.0.0.dist-info/METADATA create mode 100644 venv/lib/python3.9/site-packages/setuptools-54.0.0.dist-info/RECORD create mode 100644 venv/lib/python3.9/site-packages/setuptools-54.0.0.dist-info/WHEEL create mode 100644 venv/lib/python3.9/site-packages/setuptools-54.0.0.dist-info/dependency_links.txt create mode 100644 venv/lib/python3.9/site-packages/setuptools-54.0.0.dist-info/entry_points.txt create mode 100644 venv/lib/python3.9/site-packages/setuptools-54.0.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.9/site-packages/setuptools/__init__.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_deprecation_warning.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/__init__.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/_msvccompiler.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/archive_util.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/bcppcompiler.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/ccompiler.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/cmd.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/__init__.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_dumb.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_msi.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_rpm.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_wininst.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/build.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_clib.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_py.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_scripts.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/check.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/clean.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/config.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/install.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_data.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_egg_info.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_headers.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_lib.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_scripts.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/py37compat.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/register.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/sdist.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/command/upload.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/config.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/core.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/cygwinccompiler.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/debug.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/dep_util.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/dir_util.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/dist.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/errors.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/extension.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/fancy_getopt.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/file_util.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/filelist.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/log.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/msvc9compiler.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/msvccompiler.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/py35compat.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/py38compat.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/spawn.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/sysconfig.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/text_file.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/unixccompiler.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/util.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/version.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_distutils/versionpredicate.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_imp.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/__init__.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_compat.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_typing.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/tags.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/archive_util.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/build_meta.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/cli-32.exe create mode 100644 venv/lib/python3.9/site-packages/setuptools/cli-64.exe create mode 100644 venv/lib/python3.9/site-packages/setuptools/cli.exe create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__init__.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/alias.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/bdist_egg.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/bdist_rpm.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/bdist_wininst.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/build_clib.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/build_ext.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/build_py.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/develop.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/dist_info.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/easy_install.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/egg_info.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/install.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/install_egg_info.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/install_lib.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/install_scripts.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/launcher manifest.xml create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/py36compat.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/register.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/rotate.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/saveopts.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/sdist.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/setopt.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/test.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/upload.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/command/upload_docs.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/config.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/dep_util.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/depends.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/dist.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/errors.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/extension.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/extern/__init__.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/glob.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/gui-32.exe create mode 100644 venv/lib/python3.9/site-packages/setuptools/gui-64.exe create mode 100644 venv/lib/python3.9/site-packages/setuptools/gui.exe create mode 100644 venv/lib/python3.9/site-packages/setuptools/installer.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/launch.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/lib2to3_ex.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/monkey.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/msvc.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/namespaces.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/package_index.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/py34compat.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/sandbox.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/script (dev).tmpl create mode 100644 venv/lib/python3.9/site-packages/setuptools/script.tmpl create mode 100644 venv/lib/python3.9/site-packages/setuptools/ssl_support.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/unicode_utils.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/version.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/wheel.py create mode 100644 venv/lib/python3.9/site-packages/setuptools/windows_support.py create mode 100644 venv/lib/python3.9/site-packages/six-1.15.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.9/site-packages/six-1.15.0.dist-info/LICENSE create mode 100644 venv/lib/python3.9/site-packages/six-1.15.0.dist-info/METADATA create mode 100644 venv/lib/python3.9/site-packages/six-1.15.0.dist-info/RECORD create mode 100644 venv/lib/python3.9/site-packages/six-1.15.0.dist-info/WHEEL create mode 100644 venv/lib/python3.9/site-packages/six-1.15.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.9/site-packages/six.py create mode 120000 venv/lib64 create mode 100644 venv/pyvenv.cfg create mode 100644 working/working.wav diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/lewis-crawler-software.iml b/.idea/lewis-crawler-software.iml new file mode 100644 index 0000000..7d4cd97 --- /dev/null +++ b/.idea/lewis-crawler-software.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0dc60d5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..df2c2dd --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/photos/image2vector.svg b/photos/image2vector.svg new file mode 100644 index 0000000..f221254 --- /dev/null +++ b/photos/image2vector.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 7ecfacd..f9e98a0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ PySSTV -picamera \ No newline at end of file diff --git a/sstv.py b/sstv.py index 0853c7a..e8acf4f 100644 --- a/sstv.py +++ b/sstv.py @@ -1,78 +1,92 @@ from shutil import copyfile from PIL import Image, ImageFont, ImageDraw from pysstv import color -from picamera import PiCamera import logging as log +try: + from picamera import PiCamera +except ImportError: + PiCamera = None + + def take_photo(): - # This def is meant to take a photograph from the robot, - # it should include all steps and error checking to raise the mast - # Take the photo, and put the mast down. + """ + All the steps required to take a photograph should be here. Including: + lifting/wiping camera + taking the photo + and saving it. + """ # Copy in the test pattern png (if photo process errors out, this will be used instead) log.debug('Copying test pattern.') copyfile('photos/TEST_PATTERN.jpg', 'working/working.jpg') # Software to take the photo should be here - #copyfile('photos/camera_latest.jpg', 'working/working.jpg') - log.debug('Initalizing camera.') - camera = PiCamera() - log.info('Saving photo.') - camera.capture('working/working.jpg') + # copyfile('photos/camera_latest.jpg', 'working/working.jpg') + log.debug('Initializing camera.') + try: + camera = PiCamera() + log.info('Saving photo.') + camera.capture('working/working.jpg') + log.info('Photo saved.') + except TypeError: + log.info('Unable to capture photo, assuming dev environment.') + def mark_photo(): log.info('Opening photo for viewing.') - raw_img = Image.open("working/working.jpg") # Open the current working image + raw_img = Image.open("working/working.jpg") # Open the current working image log.info('Resizing image.') - img = raw_img.resize((320, 240), Image.ANTIALIAS) # resize it for the radio + img = raw_img.resize((320, 240), Image.ANTIALIAS) # resize it for the radio log.info('Drawing on image.') if False: - TINT_COLOR = (255, 255, 255) # White text bg - TEXT_COLOR = (0,0,0) + TINT_COLOR = (255, 255, 255) # White text bg + TEXT_COLOR = (0, 0, 0) else: - TINT_COLOR = (0, 0, 0) # Black text bg - TEXT_COLOR = (255,255,255) + TINT_COLOR = (0, 0, 0) # Black text bg + TEXT_COLOR = (255, 255, 255) TRANSPARENCY = .25 # Degree of transparency, 0-100% OPACITY = int(255 * TRANSPARENCY) - overlay = Image.new('RGBA', img.size, TINT_COLOR+(0,)) + overlay = Image.new('RGBA', img.size, TINT_COLOR + (0,)) draw = ImageDraw.Draw(overlay) - #bigfont = ImageFont.truetype(r'C:\Users\System-Pc\Desktop\arial.ttf', 20) - #smallfont = ImageFont.truetype(r'C:\Users\System-Pc\Desktop\arial.ttf', 17) - - draw.rectangle(((0, 0), (90, 20)), fill=TINT_COLOR+(OPACITY,)) - #draw.text((0, 0),"KW1FOX",TEXT_COLOR,font=bigfont) # Draw KW1FOX in the top left + # bigfont = ImageFont.truetype(r'C:\Users\System-Pc\Desktop\arial.ttf', 20) + # smallfont = ImageFont.truetype(r'C:\Users\System-Pc\Desktop\arial.ttf', 17) - draw.rectangle(((0, 40), (83, 80)), fill=TINT_COLOR+(OPACITY,)) - #draw.text((0, 40),"day: 25.2",TEXT_COLOR,font=smallfont) - #draw.text((0, 60),"Volt: 13.8",TEXT_COLOR,font=smallfont) - #draw.text((0, 80),"Miles: 1.02",TEXT_COLOR,font=smallfont) + draw.rectangle(((0, 0), (90, 20)), fill=TINT_COLOR + (OPACITY,)) + # draw.text((0, 0),"KW1FOX",TEXT_COLOR,font=bigfont) # Draw KW1FOX in the top left + + draw.rectangle(((0, 40), (83, 80)), fill=TINT_COLOR + (OPACITY,)) + # draw.text((0, 40),"day: 25.2",TEXT_COLOR,font=smallfont) + # draw.text((0, 60),"Volt: 13.8",TEXT_COLOR,font=smallfont) + # draw.text((0, 80),"Miles: 1.02",TEXT_COLOR,font=smallfont) log.info('Converting image color.') img = img.convert("RGBA") img = Image.alpha_composite(img, overlay) img = img.convert("RGB") - img.save('working/working.jpg') # Save the working image + img.save('working/working.jpg') # Save the working image return img + if __name__ == "__main__": log.basicConfig(level=log.DEBUG) # Take photograph. log.info('Taking Photograph') - take_photo() # Saves a photograph to the working/working.jpg location + take_photo() # Saves a photograph to the working/working.jpg location log.info('Done taking photo.') # Draw neccicary text on photo log.info('Drawing on photo.') - radio_photo = mark_photo() # draws text on working/working.jpg and returns a PIL image + radio_photo = mark_photo() # draws text on working/working.jpg and returns a PIL image log.info('Done drawing on photo.') log.info('Creating slowscan.') - slowscan = color.Robot36(radio_photo, 48000, 16) # Image, rate, bits - #slowscan = color.MartinM1(radio_photo, 48000, 16) # Image, rate, bits + # slowscan = color.Robot36(radio_photo, 48000, 16) # Image, rate, bits + slowscan = color.MartinM1(radio_photo, 48000, 16) # Image, rate, bits log.info('Saving out slowscan.') slowscan.write_wav('working/working.wav') - #sstv('working/working.png', 'working/radio.wav', mode='Robot36') + # sstv('working/working.png', 'working/radio.wav', mode='Robot36') diff --git a/venv/bin/Activate.ps1 b/venv/bin/Activate.ps1 new file mode 100644 index 0000000..2fb3852 --- /dev/null +++ b/venv/bin/Activate.ps1 @@ -0,0 +1,241 @@ +<# +.Synopsis +Activate a Python virtual environment for the current PowerShell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +https://go.microsoft.com/fwlink/?LinkID=135170 + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0, 1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} +else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} +else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virutal environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/venv/bin/activate b/venv/bin/activate new file mode 100644 index 0000000..e740688 --- /dev/null +++ b/venv/bin/activate @@ -0,0 +1,66 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="/home/joe/git/lewis-crawler-software/venv" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + PS1="(venv) ${PS1:-}" + export PS1 +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null +fi diff --git a/venv/bin/activate.csh b/venv/bin/activate.csh new file mode 100644 index 0000000..25ac7e0 --- /dev/null +++ b/venv/bin/activate.csh @@ -0,0 +1,25 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . +# Ported to Python 3.3 venv by Andrew Svetlov + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/home/joe/git/lewis-crawler-software/venv" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = "(venv) $prompt" +endif + +alias pydoc python -m pydoc + +rehash diff --git a/venv/bin/activate.fish b/venv/bin/activate.fish new file mode 100644 index 0000000..17868d2 --- /dev/null +++ b/venv/bin/activate.fish @@ -0,0 +1,64 @@ +# This file must be used with "source /bin/activate.fish" *from fish* +# (https://fishshell.com/); you cannot run it directly. + +function deactivate -d "Exit virtual environment and return to normal shell environment" + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + functions -e fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + + set -e VIRTUAL_ENV + if test "$argv[1]" != "nondestructive" + # Self-destruct! + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/home/joe/git/lewis-crawler-software/venv" + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset PYTHONHOME if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # fish uses a function instead of an env var to generate the prompt. + + # Save the current fish_prompt function as the function _old_fish_prompt. + functions -c fish_prompt _old_fish_prompt + + # With the original prompt function renamed, we can override with our own. + function fish_prompt + # Save the return status of the last command. + set -l old_status $status + + # Output the venv prompt; color taken from the blue of the Python logo. + printf "%s%s%s" (set_color 4B8BBE) "(venv) " (set_color normal) + + # Restore the return status of the previous command. + echo "exit $old_status" | . + # Output the original/"old" prompt. + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" +end diff --git a/venv/bin/pip b/venv/bin/pip new file mode 100755 index 0000000..5a820f5 --- /dev/null +++ b/venv/bin/pip @@ -0,0 +1,8 @@ +#!/home/joe/git/lewis-crawler-software/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pip3 b/venv/bin/pip3 new file mode 100755 index 0000000..5a820f5 --- /dev/null +++ b/venv/bin/pip3 @@ -0,0 +1,8 @@ +#!/home/joe/git/lewis-crawler-software/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pip3.9 b/venv/bin/pip3.9 new file mode 100755 index 0000000..5a820f5 --- /dev/null +++ b/venv/bin/pip3.9 @@ -0,0 +1,8 @@ +#!/home/joe/git/lewis-crawler-software/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/python b/venv/bin/python new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/venv/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/venv/bin/python3 b/venv/bin/python3 new file mode 120000 index 0000000..ae65fda --- /dev/null +++ b/venv/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/venv/bin/python3.9 b/venv/bin/python3.9 new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/venv/bin/python3.9 @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/venv/lib/python3.9/site-packages/PIL/BdfFontFile.py b/venv/lib/python3.9/site-packages/PIL/BdfFontFile.py new file mode 100644 index 0000000..102b72e --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/BdfFontFile.py @@ -0,0 +1,110 @@ +# +# 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 . import FontFile, Image + +bdf_slant = { + "R": "Roman", + "I": "Italic", + "O": "Oblique", + "RI": "Reverse Italic", + "RO": "Reverse Oblique", + "OT": "Other", +} + +bdf_spacing = {"P": "Proportional", "M": "Monospaced", "C": "Cell"} + + +def bdf_char(f): + # skip to STARTCHAR + while True: + s = f.readline() + if not s: + return None + if s[:9] == b"STARTCHAR": + break + id = s[9:].strip().decode("ascii") + + # load symbol properties + props = {} + while True: + s = f.readline() + if not s or s[:6] == b"BITMAP": + break + i = s.find(b" ") + props[s[:i].decode("ascii")] = s[i + 1 : -1].decode("ascii") + + # load bitmap + bitmap = [] + while True: + s = f.readline() + if not s or s[:7] == b"ENDCHAR": + break + bitmap.append(s[:-1]) + bitmap = b"".join(bitmap) + + [x, y, l, d] = [int(p) for p in props["BBX"].split()] + [dx, dy] = [int(p) for p in props["DWIDTH"].split()] + + bbox = (dx, dy), (l, -d - y, x + l, -d), (0, 0, x, y) + + try: + im = Image.frombytes("1", (x, y), bitmap, "hex", "1") + except ValueError: + # deal with zero-width characters + im = Image.new("1", (x, y)) + + return id, int(props["ENCODING"]), bbox, im + + +class BdfFontFile(FontFile.FontFile): + """Font file plugin for the X11 BDF format.""" + + def __init__(self, fp): + super().__init__() + + s = fp.readline() + if s[:13] != b"STARTFONT 2.1": + raise SyntaxError("not a valid BDF file") + + props = {} + comments = [] + + while True: + s = fp.readline() + if not s or s[:13] == 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/venv/lib/python3.9/site-packages/PIL/BlpImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/BlpImagePlugin.py new file mode 100644 index 0000000..d5d7c0e --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/BlpImagePlugin.py @@ -0,0 +1,422 @@ +""" +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. +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + +BLP_FORMAT_JPEG = 0 + +BLP_ENCODING_UNCOMPRESSED = 1 +BLP_ENCODING_DXT = 2 +BLP_ENCODING_UNCOMPRESSED_RAW_BGRA = 3 + +BLP_ALPHA_ENCODING_DXT1 = 0 +BLP_ALPHA_ENCODING_DXT3 = 1 +BLP_ALPHA_ENCODING_DXT5 = 7 + + +def unpack_565(i): + return (((i >> 11) & 0x1F) << 3, ((i >> 5) & 0x3F) << 2, (i & 0x1F) << 3) + + +def decode_dxt1(data, alpha=False): + """ + 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 in range(blocks): + # Decode next 8-byte block. + idx = block * 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): + """ + 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 in range(blocks): + idx = block * 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): + """ + 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 in range(blocks): + idx = block * 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 + + +class BlpImageFile(ImageFile.ImageFile): + """ + Blizzard Mipmap Format + """ + + format = "BLP" + format_description = "Blizzard Mipmap Format" + + def _open(self): + self.magic = self.fp.read(4) + self._read_blp_header() + + if self.magic == b"BLP1": + decoder = "BLP1" + self.mode = "RGB" + elif self.magic == b"BLP2": + decoder = "BLP2" + self.mode = "RGBA" if self._blp_alpha_depth else "RGB" + else: + raise BLPFormatError(f"Bad BLP magic {repr(self.magic)}") + + self.tile = [(decoder, (0, 0) + self.size, 0, (self.mode, 0, 1))] + + def _read_blp_header(self): + (self._blp_compression,) = struct.unpack(" mode, rawmode + 1: ("P", "P;1"), + 4: ("P", "P;4"), + 8: ("P", "P"), + 16: ("RGB", "BGR;15"), + 24: ("RGB", "BGR"), + 32: ("RGB", "BGRX"), +} + + +def _accept(prefix): + return prefix[:2] == b"BM" + + +def _dib_accept(prefix): + return i32(prefix) in [12, 40, 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=0, offset=0): + """ Read relevant info about the BMP """ + read, seek = self.fp.read, self.fp.seek + if header: + seek(header) + file_info = {} + # read bmp header size @offset 14 (this is part of the header size) + file_info["header_size"] = i32(read(4)) + file_info["direction"] = -1 + + # -------------------- If requested, read header at a specific position + # read the rest of the bmp header, without its size + header_data = ImageFile._safe_read(self.fp, file_info["header_size"] - 4) + + # -------------------------------------------------- IBM OS/2 Bitmap v1 + # ----- This format has different offsets because of width/height types + 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.RAW + file_info["palette_padding"] = 3 + + # --------------------------------------------- Windows Bitmap v2 to v5 + # v3, OS/2 v2, v4, v5 + elif file_info["header_size"] in (40, 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 + self.info["dpi"] = tuple( + int(x / 39.3701 + 0.5) for x in file_info["pixels_per_meter"] + ) + if file_info["compression"] == self.BITFIELDS: + if len(header_data) >= 52: + for idx, mask in enumerate( + ["r_mask", "g_mask", "b_mask", "a_mask"] + ): + 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 ["r_mask", "g_mask", "b_mask"]: + file_info[mask] = i32(read(4)) + 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: + raise OSError(f"Unsupported BMP header type ({file_info['header_size']})") + + # ------------------ Special case : header is reported 40, which + # ---------------------- is shorter than real size for bpp >= 16 + self._size = file_info["width"], file_info["height"] + + # ------- If color count was not found in the header, compute from bits + file_info["colors"] = ( + file_info["colors"] + if file_info.get("colors", 0) + else (1 << file_info["bits"]) + ) + + # ---------------------- Check bit depth for unusual unsupported values + self.mode, raw_mode = BIT2MODE.get(file_info["bits"], (None, None)) + if self.mode is None: + raise OSError(f"Unsupported BMP pixel depth ({file_info['bits']})") + + # ---------------- Process BMP with Bitfields compression (not palette) + if file_info["compression"] == self.BITFIELDS: + SUPPORTED = { + 32: [ + (0xFF0000, 0xFF00, 0xFF, 0x0), + (0xFF0000, 0xFF00, 0xFF, 0xFF000000), + (0xFF, 0xFF00, 0xFF0000, 0xFF000000), + (0x0, 0x0, 0x0, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 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, (0xFF, 0xFF00, 0xFF0000, 0xFF000000)): "RGBA", + (32, (0xFF0000, 0xFF00, 0xFF, 0xFF000000)): "BGRA", + (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"]] + ): + 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"]] + ): + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgb_mask"])] + else: + raise OSError("Unsupported BMP bitfields layout") + else: + raise OSError("Unsupported BMP bitfields layout") + elif file_info["compression"] == self.RAW: + if file_info["bits"] == 32 and header == 22: # 32-bit .cur offset + raw_mode, self.mode = "BGRA", "RGBA" + else: + raise OSError(f"Unsupported BMP compression ({file_info['compression']})") + + # --------------- 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): + raise OSError(f"Unsupported BMP Palette size ({file_info['colors']})") + else: + padding = file_info["palette_padding"] + palette = read(padding * file_info["colors"]) + greyscale = True + indices = ( + (0, 255) + if file_info["colors"] == 2 + else list(range(file_info["colors"])) + ) + + # ----------------- Check if greyscale and ignore palette if so + for ind, val in enumerate(indices): + rgb = palette[ind * padding : ind * padding + 3] + if rgb != o8(val) * 3: + greyscale = False + + # ------- If all colors are grey, white or black, ditch palette + if greyscale: + 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"] + self.tile = [ + ( + "raw", + (0, 0, file_info["width"], file_info["height"]), + offset or self.fp.tell(), + ( + raw_mode, + ((file_info["width"] * file_info["bits"] + 31) >> 3) & (~3), + file_info["direction"], + ), + ) + ] + + def _open(self): + """ 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): + raise SyntaxError("Not a BMP file") + # 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) + + +# ============================================================================= +# Image plugin for the DIB format (BMP alias) +# ============================================================================= +class DibImageFile(BmpImageFile): + + format = "DIB" + format_description = "Windows Bitmap" + + def _open(self): + 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, fp, filename): + _save(im, fp, filename, False) + + +def _save(im, fp, filename, bitmap_header=True): + try: + rawmode, bits, colors = SAVE[im.mode] + except KeyError as e: + raise OSError(f"cannot write mode {im.mode} as BMP") from e + + info = im.encoderinfo + + dpi = info.get("dpi", (96, 96)) + + # 1 meter == 39.3701 inches + ppm = tuple(map(lambda x: int(x * 39.3701 + 0.5), dpi)) + + stride = ((im.size[0] * bits + 7) // 8 + 3) & (~3) + header = 40 # or 64 for OS/2 version 2 + image = stride * im.size[1] + + # bitmap header + if bitmap_header: + offset = 14 + header + colors * 4 + file_size = offset + image + if file_size > 2 ** 32 - 1: + raise ValueError("File size is too large for the BMP format") + 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 im.mode == "1": + for i in (0, 255): + fp.write(o8(i) * 4) + elif im.mode == "L": + for i in range(256): + fp.write(o8(i) * 4) + elif im.mode == "P": + fp.write(im.im.getpalette("RGB", "BGRX")) + + ImageFile._save(im, fp, [("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_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/venv/lib/python3.9/site-packages/PIL/BufrStubImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/BufrStubImagePlugin.py new file mode 100644 index 0000000..48f21e1 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/BufrStubImagePlugin.py @@ -0,0 +1,73 @@ +# +# 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 . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific BUFR image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:4] == b"BUFR" or prefix[:4] == b"ZCZC" + + +class BufrStubImageFile(ImageFile.StubImageFile): + + format = "BUFR" + format_description = "BUFR" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(4)): + raise SyntaxError("Not a BUFR file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("BUFR save handler not installed") + _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/venv/lib/python3.9/site-packages/PIL/ContainerIO.py b/venv/lib/python3.9/site-packages/PIL/ContainerIO.py new file mode 100644 index 0000000..45e80b3 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ContainerIO.py @@ -0,0 +1,120 @@ +# +# 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. +# + + +import io + + +class ContainerIO: + """ + A file object that provides read access to a part of an existing + file (for example a TAR file). + """ + + def __init__(self, file, offset, length): + """ + Create file object. + + :param file: Existing file. + :param offset: Start of region, in bytes. + :param length: Size of region, in bytes. + """ + self.fh = file + self.pos = 0 + self.offset = offset + self.length = length + self.fh.seek(offset) + + ## + # Always false. + + def isatty(self): + return False + + def seek(self, offset, mode=io.SEEK_SET): + """ + 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. + """ + 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) + + def tell(self): + """ + Get current file pointer. + + :returns: Offset from start of region, in bytes. + """ + return self.pos + + def read(self, n=0): + """ + Read data. + + :param n: Number of bytes to read. If omitted or zero, + read until end of region. + :returns: An 8-bit string. + """ + if n: + n = min(n, self.length - self.pos) + else: + n = self.length - self.pos + if not n: # EOF + return b"" if "b" in self.fh.mode else "" + self.pos = self.pos + n + return self.fh.read(n) + + def readline(self): + """ + Read a line of text. + + :returns: An 8-bit string. + """ + s = b"" if "b" in self.fh.mode else "" + 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: + break + return s + + def readlines(self): + """ + Read multiple lines of text. + + :returns: A list of 8-bit strings. + """ + lines = [] + while True: + s = self.readline() + if not s: + break + lines.append(s) + return lines diff --git a/venv/lib/python3.9/site-packages/PIL/CurImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/CurImagePlugin.py new file mode 100644 index 0000000..42af5ca --- /dev/null +++ b/venv/lib/python3.9/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 . import BmpImagePlugin, Image +from ._binary import i16le as i16 +from ._binary import i32le as i32 + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:4] == b"\0\0\2\0" + + +## +# Image plugin for Windows Cursor files. + + +class CurImageFile(BmpImagePlugin.BmpImageFile): + + format = "CUR" + format_description = "Windows Cursor" + + def _open(self): + + offset = self.fp.tell() + + # check magic + s = self.fp.read(6) + if not _accept(s): + raise SyntaxError("not a CUR file") + + # 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: + raise TypeError("No cursors were found") + + # 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] = d, (0, 0) + self.size, o, a + + return + + +# +# -------------------------------------------------------------------- + +Image.register_open(CurImageFile.format, CurImageFile, _accept) + +Image.register_extension(CurImageFile.format, ".cur") diff --git a/venv/lib/python3.9/site-packages/PIL/DcxImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/DcxImagePlugin.py new file mode 100644 index 0000000..de21db8 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/DcxImagePlugin.py @@ -0,0 +1,89 @@ +# +# 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 . import Image +from ._binary import i32le as i32 +from .PcxImagePlugin import PcxImageFile + +MAGIC = 0x3ADE68B1 # QUIZ: what's this value, then? + + +def _accept(prefix): + 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): + + # Header + s = self.fp.read(4) + if not _accept(s): + raise SyntaxError("not a DCX file") + + # 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 = None + self.n_frames = len(self._offset) + self.is_animated = self.n_frames > 1 + self.seek(0) + + def seek(self, frame): + if not self._seek_check(frame): + return + self.frame = frame + self.fp = self.__fp + self.fp.seek(self._offset[frame]) + PcxImageFile._open(self) + + def tell(self): + return self.frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +Image.register_open(DcxImageFile.format, DcxImageFile, _accept) + +Image.register_extension(DcxImageFile.format, ".dcx") diff --git a/venv/lib/python3.9/site-packages/PIL/DdsImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/DdsImagePlugin.py new file mode 100644 index 0000000..df2d006 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/DdsImagePlugin.py @@ -0,0 +1,190 @@ +""" +A Pillow loader 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/ +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + +# Magic ("DDS ") +DDS_MAGIC = 0x20534444 + +# DDS flags +DDSD_CAPS = 0x1 +DDSD_HEIGHT = 0x2 +DDSD_WIDTH = 0x4 +DDSD_PITCH = 0x8 +DDSD_PIXELFORMAT = 0x1000 +DDSD_MIPMAPCOUNT = 0x20000 +DDSD_LINEARSIZE = 0x80000 +DDSD_DEPTH = 0x800000 + +# DDS caps +DDSCAPS_COMPLEX = 0x8 +DDSCAPS_TEXTURE = 0x1000 +DDSCAPS_MIPMAP = 0x400000 + +DDSCAPS2_CUBEMAP = 0x200 +DDSCAPS2_CUBEMAP_POSITIVEX = 0x400 +DDSCAPS2_CUBEMAP_NEGATIVEX = 0x800 +DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000 +DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000 +DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000 +DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000 +DDSCAPS2_VOLUME = 0x200000 + +# Pixel Format +DDPF_ALPHAPIXELS = 0x1 +DDPF_ALPHA = 0x2 +DDPF_FOURCC = 0x4 +DDPF_PALETTEINDEXED8 = 0x20 +DDPF_RGB = 0x40 +DDPF_LUMINANCE = 0x20000 + + +# dds.h + +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 +DXT1_FOURCC = 0x31545844 + +# DXT3 +DXT3_FOURCC = 0x33545844 + +# DXT5 +DXT5_FOURCC = 0x35545844 + + +# dxgiformat.h + +DXGI_FORMAT_R8G8B8A8_TYPELESS = 27 +DXGI_FORMAT_R8G8B8A8_UNORM = 28 +DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29 +DXGI_FORMAT_BC7_TYPELESS = 97 +DXGI_FORMAT_BC7_UNORM = 98 +DXGI_FORMAT_BC7_UNORM_SRGB = 99 + + +class DdsImageFile(ImageFile.ImageFile): + format = "DDS" + format_description = "DirectDraw Surface" + + def _open(self): + magic, header_size = struct.unpack(" 0: + s = fp.read(min(lengthfile, 100 * 1024)) + if not s: + break + lengthfile -= len(s) + f.write(s) + + # Build Ghostscript command + command = [ + "gs", + "-q", # quiet mode + "-g%dx%d" % size, # set output geometry (pixels) + "-r%fx%f" % res, # set input DPI (dots per inch) + "-dBATCH", # exit after processing + "-dNOPAUSE", # don't pause between pages + "-dSAFER", # safe mode + "-sDEVICE=ppmraw", # ppm driver + 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", + ] + + if gs_windows_binary is not None: + if not gs_windows_binary: + raise OSError("Unable to locate Ghostscript on paths") + command[0] = gs_windows_binary + + # 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) + out_im = Image.open(outfile) + out_im.load() + finally: + try: + os.unlink(outfile) + if infile_temp: + os.unlink(infile_temp) + except OSError: + pass + + im = out_im.im.copy() + out_im.close() + return im + + +class PSFile: + """ + Wrapper for bytesio object that treats either CR or LF as end of line. + """ + + def __init__(self, fp): + self.fp = fp + self.char = None + + def seek(self, offset, whence=io.SEEK_SET): + self.char = None + self.fp.seek(offset, whence) + + def readline(self): + s = self.char or b"" + self.char = None + + c = self.fp.read(1) + while c not in b"\r\n": + s = s + c + c = self.fp.read(1) + + self.char = self.fp.read(1) + # line endings can be 1 or 2 of \r \n, in either order + if self.char in b"\r\n": + self.char = None + + return s.decode("latin-1") + + +def _accept(prefix): + return prefix[:4] == 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): + (length, offset) = self._find_offset(self.fp) + + # Rewrap the open file pointer in something that will + # convert line endings and decode to latin-1. + fp = PSFile(self.fp) + + # go to offset - start of "%!PS" + fp.seek(offset) + + box = None + + self.mode = "RGB" + self._size = 1, 1 # FIXME: huh? + + # + # Load EPS header + + s_raw = fp.readline() + s = s_raw.strip("\r\n") + + while s_raw: + if s: + if len(s) > 255: + raise SyntaxError("not an EPS file") + + try: + m = split.match(s) + except re.error as e: + raise SyntaxError("not an EPS file") from e + + if m: + k, v = m.group(1, 2) + self.info[k] = v + if k == "BoundingBox": + try: + # Note: The DSC spec says that BoundingBox + # fields should be integers, but some drivers + # put floating point values there anyway. + box = [int(float(i)) for i in v.split()] + self._size = box[2] - box[0], box[3] - box[1] + self.tile = [ + ("eps", (0, 0) + self.size, offset, (length, box)) + ] + except Exception: + pass + + else: + m = field.match(s) + if m: + k = m.group(1) + + if k == "EndComments": + break + if k[:8] == "PS-Adobe": + self.info[k[:8]] = 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: + raise OSError("bad EPS header") + + s_raw = fp.readline() + s = s_raw.strip("\r\n") + + if s and s[:1] != "%": + break + + # + # Scan for an "ImageData" descriptor + + while s[:1] == "%": + + if len(s) > 255: + raise SyntaxError("not an EPS file") + + if s[:11] == "%ImageData:": + # Encoded bitmapped image. + x, y, bi, mo = s[11:].split(None, 7)[:4] + + if int(bi) != 8: + break + try: + self.mode = self.mode_map[int(mo)] + except ValueError: + break + + self._size = int(x), int(y) + return + + s = fp.readline().strip("\r\n") + if not s: + break + + if not box: + raise OSError("cannot determine EPS bounding box") + + def _find_offset(self, fp): + + s = fp.read(160) + + if s[:4] == b"%!PS": + # for HEAD without binary preview + fp.seek(0, io.SEEK_END) + length = fp.tell() + offset = 0 + elif i32(s, 0) == 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 + offset = i32(s, 4) + length = i32(s, 8) + else: + raise SyntaxError("not an EPS file") + + return (length, offset) + + def load(self, scale=1): + # Load EPS via Ghostscript + if not self.tile: + return + self.im = Ghostscript(self.tile, self.size, self.fp, scale) + self.mode = self.im.mode + self._size = self.im.size + self.tile = [] + + def load_seek(self, *args, **kwargs): + # we can't incrementally load, so force ImageFile.parser to + # use our custom load method by defining this method. + pass + + +# +# -------------------------------------------------------------------- + + +def _save(im, fp, filename, eps=1): + """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, "image") + elif im.mode == "RGB": + operator = (8, 3, "false 3 colorimage") + elif im.mode == "CMYK": + operator = (8, 4, "false 4 colorimage") + else: + raise ValueError("image mode is not supported") + + base_fp = fp + wrapped_fp = False + if fp != sys.stdout: + fp = io.TextIOWrapper(fp, encoding="latin-1") + wrapped_fp = True + + try: + if eps: + # + # write EPS header + fp.write("%!PS-Adobe-3.0 EPSF-3.0\n") + fp.write("%%Creator: PIL 0.1 EpsEncode\n") + # fp.write("%%CreationDate: %s"...) + fp.write("%%%%BoundingBox: 0 0 %d %d\n" % im.size) + fp.write("%%Pages: 1\n") + fp.write("%%EndComments\n") + fp.write("%%Page: 1 1\n") + fp.write("%%ImageData: %d %d " % im.size) + fp.write('%d %d 0 1 1 "%s"\n' % operator) + + # + # image header + fp.write("gsave\n") + fp.write("10 dict begin\n") + fp.write(f"/buf {im.size[0] * operator[1]} string def\n") + fp.write("%d %d scale\n" % im.size) + fp.write("%d %d 8\n" % im.size) # <= bits + fp.write(f"[{im.size[0]} 0 0 -{im.size[1]} 0 {im.size[1]}]\n") + fp.write("{ currentfile buf readhexstring pop } bind\n") + fp.write(operator[2] + "\n") + if hasattr(fp, "flush"): + fp.flush() + + ImageFile._save(im, base_fp, [("eps", (0, 0) + im.size, 0, None)]) + + fp.write("\n%%%%EndBinary\n") + fp.write("grestore end\n") + if hasattr(fp, "flush"): + fp.flush() + finally: + if wrapped_fp: + fp.detach() + + +# +# -------------------------------------------------------------------- + + +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/venv/lib/python3.9/site-packages/PIL/ExifTags.py b/venv/lib/python3.9/site-packages/PIL/ExifTags.py new file mode 100644 index 0000000..f1c037e --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ExifTags.py @@ -0,0 +1,318 @@ +# +# 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. +""" + + +TAGS = { + # possibly incomplete + 0x000B: "ProcessingSoftware", + 0x00FE: "NewSubfileType", + 0x00FF: "SubfileType", + 0x0100: "ImageWidth", + 0x0101: "ImageLength", + 0x0102: "BitsPerSample", + 0x0103: "Compression", + 0x0106: "PhotometricInterpretation", + 0x0107: "Thresholding", + 0x0108: "CellWidth", + 0x0109: "CellLength", + 0x010A: "FillOrder", + 0x010D: "DocumentName", + 0x010E: "ImageDescription", + 0x010F: "Make", + 0x0110: "Model", + 0x0111: "StripOffsets", + 0x0112: "Orientation", + 0x0115: "SamplesPerPixel", + 0x0116: "RowsPerStrip", + 0x0117: "StripByteCounts", + 0x0118: "MinSampleValue", + 0x0119: "MaxSampleValue", + 0x011A: "XResolution", + 0x011B: "YResolution", + 0x011C: "PlanarConfiguration", + 0x011D: "PageName", + 0x0120: "FreeOffsets", + 0x0121: "FreeByteCounts", + 0x0122: "GrayResponseUnit", + 0x0123: "GrayResponseCurve", + 0x0124: "T4Options", + 0x0125: "T6Options", + 0x0128: "ResolutionUnit", + 0x0129: "PageNumber", + 0x012D: "TransferFunction", + 0x0131: "Software", + 0x0132: "DateTime", + 0x013B: "Artist", + 0x013C: "HostComputer", + 0x013D: "Predictor", + 0x013E: "WhitePoint", + 0x013F: "PrimaryChromaticities", + 0x0140: "ColorMap", + 0x0141: "HalftoneHints", + 0x0142: "TileWidth", + 0x0143: "TileLength", + 0x0144: "TileOffsets", + 0x0145: "TileByteCounts", + 0x014A: "SubIFDs", + 0x014C: "InkSet", + 0x014D: "InkNames", + 0x014E: "NumberOfInks", + 0x0150: "DotRange", + 0x0151: "TargetPrinter", + 0x0152: "ExtraSamples", + 0x0153: "SampleFormat", + 0x0154: "SMinSampleValue", + 0x0155: "SMaxSampleValue", + 0x0156: "TransferRange", + 0x0157: "ClipPath", + 0x0158: "XClipPathUnits", + 0x0159: "YClipPathUnits", + 0x015A: "Indexed", + 0x015B: "JPEGTables", + 0x015F: "OPIProxy", + 0x0200: "JPEGProc", + 0x0201: "JpegIFOffset", + 0x0202: "JpegIFByteCount", + 0x0203: "JpegRestartInterval", + 0x0205: "JpegLosslessPredictors", + 0x0206: "JpegPointTransforms", + 0x0207: "JpegQTables", + 0x0208: "JpegDCTables", + 0x0209: "JpegACTables", + 0x0211: "YCbCrCoefficients", + 0x0212: "YCbCrSubSampling", + 0x0213: "YCbCrPositioning", + 0x0214: "ReferenceBlackWhite", + 0x02BC: "XMLPacket", + 0x1000: "RelatedImageFileFormat", + 0x1001: "RelatedImageWidth", + 0x1002: "RelatedImageLength", + 0x4746: "Rating", + 0x4749: "RatingPercent", + 0x800D: "ImageID", + 0x828D: "CFARepeatPatternDim", + 0x828E: "CFAPattern", + 0x828F: "BatteryLevel", + 0x8298: "Copyright", + 0x829A: "ExposureTime", + 0x829D: "FNumber", + 0x83BB: "IPTCNAA", + 0x8649: "ImageResources", + 0x8769: "ExifOffset", + 0x8773: "InterColorProfile", + 0x8822: "ExposureProgram", + 0x8824: "SpectralSensitivity", + 0x8825: "GPSInfo", + 0x8827: "ISOSpeedRatings", + 0x8828: "OECF", + 0x8829: "Interlace", + 0x882A: "TimeZoneOffset", + 0x882B: "SelfTimerMode", + 0x9000: "ExifVersion", + 0x9003: "DateTimeOriginal", + 0x9004: "DateTimeDigitized", + 0x9101: "ComponentsConfiguration", + 0x9102: "CompressedBitsPerPixel", + 0x9201: "ShutterSpeedValue", + 0x9202: "ApertureValue", + 0x9203: "BrightnessValue", + 0x9204: "ExposureBiasValue", + 0x9205: "MaxApertureValue", + 0x9206: "SubjectDistance", + 0x9207: "MeteringMode", + 0x9208: "LightSource", + 0x9209: "Flash", + 0x920A: "FocalLength", + 0x920B: "FlashEnergy", + 0x920C: "SpatialFrequencyResponse", + 0x920D: "Noise", + 0x9211: "ImageNumber", + 0x9212: "SecurityClassification", + 0x9213: "ImageHistory", + 0x9214: "SubjectLocation", + 0x9215: "ExposureIndex", + 0x9216: "TIFF/EPStandardID", + 0x927C: "MakerNote", + 0x9286: "UserComment", + 0x9290: "SubsecTime", + 0x9291: "SubsecTimeOriginal", + 0x9292: "SubsecTimeDigitized", + 0x9400: "AmbientTemperature", + 0x9401: "Humidity", + 0x9402: "Pressure", + 0x9403: "WaterDepth", + 0x9404: "Acceleration", + 0x9405: "CameraElevationAngle", + 0x9C9B: "XPTitle", + 0x9C9C: "XPComment", + 0x9C9D: "XPAuthor", + 0x9C9E: "XPKeywords", + 0x9C9F: "XPSubject", + 0xA000: "FlashPixVersion", + 0xA001: "ColorSpace", + 0xA002: "ExifImageWidth", + 0xA003: "ExifImageHeight", + 0xA004: "RelatedSoundFile", + 0xA005: "ExifInteroperabilityOffset", + 0xA20B: "FlashEnergy", + 0xA20C: "SpatialFrequencyResponse", + 0xA20E: "FocalPlaneXResolution", + 0xA20F: "FocalPlaneYResolution", + 0xA210: "FocalPlaneResolutionUnit", + 0xA214: "SubjectLocation", + 0xA215: "ExposureIndex", + 0xA217: "SensingMethod", + 0xA300: "FileSource", + 0xA301: "SceneType", + 0xA302: "CFAPattern", + 0xA401: "CustomRendered", + 0xA402: "ExposureMode", + 0xA403: "WhiteBalance", + 0xA404: "DigitalZoomRatio", + 0xA405: "FocalLengthIn35mmFilm", + 0xA406: "SceneCaptureType", + 0xA407: "GainControl", + 0xA408: "Contrast", + 0xA409: "Saturation", + 0xA40A: "Sharpness", + 0xA40B: "DeviceSettingDescription", + 0xA40C: "SubjectDistanceRange", + 0xA420: "ImageUniqueID", + 0xA430: "CameraOwnerName", + 0xA431: "BodySerialNumber", + 0xA432: "LensSpecification", + 0xA433: "LensMake", + 0xA434: "LensModel", + 0xA435: "LensSerialNumber", + 0xA500: "Gamma", + 0xC4A5: "PrintImageMatching", + 0xC612: "DNGVersion", + 0xC613: "DNGBackwardVersion", + 0xC614: "UniqueCameraModel", + 0xC615: "LocalizedCameraModel", + 0xC616: "CFAPlaneColor", + 0xC617: "CFALayout", + 0xC618: "LinearizationTable", + 0xC619: "BlackLevelRepeatDim", + 0xC61A: "BlackLevel", + 0xC61B: "BlackLevelDeltaH", + 0xC61C: "BlackLevelDeltaV", + 0xC61D: "WhiteLevel", + 0xC61E: "DefaultScale", + 0xC61F: "DefaultCropOrigin", + 0xC620: "DefaultCropSize", + 0xC621: "ColorMatrix1", + 0xC622: "ColorMatrix2", + 0xC623: "CameraCalibration1", + 0xC624: "CameraCalibration2", + 0xC625: "ReductionMatrix1", + 0xC626: "ReductionMatrix2", + 0xC627: "AnalogBalance", + 0xC628: "AsShotNeutral", + 0xC629: "AsShotWhiteXY", + 0xC62A: "BaselineExposure", + 0xC62B: "BaselineNoise", + 0xC62C: "BaselineSharpness", + 0xC62D: "BayerGreenSplit", + 0xC62E: "LinearResponseLimit", + 0xC62F: "CameraSerialNumber", + 0xC630: "LensInfo", + 0xC631: "ChromaBlurRadius", + 0xC632: "AntiAliasStrength", + 0xC633: "ShadowScale", + 0xC634: "DNGPrivateData", + 0xC635: "MakerNoteSafety", + 0xC65A: "CalibrationIlluminant1", + 0xC65B: "CalibrationIlluminant2", + 0xC65C: "BestQualityScale", + 0xC65D: "RawDataUniqueID", + 0xC68B: "OriginalRawFileName", + 0xC68C: "OriginalRawFileData", + 0xC68D: "ActiveArea", + 0xC68E: "MaskedAreas", + 0xC68F: "AsShotICCProfile", + 0xC690: "AsShotPreProfileMatrix", + 0xC691: "CurrentICCProfile", + 0xC692: "CurrentPreProfileMatrix", + 0xC6BF: "ColorimetricReference", + 0xC6F3: "CameraCalibrationSignature", + 0xC6F4: "ProfileCalibrationSignature", + 0xC6F6: "AsShotProfileName", + 0xC6F7: "NoiseReductionApplied", + 0xC6F8: "ProfileName", + 0xC6F9: "ProfileHueSatMapDims", + 0xC6FA: "ProfileHueSatMapData1", + 0xC6FB: "ProfileHueSatMapData2", + 0xC6FC: "ProfileToneCurve", + 0xC6FD: "ProfileEmbedPolicy", + 0xC6FE: "ProfileCopyright", + 0xC714: "ForwardMatrix1", + 0xC715: "ForwardMatrix2", + 0xC716: "PreviewApplicationName", + 0xC717: "PreviewApplicationVersion", + 0xC718: "PreviewSettingsName", + 0xC719: "PreviewSettingsDigest", + 0xC71A: "PreviewColorSpace", + 0xC71B: "PreviewDateTime", + 0xC71C: "RawImageDigest", + 0xC71D: "OriginalRawFileDigest", + 0xC71E: "SubTileBlockSize", + 0xC71F: "RowInterleaveFactor", + 0xC725: "ProfileLookTableDims", + 0xC726: "ProfileLookTableData", + 0xC740: "OpcodeList1", + 0xC741: "OpcodeList2", + 0xC74E: "OpcodeList3", + 0xC761: "NoiseProfile", +} +"""Maps EXIF tags to tag names.""" + + +GPSTAGS = { + 0: "GPSVersionID", + 1: "GPSLatitudeRef", + 2: "GPSLatitude", + 3: "GPSLongitudeRef", + 4: "GPSLongitude", + 5: "GPSAltitudeRef", + 6: "GPSAltitude", + 7: "GPSTimeStamp", + 8: "GPSSatellites", + 9: "GPSStatus", + 10: "GPSMeasureMode", + 11: "GPSDOP", + 12: "GPSSpeedRef", + 13: "GPSSpeed", + 14: "GPSTrackRef", + 15: "GPSTrack", + 16: "GPSImgDirectionRef", + 17: "GPSImgDirection", + 18: "GPSMapDatum", + 19: "GPSDestLatitudeRef", + 20: "GPSDestLatitude", + 21: "GPSDestLongitudeRef", + 22: "GPSDestLongitude", + 23: "GPSDestBearingRef", + 24: "GPSDestBearing", + 25: "GPSDestDistanceRef", + 26: "GPSDestDistance", + 27: "GPSProcessingMethod", + 28: "GPSAreaInformation", + 29: "GPSDateStamp", + 30: "GPSDifferential", + 31: "GPSHPositioningError", +} +"""Maps EXIF GPS tags to tag names.""" diff --git a/venv/lib/python3.9/site-packages/PIL/FitsStubImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/FitsStubImagePlugin.py new file mode 100644 index 0000000..c2ce865 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/FitsStubImagePlugin.py @@ -0,0 +1,76 @@ +# +# The Python Imaging Library +# $Id$ +# +# FITS stub adapter +# +# Copyright (c) 1998-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific FITS image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:6] == b"SIMPLE" + + +class FITSStubImageFile(ImageFile.StubImageFile): + + format = "FITS" + format_description = "FITS" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(6)): + raise SyntaxError("Not a FITS file") + + # FIXME: add more sanity checks here; mandatory header items + # include SIMPLE, BITPIX, NAXIS, etc. + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("FITS save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(FITSStubImageFile.format, FITSStubImageFile, _accept) +Image.register_save(FITSStubImageFile.format, _save) + +Image.register_extensions(FITSStubImageFile.format, [".fit", ".fits"]) diff --git a/venv/lib/python3.9/site-packages/PIL/FliImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/FliImagePlugin.py new file mode 100644 index 0000000..f2d4857 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/FliImagePlugin.py @@ -0,0 +1,171 @@ +# +# 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 . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import i32le as i32 +from ._binary import o8 + +# +# decoder + + +def _accept(prefix): + return len(prefix) >= 6 and i16(prefix, 4) in [0xAF11, 0xAF12] + + +## +# 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): + + # HEAD + s = self.fp.read(128) + if not ( + _accept(s) + and i16(s, 14) in [0, 3] # flags + and s[20:22] == b"\x00\x00" # reserved + ): + raise SyntaxError("not an FLI/FLC file") + + # 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) + s = self.fp.read(16) + + if i16(s, 4) == 0xF1FA: + # look for palette chunk + s = self.fp.read(6) + if i16(s, 4) == 11: + self._palette(palette, 2) + elif i16(s, 4) == 4: + self._palette(palette, 0) + + palette = [o8(r) + o8(g) + o8(b) for (r, g, b) in palette] + self.palette = ImagePalette.raw("RGB", b"".join(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, shift): + # 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): + 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): + 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: + raise ValueError(f"cannot seek to frame {frame}") + self.__frame = frame + + # move to next frame + self.fp = self.__fp + self.fp.seek(self.__offset) + + s = self.fp.read(4) + if not s: + raise EOFError + + framesize = i32(s) + + self.decodermaxblock = framesize + self.tile = [("fli", (0, 0) + self.size, self.__offset, None)] + + self.__offset += framesize + + def tell(self): + return self.__frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# registry + +Image.register_open(FliImageFile.format, FliImageFile, _accept) + +Image.register_extensions(FliImageFile.format, [".fli", ".flc"]) diff --git a/venv/lib/python3.9/site-packages/PIL/FontFile.py b/venv/lib/python3.9/site-packages/PIL/FontFile.py new file mode 100644 index 0000000..c5fc80b --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/FontFile.py @@ -0,0 +1,111 @@ +# +# 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. +# + + +import os + +from . import Image, _binary + +WIDTH = 800 + + +def puti16(fp, values): + """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 = None + + def __init__(self): + + self.info = {} + self.glyph = [None] * 256 + + def __getitem__(self, ix): + return self.glyph[ix] + + def compile(self): + """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: + 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 = [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] + # yy = src[3] - src[1] + 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): + """Save font""" + + self.compile() + + # font data + 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/venv/lib/python3.9/site-packages/PIL/FpxImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/FpxImagePlugin.py new file mode 100644 index 0000000..5e38546 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/FpxImagePlugin.py @@ -0,0 +1,242 @@ +# +# 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. +# +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): + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for the FlashPix images. + + +class FpxImageFile(ImageFile.ImageFile): + + format = "FPX" + format_description = "FlashPix" + + def _open(self): + # + # 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: + raise SyntaxError("not an FPX file; invalid OLE file") from e + + if self.ole.root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": + raise SyntaxError("not an FPX file; bad root CLSID") + + self._open_index(1) + + def _open_index(self, index=1): + # + # get the Image Contents Property Set + + prop = self.ole.getproperties( + [f"Data Object Store {index:06d}", "\005Image Contents"] + ) + + # size (highest resolution) + + 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] + + colors = [] + bands = i32(s, 4) + if bands > 4: + raise OSError("Invalid number of bands") + for i in range(bands): + # note: for now, we ignore the "uncalibrated" flag + colors.append(i32(s, 8 + i * 4) & 0x7FFFFFFF) + + self.mode, self.rawmode = MODES[tuple(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=1, subimage=0): + # + # 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: + raise OSError("subimage mismatch") + + # 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): + + compression = i32(s, i + 8) + + if compression == 0: + self.tile.append( + ( + "raw", + (x, y, x + xtile, y + ytile), + i32(s, i) + 28, + (self.rawmode), + ) + ) + + elif compression == 1: + + # FIXME: the fill decoder is not implemented + self.tile.append( + ( + "fill", + (x, y, x + xtile, y + ytile), + 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( + ( + "jpeg", + (x, y, x + xtile, y + ytile), + 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: + raise OSError("unknown/invalid compression") + + x = x + xtile + if x >= xsize: + x, y = 0, y + ytile + if y >= ysize: + break # isn't really required + + self.stream = stream + self.fp = None + + def load(self): + + if not self.fp: + self.fp = self.ole.openstream(self.stream[:2] + ["Subimage 0000 Data"]) + + return ImageFile.ImageFile.load(self) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(FpxImageFile.format, FpxImageFile, _accept) + +Image.register_extension(FpxImageFile.format, ".fpx") diff --git a/venv/lib/python3.9/site-packages/PIL/FtexImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/FtexImagePlugin.py new file mode 100644 index 0000000..9006612 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/FtexImagePlugin.py @@ -0,0 +1,106 @@ +""" +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. +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + +MAGIC = b"FTEX" +FORMAT_DXT1 = 0 +FORMAT_UNCOMPRESSED = 1 + + +class FtexImageFile(ImageFile.ImageFile): + format = "FTEX" + format_description = "Texture File Format (IW2:EOC)" + + def _open(self): + struct.unpack("= 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): + header_size = i32(self.fp.read(4)) + version = i32(self.fp.read(4)) + if header_size < 20: + raise SyntaxError("not a GIMP brush") + if version not in (1, 2): + raise SyntaxError(f"Unsupported GIMP brush version: {version}") + + 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: + raise SyntaxError("not a GIMP brush") + if color_depth not in (1, 4): + raise SyntaxError(f"Unsupported GIMP brush color depth: {color_depth}") + + 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": + raise SyntaxError("not a GIMP brush, bad magic number") + 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): + if self.im: + # Already loaded + return + + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self._data_size)) + + +# +# registry + + +Image.register_open(GbrImageFile.format, GbrImageFile, _accept) +Image.register_extension(GbrImageFile.format, ".gbr") diff --git a/venv/lib/python3.9/site-packages/PIL/GdImageFile.py b/venv/lib/python3.9/site-packages/PIL/GdImageFile.py new file mode 100644 index 0000000..9c34ada --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/GdImageFile.py @@ -0,0 +1,90 @@ +# +# 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 . import ImageFile, ImagePalette, UnidentifiedImageError +from ._binary import i16be as i16 +from ._binary import i32be as i32 + + +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): + + # Header + s = self.fp.read(1037) + + if not i16(s) in [65534, 65535]: + raise SyntaxError("Not a valid GD 2.x .gd file") + + self.mode = "L" # FIXME: "P" + self._size = i16(s, 2), i16(s, 4) + + trueColor = s[6] + trueColorOffset = 2 if trueColor else 0 + + # transparency index + tindex = i32(s, 7 + trueColorOffset) + if tindex < 256: + self.info["transparency"] = tindex + + self.palette = ImagePalette.raw( + "XBGR", s[7 + trueColorOffset + 4 : 7 + trueColorOffset + 4 + 256 * 4] + ) + + self.tile = [ + ("raw", (0, 0) + self.size, 7 + trueColorOffset + 4 + 256 * 4, ("L", 0, 1)) + ] + + +def open(fp, mode="r"): + """ + Load texture from a GD image file. + + :param filename: 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": + raise ValueError("bad mode") + + try: + return GdImageFile(fp) + except SyntaxError as e: + raise UnidentifiedImageError("cannot identify this image file") from e diff --git a/venv/lib/python3.9/site-packages/PIL/GifImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/GifImagePlugin.py new file mode 100644 index 0000000..7c083bd --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/GifImagePlugin.py @@ -0,0 +1,888 @@ +# +# 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. +# + +import itertools +import math +import os +import subprocess + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +# -------------------------------------------------------------------- +# Identify/read GIF files + + +def _accept(prefix): + return prefix[:6] in [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): + s = self.fp.read(1) + if s and s[0]: + return self.fp.read(s[0]) + return None + + def _open(self): + + # Screen + s = self.fp.read(13) + if not _accept(s): + raise SyntaxError("not a GIF file") + + self.info["version"] = s[:6] + self._size = i16(s, 6), i16(s, 8) + self.tile = [] + 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) + for i in range(0, len(p), 3): + if not (i // 3 == p[i] == p[i + 1] == p[i + 2]): + p = ImagePalette.raw("RGB", p) + self.global_palette = self.palette = p + break + + self.__fp = self.fp # FIXME: hack + self.__rewind = self.fp.tell() + self._n_frames = None + self._is_animated = None + self._seek(0) # get ready to read first frame + + @property + def n_frames(self): + if self._n_frames is None: + current = self.tell() + try: + while True: + self.seek(self.tell() + 1) + except EOFError: + self._n_frames = self.tell() + 1 + self.seek(current) + return self._n_frames + + @property + def is_animated(self): + if self._is_animated is None: + if self._n_frames is not None: + self._is_animated = self._n_frames != 1 + else: + current = self.tell() + + try: + self.seek(1) + self._is_animated = True + except EOFError: + self._is_animated = False + + self.seek(current) + return self._is_animated + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + if frame != 0: + 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) + raise EOFError("no more images in GIF file") from e + + def _seek(self, frame): + + if frame == 0: + # rewind + self.__offset = 0 + self.dispose = None + self.dispose_extent = [0, 0, 0, 0] # x0, y0, x1, y1 + self.__frame = -1 + self.__fp.seek(self.__rewind) + self._prev_im = None + self.disposal_method = 0 + else: + # ensure that the previous frame was loaded + if not self.im: + self.load() + + if frame != self.__frame + 1: + raise ValueError(f"cannot seek to frame {frame}") + self.__frame = frame + + self.tile = [] + + self.fp = self.__fp + if self.__offset: + # backup to last frame + self.fp.seek(self.__offset) + while self.data(): + pass + self.__offset = 0 + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + + from copy import copy + + self.palette = copy(self.global_palette) + + info = {} + while True: + + 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: + # + # graphic control extension + # + flags = block[0] + if flags & 1: + info["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 + # + while block: + if "comment" in info: + info["comment"] += block + else: + info["comment"] = block + block = self.data() + continue + elif s[0] == 255: + # + # application extension + # + info["extension"] = block, self.fp.tell() + if block[:11] == b"NETSCAPE2.0": + block = self.data() + if len(block) >= 3 and block[0] == 1: + 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]: + self._size = max(x1, self.size[0]), max(y1, self.size[1]) + self.dispose_extent = x0, y0, x1, y1 + flags = s[8] + + interlace = (flags & 64) != 0 + + if flags & 128: + bits = (flags & 7) + 1 + self.palette = ImagePalette.raw("RGB", self.fp.read(3 << bits)) + + # image data + bits = self.fp.read(1)[0] + self.__offset = self.fp.tell() + self.tile = [ + ("gif", (x0, y0, x1, y1), self.__offset, (bits, interlace)) + ] + break + + else: + pass + # raise OSError, "illegal GIF tag `%x`" % s[0] + + try: + if self.disposal_method < 2: + # do not dispose or none specified + self.dispose = None + elif self.disposal_method == 2: + # replace with background colour + Image._decompression_bomb_check(self.size) + self.dispose = Image.core.fill("P", self.size, self.info["background"]) + else: + # replace with previous contents + if self.im: + self.dispose = self.im.copy() + + # only dispose the extent in this frame + if self.dispose: + self.dispose = self._crop(self.dispose, self.dispose_extent) + except (AttributeError, KeyError): + pass + + if not self.tile: + # self.__fp = None + raise EOFError + + for k in ["transparency", "duration", "comment", "extension", "loop"]: + if k in info: + self.info[k] = info[k] + elif k in self.info: + del self.info[k] + + self.mode = "L" + if self.palette: + self.mode = "P" + + def tell(self): + return self.__frame + + def load_end(self): + ImageFile.ImageFile.load_end(self) + + # if the disposal method is 'do not dispose', transparent + # pixels should show the content of the previous frame + if self._prev_im and self._prev_disposal_method == 1: + # we do this by pasting the updated area onto the previous + # frame which we then use as the current image content + updated = self._crop(self.im, self.dispose_extent) + self._prev_im.paste(updated, self.dispose_extent, updated.convert("RGBA")) + self.im = self._prev_im + self._prev_im = self.im.copy() + self._prev_disposal_method = self.disposal_method + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# -------------------------------------------------------------------- +# Write GIF files + + +RAWMODE = {"1": "L", "L": "L", "P": "P"} + + +def _normalize_mode(im, initial_call=False): + """ + 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. + + UNDONE: What is the point of mucking with the initial call palette, for + an image that shouldn't have a palette, or it would be a mode 'P' and + get returned in the RAWMODE clause. + + :param im: Image object + :param initial_call: Default false, set to true for a single frame. + :returns: Image object + """ + if im.mode in RAWMODE: + im.load() + return im + if Image.getmodebase(im.mode) == "RGB": + if initial_call: + palette_size = 256 + if im.palette: + palette_size = len(im.palette.getdata()[1]) // 3 + return im.convert("P", palette=Image.ADAPTIVE, colors=palette_size) + else: + return im.convert("P") + return im.convert("L") + + +def _normalize_palette(im, palette, info): + """ + 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( + itertools.chain.from_iterable( + zip( + palette.palette[:256], + palette.palette[256:512], + palette.palette[512:768], + ) + ) + ) + + if im.mode == "P": + if not source_palette: + source_palette = im.im.getpalette("RGB")[:768] + 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) + + used_palette_colors = _get_optimize(im, info) + if used_palette_colors is not None: + return im.remap_palette(used_palette_colors, source_palette) + + im.palette.palette = source_palette + return im + + +def _write_single_frame(im, fp, palette): + im_out = _normalize_mode(im, True) + for k, v in im_out.info.items(): + 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, [("gif", (0, 0) + im.size, 0, RAWMODE[im_out.mode])]) + + fp.write(b"\0") # end of image data + + +def _write_multiple_frames(im, fp, palette): + + duration = im.encoderinfo.get("duration", im.info.get("duration")) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + + im_frames = [] + 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(): + im.encoderinfo.setdefault(k, v) + im_frame = _normalize_palette(im_frame, palette, im.encoderinfo) + + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + frame_count += 1 + + if im_frames: + # delta frame + previous = im_frames[-1] + if encoderinfo.get("disposal") == 2: + if background_im is None: + background = _get_background( + im, + im.encoderinfo.get("background", im.info.get("background")), + ) + background_im = Image.new("P", im_frame.size, background) + background_im.putpalette(im_frames[0]["im"].palette) + base_im = background_im + else: + base_im = previous["im"] + if _get_palette_bytes(im_frame) == _get_palette_bytes(base_im): + delta = ImageChops.subtract_modulo(im_frame, base_im) + else: + delta = ImageChops.subtract_modulo( + im_frame.convert("RGB"), base_im.convert("RGB") + ) + bbox = delta.getbbox() + if not bbox: + # This frame is identical to the previous frame + if duration: + previous["encoderinfo"]["duration"] += encoderinfo["duration"] + continue + else: + bbox = None + im_frames.append({"im": im_frame, "bbox": bbox, "encoderinfo": encoderinfo}) + + if len(im_frames) > 1: + 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 + frame_data["encoderinfo"]["include_color_table"] = True + + 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 + elif "duration" in im.encoderinfo and isinstance( + im.encoderinfo["duration"], (list, tuple) + ): + # Since multiple frames will not be written, add together the frame durations + im.encoderinfo["duration"] = sum(im.encoderinfo["duration"]) + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +def _save(im, fp, filename, save_all=False): + # 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["optimize"] = im.encoderinfo.get("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): + interlace = im.encoderinfo.get("interlace", 1) + + # workaround for @PIL153 + if min(im.size) < 16: + interlace = 0 + + return interlace + + +def _write_local_header(fp, im, offset, flags): + transparent_color_exists = False + try: + transparency = im.encoderinfo["transparency"] + except KeyError: + pass + else: + transparency = int(transparency) + # optimize the block away if transparent color is not used + transparent_color_exists = True + + used_palette_colors = _get_optimize(im, im.encoderinfo) + if used_palette_colors is not None: + # adjust the transparency index after optimize + try: + transparency = used_palette_colors.index(transparency) + except ValueError: + transparent_color_exists = False + + if "duration" in im.encoderinfo: + duration = int(im.encoderinfo["duration"] / 10) + else: + duration = 0 + + disposal = int(im.encoderinfo.get("disposal", 0)) + + if transparent_color_exists or duration != 0 or disposal: + packed_flag = 1 if transparent_color_exists else 0 + packed_flag |= disposal << 2 + if not transparent_color_exists: + transparency = 0 + + fp.write( + b"!" + + o8(249) # extension intro + + o8(4) # length + + o8(packed_flag) # packed fields + + o16(duration) # duration + + o8(transparency) # transparency index + + o8(0) + ) + + if "comment" in im.encoderinfo and 1 <= len(im.encoderinfo["comment"]): + fp.write(b"!" + o8(254)) # extension intro + comment = im.encoderinfo["comment"] + if isinstance(comment, str): + comment = comment.encode() + for i in range(0, len(comment), 255): + subblock = comment[i : i + 255] + fp.write(o8(len(subblock)) + subblock) + fp.write(o8(0)) + if "loop" in im.encoderinfo: + number_of_loops = im.encoderinfo["loop"] + fp.write( + b"!" + + o8(255) # extension intro + + o8(11) + + b"NETSCAPE2.0" + + o8(3) + + o8(1) + + o16(number_of_loops) # number of loops + + 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, fp, filename): + + # 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 + 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, info): + """ + 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", 0): + # 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 ( + len(used_palette_colors) <= 128 + and max(used_palette_colors) > len(used_palette_colors) + ): + return used_palette_colors + + +def _get_color_table_size(palette_bytes): + # 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): + """ + 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): + """ + Gets the palette for inclusion in the gif header + + :param im: Image object + :returns: Bytes, len<=768 suitable for inclusion in gif header + """ + return im.palette.palette + + +def _get_background(im, infoBackground): + background = 0 + if infoBackground: + background = infoBackground + if isinstance(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 + background = im.palette.getcolor(background) + return background + + +def _get_global_header(im, info): + """Return a list of strings representing a GIF header""" + + # Header Block + # http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp + + version = b"87a" + for extensionKey in ["transparency", "duration", "loop", "comment"]: + if info and extensionKey in info: + if (extensionKey == "duration" and info[extensionKey] == 0) or ( + extensionKey == "comment" and not (1 <= len(info[extensionKey]) <= 255) + ): + continue + version = b"89a" + break + else: + if im.info.get("version") == b"89a": + 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) + + return [ + 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), + ] + + +def _write_frame_data(fp, im_frame, offset, params): + try: + im_frame.encoderinfo = params + + # local image header + _write_local_header(fp, im_frame, offset, 0) + + ImageFile._save( + im_frame, fp, [("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, palette=None, info=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) + + """ + used_palette_colors = _get_optimize(im, info) + + if info is None: + 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 + + +# To specify duration, add the time in milliseconds to getdata(), +# e.g. getdata(im_frame, duration=1000) +def getdata(im, offset=(0, 0), **params): + """ + Legacy Method + + Return a list of strings representing this image. + The first string is a local image header, the rest contains + encoded image data. + + :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 + + """ + + class Collector: + data = [] + + def write(self, data): + self.data.append(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/venv/lib/python3.9/site-packages/PIL/GimpGradientFile.py b/venv/lib/python3.9/site-packages/PIL/GimpGradientFile.py new file mode 100644 index 0000000..7ab7f99 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/GimpGradientFile.py @@ -0,0 +1,140 @@ +# +# 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 math import log, pi, sin, sqrt + +from ._binary import o8 + +EPSILON = 1e-10 +"""""" # Enable auto-doc for data member + + +def linear(middle, pos): + 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, pos): + return pos ** (log(0.5) / log(max(middle, EPSILON))) + + +def sine(middle, pos): + return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 + + +def sphere_increasing(middle, pos): + return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) + + +def sphere_decreasing(middle, pos): + 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 = None + + def getpalette(self, entries=256): + + 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): + + if fp.readline()[:13] != b"GIMP Gradient": + raise SyntaxError("not a GIMP gradient file") + + 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) + + 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: + raise OSError("cannot handle HSV colour space") + + gradient.append((x0, x1, xm, rgb0, rgb1, segment)) + + self.gradient = gradient diff --git a/venv/lib/python3.9/site-packages/PIL/GimpPaletteFile.py b/venv/lib/python3.9/site-packages/PIL/GimpPaletteFile.py new file mode 100644 index 0000000..10fd3ad --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/GimpPaletteFile.py @@ -0,0 +1,56 @@ +# +# 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. +# + +import re + +from ._binary import o8 + + +class GimpPaletteFile: + """File handler for GIMP's palette format.""" + + rawmode = "RGB" + + def __init__(self, fp): + + self.palette = [o8(i) * 3 for i in range(256)] + + if fp.readline()[:12] != b"GIMP Palette": + raise SyntaxError("not a GIMP palette file") + + for i in range(256): + + s = fp.readline() + if not s: + break + + # skip fields and comment lines + if re.match(br"\w+:|#", s): + continue + if len(s) > 100: + raise SyntaxError("bad palette file") + + v = tuple(map(int, s.split()[:3])) + if len(v) != 3: + raise ValueError("bad palette entry") + + self.palette[i] = o8(v[0]) + o8(v[1]) + o8(v[2]) + + self.palette = b"".join(self.palette) + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/venv/lib/python3.9/site-packages/PIL/GribStubImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/GribStubImagePlugin.py new file mode 100644 index 0000000..b9bdd16 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/GribStubImagePlugin.py @@ -0,0 +1,73 @@ +# +# 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 . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific GRIB image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[0:4] == b"GRIB" and prefix[7] == 1 + + +class GribStubImageFile(ImageFile.StubImageFile): + + format = "GRIB" + format_description = "GRIB" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not a GRIB file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("GRIB save handler not installed") + _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/venv/lib/python3.9/site-packages/PIL/Hdf5StubImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/Hdf5StubImagePlugin.py new file mode 100644 index 0000000..362f2d3 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/Hdf5StubImagePlugin.py @@ -0,0 +1,73 @@ +# +# 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 . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific HDF5 image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:8] == b"\x89HDF\r\n\x1a\n" + + +class HDF5StubImageFile(ImageFile.StubImageFile): + + format = "HDF5" + format_description = "HDF5" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not an HDF file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("HDF5 save handler not installed") + _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/venv/lib/python3.9/site-packages/PIL/IcnsImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/IcnsImagePlugin.py new file mode 100644 index 0000000..2a63d75 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/IcnsImagePlugin.py @@ -0,0 +1,383 @@ +# +# 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. +# +# Copyright (c) 2004 by Bob Ippolito. +# Copyright (c) 2004 by Secret Labs. +# Copyright (c) 2004 by Fredrik Lundh. +# Copyright (c) 2014 by Alastair Houghton. +# +# See the README file for information on usage and redistribution. +# + +import io +import os +import shutil +import struct +import subprocess +import sys +import tempfile + +from PIL import Image, ImageFile, PngImagePlugin, features + +enable_jpeg2k = features.check_codec("jpg_2000") +if enable_jpeg2k: + from PIL import Jpeg2KImagePlugin + +HEADERSIZE = 8 + + +def nextheader(fobj): + return struct.unpack(">4sI", fobj.read(HEADERSIZE)) + + +def read_32t(fobj, start_length, size): + # 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": + raise SyntaxError("Unknown signature, expecting 0x00000000") + return read_32(fobj, (start + 4, length - 4), size) + + +def read_32(fobj, start_length, size): + """ + 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 = byte[0] + if byte & 0x80: + blocksize = byte - 125 + byte = fobj.read(1) + for i in range(blocksize): + data.append(byte) + else: + blocksize = byte + 1 + data.append(fobj.read(blocksize)) + bytesleft -= blocksize + if bytesleft <= 0: + break + if bytesleft != 0: + raise SyntaxError(f"Error reading channel [{repr(bytesleft)} left]") + 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, start_length, size): + # 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, start_length, size): + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(12) + if sig[:8] == b"\x89PNG\x0d\x0a\x1a\x0a": + fobj.seek(start) + im = PngImagePlugin.PngImageFile(fobj) + return {"RGBA": im} + elif ( + sig[:4] == b"\xff\x4f\xff\x51" + or sig[:4] == b"\x0d\x0a\x87\x0a" + or sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ): + if not enable_jpeg2k: + raise ValueError( + "Unsupported icon subimage format (rebuild PIL " + "with JPEG 2000 support to fix this)" + ) + # j2k, jpc or j2c + fobj.seek(start) + jp2kstream = fobj.read(length) + f = io.BytesIO(jp2kstream) + im = Jpeg2KImagePlugin.Jpeg2KImageFile(f) + if im.mode != "RGBA": + im = im.convert("RGBA") + return {"RGBA": im} + else: + raise ValueError("Unsupported icon subimage format") + + +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): + """ + fobj is a file-like object as an icns resource + """ + # signature : (start, length) + self.dct = dct = {} + self.fobj = fobj + sig, filesize = nextheader(fobj) + if sig != b"icns": + raise SyntaxError("not an icns file") + i = HEADERSIZE + while i < filesize: + sig, blocksize = nextheader(fobj) + if blocksize <= 0: + raise SyntaxError("invalid block header") + i += HEADERSIZE + blocksize -= HEADERSIZE + dct[sig] = (i, blocksize) + fobj.seek(blocksize, io.SEEK_CUR) + i += blocksize + + def itersizes(self): + 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): + sizes = self.itersizes() + if not sizes: + raise SyntaxError("No 32bit icon resources found") + return max(sizes) + + def dataforsize(self, size): + """ + 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=None): + if size is None: + size = self.bestsize() + if len(size) == 2: + size = (size[0], size[1], 1) + channels = self.dataforsize(size) + + im = channels.get("RGBA", None) + if im: + return im + + im = channels.get("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): + 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 + def size(self): + return self._size + + @size.setter + def size(self, value): + info_size = value + if info_size not in self.info["sizes"] and len(info_size) == 2: + info_size = (info_size[0], info_size[1], 1) + if ( + info_size not in self.info["sizes"] + and len(info_size) == 3 + and info_size[2] == 1 + ): + simple_sizes = [ + (size[0] * size[2], size[1] * size[2]) for size in self.info["sizes"] + ] + if value in simple_sizes: + info_size = self.info["sizes"][simple_sizes.index(value)] + if info_size not in self.info["sizes"]: + raise ValueError("This is not one of the allowed sizes of this image") + self._size = value + + def load(self): + if len(self.size) == 3: + self.best_size = self.size + self.size = ( + self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2], + ) + + Image.Image.load(self) + if self.im and self.im.size == self.size: + # Already loaded + return + 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 + im.load() + + self.im = im.im + self.mode = im.mode + self.size = im.size + self.load_end() + + +def _save(im, fp, filename): + """ + Saves the image as a series of PNG files, + that are then converted to a .icns file + using the macOS command line utility 'iconutil'. + + macOS only. + """ + if hasattr(fp, "flush"): + fp.flush() + + # create the temporary set of pngs + with tempfile.TemporaryDirectory(".iconset") as iconset: + provided_images = { + im.width: im for im in im.encoderinfo.get("append_images", []) + } + last_w = None + second_path = None + for w in [16, 32, 128, 256, 512]: + prefix = f"icon_{w}x{w}" + + first_path = os.path.join(iconset, prefix + ".png") + if last_w == w: + shutil.copyfile(second_path, first_path) + else: + im_w = provided_images.get(w, im.resize((w, w), Image.LANCZOS)) + im_w.save(first_path) + + second_path = os.path.join(iconset, prefix + "@2x.png") + im_w2 = provided_images.get(w * 2, im.resize((w * 2, w * 2), Image.LANCZOS)) + im_w2.save(second_path) + last_w = w * 2 + + # iconutil -c icns -o {} {} + + fp_only = not filename + if fp_only: + f, filename = tempfile.mkstemp(".icns") + os.close(f) + convert_cmd = ["iconutil", "-c", "icns", "-o", filename, iconset] + convert_proc = subprocess.Popen( + convert_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + + convert_proc.stdout.close() + + retcode = convert_proc.wait() + + if retcode: + raise subprocess.CalledProcessError(retcode, convert_cmd) + + if fp_only: + with open(filename, "rb") as f: + fp.write(f.read()) + + +Image.register_open(IcnsImageFile.format, IcnsImageFile, lambda x: x[:4] == b"icns") +Image.register_extension(IcnsImageFile.format, ".icns") + +if sys.platform == "darwin": + Image.register_save(IcnsImageFile.format, _save) + + Image.register_mime(IcnsImageFile.format, "image/icns") + + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python IcnsImagePlugin.py [file]") + sys.exit() + + with open(sys.argv[1], "rb") as fp: + imf = IcnsImageFile(fp) + for size in imf.info["sizes"]: + imf.size = size + imf.save("out-%s-%s-%s.png" % size) + with Image.open(sys.argv[1]) as im: + im.save("out.png") + if sys.platform == "windows": + os.startfile("out.png") diff --git a/venv/lib/python3.9/site-packages/PIL/IcoImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/IcoImagePlugin.py new file mode 100644 index 0000000..e1bfa7a --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/IcoImagePlugin.py @@ -0,0 +1,328 @@ +# +# 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 + + +import struct +import warnings +from io import BytesIO +from math import ceil, log + +from . import BmpImagePlugin, Image, ImageFile, PngImagePlugin +from ._binary import i16le as i16 +from ._binary import i32le as i32 + +# +# -------------------------------------------------------------------- + +_MAGIC = b"\0\0\1\0" + + +def _save(im, fp, filename): + fp.write(_MAGIC) # (2+2) + sizes = im.encoderinfo.get( + "sizes", + [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)], + ) + width, height = im.size + sizes = filter( + lambda x: False + if (x[0] > width or x[1] > height or x[0] > 256 or x[1] > 256) + else True, + sizes, + ) + sizes = list(sizes) + fp.write(struct.pack("=8bpp) + "reserved": s[3], + "planes": i16(s, 4), + "bpp": i16(s, 6), + "size": i32(s, 8), + "offset": i32(s, 12), + } + + # See Wikipedia + for j in ("width", "height"): + if not icon_header[j]: + icon_header[j] = 256 + + # See Wikipedia notes about color depth. + # We need this just to differ images with equal sizes + icon_header["color_depth"] = ( + icon_header["bpp"] + or ( + icon_header["nb_color"] != 0 + and ceil(log(icon_header["nb_color"], 2)) + ) + or 256 + ) + + icon_header["dim"] = (icon_header["width"], icon_header["height"]) + icon_header["square"] = icon_header["width"] * icon_header["height"] + + 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['width']) + self.entry = sorted(self.entry, key=lambda x: x["square"]) + self.entry.reverse() + + def sizes(self): + """ + Get a list of all available icon sizes and color depths. + """ + return {(h["width"], h["height"]) for h in self.entry} + + def getentryindex(self, size, bpp=False): + 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, bpp=False): + """ + Get an image from the icon + """ + return self.frame(self.getentryindex(size, bpp)) + + def frame(self, idx): + """ + 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"]) + + if data[:8] == PngImagePlugin._MAGIC: + # png frame + im = PngImagePlugin.PngImageFile(self.buf) + 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] = d, (0, 0) + im.size, o, a + + # figure out where AND mask image starts + mode = a[0] + bpp = 8 + for k, v in BmpImagePlugin.BIT2MODE.items(): + if mode == v[1]: + bpp = k + break + + if 32 == bpp: + # 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 + mask = Image.frombuffer( + "L", # 8bpp + im.size, # (w, h) + alpha_bytes, # source chars + "raw", # raw decoder + ("L", 0, -1), # 8bpp inverted, unpadded, reversed + ) + 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 + + and_mask_offset = o + int(im.size[0] * im.size[1] * (bpp / 8.0)) + total_bytes = int((w * im.size[1]) / 8) + + self.buf.seek(and_mask_offset) + mask_data = self.buf.read(total_bytes) + + # convert raw data to image + 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 + ) + + # now we have two images, im is XOR image and mask is AND image + + # apply mask image as alpha channel + 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. + + 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): + self.ico = IcoFile(self.fp) + self.info["sizes"] = self.ico.sizes() + self.size = self.ico.entry[0]["dim"] + self.load() + + @property + def size(self): + return self._size + + @size.setter + def size(self, value): + if value not in self.info["sizes"]: + raise ValueError("This is not one of the allowed sizes of this image") + self._size = value + + def load(self): + if self.im and self.im.size == self.size: + # Already loaded + return + 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.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 + + def load_seek(self): + # 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/venv/lib/python3.9/site-packages/PIL/ImImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/ImImagePlugin.py new file mode 100644 index 0000000..1dfc808 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImImagePlugin.py @@ -0,0 +1,376 @@ +# +# 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. +# + + +import os +import re + +from . import Image, ImageFile, ImagePalette + +# -------------------------------------------------------------------- +# 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": ("RGBX", "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 i in range(2, 33): + OPEN[f"L*{i} image"] = ("F", f"F;{i}") + + +# -------------------------------------------------------------------- +# Read IM directory + +split = re.compile(br"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") + + +def number(s): + 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): + + # 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): + raise SyntaxError("not an IM file") + 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: + raise SyntaxError("not an IM file") + + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] == b"\n": + s = s[:-1] + + try: + m = split.match(s) + except re.error as e: + raise SyntaxError("not an IM file") 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: + + raise SyntaxError( + "Syntax error in IM header: " + s.decode("ascii", "replace") + ) + + if not n: + raise SyntaxError("Not an IM file") + + # Basic attributes + self._size = self.info[SIZE] + self.mode = self.info[MODE] + + # Skip forward to start of image data + while s and s[0:1] != b"\x1A": + s = self.fp.read(1) + if not s: + raise SyntaxError("File truncated") + + 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[:2] == "F;": + + # ifunc95 formats + try: + # use bit decoder (if necessary) + bits = int(self.rawmode[2:]) + if bits not in [8, 16, 32]: + self.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 = [ + ("raw", (0, 0) + self.size, offs, ("G", 0, -1)), + ("raw", (0, 0) + self.size, offs + size, ("R", 0, -1)), + ("raw", (0, 0) + self.size, offs + 2 * size, ("B", 0, -1)), + ] + else: + # LabEye/IFUNC files + self.tile = [("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1))] + + @property + def n_frames(self): + return self.info[FRAMES] + + @property + def is_animated(self): + return self.info[FRAMES] > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + + 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 = [("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1))] + + def tell(self): + return self.frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# -------------------------------------------------------------------- +# 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, fp, filename): + + try: + image_type, rawmode = SAVE[im.mode] + except KeyError as e: + raise ValueError(f"Cannot save {im.mode} images as IM") 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 + 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(("Image size (x*y): %d*%d\r\n" % im.size).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"]: + fp.write(im.im.getpalette("RGB", "RGB;L")) # 768 bytes + ImageFile._save(im, fp, [("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/venv/lib/python3.9/site-packages/PIL/Image.py b/venv/lib/python3.9/site-packages/PIL/Image.py new file mode 100644 index 0000000..e2540a2 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/Image.py @@ -0,0 +1,3491 @@ +# +# 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. +# + +import atexit +import builtins +import io +import logging +import math +import numbers +import os +import struct +import sys +import tempfile +import warnings +import xml.etree.ElementTree +from collections.abc import Callable, MutableMapping +from pathlib import Path + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION is deprecated and will be removed in a future release. +# Use __version__ instead. +from . import ( + ImageMode, + TiffTags, + UnidentifiedImageError, + __version__, + _plugins, + _raise_version_warning, +) +from ._binary import i32le +from ._util import deferred_error, isPath + +if sys.version_info >= (3, 7): + + def __getattr__(name): + if name == "PILLOW_VERSION": + _raise_version_warning() + return __version__ + raise AttributeError(f"module '{__name__}' has no attribute '{name}'") + + +else: + + from . import PILLOW_VERSION + + # Silence warning + assert PILLOW_VERSION + + +logger = logging.getLogger(__name__) + + +class DecompressionBombWarning(RuntimeWarning): + pass + + +class DecompressionBombError(Exception): + pass + + +# Limit to around a quarter gigabyte for a 24-bit (3 bpp) image +MAX_IMAGE_PIXELS = 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): + raise ImportError( + "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__}" + ) + +except ImportError as v: + core = deferred_error(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 + + +# works everywhere, win for pypy, not cpython +USE_CFFI_ACCESS = hasattr(sys, "pypy_version_info") +try: + import cffi +except ImportError: + cffi = None + + +def isImageType(t): + """ + 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 + """ + return hasattr(t, "im") + + +# +# Constants + +NONE = 0 + +# transpose +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) +AFFINE = 0 +EXTENT = 1 +PERSPECTIVE = 2 +QUAD = 3 +MESH = 4 + +# resampling filters (also defined in Imaging.h) +NEAREST = NONE = 0 +BOX = 4 +BILINEAR = LINEAR = 2 +HAMMING = 5 +BICUBIC = CUBIC = 3 +LANCZOS = ANTIALIAS = 1 + +_filters_support = {BOX: 0.5, BILINEAR: 1.0, HAMMING: 1.0, BICUBIC: 2.0, LANCZOS: 3.0} + + +# dithers +NEAREST = NONE = 0 +ORDERED = 1 # Not yet implemented +RASTERIZE = 2 # Not yet implemented +FLOYDSTEINBERG = 3 # default + +# palettes/quantizers +WEB = 0 +ADAPTIVE = 1 + +MEDIANCUT = 0 +MAXCOVERAGE = 1 +FASTOCTREE = 2 +LIBIMAGEQUANT = 3 + +# categories +NORMAL = 0 +SEQUENCE = 1 +CONTAINER = 2 + +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 + +ID = [] +OPEN = {} +MIME = {} +SAVE = {} +SAVE_ALL = {} +EXTENSION = {} +DECODERS = {} +ENCODERS = {} + +# -------------------------------------------------------------------- +# Modes supported by this version + +_MODEINFO = { + # NOTE: this table will be removed in future versions. use + # getmode* functions or ImageMode descriptors instead. + # official modes + "1": ("L", "L", ("1",)), + "L": ("L", "L", ("L",)), + "I": ("L", "I", ("I",)), + "F": ("L", "F", ("F",)), + "P": ("P", "L", ("P",)), + "RGB": ("RGB", "L", ("R", "G", "B")), + "RGBX": ("RGB", "L", ("R", "G", "B", "X")), + "RGBA": ("RGB", "L", ("R", "G", "B", "A")), + "CMYK": ("RGB", "L", ("C", "M", "Y", "K")), + "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr")), + "LAB": ("RGB", "L", ("L", "A", "B")), + "HSV": ("RGB", "L", ("H", "S", "V")), + # Experimental modes include I;16, I;16L, I;16B, RGBa, BGR;15, and + # BGR;24. Use these modes only if you know exactly what you're + # doing... +} + +if sys.byteorder == "little": + _ENDIAN = "<" +else: + _ENDIAN = ">" + +_MODE_CONV = { + # official modes + "1": ("|b1", None), # Bits need to be extended to bytes + "L": ("|u1", None), + "LA": ("|u1", 2), + "I": (_ENDIAN + "i4", None), + "F": (_ENDIAN + "f4", None), + "P": ("|u1", None), + "RGB": ("|u1", 3), + "RGBX": ("|u1", 4), + "RGBA": ("|u1", 4), + "CMYK": ("|u1", 4), + "YCbCr": ("|u1", 3), + "LAB": ("|u1", 3), # UNDONE - unsigned |u1i1i1 + "HSV": ("|u1", 3), + # I;16 == I;16L, and I;32 == I;32L + "I;16": ("u2", None), + "I;16L": ("i2", None), + "I;16LS": ("u4", None), + "I;32L": ("i4", None), + "I;32LS": ("= 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 + # try: + # import TiffImagePlugin + # assert TiffImagePlugin + # except ImportError: + # pass + + _initialized = 1 + + +def init(): + """ + Explicitly initializes the Python Imaging Library. This function + loads all available file format drivers. + """ + + global _initialized + if _initialized >= 2: + return 0 + + for plugin in _plugins: + try: + logger.debug("Importing %s", plugin) + __import__(f"PIL.{plugin}", globals(), locals(), []) + except ImportError as e: + logger.debug("Image: failed to import %s: %s", plugin, e) + + if OPEN or SAVE: + _initialized = 2 + return 1 + + +# -------------------------------------------------------------------- +# Codec factories (used by tobytes/frombytes and ImageFile.load) + + +def _getdecoder(mode, decoder_name, args, extra=()): + + # 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, decoder_name + "_decoder") + except AttributeError as e: + raise OSError(f"decoder {decoder_name} not available") from e + return decoder(mode, *args + extra) + + +def _getencoder(mode, encoder_name, args, extra=()): + + # 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, encoder_name + "_encoder") + except AttributeError as e: + raise OSError(f"encoder {encoder_name} not available") from e + return encoder(mode, *args + extra) + + +# -------------------------------------------------------------------- +# Simple expression analyzer + + +def coerce_e(value): + return value if isinstance(value, _E) else _E(value) + + +class _E: + def __init__(self, data): + self.data = data + + def __add__(self, other): + return _E((self.data, "__add__", coerce_e(other).data)) + + def __mul__(self, other): + return _E((self.data, "__mul__", coerce_e(other).data)) + + +def _getscaleoffset(expr): + stub = ["stub"] + data = expr(_E(stub)).data + try: + (a, b, c) = data # simplified syntax + if a is stub and b == "__mul__" and isinstance(c, numbers.Number): + return c, 0.0 + if a is stub and b == "__add__" and isinstance(c, numbers.Number): + return 1.0, c + except TypeError: + pass + try: + ((a, b, c), d, e) = data # full syntax + if ( + a is stub + and b == "__mul__" + and isinstance(c, numbers.Number) + and d == "__add__" + and isinstance(e, numbers.Number) + ): + return c, e + except TypeError: + pass + raise ValueError("illegal expression") + + +# -------------------------------------------------------------------- +# Implementation wrapper + + +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 = None + format_description = None + _close_exclusive_fp_after_loading = True + + def __init__(self): + # FIXME: take "new" parameters / other image? + # FIXME: turn mode and size into delegating properties? + self.im = None + self.mode = "" + self._size = (0, 0) + self.palette = None + self.info = {} + self.category = NORMAL + self.readonly = 0 + self.pyaccess = None + self._exif = None + + @property + def width(self): + return self.size[0] + + @property + def height(self): + return self.size[1] + + @property + def size(self): + return self._size + + def _new(self, im): + 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): + if hasattr(self, "fp") and getattr(self, "_exclusive_fp", False): + if hasattr(self, "_close__fp"): + self._close__fp() + if self.fp: + self.fp.close() + self.fp = None + + def close(self): + """ + 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 only required to close images that 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: + if hasattr(self, "_close__fp"): + self._close__fp() + if self.fp: + self.fp.close() + self.fp = None + except Exception as msg: + logger.debug("Error closing: %s", msg) + + if getattr(self, "map", None): + self.map = 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 = deferred_error(ValueError("Operation on closed image")) + + def _copy(self): + self.load() + self.im = self.im.copy() + self.pyaccess = None + self.readonly = 0 + + def _ensure_mutable(self): + if self.readonly: + self._copy() + else: + self.load() + + def _dump(self, file=None, format=None, **options): + suffix = "" + if format: + suffix = "." + 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): + return ( + self.__class__ is other.__class__ + and self.mode == other.mode + and self.size == other.size + and self.info == other.info + and self.category == other.category + and self.readonly == other.readonly + and self.getpalette() == other.getpalette() + and self.tobytes() == other.tobytes() + ) + + def __repr__(self): + return "<%s.%s image mode=%s size=%dx%d at 0x%X>" % ( + self.__class__.__module__, + self.__class__.__name__, + self.mode, + self.size[0], + self.size[1], + id(self), + ) + + def _repr_png_(self): + """iPython display hook support + + :returns: png version of the image as bytes + """ + b = io.BytesIO() + try: + self.save(b, "PNG") + except Exception as e: + raise ValueError("Could not save to PNG for display") from e + return b.getvalue() + + @property + def __array_interface__(self): + # numpy array interface support + new = {} + shape, typestr = _conv_type_shape(self) + new["shape"] = shape + new["typestr"] = typestr + new["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() + return new + + def __getstate__(self): + return [self.info, self.mode, self.size, self.getpalette(), self.tobytes()] + + def __setstate__(self, state): + Image.__init__(self) + self.tile = [] + info, mode, size, palette, data = state + 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="raw", *args): + """ + Return image as a bytes object. + + .. warning:: + + This method returns the raw image data from the 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. + :param args: Extra arguments to the encoder. + :returns: A :py:class:`bytes` object. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if encoder_name == "raw" and args == (): + args = self.mode + + self.load() + + # unpack data + e = _getencoder(self.mode, encoder_name, args) + e.setimage(self.im) + + bufsize = max(65536, self.size[0] * 4) # see RawEncode.c + + data = [] + while True: + l, s, d = e.encode(bufsize) + data.append(d) + if s: + break + if s < 0: + raise RuntimeError(f"encoder error {s} in tobytes") + + return b"".join(data) + + def tobitmap(self, name="image"): + """ + 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": + raise ValueError("not a bitmap") + 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, decoder_name="raw", *args): + """ + 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. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + # default format + if decoder_name == "raw" and args == (): + args = self.mode + + # unpack data + d = _getdecoder(self.mode, decoder_name, args) + d.setimage(self.im) + s = d.decode(data) + + if s[0] >= 0: + raise ValueError("not enough image data") + if s[1] != 0: + raise ValueError("cannot decode image data") + + def load(self): + """ + 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: :ref:`PixelAccess` or :py:class:`PIL.PyAccess` + """ + if self.im and self.palette and self.palette.dirty: + # realize palette + mode, arr = self.palette.getdata() + if mode == "RGBA": + mode = "RGB" + self.info["transparency"] = arr[3::4] + arr = bytes( + value for (index, value) in enumerate(arr) if index % 4 != 3 + ) + self.im.putpalette(mode, arr) + self.palette.dirty = 0 + self.palette.rawmode = None + if "transparency" in self.info: + 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.mode = "RGB" + + if self.im: + if cffi and USE_CFFI_ACCESS: + if self.pyaccess: + return self.pyaccess + from . import PyAccess + + self.pyaccess = PyAccess.new(self, self.readonly) + if self.pyaccess: + return self.pyaccess + return self.im.pixel_access(self.readonly) + + def verify(self): + """ + 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=None, matrix=None, dither=None, palette=WEB, colors=256): + """ + 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. + + The current version supports all possible conversions between + "L", "RGB" and "CMYK." The ``matrix`` argument only supports "L" + and "RGB". + + When translating a color image to greyscale (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 greyscale ("L") or "RGB" + image into a bilevel (mode "1") image uses Floyd-Steinberg + dither to approximate the original image luminosity levels. If + dither is :data:`NONE`, all values larger than 128 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. + + :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:`NONE` or :data:`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:`WEB` or :data:`ADAPTIVE`. + :param colors: Number of colors to use for the :data:`ADAPTIVE` palette. + Defaults to 256. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if not mode and self.mode == "P": + # determine default mode + if self.palette: + mode = self.palette.mode + else: + mode = "RGB" + if not mode or (mode == self.mode and not matrix): + return self.copy() + + has_transparency = self.info.get("transparency") is not None + if matrix: + # matrix conversion + if mode not in ("L", "RGB"): + raise ValueError("illegal conversion") + im = self.im.convert_matrix(mode, matrix) + new = self._new(im) + if has_transparency and self.im.bands == 3: + transparency = new.info["transparency"] + + def convert_transparency(m, v): + v = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * 0.5 + return max(0, min(255, int(v))) + + 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(0, len(transparency)) + ] + ) + new.info["transparency"] = transparency + return new + + 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", "RGB") and mode == "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 = Image()._new(core.new(self.mode, (1, 1))) + if self.mode == "P": + trns_im.putpalette(self.palette) + if isinstance(t, tuple): + try: + t = trns_im.palette.getcolor(t) + except Exception as e: + raise ValueError( + "Couldn't allocate a palette color for transparency" + ) from e + 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 == "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: + raise ValueError("Transparency for P mode should be bytes or int") + + if mode == "P" and palette == ADAPTIVE: + im = self.im.quantize(colors) + new = self._new(im) + from . import ImagePalette + + new.palette = ImagePalette.raw("RGB", new.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.info["transparency"] + if trns is not None: + try: + new.info["transparency"] = new.palette.getcolor(trns) + except Exception: + # if we can't make a transparent color, don't leave the old + # transparency hanging around to mess us up. + del new.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + return new + + # colorspace conversion + if dither is None: + dither = FLOYDSTEINBERG + + try: + im = self.im.convert(mode, dither) + except ValueError: + try: + # normalize source image and try again + im = self.im.convert(getmodebase(self.mode)) + im = im.convert(mode, dither) + except KeyError as e: + raise ValueError("illegal conversion") from e + + new_im = self._new(im) + 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": + try: + new_im.info["transparency"] = new_im.palette.getcolor(trns) + except Exception: + del new_im.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + else: + new_im.info["transparency"] = trns + return new_im + + def quantize(self, colors=256, method=None, kmeans=0, palette=None, dither=1): + """ + Convert the image to 'P' mode with the specified number + of colors. + + :param colors: The desired number of colors, <= 256 + :param method: :data:`MEDIANCUT` (median cut), + :data:`MAXCOVERAGE` (maximum coverage), + :data:`FASTOCTREE` (fast octree), + :data:`LIBIMAGEQUANT` (libimagequant; check support using + :py:func:`PIL.features.check_feature` + with ``feature="libimagequant"``). + :param kmeans: Integer + :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:`NONE` or :data:`FLOYDSTEINBERG` (default). + Default: 1 (legacy setting) + :returns: A new image + + """ + + self.load() + + if method is None: + # defaults: + method = 0 + if self.mode == "RGBA": + method = 2 + + if self.mode == "RGBA" and method not in (2, 3): + # Caller specified an invalid mode. + raise ValueError( + "Fast Octree (method == 2) and libimagequant (method == 3) " + "are the only valid methods for quantizing RGBA images" + ) + + if palette: + # use palette from reference image + palette.load() + if palette.mode != "P": + raise ValueError("bad mode for palette image") + if self.mode != "RGB" and self.mode != "L": + raise ValueError( + "only RGB or L mode images can be quantized to a palette" + ) + im = self.im.convert("P", dither, palette.im) + return self._new(im) + + im = self._new(self.im.quantize(colors, method, kmeans)) + + from . import ImagePalette + + mode = im.im.getpalettemode() + im.palette = ImagePalette.ImagePalette(mode, im.im.getpalette(mode, mode)) + + return im + + def copy(self): + """ + 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=None): + """ + 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() + + self.load() + return self._new(self._crop(self.im, box)) + + def _crop(self, im, box): + """ + 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, size): + """ + 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 greyscale 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. + """ + pass + + def _expand(self, xmargin, ymargin=None): + if ymargin is None: + ymargin = xmargin + self.load() + return self._new(self.im.expand(xmargin, ymargin, 0)) + + def filter(self, filter): + """ + 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 isinstance(filter, Callable): + filter = filter() + if not hasattr(filter, "filter"): + raise TypeError( + "filter argument should be ImageFilter.Filter instance or class" + ) + + multiband = isinstance(filter, ImageFilter.MultibandFilter) + if self.im.bands == 1 or multiband: + return self._new(filter.filter(self.im)) + + ims = [] + for c in range(self.im.bands): + ims.append(self._new(filter.filter(self.im.getband(c)))) + return merge(self.mode, ims) + + def getbands(self): + """ + 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): + """ + Calculates the bounding box of the non-zero regions in the + image. + + :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() + + def getcolors(self, maxcolors=256): + """ + Returns a list of colors used in this image. + + :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 = [] + for i in range(256): + if h[i]: + out.append((h[i], i)) + if len(out) > maxcolors: + return None + return out + return self.im.getcolors(maxcolors) + + def getdata(self, band=None): + """ + 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): + """ + Gets the 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: + extrema = [] + for i in range(self.im.bands): + extrema.append(self.im.getband(i).getextrema()) + return tuple(extrema) + return self.im.getextrema() + + def getexif(self): + if self._exif is None: + self._exif = Exif() + + exif_info = self.info.get("exif") + if exif_info is None and "Raw profile type exif" in self.info: + exif_info = bytes.fromhex( + "".join(self.info["Raw profile type exif"].split("\n")[3:]) + ) + self._exif.load(exif_info) + + # XMP tags + if 0x0112 not in self._exif: + xmp_tags = self.info.get("XML:com.adobe.xmp") + if xmp_tags: + root = xml.etree.ElementTree.fromstring(xmp_tags) + for elem in root.iter(): + if elem.tag.endswith("}Description"): + orientation = elem.attrib.get( + "{http://ns.adobe.com/tiff/1.0/}Orientation" + ) + if orientation: + self._exif[0x0112] = int(orientation) + break + + return self._exif + + def getim(self): + """ + Returns a capsule that points to the internal image memory. + + :returns: A capsule object. + """ + + self.load() + return self.im.ptr + + def getpalette(self): + """ + Returns the image palette as a list. + + :returns: A list of color values [r, g, b, ...], or None if the + image has no palette. + """ + + self.load() + try: + return list(self.im.getpalette()) + except ValueError: + return None # no palette + + def getpixel(self, xy): + """ + 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() + if self.pyaccess: + return self.pyaccess.getpixel(xy) + return self.im.getpixel(xy) + + def getprojection(self): + """ + 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=None, extrema=None): + """ + 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. 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 greyscale ("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 greyscale 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"): + if extrema is None: + extrema = self.getextrema() + return self.im.histogram(extrema) + return self.im.histogram() + + def entropy(self, mask=None, extrema=None): + """ + Calculates and returns the entropy for the image. + + A bilevel image (mode "1") is treated as a greyscale ("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 greyscale 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"): + if extrema is None: + extrema = self.getextrema() + return self.im.entropy(extrema) + return self.im.entropy() + + def paste(self, im, box=None, mask=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" or "RGBA" + images (in the latter case, 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 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 isImageType(box) and mask is None: + # 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 isImageType(im): + size = im.size + elif isImageType(mask): + size = mask.size + else: + # FIXME: use self.size here? + raise ValueError("cannot determine region size; use 4-item box") + box += (box[0] + size[0], box[1] + size[1]) + + if isinstance(im, str): + from . import ImageColor + + im = ImageColor.getcolor(im, self.mode) + + elif isImageType(im): + im.load() + if self.mode != im.mode: + if self.mode != "RGB" or im.mode not in ("RGBA", "RGBa"): + # should use an adapter for this! + im = im.convert(self.mode) + im = im.im + + self._ensure_mutable() + + if mask: + mask.load() + self.im.paste(im, box, mask.im) + else: + self.im.paste(im, box) + + def alpha_composite(self, im, dest=(0, 0), source=(0, 0)): + """'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)): + raise ValueError("Source must be a tuple") + if not isinstance(dest, (list, tuple)): + raise ValueError("Destination must be a tuple") + if not len(source) in (2, 4): + raise ValueError("Source must be a 2 or 4-tuple") + if not len(dest) == 2: + raise ValueError("Destination must be a 2-tuple") + if min(source) < 0: + raise ValueError("Source must be non-negative") + if min(dest) < 0: + raise ValueError("Destination must be non-negative") + + if len(source) == 2: + source = source + im.size + + # over image, crop if it's not the whole thing. + if source == (0, 0) + im.size: + overlay = im + else: + overlay = im.crop(source) + + # target for the paste + box = 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, mode=None): + """ + 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, data): + # Return result + :param mode: Output mode (default is same as input). In the + current version, 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) + return self._new(self.im.point_transform(scale, offset)) + # for other modes, convert the function to a table + lut = [lut(i) for i in range(256)] * self.im.bands + + if self.mode == "F": + # FIXME: _imaging returns a confusing error message for this case + raise ValueError("point operation not supported for this mode") + + return self._new(self.im.point(lut, mode)) + + def putalpha(self, alpha): + """ + 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 or + other color value. + """ + + 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"): + raise ValueError from e # sanity check + self.im = im + self.pyaccess = None + self.mode = self.im.mode + except KeyError as e: + raise ValueError("illegal image mode") from e + + if self.mode in ("LA", "PA"): + band = 1 + else: + band = 3 + + if isImageType(alpha): + # alpha layer + if alpha.mode not in ("1", "L"): + raise ValueError("illegal image mode") + 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, scale=1.0, offset=0.0): + """ + Copies pixel data to this image. This method copies data from a + sequence object into the image, starting at the upper left + corner (0, 0), and continuing 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 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, rawmode="RGB"): + """ + Attaches a palette to this image. The image must be a "P", "PA", "L" + or "LA" image. + + The palette sequence must contain either 768 integer values, or 1024 + integer values if alpha is included. Each group of values represents + the red, green, blue (and alpha if included) values for the + corresponding pixel index. Instead of an integer sequence, you can use + an 8-bit string. + + :param data: A palette sequence (either a list or a string). + :param rawmode: The raw mode of the palette. + """ + from . import ImagePalette + + if self.mode not in ("L", "LA", "P", "PA"): + raise ValueError("illegal image mode") + self.load() + if isinstance(data, ImagePalette.ImagePalette): + palette = ImagePalette.raw(data.rawmode, data.palette) + 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 = "RGB" + self.load() # install new palette + + def putpixel(self, xy, value): + """ + 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 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.pyaccess: + return self.pyaccess.putpixel(xy, value) + + if ( + self.mode == "P" + and isinstance(value, (list, tuple)) + and len(value) in [3, 4] + ): + # RGB or RGBA value for a P image + value = self.palette.getcolor(value) + return self.im.putpixel(xy, value) + + def remap_palette(self, dest_map, source_palette=None): + """ + 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"): + raise ValueError("illegal image mode") + + if source_palette is None: + if self.mode == "P": + real_source_palette = self.im.getpalette("RGB")[:768] + else: # L-mode + real_source_palette = bytearray(i // 3 for i in range(768)) + else: + real_source_palette = source_palette + + palette_bytes = b"" + new_positions = [0] * 256 + + # pick only the used colors from the palette + for i, oldPosition in enumerate(dest_map): + palette_bytes += real_source_palette[oldPosition * 3 : oldPosition * 3 + 3] + 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( + "RGB", palette=mapping_palette * 3, size=768 + ) + # 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(*m_im.palette.getdata()) + + m_im = m_im.convert("L") + + # Internally, we require 768 bytes for a palette. + new_palette_bytes = palette_bytes + (768 - len(palette_bytes)) * b"\x00" + m_im.putpalette(new_palette_bytes) + m_im.palette = ImagePalette.ImagePalette( + "RGB", palette=palette_bytes, size=len(palette_bytes) + ) + + return m_im + + def _get_safe_box(self, size, resample, box): + """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, resample=BICUBIC, box=None, reducing_gap=None): + """ + Returns a resized copy of this image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: An optional resampling filter. This can be + one of :py:data:`PIL.Image.NEAREST`, :py:data:`PIL.Image.BOX`, + :py:data:`PIL.Image.BILINEAR`, :py:data:`PIL.Image.HAMMING`, + :py:data:`PIL.Image.BICUBIC` or :py:data:`PIL.Image.LANCZOS`. + Default filter is :py:data:`PIL.Image.BICUBIC`. + If the image has mode "1" or "P", it is + always set to :py:data:`PIL.Image.NEAREST`. + 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 not in (NEAREST, BILINEAR, BICUBIC, LANCZOS, BOX, HAMMING): + message = f"Unknown resampling filter ({resample})." + + filters = [ + "{} ({})".format(filter[1], filter[0]) + for filter in ( + (NEAREST, "Image.NEAREST"), + (LANCZOS, "Image.LANCZOS"), + (BILINEAR, "Image.BILINEAR"), + (BICUBIC, "Image.BICUBIC"), + (BOX, "Image.BOX"), + (HAMMING, "Image.HAMMING"), + ) + ] + raise ValueError( + message + " Use " + ", ".join(filters[:-1]) + " or " + filters[-1] + ) + + if reducing_gap is not None and reducing_gap < 1.0: + raise ValueError("reducing_gap must be 1.0 or greater") + + size = tuple(size) + + if box is None: + box = (0, 0) + self.size + else: + box = tuple(box) + + if self.size == size and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ("1", "P"): + resample = NEAREST + + if self.mode in ["LA", "RGBA"]: + im = self.convert(self.mode[:-1] + "a") + im = im.resize(size, resample, box) + return im.convert(self.mode) + + self.load() + + if reducing_gap is not None and resample != 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, resample, box) + factor = (factor_x, factor_y) + if callable(self.reduce): + self = self.reduce(factor, box=reduce_box) + else: + self = 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, box=None): + """ + 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 + else: + box = tuple(box) + + if factor == (1, 1) and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ["LA", "RGBA"]: + im = self.convert(self.mode[:-1] + "a") + im = im.reduce(factor, box) + return im.convert(self.mode) + + self.load() + + return self._new(self.im.reduce(factor, box)) + + def rotate( + self, + angle, + resample=NEAREST, + expand=0, + center=None, + translate=None, + fillcolor=None, + ): + """ + 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:`PIL.Image.NEAREST` (use nearest neighbour), + :py:data:`PIL.Image.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`PIL.Image.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:`PIL.Image.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(ROTATE_180) + if angle == 90 and expand: + return self.transpose(ROTATE_90) + if angle == 270 and expand: + return self.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: + # FIXME These should be rounded to ints? + rotn_center = (w / 2.0, h / 2.0) + else: + rotn_center = center + + 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, y, matrix): + (a, b, c, d, e, f) = matrix + return a * x + b * y + c, d * x + e * y + f + + matrix[2], matrix[5] = transform( + -rotn_center[0] - post_trans[0], -rotn_center[1] - post_trans[1], matrix + ) + matrix[2] += rotn_center[0] + matrix[5] += rotn_center[1] + + if expand: + # calculate output size + xx = [] + yy = [] + for x, y in ((0, 0), (w, 0), (w, h), (0, h)): + x, y = transform(x, y, matrix) + xx.append(x) + yy.append(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), AFFINE, matrix, resample, fillcolor=fillcolor) + + def save(self, fp, format=None, **params): + """ + 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), pathlib.Path 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. + :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 = "" + open_fp = False + if isPath(fp): + filename = fp + open_fp = True + elif isinstance(fp, Path): + filename = str(fp) + open_fp = True + if not filename and hasattr(fp, "name") and isPath(fp.name): + # only set the name for metadata purposes + filename = fp.name + + # may mutate self! + self._ensure_mutable() + + save_all = params.pop("save_all", False) + self.encoderinfo = params + self.encoderconfig = () + + preinit() + + ext = os.path.splitext(filename)[1].lower() + + if not format: + if ext not in EXTENSION: + init() + try: + format = EXTENSION[ext] + except KeyError as e: + raise ValueError(f"unknown file extension: {ext}") from e + + if format.upper() not in SAVE: + init() + if save_all: + save_handler = SAVE_ALL[format.upper()] + else: + save_handler = SAVE[format.upper()] + + if open_fp: + 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") + + try: + save_handler(self, fp, filename) + finally: + # do what we can to clean up + if open_fp: + fp.close() + + def seek(self, frame): + """ + 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: + raise EOFError + + def show(self, title=None, command=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 **display**, **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. + """ + + if command is not None: + warnings.warn( + "The command parameter is deprecated and will be removed in Pillow 9 " + "(2022-01-02). Use a subclass of ImageShow.Viewer instead.", + DeprecationWarning, + ) + + _show(self, title=title, command=command) + + def split(self): + """ + 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: + ims = [self.copy()] + else: + ims = map(self._new, self.im.split()) + return tuple(ims) + + def getchannel(self, channel): + """ + 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: + raise ValueError(f'The image has no channel "{channel}"') from e + + return self._new(self.im.getband(channel)) + + def tell(self): + """ + 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, resample=BICUBIC, reducing_gap=2.0): + """ + 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: Requested size. + :param resample: Optional resampling filter. This can be one + of :py:data:`PIL.Image.NEAREST`, :py:data:`PIL.Image.BOX`, + :py:data:`PIL.Image.BILINEAR`, :py:data:`PIL.Image.HAMMING`, + :py:data:`PIL.Image.BICUBIC` or :py:data:`PIL.Image.LANCZOS`. + If omitted, it defaults to :py:data:`PIL.Image.BICUBIC`. + (was :py:data:`PIL.Image.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 + """ + + x, y = map(math.floor, size) + if x >= self.width and y >= self.height: + return + + def round_aspect(number, key): + return max(min(math.floor(number), math.ceil(number), key=key), 1) + + # preserve aspect ratio + 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) + ) + size = (x, y) + + box = None + if reducing_gap is not None: + res = self.draft(None, (size[0] * reducing_gap, size[1] * reducing_gap)) + if res is not None: + box = res[1] + + if self.size != size: + im = self.resize(size, resample, box=box, reducing_gap=reducing_gap) + + self.im = im.im + self._size = size + self.mode = self.im.mode + + self.readonly = 0 + self.pyaccess = None + + # FIXME: the different transform methods need further explanation + # instead of bloating the method docs, add a separate chapter. + def transform( + self, size, method, data=None, resample=NEAREST, fill=1, fillcolor=None + ): + """ + 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. + :param method: The transformation method. This is one of + :py:data:`PIL.Image.EXTENT` (cut out a rectangular subregion), + :py:data:`PIL.Image.AFFINE` (affine transform), + :py:data:`PIL.Image.PERSPECTIVE` (perspective transform), + :py:data:`PIL.Image.QUAD` (map a quadrilateral to a rectangle), or + :py:data:`PIL.Image.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 + + 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.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:`PIL.Image.NEAREST` (use nearest neighbour), + :py:data:`PIL.Image.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`PIL.Image.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:`PIL.Image.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 == "LA": + return ( + self.convert("La") + .transform(size, method, data, resample, fill, fillcolor) + .convert("LA") + ) + + if self.mode == "RGBA": + return ( + self.convert("RGBa") + .transform(size, method, data, resample, fill, fillcolor) + .convert("RGBA") + ) + + 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: + raise ValueError("missing method data") + + im = new(self.mode, size, fillcolor) + im.info = self.info.copy() + if method == MESH: + # list of quads + for box, quad in data: + im.__transformer(box, self, 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, image, method, data, resample=NEAREST, fill=1): + w = box[2] - box[0] + h = box[3] - box[1] + + if method == AFFINE: + data = data[0:6] + + elif method == EXTENT: + # convert extent to an affine transform + x0, y0, x1, y1 = data + xs = (x1 - x0) / w + ys = (y1 - y0) / h + method = AFFINE + data = (xs, 0, x0, 0, ys, y0) + + elif method == PERSPECTIVE: + data = data[0:8] + + elif method == QUAD: + # quadrilateral warp. data specifies the four corners + # given as NW, SW, SE, and NE. + nw = data[0: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: + raise ValueError("unknown transformation method") + + if resample not in (NEAREST, BILINEAR, BICUBIC): + if resample in (BOX, HAMMING, LANCZOS): + message = { + BOX: "Image.BOX", + HAMMING: "Image.HAMMING", + LANCZOS: "Image.LANCZOS/Image.ANTIALIAS", + }[resample] + f" ({resample}) cannot be used." + else: + message = f"Unknown resampling filter ({resample})." + + filters = [ + "{} ({})".format(filter[1], filter[0]) + for filter in ( + (NEAREST, "Image.NEAREST"), + (BILINEAR, "Image.BILINEAR"), + (BICUBIC, "Image.BICUBIC"), + ) + ] + raise ValueError( + message + " Use " + ", ".join(filters[:-1]) + " or " + filters[-1] + ) + + image.load() + + self.load() + + if image.mode in ("1", "P"): + resample = NEAREST + + self.im.transform2(box, image.im, method, data, resample, fill) + + def transpose(self, method): + """ + Transpose image (flip or rotate in 90 degree steps) + + :param method: One of :py:data:`PIL.Image.FLIP_LEFT_RIGHT`, + :py:data:`PIL.Image.FLIP_TOP_BOTTOM`, :py:data:`PIL.Image.ROTATE_90`, + :py:data:`PIL.Image.ROTATE_180`, :py:data:`PIL.Image.ROTATE_270`, + :py:data:`PIL.Image.TRANSPOSE` or :py:data:`PIL.Image.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): + """ + 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): + """Returns a QImage copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.toqimage(self) + + def toqpixmap(self): + """Returns a QPixmap copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.toqpixmap(self) + + +# -------------------------------------------------------------------- +# Abstract handlers. + + +class ImagePointHandler: + """ + Used as a mixin by point transforms + (for use with :py:meth:`~PIL.Image.Image.point`) + """ + + pass + + +class ImageTransformHandler: + """ + Used as a mixin by geometry transforms + (for use with :py:meth:`~PIL.Image.Image.transform`) + """ + + pass + + +# -------------------------------------------------------------------- +# Factories + +# +# Debugging + + +def _wedge(): + """Create greyscale wedge (for debugging only)""" + + return Image()._new(core.wedge("L")) + + +def _check_size(size): + """ + Common check to enforce type and sanity check on size tuples + + :param size: Should be a 2 tuple of (width, height) + :returns: True, or raises a ValueError + """ + + if not isinstance(size, (list, tuple)): + raise ValueError("Size must be a tuple") + if len(size) != 2: + raise ValueError("Size must be a tuple of length 2") + if size[0] < 0 or size[1] < 0: + raise ValueError("Width and height must be >= 0") + + return True + + +def new(mode, size, color=0): + """ + 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 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. + """ + + _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 len(color) in [3, 4]: + # RGB or RGBA value for a P image + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette() + color = im.palette.getcolor(color) + return im._new(core.fill(mode, size, color)) + + +def frombytes(mode, size, data, decoder_name="raw", *args): + """ + 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 Decoder `. + + 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) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw" and args == (): + args = mode + + im = new(mode, size) + im.frombytes(data, decoder_name, args) + return im + + +def frombuffer(mode, size, data, decoder_name="raw", *args): + """ + 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. + + In the current version, 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, (1, 1)) + im = im._new(core.map_buffer(data, size, decoder_name, 0, args)) + im.readonly = 1 + return im + + return frombytes(mode, size, data, decoder_name, args) + + +def fromarray(obj, mode=None): + """ + Creates an image memory from an object exporting the array interface + (using the buffer protocol). + + If ``obj`` is not contiguous, then the ``tobytes`` method is called + and :py:func:`~PIL.Image.frombuffer` is used. + + If you have an image in NumPy:: + + from PIL import Image + import numpy as np + im = Image.open('hopper.jpg') + a = np.asarray(im) + + Then this can be used to convert it to a Pillow image:: + + im = Image.fromarray(a) + + :param obj: Object with array interface + :param mode: Mode to use (will be determined from type if None) + See: :ref:`concept-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: + raise TypeError("Cannot handle this data type") from e + try: + mode, rawmode = _fromarray_typemap[typekey] + except KeyError as e: + raise TypeError("Cannot handle this data type: %s, %s" % typekey) from e + else: + rawmode = mode + if mode in ["1", "L", "I", "P", "F"]: + ndmax = 2 + elif mode == "RGB": + ndmax = 3 + else: + ndmax = 4 + if ndim > ndmax: + raise ValueError(f"Too many dimensions: {ndim} > {ndmax}.") + + size = 1 if ndim == 1 else shape[1], shape[0] + if strides is not None: + if hasattr(obj, "tobytes"): + obj = obj.tobytes() + else: + obj = obj.tostring() + + return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) + + +def fromqimage(im): + """Creates an image instance from a QImage image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.fromqimage(im) + + +def fromqpixmap(im): + """Creates an image instance from a QPixmap image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + 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 +_fromarray_typemap[((1, 1), _ENDIAN + "i4")] = ("I", "I") +_fromarray_typemap[((1, 1), _ENDIAN + "f4")] = ("F", "F") + + +def _decompression_bomb_check(size): + if MAX_IMAGE_PIXELS is None: + return + + pixels = size[0] * size[1] + + if pixels > 2 * MAX_IMAGE_PIXELS: + raise DecompressionBombError( + f"Image size ({pixels} pixels) exceeds limit of {2 * MAX_IMAGE_PIXELS} " + "pixels, could be decompression bomb DOS attack." + ) + + 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, mode="r", formats=None): + """ + 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), pathlib.Path object or a file object. + The file object must implement ``file.read``, + ``file.seek``, and ``file.tell`` methods, + and be opened in binary mode. + :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 ``python -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": + raise ValueError(f"bad mode {repr(mode)}") + elif isinstance(fp, io.StringIO): + raise ValueError( + "StringIO cannot be used to open an image. " + "Binary data must be used instead." + ) + + if formats is None: + formats = ID + elif not isinstance(formats, (list, tuple)): + raise TypeError("formats must be a list or tuple") + + exclusive_fp = False + filename = "" + if isinstance(fp, Path): + filename = str(fp.resolve()) + elif isPath(fp): + filename = fp + + if filename: + fp = builtins.open(filename, "rb") + exclusive_fp = True + + try: + fp.seek(0) + except (AttributeError, io.UnsupportedOperation): + fp = io.BytesIO(fp.read()) + exclusive_fp = True + + prefix = fp.read(16) + + preinit() + + accept_warnings = [] + + def _open_core(fp, filename, prefix, formats): + for i in formats: + if i not in OPEN: + init() + try: + factory, accept = OPEN[i] + result = not accept or accept(prefix) + if type(result) in [str, bytes]: + accept_warnings.append(result) + elif result: + fp.seek(0) + im = factory(fp, filename) + _decompression_bomb_check(im.size) + return im + except (SyntaxError, IndexError, TypeError, struct.error): + # Leave disabled by default, spams the logs with image + # opening failures that are entirely expected. + # logger.debug("", exc_info=True) + continue + except BaseException: + if exclusive_fp: + fp.close() + raise + return None + + im = _open_core(fp, filename, prefix, formats) + + if im is None: + if init(): + im = _open_core(fp, filename, prefix, formats) + + if im: + im._exclusive_fp = exclusive_fp + return im + + if exclusive_fp: + fp.close() + for message in accept_warnings: + warnings.warn(message) + raise UnidentifiedImageError( + "cannot identify image file %r" % (filename if filename else fp) + ) + + +# +# Image processing. + + +def alpha_composite(im1, im2): + """ + 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, im2, alpha): + """ + 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, image2, mask): + """ + 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, *args): + """ + 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, bands): + """ + 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: + raise ValueError("wrong number of bands") + for band in bands[1:]: + if band.mode != getmodetype(mode): + raise ValueError("mode mismatch") + if band.size != bands[0].size: + raise ValueError("size mismatch") + 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, factory, accept=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() + ID.append(id) + OPEN[id] = factory, accept + + +def register_mime(id, mimetype): + """ + Registers an image MIME type. This function should not be used + in application code. + + :param id: An image format identifier. + :param mimetype: The image MIME type for this format. + """ + MIME[id.upper()] = mimetype + + +def register_save(id, driver): + """ + 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, driver): + """ + 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, extension): + """ + 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, extensions): + """ + 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(): + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + if not EXTENSION: + init() + return EXTENSION + + +def register_decoder(name, decoder): + """ + Registers an image decoder. This function should not be + used in application code. + + :param name: The name of the decoder + :param decoder: A callable(mode, args) that returns an + ImageFile.PyDecoder object + + .. versionadded:: 4.1.0 + """ + DECODERS[name] = decoder + + +def register_encoder(name, encoder): + """ + Registers an image encoder. This function should not be + used in application code. + + :param name: The name of the encoder + :param encoder: A callable(mode, args) that returns an + ImageFile.PyEncoder object + + .. versionadded:: 4.1.0 + """ + ENCODERS[name] = encoder + + +# -------------------------------------------------------------------- +# Simple display support. + + +def _show(image, **options): + options["_internal_pillow"] = True + _showxv(image, **options) + + +def _showxv(image, title=None, **options): + from . import ImageShow + + if "_internal_pillow" in options: + del options["_internal_pillow"] + else: + warnings.warn( + "_showxv is deprecated and will be removed in Pillow 9 (2022-01-02). " + "Use Image.show instead.", + DeprecationWarning, + ) + ImageShow.show(image, title, **options) + + +# -------------------------------------------------------------------- +# Effects + + +def effect_mandelbrot(size, extent, quality): + """ + 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, y2). + :param quality: Quality. + """ + return Image()._new(core.effect_mandelbrot(size, extent, quality)) + + +def effect_noise(size, sigma): + """ + 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): + """ + 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): + """ + 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=None): + if env is None: + env = 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: + continue + + var = env[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(var) * units + except ValueError: + warnings.warn(f"{var_name} is not int") + continue + + try: + setter(var) + except ValueError as e: + warnings.warn(f"{var_name}: {e}") + + +_apply_env_variables() +atexit.register(core.clear_cache) + + +class Exif(MutableMapping): + endian = "<" + + def __init__(self): + self._data = {} + self._ifds = {} + self._info = None + self._loaded_exif = None + + def _fixup(self, value): + try: + if len(value) == 1 and isinstance(value, tuple): + return value[0] + except Exception: + pass + return value + + def _fixup_dict(self, src_dict): + # 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, tag): + try: + # an offset pointer to the location of the nested embedded IFD. + # It should be a long, but may be corrupted. + self.fp.seek(self[tag]) + except (KeyError, TypeError): + pass + else: + from . import TiffImagePlugin + + info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + info.load(self.fp) + return self._fixup_dict(info) + + def load(self, data): + # 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._ifds.clear() + self._info = None + if not data: + return + + if data.startswith(b"Exif\x00\x00"): + data = data[6:] + self.fp = 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) + + # get EXIF extension + ifd = self._get_ifd_dict(0x8769) + if ifd: + self._data.update(ifd) + self._ifds[0x8769] = ifd + + def tobytes(self, offset=8): + from . import TiffImagePlugin + + if self.endian == "<": + head = b"II\x2A\x00\x08\x00\x00\x00" + else: + head = b"MM\x00\x2A\x00\x00\x00\x08" + ifd = TiffImagePlugin.ImageFileDirectory_v2(ifh=head) + for tag, value in self.items(): + ifd[tag] = value + return b"Exif\x00\x00" + head + ifd.tobytes(offset) + + def get_ifd(self, tag): + if tag not in self._ifds and tag in self: + if tag in [0x8825, 0xA005]: + # gpsinfo, interop + self._ifds[tag] = self._get_ifd_dict(tag) + elif tag == 0x927C: # makernote + from .TiffImagePlugin import ImageFileDirectory_v2 + + if self[0x927C][:8] == b"FUJIFILM": + exif_data = self[0x927C] + ifd_offset = i32le(exif_data, 8) + ifd_data = exif_data[ifd_offset:] + + makernote = {} + for i in range(0, struct.unpack(" 4: + (offset,) = struct.unpack("H", ifd_data[:2])[0]): + ifd_tag, typ, count, data = struct.unpack( + ">HHL4s", ifd_data[i * 12 + 2 : (i + 1) * 12 + 2] + ) + if ifd_tag == 0x1101: + # CameraInfo + (offset,) = struct.unpack(">L", data) + self.fp.seek(offset) + + camerainfo = {"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 + ) + + self.fp.read(4) + camerainfo["Category"] = self.fp.read(2) + + makernote = {0x1101: dict(self._fixup_dict(camerainfo))} + self._ifds[0x927C] = makernote + return self._ifds.get(tag, {}) + + def __str__(self): + if self._info is not None: + # Load all keys into self._data + for tag in self._info.keys(): + self[tag] + + return str(self._data) + + def __len__(self): + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return len(keys) + + def __getitem__(self, tag): + 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]) + if tag == 0x8825: + self._data[tag] = self.get_ifd(tag) + del self._info[tag] + return self._data[tag] + + def __contains__(self, tag): + return tag in self._data or (self._info is not None and tag in self._info) + + def __setitem__(self, tag, value): + if self._info is not None and tag in self._info: + del self._info[tag] + self._data[tag] = value + + def __delitem__(self, tag): + if self._info is not None and tag in self._info: + del self._info[tag] + else: + del self._data[tag] + + def __iter__(self): + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return iter(keys) diff --git a/venv/lib/python3.9/site-packages/PIL/ImageChops.py b/venv/lib/python3.9/site-packages/PIL/ImageChops.py new file mode 100644 index 0000000..61d3a29 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageChops.py @@ -0,0 +1,328 @@ +# +# 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 . import Image + + +def constant(image, value): + """Fill a channel with a given grey level. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.new("L", image.size, value) + + +def duplicate(image): + """Copy a channel. Alias for :py:meth:`PIL.Image.Image.copy`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return image.copy() + + +def invert(image): + """ + Invert an image (channel). + + .. code-block:: python + + out = MAX - image + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image.load() + return image._new(image.im.chop_invert()) + + +def lighter(image1, image2): + """ + Compares the two images, pixel by pixel, and returns a new image containing + the lighter values. + + .. code-block:: python + + 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, image2): + """ + Compares the two images, pixel by pixel, and returns a new image containing + the darker values. + + .. code-block:: python + + 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, image2): + """ + Returns the absolute value of the pixel-by-pixel difference between the two + images. + + .. code-block:: python + + 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, image2): + """ + 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. + + .. code-block:: python + + 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, image2): + """ + Superimposes two inverted images on top of each other. + + .. code-block:: python + + 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, image2): + """ + 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, image2): + """ + 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, image2): + """ + 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, image2, scale=1.0, offset=0): + """ + Adds two images, dividing the result by scale and adding the + offset. If omitted, scale defaults to 1.0, and offset to 0.0. + + .. code-block:: python + + 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, image2, scale=1.0, offset=0): + """ + Subtracts two images, dividing the result by scale and adding the offset. + If omitted, scale defaults to 1.0, and offset to 0.0. + + .. code-block:: python + + 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, image2): + """Add two images, without clipping the result. + + .. code-block:: python + + 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, image2): + """Subtract two images, without clipping the result. + + .. code-block:: python + + 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, image2): + """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. + + .. code-block:: python + + 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, image2): + """Logical OR between two images. + + Both of the images must have mode "1". + + .. code-block:: python + + 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, image2): + """Logical XOR between two images. + + Both of the images must have mode "1". + + .. code-block:: python + + 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, image2, alpha): + """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, image2, mask): + """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, xoffset, yoffset=None): + """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 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/venv/lib/python3.9/site-packages/PIL/ImageCms.py b/venv/lib/python3.9/site-packages/PIL/ImageCms.py new file mode 100644 index 0000000..8c4740d --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageCms.py @@ -0,0 +1,999 @@ +# The Python Imaging Library. +# $Id$ + +# Optional color management support, based on Kevin Cazabon's PyCMS +# library. + +# 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. + +import sys + +from PIL import Image + +try: + from PIL import _imagingcms +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import deferred_error + + _imagingcms = deferred_error(ex) + +DESCRIPTION = """ +pyCMS + + a Python / PIL interface to the littleCMS ICC Color Management System + Copyright (C) 2002-2003 Kevin Cazabon + kevin@cazabon.com + http://www.cazabon.com + + pyCMS home page: http://www.cazabon.com/pyCMS + littleCMS home page: http://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" + +# --------------------------------------------------------------------. + +core = _imagingcms + +# +# intent/direction values + +INTENT_PERCEPTUAL = 0 +INTENT_RELATIVE_COLORIMETRIC = 1 +INTENT_SATURATION = 2 +INTENT_ABSOLUTE_COLORIMETRIC = 3 + +DIRECTION_INPUT = 0 +DIRECTION_OUTPUT = 1 +DIRECTION_PROOF = 2 + +# +# 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 +} + +_MAX_FLAG = 0 +for flag in FLAGS.values(): + if isinstance(flag, int): + _MAX_FLAG = _MAX_FLAG | flag + + +# --------------------------------------------------------------------. +# Experimental PIL-level API +# --------------------------------------------------------------------. + +## +# Profile. + + +class ImageCmsProfile: + def __init__(self, profile): + """ + :param profile: Either a string representing a filename, + a file like object containing a profile or a + low-level profile object + + """ + + 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._set(core.profile_frombytes(f.read())) + return + self._set(core.profile_open(profile), profile) + elif hasattr(profile, "read"): + self._set(core.profile_frombytes(profile.read())) + elif isinstance(profile, _imagingcms.CmsProfile): + self._set(profile) + else: + raise TypeError("Invalid type for Profile") + + def _set(self, profile, filename=None): + self.profile = profile + self.filename = filename + if profile: + self.product_name = None # profile.product_name + self.product_info = None # profile.product_info + else: + self.product_name = None + self.product_info = None + + def tobytes(self): + """ + 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, + output, + input_mode, + output_mode, + intent=INTENT_PERCEPTUAL, + proof=None, + proof_intent=INTENT_ABSOLUTE_COLORIMETRIC, + flags=0, + ): + 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): + return self.apply(im) + + def apply(self, im, imOut=None): + im.load() + if imOut is None: + imOut = Image.new(self.output_mode, im.size, None) + self.transform.apply(im.im.id, imOut.im.id) + imOut.info["icc_profile"] = self.output_profile.tobytes() + return imOut + + def apply_in_place(self, im): + im.load() + if im.mode != self.output_mode: + raise ValueError("mode mismatch") # wrong output mode + self.transform.apply(im.im.id, im.im.id) + im.info["icc_profile"] = self.output_profile.tobytes() + return im + + +def get_display_profile(handle=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 PIL import ImageWin + + if isinstance(handle, ImageWin.HDC): + profile = core.get_display_profile_win32(handle, 1) + else: + profile = core.get_display_profile_win32(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, + inputProfile, + outputProfile, + renderingIntent=INTENT_PERCEPTUAL, + outputMode=None, + inPlace=False, + flags=0, +): + """ + (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): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + 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): + """ + (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, + outputProfile, + inMode, + outMode, + renderingIntent=INTENT_PERCEPTUAL, + flags=0, +): + """ + (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): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + 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, + outputProfile, + proofProfile, + inMode, + outMode, + renderingIntent=INTENT_PERCEPTUAL, + proofRenderingIntent=INTENT_ABSOLUTE_COLORIMETRIC, + flags=FLAGS["SOFTPROOFING"], +): + """ + (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): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + 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, transform, inPlace=False): + """ + (pyCMS) Applies a transform to a given image. + + If ``im.mode != transform.inMode``, a :exc:`PyCMSError` is raised. + + If ``inPlace`` is ``True`` and ``transform.inMode != transform.outMode``, a + :exc:`PyCMSError` is raised. + + If ``im.mode``, ``transform.inMode`` or ``transform.outMode`` 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.inMode`` and ``transform.outMode`` 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.outMode``. + + :param im: An :py:class:`~PIL.Image.Image` object, and im.mode must be the same + as the ``inMode`` 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, colorTemp=-1): + """ + (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 integer 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"]: + raise PyCMSError( + f"Color space not supported for on-the-fly profile creation ({colorSpace})" + ) + + if colorSpace == "LAB": + try: + colorTemp = float(colorTemp) + except (TypeError, ValueError) as e: + raise PyCMSError( + f'Color temperature must be numeric, "{colorTemp}" not valid' + ) from e + + try: + return core.createProfile(colorSpace, colorTemp) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileName(profile): + """ + + (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 len(model) > 30: + return model + "\n" + return f"{model} - {manufacturer}\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileInfo(profile): + """ + (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 + arr = [] + for elt in (description, cpright): + if elt: + arr.append(elt) + return "\r\n\r\n".join(arr) + "\r\n\r\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileCopyright(profile): + """ + (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): + """ + (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): + """ + (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): + """ + (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): + """ + (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, intent, direction): + """ + (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(): + """ + (pyCMS) Fetches versions. + """ + + return (VERSION, core.littlecms_version, sys.version.split()[0], Image.__version__) diff --git a/venv/lib/python3.9/site-packages/PIL/ImageColor.py b/venv/lib/python3.9/site-packages/PIL/ImageColor.py new file mode 100644 index 0000000..9091174 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageColor.py @@ -0,0 +1,300 @@ +# +# 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. +# + +import re + +from . import Image + + +def getrgb(color): + """ + Convert a color string to an RGB 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])`` + """ + color = color.lower() + + rgb = colormap.get(color, None) + if rgb: + if isinstance(rgb, tuple): + return rgb + colormap[color] = rgb = getrgb(rgb) + return rgb + + # 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 = hls_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(3)) / 100.0, + float(m.group(2)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[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 = hsv_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(2)) / 100.0, + float(m.group(3)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[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))) + raise ValueError(f"unknown color specifier: {repr(color)}") + + +def getcolor(color, mode): + """ + Same as :py:func:`~PIL.ImageColor.getrgb`, but converts the RGB value to a + greyscale value if the mode is not color or a palette image. If the string + cannot be parsed, this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(graylevel [, alpha]) or (red, green, blue[, alpha])`` + """ + # same as getrgb, but converts the result to the given mode + color, alpha = getrgb(color), 255 + if len(color) == 4: + color, alpha = color[0:3], color[3] + + if Image.getmodebase(mode) == "L": + r, g, b = color + # ITU-R Recommendation 601-2 for nonlinear RGB + # scaled to 24 bits to match the convert's implementation. + color = (r * 19595 + g * 38470 + b * 7471 + 0x8000) >> 16 + if mode[-1] == "A": + return (color, alpha) + else: + if mode[-1] == "A": + return color + (alpha,) + return color + + +colormap = { + # 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/venv/lib/python3.9/site-packages/PIL/ImageDraw.py b/venv/lib/python3.9/site-packages/PIL/ImageDraw.py new file mode 100644 index 0000000..b823be9 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageDraw.py @@ -0,0 +1,898 @@ +# +# 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. +# + +import math +import numbers + +from . import Image, ImageColor + +""" +A simple 2D drawing interface for PIL images. +

+Application code should use the Draw factory, instead of +directly. +""" + + +class ImageDraw: + def __init__(self, im, mode=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: + raise ValueError("mode mismatch") + if mode == "P": + self.palette = im.palette + else: + self.palette = None + 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 = 0 + self.font = None + + def getfont(self): + """ + Get the current default font. + + :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 _getink(self, ink, fill=None): + if ink is None and fill is None: + if self.fill: + fill = self.ink + else: + ink = self.ink + else: + if ink is not None: + if isinstance(ink, str): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and not isinstance(ink, numbers.Number): + ink = self.palette.getcolor(ink) + 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 not isinstance(fill, numbers.Number): + fill = self.palette.getcolor(fill) + fill = self.draw.draw_ink(fill) + return ink, fill + + def arc(self, xy, start, end, fill=None, width=1): + """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, bitmap, fill=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, start, end, fill=None, outline=None, width=1): + """Draw a chord.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_chord(xy, start, end, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_chord(xy, start, end, ink, 0, width) + + def ellipse(self, xy, fill=None, outline=None, width=1): + """Draw an ellipse.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_ellipse(xy, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_ellipse(xy, ink, 0, width) + + def line(self, xy, fill=None, width=0, joint=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: + if not isinstance(xy[0], (list, tuple)): + xy = [tuple(xy[i : i + 2]) for i in range(0, len(xy), 2)] + for i in range(1, len(xy) - 1): + point = xy[i] + angles = [ + math.degrees(math.atan2(end[0] - start[0], start[1] - end[1])) + % 360 + for start, end in ((xy[i - 1], point), (point, xy[i + 1])) + ] + if angles[0] == angles[1]: + # This is a straight line, so no joint is required + continue + + def coord_at_angle(coord, angle): + 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: + gapCoords = [ + coord_at_angle(point, angles[0] + 90), + point, + coord_at_angle(point, angles[1] + 90), + ] + else: + gapCoords = [ + coord_at_angle(point, angles[0] - 90), + point, + coord_at_angle(point, angles[1] - 90), + ] + self.line(gapCoords, fill, width=3) + + def shape(self, shape, fill=None, outline=None): + """(Experimental) Draw a shape.""" + shape.close() + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_outline(shape, fill, 1) + if ink is not None and ink != fill: + self.draw.draw_outline(shape, ink, 0) + + def pieslice(self, xy, start, end, fill=None, outline=None, width=1): + """Draw a pieslice.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_pieslice(xy, start, end, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_pieslice(xy, start, end, ink, 0, width) + + def point(self, xy, fill=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, fill=None, outline=None): + """Draw a polygon.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_polygon(xy, fill, 1) + if ink is not None and ink != fill: + self.draw.draw_polygon(xy, ink, 0) + + def regular_polygon( + self, bounding_circle, n_sides, rotation=0, fill=None, outline=None + ): + """Draw a regular polygon.""" + xy = _compute_regular_polygon_vertices(bounding_circle, n_sides, rotation) + self.polygon(xy, fill, outline) + + def rectangle(self, xy, fill=None, outline=None, width=1): + """Draw a rectangle.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_rectangle(xy, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_rectangle(xy, ink, 0, width) + + def _multiline_check(self, text): + """Draw text.""" + split_character = "\n" if isinstance(text, str) else b"\n" + + return split_character in text + + def _multiline_split(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + + return text.split(split_character) + + def text( + self, + xy, + text, + fill=None, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + stroke_fill=None, + embedded_color=False, + *args, + **kwargs, + ): + 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, + ) + + if embedded_color and self.mode not in ("RGB", "RGBA"): + raise ValueError("Embedded color supported only in RGB and RGBA modes") + + if font is None: + font = self.getfont() + + def getink(fill): + ink, fill = self._getink(fill) + if ink is None: + return fill + return ink + + def draw_text(ink, stroke_width=0, stroke_offset=None): + mode = self.fontmode + if stroke_width == 0 and embedded_color: + mode = "RGBA" + coord = xy + try: + mask, offset = font.getmask2( + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + anchor=anchor, + ink=ink, + *args, + **kwargs, + ) + coord = coord[0] + offset[0], coord[1] + offset[1] + except AttributeError: + try: + mask = font.getmask( + text, + mode, + direction, + features, + language, + stroke_width, + anchor, + ink, + *args, + **kwargs, + ) + except TypeError: + mask = font.getmask(text) + if stroke_offset: + coord = coord[0] + stroke_offset[0], coord[1] + stroke_offset[1] + 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) + color.fillband(3, (ink >> 24) & 0xFF) + coord2 = coord[0] + mask.size[0], coord[1] + mask.size[1] + self.im.paste(color, coord + coord2, 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 + draw_text(ink, 0) + else: + # Only draw normal text + draw_text(ink) + + def multiline_text( + self, + xy, + text, + fill=None, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + stroke_fill=None, + embedded_color=False, + ): + if direction == "ttb": + raise ValueError("ttb direction is unsupported for multiline text") + + if anchor is None: + anchor = "la" + elif len(anchor) != 2: + raise ValueError("anchor must be a 2 character string") + elif anchor[1] in "tb": + raise ValueError("anchor not supported for multiline text") + + widths = [] + max_width = 0 + lines = self._multiline_split(text) + line_spacing = ( + self.textsize("A", font=font, stroke_width=stroke_width)[1] + spacing + ) + for line in lines: + line_width = self.textlength( + line, font, direction=direction, features=features, language=language + ) + widths.append(line_width) + max_width = max(max_width, line_width) + + top = xy[1] + 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] + + # first align left by anchor + if anchor[0] == "m": + left -= width_difference / 2.0 + elif anchor[0] == "r": + left -= width_difference + + # then align by align parameter + if align == "left": + pass + elif align == "center": + left += width_difference / 2.0 + elif align == "right": + left += width_difference + else: + raise ValueError('align must be "left", "center" or "right"') + + self.text( + (left, top), + line, + fill, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + stroke_fill=stroke_fill, + embedded_color=embedded_color, + ) + top += line_spacing + + def textsize( + self, + text, + font=None, + spacing=4, + direction=None, + features=None, + language=None, + stroke_width=0, + ): + """Get the size of a given string, in pixels.""" + if self._multiline_check(text): + return self.multiline_textsize( + text, font, spacing, direction, features, language, stroke_width + ) + + if font is None: + font = self.getfont() + return font.getsize(text, direction, features, language, stroke_width) + + def multiline_textsize( + self, + text, + font=None, + spacing=4, + direction=None, + features=None, + language=None, + stroke_width=0, + ): + max_width = 0 + lines = self._multiline_split(text) + line_spacing = ( + self.textsize("A", font=font, stroke_width=stroke_width)[1] + spacing + ) + for line in lines: + line_width, line_height = self.textsize( + line, font, spacing, direction, features, language, stroke_width + ) + max_width = max(max_width, line_width) + return max_width, len(lines) * line_spacing - spacing + + def textlength( + self, + text, + font=None, + direction=None, + features=None, + language=None, + embedded_color=False, + ): + """Get the length of a given string, in pixels with 1/64 precision.""" + if self._multiline_check(text): + raise ValueError("can't measure length of multiline text") + if embedded_color and self.mode not in ("RGB", "RGBA"): + raise ValueError("Embedded color supported only in RGB and RGBA modes") + + if font is None: + font = self.getfont() + mode = "RGBA" if embedded_color else self.fontmode + try: + return font.getlength(text, mode, direction, features, language) + except AttributeError: + size = self.textsize( + text, font, direction=direction, features=features, language=language + ) + if direction == "ttb": + return size[1] + return size[0] + + def textbbox( + self, + xy, + text, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + embedded_color=False, + ): + """Get the bounding box of a given string, in pixels.""" + if embedded_color and self.mode not in ("RGB", "RGBA"): + raise ValueError("Embedded color supported only in RGB and RGBA modes") + + if self._multiline_check(text): + return self.multiline_textbbox( + xy, + text, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + embedded_color, + ) + + if font is None: + font = self.getfont() + 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, + text, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + embedded_color=False, + ): + if direction == "ttb": + raise ValueError("ttb direction is unsupported for multiline text") + + if anchor is None: + anchor = "la" + elif len(anchor) != 2: + raise ValueError("anchor must be a 2 character string") + elif anchor[1] in "tb": + raise ValueError("anchor not supported for multiline text") + + widths = [] + max_width = 0 + lines = self._multiline_split(text) + line_spacing = ( + self.textsize("A", font=font, stroke_width=stroke_width)[1] + spacing + ) + 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) + + top = xy[1] + if anchor[1] == "m": + top -= (len(lines) - 1) * line_spacing / 2.0 + elif anchor[1] == "d": + top -= (len(lines) - 1) * line_spacing + + bbox = None + + for idx, line in enumerate(lines): + left = xy[0] + width_difference = max_width - widths[idx] + + # first align left by anchor + if anchor[0] == "m": + left -= width_difference / 2.0 + elif anchor[0] == "r": + left -= width_difference + + # then align by align parameter + if align == "left": + pass + elif align == "center": + left += width_difference / 2.0 + elif align == "right": + left += width_difference + else: + raise ValueError('align must be "left", "center" or "right"') + + bbox_line = self.textbbox( + (left, top), + 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]), + ) + + top += line_spacing + + if bbox is None: + return xy[0], xy[1], xy[0], xy[1] + return bbox + + +def Draw(im, mode=None): + """ + 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 im.getdraw(mode) + except AttributeError: + return ImageDraw(im, mode) + + +# experimental access to the outline API +try: + Outline = Image.core.outline +except AttributeError: + Outline = None + + +def getdraw(im=None, hints=None): + """ + (Experimental) A more advanced 2D drawing interface for PIL images, + based on the WCK interface. + + :param im: The image to draw in. + :param hints: An optional list of hints. + :returns: A (drawing context, drawing resource factory) tuple. + """ + # FIXME: this needs more work! + # FIXME: come up with a better 'hints' scheme. + handler = None + if not hints or "nicest" in hints: + try: + from . import _imagingagg as handler + except ImportError: + pass + if handler is None: + from . import ImageDraw2 as handler + if im: + im = handler.Draw(im) + return im, handler + + +def floodfill(image, xy, value, border=None, thresh=0): + """ + (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() + 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 != value and p != 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, n_sides, rotation): + """ + Generate a list of vertices for a 2D regular polygon. + + :param bounding_circle: The bounding circle is a tuple 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): + raise TypeError("n_sides should be an int") + if n_sides < 3: + raise ValueError("n_sides should be an int > 2") + + # 1.2 Check `bounding_circle` has an appropriate value + if not isinstance(bounding_circle, (list, tuple)): + raise TypeError("bounding_circle should be a tuple") + + if len(bounding_circle) == 3: + *centroid, polygon_radius = bounding_circle + elif len(bounding_circle) == 2: + centroid, polygon_radius = bounding_circle + else: + raise ValueError( + "bounding_circle should contain 2D coordinates " + "and a radius (e.g. (x, y, r) or ((x, y), r) )" + ) + + if not all(isinstance(i, (int, float)) for i in (*centroid, polygon_radius)): + raise ValueError("bounding_circle should only contain numeric data") + + if not len(centroid) == 2: + raise ValueError( + "bounding_circle centre should contain 2D coordinates (e.g. (x, y))" + ) + + if polygon_radius <= 0: + raise ValueError("bounding_circle radius should be > 0") + + # 1.3 Check `rotation` has an appropriate value + if not isinstance(rotation, (int, float)): + raise ValueError("rotation should be an int or float") + + # 2. Define Helper Functions + def _apply_rotation(point, degrees, centroid): + 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(centroid, polygon_radius, angle): + start_point = [polygon_radius, 0] + return _apply_rotation(start_point, angle, centroid) + + def _get_angles(n_sides, rotation): + angles = [] + degrees = 360 / n_sides + # Start with the bottom left polygon vertex + current_angle = (270 - 0.5 * degrees) + rotation + for _ in range(0, 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(centroid, polygon_radius, angle) for angle in angles + ] + + +def _color_diff(color1, color2): + """ + Uses 1-norm distance to calculate difference between two values. + """ + if isinstance(color2, tuple): + return sum([abs(color1[i] - color2[i]) for i in range(0, len(color2))]) + else: + return abs(color1 - color2) diff --git a/venv/lib/python3.9/site-packages/PIL/ImageDraw2.py b/venv/lib/python3.9/site-packages/PIL/ImageDraw2.py new file mode 100644 index 0000000..1f63110 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageDraw2.py @@ -0,0 +1,179 @@ +# +# 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 . import Image, ImageColor, ImageDraw, ImageFont, ImagePath + + +class Pen: + """Stores an outline color and width.""" + + def __init__(self, color, width=1, opacity=255): + self.color = ImageColor.getrgb(color) + self.width = width + + +class Brush: + """Stores a fill color""" + + def __init__(self, color, opacity=255): + self.color = ImageColor.getrgb(color) + + +class Font: + """Stores a TrueType font and color""" + + def __init__(self, color, file, size=12): + # 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, size=None, color=None): + if not hasattr(image, "im"): + image = Image.new(image, size, color) + self.draw = ImageDraw.Draw(image) + self.image = image + self.transform = None + + def flush(self): + return self.image + + def render(self, op, xy, pen, brush=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: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + # render the item + if op == "line": + self.draw.line(xy, fill=outline, width=width) + else: + getattr(self.draw, op)(xy, fill=fill, outline=outline) + + def settransform(self, offset): + """Sets a transformation offset.""" + (xoffset, yoffset) = offset + self.transform = (1, 0, xoffset, 0, 1, yoffset) + + def arc(self, xy, start, end, *options): + """ + 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, start, end, *options) + + def chord(self, xy, start, end, *options): + """ + 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, start, end, *options) + + def ellipse(self, xy, *options): + """ + Draws an ellipse inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse` + """ + self.render("ellipse", xy, *options) + + def line(self, xy, *options): + """ + Draws a line between the coordinates in the ``xy`` list. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line` + """ + self.render("line", xy, *options) + + def pieslice(self, xy, start, end, *options): + """ + 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, start, end, *options) + + def polygon(self, xy, *options): + """ + 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, *options) + + def rectangle(self, xy, *options): + """ + Draws a rectangle. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle` + """ + self.render("rectangle", xy, *options) + + def text(self, xy, text, font): + """ + Draws the string at the given position. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.text` + """ + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + self.draw.text(xy, text, font=font.font, fill=font.color) + + def textsize(self, text, font): + """ + Return the size of the given string, in pixels. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textsize` + """ + return self.draw.textsize(text, font=font.font) diff --git a/venv/lib/python3.9/site-packages/PIL/ImageEnhance.py b/venv/lib/python3.9/site-packages/PIL/ImageEnhance.py new file mode 100644 index 0000000..3b79d5c --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageEnhance.py @@ -0,0 +1,103 @@ +# +# 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 . import Image, ImageFilter, ImageStat + + +class _Enhance: + def enhance(self, factor): + """ + 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): + self.image = image + self.intermediate_mode = "L" + if "A" in image.getbands(): + self.intermediate_mode = "LA" + + self.degenerate = image.convert(self.intermediate_mode).convert(image.mode) + + +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 grey image. A factor of 1.0 gives the original image. + """ + + def __init__(self, image): + self.image = image + mean = int(ImageStat.Stat(image.convert("L")).mean[0] + 0.5) + self.degenerate = Image.new("L", image.size, mean).convert(image.mode) + + if "A" in image.getbands(): + self.degenerate.putalpha(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): + 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): + self.image = image + self.degenerate = image.filter(ImageFilter.SMOOTH) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) diff --git a/venv/lib/python3.9/site-packages/PIL/ImageFile.py b/venv/lib/python3.9/site-packages/PIL/ImageFile.py new file mode 100644 index 0000000..f2a55cb --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageFile.py @@ -0,0 +1,697 @@ +# +# 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. +# + +import io +import struct +import sys +import warnings + +from . import Image +from ._util import isPath + +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`.""" + + +# +# -------------------------------------------------------------------- +# Helpers + + +def raise_oserror(error): + try: + message = Image.core.getcodecstatus(error) + except AttributeError: + message = ERRORS.get(error) + if not message: + message = f"decoder error {error}" + raise OSError(message + " when reading image file") + + +def raise_ioerror(error): + warnings.warn( + "raise_ioerror is deprecated and will be removed in Pillow 9 (2022-01-02). " + "Use raise_oserror instead.", + DeprecationWarning, + ) + return raise_oserror(error) + + +def _tilesort(t): + # sort on offset + return t[2] + + +# +# -------------------------------------------------------------------- +# ImageFile base class + + +class ImageFile(Image.Image): + """Base class for image file format handlers.""" + + def __init__(self, fp=None, filename=None): + super().__init__() + + self._min_frame = 0 + + self.custom_mimetype = None + + self.tile = None + """ A list of tile descriptors, or ``None`` """ + + self.readonly = 1 # until we know better + + self.decoderconfig = () + self.decodermaxblock = MAXBLOCK + + if isPath(fp): + # filename + self.fp = open(fp, "rb") + self.filename = fp + self._exclusive_fp = True + else: + # stream + self.fp = fp + self.filename = filename + # can be overridden + self._exclusive_fp = None + + 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: + raise SyntaxError("not identified by this driver") + except BaseException: + # close the file only if we have opened it this constructor + if self._exclusive_fp: + self.fp.close() + raise + + def get_format_mimetype(self): + if self.custom_mimetype: + return self.custom_mimetype + if self.format is not None: + return Image.MIME.get(self.format.upper()) + + def verify(self): + """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): + """Load image data based on tile list""" + + if self.tile is None: + raise OSError("cannot load this image") + + pixel = Image.Image.load(self) + if not self.tile: + return pixel + + self.map = None + use_mmap = self.filename and len(self.tile) == 1 + # As of pypy 2.1.0, memory mapping was failing here. + use_mmap = use_mmap and not hasattr(sys, "pypy_version_info") + + readonly = 0 + + # look for read/seek overrides + try: + read = self.load_read + # don't use mmap if there are custom read/seek functions + use_mmap = False + except AttributeError: + read = self.fp.read + + try: + seek = self.load_seek + use_mmap = False + except AttributeError: + seek = self.fp.seek + + if use_mmap: + # try memory mapping + decoder_name, extents, offset, args = self.tile[0] + if ( + decoder_name == "raw" + and len(args) >= 3 + and args[0] == self.mode + and args[0] in Image._MAPMODES + ): + try: + if hasattr(Image.core, "map"): + # use built-in mapper WIN32 only + self.map = Image.core.map(self.filename) + self.map.seek(offset) + self.im = self.map.readimage( + self.mode, self.size, args[1], args[2] + ) + else: + # use mmap, if possible + import mmap + + with open(self.filename) as fp: + self.map = mmap.mmap( + fp.fileno(), 0, access=mmap.ACCESS_READ + ) + 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) + + try: + # FIXME: This is a hack to handle TIFF's JpegTables tag. + prefix = self.tile_prefix + except AttributeError: + prefix = b"" + + for decoder_name, extents, offset, args in self.tile: + decoder = Image._getdecoder( + self.mode, decoder_name, args, self.decoderconfig + ) + try: + seek(offset) + decoder.setimage(self.im, extents) + if decoder.pulls_fd: + decoder.setfd(self.fp) + status, err_code = decoder.decode(b"") + else: + b = prefix + while True: + try: + s = read(self.decodermaxblock) + except (IndexError, struct.error) as e: + # truncated png/gif + if LOAD_TRUNCATED_IMAGES: + break + else: + raise OSError("image file is truncated") from e + + if not s: # truncated jpeg + if LOAD_TRUNCATED_IMAGES: + break + else: + raise OSError( + "image file is truncated " + f"({len(b)} bytes not processed)" + ) + + 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_oserror(err_code) + + return Image.Image.load(self) + + def load_prepare(self): + # create image memory if necessary + if not self.im or self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.new(self.mode, self.size) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def load_end(self): + # may be overridden + pass + + # may be defined for contained formats + # def load_seek(self, pos): + # pass + + # may be defined for blocked formats (e.g. PNG) + # def load_read(self, bytes): + # pass + + def _seek_check(self, frame): + 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 >= self.n_frames + self._min_frame + ) + ): + raise EOFError("attempt to seek outside sequence") + + return self.tell() != frame + + +class StubImageFile(ImageFile): + """ + 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. + """ + + def _open(self): + raise NotImplementedError("StubImageFile subclass must implement _open") + + def load(self): + loader = self._load() + if loader is None: + raise OSError(f"cannot find loader for this {self.format} file") + image = loader.load(self) + assert image is not None + # become the other object (!) + self.__class__ = image.__class__ + self.__dict__ = image.__dict__ + + def _load(self): + """(Hook) Find actual image loader.""" + raise NotImplementedError("StubImageFile subclass must implement _load") + + +class Parser: + """ + Incremental image parser. This class implements the standard + feed/close consumer interface. + """ + + incremental = None + image = None + data = None + decoder = None + offset = 0 + finished = 0 + + def reset(self): + """ + (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): + """ + (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_oserror(e) + 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: + # traceback.print_exc() + 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): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + """ + (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: + raise OSError("image was incomplete") + if not self.image: + raise OSError("cannot parse this image") + 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, fp, tile, bufsize=0): + """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 + if fp == sys.stdout: + fp.flush() + return + try: + fh = fp.fileno() + fp.flush() + except (AttributeError, io.UnsupportedOperation) as exc: + # compress to Python file-compatible object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o) + e.setimage(im.im, b) + if e.pushes_fd: + e.setfd(fp) + l, s = e.encode_to_pyfd() + else: + while True: + l, s, d = e.encode(bufsize) + fp.write(d) + if s: + break + if s < 0: + raise OSError(f"encoder error {s} when writing image file") from exc + e.cleanup() + else: + # slight speedup: compress to real file object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o) + e.setimage(im.im, b) + if e.pushes_fd: + e.setfd(fp) + l, s = e.encode_to_pyfd() + else: + s = e.encode_to_file(fh, bufsize) + if s < 0: + raise OSError(f"encoder error {s} when writing image file") + e.cleanup() + if hasattr(fp, "flush"): + fp.flush() + + +def _safe_read(fp, size): + """ + 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 up to size bytes of data. + """ + if size <= 0: + return b"" + if size <= SAFEBLOCK: + return fp.read(size) + data = [] + while size > 0: + block = fp.read(min(size, SAFEBLOCK)) + if not block: + break + data.append(block) + size -= len(block) + return b"".join(data) + + +class PyCodecState: + def __init__(self): + self.xsize = 0 + self.ysize = 0 + self.xoff = 0 + self.yoff = 0 + + def extents(self): + return (self.xoff, self.yoff, self.xoff + self.xsize, self.yoff + self.ysize) + + +class PyDecoder: + """ + 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 Decoder in Python` + """ + + _pulls_fd = False + + def __init__(self, mode, *args): + self.im = None + self.state = PyCodecState() + self.fd = None + self.mode = mode + self.init(args) + + def init(self, args): + """ + Override to perform decoder specific initialization + + :param args: Array of args items from the tile entry + :returns: None + """ + self.args = args + + @property + def pulls_fd(self): + return self._pulls_fd + + def decode(self, buffer): + """ + 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 <0 for the bytes consumed. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + raise NotImplementedError() + + def cleanup(self): + """ + Override to perform decoder specific cleanup + + :returns: None + """ + pass + + def setfd(self, fd): + """ + 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, extents=None): + """ + Called from ImageFile to set the core output image for the decoder + + :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: + raise ValueError("Size cannot be negative") + + if ( + self.state.xsize + self.state.xoff > self.im.size[0] + or self.state.ysize + self.state.yoff > self.im.size[1] + ): + raise ValueError("Tile cannot extend outside image") + + def set_as_raw(self, data, rawmode=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 + :returns: None + """ + + if not rawmode: + rawmode = self.mode + d = Image._getdecoder(self.mode, "raw", (rawmode)) + d.setimage(self.im, self.state.extents()) + s = d.decode(data) + + if s[0] >= 0: + raise ValueError("not enough image data") + if s[1] != 0: + raise ValueError("cannot decode image data") diff --git a/venv/lib/python3.9/site-packages/PIL/ImageFilter.py b/venv/lib/python3.9/site-packages/PIL/ImageFilter.py new file mode 100644 index 0000000..9ca17d9 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageFilter.py @@ -0,0 +1,534 @@ +# +# 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. +# +import functools + +try: + import numpy +except ImportError: # pragma: no cover + numpy = None + + +class Filter: + pass + + +class MultibandFilter(Filter): + pass + + +class BuiltinFilter(MultibandFilter): + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + return image.filter(*self.filterargs) + + +class Kernel(BuiltinFilter): + """ + Create a convolution kernel. The current version only + supports 3x3 and 5x5 integer and floating point kernels. + + In the current version, kernels can only be applied to + "L" and "RGB" images. + + :param size: Kernel size, given as (width, height). In the current + version, this must be (3,3) or (5,5). + :param kernel: A sequence containing kernel weights. + :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, kernel, scale=None, offset=0): + 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): + raise ValueError("not enough coefficients in kernel") + 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, rank): + self.size = size + self.rank = rank + + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + 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=3): + 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=3): + 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=3): + 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=3): + self.size = size + + def filter(self, image): + return image.modefilter(self.size) + + +class GaussianBlur(MultibandFilter): + """Gaussian blur filter. + + :param radius: Blur radius. + """ + + name = "GaussianBlur" + + def __init__(self, radius=2): + self.radius = radius + + def filter(self, image): + return image.gaussian_blur(self.radius) + + +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 one direction. 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): + self.radius = radius + + def filter(self, image): + return image.box_blur(self.radius) + + +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 + + """ # noqa: E501 + + name = "UnsharpMask" + + def __init__(self, radius=2, percent=150, threshold=3): + self.radius = radius + self.percent = percent + self.threshold = threshold + + def filter(self, image): + 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, table, channels=3, target_mode=None, **kwargs): + if channels not in (3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + 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 + + if numpy and isinstance(table, numpy.ndarray): + if copy_table: + table = table.copy() + + if table.shape in [ + (items * channels,), + (items, channels), + (size[2], size[1], size[0], channels), + ]: + table = 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)): + table, raw_table = [], table + for pixel in raw_table: + if len(pixel) != channels: + raise ValueError( + "The elements of the table should " + "have a length of {}.".format(channels) + ) + table.extend(pixel) + + if wrong_size or len(table) != items * channels: + raise ValueError( + "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)}" + ) + self.table = table + + @staticmethod + def _check_size(size): + try: + _, _, _ = size + except ValueError as e: + raise ValueError( + "Size should be either an integer or a tuple of three integers." + ) from e + except TypeError: + size = (size, size, size) + size = [int(x) for x in size] + for size1D in size: + if not 2 <= size1D <= 65: + raise ValueError("Size should be in [2, 65] range.") + return size + + @classmethod + def generate(cls, size, callback, channels=3, target_mode=None): + """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. + """ + size1D, size2D, size3D = cls._check_size(size) + if channels not in (3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + + table = [0] * (size1D * size2D * size3D * channels) + idx_out = 0 + for b in range(size3D): + for g in range(size2D): + for r in range(size1D): + table[idx_out : idx_out + channels] = callback( + r / (size1D - 1), g / (size2D - 1), b / (size3D - 1) + ) + idx_out += channels + + return cls( + (size1D, size2D, size3D), + table, + channels=channels, + target_mode=target_mode, + _copy_table=False, + ) + + def transform(self, callback, with_normals=False, channels=None, target_mode=None): + """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): + raise ValueError("Only 3 or 4 output channels are supported") + ch_in = self.channels + ch_out = channels or ch_in + size1D, size2D, size3D = self.size + + table = [0] * (size1D * size2D * size3D * ch_out) + idx_in = 0 + idx_out = 0 + for b in range(size3D): + for g in range(size2D): + for r in range(size1D): + values = self.table[idx_in : idx_in + ch_in] + if with_normals: + values = callback( + r / (size1D - 1), + g / (size2D - 1), + b / (size3D - 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): + 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): + from . import Image + + return image.color_lut_3d( + self.mode or image.mode, + Image.LINEAR, + self.channels, + self.size[0], + self.size[1], + self.size[2], + self.table, + ) diff --git a/venv/lib/python3.9/site-packages/PIL/ImageFont.py b/venv/lib/python3.9/site-packages/PIL/ImageFont.py new file mode 100644 index 0000000..c48d898 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageFont.py @@ -0,0 +1,1057 @@ +# +# 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. +# + +import base64 +import os +import sys +import warnings +from io import BytesIO + +from . import Image, features +from ._util import isDirectory, isPath + +LAYOUT_BASIC = 0 +LAYOUT_RAQM = 1 + + +class _imagingft_not_installed: + # module placeholder + def __getattr__(self, id): + raise ImportError("The _imagingft C module is not installed") + + +try: + from . import _imagingft as core +except ImportError: + core = _imagingft_not_installed() + + +# 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" + + def _load_pilfont(self, filename): + + with open(filename, "rb") as fp: + image = None + for ext in (".png", ".gif", ".pbm"): + if image: + image.close() + try: + fullname = os.path.splitext(filename)[0] + ext + image = Image.open(fullname) + except Exception: + pass + else: + if image and image.mode in ("1", "L"): + break + else: + if image: + image.close() + raise OSError("cannot find glyph data file") + + self.file = fullname + + self._load_pilfont_data(fp, image) + image.close() + + def _load_pilfont_data(self, file, image): + + # read PILfont header + if file.readline() != b"PILfont\n": + raise SyntaxError("Not a PILfont file") + 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"): + raise TypeError("invalid font image mode") + + image.load() + + self.font = Image.core.font(image.im, data) + + def getsize(self, text, *args, **kwargs): + """ + Returns width and height (in pixels) of given text. + + :param text: Text to measure. + + :return: (width, height) + """ + return self.font.getsize(text) + + def getmask(self, text, mode="", *args, **kwargs): + """ + 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. + """ + return self.font.getmask(text, mode) + + +## +# Wrapper for FreeType fonts. Application code should use the +# truetype factory function to create font objects. + + +class FreeTypeFont: + "FreeType font wrapper (requires _imagingft service)" + + def __init__(self, font=None, size=10, index=0, encoding="", layout_engine=None): + # FIXME: use service provider instead + + 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: + freetype_version = parse_version(features.version_module("freetype2")) + if freetype_version < parse_version("2.8"): + warnings.warn( + "Support for FreeType 2.7 is deprecated and will be removed" + " in Pillow 9 (2022-01-02). Please upgrade to FreeType 2.8 " + "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: + layout_engine = LAYOUT_BASIC + + self.layout_engine = layout_engine + + def load_from_bytes(f): + self.font_bytes = f.read() + self.font = core.getfont( + "", size, index, encoding, self.font_bytes, layout_engine + ) + + if isPath(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(font) + + def _multiline_split(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + return text.split(split_character) + + def getname(self): + """ + :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): + """ + :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, mode="", direction=None, features=None, language=None): + """ + 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 + + .. code-block:: python + + 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 + + .. code-block:: python + + 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) + + .. code-block:: python + + 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://docs.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: Width for horizontal, height for vertical text. + """ + return self.font.getlength(text, mode, direction, features, language) / 64 + + def getbbox( + self, + text, + mode="", + direction=None, + features=None, + language=None, + stroke_width=0, + anchor=None, + ): + """ + 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://docs.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. + See :ref:`text-anchors` for valid values. + + :return: ``(left, top, right, bottom)`` bounding box + """ + 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 getsize( + self, text, direction=None, features=None, language=None, stroke_width=0 + ): + """ + Returns width and height (in pixels) of given text if rendered in font with + provided direction, features, and language. + + Use :py:meth:`getlength()` to measure the offset of following text with + 1/64 pixel precision. + Use :py:meth:`getbbox()` to get the exact bounding box based on an anchor. + + .. note:: For historical reasons this function measures text height from + the ascender line instead of the top, see :ref:`text-anchors`. + If you wish to measure text height from the top, it is recommended + to use the bottom value of :meth:`getbbox` with ``anchor='lt'`` instead. + + :param text: Text to measure. + + :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://docs.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 + + :return: (width, height) + """ + # vertical offset is added for historical reasons + # see https://github.com/python-pillow/Pillow/pull/4910#discussion_r486682929 + size, offset = self.font.getsize(text, "L", direction, features, language) + return ( + size[0] + stroke_width * 2, + size[1] + stroke_width * 2 + offset[1], + ) + + def getsize_multiline( + self, + text, + direction=None, + spacing=4, + features=None, + language=None, + stroke_width=0, + ): + """ + Returns width and height (in pixels) of given text if rendered in font + with provided direction, features, and language, while respecting + newline characters. + + :param text: Text to measure. + + :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 spacing: The vertical gap between lines, defaulting to 4 pixels. + + :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://docs.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. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :return: (width, height) + """ + max_width = 0 + lines = self._multiline_split(text) + line_spacing = self.getsize("A", stroke_width=stroke_width)[1] + spacing + for line in lines: + line_width, line_height = self.getsize( + line, direction, features, language, stroke_width + ) + max_width = max(max_width, line_width) + + return max_width, len(lines) * line_spacing - spacing + + def getoffset(self, text): + """ + Returns the offset of given text. This is the gap between the + starting coordinate and the first marking. Note that this gap is + included in the result of :py:func:`~PIL.ImageFont.FreeTypeFont.getsize`. + + :param text: Text to measure. + + :return: A tuple of the x and y offset + """ + return self.font.getsize(text)[1] + + def getmask( + self, + text, + mode="", + direction=None, + features=None, + language=None, + stroke_width=0, + anchor=None, + ink=0, + ): + """ + 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://docs.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. + See :ref:`text-anchors` for valid values. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.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, + )[0] + + def getmask2( + self, + text, + mode="", + fill=Image.core.fill, + direction=None, + features=None, + language=None, + stroke_width=0, + anchor=None, + ink=0, + *args, + **kwargs, + ): + """ + 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://docs.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. + See :ref:`text-anchors` for valid values. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.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 + """ + size, offset = self.font.getsize( + text, mode, direction, features, language, anchor + ) + size = size[0] + stroke_width * 2, size[1] + stroke_width * 2 + offset = offset[0] - stroke_width, offset[1] - stroke_width + im = fill("RGBA" if mode == "RGBA" else "L", size, 0) + self.font.render( + text, im.id, mode, direction, features, language, stroke_width, ink + ) + return im, offset + + def font_variant( + self, font=None, size=None, index=None, encoding=None, layout_engine=None + ): + """ + 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. + """ + return FreeTypeFont( + font=self.path if font is None else 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): + """ + :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: + raise NotImplementedError("FreeType 2.9.1 or greater is required") from e + return [name.replace(b"\x00", b"") for name in names] + + def set_variation_by_name(self, name): + """ + :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) + + 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): + """ + :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: + raise NotImplementedError("FreeType 2.9.1 or greater is required") from e + for axis in axes: + axis["name"] = axis["name"].replace(b"\x00", b"") + return axes + + def set_variation_by_axes(self, axes): + """ + :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: + raise NotImplementedError("FreeType 2.9.1 or greater is required") from e + + +class TransposedFont: + "Wrapper for writing rotated or mirrored text" + + def __init__(self, font, orientation=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.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, + Image.ROTATE_90, Image.ROTATE_180, or Image.ROTATE_270. + """ + self.font = font + self.orientation = orientation # any 'transpose' argument, or None + + def getsize(self, text, *args, **kwargs): + w, h = self.font.getsize(text) + if self.orientation in (Image.ROTATE_90, Image.ROTATE_270): + return h, w + return w, h + + def getmask(self, text, mode="", *args, **kwargs): + im = self.font.getmask(text, mode, *args, **kwargs) + if self.orientation is not None: + return im.transpose(self.orientation) + return im + + +def load(filename): + """ + Load a font file. This function loads a font object from the given + bitmap font file, and returns the corresponding font object. + + :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=None, size=10, index=0, encoding="", layout_engine=None): + """ + 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. + + Pillow uses FreeType to open font files. If you are opening many fonts + simultaneously on Windows, be aware that Windows limits the number of files + that can be open in C at once to 512. If you approach that limit, an + ``OSError`` may be thrown, reporting that FreeType "cannot open resource". + + 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 or :file:`/Library/Fonts/`, + :file:`/System/Library/Fonts/` and :file:`~/Library/Fonts/` on + macOS. + + :param size: The requested size, in points. + :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: + :data:`.ImageFont.LAYOUT_BASIC` or :data:`.ImageFont.LAYOUT_RAQM`. + + 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. + """ + + def freetype(font): + return FreeTypeFont(font, size, index, encoding, layout_engine) + + try: + return freetype(font) + except OSError: + if not isPath(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"): + lindirs = os.environ.get("XDG_DATA_DIRS", "") + if not lindirs: + # According to the freedesktop spec, XDG_DATA_DIRS should + # default to /usr/share + lindirs = "/usr/share" + dirs += [os.path.join(lindir, "fonts") for lindir in lindirs.split(":")] + 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): + """ + 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. + """ + for directory in sys.path: + if isDirectory(directory): + if not isinstance(filename, str): + filename = filename.decode("utf-8") + try: + return load(os.path.join(directory, filename)) + except OSError: + pass + raise OSError("cannot find font file") + + +def load_default(): + """Load a "better than nothing" default font. + + .. versionadded:: 1.1.4 + + :return: A font object. + """ + 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 diff --git a/venv/lib/python3.9/site-packages/PIL/ImageGrab.py b/venv/lib/python3.9/site-packages/PIL/ImageGrab.py new file mode 100644 index 0000000..b93ec3f --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageGrab.py @@ -0,0 +1,120 @@ +# +# 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. +# + +import sys + +from . import Image + +if sys.platform == "darwin": + import os + import subprocess + import tempfile + + +def grab(bbox=None, include_layered_windows=False, all_screens=False, xdisplay=None): + if xdisplay is None: + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + subprocess.call(["screencapture", "-x", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_cropped = im.crop(bbox) + im.close() + return im_cropped + return im + elif sys.platform == "win32": + offset, size, data = Image.core.grabscreen_win32( + include_layered_windows, all_screens + ) + 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 + # use xdisplay=None for default display on non-win32/macOS systems + if not Image.core.HAVE_XCB: + raise OSError("Pillow was built without XCB support") + size, data = Image.core.grabscreen_x11(xdisplay) + im = Image.frombytes("RGB", size, data, "raw", "BGRX", size[0] * 4, 1) + if bbox: + im = im.crop(bbox) + return im + + +def grabclipboard(): + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".jpg") + os.close(fh) + commands = [ + 'set theFile to (open for access POSIX file "' + + filepath + + '" with write permission)', + "try", + " write (the clipboard as JPEG picture) to theFile", + "end try", + "close access theFile", + ] + script = ["osascript"] + for command in commands: + script += ["-e", command] + subprocess.call(script) + + im = None + if os.stat(filepath).st_size != 0: + im = Image.open(filepath) + im.load() + os.unlink(filepath) + return im + 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("utf-16le").split("\0") + else: + files = data[o:].decode("mbcs").split("\0") + return files[: files.index("")] + if isinstance(data, bytes): + import io + + 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: + raise NotImplementedError("ImageGrab.grabclipboard() is macOS and Windows only") diff --git a/venv/lib/python3.9/site-packages/PIL/ImageMath.py b/venv/lib/python3.9/site-packages/PIL/ImageMath.py new file mode 100644 index 0000000..7f9c88e --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageMath.py @@ -0,0 +1,253 @@ +# +# 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. +# + +import builtins + +from . import Image, _imagingmath + +VERBOSE = 0 + + +def _isconstant(v): + return isinstance(v, (int, float)) + + +class _Operand: + """Wraps an image operand, providing standard operators""" + + def __init__(self, im): + self.im = im + + def __fixup(self, im1): + # 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: + raise ValueError(f"unsupported mode: {im1.im.mode}") + else: + # argument was a constant + if _isconstant(im1) 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, im1, im2=None, mode=None): + im1 = self.__fixup(im1) + if im2 is None: + # unary operation + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + try: + op = getattr(_imagingmath, op + "_" + im1.mode) + except AttributeError as e: + raise TypeError(f"bad operand type for '{op}'") from e + _imagingmath.unop(op, out.im.id, im1.im.id) + else: + # binary operation + im2 = self.__fixup(im2) + if im1.mode != im2.mode: + # convert both arguments to floating point + if im1.mode != "F": + im1 = im1.convert("F") + if im2.mode != "F": + im2 = im2.convert("F") + if im1.mode != im2.mode: + raise ValueError("mode mismatch") + if im1.size != im2.size: + # crop both arguments to a common size + size = (min(im1.size[0], im2.size[0]), min(im1.size[1], im2.size[1])) + if im1.size != size: + im1 = im1.crop((0, 0) + size) + if im2.size != size: + im2 = im2.crop((0, 0) + size) + out = Image.new(mode or im1.mode, size, None) + else: + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + im2.load() + try: + op = getattr(_imagingmath, op + "_" + im1.mode) + except AttributeError as e: + raise TypeError(f"bad operand type for '{op}'") from e + _imagingmath.binop(op, out.im.id, im1.im.id, im2.im.id) + return _Operand(out) + + # unary operators + def __bool__(self): + # an image is "true" if it contains at least one non-zero pixel + return self.im.getbbox() is not None + + def __abs__(self): + return self.apply("abs", self) + + def __pos__(self): + return self + + def __neg__(self): + return self.apply("neg", self) + + # binary operators + def __add__(self, other): + return self.apply("add", self, other) + + def __radd__(self, other): + return self.apply("add", other, self) + + def __sub__(self, other): + return self.apply("sub", self, other) + + def __rsub__(self, other): + return self.apply("sub", other, self) + + def __mul__(self, other): + return self.apply("mul", self, other) + + def __rmul__(self, other): + return self.apply("mul", other, self) + + def __truediv__(self, other): + return self.apply("div", self, other) + + def __rtruediv__(self, other): + return self.apply("div", other, self) + + def __mod__(self, other): + return self.apply("mod", self, other) + + def __rmod__(self, other): + return self.apply("mod", other, self) + + def __pow__(self, other): + return self.apply("pow", self, other) + + def __rpow__(self, other): + return self.apply("pow", other, self) + + # bitwise + def __invert__(self): + return self.apply("invert", self) + + def __and__(self, other): + return self.apply("and", self, other) + + def __rand__(self, other): + return self.apply("and", other, self) + + def __or__(self, other): + return self.apply("or", self, other) + + def __ror__(self, other): + return self.apply("or", other, self) + + def __xor__(self, other): + return self.apply("xor", self, other) + + def __rxor__(self, other): + return self.apply("xor", other, self) + + def __lshift__(self, other): + return self.apply("lshift", self, other) + + def __rshift__(self, other): + return self.apply("rshift", self, other) + + # logical + def __eq__(self, other): + return self.apply("eq", self, other) + + def __ne__(self, other): + return self.apply("ne", self, other) + + def __lt__(self, other): + return self.apply("lt", self, other) + + def __le__(self, other): + return self.apply("le", self, other) + + def __gt__(self, other): + return self.apply("gt", self, other) + + def __ge__(self, other): + return self.apply("ge", self, other) + + +# conversions +def imagemath_int(self): + return _Operand(self.im.convert("I")) + + +def imagemath_float(self): + return _Operand(self.im.convert("F")) + + +# logical +def imagemath_equal(self, other): + return self.apply("eq", self, other, mode="I") + + +def imagemath_notequal(self, other): + return self.apply("ne", self, other, mode="I") + + +def imagemath_min(self, other): + return self.apply("min", self, other) + + +def imagemath_max(self, other): + return self.apply("max", self, other) + + +def imagemath_convert(self, mode): + return _Operand(self.im.convert(mode)) + + +ops = {} +for k, v in list(globals().items()): + if k[:10] == "imagemath_": + ops[k[10:]] = v + + +def eval(expression, _dict={}, **kw): + """ + Evaluates an image expression. + + :param expression: A string containing a Python-style expression. + :param options: 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. + """ + + # build execution namespace + args = ops.copy() + args.update(_dict) + args.update(kw) + for k, v in list(args.items()): + if hasattr(v, "im"): + args[k] = _Operand(v) + + out = builtins.eval(expression, args) + try: + return out.im + except AttributeError: + return out diff --git a/venv/lib/python3.9/site-packages/PIL/ImageMode.py b/venv/lib/python3.9/site-packages/PIL/ImageMode.py new file mode 100644 index 0000000..9882883 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageMode.py @@ -0,0 +1,64 @@ +# +# 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. +# + +# mode descriptor cache +_modes = None + + +class ModeDescriptor: + """Wrapper for mode strings.""" + + def __init__(self, mode, bands, basemode, basetype): + self.mode = mode + self.bands = bands + self.basemode = basemode + self.basetype = basetype + + def __str__(self): + return self.mode + + +def getmode(mode): + """Gets a mode descriptor for the given mode.""" + global _modes + if not _modes: + # initialize mode cache + + from . import Image + + modes = {} + # core modes + for m, (basemode, basetype, bands) in Image._MODEINFO.items(): + modes[m] = ModeDescriptor(m, bands, basemode, basetype) + # extra experimental modes + modes["RGBa"] = ModeDescriptor("RGBa", ("R", "G", "B", "a"), "RGB", "L") + modes["LA"] = ModeDescriptor("LA", ("L", "A"), "L", "L") + modes["La"] = ModeDescriptor("La", ("L", "a"), "L", "L") + modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L") + # mapping modes + for i16mode in ( + "I;16", + "I;16S", + "I;16L", + "I;16LS", + "I;16B", + "I;16BS", + "I;16N", + "I;16NS", + ): + modes[i16mode] = ModeDescriptor(i16mode, ("I",), "L", "L") + # set global mode cache atomically + _modes = modes + return _modes[mode] diff --git a/venv/lib/python3.9/site-packages/PIL/ImageMorph.py b/venv/lib/python3.9/site-packages/PIL/ImageMorph.py new file mode 100644 index 0000000..b76dfa0 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageMorph.py @@ -0,0 +1,245 @@ +# A binary morphology add-on for the Python Imaging Library +# +# History: +# 2014-06-04 Initial version. +# +# Copyright (c) 2014 Dov Grobgeld + +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=None, op_name=None): + if patterns is not None: + self.patterns = patterns + else: + self.patterns = [] + self.lut = 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: + raise Exception("Unknown pattern " + op_name + "!") + + self.patterns = known_patterns[op_name] + + def add_patterns(self, patterns): + self.patterns += patterns + + def build_default_lut(self): + 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): + return self.lut + + def _string_permute(self, pattern, permutation): + """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, options, basic_result): + """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[0:n]: + patterns.append((self._string_permute(pattern, MIRROR_MATRIX), res)) + + # negate + if "N" in options: + n = len(patterns) + for pattern, res in patterns[0: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): + """Compile all patterns into a morphology lut. + + TBD :Build based on (file) morphlut:modify_lut + """ + self.build_default_lut() + 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: + raise Exception('Syntax error in pattern "' + p + '"') + 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 + for i, pattern in enumerate(patterns): + p = pattern[0].replace(".", "X").replace("X", "[01]") + p = re.compile(p) + patterns[i] = (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 p, r in patterns: + if p.match(bitpattern): + self.lut[i] = [0, 1][r] + + return self.lut + + +class MorphOp: + """A class for binary morphological operators""" + + def __init__(self, lut=None, op_name=None, patterns=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): + """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: + raise Exception("No operator loaded") + + if image.mode != "L": + raise Exception("Image must be binary, meaning it must use mode L") + outimage = Image.new(image.mode, image.size, None) + count = _imagingmorph.apply(bytes(self.lut), image.im.id, outimage.im.id) + return count, outimage + + def match(self, image): + """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: + raise Exception("No operator loaded") + + if image.mode != "L": + raise Exception("Image must be binary, meaning it must use mode L") + return _imagingmorph.match(bytes(self.lut), image.im.id) + + def get_on_pixels(self, image): + """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": + raise Exception("Image must be binary, meaning it must use mode L") + return _imagingmorph.get_on_pixels(image.im.id) + + def load_lut(self, filename): + """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 + raise Exception("Wrong size operator file!") + + def save_lut(self, filename): + """Save an operator to an mrl file""" + if self.lut is None: + raise Exception("No operator loaded") + with open(filename, "wb") as f: + f.write(self.lut) + + def set_lut(self, lut): + """Set the lut from an external source""" + self.lut = lut diff --git a/venv/lib/python3.9/site-packages/PIL/ImageOps.py b/venv/lib/python3.9/site-packages/PIL/ImageOps.py new file mode 100644 index 0000000..14602a5 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageOps.py @@ -0,0 +1,558 @@ +# +# 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. +# + +import functools +import operator + +from . import Image + +# +# helpers + + +def _border(border): + 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, mode): + if isinstance(color, str): + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + return color + + +def _lut(image, lut): + if image.mode == "P": + # FIXME: apply to lookup table, not image data + raise NotImplementedError("mode P support coming soon") + elif image.mode in ("L", "RGB"): + if image.mode == "RGB" and len(lut) == 256: + lut = lut + lut + lut + return image.point(lut) + else: + raise OSError("not supported for this image mode") + + +# +# actions + + +def autocontrast(image, cutoff=0, ignore=None, mask=None): + """ + 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. + :return: An image. + """ + 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 + try: + h[ignore] = 0 + except TypeError: + # assume sequence + 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 = 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 = 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, black, white, mid=None, blackpoint=0, whitepoint=255, midpoint=127): + """ + 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 + black = _color(black, "RGB") + white = _color(white, "RGB") + if mid is not None: + mid = _color(mid, "RGB") + + # Empty lists for the mapping + red = [] + green = [] + blue = [] + + # Create the low-end values + for i in range(0, blackpoint): + red.append(black[0]) + green.append(black[1]) + blue.append(black[2]) + + # Create the mapping (2-color) + if mid is None: + + range_map = range(0, whitepoint - blackpoint) + + for i in range_map: + red.append(black[0] + i * (white[0] - black[0]) // len(range_map)) + green.append(black[1] + i * (white[1] - black[1]) // len(range_map)) + blue.append(black[2] + i * (white[2] - black[2]) // len(range_map)) + + # Create the mapping (3-color) + else: + + range_map1 = range(0, midpoint - blackpoint) + range_map2 = range(0, whitepoint - midpoint) + + for i in range_map1: + red.append(black[0] + i * (mid[0] - black[0]) // len(range_map1)) + green.append(black[1] + i * (mid[1] - black[1]) // len(range_map1)) + blue.append(black[2] + i * (mid[2] - black[2]) // len(range_map1)) + for i in range_map2: + red.append(mid[0] + i * (white[0] - mid[0]) // len(range_map2)) + green.append(mid[1] + i * (white[1] - mid[1]) // len(range_map2)) + blue.append(mid[2] + i * (white[2] - mid[2]) // len(range_map2)) + + # Create the high-end values + for i in range(0, 256 - whitepoint): + red.append(white[0]) + green.append(white[1]) + blue.append(white[2]) + + # Return converted image + image = image.convert("RGB") + return _lut(image, red + green + blue) + + +def pad(image, size, method=Image.BICUBIC, color=None, centering=(0.5, 0.5)): + """ + Returns a sized and padded version of the image, expanded to fill the + requested aspect ratio and size. + + :param image: The image to size and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: What resampling method to use. Default is + :py:attr:`PIL.Image.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. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio == dest_ratio: + out = image.resize(size, resample=method) + else: + out = Image.new(image.mode, size, color) + if im_ratio > dest_ratio: + new_height = int(image.height / image.width * size[0]) + if new_height != size[1]: + image = image.resize((size[0], new_height), resample=method) + + y = int((size[1] - new_height) * max(0, min(centering[1], 1))) + out.paste(image, (0, y)) + else: + new_width = int(image.width / image.height * size[1]) + if new_width != size[0]: + image = image.resize((new_width, size[1]), resample=method) + + x = int((size[0] - new_width) * max(0, min(centering[0], 1))) + out.paste(image, (x, 0)) + return out + + +def crop(image, border=0): + """ + 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, factor, resample=Image.BICUBIC): + """ + 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: What resampling method to use. Default is + :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + if factor == 1: + return image.copy() + elif factor <= 0: + raise ValueError("the factor must be greater than 0") + else: + size = (round(factor * image.width), round(factor * image.height)) + return image.resize(size, resample) + + +def deform(image, deformer, resample=Image.BILINEAR): + """ + 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.MESH, deformer.getmesh(image), resample) + + +def equalize(image, mask=None): + """ + 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, border=0, fill=0): + """ + 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 + out = Image.new(image.mode, (width, height), _color(fill, image.mode)) + out.paste(image, (left, top)) + return out + + +def fit(image, size, method=Image.BICUBIC, bleed=0.0, centering=(0.5, 0.5)): + """ + Returns a sized 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 size and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: What resampling method to use. Default is + :py:attr:`PIL.Image.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 + # http://www.cazabon.com + + # ensure centering is mutable + centering = list(centering) + + if not 0.0 <= centering[0] <= 1.0: + centering[0] = 0.5 + if not 0.0 <= centering[1] <= 1.0: + centering[1] = 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[0] + crop_top = bleed_pixels[1] + (live_size[1] - crop_height) * centering[1] + + 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): + """ + Flip the image vertically (top to bottom). + + :param image: The image to flip. + :return: An image. + """ + return image.transpose(Image.FLIP_TOP_BOTTOM) + + +def grayscale(image): + """ + Convert the image to grayscale. + + :param image: The image to convert. + :return: An image. + """ + return image.convert("L") + + +def invert(image): + """ + Invert (negate) the image. + + :param image: The image to invert. + :return: An image. + """ + lut = [] + for i in range(256): + lut.append(255 - i) + return _lut(image, lut) + + +def mirror(image): + """ + Flip image horizontally (left to right). + + :param image: The image to mirror. + :return: An image. + """ + return image.transpose(Image.FLIP_LEFT_RIGHT) + + +def posterize(image, bits): + """ + 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. + """ + lut = [] + mask = ~(2 ** (8 - bits) - 1) + for i in range(256): + lut.append(i & mask) + return _lut(image, lut) + + +def solarize(image, threshold=128): + """ + Invert all pixel values above a threshold. + + :param image: The image to solarize. + :param threshold: All pixels above this greyscale 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) + + +def exif_transpose(image): + """ + If an image has an EXIF Orientation tag, return a new image that is + transposed accordingly. Otherwise, return a copy of the image. + + :param image: The image to transpose. + :return: An image. + """ + exif = image.getexif() + orientation = exif.get(0x0112) + method = { + 2: Image.FLIP_LEFT_RIGHT, + 3: Image.ROTATE_180, + 4: Image.FLIP_TOP_BOTTOM, + 5: Image.TRANSPOSE, + 6: Image.ROTATE_270, + 7: Image.TRANSVERSE, + 8: Image.ROTATE_90, + }.get(orientation) + if method is not None: + transposed_image = image.transpose(method) + del exif[0x0112] + transposed_image.info["exif"] = exif.tobytes() + return transposed_image + return image.copy() diff --git a/venv/lib/python3.9/site-packages/PIL/ImagePalette.py b/venv/lib/python3.9/site-packages/PIL/ImagePalette.py new file mode 100644 index 0000000..d060411 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImagePalette.py @@ -0,0 +1,221 @@ +# +# 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. +# + +import array + +from . import GimpGradientFile, GimpPaletteFile, ImageColor, PaletteFile + + +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 and of length ``size`` + times the number of colors in ``mode``. The list must be aligned + by channel (All R values must be contiguous in the list before G + and B values.) Defaults to 0 through 255 per channel. + :param size: An optional palette size. If given, it cannot be equal to + or greater than 256. Defaults to 0. + """ + + def __init__(self, mode="RGB", palette=None, size=0): + self.mode = mode + self.rawmode = None # if set, palette contains raw data + self.palette = palette or bytearray(range(256)) * len(self.mode) + self.colors = {} + self.dirty = None + if (size == 0 and len(self.mode) * 256 != len(self.palette)) or ( + size != 0 and size != len(self.palette) + ): + raise ValueError("wrong palette size") + + def copy(self): + new = ImagePalette() + + new.mode = self.mode + new.rawmode = self.rawmode + if self.palette is not None: + new.palette = self.palette[:] + new.colors = self.colors.copy() + new.dirty = self.dirty + + return new + + def getdata(self): + """ + 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 + ";L", self.tobytes() + + def tobytes(self): + """Convert palette to bytes. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(self.palette, bytes): + return self.palette + arr = array.array("B", self.palette) + if hasattr(arr, "tobytes"): + return arr.tobytes() + return arr.tostring() + + # Declare tostring as an alias for tobytes + tostring = tobytes + + def getcolor(self, color): + """Given an rgb tuple, allocate palette entry. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(color, tuple): + try: + return self.colors[color] + except KeyError as e: + # allocate new color slot + if isinstance(self.palette, bytes): + self.palette = bytearray(self.palette) + index = len(self.colors) + if index >= 256: + raise ValueError("cannot allocate more than 256 colors") from e + self.colors[color] = index + self.palette[index] = color[0] + self.palette[index + 256] = color[1] + self.palette[index + 512] = color[2] + self.dirty = 1 + return index + else: + raise ValueError(f"unknown color specifier: {repr(color)}") + + def save(self, fp): + """Save palette to text file. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + 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, data): + palette = ImagePalette() + palette.rawmode = rawmode + palette.palette = data + palette.dirty = 1 + return palette + + +# -------------------------------------------------------------------- +# Factories + + +def make_linear_lut(black, white): + lut = [] + if black == 0: + for i in range(256): + lut.append(white * i // 255) + else: + raise NotImplementedError # FIXME + return lut + + +def make_gamma_lut(exp): + lut = [] + for i in range(256): + lut.append(int(((i / 255.0) ** exp) * 255.0 + 0.5)) + return lut + + +def negative(mode="RGB"): + palette = list(range(256)) + palette.reverse() + return ImagePalette(mode, palette * len(mode)) + + +def random(mode="RGB"): + from random import randint + + palette = [] + for i in range(256 * len(mode)): + palette.append(randint(0, 255)) + return ImagePalette(mode, palette) + + +def sepia(white="#fff0c0"): + r, g, b = ImageColor.getrgb(white) + r = make_linear_lut(0, r) + g = make_linear_lut(0, g) + b = make_linear_lut(0, b) + return ImagePalette("RGB", r + g + b) + + +def wedge(mode="RGB"): + return ImagePalette(mode, list(range(256)) * len(mode)) + + +def load(filename): + + # FIXME: supports GIMP gradients only + + with open(filename, "rb") as fp: + + for paletteHandler in [ + GimpPaletteFile.GimpPaletteFile, + GimpGradientFile.GimpGradientFile, + PaletteFile.PaletteFile, + ]: + try: + fp.seek(0) + lut = paletteHandler(fp).getpalette() + if lut: + break + except (SyntaxError, ValueError): + # import traceback + # traceback.print_exc() + pass + else: + raise OSError("cannot load palette") + + return lut # data, rawmode diff --git a/venv/lib/python3.9/site-packages/PIL/ImagePath.py b/venv/lib/python3.9/site-packages/PIL/ImagePath.py new file mode 100644 index 0000000..3d3538c --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImagePath.py @@ -0,0 +1,19 @@ +# +# 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 . import Image + +Path = Image.core.path diff --git a/venv/lib/python3.9/site-packages/PIL/ImageQt.py b/venv/lib/python3.9/site-packages/PIL/ImageQt.py new file mode 100644 index 0000000..64f07be --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageQt.py @@ -0,0 +1,202 @@ +# +# 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. +# + +import sys +from io import BytesIO + +from . import Image +from ._util import isPath + +qt_versions = [ + ["side6", "PySide6"], + ["5", "PyQt5"], + ["side2", "PySide2"], +] + +# If a version has already been imported, attempt it first +qt_versions.sort(key=lambda qt_version: qt_version[1] in sys.modules, reverse=True) +for qt_version, qt_module in qt_versions: + try: + if qt_module == "PySide6": + from PySide6.QtCore import QBuffer, QIODevice + from PySide6.QtGui import QImage, QPixmap, qRgba + elif qt_module == "PyQt5": + from PyQt5.QtCore import QBuffer, QIODevice + from PyQt5.QtGui import QImage, QPixmap, qRgba + elif qt_module == "PySide2": + from PySide2.QtCore import QBuffer, QIODevice + from PySide2.QtGui import QImage, QPixmap, qRgba + except (ImportError, RuntimeError): + continue + qt_is_installed = True + break +else: + qt_is_installed = False + qt_version = None + + +def rgb(r, g, b, a=255): + """(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): + """ + :param im: A PIL Image object, or a file name + (given either as Python string or a PyQt string object) + """ + buffer = QBuffer() + buffer.open(QIODevice.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): + return fromqimage(im) + # buffer = QBuffer() + # buffer.open(QIODevice.ReadWrite) + # # im.save(buffer) + # # What if png doesn't support some image features like animation? + # im.save(buffer, 'ppm') + # bytes_io = BytesIO() + # bytes_io.write(buffer.data()) + # buffer.close() + # bytes_io.seek(0) + # return Image.open(bytes_io) + + +def align8to32(bytes, width, mode): + """ + converts each scanline of data from 8 bit to 32 bit aligned + """ + + bits_per_pixel = {"1": 1, "L": 8, "P": 8}[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 = [] + for i in range(len(bytes) // bytes_per_line): + new_data.append( + bytes[i * bytes_per_line : (i + 1) * bytes_per_line] + + b"\x00" * extra_padding + ) + + return b"".join(new_data) + + +def _toqclass_helper(im): + data = None + colortable = None + + # 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 isPath(im): + im = Image.open(im) + + if im.mode == "1": + format = QImage.Format_Mono + elif im.mode == "L": + format = QImage.Format_Indexed8 + colortable = [] + for i in range(256): + colortable.append(rgb(i, i, i)) + elif im.mode == "P": + format = QImage.Format_Indexed8 + colortable = [] + palette = im.getpalette() + for i in range(0, len(palette), 3): + colortable.append(rgb(*palette[i : i + 3])) + elif im.mode == "RGB": + data = im.tobytes("raw", "BGRX") + format = QImage.Format_RGB32 + elif im.mode == "RGBA": + data = im.tobytes("raw", "BGRA") + format = QImage.Format_ARGB32 + else: + raise ValueError(f"unsupported image mode {repr(im.mode)}") + + __data = data or align8to32(im.tobytes(), im.size[0], im.mode) + return {"data": __data, "im": im, "format": format, "colortable": colortable} + + +if qt_is_installed: + + class ImageQt(QImage): + def __init__(self, im): + """ + 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["im"].size[0], + im_data["im"].size[1], + im_data["format"], + ) + if im_data["colortable"]: + self.setColorTable(im_data["colortable"]) + + +def toqimage(im): + return ImageQt(im) + + +def toqpixmap(im): + # # This doesn't work. For now using a dumb approach. + # im_data = _toqclass_helper(im) + # result = QPixmap(im_data['im'].size[0], im_data['im'].size[1]) + # result.loadFromData(im_data['data']) + # Fix some strange bug that causes + if im.mode == "RGB": + im = im.convert("RGBA") + + qimage = toqimage(im) + return QPixmap.fromImage(qimage) diff --git a/venv/lib/python3.9/site-packages/PIL/ImageSequence.py b/venv/lib/python3.9/site-packages/PIL/ImageSequence.py new file mode 100644 index 0000000..9df910a --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageSequence.py @@ -0,0 +1,75 @@ +# +# 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. +# + +## + + +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): + if not hasattr(im, "seek"): + raise AttributeError("im must have seek method") + self.im = im + self.position = getattr(self.im, "_min_frame", 0) + + def __getitem__(self, ix): + try: + self.im.seek(ix) + return self.im + except EOFError as e: + raise IndexError from e # end of sequence + + def __iter__(self): + return self + + def __next__(self): + try: + self.im.seek(self.position) + self.position += 1 + return self.im + except EOFError as e: + raise StopIteration from e + + +def all_frames(im, func=None): + """ + 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/venv/lib/python3.9/site-packages/PIL/ImageShow.py b/venv/lib/python3.9/site-packages/PIL/ImageShow.py new file mode 100644 index 0000000..1ada825 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageShow.py @@ -0,0 +1,236 @@ +# +# 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. +# +import os +import shutil +import subprocess +import sys +import tempfile +from shlex import quote + +from PIL import Image + +_viewers = [] + + +def register(viewer, order=1): + """ + The :py:func:`register` function is used to register additional viewers. + + :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. + """ + try: + if issubclass(viewer, Viewer): + viewer = viewer() + except TypeError: + pass # raised if viewer wasn't a class + if order > 0: + _viewers.append(viewer) + else: + _viewers.insert(0, viewer) + + +def show(image, title=None, **options): + 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 1 + return 0 + + +class Viewer: + """Base class for viewers.""" + + # main api + + def show(self, image, **options): + """ + The main function for displaying an image. + Converts the given image to the target format and displays it. + """ + + # save temporary image to disk + 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 = None + """The format to convert the image into.""" + options = {} + """Additional options used to convert the image.""" + + def get_format(self, image): + """Return format name, or ``None`` to save as PGM/PPM.""" + return self.format + + def get_command(self, file, **options): + """ + Returns the command used to display the file. + Not implemented in the base class. + """ + raise NotImplementedError + + def save_image(self, image): + """Save to temporary file and return filename.""" + return image._dump(format=self.get_format(image), **self.options) + + def show_image(self, image, **options): + """Display the given image.""" + return self.show_file(self.save_image(image), **options) + + def show_file(self, file, **options): + """Display the given file.""" + os.system(self.get_command(file, **options)) + return 1 + + +# -------------------------------------------------------------------- + + +class WindowsViewer(Viewer): + """The default viewer on Windows is the default system application for PNG files.""" + + format = "PNG" + options = {"compress_level": 1} + + def get_command(self, file, **options): + return ( + f'start "Pillow" /WAIT "{file}" ' + "&& ping -n 2 127.0.0.1 >NUL " + f'&& del /f "{file}"' + ) + + +if sys.platform == "win32": + register(WindowsViewer) + + +class MacViewer(Viewer): + """The default viewer on MacOS using ``Preview.app``.""" + + format = "PNG" + options = {"compress_level": 1} + + def get_command(self, file, **options): + # 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, file, **options): + """Display given file""" + fd, path = tempfile.mkstemp() + with os.fdopen(fd, "w") as f: + f.write(file) + with open(path) as f: + subprocess.Popen( + ["im=$(cat); open -a Preview.app $im; sleep 20; rm -f $im"], + shell=True, + stdin=f, + ) + os.remove(path) + return 1 + + +if sys.platform == "darwin": + register(MacViewer) + + +class UnixViewer(Viewer): + format = "PNG" + options = {"compress_level": 1} + + def get_command(self, file, **options): + command = self.get_command_ex(file, **options)[0] + return f"({command} {quote(file)}; rm -f {quote(file)})&" + + def show_file(self, file, **options): + """Display given file""" + fd, path = tempfile.mkstemp() + with os.fdopen(fd, "w") as f: + f.write(file) + with open(path) as f: + command = self.get_command_ex(file, **options)[0] + subprocess.Popen( + ["im=$(cat);" + command + " $im; rm -f $im"], shell=True, stdin=f + ) + os.remove(path) + return 1 + + +class DisplayViewer(UnixViewer): + """The ImageMagick ``display`` command.""" + + def get_command_ex(self, file, **options): + command = executable = "display" + return command, executable + + +class EogViewer(UnixViewer): + """The GNOME Image Viewer ``eog`` command.""" + + def get_command_ex(self, file, **options): + command = executable = "eog" + return command, executable + + +class XVViewer(UnixViewer): + """ + The X Viewer ``xv`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex(self, file, title=None, **options): + # 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 + + +if sys.platform not in ("win32", "darwin"): # unixoids + if shutil.which("display"): + register(DisplayViewer) + if shutil.which("eog"): + register(EogViewer) + if shutil.which("xv"): + register(XVViewer) + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python ImageShow.py imagefile [title]") + sys.exit() + + with Image.open(sys.argv[1]) as im: + print(show(im, *sys.argv[2:])) diff --git a/venv/lib/python3.9/site-packages/PIL/ImageStat.py b/venv/lib/python3.9/site-packages/PIL/ImageStat.py new file mode 100644 index 0000000..50bafc9 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageStat.py @@ -0,0 +1,147 @@ +# +# 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. +# + +import functools +import math +import operator + + +class Stat: + def __init__(self, image_or_list, mask=None): + try: + if mask: + self.h = image_or_list.histogram(mask) + else: + self.h = image_or_list.histogram() + except AttributeError: + self.h = image_or_list # assume it to be a histogram list + if not isinstance(self.h, list): + raise TypeError("first argument must be image or list") + self.bands = list(range(len(self.h) // 256)) + + def __getattr__(self, id): + """Calculate missing attribute""" + if id[:4] == "_get": + raise AttributeError(id) + # calculate missing attribute + v = getattr(self, "_get" + id)() + setattr(self, id, v) + return v + + def _getextrema(self): + """Get min/max values for each band in the image""" + + def minmax(histogram): + n = 255 + x = 0 + for i in range(256): + if histogram[i]: + n = min(n, i) + x = max(x, i) + return n, x # returns (255, 0) if there's no data in the histogram + + v = [] + for i in range(0, len(self.h), 256): + v.append(minmax(self.h[i:])) + return v + + def _getcount(self): + """Get total number of pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + v.append(functools.reduce(operator.add, self.h[i : i + 256])) + return v + + def _getsum(self): + """Get sum of all pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + layerSum = 0.0 + for j in range(256): + layerSum += j * self.h[i + j] + v.append(layerSum) + return v + + def _getsum2(self): + """Get squared sum of all pixels in each layer""" + + 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 + + def _getmean(self): + """Get average pixel level for each layer""" + + v = [] + for i in self.bands: + v.append(self.sum[i] / self.count[i]) + return v + + def _getmedian(self): + """Get median pixel level for each layer""" + + 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 + + def _getrms(self): + """Get RMS for each layer""" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.sum2[i] / self.count[i])) + return v + + def _getvar(self): + """Get variance for each layer""" + + v = [] + for i in self.bands: + n = self.count[i] + v.append((self.sum2[i] - (self.sum[i] ** 2.0) / n) / n) + return v + + def _getstddev(self): + """Get standard deviation for each layer""" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.var[i])) + return v + + +Global = Stat # compatibility diff --git a/venv/lib/python3.9/site-packages/PIL/ImageTk.py b/venv/lib/python3.9/site-packages/PIL/ImageTk.py new file mode 100644 index 0000000..62db7a7 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageTk.py @@ -0,0 +1,300 @@ +# +# 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. +# + +import tkinter +from io import BytesIO + +from . import Image + +# -------------------------------------------------------------------- +# Check for Tkinter interface hooks + +_pilbitmap_ok = None + + +def _pilbitmap_check(): + global _pilbitmap_ok + if _pilbitmap_ok is None: + try: + im = Image.new("1", (1, 1)) + tkinter.BitmapImage(data=f"PIL:{im.im.id}") + _pilbitmap_ok = 1 + except tkinter.TclError: + _pilbitmap_ok = 0 + return _pilbitmap_ok + + +def _get_image_from_kw(kw): + source = None + if "file" in kw: + source = kw.pop("file") + elif "data" in kw: + source = BytesIO(kw.pop("data")) + if source: + return Image.open(source) + + +# -------------------------------------------------------------------- +# 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=None, size=None, **kw): + + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if hasattr(image, "mode") and hasattr(image, "size"): + # got an image instead of a mode + mode = image.mode + if mode == "P": + # palette mapped data + image.load() + try: + mode = image.palette.mode + except AttributeError: + mode = "RGB" # default + size = image.size + kw["width"], kw["height"] = size + else: + mode = image + image = None + + 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): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def __str__(self): + """ + 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): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def paste(self, im, box=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. + :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. + """ + + # convert to blittable + im.load() + image = im.im + if image.isblock() and im.mode == self.__mode: + block = image + else: + block = image.new_block(self.__mode, im.size) + image.convert2(block, image) # convert directly between buffers + + tk = self.__photo.tk + + try: + tk.call("PyImagingPhoto", self.__photo, block.id) + except tkinter.TclError: + # activate Tkinter hook + try: + from . import _imagingtk + + try: + if hasattr(tk, "interp"): + # Required for PyPy, which always has CFFI installed + from cffi import FFI + + ffi = FFI() + + # PyPy is using an FFI CDATA element + # (Pdb) self.tk.interp + # + _imagingtk.tkinit(int(ffi.cast("uintptr_t", tk.interp)), 1) + else: + _imagingtk.tkinit(tk.interpaddr(), 1) + except AttributeError: + _imagingtk.tkinit(id(tk), 0) + tk.call("PyImagingPhoto", self.__photo, block.id) + except (ImportError, AttributeError, tkinter.TclError): + raise # configuration problem; cannot attach to Tkinter + + +# -------------------------------------------------------------------- +# 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=None, **kw): + + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + self.__mode = image.mode + self.__size = image.size + + if _pilbitmap_check(): + # fast way (requires the pilbitmap booster patch) + image.load() + kw["data"] = f"PIL:{image.im.id}" + self.__im = image # must keep a reference + else: + # slow but safe way + kw["data"] = image.tobitmap() + self.__photo = tkinter.BitmapImage(**kw) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def width(self): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def __str__(self): + """ + 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): + """Copies the contents of a PhotoImage to a PIL image memory.""" + im = Image.new("RGBA", (photo.width(), photo.height())) + block = im.im + + photo.tk.call("PyImagingPhotoGet", photo, block.id) + + return im + + +def _show(image, title): + """Helper for the Image.show method.""" + + class UI(tkinter.Label): + def __init__(self, master, im): + if im.mode == "1": + self.image = BitmapImage(im, foreground="white", master=master) + else: + self.image = PhotoImage(im, master=master) + super().__init__(master, image=self.image, bg="black", bd=0) + + if not tkinter._default_root: + raise OSError("tkinter not initialized") + top = tkinter.Toplevel() + if title: + top.title(title) + UI(top, image).pack() diff --git a/venv/lib/python3.9/site-packages/PIL/ImageTransform.py b/venv/lib/python3.9/site-packages/PIL/ImageTransform.py new file mode 100644 index 0000000..77791ab --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageTransform.py @@ -0,0 +1,102 @@ +# +# 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 . import Image + + +class Transform(Image.ImageTransformHandler): + def __init__(self, data): + self.data = data + + def getdata(self): + return self.method, self.data + + def transform(self, size, image, **options): + # 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 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:`~PIL.Image.Image.transform` + + :param matrix: A 6-tuple (a, b, c, d, e, f) containing the first two rows + from an affine transform matrix. + """ + + method = Image.AFFINE + + +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:`~PIL.Image.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.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:`~PIL.Image.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.QUAD + + +class MeshTransform(Transform): + """ + Define a mesh image transform. A mesh transform consists of one or more + individual quad transforms. + + See :py:meth:`~PIL.Image.Image.transform` + + :param data: A list of (bbox, quad) tuples. + """ + + method = Image.MESH diff --git a/venv/lib/python3.9/site-packages/PIL/ImageWin.py b/venv/lib/python3.9/site-packages/PIL/ImageWin.py new file mode 100644 index 0000000..ca9b14c --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImageWin.py @@ -0,0 +1,230 @@ +# +# 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 . 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): + self.dc = dc + + def __int__(self): + 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): + self.wnd = wnd + + def __int__(self): + 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 greylevels + are allocated. For an "RGB" image, a 6x6x6 colour cube is used, together + with 20 greylevels. + + 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, size=None): + if hasattr(image, "mode") and hasattr(image, "size"): + mode = image.mode + size = image.size + else: + mode = image + image = None + 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: + self.paste(image) + + def expose(self, handle): + """ + 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. + """ + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.expose(dc) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.expose(handle) + return result + + def draw(self, handle, dst, src=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 not src: + src = (0, 0) + self.size + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.draw(dc, dst, src) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.draw(handle, dst, src) + return result + + def query_palette(self, handle): + """ + 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: A true value if one or more entries were changed (this + indicates that the image should be redrawn). + """ + if isinstance(handle, HWND): + handle = self.image.getdc(handle) + try: + result = self.image.query_palette(handle) + finally: + self.image.releasedc(handle, handle) + else: + result = self.image.query_palette(handle) + return result + + def paste(self, im, box=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): + """ + Load display memory contents from byte data. + + :param buffer: A buffer containing display data (usually + data returned from :py:func:`~PIL.ImageWin.Dib.tobytes`) + """ + return self.image.frombytes(buffer) + + def tobytes(self): + """ + 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="PIL", width=None, height=None): + self.hwnd = Image.core.createwindow( + title, self.__dispatcher, width or 0, height or 0 + ) + + def __dispatcher(self, action, *args): + return getattr(self, "ui_handle_" + action)(*args) + + def ui_handle_clear(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_damage(self, x0, y0, x1, y1): + pass + + def ui_handle_destroy(self): + pass + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_resize(self, width, height): + pass + + def mainloop(self): + Image.core.eventloop() + + +class ImageWindow(Window): + """Create an image window which displays the given image.""" + + def __init__(self, image, title="PIL"): + 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, x0, y0, x1, y1): + self.image.draw(dc, (x0, y0, x1, y1)) diff --git a/venv/lib/python3.9/site-packages/PIL/ImtImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/ImtImagePlugin.py new file mode 100644 index 0000000..21ffd74 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/ImtImagePlugin.py @@ -0,0 +1,93 @@ +# +# 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. +# + + +import re + +from . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +field = re.compile(br"([a-z]*) ([^ \r\n]*)") + + +## +# Image plugin for IM Tools images. + + +class ImtImageFile(ImageFile.ImageFile): + + format = "IMT" + format_description = "IM Tools" + + def _open(self): + + # Quick rejection: if there's not a LF among the first + # 100 bytes, this is (probably) not a text header. + + if b"\n" not in self.fp.read(100): + raise SyntaxError("not an IM file") + self.fp.seek(0) + + xsize = ysize = 0 + + while True: + + s = self.fp.read(1) + if not s: + break + + if s == b"\x0C": + + # image data begins + self.tile = [ + ("raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1)) + ] + + break + + else: + + # read key/value pair + # FIXME: dangerous, may read whole file + s = s + self.fp.readline() + 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 == "width": + xsize = int(v) + self._size = xsize, ysize + elif k == "height": + ysize = int(v) + self._size = xsize, ysize + elif k == "pixel" and v == "n8": + self.mode = "L" + + +# +# -------------------------------------------------------------------- + +Image.register_open(ImtImageFile.format, ImtImageFile) + +# +# no extension registered (".im" is simply too common) diff --git a/venv/lib/python3.9/site-packages/PIL/IptcImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/IptcImagePlugin.py new file mode 100644 index 0000000..0bbe506 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/IptcImagePlugin.py @@ -0,0 +1,230 @@ +# +# 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. +# +import os +import tempfile + +from . import Image, ImageFile +from ._binary import i8 +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 + +COMPRESSION = {1: "raw", 5: "jpeg"} + +PAD = o8(0) * 4 + + +# +# Helpers + + +def i(c): + return i32((PAD + c)[-4:]) + + +def dump(c): + for i in c: + print("%02x" % i8(i), 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): + return i(self.info[key]) + + def field(self): + # + # get a IPTC field header + s = self.fp.read(5) + if not len(s): + return None, 0 + + tag = s[1], s[2] + + # syntax + if s[0] != 0x1C or tag[0] < 1 or tag[0] > 9: + raise SyntaxError("invalid IPTC/NAA file") + + # field size + size = s[3] + if size > 132: + raise OSError("illegal field length in IPTC/NAA file") + 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): + + # 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 = i8(self.info[(3, 60)][0]) + component = i8(self.info[(3, 60)][1]) + if (3, 65) in self.info: + id = i8(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: + raise OSError("Unknown IPTC image compression") from e + + # tile + if tag == (8, 10): + self.tile = [ + ("iptc", (compression, offset), (0, 0, self.size[0], self.size[1])) + ] + + def load(self): + + if len(self.tile) != 1 or self.tile[0][0] != "iptc": + return ImageFile.ImageFile.load(self) + + type, tile, box = self.tile[0] + + encoding, offset = tile + + self.fp.seek(offset) + + # Copy image data to temporary file + o_fd, outfile = tempfile.mkstemp(text=False) + o = os.fdopen(o_fd) + if encoding == "raw": + # To simplify access to the extracted file, + # prepend a PPM header + o.write("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) + o.close() + + try: + with Image.open(outfile) as _im: + _im.load() + self.im = _im.im + finally: + try: + os.unlink(outfile) + except OSError: + pass + + +Image.register_open(IptcImageFile.format, IptcImageFile) + +Image.register_extension(IptcImageFile.format, ".iim") + + +def getiptcinfo(im): + """ + 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. + """ + import io + + from . import JpegImagePlugin, TiffImagePlugin + + data = None + + if isinstance(im, IptcImageFile): + # return info dictionary right away + return im.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.tagdata[TiffImagePlugin.IPTC_NAA_CHUNK] + except (AttributeError, KeyError): + pass + + if data is None: + return None # no properties + + # create an IptcImagePlugin object without initializing it + class FakeImage: + pass + + im = FakeImage() + im.__class__ = IptcImageFile + + # parse the IPTC information chunk + im.info = {} + im.fp = io.BytesIO(data) + + try: + im._open() + except (IndexError, KeyError): + pass # expected failure + + return im.info diff --git a/venv/lib/python3.9/site-packages/PIL/Jpeg2KImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/Jpeg2KImagePlugin.py new file mode 100644 index 0000000..0b0d433 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/Jpeg2KImagePlugin.py @@ -0,0 +1,314 @@ +# +# The Python Imaging Library +# $Id$ +# +# JPEG2000 file handling +# +# History: +# 2014-03-12 ajh Created +# +# Copyright (c) 2014 Coriolis Systems Limited +# Copyright (c) 2014 Alastair Houghton +# +# See the README file for information on usage and redistribution. +# +import io +import os +import struct + +from . import Image, ImageFile + + +def _parse_codestream(fp): + """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 = struct.unpack(">H", hdr)[0] + siz = hdr + fp.read(lsiz - 2) + lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, _, _, _, _, csiz = struct.unpack_from( + ">HHIIIIIIIIH", siz + ) + ssiz = [None] * csiz + xrsiz = [None] * csiz + yrsiz = [None] * csiz + for i in range(csiz): + ssiz[i], xrsiz[i], yrsiz[i] = struct.unpack_from(">BBB", siz, 36 + 3 * i) + + size = (xsiz - xosiz, ysiz - yosiz) + if csiz == 1: + if (yrsiz[0] & 0x7F) > 8: + mode = "I;16" + else: + mode = "L" + elif csiz == 2: + mode = "LA" + elif csiz == 3: + mode = "RGB" + elif csiz == 4: + mode = "RGBA" + else: + mode = None + + return (size, mode) + + +def _parse_jp2_header(fp): + """Parse the JP2 header box to extract size, component count and + color space information, returning a (size, mode, mimetype) tuple.""" + + # Find the JP2 header box + header = None + mimetype = None + while True: + lbox, tbox = struct.unpack(">I4s", fp.read(8)) + if lbox == 1: + lbox = struct.unpack(">Q", fp.read(8))[0] + hlen = 16 + else: + hlen = 8 + + if lbox < hlen: + raise SyntaxError("Invalid JP2 header length") + + if tbox == b"jp2h": + header = fp.read(lbox - hlen) + break + elif tbox == b"ftyp": + if fp.read(4) == b"jpx ": + mimetype = "image/jpx" + fp.seek(lbox - hlen - 4, os.SEEK_CUR) + else: + fp.seek(lbox - hlen, os.SEEK_CUR) + + if header is None: + raise SyntaxError("could not find JP2 header") + + size = None + mode = None + bpc = None + nc = None + + hio = io.BytesIO(header) + while True: + lbox, tbox = struct.unpack(">I4s", hio.read(8)) + if lbox == 1: + lbox = struct.unpack(">Q", hio.read(8))[0] + hlen = 16 + else: + hlen = 8 + + content = hio.read(lbox - hlen) + + if tbox == b"ihdr": + height, width, nc, bpc, c, unkc, ipr = struct.unpack(">IIHBBBB", content) + size = (width, height) + if unkc: + 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" + break + elif tbox == b"colr": + meth, prec, approx = struct.unpack_from(">BBB", content) + if meth == 1: + cs = struct.unpack_from(">I", content, 3)[0] + if cs == 16: # sRGB + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + break + elif cs == 17: # grayscale + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 2: + mode = "LA" + break + elif cs == 18: # sYCC + if nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + break + + if size is None or mode is None: + raise SyntaxError("Malformed jp2 header") + + return (size, mode, mimetype) + + +## +# Image plugin for JPEG2000 images. + + +class Jpeg2KImageFile(ImageFile.ImageFile): + format = "JPEG2000" + format_description = "JPEG 2000 (ISO 15444)" + + def _open(self): + sig = self.fp.read(4) + if sig == b"\xff\x4f\xff\x51": + self.codec = "j2k" + self._size, self.mode = _parse_codestream(self.fp) + 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 = header + else: + raise SyntaxError("not a JPEG 2000 file") + + if self.size is None or self.mode is None: + raise SyntaxError("unable to determine size/mode") + + 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 = [ + ( + "jpeg2k", + (0, 0) + self.size, + 0, + (self.codec, self._reduce, self.layers, fd, length), + ) + ] + + @property + def reduce(self): + # 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): + self._reduce = value + + def load(self): + 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] + t3 = (t[3][0], self._reduce, self.layers, t[3][3], t[3][4]) + self.tile = [(t[0], (0, 0) + self.size, t[2], t3)] + + return ImageFile.ImageFile.load(self) + + +def _accept(prefix): + return ( + prefix[:4] == b"\xff\x4f\xff\x51" + or prefix[:12] == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ) + + +# ------------------------------------------------------------ +# Save support + + +def _save(im, fp, filename): + if filename.endswith(".j2k"): + kind = "j2k" + else: + kind = "jp2" + + # Get the keyword arguments + info = im.encoderinfo + + 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 + ] + ) + ): + raise ValueError("quality_layers must be a sequence of numbers") + + 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") + 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, + fd, + ) + + ImageFile._save(im, fp, [("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/venv/lib/python3.9/site-packages/PIL/JpegImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/JpegImagePlugin.py new file mode 100644 index 0000000..054495e --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/JpegImagePlugin.py @@ -0,0 +1,805 @@ +# +# 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. +# +import array +import io +import os +import struct +import subprocess +import sys +import tempfile +import warnings + +from . import Image, ImageFile, TiffImagePlugin +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from .JpegPresets import presets + +# +# Parser + + +def Skip(self, marker): + n = i16(self.fp.read(2)) - 2 + ImageFile._safe_read(self.fp, n) + + +def APP(self, marker): + # + # 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 = "APP%d" % (marker & 15) + + self.app[app] = s # compatibility + self.applist.append((app, s)) + + if marker == 0xFFE0 and s[:4] == 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 + self.info["jfif_unit"] = jfif_unit + self.info["jfif_density"] = jfif_density + elif marker == 0xFFE1 and s[:5] == b"Exif\0": + if "exif" not in self.info: + # extract EXIF information (incomplete) + self.info["exif"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:5] == b"FPXR\0": + # extract FlashPix information (incomplete) + self.info["flashpix"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:12] == 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[:14] == 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 + data = { + "XResolution": i32(data, 0) / 65536, + "DisplayedUnitsX": i16(data, 4), + "YResolution": i32(data, 8) / 65536, + "DisplayedUnitsY": i16(data, 12), + } + photoshop[code] = data + offset += size + offset += offset & 1 # align + except struct.error: + break # insufficient data + + elif marker == 0xFFEE and s[:5] == b"Adobe": + self.info["adobe"] = i16(s, 5) + # extract Adobe custom properties + try: + adobe_transform = s[1] + except Exception: + pass + else: + self.info["adobe_transform"] = adobe_transform + elif marker == 0xFFE2 and s[:4] == 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 + + # If DPI isn't in JPEG header, fetch from EXIF + if "dpi" not in self.info and "exif" in self.info: + 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 resolution_unit == 3: # cm + # 1 dpcm = 2.54 dpi + dpi *= 2.54 + self.info["dpi"] = int(dpi + 0.5), int(dpi + 0.5) + except (KeyError, SyntaxError, ValueError, ZeroDivisionError): + # SyntaxError for invalid/unreadable EXIF + # KeyError for dpi not included + # ZeroDivisionError for invalid dpi rational value + # ValueError for x_resolution[0] being an invalid float + self.info["dpi"] = 72, 72 + + +def COM(self, marker): + # + # 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, marker): + # + # 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: + raise SyntaxError(f"cannot handle {self.bits}-bit layers") + + 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: + raise SyntaxError(f"cannot handle {self.layers}-layer images") + + 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 = [] + for p in self.icclist: + profile.append(p[14:]) + 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, marker): + # + # 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: + raise SyntaxError("bad quantization table marker") + 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 + 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): + # Magic number was taken from https://en.wikipedia.org/wiki/JPEG + return prefix[0:3] == 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): + + s = self.fp.read(3) + + if not _accept(s): + raise SyntaxError("not a JPEG file") + s = b"\xFF" + + # Create attributes + self.bits = self.layers = 0 + + # JPEG specifics (internal) + self.layer = [] + self.huffman_dc = {} + self.huffman_ac = {} + self.quantization = {} + self.app = {} # compatibility + self.applist = [] + self.icclist = [] + + 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 = [("jpeg", (0, 0) + self.size, 0, (rawmode, ""))] + # self.__offset = self.fp.tell() + break + s = self.fp.read(1) + elif i == 0 or i == 0xFFFF: + # padded marker or junk; move on + s = b"\xff" + elif i == 0xFF00: # Skip extraneous data (escaped 0xFF) + s = self.fp.read(1) + else: + raise SyntaxError("no marker found") + + def load_read(self, read_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: + # Premature EOF. + # Pretend file is finished adding EOI marker + return b"\xFF\xD9" + + return s + + def draft(self, mode, size): + + if len(self.tile) != 1: + return + + # Protect from second call + if self.decoderconfig: + return + + d, e, o, a = self.tile[0] + scale = 1 + original_size = self.size + + 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 + 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 = [(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): + + # 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: + raise ValueError("Invalid Filename") + + 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): + return _getexif(self) + + def _getmp(self): + return _getmp(self) + + +def _getexif(self): + if "exif" not in self.info: + return None + return dict(self.getexif()) + + +def _getmp(self): + # 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[:4] == b"\x4d\x4d\x00\x2a" else "<" + # process dictionary + try: + info = TiffImagePlugin.ImageFileDirectory_v2(head) + file_contents.seek(info.next) + info.load(file_contents) + mp = dict(info) + except Exception as e: + raise SyntaxError("malformed MP Index (unreadable directory)") from e + # it's an error not to have a number of images + try: + quant = mp[0xB001] + except KeyError as e: + raise SyntaxError("malformed MP Index (no number of images)") from e + # get MP entries + mpentries = [] + try: + rawmpentries = mp[0xB002] + for entrynum in range(0, 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: + raise SyntaxError("unsupported picture format in MPO") + 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: + raise SyntaxError("malformed MP Index (bad MP Entry)") 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 convert_dict_qtables(qtables): + qtables = [qtables[key] for key in range(len(qtables)) if key in qtables] + for idx, table in enumerate(qtables): + qtables[idx] = [table[i] for i in zigzag_index] + return qtables + + +def get_sampling(im): + # 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 hasattr(im, "layers") 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, fp, filename): + + try: + rawmode = RAWMODE[im.mode] + except KeyError as e: + raise OSError(f"cannot write mode {im.mode} as JPEG") 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): + raise ValueError("Invalid quality setting") + 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": + raise ValueError("Cannot use 'keep' when original image is not a JPEG") + subsampling = get_sampling(im) + + def validate_qtables(qtables): + 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: + raise ValueError("Invalid quantization table") 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 = convert_dict_qtables(qtables) + elif isinstance(qtables, tuple): + qtables = list(qtables) + if not (0 < len(qtables) < 5): + raise ValueError("None or too many quantization tables") + for idx, table in enumerate(qtables): + try: + if len(table) != 64: + raise TypeError + table = array.array("H", table) + except TypeError as e: + raise ValueError("Invalid quantization table") from e + else: + qtables[idx] = list(table) + return qtables + + if qtables == "keep": + if im.format != "JPEG": + raise ValueError("Cannot use 'keep' when original image is not a JPEG") + qtables = getattr(im, "quantization", None) + qtables = validate_qtables(qtables) + + extra = b"" + + icc_profile = info.get("icc_profile") + if icc_profile: + ICC_OVERHEAD_LEN = 14 + MAX_BYTES_IN_MARKER = 65533 + MAX_DATA_BYTES_IN_MARKER = MAX_BYTES_IN_MARKER - ICC_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 = struct.pack(">H", 2 + ICC_OVERHEAD_LEN + len(marker)) + extra += ( + b"\xFF\xE2" + + size + + b"ICC_PROFILE\0" + + o8(i) + + o8(len(markers)) + + marker + ) + i += 1 + + # "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() + + # get keyword arguments + im.encoderconfig = ( + quality, + progressive, + info.get("smooth", 0), + optimize, + info.get("streamtype", 0), + dpi[0], + dpi[1], + subsampling, + qtables, + 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 + bufsize = 0 + 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] + + # 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(ImageFile.MAXBLOCK, bufsize, len(exif) + 5, len(extra) + 1) + + ImageFile._save(im, fp, [("jpeg", (0, 0) + im.size, 0, rawmode)], bufsize) + + +def _save_cjpeg(im, fp, filename): + # 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=None, filename=None): + im = JpegImageFile(fp, filename) + try: + mpheader = im._getmp() + if mpheader[45057] > 1: + # 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/venv/lib/python3.9/site-packages/PIL/JpegPresets.py b/venv/lib/python3.9/site-packages/PIL/JpegPresets.py new file mode 100644 index 0000000..79d10eb --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/JpegPresets.py @@ -0,0 +1,248 @@ +""" +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://www.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 arrays. You can pass this dict +directly as the qtables argument when saving a JPEG. + +The tables format between im.quantization and quantization in presets differ in +3 ways: + +1. The base container of the preset is a list with sublists instead of dict. + dict[0] -> list[0], dict[1] -> list[1], ... +2. Each table in a preset is a list instead of an array. +3. The zigzag order is remove in the preset (needed by libjpeg >= 6a). + +You can convert the dict format to the preset format with the +:func:`.JpegImagePlugin.convert_dict_qtables()` function. + +Libjpeg ref.: +https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html + +""" + +# 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/venv/lib/python3.9/site-packages/PIL/McIdasImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/McIdasImagePlugin.py new file mode 100644 index 0000000..cd047fe --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/McIdasImagePlugin.py @@ -0,0 +1,75 @@ +# +# 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. +# + +import struct + +from . import Image, ImageFile + + +def _accept(s): + return s[:8] == 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): + + # parse area file directory + s = self.fp.read(256) + if not _accept(s) or len(s) != 256: + raise SyntaxError("not an McIdas area file") + + self.area_descriptor_raw = s + self.area_descriptor = w = [0] + list(struct.unpack("!64i", s)) + + # get mode + if w[11] == 1: + mode = rawmode = "L" + elif w[11] == 2: + # FIXME: add memory map support + mode = "I" + rawmode = "I;16B" + elif w[11] == 4: + # FIXME: add memory map support + mode = "I" + rawmode = "I;32B" + else: + raise SyntaxError("unsupported McIdas format") + + 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 = [("raw", (0, 0) + self.size, offset, (rawmode, stride, 1))] + + +# -------------------------------------------------------------------- +# registry + +Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept) + +# no default extension diff --git a/venv/lib/python3.9/site-packages/PIL/MicImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/MicImagePlugin.py new file mode 100644 index 0000000..2aed260 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/MicImagePlugin.py @@ -0,0 +1,107 @@ +# +# 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. +# + + +import olefile + +from . import Image, TiffImagePlugin + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:8] == 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): + + # 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: + raise SyntaxError("not an MIC file; invalid OLE file") from e + + # find ACI subfiles with Image members (maybe not the + # best way to identify MIC files, but what the... ;-) + + self.images = [] + for path in self.ole.listdir(): + if path[1:] and path[0][-4:] == ".ACI" and path[1] == "Image": + self.images.append(path) + + # if we didn't find any images, this is probably not + # an MIC file. + if not self.images: + raise SyntaxError("not an MIC file; no image entries") + + self.__fp = self.fp + self.frame = None + self._n_frames = len(self.images) + self.is_animated = self._n_frames > 1 + + if len(self.images) > 1: + self.category = Image.CONTAINER + + self.seek(0) + + def seek(self, frame): + if not self._seek_check(frame): + return + try: + filename = self.images[frame] + except IndexError as e: + raise EOFError("no such frame") from e + + self.fp = self.ole.openstream(filename) + + TiffImagePlugin.TiffImageFile._open(self) + + self.frame = frame + + def tell(self): + return self.frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# -------------------------------------------------------------------- + +Image.register_open(MicImageFile.format, MicImageFile, _accept) + +Image.register_extension(MicImageFile.format, ".mic") diff --git a/venv/lib/python3.9/site-packages/PIL/MpegImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/MpegImagePlugin.py new file mode 100644 index 0000000..a358dfd --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/MpegImagePlugin.py @@ -0,0 +1,83 @@ +# +# 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 . import Image, ImageFile +from ._binary import i8 + +# +# Bitstream parser + + +class BitStream: + def __init__(self, fp): + self.fp = fp + self.bits = 0 + self.bitbuffer = 0 + + def next(self): + return i8(self.fp.read(1)) + + def peek(self, bits): + while self.bits < bits: + c = self.next() + if c < 0: + self.bits = 0 + continue + self.bitbuffer = (self.bitbuffer << 8) + c + self.bits += 8 + return self.bitbuffer >> (self.bits - bits) & (1 << bits) - 1 + + def skip(self, bits): + 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): + v = self.peek(bits) + self.bits = self.bits - bits + return v + + +## +# 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): + + s = BitStream(self.fp) + + if s.read(32) != 0x1B3: + raise SyntaxError("not an MPEG file") + + self.mode = "RGB" + self._size = s.read(12), s.read(12) + + +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open(MpegImageFile.format, MpegImageFile) + +Image.register_extensions(MpegImageFile.format, [".mpg", ".mpeg"]) + +Image.register_mime(MpegImageFile.format, "video/mpeg") diff --git a/venv/lib/python3.9/site-packages/PIL/MpoImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/MpoImagePlugin.py new file mode 100644 index 0000000..575cc9c --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/MpoImagePlugin.py @@ -0,0 +1,134 @@ +# +# 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 . import Image, ImageFile, JpegImagePlugin +from ._binary import i16be as i16 + + +def _accept(prefix): + return JpegImagePlugin._accept(prefix) + + +def _save(im, fp, filename): + # Note that we can only save the current frame at present + return JpegImagePlugin._save(im, fp, filename) + + +## +# Image plugin for MPO images. + + +class MpoImageFile(JpegImagePlugin.JpegImageFile): + + format = "MPO" + format_description = "MPO (CIPA DC-007)" + _close_exclusive_fp_after_loading = False + + def _open(self): + 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=None): + self.mpinfo = mpheader if mpheader is not None else self._getmp() + 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): + self.__fp.seek(pos) + + def seek(self, frame): + if not self._seek_check(frame): + return + self.fp = self.__fp + self.offset = self.__mpoffsets[frame] + + self.fp.seek(self.offset + 2) # skip SOI marker + segment = self.fp.read(2) + if not segment: + raise ValueError("No data found for frame") + if i16(segment) == 0xFFE1: # APP1 + n = i16(self.fp.read(2)) - 2 + self.info["exif"] = ImageFile._safe_read(self.fp, n) + + exif = self.getexif() + if 40962 in exif and 40963 in exif: + self._size = (exif[40962], exif[40963]) + elif "exif" in self.info: + del self.info["exif"] + + self.tile = [("jpeg", (0, 0) + self.size, self.offset, (self.mode, ""))] + self.__frame = frame + + def tell(self): + return self.__frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + @staticmethod + def adopt(jpeg_instance, mpheader=None): + """ + 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 + jpeg_instance._after_jpeg_open(mpheader) + return jpeg_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_extension(MpoImageFile.format, ".mpo") + +Image.register_mime(MpoImageFile.format, "image/mpo") diff --git a/venv/lib/python3.9/site-packages/PIL/MspImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/MspImagePlugin.py new file mode 100644 index 0000000..e1fdc1f --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/MspImagePlugin.py @@ -0,0 +1,194 @@ +# +# 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: http://www.fileformat.info/format/mspaint/egff.htm + +import io +import struct + +from . import Image, ImageFile +from ._binary import i16le as i16 +from ._binary import o16le as o16 + +# +# read MSP files + + +def _accept(prefix): + return prefix[:4] in [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): + + # Header + s = self.fp.read(32) + if not _accept(s): + raise SyntaxError("not an MSP file") + + # Header checksum + checksum = 0 + for i in range(0, 32, 2): + checksum = checksum ^ i16(s, i) + if checksum != 0: + raise SyntaxError("bad MSP checksum") + + self.mode = "1" + self._size = i16(s, 4), i16(s, 6) + + if s[:4] == b"DanM": + self.tile = [("raw", (0, 0) + self.size, 32, ("1", 0, 1))] + else: + self.tile = [("MSP", (0, 0) + self.size, 32, None)] + + +class MspDecoder(ImageFile.PyDecoder): + # The algo for the MSP decoder is from + # http://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): + + 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: + raise OSError("Truncated MSP file in row map") 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: + raise OSError( + "Truncated MSP file, expected %d bytes on row %s", (rowlen, x) + ) + 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: + raise OSError(f"Corrupted MSP file in row {x}") from e + + self.set_as_raw(img.getvalue(), ("1", 0, 1)) + + return 0, 0 + + +Image.register_decoder("MSP", MspDecoder) + + +# +# write MSP files (uncompressed only) + + +def _save(im, fp, filename): + + if im.mode != "1": + raise OSError(f"cannot write mode {im.mode} as MSP") + + # 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, [("raw", (0, 0) + im.size, 32, ("1", 0, 1))]) + + +# +# registry + +Image.register_open(MspImageFile.format, MspImageFile, _accept) +Image.register_save(MspImageFile.format, _save) + +Image.register_extension(MspImageFile.format, ".msp") diff --git a/venv/lib/python3.9/site-packages/PIL/PSDraw.py b/venv/lib/python3.9/site-packages/PIL/PSDraw.py new file mode 100644 index 0000000..c1bd933 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PSDraw.py @@ -0,0 +1,235 @@ +# +# 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. +# + +import sys + +from . import EpsImagePlugin + +## +# Simple PostScript graphics interface. + + +class PSDraw: + """ + Sets up printing to the given file. If ``fp`` is omitted, + :py:data:`sys.stdout` is assumed. + """ + + def __init__(self, fp=None): + if not fp: + fp = sys.stdout + self.fp = fp + + def _fp_write(self, to_write): + if self.fp == sys.stdout: + self.fp.write(to_write) + else: + self.fp.write(bytes(to_write, "UTF-8")) + + def begin_document(self, id=None): + """Set up printing of a document. (Write PostScript DSC header.)""" + # FIXME: incomplete + self._fp_write( + "%!PS-Adobe-3.0\n" + "save\n" + "/showpage { } def\n" + "%%EndComments\n" + "%%BeginDocument\n" + ) + # self._fp_write(ERROR_PS) # debugging! + self._fp_write(EDROFF_PS) + self._fp_write(VDI_PS) + self._fp_write("%%EndProlog\n") + self.isofont = {} + + def end_document(self): + """Ends printing. (Write PostScript DSC footer.)""" + self._fp_write("%%EndDocument\nrestore showpage\n%%End\n") + if hasattr(self.fp, "flush"): + self.fp.flush() + + def setfont(self, font, size): + """ + Selects which font to use. + + :param font: A PostScript font name + :param size: Size in points. + """ + if font not in self.isofont: + # reencode font + self._fp_write(f"/PSDraw-{font} ISOLatin1Encoding /{font} E\n") + self.isofont[font] = 1 + # rough + self._fp_write(f"/F0 {size} /PSDraw-{font} F\n") + + def line(self, xy0, xy1): + """ + 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("%d %d %d %d Vl\n" % (*xy0, *xy1)) + + def rectangle(self, box): + """ + Draws a rectangle. + + :param box: A 4-tuple of integers whose order and function is currently + undocumented. + + Hint: the tuple is passed into this format string: + + .. code-block:: python + + %d %d M %d %d 0 Vr\n + """ + self._fp_write("%d %d M %d %d 0 Vr\n" % box) + + def text(self, xy, text): + """ + Draws text at the given position. You must use + :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method. + """ + text = "\\(".join(text.split("(")) + text = "\\)".join(text.split(")")) + self._fp_write(f"{xy[0]} {xy[1]} M ({text}) S\n") + + def image(self, box, im, dpi=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 # greyscale + # 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(f"gsave\n{dx:f} {dy:f} translate\n") + 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(f"{sx:f} {sy:f} scale\n") + EpsImagePlugin._save(im, self.fp, None, 0) + self._fp_write("\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 = """\ +/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 = """\ +/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 neg 0 exch rlineto + exch neg 0 rlineto + 0 exch rlineto + 100 div setgray fill 0 setgray } 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 = """\ +/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/venv/lib/python3.9/site-packages/PIL/PaletteFile.py b/venv/lib/python3.9/site-packages/PIL/PaletteFile.py new file mode 100644 index 0000000..6ccaa1f --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PaletteFile.py @@ -0,0 +1,53 @@ +# +# 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 ._binary import o8 + + +class PaletteFile: + """File handler for Teragon-style palette files.""" + + rawmode = "RGB" + + def __init__(self, fp): + + self.palette = [(i, i, i) for i in range(256)] + + while True: + + s = fp.readline() + + if not s: + break + if s[0:1] == b"#": + continue + if len(s) > 100: + raise SyntaxError("bad palette file") + + 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: + self.palette[i] = o8(r) + o8(g) + o8(b) + + self.palette = b"".join(self.palette) + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/venv/lib/python3.9/site-packages/PIL/PalmImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/PalmImagePlugin.py new file mode 100644 index 0000000..700f10e --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PalmImagePlugin.py @@ -0,0 +1,227 @@ +# +# The Python Imaging Library. +# $Id$ +# + +## +# Image plugin for Palm pixmap images (output only). +## + +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.new("L", (1, len(_Palm8BitColormapValues))) + image.putdata(list(range(len(_Palm8BitColormapValues)))) + palettedata = () + 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, fp, filename): + + if im.mode == "P": + + # we assume this is a color Palm image with the standard colormap, + # unless the "info" dict has a "custom-colormap" field + + 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 greyscale from white (0) to black (1) + bpp = im.encoderinfo["bpp"] + im = im.point( + lambda x, shift=8 - bpp, maxval=(1 << bpp) - 1: 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"] + im = im.point(lambda x, maxval=(1 << bpp) - 1: maxval - (x & maxval)) + else: + raise OSError(f"cannot write mode {im.mode} as Palm") + + # we ignore the palette here + im.mode = "P" + rawmode = "P;" + str(bpp) + version = 1 + + elif im.mode == "1": + + # monochrome -- write it inverted, as is the Palm standard + rawmode = "1;I" + bpp = 1 + version = 0 + + else: + + raise OSError(f"cannot write mode {im.mode} as Palm") + + # + # 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" and "custom-colormap" in im.info: + flags = flags & _FLAGS["custom-colormap"] + colormapsize = 4 * 256 + 2 + colormapmode = im.palette.mode + colormap = im.getdata().getpalette() + 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 > 0: + fp.write(o16b(256)) + for i in range(256): + fp.write(o8(i)) + if colormapmode == "RGB": + fp.write( + o8(colormap[3 * i]) + + o8(colormap[3 * i + 1]) + + o8(colormap[3 * i + 2]) + ) + elif colormapmode == "RGBA": + fp.write( + o8(colormap[4 * i]) + + o8(colormap[4 * i + 1]) + + o8(colormap[4 * i + 2]) + ) + + # now convert data to raw form + ImageFile._save(im, fp, [("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/venv/lib/python3.9/site-packages/PIL/PcdImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/PcdImagePlugin.py new file mode 100644 index 0000000..38caf5c --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PcdImagePlugin.py @@ -0,0 +1,63 @@ +# +# 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 . 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): + + # rough + self.fp.seek(2048) + s = self.fp.read(2048) + + if s[:4] != b"PCD_": + raise SyntaxError("not a PCD file") + + 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 = [("pcd", (0, 0) + self.size, 96 * 2048, None)] + + def load_end(self): + 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/venv/lib/python3.9/site-packages/PIL/PcfFontFile.py b/venv/lib/python3.9/site-packages/PIL/PcfFontFile.py new file mode 100644 index 0000000..6a4eb22 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PcfFontFile.py @@ -0,0 +1,248 @@ +# +# 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. +# + +import io + +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 = [ + 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, o): + 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, charset_encoding="iso8859-1"): + + self.charset_encoding = charset_encoding + + magic = l32(fp.read(4)) + if magic != PCF_MAGIC: + raise SyntaxError("not a PCF file") + + 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 in range(256): + ix = encoding[ch] + if ix is not None: + x, y, l, r, w, a, d, f = metrics[ix] + glyph = (w, 0), (l, d - y, x + l, d), (0, 0, x, y), bitmaps[ix] + self.glyph[ch] = glyph + + def _getformat(self, tag): + + 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): + + # + # font properties + + properties = {} + + fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) + + nprops = i32(fp.read(4)) + + # read property description + p = [] + for i in range(nprops): + p.append((i32(fp.read(4)), i8(fp.read(1)), i32(fp.read(4)))) + 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: + k = sz(data, k) + if s: + v = sz(data, v) + properties[k] = v + + return properties + + def _load_metrics(self): + + # + # font metrics + + metrics = [] + + 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): + + # + # bitmap data + + bitmaps = [] + + fp, format, i16, i32 = self._getformat(PCF_BITMAPS) + + nbitmaps = i32(fp.read(4)) + + if nbitmaps != len(metrics): + raise OSError("Wrong number of bitmaps") + + offsets = [] + for i in range(nbitmaps): + offsets.append(i32(fp.read(4))) + + bitmapSizes = [] + for i in range(4): + bitmapSizes.append(i32(fp.read(4))) + + # byteorder = format & 4 # non-zero => MSB + bitorder = format & 8 # non-zero => MSB + padindex = format & 3 + + bitmapsize = bitmapSizes[padindex] + offsets.append(bitmapsize) + + data = fp.read(bitmapsize) + + pad = BYTES_PER_ROW[padindex] + mode = "1;R" + if bitorder: + mode = "1" + + for i in range(nbitmaps): + x, y, l, r, w, a, d, f = metrics[i] + b, e = offsets[i], offsets[i + 1] + bitmaps.append(Image.frombytes("1", (x, y), data[b:e], "raw", mode, pad(x))) + + return bitmaps + + def _load_encoding(self): + + # map character code to bitmap index + encoding = [None] * 256 + + fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) + + firstCol, lastCol = i16(fp.read(2)), i16(fp.read(2)) + firstRow, lastRow = i16(fp.read(2)), i16(fp.read(2)) + + i16(fp.read(2)) # default + + nencoding = (lastCol - firstCol + 1) * (lastRow - firstRow + 1) + + encodingOffsets = [i16(fp.read(2)) for _ in range(nencoding)] + + for i in range(firstCol, len(encoding)): + try: + encodingOffset = encodingOffsets[ + ord(bytearray([i]).decode(self.charset_encoding)) + ] + if encodingOffset != 0xFFFF: + encoding[i] = encodingOffset + except UnicodeDecodeError: + # character is not supported in selected encoding + pass + + return encoding diff --git a/venv/lib/python3.9/site-packages/PIL/PcxImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/PcxImagePlugin.py new file mode 100644 index 0000000..a24d44b --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PcxImagePlugin.py @@ -0,0 +1,213 @@ +# +# 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. +# + +import io +import logging + +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): + 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): + + # header + s = self.fp.read(128) + if not _accept(s): + raise SyntaxError("not a PCX file") + + # 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]: + raise SyntaxError("bad PCX image size") + logger.debug("BBox: %s %s %s %s", *bbox) + + # format + version = s[1] + bits = s[3] + planes = s[65] + ignored_stride = i16(s, 66) + logger.debug( + "PCX version %s, bits %s, planes %s, stride %s", + version, + bits, + planes, + ignored_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 = "P;%dL" % planes + 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 greyscale + 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:]) + self.fp.seek(128) + + elif version == 5 and bits == 8 and planes == 3: + mode = "RGB" + rawmode = "RGB;L" + + else: + raise OSError("unknown PCX mode") + + self.mode = mode + self._size = bbox[2] - bbox[0], bbox[3] - bbox[1] + + # don't trust the passed in stride. Calculate for ourselves. + # CVE-2020-35655 + stride = (self._size[0] * bits + 7) // 8 + stride += stride % 2 + + bbox = (0, 0) + self.size + logger.debug("size: %sx%s", *self.size) + + self.tile = [("pcx", bbox, self.fp.tell(), (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, fp, filename): + + try: + version, bits, planes, rawmode = SAVE[im.mode] + except KeyError as e: + raise ValueError(f"Cannot save {im.mode} images as PCX") 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, [("pcx", (0, 0) + im.size, 0, (rawmode, bits * planes))]) + + if im.mode == "P": + # colour palette + fp.write(o8(12)) + fp.write(im.im.getpalette("RGB", "RGB")) # 768 bytes + elif im.mode == "L": + # greyscale 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/venv/lib/python3.9/site-packages/PIL/PdfImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/PdfImagePlugin.py new file mode 100644 index 0000000..36c8fb8 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PdfImagePlugin.py @@ -0,0 +1,246 @@ +# +# 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). +## + +import io +import os +import time + +from . import Image, ImageFile, ImageSequence, PdfParser, __version__ + +# +# -------------------------------------------------------------------- + +# object ids: +# 1. catalogue +# 2. pages +# 3. image +# 4. page +# 5. page contents + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +## +# (Internal) Image save plugin for the PDF format. + + +def _save(im, fp, filename, save_all=False): + is_appending = im.encoderinfo.get("append", False) + if is_appending: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="r+b") + else: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="w+b") + + 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) + numberOfPages = 0 + image_refs = [] + page_refs = [] + contents_refs = [] + for im in ims: + im_numberOfPages = 1 + if save_all: + try: + im_numberOfPages = im.n_frames + except AttributeError: + # Image format does not have n_frames. + # It is a single frame image + pass + numberOfPages += im_numberOfPages + for i in range(im_numberOfPages): + 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() + + pageNumber = 0 + for imSequence in ims: + im_pages = ImageSequence.Iterator(imSequence) if save_all else [imSequence] + for im in im_pages: + # FIXME: Should replace ASCIIHexDecode with RunLengthDecode + # (packbits) or LZWDecode (tiff/lzw compression). Note that + # PDF 1.2 also supports Flatedecode (zip compression). + + bits = 8 + params = None + decode = None + + if im.mode == "1": + filter = "ASCIIHexDecode" + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + bits = 1 + elif im.mode == "L": + filter = "DCTDecode" + # params = f"<< /Predictor 15 /Columns {width-2} >>" + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "P": + filter = "ASCIIHexDecode" + palette = im.im.getpalette("RGB") + colorspace = [ + PdfParser.PdfName("Indexed"), + PdfParser.PdfName("DeviceRGB"), + 255, + PdfParser.PdfBinary(palette), + ] + procset = "ImageI" # indexed color + elif im.mode == "RGB": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceRGB") + procset = "ImageC" # color images + elif im.mode == "CMYK": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceCMYK") + procset = "ImageC" # color images + decode = [1, 0, 1, 0, 1, 0, 1, 0] + else: + raise ValueError(f"cannot save mode {im.mode}") + + # + # image + + op = io.BytesIO() + + if filter == "ASCIIHexDecode": + if bits == 1: + # FIXME: the hex encoder doesn't support packed 1-bit + # images; do things the hard way... + data = im.tobytes("raw", "1") + im = Image.new("L", im.size) + im.putdata(data) + ImageFile._save(im, op, [("hex", (0, 0) + im.size, 0, im.mode)]) + elif filter == "DCTDecode": + Image.SAVE["JPEG"](im, op, filename) + elif filter == "FlateDecode": + ImageFile._save(im, op, [("zip", (0, 0) + im.size, 0, im.mode)]) + elif filter == "RunLengthDecode": + ImageFile._save(im, op, [("packbits", (0, 0) + im.size, 0, im.mode)]) + else: + raise ValueError(f"unsupported PDF filter ({filter})") + + # + # Get image characteristics + + width, height = im.size + + existing_pdf.write_obj( + image_refs[pageNumber], + stream=op.getvalue(), + Type=PdfParser.PdfName("XObject"), + Subtype=PdfParser.PdfName("Image"), + Width=width, # * 72.0 / resolution, + Height=height, # * 72.0 / resolution, + Filter=PdfParser.PdfName(filter), + BitsPerComponent=bits, + Decode=decode, + DecodeParams=params, + ColorSpace=colorspace, + ) + + # + # page + + existing_pdf.write_page( + page_refs[pageNumber], + Resources=PdfParser.PdfDict( + ProcSet=[PdfParser.PdfName("PDF"), PdfParser.PdfName(procset)], + XObject=PdfParser.PdfDict(image=image_refs[pageNumber]), + ), + MediaBox=[ + 0, + 0, + int(width * 72.0 / resolution), + int(height * 72.0 / resolution), + ], + Contents=contents_refs[pageNumber], + ) + + # + # page contents + + page_contents = b"q %d 0 0 %d 0 0 cm /image Do Q\n" % ( + int(width * 72.0 / resolution), + int(height * 72.0 / resolution), + ) + + existing_pdf.write_obj(contents_refs[pageNumber], stream=page_contents) + + pageNumber += 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/venv/lib/python3.9/site-packages/PIL/PdfParser.py b/venv/lib/python3.9/site-packages/PIL/PdfParser.py new file mode 100644 index 0000000..86d78a9 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PdfParser.py @@ -0,0 +1,995 @@ +import calendar +import codecs +import collections +import mmap +import os +import re +import time +import zlib + + +# see 7.9.2.2 Text String Type on page 86 and D.3 PDFDocEncoding Character Set +# on page 656 +def encode_text(s): + 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): + 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, error_message): + if not condition: + raise PdfFormatError(error_message) + + +class IndirectReference( + collections.namedtuple("IndirectReferenceTuple", ["object_id", "generation"]) +): + def __str__(self): + return "%s %s R" % self + + def __bytes__(self): + return self.__str__().encode("us-ascii") + + def __eq__(self, other): + return ( + other.__class__ is self.__class__ + and other.object_id == self.object_id + and other.generation == self.generation + ) + + def __ne__(self, other): + return not (self == other) + + def __hash__(self): + return hash((self.object_id, self.generation)) + + +class IndirectObjectDef(IndirectReference): + def __str__(self): + return "%s %s obj" % self + + +class XrefTable: + def __init__(self): + self.existing_entries = {} # object ID => (offset, generation) + self.new_entries = {} # object ID => (offset, generation) + self.deleted_entries = {0: 65536} # object ID => generation + self.reading_finished = False + + def __setitem__(self, key, value): + 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): + try: + return self.new_entries[key] + except KeyError: + return self.existing_entries[key] + + def __delitem__(self, key): + 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: + raise IndexError( + "object ID " + str(key) + " cannot be deleted because it doesn't exist" + ) + + def __contains__(self, key): + return key in self.existing_entries or key in self.new_entries + + def __len__(self): + return len( + set(self.existing_entries.keys()) + | set(self.new_entries.keys()) + | set(self.deleted_entries.keys()) + ) + + def keys(self): + return ( + set(self.existing_entries.keys()) - set(self.deleted_entries.keys()) + ) | set(self.new_entries.keys()) + + def write(self, f): + 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 = 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 = None + 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: + def __init__(self, name): + 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): + return self.name.decode("us-ascii") + + def __eq__(self, other): + return ( + isinstance(other, PdfName) and other.name == self.name + ) or other == self.name + + def __hash__(self): + return hash(self.name) + + def __repr__(self): + return f"PdfName({repr(self.name)})" + + @classmethod + def from_pdf_stream(cls, data): + return cls(PdfParser.interpret_name(data)) + + allowed_chars = set(range(33, 127)) - {ord(c) for c in "#%/()<>[]{}"} + + def __bytes__(self): + 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): + def __bytes__(self): + return b"[ " + b" ".join(pdf_repr(x) for x in self) + b" ]" + + +class PdfDict(collections.UserDict): + def __setattr__(self, key, value): + if key == "data": + collections.UserDict.__setattr__(self, key, value) + else: + self[key.encode("us-ascii")] = value + + def __getattr__(self, key): + 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): + 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): + self.data = data + + def __bytes__(self): + return b"<%s>" % b"".join(b"%02X" % b for b in self.data) + + +class PdfStream: + def __init__(self, dictionary, buf): + self.dictionary = dictionary + self.buf = buf + + def decode(self): + try: + filter = self.dictionary.Filter + except AttributeError: + return self.buf + if filter == b"FlateDecode": + try: + expected_length = self.dictionary.DL + except AttributeError: + expected_length = self.dictionary.Length + return zlib.decompress(self.buf, bufsize=int(expected_length)) + else: + raise NotImplementedError( + f"stream filter {repr(self.dictionary.Filter)} unknown/unsupported" + ) + + +def pdf_repr(x): + 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): + 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=None, f=None, buf=None, start_offset=0, mode="rb"): + if buf and f: + raise RuntimeError("specify buf or f or filename, but not both buf and f") + self.filename = filename + self.buf = 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 = 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 = {} + if 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 = {} + self.pages = [] + self.orig_pages = [] + self.pages_ref = None + self.last_xref_section_offset = None + self.trailer_dict = {} + self.xref_table = XrefTable() + self.xref_table.reading_finished = True + if f: + self.seek_end() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + return False # do not suppress exceptions + + def start_writing(self): + self.close_buf() + self.seek_end() + + def close_buf(self): + try: + self.buf.close() + except AttributeError: + pass + self.buf = None + + def close(self): + 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): + self.f.seek(0, os.SEEK_END) + + def write_header(self): + self.f.write(b"%PDF-1.4\n") + + def write_comment(self, s): + self.f.write(f"% {s}\n".encode("utf-8")) + + def write_catalog(self): + 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): + 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=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 = {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, *objs, **dict_obj): + if isinstance(ref, int): + ref = self.pages[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(ref, *objs, **dict_obj) + + def write_obj(self, ref, *objs, **dict_obj): + 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): + 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): + 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): + self.file_size_total = len(self.buf) + self.file_size_this = self.file_size_total - self.start_offset + self.read_trailer() + self.root_ref = self.trailer_dict[b"Root"] + 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(b"Pages" in self.root, "/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"] + 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=None): + 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 = br"[][()<>{}/%]" + delimiter_or_ws = br"[][()<>{}/%\000\011\012\014\015\040]" + whitespace = br"[\000\011\012\014\015\040]" + whitespace_or_hex = br"[\000\011\012\014\015\0400-9a-fA-F]" + whitespace_optional = whitespace + b"*" + whitespace_mandatory = whitespace + b"+" + whitespace_optional_no_nl = br"[\000\011\014\015\040]*" # no "\012" aka "\n" + newline_only = br"[\r\n]+" + newline = whitespace_optional_no_nl + newline_only + whitespace_optional_no_nl + re_trailer_end = re.compile( + whitespace_mandatory + + br"trailer" + + whitespace_optional + + br"\<\<(.*\>\>)" + + newline + + br"startxref" + + newline + + br"([0-9]+)" + + newline + + br"%%EOF" + + whitespace_optional + + br"$", + re.DOTALL, + ) + re_trailer_prev = re.compile( + whitespace_optional + + br"trailer" + + whitespace_optional + + br"\<\<(.*?\>\>)" + + newline + + br"startxref" + + newline + + br"([0-9]+)" + + newline + + br"%%EOF" + + whitespace_optional, + re.DOTALL, + ) + + def read_trailer(self): + 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, "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 + 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): + 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, "previous trailer not found") + 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 + + br"/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=" + + delimiter_or_ws + + br")" + ) + re_dict_start = re.compile(whitespace_optional + br"\<\<") + re_dict_end = re.compile(whitespace_optional + br"\>\>" + whitespace_optional) + + @classmethod + def interpret_trailer(cls, trailer_data): + 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 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)) + value, offset = cls.get_value(trailer_data, m.end()) + trailer[key] = value + 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(br"([^#]*)(#([0-9a-fA-F]{2}))?") + + @classmethod + def interpret_name(cls, raw, as_text=False): + 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 + br"null(?=" + delimiter_or_ws + br")") + re_true = re.compile(whitespace_optional + br"true(?=" + delimiter_or_ws + br")") + re_false = re.compile(whitespace_optional + br"false(?=" + delimiter_or_ws + br")") + re_int = re.compile( + whitespace_optional + br"([-+]?[0-9]+)(?=" + delimiter_or_ws + br")" + ) + re_real = re.compile( + whitespace_optional + + br"([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=" + + delimiter_or_ws + + br")" + ) + re_array_start = re.compile(whitespace_optional + br"\[") + re_array_end = re.compile(whitespace_optional + br"]") + re_string_hex = re.compile( + whitespace_optional + br"\<(" + whitespace_or_hex + br"*)\>" + ) + re_string_lit = re.compile(whitespace_optional + br"\(") + re_indirect_reference = re.compile( + whitespace_optional + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"R(?=" + + delimiter_or_ws + + br")" + ) + re_indirect_def_start = re.compile( + whitespace_optional + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"obj(?=" + + delimiter_or_ws + + br")" + ) + re_indirect_def_end = re.compile( + whitespace_optional + br"endobj(?=" + delimiter_or_ws + br")" + ) + re_comment = re.compile( + br"(" + whitespace_optional + br"%[^\r\n]*" + newline + br")*" + ) + re_stream_start = re.compile(whitespace_optional + br"stream\r?\n") + re_stream_end = re.compile( + whitespace_optional + br"endstream(?=" + delimiter_or_ws + br")" + ) + + @classmethod + def get_value(cls, data, offset, expect_indirect=None, max_nesting=-1): + 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, offset = cls.get_value(data, m.end(), max_nesting=max_nesting - 1) + if offset is None: + return object, None + m = cls.re_indirect_def_end.match(data, offset) + check_format_condition(m, "indirect object definition end not found") + 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 = {} + m = cls.re_dict_end.match(data, offset) + while not m: + key, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + if offset is None: + return result, None + value, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + result[key] = value + if offset is None: + return result, None + m = cls.re_dict_end.match(data, offset) + offset = m.end() + m = cls.re_stream_start.match(data, offset) + if m: + try: + stream_len = int(result[b"Length"]) + except (TypeError, KeyError, ValueError) as e: + raise PdfFormatError( + "bad or missing Length in stream dict (%r)" + % result.get(b"Length", None) + ) from e + stream_data = data[m.end() : m.end() + stream_len] + m = cls.re_stream_end.match(data, m.end() + stream_len) + check_format_condition(m, "stream end not found") + offset = m.end() + result = PdfStream(PdfDict(result), stream_data) + else: + result = PdfDict(result) + return result, offset + m = cls.re_array_start.match(data, offset) + if m: + offset = m.end() + result = [] + m = cls.re_array_end.match(data, offset) + while not m: + value, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + result.append(value) + if offset is None: + return result, None + m = cls.re_array_end.match(data, offset) + return result, 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) + raise PdfFormatError("unrecognized object: " + repr(data[offset : offset + 32])) + + re_lit_str_token = re.compile( + br"(\\[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, offset): + 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() + raise PdfFormatError("unfinished literal string") + + re_xref_section_start = re.compile(whitespace_optional + br"xref" + newline) + re_xref_subsection_start = re.compile( + whitespace_optional + + br"([0-9]+)" + + whitespace_mandatory + + br"([0-9]+)" + + whitespace_optional + + newline_only + ) + re_xref_entry = re.compile(br"([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)") + + def read_xref_table(self, xref_section_offset): + subsection_found = False + m = self.re_xref_section_start.match( + self.buf, xref_section_offset + self.start_offset + ) + check_format_condition(m, "xref section start not found") + 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, "xref entry not found") + offset = m.end() + is_free = m.group(3) == b"f" + generation = int(m.group(2)) + if not is_free: + new_entry = (int(m.group(1)), generation) + check_format_condition( + i not in self.xref_table or self.xref_table[i] == new_entry, + "xref entry duplicated (and not identical)", + ) + self.xref_table[i] = new_entry + return offset + + def read_indirect(self, ref, max_nesting=-1): + 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}", + ) + 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=None): + if node is None: + node = self.page_tree_root + check_format_condition( + node[b"Type"] == b"Pages", "/Type of page tree node is not /Pages" + ) + pages = [] + for kid in 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/venv/lib/python3.9/site-packages/PIL/PixarImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/PixarImagePlugin.py new file mode 100644 index 0000000..c4860b6 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PixarImagePlugin.py @@ -0,0 +1,70 @@ +# +# 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 . import Image, ImageFile +from ._binary import i16le as i16 + +# +# helpers + + +def _accept(prefix): + return prefix[:4] == 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): + + # assuming a 4-byte magic label + s = self.fp.read(4) + if not _accept(s): + raise SyntaxError("not a PIXAR file") + + # 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 = [("raw", (0, 0) + self.size, 1024, (self.mode, 0, 1))] + + +# +# -------------------------------------------------------------------- + +Image.register_open(PixarImageFile.format, PixarImageFile, _accept) + +Image.register_extension(PixarImageFile.format, ".pxr") diff --git a/venv/lib/python3.9/site-packages/PIL/PngImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/PngImagePlugin.py new file mode 100644 index 0000000..2d4ac76 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PngImagePlugin.py @@ -0,0 +1,1395 @@ +# +# 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. +# + +import itertools +import logging +import re +import struct +import warnings +import zlib + +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 + +logger = logging.getLogger(__name__) + +is_cid = re.compile(br"\w\w\w\w").match + + +_MAGIC = b"\211PNG\r\n\032\n" + + +_MODES = { + # supported bits/color combinations, and corresponding modes/rawmodes + # Greyscale + (1, 0): ("1", "1"), + (2, 0): ("L", "L;2"), + (4, 0): ("L", "L;4"), + (8, 0): ("L", "L"), + (16, 0): ("I", "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"), + # Greyscale 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 +APNG_DISPOSE_OP_NONE = 0 +""" +No disposal is done on this frame before rendering the next frame. +See :ref:`Saving APNG sequences`. +""" +APNG_DISPOSE_OP_BACKGROUND = 1 +""" +This frame’s modified region is cleared to fully transparent black before rendering +the next frame. +See :ref:`Saving APNG sequences`. +""" +APNG_DISPOSE_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 +APNG_BLEND_OP_SOURCE = 0 +""" +All color components of this frame, including alpha, overwrite the previous output +image contents. +See :ref:`Saving APNG sequences`. +""" +APNG_BLEND_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): + dobj = zlib.decompressobj() + plaintext = dobj.decompress(s, MAX_TEXT_CHUNK) + if dobj.unconsumed_tail: + raise ValueError("Decompressed Data Too Large") + return plaintext + + +def _crc32(data, seed=0): + return zlib.crc32(data, seed) & 0xFFFFFFFF + + +# -------------------------------------------------------------------- +# Support classes. Suitable for PNG and related formats like MNG etc. + + +class ChunkStream: + def __init__(self, fp): + + self.fp = fp + self.queue = [] + + def read(self): + """Fetch a new chunk. Returns header information.""" + cid = 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: + raise SyntaxError(f"broken PNG file (chunk {repr(cid)})") + + return cid, pos, length + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + self.queue = self.crc = self.fp = None + + def push(self, cid, pos, length): + + self.queue.append((cid, pos, length)) + + def call(self, cid, pos, length): + """Call the appropriate chunk handler""" + + logger.debug("STREAM %r %s %s", cid, pos, length) + return getattr(self, "chunk_" + cid.decode("ascii"))(pos, length) + + def crc(self, cid, data): + """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 + + try: + crc1 = _crc32(data, _crc32(cid)) + crc2 = i32(self.fp.read(4)) + if crc1 != crc2: + raise SyntaxError( + f"broken PNG file (bad header checksum in {repr(cid)})" + ) + except struct.error as e: + raise SyntaxError( + f"broken PNG file (incomplete checksum in {repr(cid)})" + ) from e + + def crc_skip(self, cid, data): + """Read checksum. Used if the C module is not present""" + + self.fp.read(4) + + def verify(self, endchunk=b"IEND"): + + # Simple approach; just calculate checksum for all remaining + # blocks. Must be called directly after open. + + cids = [] + + while True: + try: + cid, pos, length = self.read() + except struct.error as e: + raise OSError("truncated PNG file") 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 + + """ + + @staticmethod + def __new__(cls, text, lang=None, tkey=None): + """ + :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): + self.chunks = [] + + def add(self, cid, data, after_idat=False): + """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 + + """ + + chunk = [cid, data] + if after_idat: + chunk.append(True) + self.chunks.append(tuple(chunk)) + + def add_itxt(self, key, value, lang="", tkey="", zip=False): + """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, value, zip=False): + """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, value.tkey, 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 PngStream(ChunkStream): + def __init__(self, fp): + super().__init__(fp) + + # local copies of Image attributes + self.im_info = {} + self.im_text = {} + self.im_size = (0, 0) + self.im_mode = None + self.im_tile = None + self.im_palette = None + self.im_custom_mimetype = None + self.im_n_frames = None + self._seq_num = None + self.rewind_state = None + + self.text_memory = 0 + + def check_text_memory(self, chunklen): + self.text_memory += chunklen + if self.text_memory > MAX_TEXT_MEMORY: + raise ValueError( + "Too much memory used in text chunks: " + f"{self.text_memory}>MAX_TEXT_MEMORY" + ) + + def save_rewind(self): + self.rewind_state = { + "info": self.im_info.copy(), + "tile": self.im_tile, + "seq_num": self._seq_num, + } + + def rewind(self): + self.im_info = self.rewind_state["info"] + self.im_tile = self.rewind_state["tile"] + self._seq_num = self.rewind_state["seq_num"] + + def chunk_iCCP(self, pos, length): + + # ICC profile + 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]) + logger.debug("Compression method %s", s[i]) + comp_method = s[i] + if comp_method != 0: + raise SyntaxError(f"Unknown compression method {comp_method} in iCCP chunk") + 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, length): + + # image header + s = ImageFile._safe_read(self.fp, length) + 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]: + raise SyntaxError("unknown filter category") + return s + + def chunk_IDAT(self, pos, length): + + # image data + if "bbox" in self.im_info: + 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 = [("zip", (0, 0) + self.im_size, pos, self.im_rawmode)] + self.im_tile = tile + self.im_idat = length + raise EOFError + + def chunk_IEND(self, pos, length): + + # end of PNG image + raise EOFError + + def chunk_PLTE(self, pos, length): + + # palette + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + self.im_palette = "RGB", s + return s + + def chunk_tRNS(self, pos, length): + + # transparency + 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"): + 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, length): + # gamma setting + s = ImageFile._safe_read(self.fp, length) + self.im_info["gamma"] = i32(s) / 100000.0 + return s + + def chunk_cHRM(self, pos, length): + # chromaticity, 8 unsigned ints, actual value is scaled by 100,000 + # WP x,y, Red x,y, Green x,y Blue x,y + + s = ImageFile._safe_read(self.fp, length) + raw_vals = struct.unpack(">%dI" % (len(s) // 4), s) + self.im_info["chromaticity"] = tuple(elt / 100000.0 for elt in raw_vals) + return s + + def chunk_sRGB(self, pos, length): + # srgb rendering intent, 1 byte + # 0 perceptual + # 1 relative colorimetric + # 2 saturation + # 3 absolute colorimetric + + s = ImageFile._safe_read(self.fp, length) + self.im_info["srgb"] = s[0] + return s + + def chunk_pHYs(self, pos, length): + + # pixels per unit + s = ImageFile._safe_read(self.fp, length) + px, py = i32(s, 0), i32(s, 4) + unit = s[8] + if unit == 1: # meter + dpi = int(px * 0.0254 + 0.5), int(py * 0.0254 + 0.5) + self.im_info["dpi"] = dpi + elif unit == 0: + self.im_info["aspect"] = px, py + return s + + def chunk_tEXt(self, pos, length): + + # text + 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 = k.decode("latin-1", "strict") + v_str = v.decode("latin-1", "replace") + + self.im_info[k] = v if k == "exif" else v_str + self.im_text[k] = v_str + self.check_text_memory(len(v_str)) + + return s + + def chunk_zTXt(self, pos, length): + + # compressed text + 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: + raise SyntaxError(f"Unknown compression method {comp_method} in zTXt chunk") + 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 = k.decode("latin-1", "strict") + v = v.decode("latin-1", "replace") + + self.im_info[k] = self.im_text[k] = v + self.check_text_memory(len(v)) + + return s + + def chunk_iTXt(self, pos, length): + + # international text + 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 + try: + k = k.decode("latin-1", "strict") + lang = lang.decode("utf-8", "strict") + tk = tk.decode("utf-8", "strict") + v = v.decode("utf-8", "strict") + except UnicodeError: + return s + + self.im_info[k] = self.im_text[k] = iTXt(v, lang, tk) + self.check_text_memory(len(v)) + + return s + + def chunk_eXIf(self, pos, length): + 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, length): + s = ImageFile._safe_read(self.fp, length) + 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, length): + s = ImageFile._safe_read(self.fp, length) + 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 + ): + raise SyntaxError("APNG contains frame sequence errors") + 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: + raise SyntaxError("APNG contains invalid frames") + 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, length): + s = ImageFile._safe_read(self.fp, 4) + seq = i32(s) + if self._seq_num != seq - 1: + raise SyntaxError("APNG contains frame sequence errors") + self._seq_num = seq + return self.chunk_IDAT(pos + 4, length - 4) + + +# -------------------------------------------------------------------- +# PNG reader + + +def _accept(prefix): + return prefix[:8] == _MAGIC + + +## +# Image plugin for PNG images. + + +class PngImageFile(ImageFile.ImageFile): + + format = "PNG" + format_description = "Portable network graphics" + + def _open(self): + + if not _accept(self.fp.read(8)): + raise SyntaxError("not a PNG file") + self.__fp = self.fp + self.__frame = 0 + + # + # Parse headers up to the first IDAT or fDAT chunk + + self.private_chunks = [] + self.png = 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 = 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): + # 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) + return self._text + + def verify(self): + """Verify PNG file""" + + if self.fp is None: + raise RuntimeError("verify must be called directly after open") + + # back up to beginning of IDAT block + self.fp.seek(self.tile[0][2] - 8) + + self.png.verify() + self.png.close() + + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def seek(self, frame): + 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) + raise EOFError("no more images in APNG file") from e + + def _seek(self, frame, rewind=False): + if frame == 0: + if rewind: + self.__fp.seek(self.__rewind) + self.png.rewind() + self.__prepare_idat = self.__rewind_idat + self.im = None + if self.pyaccess: + self.pyaccess = 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") + self.dispose_extent = self.info.get("bbox") + self.__frame = 0 + else: + if frame != self.__frame + 1: + raise ValueError(f"cannot seek to frame {frame}") + + # 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": + raise EOFError("No more images in APNG file") + if cid == b"fcTL": + if frame_start: + # there must be at least one fdAT chunk between fcTL chunks + raise SyntaxError("APNG missing frame data") + 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") + self.dispose_extent = self.info.get("bbox") + + if not self.tile: + raise EOFError + + # setup frame disposal (actual disposal done when needed in the next _seek()) + if self._prev_im is None and self.dispose_op == APNG_DISPOSE_OP_PREVIOUS: + self.dispose_op = APNG_DISPOSE_OP_BACKGROUND + + if self.dispose_op == APNG_DISPOSE_OP_PREVIOUS: + self.dispose = self._prev_im.copy() + self.dispose = self._crop(self.dispose, self.dispose_extent) + elif self.dispose_op == APNG_DISPOSE_OP_BACKGROUND: + self.dispose = Image.core.fill(self.mode, self.size) + self.dispose = self._crop(self.dispose, self.dispose_extent) + else: + self.dispose = None + + def tell(self): + return self.__frame + + def load_prepare(self): + """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): + """internal: read more image data""" + + 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): + """internal: finished reading image data""" + 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 + ImageFile._safe_read(self.fp, length) + 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 == APNG_BLEND_OP_OVER: + updated = self._crop(self.im, self.dispose_extent) + self._prev_im.paste( + updated, self.dispose_extent, updated.convert("RGBA") + ) + self.im = self._prev_im + if self.pyaccess: + self.pyaccess = None + + def _getexif(self): + 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 dict(self.getexif()) + + def getexif(self): + if "exif" not in self.info: + self.load() + + return super().getexif() + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# -------------------------------------------------------------------- +# PNG writer + +_OUTMODES = { + # supported PIL modes, and corresponding rawmodes/bits/color combinations + "1": ("1", b"\x01\x00"), + "L;1": ("L;1", b"\x01\x00"), + "L;2": ("L;2", b"\x02\x00"), + "L;4": ("L;4", b"\x04\x00"), + "L": ("L", b"\x08\x00"), + "LA": ("LA", b"\x08\x04"), + "I": ("I;16B", b"\x10\x00"), + "I;16": ("I;16B", b"\x10\x00"), + "P;1": ("P;1", b"\x01\x03"), + "P;2": ("P;2", b"\x02\x03"), + "P;4": ("P;4", b"\x04\x03"), + "P": ("P", b"\x08\x03"), + "RGB": ("RGB", b"\x08\x02"), + "RGBA": ("RGBA", b"\x08\x06"), +} + + +def putchunk(fp, cid, *data): + """Write a PNG chunk (including CRC field)""" + + data = b"".join(data) + + fp.write(o32(len(data)) + cid) + fp.write(data) + crc = _crc32(data, _crc32(cid)) + fp.write(o32(crc)) + + +class _idat: + # wrap output from the encoder in IDAT chunks + + def __init__(self, fp, chunk): + self.fp = fp + self.chunk = chunk + + def write(self, data): + self.chunk(self.fp, b"IDAT", data) + + +class _fdat: + # wrap encoder output in fdAT chunks + + def __init__(self, fp, chunk, seq_num): + self.fp = fp + self.chunk = chunk + self.seq_num = seq_num + + def write(self, data): + self.chunk(self.fp, b"fdAT", o32(self.seq_num), data) + self.seq_num += 1 + + +def _write_multiple_frames(im, fp, chunk, rawmode): + default_image = im.encoderinfo.get("default_image", im.info.get("default_image")) + duration = im.encoderinfo.get("duration", im.info.get("duration", 0)) + loop = im.encoderinfo.get("loop", im.info.get("loop", 0)) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + blend = im.encoderinfo.get("blend", im.info.get("blend")) + + if default_image: + chain = itertools.chain(im.encoderinfo.get("append_images", [])) + else: + chain = itertools.chain([im], im.encoderinfo.get("append_images", [])) + + im_frames = [] + frame_count = 0 + for im_seq in chain: + for im_frame in ImageSequence.Iterator(im_seq): + im_frame = im_frame.copy() + if im_frame.mode != im.mode: + if im.mode == "P": + im_frame = im_frame.convert(im.mode, palette=im.palette) + else: + im_frame = im_frame.convert(im.mode) + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + 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 == APNG_DISPOSE_OP_PREVIOUS and len(im_frames) < 2: + prev_disposal = APNG_DISPOSE_OP_BACKGROUND + + if prev_disposal == APNG_DISPOSE_OP_BACKGROUND: + base_im = previous["im"] + 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 == APNG_DISPOSE_OP_PREVIOUS: + base_im = im_frames[-2]["im"] + else: + base_im = previous["im"] + delta = ImageChops.subtract_modulo( + im_frame.convert("RGB"), base_im.convert("RGB") + ) + bbox = delta.getbbox() + if ( + not bbox + and prev_disposal == encoderinfo.get("disposal") + and prev_blend == encoderinfo.get("blend") + ): + duration = encoderinfo.get("duration", 0) + if duration: + if "duration" in previous["encoderinfo"]: + previous["encoderinfo"]["duration"] += duration + else: + previous["encoderinfo"]["duration"] = duration + continue + else: + bbox = None + im_frames.append({"im": im_frame, "bbox": bbox, "encoderinfo": encoderinfo}) + + # 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: + ImageFile._save(im, _idat(fp, chunk), [("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 + duration = int(round(frame_data["encoderinfo"].get("duration", 0))) + disposal = frame_data["encoderinfo"].get("disposal", APNG_DISPOSE_OP_NONE) + blend = frame_data["encoderinfo"].get("blend", APNG_BLEND_OP_SOURCE) + # 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(duration), # delay_numerator + o16(1000), # delay_denominator + o8(disposal), # dispose_op + o8(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, + _idat(fp, chunk), + [("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + else: + fdat_chunks = _fdat(fp, chunk, seq_num) + ImageFile._save( + im_frame, + fdat_chunks, + [("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + seq_num = fdat_chunks.seq_num + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +def _save(im, fp, filename, chunk=putchunk, save_all=False): + # save an image to disk (called by the save method) + + mode = im.mode + + if mode == "P": + + # + # attempt to minimize storage requirements for palette images + if "bits" in im.encoderinfo: + # number of bits specified by user + colors = 1 << im.encoderinfo["bits"] + else: + # check palette contents + if im.palette: + colors = max(min(len(im.palette.getdata()[1]) // 3, 256), 2) + else: + colors = 256 + + if colors <= 2: + bits = 1 + elif colors <= 4: + bits = 2 + elif colors <= 16: + bits = 4 + else: + bits = 8 + if bits != 8: + mode = f"{mode};{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, mode = _OUTMODES[mode] + except KeyError as e: + raise OSError(f"cannot write mode {mode} as PNG") from e + + # + # write minimal PNG file + + fp.write(_MAGIC) + + chunk( + fp, + b"IHDR", + o32(im.size[0]), # 0: size + o32(im.size[1]), + mode, # 8: depth/type + b"\0", # 10: compression + b"\0", # 11: filter category + b"\0", # 12: interlace flag + ) + + chunks = [b"cHRM", 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 = info_chunk[2:3] + if not after_idat: + chunk(fp, cid, data) + + if im.mode == "P": + palette_byte_number = (2 ** bits) * 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 = 2 ** bits + 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"): + 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. + raise OSError("cannot use transparency for this mode") + else: + if im.mode == "P" and im.im.getpalettemode() == "RGBA": + alpha = im.im.getpalette("RGBA", "A") + alpha_bytes = 2 ** bits + 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", im.info.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) + + if save_all: + _write_multiple_frames(im, fp, chunk, rawmode) + else: + ImageFile._save(im, _idat(fp, chunk), [("zip", (0, 0) + 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 = info_chunk[2:3] + if after_idat: + chunk(fp, cid, data) + + chunk(fp, b"IEND", b"") + + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- +# PNG chunk converter + + +def getchunks(im, **params): + """Return a list of PNG chunks representing this image.""" + + class collector: + data = [] + + def write(self, data): + pass + + def append(self, chunk): + self.data.append(chunk) + + def append(fp, cid, *data): + data = b"".join(data) + crc = o32(_crc32(data, _crc32(cid))) + fp.append((cid, data, crc)) + + fp = collector() + + try: + im.encoderinfo = params + _save(im, fp, None, append) + finally: + del im.encoderinfo + + return fp.data + + +# -------------------------------------------------------------------- +# 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/venv/lib/python3.9/site-packages/PIL/PpmImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/PpmImagePlugin.py new file mode 100644 index 0000000..abf4d65 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PpmImagePlugin.py @@ -0,0 +1,164 @@ +# +# 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 . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +b_whitespace = b"\x20\x09\x0a\x0b\x0c\x0d" + +MODES = { + # standard + b"P4": "1", + b"P5": "L", + b"P6": "RGB", + # extensions + b"P0CMYK": "CMYK", + # PIL extensions (for test purposes only) + b"PyP": "P", + b"PyRGBA": "RGBA", + b"PyCMYK": "CMYK", +} + + +def _accept(prefix): + return prefix[0:1] == b"P" and prefix[1] in b"0456y" + + +## +# Image plugin for PBM, PGM, and PPM images. + + +class PpmImageFile(ImageFile.ImageFile): + + format = "PPM" + format_description = "Pbmplus image" + + def _token(self, s=b""): + while True: # read until next whitespace + c = self.fp.read(1) + if not c or c in b_whitespace: + break + if c > b"\x79": + raise ValueError("Expected ASCII value, found binary") + s = s + c + if len(s) > 9: + raise ValueError("Expected int, got > 9 digits") + return s + + def _open(self): + + # check magic + s = self.fp.read(1) + if s != b"P": + raise SyntaxError("not a PPM file") + magic_number = self._token(s) + mode = MODES[magic_number] + + self.custom_mimetype = { + b"P4": "image/x-portable-bitmap", + b"P5": "image/x-portable-graymap", + b"P6": "image/x-portable-pixmap", + }.get(magic_number) + + if mode == "1": + self.mode = "1" + rawmode = "1;I" + else: + self.mode = rawmode = mode + + for ix in range(3): + while True: + while True: + s = self.fp.read(1) + if s not in b_whitespace: + break + if s == b"": + raise ValueError("File does not extend beyond magic number") + if s != b"#": + break + s = self.fp.readline() + s = int(self._token(s)) + if ix == 0: + xsize = s + elif ix == 1: + ysize = s + if mode == "1": + break + elif ix == 2: + # maxgrey + if s > 255: + if not mode == "L": + raise ValueError(f"Too many colors for band: {s}") + if s < 2 ** 16: + self.mode = "I" + rawmode = "I;16B" + else: + self.mode = "I" + rawmode = "I;32B" + + self._size = xsize, ysize + self.tile = [("raw", (0, 0, xsize, ysize), self.fp.tell(), (rawmode, 0, 1))] + + +# +# -------------------------------------------------------------------- + + +def _save(im, fp, filename): + if im.mode == "1": + rawmode, head = "1;I", b"P4" + elif im.mode == "L": + rawmode, head = "L", b"P5" + elif im.mode == "I": + if im.getextrema()[1] < 2 ** 16: + rawmode, head = "I;16B", b"P5" + else: + rawmode, head = "I;32B", b"P5" + elif im.mode == "RGB": + rawmode, head = "RGB", b"P6" + elif im.mode == "RGBA": + rawmode, head = "RGB", b"P6" + else: + raise OSError(f"cannot write mode {im.mode} as PPM") + fp.write(head + ("\n%d %d\n" % im.size).encode("ascii")) + if head == b"P6": + fp.write(b"255\n") + if head == b"P5": + if rawmode == "L": + fp.write(b"255\n") + elif rawmode == "I;16B": + fp.write(b"65535\n") + elif rawmode == "I;32B": + fp.write(b"2147483648\n") + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))]) + + # ALTERNATIVE: save via builtin debug function + # im._dump(filename) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(PpmImageFile.format, PpmImageFile, _accept) +Image.register_save(PpmImageFile.format, _save) + +Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm", ".pnm"]) + +Image.register_mime(PpmImageFile.format, "image/x-portable-anymap") diff --git a/venv/lib/python3.9/site-packages/PIL/PsdImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/PsdImagePlugin.py new file mode 100644 index 0000000..d3799ed --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PsdImagePlugin.py @@ -0,0 +1,313 @@ +# +# 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. +# + +import io + +from . import Image, ImageFile, ImagePalette +from ._binary import i8 +from ._binary import i16be as i16 +from ._binary import i32be as i32 + +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): + return prefix[:4] == 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): + + read = self.fp.read + + # + # header + + s = read(26) + if not _accept(s) or i16(s, 4) != 1: + raise SyntaxError("not a PSD file") + + 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: + raise OSError("not enough channels") + + 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 = [] + + size = i32(read(4)) + if size: + end = self.fp.tell() + size + size = i32(read(4)) + if size: + self.layers = _layerinfo(self.fp) + self.fp.seek(end) + self.n_frames = len(self.layers) + self.is_animated = self.n_frames > 1 + + # + # 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 + + def seek(self, layer): + if not self._seek_check(layer): + return + + # seek to given layer (1..max) + try: + name, mode, bbox, tile = self.layers[layer - 1] + self.mode = mode + self.tile = tile + self.frame = layer + self.fp = self.__fp + return name, bbox + except IndexError as e: + raise EOFError("no such layer") from e + + def tell(self): + # return layer number (0=image, 1..max=layers) + return self.frame + + def load_prepare(self): + # create image memory if necessary + if not self.im or self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.fill(self.mode, self.size, 0) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +def _layerinfo(file): + # read layerinfo block + layers = [] + read = file.read + for i in range(abs(i16(read(2)))): + + # bounding box + y0 = i32(read(4)) + x0 = i32(read(4)) + y1 = i32(read(4)) + x1 = i32(read(4)) + + # image info + info = [] + mode = [] + types = list(range(i16(read(2)))) + if len(types) > 4: + continue + + for i in types: + type = i16(read(2)) + + if type == 65535: + m = "A" + else: + m = "RGBA"[type] + + mode.append(m) + size = i32(read(4)) + info.append((m, size)) + + # figure out the image mode + mode.sort() + if mode == ["R"]: + mode = "L" + elif mode == ["B", "G", "R"]: + mode = "RGB" + elif mode == ["A", "B", "G", "R"]: + mode = "RGBA" + else: + mode = None # unknown + + # skip over blend flags and extra information + read(12) # filler + name = "" + size = i32(read(4)) # length of the extra data field + combined = 0 + if size: + data_end = file.tell() + size + + length = i32(read(4)) + if length: + file.seek(length - 16, io.SEEK_CUR) + combined += length + 4 + + length = i32(read(4)) + if length: + file.seek(length, io.SEEK_CUR) + combined += length + 4 + + 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") + combined += length + 1 + + file.seek(data_end) + layers.append((name, mode, (x0, y0, x1, y1))) + + # get tiles + i = 0 + for name, mode, bbox in layers: + tile = [] + for m in mode: + t = _maketile(file, m, bbox, 1) + if t: + tile.extend(t) + layers[i] = name, mode, bbox, tile + i += 1 + + return layers + + +def _maketile(file, mode, bbox, channels): + + tile = None + 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 + tile = [] + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append(("raw", bbox, offset, layer)) + offset = offset + xsize * ysize + + elif compression == 1: + # + # packbits compression + i = 0 + tile = [] + bytecount = read(channels * ysize * 2) + offset = file.tell() + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append(("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 tile + + +# -------------------------------------------------------------------- +# 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/venv/lib/python3.9/site-packages/PIL/PyAccess.py b/venv/lib/python3.9/site-packages/PIL/PyAccess.py new file mode 100644 index 0000000..494f5f9 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/PyAccess.py @@ -0,0 +1,352 @@ +# +# The Python Imaging Library +# Pillow fork +# +# Python implementation of the PixelAccess Object +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# Copyright (c) 2013 Eric Soroos +# +# See the README file for information on usage and redistribution +# + +# Notes: +# +# * Implements the pixel access object following Access. +# * Does not implement the line functions, as they don't appear to be used +# * Taking only the tuple form, which is used from python. +# * Fill.c uses the integer form, but it's still going to use the old +# Access.c implementation. +# + +import logging +import sys + +try: + from cffi import FFI + + defs = """ + struct Pixel_RGBA { + unsigned char r,g,b,a; + }; + struct Pixel_I16 { + unsigned char l,r; + }; + """ + ffi = FFI() + ffi.cdef(defs) +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import deferred_error + + FFI = ffi = deferred_error(ex) + +logger = logging.getLogger(__name__) + + +class PyAccess: + def __init__(self, img, readonly=False): + vals = dict(img.im.unsafe_ptrs) + self.readonly = readonly + self.image8 = ffi.cast("unsigned char **", vals["image8"]) + self.image32 = ffi.cast("int **", vals["image32"]) + self.image = ffi.cast("unsigned char **", vals["image"]) + self.xsize, self.ysize = img.im.size + + # Keep pointer to im object to prevent dereferencing. + self._im = img.im + if self._im.mode == "P": + self._palette = img.palette + + # Debugging is polluting test traces, only useful here + # when hacking on PyAccess + # logger.debug("%s", vals) + self._post_init() + + def _post_init(self): + pass + + def __setitem__(self, xy, color): + """ + Modifies the pixel at x,y. The color is given as a single + numerical value for single band images, and a tuple for + multi-band images + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param color: The pixel value. + """ + if self.readonly: + raise ValueError("Attempt to putpixel a read only image") + (x, y) = xy + if x < 0: + x = self.xsize + x + if y < 0: + y = self.ysize + y + (x, y) = self.check_xy((x, y)) + + if ( + self._im.mode == "P" + and isinstance(color, (list, tuple)) + and len(color) in [3, 4] + ): + # RGB or RGBA value for a P image + color = self._palette.getcolor(color) + + return self.set_pixel(x, y, color) + + def __getitem__(self, xy): + """ + Returns the pixel at x,y. The pixel is returned as a single + value for single band images or a tuple for multiple band + images + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: a pixel value for single band images, a tuple of + pixel values for multiband images. + """ + (x, y) = xy + if x < 0: + x = self.xsize + x + if y < 0: + y = self.ysize + y + (x, y) = self.check_xy((x, y)) + return self.get_pixel(x, y) + + putpixel = __setitem__ + getpixel = __getitem__ + + def check_xy(self, xy): + (x, y) = xy + if not (0 <= x < self.xsize and 0 <= y < self.ysize): + raise ValueError("pixel location out of range") + return xy + + +class _PyAccess32_2(PyAccess): + """ PA, LA, stored in first and last bytes of a 32 bit word """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return (pixel.r, pixel.a) + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.a = min(color[1], 255) + + +class _PyAccess32_3(PyAccess): + """ RGB and friends, stored in the first three bytes of a 32 bit word """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return (pixel.r, pixel.g, pixel.b) + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.g = min(color[1], 255) + pixel.b = min(color[2], 255) + pixel.a = 255 + + +class _PyAccess32_4(PyAccess): + """ RGBA etc, all 4 bytes of a 32 bit word """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return (pixel.r, pixel.g, pixel.b, pixel.a) + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.g = min(color[1], 255) + pixel.b = min(color[2], 255) + pixel.a = min(color[3], 255) + + +class _PyAccess8(PyAccess): + """ 1, L, P, 8 bit images stored as uint8 """ + + def _post_init(self, *args, **kwargs): + self.pixels = self.image8 + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # integer + self.pixels[y][x] = min(color, 255) + except TypeError: + # tuple + self.pixels[y][x] = min(color[0], 255) + + +class _PyAccessI16_N(PyAccess): + """ I;16 access, native bitendian without conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("unsigned short **", self.image) + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # integer + self.pixels[y][x] = min(color, 65535) + except TypeError: + # tuple + self.pixels[y][x] = min(color[0], 65535) + + +class _PyAccessI16_L(PyAccess): + """ I;16L access, with conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_I16 **", self.image) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.l + pixel.r * 256 + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + try: + color = min(color, 65535) + except TypeError: + color = min(color[0], 65535) + + pixel.l = color & 0xFF # noqa: E741 + pixel.r = color >> 8 + + +class _PyAccessI16_B(PyAccess): + """ I;16B access, with conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_I16 **", self.image) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.l * 256 + pixel.r + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + try: + color = min(color, 65535) + except Exception: + color = min(color[0], 65535) + + pixel.l = color >> 8 # noqa: E741 + pixel.r = color & 0xFF + + +class _PyAccessI32_N(PyAccess): + """ Signed Int32 access, native endian """ + + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + self.pixels[y][x] = color + + +class _PyAccessI32_Swap(PyAccess): + """ I;32L/B access, with byteswapping conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def reverse(self, i): + orig = ffi.new("int *", i) + chars = ffi.cast("unsigned char *", orig) + chars[0], chars[1], chars[2], chars[3] = chars[3], chars[2], chars[1], chars[0] + return ffi.cast("int *", chars)[0] + + def get_pixel(self, x, y): + return self.reverse(self.pixels[y][x]) + + def set_pixel(self, x, y, color): + self.pixels[y][x] = self.reverse(color) + + +class _PyAccessF(PyAccess): + """ 32 bit float access """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("float **", self.image32) + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # not a tuple + self.pixels[y][x] = color + except TypeError: + # tuple + self.pixels[y][x] = color[0] + + +mode_map = { + "1": _PyAccess8, + "L": _PyAccess8, + "P": _PyAccess8, + "LA": _PyAccess32_2, + "La": _PyAccess32_2, + "PA": _PyAccess32_2, + "RGB": _PyAccess32_3, + "LAB": _PyAccess32_3, + "HSV": _PyAccess32_3, + "YCbCr": _PyAccess32_3, + "RGBA": _PyAccess32_4, + "RGBa": _PyAccess32_4, + "RGBX": _PyAccess32_4, + "CMYK": _PyAccess32_4, + "F": _PyAccessF, + "I": _PyAccessI32_N, +} + +if sys.byteorder == "little": + mode_map["I;16"] = _PyAccessI16_N + mode_map["I;16L"] = _PyAccessI16_N + mode_map["I;16B"] = _PyAccessI16_B + + mode_map["I;32L"] = _PyAccessI32_N + mode_map["I;32B"] = _PyAccessI32_Swap +else: + mode_map["I;16"] = _PyAccessI16_L + mode_map["I;16L"] = _PyAccessI16_L + mode_map["I;16B"] = _PyAccessI16_N + + mode_map["I;32L"] = _PyAccessI32_Swap + mode_map["I;32B"] = _PyAccessI32_N + + +def new(img, readonly=False): + access_type = mode_map.get(img.mode, None) + if not access_type: + logger.debug("PyAccess Not Implemented: %s", img.mode) + return None + return access_type(img, readonly) diff --git a/venv/lib/python3.9/site-packages/PIL/SgiImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/SgiImagePlugin.py new file mode 100644 index 0000000..d0f7c99 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/SgiImagePlugin.py @@ -0,0 +1,229 @@ +# +# 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. +# + + +import os +import struct + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import o8 + + +def _accept(prefix): + 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): + + # HEAD + headlen = 512 + s = self.fp.read(headlen) + + if not _accept(s): + raise ValueError("Not an SGI image file") + + # 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) + + # layout + layout = bpc, dimension, zsize + + # determine mode from bits/zsize + rawmode = "" + try: + rawmode = MODES[layout] + except KeyError: + pass + + if rawmode == "": + raise ValueError("Unsupported SGI image mode") + + 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 = [ + ("SGI16", (0, 0) + self.size, headlen, (self.mode, 0, orientation)) + ] + else: + self.tile = [] + offset = headlen + for layer in self.mode: + self.tile.append( + ("raw", (0, 0) + self.size, offset, (layer, 0, orientation)) + ) + offset += pagesize + elif compression == 1: + self.tile = [ + ("sgi_rle", (0, 0) + self.size, headlen, (rawmode, orientation, bpc)) + ] + + +def _save(im, fp, filename): + if im.mode != "RGB" and im.mode != "RGBA" and im.mode != "L": + raise ValueError("Unsupported SGI image mode") + + # 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): + raise ValueError("Unsupported number of bytes per pixel") + + # Flip the image, since the origin of SGI file is the bottom-left corner + orientation = -1 + # Define the file as SGI File Format + magicNumber = 474 + # Run-Length Encoding Compression - Unsupported at this time + rle = 0 + + # Number of dimensions (x,y,z) + dim = 3 + # X Dimension = width / Y Dimension = height + x, y = im.size + if im.mode == "L" and y == 1: + dim = 1 + elif im.mode == "L": + dim = 2 + # Z Dimension: Number of channels + z = len(im.mode) + + if dim == 1 or dim == 2: + z = 1 + + # assert we've got the right number of bands. + if len(im.getbands()) != z: + raise ValueError( + f"incorrect number of bands in SGI write: {z} vs {len(im.getbands())}" + ) + + # Minimum Byte value + pinmin = 0 + # Maximum Byte value (255 = 8bits per pixel) + pinmax = 255 + # Image name (79 characters max, truncated below in write) + imgName = os.path.splitext(os.path.basename(filename))[0] + imgName = imgName.encode("ascii", "ignore") + # Standard representation of pixel in the file + colormap = 0 + fp.write(struct.pack(">h", magicNumber)) + fp.write(o8(rle)) + fp.write(o8(bpc)) + fp.write(struct.pack(">H", dim)) + 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", imgName)) # truncates to 79 chars + fp.write(struct.pack("s", b"")) # force null byte after imgname + 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)) + + fp.close() + + +class SGI16Decoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer): + 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/venv/lib/python3.9/site-packages/PIL/SpiderImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/SpiderImagePlugin.py new file mode 100644 index 0000000..819f2ed --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/SpiderImagePlugin.py @@ -0,0 +1,324 @@ +# +# 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 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 +# +import os +import struct +import sys + +from PIL import Image, ImageFile + + +def isInt(f): + 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): + 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): + 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): + # 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: + raise SyntaxError("not a valid Spider file") + except struct.error as e: + raise SyntaxError("not a valid Spider file") from e + + h = (99,) + t # add 1 value : spider header index starts at 1 + iform = int(h[5]) + if iform != 1: + raise SyntaxError("not a Spider 2D image") + + 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: + raise SyntaxError("inconsistent stack header values") + + if self.bigendian: + self.rawmode = "F;32BF" + else: + self.rawmode = "F;32F" + self.mode = "F" + + self.tile = [("raw", (0, 0) + self.size, offset, (self.rawmode, 0, 1))] + self.__fp = self.fp # FIXME: hack + + @property + def n_frames(self): + return self._nimages + + @property + def is_animated(self): + return self._nimages > 1 + + # 1st image index is zero (although SPIDER imgnumber starts at 1) + def tell(self): + if self.imgnumber < 1: + return 0 + else: + return self.imgnumber - 1 + + def seek(self, frame): + if self.istack == 0: + raise EOFError("attempt to seek in a non-stack file") + if not self._seek_check(frame): + return + 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=255): + (minimum, maximum) = self.getextrema() + m = 1 + if maximum != minimum: + m = depth / (maximum - minimum) + b = -m * minimum + return self.point(lambda i, m=m, b=b: i * m + b).convert("L") + + # returns a ImageTk.PhotoImage object, after rescaling to 0..255 + def tkPhotoImage(self): + from PIL import ImageTk + + return ImageTk.PhotoImage(self.convert2byte(), palette=256) + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# -------------------------------------------------------------------- +# Image series + +# given a list of filenames, return a list of images +def loadImageSeries(filelist=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 + + imglist = [] + for img in filelist: + if not os.path.exists(img): + print(f"unable to find {img}") + continue + try: + with Image.open(img) as im: + im = im.convert2byte() + except Exception: + if not isSpiderImage(img): + print(img + " is not a Spider image file") + continue + im.info["filename"] = img + imglist.append(im) + return imglist + + +# -------------------------------------------------------------------- +# For saving images in Spider format + + +def makeSpiderHeader(im): + 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 + hdr = [] + nvalues = int(labbyt / 4) + for i in range(nvalues): + hdr.append(0.0) + + if len(hdr) < 23: + return [] + + # NB these are Fortran indices + hdr[1] = 1.0 # nslice (=1 for an image) + hdr[2] = float(nrow) # number of rows per slice + 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 + hdrstr = [] + for v in hdr: + hdrstr.append(struct.pack("f", v)) + return hdrstr + + +def _save(im, fp, filename): + if im.mode[0] != "F": + im = im.convert("F") + + hdr = makeSpiderHeader(im) + if len(hdr) < 256: + raise OSError("Error creating Spider header") + + # write the SPIDER header + fp.writelines(hdr) + + rawmode = "F;32NF" # 32-bit native floating point + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))]) + + +def _save_spider(im, fp, filename): + # get the filename extension and register it with Image + ext = os.path.splitext(filename)[1] + 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: python 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("image: " + str(im)) + print("format: " + str(im.format)) + print("size: " + str(im.size)) + print("mode: " + str(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.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/venv/lib/python3.9/site-packages/PIL/SunImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/SunImagePlugin.py new file mode 100644 index 0000000..c03759a --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/SunImagePlugin.py @@ -0,0 +1,136 @@ +# +# 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 . import Image, ImageFile, ImagePalette +from ._binary import i32be as i32 + + +def _accept(prefix): + 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): + + # 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; + + # HEAD + s = self.fp.read(32) + if not _accept(s): + raise SyntaxError("not an SUN raster file") + + 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: + raise SyntaxError("Unsupported Mode/Bit Depth") + + if palette_length: + if palette_length > 1024: + raise SyntaxError("Unsupported Color Palette Length") + + if palette_type != 1: + raise SyntaxError("Unsupported Palette Type") + + 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 = [("raw", (0, 0) + self.size, offset, (rawmode, stride))] + elif file_type == 2: + self.tile = [("sun_rle", (0, 0) + self.size, offset, rawmode)] + else: + raise SyntaxError("Unsupported Sun Raster file type") + + +# +# registry + + +Image.register_open(SunImageFile.format, SunImageFile, _accept) + +Image.register_extension(SunImageFile.format, ".ras") diff --git a/venv/lib/python3.9/site-packages/PIL/TarIO.py b/venv/lib/python3.9/site-packages/PIL/TarIO.py new file mode 100644 index 0000000..d108362 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/TarIO.py @@ -0,0 +1,65 @@ +# +# 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. +# + +import io + +from . import ContainerIO + + +class TarIO(ContainerIO.ContainerIO): + """A file object that provides read access to a given member of a TAR file.""" + + def __init__(self, tarfile, file): + """ + 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: + raise OSError("unexpected end of tar file") + + name = s[:100].decode("utf-8") + i = name.find("\0") + if i == 0: + raise OSError("cannot find subfile") + 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) + + # Context manager support + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + self.fh.close() diff --git a/venv/lib/python3.9/site-packages/PIL/TgaImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/TgaImagePlugin.py new file mode 100644 index 0000000..2b936d6 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/TgaImagePlugin.py @@ -0,0 +1,248 @@ +# +# 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. +# + + +import warnings + +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): "BGR;5", + (2, 24): "BGR", + (2, 32): "BGRA", +} + + +## +# Image plugin for Targa files. + + +class TgaImageFile(ImageFile.ImageFile): + + format = "TGA" + format_description = "Targa" + + def _open(self): + + # process header + 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) + ): + raise SyntaxError("not a TGA file") + + # 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" + elif imagetype in (2, 10): + self.mode = "RGB" + if depth == 32: + self.mode = "RGBA" + else: + raise SyntaxError("unknown TGA mode") + + # orientation + orientation = flags & 0x30 + if orientation == 0x20: + orientation = 1 + elif not orientation: + orientation = -1 + else: + raise SyntaxError("unknown TGA orientation") + + 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), i16(s, 7) + if mapdepth == 16: + self.palette = ImagePalette.raw( + "BGR;16", b"\0" * 2 * start + self.fp.read(2 * size) + ) + elif mapdepth == 24: + self.palette = ImagePalette.raw( + "BGR", b"\0" * 3 * start + self.fp.read(3 * size) + ) + elif mapdepth == 32: + self.palette = ImagePalette.raw( + "BGRA", b"\0" * 4 * start + self.fp.read(4 * size) + ) + + # setup tile descriptor + try: + rawmode = MODES[(imagetype & 7, depth)] + if imagetype & 8: + # compressed + self.tile = [ + ( + "tga_rle", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, orientation, depth), + ) + ] + else: + self.tile = [ + ( + "raw", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, 0, orientation), + ) + ] + except KeyError: + pass # cannot decode + + +# +# -------------------------------------------------------------------- +# 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, fp, filename): + + try: + rawmode, bits, colormaptype, imagetype = SAVE[im.mode] + except KeyError as e: + raise OSError(f"cannot write mode {im.mode} as TGA") 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: + colormapfirst, colormaplength, colormapentry = 0, 256, 24 + else: + colormapfirst, colormaplength, colormapentry = 0, 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(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(im.im.getpalette("RGB", "BGR")) + + if rle: + ImageFile._save( + im, fp, [("tga_rle", (0, 0) + im.size, 0, (rawmode, orientation))] + ) + else: + ImageFile._save( + im, fp, [("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/venv/lib/python3.9/site-packages/PIL/TiffImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/TiffImagePlugin.py new file mode 100644 index 0000000..0b70ce3 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/TiffImagePlugin.py @@ -0,0 +1,1924 @@ +# +# 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. +# +import io +import itertools +import logging +import os +import struct +import warnings +from collections.abc import MutableMapping +from fractions import Fraction +from numbers import Number, Rational + +from . import Image, ImageFile, ImagePalette, TiffTags +from ._binary import o8 +from .TiffTags import TYPES + +logger = logging.getLogger(__name__) + +# Set these to true to force use of libtiff for reading or writing. +READ_LIBTIFF = False +WRITE_LIBTIFF = False +IFD_LEGACY_API = True + +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 +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 +TILEOFFSETS = 324 +SUBIFD = 330 +EXTRASAMPLES = 338 +SAMPLEFORMAT = 339 +JPEGTABLES = 347 +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, (1,), 2, (8,), ()): ("L", "L;R"), + (MM, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (II, 1, (1,), 1, (12,), ()): ("I;16", "I;12"), + (II, 1, (1,), 1, (16,), ()): ("I;16", "I;16"), + (MM, 1, (1,), 1, (16,), ()): ("I;16B", "I;16B"), + (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,)): ("RGBX", "RGBX"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGBX", "RGBX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "RGBXXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "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,)): ("RGBX", "RGBX;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGBX", "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), (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"), + # 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"), +} + +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 +] + + +def _accept(prefix): + return prefix[:4] in PREFIXES + + +def _limit_rational(val, max_val): + 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, max_val, min_val): + frac = Fraction(val) + n_d = frac.numerator, frac.denominator + + if min(n_d) < min_val: + n_d = _limit_rational(val, abs(min_val)) + + if max(n_d) > max_val: + val = Fraction(*n_d) + n_d = _limit_rational(val, max_val) + + return n_d + + +## +# Wrapper for TIFF IFDs. + +_load_dispatch = {} +_write_dispatch = {} + + +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, denominator=1): + """ + :param value: either an integer numerator, a + float/rational/other number, or an IFDRational + :param denominator: Optional integer denominator + """ + 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: + self._numerator = value + self._denominator = denominator + + if denominator == 0: + self._val = float("nan") + elif denominator == 1: + self._val = Fraction(value) + else: + self._val = Fraction(value, denominator) + + @property + def numerator(a): + return a._numerator + + @property + def denominator(a): + return a._denominator + + def limit_rational(self, max_denominator): + """ + + :param max_denominator: Integer, the maximum denominator value + :returns: Tuple of (numerator, denominator) + """ + + if self.denominator == 0: + return (self.numerator, self.denominator) + + f = self._val.limit_denominator(max_denominator) + return (f.numerator, f.denominator) + + def __repr__(self): + return str(float(self._val)) + + def __hash__(self): + return self._val.__hash__() + + def __eq__(self, other): + if isinstance(other, IFDRational): + other = other._val + return self._val == other + + def _delegate(op): + def delegate(self, *args): + return getattr(self._val, op)(*args) + + return delegate + + """ 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__") + + +class ImageFileDirectory_v2(MutableMapping): + """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 + ~PIL.TiffTags.TYPES` + + .. versionadded:: 3.0.0 + """ + + """ + Documentation: + + '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 the + ImageFileDirectory_v1 class, 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. + + """ + + def __init__(self, ifh=b"II\052\0\0\0\0\0", prefix=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 ifh[:4] not in PREFIXES: + raise SyntaxError(f"not a TIFF file (header {repr(ifh)} not valid)") + self._prefix = prefix if prefix is not None else ifh[:2] + if self._prefix == MM: + self._endian = ">" + elif self._prefix == II: + self._endian = "<" + else: + raise SyntaxError("not a TIFF IFD") + self.tagtype = {} + """ Dictionary of tag types """ + self.reset() + (self.next,) = self._unpack("L", ifh[4:]) + self._legacy_api = False + + prefix = property(lambda self: self._prefix) + offset = property(lambda self: self._offset) + legacy_api = property(lambda self: self._legacy_api) + + @legacy_api.setter + def legacy_api(self, value): + raise Exception("Not allowing setting of legacy api") + + def reset(self): + self._tags_v1 = {} # will remain empty if legacy_api is false + self._tags_v2 = {} # main tag storage + self._tagdata = {} + self.tagtype = {} # added 2008-06-05 by Florian Hoech + self._next = None + self._offset = None + + def __str__(self): + return str(dict(self)) + + def named(self): + """ + :returns: dict of name|key: value + + Returns the complete tag dictionary, with named tags where possible. + """ + return {TiffTags.lookup(code).name: value for code, value in self.items()} + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v2)) + + def __getitem__(self, tag): + 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): + return tag in self._tags_v2 or tag in self._tagdata + + def __setitem__(self, tag, value): + self._setitem(tag, value, self.legacy_api) + + def _setitem(self, tag, value, legacy_api): + basetypes = (Number, bytes, str) + + info = TiffTags.lookup(tag) + 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): + self.tagtype[tag] = ( + TiffTags.RATIONAL + if all(v >= 0 for v in values) + else TiffTags.SIGNED_RATIONAL + ) + elif all(isinstance(v, int) for v in values): + if all(0 <= v < 2 ** 16 for v in values): + self.tagtype[tag] = TiffTags.SHORT + elif all(-(2 ** 15) < v < 2 ** 15 for v in values): + self.tagtype[tag] = TiffTags.SIGNED_SHORT + else: + self.tagtype[tag] = ( + TiffTags.LONG + if all(v >= 0 for v in values) + else 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 = [ + value.encode("ascii", "replace") if isinstance(value, str) else value + ] + 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) 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): + self._tags_v2.pop(tag, None) + self._tags_v1.pop(tag, None) + self._tagdata.pop(tag, None) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v2)) + + def _unpack(self, fmt, data): + return struct.unpack(self._endian + fmt, data) + + def _pack(self, fmt, *values): + return struct.pack(self._endian + fmt, *values) + + def _register_loader(idx, size): + def decorator(func): + 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): + def decorator(func): + _write_dispatch[idx] = func # noqa: F821 + return func + + return decorator + + def _register_basic(idx_fmt_name): + from .TiffTags import TYPES + + idx, fmt, name = idx_fmt_name + TYPES[idx] = name + size = struct.calcsize("=" + fmt) + _load_dispatch[idx] = ( # noqa: F821 + size, + lambda self, data, legacy_api=True: ( + self._unpack("{}{}".format(len(data) // size, fmt), data) + ), + ) + _write_dispatch[idx] = lambda self, *values: ( # noqa: F821 + b"".join(self._pack(fmt, value) for value in 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"), + ], + ) + ) + + @_register_loader(1, 1) # Basic type, except for the legacy API. + def load_byte(self, data, legacy_api=True): + return data + + @_register_writer(1) # Basic type, except for the legacy API. + def write_byte(self, data): + return data + + @_register_loader(2, 1) + def load_string(self, data, legacy_api=True): + if data.endswith(b"\0"): + data = data[:-1] + return data.decode("latin-1", "replace") + + @_register_writer(2) + def write_string(self, value): + # remerge of https://github.com/python-pillow/Pillow/pull/1416 + return b"" + value.encode("ascii", "replace") + b"\0" + + @_register_loader(5, 8) + def load_rational(self, data, legacy_api=True): + vals = self._unpack("{}L".format(len(data) // 4), data) + + def combine(a, b): + 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): + 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, legacy_api=True): + return data + + @_register_writer(7) + def write_undefined(self, value): + return value + + @_register_loader(10, 8) + def load_signed_rational(self, data, legacy_api=True): + vals = self._unpack("{}l".format(len(data) // 4), data) + + def combine(a, b): + 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): + return b"".join( + self._pack("2l", *_limit_signed_rational(frac, 2 ** 31 - 1, -(2 ** 31))) + for frac in values + ) + + def _ensure_read(self, fp, size): + ret = fp.read(size) + if len(ret) != size: + raise OSError( + "Corrupt EXIF data. " + f"Expecting to read {size} bytes but only got {len(ret)}. " + ) + return ret + + def load(self, fp): + + self.reset() + self._offset = fp.tell() + + try: + for i in range(self._unpack("H", self._ensure_read(fp, 2))[0]): + tag, typ, count, data = self._unpack("HHL4s", self._ensure_read(fp, 12)) + + tagname = TiffTags.lookup(tag).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(msg + f" - unsupported type {typ}") + continue # ignore unsupported type + size = count * unit_size + if size > 4: + here = fp.tell() + (offset,) = self._unpack("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: " + ( + "" % size if size > 32 else repr(data) + ) + logger.debug(msg) + + (self.next,) = self._unpack("L", self._ensure_read(fp, 4)) + except OSError as msg: + warnings.warn(str(msg)) + return + + def tobytes(self, offset=0): + # FIXME What about tagdata? + result = self._pack("H", len(self._tags_v2)) + + entries = [] + offset = offset + len(result) + len(self._tags_v2) * 12 + 4 + 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.get(tag) + logger.debug(f"Tag {tag}, Type: {typ}, Value: {repr(value)}") + is_ifd = typ == TiffTags.LONG and isinstance(value, dict) + if is_ifd: + if self._endian == "<": + ifh = b"II\x2A\x00\x08\x00\x00\x00" + else: + ifh = b"MM\x00\x2A\x00\x00\x00\x08" + ifd = ImageFileDirectory_v2(ifh) + for ifd_tag, ifd_value in self._tags_v2[tag].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).name + typname = "ifd" if is_ifd else TYPES.get(typ, "unknown") + msg = f"save: {tagname} ({tag}) - type: {typname} ({typ})" + msg += " - value: " + ( + "" % len(data) if len(data) >= 16 else str(values) + ) + 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) <= 4: + entries.append((tag, typ, count, data.ljust(4, b"\0"), b"")) + else: + entries.append((tag, typ, count, self._pack("L", 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: + raise NotImplementedError("multistrip support not yet implemented") + value = self._pack("L", self._unpack("L", 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(f"{tag} {typ} {count} {repr(value)} {repr(data)}") + result += self._pack("HHL4s", tag, typ, count, value) + + # -- overwrite here for multi-page -- + result += b"\0\0\0\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): + + if fp.tell() == 0: # skip TIFF header on subsequent pages + # tiff header -- PIL always starts the first IFD at offset 8 + fp.write(self._prefix + self._pack("HL", 42, 8)) + + 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, "load_" + name, _load_dispatch[idx][1]) + setattr(ImageFileDirectory_v2, "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, **kwargs): + 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 + """Dictionary of tag types""" + + @classmethod + def from_v2(cls, original): + """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): + """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): + return tag in self._tags_v1 or tag in self._tagdata + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v1)) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v1)) + + def __setitem__(self, tag, value): + for legacy_api in (False, True): + self._setitem(tag, value, legacy_api) + + def __getitem__(self, tag): + 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 when IFD_LEGACY_API == False +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=None, filename=None): + self.tag_v2 = None + """ Image file directory (tag dictionary) """ + + self.tag = None + """ Legacy tag entries """ + + super().__init__(fp, filename) + + def _open(self): + """Open the first image in a TIFF file""" + + # Header + ifh = self.fp.read(8) + + self.tag_v2 = ImageFileDirectory_v2(ifh) + + # legacy IFD entries will be filled in later + self.ifd = None + + # setup frame pointers + self.__first = self.__next = self.tag_v2.next + self.__frame = -1 + self.__fp = self.fp + self._frame_pos = [] + self._n_frames = None + + logger.debug("*** TiffImageFile._open ***") + logger.debug(f"- __first: {self.__first}") + logger.debug(f"- ifh: {repr(ifh)}") # Use repr to avoid str(bytes) + + # and load the first frame + self._seek(0) + + @property + def n_frames(self): + if self._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) + return self._n_frames + + def seek(self, frame): + """Select a given frame as current image""" + if not self._seek_check(frame): + return + self._seek(frame) + # Create a new core image object on second and + # subsequent frames in the image. Image may be + # different size/mode. + Image._decompression_bomb_check(self.size) + self.im = Image.core.new(self.mode, self.size) + + def _seek(self, frame): + self.fp = self.__fp + while len(self._frame_pos) <= frame: + if not self.__next: + raise EOFError("no more images in TIFF file") + logger.debug( + f"Seeking to frame {frame}, on frame {self.__frame}, " + f"__next {self.__next}, location: {self.fp.tell()}" + ) + # reset buffered io handle in case fp + # was passed to libtiff, invalidating the buffer + self.fp.tell() + 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) + 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) + # 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): + """Return the current frame number""" + return self.__frame + + def load(self): + if self.tile and self.use_load_libtiff: + return self._load_libtiff() + return super().load() + + def load_end(self): + if self._tile_orientation: + method = { + 2: Image.FLIP_LEFT_RIGHT, + 3: Image.ROTATE_180, + 4: Image.FLIP_TOP_BOTTOM, + 5: Image.TRANSPOSE, + 6: Image.ROTATE_270, + 7: Image.TRANSVERSE, + 8: Image.ROTATE_90, + }.get(self._tile_orientation) + if method is not None: + self.im = self.im.transpose(method) + self._size = self.im.size + + # 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 + + def _load_libtiff(self): + """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: + raise OSError("Not exactly one tile") + + # (self._compression, (extents tuple), + # 0, (rawmode, self._compression, fp)) + extents = self.tile[0][1] + args = list(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. + # libtiff closes the file descriptor, so pass in a dup. + try: + fp = hasattr(self.fp, "fileno") and os.dup(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: + args[2] = fp + + decoder = Image._getdecoder( + self.mode, "libtiff", tuple(args), self.decoderconfig + ) + try: + decoder.setimage(self.im, extents) + except ValueError as e: + raise OSError("Couldn't set the image") 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) + # 4 bytes, otherwise the trace might error out + n, err = decoder.decode(b"fpfp") + 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() + + # libtiff closed the fp in a, we need to close self.fp, if possible + if close_self_fp: + self.fp.close() + self.fp = None # might be shared + + if err < 0: + raise OSError(err) + + return Image.Image.load(self) + + def _setup(self): + """Setup this image object based on current tags""" + + if 0xBC01 in self.tag_v2: + raise OSError("Windows Media Photo files not yet supported") + + # 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(f"- compression: {self._compression}") + logger.debug(f"- photometric_interpretation: {photo}") + logger.debug(f"- planar_configuration: {self._planar_configuration}") + logger.debug(f"- fill_order: {fillorder}") + logger.debug(f"- YCbCr subsampling: {self.tag.get(530)}") + + # size + xsize = int(self.tag_v2.get(IMAGEWIDTH)) + ysize = int(self.tag_v2.get(IMAGELENGTH)) + self._size = xsize, ysize + + logger.debug(f"- size: {self.size}") + + sampleFormat = self.tag_v2.get(SAMPLEFORMAT, (1,)) + if len(sampleFormat) > 1 and max(sampleFormat) == min(sampleFormat) == 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. + sampleFormat = (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) + # Some files have only one value in bps_tuple, + # while should have more. Fix it + if bps_count > len(bps_tuple) and len(bps_tuple) == 1: + bps_tuple = bps_tuple * bps_count + + # mode: check photometric interpretation and bits per pixel + key = ( + self.tag_v2.prefix, + photo, + sampleFormat, + fillorder, + bps_tuple, + extra_tuple, + ) + logger.debug(f"format key: {key}") + try: + self.mode, rawmode = OPEN_INFO[key] + except KeyError as e: + logger.debug("- unsupported format") + raise SyntaxError("unknown pixel mode") from e + + logger.debug(f"- raw mode: {rawmode}") + logger.debug(f"- pil mode: {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"] = int(xres + 0.5), int(yres + 0.5) + elif resunit == 3: # dots per centimeter. convert to dpi + self.info["dpi"] = int(xres * 2.54 + 0.5), int(yres * 2.54 + 0.5) + elif resunit is None: # used to default to 1, but now 2) + self.info["dpi"] = int(xres + 0.5), int(yres + 0.5) + # 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(f"format key: {key}") + # this should always work, since all the + # fillorder==2 modes have a corresponding + # fillorder=1 mode + self.mode, rawmode = OPEN_INFO[key] + # libtiff always returns the bytes in native order. + # we're expecting image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if rawmode == "I;16": + rawmode = "I;16N" + if ";16B" in rawmode: + rawmode = rawmode.replace(";16B", ";16N") + if ";16L" in rawmode: + rawmode = rawmode.replace(";16L", ";16N") + + # 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(("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 = self.size[0] + else: + # tiled image + offsets = self.tag_v2[TILEOFFSETS] + w = self.tag_v2.get(322) + h = self.tag_v2.get(323) + + 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 + + a = (tile_rawmode, int(stride), 1) + self.tile.append( + ( + self._compression, + (x, y, min(x + w, xsize), min(y + h, ysize)), + offset, + a, + ) + ) + x = x + w + if x >= self.size[0]: + x, y = 0, y + h + if y >= self.size[1]: + x = y = 0 + layer += 1 + else: + logger.debug("- unsupported data organization") + raise SyntaxError("unknown data organization") + + # 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)) + + self._tile_orientation = self.tag_v2.get(0x0112) + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# -------------------------------------------------------------------- +# 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;16S": ("I;16S", II, 1, 2, (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;32BS": ("I;32BS", MM, 1, 2, (32,), None), + "I;16B": ("I;16B", MM, 1, 1, (16,), None), + "I;16BS": ("I;16BS", MM, 1, 2, (16,), None), + "F;32BF": ("F;32BF", MM, 1, 3, (32,), None), +} + + +def _save(im, fp, filename): + + try: + rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] + except KeyError as e: + raise OSError(f"cannot write mode {im.mode} as TIFF") from e + + ifd = ImageFileDirectory_v2(prefix=prefix) + + compression = im.encoderinfo.get("compression", im.info.get("compression")) + if compression is None: + compression = "raw" + elif compression == "tiff_jpeg": + # OJPEG is obsolete, so use new-style JPEG compression instead + compression = "jpeg" + + libtiff = WRITE_LIBTIFF or compression != "raw" + + # required for color libtiff images + ifd[PLANAR_CONFIGURATION] = getattr(im, "_planar_configuration", 1) + + ifd[IMAGEWIDTH] = im.size[0] + ifd[IMAGELENGTH] = im.size[1] + + # write any arbitrary tags passed in as an ImageFileDirectory + info = im.encoderinfo.get("tiffinfo", {}) + logger.debug("Tiffinfo Keys: %s" % list(info)) + if isinstance(info, ImageFileDirectory_v1): + info = info.to_v2() + for key in info: + 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 + + # 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: + 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 + if "icc_profile" in im.info: + ifd[ICCPROFILE] = im.info["icc_profile"] + + 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 im.encoderinfo: + ifd[key] = im.encoderinfo[name] + + dpi = im.encoderinfo.get("dpi") + if dpi: + ifd[RESOLUTION_UNIT] = 2 + ifd[X_RESOLUTION] = int(dpi[0] + 0.5) + ifd[Y_RESOLUTION] = int(dpi[1] + 0.5) + + 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 + + ifd[PHOTOMETRIC_INTERPRETATION] = photo + + if im.mode in ["P", "PA"]: + lut = im.im.getpalette("RGB", "RGB;L") + ifd[COLORMAP] = tuple(v * 256 for v in lut) + # data orientation + stride = len(bits) * ((im.size[0] * bits[0] + 7) // 8) + ifd[ROWSPERSTRIP] = im.size[1] + strip_byte_counts = stride * im.size[1] + if strip_byte_counts >= 2 ** 16: + ifd.tagtype[STRIPBYTECOUNTS] = TiffTags.LONG + ifd[STRIPBYTECOUNTS] = strip_byte_counts + ifd[STRIPOFFSETS] = 0 # this is adjusted by IFD writer + # no compression by default: + ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1) + + if libtiff: + if "quality" in im.encoderinfo: + quality = im.encoderinfo["quality"] + if not isinstance(quality, int) or quality < 0 or quality > 100: + raise ValueError("Invalid quality setting") + if compression != "jpeg": + raise ValueError( + "quality setting only supported for 'jpeg' compression" + ) + 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 = os.dup(fp.fileno()) + except io.UnsupportedOperation: + pass + + # optional types for non core tags + types = {} + # SAMPLEFORMAT is determined by the image format and should not be copied + # from legacy_ifd. + # STRIPOFFSETS and STRIPBYTECOUNTS are added by the library + # based on the data in the strip. + # 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 = [ + REFERENCEBLACKWHITE, + SAMPLEFORMAT, + STRIPBYTECOUNTS, + STRIPOFFSETS, + TRANSFERFUNCTION, + SUBIFD, + ] + + atts = {} + # bits per sample is a single short in the tiff directory, not a list. + atts[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. + legacy_ifd = {} + if hasattr(im, "tag"): + legacy_ifd = im.tag.to_v2() + for tag, value in itertools.chain( + ifd.items(), getattr(im, "tag_v2", {}).items(), legacy_ifd.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 Image.core.libtiff_support_custom_tags: + continue + + if 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 + + 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;16B", "I;16"): + 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) + e = Image._getencoder(im.mode, "libtiff", a, im.encoderconfig) + e.setimage(im.im, (0, 0) + im.size) + while True: + # undone, change to self.decodermaxblock: + l, s, d = e.encode(16 * 1024) + if not _fp: + fp.write(d) + if s: + break + if s < 0: + raise OSError(f"encoder error {s} when writing image file") + + else: + offset = ifd.save(fp) + + ImageFile._save( + im, fp, [("raw", (0, 0) + im.size, offset, (rawmode, stride, 1))] + ) + + # -- helper for multi-page save -- + if "_debug_multipage" in im.encoderinfo: + # just to access o32 and o16 (using correct byte order) + im._debug_multipage = ifd + + +class AppendingTiffWriter: + 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 + ] + + # StripOffsets = 273 + # FreeOffsets = 288 + # TileOffsets = 324 + # JPEGQTables = 519 + # JPEGDCTables = 520 + # JPEGACTables = 521 + Tags = {273, 288, 324, 519, 520, 521} + + def __init__(self, fn, new=False): + if hasattr(fn, "read"): + self.f = fn + self.close_fp = False + else: + 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") + self.beginning = self.f.tell() + self.setup() + + def setup(self): + # Reset everything. + self.f.seek(self.beginning, os.SEEK_SET) + + self.whereToWriteNewIFDOffset = None + self.offsetOfNewPage = 0 + + self.IIMM = IIMM = self.f.read(4) + if not IIMM: + # empty file - first page + self.isFirst = True + return + + self.isFirst = False + if IIMM == b"II\x2a\x00": + self.setEndian("<") + elif IIMM == b"MM\x00\x2a": + self.setEndian(">") + else: + raise RuntimeError("Invalid TIFF file header") + + self.skipIFDs() + self.goToEnd() + + def finalize(self): + if self.isFirst: + return + + # fix offsets + self.f.seek(self.offsetOfNewPage) + + IIMM = self.f.read(4) + if not IIMM: + # raise RuntimeError("nothing written into new page") + # Make it easy to finish a frame without committing to a new one. + return + + if IIMM != self.IIMM: + raise RuntimeError("IIMM of new page doesn't match IIMM of first page") + + IFDoffset = self.readLong() + IFDoffset += self.offsetOfNewPage + self.f.seek(self.whereToWriteNewIFDOffset) + self.writeLong(IFDoffset) + self.f.seek(IFDoffset) + self.fixIFD() + + def newFrame(self): + # Call this to finish a frame. + self.finalize() + self.setup() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + if self.close_fp: + self.close() + return False + + def tell(self): + return self.f.tell() - self.offsetOfNewPage + + def seek(self, offset, whence=io.SEEK_SET): + if whence == os.SEEK_SET: + offset += self.offsetOfNewPage + + self.f.seek(offset, whence) + return self.tell() + + def goToEnd(self): + self.f.seek(0, os.SEEK_END) + pos = self.f.tell() + + # pad to 16 byte boundary + padBytes = 16 - pos % 16 + if 0 < padBytes < 16: + self.f.write(bytes(padBytes)) + self.offsetOfNewPage = self.f.tell() + + def setEndian(self, endian): + self.endian = endian + self.longFmt = self.endian + "L" + self.shortFmt = self.endian + "H" + self.tagFormat = self.endian + "HHL" + + def skipIFDs(self): + while True: + IFDoffset = self.readLong() + if IFDoffset == 0: + self.whereToWriteNewIFDOffset = self.f.tell() - 4 + break + + self.f.seek(IFDoffset) + numTags = self.readShort() + self.f.seek(numTags * 12, os.SEEK_CUR) + + def write(self, data): + return self.f.write(data) + + def readShort(self): + (value,) = struct.unpack(self.shortFmt, self.f.read(2)) + return value + + def readLong(self): + (value,) = struct.unpack(self.longFmt, self.f.read(4)) + return value + + def rewriteLastShortToLong(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError(f"wrote only {bytesWritten} bytes but wanted 4") + + def rewriteLastShort(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.shortFmt, value)) + if bytesWritten is not None and bytesWritten != 2: + raise RuntimeError(f"wrote only {bytesWritten} bytes but wanted 2") + + def rewriteLastLong(self, value): + self.f.seek(-4, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError(f"wrote only {bytesWritten} bytes but wanted 4") + + def writeShort(self, value): + bytesWritten = self.f.write(struct.pack(self.shortFmt, value)) + if bytesWritten is not None and bytesWritten != 2: + raise RuntimeError(f"wrote only {bytesWritten} bytes but wanted 2") + + def writeLong(self, value): + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError(f"wrote only {bytesWritten} bytes but wanted 4") + + def close(self): + self.finalize() + self.f.close() + + def fixIFD(self): + numTags = self.readShort() + + for i in range(numTags): + tag, fieldType, count = struct.unpack(self.tagFormat, self.f.read(8)) + + fieldSize = self.fieldSizes[fieldType] + totalSize = fieldSize * count + isLocal = totalSize <= 4 + if not isLocal: + offset = self.readLong() + offset += self.offsetOfNewPage + self.rewriteLastLong(offset) + + if tag in self.Tags: + curPos = self.f.tell() + + if isLocal: + self.fixOffsets( + count, isShort=(fieldSize == 2), isLong=(fieldSize == 4) + ) + self.f.seek(curPos + 4) + else: + self.f.seek(offset) + self.fixOffsets( + count, isShort=(fieldSize == 2), isLong=(fieldSize == 4) + ) + self.f.seek(curPos) + + offset = curPos = None + + elif isLocal: + # skip the locally stored value that is not an offset + self.f.seek(4, os.SEEK_CUR) + + def fixOffsets(self, count, isShort=False, isLong=False): + if not isShort and not isLong: + raise RuntimeError("offset is neither short nor long") + + for i in range(count): + offset = self.readShort() if isShort else self.readLong() + offset += self.offsetOfNewPage + if isShort and offset >= 65536: + # offset is now too large - we must convert shorts to longs + if count != 1: + raise RuntimeError("not implemented") # XXX TODO + + # simple case - the offset is just one and therefore it is + # local (not referenced with another offset) + self.rewriteLastShortToLong(offset) + self.f.seek(-10, os.SEEK_CUR) + self.writeShort(TiffTags.LONG) # rewrite the type to LONG + self.f.seek(8, os.SEEK_CUR) + elif isShort: + self.rewriteLastShort(offset) + else: + self.rewriteLastLong(offset) + + +def _save_all(im, fp, filename): + encoderinfo = im.encoderinfo.copy() + encoderconfig = im.encoderconfig + append_images = list(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: + ims.encoderinfo = encoderinfo + ims.encoderconfig = encoderconfig + if not hasattr(ims, "n_frames"): + nfr = 1 + else: + nfr = ims.n_frames + + for idx in range(nfr): + ims.seek(idx) + ims.load() + _save(ims, tf, filename) + tf.newFrame() + 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/venv/lib/python3.9/site-packages/PIL/TiffTags.py b/venv/lib/python3.9/site-packages/PIL/TiffTags.py new file mode 100644 index 0000000..796ff34 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/TiffTags.py @@ -0,0 +1,499 @@ +# +# 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 collections import namedtuple + + +class TagInfo(namedtuple("_TagInfo", "value name type length enum")): + __slots__ = [] + + def __new__(cls, value=None, name="unknown", type=None, length=None, enum=None): + return super().__new__(cls, value, name, type, length, enum or {}) + + def cvt_enum(self, value): + # 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): + """ + :param tag: Integer tag number + :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 + + """ + + return TAGS_V2.get(tag, 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 + +TAGS_V2 = { + 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), + 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, 0), + 34377: ("PhotoshopInfo", BYTE, 0), + # FIXME add more tags here + 34665: ("ExifIFD", LONG, 1), + 34675: ("ICCProfile", UNDEFINED, 1), + 34853: ("GPSInfoIFD", LONG, 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), + 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 +} + +# Legacy Tags structure +# these tags aren't included above, but were in the previous versions +TAGS = { + 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", +} + + +def _populate(): + 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) + + +_populate() +## +# Map type numbers to type names -- defined in ImageFileDirectory. + +TYPES = {} + +# was: +# TYPES = { +# 1: "byte", +# 2: "ascii", +# 3: "short", +# 4: "long", +# 5: "rational", +# 6: "signed byte", +# 7: "undefined", +# 8: "signed short", +# 9: "signed long", +# 10: "signed rational", +# 11: "float", +# 12: "double", +# } + +# +# 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(301) # Array of short, crashes +LIBTIFF_CORE.remove(532) # Array of long, crashes + +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/venv/lib/python3.9/site-packages/PIL/WalImageFile.py b/venv/lib/python3.9/site-packages/PIL/WalImageFile.py new file mode 100644 index 0000000..b578d69 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/WalImageFile.py @@ -0,0 +1,126 @@ +# +# 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. +""" + +import builtins + +from . import Image +from ._binary import i32le as i32 + + +def open(filename): + """ + 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. + """ + # FIXME: modify to return a WalImageFile instance instead of + # plain Image object ? + + def imopen(fp): + # read header fields + header = fp.read(32 + 24 + 32 + 12) + size = i32(header, 32), i32(header, 36) + offset = i32(header, 40) + + # load pixel data + fp.seek(offset) + + Image._decompression_bomb_check(size) + im = Image.frombytes("P", size, fp.read(size[0] * size[1])) + im.putpalette(quake2palette) + + im.format = "WAL" + im.format_description = "Quake2 Texture" + + # strings are null-terminated + im.info["name"] = header[:32].split(b"\0", 1)[0] + next_name = header[56 : 56 + 32].split(b"\0", 1)[0] + if next_name: + im.info["next_name"] = next_name + + return im + + if hasattr(filename, "read"): + return imopen(filename) + else: + with builtins.open(filename, "rb") as fp: + return imopen(fp) + + +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/venv/lib/python3.9/site-packages/PIL/WebPImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/WebPImagePlugin.py new file mode 100644 index 0000000..2e9746f --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/WebPImagePlugin.py @@ -0,0 +1,351 @@ +from io import BytesIO + +from . import Image, ImageFile + +try: + from . import _webp + + SUPPORTED = True +except ImportError: + SUPPORTED = False + + +_VALID_WEBP_MODES = {"RGBX": True, "RGBA": True, "RGB": True} + +_VALID_WEBP_LEGACY_MODES = {"RGB": True, "RGBA": True} + +_VP8_MODES_BY_IDENTIFIER = { + b"VP8 ": "RGB", + b"VP8X": "RGBA", + b"VP8L": "RGBA", # lossless +} + + +def _accept(prefix): + is_riff_file_format = prefix[:4] == 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 + + +class WebPImageFile(ImageFile.ImageFile): + + format = "WEBP" + format_description = "WebP image" + __loaded = 0 + __logical_frame = 0 + + def _open(self): + if not _webp.HAVE_WEBPANIM: + # Legacy mode + data, width, height, self.mode, icc_profile, exif = _webp.WebPDecode( + self.fp.read() + ) + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + self._size = width, height + self.fp = BytesIO(data) + self.tile = [("raw", (0, 0) + self.size, 0, self.mode)] + self.n_frames = 1 + self.is_animated = False + return + + # 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 + width, height, loop_count, bgcolor, frame_count, mode = self._decoder.get_info() + self._size = width, height + 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 + self.tile = [] + + # 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): + if "exif" not in self.info: + return None + return dict(self.getexif()) + + def seek(self, frame): + if not self._seek_check(frame): + return + + # Set logical frame to requested position + self.__logical_frame = frame + + def _reset(self, reset=True): + if reset: + self._decoder.reset() + self.__physical_frame = 0 + self.__loaded = -1 + self.__timestamp = 0 + + def _get_next(self): + # 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) + raise EOFError("failed to decode next frame in WebP file") + + # 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): + 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): + if _webp.HAVE_WEBPANIM: + 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 = [("raw", (0, 0) + self.size, 0, self.rawmode)] + + return super().load() + + def tell(self): + if not _webp.HAVE_WEBPANIM: + return super().tell() + + return self.__logical_frame + + +def _save_all(im, fp, filename): + 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 = (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, 0) + + duration = im.encoderinfo.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) + method = im.encoderinfo.get("method", 0) + icc_profile = im.encoderinfo.get("icc_profile", "") + 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(v >= 0 and v < 256 for v in background) + ): + raise OSError( + "Background color is not an RGBA tuple clamped to (0-255): %s" + % str(background) + ) + + # 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[0], + im.size[1], + 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 # of frames in this image + nfr = getattr(ims, "n_frames", 1) + + for idx in range(nfr): + ims.seek(idx) + ims.load() + + # Make sure image mode is supported + frame = ims + rawmode = ims.mode + if ims.mode not in _VALID_WEBP_MODES: + alpha = ( + "A" in ims.mode + or "a" in ims.mode + or (ims.mode == "P" and "A" in ims.im.getpalettemode()) + ) + rawmode = "RGBA" if alpha else "RGB" + frame = ims.convert(rawmode) + + if rawmode == "RGB": + # For faster conversion, use RGBX + rawmode = "RGBX" + + # Append the frame to the animation encoder + enc.add( + frame.tobytes("raw", rawmode), + timestamp, + frame.size[0], + frame.size[1], + rawmode, + lossless, + 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, timestamp, 0, 0, "", lossless, quality, 0) + + # Get the final output from the encoder + data = enc.assemble(icc_profile, exif, xmp) + if data is None: + raise OSError("cannot write file as WebP (encoder returned None)") + + fp.write(data) + + +def _save(im, fp, filename): + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + icc_profile = im.encoderinfo.get("icc_profile", "") + exif = im.encoderinfo.get("exif", "") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + xmp = im.encoderinfo.get("xmp", "") + method = im.encoderinfo.get("method", 0) + + if im.mode not in _VALID_WEBP_LEGACY_MODES: + alpha = ( + "A" in im.mode + or "a" in im.mode + or (im.mode == "P" and "A" in im.im.getpalettemode()) + ) + im = im.convert("RGBA" if alpha else "RGB") + + data = _webp.WebPEncode( + im.tobytes(), + im.size[0], + im.size[1], + lossless, + float(quality), + im.mode, + icc_profile, + method, + exif, + xmp, + ) + if data is None: + raise OSError("cannot write file as WebP (encoder returned None)") + + fp.write(data) + + +Image.register_open(WebPImageFile.format, WebPImageFile, _accept) +if SUPPORTED: + Image.register_save(WebPImageFile.format, _save) + if _webp.HAVE_WEBPANIM: + Image.register_save_all(WebPImageFile.format, _save_all) + Image.register_extension(WebPImageFile.format, ".webp") + Image.register_mime(WebPImageFile.format, "image/webp") diff --git a/venv/lib/python3.9/site-packages/PIL/WmfImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/WmfImagePlugin.py new file mode 100644 index 0000000..87847a1 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/WmfImagePlugin.py @@ -0,0 +1,178 @@ +# +# 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 . import Image, ImageFile +from ._binary import i16le as word +from ._binary import i32le as dword +from ._binary import si16le as short +from ._binary import si32le as _long + +_handler = None + + +def register_handler(handler): + """ + 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: + def open(self, im): + im.mode = "RGB" + self.bbox = im.info["wmf_bbox"] + + def load(self, im): + 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): + return ( + prefix[:6] == b"\xd7\xcd\xc6\x9a\x00\x00" or prefix[:4] == b"\x01\x00\x00\x00" + ) + + +## +# Image plugin for Windows metafiles. + + +class WmfStubImageFile(ImageFile.StubImageFile): + + format = "WMF" + format_description = "Windows Metafile" + + def _open(self): + self._inch = None + + # check placable header + s = self.fp.read(80) + + if s[:6] == b"\xd7\xcd\xc6\x9a\x00\x00": + + # placeable windows metafile + + # get units per inch + self._inch = word(s, 14) + + # 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"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + # sanity check (standard metafile header) + if s[22:26] != b"\x01\x00\t\x00": + raise SyntaxError("Unsupported WMF file format") + + elif dword(s) == 1 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 = int(2540.0 * (x1 - y0) / (frame[2] - frame[0]) + 0.5) + ydpi = int(2540.0 * (y1 - y0) / (frame[3] - frame[1]) + 0.5) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + if xdpi == ydpi: + self.info["dpi"] = xdpi + else: + self.info["dpi"] = xdpi, ydpi + + else: + raise SyntaxError("Unsupported file format") + + self.mode = "RGB" + self._size = size + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + def load(self, dpi=None): + if dpi is not None and self._inch is not None: + self.info["dpi"] = int(dpi + 0.5) + x0, y0, x1, y1 = self.info["wmf_bbox"] + self._size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + super().load() + + +def _save(im, fp, filename): + if _handler is None or not hasattr(_handler, "save"): + raise OSError("WMF save handler not installed") + _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/venv/lib/python3.9/site-packages/PIL/XVThumbImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/XVThumbImagePlugin.py new file mode 100644 index 0000000..4efedb7 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/XVThumbImagePlugin.py @@ -0,0 +1,78 @@ +# +# 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 . 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): + return prefix[:6] == _MAGIC + + +## +# Image plugin for XV thumbnail images. + + +class XVThumbImageFile(ImageFile.ImageFile): + + format = "XVThumb" + format_description = "XV thumbnail image" + + def _open(self): + + # check magic + if not _accept(self.fp.read(6)): + raise SyntaxError("not an XV thumbnail file") + + # Skip to beginning of next line + self.fp.readline() + + # skip info comments + while True: + s = self.fp.readline() + if not s: + raise SyntaxError("Unexpected EOF reading XV thumbnail file") + 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 = [("raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1))] + + +# -------------------------------------------------------------------- + +Image.register_open(XVThumbImageFile.format, XVThumbImageFile, _accept) diff --git a/venv/lib/python3.9/site-packages/PIL/XbmImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/XbmImagePlugin.py new file mode 100644 index 0000000..644cfb3 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/XbmImagePlugin.py @@ -0,0 +1,94 @@ +# +# 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. +# + +import re + +from . import Image, ImageFile + +# XBM header +xbm_head = re.compile( + br"\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")?" + b"[\\000-\\377]*_bits\\[\\]" +) + + +def _accept(prefix): + return prefix.lstrip()[:7] == b"#define" + + +## +# Image plugin for X11 bitmaps. + + +class XbmImageFile(ImageFile.ImageFile): + + format = "XBM" + format_description = "X11 Bitmap" + + def _open(self): + + m = xbm_head.match(self.fp.read(512)) + + if m: + + 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 = [("xbm", (0, 0) + self.size, m.end(), None)] + + +def _save(im, fp, filename): + + if im.mode != "1": + raise OSError(f"cannot write mode {im.mode} as XBM") + + 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, [("xbm", (0, 0) + im.size, 0, None)]) + + 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/venv/lib/python3.9/site-packages/PIL/XpmImagePlugin.py b/venv/lib/python3.9/site-packages/PIL/XpmImagePlugin.py new file mode 100644 index 0000000..ebd65ba --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/XpmImagePlugin.py @@ -0,0 +1,130 @@ +# +# 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. +# + + +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): + return prefix[:9] == b"/* XPM */" + + +## +# Image plugin for X11 pixel maps. + + +class XpmImageFile(ImageFile.ImageFile): + + format = "XPM" + format_description = "X11 Pixel Map" + + def _open(self): + + if not _accept(self.fp.read(9)): + raise SyntaxError("not an XPM file") + + # skip forward to next string + while True: + s = self.fp.readline() + if not s: + raise SyntaxError("broken XPM file") + m = xpm_head.match(s) + if m: + break + + self._size = int(m.group(1)), int(m.group(2)) + + pal = int(m.group(3)) + bpp = int(m.group(4)) + + if pal > 256 or bpp != 1: + raise ValueError("cannot read this XPM file") + + # + # load palette description + + palette = [b"\0\0\0"] * 256 + + for i in range(pal): + + s = self.fp.readline() + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] in b"\r\n": + s = s[:-1] + + c = s[1] + s = s[2:-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[0:1] == b"#": + # FIXME: handle colour names (see ImagePalette.py) + rgb = int(rgb[1:], 16) + palette[c] = ( + o8((rgb >> 16) & 255) + o8((rgb >> 8) & 255) + o8(rgb & 255) + ) + else: + # unknown colour + raise ValueError("cannot read this XPM file") + break + + else: + + # missing colour key + raise ValueError("cannot read this XPM file") + + self.mode = "P" + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + self.tile = [("raw", (0, 0) + self.size, self.fp.tell(), ("P", 0, 1))] + + def load_read(self, bytes): + + # + # load all image data in one chunk + + xsize, ysize = self.size + + s = [None] * ysize + + for i in range(ysize): + s[i] = self.fp.readline()[1 : xsize + 1].ljust(xsize) + + return b"".join(s) + + +# +# Registry + + +Image.register_open(XpmImageFile.format, XpmImageFile, _accept) + +Image.register_extension(XpmImageFile.format, ".xpm") + +Image.register_mime(XpmImageFile.format, "image/xpm") diff --git a/venv/lib/python3.9/site-packages/PIL/__init__.py b/venv/lib/python3.9/site-packages/PIL/__init__.py new file mode 100644 index 0000000..890ae44 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/__init__.py @@ -0,0 +1,139 @@ +"""Pillow (Fork of the Python Imaging Library) + +Pillow is the friendly PIL fork by Alex 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. + +;-) +""" + +import sys +import warnings + +from . import _version + +# VERSION was removed in Pillow 6.0.0. +__version__ = _version.__version__ + + +# PILLOW_VERSION is deprecated and will be removed in a future release. +# Use __version__ instead. +def _raise_version_warning(): + warnings.warn( + "PILLOW_VERSION is deprecated and will be removed in Pillow 9 (2022-01-02). " + "Use __version__ instead.", + DeprecationWarning, + stacklevel=3, + ) + + +if sys.version_info >= (3, 7): + + def __getattr__(name): + if name == "PILLOW_VERSION": + _raise_version_warning() + return __version__ + raise AttributeError(f"module '{__name__}' has no attribute '{name}'") + + +else: + + class _Deprecated_Version(str): + def __str__(self): + _raise_version_warning() + return super().__str__() + + def __getitem__(self, key): + _raise_version_warning() + return super().__getitem__(key) + + def __eq__(self, other): + _raise_version_warning() + return super().__eq__(other) + + def __ne__(self, other): + _raise_version_warning() + return super().__ne__(other) + + def __gt__(self, other): + _raise_version_warning() + return super().__gt__(other) + + def __lt__(self, other): + _raise_version_warning() + return super().__lt__(other) + + def __ge__(self, other): + _raise_version_warning() + return super().__gt__(other) + + def __le__(self, other): + _raise_version_warning() + return super().__lt__(other) + + PILLOW_VERSION = _Deprecated_Version(__version__) + +del _version + + +_plugins = [ + "BlpImagePlugin", + "BmpImagePlugin", + "BufrStubImagePlugin", + "CurImagePlugin", + "DcxImagePlugin", + "DdsImagePlugin", + "EpsImagePlugin", + "FitsStubImagePlugin", + "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", + "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. + """ + + pass diff --git a/venv/lib/python3.9/site-packages/PIL/__main__.py b/venv/lib/python3.9/site-packages/PIL/__main__.py new file mode 100644 index 0000000..a05323f --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/__main__.py @@ -0,0 +1,3 @@ +from .features import pilinfo + +pilinfo() diff --git a/venv/lib/python3.9/site-packages/PIL/_binary.py b/venv/lib/python3.9/site-packages/PIL/_binary.py new file mode 100644 index 0000000..5564f45 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/_binary.py @@ -0,0 +1,92 @@ +# +# 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 struct import pack, unpack_from + + +def i8(c): + return c if c.__class__ is int else c[0] + + +def o8(i): + return bytes((i & 255,)) + + +# Input, le = little endian, be = big endian +def i16le(c, o=0): + """ + 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("H", c, o)[0] + + +def i32be(c, o=0): + return unpack_from(">I", c, o)[0] + + +# Output, le = little endian, be = big endian +def o16le(i): + return pack("H", i) + + +def o32be(i): + return pack(">I", i) diff --git a/venv/lib/python3.9/site-packages/PIL/_imaging.cpython-39-x86_64-linux-gnu.so b/venv/lib/python3.9/site-packages/PIL/_imaging.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..56c2cabe57647a140248129748f51f87719e1daf GIT binary patch literal 665840 zcmeFa36xaT_5XXBw8WuGoLV$`#U_?G6{xYr=`yGnM6KY|;#7(;B~B%Rwm6kE#A;f! zBpO?sN)k^y&Dq(+ z4(fX6hrju#$sWf)9mh36KmB;dg`(3|ALlq*(Hr~r_}Lz_l7BkXQEV6gFU0I|g_u2#f7X%< z|HN2)b+zYFdmgn%KkI*NjJnhwg7-hA`L;#2L}!XAA@2#Xq^~y2j`9eq7Z~qr*SBz52daUk3Uz z(3gR}4D@B7F9UrU=*z(WIs^8KEcn*}a7CB>F1y|sJCPQCl=x=Ziz zH^YrlZ}WasfX|)~-&?!W1M<8D+_v=QzhcMUeclSl^OS(ReFV2Dz4;Fc$p6zp^&F6& zTR^)P1gytn1KJ%Ou#Q>+=Ii5t{5%t|es2lr|8E2K`H2DT{w%=ft$=!aDWIQ! z3s_%|!~WJ={R|E`uQdkv9}|%O1#mv;ZC#HX*gOASz`V=~I1fG?;GYXv7k34$i@gKt ze8&L3Rlxob3fPB72JBaz0qgyBi0^G)UJt0}kpcDd*MNLR1AIOX$lKenu6ygxkpcC2 zPr$fN4XFQQ0G}O@x0_*Jdh5^ffI5NhJ212#yp{#D`)xp-JREQysSQ{ce+{^PI4Gc> zX?R%K+j==Hpx!nI>;vxy%=DXjH@+ZUEdfmj~fE^?bT4pz17LUe!cU%0_yzd z0sXu(VBdQrpiZs|$U|E|{|^tC-xCA!KP{kcw-1P46~Lbl=x6_ce%=km-&>x?2J8cS zZPR=FsDS>j3pmd%38>pC0sGin93Jj{WF^;SO*1qZE)JOAQ4sIK|N6B{K>UdT^YZI}{q5y|d9McS ztCOH3Fti`MUJj_Yp9R#<4FP%k2YmeA+dR$-n3p#p9;W^Wue$>Lmj=|&aJZfy;)I;? zWGF~@-9e6>{uQjga@w+UaVW{IYY-@S$4I4O(;{QXu`fm#s68|l= z>-^b*LFDr-^b^~y{=)i?CBE%;mKWc#@$1OvGIPBVa=iO3*o)%#f%6Xfc#pzw;B|`~ zo>PH+7rh9|D}77&oJwsqxgNO-9p}GEKKdLa&5dv^FrZH zJ?#JJpL^a0UPt|Tko=wft^YjoiJAQY4*Hkv&sX+sXNSG4k8`<&rJEyCrJ(4eI}N zb6$pges23&AbuP9=YDK^$o*Ue^^EkmmJ1ypQpb7Te$?@>vV}>h{hK zj{9lU#JM)y`D}0U|B3w`%~8Y`Q{Hm-*nT#W&l@zZ)Xuge=hL_bQQi_ivV66*bDpDd zB}Uu+e`kL<8>yegU-j(gYv%eB>iiOGZ~^t_Y+8?zZ*4~ofc+F-Rcbf;PunipJG;^P za%p|pcO9pO)i;0(!}g*&Ar4{Ywe^p2Ki|>uH`zKN?EHx8&82!fiQc#w#*OW!{@AnK z!LZPfm#(w@zr_A<##27ax7v9Ae$PZ+*EKfq1v@;)-P8J%>n-1dd>*0k#&57bw49u) z;C*b@9bxl%7R}4Sl>Z|2b1mg_39a84P2fD5uPp6{PRRytp!je1w*Ha0twT% zQ^Rcsmy^$NREIIDLs}NjZ4~cCZTwSq7|y=LbK6=D%gwxwqWMbGeC{IOZ}`~ZR3ZN|K*hD@;kQOJ*m#mr}~f3dY?)0hg05)ls6Ch zjjva!4s);A0gboVxtDwj4z4ZMo{Poj2q_d+e44Mqx7Ohi z%JW;)fA3+-Z=v{`Xg_hOPKJ^HKd7IHT5B+z`uQQ%Np+EJcQ^9ciSicP&-x!uJ_R~I zR@1GCaJbyv)%cCu0Y(@KC@l?xqqj@!MqWnBb^H~1O@^8rJ6~1m^)@@vlqqxhx%W7-1cM`@kcqIbOXWb zVrS?E_QyTL8lOseSk3*s&w>}o$K&<*ciZkTiXRGvXT~+q_VZWvhttm`KHGxpsQ>5E zd=;12ehw#ppZ2#hop(0Vyq^H2iT)8f;g7b5IhTPS^3qIO`7nI*8bR}0uG)#>dOq7c z9|$?c!!5s^`m+b^^UiIypKnsTxZj|E;ZPg@4Dsiw4ojz5gYm>)skQO3lz|Sy{hJ1)N7zMtx<+G68tsh@bgi9T7%=LqsYhxf75ZO8kO z|4z^ijIYkOU=Z;g$fxj}_3t2`1l2>LY8&MH$~AnxuCw{v7V?6xaWuav+|c0l67};R zw0^7C*!aIwyZtF|B|2}uY=`YkrS+Af^~L+Z71V#{0c$XY{P8l(%-1h1=X(1K&6h*_ z6)Z#Z+5r8*`zep^rySc|XE3d=^e5K%FzV+iuJtd`g(^O0#Mk}2kNwLU!0E=kk~EL0 zgw6j?i0{3(^>JHm9*!bjrT)A7+61g7zHP0IcYbPpMo_!oP~AFPTc1;iKTbZy1Fg?Z zl+V|weu{KGa3J}gOZ!sxD{H{#_aDLhZV%tlFX9a{yj=4u-0y%i^;U1|#72Au(OV_>o5wF5e%zy54JF_w3gJ@jkCfn|C8rM10|5Vnt`!sP#GxTRGC)8}? z$;SB?yl?9KG#g)}H=d?^mg$1!c;b`EKXSW`Ka>17Q2j)xen6Vnujzb|IVnfA~GX%XvScdY%gVFTSSGyeA&C3uOZ3 z?F8ZldVq8?@f%z_E|2QuR^#G02hsT`Mfaz-QT$J6ABd>)?1!|zs&rp4jC@|Fyrpll z2B#9gmg>A%ww$kLKID9QHlJTZ9`TiQZ9lWkmOo~w;~W8b!g)zOY!k-geTn*?c+2wZ zV1L0^h4NO)S)aQtcJML@eY{&NA4@z38_4!>|L)TLJJ;KE@~_hQ`X<_!wuGPPlRnUb zzmd-}&Ko`F97X&d;^nVwKffn_3e{(Vt|zZ2el_jqIlAxLhxpOZZBw5MY`eSAd|`T# zN9Z}*9E#sW>mow;JNFYmfa(PYx~3f{EXI@qn^uk z4zvD=rPjES`kCc?o?$!k3Gv72ypw3R9p`;`Am@$tjVmesR?2hwVB7!S5WkCjB5zqA zuJbFQIUH{hAH2Ye=Y40Y&(sC5aNu=5%m==XpnAyB{k3hyaavvL6I0K7ucNwh&a>m? z>#H=aQXmhLI<$_iG?=*UlYHF_C1H5|Ljlv zMe<4AXIqTZ{Enl%B~G>l#d-Uf_VdE&HvV(+Ig74avh=4M`FSbc4q$)0gKgf~ zmiTGpQ>1yM>2=nb&!OP_Lh~}7;-A^uj>{Qn^V6Tkm8ZHb(zr%b{879&-(~0JNb&bUhXyXXkM)tWSKMOL7ndIkz2fB7#ZpP;SebXDq zd6Tb8kFot(Z|$7_^&cMUJD@KEeHrM>Kwk#>GSHWSz6|tbpf3Y`8R*MEUk3Uz(3gR} z4D@B7F9UrU=*vJ~2KqA4mw~Kwk#_ zf0Y6H8d=v5{2Cg5g^YjNH|R@chH@xJq2~APzoo**SP%OieZ7qj7Dsd+Yg_FKf#2X! zJ&$Cie_|Xnbm;zl_wQs&7}N8`?{>%k@cjW@{gzP!MQc5e`M<8P_vksm{A)DwxB=vj z{lggi*{|=vz6|_-I0Lpq-y3fK?kN{4cIMEF;hVn$;m-|$fEQNq?eKf}TCU^5|K;!h z3SVFy;Os8m|B{Y}x9Rx)UB~mk2gTpBjg7HitgX_&6UDsh(HCy#MbQSo32j~vJZQfF z98o-Xqx~LjjpBRZAB==oRB@--#>W)Dll(o!Io?-1L-F;Bdkr#Q#^igW+tigSEI@z_%~pGn0zzCrQg^EN)MIP09^zs=gZ z$}7(6rJ#8BclJ!!syO=;6@O*5^>0%=M`zZO;_TC|_{f#kr>uBlpgoUQ6lb5R;#^mq zil?8TGyJVR>xX?pigW%WinC9R;_TxpzB}(TinC8larUWG{4w5t6fgeXj>}h^ed3B2 zcwbUH@(1gaP@H{|iZ3Idl;Vjc)~7*nuD7(}?4MD*@TB$0D$YJFit~P(Q{1D!KrgR2 z`xF%CdTv#`MD<)$oPF99=Xx$Fo}+qhSDbyyigP_z6tDi-=BKJS`*bSK_3X^=S^w-4 zQk;DvigP{JD9%2v;_MSuoa;HJc%jpdt4?wD@f7EJ_7!(ScHf9A&OY^ub3G>%&(R;` zNh;3umQtMk8x)VPu;WTA&ORB%n`wPz70>?B`m`v{J~_p?e)5XvUa&p|#o4D-aju`D z;_TC=IQx_o=lW?^oPElQvrk2FuAi#n+5g&cbt=w2&TT#GpX(>2cxkY$pNQh@Q=>T7 zkE?ikmF-Vdah~6p;_P3ic=1ox$5Wj5D_?Q0!?@zv{&rmTinC8bao)$0ikHYIr8xUE zD9&}5Ry;ev_9vq_`(zd8I&4v#eR7JkPhN4Z!-C@M)2cZ86cy)rZ&Tc%eZHhP=d)dL zp0BdvRr(8KD~hvERdMcTr{dn0HqXxOJ?o$6C8Ri?mm`W7Ubb~uqd5Dxiu1UlikJUt zePW8UPo3htE{piDb9KG z6zBEmE6(dNt~mSDE6(dNp*XL{q~h$8Qk>UggW`#b&1YJ1_Q@#D>oKc1ug4a}*(aws zugARNydDdRvrntyJdZ`i3t!lAwJFX%CB+}1>$i5rBUS5DR-An*igW!}73cczRGfXB zJ9^eR*MCTHuK$SQ>{FvS*MC%Tj*ltM^fP@LCM zQgL2KDaF~RL2+J3X~lURWfW(htm3?mS`_E=T268H$t%w5sGvBnqgKV)r>Houqc+8P z9hDSkpLWH09hDX5byQKDeX5Fc-F7O@b?YqXS?BB%Qk?6yMsbdJ73aE*D$aEqQ=I!* zr#R=qQ@pg<)~&BN`@|LJ`ma} z;=GP>if6a6K6%C2r=U2mqgKVs+ghKZ;_TC=IL}wR;ym86;v8R5JV$>|O;vGTr=5!P z=Ml~?d)9N7{^5p@;v64Qoc(JQPwi~;;404fk1EdoF~#Gq^{G>w<2}XM-&Z_dYklI1 zbN}lVzm3kP3B@@-NyRxnr8xUHD9-swE6(v5#rgA~tm4%nc3drrb9_#5_RlMx-PQUO z6z6=lD$e6AD$euOrZ~r!6lec-#d*HUigSELaUO3~@%S)1u1>`{-np}9{j+~a@if&> zL~*Xe8pZj%<|GXn z=R`Th*(a}f?j?I4+NyYDGkxBtIQz6I{_sNU)2?`ee9DTmPet+HP=7iVFOZLOSI;_O zpOE5QKQ)Rw^cM)bigSE4fY&LWqQB44Q=EN##UG_{)hnLc%KrUO3B}nbsrVD*)1Y{9 zYwMF%oX?M$0N$c_d0Xp~Q=EPBia*8mqj-$|oq(d^&9tAl1@Lyoxj$vaAEM9AD~kV# z>ql{37tXJG)(`uH6n~a{Y7|cowE1xrXP>Cz%gLus@i_g3jh^D{;|K71#kmd>ia*zE z*JCn(Hz>||PAkqn8O2|sakVJU^PW?jub1)xycodS6zA*McEuC49?ObzyA{P(Q~#a2 zd)5QThZO&k;$6i#KC1Yu6z?g{@xJ1(Q+z^kj!!E7HpMq69ve>kfa2_vQM^Q-g}4TA!lg?9-`ji#t`=d$#?^K-Y#A)d{@9Yy& z`~w1@pdWv(ruQ=CRLUE2yDqf*}rWNP-jN)HVd`@wW&nv!x;){xN ze4FB2SM7>(U6mDQpNisKSDlJ;T{-sz%%kF5S2c=rUAc;Lf1-*HrSEmrDV`W<>(f)b z>$z3{uUDMwGod*9Bo*g*Nh{9r8O6Wmc~_kG)qDVNRh;`-RGfX<6#tgmZC9MvQCV^J zsVL6t$XVEP-Z?&`IIkmDagL8F-nDNl&hftDUHi7;9G_I2*F}Tkye`s;vrk5GUKcHj z^Sa0>&OUj?d0n(B&g-J6IQz6Iel%T=wJXl+qO3SSU#bM~PQ|(2oO^rDJNtwbzmDpy zM)A~scAdJ4vrkm<0rdT}I>oteJ;m9_S9~z})GN;Oo=}{9l8SFbJ`IZVyr&gspN!(i z(Dwsd6z6%*Db7B5#h;+-`Buew-iwNNJ%0<}&RQyL=CyIB~iQ?>&QT$1o-xkHY z>O}FS6rT^^#Q@%>IN$%aE6#Z+E6(j!6zB7Gr{bIk=l-5`!agCzd7rFNob%u+&d-gb z0o)7VzT*4P^+vtooQH(s+-_3wIdom!pg89ttvLH+6#p~VgW{ZroZ?;2IRkjB;=Epp zinC9f;{2SgUGXwqpO+P9pNirx?_syO@9Db7Bg z;+!8}arUWKob#MeoWIwU4B!olbAHl_^Y@xE0lYJauOXjK#mnU5Jk+y(*e9fTJNeWoo_);r$5ottqKdyuK6Q#$$;VTi zeSF0~AfI~0;vAn;yoUVKigSEMalXFIDbDeE#rGutqT(FirZ`{smKEptisC;ef9K(V z{40I{#k-2Le^haP-dm@*N9RpXarW^Q=jZ?RikJ4ZpZ6scXP>0v{CQl1;_Q=FoP9Ei z^Ka^FG|EIPb$wKA?USzl{3hD$eaj6`x7*p5h$uD}DpTClu%Sq~dcaKCL*% zXB5AU;&X~~d|q+>o<^(U@q=g{6=$C|#qXwe+ZE47X&x14pNiuAJ&;bttNU3W=h1+9 zRQx{bkE=Mh8&#aoJ9UcldB;0@pLY_9vrkfSKJPRr&gY%9;_Q=AoIh`B zQM^p&ubkq19?UELYszO)ac;Lw@yECx6zBb_tT_8r6n~0*oW(uoov#B!ia*Qqt~j3; zq5-^4aXt@vinEWeIPZt`it{>3D9%1f#aB}Q8x-etlvbR5GK%x}YFZTMb(B+_^O;wi z>!GMP$G0iob$_RL*ZrO1>{C&k@3Wl80_I(DzRz+MXaA_;HI!#hagO&D=liUL;vAn; zobQ9uigSEMalQ}ADbDfv0N$!N*KJX8_Gwf670N@q;$7EoinC8e@z=k>#t*AKrv?oli0`{Wg` zl25DRyiSXXvrn7i{C&1|#S5e8dQWlosVL6hXX{j)*SqsX&-!7Xkm6s{xLn0KKB~Aw z-#_sb=XhW7uJ6k!&UKzpoPCmtcYR+@ajx^U;_Q=AoWGaVqBz%iPI30hE8g{eImNlo zi;A;Po8nthKHC+K(EWQ^arUVwzAgE5D(>-ffZqqygW}thPmSU!@^KaC{zMhOk-tZ$ zc#eEL#o5PKd?)HpLUI0{TQY#B19(Pp{{CT$;(XneQ=Hq)E6(3PY*n21tD@rU)229o z|FB(g_9-jQ-*c-3aHr67-Z?&`IDal#qd2cqS8?`n>;_MSud>HxEDPB6#`gn@7kFPj?|EgYb=NRjg zP@H{|itj`HX;9oFpS0ralTrLm`uw^@@ih756lb5j;s;QFS`{ynPf>C9X;YlP_tmbr z_dM$qFOiR@IQ#gD=V-p_ z6?ex_{V2{pNyR;`AH`GTlUAI4GKwEhJ}rtD$tR~c`{Whp@2|Eh9vN%LRaBh6FWMHs z+ZE@1qpUdlR1`mv>qqef^~ZU#XZ^5GNb#R?{V47nYscj(&OTAaPbZ%`#S6zM=j0z!ynMHfcNM>k;-iYk7TI`D z@vA7_S3FJqNhsb(@kzzYKehg8#hWQUqjLif>Et zdBxL78(&m>cZzRQym-8gFDt$e#a9$BUu@%@S9|9FFp3W;UOvvoyNdf1A64At{40Jc z#rukveqsF+il0yMNyXC?pH}=biq9w>qxhWSH&A?D@$y{TpQ7T;6yK(Jmg38b-%arq z#a)VbNahKwYihn`zZHkv>+y0al|Bm7-il-^wd97#ux4p}*-;m-ligy(sO7T&} zvp3uRc#20U-dEhA_=MtzQhZYJRGRXy_|X)fQ9MTRImIVYd|vVLP1e7t_~{hirnooW z#ye|z=JPy?4=G+a&&IooPowy#;?5;D-c$SJPf>hD@xl}v@BF=I{-3A#km9*BZM>`a zUnoARc&gsUdy226cwh12)iyq@_=j{ql~FwPf{o89{uagO6)&%_@tul)Nd1Yt-ZKw5 zs-L*xak>w0d823iKgp+{c!_+HZ}yCLXg=!R>dF60K5@mJOKtx{?LFf;U+s!-`766G zRTYoZyhPttJ~Xbp;tt&hwkpogDfqca$oy$n$5~GIvq^eh!rY_#k+kBk@%^vj#b43< zD*hJ5=N0!B*!ZI2?^1l5;?+BBd|B}_#a9$BW^KIlPS3pY{d-7pz8`lL|C0PY#WxX8 zD89uVb{^A;4bBh0h zcv10R5icwL2yy2hJ^TMOaaZvdh+It(W(Ej_X#64=Em@ z_2nx50L4cYFWheZJ;fiRcwg}p#U~VhhT@Zo$0$Cn_$w5jQJnpAioZtjdBwAI{Zmx@ zO^R<*yf}{bE5)~a+wKoexo4gi(Q^P-@u%tjG^%*%e9EWd4b9fyS3E)eNhp3X#U~Ya zDL$?EnG~N@4wCF zC#1NWv;B7!U(ESeJWcseDE=%x|4%BOTV?$l6i?o3`%_eWCHb@|o_^W-lokIgf9{}o zoZ_8zJ@fDe#fKCxP(NM8-=p}b;&C3A;vZ3bR&jT=?Z5wF&;IcE>lNqxIv@3nKkPMa84)L<$@w4o|D^XG0 zIotB8;>D?!cPgGsTJC(>vp?~3EDtH3CLU4TJT-dWz2~p1Z>O`(O6#50A(BXHVWrJ|V^9GpV17FXnzK zUYud$J;e(Y?<=05_=MtjQhZWzm*Ufkze({K#S2&2{`AYn& zCy!rk{gaxfEl+Ds@hyrMZ?y3_#bY;Fp4Xh>%Zl^o+7-nU)ULOoXaD(g7GLo+#U~X1 zH_waW&J8qP#XsbEQM@pV#;f=j6rWeTe4ULiD$euXrg-cc8(*`r=Xh_R>&%$qMeRuSJ%#JAqpJzh_8`umy?y(;cr|3_o=#S*}BAy>P;f&Qh*6lBOgNXmH@UIi` zlDCL>x+FCPQS)%OzvT78NAi{c-YWdR7yW4$oG$fDyPbj`CgK}}zvP{wpRR~+|6O^MXeNF9^O^_&-Fu3Bhj{@kzmt56_@XJJePVmbG&kO#wXtyAEyWp*Y4-)Mb1;0SVw+T*0!PklScERV1ewGEl zUc^@f-$n4M;5CAG3jV&}&a&?Mr;k)k>mk9zB0eJc{i2^Wf%X+o8UhZ@fG^K2}AD_@ge$r1krbbd-Qw{Q8WCKCa+FfFZgsp*gMWMc0Wh{ zDg4i`kl?lAfQaCCigs%R-$QU$@DJG>enthai1?V`BLuG#JS_U-32vXb+D3fA2a5Q( z;Pfx8m;>qsze}{65ZpeYwf;%L?GqczQ-X&qGQTzmzLnr(Vwi~&kEim zc)j2`!M7Ie<^?Z{_=4cW1#cC6d%=r>uMoUV@NGo9CBe59yj}3m1uqLeTKHE4-%i9= z1>auqPQix=?)0YkM+DzV@EXB)7Tgtl7r~=~*9aaHd{@Ei1RpB6C-`oH z`+}b=@)j3-cM)GN_>Tln2)>8lNx|_2-h!tEA0l{0aQ>pi@J8WN5`1qF-!6Eq;AO!-6h0Nf^MY3e ze@FOq3O-zL=h^Q1|F7U7!G9|JBZB`}#McPEkKnH0wk7*!RPX`9KPLFYg4YQypFewo zmqffT_%y-ef)5nDUhsWI{}Y0b5IiaPeuAe2-(T4->po@ZXF6IL~$0|KTD&B=|o>d_?fkBEClOBLsH^zfAZ<1*fmVn4@BXA1dPO z1n(67p5WgK?h8&|9X9XA1wT^6*9(4)Xg4AFS%N18_k>SM@G*in2)=`;!?fUYgnvfx z#{|y`zNheM5qzv@Hz)Y9U{J6@Bw06 zWxg2x4)B-*VP{6xVMf`1@*Qt*QCPYM3K;0=PGBz)3>pDcJr z@VMYv!BfJ&Mev`B_?+OA1Q$&13@UsN35xiFTxPq@2@lnCg7Ca{S zIfB;-ey-r2;O7bM3!V@>F8KL^*9(4u;0eK}3Z4}FLcvplN5nqXAo!;uKWV{#CVVo2 z(;vk#?`8$RNW`}YzFzp}1pm2+&kMe#=x0Ijgz#w|z+2;LyLEApHc z{21Y%5xgjPR`A^fZxOsfw3`#0zdDR>=LO$Y^rs;BwZf-W@L7Tv1;0-4Ho+%~ewGBk zUc|QxeuLm;!EY42BKS>$R|UULwA(3oTEsgmy6gXD!9#-27Ca*OT;X3Mc%z7S1)n2$ zRPeci#{~b4@UIj67b4yh{2LMP3%;%3al!v7eCh??QPe|1@SBBCQt%Cerv(34_%{e% z6+A8YErMqRKUnx@1<#217QveY&j~(H@Vww-gnvQsW)a^i_^pB$1^-I$Ho=F8e3k@X zE!u4td@sSvg7+7^BKYZoR|UUK^ruts?L@ruLU;Y&F5*LizbE1&f@ej1jo_aN?h1Z~ z;8DS2!apYXW)WW}_$4CV6I^~y?F+s@_{0VOrQr2~pC9o)P?R!Lx!d7wxtP-Xh|2g5M)}UhwCHPeJg7BED7ddj&5F{-E$_6MU)Q zCBb(R`DqutEd0xYXM|5h@cTr3Rq&A_zEkj51b1HSuK#NV4+%a@@QC0c(f=C3zY+a$ z1%E*BsNfF@9uxc&(QcjK4~ckB@I`|Af;S1DxZpn$yk78mf+qz3weU|0{+WnR3H}=q z-yrzIf~N(4TKHrHe?-J*1>aZXzeVuSpR(YOiTH}(zZ1MF_%p(%Q}D+{yz^3b{XZdiNbrkZ{e#07s!#McXcqwr4%{znm?6nv@R zDZyt6p9aB)ivFYpZxucn!M_kbS;0RM@hyV?N${ND%LLC0{*2%S!Cw;XwhI1d5nmMi zS;5-`e@^g{;Li)*F8I!(-Ll|C5nmDfw<5kO_;L~7DfkM(ot547|AOEl!Cw?SBKS*! z*9g8+a98kEf=2~!6FesPkHxs^1b_{0VOiQx5u?<49nA^6Wld{XdN zM7t@$r;GRo!55WFmSNbri_+lg^i1s@@Jr{I4R<8@Yb*Z%>+KP32;B|uUD!3>3HiG+tuMzFW1%E`u*9*Rn;0eLs6+9{U zNrI;Y|GQ|nLGafFPYeEr;2FV>75-Vl-xTpJf)5t)Ill-F)cSJNI!m4<8S|hWGT~cc_ziL`QiuyoQfP zjXmio89fR$_MoF^^a#`gP#26IhI%0CoY6y34?>+adI;(*P^XO^jCxDdDWm(N4xvsM zz3G>rw?Z8^dIRdgs6C_Cquv^I%;Fs@0~o#n zbp&{3F;xJi$*U-y#wlk(Th;;h&pHVLex8<&KkV{_0Fi%M$bdN3+j~7 zvr*TeP8dB4HB1^kmd~pmvO&hQShRMlVKvFzSNQi%=heI%o7k)Q6(Z8odDZ zPf(|go`?D{)G4E9qpm}pFnSj1!%@eLo{oAnYR~9tsEI+a8jUIt|D(ZsK!%$y{ zI%o7y)IUR=HF^l@i%_SH9*p|us8dGwM~x?-j)c*hvY;S?Gwqt~Op1a-{l zb*L{z?Haun^<}6dMz2AAIcmq~)u^vPUF|gUk2;0AZ1ghJSE4Q%y#)1i)J3BgqrM7t z!RSS(XQ0j*y%6epueQKwOtjUJ8qX4EC4N1>jLx@hzW z)QzYMMh`R+NR7`+Jfov3q0FGPJ8>a5WVQ2z>b+UR+x??#<6dN%47)Cr?!p}q%o-0113 z7ozrzo`(8f)G?zkKz$!-*XSvz??)XmdNS$VM4qqt2l&8$BBJL#Rte zk3zi&b~a4i~4cY5u?|jegd^)^lH?_0FF{>2dNJxJQ5TF}g!(DeIinY%{v+zF(F;&7MV&T!9_pu2r;MJBx)pW8 z=vk=$ggS2YbkxgGdqz(~{S4}u(HEfpGiul9DX5=C9Wi<`>gP~9Mo&cjJnHI3GykZI zsLMu=M!g($$>>q2SD-E$Jp%O$s0&69L;WJ^oY6y3zl1t#^bpi5QKyX_jCvL7l+pcB zx1mlLy=gw^mr=)!-hg^FYR~BPs9!-HGkP8Bzo2%FUW@v#s3S(NLH#$>j?t@8zlyrL z!OTDE66&(i%TT|Dx@7bc)N4=|jb4oU@2Cq#FGBq~>YULFQNMvYYxDxtZ=y~cJrDI; zs8dGIM%|7&Ve~B2Z=;SIJstI0)Sl7PP``sZX7mN9-$m^jJq7hYP)CfOjQTy)j?oiQ zzmK~5FEjtB%c#pnk4F6g>XOl;P_IK>GrsD(I%f1b)Sshvjb4lT3)B&#*P#9q zwPW;Z)c-_Xt(y5qT}53sdKv0}p)MJ{1oZ~gMWYv^-iW$j^di*%Mx8TyA?p92&KkV{ z^;f9VM$be2HR_bnvr%`VP8dB4^*5;FMo&k*3AJbRG}Qk^9W(j@)Ze0Zjh=$~JJb=Q zC!_uzwPW-|)SFRP|7qqQwbKuD+33-z`=KrwJqk5`6y8xZdIW0xBLp1Ubo8Xqxsq>S#58XvWFB#hqF40jXI3F`lXqF)cEMJqipmt)Z3#j8NCGc5Y$DZ z7o*+*b;0OGsCPu2GkPIv{39+MS)&)A#z*WOX`|<%-UW5a=-H@iP$!I@g&H5Zb;OOH zjvBu@)!`XE4K;ohsUv3e1*q{+XoqX`6x8@pV@Jg3$*A#<2zEF|Pei>Z>gpF}{!zQA z%SMkzjbDlAC>cEpHGU-9Q8ao4>b+4Hj2?!%7In_(p{R$W&Kf-gH9lJJNEgy3^(fRuqZgybugG*1j9!HL5Y#!N7ox^L zO3;xtdI4&D^xu&-dLHV-P^XNZjT#@JcO;CSh5B&RaigcB9*x>FdKzkcB;FA-`U2EP zqIQj*g8C@b5u+!gJ{q-S^hDJ7)who7XJ-CUd#KAsk48NPb;;;asK=r%8a)E_IMfBB zhoK&iI%o7y)c6RsBWv^!)W@Mt8$B5H@u*Wq_ebrcP8hwZ2{b;E?}!_{0rf=Gp3&=3 zpMW}M^g7g&P`gI2MSUXbh|z0M<0In^$LQ6lPexr`Z{{C$9Cg{~WvG9Ox@7bc)RR#c zjb4lzzbepCFnSSc{G$jRIinY%#;>$=WQ|^c`gGK3qvxSM19i&i*{JJLCybtj`b^Yu zqo<>ug4#2B8tSu9$Be!J_1UOhqo<%g2X(~g$*9jo?HD}~^?9hP9cKPfCs3D-9*z2Z z)Fq=wp}qih(dZGV@ey`M!RTSAFGQU)dMN6jq0SmT1ocIz(?$$hUyM3#^aj+^PG4qc) zg}Q9?GSpY1E*ZT9HGZ_#Q8aon>Z?!}j9!F#2I`#A3sKKRoi%y^>Z?(wjh=`48q_JH zXQOUFoiKV9>T6NQjh>DgKicl_jGl)2I@B?vFF<`gYS-u~sPUt&j)>8dQR7GK9gfix zQQw5R`l*?J)M?aZqer8@8Fk6%QK)C5E*d=obtCG6(Zf*BL7g*tDC)VWvqld={R`A- zqX(nD1$D~k{-`sk6Gm^k1#}bYxX~L>&qM7Qy&iQl>X^~%P~VE$HF_=T`KTjCuR(nq zYRBl+sBcGI{lv^a>MZKA(aTWZfx2Y$64VP&7mZ$w`j@B+MlV8rC+eKh3sK*NI&1U- z)W1TVHhLcFyHTf%o{hQ%b;9UbsP91?H+nkig{VEy_<4@sJm}DC_i_BW#TorKm&^w{ z7lrr4M=f4v$YC^(Y+Y%-qLs zJPO|ii>8lfYy<62pSX`xISM{LCyF(kGIQg(a< zI)tO~<+LgjJ0X-tX8FF1)D!#&2pvq+^_6 zj*stO0}tlt{nJJkM}BdN-}GO<>1*&k7<-9BXj->wU@az~vKsDUVdjTHudaYcrs+@Js3nCxJ_5t76hG3-ES-V{z{qEI}@u>|V ztf-D(!^Ki~PiJIN)t5Q`^6ul0=svzY(;Pq096$AcI{xVHT@MxHaTW}s0z|%FD2Us^)%j0V! ze$(Gg8%<*)%>!#!j@`{!Id&-gzbpJ-<1~%k9a?w&ruMU-X1mry_tf{R$F`wmFj`l6 z9qwHrO;DrPMf~PNYAZWffO*4l(`X`KX2t{Fk&(r-UV!C@;~8$p^XYNuc?y`;O@iUL zljfU#eo&cd+`@D4ul(_EzP{FVc66NZ+>c?~f$<#=AJJ5nz|%7rUwFM%T}>B{{fbRdKd>fI>@Z*Ku_ zZ;5YzJs%#gK|`BuL*F-DdkDN88XsOdb}M*)e7}|B=feYO?#h_(iPfen>mXz>hHM=e zawNXJO?c_FZO1GxhsN})jF}J5EjMo-b8{!QG(LRdOXHiyco?-EM1}vSsPPyDqnx(= z{}kn8)DVc;Auwvp;opo8pZw~W!#6H1SwH?A1yAKp1WGk&`*XO^ME7h{L*B6iPu0T&Y% zJiL*;(u`zB=pc?{Ul_^A;%Dvf&eisvkH^_}!uFl##QGa^>d4}0-GlrRBO5>WaPh-9 zO?{8Aja80?-5b}!aI+T1!9+$HH%)>C1A_=JjrW_gX2uTbO=H4yKLU_$=nrcNAK{tO zh6QzbBiKU1-g}?+jF-Z51{y0c_or@C>n|@4@bB@z{>DEF(-yuRA8^{VHn^27Vb7h^ zJT)?@>C?*AAA!aEL&utqcJ_z!`A{&2cl_|N)yidM8wqW0n!SZn`3@cdPiPtsV}TvY zwgjuq?QRa2a`P+~PX3Lnw%q&%zpxXzhL&4#!d0?oFU!kWeD6gWzzoq zSex7>ADXncb?rwUmJ%Ni@f}x~_-848wvBIrcV4yc%%^vf=ADk~ptbCnQ(=S$!BAjh z`_7&t?|?Ae(qi3{E`-|=S-KBcb{2#2x2jPYn*5iJ7(!jkL&l{h?O(3kx89PIs_rW}Otsp*cm}SJ* zH)G&}WX!1(n!dHU-WNIn%cJr0s5u>C)<&B~!gKHu!Gz|sA(hSh!@1#o7=Gn%aK(zL zzX7tDK4Nls?)~_i>-rrZo{OKLrLXHhHar(U>q}oZ0G0@B|IVcO2fXTS;iPYHARIq7 zO5cFt_nF^eIDQnDz5&BC@H=P)+N#X`2aL*`bYYBt8U$}lYWio>xX8vw!gKJm6pXn8 zb|u8{1ACkqKQteQ=8c8l^d7jN#pO_Xu!N2f?`(Wz=Aj*@1GmS~ z0bkMqKeGo6?mpm4^f?K!?ePv!l`s$Cx#y!t*ZCjnBWmjdx&+r>%kW966O4aGeID$lwPcGe-H%S4EnS3pIB3v+L`| zL}O?F83#9Z4w$(!giCIP=fprKi^R3okvS79x)_!>{}i1D=5VLD>(4l7M%P zn}><1+>7tr*)_iK)2G(<4?k@pE;`yoTniB$SHP^GKV0r#h!e!)$LsfzaBI-uIbQg# zRUP-i-X!m5aIO3s_a<1FaQXLn91aMrg53x@@4!!&e#Y>p55U9Ue3ixzGzW&~;&Zz( z&68?Fjo<)zA zPip!E5H@z=Pmf{7~Du2H$ji^uZM>L#IQoU^3%8pdUhDRWA_I*V|sX{ z8N(}0sK`TWp_5RaP5-R)hr4m8oHmF>}%izi~P)2NSVgA-)ZExr@RF4l2XVTDWSrX zgqOYygN2Kwa4VGKX8-2RnD+2Vt1<&d7UzC-<8}taCA6U{VUhvA%=jCNmuJTH2fT*y zCW}{O#;HVju)EelGaJI&kFO0?Zh<0)ePTm60xCRb4|oUG1vIuf3z>%P1E(3L=Khm- za)-l}6>KbTn<0%{0|(!@-7?ehqima{%nn$VkR+_kmGC^dV@@9-wW@{>%%kPe0chp)5e^7?8uMAh2ms9s`2xB z$k9$^*sZ$8VeYZKu9XfMh2B>Nnel|@;OCAwCbzQp8+JLI1$({Ud=_l5Nathbr=GGS z-qcSWSA$PD{KH=g-@X^DbJ%R7{@ky^bL!0@5RQ9|-AZ7VhCsDKZ_L`e!iDKx{nmQ)+`{G!*!(B7xPdG214MtOYl;2dEIAGw)@Y0bZp$u< z`G#;kl<0=={#7WsZEUrT37`D0rmwwB9dr=xJ681b4_|Tp78BsQ9p=4pImnKgk4|bH zzU-oXoC%EsYjO9fpVU;gr`<8%Saq zeAm~)31VCn#s`Dz#4+Od?t33r$yd0(cf|qC2kDz7{v6nD4&R1f%<-ECngMtjxZ?;I z!Hk_n?`Jldo_{v)qHJaBcj2n7@j%$mTVW+mYWlje@0)l}Gkn^GR8Jj`nI$|2S~8b? zl{&aUw>j@hXt86d*(;zggRY%w_JN0gV%PcLx8QW2G#0Q=;2_$dh?-V*918=0>l0j8 z^AEiSqAOR}YiB5$8BaHlvzIx?!3@DgPIxY!BcWK19r=Z+7yGpCrk{6=2Al5l1?Cfq zw*sk*;lx62+D@8(WDX~?aueLG*^b*hy=eP?QFzB9oJuMi$Aq^(=z4fO2a5<=n$Y+X z%>5VPIqfhsnZ0{YXukf-n$PZovChB1jP;E}?O6AK)OB1Bo1%{oexR$S!??`+rh&CL zo!>FvWC`*>{p^HOPIwO9)%tkR*z{gyH~11A?z3}B29As2^}xjDft9gMJLXKcO-a6Z z{g&82)6G@T&3}gH;Qo%?gryXLW9g!&|I9m~yWiJ*cGnM+cXr2jJTL!a-j08t^VU7# zW16<4B=(ZAN5EEQ>>-=6MObJvVF`a-dGYU?ap`xQ49|My^&Q^&OqxIFjWp!7>1({S z!NJp?L0tZ9E144}^Jch*TbY)#T1xZ$EZEIM5x4cs^^c zXrkTM-{$@fuC*(BLz%)|%vl}N;5Xg%)O{Pg~0oYcKI|bF7@N@aHcmfW9AEwqdlIr&Tz{@jW8C~1wW-RTuiI(Q;Dst& z96`a~jK701rr>xuWq394iywhs;vx72?y`=JY#1NjAGW>yUxxqJU<%;p#^z&pHy8E^ z_;q}39J&z!7Z1AwKV#67%5iY+#g&(8dZ9A$Z_uZA8h!%Rd`*IKcJqrkN_a2@>vPbf z=b0K`PuGQ`Vdl)Sl?WW^+fclvg42vA9vi$r3g-;(Wg93{r`9HLLg9iHx`CHw&<0-N zdic|Cdb@Hm>_u4m@OTkMetm5Ma}%#LV2gMY^dNG`&CF{tFY*6*#;*g7@ z|7vnE8b*Byj@s5wgBhFM|KOc_&Nca1dxTx{Bi7LI6$g%nlWzkhBMrS3`B*jb|9Sl! z2-j4YpdZ%Hsn`q5(f=#;^VMJMn6Z8a!|$nn4#Uh~&U)0(#pjrOEvDVZ~#AjdLYJSEjHW;h05}ar!;zEL-u!h3>m*D?@nH}T?oIMVE=GG0L?C`}o ztP@xkuryq(As?13)H>`R2fl5`j9+&Z3*-!J8Ylk&-@pEDdVA)^2;VKJ=TYP{?)z9K69YW zN}ZW(*zqSceN;KD9fv*R610IG7pM6`yVXzlKg^v8cvaQa_Y+7k2zY`S_T!* zB_asQ;6T3LfA4ed5TNyapZ596^N@Sa9@k!L?X}ikd+mMPc@s}pux?hQ*5Q!|khc!ab=~>#npyGXDgL(A@&kdv5_*wC%dt>LA}6YT-1ldE>e= z>lfu5sGL~tD2>n#8|S`X#L9=%NS6N~VBGI6|4=<*>F)ARa#rO1kI26@EQ|uu9=E`d z*2urJlVj{I|9))f`<`##4fLl>otH)J?(#2m2J1Oib1A&MKgd$Jt~P#=Se~V*ab5)6 z4w1YQu%m7$sZf78JuSM$z)S(Ho6Yf@SU# zc&s-&%+Tus*J9{=-``0iW38%o@-H*oNbNTmBR^jnk#n}Hnnv2@>nZp1vyzxMUX9Rs zv=*!{YU2~SMzT131>>@_Ps0oufg{VlZ2VQN+bMoG!}<_*KbK{Ga#&YuSd(NfI1#(r`N7*~fT6KB7JBDvX2gd)N^RrUS?*mvkCd@D?(bFFtly=wPPJJ@ z-T<3*Ln`Y>Hmlg{XS2qqvi7rC1H27lzW9)fQ(0Lyt8du-z6DeR>sw47OpXRIgxPgcBubvd){2->-;F|D1qF&?1Xtuc&L2zXOJ zv%)m4aTfm4psjoCAft7(d<{kNbSC*TXn$yW``4QGoyhlLCHioCs!6xf0A^~Z^kZq8 zi7-j}>$M-%ucPsBxFgLQ^z8tkm-83tVO*ca0c7k+t*|TLn=CKe?=@l8_{a~dQsR^H zy=z!1h4F<}gysKy#}v2{Gl9K-78r$M0&yI>hL4jM3+J`3%%kM=znYSD`R=RY;`SB8 z!|mSjWec1W+grBo;!IQ2Tgx`~Q+qf!D`F|!b3|UtHeP;XU-DbF^>l7l>=rqNE!%RO zn;)_-MJ?NMotqV9Mb3bhZM~eE74pVQN$9y<7){ydjblRYB6oA>hz-^5;?NSW+MQFK zy{vI)gR`zJ93TEw>86(X*$vJcyRfsEUsX2$s`U-dc&|G9-3I6C5Aw*E*WkRxLaAp? zadp}2jk}B-yAb~q+hAudZAoNr2s;Dcsf`!EA}>rSuA%{}I(J9!H64IP&8sc@u<@dB zY)rn2_1$-abN)*>ITlS?NjaQWxZDsh{bj*Wn5T=7nofV*7yVE!FlOIkTHx2D%gvQ< zYUERc^?2?r``W1;83YgXcM5<|~v-zV{adBmljmAKP9_R?d_ zJZh)QoGT9*&wrwcR9qK(^JD#!FBt zv%Cv1VkGCRzQ;fb!<^dldy7@E_>&!e_*0t(?9nIrbE53#Xq(wby@9;g#Ju)T^1@@g zyaU@op-u@(MH#TQ#ID59j;f(w$FE~{G zMR}D1!JM#Mq(O z$lrH4n6tzOi9V}Aac*#=%8p45K(U%{b9=|_gaD8U5s4z~b~wgDR^4yJL!l;Op4v0pnf zJp!guJ6=qjx+0Jp&xx9i-n&|Bd+fp>S_OzjYDzz%(5%i4=$-q(DF%Os9&GVk|Au4dLy}70mCv^8 z7A3Y!%E#xn*5qGSsDO;vjd`1<$(=$yoi_`|h8$K43d%M&_Vd2*MfY&@2Fhim+z1Kw zm5MMTQq>d|O|^9=2i0EmtLYP(RI60A#S*`TqRph}S`*>nv{qA*sF+smPej)`t>4oB zu*(V>W;k)PZ%mfpMf&A`ySwZ42Y3~YD3A3zmXD6a0Ydi}H zq^8|VkFf2YO}j?A1~_O2@GM*+ImH;(-XCE5#Cufr<>%Pp#opUWo3AwO*E-QBd30uy zF-sYLw1uraah@UhcS@G6Vd67tZ2y0TC>qy$FRFhNjg=mFF_&zxG8|o*ILEY~hP+3} z6!Ivrp9&mnyJX&KL52LgAU}3;fh<@ZTdhU+pLwVnRtd-b&NQ;JN;bvvP}iwRo|9klrs0O@zvWSJ zDdM+r`)Bf-wRdv!H1L4m{PiGw^Krm8D`>)*E;tO|XwfgenU}#gj~&pBZ}vr-c0L}^ zANnS041LE@(C9y;u+Oh^8fGNv`nu1?TFOY?iLPDAG>Dx>zfVX{oB(SwAJcjGARiXU za62k0@jZ(8_J!e#JiUuA9#I3iyiq?DTeA{0QT4~F>WRe6*HCglJQ*YQBE?LMn01I6 zYmyn}^=CPX5E)s6yw5jLhpdkBy+!neaKS7jerPON!%zn|9bX$8(#i>dnwDPKvI?ta z8mxqC-Suf3$40&zKc*}`e=oTiI%Ii&`KwIL`LY}_T3#?49RzZ_Se}VzDd3M=LhJ)x z#ZfEx4Go)6;KX%YTRA#59vW5$OU>n}*6pZuwUvV!40WBBUyIHT#VYcIyNFI?I@4dI zm|?GCUg3%vhQIRmO-AO-mps$yH>{OMPZWRk$PUG>m0G=RKcN?^*W0XRgyiLHZAIOU z+Ad=y;!NKN(lLWaqI?TSYGgHTqNaUi&Zzhe{RmMxCKNj}hk>|k1S5@?hrkb?P=gWD7uv-*$bT`Mfl7E!oIZCX$IrV_a4^>ZXI6t}_h2*bI&+r3#gW zF-pZv(fQG}9A&|FI4j?2oddDN!ZHw|YbTCJJBtoC zHbj?B{0VybM$Yh9og7M2%Hm(^uQXgd-B8>L$;!Pmh2(<K;> z&&o^m>iStmuP(7nV(Bk_{}Js6GW~snfJf}O8-I*EccOc#|8zO}7O2Ru1x~;MNgPZu z>Fa$e&A6ZU?a;@NT-)pGjP|Da?ZI~6$ffzVVbErPfbzKuN0|0XDWv&&wrQ{PPZrN+ zerVNia{Yk%I@(x^cuHy%F@$sitj4KfkJYk1YP|p4E!jHer}m#r=)C^U8?*fs?h1 zfqVwCamF(%Lv00AA%zger%`9Pm=mx1bW*uGMu3|ucO0DN#0~*sKT_3^r{((T|4$V%LuTDMK){C7O+f z`~-LcVkq|A#57uRL?#G&wTsaG-^DZn#}1;Ufx$%#~4<1BKpY(Ey*;u*s|@XY1A2Rw6%Ss^=-HWe{E1Fx7+#G}EQ;TPf|4-6{C z@$gt?+taT&%~S*>JC2FO9!hZvPyMqJ?|jP%%3c;wCwe0FnJ|Pl{)}`8`}lE&urFde zNH~-~WrlEw=_dD9n|WJ*n^|NtbIC+_SovqpyCgTW?}9%RLn2R?P+(osnmZG`)Ba}X z%h^mWh*}hmorh)Rv|g%r+}u(&r|_(_O>jb4Wq~tY>s4iZtc1~p$e-!&@mL$XsCYsk z9{8=JKh5KM{f0Xt#m#!)pO&7Y0KqK=KW;zBo|nA~piLJ%M?UQ5Y~I304V#Z2EG zB&(lHd2unRKE;DTnOeyW0E7Hj=8KB*F^+-^QrJ4ZACA3H+zbpzjS8ej9Vn=W);o&O z{Wo%R=cR$YF1hp#l=S724!}Fp|HNM-0sEPUp5Qxrlz@$wN1UW+(waIddo>)hm`?Fr zhIEQmn^pfFLXFOklo+GkUEZamez|Lg!+BEtQ|5|YtR6P{uiUWYU7$@Y`PdUMsx9L? zzN!4>FjHppZnn(Ll(G5@6lS!CJ-`{Zl7u3*G{1UQ79fR+5=MW{i^%b_e#oS3eZ%9NMJEKT`aYb=cG`dJuP{mD$N^UOp~qRxoS zrO?5zCwQKH(ZGYewCLr?q!?v%o)ww3>GLnTwCQ%soQ)S5*=bobauIL`i;V7i z@EZY@JFCpF&1-vEl8pMJ8Q7w<_T_&xo3wK9X=(C(q5-^3R(_&DIh*TZgkW_}MV^IS zVyevntvo+I4A1oE;xm3FxpTPr}=l3)>U@sTpN&gyHFg@4}nBhcu#gqxBhI~?6AF{_*o?@`-`⁣C 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

pO^c7Y<+$m@dxvHpIkz8tkb() z^q8rcv=y(BFm+VIg3;N{N{7vGG>N_@>FK6?ZZq({td9S$=avW=4_s*=ml$_@&3Jx# zDo;Ck-#%qwgMVro`l#;aj&!6{I;#48nE*sTy$@A=9jf|KRQ0u5Z8Lf6mA$Cyk45wc)Tdg}QyYhBAJ;S;>zvpm?Yl41zWXBWLv5vj z9+sGE){ys~)WZ633mb-RVIxWyt?MG+eD_gJy$isBQPrw%0JO)Sl1I^gx|V>!?Z~t2 z7Z6I;D}Br(Vlk5&q)@d7C?n_|F?yKi(t4QZ(t4QZ(t4QZ(t4O@upTCqmfDi=+-PbY zqlkGft%!MsQpB>GW7IIEgiTEs!7Lq&X#OUmxqk;Y_9Nk3n}l;CBpm7BOOtRCdD|px zh_-cC?EHdxb+mu)ynw!K_wR~zvGdELo!8Ze2Ig}N%%B>W&yCLBBm;9nhND%c)lZP2 zuW%c*nCD+KQLUN;(gPjw-k0xAaPIc{=hLe3{Pa|wVPMYtlLqE^rC!Lu6oDTshDkAh zU>q(|OQg&f2aLl~8Hei>{o1T$(0uWh2IMbu#Hqq*5*Ca~m@4g=PCqda+tfh(J2KDr zKRD4>81NQOPg6}=@0^~H#<8^r&(RFSylmmS_TY0j4n6kP*<-InvT}c_RX;8D7s+7H zf1>^IpBL1B6=(eEJEH$CjM0AqC{{VBM_@2?iJIKLN~V8OpZp1w_6m91lyIbFQN?SsD?QbEm2(PzE3SQ3*{`OEgqlU_QQu_*bFj{!#Xkz7hF};kp zGQMeZ{JRq}wt4+}tK#_jHevU8JNV_gA-$7d?jq5lyD6Fc_OLdDbL_%b!u;~m!|8R( zw;QSS+HR#{Q~{KEs?9ff+G0rk7BOzkx~ea$0U3S^$br%!b3!+Ai;>5ST5`AEj?X`c>}e z;kitnbDf-R(OykhI5PMJTluon2Pa_!jhbUP?`!xUb>^8(To;t1Kfs6xUxqfz)w8gm zvOFbTt1gDF{VCSH9O3w)_TnS>>;rj*ebst8f$ayd-Dq0 zcr|>i;h&MACUmN=Wut)kK*su9CzK_3&TF*-@;}6Dvs{+)l&gnaC+g;Ik2NQya({fj zgHt*mbKwAUM8nn1Z2x;adbN(yK10Xkd77V)kJ*;j-r*abGhVm8$tzMh zZ9e})nLhu_@%iSq{4uSSXEL?gUsJAZ$S{v_e2#-R?Hu{w8EG$9w#-Z?VLscopO%}M zxzt6g{tdA?K<5CZY5p19e)Hh?{K9R%!qajMkufQE6vm`8C#UkL>`x3cH%+s4kN}IL zwnDB_L(*3-p>urxobi+us!ckJk25FcwRh%^*+yv#|It^SGq!Y`eyZJ*y5^*=-L$4_ zWoRD5VmRsY+Icl@=J?>ZBK=JL7Ed~vr`=Q^lm~$5e7k@1-L21DadL{5Zv4Z!pqG$P zJ_2$+AG||B42GMmd3QLxZ9!jZ;G|c(DR5GIs6KdABz)3SuI|z~(icH_T|JzC!i$uEtEsOGU>8py)Mb zmT2o;Ju#55Q^j1Ln*#OraaO_q=xFP{KJ$U}xA6A`-(;L{cHs}<`w`VWnOBAG$sFl_ zP%gzx_Ewf>#+9bocLoI=jlF#i{K{LoEHiH5u8L)G*$a~@mH}^5 zcVjLb=Jne*V3rOKr4PK(3*S-0(OruX^UIPuj=pSNhYZeOs3BdCqz65|%spVY=R>osX#>H4F(`E1f7qn4G* zy`22uj>~vz&}cACW+lVJfrXzdW5PZwVKcamgt+mZ}$A zPil`gF*L@tX{#Do)^O@s>$#DH%g5S|xqC?Wkao{{elo3TeOcSgHE)o6oR+r+kkR?U z??cyi8LlEZcwlB)qWMOoo6=WaR9t>pQgLn$U3dP^6V9cmfJ3BNmUya$}+K6%?wKdo z4LY_P?kx+CxKC^>8J=>K&S1ULS;LKdDxQ*Xk9Edy37sSs2xnA<= zeQniwvfOIDbTvnA;{u09={5JU$0dq6pG}Lt96d(S?%Nsz4{7wQzX0mf|9pxy~N2FmAT<=oKll< z-NGixD4pSyX}BB8XGHUpr@6GcY){rc&Q4L)+3A>0PI$6*7>?cCKH%fjWCJ6UZKA8V z-E`HiDc0}5sPaBK3bXwbE+}30ws42B@~$TbK)ql{aSN#4>7Xf2_u^4n?FcnYbH)Z; zN>|K*Q9R|!mSq|4#Ja8#* zQ9_VKoGg8U2b=vmV&GmLTbkU{S%&C_Jpc~ANCND#*`Eb{sNE5LOOR0%+=u2L(!W8w zJpTJBv?_-NX8R~4UC7CCNG@Y=bzQ0WhgQeUI`bS{T`GG)a}x3k_rn`e+SfSp0w2ZC zure~Co13!Ua~$ILyN;|+9Zw;FaI&AY?wbi&=P?}Wjw2q&mKoNpOcmmA990nnwT@%r zOd#&%c>8omC-^saakDkv_pRk4gvi*Lx;_wOgyfy0mQHQe25UK|U7&0QJTIFsSG{K~ zXOn*z)~jF}b!#~*oMB*}F$rnIo740c85!Ut)BV0?$xdD{J6ku;Wpg0^6V~XzW|&X7 zaztz~uQpsRqPnbc8b3MS!Xu9Ny@3N*`Ph~^VXW6$`iAViu zMG0EnUHG=@j&5q1X*k{&R0&cXydK3B!91a6mHr`4q0M^xPSxOJqjGA#VeTR3Io*1D zQUq4!P{8v5za9m~D_}1`v|`Y8Y?ODB&owirrYu3L=H5s)whJa0;6^rVZ~e_nUEBp7 zfbUHNCF9k4je3#*-#pnC>=hA?U`M1YIwB>CSgFg))Qgtirqz|$XmWIOXS&1ta-L

#OM_sj5Fvd%DHRg6ygDKYXEY;NDsG5`rRYgEv2QU|uMm+Q(MM3NV z2AE?5A(;@6+qGOAIvwx!xyEZ27k4W)Da;68W3f5R2n&P}76>C;@mrA*=o>OF7k7T~ zEzzyy{qdLn)z-4cGLaWGFg(j(W}$NN=Wyw9Su=4nMXy53C?Hmx*^_mao0?Fjp5V#c z3W2QQ7BSpX5O%NXdfcz#)?TV|{fytrvk>+g?ML+~wqF{N)k7X$S#P5UXR7kT`mcX6 zoCYn79(S@wn;-6LrZIBky7{*2=j6y6Y-ok!z3#23WKCMtNletJWH7DCyj7+oWGPzN z0EXiKt*e5>+$7{Nk9$lmmU8?r98n5WUI3W?a*F~I!&ea}&R}@fwQI?+K5`tsg-diGi*Y-TKO|IL@LzQ#C zq%g)bv}6KWR!J|)+NbDg=jR$)$@?f~=Wxs+r`|nwXz?d#c)esd=Nv$^v)-+XR?XGs z?Y|$D>=oC`v<=5gt{NOXom#<{j^g+(j^&~H%xjjU2n8eIDVGbU!s@)H`;7!JYb5+OToaYDq{&G5 zy{b|;t0u~+mn?kIETnfNweD`$s{V@_GjlU|vc3W*SEF$u_)Ul+5h=QZb2#6HbAB^H z?v%9d19F55?Uy~rGRq~R#)qQLloiU#HSpUD=6rZbUP<+sb$up7J-a6Mnws z@GuqNSJlDe*hNfl;Vjp95f4uo<^jny&uo`HW%CeZ2rpa{xqR&=gxixGY1xN-D}t|)@gCvRc^`sf51_~fZ}6~3NTiejV?pP<8v}!q)I_s|wSzld zXN!=U?J~qfT=f%WMHdXBXYaG+w2-yP>CqymZw|@nC!=!uNs-f!C^@}G$?4rQtl60& zr=PUt^po*$R9j9zDRTN65k5*zZ~s3iry<6HoWhpd()4*$;|tWV*nwk?G=LL8pkksz zpD+WjV9M~AM^$us11vq|@^*2px{L@Wb1VoWSNkhB{j(J|eo&sN719D|r_j4#qn#{|OOpRf87_4L+(2 z=W$}a*3A#pGe10SqD*jU7%S*gp7QYWrjEVSXzee0X}q$djz4wI{1vx!SDtf}-VmKnhNJ8z z7FO`ial|p)2NoXWIUt{TEc;03p?{+Kk^9Z<_^gf*DDltzM<~8pFx%7lHn9onob_{R zV{VJ0A#`870JtjtKSzbHiVwEPoG6k%VXyJ#UFb!kqr8z?^##$?tUJf1M;JztJbxb|g?+mxwDfD&rHUo+(IzdUS^HMo3GLx4 z&t9DvcS3up{e*TecMsiKul@ZGRsUsRRJ=^d=Wo?(8THz?>Q891*N`Id$K=sDLCq91 z>dhTs{KjX=gg(Ye3ZMD$TXQMf4m5=QgVF}B70Z~VC_jEXdWZn}FKr#Qvp)Y**c+?5uZhj;$*zZBVW zVFFXN2u{31ALIXP-y)loWk7L5dviq`|yLkR5 zC-h!~uH|oL;)O{incUnhWw)^^D`tcQ{-h-#TsCVI6;sKX;US+9++tv{7aQk6pN@W#G;*8#|wd`h&N|);IDV(C5d` zuNgW~{QUEO{{I9&Q~wJ1nZfDQ0r;843m_2Ar}x22FG@SV6WXzU25u5NU-+$!6yA%f zlHnAg8>PJq-F&3~QRrr+O)u|;>16@JGDBV|ijvEXEd7j*($B&u zzD~>Ga_HxS5WcPs;cG^IVJnNS9&;lI%eX45O^|nmp0x!HbK@Y~o#r0w%(^1=M`cNE&qK6W^PSdl4Qx=dtdPn z;kE`f)u6u=pYNcv4Z!DbP{3@^h4Fc0HKoVmlSd*$_#AyneD(;Tg3t8|pU#mn_-qE1 z&fy{-hhh5^e4^v9W*Nd~fF4u$961=D>%ixGe=0ujS{ZI@6raNXBC>LfkmYEbEU%QM z_HJhftSLfk!EM_xK?ia5EYF_U5|I;F!pKYE!#_k;?#fUYoQ1u^82w88xU^R@r`cKiR` zZvQiO`=9*N+W*y<_P7n&{Sd$#?AXEvdKwbdgHd+##Qf41gfLclS4YuSzA{qu$T;rIHcebO?bS16q+#m}FqJPM$yhw93-`R)<67yvD{ZZI+ zlz%DxL%NGSW%)=-QA8%7fK0|W0U;|2FYon5#!r4Bt8zS^0uvv7wWu0b=|aX?yYwus zD_XSle_n>;D2Tms&Spm|seGv24nrPJ6cq)>k1+DNZ zrRB7g*GNlrc3OJe>$TGo}13tgNoC_Bl3$?0slBNG{g-_X!sQafx@cFil&nY%OZ8_^vVm9BOYvZ#FeBKno zXPt3n9LNzPt3t|Q-NDqV6RbKUSHUXkG3NZqSLDlMD^-0VfPpZ^v15Mj}K@pjH}`^z|e-OVA&>Z6IW)HciYkpGz!wqRB7#_!MJR5;h( zY!df3)43jcg`8(LH!Mqax31Kdza?p`w_Ww1+lTR-Z6;~hyA9U_SBk3i<`QY(?@`;oB?@FLG(VHzsDKjUtZS2gr|86?aH#{#Ou!!VHFT-??d8Y*)rfI zVFmHD+V480!Z+E4oX{R^;ASSwXn_;#w8N%GfRrTxUeoF7A0kEDAuK&dg2d>a*=5@W zDwnz@u-EQ>3X$ajkNc2jb+dfKp?EPoP){zMuA6egG>1&)?^iHqS+HTb~z7R0KHNE1P&zxf(e06me988)@WI^pTGtK zx!kCF9&{^fg+HfUmSd$KyoG0dEXE0~`TW0Ezid^wODtQZw!{azC8^LEvmeDXf*S!GQjqs@?%!$eM zj!>pN@W`Xly^`N&(B3YUbZzx+)eGXa)sHwy-oe+&%9QT-L^cu8P`fRm-1o_%m4nqX7Rjg; zm0~1!lh60!4adiV8fj&x9R&CZ7bJNc5Xe#0qK#qXNE&U`KE5ylBCVpOpjsvHh7%Bv z-U^jcWS3Ccm>KA$-(?I;n4pS>Sc%yb_&7y1Y@w6-IXK8O+f`tvk%qEIPwkpvSLSI! zZ8HV33uhxvF>uq2Pytk)mx1yDJ;l->t9B|LZ`089W{gh+K0t1*{CfCZ?`ZXg7ViT+ z+RMV_98Kbq5joG%EzZjNOzt@J5{Q(RSMO5S=M^@nXW`As-w(0Tq6``7%dcYho2{29 zI1IJYW=jtCAFO2jY0IaprKAue?q$lOVn*$^I|VeC}uH;5k1A4Jc(f{d|7ROT6$NC8lHWT z@o%2@MRH)6<-<05Y(B76M!YxQTpx{l?jCEYqsM0%*RaXgmIOW-y!mDzJj!iqo59)C zo{F|Je;eMyYmWQC413U_WHP zn>q;F%HcLjSk9mp-9Y$tpR+xJqVFMsVDzE(s4l-ydt}F!;3?dk2%7^Y{URGS7Tc(0 z3?Cl4Z&Z_{(-0AG4{cQ=ZBm`Wo-#B+_V}%yjwD?D7;hY{t|vl+ToL4z*fdvnM7R%- z_en#nd*tOl;Yboa0Ov_kRDoyXV9s+th=bp-TfjzQV}I@=>_{;mny}Vz)W06?}EgStlyv#LlS|YB}=1WwU5xwP5Z_l=9kb zh-$AjjdkTlua%pw{UG3F7WRYslz>(x=k4S%wikXN^4x5d?NlftY_lr4awbcssNTHx zp54qPwkNd`=SZ0?62`XnQua#iVac**8_#@<*5vjg?yq@fJ9px;tKSk@dX%2LDNRLeVz6~nTMvSDG+Fv~j}(32Hq!^5EAmNyO1LltFdVNjao z9RbKwQ8q$AmGvV}ZFe`++%ux=>lI}q0o9+{#*?tTT4zMh16E89*FKG7M)eL>Ob*LB z%*oKYdH7fQ`(|+CEo|Ujl^4BSqd|AGIWyAZa$ZdJcpDCreRIb)1%mYVv(3CaN7r8a z@EK>EoQBA*XZ1olJxQlPLO9=0N{8>E$etejr}z%?9b;b|?jmt>#-Sj{uk5#jK-h1m z_T80mKBA}te<#E;`9=Pez9?_RJoREGf1h}9JZ<8%eA6>44LJKl3O-t#ryUiXQ{oW8#DohR3<{Qk^PA!#4Fg3`z&ta79GXE8x*+&XG;~%W-FXM z6~);<4aV8xX#3YY8sp*`IY`o&6Av2eoeGUF1wagRccRAISH43~VCx%0;g45>8hJ9e zahjxG?^Nh~2_gl9HPiYQehBU&90zwl`<~F_Eq@|DZF(%Zv6cIS!uSLo*D61F#hv&8 zVX^oX+61S2*wNW@nh4OOZ1XJW0*4!LgWDp(ZMP!2bRb~8h#pZCIYF>%)1ohm*Pji> z>%1@>g3t;OS|I~Ch8{zdxLpuh!T5?B3ZH^N5Ly93Ngt)lFhxSgk@@aW`1~{J^V*8f z`r&iL&&6-kX-1e%q0Lf+K$tf7w1dwRV2LdyMT}`Rj`#Ar6_{X3 z7ssp@$E$$M@VNfx!MH4q9oG>WP3Y^7QU>>>=u_b{Orw%Mf>Igem!{8pq0bA*$11`U zw|owVEg$Q{@^Sp91Lb2{SU$=yXLvt>oGgL-WVrVTUR)75*%m7&zd`1_q*Z@9IU*&6 ziSx9!LtqgZd6f-}SHQ4@l>3+D^=<_W%SW+!0(2^1SUPUCfr$zjmW{GcfS5@N7?zCx zX#eB2o|rDRNQ`8T)q-|GCDg`Zvece{%ZiKW}5JQT_Wr zIPCuY$nM``JLQF2t>hN-qzsdN9G^VyHG9y7;5(_J2ch!hK;Jp6C6~-;m5t@n-2w6D zbMIW-IykM>P^=_Ocr{zx@e~Nk}cB=%dKWij5L#;%H+Exi;92T9D@OQ;`NWxEu zw*glHj}P0DVT*ux#8oS31XS?8xHik57D*+A6l|2Za7R*7?ncSzJql9ABCJb}3wW#i zIc}#Rb#pY0+F4H~TG5tJ?PLp~-D|TU7Ps=pOU+A!1SChc0F=)Z z(dzAxJ1oDy1G@1ii}D2U8}3wVO4_srGtl*iX#Izh?=Qz+ zOn;a6D-_4laVU<3=FW^w)J`6P4%h-+ly)^!>##dil*t0zs=I_ui9#+4x+q8}oFzL# zVKSQ=C+ZMVoxirSi8vQQF7vxz@Y;>f(dcfu+j73BRUKBs=NpYV34J*=6M4?VAy0a6 z9iaP+R{OpREORvGBon&W$(P8N#0`NG{F)sc-ZcX`G#>%p9KGd9h}gZqe*ZY z-w3{u))J=#KVt_w8*{FZ;B>yr_%64WBuemoc5q^2&eal}!FMI!Ro0Ru37%jFCpG3= zBf%W9Tl@vSzp<7iOYoI;aB^eLbrL+9?^?buT1!$S_%kK+%2FD0Zjj(izA=2)TT4uk`V+I5;USRFtRb{Yklq(;1l@1%6CT@^7aAX zllp3APOO>fu9^9DQ8AI1L+PiGGsF#@51cCPo4Ybb&Z_jH-~T^){eSdYSN4A|y+$lz ziBAVb;}0lS8=W|XEn+gIED%0=2!0ArErREkY!35X#Z1$I?84=eiIT8dd!huF4fEIE z49#D|Q+Q#sL-1E8v-?Co#b*ce*A#+M`4pcW%wN+88o{Ud>|p+yPS9n1iq8(_uNeeg z$*1`2VE#IapfB(#K0BDdjwa|@KE-DT^Vdv*#_%aVJD9(^2)dC^@!7%rbu2+ye2UKw z=C9)jx`j{i+5Y@>Jm73T#b*cc*9md%md2c~68<&mj|hLA2*k}NeD>>@0CFzMUmK^L z!wztsudmNGNG{+j%0m#d= z7ebRh-AV)f7QQbnCLGh~@reCJHekOsz`obSRFC=okn_Q+@O1AbN6ABs#VEEma#a=B<2QHJw7+?t;tQQo$rpjpvlO@V{I~SDAMe?C=F5)=ayzBVA&YGVhQAXHNP&gOKhtj#|dZOIG?+w=cREcs( zjh1;Ror~l{@m%yJqI{X(FI)46NtE?=6co=z@}Yb#x``+^^Lw*3f4D^Xr5y$3bCG-~ zpo?xL%5D7KX3bBND9_tb=%PjPp@=T}3Q=z7_jYUk2=|Gy$MH@;Ar)nG5z6Qyl+i^P zcIHW+eywb}R);qFAphMp4}P6nNhZ}yo77J)WnNd86rRgP)KSq-W&Y*fIyArh0+ex~ z@%=6cRLpV>4%^!3GSD=O(M4E;3{J63lA2Py_)`?(Cgdk-h!}vB9->S;GQL$frXLDWOaprlsTlRb3L@;B zm~ac5tH4JTn~*rbMWrdA=9sLs5;6RoQT8G>@#Js zdl~H52H3qDu?<*GEn*xfeafC^yDW;MINa2vLWT`oUllE2!}0S)ht^s3;Q7;`tjHi zzL85MxsLgm3nJVGb z7AE)*Wm6>;3&N2Sl&Dd4FPJS=!eAAqUyNtKRGk_D9{7ZuHj4;TdNt1~l7o<;ERSJs zq@Ffu?!n!oYKZWao+!qkHHS~dymrejdP2}jIp-y}BhnJFgUYbNAgXJdw*xvb;vsZcqsclz542r$NZ{`Y@P=&KlhD)r5 zbkrQEs#wH7#5V`BklXD9)=%*h+7V76@#tXTN=2eT0_*99hRY`;qbRYs%h-?O&^&_P zv0heqC%mw5PDD>ru~YCR>2ExPbYU1fiZ@M%ofp^3dWfTyV7bPk)zNxq-$}L* z{H$JvxGY7!FH4buNPgjS8)BPN8NM0L&{JF=&5>;v5`+Chs{**gnJUIF`MO)g;`o+i zTSbM`3$nGk^P>D>dzfFe4(1mlNGeqE)nD!uK2a~cL$+7QZy$fKeiM4*j|dgVwf`ax z49%M}g&RzWu#G1a+fXdxDVuEw(}oNR-ixvgp5GqO&RLuS~0g#T;ZLcmXNq$Vy5v&82%NK`oTXh*3Ko z1j~wx2oF?zQ+#v!_)`pjETO`ol?52CEEZ@bjN=6#WD?;Mil4Vrtsfi^FEyL@5i!(C z!sEgugj*dDCbStOJT9D&Aq;B7zAs@6cle6P_Fk!ZFImeylh1UdllabCr3osD_RM~P z2s`NFqukB(`W!gSfh$u~LyJ3!IY-KrQq>jG$RS`VY`d_j(NQ+FlI4q7 zHuZRP{73jyh#z3?7Y-wwN;pw*eeRFoR-61jRE3w~<0@nlliOQdf7`Xfz5+dL!cv@S zy<};~%-pua!iAW<U1I zjseQdJU~KQcP4LjvLF1oVorIctg(rLvq|`qh_R9zKigunB?tlUwWsjPtk-SNiUT<^ zGZsKGJ%e(CYkn&(p#f+~EhioosL-F%YD8d&RBF(r>g986%2Yt;L~+J>sxnDU7N=i=sA4(;>F7Q;9@@ zOoWLh;!RDXRpx5uO%+h-2@^hpDvwLe5E5VCES#eV@>9yTYEZ!w(g<7CQ7q~>p-;e~ zR5OH26g{E%BxEjXjZ$wI^NOz$8d7g;g+_$G^u%Ubf8biL6h{qYNm3T=WC_(?*KH0% zKE{D^0v99299axigGGdW@e%&ak%3J2AZYM?LI(4WqySa2 z&HJbo`qY6dzp4BZSNKw~z@-tQ<0;NK=Lo(*O`_@`)2_9Uqws22l2j$ckpw4FImMR1 zrc|C_Sl_LnGAq5&!r zZ-N+b7hJiLH`O2z{6&dX%B`%%S-%~U|HWoK1pl)$mlACr7|9*0;Ok`0zexVV5BH*nUC18L&)zqHAHF7&J4VV^ zPjR*M0Dj0dQHmeh`r5}tpuc7G5dYePc!j-X59Eg;sY*6V5R3aEF7q+nr6zO&ei-ss z`Wot)5?7+LDWw8FsH|{MqSAv<0POjna3=WN8-$~#LnUwmVNW5QjdWtgQ=E_z>q$OH zXG2>X$O?tPM3W;4BTOlFHr*+9XKQj&AccjdcEn74r&TCY>5i1C^ik2(gnhlwNBz_c zGd%Zu8QAC2(uB*(qyoK#@`W#hNTst0rjC|QkqI5Rd`0+R~;7t7( zV9X2 z_?x=a9PClJDzgK)?7>mmnd0)Ig;GX1g3W0T4dyftN9Jp`UIm}A=YLW5BFazkCef;* z>?Ky8GN&n~a#4Ni68yy0&TL*nc5spY`qXzW!avS2IaT`9NgTZH+9$?D7BN_Tk;Rv< z3JVeSN!SOZcBAh-w(Faxg?r$=HXpAz?wp0g(8hlCU4DfTL{ur+WF~-qs#J(*A%LhZ zrC5guC5DG$9g3;YZ)&>7;86;c@DoTd#5$m_LF|LPMQsT4kXK2dW`wpbC7CH}($Jg) zix36Y(%>zm7C75J#K=`M9mNL(7n{Qz z1|v|&0JKhfglKBA+Pg!0WGAr>wCmcVV({9`@uf$1Ygg#4+SNKd7%h-c5df-0xE_Wi z#k$md8HJ}9)-sIEE`I=?l6Kx#X`4ToA0rNAPogUTo%@u1)$RQ-^3I+U}lVoDCSqJu~xk-ZeM zQ4&+p`6rSEbyCXlWGR^nsYTQIC*w)H^V*swp(U`@|%Okf$Yt6k=J~sa8%v z{COIFUM8{S?CRCE^PukkWADx5qpI)y|4cH0sKFC7YE*1v8(V@%Nrg63u+7K>CORw% z0xH*nv0SOPT1_-m2-qZ=(_xTaZS8h%`|WLe+g@9{QkPZ}mawQ8plqUm8_p0}1Z5MF z@ALIOXR?7_?d|>jzJFXEk1*$a_T~L~Z=d)3eU2L+eU(Sovh4O!8qJZw6I#v6_vN1v z^CzdFH?w(1Up_iE^P-G7Gw*$6M^<2optmWB31d^Bb*3vXl{MARbZaloFMDC?eSLwQ zGPT8}zt>p!-W@w|5pU{h4)Uh(|G#t|WHarZ2eGZ)&O?@+ zhwm;w$$8*dZoQyZIsf0Dhn(hDvN#WibsqZuH_t;3=fP`C=b`ThI}f!(j2E4BbyhTR zbP)$A6FE0aHFs=c}QH*fnkZe(q|TT zki<^iC1w$|n@>~v_ZA|*CK`fyIoNKsXiP;b$P6j+wiZzo_(Y={>>47GFsl&{vGO2% z@VUe&kqOh39j1tB$KVM}?vz-HUC==y9uhNLv?f5p0U-F5xV+@L9xi#28AR)AYyo2700?#VlI5p!DLA^+Q zv}NQ^WYvaXbmwN!xLu`tjX@bq*K3@n$R}7_5~HY|EglRm)t3mbN1OD&ryMEUq2~$v zB7A=7{y9SJJ-MIJ5?RW8yRP2$2_AR|O4>V(x;9mJzpv)X$Mn9iGRDMsX6lXOkKzAv zym35L$F*Z$9$KRM^Y9~+Hlvq5<5L##<>dBDe@W|i|G$!m3Ea<=l2j9?AS(RKPD54k!4$0C=?0OpznnCUbnbO8Y(C zply{LU#=B6%1^*JSwMnZ?fA`-5s((BCyFkfhRklz;PDa$1Y&L|191(Oxl#ey!K*#$d&NQ**ylv!%oB zFGMz{yzbQOfJx*)Y~r>WHh+U0f2>b5q2VL<~YqdY=E#j!<^F(sbD-KN;L{Hu0Zn2BeON zIB&~c>Gqd$tlM(uMy(v;2o5+e=}AnUr}bsXNKdx*VqIXVrmiMC?a^8AzcOYWprFaF}fA}r+HIS#y8&Ro?~=rhoTea z5tauJ12-=!G0n^wQMq0GaJ#n95Zdbkt9C8fh8LCA#(%RkSMNT>xB&>Ek9ZTAFWT83 z+TL|CH`c@Ma@S7x1$`bD1>X@&6KTFPA@f8&N0N3ywHpOv>_j%E<6~f#tGZB~zC3N7 z2n(dUGgFd5l1)N~W>Uifw(b`p)e9H5R-G^5RGo5%#5RO|h1yGk|_k+=7zTf7m{WW$4P zS96{M|7`}Wg3uqf^+xGYG*&!T(d56ze^yi_cz>3%tMt^~Mp@mb$iVZCwU#8GVfn}U zudk9Te^VMZV*v4bdS|s%5)V`+DUFa(GVDlr6$f|6Ccg~tT2|G8e(KRkyZNxT8}q@? z@7SPRT}#iBp)C8w+uQsH-S?QZ8QR*LwM*#0X;VNehDuJyOqFEu5Q00By^DH}<$pz` zH6m*nkgx%;tKwpBKcs$j@nY-KZNaq_6f%!vS@Cq=RNDfz%eK<)2L8hq&z7G5I40?> zcGBD8r1#I;npfx#UW%>YOc*Og&%mU&Kej8n1JkXH?>)RxtD;@;oQZqy%27)DyP}fb zuE<^x&tP7)cK8PO-U{ym%XUH=;GBFr7>BMs*$y*p#0J84D!m)RBs#r1-2yx2W>`d6 zf;4o1lr(Yfgq?sp0}p8BJ(exKGvbK^piZy-=(!2HU%OFSd)Z6PlByIN0M=iOF>ISD z?B52*cqdCIMZ0mE9e(dju~WJ#OItd;$dlPO2wG%~c_Rhx_?w*yvH7|d^XAATSdeTX`Mn%>N%O88j1^SD493yCO26}Op1hytPo*!F|E`T=e3th$ z2zj9QZ5u4T0ApzktJy$fSj}WMhCBE{eP6w32CpYxtR=XngI zGhPe6-fI|3K*z- zBhOQTK33p--veFOSuJI0@5qm+Kwm5HQQrssR4b77kNlVlK9Yk};8ZJcvG0lgA66jkB{@U|PO}1^GGBCO;eA#h?JN0d709&$ zmwF!Qvs%iAF^1s;a>o1oGs-9QnU(l#?WC5nQZnT)`8jeXpMGdvvyDyKX&*#bDyM~o|FMX`y02p*@y?fdJ=-b!CMYFqmxN=`53))8$ zwj==j?&q4%F6YCovUnr~c(X=6 zQ-J~&+R%9?(WhT3{PZ6B^w-k+xAnyR%b*^l|E`0+?G_uER;pjvL#YlYb!{sp&A{`v zXQfnUk5HS~eWvZw?0us5_FofgW?U`$bxh)6G^G$U{|6ABMN)z4BDlcj@L-xfyUjJc zCt|#uKe4LRMja^rNPE9lDJ`)35*$cZBkYQqYLG)Eu~KFPwvwV|F3L|t!htC}#VlC6 z2ubuU%`3L69!Cu4#rWS;7h;(`ttkSM$yd_3ds=q2AUJtP1!aOAV=B+nmQV(wP{5_uH7kcl} z`jS<#1aP1B2N7+LxT}koxcH`=9p+2SkG9tBf&trxd8K#iN6am_l4#%YXckA*fl4cBpqwG`fb z2u8E6wy?`Sa{kEE1Lrm!V(?8aAs1OAZishvl^4JB3y#+N@CWG=IEx4457O}x_G(1k zqKD?EqoeKe!3JJH^1Q5cWxG4$Fn?gAS-{OKsVRp&z<<*o$m9Px4;1qMqz8yYI;6%Q0fzzrp8EcDFV>>1Q1;LZ*vYAo8!D_%;bJ3A*)V*xu_y_76> zc5b4^V#;WzsTFi*=Ot<^jLaimO13*YKT%_mW4`aD^l@hwBx)>JjN;K#tFJqIK%$2D zFtuOjEytZ*n5ZEfOzo|_o#M_eO4JbjrS=BiPIYGwOwT9i z)E(`6*PZCCO4w-l{7iyTCn&D_qM%M3W=77L!M@Hpk-j;!ofiqMy5m(j`F9!|!`oL~ z8BUa8M>MDpmO#XRs~v$1k;(gL{BZk^2~wnXh+cE_nq%kMpFgR=`$!F@mtc=zw<|8H z=0ESEwky)`57p@)_F_j%U-*b7h)|aC6Lj!NTZP(B+_%t!z zhtFqiQp0VKfB(Gp=4UjY+KZhj1fk12tM1Cqv$hV_2FwXL6XGbEZ8|K;mZS z`n}GXgCC&$3(h&WK9EBpgo0V?o$GfxXWsNcp>zE@=bW1!80ehIv3Jgy^gwC)?AP@? z`!{=MA5d6fryp<#I18_~)LMZR$)Es|!$D`^=e%@*7wI4ZrRO*cKjx)pdFh}7rSmCY z@!6b2AW`K(3QEs&7V0Y~q-T5Spa!MqI|~(Gmvlf`7WUv5AaSG zTPU{2+J)8t0wacB#QRIK&PX z2kK*hXz)H~$jUpLO*HL;|y#T;yEMO$2mLFhjqQ4xy=hIY_g%B?I)n0$&B=DhPK4*D@4TD zBczOzCIc`T+zkG4#{_FHCGiH@8@$v73H8LoHdoEA3mL!38VMhtaDV?{<7M5}ZzGE* znL8chjpLKOjKI{yb_Z7k<*h4p}(i6Joplp=a!&eFpi&cJo5r z`Z3;oDSN$lEb!CMp5Ic|hrhn^&ky=C_8+}$V!NF})~Wni?4cZA!v40GO>DP*WS!2R z7vs&Buf2F0wZwMoPu3ayc`@F6>3WJ+o7iq=k##nIUW_+iwl4Lu`ygABbsm3Sj5lAh zKG)0cOWYx{KEj_DeQ~$-w zCbnBKS%dhq*h2$-iTYo??9+%lMAi`gyclo3JYDN$6W^_btWWdj#d+%;-);DO#UJ_% z`4)d@SUSF2h?LLqXK~()PMMx+QqOqUoOmO8L`ayA&^8}7IvslWr16LDX2IS|{!%Pr z@BWI1UiM6${CwL51^;I5GoJJXAf9y&35WpR6_#Y^w7;O4GC@u37D}=cvaZR)(%^Td zt170LcCSQuRo=ukN)2k7e(HG+HGT=|nu=8Qk%=Xfsr{3;O&)T#^2`oHvNYvQEBXpO zd2+IHC25-s?Ri#3&1|R)i%?Xhg_4_lnhl*G$8_p1Ext*5E090f8kw50C7Y^W7PB!Q zpy(F=R(3<_=+P=FejocG-(raP7AN4F|BWA|6a9~iA65N<&w~Zy>I@b_M3W5kNhp%i z=6&yZ1|&HHqq1!_IEC7n`o1&0^9%@@m+Gxkk0h9t9!hX8?n@;kjlasX>MLFOw14up z$)i7=H|1L$p3RE`8lr0mgZ?(ZP3f3)PB-g(5c7rq3HrkSQ|(OneugK}C5`Be*WX>9 z_RmB59CSJkZmNEj@@YMiC(nCqw0{QDK86UeUFSyp#Gy`p_oVjzFOzL3Y%>qW@ZNUT zx4-WZ+^E8T9q|G|4_{=7uMi0g&ChL@eC>N?7RPtLECAqY_=__1B)4sbO)W(JK_?S& zW}3IYT~JB`v-KG=rb;QZUG`2h%?oI$4CU}><6T;zHf_30k7k;Ur|zDJA5IM}&t@J) z$ztYMb|cy*dx4q9tUT$u)!QoF5T9r$cecw6>5f-)pV_9pM!Scpd)V1d`L-h@aK$^* zO6wX?-m9n;$(C8=9k1$Dx2Q8@y~LFjLquGkp#j=u7Cin;-QJAVg zV<%(au8P;U^{V?&uCc5g%SGn|DETNGO_Mr8f8=#UvX?I}o2_b^Iawj6O$b_grmeb$ z->#);1Ezsjn$-+&a-k7Gl7K0UR(WbfqqSAXm(NO;J6l(<6dJs4-nR3H2}Iaw1KRD< zP7BMaQBVYha9VpW`B6A{*743dv zY>6LES&@>%9rKo4-$_5Dzj{J#0KBopv?-b4$JEcFc%O)?xOUdQGp^NIa>lMkXJwCJ zC)V0Xh`tq>#8DQxiG{XTuU4~N`muB5ANSt=Gy$^hd>!sOU&9|h$@v;;iJj-G|94J) zzFPhBHPz0SoglM05ZrE6C@xcaZns>s;IjzqQ|)}oMvg<%{d{T1x5^a_z}NW#bOcXCH?B?Y?r4xuu2XHeTEE7G4>Ru2bQ1ZKO}9dr92bA zXA1et9@K;UoywMZ0%w4hUel|ND5sdA$%1j~+v-R5v>b(Ur)`^x*x6N)S?0~J!{VK6 zdCSc(b5ju$JFe=`EHAVboDiz_$g>lw!v{X$ENc!ukEtOPbumj8Dja6BN$Na{I+vV9 zojs#aqGliV{Qc@Z&R_URod-LDa?VV{x1GPv!&k1jNLlak%v$rs(#rV$iTy{c(om% zO&NMvxS&m5x-rw(NXTMEDqnM3)4OmkmQ1E90re9e_q(q)TYWq&rCN@3Hc>&Ast~7ToTP~-5 zC48A|S!L7Oyc4B;i~CtW$mFlRtSqw1GX1=}gMN6)MP6pMGK1;N96zw+onB^NW%fyD z=K3KeCwrNvC^ILWndb+S40)NSDf85HW`4p8BRRm!?5E7!bY_7cKvE&*nFt>?TU>T} zI&**@I`S1Sv%fO)(wT*R(8%Rp=9$VoBb`~~hl|wruxR!yW#*?d2l{~`<6h=D$~-%r zIoLu(*76;Y+s{=-K{{io7Z~zdGR{}Vd0Y&8d7;(r-NS05goM0+^a0JUEKHGPC&EY6N9Y=XW8)iaQ(tQ0$BP`QK zTqoSbiQl&pp6k>Porv#zZM{@P&&&U?JKht%`+s~t{|j{Y0rzuX*M36sXS~OL?o02d zkNUdybBWzdma(5@A8tPlDFy!i{XFq}{#W~%>^z@ieBLh5?R$>jPajWxFU32avVQEm zEAZ|JI&JgTLR^4!3(FfDqpS7&F}fMiw_P@M)Blfg>Tjn(?$i~Dmv6iHdjIP!QQvgQ zB2}Lvu-o;BmyEtYTghAl*cH1z{f9CgJ%3*%^JN0NXZOBiCjI^?O3v~1`X2vMi(daU zCG(*IyKzq%i&2X{zn_wGeLcRuUrF2O@f{`e-2(eI%M)HQ`uqM$&hz#5|L!HDw?9+K ze8#}O#iIKp8bM!wmXh;LPhUHmBy{xWD2Xo`=x%-{N$BOzRZ@YckDo}A_q~<#2}n=+ zdE#I6os|nR8Yc{}bJ<(}ZuTqsU?2i@`WuuP)o{FB_r1oqbmw3Gq5BU4G>x9%V2kZO z|4rj^--m(qJz?NhHV|7&z<~J$d>GLEi@qkw{PnpX3@;4^q~Da`CCQm2XZtWvY{_Pa zN&NO2tS}7*&ah;@vdY~m$*1@*@Gcv|g^`l=tsqP?4F+DbWWJ%w%__DAnlFdSs z!0$EKXBrGFw&XmOCh&Vre;)>ZWXWc(sSgcdtZ6VH`;C^ee3d?x@5aAQkZfs%+6UvsVp1LJ+;O~HY|!1=WinQaOV8Yf)f*(-Ouf8nmb8whaiA|u9K zUH6~qeNX>#+ds%)Xbj&qjh&OJ59dAssp+W3?D_1*33l0vUM4ddT3P*y;+ym;|9QW7 zQ07J_mN$EX>0SN9bOif^pH#411(V==;-j6#lL7($j|DQzy=c6IS9zv9u$r{oK=~|- zyfP*cJT-jpVFl$46O}i7Xmg~|u3Tl7@~bX=(aHL|?|-mAWNZvz+;!n6*N?q1ueMxc z?!!kfnb|7LZ6=)(;Qz=enMyy!o82uAz0a{(b+z_AyCqSciRipFr&;qVrwAqdOw@w4-r~?8EuN20RkTiiKJPQk%5o5!tWR zeoeZ+$2EN{*Uk=jauFaSzGQTVxAx*o{Qa(A%1B`W{v+^KSEyu6*N9v{XdM_LF1xtAIyAFF5SI0C19Hp$n?7RdL%s< z@WVi#*u7?Ay>F`i8NGMG^U3z-@7jMi|Nj5c{eO@41-{r8^eg&CFr#+T%tim5^NBL2 zGu~3Cz0_~CTwUvx?(dKHcJ=r7p3e``UpM$3F8CH)rtha^BKF;AV5PG-4+s-X8myOz zasuYME3JOshTk=Q;B6%E=6@5=KQAT=1>dtdHDpb$sBZO|>uRst_)0(E_$Ht#=PZ_` zkK(hm*-c+p`-KlXKE~Dw-}b%2Zu{k*@2Gn?icNYfk$-lt^9@~3A1zKc-&o|rAbN~n zL3r92&%|Q zi}S(`pTRy_;xzmlKTb6hIKZU1-|0#Tfug9u88mszv z-O&k7!zbyIv4*QJoL`ffQGGt6-NZ0c`g+n#;?+b0^{c9Go_{1Wr1bt!;)u6a z|H4nY#PgKU=$wYxjEXYvFhW}SYI;3sAK-&wDp($&)|EKS|f(bYv>PxpI0{lV*L zBtPjPJ#GcBb{cM?2!+RBoNZ5;mpcs;>`6V1_8R!~yEfFV-5RK&0d^|m>nzM4@>rPl zB*@&O>%4LvM}xDV^nG+77j@G4503}j_S6l>j-S|mxx!r1_PE5P`=#6C!v60$=QQ8( zuHSt3@jDB@tb2;dV3aM%Yodu;zZ0Cu(JtHXKXbt6qk>#3{y~__M%8& zmCTrr-&rK>Rt4m+c_L_$lsq1jxzI_!+XLa-_9 zjBhGk>Ncn4W(LuMWWO?8yvEfxzy`HMiq|>=lLRD8k-o}pjufv7mu}^myNw&TC%&Q8 zsV`!3k>aM(7f9y&fH!P*>Loup`Kz4#tZcTA5#I(%G{h0uw^=@aZI4`i{`&z%wA}ZQ$L6PK*d>)>C6_(cfxaRuq&{@ zYHVhX<`l1Gs~$Ly;{X@O{dnqJ9@G9_&a}0uK6KS-A62rh?OWhKR!M_qtr+*z3*N4= zg?fRxZDmI5Q|qjajF+&|SXKs-y+M>@U~|;1DjK?VPEldhol{i6(zTHKEY`2L7Ui>m zRYf_pwk+8Xh>gZ68jVwI>#ao?dgNJ=Jc^{Apz)sPF+3$axxzi@6REm4Q4sX0I~;Qw zUKJWgm~$GA@Dz31IoLD7crkZ>a!j^Sn5Y{mDs<{E=6Ww2AD#bHkfp-FIa=9~e7&7< z_%ul7E#bP_Jjlx&2FCaY5~_tpliT~WcZB126*L@l7LFl7t*nR?4WOO0-MHpa7_FRC zG=SFP<4U9Pc>|;I+_lm8$W3YrL+4AWS+cuiE1OVqumt+VOxsTN*FEAs7pvUHhn&5@ zoMRIc1L3FC{+O)bL*c{(hi?!@oaho~@l`(ej?F^QW9${(Ei8ee*>kN4EO|^)%As8d z7I@CwdsMK2&BN;Oy+`Krh+K(SiKj|=adX2uB+gUDBu1i+8~6N}#NfW=fh3ZiGp;4Z z{-DLjYuFjLA`*DFVcjTq+C#@8ZriBF;76j+-5h7!cKFOd8~3-tcv*g^#aVDEu%wzf z(aM9-ME;-XkM+8%ppNwdsSL;uRTT|z7Cg%iYt05GKbv)3o|HZim_gK&bV!4v;@2TeL!xk|3){_+pb^_D-I+?1lSF`?aUuNd?ubB-SGNZz^sct>isa+*?i*y_&L ztfUWrL7;z9da{$HPaU9GCp{@{Hq?t|OsMy()a;FVe?^^>qTW>H--miHqmwSwdnVk? zKLqs}+7P<^jh{#c4U!72K#2y7)tjnp@{56-Zj=0Yt$|LHJ-W*zLttv0xMv754Qp$^$mKQ6${h;;X(ic2h#}z#EjwH(8u+nMx z0ef>m$a@(NGZz7x>rz*B;ql)1d)S@5@OQ%Y_V2~tW8ZmS{9Uav_2Q?Tg>QGk526Mf z$=LyMBvElBKV`d8d$gRMoo?7@H`Dcrcl}8q=w|Ai6oUR^#>pTkzv!i4(fg2YX=A(K zXZ>v-9)2Ru;3n{NZJrTtsqvT)C%4ImAqO!8fsm!F5!1vQpBVJHriS~{K=nI=4)ChM)n)GuS1;b)3$E_&23H;$@8k?(Y0jXk zsK97q5B4Az_F!0%aR+UJ z-7~uVU%}U$ul^6f*8}@LG<*S<**E_aFqB1@YW%lE55FUZaSHNP_-PIZ5@qB&L0^v& zb&vb1lu~h@1#LrpycSKAXGI#nl))c*qc1^GCKA(RX)ros8iyirbD%NLss9uWv(k4$ zS7b?4nORNjrmZ9~d%-kSGGPZNGNdYJ@iH0)%l5yiC?8DF@2)Sa`To=3?hux)L#Cqn!PH+u z>ZGDVhOjg__xN#kl0F6>aITHP+6(om{lTl=ScOe-DydlhVLSgX-OEO$7%aWqdIRb$-XoZftMOsau6}eQ0?hHmW{YA2#$v& z;4~bpCAD3+x7^)V?u=g{Jyla}t``i(Z6@jY$NuwIzZw*AQ{h9qBW|+!@JEZ6B!X85 znu?q2j$}Lc|5dm-k$pOA0cY7)Kb678Xy9ft@o*xT~1 zbm@J77cc!we)`zVl%k!JPFaHmwL_WAR2!-YOBalcweprO6@{P9yWdWEX6i{V9iF$e zi)lWvH0mZ(Kej9>Tm+{T?z^2zzI)%)U0t*R^~0p1p-%m85Q(A<2czyg?lVsPBHm&y z0FayvB5r7k#RUxYNW>7c#aVTSCsdd6FfmZSt}1u_(Qx&k@cesFp?y5+?uxnFN;;Ci zY2!HDyG)&Q4a)9uoyFH+1cUl5jx+{rmj}x0o2v4|^ACrehPz3d&!+*LhOh8s;$4wC zoqvzyyL0temkdMaocgzUiPj;fAq4E_S#0?WQFpI5?s11W;BfSSV5w7|jovO6XQDO{ z2`8ljlh>Swnp8Y5#vIa2AIn7b)?&0)PzrotUvXsO}4d-4KKy-S!u z3Ut*^UiX%_R;sBQPUDlO!Z&YaJ?TFjAC>qUDL-DZ#Xielk3nWUTu))khZ9f0g9v02M{! z6A@9-UBIqH^z;P0r4Gp)Vg&`bE9?3 zgGBO=R-z7C9Lw!nyfSe`pl%5X$fS!W<@Z%XmJ=@Cn8?ov7e5c9ke3*l88{Ny6iy5q z5!f^;k^cqv%C{rTVE{sQo|p*6@wvd7z*_gt!@L&SBgvx@!#;C)BL6etKx<%sIIupj zUo6MKh&u{7mpzK#l^+hh<0LKV;Yk=TdPiy3csGC2H0INEP4?? z!v~Dj=T%=D>%QdEub8_xS++-zUY#F}--%bx-sDhwcj|wkeXd(tKzcGtC9nvyBt807kC(vp{;4@#{@Q`@NzH$3v4H%a~j$%~@#+X|x% zyPbxwTcM0(n`(TQ7Y`rP(2V=hXR}Wnv29Y(w~|Tnd32q8jzgXLvQ@3ubTh_Qz6O3D zJ?5ee26$y6|E5^HsC6tjp?(~syaZGTDgm3_3Kq1j*W}kN4MgL^nxjgIk8BQi{4G42#0VgNfAL^Y7vB|yyPG_!7zsI`*g<9L6ij|?wx$s z>CPNCOIneEv`{u;YJs!hdZskiHBH2HL&(W<*)y%t&B+H|R)<2YA+WgWfz^M=-GgCZ z(v$tTJn%|@w1=8-N}*H@WqkOEPeh%Qza&*?K;Z3RZ_IiKa%Z^PngW@c#!pg%&^I#z zo0hxpXg(G3D@!XXHwas>s{__D{~~?J{51+kSP=7)r$W-bSOi$g13<(ImSwoR z!f4Kf?TTLzZflI318$6*18xkS18zJA+!!wh`LxWP<}4lypLk6Gq>$mRbT>60&TQ_$ zB(+cAuzM)|R1yD+cly7};UB{`WX!xQBT)S?8>yYkNq*BnM5va$)EuB(;{f_2aRw&* zTR!3zHsWLC^xTL=1}7}DX^hhAIc}ghgJElHmuY4>CA&4ZkEG9Uv~q)o(SuCrY)vJU zti8fne5E*EW^(BVn#f2^q_0inH_{Qdym1_o@#ns6KlaC+lNx25H)Jw>AU_QqK5-L& zCzhIt78&`Exf{m1FKYhf;FS8O#mEC+`4w!VjxCHpX~Q}cf}Gmm3TNS$C=jjOkC#~q zU#9tOG<3Mkd2mHE^cFuYWjTj{MoO4*?}KW~Z7tyda08-mn6)(TB+IxL}(wSHEn5@hmleyuf$IzM2i#;}!y8x^X zSKj>t_fRx&B(#x>=f|9S&*LKG2OGf9N)~3BiCT;5<9S@n#`w?+Hb9n)#QG#^%>eCd zQnoCfotX|cK$h&hPEFLBF`^d{WH!c#Ua$eO`tf&qqSg%3r01qKMu}dq0kZn@cSfSt zA_3)l*%&8!!3M}Wi@&oIwPv994o8LBebT`O$U2w5^AfcdBWR-A27i@s6i}?FQqE;b==8}a0qZep^nIO;#cb8EJ4;kiy)4EWg(~u7u zOPyo5Y(A3$A5AVzLoZZjNd$!GQ+7d<)q?R3G_6ig0(5mJ*$nn=7y zMAPhU@^M6)G*jM<(QUYe;%$$Zy0Gj1QujUGEfS(I6HYxke@QJB?lGtSMm@Xj74Gq< zyFK~H>*7hA`oX07G752@Ohh?NBFZOCLb(u{9(A_~m7KPnf%m*95IzXcpPPYn@~;3X zZ00o*aq_8;yrL9OIGN9*2`3$#bx$^VN5_9x*xlgN|AY~EGQux-N*>s8obj$03-49` z21FSK%1j`3CVvSTWj!jyR{SePE8=qtF&o;ASOUV%P0oU?in$%hwXB;OtZ>TsnRKjO@UM)9ap$-#^S-X z^FEV0k7Vql+#Nz!6?Myk#mVS*!;Nz?pigr$pid(+pidcDm}o$rnw^B=W3pDUBCeno zPb!kZ+pwbdLGMo+llooI)EMW_r8DpCfJ`l7N@6YwMXL(LZ{#JnK=tiHNW4aYIE*~X zr)~r^XD*5+F8S7F#-h%?TrBFrw0;Fx_%V>^@u$`M#IG*0ccmRy8{mTL9nY}Jd5xDz`0D|j>=k%7tEMRC}Y z#x36OZ`lKZR?JOylYTwA$$}f*46d#HBaF2OrgwfTml?|pL!cFAZ6l!_wcq-Hr2k|~ z`fGnl3$&zp$vAMR)hy6zY9ZSe2;TkEaEaEs=V|c98;gInaIE<5|G=;WI7;5B#aPOV z&j%zfOJPi4d^c^0?|z$1mhLB0VKJ`(OQgO{!dTq~W^WvEQ3lNRUGNPs+d9z3=%!D^ z!;ts%iFh^**Co5fXb((YmjbfQDyYcdc@%{DIo}>AK5S)0yj<+{%5cX<*qAxny{*|m z|0iw*^#RhaWTqx{pT~vFBU!ZDj%zALj$r5QZO4sI(*ADdz=HBxz`Azg(j#kvv+~c} zzk&yhj|MPub>x3a0)y1?i&ie@i1*+tD#?9+zM@`;<*4J_hl1t9@)eJ<18KhE5qtjs zldst1;0tQx_oRFU+5gK|bnz8OYu}TvI9mIm_zEBsP8=o1f}25M-m!Q}a`jcfF^AZb zhb!XOaC{6%#XdwUCwkn&FyO!KFEbZ?IR2sSn;?L-XpfSUAYQ45Flpo9B=|}9*Gb<^ zQ(pJxK*+jN|Dpj%UjnviK_K7XF9yXKKRf1a$n6f$Q1JXv?$!V{ge(Fr%EW|{}` zX_#cm*?;{O5~#Z(>IRG2rqmrSLAi0b!fCij)lI@yyd|nXLUpSf;~tjkXOT?tu)96% zZgc8K+G_;`kNrl6KKq)R`EerFu=pD^1kWdTAbh6L)`iwCmsLVqImw?vrQ_w8GCB(t z&Jn$hvv@0adL8#Z!z&*-ej^VL#KH`t?LjS#b zpAoQ7b-}!!2^4aYe-IZ^w`^cfVkP#b-ZSy>;DaS_e`56Za}#A;vx>PxCNC1kPF(g? zvXZkv&}yk0&11#>FqIW!8&c1K>XXCitquCRsBMEWe4Y1q#_Rd8P~a@?%K)k`X7}0Y zZ?RJIKaX{()XAQyPc2We#6|c26P)A6Y@OJ&>RVJEL&eX>s;8@5^>vgPHCg??QL?qd zeLZC3TpW)5c zzK8n?qq6&;SmLr5k>kt+HHP6LO&goxJRKXG5%#|A7-<|&G?S+X zl$8fw(C>tB^HIXc@0uUM);kga=AIr92?w^K+6$w|4>!NthlVEd`spw6TGvLwFSZBP zk~k_6?B9I2k3wgSn8Sb?ZU-E@Hr4Z!)cx0s>G={7g+~dz%(Cj?pw00GD2~l>?IdrG zt0rrXi3^&q4rX9qJ6d<#a$CM33z0rnp1}}D@;aJ(u`g!LY(ByOCzWS7e-4gvo?aE< zi^PGWGZ`22`Yu*Yn9+FFaomGr2-Doag;O(k?W;Uli z-E~A~X=uXnqIZnnLr%lYUNh|`kNDQn?_#h}V7N-rT!jLTCU<}%?fi2u@d&B#LD)A7 z-ueJ<0AKRojQP5=434vEcm?NN(PW;ZL%qm1A&S%edOPbmq zG`Xjn^*8f_HPif}?tWR+!BZc5scVj==k1*1$AtZu;}hHYjeBz}>73&yyUj7V$(v&t z5^1kFE=tdD`v;ick7>u7-|xE5F9ohW+58^1`E`>gwTGfN=qK&Y!l{>^8^RkwrAwOJ zcOu2R+%-6*W^2y8IhoV*CWnd`&kN9&ua&(uYtJ)IJXUzuMX zT2p%!C|S2XZzLDIpsUL(^ODvpQHL3r@?{ciOdmapv2S95 zGoKp%Cq`8ExV|%Tx*@KUlu)KnTCAwud33eB2QXAk)c3bWy1p4QIx~%5bbri%+vvo` zC+y0S_Hp;Q7y<*KjXRX3xjfGU5^dwt{Km)RM-pWnA#lOim7z7x0|v+Od8LWqpUBqj z2uNm9(J}sy6&;U$m)}THdo(M!$>#aAP#Mxwt=|7t^_eAz^{&EdM_{51c9*MlTT zv?tD^n<4>RpWPW)oNeatL7FqfUG1t+~HQ`(vbk zOAdPbni?Rnw+kO}iB1IEX?=*>>I_+VcOLe`Lz&KB zu&(B8)^l!u_IfCbAv4W*u+`1grvtm%r&vtI#&lounhG^BvSC%tP?lLMnTWE|YKhfe z6?!Wg&u^XEr|pcHi``&^VNk;dFi z7R%#T()}ni(1iOFwzw1sbQO+e2D+~g(FBi%;X7A4jaoqUd=GQamL2>)E?8^kmXEk1 zf9`FJuQD9Jf;br+gdrQ-f(m5b)eQ00OFDRz@`27%tLlyf z&RrELUU_IOE|7|OLM8qmLj*SNk#<;nQti5eG)^6!+E`sK0;r)yhOV^CV;8Wbq#WH(egaL<* zkM;`H-uZNJj>dRKEdI~5xj$C9XMDWqZJK?At;lAa#VB){0)fquz_u`bEbr{Y@cyCA za3}mr?S=pBf;W)wla{=SWbkKV05-RSGu+KM4KPP%VHUX-B+-MX4?do4#Yq%r8V)Pi zT;0++95K9|@E)F0Oz_I1?!NHTwuzI=-8Ht8?sM$r=@RzYOWRVjG>LNEKxATjkDqwbaiKdJSH*V3z0-_Mpz$K&S?9n*M<0%kI?Yxj88CkxIC~W z97BolPJnaOuGbApdH+29t#&IS;>Xv>@LRcUjX=YvPLfQ#&a}UsUfv%NZ$ElJ~cU! ziy=jGQUvs~GR~#kQn|wixlhRm8t;J5u=! zjM^c3a4aQ0jAsq{+qQo213qBl9oHRRU-FF1QZR9X*T8N~EDR%2+-x9mC&f#)hW~2I z`XxVBVEC`1 z#ZIH*XM?Y#6@JV~h{G1+@>70649>zI@DPhnDFuPW+*cvzRYi|Q+}&4Z4UkR!w4x^~ z+!vh1=SPZP!r%UY^XN2c_HxbZyD^>u;wENNw~gO8b3 z^aLIklI5=x8h>eY;)my}(TKZMWdeluY0D{Zye?D7V2RLOLn%Oa((|Ig!XQ7+%aY3z z1O7@Ytcb_1#1g}n>pdM$9up9j0V1XK0zoTF3EO z`Ip*y$S{3SdGU+Pv5hIb8BRQM$$Scg-QD5l-7Lp$tG0^gaN{5fe_6}%9!0ItmsyWn zi;%M(ZL{^D_=~K^1!^_ozN9jom-Kq*ptpwun<1YKm-JkcF8nCe!M5Td?kaud-e#m7oJa_tD*yms?M_9eOj|{3bi}I!jvCcuS_RQ(s}H zKf+Dow;aie6g|S~MzWZtLTESS_gdgIe*~T}7BMv&MK|jKJ$#y?xW9VufmPnZt}ZWL zLN8igXWeFq*KbM*cV?UXOG@`0 zIWp8V9E^X_EZcLUZhjH#gV)zE8RAs7KP5|;4PbnU5O|ZtPorG9%q97mY74oJib3PV`b5V8 z7$|cZ&!LX|8FC__84#=-UMYmWY7S9@Q3WiQ@cJ#Pno4%Wcp7>QaFK0F<5oLGXlmnA z^3n2!LmMK_*gX-Lj|ZA8>u%IQ+>a&lCCSS^Y+BLf{67gDlZm>qqOdF%M@F;qKQA$T z)Kj7c9E!AoFPk{Z+wEy1C+AAk18?gE|m@X;HIvnp5P$irI&gHOPx5bscNaQJReJd zxjkC(UD$95Q{~Z`u0(T2Okl;=QPfs^6%V!%$hgS2;m~sGrr2cXf!|oxcvc)E(M0gu zylTZ`7{E!3a8>lXTH&ivCX|SynE1HA)N6|0VwqcPVIOUm9-(e8s)UHH!-j&lfiBkh ztw>-^*xesSgAfU9WVOp0Z)crvXPwDv>7B(o-_AO}1u^YaiDlj}_h3!Wf#1UI1%3e=7BQsj>WU!eOl3Ur%|(( z1#wPfL?xTBk5>=goy1lu2-;t^eWJ*SD_Q$BDj{eWuVXd2GwlWK(&K1#E2Z`94(-zo z+GhyxZv^CZ`U|ee%0E5g9yAEw&eCs^h8vIVko>^)5 z7I^o}G4TGGmbO6nq7$zF(goMLmHZt_m_`JEqW;VfA}qFLX%n3 zomrfey^4#MPG^qnt%yU($$vpt;7rNh#*6t@q(+%ZP+5jEDf@ff%1_PyPnB1nvB{5hiE@jQR?DFc!)H;7BlLSRjIp31t-TbL^XsgOMAG0-N}k4xGJw)W(c^# zZBG3G=;}mg?nkY*Hr2hD$5b2tQCj2#L|vc?-=IPX*Ip2qh|D^JtwOAGF6RG&c^5_8 zofqFOauN;7URmS>UpA;onMX}TF8I*ik^nZLrStxhT4shxhmtq``8di-u`-X-rT6qG zPrdG&px^Q+-{=Y5M!%Fn0ubgRL)s%QaU=j-*79HR1(eVg$eDBHVcv-SE-8tMt6QhcR+MESn4stAven&*V zGcEmAsLsNxc*MPGtJ$cw`SL6sihfV^==Yb6eqRhVne&NqH`PhMW0gx`f=)ud?*oBX zKgore+VP6yMZS}!-rt$`3m|2NoIffL_|*GQ@-G0ZZzaEu{N4L2X65;;7(Sm8&3nu{Bmn`=P zcT;(2**pYn;U3Yzf-Zcvl!b==pJw>%7Ng&{h<=ZPe(wG;AVc3XU zf=K9QAVC~1nGtuTsK}0T_gR!3jjmA> zn)TOcnbv4BO^Kvxjpoi_eQNGL`PxipZ9Z1eZEb8ts3>w;&}~^_@$nyISx~D6l0!jM zHg3*|;Hf+@oppG}X?UbNJp}MX4+}kd=m8Ljs_l%<^{WVNcj|Q?5gBnJ{KRiz_hp_C z3B5jNt*wyVld)bt_%)S}65$9AVz7Z(9VKmU_Qe}?cPdevlhRyyaDPsO^*PtAV!qTu-Z%RNCeTKTR|sG7RuOmPN(2@})#iC%>2p<^L=#`h0CH19tEk;kyJ=^|8bBx?X? zBUFzv)QZX#5UR1<-v%L4V8%`%QGCbU}U*_e5`v&r0euW z6?H3e#)fbV_;-%D=vJ5uJEL3wVrX?*_QnbTy!t6atA|6|=R6mUBW`xdt6J|J)Hi%{ zv*;CYX7Xm}g?T&Tx3gmZK~te^bNC+e?wXrC0dvHxg1Og*wnZy9&dFx>?g0rp4;lJJ z{v2^t{@f7_TWdb+nUX^$hw3gXk_dN%p5e+s*La&l>&L}|=g!R$0S1!R;(!-+2QLb3 zsogIqNZbJO+~G9*Gf1LqKS3J{a)dUfY=!^M({u@|DVc2@3m`JGGs=87fB;Npql`xV zRgnS2gs&FNtqg6Z^JwJ?)`Fogb>9_+e8w;&Wk!t7pIgSzM|w2~byALShUz*NA8m00 zGw zUB?nDS#~zs{Dz4}?5Ad4!JUG?A2qfgHNE!ZA_nX2M@Q#=%uerzlaMu;wj*qF^0#9o zb1F4+_%IwudMB>*cLJO2(42Ec%SX2LHGatUqnt~%Zu_Bu_1cec-3suw&eg(ife>X5 zPyxALI|F(ZKVr0h_)@>8>~ zRQZ{{JTi_Kk$Xee`7HDzcYSKI&}UPslvmz1^MkN)8;KmnOJ24y`T|DD*5sRDb&jBS z@Z1%tuTeY=&#v^qCF^jlb(iv#I>>*Nl>?BDDWykQ0mIZAKrc0hrE3gJxBpjIdO@d5 z(VW^O*@q=N{Xf$QS{^wrhwqo7 zL#;ZWoWEfK9q*Qr)+drR8+-QnDQ&O%{6_coZlFCh>!)-~NVh1qf~(j9>V>ISPMe*1 z1}E|CS#;I5Gfl@WepWluj{97A5-!x&ptE$>NAG=eB?!hw?$jR=g&+o1EPmOWRAx1C zUqX5EN^!FI1-JQ>wNCv*phn^a;FUj!ZxIY6&;T*L@_2fVC)~i2m2ms<`l1YA97&TP zYyH`ix@3R~D{%9gD8FjozX2q?!X;h*PY=5_@d5`70x%dTCdZx zf1t`|`<0m~oh!}&m0z=f1@tmxnez>T6lJKdTUGoGPLBGbH~|SLuD+Ne@eNo4A-l8u z;+LuTV_xyYRy0p&QA6u&ox%LZR&!eR=_>Ae#anf7!bx-!a~9%6Pim99$xEF|>IA3WOWnsM ziA1|5+|&rO6FRJym1WLDE6OlTP0aa12c^ph1%c|8&6^ep?Lj_K<56c}zBRlr;_i)v zUQt>Vg>Q8hKFfa7UIe#MFTIBJ+nsvhZ)}~y#rv#FZeh6r2i8!mvh3Q-3Wp= zAraw(K7%G$13V@}FS>s$l7!_xRJ4E}XW?+m+v&dG<;gOOyhX~ZpT*+3dm_bq#EH4v zBE>rq!gyZeJhX(!I*CbVbWnCaW&Mupi+;#Uhy{P7sGg^Y`_rOEew~EkJTZdRq0J27 zk9v8iNcV1@yytFnmspMjL~?Wk;?%EZrHVHfD@NhUlBUplew%UaNklR_-1?#)Q>L@q zzo_0LML*?-Z=DyFaTDPFut?$qh(GugFomlAP`G1C0YMdXUQ3#~qi)kPP|$tB-DBm> zY1`zsxG$tcqW$xa&D5^cW!>Jlaja7DLcY5fSX{bDvL@cGl<2T#zgi zV#v$hhu|~QnY6`_1ko0!F6D{ykvs%9L4mWjTY)LNIbMVe0cB7qj{-WYoJ&yCpdH|b zn+$>6M8J!>$3g5I>kGbZHH!&90>)UH?DI>}yMgwqri6h8HKl$^X@4DQxZecE#dr({ zO`?J1^S`ih^qazqPA}sib8u^FIHcEG57jH^R&RjnJ?z)}sExwv98RsFvzd!jKKX^N ze%?Hr^8f6Y-^+{NhvA~sZK`AYsCvKcR_~9h_bI>LpL^CTOyzXe17+)40xES4*ni0I zi*SeyaJ+-5qw=9%w88^f+r0WB0j&O|MzdkoFZuJ8!ap8==sjhm9%TV6pGLp;8R*e3 zJLwTtmEP?c-h9`%8zj%5HHCt5@}+vqb?QILh#-5#vH0+5j3^R1UYjF&bUf^?fB;Tl zv{R%teuM792&n~ghY?Vr=2KxZWhO~rtix2A_Yv&Tb|J_Dq#USRv79hO;f~2%$Q;N1 zrEXb4uM?F)XpyPdp3l{MB1KafNQN#xGZK?75UlrZ#y#pM7QfJ~bslq3t0Az+QQ(c@ zZSGrin#bsJNDgZ%M@df%W8zB#US?=o(bRe0OW|i==W3qo?Q3d^B@jT;f7iVv zZ&+8A#}duHRD3{jY6C}d5%0w;S=*k@_3reiWSy}FWoXXA-+-fR&9S_Xy6c_#Kaqgq z?7~?5l3i*J7ToOb8FDWE33Z19k;I&gcHE08sB>RY$#q6cCYOJ>A!p$n{a0;$Bp!Sc zz9}BN^jLh-r9|Ag^zCrRHFznvSFcf1Ai;L5-4ekD;WolKAB*Q_#fP1yJH+^?VEi;H ztAeplzQJ<%25gL&e7!oL2PW`TAy14T`4RXt6F65m^?XkQF}K|hdr{#wslyUX6=NCg zZC^^)54#7#?$OZ7a(8NexjP|u?mXh}5$@Jf3P{PTnpeEC_>hOaBO$^d4O-!&@38Bk zZY0UF0mLQ=ySE1`kPpIcG#Lr4uDV_yfvRiLYBXr9@nBti4l5D!Rw8t0&b_*2bN6?3 zuM`5^uI}o-`rfeAkIZESpTXdt41~(Od57!v1hCTo3`?lUUWp08cy3lCo@EvjKT(~; zT>(7q;`anAns;WC9M3=V%0%$9&cYv&8`>0c%W~Z)5~N=BRR{No5+~q!871`0i=-BB z5}V)*dcFkRP(=v zYAARjeqrizLri7db6s-br#T00C9572tfd|l8RCI+?X7F7l$Jfgqp5u8!IVPZCBMSx zJvRRyYlu?}dy*tO9lJAbmb@yRsOoH?1L3a$m-q>l8>rN?*I*($HcQ?IG8Mt(j z8BLL&w!57&nzOs7<$kej8IAYr7B~5W|8tyx;=60dMH3Tmk0$P{(P;a?P>k%T z`ds+XOVPwVr7d+9yQn;{dsJf5;LOVtRhMKYZ=|C0RGk`eM^$Oe{v3?Xc~xvGezJ$J z!M^UAMC|NG53Htt`(d2l zj3rP`5I7Cmfi#i5FxGmHpdoSV#O=~VZV?5O zJg>0gJgCUDqP!J#1yD~7pLaT-%4S|Dt@IUEN4ZQ=A3oAQSg`%Pmin*M*g>jR!B2s8 zdy7|bEc!?HFYO)c)hpe|)Vl z>P{|9OvrklcG68yWpZ9uJ48qJ+MyG#oq>r7*^0t1-lWWZP#r>*G|?Wk(J^mHbK4j#=QwfGHvJNM;XM_kmW7 zqe21BTuw^SpiV#=&|qr!KpWAYreWp-p^aZ&>cNZmE3~oVdmj>Q%(N!bXk$8W$vWD2 z53~U+u`)gm&~gGIpp6xFy1iu+PGJT1Qw-EWmQaQMd053;=xJ{Ww)pEj@GB|7`!k$B z$%b`J-a8VU4sBk)r%p)=O#SOx$zxkeJF)hB63mOD2U_;lH<(7t!J=g9C$>7lA{~Vn z4F|K%-A-f|MjrQRZ)v?>WYvP?E#LJwC&+-(JB-)uo^&ng(U?Q_8CEyFrn$T&KSf>E zbhnQ)ZE*_Ju~w9SB%r|R#Kn0Rts%rlC*HnxDMiz$lE)oZ$7;n4gA32ngmANm!fk}z zSD$l_ormG)k|qXupbKqxZA^FC(7(>Z!Ph=#bc{J)y8$aZ)(-US?NUA^qZHd=o?u>lD2p4iCV$$?!Kq z#Za{F3;sx53lz6g{6h;2;K+{ZS9~rY1`nYdoe1{pH0&(+4y7fzaB+k{xKn)cgI<;G zK1&f9L6AZC3TJ`7zevPC=YikxfRwxNUMf3_>%_#+1d#~eI<)1`wy5(|E4CP**$3S( z&vAb*z1X3b+;2(*Z?wYQOIWtbSw3o697Kvbi#5gT>r~$jP{*r_pqmqq)XnLclt)2z z;08{-Nbvm6G~mZ5;SZRJJg&nVcFNaiJT}~KsxLYi&^aK;hPy@++g8_ep6P>r-J0>LU+{d?!=nZWXa3y zXJKkyw|sAf{o!k&+ZIaxO0WD&hqk2iws~r^p7*u5mx{luKDTYS?SC|WPhs+5)JxI$ z_4uA{t@=pah|KB~CvB8e$ybUPjM9Hs=CrMczr9{x6YK6Tgsl?V`?2nFyuI)dvd=V4 zpckjUS=0FfoNrx6X4NO_Is(ppp8-@VR+MX^=n6S66FM1@v>uBKI+4)4>~CBmT$Ojh zulPl)wFK;zH!e^A&x9Zi+3eikL@S`5T`FA_G&Ujyl0FW0W5ocO;4kLR1tCxC8l8W=C{ISq}A?>sa?o!tN)|*BJyg(C1b1`mG$S zIZV}sz)I)-zp?45YLhNGrwRefN6(6eCa-wd3$P^T3{nRwwM^RhSMdA2#Ls+JecJJE!NJr&fmpm=lkOc^G2@6*ejh$4|#05Ea&{>NDmaMPVU- zrTItM(t|uCzqd%xqEC_FEB?>A-oR(!u zZ+lHv{|-xsQ#M!sN-;F+%|6qe3mHN$T^gO}bbWv3KUv zBvvb9sLqNc_dnnbQ?(TIVrccNp5)v>1D*JpeydKMKQ~AO(vQ=gOr#c`#{-vm4@lRQ z>c@Y;y^SxxGi3u#!yz_DW$VX!W$Wd*rS(m{WM`EXzB{N@E-T$w`*C-FDrL!KYNzUa zuRobpEK242?W1M>3JDeNTzt5Xr+(m<2X>!Nj`<-W%>IRCcbBIsJ-J`$oJyo7{zpRN z|C_q;Z*#cu`W*scavHUOEy}rYATV>3%(Id{BS*>9JN`}V(+jC_D(mKdMF+SGPiFbV zj``rPY@m6h@IskG;RMlJPmniYOZe^$+h2Lc;RVJH_c6!(DkQT1#b`@ijvLt_wH z;r!}{>pX_?M|{il266tstep*f)a8}$NixBJ(f^>qMvdFFjdsA44K}q*iERcZFwq3G zf+QL(YmjxTwptU#3PDXG{5wqGZrg3U?e5*%-ra7ucl)y4rL`}X_g7I~&iw3c1;sjR|IeU?b3`VGlW=)HY~`}Hv6BsJFji5h?6*ZA)_HR_ZdAYJesQe$Y2 z;Zs2q5tLJLHyN| zA9XmMvkhnp6CQ(8&<1`nsB{+TyfyhEi$MGFm^SAPSzCaCO?h(kk9>ijqQQ~JuGEY+ zZRT0kjM?(_E7~uo;4c8U{(%wMMs&pATITP&Va@#%j<|1F7b=}w41F5N>wn^sPsgkgn^ zLkb{}+8tLkQM(N9oS(09g+?ePYM}umB#(^Veqx^_1?!{Ig2@pOka%^4L9UX;Cr-$I zohGBB&ZtgWCZZetpx_1DWLl`X0!ghJSpFS_t1Y#8KS4;3+RJ!&J^Xb;=7ypf}F;Ld%mKgmH{sUBmjnm&^(YrMFZiuAmga_= zsWLdAdJ(1hpO8DGr>(rLaK7<-K`#HNyu2 zZd@}EODyvB5)rtuA=6m2f)7Cc)-||)Q^gj_QKhcqshi$F*1#l%^7*WeX-`k)%j?I}!LiQSDM6&08nk?z*@Ef`h48 z>v93d>Do;{aWxlB)E8hW%_U_ggwpD`w+f1J=2iVrEb)7T8v}le=vZt|gCoCo5?+X_ z-dF<3Cb8&z?OqxZU7yylec09~?gz{d!y-NCyHl&i;(lX|^LNWR`zdm#7B#x}^wb@ykxA+wy-?o7TG!XRH&w+F#r09wP}D{U^g3Sy zEj@t6-0REhEb~in8DJ>I@gzRa#HSMn=nm(xGzz5qF_jQ6OXq(B6L2)(aY;FIyDmJSj zzTfC^I^qmL{H^E=BqC0lkh|=}BeXsAKq6AS%m3aWQUx*omjpts}Dd zw<>O=+=N855DO~ez!FimZk@q8EjT2XBqUAw(1mdM&;`ML=yDxvjkeXu%M94yTgi>N zbHMk&Ao#v@PWT1|Um(ru5I9SdW7vzKxBDSTq7kPLA=4%YYWF`YX7Yt?j^KIWMQM0e zrp|!12G6GeM;1IAwVuI2JL!>Bsgp_n%n!ujI*Wuy?%N<;>X#W$9#1QYbq#0a@39KZ z$c&}PjF0{eeC6w9qT55-N3vwH9fYO#?}bm%xkmRSv5#QlQdhhV6Bm-o@Z@g(qR<1= z(P+!3@1R=J=f&;cR_3*V3bl1sZGL4lRax?5B4>m80zI?w*NdKU!CB*fMrWR^TRC4l z_wY|3crbA97ShN+TsCOjTO=6HBFW)E9qrTrC z_1zlvFX5){3L`GvTidZGFZ}TcgP4gLrCtZlRT2{)Read0PAZznpkcHAZEo6L^ZV8{ zi}gqYle`9UDxH{!R_0+?yNf6hpo7+b~~5a97=&F;paz?b02Yq8VKU||zj=)}JRWwB|v zmIqe&V_F#m9l1`gT@_1smHiPD0?2g7D1@6bR$I*G#pa@`VxfAXC@b(MP0M94V@>B5 zk&FFGqAbo>Ruz`lde)Rx36)|;C4Yo(sGhCZtEryh)Wa_0YOkd{Hpem$ZZ7=c8wEp> z|K0(oQlOKh{~eb&=?sr6!y+=oI_HJxqTTa6!qBwm2sukd^AJJ`*I#(0eXWhge{Z9S zbiR@2EZiV;OaKM`PD~VkA?lu?dl_Q)qlF@N4HYw$=P}ERp)B{Nxdk{2+Qzk#X||6- zd)&Z{gxY#{6&sx1Y5uu`S4b=d#`6Z<9^f(eZ#fyw)R5@z1t)Arm z6ZnDszVQdAyH)jQ=A16i?*fws$-evolw{ntk6z6_B{J#-&$9vu;4`aDOa)9%sI02l z`d|>tP4%ch5+7mxi6y6pzuw+Ax#>yGsz0HI9|@MS`V6guPU)#!TWG;p2S!*??7e}2gwScqc1CzChr8nG>=@h=!P}pOy?IF_=`ln@#{BR|c@)!Ef5Na(`+*UxU5I_&;cjJXm75kZbcT?q0 zdF%b@z<2LFr0pXpG37tCtuXo2Bf!kve_QGoJPbbXa6%|0oe~1QZ*VTz;9TrDADPNM zip+hTo1d1_!hEMC%MmT@lH1C*DhN$_AF#HzoGh4m1@(sosGa+)xoULRZE5?W+fq-^ z`s^h>V-ChzX9VL9mviR{Uy&=-v>F|zoIh()Q4LF+KbWd54o!7%cO15h-pIOu-MQu|0f=5#4_ z)Q-rg^=|AHrtbBz$7L$HI~v}qNsQM-^q72TzqX1spp@bLorljQ3L(km4Xx^gF%9IyE02r*=MbLbSWz5G`dYZyc`QRYHB z^s{&s5?B)gSY z@LF4YfJtN7p4J}&TkI8p=yX3vjx@dl!yB{`qRxohv=qvHyy{#Q=F=?BekZ5b!88rU zUkz<_*MVLI^FJMH#ajalp#s7Uv?;)^<fpRO8?Gv&&f)j8u)rq`%q`h)Z#~nrKUlDbbi(T?$~A7{#N~MEy8hC{7dXl zzFLYh;V<|9Q@4eEZ0!=h2(!~Fo zo7V!(4|E7?Z9p$lbz`^EtupCWEN9S4p=?oasZiaeiQaa#%e+V3=b&>etP*z)Ht2G> z&$^1bYrWJ`cMfz>QKIAlbJUw)6QQiRL1UMOaO?Z6Ws`M@ChA*Z%LrS(&oIKq$$dHI z$XY>>@E)g2rXKMJ0vPQU$8W;c|5-0STQnZwN8aA{J@o>#-EjS)_ z@_!>;Z^nAANr&RxK?B#<>jycqiAyDwN*RrQx$@0{QYw+I%c}57XBX7PcWSO&uO2Nv z?5z>^L>5pM%UepFyHZzh1Sx|__Yo3vX>35W(&!aqDos`K>hpUUDyO_V0*?tjaD0_O@Oo8DyJpVh-Uewxj?5=6NgEby!=g*jxQVLO;O z$j6t_fWP+8#VPG!4Q_QZDq5h{oR)1Ohh);WWgP`&&L;cJXH^ORWv8mjRQo_>e~<#^ zKoNdyzZW_2{)B}Ar`{YWZgLh+20s*WJ`#S%S$qXA4en+p)z>1d)ZHULw|L*-6-o&5t@GUZ(Y0-?l`C0*P{!L*SGBR71-28w|g*hFlVk&TC$L_F4 z(l}1i%->HV&RgGA{J;vXFuuufp_5qLaK+|UrUB{`^zk_PHvM3xG|rKKdA^-dy_lH0wntX!;{0Rt-AX8pe);AOqw2bQ&YJzxV&W3E`l`-A^RPMv@WIgGGPVLwf& z!X3j+*=w}SKHfpLn}Ge8^|7PyH|6 zjM$QN_@MygVa39H0w8k5hb!)jM+5ix^inz2z)hF4NPdY0`GE)%HV^&{KXsFF?z0Yh zV_cW|8daQQzi-MG&4s6AiO(oyZ(SUJxFq@c`~Ahi{g@d0;`+`G?T`M08Bu`Ziw7p@ zOL`=B5fc@|?#(!ids4?OC(#WAx6IYdAiuH0?r9;f>CeXQb^ESHztqsW_WDHSYNk^= zgp%H`4#it6K&QG4QD zW1*g5bUbIJhbEA|B!Y9ch+@nFRou=vJsZ_%i%f%FNd6Jilkd5^ucpIlHkzm$p8P3k z@;ETOZv0ocS#mER^qRj{n!rG40!?tdU`?xuQ11`owFGYIxG{p~J$Rgl_uX4NuB~s~ z05QaE8v34k-1GQnvGHo0-`8AHALkwh&$SC{h6@yD-T-9 z!;i_`SKq+;Gi_s9zM*8PRFg4+rk3Uxj-ev65iUEJu#{s{x(WU>RDHBLO zXwH^szGPlx^VR6Slb*6z>xo#R@?E}QS@pWj+U?@gnfaPCH!>c9Z(e&NTg<9P9EHoy zx^*RSC#J^Bu8G7eI~$3AS|2ar7Ext9Ui^(4;w59<;wOAMVe_=wpQmKURBw*wkdX84+==yk|Dqixh%utmc-I9Op{SojN020Ev53Ml*v!Y8tat|t70Pj|dIjTir&Tl^h= z7LR1l;vZAG4$B_9hClQp8lMz^C$^WwCzY<96kuwGM1H}=p2;`5lS&&}ry$Zz9ycXk zwl3ywPALe3-wuq<>Cv%oL+hmC&Qv~5Er?MvrI_eX#hmaJwhSe@9U)9QUveVL4hOgm zxs^{PL4E>7(S^b2!rHtBuH$sh4{`%+QgPcu@u6^y&c3VMp&b{{6ZS%8UV<_#JgId4 zN8^()fG;L-2-(I@Dsv|V=iQ0F_HnWAGLOqN4!A<3voGK2{t`gMFY#rask}8qh9g$x z(OrLZ&SGuwVxu-A5kL=MI-Lgy4PQX;V$#LAqVA;P)K_>Bys2~Tq#}VuMReYkzWgay zHr}-)3;Q#+t&P|}ZC{PwEX1DT1u(?F{IZU4W9#d9pTV!^@>e;2nn?UzTteJTc#W5y zR>crh+#7|GzeFZi{JerkZwx2r@1UZH@w^>#f6HPkvOQszCd$K8g>h_;6J3Lbc8@)} zMD=^2RZ7y8gC`uSzm&X*`os5>&VQlz7X$PyGYH#q>%Mpl^>gAg{~o}8`=b)UF}PBs z$6xWu0#uG|pJ&;u4?fA}`t?jIn+uVaD|K$!(^vcq94Kd%2Nj@M8?O-JX`i z1gqaDRMr?Oo7^5E%;kjkk3aTk!I1W{OvT|$#nY*{7tfGtC)q@m$sa+61QrQ`S^5>? z#e8pm)|ccxf35So-p75s)$G-~?|Sl`E|ryc&MzwPL~5N*2K}Q0wewF>^t9f5BT-@+ z+}D#YAs#fuCss8gLe7krRB(N@*_-XpGHqi)7vnD-AIBHW*sb;PYS!eCcyR@{DkbI@ zKS{3e=J`h{gOii+&biyvNUzu1aw&HPY|{v&Sjw8Y4}R6L8v{)yyNd}B9TfgNL${{k zTfjI8)0-^(3Z@U?*3$X=d;cx@uN(<8ZRm+-FKN5k!;K%rAB7pbvZTAeBg9?Yj6TXH z3lHg>w}`R#-%?7(@Eh~-F9-Uqg7UALyAe3&^p6R`?caK*XCkY_!@~i*o5pop=%#x0 z)%!e*JD8Hmq`^mPCOP9C%}`%n+pybGd%;TJ^xGle$kY0f<;JAD{Sn|v`|lX_*yHuT z&GY|x?dhPt)>(>k(PQ<5Il&zKEvw=<&R^Z<+M8;Rug!0tz;B?v(%rH=RnU3xytiXN zZM(o-hg2CRrbghruW_bBER@I3sM&VnPOiIcrF&lIVfJHd1HJ35zq6H)PeOk0e~2C| zgd?oYn@!-T-XDN^D>Ju~8P;Q8_J?&rdL~ovv-8Xyn()z^9H;AlYG_9ze|XHG^B8Z? z%p+rQ&i?aP6=4&6g22O-OGd8=Tn5Ni(%Vz&ZQBk;kn9)Ir)was5vAD=?`;!z7rF3l?5zFcCQe9A>0e_!pkFYvnDKwyVExblO>@#A2B z?|*v9T#voOqnD8xcJOS&)}i*m+2A-`QjnKoFo!vukSMtugilo8ot!hz4Cm zox)MEJhFY^Apz`BiF9v4?-6sH9v#I-*aVGT-;fBbF5=BwS4TTOp?DoJ;-Sal7dcC> zsrOXJCBthMRx?4k-C8~WC0b;~RFB;{uwEWS&H+EJMaCIg&mnav5g5&S>ENk%;L#MUUle&P!VUFma8)fG5|_B7jj%x_JBZY~S(qh@*VnbvKIO z^rYxGM**S=kMXFm5}$5tU5D6$|804$U4E!Q_~ebJdj_pbR5?En#9fv`P<=XnF%P8TK(uBdmo-#;6#K(#Jw zyoBvTG;F(&0aId*C1K0?h z=`&;9ybVZW&eCf^?VVZkw}oynf6;;Y6EfL65I|)arwiA|=dSH*l*&JEoxB#;e6~Iw zSeB@^DQ!KD@LJ^!ca1-v6EpKkKuO3qUFpl)%!KA88(N=@=Di;K?$mg6U0>d_%x~*) zOa$hR>$e7=;K!(MX!}arho+qFk21f)+s}%?df}K~XqPm601D|}%ra@%zdY@99n(p5 z;<~Q&9L?p4o#f^-jE94xNJ^a)PzJ$Lg>?wD6zFrPc$4f8?n}% zNZ^TL9Va6Xl4MLvG4|NL}H5e%{4KC9DH+mZPBw%*CLj5=lkb7Pj>Ra0Z4_S%Y0?H%qHb&8_P3P zrn8;rSGdJh9T)K$j1QmS7Kb{9#xI)SmS~cg=ucZW z#%=}C#M$Ujk&lnybTnS`cp8XYx%W!SC+3D^>^wl9@iM$w>8h>M$=c#zkCD{USw%9)1^%)^TGJP_#R&z^|!22txvHN+C2wyuS3tk6Of zx(rFrM|9*6BZdPL@+uQjBLcxtHaEm;wrEr~oa!xq*1Tj>6Wxv&m>OFiah8zr1EAR* zpet#95N=eXlE^H`h$kP3-n702t${`#>oYRL7H>=ZTGyBau|@mZ_j<@zXFJ0NdTX0x zzx+gYJ* zQVI`o&_wJ}r|TuIQ*iSRxy|Xhjh&b?8)PUc?Mxx{vA8d1e~s+ z+z(*Ia15Cr4+Jehg&Vkt+NdXrQmLnrI%9-`t#5r>e1R?m2*x(;&Ax_s$qB5T-Ykk& zMcixR?ZM77`RzZ9&nrnh+%G37JrgMz`2*6#kjPW4i1fa6QX*gklLMCE#rnB{pbk22 z;l3KGlD53ldcLg~|7SY7B&k~dqMP@akLJ-k^t{C~1~`%>%d;r_l(-JYF!nS6@pJAZ z)7-oQecFm%jhwIP`6XowkZreD{5dPDHg689#1L!$1`Y$8xIfy&u~yR-KPR7ShA8_+ zX`m@GdM(FN%`2>!s@y!NovPF1Zd%8eXZXL-8`6HuZv8@z%&v#ls~FTkR}B)S*0(a1 z%D4J%FP!$UGugKgo{X~-~rmcwxIWgj`M zpt5Q5H~3{EIBV7i0hYi^$N94k`;fM=)TL9+(J!KmY|FE`0>zsSGG9909Q~}2X@h08 zevs9$eY2rKP^Calr|AHdH0?Gd5SAJOC@&eR4LzTy#;vMxhicqr1=Yh{h8d)W_9~>ApP9W8Pe}jWga-vt9W_V zvd9H$TfPBe5L8uz2R8!-)p$^)hdIl~dguX>JUeYhw0wG1!2rCpey*6db71|PO0S>8 z4`QJ?GR&vhPqTc^XZgIvx8utX6%9L~1(tg7QWjV#8CYQbLoCOeUXI|0EwUBxq*Omf zZN{&&)|m?vk39V$>nuaJU)MU5$%?Iw(~(3+p1%q*iwu=6zI#Q}Jo1uWXSNiv5wK-7 zN_Z`D>x1sufwi_F7rgo~O33Wf+C#jDDc$_C;JGf7*(%5vv{#U}7Ze)(qTaY%?Jd`5 z(w(9xKBAPh3ElH?FvVjd>nPK-%E#l^KsKM5XuZBdZrBO+y=3_V%Dc=O;=_L4n$;vM zMddOqg&w}*6M_AFsKH8O#!*%EhC2VUO59egS`S+>p=z^uL{@Y95Xw-2eJb|?&`1-3 zomSBBb=yGY=^8^?6AW{hC zZhwDc>t42L1=?34;7*@*eY^%?w{9FeOwOdzLBzF5PmO4Kzki82Q1c|nR5Rt%0`Aw5 zDVd3g7nN4`f~O;-vNdX3(Wi|O=TR#-<-Z6 z^#F0Scy$07rTKh+rOL4Bwt(d^;zk}=d-Kg$dMzcY4~q{&J&*hAlZqppH{Xo7VJr}y z)!Z7i%%nH1%dWOW$wO6#)*fb69sx{ugG*Ks6mel-L|XRetAYhIwr-u0 zDBF(AH6#_|-C)-HY~*)R{H3lXmb{+ex1=X>mbE^)MTE~(H4h^k{1zj+nbDSQh{dsPx;Q?A-xgYXj{~vUQcQlSBysZ@98f5w=YP|TIp~f2 zUPDprg2z;ULu*CFq(sR->zU}w(Zr+zRASREwQb8?ED15z4a|1%b_C(Ad}|mXA+Pxv zW*E8hD4$b$?^T}ZMPw)*p~pr;SZDN0`gqXFu`@#)ZrTKwk6_gg`fE?NTN!pwRK)?e zrov5d~gn#T%OsTORR!5MRQ?Ydr4PmzNS9=c~5c%Mdj5Fuj~}nYoDMJU0qo_Nj*~ zsh!HcSsyPK1I=NZO1;>?v>noFvaRjyR`H?cVsh_N_o&3{pJg{-l4Q(#vnoH#;pyCq zNwKLEfsK$O@NWXVg zLNVr+ssqpI{q`#TPOsK)<2X|BqcpHPWi$jeTRJyrUD}u1B|g*yb9!W1b9!WUo+iBn zb9*EPYP*;Hw1=T;F8EbZ(Ye5HE#!j1^5!(^!CvX(avRkk@2k=8UA2PJ72Z7XetXow z5Cg4R{=$|{V*{N!=lqQPp!pfeY8x~^BXc_D&5tlZ>4T7>@H8K$T@v6oI@Ft=bIgXi zeZjeALmx)wLdNpubikVqrC*oZ0fWqq2AOG$TM}#V_9lZ#i+&qtrl-m8_d%hWbOXM= zVVfX#N!FAhjI5L}vWgF7mk2P<=u;}B#oTg9fZu7C_)FUMKHjWR<4!NL^a+-E+J#!@ z+r8Cq#=%||MUsI9kO?tzMu(>pPp*K-u*QfDT>$rIp_1d2FIogrhA`8k7UWBOg zBD()ydU}Zs&eHYdLaFMjEmrVN{<6H!Tb3Uz6~QkbwxM%P04@2C^i~?bO@w=VNrg;M zoW-|t-zfFt^u8)9N1C*+FEJJs5?zn{kstaI;Kc0*B*0X12}cyd_U5GGkXjsMM?B8jQ_l$BO)C)^{( z0g5ISUWE`s2WlRnW@;Hr%|EyuB>Cj&KGWrE|2<5@jStIhTlcdSyyqP^G z`DoWxw?=`CM`e9=iN7AM3hyceM^xz&m`X5Zlov%2YYeD|wsc*RIAmlwr2*0G6u* zVmwFb!{{Tl`i4^AJ9J5l#WW|cQsK+K_-Vubv`vu6d~VaTE+#Pd;C4Tq+pg`Vm#ahK zJp=73zK!l1H0@CjK4Cr3bcyDtcd4jSmd^6np0HzZrNI7ZF{AP^#+$|yRb?A!q069VX9Wk%hGoue*TVvR5DOe=H!~Xt)q`^D z0UMI098^#-kNXZn1$_t(nhndG+qj1c1GC|CTx-#rji@1n%| z4>9yXocJ6Qv_bv5(k4g;207TFVxAB%2s^CtK@((|a~t=tV_<@O#&0cp6VxQYo1(R` zCA)i?l$jYM%E26G^j=MzCj)qh1Cf8*$QK{VF0pwbX`7KQ%jRHOK8O&%twg3sG5aIZ?u z!pqvOI_<%STwBvU7g{xMQ>}<3e4rOzWh?YyImM=3l_RTY2m?w?wUaHA=w8@pb-MW- zXUyBGP`9TBQ3Q!3SKP2XBa&=HB#}Jw)`K5GR=I``vww>?GF*28vDsXHuxJ>kxXze2 zrPsOOBEBQ9paoWjEtVk|Yc*>alUoSi6>v*_l_iyAMMK5^UVb)=wwcozs)|NUOP+B)@ZH+a@f$y@V1vyVV}u?=ry6>FniN&f1wYJvY#6 zby!WCq~@*JP0FG}-Az9ElDwsTJ}n4ia(gq^y!P(1}B5cfzEr zR|h)5qRL2?`&F+eSxQ$vxD&#VL7gzkasU$hH8<9YaW-ux+)c0aJ0$VintxFr>#B1* zhs-e-DJL!7oqaxn_~L6fw&iw?4>gkSvifFua{*-McU+xCrJ@f$S_?tcvI&l0IMb4= z%x7-A0~MPa9jIi1#hQ@>k=3+n8FYQ{kY{r{kwK76mcM+Z8QgQcq16Ltq-sdZuyf>`FIu!)>mlO=>Vk#jH(>%$d;@I)OL z>505j{Y*3Y2~mg+pN*}`Txd8m2wSbmK{#WXb0OuSYlf&?XE?JX7a|#)*{%w%Gn~on zq=mR@%aYCRB@1z_6N7NZGUs+;0CA0|c%3*0;u_9u8t6n0;;LRx{yqnJ9XSYREOTxr z1`yZ7854o0PqWrc1a34D_;tgXmRtz=LNJtBvn1KQ>4@b(Y|x=?vy{%g z40h`X)7Vmlgkr-S+vbaB&blPi(IcwaLvB6kyqt|1KiT9}+v;iP3t=>Sd5jKKahsI) z(ydIpB!d}mDUD`4Mw3)!9(h&K&#S1Bumd)V3?{s2UlE9Xf#EE~G;#d%9%3Rf%(a@V z6MgAUL@&wb3o5_#h)q!Ux&qux)c4R6>BOtRgqqhfT`_#vVPCB)wqehut6-;^_cjI| zS*31uMBoO}ym=r{U#<;|J#L^NReD7<;^H*4fO645!3S-EnqL!0$?&W*#@53CySIbY z|MOoQtSuBeUU>H+6bHJHra!iigTUhu6$-!--?qoHHQ7O9WT-l z)~PK;9Gp!n!gl(4j?s$OHDLP9!5Q8|357#v0-NRbojWM_#|cz8ONTBz&sjPtZ{g%T z-BL84{ppjyHDsKnv9Fd$lFr@S2Ua#;@Px6$;eK@x3WLdtzopO(;9Z4(ZX zaF^uxX+!*@FGTX@+l#TCW#Qf%}zO_VJA zkQg<_(tCAu+&sNRSPGSWmzQ?kD5~@iiA_a7x0>%Ov)uH+WIQxC&3EaD>)sL8DauN< z#vZ5nc8({P-g_bSW)3p4kCZp*s}7r+8$;Qx>V&A0UCKavV7K% zRL->1qLhoR9UXFNch2x;#tH&h)bpAEF+w{avH5Q(EFp`=@#{GksKm`)Rv!ZhMtZ8uSIb%jC+z z**$vD`F=s$PqO?oxhuG9<@Efcpx1fwJgyfyJu(2%6ySGlVxhD2<^Zk@@-|=h9zFxw?;#Dca`VtwXDZ08 zEDq}BHdCkdmW$gQ)ooK^gz_vM=JXt;y<$s)8XiRIbozN@${Mcjs{ffiQO zHsF8}?;bq`m@x1j3}Z*r;I3|T-=9CryRT%;-vq8j^3e`0KM>4g3b2mm{!wi~-iGA| zO7k|);Z|-8dxp~ae+gm|AumrjH%jIXjEy?0oUSj^D}RiOKPlLH_(gwt(M6f2jOUlg z?fxC}TJB9Zmg(kUoAQWN#R@ng!v{fKys=cM>w$@hkHG<08nxrNEKyICMtnAGc6w%l zDv0pA92h&YBRU66P2H{YEH418WM9a$+L`CkdX>? z?=bm4KAWzz_a~Y5%_bxgpI27j+E^OGE?_Ti-gpv_5Y~Bz$|>{C#FvlOCVJ%)`GMhSs~gh$6@w7Uiu2>Bc!- zS5R*xURS1@=L%ilP{5p78=WhMH^j%)W3>N76Cb#q=O#rn1aG3d)VoP{6CoU(r4#ZX z@7GXgByUaR#F`vQKL8BEpT}1Z;r?QD)Vt&Vrp!rvh17a6-q!8h9Kol@%KQc* zt1P%hxtC7tr=|zbNh!+yr-bAPM=NsF-`Y;X@wP0amde)2A;P@Vgx?ol~i z2LZX-(iKiMw~kWK{25YEpVzfDlBmghp6;7ACjPphKKz2S;BUQB zbeZeuYOv9LE%}GB)=ux=rST;apN@AExk1S%zwTcez6rs&=j)@~0!kUKy_9-E_g1p# zXB5YB-Jhf=bf72?pcF;Ib!AS^3Bk)H7$KlZ-NbjFAB67(4Hw@bz%X4ZPy@NBb$T|F z0_R2q6k_=4etAmE*JS%!S-@j%) ze@cCc3Cw3KZ)F4iyeyE1z>DVzd>8%GrvVd_7G)ZXJpXoTts#8eS+Jj}ah8q;>GPs_ zui?V_Um6m(1sYY!fAA?{mxv>yR!m3)W<APv|Ult1S5Tq&ahLiqG&7y+CCUce*- z^XM|!$1x9Zsy%Hp!+%rOf$$F8S+B%eWy!L7k2z2F19h&sr9P{!5iw{0(obNo01ruB z!51|dO#O-!YdrN6o~Xb4YA$uAnt6fWsFwf1;}UK+?=klQJZ!;B%?028dwl2+c;$Wz z#!_3V=b7dDy*nglIsD(EH$3DhuAZVgHRFt?S&oJXj@h(|k4>>4Pq-u+;qZTGwm&nP zIhbybx`G#6?YDPhm1>=n)#}~W>iuffgHHa?e~lQ)!E}$FG#% zt{=Osd+VIg_*+WmeWH8)oR5y5QabN4j4-)(yI$)c9za$I1Q(uXP+s}=pmOu==w{^6S8jcnI)@V(U=-7igRX zD-aMO)5b0{7gJU7J4%?!y?k2fbT;xyP;(Ycn1Lp=gVW> zGA>kk*-idwT~4Tme0bdI{5coHxO=X!N(lH^{O_8Lw+h>J1xGM| zb{0Ot@FU^pJLdUa3EIHbl^VLjZAsPt#@mzVfV!e{t6(u*(RRHh>Geg=c)H|gGoM@5 zs-t|}Qb&{>dg^tDQ?OfkQ-2QAkE9lO(jJ_q*O4xO%KOej-8sgWhj;m#6V4mr(QT#H zr6L1D71uW-xMx%Sed<;5kaVv~iu_)k%<7e0&)b56OL3*7%xd9SyJWpUV?gSoSG=iL z@6nk)_3ETOI8A5h((|@vc!1ip5YV{g9sVoE9uwSz4?{)bYk_b!L-bot@V>))RvbR1 zDHdM|EA3Vc?nZop-9nW-RjhE+UwpbTznW0-rQ*N=+ z_-?@qc%*3RhmvzL{tNJSY3o{y)%ZB;Cbe=vUP(MiDlu9P<)_w=x+I#o0i*WyS}&=M zBt#PvdB^3$f&A3-yz^P)NuT#CKM+`+(_41!*5{(+OEiic>4 zF8Nev4cU$AyzWt*jw;IKP@Q+2o`0Z%`qmwyI=Cb=vhxv-j(ndl4Xs=7YysIhnkGBn zwp4jcGP1KbLv|L~huxkZgaNwKO>(UDXoF98Cd7+JPl#7v#HH=aCdA8zyBkKm6&?CD-cl2)}S$R3g5&6yXIIJ^&x@#Q%!A}uo*2Bc+Y(TBBh zFsBW_1yP8D=@z^fuLXO~kd8SmA{*&uf*;n*;d3>^+J_MM1MyzGX6)G~2y8XoF>~uvqD5 z{Z**SraoZB;{5L~Y*1^3&r?~~*={wEhlFe&xW-x7$;+?(GuAlUd0*df&h_2QXJ1~3 zCT`Xx6`^N}`$DYedw4g*OxO$j`ag_dllB z_fb||lKmPQnZfIuMO>n(2HrR$?R3b(Q_5LT$Wt_q-(5cLAZdfs`4%@WX>R1Li*1F2 zbS+4lEeH8}#98o)eXTs=6~Bb5(EbWv9Yc*DaaSj%v*(3Wj$I$=Jeo&ADo|j8mUR*= zUUz!FMw4=fDCaiPJ#rQ0eB_9&b4tKxXK^c^CnSphnNf)X;t-9sUJ?zz>Li-f*+h*= z4A^T#+`|YOx-b+)u~s_gVv}1YlBo^{ZxB-57jb({Q7ItXQSph#4pNP5}qocM(N9~Q~ArX(>8+Ccv7)g}f zR;T2bjXr4qK-})8T>@v$3pCLCB7~pwKs0=8-n};Z#@0>N-1YI6jb7^?-Z0*Ua~q~J zY6-U3bS&L$=0(lgi;LPLbcTJnjJoGM5DCB7ad!Kkx(Ako^3FZe+lfKt@CN+Cs`}m4$@(45u(xmgn zOLa-B;ZhDmmqtew0A)<2A_EXUDd_D6!jUWpp9HlH##y)xXnaKX!VVkK8*1M*ep2bY znf0x!xmmeJ_pzsy7SLpA0caHsX)QGb3&b{H64AVMVDB;UjR;ZQn9t}arKt7{3J<(^ zP1y(303jiC_p&)T4a#-KpKQ<=)maT@a8?a^FJ6Q8jB{nf-#K?j$ImXEcc(wV(yaD4 z9kTI7z43W$k(1nIgZN@LcFH&R0IsUN%-jDjRNaPp3ZxzRGTTIUl)Q;=E}UH83)boV za4rXxyvdFd2kGaMk!Qg__l_~H#3S{cOGc(>Y6q$rPv4s6pJ4O1h3fFa)TiKk>HT=3 z(vrdB6xy%;CAj4DQVPR^ zoUvwdf#Sa9WDwf(;(<)FrE#LEPMZ}et`F(PgKN|0pqn#835Q(3`+$p8o%c_PujvO0>T%BijFocK#c3w~6=fBGb&7De*qt zlnC304(Y9PiTKChU~h?di;a0No``SH67k{5Yv$Y~8GmL*#+UnDH7DX$E&IA`IsY64 zZL^4$s2X7eB_cT3FA9NPu(NpMwSHBknfd!r3 z-~SN!e1JajDi3t%6U%r?uY6yhIE*AZaOIu&?_(+k=@S*KM8IJVDE_47^>+4hiWXWa zU-y%$D3`UPXRSDiiDc!N)AWdF3-M(Z^fZQ=M|mJd#W8j(M+cr_P@bh>0z`N96oXE% z;zHB=1{*dN}S$dx1%8+gkswXYDwv%#0xFkof^ea*_dg>3{H-^1leUM(LHm5%W`11ra z@B#Rvb4U*X3V9lYKW`a^1h4$~bJ-1NbxLT=??|vZnFpxbUZB zgoi%|sgXk^sno;+eEd;6hCiNSIT{aKgQrw7I;-cYem2k>J+ zKUhk7E`DtLv+(0muQwlrA2UAyKkkHue*k{GmcfsGXXD2PoAcn6`SZ_(AHTP+Y5LOP z$r*$2dpW?4#!x z6+NuD+z2tfVbM{`)2PBu2=#(Olw?tvtLtEvSK&JpSC+P8FG-ivrqOWbr4PWFjcEZE zbqD0~j&XA?VuOeW)x=k95bLB9Ne|-uIi*o{h_Ve?q@Wcz+ps+%Bhj(T);Sk@pEo#( zUEm#rqM>yIBbYX#fZv8;1*6b@OJg~DcU||g+#y7@NxRYzex>cvf+`a&D)`fApWZn9 zKjHn)KmKRneSQwUrSTsHjX&)5slPB*>Yd-^(8GcOd}qS_-SXDda7*^`M^W^6h_F88 zke;=__y(^_*h3?3rv8@|iHgj9AYFawW9Q=38GSqEVLAHt522^$Gp`;!%@aE2p6|VG z)FgQ2R(#!`&5vKOuj%#jd5WKdo=W;2%#Tk|a4fE% z3`1+b#WZu$cCB-I&;#H&eR3XDgo4458`$ZQx0E#bhc2hA43R?o)qADvK!f6=T4;`6vZ*=@arSoP>d)nj;SDv{(v{6;R`kal@g`?`x zpq3yY&FDp&k~AWv+q(?;p70%|9oFp3KeJhOcK^L*kI`%;$R1ilyR+2pmo(hF8{HL+ z1tn$ZGiyF4o$+vfN-jdNS(5Mep+;n*D$-}#w^18Ly_X0~j^>FS?ui;fLcq%bs5eZh zkQw7@{_AWClL6ZZ0TUf@h7JG+>S#H{-yN*DrUU%6s494V)ARh*ku!3m$%*^4MzPdb z2tLn_IAiuWorqlQ@+w!x;>8uhY{Hj$*u4lAnTdZgCmk0e@+D4{Z9UNVTE@g7b-9j# zOOZ3Z^J=g?IrVa*P&|qh^l8UP1|3*yg;ON;EGi>ApH8oJ2$gu-FaDtGScp`bi2ynw>vxC?!f+HxXE^-@9=0LRxbaP;evl>Y;5!$B89+h z0k63>3`0)Jm zIsWpMp^{5W^7+pWW~(T?A+SaIGyS`_@%_tacy?*WC@!qXjD5om1tk|tp7qPw&Sw{c zm(|A+&=XS9vd0r^)4Q2%1O#)&PYODV6r~+p7-yTC0W_51)MFYqvmw3kx%a}-3$H9S zobdF*yVBMOpki8&A=`;t#4`;a({dj5=Gr%)2{jxqNq{5Z?^i-`wN`NcOUO)ZiwH8gZb%IF!%TkCFq^% zTbFmQ2Qlm8H7gr&Pp{}G-o2-Fpg_EOG5C!gSOo9!6bLV$e~6kynIhpg=dKu_4_t#t z-u)4cJehhGh)3hMF{-^CuhA9aBiu(|#Yp1Tf&D2X#x4H)SZx=dboX?8#Q8PrX$39e zqdvd$z5dw~+`y#vl!D|$!l&kM?)^t|;Fz(e@mIV*qe0yusqtsD+Mm(yp^;-ouN*X^ zpGy8>m`zn1;UkL>K)0@n8A)NfF`aouaT7V$bP`@|-r**X<#g zY%uY=ArvIl3#hiT2;1Ibj*u&8K^aP%#QR`1B3CgN{-*5VQ`zHdRVKWaEalGBzVTGU zV}LvrF0!x%gNt)ju&pAHc(jiarF<^3Do!|wZ&00kDqdLuRW6Fs1OX41hYveb4oAYP z>zpZ@qTziV(+PqYIq|&ag$sm)+B_8r6O%pg9_BiMj?wNe?9W@*HMDM(g)>TQ9I#Fa zfqT*LI)c+|A&^YC{Y8z@A`OIl+n*8;qS%xNI*OuhZ)z@7khV)Z1Kea}OkOZJQp)LX zv4CKMUsOQ8@V0pZNie1G&5aNnh7wBFKqUy0l)9coU9B?v|B{Y_Y87}|+{s4w4f5)O zVqrhPhs)HcTDLC^@Ipb7f$;%kL+ zw*d2&igD^1e``i5Pbp=}NU3&u{!8-)U!wnaimEYhy}OH8VHtfD^I?*|S65%2j+n=z1}<&G7r6RT9Y5tpb(E)xIy#6_~>nM8Ul;X0AdoW z$Wr3;%;SyErS96)&kgnpAnEkX=DEQ=<%8e9jdG&ieUSnCXx_Q92*BILARti%Rtj8# zNU4)J?xDHvwHlh2XQ6q;0GbyAPL&KeJ-=27O#(4WJwz|#LkSs*!XUZ~EkSfpF7c=# zdWl<8VTc}HOMOD~rpEYJh-x8JUt;hTdJ`CA(~u4VRTA4##4)sHQU`XK+UwqMA2?xIp|VSjYrLFohiO01P{oUCKmey4c~`c9a&ox zCS)tqQi*I=Mh5Qn=pJ3TFUm`$Go{Zx$=3>AO8f~|z@CsZ^}X@fVmLiNCbO1FUE<-s zC|}CM?>mX#kQhze2O{^?xu>JflmoJ{2y@+b$|g)-=G{`~zFp_``SSRrP-E*hV(<{A zXtSH__@u=9q9tB1tj!()EB*+Si?BaCCM+zzsQnemJw;kFb>WxWpN3bk|EyDZ@i#=h zj;0hQPSzkeSt<%QKn)f*D}{d3!xD|yM!HA}d@>Js>5)IHg|mW3iJR+W4R z9zwvu)ED_^6s)Y{P#u@NStsQTlAAgE$X6b9`x@O75qAyvUS{OWz?&vt;|9oAG~5Qf z#Xxk)Dxrw2EZq{ziBS}(l@VvEu3#0BUZaJ~-*VO=oI?@*Xu(@8B!g6YqluZKU7>mR zscma0BF^C+uX7JZxt}xT-AMR_d9{uB*ABmUL%e2f$JLFal=l!_(+Tis72sghoxtz~%5qETLw zZo+VdDdy4kawyUZz|rFdPS4-l^9;eVOt6G?)VupN3XkjNlB02kT%1snq1;KlEKrD& z>{1k@aUQ)7Wua)LP*k(Qj5|F)Bzq)rJ6J97aaBpnyObA%i@i=_37_i{tpFA~x@b5F z>2-HdC)zxS{5#R`wvM`bXc73~!I9`{tA})yD_X8BmVu-Pzj*O?Jn$LxdehL`U;+(T z8V%2?DCsDyb6@UVOzUicSBva~xXC4uvD2qtMX3^AME(yjpFLmoXiu4moeePOzaqin zt7gkncb`k1dYF51A1F_KqyMzzsk_rsB75!RLlB*eJT*!J7xL7NlBcSYzb(v?r*1`w zhCDT+>1+zL*rz}W^UmD*6lki%rP7Q%<&hucsRmmPm9$Vs2FTCHDaOo}cxwh2`IGt_ zS)e;7nbfqvq*5@NJsvKI(J+G$BllEiFFg8PV2OZmkk2Q!kyZRXD24+j*cvL1xVv0f zfw+5kBhBL;e(LhPmEt|K2rvoX$?$JQj;?RrRu^UiR)e`#NpZ(mEG?ogC&G50GA(Z* zZaEooYnjBY2@7HI`y=tGCT?M&AwKkTErYo6p`s3CynU%VJq!@LH(tcjy2?um(eV;N z${@7pMHWtY<-Af-OH=>Gi{wD}lt$RQ!WY1*lD~stNC3N(3`V+2I}RbUc;Z(%FcFl? zA73fS3qg#^w9OBsB{5t;0B1>J=OSeyV5eB1l&U3T%!I1|%U!fB>P?~vWgcZSp$u-a zi?5O#WreDRT+3fgdxMoXDo09<)ANkF2VKx?dcv7tAUUpBmu>08IlzeDPspVTmIw`hwWXlKv@Hsx(G7{<3q}dWG^=g07EvsNrg*W1QP$HjJ^3;=BNiTNX z-AH|iaYrL3wh!P%xyg2fR#1^NX7sRz@DtcewMsZ>l3MoF6q<+W;+BeSy zAEr;a{G`#=v-K(0yk~T^)T65zeahwRZO^GsS%Hu!eafvvJbenP4OA+q^V>S0uT06P_D=%01{)ZbzT8HIC06=~FgzA1CbRCe09byc@AA>?j{g zcp;R9IDe`61$X06*F@Z!Us58xWB#i-mCt?JTW8Xzln&L%J$(v|9Z9QF>QJP>Pfdj~ zjJCETmF?*$vvE4V4y&mFJqiuo-=3o9^+cEL?CWn|?Zu5Bq;EJUf1GjRL-^yD`_AT% zx4;84{Bc-b7JnR<{Ck*fM&B^P1_Vk#k!P){$>8MxXYPH=^#u(XW?d8qzOgP zSmagPvI5`L;Y;isG;5Erdn3YM~@%kU6xa(YN)^Z*~+ zQ%K^hYcapXJVf?ob?$1&X%dm03)=;eFiv)+Jjaf=<4)y$&!?l_O;yS5jjbntAYE#oS>Tqf8UOcots+4@YeJoOt}!;djMFy~b7N}nl?Oa4oN#}q5bU`(;xljn`= zF&QBh0j42{aRc15&OHNftan$_NV#!Co0YU+Uz?__m1%A$0TXT}Iarexa}qknhB}pH ziTKr7BEFceMEod!EBG6NAyhg&|Lm30#;eF|auZvkNUf9#BJZo| z(z@_Fl32q`-->x(u=Tnk{36QFwH*~E_P4HdcOm+5YSp1aG^)ef=v*;p^+0`Q-rjMGjyZ!3@tMSM z_29ayW3+Ywje@JT0_pRS58e;>(0w{a4}xe0&>u_VV`$&YxGGXIndD<-q;ri}SCzB4 z#!ION2Z~Z}0lujFHoF7(7Pc7TTV<)0q~doWbukIzU(mlg_u0sFmUCoUy?c7PyXj_E zF-_;hyDFA3Xj`le@!wbcf)~Z?=}Mwj=Q|>pDT;N@2@PrgSN>GduL%NJ zE&L$Q>C&Z4>(p`{sJ;72K2m=DdX*=9FQq%@1oKI{c0Wl@bglK$JRD`_6ZD~ruhIST zq;m?^kk&MhOa2p_f=bG}_d2m%Xq)R-Gb0t|H>FaN37gE-V9;tU1(Q@F;Wg|ujzw^& z(zA)7%3eHrHK?htH|oNc?V9QnQ}Am>>|T@^Aoy2!y#MDEtdMYg5*kp4j&W5 z*K*%>e!eU3q^u5F_r?m!HmFqi*?G;(_c|IGdlV!uS4{bta`<$kAR*-U`7ybqx1mtE zi$?u8uAUY;TED?{))mbWc7zOthInV7TyoB<%-#UOa4Ui>8WXk4-eZiu)u z2TxI18%#TtooV_T9yL~Xzb&c$&FoVzGI}+w;>NL@TE)1Ov8P(H;en-bbqrV|homC(68o#0pfM5f3tFUQBWrE{$H5|(9hEG5C4zsQVw z_dU*1ymO<7`^LhG}mh_#NjGbk{FgHQbAPaDUL z+H=Od4&R8_M`eX`rmOC$G8JeoiY2-#qzB^Vp7Of*SLsFb0j8MYbL8HfjJaJEk9ptE zr=?a-XPejYa1Y~co=6?$+$2e3vovnqd`T{N=X8I4=lqZ=x*AiUFc zH_R?Np4<3NVk@o0zg2OJKWsFkF0RFYupGGU>E0S~zP&6uYFF&LbsxjBDq3+r+bI2I znE}=38NAnZt#A7h6>XB{k8^D44FJ~Whd+Z!#%4?^ zKLxAnz{X|F?uS24(wmX+iH=LVkI#WXKY}!O-29SMpWrkPztIZnX6ACyvdudW6>Z}Pv8z|e2=Z9%hL72p*cIn=TH{W}*}wI6 zv3R;@TZ;oI5>dP2ei5IBio4a%nKq9xVSkg>!HqV%wUGWo1WR_@yu+WZN1^0TUNf}f ze4j}rSpu0i->eHO3=+iDr6zR_GDtJ2d*R!R7wBlhX$f1i!ZEmXi_rkO%9q^3F*i^F z9!r{UaCavE3iM5_rI?INZZ6gDZRJ?sg%0cShL9d#)`HS|^Fb|_O|sQ_MnCH_E9A)+ zAs%2C_(VRgAtK??xAN$yV;D=UBXjd{EmPJ{vrJ&P-pbGWBuzUlYo7hilRuyaE~Pfx zotNEeXoK3=IH;j^Ws_x*epai3RjOc@^W<$_1x>xw(v;GdBl@z>c`~9exWM55`*is< zm_UP9`}q$l|4YjMit@kUJUN0d04KfNnKRT&n!|C)zk1u|WxT{sW~R`6)Rw)-%rv=S zB@aWCmov>TqNXOUmWB&wuzk}4aTc6md9or{-oZz~>R@4%N-TFwWtDk!Ci8c^%*&`z z^Z%%|dU3iyQ@X&(8`HHvI?OX-wCc-M{i|R1tDl+9y)l#f0_Dcj1=ZIo?=Shn-wS?X zf18a0H)Co@rzQsZfk-wNe#3Gf=vQ-H zrkcxC4c1TV(gajMzgw$iCjVJB5IJ#5pL`}Ce8Z=Sg0hxClNQHJO~c(z*XMP`-6Mk= zF`e>P1!S<1^P(THH$5Sl|Hg&UikYgpsk`6#Hcn~F<(Re=1Qs#8+b4?mKQ^}_#sRqq z;m%mR3@W&o)lcfoA#HcjUK8jZin`Aki}U3Mcg^xM!SI_Me+k*UI>LeJ@>5*ff3f4E z7<uCMcwF^HjdV=yJFB#2y16N<@P@bRvYoj_eFfLlqfNdpq z9{6?)X@d(vl&&{*7$09*C|j#;z;4Oq(a4`1^J%0}vF@X)aa_cSy$-*ubL!u*u#^q> zSZJM45{X}58g*BwU?>t^2Ed)EnN1--UYs@>dgDkNe+-ebRRV;?J#Yeo|#E1 zwTV)j2(3AA4(tO5i3Jgr+Bi5gcAP?O0$4DhNi_RC9%V+~sngolx3AN7rWa`IAS!AC zNCKh;q89IXX?r$NxmE%q`G0?F?{f(^egE(O^ZEOcoVC|ld+l|3p5ODVXRYh!c^_Y!i;C>t%y_lkkf_0 zsKu4SoTry>$q4`jgzv(-jT-{j={ylM8@f?;Cw|S)7->a_9Zp3 z@e4-Za-r4$@M(d~gWGb`xBN}i>B-3tGoOyn8+R}B@-^eW%pQxgns*s#C~~INk@98# zI#dXb2AE_ATlsQM7`pFs8Z@kMBi#a#%nhT<81|MNOwfp`^aXD+ zvKcmlp_GS5AOKaYP7X`Gk*;ySKui5z`W9dEdkF?ZS&*J#JD!s0aO$<>6*I%J4yZ|(jTc6Tjdlkv?}IW;6%_HRx`3klM}n>;P#>E*xADIrLs zZx%}&Ex;UcGdJs~c6oYH+x7IvDP+ItYIXhfNN!p;RQ9thW(c?<{cD^Q8A2445^ZF^ z_*Ue}yZmL!r7_8u{W4nV;|n$5jn&M#+QJ=ln#OyH2DzSpRqP)xN+3~ z_h-4DNO4DX@}Z0pjp&fbVDH3GX_4sxNen+cCnGgPCZ5!|m0tFw##Ia!6658l^Q_a| zH5jTr)bb^^&{s#CJ&~?~P!zLQeaq+6U!TF9rLIXrX={upmsefJl9Oh}jhM*SI^%tD z@jl`rC~@&y3eHH1O}?Z6Hmtk9P3zoF9LbAL=BV$g)OYuqp;xCZ;om}`LZhLR@M}k) z0G{Zvh3YZr#LH|PGaGXCbX)bk-m6Q8n7~P)(0g_2Y18GVj~g`>?w4U4^X43lnjp#G zP)+(pfZ32bucvtvs3G0FImhk&K=REWWqrv`|IE*C8;v3RDYrB80VXo2;C!Ibd!d;Z zGF216HR=Nk%?FlHwF-Bl_vXFf6%3MI&h;3>+EY=?rx&_2P22vE{_j_h45rIpKq0?)Khu?*eTvJYXF9me*MOBsk1Nt)!<h^$lgY<;82`m)qF2Jwo` zN=^e;i$SHyxi5H^yZ4V;>1>1KqqW;^xiB?#kQJy&D<%{bG`W%5k`_F$ltgOd#m=_n z!H9Etv5F$|6Z#5oEPJ;7gQf~}o+aZW&dsIC`q8*s?M9PWoHf zy1S7I_H(3J@+IP2Md7dZuWMZ%D#F0V{c6m++QNK<{x6%xI?XUO*x9uIXHDl4b<>yg zqpbE`QuQ7`gM375aBEaSMtIL-xem$5yX2BG95gsDwGXy5+R1vv)-$-aNpJ_bcXc~9 z&=tI1VEU!@&@EMT3oB=__OjJY{U_=b3Zzpa=2NwYma#haO4Fy+E1#!nrdM7<^`uwY z%|;RRgBQU)6g1WCMb<=|8|Z|0`=7y0dk@dnno#TEMAO*T!}T~HCfAB3>=$kSYZEGD z4z9!X?r{EWiiY`SUvW6n^pd+*#i0Mn#{4`R(En2X!A#qDy${** zt}J8Ec=}(kW3fpXKgd#cTJ_Yrw4$JCF~)C>5p=dRF#nCR`x*!2Ez?=uqoX)HkShC& zI>_&*L~;@qh#q!Wh9WB_U^%unMNcaT=rylTP%hadwu~L+uQUydYzmGGP&_?WyMEdK z#t<3GZs^~@CH6(!ltEh{fEGSMMr!eLG#L!D&gsz$YnSXNPfVZpa;zFxttex!sWw@9 zXD>8k+G{7-4ci|4m!{J@K)pz5rb6SJQ2WxU-$>z6$^v^sPx z%)f-%%+JFQ&t^XpY7JQJI{(VX4McgH)_gxO_4+(l z*SFR12+COP`apz+4c9CJ2Qv%oy|!u}B&cOI>WXH74VTddmc*7TR7wd+|vWV6}JQENKu4PAlS zp5-s$$i3LEJ=(l>e#{B*@A5)39yw4lEX;SV`8qDm@K4#kz4^vO@|&s~JF3FgnoAvEE$sb)yCGeH)Q&y5(FPD4dC1qh%7;#?an&>}jP3TgFyz?>|e=`>k)R zw?$^XIEZOEo7};F;n?FMT-W2>w4#U83jOk8AF189d;{)3&nPjURp|1dVJ%vzPpOqj z)5uG!-gr5Jw{N4c$GLU{RE?msfEVq9$YUdL+RUH13RmT0mfHMNj=QS&Y+xh7|~ zbI*PD2w<=RqJiFq)lz!v`XY8)4JOB~wBarTgd*GlNH3DQCGbQ@S@~orJ^l}7aw-ic z)bw)>6of(BaxrOZO9(r)fRC;ZC%?l~fMq;37QR80R=~@n$?ud^vxnzKjwvzMdBUj5^;6I?qO(iKX2Wiz$w!nDuP$*=MDa zJm8WxmJHq#J8u9PesJ4)FF9NAND;IH>yzIr=KR9%qT?r)T5TcK!&%?8t0-E%{=Ap1 zXkY&s(eYDCo4ys;?);&8H+!b1{2`#%pR>FE%QO$7ZyXD~+A zU0TeGJDq~D?KysnBo`JVS6S=a(sXV-Srtz%;nb+yiw37U<3dxNWuf8-Wm2hlYbToR zuI8;nFg8GID6gm3H#&7ddHxSl)Mq(Q7qgoG@avF}}k~2Mq=-cT`3WLt=+nq@jhDDk}-IIbE`tC`kYSHRqXHs!@ z%tV zmgFRECEp#Fr}_TB=UD1grYYMZTK;WaUmSI=K{1?J7U_F4S~88>O?G2U*IwK8iPS&f z9G-2|5+wdHqvf3#zOB3Duga8@iU$~s1a}79xq&!m+UWkry?%M50G8rnitb6{6sp`? z8^fU7bWx3!+Cbm79)k88cqJJt4fKqUu|EC-o^(@)mUXJR%QkpUJcSz2p)7P1d7N0O zb>}bXn&hP7qF9JaH@aiqrn6Y6wtM-~2 zw{SYI?P;hXzoSLR$?t~!s;6cbCNFaCsj1_v;$;EGZQ2-J5izNpSEy=%dnd0K#lrTy zTgnr74#qe$wP-?T27l;GJOtjQ?uk1CuEf2{@19gF;_8ltR0c!t{RBmK$ymr8o5>do znS7IUJe_>zll`yJ$!$C<#$5hGIX>xlKgwLtzh?eQ6qEAg%#c+7Yr@<|ps~i(c-|lS z4s+hinaTAO2dRJU(h93hH&A#za;q6~(`L@LS$AtUKd0oZwy{d6eRixf3(`C;{l(_OT=dyB-3_QO%=Zn-#fDgqF}Yzp7(5|wyz^Ps;1=` zfZ6%(xQJI=$IPnbm2C2g)o$y!ca+{r&Kx`6xp$ggwAxluoCj2zE&@TF_k;;c5dK9r z>|5g;yB6WNh-gc~;pU>-w#gr-XVxr^vH$uOlN;#UO=odKYb!+())2{)3OwHU* zN}ye$;*}UUs5wb~+JmIE4vezy{wA$S*#R@T=zB}NvMb=sEO%!Re=1saC0tI$6z(iC z%wL&R>RCj=hTQZ;dtQApBttXVkkVPSHc?F2IXDE*!HuCTi& zRq#?lcbyR*cDEi146WFXCItNtiH_~$mE|_mp&GJ}pglNm=t3GQ6K|KqIAl=5bK5pUAiAR|a)*##ECXoh!- zOZi^BwWS=8`5KErk#4q1i}ltT{@V;0oAIBX%nHB?Bw5qB1u&TD_42t$VHGXN-cQv2IP>9t~P zRD;msd^2oqltFR2^~*|WFBd~sW2RQ{Z$wDPKusu&)wYbY+QvY7lKlN3y-0&09@n=s zGKzt|yrlK;2owruwnr8hyCckydF4A1@#7iLg?WkWS-Qx)W!<%%zU8dKXluU$9nx z++Og^jH|~F8L#n4gIfkM(7 znNrcqT1pt*{D}K&#Hc72vTYicz7o-32uyV8>3`0S^UY?sjsE?CMvi7Wlm3fV9@bi9 zrW*krb!Gd1Lx*)$ADo~Ezu^9a(pP>0ocS*KJ`v7b&5&eqW~OwQlj6*4r=OgjhV-Fu z<``P~pRBLOoy*GIYw0w$#<=5=o+oZ(m8%XJI&1S%O5AS|{BpFimgMDw6^a3eHaAW`iNpmK8zTrpkB-#=E7(7`n35cM5g)V;(9wdgGKdKEVjsP7h4y#z*sb{D>8^>%!mMym6`4c(|?YY7zdl-nkVT> zG;4Zy@;H-2&qn5<4AkhskfRAC(GUXIH9Wc3R4u&$xz`j9E&E$zs+0dRnd;ikHG#nV zl~&sUQ^aJtl%iDG+Vu<<<12Y^h<^K6c_4R{8U4bH-?EPxKb@rW#}7^6lZ>B6{8Zx? zg#iB#$4}j6)aBn5O4AYryP7HTV5VFq-E=Fd>Ks=G;*_eVN2M;9EQa*SV)O_3xbyfT zD89&ul$M%EY9Wj<;0cv+FotxiNbR6?_xoreso5uHj0@a_My&XFVdTn5A5+*tLPN{IRp={&*DU;*=lLD5WSjDldbr`0hXtbLmt%!o#(Z}T!}s$#V_(r0cX>8I*}3*D_SjjvD4 z*5D35)!_cnXpv@q!Qg(No|s(x6*Due4>UiKA@Iw6&@Xns4K)nGdv@0N^NMRkD5siN zm^m4`bdJ6$$#oc0$;1DoZzLVv$56RN3gm17`&o1kbMNJ?gNDz+XW>S~DGN8xFc(Jl zy`@=JZ{94c0PVP79TQNLd014qbB86Is@+vwjeI~jm5L}@wv zxapJjZ%)t9($ZZw&9Ylrfdnu z15T{uyUtB&^2k$7RcBEIjN?yLx98!+cTZ9A^+E~5DcF(!-J{zK{g3g~=v$cFWw=Db z*J}R_6yjdHPn<9x;5#AgRl8ay@bsU{HJ=KciVuFJyleJKfJ%6d=g!?68)R|*YM%|x za4!YRbNzMV`PAo5f%iuL$?$_WUebTW2b)n7#244mKCwZDI?YB4CEN!N3`zJt1Kc{u zNdK6ANzMAIH_GCQd@^pq2kJg?#e460T=8GEJ-wB4l44;_0 zcl&mpl=trNzY;ZH@eLeT=1pWJr*gb!B!TZ;O{q;TbjgM_f%xOWX^wmhoH+KV-WS5b9F$m|i z^S8ukD4zlHGt@pheJ@i&2;D<_t)RHy+wJAkbjajOFZA+Q?LQ#Oy_)p-D}8arnXlxD zM3p8>()qQsAve&`859rtg8 z?%TZ0yw^*5J(DyVHgtQ;$acBfePPlu3XM)b>gB<*h#Y@W==A{ky!U^cdH)f~_YVL4 z-$VYgmq~APFQqW)#l{%rzQUjbRA?xhn=Z1G)xLJJH>aJPVXis$ioY~d{B5dvCB?^` z+2!sxc#`qVy@=Z6M4Q3O$ZVUnCePx!^@^F+U8CW59G0*{B<{RmJAM7rOuke-w~kK= zr0m`mhe{S-)tati|L1k~yy>NOvbl!U$bh-+Jl^_lVMp-v%#zeNElH(1G=Qx~0xg$X zYl}gt5WqpS#fyS;!9KY|CuXz(a%%%PgWcnw%Be>U)jF>=ATd=>unoY+dL9j z-i52K%5-K0fD`*sq?Y~Uqx9GyFIjh7O(0dj+5H;7{yd&^mG^LK`pfQAqN#BREv6=U z#b{L=Cm}t9S5#o*_m|4dO4=AFhKosgnDRchme642+6~fD2<5sE`&#>;Ozvz&N-k%v zENjmVzkz<7H?DCT2wZc_eZW^dAri%5fti=ezFnM7KWqrjb~ZHGkD|Vi{65>N)4jaE ziF@K$Ijeu70Ns;nvgVmyo5?>Z)MR19FUIxJHDCAoLkIHGzotB*ulc(B1&UxhL9WKW zze0bR0J?&~KF^RtSXSE`1ehGiqhB!^v;6s;n;!XyDXn~Hzq3ZvI#6x3Z=kv>S^@=D z`+8IHH*6*<=|4T>w}{*JG+A4&FK9E7)g~B9q^_4Ke;lV}{+u2OJ9;~N{z1Eh^aAUL za>h)H3*?Ae~ zoNa`Ml(Y*CXh<_A!Fx1A)n^aR_mfM@)C#$|OpP%uF&-c=60^hftd@B?m(LEZp>tx6kXJO?%Wsi)p4A66-F_=xK=W z!Xh&&x%#q)mRkn2Xq0RYRc}{gJY2ye=owlmrvcBhT;99 zWnC?pd`kZ{TIue$KEHWChbp*Bcx;!Z;Z$rfP&YlqX5lPt;WgtqNGrhN`s42ZqQLnp zvwe6G-ADpNHJwTWh|fvES#7eeI#<9xdF)YS%CSg^QO>(}!*H=SoZIKk<0=5!yX%w4A~I z9YMN9cQ{WBvKh*1EhEOXfV*Wdrt!Db@aX)<=t%BR4&!u{Uz0Sqi_qD)3}<+d9ZLh(d;| zbuehP^)kmnZ*4j&10TlybsJyOaK6%%=HpxO;pBWU-}?64@Yb&WARFT5Tf0AC>n|rd z7rtH4^>&cwS9tEx`N7`E!Pl!_k^JYjj&MzC0{i9C)15;JETEl5kWKw(jYwD}K&u8>Q+FSk~=@1hnh5M-HZ| zQ8o4a8fjg`hJU8FE?!)=k4IC+1&`s5sDaTR$+c@9aN9sOe7o^F>F;~5L zgX_Jqfb%ss;N$r^{E^?lS&^go<1%@8Cs)e8KX|1q&|6!`i7TfCoJ+cnH*R>ri(Al3 zT`0Ygc$M0)o-ldy;~Un~h~>c&_#?zIEiRGQmRN1t?~Mlr;(nN+0zu(${#jgK44jNR#Hz=Whox!*2 zLEZ>Cd(A6vrDg!*#(rHvwOq|%o7X`^y!rKF8g+FU=aG?#W7X{Acj%}=W5 zY3!TrKHckSTvc{lewuZ=Ji{Osmz++T8REbn`u@xyv0?Odt6k^q-4Iz;Ru5`;>+;6; zt>eenAKn#u>t$dQdZ0RHk>KFANZ-zAV7(Ba{V2EtgIjGyM*>s0RS*u&(i_1J={-lt5SFRxzb{P^qf=hf345|wZM-@?WxjQKtSg$ zb_fL$fv!9tD8%GzfZz}+B`mR367ws(n}LB+5jilh2lmsTgAh-KmU#|$mkV-FeIR|+(?L&nw5 zVg}a7^=K-1e$?3wu-iq;!kw2Dm39f(HRTepSMjUC>`eqV+qKV`agA8_blQPK-nd4J zd(ek4O_*`rOMu*4CCa~K;2qUM;~7DK((TuW_w2V81n=fg;%-LuC|f@Ff#kx{qhS0# zMnoumgO9b>fwebmA@{7itH=SK?=v`V-Y?I+v*1k+t8c(-vcYf4xj{LP!Rb$e-%++# zFnp64J}sSZRlj)Shli`?f5bkNKW-17VBD%Z0q~qYIyqT(hX>cpyhw7RYt?j}8*#rDcKq4KHm>URoB&l+tEu5E@ z1@feqR*{#M1@Z-6+St6bERfIi(yH>(vOxZ2FKrxYt(`uQ%Y&Ig@=ue<+HPi`1KXVE zoV|HizFw$2oJ`(45E7TX&W`h2Cmd&gm~Yp+vaV(4i#d7!aM==%P>zuYL+J!WaJLzC z)6?%H_aDv}V~*nV1;)>1RFBs11e z%agZRk_q`~SvpM3$db$f8l-w6H$7TQvBTY${X6`$yyj&|W}TmQX70T#$vohvW$8CH zBTF)Ee%d*?_p&6@=%;0AJ2fLqG6_HJ(dTG&{Z()?r(u@4{Je@I`M3a+C6YwGv3~#DYjrZn_(eu9a70=8w zCV3$y8h0bDi3>EHkteM@y_IQ3|Fl$T33%T-J-M{T;61>;+nhvS?Q}(C!%Hx|2y8|( zQLxkLs(!D_l`8U10ndnWRFOA>(pnPXwaT)C-1^;_ZU4kn;&0iCvMYh4Ssf2-pI%h@ zoMe{#)Tr9ye3{jW%!=1ykmZw-S&6{5JehS)W>Rt*0kW)>%+h>@du6ISrFU>I5?IX^ zPud{$fN2AvMwEqy_leQ;pdT@VP+GtwLlX>5CyZK>nUo;D791iE(+W*vB<3`gF_RMB z|Mrb4QPY`yOgOIdCJ}M+@xCdCa`n#fB2jUgazx{pW4g@g;k0!}MrN%|6wM0nFggbw z9h$H6#z$wE0#DWUTkX1UJ8$@WeME8xxwVqJ?Z*^G0{bI<{qv_dVIc z)S|r9pi<3bL2^s)2J=#fDb-8~&h}G><)sc+s!{y4b6)Qb&r2PlRHNR%7>ma5vl@Pff#8u_d0G8WJwVYoEqaVHDYa2j|#*V%@%y05{xO zZ9gaf@rXc$4PV2{OeJ^{cN;#|R3gK@nwXrDdxN74^P+I}-t-frTjNnR9@r8OJk13N zR{IzDIQr&OW}eWg?j8+s58>P>&7xNqAX+lLY79H5+C3h|X8Q6~Z1|=xy~%{>&qQim zN}ZYMMbpCx0eD_F@1&cL$;kGGrf{0!1E^Q(r21;V-`#j%Tc+Q)sNYxl{jRX zOQ5iVy&foo(b@jjUVhX6s|lF?e~$M||AWIl!eb$GFs{Fec!*AC1_3ZL1ZMs~*UKvO zNxOaLO}`LIqTbI9?=g2y3^dQn?{C>Nj_q$BC$scEC0TZBB(M)N4Qx_2DFc`3OgTPa zz5pZk{~kK!{aEr0@iOnc<-_G!z~$|+#h z;3ohqL&!T`<$S1rh&>cy~Hwu9K*f(c*rqxq;>lNAxAQzGxI(L=0V4#QugDM z!R(;( z@h2z0P$Lb%^6r~{#~PCk)>=UD;i*R2_=)P>X{L97=%<>#_fyrq(@gi?;-?yk;isy9 zr)#Wjf;YM9&`)sYF%68vRtH zasvkG>OqDcYjmWt3&pNj%HqR;zCWWYq9w9IV0Ao*5yu=@`ke`&ChC4`bL!y%6T=av zI%14@>dOS8PN%pS-?BCv)K^Cxz!76K=H@86p8Nm_u`n-_QvFI-+P6?)KIz(NR6=|x zD1Ar9;mXbkzRr;y`uB=#^z*GnD4W2k^b)hzHdT6l0xJw3d*2Scm?)Yc+cPc?t+teb z7}_xltQQ`kARe-7pH*;e#Mn6Y#yKYGiw5mHi?klbihVsHSqAo)wI428^#uf0?9+u% za;+i(fzsEALfEjIu+%##iwF!Uizt3VEEGSZ=8?Kjs$SYx^-wltsmR!_Rg$q~Q-V}M zshTP=SIRz=NvV+k_f{;g7W%p{w1FBm5^i`Ahk2@a<0b;e0#2P|X)&q2te`9pcI>y7 z-`El2@2rk;{w6xAGU6?5-S!$_p%d48?4l+{5Tn@67zgg#9mzN|k7nW&3%p>gVG%NC z_5I`UR}&4+!+PYzp`0-#8uQhYQo%C~K~Zs$!Q5~sX-2-0yvL&z7CMyDgVO=%5G$yi ziWZ3Qd}Enr9xoAQ?jb^>Y(rbb?93FV_c5Vm>zAQ39d2IDB1xQm2SwvVXSTD)YHQEX z+5H4WT+DwUEMp_>#74R)5$Li}ct)iU1BKh|NV-IO3*~*|Fad7lTwCSKbP<1Pkc{wyfL@_*{3h&K9H8^D{bg&8wy00z9c^Ioy@w) z6tWK?tU6CUnVy=!0c&HQXFgwrFfZIxSHy~DXE1QI@BO-tg-7}K5&w=%XZ8LSf3}a! z-CK{5Cf)xtL(fLX;da#1{qp3?fz1GuO<|kr0Or6zq%R%qs5{EPkN9^afuD;VJ|Fl6 zUMvZK!_gc+Kmk!_b57q@9jWWWqoRqt%Kj<8vh>B`7qJ6m>#I(fC>i_#J>lE2Ot~ww z^~^8N)OBZmT~*@qUWpmD{T~uJ(~Y!3FID?@c>TFqczlBX98yKopA_gj&o=M(di`hK z&(=$Wk?p@Bbu#^@BEE@cliB}8XPF(I2e zp@wD(zy=tdwNXS=r_AU+hIsJ6)=4lqP{vOGP0e)vug&h1L3vqmL)Zuu#My!a zgpoK6Ea^1*W_@4SSj)d75V$TM1iV$(LWbS2og~fLcmSyFiPiq0d9mnk2)DuTNp|^Is3nwEz{>#-Kg9Da}RHPK3%Co@R@NWpPj&xA+#@M`opp8`Lx*cN}A-A zXJkh{KOI-UAw`OvUZu$XUuw5i{(h?~Bai0vL43FP8xxF`4I`q{cm6kmPS5!xAphRv zwek_RR{Ix{i$_;NZkR9UhSycj3a`WVSk8{?NF|rSccLOr^;E>;q_zDb(VIwvbrQ+S;w_u%xZr>#|6Z02yCy0aMJYPI#j3n-IhdMG9@n8Ee%6zHZ5XP5MsP8$PT zPbx7Ckdm}X*45xPzsKW7w!T?y+M`T;^?A-cI&F^9XCrIfB5zVRRosAjTDEb4UHrj{1)}>W|<> zrthte`azqEMa=#hUJ5pENa~$n{}wZUc*hh}j1c-eA51Ta1bA~>r0*TdQlZg~2Bc8~ zn|p96)6sBbN-8`;sT~a}xoMs$^}nM@6%g!yTzobVWf+g-3%&tK}z zRdgIZOSS05?`hiMb?9O(HG3Tz^n;uw*hb&#_OF5dNUpx8>fbkq^zW`r|6T=C9@oEK z9lpx!z^}vpTpd>A>hMQutU4U%|BBa+6MX+oGrqe{I=-?~9`}9!t5SGP%bO4sb7vdu4yWN>6#VlnujkG3vfZ&iMXIp z?TQ9A8N3z`G(YEFO<_6uffv!d*+1K(E5_^;+$~N&hP$n{TPckTz126(of(+GCymix)Xsb|P%}Rf8EkSZ^YvFs zFGQ^y%`V>@zy1JJG*k<8W_ZQS(YAVb%76?9JkGuNIDT>P5eFQ?F2}QL0y}Ekf5{4> z-r4BG;nUIwa2;hDDm=s!)uw>8Cc#InHD^XJ1W+RFLr%Gh9*70jM>}i?-3GF3NM%

n}vf5dq|Z{)G2E56JaBgXH}FO+;`GAd1&L{H^CB^*;XA z9}#S3;n!;G@PtRO`FByjDUYs{x@W#K&~KlxUEX&NiO8`&VKX;4?=?nkRD;ZSKxGf+ zZ#3;$lWETrdbHX;1i92>tdoJG*%2|{H~4ZP?y}VwmytN;Be0Qe*ho_-^;Nyz22`Z^?seTTZ6$( z;|=ZR)jKO2JsdusaD_B4xO*t!kZ;R(5-nCQzL&< zP~l0bLxS6*_zZPeZBs$@4EJ_qbW@H{5(o z`$zGeT>B4X+JDH%8Bv(WAjh{~O1v*;_HiU9*ZzEZ%}9ukr`O-84AcJK1tX79sRH*t z4m(pH>X4lmW7&6qW}@qe-j? zQ0a_@*I@X($334asQqh>E5I}(TR`^hNvScxzW$Cm{`>tLI_7@Hkm-b)j^P?Fxad`4fkq}LT zrq^c#8@zo2sn+ygC+F{cIxx*OMP_SDt54M2&2E?q8gY2C`GPNWht3zU^a953Fi)VG zCz>y~TlWts7rbEp0fG9G&hJk2DGdml8ctr|Q)U9-%5=+3`Nesy6)t4z zmuYUUes7!loqGP}P8d?4=QLDvRHgL7 zWc?g-$RoikV=G_8&`8dKoPh+>2;~=J7%^rK&UR^UFTQE5j=%K^+n!u|A62XVfaP>! zt5H$oqREa2h^;&<@r7}L5@&c@xKdNR9b9~;l;t_uIAcA=bTY>3cueaE?5U8Q@VkT~ zGL9?@|4J$ejwL&B_o@q!$H*SCPWBAB&;11-lGE}B{oe=t-~08eoEy0|%v!aP&_jA> ztm0l}U2WA<1a>HDoT9cWY6F4iodI)(&a;#%>0KY6l=mG5;eKo?Yqg6U!_wUF0~(hH zWm%Da$TI!h@J4NGdQ}VdY|5R`OZu<0#)5+X9n@m%J$P?Tgt-eCTaK|y5LHT-bnuH8 zy|EbfyAHlY#GOPOp+{Fbhj>ne?{)T?-}{U&r%3A&bT?hTiUp5{Kyxu0XvW8lt#4Vl zLr(b}X3xUamFQX+zqnfG53L^+cHo**uE1J9qJYP}0$M-v-oJ#iW-MPX3*YIWYx%F= z%j@lI9OUf}3p?rqP5%UdH_hg|nt|!FwcJh2ve-dquPpo77w^-HALvCvdPn`yL~Xk1 z+fODlFLl+src;A`?;A|A40-#FBa?=xXb)nMWj5=b$?! z^UNHch(h;b6H(9_4c{N2uOH%eq6hfh!S93oKF{wj_`M(Re5-K@kFvzk&qSWJwOx0( zmPr?>TNAV#jw#~(KVtmTYts-Y^O9jVS3WA8ZT_i;zMTQxG*;?Fu#zYP!J8$J&;mieer>Z8UiA2qf{&;NT4&W;8riZOmhlMBiT z20ir9iol*q76Jedk>wt616aUGEB=yWPA`yQ4@Q0uWW3EndDM9cW)w8N>TJ68PxP8@ zIus)G?RvXhD~<;eC6IOdd)_C0 z$0yzrp})#^5?I>0-Yn-^@sb|Ckf4`d#os%nvta0aphUamS((dT&3y6u!k6Sv9^h|e ztzeJ}#Id7Q_O`#0;B(hUou~NJ)WL}P6p)3b6vPtazT@=j9@Nho^op6rbXpw=ujp;j zKrM`m{Xvb|ta@uts$KFN zd&u}SNmko^KqS}YmOGt^l1{bh$3$o>gm06CpIz@1!sHJ`xI@bMGxQ+G_rfw&iym1P z#+JP-Jd2oj{ght+cWWlc7%~K%53N~?J;`2vXlabTS3QSEkc(GKYN9r?`H6GhiK(_f#?{4XjmXR zfmLdOXizJr9cLZ;m`m`Pf z{jTImFn0J@^vpv)17ZgKBCSUact&`OFz^4p_dXBDz~_Sw)&(Cv(dKryzb6!o2z~3Z zOlZFt50voVgbaZD0Bn#{01Vn^OSnIaqr%RP`ogB~2>zR{$%pW#O^2)8$k;`RzJ0 z`PEIz3-z7!ufOe|Oy9uz0q|m{zO;*-^zw$VkK=hf{?I(Wk-i7>DKPH*NgfY|x0A*J zba^r8D4|0X8Ci-0>eRaM0~Bm`$13yzT|Mf2htut`G09s-bB&i0ld*C_4-!hh#}-?B zgK(3))y6%M`u<@YU)rohQH2>zl;|AATYUOnWyEDX*Ad~X;f-|D67NRr8}$<7yD(|v z%N3R^vhJ8eTr^o%2ClNnRT?NRH<~8c-2Gx3aSQtu*tHYuyiKUBhYA;c)~>y61+iB9 zUzzMhi%uh^)5MezV|GK;5U55cyHWQka<`CRgNviTQvdAduq!;pBB1kZ|2ZC=qfff;sEjLkhq;@ZRd4mtcs_mFl)dYBLSujT%j$SpF#}*m*8TJMnygl8KZB^7RZ_bM@R^Rc^ozuNnO{|NVX_wU z_-#+~n2ZN&w^+Az5_I-gei#{lZJBkqZiT^|Q28{EqpiFDxANT?zK>5=ZerE9^$^O; zZ-`tAFhThT_ttK*?zn{r?jo@6&^`ucVNZIAF>BR&rVI!7D9=@1QuTIc01avrvF445 zie@Tht=h|X+W1cGvx`b-pMuU__6_3rvckG;7mvp6vBsdBu3ABaSl~^#LH#NJKX8SY z$H6ttGF_Ahc?`0W3&pq<1{zf?UxYr4M|TB+5HNkC{Kj*Nb+fpS4Upof3%|v~ts4at zrpb8_iJoZ)Qu^j`<*8~H^R6}q)fGIU4pDIzEyi)cdmxfWXQ{|X9JYylsuT66(9PY? zZCs0{|IJi{w*80-`n?l}uxfBQ#C)(q{+!;URr6P>9_7bZ!d=8?^?g9vW`!6^%Pp`)$oFWu<%^=FkA&+;S|xY|*i`#z>u z&$F&N)!%4TcS3#q)^`WUVpQ@w!z&cjT>jp0FTp&;90p$I?MTqR)yhOzrlcj6QQg1n zY2-_cMjlNrK|gOSk5qC)xUZPc$SCIBMls)Q6!SUGQC~5~xkB4mY}Q6GA1C9rwdzo^ z(O1kbVNP$X1qtVVqeoW$L047zx_M)wBpPlsx_L%nmcBIytvREc?=rgiVWXP^QeWc( z`032)<{VA9+WY7>Z|vD|oNZDe2(W zaY{Pd^QEMdWVPw)3!|iOPn4|Jxr;N20CAQ`N&h|MASE3-jUpeaxV$0aya1^s_%z@4 zZd11bL=8Xj^@`_rmj7$}zjgXmeuIW=jr+`z&eg^%<=_kpT8p>qODLrjm&wPYkiyM4DVw z60L^UY@3W7WEA*`VMTpH_y*BoBV$s|M@=mf;W8dWs_H`SRyOkw_LcT{pHVyXjF+b@Dc$AyR+BKgvu`!YX#ST9 z`iYm-648>#6&j8vDM2kbP(^PI8yJm-B+Qmlp=K_y4iBjz6&WFk-( zfDZ1Xrs({lLvaAXSp-Gz1nUWkwh0;yhe^Q_tKHV5;MR=;B;*Ob%)FrPVRZJbEa0+q zl&7;BUlViO-;>~M&z~4<0TG<{rLG_HCkCCG7zk8`Obi;_&18a79tAxL%vUZU0#eHR zikTTSxaW~z%N4tsd}wCyV*8+Z&vJgI8XU^LGjwJ!M>B&tuKd$^;}E$r-@bh7yE`b; zHx@1Q#gYdY`BrA+k*v&PJ+U;F;DpL3Q|x>z^8{qmEVAUR% zKuc`R4}~8ftJU!Xf#*rg&3BqX^eoPv(lpfQyv`_w8N2gODG3q#AjN8qve+xwH$8i% z=9~e#@^Cx1>3ER9OTwBHn4cdqw3TmxzSH2B)lop{(BcHt&$d+nlrcg#g~vvd51NL_ z4*e@r7tm0UCvvbwqUvj~zlI3Rlfkk5y2q8r(RZ*0 zHz-zS>AB9HW6aX15}GTaQUT7`aF%g>GZ0%PWFD76<{Ft&>Sao4lqsdb*rSpfeUL5}{t9lH020J}b7Odk zyPmw6{S1PwQ`oCjdKUG{a>)Bh?bRF|%f3E33!49j_UbXmfad=n_G%4fIfKYj#nJS^ z27`wcGK|at>#F#z<98gtbNQ{|w*u^&V70&NVV__i5BsoTdsB4-O)_JHuqQBMd(7;{ zjTt20lI`KJ%iWR38?!w|b^n<(z9J6QS1@VMB<2cSHO{o1{c_Z3CtE7g$+=8Rm}2x@ zuir@(o})#aFShYgL4nE3(fj05+nmcy{}r<&J*98@CV}qth!wHcf>Add~MmX2+aOk*@cHkt<@(z6gFpBeP$hv2Jyta!IWX0>Pwjb+5#yO54L9>gt zeWx_v+WN8A#&bbT*CELQ;$`&FI(4H7%d#QxBa9Y*XhVuzd9c0YDFvBQZSLF}UM>iZ*z89@y9ehw_UPBHlJ z{$4RLv|?b<48@cXQ$oy0#e79EBZ(PF%qYd2ub5H9j3TB~F`rUQX{5F5v{-Eq38jnJ z5?yy%$HdbT0j|2jtIkWFKeQZ|?uQ^XGN%9R)NK0Y^oY4I%Ga{C!B3iRxscn?I8`aNC6@#akn+p}dEzHdvx?dtvTGXHzoWb184xlwq zLdVU+ND@6QiYW$vFE|O z@GUo{8s;++;NL>YFj+8&y4gprJXR+!IG}G3K?i!6UrT- zOt@!8Qga58%dax;`?W?~lN+fXJJDV^uFA>}4||x}24l`2r)Dw{myV>O;Q#^c1LJeVTaYWo#E95wmWHANW4EiHRh~%>T4npsA78U7LiD_WQ(vQVtv0W zdft|JEeP^&U2J6{tvgn7DB8BgYHLQ*il@pxKfSh3sW#UO`&4xeDO~%_rDR!J;#6np zN<&P9qANr5Iahy3e?(?Ct}G|mI6(0Fl~n{AbS#vMEOipJ;a$$q*hi>Ip}=93Z8zr}byO(l|y$(WL1tP?w^&@~3g*F=#d3jti7*EZFf!N~7dKvT{b3R-= z)egKK54;SQQsApryChzQe)EZ1^a-aj=xl{!A^#i-oI`T8QHPa$c|--36oT!z~7UE5Ls%3h!HduB#l(k z`6MAtmKtd?SutZt8l}J&NkXhFHDbjGnyN_a2E@t^a_A1dB^QySbWw=loN=*^t4;$v zzl@+cW>hak8*{&4hBhj6_T&jK32%^~r5a9qFxF8j;*!hZ#c%aL#=YF&%}bZ1%04qa z&}T4bi@_Z5#_9Fc5fCTha8O_9(km?DcMpi7MNKo?*&$KnY)GUU1KvT!6MOnI`WSeF ziA`o%4kjDOF-Mdp@KHtXNTga=r}!tRuyk}hbv2Olx`CX-AWq2^yY_v4r`LWckcpNY zI?q552qXa7W#rZ?);$|aUYeR3bMbjw61C3~$NpUtH!U^h!t=I(UU_i>sR8I~TB_`# z>BjemhfxxIJBbGcw@OV~N4R>s5qM=QCGS9r8-XZ(UWS{u=s5vI#jM8H6pnfr^$Zx` zVVD7n7X%3dLX1wmxlN&`^^W{Dal)&iThSby2E2$ptfxK7w1rUP2V~f!r|0yiPk-dq zMF;d>(gQ=@$Qk*D9Xy!B{zAyNi2x-V|ERL`@QjLjhk)=>&_;m#TY;}J=MeJB;;3oE z8~l5nBK9erKqHPU`K)O%hwx1ti6+jZy@&`{UUsJbmYyX9tK|%Xbw`f?OyWeK#BM1> z5c@6|;B(@sv1cV9yV`-KFZue9Pq#kVMmkE*fNDSLC_RgxqaBH}k#i7ls`T7QZO`JD z5`p)p2X;*l^hcx{k4M3=+W(y?(ok4~A26gPoYxXgU)iMj1F;?Q)*D*N*Z$_T;$su*bFQ#I-Nx zxOR-;T90WBBP`&=vBw#x6tiGmSc6a#jBDIwh(8eV;t{J6A8Tj;hBaX?@vx_V;8RVU zVC21Y4p>HKh#RDnaBkS+I*EH;SOEJp9wC8(8ss%Yng%|CU{yG>lLy{x6hDb?kBBpO zit`4CW@m zA22`k-{IS_kNdvi=Z?~I{m+Z7`FxJ8U+izopWh#2&zO^bY#K9s>={L~^gC(JG4_lr zw87vnh{g|n3kYV3*VB`k^s{7Xr++k?0OIG~PV*l3Nq*fJ0J8p?%uUW_lZWK%hv_5w zj0|^AHI36+E5*GmE60J$^!eR!XJfjO8pY>rM0vKY=msI(h8!N*-JPO9gvY8S6~`acfGHN@3I$%>rR~Yt-BK3+X_IgSgLC> zeo2Vk74Kko@to7ID+U}Nh1q3r9SuVpqzutFqqz=)YZ!>WUeWwE_`gj&$^|_(%0{9W z>Jc=(G0GHp39Ed|Fl4PzB>!2rYuO0@)x^mbYKmwx)=>p9GiwV3>t-^al1Fw@{YOv} zSN#`t9yH4ozFnM@2fYLe*W8S?PvU+>$S?dCevraf6QuBm_#uy$K=dEMwO+^+-bt9k zH+m^Oe#)X*Wb5U@FLkRQq}1mLQmV{^H(UzeJCD z*?!b=S|mAxJAR6+yX#EslmtcW^opn_7^ZXzpT%|vp5Be~{vBG!#)@dQUNPKM;sCMw zkNq<00PN>#JeNvvlSG7-_3nss3vL&dhXVWX0pUz%E6NpIk{2swg}j_bSELV!bHw+$ z)b`Kx5`43eRV4QGh_U`6rcF)=6Z>etiA`_k4ej{xVjncIgXwiwDWkTS~VT-!r_4r+-T;awpjnrNl?p zh4_0sR2au&J{}Hjwfh-*!01ua+dmkZ#KAh!+`rIAp512E_2JQv5Cw!Wuy`p;t}}xj zWza>tT!h0mkNeHYN1=cL)#%^>%=TlfJMN|!LRHos?Sx>lDz+Qp2zJ$xg9p7F|Lnz& z84^$aD^!71ybz_;Or7S2>$DwxoQ@3^17)MxXpx?eDc(>|tj22l9B*hpI7c+dT)kbZ z?lnADK^D}I*Vxh?tL&PXik1u>+=~!kl>v{nbUeAnL<2{8r}D)F`{wH7&Te`=N>kMP z&@?wnMLCGzJfqEYoME`0rG2gYA7mS=mWdMh>wJn2>f4ElsWL78SJiHbrp6UoiEU1A zWe=Ig5Lpqa-4wN^utSVmRqDhEo+F=xMo1gYv2SY?Ya!$v=j;fi`K`lJ8PV>xr~1pZ zejRu>I=(4f$1N?q6LSvwqrhe)abPU9Sc@s;y2DC+G1{y@M+0w7#CU=(nb=ml!J4u| zT1Tj|uX2kT9&vUI_FAj7H9C2P*-=OPSgBya{Uv;Trr(4I+5Ok9ZGOcGcK+25r5JZD zGjI%CcdvyqBjab(S$F-05DS!hKodZ@>0ARA@A4#aZoM;H&Tqi&AXkQ;0HZOWnqXFW zK%67`xi_pwbsfWAMOmUa@|F`6p}Ct_F&3RV+pJYRw;n2h6Rf*GrO&s8pV#N_4e#K` z)vdA0$L<)by_+&y*BQJV!AFH+09!%JC>{i&P=r7%Q&HaWt46%AS9MY?396O~ZfXl3 zqL@ki4)7ar_K>I=>OX?2xBk=HhMc^&88Sasl`SVs236P(3WQZPV&5TFY)G(}67*4m z!CX+-tyuWcYSYEdI@EBl5g%PUi$qtW+qZLp(GIJkkBfQE{*N~b3tHxgK#E&;VaN{s zZIT#{^4O_+zrXQJ@Mc&if2}J!p*!mW7J-pI-z#j=O+Uq4*|XKE=%*aly5I}f^5UW( z*8+uPb74->{2X=LLr2`YZv?)!akk0r65HMPvgfpqAtBweXYj}$mf^gvVG-eoEG`)PP4-4Gq^y&b|zXz^gG;;0rWPe0|APvb> zgd0o6-aUe1h+;lbtPbQqf)cQPu#}*l>|ym~GKZL5wOq?)JL#wsW?TM^?5}k`iaT4m z8!zs38~gGtRoViaWM6Btu5pkpy@<2hXRs({l`-eJde8oe)*0h|8OP`3^xAiqKL?vf zli@JHBNl^!*;otHyJM(7Y{!ZuD~zyOp3yBKRsnznEVzf@-A*8mS}NU=IPu?b^cQ$i+_&KR&7d z1~snb>-nVq05K;f^)^-JB=r6v^nS>?;4AZa`^5BK_(v;`-aq2dwP)W!IkVu-)68G)t?+Q37{cH2~g9$QT+flfs7ZU{p4#4rkjRn3(t@dnqt?HEy18; z29k?&5x#cQxfywl^bjgVoxiv>5LOQ9p=t?&g!4iAFf%l<%R1Tw_nJDzyzAW`CMx2* z&)vP*`5jBo$c!^G%gI0DII7`qqfc#^zcRC)Y*b!c7kn|$G?oSBD)l|f%yYbrzZY{R zfmow;n>Vjv7Q8}v(xY(e+Rv2UUynL=eYv`G=zJ4KtYBk3xBcx~c9vba&kj^|*VU*b z+o>xvcSEUfXCt8?u+wtR2ad#QI!;nwb7@K(A4L7Az~aoyFo+pER{GXRuP6ts!o zNmf8)$z%h6ZRht@{BXe{+x%zR_Pj%O@+La)pmq0;^=jY}yYguFM86YBp_t<2Z}n>X z2Q8nmleem@^C3s(*;UNfug#mUn;Q+Tl#sgXB~uU7GwobWU0u%JB!~+aw$0S%jr2b- z?Wel!jhWgn8B@C?WTkX^!l0U+TyfloR#xt{0~gxe6TR`ATH{`8Fpar9N=!WUgiM6- z)V1a5d6!~U;1X0ur2?_?=zSzSakZ-Cyb*V9S3Z(H!W6?(4^QduOy-T$8humsyG>>R zdbPXGNQ|{&4EI4Jp`xmx#Ona}R(_-0YL}O2-`*i8FFDGjyB`TzSQtsW6(QCgXg-vzFJrTDS@()IBK2SQiWU4-7PYmNwz@y%AzFlKBxtRM(-$*xHqE_OFcsjk3AS1Ulha*LkLlGR;aiwsLJ#Ro? z#a?UIBF!w$5WiwYr z0(@h&F9G)d%xc%7oB0NxhPn#eY6|n^2mMn_{x4?oqiErAcM}uOuM(Ypfnub#dQs;S zHBvdHE}1B+{eR>N7c>yv?H)B9BGso(Y-{3nDGu8FJXQDVtAk;g`aZZG2!IQ zAiVWeA9}GmwH_X3JC7AJ0QS6PyzD#{B5d7ZfH8I2r=G`P^rAg)+;8z&Jc#k!TmQIG z^zgXg%69tM1W}*94>Gr%SUq+BYbyPyOZ2=LFevfDxcVb-HzMkcwEh zx0+N&c~WTnq%l_Nr{)=CV2En$)Pnl{PkZaZ;H3ezaxkcN@))SA z&FD{tb(6E{%eCqVwa4$=*1>s;x^%#gp8I;ekRYU`faEQ7x2%&ty@;poSe^G3WlKI@ zry@u_JKbhd+ZBnw2CRI))B4x-mA%#zorsoCbsp?(?JROy?^NE@KT+-7=|gl0iVL5{3WvgurRsBL z5*TUa3SKL^({^@Lzks z&fCEDqdL|nhuKAUtmUKHPBbT!niSxU-N)E*>20v~db#6QWT<^f_aU!VUS|jPyLnU? zt$-txU2kzSr!)7QQ1dP?f87{K%eE53M|jkfN+C*b6gvngJq4~^lPbdt+?njOw(*pl zRO+-YF@Z8&z|1|v?b};E+uf>dkNjV-sr3g6&39Vw=Xbty&yV@>%M6*XqUB2^vD!tr zo_b4PPG_Lx#&vi4EZIh-H6|z7POD*_d|nu9_>(&NgymLHo|zA42+Z9^%t~))Ri*Ab zG-wK$V%@Ju=B+e!>RzGo7b$hGP$q?#cDuS7&ZqNi4VMCJ?sxL&hblhtrd~+iW5_eL zv_3tY%_5>VJ82*`Ss!%&!x)Arc6T}r{u}vi>TBAtLgNK&nTpnxdOsQmB5yQ5D|&eF zLR{QAQPI&yk3hqvAmDrzdxN}qc_WS6{Rbh5cjSx&Dei&&z9o{T1A+@{@W-4&$( zGFVr>C-?lJFO{*QC)YnRZQ7`s&*7suS+*sfEZuC~HH=qiF#f~VT*xbD@oyS-tkBXj z>rk7+8!|lKK!1W7U5pG>I zshpUZT$erPIhBdw>?$k>S6x#<%tkME&WrqR;NP?{)&;xxoivs|&+>26ch9sgIJ@IF zh2B}!?^3O?`|3KXt3R+VaFur2jYHD*)^&U*pv1Hihs_w0xQE0-`iAp@a`%S!r>6+q(04D8ekQ>N>l{WsL9Y|0pa-|LBW;hd;~^b3(p-u;nGw)!t^< z&|m+8sgWnw)X#M_@p+rQex9BT_O#qojq~^wyvl0$g-j$90d@^$`}bL|f3GT{Z`Av9 zy8a*b-UYnM^2+C{f0jx%+>u```{+p+z|p|!P|fP{mJ0TonQ#ZyfP2y!Mu^8Wtoe)i4| z1Z&^vT;DbGHP@B>JkNbTtb46>uY28V5xLO@TjQ$F>!xWGS9^cbX`NgAqwGw?sTF>F`HZ0Zw8O2e-rd2LZ5 zC7GTMax@4+bZmTPjYFw8Uj2MLHCf7f;2`belatLnL%z3sJ7H0O8{T0*qRUXF`@l7n^6S~lMniAJs+({O1#SurkN z-5ZM>NhC`SFZn1+GnCWPcH8N(Nar1+*?XbEJ9%l~MOHQZf-{ri z%G4crDc@|{+MWUiubH|fDtaU7aYr+W?4%rYwKB)g|AxrrDsrgQ!sVUTx?TUH_wsCtCCk-%@_}) zN9ysXmDNX(^|rs0XY~np>}6yU$#5i&?=&`&5pQKd8OD-Y3&xWlAN4O&nghH|OMZF% z>g&7ThQBUryMF$PEYXMYyU}aGho;l4W_itW-X8T2_%E{PXkypJu6^h|c+H zbwx6~DPFx9eadj5uJr>~?OJuoqL0T~!@1Tlo%}}DH9lzw<+&x_OZeNl=2X z!NPc|-kEa7Fut;SO9C!!T57_d(17H{n52!dlrr@LyQ;e~8SbU-WD%^BD)p~!0rN8w zL4_Nm7!R(9Y+UmFo@MC@yXPY$WZ8d1%RVDIv+_auW$Uq8vJ_ZuxMcncZ1hJ*wohF; zc{msQD%Nj0TtB+ivsih<=6*IygEi5(wW)1sU2dy){QmL-%ZvT)<(a!R+Q-!AG>+<- z0>TbOHZ*(!a(G_7b4wYlZ?x}syPBh*$}64@}HjE&F3(AA-?JYwJK6(6R& z*zZstJoWO45Z|~gYNT)6pmDlZH*VU!=A$&+95u=QMO03vcCW{bR2U72Gq?XB7yQBa zv*J+qL-{Oxs#XngsH@kt&-Y$KzwGc!(#-Ve8Fwh!7rzX0Xzrk}M0J}@llN`x$W3i6 z;D!Tt#)w`117c?m5u0nVVlRe@&9hiBb3?^KB`JB#jjbB2kW{ zFranr)4VLi50xo3FWv`$FWxIC-$0JJ(pARY7)eo2oV!U$$)iFR(tq+=8gKC)WqU82 zE>rrB3sJYUn--ReFJ;`*fiD4A(#u2Cwb-^Tjt zk=K@@^xE?7dIO>x^}BSp|M}>lmm*y#DSOjX;i+iM&Z@fzeC@47A2}L|Hg)BShO;Vj zxun;$-5c2%1${g=}62PMTO z40=4N#04RZ#4e77aNHuy`wG@-#cI^Ri$)FPc2NdLx~6^jrCnQv3p>d+B>T zQbPwS$+=lS>-DokKe~})4v=yFW9qK^m3_UkzpN;MSry9hl*rd=6zaK}Q{h$ZP_oU^ zuiv1sW2BH``rbV{+;BbC59E;x@P6_JnTpO5Id0S|{?cP%rbh}C=E<_`Eu2vCFp7~;3 z&h2!0DC~d=Q}Y+^9ZsyN>d#fWMqItn?u7>wsvd7+%Fr7o=w0QudZg2TBkA~79&Qpa zV!AA#Tyl2Cy#wlfpD!)Lxis3{S6}xMp-n(WXW8cAcrohsW^pM9AQ1u;Vu|JME4>a z8VV8J1tMBrcX<{QXZQ$D>0RLfABEfB7~Zr!Z)B&p@^i|qt$MqoJ`X_9Un<-!XS-$wQ>QxNg3`aHNp*;f}+6GZixzcPm z>Ip3DZWA&zT^-C7-~k>4S1>%_%!sdHEeLZhcv;kA20u5z{BdJi{MqyVI^4Xc!ZVy7 zG&cDi8m-BnDQ~?k#MNlrOfJ8bn&Q>{9p%UhTudI^Jg;F&yn1~{`B>5xo!UC*e1Q~jndY}TMi5b8*QePG zP)>R4!~ix> zg4c+-h&&>0%MD;-Zg$Kt#e@Ucn2{YbLNUVw*!V`@QOu|SHe|0Z z6Ej*d1p#clmL20M=F|W-)?~+=rkKJ2HvV^Z%o&O~J%EjGX2+bVm?8%o-^kQ{wnEQx zu<_MQ=s5}<<6vVpp&7X7C_hh8=Qc!v4Z%f6`T04mbH-)~9n$cT296HK&H+dt0Mb1q ze8`Su8h@n1cLz8mv&HKMy%+-7&I{V!aYQxP5^C?3yr=>#U$?j84!u~qHjZlBi^V9# zJ4G?!xoeP-*3@o?HZQPSg1YX!0H&cv43x;(+dPi|Q^tLZlMwqLR+?)>6ajgHrWnh> z7Z>Qb8^o80pOIN(u&iX`px~{l4p4~QK{Qe+mP|aq-AAO@!(VOR!ObT-dZh#RiB zkGQxogcT5X9?#LljZj>!iyKQAXlv00JU!y_755uJpRi)W3VD8%=V`=^RNMv^S3($< zl@?vd^99yXRR?HIY`%UdNNt`*6KIJ00$D`0<$5HSXJ<5#!% z%qGDB0>rViXjxD15vrBBUuhLwqno+5?S776)=uNqu;gOuVaCO%VyQsuh{}Wu>WHKm zamTDpl89*q7f{A_(y3ByB;cWm+d?k5RmuofEfF$uz}lra_)xdTdtDI(v29!Mk`h?U zv{z1}5X;1;TC^azd+2y%cGJ$Rf!Jgr2AJmsZ|X*2+>jezq^R1U5Xhp!x9hhYJFBdI zdH3TQTKns{@z8Ve(8kEB`YUBBr5Si;E)Cwk6Hb2{T^Go4bR&>E2GksLkk=PL-md_e z47{fCz2!Sqpq0)#o2;{rwax};XZ1P$;FW!=fzCg1bzYel5B07Pk4qN#(c@}68r1fx z0cfT^!RM(T0H4BZ2A?tjcN~0fKM_8ezS9PQClk0xl;SvmJPup~I>N|1K+Qm80G|$6 z4I~}uu+6pu)B#`wP7Ou{tb$Ajii5$^K+&Q305V?}XlZ*1WExN!c)HC!P$}>V@{jk@j8Rea)ZsdgUux;!sc|rX88bII`{~n@u-7F0p-z-8T~l` zrf?x}m4@FmJOXsNgP@VDf<^(Q%Q{;O$x9CX4ZySD>--OZuRq|w-#7jP9C?-fV{5MDVPvinoW7Vbs{5R)6iT?~GornO_C}|r&b3D8m{yPrj zvJl`=hX7v=z-=(R{m}=&+Y4!YCcE97ZmP zQIP;q^kTt_1bjin%WkIgv1ku5J^X9jG_nk}Mp;a-UBy34m^N8ts-drv{$;MqLRGEks-SvMF+jj|r`byksTmz1kV?3Gt+m7;t{@vEkvp=%8agz|$(m{0hr1)(xySG(29lv)1zxD_CIUarlD*^ln zmeMd}@CMAlWDUR&Fq4KM!HjLx#JOp~K+m*B4Etz(WYaicN@DaXv_={sZ~^>4-r&N1 zC-})b5q|mt_z@flegsD+g&%mQG`A-D2%9GQ7%**Vob^HQ^HUVMIbR);-=9F7@lzM^ z!sZ*2zk9Rx-g?2My#+a^Gh!a{6 z8VZ)ZaX6qF)uYxRzjx?D^=Jz&lq7Vex&bXiNt*6#kOF&-6|Q%&QIC6X>IWPR+viC3?7 zSH5b$k-B2uJTa@xh0;d7{kA7MMhSiU_+&j%R)4-L+iSc@8!FYlU#A^j?OVj`-<>XT z-ccgeyhE-y@8&JV#1o=~6v>dyqbh6bCaX?IAFA0>P(4(vcDF1GE;a4ykfp(qJ{(nYnNvzhwgEF z!iU&upp+J22j0ioXfyiLuon2K$hU%^Q*KQ=4sKn*Km@tZa)whPg$xXmKakg{(RH&W7OlSg5G99!-7I~NsZ=v8y9k-R@W^=&H)~ngI^GXUQ@fd3nO<75ofi@;W>K+F zwkrsP8hoANK?yewRNUHe6xKM(Hz29yZA6L`Gfq|Lu}acG zXqsC?&f#;R6m6eD+#0GpZ^CVvUcqe~;z>M_VbnMSsO`hUThqHsqj(r>Kaw8{ZEWvD zxVZ>AT6=8hC}?Z#Q5WSOYVXev^|>s4$oLxnW-x!3K(4a#+5!6fd8(XFm8+V%sFG8# z!&KSEZ|e+EZfYDNM#P*772~gJ@68W&S_U@0&(;4!ras$}*!fJ$=2XGy4WAD9Or(BD zb2`EZ`y>IJbqp;}69J-NGu=rAXZ0ma(=D<}0gcaUkCKtMNS>(jF8>|NOPAeGeWTc$ zL{6?Rj^HLMh*K!iPD1@jUv9gKi|Jh;|5!*_JwXkr zqX;{Nr^NpFhjAkM^IV+7{us_&G@54taVDbg*VSa|cB9=kcjihI1QcA)6nIY@WyYI^r6%ZyQQJpNqhf zrHXvsWKtl)q2%*|N7?y~V>;ZyBNoJwuczVhS9GDNcZ7HM^Sr=sn?5D{b{;CS&k~da zB!?g@KwI@TW52U zGizk)Y`mZjBXAC1qng@=M^?4Y<{W3%DXp_lX+Yz9dO_<9&TgiUZk;ij`}ik6-(dU( zoo@)Wnf~4h`(0^%pKSbe1xilu?*2z!G=8XmGJLrxndz+DhHp6dNTa94hZXkqi+7~y zMrbW2@@(-vNLo;5E9+!>2t(RDXdt6DJ+E~J=V9ewG>y*mFmoZr&(;}?-1K3sGgx)g zhqumP$fl2IoiU=}OT2*K8LjCfTW7GgrjKf!!3a%1rFF(BtB;qzyYrqC#hvWxvPVa9 z%QSo)H$DxQ4wkP=n4c|PN3qzI)n{*Zn1oy^fN!j53Pcas5D%?#E0gMmGJnjAsodUT zDz~Ql$Vj^5SOKY2ZFg&boCehP#cvC@kb z{0UJ`t9JTOQBI}yqM@RkK5gMpQBIjw`Wq+I4(f*=+AM8Z_@Dv#xQ2c}S$6kv zbTbWK0tTn%BK;oD<}n@$p*lQ(u{0hA4x4y6?!@I)g3uF3REZUunu5Dc$C0<#-J+#% zqE+jlkI>GvB+{ginQ&!_-3`BMGJ_5Jy!!6(|G4Oczz-YafSug4FG(M|(opG2Q;oxv} zht9ja_4yGVBT&yRG=sE}GHrg+;^*MC$yLxkXec$`s#A1IK;v(SY z?)iK={sDTgfNRq6`iR>{vzm>)+Dd<`TqqxmUQ_8G!&^?-Ti3)>pE%`9x%e7No&T#U z3;4zou*LD@*Fa)Vh2kx{>di7P_trAk zA6L(8>7QBs7Por8MZtBW6aE{zx1KC2jQVF+w!by(@?@+S69-S_XXP2#t#ZGL_CA-f z6;8us*J1hfU|_sJ$Nhbk{tMVn`z7B<1sD%F)R{TW>%G<{Lbwm$tvr&5^f!JXUVU=` zSH331A{+0R?5*SqQCm}YZqI4yaCc8@;~mAq>(~abYq_h?Hc=5^~f`(34h-}kKcoG%9w)Om5pzoI}L z0HIz||Lb&xO>4M1u^XOgo~qSo97eq za~WVDX&ifY)AzpL-!W}CT>n)g;;E()WP+AWnY|*H=PkQ82F)P%m8#%_b@NS2Xb}c|h3%dQ|gk7Ydw%}+IG5ypw80dMDc3mlH*X5{I zuku<-g6WC-FLBvrU@%wSjX@Zd7GF1&S=kK{i;C;Hep=B1;21pi$5ENkm1FW~hQ{!in-kbjT= zGx;y#{|x@m;eQPOXY+qP|6}<-kN-d7znK3E`2QIHCH#Ms|5Eh?1;@n4%$-McYdf9RYbj$&*-TyWaDK`Wk`>#jkBiwWFemo_-w)^;vqlfea^M60O9VZnpr*D9Vp!OD z2m#;yp_k&R2TPs;jYQ??5OlGmRAd1WNWseem(bXjndXH?5hPIL=HyU}tTmJ6^`&(kA2Pric zdN&$*-dpyB3NFRz`Q})t*Du2h*o@w^OgfHFvu25CV1g&cB1=kEc=z2%Kgtg3<9;tS zmk-y_6+uH&GVP~^qDVK;(EAixQMN0hHl?(wq16?oYqHv$l8Lxj>8im^zHcU>We20U zp@NTLFGTBqGtl~!?3cw#-yl=>6kajlYE!`+JpPzTWt?^VIEG3ervA9URpy7=Fdm>A z`afi@AD6ew1OMnY*O<|+r5?3LjFb^!qcvm)8sPxAv|*7NOf=N z>S*Yo|0>S29@&=~`z+RXxsDfJqbCNDZzyR^jeSuc`0^``rWTY}q#jsmpDP~XL4su! zsn#}L@#VQ1=JMheI!aVEnMyZ%Hsb7TWZIC5(uL)}K5< zQ(Jy$Z&ODxMzLDOqT0TNB6MR22 zwj#!mwqgA_)xdCL-swS^s(z?!y^Lf%D)ZP6L?b)yxIXH?%#jQ3tM=V7J?3wniEUNG zC)Mw@_vgm^mwI3+!9$p$@&Sgr2~VM2)83oQ?w9*dpBWzCC zyZf68vvq>^Y{KHhy}NZEJo+=2ZWv+Z`QF{SZt|oH8b05@ZIpL+2_a7?B>LD9%zs6H zjxq*Tm1+xUb{NW7GwjBDa&t`iqGsu+J4ry-=ihnXSu?tRb($WI&7y~eUBCGaaJ1Hdh*F@b z8GPgDq3xtF?04r*Lxe40^;ii8>>i&WiprMhfY2JZxwsh>3ukQiKl6iHpnaz3!UUw2+~(wB?8mPVy^38Ryy zkHHQw0c_~xbF%f4QGi#nq6jQ^1_n=LrTSqto_g8Hbks9Aly`)*e&eOILq|r8FMTLSNFL{WOiDOJp z1hnfi7IGz~TZC^4&4SaGeQi#|>vlp=Qk z-fWov-Pqv93Vsys0-rEP6*C7*Ex7=k|EPH^Y5$=;!g5U@woOT@VCHLv{lk1IMZFo0 z`O-L;vKTA0Sm5~&(vYaGr1pt^dwaZODbF-NtI;&eeAxCsTlQv(L2z+=&oXbC4ov5d zi-kJbzU56`RhhgN^DyC6ae7&vNHyZrEsUWWEZB3~voKFIcTPOC4*#@zt->W$BD5}U z-fBl82n${D0k@ghO{nF@pw)e6#J1dO9cjH4)W@!nnL)uB%C;c{dsM_(~+^H6^eYK`JjS@yGP-I~=7jH5Rk>JgnM;>|q zT--@h`*ea$Q|-g9+oNLQEmS)xV=iahXt3!XzG)1*EE;M$VIPa1S0Q|IL3JIdX@#sc_}w!+B$wg7SIVOHpHOO(LY zrWRL)|8hLUsm0og$gk?A8@*4<@o#N- zjrTc(wYC2SA`C|I=3(LW(9G(i@+2^x5uNhuD|1Bvl)60nb0H**L#bV9JcPf2K2Xtx z2_OF8L`1Y*h-iWk(KsO_!zn2_I^G1b0lUbUN^ImRPCp3K8FwPm?!wxHYySQexG0b@ z$mUzTVnE7kzKa(_Hnh0JunibtCsST9f=&pjRK2U~okeDl;Q+k=D$P!X@C%D?E-)!` z3R0(1+`@J0{7#Et)krN1Qx6m>D;K)+1!5wB%ZUP??q|u#?0&Lnm6C@=2O^MXN7MJx zQUh58x`1TaL*Y`mVl9*885J%Ma8C1*waf~Y#$RULQCPR|iPN~$4G6cc=h0-RVkmt% zY21-g#x_{fBsaagH)$0*Sk$k4h7(=p{koTCx|K>uMyWfhskBSQfg4OOjM60bQjlHv zQEvJG8lP)j-$vI16qnToS3RX{Q*&gDqSr0~>Eatmh5}gESkAE0DfxNA1C>Etdv#q$ zS$=q3_%wYts#dtz;M5;L`WZtJRGocNwyrSd^~PO#&!SNteM6r;Ls~E|LK|4Z-@o|rTG9+x$-iU zj~T*zy&rlB?o`YRJdF6)fLHDQDanV%b+;f!8jS0HQmUi%RpPQ#lAJ<4WKZ~|vh4jp zs_3&bvE}6dCgHyh#!A3CiD$wg=%j31Rj^8icQ>q9IypB-c7ss!YBe$vimYzj!BGq5 z1F^60ZFUlBNY6i~8=Aq#n?dA*+b9oD0b5yFjm-^sMdKM^AjMq5Vj6DFw;@#;RI@1}P{Fqc0j9OhCF?)tnXcUXE?8RNx*>ZLf^{to=5sWcBO!z%v(gXy?a zAaBZ%1mQ5oOUb<=jn~WLY}4l?*qVn@v37a^tBb6Y-=V z)ZQ-4Zzx|#9_EtyFE%xSc0>9BAuy!hjhm(b>A%Wr1$&C-HM|T$`piJN*7yq`{@HDy z0Ym&C>zbDbkUw@zYd+7aHhlnAlbwT~u#%Jr++-$USW-1#0bBnzn=!_NNOzTWt93eb z$&Lj%p8h~w9NiILBdpqGG{_n-KzQuVlS~B(V;da;)%|uFl!eoc*2oe;Z-(GNYCy!) z2Q{L&{TjhE;eiH88Ql>G2*_Xpp{vf~LXG-3jBG0DgK3brUsjwP^P46=feyIKvtO#^ zMq&dRB#TfP8blSs@J5InZ4eKcrbO8^h?Zp0AV+@9zL~Vc1M(Y?pA6-(f~mr6Dh-ey zh!b7^0}c95)1dne|9E#@XJn|^nC(Q~GQ%qs*i9Ejf*irl)y>YxJJR$>eD5U;(fIx{Hb*An=TiD6p3d3#u_Fz)9YA`91AWWFI`;$h6loKX)efPNil6top ze=jX45x~>gee=lIc`fWaigl~Pr5hoKB8eMkq?V0R_6mOkX5H}Hw+UUr{8(%JD0$+? z__>mwM=bqG(<)iKPigu2EoqhP@_xF!UYYdrUTRsHn&5A2e>Xq$9@V$TIWAu9-4{W^ zKB(jOwIRbupW{IeOw#c_WC*F)a{MoeZ_gfYwlMFB_Gi(3+t;{GhBge^*Fg53?!J&x zoE*HOY+Lt_59w&veP{6#&(n0ch*F+nDqi_*`~)SpcRxZ|mDRd2zPn#4`YqdLr6zx$ zenXnvCQX|q#HiYXc(ZjSV)tf*V&yp7g8GrBn0V-+9$^>>J%zJA@#$+Yq-V~&k<4s| zEH;;v6DJ0QF>*4KM@yDcEQGEYxPjmmr1vw`>!EC75XQ&-J#2OO+JL<*oW+c1KeI8O ziX&Hm{u8Ck133fM5N7aU^)`1sa%)qUJem~@R&h|nko^wb;?jHN`}R4E}rE@h=sA{_W2(TL?Y0nByGx;ufUj2?1{^|e}6Uv^Erv+Xyd z9N=ubQ}YaA+NEh*M%pUdzmUkTI*CA;FK%tnB!c1eohz5fZnR6XE&n<~5C_O8!UC0L z@*x_;mWsS8QUAKZRn?|E>e*pJ=r4tsv;%X3&UPZA5SL#C%BF|qf1OZmo-Er&6-3^~ z$4ll2rrZ@miR`Fm0b(He6;EF;RC8;l{PQ&Q4j6Q`V_mvKdsNQ4ph1m~ny+LMiw4tk z;>gb>5h{C85O!^_IU zs5eUbsJnfI{KBmh%ttY7&$Z|g)HK)zjhU>u?2W0`2^)OmULH-B{LP>0toGTnd67eQ8io>kgryIwFkuFX^Xob52QA+x>rVHZWM&f6CgvX`Q1%mA7#4E zq9Q{}v`lN)1TCS}+pPdK3Ha3YHNofpM}u%(M;oe1dn^}C0(xPjRRPUs)zc&wr&d~% z)MA=Pi**l{&9v*8wNpaW+GDEXhi>^$oCcy#5JAs#+>(+(AIW^u1LuNW+iohUB|Gf( zJOSZ;i6H@b0)lGNC7Z~?2AivX#_PfRsG5p_Irl z(XdBL3e_;G6RC zuFrL9xDd6Zxr}}Km3Z4b2#qQ`V{jxrM0=2eY*p&HtOo9MTHSnU-WDnY%b5H@O}6-0 zt5#F?(xqZU(lQj~Vr}6|B<4tm?77lk*E4QhQ<5U-DB;@)2T{{1z($yF9Ux+o@aFW| zvYVVp=z;lmHFsW{+NNeL)MkQQ2A7t##xcIYFoim)7TLZ1%hHQ%Jzw)wA?}qZtFMh$ zHA%Am{pq@Ek0?)bdi}Vor0atMDJxhVRu;6ahSM90P?b(v4?w0XVdeDcI=M}tIyg{? zvQtU05Y)_hntMlTgnK{_j1Y~Yf?8Jrkji$;ssY4ws1a=6sGH-BpdLq~Tt=+`S~fW2 zvJ7<72!Pt=*v#+-WF{C}mOB$=5VXv#0F&Oi^^)G|u~v+1I`9X;wc+ivBGsY{6w?<2 zO9zI+t0w}hGA!&;rS0?`$sM4mHgIx5c6CE}=qAJ72PA8B1jJU0JKzDBRi!tVXqJf` zxX8{fYlM6R5Wx%6DJo!uCg3fo0dRnxI7WoB(ZCat5RMs&>Jv4F_L1G-GFJN6j~s<2b1D@MqP z@fO*DSlEcjIx!0)>nLd_iKuydR?S*>RvtwK&}>D)6|yo6n(4D^W#2A!F;)WHsj5Ds zi0jo>TYfs3ORu)5SG(O+7C<%N@3$m4*>YFq0Y$^9Mxxu=yJWr{{htmLTL(JMT6vU70)@4?RtBfL- zWq_JK0MvpCWYa*lf#LupX92NcF@0OnqDuo97C;tH^SI+Y0YDuw0AfJ-8h$YJV7Qh_ zG*SVsHX)McW3cSo$+$HN5|&HgJ$EMnE;xX~&Ser8zD^;OZV_B@MSayM_jbK8_Si+*zl%B0c>{+K?)0MeWzhn_pjbt^CU5~s%ix5P1|VOB z*d8R^x&c(q%pw}JcG(izp{}ux&`73%K$Nlo;M6PV7yxi<1(0l6HD(KYT~bB7?V=9;Y-b@9jXKZQuSSj{yN)UtSK?oY^$TqXtqfl zRj6BBX>k;yZYPqGrephzRI{DTm~AhKq&i7I=a`++w3bUQHB}<14@lb=q?KH1szg#J zNgE`SNNOs63Lj~gL<)gaG_`E}Qks37MCxhpzE7PXk@{;qhX*^A)(Uu9{*No*8HZlrQ01xm||>}+ImASpT=2$q~6 zX)D%L5f&jg>P`4to!F?hJT8;#k{m^m9KDC+Xl+JHwAM+E_6`;&l{X*qnp@B#;A~_L zqNCe+wX>10O1D6AqYgDvi#8B{p6GQs>LWNvi>G)5me*Bq6=ap1MRb2CWI!2mw?6-2$8tD!N@ch?Ygi8WSzCw2gmR z#}giO0ZY-An<#-0q6(5N$eKBwu6|p3TKrZ!VZjnqxOVX-R#F`x?kZNlmB{&z32>l4 z?B?C#+{(N0Lu+^u^)c~M7qOIRXRP9Mop?#n7A&hjO2 zQy~Okz0sx~bO@F5Fu_Av8cdzO>E5dPU8Np@mgJkmncpM@ZXuj(PO_c_w9H5zW$x}* z8OkOG*m}lT?S>LaSR~U?PA0*SA-p0l;|>8;KJ#B;+yHbPG9n>aulDp)MwKyh5Pn+F zE3zs<7Z!gc84`$rB0t)5Vadfuv5|;;0AM~|v*cj!bi43E-IVkMj ze6k^2CL8P=H5&yMtHFS$yMSWXygjsIHNomCo#3>TEHZr6ciF1Xs5MlsAbLb8U+E+% z3TA9m86H?}F-U}L;|B=gjb+g{rBylkFug9pnO2y|B9+>9XZZdhfw4#C_d{n`M6lsC z!Iv3AHhD*OjkG}4pMYf=APxbDWGZy@C5j44{sCA?yh2oVGelrIvR=okx9tcqcuMuUNBFmR0RPRiSVwXFx^!=}7FNyT7JiuQLph74X)Qz7)}n6=B= zl*r9K0F;>%fdK7MVh1OJsx&+?3W93K8Cn_&q~Ypf8kF3A+ez8>WWkF>NVG=+VMIu> z8K!~YLtt!DXG7Gz%&rK9X+^N$9ApG&Q|@d`HwoQOGMR;BJ4&!+W@}XbhyWy7DhNx% zpH2C8!;uSuodZFEq=sZ5?xQOE#U@9RL$qLbP&pG{MUpnbR(1Co@EmN5#TW z#O__hz0JEaI}$^Pu>$+IGdLzzG&zRoify}UZes2ka!N<%&+WZT_cuceRTO2SI|yZZ zhHQPGn2*atLe^14*4meGzd(FpQ>Eh_BVeri2`&c-1_YEQlxQQ16yv~4IA}oOM-6|oB@_>8bk&?@ zyhm#7>a@$VHtJMp0iKW>zYJ2V>fmLTZr4uV4)t!lc2C4DUGJ_Rqe-A$fOZ6NxNR}r z@(GCDlMo(mVbEhfT1$_D4ubP|>_%ySCsku~#|E}`?cr$Yd)&L@uHwdMQ`b`Y)#Qx7 zB7}W0^zL$}9*wzOUAcC39YZELMiOo2%C(srI!PZ%w2>>9O2HnpXt&2I2z8)VP@cQE zAEQ?Nk@vm(t~y~4Hz?sU#m^JU?+?LRI^=hW(9o-5o#8;OR&GdKA#Qs3_wo3okala?wAJBa^z(2Te zT$!9P5f$)1!8by{aA9?FcW=?1nL#Bq#Jqt(V zGABx$l{ly<>tBJM=4TWB#)SW}Oh2%X&yPP)nKz-0@XzS2U{yTt>NTjj1mkD=o5Pcn z@AN0%E%kgP20Nvkh>ZxTa2{*?x9&~98d81$5=0e+9kpa-mDNw_ReNbCTaYY4A#H>p zLa3}>tMuFka>^=B(}Y74yj;uMEX=|ue!>o!=m)_SP9Fss0Hq6c1bQh|ygLDdW5Lpb zh6G?zJ4n)y(Mbu02p!Bqqz!+JNCIcbX>o({Ta!&y<#M!9*2U3SkzBzkri|PePdWuH z^Ju!xbX5Xf%y!dNdFB06S>X_^08NFs~E9R+rUfo*gu&L>T zfNB@uQm^L5)?yH;^f2pMAx5_KeVHeC-1I+e!%pmEPeZguo1`1>)mF-F()C?;FB!G# zM@+7LGgKL>z-d2wCLwP2{v4Q^s5v89utW7WBE>t}zF7iD*m<`{Hi4ZmJO#nT+07$k z3B@{#Pqsa`SoZXu+jhy8%{YAWa(ug#=_12E3ebTuq{Xa3bEIM}W7uFj%>^Pj$PD_l zhgi`X3Zq5PFAA!41&Nz>0&X_ysBO$~!LO2CjO~Jc<d;r>KJL(NMBW{Lrc(mf=IFf{1N_-DLZ5qAG}sb9>G~ zsvtnlhf)O*FGRseVSq?u_yJ&4L0tIBR6&Zdg zLtz3x}lBU=?@4&Ryc>Oe&Lp;SS%0#3-d%#O#j=cEtEse;(} zAt&0P7G$e}1Tdbt*yVB~C3)B_Ob7n|6{;Xwe@nGm!OZJ~FxqLGcB_mQYy0d)Ldse%MhO=TaX3IfXK5W^tOYIM3C!NEaV7Yn$u70Bvvvd%yi zM39|P1u1vn;ZmMN6(j)Q5333?Cn%CW{61AdYE>+N`~MeJkZgeeom4>r5Vzs~@Twpz zgA-Ii1|a_gRgeJqZBhJAsvrXZ4%*;40dTHemL%!FRTadMDB<4YRY3{|h>StBEd}p) zQ3Wxm{U5Fhazkq&BEo`J#yeXVg#9kTiPqwHQ+r|LQQP)=_dFdagjBKaWW}sJp7*#D z0hnq?1%{QH$30`0Y?^cQ=dJV*+of+QMUh|($PU+r{+rxXl3qyn=bpCPSKS}y12Zkv zQ*v{ZGY1)48wo4?=Pn|NL_CERrSFiB9Qk!;#3GFtxJh9~MYxc0-9WV9*JZNZ|=8(>aI5TK7x6qmr zm7`N#JFf6%BjV&v@buKhKguI)X7!u#)Yn21E)`xLT(;r};~@W=XI5jJZAl4U5Wb-+ zb7FIby>|ifD=rte-&8Ulb2c1o$Nig3d@yBYp-kDl&Q;^*lx<@A{&D$}c3lhoCXE;p ztl{d3Gg&jCvod+*M6Oj4Qh@AgICf!8bTwha<*9;VZdobqn0RPQJhI1$tTvTmzL!n`mmVe{+ z>tOuw*&kwdETx%$Ijcq=b8)NwDUL)0l>tGobQU^qf{`oh>! zu=5|zI56b=dIC!m&g@HNaw%yW zGcx~xN`2Q3$Z*>}LGwcwo@?CPeFr64K2Zq95sYJYEFd2NArjf?eg>aYuKWuBZAcR* z1<^yl?p{vt;Fc@nY6;UjE55mi4N^DGUT*Y3_V%}feU=NedX|saPl!@)R@W(!! zkH9tp`?GB}l27A-Zwh1x@#*u^62q&F=9}em*r5#<{iNa1H%y*Rs zVWx4hgKZ)lXJFwiQi2E3q~A_a+f}Kgd3J+BwNjW)FI-`4a0eImy3&Ia%*2dr?*v)W zc7jayN0uyu36@2wjcHR0=}erkQ`xUnh}pbx=6;O_4#@cASp7 zn1I)V4^vW*To{SO|96&t(&S;Hch6eG^ek-D#hubYMdZ!;kAiQV*)iiqM}hy1E{q{{ z79M4x;g@v)m!fLD&U@qt4#v_70_#%CyrrNB|2f%PIO1#$2&uOBd@rCsS$Gp)MJg~_ zy2pE@PxiM_-_DnsLF&;@St*B9N}teZ77p#`{u~>DuEh7!JAk7nAjK8m&q9i4I(26- z8R*LR*8yXU#X^jRC9Cm+0`t04$PF9@rwV8LBf0`kFwVBk5T;?%D3lO;pTdQL)nTWd zY5eUR_}e+~w>Q`sz?5yn(pDOcdoEA2wi6v*&&HpQuQerb_}UEq6oSk;l%+xA;*s|a zd&0twcc>FW3#+>c)GF3C(wl`muQbM11{dST*kW+;U>bRXE5+C{1E9^Tji+VfZ(7Z- z=Q3jQpuoW~;gj?uNV~z9XKcI0&q~;H3{J#|%pX1##MQ9u@A1Tn)B@;p6 zp!52V8DE)&$ERWj&G7gN5c&t;aWu((2Rtqp3C34XxcC1Oe}4h|jlvm70?aA|+Udb= z!VHfWzD>xuBx*CDkSX86IJhJf6LC^#s5_DRS|Qff2rBox(2wC|96B)= zI2UOPRpRX9f~6`>l9D+R2#iO63yFnEcqS&Q-;VywnAv3c#L(Uh|B7UQGzFNVQz*I0 zEowsN3M@!2|BqY=PG(@1Y_%C5+l^tek)2J)JZuR!cY4h)Sv-DQB5S!ibYaG9Sw0pi zA16-ckemOJ7qQy1N`@yz4Zv0~WYGxOzlDu$1)+l=w+P$XE0`863+Dl+3QE-rOcorM zxDtwjV`LGFr_30ulx`$g(2kjU#jk+<#6BI*-0+R&hO_!8L%4Pb!#1H;2)u_p2m|2F z)*+3Ct#J&Pspz7%VmBpa`)r}Ow(Vr@Q9HyT!Y_*(47l1}t}Mt}YtVpK2zT5S+~q(6 zym=(4d54f*V^5_nV>V`~LCHxeRUGky)?mKrnA0aFiLL-T?eR2w2BSy`v}=G-8m@!jega$BZX3UJ4T%?Nak%24;<|%NUpyTc?k?M4N$GNT#uMG+kjb#%QTa}h^3A?7U_0kjrkg>jsB*Y3c&tjybCZoY0t%ttMZ-J7j9n4>?%+*Aya zop$i0hrCCgV*?vS`x6E!7J4sHy%z|A<(isXa4CCP4Aws_4q{9q^qRXB*b%P4cK3ak zs2?$h7Pk{`o|l)37AnzQXc0kSgLRN;3-OEW15^tmYZ_nZX&$^;J^Z&rixI}(55LybFpkaod0z7jtQ~?Lj#2nd_PsN!chB?> zNm&w~E4#2QkFMGb*reV5tCdZ7dy*7ka%aNd(e*Fjxme`JlKjS(yQiDHoaH<-Ieq-h z>Sx53x0+?e@d8Ye7t&%o?|NA z(<~p36M_O|PfSQknqc-OhI;9tGd7uxoLuPS&YAvE$4?4B9j1=5&56_})_^y=AK+`i zo_*8dIrUe{7I3uw3iXTE+?@JyGB=YBv2t%--6dS6jONAsO{MMe>h}1;wmX+DT^eui zDh{n{KXO6);Sr_lQgKYmcg9NFqt8?MB}x+%K8yzigL7%r(>iu8Kv&JZ&}1fgE@*Ps%Vj74`08Gpuo zOb<<->orIDm>l(*BRspm!H@bQSV-i7Fk}AqSm|NFy4bt#9m#J1^>G6AaSqh)C#?HI zu9prXK{H1>5;Rd`Arf?5K!S>TLq>wi(j=R;{)jgP>Kq#_g#>sNmeAG7)-Z*P01i>qbSfXIC#*!E|xgU zk0Lz*6@fsxYvtN*J96jM@%LHeu()y5?r5%?5g`T{{C1P-b&;oxDsp&l^)^#dc1lA z=nIT@3bZ%1>{LT<+13>yx$96}C3qy;VWstpG9+#fBI`&(#{};O z1@&wgpeFK%Sk_kQ_dAb>mHspM=X(){VEf`tJICn6H9vXnm{{uKE1|P9{dZ@U?yNlY zY9i9@E&F4R73p`&<~ZI08?NV!(D<8pHO2`$@H&6>nK`Z39>beps%V86iwi;<@UK-3 zuWT`W7V}r3Rm{o|(fve6RyF=ag~zL}z%wDdLUQst=Z%m&fg8fqcfs?dRl1hV4RbSk z{~_FAcHoFJUEhDUC6A~E93fUFXUjKYGVK^K)08{TNQ8FHjJ(}=0nM2i+TZ;K1j?Kv z#+#lRlXa@$cU{EMz;S^Y`knEImYxKr+k0fXn~T((Q=8gGc=1*3hw~;)pWxm1EhYg6 zmT~{tO8;mAeu#NqLD;|y1AN!y_?=DL+a|XmH)6En)zjD*;gQnZH0=tdYD50bauZqK zk9;oIyhKjJuVsg~?E56g$tAS7?Qf!oj&R5giT`{>r2UR7lLaLTJ#?h$NC-k1Zor&H zhcm(8_*_ncx$9C{eGoo^ql`^aU3&`Qj;S9%3telz36F>KsBmo3wV1RWY59*cw(M`B(&bT18r8X}47hx6}9#1cj1LKYCEtAv7qIIx*HLq)@ zhjoVkOZ_CLjgOi~ho-}0yykBci;>lt{xccSi27^VyDo^fAIqyqEg6=>{iOrZrgxC> zuB}MT$gN0yC8Uw4Z#tG+e=zyAg5;%c-TGb3@G&ZH*+DH$efW0TM13s>8;WCSI4moo zrlyT;uxGjWIgPf~mGmX26-8TPh*0rFT3-a==?A$KY$HWjDT% zb?c=L5uP`#B$`}2$9v@F;u!wd#>T{M;oPq%!4Ga14|AX>XQTJK z1OhZ~P16cPHVkX?G%AT?QHl7meEy5jve4n>7<`s0jt0+!U$?z zTjL`X({hVo?jXe@8&=Vmc8|5<(8HKkH04QBd-r{ekXYp9B~xJNOM;2(9&gEz3*Fi4 zQVEc8S3CwXl}<#h-Des!lP>1J9V>m7MKI3q%0hC{C)B2&<@3{hJsVY4lIEgk3+aP* zvh}Q8k(@OqkvyFmW+tyKg0oI=CY(sl9#>h7YxJ4PaNEpeL3_i68N3dC0p+q_3kvl! z3ak95krP_+HbseKMyEz1+ss9ZJ5ML(&K&gqwoXi=vTrjn7*BtEhj&l7ARne=hYm z#*(v6R{#1;{d2PF&mUZW0d}V^cXp?#e_6h(|8iaYjQ6<^;G8slstH%?jlalh(S2%> z<_qnmcybhd_Llz*GZM5aLx1A7YYoO_pj|hn?PgOO-kArq(55p9BQp)-YuU&_4Rays zhRK4E3jsXH#o#e0k@m(Ps9jOmvIbbw`5T)I2cADy=iGjMfDXJ5%Ty}H?{u}P z*run7;{!{3b<^Qc-Su#(C1=B>e(ye)AieNc&tH+eCckBK{oghn#gS_ca|3 z^WFp&@R}QGLet?~zVpOTr-t3YBjLsNbbpl?=;P8mauW65TY867;?5(;R5gIxI8MX& z+-Xk3@9fUCv>J|_u2X1aw*bb;dAe`nHOs$khM$W2$MEgAGj1cig`D2X5lx3Hy%uqh z_@U0J8%wt~;;S*+2epn4ZQUfV8I!EnV0)#E)n4y3hz-BtlCDu2gupNL8o)YPK}2D= zgdfs)<48`Az2;9cs|-usB8Jdw&Lt%tal0OGAa`m?2*tjxIm>N01qiG-B-UFWsF-=Ca0 zW}pj&EWIx#uK{-X~DI7y^n9&>wTefuXi2K zi#On&@$(b|rrt*R!XaSICGgd%^%}L>e+g*I?tNAZHS7Q)Y2B#T-J?6&U(If(lsOsg z;)Wl_a8o$n8@Gr5?nLqq5X8;n<1iV8oE=p7Yvy}J2czw~a(V8OIEXpU@jl;=2iJIY zSG@i0+(h+j{^Sz;wN|#jnTyePcvd!B{=V)_q;&jJwCV6L?`|!_mbSV%We0_B#%&b_ z^G+|i#5?QiOY*(b-|)WpiuXm#J$(T!lP{ppavhS9>kvVF5&6OwH+yHj;+-+J%scyr zGWG))AwAJ0X&nqnYcq|ewAys+|X)O|)FLFG4+St-NqWh+j=3F@f7$V73 z(wuY0`6}kqL&Xyv!3-GK_L+top#@hYi=Mk8S+KETM?AHdbCLJrsYTFNx#%)0WKl-l z{7jb}4Ctqd{(nzW^iSvvle?$!m7tEs2jg&Gg>I_<+z`)8-G!j1tO<6|_jfHPLZ7$% zC2)r>i6@d*aQxE-6lL(g!C_@`0xrfTw>Ny^I5-3bi~c%2fC56l;5!ZmU(15QU$};C zN*WAy-%4#T?2Exn^H-psTJEjf(*7>WyHD|UaA8}{H5cYA-25ENc_I6$w~v)|mhBn9 z=l&jlt1sIMh3&fw%O`Fjo40afok!jdZ{_CFPT~IYoQdn|3cQu;k+znuBY+F*(TRua z-h`)VBV~W-;nfb#nsP&{=V#%wwYk)rqew?TVxinY@rK^ScSBhGgHofuCSLt+B6YDq zHRr0!Q$?SQCv(&IY9nE;o;cozlHsnp(}}7Zt=D*RY!4sxZxdB_J_lhJ#glW!#9KDk z<;T~CwM*cz55MjF#r%U^O~NStYrIzaPj%JvRkpdTzh`^^FA4w6naPr!X!c%25pn-> zW8!PolbkvP7-M(PZ1e@8b?>YGb7!`^Rd*&{eaDTDPOQ6l{H^VAf3@1w^Q2->JS^#{ z^l#W1Y^yorh<-U3ulU-j)+EBxXw=4=Z}+5l_RHZO@Ilv@o+pyi;}=bh4~%C#i7MRi zWKJZvuHc-urgedePuM4 zjTgdoykR3mZ;OT2h7KqHvY@5EepocJ>Xvi-+)2^=TZa45e1B1R-|7MUjqJVWt*rUJ z262pS5%aq?-Obv-6&1qz)l~mtdk-+V?fL%a4?o|#uubsz{QC?01)XIyrK^2c0J6JC zaBL9RZgXI}5SRdbUn}d1tgSoioHnp;{`GYEOIhtv7+#RSMDLesx@b&SJZQ-C-paK> zBWMDZXD^MQj054OlL>10EOYGNL&&tuO;VEWd&I$?y|mCdNth0@uWjwZLn>kQwmTabTof zPY$xe{18NLEyrMRp8f&$w_|OOyH3)>sQ+B0&ILc?HUE_O%zDKPO_n4qQji1fGe&<fQB_k=b8n%ECT3n|~viz3{a>EF03=L-LZU+2{Sy>)=*j71fJ zy${XGLm`xa0+W8WT*(rb%*TJKY**Q~G(PgX;;GR;1$F*hqfnVzvIf!UZ`hW_LI=7& zTdR}3ef6&ZRpZQ`OL~xDb=*30_dm9Pxaio`*Iea49mfeWMTtJl;XvmGkjxWd0ul^n zRg9s(t!u`u1{-lgaFRTZ5s#;w-Hv$5*>s6x2y+FQ^r!a++^fAmlzu1s0#y@_`)jNU zF=#!v1Z7v`)SZjzmi#yl_2Tufm2EchPV~@$Xk^VTlSJSa#FLXiWOc*3hJT$*O{??c z_!*DagG$BYymymykLC803bQ(1;qSECz!+~QV7vb^UE`X%e|bWqsK6W3fgCw{%@etc z5=YTkU9!T<4#KdF-uc;#Xso{x!je<5}As%Y|(C_<#W zw_4rn68>gn-Wo_9xFI9pnp@8~aUarvsJAVgtUa12-DEi=woHWNLFt@|(AXa*FX8PA z0N~hvPhR4!tjvvu3VxbAy(#>iP$IIu{&Dt-ExQu_-nv>09`Gh50~f!;00|P=znb@c_V84nn(~%F&$=pZYr4=pvy0-tN_D^2RPEtpi1HThT+)Mdjd`_uMh41EhRfwPKbJ^v4 zD{DgtJ8%IHuGr!|axhl<5_m%><2~@ub*afAe~(5C`ShxmgQ<%pFUv`!CgV(+S%l@d zv+nlFq!;(sB}!qd59dxQjrwhi=U1j~%};4f_X5Z&j^ zq0$NWYBzY7M6f~_5nebxi6!Q>d`V0&b0e+Pi7|ez z>$)5?!3-BOQ?1j%{(1-F-sYtaKw#|TcPkvK)}7id^U@FT6buP`wJ^p3(#i0h2Emoy z$J=6j?B!)0pbGe2H>`v0;NF;bahr*>lHq$4+m?>~L00TB^4@K+D#XA!yP!L=k{V3k zgA7l$vzDx_pi#gXsDGxvC+7E5M0zUx7wYcdV4n*BYhx`IU-v~+1u%-1zE|St+8q3_ zb%Y^RaS^tLzQOdX+|jSY0sTr9UBKCbANw|Z=!S|=cP#RnKI$J;-4&r1Vxb;)jMr1& zBwdX0W!q%*`K2g=@aWGOQ^?e0Y%b5vulxLpnaOi1la+@P{)T93YJajU8o6}wg*}&K z=yR&JUjtpR6|9pg+L}n_RwQ#`khF;dU{pP3!LajuuC{_~fAZPX)&FZ0p*YQ` zi0rJtr~4djEYkE6Zm@n+4~)RtuFw7X`~B&~oSF1xrx=9L>aL&62it-s{zcD0Uh^*1Vzl}*7^J*~9%;d!-GdXH$ zmWX<0vOZ^~j6pr75lntW+k|L_0zRtkK=K<1u|yC5$$b^_RiEE;26zeVpGbbT>(^g> zzkeoydqg8T`KU~OnLOL-KAS1&&j*!sLsm({drn&sl=JQEa$2pN2CHpU&zZ)zQ+_;o zLD$!bqWF4zxgF}NQl?~mzV%}DKrg0c>VDS-Ki!M%?rTuFLH%cD*Pn0oyMD~bl=c4% zDog4sjE|LdYR@?tcnHc{b7R)H{EUyv`OLBQ96z7m9aP$~tkSaP zb4_(tIX~m$Wc?>z`=#A3vX)S;hkp{*?PV*?bLNM=l45WLftCo*M@~ccc z>$xd=JvU^-z>w?tE%7Fq^}NM>S%rhv^JuCVn15^63G+XwB!oekb&x&(bF<3%86PJZ zufHQIGhQo{DLwy91CTthoj16=k>uhg;KY8-(7V7y0XwwS1h2Uq=lp&2HfYcqwZ>F3T=w zoRu>qJ{nC_Wv7kYGv&S0wOt>{Aop5pbr(0xPOS#GLsig?D~f~4b#OX|A)JG0gt1&^1jv5SQ?pu z9tQyel%OP&jT{tKB1)nOPSDsh_KZEUonT`FhOm)CNR|x*OF+OEKoYpqjO^S)Hk-{R zn|(K%i+8gdLayjyTe7)H7GRs3#nm$w#>QMMY;3>3e|5Jc1IcdQ=lj0reLfznsjjN7 zt~zzjsZ*!UIVIx=6N)xNJc4kM-C=f(thYB)A?yAft2h--fCZ%6SA~mOTfyc0a>|%H zZ-sw9ydq=DmZ~gm%1&+W+@`~MyF*bvu>0lJxQeHnW-DSD_hT?5yJHu-^-TMX6raJC zkQ1i-92W7;ZXMd&oqx~EM*qo38z+Vt=$pJgw~b_2uRw7+>LL?obl1fWgvyMwX>^+5 zcZ|anALeWJU8%Z+dlIIp3HP+&k+pqf)brcV@42@;!%^U|;Sn^gJtNWbKKk=H#33}D zzbok6+|xrCP}rS1l>$Uj1ESjmA_ssvnEdkfm+8jn$zJ{D0FK|}`v|V7I=2}i=b+yK z<(M8Q@pfH!7MX!A++BDX!2oy|c-o!M@zm_j=lg^+_&zL6-_Nqi11UC{V>{x|V*Y_R zScy9DETpm+A{zYtQm-GV3rt4>Nbvn+Ea*ux_I6#l$m`0l3Rm*+jC*6)pS7>DT(T+Y z_@v2R9c16=XMfCOuL`nT{OtFVop%3@{_e`#Y{oQo?keUA%t$en9-uqkpt}E^>HeDq zeyJKX_zpjN8^6u$eoc#i_>x-OG>+y+#PxkN|B2q`t9Mdo{F93UG`Bk(%KcB?#pewgQRdfCFbQPsyX&WoH0q@5=ia?Jn! zIK8~ggor30*a(z02~Yn#!Tcw}1*86Tp;xQ8_jRJlOnluO8aX2ZJOJnGU>+T)@%Y8~ z_b>iG{Qif6@6Y6;hP~OHA0^rB&h@BuC!lyUwN^r{SqF`=N3yk(=D*bI$NvGn{sb|@ zn}10rAirYHd=>;uw3k^Pdj7zy@!}j9cCJ$SZ|R-N3;#g^q>Z9TFy&G#p+wCD=*+GrqVtVX|G%ppl`I@QAp69$KQAxW1^)f@7#^jZSChMCK!#v>h$HmKxOV(^7R?5 zpJ!{{Buz^c^=ZbrKbvd4B{XS0X3azco_bczoiblPu%PR%JbX-BrKY0xR1tdC51Vod zR%xB*H}%EC$39+!<;?YX!)yvQ$6syx6>~W~KQr|Ki0o-~Rj9&3eM1g2sq?G}m3Z7hTDV`3G4F=Q_!~u*^*;D~^=3Jqrv9 zbUL3z8F9}--a>DjznzVofmc$f@o(s)xo@f-PT6_{Mh=H7A}ig}k79Q-=O}i^K>^k2 z84YoM+M9MmTY0+;rq?rvgHx1Byfehtrc)3=gpM9s;Y z)nuSW{?xftn$7`AFJE+0$yS$!IN@Ggb5FCnP5s2(?x0P77eF(%x{8 zB0kqtZ?daD-~BDG`nl7$Iz#flkqK@eIPC1_%%^@^yytFsbn5i#vTnQMsDf3c8+BF&_y=G(D_uRo-10FkE#=K9Hb{mH&c<;@*WVDx9k;L?|R%oykAD(+W} z(X;5cK{pvZ&UHc$7}Mu#v5nr`Ivq9hYfTLn2i(lU)VA$L!1#q%@j+AZMk@B3g4Qsf ze^71GoO#eeI0s)d`sO*UeU%CwlfhQU?wk$A88VQ6&zZN)rp-r)tbE_5RhA%>_U2 zi0$ywbxL=eblT+a_tJH|XW+p-Ja6X-;Ip$i<8@#es@ql(}{JA6x_*(SyL^UK7r* zBcq)d4VK-h^@i+x)iTx5DUZ%XoqeVVHT-Y42Grh%X9;`cLT*lOoNsP={#XpD7;89}>^(?9Mo)cE?AV%M8a8&G8r8 zo-|wvZM(i8ar_uxWHe1?G03vuG~(cx;;_@K3%E?)5=uL0{OQyWcm)w?^piRr&_g1= z`MM>DJwS-VH?jPLg~KJxvg8}4o0PR3vCj2#M)V3fN3C<)lT(VU?0L1I+zL97V7)On zA?(UqY_}o8f6&Q*`k23YpzlpTDR5E`Z z3t;_g+<&r@H&V_k&CXHd)j5tdo0b}|u@$j9RwDLdi`M$(0QNef8KE~!CI_9TWO^(> z37)(2EclE-QLCh>ro-4Wy&;WPHfM?!sFWI>D-sYY3xd_lpviR zJtNJjZhJp0Vjz9Cykh;c-Ob*y?b~(6oZG$@93NW)SUIjJO*#iS>rDfZblcCwU!Z0% z(TM_-{O}^?Y@>FN95yd3oED@!XuS{81jJ2%5oUEGP`<{0l%@Bv^OHC@U$?;HS->dk zux`SrvJUGnyvqsaTVNQ%oJ;tX1ir#s%ss|8+t2(X$nEW*-UH#&5io*{1qYg-VSeEg zl{{r!j|6BcamWOaPY3u_H_Z~_MwEp@gV5)&+udXurVHYE%5w=!U3&HxU= zNwvbX2upGw{@3jWUBARn{smSib|VN>+$`gXwgxNrC21O)jbvvC=A_W3_0QJtMR@o5 zTf+UwZvl*k%7TWWA1s{}W%e5hYmXG?O(hS(v7YANqZ}(g1=re0x_2#P#`8{|`$&Jux0>iCeQj&AIA=JWgQBtD$XzJiG*}QV%!p^z=*E=V(H=KWrxS2mIvE zL0nm|EK%%c#Rpmx^^@@v6uVFkl+P_DRgfx!+?z6gTRn>O^ifTc_ncz!aXO zteT1bi=EVHPfA14{F5+3wg;UOgn;km{79}?EDMlk{aGy6npLs^xwM#63hNKdF18!; zCDx)byV!0SOQK}1;SYLW+l`AfF4G}*8m1iS={v*|lINWZecQL5XGZ;{@aUP7?LCgG zbZw&yJ`Csh?<_vXR+J?f`tS=fLZ{V zL+7`=eRwrOO&Qkct5;w|B1`im*!9@zWl6WWBI~AVnp=i5Jx`a^OYbw!t%{~w9!$49 zlF3zk19gIlf)+V}upo)}>**FOtE<9m&#>=W7Pi)2Z0Wan?ZwzNWyAPn-@A5h$(rA5 zkj6$N-na7G7{3ub8TjKvS2W+PIt@qqbjxP!v^u0Pk;(sH z(&>Y3L{8Y;RB~)>x_E8cS{q(7>;YQt20bf(QTQ4k7?=NnQpGbsX_2;a$3sb%n|Ic; z19RIdK_?bBV{6t{ktNZTh1pdjK{z2+_uZ@{`DrYTh%1_r+h)-kb9t0jS*Yx;&+<** zg(vs%&+q1g7kHBfuI6hN!wVKy;y=C&A0JdLTPFA?exC&S7|gb8so$o-kCuCMNQO=X zutSuXXkzxT#hB~PIBkv_TAN%O`Y27sA6c`VhS4U(2Uq?|q}`MsMPHoZrD}+yn$SF; zJPtOO%dV^Qqo7)_9}yp*UCKkmRsEIb6ets-<=5QQ_=d3@L^pF1Zp+sk@t?9M0q~=n z*^(29sCwn^Z#iTb!MY#vZZbF1`lCGae#5__>5n9C8Pk(J|ABT{d< zAF*t6Q!)Qaj;*P=<so&Wk|p&iy7;Jk#!c-lQPZ&c{iKaJv4WjUiMM_?N=Bu;(*$L);>dZbV;m-G-zg9r^sr^~N zK3@J8+A$Pls3&26V^csu_J+0!b`zMu?oK+jvHZ>py_WuymV(#)r9m$CqOZSdVkUAQ zpSKG_`mQ!t*Yh82th1vLbQoP7I;&5pUFb4%-7 zC;vN^xgyD@BM0nH-WSj(rhix1=WKDb;`XR?(EiF+Dw5fIJrP{aA^uuTkNuS|Km?h-U?2gMxsDJgZd5Bl|EU)E0X{mP)=RS$`^!tX9 z?dW&z3&;Hag*w=o{005H@mkY2g3bqh6WywBcDtM!P5)s0^7o^U-=hBr+xQ{Y=&+-j zB$mE9TOzd_*>)R3sj;iB5p7T&l_jt#k5XPZVA$}VZ=>tKX=5&ZQ9slJT=D2Zlpcih z7fK-Jt8&jHPr^;%+&@wG18-CJ3*HiuWW6O`f)|}cP9quT6&zx4(JL|T7iqW5{WROq zeMZ{Pk7(B>@uST1p~WlDxjLNapJT3cFguI>{5;l09jrVll!FgfwvQT%c1h1WXiEzX z+1NeSnZw&3P>*@dxaTC?>(ELbOB`DgWi4>+#KG&s4q>`#hcfP^=zbq-n>M<9&1E`S z^fOu)C)^9e?h604%J#9MwkNqiLKaxKp0sjMaV+7^=hGKN(zzAklsh|;IQEd#D;sBM zEPGpZcshFP#CoKbGtRr3oi;>>ImEvqX2j!CErgALitiptyE6{3%>;n8H51IT@OLyz z2O@mJnH9-j#^dOB3>bjg@pV0aClBTboA=ZJhzs&7k(>SfPd4pb8O=JESKhOfBJ{)D zslks2?Ea=|o{I9>pnfloIIZul@BWQyp>2CP{Zou6)HOcTghFieW&LW^9yregX@AD> z59a?tT?t}bLS8jiE}ZhUzYtCw1G6*{kyzqjD{6yncq|O1UHr@Tww*G1p|>uqnV)vg z^fFs#VT+{TK+bNxYi45v<0!n6)ur6x2<4`5JCFz)seS@+h zelnPnc5o*uY5nVTZeax7wrS^)1QQdn#4%q%3Ho-eO3%3CW3<0=V6v6BiAFjrQIr2w~w`+ zW#%0cFoaTooS^~r9*WAl&4e3}X!*bjVqK()M!C#U`+|v{hy#ajjkHS%vO&fO5Rqz$?U3SS2 zHwxg`B^z`Wzf>@Shp!z>I}hgXrtp$Wg;C22KO;SPynLXrgP920Pb>z=iA4z*WnjU5 zY%yfQfn?FaHW7&nk?^JH=nRe9!xLuV9H5_cxKerFF(g(P)pPEwNWw{JU7kz}J{?TP zR~%5s{m)tDkM~D)=TuKFPxG91uCEU88*8=0X$-+1`X~T!c3o1qm&By@6rak+DN~iO zRPK_9bhKN*Ru%wayu!6hS-R8iM|BoECz5q*AF*${oAN(MHt^zvkAA}74GQGk40D_~ z*RA*jU*y)AV;4j_yVra+?Us<&IM=BdVd%LzGSYAwE`d4 z1Bks3(=;_I2$cZK)x0)rrtMA2HZAh@m%nS2T_}-8*L!%Ibep9M&x@gDQ*R$s=>(QY@*_Njn^$17;47PBwxp}ka8Fo6t zkKd^yS*N!0O=#frsG>Q!hFB{8ihcX_tT>()#kOyk&3@83=;`l&a=u|E(nWTB(yU8u zh<9LGf0_+d{*a2X2+I$BSQ^6^)~C-Ok6Ju&qLfcVgw`4!gR zQ%RrA8j-(W8$lDCq4mQ$!9;8`ow`SM9v*Yn+ycI=se7(v4dNjXa{Ofkd$$U^cJavDsxdB(bn=)*OaE8Pa34#yy5gIw6s-L+pWoI5@Ps`5(Y?%^vhIj^74J2|62)z5c zXXiqvvU3~aDi)$FUNP8y=qw(4udpBMAx>?{_1Bv-I7~*JVP{2b7>R%Ak6PIi!_Oq0 zEzV8Rl=EoPxuk+}vbYk!nN>afG&z;dtQzNns{UEE)JAEzVVHmD12O2lsV=|i<35~c zHMSBZLxCJ79B2)H2ZsAUL?sF)*10~xclbDdR%VqFU3YdRe-`M^5{B^*eZP8sm;uZt zrt(8vEWT!b7!G3OL)2S_LEul!yfYzK{@5F)+BL*o0-b!bcD{r zr>HJ5o&rM+K(j{I!cka5I##f~3c49+hW}a$SjgbZ)caQ@sTofB2fzEqT zj3w?u7Vkx|{q@_D&d#$J$V;#0WqWltmbXvM#`crsJ%XRaMiRq^+y$|OSjWz@?Zoiw z?t<#X@KffsaH@Q3Vt9wd5Db(N|-l<*X3REF_xqw>Sr8Ls__U-<#A^6F|; z?(x-NRNjbUh{~JTV%)G)tv+ZfvQ_5vuoY7SSU&4=Hn!tsKH_~N!8e%U^uvX}2ZfA$ zxHZEu>(HJ=`-qh-H&e&Jmu@N4YHeIE1Lh%)%z!(|_NT3MIY|xJw7Yc6=vNGVV@|`V z<=eIM3AHmWzh#|0&B!uu^SuHcLLM=O92^v)iaZte3KD20W17gGvu#bHSuZFEmk-)^ zU0AHF8sPz15tCKoPjxvG$r1=TbTj{Y-6A-8QQ9)&jStzmv&D3m*h{u0ey6z#FkAvj z3XQMxJa=j>zCiLMaomz;pPxMY`cU%htHV&xEAE_F^6bw=+^cJO8gu7}EZ^WO1XvAi zF1!Q!8P~I>Jv_ODym36KKgN`7K`&eB;feEL(s`Y^IXq18jcn|d;oWH$^DW_*;t!6$ z2kH1Pp6R{FJNKes<%9gX+9fD?c!Zb<2C{@7q78sw{$TmRWchZO=RN73r#Jx#oggDOw97Ra z6mT8VFS}v2*@J@2{)+q#?9N^Mt=}>_Wbp8T_NT1$(2MEv2UHED2M1;E<;h)X=k3b# z!Wn~qZ(qKCygcJG+O6QB0t>cAH7 zrdqk9Wh4gPfriO{cK|B zC-}oc$H(iBrI12uQml-%I!RfMa*;GA(92PaVayqJUiRkGzH1>IpbixEYyv^bvk_ z1bmcV%)Ziui=A7YjqhHWlL;njIr>DrSYmXtA$C_p3D#Pbf6W7fG3fpg1WBZ#I%ABv z#6YeICR6dX6c)?5$e`E%q+658VMRma2Rn60bimb1Z3PA!%fvB%VMRyG$=Y+qB-B5_|C8<+ zncM>2dkna|uJ_V4!o8Os@6*qU`i-`8Pi3buWXQO}{#&sWv*bm*@no zkFq8ICvpY986cOxl!O4k z*!&*MH>-jQl1fl8gWrOr%gOyMG?O7z5%_#mDLllWK$!_N5x#;WkP$Oy->zF{d_*~z z|7M*=$aVyK!S7KpFIRDw39aXEil0-t+a?70%1e_FRx66enRY}yPy&!s(Fk_&bsKfuTGd)UemK+?S+MB7jo zA%gSYI$-Mic-;%v_R*1-UN_eE+w#BE77&<6je$V^KmXc{P_GcM=4xIMu#9(#08`m| ziP#HrCAY1aiyDmM3ARhJ)W^b#pqEb=2zvMfK``$!l+EvCN@hBt|HO`o3ld&j`K;co z)N2cyog*?AGgcHeUO&$E`eApBNaV%=Ny>kjIOJ9^^Vk^oAYt4i0fXJhUCp`VYc&NU z6?=4)cCSS~K-$v|%wPB}8}QcompB}bU^v3N_JV_o2DY}G`p5;;SDd#0zJ3O)R1Dbl zg2F)k4_?6L?^>jQ*KW9GyfShFU9r2)=ab{zX)XhR`GW;$F&Llr;*XO_8XyTBEl$ zhiy=Fq_wntP1I^V`FIvoxCu&ZUlT5A-QDyW!IxjYu~r}4VRb{^@HVTrgdo?O^DA_yAP$4pZ9a{r+iz0fSh@RUT8`%bYZ3!`3A{U*yL9t}fF!NgLh)I*iN$v#p*cS! zu?sjvGc89%?nK_V_GL;MHs&|7QYK4~Te9cz@it6Mcvr2}i3c?`J7dycn01%dvL&HL z%7910>0fn{CGtUV#&ydLjQu6>8yRRIQ?n>W?s`K%^ydhvVai%be?b=etpJj$FB zzqa*Vdf_BqD4gIaC$2nBIRQ>7MrwYU#1&8B`VT4h>Pp$QbX_e3!!|ADe!2n?)5&L? zBU&~MQe<-#?Ycw>KM1o}ByzJ*|fH0ti)F74mA5uy$o*SSQ6 zQ~|N`S6^kY3Eo`4g&Uy=(cDAmIiU~B=!|yIX}TiKFH2H=sSMW^f=-gLwLmw4RlWHy zP8Yn%lIhw)t#M6B=4`2g$1gLtKU;+~_w_Wk{g7-_WLtz$y{kXVwL8(161fa0H8@&| zoR2Y3?n}ooPvg^HCs^uf_BmTUe9Bemx!69Z=ekp_SnuQ0MCSE-7SRvfA9c}V7V=TWdmPJF3&-d?vuh=r7M^ShX>KQLSB zPu?PMY?<>w93{#$5aALKVe~t}wEeg?m^QoPY2NVI!Rp_nThK-)a;pt5fUZ4dCD_TZ z+;q$RX4^vAm=5Uyrm#{|1r3TLoMt$J2-ushw0tl$^_iCY*oYQ0YZsYW<5`qXmZ94w zW^XflM$Mj7eeDdL4TvU%x6=vh#iW(jfW3=P^1nhR$YSW(Bzr6t4Jx+%K@BrUk7aWW zVUl&4t4*t~G+<2RZn9jqFZt0Dj0cmsIowe(2r7O(#T?@P(*_xlz=< zV;d7zn5$XKeY~D)9t!8M+oZnQC_}(6p_a=+C%)1g@x3e#-^c#D568 zvkCO~MP{LGj(>;9_#F}M;v#Mkab`Eb@jIm$>`#f*I0UUQOCi~7pW#_I8F<$>m~7ZU zv-5oGMcg3Lz}{!&)kuf2WXY^35+L)d+Zr-011WdTLYA#r+>kcLm2SGSMK4gdLUl9N z=FId>QjHN~^M-Vi3n5m`^zUd$x1>U9_*AcwUh}_C?y9fCsyL!VLz|pF^5%1Lv*}lb zNvu))dU|i?HfM3jcB%nf|LpJ>Kc?;|mRjsf*gXPbx?(a5Qz@PRuJ-Gg9vtME2p5#BAU+0H5IFm^Y`1Xx$#v!~4DYH74`?O8tU(C&OJd4GS5st**D{!2`)Zpog~f%cH7_2cOZe|`V$#TQ@+XK&bvpml>7NR8x*s5!3VkQ^QzhW^bxAq(@b z;*S9%h&ekDjjSCctA{Xh%6QT74~Xl)1HusILibA%XaAiCW%u5N=T#9Wi`)d_X2K{` z;b`E1Ic{mvFYPoqV}|CQ5T8+yxaTY(2%J}IwfIP~WKPKGC#O!59EUh+d7fc(o{X9{ zz8BWvK=^4C#|g{$ye{chrmSZYDCBcV(@B^B9j(r~H`Gw6a(1r5yC)L%mx>Q3*=f5C z{Rp`I;Z^l!zu(f^-doH$P^gqYk+PJfTf38`1iCYcGHVuIKBVK@Rt_7JN^=L&jMI4I zRBO!YNwjaqLi)*--`B#{03Ehw)xBslcdQ^OaTdH^9l;#5G7&$#s@lhA?mNI#8vE&1 zX=_5o)_$6bA6~gz-yq5ivmJyVpcCan62NWRrELwKA4Gcnq1T$zFGZ>a=gXA;5IBYXYCq z2?pfFzNdC7)ZcOE^>BwiApp3rg{Hq36Of6*Q3?+mv#KQ_f(@8JeAo)dV5zX^F7>pv`k!WdhD*`@?o_2JdS& zaQ8R#h?hPH&`!}^wM=AHu{CPnbyac5{8-*k@sx!1C>Ha@mY3`QO!2CgCaj$*^xm}m zpHi=|EMe_XVTttwKbHSfmP@{~C}H&_~oP;8;= zUTIkg3(X;z<~_=4-zrI1FDZ|QB+YZ@S;E>+o5JTLdw>S}j$smPagF#e*@@dO5Dh#xiZYWIuIicLJlYbmUX;s#ZmzZqtspPjORX&XMc4eaH zsW36;D^un7CWva3D#tynYQ5SI`y_T00!rKK6vW5Nojx>Bo5X; z@TM>yxEk~uN4tU!Ovkz3>bnf8Cz;jD6(qV2q&Fwz{5BX!_`5&^Gs6g%vkST^)>u-b zv)kOi2aHf0sT#K;1HG(!rH|@8xhllPjqxWkE>W<->rLQwD=%STBCNjI1GbOXaKj4m z$0|7DFu#k6Lw>>{@hCaVis71rrl=$+;=;P5MfRgfYcOH;z#o6%c(OX=8g-5-3A9+uhwXN{CgJO+L&vY9)A_=8(Hoy?Cuw!|kNW(ozk#+mwjE0Jqx=R%`|<9sw&nZuk7# z;6)X*S4AAw#|#pL{Dg(;{bRz4DJg4*DG91r;|X|ysZttXP;v0G$k~E7JeIU}2ytFq znWMjGLs}c&f;c{N6aEl`T0BH+X%bFqxEYKDJlX^|yGq>bEMd|zxEcD&^$d6tHtp4P z&dfEuI}v|H8{k!Q;ARFYX>l{IXzK}UBmqY4G7k*G;1#3Vm9P#8#Y%;C#g6j14=X*cig@wK!0R|?8A5B6$u%YlI&ypXp|H=4wT_|2W=04-% zW2N(;CqQOn4f*a$BQ#bc)w$P40>Lqa;23iDdly%CoFNQa7Hhck;9-e%FALMCzQ8+p zl9IWSeJXoYq=WWn*zO~uf{I**C?8FVqp6asL##ku-{aM63x>(SiGzY|vvZM}OwaQr zo?M)A&w}@);`iG*6V?s)DnJ>^w7iTc58pNSoE5X1-5y4A+KxslR0n4}H)-`+LrE^q zd6HSGP`sJ+caXkVDSBs8r_$K6QHT-g&h?}&jUyQ!T63$$51lj^5i4xC zf7EdQu)Xf1;2k2?(&I%eE*i*>-XTiI9%=P1fk>_O`xY$x8bMm>!e}5&)deyXD6tGq zNZpcIlA&1Yppig^`VT;^U@ILzhV%tF`3jD&C~2)IG1@mLMFBT~p?NKu^|7QR8GoI2 zn{0eCL@8i#uA!3&;2aF7vZ>0tE$9)xh_C)-cxzl%f=6W1c`$|G7OWpb?LEaAH}nvo zdq~t%TgRV$|@+c#(zEoXjhz(vhvETG@z%1WyRW;uzKmv%AYevR1U59 z_cK^L57;huen1id}Gqlt2kXFV#5A`zg&Vyb@)0ZG_qG7Tn3 z4pT?5h&P)iFiH4)VD!8@1JIlp|&AD`mbI_Md2im)Vf5lc<`PML(#8u&G1-llUr}8IK z4wJRECaou}?eYA|2btG8EUf>^w2dN9*EhNqED_#UJm`wMmRJv1{RWtVTBhY;Ig|^K zK+4|mGW@gdmfeD2&x@7i2b~$~Jt`^K>pmn(U?@>wRM;+9(RJtGD2_*VS3l1_lEU*? z=yaWFEWl5Q*2wHN9wd$=)G`<*+!_ORiSqqPhk#!OU}^Zw>vq>a8swP_ zggXw8!;yg&E(F9f@Ex~5Qam@~@9~( z`1Agi&ubYC3k^f1R*&Jw+I#g|_J;dY))-8As>hV+o%hxF*qS>T4upiQ2|V0~bvQ>3KKEe#s3UWuS)c61`7s9A~(CW56y0Mhn*Kd0zSw3a8#*zGPIN{TpZ(@xb}){g4>ZZ8}e z4Tnp#EY+~-h?=vt?}44U1_RJZpf>cl8NEyUW~~fYSt0&vgE4BJ5FFW_vE3cdK~6NH zq*bgsmXW_Ka>}f&>QNI39=U61R-dfn#C-JjW!snZhx5=Drm3KB5J&KycLYsZ11co?4cMnWI#>| za#R{om%Gx;_Rc`ykI+E{(cjKGZv57E^PZ_Ip%{XPR06sQ3lfjxq-DNu~=66ao~NV9@U7?NUT@@3KJFlf`~3#>0gL$Ako+UwqFrV9KEcv>H8#SX?%w?)Iy_}`%c zq+1H?l9-Qb4g%>)adXSIIdG0?C9@a+`k!2K3O?m`)lTD2MO59dr2D5>UM~|)=%;js zTZK0iq)QiguI4w}GHL*(Y3%@9fZd1JGakHZ{$h9?52|uuL)Zt5fy$44sI2*BL1r6Z zrtotS_$lnXU0s+PkwA1S6Uyv^1=3RsFHsZ~4ynIk4F?R(M*L25vGI3J#}qt*j%`T{y{?O#|FLid9WfC68xrb*fI5i}{V8}> z>HGf^cpeAIY?1mG0-he=4A3G!dK;Ln=_uR_0!!MQEN{M<-~N|}(PjiPjWZ~X!dYDt3wG}7v_4wvB8|e^y9vV*^e9;-` z89Qq_`-DAq*X4%J(f{Z)wV?PPN!-;9`F80PIms3h1%%)4iZyJOWce00ZgT9Hax)%Q z@3nJc_t!`>D;x26ob4T9PNN002um_&+R(v4A z$b2OhWGCD%)!znG;o5k~VCa%DO!8lXa14@^9x+?JeB$c&tY%L8IqI9x+D;Zgd z?5de9vnDF(E?rYed?To+t!)|1<0S}!B@^uzLbxvU=$++M{Lp{|%e-~+P!Y85*33$w zkvO;q8!aEWhwOD)6SRM7Kh6Q0(XYO50vN~7Zwfe|=<9{~BX0qRr;$%llP9MM1j|n~ zfH*Z_Z6xb7iF#b03eTU$+@Ge7rmR6f+kMr%r-0 zV#)w-L`;_rjG4^IJ)HpX-_pOrcSV&3{{sIOqCFVOGyd3n znjZoQS)b}&IV@WwyBSivV!b;L?To}oZ2_Rafz_YMv>e7>9jY^OW-gRTmIyf^x*mjW zRAwJTK0~Z-wIpF*Wfk)`1YW(0j4(wA*Q@;+A-a$(XCYa3AAFHN1|zVt`-LGb6eAd8 z=FXu%rlW;chN&J_kz<&}V+n&&^iLHU=_DP5#BgXufn(%L8HO9mGS_Rh+*^N4%B1$A z@SI+X47_roHKzBC*_MM~=X|$z>I7M73}wv2N)G0^NPLlXf_6B{4Ko?r5*8uk8!V5e z61mooYT{Q~Qz$ziWu}g=Aq~}PwaOTUXr*)bc z@icZ1n?+J=P3aT^Yn{dkeFYqJLvM;RctIi{plz_x@Et3((3jqwOk@v z3DeGo_{{q7+C5@{b8?~UFvAP6@@YRrE*@ss z4HSu+qFan;gb6cx_z8x!>~&(oL+KP}8lB>wSRrS6bbJt+H*`EoquCZY%W2tvu7n72 ze2O5AS|mOB50jQA0SdF#=9V2=DJRGoL_!nC-(Z!rPViRCQtUyrYL;R?V}AX7R#9&? z_4CUhhDFn)e2iH3hKG+|RDHfKD+j~iEktaSC=GH-gPgJ;r_8W_HP|ZQeZ&24w-j4! zR=kFS#kmxXrmOx3)mk6XZ5SImc}`iatFEvCT(y9iTU8Wfww zUN4lDf;MH!*2?CiO|bHRSCgJZj5pDgX%caz!}HQHF7@P)m%Spc(?bfxz@Ah+Wa!t z`qf;UUq9c>^(lfMc3PV27nSq{sPSz-bzX*eI5XU^XucrFFZeYeC$RDF?+$QWEmlZX7%w9+drTvo#H?H`DK27 znV(ge+bnC@Px@KAvdcIT;<1 zbR>96S+4prs5I}1jJ(A7*Mc08k=J$r+QKA6L509Y>( z6p68$95Hq;5fq`F^>W1IO;K@BR1y@GD9$tz92KYb?3qSw_x-yr8IJ0WXn94wHgJVst%K}NQr8?G$XirYoLDn*Ba1POX-as(1D!BD(JP)8tnm{BegNW6sVm>ktHiJ*=^VsZo$FA>zSZ1DLM zp-(M(GlS03oAJ8DQu7Pim{n1;>?N3GF98C03uaIx_U`4Vh*qwW-pxy>$m9e?ra|Rs zN5%w^Z`N7E#i?eP{UYI+{8GdMm6!VEr78!0Fp?ml8YV|oOd_Zw+ewon;lfJ@!VQIlVT&5%0Iu&oA}!OOp#qaoiAe-SvLrP* z0Wu`5mwjSQl=r?ZnHoH(6do+{?5!vJ!$_ZbIxExL*}v>NB>xvwd~*;Quy^^Tga#=z zLw47~Qtf>%(cZ`S>m~m1Ih}bJdX|xPbXKn79(F%0l9|3ET9ehQ4L1f1SX^0 z=9rBV_hV7C+V1)QjW@UKuJ_J3eZ7TKQj&EqMU=pB&RXDBz1JKCG{`Mw1~hsQ^pQAW zexX0}%Nl??qtW~MiSZoh+be?DOhQ`x!3+ib9qV`&~5_$>MF*&MZ5Ukb{N?EAKYs;ASz{x!LIslLXxn6R^l6h&U6TkZTR~+j zsBHSFI#y8GI+>lvDG_fmK~v+c1(Wt&;MQNVtXNU6g}2$6Ni6XenxKyG+T>`z<|TqU zWvaus|J-6!6x5ltD*10|VKT2<(K)%R&e8bT@uLgHPGT?0_dRAFp#t+&iHcqVanegn z^AnO!O^)PKFA-FheCp){l|{lPM_K_d5mYVDwhV8 zwdpi<%7V($Qg}H*iFlPY3l`_9S~y*~lId zG>nrpxD`Jd=U2YU!|+y)wUEnd+IvL={a!HBCZQO+s}|BB-px7n8%8jGqW9TR~-OTCm`7Ql+y2 z4{NTP&~+IGVg(FDWNvc)?_*7GCS_%bK=wa0unkAa1o9EMl9dAq3w`v5HWcFbHGQNXw3Iz4PUO~qaG zde_tHHBcZ9vWX0Ub4oVp~H6`Jd$o1^WlL-<KZ*Fj9Z5LsZz@`KGRk%1 z$6=vZwymx4{cRj#al{cHY1^(9qAKmqtC4>>ZYjo9D@D)%Hxf5iA=bp?$)LKcf!=Cx zg)7ZL*K(#|eDIGm_@|$G)8I{5gh~dEvo*8zhKxub2jRGM@i7|WwvqWE4oa-TopW+k z?`Aqv@txV0{Hir6XAje-;UP6`*971$XvyQIa(xB|!#GATp}|$BB%N*R-!gv*c7rt3 z_K2B5&&fb8X;t{As41EqWImZoLM9u8rE4;}HOHQc45;sn_6V|^#}po7*gldMu`}`C z36OlT!TZTbZg<3JV-lhhdYz2pu>02|22@~oA3%;6EMY%~X`SG)<4%k$0SEJ6DYI>b zDgujUb9Mqc<*MqeP4Oq}-21d+vo`?Tl#7?mj9AL}sHWXDjVW&6w1}}kBgVz(D9(PR zZ5)xOFf&labj!o3_=`;R_EqO69RlUQHnHDIw`}K_ldB8iTrs5G5q_6X1Mi+T2~O%4 zO=J7|6rN_>Nj(HZi$Br!Z^9w2!-F)Tgg(X7s$}Z$FJIDV&d7PdO&s@d3~4Zscr;nw zjiwBnb$MdS_y(P!Y*R6V4*j<93_{-oZi%pN+cl0`IQ7XARYbMJ@B-1AaI6YOa2$DE z$;>%B*u@&>4t^^I273cB193r-=SK~YZ3rkZ%>(gJ_A8QCEiE_5E4V3?t1ZFr!Ai#W z+PQDQ@Pw9fUZ|R#oAF~c=(`BljQgi0a#f*8`~?@`$K@it>OA7Z6Bm~v$+P%N^jPhi z1?MWHYvaHnHGt;=EQ^TZ65}Y_3o;AN^q}oOJfx;~?7Bfv#OBJ$PIDa1YT4SzY?zcb7OCKf~gsO;!RUy z$bNiEj)>~-MbHQSH3C;K595gKWr)n^BAh^R_ z8u`6MxxU8r_&aMLYhC|=o9&0Epmdf4yH*UX3Au+BuaE*8L6tvdF8#-WrpgXwn z;{t-rYt`SMW|Or8Yfd8IY}D#M#x=WyZQjp>$keEFP?WjT*F9tir*<%@ z8@ZW)v5#>H>0=2M6e+;th_Jz(gDLR!+%P!fe)-qxTX~P;4RBCCYAGtpve+AZ@jk9K zd(KKs?}srD$P#L%`9hMu(e?-@lzeR?bHMzBFilCu20_|4h`C`VY=_JGnJha-=oy?< z%Iuu{KbqZ3xn{8D-js77kOx=@F(c>R@IC_M_UR;l)knR!H}bP1((O0ZZDI=oVz$ z6u0zk36ql?HuB!txy*(;Io+-!)=)ew(66vKasp zoC;YTfnFr0!ef1;G4#8g6RVb*Drdi-Oyf-g!;j5l-4hM5i*&B#uI6;yR z-o5W`rjpD7eLq2uLrx!$_j$79Mlp~Njn6e)Z-hvVAOWsmO?3o{AtLcEz&D@$*po4$F^>0T}h}b$WOFyF6N6X{}mVv;? zp|U9E{OM8f;SM=Xk{)AXUXcFc6~6rt;t~P}a4|!k6|y!P z2g%K1ue!5&)qIU>hmbl?-3OJIb<=fjNp1$4`^|_E$@oD`2YT4mU}3;|7xee5^7-~V zTtKEv#y7XoW{u$tBN888p!WlUlsJTlh#}~D)oBfPPojMS5R1^wHg8O0xGBP>%S_6cHQ9VF=OpJ^Tp^RQf=#>ca*v8?n2(jnJgYaqicY<;N#Um&8N7O?C6#*nnn; z7T)<&TA-JE+*u*!HkHe22^;ROv!(&YsqfRnQJ%*xfW2D0H4j%DC2NDeUKg@t% zFm7V;J#F`T1Kvnf2`yX{-w#h4}y`X&y5Kv!#%OjpgknkbQei^A-bwXAu>~*w|TYO$nyi&!Ao>5N0PB zgkZqsAb5=dp2t?Nc0ZJMKM$yC`fzIcC@YcTk9hNH=yBDbqQ`Oc_UZB7Hqm46JU97V zQLxOt;FIQlgV%L-*XayD_1#f;`!a(Cg;$ZC#veRu9#GaNfP^!|UCi9w z$xx3YgB^CqR`P(*ko&hG5S+%M?;PObc@cwxA{9jN(-p*k~(X1 z5=TNI3%%*}w(xAv`c@Hb5W?{G3ln(#)c~*Yo{Q((UwL~v4yQu+Q;hK&bav|tEjCazl(h@3Y5x8eQ3XlP}R>T z+!Vo?cVSu*ItFWb1NSI56-Md7*87OFm2lFrt-R{rpVi0|rk&jxf^F~JdFU8M^vF>2 zZ>U8QUBBk9QqBmM>^a;?^Q5Bs|8&bCBK{ti^{>N+h}3;7e>vS@!}q2hdGKyOVzu7H z(I{)&olICV{#@Il_9Ii)ENDMcJl?o>t5N$A&NJny)_x@9h2_kDgewufcHZ>qOBsef z{Tv%wK0Vt0rt)T99K9F(=hHaH{fJgcm9&0_jpO)d^S^$QT0b^;L3iv9nMO zA3k(!ec{aGN-yoFG<;mvT&fi$l9>L&ho)42&MLa@Bq-#>KQfi%46HyZTcU`Z&`Wg6 zdU8qM%&5dQwKQ~7tLOUnP-aA9rhq!ZZJ>|XNXHQUHHEu99mTVmzRQVEw-*X18 zXI~RN^dox8L)@Xx_Xe-~K2IlpVp1C)8&8||x0-fzzvAS0BZ)=L&PHr86>Wr= z(=}NqqTAcpgqb@*D)Vmuesn?DNJL^r0@I$@Y{3*q7pfujm)-RMX@tUX!o9Qt9;=(4 zqG>y)}`Q+#Nf*OFCI4xWO76gc;D!6 z65Mj%xo!2M!2Eq*_y|iCH=k>q<3p}_T;uzpz=G10RvDIde+_|ZccFwohAx)fr&mVrozznOw$b0eX+JM{z1i99MGSre?lAVC+* zBFkvih?x#Xnfpj`Rh?)iS-=T;1PZ3ys@u5K=Qb>TsLO5D{WKk8*LaQmme`x4ImDXy z^m;;MRWzvpK*Gdz$+F=g84>6^#N`HK!aS52goJFik!q&?({ANMID%*|ER&Q$r^s)*In9ZRpOGjQwUa$%d+6( zVVDmSkpFRfAf?qZdVI9<73UL&zGYj|t@=9q)vp5pjv}@0hmnJZSFg&DWY@os(Vro2 z4x+hV!T3>aIR5xEEiW;A(N((Vd6u06+^46wOx&B*8`k)RYxM@#g2C^aTheg05boNK z`&icF5c`|nN(?4&+nRqcgOMvD-w&aWit38VJLU-4Cj6-2hQha=Q8W^vv)Q$BJBcpK z{N z6L`7R+?O-Hew;HUj{~dvY2PZ@OEsS~Ioxc2+t0}1ooCfg`n~bSsg%F-BwA{n$2$dc znZ19tJRkpH731)FPU$96wXuBVy=DltF|u~>`tso3dB*Yt&kU0k4F8<_O!HGV)YJUg z0?Yjuo94g?-W5n9vHTWf1m23o_(OpJ;t##APwQFtareJ2dD&iOt{H=)nyZ)Xi(g-S zfeFEW1CjQ{%pv*9*|skNTQ-BACWQT!G>Z~1I_16eg>QpO(+Jah!0tUUN)E#4BDUg- zku5J|err%uXtwC`wdyJR(`l`-ru^z&b+s0{(;#zK6j2v<2IvBvOIWY zh?LCdnMHkU9Ur5MP)Xw0Vu3(Y0+X9VOpfQNFwjQdmb?a{J#b?w*S0ZW6bIFW5yvoQ zM!F||K01uqo7<0;aICuDzWppZKr4#1VAQfgHNIQY`hId}u`HA{{kquCoE2`Hrrc=L zuSi&Tke zLy6rXM+h)<*n7;fI7?v3`i|3Zi?i~UkSfvHg?8s*wmFh#<~a1`9tn0&f$Vk)y;M zn_sVq5wgAWZH`Wd~ky`gH>APT9wrUKcqF3Scg!X>>ROMVqwAISm? z+z6D7`JX~)e(X_M;Rg5c+-K5rDvX|Oc`PLHNg6DnG2Z>}d}!W#h@7RnS~D$=CrgN^ zEcvOq^qwLDdYaNZDzKXPTGLhzc%`B5~#VSf>UWi^XO^}Md#TAmocWQYoQW^%Ri`j z7>$W2t#!UeFqusu>u3W7l6p)uF_g7_Krsb(tFv|x9@5XKPP9lg_o_|~`jedqlC;FFfVo(^-F1`}g`YL5R?V4Ras8IWZv?Z%Z_QugNK{ipQ8^nb z&4a)0896<42Y}@8f5xea_U@3qVaz&=FBKl#8^#h|Qs=p+mhg;ni$iw2;^OzO>FfF5 z?7a(oRn?jIpF>U{XmrOKHMUq{C+(1qPDuwlq+*+6PQp1FE|!a(s%1F1fI@3<=ywjm-TTK9yK)nQ1v|<%e@r0;=AOVEr|NT9CpG!hO z)Y{JH{o_Y+_FlKW*0Y}5de*a^^~RYY`*)Dv1HgR`XWnPkuE991-V`zg#6Eslo#K2F z*CNH}L&1AvlZsI%f_!hf#l(?Q#l@U`&+U4NZQiZy@AhzLWa8k&9(Tsqy~!dTnRE_+ z!lr4$2tBMoyLKN5`cUb5bo5ePjCC{9DD9}!D%e~Y$WwFS$IitzOn}@MWHUe3G`uI8 zo(5wc1WOFXu51Tgm$rkh-I4ftU(;T*25sSE*S%jA5RFcn5 zx^vg=5XWZlc*Q9jcoTyCuHA~JuF&lp%htAVP586eF4>Ie8a}gY|Ct8zVUR}PzEa@+ zGKYEBg|O3wv!~Hl4zL4xAj|aSodlhHoaukR!mU1+Ke5+NqJJ%Q-^)3GZ4^N~BKYo* z;b#?>6#?CWI|SG#Wy121+yE>5evQHNG1=Sk)IJ7C(Ry?4pXq_LC>}l^j6iweXrBjC zU_uOavn3-k!B%jR2Qtp>yTSW3YFz=LXdR%B47V$olwxDUg2xx@^j5d$tt9D2xO zz;!+Y{&eEQm`wc3(G=T`=&!6aoE6UiArRT0k6hle!tONlz30q>OadArD-1!9Wz{#K zzIeg=Y{5}{2Z6Njz|&DOg3vqMds$rd0b*3;{fWP%PsvkArF~1Z_F!|_EaIy1fCp~1 z+i!f?+Yghx6+gy@fta2JANN=?D~YD(J)Rti;l95nK;Be44iXDa=_r`);a^|NKWji* z($d`m*h6kv9!uMg`z-m>i7is}5TF?>**G4dJ=^y+Z6VTTiX)d{`!|lf8aTm`ZQ5YG z^93A!=jvAxpmVh`Ki>xs@R=*!fR)FjSUm5OqAJ#^<*`XCV$~~xJZfel&WiJBl@O_c z-}qJoaS!&;O+f{@w}n0ARy=qtk)<)b>}b7JnD@>#RTrVX#nMI>0v%2+*& z)N&)#7X#JtTK1E_=-V42Uhojug?vR~GY`Q$-pl3?aoS;_(>`pEyY=`10IgT!*l>_X ziFDh9JI#LM)ttRE-W{#o6|FsBJlkx;2nb*=SAwaLT1-bwh;i+C(~o4=7O;B^mdy=H z7Y1?4wh+4Wqgn(29cw&K~F_uqVmvQ3`TCR*{@52u0tNYGZR%6`v&D!^@a6MJRLs;)m*4 z@!CK%{>5<~-J_Sp94LXv3Xj9xdxDw@CJ5GU6Xef|$Ja^Rgdq#Q-b)BaO^wIZ6}Qjh z>MXUyo#c~Ff6w9?G|5q-k-R_2)oH(gpkYat?lURv>8w7P~SQ6jebgkjVxr za`8cR?1H|~2eQ0dhL8^2mI{}fE=64IYn{Ou;^0OhbCbecQS1v&qY2y{BC$`4m~v;u zKZD9BUM1q_i=S|pGH-o>c$_3N}fDFzZpDpaG9msh(_amhe6K*l&Z zocM1R7ItBr(^gD5VG8ElX1Ev=rV4XuwF2Lhe4=)7H|>{Shbyo>Kb2qeioBK zh<+pa9>`-{`}%O~6S4W@_p@Rff5>TTq2ba_?!Y@MMXzRG8W%2^u>z(0HG(`@p9aGv z2NOT|8Jt>MFzcMQzosU4Z*#cIyYh}bNnPG6p(X{9o5+UyL}EpWn|?|y5nJLqp2#HB zaAUpP6AIiNx-az-uUWf0d$u6LO~5oeSNr%=-QSjO;u6K-Zxw$Zka1gC)ZLlLUF|hF zHSvDG@wtftJ+-c@t9JKiND}O2e45*{cP94yr&noiqMxT(-0s|`uiv(o<&WDlfE8&u zU&vy6Vk5n9z8(e-oc2%fcaQVoCrUeY?_ngDd&Dwk@Xt3m|JdnNuF)KW`~^yyhNi!z{^RH~e?BkIN&^AP=J$`IsMo)uS?*p)F)`QgVtJy9CkugL{Vz&< zER}Pf|AggwI5F9OnVUF66%Ns261)2Ug>^3LFx}$$hIVxv*h@$yfS)3J@G{`Kkv z|E2f^csye3&RGtUG))Awh5bbjFo82=7HHfV@oqZ%C%{o1JL8`}@d18L*~w4qft)Wd ziNtdz&%&u^J+h`F66hV?nxgOcDbedF>=qO!zJHI+Ss}284o(S>KCnHh_r*^+P4Ao2 z@8{~hJN^FLwY;xRyup4?*2_1+?yTXd6olyOmRUpwI8|`uv-VxDZ^% zPmj-sF83^0si=NLJ+l3n!oimOvY7?W%6~x%xo~EobK5`i5Q#M-vp!pXFBHe^c!^m; zC(;uCDjbd9ts^LAOJ}Q>NsqWUO?NAbv@H2{q^!re?H=4w5_bv?BCH3Twn`dR1Erhp z%c9N1AuMdVTR>^tL7n(XC+`ZD zQF(bdtKrz!1y~_=ZMU#h*KsLQblk*U1l^n1>taISw#V3|MRAmliYe~AVwSXJ8{LX2 zEx(Kh<7&TjQ~P@VQzSQ6nf`jb?Fa9m`4Mf;D^lYqnJ~1{O+6LnMjUbbrTbw8MhIfb z?x`?Is_U;?m^vc5ou{=+7F!Nxh`>vyQ^slIM$W7N7cgFP3OCp;WjRsXH!FJ~SJAHL zy6`iy__BHvFAqe@9&m1vdc*3d9OWf4uC3E)FQHL)P3yK6r){CWuP#6bFA&U&e-rERxuT=rL5bnz{jLX zU>rbT;}z})jfL5 z?h}!~8f!zB38*vG97CWumg@liC)1Ps8R$5xZyYY~D2oJkN6Pw|Ua1CYW(D^5U#o@` z@3?&{uo5PK0sRMf_EHs|egL1K<@Cxn-U`j1v?{-!yP|ELDKOmMOND6dY;O8R4GrNS zS`fuE96ho(G`w(%rUUaH_dCoDxbw~n1+et7W+`-5UVu_8LhZkm23C2We2BFE8)$Wv z(1`Rg(I|zmW1v_FJCVc!^GB?|x2_b7<-3K4(n!C+GmiNU%e=T{e?5|ndDp>-Y8`eX(X zdh|t)<~A(>kHWp&BJm486ADn^rNn+TMU?g#^zc(n3+&4?n`Rk!E^eySZ+2GGMP5&kH5pUW z|9_z!gLmMS^l;QU=8fT~bpHy<@U_4A6YpzZ_r6w5(x3WCU-pv9NP3^2^m$8ax+Gp1 zNH^?#+*&0JV(ZpJZpHlmkI+2!$n1164}GkdU&gMKk6*9_M|2H%g4g)bfNQ;$v6TK4 zj`ylO_G5#Qx|roBb$Ll2B55gJhidqzUef6#eaTPyjwLmnZQ!$+rlUS)_h0XQWTs!X z!OA*qf5*h4Ry9qsxd=5C_;Zox%>|m6Fr;-T;+L4`msr@8Dxo_yMdMF@|KM=Ob_j^D zGsp$tm3RAea!-w>Xfb5t(JQ=49)7x2tffedD<@HJx?shp;XRExw5gTfP1C)+Wi(IH z75$Aoh+eK3#oy8%gSoMpd1c+pO1$sD;@yfoM0D5IV1#SCBeCg;skDLfX=}xlKv|;Y zcVa15Ty^yJ5?TMvoN!m+P5DH`)^)FmSHDMhfG=YL19R^defiBK>6daCQD4X5BAB?# zTbee07{bjTc-ZK@_VxQ!Ju&a!X-eF-BERY9X?n)g^3%-qlpJwnB}lqOa+nG~lCPjB zxg4v)6xsD0B#~8LX}pdbwa({Sa$ryt zNP(toN@K9KLbu*0!tORHJRY0Xx++@x828(tBt43F8CbW9{me-;?n#W5Qk>ieS}P_6 z2H0`*{7i=ug<4j+4-C8{{hW`bKExdS8lK#VmH)y(V#^}l zzC|z+*stPETLhl|ZT}>BtH-tUU|_(PNBB=Aou{;kS{R!%pS?caFw*vCpbMv!xS*2j z*X2fC9XtQ&KmS0MAw($Fq!UJ^T&Q%9&}#6>(7By%ZwZ%@v7r~}Gmm+U1snyT5ZV=9 z;DSxl%e+f=%x^cCi#eG7uAB}vV<3vWkaaO z3W34hKywD|Teu(Zx;WlAbvW@!pbC^+e2{2Nhh}n}wtu9>Xzhkdv#&BU(QMgW-OE_^ zEx`DKGFhEJ92tBna_&a=8B?YJB}>L#92*65B7uiPWzR<3X?-o@W%e)KqWzV!*PYuI zNll99dqUUCD$MNpv~+So7snw^SM*= zdH)Zzx?V~F+lWd{=u-oCChMp0G1f328&8dg=vAzLp;R=j&c@H|Ft?0QxsY6~s<_1e()l2RONtv~L>P_y5m#eEv!};l$*&&Ze2fgtv!JEbw;k za}$?&Xc2MOHZDSwT5{e8vRn@JJ{y}GOx!LKWiUnQ9{Kbezi1M^`u%PH*Wz`1KFr3cqChrCSDmF8)@!zW*N5QvEet?*BJ03HnR+_an*v zerR6ePV_`NqmE9|6yJ&XROcp3;ghQ@^$;v=7t*hn|I6zai#X8X*~AQ5)^id*Q1|2h zCR%QU>#;r=afei{5edW=eJ=izWfcXD`5N~XSM|q%u(gllYgt8MQ(`ncVoe3HPZj#5 zp9SisUZ?qW(nAvFTZKI9Y&=)~>%MH8n1~BpvC1M1Yqy6)26D+A`>v;-!q-CPvPu0p!bV#&0Son}@{SWJc^ z*)zJdY%-6Co~k@Plm)j6U0B7D+bXUGlrIQ@Rnk%M`1{vxex6lD4LnYf8R3j>VS zbyJSe`>kA{@oBm~E6~2asVD;m;|vDlQZVS(9;{Uu*ZAXTEn|r|B|}4{vXv1>RdIhWPhdm5@$*QR|jx*R___O8wvhc8b4(3 zA53rV>UQ7h#4U)h9|BTv$t``KgcZ(I3EAGBW#U5aOw4jKQKXpv_AQmMk2ouyQaakI zuJGl~Tp8L5*+$WC{=j=u^Gk7O1q%q7Y5p1rzuSj${61NAPA373Njj7bH1W*RnVZ(?TtjVJNpNzQGR z;{C1brjNF?tcsMejnwj$Q0ogV(b}2Th2&V6y&zH4SN@%ikMkB^jKpUJC&tM3iOjmtrd(}t zlBP1YtdJY5g<+1EuDs~v%-uGf0vt>wKEz+cmq0vagyYwu&7nv*@jICb9WRG}ainUe zFz!Kikt5uI%pHrIF~chd9v?)kR|d9Uh=)nYy((`R?i;ZC9o0C3>QnFMQ}E=c z?q1GRewfaN+-KMbBbLW50V$Ug;vEFntjt4e38DXn+3n@Ja?W4~5d3Q*bO8*hj6<5; zVP`g*ICt%xRXY?e*;DNvEaCX%zG!w6_Hn+W3e|SGXvwaSTbb4W1Lk!Vsi1u&XkVE^ z`^tQ$V~vpZ!pcbwHhzel&cH}3i=(k+(_`1ojl?dS&ZnA;g!Vq^cw+U&&3m-pA|8>#)IQh6(9>@SVBZ;gHr&FAJ8UkP|4@g*&?V)GEr#HlIU@Z~bp zG?o#Y(eEQ=T@hzaZ=_^nr0gM{`XkwY0bCM47V8gu5o1%rbo=DGE`Gt;oFYdJ`6xf7 zor&lF{vapZOFL2jGyCW7`ZhnHt z=CWv%xk(<|IU02ewD>_VqDM)6`7WiP zZMv(i*af+>+?NNwmjQndzNTZnk&wMy2i-o(DYC|M*twaU)%ad%Tl=JXa<0yYAo@ym zb}fgIYI6s+diYZv;Q2B3FI!*EP4rM4*EdwMwOZ#Ue&JQmzhdnweeW?($s*&QEhF3d z$V^^wRn!d@o9JX3Jh;VXmPdS(CBL>(k7%<14svawJ9iR^wu@x7X#euk&U?&;ms+;@ z8svRvg4vOqU%oTQPyAQKVr~(Z$31Pu-&b?|w1sL`R8pp>fCefej_|L5b zSxigf65~Ovn`o{&&Os{eNbinl&wXd&pG+-v+Lnq;#>Wshpf!8%o1EJ_2cL}GyiVO5A)?x>BIG!wtYT8rn$XRvJlVN*9G?nt z9HexUtvy16`(k;;WgKqkrvem@TPB-~mrlbj?AbfS`4wTFji?LfO=3MV-HGdlQL07U zZl6A2I#b+l6@Qy@B~Ku1i#Zcg^@xUe$v=q0IBgfH%Jq1N9KhP6&VcdM6qS@UAteKX>*;sD#RGGgRHZ9hUZNg+3E&o z&c?DGEvw@Nxn-}p^UyVQ1BBLQ{g=}P|2qIvyF2|qB~R-XAGn@G{!dF>&RFn|hTOQJ zZAc+a9%nqJs=IqU>|lKlN+f=?$`F8YfdiLLa`TGW&Y_pcMw7r2zDaN+fJ1|O1#gL6 z;Qb(t0`A0;I5bmx{j`W&baebd^N_ek>`36-LQ3rV{0pyV2GII62|pl7$h0%@p}(V4 zPZtAXy|}~eR@#z(B&~Hn>b~}TVmD2SU78;Y79+Mcl&x{*^d%vGsnHFampJf^0Q*aU zguu>G+A0s^SevBr%;*)&k7y5=-y6pRcgVdyf7!%H?2FU;Kd1h*j@ohaA+7WbeD&u; zsiSqk5&Se!dc7b6+*Sl^kr9@`DSQCJ!OrbLlcfFWy^+r(CP zMVh`VpMpL1`M5MNfv%BW2)N7zjEC2lj_cNuOoXXK!dV|Xpc@jh{eCQEnm zp)JVZf~GKu)us+1C!*glrGqnbIM3gQF&DP+th}i9C7M^TfMkU;bv#KS=Ud&0UwPEg zu6+xvHWBwJ;|wo3?Xt5Z4r>x=Glz=6rfxKBRz+et_2-!L#MSS|XDxog=Wqh8j^&&; ziMQA(uj?m%(QWu9+7VpT25L;8hUsrS|F{2)z{vSaH30`pjE86W!)rg6Nd$P}9?7G? z@bg4%4EGP2Y&?Fh!Is}=F?BT9#J2<>(&pY*0RUj`3}QKHu~}1nNmz8L-ZFaw zC8nSm!Wi*r2yjT{JaARS!A0eUOO?qlV87mo1y*tPE%}{}s(^6*Fsm z@D5(Y2SZ@zT#lhj+9hZGCd>2s$L)~QJ)g|5djJ!z=5;!%kT^}_!}_W>{t;uR_vg`@ zx$vFYYfATVcnDBPcs0(qv8G09Lu7awu8nlWFwYw?%qebnQXJoOq#v>( zg-o}>#9i(d6w~|fObKL}9W!)Kh;Fp6UySu3xHwE(E@%hjHmt0!b7*e1yev zW5K;3i7uX7%GcZc+jX0v8cF<+2KvqJLy-?sM5cS>H1kPQcqV}L{kJpd5%RzPH{V8trqGT3sOosm z6CcDCVZ{%q#d@MU(0Y)7{#Cq%?$ngwr966%&do^A=fllw;al4}N8 zu-Z3;I5VBhAyIe#z&(sZzu)kGdo%chjqh);?l>#n!ua|Ut>=t^BD7g9~v>A&I*|YBk`H}kuuJ_Vch>_mwZ#d*_qqrv>k#k zv>tSvukGO>JlF+AcfUOr=dmUDa8;BN`XJ0XnEV3^z$cal46j9l(o zBlqh^$<4OhYmSmj5I^e5zkIBgb1YXveyrT_miwNgVc=oobiz@?ygBaIna~}; zT^%!r-QMc><(Wwn+}>GuLZ%CaI>x!ZtviBI@hz{O(ROozCoAxLoITuhN7OwyulGW)es{pw5$Jm54!9*Uoy z^X17z6!E}TJFv{){Vu}I`X>R~$~A2qAkA+2hB}EfW1h$C-xD}H`2D-SU)G59c>YlE z9MRvetH118kJ;ZAXW)`_|Ee*Ano1E+3yo)c8Ux&_v!5M@UXCSmzjqgcsWTC5-7!vV z+U>$CB0!AUjtMQDN5X^lXCJlw_l@2D;Ks4PAlz#C72in7Ur)ZC6Ub`G9f-iM{r-Ey z*YV+C;4Kg0mwX_pKUw<|y!NY)(*D~S#4q-E_FGiM6(5j1sa-?thg*qvR23=m7tS5L%BQYj{=}L_=A!CwFnkS+YByzXM3QfoFN(Q(-Gc6*6}f zQf`nxWYQ$!@6&M6C4>3AJ>xZDSp&Q@ysn1m`jUP5Du{q>U;z4zWBISqfsJ&84h<;d zHQH@p*h^m52S{m1s2*ndC9mrPYRW2;rFI9NQuZ!HuXBrxr8;O{2Ga>LH+fZI_ld@( z;?vIRQdqNG-J^K^bJ?}Ko5P18FDkn(5x;J@YkT2D(#sE(9c<|{l!E@`HXjc!9GAo| zXZ4xT8$0+tLATG{m_EShtX??WwN1yZXCA616zOImjLDA?{IGOA#^mxeJ+KWPJQXE_ z2-fNT5I#N}51xb!Q=9?r?A%HS`A#>ulKuzEHneO|+imbE9TRp|><7<|rr*fV!jSR5 zlgN03={Kg-@ZFJm%}xR^w**tV%!|@xY+nFv1x`ACaN`I?M)oiX+7Vfv7W4VBvOE<= z_OT;sdHTzrkCo*qFQ<={#>(<^7VU5zQOi?Uel%8=r>)#JR+dzi z=B6VWGaco#M*-dNj35GlB9m(fjF(4?DY2ul6ac@ zmDP$BXHH=ttNASWpXx~n=BBH@OxX;6?5vO_1H~ABfep}2q`Ispgmx@9G0d6Y>Vo(-5v=r@AYk$Lgxnpj1e`2G&vsbvF=W zsYd*aAW@m=HESr|5}W`{a$I5kl3%!8W$@K$vztER^V{_JtE-5ClGM$1rN`^R2|CgM zdgXEmeU_~WcLbf5eu|CON1PSk(|C=4!@D05?`H3Y$U#~WG=51VtsgPc#;>MF8LUbV zQtaq$4D#;OAV0ikZF+opRq5gF*60OZj5ew9jXz>|JNB%#*&aOOt=kv+N7xtaEyI4$ zKgzzK_e}f3aplXtka&ysg@I~sywbbQLXXA%(0G1Q=@{49Ki<~ZQe!ypt5?VE;UJja z$~$+C4|PmOhn7hLjk*K7Mzh#878kVWs^O-8*K+aUOufE+6Z%eBnjScrm8nm$jy09u z^eH}#3WXviD~zd68;`&*?75-4HFG$&{93>B;-5K{JGLPb7Ljjc)1#UCKJgI5+QaRg z#0CsGx39I^JqyNHp36lw2Loq!V$0Y%E*yB0yHYL&m2v+FJK+bMaBmbM3nK)6EgwDh zpIri2Ojt1TTZ&s`AG5AF7WmSGYh}Fn?8^A0Ns44t`x_X;spocaY)5?PLzQQDhEVZa zw+1ck?De6*76JwgZbS-AdVecXOai^3bJudoSm5mSgBx3)%SE-ERomqWDIBI4MmX?W zbvW;=P&^u-!*qIm6i-uRa!adiw~wU9aQsua`fqB!J{DMFVGhO*hWIi#ZXb%NKYz5IyW8L&*WP=j;$p#;8 zdR#P%JZ}Ej$ok`{j=nHP^`Xq_zP=#+fMCh*K}RtCAMi>;5YsU*dr+`oL!)&B?p@5# z5xUi#a`op^)}K>eJB>Xy4J#VhmBx2xwfZNXY4GA(47cDk`wYMn+!k_luHdv}U!~iO z&_8^5RSW*RfqxaGmToX}0u~-lHlis^!YkxH>a55**=NZGzDm8>`Q{qmN`nrv{UkK$ z);BQIJk67AG+`Izv?1qw&Hy8lLhgFZlMA85cE!D-lq*e2sg99r26n`k^G_ayrGN|M?l>FOd^7GzjorBLS`I%%g<6W{( zrFoEUf3<+KcrAbSQe*FvdgxqS={&ZMrv?G+`dvl*eM~t(EbM&YMY0#KcFWd1yl(e9uY3_Iz=PO=w2pmtuQ4+%Y_`|wh_ z56bcS@X~Si;brT?8r4hnfiEt3Nqu-xec(+XTtr{$5AzK6ECQ@dtJ9!0m-?|wl=Ypn*>Zr2YMEp{IB>Hwm3T zJLnAYl_f8v`o>!W7=1PW79Y~L`4TN=ew+2C_ia$k+WJEGaeaHM0p>ZTgvOU_*C$^P zICv9QFXGenqBJIC5p+?nbWld=b>u@+P6G&Igtnb8HgIZNuv@Y{hg9gZ?q#J4`IbC? z5`VXd4qnL7lj!Sr00;Cn=xLQIA~-0pF;Bd2J4yLaT)IjF!1ECOkcvI0x@f2w1q3`J z5Fc(LJB^6ayZCeUE~+fv&Y!)EXs_M?Cdev;X3-6*?=@66I(?4BFC_T0SlN3YQfb3X ztMZ&*n%XZjldl^zg~lG5ZQu#4hKTjyC0hmF?Li(7>Z_nI%|4)JUraT7B*N47SP1{1 zs-%goOFe-^MRb);w}*5%279ZW|2KWw;g``93)pMGbMOyNM`1EQAZESf&Pau^s zv-%#&LKIgYR!P6>z_5oxdznROfQNL?GuVX@##>?+hYW_Qk|tHY?XioOgqytiq<9Q= z@d91-Symc)F9_hr!LpLj8;cMb?;?6o4@HP+Edm|uK{TaFa!6v-Y0AY-M76?ICY-mL z*ZI6zc?2NIic06;QyM5?NUg47WYh1#@duj|!Ll4hI+%3l2v z?JYLkc+8jt6VuCg9uq1yJVE*EcN=mW-K;0^3r`3r8~C$V=(4v@f2_)berakG+OB(> zO^mA0Uz;6gh%b6P)R=}?G{c6(-k`u@;m}@a*Fz7#7eL_AbT5qSt>@ccc=R}Xfw17) z8X&!Zu=Kel&x^3Y4G+$X1cQ3RU`%T83y@ZXTJL|&p+FL!kJe3^f1D~lu>6Vu>+w`K zHE|ih`i)=O2bR~(G_dH%&}b|MSmHKU3qKbdV|g548FNVkt1sOPf64(?-*NV0$M2{; zq>p&K2g(OTMh`uPvcL&B1|9<<39@?21Is{XlqCvDzk=FOn6~n#4v8lQj0)w{3FDDM7e65&swH0}&xbB(R__MGE!EhPid}^l} z#+aX5(uJjeus^V&>%io$gTayw9hV;>Hb>XNoYrlVF;Y@uqm_`s&-#-tY7KN;et3*F zhN`(^tX*+1)U~9&(e(BAa9F@hC}ZpEvr*?geLc)mhQ7WGPZUpIM_re84sjfi%8rUI z)ZLF-{$A75A#QdyOiy2u)YHKbC_br*%PLMO>22bk$bYeUvyIn@qaNhDuYfDUF&LOM zh#FXkbaN^8Xy8sAR02yhTr<6$Hh8B~$JEi`t?1z%-}S`W&|_3G9UYCvSHz7i)6^cd zCmmg;ZaR?C(Vd2Kt|E2;IbsS!TE3i7?IlRV*dpdOWX$zJvZTapVbSBMAPltOjL9lY zs(2{cya4WQN=FN4{Cp94lG&?=sJUK&r#nVMiSLf|r)J0*5!y`T}K{!$?Wv&*{3DZi^ zJQo2O(@NQkP`a?`YW^)|zV{yDpY&vwOphU#gM_8>sLF5*BN@wiix^m{Li! zd5U|*hMew~1d!dNCOhT~(fX2Yk~k*xG^t?Z)%;t`{OzSl#6tR;hm(zIJ4oLo;Z45z zgs%c=73nKJ+obsLCdFqFpR8vU)c}Dkf@tcM4ss}6Ox8A!z#b8oh{Y82r+5}N8h&ld zS?p{%<97V3{L-}Mq1Fx+*`xtlktJ3{aPw5|gUZG>>}SvOvIP*+vF!tl)6bsfWsg8_ z`U9xo8d~e1ariQHOyyCk$Xi=$KITI%gT;&iLl_TQIemDy)|zSZ@z`8a`Oa8t0@6jm z!q%EVe-S(;wbs;}F^})!S~K0ju~b~BVWR2-*L=daAA=93;{zUF2>7deCB=cash{o2CvLKr9v_+=06zp1{KlPTp z=;#$YBVQ#+i;YDO@+RXR$s`RRnQLTNtn1h7^JJKavGQu#xA%ygyevs2Q}MdJE-4-T2hpEd}a7e76sS&inn%=(56SM3)md+^zqE~!Lil`runOX zM`-?se9fN{gdA1}LxWFJFpRI*5rvPwOt{{9i@)Tb>!7(gA0orYjLc*=KQeXdr*z?UYgC%w>TfXgj?bR|A6E9*_WZAT zWlq@h&3o*GJwMa!?kzZuy#sr`w4ncWwtV_jhlQwy6#>3$o?Rao4ea?^10=VYWk1SX zGeGAxI^JR#>1Dwe@luTAmBUzklL~~ngZi@#vv9j1{xw2Sp zsODSJ@RFUh!f)Ta^tHd2^4q5c?e?Ia*e($M82IcTpS!+%g2r;$7qQ4lvlFjl?KAxm z-S+X-sU+r?^@r8K7W$j^+?SJ%@44^0=u`Ym6{jd$Ut0R4-SN*kv`r0dfwo5a{G9W= zGN_`VLT#SYg$NTsUM(-`qk8aXSlgeZ+*|XW_dNKwryO&%XDj3N5TEtjKg~6WH(ZDC zGCD*_eAMyp*ouEg+CjeCb4tSPooztRE2&%M%|qV&9y^oeu`$ShNgnceGoxvMN^&=D zxW8;K#K2A7zGt(P@$j8PC|re2zDr&mfJT~_ zw3j0e4zS(s?IlAhi?nX0l+uJ<{t+1rebA60m3i)quj5*@<$_gP4XITU%1!Pp1NY}o z)~Dnp^ucSa46=YujO|&GE?e%k2kb^W@mDjm$rj)1mC|UA-;-abbMPp_1NXQ+`FEtM z9NqH&dBeCP94m6biliGq<5ur0Grjq(={4$&9id4QAn)d5D+l*4q>rzd$F})jTa~fA z`ICzdVE_`_2txdGa5l z*HDD#$uHHZL5Cdd^H;wx!pj2mF?W7B6fAz3LLS?YTbNd^9;ntqXRjMC03*#Y!8=%! zQ2Ac3!+v=pBltxh@YsgUjGcer!=emv41*r;xXtkT+{yf1BroxL>#KMZz96K$L&tuG zEYsEqrwsVik{3?aJTNNHDMMpV`68JUzi>Y7;{S*6>9?-(hq3<=efq5z$jxK;^ixFq z`;Y3=p9B^iIl^HGKKlQrPye02Fgbu+uKD11?YRa5kq?jg?;vE4=F`94xn-OA?-0*_ zjprsWpZ?GuDr1c5?UMGan7~U2A{%4Q9xqg3}l{r5BzQ$|sP4xSZd!kPw4lo+fL~B z-kEOy04P-ddpWb4R9R2x_s4N&Hwmo&NA>%$eSCUC~NG*J-Yxz zgyUfN1|Bw`oe?XJ;~;DTsI1zkdzc&!Xek0u9mZ98BGf-B?d54qDmo-mk2m}xiw8mg z1WpRc{LP8N`rn}O=@8)%LSWIOyjVb-2LA}XeW0H8nX)+kk7CFnS*mMeLN-V0^R`KL zCYkaUtyK{n&{WSBF){*HvN%_#>*?>JHF{G7fkjGR@*H1QUwL!tu_7&cocDwc*Qq1j zg5d#|I>AM1%L}SN(-u9(51B`c3Inj@dGeMJ(a6H*ZRzm}9-{D}O&R|LFflQJM6sX5ch9P*sHUOq>4HCaQYI)<#MK}xecH6*wJ zduNMIi3#E=eMtW>yr=&0ZpTb%9#9z2JOJsiDfTzoSg-niJOZ5#qB9;~EKdi7oEr7+ zL4K)}gqqSUk2HmUQT`$QTc7cdcOCOn2tsQ^qp$1aPYpv<$LeTBLsZz8I-pq7J7S|T zBIm=oUU1P6%|5XJz3 znV@y6LyS*5>K^C~ca$F@v1^D3r2B)d+npn_537y^@9i${xORw;r2k~`0Wc?wibtyW zWEPV&BRoK$&t22H&C${SU_j9T2nMh}m(T$8A~XFk>D#!xxnm}0{kxm~@1C`OK)Vs~ zA$K2}f7Fw0{G)~k@sG+>4E3F_h<8A-XYB2IbLK%f7>lfK%mW%1!+=>BZCIpR=(R?e zMmdWnshwdaP7!j&EC^G}^oottuqmTRv1T;YJ`#MzOI3^t4yw^5Xlc=5VH+tjR?3q} z$Dc_w?g8;xIFupiM}|yo^awMRufx|uINNu?#^~+15t+wlAhIM|fUHGAHbti59X1A) z^D26W>MZW94uLMB?=TVTZ9NQc$@V;6IO@NM!PSeYftiaKxZyDsj~-5w=It9>MD#l7 zEhrq)KUihzpCAKljVq`veY~D;*>^HJW{k&rCdNh&pj2bPUf+P7*E!3BTRy4LZKd;c zRKsSRVrR$fu6n8hhx9L#c6ql>zCe3Rw$hXh%$Tv)2}VKR{7zsUU-FVlZp&3y6@AR& znJsz@bgX|`uR53u%jZ?c4Xv}}B7qo$(8<~d&%hQNB<*_=N(Ub;-TKO0jLCn+R2OaK zPkpDF2fn<~JJ_M&nzkn`#Wo-7CD0Thz%WE&bCFWmQ6o5tQ|Dn)TJ&Y4TR=KmKcs(| zyq5R$`A42%dd98kuzF(@qjQnv>Jj3vj#;cxz+dyJC>N{q<0#i08p-OWd8`g!U+k*0 zEgp#lQ|=6!+0x=bD%kiKJdOzD`-4Yhz}`vRSNfm$O!tCApeTDd@!j_8~|5>qgH|>Fn(5co0 z2!dIT5GhweNL&NEUOcozMD#He|gUZ9lGlu!g7fD4ACq!EM=L_2AcmIOJZic+qjfYUO+SP6CdQ^R*G zE{lm*nKOw;PV&S2pb5@=;e!3ycHmtGmW4Bpu2aI%VoqgYVG}Ot((M z+r~eGg0Xl-U6VAZ6UEjj{Fp^5L=ccp59yi+k1uGj)&bj7r+}5WojDU3CINJ)8P-m) za@DDSh04j@A)TGJz2gCi3T-AT@cELx`KrR+H}^95nxX|YQ)$IR9MC}q=FVxrKLrY; zgHk6YLkNbhx|Aday8p?6M}TzwL)7^z35`YSfjkhTyi!Xcqz2%RUhs2GCLmezTE0^F zGr-ghtfg{vm%h3+MCk5YerhU9XN2ImTq_+3bQ7n#sWPcYMB>$dAIyl?2{Dg~Z+hs+ zc%8)QF}m>T%_iit1zh&(KIaEp?S)GmBDDI%UV@?X%@*S1ruG}071^vaL_gK>*?}n6 z+{UYjH=S`O%biIY`reo{v_45gq8-r?bi)icTr~AN(CY~T0uyu}z!(H{5UddjqF@;b zWD<}?!T2rd9=VJlAR{TGM*;ku5|Fh1F$l=S^KlUnO4^tNr08=;Cm^kE29Sv(35bgh zd;%iN220a}q3tApHJGY?WXi0=Pkqj;<6g5a=h3}M>Zs8TR7{D-N zMjTmtwRDw&Ox?N%`L!#ESc2B?Van3uICC<8u%mrdUgQ~ zSd5-|zZ}+be&tI3_G8)4^8A$)yT9}mw~w|;`u<_?KznE7Nf%kkIcwbq$j!#^KO);n zW^;WA=FMEnGs707h=UBNsvR&Y+0h7PVBRb3I=|aiif02G59ZKFF0bnD>UBwGRAx6F^4b07y z*xGcVq`t`)pYsu@EpBONR+erVftPuPyCG-JnvlCz2nBVFD3G5~Kvo=K_qcS4(oN9E zsi`tDAwj=|$?k+F{x&?ZYvM+C4!d#>JBG$S9V%|u*u!@x^q;T!Px|ML8o%94Qq9dI z1Mk!Q9;xx$?Iizu#&6yEJ&ga&@q6L8V-oOjAUJ68ZsGTtY4lz=ZY=s0elI*;eZe+o zZ?Mf-e-qYS1N~}Kmc7`s{k>T1hIWx)y#$>EtBhoiQvmC;C#HYL%U5=h^D_T@y`e^S zINPfsfvEEs=n$E{<$ify$okKL6d7ZaCc$0VcpxN5u+*20V#ZIBFAN1}!byiRH?jJxu z$XR{uVS75v(~vz4@ia`H?A{MzXIKT_i^S*Ok)babWl3kyZLYLYbyyEHQ8lCoTBsT( zbYG;3kBcPJj;{!(b`V7E%Q#*WmI;nP;XT{&#Vx$YS(k)P~NG?bZ#H) z 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/PIL/_imagingcms.cpython-39-x86_64-linux-gnu.so b/venv/lib/python3.9/site-packages/PIL/_imagingcms.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..3946827738cc3f9d3482ce7cafb3fc04aabbf3fc GIT binary patch literal 43080 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/PIL/_imagingft.cpython-39-x86_64-linux-gnu.so b/venv/lib/python3.9/site-packages/PIL/_imagingft.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..f71de18286c22e7ecd1c7cc38248f881e4b1bb62 GIT binary patch literal 43000 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/PIL/_imagingmath.cpython-39-x86_64-linux-gnu.so b/venv/lib/python3.9/site-packages/PIL/_imagingmath.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..2740c8d4c20eac6af92f397d35c06249d45db7bd GIT binary patch literal 24440 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/PIL/_imagingmorph.cpython-39-x86_64-linux-gnu.so b/venv/lib/python3.9/site-packages/PIL/_imagingmorph.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..3ce109adb85ea4971e7db0d6f8b3205cf55b2813 GIT binary patch literal 8312 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 P34KPj|E5!jy4(K0FiOjD literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/PIL/_imagingtk.cpython-39-x86_64-linux-gnu.so b/venv/lib/python3.9/site-packages/PIL/_imagingtk.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..ba58aba2aa01a5aec2b6ec3f50ae30ade50c6c79 GIT binary patch literal 9656 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/PIL/_tkinter_finder.py b/venv/lib/python3.9/site-packages/PIL/_tkinter_finder.py new file mode 100644 index 0000000..7018a1b --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/_tkinter_finder.py @@ -0,0 +1,9 @@ +""" Find compiled module linking to Tcl / Tk libraries +""" +import sys +from tkinter import _tkinter as tk + +if hasattr(sys, "pypy_find_executable"): + TKINTER_LIB = tk.tklib_cffi.__file__ +else: + TKINTER_LIB = tk.__file__ diff --git a/venv/lib/python3.9/site-packages/PIL/_util.py b/venv/lib/python3.9/site-packages/PIL/_util.py new file mode 100644 index 0000000..0c5d389 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/_util.py @@ -0,0 +1,19 @@ +import os +from pathlib import Path + + +def isPath(f): + return isinstance(f, (bytes, str, Path)) + + +# Checks if an object is a string, and that it points to a directory. +def isDirectory(f): + return isPath(f) and os.path.isdir(f) + + +class deferred_error: + def __init__(self, ex): + self.ex = ex + + def __getattr__(self, elt): + raise self.ex diff --git a/venv/lib/python3.9/site-packages/PIL/_version.py b/venv/lib/python3.9/site-packages/PIL/_version.py new file mode 100644 index 0000000..2b4c60b --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/_version.py @@ -0,0 +1,2 @@ +# Master version for Pillow +__version__ = "8.1.1" diff --git a/venv/lib/python3.9/site-packages/PIL/_webp.cpython-39-x86_64-linux-gnu.so b/venv/lib/python3.9/site-packages/PIL/_webp.cpython-39-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..b20f17bc398471e0ab15de1767e9a9b3f2cfc880 GIT binary patch literal 41840 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/PIL/features.py b/venv/lib/python3.9/site-packages/PIL/features.py new file mode 100644 index 0000000..da0ca55 --- /dev/null +++ b/venv/lib/python3.9/site-packages/PIL/features.py @@ -0,0 +1,313 @@ +import collections +import os +import sys +import warnings + +import PIL + +from . import Image + +modules = { + "pil": ("PIL._imaging", "PILLOW_VERSION"), + "tkinter": ("PIL._tkinter_finder", None), + "freetype2": ("PIL._imagingft", "freetype2_version"), + "littlecms2": ("PIL._imagingcms", "littlecms_version"), + "webp": ("PIL._webp", "webpdecoder_version"), +} + + +def check_module(feature): + """ + 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 not (feature in modules): + raise ValueError(f"Unknown module {feature}") + + module, ver = modules[feature] + + try: + __import__(module) + return True + except ImportError: + return False + + +def version_module(feature): + """ + :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] + + if ver is None: + return None + + return getattr(__import__(module, fromlist=[ver]), ver) + + +def get_supported_modules(): + """ + :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): + """ + 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: + raise ValueError(f"Unknown codec {feature}") + + codec, lib = codecs[feature] + + return codec + "_encoder" in dir(Image.core) + + +def version_codec(feature): + """ + :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, lib + "_version") + + if feature == "libtiff": + return version.split("\n")[0].split("Version ")[1] + + return version + + +def get_supported_codecs(): + """ + :returns: A list of all supported codecs. + """ + return [f for f in codecs if check_codec(f)] + + +features = { + "webp_anim": ("PIL._webp", "HAVE_WEBPANIM", None), + "webp_mux": ("PIL._webp", "HAVE_WEBPMUX", None), + "transp_webp": ("PIL._webp", "HAVE_TRANSPARENCY", None), + "raqm": ("PIL._imagingft", "HAVE_RAQM", "raqm_version"), + "libjpeg_turbo": ("PIL._imaging", "HAVE_LIBJPEGTURBO", "libjpeg_turbo_version"), + "libimagequant": ("PIL._imaging", "HAVE_LIBIMAGEQUANT", "imagequant_version"), + "xcb": ("PIL._imaging", "HAVE_XCB", None), +} + + +def check_feature(feature): + """ + 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: + raise ValueError(f"Unknown feature {feature}") + + module, flag, ver = features[feature] + + try: + imported_module = __import__(module, fromlist=["PIL"]) + return getattr(imported_module, flag) + except ImportError: + return None + + +def version_feature(feature): + """ + :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(): + """ + :returns: A list of all supported features. + """ + return [f for f in features if check_feature(f)] + + +def check(feature): + """ + :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): + """ + :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(): + """ + :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=None, supported_formats=True): + """ + Prints information about this installation of Pillow. + This function can be called with ``python -m PIL``. + + :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 = sys.version.splitlines() + print(f"Python {py_version[0].strip()}", file=out) + for py_version in py_version[1:]: + print(f" {py_version.strip()}", file=out) + print("-" * 68, file=out) + print( + f"Python modules loaded from {os.path.dirname(Image.__file__)}", + file=out, + ) + print( + f"Binary 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"), + ("transp_webp", "WEBP Transparency"), + ("webp_mux", "WEBPMUX"), + ("webp_anim", "WEBP Animation"), + ("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): + if name == "jpg" and check_feature("libjpeg_turbo"): + v = "libjpeg-turbo " + version_feature("libjpeg_turbo") + else: + 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" + 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/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/INSTALLER b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/LICENSE b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/LICENSE new file mode 100644 index 0000000..b73e6a2 --- /dev/null +++ b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/LICENSE @@ -0,0 +1,564 @@ +The Python Imaging Library (PIL) is + + Copyright © 1997-2011 by Secret Labs AB + Copyright © 1995-2011 by Fredrik Lundh + +Pillow is the friendly PIL fork. It is + + Copyright © 2010-2021 by Alex Clark and contributors + +Like PIL, Pillow is licensed under the open source HPND 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 +associated 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. + + +---- + +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 `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 `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 +file src/bdf/README and src/pcf/README). The same holds for the files +`fthash.c' and `fthash.h'; their code was 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 MD5 checksum support (only used for debugging in development builds) +is in the public domain. + +---- + +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. + +---- + +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. + +---- + +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. + +---- + +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. + */ + +--- + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE +========================================= + +PNG Reference Library License version 2 +--------------------------------------- + + * Copyright (c) 1995-2019 The PNG Reference Library Authors. + * Copyright (c) 2018-2019 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. + +---- + +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. \ No newline at end of file diff --git a/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/METADATA b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/METADATA new file mode 100644 index 0000000..f37c4ac --- /dev/null +++ b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/METADATA @@ -0,0 +1,137 @@ +Metadata-Version: 2.1 +Name: Pillow +Version: 8.1.1 +Summary: Python Imaging Library (Fork) +Home-page: https://python-pillow.org +Author: Alex Clark (PIL Fork Author) +Author-email: aclark@python-pillow.org +License: HPND +Project-URL: Documentation, https://pillow.readthedocs.io +Project-URL: Source, https://github.com/python-pillow/Pillow +Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi +Project-URL: Release notes, https://pillow.readthedocs.io/en/stable/releasenotes/index.html +Project-URL: Changelog, https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst +Keywords: Imaging +Platform: UNKNOWN +Classifier: Development Status :: 6 - Mature +Classifier: License :: OSI Approved :: Historical Permission Notice and Disclaimer (HPND) +Classifier: Programming Language :: Python :: 3 +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 :: Only +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 +Requires-Python: >=3.6 +Description-Content-Type: text/markdown + +

+ Pillow logo +

+ +# Pillow + +## Python Imaging Library (Fork) + +Pillow is the friendly PIL fork by [Alex 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 Docker) + AppVeyor CI build status (Windows) + Travis CI build status (macOS) + Code coverage +
package + Zenodo + Tidelift + Newest PyPI version + Number of PyPI downloads +
social + Join the chat at https://gitter.im/python-pillow/Pillow + Follow on https://twitter.com/PythonPillow +
+ +## 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.html) + - [Handbook](https://pillow.readthedocs.io/en/latest/handbook/index.html) +- [Contribute](https://github.com/python-pillow/Pillow/blob/master/.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/blob/master/CHANGES.rst) + - [Pre-fork](https://github.com/python-pillow/Pillow/blob/master/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/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/RECORD b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/RECORD new file mode 100644 index 0000000..13554b9 --- /dev/null +++ b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/RECORD @@ -0,0 +1,212 @@ +PIL/BdfFontFile.py,sha256=hRnSgFZOIiTgWfJIaRHRQpU4TKVok2E31KJY6sbZPwc,2817 +PIL/BlpImagePlugin.py,sha256=B3Hu6Uc8UMddeiKIKQ49h_pikTyBXHRChjk47XMXHfI,14338 +PIL/BmpImagePlugin.py,sha256=JNcxnXmnv4s_TuFKOqqrjsVHC6cyVSN2BiA2fTiY7Rg,14164 +PIL/BufrStubImagePlugin.py,sha256=Zq60GwcqQJTmZJrA9EQq94QvYpNqwYvQzHojh4U7SDw,1520 +PIL/ContainerIO.py,sha256=1U15zUXjWO8uWK-MyCp66Eh7djQEU-oUeCDoBqewNkA,2883 +PIL/CurImagePlugin.py,sha256=er_bI3V1Ezly0QfFJq0fZMlGwrD5izDutwF1FrOwiMA,1679 +PIL/DcxImagePlugin.py,sha256=bfESLTji9GerqI4oYsy5oTFyRMlr2mjSsXzpY9IuLsk,2145 +PIL/DdsImagePlugin.py,sha256=DxDAfsdOvcjyLvMwbcZWLbYBxNv2sxNUOZ5dlOPOPhQ,6009 +PIL/EpsImagePlugin.py,sha256=12udC0cavBCfJ0hfv3nDrn8HHxNIAzQ9nVbGQmRsCaM,12096 +PIL/ExifTags.py,sha256=fx7S0CnztT9ptHT2HGuMYteI99CMVrD73IHeRI5OFjU,9009 +PIL/FitsStubImagePlugin.py,sha256=8Zq2D9ReJE-stBppxB_ELX3wxcS0_BDGg6Xce7sWpaU,1624 +PIL/FliImagePlugin.py,sha256=pGeC1JI6d5xdYWRhsKz0_3yeFzGII_jYbQhJYNo6n7Y,4260 +PIL/FontFile.py,sha256=LkQcbwUu1C4fokMnbg-ao9ksp2RX-saaPRie-z2rpH4,2765 +PIL/FpxImagePlugin.py,sha256=nKGioxa5C0q9X9qva3t_htRV_3jXQcFkclVxTEaSusk,6658 +PIL/FtexImagePlugin.py,sha256=d5xy9hZ6vzmzfTS7eUM_LaB8NHgV6izj1VKTBHOfFEQ,3309 +PIL/GbrImagePlugin.py,sha256=u9kOIdBxYMRrXfXfIwGcz0uyvvxNRCwO3U1xcfa51T4,2794 +PIL/GdImageFile.py,sha256=JFWSUssG1z1r884GQtBbZ3T7uhPF4cDXSuW3ctgf3TU,2465 +PIL/GifImagePlugin.py,sha256=c0OnvrO4R74seBRjSDgWyfomkGf29RrhAO9Ljd7A-7o,28917 +PIL/GimpGradientFile.py,sha256=G0ClRmjRHIJoU0nmG-P-tgehLHZip5i0rY4-5pjJ7bc,3353 +PIL/GimpPaletteFile.py,sha256=_wWvNmB40AfQ1M5sTxoYYXOMApWQji7rrubqZhfd1dU,1274 +PIL/GribStubImagePlugin.py,sha256=sSBrTisTcunuC0WcSQ4_55nV6uFvLCQ0JLSd62dgURw,1515 +PIL/Hdf5StubImagePlugin.py,sha256=zjtFPZIcVkWXvYRPnHow6XA9kElEi772w7PFSuEqmq4,1517 +PIL/IcnsImagePlugin.py,sha256=S_TEcoc96xvum6IgN0C5J2bIuk7kzPyBbwjkdAclEew,11684 +PIL/IcoImagePlugin.py,sha256=FW0hQQknL2mQz8kpKKGuFRQGXa13oco6VxRQ0mV1RDc,10287 +PIL/ImImagePlugin.py,sha256=RFFyRlFJTVuti-TZ9yWsqP7vJJydgX1MC6mjYwwdw-0,10729 +PIL/Image.py,sha256=WyxivptE6qQtik2pLO1201eQ3CGJojxFFoVNZU00KYE,116624 +PIL/ImageChops.py,sha256=HOGSnuU4EcCbdeUzEGPm54zewppHWWe12XLyOLLPgCw,7297 +PIL/ImageCms.py,sha256=NZs-joebSCHg2J0fKXASLNgiXl7FRfWmUn-IW7AkonQ,37087 +PIL/ImageColor.py,sha256=zUDJ9l_gRzB2Xb5JX5lfDhOdsL8l7hmLte7YEmVHI3s,8638 +PIL/ImageDraw.py,sha256=lVcv9yoadOXjcV9PaaYrMpBiP9_j2Y-GBayaPd-YZJQ,30660 +PIL/ImageDraw2.py,sha256=oBhpBTZhx3bd4D0s8E2kDjBzgThRkDU_TE_987l501k,5019 +PIL/ImageEnhance.py,sha256=CJnCouiBmxN2fE0xW7m_uMdBqcm-Fp0S3ruHhkygal4,3190 +PIL/ImageFile.py,sha256=Oe8P0zXRFcACneJqwkNSLrnZnnyIBzpE1nxIjmMcJvo,21246 +PIL/ImageFilter.py,sha256=3zaG3rvTfdox6zKcXq3sbHHwEfl7E1jJd5_KTirH2hw,15827 +PIL/ImageFont.py,sha256=zYN6axJ_u7Jt62bH0o3SaEO6Cxwk79PMUn5FlWY0S7s,45202 +PIL/ImageGrab.py,sha256=2o1aA0_vP-KeRJsJtIxYhi61yCK4k_Khh6NHQD7HO2Q,3625 +PIL/ImageMath.py,sha256=iQPtbXgdhcCchGTXbDop7AiI_Fe-fNmq8m1YHsHMBgc,7048 +PIL/ImageMode.py,sha256=gI88wDgAc4y-m46vTA4zPmipG12wpYLNXPRHyPZBZaY,1638 +PIL/ImageMorph.py,sha256=TM0-barsZdbHEyQ_wB2SrdZvJBkRnWnUbDzGVzDECL4,7854 +PIL/ImageOps.py,sha256=8n-F_HEVRt2l7SENEoiSHpWKn6EehLT0tYfZKKCGB7I,18462 +PIL/ImagePalette.py,sha256=ZjkQry8gfuET-QmG8P18UcZlttKUQjZUgQ3EKh3E6Js,6350 +PIL/ImagePath.py,sha256=lVmH1-lCd0SyrFoqyhlstAFW2iJuC14fPcW8iewvxCQ,336 +PIL/ImageQt.py,sha256=xAXlhkwENjox8CcQYKEq9CJjNk8bzpIH8C_XsLBSDzM,5994 +PIL/ImageSequence.py,sha256=3djA7vDH6wafTGbt4e_lPlVhy2TaKfdSrA1XQ4n-Uoc,1850 +PIL/ImageShow.py,sha256=Df6u8oiv8O4VBmOyfqj53AJAN3kiWsOb97xJaevj8XM,6295 +PIL/ImageStat.py,sha256=PieQi44mRHE6jod7NqujwGr6WCntuZuNGmC2z9PaoDY,3901 +PIL/ImageTk.py,sha256=rLPqAnLH61y2XRHgRPUdesYLQqnDQ__LeRK66KL_fPQ,9324 +PIL/ImageTransform.py,sha256=V2l6tsjmymMIF7HQBMI21UPn4mlicarrm4NF3Kazvio,2843 +PIL/ImageWin.py,sha256=1MQBJS7tVrQzI9jN0nmeNeFpIaq8fXra9kQocHkiFxM,7191 +PIL/ImtImagePlugin.py,sha256=cn60lqUVnK2oh_sPqPBORr_rZ4zuF_6FU0V96IAh8Ww,2203 +PIL/IptcImagePlugin.py,sha256=-RZBUUodHcF5wLKanW1MxJj7cbLOpx5LvXqm0vDM22U,5714 +PIL/Jpeg2KImagePlugin.py,sha256=3NAbqBmvSU_fHUIGspXFsVQV7uYMydN2Rj8jP2bGdiA,8722 +PIL/JpegImagePlugin.py,sha256=cpE4tQ3IqdtP3__RjZDLOEygwoFnska6MgbL8o6NXuI,27740 +PIL/JpegPresets.py,sha256=6gYstS6ZLaE0ENw7qcz1vlNtF2HMGSKx5Sm-KfKKCJ0,12709 +PIL/McIdasImagePlugin.py,sha256=LrP5nA7l8IQG3WhlMI0Xs8fGXY_uf6IDmzNCERl3tGw,1754 +PIL/MicImagePlugin.py,sha256=t8iqakHjOilWVEOrjTISN2-ctxkTYSZgzmtxf4ufrfg,2606 +PIL/MpegImagePlugin.py,sha256=n16Zgdy8Hcfke16lQwZWs53PZq4BA_OxPCMPDkW62nw,1803 +PIL/MpoImagePlugin.py,sha256=lbBbUp-o6xVnfaX3sQYpd7RN4-5-KHcbwi0Km2vN0eg,4244 +PIL/MspImagePlugin.py,sha256=Rjs-Vw2v1RtdP0V3RS6cf_1edF9FIpn9fYApatwLXXM,5524 +PIL/PSDraw.py,sha256=caJ_uayWqTlk0EhPSKTUOevVooEfTV1ny3jw2PtteoI,6670 +PIL/PaletteFile.py,sha256=s3KtsDuY5S04MKDyiXK3iIbiOGzV9PvCDUpOQHI7yqc,1106 +PIL/PalmImagePlugin.py,sha256=lTVwwSPFrQ-IPFGU8_gRCMZ1Lb73cuVhQ-nkx1Q0oqc,9108 +PIL/PcdImagePlugin.py,sha256=cnBm_xKcpLGT6hZ8QKai9Up0gZERMxZwhDXl1hQtBm0,1476 +PIL/PcfFontFile.py,sha256=njhgblsjSVcITVz1DpWdEligmJgPMh5nTk_zDDWWTik,6348 +PIL/PcxImagePlugin.py,sha256=KVYbCKGGp2DcsYwZSv3YYo3GrcxNTQAniZKlzKvHowg,5682 +PIL/PdfImagePlugin.py,sha256=H2zXDGd_he0MO411T_yREpn9IoA2nifXzaRn3WBGYqk,7665 +PIL/PdfParser.py,sha256=Cb4zRBgnG4_1kmkimjfxvGpUOvOk8aPVLdfa-7mQ2v0,34479 +PIL/PixarImagePlugin.py,sha256=5MMcrrShVr511QKevK1ziKyJn0WllokWQxBhs8NWttY,1631 +PIL/PngImagePlugin.py,sha256=S7cPWcRuk98HDquNoBFIKEBJQ_5jmgaSgRIdWL-LIQs,43885 +PIL/PpmImagePlugin.py,sha256=UNwCp3h7psEK8i0p3P93VVXUBz9_8tUVzUWsITux6HQ,4447 +PIL/PsdImagePlugin.py,sha256=OSfBzyxW2_DclFj6k7ElqERo9oFIBrJ5KH6vRhcDjw4,7725 +PIL/PyAccess.py,sha256=U_N4WB6yg_qpWKo1X7avE98p6Ve3bqqnWOGX6DeyE4U,9592 +PIL/SgiImagePlugin.py,sha256=fdY5GOfjLgGVV5nvZ9gGomYboQ0-uPqyosDAU5M9eeU,6064 +PIL/SpiderImagePlugin.py,sha256=1m1xCZ2S7i2w4f-Tz2FSNkqUzqqZzYaZetKXevmsx6Y,9534 +PIL/SunImagePlugin.py,sha256=bnjnVFRjvApCH1QC1F9HeynoCe5AZk3wa1tOhPvHzKU,4282 +PIL/TarIO.py,sha256=E_pjAxk9wHezXUuR_99liySBXfJoL2wjzdNDf0g1hTo,1440 +PIL/TgaImagePlugin.py,sha256=UmGHaYcHHz3V1T87ZfFNR5TvP1QnQ1QG_EfuJPLmDpw,6277 +PIL/TiffImagePlugin.py,sha256=2RhRdr-ZeaZibTSW5jg-bWTgznQDhoQRwPtvpx4LWIg,68529 +PIL/TiffTags.py,sha256=ZAu3cTEiWLV5QkVFSzpY8LDdXv_RPhQoSa4XS8PYVmE,14560 +PIL/WalImageFile.py,sha256=Mfwtpwi-CgRKGORZbdc35uVG0XdelIEIafmtzh0aTKw,5531 +PIL/WebPImagePlugin.py,sha256=RKHtxgrWjuxN1fQF8AX0ckl3cEJkltOiKJrHYh--gk4,10795 +PIL/WmfImagePlugin.py,sha256=Ht5JppC4GZiYz8GNaww4IXEXTJkSQK7h-A2tt4AEvSI,4672 +PIL/XVThumbImagePlugin.py,sha256=zmZ8Z4B8Kr6NOdUqSipW9_X5mKiLBLs-wxvPRRg1l0M,1940 +PIL/XbmImagePlugin.py,sha256=oIEt_uqwKKU6lLS_IVFwEjotwE1FI4_IHUnx_6Ul_gk,2430 +PIL/XpmImagePlugin.py,sha256=1EBt-g678p0A0NXOkxq7sGM8dymneDMHHQmwJzAbrlw,3062 +PIL/__init__.py,sha256=NnlpBykSA7dIeA6k7aHKD2ikvrCKhpieYVv7UieVoyk,3260 +PIL/__main__.py,sha256=axR7PO-HtXp-o0rBhKIxs0wark0rBfaDIhAIWqtWUo4,41 +PIL/__pycache__/BdfFontFile.cpython-39.pyc,, +PIL/__pycache__/BlpImagePlugin.cpython-39.pyc,, +PIL/__pycache__/BmpImagePlugin.cpython-39.pyc,, +PIL/__pycache__/BufrStubImagePlugin.cpython-39.pyc,, +PIL/__pycache__/ContainerIO.cpython-39.pyc,, +PIL/__pycache__/CurImagePlugin.cpython-39.pyc,, +PIL/__pycache__/DcxImagePlugin.cpython-39.pyc,, +PIL/__pycache__/DdsImagePlugin.cpython-39.pyc,, +PIL/__pycache__/EpsImagePlugin.cpython-39.pyc,, +PIL/__pycache__/ExifTags.cpython-39.pyc,, +PIL/__pycache__/FitsStubImagePlugin.cpython-39.pyc,, +PIL/__pycache__/FliImagePlugin.cpython-39.pyc,, +PIL/__pycache__/FontFile.cpython-39.pyc,, +PIL/__pycache__/FpxImagePlugin.cpython-39.pyc,, +PIL/__pycache__/FtexImagePlugin.cpython-39.pyc,, +PIL/__pycache__/GbrImagePlugin.cpython-39.pyc,, +PIL/__pycache__/GdImageFile.cpython-39.pyc,, +PIL/__pycache__/GifImagePlugin.cpython-39.pyc,, +PIL/__pycache__/GimpGradientFile.cpython-39.pyc,, +PIL/__pycache__/GimpPaletteFile.cpython-39.pyc,, +PIL/__pycache__/GribStubImagePlugin.cpython-39.pyc,, +PIL/__pycache__/Hdf5StubImagePlugin.cpython-39.pyc,, +PIL/__pycache__/IcnsImagePlugin.cpython-39.pyc,, +PIL/__pycache__/IcoImagePlugin.cpython-39.pyc,, +PIL/__pycache__/ImImagePlugin.cpython-39.pyc,, +PIL/__pycache__/Image.cpython-39.pyc,, +PIL/__pycache__/ImageChops.cpython-39.pyc,, +PIL/__pycache__/ImageCms.cpython-39.pyc,, +PIL/__pycache__/ImageColor.cpython-39.pyc,, +PIL/__pycache__/ImageDraw.cpython-39.pyc,, +PIL/__pycache__/ImageDraw2.cpython-39.pyc,, +PIL/__pycache__/ImageEnhance.cpython-39.pyc,, +PIL/__pycache__/ImageFile.cpython-39.pyc,, +PIL/__pycache__/ImageFilter.cpython-39.pyc,, +PIL/__pycache__/ImageFont.cpython-39.pyc,, +PIL/__pycache__/ImageGrab.cpython-39.pyc,, +PIL/__pycache__/ImageMath.cpython-39.pyc,, +PIL/__pycache__/ImageMode.cpython-39.pyc,, +PIL/__pycache__/ImageMorph.cpython-39.pyc,, +PIL/__pycache__/ImageOps.cpython-39.pyc,, +PIL/__pycache__/ImagePalette.cpython-39.pyc,, +PIL/__pycache__/ImagePath.cpython-39.pyc,, +PIL/__pycache__/ImageQt.cpython-39.pyc,, +PIL/__pycache__/ImageSequence.cpython-39.pyc,, +PIL/__pycache__/ImageShow.cpython-39.pyc,, +PIL/__pycache__/ImageStat.cpython-39.pyc,, +PIL/__pycache__/ImageTk.cpython-39.pyc,, +PIL/__pycache__/ImageTransform.cpython-39.pyc,, +PIL/__pycache__/ImageWin.cpython-39.pyc,, +PIL/__pycache__/ImtImagePlugin.cpython-39.pyc,, +PIL/__pycache__/IptcImagePlugin.cpython-39.pyc,, +PIL/__pycache__/Jpeg2KImagePlugin.cpython-39.pyc,, +PIL/__pycache__/JpegImagePlugin.cpython-39.pyc,, +PIL/__pycache__/JpegPresets.cpython-39.pyc,, +PIL/__pycache__/McIdasImagePlugin.cpython-39.pyc,, +PIL/__pycache__/MicImagePlugin.cpython-39.pyc,, +PIL/__pycache__/MpegImagePlugin.cpython-39.pyc,, +PIL/__pycache__/MpoImagePlugin.cpython-39.pyc,, +PIL/__pycache__/MspImagePlugin.cpython-39.pyc,, +PIL/__pycache__/PSDraw.cpython-39.pyc,, +PIL/__pycache__/PaletteFile.cpython-39.pyc,, +PIL/__pycache__/PalmImagePlugin.cpython-39.pyc,, +PIL/__pycache__/PcdImagePlugin.cpython-39.pyc,, +PIL/__pycache__/PcfFontFile.cpython-39.pyc,, +PIL/__pycache__/PcxImagePlugin.cpython-39.pyc,, +PIL/__pycache__/PdfImagePlugin.cpython-39.pyc,, +PIL/__pycache__/PdfParser.cpython-39.pyc,, +PIL/__pycache__/PixarImagePlugin.cpython-39.pyc,, +PIL/__pycache__/PngImagePlugin.cpython-39.pyc,, +PIL/__pycache__/PpmImagePlugin.cpython-39.pyc,, +PIL/__pycache__/PsdImagePlugin.cpython-39.pyc,, +PIL/__pycache__/PyAccess.cpython-39.pyc,, +PIL/__pycache__/SgiImagePlugin.cpython-39.pyc,, +PIL/__pycache__/SpiderImagePlugin.cpython-39.pyc,, +PIL/__pycache__/SunImagePlugin.cpython-39.pyc,, +PIL/__pycache__/TarIO.cpython-39.pyc,, +PIL/__pycache__/TgaImagePlugin.cpython-39.pyc,, +PIL/__pycache__/TiffImagePlugin.cpython-39.pyc,, +PIL/__pycache__/TiffTags.cpython-39.pyc,, +PIL/__pycache__/WalImageFile.cpython-39.pyc,, +PIL/__pycache__/WebPImagePlugin.cpython-39.pyc,, +PIL/__pycache__/WmfImagePlugin.cpython-39.pyc,, +PIL/__pycache__/XVThumbImagePlugin.cpython-39.pyc,, +PIL/__pycache__/XbmImagePlugin.cpython-39.pyc,, +PIL/__pycache__/XpmImagePlugin.cpython-39.pyc,, +PIL/__pycache__/__init__.cpython-39.pyc,, +PIL/__pycache__/__main__.cpython-39.pyc,, +PIL/__pycache__/_binary.cpython-39.pyc,, +PIL/__pycache__/_tkinter_finder.cpython-39.pyc,, +PIL/__pycache__/_util.cpython-39.pyc,, +PIL/__pycache__/_version.cpython-39.pyc,, +PIL/__pycache__/features.cpython-39.pyc,, +PIL/_binary.py,sha256=M_yObPVR_1rxnS5craSJsSbFJMykMYqJ0vNHeUpAmj4,1793 +PIL/_imaging.cpython-39-x86_64-linux-gnu.so,sha256=rBgmX6m2DCVP3PFhP0oUtcrlkthvAGVW00ThM7gUTyE,665840 +PIL/_imagingcms.cpython-39-x86_64-linux-gnu.so,sha256=Be6W1PkOX3AdtARIMzPXIHfo975oMSHCEeSlPre2_cE,43080 +PIL/_imagingft.cpython-39-x86_64-linux-gnu.so,sha256=hpMeHTyq6lBCFS9epeBt0MkxAqFNdapWxrNrr3_tK6Y,43000 +PIL/_imagingmath.cpython-39-x86_64-linux-gnu.so,sha256=hopBs3toL7BkcN4eKrUSVaNh8ddNR2iMt_lf0wBaqRE,24440 +PIL/_imagingmorph.cpython-39-x86_64-linux-gnu.so,sha256=Izb-P0sfXL7w79aeMs_rmFrtXSH3MHppiX5ueItw2oI,8312 +PIL/_imagingtk.cpython-39-x86_64-linux-gnu.so,sha256=0pzdWxc50i2Z7WUe3PACtv0cKjsjIjDo-8qGajteyzY,9656 +PIL/_tkinter_finder.py,sha256=pWHz4HAUfRlF12YrGMXIZM1evllpRHq2kRAxD43hFmk,224 +PIL/_util.py,sha256=pbjX5KY1W2oZyYVC4TE9ai2PfrJZrAsO5hAnz_JMees,359 +PIL/_version.py,sha256=gUgU2bfCKSpnbiv-aS3kxuYScXpn09pczyE1L0iDixQ,50 +PIL/_webp.cpython-39-x86_64-linux-gnu.so,sha256=sK0jIAatWZgfX2Jos8T_RtYTZgnAWIoJULg8nzb5mvU,41840 +PIL/features.py,sha256=sM5E4oDEBqAZ3kHxVRTG7drsuJth_GPRxIUbCDqGHAk,9008 +Pillow-8.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Pillow-8.1.1.dist-info/LICENSE,sha256=KaHC87Q1Qt5XsxBpy0TNb5wrUnV82TvczN-Dy54mytU,24628 +Pillow-8.1.1.dist-info/METADATA,sha256=87C3RlvY_znbJpsoW_iaWvCsnr_IZRX259fzQcsYTi8,7064 +Pillow-8.1.1.dist-info/RECORD,, +Pillow-8.1.1.dist-info/WHEEL,sha256=ieuC8Vv7a4Lxq8jfQJ-x1beMvjYNP_LKilYokdMTB0U,108 +Pillow-8.1.1.dist-info/top_level.txt,sha256=riZqrk-hyZqh5f1Z0Zwii3dKfxEsByhu9cU9IODF-NY,4 +Pillow-8.1.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +Pillow.libs/libXau-312dbc56.so.6.0.0,sha256=pkazO4sSozRX0yzzcJGgLNmc1orwSlFB4wuDxG8Mtwo,12848 +Pillow.libs/libXdmcp-e15573e7.so.6.0.0,sha256=s9RVRC2L1UOO2Y67NE2LshHgoJ6B13dNTHYog-opS_I,21912 +Pillow.libs/libfreetype-6ad068c6.so.6.17.4,sha256=4-bW6TaGH0TJm6dR9jX9LQWcyKpozyg9FX6nTmAk2ns,1307624 +Pillow.libs/libjpeg-ba7bf5af.so.9.4.0,sha256=Z7iNudg2aBRlcXpMoV9SipKYKMolUlsMcUrYjHpl-bQ,250504 +Pillow.libs/liblcms2-a76503ec.so.2.0.12,sha256=jQHTcY0ini6HDMUMA0ijOj-2wkoMGHdHGmsXrOD5-hE,465560 +Pillow.libs/liblzma-99449165.so.5.2.5,sha256=7iMfemDnr3asL0JQkjfbOaPwbo0aQZywH4C3xf2u_k4,216664 +Pillow.libs/libopenjp2-f0612b30.so.2.4.0,sha256=lfYvfA4tEjTYCEN2fWwvB3A4F9VPT9fRReVGDREzyJM,532880 +Pillow.libs/libpng16-bedcb7ea.so.16.37.0,sha256=LSA-3MI8mYtx3zrJpk5ZizW4Hyg-Hvd8ykCIDfajVcA,283920 +Pillow.libs/libtiff-d147fec3.so.5.6.0,sha256=B_UTvwPMz2ver1LhJk3Oc_aYAQDyHlEBXm4GUWw0pb4,690040 +Pillow.libs/libwebp-305e7d94.so.7.1.1,sha256=YMZ2JTfD0_bTDCqYmrn1tyEt8sACX3zsIFN1jTKpKn8,592616 +Pillow.libs/libwebpdemux-2a7a19d5.so.2.0.7,sha256=LrY4xla-IVcfRTUY9KfMvc3msExSrtNmqBZpwMpQr8s,29528 +Pillow.libs/libwebpmux-1d369df0.so.3.0.6,sha256=9KbpDozp2BIhkXT9SYYFfk2zjObbtQWTFDHEVCiRUYQ,58616 +Pillow.libs/libxcb-2dfad6c3.so.1.1.0,sha256=Pyy57cZxqkJU1x6vtPmMY97py0X6n1QjBotZPTchs1M,263776 +Pillow.libs/libz-a147dcb0.so.1.2.3,sha256=_HZ_XiOuVypJhy7VEy7Pv-QM6RxKmNtmQG2swxTNcvE,87848 diff --git a/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/WHEEL b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/WHEEL new file mode 100644 index 0000000..3018b82 --- /dev/null +++ b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.36.2) +Root-Is-Purelib: false +Tag: cp39-cp39-manylinux1_x86_64 + diff --git a/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/top_level.txt b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/top_level.txt new file mode 100644 index 0000000..b338169 --- /dev/null +++ b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/top_level.txt @@ -0,0 +1 @@ +PIL diff --git a/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/zip-safe b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/venv/lib/python3.9/site-packages/Pillow-8.1.1.dist-info/zip-safe @@ -0,0 +1 @@ + diff --git a/venv/lib/python3.9/site-packages/Pillow.libs/libXau-312dbc56.so.6.0.0 b/venv/lib/python3.9/site-packages/Pillow.libs/libXau-312dbc56.so.6.0.0 new file mode 100755 index 0000000000000000000000000000000000000000..64340c0158f1895577e524b9ad2eff1472c18658 GIT binary patch literal 12848 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 jSUYh_k@i9`)N~jzfAH9o(O_N{8zQ@8#fed>R4 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/Pillow.libs/libfreetype-6ad068c6.so.6.17.4 b/venv/lib/python3.9/site-packages/Pillow.libs/libfreetype-6ad068c6.so.6.17.4 new file mode 100755 index 0000000000000000000000000000000000000000..10edcb1504da88fa3fa0073d37b0f05f8105d7e3 GIT binary patch literal 1307624 zcmeFa3z%F}*8hLHlTIoTxYOUk|DHYILNgi5GP387qiG$WMjG~-gDJDQoMq7%Bb zrrc&4Gou(Y)6Ae4mllIcLb{ot5cFV7F+r8im|}uL$p5?cTBmB)O8R}@|Nr^@p67l3 zPim%}vp#3-wbx$zdiFV0xhi<{tm>*N$Nh|O4s}TKzrrLS7aB5~%bDW@oCaqs{=2iY zozbl+U0MI+?3!8w-J|39jC|aOEoYBfUwv5Ol`CPS8;SF_zi(=YK0bO7E4oM0r4N;f z@@p1u0HaX~{1w`N=UO*gdY7 zE-MOINhimgVE5>zYufnP7=euu*cgG05!e`k|HToIX?25#5tyMf&sAQ!5cB@{N@S#e z;J+K1Dm-7u%+i4TAJ^E!-_S9s;C+YXcOEzsXkzNumO z?!(0Ai_sglGXm>}4cSi&Q?A-!{CpcmHdL;KDB_0fA32Pl*%a~9|K%`#zCR4VXBhteF#hC*Der_~_{d@E@u?9T_CGs}o%@F=@A1R% z-eJl`>s=rI^ykxI^gkV@9`6|@K0h1A&cnl$>pVDuB

i8OF}j!{l2W#{Sx2>`WV` zUIvD-bHgzCMu+kL<6-h`A4Y$RVeCIVO#RLthMzi&|M_A3xo{ZX2tR%J)1L*y*dISk zKfPuc`zH=#XUs75^29K9Mhz3UJ>j@dI}drqF#1;x!)GDQjvKIZ$1whXI841fKaBr( zf^TSieq=N17anKlpTZzMPm2$)VY7kwW^<`0JI-3+hYEkYiFvc|yKpm2`rBN>{7~UD zOnrHr>+fg&HXocu;eTAlU>DK?`(feu))Zg%3)(?tPj0&xJn;k;=6^%U}z>?CdIb&RN00jq_>J9%i1*+>OI;rM%;6 z*`FS&Jvo5Pzl}!h9d$lO^BVPh&e@L61I%OTG)GfAvZ{-;wrw z=5)66As?It(mqdK#Nc}2VH_zw4{y%kT=++yYN@YTD`60yyCe{wNPGMJ)|}xb=Bnd7 zDDC0)Q`pWnVt;?B-#tdNevR-Uso#at&fWguGFpNf7)&DRNOKRb=%axLJ4 z^P%u7y$sy`GG5xlk~thV85W)6r5+#pC;M}!j6YY3oqNZ!ovZk=^N^HxyX~28EBtQh zzct4)cv8x>nbhx@r!!9pPs@1n=#QDpu;QEyvlO>yB@S3Fn$P)SXSB>~zZSlu*qJWt zBA1^c`qxXlsue#!LOQa)kIWZQv2&c1*Dvc9*Utjdk$!kJE1o3!KNbDWBtE|o{xfOk zFGe`SXM~?7@mVmN`GMlk@1=fU>Su7I=-(o|R=8{D78&P1l!knn=wBrKn+~=k;dXA3 zc3ZU-*OxnKFzB``(LfXldYuWz$qJNZ>cdI()XA6Hr+R5{i z*^aw@pyegSbKSeFSTFkB(ytHmar>NxdZo`RVt=u$PcCHa>@D+Gcs}dz!Pz@aqTkTS zV7};|E&k-TWq;g$@vy{ap2TO8*qJQj;WY=a{v%>%Ux?)Y!T)05mTPy3|C;%1;8e6f z`dlUTKL2Ruy^NhsiSx?y*#1+(Y5E}hyUF-pC;V9Pe}eeGQg~MUoGR;8ciobc`aR(- z&UX~zLZ7_!m$9g>-cj!`_?pc*H%R+@d@_T%qEC;XNq^!V+@8;p_J4=yZ{cJ8^F)7&l&hhN{aGsf zY4LxFtY@wkI}4@0Jjby9zMPFSLgIP+G`61?J1;^cf8P9rf!nSE((hWk*nr#bu8{hA zSne0x`Wi2BKI|Q~ze4N}NWRz50u`SJg+DKTCQoHQZx;Ts#Nh&Im|qGXFMOVid!54H z6aQ}>V&JyJR;jO<(ofxfy_M+ib}9R_kPi+`qZEffNW0xx?0+rgx^*2Zy6b_jaGmtW z$ol^`qW>T1?>im~hw*X8?cK!xQ?F$^&x-yrQjc5Hf(;*8MmW@cGo#g`pbnAInGyzo%6*X-z%*DknlCaJ z=`UN!{hB-P>?rGy&5q^vvx)e*RP+y$`Qm!9bGg_*NE|;w_)czrxtQ(9aNzt<%Jt_7 zTrRg>Mo8R#rPgV`l6txEeAajGPZLt_t7IK=yyUxsw4d=Zzq|JrzehQ!-lP9uMR&dT zxU}*dae_Y~uv&8c- z8LuXY{v5F%p3U~R7X81l&fr?1S1BsX_XL)Iu2U7^2`_^aCZzyH+{sCM?j zO8{Qfn;(B$oOd2}fJZuK3u~Qp9-hREa4v#OAF9m<C96yNzC)=w)QzMFYQ@uKKw6>t76>lYLs z6z+`rfhnL{uC{ww-=}y+p7+!%9?!78U-7B0GH+14`c39h#n;Mn$~MJ+K7t=K#1x+( zJfZlb!c&U-N3xwh#ord5R(xy?>kla2DLkY2zl0AezWpe+lT|!_A@iK#-4`+Uj;^ei zNnReS>J-00xKHtxb!?|z@!aNY$FKM<6PY(Ce$|%D!-@~k3tRX!DL(B`<`KnPKVW~_ z6u(D!kK#A}i}jO=?>Ghzy6{OWUOWR2wD1{FeB_zTGm392d{A*mlAm}Sy=HOiGEb^FKalSZHn(Sig`@&UF5~x zq~g2%o9n$-@#{Wko>KhmYPR2}_!Gj@iti=P zFDm|Al({pevcCSk9sBQ5{DAG5dlkP|xKHul(~GV6)GHo8j=5j)ZH{5yp!oH|1BwSj ztRGVRk0&w@E51`B^Cra?ihe}#Q|U!^e3})1ILy3F@!fvJJf`@Q5}!`ReUn)~p?FYu zkK!i^Pb$7pc(39wZ_D=6iie^yo+$3tYew<8qCcp(BXU;pX3@_n-Xgr9_|JqF6_1JR zjIC^+U83(%+=PpZ$!Udai91TR{T$*A60z&Ur9SreEhGaohW|A zUd)qHcMR-Q>q5WBZQ1QFO|E%I8>R3Og z_}}P@9QYIz-%9dzHmR)lsh4oO^(%g`@QC6wgeMfAEj+FGBT|nA#T!N6H?Gp3GlYi~ zzespY@tE+G;@1~Xc{#JNE@%w~F6@Nl_Qt`C#jN&f}cQ&icccpN@;(r$& zQ9LI+q4@oB=n-pYKB5*|>z zQFv7G(}X7#Zx)_W{1V~L=9T%j3->F2jqr%#*9lK3euMC|;&%$qD1OYj(oYrtz34mR zEB)NMne}~&KP38o#s5Yx&f*hR{4vpwDE|7TtRGW+iRdR3pL`DMrxbrd^wWwzb_(lf z6@O3k3yM#l%lh6eD&z1k(f29d-NgC<#n*~{Sn&%ZtRGc;%%$8fVv3)4ChO-EpK(9) zg5oy{FDm{!;m(B0a{WViNb!gN$o9jEpY|u_O^QD%Jfir>2UtI$`12{|J&Lb-n0Zq1 zd;ZM4SMjqRW1dp{YSAB1{MaX0Kcl#(k9k({zYEVPK4vlN7Zg8RxOZY@oYx7jQ+(P} zY{#egXTs|h-~BJF?^pa>;SGx4BRrt^Wnw?1_@9M`72k0@zrfj~_=UnFiVsS@J&JGf zH2a@a{O}>>y^4>m<9t(!U-}K}_bL9+=B%GqeA1@Ovx*N%zso89mGFY%-wH1(?uhJc zSy}I6TDV_(6px6$SMhB{zfN(tKll`XN&Kl-+->)M#eXOI4T`({Gobhfq90P+?LT3~ z_Z0t|6nFboL~+09H!B`Ef#Voee46ODDV~&grW8Ly^fQV-eJr_A%AB({;ezdms#c+#lL-D^e0v7Kl_3BqxhZwWM0^=Qs2!t zv3(`q>?77sDemT*QM_cwS83;@Rbof+qHt%2O8w4uxvx?DR^buFe=9tp_(Q_eiuVaG zD859vZ^uf1RtOI(zEXHh@xKXADgKf0tm2;v_wH1g@0Y>@imwwMRebc79Ji$6n+eY- zzLjui=gNF{6z*4iitvcy`wLGfK2vyF@e_p?6#t2E-!7H@TqHcKc$@H;;tPbQ6u(h; zR`Fj7_wHJm@7=-!ivL-7RPp7)lZwA4JfrwK!kyhJ^L<~qU-5qnk0@Rgo>08{DsB&H z#m5ORC_YiRufEbBpYX8adkBvyexUG_;vwN##g7s0ol=?aiNXVlpDsMA_<6#UieD-` zqjv}AClxdsf!hza^eN z#T(mMzh3bU`r;)%e#K9|oOy%dU$ij~DE_a@n1>Wk3lA%PaTDuD6|WV4Iu&p1V*P~T z{}$e(xc7S2Pb%IcJfnE_2G$=`JoGB_tl}q&zOz?l{9{s&9>v}Kyoz5h`gMx;2oEd% zE8#K4-?>rBtN6FiGw)UWLg8t}uU*0V1B$;aJfrxR!Uq-a?q)lly({B$@Po|j6!$#B zyk7D9g*Pbv<)2wUqWIDD1$BIy6~9GzRPh;~uzpPO9|`YN{Au9{#Xk_2S_vEQTkG2gI$Qt@TNdlf&Pe#i`;l;W4JWu8&|Tgi7& z@q52!{jB1zNZh>s%6PsdJfQe{!lR0REIg_B=fX3Je=XeEr!wD~tGONe6(27=qWI3j z6N(=wJgxYl!V8N3P`Gbur9a0B4=a9(@R;J~3QsA1vGBCw2UX(>*!W}>ze4m2ioZ94 z^}YL6`q?4+KE*HhvVK7E8$~~?_%Ft=ey`#;?9RMT@qYZ|o~^P<-)J z=0(M~67Jc*G7cf}$E)}P;dP4NCETa@J@i9__=FW-F^hSV;?smj6d(OV)^ApPC*d*0 zzma7YTO`sH~TRh5Ho$ z{dA5`z2d%U5`V>8XEKi}e)7tc=g+!s`_u(aC-W6rUixN%3ukM-|^yc&Fm~3QsD2nD9Qu!@@I)pCUY`_}Rjp zhRX6rh1V(GF5Iv9)xtxH-zq$!cv5(q;tvQqK?@Il4j6kbp~E8KHX zWgLct`xO6Nc!T2K2@fmoiE}$?R(uQLF~zqR-lMo*cuMhE!Uq&TO?X!E3xyXIzg)QY z;L12$E4*Iu9^nDSe=odA@kfP66<;R2Q}Ne?Cl!BRc%S0`7M@Z3JK;IS$6d$u;!LY7 z?_}Y1iti`fulQ`?A;sqkk0^ej@HWNUg(nohS$MDF_X5_ZVif05FS>1vhZfb_Y@ve{2<{yivLh}O7S_u2NXY5cvkVVg%=fX74Ds0 z8Ha0y*DL-D;Q__(5#FTugTkYVKP$Xb@t1@r6@N!~pW>ei&nRAfJ=a%G@iD@kLo3TW zQFxu=+Y9$AzMt@B#c%DC^?>55gtsZa*^{y!P<+H<<|)Nr$T06ye1!0{;*a0JaTrkC zwVP3VvFHyfzFfHXu*$f(_5+HKe3ku-D89`S=FN(~NI$rYPeSphUt*q8{O%RZ`xM_o zcv|sy#_%^!1{A;PZMKt9{FZl^XBCgU%RHy}L&6J+fAAUW7Zuao6vF;*W@aNO3nVVa1;o{U*iTaz+$iBKpmW zyYY%CzS&5w$4lGhZ$A0=1e`^%$Hz@wwt(XTC@7$GnNbxiFWFA(0 zneZmXzYrc#eB002&t}E1mHr-8{Qa+4zfJLbKV%+Lyzv|6or<6MG4q7t$L5*$D83v0 zU?M(A#ozdX`%$mr<3D1aQT#>ezd6O-e(TJvY(H-Qs#pBtpRu0}ir@Wn<^je3A-qlT z8^lgb@#EUrPOsu_zI}>sel_c-6`$Y1yr}qnV&6Huvb=v@#QOD$Z*mRu2E}*zHS>Vt z*9vb_{POEqKc@Kf-!Si0yi{Jr^LMd+TJa~7%!`WOCia~pD$85EoAv7zck^vf{J!6_ zen9b`^)hc$JbVxHnBx8SGw)U0&9_hSFaE^(X~ic!$h@fd5r1Uv1S`vX(?iVb72hny zyg~85^f3=8{-N+T#p7ZprufgEWIMfz7lrpJK5{ARrxo8zcv1077qh-ItFpYyM896~ zou6ZUzv6*q%o`Lx?yt-Pik~Gsr1;oZSU;@zsTt-?ivQtN<`Knjd5w9q;-|dDyiM^3 zrCc$^W8!D8;)8!@J1NB*-(%jV_#cI*6<;mf|HI1opLI5m+YO4}_!F7e6!$dCyr%d> z`axTKniQXUJ@bU(C)~iiNAahHrxd^WFRb6E_?}NQA5i>v!ZV5=Cwx%x`N9i|pGE)h z3_eB0kIORmgev3tjBu~wx$jxOPVt*2;%ol+_!NJ6Pv-TCJ5!kl6dzp5>-Lc1uH81p ze@Xw)1wJvwi=E6n6(1L8o>1H;Jf(PgrQ9bf?&g~y^235 zyiV~0#5}Bc{gKR@6z>rpQG7eG)2aAn^6&H{ z6hH4Mwx3koBl>B@ee@5C;4`536yX`g_Z2><_#wixiXSRGr}!M<1;tMlUR3-N;m*;O z?cq}49>wPi_bPt5@H)jig!>fl7GAIT9m4&J|4w*=;tvTADE^G_kmAdQhZTQAc$4D) z6dqB$AiP=eb;6^HZ}KL$hc?CQgvS)$MR=#;dkIe{-XOe3@fpICiq96_tN01RQ;MG^ zyif6F;c3NNg%2oxrSOd6*9jj~yjyry@tcI_6u(V)LGjy#7Ztx#xHG4+{og0tqxfUO zy^22}yiW0Fg!>d4;{OsJP<*ZMkm8%Z#qBVx_%_0u6yIHVMDc@# zH!D6{cvSI|g|{hwy6~9d=Lqjq{9@q=#TN+gQT$fnNyUFDyjStNgr^k$gYZ7Z?-QO@ z{7=FM6i*4yDE_GMLB*dCo>lxQ;W@>h6<$z$sqmuW&kJ{sscio%gnJbKn{c1vyZ?db z$9lyt_#<<_;?Lg4yg~83{=__>c-!;LLyF(DoOxLBqyNmjN%3E%m`4=9XBqQm#h-qT zc~tS&MZZn)uS7ql_`c$Qr{b50p9#fRKF0a>D1JNrgC+PR6>nL>Jf--NE1CBxo_v#e zTJbw2o&$5I&Bik~dJp!f-YW&NV!1HzqSE8FeE|7LxU z;%f`cy^7zEV_v8DsaxV7jKRmJ_!hUYe!b#p;eN%t?qL0Z;`8Yrn#Cuic-t$?!-~Hp zyh-sH8P<;|{+;k<#gBZI^`nYUeT{jW;&%#uT%WT!hMQQ5y1ewy&C;wjZHz>Z}$E+Vvyj6Hi@!V_pIZJ#x6;Dcir4;{K z^am7o^|Ol4yO;Z&b9`mFc7L7o^(elVaIfNr2(ME-B;2R?@xtpBpDWz2_(j4S6u(S( zK=EsYhZMg>cv$hI@TOsSWEkE&437@O+lJvW#a%h6c)-K;)T{Ye<|)OKTQcucJiQ0= zwBmuim=7rK`vLQe;sJTzdQkDSyziS;+>!S!a*C(rIb}ifpK!iK#gnqX>72mVc~=aG&Czy75swE&5@_Gr}W^f9b|Y@vP`46nCEI_$L+r z-i?pqKGDx8-XJ`y_@<9b`}t92d;+5HRXi-*r}#v%6H+`P`eDV}ghv#gEOt5-kBNRl z@r3ZC;(Lgl0mYM|pHVy|JgfM=ZhTIvj89thy^1@_Ii5bnr@Qe{JRtgE#bd%FiXZOA zNAZm4Clt>LPbz+_8z04;e)d13xLk$B zQT#$TK8nXgKcRS1cvA7p-S{Y;68((gY2jJL7r5~`xiUT((f2Cu3`qM?JmJPi@qp-u z6^{syDE}_eJ^mivWnmD#^;pE_=H8@t9V4XPw@xb z_$Zzh{jlO$;St3jbK|49_eJ(Up}0?YQt>C<_$VHgd^3v2gl83B;>PF4mGSXQzFx%x z!hMRr;KoPsi0FqEkNuU)8&UivH$IB{R!Dpl4+u{x{<<3<#UrAhQ9L6&tN1%^d`_*5 zPgeB3iWh|Y6#v+bkK)ctT&}R#2#+Y<oOqb4F!+QljrwJT2U(_yul!6n9>g@kep5@QC7VZhRE? ziGD)yfbgW^3*GoA9ufVF;xXY_#a%m|Gb`hh7JaYcS>Zm#T{|Jgy{}1p6!!^_DDK+n zR6Hj73B?ny%lM=CH4>k+;t_cdazOE{@QmU<;e(1Ng*#`dxVifyiaW9|;8i>zyiW0$ zaG&C7;q{6;a$oINJRrP5@tE*{;%VU_#T~gX4J#fH-lTX;ctr8E@Mgswxvz^V9uVH9 zcuaUq@wD(x#T~gXN+=!>-lKR-cvA7S@Lt6oxvxkm9uVHAcuaU&@wD&(#T{9fXA}1%j}>=hUFcOjAiPfTm~fxsY2o#XJF>3w zD;^NupmAp6we6nQM@2LsknDB``@d$UwBIKu<$;`qr%gQ zCxj0uo)Vr>JR^Ki@q+NI;@+p&|D57};RVIR!i$PWg*)e}_AlI{cuKfe@r>{~#S6lH zihKVe?O$=faKGYV;SGvMg$EQ*2oEWq5*}7OBfLrRg7Apq-lwJgEAAH_RXi-bP4TGk znBocHorJ?@_!UJgK<%8EOBD`-P_z4-4;8JSse`ctZGq;wj-7#WTVO6)yoj7 zlZt!g`E{@2e&H#_!|wBL#s4Whr+7r(e<&zk+>gIMRaCrNzNhB6??;%oiX7*4(f2F< zf_(2Rta$$iY(J{_uB({0DSpU5na33WtME?6tAr;McjS9UDaF@_pBcqp_3(RE1;xJ@ z&%CJk$MStH$9)e@;xk|DcohGW=zA59iJv~j9eJOuUh#-O^Q46K1@V${|6kmX2q`*9#wq)JFMTP_yO-Rk16iPt5b9FC!x6eeq>Vd zpWeyuv-K)I^)BWq#lOFsd7t8|?_r)++>!U?1{6O?ct-Kae|Q`l)cgzPg`e`gK)>R^ zJ%t-y(c&C2X^C zac-G>F=z2tEd7GT+bv$S_%#-HF64GgW#ui-#>f-r`Lbf70R+i%+n4v&9=N9<}&?EZ%1E zi58Dp{7s8@T71Cb35$PW@g9qBY4N1RZ?kx>#jmw^%Hp3}ywBoWSv+m=I*Sije9+<< zi~ro>gBJJjE1TwO*5X@R`ZnvWh_^B3mE-JVGKUmyj@ubDQ7JuF1bryfy z;y#O?XYqQAZ)0)4#UHnLgT>FVc);S@T0CU&%PbzY_;wa=vUtJb5sPnc@n(xRSv+d- zA6vZ5;@?|5X7SNhy?0vtAC`W?;x}2m$KsPMp0v2n;=LB%!Qv^4?`ZKpi`QCyrY-)4 zr9WWtoh+WQ_|6s|w7A!@pSAcdmVVCSk6655@m(!mwD@iocP=is|KC{LWAPg-?zMQm z#p^7-*y28m?{4vWi|=7^zs2{oc!R~iv3S7Zds#eW@rhPE!xn$b(r>c(-WHEo{3(k! zTl_nVM=hSWc$>vJ;(Re?@s}^DRDL@hU6+8H?{{=?_|be~V`={*J|S7Qfr#1&beG@uI~~v$zv2xBt^E?y>lm zmj7OhpKa;aS^PkY`z-!5i`QGc-{O9YH(0#E;s;qgVDW=39+sp-6q2c>$%o8%EBr;I$4C@ zygSLGNsbzMN0L1xM~pm)$jSSSTun0FqUL=@{^s|P>6S9@ zHS*^qZ$`3XlUcOiP%2+Q=`GOiPh`%E(JerX@u_Y2?Ku(^4Xz zF!CcL(~=+`GxGf;(^Q?08u=cQY0AwlG}Y$AM!uP3nqu<-BVR`{O`&7@7`6SbnlrMa1>YwBQ$ypvf zNv0_zpEB}Hl4**_CyjhC$uu?O6Gom&GEE8jn2~oUnWln#)W|!M93nYlxmUP|(bBqxo$nB+#16Gnc7Yseh6qBxj9$3dv`XoH6q8B%eug+Q_p>K8xg(k!O;8HpxjNA58K&BqxkK zmE?0tjv0A(l7B*S)W|!MOcPK(V&q9ApGR`o$m2;qpX7j%$CCV0lKn=mCiw!AeMbJ~ zw~#L+*=yv_Nxq0=$HckQ^}bbtM0c zWWSNGCi&+i`;2@A$?YV2jXaO!D@k^Yd_KunkzDx7)IZ5FlCwrWh2#Y!XN-J2$ybw{ zHu7weJ4j9$c_zsVNlqI1V3HS+oG|iKlCL2-X5`&TzLw;uk#{7yljMkzCy^W{Ic((d zBwt5zz{q1s?jqT5pObt8$&QgfA^Ap<3tyW0CpkfK*2r&@ zd=tqTBfm!S%_OId{36M>keo8|Qj%{aIcem@B;Q7I!pM)1{0ov}M!uiqUy>X(@;xN? zkQ_1c9VFjQa@fc>lY9rs0V7{W@|`66jeIr9zarUZqb`3Y#2GdWn}Fy z)5}f>b~kxC`p0!FA2%cZO}ud3wz#DoBGOlN&#Ee^ zJXxu7KdV%C&#Eq|P%JGg)RbUlME9%_qSAU<>2m7@xHPhR)=2l#spU(@;ZjZatQz;y zjPj)eaA{QctWoZzUCWoY!KKmNvqrm@HYr_dsX^g~_UP#MbS(G8i$_dJ&p4=9JF6Hk znA1Y-tip_SV`g*=d1~XUuoT-T{o`c`TAzoyYP#>-+X*d7w^Xmon1%YewUen!VcFhY zQ}`3Ebx;2QhsMy9VkrJ$sH3>qWz}<+A>kpC@bkIrvb3Iu{*$c#h^4=zI3g5Z8d~zn zVWFx_=+$DYNj&jDllZlk&*z5X%h!EC>0{F`M>?l%TuFI7Q)m2Vy{lcpVyG*O3ZP@4PR#Vej6wZ@I`UD@J>_#cb5u?x8_S=itGQMb z?0;@$!Rj;;h2l?#C|Ue5y4MMH7|CfJ+gFc^`5#x4FN^5XGmxR(-$%#XFX3=JxTd3h zjdS_fzAB*n51`u>T(g*jXK?Pgy4$RQ;qKe$-U`=IV#KZgx=ox#>C0>K&p;hM$Iuj8 zYw{^qLeuG5#Ewz0__ROZg;{dQT!`Vi9n%lCa>ee6N1>~P;$eUO?aJIrc9)<{ZqTkN#1N(G4;FDK`zlpFrBtpi zZUa?IOiW%zOqOAA3&n%EP)B>tx#|aWSl7B)?$pl^H>aaGvbB0>$As%;7wSSvc_q9V zx*S2wg{r7kHR7)nq0m7~YZuL@suk8fv5&k*@sKfcZ8tFzeXpw(57)V;UALK*5fA%Z z(jTD4;h2^%G>y$1V43NstEHm%2c#Ku9#V;YwB9YZ=VyHob30(VKm>{?deLcV;I@nl zWDK->VhHyWaGgWfJ@F(K;i|dX$|4F8ES6219?V?@SLPr%2vGdxQ2ecRnHQFwo1mUP z*YtN&AU=(^ueBs*bC(%i85MFE_ul_G4KTst(DufIF3K6Bgc%uH5fJo{P)D#Ry`7p_ z>zm@(g4J1S>+z@Ssj+oWfAiW+oZM%hn(}iCs9m_Z>3w7|Sj>OHU87k0xO0fFWfRJf zPRF3vydjsMm+cR(p?D4LFA59OEq+(`;FewJG}Ilg3dI|d+)Hh*r}Net>YE+GHC5=( zS6%tMq01K%qo|`#nHGSacpa8tB@bIiB!(uG;>i`TXf1kfsbTxjuyeVm zOq-W3(>mJxTM?Ib0hvu?v%t^F?pe= zmHC;m3EAvGZLGeejr>i^@6X*}#sSDMcm;AWz37EywUf`c6IMSRXcS8yQI(~+&B z#mrcfUA~vw!(gZ@mZVekyRm&c<1A0Ba!KH&1QU^2Nv$hTkNk5(TU0^>I+*JZu0m30 z=l!GtOf1 z)$n639LnaWN{zR!iZ^Dl+8E?;kL}wDcJgnLv5xjZnw>`xSWduHSimDUGcc(Gmtx8$q$z48oG4wS=wLi-sUAAt%n+ppo(@$l74xRUY-b$riuJ%;sH?NnSY2g0@{*x#Dlf+D zi=lWmjmfY+Etsjj`VzAmTq~msEx~EdzkGDxI&2h>_egAJ>Z;7Ss2k}Zq(}bMVB~ey z=N93mJEqRoEK<-EO5+MT6;gNeLVrZL;l02E1U?J2E||>j#;=l z05?Nl%`JR2cP*qeOF5SMSjw`Lby{d;P{1fh7SLf{{RFo|i(%ghebt&pIT41dV3!&S z+Cwly?d0+?kTRjK28Tw{NvZ7rw|tyX^6~$hXX+*@jx}zuXqNdNy07UeRkA6-Z~^|W z1DkVNe8$ZsS=?q(4!O{)Sn!sDnJWjAYMg3%uoTQeH<*K!(+EeDa&8%I>JqD|J$MXA zhs<(rz)X&2MRyC@ODK+8;2^Gry*T1xz~ip>=xP3MW=1uT#knC?zNF z%b5pIT9f<4isWwYb#nD9^kL4OT9TD}Dg7IyQS#o+-cA2RDSd|1)7>s*0#h^=NX*WS@V}WIS-gl;?7c^y1l83?kOl{ZbW95TmoD#pgYsmDa%4}jw#&~xh82Z zicKN>wAA4cEu|2B1$Am3s9LuM5QDPPueFkd5>BDfaGfG5)FaIr3g%4w&!Kc(jWAm+ zR}dC+<*3q?nRR+fr;s#ZPV2+)lEU!PiyV4GrVXQ=bhP(z!%I16ct>%=ONGp>VV_w; zP}$7#;ee0b>cjOA`3wcO^hRR>X_y8`#UL%jhO`i>l9_*hWSgnmfSH#_!5NQE8O9ox>KB|8Ibhgu_Lhyt3%Nbb=&HAa_H-BZJC zDlM#@i=h%a5%A8^T<_<*t4<2g?V)`#p(!vCOu!rvB3ouX!n_ts3ahhNFYfvaW^AWn zojx?Q7yE;&2@VBm-P?7<^NG;3VByMfCCRK(UacXb4m-|QI84_ug(Q8@{wQq!vCQxp;*lCnzUd`V~u?i(`ZmSG>9p(#u;U6zznmU5p_#*zny$Qeq! zG*q<&B5WJG5Yb>T;nLc=#S5B2rGACQTSsx~m7`6U#^i$F$c6=V>JZu!Qt_GrN&2i# zZOQD}1Wx)Q6EqsZ)~{`3Efr1<1+RFsZ@}LQM)4W{MxU zW(N7H+l!zmy{O~4klS0RWSj}skFGUyN57ha&>zgv0e3NI+?Z+29l4(q|SxNV?t;AQ-DhV8SE;P^0BvlwKx*j0PmG(`}7`{v#cSYela#iLw5n=fN<%Z`4x_zLy zenN3542^X|bPk26w6sN2ZpHXOZE+472%0waLhkcfoDZ6A%zfUyiLJdWUHdq-ChQ#K z4#Uk8#kyn>1(41epObgP`n4ryweQ=zDKe|3G zn7$G>KNv(X>{OYg@{EJ7qBY{?hoZLLMahLqgh9es?SobLgMo_W6lC^sS}F3i+5Gx$k1IW z8J|#sK!7TKGW*CfjRM{K*Icp*qJ^N8LMFbJHYWX4PyeT~`$hD>%g%@F5HLj7ea6$> zxQ6_G#_YCXwRQd5rh+jqtij^S>r@1P}lJR%*=sO7vQo=9dX>zgy=~S+6%8C8}W$UxL_oy1&4PIc7HXrGR9s^cV%$;ixUmHE*1Tn*)_mE_b&8-BiR|pELJA7}HH-EA$6fQn_Fi z8!KjvfbZr!g0`4l9yCv(2FTyv!(X#Mrv43#Er8>b!M23fnX z#|=tX6!rTq8U>!E4|3bspg*s?Vf;a)s6kMOYVtdovSRguia|wDTv3g90uoyCKB@}$ zi9%Z64K4Wy1pUu!f$aY`>iTlA5f?weMK%x*hfpch$OgI^-*va4P(7ou*b)MAZZ zV4T@swr)%i7RLR**JEjM|5P@S`{h)*9k8L)8qMt{)+l_NgvX}yPsJ@#N4lyb`#s-`!V0Q;&MMkZ=x(Rhiy^=? zJDNDi-`wk_fHY82yFfKp578uy%2>sFM5b6%@N^QFOJ%?eX`XhulP|h(aKn>tgA^=B zxlQ6%cg*>lh*Zg5y;+u+=XH2Q&!NDUg6Y5%3ObLV15+rd)_bIUrhB6Nzy&&wn^B3* z&<^OlaBe(Y%~u`wqEo)+rAu~bNsfmb0!thv^v@X)OLDc5}Y^08h{e zQ=m;cS_shOlU{!z;Gtrpoxb&o84!^5OrJaAT_P{aAZ3o4*3fjEq4e~!Kuf)QZtm#c z40Sc+=Fv)zhiGU~?&tzudMU)b;e$m2y2iYx%)m<92fR3LcojLzV$dEhsX}wulfs5a zCl!3{XXGl4g^g=bVstdSv^i5+ELo{QPONmO$0o5Xwg)vh}8LK1<~ zE3f}Ru2a|Vo`Zq}2Zs+^@?{e?gonabu10UUD_}K>EAFd-x$UtfU8?Q%)!e!LtMa&E zKc?-VRd$Ps0<{M+P2&``66~S#YfZaTejNX-#CWBtT~NN~uB?*6yqDRGxo2^c+|5aF z7aH(UNJ~BkN*xV1{n&~^OU044qPRXUFySn1>9aEq9Hc#tf>XQbT3ACzT#YN~(mLqp zD*&N`yLmGiUBc;TDNhXv1*M+ro}yjxgDZK0NaMmh^f~N2p~;IQ_rnqF61WzrOQJV; z=*=$b9bwN9&DCVtn1f!ajDBi+=!FP|yWM8G0F=@1DM1&mQDSr*dTY3x60h&r31QV# z)B4FCu#@?aAu?-4WtuxBoSO#=lQCOT-6AjinT|(`eskWD_Q)c+lslPWzq!j&;lxj4 z?gqQ@`NUP%#R|={%bH>`js+ZMI`X2XiI$mg3!9oFY8P!vl4*#3<6B4C$IY*Z>DwEU zw>XjRpe3Q&IZLq1jKk8mBeDnPxdDQP z4gX<%F#3ppwC;aoW5a&b;=3~H`*Ss%ALa9jB+~%jYlmrVHz)?Of#E^1!~^Z zXSn-43S*d}>3u+4LF=JeaC6LN1&V-C#^ru;NBW?<0*W{0;&W)Fj#fv5SYm)iJr>bJ z6B!X{y`2~op+9Es2OyOLWFC{2Ryn3Dc=rvKV1E-)KoJ!B+`^BH(izVhIEK;L1BavoL zPQx29QZJ`x%+OwW1)JKl-GtRhcmQ9<SqsKU(5?cP^3xOGQ0_1=9nVywceZ%B`hhFWDG zx97}q@TPM5MMmbP+Ed;wCMWTS1*(~D%sHYQ%(?fN{lP5RVKp;^4A6YqZASH6sW#U< zXKFL+-W2|Xv!Wi6sOOe|Y+%OOg?85MGX5CNlcD%+O?2p5 zL@ZQ;Y9m)rO9FZrq|x9CI4v!AMWHK}0Gxh7OY6mWI~Ptk`NQ#40bevBvkq-~F5(Qx zETSip8IQ1nZA_qOs7(`n8vh_B@IY%6_cGk#;gs(97DbJl!JhKPT=`-fUrd%SmQw~} zu!)y)T$|-&^y)$|(UCn&GNUtdcS%m+?OEZu67K;|mUyAWlaxb=m-TzQ7EzEpiX&4>nth@ zmJE~0kM8jM)em7W0I zR=NsL@OnC`slpSa*pMeC6?;Obn4ai$685As|2Va#hw&c-36G+kuG>tD?dmp7wHu}7 zp?5sKRx-3Fl+4&SjMBgG?VBMCkZa98nFOH=;Z~t8m%emC%I4O=VWlLdWw`;dFc1eh z9_%wEiU(5&8^zYdeu~*KHhVygq-!#8A+~APb`)z`CU+D^wM?fswvU93ETU42HjGWk zG^!~>kNap~b06XIh7xIw2x0TksNl%~-2s$U28|(l6{aiL7ssZG>ErQ48o>ohSqMWZ zrjfNog6YoiBs!P}s&oUAWz6^Pc!7Z~nsqR5V5QBvi;FtliLG1ra~erwq3N{Cd=+L2 zE-+uB`{~My{BVd2zjc?M%7WANv(BeaJ??d3U=kCFv9&y0$#_h|>5(>lNEcToQ`_1%F)(u3h^S1JN%>AV}Fp1f=YMrEpDHy|ESvI|bHqy){Pk(Mk(Zm?Nqcmlo zWBjOGE7Ti(ch*Jj{kg~K%`D>-r{paPChn5MU0RHL)&vZDd`6ebUMgJxrNbnMoilfZ zOD_SqFC);ej=|=DTWqXbsnE1yHQUXQLrrL*d@sx`H2oAT zm=!QK(rXtjV1o!L?T^Ua8VWiML#(?lqV*{19W;V%0BAxR_IV25m0G+MVkpGECCnPa zq%k+UCAi@WRYs>t)CmZ?nOA zG;y(@8`mMUC1-YBN-?T_+Qev(N@hltg0y6}vfSOK2mr;O`iyikq!{d|MU%;zo|M zm2ErHf|E4nv17D3gFV_IEX3!)If^)CjiS%Mh2!cOQEs?`7Ga#Ra^q($MdVhxM;(k8 zI_ZTtq`=rqF^sjZM9X^L&6Ao@M>fqXM7Q3NISSK}KCJRm9qiDhdRH5+VLe&WqxNGI zkdZ03@v=e#wJ9blGNq!CWrWH0#g7_tZPv>xvtpU%W4R-vWK(#_!MUPi=ie(Au)fmh z@Oc>*&>_V4VG4(aQ7#avVobZbn_rXok5 zy z*+i^J?JMpoE#9B|0zVxhmt@!)gor=1TVA1MV9!r|9Jgb%eCpYSzVb!6jb1P(R^_2# z5mde!>FJmg8{2VC>|0TF0!DQtA^1FiHr)eblB61Du$%3IU7VP)T)U`+GBjnO7s==w zXSE9>7Td+~iRSEbVz>gu)*nfE%xFaY28_Bo1%{bX`@wpscF}hfM_bdRu3h*cxVY>i zb2N`5M$pAQJV&E-463Ipk9mwV`OA9o;B&?r;{2~i5$Epx@1MO10@`v?I# z7e4PS*PFy&Dg)`$Pux+NMw0)r_HR)`nNk?YI#p83Nm6`zak7>6h^UFwA$fud+!%|$ z8ha^#u8tr-k~C-`zL=OTe<=}L9C#<0Z__VrIqyu&9N(0(ac7P`DD`2ShzB2~Gj|R# zOA7>>MzmlruHcU{r`&F)+>U^EU2~8lEx6kUOs>XMKg3pa5_w#&Awb7EbMmEPiw zjrVA4rtC89EVLd?z}=ka&)tqXb-&SAlYamSBuEso*2yAJ`>VZ8-XYHN@?;cl9jwbO zR5w|y$YOAmK1S>cH=85B@ierfK&tmFRs%6tuiq>$DVZ_pc8%6cp@;yv9jN6jmU*z? z7X*?(_%l0*S*S)A2goX~$#(yO05}_ooYJuM+mLz5P~h#|O=jM_!E4lX` z;xxuu$0so{^~1*v&Z7O4Rv~<2haM3|S=QoV-L1%4D%%WXi#nv-R&Owyb8b5;^?#4nXlOt_UD^q6U%LtA#4ci6J#0X^4k z%W7(X?)PHl3*lJ#XXz1DhxIz|3}Y_17Ka>qdoQ_88JR#3?u7LNDy6|cTIA?R< z1ErOt{*fE^o&d&Z)mlK@(Yi3rns*CKZq&sCZIm5-e;(Nju(XgY9L7bgh|JdA-ng+e z*7^fsxQcU`xcPD|U6vih(p`@aGc3x1p~DosCf|jG*rB2H=H7vF4$EsSOFkGuYbgx< z?oAFF@4*cw*A3|LeFMGKLM7-5V2Qu>sy}gQjN@5xycHWv2A3QU;z@jnd?-1J<(ldfk9Fjgt6=IM(*x2 zJ%H~T5TRFTMb*9kUbx-LwLdJ0`ptL(Q{+C(1|sAFRVfQ*d&u17Ry>uBnR_;~;A(ag z6p^~wG%RTYWWnoBu;nonzNe8NSLs{yH80AnVkZG9c}{^Zbe{-0QD7h4COaY}F83Qv zTy#{Ue*YmL+4L_}0@j`K?Qm|ec!+j|4++r%B|gVceCDP~EuSiln{U`O8u?bjuE@}Q zC7&*$W#HYT@=GrA4Tz!{;t&@H>#^x)op({I8R7`wO|5a~Vn?@?LM>o3fUzw*l)*Tf z_~m5=NB=zCp|BPZ(&Eq&oHYjpMW(eKTycwB(<;B5gFeuo z``|vb82r#!>lo4EUqJB~32z?Fd&ESeRO1oU_yFySU<(sp@;L&#sYl1>^mYdSg2s`f zz_~jOurPp9;Ld{@oH_U6oJt2d6vCzlh7QO)I{p>U>To%SCv|A1HTj!(fs10%u15mx z(}6aLNRc3?Ag0R|mj;Qo|HU!C2?Mo&H?~4vFGam#XF#%hCPqn7@>4iNJZIz#edP?% ze9Ij~`c8kK83{2I@=GyCV&4#rwDbyVuMC9K=bd%YdFCk6ipM*&K&oq#;I==a3QBuGW+-$o zUBQ>QB~ixiW)prlN*+H`6YN71OyTi!FB)MIQx(3Q2huAzJ+ehvqn6QEFs|r_^xORb*Wolj)vg}e8zn|0=1_Zs`(~s4yX%Y% z6b!FX(QXo%HgkjZM0>&N1Z5R(?}4`o)MzJaGOLhLPn(&skG`b=YKR`lApic{b|!FWs%5XwLIB{k34{H_V#D=Jqiv}U)8*5? z<*?F?TYz#`d>#9(C`Jw=2}T7E4*4f(AY9O%+b4Q?3!WcSWb(fwR+;h!{8}o$qxX@O z@+uxe2cH>5(L_lclmx@SrE)5%pzF(6MjpwKn*YK2dF*d{*GiA)2cI#W8@BI_mud(zLU#^h)t;tW~`bQ@Sd!RLl zN8p!^!?5UqV|m$5DqoyJJCd0Soxed5)rM@4t$9Npo|x`-$hGC##_Awt6p%*W|BZlNk(71@c_f9=Gk`9--pS=!<({LxM9Ds(n283f{>cgC8GU zci<+@&}f`|gA;QHiQ4H!lwJ+h9%DwN3?|?NqJ+HK`{u-#92rmNw!ll5+zZUqT8+j? z6Qgm)6z+65iI=hIr5*bI=_>j{c-F1S=VBNgF)p+wF*;)OnUg?OcA_d{{XzQePO2}| z2~`z(eJ~9|EvR!{s|Ory^w_?rR!J;7?b35MEP`N`Lu>k(X2-yR~!e;+#$^cLmSnJ z8`}A}_CE^ksS7JY+b{yAD?>X4Qx@Wpamz4~R2H;n5Ra?omx8zs8LEUI;@jS}Po%Mp z=q7y|N)olM;G_5%1KcIlD3uf(rdEa#6LT9xB{HnAI>ANGP3#4FO@Rlx+aqB`|C&p{? z22~HAcVREG@M07cEib+-U%@*xH0O~w8PqtZ=M@(Q5ZZ0QGMay&Q`GQ9y`u3Ti|aHR zsp~L9Mf^WOagSAd?UC$k22N(F=^MD8TLSW&e@z7nL3Bpbrq^6u(PBoqCaQv2)n$H$ zQCg~7oTg}7v3ijj@`j2N+aRSX*+9Lc1(Owo>;F!@V?>2Nb2?3s_~-n3@inxgyK63( zx(T{Qf9`&IpJ;!yax>22XD?`+!q%V+lW@z-;ASk_{I36pyZ3>Qw5sm^Ct(-DADyVE z5wQdW-7Q$xR_s!sj_9-_Wi=>U(bg9KfM}&6B(nJ0>}H#dWE@9R>$Yo4ZER7uE!J&| z7?IU1Zb_i@YmohZ8#wv$%Y#B4Tk#wD*Nf$LXQ9yXnA z7u~meb8x)7)w_jdM+)y}!p$mbI4bbB%h%V9s7o2)z9PL&WqsKibDYjt7E8t~mne(W z`K_V7U-0(k@!mn?a(vW8t8H1;!UD)iH=7QjSTJXi?+&)VV)Klx#f&Rhw}4N#_G;nKrTi1iaW^hM^~JGIThwaizJz=>bH7>zfP#6NF5SR1Y;*N&n5*B0{m*F- zIbz=k904a}>rJUrz%b>LE{h|UT6K)%T3yy`2{0A(qrZ5YXysuZp~0b6#kxn7l0@>n zl!xIqpWed*^60$NUnUK_@Up2(Ui<0+^~>GAk!l&b447vrEj?;d_w@$?$Dav!1;>`)28b~atIYIYlqN&c|K00*d0=mK9yy99lcUBHMmXCrC z$`Z`!`-~vS+W{``OTpc4=7*)=Uh@Y>0@t+qUce0diOh}vq&ZtS~?(P zE>6~#%g#2J!Hk!`H!}P^+>}O!A4ZdIeVfdPq}q0C#B^59*A-^Q=72;3MDog_!|{#j z!e3+Dwf&0K z{gJmE*#+Wddf~me}>?AP@q{S56(mJp#}qc zo~dyTK{(3*m)e5NAl<5u7DWPZIW4;7Le!Z{_L>koLZk1)Yyn%uu25j`_*izMnXhN# z;f>P}dCQs%RC}#0M%8K*-78%sVR9O#m((vWW>!FrvLsP#d090p5EA8TacFgic{o>1 zD7>ONJwEoUN)Ggna}>WuO@4jll{ADs8rO&*yzo^KS2*ybnkAOBl4xDUzjV3MgswJY zajFV7Blcl=@9>JSo%HeY7nptN*kFZnH(qDV4flwuH`dBGQgn5zYI?b6u;B>>Qfn*$ zirZZej4iIA#o~53d}mOsVN}CP`Xd!6E&lO!*`W|yFXZa&rRkI7yL=h$&njC_Wpl+_ zH-6zFxC5^RJ_R>&GwNaFBYY(Dp*Uoiovnxqy2)F>MV{j~_5+@(0Hz6N?EApF)nat> z^>_z<6C_0tGMHsAHwx5BCw3g9Hnp3zZEK_CoOEGBFyZKD1!l?|E9HA!W`}%6lSIm8 zDBshGGTsk{@-!&(>4+%5pD>&`lqG;i_K4{U#qFp?9Z<4eTt9p8`Nt!5XPU429n*z2 z)A7in^JNwqdY1^4B*{MyX$A|N(cQ+NKQwVs&E_x$n8ImSYR>OYtxODm?4NQ#ozzMB z*K-Hv@hQ6pdGseG_jCIekURm1Q{)b7h@$~b+2 z)k!^dOv=vF@2qDzieo3l46->_Cng13r+14&e~shrq^@Vz^ZGvjzLB&KEA8R06WB}- zSvkoUi<<@fDIdA8^5$}xkJ|PhkTz4koqr3_XOU8baM^gfwz~E{uv&}Q;GINB3xR;C zyS$5MqBh>4$1AEL)-H<4C+K<^SN-K-rWVT)=&4jiP)b?)QoP|^WD#nrmo_%Z$0gRd zNv4Wa_Gk5yqI&Vs z>!g|3yHpF0sYX4=8ud(#DNlcBN$G3i^Gs4TGK$4~d{%qgFE|8$2q%T*{h5IBNk@U_bv&8x3iiWR($CIQgBlpG3?x z1RB!LR$DBS=~UJ_wve6*yjiNH&HWgLPWw)_#}p#>VJ#6-^KoQIHw_#Ar}3%vN&mh; zPqPTp$_Q=2L9PCcINw)L-R)r%%44$366j4T=Fc6uz*n2w>0Pc%(oIws+mKYm*EyQ8 z*;HGub}Up=?eeMB16>C9q2W74vZz_e>meK`elFm&!*0Lt_YQ0ty@RtSo2K}(WM?1n zmEVX{+)m7#4zg&v{Zf{;z+;Wd9#mz3D)L!cY17#B7A$_|l+)5Bc;V}AJx0Y}1Ix+7 z3e`jrbTCo$vEPP?H5J-H?Pl(oyZV;qOWYd&u3$)EAE%> zX%J;(8aJ;ucXQVe8wcF9R!2_qW9Zp>=pOW4P&PDgd9ouukk!=dRm?! z8KHy>MNGh6;TJ2`(oFOFRjaaT*_qIEenpuf*}#B`PG3B-Ee2j{%xa<)~rU!?e46 zA;eg|(4ZBHr*BlC-wI}}n39{d@^Wt_a87JR=&6++eg)b@XDd%$vCz6C|DalMMKx-= zD&osch-Up*GU6q^qcJrY_={8U5R|4}C)NjN$lM2uKBq1UCqM?@rka6u99WB=n@bfs zHP5`k#2rj=fsk6Bu`iIlJImM`<_x;hdgMHoY3(-%F6M)tbP~;U+OC2(XdOf=;diFg z4>m3-&k#?d}Rlp_+EW~dQvN%Sk({844gMcXq$m2>(rYLyhRE^coeMfGta%XEsS zHJd!JxDkqT{i};Nycz|<*7@vQQ?S1J4SmNKYOA^hR(RHYAeS#4sr)c})!Kv+A(2t^E+P^%ee^ zK;&>~6q{Xdl=NBf#|1S8+lIL#!l9%ecJ838NynyF8K)yvDHN#khn|j9C1S|LomVea zTc?wju>3=#K}+yqxQ)P7xJXlDj)I@>K{P?|3B$0I-pChcEX0@691Aa!)EXWg*q7+5`T@OqrcQY|jbHQq56 zOcor!&6-vASo88s-wm*l$*1Qizvf-AHEcG`B}%B7N;VtldKaFg@+BTywdsX@RfCwFE!gw$CbzBUlgf-YcX8oDl)fR&S194 zNv0@U7&N(**&Ug4HY_l5^wGRtq#|vSbFP-Ki>uh`H7l~Vqe!Hed>*Qm2B1_QsWI7B ziJhof5~xY-5Ne)9UE@f_^>{!mFlv;_Lj&GmBrGJeO%4s=ya%k z7CD+W`OW*Ja|b-6$g#F}Nm=8*{Y%JJV#44X^%H=qx?vw)=+np|+*qYn!c4d=7fIl_ zeh&#`E6;L(kT>K9=MdW`NQE0ZnsCgaeb3U2@^<#7cZVoGpZRx ztx1-S)W+hF7Krp{i|2^Iq2Z-A62EUz+tUIH%fx;G1qJ{mw`=>tnn7|G804XgGmc)i z4ex)1ZM663Ber1P*^=`2IlTwysD|km;R}Q`5TA)`y+|eGvbFjWI4{Y=X;gm9dm(QD zCP*$zL1+a1k{qb;i9*h|Pe zI($!ear;?Wo0A~NRM8Iz)3*FH4*I3dCfK0{A}2REOe-OuW*p0STFQ7q4|R7H-t)+A>Ti=;I(#E_T?;uE{F)FTg?)%bd*q`;cBycWA7;1?}ha z&}yM$^J-Xy${IqyVHH2zz925Q!{Sw3u>7PT3vBkUpB7I68ufti(AK+Q%Cu-)XA<5< zs%dWG6owj{qxs3^C@r~pg}uZ_HXYhYJAW~&uei(=j5q;5`+5rDvPs!YaVXjP!_VW_ zU6RbM+*ZJ_^}0+-t%TuhaV$hR1X#1MEqE{O#CaDmN*%hdz=C5ysty@j^z z#nvbmZJpbDE!sMZFi_@_=l6&=&`7Hn3|Lq^c8&J)4GQAP3JX9JEyA?WkW->vb7eT>jP5Oh<{%3O8ua$ z%xXnT$YS8}%4|K;Jes8@cW(!#5a4h`@k1XaISmu_QkwK#P#sV=Ceb5-MGOJ;V+f=V zjkDqZ^N-rIK;rx*fARyo!7-*N|IDChu6g}{48wn`7Cq7lM36?$R~$?)=1F{r&eXZo zGM$R5k;Co-fxx3;)1(eqrF5Q|H6U4@6{eT5f`PS!72YNA5-R{A)~lBRO1`Rkg*~i| z3)KrH#>9diOcg-zpl0R{VSU6KI^uP}BKPx5WQIcsi=Z*I?@L|LPgg*np=6sik?>lh zT6Qd2yHri)v0Wlr8n+BooASB!=w5>=5<^=vWY@LYhpv;gRGpijs8XvDqHLx@(Z4v~ z8e|X=tUAp@;_hZzP5iI-NDI|m0(U%%{(h+A^SiDCX`cv)<9cj7MGo94Dr;`mlnS~W zAUJV|{PcS|B`)*7_@G|^UCImdnR+zkaaksqMWX&nUGZL-GZVWAOshfH^5NRZ4S&bb zUDfIKY6(LTS+f`He=Ip?0o;^;ER<|hvn9Sefw*?wKm&$}UfW4FOFoNX(mKw^3XKsi z=r^u;(_4oGu-Z0DuFRwMLLC0{x-0;QI(h*Z*taaSbTWc0xwNjh$Cpbx+zLA=-pmzm zeakxy3~lgretPTWmtQ;d>#T3#s8U`Y1&SIi2j4^WK$LnO>p^;l zf_`*a{5r2O*1gZzZ6TM5jtn+!P1}fh=|lQ6&R7G&vo?6<(2c+?L>9@9m8HN5MF&pf z!rFcRmqWW|Jpaki5Y>q^*3ddNB&h`l%2T%b6;rq9zSl$>qKkB?WE&Mu~#6!e!y7i7cPSp2UO_pd*RHWH};1AvA1wU+? zmB(&V-8YMXMH%;Hnky#{`M9D_6bV3HAhKiGhMDAe+EFHhyC>921K?wu?T@fF4))Ua zCRkyiF!XNdqpU%RZ}7dT@j){5;HOm5Sd$W;-n9o%Kl{Z;9gnneCBDgLc!O4~Ha|FR zJasfF3picROfz&4sTT|=fvoe+ifed<69PP( zChE+lblC;ZN9R|hVK-7|4Qm_s(GEx>U(dM%C;eXVZGC?Qy2e$*KcsIzUXp&h>wl1> zVhp+6iJ}Fk=TvP7)I&HR+l`dC&r{Z!E*n_Tb#?3i2z{-HqUvKDBS{Yp*Z)|U>w&@( zqC_0+fw}qv_M*gz@!5RGb8F9}(U@St*3l_fwt6|)wQSy#6CD(d14gS}Q36s(hKV9+ zz@&GHv-;W3&EcehqEX))-Mlb2Vc;8O>K3rr5aR7pGu4edb3MeyH9pVZu>Gz)Gc5Jc8O)t)sw z`A9^|SJxEU7qm;>FiMh!1>J3{mi8p4JCs+eERA)A(&yy5y-5Nc( z#`MWJ2`*tT2gBL|Zact|s3S|)qFX%YJ&M*jcUat;`P%q|BioclUXWy&Y5oI~aX={( zE`2m^wOht7D!`la{$-YzuR_Qo=q?#9KA}cB(IY-OqBc?AxL=4SH>z*H)u`UYLJg%? zw|p{zVy@;wIhCh>#6`BA?&EpBHc(NLZ}BS%js>_MdXv5(ORkm(m9QV^NHBfn!Yio= zksB3?{oZtU`49Nf*$+2$)a_nTbpQvv9 zKwJb^WC3FlvDHK_VqS6kv$Yzq3?6c?gsta{LZR1}2(R$<`~ooV}IvV1~<_}fAO+yp*#_! z6)adS-?Qy<&Sw0};n5BEtg3Ce*=+merc0%hel69B1?v)uQrset`zU(UQdJ!Xuz7@TPF49aXNu`+`q|Y(4Zv%WZw-klkeB zOnH*5M(KR0#eVA98BjIG^4BoGOt$rXB1q#pp@I19Xb&iK5}ZgE%k0tC;&}mH+Em;4 z0hXmgbwOgFkhZ-BIp6H3q@HHM%vP-S`-^!7|MPa&M2@%YRFs*5%xot=d1zq5lPOrM z0^8W|v@q!g$)xRWEtE~x*=({QKh)RR7u5su{z&!+|(+tXuXOrVFP?xi56;cmcvdms*YL)>y9Ry$AQH9I=Xm@LP+dir|O>O3w zn$C<gfOER3Nj(@eI0{ zCh!U473)o}%{u;>UYlk!^|P950D-7A4XM_}+0I`~6EO38QUlH+r^w)j^4aQzXqK4R zSSM8IB|-X%yL-Sn-X)dbGh{CIEK&T?HDD;GT=9G7`v9(@bp6`K|j zE}#ZTy*|Sk1c!dr_)wz4GBC8|U{PN19%oPQnlG!dIDNT@Vfvy=q*RE3tfDW&mnImb z;@ExTi_YP>QHk=j0om$FI0Ob8;yFXd}>j?yT$Dv6T`YW z<9D2Q)eAjjXd09mnVLr+Q=_eY4x<7x%eEOZni(WN6~9Md)R{Qkp#$XLF({boI>^|# z=1(ZR5*Z~iF-e*1`7=kN0Y1O)NTB^q_ZeLw^-{pocD3x#Ms95gYl>A?->hp^2Nalc zp@;B~mdSJ%-aq-T$SbkkO& z&SPSYUigvrjTfK)24iaPg6ytcyS;Rg4ag?#9k2Gj=g4NYsGIqy8M}4&@{d|5(c$&8 zU-r-0YPkU>?A(V^AMsMquRK38e6!ujC3zurjY$~%6t;`Ck#P!m^r1x}i1T6$ zo7@f5B3L4>GC9MZqU5M~TbNSxuC!A)K?Q>PnZK-G?G3Y&sK{Lp*^PnpzGw!oaq~~9 zhv^^I)8h%prN>^W29|2DQK8;MVGTNiE>JT<#=af>Fc&n50B6S*s2zPnn)xv|2KNcB zg7MVLey1U0TZ0WW5RGhYm}{$Wo>uK0Uqijm+16pA&H&VrrEw}rpvy&o8ezTyVWo^s zIbpM84ymnf$wx~`Vr^-G_0>Py)}UZ!o+;0QbySU7e`U`$i^bi)DN!S*DY=X`vD!-& z4U}4iZQKCadF-&%D;5=9#rM5}H*&0=;p;tqq2X0OyWCPo%rsy4I-8SyHEh>ohTF^QXMZ?kxzg7YkW0;qMVd7Qw#il% zaB0|F7LzJ41TmAeeWjse#fsa%tVa>OW|vpdYsKxsWx5$wQ;POp9E-D>?_%LvReawK zsqDB|L<^DJc^7VAV`kB;jBcuNH*ceF0r$C8emG*z6MRiR8(*|!@LSR-q-pv>_=@hj zu&+`@`K?_Db5!{Bnl;iV!_WiiMBS1E#}dSyNT)fmby|o~#pJ4e`MB1?$Kk+r!H_Gz z07#NEhJ&B41Q8;(hFXMTS04rO0*bu$Xk5YDrwQfoj%j<=O${68Z9PA{h`e{-fFMk^ z9W-lObN@JO0D}H+cd?-{# zINdMcg9~cwi!4vbZf(_2g;51L9^S?Ob2=V^ML>p+>j~%Bk+DaX0Xs)dzs@<*u@b)B z&jEA$5Z!OEGAJ@4abDH&dn@-nAl^6=3xe)Y;KGFE$>h$}m~Smry4%zgCdcKacT?%q z@??!zUz{Fo9AzHMv)$~#eT139lp}mD zbEWRVmj^P&{G;5NqIHmgW_XJvXmq{p^`eY@Qac?dw*t5lPs_il_#(5!RXC-2pPK}& z8?z|pNYG|enR z+BNjz44d9c&4*&$W6sox*ybifiw#=bzE&8$pMS&<#W6ENDAaU_60@uiLqreb#7!FG z%X44~Wul9tI0peHK;j*BLNIvrMC*8(j}3-9MgzOI?m`D#sV?kTxr$mJj{QD5-D?!S zVYjDfI_}D`H21OoZlHa?xJip~6oO{|N*rThy0Q!_FiyDU)~W!}<@_*KGGfFGD^*d6 zIpB=zt~p}guZ!7MV&Jj$_BGPHFY)jWD^~xkfl;@hWwQHuVAyzb&+=jn#pPw%FErr9 zz`u2s-1t%-=f=#kG2GpLAt$@diS&MgwrJo>dP`cfXe@r{r!c&kV$wctrhGv21P*9P z?OzvWLxtO{5*|R>0#nDSnoj;8cCjgf^rDncDcFl?cG=`v=3{gY9!kb+sA1WWfpGB0 zMzx;%G~g4wJUrvT%>Zi%K6(D$*nDV)yu_JJ(D5~ z&7(qfGgB|9CZDtq+OElyMu!i|Wgl=0?M+JBa+Q*{yp5#^EJLM>Xoz8fLXZ;5qb8sP z*mVdwC4lAABIe00KV`oQ!_V`Q>28FBo4<^XgKIR3H@bXia)8sqG@(hb+Z|k%x-$~D>VSsmgSzas%z3LEnBZmT{F$GluhAm2DM#Bk%HA< zKhXiIRgf1}3LVudf3=rthyxmUf3qekH+?@i?3VhcM~q)`Nymq~gq36{rh(i^%{YYH zB1*7gn2PxINToEUv%xHHTLJ1&fz8_;>}XiB1=6voF8?u@0crozj+p{bhkya;J zM1+{-7qTpUF-w#ojU+=@+oxkkdd_OgWJn{(kUTZA&^S{Ji=P%NDMU$e`}3WvrUE|< zoso%deD%wPJ;cL4VDM zdD@L2p$EjndIUb}H$5-#td{f)j01gPn8qP0Q-;kA-FBr9z!)G4SIm?jL7G%3x?q?~ z+IeI)JyC71e^Pdngh8RPZ#0QTx|f*vk1&C8HNhjr&ux5!0ygY+;_mmU1jiKZW6oIJ zdL^A0Y$@J)t2cBjK=oM#IZ?Hr+NK1pP+zh_i68cNd}!*RuCNh73Px?YLU{;W5D&@W z1c7a>(I47P@g!j+72FY*p?$Z*pq0a-tpTii3@)YZk7@I5IS)5br^d_o@ibq&Rh2Zx z^)D|Q@8ikl_|dE8rKdOGf%$9xmMZ)Z$#O!%tOe*;{J{OD=*b$=Kf18Wx?&0;lBDrv zNaHD_@orlMEwdbj5I-hELImSoNeg(n=C~jinDwlB6x~jHtc=PE1I~$(+c%HN8 zuC2ZSs61Wly;<%5nMPc6npvO#T^N0T=z{Vt2u@SRvb$ zUim)vnb;jHwCK}@`k{{ipGuB8J>Ou0F<~Ib-rbp9W^~^OeX*0in4mAlVf%5-+M48S zBV(LWlQZSrycei(ym)Krr1QE5MOJ@aZM&}ieDu(<3~H$v3~k%T-Y`K%YPX5#)^aof zzqS(nndGmSR6X{jSkHP(a}_t#*r>2x{?rA+LHkI2v(A{;PzyXz)z_|hz!m1o(aSG6 z7*tmL%8uefAYc5#RJ`F|qJ@@BCZiA@`_}wQ;^6*HeM0sd4ueGdjU0_IA!@fCXau9l z*f_t#C~RHYut=LP07N_4r1dO_#qeX9tTd$WHQ!9rZ!e86(q#+I4;BD`cO&wfK*Te? zwzBP@ET}}~wN**g*A3Mjw!9d%M2#vN2rqXFi>)jGEEl~cEP8xVvgA{!Nu>%L^BCQu z1l1{aY5fb92^I+6IJfQq87`@e_U@tQhIDCFjHRGe>FyRUdP}aT({Fc}EN99Gt@7)Y zBiuj0Z$pW(v6|G#gOam3*?cn*hOZQOo>7kk@4ZYvF>)U9@nCB@You1bnRDRu9@8I@ z49Rr3^<69l406T!+rEQJG~jbLeC^g;qebJsn7WtRNSzfAu2ncC+Pj*XRxGH+ zomg~}K&`vkpgPn1$6tY*(*Wxl`OwSclW zfn5^Y+scz3Cx%u$a;QzvVQIdR<{e&{A#62nQv+(a=TPWJdurpd;j48^y3_!(It@k# z<2r#M_^e)|o`3i?eOUYDN>$Qg)|ybb68Z^L&w)P0SMiSpao1Gr1Hg+uH`O^w?wtYQ zCn@!uFK@-X9#P@5#}@ZddHnf;#bG}+%SG)QsKf?t^SqP=kkzgRQ)uDOt-Nr_x4T2B zw97Is*e>+B?&Yk~-|Yzyu0}4`F03C+->vu4xU1A@@?Npl zi4`*~t#v28#UHw55br=~%F?7JjN)gQN>Cjn2Th-uuM|{Zv>2Ev&k7y;eCHM^JG-tDLeX^0LuY+3gDEA~(XUE61g&Am{WCCOj0Ao}2q8>^Box{kF>{Rw(c5Hl3v#gc9OgAH*f~(y zS^Y?u%*rDyQ_eff!ncedqUCyFc9@fF%41A3HdXUz*^Xl#z2y@tRsC6DtB!33CK^?h zT-zmQe5<{GdF{7r_|(H}h>t#bgEk{|oUKImIJM;CK>8}1BK6e6ww0%`y*}$tY_B7T z^z}qvPxI7Q?=?$8iH(jFL!A-A{Ie!yfH(l6tf#$1C z=h5fqmhaj6Vyv;}miKKv%SF}J(~0)-5R~8g>}|ud_VCng!_)R~EZ1!5fe~(``<4%& z`P#<)zEOjSxW~&1i`P04-mlPM7>VOtJ#XR&v;geL2S0`sjkp|iNk!R*X<+BA<7@K15j+ozwGx|N5*oSC8+luVrtNk0^K|) zp~n+?Qi4|A-Jpu;s94Y80_eZPPeYIWd5(A@sy849I;kB8mu;ivUg$*lSYvHiqtzKdYG+RLB0H0LgIa(~P2?L_s` zoi6b__r>_# zF@9f+m(+bRdmCQzb6ygK6_XiY*e5UYd3*LEx8;g_AuG}l#JM7Saz(zFEApkRh*mbX zLu4w+?@JnoRYOftYnsDEl1cYf*zy?z*;;NEznhB#x2$nZMpr@PvYpAKrJ{jwWqqAu zM$ms-aSCYIx;)h?Yt~H~3i&)%L-7M1l_O*oM`Mb-BbRZlE@~U!d?jC)C^0Ck^!367 zn`#)3Ay<4O*8BxZiV=97Sd>8sZ&^?lHv->5;)E$k+^iQcy4GdnCh%c7n(B;w?Fm*D z)g?BSp{bKiC2Q%jFEO)@mp=o;PAYqzVLy!JptFo*E#gHY8>6ZJnAX-_j~1o-i(avM zl1VoU-(iWDtVR_JpLegnL!TF^g6R4W;Xw6JamyWcHlsIe1{yaw@wv02hm4ZZw>So9 z$(nxS@as95uNL1GDWJIAa>Ki)eKDNHU992qq?c1*&U*-j%Zcjiy?=aa4n->|CyJ0) z8An*pnARF(Z8FR#P^_qrkC8TxhC>jfQ%LIk5>+$z!*K(XOgH0(SI#t--Fqyr*s($D zVCE#og5+{IpTO^&XtzWRootBQR4d;E33~Wx4Vf6)coP6cVtwNzLY7*Ord+Qk*J$~k zu5H8j{7cc42hqE=p5$nWdG_*({_r{K6Jl|yxuFt$l5b|vo4MV;p0?!cFY`6@*zO#- zciJ#UET3zfTpXJup;o?Kil2p9?xQEbh4F!eua%iUAo2)il zJVoSxfGDn(^AvimH%aMU*k2elj=T+g^a~7Sm@LumX_OBuyVku>O#?V*Fq*5>Pu4}G zdD6W8S-Lct<*X`M-MZ1nGE7cQ#^hhg1IbmI`rcW?X<~S;)`(TSK31_RRPlk%D$db& zyPuE)9yb|ro=4I$SY_PWxNF-3a2@pz^o-)XqfCMJ5L=@1S$rPZBi1aK>$_3DdMBg< z+b4aUb#xFQT&uoT3yLOC722y-s%`Uw-gS>ce1WU6Up>>1o_D0X+w3uW#XskGWS1*S zZb}sAtrc@-t+=oU1V`LLu_8FP01h0co&H`(CBS)uESfXS@bwR8k(BO4y-D%D4??7a zXzIled=2EMpe$CfedGKD8-YyW71T3o#S|Wn!Q&q}g?}VA&x2~F^-ugmJ#bHk$+T97 zGy1Il!-w!EV~#OPGerjmgY-#{ea4gF@uS)&Ezj9C=T)ur#X`$N)aBn`U{4H7;`-_f zu6O}dS=Alvuk{oDw*#|r>Z1Cprz}eaiF+a9EMDUf(vIyNC8FUe&{O>2vGCCZcK1rO zryyPNb7e~CdCxJrM((g;s6G^}>Gjq7E`LFx_KNPzyR}!Aavd(ks{q04-Nf;)!=ufk zSU2EfsUAUH7L-X{E>WsUf6%Y)R4sp1=CxyV8MQ?tzu~2!H{IVWKSvyM2*U!cTw47o|6w-ucTc2l^Go0{Mg9dV?ioM99znH?dk2mkTAfXkXMw@c)=6e%Tnyvjf3LN1us}s(+l2ed z@P)~q^0OMtrRUjN%NsVhrKe~ea&SI~&VvOheU3a~| z^(>01-sFV$IjlXb`EyxpXTP(aLnyGgeLR@UHAjG_L9T@C0 zHTpoV23;V5q+x@WFxQ>!{hnoRSmvSUEcy6e`}mO8M0`zY5vEJ+LfY8yXurfzj5^MK z1XMzirO5s5XUN`*7si8T>wOKgn&A+|?Y zG{0hJ6IpOf`J3W&kOkS<>4qiEba=cWF++0YHwv z_LGtMI-dHlIQ6U>N7lim#m~ivj>#QiKqInB1TT(Ga>xQ!ky0p!G$}Yd;tsz3(>`iu zvucamKN{2ALm}4$X654h-s_)%WTZmN+UM)Mq=bE{9(M4H+gncX1uEA8=i=DBC(zo6 z*coOM@_L>2*9NaTfzzWCIQ0z@6vUUf>t)9L$;}o3tp7fF3csdrT+rtuYJaTX$Q%H1L6ei9SKQ0bRJfBR zxQ_B_E~MaPW>LMb^4tU3Jkz^=1-F`lhX;E6yVHRr{N%zp8SspQ*=|Z(xrfa;-h22H zu{RUr6u19&Ov`$BJzYsC@h%37q)Y4FWZA~1!w9_fzBlp0ZbE&cFd~-K>Bs@{v$`7% zm&d~mL=a;pGDUA_n!y| zWqzWtM#9p3kLX*~nYBXC_AKk!XfUdpY=E?;Qd3TkG-oI*=KN9hT%sk>PtR*|&+GJ@ zghDSuVbR5jj($>M$zmPgJP}^ZLz7qsiOc#aLZeyaUX6xYX$_s`?#A|F%bVe*o$$R) zO%g|&3_rodxskWFB2KAT5BAT-wKDc8*=%?x_$PCzqOVdwn}ZIle44Zj!7^tx1-Ol# z3vT&b45RZx=DPs5&~%h~6Y|1@tkjn%do|r556YnPGbzBt*~)BP#GMlJxudjsWUdQW z#P6hFNH^N_rEUTEqyU?9Vf_Tw?FJ@*7)QSU z*)|v{2kFcLEZ$IVt0oaSPts0=vSk*{SV?}(wtUTM^Xmv88a}6|7n`%Lp&?!8C=a#a zrpM-QGl!~|jX_maZ`{fjbMc3_s9^^RmO>uE>scK`WsGBP*GYzuzeBeK)nzC|nI9-o86bGm+0Y@7OsPV4q*%s;iTzTV_jP6Kn(7V;Wq797u-df?3A^^TAcz{@>0~5IMD=XAPmbYcb6o)OcvU9>GLc zFkj-|CL%d^Jfly^;#%2b7>cV~FSMLm`ZIdXCh=77!*>HU6_~Ll&xzNPP1*BEo#05# z2c!ZNSw0#J^sSXj5&;q|)M1I3)#B+=hwXw&_^KwtXjToqt=~$>Ti-k4=iG7a$)P}x z|0Wg_O$f_nG%-^SX>eZJW64}VQxsb+!?7}Cftq+h#VDh>s{KMZC@@$*E}Z|@(A-BgDq+f zjAt~QmU$S|VxsRQfll2R}HSinj>k%5(9V9RzXq-^$f z;&bfWqk!*Gcr4hwjI+`91@Zm zqB{e8&Id%hyB&uM^##U9o@k)hf($?;Hf=?b#Be6$!<3jtQYYM5l|D@tN2_r(2c%vU zAX0z;I>Yw=UR>2nH!o>KhKiV z`~4`U;P-zGKEXe{{|jrH(E>y?Ddj$W!K^`iZ`^SzrAx ze{x)QP3r@^Fr4g~)@eCT`=TB|%qFzup`1Ol^%B|yGAT*3j6-V|Mw?#MdZt4|(y(&7nq-bIgm#(?m zmKD7`6xAS6z9s67l9s49x!R)ErKAL#=@G&T$O^61OX^RcIq!B<=6Xs;ldh*IDF7Dq zlvMvGXhc+#-0CRlDq=_dS!K(Cm5r?ZEBTrdq>oxtAWjY}t4V7ln2F^*YIeN$CNg}Z zi&a#=yq{4iVyqf-hpz6u?*|+q+NsW^h80-NQk{867dfNHt)GLZ$valYu4YwQ-TZiO zdrkI+@zO63_m8|CuS}-Suwpju)E!T)xAV`)@PEaNv#K-A{r{FT^2>6%YkiJ?px<=idc`b2UZKr);eu~e5hjR0)v8wXRT43Mg(uekUVmwT}Q5TEjx<$Ufu}t)t*uO;7g6o;;8BcOo$2+&_7Xrid6nY zfTlkh)d38gboSliHHhjMEr-Kledw*v?#M4D#!9owGKN{rCk|imR7nJirjno zeDLRt9i~;!Cah9gJ5O`Iwy_}6wNJE730!eWCdp{NNUkaGQuVGL7jwNEm!QJb)>=04 zAKmRX(ebHIyg$Oo4STNXK%lO(c$s8S_kpq#W5<$f+ zDu(!knMB)C>T;D9Yhl;m8IgJvr^w>-FaGxuuzCRtl!utL6cVSq{cG0vOaZ|vCe>De zrWc+&;M%TA^_jjMZH{p8yvJo6m5G#mU>q#{GSHKVwvL8jd;GIH&uKpsPNe)itMwiq zRv-iYg%mq5Pv)Viht=l2=IfxD<|zaSa;Xc~34QCSZ;@&Rp~B4`@>~oGm1deZ`g>Dz z#g?}tcF-qo(B&D`EdVy!Lu;L)V$+TlfTfaZCil$^L>qdua5*t}hz#?ycPS-AeV}IwiS57 zbYpIH`c5ZKSf4mSZi>bY;%r&$A9c zlI=Co?+k1qBC)&HHa{h|dN|&^SSVcC#T32R#YC|ApOto1O4BT{^`BL3n3Vj2cdt+L zrQI~SA#lEJ`n~S?_+F_TC_Ngs7UaT&llbNTZ$G6Ocng(%dhv{Fu zh-_Q1U#rcfl4L`>FAM%@1(;$Vl0|MqIW6Z_=7#Ft;9K%0a)JCToeuK92oQwGEP=7kRm^XZdkl<5hkG9sKf?f# zL8kZ_=wcTj&dR;CdPgA8SDFVNc?1G!V0%>0*#zxC2XBYlv)l#OiKWIj331NgiQPFp zpoO43E#f6;+?48H2*BZIaS=MkKl_A9IQ-k%#mf{5%T`A7!^6U5dRSG-sj*d4P8&?o z$V7)IB=xI~NeKX8Tc4W9S>7GHb}A98Hw`86g#`myr0!l{=xSzm)=33A*iXDb&cN;xqsHp5 z(TtZ^{S1R>@F(~o4jhLrq)yt<@Y-jZo2)P8*6XobkHG9+kF*SUVy5}Pe?7v9SdMzT z%dZ+VSfoz`uU%!+xzzxDoOY2K?bE1+=^9IORrwJc^$U64z>@u` z=(LXCK0S1g%G^n>#+2d?7JJi4FZE$*dO}bTI2$S9BHmwY!%6}X;-W!@ko|ojt;fJO zQT8>PURJ2oSdzZ&Zok^AWrQ2j&?5;u8#oXa6y$uQxkl(gF{VNn+V(~d2eFsetTPO< z#^jt6ao|w{llpD1n0DbYV{;T4*Awz>g_d(|#a;ab^MlOFe6eYBBxGZ$w z!kch~d7ng)1&6Lz$14p#1NBjfx%JT+h1kE&cOhcUK2}RsSANe#xEt~LH7YKpex%5f zi-v>uCG9b2f-DNbd^l$&0pLvaGrRzu(TV!y7cG94*zl1{IB>f^Si$cFf;h(b>`rE) zG^|TYg=W^UX#>BdUd}bEo{G&vb9?TkZcWE%5t`7Z8HE8NLBoAW0kqj5O0SoO6IV#; zx&+!ETT_XQY+AcQeAkyJHdd%2C|E)(SyK*{%o+srL*~LAV)SR_+A0^}U823)D@5gx^XZ zztn7*$b5B=r86u;<jq@=~}XeK*Zvno3or^eM%BiP9r z$0~8&6X!$Xyd|RKDCb;AoQoDUOs+vf6hEjzj;!e3f;#vRmTVkq9?GrHSd~fJD1HV# zx!hdgTO)i!w_jFHx}3_*ukdXye4DciiO8T8OXa>{wGkdwWq4E#;c>3@fXgLuHQgXz zD`br{42&k{?A`JUyz{IyIKRsV5Ec}Tf@SIRl$%qzy?7$Xn6-C!zPoboaKl`_RJs{T zsWdsQwx#I~Nvef~=`a@|-OIXLjG~EOjH;*k&9Z!&KyJH+h%bzNl@V)htG*&PQ5>FO zJzf0J(_|Y{{}w;g!=uFdmgAv@5o@unM<>kXiq_5=5wVC z)=!k>e%9pxcCiB)Lh63ZZpl>WXVx1sIS`x zX$AY%MQ?039;inI;*sbq#3?OY*4;b7>}PWFBl>RA-J+ zh4oFUxLK+7WLar#oqenovX#;6JEe|5F{$%Xa#FwqiV`JtwrY(_yD2frr+lKxr=M3t zKqKe{jmQc#y6GU*K=mf4RDDkd(Tv%vj6Rf5TPumG7&u|iCNX8zqnLAGlDDnMt@-dP ztMmx(&G5TBr2DFg;7K8U)_zC#D8N(NW&Ay45RvHAg3>snUTBRf%|iufe^4RknDhN0 zu|=TU`dVHsPE>N}4Pm3?isFx&{$id!YE_L^#9X;Uo&le^TTjVa6rnUC-OVJ%4~34@ z2QQ*HXe#9$iitNf218xQeS+etbLUk|+A77Y_W9h$CLg!tKhh&1N`X6wAg{E?Xcq}+ zf9UG0(cMen*`0lwR<${JrgKeBErn+)_i=V9JQ$A%Y$#V1R$_8IBaSN0XQ4lcC#|Ez z^Ty){*IHRXZN`FS<_>|e^&}J5wX)ik3}SFfQUIWE*$p8l_?_Z+C%@DDPFe;IDq&?A ziS($S{nKZ0UKKfT;lDnDU2?&e1RQ!2HD*o4^UCe{2jC`ig-Sy?-DFxF-{km?x_*S`i-#98B-Zu-tadu62>t~4P)&!NCy}sY8;Q`W;BG$UU64};PoN6 z2{9jTBTbjVQw$Ra9H6zhh^i&jl&8#*0^%Jm-KCD@fu=8@x#qN|}JJ@nk)nIB@XJOF^7WXJK;yIBJ zB|0r2eeE>(1j>#cyc#0HX+x9DKs#s3^16|MXqRYtD$lL=n!FpH^abC}BnRJY5(vIO zx4bi2pLNwF2uy-G;oCw;iq$&ppyLjF*}38ub@wFX(%Fq6xqUOJ6lw4{zYM1*T!z!@ zm*HI4$8R5DYWrdQe$Hc{wG7Gtqsmb=G$HR~h}e*5eSyYF*p-PtK^L63uRqGSPyJ-v zBvFrK(2_>TXb=;&XMi46iGV;G#yU)#=)lfNAfPL= zA`N$v{dCM@D~(1#tB-2+fnAky(;wK1qu}UO7L}ziGz+$24YKXvZlPS=b0yO*6Z>WS zRCoNU{;glCB#s@D0iswmwVL9k-5g&4g6K3YWc=m`Nnh0lf}{7$QBT;;QdOn;GNdO!VI|~4xYZ;Z5sfp~&23tM1s3ukogX|TCCXFhIe zSgy3U@TcE<h?8bSXe0QUvMt%c6u<=aG+OZq!-_Cxw4Y?#H}TaNFB+fr zjWAX2WU8ECsvKvrHo`n<^P$a?S2MCnm~fLX90OsQ&Vp~^YxK2N9%pZ$--5HB4-{Ls zYRyJ9`Lq~6u|JgHBf;D~xamlIVbhg?LBJ|3?_uY6K_Y_GO-GvrCbau?QfXr%iMeBn zH_X8f9b)d?n{#6Bt-P3+tJKSr8alsz0E%0*budR5m`A-nyo5exS|1(0zcARtMAEv- z8bhDe{NOuN4}3@6C2d)HZ7)A48>YU7?l5(>kMwEH=Ix&ag`O>J6df>Mwl(eNanVh6 zu4|g1j?C#pM~`m}gd>;~TK~xqX75Hf;@HFl!s?@$=3ch;I{>`L20LR?8h`~F*@C7o z=p^|LGC&%dkLDN&i|yw={KkXvqke0JdWGRfuDx-5FNQckt#bteH8KH~7g`@>dXQ{1 z{a}&$SPhMrzY)A_TJLa`#QNks?je&OcRoAYQbP7|zv`*0G47A%)e?m$dr)Mvhpb8aF3ji^Z=eK(8%ly?_z zJ&uiLwh-6;AAAVj@^7B}Z)}5g-K~I$owP09Iu~n>4G*nqKUEiyKg5LckZy4N;QLwc zaUUI_f1q6Tjl8ix4gCu3D^(blp!-EDIRt5LQpdpva*iTbq0PnjTpgsAFtb5vUR=nk zk9zEV!HX@>XUERcNwImZ5W-IsP!{B-1-n^$rur<7mhF~0*b94C@rGN?(82eCRd{JS zMg5HTgyIV~Ldue$a80UYmt#7(grYgfDZ2d=5jnEAP~-GfFCi<(wD&f98A(Xl>R#w6C8Y51&>^vo zuU!;}t|{PFx)8EjKM@%@V`0iwGIv4bsl2w{d5op?ODP&Wj<0=siURjl`s%lbnd%?n zlH2WNQ5ZJ6OzpEMXSFdEH^G2HgS8qZf1U~~6~fQ6E@0Suobr%aEu$X z4v+59zlAM79oj(C-dnRTmA9}nHO_*oh`x)V_8w5h;ehr z0EH`cyKI5X(mI!{TAu$c&9i=2VD$n@uP2WyReEaOix+ML%x2o-yaDX|M+YdqboGKB zZgR8YTBlP+#I(87))_{>@Y)DpeeOn`3}o(!PX)w^R&O?hSyYg2y=M?8zrAVl@uwyE zWBrjk7MUu$L8N1w8|C@ zx5qoYCF+r)Rgb`H|DG`dRrW3(V*+U!m0CIy{sA7PceGJLH5i8nEwwwQqA;vZsYk`s z-o1;fQtGOh+QY^|N?jdOSM6QwPN{TRg*}LISFDddx}|-7ZHN3ZSb9^hy2v!xOyt$ANZh{e>zsyrL)ZXK7g!7gv3Jeewo4OkxD*uIu8yCM&isK~E| zIAhv);ArE4N#lV@=KftEHgqy?kf4s-mYtRcvzvvLBITyJ?jB%f=3>r#^0k zvGFLf_2$X;k(O2p5JjVBJdkZ9HL!|>vjtnXOV7t6;m$L{>EAOJjBtKG)QAyIx^`D> zhrW(JP&8tUix?x_qo3YPV%O*%{S<~ioi)Ryc8E3^nAFBJTa$P2Z1p`BsviN>kASKP z#aj)Tgle7%ZPC-ZAz>RVzT!n&(q_O^$KDEjx?I!qRA-vsmltEr?qgwej#~OEezh*@ z8vV5LgO+|Usic~Y)IFcxn;@*U zS^<_2E2xwNHbH;wmXh##-Z4X(-1K$HLhL_qgA?&mxu_)F?;m1?)Np#pXWLCy7gNuR zP>qR-ZC2$!&FZR^R>36f6j;rQXc_CpWUK~_ETfHSdUV2|8WV-^Kv&96PZ7FORy=Ve zpNItV)NxO>I;zGusm;9&$%v_vNURMmsfu1Tig*C|KaUkOJ3@n^Lam^3@@B5c0XeXq zqrnVi-){R7Y`}k8LoQ#X6XV**@W)nXzJwYU1DOULIoR4vHzJA7MzrGgJAjq~mIC35 z+yBxNi~#0e621ilg&qF|1dSjWf=_n@1DU+e4g|FY7CJLxXSn6CE6+#NW>|%GX4lxC z_mzPLleNQ~-d>*z%q^IwQl;8-vxTa`EIlCqHccf)s_bH*sH&Px>l{jRUyypn)UukB z^Bk%vZr~r+7O3Ph(fb?}0g}a268Hk$er&D|ohNI;m?R)yy-J%L@?Y2Ub##yN6b6r7 za_iPDu2@^WYa;_%J!>QHq`n<|t{^ZbV{|+tg0mL-gtphF?(k7u9Qzhzilt0Y+v>+_ zv8%;Q!&arJ-^bJplX!5`8#DWY6-bl4L)0VPcnYlapSj2Wmo4=Ih|KZqdIqNcJJ*!0 zps9?GhV)C8ef1rZWts+pw(xUD=QaZxWCvA%;dW=1`=won}+udDSE*ApC|Rp%P` zLwNH97|yl1qPV@NY%^o)093plzsqi6YLu2Iw>$EC8{Jh?w`#6*t%PHc;CTcOqS|^g zc1P3JR>JF+dxem}k#Jhwdb8>G^rBreXtN-+kdq3R5!wuw0W3?xUuP%;Wqx;n=uFS8 zDK${QL{UIxr|-t-V?UH25O23jHPOWfA?j2p$nyPmU!U)GxzkIgHn;kE>W1Bbi1Epk zyFd7%pS}g z&+z7g-BElXyJMWKYC8l=#=-EE;p(PK$!m=hZb*Dxr9L*vtL$8R=47GUVXrlxhY>1# zOs2ZpeVFQu6LY_91?xetwqe-70BT<;h4U zBVg9QvC~;=mYcSHCKn$6ZmPBn4qA!kdL37LSz~ru5e-O{w9$w>FHd@p_W*8i#vsWz z>9Itb^4Mgy5u3?yE@@g&-nBLwNphcSOme;gJ7k0|KaJ%WqeE}vthax4+sFtb=hoY!<$lO>Kjrb|Uhv#ceSEp4Q%^}^oM}K+$C?7hHCJk= zj$zBScj>_q*+!NY;^*v z`+cJirXCq4gmV`bG3nd{?}7)Wi$Y)Oo`(=Q+~eU=i#Du;co2` z9Fjd!cViqf*Y#N#feaH~L~eW&lU7=ufD^m?k!9b+Zhu_hQCgF=lXw0e&g?K zxNxK(3VO24Pz|6whIdAQ#eKs^4_*c^QvkD@%_C+ZZaZ1xlQUDcc(vio4?yDiG7Lyl zPslIln{Pg%r^*_~)BJKyj?eWC_gJ5qZ_e=4VRl;%0mJUh9|yqYkFzWD#{mtc;2Cl( z7kW|C}}9%~T-w6_LkExe;w+G@ig)M(su8;K2H|(viHoZoDi5S;K>2!4`=*v90HI!3Yes z<$2^Ub!}M7CC#bLGPsBz-kdxlkJbb0B!Efxjr{d2(j$3{$%mk!n69IXhq36}OQ|Q_ zo)GZlxNvo7KRksL4W7r_Cp93oFhlVeZHNPk+dmM~OqF5x<8vdwkA5Oh%o5^s3k}(_%5NaHqF7 zv}*M7LtMH-n1<9>>*y=Q-Vo#hY+wMP&?$f;r~t4$mlMc?I>cw*AQBYzabnt^7X0+V zTy0`sN;pe7mWb}b%SfbpWN+>LJC(IsS;ym~KhihvH`!aQlz24RTdh=(vJz(O&kp43 z^jebqec%z~Z(D9pFvv96%`~5Pr%eqUVjG|lfJswCGt3S9_u1T#AAg;6NrKr(WR*B! z7HW3hqUnh9CUkkTpU@x;3p;VGDg9T_S{mp5&|ee=6qEdmPV@!K?*K1^N#G~`CY6g5 zO0FDU&`jaJ@MuUPn&8pTVy*OIH$B*<9UpBSLGoGo5_XOU{;^*^uJbZ$rK_q;3^Czn zu}q-yh2JCa%yeb-taX8<*$H=~-stRg?~yrS zNE@MN)LH6Lfk_zg(i(?Tk3X4%bMGC3^MLtBXc7?jSrNDrI#|=61{XG0J6Z=x6a|Ya z5_rO#SS6BlBGZT?_x|eNH-Ga>@U`{`2T$WGWU%E3zXe1!zL>S@Wv9Qi0{1)|j#0Q|HkveXApN7t+?ab$9JTh&Vo{p08cFp2vBAEb-W|$JbQQ zqMG)I-`nUX<7={&w+TCmZQpH_l0WU_|Iwj*rpb$g}f%9)Fp zu|w;qg8r1U*Bc(`Vx!%hlMpecFSKQ+z9`nwMHEC_+EG64f*1XDRs*`*ls}Y?OW)-v z=C08>V%Cp&REvCsoX2sV6-WQeRNpa6o|DX0fAt?(4nVsG0+; zC-7Aw9Y$j$*dfhh%qg+W*pLu_KA@s%wb-;(Mg}o2phit-`E>ypK*ot|wI$b^6!(T6-d1e=Jh2DjiW}26P ziuEqpBs-V)Zj?e%8?fFLo71kddBW@UDb*QQV5||h>3p}pSpOi_3?`j*HJRp&S`YJ% z%e3PViROr}DIqV(J9y4~>{qvbO+BcQr@d5B)umvc{W|MwaP)?EXp@tY4F2Uvte9a3Y}&8J40O|Okk zzqIpHEYY|8Qy=Yght}Q@TQhUmvexpcxz;+8vz9uN`@#^~c2FKl@{W-N`t0d4A5?er z>4h5_`}vK05=HW;WmTw@7rCKXC8Itmy7T3kZuD}FlJafbMKe%KJzU)WA908lw?C-I z`szRXKJwxm4hpVr>F^~*C{|kUy>qAKF>~Z?>v&EMp8LPROj$Rx$87_2Vfyfe>;uit z8X>E0&!lGh%1zFd`i_dh4`lVTpC=d?MQ=2>zF<*k#XFmoPXhrzARaAhgi%V^rFNh8 zMN>%~_Ilkdri|&%0XuY>3PH8n4kLNU=;G)bSZ@$VBYQ;t!q6|J249A~Qca86@*x{r zXD=ZQ_OrzGO04hjZ#l@W--G|NY$V<7U*)?)20E^>%=~+P20E7^u;3te&OiYuli46O z)BMhD!gtJ>z$R5|L)Ww?(N4D8$;O~>C)x6~B{JMbEJv1%D$Y(W^?kGo82(DSnZ;tX z`-`NdoeeUv$?W0CJmYpq5IiSSJ0&R_tm~NDW);B0M2+BiE_}nBYbTZxd~c*dL`*aw zSo?M;7&dwMVl7%{nm_Yv#u4-*P^UF!w0L+_nAsXF`n`aluYfb`Zgt4N{?0k9yN&Ob zs1PrmfehHJq$E0W=X}ACYfw#g^+O)H9|5x$1iX#>M`(x~}zg{(-KVioMfHy=N38FtkRO*5Rom3-(xoR2sy?3y*LQdXQ@E zO-d*Xy*p&xt*q+Nz(gd|1yn?781R(*yLzX7_6Y--AtN$`m5q9U)ADl*gLUD$iJC}*7n`yke?NU$YHBzq?mW0uhZ zge5{$`C_4;b2vvD8awcC6l3;o^7+H_Hmr1(Qz*@h=w1KiiSWZizMp_95r`#_+i3Mg zx`yum1<0d%4Y?bNLu6DBtEN{k;hSgY0AJV1Hx*G(Gl@vf;LtKCr)Do<(^76~iy|$G zE;%h)@6RSbr*A^?01ATDhRcLUHPqZa^wLgHOyiF(i;&c09?JXt+YqdQo1lSnmyx4`n^-A4CO38T#nLhS zp-kl)TEawHA(+iveX(u@Cd#w#kKPrlbC4|Q3Z3^!kn}#$uCVx&|M$D%N2g31Kg2lD ze=L;w@Z$fwne@T`%m}cANlh`1qqOfam^3eAA9Yk*|3A`THWks>GF#I5k_I}Pa)8UM z&7R^jp3bZ>U~_OM%B%yxhRJ|^&c4tJM{t= zN9=){%w1pGfZo1we#yFRsaU%V0+}@X@ryMRi`=rhe{aKswj&O8<>GYZ*kBpRYycw% zwkGR@4xXV!rhTEy@{>g_PNXw}Y@DW5|Dgo0?WHPOC)=4%=ZCF9O=)b}DmGiM2VAs1 zTcSB5D$5ITz4Vl_ua}Ox7-Cf=`uR)iB_ygT*B5bj=|vWGa>H~IZNu{yacBKS)m5i& zsLt8m>i@_Z>OVdWBm@r!N7hg=rUii#^E}0Cbz!{xP)O@sk7UMCnKNz@v3$Y`tBgxQ z@PB@l@wJyfA?^B7^@au$zgd*YfwZua^*wL`-7lihyIHV{??&uc^FA!=Lh8FSQs0%Q zPzbHxP*mp9insMCuWU|^*AR$3P}w&9ev3KQJjP+mKh5&V25^_?DsB-+!SN%Ls*uq} z*plpBR`4ZRWU3Ue#gHGktcGP)4EZ6DrHl81GX|>_wa^eaidsw|H&ekCPMjdDE_L__ zw7@FBfUuR`b4UhcsmmL5g@$R&x_OWZtbJ-eQFq49eqI2WP2rO(ZdgWLz5|epIsj4Z zBe1~+ydogIl4eWv_7oT;X)x8{gT%{XUxe*ORTumtopbQhdubr^LS=Pf1c(W?PP2=A z$pSjk6>;NprupSRPqy{qM-(CwznGSs`ID$1IHN@P5RbTXqxn;(3sc`O~ud4;mPM(0#N#tL6qCm)i9rBSu%~` zYYKp7ohszDN29@7cg>d^j^C|PHdCGGHL zmm0)v+A4(w%t?Dncz78z-~Pmr^1paV&b^+Kx?shQHb1p; z9pYMBguU%gX@ddW9S88X;f2G8pHt{0Ng5eK2dnkKW%etVh{*qZ5jqfN3IB(b_|f`4 z@xMNj5!)b?Ok45uLe_lxOuO-OL}ef$X}OMoWvYS30-7m%gd>M% z%1(nz5Y3I$UPkI7BXxmH{6R41i&uY2d~pYE!7r8YxR-QkeA0)LG`*U#yC^%!DBsCs zK0$_ES%>P8wmZja_-??33{WGEbf|1K^g2s~%vlZ7+4od~lRMThYdMUeRGNyi(!2dz zD#^!O+f#gf0)t+%VmiqRJ-MuyO|n8y%Vh<{cBf)`@?uk|n4XpuBf#(>biezUxlLr0 z6`8U)cGz~WOw{fU9rza?H{mhi!e+t=N-u$Qd8fb8Z@sO36t$?u=fVM^9zw(CcfU-YNFD6MH`%(X@nB6EcCxU7lRc?JiPbNlZbat{>-1<^d&=K@6EVE>4u$3*F0 zrPp*8o%Et$ECHE^;e9JrI%#6f$gm$9B}IfwYiES)6-%mrSx5DGQapd9>eUVHS1qaI zzyHXv3n1p}_>O;Za&`cJmwyQqNraY6HsGs&qES54Jl*evXhO`y2`STCL#D%8S4z#^ zhR(S48HKG+;i+Ly9rGhw96K_VY8^tr*1$+*9Y%1GtEdk972V{aaBrCftXM3*Zxs_%N%x2}rvT{JIa`Mo$iy16bMVk1gv@E-YZ&S6>$sYD? zN{8X+317ge1Hz46BX^f6oLCuDpA<7+WpScN@p~m;x>ApPT=zb(iii^$harg*M@*CEQs=-a7A2wk7lejxEnm21cYvZ-I0}k1j|&1) znK~Z~sg1VTTR4L;UjBQ^HHx>YqNW{Z=4IpG+bL#Zh>Tv<=+YN+Q2kqPVmVEq&@7dW z&U!2W8dRQnMXs6dBwk4J+&y;ie`=<5vU%M?#XIr+NamfASeyB6uKNEF_cm~H7FE9g zOi0)Pqdh9JQQ0LbXtKU+Rt1BRwRvf`RkDsR(d_zigJ8_=vYHz*Bq{?FCN0x6ts^q- zte3lY*30Uw@?WBVUPcA%V9bmxi-VWNQBXz~wVRGQBI2k({@>p@RnPNu&rAs3z5mOH zOg~T6sZ*y;ojP^u)Tw%=1`D^xRVsKnt+ax(xm;5r(X{zwx}u90sBQ0zdRKa{tv?&@ zG)0NTsHu#VtUlatwy)vaGUJr%{rWRJR9C6bd}I%_Ui zopR#A%{OG{_Q9SNkdl}wNjJKLLt9+aM4-1EA%f9;=coH9xsvp&a#OMV-{SJ(tx(QNYJ!&e?NeJq z`{Lu0OjC73^+HY6@q5j&jJrX`T|Z$#c2=)!H{o&cUZ?+Y(MWrTd8N5@fOpk4!fihG zt-o~!cHxf+5fQv!ebfTMUASK-K?g56R~o?ht_%lfC+g4mq~=U)~CSL9-- zUp=6|d*@yq>{Yv#e0Zzss8o&6s??~34F2rzHJj7QTlqW5xyZXg{gj^p$~2Av6tilU z@ynlvjB#|VdbeLg-UN>~Gs{R}d|DDBwLutAZJ0(vW=26cOgKJKI3NbumqO)Lkw3*a zp=H21-_Zwj!UiX@IEv=4=5y&`6fLCH`H^}Jy^S$iV& zymD)r3=yNA#|@OjO0?H8jN^xdq?C!*%;G79oKtUKq* zJ=!Ln(=bI!X7#L?59HRkcQd!$~&4He04O%L9JMl06PBKh#N|!*oGax6YATqi{WId_8 zo|4OBq@yl!6GmV0U^0>b}50c$-F%a*#+d2;)PXQb!zvqVr+5(rj8-Q6=Yfj^?oWK zJ6=^ozGjwM@+~LqPer#*H|4$+HG%l%w-cM82U!}YrIOuo-I!tD-r^~!VFFWwv4%VV z^g6m>!=BuYZ(35!edU{Ox$*U_2Sc#^SejDZ7PMuIsOo@)RDwXI@6#i^bvE*lLj z(FcVRUW;;Odu_9Zlc)X87`P`^F^~hIzj8$N6w%va%7m2xJw%!pH0q|CuYj3hV>PKV zPnDB8(C8Xsi~5auPsJ;ReLA;<@4nN-(F}6yo-jeq2*RxezB|jM4}7oIj}oDHOfB+D zlC7ZsOaoA@;PZs~6k)F&5*jx;S6da{M2bj;@r|18&&lDfylW@H+-fu7<21)IlW<8V zkTY)NrTxE&CYk0aZ@4C1Yp~pW3x1&9S5RaeWP6Yr9`_WhLn6mgIc~y*&3bg2rNBAglb$+vD5XhySh&^DPp|6>Z_y{2RPkyJ2kdScp4szS|@rCX** zXfCw}k9&5im-MazA+jE{hE4Fino~zqt?+86n=29+-7DkpE4)+89D>pGsBBHMg{J)# zCa)(c9P=!>bWEoq0Uq9V6QtrJH-8IOy z(2Fp1#3@W=^2+%VHvB99}4pL=Z0L% zl>nFzB1wuC5;1j!iySG1X*2k>KH)hlBDepuR!_%#A7XX0E>l~T z)twK&+bY(;F_K5WX!G-GY`@!r6>*a&^zR^y8>&G=_4OH0jc^jf7oI46Rns5VVxNn- zwjQ-B%wtPJ`}(PEFr_lIkCd>Ig*r)TK<^81t-~zQu*Qq&TbVF%z?firpvxL-=m{#K zGDo!9h|FR(A`GA9J$?n7GZh>;)VM>l+rZ651`@LB-kXK{+$nIDzs;0kXlg5GT3a0R zoIieN(83MBgRfm^u$~G*jkPxCYJnRNNU9^QsCHjEXg#~f#DNf`V%0A?a}uvBODcvp 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

cY{@bZ4_?U9Tv5T% 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

8BKvc<=I&+W;NSZixf=%GnV`J_2=z&;VjU>F- zNSKKFVM~2^Xbj4y9k$&aw}JX(=4QQef!+~%ibapd^XBCe)1W1t-R$kPUFEcZsm6CO z9FoG|v^^S}v?JSQ{^j-5$Ub?3J$z0MY*ID(FU+`h9xW31`2y_a4UW|-XA1& zHjEdd%P_D+jS7t4UT0M{+nM?FkaDr|1Ly#}VF{XD^mKO*Ms71Un9)x$04~W*$ebAY z7$w)PKtU9(*lOD_39@VArr&iL6HQh@-{-2JRZ@FhjpDIT zeK0AjFiqQ>Kj4x&VvIr?zN+x34(5Z`gly&>YkwHBODGU$)21I$mo>~0V?iVuqcv4B zM0`$_DJ~2bj06U{v8LXBN8-d^k{j#2E*)W98;iW;xlz)@(oWc3tzSf_s!l_;&F3b8 zy<2p_Cn>TqM!ic_r7SRo+lcZ;!NI-l9zye3%O$c_%|j?ex3fQ5v=%L{{U|KU9Sh#O z+O^JkBtlI*!ON%SG&cHx-4w1+X|&%2Sk#llMw)4mZ)~kC(_+v;#lvFkjVivKvJEuY_p(6%fPdZQilZ&0S&* zkl9so_3SLRUQ%51(FI)Y=|V_-vaTugb{SuVz7G}FVnMALp3L0_&zq>8>1A3^op{C; zGPpsuf7tE^y^Vg@RJ#&Z2+$pY4&OSWYdu*_vK(?><4@8+%cxS8$>dp=de&(vxew_D z5s&_<8vqiTw&L0kB}2j#h^E-XqSq^=IVfyXm!=0c-l^3w8ahobZ2T+r-$oq9Q$uHc zfv)S;X}H1_WWLRM>W;|fSbGR}3Wq#Y{o4KXU)xG0pTBC>rMD`i!kedMcsDoIKH*&) z%0%l?eDfyGg3$XL6J%69aJC?=-@_J|hArcYHCufmskNRC6ubJ4QyBED@WK|QBdyLym^_c6Uw1l)fjdK_veZfum>GRR(8#1QnP#amtxpN7-Vz?DclYn&Vy zkczOCEL$V#S#1s%7P`&6lAp7`y5R2Fd0A}<@+l%2j;tdmg(VlP1~V-7E6k<*3el2F z?DgIRspF73R#+0wrx^{Mq4y)Q&hO{B z3(do?S0N>PDkB0Yd`!MQn3x-v@oivNEd+bBf#D})dD38B7}3j%Cp(Zi+-x}Av~jOC zV+!UWEmR0A4_(^cyr{&NeKa8nL;w4(`A1<^mgb#>Kjd$!Uqfc(C|>O_2jrZs0o=A_ z6~ER4$MrVQ&I87;!qxdDWHPp=Ru&A_4J4l1nOtV_v(@yb}ft-o6aAAF9_G}A1vh01%DU#<5B~E9sy6p zP+L@N8}+L*QZ(yQC_j)}E%nBm&|F9=2QeAk9c zau4=BgZb^EEUllW2_LDnz~+fWU^2UY4-VDBvv*~h+#cb6ZcV2EMFTeWS^Mp6jnc)h zc(Z#+pY=Jsq_V*pQoFA8)Fx6RCX0g-NH$Ox*GSioxz7CH5zW=S7sEvD;fa{|e$NwW zlFXfG68Dsa>91X9!K&r7p|ct2HQyJyirrc9JS_Ey1;^4o$<2IGhD_FFaxBzMQDmaR zQraqW)3xxb-WEirOmhW2zw_v*sBWCV7VO56P%RJ-NEz5~tK1cYGy)ByCffL}Sc=UB z%0A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 z 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̯RGct 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%0A;;*e`mbJ>1P9{yH26k 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/Pillow.libs/libjpeg-ba7bf5af.so.9.4.0 b/venv/lib/python3.9/site-packages/Pillow.libs/libjpeg-ba7bf5af.so.9.4.0 new file mode 100755 index 0000000000000000000000000000000000000000..ad26c11faf9de51041c197da8805eb2330fa5807 GIT binary patch literal 250504 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/Pillow.libs/liblcms2-a76503ec.so.2.0.12 b/venv/lib/python3.9/site-packages/Pillow.libs/liblcms2-a76503ec.so.2.0.12 new file mode 100755 index 0000000000000000000000000000000000000000..d6c4f4fe7ca9ba6dedfbb385631524d0c0825f52 GIT binary patch literal 465560 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 z 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Íq1NfHU8R7jORED3}8R&?xYp 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 AzyJUM literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/Pillow.libs/libopenjp2-f0612b30.so.2.4.0 b/venv/lib/python3.9/site-packages/Pillow.libs/libopenjp2-f0612b30.so.2.4.0 new file mode 100755 index 0000000000000000000000000000000000000000..e9402aff81a8b38e86b5f36c6426a397f290b4e6 GIT binary patch literal 532880 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 Pddut&Sl|1MF97_1erQZv literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/Pillow.libs/libpng16-bedcb7ea.so.16.37.0 b/venv/lib/python3.9/site-packages/Pillow.libs/libpng16-bedcb7ea.so.16.37.0 new file mode 100755 index 0000000000000000000000000000000000000000..0cc2caa909961086545eec367dacc9942fe9233b GIT binary patch literal 283920 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/Pillow.libs/libtiff-d147fec3.so.5.6.0 b/venv/lib/python3.9/site-packages/Pillow.libs/libtiff-d147fec3.so.5.6.0 new file mode 100755 index 0000000000000000000000000000000000000000..149d5ec1d0ec6b152d24be11e115542a6028d328 GIT binary patch literal 690040 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 DhnvgR literal 0 HcmV?d00001 diff --git a/venv/lib/python3.9/site-packages/Pillow.libs/libwebp-305e7d94.so.7.1.1 b/venv/lib/python3.9/site-packages/Pillow.libs/libwebp-305e7d94.so.7.1.1 new file mode 100755 index 0000000000000000000000000000000000000000..1dd5cceab336181102b2d525c27fb0849b6c1569 GIT binary patch literal 592616 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