From c3f5d2a91699a24dcd6b2fe90bd278f642da19dd Mon Sep 17 00:00:00 2001 From: Alexander Piskun <13381981+bigcat88@users.noreply.github.com> Date: Tue, 21 Feb 2023 22:21:56 +0300 Subject: [PATCH] v0.10.0 (#81) --- .github/transform_to-pi_heif.py | 7 +- .github/workflows/analysis-coverage.yml | 8 +- .github/workflows/build-cache-deps.yml | 148 +- .github/workflows/test-src-build-linux.yml | 29 +- .github/workflows/test-src-build-macos.yml | 10 +- .github/workflows/test-src-build-windows.yml | 8 +- .github/workflows/test-wheels-pi_heif.yml | 17 +- .github/workflows/test-wheels.yml | 12 +- .github/workflows/wheels-pi_heif.yml | 67 +- .github/workflows/wheels-pillow_heif.yml | 134 +- .pre-commit-config.yaml | 2 +- .readthedocs.yml | 6 +- CHANGELOG.md | 1 + LICENSES_bundled.txt | 4 +- MANIFEST.in | 1 - README.md | 82 +- ci/cirrus_general_ci.yml | 8 +- docker/from_src/Alpine_3_17.Dockerfile | 3 +- ...ile => manylinux_armv7l_wheels.Dockerfile} | 24 +- ...ile => musllinux_armv7l_wheels.Dockerfile} | 25 +- docker/test_wheels.Dockerfile | 2 +- docs/heif-file.rst | 39 +- docs/image-modes.rst | 61 +- docs/index.rst | 4 +- docs/installation.rst | 28 +- docs/pillow-plugin.rst | 5 +- docs/reference/API.rst | 7 +- docs/reference/HeifImage.rst | 41 +- docs/reference/HeifImagePlugin.rst | 2 +- docs/reference/constants.rst | 8 +- docs/reference/exceptions.rst | 15 - docs/reference/index.rst | 3 - docs/reference/internal.rst | 25 - docs/reference/thumbnails.rst | 12 - docs/saving-images.rst | 8 +- docs/thumbnails.rst | 64 - docs/workaround-orientation.rst | 17 +- libheif/build.py | 82 -- libheif/{public_api.h => heif.h} | 633 ++++++++- libheif/linux_build_libs.py | 19 +- pi-heif/LICENSES_bundled.txt | 4 +- pi-heif/README.md | 11 +- pi-heif/setup.cfg | 1 - pillow_heif/__init__.py | 10 +- pillow_heif/_lib_info.py | 52 +- pillow_heif/_libheif_ctx.py | 99 -- pillow_heif/_pillow_heif.c | 1238 +++++++++++++++++ pillow_heif/_version.py | 4 +- pillow_heif/as_plugin.py | 124 +- pillow_heif/constants.py | 172 ++- pillow_heif/error.py | 45 - pillow_heif/heif.py | 873 ++++-------- pillow_heif/helpers.c | 489 ------- pillow_heif/helpers.h | 51 - pillow_heif/misc.py | 254 +++- pillow_heif/private.py | 271 ---- pillow_heif/thumbnails.py | 90 -- pyproject.toml | 11 +- setup.cfg | 1 - setup.py | 141 +- tests/basic_test.py | 37 +- tests/dataset.py | 4 +- tests/helpers.py | 41 +- tests/images/heif/LA_8__128x128.avif | Bin 0 -> 6075 bytes tests/images/heif/LA_8__128x128.heif | Bin 0 -> 11781 bytes tests/images/heif/LA_8__29x100.avif | Bin 0 -> 1634 bytes tests/images/heif/LA_8__29x100.heif | Bin 0 -> 4287 bytes tests/images/heif/L_10.avif | Bin 436 -> 0 bytes tests/images/heif/L_10__128x128.avif | Bin 0 -> 467 bytes tests/images/heif/L_10__128x128.heif | Bin 0 -> 1708 bytes tests/images/heif/L_10__29x100.avif | Bin 0 -> 438 bytes .../heif/{L_10.heif => L_10__29x100.heif} | Bin 1071 -> 1067 bytes tests/images/heif/L_12.avif | Bin 490 -> 0 bytes tests/images/heif/L_12__128x128.avif | Bin 0 -> 536 bytes tests/images/heif/L_12__128x128.heif | Bin 0 -> 1157 bytes tests/images/heif/L_12__29x100.avif | Bin 0 -> 491 bytes .../heif/{L_12.heif => L_12__29x100.heif} | Bin 1193 -> 1189 bytes tests/images/heif/L_8__128x128.avif | Bin 0 -> 388 bytes tests/images/heif/L_8__128x128.heif | Bin 0 -> 2922 bytes tests/images/heif/L_8__29x100.avif | Bin 0 -> 381 bytes tests/images/heif/L_8__29x100.heif | Bin 0 -> 2753 bytes tests/images/heif/RGBA_10.avif | Bin 5867 -> 0 bytes tests/images/heif/RGBA_10.heif | Bin 7371 -> 0 bytes tests/images/heif/RGBA_10__128x128.avif | Bin 0 -> 10170 bytes tests/images/heif/RGBA_10__128x128.heif | Bin 0 -> 14085 bytes tests/images/heif/RGBA_10__29x100.avif | Bin 0 -> 3136 bytes tests/images/heif/RGBA_10__29x100.heif | Bin 0 -> 5049 bytes tests/images/heif/RGBA_12.avif | Bin 8355 -> 0 bytes tests/images/heif/RGBA_12.heif | Bin 10246 -> 0 bytes tests/images/heif/RGBA_12__128x128.avif | Bin 0 -> 15880 bytes tests/images/heif/RGBA_12__128x128.heif | Bin 0 -> 22821 bytes tests/images/heif/RGBA_12__29x100.avif | Bin 0 -> 4300 bytes tests/images/heif/RGBA_12__29x100.heif | Bin 0 -> 7253 bytes tests/images/heif/RGBA_8__128x128.avif | Bin 0 -> 7675 bytes tests/images/heif/RGBA_8__128x128.heif | Bin 0 -> 16015 bytes tests/images/heif/RGBA_8__29x100.avif | Bin 0 -> 2026 bytes tests/images/heif/RGBA_8__29x100.heif | Bin 0 -> 5934 bytes tests/images/heif/RGB_10.avif | Bin 204222 -> 0 bytes tests/images/heif/RGB_10.heif | Bin 123409 -> 0 bytes tests/images/heif/RGB_10__128x128.avif | Bin 0 -> 8234 bytes tests/images/heif/RGB_10__128x128.heif | Bin 0 -> 11637 bytes tests/images/heif/RGB_10__29x100.avif | Bin 0 -> 2494 bytes tests/images/heif/RGB_10__29x100.heif | Bin 0 -> 3939 bytes tests/images/heif/RGB_12.avif | Bin 288926 -> 0 bytes tests/images/heif/RGB_12.heif | Bin 208858 -> 0 bytes tests/images/heif/RGB_12__128x128.avif | Bin 0 -> 11184 bytes tests/images/heif/RGB_12__128x128.heif | Bin 0 -> 18468 bytes tests/images/heif/RGB_12__29x100.avif | Bin 0 -> 3253 bytes tests/images/heif/RGB_12__29x100.heif | Bin 0 -> 5575 bytes tests/images/heif/RGB_8__128x128.avif | Bin 0 -> 5972 bytes tests/images/heif/RGB_8__128x128.heif | Bin 0 -> 6647 bytes tests/images/heif/RGB_8__29x100.avif | Bin 0 -> 1487 bytes tests/images/heif/RGB_8__29x100.heif | Bin 0 -> 3479 bytes tests/images/heif_other/exif_xmp_iptc.heic | Bin 0 -> 56925 bytes tests/images/non_heif/LA_16__128x128.png | Bin 0 -> 28047 bytes tests/images/non_heif/LA_16__29x100.png | Bin 0 -> 5610 bytes tests/images/non_heif/LA_8__128x128.png | Bin 0 -> 6716 bytes tests/images/non_heif/LA_8__29x100.png | Bin 0 -> 1396 bytes tests/images/non_heif/L_16.png | Bin 302 -> 0 bytes tests/images/non_heif/L_16__128x128.png | Bin 0 -> 342 bytes tests/images/non_heif/L_16__29x100.png | Bin 0 -> 307 bytes tests/images/non_heif/L_8__128x128.png | Bin 0 -> 157 bytes tests/images/non_heif/L_8__29x100.png | Bin 0 -> 127 bytes tests/images/non_heif/RGBA_16.png | Bin 6874 -> 0 bytes tests/images/non_heif/RGBA_16__128x128.png | Bin 0 -> 65996 bytes tests/images/non_heif/RGBA_16__29x100.png | Bin 0 -> 12717 bytes tests/images/non_heif/RGBA_8__128x128.png | Bin 0 -> 13672 bytes tests/images/non_heif/RGBA_8__29x100.png | Bin 0 -> 2587 bytes tests/images/non_heif/RGB_16.png | Bin 3974 -> 0 bytes tests/images/non_heif/RGB_16__128x128.png | Bin 0 -> 13255 bytes tests/images/non_heif/RGB_16__29x100.png | Bin 0 -> 5379 bytes tests/images/non_heif/RGB_8__128x128.png | Bin 0 -> 382 bytes tests/images/non_heif/RGB_8__29x100.png | Bin 0 -> 209 bytes tests/leaks_test.py | 75 +- tests/metadata_etc_test.py | 40 +- tests/metadata_exif_test.py | 4 +- tests/metadata_xmp_test.py | 2 +- tests/mode_convert_test.py | 118 -- tests/numpy_test.py | 29 +- tests/opencv_test.py | 68 +- tests/options_test.py | 26 +- tests/orientation_test.py | 46 +- tests/read_test.py | 266 ++-- tests/thumbnails_test.py | 377 ++--- tests/write_test.py | 197 +-- 145 files changed, 3598 insertions(+), 3344 deletions(-) rename docker/{manylinux_armv7l_wheel.Dockerfile => manylinux_armv7l_wheels.Dockerfile} (60%) rename docker/{musllinux_armv7l_wheel.Dockerfile => musllinux_armv7l_wheels.Dockerfile} (60%) delete mode 100644 docs/reference/exceptions.rst delete mode 100644 docs/reference/internal.rst delete mode 100644 docs/reference/thumbnails.rst delete mode 100644 docs/thumbnails.rst delete mode 100644 libheif/build.py rename libheif/{public_api.h => heif.h} (69%) delete mode 100644 pillow_heif/_libheif_ctx.py create mode 100644 pillow_heif/_pillow_heif.c delete mode 100644 pillow_heif/error.py delete mode 100644 pillow_heif/helpers.c delete mode 100644 pillow_heif/helpers.h delete mode 100644 pillow_heif/private.py delete mode 100644 pillow_heif/thumbnails.py create mode 100644 tests/images/heif/LA_8__128x128.avif create mode 100644 tests/images/heif/LA_8__128x128.heif create mode 100644 tests/images/heif/LA_8__29x100.avif create mode 100644 tests/images/heif/LA_8__29x100.heif delete mode 100644 tests/images/heif/L_10.avif create mode 100644 tests/images/heif/L_10__128x128.avif create mode 100644 tests/images/heif/L_10__128x128.heif create mode 100644 tests/images/heif/L_10__29x100.avif rename tests/images/heif/{L_10.heif => L_10__29x100.heif} (56%) delete mode 100644 tests/images/heif/L_12.avif create mode 100644 tests/images/heif/L_12__128x128.avif create mode 100644 tests/images/heif/L_12__128x128.heif create mode 100644 tests/images/heif/L_12__29x100.avif rename tests/images/heif/{L_12.heif => L_12__29x100.heif} (60%) create mode 100644 tests/images/heif/L_8__128x128.avif create mode 100644 tests/images/heif/L_8__128x128.heif create mode 100644 tests/images/heif/L_8__29x100.avif create mode 100644 tests/images/heif/L_8__29x100.heif delete mode 100644 tests/images/heif/RGBA_10.avif delete mode 100644 tests/images/heif/RGBA_10.heif create mode 100644 tests/images/heif/RGBA_10__128x128.avif create mode 100644 tests/images/heif/RGBA_10__128x128.heif create mode 100644 tests/images/heif/RGBA_10__29x100.avif create mode 100644 tests/images/heif/RGBA_10__29x100.heif delete mode 100644 tests/images/heif/RGBA_12.avif delete mode 100644 tests/images/heif/RGBA_12.heif create mode 100644 tests/images/heif/RGBA_12__128x128.avif create mode 100644 tests/images/heif/RGBA_12__128x128.heif create mode 100644 tests/images/heif/RGBA_12__29x100.avif create mode 100644 tests/images/heif/RGBA_12__29x100.heif create mode 100644 tests/images/heif/RGBA_8__128x128.avif create mode 100644 tests/images/heif/RGBA_8__128x128.heif create mode 100644 tests/images/heif/RGBA_8__29x100.avif create mode 100644 tests/images/heif/RGBA_8__29x100.heif delete mode 100644 tests/images/heif/RGB_10.avif delete mode 100644 tests/images/heif/RGB_10.heif create mode 100644 tests/images/heif/RGB_10__128x128.avif create mode 100644 tests/images/heif/RGB_10__128x128.heif create mode 100644 tests/images/heif/RGB_10__29x100.avif create mode 100644 tests/images/heif/RGB_10__29x100.heif delete mode 100644 tests/images/heif/RGB_12.avif delete mode 100644 tests/images/heif/RGB_12.heif create mode 100644 tests/images/heif/RGB_12__128x128.avif create mode 100644 tests/images/heif/RGB_12__128x128.heif create mode 100644 tests/images/heif/RGB_12__29x100.avif create mode 100644 tests/images/heif/RGB_12__29x100.heif create mode 100644 tests/images/heif/RGB_8__128x128.avif create mode 100644 tests/images/heif/RGB_8__128x128.heif create mode 100644 tests/images/heif/RGB_8__29x100.avif create mode 100644 tests/images/heif/RGB_8__29x100.heif create mode 100644 tests/images/heif_other/exif_xmp_iptc.heic create mode 100644 tests/images/non_heif/LA_16__128x128.png create mode 100644 tests/images/non_heif/LA_16__29x100.png create mode 100644 tests/images/non_heif/LA_8__128x128.png create mode 100644 tests/images/non_heif/LA_8__29x100.png delete mode 100644 tests/images/non_heif/L_16.png create mode 100644 tests/images/non_heif/L_16__128x128.png create mode 100644 tests/images/non_heif/L_16__29x100.png create mode 100644 tests/images/non_heif/L_8__128x128.png create mode 100644 tests/images/non_heif/L_8__29x100.png delete mode 100644 tests/images/non_heif/RGBA_16.png create mode 100644 tests/images/non_heif/RGBA_16__128x128.png create mode 100644 tests/images/non_heif/RGBA_16__29x100.png create mode 100644 tests/images/non_heif/RGBA_8__128x128.png create mode 100644 tests/images/non_heif/RGBA_8__29x100.png delete mode 100644 tests/images/non_heif/RGB_16.png create mode 100644 tests/images/non_heif/RGB_16__128x128.png create mode 100644 tests/images/non_heif/RGB_16__29x100.png create mode 100644 tests/images/non_heif/RGB_8__128x128.png create mode 100644 tests/images/non_heif/RGB_8__29x100.png delete mode 100644 tests/mode_convert_test.py diff --git a/.github/transform_to-pi_heif.py b/.github/transform_to-pi_heif.py index 1bbe85ac..e0ddf2b3 100644 --- a/.github/transform_to-pi_heif.py +++ b/.github/transform_to-pi_heif.py @@ -9,12 +9,12 @@ if __name__ == "__main__": # change `pillow_heif` to `pi_heif` files_list = [ - "libheif/build.py", "setup.py", - "docker/manylinux_armv7l_wheel.Dockerfile", - "docker/musllinux_armv7l_wheel.Dockerfile", + "docker/manylinux_armv7l_wheels.Dockerfile", + "docker/musllinux_armv7l_wheels.Dockerfile", "docker/test_wheels.Dockerfile", "MANIFEST.in", + "pillow_heif/_pillow_heif.c", ] for dir_name in ("pillow_heif", "tests"): for x in os.listdir(dir_name): @@ -29,4 +29,5 @@ with open(file_name + DEV_NAME_ADD, "w") as file: file.write(modified_data) + os.rename("pillow_heif/_pillow_heif.c", "pillow_heif/_pi_heif.c") os.rename("pillow_heif", "pi_heif") diff --git a/.github/workflows/analysis-coverage.yml b/.github/workflows/analysis-coverage.yml index 49f3fbf4..6e56f957 100644 --- a/.github/workflows/analysis-coverage.yml +++ b/.github/workflows/analysis-coverage.yml @@ -89,8 +89,12 @@ jobs: with: python-version: '3.10' +# to remove `brew uninstall --force --ignore-dependencies imagemagick libheif` when libheif will be updated. +# https://github.com/strukturag/libheif/issues/788 - name: Install from source run: | + brew uninstall --force --ignore-dependencies imagemagick libheif + brew install --formula ./libheif/macos/libheif.rb python3 -m pip install opencv-python coverage python3 -m pip -v install ".[tests]" @@ -196,7 +200,7 @@ jobs: - name: Install from source run: | - sudo -H python3 -m pip install pillow==9.0.1 cffi==1.15.1 pytest defusedxml packaging numpy coverage + sudo -H python3 -m pip install pillow==9.0.1 pytest defusedxml packaging numpy coverage sudo -H PH_LIGHT_ACTION=1 python3 -m pip -v install --no-build-isolation . - name: LibHeif info @@ -242,7 +246,7 @@ jobs: - name: Install from source run: | - sudo -H python3 -m pip install pillow==9.1.1 cffi==1.15.1 pytest defusedxml packaging numpy + sudo -H python3 -m pip install pillow==9.1.1 pytest defusedxml packaging numpy sudo -H PH_LIGHT_ACTION=1 python3 -m pip -v install --no-build-isolation . - name: LibHeif info diff --git a/.github/workflows/build-cache-deps.yml b/.github/workflows/build-cache-deps.yml index b7b15816..2db5ca0a 100644 --- a/.github/workflows/build-cache-deps.yml +++ b/.github/workflows/build-cache-deps.yml @@ -4,10 +4,11 @@ on: push: branches: [master] paths: + - '.github/workflows/build-cache-deps.yml' + - 'docker/*_armv7l_wheels.Dockerfile' - 'libheif/linux/**' - 'libheif/linux_*.py' - - 'libheif/build.py' - - 'libheif/public_api.h' + - 'setup.py' schedule: - cron: '59 23 * * 5' # Every Friday at 23:59 (GMT+2) workflow_dispatch: @@ -27,7 +28,7 @@ jobs: runs-on: ubuntu-20.04 env: KEY_HEAD: ${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} - BUILD_DIR_PREFIX: "/tmp/pillow_heif" + BUILD_DIR: "/tmp/ph_build_stuff" steps: - uses: actions/checkout@v3 @@ -38,7 +39,7 @@ jobs: platforms: arm64 - name: Install cibuildwheel & twine - run: python3 -m pip install cibuildwheel==2.11.4 twine + run: python3 -m pip install twine cibuildwheel==2.11.4 - name: 32-bit musllinux preparations if: matrix.cibw_buildlinux == 'musllinux' && matrix.cibw_arch == 'i686' @@ -48,11 +49,11 @@ jobs: - uses: actions/cache@v3 with: - path: ${{ env.BUILD_DIR_PREFIX }}/build-stuff - key: ${{ env.KEY_HEAD }}-${{ env.KEY_CFFI_BUILD }}-${{ env.KEY_LINUX_LIBS }} + path: ${{ env.BUILD_DIR }} + key: ${{ env.KEY_HEAD }}-${{ env.KEY_C_BUILD }}-${{ env.KEY_LINUX_LIBS }} env: - KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/linux/**') }} - KEY_CFFI_BUILD: ${{ hashFiles('libheif/build.py') }}-${{ hashFiles('libheif/public_api.h') }} + KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux/**') }} + KEY_C_BUILD: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/setup.py') }} - name: Start test build run: cibuildwheel @@ -60,7 +61,7 @@ jobs: CIBW_BUILD: ${{ format('cp38-{0}*', matrix.cibw_buildlinux) }} CIBW_ARCHS: ${{ matrix.cibw_arch }} CIBW_BEFORE_ALL_LINUX: ${{ env.INSTALL_OS_PACKAGES }} - CIBW_ENVIRONMENT_LINUX: BUILD_DIR_PREFIX=/host${{ env.BUILD_DIR_PREFIX }} + CIBW_ENVIRONMENT_LINUX: BUILD_DIR=/host${{ env.BUILD_DIR }} CIBW_TEST_COMMAND: "python3 -c 'import pillow_heif; print(pillow_heif.libheif_info())'" CIBW_TEST_EXTRAS: "" CIBW_BUILD_VERBOSITY: 1 @@ -68,7 +69,7 @@ jobs: - name: Checking built wheels run: twine check wheelhouse/* - - name: Uploading wheel + - name: Uploading wheels uses: actions/upload-artifact@v3 with: name: wheels @@ -76,4 +77,129 @@ jobs: if-no-files-found: error - name: Fix cache permissions - run: sudo chmod -R 777 ${{ env.BUILD_DIR_PREFIX }} + run: sudo chmod -R 777 ${{ env.BUILD_DIR }} + + pi_heif_dependencies_linux: + strategy: + fail-fast: true + matrix: + cibw_buildlinux: [ manylinux, musllinux ] + cibw_arch: [ "aarch64", "i686", "x86_64" ] + name: Pi-Heif • ${{ matrix.cibw_arch }} • ${{ matrix.cibw_buildlinux }} + runs-on: ubuntu-20.04 + env: + KEY_HEAD: Pi-Heif-${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} + BUILD_DIR: "/tmp/ph_build_stuff" + + steps: + - uses: actions/checkout@v3 + - name: Transform to Pi-Heif + run: | + cp -r -v ./pi-heif/* . + python3 .github/transform_to-pi_heif.py + + - name: Set up QEMU + if: matrix.cibw_arch == 'aarch64' + uses: docker/setup-qemu-action@v2 + with: + platforms: arm64 + + - name: Install cibuildwheel & twine + run: python3 -m pip install twine cibuildwheel==2.11.4 + + - name: 32-bit musllinux preparations + if: matrix.cibw_buildlinux == 'musllinux' && matrix.cibw_arch == 'i686' + run: echo INSTALL_OS_PACKAGES="apk update && apk --no-cache add $OS_PACKAGES" >> $GITHUB_ENV + env: + OS_PACKAGES: "fribidi-dev harfbuzz-dev jpeg-dev lcms2-dev openjpeg-dev" + + - uses: actions/cache@v3 + with: + path: ${{ env.BUILD_DIR }} + key: ${{ env.KEY_HEAD }}-${{ env.KEY_C_BUILD }}-${{ env.KEY_LINUX_LIBS }} + env: + KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux/**') }} + KEY_C_BUILD: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/setup.py') }} + + - name: Start test build + run: cibuildwheel + env: + CIBW_BUILD: ${{ format('cp38-{0}*', matrix.cibw_buildlinux) }} + CIBW_ARCHS: ${{ matrix.cibw_arch }} + CIBW_BEFORE_ALL_LINUX: ${{ env.INSTALL_OS_PACKAGES }} + CIBW_ENVIRONMENT_LINUX: BUILD_DIR=/host${{ env.BUILD_DIR }} PH_LIGHT_ACTION=1 + CIBW_TEST_COMMAND: "python3 -c 'import pi_heif; print(pi_heif.libheif_info())'" + CIBW_TEST_EXTRAS: "" + CIBW_BUILD_VERBOSITY: 1 + + - name: Checking built wheels + run: twine check wheelhouse/* + + - name: Uploading wheels + uses: actions/upload-artifact@v3 + with: + name: wheels + path: wheelhouse/*.whl + if-no-files-found: error + + - name: Fix cache permissions + run: sudo chmod -R 777 ${{ env.BUILD_DIR }} + + pi_heif_dependencies_linux_armv7: + strategy: + fail-fast: true + matrix: + i: [ + { "docker_file": "manylinux_armv7l_wheels", "name": "manylinux" }, + { "docker_file": "musllinux_armv7l_wheels", "name": "musllinux" }, + ] + v: ["3.8"] + name: Pi-Heif • ARMv7l • ${{ matrix.i['name'] }} + runs-on: ubuntu-20.04 + env: + KEY_HEAD: Pi-Heif-ARMv7l-${{ matrix.i['name'] }} + BUILD_DIR: "./build_cache" + + steps: + - uses: actions/checkout@v3 + - name: Transform to Pi-Heif + run: | + cp -r -v ./pi-heif/* . + python3 .github/transform_to-pi_heif.py + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - uses: actions/cache@v3 + with: + path: ${{ env.BUILD_DIR }} + key: ${{ env.KEY_HEAD }}-${{ env.KEY_C_BUILD }}-${{ env.KEY_LINUX_LIBS }} + env: + KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux/**') }} + KEY_C_BUILD: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/setup.py') }} + + - name: Build Pi-Heif + uses: docker/build-push-action@v4 + with: + context: . + file: docker/${{ matrix.i['docker_file'] }}.Dockerfile + build-args: | + PY_VERSION=${{ matrix.v }} + platforms: linux/arm/v7 + push: false + outputs: type=local,dest=./ + + - name: Checking built wheels + run: | + python3 -m pip install twine + python3 -m twine check ./repaired_dist/* + + - name: Uploading wheels + uses: actions/upload-artifact@v3 + with: + name: wheels_pi_heif + path: ./repaired_dist/*.whl + if-no-files-found: error + + - name: Fix cache permissions + run: sudo chmod -R 777 ${{ env.BUILD_DIR }} diff --git a/.github/workflows/test-src-build-linux.yml b/.github/workflows/test-src-build-linux.yml index b129a219..fe2d63f0 100644 --- a/.github/workflows/test-src-build-linux.yml +++ b/.github/workflows/test-src-build-linux.yml @@ -9,10 +9,9 @@ on: - 'docker/from_src/*.Dockerfile' - 'libheif/linux/**' - 'libheif/linux_*.py' - - 'libheif/build.py' - - 'libheif/public_api.h' - 'setup.*' - 'pyproject.toml' + - 'pillow_heif/_pillow_heif.c' push: branches: [master] paths: @@ -20,10 +19,9 @@ on: - 'docker/from_src/*.Dockerfile' - 'libheif/linux/**' - 'libheif/linux_*.py' - - 'libheif/build.py' - - 'libheif/public_api.h' - 'setup.*' - 'pyproject.toml' + - 'pillow_heif/_pillow_heif.c' concurrency: group: src_linux-${{ github.ref }} @@ -35,6 +33,7 @@ jobs: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: arch: ["amd64", "arm64", "arm/v7"] docker_file: ["Alpine_3_15", "Alpine_3_17", "Debian_11", "Ubuntu_22_04"] @@ -67,3 +66,25 @@ jobs: push: false cache-from: type=gha,scope=${{ matrix.docker_file }}-${{ matrix.arch }} target: build_test + + ubuntu_22: + name: LibHeif==1.12.0 + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.8' + + - name: Install LibHeif from default repo + run: sudo apt -y install libheif-dev + + - name: Install from source + run: python3 -m pip -v install ".[dev]" + + - name: LibHeif info + run: python3 -c "import pillow_heif; print(pillow_heif.libheif_info())" + + - name: Run Tests + run: python3 -m pytest -rs diff --git a/.github/workflows/test-src-build-macos.yml b/.github/workflows/test-src-build-macos.yml index db37d4b5..24e73e90 100644 --- a/.github/workflows/test-src-build-macos.yml +++ b/.github/workflows/test-src-build-macos.yml @@ -7,23 +7,21 @@ on: paths: - '.github/workflows/test-src-build-macos.yml' - 'libheif/macos/**' - - 'libheif/build.py' - - 'libheif/public_api.h' - 'setup.*' - 'pyproject.toml' - 'pi-heif/libheif/macos/**' - 'pi-heif/setup.cfg' + - 'pillow_heif/_pillow_heif.c' push: branches: [master] paths: - '.github/workflows/test-src-build-macos.yml' - 'libheif/macos/**' - - 'libheif/build.py' - - 'libheif/public_api.h' - 'setup.*' - 'pyproject.toml' - 'pi-heif/libheif/macos/**' - 'pi-heif/setup.cfg' + - 'pillow_heif/_pillow_heif.c' concurrency: group: src_macos-${{ github.ref }} @@ -42,7 +40,7 @@ jobs: - uses: actions/checkout@v3 - name: Install libheif from formula run: | - brew uninstall --force --ignore-dependencies imagemagick + brew uninstall --force --ignore-dependencies imagemagick libheif brew install --formula ./libheif/macos/libheif.rb - name: Installing Pillow-Heif @@ -71,7 +69,7 @@ jobs: - name: Install libheif from formula run: | - brew uninstall --force --ignore-dependencies imagemagick x265 aom + brew uninstall --force --ignore-dependencies imagemagick libheif x265 aom brew install --formula ./libheif/macos/libheif.rb - name: Installing Pi-Heif diff --git a/.github/workflows/test-src-build-windows.yml b/.github/workflows/test-src-build-windows.yml index a2cc8dd3..cc6bf43b 100644 --- a/.github/workflows/test-src-build-windows.yml +++ b/.github/workflows/test-src-build-windows.yml @@ -7,23 +7,23 @@ on: paths: - '.github/workflows/test-src-build-windows.yml' - 'libheif/windows/**' - - 'libheif/build.py' - - 'libheif/public_api.h' + - 'libheif/heif.h' - 'setup.*' - 'pyproject.toml' - 'pi-heif/libheif/windows/**' - 'pi-heif/setup.cfg' + - 'pillow_heif/_pillow_heif.c' push: branches: [master] paths: - '.github/workflows/test-src-build-windows.yml' - 'libheif/windows/**' - - 'libheif/build.py' - - 'libheif/public_api.h' + - 'libheif/heif.h' - 'setup.*' - 'pyproject.toml' - 'pi-heif/libheif/windows/**' - 'pi-heif/setup.cfg' + - 'pillow_heif/_pillow_heif.c' concurrency: group: src_windows-${{ github.ref }} diff --git a/.github/workflows/test-wheels-pi_heif.yml b/.github/workflows/test-wheels-pi_heif.yml index 004d092e..8f9b4be9 100644 --- a/.github/workflows/test-wheels-pi_heif.yml +++ b/.github/workflows/test-wheels-pi_heif.yml @@ -22,11 +22,16 @@ jobs: { "os": "debian", "ver": "10", "arch": "arm/v7" }, { "os": "debian", "ver": "11", "arch": "amd64" }, { "os": "debian", "ver": "11", "arch": "arm64" }, + { "os": "debian", "ver": "11", "arch": "arm/v7" }, { "os": "alpine", "ver": "3.15", "arch": "amd64" }, { "os": "alpine", "ver": "3.15", "arch": "arm64" }, + { "os": "alpine", "ver": "3.15", "arch": "arm/v7" }, { "os": "alpine", "ver": "3.16", "arch": "amd64" }, { "os": "alpine", "ver": "3.16", "arch": "arm64" }, { "os": "alpine", "ver": "3.16", "arch": "arm/v7" }, + { "os": "alpine", "ver": "3.17", "arch": "amd64" }, + { "os": "alpine", "ver": "3.17", "arch": "arm64" }, + { "os": "alpine", "ver": "3.17", "arch": "arm/v7" }, ] steps: @@ -48,7 +53,7 @@ jobs: - name: Preparing musli if: matrix.i['os'] == 'alpine' - run: echo INSTALL_CMD="apk add --no-cache python3 py3-pip py3-cffi py3-pillow py3-numpy" >> $GITHUB_ENV + run: echo INSTALL_CMD="apk add --no-cache python3 py3-pip py3-pillow py3-numpy" >> $GITHUB_ENV - name: Preparing centos if: matrix.i['os'] != 'debian' && matrix.i['os'] != 'ubuntu' && matrix.i['os'] != 'alpine' @@ -90,7 +95,7 @@ jobs: - name: Preparations run: | - python3 -m pip install pytest pillow cffi numpy pympler defusedxml opencv-python + python3 -m pip install pytest pillow numpy pympler defusedxml opencv-python python3 -m pip install --only-binary=:all: pi-heif - name: Test wheel @@ -119,7 +124,7 @@ jobs: - name: Preparations run: | brew install libjpeg little-cms2 - python3 -m pip install pytest cffi pillow numpy pympler defusedxml + python3 -m pip install pytest pillow numpy pympler defusedxml python3 -m pip install --only-binary=:all: pi-heif - name: Install OpenCV for CPython @@ -154,7 +159,7 @@ jobs: - name: Preparations run: | sudo apt update && sudo apt install libjpeg-dev liblcms2-dev - python3 -m pip install pytest cffi pillow numpy pympler defusedxml + python3 -m pip install pytest pillow numpy pympler defusedxml python3 -m pip install --only-binary=:all: pi-heif - name: Install OpenCV for CPython @@ -188,7 +193,7 @@ jobs: - name: Preparations run: | brew install libjpeg little-cms2 - python3 -m pip install pytest cffi pillow numpy pympler defusedxml + python3 -m pip install pytest pillow numpy pympler defusedxml python3 -m pip install --only-binary=:all: pillow-heif python3 -m pip install --only-binary=:all: pi-heif @@ -223,7 +228,7 @@ jobs: - name: Preparations run: | sudo apt update && sudo apt install libjpeg-dev liblcms2-dev - python3 -m pip install pytest cffi pillow numpy pympler defusedxml + python3 -m pip install pytest pillow numpy pympler defusedxml python3 -m pip install --only-binary=:all: pillow-heif python3 -m pip install --only-binary=:all: pi-heif diff --git a/.github/workflows/test-wheels.yml b/.github/workflows/test-wheels.yml index 3d4ba6cd..13c18e02 100644 --- a/.github/workflows/test-wheels.yml +++ b/.github/workflows/test-wheels.yml @@ -19,14 +19,14 @@ jobs: { "os": "fedora", "ver": "37", "arch": "amd64" }, { "os": "debian", "ver": "10", "arch": "amd64" }, { "os": "debian", "ver": "10", "arch": "arm64" }, - { "os": "debian", "ver": "10", "arch": "arm/v7" }, { "os": "debian", "ver": "11", "arch": "amd64" }, { "os": "debian", "ver": "11", "arch": "arm64" }, { "os": "alpine", "ver": "3.15", "arch": "amd64" }, { "os": "alpine", "ver": "3.15", "arch": "arm64" }, { "os": "alpine", "ver": "3.16", "arch": "amd64" }, { "os": "alpine", "ver": "3.16", "arch": "arm64" }, - { "os": "alpine", "ver": "3.16", "arch": "arm/v7" }, + { "os": "alpine", "ver": "3.17", "arch": "amd64" }, + { "os": "alpine", "ver": "3.17", "arch": "arm64" }, ] steps: @@ -56,7 +56,7 @@ jobs: - name: Preparing musli if: matrix.i['os'] == 'alpine' - run: echo INSTALL_CMD="apk add --no-cache python3 py3-pip py3-cffi py3-pillow py3-numpy" >> $GITHUB_ENV + run: echo INSTALL_CMD="apk add --no-cache python3 py3-pip py3-pillow py3-numpy" >> $GITHUB_ENV - name: Preparing centos if: matrix.i['os'] != 'debian' && matrix.i['os'] != 'ubuntu' && matrix.i['os'] != 'alpine' @@ -97,7 +97,7 @@ jobs: - name: Preparations run: | - python3 -m pip install pytest pillow cffi numpy pympler defusedxml opencv-python + python3 -m pip install pytest pillow numpy pympler defusedxml opencv-python python3 -m pip install --only-binary=:all: pillow_heif - name: Test wheel @@ -124,7 +124,7 @@ jobs: - name: Preparations run: | brew install libjpeg little-cms2 - python3 -m pip install pytest cffi pillow numpy pympler defusedxml + python3 -m pip install pytest pillow numpy pympler defusedxml python3 -m pip install --only-binary=:all: pillow_heif - name: Install OpenCV for CPython @@ -158,7 +158,7 @@ jobs: - name: Preparations run: | sudo apt update && sudo apt install libjpeg-dev liblcms2-dev - python3 -m pip install pytest cffi pillow numpy pympler defusedxml + python3 -m pip install pytest pillow numpy pympler defusedxml python3 -m pip install --only-binary=:all: pillow_heif - name: Install OpenCV for CPython diff --git a/.github/workflows/wheels-pi_heif.yml b/.github/workflows/wheels-pi_heif.yml index a28dbd73..20eb162a 100644 --- a/.github/workflows/wheels-pi_heif.yml +++ b/.github/workflows/wheels-pi_heif.yml @@ -16,7 +16,7 @@ jobs: ref: ${{ github.ref }} check-name: 'macosx • aarch64 • Pi-Heif • Cirrus' repo-token: ${{ secrets.GITHUB_TOKEN }} - wait-interval: 10 + wait-interval: 30 - name: Download artifacts run: | @@ -128,8 +128,8 @@ jobs: name: ${{ matrix.cibw_buildlinux }} • ${{ matrix.cibw_arch }} • CPython runs-on: ubuntu-20.04 env: - BUILD_DIR_PREFIX: "/tmp/pillow_heif" - KEY_HEAD: ${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} + BUILD_DIR: "/tmp/ph_build_stuff" + KEY_HEAD: Pi-Heif-${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} steps: - uses: actions/checkout@v3 @@ -154,6 +154,14 @@ jobs: if: matrix.cibw_arch == 'aarch64' run: echo CIBW_TEST_EXTRAS="tests-min" >> $GITHUB_ENV + - uses: actions/cache@v3 + with: + path: ${{ env.BUILD_DIR }} + key: ${{ env.KEY_HEAD }}-${{ env.KEY_C_BUILD }}-${{ env.KEY_LINUX_LIBS }} + env: + KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux/**') }} + KEY_C_BUILD: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/setup.py') }} + - name: Run cibuildwheel run: | python3 -m pip install cibuildwheel==2.11.4 @@ -162,7 +170,7 @@ jobs: CIBW_BUILD: ${{ format('cp3*-{0}_{1}', matrix.cibw_buildlinux, matrix.cibw_arch) }} CIBW_ARCHS: ${{ matrix.cibw_arch }} CIBW_BEFORE_ALL_LINUX: ${{ env.INSTALL_OS_PACKAGES }} - CIBW_ENVIRONMENT_LINUX: BUILD_DIR_PREFIX=/host${{ env.BUILD_DIR_PREFIX }} PH_LIGHT_ACTION=1 + CIBW_ENVIRONMENT_LINUX: BUILD_DIR=/host${{ env.BUILD_DIR }} PH_LIGHT_ACTION=1 - name: Checking built wheels run: | @@ -176,6 +184,9 @@ jobs: path: wheelhouse/*.whl if-no-files-found: error + - name: Fix cache permissions + run: sudo chmod -R 777 ${{ env.BUILD_DIR }} + wheels_linux_pypy: strategy: fail-fast: true @@ -186,8 +197,8 @@ jobs: name: ${{ matrix.cibw_buildlinux }} • ${{ matrix.cibw_arch }} • ${{ matrix.cibw_build }} runs-on: ubuntu-20.04 env: - BUILD_DIR_PREFIX: "/tmp/pillow_heif" - KEY_HEAD: ${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} + BUILD_DIR: "/tmp/ph_build_stuff" + KEY_HEAD: Pi-Heif-${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} steps: - uses: actions/checkout@v3 @@ -206,6 +217,14 @@ jobs: if: matrix.cibw_arch == 'aarch64' run: echo CIBW_TEST_EXTRAS="tests-min" >> $GITHUB_ENV + - uses: actions/cache@v3 + with: + path: ${{ env.BUILD_DIR }} + key: ${{ env.KEY_HEAD }}-${{ env.KEY_C_BUILD }}-${{ env.KEY_LINUX_LIBS }} + env: + KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux/**') }} + KEY_C_BUILD: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/setup.py') }} + - name: Run cibuildwheel run: | python3 -m pip install cibuildwheel==2.11.4 @@ -214,7 +233,7 @@ jobs: CIBW_BUILD: ${{ format('{0}-{1}_{2}', matrix.cibw_build , matrix.cibw_buildlinux, matrix.cibw_arch) }} CIBW_ARCHS: ${{ matrix.cibw_arch }} CIBW_BEFORE_ALL_LINUX: "yum makecache && yum install -y libjpeg-turbo-devel lcms2-devel" - CIBW_ENVIRONMENT_LINUX: BUILD_DIR_PREFIX=/host${{ env.BUILD_DIR_PREFIX }} PH_LIGHT_ACTION=1 + CIBW_ENVIRONMENT_LINUX: BUILD_DIR=/host${{ env.BUILD_DIR }} PH_LIGHT_ACTION=1 - name: Checking built wheels run: | @@ -228,15 +247,25 @@ jobs: path: wheelhouse/*.whl if-no-files-found: error + - name: Fix cache permissions + run: sudo chmod -R 777 ${{ env.BUILD_DIR }} + wheels_armv7l: - name: ${{ matrix.i['name'] }} • ARMv7l • CPython + name: ${{ matrix.i['name'] }} • ARMv7l • CPython${{ matrix.v }} runs-on: ubuntu-20.04 strategy: matrix: i: [ - { "docker_file": "manylinux_armv7l_wheel", "name": "manylinux" }, - { "docker_file": "musllinux_armv7l_wheel", "name": "musllinux" }, + { "docker_file": "manylinux_armv7l_wheels", "name": "manylinux" }, + { "docker_file": "musllinux_armv7l_wheels", "name": "musllinux" }, ] + v: ["3.7", "3.8", "3.9", "3.10", "3.11"] + exclude: + - v: "3.7" + i: { "docker_file": "musllinux_armv7l_wheels", "name": "musllinux" } + env: + KEY_HEAD: Pi-Heif-ARMv7l-${{ matrix.i['name'] }} + BUILD_DIR: "./build_cache" steps: - uses: actions/checkout@v3 @@ -248,28 +277,40 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v2 + - uses: actions/cache@v3 + with: + path: ${{ env.BUILD_DIR }} + key: ${{ env.KEY_HEAD }}-${{ env.KEY_C_BUILD }}-${{ env.KEY_LINUX_LIBS }} + env: + KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux/**') }} + KEY_C_BUILD: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/setup.py') }} + - name: Build Pi-Heif uses: docker/build-push-action@v4 with: context: . file: docker/${{ matrix.i['docker_file'] }}.Dockerfile + build-args: | + PY_VERSION=${{ matrix.v }} platforms: linux/arm/v7 push: false outputs: type=local,dest=./ - name: Checking built wheels run: | - ls -la ./pi_heif/repaired_dist python3 -m pip install twine - python3 -m twine check ./pi_heif/repaired_dist/* + python3 -m twine check ./repaired_dist/* - name: Uploading wheels uses: actions/upload-artifact@v3 with: name: wheels_pi_heif - path: ./pi_heif/repaired_dist/*.whl + path: ./repaired_dist/*.whl if-no-files-found: error + - name: Fix cache permissions + run: sudo chmod -R 777 ${{ env.BUILD_DIR }} + sdist: name: Source distribution runs-on: macos-12 diff --git a/.github/workflows/wheels-pillow_heif.yml b/.github/workflows/wheels-pillow_heif.yml index 50cba25a..57e754d2 100644 --- a/.github/workflows/wheels-pillow_heif.yml +++ b/.github/workflows/wheels-pillow_heif.yml @@ -15,7 +15,7 @@ jobs: ref: ${{ github.ref }} check-name: 'macosx • aarch64 • Cirrus' repo-token: ${{ secrets.GITHUB_TOKEN }} - wait-interval: 10 + wait-interval: 30 - name: Download artifacts run: | @@ -29,43 +29,6 @@ jobs: path: wheelhouse/*.whl if-no-files-found: error - wheels_armv7l: - name: ${{ matrix.i['name'] }} • ARMv7l • CPython - runs-on: ubuntu-20.04 - strategy: - matrix: - i: [ - { "docker_file": "manylinux_armv7l_wheel", "name": "manylinux" }, - { "docker_file": "musllinux_armv7l_wheel", "name": "musllinux" }, - ] - - steps: - - uses: actions/checkout@v3 - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Build Pillow-Heif - uses: docker/build-push-action@v4 - with: - context: . - file: docker/${{ matrix.i['docker_file'] }}.Dockerfile - platforms: linux/arm/v7 - push: false - outputs: type=local,dest=./ - - - name: Checking built wheels - run: | - ls -la ./pillow_heif/repaired_dist - python3 -m pip install twine - python3 -m twine check ./pillow_heif/repaired_dist/* - - - name: Uploading wheels - uses: actions/upload-artifact@v3 - with: - name: wheels_pillow_heif - path: ./pillow_heif/repaired_dist/*.whl - if-no-files-found: error - wheels_windows: name: windows • x86_64 runs-on: windows-2019 @@ -156,7 +119,7 @@ jobs: name: ${{ matrix.cibw_buildlinux }} • ${{ matrix.cibw_arch }} • CPython runs-on: ubuntu-20.04 env: - BUILD_DIR_PREFIX: "/tmp/pillow_heif" + BUILD_DIR: "/tmp/ph_build_stuff" KEY_HEAD: ${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} steps: @@ -179,11 +142,11 @@ jobs: - uses: actions/cache@v3 with: - path: ${{ env.BUILD_DIR_PREFIX }}/build-stuff - key: ${{ env.KEY_HEAD }}-${{ env.KEY_CFFI_BUILD }}-${{ env.KEY_LINUX_LIBS }} + path: ${{ env.BUILD_DIR }} + key: ${{ env.KEY_HEAD }}-${{ env.KEY_C_BUILD }}-${{ env.KEY_LINUX_LIBS }} env: - KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/linux/**') }} - KEY_CFFI_BUILD: ${{ hashFiles('libheif/build.py') }}-${{ hashFiles('libheif/public_api.h') }} + KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux/**') }} + KEY_C_BUILD: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/setup.py') }} - name: Run cibuildwheel run: | @@ -193,7 +156,7 @@ jobs: CIBW_BUILD: ${{ format('cp3*-{0}_{1}', matrix.cibw_buildlinux, matrix.cibw_arch) }} CIBW_ARCHS: ${{ matrix.cibw_arch }} CIBW_BEFORE_ALL_LINUX: ${{ env.INSTALL_OS_PACKAGES }} - CIBW_ENVIRONMENT_LINUX: BUILD_DIR_PREFIX=/host${{ env.BUILD_DIR_PREFIX }} PH_FULL_ACTION=1 + CIBW_ENVIRONMENT_LINUX: BUILD_DIR=/host${{ env.BUILD_DIR }} PH_FULL_ACTION=1 - name: Checking built wheels run: | @@ -208,7 +171,7 @@ jobs: if-no-files-found: error - name: Fix cache permissions - run: sudo chmod -R 777 ${{ env.BUILD_DIR_PREFIX }} + run: sudo chmod -R 777 ${{ env.BUILD_DIR }} wheels_linux_cpython_32bit: strategy: @@ -219,7 +182,7 @@ jobs: name: ${{ matrix.cibw_buildlinux }} • ${{ matrix.cibw_arch }} • CPython runs-on: ubuntu-20.04 env: - BUILD_DIR_PREFIX: "/tmp/pillow_heif" + BUILD_DIR: "/tmp/ph_build_stuff" KEY_HEAD: ${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} steps: @@ -238,11 +201,11 @@ jobs: - uses: actions/cache@v3 with: - path: ${{ env.BUILD_DIR_PREFIX }}/build-stuff - key: ${{ env.KEY_HEAD }}-${{ env.KEY_CFFI_BUILD }}-${{ env.KEY_LINUX_LIBS }} + path: ${{ env.BUILD_DIR }} + key: ${{ env.KEY_HEAD }}-${{ env.KEY_C_BUILD }}-${{ env.KEY_LINUX_LIBS }} env: - KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/linux/**') }} - KEY_CFFI_BUILD: ${{ hashFiles('libheif/build.py') }}-${{ hashFiles('libheif/public_api.h') }} + KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux/**') }} + KEY_C_BUILD: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/setup.py') }} - name: Run cibuildwheel run: | @@ -252,7 +215,7 @@ jobs: CIBW_BUILD: ${{ format('cp3*-{0}_{1}', matrix.cibw_buildlinux, matrix.cibw_arch) }} CIBW_ARCHS: ${{ matrix.cibw_arch }} CIBW_BEFORE_ALL_LINUX: ${{ env.INSTALL_OS_PACKAGES }} - CIBW_ENVIRONMENT_LINUX: BUILD_DIR_PREFIX=/host${{ env.BUILD_DIR_PREFIX }} PH_LIGHT_ACTION=1 + CIBW_ENVIRONMENT_LINUX: BUILD_DIR=/host${{ env.BUILD_DIR }} PH_LIGHT_ACTION=1 - name: Checking built wheels run: | @@ -267,7 +230,7 @@ jobs: if-no-files-found: error - name: Fix cache permissions - run: sudo chmod -R 777 ${{ env.BUILD_DIR_PREFIX }} + run: sudo chmod -R 777 ${{ env.BUILD_DIR }} wheels_linux_pypy: strategy: @@ -279,7 +242,7 @@ jobs: name: ${{ matrix.cibw_buildlinux }} • ${{ matrix.cibw_arch }} • ${{ matrix.cibw_build }} runs-on: ubuntu-20.04 env: - BUILD_DIR_PREFIX: "/tmp/pillow_heif" + BUILD_DIR: "/tmp/ph_build_stuff" KEY_HEAD: ${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} steps: @@ -296,11 +259,11 @@ jobs: - uses: actions/cache@v3 with: - path: ${{ env.BUILD_DIR_PREFIX }}/build-stuff - key: ${{ env.KEY_HEAD }}-${{ env.KEY_CFFI_BUILD }}-${{ env.KEY_LINUX_LIBS }} + path: ${{ env.BUILD_DIR }} + key: ${{ env.KEY_HEAD }}-${{ env.KEY_C_BUILD }}-${{ env.KEY_LINUX_LIBS }} env: - KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/linux/**') }} - KEY_CFFI_BUILD: ${{ hashFiles('libheif/build.py') }}-${{ hashFiles('libheif/public_api.h') }} + KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux/**') }} + KEY_C_BUILD: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/setup.py') }} - name: Run cibuildwheel run: | @@ -310,60 +273,7 @@ jobs: CIBW_BUILD: ${{ format('{0}-{1}_{2}', matrix.cibw_build , matrix.cibw_buildlinux, matrix.cibw_arch) }} CIBW_ARCHS: ${{ matrix.cibw_arch }} CIBW_BEFORE_ALL_LINUX: "yum makecache && yum install -y libjpeg-turbo-devel lcms2-devel" - CIBW_ENVIRONMENT_LINUX: BUILD_DIR_PREFIX=/host${{ env.BUILD_DIR_PREFIX }} PH_FULL_ACTION=1 - - - name: Checking built wheels - run: | - python3 -m pip install twine - python3 -m twine check wheelhouse/* - - - name: Uploading wheels - uses: actions/upload-artifact@v3 - with: - name: wheels_pillow_heif - path: wheelhouse/*.whl - if-no-files-found: error - - - name: Fix cache permissions - run: sudo chmod -R 777 ${{ env.BUILD_DIR_PREFIX }} - - wheels_linux_pypy_32bit: - strategy: - fail-fast: true - matrix: - cibw_buildlinux: [ manylinux ] - cibw_arch: [ "i686" ] - cibw_build: [ "pp38", "pp39" ] - name: ${{ matrix.cibw_buildlinux }} • ${{ matrix.cibw_arch }} • ${{ matrix.cibw_build }} - runs-on: ubuntu-20.04 - env: - BUILD_DIR_PREFIX: "/tmp/pillow_heif" - KEY_HEAD: ${{ matrix.cibw_arch }}-${{ matrix.cibw_buildlinux }} - - steps: - - uses: actions/checkout@v3 - - name: Set up QEMU - if: matrix.cibw_arch == 'aarch64' - uses: docker/setup-qemu-action@v2 - with: - platforms: arm64 - - - uses: actions/cache@v3 - with: - path: ${{ env.BUILD_DIR_PREFIX }}/build-stuff - key: ${{ env.KEY_HEAD }}-${{ env.KEY_CFFI_BUILD }}-${{ env.KEY_LINUX_LIBS }} - env: - KEY_LINUX_LIBS: ${{ hashFiles('libheif/linux_*.py') }}-${{ hashFiles('libheif/linux/**') }} - KEY_CFFI_BUILD: ${{ hashFiles('libheif/build.py') }}-${{ hashFiles('libheif/public_api.h') }} - - - name: Run cibuildwheel - run: | - python3 -m pip install cibuildwheel==2.11.4 - python3 -m cibuildwheel - env: - CIBW_BUILD: ${{ format('{0}-{1}_{2}', matrix.cibw_build , matrix.cibw_buildlinux, matrix.cibw_arch) }} - CIBW_ARCHS: ${{ matrix.cibw_arch }} - CIBW_ENVIRONMENT_LINUX: BUILD_DIR_PREFIX=/host${{ env.BUILD_DIR_PREFIX }} PH_LIGHT_ACTION=1 + CIBW_ENVIRONMENT_LINUX: BUILD_DIR=/host${{ env.BUILD_DIR }} PH_FULL_ACTION=1 - name: Checking built wheels run: | @@ -378,7 +288,7 @@ jobs: if-no-files-found: error - name: Fix cache permissions - run: sudo chmod -R 777 ${{ env.BUILD_DIR_PREFIX }} + run: sudo chmod -R 777 ${{ env.BUILD_DIR }} sdist: name: Source distribution diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 75c8b929..4abecb31 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -34,7 +34,7 @@ repos: hooks: - id: mypy files: pillow_heif/ - additional_dependencies: [pillow, cffi, pytest] + additional_dependencies: [pillow, pytest] - repo: https://github.com/mgedmin/check-manifest rev: "0.49" diff --git a/.readthedocs.yml b/.readthedocs.yml index cba78a09..03e31960 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -5,11 +5,7 @@ build: tools: python: "3.9" apt_packages: - - cmake - - nasm - - libaom-dev - - libx265-dev - - libde265-dev + - libheif-dev python: install: diff --git a/CHANGELOG.md b/CHANGELOG.md index 82133ff0..309c79ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ Reworked version with native C extension. ### Changed +- `libde265`(HEIF decoder) updated from 1.0.9 to 1.0.11 version. [changelog](https://github.com/strukturag/libde265/releases/tag/v1.0.10) - (Heif) `convert_to` method was removed, `bgr_mode` opt. parameter added to `open_heif` - Many other changes mostly for standalone usage. [topic](https://github.com/bigcat88/pillow_heif/issues/75) diff --git a/LICENSES_bundled.txt b/LICENSES_bundled.txt index 8ec377ee..362bf0d2 100644 --- a/LICENSES_bundled.txt +++ b/LICENSES_bundled.txt @@ -11,8 +11,8 @@ Files: libheif.[dylib|so|dll] Name: libde265 License: LGPLv3 Files: libde265.[dylib|so|dll] - For details, see https://github.com/strukturag/libde265/tree/v1.0.9/COPYING - Source code: https://github.com/strukturag/libde265/tree/v1.0.9 + For details, see https://github.com/strukturag/libde265/tree/v1.0.11/COPYING + Source code: https://github.com/strukturag/libde265/tree/v1.0.11 Name: x265 License: GPLv2 diff --git a/MANIFEST.in b/MANIFEST.in index 45a5ee8d..b0fcc75b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -3,7 +3,6 @@ include CHANGELOG.md include pyproject.toml recursive-include pillow_heif *.c -recursive-include pillow_heif *.h graft libheif graft tests diff --git a/README.md b/README.md index 76a3edd4..60500a1d 100644 --- a/README.md +++ b/README.md @@ -18,18 +18,15 @@ ![Alpine Linux](https://img.shields.io/badge/Alpine_Linux-0078D6.svg?style=for-the-badge&logo=alpine-linux&logoColor=white) ![Raspberry Pi](https://img.shields.io/badge/Rasberry_Pi-FCC624.svg?style=for-the-badge&logo=raspberry-pi&logoColor=red) - -#### NOTE: Please pin version to skip `0.10.x` versions, as it will be alpha version branch. [0.10.0 changes](https://github.com/bigcat88/pillow_heif/issues/75) - -Python bindings to [libheif](https://github.com/strukturag/libheif) for working with HEIF images and an add-on for Pillow. +Python bindings to [libheif](https://github.com/strukturag/libheif) for working with HEIF images and plugin for Pillow. Features: * Decoding of `8`, `10`, `12` bit HEIC and AVIF files. * Encoding of `8`, `10`, `12` bit HEIC and AVIF files. * `EXIF`, `XMP`, `IPTC` read & write support. * Support of multiple images in one file and a `PrimaryImage` attribute. - * HEIF `thumbnails` support. - * Adding all this features to Pillow in one line of code as a plugin. + * Adding & removing `thumbnails`. + * Adding HEIF support to Pillow in one line of code as a plugin. Note: Here is a light version [pi-heif](https://pypi.org/project/pi-heif/) of this project without encoding capabilities. @@ -46,7 +43,7 @@ from pillow_heif import register_heif_opener register_heif_opener() -im = Image.open("images/input.heic") # do whatever need with a Pillow image +im = Image.open("image.heic") # do whatever need with a Pillow image im = im.rotate(13) im.save(f"rotated_image.heic", quality=90) ``` @@ -56,7 +53,7 @@ im.save(f"rotated_image.heic", quality=90) import cv2 import pillow_heif -cv_img = cv2.imread("images/jpeg_gif_png/RGBA_16.png", cv2.IMREAD_UNCHANGED) +cv_img = cv2.imread("16bit_with_alpha.png", cv2.IMREAD_UNCHANGED) heif_file = pillow_heif.from_bytes( mode="BGRA;16", size=(cv_img.shape[1], cv_img.shape[0]), @@ -65,28 +62,26 @@ heif_file = pillow_heif.from_bytes( heif_file.save("RGBA_10bit.heic", quality=-1) ``` -### 8/10/12 bit HEIF to 16 bit PNG using OpenCV +### 8/10/12 bit HEIF to 8/16 bit PNG using OpenCV ```python3 import numpy as np import cv2 -import pillow_heif +import pi_heif -heif_file = pillow_heif.open_heif("images/rgb12.heif", convert_hdr_to_8bit=False) -heif_file.convert_to("BGRA;16" if heif_file.has_alpha else "BGR;16") +heif_file = pi_heif.open_heif("image.heic", convert_hdr_to_8bit=False, bgr_mode=True) np_array = np.asarray(heif_file) -cv2.imwrite("rgb16.png", np_array) +cv2.imwrite("image.png", np_array) ``` ### Accessing decoded image data ```python3 import pillow_heif -if pillow_heif.is_supported("images/rgb10.heif"): - heif_file = pillow_heif.open_heif("images/rgb10.heif", convert_hdr_to_8bit=False) +if pillow_heif.is_supported("image.heic"): + heif_file = pillow_heif.open_heif("image.heic", convert_hdr_to_8bit=False) print("image mode:", heif_file.mode) print("image data length:", len(heif_file.data)) print("image data stride:", heif_file.stride) - heif_file.convert_to("RGB;16") # convert 10 bit image to RGB 16 bit. print("image mode:", heif_file.mode) ``` @@ -100,56 +95,6 @@ if pillow_heif.is_supported("input.heic"): np_array = np.asarray(heif_file) ``` -### Adding & Removing thumbnails -```python3 -import pillow_heif - -if pillow_heif.is_supported("input.heic"): - heif_file = pillow_heif.open_heif("input.heic") - pillow_heif.add_thumbnails(heif_file, [768, 512, 256]) # add three new thumbnail boxes. - heif_file.save("output_with_thumbnails.heic") - heif_file.thumbnails.clear() # clear list with thumbnails. - heif_file.save("output_without_thumbnails.heic") -``` - -### (Pillow)Adding & Removing thumbnails -```python3 -from PIL import Image -import pillow_heif - -pillow_heif.register_heif_opener() - -im = Image.open("input.heic") -pillow_heif.add_thumbnails(im, [768, 512, 256]) # add three new thumbnail boxes. -im.save("output_with_thumbnails.heic") -im.info["thumbnails"].clear() # clear list with thumbnails. -im.save("output_without_thumbnails.heic") -``` - -### Using thumbnails when they are present in a file -```python3 -import pillow_heif - -if pillow_heif.is_supported("input.heic"): - heif_file = pillow_heif.open_heif("input.heic") - for img in heif_file: - img = pillow_heif.thumbnail(img) - print(img) # This will be a thumbnail or if thumbnail is not avalaible then an original. -``` - -### (Pillow)Using thumbnails when they are present in a file -```python3 -from PIL import Image, ImageSequence -import pillow_heif - -pillow_heif.register_heif_opener() - -pil_img = Image.open("input.heic") -for img in ImageSequence.Iterator(pil_img): - img = pillow_heif.thumbnail(img) - print(img) # This will be a thumbnail or if thumbnail is not avalaible then an original. -``` - ### AVIF support Working with the `AVIF` files as the same as with the `HEIC` files. Just use a separate function to register plugin: @@ -178,7 +123,7 @@ pillow_heif.register_avif_opener() | **_Wheels table_** | macOS
Intel | macOS
Silicon | Windows
64bit | musllinux* | manylinux* | |--------------------|:---------------:|:-----------------:|:-----------------:|:----------:|:----------:| -| CPython 3.7 | ✅ | N/A | ✅ | ✅ | ✅ | +| CPython 3.7 | ✅ | N/A | ✅ | N/A | ✅ | | CPython 3.8 | ✅ | ✅ | ✅ | ✅ | ✅ | | CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | | CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅ | @@ -188,5 +133,4 @@ pillow_heif.register_avif_opener() * **i686**, **x86_64**, **aarch64** wheels. -For `ARMv7`(`armv7l`) wheels are present for Debian 10+(Ubuntu 20.04+) and Alpine 14+. -They supports only decoding and builds without `x265` encoder. +`ARMv7l`, `PyPy` 32-bit wheels are published only for [pi-heif](https://pypi.org/project/pi-heif/) from `0.10.0` version. diff --git a/ci/cirrus_general_ci.yml b/ci/cirrus_general_ci.yml index 30458d86..b9df5254 100644 --- a/ci/cirrus_general_ci.yml +++ b/ci/cirrus_general_ci.yml @@ -2,8 +2,6 @@ test_src_build_full_macos_arm_task: only_if: "changesInclude( 'ci/cirrus_general_ci.yml', 'libheif/macos/**', - 'libheif/build.py', - 'libheif/public_api.h', 'setup.*', 'pyproject.toml')" @@ -16,7 +14,7 @@ test_src_build_full_macos_arm_task: EXP_PH_LIBHEIF_VERSION: "" install_libheif_script: - - brew uninstall --force --ignore-dependencies imagemagick + - brew uninstall --force --ignore-dependencies imagemagick libheif - brew install --formula ./libheif/macos/libheif.rb install_pillow_heif_script: - python3 -m pip -v install ".[dev]" @@ -30,8 +28,6 @@ test_src_build_lite_macos_arm_task: 'ci/cirrus_general_ci.yml', 'pi-heif/libheif/macos/**', 'pi-heif/setup.cfg', - 'libheif/build.py', - 'libheif/public_api.h', 'setup.py', 'pyproject.toml')" @@ -47,7 +43,7 @@ test_src_build_lite_macos_arm_task: - cp -r -v ./pi-heif/* . - python3 .github/transform_to-pi_heif.py install_libheif_script: - - brew uninstall --force --ignore-dependencies imagemagick x265 aom + - brew uninstall --force --ignore-dependencies imagemagick libheif x265 aom - brew install --formula ./libheif/macos/libheif.rb install_pi_heif_script: - python3 -m pip -v install ".[tests]" diff --git a/docker/from_src/Alpine_3_17.Dockerfile b/docker/from_src/Alpine_3_17.Dockerfile index 6078171a..024430a4 100644 --- a/docker/from_src/Alpine_3_17.Dockerfile +++ b/docker/from_src/Alpine_3_17.Dockerfile @@ -11,8 +11,7 @@ RUN \ nasm \ aom-dev \ py3-numpy \ - py3-pillow \ - py3-cffi + py3-pillow RUN \ python3 -m pip install --upgrade pip diff --git a/docker/manylinux_armv7l_wheel.Dockerfile b/docker/manylinux_armv7l_wheels.Dockerfile similarity index 60% rename from docker/manylinux_armv7l_wheel.Dockerfile rename to docker/manylinux_armv7l_wheels.Dockerfile index 5c7d4324..405297d0 100644 --- a/docker/manylinux_armv7l_wheel.Dockerfile +++ b/docker/manylinux_armv7l_wheels.Dockerfile @@ -1,11 +1,12 @@ -FROM debian:buster-slim +ARG PY_VERSION -COPY . /pillow_heif +FROM python:$PY_VERSION-buster + +COPY . / RUN \ apt-get update && \ apt-get install -y \ - python3-pip \ libfribidi-dev \ libharfbuzz-dev \ libjpeg-dev \ @@ -22,24 +23,23 @@ RUN \ echo "**** Installing patchelf ****" && \ git clone -b 0.17.2 https://github.com/NixOS/patchelf.git && \ cd patchelf && \ - ./bootstrap.sh && ./configure && make && make check && make install && \ + ./bootstrap.sh && ./configure && make && make install && \ cd .. +ARG PY_VERSION RUN \ echo "**** Install python build dependencies ****" && \ - python3 -m pip install --upgrade pip && \ python3 -m pip install wheel && \ - python3 -m pip install pytest cffi Pillow - -RUN \ + python3 -m pip install pytest Pillow && \ echo "**** Start building ****" && \ - cd pillow_heif && \ - python3 setup.py bdist_wheel && \ + export BUILD_DIR="/build_cache" && \ + python3 setup.py bdist_wheel -d dist_manylinux && \ echo "**** Repairing wheel ****" && \ + PTAG=$(echo $PY_VERSION | tr -d '.' | tr -d '"') && \ python3 -m pip install auditwheel && \ - auditwheel repair -w repaired_dist/ dist/*.whl --plat manylinux_2_28_armv7l && \ + python3 -m auditwheel repair -w repaired_dist/ dist_manylinux/*-cp$PTAG-*.whl --plat manylinux_2_28_armv7l && \ echo "**** Testing wheel ****" && \ - python3 -m pip install repaired_dist/*.whl && \ + python3 -m pip install repaired_dist/*-cp$PTAG-*manylinux*.whl && \ python3 -c "import pillow_heif; print(pillow_heif.libheif_info())" && \ export PH_LIGHT_ACTION=1 && \ python3 -m pytest -rs && \ diff --git a/docker/musllinux_armv7l_wheel.Dockerfile b/docker/musllinux_armv7l_wheels.Dockerfile similarity index 60% rename from docker/musllinux_armv7l_wheel.Dockerfile rename to docker/musllinux_armv7l_wheels.Dockerfile index e95f978d..75b5e28a 100644 --- a/docker/musllinux_armv7l_wheel.Dockerfile +++ b/docker/musllinux_armv7l_wheels.Dockerfile @@ -1,11 +1,11 @@ -FROM alpine:3.14 +ARG PY_VERSION -COPY . /pillow_heif +FROM python:$PY_VERSION-alpine3.15 + +COPY . / RUN \ apk add --no-cache \ - py3-pip \ - python3-dev \ libtool \ perl \ alpine-sdk \ @@ -21,24 +21,23 @@ RUN \ echo "**** Installing patchelf ****" && \ git clone -b 0.17.2 https://github.com/NixOS/patchelf.git && \ cd patchelf && \ - ./bootstrap.sh && ./configure && make && make check && make install && \ + ./bootstrap.sh && ./configure && make && make install && \ cd .. +ARG PY_VERSION RUN \ echo "**** Install python build dependencies ****" && \ - python3 -m pip install --upgrade pip && \ python3 -m pip install wheel && \ - python3 -m pip install pytest cffi Pillow - -RUN \ + python3 -m pip install pytest Pillow && \ echo "**** Start building ****" && \ - cd pillow_heif && \ - python3 setup.py bdist_wheel && \ + export BUILD_DIR="/build_cache" && \ + python3 setup.py bdist_wheel -d dist_musllinux && \ echo "**** Repairing wheel ****" && \ + PTAG=$(echo $PY_VERSION | tr -d '.' | tr -d '"') && \ python3 -m pip install auditwheel && \ - auditwheel repair -w repaired_dist/ dist/*.whl && \ + python3 -m auditwheel repair -w repaired_dist/ dist_musllinux/*-cp$PTAG-*.whl && \ echo "**** Testing wheel ****" && \ - python3 -m pip install repaired_dist/*.whl && \ + python3 -m pip install repaired_dist/*-cp$PTAG-*musllinux*.whl && \ python3 -c "import pillow_heif; print(pillow_heif.libheif_info())" && \ export PH_LIGHT_ACTION=1 && \ python3 -m pytest -rs && \ diff --git a/docker/test_wheels.Dockerfile b/docker/test_wheels.Dockerfile index 61f2a671..68ab016c 100644 --- a/docker/test_wheels.Dockerfile +++ b/docker/test_wheels.Dockerfile @@ -8,7 +8,7 @@ RUN $INSTALL_CMD RUN python3 -m pip install --upgrade pip RUN python3 -m pip install --prefer-binary pillow -RUN python3 -m pip install pytest cffi numpy pympler defusedxml +RUN python3 -m pip install pytest numpy pympler defusedxml ARG EX_ARG RUN python3 -m pip install $EX_ARG --no-deps --only-binary=:all: pillow_heif diff --git a/docs/heif-file.rst b/docs/heif-file.rst index add3ef2a..746cf39f 100644 --- a/docs/heif-file.rst +++ b/docs/heif-file.rst @@ -9,9 +9,9 @@ Opening if pillow_heif.is_supported("image.heif"): heif_file = pillow_heif.open_heif("image.heif") -``open_heif`` is preferred over ``read_heif``, it does not decode images immediatly. +``open_heif`` is preferred over ``read_heif``, it does not decode images immediately. All image data supports `lazy loading` and will be automatically decoded when you request it, -e.g. when access to ``data`` or ``stride`` properties occurs. +e.g. when access to ``data`` property occurs. Creating from Pillow -------------------- @@ -20,8 +20,6 @@ Creating from Pillow heif_file = pillow_heif.from_pillow(Image.open("image.gif")): -You can specify ``load_one=True`` if you need to add only one frame from a multi-frame image. - Creating from bytes ------------------- @@ -89,15 +87,6 @@ Remove image at position with index ``0``: del heif_file[0] -Swap image positions --------------------- - -Starting from version `0.3.1` all images are in public list, and you can swap them as usual list elements. - -.. code-block:: python - - heif_file.images[0], heif_file.images[1] = heif_file.images[1], heif_file.images[0] - Saving ------ @@ -107,28 +96,34 @@ Refer to :py:meth:`~pillow_heif.HeifFile.save` to see what additional parameters heif_file.save("output.heif", quality=-1) +.. code-block:: python + + cv_img = cv2.imread("images/non_heif/RGBA_16__128x128.png", cv2.IMREAD_UNCHANGED) + pillow_heif.encode( + mode="BGRA;16", + size=(cv_img.shape[1], cv_img.shape[0]), + data=bytes(cv_img), + fp="RGBA_10bit.heic", + quality=-1) + .. _image_data: Accessing image data -------------------- -Decoded image data from ``libheif`` available throw :py:attr:`~pillow_heif.HeifImage.data` property -with the help of :py:attr:`~pillow_heif.HeifImage.stride` property. +Decoded image data available throw :py:attr:`~pillow_heif.HeifImage.data` property. Accessing `Primary` image in a file: .. code-block:: python - print(len(heif_file.data), heif_file.stride) + print(len(heif_file.data)) -Or you can access each image by index: +Or you can access image by index: .. code-block:: python - print(len(heif_file[0].data), heif_file[0].stride) - -.. note:: Actual size of data returned by ``data`` can be bigger then ``width * height * pixel size``. - Use Numpy array to get decoded data without libheif ``padding`` at each row at the end. + print(len(heif_file[0].data)) Numpy array interface --------------------- @@ -148,5 +143,3 @@ Accessing image by index(for multi-frame images): np_array = np.asarray(heif_file[0]) # accessing image by index. After that you can load it at any library that supports numpy arrays. - -.. note:: You can use ``convert_to`` before getting a numpy array to get it in other format. diff --git a/docs/image-modes.rst b/docs/image-modes.rst index 392d8588..77a40044 100644 --- a/docs/image-modes.rst +++ b/docs/image-modes.rst @@ -3,79 +3,30 @@ Modes ===== -Most of modes are new and supported only from version ``0.4.0`` - -Associated alpha(``a`` modes) supported from version ``0.7.1`` - Possible :py:attr:`~pillow_heif.HeifImage.mode` modes are: * ``BGRA;16`` or ``BGRa;16`` * ``BGR;16`` - * ``RGBA;16``or ``RGBa;16`` + * ``RGBA;16`` or ``RGBa;16`` * ``RGB;16`` * ``L;16`` + * ``LA;16`` * ``I;16`` * ``I;16L`` - * ``BGRA;12`` or ``BGRa;12`` - * ``BGR;12`` - * ``RGBA;12`` (default mode when image is 12 bit with alpha channel) or ``RGBa;12`` - * ``RGB;12`` (default mode when image is 12 bit) - * ``L;12`` - * ``I;12`` - * ``I;12L`` - * ``BGRA;10`` or ``BGRa;10`` - * ``BGR;10`` - * ``RGBA;10`` (default mode when image is 10 bit with alpha channel) or ``RGBa;10`` - * ``RGB;10`` (default mode when image is 10 bit) - * ``L;10`` - * ``I;10`` - * ``I;10L`` * ``BGRA`` or ``BGRa`` * ``BGR`` - * ``RGBA`` (default mode when image is 8 bit with alpha channel) or ``RGBa`` - * ``RGB`` (default mode when image is 8 bit) + * ``RGBA`` or ``RGBa`` + * ``RGB`` + * ``LA`` * ``L`` .. note:: By default ``convert_hdr_to_8bit`` parameter in ``open_heif`` is ``True`` so all images will be opened as a 8 bit ones. + To open images in `BGR` mode, set ``bgr_mode`` to `True` in ``open_heif``. When saving image from `Pillow` to `HEIF` format, next modes will be converted automatically before encoding: - * ``LA`` will be converted to ``RGBA`` * ``P`` with transparency will be converted to ``RGBA`` * ``P`` will be converted to ``RGB`` * ``I`` will be converted to ``I;16L`` * ``1`` will be converted to ``L`` * ``CMYK`` will be converted to ``RGBA`` - -.. _convert_to: - -Mode conversion ---------------- - -.. note:: HEIF standard does not support 16 bit images, see :ref:`saving-16bit` - -For ``HeifImage`` some of these modes can be converted to each other using :py:meth:`~pillow_heif.HeifImage.convert_to` method: - - * ``BGRA;16`` --> ``RGBA;10`` or ``RGBA;12`` - * ``BGR;16`` --> ``RGB;10`` or ``RGB;12`` - * ``RGBA;16`` --> ``RGBA;10``, ``RGBA;12`` or ``RGBA`` - * ``RGB;16`` --> ``RGB;10`` or ``RGB;12`` - * ``L;16`` --> ``L;10`` or ``L;12`` - * ``I;16`` --> ``L;10`` or ``L;12`` - * ``I;16L`` --> ``L;10`` or ``L;12`` - * ``RGBA;12`` --> ``RGBA;16`` or ``BGRA;16`` - * ``RGB;12`` --> ``RGB;16`` or ``BGR;16`` - * ``RGBA;10`` --> ``RGBA;16`` or ``BGRA;16`` - * ``RGB;10`` --> ``RGB;16`` or ``BGR;16`` - * ``BGRA`` --> ``RGBA`` - * ``BGR`` --> ``RGB`` - * ``RGBA`` --> ``BGRA``, ``RGBA;16`` or ``BGRA;16`` - * ``RGB`` --> ``BGR``, ``RGB;16`` or ``BGR;16`` - -Modes with premultiplied Alpha: - * ``BGRa;16`` --> ``RGBa;10`` or ``RGBa;12`` - * ``RGBa;16`` --> ``RGBa;10``, ``RGBa;12`` or ``RGBa`` - * ``RGBa;12`` --> ``RGBa;16`` or ``BGRa;16`` - * ``RGBa;10`` --> ``RGBa;16`` or ``BGRa;16`` - * ``BGRa`` --> ``RGBa`` - * ``RGBa`` --> ``BGRa``, ``RGBa;16`` or ``BGRa;16`` diff --git a/docs/index.rst b/docs/index.rst index 3c2b6d32..0fecf591 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -8,7 +8,8 @@ Pillow-Heif documentation | Pillow-Heif is a library for reading & writing **HEIF** image files. | It can be used as a Pillow's plugin or be used as a standalone. -| As underlying layer it uses `libheif `_ library via `CFFI `_ +| +| As underlying layer it uses `libheif `_ library. .. toctree:: :maxdepth: 1 @@ -19,7 +20,6 @@ Pillow-Heif documentation image-modes.rst options.rst saving-images.rst - thumbnails.rst reference/index.rst workaround-orientation.rst benchmarks.rst diff --git a/docs/installation.rst b/docs/installation.rst index 7d2db74d..80f0ca94 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -14,12 +14,12 @@ Install Pillow-Heif with :command:`pip`:: python3 -m pip install --upgrade pillow-heif -Wheels are present for all systems supported by `cibuildwheel `_ +Wheels are present for most popular systems with help of `cibuildwheel `_ Building From Source -------------------- - All **pillow-heif's** **PyPi** packages are build on GitHub Actions, so you can take a look at `it `_. + All **pillow-heif's** **PyPi** packages are build on GitHub Actions, so you can take a look at `it `_. .. role:: bash(code) :language: bash @@ -38,20 +38,28 @@ Linux how to build from source. There is many different ways how to build it from source. Main requirements are: - * libheif should be version ``1.13``, ``1.14`` or ``1.14.1`` + * ``libheif`` should be version >= ``1.12.0`` version. * ``x265`` should support 10 - 12 bit encoding(if you want to save in that bitness) * ``aom`` should be >= ``3.3.0`` version * ``libde265`` should be >= ``1.0.8`` version -``Ubuntu 22.04`` have all that in their repositories, except ``libheif`` (it has only ``1.12.0`` version): +On `Ubuntu 22.04`: -| :bash:`sudo apt install -y libaom-dev libx265-dev libde265-dev` +| :bash:`sudo apt install -y libheif-dev` -and after that you should build libheif yourself(or run pip install with `root` privileges). +On `Alpine`: -.. note:: Alpine ``3.17`` has libheif ``1.14.0`` version in their repositories. +| :bash:`sudo apk add --no-cache libheif-dev` -If you have questions about custom build from sources you can ask them in discussions or create an issue. +Now install Pillow-Heif with:: + + python3 -m pip install --upgrade pillow-heif --no-binary :all: + +or from within the uncompressed source directory:: + + python3 -m pip install . + +If you have questions about build from sources you can ask them in discussions or create an issue. macOS ^^^^^ @@ -77,7 +85,7 @@ Windows `GA Action to test build on Windows from source `_ .. note:: - | On Windows installation is a bit tricky... + | On Windows, use prebuilt binaries. Installing from source on Windows is tricky. | First install `msys2 `_, if it is not installed. | By default, build script assumes that **msys2** builds libs in :bash:`C:/msys64/mingw64` | You can set **MSYS2_PREFIX** environment variable to your custom path, e.g.: @@ -98,4 +106,4 @@ Now inside Pillow-Heif directory install it with pip from source:: | After that copy **libheif.dll**, **libaom.dll**, **libde265-0.dll**, **libx265.dll**, **libgcc_s_seh-1.dll**, **libstdc++-6.dll** and **libwinpthread-1.dll** from - *msys64\\mingw6\\bin* to python site-packages root. + *msys64\\mingw64\\bin* to python site-packages root. diff --git a/docs/pillow-plugin.rst b/docs/pillow-plugin.rst index be0d8415..4274bbc8 100644 --- a/docs/pillow-plugin.rst +++ b/docs/pillow-plugin.rst @@ -81,8 +81,7 @@ Metadata Available metadata are stored in ``info`` dictionary as in other Pillow plugins. -Those are: -``exif``, ``xmp``, ``metadata`` and ``primary`` +It is the same as in :py:class:`~pillow_heif.HeifImage` class. During saving operation all known metadata in ``info`` dictionary are **saved**. So it can be edited in place. @@ -123,7 +122,7 @@ Edit ``info["exif"]`` field of each copy of image: empty_pillow = Image.new("P", (0, 0)) empty_pillow.save("no_exif.heic", save_all=True, append_images=output_wo_exif) -Or editing ``info["exif"]`` in place(from version `0.3.1`): +Or editing ``info["exif"]`` in place: .. code-block:: python diff --git a/docs/reference/API.rst b/docs/reference/API.rst index c92bc0a1..be4c879e 100644 --- a/docs/reference/API.rst +++ b/docs/reference/API.rst @@ -11,12 +11,7 @@ Opening HEIF file .. autofunction:: read_heif .. autofunction:: from_pillow .. autofunction:: from_bytes - -Thumbnails ----------- - -.. autofunction:: thumbnail -.. autofunction:: add_thumbnails +.. autofunction:: encode Low Level API ------------- diff --git a/docs/reference/HeifImage.rst b/docs/reference/HeifImage.rst index 7f971452..8058dfc2 100644 --- a/docs/reference/HeifImage.rst +++ b/docs/reference/HeifImage.rst @@ -21,9 +21,30 @@ HeifImage object XMP metadata. String in bytes in UTF-8 encoding. Can be `None` .. py:attribute:: info["metadata"] - :type: list + :type: list[dict] - IPTC metadata. Usual will be an empty list. + Other metadata(IPTC for example). List of dictionaries. Usual will be empty. Keys: + + * `type`: str + * `content_type`: str + * `data`: bytes + + .. py:attribute:: info["primary"] + :type: bool + + A boolean value that specifies whether the image is the main image when the file + contains more than one image. + + .. py:attribute:: info["bit_depth"] + :type: int + + Shows the bit-depth of image in file(not the decoded one, so it may differs from bit depth of mode). + Possible values: 8, 10 and 12. + + .. py:attribute:: info["thumbnails"] + :type: list[int] + + List of thumbnail boxes sizes. Can be empty. .. py:attribute:: info["icc_profile"] :type: bytes @@ -38,15 +59,9 @@ HeifImage object .. py:attribute:: info["nclx_profile"] :type: dict - Can be absent. Look at `public_api.h` for struct describing it in ``C`` language. - - .. py:attribute:: info["primary"] - :type: bool - - A boolean value that specifies whether the image is the main image when the file - contains more than one image. - - .. py:attribute:: thumbnails - :type: list + NCLX color profile. Can be absent. Keys: - List of thumbnails(:class:`HeifThumbnail`) present for this image. Can be empty. + * `color_primaries`: :py:class:`HeifColorPrimaries` + * `transfer_characteristics`: :py:class:`HeifTransferCharacteristics` + * `matrix_coefficients`: :py:class:`HeifMatrixCoefficients` + * `full_range_flag`: `bool` diff --git a/docs/reference/HeifImagePlugin.rst b/docs/reference/HeifImagePlugin.rst index 111d417f..a62dfa80 100644 --- a/docs/reference/HeifImagePlugin.rst +++ b/docs/reference/HeifImagePlugin.rst @@ -22,7 +22,7 @@ HeifImageFile object They are the same as in :py:class:`~pillow_heif.HeifImage` class. Specific keys for this plugin that is always present are: - exif, xmp, metadata, thumbnails, primary + exif, xmp, metadata, primary, bit_depth, thumbnails Optional there can be also such keys: icc_profile, icc_profile_type, nclx_profile diff --git a/docs/reference/constants.rst b/docs/reference/constants.rst index bca5eae6..86cae6a2 100644 --- a/docs/reference/constants.rst +++ b/docs/reference/constants.rst @@ -3,5 +3,11 @@ Constants --------- -.. autoclass:: HeifErrorCode +.. autoclass:: HeifColorPrimaries + :members: + +.. autoclass:: HeifTransferCharacteristics + :members: + +.. autoclass:: HeifMatrixCoefficients :members: diff --git a/docs/reference/exceptions.rst b/docs/reference/exceptions.rst deleted file mode 100644 index 138b97f3..00000000 --- a/docs/reference/exceptions.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. py:currentmodule:: pillow_heif - -HeifError exception -=================== - -.. autoexception:: HeifError - :show-inheritance: - - .. py:attribute:: code - - Value from :class:`HeifErrorCode` - - .. py:attribute:: message - - Error's string description diff --git a/docs/reference/index.rst b/docs/reference/index.rst index 643238e0..b6cc3023 100644 --- a/docs/reference/index.rst +++ b/docs/reference/index.rst @@ -8,8 +8,5 @@ Reference API HeifFile HeifImage - thumbnails - exceptions constants - internal links diff --git a/docs/reference/internal.rst b/docs/reference/internal.rst deleted file mode 100644 index 602b45c6..00000000 --- a/docs/reference/internal.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. py:module:: pillow_heif._libheif_ctx - -Internal -======== - -HeifImageBase class -------------------- - -.. autoclass:: pillow_heif.heif.HeifImageBase - :members: - -LibHeifCtx object ------------------ - -.. autoclass:: LibHeifCtx - -LibHeifCtxWrite object ----------------------- - -.. autoclass:: LibHeifCtxWrite - -HeifCtxAsDict object --------------------- - -.. autoclass:: pillow_heif.private.HeifCtxAsDict diff --git a/docs/reference/thumbnails.rst b/docs/reference/thumbnails.rst deleted file mode 100644 index da1dfe40..00000000 --- a/docs/reference/thumbnails.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. py:currentmodule:: pillow_heif - -HeifThumbnail object -==================== - -.. note:: If you disable thumbnails they will be not saved during encoding even if they are present in source image. - See :ref:`using-thumbnails` for additional info. - -.. autoclass:: pillow_heif.HeifThumbnail - :show-inheritance: - :inherited-members: - :members: diff --git a/docs/saving-images.rst b/docs/saving-images.rst index ad0563f6..bf97f5b6 100644 --- a/docs/saving-images.rst +++ b/docs/saving-images.rst @@ -30,14 +30,15 @@ Saving 16 bit images All 16 bit images that was created with: -* :py:meth:`~pillow_heif.HeifImage.convert_to` * :py:meth:`~pillow_heif.HeifFile.add_from_pillow` * :py:meth:`~pillow_heif.HeifFile.add_frombytes` * or images opened in ``I`` Pillow modes when using as a Pillow plugin Will be saved by default in 10 bit mode. -To ``save`` 16 bit image in 12 bit for you can convert it to 12 bit before saving or set ``options().save_to_12bit`` to ``True``. +To ``save`` 16 bit image in 12 bit set ``options().save_to_12bit`` to ``True``. + +Images opened from file will be saved based on ``info["bit_depth"]`` value if it is present. .. _order-of-images: @@ -46,9 +47,6 @@ Order Of Images All information here is only for files that has multiply images and when first image in file is not a `PrimaryImage` -There was a slightly different behaviour in 0.2.x versions and 0.3.0 - 0.4.0 versions. -Starting from version `0.5.0` ``pillow-heif`` in both ``Pillow`` and ``stand alone`` mode works the same way. - Lets imagine that we have file with 3 images and second image in file is a primary image. .. code-block:: python diff --git a/docs/thumbnails.rst b/docs/thumbnails.rst deleted file mode 100644 index 32d32926..00000000 --- a/docs/thumbnails.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. py:currentmodule:: pillow_heif - -.. _using-thumbnails: - -Using thumbnails -================ - -Available from version ``0.5.0`` - -Many HEIF files has in-built thumbnails. It is much faster to decode thumbnail that has lesser size then original. - -For easy access for that you can use :py:func:`~pillow_heif.thumbnail` - -.. code-block:: python - - heif_file = pillow_heif.open_heif("input.heic") - heif_image = pillow_heif.thumbnail(heif_file) - print(heif_image.size, heif_image.mode, len(heif_image.data), heif_image.stride) - -Or as a Pillow plugin: - -.. code-block:: python - - pil_img = Image.open("input.heic") - img = pillow_heif.thumbnail(pil_img) - img.show() - -.. note:: For Pillow: image should not be already loaded. - Who need thumbnail if an original was already decoded? - -Function :py:func:`~pillow_heif.thumbnail` has an optional parameter ``min_box``, -so you can specify minimal size of thumbnail you interested in. -Images that come from iPhone usual has thumbnails with 512 box size. - -Adding thumbnails -""""""""""""""""" - -For adding thumbnails use :py:func:`~pillow_heif.add_thumbnails`. - -It accepts both ``HeifImage`` or ``PIL.Image.Image`` and also can accept ``HeifFile`` - -When input is a ``HeifFile`` it will add thumbnails to all images in that file. - -When you adding thumbnails, if image has already such thumbnails sizes they wil be skipped. - -There is two examples for adding thumbnails in `examples` folder. - -Removing thumbnails -""""""""""""""""""" - -For Pillow you can clear list with thumbnails: - -.. code-block:: python - - im.info["thumbnails"].clear() - -For ``HeifFile`` or ``HeifImage``: - -.. code-block:: python - - im.thumbnails.clear() - -Or use ``del im.info["thumbnails"][index]`` for ``Pillow`` -and ``del im.thumbnails[index]`` for ``HeifImage`` to remove only one thumbnail. diff --git a/docs/workaround-orientation.rst b/docs/workaround-orientation.rst index db2429c4..3843e708 100644 --- a/docs/workaround-orientation.rst +++ b/docs/workaround-orientation.rst @@ -40,13 +40,14 @@ Q. So is there a decision? The best one and simplest solution is to `remove it `_. -So we set ``orientation`` to ``1`` in :py:meth:`~pillow_heif.HeifFile.add_from_pillow` to remove orientation, -and then using ``Pillow`` method ``ImageOps.exif_transpose`` we rotate it before adding it to HEIF. +So we set ``orientation`` to ``1`` in +:py:meth:`~pillow_heif.HeifFile.add_from_pillow` (or during encoding `Pillow.Image`) to remove EXIF/XMP orientation tag +and rotate the image according to the removed tag. That allow us to properly handle situations when JPEG or PNG with orientation get encoded to HEIF. -To properly handle HEIF images with rotation tag in Exif, in Pillow plugin we do the same during image open, by calling -:py:func:`~pillow_heif.set_orientation` function. +To properly handle HEIF images with rotation tag in Exif/XMP, in Pillow plugin we do the same during image open, +by calling :py:func:`~pillow_heif.set_orientation` function. .. note:: When using :py:func:`~pillow_heif.open_heif` and :py:meth:`~pillow_heif.HeifFile.add_from_heif` functions orientation tag will not be get reset automatically. @@ -56,10 +57,4 @@ Here is list of functions and method that resets orientations automatically: * :py:meth:`pillow_heif.HeifFile.add_from_pillow` * :py:meth:`pillow_heif.HeifImage.to_pillow` * :py:class:`pillow_heif.HeifImageFile` *Pillow plugin class* - -Q. What about XMP orientation tag? -"""""""""""""""""""""""""""""""""" - -In version 0.2.4 implemented removing of XMP tag, almost the same tech as for EXIF tag. - -It was done by adding code to :py:func:`~pillow_heif.set_orientation` function, so the same rules will be applied. + * :py:class:`pillow_heif.AvifImageFile` *Pillow plugin class* diff --git a/libheif/build.py b/libheif/build.py deleted file mode 100644 index 323ef728..00000000 --- a/libheif/build.py +++ /dev/null @@ -1,82 +0,0 @@ -import sys -from os import getenv, path -from pathlib import Path -from re import sub -from shutil import copy -from subprocess import DEVNULL, PIPE, run -from warnings import warn - -from cffi import FFI - -from libheif import linux_build_libs - -ffi = FFI() -with open("libheif/public_api.h", "r", encoding="utf-8") as f: - libheif_definitions = f.read() - if getenv("READTHEDOCS", "False") == "True": - # As ReadTheDocs has pre-installed libheif.so and we do not have root privileges to uninstall it - # remove lines from `public_api.h` with `REMOVE_FOR_RTD` string. - libheif_definitions = sub(r".*REMOVE_FOR_RTD\n?", "", libheif_definitions) - ffi.cdef(libheif_definitions) - -ffi.cdef( - """ - extern "Python" struct heif_error callback_write(struct heif_context*, const void*, size_t, void*); -""" -) - -with open("pillow_heif/helpers.h", "r", encoding="utf-8") as f: - ffi.cdef(f.read()) - - -include_dirs = ["/usr/local/include", "/usr/include"] -library_dirs = ["/usr/local/lib", "/usr/lib64", "/usr/lib", "/lib"] - -include_path_prefix = "" -insert = False -if sys.platform.lower() == "darwin": - include_path_prefix = getenv("HOMEBREW_PREFIX") - if not include_path_prefix: - _result = run(["brew", "--prefix"], stderr=DEVNULL, stdout=PIPE, check=False) - if not _result.returncode and _result.stdout is not None: - include_path_prefix = _result.stdout.decode("utf-8").rstrip("\n") - if not include_path_prefix: - include_path_prefix = "/opt/local" -elif sys.platform.lower() == "win32": - include_path_prefix = getenv("MSYS2_PREFIX") - if include_path_prefix is None: - include_path_prefix = "C:\\msys64\\mingw64" - warn(f"MSYS2_PREFIX environment variable is not set. Assuming `MSYS2_PREFIX={include_path_prefix}`") -else: - include_path_prefix = linux_build_libs.build_libs() - -# Need to include "lib" directory to find "heif" library. -include_path_prefix_lib = path.join(include_path_prefix, "lib") -if include_path_prefix_lib not in library_dirs: - library_dirs.append(include_path_prefix_lib) - -# MSYS2: rename "libheif.dll.a" to "libheif.lib" -if sys.platform.lower() == "win32": - lib_export_file = Path(path.join(include_path_prefix_lib, "libheif.dll.a")) - if lib_export_file.is_file(): - copy(lib_export_file, path.join(include_path_prefix_lib, "libheif.lib")) - else: - warn("If you build this with MSYS2, you should not see this warning.") - -# Adds project root to `include` path -include_dirs.append(path.dirname(path.dirname(path.abspath(__file__)))) - -ffi.set_source( - "_pillow_heif_cffi", - r""" - #include "libheif/public_api.h" - #include "pillow_heif/helpers.c" - """, - include_dirs=include_dirs, - library_dirs=library_dirs, - libraries=["libheif"] if sys.platform.lower() == "win32" else ["heif"], - extra_compile_args=["/d2FH4-"] if sys.platform.lower() == "win32" else [], -) - -if __name__ == "__main__": - ffi.compile(verbose=True) diff --git a/libheif/public_api.h b/libheif/heif.h similarity index 69% rename from libheif/public_api.h rename to libheif/heif.h index 6531a952..a45af23f 100644 --- a/libheif/public_api.h +++ b/libheif/heif.h @@ -1,4 +1,6 @@ // original: https://github.com/strukturag/libheif/blob/master/libheif/heif.h +// This file is used for building on Windows. + /* * HEIF codec. * Copyright (c) 2017 struktur AG, Dirk Farin @@ -19,7 +21,19 @@ * along with libheif. If not, see . */ -/* +#ifndef LIBHEIF_HEIF_H +#define LIBHEIF_HEIF_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +//#include +#define LIBHEIF_NUMERIC_VERSION ((1<<24) | (15<<16) | (1<<8) | 0) + // API versions table // // release depth.rep dec.options enc.options heif_reader heif_writer col.profile @@ -34,21 +48,47 @@ // 1.11 1 2 4 1 1 1 // 1.13 1 3 4 1 1 1 // 1.14 1 3 5 1 1 1 -*/ +// 1.15 1 4 5 1 1 1 + +#if defined(_MSC_VER) && !defined(LIBHEIF_STATIC_BUILD) +#ifdef LIBHEIF_EXPORTS +#define LIBHEIF_API __declspec(dllexport) +#else +#define LIBHEIF_API __declspec(dllimport) +#endif +#elif defined(HAVE_VISIBILITY) && HAVE_VISIBILITY +#ifdef LIBHEIF_EXPORTS +#define LIBHEIF_API __attribute__((__visibility__("default"))) +#else +#define LIBHEIF_API +#endif +#else +#define LIBHEIF_API +#endif + +#define heif_fourcc(a, b, c, d) ((a<<24) | (b<<16) | (c<<8) | d) + /* === version numbers === */ // Version string of linked libheif library. -const char* heif_get_version(void); -// Numeric version of linked libheif library, encoded as 0xHHMMLL00 = HH.MM.LL. -uint32_t heif_get_version_number(void); +LIBHEIF_API const char* heif_get_version(void); + +// Numeric version of linked libheif library, encoded as BCD 0xHHMMLL00 = HH.MM.LL. +// For example: 0x02143000 is version 2.14.30 +LIBHEIF_API uint32_t heif_get_version_number(void); -// Numeric part "HH" from above. -int heif_get_version_number_major(void); -// Numeric part "MM" from above. -int heif_get_version_number_minor(void); -// Numeric part "LL" from above. -int heif_get_version_number_maintenance(void); +// Numeric part "HH" from above. Returned as a decimal number (not BCD). +LIBHEIF_API int heif_get_version_number_major(void); +// Numeric part "MM" from above. Returned as a decimal number (not BCD). +LIBHEIF_API int heif_get_version_number_minor(void); +// Numeric part "LL" from above. Returned as a decimal number (not BCD). +LIBHEIF_API int heif_get_version_number_maintenance(void); + +// Helper macros to check for given versions of libheif at compile time. +// Note: h, m, l should be 2-digit BCD numbers. I.e., decimal 17 = 0x17 (BCD) +#define LIBHEIF_MAKE_VERSION(h, m, l) ((h) << 24 | (m) << 16 | (l) << 8) +#define LIBHEIF_HAVE_VERSION(h, m, l) (LIBHEIF_NUMERIC_VERSION >= LIBHEIF_MAKE_VERSION(h, m, l)) struct heif_context; struct heif_image_handle; @@ -252,6 +292,7 @@ enum heif_suberror_code heif_suberror_Cannot_read_plugin_directory = 6002 // error while scanning the directory for plugins }; + struct heif_error { // main error category @@ -267,6 +308,157 @@ struct heif_error typedef uint32_t heif_item_id; + + +// ========================= library initialization ====================== + +// You should call heif_init() when you start using libheif and heif_deinit() when you are finished. +// These calls are reference counted. Each call to heif_init() should be matched by one call to heif_deinit(). +// For backwards compatibility, it is not really necessary to call heif_init(), but if you don't, the plugins +// registered by default may not be freed correctly. +// However, this should not be mixed, i.e. one part of your program does use heif_init()/heif_deinit() and another doesn't. +// If in doubt, enclose everything with init/deinit. + +struct heif_init_params +{ + int version; + + // currently no parameters +}; + + +// You may pass nullptr to get default parameters. Currently, no parameters are supported. +LIBHEIF_API +struct heif_error heif_init(struct heif_init_params*); + +LIBHEIF_API +void heif_deinit(); + + +// --- Plugins are currently only supported on Unix platforms. + +enum heif_plugin_type +{ + heif_plugin_type_encoder, + heif_plugin_type_decoder +}; + +struct heif_plugin_info +{ + int version; // version of this info struct + enum heif_plugin_type type; + const void* plugin; + void* internal_handle; // for internal use only +}; + +LIBHEIF_API +struct heif_error heif_load_plugin(const char* filename, struct heif_plugin_info const** out_plugin); + +LIBHEIF_API +struct heif_error heif_load_plugins(const char* directory, + const struct heif_plugin_info** out_plugins, + int* out_nPluginsLoaded, + int output_array_size); + +LIBHEIF_API +struct heif_error heif_unload_plugin(const struct heif_plugin_info* plugin); + + +// ========================= file type check ====================== + +enum heif_filetype_result +{ + heif_filetype_no, + heif_filetype_yes_supported, // it is heif and can be read by libheif + heif_filetype_yes_unsupported, // it is heif, but cannot be read by libheif + heif_filetype_maybe // not sure whether it is an heif, try detection with more input data +}; + +// input data should be at least 12 bytes +LIBHEIF_API +enum heif_filetype_result heif_check_filetype(const uint8_t* data, int len); + +LIBHEIF_API +int heif_check_jpeg_filetype(const uint8_t* data, int len); + + +// DEPRECATED, use heif_brand2 instead +enum heif_brand +{ + heif_unknown_brand, + heif_heic, // HEIF image with h265 + heif_heix, // 10bit images, or anything that uses h265 with range extension + heif_hevc, heif_hevx, // brands for image sequences + heif_heim, // multiview + heif_heis, // scalable + heif_hevm, // multiview sequence + heif_hevs, // scalable sequence + heif_mif1, // image, any coding algorithm + heif_msf1, // sequence, any coding algorithm + heif_avif, // HEIF image with AV1 + heif_avis, + heif_vvic, // VVC image + heif_vvis, // VVC sequence + heif_evbi, // EVC image + heif_evbs, // EVC sequence +}; + +// input data should be at least 12 bytes +// DEPRECATED, use heif_read_main_brand() instead +LIBHEIF_API +enum heif_brand heif_main_brand(const uint8_t* data, int len); + + +typedef uint32_t heif_brand2; + +// input data should be at least 12 bytes +LIBHEIF_API +heif_brand2 heif_read_main_brand(const uint8_t* data, int len); + +// 'brand_fourcc' must be 4 character long, but need not be 0-terminated +LIBHEIF_API +heif_brand2 heif_fourcc_to_brand(const char* brand_fourcc); + +// the output buffer must be at least 4 bytes long +LIBHEIF_API +void heif_brand_to_fourcc(heif_brand2 brand, char* out_fourcc); + +// 'brand_fourcc' must be 4 character long, but need not be 0-terminated +// returns 1 if file includes the brand, and 0 if it does not +// returns -1 if the provided data is not sufficient +// (you should input at least as many bytes as indicated in the first 4 bytes of the file, usually ~50 bytes will do) +// returns -2 on other errors +LIBHEIF_API +int heif_has_compatible_brand(const uint8_t* data, int len, const char* brand_fourcc); + +// Returns an array of compatible brands. The array is allocated by this function and has to be freed with 'heif_free_list_of_compatible_brands()'. +// The number of entries is returned in out_size. +LIBHEIF_API +struct heif_error heif_list_compatible_brands(const uint8_t* data, int len, heif_brand2** out_brands, int* out_size); + +LIBHEIF_API +void heif_free_list_of_compatible_brands(heif_brand2* brands_list); + + +// Returns one of these MIME types: +// - image/heic HEIF file using h265 compression +// - image/heif HEIF file using any other compression +// - image/heic-sequence HEIF image sequence using h265 compression +// - image/heif-sequence HEIF image sequence using any other compression +// - image/jpeg JPEG image +// - image/png PNG image +// If the format could not be detected, an empty string is returned. +// +// Provide at least 12 bytes of input. With less input, its format might not +// be detected. You may also provide more input to increase detection accuracy. +// +// Note that JPEG and PNG images cannot be decoded by libheif even though the +// formats are detected by this function. +LIBHEIF_API +const char* heif_get_file_mime_type(const uint8_t* data, int len); + + + // ========================= heif_context ========================= // A heif_context represents a HEIF file that has been read. // In the future, you will also be able to add pictures to a heif_context @@ -275,41 +467,106 @@ typedef uint32_t heif_item_id; // Allocate a new context for reading HEIF files. // Has to be freed again with heif_context_free(). +LIBHEIF_API struct heif_context* heif_context_alloc(void); // Free a previously allocated HEIF context. You should not free a context twice. +LIBHEIF_API void heif_context_free(struct heif_context*); struct heif_reading_options; +enum heif_reader_grow_status +{ + heif_reader_grow_status_size_reached, // requested size has been reached, we can read until this point + heif_reader_grow_status_timeout, // size has not been reached yet, but it may still grow further + heif_reader_grow_status_size_beyond_eof // size has not been reached and never will. The file has grown to its full size +}; + +struct heif_reader +{ + // API version supported by this reader + int reader_api_version; + + // --- version 1 functions --- + int64_t (* get_position)(void* userdata); + + // The functions read(), and seek() return 0 on success. + // Generally, libheif will make sure that we do not read past the file size. + int (* read)(void* data, + size_t size, + void* userdata); + + int (* seek)(int64_t position, + void* userdata); + + // When calling this function, libheif wants to make sure that it can read the file + // up to 'target_size'. This is useful when the file is currently downloaded and may + // grow with time. You may, for example, extract the image sizes even before the actual + // compressed image data has been completely downloaded. + // + // Even if your input files will not grow, you will have to implement at least + // detection whether the target_size is above the (fixed) file length + // (in this case, return 'size_beyond_eof'). + enum heif_reader_grow_status (* wait_for_file_size)(int64_t target_size, void* userdata); +}; + + +// Read a HEIF file from a named disk file. +// The heif_reading_options should currently be set to NULL. +LIBHEIF_API +struct heif_error heif_context_read_from_file(struct heif_context*, const char* filename, + const struct heif_reading_options*); + +// Read a HEIF file stored completely in memory. +// The heif_reading_options should currently be set to NULL. +// DEPRECATED: use heif_context_read_from_memory_without_copy() instead. +LIBHEIF_API +struct heif_error heif_context_read_from_memory(struct heif_context*, + const void* mem, size_t size, + const struct heif_reading_options*); + // Same as heif_context_read_from_memory() except that the provided memory is not copied. // That means, you will have to keep the memory area alive as long as you use the heif_context. +LIBHEIF_API struct heif_error heif_context_read_from_memory_without_copy(struct heif_context*, const void* mem, size_t size, const struct heif_reading_options*); +LIBHEIF_API +struct heif_error heif_context_read_from_reader(struct heif_context*, + const struct heif_reader* reader, + void* userdata, + const struct heif_reading_options*); + // Number of top-level images in the HEIF file. This does not include the thumbnails or the // tile images that are composed to an image grid. You can get access to the thumbnails via // the main image handle. +LIBHEIF_API int heif_context_get_number_of_top_level_images(struct heif_context* ctx); +LIBHEIF_API int heif_context_is_top_level_image_ID(struct heif_context* ctx, heif_item_id id); // Fills in image IDs into the user-supplied int-array 'ID_array', preallocated with 'count' entries. // Function returns the total number of IDs filled into the array. +LIBHEIF_API int heif_context_get_list_of_top_level_image_IDs(struct heif_context* ctx, heif_item_id* ID_array, int count); +LIBHEIF_API struct heif_error heif_context_get_primary_image_ID(struct heif_context* ctx, heif_item_id* id); // Get a handle to the primary image of the HEIF file. // This is the image that should be displayed primarily when there are several images in the file. +LIBHEIF_API struct heif_error heif_context_get_primary_image_handle(struct heif_context* ctx, struct heif_image_handle**); // Get the handle for a specific top-level image from an image ID. +LIBHEIF_API struct heif_error heif_context_get_image_handle(struct heif_context* ctx, heif_item_id id, struct heif_image_handle**); @@ -317,13 +574,20 @@ struct heif_error heif_context_get_image_handle(struct heif_context* ctx, // Print information about the boxes of a HEIF file to file descriptor. // This is for debugging and informational purposes only. You should not rely on // the output having a specific format. At best, you should not use this at all. +LIBHEIF_API void heif_context_debug_dump_boxes_to_file(struct heif_context* ctx, int fd); +LIBHEIF_API void heif_context_set_maximum_image_size_limit(struct heif_context* ctx, int maximum_width); - -void heif_context_set_max_decoding_threads(struct heif_context* ctx, int max_threads); //REMOVE_FOR_RTD +// If the maximum threads number is set to 0, the image tiles are decoded in the main thread. +// This is different from setting it to 1, which will generate a single background thread to decode the tiles. +// Note that this setting only affects libheif itself. The codecs itself may still use multi-threaded decoding. +// You can use it, for example, in cases where you are decoding several images in parallel anyway you thus want +// to minimize parallelism in each decoder. +LIBHEIF_API +void heif_context_set_max_decoding_threads(struct heif_context* ctx, int max_threads); // ========================= heif_image_handle ========================= @@ -337,43 +601,57 @@ void heif_context_set_max_decoding_threads(struct heif_context* ctx, int max_thr // since it is internally ref-counted. // Release image handle. +LIBHEIF_API void heif_image_handle_release(const struct heif_image_handle*); // Check whether the given image_handle is the primary image of the file. +LIBHEIF_API int heif_image_handle_is_primary_image(const struct heif_image_handle* handle); // Get the resolution of an image. +LIBHEIF_API int heif_image_handle_get_width(const struct heif_image_handle* handle); +LIBHEIF_API int heif_image_handle_get_height(const struct heif_image_handle* handle); +LIBHEIF_API int heif_image_handle_has_alpha_channel(const struct heif_image_handle*); +LIBHEIF_API int heif_image_handle_is_premultiplied_alpha(const struct heif_image_handle*); // Returns -1 on error, e.g. if this information is not present in the image. +LIBHEIF_API int heif_image_handle_get_luma_bits_per_pixel(const struct heif_image_handle*); // Returns -1 on error, e.g. if this information is not present in the image. +LIBHEIF_API int heif_image_handle_get_chroma_bits_per_pixel(const struct heif_image_handle*); // Get the image width from the 'ispe' box. This is the original image size without // any transformations applied to it. Do not use this unless you know exactly what // you are doing. +LIBHEIF_API int heif_image_handle_get_ispe_width(const struct heif_image_handle* handle); +LIBHEIF_API int heif_image_handle_get_ispe_height(const struct heif_image_handle* handle); // ------------------------- depth images ------------------------- +LIBHEIF_API int heif_image_handle_has_depth_image(const struct heif_image_handle*); +LIBHEIF_API int heif_image_handle_get_number_of_depth_images(const struct heif_image_handle* handle); +LIBHEIF_API int heif_image_handle_get_list_of_depth_image_IDs(const struct heif_image_handle* handle, heif_item_id* ids, int count); +LIBHEIF_API struct heif_error heif_image_handle_get_depth_image_handle(const struct heif_image_handle* handle, heif_item_id depth_image_id, struct heif_image_handle** out_depth_handle); @@ -413,6 +691,7 @@ struct heif_depth_representation_info }; +LIBHEIF_API void heif_depth_representation_info_free(const struct heif_depth_representation_info* info); // Returns true when there is depth_representation_info available @@ -420,6 +699,7 @@ void heif_depth_representation_info_free(const struct heif_depth_representation_ // you should still provide the correct ID for future compatibility. // Note 2: Because of an API bug before v1.11.0, the function also works when 'handle' is the handle of the depth image. // However, you should pass the handle of the main image. Please adapt your code if needed. +LIBHEIF_API int heif_image_handle_get_depth_image_representation_info(const struct heif_image_handle* handle, heif_item_id depth_image_id, const struct heif_depth_representation_info** out); @@ -429,12 +709,15 @@ int heif_image_handle_get_depth_image_representation_info(const struct heif_imag // ------------------------- thumbnails ------------------------- // List the number of thumbnails assigned to this image handle. Usually 0 or 1. +LIBHEIF_API int heif_image_handle_get_number_of_thumbnails(const struct heif_image_handle* handle); +LIBHEIF_API int heif_image_handle_get_list_of_thumbnail_IDs(const struct heif_image_handle* handle, heif_item_id* ids, int count); // Get the image handle of a thumbnail image. +LIBHEIF_API struct heif_error heif_image_handle_get_thumbnail(const struct heif_image_handle* main_image_handle, heif_item_id thumbnail_id, struct heif_image_handle** out_thumbnail_handle); @@ -442,25 +725,30 @@ struct heif_error heif_image_handle_get_thumbnail(const struct heif_image_handle // ------------------------- auxiliary images ------------------------- -//#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_ALPHA (1UL<<1) -//#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_DEPTH (2UL<<1) +#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_ALPHA (1UL<<1) +#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_DEPTH (2UL<<1) // List the number of auxiliary images assigned to this image handle. +LIBHEIF_API int heif_image_handle_get_number_of_auxiliary_images(const struct heif_image_handle* handle, int aux_filter); +LIBHEIF_API int heif_image_handle_get_list_of_auxiliary_image_IDs(const struct heif_image_handle* handle, int aux_filter, heif_item_id* ids, int count); // You are responsible to deallocate the returned buffer with heif_image_handle_free_auxiliary_types(). +LIBHEIF_API struct heif_error heif_image_handle_get_auxiliary_type(const struct heif_image_handle* handle, const char** out_type); +LIBHEIF_API void heif_image_handle_free_auxiliary_types(const struct heif_image_handle* handle, const char** out_type); // Get the image handle of an auxiliary image. +LIBHEIF_API struct heif_error heif_image_handle_get_auxiliary_image_handle(const struct heif_image_handle* main_image_handle, heif_item_id auxiliary_id, struct heif_image_handle** out_auxiliary_handle); @@ -470,11 +758,13 @@ struct heif_error heif_image_handle_get_auxiliary_image_handle(const struct heif // How many metadata blocks are attached to an image. If you only want to get EXIF data, // set the type_filter to "Exif". Otherwise, set the type_filter to NULL. +LIBHEIF_API int heif_image_handle_get_number_of_metadata_blocks(const struct heif_image_handle* handle, const char* type_filter); // 'type_filter' can be used to get only metadata of specific types, like "Exif". // If 'type_filter' is NULL, it will return all types of metadata IDs. +LIBHEIF_API int heif_image_handle_get_list_of_metadata_block_IDs(const struct heif_image_handle* handle, const char* type_filter, heif_item_id* ids, int count); @@ -483,15 +773,18 @@ int heif_image_handle_get_list_of_metadata_block_IDs(const struct heif_image_han // Exif data will have the type string "Exif". // This string will be valid until the next call to a libheif function. // You do not have to free this string. +LIBHEIF_API const char* heif_image_handle_get_metadata_type(const struct heif_image_handle* handle, heif_item_id metadata_id); // For EXIF, the content type is empty. // For XMP, the content type is "application/rdf+xml". +LIBHEIF_API const char* heif_image_handle_get_metadata_content_type(const struct heif_image_handle* handle, heif_item_id metadata_id); // Get the size of the raw metadata, as stored in the HEIF file. +LIBHEIF_API size_t heif_image_handle_get_metadata_size(const struct heif_image_handle* handle, heif_item_id metadata_id); @@ -499,29 +792,33 @@ size_t heif_image_handle_get_metadata_size(const struct heif_image_handle* handl // The data is returned exactly as stored in the HEIF file. // For Exif data, you probably have to skip the first four bytes of the data, since they // indicate the offset to the start of the TIFF header of the Exif data. +LIBHEIF_API struct heif_error heif_image_handle_get_metadata(const struct heif_image_handle* handle, heif_item_id metadata_id, void* out_data); -enum heif_color_profile_type // Do not use this in Python directly, LO/HO byte order can differ. +enum heif_color_profile_type { heif_color_profile_type_not_present = 0, - heif_color_profile_type_nclx = 0x6E636C78, // nclx -> "xlcn" - heif_color_profile_type_rICC = 0x72494343, // rICC -> "CCIr" - heif_color_profile_type_prof = 0x70726F66 // prof -> "forp" + heif_color_profile_type_nclx = heif_fourcc('n', 'c', 'l', 'x'), + heif_color_profile_type_rICC = heif_fourcc('r', 'I', 'C', 'C'), + heif_color_profile_type_prof = heif_fourcc('p', 'r', 'o', 'f') }; // Returns 'heif_color_profile_type_not_present' if there is no color profile. // If there is an ICC profile and an NCLX profile, the ICC profile is returned. -// TODO: we need a new API for this function as images can contain both NCLX and ICC at the same time. +// TO-DO: we need a new API for this function as images can contain both NCLX and ICC at the same time. // However, you can still use heif_image_handle_get_raw_color_profile() and // heif_image_handle_get_nclx_color_profile() to access both profiles. +LIBHEIF_API enum heif_color_profile_type heif_image_handle_get_color_profile_type(const struct heif_image_handle* handle); +LIBHEIF_API size_t heif_image_handle_get_raw_color_profile_size(const struct heif_image_handle* handle); // Returns 'heif_error_Color_profile_does_not_exist' when there is no ICC profile. +LIBHEIF_API struct heif_error heif_image_handle_get_raw_color_profile(const struct heif_image_handle* handle, void* out_data); @@ -566,11 +863,11 @@ enum heif_transfer_characteristics enum heif_matrix_coefficients { heif_matrix_coefficients_RGB_GBR = 0, - heif_matrix_coefficients_ITU_R_BT_709_5 = 1, // TODO: or 709-6 according to h.273 + heif_matrix_coefficients_ITU_R_BT_709_5 = 1, // TO-DO: or 709-6 according to h.273 heif_matrix_coefficients_unspecified = 2, heif_matrix_coefficients_US_FCC_T47 = 4, heif_matrix_coefficients_ITU_R_BT_470_6_System_B_G = 5, - heif_matrix_coefficients_ITU_R_BT_601_6 = 6, // TODO: or 601-7 according to h.273 + heif_matrix_coefficients_ITU_R_BT_601_6 = 6, // TO-DO: or 601-7 according to h.273 heif_matrix_coefficients_SMPTE_240M = 7, heif_matrix_coefficients_YCgCo = 8, heif_matrix_coefficients_ITU_R_BT_2020_2_non_constant_luminance = 9, @@ -600,33 +897,43 @@ struct heif_color_profile_nclx float color_primary_white_x, color_primary_white_y; }; -//struct heif_error heif_nclx_color_profile_set_color_primaries(struct heif_color_profile_nclx* nclx, uint16_t cp); -// -//struct heif_error heif_nclx_color_profile_set_transfer_characteristics(struct heif_color_profile_nclx* nclx, uint16_t transfer_characteristics); -// -//struct heif_error heif_nclx_color_profile_set_matrix_coefficients(struct heif_color_profile_nclx* nclx, uint16_t matrix_coefficients); +LIBHEIF_API +struct heif_error heif_nclx_color_profile_set_color_primaries(struct heif_color_profile_nclx* nclx, uint16_t cp); + +LIBHEIF_API +struct heif_error heif_nclx_color_profile_set_transfer_characteristics(struct heif_color_profile_nclx* nclx, uint16_t transfer_characteristics); + +LIBHEIF_API +struct heif_error heif_nclx_color_profile_set_matrix_coefficients(struct heif_color_profile_nclx* nclx, uint16_t matrix_coefficients); // Returns 'heif_error_Color_profile_does_not_exist' when there is no NCLX profile. -// TODO: This function does currently not return an NCLX profile if it is stored in the image bitstream. +// TO-DO: This function does currently not return an NCLX profile if it is stored in the image bitstream. // Only NCLX profiles stored as colr boxes are returned. This may change in the future. +LIBHEIF_API struct heif_error heif_image_handle_get_nclx_color_profile(const struct heif_image_handle* handle, struct heif_color_profile_nclx** out_data); // Returned color profile has 'version' field set to the maximum allowed. // Do not fill values for higher versions as these might be outside the allocated structure size. // May return NULL. +LIBHEIF_API struct heif_color_profile_nclx* heif_nclx_color_profile_alloc(); +LIBHEIF_API void heif_nclx_color_profile_free(struct heif_color_profile_nclx* nclx_profile); +LIBHEIF_API enum heif_color_profile_type heif_image_get_color_profile_type(const struct heif_image* image); +LIBHEIF_API size_t heif_image_get_raw_color_profile_size(const struct heif_image* image); +LIBHEIF_API struct heif_error heif_image_get_raw_color_profile(const struct heif_image* image, void* out_data); +LIBHEIF_API struct heif_error heif_image_get_nclx_color_profile(const struct heif_image* image, struct heif_color_profile_nclx** out_data); @@ -649,7 +956,10 @@ enum heif_compression_format heif_compression_HEVC = 1, heif_compression_AVC = 2, heif_compression_JPEG = 3, - heif_compression_AV1 = 4 + heif_compression_AV1 = 4, + heif_compression_VVC = 5, + heif_compression_EVC = 6, + heif_compression_JPEG2000 = 7 // ISO/IEC 15444-16:2021 }; enum heif_chroma @@ -667,6 +977,11 @@ enum heif_chroma heif_chroma_interleaved_RRGGBBAA_LE = 15 }; +// DEPRECATED ENUM NAMES +#define heif_chroma_interleaved_24bit heif_chroma_interleaved_RGB +#define heif_chroma_interleaved_32bit heif_chroma_interleaved_RGBA + + enum heif_colorspace { heif_colorspace_undefined = 99, @@ -722,14 +1037,23 @@ struct heif_decoding_options // When enabled, an error is returned for invalid input. Otherwise, it will try its best and // add decoding warnings to the decoded heif_image. Default is non-strict. uint8_t strict_decoding; + + // version 4 options + + // name_id of the decoder to use for the decoding. + // If set to NULL (default), the highest priority decoder is chosen. + // The priority is defined in the plugin. + const char* decoder_id; }; // Allocate decoding options and fill with default values. // Note: you should always get the decoding options through this function since the // option structure may grow in size in future versions. +LIBHEIF_API struct heif_decoding_options* heif_decoding_options_alloc(); +LIBHEIF_API void heif_decoding_options_free(struct heif_decoding_options*); // Decode an heif_image_handle into the actual pixel image and also carry out @@ -739,6 +1063,7 @@ void heif_decoding_options_free(struct heif_decoding_options*); // respectively, the original colorspace is taken. // Decoding options may be NULL. If you want to supply options, always use // heif_decoding_options_alloc() to get the structure. +LIBHEIF_API struct heif_error heif_decode_image(const struct heif_image_handle* in_handle, struct heif_image** out_img, enum heif_colorspace colorspace, @@ -746,24 +1071,31 @@ struct heif_error heif_decode_image(const struct heif_image_handle* in_handle, const struct heif_decoding_options* options); // Get the colorspace format of the image. +LIBHEIF_API enum heif_colorspace heif_image_get_colorspace(const struct heif_image*); // Get the chroma format of the image. +LIBHEIF_API enum heif_chroma heif_image_get_chroma_format(const struct heif_image*); // Get width of the given image channel in pixels. Returns -1 if a non-existing // channel was given. +LIBHEIF_API int heif_image_get_width(const struct heif_image*, enum heif_channel channel); // Get height of the given image channel in pixels. Returns -1 if a non-existing // channel was given. +LIBHEIF_API int heif_image_get_height(const struct heif_image*, enum heif_channel channel); // Get the width of the main channel (Y in YCbCr, or any in RGB). +LIBHEIF_API int heif_image_get_primary_width(const struct heif_image*); +LIBHEIF_API int heif_image_get_primary_height(const struct heif_image*); +LIBHEIF_API struct heif_error heif_image_crop(struct heif_image* img, int left, int right, int top, int bottom); @@ -773,6 +1105,7 @@ struct heif_error heif_image_crop(struct heif_image* img, // This function returns the number of bits used for storage of each pixel. // Especially for HDR images, this is probably not what you want. Have a look at // heif_image_get_bits_per_pixel_range() instead. +LIBHEIF_API int heif_image_get_bits_per_pixel(const struct heif_image*, enum heif_channel channel); @@ -782,18 +1115,22 @@ int heif_image_get_bits_per_pixel(const struct heif_image*, enum heif_channel ch // For example, in 12bit HDR images, this function returns '12', while still 16 bits // are reserved for storage. For interleaved RGBA with 12 bit, this function also returns // '12', not '48' or '64' (heif_image_get_bits_per_pixel returns 64 in this case). +LIBHEIF_API int heif_image_get_bits_per_pixel_range(const struct heif_image*, enum heif_channel channel); +LIBHEIF_API int heif_image_has_channel(const struct heif_image*, enum heif_channel channel); // Get a pointer to the actual pixel data. // The 'out_stride' is returned as "bytes per line". // When out_stride is NULL, no value will be written. // Returns NULL if a non-existing channel was given. +LIBHEIF_API const uint8_t* heif_image_get_plane_readonly(const struct heif_image*, enum heif_channel channel, int* out_stride); +LIBHEIF_API uint8_t* heif_image_get_plane(struct heif_image*, enum heif_channel channel, int* out_stride); @@ -802,6 +1139,7 @@ uint8_t* heif_image_get_plane(struct heif_image*, struct heif_scaling_options; // Currently, heif_scaling_options is not defined yet. Pass a NULL pointer. +LIBHEIF_API struct heif_error heif_image_scale_image(const struct heif_image* input, struct heif_image** output, int width, int height, @@ -809,16 +1147,19 @@ struct heif_error heif_image_scale_image(const struct heif_image* input, // The color profile is not attached to the image handle because we might need it // for color space transform and encoding. +LIBHEIF_API struct heif_error heif_image_set_raw_color_profile(struct heif_image* image, const char* profile_type_fourcc_string, const void* profile_data, const size_t profile_size); +LIBHEIF_API struct heif_error heif_image_set_nclx_color_profile(struct heif_image* image, const struct heif_color_profile_nclx* color_profile); -// TODO: this function does not make any sense yet, since we currently cannot modify existing HEIF files. +// TO-DO: this function does not make any sense yet, since we currently cannot modify existing HEIF files. +//LIBHEIF_API //void heif_image_remove_color_profile(struct heif_image* image); // Fills the image decoding warnings into the provided 'out_warnings' array. @@ -827,34 +1168,104 @@ struct heif_error heif_image_set_nclx_color_profile(struct heif_image* image, // The function fills the warnings into the provided buffer, starting with 'first_warning_idx'. // It returns the number of warnings filled into the buffer. // Note: you can iterate through all warnings by using 'max_output_buffer_entries=1' and iterate 'first_warning_idx'. -//int heif_image_get_decoding_warnings(struct heif_image* image, -// int first_warning_idx, -// struct heif_error* out_warnings, -// int max_output_buffer_entries); +LIBHEIF_API +int heif_image_get_decoding_warnings(struct heif_image* image, + int first_warning_idx, + struct heif_error* out_warnings, + int max_output_buffer_entries); // This function is only for decoder plugin implementors. -//void heif_image_add_decoding_warning(struct heif_image* image, -// struct heif_error err); +LIBHEIF_API +void heif_image_add_decoding_warning(struct heif_image* image, + struct heif_error err); // Release heif_image. +LIBHEIF_API void heif_image_release(const struct heif_image*); +// Note: a value of 0 for any of these values indicates that the value is undefined. +// The unit of these values is Candelas per square meter. +struct heif_content_light_level +{ + uint16_t max_content_light_level; + uint16_t max_pic_average_light_level; +}; + +LIBHEIF_API +int heif_image_has_content_light_level(const struct heif_image*); + +LIBHEIF_API +void heif_image_get_content_light_level(const struct heif_image*, struct heif_content_light_level* out); + +LIBHEIF_API +void heif_image_set_content_light_level(const struct heif_image*, const struct heif_content_light_level* in); + + +// Note: color coordinates are defined according to the CIE 1931 definition of x as specified in ISO 11664-1 (see also ISO 11664-3 and CIE 15). +struct heif_mastering_display_colour_volume +{ + uint16_t display_primaries_x[3]; + uint16_t display_primaries_y[3]; + uint16_t white_point_x; + uint16_t white_point_y; + uint32_t max_display_mastering_luminance; + uint32_t min_display_mastering_luminance; +}; + +// The units for max_display_mastering_luminance and min_display_mastering_luminance is Candelas per square meter. +struct heif_decoded_mastering_display_colour_volume +{ + float display_primaries_x[3]; + float display_primaries_y[3]; + float white_point_x; + float white_point_y; + double max_display_mastering_luminance; + double min_display_mastering_luminance; +}; + +LIBHEIF_API +int heif_image_has_mastering_display_colour_volume(const struct heif_image*); + +LIBHEIF_API +void heif_image_get_mastering_display_colour_volume(const struct heif_image*, struct heif_mastering_display_colour_volume* out); + +LIBHEIF_API +void heif_image_set_mastering_display_colour_volume(const struct heif_image*, const struct heif_mastering_display_colour_volume* in); + +// Converts the internal numeric representation of heif_mastering_display_colour_volume to the +// normalized values, collected in heif_decoded_mastering_display_colour_volume. +// Values that are out-of-range are decoded to 0, indicating an undefined value (as specified in ISO/IEC 23008-2). +LIBHEIF_API +struct heif_error heif_mastering_display_colour_volume_decode(const struct heif_mastering_display_colour_volume* in, + struct heif_decoded_mastering_display_colour_volume* out); + +LIBHEIF_API +void heif_image_get_pixel_aspect_ratio(const struct heif_image*, uint32_t* aspect_h, uint32_t* aspect_v); + +LIBHEIF_API +void heif_image_set_pixel_aspect_ratio(struct heif_image*, uint32_t aspect_h, uint32_t aspect_v); + // ==================================================================================================== // Encoding API +LIBHEIF_API +struct heif_error heif_context_write_to_file(struct heif_context*, + const char* filename); + struct heif_writer { // API version supported by this writer int writer_api_version; // --- version 1 functions --- - struct heif_error (* write)(struct heif_context* ctx, // TODO: why do we need this parameter? + struct heif_error (* write)(struct heif_context* ctx, // TO-DO: why do we need this parameter? const void* data, size_t size, void* userdata); }; +LIBHEIF_API struct heif_error heif_context_write(struct heif_context*, struct heif_writer* writer, void* userdata); @@ -873,57 +1284,101 @@ struct heif_encoder_descriptor; // the parameters are provided. struct heif_encoder_parameter; - +struct heif_decoder_descriptor; + +// Get a list of available decoders. You can filter the encoders by compression format. +// Use format_filter==heif_compression_undefined to get all available decoders. +// The returned list of decoders is sorted by their priority (which is a plugin property). +// The number of decoders is returned, which are not more than 'count' if (out_encoders != nullptr). +// By setting out_encoders==nullptr, you can query the number of decoders, 'count' is ignored. +LIBHEIF_API +int heif_get_decoder_descriptors(enum heif_compression_format format_filter, + const struct heif_decoder_descriptor** out_decoders, + int count); + +// Return a long, descriptive name of the decoder (including version information). +LIBHEIF_API +const char* heif_decoder_descriptor_get_name(const struct heif_decoder_descriptor*); + +// Return a short, symbolic name for identifying the decoder. +// This name should stay constant over different decoder versions. +// Note: the returned ID may be NULL for old plugins that don't support this yet. +LIBHEIF_API +const char* heif_decoder_descriptor_get_id_name(const struct heif_decoder_descriptor*); + +// DEPRECATED: use heif_get_encoder_descriptors() instead. // Get a list of available encoders. You can filter the encoders by compression format and name. // Use format_filter==heif_compression_undefined and name_filter==NULL as wildcards. // The returned list of encoders is sorted by their priority (which is a plugin property). // Note: to get the actual encoder from the descriptors returned here, use heif_context_get_encoder(). -int heif_context_get_encoder_descriptors(struct heif_context*, // TODO: why do we need this parameter? +LIBHEIF_API +int heif_context_get_encoder_descriptors(struct heif_context*, // TO-DO: why do we need this parameter? enum heif_compression_format format_filter, const char* name_filter, const struct heif_encoder_descriptor** out_encoders, int count); +// Get a list of available encoders. You can filter the encoders by compression format and name. +// Use format_filter==heif_compression_undefined and name_filter==NULL as wildcards. +// The returned list of encoders is sorted by their priority (which is a plugin property). +// Note: to get the actual encoder from the descriptors returned here, use heif_context_get_encoder(). +LIBHEIF_API +int heif_get_encoder_descriptors(enum heif_compression_format format_filter, + const char* name_filter, + const struct heif_encoder_descriptor** out_encoders, + int count); + // Return a long, descriptive name of the encoder (including version information). +LIBHEIF_API const char* heif_encoder_descriptor_get_name(const struct heif_encoder_descriptor*); // Return a short, symbolic name for identifying the encoder. // This name should stay constant over different encoder versions. +LIBHEIF_API const char* heif_encoder_descriptor_get_id_name(const struct heif_encoder_descriptor*); +LIBHEIF_API enum heif_compression_format heif_encoder_descriptor_get_compression_format(const struct heif_encoder_descriptor*); +LIBHEIF_API int heif_encoder_descriptor_supports_lossy_compression(const struct heif_encoder_descriptor*); +LIBHEIF_API int heif_encoder_descriptor_supports_lossless_compression(const struct heif_encoder_descriptor*); // Get an encoder instance that can be used to actually encode images from a descriptor. +LIBHEIF_API struct heif_error heif_context_get_encoder(struct heif_context* context, const struct heif_encoder_descriptor*, struct heif_encoder** out_encoder); // Quick check whether there is a decoder available for the given format. // Note that the decoder still may not be able to decode all variants of that format. -// You will have to query that further (todo) or just try to decode and check the returned error. +// You will have to query that further (to-do) or just try to decode and check the returned error. +LIBHEIF_API int heif_have_decoder_for_format(enum heif_compression_format format); // Quick check whether there is an enoder available for the given format. // Note that the encoder may be limited to a certain subset of features (e.g. only 8 bit, only lossy). // You will have to query the specific capabilities further. +LIBHEIF_API int heif_have_encoder_for_format(enum heif_compression_format format); // Get an encoder for the given compression format. If there are several encoder plugins // for this format, the encoder with the highest plugin priority will be returned. +LIBHEIF_API struct heif_error heif_context_get_encoder_for_format(struct heif_context* context, enum heif_compression_format format, struct heif_encoder**); // You have to release the encoder after use. +LIBHEIF_API void heif_encoder_release(struct heif_encoder*); // Get the encoder name from the encoder itself. +LIBHEIF_API const char* heif_encoder_get_name(const struct heif_encoder*); @@ -939,19 +1394,24 @@ const char* heif_encoder_get_name(const struct heif_encoder*); // Set a 'quality' factor (0-100). How this is mapped to actual encoding parameters is // encoder dependent. +LIBHEIF_API struct heif_error heif_encoder_set_lossy_quality(struct heif_encoder*, int quality); +LIBHEIF_API struct heif_error heif_encoder_set_lossless(struct heif_encoder*, int enable); // level should be between 0 (= none) to 4 (= full) +LIBHEIF_API struct heif_error heif_encoder_set_logging_level(struct heif_encoder*, int level); // Get a generic list of encoder parameters. // Each encoder may define its own, additional set of parameters. // You do not have to free the returned list. +LIBHEIF_API const struct heif_encoder_parameter* const* heif_encoder_list_parameters(struct heif_encoder*); // Return the parameter name. +LIBHEIF_API const char* heif_encoder_parameter_get_name(const struct heif_encoder_parameter*); @@ -963,49 +1423,73 @@ enum heif_encoder_parameter_type }; // Return the parameter type. +LIBHEIF_API enum heif_encoder_parameter_type heif_encoder_parameter_get_type(const struct heif_encoder_parameter*); +// DEPRECATED. Use heif_encoder_parameter_get_valid_integer_values() instead. +LIBHEIF_API +struct heif_error heif_encoder_parameter_get_valid_integer_range(const struct heif_encoder_parameter*, + int* have_minimum_maximum, + int* minimum, int* maximum); + // If integer is limited by a range, have_minimum and/or have_maximum will be != 0 and *minimum, *maximum is set. // If integer is limited by a fixed set of values, *num_valid_values will be >0 and *out_integer_array is set. +LIBHEIF_API struct heif_error heif_encoder_parameter_get_valid_integer_values(const struct heif_encoder_parameter*, int* have_minimum, int* have_maximum, int* minimum, int* maximum, int* num_valid_values, const int** out_integer_array); +LIBHEIF_API struct heif_error heif_encoder_parameter_get_valid_string_values(const struct heif_encoder_parameter*, const char* const** out_stringarray); +LIBHEIF_API struct heif_error heif_encoder_set_parameter_integer(struct heif_encoder*, const char* parameter_name, int value); +LIBHEIF_API struct heif_error heif_encoder_get_parameter_integer(struct heif_encoder*, const char* parameter_name, int* value); +// TO-DO: name should be changed to heif_encoder_get_valid_integer_parameter_range +LIBHEIF_API // DEPRECATED. +struct heif_error heif_encoder_parameter_integer_valid_range(struct heif_encoder*, + const char* parameter_name, + int* have_minimum_maximum, + int* minimum, int* maximum); + +LIBHEIF_API struct heif_error heif_encoder_set_parameter_boolean(struct heif_encoder*, const char* parameter_name, int value); +LIBHEIF_API struct heif_error heif_encoder_get_parameter_boolean(struct heif_encoder*, const char* parameter_name, int* value); +LIBHEIF_API struct heif_error heif_encoder_set_parameter_string(struct heif_encoder*, const char* parameter_name, const char* value); +LIBHEIF_API struct heif_error heif_encoder_get_parameter_string(struct heif_encoder*, const char* parameter_name, char* value, int value_size); // returns a NULL-terminated list of valid strings or NULL if all values are allowed +LIBHEIF_API struct heif_error heif_encoder_parameter_string_valid_values(struct heif_encoder*, const char* parameter_name, const char* const** out_stringarray); +LIBHEIF_API struct heif_error heif_encoder_parameter_integer_valid_values(struct heif_encoder*, const char* parameter_name, int* have_minimum, int* have_maximum, @@ -1022,17 +1506,20 @@ struct heif_error heif_encoder_parameter_integer_valid_values(struct heif_encode // prefixing the parameter name with 'x265:'. Hence, to set the 'ctu' parameter, // you will have to set 'x265:ctu' in libheif. // Note that there is no checking for valid parameters when using the prefix. +LIBHEIF_API struct heif_error heif_encoder_set_parameter(struct heif_encoder*, const char* parameter_name, const char* value); // Get the current value of a parameter of any type as a human readable string. // The returned string is compatible with heif_encoder_set_parameter(). +LIBHEIF_API struct heif_error heif_encoder_get_parameter(struct heif_encoder*, const char* parameter_name, char* value_ptr, int value_size); // Query whether a specific parameter has a default value. +LIBHEIF_API int heif_encoder_has_default(struct heif_encoder*, const char* parameter_name); @@ -1084,8 +1571,10 @@ struct heif_encoding_options enum heif_orientation image_orientation; }; +LIBHEIF_API struct heif_encoding_options* heif_encoding_options_alloc(); +LIBHEIF_API void heif_encoding_options_free(struct heif_encoding_options*); @@ -1094,12 +1583,14 @@ void heif_encoding_options_free(struct heif_encoding_options*); // 'options' should be NULL for now. // The first image added to the context is also automatically set the primary image, but // you can change the primary image later with heif_context_set_primary_image(). +LIBHEIF_API struct heif_error heif_context_encode_image(struct heif_context*, const struct heif_image* image, struct heif_encoder* encoder, const struct heif_encoding_options* options, struct heif_image_handle** out_image_handle); +LIBHEIF_API struct heif_error heif_context_set_primary_image(struct heif_context*, struct heif_image_handle* image_handle); @@ -1110,6 +1601,7 @@ struct heif_error heif_context_set_primary_image(struct heif_context*, // No error is returned in this case. // The encoded thumbnail is automatically assigned to the 'master_image_handle'. Hence, you // do not have to call heif_context_assign_thumbnail(). +LIBHEIF_API struct heif_error heif_context_encode_thumbnail(struct heif_context*, const struct heif_image* image, const struct heif_image_handle* master_image_handle, @@ -1118,25 +1610,43 @@ struct heif_error heif_context_encode_thumbnail(struct heif_context*, int bbox_size, struct heif_image_handle** out_thumb_image_handle); +enum heif_metadata_compression +{ + heif_metadata_compression_off, + heif_metadata_compression_auto, + heif_metadata_compression_deflate +}; + // Assign 'thumbnail_image' as the thumbnail image of 'master_image'. +LIBHEIF_API struct heif_error heif_context_assign_thumbnail(struct heif_context*, const struct heif_image_handle* master_image, const struct heif_image_handle* thumbnail_image); // Add EXIF metadata to an image. +LIBHEIF_API struct heif_error heif_context_add_exif_metadata(struct heif_context*, const struct heif_image_handle* image_handle, const void* data, int size); // Add XMP metadata to an image. +LIBHEIF_API struct heif_error heif_context_add_XMP_metadata(struct heif_context*, const struct heif_image_handle* image_handle, const void* data, int size); +// New version of heif_context_add_XMP_metadata() with data compression (experimental). +LIBHEIF_API +struct heif_error heif_context_add_XMP_metadata2(struct heif_context*, + const struct heif_image_handle* image_handle, + const void* data, int size, + enum heif_metadata_compression compression); + // Add generic, proprietary metadata to an image. You have to specify an 'item_type' that will // identify your metadata. 'content_type' can be an additional type, or it can be NULL. // For example, this function can be used to add IPTC metadata (IIM stream, not XMP) to an image. // Although not standard, we propose to store IPTC data with item type="iptc", content_type=NULL. +LIBHEIF_API struct heif_error heif_context_add_generic_metadata(struct heif_context* ctx, const struct heif_image_handle* image_handle, const void* data, int size, @@ -1147,6 +1657,7 @@ struct heif_error heif_context_add_generic_metadata(struct heif_context* ctx, // Create a new image of the specified resolution and colorspace. // Note: no memory for the actual image data is reserved yet. You have to use // heif_image_add_plane() to add the image planes required by your colorspace/chroma. +LIBHEIF_API struct heif_error heif_image_create(int width, int height, enum heif_colorspace colorspace, enum heif_chroma chroma, @@ -1157,12 +1668,54 @@ struct heif_error heif_image_create(int width, int height, // of 30 bits or 3*16=48 bits. // For backward compatibility, one can also specify 24bits for RGB and 32bits for RGBA, // instead of the preferred 8 bits. +LIBHEIF_API struct heif_error heif_image_add_plane(struct heif_image* image, enum heif_channel channel, int width, int height, int bit_depth); // Signal that the image is premultiplied by the alpha pixel values. +LIBHEIF_API void heif_image_set_premultiplied_alpha(struct heif_image* image, int is_premultiplied_alpha); +LIBHEIF_API int heif_image_is_premultiplied_alpha(struct heif_image* image); + +// This function extends the padding of the image so that it has at least the given physical size. +// The padding border is filled with the pixels along the right/bottom border. +// This function may be useful if you want to process the image, but have some external padding requirements. +// The image size will not be modified if it is already larger/equal than the given physical size. +// I.e. you cannot assume that after calling this function, the stride will be equal to min_physical_width. +LIBHEIF_API +struct heif_error heif_image_extend_padding_to_size(struct heif_image* image, int min_physical_width, int min_physical_height); + + + +// --- register plugins + +struct heif_decoder_plugin; +struct heif_encoder_plugin; + +// DEPRECATED. Use heif_register_decoder_plugin(const struct heif_decoder_plugin*) instead. +LIBHEIF_API +struct heif_error heif_register_decoder(struct heif_context* heif, const struct heif_decoder_plugin*); + +LIBHEIF_API +struct heif_error heif_register_decoder_plugin(const struct heif_decoder_plugin*); + +LIBHEIF_API +struct heif_error heif_register_encoder_plugin(const struct heif_encoder_plugin*); + +// DEPRECATED, typo in function name +LIBHEIF_API +int heif_encoder_descriptor_supportes_lossy_compression(const struct heif_encoder_descriptor*); + +// DEPRECATED, typo in function name +LIBHEIF_API +int heif_encoder_descriptor_supportes_lossless_compression(const struct heif_encoder_descriptor*); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libheif/linux_build_libs.py b/libheif/linux_build_libs.py index bdfc1729..fa894cfb 100644 --- a/libheif/linux_build_libs.py +++ b/libheif/linux_build_libs.py @@ -4,17 +4,13 @@ from re import IGNORECASE, MULTILINE, match, search from subprocess import DEVNULL, PIPE, STDOUT, CalledProcessError, TimeoutExpired, run -BUILD_DIR_PREFIX = environ.get("BUILD_DIR_PREFIX", "/tmp/pillow_heif") -BUILD_DIR_LIBS = path.join(BUILD_DIR_PREFIX, "build-stuff") -if getenv("READTHEDOCS", "False") == "True": - INSTALL_DIR_LIBS = path.join(environ.get("HOME"), "rtd_build") -else: - INSTALL_DIR_LIBS = environ.get("INSTALL_DIR_LIBS", "/usr") +BUILD_DIR = environ.get("BUILD_DIR", "/tmp/ph_build_stuff") +INSTALL_DIR_LIBS = environ.get("INSTALL_DIR_LIBS", "/usr") PH_LIGHT_VERSION = sys.maxsize <= 2**32 or getenv("PH_LIGHT_ACTION", "0") != "0" LIBX265_URL = "https://bitbucket.org/multicoreware/x265_git/get/0b75c44c10e605fe9e9ebed58f04a46271131827.tar.gz" LIBAOM_URL = "https://aomedia.googlesource.com/aom/+archive/v3.5.0.tar.gz" -LIBDE265_URL = "https://github.com/strukturag/libde265/releases/download/v1.0.9/libde265-1.0.9.tar.gz" +LIBDE265_URL = "https://github.com/strukturag/libde265/releases/download/v1.0.11/libde265-1.0.11.tar.gz" LIBHEIF_URL = "https://github.com/strukturag/libheif/releases/download/v1.14.2/libheif-1.14.2.tar.gz" @@ -86,7 +82,7 @@ def check_install_nasm(version: str): if tool_check_version("nasm", version): return True print(f"Can not find `nasm` with version >={version}, installing...") - _tool_path = path.join(BUILD_DIR_LIBS, "nasm") + _tool_path = path.join(BUILD_DIR, "nasm") if path.isdir(_tool_path): print("Cache found for nasm", flush=True) chdir(_tool_path) @@ -127,7 +123,7 @@ def run_print_if_error(args) -> None: def build_lib_linux(url: str, name: str, musl: bool = False): - _lib_path = path.join(BUILD_DIR_LIBS, name) + _lib_path = path.join(BUILD_DIR, name) if path.isdir(_lib_path): print(f"Cache found for {name}", flush=True) chdir(path.join(_lib_path, "build")) if name != "x265" else chdir(_lib_path) @@ -210,10 +206,7 @@ def build_lib_linux(url: str, name: str, musl: bool = False): if musl: run(f"ldconfig {INSTALL_DIR_LIBS}/lib".split(), check=True) else: - if getenv("READTHEDOCS", "False") == "True": - run("export LD_LIBRARY_PATH=$HOME/rtd_build/lib:$LD_LIBRARY_PATH".split(), shell=True) - else: - run("ldconfig", check=True) + run("ldconfig", check=True) def build_libs() -> str: diff --git a/pi-heif/LICENSES_bundled.txt b/pi-heif/LICENSES_bundled.txt index bcdbbafc..8d3f420a 100644 --- a/pi-heif/LICENSES_bundled.txt +++ b/pi-heif/LICENSES_bundled.txt @@ -11,5 +11,5 @@ Files: libheif.[dylib|so|dll] Name: libde265 License: LGPLv3 Files: libde265.[dylib|so|dll] - For details, see https://github.com/strukturag/libde265/tree/v1.0.9/COPYING - Source code: https://github.com/strukturag/libde265/tree/v1.0.9 + For details, see https://github.com/strukturag/libde265/tree/v1.0.11/COPYING + Source code: https://github.com/strukturag/libde265/tree/v1.0.11 diff --git a/pi-heif/README.md b/pi-heif/README.md index 15fc7a99..7230d3f1 100644 --- a/pi-heif/README.md +++ b/pi-heif/README.md @@ -13,8 +13,6 @@ ![Alpine Linux](https://img.shields.io/badge/Alpine_Linux-0078D6.svg?style=for-the-badge&logo=alpine-linux&logoColor=white) ![Raspberry Pi](https://img.shields.io/badge/Rasberry_Pi-FCC624.svg?style=for-the-badge&logo=raspberry-pi&logoColor=red) -#### NOTE: Please pin version to skip `0.10.x` versions, as it will be alpha version branch. [0.10.0 changes](https://github.com/bigcat88/pillow_heif/issues/75) - This is a light version of [Pillow-Heif](https://github.com/bigcat88/pillow_heif) with more permissive license for binary wheels. It includes only `HEIF` decoder and does not support `save` operations. @@ -40,16 +38,15 @@ im = Image.open("images/input.heic") # do whatever need with a Pillow image im.show() ``` -### 8/10/12 bit HEIF to 16 bit PNG using OpenCV +### 8/10/12 bit HEIF to 8/16 bit PNG using OpenCV ```python3 import numpy as np import cv2 import pi_heif -heif_file = pi_heif.open_heif("images/rgb12.heif", convert_hdr_to_8bit=False) -heif_file.convert_to("BGRA;16" if heif_file.has_alpha else "BGR;16") +heif_file = pi_heif.open_heif("image.heic", convert_hdr_to_8bit=False, bgr_mode=True) np_array = np.asarray(heif_file) -cv2.imwrite("rgb16.png", np_array) +cv2.imwrite("image.png", np_array) ``` ### Get decoded image data as a Numpy array @@ -66,7 +63,7 @@ if pi_heif.is_supported("input.heic"): | **_Wheels table_** | macOS
Intel | macOS
Silicon | Windows
64bit | musllinux* | manylinux* | |--------------------|:---------------:|:-----------------:|:-----------------:|:----------:|:----------:| -| CPython 3.7 | ✅ | N/A | ✅ | ✅ | ✅ | +| CPython 3.7 | ✅ | N/A | ✅ | N/A | ✅ | | CPython 3.8 | ✅ | ✅ | ✅ | ✅ | ✅ | | CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | | CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅ | diff --git a/pi-heif/setup.cfg b/pi-heif/setup.cfg index af60be99..9679799e 100644 --- a/pi-heif/setup.cfg +++ b/pi-heif/setup.cfg @@ -37,7 +37,6 @@ python_requires = >=3.7 zip_safe = False packages = find: install_requires = - cffi>=1.14.6 pillow>=8.3.0 [options.extras_require] diff --git a/pillow_heif/__init__.py b/pillow_heif/__init__.py index 88cc3ff7..190db2a4 100644 --- a/pillow_heif/__init__.py +++ b/pillow_heif/__init__.py @@ -12,12 +12,15 @@ register_avif_opener, register_heif_opener, ) -from .constants import HeifErrorCode -from .error import HeifError +from .constants import ( + HeifColorPrimaries, + HeifMatrixCoefficients, + HeifTransferCharacteristics, +) from .heif import ( HeifFile, HeifImage, - HeifThumbnail, + encode, from_bytes, from_pillow, is_supported, @@ -25,4 +28,3 @@ read_heif, ) from .misc import get_file_mimetype, set_orientation -from .thumbnails import add_thumbnails, thumbnail diff --git a/pillow_heif/_lib_info.py b/pillow_heif/_lib_info.py index ecf712c7..38a8c303 100644 --- a/pillow_heif/_lib_info.py +++ b/pillow_heif/_lib_info.py @@ -1,53 +1,23 @@ """ -Functions to get version and encoders/decoders info of embedded C libraries. +Functions to get versions of underlying libraries. """ -from _pillow_heif_cffi import ffi, lib - -from .constants import HeifCompressionFormat +from _pillow_heif import lib_info def libheif_version() -> str: - """Wrapper around `libheif.heif_get_version`""" - return ffi.string(lib.heif_get_version()).decode() - - -def have_decoder_for_format(format_id: HeifCompressionFormat) -> bool: - """Wrapper around `libheif.heif_have_decoder_for_format`""" - return lib.heif_have_decoder_for_format(format_id) + """Returns ``libheif`` version.""" - -def have_encoder_for_format(format_id: HeifCompressionFormat) -> bool: - """Wrapper around `libheif.heif_have_encoder_for_format`""" - return lib.heif_have_encoder_for_format(format_id) + return lib_info["libheif"] def libheif_info() -> dict: - """Returns dictionary with available decoders & encoders and libheif version. - Keys are `versions`, `decoders`, `encoders`. - - {'version': { - 'libheif': '1.14.0', - 'x265': 'x265 HEVC encoder (3.4+31-6722fce1f)', - 'aom': 'AOMedia Project AV1 Encoder 3.5.0' - }, - 'decoders': {'HEVC': 1, 'AV1': 1, 'AVC': 0}, - 'encoders': {'HEVC': 1, 'AV1': 1, 'AVC': 0} + """Returns a dictionary with version information. + The keys `libheif`, `HEIF`, `AVIF` are always present, but values for `HEIF`/`AVIF` can be empty. + + {'libheif': '1.14.2', + 'HEIF': 'x265 HEVC encoder (3.4+31-6722fce1f)', + 'AVIF': 'AOMedia Project AV1 Encoder 3.5.0' }""" - decoders = {} - encoders = {} - for format_id in (HeifCompressionFormat.HEVC, HeifCompressionFormat.AV1, HeifCompressionFormat.AVC): - decoders[format_id.name] = have_decoder_for_format(format_id) - encoders[format_id.name] = have_encoder_for_format(format_id) - - _version = {"libheif": libheif_version(), "x265": "", "aom": ""} - p_enc_desc = ffi.new("struct heif_encoder_descriptor**") - if lib.heif_context_get_encoder_descriptors(ffi.NULL, HeifCompressionFormat.HEVC, ffi.NULL, p_enc_desc, 1): - p_enc_name = lib.heif_encoder_descriptor_get_name(p_enc_desc[0]) - _version["x265"] = ffi.string(p_enc_name).decode() - if lib.heif_context_get_encoder_descriptors(ffi.NULL, HeifCompressionFormat.AV1, ffi.NULL, p_enc_desc, 1): - p_enc_name = lib.heif_encoder_descriptor_get_name(p_enc_desc[0]) - _version["aom"] = ffi.string(p_enc_name).decode() - - return {"version": _version, "decoders": decoders, "encoders": encoders} + return lib_info diff --git a/pillow_heif/_libheif_ctx.py b/pillow_heif/_libheif_ctx.py deleted file mode 100644 index cf647077..00000000 --- a/pillow_heif/_libheif_ctx.py +++ /dev/null @@ -1,99 +0,0 @@ -""" -Callback functions and wrappers for libheif `heif_context_read_from_memory_without_copy` and `heif_context_write`. -""" - -import builtins -from io import SEEK_SET -from pathlib import Path -from typing import Dict, List, Optional - -from _pillow_heif_cffi import ffi, lib - -from . import options -from .constants import HeifCompressionFormat -from .error import check_libheif_error -from .misc import _get_bytes, get_file_mimetype - - -def _get_heif_writer(): - heif_writer = ffi.new("struct heif_writer *") - heif_writer.writer_api_version = 1 - heif_writer.write = lib.callback_write - return heif_writer - - -HEIF_WRITER = _get_heif_writer() - - -class LibHeifCtx: - """LibHeif reader context""" - - def __init__(self, fp, to_8bit: bool = False): - self.to_8bit = to_8bit - self.ctx = ffi.gc(lib.heif_context_alloc(), lib.heif_context_free) - if hasattr(fp, "seek"): - fp.seek(0, SEEK_SET) - self.c_userdata = bytes(_get_bytes(fp)) - cdata_buf = ffi.from_buffer(self.c_userdata) # For PyPy3, without this it will raise error during read. - error = lib.heif_context_read_from_memory_without_copy(self.ctx, cdata_buf, len(cdata_buf), ffi.NULL) - check_libheif_error(error) - self.mimetype = get_file_mimetype(self.c_userdata) - lib.heif_context_set_max_decoding_threads(self.ctx, options.DECODE_THREADS) - - def get_main_img_id(self) -> int: - p_main_image_id = ffi.new("heif_item_id *") - check_libheif_error(lib.heif_context_get_primary_image_ID(self.ctx, p_main_image_id)) - return p_main_image_id[0] - - def get_top_images_ids(self) -> List[int]: - top_img_count = lib.heif_context_get_number_of_top_level_images(self.ctx) - top_img_ids = ffi.new("heif_item_id[]", top_img_count) - top_img_count = lib.heif_context_get_list_of_top_level_image_IDs(self.ctx, top_img_ids, top_img_count) - return [top_img_ids[i] for i in range(top_img_count)] - - -class LibHeifCtxWrite: - """LibHeif writer context""" - - def __init__(self, compression_format: int = HeifCompressionFormat.HEVC): - self.ctx = ffi.gc(lib.heif_context_alloc(), lib.heif_context_free) - p_encoder = ffi.new("struct heif_encoder **") - error = lib.heif_context_get_encoder_for_format(self.ctx, compression_format, p_encoder) - check_libheif_error(error) - self.encoder = ffi.gc(p_encoder[0], lib.heif_encoder_release) - # lib.heif_encoder_set_logging_level(self.encoder, 4) - - def set_encoder_parameters(self, enc_params: Dict[str, str], quality: Optional[int] = None): - if quality is not None: - if quality == -1: - check_libheif_error(lib.heif_encoder_set_lossless(self.encoder, True)) - else: - check_libheif_error(lib.heif_encoder_set_lossy_quality(self.encoder, quality)) - for key, value in enc_params.items(): - _value = value if isinstance(value, str) else str(value) - check_libheif_error( - lib.heif_encoder_set_parameter(self.encoder, key.encode("ascii"), _value.encode("ascii")) - ) - - def write(self, fp): - __fp = self._get_fp(fp) - c_userdata = ffi.new_handle(__fp) - error = lib.heif_context_write(self.ctx, HEIF_WRITER, c_userdata) - if isinstance(fp, (str, Path)): - __fp.close() - check_libheif_error(error) - - @staticmethod - def _get_fp(fp): - if isinstance(fp, (str, Path)): - return builtins.open(fp, "wb") - if hasattr(fp, "write"): - return fp - raise TypeError("`fp` must be a path to file or an object with `write` method.") - - -@ffi.def_extern() -def callback_write(_ctx, data, size, userdata): - fp = ffi.from_handle(userdata) - fp.write(ffi.buffer(data, size=size)) - return [0, 0, ffi.NULL] diff --git a/pillow_heif/_pillow_heif.c b/pillow_heif/_pillow_heif.c new file mode 100644 index 00000000..c6d1d65c --- /dev/null +++ b/pillow_heif/_pillow_heif.c @@ -0,0 +1,1238 @@ +#define PY_SSIZE_T_CLEAN + +#include "Python.h" +#include "libheif/heif.h" + +/* =========== Common stuff ======== */ + +#define RETURN_NONE Py_INCREF(Py_None); return Py_None; + +static struct heif_error heif_error_no = { .code = 0, .subcode = 0, .message = NULL }; + +int check_error(struct heif_error error) { + if (error.code == heif_error_Ok) { + return 0; + } + + PyObject* e; + switch (error.code) { + case heif_error_Decoder_plugin_error: + if (error.subcode == 100) { + e = PyExc_EOFError; + break; + } + case heif_error_Invalid_input: + case heif_error_Usage_error: + e = PyExc_ValueError; + break; + case heif_error_Unsupported_filetype: + case heif_error_Unsupported_feature: + case heif_error_Color_profile_does_not_exist: + e = PyExc_SyntaxError; + break; + default: + e = PyExc_RuntimeError; + } + PyErr_SetString(e, error.message); + return 1; +} + +int __PyDict_SetItemString(PyObject *p, const char *key, PyObject *val) { + int r = PyDict_SetItemString(p, key, val); + Py_DECREF(val); + return r; +} + +/* =========== Objects ======== */ + +typedef struct { + PyObject_HEAD + enum heif_chroma chroma; + struct heif_image* image; + struct heif_image_handle* handle; +} CtxWriteImageObject; + +static PyTypeObject CtxWriteImage_Type; + +typedef struct { + PyObject_HEAD + struct heif_context* ctx; // libheif context + struct heif_encoder* encoder; // encoder + size_t size; // number of bytes in `data` + void* data; // encoded data if success +} CtxWriteObject; + +static PyTypeObject CtxWrite_Type; + +typedef struct { + PyObject_HEAD + int width; // size[0]; + int height; // size[1]; + int bits; // on of: 8, 10, 12. + int alpha; // on of: 0, 1. + char mode[8]; // one of: RGB, RGBA, RGBa, RGB;16, RGBA;16, RGBa;16 + int primary; // on of: 0, 1. + int hdr_to_8bit; // private. decode option. + int bgr_mode; // private. decode option. + int postprocess; // private. decode option. + struct heif_image_handle *handle; // private + struct heif_image *heif_image; // private + uint8_t *data; // pointer to data after decoding + int stride; // time when it get filled depends on `postprocess` value + PyObject *file_bytes; // private +} CtxImageObject; + +static PyTypeObject CtxImage_Type; + +/* =========== CtxWriteImage ======== */ + +static void _CtxWriteImage_destructor(CtxWriteImageObject* self) { + if (self->handle) + heif_image_handle_release(self->handle); + if (self->image) + heif_image_release(self->image); + PyObject_Del(self); +} + +static PyObject* _CtxWriteImage_add_plane(CtxWriteImageObject* self, PyObject* args) { + /* (size), depth: int, depth_in: int, data: bytes, bgr_mode: int */ + int width, height, depth, depth_in, stride, stride_in, bgr_mode; + Py_buffer buffer; + uint8_t* plane_data; + + if (!PyArg_ParseTuple(args, "(ii)iiy*i", &width, &height, &depth, &depth_in, &buffer, &bgr_mode)) + return NULL; + + int with_alpha = 0; + if ((self->chroma == heif_chroma_interleaved_RGBA) || (self->chroma == heif_chroma_interleaved_RRGGBBAA_LE)) { + stride_in = width * 4; + with_alpha = 1; + } + else + stride_in = width * 3; + if (depth > 8) + stride_in = stride_in * 2; + if (stride_in * height != buffer.len) { + PyBuffer_Release(&buffer); + PyErr_SetString(PyExc_ValueError, "image plane size does not match data size"); + return NULL; + } + + if (check_error(heif_image_add_plane(self->image, heif_channel_interleaved, width, height, depth))) { + PyBuffer_Release(&buffer); + return NULL; + } + + plane_data = heif_image_get_plane(self->image, heif_channel_interleaved, &stride); + if (!plane_data) { + PyBuffer_Release(&buffer); + PyErr_SetString(PyExc_RuntimeError, "heif_image_get_plane failed"); + return NULL; + } + + int invalid_mode = 0; + Py_BEGIN_ALLOW_THREADS + uint8_t *out = plane_data; + uint8_t *in = buffer.buf; + uint16_t *out_word = (uint16_t *)plane_data; + uint16_t *in_word = (uint16_t *)buffer.buf; + if (!bgr_mode) { + if ((depth_in == depth) && (stride_in == stride)) + memcpy(out, in, stride * height); + else if ((depth_in == depth) && (stride_in != stride)) + for (int i = 0; i < height; i++) + memcpy(out + stride * i, in + stride_in * i, stride_in); + else if ((depth_in == 16) && (depth == 12) && (!with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word[i2 * 3 + 0] = in_word[i2 * 3 + 0] >> 4; + out_word[i2 * 3 + 1] = in_word[i2 * 3 + 1] >> 4; + out_word[i2 * 3 + 2] = in_word[i2 * 3 + 2] >> 4; + } + in_word += stride_in / 2; + out_word += stride / 2; + } + else if ((depth_in == 16) && (depth == 12) && (with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word[i2 * 4 + 0] = in_word[i2 * 4 + 0] >> 4; + out_word[i2 * 4 + 1] = in_word[i2 * 4 + 1] >> 4; + out_word[i2 * 4 + 2] = in_word[i2 * 4 + 2] >> 4; + out_word[i2 * 4 + 3] = in_word[i2 * 4 + 3] >> 4; + } + in_word += stride_in / 2; + out_word += stride / 2; + } + else if ((depth_in == 16) && (depth == 10) && (!with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word[i2 * 3 + 0] = in_word[i2 * 3 + 0] >> 6; + out_word[i2 * 3 + 1] = in_word[i2 * 3 + 1] >> 6; + out_word[i2 * 3 + 2] = in_word[i2 * 3 + 2] >> 6; + } + in_word += stride_in / 2; + out_word += stride / 2; + } + else if ((depth_in == 16) && (depth == 10) && (with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word[i2 * 4 + 0] = in_word[i2 * 4 + 0] >> 6; + out_word[i2 * 4 + 1] = in_word[i2 * 4 + 1] >> 6; + out_word[i2 * 4 + 2] = in_word[i2 * 4 + 2] >> 6; + out_word[i2 * 4 + 3] = in_word[i2 * 4 + 3] >> 6; + } + in_word += stride_in / 2; + out_word += stride / 2; + } + else + invalid_mode = 1; + } + else { + if ((depth_in == 8) && (depth == 8) && (!with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out[i2 * 3 + 0] = in[i2 * 3 + 2]; + out[i2 * 3 + 1] = in[i2 * 3 + 1]; + out[i2 * 3 + 2] = in[i2 * 3 + 0]; + } + in += stride_in; + out += stride; + } + else if ((depth_in == 8) &&(depth == 8) && (with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out[i2 * 4 + 0] = in[i2 * 4 + 2]; + out[i2 * 4 + 1] = in[i2 * 4 + 1]; + out[i2 * 4 + 2] = in[i2 * 4 + 0]; + out[i2 * 4 + 3] = in[i2 * 4 + 3]; + } + in += stride_in; + out += stride; + } + else if ((depth_in == 16) && (depth == 10) && (!with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word[i2 * 3 + 0] = in_word[i2 * 3 + 2] >> 6; + out_word[i2 * 3 + 1] = in_word[i2 * 3 + 1] >> 6; + out_word[i2 * 3 + 2] = in_word[i2 * 3 + 0] >> 6; + } + in_word += stride_in / 2; + out_word += stride / 2; + } + else if ((depth_in == 16) && (depth == 10) && (with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word[i2 * 4 + 0] = in_word[i2 * 4 + 2] >> 6; + out_word[i2 * 4 + 1] = in_word[i2 * 4 + 1] >> 6; + out_word[i2 * 4 + 2] = in_word[i2 * 4 + 0] >> 6; + out_word[i2 * 4 + 3] = in_word[i2 * 4 + 3] >> 6; + } + in_word += stride_in / 2; + out_word += stride / 2; + } + else if ((depth_in == 16) && (depth == 12) && (!with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word[i2 * 3 + 0] = in_word[i2 * 3 + 2] >> 4; + out_word[i2 * 3 + 1] = in_word[i2 * 3 + 1] >> 4; + out_word[i2 * 3 + 2] = in_word[i2 * 3 + 0] >> 4; + } + in_word += stride_in / 2; + out_word += stride / 2; + } + else if ((depth_in == 16) && (depth == 12) && (with_alpha)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word[i2 * 4 + 0] = in_word[i2 * 4 + 2] >> 4; + out_word[i2 * 4 + 1] = in_word[i2 * 4 + 1] >> 4; + out_word[i2 * 4 + 2] = in_word[i2 * 4 + 0] >> 4; + out_word[i2 * 4 + 3] = in_word[i2 * 4 + 3] >> 4; + } + in_word += stride_in / 2; + out_word += stride / 2; + } + else + invalid_mode = 1; + } + Py_END_ALLOW_THREADS + PyBuffer_Release(&buffer); + if (invalid_mode) { + PyErr_SetString(PyExc_ValueError, "invalid plane mode value"); + return NULL; + } + RETURN_NONE +} + +static PyObject* _CtxWriteImage_add_plane_la(CtxWriteImageObject* self, PyObject* args) { + /* (size), depth: int, depth_in: int, data: bytes */ + int width, height, depth, depth_in, stride_y, stride_alpha, stride_in; + Py_buffer buffer; + uint8_t *plane_data_y, *plane_data_alpha; + + if (!PyArg_ParseTuple(args, "(ii)iiy*", &width, &height, &depth, &depth_in, &buffer)) + return NULL; + + stride_in = width * 2; + if (depth > 8) + stride_in = stride_in * 2; + if (stride_in * height != buffer.len) { + PyBuffer_Release(&buffer); + PyErr_SetString(PyExc_ValueError, "image plane size does not match data size"); + return NULL; + } + + if (check_error(heif_image_add_plane(self->image, heif_channel_Y, width, height, depth))) { + PyBuffer_Release(&buffer); + return NULL; + } + + if (check_error(heif_image_add_plane(self->image, heif_channel_Alpha, width, height, depth))) { + PyBuffer_Release(&buffer); + return NULL; + } + + plane_data_y = heif_image_get_plane(self->image, heif_channel_Y, &stride_y); + if (!plane_data_y) { + PyBuffer_Release(&buffer); + PyErr_SetString(PyExc_RuntimeError, "heif_image_get_plane(Y) failed"); + return NULL; + } + + plane_data_alpha = heif_image_get_plane(self->image, heif_channel_Alpha, &stride_alpha); + if (!plane_data_alpha) { + PyBuffer_Release(&buffer); + PyErr_SetString(PyExc_RuntimeError, "heif_image_get_plane(Alpha) failed"); + return NULL; + } + + int invalid_mode = 0; + Py_BEGIN_ALLOW_THREADS + uint16_t *out_word_y = (uint16_t *)plane_data_y; + uint16_t *out_word_alpha = (uint16_t *)plane_data_alpha; + uint16_t *in_word = (uint16_t *)buffer.buf; + if ((depth_in == depth) && (depth == 8)) { + uint8_t *out_y = plane_data_y; + uint8_t *out_alpha = plane_data_alpha; + uint8_t *in = buffer.buf; + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_y[i2] = in[i2 * 2 + 0]; + out_alpha[i2] = in[i2 * 2 + 1]; + } + in += stride_in; + out_y += stride_y; + out_alpha += stride_alpha; + } + } + else if (depth_in == depth) { + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word_y[i2] = in_word[i2 * 2 + 0]; + out_word_alpha[i2] = in_word[i2 * 2 + 1]; + } + in_word += stride_in / 2; + out_word_y += stride_y / 2; + out_word_alpha += stride_alpha / 2; + } + } + else if ((depth_in == 16) && (depth == 10)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word_y[i2] = in_word[i2 * 2 + 0] >> 6; + out_word_alpha[i2] = in_word[i2 * 2 + 1] >> 6; + } + in_word += stride_in / 2; + out_word_y += stride_y / 2; + out_word_alpha += stride_alpha / 2; + } + else if ((depth_in == 16) && (depth == 12)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) { + out_word_y[i2] = in_word[i2 * 2 + 0] >> 4; + out_word_alpha[i2] = in_word[i2 * 2 + 1] >> 4; + } + in_word += stride_in / 2; + out_word_y += stride_y / 2; + out_word_alpha += stride_alpha / 2; + } + else + invalid_mode = 1; + Py_END_ALLOW_THREADS + PyBuffer_Release(&buffer); + if (invalid_mode) { + PyErr_SetString(PyExc_ValueError, "invalid plane mode value"); + return NULL; + } + RETURN_NONE +} + +static PyObject* _CtxWriteImage_add_plane_l(CtxWriteImageObject* self, PyObject* args) { + /* (size), depth: int, depth_in: int, data: bytes */ + int width, height, depth, depth_in, stride, stride_in; + Py_buffer buffer; + uint8_t *plane_data; + + if (!PyArg_ParseTuple(args, "(ii)iiy*", &width, &height, &depth, &depth_in, &buffer)) + return NULL; + + stride_in = width; + if (depth > 8) + stride_in = stride_in * 2; + if (stride_in * height != buffer.len) { + PyBuffer_Release(&buffer); + PyErr_SetString(PyExc_ValueError, "image plane size does not match data size"); + return NULL; + } + + if (check_error(heif_image_add_plane(self->image, heif_channel_Y, width, height, depth))) { + PyBuffer_Release(&buffer); + return NULL; + } + + plane_data = heif_image_get_plane(self->image, heif_channel_Y, &stride); + if (!plane_data) { + PyBuffer_Release(&buffer); + PyErr_SetString(PyExc_RuntimeError, "heif_image_get_plane(Y) failed"); + return NULL; + } + + int invalid_mode = 0; + Py_BEGIN_ALLOW_THREADS + uint8_t *out = plane_data; + uint8_t *in = buffer.buf; + uint16_t *out_word = (uint16_t *)plane_data; + uint16_t *in_word = (uint16_t *)buffer.buf; + if ((depth_in == depth) && (stride_in == stride)) + memcpy(out, in, stride * height); + else if ((depth_in == depth) && (stride_in != stride)) + for (int i = 0; i < height; i++) + memcpy(out + stride * i, in + stride_in * i, stride_in); + else if ((depth_in == 16) && (depth == 10)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) + out_word[i2] = in_word[i2] >> 6; + in_word += stride_in / 2; + out_word += stride / 2; + } + else if ((depth_in == 16) && (depth == 12)) + for (int i = 0; i < height; i++) { + for (int i2 = 0; i2 < width; i2++) + out_word[i2] = in_word[i2] >> 4; + in_word += stride_in / 2; + out_word += stride / 2; + } + else + invalid_mode = 1; + Py_END_ALLOW_THREADS + PyBuffer_Release(&buffer); + if (invalid_mode) { + PyErr_SetString(PyExc_ValueError, "invalid plane mode value"); + return NULL; + } + RETURN_NONE +} + +static PyObject* _CtxWriteImage_set_icc_profile(CtxWriteImageObject* self, PyObject* args) { + /* type: str, color_profile: bytes */ + const char* type; + Py_buffer buffer; + struct heif_error error; + + if (!PyArg_ParseTuple(args, "sy*", &type, &buffer)) + return NULL; + + error = heif_image_set_raw_color_profile(self->image, type, buffer.buf, (int)buffer.len); + PyBuffer_Release(&buffer); + if (check_error(error)) + return NULL; + RETURN_NONE +} + +static PyObject* _CtxWriteImage_set_nclx_profile(CtxWriteImageObject* self, PyObject* args) { + /* color_primaries: int, transfer_characteristics: int, matrix_coefficients: int, full_range_flag: int */ + struct heif_error error; + int color_primaries, transfer_characteristics, matrix_coefficients, full_range_flag; + + if (!PyArg_ParseTuple(args, "iiii", + &color_primaries, &transfer_characteristics, &matrix_coefficients, &full_range_flag)) + return NULL; + + struct heif_color_profile_nclx* nclx_color_profile = heif_nclx_color_profile_alloc(); + nclx_color_profile->color_primaries = color_primaries; + nclx_color_profile->transfer_characteristics = transfer_characteristics; + nclx_color_profile->matrix_coefficients = matrix_coefficients; + nclx_color_profile->full_range_flag = full_range_flag; + error = heif_image_set_nclx_color_profile(self->image, nclx_color_profile); + heif_nclx_color_profile_free(nclx_color_profile); + if (check_error(error)) + return NULL; + RETURN_NONE +} + +static PyObject* _CtxWriteImage_encode(CtxWriteImageObject* self, PyObject* args) { + /* ctx: CtxWriteObject, primary: int */ + CtxWriteObject* ctx_write; + int primary; + struct heif_error error; + struct heif_encoding_options* options; + + if (!PyArg_ParseTuple(args, "Oi", (PyObject*)&ctx_write, &primary)) + return NULL; + + Py_BEGIN_ALLOW_THREADS + options = heif_encoding_options_alloc(); + error = heif_context_encode_image(ctx_write->ctx, self->image, ctx_write->encoder, options, &self->handle); + heif_encoding_options_free(options); + Py_END_ALLOW_THREADS + if (check_error(error)) + return NULL; + + if (primary) + heif_context_set_primary_image(ctx_write->ctx, self->handle); + RETURN_NONE +} + +static PyObject* _CtxWriteImage_set_exif(CtxWriteImageObject* self, PyObject* args) { + /* ctx: CtxWriteObject, data: bytes */ + CtxWriteObject* ctx_write; + Py_buffer buffer; + struct heif_error error; + + if (!PyArg_ParseTuple(args, "Oy*", (PyObject*)&ctx_write, &buffer)) + return NULL; + + error = heif_context_add_exif_metadata(ctx_write->ctx, self->handle, buffer.buf, (int)buffer.len); + PyBuffer_Release(&buffer); + if (check_error(error)) + return NULL; + RETURN_NONE +} + +static PyObject* _CtxWriteImage_set_xmp(CtxWriteImageObject* self, PyObject* args) { + /* ctx: CtxWriteObject, data: bytes */ + CtxWriteObject* ctx_write; + Py_buffer buffer; + struct heif_error error; + + if (!PyArg_ParseTuple(args, "Oy*", (PyObject*)&ctx_write, &buffer)) + return NULL; + + error = heif_context_add_XMP_metadata(ctx_write->ctx, self->handle, buffer.buf, (int)buffer.len); + PyBuffer_Release(&buffer); + if (check_error(error)) + return NULL; + RETURN_NONE +} + +static PyObject* _CtxWriteImage_set_metadata(CtxWriteImageObject* self, PyObject* args) { + /* ctx: CtxWriteObject, type: str, content_type: str, data: bytes */ + CtxWriteObject* ctx_write; + const char *type, *content_type; + Py_buffer buffer; + struct heif_error error; + + if (!PyArg_ParseTuple(args, "Ossy*", (PyObject*)&ctx_write, &type, &content_type, &buffer)) + return NULL; + + error = heif_context_add_generic_metadata(ctx_write->ctx, self->handle, buffer.buf, (int)buffer.len, type, content_type); + PyBuffer_Release(&buffer); + if (check_error(error)) + return NULL; + RETURN_NONE +} + +static PyObject* _CtxWriteImage_encode_thumbnail(CtxWriteImageObject* self, PyObject* args) { + /* ctx: CtxWriteObject, thumb_box: int */ + struct heif_error error; + struct heif_image_handle* thumb_handle; + struct heif_encoding_options* options; + CtxWriteObject* ctx_write; + int thumb_box; + + if (!PyArg_ParseTuple(args, "Oi", (PyObject*)&ctx_write, &thumb_box)) + return NULL; + + Py_BEGIN_ALLOW_THREADS + options = heif_encoding_options_alloc(); + error = heif_context_encode_thumbnail( + ctx_write->ctx, + self->image, + self->handle, + ctx_write->encoder, + options, + thumb_box, + &thumb_handle); + heif_encoding_options_free(options); + Py_END_ALLOW_THREADS + if (check_error(error)) + return NULL; + heif_image_handle_release(thumb_handle); + RETURN_NONE +} + +static struct PyMethodDef _CtxWriteImage_methods[] = { + {"add_plane", (PyCFunction)_CtxWriteImage_add_plane, METH_VARARGS}, + {"add_plane_l", (PyCFunction)_CtxWriteImage_add_plane_l, METH_VARARGS}, + {"add_plane_la", (PyCFunction)_CtxWriteImage_add_plane_la, METH_VARARGS}, + {"set_icc_profile", (PyCFunction)_CtxWriteImage_set_icc_profile, METH_VARARGS}, + {"set_nclx_profile", (PyCFunction)_CtxWriteImage_set_nclx_profile, METH_VARARGS}, + {"encode", (PyCFunction)_CtxWriteImage_encode, METH_VARARGS}, + {"set_exif", (PyCFunction)_CtxWriteImage_set_exif, METH_VARARGS}, + {"set_xmp", (PyCFunction)_CtxWriteImage_set_xmp, METH_VARARGS}, + {"set_metadata", (PyCFunction)_CtxWriteImage_set_metadata, METH_VARARGS}, + {"encode_thumbnail", (PyCFunction)_CtxWriteImage_encode_thumbnail, METH_VARARGS}, + {NULL, NULL} +}; + +/* =========== CtxWrite ======== */ + +static struct heif_error ctx_write_callback(struct heif_context* ctx, const void* data, size_t size, void* userdata) { + *((PyObject**)userdata) = PyBytes_FromStringAndSize((char*)data, size); + return heif_error_no; +} + +static struct heif_writer ctx_writer = { .writer_api_version = 1, .write = &ctx_write_callback }; + +static void _CtxWrite_destructor(CtxWriteObject* self) { + if (self->data) + free(self->data); + if (self->encoder) + heif_encoder_release(self->encoder); + heif_context_free(self->ctx); + PyObject_Del(self); +} + +static PyObject* _CtxWrite_set_parameter(CtxWriteObject* self, PyObject* args) { + char *key, *value; + if (!PyArg_ParseTuple(args, "ss", &key, &value)) + return NULL; + if (check_error(heif_encoder_set_parameter(self->encoder, key, value))) + return NULL; + RETURN_NONE +} + +static PyObject* _CtxWriteImage_create(CtxWriteObject* self, PyObject* args) { + /* (size), color: int, chroma: int, premultiplied: int */ + struct heif_image* image; + int width, height, colorspace, chroma, premultiplied; + if (!PyArg_ParseTuple(args, "(ii)iii", &width, &height, &colorspace, &chroma, &premultiplied)) + return NULL; + + if (check_error(heif_image_create(width, height, colorspace, chroma, &image))) + return NULL; + if (premultiplied) + heif_image_set_premultiplied_alpha(image, 1); + + CtxWriteImageObject* ctx_write_image = PyObject_New(CtxWriteImageObject, &CtxWriteImage_Type); + if (!ctx_write_image) { + heif_image_release(image); + PyErr_SetString(PyExc_RuntimeError, "could not create CtxWriteImage object"); + return NULL; + } + ctx_write_image->chroma = chroma; + ctx_write_image->image = image; + ctx_write_image->handle = NULL; + return (PyObject*)ctx_write_image; +} + +static PyObject* _CtxWrite_finalize(CtxWriteObject* self) { + PyObject *ret = NULL; + struct heif_error error = heif_context_write(self->ctx, &ctx_writer, &ret); + if (!check_error(error)) { + if (ret != NULL) + return ret; + PyErr_SetString(PyExc_RuntimeError, "Unknown runtime or memory error"); + } + return NULL; +} + +static struct PyMethodDef _CtxWrite_methods[] = { + {"set_parameter", (PyCFunction)_CtxWrite_set_parameter, METH_VARARGS}, + {"create_image", (PyCFunction)_CtxWriteImage_create, METH_VARARGS}, + {"finalize", (PyCFunction)_CtxWrite_finalize, METH_NOARGS}, + {NULL, NULL} +}; + +/* =========== CtxImage ======== */ + +static void _CtxImage_destructor(CtxImageObject* self) { + if (self->heif_image) + heif_image_release(self->heif_image); + if (self->handle) + heif_image_handle_release(self->handle); + Py_DECREF(self->file_bytes); + PyObject_Del(self); +} + +PyObject* _CtxImage(struct heif_image_handle* handle, int hdr_to_8bit, int bgr_mode, int postprocess, + int primary, PyObject* file_bytes) { + CtxImageObject *ctx_image = PyObject_New(CtxImageObject, &CtxImage_Type); + if (!ctx_image) { + heif_image_handle_release(handle); + RETURN_NONE + } + ctx_image->width = heif_image_handle_get_width(handle); + ctx_image->height = heif_image_handle_get_height(handle); + strcpy(ctx_image->mode, "RGB"); + int stride = ctx_image->width * 3; + ctx_image->alpha = heif_image_handle_has_alpha_channel(handle); + if (ctx_image->alpha) { + strcat(ctx_image->mode, heif_image_handle_is_premultiplied_alpha(handle) ? "a" : "A"); + stride = ctx_image->width * 4; + } + int bits_per_pxl = heif_image_handle_get_luma_bits_per_pixel(handle); + if ((bits_per_pxl > 8) && (!hdr_to_8bit)) { + strcat(ctx_image->mode, ";16"); + stride = stride * 2; + } + ctx_image->bits = bits_per_pxl; + ctx_image->hdr_to_8bit = hdr_to_8bit; + ctx_image->bgr_mode = bgr_mode; + ctx_image->handle = handle; + ctx_image->heif_image = NULL; + ctx_image->data = NULL; + ctx_image->postprocess = postprocess; + ctx_image->stride = stride; + ctx_image->primary = primary; + ctx_image->file_bytes = file_bytes; + Py_INCREF(file_bytes); + return (PyObject*)ctx_image; +} + +static PyObject* _CtxImage_size_mode(CtxImageObject* self, void* closure) { + return Py_BuildValue("(ii)s", self->width, self->height, self->mode); +} + +static PyObject* _CtxImage_primary(CtxImageObject* self, void* closure) { + return Py_BuildValue("i", self->primary); +} + +static PyObject* _CtxImage_bit_depth(CtxImageObject* self, void* closure) { + return Py_BuildValue("i", self->bits); +} + +static PyObject* _CtxImage_color_profile(CtxImageObject* self, void* closure) { + enum heif_color_profile_type profile_type = heif_image_handle_get_color_profile_type(self->handle); + if (profile_type == heif_color_profile_type_not_present) + return PyDict_New(); + + if (profile_type == heif_color_profile_type_nclx) { + struct heif_color_profile_nclx* nclx_profile; + if (check_error(heif_image_handle_get_nclx_color_profile(self->handle, &nclx_profile))) + return NULL; + + PyObject* result = PyDict_New(); + __PyDict_SetItemString(result, "type", PyUnicode_FromString("nclx")); + PyObject* d = PyDict_New(); + __PyDict_SetItemString(d, "color_primaries", PyLong_FromLong(nclx_profile->color_primaries)); + __PyDict_SetItemString(d, "transfer_characteristics", PyLong_FromLong(nclx_profile->transfer_characteristics)); + __PyDict_SetItemString(d, "matrix_coefficients", PyLong_FromLong(nclx_profile->matrix_coefficients)); + __PyDict_SetItemString(d, "full_range_flag", PyLong_FromLong(nclx_profile->full_range_flag)); + __PyDict_SetItemString(d, "color_primary_red_x", PyFloat_FromDouble(nclx_profile->color_primary_red_x)); + __PyDict_SetItemString(d, "color_primary_red_y", PyFloat_FromDouble(nclx_profile->color_primary_red_y)); + __PyDict_SetItemString(d, "color_primary_green_x", PyFloat_FromDouble(nclx_profile->color_primary_green_x)); + __PyDict_SetItemString(d, "color_primary_green_y", PyFloat_FromDouble(nclx_profile->color_primary_green_y)); + __PyDict_SetItemString(d, "color_primary_blue_x", PyFloat_FromDouble(nclx_profile->color_primary_blue_x)); + __PyDict_SetItemString(d, "color_primary_blue_y", PyFloat_FromDouble(nclx_profile->color_primary_blue_y)); + __PyDict_SetItemString(d, "color_primary_white_x", PyFloat_FromDouble(nclx_profile->color_primary_white_x)); + __PyDict_SetItemString(d, "color_primary_white_y", PyFloat_FromDouble(nclx_profile->color_primary_white_y)); + heif_nclx_color_profile_free(nclx_profile); + __PyDict_SetItemString(result, "data", d); + return result; + } + + PyObject* result = PyDict_New(); + __PyDict_SetItemString( + result, "type", PyUnicode_FromString(profile_type == heif_color_profile_type_rICC ? "rICC" : "prof")); + size_t size = heif_image_handle_get_raw_color_profile_size(self->handle); + if (!size) + __PyDict_SetItemString(result, "data", PyBytes_FromString("")); + else { + void* data = malloc(size); + if (!data) { + Py_DECREF(result); + result = NULL; + PyErr_SetString(PyExc_OSError, "Out of Memory"); + } + else { + if (!check_error(heif_image_handle_get_raw_color_profile(self->handle, data))) + __PyDict_SetItemString(result, "data", PyBytes_FromStringAndSize(data, size)); + else { + Py_DECREF(result); + result = NULL; + } + free(data); + } + } + return result; +} + +static PyObject* _CtxImage_metadata(CtxImageObject* self, void* closure) { + PyObject *meta_item_info; + const char *type, *content_type; + size_t size; + void* data; + struct heif_error error; + + int n_metas = heif_image_handle_get_number_of_metadata_blocks(self->handle, NULL); + if (!n_metas) + return PyList_New(0); + + heif_item_id* meta_ids = (heif_item_id*)malloc(n_metas * sizeof(heif_item_id)); + if (!meta_ids) { + PyErr_SetString(PyExc_OSError, "Out of Memory"); + return NULL; + } + n_metas = heif_image_handle_get_list_of_metadata_block_IDs(self->handle, NULL, meta_ids, n_metas); + PyObject* meta_list = PyList_New(n_metas); + if (!meta_list) { + free(meta_ids); + PyErr_SetString(PyExc_OSError, "Out of Memory"); + return NULL; + } + + for (int i = 0; i < n_metas; i++) { + meta_item_info = NULL; + type = heif_image_handle_get_metadata_type(self->handle, meta_ids[i]); + content_type = heif_image_handle_get_metadata_content_type(self->handle, meta_ids[i]); + size = heif_image_handle_get_metadata_size(self->handle, meta_ids[i]); + data = malloc(size); + if (data) { + error = heif_image_handle_get_metadata(self->handle, meta_ids[i], data); + if (error.code == heif_error_Ok) { + meta_item_info = PyDict_New(); + __PyDict_SetItemString(meta_item_info, "type", PyUnicode_FromString(type)); + __PyDict_SetItemString(meta_item_info, "content_type", PyUnicode_FromString(content_type)); + __PyDict_SetItemString(meta_item_info, "data", PyBytes_FromStringAndSize((char*)data, size)); + } + free(data); + } + if (!meta_item_info) { + meta_item_info = Py_None; + Py_INCREF(meta_item_info); + } + PyList_SET_ITEM(meta_list, i, meta_item_info); + } + free(meta_ids); + return meta_list; +} + +static PyObject* _CtxImage_thumbnails(CtxImageObject* self, void* closure) { + int n_images = heif_image_handle_get_number_of_thumbnails(self->handle); + if (n_images == 0) + return PyList_New(0); + heif_item_id* images_ids = (heif_item_id*)malloc(n_images * sizeof(heif_item_id)); + if (!images_ids) + return PyList_New(0); + + n_images = heif_image_handle_get_list_of_thumbnail_IDs(self->handle, images_ids, n_images); + PyObject* images_list = PyList_New(n_images); + if (!images_list) { + free(images_ids); + return PyList_New(0); + } + + struct heif_image_handle* handle; + struct heif_error error; + for (int i = 0; i < n_images; i++) { + int box = 0; + error = heif_image_handle_get_thumbnail(self->handle, images_ids[i], &handle); + if (error.code == heif_error_Ok) { + int width = heif_image_handle_get_width(handle); + int height = heif_image_handle_get_height(handle); + heif_image_handle_release(handle); + box = width >= height ? width : height; + } + PyList_SET_ITEM(images_list, i, PyLong_FromSsize_t(box)); + } + free(images_ids); + return images_list; +} + +int decode_image(CtxImageObject* self) { + struct heif_error error; + + Py_BEGIN_ALLOW_THREADS + struct heif_decoding_options *decode_options = heif_decoding_options_alloc(); + decode_options->convert_hdr_to_8bit = self->hdr_to_8bit; + int chroma; + if ((self->bits == 8) || (self->hdr_to_8bit)) + chroma = self->alpha ? heif_chroma_interleaved_RGBA : heif_chroma_interleaved_RGB; + else + chroma = self->alpha ? heif_chroma_interleaved_RRGGBBAA_LE : heif_chroma_interleaved_RRGGBB_LE; + error = heif_decode_image(self->handle, &self->heif_image, heif_colorspace_RGB, chroma, decode_options); + heif_decoding_options_free(decode_options); + Py_END_ALLOW_THREADS + if (check_error(error)) + return 0; + + int stride; + self->data = heif_image_get_plane(self->heif_image, heif_channel_interleaved, &stride); + if (!self->data) { + heif_image_release(self->heif_image); + self->heif_image = NULL; + PyErr_SetString(PyExc_RuntimeError, "heif_image_get_plane failed"); + return 0; + } + + if (!self->postprocess) { + self->stride = stride; + return 1; + } + + if ((self->bgr_mode) || (self->stride != stride) || ((self->bits > 8) && (!self->hdr_to_8bit))) { + int invalid_mode = 0; + Py_BEGIN_ALLOW_THREADS + if ((self->hdr_to_8bit) || (self->bits == 8)) { + uint8_t *in = (uint8_t*)self->data; + uint8_t *out = (uint8_t*)self->data; + if (!self->bgr_mode) // just remove stride + for (int i = 0; i < self->height; i++) { + memmove(out, in, self->stride); // possible will change to memcpy and set -D_FORTIFY_SOURCE=0 + in += stride; + out += self->stride; + } + else { // remove stride && convert to BGR(A) + uint8_t tmp; + if (!self->alpha) + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + tmp = in[i2 * 3 + 0]; + out[i2 * 3 + 0] = in[i2 * 3 + 2]; + out[i2 * 3 + 1] = in[i2 * 3 + 1]; + out[i2 * 3 + 2] = tmp; + } + in += stride; + out += self->stride; + } + else + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + tmp = in[i2 * 4 + 0]; + out[i2 * 4 + 0] = in[i2 * 4 + 2]; + out[i2 * 4 + 1] = in[i2 * 4 + 1]; + out[i2 * 4 + 2] = tmp; + out[i2 * 4 + 3] = in[i2 * 4 + 3]; + } + in += stride; + out += self->stride; + } + } + } + else { + uint16_t *in = (uint16_t*)self->data; + uint16_t *out = (uint16_t*)self->data; + uint16_t tmp; + if ((self->bits == 10) && (self->alpha) && (!self->bgr_mode)) + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + out[i2 * 4 + 0] = in[i2 * 4 + 0] << 6; + out[i2 * 4 + 1] = in[i2 * 4 + 1] << 6; + out[i2 * 4 + 2] = in[i2 * 4 + 2] << 6; + out[i2 * 4 + 3] = in[i2 * 4 + 3] << 6; + } + in += stride / 2; + out += self->stride / 2; + } + else if ((self->bits == 10) && (self->alpha) && (self->bgr_mode)) + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + tmp = in[i2 * 4 + 0]; + out[i2 * 4 + 0] = in[i2 * 4 + 2] << 6; + out[i2 * 4 + 1] = in[i2 * 4 + 1] << 6; + out[i2 * 4 + 2] = tmp << 6; + out[i2 * 4 + 3] = in[i2 * 4 + 3] << 6; + } + in += stride / 2; + out += self->stride / 2; + } + else if ((self->bits == 10) && (!self->alpha) && (!self->bgr_mode)) + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + out[i2 * 3 + 0] = in[i2 * 3 + 0] << 6; + out[i2 * 3 + 1] = in[i2 * 3 + 1] << 6; + out[i2 * 3 + 2] = in[i2 * 3 + 2] << 6; + } + in += stride / 2; + out += self->stride / 2; + } + else if ((self->bits == 10) && (!self->alpha) && (self->bgr_mode)) + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + tmp = in[i2 * 3 + 0]; + out[i2 * 3 + 0] = in[i2 * 3 + 2] << 6; + out[i2 * 3 + 1] = in[i2 * 3 + 1] << 6; + out[i2 * 3 + 2] = tmp << 6; + } + in += stride / 2; + out += self->stride / 2; + } + else if ((self->bits == 12) && (self->alpha) && (!self->bgr_mode)) + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + out[i2 * 4 + 0] = in[i2 * 4 + 0] << 4; + out[i2 * 4 + 1] = in[i2 * 4 + 1] << 4; + out[i2 * 4 + 2] = in[i2 * 4 + 2] << 4; + out[i2 * 4 + 3] = in[i2 * 4 + 3] << 4; + } + in += stride / 2; + out += self->stride / 2; + } + else if ((self->bits == 12) && (self->alpha) && (self->bgr_mode)) { + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + tmp = in[i2 * 4 + 0]; + out[i2 * 4 + 0] = in[i2 * 4 + 2] << 4; + out[i2 * 4 + 1] = in[i2 * 4 + 1] << 4; + out[i2 * 4 + 2] = tmp << 4; + out[i2 * 4 + 3] = in[i2 * 4 + 3] << 4; + } + in += stride / 2; + out += self->stride / 2; + } + } + else if ((self->bits == 12) && (!self->alpha) && (!self->bgr_mode)) + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + out[i2 * 3 + 0] = in[i2 * 3 + 0] << 4; + out[i2 * 3 + 1] = in[i2 * 3 + 1] << 4; + out[i2 * 3 + 2] = in[i2 * 3 + 2] << 4; + } + in += stride / 2; + out += self->stride / 2; + } + else if ((self->bits == 12) && (!self->alpha) && (self->bgr_mode)) + for (int i = 0; i < self->height; i++) { + for (int i2 = 0; i2 < self->width; i2++) { + tmp = in[i2 * 3 + 0]; + out[i2 * 3 + 0] = in[i2 * 3 + 2] << 4; + out[i2 * 3 + 1] = in[i2 * 3 + 1] << 4; + out[i2 * 3 + 2] = tmp << 4; + } + in += stride / 2; + out += self->stride / 2; + } + else + invalid_mode = 1; + } + Py_END_ALLOW_THREADS + if (invalid_mode) { + PyErr_SetString(PyExc_ValueError, "invalid plane mode value"); + return 0; + } + } + return 1; +} + +static PyObject* _CtxImage_stride(CtxImageObject* self, void* closure) { + if ((!self->postprocess) && (!self->data)) + if (!decode_image(self)) + return NULL; + return PyLong_FromSsize_t(self->stride); +} + +static PyObject* _CtxImage_data(CtxImageObject* self, void* closure) { + if (!self->data) + if (!decode_image(self)) + return NULL; + return PyMemoryView_FromMemory((char*)self->data, self->stride * self->height, PyBUF_READ); +} + +static struct PyGetSetDef _CtxImage_getseters[] = { + {"size_mode", (getter)_CtxImage_size_mode, NULL, NULL, NULL}, + {"primary", (getter)_CtxImage_primary, NULL, NULL, NULL}, + {"bit_depth", (getter)_CtxImage_bit_depth, NULL, NULL, NULL}, + {"color_profile", (getter)_CtxImage_color_profile, NULL, NULL, NULL}, + {"metadata", (getter)_CtxImage_metadata, NULL, NULL, NULL}, + {"thumbnails", (getter)_CtxImage_thumbnails, NULL, NULL, NULL}, + {"stride", (getter)_CtxImage_stride, NULL, NULL, NULL}, + {"data", (getter)_CtxImage_data, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL, NULL} +}; + +/* =========== Functions ======== */ + +static PyObject* _CtxWrite(PyObject* self, PyObject* args) { + /* compression_format: int, quality: int */ + struct heif_encoder* encoder; + struct heif_error error; + int compression_format, quality; + + if (!PyArg_ParseTuple(args, "ii", &compression_format, &quality)) + return NULL; + + struct heif_context* ctx = heif_context_alloc(); + error = heif_context_get_encoder_for_format(ctx, compression_format, &encoder); + if (check_error(error)) { + heif_context_free(ctx); + return NULL; + } + + if (quality == -1) + error = heif_encoder_set_lossless(encoder, 1); + else if (quality >= 0) + error = heif_encoder_set_lossy_quality(encoder, quality); + if (check_error(error)) { + heif_encoder_release(encoder); + heif_context_free(ctx); + return NULL; + } + + CtxWriteObject* ctx_write = PyObject_New(CtxWriteObject, &CtxWrite_Type); + if (!ctx_write) { + heif_encoder_release(encoder); + heif_context_free(ctx); + PyErr_SetString(PyExc_RuntimeError, "could not create CtxWrite object"); + return NULL; + } + ctx_write->ctx = ctx; + ctx_write->encoder = encoder; + ctx_write->size = 0; + ctx_write->data = NULL; + return (PyObject*)ctx_write; +} + +static PyObject* _load_file(PyObject* self, PyObject* args) { + int hdr_to_8bit, threads_count, bgr_mode, postprocess; + PyObject *heif_bytes; + + if (!PyArg_ParseTuple(args,"Oiiii", &heif_bytes, &threads_count, &hdr_to_8bit, &bgr_mode, &postprocess)) + return NULL; + + struct heif_context* heif_ctx = heif_context_alloc(); + if (check_error(heif_context_read_from_memory_without_copy( + heif_ctx, (void*)PyBytes_AS_STRING(heif_bytes), PyBytes_GET_SIZE(heif_bytes), NULL))) { + heif_context_free(heif_ctx); + return NULL; + } + + #if LIBHEIF_HAVE_VERSION(1,13,0) + heif_context_set_max_decoding_threads(heif_ctx, threads_count); + #endif + + heif_item_id primary_image_id; + if (check_error(heif_context_get_primary_image_ID(heif_ctx, &primary_image_id))) { + heif_context_free(heif_ctx); + return NULL; + } + + int n_images = heif_context_get_number_of_top_level_images(heif_ctx); + heif_item_id* images_ids = (heif_item_id*)malloc(n_images * sizeof(heif_item_id)); + if (!images_ids) { + heif_context_free(heif_ctx); + PyErr_SetString(PyExc_OSError, "Out of Memory"); + return NULL; + } + n_images = heif_context_get_list_of_top_level_image_IDs(heif_ctx, images_ids, n_images); + PyObject* images_list = PyList_New(n_images); + if (!images_list) { + free(images_ids); + heif_context_free(heif_ctx); + PyErr_SetString(PyExc_OSError, "Out of Memory"); + return NULL; + } + + struct heif_image_handle* handle; + struct heif_error error; + for (int i = 0; i < n_images; i++) { + int primary = 0; + if (images_ids[i] == primary_image_id) { + error = heif_context_get_primary_image_handle(heif_ctx, &handle); + primary = 1; + } + else + error = heif_context_get_image_handle(heif_ctx, images_ids[i], &handle); + if (error.code == heif_error_Ok) + PyList_SET_ITEM(images_list, i, _CtxImage(handle, hdr_to_8bit, bgr_mode, postprocess, primary, heif_bytes)); + else { + Py_INCREF(Py_None); + PyList_SET_ITEM(images_list, i, Py_None); + } + } + free(images_ids); + heif_context_free(heif_ctx); + return images_list; +} + +/* =========== Module =========== */ + +static PyMethodDef heifMethods[] = { + {"CtxWrite", (PyCFunction)_CtxWrite, METH_VARARGS}, + {"load_file", (PyCFunction)_load_file, METH_VARARGS}, + {NULL, NULL} +}; + +static PyTypeObject CtxWriteImage_Type = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "CtxWriteImage", + .tp_basicsize = sizeof(CtxWriteImageObject), + .tp_itemsize = 0, + .tp_dealloc = (destructor)_CtxWriteImage_destructor, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_methods = _CtxWriteImage_methods, +}; + +static PyTypeObject CtxWrite_Type = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "CtxWrite", + .tp_basicsize = sizeof(CtxWriteObject), + .tp_itemsize = 0, + .tp_dealloc = (destructor)_CtxWrite_destructor, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_methods = _CtxWrite_methods, +}; + +static PyTypeObject CtxImage_Type = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "CtxImage", + .tp_basicsize = sizeof(CtxImageObject), + .tp_itemsize = 0, + .tp_dealloc = (destructor)_CtxImage_destructor, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_getset = _CtxImage_getseters, +}; + +static int setup_module(PyObject* m) { + PyObject* d = PyModule_GetDict(m); + + if (PyType_Ready(&CtxWriteImage_Type) < 0) + return -1; + + if (PyType_Ready(&CtxWrite_Type) < 0) + return -1; + + if (PyType_Ready(&CtxImage_Type) < 0) + return -1; + + const struct heif_encoder_descriptor* encoder_descriptor; + const char* x265_version = ""; + if (heif_context_get_encoder_descriptors(NULL, heif_compression_HEVC, NULL, &encoder_descriptor, 1)) + x265_version = heif_encoder_descriptor_get_name(encoder_descriptor); + const char* aom_version = ""; + if (heif_context_get_encoder_descriptors(NULL, heif_compression_AV1, NULL, &encoder_descriptor, 1)) + aom_version = heif_encoder_descriptor_get_name(encoder_descriptor); + + PyObject* version_dict = PyDict_New(); + __PyDict_SetItemString(version_dict, "libheif", PyUnicode_FromString(heif_get_version())); + __PyDict_SetItemString(version_dict, "HEIF", PyUnicode_FromString(x265_version)); + __PyDict_SetItemString(version_dict, "AVIF", PyUnicode_FromString(aom_version)); + + if (__PyDict_SetItemString(d, "lib_info", version_dict) < 0) + return -1; + return 0; +} + +PyMODINIT_FUNC PyInit__pillow_heif(void) { + static PyModuleDef module_def = { + PyModuleDef_HEAD_INIT, + "_pillow_heif", /* m_name */ + NULL, /* m_doc */ + -1, /* m_size */ + heifMethods, /* m_methods */ + }; + + PyObject* m = PyModule_Create(&module_def); + if (setup_module(m) < 0) + return NULL; + return m; +} diff --git a/pillow_heif/_version.py b/pillow_heif/_version.py index 09a05876..fa780677 100644 --- a/pillow_heif/_version.py +++ b/pillow_heif/_version.py @@ -1,3 +1,3 @@ -""" Version of pillow_heif """ +""" Version of pillow_heif""" -__version__ = "0.9.3" +__version__ = "0.10.0.dev0" diff --git a/pillow_heif/as_plugin.py b/pillow_heif/as_plugin.py index 90bc7beb..d927e0b9 100644 --- a/pillow_heif/as_plugin.py +++ b/pillow_heif/as_plugin.py @@ -2,58 +2,64 @@ Plugins for Pillow library. """ -from typing import Any +from itertools import chain +from typing import Union from warnings import warn -from PIL import Image, ImageFile +from _pillow_heif import lib_info +from PIL import Image, ImageFile, ImageSequence from . import options -from ._lib_info import have_decoder_for_format, have_encoder_for_format -from .constants import HeifCompressionFormat, HeifErrorCode -from .error import HeifError -from .heif import HeifFile, open_heif -from .misc import _get_bytes, set_orientation +from .constants import HeifCompressionFormat +from .heif import HeifFile +from .misc import ( + CtxEncode, + _exif_from_pillow, + _get_bytes, + _get_primary_index, + _pil_to_supported_mode, + _rotate_pil, + _xmp_from_pillow, + set_orientation, +) class _LibHeifImageFile(ImageFile.ImageFile): """Base class with all functionality for ``HeifImageFile`` and ``AvifImageFile`` classes.""" - heif_file: Any - _close_exclusive_fp_after_loading = False + heif_file: Union[HeifFile, None] + _close_exclusive_fp_after_loading = True def __init__(self, *args, **kwargs): self.__frame = 0 - self.heif_file = None super().__init__(*args, **kwargs) def _open(self): try: - heif_file = open_heif(self.fp) - except HeifError as exception: + heif_file = HeifFile(self.fp, convert_hdr_to_8bit=True, postprocess=False) + except (OSError, ValueError, SyntaxError, RuntimeError, EOFError) as exception: raise SyntaxError(str(exception)) from None self.custom_mimetype = heif_file.mimetype self.heif_file = heif_file - self.__frame = heif_file.primary_index() + self.__frame = heif_file.primary_index self._init_from_heif_file(self.__frame) self.tile = [] def load(self): if self.heif_file: - frame_heif = self.heif_file[self.tell()] self.load_prepare() + frame_heif = self.heif_file[self.tell()] try: - self.frombytes(frame_heif.data, "raw", (frame_heif.mode, frame_heif.stride)) - except HeifError as exc: - truncated = exc.code == HeifErrorCode.DECODER_PLUGIN_ERROR and exc.subcode == 100 - if not truncated or not ImageFile.LOAD_TRUNCATED_IMAGES: + self.frombytes(bytes(frame_heif.data), "raw", (frame_heif.mode, frame_heif.stride)) + except EOFError: + if not ImageFile.LOAD_TRUNCATED_IMAGES: raise + # In any case, we close `fp`, since the input data bytes are held by the `heif_file` class. + if self.fp and getattr(self, "_exclusive_fp", False) and hasattr(self.fp, "close"): + self.fp.close() + self.fp = None if not self.is_animated: - self.info["thumbnails"] = [i.clone_nd() for i in self.info["thumbnails"]] self.heif_file = None - self._close_exclusive_fp_after_loading = True - if self.fp and getattr(self, "_exclusive_fp", False) and hasattr(self.fp, "close"): - self.fp.close() - self.fp = None return super().load() def getxmp(self) -> dict: @@ -103,11 +109,11 @@ def _seek_check(self, frame): return self.tell() != frame def _init_from_heif_file(self, img_index: int) -> None: - self._size = self.heif_file[img_index].size - self.mode = self.heif_file[img_index].mode - self.info = self.heif_file[img_index].info - self.info["thumbnails"] = self.heif_file[img_index].thumbnails - self.info["original_orientation"] = set_orientation(self.info) + if self.heif_file: + self._size = self.heif_file[img_index].size + self.mode = self.heif_file[img_index].mode + self.info = self.heif_file[img_index].info + self.info["original_orientation"] = set_orientation(self.info) class HeifImageFile(_LibHeifImageFile): @@ -138,13 +144,11 @@ def _is_supported_heif(fp) -> bool: def _save_heif(im, fp, _filename): - heif_file = HeifFile().add_from_pillow(im, load_one=True, for_encoding=True) - heif_file.save(fp, save_all=False, **im.encoderinfo, dont_copy=True) + __save_one(im, fp, HeifCompressionFormat.HEVC) def _save_all_heif(im, fp, _filename): - heif_file = HeifFile().add_from_pillow(im, ignore_primary=False, for_encoding=True) - heif_file.save(fp, save_all=True, **im.encoderinfo, dont_copy=True) + __save_all(im, fp, HeifCompressionFormat.HEVC) def register_heif_opener(**kwargs) -> None: @@ -155,7 +159,7 @@ def register_heif_opener(**kwargs) -> None: __options_update(**kwargs) Image.register_open(HeifImageFile.format, HeifImageFile, _is_supported_heif) - if have_encoder_for_format(HeifCompressionFormat.HEVC): + if lib_info["HEIF"]: Image.register_save(HeifImageFile.format, _save_heif) Image.register_save_all(HeifImageFile.format, _save_all_heif) extensions = [".heic", ".heics", ".heif", ".heifs", ".hif"] @@ -183,13 +187,11 @@ def _is_supported_avif(fp) -> bool: def _save_avif(im, fp, _filename): - heif_file = HeifFile().add_from_pillow(im, load_one=True, for_encoding=True) - heif_file.save(fp, save_all=False, **im.encoderinfo, dont_copy=True, format="AVIF") + __save_one(im, fp, HeifCompressionFormat.AV1) def _save_all_avif(im, fp, _filename): - heif_file = HeifFile().add_from_pillow(im, ignore_primary=False, for_encoding=True) - heif_file.save(fp, save_all=True, **im.encoderinfo, dont_copy=True, format="AVIF") + __save_all(im, fp, HeifCompressionFormat.AV1) def register_avif_opener(**kwargs) -> None: @@ -198,17 +200,13 @@ def register_avif_opener(**kwargs) -> None: :param kwargs: dictionary with values to set in options. See: :ref:`options`. """ - if not have_decoder_for_format(HeifCompressionFormat.AV1) and not have_encoder_for_format( - HeifCompressionFormat.AV1 - ): + if not lib_info["AVIF"]: warn("This version of `pillow-heif` was built without AVIF support.") return __options_update(**kwargs) - if have_decoder_for_format(HeifCompressionFormat.AV1): - Image.register_open(AvifImageFile.format, AvifImageFile, _is_supported_avif) - if have_encoder_for_format(HeifCompressionFormat.AV1): - Image.register_save(AvifImageFile.format, _save_avif) - Image.register_save_all(AvifImageFile.format, _save_all_avif) + Image.register_open(AvifImageFile.format, AvifImageFile, _is_supported_avif) + Image.register_save(AvifImageFile.format, _save_avif) + Image.register_save_all(AvifImageFile.format, _save_all_avif) # extensions = [".avif", ".avifs"] extensions = [".avif"] Image.register_mime(AvifImageFile.format, "image/avif") @@ -229,3 +227,39 @@ def __options_update(**kwargs): options.DECODE_THREADS = v else: warn(f"Unknown option: {k}") + + +def __save_one(im, fp, compression_format: HeifCompressionFormat): + ctx_write = CtxEncode(compression_format, **im.encoderinfo) + _pil_encode_image(ctx_write, im, True, **im.encoderinfo) + ctx_write.save(fp) + + +def __save_all(im, fp, compression_format: HeifCompressionFormat): + ctx_write = CtxEncode(compression_format, **im.encoderinfo) + current_frame = im.tell() if hasattr(im, "tell") else None + append_images = im.encoderinfo.get("append_images", []) + primary_index = _get_primary_index( + chain(ImageSequence.Iterator(im), append_images), im.encoderinfo.get("primary_index", None) + ) + for i, frame in enumerate(chain(ImageSequence.Iterator(im), append_images)): + _pil_encode_image(ctx_write, frame, i == primary_index, **im.encoderinfo) + if current_frame is not None and hasattr(im, "seek"): + im.seek(current_frame) + ctx_write.save(fp) + + +def _pil_encode_image(ctx: CtxEncode, img: Image.Image, primary: bool, **kwargs): + if img.size[0] <= 0 or img.size[1] <= 0: + raise ValueError("Empty images are not supported.") + _info = img.info.copy() + _info["exif"] = _exif_from_pillow(img) + _info["xmp"] = _xmp_from_pillow(img) + if primary: + _info.update(**kwargs) + _info["primary"] = primary + original_orientation = set_orientation(_info) + _img = _pil_to_supported_mode(img) + if original_orientation is not None and original_orientation != 1: + _img = _rotate_pil(_img, original_orientation) + ctx.add_image(_img.size, _img.mode, _img.tobytes(), **_info) diff --git a/pillow_heif/constants.py b/pillow_heif/constants.py index 7b760594..d659ada9 100644 --- a/pillow_heif/constants.py +++ b/pillow_heif/constants.py @@ -1,5 +1,5 @@ """ -Enums from LibHeif that can be used. +Enums from LibHeif that are used. """ from enum import IntEnum @@ -45,75 +45,6 @@ class HeifColorspace(IntEnum): """Monochrome colorspace.""" -class HeifChannel(IntEnum): - """Type of color channel.""" - - Y = 0 - """Luma component""" - CB = 1 - """Blue difference""" - CR = 2 - """Red difference""" - R = 3 - """Red color channel""" - G = 4 - """Green color channel""" - B = 5 - """Blue color channel""" - ALPHA = 6 - """Alpha color channel""" - INTERLEAVED = 10 - """Interleaved color channel""" - - -def encode_fourcc(fourcc): - """Encodes 4 bytes in reverse order""" - return ord(fourcc[0]) << 24 | ord(fourcc[1]) << 16 | ord(fourcc[2]) << 8 | ord(fourcc[3]) - - -class HeifColorProfileType(IntEnum): - """ - Color profile type definitions. - If there is an ICC profile and an NCLX profile, the ICC profile prioritized. - """ - - NOT_PRESENT = 0 - """There is no color profile.""" - NCLX = encode_fourcc("nclx") - """ISO/IEC 29199-2:2020""" - RICC = encode_fourcc("rICC") - """Restricted ICC. ISO/IEC 14496-12:2022""" - PROF = encode_fourcc("prof") - """Usual ICC profile.""" - - -class HeifErrorCode(IntEnum): - """Possible LibHeif error codes in :py:class:`~pillow_heif.HeifError`""" - - OK = 0 - """Everything ok, no error occurred.""" - INPUT_DOES_NOT_EXIST = 1 - """Input file does not exist.""" - INVALID_INPUT = 2 - """Error in input file. Corrupted or invalid content.""" - UNSUPPORTED_FILETYPE = 3 - """Input file type is not supported.""" - UNSUPPORTED_FEATURE = 4 - """Image requires an unsupported decoder feature.""" - USAGE_ERROR = 5 - """Library API has been used in an invalid way.""" - MEMORY_ALLOCATION_ERROR = 6 - """Could not allocate enough memory.""" - DECODER_PLUGIN_ERROR = 7 - """The decoder plugin generated an error.""" - ENCODER_PLUGIN_ERROR = 8 - """The encoder plugin generated an error.""" - ENCODING_ERROR = 9 - """Error during encoding or when writing to the output.""" - COLOR_PROFILE_DOES_NOT_EXIST = 10 - """Application has asked for a color profile type that does not exist.""" - - class HeifCompressionFormat(IntEnum): """Possible LibHeif compression formats.""" @@ -133,3 +64,104 @@ class HeifCompressionFormat(IntEnum): """The compression format is EVC.""" JPEG2000 = 7 """The compression format is JPEG200 ISO/IEC 15444-16:2021""" + + +class HeifColorPrimaries(IntEnum): + """Possible NCLX color_primaries values.""" + + ITU_R_BT_709_5 = 1 + """g=0.3;0.6, b=0.15;0.06, r=0.64;0.33, w=0.3127,0.3290""" + UNSPECIFIED = 2 + """No color primaries""" + ITU_R_BT_470_6_SYSTEM_M = 4 + """Unknown""" + ITU_R_BT_470_6_SYSTEM_B_G = 5 + """Unknown""" + ITU_R_BT_601_6 = 6 + """Unknown""" + SMPTE_240M = 7 + """Unknown""" + GENERIC_FILM = 8 + """Unknown""" + ITU_R_BT_2020_2_AND_2100_0 = 9 + """Unknown""" + SMPTE_ST_428_1 = 10 + """Unknown""" + SMPTE_RP_431_2 = 11 + """Unknown""" + SMPTE_EG_432_1 = 12 + """Unknown""" + EBU_TECH_3213_E = 22 + """Unknown""" + + +class HeifTransferCharacteristics(IntEnum): + """Possible NCLX transfer_characteristics values.""" + + ITU_R_BT_709_5 = 1 + """Unknown""" + UNSPECIFIED = 2 + """No transfer characteristics""" + ITU_R_BT_470_6_SYSTEM_M = 4 + """Unknown""" + ITU_R_BT_470_6_SYSTEM_B_G = 5 + """Unknown""" + ITU_R_BT_601_6 = 6 + """Unknown""" + SMPTE_240M = 7 + """Unknown""" + LINEAR = 8 + """Unknown""" + LOGARITHMIC_100 = 9 + """Unknown""" + LOGARITHMIC_100_SQRT10 = 10 + """Unknown""" + IEC_61966_2_4 = 11 + """Unknown""" + ITU_R_BT_1361 = 12 + """Unknown""" + IEC_61966_2_1 = 13 + """Unknown""" + ITU_R_BT_2020_2_10BIT = 14 + """Unknown""" + ITU_R_BT_2020_2_12BIT = 15 + """Unknown""" + ITU_R_BT_2100_0_PQ = 16 + """Unknown""" + SMPTE_ST_428_1 = 17 + """Unknown""" + ITU_R_BT_2100_0_HLG = 18 + """Unknown""" + + +class HeifMatrixCoefficients(IntEnum): + """Possible NCLX matrix_coefficients values.""" + + RGB_GBR = 0 + """Unknown""" + ITU_R_BT_709_5 = 1 + """Unknown""" + UNSPECIFIED = 2 + """Unknown""" + US_FCC_T47 = 4 + """Unknown""" + ITU_R_BT_470_6_SYSTEM_B_G = 5 + """Unknown""" + ITU_R_BT_601_6 = 6 + """Unknown""" + SMPTE_240M = 7 + """Unknown""" + YCGCO = 8 + """Unknown""" + ITU_R_BT_2020_2_NON_CONSTANT_LUMINANCE = 9 + """Unknown""" + ITU_R_BT_2020_2_CONSTANT_LUMINANCE = 10 + """Unknown""" + SMPTE_ST_2085 = 11 + """Unknown""" + CHROMATICITY_DERIVED_NON_CONSTANT_LUMINANCE = 12 + """Unknown""" + CHROMATICITY_DERIVED_CONSTANT_LUMINANCE = 13 + """Unknown""" + ICTCP = 14 + """Unknown""" diff --git a/pillow_heif/error.py b/pillow_heif/error.py deleted file mode 100644 index fb56b510..00000000 --- a/pillow_heif/error.py +++ /dev/null @@ -1,45 +0,0 @@ -""" -Custom exception that can be raised during library calls. -""" - -from _pillow_heif_cffi import ffi - -from .constants import HeifErrorCode - - -class HeifError(ValueError): - """ - Raised in :py:meth:`pillow_heif.open_heif` if an image cannot be opened or corrupted. - - Also, can be raised during image decoding or during saving. - """ - - def __init__(self, *, code, subcode, message): - super().__init__(code, subcode, message) - self.code = code - self.subcode = subcode - self.message = message - - def __str__(self): - return f"Code: {self.code}, Subcode: {self.subcode}, Message: `{self.message}`" - - def __repr__(self): - return f"{repr(HeifErrorCode(self.code))}, {self.subcode}, {self.message}" - - -def check_libheif_error(error_struct) -> None: - """ - Helper function. Checks returned result error_struct from libheif calls and raise exception if error. - - :param error_struct: ``heif_error`` struct from libheif. - - :exception HeifError: If there is an error code. - """ - - if error_struct.code == HeifErrorCode.OK: - return - raise HeifError( - code=error_struct.code, - subcode=error_struct.subcode, - message=ffi.string(error_struct.message).decode(), - ) diff --git a/pillow_heif/heif.py b/pillow_heif/heif.py index 2b6f836c..6891bdf0 100644 --- a/pillow_heif/heif.py +++ b/pillow_heif/heif.py @@ -2,39 +2,34 @@ Functions and classes for heif images to read and write. """ -from typing import Any, Dict, Iterator, List, Optional, Union -from weakref import ref +from copy import deepcopy +from io import SEEK_SET +from typing import Any, Dict, List, Optional, Tuple -from _pillow_heif_cffi import ffi, lib -from PIL import Image, ImageOps, ImageSequence +from _pillow_heif import lib_info, load_file +from PIL import Image from . import options -from ._lib_info import have_encoder_for_format -from ._libheif_ctx import LibHeifCtx, LibHeifCtxWrite -from .constants import HeifChannel, HeifChroma, HeifColorspace, HeifCompressionFormat -from .error import HeifError, HeifErrorCode, check_libheif_error -from .misc import _get_bytes, get_file_mimetype, set_orientation -from .private import ( - FFI_DRY_ALLOC, - MODE_CONVERT, +from .constants import HeifCompressionFormat +from .misc import ( MODE_INFO, - HeifCtxAsDict, - exif_from_pillow, - get_pure_stride, - read_color_profile, - read_metadata, - retrieve_exif, - retrieve_xmp, - set_color_profile, - set_exif, - set_metadata, - set_xmp, - xmp_from_pillow, + CtxEncode, + MimCImage, + _exif_from_pillow, + _get_bytes, + _get_primary_index, + _pil_to_supported_mode, + _retrieve_exif, + _retrieve_xmp, + _rotate_pil, + _xmp_from_pillow, + get_file_mimetype, + set_orientation, ) -class HeifImageBase: - """Base class for :py:class:`HeifImage` and :py:class:`HeifThumbnail`""" +class HeifImage: + """Class represents one image in a :py:class:`~pillow_heif.HeifFile`""" size: tuple """Width and height of the image.""" @@ -45,57 +40,68 @@ class HeifImageBase: For currently supported modes by Pillow-Heif see :ref:`image-modes`.""" - def __init__(self, heif_ctx: Union[LibHeifCtx, HeifCtxAsDict], handle, for_encoding=False): - self._img_data: Dict[str, Any] = {} - self._heif_ctx = heif_ctx - if isinstance(heif_ctx, LibHeifCtx): - self._handle = ffi.gc(handle, lib.heif_image_handle_release) - self.size = ( - lib.heif_image_handle_get_width(self._handle), - lib.heif_image_handle_get_height(self._handle), - ) - self.mode = "RGB" - if bool(lib.heif_image_handle_has_alpha_channel(self._handle)): - if bool(lib.heif_image_handle_is_premultiplied_alpha(self._handle)): - self.mode += "a" - else: - self.mode += "A" - bit_depth = 8 if heif_ctx.to_8bit else lib.heif_image_handle_get_luma_bits_per_pixel(self._handle) - if bit_depth > 8: - self.mode += f";{bit_depth}" - else: - self._handle = None - self.size = heif_ctx.size - self.mode = heif_ctx.mode - if heif_ctx.data: - new_mode = MODE_INFO[self.mode][4] if for_encoding else None - if isinstance(new_mode, tuple): - new_mode = new_mode[1] if options.SAVE_HDR_TO_12_BIT else new_mode[0] - _img = self._create_image(heif_ctx.data, heif_ctx.stride, new_mode) - self._img_to_img_data_dict(_img) + def __init__(self, c_image): + self.size, self.mode = c_image.size_mode + _metadata: List[dict] = c_image.metadata + _exif = _retrieve_exif(_metadata) + _xmp = _retrieve_xmp(_metadata) + _thumbnails: List[Optional[int]] = ( + [i for i in c_image.thumbnails if i is not None] if options.THUMBNAILS else [] + ) + self.info = { + "primary": bool(c_image.primary), + "bit_depth": int(c_image.bit_depth), + "exif": _exif, + "xmp": _xmp, + "metadata": _metadata, + "thumbnails": _thumbnails, + } + _color_profile: Dict[str, Any] = c_image.color_profile + if _color_profile: + if _color_profile["type"] in ("rICC", "prof"): + self.info["icc_profile"] = _color_profile["data"] + self.info["icc_profile_type"] = _color_profile["type"] + else: + self.info["nclx_profile"] = _color_profile["data"] + self._c_image = c_image + self._data = None - @property - def bit_depth(self): - """Image channel pixel bit depth. Possible values: 8, 10, 12, 16 + def __repr__(self): + _bytes = f"{len(self.data)} bytes" if self._data or isinstance(self._c_image, MimCImage) else "no" + return ( + f"<{self.__class__.__name__} {self.size[0]}x{self.size[1]} {self.mode} " + f"with {_bytes} image data and {len(self.info.get('thumbnails', []))} thumbnails>" + ) - .. note:: When ``convert_hdr_to_8bit`` is True, return value will be always ``8`` when - image opened from file(e.g. was not created with ``from_pillow`` or ``add_from_*`` functions).""" + @property + def __array_interface__(self): + """Numpy array interface support""" - return MODE_INFO[self.mode][1] + shape: Tuple[Any, ...] = (self.size[1], self.size[0]) + if MODE_INFO[self.mode][0] > 1: + shape += (MODE_INFO[self.mode][0],) + typestr = "|u1" if self.mode.find(";16") == -1 else " 1: - self.mode += f";{old_mode[1]}" - - @property - def heif_img(self): - self._load_if_not() - return self._img_data.get("img", None) - - @property - def data(self): - """Decodes image and returns image data from ``libheif``. See :ref:`image_data` - - .. note:: Actual size of data returned by ``data`` can be bigger than ``width * height * pixel size``. - - :returns: ``bytes`` of the decoded image from ``libheif``.""" - - self._load_if_not() - return self._img_data.get("data", None) - - @property - def stride(self): - """Decodes image and returns stride. - - :returns: ``int`` stride of the decoded image.""" - - self._load_if_not() - return self._img_data.get("stride", None) - - def convert_to(self, mode: str) -> None: - """Decodes and convert the image in place to the specified mode. - - :param mode: for list of supported conversions, see: :ref:`convert_to` - - :exception KeyError: If conversion between modes is not supported.""" - - if self.mode == mode: - return - current_stride = self.stride - current_data = bytes(self.data) # copying `data` to bytes, so it will not be GC collected. - self.unload() - _img = self._create_image(current_data, current_stride, mode) - self._img_to_img_data_dict(_img) + self.mode = self.mode.replace("A" if value else "a", "a" if value else "A") def to_pillow(self) -> Image.Image: - """Helper method to create :py:class:`PIL.Image.Image` + """Helper method to create :external:py:class:`~PIL.Image.Image` - :returns: :py:class:`PIL.Image.Image` class created from this image/thumbnail.""" + :returns: :external:py:class:`~PIL.Image.Image` class created from an image.""" image = Image.frombytes( self.mode, # noqa self.size, - self.data, + bytes(self.data), "raw", self.mode, self.stride, ) - info = None - if isinstance(self, HeifImage): - image.info["thumbnails"] = [i.clone_nd() for i in getattr(self, "thumbnails", [])] - info = self.info - elif isinstance(self, HeifThumbnail): - _ = self.get_original() - info = _.info if _ else None - if info: - for k in ("exif", "xmp", "metadata", "primary", "icc_profile", "icc_profile_type", "nclx_profile"): - if k in info: - image.info[k] = info[k] - image.info["original_orientation"] = set_orientation(image.info) + image.info = self.info.copy() + image.info["original_orientation"] = set_orientation(image.info) return image - def load(self): - """Decode image. - - Usually, you do not need to call this, image will be decoded automatically - when accessing ``data`` or ``stride`` properties.""" - - self._load_if_not() - return self - - def unload(self): - if self._handle is not None: - self._img_data.clear() - - @property - def __array_interface__(self): - """Numpy array interface support""" - - if isinstance(self, HeifThumbnail) and self.data is None: - raise ValueError("Usage error: thumbnail has no data.") - shape = (self.size[1], self.size[0]) - if MODE_INFO[self.mode][0] > 1: - shape += (MODE_INFO[self.mode][0],) - typestr = MODE_INFO[self.mode][5] - data = bytes(self._get_pure_data()) - return {"shape": shape, "typestr": typestr, "version": 3, "data": data} - - def _color(self) -> HeifColorspace: - return MODE_INFO[self.mode][2] - - def _chroma(self) -> HeifChroma: - return MODE_INFO[self.mode][3] - - def _channel(self) -> HeifChannel: - return HeifChannel.Y if self._color() == HeifColorspace.MONOCHROME else HeifChannel.INTERLEAVED - - def _load_if_not(self): - if self._img_data or self._handle is None: - return - p_options = lib.heif_decoding_options_alloc() - p_options = ffi.gc(p_options, lib.heif_decoding_options_free) - p_options.convert_hdr_to_8bit = int(self._heif_ctx.to_8bit) - p_img = ffi.new("struct heif_image **") - check_libheif_error(lib.heif_decode_image(self._handle, p_img, self._color(), self._chroma(), p_options)) - heif_img = ffi.gc(p_img[0], lib.heif_image_release) - self._img_to_img_data_dict(heif_img) - - def _img_to_img_data_dict(self, heif_img): - p_stride = ffi.new("int *") - p_data = lib.heif_image_get_plane(heif_img, self._channel(), p_stride) - stride = p_stride[0] - data_length = self.size[1] * stride - data_buffer = ffi.buffer(p_data, data_length) - self._img_data.update(img=heif_img, data=data_buffer, stride=stride) - - def _create_image(self, src_data, src_stride: int, new_mode=None): - width, height = self.size - p_new_img = ffi.new("struct heif_image **") - chroma = MODE_INFO[new_mode][3] if new_mode else self._chroma() - error = lib.heif_image_create(width, height, self._color(), chroma, p_new_img) - check_libheif_error(error) - new_img = ffi.gc(p_new_img[0], lib.heif_image_release) - depth = MODE_INFO[new_mode][1] if new_mode else self.bit_depth - error = lib.heif_image_add_plane(new_img, self._channel(), width, height, depth) - check_libheif_error(error) - p_dest_stride = ffi.new("int *") - dest_data = lib.heif_image_get_plane(new_img, self._channel(), p_dest_stride) - dest_stride = p_dest_stride[0] - src_data = ffi.from_buffer(src_data) - if new_mode and new_mode != self.mode: - MODE_CONVERT[self.mode][new_mode](src_data, src_stride, dest_data, dest_stride, height) - self.mode = new_mode - else: - lib.copy_image_data(src_data, src_stride, dest_data, dest_stride, height) - if self.premultiplied_alpha: - lib.heif_image_set_premultiplied_alpha(new_img, 1) - return new_img - - def _get_pure_data(self): - new_stride = get_pure_stride(self.mode, self.size[0]) - new_size = new_stride * self.size[1] - new_data = FFI_DRY_ALLOC("char[]", new_size) - lib.copy_image_data(ffi.from_buffer(self.data), self.stride, new_data, new_stride, self.size[1]) - return ffi.buffer(new_data, new_size) - - -class HeifThumbnail(HeifImageBase): - """Class represents a single thumbnail for a HeifImage.""" - - def __init__(self, original_img, reference, thumb_id: Optional[int] = None): - if isinstance(original_img, HeifImage): - p_handle = ffi.new("struct heif_image_handle **") - check_libheif_error(lib.heif_image_handle_get_thumbnail(original_img._handle, thumb_id, p_handle)) - super().__init__(original_img._heif_ctx, p_handle[0]) - else: - super().__init__(original_img, None) - self.parent = ref(reference) - - def __repr__(self): - _bytes = f"{len(self.data)} bytes" if self._img_data else "no" - return ( - f"<{self.__class__.__name__} {self.size[0]}x{self.size[1]} {self.mode} " - f"with {_bytes} image data> Original:{self.parent()}" - ) - - def get_original(self): - """Return an :py:class:`~pillow_heif.HeifImage` frame to which thumbnail belongs. - - .. note:: It is useful when you traverse thumbnails with :py:meth:`~pillow_heif.HeifFile.thumbnails_all` - - :returns: :py:class:`~pillow_heif.HeifImage` or None.""" - - referenced = self.parent() - return referenced if isinstance(referenced, HeifImage) else None - - def clone_nd(self, ref_original=None): - """Private. Cloning thumbnail without actual data.""" - - heif_ctx = HeifCtxAsDict(self.mode, self.size, None, stride=0) - return HeifThumbnail(heif_ctx, ref_original if ref_original else heif_ctx) - - -class HeifImage(HeifImageBase): - """Class represents one frame in a :py:class:`~pillow_heif.HeifFile`""" - - def __init__(self, heif_ctx: Union[LibHeifCtx, HeifCtxAsDict], img_id=-1, primary=False, for_encoding=False): - additional_info = {} - if isinstance(heif_ctx, LibHeifCtx): - p_handle = ffi.new("struct heif_image_handle **") - if primary: - error = lib.heif_context_get_primary_image_handle(heif_ctx.ctx, p_handle) - else: - error = lib.heif_context_get_image_handle(heif_ctx.ctx, img_id, p_handle) - check_libheif_error(error) - handle = p_handle[0] - _metadata = read_metadata(handle) - _exif = retrieve_exif(_metadata) - _xmp = retrieve_xmp(_metadata) - additional_info["metadata"] = _metadata - _color_profile = read_color_profile(handle) - if _color_profile: - if _color_profile["type"] in ("rICC", "prof"): - additional_info["icc_profile"] = _color_profile["data"] - additional_info["icc_profile_type"] = _color_profile["type"] - else: - additional_info["nclx_profile"] = _color_profile["data"] - else: - handle = None - _exif = None - _xmp = None - additional_info["metadata"] = [] - additional_info.update(heif_ctx.additional_info) - super().__init__(heif_ctx, handle, for_encoding) - self.info = { - "exif": _exif, - "xmp": _xmp, - "primary": primary, - } - self.info.update(**additional_info) - self.thumbnails = self.__read_thumbnails() - - def __repr__(self): - _bytes = f"{len(self.data)} bytes" if self._img_data else "no" - return ( - f"<{self.__class__.__name__} {self.size[0]}x{self.size[1]} {self.mode} " - f"with {_bytes} image data and {len(self.thumbnails)} thumbnails>" - ) - - def copy_thumbnails(self, thumbnails: List[HeifThumbnail]): - """Private. For use only in ``add_from_pillow`` and ``add_from_heif``.""" - - for thumb in thumbnails: - self.thumbnails.append(thumb.clone_nd(ref_original=self)) - - def __read_thumbnails(self) -> List[HeifThumbnail]: - result: List[HeifThumbnail] = [] - if self._handle is None or not options.THUMBNAILS: - return result - thumbs_count = lib.heif_image_handle_get_number_of_thumbnails(self._handle) - if thumbs_count == 0: - return result - thumbnails_ids = ffi.new("heif_item_id[]", thumbs_count) - thumb_count = lib.heif_image_handle_get_list_of_thumbnail_IDs(self._handle, thumbnails_ids, thumbs_count) - for i in range(thumb_count): - result.append(HeifThumbnail(self, self, thumb_id=thumbnails_ids[i])) - return result - class HeifFile: """This class represents the :py:class:`~pillow_heif.HeifImage` classes container. @@ -383,37 +148,33 @@ class HeifFile: To create :py:class:`~pillow_heif.HeifFile` object, use the appropriate factory functions. * :py:func:`~pillow_heif.open_heif` + * :py:func:`~pillow_heif.read_heif` * :py:func:`~pillow_heif.from_pillow` * :py:func:`~pillow_heif.from_bytes` - .. note:: To get an empty container to fill up later, create a class with no parameters.""" - - def __init__(self, heif_ctx: Optional[LibHeifCtx] = None): - self.mimetype = "" - self.images: List[HeifImage] = [] - if isinstance(heif_ctx, LibHeifCtx): - self.mimetype = heif_ctx.mimetype - main_id = heif_ctx.get_main_img_id() - for img_id in heif_ctx.get_top_images_ids(): - self.images.append(HeifImage(heif_ctx, img_id, img_id == main_id)) - - @property - def original_bit_depth(self): - """Points to :py:attr:`~pillow_heif.HeifImage.original_bit_depth` property of the - primary :py:class:`~pillow_heif.HeifImage` in the container. - - :exception IndexError: If there is no images.""" + Exceptions that can be raised when working with methods: + `ValueError`, `EOFError`, `SyntaxError`, `RuntimeError`, `OSError`""" - return self.images[self.primary_index()].original_bit_depth + def __init__(self, fp=None, convert_hdr_to_8bit=True, bgr_mode=False, **kwargs): + postprocess: bool = kwargs.get("postprocess", True) + if bgr_mode and not postprocess: + raise ValueError("BGR mode does not work when post-processing is disabled.") + if hasattr(fp, "seek"): + fp.seek(0, SEEK_SET) - @property - def bit_depth(self): - """Points to :py:attr:`~pillow_heif.HeifImage.bit_depth` property of the - primary :py:class:`~pillow_heif.HeifImage` in the container. - - :exception IndexError: If there is no images.""" - - return self.images[self.primary_index()].bit_depth + if fp is None: + images = [] + mimetype = "" + else: + fp_bytes = _get_bytes(fp) + mimetype = get_file_mimetype(fp_bytes) + images = load_file(fp_bytes, options.DECODE_THREADS, convert_hdr_to_8bit, bgr_mode, postprocess) + self.mimetype = mimetype + self._images: List[HeifImage] = [HeifImage(i) for i in images if i is not None] + self.primary_index = 0 + for index, _ in enumerate(self._images): + if _.info.get("primary", False): + self.primary_index = index @property def size(self): @@ -422,7 +183,7 @@ def size(self): :exception IndexError: If there is no images.""" - return self.images[self.primary_index()].size + return self._images[self.primary_index].size @property def mode(self): @@ -431,25 +192,7 @@ def mode(self): :exception IndexError: If there is no images.""" - return self.images[self.primary_index()].mode - - @property - def data(self): - """Points to :py:attr:`~pillow_heif.HeifImage.data` property of the - primary :py:class:`~pillow_heif.HeifImage` in the container. - - :exception IndexError: If there is no images.""" - - return self.images[self.primary_index()].data - - @property - def stride(self): - """Points to :py:attr:`~pillow_heif.HeifImage.stride` property of the - primary :py:class:`~pillow_heif.HeifImage` in the container. - - :exception IndexError: If there is no images.""" - - return self.images[self.primary_index()].stride + return self._images[self.primary_index].mode @property def has_alpha(self): @@ -458,7 +201,7 @@ def has_alpha(self): :exception IndexError: If there is no images.""" - return self.images[self.primary_index()].has_alpha + return self._images[self.primary_index].has_alpha @property def premultiplied_alpha(self): @@ -467,164 +210,44 @@ def premultiplied_alpha(self): :exception IndexError: If there is no images.""" - return self.images[self.primary_index()].premultiplied_alpha + return self._images[self.primary_index].premultiplied_alpha @premultiplied_alpha.setter def premultiplied_alpha(self, value: bool): - self.images[self.primary_index()].premultiplied_alpha = value + self._images[self.primary_index].premultiplied_alpha = value @property - def info(self): - """Points to ``info`` dict of the primary :py:class:`~pillow_heif.HeifImage` in the container. + def data(self): + """Points to :py:attr:`~pillow_heif.HeifImage.data` property of the + primary :py:class:`~pillow_heif.HeifImage` in the container. :exception IndexError: If there is no images.""" - return self.images[self.primary_index()].info + return self._images[self.primary_index].data @property - def thumbnails(self): - """Points to ``thumbnails`` of the primary :py:class:`~pillow_heif.HeifImage` in the container. + def stride(self): + """Points to :py:attr:`~pillow_heif.HeifImage.stride` property of the + primary :py:class:`~pillow_heif.HeifImage` in the container. :exception IndexError: If there is no images.""" - return self.images[self.primary_index()].thumbnails - - def primary_index(self, image_list=None) -> int: - """Returns index of the ``PrimaryImage`` in the container.""" - - if image_list is None: - image_list = self.images - i = 0 - for index, _ in enumerate(image_list): - if _.info["primary"]: - i = index - return i - - def thumbnails_all(self, one_for_image: bool = False) -> Iterator[HeifThumbnail]: - """Enums all thumbnails in all images. - - :param one_for_image: If set to ``True`` will return maximum one thumbnail for one image. - - :returns: Iterator for :py:class:`~pillow_heif.HeifThumbnail` classes.""" - - for i in self: - for thumb in i.thumbnails: - yield thumb - if one_for_image: - break - - def load(self, everything: bool = False): - if everything: - for img in self: - img.load() - else: - self.images[self.primary_index()].load() - return self - - def convert_to(self, mode: str) -> None: - """Decodes and convert in place the primary image to the specified mode. + return self._images[self.primary_index].stride - :param mode: for list of supported conversions, see: :ref:`convert_to` + @property + def info(self): + """Points to ``info`` dict of the primary :py:class:`~pillow_heif.HeifImage` in the container. - :exception KeyError: If conversion between modes is not supported.""" + :exception IndexError: If there is no images.""" - self.images[self.primary_index()].convert_to(mode) + return self._images[self.primary_index].info def to_pillow(self) -> Image.Image: - """Helper method to create :py:class:`PIL.Image.Image` + """Helper method to create :external:py:class:`~PIL.Image.Image` - :returns: :py:class:`PIL.Image.Image` class created from the primary image.""" + :returns: :external:py:class:`~PIL.Image.Image` class created from the primary image.""" - return self.images[self.primary_index()].to_pillow() - - def add_from_pillow(self, pil_image: Image.Image, load_one=False, ignore_primary=True, **kwargs): - """Add image(s) to the container. - - :param pil_image: ``PIL.Image`` class to get images from. - :param load_one: should be only one frame loaded. Default=``False`` - :param ignore_primary: force ``PrimaryImage=False`` flag to all added images.""" - - if load_one: - self.__add_frame_from_pillow(pil_image, ignore_primary, **kwargs) - else: - current_frame = pil_image.tell() if hasattr(pil_image, "tell") else None - for frame in ImageSequence.Iterator(pil_image): - self.__add_frame_from_pillow(frame, ignore_primary, **kwargs) - if current_frame is not None and hasattr(pil_image, "seek"): - pil_image.seek(current_frame) - return self - - def __add_frame_from_pillow(self, frame: Image.Image, ignore_primary: bool, **kwargs) -> None: - if frame.width <= 0 or frame.height <= 0: - return - additional_info = {} - supported_info_keys = ( - "exif", - "xmp", - "metadata", - "primary", - "icc_profile", - "icc_profile_type", - "nclx_profile", - ) - for k in supported_info_keys: - if k in frame.info: - additional_info[k] = frame.info[k] - if ignore_primary: - additional_info["primary"] = False - exif_from_pillow(additional_info, frame) - xmp_from_pillow(additional_info, frame) - original_orientation = set_orientation(additional_info) - if frame.mode == "P": - mode = "RGBA" if frame.info.get("transparency") else "RGB" - frame = frame.convert(mode=mode) - elif frame.mode == "LA": # libheif doesnt not support INTERLEAVED_MONOCHROME mode - frame = frame.convert(mode="RGBA") - elif frame.mode == "I": - frame = frame.convert(mode="I;16L") - elif frame.mode == "1": - frame = frame.convert(mode="L") - elif frame.mode == "CMYK": - frame = frame.convert(mode="RGBA") - - if original_orientation is not None and original_orientation != 1: - frame = ImageOps.exif_transpose(frame) - added_image = self.add_frombytes( - frame.mode, - frame.size, - frame.tobytes(), - add_info={**additional_info}, - for_encoding=kwargs.get("for_encoding", False), - ) - added_image.copy_thumbnails(frame.info.get("thumbnails", [])) - - def add_from_heif(self, heif_image, load_one=False, ignore_primary=True, **kwargs): - """Add image(s) to the container. - - :param heif_image: ``HeifFile`` or ``HeifImage`` class to get images from. - :param load_one: should be only one frame loaded. Default=``False`` - :param ignore_primary: force ``PrimaryImage=False`` flag to all added images.""" - - if isinstance(heif_image, HeifFile): - heif_images = list(heif_image) - else: - heif_images = [heif_image] - for image in heif_images: - additional_info = image.info.copy() - if ignore_primary: - additional_info["primary"] = False - added_image = self.add_frombytes( - image.mode, - image.size, - image.data, - stride=image.stride, - add_info={**additional_info}, - for_encoding=kwargs.get("for_encoding", False), - ) - added_image.copy_thumbnails(image.thumbnails) - if load_one: - break - return self + return self._images[self.primary_index].to_pillow() def save(self, fp, **kwargs) -> None: """Saves image(s) under the given fp. @@ -636,8 +259,7 @@ def save(self, fp, **kwargs) -> None: ``save_all`` - boolean. Should all images from ``HeiFile`` be saved. (default = ``True``) - ``append_images`` - do the same as in Pillow. - Accepts ``HeifFile``, ``HeifImage`` and ``PIL.Image`` + ``append_images`` - do the same as in Pillow. Accepts list of ``HeifImage`` .. note:: Appended images always will have ``info["primary"]=False`` @@ -656,137 +278,100 @@ def save(self, fp, **kwargs) -> None: ``format`` - string with encoder format name. Possible values: ``HEIF`` (default) or ``AVIF``. - :param fp: A filename (string), pathlib.Path object or file object. - - :returns: None - :raises: :py:exc:`~pillow_heif.HeifError` or :py:exc:`ValueError`""" - - compression = kwargs.get("format", "HEIF") - compression = HeifCompressionFormat.AV1 if compression == "AVIF" else HeifCompressionFormat.HEVC - if not have_encoder_for_format(compression): - raise HeifError(code=HeifErrorCode.ENCODING_ERROR, subcode=5000, message="No encoder found.") - images_to_save = self.__get_images_for_save(self.images, **kwargs) - if not images_to_save: - raise ValueError("Cannot write file with no images as HEIF.") - primary_index = kwargs.pop("primary_index", None) - if primary_index is None: - primary_index = 0 - for i, img in enumerate(images_to_save): - if img.info["primary"]: - primary_index = i - elif primary_index == -1 or primary_index >= len(images_to_save): - primary_index = len(images_to_save) - 1 - heif_ctx_write = LibHeifCtxWrite(compression_format=compression) - enc_params = kwargs.get("enc_params", {}) - chroma = kwargs.get("chroma", None) - if chroma: - enc_params["chroma"] = chroma - heif_ctx_write.set_encoder_parameters(enc_params, kwargs.get("quality", options.QUALITY)) - self._save(heif_ctx_write, images_to_save, primary_index, **kwargs) - heif_ctx_write.write(fp) + :param fp: A filename (string), pathlib.Path object or an object with `write` method. + + :returns: None""" + + _encode_images(self._images, fp, **kwargs) def __repr__(self): return f"<{self.__class__.__name__} with {len(self)} images: {[str(i) for i in self]}>" def __len__(self): - return len(self.images) + return len(self._images) def __iter__(self): - for _ in self.images: + for _ in self._images: yield _ def __getitem__(self, index): - if index < 0 or index >= len(self.images): + if index < 0 or index >= len(self._images): raise IndexError(f"invalid image index: {index}") - return self.images[index] + return self._images[index] def __delitem__(self, key): - if key < 0 or key >= len(self.images): + if key < 0 or key >= len(self._images): raise IndexError(f"invalid image index: {key}") - del self.images[key] + del self._images[key] def add_frombytes(self, mode: str, size: tuple, data, **kwargs): """Adds image from bytes to container. .. note:: Supports ``stride`` value if needed. - :param mode: `BGR(A);16`, `L;16`, `I;16L`, `RGB(A);12`, `L;12`, `RGB(A);10`, `L;10`, `RGB(A)`, `BGR(A)`, `L` + :param mode: see :ref:`image-modes`. :param size: tuple with ``width`` and ``height`` of image. :param data: bytes object with raw image data. - :returns: :py:class:`~pillow_heif.HeifImage` object that was appended to HeifFile.""" + :returns: :py:class:`~pillow_heif.HeifImage` added object.""" - for_encoding = kwargs.get("for_encoding", False) - added_image = HeifImage(HeifCtxAsDict(mode, size, data, **kwargs), for_encoding=for_encoding) - self.images.append(added_image) + added_image = HeifImage(MimCImage(mode, size, data, **kwargs)) + self._images.append(added_image) + return added_image + + def add_from_heif(self, image: HeifImage) -> HeifImage: + """Add image to the container. + + :param image: :py:class:`~pillow_heif.HeifImage` class to add from. + + :returns: :py:class:`~pillow_heif.HeifImage` added object.""" + + added_image = self.add_frombytes( + image.mode, + image.size, + image.data, + stride=image.stride, + ) + added_image.info = deepcopy(image.info) + added_image.info.pop("primary", None) + return added_image + + def add_from_pillow(self, image: Image.Image) -> HeifImage: + """Add image to the container. + + :param image: Pillow :external:py:class:`~PIL.Image.Image` class to add from. + + :returns: :py:class:`~pillow_heif.HeifImage` added object.""" + + if image.size[0] <= 0 or image.size[1] <= 0: + raise ValueError("Empty images are not supported.") + _info = image.info.copy() + _info["exif"] = _exif_from_pillow(image) + _info["xmp"] = _xmp_from_pillow(image) + original_orientation = set_orientation(_info) + _img = _pil_to_supported_mode(image) + if original_orientation is not None and original_orientation != 1: + _img = _rotate_pil(_img, original_orientation) + added_image = self.add_frombytes( + _img.mode, + _img.size, + _img.tobytes(), + ) + for key in ["bit_depth", "thumbnails", "icc_profile", "icc_profile_type"]: + if key in image.info: + added_image.info[key] = image.info[key] + for key in ["nclx_profile", "metadata"]: + if key in image.info: + added_image.info[key] = deepcopy(image.info[key]) + added_image.info["exif"] = _exif_from_pillow(image) + added_image.info["xmp"] = _xmp_from_pillow(image) return added_image @property def __array_interface__(self): """Returns the primary image as a numpy array.""" - return self.images[self.primary_index()].__array_interface__ - - @staticmethod - def _save(ctx: LibHeifCtxWrite, img_list: List[HeifImage], primary_index: int, **kwargs) -> None: - enc_options = lib.heif_encoding_options_alloc() - enc_options = ffi.gc(enc_options, lib.heif_encoding_options_free) - for i, img in enumerate(img_list): - set_color_profile(img.heif_img, img.info) - p_img_handle = ffi.new("struct heif_image_handle **") - error = lib.heif_context_encode_image(ctx.ctx, img.heif_img, ctx.encoder, enc_options, p_img_handle) - check_libheif_error(error) - new_img_handle = ffi.gc(p_img_handle[0], lib.heif_image_handle_release) - exif = img.info["exif"] - xmp = img.info["xmp"] - if i == primary_index: - if i: - lib.heif_context_set_primary_image(ctx.ctx, new_img_handle) - if kwargs.get("exif", -1) != -1: - exif = kwargs["exif"] - if isinstance(exif, Image.Exif): - exif = exif.tobytes() - if kwargs.get("xmp", -1) != -1: - xmp = kwargs["xmp"] - set_exif(ctx, new_img_handle, exif) - set_xmp(ctx, new_img_handle, xmp) - set_metadata(ctx, new_img_handle, img.info) - for thumbnail in img.thumbnails: - thumb_box = max(thumbnail.size) - if max(img.size) > thumb_box > 3: - p_new_thumb_handle = ffi.new("struct heif_image_handle **") - error = lib.heif_context_encode_thumbnail( - ctx.ctx, - img.heif_img, - new_img_handle, - ctx.encoder, - enc_options, - thumb_box, - p_new_thumb_handle, - ) - check_libheif_error(error) - if p_new_thumb_handle[0] != ffi.NULL: - lib.heif_image_handle_release(p_new_thumb_handle[0]) - - @staticmethod - def __get_images_for_save(images: List[HeifImage], **kwargs) -> List[HeifImage]: - """Accepts list of Union[HeifFile, HeifImage, Image.Image] and returns List[HeifImage]""" - - images_to_save = images + list(kwargs.get("append_images", [])) - save_one = not kwargs.get("save_all", True) - if save_one: - images_to_save = images_to_save[:1] - result = [] - for img in images_to_save: - no_primary = not bool(img in images) - if isinstance(img, Image.Image): - heif_file = HeifFile().add_from_pillow(img, save_one, no_primary, for_encoding=True) - elif kwargs.get("dont_copy", False) and bool(img in images): - heif_file = [img] if isinstance(img, HeifImage) else img - else: - heif_file = HeifFile().add_from_heif(img, save_one, no_primary, for_encoding=True) - result += list(heif_file) - return result + return self._images[self.primary_index].__array_interface__ def is_supported(fp) -> bool: @@ -804,20 +389,25 @@ def is_supported(fp) -> bool: return get_file_mimetype(__data) != "" -def open_heif(fp, convert_hdr_to_8bit=True) -> HeifFile: +def open_heif(fp, convert_hdr_to_8bit=True, bgr_mode=False, **kwargs) -> HeifFile: """Opens the given HEIF(AVIF) image file. :param fp: See parameter ``fp`` in :func:`is_supported` :param convert_hdr_to_8bit: Boolean indicating should 10 bit or 12 bit images - be converted to 8 bit images during loading. + be converted to 8 bit images during loading. Otherwise, they will open in 16 bit mode. + :param bgr_mode: Boolean indicating should be `RGB(A)` images be opened in `BGR(A)` mode. - :returns: An :py:class:`~pillow_heif.HeifFile` object. - :exception HeifError: If file is corrupted or is not in Heif format.""" + :returns: :py:class:`~pillow_heif.HeifFile` object. + :exception ValueError: invalid input data. + :exception EOFError: corrupted image data. + :exception SyntaxError: unsupported feature. + :exception RuntimeError: some other error. + :exception OSError: out of memory.""" - return HeifFile(LibHeifCtx(fp, convert_hdr_to_8bit)) + return HeifFile(fp, convert_hdr_to_8bit, bgr_mode, **kwargs) -def read_heif(fp, convert_hdr_to_8bit=True) -> HeifFile: +def read_heif(fp, convert_hdr_to_8bit=True, bgr_mode=False, **kwargs) -> HeifFile: """Opens the given HEIF(AVIF) image file and decodes all images. .. note:: In most cases it is better to call :py:meth:`~pillow_heif.open_heif`, and @@ -825,24 +415,65 @@ def read_heif(fp, convert_hdr_to_8bit=True) -> HeifFile: :param fp: See parameter ``fp`` in :func:`is_supported` :param convert_hdr_to_8bit: Boolean indicating should 10 bit or 12 bit images - be converted to 8 bit images during loading. + be converted to 8 bit images during loading. Otherwise, they will open in 16 bit mode. + :param bgr_mode: Boolean indicating should be `RGB(A)` images be opened in `BGR(A)` mode. + + :returns: :py:class:`~pillow_heif.HeifFile` object. + :exception ValueError: invalid input data. + :exception EOFError: corrupted image data. + :exception SyntaxError: unsupported feature. + :exception RuntimeError: some other error. + :exception OSError: out of memory.""" - :returns: An :py:class:`~pillow_heif.HeifFile` object. - :exception HeifError: If file is corrupted or is not in Heif format.""" + ret = open_heif(fp, convert_hdr_to_8bit, bgr_mode, **kwargs) + for img in ret: + _ = img.data # this will decode image + return ret - return open_heif(fp, convert_hdr_to_8bit).load(everything=True) +def encode(mode: str, size: tuple, data, fp, **kwargs) -> None: + """Encodes data in a ``fp``. -def from_pillow(pil_image: Image.Image, load_one: bool = False, ignore_primary=True) -> HeifFile: + :param mode: `BGR(A);16`, `RGB(A);16`, LA;16`, `L;16`, `I;16L`, `BGR(A)`, `RGB(A)`, `LA`, `L` + :param size: tuple with ``width`` and ``height`` of an image. + :param data: bytes object with raw image data. + :param fp: A filename (string), pathlib.Path object or an object with ``write`` method.""" + + _encode_images([HeifImage(MimCImage(mode, size, data, **kwargs))], fp, **kwargs) + + +def _encode_images(images: List[HeifImage], fp, **kwargs) -> None: + compression = kwargs.get("format", "HEIF") + compression_format = HeifCompressionFormat.AV1 if compression == "AVIF" else HeifCompressionFormat.HEVC + if not lib_info[compression]: + raise RuntimeError(f"No {compression} encoder found.") + images_to_save: List[HeifImage] = images + kwargs.get("append_images", []) + if not kwargs.get("save_all", True): + images_to_save = images_to_save[:1] + if not images_to_save: + raise ValueError("Cannot write file with no images as HEIF.") + primary_index = _get_primary_index(images_to_save, kwargs.get("primary_index", None)) + ctx_write = CtxEncode(compression_format, **kwargs) + for i, img in enumerate(images_to_save): + _info = img.info.copy() + _info["primary"] = False + if i == primary_index: + _info.update(**kwargs) + _info["primary"] = True + ctx_write.add_image(img.size, img.mode, img.data, **_info) + ctx_write.save(fp) + + +def from_pillow(pil_image: Image.Image) -> HeifFile: """Creates :py:class:`~pillow_heif.HeifFile` from a Pillow Image. :param pil_image: Pillow :external:py:class:`~PIL.Image.Image` class. - :param load_one: If ``True``, then all frames will be loaded. - :param ignore_primary: force ``PrimaryImage=False`` flag to all added images. - :returns: An :py:class:`~pillow_heif.HeifFile` object.""" + :returns: New :py:class:`~pillow_heif.HeifFile` object.""" - return HeifFile().add_from_pillow(pil_image, load_one, ignore_primary) + _ = HeifFile() + _.add_from_pillow(pil_image) + return _ def from_bytes(mode: str, size: tuple, data, **kwargs) -> HeifFile: @@ -850,11 +481,11 @@ def from_bytes(mode: str, size: tuple, data, **kwargs) -> HeifFile: .. note:: Supports ``stride`` value if needed. - :param mode: `BGR(A);16`, `L;16`, `I;16L`, `RGB(A);12`, `L;12`, `RGB(A);10`, `L;10`, `RGB(A)`, `BGR(A)`, `L` - :param size: tuple with ``width`` and ``height`` of image. + :param mode: see :ref:`image-modes`. + :param size: tuple with ``width`` and ``height`` of an image. :param data: bytes object with raw image data. - :returns: An :py:class:`~pillow_heif.HeifFile` object.""" + :returns: New :py:class:`~pillow_heif.HeifFile` object.""" _ = HeifFile() _.add_frombytes(mode, size, data, **kwargs) diff --git a/pillow_heif/helpers.c b/pillow_heif/helpers.c deleted file mode 100644 index 670182d1..00000000 --- a/pillow_heif/helpers.c +++ /dev/null @@ -1,489 +0,0 @@ -#ifdef __cplusplus - extern "C" { -#endif - -void copy_image_data(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - if (in_stride == out_stride) - memcpy(out, in, out_stride * n_rows); - else - { - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - for (int i = 0; i < n_rows; i++) - memcpy(out + out_stride * i, in + in_stride * i, stride_elements); - } -} - -void convert_i16_to_i10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) - out_row[i2] = in_row[i2] >> 6; - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_i16_to_i12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) - out_row[i2] = in_row[i2] >> 4; - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_bgr16_to_rgb10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 2] >> 6; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] >> 6; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 0] >> 6; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_bgra16_to_rgba10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 2] >> 6; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] >> 6; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 0] >> 6; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] >> 6; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgb16_to_rgb10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 0] >> 6; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] >> 6; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 2] >> 6; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgba16_to_rgba10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 0] >> 6; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] >> 6; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 2] >> 6; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] >> 6; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_bgr16_to_rgb12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 2] >> 4; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] >> 4; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 0] >> 4; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_bgra16_to_rgba12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 2] >> 4; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] >> 4; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 0] >> 4; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] >> 4; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgb16_to_rgb12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 0] >> 4; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] >> 4; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 2] >> 4; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgba16_to_rgba12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 0] >> 4; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] >> 4; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 2] >> 4; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] >> 4; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgba16_to_rgba(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint8_t* out_row = out; - in_stride = in_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 0] >> 8; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] >> 8; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 2] >> 8; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] >> 8; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgba12_to_rgba16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 0] << 4; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] << 4; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 2] << 4; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] << 4; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgba12_to_bgra16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 2] << 4; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] << 4; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 0] << 4; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] << 4; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgb12_to_rgb16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 0] << 4; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] << 4; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 2] << 4; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgb12_to_bgr16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 2] << 4; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] << 4; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 0] << 4; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgba10_to_rgba16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 0] << 6; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] << 6; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 2] << 6; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] << 6; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgba10_to_bgra16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 2] << 6; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] << 6; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 0] << 6; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] << 6; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgb10_to_rgb16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 0] << 6; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] << 6; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 2] << 6; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgb10_to_bgr16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint16_t* in_row = (uint16_t*)in; - uint16_t* out_row = (uint16_t*)out; - in_stride = in_stride / 2; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 2] << 6; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] << 6; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 0] << 6; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgba_to_rgba16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint8_t* in_row = in; - uint16_t* out_row = (uint16_t*)out; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 0] << 8; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] << 8; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 2] << 8; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] << 8; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgba_to_bgra16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint8_t* in_row = in; - uint16_t* out_row = (uint16_t*)out; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 2] << 8; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1] << 8; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 0] << 8; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3] << 8; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgb_to_rgb16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint8_t* in_row = in; - uint16_t* out_row = (uint16_t*)out; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 0] << 8; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] << 8; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 2] << 8; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_rgb_to_bgr16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint8_t* in_row = in; - uint16_t* out_row = (uint16_t*)out; - out_stride = out_stride / 2; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 2] << 8; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1] << 8; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 0] << 8; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_bgra_rgba(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint8_t* in_row = in; - uint8_t* out_row = out; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 4; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 4 + 0] = in_row[i2 * 4 + 2]; - out_row[i2 * 4 + 1] = in_row[i2 * 4 + 1]; - out_row[i2 * 4 + 2] = in_row[i2 * 4 + 0]; - out_row[i2 * 4 + 3] = in_row[i2 * 4 + 3]; - } - in_row += in_stride; - out_row += out_stride; - } -} - -void convert_bgr_rgb(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows) -{ - const uint8_t* in_row = in; - uint8_t* out_row = out; - int stride_elements = out_stride > in_stride ? in_stride : out_stride; - stride_elements = stride_elements / 3; - for (int i = 0; i < n_rows; i++) { - for (int i2 = 0; i2 < stride_elements; i2++) { - out_row[i2 * 3 + 0] = in_row[i2 * 3 + 2]; - out_row[i2 * 3 + 1] = in_row[i2 * 3 + 1]; - out_row[i2 * 3 + 2] = in_row[i2 * 3 + 0]; - } - in_row += in_stride; - out_row += out_stride; - } -} - -#ifdef __cplusplus - } -#endif diff --git a/pillow_heif/helpers.h b/pillow_heif/helpers.h deleted file mode 100644 index 7bbcacdb..00000000 --- a/pillow_heif/helpers.h +++ /dev/null @@ -1,51 +0,0 @@ -void copy_image_data(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_i16_to_i10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_i16_to_i12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_bgr16_to_rgb10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_bgra16_to_rgba10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgb16_to_rgb10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgba16_to_rgba10(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_bgr16_to_rgb12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_bgra16_to_rgba12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgb16_to_rgb12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgba16_to_rgba12(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgba16_to_rgba(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgba12_to_rgba16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgba12_to_bgra16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgb12_to_rgb16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgb12_to_bgr16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgba10_to_rgba16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgba10_to_bgra16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgb10_to_rgb16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgb10_to_bgr16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgba_to_rgba16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgba_to_bgra16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgb_to_rgb16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_rgb_to_bgr16(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_bgra_rgba(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); - -void convert_bgr_rgb(const uint8_t *in, int in_stride, uint8_t *out, int out_stride, int n_rows); diff --git a/pillow_heif/misc.py b/pillow_heif/misc.py index 483cf1d9..288d0826 100644 --- a/pillow_heif/misc.py +++ b/pillow_heif/misc.py @@ -5,14 +5,48 @@ """ import builtins -import pathlib import re +from dataclasses import dataclass +from enum import IntEnum +from math import ceil +from pathlib import Path from struct import pack, unpack -from typing import Union +from typing import List, Optional +from _pillow_heif import CtxWrite +from PIL import Image +from PIL import __version__ as pil_version -def set_orientation(info: dict, orientation: int = 1) -> Union[int, None]: - """Sets orientation in ``EXIF`` to ``1`` by default if any orientation present. +from . import options +from .constants import HeifChroma, HeifColorspace, HeifCompressionFormat + +MODE_INFO = { + # name -> [channels, bits per pixel channel, colorspace, chroma] + "BGRA;16": (4, 16, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBBAA_LE), + "BGRa;16": (4, 16, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBBAA_LE), + "BGR;16": (3, 16, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBB_LE), + "RGBA;16": (4, 16, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBBAA_LE), + "RGBa;16": (4, 16, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBBAA_LE), + "RGB;16": (3, 16, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBB_LE), + "LA;16": (2, 16, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME), + "La;16": (2, 16, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME), + "L;16": (1, 16, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME), + "I;16": (1, 16, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME), + "I;16L": (1, 16, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME), + "RGBA": (4, 8, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RGBA), + "RGBa": (4, 8, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RGBA), + "RGB": (3, 8, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RGB), + "BGRA": (4, 8, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RGBA), + "BGRa": (4, 8, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RGBA), + "BGR": (3, 8, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RGB), + "LA": (2, 8, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME), + "La": (2, 8, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME), + "L": (1, 8, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME), +} + + +def set_orientation(info: dict) -> Optional[int]: + """Reset orientation in ``EXIF`` to ``1`` if any orientation present. Removes ``XMP`` orientation tag if it is present. In Pillow plugin mode it called automatically for images. When ``pillow_heif`` used in ``standalone`` mode, if you wish you can call it manually. @@ -22,8 +56,7 @@ def set_orientation(info: dict, orientation: int = 1) -> Union[int, None]: If both XMP and EXIF orientation tags present, EXIF orientation tag will be returned, but both tags will be removed. - :param info: `info` dictionary from `~PIL.Image.Image` or `~pillow_heif.HeifImage`. - :param orientation: int value of EXIF or XMP orientation tag. + :param info: `info` dictionary from :external:py:class:`~PIL.Image.Image` or :py:class:`~pillow_heif.HeifImage`. :returns: Original orientation or None if it is absent.""" original_orientation = None @@ -45,7 +78,7 @@ def set_orientation(info: dict, orientation: int = 1) -> Union[int, None]: if _original_orientation != 1: original_orientation = _original_orientation p_value = 6 + pointer + 8 - new_orientation = pack(endian_mark + "H", orientation) + new_orientation = pack(endian_mark + "H", 1) info["exif"] = info["exif"][:p_value] + new_orientation + info["exif"][p_value + 2 :] break except Exception: # noqa # pylint: disable=broad-except @@ -103,7 +136,7 @@ def get_file_mimetype(fp) -> str: def _get_bytes(fp, length=None) -> bytes: - if isinstance(fp, (str, pathlib.Path)): + if isinstance(fp, (str, Path)): with builtins.open(fp, "rb") as file: return file.read(length or -1) if hasattr(fp, "read"): @@ -113,3 +146,208 @@ def _get_bytes(fp, length=None) -> bytes: fp.seek(offset) return result return bytes(fp)[:length] + + +def _retrieve_exif(metadata: List[dict]) -> Optional[bytes]: + _result = None + _purge = [] + for i, md_block in enumerate(metadata): + if md_block["type"] == "Exif": + _purge.append(i) + _data = md_block["data"][4:] # skip TIFF header, first 4 bytes + if not _result and _data: + _result = _data + for i in reversed(_purge): + del metadata[i] + return _result + + +def _retrieve_xmp(metadata: List[dict]) -> Optional[bytes]: + _result = None + _purge = [] + for i, md_block in enumerate(metadata): + if md_block["type"] == "mime": + _purge.append(i) + if not _result: + _result = md_block["data"] + for i in reversed(_purge): + del metadata[i] + return _result + + +def _exif_from_pillow(img: Image.Image) -> Optional[bytes]: + if "exif" in img.info: + return img.info["exif"] + if hasattr(img, "getexif"): + if pil_version[:2] not in ("8.",) and pil_version[:4] not in ("9.0.", "9.1."): + exif = img.getexif() + if exif: + return exif.tobytes() + return None + + +def _xmp_from_pillow(img: Image.Image) -> Optional[bytes]: + _xmp = None + if "xmp" in img.info: + _xmp = img.info["xmp"] + elif "XML:com.adobe.xmp" in img.info: # PNG + _xmp = img.info["XML:com.adobe.xmp"] + elif hasattr(img, "tag_v2"): # TIFF + if 700 in img.tag_v2: + _xmp = img.tag_v2[700] + elif hasattr(img, "applist"): # JPEG + for segment, content in img.applist: + if segment == "APP1": + marker, xmp_tags = content.rsplit(b"\x00", 1) + if marker == b"http://ns.adobe.com/xap/1.0/": + _xmp = xmp_tags + break + if isinstance(_xmp, str): + _xmp = _xmp.encode("utf-8") + return _xmp + + +def _pil_to_supported_mode(img: Image.Image) -> Image.Image: + if img.mode == "P": + mode = "RGBA" if img.info.get("transparency") else "RGB" + img = img.convert(mode=mode) + elif img.mode == "I": + img = img.convert(mode="I;16L") + elif img.mode == "1": + img = img.convert(mode="L") + elif img.mode == "CMYK": + img = img.convert(mode="RGBA") + elif img.mode == "YCbCr": # note: libheif supports native `YCbCr`. + img = img.convert(mode="RGB") + return img + + +class Transpose(IntEnum): + # Temporary till we support old Pillows, remove this when minimum Pillow version will have this. + FLIP_LEFT_RIGHT = 0 + FLIP_TOP_BOTTOM = 1 + ROTATE_90 = 2 + ROTATE_180 = 3 + ROTATE_270 = 4 + TRANSPOSE = 5 + TRANSVERSE = 6 + + +def _rotate_pil(img: Image.Image, orientation: int) -> Image.Image: + # Probably need create issue in Pillow to add support + # for info["xmp"] or `getxmp()` for ImageOps.exif_transpose and remove this func. + method = { + 2: Transpose.FLIP_LEFT_RIGHT, + 3: Transpose.ROTATE_180, + 4: Transpose.FLIP_TOP_BOTTOM, + 5: Transpose.TRANSPOSE, + 6: Transpose.ROTATE_270, + 7: Transpose.TRANSVERSE, + 8: Transpose.ROTATE_90, + }.get(orientation) + if method is not None: + return img.transpose(method) + return img + + +def _get_primary_index(some_iterator, primary_index: Optional[int]) -> int: + primary_attrs = [_.info.get("primary", False) for _ in some_iterator] + if primary_index is None: + primary_index = 0 + for i, v in enumerate(primary_attrs): + if v: + primary_index = i + elif primary_index == -1 or primary_index >= len(primary_attrs): + primary_index = len(primary_attrs) - 1 + return primary_index + + +class CtxEncode: + def __init__(self, compression_format: HeifCompressionFormat, **kwargs): + quality = kwargs.get("quality", options.QUALITY) + self.ctx_write = CtxWrite(compression_format, -2 if quality is None else quality) + enc_params = kwargs.get("enc_params", {}) + chroma = kwargs.get("chroma", None) + if chroma: + enc_params["chroma"] = chroma + for key, value in enc_params.items(): + _value = value if isinstance(value, str) else str(value) + self.ctx_write.set_parameter(key, _value) + + def add_image(self, size: tuple, mode: str, data, **kwargs) -> None: + if size[0] <= 0 or size[1] <= 0: + raise ValueError("Empty images are not supported.") + bit_depth_in = MODE_INFO[mode][1] + bit_depth_out = 8 if bit_depth_in == 8 else kwargs.get("bit_depth", 16) + if bit_depth_out == 16: + bit_depth_out = 12 if options.SAVE_HDR_TO_12_BIT else 10 + premultiplied_alpha = int(mode.split(sep=";")[0][-1] == "a") + # creating image + im_out = self.ctx_write.create_image(size, MODE_INFO[mode][2], MODE_INFO[mode][3], premultiplied_alpha) + # image data + if MODE_INFO[mode][0] == 1: + im_out.add_plane_l(size, bit_depth_out, bit_depth_in, data) + elif MODE_INFO[mode][0] == 2: + im_out.add_plane_la(size, bit_depth_out, bit_depth_in, data) + else: + im_out.add_plane(size, bit_depth_out, bit_depth_in, data, mode.find("BGR") != -1) + # color profile + __icc_profile = kwargs.get("icc_profile", None) + if __icc_profile is not None: + im_out.set_icc_profile(kwargs.get("icc_profile_type", "prof"), __icc_profile) + elif kwargs.get("nclx_profile", None): + nclx_profile = kwargs["nclx_profile"] + im_out.set_nclx_profile( + *[ + nclx_profile[i] + for i in ("color_primaries", "transfer_characteristics", "matrix_coefficients", "full_range_flag") + ] + ) + # encode + im_out.encode(self.ctx_write, kwargs.get("primary", False)) + # adding metadata + exif = kwargs.get("exif", None) + if exif is not None: + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + im_out.set_exif(self.ctx_write, exif) + xmp = kwargs.get("xmp", None) + if xmp is not None: + im_out.set_xmp(self.ctx_write, xmp) + for metadata in kwargs.get("metadata", []): + im_out.set_metadata(self.ctx_write, metadata["type"], metadata["content_type"], metadata["data"]) + # adding thumbnails + for thumb_box in kwargs.get("thumbnails", []): + if max(size) > thumb_box > 3: + im_out.encode_thumbnail(self.ctx_write, thumb_box) + + def save(self, fp) -> None: + data = self.ctx_write.finalize() + if isinstance(fp, (str, Path)): + with builtins.open(fp, "wb") as f: + f.write(data) + elif hasattr(fp, "write"): + fp.write(data) + else: + raise TypeError("`fp` must be a path to file or an object with `write` method.") + + +@dataclass +class MimCImage: + def __init__(self, mode: str, size: tuple, data: bytes, **kwargs): + self.mode = mode + self.size = size + self.stride: int = kwargs.get("stride", size[0] * MODE_INFO[mode][0] * ceil(MODE_INFO[mode][1] / 8)) + self.data = data + self.metadata: List[dict] = [] + self.color_profile = None + self.thumbnails: List[int] = [] + self.primary = False + + @property + def size_mode(self): + return self.size, self.mode + + @property + def bit_depth(self): + return MODE_INFO[self.mode][1] diff --git a/pillow_heif/private.py b/pillow_heif/private.py deleted file mode 100644 index 08114c17..00000000 --- a/pillow_heif/private.py +++ /dev/null @@ -1,271 +0,0 @@ -""" -Undocumented private functions to make other code look better. -""" - -from dataclasses import dataclass -from math import ceil -from typing import Union - -from _pillow_heif_cffi import ffi, lib -from PIL import __version__ as pil_version - -from ._libheif_ctx import LibHeifCtxWrite -from .constants import HeifChroma, HeifColorProfileType, HeifColorspace -from .error import check_libheif_error - -FFI_DRY_ALLOC = ffi.new_allocator(should_clear_after_alloc=False) - - -@dataclass -class HeifCtxAsDict: - """Representation of one image""" - - def __init__(self, mode: str, size: tuple, data, **kwargs): - stride = kwargs.get("stride", None) - if stride is None: - stride = get_pure_stride(mode, size[0]) - self.mode = mode - self.size = size - self.data = data - self.stride = stride - self.additional_info = kwargs.get("add_info", {}) - - -def get_pure_stride(mode: str, width: int) -> int: - return width * MODE_INFO[mode][0] * ceil(MODE_INFO[mode][1] / 8) - - -MODE_CONVERT = { - # source_mode: {target_mode: convert_function,} - "BGRA;16": {"RGBA;10": lib.convert_bgra16_to_rgba10, "RGBA;12": lib.convert_bgra16_to_rgba12}, - "BGRa;16": {"RGBa;10": lib.convert_bgra16_to_rgba10, "RGBa;12": lib.convert_bgra16_to_rgba12}, - "BGR;16": {"RGB;10": lib.convert_bgr16_to_rgb10, "RGB;12": lib.convert_bgr16_to_rgb12}, - "RGBA;16": { - "RGBA;10": lib.convert_rgba16_to_rgba10, - "RGBA;12": lib.convert_rgba16_to_rgba12, - "RGBA": lib.convert_rgba16_to_rgba, - }, - "RGBa;16": { - "RGBa;10": lib.convert_rgba16_to_rgba10, - "RGBa;12": lib.convert_rgba16_to_rgba12, - }, - "RGB;16": {"RGB;10": lib.convert_rgb16_to_rgb10, "RGB;12": lib.convert_rgb16_to_rgb12}, - "L;16": {"L;10": lib.convert_i16_to_i10, "L;12": lib.convert_i16_to_i12}, - "I;16": {"L;10": lib.convert_i16_to_i10, "L;12": lib.convert_i16_to_i12}, - "I;16L": {"L;10": lib.convert_i16_to_i10, "L;12": lib.convert_i16_to_i12}, - "RGBA;12": {"RGBA;16": lib.convert_rgba12_to_rgba16, "BGRA;16": lib.convert_rgba12_to_bgra16}, - "RGBa;12": {"RGBa;16": lib.convert_rgba12_to_rgba16, "BGRa;16": lib.convert_rgba12_to_bgra16}, - "RGB;12": {"RGB;16": lib.convert_rgb12_to_rgb16, "BGR;16": lib.convert_rgb12_to_bgr16}, - "RGBA;10": {"RGBA;16": lib.convert_rgba10_to_rgba16, "BGRA;16": lib.convert_rgba10_to_bgra16}, - "RGBa;10": {"RGBa;16": lib.convert_rgba10_to_rgba16, "BGRa;16": lib.convert_rgba10_to_bgra16}, - "RGB;10": {"RGB;16": lib.convert_rgb10_to_rgb16, "BGR;16": lib.convert_rgb10_to_bgr16}, - "BGRA": {"RGBA": lib.convert_bgra_rgba}, - "BGRa": {"RGBa": lib.convert_bgra_rgba}, - "BGR": {"RGB": lib.convert_bgr_rgb}, - "RGBA": { - "BGRA": lib.convert_bgra_rgba, - "RGBA;16": lib.convert_rgba_to_rgba16, - "BGRA;16": lib.convert_rgba_to_bgra16, - }, - "RGBa": { - "BGRa": lib.convert_bgra_rgba, - "RGBa;16": lib.convert_rgba_to_rgba16, - "BGRa;16": lib.convert_rgba_to_bgra16, - }, - "RGB": {"BGR": lib.convert_bgr_rgb, "RGB;16": lib.convert_rgb_to_rgb16, "BGR;16": lib.convert_rgb_to_bgr16}, -} - - -MODE_INFO = { - # name -> [channels, bits per pixel channel, colorspace, chroma, (mode_for_saving 10,12 bit), numpy_typestr] - "BGRA;16": (4, 16, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBBAA_LE, ("RGBA;10", "RGBA;12"), "u2"), - "RGBa;12B": (4, 12, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBBAA_BE, None, ">u2"), - "RGB;12B": (3, 12, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBB_BE, None, ">u2"), - "L;12": (1, 12, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME, None, "u2"), - "RGBa;10B": (4, 10, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBBAA_BE, None, ">u2"), - "RGB;10B": (3, 10, HeifColorspace.RGB, HeifChroma.INTERLEAVED_RRGGBB_BE, None, ">u2"), - "L;10": (1, 10, HeifColorspace.MONOCHROME, HeifChroma.MONOCHROME, None, " dict: - profile_type = lib.heif_image_handle_get_color_profile_type(handle) - if profile_type == HeifColorProfileType.NOT_PRESENT: - return {} - if profile_type == HeifColorProfileType.NCLX: - pp_data = ffi.new("struct heif_color_profile_nclx **") - error = lib.heif_image_handle_get_nclx_color_profile(handle, pp_data) - check_libheif_error(error) - libheif_nclx_profile = pp_data[0] - ffi.release(pp_data) - nclx_profile = {i: getattr(libheif_nclx_profile, i) for i in NCLX_FIELDS + NCLX_DECODE_ONLY_FIELDS} - lib.heif_nclx_color_profile_free(libheif_nclx_profile) - return {"type": "nclx", "data": nclx_profile} - _type = "prof" if profile_type == HeifColorProfileType.PROF else "rICC" - data_length = lib.heif_image_handle_get_raw_color_profile_size(handle) - if data_length == 0: - return {"type": _type, "data": b""} - p_data = ffi.new("char[]", data_length) - error = lib.heif_image_handle_get_raw_color_profile(handle, p_data) - check_libheif_error(error) - data_buffer = ffi.buffer(p_data, data_length) - return {"type": _type, "data": bytes(data_buffer)} - - -def set_color_profile(heif_img, info: dict) -> None: - __icc_profile = info.get("icc_profile", None) - if __icc_profile is not None: - _prof_type = info.get("icc_profile_type", "prof").encode("ascii") - error = lib.heif_image_set_raw_color_profile( - heif_img, _prof_type, info["icc_profile"], len(info["icc_profile"]) - ) - check_libheif_error(error) - elif info.get("nclx_profile", None): - nclx_profile = info["nclx_profile"] - libheif_nclx_profile = lib.heif_nclx_color_profile_alloc() - for i in NCLX_FIELDS: - v = nclx_profile.get(i, None) - if v is not None: - setattr(libheif_nclx_profile, i, v) - error = lib.heif_image_set_nclx_color_profile(heif_img, libheif_nclx_profile) - lib.heif_nclx_color_profile_free(libheif_nclx_profile) - check_libheif_error(error) - - -def retrieve_exif(metadata: list): - _result = None - _purge = [] - for i, md_block in enumerate(metadata): - if md_block["type"] == "Exif": - _purge.append(i) - if not _result and md_block["data"]: - _result = md_block["data"] - for i in reversed(_purge): - del metadata[i] - return _result - - -def set_exif(ctx: LibHeifCtxWrite, heif_img_handle, exif: Union[bytes, None]) -> None: - if exif is not None: - error = lib.heif_context_add_exif_metadata(ctx.ctx, heif_img_handle, exif, len(exif)) - check_libheif_error(error) - - -def retrieve_xmp(metadata: list): - _result = None - _purge = [] - for i, md_block in enumerate(metadata): - if md_block["type"] == "mime": - _purge.append(i) - if not _result: - _result = md_block["data"] - for i in reversed(_purge): - del metadata[i] - return _result - - -def set_xmp(ctx: LibHeifCtxWrite, heif_img_handle, xmp: Union[bytes, None]) -> None: - if xmp is not None: - error = lib.heif_context_add_XMP_metadata(ctx.ctx, heif_img_handle, xmp, len(xmp)) - check_libheif_error(error) - - -def read_metadata(handle) -> list: - block_count = lib.heif_image_handle_get_number_of_metadata_blocks(handle, ffi.NULL) - if block_count == 0: - return [] - metadata = [] - blocks_ids = ffi.new("heif_item_id[]", block_count) - lib.heif_image_handle_get_list_of_metadata_block_IDs(handle, ffi.NULL, blocks_ids, block_count) - for block_id in blocks_ids: - metadata_type = lib.heif_image_handle_get_metadata_type(handle, block_id) - metadata_type = ffi.string(metadata_type).decode("utf-8") - content_type = ffi.string(lib.heif_image_handle_get_metadata_content_type(handle, block_id)) - data_length = lib.heif_image_handle_get_metadata_size(handle, block_id) - if data_length > 0: - p_data = ffi.new("char[]", data_length) - error = lib.heif_image_handle_get_metadata(handle, block_id, p_data) - check_libheif_error(error) - data_buffer = ffi.buffer(p_data, data_length) - data = bytes(data_buffer) - if metadata_type == "Exif": - data = data[4:] # skip TIFF header, first 4 bytes - metadata.append({"type": metadata_type, "data": data, "content_type": content_type}) - return metadata - - -def set_metadata(ctx: LibHeifCtxWrite, heif_img_handle, info: dict) -> None: - for metadata in info["metadata"]: - error = lib.heif_context_add_generic_metadata( - ctx.ctx, - heif_img_handle, - metadata["data"], - len(metadata["data"]), - metadata["type"].encode("utf-8"), - metadata["content_type"], - ) - check_libheif_error(error) - - -def exif_from_pillow(additional_info: dict, frame) -> None: - if "exif" not in additional_info: - if hasattr(frame, "getexif"): - if pil_version[:2] not in ("6.", "7.", "8.") and pil_version[:4] not in ("9.0.", "9.1."): - exif = frame.getexif() - if exif: - additional_info["exif"] = exif.tobytes() - - -def xmp_from_pillow(additional_info: dict, frame) -> None: - if "xmp" not in additional_info: - if "XML:com.adobe.xmp" in frame.info: # PNG - additional_info["xmp"] = frame.info["XML:com.adobe.xmp"] - elif hasattr(frame, "tag_v2"): # TIFF - if 700 in frame.tag_v2: - additional_info["xmp"] = frame.tag_v2[700] - elif hasattr(frame, "applist"): # JPEG - for segment, content in frame.applist: - if segment == "APP1": - marker, xmp_tags = content.rsplit(b"\x00", 1) - if marker == b"http://ns.adobe.com/xap/1.0/": - additional_info["xmp"] = xmp_tags - break - if "xmp" in additional_info and isinstance(additional_info["xmp"], str): - additional_info["xmp"] = additional_info["xmp"].encode("utf-8") diff --git a/pillow_heif/thumbnails.py b/pillow_heif/thumbnails.py deleted file mode 100644 index e99d563a..00000000 --- a/pillow_heif/thumbnails.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Functions for work with thumbnails.""" - -from typing import List, Union - -from PIL import Image - -from .as_plugin import _LibHeifImageFile -from .heif import HeifFile, HeifImage, HeifThumbnail -from .private import HeifCtxAsDict - - -def thumbnail(im, min_box: int = 0): - """Returns a thumbnail with minimum specified box size or an original if there is no a thumbnail. - - .. note:: If you use it for a Pillow image, it ``should not be loaded`` before call. - - :param im: :py:class:`HeifImage`, :py:class:`HeifFile` or :external:py:class:`PIL.Image.Image` class. - :param min_box: optional integer with minimum size of thumbnail's box size. - - :returns: Class with the same type the input parameter ``im`` has.""" - - if isinstance(im, HeifFile): - im = im.images[im.primary_index()] - thumb = None - if isinstance(im, HeifImage): - thumb = _choose_thumbnail(im.thumbnails, min_box) - if thumb: - thumb.info = im.info - elif isinstance(im, _LibHeifImageFile): - thumb = _choose_thumbnail(im.info.get("thumbnails", []), min_box) - if thumb: - thumb = thumb.to_pillow() - return thumb if thumb else im - - -def add_thumbnails(im: Union[HeifFile, HeifImage, Image.Image], boxes: Union[List[int], int]) -> None: - """Add thumbnail(s) to an image(s). - - .. note:: Method creates thumbnails without image data, they will be encoded during `save` operation. - - :param im: For ``HeifFile`` will add thumbnail(s) to all images in it. - For ``HeifImage`` or a Pillow image it will add thumbnails only to specified image. - :param boxes: int or list of ints determining size of thumbnail(s) to generate for image. - - :returns: None""" - - if isinstance(im, HeifFile): - for i in im: - _add_thumbnails(i, boxes) - else: - _add_thumbnails(im, boxes) - - -def _add_thumbnails(im: Union[HeifImage, Image.Image], boxes: Union[List[int], int]) -> None: - if isinstance(boxes, list): - boxes_list = boxes - else: - boxes_list = [boxes] - for box in boxes_list: - if box <= 3: - continue - if im.size[0] <= box and im.size[1] <= box: - continue - if im.size[0] > im.size[1]: - thumb_height = int(im.size[1] * box / im.size[0]) - thumb_width = box - else: - thumb_width = int(im.size[0] * box / im.size[1]) - thumb_height = box - thumb_height = thumb_height - 1 if (thumb_height & 1) else thumb_height - thumb_width = thumb_width - 1 if (thumb_width & 1) else thumb_width - thumbnails = im.thumbnails if isinstance(im, HeifImage) else im.info.get("thumbnails", []) - if max((thumb_height, thumb_width)) in [max(i.size) for i in thumbnails]: - continue - __heif_ctx = HeifCtxAsDict(im.mode, (thumb_width, thumb_height), None, stride=0) - if isinstance(im, HeifImage): - im.thumbnails.append(HeifThumbnail(__heif_ctx, im)) - else: - if im.info.get("thumbnails", None) is None: - im.info["thumbnails"] = [HeifThumbnail(__heif_ctx, __heif_ctx)] - else: - im.info["thumbnails"].append(HeifThumbnail(__heif_ctx, __heif_ctx)) - - -def _choose_thumbnail(thumbnails: list, min_box: int): - for thumb in thumbnails: - if thumb.size[0] >= min_box or thumb.size[1] >= min_box: - if thumb.data: - return thumb - return None diff --git a/pyproject.toml b/pyproject.toml index 9f3f2685..91a3caad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,6 @@ requires = [ "setuptools>=42", "wheel", - "cffi>=1.14.6", ] # build-backend = "setuptools.build_meta" @@ -29,10 +28,10 @@ profile = "black" [tool.pylint] master.py-version = "3.7" -master.extension-pkg-allow-list = ["_pillow_heif_cffi"] -design.max-attributes = 9 +master.extension-pkg-allow-list = ["_pillow_heif"] +design.max-attributes = 8 design.max-branches = 14 -design.max-locals = 18 +design.max-locals = 16 design.max-returns = 8 basic.good-names = [ "a", "b", "c", "d", "e", "f", "i", "j", "k", "v", @@ -62,7 +61,7 @@ filterwarnings = [ [tool.cibuildwheel] build-verbosity = "2" -skip = ["cp36-*", "pp37-*"] +skip = ["cp36-*", "pp37-*", "cp37-musllinux*"] [tool.cibuildwheel.linux] test-extras = "tests" @@ -71,6 +70,7 @@ test-command = "pytest -rs {project}" [tool.cibuildwheel.macos] before-all = [ "brew install libjpeg little-cms2", + "brew uninstall --force --ignore-dependencies libheif", "brew install --formula {project}/libheif/macos/libheif.rb", "HOMEBREW_PREFIX=$(brew --prefix)", "REPAIR_LIBRARY_PATH=$HOMEBREW_PREFIX/lib", @@ -81,6 +81,7 @@ repair-wheel-command = [ ] test-extras = "tests" test-command = "pytest -rs {project}" +test-skip = "cp38-macosx_arm64" [tool.cibuildwheel.windows] before-build = "pip install delvewheel" diff --git a/setup.cfg b/setup.cfg index 9040d51b..739dc83f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -37,7 +37,6 @@ python_requires = >=3.7 zip_safe = False packages = find: install_requires = - cffi>=1.14.6 pillow>=8.3.0 [options.extras_require] diff --git a/setup.py b/setup.py index 95b9bc9f..ab1c7bac 100644 --- a/setup.py +++ b/setup.py @@ -1,18 +1,18 @@ #!/usr/bin/env python """Script to build wheel""" -from setuptools import setup -from wheel.bdist_wheel import bdist_wheel +import sys +from os import environ, getenv, path +from pathlib import Path +from re import finditer +from shutil import copy +from subprocess import check_output +from typing import List +from warnings import warn +from setuptools import Extension, setup +from setuptools.command.build_ext import build_ext -class WheelsABI3(bdist_wheel): - def get_tag(self): - python, abi, plat = super().get_tag() - if python.startswith("cp"): - python = "cp37" - abi = "abi3" - if plat.startswith("macosx") and plat.find("x86_64") == -1: - python = "cp38" - return python, abi, plat +from libheif import linux_build_libs def get_version(): @@ -22,8 +22,123 @@ def get_version(): return locals()["__version__"] +class PillowHeifBuildExt(build_ext): + """This class is based on the Pillow setup method""" + + def build_extensions(self): # pylint: disable=too-many-branches disable=too-many-statements + if getenv("PRE_COMMIT"): + return + + include_dirs = [] + library_dirs = [] + + # respect CFLAGS/CPPFLAGS/LDFLAGS + for k in ("CFLAGS", "CPPFLAGS", "LDFLAGS"): + if k in environ: + for match in finditer(r"-I([^\s]+)", environ[k]): + self._add_directory(include_dirs, match.group(1)) + for match in finditer(r"-L([^\s]+)", environ[k]): + self._add_directory(library_dirs, match.group(1)) + + # include, rpath, if set as environment variables + for k in ("C_INCLUDE_PATH", "CPATH", "INCLUDE"): + if k in environ: + for d in environ[k].split(path.pathsep): + self._add_directory(include_dirs, d) + + for k in ("LD_RUN_PATH", "LIBRARY_PATH", "LIB"): + if k in environ: + for d in environ[k].split(path.pathsep): + self._add_directory(library_dirs, d) + + self._add_directory(include_dirs, path.join(sys.prefix, "include")) + self._add_directory(library_dirs, path.join(sys.prefix, "lib")) + + if sys.platform.lower() == "win32": + # Currently only MSYS2 is supported for Windows systems. Do a PR if you need support for anything else. + include_path_prefix = getenv("MSYS2_PREFIX") + if include_path_prefix is None: + include_path_prefix = "C:\\msys64\\mingw64" + warn(f"MSYS2_PREFIX environment variable is not set. Assuming `MSYS2_PREFIX={include_path_prefix}`") + + if not path.isdir(include_path_prefix): + raise ValueError("MSYS2 not found and `MSYS2_PREFIX` is not set or is invalid.") + + library_dir = path.join(include_path_prefix, "lib") + # See comment a few lines below. We can't include MSYS2 directory before compiler directories :( + # self._add_directory(include_dirs, path.join(include_path_prefix, "include")) + self._add_directory(library_dirs, library_dir) + lib_export_file = Path(path.join(library_dir, "libheif.dll.a")) + if lib_export_file.is_file(): + copy(lib_export_file, path.join(library_dir, "libheif.lib")) + else: + warn("If you build this with MSYS2, you should not see this warning.") + + # on Windows, we include root of project instead of MSYS2 directory. + # Including MSYS2 directory leads to compilation errors, theirs `stdio.h` and others files are different. + # ATTENTION: If someone know how without hacks include MSYS2 directory as last directory in list - help! + self.compiler.include_dirs.append(path.dirname(path.abspath(__file__))) + + self._update_extension( + "_pillow_heif", ["libheif"], extra_compile_args=["/d2FH4-", "/WX"], extra_link_args=["/WX"] + ) + elif sys.platform.lower() == "darwin": + try: # if Homebrew is installed, use its lib and include directories + homebrew_prefix = check_output(["brew", "--prefix"]).strip().decode("latin1") + except Exception: # noqa # pylint: disable=broad-except + homebrew_prefix = None # Homebrew not installed + if homebrew_prefix: + # add Homebrew's include and lib directories + self._add_directory(library_dirs, path.join(homebrew_prefix, "lib")) + self._add_directory(include_dirs, path.join(homebrew_prefix, "include")) + + # fink installation directories + self._add_directory(library_dirs, "/sw/lib") + self._add_directory(include_dirs, "/sw/include") + # darwin ports installation directories + self._add_directory(library_dirs, "/opt/local/lib") + self._add_directory(include_dirs, "/opt/local/include") + + self._update_extension("_pillow_heif", ["heif"], extra_compile_args=["-Ofast", "-Werror"]) + else: # let's assume it's some kind of linux + # this old code waiting for refactoring, when time comes. + self._add_directory(include_dirs, "/usr/local/include") + self._add_directory(include_dirs, "/usr/include") + self._add_directory(library_dirs, "/usr/local/lib") + self._add_directory(library_dirs, "/usr/lib64") + self._add_directory(library_dirs, "/usr/lib") + self._add_directory(library_dirs, "/lib") + + include_path_prefix = linux_build_libs.build_libs() # this need a rework in the future + self._add_directory(library_dirs, path.join(include_path_prefix, "lib")) + self._add_directory(include_dirs, path.join(include_path_prefix, "include")) + + self._update_extension("_pillow_heif", ["heif"], extra_compile_args=["-Ofast", "-Werror"]) + + self.compiler.library_dirs = library_dirs + self.compiler.library_dirs + self.compiler.include_dirs = include_dirs + self.compiler.include_dirs + + build_ext.build_extensions(self) + + def _update_extension(self, name, libraries, extra_compile_args=None, extra_link_args=None): + for extension in self.extensions: + if extension.name == name: + extension.libraries += libraries + if extra_compile_args is not None: + extension.extra_compile_args += extra_compile_args + if extra_link_args is not None: + extension.extra_link_args += extra_link_args + + @staticmethod + def _add_directory(paths: List, subdir): + if subdir: + subdir = path.realpath(subdir) + if path.isdir(subdir) and subdir not in paths: + paths.append(subdir) + + setup( version=get_version(), - cffi_modules=["libheif/build.py:ffi"], - cmdclass={"bdist_wheel": WheelsABI3}, + cmdclass={"build_ext": PillowHeifBuildExt}, + ext_modules=[Extension("_pillow_heif", ["pillow_heif/_pillow_heif.c"])], ) diff --git a/tests/basic_test.py b/tests/basic_test.py index f2f6a8f8..e4681d9b 100644 --- a/tests/basic_test.py +++ b/tests/basic_test.py @@ -13,12 +13,12 @@ def test_libheif_info(): info = pillow_heif.libheif_info() - assert info["version"]["libheif"] in ("1.13.0", "1.14.0", "1.14.1", "1.14.2") - assert info["decoders"]["HEVC"] + for key in ("HEIF", "AVIF"): + assert key in info.keys() + assert pillow_heif.libheif_version() in ("1.12.0", "1.13.0", "1.14.0", "1.14.1", "1.14.2", "1.15.1") -@pytest.mark.skipif(helpers.aom_enc() and helpers.aom_dec(), reason="Only when AOM missing.") -@pytest.mark.skipif(pillow_heif.libheif_info()["version"]["aom"] == "Rav1e encoder", reason="Rav1e not supported") +@pytest.mark.skipif(helpers.aom(), reason="Only when AVIF support missing.") def test_pillow_register_avif_plugin(): with pytest.warns(UserWarning): pillow_heif.register_avif_opener() @@ -83,42 +83,33 @@ def test_heif_str(): str_img_nl_3 = "" str_img_l_1 = "" str_img_l_2 = "" - str_thumb_nl = "" - str_thumb_l = "" heif_file = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) assert str(heif_file) == f"" assert str(heif_file[0]) == str_img_nl_1 assert str(heif_file[1]) == str_img_nl_2 assert str(heif_file[2]) == str_img_nl_3 - assert str(heif_file.thumbnails[0]) == f"{str_thumb_nl} Original:{str_img_nl_2}" - heif_file.load() + assert heif_file.data assert str(heif_file) == f"" - heif_file.thumbnails[0].load() - assert str(heif_file.thumbnails[0]) == f"{str_thumb_l} Original:{str_img_l_2}" - heif_file = pillow_heif.HeifFile().add_from_heif(heif_file[0]) - assert str(heif_file) == f"" - assert str(heif_file.thumbnails[0]) == f"{str_thumb_nl} Original:{str_img_l_1}" - heif_file.thumbnails[0].load() # Should not change anything, thumbnails are cloned without data. - assert str(heif_file.thumbnails[0]) == f"{str_thumb_nl} Original:{str_img_l_1}" + heif_file2 = pillow_heif.HeifFile() + heif_file2.add_from_heif(heif_file[0]) + assert str(heif_file2) == f"" @pytest.mark.skipif(not helpers.RELEASE_FULL_FLAG, reason="Only when building full release") def test_full_build(): info = pillow_heif.libheif_info() - assert info["decoders"]["AV1"] - assert info["encoders"]["AV1"] - assert info["encoders"]["HEVC"] + assert info["AVIF"] + assert info["HEIF"] expected_version = os.getenv("EXP_PH_LIBHEIF_VERSION", "1.14.2") if expected_version: - assert info["version"]["libheif"] == expected_version + assert info["libheif"] == expected_version @pytest.mark.skipif(not helpers.RELEASE_LIGHT_FLAG, reason="Only when building light release") def test_light_build(): info = pillow_heif.libheif_info() - assert not info["decoders"]["AV1"] - assert not info["encoders"]["AV1"] - assert not info["encoders"]["HEVC"] + assert not info["AVIF"] + assert not info["HEIF"] expected_version = os.getenv("EXP_PH_LIBHEIF_VERSION", "1.14.2") if expected_version: - assert info["version"]["libheif"] == expected_version + assert info["libheif"] == expected_version diff --git a/tests/dataset.py b/tests/dataset.py index b01eb18e..5ec7aefe 100644 --- a/tests/dataset.py +++ b/tests/dataset.py @@ -17,8 +17,8 @@ MINIMAL_DATASET = [i for i in MINIMAL_DATASET if not i.name.endswith(".txt")] FULL_DATASET = [i for i in FULL_DATASET if not i.name.endswith(".txt")] -if not helpers.aom_dec(): - warn("Skipping tests for `AV1` format due to lack of codecs.") +if not helpers.aom(): + warn("Skipping tests for `AVIF` format due to lack of codecs.") CORRUPTED_DATASET = [i for i in CORRUPTED_DATASET if not i.name.endswith(".avif")] TRUNCATED_DATASET = [i for i in TRUNCATED_DATASET if not i.name.endswith(".avif")] MINIMAL_DATASET = [i for i in MINIMAL_DATASET if not i.name.endswith(".avif")] diff --git a/tests/helpers.py b/tests/helpers.py index 87795301..dae29646 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -5,7 +5,7 @@ from PIL import Image, ImageMath, ImageOps -from pillow_heif import HeifFile, HeifImage, HeifThumbnail, add_thumbnails, libheif_info +from pillow_heif import HeifFile, HeifImage, libheif_info try: import numpy as np @@ -72,20 +72,15 @@ def compare_heif_files_fields( def compare_images_fields(image1: HeifImage, image2: HeifImage): assert image1.size == image2.size assert image1.mode == image2.mode - if "original_bit_depth" not in ignore: - assert image1.original_bit_depth == image2.original_bit_depth - assert image1.bit_depth == image2.bit_depth + if "bit_depth" not in ignore: + assert image1.info["bit_depth"] == image2.info["bit_depth"] if "stride" not in ignore: assert image1.stride == image2.stride assert len(image1.data) == len(image2.data) - for i_thumb, thumbnail in enumerate(image1.thumbnails): - with_difference = thumbnail.size[0] - image2.thumbnails[i_thumb].size[0] - height_difference = thumbnail.size[1] - image2.thumbnails[i_thumb].size[1] - assert with_difference + height_difference <= thumb_size_max_differ - assert thumbnail.mode == image2.thumbnails[i_thumb].mode - if "original_bit_depth" not in ignore: - assert thumbnail.original_bit_depth == image2.thumbnails[i_thumb].original_bit_depth - assert thumbnail.bit_depth == image2.thumbnails[i_thumb].bit_depth + if "thumbnails" not in ignore: + for i2, box in enumerate(image1.info["thumbnails"]): + difference = box - image2.info["thumbnails"][i2] + assert abs(difference) <= thumb_size_max_differ assert image1.info["exif"] == image2.info["exif"] assert image1.info["xmp"] == image2.info["xmp"] for block_i, block in enumerate(image1.info["metadata"]): @@ -102,8 +97,8 @@ def compare_images_fields(image1: HeifImage, image2: HeifImage): compare_images_fields(heif1, heif2) -def compare_heif_to_pillow_fields(heif: Union[HeifFile, HeifImage, HeifThumbnail], pillow: Image): - def compare_images_fields(heif_image: Union[HeifImage, HeifThumbnail], pillow_image: Image): +def compare_heif_to_pillow_fields(heif: Union[HeifFile, HeifImage], pillow: Image): + def compare_images_fields(heif_image: Union[HeifImage], pillow_image: Image): assert heif_image.size == pillow_image.size assert heif_image.mode == pillow_image.mode for k in ("exif", "xmp", "metadata"): @@ -134,7 +129,7 @@ def create_heif(size: tuple = None, thumb_boxes: list = None, n_images=1, **kwar for i in range(n_images): im_heif.add_from_pillow(Image.effect_mandelbrot(size, (-3, -2.5, 2, 2.5), 100)) size = (int(size[0] / 2), int(size[1] / 2)) - add_thumbnails(im_heif[i], thumb_boxes) + im_heif[i].info["thumbnails"] = thumb_boxes heif_buf = BytesIO() im_heif.save(heif_buf, **kwargs) return heif_buf @@ -218,20 +213,12 @@ def gradient_pa_bytes(im_format: str) -> bytearray: def hevc_enc() -> bool: if getenv("PH_TESTS_NO_HEVC_ENC", "0") != "0": return False - return libheif_info()["encoders"]["HEVC"] + return bool(libheif_info()["HEIF"]) -def aom_dec() -> bool: +def aom() -> bool: if getenv("PH_TESTS_NO_AVIF_DEC", "0") != "0": return False - if libheif_info()["version"]["aom"] == "Rav1e encoder": + if libheif_info()["AVIF"] == "Rav1e encoder": return False - return libheif_info()["decoders"]["AV1"] - - -def aom_enc() -> bool: - if getenv("PH_TESTS_NO_AVIF_ENC", "0") != "0": - return False - if libheif_info()["version"]["aom"] == "Rav1e encoder": - return False - return libheif_info()["encoders"]["AV1"] + return bool(libheif_info()["AVIF"]) diff --git a/tests/images/heif/LA_8__128x128.avif b/tests/images/heif/LA_8__128x128.avif new file mode 100644 index 0000000000000000000000000000000000000000..609eba9089c54ee815adf6ca0320e9d8d529274a GIT binary patch literal 6075 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 literal 0 HcmV?d00001 diff --git a/tests/images/heif/LA_8__29x100.avif b/tests/images/heif/LA_8__29x100.avif new file mode 100644 index 0000000000000000000000000000000000000000..cdac0fa7cea9cc6a4e462fb0d25cf6305945d5c6 GIT binary patch literal 1634 zcmb7AdpOg37~f{G3CH!!?Vu9X*<>BrT*7RrlS_0HxirlD);6<^W5|8T!@8)HoTJpE z*os`6OPtoJm`*ras--tY5$-_Pgse!t)M{k{+g#59u2W0B*4 zNC;@k$N(a-41f%B=w$|lOIGTjZHkJZv%f(Igaw3i*YSGPVgX#n8i9h|4xmSeD;dcR z0s|Ll&_;+dqcq=d2&TTSz>k9}9srnYZLFO)014&WMP*~QSmnikMKH52z64lo7MQFA zSmDuN)C-TMvzg)a__fNasi34mj>8huAf_OM=mQ)UMF~Lr0o)Pb2AhuulmZk1Iy^Zx zo~UH8Y^EcFMWL=acgJuboaM;jakvx)#}PaO&;c@==SZfrqSnUr|Eib)EXMkDVGt-h zElVv20)wZkWb(n%#sHi0Z5Uv8U@bcM8K`nx@G3?GnX3y?S2ffT=kwimk+dNYIY}xk z$7WSGoTjpjLN_iS2^e#L-HlElZYLFL^Q`Un@<)`5JX&&Ovbtt<-_$!l-x9!}Rmzn52P z0=9i_!VRN4b|N{q#{3CRQ)BPXxEd`v@eP<22Nm{YmodGCqUn19)jv3JQ#{aC6NBO) zlwbP1;_8Y9W+h8VUFy1&;Ciym2haR0ueN>y^sq@gu1E}&Xz7~FgIE<#} z$}?PCoMVrjGT4KJRwlR%D&Q*<0Mn&(es0b_e(}S zYdkMbTs%Y~!ZV;3L`A7Nt@-b-{wgoltqVgG*wcv8ZWzThWPWpuLkiVZT9EO1qBkk; zQkbEuUN$XR;~eJo>lAz1vA}x9%U-z#7RQZaHa*?BNApFM+HUQjV5S@LDeu4*18$2h zr!%;(aiwU|^JB+@21$E&yjIO*g~bcI(976BM!EB=34BVb)RwR)D&J^7m5@JYj6+|4 zo`;z1DmP|W;QpXa^lEx(FSXC=k0^xZIh9uYN%3KlM;zZ0kzLX^R7Eti^?g1bqkCe6 zjWw9HxIUCroLr1<;Bna=Q^+(kB7uKlHA$0gy-(!4JNNi%Cyb z^wP@RhbD*(dfQA(hB|4_MAq>uUkZ3Ogva};t4?t$wO#A8NO-@##owNZPTUZ0DeTZ# z&5fxG9%)g_yrpkBf_i`q<$uy4kB*4#@cehD`*ocIRTfI!WJm1~a{t0b_cq(a>HUwk zwV~T1XC@hu9?|vNFYIf*z2qCLpD02L^pBj;d2x54*uo)A<;^M@=Xs!9P+uvQe<$ib z`6k;o&|s<>10U|7+Mb$i^QC>Y+L5kZagq8{PLC7Kk|0}AWUCVor@zULiRaE%^_MM% zEx3}r6*%AXOW4|v5p8Jn&+i);gBz}w)nzq9Hy<1bEn2n7bXl0aib@os`tOM9hp}2V zs$B2J9Zok!>?{vUEO+_N4+kei?7*n$El6{Y4kHpxDNN6Ku8!?!g?6S;Ic3F$)D??<>nrxNHH(JP2 zge;Mil8hxwmU$0-y}$Rm-uHU1-@m`-I`cgD`8@Zz@6X)N=bZB#007@b-yov9E8Ydb zjex(X^v6al6I^|rwlKJfy5qdO|Cj&}@h-kQ_Rh#c#QPGqPY`g=hsQbnaoGoO+vuOs z5$|=`1%d%XEI@%R18zv(9Scz|9-KO>YN;wsQS%PdL~=o=_Q{=uLz}lJG>A%Wybv z*xLX?Z6*KH=rpjtzOn)UD^di`%Zr8fKy><+0}|xGFr0wih`@@%bJF_I_Lcvdphlo` z4%n77dftJ_A-5R99h(^Ji#CLwU5V#_b8z8(h_3%6!@}d%ANZfxzJD-yMFR1#4WKP@ z|0z7Bo%{j~wpjalU(zBFUEQ?YUHx6Oln*MYX~9!?oYwX#O5%xx9c{uwLWCm#0)e~^ zkcdb$Kp`1pV&M?#cyHG~Y5;%*hbOpgt7}Vjf6lfPxTP%?II!2YqTqrvR}!|hiz<|X z%9-5QGs9hc&V(xXbkUON8#!x=-|6=Aq$3L-k1Wu2cMcsZJT8n!tUc29E9Z47hZlzg z?|M}&E5(Qta6Vs~7B7lMh31&s96#3?ET)dUGjcDVb+)G`7~8;e%NBu2%Y6dhSuhWt z+^n*J&xb@7YZ#4=hUWg%Wep`{KVCtB+H&NfdyM>_K3I*kYA)$Qs{+MF(0Ymh6Q{z)9q|lj!)K`*BxSpshEI=8mggq=kylEgeZfLy^J5@`ZY|~ z`L!6i3<@I7CTg4WEp;or;(9t|XX}@Ant5q=m7`RMcgf`2`#et7VOkEt17ZSK)fEd$ zm4v%1@vn|r%VuL_W8!6YACVUS(x7MHwkI21a5?@%0b`MK^WR})5y2d*;5rbbKq2lr zv8maxp;9b3IT-3D`>^Yp;wU;cn&QAYlwp-Hj7z_*j>~#+a!F**Qe@v^=MY0;lg_y# zuW3zZem17m;9mGd@)*Pj_C{T3KWW`*A%~Rg&A;m1+AXDoq%XQCR7^V~zU7*dTB_X! zB0$95778ytQLX$HX)<*=5kDM{TAlTgFv(m`b5DM0Kk-01E1>0Tec?ApAbNV;!(E5rm_nz zJ(XnsmAd)wL4CZxSJ5V8gT?xR^^yKAP1oj&jlM$f$Y|F+VTu` zdDiA!k6iehd~k~2;mGV{*aVl2Ib*^v6N0@$D6^&aU*>I5L!ZqU^^JReIrAs86s)?f zdz>}RO^>S=_9>|o>CAjE^dqm}lZ5GwBJFn_czlpqlR#sL@LSCOCpU!BJNab$LPa=R zzdj(VsRlNk`7DB!T)!OMu1WSqje*;;0KE`_U&r>^aVQ)s?F2gdqh6i75)}dJgOlo` z2g_8SFr6w3p&nofjKtN@8ZwlEgEkSTq**PU6;~FJA9P63WA2HJ(=%sb88h|~1NRnlaKIcuu)@%|?f z(Hnu^%Ew#fwa$w1-Hce%lK>N9vvFC$lL)`zA07GvQ0tMPW$s3^e(mK@dhB%hujgo{(L1Zg3j7faYX-AnA0bnMKt25CTit$Capskt z@u)qXuUnr^qJJfIlJr(tV^)R9D@m!V&9SSBceaj7Cfe@B&Dir5#<|~kHVy}0swrN6 z>rh&7u(ljP))|WSk3Luj3Z2ja5X$@$pa_a%N_rzA2!W>e%PL9D5A$qHZ^Lk{Z0PWyN=+H;nb)46e5cvMYUli z$f0-Xh*!NlMX|Wq)Y&LoxP3f$@wFu45GXUvC?6uoYqLsO6oYYbjFwp5i;VEG9=|ES zJ}C_HdV~+D zcgv6&o3~8*dC;aQK0yYXd571Vs16Wf%rQR-U%Ll_HO|GwmiIyXmIZs|0>Y@M-G3|h?6uUmO>2$SKvLK0y zV1Bh4Lx_t5kl;R1eIah!%zC=z7(pZZnIMzS28Stcjpl`G4DPi-L6P=EAXm&%9lEz$ z_JS4`AUvDAWn|cj)H{l)0EoYTf9vGwo>R1l1nOn_Neg!%enOLO6*@idi8Z@yXHCCx z*gQb{5t7B?ju6N5Tu;$|s*3z1JN6Uw^4Hf=l)IG-vKk$EREBCStpY7YqzQpT`2*L$Q5=3|@t9=_lI&kWG+9kLf%NBxJDl?h0-i$vvia z4M0UPbE6(c-edc);vYqe_QFq84e2kUkK|+k%DA4nb3!Ou(J{;j${gWE5#`qwP2?|h zOa|o(Scw$zT%k}w9YpL+e68x_&v`1N zN{jn@9jf_o-XUL9?KL6Y3G;W^HvvjdQ$XzO&E^aGeDD`o8&zLL`9ln^0V@@t12ZC- zIx5q$Cg!=+Lb%svDpo9`$Ox3F7srCI#UP@{Era93yF zwb6w`-9MPWm;AeD{E@w|h2+m!|4702djL95{6$bPcRSe+B!xs#yZ{gx&bb{mPy}mx z!pz91dzM`(#EA{9>ubkOt(onSs0voO^(7f^96_;Zy9N-$jL7VIk=;t(#sFx9?KivL z6WTi^FATpfJdDd7ct_^anL@a39PV?s1V~HviO0Qhna|zb>x~+DDY}C4=|H;fK4Yg^>UcAg4Yudq>_=;^g;>bg&Ck5Pm#z{5gYZ zP)g)9&&%k6zW3Q-WQJ#+OQlM3j8O~}0BoE+;~uTItrsF$U=hjwCAv}7n)GggHhB)q ze;4z@qQU|o@(Ph-$(daTpmRkSuJqLVSj*bV%3V^qBL_Ukvv2QrJ*-_Fb`U^jPR1J0 zuX}%cHKkKbM@DCMYnJf=X2WBN3s(Cxz;{S!l^Ht#fL?>H5_6R$7D$o}>gIBgT^VL2 zcB~xlfZXEI{YtSy>Xf_P<8!tJ0L?@{ zPFW{=^0{(yf48r|CO5N*@ZDsNJMz$_}hC19uJ#*<) z=l@aEONZ+DCrbXJnQOFCc~KVcJ#6-VckE?)8c*`o2FTNoqJHYc0uY^>nP!-qnF!*)$W1Lt1c?KIVn#|%5roOWP>`8i0%OBy zzJkn>Trh_bNGfIKLQ$OR*1t`2BHzlz|h=GeuLU4KSS_h-qi~aaej&Ssk z4@q0~7c}Jfw7V`kb80zzCZoxR^Lw4NQohW3u`^_LdgYuW)4ON#D+-k)uUJ{QhGklP zK&(@rOv;J_c2h+kZuoG#KTqt>O<_mbYc0uY^>nP!-qnF!*)$W1Lt1c?KIVn#|%5roOWP>`8i0%OBy zzJkn>Trh_bNGfIK?Lt5_PFm|K9t=W|mMON1D>*d!$P|4$Au+Qlfqz;KQ$Eamw3 zhQ)$bT%xT@>nvBCmPnedFO&L*KRUk1Kj+sjJ(QHOyXy8e&bxJ-6n6jsaKntQ literal 0 HcmV?d00001 diff --git a/tests/images/heif/L_10__128x128.heif b/tests/images/heif/L_10__128x128.heif new file mode 100644 index 0000000000000000000000000000000000000000..016beaabb6a8bf02f1e7c9b202b805705b14e1c6 GIT binary patch literal 1708 zcmZWndpwkB6#l-3wn#38QX11$t4Jy&JL8seX|0MvX-qR2HB8KsYz>kb6uG2Pth>0!}Dq>tJm%+?;_8V=#{iEmoz2`a4cg}mxd*0uNAjoV6Cz>5hXVMTH zEGENJ<+GSn27;igS#%Cn^&JN(c;}w*Z!UtcnKaIK|2t1*GdZkrf#P;9b5GcKNoNXz z;tL15{Tm~Q`UYIiV=_bWCaM6w^>IO;@Sh5fq*%vr}?lsg={d3s+Ak%L(i67Mk8-yI-29 zjfX2J7sR+RQfq=@+pZ9fgmK~F@fD?U{2jiQ5Kz5S{%94z!o-lD5B5waiF};mulmB! z^G(&gBkqY0qV|t;UG$yb912iuDb%o#bV}L817+gAa{HJn!%1HP_YQ+%UxT|?CsC{5 znC3=eCxS4dP2b$U?y}jebjDZ8l4MPD+1iS=^%czk5V&pc!Jpi0Jeh#Ka%*r4PP;PG*Ng7gw@zD3b6M;cBc^jf-=oNi z@9mzW5Y1G)MKk7bp;kii^f94bPzGlXZWj}zF~JVH>-cN9aLbz#&GX$yaM9D6-kDoZ zFk$Sz3QD4lV;;HLMV7&)TDn)lSeIkyo#W;D@-ww*1xp9|$RLv?mo4Aw9aU~xX{vS< zM$>(G+Gjo(q@+Pl+=)t;p-1{hbxZSa+^*R4mJ3NwGd5FpIxgMyjP<062sMLR*;HDq z2LV8%A=MkH{d_d5H{kgA3FhxuHLgL1+(&HHC+a> zOHwHEmkv8y`;~YCB!>w7Gp@b;(hU(~2IhqW(qVDz^FoJ0A&B-=IJ&lN&D_zWUdnya zv8>xL>N0c>Ju}kOw?$pr7}i)&#-UruTL2QW^#{wfeY@MOZw~o`Tr*XY!->>xDvG8o zuHY&wGTT1+O=|8If?O-f{9{Vj6H;}%bAZUhENv`bJ^yv3pbX36>%I(6IJtEx-3mqy z)D2me?hpv5lJx8hE~Zh}mJ&X4c6B?*^R8$m3X&#I$PJrn%I|Y28}JLQZyM2qF~{Ei zhVbN#*8-Xs!G^kN(gL&(o}vY(5+>e>Ow_S2>oUt(?C``1MuqGE`xgV#NliW-3i_Vv z=clYF`q@a&n62GI1{s1-j%ZR9@V{Etg)cmrtoIFyy$Y|sahcvFWGuu9PwqH z1z^4Pzk6>oKj?DoT9IJO!xr+F8}+fRJ)JNn@@HGju_(M2WR`+?X;j;HHavonlFGEH z>4H&*<23~lKVCC`o9tgAs4X7= literal 0 HcmV?d00001 diff --git a/tests/images/heif/L_10__29x100.avif b/tests/images/heif/L_10__29x100.avif new file mode 100644 index 0000000000000000000000000000000000000000..c41682aff61caaba9c66c67dd3adfc1220a5467b GIT binary patch literal 438 zcmZQzV30{GsVqn=%S>Yc0uY^>nP!-qnF!*)$W1Lt1c?KIVn#|%5roOWP>`8i0%OBy zzJkn>Trh_bNGfIKLQ$OR*1t`2JHzlz|h=GeuLU3nquY=KCMgazfTVGD` z?$0dSwefa;`-FM=AKpyb_h`n;M>VQb3uhUsJrexCre9*^FP|T_p((FzE}k>KuAlSC zmaC$rSnA(_FDcurHsAkRo-wz_#%KSNto`M&xs%Ki!Y9vF-0?l^<;kpnvr`TVe7K&G zqIlg-=e%6b)rGt>KI>mq>fJu^_nHNn$#U{%uDs!&8n362>-xWD&g(@Fj_Y1x49nMu ItZ#4t09kH=ng9R* literal 0 HcmV?d00001 diff --git a/tests/images/heif/L_10.heif b/tests/images/heif/L_10__29x100.heif similarity index 56% rename from tests/images/heif/L_10.heif rename to tests/images/heif/L_10__29x100.heif index baf0f5dbff91e66a1db2b64445e231190913d569..7594caf03cb45dd8d535bdea90845ea7db52f481 100644 GIT binary patch delta 98 zcmZ3_v6@4Ifq_9Ht)#LbBQ-M_$Y#jROfv+rC(3xp$}*$?MJzIN@{<{X3>OCmCI%1# o2pEq~YPx# delta 83 zcmZ3@v7SSQfq_9Lt)#LbBQ-M_$Y#jROfv+rb2AguCQ5iPicCzDW;{Ky_PMACP&NgK dMKX&EQb9_Az+rMFqZ%tS0}~U|<|T~nOaP(p6e<7! diff --git a/tests/images/heif/L_12.avif b/tests/images/heif/L_12.avif deleted file mode 100644 index 0cd220712c049be46402028fb4aca9cb77309ba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmZQzV30{GsVqn=%S>Yc0uY^>nP!-qnF!*)$W1Lt1c?KIVn#|%5roOWP>`8i0%OBy zzJkn>Trh_bNGfIKJ4w4H%LJhLDd<{_Y~SQ?v{TY$pPa#IpZgc!KkA_SNBu3KPqkx_twVX@qL zpBW!{`WKkTEOhUh&*C)s#;>ot&)wQ1*Sc}Gj>7i0=cb?U`yQV2CFM$r8vlh_Z6?*8 zi<36&%1;;C!sL4iw(`!yzhzM( zKj-%DlNOw5q2Zc#dv##6``te=>>FbfkMH8S&suPz=|TqEgEca;UMb&=i>7Xj|7(BG z=x$_)y5!g51K*s*-`&$sDqFKZYUiWw!@@gyjvZNgRBBb+`7`IXzPnv(uud=c{gu}j MKTqU*ZSBYc0uY^>nP!-qnF!*)$W1Lt1c?KIVn#|%5roOWP>`8i0%OBy zzJkn>Trh_bNGfIKv}{4Uowol384k3St030~7;Y zRgno20NT#LAf8!}3-b`rRV7Ek=&HT5+MdIwg}1n|C3i3{bv+lU^vGWZtVZ? z-m3K_*II=a%O=hIrn4ut-Sp+#t%a;2k`71a<@R^S?$nvPgvnC5--2=W^~8+Dqrrmz0P&Yu5CZ_Zgrc_ zUzc4s?K>lK7y5LtZs*wT6LffP;hzZy_X#~0X?tF1Kg;RuqeX8NxpXBgR)^|pl`Phs zyZg|;v>k>2uX&`s(yQv+vf_)8@$8(h)~jxQUsL>5=yl54vsI$U&YuduTX-zkqD{;f E0HQUpE&u=k literal 0 HcmV?d00001 diff --git a/tests/images/heif/L_12__128x128.heif b/tests/images/heif/L_12__128x128.heif new file mode 100644 index 0000000000000000000000000000000000000000..d90abf8dba746c0df6286e5f11448849a4aa8d33 GIT binary patch literal 1157 zcmYLH4>;6k9RJ;2%JAT1pKi%gAv^&IJxkjmDb zSTt;n!sFjH)cIQpJ2r<zR!zc7>yHsf)~cd zLofs`&aqc(F3#d$7|Dgpj%KO9BbbMUMjTs~7{+*+IwH>)pshl@~S z3bq{d>1gq4chWt+&;a!?#G`oZx7|)7R!?-&SR64%(m`Pz&f~6J5;`g63|WAx*>Xc! z=!z(GYf_Om&mfwTXsp2;-Pj~cec$Ww$<*Pzu4)TWVYT!38hK;aEJq95*2noHC7#Z2 za29u404UoOM6arLK(Po!-PA{VWaX<`2_s9!04T{1e#7zV&c}OVM64e;Cb4&d8#Uwr zg6UO^uE1FzgZewxX=!OEMy{tsIyP7S1(5KahKszHws&p)w3DQ0yt-S{>})y#@^Ocf z%F8)@6*dp~_s`w17Fg(P_u8WbSQweF7!EQRnO70n?PWIFZtg+@dJzFVWscsp0e#OZ zix@(wRC@Pyo2ww8??4qm7L~d6x8UR2ZtZ1TY#GVVekMR=1CVZE`qJZZyM^@w2O-O8 z&sx4)qSh}iLV%gk;mFiDBhicbnn)&-=_vF2;17T?PuYma4#Agy9?#-b_A^rkPLAIW z&fT&GRN>DbmT;5&CzPMG6*ynaEy!(3eGda@SWI@(DZde)8qz&0bnwkspQvTXv9kpj z?5S&<{jii;&!>6P>2w;u$)pt^kL{^55qfjizRvAh;w1BC)@QU>zOwh%j;o~v^czby z_u0$4Yqp(#I$zEe9g&xEQUMg%e?!G0QTs}%0)imo6$7V^YKj0%$C$>vyDgrdUuGNJ z=ZUQb*;joOu+UG<+epM=$I0PinQVE?VOv{UMp5;|pmioJ7DxGQHQB4{bLn~22Fn%)U#m|k(>vjH z$2aaqR)PGmz;%fp4g5m^lf4xQma(^LVeH8j6Yt%(zy9LNaI8cksThc#I{+ZG(S1Zd zln_O0vTq^h6l|WoRnnDJ1kk@j67j@usH!GXG^|7q;^jSo#!wKxw*;m-lN%|daxn+O=fP)@5SLglV~po`(%Cx z6%zm{9!9#BiTMrYUi+z5CTCd*#&$<863}@*|LKKojN-Zly}Ey885tMsq|{Tpubce` D@bvuG literal 0 HcmV?d00001 diff --git a/tests/images/heif/L_12__29x100.avif b/tests/images/heif/L_12__29x100.avif new file mode 100644 index 0000000000000000000000000000000000000000..f157ba3b30175d5765d6d669529be152f5fed9d2 GIT binary patch literal 491 zcmZQzV30{GsVqn=%S>Yc0uY^>nP!-qnF!*)$W1Lt1c?KIVn#|%5roOWP>`8i0%OBy zzJkn>Trh_bNGfIKJ4w4H%LJhLDd<{_Y~SQ?v{TY$pPb5jyagc!KkA_RB#_AM~F#3;bPaO=w{ z-u;=W+grF#q!rzKqTZdYy76*&|GlZ7lHYD_D=<|TsrLD8^saU(hl_vg9x3*$h!g(T zS^32o-$XoOZwZsR7#m*CvRM6sg40e>_ba(;Y~J(sZ7*CQU2(cJHH&Af$DMz*t24`# zCRTp#E^;_&?3Z4vQ~O?i)|a^Stt%NXIrqGE?e>wF$l{*5Rv=yLq5T%qaOrvO>sstX z^Y7a4+4k)4Yn6j5OJ`KRx~?QuEB4OwN2JURS3a5Fo?5rtZzZxVmi>74M8Wf0LB(7? JO&NR}0swa4lPmxL literal 0 HcmV?d00001 diff --git a/tests/images/heif/L_12.heif b/tests/images/heif/L_12__29x100.heif similarity index 60% rename from tests/images/heif/L_12.heif rename to tests/images/heif/L_12__29x100.heif index 3d0704a4be96f2acfa697ffef66ef17414f6e675..d177c48b19e7fd430cdc873e92ec4d516e2ea0f5 100644 GIT binary patch delta 97 zcmZ3OCmCI%1# n2pCUHYo_JybjP&NgK cMKX&EQb9_Az+rL~qZ%tS0}~U|;-!qt0E#jbjsO4v diff --git a/tests/images/heif/L_8__128x128.avif b/tests/images/heif/L_8__128x128.avif new file mode 100644 index 0000000000000000000000000000000000000000..1c8dc9d8f1d7d11b732e80c946c3cbb0ab9078f4 GIT binary patch literal 388 zcmZQzV30{GsVqn=%S>Yc0uY^>nP!-qnF!*)$W1Lt1c?KIVn#|%5roOWP>`8i0%OBy zzJkn>Trh_bNGfIK!=%*;HnrC?D}ASaaxtPJD~149rq zBeS5W07!dg79{5bY2oDjoT9wsoC*deAY^L*3h^YC89FyI$N-rPBALYnsUQXrG(a)X zRTY^a0Y(lWA)Z-~3-b`rRVCk7bh2rw|5<6=KyBdMEH zrR=hPr3*LL8J(RQ6d!nNg`7EY@aE&KCMsfS3%pIaE*nmj=9OE#%0a(xY5e=;k_=h? zE7;@hbnf3);&|LpCTOPnwVzF3R!-Q?Jn#9Wj)t3LzkXND!lI8_JMI@0|1=Q BTju}( literal 0 HcmV?d00001 diff --git a/tests/images/heif/L_8__128x128.heif b/tests/images/heif/L_8__128x128.heif new file mode 100644 index 0000000000000000000000000000000000000000..9d0fd05ff210cdc7ac3f571b177ff3b2874c096b GIT binary patch literal 2922 zcmYLL30M?I7XGWd=j4XrQp5p4@!&KjLF@~6^ zsHo$G2Og-|1&PMixU3Klydo&*cq9_UNP-%I2wRQGw>4k)d-ba7UG?7I1HdOWBgFT|A#tS%o%B&6T;s9<~j2^ zRmO@S?8gR~`i25pdp7N1HqT{7#|oGS`g?bqk{$UTq79oc4(JXW*XJf~zjpv1K3%NA9FTQt;fU(stsC^7{E&cjkYkW~I-(eu`hO*5jMJzjMN zy4U~47g75fBT{-{bv~&b)p2K}&ApE(*d*l`f6gO}_xXh^Tr7l!3_1L$rum}zChm9K z1X<*Rgt=tIUiGpu1!pT3=cw-b-nSL=hWIhiZ(?o8ALx@i=gFFmIR}| zcLVq`a$_Xk(R;Q-S@e{pEfLWK&t9&Buu9+ODID8ZQk=J`l8lI>LwZ9P%#}K$y|DnQ ziFA<{6yV$Sh!*>~!|jv9Hk5}sv0FSvx7~ofppx|b&qq`@YhSNkwfWavO~@}k@C~ME z)tIo`Y2(B1OVaMeN_H8dPbeHKG072u1#`jmk{ou3y}IbZ*HX{n(A@O}r;;3O5Kd!Y z7jX9Ek3>>j{&?WZrXx#Z+M_BRzmP}@1aBMPx@gDPLBIB_dvw6MilVh1lSI;LAx^ie zpmPRoM2}id36^86O;r9FY(#1hzqSg#i5{VpB+$kTY?+?}RXkl_C6;nM0%}Nth?+_u zAU}H(;9_+;3!=hd3vy9rj!O9Y_ef~AV9`q`?SDC}yI!R#(&OZ;tozSrlqPvf@pEA6Nca2u z*j)LTeSxr1QfzHBfP@g0J^$pYh=DgqgUE%SD@KHlaqwyJd_qYhG1rrGKRF|4zby0< z_4g_7$IYO8*Q*qLJB3}Hb)F!3+2JDZ(@GJ0dBwn*;$3Ffrf%gJ-axs^9sfF;`_?NNMS)Fl&lOfS6C)^|NTA~nI3?8QYL zLM*P6uwYmB@;q>1oTHaIv_wQg6MusW|6K=6l{vf<7J3W(DHc6{>#!B^1}1cHZ>Qwf zJdcmirDhgX*J#v8a5km^{-s?8QJ?S1z<1D*vABE5i1*UDi#9&)5lGy5hhY-7V#P|R za~1one&*9Lxtd3z9V3cbo!@`pmtLMYzZTu2C$H7{rka1Mjd_m0|mxex22##w!mBM`ZjuAtDm0!Aym;p=dOQ#r~kqdl0&)qR*beU zdVP5CvVza4(^xp{i=PbMg-lI^f0)w{N}l3^S}~&QL@VWHIc$tu(R|9cVh%zZljv6; z))v~Xygqh$lQ|2~x`^KI>PlL&3SnQ*s?*`VjUVQIdkH39A5b!={rOdiFJy)spSMj& zsH5C2?o*qK`V1!_eLw4W!6+cp7%^YZm-dK%chCj6=Q3c|)l=cfiZi8{+cBbKWq?T5 z;(?Xh@QDaAoD8*~raTh5$>NQEPznl#g#LLwgD^U2x#oBnJTGVOPqdq_@z#MqEBfxi zmHY!sTS3-J?0QV|Co%vXFQdgI!<6o~K+5G?OD!!c0QXgHm(S=C>YfN;x4z$H((~f^ zD%fXYNgnStxllsDUnJF{{@J$>$bY2REcq2AshUA<%Ni1n!(ko?KfUaGzXj>sszrRjerSIkfV literal 0 HcmV?d00001 diff --git a/tests/images/heif/L_8__29x100.avif b/tests/images/heif/L_8__29x100.avif new file mode 100644 index 0000000000000000000000000000000000000000..6befe918f710532364bb419e9d70c24cb5cba4f8 GIT binary patch literal 381 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 literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGBA_10.avif b/tests/images/heif/RGBA_10.avif deleted file mode 100644 index 3a70f59f5211a187176cec7b701999d5de8a5df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5867 zcmZ`&bzD^4);{!5N+TVDA|WkZgQU_R0z(Wiz%b;{4N6IeG)PH@K_jh%3Ia-ll%%x8 z021Fp@BQBU$Gz+P&R)-Y_NuejJ^%nP+PM3;z&(*R04P`55osgnh=hYSu973d9e%}w z!e(dffc^^szy)dL{%`zmea!{w?)b;R0#^~FgR|9@bzdI91|Lvxk-*gsDA?A25&pox z88T*&7DpnT{NRpdV;xbrU(Clu*|b^!n!Go*`^Gnl=@%Gm+! zf_4UTVb?lXIlAEr0Dz;DJ6cx-%KF&In3Z4|zyT{$0R#XO+{(>GL0kLbRrdcbM`M4x z{Kj{c>%aT_PnN_Q;Rc=q78U4WY~_Lmj|~g#6>#x#ce%pzAf~digIk060K~j#utBhI z)+^rfFBZANwtune6-MjpDuO;R5VP9;2e$kVY-NWAr-AJc`fymHu4-ZDUBx;&c>I|Q zh_9wWf^ag>1GOypG6D|(G=K!$0XV=4=m8plHlPnEfmjF-0R%v;@jrNXFb>T6KXU8; z$*m3gI0H6deg^;n=CK7=C-6ms)!adC4RV%%54ir*1utl610Epn0LEE?mNl5e5sW~B zv3IX#3FZc6U+2%)VA1ru*$4~$p|D7x0Dw1pdAZLC00hYZaGr2^`8)se^1J}ND>DGl z;q*_ueG+*6IzT?~AMSP*08riofJTjfIO|dXs3igbTDS`w4gXUI2VAkmmjGZz7Xaw0 z0YDxkXwCngKM1e(fqZaohG3i)IJ0!n?>6X1zWGnyE1&-t61bG?@C9RNFE|P9OZte(2H%ZV3>41cz zeI(%yE_Qz!|67Gs{wnmpRU!L#6&xa>t2)d`7stO}41O zXvE)t7wiwL=5Xb6H4};`M{Bq{1we#DnHnvHu8uq2}#O34w(2b({=@)7D~qFhobHZK7S0`zPV_p@7W05YoGYO+_6Y z@N$C~AzuisnUD>Rw~N}BEw_Zk8mo4BS7i7dYvf)l(fWQZM?b|G!f%6G zC@d-NC-uui+X8(DBK>>)>AU8X#(PkG7y6vR#6Xibbx&NEajVUIf{D&Wt|fV+s6;Il z6OXCzXCOOPq@MelEr6rhcxMmW23R$TOs* zPJF1`Ph9Lt?Z=y!6{U>0*v|6{45o8;)EFbXH8MXy>%#H64n7AXIPf^D7|P`{y`OUk zh{`nIl?xNT#8E%6vd?&#*4hqdJB(F)uH40tM&>Fl$GK-l?M+Cz(dx^==GkHwWE3PAYhgz69tZ@+|2yIza+jG^^ zSt?$fp9|X^ag@@ODI`W#C)f+-GaS^>8pVCpYn+=Cwcrn)JlH*-FNOr{1*OD7ut)}fjy$y2%pJ#(v#TRLUJsrPS2Mj>?WB5z zmk_TXy))4m_M4V9Qoo2bMB4uS66-^m1q?s2;Q4`F&KwB>WuPBSm!!riI& zbYjie-|IedLEKI{hxTycjjrj+!w+_^t-EkKWSn$&VQz9K#qtsE&h?vlcY79X<6A81 za_-w~CHzR}Y7z;v$Hcf^@GjdKy@aZ-8S^(pOP&aQKi%Li3@66c>P88dNgYzZ@iAJq zJ9mCoeu|vW6v#?M--=4*;C_gC@$oqs=af^H5jL8|eH}x5R9Lm2+A+OH$xd)D)qea- zU{oH%uRE_vSXPui@NcHGyYfz+m8{#Nq)_o59@z)o8_1a$f`LrIcS(v*c#!8(EWDYk zES)~ZYOfOS+}a?-pKUL&VKT0-ovwc9cwH!Uy1MPf1Ta?s3YoB?9*cWQ1d>N9k ze~Y1gdaOUm)(%SLaUg;a3Ako&&AQ6-!s^hNHr1B$snb9>bGMn89!iTn z?Db`rXX>ZJc1YTuAGwB+?p}j)vhg5k3r%rQMluBnQoyICwLvk0+7dcjhT2iHgt&`Z zOfZIMc|AZOthp@$jsGsO&OS$yY&!x&A?Dzk7LZWX_P0zcpPOl=J^OAFo-P6|Xl6P3# zbeYdIuj&!`wfm^HA04+_COy*>uwK4`!$02G!-{|CjUA4=OCyVJ+NkJHQ9bNY!&EhT zWq8gbgumJtWw*1K7oDj8$*KlaBxd3C`r!v3~;QMX3hGIl!W1yCvuE&~V$en%pD zg;YRQfs08HytaO${8KL@!qN`na*4hT$+}5iyFu2h`<0jPjES z@nIjC36(y?U9Wo_hwCN=?Cw&|kBbiV?UIf3i9*RRbS%9z{`WQgshQM^b_o`+>T`jP zqk#U*#3zjeg1R+yzVS6WI<~o6&6tC|~wYs#+JPBb#Y`#CnpI?nCF&;k^7}j-Onp!SsJd}&)QIs()udlg=<7FjR&K`hh z@(HFVsdWKXpVM+`Uu5lcJn@2yQVTZ8hj>4MW^!$5;Dz?*h>O|* zSe253al%<^P@OYSaDN3j`(^VTJ+=DT5|=$mX#{H^K~iZ}&L1w8c=Dj)Osx;0MjImA ztoQ&PkSZfe5OB@(uI$Zi14wASOxcaQD$Wby#S0q##B(zrrqXpI+2gy*X?KQ(azreJ z*D_WPStq%|!z_#p9*9O1s?0Rmn~M z^8!M7Lw(kPWz(D=qI+ z#piq;;Yg+?N#>n~h9ClA*JHhuE(`(aBNo*3z{*C7%5Blp;xHpTj+k$;pOUiMvh@lc zWyoAm@7jI|GikDui29u2&rDL6JhiV^oJGfTD_i)4T$Pwi)-0ip(KMh5-_Sc*dfv=; zR>T>rlwPCX)TrRsXeWXzu=+ToXfThn@p^h=N4@`-Cx#N8gPhs#o02^!8E^Oa%PHtB zS{+kprPm|$pPf9|PU)5CO(|kP55J!ybj8aaTi!&D**%b6C{3oJ)^)0zjrD5zby;!P z$%_Z$Rc^YuWRH5e_uG6XZH&-Y=B~37!`%j*0zd1j!eKt9#=56WmA`i{x=;kMjOPRB z+l58R^67Gwbm=cQLnI5Ib^d3A{A%i9Ec=oH}QHdzUyWU?VQ8>YwotM#mDTDnc`RP zTk{4-V3qdYk^jisK~5m>lYcxV6{CS&>fn@QeyUfoXx(bJB#A`u049_ zce(D?^Ge3DKvSZ`ue72_EVhNO`rW4h&C3a2%u06?<=lM>+?lO4D4&9(LR1OPUJMcaNpUb2RnGv%PnVWihkyICS=fs|kRBoGf~^9e;q3q`NX3 zvE^6a;An%C6bQSdsKn}8(loniGq|x{E}VZd!F=-N>*+H~!c8b8gef=sr$*~?C$chfK+vpRK5p(_sMx^aZ< znQkew+oIR4@{FUG=M*EeKw>n}s#fE~5m6Ia7*g-Bpl@JKgJFmlNw>(7NqgVOqdCzV zmfyziud}kFD(Nde7&SRsJ4|vIK1L?Jo>__N^-824Y7K9l^lzswF^Qp)yq0|bRT<J55K{<5x*Vj6h3QJ z0ZA#c;MyEFwd?Gws_%a0I4vm%1}*fSXTnZbjEyXO>9VzM44^>f zx&;saZl26hGlgo6fMDkf35C9SVFVd@uag+J8qUP^5BDkpZfY( zP!f?>t4^1e+dGp|O~$XwnFli`>m;qevW@m}4H1d!OWhv#pDgYP#eX5Y;hFo&3?pQ3 z==)kdU-{7n1`^CKXPL=mw_zRZ`~_)#m-}7C5SdJfK-KUbe zE#1foky!mq)d-A|B|W7n@H3Hh0=9xJ*Py1DYtUOn2#vKT;eNi64LNz0dhU zz0rT~)9&bxDD19wp6qS)=`v%E+sx_7x5nwmC#1HQ?wvheqk*}eiW+V>j+Vwxkcht& zB}_oXZ^+%~z0-57H9VB?rh>;C%{1<$>6(|m;cIPNE%}K!pYhj1P5W#py`wA+@dLH~ z@<(D%sdHLL7Fm_3b+RhVZR+xf{cGhFLhq`DG9?WsD{B1yjQlQ4`oT%1MsJV(dH?W= zn#^Td3TAG$U^YzWqIG7@vY@xKc)TFUPeQRPen~Y3TVuQfL0W+qHN}U!*Y8l_Rx8^5 zoNb}yWL7zLWyIC9U#ZvLY%|}6vVoXup?JC>oN1KTSjuR=N{Z?F-nWUV%ikMgYp8_4 zTP7++SVEQ6;$+&*-=aK15?T`Jq?kO%j;7!|j*H)!l(T}66=y-epz|=20y#(&Ez2seMv-vb!LCEPr`f2UMa0^q=<2EgI}BLRTw z8Ki@VzV~kp7CtnTc60NB%0hH$rG^Ghzull{*FXo+OT#}($nq~Gwz?a_7Xbj+tZoPg zZ^$VaGN{6^FH`;@a0j>m&&~jV6pIb2NUH=RhJoOv0~U}YeaQi^4X(rv*#uNzza#%K zBx94YWncS}VsvK~AD@ow()$lXaX|j~YOrpEi0xB0s1lW%AHwNhC6yov-S934Zx3ID zuQ&8u@FoujPd{uC=rw!!`xkbNvU0|4&8i=;Q~j35*JIvUEWBLQ4okKo}9^kGRAO5T{9Yp%&5)n7xY%zMj93NQ|KCAypBn)1QUL&+41(u{Ac%ee?Wb7) z=<@m}{$2{y3SE#s{2v`pHULmc0YHn+KRU;90B9lv09reQov+>RI#>{gOaBCb6+@`I zYJP7)fY#>E`-g0ocAyYiH!~JrPbWvaU{n4zgk*qLQ+Z$<0yr_u0YXhVcCJnxK~iz_26W z52FA$b~J8m92Cpo=Iiw5@Bx4;P?X1|&*ehWR(LwvL0gt8oflS%(?SxpUUEQPK#BDAUYreT7 z|G+9;nbktLn8~$7%2`f;`1VuG-M7WFYOc49co^&Q?%3C4eD+Q#%BB${_n4fHE{uK3 zqHtR(jh7GvC$eOn6lxy;60QKO#EoQ1URV1{L0TQpNNuFRy*ZY*_~P+p?|5GaiFkep zWYwX0)#ZFK@u9!#o+#@*s-d<|{_57Po3Ck7U41hmRDOw_&uD_R#H`?vDa>xBb4s zm8ETBktqNRSKEE91RQ8QsOkM?kNvd;M7uf{G2Q~|oOZvZ9!tFpl|IX<`@D;vOF>n{ zwm+bNLc(#BKZcxC=i0&?D=~&!>!?Fk5Q7uwKwj{%Oo9E&fZluB=kNN2HuN+0#nYnM zuMC%(0<*EsU>WfR`vIFS4F7E8dKfI>_UcJCUX!pY?khQETd|kH?)DnSuiU@9Uwl%k z9jR(Z&?dM1E49VyfMP$`eHO|X+kFvqjgBl*DNoM z9$vBN#iOHUR}cy!YM5ZpFmP}ASwT>wx1mow32v;-&iqeqlAB*U@Ysy)C{vc<}ML{UjP) z^*uT$Y0#9%__(1>zdkD&CTpfq!IeTY-sEFha=lKCR3_`*&LR$R^jr0}Ir2^SJq2JJ_fdns?Z5_+LAm>{?Vh z8k;fA4vpJ4d-DnhOqV6hJpI6OeM4;$EpBoPyG736djXdv zYA}9IVUA9A^%+uwg1#|z`oLb4(pfu$7)S1Lk|a6L9RJIcQrh$FP;4*j_t$G}!Su0@JwMfEZc%?aFKDpcjXD!BAEMdl(1pPedLsR z3Fe-3^Se$zqWW9{Z*rtf8NH?8q%7FY46o-~`NfKEJOXuNt)JjwSC^7DQc=D%!ZV&T zwTo^1y7uNtsXeTu{+_5HZqGHW-F5B05!6uCLJTG;@WPthe~n4B|M;_x;&7@u7c8pXeo-vy&Oe{=1O>B(@k%)JdHh8I2z zp68nI;B7Xo-;OOZPy!ei?$bni#Endy%T>fI2zQ>S6*j+cRW5-2{MhA?V}M=TeekuW zCi|PBVt_P0E)uMfr6BE<8&<9;=Giy5UK9z*NEu;9psiHE6W%5kQ)Tp+Z(% zFtp3ba>q3}(PrO%>R2z7jtnIcOyx}KDW82B?chzB=O%$0FtqTqH~1Utuea8I{7~lQ zQ1~8e0pp^FyA@j#AHg)^JI1Q%4eku;rlWXf)n3Jn&XAuz#Yv0*0;jkcL|*Gs`|gu! zR3m-Wexzu5*5F0|v51hDHT+mkKPp~$XfIZfeq9Zi#JrO4u4T#)sw~S=@X^L~duFI| zE9Q)gep_Mp3V4C_7r*8%`7#p#C~F=Yoo&2a9DPTzgKR{R&AAtegVEEOuZ);Cdd4hswR5l8t0389u^D_$!RD4gGx>scdRqDV#42 zrvyRyQj+VtnB#+0rT|)M*IYdSFs}%_AX+A>wSjSN8!uWk`3Nw+1XuCjTqEN3vb(pN zb%q2F{A(&r>xrz?w=8{0zxK)8Pi!`HZ)T^T@Vbm(> z!%gn!&V$n;zZn0bz)Q!{3hXb?|4Mh=KL!PiJ1_(^Mo>MvidUi zj(I&g`-quQR`6oz+0e?CV5*ClH1JK z%pGD&FGfy>8d&rTR9J>~@sPIq=C=$wDIA+YaFD6I3*$996hnb68f3SESqRd%YNLSd zbpx2Z@P<-xY4~nqRM-Bt2!G;TD*HRY^;1H84vVWw0G?CP3Vi45> zp~lEdvbMir<74;Dq0>I>%+h&jASHjDb*-CgKRqHy-ut{hGOrZGu!0K;KLa}&Y|3mw zf8Sb$Jb23d0XH*(Iif*hsCq|gGWTJ6wZ$O)b9<__K3%0AGJXrce2^)7TjIy``@XvS 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 literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGBA_10__29x100.avif b/tests/images/heif/RGBA_10__29x100.avif new file mode 100644 index 0000000000000000000000000000000000000000..63f234c4e8b3a55b9b268dd2e1f2d1d318602892 GIT binary patch literal 3136 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 literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGBA_10__29x100.heif b/tests/images/heif/RGBA_10__29x100.heif new file mode 100644 index 0000000000000000000000000000000000000000..a2958222579d5c54d254feadc2aac65e6fe72312 GIT binary patch literal 5049 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 G&i@BBcA^Xb diff --git a/tests/images/heif/RGBA_12.heif b/tests/images/heif/RGBA_12.heif deleted file mode 100644 index a92dbb9fecd457aceab980d6bd45ff1d56e0c744..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10246 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 diff --git a/tests/images/heif/RGBA_12__128x128.avif b/tests/images/heif/RGBA_12__128x128.avif new file mode 100644 index 0000000000000000000000000000000000000000..b345ea4afc764892a4657c45a10f8d7de544d70a GIT binary patch literal 15880 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 literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGBA_12__128x128.heif b/tests/images/heif/RGBA_12__128x128.heif new file mode 100644 index 0000000000000000000000000000000000000000..f8d6f2b4a46ea806ae7c4e48a40531dcb9b2c78a GIT binary patch literal 22821 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 A-2eap literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGBA_12__29x100.avif b/tests/images/heif/RGBA_12__29x100.avif new file mode 100644 index 0000000000000000000000000000000000000000..e10fe42926a022f074172155b6db76adf73237f0 GIT binary patch literal 4300 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 jb_VkJnDh7;3K8S$J5!MRKgzKF?-a7J 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 yk7*2)w?t^E6V@J@^ZXCTY-e8p literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGBA_8__128x128.heif b/tests/images/heif/RGBA_8__128x128.heif new file mode 100644 index 0000000000000000000000000000000000000000..94f52f57b7cec11704f3e26ea02f51c1688b07f6 GIT binary patch literal 16015 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

&BO&7RAl02|YZ*cTqw_oyuarCI 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 JIiROx{|_nyX?_3z literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGBA_8__29x100.avif b/tests/images/heif/RGBA_8__29x100.avif new file mode 100644 index 0000000000000000000000000000000000000000..fe5dcabd15ec03407dd415b4699ec46fd8c0d5c6 GIT binary patch literal 2026 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 literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGB_10.avif b/tests/images/heif/RGB_10.avif deleted file mode 100644 index 3dca99dde761c1140b3ac7ba3f3d580efb02f069..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204222 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 z%0D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 J{aGro1%NC8`Tzg` diff --git a/tests/images/heif/RGB_10.heif b/tests/images/heif/RGB_10.heif deleted file mode 100644 index 44a6a940ee8891d2352a4623fabc3968d1cfcbda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123409 zcmYJa1yogC&_8@HAl)bkf^;GhX8xuOUNhrlW1 z;qm?+0>MM3`Zo=UI20QSz<(DYLo%EH;}Fn-Bu@R$_DTZ!Kc4@;AseL@lB%4#FV9@* zfP#YkKTiM4#A*IHph`izoIer%Tj!~btCPk5E{LQHf&AAY_)a!nHvf$wV`5_d17aH| z`~SOD|KddsLJIj8XT80-iQ7LcW`b5dsgZ14AKKs&E_Hzo^)R=VaP0?T?X#Y~p#+aj zjE$Q|zJ=+_oV+Z!yoUcZPF{&hiAv${|G0?Y>~4S*#A6W^Li^nuA%>H`3P9o;rza;F zBNyJS)8U5e3SxUp`g}La+Phzd z73|-?%*yYnPl!Kl{wm$J<))nx6uq#BO^9Xq*k=SL-p>$g5^HGl4Ms8((#a*uB!*%V zbys%>GR!$!4)2;D!pI>e$zdlBouB4mg)5gSjG2kqu_?g2`7}K57}xmXa>a2)wRrru z0L#&{WHFo*gm6{evzodh<1*Q%2DMx&-Mq5xP>6u05l9im-1+I*g7|u$=tLYf&<@GR za6NkrF(`oj)=}NCO_vh`diH5Pj4ce0lB-#*ZQ z8ZN#sPSI&p$^}uft;;IZw>Hk8r*&ghDSBY)cfsT%07XXz(_eQuPAg>dx$CZ^6RJ6} zx$xV-Y6vyepLityEI8wZgk><7*h9pXePb8l@r~6yhF|Rh^5P=82*U-4^BHRskkYF$ zSmBZi^~28M>zPy(s7(%ADc_5I6!A~}%gYZ%F<(E?>SkT4COBNxos=<9E zck+jm4^`HT%Il1&ngcZ+>B^zk+QP=-9gN`| zN>YJ5tf$mH%tEb#zkZwe1}h}QRQz3ZY~#bXOmCyNi$ZI7di z8Mszjd;e$fkJrgx+L2af3(Rq^Cx|6@(15U>Z`S^!0=Vyj+PzzSSI?n)5RL!H_6Jjz zrXD@hR8d2PPZa1MbFSPw&padlxRUrK*Gkzb%>NH+x}!A-pg7wxNf6E~5$Un>Jk$UF z@vEiNr7T{1QstEa9V#MQrw9{kvmdGR$AKmo?35x)JYGq{YEr0uIa8kpp|}7Vyf%XT zgEv3&CHWb}XR-4@U%L|)NF1D!5mMzKP@d_lN1tFCrkE?NQRM9q45M98ca3bvn~NPz z^4p3?Fd++r9g3zhr?xRPrCRhcU)C}oRX(lSqDF+ja=spC_&)T|c@W%Y6{PLKS*{J% zeyO~%cz5fzHSq}sz=L@9TM%#Gl4%pydQO>h3y8(kqN_QRz@@lU)dhzS?+?w2zoIF4>Ib-#8K+_3*m zdH&Z?2aU=D^K@g|A*Xw_4{?p5H7A{3l| zq3WRSggui+-{e0UCG;{L=LC(|T_tfeO0j)-1IlCKJWCfCOnzgY$p{x>E%Dq4R&Lj6 z3Qg0rkKy`mS76z@Tn4E;WflOQ3o}NF?QQ(v$fCw~xW9M!#iNE0*Nh?CnvGUxYY)(6jPwAR`kc=6lA%@@)EIm%!;GzwP0 zoG@Bpv2c|1~`$~kv7wH#cBcCxG`q9l5MECL;hu%nTNbSU) za?6KY26UIsUTPWd!0mmuQC{_HfbUj{VO2z9oj)iZwzujiV7i&V^B398{tMg+r z@OoqS>3pOWA~eq3VF=~#E-|vteF-ZC)cv;>d{tfblQ$h+8d~<+VY29yX445k>KA6Y zyr5iGfMelM6ecGVM_f2g;VSu>WE+b`0QvS8VS-FlvZb$fwd=WBBm=|sb8cAkf}J`> zV&BwxfGrpm?l;NQY+R0Gw}C4aN+UYQ zM=Af|bsSz|G4N(_$7K07M)xe5QwRGaEeUv><9`4B{`*-N$B5y6#LSY=y3um1u9dt- z48HBEJAeTK;;L}eUr(B#7nX~vuDzS8%+Y^JSMn}m!%1|}zx9~$WF@{!$f~pdQHyOJ zKr5@jR{B=WFAMQlYEeN^ac_1|lQEQ_Qn?>e_B1dti7=~UmwAijql@Z?Q9tj&tk0j* zyc_{qG3xhobH0w;5m#27yk(~>Aw!uKH(2IUHs|6Sb6h21I&56Vzq#HPphaS{kec#- zac`HG5Ggot#DdU@J~B^JWluWh@a)~~xj9oSot_>URDCEw?1A9$X4Jn$krFIIP!j!J zpT9T1Dt6JPrB#7ZK7DKMGiocfr`P8hM3{5_(t!+imFiP|Zc*_Pb{b5(PEngE$#@7ZMbSX8*;V!lBXz^%L&KYPLGuH^tLz4o#h z#qQhAGrcYtqJ4`%Fr%gGk}gojUy1Yb83%M6=h+z+^o1XqBG`=N4$7O(OM7p9`Nfh| z;>llSzO3O|T&9VW>Q)!5V57&yTuh2PSWcxs={KqBlT|9_74VVug?JbM_t^v;gOHwV zMw@nBJD`Rw%k1Z>_@G-C-f&DjNBrOTP_2gN1-?Y93o}>^g~v|l_Iv<6 zjj-?ocq*ceTY3_s>j*)ieAKp{XbQI(P)hmT>0Tr#pHIj!@G-kxtTOGF_B2!WT`mj$ zG}V$*V75D$ij?LP{(;b)brQ4gpWYidA%S=>%Og4xk1khkJSglomMV56C2+3~5NprQ z(N|)AHQTAFNL;Fuo+}_H455akU4`L4x?oC`?3Oz098n%r*!=c-Q3F|yYs z(ASfmU+pYtHsCKq>>v9S=^h9!)Lk{0{9tgoteD4v=y@W+qUg?}@vX4i7}q1QdO#QKr z5Oe#9Xc}su&~tEwO{Vx2LxcLoA=p{g|zXF*qLkNr0)cy zYG}T&4d#o+Uy_c=G52uKA-(>smUo4>Ne+0xlc7TN7BX$K5|5hE@sdVulej6&HUP>0 zY{`jA9)`$9pZt6?buGR9q9*ipUh|(d;rg9WQ&wbGao#a)F*nV>d zBA#Y*P=HhO+DfF=qfLE((fF$Fm9v~K*PAA}K5$Xtr?n5?KRS1ui(&5IPvbn5By~;6 zik>n&HYTb9SAVbSGwL%$k!koNcrX%OE?*(<*F5%Pq3TxLxMsfy2O(H%TA-JVsP?h5 z{NoFB9v8@Z)#HaBubf{v)I8aZEav8Z(#Ne`aj~N1*!!HCoJ*0b^9g!3OZuo4Uo#Pb z4zTHrTWUG!X|(KGZsB{s-I!g4VSqsOf8Ayy$n^J^`B2;-wN;S|TAl{n!UnUj$4gsp zE;;h4*ufCjj`^G_tbchiI%6sgy{2d!gAIy*jE`1vf(ZP&C>$Jz*c@lfxcec8W|{S| z6C$miwZO&8NB`0_y<6p0m`;izILM;`+%MFGh}U`b&POoZd)Ym7ZJyx;%E*Gpo(W2? z5U;?KW;=Ccnwf}^OSaUQ!D_V(r1(yuAKGboC8e@&siIeX}xLT{FseI1rx|c0ia*t0I_HVr|8cGi`1UhqJTuih#9Iv1_MN<6ZfHcPf<-KahRB_hnzapIV z=zL4}^{w_|$A&_);@QW9C4xilJP6*`6YwMwEfcP|xpF5Uc{3jVN%GezPTwp?>>o-= z8@`g4`*5+^TgflaX{S!k{_4^JKU#~5wzAK^8F$AA{y-i+kv#0ls6jIf{Ivku6}PK_2Z8(73v z#Nz2JgLq+#U!!Kvzs5ZVic6sTK0IfqGNy)bj?r)Kdb5Kx$oOaFNMV68YMA~`} z-0u4hg_Fg};nTmqo+~AwdEWAB=ZKA8XTl@3ZT$J-$;!i+g{#;$Z|>l^8J#Tpl-DaA zakQk4lW!kUT+(N1s*35%r+M1!XCki~Trva8*0v&(lM_SA>$vr*=T!xCfW+z!DPnAF`W(y8F1gp zRoFW8>cpBsPi`{##gV{jhm0$ynsjH?o{*g>ZO+Q~E1ndi18Mv6kk2j2?F53@i9|Xe z(J$RdSI$ZQO>h#Lwb|OF0g<*W0OUn{^<=p@#NQ&J`?**T?}>S|P0_As4dJHjHZMZm zkvY~Xs@~BF34@~z|45<;kT7<3WgUIj7V@{3>h3|TOYeFOrHb2|x9Et)m{2ZPI5^WL zq6M)w!le0I)qP`!@sJ>Zil>U5e%=kl~ zaruDms~Do(c}*s!@DshRLxL`Y23s-{yMM?RH!BWxE?-U*F1Kwx=@rMC@>=CU*f>4Q zWfxRWz6pGm2`-%u$~~cmWjtN)w^fs`q+WypuG!nJ*|#%#eCzrZ5_!_*oKp)E)U*yi z#L(M1{n)@2RnERytr@onW=*SeP%vBi&!*2ZKHdrIG%}5_B&v|ZjyZqbrI@lK=?wmi zg^udZxsKc8r|e#_9Lxw#lkbc>;@7= zVyTw;_Ivx#@*;dtY}BJi1^FoPezaiQbRwt2MJ88J1s0QqxLFqNm~mb1Digza-?HmN z{^e0GqbAB|o8Jmqkn5E8;5P{+mz9T8GcOKkZEq}3Ss!a|yWP-7A?ofGfQ;YHh#}tQ zaUoPFrTo?k&=caheagvI6sIk-szhhL@EDH|;DM$Vjn&!gY0=@;N7l1i_uolcDFK+R zYF0Y(wa;W%?!(_q?pM!nE=l<;_s=S0ZRGsfJ@WwDba8jzr^LXT;F0+|r=hGC@eJ$h1z_r^mnk zaK)WLavdOrEfh4P61meA?EmHtsbb5E+9;I3pKJkzB7QbKRp=tqlC6BCj*|CA0CRe#{*)kCZa#zN(lhm7 zMj2G0P?7SC>4%8!E!&#%ezD6mk3#zdEe+yA^6ZW)H;6pNLvrd?!HRXg?)uIo*R?F= zN_tlT{oY_m2&s%W_O`BXZ9ruB4(MP{fZiUxOVuy_wCI%f=Aj{EvxCgbPtqtmoEP#@ zXb_+6-9zWUbNDP!oe8@x%)MXCEO$l+#q z83MPRswVtA^hcr6FvuBH6F|R*7*Pq)#mm!RQ>!6W^wm<`tm3of<*;wk4JM4d6CDqDjgxnN zM+o#jL0xet9mTR!oUItoi(pGMk~PxS&pkTRS(D7FWnxP4u%mMDip+@Oh-e;p>UF`Y zv-j5&3D^xPRLNCkcDAtIYBbT9A!)M&v{OiHi&)-V%3!@>8Gp&fc)$cQ1ND*S{q})T}hOe_ilm z&IbjNnt-LH9}2bBcX_d02-QoU$Cuxv&KfJ?3@Cw(x&4(B>6|Ig1d10MTfh66Ul{p) zJK>~u=v6D$yJ9G~;)B4NSaKywzpNFW^hZX>IUqZl=1_lIR2(~b7ziXukxNEYM~I6hn^gUE$M zJ;s7+&UTYeUM)|FSfOIT$c5djMc|zW&evg0S_7^j%&rJzYG5Q8n3lzHk1U7V-Q(qW zQMir{5v_wor<{9(bNIi!=xq>hy2}xlJT>Cqo1)k-_cb5!K|-k&liE{By3UXt0B5%* zFiV&OK4;A<8rTc%qQ>_lY0K1FQwpaI8UzGQU5_{6i&1Rhk-`sN5 zDAQ1e)?J+5Lvk8qWn%;PyJH-+=iPIRxlILqAk7>}!B|c@8SwLe&arjQGRcXyJsn?K-tj zB?pq7&TJR&`Y-6mc%a@iQJQLhH-&==H6uX7-l5n;XXbmfSnX57mx*!;2w3NgP%nw{ zT4IWV6}?uE8hbxK;fq&dJdq>5k31L8(Wzv=SlrE?%L8I(ybU@9p{q}3R3C2o9bEfS zzi{pSa$cY(J*L7RZ(~>fL3U?+Terh<#jQx(x6h+V@3nK{3~^>1Mkko*^4Z@qEyiYT zd{|E7o7bNnb3_>lO7u8p3cqF~MD4hxv@g2gj95td0K?t$Zu)#4sj+}KFN1tgbn5=i z!5I?4Z_%jXu#R?Olz0zw5FtNFICDkC{YIk6ERCKY17Xs6sPoG!NlqABD$5n2lBDBE z_#vVIyVAjpl0AO7?CDEA^xpgNJ<>q>>_~H(=*+z6@}Qwr(W7571hRHGABUL9MoGpr z=$qepcb+J2ZQZ%gb#(8-WA7Pv$92TJhD>766RqdsrS)7w9TcZLk}*YSBPF%p|3NX1 z2&l#^eEuluDjx7|w?v~~S(v9>Kt>y2Xo`SG6e9}A(RtIE`c?G+&4`!0#XgcpMaK}v z6wH0-GfJki>E&=}iA5)mczlLll-Qkp+6o>hg;0VJ0_+sr-t7yEGwi3I9wqLLPe`B~ zWv9&J;%G5-S-ofb2OTAkJcQmQ%cGB(ysH=Hz+}WO-bzk179MDsExF;aUKaTmgX*ex z8Qcg4)ciIxO#pjP(a$iH;84y(tn|y9M-&TTd`J8*^T%vn9wCWJmzt|RU`yiqDPE+6 zWM+AyONGy>Vw)R;?KP<0@uW=@726%k3X4uP3w3;T*lTGI1sl(%Ke`ZhM++o+2e?MO zAru#pUGP}a<-I$8s8??cbpI?lIrjj|MCF6!I|&`Iar`(PO!&OVANOdBjMcy>NJqMH ze%sB&t?=_lSI4lQT(}$IWESAK+QB`aUI>2~eV*zW{E_0G6Nf72E~HYZz3w_$Y!!@_ zB$A#9K=oC{hUd9?>bYz)M*bRpP4}xH&Vmq;*dua1BVWH^q`btmsE6!ZrZU87%ifUy z9SZJLswdX&q9VKm+XBo^$)ZRNP2ddA;nvvB_=DqozmD1uD{IZC=oC!9x6yZ~y zrEu`UgGKA0a=h{(y*$N_7QnZA3Q+Ul;(rW3-4 z0TG09hX<7RR4+ROA5K8;XE8q8|w5#whACSX8Hh zu;9qf*<|vu@+#4@mmhu|>M5xhAZW<|;j3IS%&)>I5!LuU1_6lD1K++7LnzIe zBy1*(Rpa>9Zwl3GF#L3!8wyW#|EjM&0S}E^0X6OuLaco$!#m9)4s!O?G#ia;J)~Dm z5rc5(^U!X`=`CJz|e02QGE_M4Cut{AnB@Z&(W(awk5mwBjxK z?S=b>z5c|-?c8yHK1pT${eDL{)WvRY-nHQLxs0f>*oA?2x~a`wtewHLy1Z4UJukJp zC}i8w+^{UP$`u*L7Q(I`CU|ij-X3ArDT+Uf&|)bH7FIxx(i?VvG)RD#(c)vH^8$@X z%CO`&4688BQiYulg=w%W-pSwkzU7qCmYfH_J4IXWFB00BZznH~6jA>2sieLU-E$x4 zfjW=8>I2gQ{l$ZBS$`Dtu?rFoV5j#=3FYI<;Bl2U`-$s)6(;G|4*mW);cVhchmC$j zYSdKoFEzi&FMHCPV^?ncE40&!tRP^U#F>7vfn>jywt@w|xc2?K$i|~ECHb8cIZ;$R z&oTGQAa$3foRs+KE2K%p-A5L}Bb^b(DPHBEa6>1ytcSmpb{l2Vf#9C*NTjORsZ7__ z<9&6#gJ?!OAEQx8av^(vc+#Yi=t7(DW9YLVe0mP8dCfMwiVp( zk?KG}p!^rSFCxgRy*Sjj9~-&Wwt2rw#H9|Qjk#UzdqFqVUx19U?_FW%oDydKC@f5_ zf80WhU1s+P?*vnA!`QL{;w{ZEw=~J(-Kspq;0I;v6<6N|k<@%*In*lX8ZfW3-2-SD zmye5a7F3bycxKbHGVG+nvEapYk_@trx*~z?qUMiY$8MO1O^*N~N z5i4+_TrlPrHF-?-`-4#WddU%*2n=^i5{zYJ;=hbrx*mMf_bAosg25&@hr-hVkO`M_ zZV#@z@l^NF6ze{1(iJ}KV2V5Q|ICIbx}}I^;yT%}^Szs@k?7IkwILbUd6Ztp7Cm@v z1Et$>O>Joxae6i0EIuYZ%0SdW=O}hf_Mx`}fh{@TZHUL8fe3_rDLoA%GREc^^O{tD z?Rxa+|M>7)K+C|+~geE+RKZ5oGDE-?e2wSgVcV-IT4K$+4HzxY+K|w=Fm?&y5pFRGBNDtm-hAwSUNBT#y;%X<)?sKcKkDs|H>EiS`w^6Oz?`g?B z51)SV-S7VE`hZ5L1mL~}>^MF+nuplG_4zaMd-eeI4LmX411hoV;JYFVtH&-<;*phk}QV#zSZan_^RjC$PG2m&ilo1SJ3*Vl#K$k^boGiU z;M6C}kSEaTTj}2~DYvd>Rkc~w#0Bev5fHj55o{i_Y^dfDqGRRx1T}=_CtiAa_tw_h zST(o37;NxI{-!1WUHgfm%B$@dd#K~eW9*O-IX`Lu`bC@%J7!Qodyl9tgA0jRSUheY z-ud`Dq@MmSc)^Jzc=Nav6T>f`LdttiPca#;3+&8W&Xt_@1kCbm2 zWL5J*CR864X`|JqZ~U4t)EeVvk@vMk>J`$P8kR;I*6|jz`88JgXALubD0Xxmz+MZb zQXgN)byEVC-X$^)rt=sD8&!YS?hHEC+>BN zHhB~v0il_#fWcV+Rk8@;z=V-UuNUZN!FfIzPCp*3fNHd;BJzw2oT?b%R;?$Bvy6xr z#pZ6$en;ow1PO*FC=``pr*VLi#&yVgl8)y*RYOWRX~9`SBa=~2F8Fb4JY-4;{aeqn z$-j`LUBbzL4`zCJSv)t_832aUk455_W<}(YSOi?rY1X>;mqaobD_7#DOTwQT-u*Ievev$LcDc5FT`r^C2xe&ae`_P(LhOahHC>}2Pf z(#b2O61I&L8z}!gE=UKhPEWyA{YWl*&)5EMJi?)d)c;5gBL5z?$Bjw_kB+mBobv9C z<>d9x4O0ygJ6wBHda|zipq%8<-R)uFQE5yR(ecQOMeE?d25)9O?ReLsA^J*Pl{?f< z4d&h*yZAN$JRF9&d`n8Urz65zRe26>yW<@GhNjq@wy}~8m^twlxyC~s`aoA~&9|9b z2iAC@q`%*#d*7mWB2&!*gV6F<$k{=^K^psGf>u#HW2>}fDU!zxuqw=RsMDuwk_0vM z%aVm01Z%*TUIxi5Sg3kg0)u$zHGL-oRPq$GCF+@1JFjxO2z;ZSRY3%zSitUZ&_ zSG8_=8^dOFBe5geCr*g6*1{jKM7)nTmyQq4h#Lr?#riVev{gQssklp`KhK$GW@QC8 z&ggU;pE;aZhm;lY9Mbc54HL$J<(6d$MIWB|*iFtbT~@zS z_vAL=&`Q)KX6Xrz@1L_cpx22^pP6CPsM>w+PsC~VzzI5fhG_FegAd12_Q`l#$ruei)@kCooX1(^>b{GQx{$MwVI$41Zs!(7Wd#L?~+ z>MK#1E9jF)GwwHH2=VN2`gx&A6_|;&yOCs<*?rI z`IhnRJvs%6EiHb5gi*k5U*1U_U^!qVQ=fdv2+Gdf9*}iU#Sa3gD?-Ek&)h3ra_F^e zFy0wM-omDTuu`+QwM+Hwl?W)>Fx;+)R4=HnPK-#6LB?OW4gNdSZ6nq^X8}o zzOe@9G0IGFI{6pDw(>!-Hw?lPuZl<0`#MgAO4H&ly$Tk0Tb6R4klCImK>o%9=ieDM zRh>L`C)?(_96zNZ*1Vq%3v0zo_I|e}0NZBo_}>1tm16O0puiOUthirf zc&VfF*=}|n+c?TLD5WMYdY2u|1LFA-_TZypa)Ns1Q!ACV116kmwFeJtE8_!o;(|nJNED~+3-5;;T4(l>6B|J(l1Nc_S(FNE(Pa8u%f)>%! z-4cZGr<+XND-yY}w-%b|>)X&--%nEN6T--sOB7nNCC#_lrqXaQ{ljxrXf2Jh0_SWW zDdqLJkT^I){eQt=X9LXEj8G%>AYBhqw) za9wE=@*GCwZk-<2b2o@}7Fc;KoybME!i=j+_)>Y{qYB@(gvJ9JdLFX)?$k#)fqNm=h8eO6;Tlbz`{S%^skyD!M;+ z>$Df5M*fq+;{kC!hy9@XhQ4ymGty$;9wM$E$57|TL_i6U&!^(U7vE-d*-$LqW0_ji zJBgj)S6W1h88J|LeS!ysaWHdPJPuspQ-B>4sEAw9{p|4i zrx;J;eY{dTD3Ls6lz>6eo)?!B|7?(y*EDNcr!Cf{{I}~0#o^6W;283>*-QBI&!>9E zhB)N?;3{HpK!rf%iGxLOXV^z*LDGGBq4$LR8~9Aj`^;W(06(IVqN1Wab#H^z^dAZ= zbupCI_T8a?eY#7h=WA#ww%htuOh(MVwtG%IB-4Y*PfTX?7mt7Y+X1tY9LF3`A z6m^8XZ5n=TUyN6L?s?Ob#+thFbl}T4CYJo>rd@rt3jYuuaIQ?p#oVKuESd9t-}p0b z-)QZG=njUWEV&?EOKAX>Ft~6v@{(&{uahH?z0gg9)SG=%1axoPdg|Q-LLA) z>^}!>4^s!t| zS5lyO@w|Vsx<9~}et!f(qy8`H&bTFxr}-^GZX3_-0jJS&ZRNUtGYS zo-enWW*4^a_9wJ{`_#Q`y_fZO2?sr6y4eC){ANEk>_TdjV$-UV!i2Hs_oC-rDF=ed zFkV`jSj#s;YfRKSqBFIbDb`!Vst($ps<)Ehe!+&Oof!mtf6E?2>RI~a$~$rBBd%ZC zNysvq?gfmP*uEdmPq5P=sa?~#%;Cp0?I5)QH;L?IDC7Y;6*3Rrg&8zCcOQ9cVFhkH zy<<6yB`;+e5><~Mc%SU){rlMBdHldA7@V09#^xZGQA+>pr$av?=@>k!Iv{(0)w3+;Dzv$~8>hR)DtSFU6NKz?}9iiFtc=DMG@qQrj=j z>hWh+DLgL+zKX3}GOqSN86w5koq&9i2b4`5K!wuzc*hlQi3=lD9WbPjfP$&cam zWwZ(oK^5zgd-=j@{!_=-3mXd!Z=4NmVm0b_4CQ?$*qWTwl12~ujo(73r0wx_wBl_1 zef{j5G0^oWJF|USGZ_VNgLR#0YpO7BPwcDjqQnri_^CxHR20pi7yJ2NijtQ!6*uxR zRDcIN3~TFV`)SF`(xRxjjRnSfj6S1-!ouXpv!qW|Yie)jE%mjPGU?FY!n)71L-*q6 zg)uJSg}V4zpSh=u6IMX2%+k##8s%CAvwGXLVxrlnlnB4kw|>P!6sA}sJAZNy1GRkQ zb74SZ!66CDlL;Wycn@qapcfxcWk`8<5&4d8T|SK)`+mcQAE6$`(|mu(_`oQ(nll%Y zlsRVt=90Z9;UjR{YP&64CYy)Fn30WcI!_e4?u9oHqrVl6Y(4CDy=7U{0UXYU zIF&f1LIqZ)tQEWFp%T@@A*83kOL z9iEet*swv=6Z14v>3KHs4QAm703U7k<$3WQJD79)oqIfCWuT5)QYX9S;t9d?#MhEw zxl(Iw>8wNT5*u&R23I^oVRgX@Iyd(ij_xe=i~$y!ALUb!VmaS6Y2U#r;Fp{{D9$a zvIGk&I7RGEWJ`;Ua7=ntL(M44D=x93jSOsYU?(j^dgE0GBTbs8ZxS))?v zhgRd_uE5!@VP9p|8zchhb$#LRrW*VE_-?FTBbwnbFWb!eo9EMF53KL;w&dYYiJHY3@=JSneO{%m-9~j{O{)#~ybVBgo z@4ZObIsw2*4nnpZV62wgUIxrMJ=n7DBH*BFo6tjDJ-Icefpt*TEIeCR!Tz_{?kpM2 z&n}Fe=H;wPTCb;cO&(_E0I1_b6o>x2KwE9)0$VCt>Z@LNU~=Au7TWidI5v02ThSUT zY-@W??3OU6*4DsEMu6pvakQDf=lTKdI4H&UUn)H5<(e7!{R9Apzd{!oZV+>MRh z-29789fHC%x~BE){9m9yAsDi9`fV0;J+=SJT2p`=rm@)B!dLY=3C$zaqor??dosql zkDn_*5?PZ=AmpsXHA3s8~U3#mvTwbU{KCCbB7n zV>6(mG2)bosacMGp^Iz-rlMb@`Z40AAKw)r=lM*oUwlOrMFZMvR@u|9Dd0h8ApzBR zt&_tuL)Y)I`)E6F;YH3@T3;z7`6OPgq-m#t96Y-KDVpDBSq~$hP2NyjI}leyaCMls zIWk`3Uh_aBVy0dxys65`V`tu0jPBXQX|Z_;9u@6dF}Fi|IJ_v?pfqwReOk=Gp! zg{&&^9Jds_r!5)ca-JYjkGJd-_VQE|o+f>KDBt(~qhK~9hoff~u^UF$Db$K@Z?}Cf zN2S*nL-l}55K@}wAls?gN!=aE#lp7Z0a2|t+ik)r&7}aCh7t@h z#w9J-`pwvQT#feqorx9u3CE68OveVodQ?9~D3D^yAHyc8hH~}kIXI7y#Rz$oz)4rm zz_oGy6oyTZUV8#Cc~3AlEsN^D$$Fjr3UGSzekTxj1ooiOvNrtY9AxRhE#enCJf1_+ zK9*{J1>i9ig14Ay{-B#08y_#Hc*_1K|@87L!l@*)e*)1j$*O+SDV z?3O0i05XeUE9DE-U%6iW@EhrwZ;Z^5IE*?ObQXr$%E=7eekXe9=KQf>EhAAJV4+^zAaiHGWgEV z-O4Su@9337cSyP{LMRXeFo=bWLGABgX=M27^nY&I}lwJ2}&DLi0eII)D#PgWN7D zuIqzYoz2OHn-bFq9~J8+I+^#4Jb>^?1F|K!W_R`a=^tTIiTywnA)I|hKNVPpCBtM1 zRZQ~b^{tOgC%YhQ`{cw^%0p5bmmu~__cWu62mTg*FlA@f^>s$)@5GG^4Ha5uL7ksE z+oUH5Z|!#{?#E{@L|?n-InJnh>XJ2+Dk(Q-EeCu~PCcAd34W4Uq_M6wfwc4j%y9;o z@Wds15mOGX9%WHltNNJmkOA+8G>HIAg|NV0GsU~%YX8z~CK5!bPk{L+b}=7O1%i1I zt1;at2EinLAPEQl48#f7p}SFp421j|LtdkNteTGcrr~`PHSSJWq$u!yijcJOD<3Yb z;PriWfWTwgJ)O@bcWHtd1pDMs)95S;t~297K#0?)jE~joi^?SbIdL%n-%<+Q+L4X$;nu~HTAFa_$4}{R`Yb^9nNo=qrFK~ibDbZ9$u9!dV|#Axy~nY zCxEMC@w@O>zK~*c>`@0IU+Tl|UyNrr{iA~LH1U%F+Gszqsa?cG;t$K~buIYn zDaIQ{#Fx21A$W5oD>*8=8uJtHcTPkjFvP2dvra5=P%uZ!INuzEssL+iR-PfMzBcJN zfM8P42W1+(tzf`)w??v52IJP=co>P!_|W+%$>0jIT=tRC>A*JF#YA!VYB&i=03FF8 z72j~9X-76X73IBA3B^5889bOt^{c*1>;m8Kc)Inior}8BR;$LXOc+M*Cex^?7y^Q= z2q1tf-qKCZ(beFhc`0m*4LV>ZFZN@VXu#pU`Wx@-za#gPFvyE7(3n>n9Rybm7ckEV zi7$e~I$M5CwvBGxJ~2UQb@(I6-4a>qof!&wCj?vbc0;xiZM+E4#bn@9)F2dpUd60N z34#NRp}Jm{TPjSUTbfAwf&8RkTMluLF8zJfT#FM1hals{TdBP!%+*_JlZxMn?j(#8 z%nB8MkAss98SXemnPj{^I(U=(|2R79zbM+bfiB(M-T8oY$I{&)CEeX2wM!!)DJjy8 zq@*ZIhajB-(%s!Vuiy7inE7Eo*If5G=e8KbO~WkZg(X)i$piYlWrCwsjpkE26hkHal#5u&Q5Y z(b9T2wt8tcJ3m5M3^x@VzrBtlqK@jC)6(+j>-q|+(&I9sy|m#C{aZZ?>qC=6(w}}T zjmPJ=VZTCQGTetykXy|kI#Il~87uJ}VA@4S5p=4lVO)-e;=g@tO4$Y**SWM`czpCl z{S#^(>9vQ+YSWR<-QN`eb{v_q@?*);P$j!LYWD)4pJ0-*Yr{91M?U;|=bepm+JOp$ zp4hn{haW%=$hgtv1GLK_P^3gU-6o+BIdqCvB!s6A;FljYRf0IFIVCs;{wRb<5M#5$ zO*qY`uNl89Qa#Nc_IS5W8ikjJLA3oZOEXpxKw-&`WzJ}GY*(m91F(2#kuI3c|K;VH zpk#Ag*2q%L9KEH6h4wq22Z$9R2M^>$cb1AyYop)-dtI&U6H6!t z)oN}FBKa}UX9;KY<@yV< zfiAzziY4T^0R1+Dd{<;MVgU(!cdN5&jUXB)x~;`rKw&)bt>@Gcb`y!C-Lo`q4BX23 zYm{^D-rB}UOzI94JfD1o)Z|$XvYBgql8`p?e1KfA-C^9{JKE@s%6(fpN3+|(X%z@R zkRUEefR92e3`T<@c0MRi753gg|M;*+JqU(xoT9AF(T^FZM{btB zf1lg|Vr+oyn?tx0!84a1;2$qOUJkZ>Bn)u*dG{<38ANQ#k*(FVnZ+QN=VS#cC|HN* zV}^w#)pdq7)6$8uOTt+X{~DbW?bW-nTgZKqVZ_iN3Bl+e9QP`Oi_*uGaToqcTC|wY zo(QhksI+|6k_*jhSeV|bhpBwWp->SgH4BIdrAAF3(B7!=cn0zcTpyBndH-ik-L*oF<3VE=fNsCi9jE{XQ=E_#BbdC)O zIU8qa{jQL0-^RDeEMqcN!|Dm!0vZlrY3|U`p>SAyRLPsC-LrLf&^ciDTAoQr84R3xs{reGXPNFD!%)lj{E1L>Rd1uuAtWLFL;2mdLw~^;n~fxa9nRp%L&T@X@$0 z2{j)yO8{*8+WE>6%s-gdHmRYr>*EJKPKLCc=Fs zM!yBqDcBmdQStwl!MK=bW=aIsyi8O$O&iXN|0p~jV?g(0usJBtpZ>TZ9_Sm4VN$pv zefv9F7>pvw^0W3EvOG$Z^-Dg^=TaFP+l;1>E_vg^*MqE*FkjB^2wZf?I`_W3?r7o&22`RzLVkzt5z1-SF-T{w-}eu!sxcSxEN*_@<< zdL?i9yU~h}@fJx?=JjW&7@PxjCFh{alDnnflV9p=TSvjZFif*5zh6C~%4*`yT|%eg z2fd_Z)TsIgf$$UieMV6Qw1@U$_saoitZx=%HJ?xlHz`ao3nRmJ7P?|1Cg@!n%1%G< zzXEhohCX%LkPdteb$JARiGlKNU|-BXKEPRF5PKQgg$H;PG79;q-n{bo@^cU4No-{$#7q^*u0juW`T{z6B%lQ}e-TVU4a- zk|5=SN7+%e-kl9sC(PvSmWyYSGwNqLoxhG^knWihp+-nJ?=qCW@oHu|^|647hbf&o z$B_F(-DU&qO6!;pZ7=_d5JNU1KnW?`%v9%xir_af{7`4JXPM*1*Wujh^=RIdMn*!z z{f%as+Vj^cVnJ8s-$6=eU4NW-dC5d169ev;g)w?66vZ=w?IZr0Qm1^%apc*p=Nox8 zk=1b<`=#)W{&-LPXnJxl9ZHmDWzfsEVxaSZ^tT`P?npJ+v(M723x_bt&((89El3NG zzGRE`0iCd=*dOGRp#Rq2y!-T!N?;Yzp$mKUTGXtL+vi_@pWK~?GdiGM#8{7rckwo? zLzdu@F^cE-c!WwYrRj;=faD zX)YmkViLfXJ!5Zy;8}4D>DG7XVwMi`A3S@Dn~Ks8sQ(~gjnJKqKYTP?HS@$5d682RBa2us~hlTsC*La82>O+I$HX%wJIUe zqwVkf!lPZ44zNR}y-||YqffGM{2mFM5PhA~ALQ~8Wb5KONX(Y89X#LEn1sT%y-1A$=;#Km71~_99X@z`PdR$nq+#yW zJUM=CR2IU{yc(S^BI7JlLGHj?n|xR~3Kapw3=?nMvnbBHzhd<#5!q`)_DkH*OtkNexx0I6xFAmp zviYK!rp~ojuNbP#B$3|$-18HW1t_9slXM+maD4-pPZn57j6xP~EJxiFZDtrUNFr^d z&Mz!aSas@oIhSA?y|Gn@YQ+Q&#|#)mbrF>DkMb(D;1v`F2U1gHPS{SyGQAL2e$F>k}b5$}VTfl0EEZ=jO;F9@L%3g@5r5 zuq+Ni!l|Mu;^1_g;2yW;y3?l#TGu+_YqIUA?kLI0sz7B6W<j*wIz;(TH9x20MGuy$xsl#+4BhqgaLcjemq1&z(#G`_&UI1490Kv z#(QaFdYoH{EXiun27<6|Z>`J^))V$iAM9&nlCx<$0Kz|EGR)JEJ1bW|-D8@KgU59# zq#~z2dz8wo<^=mzAT3#+;JdD!a-Gd@nDqNeAJGj=xxc}@qniRVPM7QH-BcSc%mm`n zVAs+H_|9cgWmxbdFJDw|Al9!bJ#sxTu~p9R;ET|j5%5FV*h+;KozK|s4#=%CRPabE zSq6)m(XHI+OK;OycVDRGmpdd%&s3BMXOmfo{4rAwij)A#ovbAsZxy<1so4=iaYHE0 z?2<=}0l$9Mfi0>^QC(Y`d)G6#VcNy{lEkoqflza`8XZ#c%4kpIp;fsU0|n?rK)80j zxn9dwtw{Z1#=r9=?DLp*R{*-Q;vA!2mB{{iJ0p|H@KH9^GVY(wj4dXOizXqm7Q*jL z6zjDXAX)_My__8{j_(#e*~)x5zfG0wC*iIRJ(8`8{M#4MZ0u@{c8+w#DRV$F3H-f( zJ6wg=0!xkQe)$0&j?z+3!y}a%Qp{ z;WAu1g;SB~qi&I1{ob@Z^3D++O0Qdh-_c4lwXyeWKf#s5NSh)xVzQpCnny6$_n-~| zc<_Wv(@0i)qCSfB%Ozu}+34t$>G;3EypC`of%YYVn&diq&Kc~`0{dt!w4yh=>QDy- zzEQ8&3?W4p{o#^-4!n7UWn2EHSO+ek1Y>GE=)~yKo1D)LjrE5*YSzjQGJ)aF#OGCm zfkx{FZ=Zp!tj_x;1nvJqt^SK-|ER1+P_s2s3c`kcKd8%yW)Cu@0RR0i4Zs00$AeFl zIa2b%-hmjfH&zkQ#R$MM@=^Wgub-1$x&k4MhL^5Ihm9Ow*Rw-dD+Q#7f!%9OgNkuv zI|dhMtQ!MnpHgxUuyg~?l(|*-_{+bf>WlL7(%qxtsCtL*e2lF35}pyoR~1ZhtU3n+ zM2v{ld=13r5~|-(PAu7ylkO1oUM&AMjwAI9wx?y^`?orHfRZ7DqlEuE1fbn8<8i|j z^LoQ+N-kWdCBY6wPK1nC22qM#%BihHAf<0N^%cbdBD&YW*Jlwg9t|&VV6TYV@;_gj z5mCS!_+lw?`uh<3WxxL2*3J(@#cj`>~JxZ z{8%cn!oGc?k9_R$Cj$*XUdm)kcI!mU@|Pb^h%RfE`&D|tc-X6R!_dr;3>wlD{zoQt zAn0AxYBG%vr-UjaYriN-4k-1F$LAC^Dgiywa_k!dlDWEu1s-B5s+YeRNWFi1RayTO z#`{Nfd{3idmw%O#K+KTRo*aMkd#)j_JiqW~Ek^Y^P;V7vO+m6g1?#D{=VK*1^Gn4f zj&<}9kBR&Kb{Y3__ey*S<9${a)AOsl5a1ePMKs}w0gWtoxbZ~>VUXlN2KwG8Vublq zIFZyq{)*Qoim#TILhgJbzJFGSUF!c}`?@LUH^SZ3q2<`mtGys0DL~R9l1DR=6j81B zvs&Y|egl=6E%-lThSuCf^sg|th{A29Pdqp04&d{^-+t)|gL6te;*>#jFU`{I|6+TQ zcG}lbZbL^C4D6g$=TC2l5edB7$mLq8pR;=6uXaVVoHg^iUa>LgCg0;HvTSBzh}S4e z)kt8YBN@W_Tzmha`^ja(!o{QqR>=PSpEbLHuT~b+c4|~k<5O#v&U>@+ zMwMJ739;8RYae+zJM-TR-;02#UT;-{#9gLSoeRaakq+U}>ds1Kh#?Lz+Th2Q#*$AmQ_3foRS z(S5R4U79a!$B8_eUh>U3D}Gn^!vllCbtw&}c=6wq^El6Qb&t{m`EU46fi@0~Sd>(1 zx@=b83qH5HIjTgUXAG2alTKW5Ty|vD<(Ti0AG6u=4c>61s4>5B9WxOEs0=BrIRKfl z(eUdHM3A7A1^we6Ne_QP$;-mfrdT_)j9*>0WKQVqTwAo(g za~omLsw$zukHAk00b0h==z$-h-rqZO3~;xyiZ@V7J=<^H^wrkys+7B<21izJ6Y~v_ z87yCO^2Rs5n-i%{yr*(zO7o(W?>9@-2A=m`ZxZY7oky0xgx6IZfMSIEw}1*-O@aD{ zNx8DQdz&6AEtzti?~A8LOQAr&q6qPXbfG588V$=eM+OVw=y?$TYR9QZ^DsmX^(l8VuMhfigfcC;tLjj6(9K<&QVv zVsJGR8%r>z!l7!{z}ijLik9>}il*5{R1dXsGQkod{hxX;P^z$as`CKevHNzmf=T1m zh4`A>aKSCTCyBLPI}P%GA4xW)DRART9CHi+Tn6|u>>v0`r7BT37V!%#dNifAs8*i6 zd(KjnO*#`0Q!ykY8413w68ug9YLlET;Nh@KJ0?DNyx`TCJ^tLF*8!TnUB+ytDNo|*z008 z)9{>Y^Kv`xDG=X!Nl;D9(ZjeW0;m$Jq<9r9u`CJGB!vxRTN5JjqJD0_9R=3#h?(vp zpNSus-yn!{h4&cGt=#4rYsX`>;XN&PCnFVM|Efn>h=V8Y>JhaNQ05dQvB8{XblS?= z*OflSOHS?yC$pxKN=YmJ8XE6j6))~S_Pq6#;iFk?Cz`d0S`XpOA`6Q=kmJkRBpsfGp%?Nj?(Qaiu{WVPNd4#d=-U0`>_V#=;6~s}&wS~VNeUU?3Ux-8 zI#bhFmP%URYLeK`t6(7v{OSg zx#x^KcWx2OmlK+t6GvAAOJMn3gX!O}A}pXP-+)=nx`cL7z_HZGL>>-myROYxQbdv5 zzIA#D!Myx@f42%&dWWl2a*r60To}^U*nqY(_!SAz3lg%_=6n;*tN$xvb*zD(2B2Ao^v1jx5raJiK5#pWbFRF|RmSh;gmdWeTs#}r z{8wVzPt=Mo;)sf-zFmPb26oU&1-BO;GQ9EIxWu3@Mvb-fzrCV?3~aTp(_!hc4@nE5 z`oM54`@RndxXCA$5COflEdl-BArs&S1mQT<3ABB-IM31aS=m|`JXKdmhZm#5eUgM? zQO8O#kPkz0^6p!1;fP8F@8uuwaIdkM-?lsf)2VkYl*1@(SnyW z@IpaxWIsNVD~ne5ivi(jV9J6KK8^<~PMvsU*w*=sBkyN-*87*i`rsccOr*_OtX~XK zOpW|9oDkTq;B(eAlz2BPlv5b|_}Gr@;`s4f0w~cIxVN8bx;o+tQocoCha>o}DH%GzX*khU0v+}lnlQTQ!UH0|zR zG+4Pb((CR~jhf)-F9aAMy*C2zyUIz?4g@C2=HLq{8q}{H3>sY$GOd<3P|sW)WUt&d z7p-WU(Bm8s9VP7H(2@#;i5Z=My?XxE_K*+1@%$zDtrBcnkJq36XUnGtJ|82pb}1wq zy4U1_hdN*I&lsYqnZz)b7GL_>?gADUJkOka*^^HHal~#e}gG8%l z&0MC;a5C$iTG`pyR^4adv-=MlGaQ!WRwP0g0{DZGmRBPxQhj%CZu}9%6TQwwKgYwr z;Q z+GfIYKt{xV1djM{XK6x|oz4PaycITiD;PQ)N6b_J<4khMXi)tU2n6W`-ulk_!`af7)5aj zo1MCOV!Kp81!p0rtZYV1sjCvj2Vb(-i@L*x9Ox=o01e4JN0F_Xq)LRqCLYfF#uAYI zIB>(f<(b{0-(a~hjA_U{qnDnfs<%bL{`w_rd%F36Y#(%xbveBur=YP0YJ~~p z%l!IyvNvawIC(V@VloX|s(jl*OI?MkZzcG20Wec%(U}&7A6i$U^2&m+@2%53z}Pad z8Ls>=l*r$sdQ>|bKTa9|f4_9J>ZzBHRp3&rZJvbyak^-RoWPlWnp0QoFh!B7BHXRa zhwrZ&cIDs)AnBg~boa(FuPut@B}$qB8}5^|{SpIm{he8`IL8u1pC&%J-VGw_0^lyE zO{IKl*Hvtnr{in(Q4YCL3<|EFKCs~up$$(BsZLorg zN0N*tWy8wML-m{nYFj<3>}pn zsBj?au-3l__@4&(%O#rd%?@bztQ0MG&kzczA9Y}#Rs_q6KK8>KLDCe!@h=hoKWTs< z{$M(8PFG%A&gol?8NA1fno6WS5pJfPlKPIX1`{9tZK&XlSvzZ)T*qNDk84Zi#G<5`A(vl?CY2(yN6Hpf$Hq)I66Rb`o5X)jR= zDd5*#3sn+k`UxSC=XrWTu&#g()15(&3v*B+Jr6ob{vrHFakeZlkz~ecL|;;t;E+lm z1DuY9moI0T4J8l?Rxx(6iu+{zb zM2?1CfzWjUy~<8&X&SC*VIfWIx4$+la^OWIfSS^Cz`y;~kLY128wHO+$cQ*_M7WcD z2`W^-OeMD*LW?Ft1mXe??;eu4R9h#U@KdD|qt; zq}H?>7n$7>vPTq@u*T+F^XjaPj7>rrz;xMXV04%QXwy#H`qY;dsOs=USF;7a{j6a zIySF2)`F;S&H??y%p&opgOe~8y0p*a?}fw!68p1&K^i27z*)g#<40{Icul{|NfGD` z0r(&lIbc(uBu|{T^x7P8$78-c!0bSKE`5grtI>aAI+{l&5?85GG0qckk<4u55|CS$aZ0G;af>e9%B^pI2wX|dTe|ML8!2p(`6^WY?C}}= zC_Z}^Fhhbsy;CHC@yWoP$*dXFmf}*!4u(tN`#aGVPW~%eJt?Q4o+#1Lj5{elU4$#2 zvdD02b%y_?X45^s-V;T#(}pYOkqOuYe=^&P0HUH-EzZSK_v`+EAKLGlegz6-hOHo< zQb3LHE{T>wVcWoZYnC`@tp38E{~zsV*^$muX8%tev=DBJQnA^UM82ENH%jvka*FA( z@CBZB&Mw3COf=#NZ}qZeCEIXc&Gtb3!GMO4`9LyTSLfpH%Ah+i|KQ9rbiY&M=?d9q5*Tv43X-Z zNuKtPf*~x-fx;#s>N9SL-V~1UBGGOtm10{8raW*4zLfTlwk%IFAn~P~Lx&$m=_g{k zD)3@$jkPnz{OtTa&&nwjCb@GEo%;U_^3-<)e{ChZAXrr#vkURLu%k2N9PKu%1+PzTa(UeK0|#m3!bQT>l)s__SXNYEBge*$! z!MuNMRq@j3d@yj-A$I=pR$@Y;i9`o9yS^v!@zzL)PL=J7FY+@fjjPZD&OcEa{9*+f z3?n|Tht75L-}2j=7~Zdg1_jhD&3GQ*GUSMZL4uN6r>ROiRDD2O0dpx-DOtsdHciit ziiuE7kb?v0mGDS?w`2$Yi#_Gu6iduH`KJd|H3ooJ#xx|s=$~gJB>QxkS;sN^Qk+?H z!i@XE-=;W+@ia{uzP_(BA;7N$?naQTDYCs3WT?LV3QCIqe5FEIX}Pa$E*|b*OUn8E zKPN$>b`l6fu=!WVYT$cHRiU3`IUPVx4?67${jAo-rP6z&Drah*Kj%MkNeoPxGm!J*gef0?V}~Y1XRRKz;d%s~wFVA7n3ZMD+enwn=L-)wC6g5<)Y7 zp~vjGz4bAaIh%csABLpo(f#deg7k>Vdx$FNzw_+x5o;dJM1V6Uux$W_cSj1uGp}IBxzpr-e z{+%$eM5XeReSjba`D=yr-43R?yHBgr!UzGoReAO^>OHIh{>F@>kC#SGe=G{JT zRa%WbVsR#XJ4DKh+F2jkp>fWQ3}7g_i#wOX)cUJr>1| zkzJK@t2^b0@s8aSXMNWh<${X5jkoqJK?VhA0(v%a1U(yghwE+e?p2yQob^b>h z-c%=g_sm%y2o>)R5GQYb(S^a?y6-P(cQJ4w2`1We z(c{BqM3ZnVFfcYAogdX)z%I5P3N;l14GP^O7Jjh=H}B?j)V%@3|0Hk)e;0* z0}!YUvpO{N`nRZuKg^dXLHbLIhpUl(C6P-E^}W@6Bzc>E#W$M^Hi(f zPOw8i!GbeHOj;s0?sQJ|_Bj0#qCrIYnMm^=WS>&^tJ;00}>? z58^)SqaG-U*i`P_E=+XSOvRaEt4g^$3{icr+5G1NK(GQDL#lC^fbtLxvT8f4<&ea zhtJ1wj|zFA9eOhO>TkdfZXKq2pOUPyR(b09%=su~czW}$lIKWI-E5qLu@_YjkG7ZC;s9aW zXt0ty`(@v5w)O8TB5&LzqI)WK$-m#eYv-SF7-nDHP)x<%AQ62#xP{V60jI|M1PiO= zK_BY|87q;RakRujr0e`po<=|$5zQ_cG&aUW`-a2}mJ6+3hUTwoFI{MrSn6CbWG= zhCT5&`8odSdsm{+12)#8Ua_l)WZA5#NjAd5a787L=ddOt&9D=teqdBXjce0pl{(MFP3wL9e`+! z^#;fwy=?i>^1cvZY^2{$Ze>d7KX}g3*YV?f{!2Pvzg<{p^}M)TYQq(6SrBxg6CgY}(Z0`TC%)obgWxiGqTh$lA(Yu^8-u%K#AK zkkXyr?;Sdx7ZKaS;Rwlo0Cw8<`d>B;g?9YnSipnbcb$`TV{I)viV6I|y>DQ@Dv;WU z_Ge{Z5Bg{*lGjg{@QC{-z^>lq+*$>ES?h3Cv>k%Y*OdF!jF`D*g$l$2BwHx5iecV5 z$d-wuQf)>f%a+PFWEOhehdm4B$@ahCY z61CW__y7eV_=Lb8N0EbrSxf-py6+ODv2SAAFl8KV5tZM z>^$53VUYy)@FLJq?j7oo;0{0aOQ`XhyoansxIpRjcHH`Gc|{F|f{C+~dLn>^VZ1fSXQEamB~WQvigO17Y}SPyz8TS8PAA(RYyne*~>&1|hk3(%SlNSHC>73bEuM zaeGVe9q~y@l-X|jfJb#rujPo8%a1&w)4u`=gJ?=dtSs0u@~p#62mxA~0sMScno;a*Ae3Y|2jRvTa9ToPE+{r%9w>#w6H9dC~U}G5XjtxVxkvq|5@D% z;XegFD>D${XB42-4fW!Lt`}$)t&5HEdRiWHHp>@`-h2@;g*_%=P(z}9+rzMsEh^5L zSQ-}{&N`Lo9)3-t=RLcpTOHSoUj-Y>g~~ z?A}j(bAVVHbv1SOS`8t)IaR?P4S49Q>@^QGfs!3=#(hiR(h8)Us^g;1#$W17?>VXvq*^dp^Vswt^IKuf&v%_s z0?}3vECfm~-eMTFuZO_(Oc8?7>JxNcee?XC`cE2hH$4E3^*aNEy9gjC)A33{0ry;!OG{4(?##bihj6#0Z1Jej7H`dX`vUAu7I0NVRC~6Gpa9Ccx`#PWUAMv1HZTl$Qtge`_=GY)2dj0LzIEdF37=E{sGO@3QU1^+I@hGOb0jIIC1~)`Fj1u2pu(9^xiqjVCD(8BK|2#a_Q@JE$GNN;%(>; z#-7ak4N%&9;DLB*aB6@!^CN$~+iR%qflRr^j|H$i8ff6u367deJVA2Qb z6dw~8Gp4X44}^6Oxa2t*{%vf$tItrIhe-_KWXCIJm;>ikuJkQe2!3_RHyH@~oH!{^ zM07{MG3FYQ4j1}GHmoXI2CQV(gDwJ2d8A)&);g%Rv!Z&GIHk`eKfk17 zi1~-!pjfPJf>wU8SurT7)J1&qgy#i|2F7{<(bj*`JBa>$+nt1(tpauLxkrhI66F+@ zK7W)cjc7HgCBBLZ1y8)p4If*B8!M#v$LfAy7KvAe-qeM?)Qy#knEV=@j{olP$fChy zqJlsa0&MEL=J)JGV|ZiHH8N7EHAeea7&IoXCjq(TQ`i)<2hWxA70n2k=KU4)mK*Dj zcoosjcw>(r2rGh{ZnJhF_7@=1ez+7;b;U^c7PfIJ_lO_XtG5o?DfoGBPGd`&*!XDO z$^>h+r3?O+S5$%{<;2~IXZd8rspvh1DAqqo2z|m@Qv|+LX<^}>d-;o1_v*ujtVs?+ z5L@Idm-v2ZpGm76p*&U+N^Q#-k{~C(T)1P>ORqvhXZqGnuz>t!EW(J%w_8j&LC(9R*ww z0WGPBBL7r|JFBv#voM(42^;0sXl%C&^NGveKLgvcJ56?}R~_G`a-{D7xplyp3j+qM zpPST_7t9|iqB*$`t`d8~qm4Az?`HUaJcMXdUr~ZZJP~xw@Ys=%jo@7v-ozdbl%&TE z7{T&u_E^((SV_C!;W(MC&3cpA=_}N67N5SwvjOP$>?_d^bbIR3QytSfEmHA3&Sfc^ z0!ZEO0iMr>K+Q8zpjBeI@_UJOr0_CPFvIqlm8#fT5 zYI&pIX6TSupFFrFOzVIUbs^_9zLtW(D|ake2vgdpKGX_<3zbRFIa%oDP}nE4b{jEte9d&@QJnD@mX2(h;kP7pxf%19AUq* z@cK3b5i@RcYa&GYo$ECnP7@pOS87AepY1Cu)3v&(-ed>ISS~ZEC0u7J5V1Vsl!0VK z(b`XNEgc+(W_fxnDnr%Ci;-vM>bzhsxkMFX3qq3yY`*=Dutf;{ORIv>C^G0a4Zd=T zkS*tnRoOgmY;^tbl<|d5TA5@CazAXgRu!5BhIzP~;QGWJNy2J>37>7Z*;r(9Sp0%+ z9gtNgim|K>|LTA}cELD5urDNzOSULW&1%_{_7nCB7XLw-ZNK@H%hrH(upIG>j&A$m z;Xl~55|eGdJ@Dya)tNnX^d;^KrYv+Nhp9(Z|KB^b;$sPOcv+s}C50Kf%+Q6rJ$r(GTgADuFWS@M4O}qVMrT3I$)N73*p}Qslv)n#NBrP>MTbO z+%QClzx(WiO(2Dkr_3tO&U;E?3E!`u=y%o@?k#x;PbnT3^M9Npb#{LqwWC++Erjjr6#dPZ1 z5hzlu27YNZCM8b}H#tQ~6rXTEYX*!(e1R1-#Sky7G__S_PzjNF3;dQ#lbHPOd4Cz} zGw0&&=k8Q7>q9Nn+xeuYr3zdhXjc6f#`=5k`Lm`l+TS^j_$m4X-G1OIduzM%GhMy9 z+Jw^@37!EX&~U{Y!izZZ1@pMQyg2B zhu5x6$!9@Ykp!$Jq7MXpsr8oohA3tkGD~GO{t8m`1(v&O6N?aWGT=Sfu@1qMw*t`b z!u6&YSAZpbUC)o#UjZ$w?}rgr$4pn-M!x`~vY;TA|9~@k)wJ2#qrCGdnw^^h8nvOu zqiy@)UhotOJi4RN3$bEsIRrSgk||j-O+;H48o%u&z+fQ0e_DoVL13I)iL(}cEhlfovW^{RIQyG-bc5s?-Hy^?d}SBbWr9m6epsxGwW)3F&6-j9Dnxw;E?vvi`Gjq zXYl5_!3Um+VpZuI%|)bj=lA5ecdlt@T&dSO5Wv+a= znV2_O3(Ln|nO`*POAmN$uPke_V~4#c?z3Wy^|$_9q7==lav};r@I>*uZ%2 zw)_B_lfl7uK3^)7aq?knCZ-k7!I+?^<#T?cUf*sJM)XT|svLL}l}&<_2rE^(Y?p`; z9p6D1SWoLSRvfRRQ5kd`muNH~j0)ja2b#_z2{C#8U4-eWem#jMHRDY4Z+I!l6T9n0 z1JV}M4I<1Tm@GnuJ*9f^=(EvLFqfQ?iU(wyE8S^R%R9sOUg+~la4Y|Ef;1Hv={}!I-u+bL{y@ z{9pPbs{Pjy?-g+0pN^k`shUCqsN_nSc6ub0arT?x)+12#L$NusA5oq$(&H|O&VdG% zi_^UB7+r+lSW&WRxopF|dTX_WYkC`MZUcPuc&)Mc$j$giQlTO0?hW_hMpo}%m#N}~0+mwVCj?9J zQJX9;OCV`?^;jv99cN4bEg0^8s?3)XWLS6+eIJ@)&V6U6xsL$_*;xNLISx(T=>3!L zg%Rn2Q*Yjtxe6>wBgQ7Vedj=J6`819OCCm~5*Rqvtp-Lii~I_H2#{;*=s!D;H60ny zyGud#(2!)(T*0&-ta9If_;*WNz6@${RyUIz5QR!v?0k80!^*f-LqSYFVf#W&2I(%f zVw5u_J3u8FJ=eVb{8eS&)AI4S@YHdr$U~@4I0hEWK;(p9u7*v+qk>derZ7_E7nUu4+$K@Q*MNl;3;1Km`pU zk3Ge9kmkvmH`&cGiM!BXF2+eCTLA`3*My`3>07)S`Zge?emm zZVrU+EO)>XXt}{-f998Y2k?>T2P`M)K}a-oEiRKTJzsMuY!Xe!ycQ|n%Yfrf*5(sJ zX)(O!N*Y*?Klls`gWumRK8MBgXJPNs?&`BV)HZZeBNXES@#l6qdR3a*>;;pLpB`^S z`Y?Aj@hNx!y#q{#<5S!$Q|*L~rtdsObT@Bwck^m!uYHSUiASR%2gI=u{DG^_&Zz^6 zg5doC1I;A_WTSHsvdjLhkUwUVHYpnzYT_Eb?4tmh5!>Nl`VY(qjzz{9P3s; zG+fOZ;jGw3K21bX0|@iXZ>Dwm_0IV}n;-0S(~ssf9-QaJ@z$)u8>p(0#aD0`5>EW_d(IhIa= zv&AV546OGbG$nUn@wz%m^s^$ohn$Iu&aM0U>-?F*<_@Tf$2jK0z|xDIN)l9d)#H=< zPA@Qwfl5qyO|~H_Jb!LIoOz`8E2ZN|pI3kf^Qs5@%=T6|9n6*4@Cd~pbvFmxX##Y4 zM^Sy@#UH)9tks9nhne@C@B4Dc#-Dt#o&%G)Q+1NJ%ghN=SD|=Psse|98|~a__)t1U2-KDYH9Q(q?&|LHWtYz5g^J} zqDx4;zlT)6{%leBSZFfd0C~q>qGk)&Q$}e$!`Wyt)U23e(5k&e(786?dZ*lyx+2LJ zBk6kb*(McK@@+nm=KCtWlkU&f zJ+@JodUl@v;m~?#z!m@#K&CG|syx_+3eYHbwS3lT96jsa-)Wn^LPL^%_u^_nk2xfp zCIoS&b0{;>uTQ>kXOh}3=E91K=DG$v-?AYKQ<#}x%+JNo<0!6PY2oJT!RTNHFwEKKA71?a!*`{zTF0@}oq!XR+0q1D+<5RIq za?DKJ4UYUD5kTlAxB5!T-r)5bI4Rzwokmb9p&9v2l_WMIOvRS<9Mch7YyF?lkyirW zm)^4CP-&IaUy2pLFXNsC@nm?-o32dDoz?k(;4c5})1mT+7kAX)xov8KRk@|3S?l(c zcB%!om$~yul9cd+WqaPO49XeW0izVg9>m)biZ$u46d{NYfw}XeAi% zqNNIHi<{B-Kv?TWBOSv8*%BL_Z3j*UB=rn?deE#lq57&iPpV?4Hz1mWzzN*FMfD>y zOADa~%wFUivA9o>F*&h>Jy%G0<$-d^nOT9=U9`^igVei$KK2+|Un0|hA#2yeDsM{D zn%`kLc1xs2n$>Y*yB&=lh;hAH$XPVN*O9o23{3LSWl%Ky7mT6exJe8Hgj$%h{w*dG zvFE<>Gclt*5o6F)t?wdwnIn(s;Z7k;U*Ht_owL>@?93(?)ZSgU*=v#ahPL`KN2Axp z{8wa6Pn!GI|L-Q1owL8Idcf%Ak4^OOa%BB{-R@J%@G!%B3SI90oSuG-H)kf{+l0#m z@WLnxWPq2jH|T#a7uI8Xe`{Sz6z1|-Jn#M#%9BCoibf?{jn1$I7Jeb*hHPUA-qk*t zJGI4C<#sr5hLvn^KS*V%B!v6RlgGV5jb=pIky{URqlOd9uDzVg#xHTmI9J&1a?>v# z`gxZF|Ba&ZuMsu67mj~=I}6zcg!q^ap=+B5I-*HIihG!xp1KoLH40X|;!CP%Ri99^F_1n9}1s;`L z$PR`If;A~m0DN5V}0{Szttl8{X`x;hkIOJ(!$hRN%XXGOdnk*aID#{Lemm27dF!{^hzQhKPzAk+a#knF22;GRYs`v2D_TFzb(DVD! zHf*l~UpyQaoGl&m;yRYTcjx?BwCuRs=<_~x}7*-ad(u-EGxj?ZI$IbH{O%(mhELK zTMf-Se7s!X8>Q+zA%&RrPZ~m_$FJkQLL8`p?^e<%)v;Z#zw4H!CIxI$abxBJIe$Es zXTHVjY}y7h&tsnN^Ppkopw7QtcD<;-9xgg}LzC`opv}_-E-C!V!m(}U5ba7`{w7w1 zqE@06aP;u1M16r$5i-418H_Us21T;J5-G_;poHY_?cA<%>!o&R6JHtz7s~RVYnaBLsZ8EPQ8a zYuHDaMs=%y9g}Z0LW7h`0%wlIqJv{uNXxyZ!x;9v=_J#_@apbFD{bda@?zu$B_QDe(6%O$Y9s}R{v%~oAT}Viv zuI{hvTrq#H>-@D0Syw_Je#bEDTgQ~*MWS+WV*4Gf*o{0WTlQg^%u|FeC%;Iu^*{DC z;37kLzhrZ}N`1guYsha0EpDKN?5Rk+V7A`g5Kd`{)R;KQbXRMfN5TEYV=&A8lmsxu z<#P=n*nAE5)pasq=8xg*@E-q%e+9)^!06exZQr4%ii&@4yX+^`^~*_^<`K-FE^WVvUY;SAYYZW5*itK`o~8@vY)cn`8pk~Bb+mKJ!rWHam@{T47f~di z$r#e?e>2deCn#^}Qg3v?ecs$r?Tx-`i~R7Zt|)D0clLX$e?I_pj!Mg2%UH9;a4Z(o zl=Ltrej?G6&`v&P2-Ep1kF?k9lRW8L7sse2FA^y6b5;pqnqiUd!>U1lah>zZ7m4KQ z&}HElMnHw}L(xQ%zny`IFFs3M;fq^$hdFgZfX9EB5z%-C{*(CN5QTuqJ?5B**1|C{S5Nt542tOfiH z3EdoiIBZNLZyUEcKQT#ccqU&}#yy4?v6K3eT(nD!ugFhyk1~RG0j%)SibHMHrDD8N zQWyyzE9EIh-N@5-ly~tLWGs0wZSRkfLoa%Yq^sY6WOkZdy3w1lR?lu#uZ*L_VI=%$ z_C=U7#kPc7|AXK*A+5?cIhN+;Kz4WsZ;iE`V15Wp<(uHA@C;NKY7fr!HXJd9H^@171c`Rq;|TN;F}JxpneaW0|fF1!B9+=Gdl z+Q-#^QlKYudZ$O0*Ai5GL?CBsLNsFNnFx3H8ni|sv5#LSoKXIvlVUL3Ed^W6c)KC~ z>!!uC>ENYG0FH+!U;!`c0%mYQt*I{~%>!F4V*(~KwZnPF5a+hgU$1!p6E(<8ym`i; zOh=?9p?voy?6_+8Zhb~}msg`=|I0M-h3!@;P_v+7aUnG=1XDVosI!wc)^5`C(==M8 z7G?bQrm*zyBoCPI@xSNncFOWcKqu0n@>ZLy#3DId-X<7mE6XjwIZtk*(4)z$%O1}fw;UVZr5Z6<6= zMcZ&qolT4Avp<|S^0wMj75ly_-7VV3+9TI1as)X4_>Q(}Hc}Z8LrD*<irjk zJ5TA)h^Eb7nyswsCLhK9BH!YW)3d{u4xl6i(4vb4E7$6o_KFE0bq4`6DKWpKxRtxh zjDNS`ghrj{az9n~>wbIU42~Dvj%Pik0i`^~^%Nmb_yNAWKOy64iLZiIlJV~}hM8Ry zS_L3VDrGmP1jtNu?U1v(9Ful3u7$f|2XQ(Y2z%lI$jE6UJ{wTdxefy#B31XF-lzU> zue5_DLJC#%=D*j2<#s;1fS4}3Qn%iALZ8(^wdFuTn?%&b--u)ik%D1SiMC(PL>eZV zTua4{pOAhW*K#T+%)qq*Csoxj2g4kSufE%y|LNyvt}TE4Nk^V~scU$^3JJUk)e^B^ zb>^^naAC^RkLksl2V{mu?sQ8({25tPeKhX4cCSPWI8M`rWa{;;OQpjiuNAxplzY*fd_Yc zg`+C&0=GY~HRv&p+(S=oa;4Hr z^es=rGq8dqb-$7SztwdM?ISJFDpbwQr}?Xn=gJTwNKXg36WIdCj_0=z)w*2v@|<`X zY&a9iLZYZqAB-Vt4&?40M>H+UF&WZxv0G$w@9wBkX zfrKG@^YXmYTM~)%=?&cNmi}_*k@+hFFJws6rP<5^cypf>}_>d22nv& zF9vsB`bdi?$VqcFd9Leuy{w5%NM9)c7sBGMgW^Hw{uU-QZmxg@3tXQ~@hd>bkVGU>{i*9HN<|%M#vZ=8B-|r7RJ%g-C1~SP5T#Z7`%34PCr_HSL zDJ8y>;L|#|;*SYxWn2g~yb`HpfM+`fb*m~md^0jvCg!49hU)+)DXw-4`$8nxJzZ@J z!DSg};i7wt8slXQ2Z{Fw|C)=h>C`L7FnfMPTb42_n!jG&`7m2%rFeGT!hSPmJMIHK z;x<`rJDxI=zud$C$~^yR>gQR!d`XO@n!MzbS|Fb*Cw&Ah4`^9^p1MT#!x3W5KLEm| zR6LUER|u>(Uw+Oj|N74|9ABZOt;JMVSoDvxxD?E<&tu90`1v~SCFYEG%q~14WlBNs zTIU+>v+9f6V}v?le+|0*b_VVImU>ctT~)m1>LPuFGM@uPvAm)59)lW#j+#HGwiAP# z{`>FSGFHITsU@g;D|Es~K1kL(rcp}q`t!}1G&HRr- z7>J7+YQ52Lifg=YVH+wE^QgsUvmo4wS!8i7bO6S-JOt`IpXk9S6ynW_*|t-;xVTWu zpVs^nv3F0kp~c`zcPlb01*Dj3+2Whn5IuqjrCB!eRwlQ|O5z++ zyUlUGMVuY+HmMm0Y_pFow0D3&oFmT+N<^_rhc1-p{EAV$vHZ>2Nw)BQ4UVUEz9Uw+ zSSR^OlL7(vfah%{;Dfi=EFJ9_2v1QS;j5PYW$%C+7X!Ce{E)gGd);g<>;t-KhqQjD zWzNm5c{x6d`e@AjS%BsiG?(-k2iMTrTIkcaOX&YF}5^}W#7(Q(05OsVV`4oLsvyTu=m8~rZL6uX$T0~j5bD!a>IEjx>P&p zp3t9UG}XZ$G(Av@w>-QX-AC#9Aub_&b)Q*x6aKc=3&Vg+to6Sk9Ufn6G$Omj_jy^6 z-rQgt{k?IE{1`mi-)8?fqSoBm6A^*kd?;fq_PjYC(`OBYnAI4EJPc}#eJU7is!U4( z?m8M9Ibf%8&0WO{JQNr@*}db1ol1(Bz?yDTCIx(xp|L}{D?WC_LxdOi%r+o&(X6{B zw32;BrW?SN$7jjlLPJDz^I>6fT!E94Mgv=9O2X4~(08X?y)o@BZuq}8lanIH3+dq@ zVl}>TnP-iQ{OqsyQ`YZdR0J`EX?ToPZLEjH%7IZREC*@Rxi>+zUFU-;odLP?8=>NU z`h%rMvK!tD#SpLXB*K!*x4RDouf1a|nq>mvyp6&}gf|v;9)4o!?kCoBfbqgdjdIM# zXu_CfK)}6Ec{l|6hHnjkW*}~oiKZmE3^V;M*4Nrt5>$sgzqj^o8MM74XqLh`ejnjq z;#VjA0B|sSna99q%nVVgi&;2F4+es${i84-OG~tJ8YZESPJY%p5N1^bj1eFzr4!KcN7osxy~5@XK*L|K+gtlq^+IxA&!Vz@1vcW zmu6yWYJ2mPmQ4-}CGOC`KQ1Q)a{OVSwPQ4qa7)E&js>gPRU}}*vh6vTcoj=NARPvmjKf9w;A{9X3k4I(UZvC?c>%| zH?zf6J^<`k6MDJQgWLd+RkQib2U3PRp5E4;;KJ+bIdGpl3gzOGiRx1D+z=j!-QsGl zTQFl3=Mx9Gs#7`jpg*sX5>*u5x1m;RP8@7fFw_uI@4I)l4kFkC9txMYwb**MTmpx8 z-%cUQ7=_1d0rlj#THftM`>Y64`kg9cP$x7u_;9>xP{gZpgfw6pD~PdoQyFxw0eilT zoN23aI-T~TyCUrZkvOVwwZC3r!b|RT=JTiXaj{VxVmmwsdE=o~5Fwg=!c?=Xc6Xu{ zeyTFLU$2z=J=KUh);iWClmX}n{5Xe@mpTAg#n?%z5Pz0ltgo_x%dhB;&$j;k-}=W04Il;mET`L;*b~3>)8C7aY>tBXf7<0-+rpHD9976RpRp_{S8EkV`9l%%)4_ZW zCMuG>4*|ewX@jrPHv0L(P3A3zuMguFegizL_hweUz<7>KEbX~)ps=tzjFr}902 z%pde#1sI4N-h5Mme6$Uqrw3*}8JpZ~%S1__IE+x{;@y z-qjy2P~L&GG?(Q6-a{Q*Lb$~AMFYEW#)X5@MFhdU7jV;0R!gWlX+NYvG_yya#wEhe zG+o~>+akS)7+UIweYxulFSoVJ3Zs7~1q3xWj>bu7jPHN!{#%6p@IICY1g0z8$IAGN zdib3>KiHa2K%C%n_+T(nZ5?a~n;S2XkR48gK&Ya}+ePsy3#?O}+WSP9p3va2xc||; z1KI!7%+VRR2}+M)kXj-8dPRP8)+LC%{?Pi+oBUI1CChFZmw|?ZGl})aWN}%EGEopo zof{qpiSYfd?!*mmr(brGLd2TW*Fb^Gdbx{3JEeqY8#0R&gIV&*ah745c_FfXmy=Pr z-YiF}XYRTn|Bz41&%y3i4;y%h3TFrvC_TT4dSD!d4Qf~*$y zt~n2D`Qz{}aOD3}R6xZf5uWiZnYZfK1OtHYOYMye@{%FkwMP6^zgil<(>PJ&UK#UBF&Cv=pS$ znz&+s0|?b)$1WU-WY6vTZJ>2*)W{^GZ7Xp)r3u~7(b!eh328NBW-Nwy8Bp(?#vZN^ zdR1wJfmyq`ED_`J;?>@OP;r6uHfJFhPlDzw*S9kr&<|_DeCGn=T z2Id{4nUs~gf4tjHHyX`6c^16+v;h(i8zh6ww7~9Y%RAlxnyoRiK{Wg#3~Bp@S>&0R z=bXpkxS3_*!n8tXOy4xG6i3YmFyy#sEO{ra1lR;IB80IY_eKhPz7Z&5VN$5? zmirK-U{dJ`^H#523%&_tg__MMt zNFsa=creN$H=P=Ph5I~`EB@d>(dbHeln>PCr$rPYFEOX>T#Gc3oAqpt$>NGKGqLK+3VJ!!aB%e;88ojjXlc7`6~S* z{oP-uyZXNW5HYxdXpnAVXH18Enn}u}Cu6Arcv=Wmt=efoEqn{);L&xe(i^_Is)_4% z2mg$2%_VCoBHY^0#Y2=p>n0QdBjKnU(I4&!ct?(JcyVYqV#R(5Ss982bwIwd9IBxo zJ}jD41s9hD&3yyH9ePj<*O^_Jx$WbQy!kV%;dL*heU`oEri&mD5{>5+Pd-8fayqj< zC{+nKbWgt;pUC;sG^+J20mD4G;m;9|gO=KPyRn>CqH7j(ibtb#!ihsrfK%h?y-&j* zRrcY6vQa$_96Um_u+|Aw_+c2*f1es#%Wz)oXEL;-|B&AJ8^Cp4|8#{q=dx`6Xgm8h zm^!q#TX$t59sSn+;nhTfJvp~xX2*lxX%b(xxJV2DhMkGllJ*f3PS+)Djo&>{o>hF~A^mh@21%?bV0oLD)6%2-QDI(B*)m!Zi7F#a=|hq3S` z3w**S>Db~;Nth$O^E%rTFd9=9ec%_(Zu`tg@u^+UWvdQIvRk&>s}VX2L#wsGFx)P* zY>cXr*{nMNZatl`kZZ&*vyMVuqFmDo0RSEmhOjz@Hd?E9lL){85Ll_mag~SNUqxy$ z@;u%*gawiu_54wPpR%pD?@Z~t_umNip6m>UPdE5pj4Oe!rg9KkhLWG274OL490+j} znC4qpxq;{Y*aK3$yMeujmv=jzmnRU7AfHlmtk9 zWn#WuqfNdt<%>*FtdJmw;%AEqHObr;f+FoIq0{}(eU1sS#FBP2)RJF~dR}ccIlHZ0 z<9uF$`y^mnolbPDUda*ovK8g;>x_Wc&d(hEkD--2T@cl0(dQtZsMpRN*pr`V6#pd_ zDD6;n*p250cp$_Gls%Y)prrcY!l@D3UepW5!fC065>YJ+wfC&afNdCB($=TZdcsr& z$eAUGXTtgYtio5RnS1oC;N?xr*M(`ue98n4matd(@0Zg>geQwv!l|gb+Ub+;WfvxtAkX2cHd5QtpWgg@aKJox2h5V#hG!e=5UGvY z()e%|T>tL6f>th!y@KK#t7jiS zsm~AD;<*a_;S#NbL36!NxkY0Ag{psnEq-du2sJSWTC7re4V9nuy-y|Grf~goJ_DjM z1NOwO*>OYEWN_`I)Bu<=4X6-f$!L165IAK4A)&XK-f9V{ZALEnnde zarkZUMrvurM*VC<-#a0#))DP65>}v^dB4M7&+TpU7(LGqZCqw2sb8d?{{Y*Pda}v9 ziuc+JZ-M4vna7mnejl8i4HLM%Nx(XGtkJ-h5j3Ci|{_(Z&wy6JC zLn&qY;({`JltJk~Zi~$Aiv5AiT9z7ln+r%72=qNQ#+bPhxP0nG;O|b7V{yy{c3YH? z$)@EMfQnSqFVxQuRl@RLZ&TrJVPIL@ha*g}5!7qt`ZeZ{pNP9vS6%=LJD5WIWnb^On?|Trgs0@rdwEWjgn{UflX#6MQbpFgI37L=~GCr z3k4BDYHI*CNpN>B05kty)r6zw3_%xwZ-yfp0LRF9INrYDXaroA(pnM?APbkf4N2H&P-|z14qSPF>mEda;^F9J2`52=^XmY&>nwUUSgQn0+?RGeE zL&ZO@Vu4ChtNZWgZKrpKN z6QcwV!WMOu3%P5ch9)bXXPEO4)IuJV3?{crkBv(oEHR&UsVQkQ@iDu`1%;|=cuzIo z>hWts6UVvO;nJF}>USQ*ePF$)W~m=t*?b{yzTCph9gnxpyd1x0{C4fbkej@@ zRs=N_0B3*R{fbA(ym0jUBXPE-h5O@{?!%hzNzeEfzA^eKoJk{=R9cK)(y9j_hRtS; zzB+6;LznZzBj+^jTcvlmuA6_dTz_!=x63jar9?W7RY+}u5@HCvVs zyy;!aL}N?*{a#$HLYcc7HKe|jGbSAGV2D~N9u)3aM%P`td<(d|S#8tx?`kdLuh*M+ zg&V&p-a9(p=fE+s=E$Z8WZ}H1%j*O_g@fj3w7ucENe9DZDTFhnqg&*bP{511%Je~~ zd{{d_B-SWKU7|PmAJD`C{lx<_$dUO&nkBUBOtFgO?*zG_|7VJ`%NiTi)0r*v?`B#K zuR5(&oMsBUDwbx<^f6!#GvC6=EP_o6I;0;W!I}ASfBZd+5AnP&I}wQ33RXm+ z3(7h{u)ZISu|x+QhphoBX=0`;^oh&?y{2Al`1aILh>9VO-`zqUjvoR_gZfTmJXtOM zWzW4f#QyTb37Szk5>E`IX+Gb=^Mt)kFGAnX zui0hS!G7e$i32LOgM^D#5xp92zKAy%c6C?>hB#xQRm-~wgm#vR)?RqR3^xEu}R z2rsCTs5?H{qzcJbZBVoFM9DliJhJ5PZqw~zy1;fYcKMCw^zNJYR(WPVtQ9FDAxDjT z*y?W(R$3H)WGRG(%v}m{_D4Vz>$IE3H#nV=XN<#O7NgSB0w|OT4%himD;;7|DLoVV z+Wc9U0}dLs?@{4k-_yJMtq6XK<7qS!R*Gs2z8JRN9rwI^a$~QnyMh2+O zCs+o4vrLb}vofwkilj@Quk#=;S&twW9Qij{-kO=%pYfExlzGX?Cojtf55-jp;;fhLkJlV(G0&MkA1Eiaa^BSL>Uh9hD3kRqZt-h zoRb_}0G^P9zgrU3w^EM`5+LUv2peRiNqt`*P6%vkiMxN7Q~Gz$bGjahesE;X0s{S2 zfE!RaynKeUf9x*ss8B8Rgi>h;YrxmI?ue!J%sZt7E3wryLFH3-^}I=kuhyIb&n4t# z1)vvXuH=pR!qFk!eBpZRr?L0c%&|&JZ~C=CZ*q^cbV%3NYFrEg7xB;6wn+iyjw14b z^p(6N@@5_eO#~Eyq%=!%hF*e!1ns zhjKGbV5OI&LBHRr(89@9x+Tjh1ac|4N?2pp)N1>PEdH;!%S9E5K4Jd{aDo2TVq0Q{ zi01uC&D|_QhuK_I9{9fJMdGEYyYAWI7RM&g*ot7{Qs-uxEseT|u~lbxd9cQ;RQgLR ze-Q{Y><3J9BC+)*ugTM-Z_UUOeoIo5110X`c|}dsbGowc)a_AusE^{>DrN8|ap#AE z;t8CODXWb@y~eqWsd(?4E!N&HG!V+9Cm1ms0JDjG)<2?=YRG^qTLU6V;@h8Wt)%9G zJ>qQ%dy|aRRfRGf;CjloHQ%IO`A?VV!AD@`*CFaE9S`+}qc7r7OOU-koq<#!K6C=w zI;xE7SBNpxxF!^N6`mS~T?%=sTX152_H3no6iT2X-md&8rD$NGI2tJX~8Yc_Cq?5SSAt?j3^<>76Mh(%aYdru8-+sTk1F+ZLi+xM6$$BqR=y zBBJ<^gACW{DxIcx^99lUYZ*OFPU1Tn(u$_q_EOqdnuh;V_Wb7O0jdN}yk;;j;5Zq| z{9hdv3Gnw~r)pHdH|$u>yt1TUAVfmwuE#PS|+>!)>n=1YYi%cVoE?6vj!c zpo4of{_Qv7zJNdpoHg5%e*SWy7qxF{QEr;#%>}pc3#UE*g^0UrI$rzQm*zC^s5kO} zB1R!s_dyj}M_?&vJ>HeHWO07D))TJ)_~joGj_=Xg)vci^>~Bj1z)Q_{!PeUIyzX)~ z+a14BAztLJymC3Zrc6Aka=~5m9A#HF5`E&e=&`pd;7X5v$S4Z{pqn>r3#XHbF83pl zvw3P^A00KkmAZDB{80x-U0Y33Ct+tUIQN=7LTo_p z8k&JQ3aKEs{N|zrJvA((4S2hegS!~Ifa7oJ_K5%0g%Z#tczqjXp&W*4cf>$xDeTU$ zs7d(qix>X^mqMf+(ul)_FR0A&L2QG+#5g!|7x4)fwQlO2N`eBW( z_M81V_)G=72wQl)^Odvp4$MXbj+Gc`Tv18jzaI&u4;OHu6;?$(@FS2k6Q1u2c`tE= zZM1$L$Xz6JWqDcSbjnN5$){DR9;<1j-pt&D3Rs3WY(c=XVj?4T> zYq2S)E=3WQc>QtBdZpoFwlnh0sN4#0q(Tq@Z(Fqe%D|HX@~8?ZE^oc+f@thK^rQs2 z&vmTI#ea2_E0;mZt^-u(H&ExZ1C2^DqG}9|q~XJy9d8?$V>k(nj&JY zAqsu{#nq)SNp%_v>X=8rpA)DC{6Fr~1yV0fw7qpgkmm~Foh|y6B~9=_an+z|#J(AN zG9DqwMTL(d&Z&Gj%(08P0}qe)wWP1Ve2;Tk>oOipCG)d{50V$OG!&tWtIp zKa!i&*-DMSKHVqNsyM+_xR6A~&gFOKZ}`P&%MkWaSQ#2CVbCHRjCF=Cd*%Ml-0?@% z$4TP*^TLjtfY`iweL=s(OTmb&e?_q%m^GT`v3h3NO&&-^-l;-jcPbn0oAo>@+2E17DMi z`i0=*X75}%OW0+x2LATU-kVu@l+Ayh%0aDJHW$FpTK!cApnl9*#+Q4E@s_vkR61h{ zA+cZMqukaW)gsxM#b*N(G;#XiW^VnD3aSrJ$DcBfxjN{ra*)@Rrq%#b*Ni>e_sDU> zkIYu`$Ys9=aw`hYd{!*>fu>ro7*Gk4a2XW zJ5DCr()SV_xqp5a{^5V(%<%B-rqN^z_!#N6)CQ3I6L)GPUqw`~&z00MgHd0W+V!5) zw}1b%fA9591d^LfqAV?*7DnFEbG5c4W?(VE7VWyK(1&R@IiYmn*8U0we=}-lE%W%( zPwbe=;>P zk1WM5(gGK;Uvy-@aJeeSoE5%xT(})f=K;)DsF^VFy*Q`;$uVvM8y}{?jl0|1X9903 z2YS^SB!3;=%@UN}puhBjXp3wSeUk%5 zwonu{pNr;|QZJS9lHQTgJ?l$;@Tq;*G;=`{;zgisYGa-O~RAB^R^s{5-v~0D9;z&y4I5ZSuE( zq6B>SSgLgixtFQE62z5e?+Yr_9N4&9VK*!O`(9awbwqSe7>Yo;#|>Y7WUjEwxl5g> z>pY7Cx_d_h72b>UImR2CG>WDq^3UpQe+DN24`fq7TTKfM#=z_K@Lt9gdW^XXtB(D; zUjOF6WgZk#Nq#~1?6ig}57a73J+l4XeU=vRek(|voM=CD`(vM*(D8~Bmos8PZ;6D z&}spT+s}G;{RlSy3HvcuD=EmULrhp7yoQz&t^i9?%XI;6JpKgT*T>njKS>kYP7XPD z1n+bc#MFk`iss>NrcX)HP~bdE9d7*>TJU-r-v$L}dVEJ}c&W(33vVrFF$c5W3j)b| z#Xe|NZw|`0BKPwXGGO!OkonwFLm$OT9J#>Jew7+0wDWUbf%U%@uiDQ#>l^rgs}K4Teu@i0 zu6Q57cShZXCwHv+JPy{*lgx!?v%pPmV|$o#S~cWCxIxfd5yEk`vSd2+;kl`o-1y~$ z;n8nJEPT^QLsPQ?AK3fLHygU%G84b$i{X+Uj!)scNMzw+B=yfs<|i*Qh~?XeC*I;; zy|zZ`eqF8Cjy}0=Uy6GG;>_DP>W5^-|2zj(4^Xde!^Zu=^!^{6vu(Uvh%jd7FU5P- z{I=fao0yVKD!16;e_juP8^OZ1BMO-JJn)%0k&nu(NCtn8$eD+A&_w!g;l8Wo;8tt+*+aFbGkx_u0Oq?JY!N&fv(|!C=%hYdOoM(nzwAi-MrN439W56F-^zml*#pe|#(j6=6T^o95(|oxqKl5H%AB`1ikP?d z1*8q`&KbMA;06gRLtB`=1q`bTCdL$fM)k%2OW5^|Xl$|@(VxS|O0XwA1BCnY=9Llq zBCY@eFt65+WJd6cTE-x`9)g|uGNnXtJm!Mna;iES- zVrUMh>JST6mh}S4vD^ooZVSQrq@r~K$m#5aNT?E`GjrC`uhr9Yqm;(?z><-G$s8gP z@1lIT>;D^XxOgVTo-^lOQ zIZqLOY@-kLY8eHsZC;-WZ%-7sE6bj9P+OA%W79$tz{Dt^7gOMpK`)2tc=_J?v7BCp z2KsPjELq(MnYakw*L!bm#^S^b`jcTZ656B#)bXHSve3e<=@WJ12!7AjY(>>0lqm_p z_bMt5jSFdJNiL;pZt4<>kA*Q-H(?FxN$xmn&})J#x~v$!8mxcihsg;JlFf}4Q>_eT zRNf5&OXk8PxPVBAtVY;sgO1mw*_#8(=(v(E*MyiuKmJU_^#rwvbZyHH(VB69B=~@v za7%hty8 z==pf3`=WAl!}3$8(J@J`lt1l`-m(Z}Uht7cgh}8)JYtbL{vvDzQL&(5rE)5QYjgmo zzB6CKAZDQupSNuunALgmVzja07BAuVp~A0|k198@;ed1>K4%{bNF6eznxf#hO5@e` zy@Tkj(0AdJTiHwXpU>^RE2iXF%G^YeMnM`yd=nPEAB25ENn&$22GB8Mvh1Q#iB1Zk zCO}S$p~LJxOF4Q~4A*eHdo>?(JrG zi?W#D&ht(xAK{YNDoGy;O(FDJ@zr8$qJ!V{@>zg@#)ZR%h;P_Na;v}OJwXcXlA;`X z(||~>5la67k^dOjCNZ&?j1>=h z-94z!w0()d8z?cvUbO5f92<~sq}>I=tiG4n%nEKc@C5OnXNB?JB@yezdqsaW=dRFe zj>*2*1w-e1oBjk9Mh0yFH!6G7uob%jJbA>y@~l=NI!A`9rsdeq`t9vL zhA%{%cANVFe086(!rr}Xvtt$cbtS18BN{H{Bl3*hI43xko=Js^N84vushRj(-6!(b zyKYCK1D8F|{4*_fwr?XKfF*(J5Oty!EyBS%T6pG1Si>k%9Yy>#;ii3wOf>O5rrI1Z z@0y*a<%Lm)q3jZ=y;vpG9)^cUqb}8{MT7fK%1wBn{Hu&Q+HKi7ifK8pkYjOE;k3wo z9p3E6_q|^o?CFBlACw>_bmKmH2k#J!LE zqJcrd&L?oiY|{q17PNrt@FsY-iZqf6ja^&LaDGby&(6vS+J&xa%0e=TDit)U8hi*I zEWsx|z;scGA)?9C_WUi<%)qJ?QJ89w1(Tq}`KS%i{?&Yy3f}wHQAsF5hu_OjF{ZGV zw3#2fyGydNTs^m{O%Gon(6q!~WMMo9MZAnZ+!bcgcG^K=QUI2+EaGtIFh=oyU+DDN zVj}UV8++njOO3TSP4>Y+83RXXh~nQVr<)$QkSzCd)}7xDQQ9Y$rE$W@{O-s%(f?pC zO8t9d>n+xPU&Apz@pdMMani~FTft;LgMKQIr!Wk4A-u$cD~tpm3WJfs5+M7CXI2Nc zPJDgP$48IzgqP%I1R0AsR{csmv`FqmZq+y(J!0u<`NH2 zfGo9(mrq{2w3+D9r#myBUk;!R86Wa-nD$c{tQ>y=Hh z3XIIn6FDtQc%h?Z-TkjqB%IO%a^6F+Ih4(*1$h~e+sF;}FO7Oq6{tqw2qB&I(mz_S zCxpU9PkFje(?&fiA+UtP-}dyLxhZ&D4OZ@MHm0gnlxJ=lz#*Fh!sJZ*#=n@m&+4?j zV|eW#!%cXG#-Gxy{Tw41de72laQ90hl6GVoWPZLL@uS!XV1V-1gW3nFg57Cryx%Yf zuvi-lCg|~FdFRP0U$=B2pO;GNb&+Ta&5>^x4{y`&o~FKX;cPk7X9l1ewc?DjZBg(n zFa@XiClt|A)u1qe!{X z*}Z&^IcVc*DQbqucK5IVutkeH+xhxF*JHOBnxvzEY=KtBW1sb4oeH zMGZ^E4%Y7w!vdf*IYE_4M%@E3R$7aD-v*Mqo)N(07sq={nQ&ep$1e8+QyE zr@>QGt|O!I;X0X_sCyUbPqcNAF;)H=G?2CzY0s{tgXJ&d>hnYw3w%=HW$G z`?QTPR6M?0s~rtxTFt43{8;OVH`5SGiZYvOa#K6{I&$x^4OD*oy1dYr-ey?9^Jcd^ zLRbL7^wy#W^5n?r&L^>X<0NuCh%hUBPD)tA#T4B0q41nl8;lTed-A4?D0GXn#r~nN z{OvEAP11KS5z`A?&sXV#5OWvo*EfxI5+Tt!b*3SK4?2AtQxTc)ga>_n4tc2u(lh2) zd`?;Bq?Kv@%tj6aVK%d@xh@%pLS$6}ru1`I&yxY@HFW;|8Gh4R;#gT5;GyODihTLm zTT}(`Hg3fX;)vLUs@(z12h7ME=-+s1jn{)qRze%JHd&wcOba(=e6*+lDx%NjXs@O^QU2*K)eOoek5 z4%Nv{!Qf}$NWblV&OHm)Tg4UW`@u*$?sqXiqGEpgRBIV->-I1a=2KAVdMhoYbH(xl zxavQNa4)8B2L|A{9**veh^&+Wy@_C^TJb$EfME z>0f!OQHk$xFDJuDv-z}on!o8?c9JM>@^xy)l4}f1*=HYTAyNox2VRL>gMK2_DFBj(e4@*93DY7wy+$h>#IpO_>}RQP7t^g z7ZP>ULWFa;;)`>+mMtm5iKPNSpSuy^ljI%muBISk#~={eVzQxjH3)?4AOGKoFT&Qw%UVx|4fU6Fl>!?t`QoR5mb<+{H)W0EmBxR)GRUuw3_D1~X%jwi{LW$E zLwn&h_RT(~IAEj>F4ScA{^}2zjHXGFz=&+L!_)7g_Z*_yvB9!%z1!dK5`>Hs&7sTQ z09KS_!8^g7bos4VdS#nWmfGObg;$tgV=txCY@2K|!50c-?5b}lVZZCd&)=rx(F;c6-NV!yO{%lC(GkEv!SYtD)>gpzE{b+vIy zY{A&ywr?39b4ta?T(kbD#8MBj#jhZF^v@ZSVV*V06|rJ0_jv6EwRc zl)a!3NLAmB5QFhgyY~|HA(G)KQt$~TFU|09$dD0Fj_^OX(nu}?zHFVIU(F#8OYc~5 z1%IvGkPUs|${)L#ez4yF26<lRB{w4@=PG?|;tn#>S-F zA#5^cd!FXqmYFmI*`9@>-cm-5zRq{4Xwh%&gAT>xYntyKd~7Onj(3W>r9KZCBY4V0 zbV-^dljqjl<>ji`q2PoEo+^BI+DECeb1sBa)5^a=h#e4RP2?eg>bsx)(Ck`|c#7U9 z$2-Ic;5jYvV`b>w0?-3eMEM*sRM`SvaXs%De1V1_)4C^(MaS7yi6*Z;rKt~SVpvf@ zp>7^F4cwpUrG!yo?M2@}?E6pJlJ}h-99*2jtbu##R`tB*3Rkp`Ouzv;g6L6}XY2iF zgj$cP=|6W8s;<^NaY)0iq44CIoVJ5%5LG_^YsjqBk zF9=jz8m=6&akN8!sl(2J=||>l7qN02S(>(am|YLlu!~iGZebcOBJm&f(DKqb)e0r? z$jJySM?H{_n$r*fu`hVkvP)Hw1C{&mp`>5S_>uqGp$qf^A=!qB^)s*2MF_bc`pmBP ztI}o&N%9{jMn2|4o~!+x)Tu|rA(bE;{m3psft_1j+U_sTHm7qlQ6rfVZBaU8%`#3@EH!EggMHNALzX{3k*!m~c~g*LC?QdlrX7dg0-*#k^U` z<15*buK|ZQ@xz_RisI+StDp>a>*IkowU8ojkv-&MRaz18>GBCHRw>cp#qwMPt|wl{ z2<)k!iy8{KQTf>%sZS4il0>?hnmpL1(`|Pj=9B#a|%dYCKu>P7W8CWYZ}yE;aWwQ@^sp=gY_d#W1dG zebNW8=~q}A%7)$1qN8n6)xg_w0f9S?s$^~GEF?D4pd_Bdf;;<|* zeB%AxDhWbkftg_v*w;57313Dmqm%jlvKlbLjA{q&0E578pTmwt%oE77ha5MNzyR)1mOH z%(KDOP#UneO$|8ABo|AUVGW4alIL7VjOk>;7=41=EC=wq;@Ii6rLp^kRYxJWj{&Je z#`QN~1fCj?Ty^BJ#nnwZBj|l?wgFP9z{pdww=u!b2uFvwkLwJ;*#}&Qps$>k0^~)? z{he&+ubkjrr&Wo~27`}GzslhD!CXi)#^zrSU(KgwxAyvXGINN(W;o`4@RXQOCER%0 z`k4NFGXI68WJ=){LA;PBOFy>+5bSSu{gPcFCH=#j$4m zGi&KFZt2SK=gw)JS({M0r22*mPC#8`Qal3XJubKNyLDAG^Q(W7 zN-uL`sGqBBSlJWwdfas)!#dqk9DqP43^8Qri6TisJ(vZL}@}2UK z$Z+-sfhru96_)sAW}!1TLkxKomNUBNwJ$626XHp z?H=}+&=Ett0uW*AAL;uXkvhO*)UfV_AcwMPTAWpy<*d#86t-Z{Rf9g==;mS-oEo*x zY_aL&4vuK)WK=ah9`T6(Bg;GmzaH(HQT)ocMkTVbG?HA0xn^2B zzE0JsaO1|D;Eu!ag?Bf;Hl0I%0Lp>6h-X+~>gGtz=1_h^kmg<7SNfbdAQf&_N@ ztd_=teQLA^UV9M}PaOSHkdjI5m@5&6S0 zxAT!YL+dqzjvrcEWsdYN5wXc7^CfXNA$R_BdTSKoj-u)&pP71BTT)RYpF>{laQX?_ z;530gh2Vy)C*Ic$aGg)Mn5VkR>|7{{^4?dZBzg-FIW6FgmCg^mgJzy8#jl8_W_)OE zL1|bA?%ZzD1$$YaZ%U9OGfo+SK!B|SjxP=TWZ+SOd~Yr6{Zp-y>Sp3y?Q{?__~Cb` zUVDVYDmbrlbiKX@zK%}U`knX0qoK8##zTW9Q;CznA_{L*w7EwM_&(+*vE`fnj_3SW zs6`tUoPGebt;-4MDgf1gf|rZyLa{CswLvf6Kf(d3kSrwmb$y3h_?8ks$@44>oWX5; zg9TrIdRk@~C^P_pjPmd{`VZmFU&#qsm&~_r{#&3Ia|H|&;D^ZcrMl&{c(yWnKR+o% z)P60g5d-)np|7Sn!t7-5S8HhOX|7HoF!i6_DlJk_G^)xYs2zH|4Q zfLVyNyuwRoOFwQkHbqd^9R$qqB6{rAe13DEpQEIS9(8ZSVtW=IVfrLIR?m)KVTLsy z@|;W{%MD(xx~-3vA_=v|d+k?K+QoA;l5%24aVh4&xOS!tMK zpR*H=zToij4@!Mp?krc}IT7ujw}ZnJG!ulKN;^k$8U8dl)QC9s4(iVOVNU1@VXc@Q zL2PkJS#^XFa<#K9pYXVmsl*fQOO|wLp;IdoX8vN{*S(eYeLVNV#A&L*akCUJ?z;!D z#c7q`-lPH$xAD3sH|DHy#i7%E1GW{2&hOArqd*|TTU-hj)I2H{GVWUD6zP4S$>Ivbj3r_p&p zhVH;VsV~Vuz6|ahl6hY|2MRMc9tNO;q*H|3F$hA?d@~#jiIckRxPOeabgYX3P8UD? z;8-qpz7a;LNQ7c+@@`D_60+V07Dca)meXYWcung(tDT@gCZ1{>5yUVrdRwcOTGUf{ zKhElvl?nm3o*9TJEm39|`1i|(lR4_Cc@KCP;8)tYuSGu}9D8t`Uq3Z|(XUg~N926e zUj3z>L+NrSi8fsM0b9pybo&=76Io#~@aW#|S1@bskMmfRmh$?zd42TJ31nphr)BLdG7xW-*VpnjHqn|rdL>mqmEga z-#trGzi`PNyHWuNSF;I9x^8~T$0yO~4f_f(r2(|>5W4CrA2I;AvH>B8Q@K19K!5`g zNd&=js%NHhPRQ=l0GsI$5`atN2VNnq2ZUn_;n+hah!}!!juP$y5Yz6ooPwV2yE_NP zg5WZINcHs^2Z7xSP@gfQee;mVBcNA2&5b%~0)+2eDN$dTrS@`MvM|C^lW_vEx%T7t zfmf!4GnBDqZdC*KHZ$yLQ-BAUbks>FfMPCna0_XE5bsfTj0zUB&bXV+2%MW{1rXR7 z%bRhIJFS~%C@}(+On#DnU>E^aiYuH1dRGSiK7gtjY^P37th|WBc93n+n4UCY`mJYl zGt)@Q`mv+U@KS)}>Kj}G2_V&B*dGe}<0-lI=6BMZ>UhT@Si-)U?7zDogf+bmZ$yZg zJHv|GVmP)t0jm}?i4nB-p*jM=*KU75wz)^@feuy+f3*qFgau3#`4=EAwTVED!n^6ElYF_gGa(v+)A?A#+qvuU8)g ztU%A(-qM~&vb^P2)dx$NJ5Rqar5bEeuKZ`r4UjL`trNg+VRVFGOux0H-&C#mlgd(4 zg96h<+vn5>Oenuin0!IOoBw9z0XC0iU!IC=5U=&As*FS2n4K=s1@I@E3x%5a{ zpDYlHkrjYFjxs%Z!^Iy}zP!Q!@Hz;B3noKp?)3nGlOPZ(Kk#_^K7I&Lj*p?rqlbIF z4kzGKNhqE25VhN>bgz|!3tIr>l>Va}hISkz+XKLb7>K!>N;(nP)LFZLqZE%t=9s-& zfbA)VP<7sd0T|@DyJfy?NZ$OS3;F(wpj{#wDo|VcG3z}OT(}p!|I1$^u@~ZD_ry`g zJJ;N~Z{CvlYSdHT4KEH%O|oO&BS4myG4~Vlxfawj_&$FWXz04NvC3Bk00L~6S6W@3 z)UkhoL{IBG66`m0z$Bi+G{XIb0LU)#6;FJz7c>(l_J%+Kt6cD&?I+?LR2Ptut~vF@ z1aqL~Q(()Itfnl(4gUOP(h3o6!6}lvBs@Jd8P7ljr#%&f9hsPSZw&0T1RoId^NIg-^YT)W;uaVj`6>#)=tzG*1G{B>b0R61dk1^Kd z!oyE{KPw(e%MYjKPwrG;p)P**ae^tcJN1h>e8fNVhf~oy5}tmPiDl%ErOtCS4A>M={^*DD>*Sp85(DAI^uIpR@*MIAZ z3)6pO(@l#n?hsz5YQH7723@FLMzdUu-wl-=nh5KstZF9=FGH`sp1|?%f?NK~IzOzv ztkgb=*B=TGw$Tw!yrTU`OOZN}Yr4&+ub%C0io~q}xy1tQZL$VN@4$k1u* z1ng-7WQls=M*Ix$*)MgDIEqAAcwC>QvnPAwx6?^MhpOyJf0jA#s2H$kJ({00B{6Kek#oDgvJU+r%w{0Rie>)bXa%&R zYjd9dw{y7*Qe@eP^qD@@CrCAtJ8Sr2?Tb^LsS}sey+JM4jxSCVukb^@(u@+V|}_=@gX8yMVVI}ZR10XckIU1 zjv}gH5LHpK7AMsxyNsvlW&}aYsfRP6v2Xu{(=lkR5{HxByYQoNcRW=DC6_ zmyeco(^!G~K-VaoWN^oq(zxpluf+UMj1rm>(C2GA0}F!Bixnf5M|b^u`==IE$mh@R z^?V8err6f;c@%2Yb%@ol3!w(cib9B26Br!BYS`P9PCwja0X5V8TTdt zXCTBt=!58et1h_#1fbb}ge>74jPJMHZ?NK^HkbJ2I3X22{pY|jc_T0WMtnY+ugtv5 z&uu!H@op1OUPiQ2E60%zdxVkoA|2YwE%N^NHOWyxhV>uOdwjg`LCAAK6Q__{vs1Z` zAfIop5m$Pk2iq6ut%%W;AOj+=s%p8AR=PCRCy@MY!QQuxEFF#-&G3|e2{S`KzH?cN zw}Ju7rFd>e`@z)2qzZUt@yEQw>yRj@K4&%O9TCD`FexoXEdeGP&IWpp#bTW1yjnz9X` zs8nruoai@R;OE3LT3BtWKW}mwasW0lt>EYQUD+pVaOBHuz4VzH(j z{3|Eqd=bPTu~~f=edZPilAG7GqRG@RiU7`Lq8LFU-$T+z^V$?hXm;-A0}RD;fGZyv z+YM3)e}nBLhL@LEEJW#u9V!6QZBv<*!uDmX$D=*WgAsr5en{GCJE(?xfVXw{C9rhl zZmdj@V`57J6b9S-GBj&N;wOt$XvY~*3-kRDS}im$HuB5eQ#4EI(a8a@CT7Y-PG=$` zV!eFv{hn1v?FMs7MB%h;C?Ti_Ab__emSVGjr~Fn8{8J{1s{2lT;;ORivugO!#ia{V zoB35`pa;Un`X3pN9*KZu(`M$HGR?@Xt<{t2tg1OIi#om zHT9o&%ffR13=D}=0NiU^(%1{m+DDdT$qfpxn017wfvTNz%JcPU0;5ITPwWXo%WBur`4e zgI}|Fjk8QN$9KwZUaH}HgvCyWIMyuw)aKl_J-4j?M!p)zdd+efmmtr7o$hZ#QdV-^ z0$+k(I!QV|+mBX}SHB(P7Si&@WdK_c$}>pD(rx^dvbRP*k6byO0WiosHn0|W(^0W-7gB&5NOlfnVGW8%i+gPbJkmPM@$n54fVc6|Y! zk0=h9eyUsY-i;^q`48n|{ue#O zNM6B5Jy`^ax>Qq*5U(B-;YtPS?`R*Jj0LqPDvouc&yWxvw}qPnEoeNBRPTlQfeZM^ zy#J8PHKiHc0e4yJK_` z#ZIGXpF_b&rns-kLxwGzwC8(!4cFxV-U7t0!Tak2$vA`RoKD*v0q;lIuS~QK3XDH` z58CqvdP()GT3jLpe7pmmvg@8`bqwI~@UU1*g!v-xS|FQbuX3eK>kqpT-DZJ3oCh~D zt%pD{oAtY{*a)`7z0S|kI4HWZZeQJ$E(Uw~Ip*_Q=9}2tGqef)U&OXy0ghy)*U!Hz z;M>={F7s5__$`Xw%RF3n@Gc^LA{pto*edyea&WTci!}&X)9v2#Jo1C@;hf!R1YHxa zN|rYtV`M%`jH%D)&I+o8Y1(|4?`x>ofN}W$z1p{8=4mVM2L0R5`h){|aHM;9NADyT zlC4+K6Lsa%J=ROer+?Pb3e2O&Jz&Om4#HgJ?0CpV9rb^nH|wavzS$v(l5HV**R&UE znipH_=f(QfekDg@R$-ZI7no|uJ8#YDFC*LF{#Ej61exy;hAX1&Z`#saf}d^ksk|y=DH|dMD z(N`df4^9+y7EoDg+7mlKu0tn?-Hg>(zE}=l3gtPgMCNR_m6(HDrLlNEb-6T);EUny zaS5Zgcyd(4IOxHX0oH5u#^h}$hT;-r%q+Wzugl%B?dBfd{HZHZ{Ib#XpA@Kd8w^{Bbjd*ax%8S36Y-GNpcYA2j80oz6J9W95t_+|APbimwU6k|Lk za(sv2{+VV>m$={Il{gPTDbPz`0VoAto9YO}ilc;`2|&spTd-qT5=8 zZtZW=6_wp^#I*k%)d~LQg{mP9aMgBv1G4fa0K=&1A5EOR^erXts%ZoP>}COVy(Im8 zxdmIV-HxC7y8qnGYf*(6F(fs> zWxY8v)x-7=I!~1kro{AC&quuC3b!$1M{77aHsI~Kc`+QyZ8#EyNN_jmt(3y46NeHB z{Y@y_EGTAU{jNA~11`X?PtSfZe~l~ADUF*fV-&o1DcmyFyz)+yNv-cg(#Bdg%Lal+pdUw>l}PY)+Y$B!ys_-s)NFnzJ$dXIzl zq=z4YvYn3UN6u)1(uneeur`C~@E4PeeVvf8QL90-?iBhXnoDp#cSRr|n$5=WqO@@e zRWg_o`WC*gRWP!BO*MO`W>#_0P1||sS^$urA31W~(`Rg@k)-E>y_Dgha~w{7yBj$&<;o*>Nqgrd0tAv`F7TxDO} z5G>})^hTBw5KRsI)6Ap^tqD4DRg89iY|{b#;rA+2Gdt_bIL|_w zELe`a(C^+(WF~~sgPM}x^MFp{y>cv0yZ|dmo@^vv01}k8OH+_)Be>D~GQv%NmCc@O zmFJYWh6qR%5mJP+UE;)OAdU)0Q<}74s)m9ecX5&HrZBEi@JBO^uge1D48UqVU{)buq2+e7x2g*6mY`F2a8_oa@#2@iTP+quhR9KU3fT@MQN zC$3O=M5I9b#MLtFGHocb2$)M(z{|bS?KrWn{>Acb$aPbJ~MKH#;NL{BG?5DdE4VsM&5Js#N7k zjSS9&>u#1F=fnCr{zR(rvbrBm)Bh>l=`6fmLW`H*8^;`a&}O8u8FGMOI#o@Mbk^=9 zWs&;xzS{e@d50Y5ag+Z%de)!v? zeA3nDRY|wRS393A+sEHUN|`WQ1Rr7OYc~QG{{S(b4(u&h%@;5%zS2uX8hlXaLbh6k z!~nGMM;xb!K9HVpa5#b@&o8xm)SPlEs0Gj+ZY6f_=QymEd#>tL{W9M@FY%WQe&x;9 zPeuI=ebT!T4MiG+L-IJdNp^LN(~)A9AK7@El>!;8@Oy3{!>N+H9TKACP{5SYK)k?1 zH0-{7t4|hczn(EsloOTkQm7H9WEVze7}UCF2ueKzCO^JvfVz_Ur;7fq2j;}C*5|OD zch|l^Mt3?-pM|R>xzH-pgugCZAbbNFO$e)ffwqIJTXd$DZ=)*u@`eF>)KWs_0qH*HAl8*eq zv@vAAyrSU3lw=<(1F?1HGtX)}ROGno1_aOqstF{p$%!~^&79M%TG=F%^ZhA-p0u_Qi+grIORoeY^yg-ZN2u{&!T`vvU_G5G^Ok^-+jx zKXCpJTxtmGFJbzhQ*mJ+ga9ZE(0W~WZxjaVKO3 zKz%^aADa~>f?fodl7$sbCKFnUl(Mu)tJ^UBv?m^-F1j50)y0b=NvdyD08$c@q)De) z{q?_TllcaCe0f%qfd3GnKzl*lr>Yiox|67ysk+#<&v; zeNGfTXkqOU$>n$T z*^+wExdG0mDeEd+3Ez5-9c-Ek?J6!Cx`OS0v{af-^c(g|x)#}MB$6k${*gedXH*dG zk}rH*Z}_|*=h@~=84AVa^EDD9%GoA7ZR5YN`5AmmbTdE&#d2%s@Y3a!L(F%@2U+42 z?k^9p;cw~ch^)&bSLez)YyKB#Z-4{+0!f zCH}^%M3Jqc#!5+~wa}Bqj_Qr>%dQk7v7M;Q86947%aOsWu4s*qE-QF55hL2zq;4ZY z%-WFi?td$eKKga@S1nmG;_n0F_5a|W5>~-xC7vmNQ%LiFX~D!~=ot>OT7b=RU5ZAh z{Rj`hPJ_q_JkfhnC;II+dsZj8Gs z{ReMnzUcc+q)7z8vQXolDapEt{Y&^@3K=aU1l#u90eBC(ve|US8E20a-nxw?#pjunq3p+c#Jq=@>a11lxK&f!!I3ze^PK*qB^H!Q zh}8d?PLJ5ZU8o^H_(1NDor*Guz_F19m8{=Au)p+;|3m=8>I@=r6e|`ine`gj{`z9W z!F|YJ{dvhq8XwNM-EiuiLJ9w01pl|7_qLG3`PSQJo;F_3V!QM(js*G+6}HE-m#jS7 z*3gEBWoX4LkC^7XsYU$xGwKMU{hj$tRp!0FY-EQimeWG_Jxs%{6ZOQR=v$Sk9yKb9 z2Ys(i4s@Kpwmfn)2I$ z_Con`?L4w%GO#)3&`|H*I;hJA7;9b&V&VCfPE0?u{d`c;V=R{3+nsfPv|6Xh#kRiz zzZ6G@naBXLGzO-fk2{0p$-b z01w}+zC&i+Fop=;eq8NaDwbV($9(cq=DT#R%sYCVNC}uCTjqy;8yN{S6LPeB@V|g&268{(_u1g0z68^G zzoy6DORjX_fJ*B}?;?IEUW&*I8;cKWaaTVW@jLef+Uo82lNw!QWx-yy@ouBP#MZyS z(=r=R*J1uUHdK@@c~+f9(wvv-%>VN2Lv>=B>Y7&nI|~Q)cF35g^7KvrSR72CB8VM! z9aN(NjocGgM*qO%u2Z!W0WZ3h0M0ruGJnP?i*bb4*i4&CyO)uqxsisSvP_)_ebqoU z76Ke&Q}y5VBXBlHnG~}0L5_97C*5JK1G5W`*P>G6U$^N*y&hp&bR`dG7A-q0Iw7XW z#;%@=pv@PctJ|rpXoth;I8gt4njo0Fzygt;zF@u-f!jOf1~-d*uEL60yY>D6WS0hg zX0ILJv>slCEb1#6sgl(Nz~xX(lgppI{8~d?VX0--c%$@YV=DGZ|9p#vK1=omU)bCv z@);5vrWT+1`>TMEngD?|wl(HN?~LfLdF8YXsvuwNA@qXB2PI~un{hOPQt{%w{hk%S zJW(>vTcSh%m_l!|BzQP@v)>HDniw~7z#D`~tCw#2zd0Gmlgm+wv-P zf$@72$Fz*Nc3ivT0&GC_LlglpULL{KJiLWpM#;d-(GHjqJ1st40$yMW>)a7=l{H!h zNcx5Mc?`1!@lB8|`g0bob35$iw|S3-z=m06nfnH#PTorZ!|Act`(M@m|9&LJ4^Q6~ ztSF5C2 zMbW=SnxoAdDaRMQ{Cz40$;q>kNS8zWNV6@F@+hTJ)8c@$Ok>)?ydR9iw7>7#Rk3ib z8k99{f!=C-g+mg7-<$UGlNBOa_jbASTki?q^hfG0Zbaj!B+h?v7fey<_R_iBsn2_# zf5nU_Y>INEbvPT5+NGc(uZ+N65=FxxhK~V89+TWsCui+F1+BLK+;z0Il$F@B86BGm zC9n4vBSqc^Z2)DMl+VEuYM>!8!grrh@y*uCJv6u#Z4rYI9hmfiwZV??kZqRUx*lM+ zNzk4MGAP`%N+#?xZAKZ*$N7A7gjyGj6t}d(6wpNe`#nPQB2Mdo0q`MI#J~+{u67fI zT;?|w<8l4+7&x9V8&nR=9){;)9AQRpsJyd_AUKCl=;{5eeGF7yiqBj8-W$icAjt7BVQ$CVKusWp#y`dU29MT9xWe0E`e!q5;0>uZTL$m|=Wy5&<&gpeZd4D-z^yZ)| zYji3>)3}7&ju_azmTweMYJU7aM=HReMzZ}ww(KvWkkD?4;;L8&f9V(qdFX{F7&PRtET@`&trvZDZM8~5X^V|f0!$(y^@Q{X`Pk1>`UR^Jq<_g$y;g$!QM)Fpb@!g# z{75ka*u;7SEA);led-3LX=9Unr#$sr>TV*DPcU?Y^gy~u!e z)^#~!y;jnv+u~(%*C@c(#LjMu#)gdIfU|6%-j~UOv0wvu*I4oKZ5}xIT;gZaiD{|J z{HXwdkQ-vEpSp2G=vp-=>}qVn?QLE5B|)nvVEZ9Echyc%{oh~K(`ZZX#-GaC`5_ z3>e+@+P`dK0Uuzx-zG_iZ}@edmvypd=(&ROY;6aa2%`fUdQ&=RLp(t(#VC&p5syaM&zn!i@SHU!C< z`u?k*NMQT0f=Zh{+qe$d4;HbktP54wFYWgoqZ!MK&hV_rKe z%==ZbF#>;mO5hJ6iyK{_-_11rS^|X6xbmUshOmp^q2$a&!I9GSZLGew%%<*by+aKa ztkrrnXG$78GJq`pw~ya-yLObt|0y=mzzK)za3Xo>zU2j#<%gEyDVnIabgAUZ-G>jr zin7|JbEDwAbr2k?L-bF@$)FR<$d`|nmo~W}2V2ke9#;bSRKMzT;48X;2jXN@KqW0O zT&~qqInKBZ?cJ7@%dI>9bC_{b1eSPc+y~~_GZwY_x2qHYC3=L*g;z^Rtue8f%hIf` zFLoYqXYGBL*#t6LL*ephGBuRr2u{CXC3q&<(H+MTkFqhOnT(3`;=5jV)VTb{ot^YO zkzouujvIz51L0j_Jpf?xj-S3|SBC*gchQqeoGpYgAsA-=g@QVk9#-(AgIn>l2m6bV zUF7CpU$DZ>&vM&@2)sp5EO%QTC*?YoE}Bu`hiqheI4~5M1Wg-(Nu|3JrP(%mLEAuMCqp-1nC!MT>2FYz-*%{N`rQ!^- zx*J;oU2giUm7X?esK=*22UaUxZ5 zh#wRv@o)Xt*gOz^x6vZ;6LaSEM$^$a*t^z|q0tCA&kR-*BhYrs@jPdOY#n*l1K!#x9HF@K=~-YG z^7P{ci8t~`lwi1On)DZf)~*kniBI+u5<4K|{u&nQ0I{^xEidPDm^8^>1e>ucgm9Vh z3{;8_5x>HesVC0AgJeZRV|g$0#_)3a*#?MKFs5`0UMIbAb{N|^F6oGbJ#zkT>;&dW zN>KglvcoqlM{9~9xbyvO%MJEHhW-_;eVQ9Q+2B!RYRq8|NtF_KSsb1);9TN`O+l6g6VCZh~ZBmkVBH3MV3gLa(1XJs0wEj|4l7mSh6=VF#2Iu*=&#T z0@2;#BR(yPhWAcv_T#-D?K`YS{7gC3`xQfrn(z>Io$$Bv>K>MYbn7$#945-GNBK85 zkp)OaSfS@;xPCvlfEC>84b-?cMbh}c?e4S@$zAH{nEPj5h>aq*Hk$h26vEv31heX? z&9Cf1vw;*+*fu#r!lPm-th0TPRv?n@3ru)$9u(Uf4=U4|++0C7Q$%iI9;8PWJhybtc)4~(B$OcUG!hWYyW&I{clk%WbOy} zInH`SGHT+p{i7Lq9Fol2`-65?;}wb_=?t@T>K5n7EmXcAxAcna3;d(j&&{xal`iLx zq}AYGwOw~|0+j(t)D&K@#oz8tBz<@?_w-}ZLwjZxG_ky;jFq;P^lx(E}1 z%D!UR^KN&F-wvyTVI#@t?vcRV;A*zm^ibjRaaD9?Z?9bRUf?5vR_m=Sg+w-W+fiCp z&6dHiR}}Q|Y}G8SsPdDTQAi{TVG?5N>QlLDSjpw2A40*WEq-9|&zZXX?=>qHhdWr1 z+-=Um7Io};>>7ia9Q#pHXH%MMpl{@;85KV`!5t;Tkrx5jHN&2S(@fug0U_=H_8w{RAxl%YDg9wo zV4roJfwz7b%C!M(0Wkg;nJFo$)MhffO+GzG^PsB6-r&}Zk+gTpPq^@yf{M46T;>4* z5U7OHBGso2lI|W|Y`6HHQ_NpI&sn?n1fe_!RZaMiyXN{ATeL23iZZ;Izf{!|a47y* zg1!V{@?1LdWF>m#(UE*$=K$kcsFD09C^q-ggxldVf7iF$1?Y)z%?bJVElMK@E@r9{ z&p#>-W#4@P8FIT1KgR+|EzEJHPjslBNs$rG=^us{Mn3(pY}t!as=nd^5gcG`1j1 zIzdn~6y&yl?GuiC9q7F>t@htb%Y1IMz|?){J7;- z?@IIgNX1B!xA?{n<%feCE=3ZlJmBnwh$H=I8(i>&)OpP(5yS!Bw80E^F}?9Xah0C3 zUegONp?F4McLA4FD4~x|QXek$sUxRyhU1KlON_fDWCQ3~uwW?vudqN|@VoG)ZBT+E zaL0<^7sq*kKP!y8mbYnyB=VPYpo7#7gCZf%6h3N}L#cCT zV#R_b|AtfxHl%wR3!$?5+HppA+h6$^#X3dOvIaauv8}n>wTtyZ+lL|UaSBzOE*fe5 zRe+1%935kx(rW$P;DIYkCdxkW0^|(>!TdrSQ8+lhy{>AbY~?wVF}eJ9&`V;n5q0gj zToAG%wZ#e1(@7ukQ9KT_>#aG!pR0p5@4%>sSGM4IyzJ;E#dwRtuMB-i#60aTME-AS zd?AjOi8pE;pnmrea(g8R>coiU>`9A_J3uv;-rzDW|ESRZ{69%&;ZOG)xACL9JBFF= zZVqFZ?%1^Ho*5?2VVYssbaykINA1TbIb|Brd;~+oH(*ZI zezkL+JMgYceH3!7G*dss9#YHXy`-tIi7<|soG2uOaQ{Q2W#{HNaOLz=HzwOE$_VB+$XF!?kY1yz%l$Ehn5 zE#xivGXFHE77s}jh(-oDR~!Dbr03^BEb~{#(SXgao2;{>FWkk9)$8@ zQ>0c9FHX?zfKf08_GIYT?Xm&>#x0Q-81C!~?gIcU5K5lL5cv-sIfi*A&_sj%PwfNQ z+PikD8k!3bWVIrmcU(WO;73?+4hwc>EF?gZ{}>P1ViIS8+^ zA_t#fID<_9?YAs#|H*SsTwLjxx;3|kbju-gfr%%Jr|dAH*LBVwDP9=^D{$s1TG1H- zDE+8R?{-D-A`~M&z~}5C&oMzs4|OcXb0f>y;#ACMOI<4x_zw^Bq;xez6LiM&5vSDg zya}~f58oFs0@sSm*6V*8&fxy))Kjx=&F&jIj?96FJJRK3(*ba7)`ugJ;2B#4wyBS@ z2@G{_l+R`xN6f2gq3O;qqd~tsH5c(}P*ubC$@s&68%3MvNsp~~nwn3WFLg+dGOv2rfa#oiHCFuYl0# z(K!?PgYj?(vKWc}rwZ=zd#()xGC+O(4KVI}Xi1-~>iWXXCDbb7wh-ExE*qEIf=uJ0 zGEbVbV5m4`y~(Pf@z|Bc@r{!?+Ao_*JB(ySBS86wN;eoLLK^W_kRRDARp^{%_@3{f zwL<*m{V%hZ3>|ksPWsR{sk@G04!@V$n+zyxj?63M3Z;;9msHJPWB`cIgi&>Q>4Wdz z&OB5|&pcZEqKS=(k??Z>sNxg#nJ#*030M{jB?t9tzac(R%}W)$By3Gsm4|HBO6Old zj-*~f3kFT05D}-gslnZS$fWsV{;Y<++`3zEBWE0Yt(MBD zLSxZ?trVx^Jb#gq4cuM%Hm?{G7~VT|uVu^E&J&|{ojtu4W+l2`G@Mlrq|*>P4Y~Cu zmOTSp;;jDTM|8uv2PZMF#`c$%GvtOhyZ-OrA4L^{$iyKA=I--AI0rY$yyQ*0;6#wp zW~lWr8tmeG9=d;O3=H71U1qFTe5Ii=F}&M4&$f?ew~DkK9-pQz7>Uih%{@#5y`XK1 zYmEmEzJfqL8WHoZG+6NEjS5Z7V&F!O;w_%;+xE{7WHt{Cw|^X?a5{k6lKV!q70-d`1vUf`C z3;~XPj}h93Ql_G7K+)=1@DzrhsE(@DCMYc71Q@sp>GGT6PZYiL7g4HACiyj|X zGBAJY9sKwGBFB5mrcl;GhLSctdROOYCcm27k{hk<=9gviYE5 z-in^2vNDg=pI+()^Ww9^z=Yg^tpz5S+|oapTZ%k&KaYpR(a(eLWpGYox{`Hscx;)d z-N~z&I)dYrfb@zuC(019JrcFL%fn9|Gc&fcW42_9&+OB;y21G8ok}KDrlU{%w2Ank zdk<7gmX+a&^eQzAsUg$lr& zQs&LOs&&e8SG4r!OdsehvNs%Y0Xsi}!s-fQ-YMCP(VT}vOk{GTrj z$SJ!WZ`jn$M)60-i-+WN8>MN~#mi0hqdBi1vO!p11YrIHUupWyAVh%XoBkMN;j5Ns zTIv&eXOX!lNj3Y!=SJcL1VQ4bBWlfinn2)E{2qiu3q$<6I`Sa#I>nKy3&b6&)uq;{ z*S>jfkPXL7SBHCx;HgCX)`^vK5fi17%7P;LlCb|tn@ zr=g)v!0|<7qjTza0nmhUkW0|X4=+W_e))gmNNEjOLZ1UQ;i*56gr(N+%apnMa9}1< ztCQ{Gg1XPT-QnFU4p!;8lYc{p+T?es9@-`9NlgRw3{}gZ-0VPzopT$N*aJ~f~703AA%E^CK`v(2&(t>Z+b zr{~`WdTro2$v{OjvO$f;05WP*z3|DhzLK&T^*sdWWBm^<^y!7iP&w?w*Ix_)vxC?Z zdM$v6&6RX^)R$(l1>sqb&NB}c#(ootlCTaZ(k@_JZhwC z-wLX@*t^Vk$q>QgHVqiMw=LSoRl96wIT#XlQz$keZesy$Rz)|;Kh*^OqTMQn*VTZ@ zmGD)F6~C>FwPP%C=|Skx(zqeVE%N~(!KGV!b^qb9?|ciTS{YxzzEM3m{XuSHs=jA zxdtHKDDX)i>e4%CzPn5Bs>FZcF1*(&BEOz_FD8^=q0pmOG2^Gu5WC%|MYMSk)+MlZ z)Aso#jQXnKiugpHK0*1`_Km}z6vvenlj7)3htu~NKW-g`CfP6DfJsqxu@WD<*M>KO z{_N!GZq?|&(jbM`i8lJL%&s{kr@TA*4c1)U!kSCR5wAuOBJA4az&=PoVtq$oCT8P< zXPFSdJfTwS-!%Hq7cn1qA+|BIj_+^=cMgvd%7XiISN@tnuM#0rXZ^^x1ZRca8vVO1^`ODW$ixmpR|76-qynd)XR);|$ zpXuwuEYF+7+RvR;uBCD0#a6(l!|5>~+QgNOW3J@d6IH8n-TJY_18>A(Xi_(6t0{l^ zORX=bL^cr?q{^io--ML0srMvLCT?EI`bkD;FgQ|yAN5NU^u&S0Y3ukGTIUZgEFMNE zdF>E5-W5x*kDi`350Zsg#F=-%bWMRE0EXO3ya_>vT?w>ZVFh*Ry?<&TSo`dKp%=*e z%JXdcuU!~V&j93ebt`b<|JaAFMKdsRW>6nFNn0>x@)j(Zce#M2H>`v7{=gz0xY9Xo z@d%ufSTeao9&`%IR}F^rTCA1r`R$kA7`57!4UEWdkE)rEKXSS-Cacz-SH%0BSr)dOR_&G6O(m`bDNm(7mwTIAttiBrqA zfstF4OPcY2bmgzZ0Re(?HbA71C@w;4d?Rigjpgg#LC@xY(_N)NxbsU@Hn&#A*C{oF z6i~9@2WBm*=i??Xz`j=!@6)aASpK{eN&clL&RU;e=jLpvid|w#<61$vgjGca1CHfB zw#GG7HnCD|Hc1TUwz-iO@`&|Qx)pP#67SqDSK=GU@*#@p^EvX!kBQ5bzt(Tt_-Abi zrDjl2D(Qa0;X7HL;KXL{hU7%j<)#so(2nSTsfQLSh=Po+1U;`=f=CNgryMMxX~BE= zjOJz<=tjvXSQ@T0qBdnbzO+?&(uJyZa2X>0yn&f?PJ+EQ--F-g#&w%o_|I04+2O@9 z&#XIDcu?&Gp#d$qy|-g9GoGKH_q}tInEBJOY)1j--N(NT`iVJ4zK6<5xIP7~wk|-X z7gX?%ajGicI>)aY*??u&s#0J$!k!ZwC%%5zFqeVTUO-pQn3Qhb6H-zqu@rb^Sw%#7 zcdaVYZgs(9qYYqd@TsU%S`zyn@W~G2YBVIx+?Lbhr>FKP5sW^8W?s)cY5rT5%10V{ z=qny41V_^Gby1+$^_p2dr?z>T&uvr;nKZw{6%Sc4meoe!sOjYgHVi=0Y;^_K6Sk2} zJpTn!5hcqzLu>M5K}q?L|3jUH^l9+s1U6r=SixAC6U(sQcD&chz%!&k_0)^1*(gJaH;VLP^!| z7e5T7VGk^p832o}`(J+ZCXs8jMxxSFEyk=NT_lRuE$DTol=Y|W4@kQ~XiAF4mix6J zX~O}0#uyzegR8N%?`e$tZFV1<>gCXWbdSoU4XvJi zMxQNRma47NPD%IwE6&yoxwm+~v13l5w`p&FoAu2bekoM;l{y!R*7*&m%lvUcg&9io z%>v7^s73pvat}c$!6#OwEGBAH9Q%bocd%X8nh>1BJSn=}+9=t4h;_1;kFS zkbUljfVL4vFuGN)*hzc+`B?~4Ng)vDaFv-G|kM(_eIJe76iyl>o*P&CYv;BFVK2XB*06$W{fKL~J{E|mQqe4+Pv{$*s(-EDgV^^eUqA83~d z$R7WX*M32UGPR1}Sq2>GBHfygj&+e*)z;KQ&S)0)PP6D|xP6A`B-VRKvIy=yy(Y#& zfXH|IcN|P&5gk008GCoTt7n#xKhl+V!CmI*@q|oRzp;SaWW2AkH8x5YHX7fqv@Ys& zzTB;1BEQ%6q;}>pCkdSDR_CU$hisn!K9^4<|Cs$#oa~TWsf0Xn?|7jA<+L zyR+a-YK)WlMX~{~>V}W~7O{!17wyiij3drM?uASUe&9TyyeI$4{alUTe2b_lBv-Km zn&I9M$_9@;;1L8;QG@^YlPIosH%S^>gOlYGr;_x|w27!8*-*&1z(fLu&L|e}O-1SR zo*`yW4G3$epor=Ucge*SH7Stv$b&s$s?aVh$lj%WM*^oy^%v2-$9b?)X*PCvO8~lV zT|9kN8s__4OjH%zQ^Q0zeqtoD{PG-|GW||a8Yr}^PU)bx23LTzh4`b+mt>$f1u>xb zRLaw@Fo7XkqhRg(up3M6)4c;6{tHZyNZ0-A9K-La6bUL7gWy*@REIc-)U5z+#BDhK zlbv+hOkb(MotPiw>e9&l=`3`^sifDuRB=!f{xUyk9|52+6U{wGa_f~*%P!`!zcaLB zAHncVWUr&NB1JjYYB)YRvpavQT{z}zS%)2h-&9IC0%f8Lx77)61j7nd&B1W27e_G~ zDdRA}phW2vhl&qe4bSjx$}}KpV2Pp-%eOV|tzch6*^Hqr5hWR3dJ@hf}! z+U$|lExwEwv1b6zlpvmlbQ&^*J8YJ{t~tZwWi@bWbK8{ALviB#8#T;(iKKi1&tfd5 z?wK=?s&7n&nRR~qbK7SUZae1Rtxg{m&ZZs&NhvHDB$*m_6H0h zz(8h7brFJwBsnnAQ*&hWvyzyX<@*Cz|B8?Blt#sU#KK7@0g`YkKLL@*NNLn2Y}d-! znC)8EhMdHq^!5Kvfg;aOj3}6r8pD`ShCUC9gzItOqRcr<#0Pef5gTdhG5z2JxxTHg z&l`rhx`vhEQt$rFNjR*aDrRc2;;ICu;m)=Zn+}XXAj*pFzco>HpE?O8%=!cmys4nu zM52Q9)8CjZ;@9AJ`v2+;wRnNUEIlaLsNj(Yw<2!u!y%IHy~HM?FoN`rF!#~xu4SiN zIo(`N%E{29ACCfP!}>&;Dj99{2D9oI<${u8-FIh44Qasa?w$XTET;*rc?gtG1afk* z`EJbaOMDJ-PFL>V1BQLK@8|eyfL=|zV-SNCmMz1+N(^t^H$g>r@rMV^eQI!8mp`El zy4c0!Vdu0Q#x;EWN>slhDCLC-JTsqpxF;Wq(*k>F+1N`9LX4-rs%lbTsnv_hkKMcw zI@1Y^@Ep@b$$!-l%@cQ&RKNFmyj7J@%M@<aW8@4=xw*eneNDs+l zq#=B9j)ew>E5GE`Haj8NyZRefp?vsRR8%WZCPoF`MvAt7m5W@?cL<7jN1817T;@$b z1JeCk)_KUYLeWk?M;pZ-8g~~-+DtCJ_^j=sftWN;g`w*DOA^u>tu641kI4&M9 z5iyHR7qGo>g7oj*N=VJnc$b5U)$vgj19B~1X+EP`!~SSRl_bnR)My*l$b9|`K|j6< zaSBc%%lD@@q9j-_LQzbVgWciHDp~7Ke#`-JqKT40Q3vbicGh1|w%k_~SexwS5A^@* zn^5X^c)j=sR|Tn=jQx<;VQrD)1|l|5ZSk@%D4F922cKC0BP+qT3 zFTcoz^*U~%svz@nBlSvb>MV+-+#VX z<#6)8s}g)gttB6L<`={s$lLIR|MNViO^DdLN7sn59P8?Y#sdrwBP}q1*N1?aO8vXKyO4g zYr@!lnWI4W2%0oIa;W)*ym_iQaQma6%8S(!YH%%MOiiJUG!p<9lhyp_M9Kah)ro#+ z76>Ag1K{7*^Pymyk+6pD&HBq9aL;R=Z4gfv(zbQ&9+-O1l&?6ziYs-LM`{5%X^vhX zI4dP4EB#o`m|!|9{8KQ?BIhH8E!gj6tEk~8C|jPz$a>t;-0{DyNZ1KZ&8OYl_n*8^ z^kqK&P!|l8>cf4EVoi^GRWi9^sm5)>V{8g+XZGiv^TT!?Mv}HTvd!LA7rLO}ci-II z8jGdrT^d@;4*dFHsT3l82fG(-bM9~76WfN;0<*qGd;*Hjq(|UG3<{Bj?U|C?QqTD6 zyqRcGRulFIao{J63V$V`Lxv?hIE=5OhB16D?#S4ha^epF+Y0#D@O87GKz{#%hssXRW2A9(reQ<+ZI z1pwrsR@9I7#ROcDL(JFpJ?Wm@H?r*)9pq6uYQDd8z2A#CXEseC(jE-b1$%)5bl`D@Ah?8oW$J2pf>q7{mrU|7)utJVQ^)-0-{c|L zjseQfeVw9zQY7rE2KKY>;uj+v6!w~T@VI7^vUhk$W5X%61l?>;jEl<~%{47h(T6~F zE|o(Tn51F2XZ)qRZDgeylNy)fe3H#09|Eo%$#iiPJ0E!xWk(N1RUXvLjv^4IO#lYh zbwBL5(!Y9*`MOda5zftkna1~A=^D!l>?~pBh!Oz-#YFs+@7Zj~ltZ*BFW3T|0=Ab2JuX^7pajtz z7@^|0L3WDYHIc4kX{8g;-}Z&`_YgB_NLn!>qQ9p8(7P&QE&Q`iv!(ELH@<$`CfwQw z^~W{=uzPaxHS6_fG zRZJ+QtR(?2`@@^%+WwlKj%YqC+(oq6>R9Q$IQ#;!p_i$B65tO$CY;;VL7mZ~A5G+( zwi+e|!+o``ag1h%$FLc$84ZQ-X?sFrmLdhY0Sktky`^y+{1LBe+dg_Pi~>unTInIJ z7L2lf94oEQr5a^;1{L#GP#JGP!=vkktA~B#W@yTt7yU(Jw5Jy1gZ87{>sJx}Vxg{f zQFyK|q^@+{*&u)?sV%kvC_aB|D~O@s*N-1Tpk?S!asn_{n*sZqE!U8l=$i5;i?>++ zTG`Jdfg|_-OokuJUf}h7Ob%4nj-{$in1VgVw*N)jrU`(~d@IpxvEMS7z$yLslDr8x zo>RIteu0gAlFb}I6jF_x_oT&c!jA7nUD6<8oGC=b?A#6%oDb;FIzhnQ|G4eC0S7G6 zrLO#uvdv!P4O_m-?R**2S`QQ9g)N<-X3|}_f&&xCMH{&Ly{`ijbt|EhQ!A0^e_XrR zMz6HipT3?V_gDDKfr(}YJuXJcjkd*--s)$6=?6f=YpYq>?P zBQ-NwYGaLKv~1<|=lK}VeX&mkpt;`)AAZaRRzY}fbB-N?k>5gpeUl2vefpIDQV6{6 zK7x^s@(Cp!!!$h}srlOzV@&}9 zt3K0AV3%Uz8Znd>2_M+D?x>fNcKRYlKGU?*9;l#Xizd0@FdOSxF6Jw8y8aX?7}@LlGd!%P_7WTja{!D@*-J{Fjb3yZ z`EHaNqKIuWwPseUIws4+1dB<_0Jfo^YyYPjem7t}5kS1Uh!w)gbN^t|jaLT@@^q35 zEHD5=PtH}bz!Ril&P(&i@El|p?4%Oc3H|jm^kldB=8xR!^1AaI#=7ZHuh(8)jj&H( z4@2EYTOvfhMA;|ElWXAbs-0RI`Gd1Y+@(ugckVNu90OomyC$qxuRUn=ZtXV$p zCx84Kcu>FaS{@-*R*U&jyGS1;Xm`EHd*;j&ITKw7OW{wY*xaG|)lX~rT^_i!JqW2e z{gBoYNi8k8Z5)(4@CEQt-*jYS9y=_IPiZxX;p($}SbD?u2!o?7&#t^U7)IxK7_iIo zVL;V}{Np@pP~L2eQOGTq`J+NQs=2$_(=K`T#xHm z|880C^0n(C4-FO%vuo5LISMW#!nq~v9XbgkMgN5RvWC0LyL-HTX2$;na>Cqg4u3~> z9j;hNg|~-enoHk%Mw3Q- zF-H=B!;A}blmp~Ey3Dqi+9@L!VgzqGH8>D#o08kZ1?GuTpmkQ4k4cpIT?+`U`CzuA z?LQv(jfJ;&S_8OP>FofF$7+>KTi;mfIQ!*!ibb^+a5?sM>=F09!N2q`!TNV^nLp+I zVcgChK=&0drFM4wVO}$w@-aZ?ju|+*P`K&~pF>Qbp6_r+!7P+%YR$B6rA#uhLPumo zjfp6bNvQ4OD3?Y60%h~!eXa|hA<77&;Z~#GArtfq?w?wuo(Anldy-7Y8$Rpqj`1I< z$vK3wkmIjH_1=68J3t=3p(qT#?cfQ;^W8oQ33#V~{c=11cdX?^L+}M&ErAQ-o=Ej> zd$UOG)TuwA-61ap_TtYT<+FrseGv~j6}9d*QODM2g<8#zc$=%E7_M9>8=aKNlu_^4 zrpm*&7IOEMnqU-Sqps6yLA5bb9tH9xfGlhf3_1aQ5QP#9DLdt*VhIkEr+(njYJ8p1 zuvNTcBk-@XEC0*(>7fw-2t8KnVX3$T+VNO0AB=nVTbseRZ$NggTPRY_ntY#yt>-hK zbc={AY*O&Pd8J*hv#^U+HmWsI540ncnH#d;O^sC!d@(rWbJZ!4R;;N%IlJm$yrf`d z+&A;DGp#47fd5=mKV|BMWy=cCWH*HTnmTD7-UU^-p^F}kBljDQV1Pb_eJGQPQPwf- zcb&gA+^ku^9iMH_ZNXRfZCVXGTIfjZ#mBuS{{-ZI1j6S<+^?9T+dIG9n&X4e7YuUm zk8k4}L}wj31)rSi{?g3JC=h(zNMHmkQ+JYu)&>b)G!!vF7@o_t)<{c7=%_NSr}$|R z`TolqtD%M0v-%p4w~R)w07LKpYmVm1UJq$cYU9>|8=_ox$>de#fCKxkH}a2P728W z5(tV$1vWZW&7xiF&39Nwj@!`Hwq-?I-Dsb`{(F+Jy4a!hYPCilx>ysB`%|^v!WT;Y zk90N|bM*Iy%7(1f(RP8rX>5)IgaK;>T}$pi+2t6CQ_#OONcrCfYM7js^bWEI{gT*P8|c+E~91`D1>alF2{a1Nc6}z%2(AtLW61<<*y9>HQUffC)?%0RD3+<kKFj_!`bs^D!tD>u!q4orPe&H#g z{^VjaMC`w2Lly1ueQ!P+2_eU{T|8ytuB4Fo?OH*2YxJuJ_GE7JDoXi?##rPhB9BGV z%<7n~haBYs*oJ)|>GwO-6NRITr2c1IFQCIbL%y?sz}Q?Bb3c5bb?`@z21!udhyLFLV)ox zkbKK)#;jR4GD%Wta$D~@@NBw}@h)vYno}>Nz25TYbXLY*eAal12<$TRL#}uwNH!b( zFZJm4?`w1*8j%L{WCp(FZyeL+zvP^rb&6z)Sbez*Y}W@WE=)fi)T9P-%(I9WzjHwy zVtl}=Y0kWVFGrLeOKGGB52`S)@LRSiPJo zxCkEW3xT)G<(7Jobg%08y-Rp)pSokA7Ez(l4l`*vMS$db2)WPME(b&ZOB|~3O9pXK~QUbRRKG|sSK~m7*Ao}>h(I3o_* z7?D(3M@qW6jQGEstR5T_LTD{FEqlP_N4D{j40EU-=q>qC|FO}FTRtNl0p)!MxnJZ_ zP)TN?Ixk=KVhS1|0_&J*bm23Q9IY6F9sL)|eRwg|_j=w~SuV@bHMy-y;&VDSi^6K- z2SDI(ee${TgNr7#*;CXNCqegPQQC9+2XZ@h=3kF^Q%xZAaCuR2wDN5NjZTDr3FXZe zs!Drf^e3CM3oO{vJpbU)gvSsvzqc+pGrb3w;1HV%AJNz`(=74d@s#^&NsL8gl%ZeY zdl>*;W-$;Y1N;U6YLJTkINGXh(SD|>tpj2u@73D3YLEYVYMU6bUOHf+rDlvHT4pkJ zD++t?KCIUG(=x-oWA2_5t*c8Pn6c#udC?Z}%^VPe5xh#@ZGMXE0VR5WDT;oAa&vLp zBYyRQ<(<7`(r~~%WK2;x3`~#2&kz-AJj;i-xaxORnTdRtF;Oa&ixDK(Q>fcecDQ%v77Q=w%mI&?l{|ze!?*t|mMwqL3e@ zH&rA!ErAfdxyuB_*oMv7>NGo$2Vim)J}PjQ=2iQ< z+_0Bo8!^RX9$;MeUu4XWZV9&;@3>IR=XvH_|e%Q(qmWswOq113d%UsygaPk zMf8(pV~u)sul^EH*J-)(0Wqdwh=0^d8)q$jSK8(<#*pF;Uqwaa&NUUuFg&6&LK?}q zEgX>3jaS%&pVAGW`-GS9FUD1DjMNr%;NFfOZBg4B3(&6XQG2!>#IvrPnC$2 z=)e^hz&xyq2bX2clakuH{ypBWP2Y5D7DCHrF3EmG!eNO^si{$X$2E0B9f@%G0RNI&7mY+)!tz1tNeggH$ou{I5|w9D-cTFdDO62F~>*DlPG z+nb}1f`nwj@U!8%Kni2;7UVg+tHIXaQ@W~~6G|n?TkiT24!P}wU=0T?BsW13~YtJ0Tk*Fyyp+6^4 zPbj64u=?kx>VuP3eeW=7ITN(~&D*a;8xODn)p8GGht*Luw3@7_q)3Y zXVJQ)b6z$N&%MA7!`&w(D;D0u&;qL1f}*)|tUjgfW%ha{?SCKL zEn%hScfOf-cE1AJN3MrQqFy10d=$&Aca_6yU_uyu>~EmmH^8nCT4Q5-fZr#vh@}~_ z&s<$p#)L1)5$*-hBfpxMe^)OQz6Yo`nQ0u=8VKy&q=K01`Q6K})HHtYR|cX|iDyhI zzK3~s+?gJsoQf__=pu6SOk8$04}j(*zmFt(e3`^XyF$KablA`jT#=Xa5O2FM$g33V zg;=9qLNEvA4{TH-fK(mB_j{7OiO?m_Cx_x}|9GuNuw^lymwbGM_Edvvz$ z`OFbc*C9fDS;k{qyf?r-HgLjz@sl7Rti@M-Jx;@nmA( zN;i2-{%^=4;XPP;nN?}SyqC+&BlP~(;4%6gq-Y(Ldu}v6TkP8gk~~-+PbMFR@S#jo z!6QvjXI7&*S*qj0?kY@>thFbn%u*Q#+!>6X*QTFTV_6 zw7EHqQcrr+$V|MRzLbHo*|rqf7IN}1u?v;#qZ!=+MP+0BUtisn0thQmQkZF$ae3(a z@&`fTi(L4q!G%YNnRBDLSO z94CbTJX0cX{H~e32LxsKa%E+1s^pV2#%kTZHq}30vIo8jDUF*;n6;`w<7W?sUMFhxSp~&Qn1hWTe zDr4#4Z?nJDd5s1oOh!KlcY z&3SadfBVhnc=i#nLF5lXcL_4wE66s8-!iC_P+IsclgqrUN%#}QT{Z6y+`F5(WWuWRwg+0{Z=gRTaN(dY|6nlCcNrNN(Z`vOfjACNR~U)&%P(C{v(%zw41B01hW6 zoyW9c-*&zlyUbVj-MvdcHw%0)n_7b0qb?wv;v;ULC}p1lC?a;y@i{)8x?o8Ii4k8A zoD{Oe6X(^)zW8^*^Wz4A9B^9b7k?E)s`f#&WD+Impg#eKIBAQ}U2dXBUGc%kG)=jf zq9*3Z)Mm21is>E!r&N$c7fs2xHOzay*rGexSJ`tN5{@0TbiH$Md3s=^^xPbrK! ztI<;wu3Nn8N}ff3t%}o8A&l4I*uVVU8Be{n9dxBuE4;s$&YfZg8v$-JGjnn(0~vnT zG`p+|1##R}7)-#;K04>{jX=W{Mg;@_M0!A-6YhCw5CHB4Lg#4f+)*x|f>(K=bPK$S z2D-V(C|~FbsG3zl%6K$gPig5pa4;AVBXB}@twK1X0t2<*SvvJ*|fl74} z*a-yJ9_KDSDL=3Sa7^pP>+s)MU}=UHv6rS`^zD-6NdS?wHRemY49^$kk=J$zaS~}W zE#MNhJTLhWWz;|*5Fnma^^>+bA87yleCeNUOVL9S1mE zU)E^Jp)PQ1$NVeeku;E80%@uPnP|ni1Zfg04Y%x(-B|M`#egBclM3LJe+U3Fvx{3O7-uluQixs-T7fX8 z;=o72=%B#(P}hK)9GVrYyt(;(Xup{nblti~Les zCV2e)_aZ>v&$VYk+^ZDwQEqfSb~8XITnyx04Q%|UC2FxVXh56By|iqG@s7$gYwXlE zhp1g+$dAL)x}`hE=D+## zb85}rKI!17K#&Wdl=&oz^ek8&=;s}FPH`7_SfLxiW_3mM->1|KjJ;^bm_EVAOt9g} z&pG5~L{&0MP^Oy6l>hyv!IwY(Kr{(=#ViX}n|aD@9T!2d9??g#u_&=1ZmR!ZAbp>{ z|4pH;s}6P-Dvzd)^kSh~-XU&-qD9D5j2AWoKg3wZiky^yv?({a?RVjjmkbaINDJ;C z%4bh-lg=lu$kHM~nhpRsgQD6Y-Yar=T`1UtIQ7DUNpN+K5Q&O*@yFD;`z7Hg+aHx} zljSm<(Urf*R55noP+x)($|4p%hGmfi!3~x!l8Or@3yau^q2RSkr|*IqUw$#$!*{8! zdiu6jLX-hh?YVQ)!CkBu$)^1U0;T-Fh6a(|5fq@oz7JneK7j57gL;{NkslIf0#7xX z!CdC19BaUb{@F8lLghRtCpQ7ZGa7)K^`Q2kO>9E@lzQ50S&|lYKtCr`U4D~!__!MwQ zZ`m(~JWdMUcuO6$oP^j9quv-t=sH@enYa^J{VnkH?xYNhrLTEi(Ce)Zd#v8@?|T0; z9W;Ey%qsvr^}c0+k~<(K+*Y+mfn`8vAZNaD*~bK=qfj(!x$Q+o_+ixgg0@g=2AbuZ zWRqe_1n|&Sbd)hxPuTFeiOBvjRL>gfpm6)@zStRccfL5WE@M(nBwCm@`ZrT14BqD9-NZ^<&3slEsPhvT`Zkq?Zh zJLrSgjV%SC3$}CUc*CS+J^GMg+J{#KK2|~mACX4zU16rLk35LgH%W@yp33(k#D91F zbDFM)C^uTay8u3%mGH*>i- zkKlXK4%Ff8nn2US>Zqb?>_8u==hE7r^rzbr3iA&W(_g-sk-TKNM(TrrTQChNqs+V} zxEu7Tf-n6wgbj?pb}umW2=hx&R_Ur~^0O9Y{1(Bq#A|f|>;498{wi)lJt(|Kn0%~ZyImqeEJpndKK<}H zD2~8vPkSsA7}x9Zyx6s?{0R&eLg-;|oJbx}9sq$rEF07o!BC zM~8ZzKrtq20eeQxdA!=e%h|uPLOU!o@BK@ECLc$~;Ml{_MG%T?lrPIGDM`!7-z()|_YGHah?(D1Yo>gv3tANtXA%Wz*h zi!oi^)}E;O;$lS~a~aA#*w7h7WKDjb9xF|@R}&}}t4-GS0d8?Zz|-}jhzKXPRN!4* zqK^6j1Ys8zO#<>?H-fBkjB{^-(Ci)$x8AU$hk%HV?u9Xf^9DRzkRq-t7~2HmK?Ie0 zrsO_(zJ5EmpIbnrL{GqJO!~IwhuLYv-Yiok{FtPq zut#JI$L{*8rl?nVf<3IkXxqxNb26cyC;zL{sF)?+Yb6lL_%(E(Sopn`Fe&KDw~iNz zBBeT8l)9U?uF$qF8`S&gs#)-)p^15%v}nc|F@iif}2DRENMMVu5B9-6{#z0&+4OQbRDoc_49v! zc>Cv!!H6P~4F24BAuBxa|1i<%T%3q;ALye1mDY#sWD`K=+5e?%{`g*rEwVlG(LNEx z4&E(MWsL^HI}C@4r%^}!K1FB#p45)2AmwlcAtbdIBqiY(Ep${?kb60w(EGTR@gjS}1I=DoG z*Zbt&>&}@d{Dy|?`>0w(=IBtCNXw%J+XGx+8M=ouaXzNwmzS7cspP@FgP60dSQ8Adfzyx@OKTr8JZ%Lftb)b8Hb2tehNpq}#$f)d7 zP5#~m%N4L2;$g+gWb#xZ_&# zq3Oo>KZa1+h!XYo`(*ZM$&^PKHW9TwU=(gKgIc5|96N^2n?6Xuaw>wx{O6wQT8qGJ zju3kI#_>>ayvocSr&+}(+Si5Su-fdZZ z9Gl`pC>MTR7qiRTrm`h8?5<7Uw^GIBJVt6=)=S%M|JDxE&9C57El=MUe72uhx{!3g z-u#W$yi<^I0RIPSXFwG_v9oHqJsTuVwl?8yT@ z%LS$i|Kke87-5~%^R8uhpE9=vJH=z(RsIRy5J}UiBM_V`PLl8ej#`MM5B}tyq;av? z>re$gTDMFHgOPDf%V<@T({+dV1Ulw_~4s5aTZ0j2NH$L-gT--P!zF-(OH3s zaKvCsCM)i0cl5ibWowKT@WUCVzqnQgUuLe(rsN-ykF0+=&;kb^lz0f6jycV~I0Qc( zW6V$qnlcwckgKKyJ@2=R2UdR4(f8>_(c>cQmZ7jFH(h`dfG|{Ul7@XjbXaEJpgSiXhZ(?D0rbKRQqf;5>>2&mT!5h&0cR`@W$2 zazwd(0{hlm%6(s;?;yzbve2{i4T;Wckfe70{BS z-}qAJ_cS+Ckzl2lW|5Fy4mg52YUI1%WuJetCt?6)XEFDxrN%G^dT_O2MB|LDUmC!4 zT9ybgbL2|W=?20(486K0#Ie-c{<1s)JE10Fx;K8wdtA1DT6TgtnSKQib{je1B&x+T zjf$BopZg(bo*C=8CNW81G8oXI{{7Q0x3XG@s>~Po;R~t4E!=9#0>-B;}Uu@7cTRLe5&c4eW~m zmO<8$$d8@i01%~#L3D9Xs3;W<@`G_v!v-IDr6~=Ir+ww8NsP?oq|KQ!-p@(LB2RdX zX1UDMRuj+ZGzGu$f$8bRiF_J5bcKqK2bxvvY`$WUR7XEmT#GN)$i{VEID zRr1NnBgKO!at<%^lJl8QE8;(_XD&U4gLjINX#qt?XO({-?sEHLx(+&f|*|NI>^`G58=KEy%@^b!{A{8qbt{Jo!O$6f8Efwz9w47}% z$o?f-?#T+Tr|i?=*|mO!;a~{$N9CvD#8AHuPraYxcc=`F`3ipTJm6Y=TaxMJXvbuI z`m*H2Ir>bqnoRd{vuQAxGdVpR$3vF^kX`Fv$af zwLv|xA|%}se-fIgZn-Y!!4O40;O;5NNFaYiJo8$2k4?5UdyJan)nVya5R@Yx5KZz_ zhb`5__up*f#SQzSKtMyp)X~J=NjQ@?5UPIw{2-q~353rWf=HE*cubv~W_8TISxqGb zwY}dez_J7KtuHR+SSn1m@(qBLUmb7I`fCB86Lagc(*kjB{q3FDhW$kD3k%(%w>7a{ z!|6L(wAfQ|inSo%h8QEUs)Ji!T$#qT>IZgUVx`~JJE4)Z?d@;ZVv|^`AP(`HFbVb1nYBkmugI?K}2Lbqg;n3GZ4r6GLfYu|qapHIRkFr}=R3cr5M#f0&UVX(~ z_IBQFZ~qnhN{R7jPt^65RZs_ZQEpMbDVNK%R4e!I)kFoXF)TR7+mGb>dqY~p+;(Q* z;XkwM_1`$=g$Yn1MOUDg3Nwa`J`YQ7hKw@R$NTJ74;jY@^7deWaOw)4C&V3y=mG4r zeh|3wuy)|UZgMw1u;BUf7-ZU61Kvuas+XjsBB#(EMmAap#y{gr?!6bGz0Q3h4CvP3 zA7UEHL0$r^vTW&ezr`dQ{--KWub-dW7Ao)nx94b+Y&-wm8^+&aPk{YhFNo&7PO9oZ zvJIq=&4a;x)b38U;Ly+|iGRTeyx=utndv#mP)6ySdb1zEy-5JgQSus0foD>43V-WjboNgae99NVx_!YrHe0hTZ1g)8;{ZJ+TQp)s>&=(h zyI_|Cpup~rLq~Z3r;d_$KsVoESF83IriiRB@(F(5)^76-B9;trxq~NjeA3h49MU%+ zRIBPk`{23Ymw5g1WL{^R_)+om$Flgyt~*4_y&+>y_=1 zp|U*h%}eGjfZ1lIGIQhK56fvym5H_HA`mIm_XggPHVT|ghL%VWg_nCZVl=#!Y^RAn zzdgQCM>m`zZ+pHQ2xoiBR!HDm!z%MFP_f;hi_M$l!d zI4)X;h-l5PaxY4M0i}uo=Ua`>a?zk%{(-N(-akDt)G!BZfBb{lE4(wmnWnnr_SRN% zAC%%w0HBSdY?Jb9+CQ?IHx`JDBc%f49wEgP~&l^h8YY>4U-Xbo(5>>S-aqx92n2RO|35EnO8nfNIb>#9z21~G# z`w-G0MgUi@f9wf_OK>Lx!AB!yb*J=l=6TI7qu=Yc{FO^N> zzugdIT!8CcHCvxDs$pOjWbdtlXQMg3xKh#|%25K(QIz_y_((kfb98W5NurQ?e{cd* zKqI1%&->0rR6RbfB`=bi&dOn5w?g8m5FG3FnaAjB@X1rbxyA~p0jA9_431;_f zU1bJ`Qv5vXQ^1ax2&yh-*uMuU`D6g>YgJpUC3mBrRo?%<8S{Bk~omKw?{Lm+H1?Wlj4?TPoV<( zrUCR?mFOPJBnA!hc1HadsOw>M{AH8q2Y8WP2?dYEFEi|y^bJ2E-dB`}LXtIC*bFv1 zuhgWgu;?fmhTM$AC0XZD*Q*QzcI{NHFxv@%UxGeOW<7%FKLUr-dUK9GOw*-w(uIVj z@0CJaFZ1e86|tf^FkKd($%*GnVdzLMEhqn|f}3Q}_ioJ$F!-uNPxf9&=MyA=;#`Ys z)0Wws=n$i3G0h6>EhC_c^AX}fQGA$5*Ui45j=4vsK7CXV4aG*l!I6&mf=iFRvDZ-@ zjEPYW;B>#&>}~S#rn|{vEY;5U;eGyE4XC0!e@INXt)Q#}?=g%evAcm-lz>Bi38fR! zhUmT@FQmd~?gdby5oz0|z-g@^U(WUx=CY$k-<_HK^~o`UuFLofSW(j;p_dyUc<+-7{#A#3j%(2afB3;aKwR^8i{Kx*cSWi{pr=x_d$VEh+;^Elb$4dU zU$s?Q3=U7MePpTdBKK^m!#Ei;&C8}69GJ^YQ2wm zY4t#36=nnTOiYV)A1LHfDgHxX0vGcfgAFC#SdN4>+wTKW15lY@Z!?}T4~82#@@xKIc(lMUvEL^+3BpJwS?Tf==T~%Zbd1Y080R^K@hKoF+M^^wgau5Pp?dV4tNOB5ZT%15tpQ@$1?PO z)PSjY3jx#toWD!q0{MckY%mx4es`&taW4e#w8sE{C|gmj%E^a*sfXU@(dIM71|#Qy zAC%E&oL2OV0f;u(In(tPaw`Qgq}&M~K2dZ%E;HYhhwzjDeGii3Ze+qj*Dv zGbyf$#M*C)O_&1c#_EyA%Aot*c?($wG7KNbk3=#=fHUw^v^$o^KBDehPrNxTX}5b- zoKuZuZOD_%G^qe&Y!pFjVrzQ+xKKiJX^w02Hs+~xRJ!}K^$MDruP2}-+6iw$+wP_NQ+w@#7r8i~}Tk+YHLz`lz+^m|FG>*D6XwiGF9msvMB7bMp*yN>gLbxJXTyYwwZ^Wsqc>*qs=L*wvwK>2TGb}f(>dUK&;4F3unaANy>c6!}@bf|lTOaZX@c8FuehdGm z0{k*YqAn(d)c0=l)!Ew74e0|B@T$nLcQMX1)s!y?dY(o};LYT%{FRzg#S^zE6ML#* zoI1MMjC}wozlCijClQJ!UVk89P3SiM5-~qyxS1kQ)9|EiO_3l`Y9=omz!Jq7j`YY1 z98}Vh>&$3F))1BFWRsz0v}n8KFW%mkhsEP6uI2F+GwyLBCMe>|8-*Rs1Uvvl--niZ zWmdJ85U`LeaIx<-W(BHc6NX~$*E9c1jNUyA260FxbqYxMgW})6HES096X-#BBhfrq z_8<4<7+WMO0CS;_IIdL}Ynov{>eFP{ge@W?Y&rSEV)@0!Os+4AcmyTFPO&QBRL@1e zA0&5ndh!asBhd`Xc361ihy#xXc20Ej;HyQ@N26E=(w_`oEex=({6}j_Lb)5kz^py( zFFI~&8o+@=CzfosEEgqYH{)dm_&zo%Z1FdT+$ST1Fb!@3`_c|V<~^4iwwo!WyJLTi z@DMG&=eeayhp6_~|NTl6A+Ql|R(>k~VT8%yHznpLKwyuBlS&zH;IDHIpP&*-kRVz^743nwmBr!_EnOlIA_9l9Bnspcj(^9+Nj!*^muA$yTvub70|Jt^qu6OXh&9{=?HjFkEG zSCUA0W-<4sEEj)X@|nEO3hDaHYR002yN$TWlw-Fp_r$D2Tu>Xh{NcKM>c0jrBj2{$ zxQR!)yTSgzG7GFPJ64?J%p)XUpbVINN&Q8RPTv8n@Kf8DC3&3e@-0TK9$lynsnb4c zZ2yfaJKIG)AXrCuV*}GEMBDiS4EasLNxFbEO4!AFAsViS;LQ{0;~LBLU{se^eW_Msk|)U z-vUwFKmHT}FU(1iujwm}&jDz75U3QJx$jIgh94^OyWHqn)%0UoJ{|j;c3nO$p7#!O zZUOOJH(hDy(Ik-HW#wc^wSE{U<~ax-OGVW1K9m7_hykQA#s4-R5#*TF&Bd}>GAYRW ze+TU_44n8q%PgS&5qa;)sD}CM%ydH-oB zXf)GcZ?}Gtv_xd!0e-j`JzFtsx-}n(4vF3q@2=@Ct5dz9yVTdN(0kiOMh$ujkaEWZ z)-;+_DXQ@9wVG4PU&zfhxKu2lj;e@Y2>UT zbKeFL(sjqbSY7L~SyXEH$w_}d!r@`I61odh3$_w%UKr&s4sdYRE{J$Gy$4Q8k=bx+ zqW?-IYtW9CXFA69Ucdz)&eE9nI=X617IslqP8Q7|3o)@6*(NyAa&*Bh??8}zwKaE7 zj3u=Q+aH*PUBGBQ*&T`&MZLxhf1DKBCXSKm6Zp!V4R6VsNjJ&}kf;i(Q|me|BG{A# z^&Ou&#k)LrEUmZ)4|s%-HqL;dr_0s<4f3lpqf1@U%Z!TCyx{;}EY2dDi9H;?JQf4)y@cRB~)?T$(n5n;$=T}G1qVEy@jxmTR>As z*Kx#KXLd?<_1iB!Kk9>2so<_k-*qz*^(7eY(kC0*doz!+1wlsrzzIC>0&zk3d_QTw zq_adJvLT1(?#J@NuL|`V^943`p^MUz^WYSYiRY2G%lAyH!N`Ty@rf=vPNe%GT~Eg| zh&!3&rPLHP%6HP6ajsuialvr)e69HZ-afM|SUb!K`OOTMT#rrmqdN5SZ7QriDvd*$ z3g$r%uE5gTGYYYue>ngTCcqFFZ*ieo!0>q_M+l&R@79s#(#tBx%r~;)2ML>3zPF@D zW3zZRlBhG8Z})%h1EnPXN#Pb|o|ImB`uP*3vNKx@vUq>n2>$pt#|ilss7X3}qA{Z4 zNhIK1azY{!S+4nbnOAXfmJgq5jLh`J8EiucECCVxPK57^XwQAOaX@fqAgnc`hp&yn zJSyN}HdMX12cW_7tDhIpqDoP}eO~a!SZk^58zKNRM>*=|aOnL(gI#e45fdbyPsTLAf2 zCN)1f&D7fPC^&~I@P|nimPD~ha4ADTcqun*J_+_8(gZ(K|5=g3#MA_UT-E=!4K>d4oG9A<&^#jZA8Sr&!;uj(DP8xudS{}a@(f|=RA>%7z_%R7=S{8aig&g2;~vW!Ld6); z8}Q}87kbri$K7qcb!>I|IgdgvYPjSJJu#b#FB-XU2Z|IXeH7G89Ye1@ z$*KQk)nm$`YG^t(h+*{tFrzwZVQbws)C5W04Z2JX`)%?4W2MOyCSC{TD+zK!`~T|{ zr;slr+U|qAGOOqxh6iR&9@*$c{n&(fHNWHMA(+!0H#}JR>N<@ z_Rub#EEn+bXv-~JUxYc2pIpELs7AtZcJ!#de9~B1S>2*ucYq|6$p#wD1}wGy9i2$Z zdz13j>DBHSt25@%L8HN@f1p`v-9AdY90tGQ zTc!)qd^BZcdgQozZ=Opa0WE4p_idL zuK+KWL}d6`bs)T-J{njk{x>`C6VjuW?|U3DO9Z3B{i_@-9}Yb!FeZ zlfnCQ=$2_LoGq?ssuLIKP~xUSlMpL_$~4Ley+biQqM)19UtW=T%-+%#dUO>0xbhRI zj!IV@-trbwSpPJ#@Bujb!d<6*!dr_oer&OwRQg#$o6`a=CU))LST2s>S1>!9;EiI> zfMNjyOfpQYCm=V`Q^g@DL)w3LauY!0-4ok0$c3^+6j+BStrad3RfbhL9dnLKg)9nNGG50BYYE*>DV zYxDnYQl4eeaTGum^96UUiX%4>uKM(0>S=uhbTf1-SbhEbsr~(Rn&Oc>EahYhN!7dU za3+QfNgj#tU(l+ijDX!9ENuNMhvH4HKHiMY55h!f9ipB%$nw_u~CobOAe53d;Xs9&;`7 zq_Uxv9*_X|t??3?!%y$rs#9z&Zc|N$B`3V{66k(#Y=H0I419H_F)RTdgYR%Y^7B$( zqlG_)q^rM>Z01V}u!0&RaPo6$yZ*8|BW_&)2vH1hTb`%h?KXeK0ncxKlL5cLK;2dT zd&uJtR%>Y^rg8{i@YAgq=FbW{9nQ+e!Z*rh_Gmai&EuZcdSjs(Cx&lH<55)B zu2pg>VP_Pf$3SxqQ;TYa!&+c`fov!^W`>^iHVIY9$RcLoZ0qyhl#%4kb^~UFsX33l z-CXxz7b;q+YqhCMFZX{RQ4(oqBAeWv{rL^<%YjH_CCBH3DM_Rg9BYAb#6zV*VFVPK zw-PhoOE5R=k|Hn`uVTSi%a5kJ%)sA!M;4S9FLt(PjAcIZHR5G-9Y~iG>pI;$W7zR_ zz#zdTXCY<+9<&xwm&$^M`b7^8C;Sr3-sr06ENYEP2R%(iK^B5<*UQAxySK`5Bgz`U zYbSM=^?n&8dNpJYWfANQqZJ2QlqK;U@*y0<9(@|EGt1rZ>3HDq50l{1HDHnjyAtv? z=4u=FDUgXsy!;rSi6{M9kgZjv@-!t_4f~)KxQ%+jvTPNa#WWpP6=k55=2dpb87;`T zjJQnt`1?Zjt7tXa0W}6~(YdB89fV6MC5YgIAc-!@!!?%frfT$l+O_0V0?l~xUV?%< zGKbbZKTqG`LX7Um~(gzjb z;A((6M{F_h62f!yP(=L)3}c}AHx7B>{>W{EG)gGvi>DrfL0L|Zux9ZbmcYaxksW%M zCMQkCV9-iEe)t0U@=QrD+}2G_%n4O4#gV@XG?xQ&5jua_*qFje6qJN`$S)k zaue)hd)AB;%nH#uh(q9p%8*&Jt2j8I5=m?H-%Tb+R@{$|GsXLU4xt~X(6eXZ1AWNQ zESkY8u$d#zF9{lLs^9D@@J-b^bg~RL@6`_;13DE zkgkPHc0q+^OY%YP>m8mg@9Po_+iwe(+M0nF3V&n3&?v&aUAxPbs{7Zf-3)%>swR?2 zlFQ2uEI4r$cgT>ovUU`u?9XKr`y42RX>|c?b$>?P~rIOl1{YghvEdrsLdnShIfO%J8dU(e|$*SCtFTtN1!(AI_8;a z$}}UL3x|#z@3PY&Q#PssU*iM6d!-e(Or2NkM&G-WZK~{Ve_rfmQjiV8H+XJ%d%2=g z;u|ut^qPdNe35&3XyFxWq(IKFXPw5QMu;?60@})c57)Wbtn~((X^OGdUV<>(>7ZQK zr}TG2ap%v&y1BAfzaI1KK8`KIV)gkY@9PoSl&TX2;Wtt(w6mMZz_CXk9cfPc+dZ=`RcWFyU;@Y;i=^U2Jg zA6aEBs0~~DC2|nYD+tPiIfiOUOid~}N3 z!O!*bC}3y2&Qgo#_Cr zn1!O1zYvC@Mkf5i9ADtyKAkSHP}=|Ay4vO?AUKFKAVp)8jM;#N#QBpxnc)BT&LulG zp;6zB`gtud>eoYR3=HQU-&6R}z7LNQ{8ID=QjIf*J;!M3URdX%U$&#!E~^Us8u_v- z#u(MV075QS4I$BJoNq|U$k>k30PeN4XS02&0E@dm{=X%Pb0_8%aK_<|CYVzNHW)^l zqowfmEj`A=(k?ZqtVH=PTFSsfs zKCA}G7tXJCe-A%KQs9e)v$+g&5w=e0I)4U^g{_EA-@VmB5cs zNOLjX(GWBkBt(nT`4gOie{@j2hzIN9#;RoAH-nzG)N%O~Vab@}DByt-#ITpU#_DxO zDpFmTNWnjqN|pzP_3z_r zlGyih7q);Ij4OCv=V1UF2sBOPoZ@-%GCHme!son2Sq}*ygPq1UVFvRy!T}ycM;FGN zjpQHMD-;@zpI8ia1nK4gsyX*iB(=!2^aCE_ut1aIMf#=6bt^< zIj{?21Ax22-n0%+Y0jiqmmd3QEBnk%&X7Aw&ZYWW%o&&w){I!axXfFiKjJpq4ImIH zN_HKSsl|7))lJDp1N@%yEGX9U(cmjQ`8?&)U!kBIsxRfa2Y*VEL0{@n2Jk3(p3kJC z^oD=WJe7(5cgU{#d1_6nmOTmThNCj8Rh`KIEkRVRqQ95@h(8Ex0}-VkiAjqz=?_~X z%}!dwe^^)m^jwq0Tz-(pU+@1R_M^;Wr6fZU!`fPc9|B?sUVBneiWuRnDgRKYc%q_M zDq(1ZH7?+NFg}HYV|BrbN^A+@}JTIh(Qs z!6{@(SQ((e!HN5%q(u_#gu42bF!T`|%*i)iUn!>jbA*wc(F-vzRtiN8yrB^FV1<+w z!;Qdl(2+)QifmSZc4G5$IZ`zq2~kym)N)zk>9931c<0Cyyy_7gC8r18GbAsxIiA` zHOJ_d!SBUDpHuR@C=vi5qy{98eR!{d2r~y-b|=dWby0yET?LX)6phd0s*xz)vjw)biY(E#BdLuE$c@CmLY=MUgocy9|m{8bO>myMSjv}R#iX7rU zd&X!3{up(+yxBMEJ7rp4HBDLTY-Ws!*a1=!?@N5?h*MLF#d<@HLVfRf9D9M&to%lE ztQ=eea390|NWzjy@Y5?RR1nQ9?%rnHLsQ(@>~v2rB=MEO%gP&JFW6r!?avi z-PhJ$bF66RD0d-op6U@O+N5K`&6b3d%2QPZuno2c)D&%G#{3H~nNJP|)R6?}?UzlA z*dPR0Vxq14p-?Nj=U*oyEmW|w)2Tg2`V#%LhFPAd`{DsRS7_4ZlXfl?H|}qw5e}GIT&Yd+&SgcvZ9c`Xv(ldb>7JrS#i9lh=YYs2ox2PNS$^v<5YZI$CS-Y zF`D-hYpD*kvmXoJ70{9ghrxtkQr@50q7`}2KfXceQ^=BaSFQXi2_@ESrKhL?AOu^1 zSkQRvwFo{>h_8f%Km$V5l47jtJomxOdPoNt;A2WcB;ek(mP0+>tetTN;rYT%C~dF! zS?@4HNvb?JiL6M2xgb8uz{yfiUrT^Dz==FFk2ppY@io0vp%)m9$~W+A+RH&|$p`LJ z&#g39=FkIVj{r91cgeubD}(;ouIW>sA&4v%{9BVA*=iJo3Ojs8&H)K4Sfg}&FIGYF=iutcK)i#6>IxkwEZ6;n zLrPC%(eyhH+Ba~(2}f9{x7XS>W4Ihh5KV@lzQ!N;MMEtw%Xty?1Olm2%)DoerO;~E zdkZiBZ`z;_fg#l&RDDgR%U?j;2>h2}vYken$ zh@`8?%m5v!MH?Wz0%59vX~o-r(QEE zacA8YJILu^G(8WA{r@`FQ}EPj(QY4ZdZo;P#Z#>@JBjG!1Sr z7%D!}&J-z^@`9upLUxy6{&2zJ(+<6u;4#qlj6#42`G&XSR~0wi7NLSD6~Wi*tOvpm z=}ksKoJicytTUyH8bTw9ApuF5Q3%0x7rB?&lphj_K8U-*0h)K`CNsHH-v^vQYwpuo z#-`G}k6(=6*Eo=fJj+MzLeB+T|%wQ5!y%#(LazGb8k_t=~IE}^S7+B z3z05+^G;OLyh_>Rg2Ph`&U5JB&guBAdNkjj;1~0~ls$bRxq&N%(3N;Pg}hyZh6^{G zxdb({qox5D(XiHU8aL;X{Eh8ObDea|eVU1cK?c>aTgF@R-?WLorq8EQ(nKo)qdx{W z=BX8Tfq4)T1;WH8A?k(xH7c85#&aGg1}gWuAWl7}Tj25sQRCV^10f(P*65Aw#N7NN zC=`miw>NRALx*K1W7r4lEqR(P!7g`{@s$0KqRLmvvgmbx6`_0m=QnruYE=85>v^0& zgNy!K4QXpo%SN^O|~Z8|XW=T=5RCsd8 zfJX;BeFBJ0n;ta3wZ#i&45N-dn81?eJOUWT!Mr7b(qd-rF+BOJsb3T^P59$cRp z?z6fo|2fgeZm=96inLw-RQ0!w_1IIk)(uH}08NGJtGiR0BoNu4zM9A?{~?z^4Cxbo zNd-v}ZY{W4HZvBj))&on>x`ps5hFlur~oQf=w}`9wyA{6vqjI5wRbB!^y{cS3-~en z>=^mv1$w+}USkn+NB?CUrUlHEq;??X*-J(?tmqFCyw3Icw+Zjk9`@YIEL_ExYvtIbqvPH##T6*8p24ODq~9!=M`{3 zLx^C85)0k|aWNDNI4^V5#L4eQ{|S;30}vAOYaS;h>l zH?D$zQ-pfAy4!mLJN!F@pOW*lL=R*BV`q1JR7JrYBGI@OqgxmvXidCRakcC@{+EFX zTBEV%r9J19X8xyd^5xBD=-9iJy-)b{fQ@rG0>n@-^~akB4?ZT>C*kDt{RFaM)BCEO zs)Dp2PLI&9xCKDx-rTQRL@cqi%-X#-X5k9yU(}+lGzPzx?A&?lb+9DG^-sU`6HNr- z-qr_CQbj?apzFGc91*sce7|m&{mTt-IIvO2^FbCo=Z=+fxeFw`f}=W0gk50?U#=5`T zgo(R=N_sUywCe~At@b}u3=3$oK|->X5ir=x?n>${2J;rH*a+B6bekIwpczUt| zU$eP4HUGRj*3NAH_R?~{vbl&bL>wyY!@Fo&!}pexPNnV&);R)f&^uAtpHe=ppXHsO zNQ2U8i(`SqN+y-S?p6&E&1LNm97X4#3q^P+iF8~t3!2h=V%&Eu#_jZZ!Fk{2W?K{L z^zdPPd7 zum?J7B%P4I(dAGX7`c91xD}Euu2mG!>oX|?4}7@Hwo@THqR8iUQ0{H-Y{ast%5uO{ zJXxPL>@fW?Yj{@kuci1u#M(CazrW98xf&ty-$j#WxMoq8MwMPuWDh7W3xA&=Or1|` z-;2Fn%@M^nfw>;E8{Hs-%f0xmoZCAiR>J;bSPVz6#%tad5epcx{_7PfnGQ4H#h?Vk zt>kqYXaWlvUD~AIcNPx$uM8bsz4ZP9C#LiUn&HKMI0^gOXOfx%crroMYX)dZGpc;}TJQ_>uV}b2~pqWWYn#;@AMua&XFTCEt zUs5e#PlT_$jPzcc&vy;QY`RFN9t&FCuboPQo%BAf`K`!8c90&{cnInyKx%@;tDW}x z7f$7psO2kO#;VCg^SF3G0I?GHAzkg|U2}MvxJG$jN-DbZTDV?wh|TM7M}3?#p^NLf zDTm`!ycfIQC+K2I^(Unq2H*OCMh{+iYSqs*S^9Z`c_ynFXi+r=nYcudX9l_$>YC1X zEN86~$8ZQia+F};eW4u!1#m|=DK^L3cD}#ypB>*#ht898<5Fpz4Z1@ds}}?OhX|R(9dRnDM7rJWkA#DTXIQL@HOHKaK7p zz)2N%p)aKgS0icNtzyd%Yx9}DzBYVXrm~L@BWH)A@=uElh`vP9V&e97O3h=&ZKj&rb)o>3s)_rTE!nw9EQ=EpsJzZHE*8s8QQ#xw6JD1f$F zpBVVE+nKYMIm?MiBl?rZbb_yI@N(ak2)T2S>9hn6_fFrvRr?-V_M&{c)Ig#ZZhIhu zG%uKjjfQ#(#9RF_v&1rFqIk2j;imtA_?qx9He{cWm1S>>Dk-ie%Ep<>1^FUeDEYAf z{&2bgS7QBW@fZwJg>>u~v!3wN6$EBsB0Ybv4=Qc)_9`LsB%7b-dy;0)SN^|pHY6-AA{`w=tKZmu^pM>sX!F$5&S9$f0D+k=qU^lTSx&U*jR7xMkbs!oIP z$bre-RQweB!R#*{RkCBUnYpnZ{w#2YT0V9X{k94Ch0(TI$jsaR#W-s9lQ`_y^Hw)^ z{t}zrPfsK7bazs;UA1P?_Ricjsg-9!siM^5*2vUABf*;!DXG5zWbtNUmv8JSo zrSC$VvEb04J4=7ePh#^7d=$UCIz?;|5#uK}eqgh9W6~oC$={Di4Ble}CVx~rxpdyL9OKq}`=qIj7qc?EwvV~4| zt>>1?NkON+NaznZT_XrK0}DPQ<|eWg<;o{A4iAw0KAEtf*`Wt)O9?)!nn_yo_hQvK zey~l;tT;r-0J<+C;}PY4)9oaOkGmEq-)@T5tJdeT?wN~ke_zXux?>HqXN3BhT{-I@ zz6ZnUiLv*iYi+;;8M0adhd7a?l-w+m{(vVw;V=Iq5xTeBPMraYELg2A#Ac)FkVgcj z8VaSfEpRx2UFedbIx5J*rZ14j|7F+dq=@a~(Up8JvxT3ztK~XG^pR0#!rNJ6`2CqkUzc4RvefymOpZ>6Xn5?#wZqf5G_Z$S|8n<`vQY8|kT4|n^t~=KUOEIT)xFNq%s)_s zxRex@3;o>fE<_O|oicrD+%SNhsnBOEY+X!nfOug{9x6&{*taU9{}}u!vvhuMe<(;V zPol{({{3U;X7PL$fHnva8Okf#M%=MjZazwk@bu7v?*T4{uNW7hrYxzCX(pdSuwNS~ z)%n4)u0*Dgzl3f$;!3GUOZ>C*K=1}VYViw5*mY2c!clG_8Y2=9V7xpPd;OTY)DP?? zrX6`wver3HQS!hz85+*tBtfX$rj=q(TqYS#+|a(!K^x(Q^aAPWD!=M&4WT^$v@Cz} zjf&mb)eq^Id5}wLo1%sa=e>{A`W(?@g76*;{c9s7_HB%Oh<|w>esBF~Z+!)R#Q2H$ ziWUe5)T|`egF#t|4~G%EaLiY@`4KMtR5ywj+mSe}gKJkao2688n>hJr6i-@wY+UyD zGxzF=5@S}?MiI65^&XE%fS8_J?#K)9-O(p9!!yr$Y1S7yq_l1s_v~2lj|e!(n135) zvpK>t;wsHO`sB1u_X1fx;c5*T7T+q5mu&7t@;KW3j(!CL@9J`C{_N@@=;L{@LrZ3rJf7Ft6g-qX1bKwxKh%0vUre!~o8EvUxGV#e z0&lf9a|o-I;*xeyGP?~9G~MxH=N)me^~cPWsXxm63(DQx#h^o4TWF9?NxxHAdfY^|4-4@eo+3Ww`t0hVE& z-)KXOkUr%&{&hTLO?Q`SubO!-bRf;F=3Ig?CVOEm5^pNB)h4y9yd=|eQ+TxUF^Y;! zOmHAjLkd+X1cNM>HAoKp`?-HIsV2@I8b&kjMgqs(FP{m3oYgDrKe3IZT_V5lK1exB zb~1eONr|60|Lp%^l;K{v@c=ueTn->_ml7*Bz{o}*>;1u;;Ges3=#2f{0{UF7ZmIi& zVe--T$#y8Z@b2GuzQZsA4}b$}!myaSt_Zsx=JnYb7aK$GhMawhw>(Mh-5tqV#61Y> zQzm0-Y#mo(=R{wca@A? z-3kdofYc+=Htrb?@r%RRD*FaCCB&gJaQ)~;k7a7|O&^S^WdA^PE<}WcFh6M$U5+n* zZxV+iXj$YhKl9`PFoIC%|M`wx9oGLgom!CPF)HGG{|mSXyteTU!*2VwF)Em9r)AUO zJ$|r;>Rf`lPUpki@o-Y!lX(+L7X#GX&Nj~0v7)_J``yYei2Nf;>(x)7p#5&cyx6Y| z_2+3vJyn+!YM|l>Bi&O%Azh9dgH+Q_HoHdc`wP|1OpP11ApG|;$em6N($Pt5rA-AN zH5WW+SWo*4YT#&ZXMFMym^dGje}RK`?Fu1V8x@PkgI`iC;z}i6y0Ivg3!c{itmgGc z74@`ExtiCy#ble`)wfKLn{{Ij{W0>ts(-jR_Fd(Fj@jCTRUP!-oPF+@c~@^ua1bU< z3hA+VlSA*J@rNp&@opF&vzYLd5bs+eu;Kj#iYDv-nvs0?(*hw~`pF*A0#^ycxh{Vf zdF{lpAG>H+Ys#DaY8;OBR)Gw`SnBGcwA>ncZJq}X?P(+KqsLP<6ysz>suCTGnf&FF zuYoAroJ6W{v1F%W|5N zP-kk&Rrp?22EJgDc4SJhStxnKIO6Fw=gd8u^`&V@a_k_0&6f@*ADklK1);I0#Cten zr{xnPe%nvX@!q_EWXg(Hr-4>(hLXuvRu7EGd!zj)0|w4FZ?_RTe@&zyh6K#k)Z_`^ zbORUa#+o1yZCL;xKaYG5@!QQ-OR|nW9ONZ!7;+BLn{S?P-wESJJ^dau8%AnzpVC)= z<_4kmsbBxRPxvXnwb5Y?O0EHJbjIUFQO9)?pM=C7lRl$;1mWUqGfSpHVOqnY1v>fn zin+Qx3=RA^`mgaGcJVuup*sJT^0*TONoQ7EU3LR|tP2>sZyaN`MKwZaCBFx*GK3ctfdHd-l zABdh>3U5ZHX8aSktpNELqeco=vnzMN5eh3nz^!-d*Ik(mjZ*Q6W)>ii{#oxz4PN0H zmp3XUP<^aq>X=3dXrdNjZE1I?CVu%Akx#`Tc!&Wni$649b*9>d38Wz=8i%7WznSe? zgKViH`k+FoZ?<&|x$dKg?H*v=z)fu@OQTe4C=M<(>e^W9Bptd>|(jR}UgHn_2r3E30a45vo)V z><3D6W4JVH3398>%gdOB?u8=!X1^OU(f{lSV(4$ESt%ilrjMNk<4b&jauV0CBl#6& z42!-IPI65LD*L34u81wWo_RcJQeK}#vk3~3?E|d?G+8E*0g!kEuQFI9LLq4F+&*wy zTAX{eQ1)C1HRQ?bHQ7L|xV2%u4 z6dWhSpa144eo2f_*goM;q5a4d1ghuh{ebcMP$P@a`EeSsjTX__t)(E3<1nm>-WMD+ z>Q&&^Rf;h2564 z>g2m)0T=vi*+Qlq8}`?1?VDRj=#0oMuB(gtOW6fd-%hd4U(G&};pm~gLp6h||H_I_ zo5q5|FED~14Dv67m5t599r|mkVXvfGW@eKP_3~Aen*W=+aQ=B`2K2A=xI^(vSJ1

GoJLS{dt2NhcnCC==u-P{{rL8T*NC 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

L(m$y`uvpcJeQ>#qH6dnU!vh!sLg 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 %~1Se687BA`A6r-2rZ;9clm;sFMt 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

GGX-)Do(`Hq(rL6x*^ zQ-btNE{uiSnV%4xKMhA@Em+a0PpXEg>aFIKil`Waww=BWILw|6{-!z#uz2^>el?Ts z6! zUo>`Z^wtUTgR);N$qoMmIxE;{_~|dtYS)Dno5hNKV^d1a{C)if9} z_;T8~D?Ot}hOy_t_>Z_j!e(V~N=$!ARs85rNtd`>i*UKc0qpG-5GzMtAU|#fNEcPcb7XRk0WIcg|y5L#K3x`atBHc0jw3_G&x5o*QZz z^t6sUks$l@*@Cb;#hq9 zmvVJaRpH)GXy|$8q&3-Kn1uJ(cZW(;GtO{EtbSw%3~|nK|4Zt}m1}5Iv7yMKlYD)1 z`UoMq0h`<{k7l}3H9iRV-Hg-&8~aU9ShFlS1YK*YGZg0%)r+C*=6b8z>5T1e!lG9F=a(=m1MC#nTDtDL1;|aZ@84On;7@QiP zgqRv$1=<7ywRMD1%gfy^WKl=7q(*0>hva!S(u25NO%T^3(a?% zBw2MD+O+tSO)VNVUKCT!FiHd(R{~PnWs}`Z44i~+a$1|ZQ|YNS>fQprsK60(NHA&Z z%=MG(X1*X2)4q1Q_x^i{1`03)D0+(R3_9Yqq=fUa_~Tk}Ao|kA?2h}`xp|R^auv6~odi7+52gV7uF=6GHc&K`t)+Pi!Yzw$ z%bD8Y(79WT`KYVW;qqZ?=MW1(GIncEtu2|VH(}F!9-<*+ z4vk3adMt&pm7pu0RHijv!k4LDX*bV2m$Upc$PyimjF&j`2`m@c8cv-gJ%koVy zoaKo5kyae{1PdpoO%t2uD1Q^a2-=|Z_sfdM9#2Mu^RpJn&N5@`dSCQ>AX@4->4`95 zJ-G;{CMc0oOQ2?F^!c4C}P}>3dh>V z5%7Dp!0r4afOApUmL$DAm}kAcIMtLVSK347O zOH2=tBKBJwRw1g$%dpxm>$#?qEd)}xHRdJ?&qzZs6*^JX^4neHjRixv6X$wt!e!*@ z>lx|+w|P!?i&YX1c4izXMBsDa^vt3hH{pzu3XNx?^^C48$NS}} zuC!^}NQXt` z@4tW8=ir%A98cr`>I2Znr}~`8!g!bE!qNf8P^{l(J0d1hMD(9+E#GL*R%zEyZXLV&%&pf?-GBauPIo zIA^nS?Vw?QoCUUH_@V?NJXU*m*<-$`wEo8c`cZS_0X}MLB3-5VEh8C@WEA!#&Tl)8 z>Vt=OB?jm-a3IQQbqYi}4npq3J9_82ajlV6-QD{{>`v`g&MjP#kq#tsvS8M$GUys1 z*`9}xz?fXszQoMz*TQHCPq`;WP$cf7vDsqe^5ptsH&tM`B?(5!iZ#ZrjNm!s2A*ZJ zX=Wz&rPLW!GMU#|4HC-wyv_OVBHXB(&}h z==JED;Tyn4j0MU}!a|F>3RpGS0necDZ@8`m%S9}$)HjWbw3$e{q)Axj{}R*Hf3I;S zoyj?@o-x|xN3>5~vz>lRl@TZJNwV_YNpc1aOFnrB2Ishy%ms4Bo1lMEj~3%wi<&#b z`3z%0O-EA6?8pQT~T)Sgfu`&j~bn+PC+PK#kKa(MDvscaM_bZrW0m1y`` z){6H>H_P3+chwcz#@hAhBwF}f6+wIAU46Zf6yesRX1JBjWozM=_958ccgJ0MVH++s?R>2Sp`ZX*Kpo?X$ zQ5%I!z^@pM;3kqP3yPG_dy6Ey1dl%;oRmtD%arQO!N43uT$Dut42*ABo?JYsqwFZ& z!i0zqg;4>q_cYWfp;b+8BEdh!xrmjWDB~g|7bCF7d~j*SruMcFO)rj#l|u5!{uR)#UVD`O`Kak`aWWG+?AR0=)Ub=l>RF_9kR4f=5x@T*cl>lj zcG~zwVtj~xFOkXH{gv)e{Hr`Vu@W-!PCIvq-%yB|@sG@?6IkkD0eXsutfyq7swlqAP7t*I(8VBDWq)1=6G@f9Cz80c;p1?NhFWl*Ql{&O2<=<#U z@yQEvOl(Br8fA|BKvYGp;>n6}ZDn8Kx^MiBQ+IZf`#5A8=Yk3H^XlH405IfFf&!Xo z@K^|VXf*qh=A~^N1Iogae#rLG)1sUFOES4*jd zaQ9Op{L)7hw7nLVVftFl<$aK>tm&FCk|%bzhs@z5(v@;^Wwna#%SFtJYb5i>#1Y_5 zV(8^jjaN=Lr*}GMIGUoJ=(rwj#-=q`ugBuVePTmL>kDAgh;J@}I5PwhC5*qf8luA2 z$pa-joom9a3KjKk>4Ce+lXxO zEKW9QthSo^dKvsh@X8fl^9ynYcK%s;FEa&Fl5SZ9V7V-AZH#1}bjzU`&K7l?sNw~& z=GZ!sdzt3h;b+_&ha^m<7E=}e^g?nPuoJ6HarwC9@b|_Jukhfjwig3W;$YbrI=A*QgXZQv*P`}%YHmWi^nWa zw)J2>qo9^A>m1&rtm)V0KCruUbY^SI$l`)OBGYxu2wdfXtIh+b*geWiY$x}o2D$%WFgl(6#W?#cwINEx8B7h)6F&Iz7E19 za0y1%gjIH$7n2#=Sg8mzF+joM8+i}uZw;=)@YYm(Uto8@OeUN9P2Af&bOlko zgX4*ml!egFUB)!E;(#u3JUH3Ta?WxZZ%jI4C{6_jVIwlOH+HD~FT#6MP2@m7QOdFY zJn7zuZA4?H@4ds%9Qjqfo$pl{R?HPRdsfS0V|Pdsp^>E@ zrlK1)O(IFzuqLZ_JFfZB0i_1r4r6A69a0hWq+w$@G@UL2Iup?iUg-EIIENJHkKvQW`E79ZfJp3ivOk)-6s0F!k=n##u8TpuWhZ9o7>=Vc8S zxWRfT`ekNy?iSGYrbp(dskqg@{%L??s8G=n0tw@D$vnRbFM8`E=kc-meCDBu_b9)M z{&KTZA#IPVqPWZp3`{`b2^YZEpP&xsS9J!B8-v4!Pm)N*(+#M!Z&H0lr{Yjrfp%|Tl=4FdYw@chA3vSpEfdegn(0L*MNSgC7 zf#W!fQy1%^To(osh2e4f?h9yy%BB-=_%a>s?OJeJERD}i5hM7C>c?ZHT&?Ki&7Km| zqrHLjjfl3pinW0ULs0P)XE=VUDc$!GOvSL(XKA)jYfc;6FngHR~@^U!l0s}`3xco$P>8Alo5abqCYPrj*m;oYLLwvtrB2;$rY ztz3paV+_u;9fLuGRTgZCH!Mob;H^imkd8F5p3&Egy3Ah)R?lRjW7LXRrkLO1khcaU z%5#@NxPUL#f`Dr%J>@Mqt>p)joihwL$Pmw+X|H60$K9VVKE*kKF$dB#d; zM|N1y#+|TLwj>kI!ZBkB)V*&fH3_qKD$5zH-XE?zKI$TYE&WjX9|2P?;!T!Db|ASm zF6l~ra?4ozgVy|bMQLtnbQ5Y2*ZS>8cJZ zQ>i%6yL6fJe=Pl%V^6WPj@tNTUVi$_`A)WUy1~yn$SFCDrKt~6p;ZN{khT)io{ejU zC1r20UWZPm^=4nWN{#<^qq3A+BlwAu@0f|QNjXv_WBJ2Bp`PaMR(`;dS<-q2(cW29 z8@$M2S@Ftl$0G}sZmUY#Db^?KqP8w|vYt9^C*b6;nNsQ_TU3W@Duyc>F0HbH>g}e! zix*(7+5`&Z-hI1hiW$*?DlCH80$(78F0ylpnL! zB+**=-~KsrF&Y43N69}LRC17WY2+Lv{iWrXU?Ru3`03_aBVgjH+f#U*< z`YC5EF~5`1pAn%~Eo`6;#KwnX&?Ay`NScD+S$|HJw@x#`AFkEuUf;IOV9~b}zZK4= z(;UH-bSR|YHi7xia^UPse0w%bU%s7uge=ivoUB7upueM{1hb)Xi#WuT$U)i=?Fb3M zN}6}0$47bUm5BSrOAY{hv9YmO^!DCA!SMmdZn*2ZvcRreX3fa2m8hNhnG}}}K$wmd zd7qb&&)GGRr_&JL!ZimsV@N1IO;jkoH|GV`^SfD-<$wXSt{ACIH$MSZRu_TDmgyx`y>A>91+fG&GKE2iAvq6z6hBr zP2PQ}exXoB727n08vmd;_vdHM0tOg}#RAx$UY>4w{1rUSN*42^1q``U|9ES(HVEk) zi_$do8CMCOXdO?2<~07Mb zZ`qdeegzW_BQP%qkK3}zGrgJP2BqMlHw9LoyCD{{$98?Lm3Oyfle+6c;82&g%~gw+ z)gRDv!U$idw&WTIhh6wfj;X6<$7W;}fuXQFmVr?#5$sjXQn`}xo6f^jE><01E@Hv- zmx!H$sQSp2hJM><5(H>kenA3v&QgyFOEwfxG?*rRk!3{;w|H5W4krVeRvWeC>42G( zYe*k2_k@-Tr*R2a!`6zLrMby8De9!g)PB`_WBeU>AtC!vy-*zNs^5|cn=JeO` zx0)lHG1yj|Jq=);g_;}OHkw}eFkTnJ){>2}Im+t!>U9fM7@6X>r&;EL{F_QVhfZd} zP||Z(=^s5_X`DEdn?iVc-L!(?tZzjagFg(=VW`}D%`{dMuw*Qb*6Dcuip{Hc2mJj195{1f}6fW747Kv zSpTzxByF0)h8jpj{co#b%f1JV7R0l5eI}BmH8r?@u2`7XAgp|HBQe0hA)YQw zwIL|*T~&_li_YuobW$BL&=o%G1wfoaH6C5>S}#8rHY0)-n7iRn1#sub~td*Gm#!ywtm$)#sydN%v3;lE0n#Zs~V& zBtG1+8``+fNYT3E)CibT9tnW7RQ2<@lG&G$v^@3Pv@h$PFI6&+o2>DRArYxb2~2OFi8k~aO}=IooZkYK?W(k2Q!%MmBr&H`~Sn2L3{ z$hT4AVc9?H>K>(gl4nyp2%}VYH(?B871Yo6jLH=Bv2BA2BR>Eh$irbhXUsXOk_I-9 z>_TxXObuc9VyVtyJQ>icbBY6?(|&#meh6*7xByin(I)kqVnrXHiS#JtYb|?cGY1I# z*IUn(H}SWrNtZ|vcma*jn3BB1(Egu|=+RpJcv@6ck+fl4o@a9I@Oi+l9=I1Vx|!4d zmY67fjFR4t!aB;7fmMhjCOXJpzv4HQJeZtyuTZH_+#0%_CJ5YbS67 zyZ;|SSN>CLDQ=&t8{&pf8+ca058!nGXzJJ0<}*8I&*Mhylk<-1T}u-LmdgY2HZ9vF z!O-rC`BL-bqptvmab-?*OX3d)m9*QYgrs)j44q1#*U>Am4QJr3WA&X z4_Vm~rfUUXBJ(4&wLH`m&8~;n*&Ppqe!WajbqcOxoDrC3LHY?;rP*svMdtsK7?^e9 z*{YmeKU=PAIQ>1Q_s+B&d=g2AEs&kzq-h54C*U2NXI4;YAPrsc&l1JuI=}&fAiVcP z-UN@67|@jxoi_G13-jrQvH9o9&-^j97z!8omNj8MZj>m>s7F*kBx=kQ0@k5TRprx$ z(dfH9^^wv+fWY;(6b)y!9KSDDjqnCp!FDI-HULS<!BLi}LGTGof!~uAb6$g0(aInMDsd;@rhE3pq+i;si!5orlUF+Zw<_J$&{Efjtvz+U! b(?4Kl`-JB*^!;9qObUf{zP^(bA5?z1OI*s|C?Zgdlp0PIRIRA&C|wIw7J2 z(c8}J`+ML2=bioBIWu?W&fPn^GxwbHJO_dxCOe-14+mSvXV6V@b+i-vuk7k*Z3jUx zMORxN>;KN*BsK>d7q9=f2tgi>&wT!`{C|?f!_mj}e-+qG&hF^q{=XqrkPz(VbCY1U z|F49wgne(S9FC4|H#hmO;pU*eso28*zna7IXJY>qdmKHyJZ@y6qsKG%8|in`pbW!C z{MYus1ook;>#HjWBE@388HN@KBZ2|&Uk5BGv*o`W0&Q?4+fAFG66}9h{{Ibm*!57l zDxX_X%G-@)B(fX*U;qDQ5$rb?;HtoSJYy+t?nCA1?P2@B`$6!B(EkpI%)`;&@xOCe zL_|b4g2vIq_5Y^o=6SI~;o&#W`NGx4+UG`k^1^Cx>Xdicri&}f%_crn*}fX`4XZHf zCXOjtc0mEm0{TS<@ALJ!X7<=;F-?>e4m?ecbGDRCg4#~cn-WIsa+(_29qXE!vX0MB zm-+pW5LE3WxL3Qp1e~NtRbXKkR3hM<(iD1v@z%N8oIEU1&-RgN+RIvRZS>Ciaz5}W zyFH*^J9|=Qk|Rf4<_BfY0uQJsL4m7qkN|$^9q1h>9F*>t9*`bH9qjG@J}^D#I^a1- zJb2bkmSe=q;GTlNlEhcI3`xa94jyAE1l!e*|MCOSqH6H`*;mO?@x&n6mM{4F^bY$h`Q4t#v@ zw~k)AU8L1&KVbSD<3Om_+H1$J1F*-cAmmlW*@+NKQNCrLf${BUqU8&eKmkk&82-Un zt>ogEr_PC(KMu;W8QJ%ed6WE;=y4YaW2_Wyy1o2(pNbhv>o0-k`t4?Lg;^F? z!+5$aoW*il9Q9C8h1Zx%FL~%W2u)Jq%1(h0JWH^EZD~Gr#P^$hsW~tl9f2vAXDogS zK@4xL9kyhH1?l$VMUnkkXD{6K1I=`!0$!1DKz~ zKE8Q*1O~5B;hKz^WO!monha8-B>bP=iO7iYL~zY-o>NO1^!z&RGi%D9D|)Jm%eg#= zv1a?LUglEnG7t9 zJxTHl^k+9Q$G4;Ih)V4)08M(x8iFFD>g?C$F-_m~n`y2x#rCenSPyO+GU*hYC?)La zfj`*XG=oBCn|g`Ot7K4>D{t6_YjVDHFAtju+vdMK-IpUoGBz-I1)$`rzf6?R&P>hK z=f~J(X#4xqcB{BjX^m?G+`7`?ZWox!=FxQfCsl@5iCY5^yn-MR)EBFjjnXnv0dwu^ z%387~WQ4pvH2@rx4HR1P(ZzqzQH1L!UHSAAboUC<{eo8jMHj zlCI>JgvA03JTAqlL%no?e@ma%s4{jg7pf;eL=LdE&WG;KW~=Zt>JWHC6;HQvA*429qnHMHRDQ6kHft)RfJ+;CGM49^dV z*N1BIH8tt14E?xs(yjhE@_7YI*EOoR-|c+SL8UiG>2qd~obQvX2`pVGr+>G~l>jhrm!onz-Ct@IlTxO& z9Fy&kC)AgudD!$iRY07&gIW(P!wUz>zU`s8mYLML$w!e8O9hRzBdp}jw=``yI^z8Y z)Chyk7?Jv1$=5_+yZXyB6M|Yv;Y-JFS0Nfe2&~z;BwgZ$@&(b zf);B`Wc4vbJcu?mKkJSle1x3TdJRtZKGqeGrbf|oIxk6v*SOq!{BV&7n`?xh_Dtis zS&OI>JE9aE!Y0Z>Vk~i%8@AQD32Rv)O?HlNr)LmencXwenCg0%&p~f!hi)wmF$6vC zPmSpP?Dv$IuxI7@iH@NHh=}f!{Wvh8uH^rk7VKBBRmM3v-t8(Z*h%@ z-Rk>}%y37U3UF>xAXV0lb&E`a0&{HQ45+Lof9OD1E~0^4pVs?d)hu^z5ZyW1?S^u5 zyTv|V@XO^@RZ%+)i+~*owJaMtlNRX*!5>i9%gt9<$;hAcg_A;=o%1gamxBky6 z2B;c5*vo$?fP%_XJkv^=k`-{qSP_A2wS0bF8&~AQlMlZ8ShZeq66FHT7o3G5Hi=j} zeRTFI1&C<8c(qFWuM&B&n~NGW&e}`hi|a?}k$cdE#nxFihAg3=OGlmsL-{g8K`_j> z;N`w;S)iIExMIzi_&pRMRd+J95E6i+U_i5#v=O?X*prg~hrCsjR2Tq5kId@4#;2Wc z>zQ-~v3}&?f2@|Wj7391SdkuQZ?{>g>kRZ-Z1;|qA$2`Dg1cb!J_T}>$ykV02%LBs zlc60IxxY9W{stTMAI}QBweui?$IofJ;3BmniL<6juXm1QuJ`=FCChkV@{+M!Ub(_a zM-}F0V^8@u8cN7KpnE2_A+XH&Hp7Q|m=40OtcnEkmn0D0Hb^s6AWXXm>GU^g2sA2DGNEE z(IN+lUcZQ|gM{7(KLVJY>_0M?KNIuL#u?rjhhumT#$eO~SAHql!-Bg8xnTcL?XufD zpwWNN0fL{*wWCR|gsHLL$RX^fxjn;org~l&B!Z0)5}(JNXZ}`Y_Nas%_cifAkVneS zK1ih>&#L-3%}5jWP6RC6ZmYQ%55V2!TAKsspLy3$ zhX2UC^bw_sQExDM6-qRn!b$KRV%MntU7|mw_6c08yQ|jN;Ia-Q1}wxUoHOz76wD6y@eT{f6YC zu_6?-g08L1vi!RB)n;rPV(WRv7=4LWj2N~s_9*&uL zLoO(IxO-Tx(npsfNT0Lw93V)3j^Jlq&0?ebi)JJOY5I62McHx0C+1L?vax=Yx7v|{jTefsqBW)> zk9x90ovY#@aBES2VW_+wgalPl)>d%_n||uyl9RBh&n1O>YHYm~@SRj%%0#(5)*bw1W|3vyX3E?OT~&{UoLV7L^L)bMeT3G4 zOAw-vmmwNmfdT=Ta~WDw#`)Xtvf|hNsLMllOG*n-(=RIm?Dcx3BC3d z4(}%F$rC_<#oE@KFV3Aim?fWYZWct35h;Rdh8lU;zr2+LjuqfFd`L{^*Lpb7KOEo5 zXzXa{yhcF>8#^^r zZ*;WxS}N_C|Cy8MTq+NrW)i`+6%vVMH|p~Sgnr{u&l^qP zI&-!FQ(+}miTk(Py(Eccz$VEKE(_O1zUD;Hcw&!lrq+P>w2K#feD(jyj% z3di$4diGofxx*0Yms_kpLlySkq5sww(C!w#D4?O%d#3iUQ_#ZE^(Dlz17m$dCiQUL(-UR}ZN+GX|ChtdzO7|WOhU_pbFh9ljXwvazQptl2GRLVL zDYE@g2iJh(4jUMbM^J3P2X^~N_)KbpV^j)il(Ui3 z1VEFIQ-i>6U>9@7D?vhyzjl20SlFZd%_~N(ud@2L89d(|eO#pqz&a)zO&?PLyTn>V z{IBNlOlz5Uiac}l4$4l;!Gmihqo~kC0Wj8=BI3KBrtLJIoo)cGd=C3B_h8#UT8_0v7+W(JG$9%U~Fw^3|)^CY=XU_C9P=)+z+kov}X z=R-J9v?=B>t)OH&&`DWR6vw)>UV;Cvf7JlU`Gy@8PgiC($BPcRsSTk|3Gb+vA{sz}QM>^~|6hW_2 zHEre6yizK9zQz{MkQ2No5b39$joLsf8HWS#x_T`)#E+*u{ekKPByG)UHGO;^iZn4V zv3vAIf>fLYb=|=>*t0JB?)k`a-I|2>750(7@k2I?^sVK}%xto%6)J$Sk~JpZ+F$OV zc|n4P*_1&r`W5gm(A;J0En_cD6nvK6$_6S0Ce^*u;;yIeNLWICb8C*ziVy0=7h$LC z?PL9#V`=LBl!rDj@i5{;1t7e0LiOcc6~*^QrYGX|U`aG4u($1rX*h3;b6VW)L&XO0 z`e{A5qI3==6Ytz7qNV;Roh+Fy8Ii_-hsEL4^YQHjEh(4|FSpTH+1CdcV}bjWT_dml>*3KQbZC+QrnXgA!g1ufsW~aR%(V>8(src026p1VWde6F{r=(U{KC%*_S?Xr8_8M* z@#!nIiY{E{L_?jw(ckCoUiztCr3$_F*qW?tfYJ<^Gg!9|-Y`l{Mxs0;-d#^UxR@48 z%N1{$le+_RLtzH_Oei;I@weWo)A4ERVg53X`K=;xpJMo=2m=PnJeY$~fSF6=&AiVp zEE|`r7k?o)0cprR>^w@fax&lZVmRAACOGda60< z+Y9N}48gp&`RxmNA{8*(MIV#mu(T|l&e6>~Ng9r8+ZB3@vX*q=dH*i;JTwgaz=7C= zPDI{-Fcu;hf{k!;LIexC@D4)@A9Gr9-;Y}P=jb&N@Zq2R&d4Lo!{9|=cZcPfBFUHR zenI>{E>WWS!(6!}O3L7+&?tr&Xi|OhM|W zr9X@Bh?>_lt)9HA-E}n?%vy2BoLzYLWR7np-vMLzRs>xTN5MSq70>zyk&`IYqBIU2 zVF-MsN4gSZ*stD!);8Ww+ zg+)PjQi6DuEhPSw7FP1`4%yf$Rm9y85~R{Y7`P~z__i!j5v9l4_-fujeMM;1vR5-- z3W`85NhO(@YsujF)+d9@OIcS(>1rXk>Ab29n#3Dol=MpTAPZA?0z;5{iYb<$1p%nG zc=t-uMoT?EDA!z;H}@m?7)dlvV7LJ_ngAjTh0RN{Qg=Xn0CXR_1-RNbl@+hgusuNQ zDY-FWn^EtKg#S%Z8y*MXRCTGXC@b0{v}K4Kd)VrMr_YQpS%v>9RaiPz)$sxf`0e2& zE$Wo`5;;3t{+K#BH;%Qu3a5$MG5yY7wf!ixEcyUoG_GY|i{T!wR$YW@oZX9>xI0|N z@a{As^lL&=b+06n>~(%23fQ=v1kpw8w@J#)M0+5jAZ$hVH?!SNJVqX3c~cs<0cNxP z)F|PAgbXfwW`iQUA8!NmQG+6?q{(3Tk6#T5RHXv2a$#C(#b9!L^xpaqT6vcN38s9D z+enH@x&cBJW{6O>7WWGPvf6>znfGuuJ*e zrW{iKl}jMcEWO35FR$Su)JIRPiT1)slAJ)5SORMvn^i>_T)ppl&Uwvf7IU%VP5t^( z-cO}QgY%Cx6U&|8BEeU)zn)|BG|J0w^(h)VvP{Q&nFnYcM`UT(PiOKKSW1Wn6Y(ue z(xmbc>~zWyZ09L}-1zU}j7PE-(cY;MJ8*x4)YO3?Q3x`=WrZL|LK=_WU@L&D?4`7q z?0F7SYnC1Fw2j%4j_)3f)0AgeWpRC#UO{<;7J8Yn+L=+H>BCiy1CQKaD1a0EJmWL_ z73rddzqWJL&_uk6({JweD?D}91Y9P=<+vezg&M64C}OFYl_7>a5&Y^b8p84m3L94J zT;yIFOC70^ehCTU!KC76<07iz6e}a* zIKJKOzq;we6+6JS4H=chopo2L2>B*|E7Ibs%XMGHZV2LIg{XH^>*?h-k<$Rg7S`Yt zWBK3h?SFf8SG(5vd+sO%Q81pJs+d(I#OjbRTU`o1Nv+ZY7ZYU6TqkPwCp$7NV^~E= zPe|-B(n?-PQ}YQr_ranl7rH=MHE{k5Db)Lx2%?RO+$yqnU&I>X?v`|{6{nw}lg3>O zkXf##&+%XZ8^Z^x0sB9B+sg%Z(1=3zIEru2RFZRg7z&|6j}2}-^yv0C6tGy>W?Cv~ zDN4yS$aJx*HT&p2omEC>#Q==DDla|PQlo^T>2vL`D%gv>v-nd-tx;fo61ymKpj_Q# zvOGhGIUMl$8R;5LywLlxD(OqiuI>S?TB9KxqsvGZay5MRF7Q)$xCA+cwDvfy_&ePg zXggHzyY51psawbzFiSm`nOuR4yBC83d@zQ0ow}4C{!wwTKv-cfAkM@>L_Y-kzB26r z%aHV^i%s02L4m){rowvtXZJlP_62RFPa2e&)wP1Jai2}Q6JuoC7aRBP{fG^cNzUfT zd;HD=M`-HC#ZNeTqFcdV z-RzFLWS$fP0LL9qrp$)*HtGT8H%7gos%x+O&OMf82Wn>i&cm`5zkv$^0*4Rhh}0Sn z*L5X`Bs&3`a@${d#io1rgQ?LN-T6<_Sv76&+x4FJYimy>=P*=3@7*gR6{@;(wMS=q zclOby5<*0GDn`ILQ`%eNF>{p%NCaZDl=hS?vHbkoM8mGcN$q_8dlT~6&F2K~y=yvV zz-9yTvQ{H^M!I5^mORes(qAYzojaJ89*e^&S>$xuL0F7y3G@&7i&KQ(%7|m9xyOo_ z8Al^%HiK~)YjHl7Qks`yMaY|QWuXAsi$*Or3Z~m(S$j(NC+qF4?_12h^h^=ii&c0X z-%exK3P94XH46=$;$%nkehH*I{zcj53w+UP{d+x)j##OL*<&k<2?aj9E>Lb2a=F3p ztazC;&;3^>=pX5mv|pO#Ho2oCHKd-IHXl%!_5OX-bd-Ma?RWdNFd_{I`r)Sn!MVDj zu;s$iY$bi~Phd*k?Dt=Tz-P5%cy}B2ttkpoRS;1$|0A47HQ3CI%T^rk#F-QY^Q1b# zamJ=KS$m}z+?i!Jk`#2Ct_ABukkMC&XoDV7tH0v4@dp>09Zc9E= z+asHe0pPGr+2J2-Drrev$6_OK)+;*Du7x5!qPl#o=UZr}=~Bl5BhL(&l-i1xUS1HB zf3UOVP$`AiZ;c$YdyXf4))b&{ZWjK*h<1z69!y-(93}m`T@&A6Hb{B5dN%4&1Z+@w zD6?Qu+r~L91hSlr?*cD9Jg-m-I4L8szq_Fz?Q82{4`}x^*>caFQOE(YkZxgLG zSh$905Ixr&58s6J;kMX3%&uqcqn?TX^SpH|J-B2|&wOY-h9cvTugfrg&B+T-E0B*= z*6vQvcfQjMFppbf`CiB1wN}&yio%k#Dj?S~t;p`v10;EmP|fr~xT`lflIK8QQTp)J z2=f|N4KjXsS!`HQy>z*UxLlbnJx3??+3H|S1bY>jlgt6jC62TDDRaC^}mEr zi-k`_n$&IIJ;(Y`*O+YkF*b7{WwuY7-LRrLRXabdZ-Z0Lv_bg!d0ja^^8oWf!>N`U z%ip>zp+y+N`*WJR)*c@OjqEq-Lj*h`5+;F~%HS-vCcF2_PuKN#daWNyw;$$?Y&9k1 zOPbvf+0Gn3v;^}%g7E85i?>tcX#vf<8eD`@U+v{y1OQR}mA@N^ z7*MOKS$JdS`3mCqUuO7G;L|%O2@@{f>v7cszy1~*u=GW}8#nU(tq*TcX%U{_{cJOK z&aKv0+o{6x?#pekrUutWpiaCYz8ono=R>LZwVB{WI)NXkdM(=bEC+f3G#~C@zd($2 zcV?U&lEJ#Vg=Y+9*Jpm-`gK0Snl_|ym+7&_tY!>_0}7L-#^3yh^~=yvNkeRC1Im`; z$_9U6Rqze}>JT5cPz{95ie$6|)0;|eA)QrAR0*vO^yoMGFrOF=tR=iyG%T4bp^@>B z6Lq~rXytNoFeSS)0f*lb_J4FzTe1@tW1cfwrpP#Rg8~v~jmGEPGbc}Kbm|IMUschL zUy5I*2mSF4J3FcWqSfX^!1eJf^UG}V@e#Vfr;feA%)nU0<^A`rqeWXpPvq_}3pi;1 z5GcoBcB-XyD|8$x@PUvxE6ti=W`@=kADj|8^?>JrYeDJ;4lennk^=TM(DW;qk|du) z8yi~asy#)4XY3v}?EAP+CK$91(M-4qSW)^=G8?5=2YD-e$q1Y4Nz;vk@fEnRJ3-d- zeNwyiFZWs{eI$?X*#jQ>)B+rL?3ZJboa5(;Wl6ufz-QxM;zO^4Aq7;9+bm3H39T`` z&5*d5WTH04xm>vZ-8TsU`iiL3eDSP`Uw^M8=x}@-ph_{ z%96EG&RJiufa8xjk=4;Mv#voz^uK=DeC>KVbsp9#_d2up_Zlxd*1uDh*#@jhjUVE3 z=QMYTDwAHmqFJV3g_noB1*hi55F%f-p!+VR-Bpj>6o5;V7WtefbK6|bU;u=xhsNg- z^?)@}N)ZNT2YHO9qd+uq_|c|8^Mvc{6P@;7*h^`l@a1M6X~f@1spE%eUB%1;+&!y1OWvyEub!Rh-3qIFUl;Z@Ssw;{x4*ve(OO zLL~siH>sEsa3#WV19KxhE>KJO^cme`;@yHtW81k44GLEns=Qqq@g4HO7fK28o|jwq zl0(aeuhS~W{K}?OeZh6J;@Un(V)Ogs{+KQB^gdScdqiKr6ESy;Ca~nO;U#~7iqL{ z#{>!(aois5%Cb@ZAlZ`u*}YSMFuwaY+ys~j#ONd_&21POc7ql3y(68>S6k9EqwC1@ z8?9B6As-jx60Vrfpv|-{^g|P_e(O)Nc+;PUYc(!a$*b<&0YKyfJ8YC$>f7!^O5sa< z<^JdIJ+Du2b(=pvq@4SmjD+Bv5X{O-E}niJ{R034-Bh>lR zkML)}+5MwGitpoB4H+v?X&S53bPOr4IZ~A532KM~a#uyH;x8-^oQP|>=6CXcu&*wPahxaW!%uOArkg%EK){h7VKW zdf|wYg58g6U*k$#iC2v|wokaq-N!zG-P_+Q8tiM2+wKqC-%j>Eo&wkGtykLnkNs+y zUKgYm!}7s<*sojv&9No~i(J5pafvB&nF0O55t5&zu=I59;&%qv_kI-C;`4y+wf^ut z?UBaXr?EaV-68 zMRbG>QArr8cC~u=e17p>ypfngpG7+r%m+VqD6)qs;ur6AK8))pdfr3+hxiUVP5!BT z8hgrE=#7(kHq(~ym(>KHeNE9On)|a_sgnsw)@mA6+Jt3J4Js{gjzz=lYv7R}^^K=_ z+s!OJ!eg?4i2TITk0-LT!-Jt$~^7rCmN%V?~zXBNcWrrnS|ZJyzm3 z;FNo|(*vtX=={#)HD1<42b1g^5^*kLqs_X01}FKXDyP_*T!Rh><)oCQm-?|B;0nnqc>Q?0R96G&mbxv(e7$RpKtv%) z+Tcu~IGOEr)-aQ;H^~4a>qQa&CXj#5U#=cTh9bLFq65n*djx+JhVUf7x;T7UqED`# zH8BaU|74jY324~-7It_`25mV$L|?Hygpv#NA?zqobfhS!iloBzjOGhA+N0@=I3x}6 zr#uCh3MIlkUy^7wz3T2A&Zn%d1d?hBpe<#qf#lvFx`E-HZkz$uEl8Cca4^tZ|A-+I zIlpS^F2^G2SsZT!=l{xr$2l1^Dg}lABsE`u$elAD3S7*+_E`H%?O+wD#~0XoA)c3EdDvgCZ+yT_j>>jbV`oc1$z$8ob)(+dPI9I#dX~gj0dQ@+5tFpW5>iiBio4+C z%HIQa;Bi-y+PCsPDRvOo#N;FIZB2C?i(7bcv5}+2iQw1{8icWLjH5T**gc@5IH>e` zTcf`t9g?&2vuzz)`U@_FOB)v4KHkmAQbH($y9u|=l9#KThDqjoMoC3RnMU+niJHN+ zuH$H1!X<9vfd5~Sow6%DEyrb@x1avOb*Ys8N|xELwoX6o0f0n3fBWZ9g2&l}<-IVG z4~a1Gmo9H*0Lb1o@hSZ)wC^kHzz^Y1LAc{+C0i162_zPrwtT7} z_lyO6>@8YIl6|tectyr;L8bqOjcoZ<>z4;`Wi);8`V#nVe?eG&NMgm^r$_s=wWW+d5&eD=bO0qZ$`!H>v;U%!7KJbmow=NT{k!F~? z;f=%8SBn!{+>rjqeICC~cNE_HBz+np-pywmoLH&>`BIzNzYRF~XMoOg(lGPR_lUJh zsIbAX9R}vVKbv4s0Mo~|6bj1|eAX0mLH6oY!<$Uu;Tt}-)c#^!9ph2 zUi)i2!>hZX_Nb+P$S*O}K^3oRGv!*@XgMM%YVq1(*SwN)6?vQ!(;qrr1OBRhALK{0 ze^q1)IZtZW(!@8N%lXb-v!Lg)XmpCvm%{t$O`2v!ZA591bRP{cLZ2ARRsBj+RY)x* z^j5tuikCNvNJSA9UT8QawGaQo3Ak>oD-3)3{ho52p}4gNBc<^C>y`6aPQe7;G$Pr* z)K)}&U_y6=>U?rAJh>x}V_3+MewqK?)OUQFj-;~>8B?ka;2K-^j{%WtgM5O4Dz!sB zXjI*!*W-~IEta4w$x6Q+A3_C=g>#JRBm{;Al%0rsPDS)e{;XT}-M+7rwd64MJ`8|M z6n9r>PW*`WkEC0{un06Hqu*#JktNB-)eCd_*VCn_aJ}(Gxn*H=ws-P~|LL@02=DBw z32a7r;VkkkLys2Ak5_tNHq;tN`llHDx(YP~SuJNPibBu7jIA9sWV~Z=$oQ}}Uk5Ik zL^HEQ&CH4h2QFJR=+@@>QV=;GaSI;usTEiS5N!L1fMs_r%7+pngBGQotdLF;_tb6k z7wuuHD-b?ZHKOTQlm)JAubpJqj;AYQC7;rQ@vA2;cOE|X7;KQoHM*fBWKdui8W`v+ zKK|sFCoyILKqIyIA+shAvvh++e_!UyBgi=O>ZRLjFYRhHE&Pb<dWLV$8HO|wml}=$Sb~*ZD6kELoYx!7_M<>Tbms08KlTU5K zeR`1|P6EE9Ib82Jjo3&w{s7<~wkNU7N2Ugdw+{TGIk*N)*5L2`5#%1v*aHLm_u&h> z|0!L!qd!pmE#*e=FL*71L8sSrNOLpIb`B~6 zn$n=Y4Ne!-B}C#s(^5=DJ_O~P@?>~FD2Qblng^xT1_4*WAY4#z1BNo{B?@@G`7^|g)9jpmnP4eMq zf2e>T_`Bli+*fLFr}vvU{kD>27zw}lWLSY*8F^GICE-g4I4r(ft#C^fTzL`a8tvRF zBKhZTqS4Ky4&kXxl!sy4Xp6)Jbd2outC!wjenj+4Yu;IREbpsSsd!$LMDkbDj~=Fyl8+%OF-6u@udBWYLfh^^1w-NF-EVIalSWQe+({C;s)UW^Vu`1|omjfy6> zf}4R)L?1ae6hzWj+i;goW_&^LW|2R02mR)+iPHYL{GdOh=MvzJSo`J-(Y_(FO~;H% zlFytWv?^l3A=}$~G;~_)?o9c0OT)@^baKaxR*(|5hDV+gCx;W-iIe3Mxb)^sbGnd` zy}f&IDhekC%s1}7w?V9uoR6&a^h>gWNWtl8pX#`VhEhgM_>VhoxRQsEO&0Byg|6;H-@wQ~VusYXn!vFpP~I^!50 z@qjCucOUkNJJh8E)eSNhKs}pR!i~yJvIF5hXW3G0&!4$l|Mh6jFiMHIjeD7(O8elfSOJU3`#0ug=y5Js6iuvr z3_)%!YQD20RxDwVP)N)xmlbhr=tYZ=jpZ~u7aWr%46b)o?j>D`4+s6(KR*B6skihc zz%#FU=iX!daV$Qx<@f3R$RZ6kfYGS}y%9rac2**WQxLxy#4ufsBswC4@bfeEM-!;H zg2Ck@-nY3>W2eOvl6Um-Cit}ff^8Wl4mV%C?HI-VqYz^tXmwv3oJp7)SQs=Tfr`{; ziUYO_d7~=q){r0H%ayrOef(n`?N`n^@Oretb(_B(q|$$!G~miF?ZS!ah>>-8dtW@f zK>&e=h17K9IaNLc=i~XUH3W04cE_~_0itC6kZ5&b97!~W3?ln_&nfvqkIH{G;a_4= zl$b6%QSposYv_?9F^`}26-C)AEIld8>2e2A7SP;l!H$A=(p|`&KU=o~byEjJNrl9N1v%Nau^pzz4Wr=Q2{6%$Un?}GJ=E4{cY3G9W z;j$4_JTXB|YQ^{eR5u%(H%)IL7?IV@ZH(O%r{CV)eP*k$9oFZ!3B`n} z>7Vg`^L)-$@y)63FVR|3*`v-mQ6129g3dIFO1}-}@Xtr-$*-ee2H}NC`OfMe; z3@?ce=VC;m|9r%TPTRu$E z1S*9lzb9{aw8gI)XLbFyrT!f!_ls`kQMZFrn}qDew?&rb6l0ceV0Y~}br#{3(h3oW zAyZ>oj?b-`Cz>e1RGU9jZ!rynIL`g4=oL{p8N-Mdl6e%(UYLQ&vG13<61kvoBJve; zFv}x7sI2waG=$|(JYfin737YggE)j8p^~yT84q_LzH9T72_?a)c+k1JOY&*1x;@+; zB7bpwP4hSH&NJ^id^2!;_Kqdn=3?3Tdjxj@G=hfcmG!1b0%!mDf8487{pG|a33gX# zi4EMs3-rEz_tA531f6LN+1XYhqC@Xq{P-+Vb`AjDlzRu>oql?0M34qt4i@fUPmC<-vGzC7Nq%7 zd_(>Zg#3~q$=mC6h}<-|talp<9rmp!oKljFqgq$r(;j|5Tt(8C)=ZaVtIe zWZ?aPfdewsV77BKGo6P>GtpX(Tf~d^CSU;LX0`Wtjz&pvSh{@P_dvOjR+CJyx}T}% zT~vl~6(81CH`(jRL|(`IiY}WQ8toVWX08K`q;Gme*-|-W|BexTkzkisJo_xvaxC>A z08deI{BPcrreY7QESYl1^w~BzgH6vjNKQcaV`?z(<3R2j+n`azXe5Nt8rLDXF&+%5 z7aA2nYTIiS6q!blsv(yrT{QLXkBVen2<8t-n7<{HyH{ll&hfr{Cd?}vk`tyEH)FuY zZhTyWWWypgRxC^P@+DT)YzD`9{8;r7ANxp%bhjc>Lu#lo0TUPzZP1G^yn}-Ju)&VYY{_rG=ETZ(21ge_$Z~U%Y&0w~SQ??6Pxj_pH zxWI2X>`SPmZp(w=KT_i&vP#d}>62eG6uY4Wc#o}e?hrO2D0APbK)f#@VoyW^Cl-C5 z>x~}$?6~i7_i2GWIC;NqmJC=)t@@Id1J<{dPfpfn1EcM$ZwyWjT0mj2t3Js5csf@Ag^H{*~) zD#JEaNgsAOrh&qo9gP>iDB2>Lr47U0Lj5k1i!CsMlPMcp;q9qh``##G$_n7f;v1aw zQO|f79Cuq3h7`D>fAoY}&-#)EqIeMGuP`6tECNadB7%ND(WiWVIrZYGGf+q9;JJpW z6Lz`SDH1{n=7K$GnQ-FnG4Gm2z$zHD!jmSOR{*dmRN?3$58zgNQWB zZvS-3Ld9lq?Uj^|fR+^zHmDF!SI_vFA(aho!6UBOHwmI}ik1d&smWBHwWcxkG&ed2 zdQ|+M-xs&pq2sUiev-@u9YX8#Za15dxH?$gmV4gUE{pU><<@NWiR_m@X;#_xLObR; z$lb7Vv>hUFDb_O;z}}0y-E-Fnh|2A7a5KK_4im9PrxRiHy)Ok6x3E_|_zV!(b=}x=DXYwL{j#0LUs+ui zkJ`6Lx6^CDtWx`Dj#oz{bCwUkP;FOSyM}t`Ou^h|zu>&3uPF4b`F`&ZLwMnY53atA znh5JQPUFQ|y|+MeI6}0=4iKyef<+L&^N^&)+gJk6mVTsDPW3*hU^C6f54L(H+D+Qm z0gdpwG4a?3^R1+@2P$CxWj*^h5vgM*gty&( zH-iIU7K*&va1vxH{c(|w<=3iGWF%VeMaqr2I>y>fKSa$Lrdk$Zb7PQutvffay?iSo z##(3&{ZMj-PNdK3$z*ZP$f$-Z&h~W1Nqf@?`4T- zx?%2bA?Wsx@T7&%1nA`+sGMVX-)!EHTrPD{!;!g0*Pri z7)&7x7*Qklh=1LyM!K9fiGUHEK?xbUaPdFRxNlYPa!~}g;#EACzz@9exPDPmESWs3 z5wAB)<(|eZ-Amlo*ds&wxzRlM@Tqw?`Z!VVRrD{VDfYkEcMqBHz)7Z!4Db5zTx%`f zi(oT6ZEab3L5-|;B^`L_$~RwQ@OF7@^1y(D4^C6BLDWW@lg3Si%_B+XPW$NJr15*e z(t8G^JxaqFj&q$|3>>EP5wfcWnDhG~XVKgHo7#Hh-AM9M@17^!oDhVQa|FT3 z=V5sAL9wZqsLR~dq}Rg8N!9g`F!=zxwE*7Rt?;cB7!)wsb+Zk{Px$e3xzCKfWC$)uSCa}R{4Hu4|!Tf37EjDE+wTXbH9p2Nsl+@Mf^31-WZ6((^r@08p2GSiT<97a$7DC;(` zdVUr3zC~h;$Q11Q|C)dCCVPOkEZrEI`YC#i^@tl?L#oe~rffAg0D!HQxQ%HFyPiHV z$%DYelK0Qiuqp!T0=_7r8f?nwpS8*tC`J6TgBCzD}bgz?Wwp1i&q0Nk0Q&s zkE+>rH^ZhVh}^-_FL z5lSQX@rekXFzRsX;P4_Fp_|giusX4y-=IAKCk^3*jwg$xZfs!pI&x1~hF}v4i>`4T z?48&Q1OPC9y<#M4#%uAwc+X1b)+U<#aak7=X(cpP59W@)k{H8_0!Q@>bFTA9fE~^I z8BK{B8p0)t=!UT6;flksg?5ZC3bVjitF!k`C(TZ2ZSeVwxscwF8O}}cCt@9@SeBgQ zc0*2m{S7SqnzHR0e2Mxwy!g!(N=7&_#KpR4FvM16i>2#HlbJpiMS%(;(J7jz0%?Pv z6eJ28F3tqPMJH~!qANCGZAe)oV%Ite^)pK)H_2o1dtH@q=5 zzG^>iUS;fW?ZSNe>7z^_n+QLdh_X8#3{h2

nG7GSlMx9F}>B)N20+0N>tpm&{mP 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

hH@8DVUvJG1I?xD|gw21zmJ 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

1xxh3cIi2rLz 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 Z!FG#+vv?EPk_RWFWkMrk-Ar8H{{XUKZ1(^F diff --git a/tests/images/heif/RGB_12__128x128.avif b/tests/images/heif/RGB_12__128x128.avif new file mode 100644 index 0000000000000000000000000000000000000000..e0e33264c6e4ba4936899150436affc7c6c6cf90 GIT binary patch literal 11184 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

JhX_V^(7AeGKFQSN)ciFp2@ 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 literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGB_12__128x128.heif b/tests/images/heif/RGB_12__128x128.heif new file mode 100644 index 0000000000000000000000000000000000000000..8ee3f57de3a374d7a46b4d10775eb424566be297 GIT binary patch literal 18468 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 SJs<-o)srGOjs4$!0Rn(5%d)Eg literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGB_12__29x100.avif b/tests/images/heif/RGB_12__29x100.avif new file mode 100644 index 0000000000000000000000000000000000000000..2505e36ee571f20504334582db7e5f94df9f9920 GIT binary patch literal 3253 zcmXv}2RIb&AHTE3$v9+p90_qk;kdGumAz%Ale5=J#@Tx%QZ zql~gT|LgaEexL92eLv%QpXdF&004mZkssR2AprRZK*nE2AsRd7a72?1cp6W&q&l&w|v_+^KW;sXl%!CPQ}p{OKU6l^d`#n%}CtLh^IH#{%YY z{{A8^x$|vyjmMX(`W-+~`5?QMFpLIo<^`$b0c0ci_p~vjDsPAhvg*9&!2Casg_&qoErJ*Lb#+QA!tGr+#q~N z!4TY#7%7mj_4<0!a&V}I%F1s|oYryo8s9SODZGyKduj!thhPPDC@SWu-1b@(F!;PC zGT`w=D#XFNqUy?#U{nw7z#=tMq@{qX$X!W@KdLr5uAc&{DV8c0yd|p($6bm%;))dX z@t(pZG2pU#l?t|t%GQdBn84(XLx8b%LL&btm*$<%TUT!>)2HC=W^YhlT%7l|dBY-! z=BC5?-mtd5$#vyHkUH=0TjOSIKf0EVoGqKunyoB5o!FvZQ2!8fc$XynuDTducopis zG;=Ne;zDGOaz5A1I&cT2Mynuhoy)Pf-CdvM!IePCm8HcGtLb&zXHcS9xyusjaNkq( zqgS?~1n$?;%__*gRCjq$vsL59=Z`*7$1s9FEF7Ibni5duw1b;k4P}5qbtOHP7X%u# zG?scBhBGGi-TX~t9|#^u9yxC|6c|itLi#vkwb_3df)k_qm}mP-PFh8%o#DCd_{iue zBMj0ym@0QX75mZDU*qDYapC48?JrA0u{5t8M4cb7Fm*4lONjZ`x6oTea9DAORj z992T9vFa{o$i>rvHGpn)WJhd_9}#UI(&H&9`O~^_^qUvbaa2cZUbV6E&L5G@OBSUm zIp#|~LTuE=(8w4&sbvyZ@Ohk)CjOAp3&pgJs++8ZI2Wsb?zgb&Pfyl^9WE<{VE`1Fw>fk3 ztLpv~9a8lWJ3mG3m8eezYe*xYV#YXzMV!pRF>*Aaw5L8FBxo@*C=<~o&AH3Q%je?il2D_hnCaiXCDb|mdxtFPzW70kTMu!Ijm}Kt zi^{8)D`w`K5}AETW<2IH?$TBEaw@mTWtG0_V^FvX2^x9QW$NyChP7v=1%z);9#Q8g ze_S$HSJ*yj0d)cU}m0&92p2vdRoIXN&)}g(s;!bt>R|KlzGhn%{v{9h2;v zJQJ5 zKr}aH!knLZtmEW{>sRw$4dkY1Ws!C5^{o#an75N`U#ecNGL#js$N0$Kp1)(3&<^Q6 z+54?JB82#)2Gy1!J-e`gNR)}yaKoAOl&Cmi`w)*LK_+%*uer%3V7PmI`TlU&(>DgEUQJQRkE4jzAF{{l zX>2kt=KR4SZl%nmqH;=M0*d^&(B=8}J(2s{c+}g}%1#Q-a?J14Ub36E? zae@W*EBlndwN2J4(evnYTK4)vu=F1KfrE^rvFhrt>C{x4BCfR)W&Y=C57E$%@iyN! zXCCQKi_v)tQCD_7Kgp<zA$*UjKI1*ooj2aj zL1*Xg;RvWCJR5VR&5EYV?D|oUuuk)>kd{2N4JN=WD=oXEL_;7<;l1n<@vPyFZ(xxD zbC{3)oGxc8sXw!}LX7~-tifnK77fiTSzuKLk4$O>>#gtc7v*M&tH)6y_=ameqjq@9 zDR%@CmTE^3EhL?fjIZkBxQG&cfB|H;cb^3grkgmslF6IoI>9Kzrmyv)6=vuZu*YM7+f4FVMd((Sqx$)fI`nF z?^sp;Pu7N5Bgbdp5L3N PRi5n*souN4UTyzB;1%S; literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGB_12__29x100.heif b/tests/images/heif/RGB_12__29x100.heif new file mode 100644 index 0000000000000000000000000000000000000000..2a222ace531beb04f0374febdc679aca52a5104f GIT binary patch literal 5575 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 W_1>YGZ}`PUQ2=tWbvb#2{r>@Ilh$Ma literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGB_8__128x128.avif b/tests/images/heif/RGB_8__128x128.avif new file mode 100644 index 0000000000000000000000000000000000000000..e565e6f7f0a93c2ce3ab57ab9ed6a0e6ef01cd56 GIT binary patch literal 5972 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

o!q{7u@NK%%i3JOwdN5iky*CdFlz(* zhCg-7csRf3zfBme_<$s6jO*0A3}f>by_93)!)8GfdKsO`>gj~bMjC_^O-yb!{*Cf|lEA?lEx}d&7YPcbp-`gU5N7J8!NJjdSy9X< b?=5*k`D%!@=OH`q&x?D-Z>I+g!Iu9Au4xG4 literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGB_8__128x128.heif b/tests/images/heif/RGB_8__128x128.heif new file mode 100644 index 0000000000000000000000000000000000000000..f417391776146b2a6b2f852cc2d3c8df60a6a6ba GIT binary patch literal 6647 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 YQaPx# literal 0 HcmV?d00001 diff --git a/tests/images/heif_other/exif_xmp_iptc.heic b/tests/images/heif_other/exif_xmp_iptc.heic new file mode 100644 index 0000000000000000000000000000000000000000..60c6d06ade824d6df62dd47b614d1c53d6fb55b0 GIT binary patch literal 56925 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 C4me8y literal 0 HcmV?d00001 diff --git a/tests/images/non_heif/LA_16__128x128.png b/tests/images/non_heif/LA_16__128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a3e108d9d6f37c788d6092e2bfe752cc1367b6 GIT binary patch literal 28047 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 i;ipZ;vgczlw*C*F$3l?K3a%&s0000el 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 Eg2M)PKL7v# literal 0 HcmV?d00001 diff --git a/tests/images/non_heif/LA_8__128x128.png b/tests/images/non_heif/LA_8__128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..39b4f9fa018a27219cfc6ea4519d8aee3fc0a24e GIT binary patch literal 6716 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 S(ve_LfO)$5xvXH zT@@%*nQ7^hsLr>z${$DN!jqUpb#%p5k(q=ZXW$g5T5qPFE>N}HOhQ%5UD!@lp$oS~ zs+ODSU;Qz)(M($1z*RfVR5fwcPBWDQ64l}!S7m0(B_yhuJFdR**Q}+dn5OcSs>~Gk zN>n2oOv4pS^**MdD5WYh`7fCI8kl;h{x|F41x$bHx2E3!nd0f{=d#Wzp$Pz4JRWuc literal 0 HcmV?d00001 diff --git a/tests/images/non_heif/L_8__29x100.png b/tests/images/non_heif/L_8__29x100.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd39468f0417238117c259928c1922e901b5860 GIT binary patch literal 127 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 diff --git a/tests/images/non_heif/RGBA_16__128x128.png b/tests/images/non_heif/RGBA_16__128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..b81bf23042ef61e82cec9ab71ef7b456345c55a1 GIT binary patch literal 65996 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 z'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 literal 0 HcmV?d00001 diff --git a/tests/images/non_heif/RGB_16.png b/tests/images/non_heif/RGB_16.png deleted file mode 100644 index 1cebe40f0638126025fdf8d61ee699fd6f2fc847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3974 zcmd5;X-HI26uxQY7^YI8*sV%q$CnbX+gG@pAI$ZfyL{hwzH_ebiVB-Q zZ^=AD$ozQ);hzB#&Q{<-g&HzG!zrNs>zWNnd_hpQO@#D=&E6S<+Kc(0SP0RoU0#uKuN6 zTcz%+EKv{V2bxB-Iffqd8`r>rV!2Y+k)EQ=U2F6 z?ra>)Gs}mrAId8;BvTN+Y!v>U#_hVm{HTvc{cn^P%+V5j0*s*h9rvp2jEbzQTAVtV#(R0>h)9)2uU#d?L1`H2? z3R#Su(a1uFai9V{-HCS?a5to&fptWs2m=NH!PERPpOG8SQ^`o|IHnw<14HSPZ)Z_M z7ZVgb7ht_zPoYw{xy`XW9X}K_1X){HE<`?wn@ja11rHD5$?`}El>(G_zXT3YI7iec z`fok2HwJ2VVv|6wjK2rGEp>f>g)&@AUan2FSQG%y38sl|&!6}QTo2@~O=4~m%zF?n)>RJ#7lEhahvF>eE)UBN z;{C8|K`iKsX9f!q8?qHY_(}l4wBY&c{s9F7nt-Q)(12|)Q{F$c2381SYr`dgWjaBJ z!7{~MN*xF54I82J@LXbMAQoyJE-u9k)aC^3lzA|3U6b|#U>6z|Uu9Aa>)#p(wyr<# z1z@0Hcs$SJW`$`n@QiD6YLf&y8A?-hBA7WOnzT48!9)U@gY%`FYbN=}=vXzq zQIe+;2F(eY^khRJfCUB5`wMPl(`%L3UPo<_Z_?OU_&XQlscAJ5n@HVI?A zWun3n2X`2*Are|Epa#7GH%;E#_z3}zTn(pSoWU&M{sPX(BUz7Ue>6U8RI;%VhHqEc lXz|P?xgGAxGZm@fIV&z5lP|tn)J_K(60t2x@i^qj`QL_dXA%Ga diff --git a/tests/images/non_heif/RGB_16__128x128.png b/tests/images/non_heif/RGB_16__128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0033f472b75bb8a36985df61b8403c5d6f7440 GIT binary patch literal 13255 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 YY>pp$<0UuG{ypWMrh!J8+LM?62NZS(UjP6A literal 0 HcmV?d00001 diff --git a/tests/images/non_heif/RGB_16__29x100.png b/tests/images/non_heif/RGB_16__29x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5f899589ca61481923f47701250282e6641ce8c7 GIT binary patch literal 5379 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 literal 0 HcmV?d00001 diff --git a/tests/images/non_heif/RGB_8__29x100.png b/tests/images/non_heif/RGB_8__29x100.png new file mode 100644 index 0000000000000000000000000000000000000000..d154dedbfe610363987c9f95950ac2caa5b12bf8 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^vOt`|!2~3~-dPg}q-J=!IEGZrd3()}tHD5k^-KAJ&G^1Os?s}HdJo7i{eN_;`1QD$>#Xbc?zmfJ zJN-e~Z1d{EyY+=Ywc^)H8?*KEw#S`U-EsHX*|?bR@psbp@)yRZb?D8SSqO9^gQu&X J%Q~loCIDDRVln^# literal 0 HcmV?d00001 diff --git a/tests/leaks_test.py b/tests/leaks_test.py index 5c842163..2c8a0f88 100644 --- a/tests/leaks_test.py +++ b/tests/leaks_test.py @@ -7,7 +7,7 @@ import helpers import pytest -from PIL import Image +from PIL import Image, ImageSequence import pillow_heif @@ -25,7 +25,7 @@ def perform_open_save(iterations, image_path): if helpers.hevc_enc(): out_buf = BytesIO() image.save(out_buf, quality=20, format="HEIF", save_all=True) - elif helpers.aom_enc(): + elif helpers.aom(): out_buf = BytesIO() image.save(out_buf, quality=20, format="AVIF", save_all=True) @@ -35,23 +35,22 @@ def perform_open_save(iterations, image_path): def test_open_save_objects_leaks(): from pympler import summary, tracker - image_path = Path("images/heif/zPug_3.heic") - perform_open_save(1, image_path) + image_file_data = BytesIO(open(Path("images/heif/zPug_3.heic"), mode="rb").read()) + perform_open_save(1, image_file_data) gc.collect() _summary1 = tracker.SummaryTracker().create_summary() _summary1 = tracker.SummaryTracker().create_summary() # noqa gc.collect() gc.set_debug(gc.DEBUG_SAVEALL) - perform_open_save(5, image_path) + perform_open_save(8, image_file_data) + gc.collect() + gc.collect() gc.collect() summary2 = tracker.SummaryTracker().create_summary() results = summary._sweep(summary.get_diff(_summary1, summary2)) # noqa - summary.print_(results) - for result in results: - # look for strings like: `_cffi_backend.__CDataGCP`, `_cffi_backend.__CDataOwnGC` - assert result[0].find("cffi") == -1 - # look for strings like: `pillow_heif._libheif_ctx.LibHeifCtx` - assert result[0].find("pillow_heif") == -1 + if results: + summary.print_(results) + raise MemoryError("Potential memory leaks") def _get_mem_usage(): @@ -67,31 +66,69 @@ def test_open_to_numpy_mem_leaks(): import numpy as np mem_limit = None - im_path = Path("images/heif/L_10.heif") + image_file_data = BytesIO(open(Path("images/heif/L_10__29x100.heif"), mode="rb").read()) for i in range(1000): - heif_file = pillow_heif.open_heif(im_path, convert_hdr_to_8bit=False) + heif_file = pillow_heif.open_heif(image_file_data, convert_hdr_to_8bit=False) _array = np.asarray(heif_file[0]) # noqa _array = None # noqa gc.collect() mem = _get_mem_usage() if i < 100: - mem_limit = mem + 1 + mem_limit = mem + 2 continue assert mem <= mem_limit, f"memory usage limit exceeded after {i + 1} iterations" @pytest.mark.skipif(sys.platform.lower() in ("win32", "darwin"), reason="run only on Linux") @pytest.mark.skipif(machine().find("x86_64") == -1, reason="run only on x86_64") -def test_nclx_profile_leaks(): +@pytest.mark.parametrize( + "im, cp_type", [("images/heif_other/cat.hif", "NCLX"), ("images/heif_other/arrow.heic", "ICC")] +) +def test_color_profile_leaks(im, cp_type): mem_limit = None - im_path = Path("images/heif_other/cat.hif") - heif_file = pillow_heif.open_heif(im_path, convert_hdr_to_8bit=False) + heif_file = pillow_heif.open_heif(Path(im), convert_hdr_to_8bit=False) for i in range(1000): - _nclx = pillow_heif.private.read_color_profile(heif_file[0]._handle) # noqa + _nclx = heif_file[0]._c_image.color_profile # noqa _nclx = None # noqa gc.collect() mem = _get_mem_usage() if i < 100: - mem_limit = mem + 1 + mem_limit = mem + 2 + continue + assert mem <= mem_limit, f"memory usage limit exceeded after {i + 1} iterations. Color profile type:{cp_type}" + + +@pytest.mark.skipif(sys.platform.lower() in ("win32", "darwin"), reason="run only on Linux") +@pytest.mark.skipif(machine().find("x86_64") == -1, reason="run only on x86_64") +def test_metadata_leaks(): + mem_limit = None + heif_file = pillow_heif.open_heif(Path("images/heif_other/exif_xmp_iptc.heic")) + for i in range(1000): + _metadata = heif_file[0]._c_image.metadata # noqa + _metadata = None # noqa + gc.collect() + mem = _get_mem_usage() + if i < 100: + mem_limit = mem + 2 + continue + assert mem <= mem_limit, f"memory usage limit exceeded after {i + 1} iterations" + + +@pytest.mark.skipif(sys.platform.lower() in ("win32", "darwin"), reason="run only on Linux") +@pytest.mark.skipif(machine().find("x86_64") == -1, reason="run only on x86_64") +def test_pillow_plugin_leaks(): + mem_limit = None + image_file_data = BytesIO(open(Path("images/heif/zPug_3.heic"), mode="rb").read()) + for i in range(1000): + im = Image.open(image_file_data) + for frame in ImageSequence.Iterator(im): + frame.load() + frame = None # noqa + im = None # noqa + gc.collect() + gc.collect() + mem = _get_mem_usage() + if i < 300: + mem_limit = mem + 2 continue assert mem <= mem_limit, f"memory usage limit exceeded after {i + 1} iterations" diff --git a/tests/metadata_etc_test.py b/tests/metadata_etc_test.py index 15f4845e..19184861 100644 --- a/tests/metadata_etc_test.py +++ b/tests/metadata_etc_test.py @@ -1,7 +1,7 @@ from io import BytesIO import pytest -from helpers import aom_enc, create_heif, hevc_enc +from helpers import aom, create_heif, hevc_enc from PIL import Image import pillow_heif @@ -10,34 +10,34 @@ pillow_heif.register_heif_opener() -@pytest.mark.skipif(not aom_enc(), reason="Requires AVIF encoder.") +@pytest.mark.skipif(not aom(), reason="Requires AVIF support.") @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) def test_heif_primary_image(save_format): heif_buf = create_heif((64, 64), n_images=3, primary_index=1, format=save_format) heif_file = pillow_heif.open_heif(heif_buf) - assert heif_file.primary_index() == 1 + assert heif_file.primary_index == 1 assert heif_file[1].info["primary"] out_buf = BytesIO() heif_file.save(out_buf, quality=1, format=save_format) heif_file_out = pillow_heif.open_heif(out_buf) - assert heif_file_out.primary_index() == 1 + assert heif_file_out.primary_index == 1 assert heif_file_out[1].info["primary"] heif_file.save(out_buf, quality=1, primary_index=0, format=save_format) - assert heif_file.primary_index() == 1 + assert heif_file.primary_index == 1 heif_file_out = pillow_heif.open_heif(out_buf) - assert heif_file_out.primary_index() == 0 + assert heif_file_out.primary_index == 0 heif_file.save(out_buf, quality=1, primary_index=-1, format=save_format) - assert heif_file.primary_index() == 1 + assert heif_file.primary_index == 1 heif_file_out = pillow_heif.open_heif(out_buf) - assert heif_file_out.primary_index() == 2 + assert heif_file_out.primary_index == 2 heif_file.save(out_buf, quality=1, primary_index=99, format=save_format) - assert heif_file.primary_index() == 1 + assert heif_file.primary_index == 1 heif_file_out = pillow_heif.open_heif(out_buf) - assert heif_file_out.primary_index() == 2 + assert heif_file_out.primary_index == 2 -@pytest.mark.skipif(not aom_enc(), reason="Requires AVIF encoder.") +@pytest.mark.skipif(not aom(), reason="Requires AVIF support.") @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) def test_pillow_primary_image(save_format): @@ -64,7 +64,7 @@ def test_pillow_primary_image(save_format): assert heif_file_out.tell() == 2 -@pytest.mark.skipif(not aom_enc(), reason="Requires AVIF encoder.") +@pytest.mark.skipif(not aom(), reason="Requires AVIF support.") @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) def test_heif_info_changing(save_format): @@ -93,7 +93,7 @@ def test_heif_info_changing(save_format): im.save(out_buf, format=save_format) im_out = pillow_heif.open_heif(out_buf) assert im_out.info["primary"] - assert im_out.primary_index() == 2 + assert im_out.primary_index == 2 for i in range(3): assert im_out[i].info["exif"] and im_out[i].info["xmp"] # Remove `primary`, `xmp`, `exif` from info dict. @@ -104,12 +104,12 @@ def test_heif_info_changing(save_format): im.save(out_buf, format=save_format) im_out = pillow_heif.open_heif(out_buf) assert im_out.info["primary"] - assert im_out.primary_index() == 0 + assert im_out.primary_index == 0 for i in range(3): assert not im_out[i].info["exif"] and not im_out[i].info["xmp"] -@pytest.mark.skipif(not aom_enc(), reason="Requires AVIF encoder.") +@pytest.mark.skipif(not aom(), reason="Requires AVIF support.") @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) def test_pillow_info_changing(save_format): @@ -159,7 +159,7 @@ def test_pillow_info_changing(save_format): assert not im_out.info["exif"] and not im_out.info["xmp"] -@pytest.mark.skipif(not aom_enc(), reason="Requires AVIF encoder.") +@pytest.mark.skipif(not aom(), reason="Requires AVIF support.") @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) def test_heif_iptc_metadata(save_format): @@ -175,7 +175,7 @@ def test_heif_iptc_metadata(save_format): b"\x1c\x02\x19\x00\x07Hungary" b"\x1c\x02\x19\x00\x08Budapest" ) - iptc_metadata = {"type": "iptc", "data": data, "content_type": b""} + iptc_metadata = {"type": "iptc", "data": data, "content_type": ""} im = pillow_heif.open_heif(heif_buf) im.info["metadata"].append(iptc_metadata) out_buf = BytesIO() @@ -184,9 +184,10 @@ def test_heif_iptc_metadata(save_format): assert im_out.info["metadata"] assert im_out.info["metadata"][0]["type"] == "iptc" assert im_out.info["metadata"][0]["data"] == data + assert im_out.info["metadata"][0]["content_type"] == "" -@pytest.mark.skipif(not aom_enc(), reason="Requires AVIF encoder.") +@pytest.mark.skipif(not aom(), reason="Requires AVIF support.") @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) def test_pillow_iptc_metadata(save_format): @@ -202,7 +203,7 @@ def test_pillow_iptc_metadata(save_format): b"\x1c\x02\x19\x00\x07Hungary" b"\x1c\x02\x19\x00\x08Budapest" ) - iptc_metadata = {"type": "iptc", "data": data, "content_type": b""} + iptc_metadata = {"type": "iptc", "data": data, "content_type": ""} im = Image.open(heif_buf) im.info["metadata"].append(iptc_metadata) out_buf = BytesIO() @@ -211,3 +212,4 @@ def test_pillow_iptc_metadata(save_format): assert im_out.info["metadata"] assert im_out.info["metadata"][0]["type"] == "iptc" assert im_out.info["metadata"][0]["data"] == data + assert im_out.info["metadata"][0]["content_type"] == "" diff --git a/tests/metadata_exif_test.py b/tests/metadata_exif_test.py index 22e4f98c..69641e58 100644 --- a/tests/metadata_exif_test.py +++ b/tests/metadata_exif_test.py @@ -14,7 +14,7 @@ @pytest.mark.skipif(not features.check("webp"), reason="Requires WEBP support.") -@pytest.mark.skipif(not helpers.aom_enc(), reason="Requires AVIF encoder.") +@pytest.mark.skipif(not helpers.aom(), reason="Requires AVIF support.") @pytest.mark.skipif(not helpers.hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.skipif(parse_version(pil_version) < parse_version("9.2.0"), reason="Requires Pillow >= 9.2") @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) @@ -32,7 +32,7 @@ def pil_image_with_exif(): _exif = Image.Exif() _exif[0x010E] = exif_desc_value _ = BytesIO() - Image.new("RGB", (10, 10), 0).save(_, format=im_format, exif=_exif) + Image.new("RGB", (16, 16), 0).save(_, format=im_format, exif=_exif) return _ exif_desc_value = "this is a desc" diff --git a/tests/metadata_xmp_test.py b/tests/metadata_xmp_test.py index 6e6e3885..a1890402 100644 --- a/tests/metadata_xmp_test.py +++ b/tests/metadata_xmp_test.py @@ -16,7 +16,7 @@ @pytest.mark.skipif(not features.check("webp"), reason="Requires WEBP support.") -@pytest.mark.skipif(not helpers.aom_enc(), reason="Requires AVIF encoder.") +@pytest.mark.skipif(not helpers.aom(), reason="Requires AVIF support.") @pytest.mark.skipif(not helpers.hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) @pytest.mark.parametrize( diff --git a/tests/mode_convert_test.py b/tests/mode_convert_test.py deleted file mode 100644 index ca88d6c6..00000000 --- a/tests/mode_convert_test.py +++ /dev/null @@ -1,118 +0,0 @@ -import os -from io import BytesIO -from pathlib import Path - -import helpers -import pytest - -from pillow_heif import from_pillow, open_heif, options, register_heif_opener - -os.chdir(os.path.dirname(os.path.abspath(__file__))) -register_heif_opener() - -pytest.importorskip("numpy", reason="NumPy not installed") -if not helpers.hevc_enc(): - pytest.skip("No HEVC encoder.", allow_module_level=True) - - -def test_primary_convert_to(): - im = helpers.gradient_rgb() - im_heif = from_pillow(im) - im_heif.add_from_pillow(im) - im_heif.convert_to("BGR;16") - assert im_heif[0].mode == "BGR;16" - assert im_heif[1].mode == "RGB" - im_heif = from_pillow(im) - im_heif[0].convert_to("RGB;16") - assert im_heif.mode == "RGB;16" - - -def test_convert_to_same_mode(): - im_heif = open_heif(helpers.create_heif()) - assert im_heif.mode == "RGB" - im_heif.convert_to(im_heif.mode) - assert im_heif.mode == "RGB" - # Image should not be loaded, when target mode equal to current. - assert not getattr(im_heif[0], "_img_data") - - -@pytest.mark.parametrize("enc_bits", (10, 12)) -@pytest.mark.parametrize("mode", ("RGB;16", "BGR;16")) -def test_rgb8_to_16_bit_color_mode(mode, enc_bits): - try: - options.SAVE_HDR_TO_12_BIT = True if enc_bits == 12 else False - png_pillow = helpers.gradient_rgb() - heif_file = from_pillow(png_pillow) - assert heif_file.bit_depth == 8 - heif_file.convert_to(mode) - out_heic = BytesIO() - heif_file.save(out_heic, quality=-1) - assert heif_file.bit_depth == 16 - assert not heif_file.has_alpha - heif_file = open_heif(out_heic, convert_hdr_to_8bit=False) - assert heif_file.bit_depth == enc_bits - assert not heif_file.has_alpha - helpers.compare_hashes([png_pillow, out_heic], hash_size=8) - finally: - options.SAVE_HDR_TO_12_BIT = False - - -@pytest.mark.parametrize("enc_bits", (10, 12)) -@pytest.mark.parametrize("mode", ("RGBA;16", "BGRA;16")) -def test_rgba8_to_16_bit_color_mode(mode, enc_bits): - try: - options.SAVE_HDR_TO_12_BIT = True if enc_bits == 12 else False - png_pillow = helpers.gradient_rgba() - heif_file = from_pillow(png_pillow) - assert heif_file.bit_depth == 8 - heif_file.convert_to(mode) - out_heic = BytesIO() - heif_file.save(out_heic, quality=-1) - assert heif_file.bit_depth == 16 - assert heif_file.has_alpha - heif_file = open_heif(out_heic, convert_hdr_to_8bit=False) - assert heif_file.bit_depth == enc_bits - assert heif_file.has_alpha - helpers.compare_hashes([png_pillow, out_heic], hash_size=8) - finally: - options.SAVE_HDR_TO_12_BIT = False - - -@pytest.mark.parametrize("img, bit", (("images/heif/RGB_10.heif", 10), ("images/heif/RGB_12.heif", 12))) -@pytest.mark.parametrize("mode", ("RGB;16", "BGR;16")) -def test_rgb_hdr_to_16bit_color_mode(img, mode, bit): - heif_file = open_heif(Path(img), convert_hdr_to_8bit=False) - assert heif_file.bit_depth == bit - heif_file.convert_to(mode) - out_heic = BytesIO() - heif_file.save(out_heic, quality=-1) - assert heif_file.bit_depth == 16 - assert not heif_file.has_alpha - heif_file = open_heif(out_heic, convert_hdr_to_8bit=False) - assert heif_file.bit_depth == 10 - assert not heif_file.has_alpha - helpers.compare_hashes([Path(img), out_heic], hash_size=8) - - -@pytest.mark.parametrize("img, bit", (("images/heif/RGBA_10.heif", 10), ("images/heif/RGBA_12.heif", 12))) -@pytest.mark.parametrize("mode", ("RGBA;16", "BGRA;16")) -def test_rgba_hdr_to_16bit_color_mode(img, mode, bit): - heif_file = open_heif(Path(img), convert_hdr_to_8bit=False) - assert heif_file.bit_depth == bit - heif_file.convert_to(mode) - out_heic = BytesIO() - heif_file.save(out_heic, quality=-1) - assert heif_file.bit_depth == 16 - assert heif_file.has_alpha - heif_file = open_heif(out_heic, convert_hdr_to_8bit=False) - assert heif_file.bit_depth == 10 - assert heif_file.has_alpha - helpers.compare_hashes([Path(img), out_heic], hash_size=8, max_difference=1) - - -def test_rgba16_to_rgba_color_mode(): - heif_file_orig = open_heif("images/heif/RGBA_10.heif", convert_hdr_to_8bit=True) - heif_file = open_heif("images/heif/RGBA_10.heif", convert_hdr_to_8bit=False) - heif_file.convert_to("RGBA;16") - heif_file.convert_to("RGBA") - helpers.assert_image_similar(heif_file.to_pillow(), heif_file_orig.to_pillow()) diff --git a/tests/numpy_test.py b/tests/numpy_test.py index 72ce3ada..9e09af95 100644 --- a/tests/numpy_test.py +++ b/tests/numpy_test.py @@ -16,16 +16,15 @@ if not helpers.hevc_enc(): pytest.skip(reason="Requires HEVC encoder.", allow_module_level=True) -# Creating HEIF file in memory with 1 image and 3 thumbnails. +# Creating HEIF file in memory with 1 image. im_pillow = Image.effect_mandelbrot((512, 512), (-3, -2.5, 2, 2.5), 100) im_heif = pillow_heif.from_pillow(im_pillow) -pillow_heif.add_thumbnails(im_heif, boxes=[192, 128, 64]) heif_buf = BytesIO() im_heif.save(heif_buf) -@pytest.mark.parametrize("mode", ("L", "RGB", "RGBA", "I;16")) -@pytest.mark.parametrize("im_size", ((256, 128), (127, 64), (63, 64), (31, 32), (20, 100), (14, 16), (11, 16))) +@pytest.mark.parametrize("mode", ("L", "LA", "RGB", "RGBA", "I;16")) +@pytest.mark.parametrize("im_size", ((256, 128), (127, 64), (63, 64), (31, 32), (20, 100), (14, 16), (11, 16), (1, 1))) def test_numpy_array(im_size: Tuple, mode): im = im_pillow.resize(im_size).convert(mode=mode) heif_file = pillow_heif.from_pillow(im) @@ -33,25 +32,3 @@ def test_numpy_array(im_size: Tuple, mode): heif_array = np.asarray(heif_file[0]) assert np.array_equal(pil_array, heif_array) assert np.array_equal(pil_array, np.asarray(heif_file)) - - -def test_numpy_array_pillow_thumbnail(): - pil_img = Image.open(heif_buf) - thumbnail = pillow_heif.thumbnail(pil_img) - assert thumbnail.size != pil_img.size - np.asarray(thumbnail) - for i in range(3): - np.asarray(pil_img.info["thumbnails"][i]) - pil_img.load() - for i in range(3): - with pytest.raises(ValueError): - np.asarray(pil_img.info["thumbnails"][i]) - - -def test_numpy_array_heif_thumbnail(): - heif_file = pillow_heif.open_heif(heif_buf) - thumbnail = pillow_heif.thumbnail(heif_file) - assert thumbnail.size != heif_file.size - np.asarray(thumbnail) - for i in range(3): - np.asarray(heif_file.thumbnails[i]) diff --git a/tests/opencv_test.py b/tests/opencv_test.py index bad37b76..4812b477 100644 --- a/tests/opencv_test.py +++ b/tests/opencv_test.py @@ -1,11 +1,11 @@ -# With OpenCV we test BGR, BGRA, BGR;15 and BGRA;16 modes +# With OpenCV, we test BGR, BGRA, BGR;16 and BGRA;16 modes import os from io import BytesIO from pathlib import Path import pytest -from helpers import compare_hashes, gradient_rgb_bytes, gradient_rgba_bytes, hevc_enc +from helpers import compare_hashes, hevc_enc from PIL import Image from pillow_heif import HeifImagePlugin # noqa @@ -22,14 +22,14 @@ def test_save_bgr_16bit_to_10_12_bit(enc_bits): try: options.SAVE_HDR_TO_12_BIT = True if enc_bits == 12 else False - image_path = "images/non_heif/RGB_16.png" + image_path = "images/non_heif/RGB_16__29x100.png" cv_img = cv2.imread(image_path, cv2.IMREAD_UNCHANGED) assert cv_img.shape[2] == 3 # 3 channels(BGR) heif_file = from_bytes(mode="BGR;16", size=(cv_img.shape[1], cv_img.shape[0]), data=bytes(cv_img)) out_heic = BytesIO() heif_file.save(out_heic, quality=-1) heif_file = open_heif(out_heic, convert_hdr_to_8bit=False) - assert heif_file.bit_depth == enc_bits + assert heif_file.info["bit_depth"] == enc_bits png_pillow = Image.open(Path(image_path)) heif_pillow = Image.open(out_heic) compare_hashes([png_pillow, heif_pillow], hash_size=8) @@ -42,14 +42,14 @@ def test_save_bgr_16bit_to_10_12_bit(enc_bits): def test_save_bgra_16bit_to_10_12_bit(enc_bits): try: options.SAVE_HDR_TO_12_BIT = True if enc_bits == 12 else False - image_path = "images/non_heif/RGBA_16.png" + image_path = "images/non_heif/RGBA_16__29x100.png" cv_img = cv2.imread(image_path, cv2.IMREAD_UNCHANGED) assert cv_img.shape[2] == 4 # 4 channels(BGRA) heif_file = from_bytes(mode="BGRA;16", size=(cv_img.shape[1], cv_img.shape[0]), data=bytes(cv_img)) out_heic = BytesIO() heif_file.save(out_heic, quality=-1) heif_file = open_heif(out_heic, convert_hdr_to_8bit=False) - assert heif_file.bit_depth == enc_bits + assert heif_file.info["bit_depth"] == enc_bits png_pillow = Image.open(Path(image_path)) heif_pillow = Image.open(out_heic) compare_hashes([png_pillow, heif_pillow], hash_size=8, max_difference=1) @@ -59,45 +59,65 @@ def test_save_bgra_16bit_to_10_12_bit(enc_bits): @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") def test_save_bgr_8bit_color_mode(): - rgb8_buf = gradient_rgb_bytes("PNG") - cv_img = cv2.imdecode(np.asarray(rgb8_buf), cv2.IMREAD_UNCHANGED) + image_path = "images/non_heif/RGB_8__29x100.png" + cv_img = cv2.imread(image_path, cv2.IMREAD_UNCHANGED) assert cv_img.shape[2] == 3 # 3 channels(BGR) heif_file = from_bytes(mode="BGR", size=(cv_img.shape[1], cv_img.shape[0]), data=bytes(cv_img)) out_heic = BytesIO() heif_file.save(out_heic, quality=-1) - assert open_heif(out_heic, convert_hdr_to_8bit=False).bit_depth == 8 - png_pillow = Image.open(BytesIO(rgb8_buf)) + assert open_heif(out_heic, convert_hdr_to_8bit=False).info["bit_depth"] == 8 + png_pillow = Image.open(image_path) heif_pillow = Image.open(out_heic) compare_hashes([png_pillow, heif_pillow], hash_size=8) @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") def test_save_bgra_8bit_color_mode(): - rgba8_buf = gradient_rgba_bytes("PNG") - cv_img = cv2.imdecode(np.asarray(rgba8_buf), cv2.IMREAD_UNCHANGED) + image_path = "images/non_heif/RGBA_8__29x100.png" + cv_img = cv2.imread(image_path, cv2.IMREAD_UNCHANGED) assert cv_img.shape[2] == 4 # 4 channels(BGRA) heif_file = from_bytes(mode="BGRA", size=(cv_img.shape[1], cv_img.shape[0]), data=bytes(cv_img)) out_heic = BytesIO() heif_file.save(out_heic, quality=-1) - assert open_heif(out_heic, convert_hdr_to_8bit=False).bit_depth == 8 - png_pillow = Image.open(BytesIO(rgba8_buf)) + assert open_heif(out_heic, convert_hdr_to_8bit=False).info["bit_depth"] == 8 + png_pillow = Image.open(image_path) heif_pillow = Image.open(out_heic) compare_hashes([png_pillow, heif_pillow], hash_size=8) @pytest.mark.parametrize( - "img_path", + "img", ( - "images/heif/RGB_10.heif", - "images/heif/RGBA_10.heif", - "images/heif/RGB_12.heif", - "images/heif/RGBA_12.heif", + "images/heif/L_8__29x100.heif", + "images/heif/L_8__128x128.heif", + "images/heif/L_10__29x100.heif", + "images/heif/L_10__128x128.heif", + "images/heif/L_12__29x100.heif", + "images/heif/L_12__128x128.heif", + "images/heif/LA_8__29x100.heif", + "images/heif/LA_8__128x128.heif", + "images/heif/RGB_8__29x100.heif", + "images/heif/RGB_8__128x128.heif", + "images/heif/RGB_10__29x100.heif", + "images/heif/RGB_10__128x128.heif", + "images/heif/RGB_12__29x100.heif", + "images/heif/RGB_12__128x128.heif", + "images/heif/RGBA_8__29x100.heif", + "images/heif/RGBA_8__128x128.heif", + "images/heif/RGBA_10__29x100.heif", + "images/heif/RGBA_10__128x128.heif", + "images/heif/RGBA_12__29x100.heif", + "images/heif/RGBA_12__128x128.heif", ), ) -def test_read_10_12_bit(img_path): - image_path = Path(img_path) - heif_file = open_heif(image_path, convert_hdr_to_8bit=False) - heif_file.convert_to("BGRA;16" if heif_file.has_alpha else "BGR;16") +def test_read_8_10_12_bit(img): + heif_file = open_heif(img, convert_hdr_to_8bit=False, bgr_mode=True) np_array = np.asarray(heif_file) img_encode = cv2.imencode(".png", np_array)[1] - compare_hashes([BytesIO(img_encode), image_path], hash_size=8) + compare_hashes([BytesIO(img_encode), img], hash_size=24) + # here we test `decode_image` method from _pillow_heif.c + path_to_png = "images/non_heif/" + Path(img).name + path_to_png = path_to_png.replace(".heif", ".png") + path_to_png = path_to_png.replace("_10_", "_16_") + path_to_png = path_to_png.replace("_12_", "_16_") + compare_hashes([BytesIO(img_encode), path_to_png], hash_size=16) diff --git a/tests/options_test.py b/tests/options_test.py index 6a615555..46a2ad13 100644 --- a/tests/options_test.py +++ b/tests/options_test.py @@ -1,16 +1,19 @@ import os import sys from io import SEEK_END, BytesIO +from platform import machine from time import perf_counter import pytest -from helpers import aom_enc, create_heif, hevc_enc +from helpers import aom, create_heif, hevc_enc from PIL import Image from pillow_heif import ( from_pillow, + libheif_version, open_heif, options, + read_heif, register_avif_opener, register_heif_opener, ) @@ -19,7 +22,7 @@ @pytest.mark.skipif(not hevc_enc(), reason="No HEVC encoder.") -@pytest.mark.skipif(not aom_enc(), reason="No AVIF encoder.") +@pytest.mark.skipif(not aom(), reason="Requires AVIF support.") @pytest.mark.parametrize("register_opener", (register_avif_opener, register_heif_opener)) def test_options_change_from_plugin_registering(register_opener): try: @@ -40,20 +43,17 @@ def test_thumbnails_option(): heif_buf = create_heif((128, 128), [64]) try: heif_file = open_heif(heif_buf) - assert heif_file.thumbnails - assert str(heif_file.thumbnails[0]).find("bytes image data") == -1 - assert heif_file.thumbnails[0].data - assert str(heif_file.thumbnails[0]).find("bytes image data") != -1 + assert heif_file.info["thumbnails"] # disabling thumbnails and checking them not to be present options.THUMBNAILS = False heif_file = open_heif(heif_buf) - assert not heif_file.thumbnails + assert not heif_file.info["thumbnails"] finally: options.THUMBNAILS = True @pytest.mark.skipif(not hevc_enc(), reason="No HEVC encoder.") -@pytest.mark.skipif(not aom_enc(), reason="No AVIF encoder.") +@pytest.mark.skipif(not aom(), reason="Requires AVIF support.") @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) def test_quality_option(save_format): try: @@ -77,20 +77,22 @@ def test_quality_option(save_format): @pytest.mark.skipif(os.cpu_count() < 2, reason="Requires at least a processor with two cores.") @pytest.mark.skipif(os.getenv("TEST_DECODE_THREADS", "1") == "0", reason="TEST_DECODE_THREADS set to `0`") @pytest.mark.skipif(sys.maxsize <= 2147483647, reason="Run test only on 64 bit CPU.") +@pytest.mark.skipif(libheif_version() == "1.12.0", reason="`DECODE_THREADS` parameter is not supported.") +@pytest.mark.skipif(machine() in ("arm64", "aarch64") and sys.platform.lower() == "linux", reason="skip emulator") def test_decode_threads(): test_image = "images/heif_other/arrow.heic" # not all images can be decoded using more than one thread # As we do not know real performance of hardware, measure relative try: options.DECODE_THREADS = 1 start_time_one_thread = perf_counter() - open_heif(test_image, convert_hdr_to_8bit=False).load() + read_heif(test_image, convert_hdr_to_8bit=False) total_time_one_thread = perf_counter() - start_time_one_thread options.DECODE_THREADS = 2 start_time_multiply_threads = perf_counter() - open_heif(test_image, convert_hdr_to_8bit=False).load() + read_heif(test_image, convert_hdr_to_8bit=False) total_time_multiply_threads = perf_counter() - start_time_multiply_threads - # decoding in multiply threads should be faster at least by 12% - assert total_time_one_thread > total_time_multiply_threads * 1.12 + # decoding in multiply threads should be faster at least by 10% + assert total_time_one_thread > total_time_multiply_threads * 1.1 finally: options.DECODE_THREADS = 4 diff --git a/tests/orientation_test.py b/tests/orientation_test.py index aad836d1..b1c8ab9f 100644 --- a/tests/orientation_test.py +++ b/tests/orientation_test.py @@ -91,16 +91,14 @@ def test_heif_exif_orientation(orientation): out_im_heif = BytesIO() exif_data = Image.Exif() exif_data[0x0112] = orientation + # Image will be automatically rotated by EXIF value before saving. im.save(out_im_heif, format="HEIF", exif=exif_data.tobytes(), quality=-1) im_heif = Image.open(out_im_heif) - # We should ignore all EXIF rotation flags for HEIF - if orientation > 1: - assert im_heif.info["original_orientation"] == orientation - else: - assert im_heif.info.get("original_orientation", None) is None + assert im_heif.info.get("original_orientation", None) is None im_heif_exif = im_heif.getexif() assert 0x0112 not in im_heif_exif or im_heif_exif[0x0112] == 1 - assert_image_similar(im, im_heif) + _im = pillow_heif.misc._rotate_pil(im, orientation) + assert_image_similar(_im, im_heif) @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") @@ -110,35 +108,31 @@ def test_heif_xmp_orientation(orientation): im = im.convert(mode="RGB") xmp = get_xmp_with_orientation(orientation) out_im_heif = BytesIO() + # Image will be automatically rotated by XMP value before saving. im.save(out_im_heif, format="HEIF", xmp=xmp.encode("utf-8"), quality=-1) im_heif = Image.open(out_im_heif) - # We should ignore all XMP rotation flags for HEIFss - if orientation > 1: - assert im_heif.info["original_orientation"] == orientation - else: - assert im_heif.info.get("original_orientation", None) is None - assert_image_similar(im, im_heif) + _im = pillow_heif.misc._rotate_pil(im, orientation) + assert im_heif.info.get("original_orientation", None) is None + assert_image_similar(_im, im_heif) @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") -@pytest.mark.parametrize("orientation", (1, 2)) +@pytest.mark.parametrize("orientation", (1, 2, 8)) def test_heif_xmp_orientation_exiftool(orientation): im = Image.effect_mandelbrot((256, 128), (-3, -2.5, 2, 2.5), 100).crop((0, 0, 256, 96)) im = im.convert(mode="RGB") xmp = get_xmp_with_orientation(orientation, style=2) out_im_heif = BytesIO() + # Image will be automatically rotated by EXIF value before saving. im.save(out_im_heif, format="HEIF", xmp=xmp.encode("utf-8"), quality=-1) im_heif = Image.open(out_im_heif) - # We should ignore all XMP rotation flags for HEIFss - if orientation > 1: - assert im_heif.info["original_orientation"] == orientation - else: - assert im_heif.info.get("original_orientation", None) is None - assert_image_similar(im, im_heif) + _im = pillow_heif.misc._rotate_pil(im, orientation) + assert im_heif.info.get("original_orientation", None) is None + assert_image_similar(_im, im_heif) @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") -@pytest.mark.parametrize("orientation", (1, 2)) +@pytest.mark.parametrize("orientation", (1, 2, 8)) def test_heif_xmp_orientation_with_exif_eq_1(orientation): im = Image.effect_mandelbrot((256, 128), (-3, -2.5, 2, 2.5), 100).crop((0, 0, 256, 96)) im = im.convert(mode="RGB") @@ -146,18 +140,16 @@ def test_heif_xmp_orientation_with_exif_eq_1(orientation): out_im_heif = BytesIO() exif_data = Image.Exif() exif_data[0x0112] = 1 + # Image will be automatically rotated by XMP value before saving. im.save(out_im_heif, format="HEIF", exif=exif_data.tobytes(), xmp=xmp.encode("utf-8"), quality=-1) im_heif = Image.open(out_im_heif) - # We should ignore all XMP rotation flags for HEIF - if orientation > 1: - assert im_heif.info["original_orientation"] == orientation - else: - assert im_heif.info.get("original_orientation", None) is None - assert_image_similar(im, im_heif) + _im = pillow_heif.misc._rotate_pil(im, orientation) + assert im_heif.info.get("original_orientation", None) is None + assert_image_similar(_im, im_heif) @pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") -@pytest.mark.parametrize("orientation", (1, 2)) +@pytest.mark.parametrize("orientation", (1, 2, 8)) @pytest.mark.parametrize("im_format", ("JPEG", "PNG")) def test_exif_heif_exif_orientation(orientation, im_format): out_im = BytesIO() diff --git a/tests/read_test.py b/tests/read_test.py index 3e215291..82b2e301 100644 --- a/tests/read_test.py +++ b/tests/read_test.py @@ -18,15 +18,37 @@ pillow_heif.register_heif_opener() +def test_open_heif(): + heif_file = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) + for im in heif_file: + assert not im._data + + +def test_read_heif(): + heif_file = pillow_heif.read_heif(Path("images/heif/zPug_3.heic")) + for im in heif_file: + assert im._data + + +def test_bgr_mode_with_disabled_postprocess(): + with pytest.raises(ValueError): + pillow_heif.open_heif(Path("images/heif/RGB_8__29x100.heif"), bgr_mode=True, postprocess=False) + + +def test_add_empty_from_pillow(): + im = Image.new(mode="L", size=(1, 0)) + heif = pillow_heif.HeifFile() + with pytest.raises(ValueError): + heif.add_from_pillow(im) + + @pytest.mark.parametrize("img_path", dataset.CORRUPTED_DATASET) def test_heif_corrupted_open(img_path): for input_type in [img_path.read_bytes(), BytesIO(img_path.read_bytes()), img_path, builtins.open(img_path, "rb")]: try: - pillow_heif.open_heif(input_type).load() + _ = pillow_heif.open_heif(input_type).data assert False - except pillow_heif.HeifError as exception: - assert exception.code == pillow_heif.HeifErrorCode.INVALID_INPUT - assert repr(exception).find("HeifErrorCode.INVALID_INPUT") != -1 + except ValueError as exception: assert str(exception).find("Invalid input") != -1 @@ -39,7 +61,7 @@ def test_pillow_corrupted_open(img_path): def test_heif_image_order(): im = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) - assert im.info["primary"] and im.primary_index() == 1 + assert im.info["primary"] and im.primary_index == 1 assert not im[0].info["primary"] assert im[1].info["primary"] assert not im[2].info["primary"] @@ -56,7 +78,7 @@ def test_pillow_image_order(): assert not im.info["primary"] -@pytest.mark.parametrize("img_path", [Path("images/heif/RGBA_10.heif"), Path("images/heif/zPug_3.heic")]) +@pytest.mark.parametrize("img_path", [Path("images/heif/RGBA_10__29x100.heif"), Path("images/heif/zPug_3.heic")]) def test_heif_inputs(img_path): with builtins.open(img_path, "rb") as fh: b = fh.read() @@ -66,43 +88,28 @@ def test_heif_inputs(img_path): assert heif_file.mimetype assert min(heif_file.size) > 0 assert heif_file.info - assert getattr(heif_file[0], "_heif_ctx") is not None + assert getattr(heif_file[0], "_c_image") is not None collect() - # This will load all data for image in heif_file: - assert not getattr(image, "_img_data") + assert not getattr(image, "_data") assert len(image.data) > 0 - for thumbnail in image.thumbnails: - assert not getattr(thumbnail, "_img_data") - assert len(thumbnail.data) > 0 - thumbnail.unload() - image.unload() + assert getattr(image, "_data") collect() for image in heif_file: - assert not getattr(image, "_img_data") assert len(image.data) > 0 - for thumbnail in image.thumbnails: - assert not getattr(thumbnail, "_img_data") - assert len(thumbnail.data) > 0 - collect() - assert getattr(heif_file[0], "_heif_ctx") is not None # Create new heif_file - heif_file_from = pillow_heif.HeifFile().add_from_heif(heif_file) + heif_file_from = pillow_heif.HeifFile() + heif_file_from.add_from_heif(heif_file[0]) collect() - helpers.compare_heif_files_fields(heif_file_from, heif_file, ignore=["original_bit_depth"]) - for _ in heif_file: - _.unload() - for _ in heif_file_from: - _.unload() - collect() - helpers.compare_heif_files_fields(heif_file_from, heif_file, ignore=["original_bit_depth"]) + helpers.compare_heif_files_fields(heif_file_from[0], heif_file[0]) heif_file = None # noqa - assert len(heif_file_from[len(heif_file_from) - 1].data) + collect() + assert len(heif_file_from[0].data) if not isinstance(fp, (Path, str, bytes)): assert not fp.closed -@pytest.mark.parametrize("img_path", [Path("images/heif/RGBA_10.heif"), Path("images/heif/zPug_3.heic")]) +@pytest.mark.parametrize("img_path", [Path("images/heif/RGBA_10__29x100.heif"), Path("images/heif/zPug_3.heic")]) def test_pillow_inputs(img_path): with builtins.open(img_path, "rb") as fh: bytes_io = BytesIO(fh.read()) @@ -113,18 +120,15 @@ def test_pillow_inputs(img_path): for frame in ImageSequence.Iterator(pillow_image): assert len(frame.tobytes()) > 0 heif_image = pillow_heif.from_pillow(pillow_image) - helpers.compare_heif_to_pillow_fields(heif_image, pillow_image) - assert len(pillow_heif.from_pillow(pillow_image, load_one=True)) == 1 - if getattr(pillow_image, "n_frames") > 1: - assert getattr(pillow_image, "fp") is not None - else: - assert getattr(pillow_image, "fp") is None + helpers.compare_heif_to_pillow_fields(heif_image[0], pillow_image) + assert len(pillow_heif.from_pillow(pillow_image)) == 1 + assert getattr(pillow_image, "fp") is None if not isinstance(fp, (Path, str)): assert not fp.closed def test_pillow_after_load(): - img = Image.open(Path("images/heif/RGBA_10.heif")) + img = Image.open(Path("images/heif/RGBA_10__29x100.heif")) assert getattr(img, "heif_file") is not None for i in range(3): img.load() @@ -155,26 +159,20 @@ def heif_from_heif(hdr_to_8bit=True): heif_file = pillow_heif.open_heif(img_path, convert_hdr_to_8bit=hdr_to_8bit) collect() # Create Heif from Heif - heif_file_from = pillow_heif.HeifFile().add_from_heif(heif_file) + heif_file_from = pillow_heif.HeifFile() + for img in heif_file: + heif_file_from.add_from_heif(img) collect() # Create Heif from created Heif - heif_file_from_from = pillow_heif.HeifFile().add_from_heif(heif_file_from) - for _ in heif_file: - _.unload() + heif_file_from_from = pillow_heif.HeifFile() + for img in heif_file_from: + heif_file_from_from.add_from_heif(img) collect() - helpers.compare_heif_files_fields(heif_file, heif_file_from, ignore=["original_bit_depth"]) + helpers.compare_heif_files_fields(heif_file, heif_file_from) # Closing original Heif must not affect data in others two heif_file = None # noqa - for _ in heif_file_from: - _.unload() - for _ in heif_file_from_from: - _.unload() collect() - heif_file_from.load(everything=True) - heif_file_from_from.load(everything=True) - helpers.compare_heif_files_fields(heif_file_from, heif_file_from_from, ignore=["original_bit_depth"]) - heif_file_from = None # noqa - assert len(heif_file_from_from[len(heif_file_from_from) - 1].data) + helpers.compare_heif_files_fields(heif_file_from, heif_file_from_from) heif_from_heif(hdr_to_8bit=True) heif_from_heif(hdr_to_8bit=False) @@ -189,7 +187,7 @@ def test_to_from_pillow(image_path): heif_from_pillow = pillow_heif.HeifFile() for image in images_list: heif_from_pillow.add_from_pillow(image) - helpers.compare_heif_files_fields(heif_file, heif_from_pillow, ignore=["original_bit_depth"]) + helpers.compare_heif_files_fields(heif_file, heif_from_pillow) def test_heif_file_to_pillow(): @@ -204,25 +202,15 @@ def test_read_image(convert_hdr_to_8bit: bool) -> bool: for image in heif_file: assert min(image.size) > 0 assumed_mode = "RGBA" if image.has_alpha else "RGB" - if image.bit_depth > 8: - assumed_mode += f";{image.bit_depth}" - assert image.mode == assumed_mode - assert image.bit_depth >= 8 minimal_stride = image.size[0] * 4 if image.has_alpha else image.size[0] * 3 - if image.bit_depth > 8: + if image.info["bit_depth"] > 8 and not convert_hdr_to_8bit: + assumed_mode += ";16" minimal_stride *= 2 + assert image.mode == assumed_mode + assert image.info["bit_depth"] >= 8 assert image.stride >= minimal_stride assert len(image.data) == image.stride * image.size[1] - # This will load thumbnails too - assert isinstance(image.load(), pillow_heif.HeifImage) - for thumbnail in image.thumbnails: - minimal_stride = thumbnail.size[0] * 4 if thumbnail.has_alpha else thumbnail.size[0] * 3 - if thumbnail.bit_depth > 8: - minimal_stride *= 2 - assert thumbnail.stride >= minimal_stride - assert len(thumbnail.data) == thumbnail.stride * thumbnail.size[1] - assert isinstance(thumbnail.load(), pillow_heif.HeifThumbnail) - return heif_file.bit_depth > 8 + return heif_file.info["bit_depth"] > 8 one_more = test_read_image(False) if one_more: @@ -231,46 +219,34 @@ def test_read_image(convert_hdr_to_8bit: bool) -> bool: @pytest.mark.parametrize("image_path", dataset.FULL_DATASET) def test_pillow_read_images(image_path): - def test_read_image(): - pillow_image = Image.open(image_path) - assert getattr(pillow_image, "fp") is not None + pillow_image = Image.open(image_path) + assert getattr(pillow_image, "fp") is not None + assert getattr(pillow_image, "heif_file") is not None + pillow_image.verify() + images_count = len(list(ImageSequence.Iterator(pillow_image))) + for i, image in enumerate(ImageSequence.Iterator(pillow_image)): + assert image.info + assert image.custom_mimetype in ("image/heic", "image/heif", "image/heif-sequence", "image/avif") + if "icc_profile" in image.info and len(image.info["icc_profile"]) > 0: + ImageCms.getOpenProfile(BytesIO(pillow_image.info["icc_profile"])) + collect() + assert len(ImageSequence.Iterator(pillow_image)[i].tobytes()) + assert isinstance(image.getxmp(), dict) + assert getattr(pillow_image, "fp") is None + if images_count > 1: assert getattr(pillow_image, "heif_file") is not None - assert not getattr(pillow_image, "_close_exclusive_fp_after_loading") - pillow_image.verify() - images_count = len(list(ImageSequence.Iterator(pillow_image))) - for i, image in enumerate(ImageSequence.Iterator(pillow_image)): - assert image.info - assert image.custom_mimetype in ("image/heic", "image/heif", "image/heif-sequence", "image/avif") - if "icc_profile" in image.info and len(image.info["icc_profile"]) > 0: - ImageCms.getOpenProfile(BytesIO(pillow_image.info["icc_profile"])) - collect() - assert len(ImageSequence.Iterator(pillow_image)[i].tobytes()) - for thumb in ImageSequence.Iterator(pillow_image)[i].info["thumbnails"]: - if images_count > 1: - assert thumb.data is not None - else: - assert thumb.data is None - assert isinstance(image.getxmp(), dict) - if images_count > 1: - assert getattr(pillow_image, "fp") is not None - assert getattr(pillow_image, "heif_file") is not None - assert not getattr(pillow_image, "_close_exclusive_fp_after_loading") - else: - assert getattr(pillow_image, "fp") is None - assert getattr(pillow_image, "heif_file") is None - assert getattr(pillow_image, "_close_exclusive_fp_after_loading") - # Testing here one more time, just for sure, that missing `heif_file` does not affect anything. - collect() - assert pillow_image.tobytes() - assert len(ImageSequence.Iterator(pillow_image)[0].tobytes()) - - test_read_image() + else: + assert getattr(pillow_image, "heif_file") is None + # Testing here one more time, just for sure, that missing `heif_file` does not affect anything. + collect() + assert pillow_image.tobytes() + assert len(ImageSequence.Iterator(pillow_image)[0].tobytes()) @pytest.mark.parametrize("img_path", dataset.TRUNCATED_DATASET) def test_pillow_truncated_fail(img_path): truncated_heif = Image.open(img_path) - with pytest.raises(pillow_heif.HeifError): + with pytest.raises(EOFError): truncated_heif.load() @@ -284,41 +260,28 @@ def test_pillow_truncated_ok(img_path): def test_heif_index(): heif_file = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) with pytest.raises(IndexError): - heif_file[-1].load() + _ = heif_file[-1].data with pytest.raises(IndexError): - heif_file[len(heif_file)].load() - with pytest.raises(IndexError): - heif_file[0].thumbnails[len(heif_file[0].thumbnails)].load() + _ = heif_file[len(heif_file)].data with pytest.raises(IndexError): del heif_file[-1] with pytest.raises(IndexError): del heif_file[len(heif_file)] -def test_read_heif(): - heif_file = pillow_heif.read_heif(Path("images/heif/zPug_3.heic")) - for im in heif_file: - assert im._img_data - for thumbnail in im.thumbnails: - assert not thumbnail._img_data - thumbnail.load() - assert thumbnail._img_data - - def test_heif_etc(): heif_file = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) - heif_file.load(everything=False) - assert getattr(heif_file[1], "_img_data") - assert not getattr(heif_file[0], "_img_data") - assert not getattr(heif_file[2], "_img_data") + _ = heif_file.data + assert getattr(heif_file[1], "_data") + assert not getattr(heif_file[0], "_data") + assert not getattr(heif_file[2], "_data") assert heif_file.size == heif_file[1].size assert heif_file.mode == heif_file[1].mode assert len(heif_file.data) == len(heif_file[1].data) assert heif_file.stride == heif_file[1].stride assert heif_file.has_alpha == heif_file[1].has_alpha assert heif_file.premultiplied_alpha == heif_file[1].premultiplied_alpha - assert heif_file.bit_depth == heif_file[1].bit_depth - assert heif_file.original_bit_depth == heif_file[1].original_bit_depth + assert heif_file.info == heif_file[1].info def test_heif_only_image_reference(): @@ -326,35 +289,64 @@ def test_heif_only_image_reference(): empty_heif_container.add_from_heif(pillow_heif.open_heif(Path("images/heif/zPug_3.heic"))[0]) empty_heif_container.add_from_heif(pillow_heif.open_heif(Path("images/heif/zPug_3.heic"))[2]) assert len(empty_heif_container) == 2 - empty_heif_container.load(everything=True) + assert empty_heif_container[0].data + assert empty_heif_container[1].data @pytest.mark.parametrize( "im_path,original_path", ( - ("images/heif/L_10.heif", "images/non_heif/L_16.png"), - ("images/heif/L_12.heif", "images/non_heif/L_16.png"), - ("images/heif/RGB_10.heif", "images/non_heif/RGB_16.png"), - ("images/heif/RGB_12.heif", "images/non_heif/RGB_16.png"), - ("images/heif/RGBA_10.heif", "images/non_heif/RGBA_16.png"), - ("images/heif/RGBA_12.heif", "images/non_heif/RGBA_16.png"), + ("images/heif/L_8__29x100.heif", "images/non_heif/L_8__29x100.png"), + ("images/heif/L_8__128x128.heif", "images/non_heif/L_8__128x128.png"), + ("images/heif/L_10__29x100.heif", "images/non_heif/L_16__29x100.png"), + ("images/heif/L_10__128x128.heif", "images/non_heif/L_16__128x128.png"), + ("images/heif/L_12__29x100.heif", "images/non_heif/L_16__29x100.png"), + ("images/heif/L_12__128x128.heif", "images/non_heif/L_16__128x128.png"), + ("images/heif/LA_8__29x100.heif", "images/non_heif/LA_8__29x100.png"), + ("images/heif/LA_8__128x128.heif", "images/non_heif/LA_8__128x128.png"), + ("images/heif/RGB_8__29x100.heif", "images/non_heif/RGB_8__29x100.png"), + ("images/heif/RGB_8__128x128.heif", "images/non_heif/RGB_8__128x128.png"), + ("images/heif/RGBA_8__29x100.heif", "images/non_heif/RGBA_8__29x100.png"), + ("images/heif/RGBA_8__128x128.heif", "images/non_heif/RGBA_8__128x128.png"), + ("images/heif/RGB_10__29x100.heif", "images/non_heif/RGB_16__29x100.png"), + ("images/heif/RGB_10__128x128.heif", "images/non_heif/RGB_16__128x128.png"), + ("images/heif/RGB_12__29x100.heif", "images/non_heif/RGB_16__29x100.png"), + ("images/heif/RGB_12__128x128.heif", "images/non_heif/RGB_16__128x128.png"), + ("images/heif/RGBA_10__29x100.heif", "images/non_heif/RGBA_16__29x100.png"), + ("images/heif/RGBA_10__128x128.heif", "images/non_heif/RGBA_16__128x128.png"), + ("images/heif/RGBA_12__29x100.heif", "images/non_heif/RGBA_16__29x100.png"), + ("images/heif/RGBA_12__128x128.heif", "images/non_heif/RGBA_16__128x128.png"), ), ) def test_hdr_read(im_path, original_path): - helpers.compare_hashes([im_path, original_path], max_difference=1) + helpers.compare_hashes([im_path, original_path], hash_size=16) @pytest.mark.parametrize( "im_path,original_path", ( - ("images/heif/L_10.avif", "images/non_heif/L_16.png"), - ("images/heif/L_12.avif", "images/non_heif/L_16.png"), - ("images/heif/RGB_10.avif", "images/non_heif/RGB_16.png"), - ("images/heif/RGB_12.avif", "images/non_heif/RGB_16.png"), - ("images/heif/RGBA_10.avif", "images/non_heif/RGBA_16.png"), - ("images/heif/RGBA_12.avif", "images/non_heif/RGBA_16.png"), + ("images/heif/L_8__29x100.avif", "images/non_heif/L_8__29x100.png"), + ("images/heif/L_8__128x128.avif", "images/non_heif/L_8__128x128.png"), + ("images/heif/L_10__29x100.avif", "images/non_heif/L_16__29x100.png"), + ("images/heif/L_10__128x128.avif", "images/non_heif/L_16__128x128.png"), + ("images/heif/L_12__29x100.avif", "images/non_heif/L_16__29x100.png"), + ("images/heif/L_12__128x128.avif", "images/non_heif/L_16__128x128.png"), + ("images/heif/LA_8__29x100.avif", "images/non_heif/LA_8__29x100.png"), + ("images/heif/LA_8__128x128.avif", "images/non_heif/LA_8__128x128.png"), + ("images/heif/RGB_8__29x100.avif", "images/non_heif/RGB_8__29x100.png"), + ("images/heif/RGB_8__128x128.avif", "images/non_heif/RGB_8__128x128.png"), + ("images/heif/RGBA_8__29x100.avif", "images/non_heif/RGBA_8__29x100.png"), + ("images/heif/RGBA_8__128x128.avif", "images/non_heif/RGBA_8__128x128.png"), + ("images/heif/RGB_10__29x100.avif", "images/non_heif/RGB_16__29x100.png"), + ("images/heif/RGB_10__128x128.avif", "images/non_heif/RGB_16__128x128.png"), + ("images/heif/RGB_12__29x100.avif", "images/non_heif/RGB_16__29x100.png"), + ("images/heif/RGB_12__128x128.avif", "images/non_heif/RGB_16__128x128.png"), + ("images/heif/RGBA_10__29x100.avif", "images/non_heif/RGBA_16__29x100.png"), + ("images/heif/RGBA_10__128x128.avif", "images/non_heif/RGBA_16__128x128.png"), + ("images/heif/RGBA_12__29x100.avif", "images/non_heif/RGBA_16__29x100.png"), + ("images/heif/RGBA_12__128x128.avif", "images/non_heif/RGBA_16__128x128.png"), ), ) -@pytest.mark.skipif(not helpers.aom_dec(), reason="requires AVIF decoder.") +@pytest.mark.skipif(not helpers.aom(), reason="requires AVIF support.") def test_hdr_read_avif(im_path, original_path): - helpers.compare_hashes([im_path, original_path], max_difference=1) + helpers.compare_hashes([im_path, original_path], hash_size=16) diff --git a/tests/thumbnails_test.py b/tests/thumbnails_test.py index 0b5eba34..82a0bc4b 100644 --- a/tests/thumbnails_test.py +++ b/tests/thumbnails_test.py @@ -1,321 +1,118 @@ -from gc import collect from io import BytesIO +from pathlib import Path import pytest -from helpers import compare_hashes, hevc_enc +from helpers import hevc_enc from PIL import Image, ImageSequence import pillow_heif pillow_heif.register_heif_opener() -if not hevc_enc(): - pytest.skip(reason="Requires HEVC encoder.", allow_module_level=True) -# Creating HEIF file in memory with 3 images. -# Second image is a Primary Image with EXIF and XMP data. -# First two images has 2 thumbnails each, third image has no thumbnails. -def create_thumbnail_heif(size): - _ = Image.effect_mandelbrot(size, (-3, -2.5, 2, 2.5), 100) - im_heif = pillow_heif.from_pillow(_) - im_heif.add_from_pillow(_.crop((0, 0, 256, 256))) - pillow_heif.add_thumbnails(im_heif[0], boxes=[128, 64]) - pillow_heif.add_thumbnails(im_heif[1], boxes=[128, 64]) - im_heif.add_from_pillow(_.crop((0, 0, 192, 192))) - _heif_buf = BytesIO() - exif = Image.Exif() - exif[0x010E] = "this is a desc" - im_heif.save(_heif_buf, primary_index=1, exif=exif.tobytes(), xmp=xmp_data) - return _heif_buf +def test_heif_thumbnails_present(): + heif_file = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) + assert heif_file[0].info["thumbnails"] == [32, 16] + assert heif_file[1].info["thumbnails"] == [32] + assert len(heif_file[2].info["thumbnails"]) == 0 -xmp_data = b"xmp_data" -heif_buf = create_thumbnail_heif((512, 512)) - - -def test_heif_enumerate_thumbnails(): - heif_file = pillow_heif.open_heif(heif_buf) - assert len(list(heif_file.thumbnails_all())) == 4 - assert len(list(heif_file.thumbnails_all(one_for_image=True))) == 2 - - -def test_heif_enumerate_thumbnails_data(): - heif_file = pillow_heif.open_heif(heif_buf) - for thumbnail in heif_file.thumbnails_all(): - assert len(thumbnail.data) - for thumbnail in heif_file.thumbnails_all(one_for_image=True): - assert len(thumbnail.data) - - -def test_heif_thumbnail(): - for i, img in enumerate(pillow_heif.open_heif(heif_buf)): - thumbnail = pillow_heif.thumbnail(img) - if i == 2: - assert thumbnail.size == img.size - assert isinstance(thumbnail, pillow_heif.HeifImage) +def test_pillow_thumbnails_present(): + for i, img in enumerate(ImageSequence.Iterator(Image.open(Path("images/heif/zPug_3.heic")))): + if i == 0: + assert img.info["thumbnails"] == [32, 16] + elif i == 1: + assert img.info["thumbnails"] == [32] else: - assert thumbnail.size != img.size - assert isinstance(thumbnail, pillow_heif.HeifThumbnail) - assert len(thumbnail.data) + assert len(img.info["thumbnails"]) == 0 -def test_pillow_thumbnail(): - for i, img in enumerate(ImageSequence.Iterator(Image.open(heif_buf))): - thumbnail = pillow_heif.thumbnail(img) - assert isinstance(thumbnail, Image.Image) - if i == 2: - assert thumbnail.size == img.size - assert isinstance(thumbnail.info.get("thumbnails"), list) - else: - assert thumbnail.size != img.size - assert thumbnail.info.get("thumbnails", None) is None - assert thumbnail.info["primary"] == bool(i == 1) - assert len(thumbnail.tobytes()) +def test_heif_to_pillow_thumbnails(): + heif_file = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) + assert heif_file[0].to_pillow().info["thumbnails"] == [32, 16] + assert heif_file[1].to_pillow().info["thumbnails"] == [32] + assert len(heif_file[2].to_pillow().info["thumbnails"]) == 0 -def test_pillow_thumbnail_image_loaded(): - for i, img in enumerate(ImageSequence.Iterator(Image.open(heif_buf))): - img.load() - thumbnail = pillow_heif.thumbnail(img) - assert isinstance(thumbnail, Image.Image) - if i == 2: - assert thumbnail.size == img.size - assert isinstance(thumbnail.info.get("thumbnails"), list) +def test_from_pillow_thumbnails(): + for i, img in enumerate(ImageSequence.Iterator(Image.open(Path("images/heif/zPug_3.heic")))): + if i == 0: + assert pillow_heif.from_pillow(img).info["thumbnails"] == [32, 16] + elif i == 1: + assert pillow_heif.from_pillow(img).info["thumbnails"] == [32] else: - assert thumbnail.size != img.size - assert thumbnail.info.get("thumbnails", None) is None - assert thumbnail.info["primary"] == bool(i == 1) - assert len(thumbnail.tobytes()) - - -def test_pillow_thumbnail_one_image_loaded(): - heif_buf_one_image = BytesIO() - Image.open(heif_buf).save(heif_buf_one_image, format="HEIF") - im = Image.open(heif_buf_one_image) - thumbnail = pillow_heif.thumbnail(im) - assert thumbnail.size != im.size - assert thumbnail.info.get("thumbnails") is None - im.load() - thumbnail = pillow_heif.thumbnail(im) - assert thumbnail.size == im.size - assert isinstance(thumbnail.info.get("thumbnails"), list) - - -def test_heif_thumbnail_above_size(): - for img in pillow_heif.open_heif(heif_buf): - thumbnail = pillow_heif.thumbnail(img, min_box=9999) - assert thumbnail.size == img.size - assert isinstance(thumbnail, pillow_heif.HeifImage) - assert len(thumbnail.data) - - -def test_pillow_thumbnail_above_size(): - for img in ImageSequence.Iterator(Image.open(heif_buf)): - thumbnail = pillow_heif.thumbnail(img, min_box=9999) - assert thumbnail.size == img.size - assert isinstance(thumbnail, Image.Image) - assert isinstance(thumbnail.info.get("thumbnails"), list) - - -def test_heif_thumbnail_below_size(): - for i, img in enumerate(pillow_heif.open_heif(heif_buf)): - thumbnail = pillow_heif.thumbnail(img, min_box=16) - if i == 2: - assert thumbnail.size == img.size - assert isinstance(thumbnail, pillow_heif.HeifImage) - else: - assert thumbnail.size != img.size - assert isinstance(thumbnail, pillow_heif.HeifThumbnail) - assert len(thumbnail.data) - - -def test_pillow_thumbnail_below_size(): - for i, img in enumerate(ImageSequence.Iterator(Image.open(heif_buf))): - thumbnail = pillow_heif.thumbnail(img, min_box=16) - if i == 2: - assert thumbnail.size == img.size - assert isinstance(thumbnail.info.get("thumbnails"), list) - else: - assert thumbnail.size != img.size - assert thumbnail.info.get("thumbnails", None) is None - assert len(thumbnail.tobytes()) - - -def test_heif_thumbnail_primary(): - # checking if `thumbnail` return Primary Image thumbnail when input is a heif_file - heif_file = pillow_heif.open_heif(heif_buf) - thumbnail = pillow_heif.thumbnail(heif_file) - assert thumbnail == heif_file[1].thumbnails[0] - - -def test_heif_thumbnail_no_xmp_exif(): - thumbnail = pillow_heif.thumbnail(pillow_heif.open_heif(heif_buf)[0]) - assert not thumbnail.info["exif"] - assert not thumbnail.info["xmp"] - - -def test_pillow_thumbnail_no_xmp_exif(): - thumbnail = pillow_heif.thumbnail(ImageSequence.Iterator(Image.open(heif_buf))[0]) - assert not thumbnail.info["exif"] - assert not thumbnail.info["xmp"] - - -def test_heif_thumbnail_xmp_exif(): - thumbnail = pillow_heif.thumbnail(pillow_heif.open_heif(heif_buf)) - assert thumbnail.info["exif"] - assert thumbnail.info["xmp"] == xmp_data - - -def test_pillow_thumbnail_xmp_exif(): - thumbnail = pillow_heif.thumbnail(Image.open(heif_buf)) - assert thumbnail.info["exif"] - assert thumbnail.info["xmp"] == xmp_data - assert isinstance(thumbnail.getexif(), Image.Exif) - - -def test_heif_thumbnail_references(): - heif_file = pillow_heif.open_heif(heif_buf) - thumbnails_all = list(heif_file.thumbnails_all()) - assert thumbnails_all[0].get_original() == heif_file[0] - assert thumbnails_all[1].get_original() == heif_file[0] - assert thumbnails_all[2].get_original() == heif_file[1] - assert thumbnails_all[3].get_original() == heif_file[1] - del heif_file[0] - collect() - assert thumbnails_all[0].get_original() is None - assert thumbnails_all[0].get_original() is None - assert str(thumbnails_all[0]).find("Original:None") != -1 - assert thumbnails_all[2].get_original() == heif_file[0] - assert thumbnails_all[3].get_original() == heif_file[0] - pillow_img = heif_file[0].to_pillow() - assert pillow_img.info["thumbnails"][0].get_original() is None - assert pillow_img.info["thumbnails"][1].get_original() is None - img_from_pillow = pillow_heif.from_pillow(pillow_img) - assert img_from_pillow.thumbnails[0].get_original() == img_from_pillow[0] - assert img_from_pillow.thumbnails[1].get_original() == img_from_pillow[0] - assert str(img_from_pillow.thumbnails[0]).find("Original:None") == -1 - - + assert len(pillow_heif.from_pillow(img).info["thumbnails"]) == 0 + + +@pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") +def test_heif_remove_thumbnails(): + buf = BytesIO() + heif_file = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) + heif_file[0].info.pop("thumbnails") + heif_file[1].info.pop("thumbnails") + heif_file.save(buf) + heif_file = pillow_heif.open_heif(buf) + assert len(heif_file[0].info["thumbnails"]) == 0 + assert len(heif_file[1].info["thumbnails"]) == 0 + assert len(heif_file[2].info["thumbnails"]) == 0 + + +@pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") +def test_pillow_remove_thumbnails(): + buf = BytesIO() + im = Image.open(Path("images/heif/zPug_3.heic")) + ImageSequence.Iterator(im)[0].info.pop("thumbnails") + ImageSequence.Iterator(im)[1].info.pop("thumbnails") + im.save(buf, format="HEIF", save_all=True) + for i, img in enumerate(ImageSequence.Iterator(Image.open(buf))): + assert len(img.info["thumbnails"]) == 0 + + +@pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.parametrize( - "thumbs,expected_after", + "thumbs,result", ( - (-1, [2, 2, 0]), - ([-1], [2, 2, 0]), - (0, [2, 2, 0]), - ([0], [2, 2, 0]), - (1, [2, 2, 0]), - ([1], [2, 2, 0]), - (64, [2, 2, 1]), - ([64], [2, 2, 1]), - ([2048], [2, 2, 0]), - (96, [3, 3, 1]), - ([96], [3, 3, 1]), - ([84, 0], [3, 3, 1]), - ([0, 84], [3, 3, 1]), - ([96, 84], [4, 4, 2]), + ([-1], []), + ([0], []), + ([1], []), + ([100], []), + ([200], []), + ([28], [28]), + ([96], [96]), + ([28, 56], [28, 56]), + ([0, 84], [84]), + ([-1, 84, 0], [84]), ), ) -@pytest.mark.parametrize("heif_file_buf", (heif_buf, create_thumbnail_heif((317, 311)))) -@pytest.mark.parametrize("method", ("HeifFile", "HeifImage")) -def test_heif_add_thumbs(thumbs, expected_after, heif_file_buf, method): +def test_heif_add_thumbs(thumbs, result): output = BytesIO() - heif_file = pillow_heif.open_heif(heif_file_buf) - if method == "HeifFile": - pillow_heif.add_thumbnails(heif_file, thumbs) - else: - pillow_heif.add_thumbnails(heif_file[0], thumbs) - pillow_heif.add_thumbnails(heif_file[1], thumbs) - pillow_heif.add_thumbnails(heif_file[2], thumbs) - heif_file.save(output, quality=-1) + heif_file = pillow_heif.open_heif(Path("images/heif/L_8__29x100.heif")) + heif_file.info["thumbnails"] = thumbs + heif_file.save(output, quality=10) out_heif = pillow_heif.open_heif(output) - for i in range(3): - assert len(out_heif[i].thumbnails) == expected_after[i] - compare_hashes([out_heif[0].to_pillow(), out_heif[0].thumbnails[0].to_pillow()], hash_size=8, max_difference=4) + assert out_heif.info["thumbnails"] == result +@pytest.mark.skipif(not hevc_enc(), reason="Requires HEVC encoder.") @pytest.mark.parametrize( - "thumbs,expected_after", + "thumbs,result", ( - (-1, [2, 2, 0]), - ([0], [2, 2, 0]), - (64, [2, 2, 1]), - ([2048], [2, 2, 0]), - (96, [3, 3, 1]), - ([0, 84], [3, 3, 1]), - ([96, 84], [4, 4, 2]), + ([-1], []), + ([0], []), + ([1], []), + ([100], []), + ([200], []), + ([28], [28]), + ([96], [96]), + ([28, 56], [28, 56]), + ([0, 84], [84]), + ([-1, 84, 0], [84]), ), ) -def test_pillow_add_thumbs(thumbs, expected_after): +def test_pillow_add_thumbs(thumbs, result): output = BytesIO() - im = Image.open(heif_buf) - for frame in ImageSequence.Iterator(im): - pillow_heif.add_thumbnails(frame, thumbs) - im.save(output, format="HEIF", quality=-1, save_all=True) - out_heif = pillow_heif.open_heif(output) - for i in range(3): - assert len(out_heif[i].thumbnails) == expected_after[i] - compare_hashes([out_heif[0].to_pillow(), out_heif[0].thumbnails[0].to_pillow()], hash_size=8, max_difference=4) - - -@pytest.mark.parametrize( - "thumbs,expected_after", - ( - (-1, 0), - ([0], 0), - (64, 1), - ([2048], 0), - ([0, 128], 1), - ([64, 128], 2), - ), -) -def test_pillow_add_thumbs_empty_info(thumbs, expected_after): - output = BytesIO() - im = Image.open(heif_buf) - im.info.pop("thumbnails") - pillow_heif.add_thumbnails(im, thumbs) - im.save(output, format="HEIF", quality=-1) - out_heif = pillow_heif.open_heif(output) - assert len(out_heif.thumbnails) == expected_after - if expected_after >= 1: - compare_hashes([out_heif[0].to_pillow(), out_heif.thumbnails[0].to_pillow()], hash_size=8) - - -def test_heif_remove_thumbs(): - out_buffer = BytesIO() - # removing first thumbnail of the first image. - heif_file = pillow_heif.open_heif(heif_buf) - del heif_file[0].thumbnails[0] - heif_file.save(out_buffer) - out_heif = pillow_heif.open_heif(out_buffer) - assert len(out_heif[0].thumbnails) == 1 - assert len(out_heif[1].thumbnails) == 2 - assert len(out_heif[2].thumbnails) == 0 - # removing all thumbnails of the primary image. - heif_file = pillow_heif.open_heif(heif_buf) - heif_file.thumbnails.clear() - heif_file.save(out_buffer) - out_heif = pillow_heif.open_heif(out_buffer) - assert len(out_heif[0].thumbnails) == 2 - assert len(out_heif[1].thumbnails) == 0 - assert len(out_heif[2].thumbnails) == 0 - - -def test_pillow_remove_thumbs(): - out_buffer = BytesIO() - # removing first thumbnail of the first image. - im = Image.open(heif_buf) - im.seek(0) - del im.info["thumbnails"][0] - im.save(out_buffer, format="HEIF", save_all=True) - im_out = Image.open(out_buffer) - assert len(ImageSequence.Iterator(im_out)[0].info["thumbnails"]) == 1 - assert len(ImageSequence.Iterator(im_out)[1].info["thumbnails"]) == 2 - assert len(ImageSequence.Iterator(im_out)[2].info["thumbnails"]) == 0 - # removing all thumbnails of the primary image. - im = Image.open(heif_buf) - im.info["thumbnails"].clear() - im.save(out_buffer, format="HEIF", save_all=True) - im_out = Image.open(out_buffer) - assert len(ImageSequence.Iterator(im_out)[0].info["thumbnails"]) == 2 - assert len(ImageSequence.Iterator(im_out)[1].info["thumbnails"]) == 0 - assert len(ImageSequence.Iterator(im_out)[2].info["thumbnails"]) == 0 + im = Image.open(Path("images/heif/L_8__29x100.heif")) + im.info["thumbnails"] = thumbs + im.save(output, format="HEIF", quality=10) + out_heif = Image.open(output) + assert out_heif.info["thumbnails"] == result diff --git a/tests/write_test.py b/tests/write_test.py index 25019dce..ce44e549 100644 --- a/tests/write_test.py +++ b/tests/write_test.py @@ -13,8 +13,8 @@ pytest.importorskip("numpy", reason="NumPy not installed") -if not helpers.hevc_enc() or not helpers.aom_enc(): - pytest.skip("No HEVC or AVIF encoder.", allow_module_level=True) +if not helpers.hevc_enc() or not helpers.aom(): + pytest.skip("No HEIF or AVIF support.", allow_module_level=True) os.chdir(os.path.dirname(os.path.abspath(__file__))) pillow_heif.register_avif_opener() @@ -33,9 +33,9 @@ def test_save_format(save_format): @pytest.mark.parametrize( "img", ( - helpers.gradient_rgba_bytes("HEIF"), - "images/heif/RGBA_10.heif", - "images/heif/RGBA_12.heif", + "images/heif/RGBA_8__29x100.heif", + "images/heif/RGBA_10__29x100.heif", + "images/heif/RGBA_12__29x100.heif", ), ) def test_premultiplied_alpha(img): @@ -94,12 +94,10 @@ def test_pillow_save_one_all(): def test_heif_no_encoder(): - with mock.patch("pillow_heif.heif.have_encoder_for_format") as mock_func: - mock_func.return_value = False - + with mock.patch.dict("pillow_heif.heif.lib_info", {"libheif": "1.14.2", "HEIF": "", "AVIF": ""}): im_heif = pillow_heif.from_pillow(Image.new("L", (64, 64))) out_buffer = BytesIO() - with pytest.raises(pillow_heif.HeifError): + with pytest.raises(RuntimeError): im_heif.save(out_buffer) @@ -114,7 +112,7 @@ def test_pillow_save_zero(size: tuple): @pytest.mark.parametrize("size", ((1, 0), (0, 1), (0, 0))) def test_heif_save_zero(size: tuple): out_heif = BytesIO() - im = pillow_heif.from_pillow(Image.new("RGB", size)) + im = pillow_heif.from_bytes("L", size, b"") with pytest.raises(ValueError): im.save(out_heif, format="HEIF") @@ -130,9 +128,9 @@ def test_save_empty_with_append(): out_buffer = BytesIO() empty_heif_file = pillow_heif.HeifFile() heif_file = pillow_heif.open_heif(helpers.create_heif()) - empty_heif_file.save(out_buffer, append_images=heif_file) + empty_heif_file.save(out_buffer, append_images=[heif_file[0]]) helpers.compare_heif_files_fields(heif_file, pillow_heif.open_heif(out_buffer)) - empty_heif_file.save(out_buffer, append_images=heif_file, save_all=False) + empty_heif_file.save(out_buffer, append_images=[heif_file[0]], save_all=False) heif_file = pillow_heif.open_heif(out_buffer) assert len(heif_file) == 1 @@ -140,42 +138,40 @@ def test_save_empty_with_append(): def test_hif_file(): hif_path = Path("images/heif_other/cat.hif") heif_file1 = pillow_heif.open_heif(hif_path) - assert heif_file1.original_bit_depth == 10 + assert heif_file1.info["bit_depth"] == 10 out_buf = BytesIO() - heif_file1.save(out_buf, quality=1) + heif_file1.save(out_buf, quality=80) heif_file2 = pillow_heif.open_heif(out_buf) - assert heif_file2.original_bit_depth == 8 - helpers.compare_heif_files_fields(heif_file1, heif_file2, ignore=["t_stride", "original_bit_depth"]) - helpers.compare_hashes([hif_path, out_buf], hash_size=8) + assert heif_file2.info["bit_depth"] == 8 + helpers.compare_heif_files_fields(heif_file1, heif_file2, ignore=["bit_depth"]) + helpers.compare_hashes([hif_path, out_buf], hash_size=16) @pytest.mark.parametrize( "im_path", ( - "images/heif/L_10", - "images/heif/L_12", - "images/heif/RGB_10", - "images/heif/RGB_12", - "images/heif/RGBA_10", - "images/heif/RGBA_12", + "images/heif/L_10__29x100", + "images/heif/L_10__128x128", + "images/heif/L_12__29x100", + "images/heif/L_12__128x128", + "images/heif/RGB_10__29x100", + "images/heif/RGB_10__128x128", + "images/heif/RGB_12__29x100", + "images/heif/RGB_12__128x128", + "images/heif/RGBA_10__29x100", + "images/heif/RGBA_10__128x128", + "images/heif/RGBA_12__29x100", + "images/heif/RGBA_12__128x128", ), ) @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) def test_hdr_save(im_path, save_format): im_path = im_path + (".heif" if save_format == "HEIF" else ".avif") heif_file = pillow_heif.open_heif(im_path, convert_hdr_to_8bit=False) - heif_file_to_add = pillow_heif.HeifFile().add_from_heif(heif_file) - heif_file.add_from_heif(heif_file_to_add) - heif_file_to_add = None # noqa - collect() - helpers.compare_heif_files_fields(heif_file[0], heif_file[1]) out_buf = BytesIO() heif_file.save(out_buf, quality=-1, format=save_format, chroma=444) heif_file_out = pillow_heif.open_heif(out_buf, convert_hdr_to_8bit=False) - assert len(heif_file_out) == 2 - helpers.compare_heif_files_fields(heif_file[0], heif_file_out[0]) - helpers.compare_heif_files_fields(heif_file[1], heif_file_out[1]) - helpers.compare_heif_files_fields(heif_file_out[0], heif_file_out[1]) + helpers.compare_heif_files_fields(heif_file, heif_file_out) helpers.compare_hashes([im_path, out_buf], hash_size=32) @@ -192,8 +188,8 @@ def test_encoder_parameters(): def test_pillow_heif_orientation(): heic_pillow = Image.open(Path("images/heif_other/arrow.heic")) out_jpeg = BytesIO() - heic_pillow.save(out_jpeg, format="JPEG") - helpers.compare_hashes([heic_pillow, out_jpeg], max_difference=1) + heic_pillow.save(out_jpeg, format="JPEG", quality=90) + helpers.compare_hashes([heic_pillow, out_jpeg]) def test_pillow_quality(): @@ -216,7 +212,7 @@ def test_P_color_mode(save_format): # noqa im.save(out_heic, format=save_format, quality=90) im_heif = Image.open(out_heic) assert im_heif.mode == "RGB" - helpers.compare_hashes([im_buffer, im_heif], hash_size=8) + helpers.compare_hashes([im_buffer, im_heif], hash_size=16) @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) @@ -227,7 +223,7 @@ def test_PA_color_mode(save_format): # noqa im.save(out_heic, format=save_format, quality=90) im_heif = Image.open(out_heic) assert im_heif.mode == "RGBA" - helpers.compare_hashes([im_buffer, im_heif], hash_size=8) + helpers.compare_hashes([im_buffer, im_heif], hash_size=16) @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) @@ -237,7 +233,7 @@ def test_L_color_mode(save_format): # noqa im.save(out_heif, format=save_format, quality=-1) im_heif = Image.open(out_heif) assert im_heif.mode == "RGB" - helpers.compare_hashes([im, im_heif], hash_size=8) + helpers.compare_hashes([im, im_heif], hash_size=32) @pytest.mark.parametrize("save_format", ("HEIF", "AVIF")) @@ -247,7 +243,7 @@ def test_LA_color_mode(save_format): # noqa im.save(out_heif, format=save_format, quality=-1) im_heif = Image.open(out_heif) assert im_heif.mode == "RGBA" - helpers.compare_hashes([im, im_heif], hash_size=8) + helpers.compare_hashes([im, im_heif], hash_size=32) def test_1_color_mode(): @@ -258,7 +254,7 @@ def test_1_color_mode(): im.save(out_heif, format="HEIF", quality=-1) im_heif = Image.open(out_heif) assert im_heif.mode == "RGB" - helpers.compare_hashes([im, im_heif], hash_size=8) + helpers.compare_hashes([im, im_heif], hash_size=16) def test_CMYK_color_mode(): # noqa @@ -268,7 +264,17 @@ def test_CMYK_color_mode(): # noqa im.save(out_heif, format="HEIF", quality=-1) im_heif = Image.open(out_heif) assert im_heif.mode == "RGBA" - helpers.compare_hashes([im, im_heif], hash_size=8) + helpers.compare_hashes([im, im_heif], hash_size=16) + + +def test_YCbCr_color_mode(): # noqa + im = helpers.gradient_rgb().convert("YCbCr") + assert im.mode == "YCbCr" + out_heif = BytesIO() + im.save(out_heif, format="HEIF", quality=-1) + im_heif = Image.open(out_heif) + assert im_heif.mode == "RGB" + helpers.compare_hashes([im, im_heif], hash_size=16) @pytest.mark.parametrize("enc_bits", (10, 12)) @@ -276,13 +282,13 @@ def test_CMYK_color_mode(): # noqa def test_I_color_modes_to_10_12_bit(enc_bits, save_format): # noqa try: pillow_heif.options.SAVE_HDR_TO_12_BIT = True if enc_bits == 12 else False - src_pillow = Image.open(Path("images/non_heif/L_16.png")) + src_pillow = Image.open(Path("images/non_heif/L_16__29x100.png")) assert src_pillow.mode == "I" for mode in ("I", "I;16", "I;16L"): i_mode_img = src_pillow.convert(mode=mode) out_heic = BytesIO() i_mode_img.save(out_heic, format=save_format, quality=-1) - assert pillow_heif.open_heif(out_heic, convert_hdr_to_8bit=False).bit_depth == enc_bits + assert pillow_heif.open_heif(out_heic, convert_hdr_to_8bit=False).info["bit_depth"] == enc_bits heic_pillow = Image.open(out_heic) helpers.compare_hashes([src_pillow, heic_pillow], hash_size=8) finally: @@ -304,74 +310,70 @@ def test_gif(): assert out_heic.seek(0, SEEK_END) * 2 < out_all_heic.seek(0, SEEK_END) heic_pillow = Image.open(out_all_heic) for i, frame in enumerate(ImageSequence.Iterator(gif_pillow)): + # On Ubuntu 22.04 with basic repos(old versions of libs) without `max_difference` it fails. helpers.compare_hashes([ImageSequence.Iterator(heic_pillow)[i], frame], max_difference=1) def test_pillow_append_images(): - im_heif = Image.open(helpers.create_heif((51, 49), thumb_boxes=[16], n_images=2)) - heif_file2 = pillow_heif.open_heif(helpers.create_heif((81, 79), thumb_boxes=[32], n_images=2)) - heif_file3 = pillow_heif.open_heif(helpers.create_heif((72, 68), thumb_boxes=[32, 16], n_images=2)) + im_pil1 = Image.open("images/heif/L_8__29x100.heif") + im_pil2 = Image.open("images/heif/RGB_8__128x128.heif") + im_pil3 = Image.open("images/non_heif/RGBA_8__29x100.png") + im_pil1.info["thumbnails"] = [16] + im_pil2.info["thumbnails"] = [32] + im_pil3.info["thumbnails"] = [64] out_buf = BytesIO() - im_heif.save(out_buf, format="HEIF", append_images=[im_heif, heif_file2[1], heif_file3], save_all=True) - heif_file_out = pillow_heif.open_heif(out_buf) - assert len(list(heif_file_out.thumbnails_all())) == 2 + 2 + 1 + 4 - assert len(heif_file_out) == 2 + 2 + 1 + 2 - helpers.compare_heif_files_fields(heif_file_out[0], heif_file_out[2]) - helpers.compare_heif_files_fields(heif_file_out[1], heif_file_out[3]) - helpers.compare_heif_files_fields(heif_file2[1], heif_file_out[4]) - helpers.compare_heif_files_fields(heif_file3[0], heif_file_out[5]) - helpers.compare_heif_files_fields(heif_file3[1], heif_file_out[6]) + im_pil1.save(out_buf, append_images=[im_pil2, im_pil3], format="HEIF", save_all=True, quality=-1) + out_heif = Image.open(out_buf) + assert len([True for _ in ImageSequence.Iterator(out_heif)]) == 3 + assert ImageSequence.Iterator(out_heif)[0].info["thumbnails"] == [16] + assert ImageSequence.Iterator(out_heif)[1].info["thumbnails"] == [32] + assert ImageSequence.Iterator(out_heif)[2].info["thumbnails"] == [64] + helpers.compare_hashes([ImageSequence.Iterator(out_heif)[0], im_pil1], hash_size=24) + helpers.compare_hashes([ImageSequence.Iterator(out_heif)[1], im_pil2], hash_size=24) + helpers.compare_hashes([ImageSequence.Iterator(out_heif)[2], im_pil3], hash_size=24) def test_add_from(): - heif_file1_buf = helpers.create_heif() - heif_file1 = pillow_heif.open_heif(heif_file1_buf) - heif_file2_buf = helpers.create_heif((210, 128), thumb_boxes=[48, 32], n_images=2) - heif_file2 = pillow_heif.open_heif(heif_file2_buf) - heif_file1.add_from_heif(heif_file2, load_one=True) - heif_file1.add_from_heif(heif_file2[1], load_one=True) - heif_file1.add_from_heif(heif_file2[1]) + heif_file1 = pillow_heif.open_heif("images/heif/L_8__29x100.heif") + heif_file2 = pillow_heif.open_heif("images/heif/RGB_8__128x128.heif") + im_pil3 = Image.open("images/non_heif/RGBA_8__29x100.png") + heif_file1.add_from_heif(heif_file2[0]) + heif_file1.add_from_pillow(im_pil3) + heif_file1[0].info["thumbnails"].append(16) + heif_file1[1].info["thumbnails"].append(32) + heif_file1[2].info["thumbnails"].append(64) + assert not heif_file2.info["thumbnails"] + heif_file2.info["thumbnails"].append(32) collect() out_buf = BytesIO() - heif_file1.save(out_buf, quality=-1) + heif_file1.save(out_buf, quality=-1, chroma=444) out_heif = pillow_heif.open_heif(out_buf) - assert len(out_heif) == 4 - assert len(list(out_heif.thumbnails_all(one_for_image=True))) == 3 - assert len(list(out_heif.thumbnails_all(one_for_image=False))) == 6 - helpers.compare_heif_files_fields(heif_file1[0], out_heif[0]) - helpers.compare_heif_files_fields(heif_file2[0], out_heif[1]) - helpers.compare_heif_files_fields(heif_file2[1], out_heif[2]) - helpers.compare_heif_files_fields(heif_file2[1], out_heif[3]) - pillow_image = Image.open(out_buf) - helpers.compare_hashes([pillow_image, heif_file1_buf]) - pillow_image.seek(1) - pillow_original = Image.open(heif_file2_buf) - helpers.compare_hashes([pillow_image, pillow_original]) - pillow_image.seek(2) - pillow_original.seek(1) - helpers.compare_hashes([pillow_image, pillow_original], max_difference=1) + assert len(out_heif) == 3 + assert out_heif.info["thumbnails"] == [16] + assert out_heif[1].info["thumbnails"] == [32] + assert out_heif[2].info["thumbnails"] == [64] + helpers.compare_heif_files_fields(out_heif[0], heif_file1[0]) + helpers.compare_heif_files_fields(out_heif[1], heif_file2[0]) + helpers.compare_heif_to_pillow_fields(out_heif[2], im_pil3) def test_remove(): - heif_buf = helpers.create_heif((72, 68), thumb_boxes=[32], n_images=2) out_buffer = BytesIO() - # clear list with images - heif_file = pillow_heif.open_heif(heif_buf) - heif_file.images.clear() - assert len(heif_file) == 0 # removing first image - heif_file = pillow_heif.open_heif(heif_buf) + heif_file = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) del heif_file[0] heif_file.save(out_buffer) _ = pillow_heif.open_heif(out_buffer) - assert len(_) == 1 - assert len(_.thumbnails) == 1 - assert _.size == (36, 34) + assert len(_) == 2 + assert len(_.info["thumbnails"]) == 1 # removing second and first image - heif_file = pillow_heif.open_heif(heif_buf) + heif_file = pillow_heif.open_heif(Path("images/heif/zPug_3.heic")) del heif_file[1] del heif_file[0] - assert len(heif_file) == 0 + heif_file.save(out_buffer) + _ = pillow_heif.open_heif(out_buffer) + assert len(_) == 1 + assert len(_.info["thumbnails"]) == 0 def test_heif_save_multi_frame(): @@ -382,7 +384,7 @@ def test_heif_save_multi_frame(): for i in range(3): assert heif_file[i].size == out_heif_file[i].size assert heif_file[i].mode == out_heif_file[i].mode - assert heif_file[i].bit_depth == out_heif_file[i].bit_depth + assert heif_file[i].info["bit_depth"] == out_heif_file[i].info["bit_depth"] assert heif_file[i].info["primary"] == out_heif_file[i].info["primary"] @@ -418,3 +420,20 @@ def test_chroma_avif_encoding_8bit(chroma, diff_epsilon, im): im_out = Image.open(im_buf) im = im.convert(mode=im_out.mode) helpers.assert_image_similar(im, im_out, diff_epsilon) + + +@pytest.mark.parametrize("size", ((8, 8), (9, 9), (10, 10), (11, 11), (21, 21), (31, 31), (64, 64))) +@pytest.mark.parametrize("mode", ("L", "LA", "RGB", "RGBA")) +def test_encode_function(mode, size: tuple): + im = Image.effect_mandelbrot(size, (-3, -2.5, 2, 2.5), 100) + im = im.convert(mode) + buf = BytesIO() + pillow_heif.encode(im.mode, im.size, im.tobytes(), buf, quality=-1) + helpers.compare_hashes([buf, im]) + + +@pytest.mark.parametrize("mode", ("L", "LA", "RGB", "RGBA", "L;16", "LA;16", "RGB;16", "RGBA;16")) +def test_encode_function_not_enough_data(mode): + buf = BytesIO() + with pytest.raises(ValueError): + pillow_heif.encode(mode, (128, 128), b"123456", buf)

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 X@E-wstmyz(v;W~A#@ErL|K>_)mN7&% diff --git a/tests/images/heif/RGB_10__128x128.avif b/tests/images/heif/RGB_10__128x128.avif new file mode 100644 index 0000000000000000000000000000000000000000..5d44fc0bef70d4ec504b76216beba5ac21a8fb30 GIT binary patch literal 8234 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 CeZ0f~ literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGB_10__128x128.heif b/tests/images/heif/RGB_10__128x128.heif new file mode 100644 index 0000000000000000000000000000000000000000..c3b9b8f0f4445bf2dbf9fc05e0be7538ade5fa35 GIT binary patch literal 11637 zcmYMa1yq$!&^Y|uOLupdbV^EHx>F>iJETEE!F%ZzL?o0FP*A!<;?js9NFyMjgb0Fk z@5k?b|L^(sIlHs_%Jj_<#NXgT%h>fnNVJfZew2?w&sXLsAt1!EV3X0(1Ib2tfj5 zw?hthckkOx{zKeWs@s7x{Qr&If*eKv>!RI#{e5p?k-M*>&n*nPMX10qasR{pPXYVT z)%C>%1d(8{-jbm~zzAUg{5Jsu%4_+rg+Ln|!FG$|SBCx1%KslxNXp8pm$|LQTjh<3 zN%%i&{aiZ-*^i1U;kOxL0g$H zvM*fk*m=r^d1nl~3Bw{q+|tG{cnJI>((-aA$)5fsXcv1RGo=U)?o>e?{~T?^ER&D> zZhATT$dr#%$<&0@b^faw(u2}NceI!cfDw7W+CojI&`Z}9;D2@7V#Gw>rDe;2O8`ZPDuzsP|SF~9Qp zG>!O5@_S2|_J$CI^VHeHP5Ov>m=4QSnoTvl69vKf8(DASUn*`#-aFtZgkEf6$5C*D z%a!VKE1m5h6M5tOu)11sCB**n)z4fNw9qpmyO(38FC2zm7ebsp+F>-$k^KN@bw#ydtPvW5Mhkp)q@V1)JPhtXxWF^-|r)7D~_o#5RJ<(2-A?K~X z9uoZ9^cE9%U4-WI`n70YzqmLxcs5-V1INX_b-M)W`|!gKVhE;mJEf^?dT?&dWrTO1L>z*ug-F79xv+<1zIFY* z?�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 literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGB_10__29x100.avif b/tests/images/heif/RGB_10__29x100.avif new file mode 100644 index 0000000000000000000000000000000000000000..4d65935255f4e8b0f3a9dff4f3981ee543badf05 GIT binary patch literal 2494 zcmXv}2{;q{AKw_cN8_bP&MYc-NkmwhGjoK!j=3`L*v!m*AFs&2SH056UEZkIk(@b} z-Z^5)orW<-j)@p*VgKoU-p}{>{yxX^d!FCt2LJ%%0tit!6cHT&;Npmb(E-}QXw;Ek z4fZFXj&d#(1N|`ge|l zG3%zJ^R}cf>oo-|jpoO`itI5U8*DjlRG)BIw;`@45^hUsXGUz*GXgm;LuewCtrC0$mzM?)bORp$K&>_+RXzlsgO5-2Z8oS$;2|dcUw7O# zPN-8@Ck$fFbY)oBNZNevKK$Pwo;%ZHOR1~FO>|Vb&Um1biQ8oRv6kCF1kYq43{{53l!u8`k;tIGlIJsybV{=a(M#r1ZrAVHPcr z7Bb)FUv$FT5aD+Dp61%Z$dP@$OI}t&Wu*El){s>1TSKgsrCsO?C46`4RKaYTUW{2} zvA?;bkR?$f%zg5JL{iN=`3h|dSI=XXi$Eqr2lbznXbHo&U%Y|IrY(JY%7HhJK`r?m z9$fKVN~a(s)0LQmxv}{^xR9q^Shx8qhC68tJA6rq{{|JtrjOh-Huj!8f zQ^lf)Id3bl6|P3-Wx5sq#?G_6XkBHPCAYwxq+w=sue^`GH;@x1$9A4zQ2+ob(M8%! zwP(tU&&93o`2?TwoEP%uSzG&ChE+6MQC$9E&UAdgSIM_mHHl3cIkU$8>`ZBJp6ygtyb{~iiO0&#fW0jFou-4X%BfRPosig=p$PF~ zz{(30c(CC4(BX!x&=cVz+O6S)Klcgl)k;Jr&HY`rk$hphfGE@(h z^Uj|*x7fi;QY8P6;Uk=4a&c7B+&u5XAXfU_lJ4=_{vN-bxki8R0`9Y|e^KAbx;F;! z;mueg=Z4xz^7O)KDaX>k1*yUXkN@f{SWWunzVg<~bwprYenZXe1DS)l%F@9{jjxHX z=aQC7Cza!EY+9b&H~+P&BlQemc9A1cUwBVRItRKjU7;V8XnT$GdS#gbBfLh({&mD^Ge$6Rf%? zx*SItuVmf-u|s8lJEOeoe8mpmFI!&w9djG|mw@p-oKrHmcTk#8dP)JXM0^f}Mv89I z6bksGGUOb3d8|s+R`yo(`s@wUzUsM1*#U4jb?6I-XAyo?%X{EJKPW`EXMYg;r{5ch>OE=UvmJF^GS&seDW#0Jep?% zg+2)uK5}IYHxDB!WWm=LVeZvi?n?|UaOM6!-T-s4$Ec1$^$$uE3;s1ScWVK4p z$@G!0kD?#VY>Gi|SQDUz-utrmRQSVb;xB5<{gMGnp7lbq2@JYvB)j>&YA`o_0U6?& z-kow`WY{))rgi^KvO?q{)pg)gmC{t~vfP(gzPK}I+Y;~7*w)b9&o&*RchN9Yd1;3D>@yRX z5{H;ObVsnP`tlmehLLYbXW)8N7Z1RK_l|p4mF`7KgvI&&gB)L0U5xb(I{b2cVsGU8 z95615mgDIbK+>>R`R7u3K>eP_ruistigE2BY<8xmlb>Jy94*{9!CWgQid6qmcff)X zFO>j}XRduT-ZNNd0R@qkASUK+PdTA-Jk1j7tT2!$^9*pZ%L?enhkP=(Rb1UD?Xb*I zk8KxYd%t2@(fnT2Zs85i#Tu6tJAOziKx}Vb&fUj2oC1G*xojZ4M!nfsPI}gSmjAo3 zV^HUX74JBQbA!n7SqrRb(ifRTKjo*MDGcb)a`&<$*JIf4;Tir{o6eu5z%Nk2K7+`y|+RUCZP zRpU^yT`UYCg`jU1)~P{0qdiD^D*0}41C4ijvz4kaIo+RZ;LA%TUDCrhhcdDr?bAHI zZWH?u_JwfA8=VPHhFv?&jV>UEm%MTb0fkG)`0Gh--K?l{X6rWn%!`hd=9Xr{$#(g< zSmd=@47}|*L6|I?V`~yvRBr$D*7;*M*27<)%~EZfXTmV39NrOU{r+0 zlf+3+c@a%DeY2UoLZiw*o;AgbynmA%WUFalATRmKP8s?NxVG}anW}-ewm){MznO?5 jFhQ%g*ryVTw)Om^-}(WYGH0t5E2l1#PojR~?M3__2U&&i literal 0 HcmV?d00001 diff --git a/tests/images/heif/RGB_10__29x100.heif b/tests/images/heif/RGB_10__29x100.heif new file mode 100644 index 0000000000000000000000000000000000000000..a7fb853e2d7f5836759aa943d0f2842f560b5a9d GIT binary patch literal 3939 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 KY> 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