From fefd33d55ab4a33c415d8e04f0575b259fa2e8b5 Mon Sep 17 00:00:00 2001
From: Federico Terraneo <fede.tft@miosix.org>
Date: Fri, 19 Feb 2021 23:38:36 +0100
Subject: [PATCH] Updated png++ libs

---
 _tools/code_generators/libs/png++/ChangeLog   |   5 +
 _tools/code_generators/libs/png++/Doxyfile    |   2 +-
 _tools/code_generators/libs/png++/Makefile    |  59 ++---
 _tools/code_generators/libs/png++/NEWS        |  18 ++
 _tools/code_generators/libs/png++/common.mk   |  47 ++++
 _tools/code_generators/libs/png++/config.hpp  |  44 +++-
 .../code_generators/libs/png++/consumer.hpp   |  10 +-
 .../libs/png++/convert_color_space.hpp        | 104 +++++---
 _tools/code_generators/libs/png++/error.hpp   |  38 ++-
 .../libs/png++/example/Makefile               |  41 +--
 .../code_generators/libs/png++/generator.hpp  |  13 +-
 .../code_generators/libs/png++/gray_pixel.hpp |   4 +-
 _tools/code_generators/libs/png++/image.hpp   |  50 ++--
 .../code_generators/libs/png++/image_info.hpp |  28 +-
 .../libs/png++/index_pixel.hpp                |   4 +-
 _tools/code_generators/libs/png++/info.hpp    |  40 ++-
 _tools/code_generators/libs/png++/io_base.hpp |  72 +++++-
 .../libs/png++/packed_pixel.hpp               |   8 +-
 .../libs/png++/pixel_buffer.hpp               |  38 +--
 .../libs/png++/pixel_traits.hpp               |  12 +-
 _tools/code_generators/libs/png++/png.hpp     |   9 +-
 _tools/code_generators/libs/png++/reader.hpp  |  10 +-
 .../libs/png++/solid_pixel_buffer.hpp         | 243 ++++++++++++++++++
 .../libs/png++/streaming_base.hpp             |   2 +-
 .../code_generators/libs/png++/test/Makefile  | 101 --------
 _tools/code_generators/libs/png++/test/README |  85 ------
 .../libs/png++/test/basn0g01.png              | Bin 164 -> 0 bytes
 .../libs/png++/test/basn0g02.png              | Bin 104 -> 0 bytes
 .../libs/png++/test/basn0g04.png              | Bin 145 -> 0 bytes
 .../libs/png++/test/basn0g08.png              | Bin 138 -> 0 bytes
 .../libs/png++/test/basn0g16.png              | Bin 167 -> 0 bytes
 .../libs/png++/test/basn2c08.png              | Bin 145 -> 0 bytes
 .../libs/png++/test/basn2c16.png              | Bin 302 -> 0 bytes
 .../libs/png++/test/basn3p01.png              | Bin 112 -> 0 bytes
 .../libs/png++/test/basn3p02.png              | Bin 146 -> 0 bytes
 .../libs/png++/test/basn3p04.png              | Bin 216 -> 0 bytes
 .../libs/png++/test/basn3p08.png              | Bin 1286 -> 0 bytes
 .../libs/png++/test/basn4a08.png              | Bin 126 -> 0 bytes
 .../libs/png++/test/basn4a16.png              | Bin 2206 -> 0 bytes
 .../libs/png++/test/basn6a08.png              | Bin 184 -> 0 bytes
 .../libs/png++/test/basn6a16.png              | Bin 3435 -> 0 bytes
 .../png++/test/cmp/basn0g01.png.GA.16.out     | Bin 266 -> 0 bytes
 .../libs/png++/test/cmp/basn0g01.png.GA.8.out | Bin 232 -> 0 bytes
 .../png++/test/cmp/basn0g01.png.GRAY.16.out   | Bin 228 -> 0 bytes
 .../png++/test/cmp/basn0g01.png.GRAY.8.out    | Bin 196 -> 0 bytes
 .../png++/test/cmp/basn0g01.png.RGB.16.out    | Bin 285 -> 0 bytes
 .../png++/test/cmp/basn0g01.png.RGB.8.out     | Bin 254 -> 0 bytes
 .../png++/test/cmp/basn0g01.png.RGBA.16.out   | Bin 302 -> 0 bytes
 .../png++/test/cmp/basn0g01.png.RGBA.8.out    | Bin 268 -> 0 bytes
 .../libs/png++/test/cmp/basn0g01.png.out      | Bin 148 -> 0 bytes
 .../png++/test/cmp/basn0g02.png.GA.16.out     | Bin 146 -> 0 bytes
 .../libs/png++/test/cmp/basn0g02.png.GA.8.out | Bin 134 -> 0 bytes
 .../png++/test/cmp/basn0g02.png.GRAY.16.out   | Bin 129 -> 0 bytes
 .../png++/test/cmp/basn0g02.png.GRAY.8.out    | Bin 110 -> 0 bytes
 .../png++/test/cmp/basn0g02.png.RGB.16.out    | Bin 166 -> 0 bytes
 .../png++/test/cmp/basn0g02.png.RGB.8.out     | Bin 142 -> 0 bytes
 .../png++/test/cmp/basn0g02.png.RGBA.16.out   | Bin 200 -> 0 bytes
 .../png++/test/cmp/basn0g02.png.RGBA.8.out    | Bin 151 -> 0 bytes
 .../libs/png++/test/cmp/basn0g02.png.out      | Bin 88 -> 0 bytes
 .../png++/test/cmp/basn0g04.png.GA.16.out     | Bin 119 -> 0 bytes
 .../libs/png++/test/cmp/basn0g04.png.GA.8.out | Bin 113 -> 0 bytes
 .../png++/test/cmp/basn0g04.png.GRAY.16.out   | Bin 111 -> 0 bytes
 .../png++/test/cmp/basn0g04.png.GRAY.8.out    | Bin 94 -> 0 bytes
 .../png++/test/cmp/basn0g04.png.RGB.16.out    | Bin 139 -> 0 bytes
 .../png++/test/cmp/basn0g04.png.RGB.8.out     | Bin 121 -> 0 bytes
 .../png++/test/cmp/basn0g04.png.RGBA.16.out   | Bin 171 -> 0 bytes
 .../png++/test/cmp/basn0g04.png.RGBA.8.out    | Bin 120 -> 0 bytes
 .../libs/png++/test/cmp/basn0g04.png.out      | Bin 129 -> 0 bytes
 .../png++/test/cmp/basn0g08.png.GA.16.out     | Bin 153 -> 0 bytes
 .../libs/png++/test/cmp/basn0g08.png.GA.8.out | Bin 136 -> 0 bytes
 .../png++/test/cmp/basn0g08.png.GRAY.16.out   | Bin 136 -> 0 bytes
 .../png++/test/cmp/basn0g08.png.GRAY.8.out    | Bin 122 -> 0 bytes
 .../png++/test/cmp/basn0g08.png.RGB.16.out    | Bin 195 -> 0 bytes
 .../png++/test/cmp/basn0g08.png.RGB.8.out     | Bin 154 -> 0 bytes
 .../png++/test/cmp/basn0g08.png.RGBA.16.out   | Bin 204 -> 0 bytes
 .../png++/test/cmp/basn0g08.png.RGBA.8.out    | Bin 162 -> 0 bytes
 .../png++/test/cmp/basn0g16.png.GA.16.out     | Bin 172 -> 0 bytes
 .../libs/png++/test/cmp/basn0g16.png.GA.8.out | Bin 138 -> 0 bytes
 .../png++/test/cmp/basn0g16.png.GRAY.16.out   | Bin 151 -> 0 bytes
 .../png++/test/cmp/basn0g16.png.GRAY.8.out    | Bin 122 -> 0 bytes
 .../png++/test/cmp/basn0g16.png.RGB.16.out    | Bin 188 -> 0 bytes
 .../png++/test/cmp/basn0g16.png.RGB.8.out     | Bin 163 -> 0 bytes
 .../png++/test/cmp/basn0g16.png.RGBA.16.out   | Bin 210 -> 0 bytes
 .../png++/test/cmp/basn0g16.png.RGBA.8.out    | Bin 178 -> 0 bytes
 .../png++/test/cmp/basn2c08.png.GA.16.out     | Bin 238 -> 0 bytes
 .../libs/png++/test/cmp/basn2c08.png.GA.8.out | Bin 219 -> 0 bytes
 .../png++/test/cmp/basn2c08.png.GRAY.16.out   | Bin 215 -> 0 bytes
 .../png++/test/cmp/basn2c08.png.GRAY.8.out    | Bin 193 -> 0 bytes
 .../png++/test/cmp/basn2c08.png.RGB.16.out    | Bin 173 -> 0 bytes
 .../png++/test/cmp/basn2c08.png.RGB.8.out     | Bin 129 -> 0 bytes
 .../png++/test/cmp/basn2c08.png.RGBA.16.out   | Bin 192 -> 0 bytes
 .../png++/test/cmp/basn2c08.png.RGBA.8.out    | Bin 141 -> 0 bytes
 .../png++/test/cmp/basn2c16.png.GA.16.out     | Bin 559 -> 0 bytes
 .../libs/png++/test/cmp/basn2c16.png.GA.8.out | Bin 231 -> 0 bytes
 .../png++/test/cmp/basn2c16.png.GRAY.16.out   | Bin 499 -> 0 bytes
 .../png++/test/cmp/basn2c16.png.GRAY.8.out    | Bin 211 -> 0 bytes
 .../png++/test/cmp/basn2c16.png.RGB.16.out    | Bin 286 -> 0 bytes
 .../png++/test/cmp/basn2c16.png.RGB.8.out     | Bin 216 -> 0 bytes
 .../png++/test/cmp/basn2c16.png.RGBA.16.out   | Bin 300 -> 0 bytes
 .../png++/test/cmp/basn2c16.png.RGBA.8.out    | Bin 227 -> 0 bytes
 .../png++/test/cmp/basn3p01.png.GA.16.out     | Bin 134 -> 0 bytes
 .../libs/png++/test/cmp/basn3p01.png.GA.8.out | Bin 128 -> 0 bytes
 .../png++/test/cmp/basn3p01.png.GRAY.16.out   | Bin 122 -> 0 bytes
 .../png++/test/cmp/basn3p01.png.GRAY.8.out    | Bin 108 -> 0 bytes
 .../png++/test/cmp/basn3p01.png.RGB.16.out    | Bin 163 -> 0 bytes
 .../png++/test/cmp/basn3p01.png.RGB.8.out     | Bin 138 -> 0 bytes
 .../png++/test/cmp/basn3p01.png.RGBA.16.out   | Bin 196 -> 0 bytes
 .../png++/test/cmp/basn3p01.png.RGBA.8.out    | Bin 141 -> 0 bytes
 .../png++/test/cmp/basn3p02.png.GA.16.out     | Bin 161 -> 0 bytes
 .../libs/png++/test/cmp/basn3p02.png.GA.8.out | Bin 154 -> 0 bytes
 .../png++/test/cmp/basn3p02.png.GRAY.16.out   | Bin 145 -> 0 bytes
 .../png++/test/cmp/basn3p02.png.GRAY.8.out    | Bin 129 -> 0 bytes
 .../png++/test/cmp/basn3p02.png.RGB.16.out    | Bin 173 -> 0 bytes
 .../png++/test/cmp/basn3p02.png.RGB.8.out     | Bin 149 -> 0 bytes
 .../png++/test/cmp/basn3p02.png.RGBA.16.out   | Bin 208 -> 0 bytes
 .../png++/test/cmp/basn3p02.png.RGBA.8.out    | Bin 157 -> 0 bytes
 .../png++/test/cmp/basn3p04.png.GA.16.out     | Bin 179 -> 0 bytes
 .../libs/png++/test/cmp/basn3p04.png.GA.8.out | Bin 173 -> 0 bytes
 .../png++/test/cmp/basn3p04.png.GRAY.16.out   | Bin 168 -> 0 bytes
 .../png++/test/cmp/basn3p04.png.GRAY.8.out    | Bin 146 -> 0 bytes
 .../png++/test/cmp/basn3p04.png.RGB.16.out    | Bin 213 -> 0 bytes
 .../png++/test/cmp/basn3p04.png.RGB.8.out     | Bin 192 -> 0 bytes
 .../png++/test/cmp/basn3p04.png.RGBA.16.out   | Bin 249 -> 0 bytes
 .../png++/test/cmp/basn3p04.png.RGBA.8.out    | Bin 199 -> 0 bytes
 .../png++/test/cmp/basn3p08.png.GA.16.out     | Bin 386 -> 0 bytes
 .../libs/png++/test/cmp/basn3p08.png.GA.8.out | Bin 350 -> 0 bytes
 .../png++/test/cmp/basn3p08.png.GRAY.16.out   | Bin 346 -> 0 bytes
 .../png++/test/cmp/basn3p08.png.GRAY.8.out    | Bin 305 -> 0 bytes
 .../png++/test/cmp/basn3p08.png.RGB.16.out    | Bin 299 -> 0 bytes
 .../png++/test/cmp/basn3p08.png.RGB.8.out     | Bin 245 -> 0 bytes
 .../png++/test/cmp/basn3p08.png.RGBA.16.out   | Bin 309 -> 0 bytes
 .../png++/test/cmp/basn3p08.png.RGBA.8.out    | Bin 261 -> 0 bytes
 .../png++/test/cmp/basn4a08.png.GA.16.out     | Bin 128 -> 0 bytes
 .../libs/png++/test/cmp/basn4a08.png.GA.8.out | Bin 110 -> 0 bytes
 .../png++/test/cmp/basn4a08.png.GRAY.16.out   | Bin 106 -> 0 bytes
 .../png++/test/cmp/basn4a08.png.GRAY.8.out    | Bin 100 -> 0 bytes
 .../png++/test/cmp/basn4a08.png.RGB.16.out    | Bin 147 -> 0 bytes
 .../png++/test/cmp/basn4a08.png.RGB.8.out     | Bin 123 -> 0 bytes
 .../png++/test/cmp/basn4a08.png.RGBA.16.out   | Bin 168 -> 0 bytes
 .../png++/test/cmp/basn4a08.png.RGBA.8.out    | Bin 131 -> 0 bytes
 .../png++/test/cmp/basn4a16.png.GA.16.out     | Bin 2190 -> 0 bytes
 .../libs/png++/test/cmp/basn4a16.png.GA.8.out | Bin 972 -> 0 bytes
 .../png++/test/cmp/basn4a16.png.GRAY.16.out   | Bin 1812 -> 0 bytes
 .../png++/test/cmp/basn4a16.png.GRAY.8.out    | Bin 821 -> 0 bytes
 .../png++/test/cmp/basn4a16.png.RGB.16.out    | Bin 3767 -> 0 bytes
 .../png++/test/cmp/basn4a16.png.RGB.8.out     | Bin 1480 -> 0 bytes
 .../png++/test/cmp/basn4a16.png.RGBA.16.out   | Bin 3964 -> 0 bytes
 .../png++/test/cmp/basn4a16.png.RGBA.8.out    | Bin 1689 -> 0 bytes
 .../png++/test/cmp/basn6a08.png.GA.16.out     | Bin 152 -> 0 bytes
 .../libs/png++/test/cmp/basn6a08.png.GA.8.out | Bin 124 -> 0 bytes
 .../png++/test/cmp/basn6a08.png.GRAY.16.out   | Bin 120 -> 0 bytes
 .../png++/test/cmp/basn6a08.png.GRAY.8.out    | Bin 107 -> 0 bytes
 .../png++/test/cmp/basn6a08.png.RGB.16.out    | Bin 188 -> 0 bytes
 .../png++/test/cmp/basn6a08.png.RGB.8.out     | Bin 159 -> 0 bytes
 .../png++/test/cmp/basn6a08.png.RGBA.16.out   | Bin 204 -> 0 bytes
 .../png++/test/cmp/basn6a08.png.RGBA.8.out    | Bin 168 -> 0 bytes
 .../png++/test/cmp/basn6a16.png.GA.16.out     | Bin 2176 -> 0 bytes
 .../libs/png++/test/cmp/basn6a16.png.GA.8.out | Bin 740 -> 0 bytes
 .../png++/test/cmp/basn6a16.png.GRAY.16.out   | Bin 1712 -> 0 bytes
 .../png++/test/cmp/basn6a16.png.GRAY.8.out    | Bin 603 -> 0 bytes
 .../png++/test/cmp/basn6a16.png.RGB.16.out    | Bin 3175 -> 0 bytes
 .../png++/test/cmp/basn6a16.png.RGB.8.out     | Bin 1110 -> 0 bytes
 .../png++/test/cmp/basn6a16.png.RGBA.16.out   | Bin 3419 -> 0 bytes
 .../png++/test/cmp/basn6a16.png.RGBA.8.out    | Bin 1214 -> 0 bytes
 .../libs/png++/test/cmp/gray_16.out           | Bin 36072 -> 0 bytes
 .../libs/png++/test/cmp/gray_packed_1.png.out | Bin 75 -> 0 bytes
 .../libs/png++/test/cmp/gray_packed_2.png.out | Bin 83 -> 0 bytes
 .../libs/png++/test/cmp/gray_packed_4.png.out | Bin 148 -> 0 bytes
 .../png++/test/cmp/interlace.png.GA.16.out    | Bin 428 -> 0 bytes
 .../png++/test/cmp/interlace.png.GA.8.out     | Bin 386 -> 0 bytes
 .../png++/test/cmp/interlace.png.GRAY.16.out  | Bin 382 -> 0 bytes
 .../png++/test/cmp/interlace.png.GRAY.8.out   | Bin 345 -> 0 bytes
 .../png++/test/cmp/interlace.png.RGB.16.out   | Bin 426 -> 0 bytes
 .../png++/test/cmp/interlace.png.RGB.8.out    | Bin 364 -> 0 bytes
 .../png++/test/cmp/interlace.png.RGBA.16.out  | Bin 462 -> 0 bytes
 .../png++/test/cmp/interlace.png.RGBA.8.out   | Bin 390 -> 0 bytes
 .../libs/png++/test/cmp/palette1.png.out      | Bin 85 -> 0 bytes
 .../libs/png++/test/cmp/palette2.png.out      | Bin 93 -> 0 bytes
 .../libs/png++/test/cmp/palette4.png.out      | Bin 158 -> 0 bytes
 .../libs/png++/test/cmp/palette8.png.out      | Bin 1384 -> 0 bytes
 .../libs/png++/test/cmp/palette8_tRNS.png.out | Bin 1652 -> 0 bytes
 .../libs/png++/test/convert_color_space.cpp   | 128 ---------
 .../code_generators/libs/png++/test/dump.cpp  |  39 ---
 .../libs/png++/test/generate_gray_packed.cpp  |  70 -----
 .../libs/png++/test/generate_palette.cpp      |  96 -------
 .../libs/png++/test/interlace.png             | Bin 393 -> 0 bytes
 .../png++/test/read_write_gray_packed.cpp     |  86 -------
 .../libs/png++/test/read_write_param.cpp      |  24 --
 .../code_generators/libs/png++/test/test.sh   |  42 ---
 .../libs/png++/test/write_gray_16.cpp         |  55 ----
 _tools/code_generators/libs/png++/writer.hpp  |  10 +-
 191 files changed, 694 insertions(+), 943 deletions(-)
 create mode 100644 _tools/code_generators/libs/png++/common.mk
 create mode 100644 _tools/code_generators/libs/png++/solid_pixel_buffer.hpp
 delete mode 100644 _tools/code_generators/libs/png++/test/Makefile
 delete mode 100644 _tools/code_generators/libs/png++/test/README
 delete mode 100644 _tools/code_generators/libs/png++/test/basn0g01.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn0g02.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn0g04.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn0g08.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn0g16.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn2c08.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn2c16.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn3p01.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn3p02.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn3p04.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn3p08.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn4a08.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn4a16.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn6a08.png
 delete mode 100644 _tools/code_generators/libs/png++/test/basn6a16.png
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g01.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g01.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g01.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g01.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g01.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g02.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g02.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g02.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g02.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g02.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g04.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g04.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g04.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g04.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g04.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g08.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g08.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g08.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g08.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g16.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g16.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g16.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g16.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c08.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c08.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c08.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c08.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c16.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c16.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c16.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c16.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p01.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p01.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p01.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p01.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p02.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p02.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p02.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p02.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p04.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p04.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p04.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p04.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p08.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p08.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p08.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p08.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a08.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a08.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a08.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a08.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a16.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a16.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a16.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a16.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a08.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a08.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a08.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a08.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a16.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a16.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a16.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a16.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/gray_16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/gray_packed_1.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/gray_packed_2.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/gray_packed_4.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/interlace.png.GA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/interlace.png.GA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/interlace.png.GRAY.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/interlace.png.GRAY.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/interlace.png.RGB.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/interlace.png.RGB.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/interlace.png.RGBA.16.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/interlace.png.RGBA.8.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/palette1.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/palette2.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/palette4.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/palette8.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/cmp/palette8_tRNS.png.out
 delete mode 100644 _tools/code_generators/libs/png++/test/convert_color_space.cpp
 delete mode 100644 _tools/code_generators/libs/png++/test/dump.cpp
 delete mode 100644 _tools/code_generators/libs/png++/test/generate_gray_packed.cpp
 delete mode 100644 _tools/code_generators/libs/png++/test/generate_palette.cpp
 delete mode 100644 _tools/code_generators/libs/png++/test/interlace.png
 delete mode 100644 _tools/code_generators/libs/png++/test/read_write_gray_packed.cpp
 delete mode 100644 _tools/code_generators/libs/png++/test/read_write_param.cpp
 delete mode 100644 _tools/code_generators/libs/png++/test/test.sh
 delete mode 100644 _tools/code_generators/libs/png++/test/write_gray_16.cpp

diff --git a/_tools/code_generators/libs/png++/ChangeLog b/_tools/code_generators/libs/png++/ChangeLog
index ca37921..e4433a9 100644
--- a/_tools/code_generators/libs/png++/ChangeLog
+++ b/_tools/code_generators/libs/png++/ChangeLog
@@ -1,3 +1,8 @@
+2009-06-21  Alex Shulgin
+
+	* config.hpp: Added support for FreeBSD (detect endianness).
+	Patch by <c.petrik.sosa@gmail.com>.
+
 png++-0.2.3	19 Oct 2008
 
 	Fixed numerous `already defined' errors due to require_color_space
diff --git a/_tools/code_generators/libs/png++/Doxyfile b/_tools/code_generators/libs/png++/Doxyfile
index 0db262f..0692826 100644
--- a/_tools/code_generators/libs/png++/Doxyfile
+++ b/_tools/code_generators/libs/png++/Doxyfile
@@ -29,7 +29,7 @@ PROJECT_NAME = png++
 # number.  This could be handy for archiving the generated
 # documentation or if some version control system is used.
 
-PROJECT_NUMBER = 0.2.1
+PROJECT_NUMBER = $(VERSION)
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or
 # absolute) base path where the generated documentation will be put.
diff --git a/_tools/code_generators/libs/png++/Makefile b/_tools/code_generators/libs/png++/Makefile
index 2accfbe..3cc0a11 100644
--- a/_tools/code_generators/libs/png++/Makefile
+++ b/_tools/code_generators/libs/png++/Makefile
@@ -29,34 +29,18 @@
 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-# don't forget to update version before releasing!
-version := 0.2.3
-
-ifndef PREFIX
-PREFIX := /usr/local
-endif
-
-ifdef MINGW
-bin_suffix := .exe
-endif
+PNGPP := .
 
-make_cflags := -Wall $(CFLAGS) -I$(PREFIX)/include
-make_ldflags := $(LDFLAGS) -L$(PREFIX)/lib
-
-ifndef NDEBUG
-make_cflags := $(make_cflags) -g
-make_ldflags := $(make_ldflags) -g
-endif
-
-ifndef LIBPNG_CONFIG
-LIBPNG_CONFIG := libpng-config
-endif
+# don't forget to update version before releasing!
+version := 0.2.9
 
-build_files := Makefile Doxyfile
+build_files := common.mk Makefile Doxyfile
 doc_files := AUTHORS BUGS ChangeLog COPYING INSTALL NEWS README TODO
-headers := *.hpp
+headers := $(wildcard *.hpp)
 sources :=
 
+include common.mk
+
 dist_dir := png++-$(version)
 dist_package := png++-$(version).tar.gz
 dist_files := $(build_files) $(doc_files) \
@@ -67,9 +51,14 @@ all: examples
 
 install: install-headers install-docs
 
+uninstall: uninstall-headers uninstall-docs
+
 install-headers:
 	mkdir -p $(PREFIX)/include/png++
-	cp *.hpp $(PREFIX)/include/png++
+	cp $(headers) $(PREFIX)/include/png++
+
+uninstall-headers:
+	rm -rf $(PREFIX)/include/png++
 
 dist: dist-mkdir dist-copy-files dist-package
 
@@ -90,27 +79,24 @@ dist-package:
 	rm -rf $(dist_dir)
 
 clean: test-clean examples-clean
-#	rm -f $(targets)
 
 thorough-clean: clean docs-clean
 
 check: test
 
 test:
-	$(MAKE) test -C test $(MAKEFLAGS) PNGPP=`pwd`
+	$(MAKE) test -C test $(MAKEFLAGS)
 
 test-clean:
 	$(MAKE) clean -C test $(MAKEFLAGS)
 
-test-compile-headers: *.hpp
-	for i in *.hpp; do \
-		echo '#include "'$$i'"' >$$i.cpp \
-		&& g++ -c $$i.cpp $(make_cflags) `$(LIBPNG_CONFIG) --cflags`; \
-	done
-	rm -f *.hpp.o *.hpp.cpp
+test-compile-headers: $(headers:%.hpp=%.hpp.o)
+
+%.hpp.o:
+	$(CXX) -c $(@:%.hpp.o=%.hpp) -o /dev/null $(make_cflags)
 
 docs:
-	doxygen
+	VERSION=$(version) doxygen
 
 docs-clean:
 	rm -rf doc
@@ -126,15 +112,18 @@ install-docs:
 		[ -d png++ ] || ln -s $(dist_dir) png++; \
 	fi
 
+uninstall-docs:
+	rm -rf $(PREFIX)/share/doc/$(dist_dir) $(PREFIX)/share/doc/png++
+
 examples:
 	$(MAKE) -C example $(MAKEFLAGS)
 
 examples-clean:
 	$(MAKE) clean -C example $(MAKEFLAGS)
 
-.PHONY: all install \
+.PHONY: install \
   dist dist-mkdir dist-copy-files dist-package \
-  clean thorough-clean \
+  thorough-clean \
   check test test-clean test-compile-headers \
   docs docs-clean \
   examples examples-clean
diff --git a/_tools/code_generators/libs/png++/NEWS b/_tools/code_generators/libs/png++/NEWS
index 74b228b..cc006fb 100644
--- a/_tools/code_generators/libs/png++/NEWS
+++ b/_tools/code_generators/libs/png++/NEWS
@@ -1,3 +1,21 @@
+Version 0.2.7:
+
+  - Added solid_pixel_buffer (patch by Andrey Potapov).
+
+  - Fixed some compilation problems on Win32.
+
+Version 0.2.5:
+
+  - Fixed compatibility with newer libpng versions (>= 1.4)
+
+  - Fixed compilation on FreeBSD.
+
+  - Fixed tRNS handling with transformations.
+
+  - Added IO transformation debugging facility.
+
+  - Better organized test suite.
+
 Version 0.2.3:
 
   - Fixed numerous `already defined' errors due to require_color_space
diff --git a/_tools/code_generators/libs/png++/common.mk b/_tools/code_generators/libs/png++/common.mk
new file mode 100644
index 0000000..2886324
--- /dev/null
+++ b/_tools/code_generators/libs/png++/common.mk
@@ -0,0 +1,47 @@
+ifndef PREFIX
+PREFIX := /usr/local
+endif
+
+ifdef MINGW
+bin_suffix := .exe
+endif
+
+ifndef CXX
+CXX := g++
+endif
+
+ifndef LIBPNG_CONFIG
+LIBPNG_CONFIG := libpng-config
+endif
+
+make_cflags := -Wall -I$(PNGPP) -I$(PREFIX)/include $(shell $(LIBPNG_CONFIG) --cflags) $(CFLAGS)
+make_ldflags := -L$(PREFIX)/lib $(shell $(LIBPNG_CONFIG) --ldflags) $(LDFLAGS)
+
+ifndef NDEBUG
+make_cflags := $(make_cflags) -g
+make_ldflags := $(make_ldflags) -g
+endif
+
+deps := $(sources:.cpp=.dep)
+objects := $(sources:.cpp=.o)
+bins := $(sources:.cpp=$(bin_suffix))
+
+all: $(deps) $(bins)
+
+%$(bin_suffix): %.o
+	$(CXX) -o $@ $< $(make_ldflags)
+
+%.o: %.cpp
+	$(CXX) -c -o $@ $< $(make_cflags)
+
+%.dep: %.cpp
+	$(CXX) -M $(CPPFLAGS) $(make_cflags) $< -o- | \
+	  sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@
+
+clean: clean-deps
+	rm -f $(bins) $(objects)
+
+clean-deps:
+	rm -f $(deps)
+
+.PHONY: all clean clean-deps
diff --git a/_tools/code_generators/libs/png++/config.hpp b/_tools/code_generators/libs/png++/config.hpp
index 0604e42..4a317b2 100644
--- a/_tools/code_generators/libs/png++/config.hpp
+++ b/_tools/code_generators/libs/png++/config.hpp
@@ -31,12 +31,14 @@
 #ifndef PNGPP_CONFIG_HPP_INCLUDED
 #define PNGPP_CONFIG_HPP_INCLUDED
 
+#include <stdlib.h>
+
 // Endianness test
 #if defined(__GLIBC__)
 
 #include <endian.h>
 
-#elif defined(__WIN32)
+#elif defined(_WIN32)
 
 #define	__LITTLE_ENDIAN	1234
 #define	__BIG_ENDIAN	4321
@@ -47,10 +49,50 @@
 #include <machine/endian.h>
 #include <sys/_endian.h>
 
+#elif defined(__FreeBSD__)
+
+#include <machine/endian.h>
+#include <sys/endian.h>
+
+#elif defined(__sun)
+
+#include <sys/isa_defs.h>
+
 #else
 
 #error Byte-order could not be detected.
 
 #endif
 
+// Determine C++11 features
+#if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) && defined(__GXX_EXPERIMENTAL_CXX0X__)
+
+#define PNGPP_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+// gcc c++11 support list
+// http://gcc.gnu.org/projects/cxx0x.html
+
+// gcc supports static_assert since 4.3
+#if (PNGPP_GCC_VERSION >= 40300)
+#define PNGPP_HAS_STATIC_ASSERT
+#endif
+
+// gcc supports std::move since 4.6
+#if (PNGPP_GCC_VERSION >= 40600)
+#define PNGPP_HAS_STD_MOVE
+#endif
+
+#undef PNGPP_GCC_VERSION
+
+#elif defined(_MSC_VER)
+
+// MS Visual C++ compiler supports static_assert and std::move since VS2010
+// http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
+#if (_MSC_VER >= 1600)
+#define PNGPP_HAS_STATIC_ASSERT
+#define PNGPP_HAS_STD_MOVE
+#endif
+
+#endif
+
+
 #endif // PNGPP_CONFIG_HPP_INCLUDED
diff --git a/_tools/code_generators/libs/png++/consumer.hpp b/_tools/code_generators/libs/png++/consumer.hpp
index dac6374..a3ff9ec 100644
--- a/_tools/code_generators/libs/png++/consumer.hpp
+++ b/_tools/code_generators/libs/png++/consumer.hpp
@@ -68,7 +68,7 @@ namespace png
      * as follows:
      *
      * \code
-     * png::byte* get_next_row(size_t pos);
+     * png::byte* get_next_row(png::uint_32 pos);
      * void reset(size_t pass);
      * \endcode
      *
@@ -167,8 +167,7 @@ namespace png
 #ifdef PNG_READ_SWAP_SUPPORTED
                 rd.set_swap();
 #else
-                throw error("Cannot read 16-bit image:"
-                            " recompile with PNG_READ_SWAP_SUPPORTED.");
+                throw error("Cannot read 16-bit image: recompile with PNG_READ_SWAP_SUPPORTED.");
 #endif
             }
 #endif
@@ -180,8 +179,7 @@ namespace png
 #ifdef PNG_READ_INTERLACING_SUPPORTED
                 pass_count = rd.set_interlace_handling();
 #else
-                throw error("Cannot read interlaced image:"
-                            " interlace handling disabled.");
+                throw error("Cannot read interlaced image: interlace handling disabled.");
 #endif
             }
             else
@@ -244,7 +242,7 @@ namespace png
             {
                 pixel_con->reset(pass);
 
-                for (size_t pos = 0; pos < this->get_info().get_height(); ++pos)
+                for (uint_32 pos = 0; pos < this->get_info().get_height(); ++pos)
                 {
                     rd.read_row(pixel_con->get_next_row(pos));
                 }
diff --git a/_tools/code_generators/libs/png++/convert_color_space.hpp b/_tools/code_generators/libs/png++/convert_color_space.hpp
index 796a903..19b2543 100644
--- a/_tools/code_generators/libs/png++/convert_color_space.hpp
+++ b/_tools/code_generators/libs/png++/convert_color_space.hpp
@@ -74,26 +74,34 @@ namespace png
             static void expand_8_to_16(png_struct*, png_row_info* row_info,
                                        byte* row)
             {
-//                dump_row(row, row_info->rowbytes);
-
-                for (size_t i = row_info->rowbytes; i-- > 0; )
+#ifdef DEBUG_EXPAND_8_16
+                printf("row: width=%d, bytes=%d, channels=%d\n",
+                       row_info->width, row_info->rowbytes, row_info->channels);
+                printf("<= ");
+                dump_row(row, row_info->rowbytes);
+#endif
+                for (uint_32 i = row_info->rowbytes; i-- > 0; )
                 {
-                    row[i*2 + 1] = row[i];
-                    row[i*2 + 0] = 0;
+                    row[2*i + 1] = row[i];
+                    row[2*i + 0] = 0;
                 }
-
-//                dump_row(row, 2*row_info->rowbytes);
+#ifdef DEBUG_EXPAND_8_16
+                printf("=> ");
+                dump_row(row, 2*row_info->rowbytes);
+#endif
             }
 
-            static void dump_row(byte const* row, size_t width)
+#ifdef DEBUG_EXPAND_8_16
+            static void dump_row(byte const* row, uint_32 width)
             {
                 printf("{");
-                for (size_t i = 0; i < width; ++i)
+                for (uint_32 i = 0; i < width; ++i)
                 {
                     printf(" %02x,", row[i]);
                 }
                 printf(" }\n");
             }
+#endif
 
             template< class reader >
             static void handle_16(reader& io)
@@ -103,8 +111,7 @@ namespace png
 #ifdef PNG_READ_16_TO_8_SUPPORTED
                     io.set_strip_16();
 #else
-                    throw error("expected 8-bit data but found 16-bit;"
-                                " recompile with PNG_READ_16_TO_8_SUPPORTED");
+                    throw error("expected 8-bit data but found 16-bit; recompile with PNG_READ_16_TO_8_SUPPORTED");
 #endif
                 }
                 if (io.get_bit_depth() != 16 && traits::get_bit_depth() == 16)
@@ -114,9 +121,7 @@ namespace png
                     io.set_user_transform_info(NULL, 16,
                                                traits::get_channels());
 #else
-                    throw error("expected 16-bit data but found 8-bit;"
-                                " recompile with"
-                                " PNG_READ_USER_TRANSFORM_SUPPORTED");
+                    throw error("expected 16-bit data but found 8-bit; recompile with PNG_READ_USER_TRANSFORM_SUPPORTED");
 #endif
                 }
             }
@@ -124,23 +129,21 @@ namespace png
             template< class reader >
             static void handle_alpha(reader& io, uint_32 filler)
             {
-                bool src_alpha = io.get_color_type() & color_mask_alpha;
+                bool src_alpha = (io.get_color_type() & color_mask_alpha);
+                bool src_tRNS = io.has_chunk(chunk_tRNS);
                 bool dst_alpha = traits::get_color_type() & color_mask_alpha;
-                if (src_alpha && !dst_alpha)
+                if ((src_alpha || src_tRNS) && !dst_alpha)
                 {
 #ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
                     io.set_strip_alpha();
 #else
-                    throw error("alpha channel unexpected;"
-                                " recompile with"
-                                " PNG_READ_STRIP_ALPHA_SUPPORTED");
+                    throw error("alpha channel unexpected; recompile with PNG_READ_STRIP_ALPHA_SUPPORTED");
 #endif
                 }
                 if (!src_alpha && dst_alpha)
                 {
 #if defined(PNG_tRNS_SUPPORTED) && defined(PNG_READ_EXPAND_SUPPORTED)
-                    if ((io.get_color_type() & color_mask_palette)
-                        && io.has_chunk(chunk_tRNS))
+                    if (src_tRNS)
                     {
                         io.set_tRNS_to_alpha();
                         return;
@@ -149,9 +152,7 @@ namespace png
 #if defined(PNG_READ_FILLER_SUPPORTED) && !defined(PNG_1_0_X)
                     io.set_add_alpha(filler, filler_after);
 #else
-                    throw error("expected alpha channel but none found;"
-                                " recompile with PNG_READ_FILLER_SUPPORTED"
-                                " and be sure to use libpng > 1.0.x");
+                    throw error("expected alpha channel but none found; recompile with PNG_READ_FILLER_SUPPORTED and be sure to use libpng > 1.0.x");
 #endif
                 }
             }
@@ -159,19 +160,36 @@ namespace png
             template< class reader >
             static void handle_palette(reader& io)
             {
-                if (io.get_color_type() == color_type_palette)
+                bool src_palette =
+                    io.get_color_type() == color_type_palette;
+                bool dst_palette =
+                    traits::get_color_type() == color_type_palette;
+                if (src_palette && !dst_palette)
                 {
 #ifdef PNG_READ_EXPAND_SUPPORTED
                     io.set_palette_to_rgb();
-
-                    if (traits::get_color_type() != color_type_palette)
-                    {
-                        io.get_info().drop_palette();
-                    }
+                    io.get_info().drop_palette();
 #else
-                    throw error("indexed colors unexpected;"
-                                " recompile with PNG_READ_EXPAND_SUPPORTED");
+                    throw error("indexed colors unexpected; recompile with PNG_READ_EXPAND_SUPPORTED");
+#endif
+                }
+                else if (!src_palette && dst_palette)
+                {
+                    throw error("conversion to indexed colors is unsupported (yet)");
+                }
+                else if (src_palette && dst_palette
+                         && io.get_bit_depth() != traits::get_bit_depth())
+                {
+                    if (traits::get_bit_depth() == 8)
+                    {
+#ifdef PNG_READ_PACK_SUPPORTED
+                        io.set_packing();
 #endif
+                    }
+                    else
+                    {
+                        throw error("cannot convert to indexed colors with bit-depth < 8");
+                    }
                 }
             }
 
@@ -186,9 +204,7 @@ namespace png
 #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
                     io.set_rgb_to_gray(/*rgb_to_gray_error*/);
 #else
-                    throw error("grayscale data expected;"
-                                " recompile with"
-                                " PNG_READ_RGB_TO_GRAY_SUPPORTED");
+                    throw error("grayscale data expected; recompile with PNG_READ_RGB_TO_GRAY_SUPPORTED");
 #endif
                 }
                 if (!src_rgb && dst_rgb)
@@ -196,9 +212,7 @@ namespace png
 #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
                     io.set_gray_to_rgb();
 #else
-                    throw error("expected RGB data;"
-                                " recompile with"
-                                " PNG_READ_GRAY_TO_RGB_SUPPORTED");
+                    throw error("expected RGB data; recompile with PNG_READ_GRAY_TO_RGB_SUPPORTED");
 #endif
                 }
             }
@@ -214,9 +228,7 @@ namespace png
 #ifdef PNG_READ_EXPAND_SUPPORTED
                         io.set_gray_1_2_4_to_8();
 #else
-                        throw error("convert_color_space: expected 8-bit data;"
-                                    " recompile with"
-                                    " PNG_READ_EXPAND_SUPPORTED");
+                        throw error("convert_color_space: expected 8-bit data; recompile with PNG_READ_EXPAND_SUPPORTED");
 #endif
                     }
                 }
@@ -325,6 +337,16 @@ namespace png
     {
     };
 
+    /**
+     * \brief Converts %image %color space.  A specialization for
+     * index_pixel type.
+     */
+    template<>
+    struct convert_color_space< index_pixel >
+        : detail::convert_color_space_impl< index_pixel >
+    {
+    };
+
 } // namespace png
 
 #endif // PNGPP_CONVERT_COLOR_SPACE_HPP_INCLUDED
diff --git a/_tools/code_generators/libs/png++/error.hpp b/_tools/code_generators/libs/png++/error.hpp
index 971032f..834cf1b 100644
--- a/_tools/code_generators/libs/png++/error.hpp
+++ b/_tools/code_generators/libs/png++/error.hpp
@@ -31,9 +31,21 @@
 #ifndef PNGPP_ERROR_HPP_INCLUDED
 #define PNGPP_ERROR_HPP_INCLUDED
 
+/* check if we have strerror_s or strerror_r, prefer the former which is C11 std */
+#ifdef __STDC_LIB_EXT1__
+#define __STDC_WANT_LIB_EXT1__ 1
+#include <string.h>
+
+#define HAVE_STRERROR_S 1
+#else
+#undef  HAVE_STRERROR_S
+#endif
+
+#include <string>
 #include <stdexcept>
 #include <cerrno>
 #include <cstdlib>
+#include <cstring>
 
 namespace png
 {
@@ -73,10 +85,32 @@ namespace png
          * \param  message  error description
          * \param  error    error number
          */
-        explicit std_error(std::string const& message, int error = errno)
-            : std::runtime_error((message + ": ") + strerror(error))
+        explicit std_error(std::string const& message, int errnum = errno)
+            : std::runtime_error((message + ": ") + thread_safe_strerror(errnum))
         {
         }
+
+    protected:
+        static std::string thread_safe_strerror(int errnum)
+        {
+#define ERRBUF_SIZE 512
+            char buf[ERRBUF_SIZE] = { 0 };
+
+#ifdef HAVE_STRERROR_S
+            strerror_s(buf, ERRBUF_SIZE, errnum);
+            return std::string(buf);
+#else
+#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE
+            strerror_r(errnum, buf, ERRBUF_SIZE);
+            return std::string(buf);
+#else
+            /* GNU variant can return a pointer to static buffer instead of buf */
+            return std::string(strerror_r(errnum, buf, ERRBUF_SIZE));
+#endif
+#endif
+
+#undef ERRBUF_SIZE
+        }
     };
 
 } // namespace png
diff --git a/_tools/code_generators/libs/png++/example/Makefile b/_tools/code_generators/libs/png++/example/Makefile
index 1cbb0a2..3c209dc 100644
--- a/_tools/code_generators/libs/png++/example/Makefile
+++ b/_tools/code_generators/libs/png++/example/Makefile
@@ -28,55 +28,18 @@
 # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
-ifndef PREFIX
-PREFIX := /usr/local
-endif
-
 ifndef PNGPP
 PNGPP := ..
 endif
 
-make_cflags := -Wall $(CFLAGS) -I$(PREFIX)/include -I$(PNGPP)
-make_ldflags := $(LDFLAGS) -L$(PREFIX)/lib
-
-ifndef NDEBUG
-make_cflags := $(make_cflags) -g
-make_ldflags := $(make_ldflags) -g
-endif
-
-ifndef LIBPNG_CONFIG
-LIBPNG_CONFIG := libpng-config
-endif
-
 sources := pixel_generator.cpp
 
-deps := $(sources:.cpp=.dep)
-objects := $(sources:.cpp=.o)
-targets := $(sources:.cpp=$(bin_suffix))
-
-all: $(deps) $(targets)
+include ../common.mk
 
 dist-copy-files:
 	mkdir $(dist_dir)/example
 	cp $(sources) Makefile $(dist_dir)/example
 
-clean: clean-deps
-	rm -f $(targets) $(objects)
-
-.PHONY: all dist-copy-files clean clean-deps
-
-%$(bin_suffix): %.o
-	g++ -o $@ $< $(make_ldflags) `$(LIBPNG_CONFIG) --ldflags`
-
-%.o: %.cpp
-	g++ -c -o $@ $< $(make_cflags) `$(LIBPNG_CONFIG) --cflags`
-
-
-%.dep: %.cpp
-	g++ -M $(CPPFLAGS) $(make_cflags) $< -o- | \
-	  sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@
-
-clean-deps:
-	rm -f $(deps)
+.PHONY: dist-copy-files
 
 include $(deps)
diff --git a/_tools/code_generators/libs/png++/generator.hpp b/_tools/code_generators/libs/png++/generator.hpp
index e9cc02b..e2f6323 100644
--- a/_tools/code_generators/libs/png++/generator.hpp
+++ b/_tools/code_generators/libs/png++/generator.hpp
@@ -69,7 +69,7 @@ namespace png
      * as follows:
      *
      * \code
-     * png::byte* get_next_row(size_t pos);
+     * png::byte* get_next_row(png::uint_32 pos);
      * void reset(size_t pass);
      * \endcode
      *
@@ -138,8 +138,7 @@ namespace png
 #ifdef PNG_WRITE_SWAP_SUPPORTED
                 wr.set_swap();
 #else
-                throw error("Cannot write 16-bit image:"
-                            " recompile with PNG_WRITE_SWAP_SUPPORTED.");
+                throw error("Cannot write 16-bit image: recompile with PNG_WRITE_SWAP_SUPPORTED.");
 #endif
             }
 #endif
@@ -154,12 +153,10 @@ namespace png
                 }
                 else
                 {
-                    throw std::logic_error("Cannot write interlaced image:"
-                                           " generator does not support it.");
+                    throw std::logic_error("Cannot write interlaced image: generator does not support it.");
                 }
 #else
-                throw error("Cannot write interlaced image:"
-                            " interlace handling disabled.");
+                throw error("Cannot write interlaced image: interlace handling disabled.");
 #endif
             }
             else
@@ -171,7 +168,7 @@ namespace png
             {
                 pixel_gen->reset(pass);
 
-                for (size_t pos = 0; pos < this->get_info().get_height(); ++pos)
+                for (uint_32 pos = 0; pos < this->get_info().get_height(); ++pos)
                 {
                     wr.write_row(pixel_gen->get_next_row(pos));
                 }
diff --git a/_tools/code_generators/libs/png++/gray_pixel.hpp b/_tools/code_generators/libs/png++/gray_pixel.hpp
index c1bdb07..69978b7 100644
--- a/_tools/code_generators/libs/png++/gray_pixel.hpp
+++ b/_tools/code_generators/libs/png++/gray_pixel.hpp
@@ -52,7 +52,7 @@ namespace png
      * \brief The packed gray pixel class template.  The available
      * specializations are for 1-, 2- and 4-bit pixels.
      */
-    template< size_t bits >
+    template< int bits >
     class packed_gray_pixel
         : public packed_pixel< bits >
     {
@@ -99,7 +99,7 @@ namespace png
     /**
      * \brief Pixel traits specialization for packed_gray_pixel.
      */
-    template< size_t bits >
+    template< int bits >
     struct pixel_traits< packed_gray_pixel< bits > >
         : basic_pixel_traits< packed_gray_pixel< bits >, byte,
                               color_type_gray, /* channels = */ 1, bits >
diff --git a/_tools/code_generators/libs/png++/image.hpp b/_tools/code_generators/libs/png++/image.hpp
index 0cbf8e4..bca475a 100644
--- a/_tools/code_generators/libs/png++/image.hpp
+++ b/_tools/code_generators/libs/png++/image.hpp
@@ -47,8 +47,18 @@ namespace png
      * %info like interlace type, compression method, palette (for
      * colormap-based images) etc.  Provides methods to read and write
      * images from/to a generic stream and to manipulate %image pixels.
+     * 
+     * The default pixel_buffer stores pixels in a vector of vectors, which
+     * is good for openning, editing or converting an image to any
+     * pixel type.
+     * But for simple and fast image unpacking to one memory chunk this approch
+     * is unacceptable, because it leads to multiple memory allocations, the
+     * unpacked image is spread across the memory and client code needs to
+     * gather it manualy. solid_pixel_buffer solves this problem, but with
+     * restriction: pixels with fractional number of bytes per channel are
+     * not allowed (see solid_pixel_buffer.hpp for details).
      */
-    template< typename pixel >
+    template< typename pixel, typename pixel_buffer_type = pixel_buffer< pixel > >
     class image
     {
     public:
@@ -60,12 +70,14 @@ namespace png
         /**
          * \brief The pixel buffer type for \c pixel.
          */
-        typedef pixel_buffer< pixel > pixbuf;
+        typedef pixel_buffer_type pixbuf;
 
         /**
          * \brief Represents a row of image pixel data.
          */
         typedef typename pixbuf::row_type row_type;
+        typedef typename pixbuf::row_access row_access;
+        typedef typename pixbuf::row_const_access row_const_access;
 
         /**
          * \brief A transformation functor to convert any image to
@@ -92,7 +104,7 @@ namespace png
         /**
          * \brief Constructs an empty image of specified width and height.
          */
-        image(size_t width, size_t height)
+        image(uint_32 width, uint_32 height)
             : m_info(make_image_info< pixel >())
         {
             resize(width, height);
@@ -262,14 +274,6 @@ namespace png
             write_stream(stream);
         }
 
-        /**
-         * \brief Writes an image to a stream.
-         */
-        void write_stream(std::ostream& stream)
-        {
-            write_stream(stream);
-        }
-
         /**
          * \brief Writes an image to a stream.
          */
@@ -306,12 +310,12 @@ namespace png
             m_pixbuf = buffer;
         }
 
-        size_t get_width() const
+        uint_32 get_width() const
         {
             return m_pixbuf.get_width();
         }
 
-        size_t get_height() const
+        uint_32 get_height() const
         {
             return m_pixbuf.get_height();
         }
@@ -319,7 +323,7 @@ namespace png
         /**
          * \brief Resizes the image pixel buffer.
          */
-        void resize(size_t width, size_t height)
+        void resize(uint_32 width, uint_32 height)
         {
             m_pixbuf.resize(width, height);
             m_info.set_width(width);
@@ -332,7 +336,7 @@ namespace png
          *
          * \see pixel_buffer::get_row()
          */
-        row_type& get_row(size_t index)
+        row_access get_row(size_t index)
         {
             return m_pixbuf.get_row(index);
         }
@@ -343,7 +347,7 @@ namespace png
          *
          * \see pixel_buffer::get_row()
          */
-        row_type const& get_row(size_t index) const
+        row_const_access get_row(size_t index) const
         {
             return m_pixbuf.get_row(index);
         }
@@ -351,7 +355,7 @@ namespace png
         /**
          * \brief The non-checking version of get_row() method.
          */
-        row_type& operator[](size_t index)
+        row_access operator[](size_t index)
         {
             return m_pixbuf[index];
         }
@@ -359,7 +363,7 @@ namespace png
         /**
          * \brief The non-checking version of get_row() method.
          */
-        row_type const& operator[](size_t index) const
+        row_const_access operator[](size_t index) const
         {
             return m_pixbuf[index];
         }
@@ -449,6 +453,16 @@ namespace png
             m_info.set_tRNS(trns);
         }
 
+        double get_gamma() const
+        {
+            return m_info.get_gamma();
+        }
+
+        void set_gamma(double gamma)
+        {
+            m_info.set_gamma(gamma);
+        }
+
     protected:
         /**
          * \brief A common base class template for pixel_consumer and
diff --git a/_tools/code_generators/libs/png++/image_info.hpp b/_tools/code_generators/libs/png++/image_info.hpp
index 9b17890..8407bc1 100644
--- a/_tools/code_generators/libs/png++/image_info.hpp
+++ b/_tools/code_generators/libs/png++/image_info.hpp
@@ -59,26 +59,27 @@ namespace png
               m_color_type(color_type_none),
               m_interlace_type(interlace_none),
               m_compression_type(compression_type_default),
-              m_filter_type(filter_type_default)
+              m_filter_type(filter_type_default),
+              m_gamma(0.0)
         {
         }
 
-        size_t get_width() const
+        uint_32 get_width() const
         {
             return m_width;
         }
 
-        void set_width(size_t width)
+        void set_width(uint_32 width)
         {
             m_width = width;
         }
 
-        size_t get_height() const
+        uint_32 get_height() const
         {
             return m_height;
         }
 
-        void set_height(size_t height)
+        void set_height(uint_32 height)
         {
             m_height = height;
         }
@@ -93,12 +94,12 @@ namespace png
             m_color_type = color_space;
         }
 
-        size_t get_bit_depth() const
+        int get_bit_depth() const
         {
             return m_bit_depth;
         }
 
-        void set_bit_depth(size_t bit_depth)
+        void set_bit_depth(int bit_depth)
         {
             m_bit_depth = bit_depth;
         }
@@ -171,16 +172,27 @@ namespace png
             m_tRNS = trns;
         }
 
+        double get_gamma() const
+        {
+            return m_gamma;
+        }
+
+        void set_gamma(double gamma)
+        {
+            m_gamma = gamma;
+        }
+
     protected:
         uint_32 m_width;
         uint_32 m_height;
-        size_t m_bit_depth;
+        int m_bit_depth;
         color_type m_color_type;
         interlace_type m_interlace_type;
         compression_type m_compression_type;
         filter_type m_filter_type;
         palette m_palette;
         tRNS m_tRNS;
+        double m_gamma;
     };
 
     /**
diff --git a/_tools/code_generators/libs/png++/index_pixel.hpp b/_tools/code_generators/libs/png++/index_pixel.hpp
index a28b806..204a2f8 100644
--- a/_tools/code_generators/libs/png++/index_pixel.hpp
+++ b/_tools/code_generators/libs/png++/index_pixel.hpp
@@ -62,7 +62,7 @@ namespace png
      * \brief The packed indexed pixel class template.  The available
      * specializations are for 1-, 2- and 4-bit pixels.
      */
-    template< size_t bits >
+    template< int bits >
     class packed_index_pixel
         : public packed_pixel< bits >
     {
@@ -100,7 +100,7 @@ namespace png
     /**
      * \brief Pixel traits specialization for packed_index_pixel.
      */
-    template< size_t bits >
+    template< int bits >
     struct pixel_traits< packed_index_pixel< bits > >
         : basic_pixel_traits< packed_index_pixel< bits >, byte,
                               color_type_palette, /* channels = */ 1, bits >
diff --git a/_tools/code_generators/libs/png++/info.hpp b/_tools/code_generators/libs/png++/info.hpp
index a12bf2a..3f3cf09 100644
--- a/_tools/code_generators/libs/png++/info.hpp
+++ b/_tools/code_generators/libs/png++/info.hpp
@@ -75,6 +75,7 @@ namespace png
                 png_get_PLTE(m_png, m_info, & colors, & count);
                 m_palette.assign(colors, colors + count);
             }
+
 #ifdef PNG_tRNS_SUPPORTED
             if (png_get_valid(m_png, m_info, chunk_tRNS) == chunk_tRNS)
             {
@@ -91,6 +92,25 @@ namespace png
                 }
             }
 #endif
+
+#ifdef PNG_gAMA_SUPPORTED
+            if (png_get_valid(m_png, m_info, chunk_gAMA) == chunk_gAMA)
+            {
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+                if (png_get_gAMA(m_png, m_info, &m_gamma) != PNG_INFO_gAMA)
+                {
+                    throw error("png_get_gAMA() failed");
+                }
+#else
+                png_fixed_point gamma = 0;
+                if (png_get_gAMA_fixed(m_png, m_info, &gamma) != PNG_INFO_gAMA)
+                {
+                    throw error("png_get_gAMA_fixed() failed");
+                }
+                m_gamma = gamma / 100000.0;
+#endif
+            }
+#endif
         }
 
         void write() const
@@ -105,7 +125,7 @@ namespace png
                 {
                     png_set_PLTE(m_png, m_info,
                                  const_cast< color* >(& m_palette[0]),
-                                 m_palette.size());
+                                 (int) m_palette.size());
                 }
                 if (! m_tRNS.empty())
                 {
@@ -115,11 +135,25 @@ namespace png
                                  m_tRNS.size(),
                                  NULL);
 #else
-                    throw error("attempted to write tRNS chunk;"
-                                " recompile with PNG_tRNS_SUPPORTED");
+                    throw error("attempted to write tRNS chunk; recompile with PNG_tRNS_SUPPORTED");
 #endif
                 }
             }
+
+            if (m_gamma > 0)
+            {
+#ifdef PNG_gAMA_SUPPORTED
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+                png_set_gAMA(m_png, m_info, m_gamma);
+#else
+                png_set_gAMA_fixed(m_png, m_info,
+                                   (png_fixed_point)(m_gamma * 100000));
+#endif
+#else
+                throw error("attempted to write gAMA chunk; recompile with PNG_gAMA_SUPPORTED");
+#endif
+            }
+
             png_write_info(m_png, m_info);
         }
 
diff --git a/_tools/code_generators/libs/png++/io_base.hpp b/_tools/code_generators/libs/png++/io_base.hpp
index b089fa9..3c2d830 100644
--- a/_tools/code_generators/libs/png++/io_base.hpp
+++ b/_tools/code_generators/libs/png++/io_base.hpp
@@ -33,10 +33,24 @@
 
 #include <cassert>
 #include <cstdio>
+#include <cstdarg>
 #include "error.hpp"
 #include "info.hpp"
 #include "end_info.hpp"
 
+static void
+trace_io_transform(char const* fmt, ...)
+{
+#ifdef DEBUG_IO_TRANSFORM
+    va_list va;
+    va_start(va, fmt);
+    fprintf(stderr, "TRANSFORM_IO: ");
+    vfprintf(stderr, fmt, va);
+    va_end(va);
+#endif
+}
+#define TRACE_IO_TRANSFORM trace_io_transform
+
 namespace png
 {
 
@@ -103,22 +117,22 @@ namespace png
         //////////////////////////////////////////////////////////////////////
         // info accessors
         //
-        size_t get_width() const
+        uint_32 get_width() const
         {
             return m_info.get_width();
         }
 
-        void set_width(size_t width)
+        void set_width(uint_32 width)
         {
             m_info.set_width(width);
         }
 
-        size_t get_height() const
+        uint_32 get_height() const
         {
             return m_info.get_height();
         }
 
-        void set_height(size_t height)
+        void set_height(uint_32 height)
         {
             m_info.set_height(height);
         }
@@ -133,12 +147,12 @@ namespace png
             m_info.set_color_type(color_space);
         }
 
-        size_t get_bit_depth() const
+        int get_bit_depth() const
         {
             return m_info.get_bit_depth();
         }
 
-        void set_bit_depth(size_t bit_depth)
+        void set_bit_depth(int bit_depth)
         {
             m_info.set_bit_depth(bit_depth);
         }
@@ -185,16 +199,19 @@ namespace png
 #if defined(PNG_READ_EXPAND_SUPPORTED)
         void set_gray_1_2_4_to_8() const
         {
-            png_set_gray_1_2_4_to_8(m_png);
+            TRACE_IO_TRANSFORM("png_set_expand_gray_1_2_4_to_8\n");
+            png_set_expand_gray_1_2_4_to_8(m_png);
         }
 
         void set_palette_to_rgb() const
         {
+            TRACE_IO_TRANSFORM("png_set_palette_to_rgb\n");
             png_set_palette_to_rgb(m_png);
         }
 
         void set_tRNS_to_alpha() const
         {
+            TRACE_IO_TRANSFORM("png_set_tRNS_to_alpha\n");
             png_set_tRNS_to_alpha(m_png);
         }
 #endif // defined(PNG_READ_EXPAND_SUPPORTED)
@@ -202,6 +219,7 @@ namespace png
 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
         void set_bgr() const
         {
+            TRACE_IO_TRANSFORM("png_set_bgr\n");
             png_set_bgr(m_png);
         }
 #endif
@@ -209,6 +227,7 @@ namespace png
 #if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
         void set_gray_to_rgb() const
         {
+            TRACE_IO_TRANSFORM("png_set_gray_to_rgb\n");
             png_set_gray_to_rgb(m_png);
         }
 #endif
@@ -219,6 +238,10 @@ namespace png
                              double red_weight   = -1.0,
                              double green_weight = -1.0) const
         {
+            TRACE_IO_TRANSFORM("png_set_rgb_to_gray: error_action=%d,"
+                               " red_weight=%lf, green_weight=%lf\n",
+                               error_action, red_weight, green_weight);
+
             png_set_rgb_to_gray(m_png, error_action, red_weight, green_weight);
         }
 #else
@@ -227,6 +250,10 @@ namespace png
                              fixed_point red_weight   = -1,
                              fixed_point green_weight = -1) const
         {
+            TRACE_IO_TRANSFORM("png_set_rgb_to_gray_fixed: error_action=%d,"
+                               " red_weight=%d, green_weight=%d\n",
+                               error_action, red_weight, green_weight);
+
             png_set_rgb_to_gray_fixed(m_png, error_action,
                                       red_weight, green_weight);
         }
@@ -238,6 +265,7 @@ namespace png
 #if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
         void set_strip_alpha() const
         {
+            TRACE_IO_TRANSFORM("png_set_strip_alpha\n");
             png_set_strip_alpha(m_png);
         }
 #endif
@@ -246,6 +274,7 @@ namespace png
     || defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
         void set_swap_alpha() const
         {
+            TRACE_IO_TRANSFORM("png_set_swap_alpha\n");
             png_set_swap_alpha(m_png);
         }
 #endif
@@ -254,6 +283,7 @@ namespace png
     || defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
         void set_invert_alpha() const
         {
+            TRACE_IO_TRANSFORM("png_set_invert_alpha\n");
             png_set_invert_alpha(m_png);
         }
 #endif
@@ -261,12 +291,18 @@ namespace png
 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
         void set_filler(uint_32 filler, filler_type type) const
         {
+            TRACE_IO_TRANSFORM("png_set_filler: filler=%08x, type=%d\n",
+                               filler, type);
+
             png_set_filler(m_png, filler, type);
         }
 
 #if !defined(PNG_1_0_X)
         void set_add_alpha(uint_32 filler, filler_type type) const
         {
+            TRACE_IO_TRANSFORM("png_set_add_alpha: filler=%08x, type=%d\n",
+                               filler, type);
+
             png_set_add_alpha(m_png, filler, type);
         }
 #endif
@@ -275,6 +311,7 @@ namespace png
 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
         void set_swap() const
         {
+            TRACE_IO_TRANSFORM("png_set_swap\n");
             png_set_swap(m_png);
         }
 #endif
@@ -282,6 +319,7 @@ namespace png
 #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
         void set_packing() const
         {
+            TRACE_IO_TRANSFORM("png_set_packing\n");
             png_set_packing(m_png);
         }
 #endif
@@ -290,6 +328,7 @@ namespace png
     || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
         void set_packswap() const
         {
+            TRACE_IO_TRANSFORM("png_set_packswap\n");
             png_set_packswap(m_png);
         }
 #endif
@@ -298,6 +337,10 @@ namespace png
         void set_shift(byte red_bits, byte green_bits, byte blue_bits,
                        byte alpha_bits = 0) const
         {
+            TRACE_IO_TRANSFORM("png_set_shift: red_bits=%d, green_bits=%d,"
+                               " blue_bits=%d, alpha_bits=%d\n",
+                               red_bits, green_bits, blue_bits, alpha_bits);
+
             if (get_color_type() != color_type_rgb
                 || get_color_type() != color_type_rgb_alpha)
             {
@@ -313,11 +356,13 @@ namespace png
 
         void set_shift(byte gray_bits, byte alpha_bits = 0) const
         {
+            TRACE_IO_TRANSFORM("png_set_shift: gray_bits=%d, alpha_bits=%d\n",
+                               gray_bits, alpha_bits);
+
             if (get_color_type() != color_type_gray
                 || get_color_type() != color_type_gray_alpha)
             {
-                throw error("set_shift: expected Gray or Gray+Alpha"
-                            " color type");
+                throw error("set_shift: expected Gray or Gray+Alpha color type");
             }
             color_info bits;
             bits.gray = gray_bits;
@@ -330,6 +375,7 @@ namespace png
     || defined(PNG_WRITE_INTERLACING_SUPPORTED)
         int set_interlace_handling() const
         {
+            TRACE_IO_TRANSFORM("png_set_interlace_handling\n");
             return png_set_interlace_handling(m_png);
         }
 #endif
@@ -337,6 +383,7 @@ namespace png
 #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
         void set_invert_mono() const
         {
+            TRACE_IO_TRANSFORM("png_set_invert_mono\n");
             png_set_invert_mono(m_png);
         }
 #endif
@@ -344,6 +391,7 @@ namespace png
 #if defined(PNG_READ_16_TO_8_SUPPORTED)
         void set_strip_16() const
         {
+            TRACE_IO_TRANSFORM("png_set_strip_16\n");
             png_set_strip_16(m_png);
         }
 #endif
@@ -351,6 +399,7 @@ namespace png
 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
         void set_read_user_transform(png_user_transform_ptr transform_fn)
         {
+            TRACE_IO_TRANSFORM("png_set_read_user_transform_fn\n");
             png_set_read_user_transform_fn(m_png, transform_fn);
         }
 #endif
@@ -359,6 +408,9 @@ namespace png
     || defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
         void set_user_transform_info(void* info, int bit_depth, int channels)
         {
+            TRACE_IO_TRANSFORM("png_set_user_transform_info: bit_depth=%d,"
+                               " channels=%d\n", bit_depth, channels);
+
             png_set_user_transform_info(m_png, info, bit_depth, channels);
         }
 #endif
@@ -394,7 +446,7 @@ namespace png
 
         void raise_error()
         {
-            longjmp(m_png->jmpbuf, -1);
+            longjmp(png_jmpbuf(m_png), -1);
         }
 
         static void raise_error(png_struct* png, char const* message)
diff --git a/_tools/code_generators/libs/png++/packed_pixel.hpp b/_tools/code_generators/libs/png++/packed_pixel.hpp
index 7202b4f..bf05c47 100644
--- a/_tools/code_generators/libs/png++/packed_pixel.hpp
+++ b/_tools/code_generators/libs/png++/packed_pixel.hpp
@@ -38,7 +38,7 @@ namespace png
 
     namespace detail
     {
-        template< size_t bits > class allowed_bit_depth;
+        template< int bits > class allowed_bit_depth;
 
         template<> class allowed_bit_depth< 1 > {};
         template<> class allowed_bit_depth< 2 > {};
@@ -50,7 +50,7 @@ namespace png
      *
      * \see packed_gray_pixel, packed_index_pixel
      */
-    template< size_t bits >
+    template< int bits >
     class packed_pixel
         : detail::allowed_bit_depth< bits >
     {
@@ -65,12 +65,12 @@ namespace png
             return m_value;
         }
 
-        static size_t const get_bit_depth()
+        static int get_bit_depth()
         {
             return bits;
         }
 
-        static byte const get_bit_mask()
+        static byte get_bit_mask()
         {
             return (1 << bits) - 1;
         }
diff --git a/_tools/code_generators/libs/png++/pixel_buffer.hpp b/_tools/code_generators/libs/png++/pixel_buffer.hpp
index 4aa16e0..07009df 100644
--- a/_tools/code_generators/libs/png++/pixel_buffer.hpp
+++ b/_tools/code_generators/libs/png++/pixel_buffer.hpp
@@ -65,6 +65,8 @@ namespace png
          * \brief A row of pixel data.
          */
         typedef row row_type;
+        typedef row_type& row_access;
+        typedef row_type const& row_const_access;
         typedef traits row_traits;
 
         /**
@@ -79,22 +81,22 @@ namespace png
         /**
          * \brief Constructs an empty pixel buffer object.
          */
-        basic_pixel_buffer(size_t width, size_t height)
+        basic_pixel_buffer(uint_32 width, uint_32 height)
             : m_width(0),
               m_height(0)
         {
             resize(width, height);
         }
 
-        size_t get_width() const
+        uint_32 get_width() const
         {
             return m_width;
         }
 
-        size_t get_height() const
-	    {
+        uint_32 get_height() const
+        {
             return m_height;
-	    }
+        }
 
         /**
          * \brief Resizes the pixel buffer.
@@ -102,7 +104,7 @@ namespace png
          * If new width or height is greater than the original,
          * expanded pixels are filled with value of \a pixel().
          */
-        void resize(size_t width, size_t height)
+        void resize(uint_32 width, uint_32 height)
         {
             m_width = width;
             m_height = height;
@@ -123,7 +125,7 @@ namespace png
          * std::out_of_range is thrown if \c index is greater than \c
          * height.
          */
-        row_type& get_row(size_t index)
+        row_access get_row(size_t index)
         {
             return m_rows.at(index);
         }
@@ -134,7 +136,7 @@ namespace png
          *
          * The checking version.
          */
-        row_type const& get_row(size_t index) const
+        row_const_access get_row(size_t index) const
         {
             return m_rows.at(index);
         }
@@ -142,7 +144,7 @@ namespace png
         /**
          * \brief The non-checking version of get_row() method.
          */
-        row_type& operator[](size_t index)
+        row_access operator[](size_t index)
         {
             return m_rows[index];
         }
@@ -150,7 +152,7 @@ namespace png
         /**
          * \brief The non-checking version of get_row() method.
          */
-        row_type const& operator[](size_t index) const
+        row_const_access operator[](size_t index) const
         {
             return m_rows[index];
         }
@@ -181,8 +183,8 @@ namespace png
         }
 
     protected:
-        size_t m_width;
-        size_t m_height;
+        uint_32 m_width;
+        uint_32 m_height;
         typedef std::vector< row_type > row_vec;
         row_vec m_rows;
     };
@@ -216,7 +218,7 @@ namespace png
         {
         }
 
-        pixel_buffer(size_t width, size_t height)
+        pixel_buffer(uint_32 width, uint_32 height)
             : basic_pixel_buffer< pixel, std::vector< pixel > >(width, height)
         {
         }
@@ -255,7 +257,7 @@ namespace png
              */
             static size_t get_shift(size_t index)
             {
-                size_t const bits = pixel::get_bit_depth();
+                int const bits = pixel::get_bit_depth();
                 return (8 - bits) - (index % get_pixels_per_byte()) * bits;
             }
 
@@ -444,7 +446,7 @@ namespace png
      * \brief The pixel buffer class template specialization for the
      * packed_gray_pixel type.
      */
-    template< size_t bits >
+    template< int bits >
     class pixel_buffer< packed_gray_pixel< bits > >
         : public basic_pixel_buffer< packed_gray_pixel< bits >,
                                      packed_pixel_row< packed_gray_pixel
@@ -458,7 +460,7 @@ namespace png
         {
         }
 
-        pixel_buffer(size_t width, size_t height)
+        pixel_buffer(uint_32 width, uint_32 height)
             : basic_pixel_buffer< pixel_type,
                                   pixel_row_type >(width, height)
         {
@@ -469,7 +471,7 @@ namespace png
      * \brief The pixel buffer class template specialization for the
      * packed_index_pixel type.
      */
-    template< size_t bits >
+    template< int bits >
     class pixel_buffer< packed_index_pixel< bits > >
         : public basic_pixel_buffer< packed_index_pixel< bits >,
                                      packed_pixel_row< packed_index_pixel
@@ -483,7 +485,7 @@ namespace png
         {
         }
 
-        pixel_buffer(size_t width, size_t height)
+        pixel_buffer(uint_32 width, uint_32 height)
             : basic_pixel_buffer< pixel_type,
                                   pixel_row_type >(width, height)
         {
diff --git a/_tools/code_generators/libs/png++/pixel_traits.hpp b/_tools/code_generators/libs/png++/pixel_traits.hpp
index 6500691..8ffdfee 100644
--- a/_tools/code_generators/libs/png++/pixel_traits.hpp
+++ b/_tools/code_generators/libs/png++/pixel_traits.hpp
@@ -56,8 +56,8 @@ namespace png
     template< typename pixel,
               typename component,
               color_type pixel_color_type,
-              size_t channels = sizeof(pixel) / sizeof(component),
-              size_t bit_depth = std::numeric_limits< component >::digits >
+              int channels_value = sizeof(pixel) / sizeof(component),
+              int bit_depth_value = std::numeric_limits< component >::digits >
     struct basic_pixel_traits
     {
         typedef pixel pixel_type;
@@ -67,11 +67,15 @@ namespace png
         {
             return pixel_color_type;
         }
-        static size_t get_channels()
+        
+        static const int channels = channels_value;
+        static int get_channels()
         {
             return channels;
         }
-        static size_t get_bit_depth()
+        
+        static const int bit_depth = bit_depth_value;
+        static int get_bit_depth()
         {
             return bit_depth;
         }
diff --git a/_tools/code_generators/libs/png++/png.hpp b/_tools/code_generators/libs/png++/png.hpp
index 1e82c04..e4f4520 100644
--- a/_tools/code_generators/libs/png++/png.hpp
+++ b/_tools/code_generators/libs/png++/png.hpp
@@ -54,6 +54,7 @@
 #include "generator.hpp"
 #include "consumer.hpp"
 #include "pixel_buffer.hpp"
+#include "solid_pixel_buffer.hpp"
 #include "require_color_space.hpp"
 #include "convert_color_space.hpp"
 #include "image.hpp"
@@ -158,9 +159,9 @@
  * #include <png++/png.hpp>
  * //...
  * png::image< png::rgb_pixel > image(128, 128);
- * for (size_t y = 0; y < image.get_height(); ++y)
+ * for (png::uint_32 y = 0; y < image.get_height(); ++y)
  * {
- *     for (size_t x = 0; x < image.get_width(); ++x)
+ *     for (png::uint_32 x = 0; x < image.get_width(); ++x)
  *     {
  *         image[y][x] = png::rgb_pixel(x, y, x + y);
  *         // non-checking equivalent of image.set_pixel(x, y, ...);
@@ -262,10 +263,10 @@
  *
  * Also, you can check out sources directly from SVN repository:
  * svn://svn.sv.nongnu.org/pngpp/trunk/ or
- * http://svn.sv.nongnu.org/pngpp/trunk/ (for people w/o outgoing svn).
+ * http://svn.sv.nongnu.org/svn/pngpp/trunk/ (for people w/o outgoing svn).
  *
  * Online version of this documentation can be found here:
- * http://www.nongnu.org/pngpp/doc/0.2.3/index.html
+ * http://www.nongnu.org/pngpp/doc/
  *
  * \section sec_bugs Bugs
  *
diff --git a/_tools/code_generators/libs/png++/reader.hpp b/_tools/code_generators/libs/png++/reader.hpp
index 61dd90c..74e2ac1 100644
--- a/_tools/code_generators/libs/png++/reader.hpp
+++ b/_tools/code_generators/libs/png++/reader.hpp
@@ -92,7 +92,7 @@ namespace png
          */
         void read_png()
         {
-            if (setjmp(m_png->jmpbuf))
+            if (setjmp(png_jmpbuf(m_png)))
             {
                 throw error(m_error);
             }
@@ -107,7 +107,7 @@ namespace png
          */
         void read_info()
         {
-            if (setjmp(m_png->jmpbuf))
+            if (setjmp(png_jmpbuf(m_png)))
             {
                 throw error(m_error);
             }
@@ -119,7 +119,7 @@ namespace png
          */
         void read_row(byte* bytes)
         {
-            if (setjmp(m_png->jmpbuf))
+            if (setjmp(png_jmpbuf(m_png)))
             {
                 throw error(m_error);
             }
@@ -131,7 +131,7 @@ namespace png
          */
         void read_end_info()
         {
-            if (setjmp(m_png->jmpbuf))
+            if (setjmp(png_jmpbuf(m_png)))
             {
                 throw error(m_error);
             }
@@ -144,7 +144,7 @@ namespace png
         }
 
     private:
-        static void read_data(png_struct* png, byte* data, size_t length)
+        static void read_data(png_struct* png, byte* data, png_size_t length)
         {
             io_base* io = static_cast< io_base* >(png_get_error_ptr(png));
             reader* rd = static_cast< reader* >(io);
diff --git a/_tools/code_generators/libs/png++/solid_pixel_buffer.hpp b/_tools/code_generators/libs/png++/solid_pixel_buffer.hpp
new file mode 100644
index 0000000..9f84245
--- /dev/null
+++ b/_tools/code_generators/libs/png++/solid_pixel_buffer.hpp
@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2007,2008   Alex Shulgin
+ *
+ * This file is part of png++ the C++ wrapper for libpng.  PNG++ is free
+ * software; the exact copying conditions are as follows:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef PNGPP_SOLID_PIXEL_BUFFER_HPP_INCLUDED
+#define PNGPP_SOLID_PIXEL_BUFFER_HPP_INCLUDED
+
+#include <cassert>
+#include <cstddef>
+#include <climits>
+#include <stdexcept>
+#include <vector>
+
+#include "config.hpp"
+#include "packed_pixel.hpp"
+#include "gray_pixel.hpp"
+#include "index_pixel.hpp"
+
+namespace png
+{
+
+    /**
+     * \brief Pixel buffer, that stores pixels as continuous memory chunk.
+     * solid_pixel_buffer is useful when user whats to open png, do some
+     * changes and fetch to buffer to draw (as texture for example).
+     */
+    template< typename pixel >
+    class solid_pixel_buffer
+    {
+    public:
+        typedef pixel_traits< pixel > pixel_traits_t;
+        struct row_traits
+        {
+            typedef pixel* row_access;
+            typedef const pixel* row_const_access;
+
+            static byte* get_data(row_access row)
+            {
+                return reinterpret_cast<byte*>(row);
+            }
+        };
+
+
+        /**
+         * \brief A row of pixel data.
+         */
+        typedef typename row_traits::row_access row_access;
+        typedef typename row_traits::row_const_access row_const_access;
+        typedef row_access row_type;
+
+        /**
+         * \brief Constructs an empty 0x0 pixel buffer object.
+         */
+        solid_pixel_buffer()
+            : m_width(0),
+              m_height(0),
+              m_stride(0)
+        {
+        }
+
+        /**
+         * \brief Constructs an empty pixel buffer object.
+         */
+        solid_pixel_buffer(uint_32 width, uint_32 height)
+            : m_width(0),
+              m_height(0),
+              m_stride(0)
+        {
+            resize(width, height);
+        }
+
+        uint_32 get_width() const
+        {
+            return m_width;
+        }
+
+        uint_32 get_height() const
+        {
+            return m_height;
+        }
+
+        /**
+         * \brief Resizes the pixel buffer.
+         *
+         * If new width or height is greater than the original,
+         * expanded pixels are filled with value of \a pixel().
+         */
+        void resize(uint_32 width, uint_32 height)
+        {
+            m_width = width;
+            m_height = height;
+            m_stride = m_width * bytes_per_pixel;
+            m_bytes.resize(height * m_stride);
+        }
+
+        /**
+         * \brief Returns a reference to the row of image data at
+         * specified index.
+         *
+         * Checks the index before returning a row: an instance of
+         * std::out_of_range is thrown if \c index is greater than \c
+         * height.
+         */
+        row_access get_row(size_t index)
+        {
+            return reinterpret_cast<row_access>(&m_bytes.at(index * m_stride));
+        }
+
+        /**
+         * \brief Returns a const reference to the row of image data at
+         * specified index.
+         *
+         * The checking version.
+         */
+        row_const_access get_row(size_t index) const
+        {
+            return (row_const_access)(&m_bytes.at(index * m_stride));
+        }
+
+        /**
+         * \brief The non-checking version of get_row() method.
+         */
+        row_access operator[](size_t index)
+        {
+            return (row_access)(&m_bytes[index * m_stride]);
+        }
+
+        /**
+         * \brief The non-checking version of get_row() method.
+         */
+        row_const_access operator[](size_t index) const
+        {
+            return (row_const_access)(&m_bytes[index * m_stride]);
+        }
+
+        /**
+         * \brief Replaces the row at specified index.
+         */
+        void put_row(size_t index, row_const_access r)
+        {
+            row_access row = get_row();
+            for (uint_32 i = 0; i < m_width; ++i)
+                *row++ = *r++;
+        }
+
+        /**
+         * \brief Returns a pixel at (x,y) position.
+         */
+        pixel get_pixel(size_t x, size_t y) const
+        {
+            size_t index = (y * m_width + x) * bytes_per_pixel;
+            return *reinterpret_cast< const pixel* >(&m_bytes.at(index));
+        }
+
+        /**
+         * \brief Replaces a pixel at (x,y) position.
+         */
+        void set_pixel(size_t x, size_t y, pixel p)
+        {
+            size_t index = (y * m_width + x) * bytes_per_pixel;
+            *reinterpret_cast< pixel* >(&m_bytes.at(index)) = p;
+        }
+
+        /**
+         * \brief Provides easy constant read access to underlying byte-buffer.
+         */
+        const std::vector< byte >& get_bytes() const
+        {
+            return m_bytes;
+        }
+
+#ifdef PNGPP_HAS_STD_MOVE
+        /**
+         * \brief Moves the buffer to client code (c++11 only) .
+         */
+        std::vector< byte > fetch_bytes()
+        {
+            m_width = 0;
+            m_height = 0;
+            m_stride = 0;
+
+            // the buffer is moved outside without copying and leave m_bytes empty.
+            return std::move(m_bytes);
+        }
+#endif
+
+    protected:
+        static const size_t bytes_per_pixel = pixel_traits_t::channels *
+                pixel_traits_t::bit_depth / CHAR_BIT;
+
+    protected:
+        uint_32 m_width;
+        uint_32 m_height;
+        size_t m_stride;
+        std::vector< byte > m_bytes;
+
+#ifdef PNGPP_HAS_STATIC_ASSERT
+        static_assert(pixel_traits_t::bit_depth % CHAR_BIT == 0,
+            "Bit_depth should consist of integer number of bytes");
+
+        static_assert(sizeof(pixel) * CHAR_BIT ==
+            pixel_traits_t::channels * pixel_traits_t::bit_depth,
+            "pixel type should contain channels data only");
+#endif
+    };
+
+    /**
+     * \brief solid_pixel_buffer for packed_pixel is not implemented now.
+     * Should there be a gap between rows? How to deal with last
+     * useless bits in last byte in buffer?
+     */
+    template< int bits >
+    class solid_pixel_buffer< packed_pixel< bits > >;
+
+} // namespace png
+
+#endif // PNGPP_solid_pixel_buffer_HPP_INCLUDED
diff --git a/_tools/code_generators/libs/png++/streaming_base.hpp b/_tools/code_generators/libs/png++/streaming_base.hpp
index 68a23dd..b63a793 100644
--- a/_tools/code_generators/libs/png++/streaming_base.hpp
+++ b/_tools/code_generators/libs/png++/streaming_base.hpp
@@ -97,7 +97,7 @@ namespace png
         {
         }
 
-        streaming_base(size_t width, size_t height)
+        streaming_base(uint_32 width, uint_32 height)
             : m_info_holder(make_image_info< pixel >())
         {
             get_info().set_width(width);
diff --git a/_tools/code_generators/libs/png++/test/Makefile b/_tools/code_generators/libs/png++/test/Makefile
deleted file mode 100644
index 5f9f159..0000000
--- a/_tools/code_generators/libs/png++/test/Makefile
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# Copyright (C) 2007,2008   Alex Shulgin
-#
-# This file is part of png++ the C++ wrapper for libpng.  PNG++ is free
-# software; the exact copying conditions are as follows:
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# 3. The name of the author may not be used to endorse or promote products
-# derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-# NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-ifndef PREFIX
-PREFIX := /usr/local
-endif
-
-ifndef PNGPP
-PNGPP := ..
-endif
-
-make_cflags := -Wall $(CFLAGS) -I$(PREFIX)/include -I$(PNGPP)
-make_ldflags := $(LDFLAGS) -L$(PREFIX)/lib
-
-ifndef NDEBUG
-make_cflags := $(make_cflags) -g
-make_ldflags := $(make_ldflags) -g
-endif
-
-ifndef LIBPNG_CONFIG
-LIBPNG_CONFIG := libpng-config
-endif
-
-sources := convert_color_space.cpp \
-  generate_gray_packed.cpp \
-  read_write_gray_packed.cpp \
-  generate_palette.cpp \
-  write_gray_16.cpp \
-  read_write_param.cpp \
-  dump.cpp
-
-deps := $(sources:.cpp=.dep)
-objects := $(sources:.cpp=.o)
-targets := $(sources:.cpp=$(bin_suffix))
-
-all: $(deps) $(targets)
-
-dist-copy-files:
-	mkdir $(dist_dir)/test
-	cp $(sources) Makefile test.sh README *.png $(dist_dir)/test
-	mkdir $(dist_dir)/test/cmp
-	cp cmp/*.out $(dist_dir)/test/cmp
-
-clean: clean-targets clean-tests-output clean-deps
-
-clean-targets:
-	rm -f $(targets) $(objects)
-
-test: all
-	./test.sh
-
-clean-tests-output:
-	rm -f *.out
-
-.PHONY: all dist-copy-files \
-  clean clean-targets \
-  test test-convert_color_space \
-  clean-tests-output \
-  clean-deps
-
-%$(bin_suffix): %.o
-	g++ -o $@ $< $(make_ldflags) `$(LIBPNG_CONFIG) --ldflags`
-
-%.o: %.cpp
-	g++ -c -o $@ $< $(make_cflags) `$(LIBPNG_CONFIG) --cflags`
-
-%.dep: %.cpp
-	g++ -M $(CPPFLAGS) $(make_cflags) $< -o- | \
-	  sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@
-
-clean-deps:
-	rm -f $(deps)
-
-include $(deps)
diff --git a/_tools/code_generators/libs/png++/test/README b/_tools/code_generators/libs/png++/test/README
deleted file mode 100644
index 714d12c..0000000
--- a/_tools/code_generators/libs/png++/test/README
+++ /dev/null
@@ -1,85 +0,0 @@
-
-pngsuite
---------
-(c) Willem van Schaik, 1999
-
-Permission to use, copy, and distribute these images for any purpose and
-without fee is hereby granted.
-
-These 15 images are part of the much larger PngSuite test-set of 
-images, available for developers of PNG supporting software. The 
-complete set, available at http:/www.schaik.com/pngsuite/, contains 
-a variety of images to test interlacing, gamma settings, ancillary
-chunks, etc.
-
-The images in this directory represent the basic PNG color-types:
-grayscale (1-16 bit deep), full color (8 or 16 bit), paletted
-(1-8 bit) and grayscale or color images with alpha channel. You
-can use them to test the proper functioning of PNG software.
-
-    filename      depth type
-    ------------ ------ --------------
-    basn0g01.png  1-bit grayscale
-    basn0g02.png  2-bit grayscale
-    basn0g04.png  4-bit grayscale
-    basn0g08.png  8-bit grayscale
-    basn0g16.png 16-bit grayscale
-    basn2c08.png  8-bit truecolor
-    basn2c16.png 16-bit truecolor
-    basn3p01.png  1-bit paletted
-    basn3p02.png  2-bit paletted
-    basn3p04.png  4-bit paletted
-    basn3p08.png  8-bit paletted
-    basn4a08.png  8-bit gray with alpha
-    basn4a16.png 16-bit gray with alpha
-    basn6a08.png  8-bit RGBA
-    basn6a16.png 16-bit RGBA
-
-Here is the correct result of typing "pngtest -m *.png" in
-this directory:
-
-Testing basn0g01.png: PASS (524 zero samples)
- Filter 0 was used 32 times
-Testing basn0g02.png: PASS (448 zero samples)
- Filter 0 was used 32 times
-Testing basn0g04.png: PASS (520 zero samples)
- Filter 0 was used 32 times
-Testing basn0g08.png: PASS (3 zero samples)
- Filter 1 was used 9 times
- Filter 4 was used 23 times
-Testing basn0g16.png: PASS (1 zero samples)
- Filter 1 was used 1 times
- Filter 2 was used 31 times
-Testing basn2c08.png: PASS (6 zero samples)
- Filter 1 was used 5 times
- Filter 4 was used 27 times
-Testing basn2c16.png: PASS (592 zero samples)
- Filter 1 was used 1 times
- Filter 4 was used 31 times
-Testing basn3p01.png: PASS (512 zero samples)
- Filter 0 was used 32 times
-Testing basn3p02.png: PASS (448 zero samples)
- Filter 0 was used 32 times
-Testing basn3p04.png: PASS (544 zero samples)
- Filter 0 was used 32 times
-Testing basn3p08.png: PASS (4 zero samples)
- Filter 0 was used 32 times
-Testing basn4a08.png: PASS (32 zero samples)
- Filter 1 was used 1 times
- Filter 4 was used 31 times
-Testing basn4a16.png: PASS (64 zero samples)
- Filter 0 was used 1 times
- Filter 1 was used 2 times
- Filter 2 was used 1 times
- Filter 4 was used 28 times
-Testing basn6a08.png: PASS (160 zero samples)
- Filter 1 was used 1 times
- Filter 4 was used 31 times
-Testing basn6a16.png: PASS (1072 zero samples)
- Filter 1 was used 4 times
- Filter 4 was used 28 times
-libpng passes test
-
-Willem van Schaik
-<willem@schaik.com>
-October 1999
diff --git a/_tools/code_generators/libs/png++/test/basn0g01.png b/_tools/code_generators/libs/png++/test/basn0g01.png
deleted file mode 100644
index e31e1c7a635b50e22b6d02ab8ba21f8099b39faa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 164
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;IMg|53hG<6jNCpN5mUKs7M+U~W1%@xC#e;-B
zT^vI=X6l~V$jNNL!+P=cC6-NI3fxsD`4dEKnhy4ICAzW)etgiSzv|VcB`rDUR;mWG
zJr6bs7kVVPNpZionys``v8rlZ_pMFy^0Q7EWa`b;Ow4<kZ;<+7zq~-Zr~c9@711E;
NJzf1=);T3K0RT&PG^GFl

diff --git a/_tools/code_generators/libs/png++/test/basn0g02.png b/_tools/code_generators/libs/png++/test/basn0g02.png
deleted file mode 100644
index 68809dd8fc0993ddebce8aa9c7bf9bbecbd36cfc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 104
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;ICI$uu2APGnoeT^NEa{HEjtq=#3k+XOi)Ub9
zkoR<P43U_coWK$LRlet=K}WzLhTyh-Mq^I-<Ow_38TNYCH@0^NFoTTnboFyt=akR{
E0DtEiR{#J2

diff --git a/_tools/code_generators/libs/png++/test/basn0g04.png b/_tools/code_generators/libs/png++/test/basn0g04.png
deleted file mode 100644
index 6fa089cb8a4ba0e8421ea05d33676856f0cac93c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 145
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I76t|ehRF|4XfiM`u%tWsIx;Y}EiimBEuMja
z!Nb$VF+^ixazcWDNJx;8Sy>?`udlbZe!7A)!_?as9s3xx%AffZu>|Z~9X3(9;ndx|
vvt<}V-pw?A!m*&}{XJE8hN-{b$x1RY$cwyVjMvR{1li^3>gTe~DWM4fibpFS

diff --git a/_tools/code_generators/libs/png++/test/basn0g08.png b/_tools/code_generators/libs/png++/test/basn0g08.png
deleted file mode 100644
index bf522eef0018ae60539ee1b50e98d97906101f2a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 138
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1VmUKs7M+U~W1%@xC#WOH4
zIC{D`hFJ6_rzEH_h;W?P%)`ps!_T4l<GZ|lLZyL>h`}kr3F#?|Dr0!qSbO?Eocj0w
n{Ezl$g@zI$2B#iOO-*582zdIhuy7@}3dj;qS3j3^P6<r_%}gks

diff --git a/_tools/code_generators/libs/png++/test/basn0g16.png b/_tools/code_generators/libs/png++/test/basn0g16.png
deleted file mode 100644
index 318ebcadf4fd0b64fb9b824e81c0cc8e3dfd2d82..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 167
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}Ea{HEjtq=#3k+XOi)Ub9
zi1T!D4Dsl^ddZOMfB}zlpk?&?`eSz%Og^AdZFE(OW%12^dy9tUJHmy9lNVSuCCGBj
zWVqY(&EXWw3$Z(FPHGO@7uZfPV%){Ly>SBP1>Fq(B|ZuE`Rs4}zerk~uV)au;e8{1
Tcif3fAQyPL`njxgN@xNA5N<f5

diff --git a/_tools/code_generators/libs/png++/test/basn2c08.png b/_tools/code_generators/libs/png++/test/basn2c08.png
deleted file mode 100644
index 21d2f91a868fc637fdae4fba6c87bfd09b158815..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 145
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0u%tWsIx;Y}EiimBEuMja
z!Nb$VF~p<u?bU;v3<f+*4y|t{{@q?AZ0(}`W#Nx=54E@OvRF58iTsdR@b*cqPlZDx
y6Terx{Gk?h5seQEN-UIDIyCMsC|`Vlv1#MaIJ@hUXD~1@FnGH9xvX<aXaWG>*)awH

diff --git a/_tools/code_generators/libs/png++/test/basn2c16.png b/_tools/code_generators/libs/png++/test/basn2c16.png
deleted file mode 100644
index 1bd4a4d0e2c2c6dd8a2e63a63b26f166b8ef5353..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 302
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2SkfJR9T^zg78t&m7SF)I
z@YK`AF(jh(>a>Gg%?1K4%O5z_pRU{fckQ=na%{|#+SJk}pQ(~)bA4iaZ9%_)6N8=p
zgIVuWii+zbY}Jk9&prAaRlc3+^|=y_f<?yDKfnD{5POj^;q#`(_!n<JF;$i<+i<|X
zWZ4r*4d>@EIn1Un-WV}`ec{8{xckMKmFWw3=YIB--r$ffub0q%PDUf4SB~|^@pt^P
z4BOJ5^L}wjf3J2ye(&r98ecRLzROB<pZncwX23jmZ)Ad8)#d{^Uo-;h*-S22uD{bD
zWL3SfL9S|JgI1NuiTRAVCFhK#KQx@1$MM6_pJmTN<NeQ^{>Awz>^sW9z`)??>gTe~
HDWM4fzyp6-

diff --git a/_tools/code_generators/libs/png++/test/basn3p01.png b/_tools/code_generators/libs/png++/test/basn3p01.png
deleted file mode 100644
index a21db5977462c4c0985a0ca1ac2d67ec572d3d17..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;IMrH;E2G1=owlgp=u%tWsIx;Y}EiimBEuMja
zfi1u%#P!{OC8f0gIZ~I@7#J8tJzX3_IA$h4U}s`8dBiNRK$v+6AH!~W`-2mXo@r(P
N8RhEdvd$@?2>_vB9j5>Q

diff --git a/_tools/code_generators/libs/png++/test/basn3p02.png b/_tools/code_generators/libs/png++/test/basn3p02.png
deleted file mode 100644
index 1d0ab6197cc8c4dd61e4440cbe98b2149eeafafb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 146
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;ICT0c(20oEV=?n}EEa{HEjtq=#3k+XOi)Ub9
zU@ms@3}IwstkElPVqjq43GfMVW%$qVpMl~3e+CAI|Ec!cyBHW4lssJ=LnNjq|B&C+
y#n>YG!QjKmgA%J3=+yA6xb**rMDrP2hP|Hkjk#K<elsvIFnGH9xvX<aXaWGOdMeZa

diff --git a/_tools/code_generators/libs/png++/test/basn3p04.png b/_tools/code_generators/libs/png++/test/basn3p04.png
deleted file mode 100644
index 6dc6eac83f3cf984a4d121e27a8e60454117e12c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 216
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I7G?$phQ^Te;|vT8Ea{HEjtq=#3k+XOi)Ub9
zU@ms@3}InmDgUu`F#`jGZh%jSs}jS1hX4ON82&5$XJDB5|9=|8U55YV{~7)>Ffja|
zc^Aak{eL$DgUf%0|1Os{c<yCjU~u<zaSYLznEc`e2d`~$+SOH`ijp6fzfU`tqTtLh
zRa?WOk3sAD(N-D8kau@?KjBzVD0xEA;i;D9MCFE4zTV323{!Vkn@ch=JUH^|B5!K{
R0R{#J22WQ%mvv4FO#myqP0RoQ

diff --git a/_tools/code_generators/libs/png++/test/basn3p08.png b/_tools/code_generators/libs/png++/test/basn3p08.png
deleted file mode 100644
index 0e07f483c0edad13e60e0d475c33a7ca5b8919ba..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1286
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zg78t&m7SF)I
z%n;xc;;Q7r@b&-O^8e+h|Nj@{Vz4S_P*VE;U+}*m1A~$h!~Zp*Y5&vyr=|U8{I4X$
zaOeO3GyiA0xcp}b4OL=bIDPuRiwi^O|IpK?8H}YE{=d2N_W%DU|4;wFbI0YsOIq50
zV+IBnC5E?e|EHxf{9oeo|NpADZ$aAr{r~^>|G)qL8IAuNhiWk}GXC%A_|LFv6(b{q
z3j;$(2gCm-r*}m&DE(JTGh+Dvf99%H|3euVR;^+<oy;KkU+~KRRpnL;|6N?}WHY2O
zFfjgS>~Lau^Z!ov9ftpRb}<+mGrVPZTg>qPf5%KO2EqUT%NZE{H#7d<wd-Fs!~cK(
z8BR0&pE*<M|NjmK29RV&$NxM3rHmOE7*-ko|IaX!VI~6u0|TQ`8pHox|6Tt7|G(-#
zLpcM(zkjP37`$dO{QsZ!UrC99VP^M#!O;Kz|ASorpCOciK~V7j|9}7g{#)|jCG9^*
z6@xLu|No)?%gY%UI{v%-XAop4|NoyME$#pRw+xI7|G&Nk>G<#RU+Mq<w{Han89M&|
zXJ9Cw{9lRT&K+ap|Nj{N?b`K!=Kuf3#tg})8FuYrSo1&h|NlGx{~K5T19>qt^#7{=
z|L@%S9~#QQz>s$54#ORWJI((Y%gg`&`}hC<|I`0NL(9t<{{3S(&2XB5;U6Ot10w^2
zkP^fH|4IxlF0=m||G%<|fgyC}%>OfIGVEg5r4`EX|MclC|I_}@Hva#A*D8ipP8|%v
zs~G;TTE)QdmSNYf|NjLU{(({y!_1j88D{=JGjkUMLkB|#!yShIla&}4?)>}zZ&ffu
zIYT)UBgjey2IK#4|1<1j_-}0d_W#@eM>_WWFK1ZAkj9Y4prmw%fdQ0Q{@?lEEy%!d
znt_oqlp&O%gMooTi4o-b({C9V{&#e^Ft|kTV)(zO{Qu1V3~3Cz{_kQaFE4%za)>d5
zF$2S{|K<M~To_jUU-kdrKL!RtB?hG<|2r7ozMc7h=Ks+D3`z|Dx1<R&2yzKB{1+6w
z^B?4mj{hBu42=Jc|L^R(oW#JuxY5(aF~p*m_aHk12a5p10rwR>9x2+^#+<3y5vl3#
zMY}F+_^zd8k}-pKb<U}Ki+kGUPK`9$^nKs%8Hc`$JPZG|Y5KA|s&Y>l*@~Oz?KxVx
zPB_!!q_fXcEo+MdtV+@^e|E6#@pd&U?y8uj?&1Bx{&M6w!AF*#KC>3TII{T93A;r$
zM^E?}|66DtziDp8R3jfX!?hL%1L_px9<z3R5dOW=z5JSh?}}48w=T^P-IA_)v8~tU
z{P~>40=$tPYnEv!Tb>G=Rxs=45jC$*7V^Q}cm5pRe#Gz8M^XKa)4oTZzkWnfYjXGh
z6-QLXK1&u(lBzkpTxYTAeZx5wle27&T4)taU|OP(x2b(;$pVq}7v?W<vA$;5n`q-L
zJIP?ekKUg(hj>0+?BL(wK1G$C`GuEQ)Pz}bM^xmV*}6^aGygG1+ofpTN2|{s$8M)Q
zm0cu#e8uVcDoey4TRO`;<6l)U(VAzWf^6rlHH$1(?l{wa=846|4*3(Fndgk!gtn-x
z`fS9#<LLf7X)I?uciJ3wG5ToUS<w^gl4fKuOZ?_p<({Q>h8=ZZ6dCtVo~VA)Y0hHq
ixhGGveKKgAb%(uC`kw&fl#QU0j=|H_&t;ucLK6T_9AWPO

diff --git a/_tools/code_generators/libs/png++/test/basn4a08.png b/_tools/code_generators/libs/png++/test/basn4a08.png
deleted file mode 100644
index 3bb0dd06b510cb42855ce91f1600540f4503ea34..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 126
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaqSkfJR9T^zg78t&m7SF)I
zVCw1O7~;{H{OA0E1B|V6GE5AW=IGp))L_=JZ`;SXIMG0gEyOUvM8N%UgBDv4+oKGL
dfWr(7_q7yi7wj*LU|?Wi@O1TaS?83{1OUFzBbERF

diff --git a/_tools/code_generators/libs/png++/test/basn4a16.png b/_tools/code_generators/libs/png++/test/basn4a16.png
deleted file mode 100644
index 6dbee9fbdb93f3535be23326a52fb4d3ac60711e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2206
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

diff --git a/_tools/code_generators/libs/png++/test/basn6a08.png b/_tools/code_generators/libs/png++/test/basn6a08.png
deleted file mode 100644
index 61062308548bc3a5255e3e8dbb7f97932f00eb1c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 184
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Ea{HEjtq=#3k+XOi)Ub9
z$oF({42fucd(Dum!GOo@p?XS&|HAL~p)CE1NA4bVt&k0R5uou$-dE#h7o$O3b={o*
zyNsJ<OIh8SPqD4|$s4hN-Op4`skR}eDde&A1}FZQJ9-S23LTUFKU%<OwxHU9eTt0$
l%S{H!05gYrM(Ga>K?+iHuJyl6XJBAp@O1TaS?83{1OUW@JXZh!

diff --git a/_tools/code_generators/libs/png++/test/basn6a16.png b/_tools/code_generators/libs/png++/test/basn6a16.png
deleted file mode 100644
index a9bf3cb461231de29905eaa02f3a8a66f9fc5477..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3435
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
aed>)jhj|lj$1yN4FnGH9xvX<aXaWHK)rYkJ

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.GA.16.out
deleted file mode 100644
index 87745834c5d94a6321adb31ab21ce7f8fb23abff..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 266
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh057d>4ZLn2y_PCv+Z*nq?N
z?3VxkpT03#V!BwhLAb{2YRLH=D!!=+3%r>gT;+71&iGSO-dy4G*ZGWwYOe3xA1rH(
z-DO;R<UnxJx<;=jay2I%T(ysFmyGcBT{HJW^^M!s%IkaPIc$mdVNRAhe_iLt+Qyzs
zvxOgLM?@}r%A)mQQ=`_Nlm<rj26Jh-Sk;Ft5mQ$?ak@PC9CO$I4l^gS+{GX!$sJd@
zSIXT8-TBIp@tLE_9p>HI;WIf69=w#Z2;KQ=5(D!*y9smF{YhHD{V(<V-+9aj*b}A-
Wr%Ye4yq$r8fx*+&&t;ucLK6UL-)$lQ

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.GA.8.out
deleted file mode 100644
index aa0dceeff7648fd389c85db957dbe1fdb1b0ae63..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 232
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaq)_b}*hIn)?opM{KL4m_%
z`m+E3Q>!+foM3HtCF5O@Q_BoPiI!}&<3}1AIvLk~|EfFT#)tW@KdBweyKC@cvMih3
zt|`+w{XS1>Jmwa!dg}Zpm#^{O!VxoX@>JMX&UXEz(ik1|G51Tqsmh0^3msMXd6Fy(
z(w|;iIfG^93%*9Z`f$k_vnhTh%?GA!-sJw0eXAlz(b*$s98GsAbUe-Dv$|;B6!Fe%
mO5T@LgNe)~U(P+MVDLx~PLUJ;c9?;Ifx*+&&t;ucLK6VXTw$mH

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.GRAY.16.out
deleted file mode 100644
index b8cfb9ce3d90eb72ebb6360a5d59ee02be09c550..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 228
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}t36#DLp(b7PPr}ApupiG
zzWo3H)T)g^Pt?vmY3{wIr!LY_XvFc>r%#xf$&Y7+{q60JkD4pjp6+H@TzW7;Et;pM
zMDxB{#M$jUCT2;Wx9(Z|YyDErHD`F(?xf3wO|<cR5VvxN)Zb)Y&YH>$fs@S55qvR`
zJ4?0H9MyI?FE~9vmTf)nQlYyF8=gkp)%cr`&(RcPY*@TOI#%FFkvaR+7YCwyLo3x+
foZeWr@BVS#(9MEzI|Owuf}HQ^>gTe~DWM4fQ4Cll

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.GRAY.8.out
deleted file mode 100644
index ce17a58e6d344ce19a24297e1fcd7461e643b788..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 196
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(2=Zci7-5R2Zqlf3yF3^-UT
zkNl386yG+bUU+xVbHjy9EytMm70hB@V95~0m{9BRX!1kv?~SRK9WLbGlQOx-(#Mx{
zU-jdygxe2eH5V~m&r9T}*Y-7zF_&cWZ#<E#P*|mvmw%WwpZ7z*(k_GAy`~m*YDZM{
xd5-SdA-C&Su7}N+3)kx}&$0N}I^Xn9ZJbi8V4UW)zG9H`JYD@<);T3K0RSrYNDBY}

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGB.16.out
deleted file mode 100644
index fe8ad377de9459fb9c03ae9f17b7eb3687798b2c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 285
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2o_M-AhD5a9opDmA#el;l
zG3(#|>Bj6f21`2y#12kh-FkP+%_EG=Y$Ys=j1NC=>5=uYx_E|Ry5APVf@yv}yb98v
z#81qhzIk1w6{Dwhm(&FHm1Y9pSAO_a#HG67`V=8Hoytd5>er@Sd-wXA|Hq9id(tlU
zHWs_HOTSi6|DngQlCveJ*mC*B9jWFvjTSFm7BptObm?f6d3oge_Bk=TuCIDJ%^~f&
zB_HRFrRTLi*t*v)+_=YL@>!OerP1e-XMb<B(hxea|HzKBjajkJ@2E^rwoTy+d1v+f
qk;yGrtB=zi^k1^q{`cG8B44xLc#02qUkd{R1B0ilpUXO@geCwWmwChh

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGB.8.out
deleted file mode 100644
index 7ed6eb8d806c6708b9c7ea2c1ba094a57d5ea125..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 254
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($09QAZ@4Dsl^I`u5y5e1Hx
z#Le&jpL%n!*D$1x?db(e)3ra_0yTA%uBfH`+j6OM#p#3#yLr@Nr42s+(yfudwDsW5
zd8KzuZY(q5U68x+#XLrp<x{xX>H@;%=B(W&Wq0S;VwRcCm)JH32}aJ({?h9h<Zxf~
z-?9r|TZJ7;ZZIrOW@EJyto45}^Y&D)fYr4cegc=Svo5Ya(-^#<{gaT&%YXOJ%x0IY
zT2b5dX@%$9gKKZKmozcSS~Tz8`hVu-{mp*Hj>2<K$ZcDHkzY~3cuK*ScaIqu7#KWV
L{an^LB{Ts5VBc>D

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGBA.16.out
deleted file mode 100644
index b6e63e5e9a0974946a9fd443673066c7d7700959..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 302
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=eD!p349RGGI^&?wVFeDC
zg_r;TfBNmh1!m*E4yM)n?o8@To6c+aslD!au7RPU;NDg8D$;^_G06>LdNTPA-a9Us
zI<URq6)D{>{<`M4YQmKl$vhv_a&9%O>UjNgZ_ez7(6;>a1Fx2BELF9z{`jWK_?2k0
zze7pBq4b4S3+B9!l~-N8@{p=R?ZK8$<`G{db^RTt7A!o|koC}M7o*0Z*79pEaSt!X
zPyE2LAT&mJT7$;Jy@g+QrBpemh<xeFo~Ekcy<@BTlCKSSwbm7?Gn6u`>|uWsSJ-RG
zsB!3WHAB}2jai%yg7fw%HYwS3?`Pc3DK2;RtF%&R4da5BhKpDqI94(+Ffe$!`njxg
HN@xNA2l#$C

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.RGBA.8.out
deleted file mode 100644
index 1d4b5dd0c4353a715a5e419fff6be9385c079504..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 268
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}mpxq^Ln2y_PQS?4YQW*#
zz4QP7(?47mg_me=xM=?PjONsbBB7xso-PF?hZw&|7*upOYTq$cQ0jL*Q_J>FDq^Ym
z<!GK7RWp+boi!};jV4^|`IyR<7A%}E)F&s$>;G)(RP_Vjy0afdEnH={ZuNupY)V}G
z%e&Smrp;a^eB!`mwoM<VG;&!m{8{zzjow1x6|3&Js2(`*|N1Q(NjVR#2R+M#Iu7iO
z<M?`D)hXZkoFQ^9FXSR(cb@cJz$EvsF?Q<gJkF2<huJ6HoqC_A<RGI1!<N7Em=AFJ
YPd8k2x-wggfq{X+)78&qol`;+03ye3yZ`_I

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.out b/_tools/code_generators/libs/png++/test/cmp/basn0g01.png.out
deleted file mode 100644
index 2ff2c105f2d6c9217cdbe7034d92ab929f52f622..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 148
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;IMg|53hG<6jND$@e;uyj)Q}@h9PG$oh){Cz%
zv25~E;I1;spCD?}bg-8z(Um>$<AW~!Rj)2BX~{XaQZ<<Ed9X>i&?CW3iu=9QY^9xw
wRaN7<Z*7{FpLNP0Q*W+jV&2PqgVYcE<ptV3^_Nbmhz42b>FVdQ&MBb@0P{^SHUIzs

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.GA.16.out
deleted file mode 100644
index 0bf7b82c894a41dd7c6bbe00e913a018fad1e8aa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 146
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh05k)AG&ArY-_r+ITRC~&wO
zf6;aKzs5FRbHy*s^Q;{oKJ4i8TxU3I$|>DQ`Ok|^GdkF=t$efJj*(%R^@gb8cL$0Y
zo;?(Qb8U`n1>b=W%=eieurnOsXK0XTSit;pz3AjwvtySsFfcH9y85}Sb4q9e09)BK
AtN;K2

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.GA.8.out
deleted file mode 100644
index 791b9cd12f2dd2eaa82b6a0405318bae2002d51b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 134
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaqd_7$pLp(a)PVweqP~dQx
ze^GSz|G=EdyPN71I`Y^=S|q=4axwJoJhdo4szT>K>(^_$&;Hf@b3WmE^#W@F+5H8t
mY=hWNHa}rJ$?PG=P_n{8bh6VL<v<1o1_n=8KbLh*2~7Z+l`YKx

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.GRAY.16.out
deleted file mode 100644
index 7685bbb4aafb870e90a07a916d5b0ade99cf437b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 129
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}9-c0aAs(H{DGf~lGA7E5
zm1=BU2M<Ue@K|?0@e}iV)-K)z#p~}6Ys&s<H(X${@@3M4y$+QU2P76hJ(y8>;DAAt
foPj~li%$#;QJ(}S-Ynb54>H@+)z4*}Q$iB}O0O%s

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.GRAY.8.out
deleted file mode 100644
index 94eede03fb47cb9b424e32d0934a733cc2610953..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 110
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1VQ%@Ji5R2aAl!Sx?4%b6H
z88vEbObtb>JwM*0FX@+#_;AyIeZi0Z<8@U#8yWlmE`FJKWGOqtz8!)S+1_-X1R3P%
L>gTe~DWM4f9i1cX

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGB.16.out
deleted file mode 100644
index 1a545ad2e7ed6b7f895f910f41e43c782985e9f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 166
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2ay?xfLn2z=PCv-W;K;!|
zIXQaE|DZi=ckas?PN>|az#}c#$=&Ky8=%hd@5X=0tS}b`-q=lbuk-&i3kDR&Y?^1g
zLA09DOv=_)=X6zCg7!D2U>?RdQ07kdD=rSc?-)%51148H__AEtbL*~&>Cpv8v>6x}
O7(8A5T-G@yGywox5;#!+

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGB.8.out
deleted file mode 100644
index 6f939ed37ac8dd615a83a338664da2e9c2b222b0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 142
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0gnGI-hIn+ooodL%V8Frb
z`%?Vx|KK+f+m%9^CirkQHg~X0d-CqQq{GSmYa%~0zBpm~`?>oSz8kVTU-Nr8x!idg
v{BD<{=ZWrL4NL*@9~fUT+d0%8V3(O|WMcYaW5|651_lOCS3j3^P6<r_+PO5y

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGBA.16.out
deleted file mode 100644
index 9f2cb535f0e5c33c94ac11b7cce0e8f9cc967527..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 200
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=^n1EEhGaCpongq=V8FvH
zdqn*A|K$f5vL`QeVn1^IVrX`xZ-}ajr<F-^MuyMTQd^NO_Veq%=w6I^z>vXg^80@F
zo?ZL@au+acVVw0;?!z~!@AeB0FkWEGcywXwGHJWG$L|<f`5Md|il<M1&X`-su!T|T
xJhRYRu-M~Dhecb#if#Bkwuo6U++sM(d8g6BJiltoDFy}x22WQ%mvv4FO#tHXN%{Z)

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.RGBA.8.out
deleted file mode 100644
index 322ba3d6578293770779b1e220f61a16eb041793..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 151
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}ah@)YArY-_r+IT7FyL@W
z_geSjZ-3JETr<T9@=taOi^%o8hzNQmEVyvqowD%Sx%RhY7^YmEb^Y&cbq0rGcDL+v
zvKD*?X8!!my4f_Hy^ndr2j=a}57-$F@G~^XGdy5DAZKCTeW_E0fq{X+)78&qol`;+
E02|;mEC2ui

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.out b/_tools/code_generators/libs/png++/test/cmp/basn0g02.png.out
deleted file mode 100644
index 14edf7741f3099255ea1adc5f474ced1ef7b6962..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 88
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;ICI$uu2APGnoeT^N@}4e^Are!Q6F6eO%J+OU
n=m<E(5Zu<!Xv`^}JYgq0!(Pw&#`f+2W{?(7S3j3^P6<r_DPI-n

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.GA.16.out
deleted file mode 100644
index cb21875b6b1ab47dae4230bbbbc535b65f48341e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 119
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh05cAhSdArY-_FKy&yP~c&9
zY>sI7+umv>%+ggn{oRs39)7RNE>)ekkvs6}-%hrD%oz+0%nVWt7Z@7Y7)%%n7-fA~
WYc}pq|G~h(z~JfX=d#Wzp$PzqiX=b)

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.GA.8.out
deleted file mode 100644
index 5bbae0ed66e7581019aefcfd16c3929678914181..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 113
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaqEIeHtLp(a)Uf9UVpdi3}
zAUNj0-}bB5eu?HxQj1l%u9L8;w0!1&=Ec8k*$gdy|8JEz^5CQcPZERl;T5bkEElt^
R7#J8BJYD@<);T3K0RT4QC5r$6

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.GRAY.16.out
deleted file mode 100644
index a7fe5778260b1d33c210f928c4afd26355bd1a45..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 111
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}W}YsNAs(G?FKpywP!M1~
zP+iFQJ^tD;&U;Q1mUxPvm^%6Dn}<g4*;oDktK2NvEYZPesK9oF!EE|3mZ~lP;?96f
N@^tlcS?83{1OT-nB((ql

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.GRAY.8.out
deleted file mode 100644
index 4a0fc341693f5c2d89f2aefb71e6a94bad082111..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 94
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1VRZkbk5R2aAl!Sx?fg{Z`
uB{&#Pi5fiGJl`)bL9+Dl3Td~y4U7yQQ&_58`FnqYG<v%FxvX<aXaWGHK^T(&

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGB.16.out
deleted file mode 100644
index 44fb62c149ca80473b0f5c490be05d4edd870e15..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 139
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2f;?RuLn2z=Uf#&dpultF
z0Lw;)Z}HPu7nte)JXJF7Q!IaQuy8^A^k@<0jK8=2cQ=}RWc<B-ei?J-Bj!5{XBlQm
rFOYO7W;S8Y$ZJSrILmv1XMt?tJDwZiX`X=$3=9mOu6{1-oD!M<WQQ(d

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGB.8.out
deleted file mode 100644
index 09fd1e157884d6e999307f1a9f148e2996fc000c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 121
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0IC#1^hIn))r#LV*H8q8#
z8yjAb;Hl-7$P|3HxX?i;L9(}*aeIOZAKSgAixv_U+-{E(9_UK+Ha9{9nHW^&@!Xgm
TVZD-pfq}u()z4*}Q$iB}JIf;F

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGBA.16.out
deleted file mode 100644
index 62beb7950f1993612e6f1161fb577ab6b2749ec4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 171
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=6nVNhhGaCpopO-3!GY&6
zQ&QtQdmW#Gzfl_BuFu!VDpvLU^z2BAk^ArZdi`}w+zXg5*nHu?wC^92P6MCAV>TU#
z*bc_-)d!efFqq^Wc%-#~!HS_*dczJb>`LT=0(oy0R@`~Sz`(%Z>FVdQ&MBb@0JTdz
Ag8%>k

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.RGBA.8.out
deleted file mode 100644
index 7d4a5306175c5745ab0fc28c458fc28854245e75..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 120
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}_MR?|ArY-_FKy&yP~c&9
zY>rU)&CjhX%+ggn{oRs39-E5SuDVot-bU`gtA9J$_AzHLI50CvF<fA1U}G?0C}2>@
X;=R=!yX7AP0|SGntDnm{r-UW|h|?rU

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.out b/_tools/code_generators/libs/png++/test/cmp/basn0g04.png.out
deleted file mode 100644
index 286cee0178fb2f0cb56f0c149739180a504db93b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 129
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I76t|ehRF|4XfiM`czC)vhG<MoPDl_C2?;VX
zD=XyW_4U@)Pgihen0ou7V;_T7`7@s)mVlkB!zL;>oVvSrwhUv)yP3vMI2IJWzo+WX
fF!lF4SxF`ad69RF@w%CgAhSJP{an^LB{Ts5Z>c7*

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.GA.16.out
deleted file mode 100644
index 7794d585b53528c767c454c113bd4db0be633cea..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 153
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh0537#&FArY-_uWjUQFc5IQ
zm_Nl(>Bzre#b*vOu~Rr7iRi8SmYp+qfxwM*vBy3zFmX6E*mW`8-g;X?&VeDCq2$r(
zg$%M!<T(@=^d0(Fwk31NJr>9{Jj%$Dz`kPhzP8VDe@xG^?APM`uFJr{z~JfX=d#Wz
Gp$P!@*fV?p

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.GA.8.out
deleted file mode 100644
index f8ed14d936402f0aa8cb09a9b933cd505ee60ce2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 136
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaq{5@S9Lp(Z@Q+}L3;lP;^
zxWME03dZKc49DvK|2Ga`ij)gjQhSAAmBaxJ_dpXPBLkz}Y3zp&FdTCiad}+d_MfMx
o-tBaAVgkcro|_jrJh>U}bhGR~Qa+WBfq{X+)78&qol`;+0P*fE;{X5v

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.GRAY.16.out
deleted file mode 100644
index 775bee7f4845d3ca4171bed0277381058e8e4070..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 136
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}{+=$5As(G?uN>rLP!w>!
zD8I4C_04{*jeV)<)dq)R+U9)rQ)H@~sdj<;1Ea3^4-V~G(Fyz+6{S};Esr_SYk$Md
mlH*I7|IP;K`VVu$1s|~&Z2MOz^!)cckQJV;elF{r5}E+ii7(m!

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.GRAY.8.out
deleted file mode 100644
index dc9dfd76049779727342ed6a2869a67029a42c35..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 122
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1VM^6{W5R2aAlmrz95snj^
zd01I{_&GFxe3!RRs5FofF*qeSAw6YLWeg7+Yft}&Q~&;-|Iz-e&`?6e;M9YusVOWB
X0Z;!G7Ov!00U7G)>gTe~DWM4f?1v;T

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGB.16.out
deleted file mode 100644
index 460d9e7a97ed27b7c4fa078e61b7e2f05eda0f46..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 195
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2x;$MRLn2z=PTR<Nz<`Iv
zUoBbU@!#b}^A1~R2DO@a#@Hx565HW?^fbePKS3))wjN=MW^r*~`N6lrZShLguo*sT
zyQ8;#X3Fa22*`G6h<bdSF-${b=P~uKlU<Zn9?xL>zTSmpMJI#lJLWZ)UuJbqkGYm$
zAn_^iSKse&C8jGb4N~73r=3jMc`W&^G`n>5ucg;R-Z(NaFfe$!`njxgN@xNANh3<r

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGB.8.out
deleted file mode 100644
index 9efa9c2ff2940756ec0573c8d0679fb4f7da1998..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 154
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0Bzn3yhIn+oy>gM0L6L_!
zAXvtE$!~wrIg4NXz2mFk=r@b;(>|doK?=RQy?<vjeP>o!$@*-L_e?LNMwV|)_jYfP
zZJ6m<{_VfM*8`gd!?qPa=Q_E(Xxo<eV-d?a=8UzTRr_r&-2JsQ$8mon0|Nttr>mdK
II;Vst0Amn4v;Y7A

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGBA.16.out
deleted file mode 100644
index 1e46f172793d5c815db9b1c51a36428439ed8236..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 204
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=O!jnf49RGGd&7|HhysJl
z#r01ll<xfxd1QGcCwbL|r|X*Li!|T;F^h+dVFxD*lg#w+g#l(7N(~H5910B#+(iZw
zcRoMfu}5p_E=NH|76AtaMzNF=DW7cK1-!@?uP<{@5&CGGPzjX^OIdu8?-%dBZw|{Z
z^UFB-%h|WGg0%Fpadf)OIxfrg_sydCvV-i)=l@S((kX0bU|?YIboFyt=akR{06xz}
AR{#J2

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g08.png.RGBA.8.out
deleted file mode 100644
index 5ae1c710852efcac319a4dda96cca960c6ac1805..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 162
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}nVv3=ArY-_uWjUIP!wSb
zFz8F{`R$)N=kSTr>9ZefSg_!k>HHcd0nZ&l$0fFXVqoHEP^maKQDsNa^En{y4yFV5
zcIP}*iSRmUFW|rs#&A7qnsLqcg!j49i?o+nG%&nj*mmtp^~-dAIX#8{DO^jk?=Ubh
OFnGH9xvX<aXaWET=R5QO

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.GA.16.out
deleted file mode 100644
index 1abcb325a9ffa48a7e69564e8ee2adf839974f57..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 172
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh05#hxyXArY-_uW0i%7>KxB
zylwSuzgt;DmXjQl^Q=09xkA5=yr{myVqiAmoxzQr;>ru+s(ko3%p@li95~f*S&jMA
z4(25de;S@N1l?hL&EUnZ!g}Qq-vov%b`|C=kNAGrFDP{oa?pR*u(07CBQN`&&U&T-
a#;4D2#?4uFh?RkXfx*+&&t;ucLK6Vwl0G;9

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.GA.8.out
deleted file mode 100644
index bed384dc1c76fa1ae8f9b0eaddbdde0f7d165054..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 138
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaq0zF+ELp(a4UQ*;^P~dUC
z$annj`4hYWzG5F1L>Qj_R62iEV(F1t5)v7_7de^=4}>&4WejIbWA|Z=kSh>PD1!(z
m7SH3e@c+Vd=QIBSwq;Bg(^jsN-pRngz~JfX=d#Wzp$PyMmo97o

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.GRAY.16.out
deleted file mode 100644
index 991c6e8f09d40a5a69d429f0d529fa8512e68045..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 151
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}ah@)YAs(GqFBx(jFyL_x
zw2XdVf9%eJ$p<v5jjn33EWX)qZ_%)PN4T(X@&c=-1X+%m40oHpIh<m7A$Et&NzGyV
z0^12jjJsI3H%{QZpqs(J#3#W%pZ$&h7fFlr^$cP+yl=$sjyrJ)WTU66pUXO@geCx+
C7c?{g

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.GRAY.8.out
deleted file mode 100644
index d10ee386f92634f49157090c888ae2661a0e905b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 122
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1VM^6{W5R2ZUr#A93DDWI{
znAi6={R~^kG^LG>^VGVc=U>y@CAgbMW4}y-+!E$3%$5giJlHeXiyA5?@Lk}0!tnnA
Y<7fX1>3e4`)&?2s>FVdQ&MBb@0D?*-!~g&Q

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGB.16.out
deleted file mode 100644
index a9340b1105a9b034cf3e339c7b54e7d60ae33148..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 188
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2nmt_{Ln2z=UbW_HFyLuU
zZ14R&f1-4W)2cIU&hkrqd^i5%{vo|cf`OrWf{?H<zfG>RQmI%gqeSnq0}VyH7?}RB
zPMA4U`?)mRg;{zH4C}Yf3zu-H-^IYRhUbO-dIpB`C5$X9o>j&LGyl2FDv)5>@W0ZR
qOJc5G14H@Z^VwDhw!iFV(6bZh*nPdthnazafx*+&&t;ucLK6UTT0jB-

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGB.8.out
deleted file mode 100644
index eae1e7b597c36fa501b8ef888e499fbc4abac46d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 163
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0WO=$chIn+oy==|b5WwLQ
zxS{xeb_#olii+4Vmix!KHq6}JV0qO*a4zf0RUI8C0;kwcU1MCVo1n;G&+sme`-U}x
z^T#CB24BVu*0%1a%%80qZq#f{N!ZD^fIlKmNBG8C<{h_Vb$EY7yl2q+^rhhPs}@aW
Q1_lNOPgg&ebxsLQ07F<gW&i*H

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGBA.16.out
deleted file mode 100644
index 99f20554e22a058e979a4f4ad59451d1e45735a3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 210
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=%=C0|49RGGd(E2fh=Ksi
z#ipL$^CwCRC@w5a%AEZ5KIhv$t99Z%YK#s68X^<!is?o<EDidZdoIOj!M?eE|2KbP
z&<tAg!{9*J4o02?hTH~0<zweQPG+~@GH+mXVeFHWuWZ=-kj<chaSOvaJG)H`;fHw>
z7z7(u_xH;jxLd$1ae$$i`A%(33d6iM=>rUtnQUrnma$i8-(h&Iry<z6t8wDZFANL}
N44$rjF6*2Ung9$zONjsg

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn0g16.png.RGBA.8.out
deleted file mode 100644
index d95f5210962092daacdc68873b50a3e9d6e1f733..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 178
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}m7Xq+ArY-_uUPXPP~d4!
zRG0p4pPYA~rRCPzRRZf-gQxP$`=7swVTTh(g5EI><K~%;p`ve=PMLR+QE8L-hd%2E
zHV)@1^%wM5H*jh2ckrz^DqFy}pv)n}LHiv8*Md?969@fw4gZ;|*j*TV9`QwRNyuI(
gI^gq1xIy~N*1}5;)*D|iFfcH9y85}Sb4q9e0P&DM$^ZZW

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.GA.16.out
deleted file mode 100644
index 27ae8dff48c71cf5ae3dcc09c3a9d652de637641..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 238
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh05TRmMILn2z=P7CB}P~d4(
ze<OGIf7srtmZnYW%FElX{kiVkydd-S?-bQt4vkD-k58TzB%7bGfal)91B)2A!d7MH
zHHrneZDn2D5X!jPtYoVLv&P}0wF)tEtDY)9yV2ZOq$lXGe%?El0Hfs%M_)}A+aflL
zJLCLDcIKyhwdb;@+_U<&q;I;o121RX0SC)6t_Y75CNZIz2Qn7OJpOw0w28_YyF)Y5
spEG_rx>@m$_zzY)#RqDe{_^rSToMuVujI;OU|?YIboFyt=akR{0Ae9tE&u=k

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.GA.8.out
deleted file mode 100644
index 624bf3a7d824bd47e5bf6a327f2ba6fc6f81e7cf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 219
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaq7J0fjhIn+oo#M!M$UuNu
z_T>K;|Lc#M`f~`GwqH`yWNDhN{BmJr<h<DBfs<8wu0^br%3oF(ALE<MT#yr5E%|VE
z<Sq_Bj&;-4W;JtszM#U{#IWW4&#s#$@2)aG_~y=EU~p#PzbwYR5^QI}&MaiO_3q%$
zDx3Gmq)taaPG{-9TYY;Y%dvb0yGINbkC_?PFBImGTXf+M|DE>f6aMo5;8f5(c)o(Y
YqfbQ8p+#~w0|Nttr>mdKI;Vst07VB^K>z>%

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.GRAY.16.out
deleted file mode 100644
index ba23dfe07dc9d521cd63c352eb8e1cef5c406ccf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 215
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}^E_P~Lp(a)PI2TrtRTSL
z`=tKK|NXC~st2sh;WJ^JbRppV!s&+;*XW#IC+KA$;g-E7q*wpq4&AhiHyA{suj(n+
z7<-F5avs#Vxyr1=fS<Q*)5Y57+HMzjgyuKglDBm@Xt3*7H1`Wv^Mq|lC9E4h@%5d5
zTqBk3Bj5X-Lv3fdrJ?1qd<Lr|c8$l(4D;7X7sM@E_)~tx?0)+P-y1eqFlvju<QHpK
RuCE2T*wfX|Wt~$(69A&=P_F<0

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.GRAY.8.out
deleted file mode 100644
index d678379313a7d1e34b1510a12d2e9ac5cbc1f331..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 193
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(2=4o?@y5R2ZslN`C26$Mzl
zU(`SOzyH)#b%_&Ye49BZX1up;>MF4`?Kt}^+lQU!g`^XMtfEfB{6_VoyUwh<VO_#v
zUlF8pG41x1n7mhtM_89I%{eeH@H}e_!*4(Jgsm&nn`i&6n|$7AuF10x?H4?*ACw9V
ua8NN>#PH>WZj9;6U;LRb{_#8Pj%Cnavx8qOsX_WP$ZejkelF{r5}E)b4M>Xs

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGB.16.out
deleted file mode 100644
index d309464adc1b91382749f0b85ba49ed8b04c975b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 173
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2N<3X0Ln2z=PTk0Rz=7k)
zJJoML{%%hazN8}AAW}C)cvAN4XJIQtCYel8^sH>@V$Kj{zo5mpAhasxJl_SS*kf=0
zTQ@9c&ai5DwwHO2$MlKp9u^JL3K(=BGDJP%zArnYYND6wx`zx=hZ(mV>u0`p?b<QZ
cU*(K%(|*P^iAi@dFfcH9y85}Sb4q9e0QD?Ef&c&j

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGB.8.out
deleted file mode 100644
index 77caf74462f946aad448d9d308d930f0d1080707..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 129
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0czC)vhIn+oy?T(7!GMR!
zq4mwgzuSw1tzERgEc|iqq4pMD7V8EsksmS(-ae`Isc>jy;`eHoKh(l5qVZutiG}h?
hhsNCn<%<t6Hf{VFXLo(_3<d@U22WQ%mvv4FO#s2`ESCTP

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGBA.16.out
deleted file mode 100644
index baf0adbbcb1748454e7660744d4c227bfc90d476..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 192
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=w0pWZhGaCpy>XiJfPnyW
zpyW3G@As!#dGh@XdmviDk@CTJPmIs8g|8=;?EjwSIf=QgM3jM(fkDP#$!Z3VYUZBz
zauW>FYqQ_K=Vt(c2IaPruY1{3&P3iXIw8O?i>tx8jp0HFgN)IV)%&Xtd=5`oKP}ZV
ofdizLfq_>xIQX-j8c)<+;XN|{B7gQTSqGBvboFyt=akR{09LO;KmY&$

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn2c08.png.RGBA.8.out
deleted file mode 100644
index 6a1dbe396145c7341e1d934c38f1e3908ea807a9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 141
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}A)YRdArY-_uWaN!;2^-{
z7`MxA-~V;%CYL6BZ)oQ2kQ6Ln5V~|qC0bit!NI|a&tao|u$)5!1LJ#sk>AEo8Cf_4
tKKx}^GWF)&sGSUq`x)j`>-!#H?tk_#a)yKlI|Bm)gQu&X%Q~loCIClDEpY$<

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.GA.16.out
deleted file mode 100644
index bb4b0750bb7e07f71d08d25f5e135fae92dfc3c7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 559
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh1m-#lF$Ln2z2h9As5Y{0Xm
z@l8T@Q{IK}MCRJk=Dv%Hn<g0dZgmmQU|8KBB;-0#=&4;(%cQrvl`E$h*WPEIqwR2m
z;hd=b59_sGlVZ42)^|<)oo~;5U?&61A3ND&eEQ3N&z2KEKOw1oqw;V5PKR!R-lgru
zO)&?en%bE;zg+2JiA|ory7Xxs%Xt=^tgT;m@4L0-nb8kTp%*KsUfRFqYLHVRJBQrC
zWX^epf5o;oRcSB$aAKA6#3_x-ZiTJYJ-baHA?SBR+pLDGylcN0ul77J@q&D#_C4`g
z{oEQ2wjDDyj0~RCuA8@Xe$x!Egjpri5>+DBGJV^^qMTLz&S7;R1J@jnw>x!yX~-2i
zhsZN>I;`iZ6yU9h*Xh6Tmh;AIzZ2<=p=(9555#PI&~kfnROT`Eb3eaZDlZUPEqDLs
zuIbmGI&NvoG`rBA*{j}re-%r(T4Ji{wF=$$m*-7TUsz;tbnBypmkcXxAGY$$=zAEq
zD)RDD+oge*6^zPv2YGK6zELITV)J*;&n+RwPRe3BUKg_LP9H3~%K6A!Q`I3q>uS*n
z&XyJbf_6FOntDHuoO6I*S@W;&>d3hlPP$lZnSQA|`0OmjUFNlWT0Z@k+B-q}LRNjl
zJC-uu`1$v?`#7+CkbS`C(EsMkH%YAm?P~4@FOKyy<Mun<jrs5U)!|zmV@Sh=fZwYx
SCNnTFFnGH9xvX<aXaWFp2mR9k

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.GA.8.out
deleted file mode 100644
index a151e85b970cecfba8acd22b15c5ff96f1259ebc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 231
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaq)_J-(hIn)?4T%<NP~cc1
z`M&<LUV!n1>1thv9{GQJsP|^^y671*T4ofbS2A7i<Gl7<urZ`b*dm>CiS6mx1{<1Y
zv(NlFm&Ig<{GHqemUOQJbLOkKh{>M~7TWOOi<}$(o(Es5H+Y!MSj?imA?wk-pKDo6
zc6c(q`!j**-5y27cQqf9KdD>$eo@!v?D*WqVzMJwcyWR%Bd=fn!n#!&6&Xs8{$4pE
lv!mOPJx?>`pp%pQ@8I87AH%YG7#J8BJYD@<);T3K0RSK>T}uD}

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.GRAY.16.out
deleted file mode 100644
index 980c57dbc48a01801069277779a5239fd9415487..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 499
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fPfyF6VSLp(ZLLoenYHQ)$Y
z^5#QAQ{IL3rzZZo%4_A;{=(^_NkymL1g{wT0-2o2*Y$;t-eD}aIDLM*TFxw!mtpgd
z%_wocbk_BIt*r;=k|k?ct}Xet?`MR6%tXgiUS21}9r#l|TGcTv(@Q&1<+F!xf^*!q
z@{|t7Gkf+i%2iHvICVmxltEd)yw@_0`B2}YCZ5Rp$lwFFe<&-Yh;o#PoT%#AV{^rr
zuP;R5n!Ssx!xESK4x;b8+Gg~8=X;P>ko!p^Ty$%bG<(2fRp0cg3r-LA-1PF@F)e0I
z>x}XcmBj5V-fb%q+82BY>zkS|A?-@bMo#0P7Yx?}-p%N~ez5G}ImWtAw#And|C%n8
z^Qw5^>?yAxZ+*4geBa)!4`j?O5B2^07^{}2d&hbsXZZ2!)(6ra&OI?#_}tW!A3sds
zy<)x5{6a*TtelIr`5N~7K6Ud==g*q(+3!hW!@f6MBHbLEdRHq`=e>NO7s|ZB-)frd
z%Yf-Ce{1_lfA?uGp1F>V?V*zFsT*_lhs^(>yXwTfY5miGO&4Ci`G@iZKlVZ^j+Dyn
z^Owbk&FtIVB3M@W+vc+JAIpWzS`(grUCsMu|E9yg{xKBoJ{`*4wNDllo1U(IF6*2U
FngC{j;k^I=

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.GRAY.8.out
deleted file mode 100644
index 8d62e832e500a1ca04395c682e66fd4c2039fe43..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 211
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(2=S)MMAAr`%@lf3y38*sRU
zcK*J<MSQ^}AF(oyqdbu}x^3S4w3x5&z;pV~k8f5Vw#Tt~%sMY~nSt|C-6bW*NzV?m
zdOJN;p5D^UJwv7C{{)MC_k_TZM=Mv%%6}gl$hlbhM1^_eA92p9`YKEQTep7s@3H0I
z?&DT|*VXzjM=$#R-(yA1(vy73ds`2EysTAYev`dJjeSoNpM;6LVI`x}y<gTxA8~&N
Oxz^Lw&t;ucLK6T|CsgJD

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGB.16.out
deleted file mode 100644
index 5df647ad3b4a7ef78b8fe7da00e5272979006381..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 286
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2o_e}ChD5Ypopz9`*+9T$
z`2)xL({<bbuKhMmj*WRzn_AlBGgT68u1{>QE$A0;VzASHFzbCvQE{Dwt-5jixksO)
z%C|GUK3Aequ*i7&=eM5<VlOf#eBRU;|KiOjrpl6K8xGi)EPEoU;ru)%huQSS8zZK#
zFMJpqcfUBZGJOH>+|QoU8ywQ*^%C08$!H|>%CY`9{*GUkVO#oh-Y+ic@6|5I@11=>
z<BLYZcUg(<bH97d44CKcjZBcM+I%4Ai$*{_o5=;s^>-SCtg1IQ$W?7@(5ezSF`qHF
r<eahehlX?WIDR<#v+P-Dy#JZgzc@dIeMcD>7#KWV{an^LB{Ts5?nQd)

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGB.8.out
deleted file mode 100644
index b097f70d4b24b38cdaf3842bd837407a28e2cf6a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 216
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0%=dJ04DsmPdeNM(!9c*}
zqT?ci@Ahk6`Z$~LNv8?2UX|WhugPkC&b;~m-X!-YlbzUuUO4PxD_X#pBUu08g`oPc
z7hf8qo||R7IKq}Yw{+1uKS_y~|Ja1@-b`3m?Wc0-EOXG^YYq#grCyZ0?Yy!p>%gMZ
z(h{YK%)9k0CwkB4tN2>T++>$=;9|A<qL*hGm;K9kxVD<D=5OsHfxmJcml{hLT($l3
VE?07!GB7YOc)I$ztaD0e0st9!R$Tx9

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGBA.16.out
deleted file mode 100644
index c4445dcd2cde938c82a7b6d84c25d284d04badd6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 300
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=eD-v449RGGI^CPE$w7d1
zJ}37Mv3b$!m+meMmF(@Pd3N1)v*s*5m9Ljdz6d#S1YP*7=lSc=<Kur*{zgCh{{JQa
z$4&c<&&_2sI5#nt^@AQ?`;VzVY`q^%GO3*3U|N_poiRtSeI3&cWxm)q4a$$c`1&7^
zEX<nBxJ00R8Iy-5pYNLnnMYq{&uf_T=!!2}fRl`wsDo#r#gY0aU;TIsJ!h?(s=i>E
zMd?(AD1mlY<_u36v7fRR7FnE6pW86)=*rD3363&qyay&(_-ta<>AGxh$~f)lN`BS{
zjxz7K4otSVvxV8F>vH^DhVzfEbTfWY;In6X;VH9^A@lG5*tgD%YZw?97(8A5T-G@y
GGywnzV0+a7

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn2c16.png.RGBA.8.out
deleted file mode 100644
index 80a60428ea1a4f989a15f89e458bff304b4023c6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 227
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}t2|vCLn2y_Uh?K^P!M3g
zFl)zw-|}K*JB%Ek8XxdE-r^FrexYrVn;*kG;qLlle_fg$i`y`>oM%|bA@H~0LDK#M
z((2(Kj(0M?vdCo4owK3QE-&VwggKAG;a)R^<Gf}D?b_i6{n~61ho_ot=+n+g;J?2n
zLH<6+f@b|Z2mbgQ4SIHwjdpf|2iU~(4)BTR91xQaN$4+UD)?}Wt)e28Ip$9=qr5)T
ej|UD1cm>S;bEi!z-^{?kz~JfX=d#Wzp$PyiOHjoC

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.GA.16.out
deleted file mode 100644
index 3eb65611887a0c5cf3de925153abaa79fff8ab63..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 134
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh05zMd|QArY;~HD^D}XOx^`
zyr9X?#BS@;nG$RgJys2doVvUhtj=A0%5KBrCVRjlim#`Fy=NNpVm=97b~jmrD83%6
lge@`>r3W%B4PG%Ya0+RrI*9I$Vqjok@O1TaS?83{1OP1%C3pY;

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.GA.8.out
deleted file mode 100644
index 0c97e0155b6cce97ee6f4f92c04db1ba20cac26b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 128
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaq+&x_!Lp(a)UfRfeK!Jzl
zKy%<`7UPt#wg#mX1{cTAd28}@_LeT?Ur>8GTR*(L_`gHtHU6^Q|9{rCewIJtDAU3G
fsKG*kFM%n|Ni#KJ$BI7;3=9mOu6{1-oD!M<dDbh9

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.GRAY.16.out
deleted file mode 100644
index 21100ff612c44d9391f362a7a570af5fabe2ad5e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 122
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}j-D=#As(H{HD?(Zp9buj
z>|!U(+?w!!H^HaL$m6SZkNt<Z1vWfxmk(xGB}n+P^YAQw+0dA1B5PpKvy7RIjg5_g
WW0_*EUzbZV$WTvLKbLh*2~7Z7mm#<S

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.GRAY.8.out
deleted file mode 100644
index c5c08cb8491ef6e468f47fb2efb83826670b1182..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 108
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1VV^0^y5R2aAnzIKE1e`l?
z;6i6}T9N{TM)-jlEyw@)S?x?Tkx|H#;AQWSc01e%0*nkw0gAb^EUY9!#(28=xvX<a
GXaWGZ8y=Sc

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGB.16.out
deleted file mode 100644
index 6c65197cb79205be6e62512abaf3271c80710f6e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 163
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2vOHZJLn2z=UUd{~P+(xa
z*dMr|X{O2KxoZ+wwG$XV?lIW>z9Xir;MsI_UDNpJzB_Y2Yo}jpe5XHm^GXQ^ZPV(g
z=Z7=?|GNM8W&8n#s6zGxwhMO{XEB<TH>5F~m0cj|P|ThI5!xbtZfVj)rXXWa1_lNO
MPgg&ebxsLQ0A^l0r~m)}

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGB.8.out
deleted file mode 100644
index e834bc528ed144668fbd6bf8b1ab6126a78a653d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 138
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($01bVtShIn))*L;ufWMuQX
z^#0Jz^fawt*EyYy#}ZydA6PNvoBX+jVLOz&`Tr^`s+H+^*37s)!9<>C59{Ke2@iB7
q&ayM-AIz|msNi<{eDFXt1B1SH(nJnUJ}(9a1_n=8KbLh*2~7as3oj7>

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGBA.16.out
deleted file mode 100644
index bc2028359b9ddb12c1b66768d49c622ce0b19d7a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 196
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=bbGouhGaCpopzD4!9avL
z*nOq8#pH8O{MJ3-S{I=H;`e0XNxyBm6t}3py%=!)LXU6zyOmS*=0<V<|Nhzgp^gV*
z3B#;wTeC&#8UDKMx67|*4q}jPSeD8@V=~hV29ukNt(z5CFED0oV&+PB<XXUdA%$J!
xT$6|c`+}2v8gp1R8~7Y1%LZ6*gLFM(U7(%S`M1?{7Xt$WgQu&X%Q~loCIHVyMWp}$

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p01.png.RGBA.8.out
deleted file mode 100644
index 354293b02954922794fc1c28398ab9a6e3d02fdb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 141
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}A)YRdArY;~HQ(c3+A|9o
zc<%2$lWJicJhO4yCm$YW9yi$oE2eytSLMB6b?)L*b{iHq*#j0)d_5KHJ=2&M^GWEk
syU7|v@%30GY>|;DJ&<8(@QQ&UdR11ZapALx3=9kmp00i_>zopr0Ov<5Z~y=R

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.GA.16.out
deleted file mode 100644
index d3524e2b4dcac872856cf7808a24403c3c608070..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 161
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh058J;eVArY;~B1u2aH}Hf=
z1ROLo`KM`8$0IdA<gX78Gmo3>fgQZMya7_nm%NhyARtl7@K}0_iNo6(Kac+n?FUvc
zOPsxMiDB*Ox{|-la!iZ)5@d4udn(v_wz0d(8r+hTC_Ru-op6Pb;eCk)Ysj5Fa~K#H
O7(8A5T-G@yGywqNIW;2y

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.GA.8.out
deleted file mode 100644
index 73155c403d755cc814d48937bfbab739f2b43292..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 154
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaq5<OiULp(Z@MSh(>00Ik`
z7D{Y$d>I^I)yBBrMwq!Z;Q?>L9X4KOr@Eu6_8;OF*znwQINWff!hO1Yg?@k>TiOK!
z1ylY5PuTBqPia4xQE3n*XV5c^orh=fQ$}WHW@d(y+8V5H>Sxq3FfcH9y85}Sb4q9e
E06wrX6aWAK

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.GRAY.16.out
deleted file mode 100644
index 4318e36d07d3eb46bca18ebb04ea49a40efa8fb6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 145
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}5uPrNAs(H{B1sJlq8fX7
zz2-MvGGuu&Q$mA<IiErKjDO3YF7LVrdmSnz_B0xG^p=<WZ2ZpjG%<lKb;2z6gip-x
vSx+5K*kU80%P-+}nwhQb;-`kj#zsbl?0yB_!cA4YAiF$W{an^LB{Ts5sunKD

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.GRAY.8.out
deleted file mode 100644
index 4c4de6132b3894235fd23e3efcb234a22005df32..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 129
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1V4^J1z5R2Yqk)(u#fW(A^
z8^;bDDClZzRAlQtf5d?yU|mC@v{?1TpI-_NOY3}7`uy@Cn=yoLyZD8n@Nh;|0thfL
X94=MhJt-YI7i6}ltDnm{r-UW|Scxmh

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGB.16.out
deleted file mode 100644
index 771d34f87cad1e3b123c88ae819be14bff307faf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 173
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2N<3X0Ln2z=PCv+XK!L}3
z^56gV<?XWR{LLpfPbj}4#HpL5<GIva^<?+g($etXZ{A$lf2+7%fZ60-THg0J|CZYC
zV>WbnZ1pDY|0)Rcov6jz^Os-tzjxrd5aA`~(8)OK3F9n@1)g#XV9cG2Tl-D)v+~xS
RW?*1o@O1TaS?83{1OO06M4SKs

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGB.8.out
deleted file mode 100644
index 38f0df85689dbb049dc5aa95e51f29ba03ad63c2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 149
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0#CW<mhIn+o4Rz#VFyOfK
z_y75~TP~(<NYG{4E84VRA`1^U+aX@*JZ^(y@*ZyWj8*R!{k!+!cl4C`jkdeK3-90W
zDsS{5*h%iM?ynEsSJ<yIy=tyv{OY*3;n#w=1g2^6Ci<(qmU=QUFfe$!`njxgN@xNA
DGVV8u

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGBA.16.out
deleted file mode 100644
index 1e9a2825c624cec89b040866710a336e774e55e1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 208
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=O!stg49RGGJHwFgfB^@y
z@BjblRxYy4!6l*}*Loh<RKVsmDQKmvrslTg_j_%>-Y#9ds$kdu%X9jVvt3}yNJ?FC
zN^thY%YWC;XOMQ_UeKBIkHKp3^560HjAjjD4#L{@v0YtEwcYXm1+V)z@GfAz(DJ1A
wz||WJQ4GD`8FT+Xgt7j@SZ{xWS!cNg6>ZdG<-ToYU|?YIboFyt=akR{0IL~NI{*Lx

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p02.png.RGBA.8.out
deleted file mode 100644
index 19ea90bd4b27f86dc85914c7f7452edf67d77c2f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 157
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}DV{ElArY-_r&;qIP~dTX
zd+-0bcehej2G~nhNGiJd^C?7om8?7w6svKyO!azO=--RyfA414aB10>f@Q0J6|yrF
z+>)*MJ@@|0<FX6~UIzd9@%}wX)Sxn<n&A@z!xKh^6U+>A+Mn2{|Efwp$iTqB;OXk;
Jvd$@?2>|Y+J`n%_

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.GA.16.out
deleted file mode 100644
index ab167c90b486e826e7548f8289d31c316a022113..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 179
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh05Rh}-6ArY-_r!Ew1a1daA
zKa;0|#WjGTi*3aWwiS(h_Y^c3Hwc_R`sB{8xxG7#j>^7|epGGz(W6FS{t@v)?>j9&
zbQ<2AwN9#J<W{KuJT)Tj0MpV-`ah~a_kx%w?$xMI6W_qF$y~nUDJw{2HAtny-kp0I
bSmpLVR;oAJq;Y|Pfq}u()z4*}Q$iB}D#%09

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.GA.8.out
deleted file mode 100644
index 82ffc2ae7d62ac1c09f528c77c41d3c091d4840e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 173
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaqN<3X0Lp(Z<PTnZ!5Fp_4
zeYR{-qmqcirG_rk1#Ge&EM5)?(gpw1zD=6G_ojHvOgRRIY5X&e2HG6;-g7i8C!n&9
zaq-*OYfSqaE`Br3Zj2A$`+MmAH{I;U_yZZg=WRWppRlF&MAQRugIo8~bw6-N+<xc3
bLTr!71EqR~n~tFj3=9mOu6{1-oD!M<b$CJ|

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.GRAY.16.out
deleted file mode 100644
index c86fb96edd82e749f0dd14d46927a3e0d326d045..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 168
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}`JOJ0As(H{Cdmy9{u;T=
zOSdlgqOI|l&+C8lrJR6SosCWgAJ{fbcwJtWwKL%XZ-V0W_qSI*ZE7@c_^3I>an=3)
zfYYqZ`3&4U>-M|piu3GY)OqqNwkJwYqJlZ%#Mj*dTVp`_173Y^{LXZgje+5#okC;l
S^S>WJPVjW~b6Mw<&;$T=&p*=u

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.GRAY.8.out
deleted file mode 100644
index f472ee82940a7ab03b1c81f5cfd9af5727ec4d2b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 146
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(2=NKY5X5R2Zu=L~rp90Xi0
zmOo*#WmOVzXk`>hX5h70u+V|&;K4Y@O~L-3;v+XC9_^9lkNfh%<lFy%#s4Oxbo{FB
xTNvZ`|AgU{74>S8i~dbX>G+jAY2j6WgPJMx6&f=pU0(>Y%+uA+Wt~$(695FHG(-RZ

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGB.16.out
deleted file mode 100644
index 585adcca4db7f6a604bc480474942e5a20189b7b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 213
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2=6Jd|hD5Z!ogT>BU?AXJ
zo#M5Ol{>;gL~H^>*o>)(3;ymi-T6Io+HTWarXwwnM1DD5ZJhgR`ivs(T81Q{`+GV!
zn@wrVndN<*u`c*G%P9vl!;cr(SC_`-Zu4KjlOint<NAfH*znnJg*BLOnoM6;z9(cm
zSR!^0d)Vt;zp^)ic?Y(<*tM&>mMK+XHd{r>UgnZXV77e8RPD>r^A>$!U|?YIboFyt
I=akR{0Cas*FaQ7m

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGB.8.out
deleted file mode 100644
index c987d28eaebe89c8722b3ba052a61d7c6a8c29e6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 192
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0w0pWZhIn*dofgR3V8G*I
z-83olAd{FtE2~O_Xj*E`H_jImWA^8rEcK1MoR`b?sNr64pYB)A)2y~kYAX7QeE*qN
zH(Aeq+3yjz;H))&=$)Bw`aSM9i=ST6Wj*<?;LGxfP1W^5zm+eYcRVf=Quti>F-UsG
t*E^Nn_KW2IxiY=8z4WBtBklq7?upu$JzMph85kHCJYD@<);T3K0RXGHOEv%i

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGBA.16.out
deleted file mode 100644
index 45d93893bc8fcf3f963f998bb0ec1610f0ac6e71..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 249
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=9Po5;49RGGJ98uNVFLkX
z|3<ZoI&q5HDJ#}Y5S$eHDD;U^?g4$ym-Aa^x33j;lxn)G#<2f&z3ma62YSoZ+vnIf
zFW=wvlk*_gtPf&$cJDpKVBQd2`@OIEUg9s7DU5jx+iyMTwPIg$?_-BSEfZMw?P-_2
z%wg{<TxQrYrZz|)Si7(KIJ>;1|NI7{1H2Eyqz_sqeC>0Ox4xvlfTw_Y$JK<Q6aSgA
o%WaZiD%$s2+c~V80M*Ss$<g3kQq`543=9kmp00i_>zopr0I^GCkN^Mx

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p04.png.RGBA.8.out
deleted file mode 100644
index fe9ac5656740ccf33d0f244cdfbab743a83a56ca..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 199
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}eV#6kArY-_ryt~PFyLX9
zz2a%*9iG72mc;7T5c)#vVfSDE&z^M?rCz7Fhi3Cx{3~t9eqP4+&fl`m(_WETX@}xY
zt_5q)#Z1?^+sI_F|EFBXxfs^VvKkE4bITR1ibZ|O7cks<b>{cs+Fi`739;`QU!3{+
xbK*M(Mv0ma`xPvTL;WENtSc1mHZuKSC_iX$PHFm`90mpk22WQ%mvv4FO#orBOr-z-

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.GA.16.out
deleted file mode 100644
index 0a751b6ee7171bf4ed85d778114b1de2ddd9aaed..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 386
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh1mo}Mm_ArY-dub(bEWFWwN
zVablxeZT+LpOEvre<8OzeW9^>z@A_qn@vl4&f54MfBAjJ^8JrF{660`46})7UhjO6
zIiksW!`EXE4$A(J`@{Q>DZcT0f_aF@4%Yn*_6OzlIPR%2?VG@{r}4fsqi!e5mIsnG
z%yqn<qc+`O694d*cgI=>r3A<F85|MoH5RZ66*#uP*AF|uv&8N}y0q~Grxi?MTlj4n
z7BgwKXifNaAXy>6=mPIT*0;=^4j~GW3Cf%JZAv*yoHO#pS36j@oMiGhFTBlEpP*eD
zcY4nIM-S5<*D45VSTkiWtWDCG$?~N@lhNG9CpVmt+bX~9PC=l8tXeFqN<k6prH?Y4
zOL*qQHs*08Co|5sZ4uwTU`}46!%r@~bq)NN)^3w_GLNu&Sg(B{?`UU(^HG%tzgiDm
px@;hLVbRY6w&s6j?Z5tDJULgjlS4L4pMima!PC{xWt~$(69Cspn=}9b

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.GA.8.out
deleted file mode 100644
index 4dc8f80df0ce44e2ef0cb51caf2d45c88ca44374..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 350
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaqRXtrCLp(Z{PCY5aq$uDl
zd9?QLfBP@%p6-)5^H^Y2x8zfys23CX&fZvB?xnf(N^RqYuEi6N&pOj0>|G=IFwi6J
z+$^0|?T5iX1o~RktygG7aC|?s`@=D}hX*+$3Yxk<WO2?t8p>(?Fr;GJjG$Sn8yde>
zdN&GBIMM0n5EtmcS$%s(&fb*_{CoI!+&jf=F375KiT$-l<LnNm_szY6BK%6io=f=W
zEC_m_dcot%K{KTe9~;R<3MLo5Eu`91KODYd)}z~JP;6@)-LPPe$`Y4fO3J)USvi6Q
z1;_4sIBt{Zx7eZa;kb}y!-DNh_18ojs|_L?Q<AP496G4>FV@LyP2R(NR-ZqsrDvXK
zTq;~2DzI&nut5MD<8N-q*QQpCs-^n1b$|2szW>4Se3NRYVxQkZ1_lNOPgg&ebxsLQ
E0N^K(EdT%j

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.GRAY.16.out
deleted file mode 100644
index 68de54d0a19aa4836b906a3899e00690354406e9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 346
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fPfik>cxAs(Ger+Q9uQWS7m
zy7cP2z5jWu*I)d+;pFj0f}-~ueVYOzBRxOnuI>^0qkZja#%rH#2cud4b$t*}S@+%N
zT{Hi|`47rJs8xh4;=3GMApeJ}uE^j=7L%FJ2f0514wtL69;)u(+?VOA*{xd8@b~T{
zCSd^&H(>#Dk$^*S?BTcKLmJrMF|RBCbU<xUgTt=}8-o&r10UE`2p#;ez-XewuLCTT
znWj4^Ut~Wo>X`Z{u%qdc%k%<)X{sL%yRl!33cs;)-dZySiJ47PJmO21I6Cxtv#7k=
z5v}<m>ak#FJCpr1FGd!1?GKyhalAQrlS@l@c^l`v+(%bcOCFYRhifN1TA!Dy#Obac
zw`xI7s<1%-8{>2KgO{>R7*$Q}=KYJdFa5(@^-H;9d$H6iP@s9b`njxgN@xNAXqS$h

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.GRAY.8.out
deleted file mode 100644
index d1e650e00d01749c4b65c2df2335e1550b5d38f9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 305
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(2=AD%9bAr`&8lW+SSHV|;>
zf6P1mh~KCG^(U&ey&4ZNZ+?|z8Q^`*>)VevDQ{F7SZZ3O+)o`)HpnWT{(&Xs0MCpD
z$sa6s4U87AC!{`*ywOnpfJ@@TBPQ-9?hng)MOcM5F!3K){pv!t;i((J-UW`=JjG`S
zt8q@+SNlrv+JwV0wh;<%PAznC;$u0#(2f7%lTgbm(;n#Rol3Mcs=T&lt!IAWr9W4d
zG;b|g5M;de!)Lh|gHwN3*{tz0C}CmUuvBrzD>ePF!%tlfmAObTFLdE=Z^<Znz&H8-
zwhb2+-E-Br6IW=mvtm-c;Inz`F1NSjZ7rUyXQ1%*PTk*oKiCXTDt8=9QQ!oHg{P~Z
J%Q~loCIEZAflmMc

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGB.16.out
deleted file mode 100644
index 1fd97fa7fc94b6e59e1afd9a8519fafe72411528..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 299
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2K6$!0hD5Z!ow1SckO7a2
zzJ}0-i~s+7%n;CN?L2$_WvFDpQ|Y^#Ctr6feR9pk%JGk|+sboYUp0@fzMmiQkLhEv
zL~Zl$&aX==-tK-l^;gqVP6fTM4CQPB>t&fQ*p)LJk<?#v_|eww)yo-=yw|-R&p5$4
zm~jQev3EYK3q&4dO;svirpZvJ-e>%+hB2;s_xBU-D;V0e7(Dl`JQzEBo5|t1w#AEr
zrsoC!)4pe~J$d@YrKzVDe&CBy(|>$|Auj*xud-#onCwLl^u7Hd$!bs}e!$^sr~5lA
zCuU#f1%7kxx+PaKyj?8n_Tb};*~i|QxP4!L`Ci3e?p;fzvYvEtY-M0zVDNPHb6Mw<
G&;$Ut(}YL>

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGB.8.out
deleted file mode 100644
index 86011898fc27646a0a92404e60f3c2418508ff3b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 245
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0?D2GQ4DslEJMADJlOm5x
zwDY2S5B}Q=`Mc@wmis=j#O178^TOrtN*<`{sFs=^Vf?vk=@*?Zo0a}(UaohlyK~9<
zNjCF=S5m8{buk?%oyf3e-NIii4TsK#Oj-9!Xu+(mxeQa(6G{$PmIc;HD_C0|FOuH5
z`rmDP384pl*JoRQefmw?PdD;iym;ZxTLP^qOY6lRJ-H>&s?Y3lx{K{UgTX&R-vjv!
zn<sx~*f804n@7WXZnmPH2Qp7BH=TYS)$^X;^}AHo@gC393=9kmp00i_>zopr0El2{
AwEzGB

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGBA.16.out
deleted file mode 100644
index fe00181f6dd31cdfc7849655f939b3e3b7afa4e2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 309
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp={PA>g49RGGJM$plAp;)g
z*bvSgx&Qx9EO07#`Hl6+#XTMiZe2g)`Tbh%%1crV35UyLn<PFn_3mKr{45joci)9i
z=0f}1F7g-d&!|<1d+hvysdnj8$%Y+AChst2cw~Bv;l|&&3<~EyEc?0hhg5&{X~rYx
z)tB#QJ8(x*(qZ9s2A+mxGvp4$Y8|{IIhE;x^+AinlGY9DKkm4`zJc+A2%EyxAC(Ne
zy>n*X)D78Xd|e}O0kikZ@|fT4DN9mc9EjT0xm8?4S+|+7fFVkM`PYe(mFymQ%mxh1
z1`RhEcL>j^WtVW!WVpte=GVN@gdz9v0S@;wAAij3J%95@v^`(;<BziJ0WulC)5ZK4
Q7#J8lUHx3vIVCg!0IOz%2><{9

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn3p08.png.RGBA.8.out
deleted file mode 100644
index 5cde524cf52d0c0253504be7b0ad64286136560f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 261
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}XFOdTLn2z=PT$CP$biS?
zyoS(*rT_m=Om*6@WX%(upB*clCcZgqYhCFZ6>Y|Bw&ynI-mh9cPuR@51b!|p`q%oW
z_`RLyK5K@kLf+6Ru8aZ4e3>qEWv{4XaA4%$zK}uSl>x)v3pEVWgcTUSvF|u0sZ-CZ
zpq<#8nxA(x!1jTt%7GjP<5w5<9G>xJ{t-Q{S2xo2>V)!@79>boCl@;3b2-4s=(19{
zwTQi8{(J`}l>;RWYg+!Z9hiEd{IDUz?Wou68B)tDW1bhrY)dwrx1ZtnI+=`rlb!e&
Q7#J8lUHx3vIVCg!00nDji~s-t

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.GA.16.out
deleted file mode 100644
index 982a7758ff9282e4357682b27db5081734357013..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 128
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh05?w&4=ArY-_FD>L^P~c&E
zD9rQjuYB0-vToNOr+LNLxZ`(hW0bgl?eV{_!CySfehE!ryV1ZPEg--yu@FH`V3XO_
XtWZ0(`b;SU0|SGntDnm{r-UW|&m|_e

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.GA.8.out
deleted file mode 100644
index b8ef393743d3a9ca47fde6f5c30c67e90d0a8ad5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 110
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaqOg&v3Lp(Z@|C~Q?fU$K>
zhKZrl9G&};8q7NOZTlD(CmKkxg%~E72)G|^&|>Rhdz2v&aF~JNzLrAmg8hXN3=9km
Mp00i_>zopr0QPPlCjbBd

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.GRAY.16.out
deleted file mode 100644
index 5a693596ffaba5d59e2f4add03afabb751ba96ab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 106
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}hMq2tAs(H{f6hBdCj9hU
z$!OoUk8yFLffQSaVS<T(`{4#HwjQ=e1su$7d|bQ>Bp4X<LuC8!3rijb8RF^c=d#Wz
Gp$PyBO&ZYv

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.GRAY.8.out
deleted file mode 100644
index 89b58c02f409b3e7518eea4aa57c77de35edcb71..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 100
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1VZBG}+5R2aAKj$0dH`J&v
zdBFZwv}aeN2W#`eiOmOjoexdiQqHW*&dAEb$k4r1wtt6W(m9ZJPgg&ebxsLQ0Gr|)
AqW}N^

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGB.16.out
deleted file mode 100644
index 36ef6d2c325a9b8e9b2691072092fe2cf74270d7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 147
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2qC8z3Ln2z=Uf#&dV90aW
zfz@N;-|4;9{{=KT9#;x?w1zFeJTv?LotUbl&9N&*_C9K4G_iLuZg|F?!FJ&pdqvU=
v2;a>9fbe0S1wR>Y{b(pHDtaMW|BbP8YxsVbn-WS43=9mOu6{1-oD!M<Moly=

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGB.8.out
deleted file mode 100644
index 32dec3a4df27e127d58ef95dce4be13820d4ab43..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 123
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0IC;7_hIn+oy||H=!GPn)
z0fnUr|5Fz>^G<r@+PL?C=(bf>r}A7f8qcs)Fx$*vuh_tl@X6*tGb_X7=ZtcHjLN4o
beUg%R6TZJV-Tp5F0|SGntDnm{r-UW|*n=tW

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGBA.16.out
deleted file mode 100644
index e65898c2d0772891c83d7a79968e9d587bc23e34..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 168
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=<a@d}hGaCpy<*69KtaIe
zB4@;r-|}T|uW6NbiLm{ff6PgslBc-TYOebC)0X!4{=c0&GjL_d4oPk8*I)Gc+!$;c
zq#g1b7)lt-8}2bMvNSMTG<{*?a9}TBe!(l?z+lm!?13bmz?_q*7FVmdXoVF60|SGn
LtDnm{r-UW|5^6O^

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn4a08.png.RGBA.8.out
deleted file mode 100644
index 8a903f6316ae1cb3b1e81d738223033d01c427b1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 131
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}UY;(FArY-_FD>L^FyL^#
zXl`)k|Nn^Gb?evg#O-WyG?-Ix{fx(@eP;6C*U#@+HK};fZpI2m6NUyhh8v7790+O$
bBfDf%TrK0CFSi*O7#KWV{an^LB{Ts521Y8B

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.GA.16.out
deleted file mode 100644
index 978a585d950eb8a278ce21913aa30bc07cdb61c1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2190
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
PFfe$!`njxgN@xNAXOjPi

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.GA.8.out
deleted file mode 100644
index 34c98079618c714c46ee1d48a9c815fbbff4951b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 972
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPcACwsa$hIn)?z3QDO;x5DX
zVg7AX{_W|<?kXqusD5&AN^IQJw<+x~s|8d0BaWB`?G0`^O-c(pJo=I&gIgOHrdQdV
zThz^0xzTfa)z8|m>sP(s=)CmbA%CI$AKJZEm5G$GIy)y<heb(;Z%cT6$}Kzf>EfmQ
z_jZ?Pdae@5vQFB&Sb)dKF>`Hc>T4_EE!S-S%=ON94V2Yh7<6Of3a;I@2kYiN6n5NR
zfBEp_jKq0a#tXNt4%o3`x1?3mv0KNcX2;x&`2J!0qE_zqjb#aHAx#P45BF%XC?_vn
z>2_Oqi<JD{a?Qvc1@AP@hNh`G<z^%(Xw13V+Bosj6?bjv>o+1&D@q>TnfbV4g_-eI
z{gAe{wwaH%aLrtBDI@n{R?UeI_vc!9x<BLdd8^%e%VPb+#s|K#J-#8+u5F8m-nFIR
z-4*HhqqF%!CHJX^eETFNEy)=d&b;&#Z?CS@d!0EyuV$BD>dgDYXD5`Uy|nhX*V0Qj
z4y>+va)8%cT1WTKGx7B`;`!D=vuA49=SHMXG+DN6nVOff{;Eq0*KhUk`}?N#{blpM
zvuAxi?Qv#axb0%rT2s4KAzJKS=U?C2E;Z-p$zuB>yYptwzPUa9&i>dHF*`T?^vN~9
zQ?TOOnq6<*_k1~Xxa552&P=)530F63U)i>8+stKWXZ^mlJ+C^*{(x}*<J#j|srPm^
zi*dCEJlqv8d(&<8$HnY&p*FtdG7{-aMYyd0F8W}<f5N}794BW^pI0%f;>kvR8O48(
zh3-dMe4U&wcig(-O=tVR&q9~u=Y4GU=HCDFW-<TeTJ|097p5=zUvcaP_sZfshi1m_
z`QW_g`3;HV?>gs2SN+a+@(Qc`a&E)(y053czg#Cgl~GImT~t+K>dU|Pm&*KJ^O~pn
z)z<fq%=2byvrc)ISDF2EYFKjS&z&=a<foo&y}!3m{cc%KUe=leH?G{-xb#}~Y@5RT
z=Qq-0pZ{3@s8hMvc<DkW=cO}uewUKY|Mfk~#7pt%l3u+zmY(L-`}=uCBqVN|2S-QU
zv^X0T8y(HPk^gk@@sApZ)$jg%qabn9*l_cfOSh~}i>%!`p~yGJ!mHgb_3gZkjj`4@
z&L-L$UXHkV!|HtPR>4Ky7Y`-QS^ay3j5L?6qk&1-t@DNZH<nK16_}(lYkAbv=3o9B
z#ct*wRQT>1ZW;SlH|921V9@hvGrz63Hra4nxMZpMrsZc?V&A%6cM4j1>dcuX?fsh`
qTdglYYin>y<aJDS^z}*h3^O$^{m3}`<_!Y_1B0ilpUXO@geCwFtK*~q

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.GRAY.16.out
deleted file mode 100644
index a78fb79903c56e5634cde5c3e197d31582513b28..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1812
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

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.GRAY.8.out
deleted file mode 100644
index 36f86cfe50f0d43f8f5c68f21dd7bbd716466fe9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 821
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(3LKb|g*Ar`%@6Mge;+eox%
zzFO)LIL(Kv@3n+SJrm1Wr5C$i{JQ;w$<~Q)s`3}6ole&r#d*0TT)B3vOYGQ^b9sqJ
z;Qd7!x7Jt{H&mvnIXc-HUwSpu@deBB38^~ec3%V+-e7-!=c3HF+|^qdX0BjiJ{fV&
z`u=goqxZ_+W$^7TTRlZYq2SVkDJeSobNCA#3@g&lCSK3FdSw&S%%nXB9U|gx=zU>+
z<(z&taeL_5G^OLB91SAt4FisOzy8hm^`6}KwRvW*Gj&%9p6C%cpzWif->=7`vE%W+
z(Ai(J%qE6LHk{bh!w|>xbm;~=rF{OixBkSOTmE&2j)liDiN!4Q8hTq^D!uZ#y=J<<
ze!P!M<Odm-dCx5ui-@&!3rkPDYr6V<_vfE3VXWshJ&t!b6`wnyEIWTjgU{#3w;$i$
zymF1(oItKa<>#iQT0Z*H=pR?PWO}^(y}k3UUe!o9QC4XFKG&8@@z|fZeH$~rKK=Li
zXlAUa<!KH^fm->d@@sSE_&m9Lll{xjcfX3_rq2mvny^eExu;gXCjIPc^Yrci7v7$|
zdgcQi<q69q9zW@5OO$AnNd8c^`$vb}+<r;Mp2A5go=pb7+8zFPURZs8`}_;Xp9?Oi
zbAC7L>Ga*Ri%W`s%LM&jRhcncKK}js^~YYk`sMdGHu&ecn~(S9hTWID7k^G-R_v<k
z&3}!jl%1PZyZYLF`TMbFSRIq<66NOH{68;h=VHq(S({__)Ye87JM6K$yURVl_h;!e
zyIF_*^6Tv8&OiHVQsR+QRcU{eEYeRmJzsDpaeMBy)6+j^#(v~k+!OxwUfc2qbGJ@w
zwtEw`HS%n{PfDmklVGB&YA^R`iJI%B3%;$*ySDkIOW5K$PE8HZ7N4?^4>zp1-<Y>O
z%XsdUMN&_DmT-D;o_3#Fs<<v$o@qsx>Ex)s(@mRsF0m|~U>G;$TKkU9jqGbfbzMWn
z<^(cXI7)D&?%6Q+eX_AjK-8(iP%)e3lAeW41ztw8if{iEU^i_LTeQlJ^}MF)grt@N
ju9i!4%41(VUhtn?(rJgvia<_PP=4@q^>bP0l+XkKmllb6

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGB.16.out
deleted file mode 100644
index 2a537f0b23ca95c8e80ccad371cce0d6bdea07a5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3767
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

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGB.8.out
deleted file mode 100644
index a239300b79763d97817c858de784bc544761313f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1480
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
AzW@LL

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGBA.16.out
deleted file mode 100644
index e83bfd45b19bbde661dce94ecdce1b9a850b3ade..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3964
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
SdNBh71B0ilpUXO@geCyt>tXQ#

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn4a16.png.RGBA.8.out
deleted file mode 100644
index 1481fb0c92eb4dc4ebfb5d22688755ec2daba4d9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1689
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
KT-G@yGywpFS`-%m

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.GA.16.out
deleted file mode 100644
index 0c13f717f29fe01dddb3f8777beca7463544c53a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 152
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=ZhR(-%HVh05@t!V@ArY-_FD>LfV8G*Y
zF+2N$&V;;4f3JI*c?4E^cr4|wnZ~0dX*0Lh#PibLlACAh--@`3Mt_t@Xkau+keVR(
z;Sz%lqfEp62PO?{F(wTD2N?daS5+NYz*xb=cA<g);a7oW6+#6M85kHCJYD@<);T3K
F0RY`vGm8KK

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.GA.8.out
deleted file mode 100644
index cf54821fadf8c6ba0342844b86d7fd1e5bbd0e86..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 124
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPaqoIPC}Lp(Z@O_CEHG&uR0
z%#slF6EkEx#nAm@1>@m^4f7YXZTKTqAkMQ#d`8<o#xu<Cni|a;9vM_vK49Ae60c=u
Xcq}ilEGQ}+WIltZtDnm{r-UW|G$1A%

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.GRAY.16.out
deleted file mode 100644
index c846ca3e2de24cd86aad7ff2be20142afd35c546..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 120
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J2DZkZ*$fN}_MR?|As(H{CdmtUHgp7L
zHT+n?$ehpcINB@rL-7@cY4ObOni{_|UA|!6P<bHM-~(HL44XdtorZAccTEfP85lk>
V2vh|HDFuRz^mO%eS?83{1OTm^B<=tJ

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.GRAY.8.out
deleted file mode 100644
index 3e7a231593aac14acd5c14efeedb460ad9444c3e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 107
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1VBTpB{5R2YqljH;Z5l1*Q
z1?2g-B<>3tJ$$YZ@F80u;-E`4>lx>Ry!x79AG*GU1*~CUc&aN<bvRM~G{_WBS3j3^
HP6<r_>Mb1v

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGB.16.out
deleted file mode 100644
index 9c12d3a6cb7e10d647e20671b695d80108701cc5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 188
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0phBY0A4;UC2nmt_{Ln2z=PCv-oV8C-E
zro<_S@wdOI8mIG<LaPw}gw<ZR*Rbgo3Es(T7i>EI*5Hvm<J)Z#ANqwo)a(*W&%WFy
zvEX{Hfy+}fiA7CsvbWq}b1rL`{X;UM>l(Y`H@5|9zl{}dFou0%{>C#Sl3n(%(2A4y
rI9Q&RNo-`kv*I%IBYy?k2h2tt(lseF`6?I~7#KWV{an^LB{Ts5GDt;f

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGB.8.out
deleted file mode 100644
index 31978afa8a91334521215178599f61142bdc4390..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 159
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0q<OkHhIn+oy?T)MfB}bd
zU~pvU_Ka`yyZj#YO}K2Y!o~c<vthv^_moKeS^C*)_*>X6{NZiz$`kp}e#|>huHpKY
zi$8oB%GgrP;>G?5$ovS4V4uNw`uu`*2afA~aNh8XL0G|LLrr&G$Uo_tLz7y>85kHC
NJYD@<);T3K0RU&pI`jYl

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGBA.16.out
deleted file mode 100644
index 1f354e39b3f0356603216a6cebcb89a2ef0ca11c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 204
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(2IW`Fwlgp=O!jnf49RGGJHwFchyf3a
z`U0iOqd)(zzjV-6dBN(S<sKUw?`FnG95T3}R3V-4JZXPqfBWzJ-{%|;vZr%RyXEM`
zbRg-9m{SpxkOJeG^aJ6!3d^E$6_!cuS?{o#_lOFJNMZZa5S**H<iKy&1#Iu<KWt+0
zXi%LNFiDbu^MP!_hdM!xjIGU6ST^t*ykmUh-%#CPuOuxsXYF*K8U_Xi22WQ%mvv4F
FO#s^yOy&Rp

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn6a08.png.RGBA.8.out
deleted file mode 100644
index ef0ebe4e27ef70bb1745b0e11feaabc66b8da75e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 168
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}`JOJ0ArY-_uNiVR81T3~
zR8Pt9U-;cVl%-$s$lar^6|zAu0yO@}`)b_mVl;@WuAB3JmvOUfDXTm4DYg|qc_S9E
z`<coq)i%U5g*=wt;KUzuM~|UWp<~kjM++Fu7F0X1Pq7hTxyc|IVCGQIDE)yUNI`1O
Uwf>js3=9kmp00i_>zopr0Q~MZ=l}o!

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.GA.16.out
deleted file mode 100644
index 5f9c114f3f741233c882ab9069a7dd6c0f1bd38e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2176
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
O7(8A5T-G@yGywp9yHA7w

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.GA.8.out
deleted file mode 100644
index 058d111de30d9035fa0a9a40d406ce52a44c7bb3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 740
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*LmhMUEk>KPcAR(rZQhIn+&oq9U&ih)Sm
z{u}eQU05}1;)Dq|Ha?Jy_*k_kdVZtV-GxdTC%2qcvFytg+n1K$y178~>Hayz{~o`b
z_o0I6pS{0w%$tLk7j~q(yEAC0voI~3BdXUd_~4NP^E&^w%?nrde-Tq=VVeH?ha>BM
z=@+xz*%HsP6jUl`vRP$#I4OSQJ$Z>+`>3Nr!PfrJRZm*l9^E-;!!d2DXtK96Q$F9v
zWLFQnZNKFD4;z2y7CYT_m}A$%it20KtKzfgx3PMDFcq?p(VG|}&orw+-*wBYzF_;w
zZ+E{@2)3|koNdcFsXE}{V*^Ex#_FC07c#Crd-`^vPzzIB<xBNNwZ~`OlXhGfkiny!
zz3S}-{)(7|1rdFRE7-o@beyhX!gesJaF2CGm=zOW_lGO}XE^6|`|iGQQB|n-&;|oz
z<(eDTEd8ku3o8=cye3)(r7&@M>ZGNlJh_~Bu<+5s`m|$Wk1fMe*q7X0d?tS3&y&jW
z-@f1BRTkUc__U#MqiS|;M)K{rpQmi+?@ViVGG$!9D0QaOPBj_rX`RaVD`fL_JXYQw
zv(b5R@WRr&LXG~b=81M26h5)`ejga~=|FYf&PPm}6<;o5-p|>cn)s+S{>DMU7Z=|A
zXnd*`C{c3Cuf2=qW<{9%%gEmruWwv9kT0`s;f2ma9+%F&GFG2g=-e`yZ4IZ)<TKL_
zc`%Eosl^r6%0|hpVT+q|qfb^!*jSmjCNb>@zvZ$ii7QLa_AI^0*57wp<l(f|R^ff;
zKLmKK_}COY>lR=8Nxqy*^FKKAz5W^B!tCRl#^cuYujl>k9otk(t}M`g_N>or+l}we
zb)2T3e|}%-%^O-F;=S`#kIL_bE82UlT9@2y?o+KzXK~~>T;}<@YU>BDMISuwxH)p{
z{qJ4-T5<YB&qx1-WLqBI`Eg%0rC|37hH3UXvpQyO3VjmJz`(%Z>FVdQ&MBb@01s7I
ACjbBd

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.GRAY.16.out
deleted file mode 100644
index b874c94c576756ad3a0fdcd722c54a068e64782b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1712
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

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.GRAY.8.out
deleted file mode 100644
index c3245fb1e5cf2f89c7825916eccc1eea00b6ef1d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 603
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(1#B~KT}5R2a0$&P)ht~@S>
z{r<n>znsO%$=NB(eeOWl>%#4p%*to^c$*l%mRw)2Wi5Mf(JSt-h*MXKt>!%3Qmc0K
zzvaAlY46g~7<d>|94C2bDSu?Ra897_f@I{xOUeq?-ggu|C(SetI;6~UB7x1J!KL%b
zyv<6gFSSmjvi;6))y+PqG3iqHgqTg$jGK184c)BF?)mcdX8s5F4(v)lJ8$CR-JW|d
z3-FfRdw+YHX?pn+iMw~N2)jrzOuBn|mSwuRa&3=gy7_!pDVMVI*Gtd8@+@1jyMM;!
zw0h-jj&G_W{ruc^?d%tfyn4TA)~-*VH>H-EySmQW`SZh#?YjHlr@WmXw|&mtB`z+r
z4&J%ru5<d+<9plt<G0OHQRVEiY0F4^_PF2QzP@6Ah&&IIz|zaMow51*Yks`Ed-N_(
z`+G4>N0FPGuT77?KkwfE4>fyx9zJ6;cJUIKy}79NXYO+Qx<BuJ{t|HSid5mx&Wex!
zzh+wR>GxktYC9y}<;i(&dcG!R`u_CbXU_GdvGPjC3buQceP2_%yY}TWhR+Mdzu6co
z?XC{XdmX)9W#&xYJ)3?PNj_BGR2}y2wo?}qL-9_rjgm65H#cY9&tIa!X<%%8-1pJa
zWS6qgciNu!{@a{kT(jsz$DGjLWm5GXGY+1qnXKU&`quhrGq=IPlxJULg_O0w|CYNe
zTH<r4%yZ&QD^`ZPJ9*gBnF^op`s~bNbYOy&nK#pd`gq2NcfS5&pWT!`?ej^Qeo(6M
MboFyt=akR{0RImd=l}o!

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGB.16.out
deleted file mode 100644
index 8c98fc294128e4b0d68cb363f31913e1aa08defd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3175
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
b{}X@Av4!zs@p2gk1_lOCS3j3^P6<r_`QA{l

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGB.8.out
deleted file mode 100644
index 2c36574281524b3c36a737649505b7d46e494b10..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1110
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c(%h$a=ashIn+Yo#vhQ+Dycu
zU**&!VaZCrrj$tw%LNu#dtSfnSpIq2hiwmDN=wc)X;$-CvtyEO(0x9=lL3X+s|yt+
zHdLJ3`zOX~mYRu~)W84lxqRm_`xqSJVCK2t%+Gm5PwCC^{g%7Tt;KaE4Ep-ciApJ)
zpZSbWa+yLS%c7kLvz{w{5zsABpOKKX^N*It+{57lhNmCzf5Ce}=c1)ru!+H~LUHl3
zf*G@lgukYC)l7Z3#iW4APkfS{TJVbmH+4Pz{e9-e$EWk$vi!v%qhI@L3wLW<;xi2{
z?~hGaIG-pt=`G;i#rEpZvV0>Sx9L`m{eo&?t7kgwp87$w#h!C7)2gYy_b<K-a(%pN
zYQfc**vJ6xTcUzH|0;huwvhk8!>-3q(|^UjV!8En@;P7S*QUxPdcIFt_Ab6&&>*C7
zJ!G|i)$Rq}FGcqTWq3HSE_YqjK5@2mx3wdeVc1OvR{0Nnd+y)(a{dKRr<3y=nNx2q
znAcvtbN})|PCJE0Mw5^Y?cxuf&g;*=(mMB7S>naLNgfi(u8&#bCbJ#C=y3cnvy@lB
z1!vy;4?H&Z8}=`YirjT(x3hI)*>B}CzV((nFXWiXJn%R8z-67V{o&g(H}NeOj?d66
zYSQSiFz9^7>}B!c#|im>Lt;1VK2^ELF8CaIP42DIth(~&>a*<k`uj+(dDzME<DbjU
zV=41v{9A4ci}+qhI`rHmpPS9=hv<xoU*~qI7_XR@q9E6)CT&pd^y#*K`rDY@bK?)+
z-_X84f!+ScIpGhVp9?pfykMzz{K*!{w})~A<hvYqrj^&-{c$+zp!Ay?pCUHJ1>0@9
zn<szs&5qjS(2Y4Kcrw$uC(T;2rlO?j;hVZoUu<nQCx1RQSMjt#`JTKRZ_A`h&V8+W
z_F-1Vl;ykm+ZK3kan%0NAU?0M;_<d+F9N&vE!g+ece1^`{e`77dKPW#bM1bW8__uL
zzJ8r#UqM58+>ZOju^TTvVfH*UVR3lK^*7d+rcbY~a-Duj@5I(p57|}fk};cKpO>m(
zRegV_=EK^gs~g^UxIda<xHS6GniV{e{Z;k*6MNP!^WJYEVs*ncvDrRglU+e*u!&Bq
zsi3P*m)&8VOs=er)1Kb4syR`$WbUGw@we9<m*24}LUyM}mAlo14uwRImq#vcdJ(An
z@nJz~|Hlazw2g$fy#C;SkTZ*=_L0+M?pO__4oT6y7DZeBZ(S93sXoX3R8RKxhi7Y-
zEaP~o%k5cTvc2exhO177vCoS2uMb(pn4bEUQeMS+cf*&Gn<YvgL{)f<Za(6Ow~*6!
zZeR4%$KK`lox=y$Y1dgT>C^X|<0roD`^~boj>;MS(|r|`-IF9WMLQhAoMbl1DNQh+
zou<jBE%0UkC3c~k_KB>UrvGtST4JkpxMgL=T;>1koVWONi~m@1Zn?)H|0({eHIc9X
a$p7hWSSz@HvOWU?1B0ilpUXO@geCwqJ_*nO

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGBA.16.out
deleted file mode 100644
index 51ea33fa528d3e15b66720658ca58b32c9ecd8c3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3419
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
Jmvv4FO#tNTgGK-V

diff --git a/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/basn6a16.png.RGBA.8.out
deleted file mode 100644
index a78219c29b7368cc6908948fc83104b5ec0b62eb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1214
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANMUt)4E9ArY;6r}-8=vJq&L
z|HEwdfJuGjNj2}h1CcYlpXuCbm~}Q~a){9EO$UwsJ&canB>nKp8@upQ%MhKt{`<35
zn(mBqG;}%m|MzWYM}ZA&JDAq?xw)@B%qk-&+~(eweRPM{5mt>-iNcTxRd?eBSdLs5
z<S?GNTroyBk2%JDLGKRTHAjU*E?6d{aX4Q~X4uy-fzPL9hvaAdk4y_Vf<qXd^7K3P
zUok%We6Fz2fwG6oRVVb_oF;xi@_~(i03&n5Cb17(-A5m^%-JH-DAByPhhsj2U-uNH
zH%E8+m^u{mZ;avd^I(W)m~osTWZDkFbBv!-4^`TAOgCOp!>Hiw>>`*g?a&!Df$zqB
ziH|%A-9dib8i%Am@+}a!H&dW*P1q5)2aD9r^&}eHI>eoRa1_L-&Jnwlvi>MLJI_9Q
zrprz;<$fVb*8U7voNTTi;&c#No^o;RkJMY8*X6FvV=MUDbJZiG<G6d0a>=zdeP*jJ
zJ(8Tj6weUf&v{&Qj+lMd<sDK71O?;{|I^(1Uh2uunWak^gKU>vT$ggd`~%;Ie{&|S
zQ;g?(T{n~OP}H1j7fllwR65STy%<`ips#<#EBZ}lbI}9g3g(Jx&mVOSI#Nf@&f<Q^
zc)-FS(c)PQ_Y)nbgK39<as0U&BY%ML!3NKtHM_*k54r6rePAWXAgnFJeXL=L)mP=5
z?MLdroVPttH~YiK)th5kze{>23f3AkwS5lVr#hwaC-<MmyM15t8?MKC36)EF2Wql?
z&%a=rFz@w==rZZzd(*7G-v71uuJ#emGhQFE3Zx67X2i5N{5HQ+c6j%-G;?Ox@Iv{y
z@7KS%B)fjkzIO?`+vDXooKXyT5Wd|&P36iHtyvfSw+mJtNiBI=*I;{FMNv&H@$|gE
zb=<R=ZEBsSI7XE8c?fVC?`*ov)sUu=9Q{YSqM3R2m*)5>XJ!O`>gG3-v5+x~Wwfig
z?|h^0#rFdF34cSrg%s~wcEEbi$4NDxT+U6B;_siOYUy9Ih@+yq`em7e<?CsO9eng<
z8#?723hO^lu>I;%zN7x2_4$|P{3$LPOj0p1QcNO(lKeHn4?q9=cjs-}srP;d9C!te
zaq=3PEH?bOd7E9MzTD&~rjmlJilTP9e0;igqKd47lB&j8Hv9I;?OvPVpj9ujh<U=<
z<9RRKJvuHcYZpxuY1w;XDyQ(eiYsR{I5i_CeJ}77;ukRT@%=G%9pi5{%~`)DhE5VJ
zOuE<|{=;O4ZG(5S|5fLh89|RPJ}R(T*A~2?(7GWqb8GVNUsdn8^p(B*bu5hC1;0E>
zD`I|d;Zfjs0mfI)cI$Ni+Pwcg=jNa-$-l)ao93h@b;r;6c60lquooA;>G|w5SiFb%
z?B}NpiZUO6g{^LT<F9kcxR~pZ^hc?FsrBp=_;#55+F#0_SYK_W`%Yn(l)%mTGu4A4
z((?Q><fIQ-7_!yaoo{Emx;<HzHE|V3-VyCTad#rJ)QtHg7=pRk4qa(sG<e*lwB^=D
zCf5mny!RY@yZV0Ffj4YBMeIaP<%~~R7c6CRD0g<9&=;x4m?CDc+sL_7MCgv(>W~BV
Zygm!B^~CiYV_;xl@O1TaS?83{1OUAO7H|Ln

diff --git a/_tools/code_generators/libs/png++/test/cmp/gray_16.out b/_tools/code_generators/libs/png++/test/cmp/gray_16.out
deleted file mode 100644
index e405f4e1253a266f180645472b751ce0e18a69c8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 36072
zcmeAS@N?(olHy`uVBq!ia0y~yU}OMc0R{#J2F*_Gp9~BN44y8IAr*7p%qg7{bM(`<
z{ru}1RVK7lY$`mTb~pA|ZhCrJdU|1b`KN<-@9OjI+)>@Y^61?=P8ElO_V4{A=jP3f
z-Ql5EP_O^e{#E6w-)Cm}mR?`E>Yee2^ZWm=|Ic~B{_X$!+n5!${r<oGrT%}m`j7Yd
zbN=tY^ksT|^Z(}iA~znc&-vy3{@?k(tZ#m#oBS=FzW;e_!`yAPm+K!I|F@q1YyW58
z|K9cX8$NH#yyZ53^IN-@^Yg!G+p*tx+HdlA;p+c8|LO0SyYcnA>EDyr{}vzrf2#CA
z-u|sG&Er2-ulu>bWcvR1=E56(=V$)9-Sf}7cKZK^`Fw9aX3ze2Y2yDo|MwTwC!CMJ
z{AIOU?(4$;cfRhg3tw=yKJS<C@jpAufB&vsZ2$8;`?p{IzW;lE?6+pR@q7BLx{crG
z|NH;5Zoyl9)4!L0*Y6h3`2N|qzUcn^`s4erZ~w{tuWrHL^QM3M=GCwJb$^%F0lT&4
ze|zd~fBR!u{`2`i`|A3H``2dwQ~GOP{xA5eL;JN^QCI)X`M16IpLOl2|L@H2yVcuY
z*tm7s{<YuUf7JbVz9xA=@abh?C2O<m|DLE{_dhz0|IPJHnbNQS{XDY&wK~^}Ik&Dj
zeNKPzuYT9-`_E_R)EcH#mnFEDC8d`ohL<Ime@pPcwL!f4^0cxnfAMcinPp!dsViB=
z9ebtqUCBoC(uLg2Q5TnPzfiJpLF>9rQv>gXm0T2?r6+Tx>)i~oS$cD>IhpU88aRFX
zqTL%?mvNVGUsS!Mbs6{hEsLtxwx-o|2TITI6E95^mj5Iuzj>zrk14Gsf#Um~XzzO_
zz3-{@zVxlTJ_L8^+J}hG*0q1my>H6jS@J(7&aZpQvcUGYia$f?Qt8;YzOgT_J6)bC
zsB5xQ*CbXme_`=fBdt45m#;Woo~j&`;g_@U<*A#xCgNL-Ud<Al6&;<it0<oP><qD4
z>ul~jeRkva4Of%6TV?jaPJYA0nI)m&r~l0VXc@mDA~x7(r(0~W?#lk0X@9;7JM6xs
zTgkLS_U<J0hFuqQcdnGKjm~IW`XMi6`-Lf6E|eU;=p>x8uygwbnMsFs7v^xE&D1qn
z9G$VNu#)>MudYe?vJZJSH=I7ZaG&kgHA#-n*k#z6_bTno{?xDM!^~&@-2X&-+KSnC
zCme_>^^QCtzjF4*#iet1<udaxI9IY<`|gW<TUT1w&XT-)b?!SJ--{{RBm%EE1<yUS
z`*HTd&Sf9o$;?<}x#?)f<fx2ueh=^NT+#aMmDsH4pdYrnZZ?w+?fzWCeO6m@kM;YA
zSzFg6+e*(^^lsWu`!wU?7wg_l`?>#_^t4sG&;CiWzP7S@ljzrt8<Re>{CL~XuytvB
zEmMYl)rF%z4RT)=v{y~o#u`~u!1dnIjY~hnaFJ2#?%)dkLz*@hla3^6{@EdNulaKD
zj~8OfdfpFhci6SwpLeLbpuQ{3r(5v+(ht{zD)^6GcDC*LdH*@{vP;gkIp_bKpRrud
z^ZdWmSBb{|zr8t7_0?n3!{e_G#+9A_D6ig7ws3hZQ$~K(E!zgGi<8ft6?U+F>6u@Z
zm;1`opKa-fFCz1%AF2+TcWADr&5T3RK^6Xdeh=N3f0!Kn<EG{wb@8PiRtNp?)%>$g
z<lf}=pdZ4Te_BQUwe_w~<IS%0w_Th5U(GIMSCyLW@8_%2F9p}^tWt{(ke)PsgW2Zq
z`Lh`In{jNhaqzD)HUFCAz$HKNP;pR&r_gIxU#{;<KX`E6x9|M==z~aI4VS%bYrkL8
z-W?{b@v{%*`#$`xwlU6T(xLfY5A~OR*!U$#KlxwjnslbUS580slYYT_Z_fFDtY3ok
zZ*Q(|tx~<2-wYx)SE(N5i(h?Reg?xUkNn>(0sK{$yYEHMs=8dSZB|nu^xC(KOW!Xk
zRCDh<m20yLxcpT%ItNwtdnWC*RBfF<`G}s+%e_Xe_h%fbDoz*LZ@;wMhpXPK^Xs$F
z?)536`In>j=ANq;+I#i(vp?x8x4*slU$^_p?Qd`5SKjlyRvo{0veOU$AhiSe9~o|S
zZ+XVKfN#l7+lF0}-TbRA&NjI;#m)ZGHnXJ@k8MzyH}g{Tj3Zh>Rk5BrGmc!!@OZ?&
z?2FvYBYqw)ZIwHF{gN_cW*xb-!>sfEq)XNQLe&~ezjvy9s}b^kTzYBBF|EzNj!#@>
zGW+xVMIgd=)}@?t^&2ncoc|Z<<-O@HyVqv1_i1*4x8BcV*#Cti!2H(?cZd8-SK9Y|
zxq0hKyQ1eBeo0Rq`_8FLdrDOd>xH^iHrl<Je}vCF>A2cPyE(ItobyZ)SL@xY^z@YU
zq#JKN-^6>a;qO=5xO~!$Zn5ZdTw$M<{fanO&;0(9d#%oM`>A%Xl8x`ieBC%Ruk+Up
zo$XPzZ>C*#J6$yUr_26(%o*vwZrLs4t(~pj@NH>+km8E<qRd~yq-tl+{$*s*xm11Q
z9hI<2M}7rOKC;JCC+Bc&rcV;P`o_hRZghIS=}|GW>iqijl1iDc&~D4lyHk(Ic_bz0
z?9e~2vT^#$)%(^YsIHDU8}Vz^`n7M29cy#X)$jUsYtDb0uUl2?ysuv0R&agA`rL<k
zA@R2^<-LBsV!dr+$bI`aj8|Ig&N?ory4-K~WvTq%7t8B-ZZ+{pXCD50!ZYcp=Nhff
zow+;Y6{WjXd#x2ZW#^S#E%bbIMWw8d_xs~RDrK%hyX`vfrXBvf!@ScrC%Ioe_UoL3
z-jT<O;+D?;6}j;K?JvRhr+@k{ng1*DTz%WGn?n14zDoE0Gi~Mkvsu|!&rjQvzex7&
zTFwuVmsoz-_A|V7{(o&V!`DUjnQ2U4!t2>C)q4lm|1v&wY}2-+U#sm~Js)dLnsK@9
zucxh`^gI7xA?qv0`utv5YIe@eJiK^vmEOjO|6=AI$=meMdQ#Op@1*`)1@-ebZ4`g8
z{@<~m>mQZ=TD@QNS8s5A^v(25zoPT1)&5?+Uv!)M%Kfy>PhaJ0|6a5CX3pea=GBw#
zn=)=uXRg~OWN{#jUBco0T49I3k{h;WG8~>1v5c30!GX5Zld7_EZ_K_TyzSu*Uj7FQ
zRLYj{%Fn-2Jd1aJ@?qv37mn%qzuI~3Sf1yrowwWAKP>3&^?X&?#wc|_XxgTp=@JVV
z!(Mz}#ujm|-iF!aK+(TolLOEGq-Qrg{Ue^$@OI(eL)%iWpG-5nX+FVjbN#LN9~iRE
zJ4CA%BzVal@L~9xtiUXB!htPI!Fjs^Tb2Uz$qgHAr1d<dLURwlTQY9~@9~_9dTF^6
ziDqR!LFZ4J)hy%f_me8^<c&`~%)IkrTmJU1cV?TsN|dg<bErGwOfk<Dht0p@6Bn?}
zx{$BKY<l6;@B5b>PXF{zUBDJ~uD%aMOk|7t7PYX^ta|NrhwOuOD;l?PesGs(Tr1vm
zrP(oBz2TQp$3LC~g=UiuMV?!iOgc)W<y_YBir=o%%DpkO#PvX%ve}#s51Vr<1l(_a
z;54fN2U9aBn6^L6&i(OhiT1lq4}a(W2$Zgy<S2C{Y4fl63kt%&);=`l-Q=`?yW|qb
zw7q@_6WAj8s&}zPo~vKS7I`gdjpMYfVObO2-rRq1)3x?rFU<WI-X2MKUAc+9Id^ws
zbMDdy2e(-rNQjoQm{Aw4*1%?1k$pMA?N-4yUh!KW60~w|Bp$Yt=DS^Rr;UHh!^62h
zBBbqZww>Sd@S>R1nFPI!4_D{>V3Xc=w(b4KhwQl(Jk6#vSanha{f#4<Baan@eNbvP
zz0p#)-Z-Lp?S=d~Y|)kfRd~0}`OgC)Y<Rbcy%vhxmNZo-dZS}>&el%;pC`V}oPXQy
z^X+Hn@0cxpaL+6G#59Eoj8Z2A*o<2gc`gdL<v8+O6xfur<A9U1#^#4o(%)_roM=ln
z+q1v5tzZSOeC}cOTOVGU)vRmP+mNZh`C)d>4>jq1hui+AE>yJ1dHB=joB*%k>i>~#
z86A;-^^IMe&%CM+c3yKKe@|P4>F$$KNtXX-f{33|Ns(DA+afrBXWicXzxLbG=9vuJ
zf>}0Q75d8Vb<jDtb-}`uh75mStY_p&6=;?`6u_Hm;k@01SM{=!^U3W6ow+Vkb6ZZg
zF`LP3eAv>;w<)uK!^6iqCR2iQe&}%bZ_Cu*_E0<bM-?~k(=h3Mw-0^4y`|qM#QE&2
z`bi6=vcmp<=D8ZM`B(ha0O4P~sVmx~!vE?yn_k)RN>eJ!@_(dM*3Hbuw!E#Ar$v@U
ztz9^6?!D_5)*2o)o5_%MdPA5$3-9KujBSyT2MpNqW->^f+OXF5@QDop>wKeg7AA&7
z-AKIrE5{<|a3QyB!ezO%g^4oB4~27YUC#Xx!yTJ&IWFz+^@ta4v%i&b^FEH_wm)IO
zo2>VF#(9ah%o&k?{f&JNpLtauc-ZIBcd5fBXV(1NZhD66uUf_o!^<JOo9Fz`;oZDu
zOTgitsnarNZ1uT*V$-Bq{F7?#{5iQllPROTZTlC7R|h_Xy=FK(+xEaTg$W0x4i&T+
z&Uwgly}&I}<G9md%}oV6eWSAz`+cQ1J)F@xE9aK8PRWwiw&Fdl{u?vTZ~Bli`&*Lq
zzDrKmZ*JKh@xqUr_qkp3^A84xP4BGvcU*Ga!?dsVs~@U;tnPd$l^6D3S}M<Jf4RiE
zhiYGDuXuRur~l=G(?8E&EXY1xH*u@S^z0o|SFYVE_L5yH&zIqL+NQSueEbXcN?y!T
zEocd4mq_$xcAue>V4y5<%AhTqMcE^rMOk8@U`q6g15U~sn+vx3zTOsaU|Da(ii=Ll
z7AFq1N57DW{_iPfcXyfXbtmx~Tc$_8$l~sO;KqGFZQ<_Rzx)PH$}^7F$fdTp&A9r1
ziQ9}#=ZkwTaBTh+f01Le+x;sXr#<_xb8L1~&ul6DciHsNrVBB>24Yc51h19d<;w0{
zca<Y~A^(<*S2;f%Phxm``ow&0CSNIwOQ)FJj8aasB(NxNH|bS5?etSjYvTovRXT6B
zOgMi{ep^8E(!2Ms)vsvn+jQZhnAFLYVs@vU7U%vIkAA`BUA=bg|1|Eqi3_VGS57>W
z##da~F;VKIlbB)KM5&WT(>{wRn_gP;Pu%2^O5J*+AmyJO{gS6WdQBGI-z}BtwEv`3
z=A8dLy<6TG`z!a>ie)d^c%G|wi_I4+t4o>P<rhz^4R!6k<0h=IQfNlrRmMweO$_dy
zV!E`QrIF`y!6ivgtCwEtlS`UE>4fAg<l<iXc*BJ2PKvATv!rjPENs>-X=&}-dcjl7
z>p2hi-0X$iYyNrXDzD#mfmdwTRj2Za>q^p$x_^6wTYa8!o=GlnSLEOR$?HnOHg%<Y
zgj>CiIN!ZQ`|g^5*Qe%%{lD#HzVLoEh!9yS{oFqI<+Rdg+IJ(;J1_N?hH2f6NS}M@
z=6N56)oa$|K4q-a<js*}HfUKWbxgy}U{Xo1QgdKW(iFFe*$b7pr$(<h=9I_Hs$<gC
z(JG}|vY?f3^M#9IRtKGyN4?PD?%j4lLvPy!QL$auoXjI%lr^Un@Gmy$vOM#Y(JfPi
zJMzflo=X~^-_!>!KJ%*H4@5*R?kT)?K_huixydPs^d>jS$39mzl4nOsrMmv()_K1F
zir1g8$k3?l@Q>v_3~xQ!cAm^jiC}j!T61;*&uWo5iK0zLYpfjFrn03)L^>Rs=H77W
z<c&*H9Q#_ide1C4<8)Q5DDp)9!VRrbI$QR)@@>2@QOxR`lX~<EP>`muiATH$;*L#S
z_*%E5yY-!lv*ej1v;RuYl4sHx`6n*qnYLkyVTwlc)HRPZjiwy5y7t*d@>GKI?21;N
z)D1KJD}p7}zDO_U5&q>H(#H9BndV`gvo}u}co#Psow*dVif6M)I7sO0sT)-*TqL8v
zGfml8n(QeVy_);f4Ka2nqqQamm%W&c*Xk$~d-E)qm}1n$V>H#%Y-WnqWFIabEyc?V
zytplOo@@;`vCAlHA*d9+@KDU^n3KBH%#)d7R<{>iytblSr(|dAx{b%~XDqyZB1Fx2
z#>u-WT9bF4d0b~S^`w&6XO5YtQY^JAVrHg&wO{PB*(g3_S>(+1nv?y1_H0bin!NtU
ztdA*Lli&Yr^gLx!Hgla%@^s5nCS{Q;e3GZ9f*5OkzAZL>ohqxDdygl}PT<m?q>j4J
zX#vwhxz7FC>E7^bVrnX5WSH0lSF6P*0@NZ?CN9;1rsk_sGh2^4IX1sq8(6sdJp;FF
z*22X)C3_~SN6#|WDOoo$GA3c6w{FQ)$Lo=^W}gfayFBBZY>H<0%`*?<HcdIoB=%{+
zCZDta4O2Hx3bk>ZwkhIx)jU=2$ea{mea+KTYU9GEMgGm#KE3AO_bEsF{~Sq4m0W!$
zVA{r0F{zTPb%LgSJbhaC`Tn+ZC5g7uQ?_p1v*)Yd{%WQbyf^oM$coq&%6`JHkI|$f
zN1NkJn##+bAhw$+6W8Vxom88hlNy||ut<6HO2ZSWUw^LMx1m*vCu@@ld-MwqZrSW7
zoztF~aL>(slHpxEapKLGyoK33yBc#+jaygV@!Ga&=1HA*O3^pZB-?%0ob9UfOmWlH
zvqfPBZ8@o%+qT*)&Ds2Gez=+ZCqezmYjf<L8s7`p=K1Gd;5N@cY8ui4!BcW`jDl|-
zQ~Nw6x2w3j*LRxs?Heh*o3^XW+;mRVET2vDH-8mFw5El+B}a&V(Hawj<*ouVl35!q
zQzk9VDcWZ8G$12|FO@Acves|)`SgGjmt1tG7<_W@E}qfaXZESWySQtj<($k5JEuKk
zYS!E67N7Yw*1fN2#u?uy8tpI7JSZ!ga#-eBQGZdy0jGEB?v^^KlKm4F%Y<#5b$se!
zt81T4EKemW&#rK^Jf^Z<tNr}XCiAJuK1P0)Y9D8>klB`8y-e$PM9Q?HGn3}z>uid!
zJf@_*Ms?@cl!w2c<$dG)5N*>?rn>#;?#7+ET#h?W_A`7{yza$Z>?<%Mo3(Lg%7m3V
zMJE-f$2<*6Na5Vc7AiHf`>;a)QckIm{LDveZ}T%jS=UW2JJZkTlZkinwuy^%&$_xj
zE86K8E^XN<eIiuv@{ZP+r$*g3?|7~&nt6Wj6Rqh-bsjnvO+C#O_Gv~@<l(4!3gJ8V
zoM*RL9b@-IIZh>fXU(bfJ<DSDJ<&ckX?4uL$JNKQudCEeo^qP+%?XpIvsf*ocfRqI
zex`k0=Y;C1rOdLC3u87bT-Unp!?0Rp&7CX4j;H=Q%PpAtnW0kGtohTnDh6$iGscDv
zayOq$SZ(v^q_Tgd$mH~Z)`_Omj^!@7f5PSv+fg0g$&T!ivkv##+`2R;;fdz7XFkg3
zO^y1wd3GJS6q9*j>l4j>O`oS~pQar5$y4^PJd-L{uHE0N^T_Vgl;cLzK5zIGaWw1L
zgylBZHa9Mxa@@`A<D5@ts%j!DYtD)9S!c6Z?tYk@{RiduTIVB@H+{O%Id|qdn_|1{
zzKzG2p3dBKJ}9|&>Z!%rcOzDp>Z&<(D<}R^?q?`f_@BPL`E&Fe)+e(S4C=iFJk%mn
zCNGZpbW%P3r%2?AJ14S~KNm_qF*Zv1>cX3~#e`j|a>YfN%&#)(PdukRD^WggR<z}6
z@x+PKC1;+$`b2yF$r%5ApJtxp$qTgGJoB*Z6Ycq|cbxZqiaZn~7htCyaZ>q-_WZ4D
z9v43SY$yL=%cq|c`YYzuJpHUW|6|vupOe;CIR9Ms=5ybtpPUu`KcD3s6G`rtJeAJ>
zEv4_1ufx6zI>(ltGCx-@dN<;-4dV}opSKg3GW@yfwh2WfykcNI*{bk$`GFKhRy7Wt
z4NV7_Hk}CLV|_AlJrkGa0tZ%+fV6<A6Zuvj&kne7qH48z-jjcB#T%{`w@f@PQQ360
zc-6#osmgT|Sz{6|sJg{DHge54p|WnN1FO$tH?EKaI(bVSSkENem9K1Y)p-^#vZCRs
zjYlI_#91l1V8+)s4+v|4s)jZuQBc(o$O?**RZRPyN#6@;)I8Y}%$Q`YwxU7yW~Zi>
z!L%7GnQm<mFAjCEzO^}kRqa!J+O$VnqB%Fy!Ww5X=x%Ec{jl4%;Z{(_Hzuy=^(?E*
zTh(}VOd=f;FU2|Ratq98I^a}vGT5$FBxr?`mrh7#%G!x}%G{h1l4i4JOytZy;^-!q
z_9SrGbBpXFC*9`dJ-O-Dx6Lgk<w>f@stKGit_!(l9tv3(u4p{t<XMqb6L#M5TgVl8
z;;zW52}^Yz*NJYL6l$}^>Ds0~Ly=Vz_$wwkiGC84|2&85=almmo~<<}!}lz6+V|A@
zSkMZmI;LZ*C%nDc*r}D0UY59u%lC!(X`LgLS}F41QYUh~JW{6<ys%PaHuJM>UI`0t
z@@V<k34LpqV+>Q>a6+W1>tC|wjuR}6u4)`QMurZ8tRkyAlDae&dANp1L?$me?J<9%
zqH=eK)Xj`1jLV)2DEDu0lgob6={7Ix$xOF-*(rkJ5+$6jT90hkE%0#lc_!5ra-<}0
zfrsmvG`{VtI)3Ur@DtrQL-mgL#IA^g%pxm0Ol_PdcHKDe+h(1T*+)hH)g5PR4t>^o
zRJ`v&s^~}4`yY07oq1Is?b`9SBHZ=O2|u48!QGprFNYkNw<U2}m(M->`yt6<($Dwb
z(K&oo>sHZ;5Z9AS6LRl869$z5N7Z<B%px5&o@DCs6^O`bI*=sHEHc@@kxTR5r4XN;
z6R)~i^?s3(G}(0T1e@~g9-U_i%KYY^GL-wxKcy)9n}5ntc8{K4Ab3>kS*+gTh@(D_
zw7Npin5<hIarDe1wXV=JHhGI9j_N$p>k2(%G_81kSLD$wxgf*W5$BV&o-vz!YU%pf
z(O>Cy6jY=wNZR*AJ1)@h{wLY|6*oj`?*|&*-pu@d<&3#ETTg1Gm48dv)pfIb@65GH
zw>I;C4)t-j+8A-PWTE!yP#^xVjZx27jdOp@6?U)=NUD=xa72bn*YG)`*O@qn&Xp|F
zW;g|Ou4JAv!(_ve6h>7w4jn_sgw9SzFCU(Oq@)I+E{!lw)hU6CguGT5T}oVX{6xdV
zMCD{RwH})bC!Bk2E}cm3wYhjAxYy?LiQ-<JhfGrq`aZ@i5>hjms2y@hWLZ(K*NlTc
zc>$coGfwMjB{FjFbXL_#)cn4pMRd)Rx~Uu5w%V)_GW%ec9CAp_?uqAAP(}+=1!c4q
zLi?Uc$Axm<|ID1fDy5s%<lLOk^Aq}>_!#asH1>I6e*DQ_ZXcz6M=bt}ez~J2{9yk^
z=^HZ4H#RdAom8IB#HG1thLD$LsHUjfHHnu-m(o*CoamTXsQlgh6J|68uL`>N(8(+G
zRCSEkO0St`rcPNk<z<ZbO0St`d#9|L^7D?@O0UQ>bEmAD^7M}PO0USX%u`lP`D){|
z((C4l{hFbg@}EVPYCSccw>V^J%~9_utERlK=nb0sNjN$5R9Vh>i>aH0t&JU*zB%^J
zCr~r@Mz^HaQrWjN7YA8gn8>QN)HpU`QP8f-&7xX&i!Q`0T_zNf^^M8vY+k}jOQEo=
zI6mFGlPXt~+@8m!XB_D;^CZ(LAF+V6rUOR8EYoHxZ0K?73h|L#s<n8I(Wwx(trPu}
z_qwt5t})+q@Pyi_5I0G7$;ufM-6bpMOjMVwoHa3BvU1+3irJqvgC*Y=8K!C_3r!DR
zX0)u(G*v5E?0WDrqi2Q2sanZ`+k=-GO)E4{)k+rqzOrZQn#YP$KibKEm~raIg#HSr
z)S5%fZ5A8td*B@xAbJ0T?)nuy@;@e;hqP6Ar@lGR*Ap(edxN%c=rOrBCqt%gG|!#6
z(&$@a{IgX(es7LDO}#iZPbXB;_ND6QWe2Z$EeJAeo>HV%@cQ<_Uvrl}C<^A(F>hV)
zDV~Svw68!!UekdhVU}sL6*kNfni}M1`BZE9DUbGva>~qZZJObhPmlEY1gtCKGuYcM
zQQ7j+_SgyG9-E^ljC*X_i>4aSDw=9Mk6Sa`Qh4W-qN&DHwKc;njdxBfnrb{<S~J{|
zduQlVokY#@RdYnwJc*mSx$U=RxTSQ(jH0QVI}Np-C!2j<a_VQ#`O2`THAk=SSy8m_
zadlj%r9ET*syS~fqo2Mxa&FJ+qO#<2wUu+s-W)ZVdb#i0nIKEq7b_~&zC@>-`f&Qi
zQLeC6HK*4tKIN;pqGq-~!`9`Gp4&E51t(rQz%`jIOeK^_+eaWGvFQMpFiTj#8X+x>
z#WA8GL5{6jD@-rtE}7328sI1^x=JBw3n=04WtXnB5MA{^<8t+!i}O;RWV+3BZPlvi
z{v2}9;@om4QJ)7%S|JBT^p-n`o_Ua^6>?B!T{!FK$OC6rB^YiGT*x)8SX^{fg6aPt
z*4Gi|n^!$xHv6<f>qkd@@Io%Tr<$Q3SmQs<(fZMrU+F3O=Rp6SWn4$fq(BWP>s1Nj
zWlwEGH?UV5MT)-hjb668srE+r=9eDo&sH|+m84G8dg16lZDo__nkki+4Ymrc=(4wA
z+#)`8tyq(mui}bLsXPlBLuTnL*ks8Tz&2HlV~vSp!ctM@DJ$oAX{`)VHFevyB1CoS
zj};-Rj*HitZ#wwJEO4b4pUExf-ftet{Y!(U&Pk~9H@s!MB1ARWvfV4xXqH##Cpqz;
zm0oJanp0P$ScR{e6nW-ZRH#wE^okJG?j5aOp__WFLr!{y74~aIo~{j9HR*e$$JCrh
z&T_%3vwyazhn#$F<GWPr=d9<UC(CQjpI-Gu{XuEyCfnrDlYVc`ScGnp-fiqSbxWfD
zvK5ocwp{1=wv>5u=*ha0w0&AH-O6>%`r|$?+o<I$yTB-uDaV#S;OA`hhO*_Wt_Br^
zuFg!D>dCx%lGnjdHSQHzd`we)r*<-~^5F?^U3qH7q9(7<Kwr_&RfjyMuKFM$W?<wq
zb=3+bx2dZ#Ol~pvd=pp|a`d5F^_Gir`A<%Utn9kHB1km9NGx>KBiVDoqVJ3BLRTdT
zi3cy$T2{Do)r^y&AuGFf#<)*i6>-9MRT8K7PT$Zq5Byez9F=+(D*F270p?Xn%KX7g
zwd~S*R{fZAz9J~J=480dYOQ@wSwlZE+kfg>C2;#=+o~HAw}%|ndvmHHbR&DUQDEpB
z-)P^Zw!aOWLrazj7l*it@5*Al`|@B?=*8J4(^hv)UE`(8vQi7=b)m4Y?a2*OgdMN0
z-6t7xcMfZY#Z@(qHF@WlrnqnIWL%{gsCjit@ItRuE0;xGwOA2mns@k5$m&^HuU3Sa
z3NG%Ie)}(E^{i$d>oX@7uLv_eE>*T@;__9qo{RH!FhJJ=m|HYwg?=`B9<VmcEqHB~
zT9M+_RcTt&gVtuPTM%{i%tNVFp=X)$0!+Ji&ddtkJm>bxFw@mLqpz-c93QfJ7Jo&+
z)tVFTHmkDi9^MaGJxjmB>uSwebDQN^`<}aoeir_)YSqnovK7Hs-<-L<D$Ts?d2HzA
zw!J2u+qNXHT6J?e-<c58-xni`UwWB~t(Z0M%O#;p5yy&V#!Cg3UShd%;}y$~y@n09
z0w;%XuJN?u4@iE+V0zYZ0bB6pIc!>UrG#0oO;{Y0<--%;ywPigp`inBXvpfesH~9Y
zZmF!0=6<QG0w!zbNnH(aW;R`=n0TY{%8EAUGc%NXzDZ<-9RAog*QYnjqF3tb2eI_P
z#Zt$L=Vi?}@bk)wHq98H-mDo1pRP(Y3lCf@^{jYqR>YCsD=XSk@2rvv+tg(pdN}G`
zAg^@A{NJI6)#MhrndUq*y!t_M{^ypgA6?5s4{xtI{(03y_qZV5B<r|fUh7Shk8R@K
z{i!eOMzd|Dzv-K^DpxPetDUh-%IcEm<`+KV&sMd)`*Ojl>f&tGRi3jLqF*zZdR8-<
z-cDiq^UJE?SMcm9tXIsgGfwf$EtYj)y`pxMVQWax(yXkNp}Ky`d#|jT){vN(73zIu
zgIiYU>3?mqK5Mg9J}t-!JssF4>%KP2a$?lgPgcu=R!5y%5Vp1Fu}oIz>5Qz<(<ypO
z!nXQ654vj9t-T^t_wx?7tvXMtvO-S><%Q{L@92%Xx~Xk<$myzgOT)J2JYl>FYSDIN
z{hVUB>M8fWC!SY7@t$8X?fuV2@euAkYofNLv&V(&S{sLLeRJ$xPq1$84R7HLZ)>&H
z(`sKXcv+HUpSE(^x{}K_RTn0=u2Su_yY(sASUcqQCV?q?B)>?jHIyBjSfX-f;+Lcj
z<(D2alvnaS@URkkmeA4m$RM(zIq=kh#3l#!%2US^lNi{SY8?hqrmK!NGPlcA6r5<h
zzrjkTNZ_C%JKrOVCksw)Xf8N$aABKlr!!yQK}B}`VkSOI3(0nwo~I=;MFnDfmKFV<
zpCkx9e>|Z%Ge(EqcqdQ0%$cWJmJtWGT0BYMG(UB)DDR*m`|6#}eAf!i`7D1l{C@Jl
zS?-7;`}_|pWNOasfBHas-!o0iAARXhAGp^&a<#nC7ycx{z3dUM<&CM^pCs^qOW7my
z<}8b4#(6uRiOqdJ)0@wgByN)_NuMY4WzlxAi|zY#rZzuav*8s(-x99{%9++T679wG
zj>~^wc-3P3(xJonWx$Hbj8Yw&cM7c#w3yuFkY21B;A){6sOcxnY_T$o*H6ac>5<-G
zzZ#3DM?5)}&$;q=%47+@IYpBWXsWZ%5Nv-iW%6NOYpLaPWZHxM;vTEaDJs(Pv#e}4
ze)=T#+(AwC#f7I%hUgv9RG<D}%4EwJMfJ}+rIydpc~)f^dCb@1X^QCflP9Cz9nn;O
zU%Y-!&Z9cZpEJ(d=%~;CIAc!D$;TE?pG41_Hd(&H&(C3xin{fORde2)(c7b`zWejG
zIa?C-_j*U)G7R+lwzPTKrOv-I6xCy2F0=fyK>hPmm0s7PO)X1reR_A$%W^W8<GE)+
z1)nMzvYGyDb8ooyDC_B6hwvcT16NO-Ubt?_+XV5Mrw*kyIf%1r9dX_0RWMWHfa}y%
zg@N79ela_q9P0MgV`^(HJn1SjJ!VJ75moWuk0*6EpXoSUaPsKH9Zw#q_8nCfSAQ_6
z+uYJs@7}YLn4&^4y`3{oR2CVwel9$Dlt*t`_sy6#Z@qO#RK>e@gy~HyV%FOkaZ<Nv
zW83YgNw(5EqV>!^>F@l}!Cr9k=yDq+@puC_y?xK5=S}H;U+Jb-_o#B`jlQ>)k$Pp1
zOn2Uxde>x{?TyLhPm=QQU7hy-rDxH_i7SgP&eWUbX}-(YU9ak5H1`YV_?h=*CTg$b
zdyut`C90Zn-F-vGEz<A8>Qv9nm116D{ccG)^W87k8SZ#SHq4&rb$o7#(h1*vTm|Y!
z8S=D3TW3pUJw4FtooBP->9Kz4?RTy`oHm;yZ)c{#F10&F#R_>l3yU@Kc3LuRza!Hd
zofr4C;!aVqP~J{U(d~D7p8MP>D(1`EDcKvHx2$;KoimSw?i3mKYd=X-3_pEVXx(95
zbL}0Td11w?@2q*ucc<tx<M$J1+wZ8G&;Hrc{^VJ)+|=3Ye{8=~bGqC{)!hEmnmZlh
zPtw@So`~+e*?RqHTKTb4zS7^4=G@ux*mmd5>3p+%)W0Rqx>J(6?9P`3%b#7EZ6bEU
z*Iw-O*`R5Wr3~f8iYK&Kch5F&UgNy*-TjA*L0$*vg}q{!cO_^8+vCI)Z4W)Um~2zD
z+5JDKP3Za<u*%3LWQ7p_)hjE+`2BW%crcND{zOHaPXYbza!D0W4mvaS+sHJy%ki1*
zI{fj(;lPR~4<l?oePB~RbvSxXle?VXab<pCi)cBu;(0bck85l`6$r{z&N!X=X+wkd
z#}kK5E1o1;nx8nVl{c+@>zy`txqHv`DsLRw`{{$>_s0|4&sRjq?R#Qa`J?Ul(}&e{
z4>Btoo<B*fj+@dx_r}cdr-|nGCbZjDddq!Vw)WWNd9^bX_+@A6@Xvj@=w-=b>&;IV
ziWfg!$X~m4!atpB)64~?oxU8yzCo*T-m{<$QI?{AwACBF9r?Z4{m`D3kqy5dES>-B
zvF}~pD;|4#g4pgoyX)}u@zMa-3e7;xxKk?^Tw2l?CsXw3s4jopo{Fcc9pQ0@DxRu#
zg~vUrczX2ozlx_%75028(uk|9oT&Wtsc7FpZT;hqr%s>z;nZmhzsb|TTL`b;Gp9K`
z&h7Ek=`&+A^ow_}tltyU7ak{8ymgPxW2?%@lf4yBpNj4Iw5iehNvd-B>C^6ixYzHg
zIo15>6Kns8)7N_@PJdtF6j%2|ecr_BZ!6;B%ATlJ-fWHiDz$qvd;Y1@aeH+2-%9A~
z|GwlX{PIYh&&28Le5OyA`*J0xYVxwmFH7aQpQajmKgsoDUh6br`%a-1Pu?cH&!5L|
z?LG64x@`ha7PnVD^1jP+Nuh@4Vn7Ygb&eWO#|8Z{PaiIJX#JrP#%U+a{9{Fssa@97
z1MS{<H5E?}yEDwMx$<ywKZo7Vj05WOoHd^wK6a@2RLEiX(?Vu`jZCY*UEFhvpAx4#
ze>{0CQuC?M%I@ckBR4-8PW}8OneF-G$^G3QP9Cq(o80djqbcvb)6Fidz}D_(#No4_
zHqN{K<T3NRDgFFA-R;aibACU4{JD*aeEi21H8rRAKYh$TZwkM_`BTUF_9)0(f8JE{
z=2-Tpjq153)AnYbw*It{|NSX<cePXQ>ANzt?!H(j`DKat=BJDKKR;P)&%CAMsLstv
zY*D2Q@x_WOu5y03ZR>C<ZNh*19QNNYSJ(ZBw&!0E_~T@VSY6SSZu_S;4l_@E3|^`A
z=gJB(d%v9@9v|%Hx3Bxj`EdIDsz0BE59{0a{&<>R|L4<Z9rnl5=O6xX`uxNnPoGQt
z`BZFE_p`En^3&(Beuwq#(;rQrU;N?p`HVlGjAwH{O_!T~;=GgIaee#nhtub0e>{CY
zD{spD(mP7_?~8Z;$$6yr=TotM-Oryr>`$J1%T1e~U*S`??|I?RpPkE}q+4%$Zu#?O
zr})$K@VJTdZ7X8yz9p^svt{w#V;l8lEBx!eB~SWOlDg{8mxQ)IU(|eyUwGS}O=sYa
zRI&Gt(6T=rsaRhu>u_?mW1U^v=0CR+m?Ekf8Lcwynf8|`xG-}XL^yL8_#Eam2ztp9
z#NV=_fx%Tv&0*y!j(~+;Od+e=82BtX9~@KGXZ*t@pt67=k%>z{bpb;m6W0Y72Sz@X
z1q}KH8jP$KO$|&kz7C9i$_p6Og#sFaIW!KqoC|2soU@kUvZX&`TA>{y>yC~FrWh{=
z#%TphnRK2@u|^#I%C%wIY>@=!?OF%i-YG0#kT33MsyS85^?{XN>%euJMGW^1-5Beh
zaIy;cYaifybK*1C25x=L1Ml{%V#uv<X1w)j8q=G@7OXEk)O{Bi$C}K{D@mWl^d)H-
z)0f0PrZ4IHm~>JuPSZ*7mRj+|E1}{0Plv{5K^wNUvS)m~dqCmt)n<jgS7tw`w-a3A
z)0Cp!u26YO-D6=FN6@06rYWnN6hc?2dFb-Z*->!XSz!Jj7EUb>Sx44RfshGoO<a={
zRw%FwgiL7W)H-omW}U+N!YNIAPHtooeZtbjRb=GIYT3J>X^v-r<2l6@3X3_lPQ>Vi
zOkj;!q|m)H#&KHV)TT90qF5sj^RkFONo(RNl6GYM*|A&XiSWD73FmjlJMMd=$og}d
zyXX`4e`^&!ENRL)Z_Kqx*!neVS*m$l*aX{3U&n9Hd|5Nk-{!j1_>pUqys*d;?a87`
z*lkVc-dmC>R{L`KPM(AXVkZ6!(=<<Tg=wA0x~4HBiu2EUzlN}SB{i3NUWFqHylO`R
zc$JTE^r{@uNEJ}>zS(jjR8EmA#G@l=s=%T(mK-LT2^`b!w0t<_-qFz1!lCJ6tJvBh
z7}VkB#I@00vDKnuf|HDwhhm??5&?JNppNa9af-)^Cpq~%2x*;hMv}|0ce7}c+H=h#
zGUwEn2#5;?b$D}X9uaL3d6ebERVb_28gbs2>m%cKtt0Js77EPX8LepdIG*dHD!;}N
zbDK2+_dm~Y`g7zl*G5@?%_Ds_s|9v{XmWaUPOhre?9I~ancmjDsq){R%C^2ZvYYE-
zYbV#mxtd%TyI*o$Y>(u+IDaRXVFxSM#*U+0rpp^Q&E@#Tt$sk>LO5bs(W@09qNP_>
zOtYF(6xi+__v(YTgRJ6J!DW7>E-Qm&3txq}3zx2X?C>h&xZ;(SeTP>D%en_Hx9VH!
zS31XG?kkI#R#yw9N>@Ghc@=Wp^2*A-i&s|m{ft>*C05w^D&o}BRmrU3EBmg-thTyV
z*!-$u{_N1>YI(u3^2N(v{g_f6a$Nk*a;tsM9It+q?O)L+FS*$2i14ap_IY8l)}QCR
zy3s2hdVJoVMONRQm0rC#Z{w=P%(A9^e_yQm{=&=LcM-d->C}5mGTCZhF2Bi>u;7{D
zeAcKFi`Hg7Fq_SAYo391minPLi()x9@BXIXBmLHO#<nc?8MRyV6RlPWCt9uMPTaN9
zI<ab%c;cli?FN6Z%r{^*?J#gQnPPC*w8`M5l<N$iR6#ZOoh>KB856rgd}ahq6<p>t
zwPj@(Z=y_*&@o;9#F|gSYAXa14{-@At})<k5mj@HNaRykW56yPHsdgd_L+$-qR%7_
zaTVJnwpw;>I5fvABJrHU8iRD<uo<64(&V0NpK;O)nxPuA%HZ@)r^K+rt%ue;wQ9Y2
zpqFd&#AuOc%6Z{4{C9XK+C7hJ{n_<f^jWlA&<y#Cki-Y~xi;JSYn}14S!}TT)1E_b
z4tjHK7GJOBV|_1RMs1~cqLrav;;s+#4wa-&I`k!J)uAtmZHK<3Z#%@3H1Cj3!oov3
zX`P33l6M|jlQQ+tn#8q-)}%KdsyX1+`g20RNSg6{jWg*r>kQ&QO+8d|csti;TYHT^
z%c~etgZ#G@tx)&>c_ny-(ksnC&975dH&v|)@wMGr6wvRT_v+&*cUwl*mCOASU#$$c
zHGCE7ul#jYdi|@=^Nv?m&vOnvFD<jM>fWP_tHyngL(W&vSy81{*!61Wsh6wL+0s|e
zyE$idm0R%oD!m19Ut@gszS`MSb+uUa>#FBcuR_m%y|Q}V>=og*+k@6uy$i6NU%36%
z&q?(w=jB&8e62Zuc-3=txnSGdA9uXEIdOT&c|DueRb|gvuU>AO9_k+*7i|0c!?IT|
zPuyO$-1u>*zq#6qdGmb2Y%^!M#sA7wW0qK9$&)tk+2)2;-OCQuiYMZ@w!LRNRi;yO
zI-eyo+J@=MWRAU4-CFj&a&KXj@@P3I<<ycW<<~ONOZ`)EKf_dkg+5PRR)mNOW`%gO
zERS*daKf8qKa&f`%07;-T>`3$I0}`zE-c~DFI=Fs=agbsfrOx|#iR};8D|&4KJ`T$
z>VknS!JQh1Bwa)v<|uU)%u~{NP~#eL#<gohkGE)|YPiNBsdZs3Ut^YY$QLYDsyU(C
zwPEIM(T9FYT?PG0HD_zPKFIQG9qPAP#F5ma^yYwY*9K#M?L&Ds%Q>n)EmC@OR=exM
zyz8P1n~z=U{QHG3_Qk65mwx=dOT_n@w%YjwxBNR3(&Bg~u%+@$cuT8JP>ZTg=o9@}
z46l5qtb675<$47}ugWQnQ~_1*n=U6q<pQ}vJW8^8CWLVIJen|BBd@aK(d79Wj;$R+
zVYY#bx-L0{1PXO+vJZ5%>{zi##w#SSPhpjYyKv}~#~oUyI$cDcinz`^_p-~Vd$UNY
z-gB)}8H>7#7z15*&RDT1#w{dpUC5Nun8h0Ji}x<dd8Fq0b4Il2)8KajQ}lO42fkBX
zrSV<+6u-?9jSnjp<(%IynyNl8WJ+wMTi~|`m996tr;99|8<#5o?W%N1%9=$b&tzR+
z9^2h@X>w=Rq+=qkFOQeFO0J0HN$YrK)c^CF&VeP3fngh?0<UfIyZHYW%LTh5FBbG2
zsZ-?cxERmeVd&A^X&7?2V=E8SRPUY|QGvxCM~`TPN*Zc~c%C`Ml(gfCT3fhX5{rn6
z+uTD(IyAg`W+a(txd|H{wU{s?Nyf>?kWYP?gu7sHPqJvTlDft*5x=mW;7-kBl1D@y
z=OlF%&P&pHRC6@qlxx?<CU4PX({PPrp+`g>M<sO?HYe2_IotJ-bGzoT=XX|0#25A_
z)ts*F`q+^4=g8r%jk5ik$NFs6N$mbGCF#w%&0QDU#6=dbjaz2BUdxUBUO>;^3U9+*
zMt+7>ALb=}xu){#LU{1Y^9*Mb1U8E#YZQwn+i{B|3wDcUujNbNax^sC<he1|gz?I>
zw)h{79c)!A&3WygGnzE9T{7)rGn(q!{8w;+l9WcEChwHhO>C<|d=F2vYKSp;FmXED
zAFc}y9;GG$>p6IjTycouRmlioX1}n2jc=JFuZ&x>ltmElp3{a|4=kjv9OyJz(HNW&
zz`T5Qqvf2XY|o0<NlExNOYLZ2Gc7RW&3a&Dx?!63)dOtn0-2?E#_`_qXqMXH%3E{n
zZPo+tcR|ee3)V~hnD_hYf#xg+n?-D82|ZFbW~yH~kY}@&?b{Pe(+%6>mdNU_Zmg~J
z<t=&SYkHw|`&EbX-sS3hO&U$qRyNl8gfcVFT*%gzVOBijwwKt216*ON7H;)gpvh|f
zr;&4k*^&B%0wVceJtF2bO1aEYl=8As<>;BbR_4(Y&G|b-nU81&TNY}Cy3UchDzu%;
zv9RWou=)yt!b7Xn{Xz^MbzSy|Dg36s&VpSqe2%l|bJ@OtIg2~A&uu&+`kduaSMjDt
zXP%fGwQSz;XpV18;kn>Bs&m#`oZjhC7*@FQQH)<q;kuwX{5!%5?Vhk5y?N$rSFv{C
z(VfnP`<~?;{n=Nqd9L4Pfd#+jxo<YBEUZ7~AH6wMT{NA4Uf`U)Uu<$K0}H=B6g~R#
z#Otohk;yN;%=bF;AJg{BSJUu|SJOVn;F~PaY&v=2nXoxK&jin5)d|^i)x_Z6=W52T
z{KFCszc1eSB)GuNWZM@8DL-Z9seX%XIYQ)mMOI93tL9nYCABh)x7Xsy5<zphJ)bUm
zI5<kJ44&bp)OBeEn^b0qvaiXiiOiWH%IzyA9?l3+cE7a3t#4squgrS4WrdTZEL+`7
zi>!LHp6HlvnoxZ8M26JW6RakyCU##vA*C0r{Ca0lZ;bC^shxhkHD`LWo&@IwD#sV>
zmf9KITXWhr>k0e2VC4@Bq$(qN-<(L!N)eX}SKj@3id5#}^qaGvU-hVt3sRP?2<?5d
z-2BC%2-8b*%ddFo-wRc)HJMoV<+=!)k#8?g;xeh3Yc0?Co@A1WUdwE<&5E&ZHT#8k
zDp7a2J(kFDcwPwJ>#^hwtBS-LMU^+13yeG_EX@(R7U$5UBszIPNUF*<mc~_Tj%#I9
z3Qqbu#R>foRdDnuRap_<(vqaov3ep4r>aFmi;&D3mi9>jP0Ah`2QPXV%zQlM0gI4V
zff1*wg)ir`!ev5pe4RMY1vjP6S<j-q(}Pn_aUsie?SsE#ma@#=5yrVreIbjv=E3K8
zR<XnvwhP@^%5uMWz0jW{f4w%y@@pPc_S#^aJSD+=UO<y=WfbSU(5A9I3s`=C+9XtR
zDZAtuuj-3q(OwrO7kW)t_Wi|a7gdP^BB~N=Uh<^QNHd&m>1ELW(`(6+M$WKJUY%2%
z0v2uk%;5DWkAJ~8lch48*;!xPm1YOs<IPEGal4dKr)koyRy4(XvM94j;G&>e8sV(I
z(Ow5vE#+JuW0HH5cglRVCa#Mv5noL-y@YwYF1tASzVV+t%fiD~#%b~_i#ckhg;Qo(
zw5geX{C}f*^#->$Yiob+d;M<L>$mH6@7}$e+i&IW({KFl?rnX<!Xe<~#KAJV?A5mN
zyQNm8<=fvk2uu=i%c`#bzt6o`)tJ3_!@Bgl=Qm%=f12{?%wv<!6|;=bKF;}c=CRG^
zikaMJAICqLdHm>;na5L~edG(Db^Pj+na4|?edIKsb^Q6AB)RP~kDG_gIQ~6krh9MY
zAE&*Q9*Zl_xLmM_I-6W}>uj=~(lf*LhR@XV<hUmq^t--IFJwEL?D@{9KXu1(n`z(c
z{+(=ow$Z46#__Cw?WPrXY_2`i{9K`SnDxoiGmM`$O**h=4bu!U)&jFno4+xB+C0ta
z^X8(4nrY>%pMv?FKSiFsdeYx9!S3}=yPwXw2YgSY8=I@!A7%KN^ZeVB&5NxkzSn!Q
zdG_wf=jXk1-S>OK`MP)hcI;IGKjob4+AA%7%DfDGGW)y>*V*MWYCc=us*!sX@!4`-
z&1cJ#HS->Xe72lh^V#xrP27W+&zAFRK1-(CO_s>F%P(5_GbYdOec{xfH7B+{E8hFF
z=9urZ&#K#Joqzl6vuyc{^Zg;S{n!3<X#RP|WAe{4N!*(+rr8w>na!{4F_Jg@962HH
zbL5dYvBmdmrX@7})OqVNE!FaUD(gG*`BQ5;LL;uaN6!5}<9w9eK`Wc7EeHPSNYAjh
zVn5N>w0t*1-F1T%3Ue7_CO7GD=y>oq-I>&+$W~y@b>pC{rpL_#Oy3Ipx!S%l-sxxJ
z`{2N3F(Z!es{xnAA!SX4{!Wny2SHY`fGoyTk%$9@A`u5V#R`mA#R{ZY#R`_O&hc$z
zo#Wof8k52Jf6)OZy=@KKcb;Kdx8MNNx@`^pJI^uYEjYlGx2<9Q&a+IXG&eMOasQYp
z#l2#4gCs}9fiou24&AJ098WMkTXvXfk=O=?Sg{QTwqh5u8UH67V4C*Gk9$T2<LTn{
ztZQB{uQ}r^wn3^t>cA|!W4CM)8T~(QVbv55IN-e}$MF=KSPH8nYvksJrZY<exa*P`
zcNnxrN;|f$T>IeAn%)J6zG&R|s^OE%BD!hi?7$hfICW&29Lg6=n0sgDp((sNDf-`+
zU8vPespnrXq1k4J6aUf)hi#jj`i%OWxHXnsaPrc5lEJ0>B!Wx#2@AJnrxUm3Ri}AR
zdAKdRowzNpJH<U^;+9NToGh8II6WXkaeDL#_Lx+~>j4>x*P~B}-$_y29&uv(ojgVR
zg7(&s$P??YM0xCOJ>#;t^^DgArzqVNy<55|aY|yBG8MT6w@+~O-C$8Gwn?Q~Y*SD9
zMw#;H6ZU)ir&b(r3VWK!9eKEZvsi!RiCuOlgEcvH&TMLIT`9A`K$}y?N1kowSA&#U
zTnBb)N*QzNNPSKX2+Y#m)3G&X_977$v87E5l+4PxyV{mD=6PQX5PIP!vax%2(35u}
z8<$rH9<eLgIRAI>kw!U}iR}SL66O2^-K#`gp9Q-tbQOtq(R39n<Z%@%+~YdOW1{Pv
zB*Eo@DT3)yN4)1G3qB7_5fqO)vR`9UN4M^ySiQ|1+8UcWR_i_rUbneJTIZ2=-nNct
z-AC1@bRVf}=`OmZwB($UlunY^ES;pXD4j)Tm7Xc)2!57Mbxac5$Z=O};)V{@7u!3Q
z&ONZ{PO6}G1;2LDeAhLHn#DHm>ffODe_Kas%^dZLOG@*eNp=V6Ezr2jmd4`f`qDGu
zn8}8WUEB(fa}z$!a11Cs#U{2q#-T7wBxX+2fk#(@G7O`4i5|^!HoU#l_UKBD9Tgdh
zM{G6I^1m;<@mJ#+1OJj4&5{oS_!rMmwwaXlS!3A&r!L)PElJ&)n`itlm~(WF!^Wd?
zatxOT<rt<%oQV{PKC@Hovz2(n8H?`9?vG-{oJYlqcOI=d5-L{Qd$i`<SFz&7M{5r2
ziWN&A6$?%@+#ir?Xewr`{8dbN!;G65+h$nirsg?`8OzIx32&Xz`f}5Zqi-I{e~CI1
z#J7P*SSPJg{geN@jWee1yq^^IS@GHf!S2Z0|2OFMN1vJODQ>{hcvMq7V9ut-qc0r;
z+(csL*zx^4%Q|7BSllG8Ca<9EhpNeO9GaeQS*9&f*r0NhK~<AYBayv)$&tC5iQ(mo
zTWlw3C#t^j=Ko#Ipepm^;FJmtRhf5!Qz}GMpF}%!x=sm5;&hKbWH=?_(8p;XMARb>
zX-<ha^m1B(n(DNIKGiwyovJYzoc|Xc5z^b%@_pwSp>-Qt{CC_ETDP@Df9FA=yhTTZ
z^0v0fYi@6`)?r+wyYQM&+OmT}Qo4zJP17!9aels($H^^`sA#2|82DJnuU}QibG|B1
z#G#@)nViD9iK_3mwuII;T&+AIbnR2%wTJf8KJ4)SpyD4n=^c|%PJ*WvyM`yLqw34e
z4fb0Ymf7%?sd@#!XYvZxTVTT4xOAn$3X`J@OEuXvd~Y5IDl6yry4xM}tuWr}?))IW
zFA83^EkS&r3%qP61${cR{ECy8=C+m~Z_UM5g8DX35!To`WwP$mO25rhjCG!hp4&F1
zSobNf-i9fK(?0P%)_p4ErTetVd*`Ge@14hj)-Apgl(%Kd`yEGv@-|PIzjDJAFYlR+
zQr;^!Pl@D=@S42zjBEGOEs>}GwCJiPX?6>2p0Z=9j^m-AY1`(fN^Y4Vx~E%o=k1`d
zk9J{?8NDMfw@1!)*G;vRe_S|kgUM5fckZ(Fu{bJwKG-65fJf3^()g26#uKL#Ck!%F
zIAu7S+_p8jzhhqVzu<`hOW&H-ex265nMn<AgLpO=?_M&mjaR+#_a^z@{JAWZ2JHna
z+6#BM7d#2zOJHmjiS+4QD&srzc)^<Eg*NIHO6rwH%L`U5FWi-0pq5@~_Pj#xc_E|T
z`Gc^v0Q<xX7C!zVE^axmd+!nNoo7z(Jfyw1YxUl??7in+?>s2I^W^Nkt<igXZ|iPv
zvR<>~R95zit$kI}JQp&A&$8t%ylUpOO?um5jzH_)o2hg1s(o%`%m3xGc){}iiJp4Z
z_U{$?-z)d?|5(8PaYO%)75~54+dO-0_i(b^(aUy^H`_h`yyrppz9*;m9a_Eb*=xT~
zylTIf<<H#GxbHoC-3j-)H|lk-(rey{*S!p{J8NF|y1ec^|DPBB|K8~TQ~b@4swo{Y
zt%xyorN#~&*2Yv#4jpe+$J9J$$=f?^Q{Q<=TJPpgedi`wy+b|qov-BYUGk}N4wCGJ
z>g^R8sWRvG%DfDmGSgqORV*-#GgT&6@_59t!YPr*I;RyHrA{lHl{&|9X6l?=$>%|7
zlHw7^EKXPSf1Fm>nObw^>9oS7sWk^prxngktvTI0t#EVdpCh@`0`nw;G9|B0Gwd!s
z<JO#dCR4arcuUXEoMgsZx{D7Ri7mZsv`Z)1vr1?2b)#v?2aMDrj(Pc|h`!s{b9L{0
z)5;4**FFkfdwhS|#|R;&(?NO*be=MuYRh@x!DldurO)M{^5p{)ry2y8Gi?@0n04)t
z`=kRab695bHNIY|Q1B%6g4nV$Cf~QrGeQ{3%vUnJdA#rB(hJPC8aoAyOn7Z3Ek2<<
zpJ_6e!%9!q2NsjL4xCgIZ7}xHY_Jq*n8H*r)syu>)nu*%x@w{gT$8yRdbeJQ%x7kl
z&fIiUL3i7wv=e2A$^;BoG92;MVyIOUZLr?k-Ffe=?VZ=PDxwG4J+&J8Cx$T0S6j)j
zOyoeg?=A-Q-^=npZhQY@-TR+*@;?@8vKlM}Nljt$ab~pm);VM1^@GZ02Et6&{eIuv
zk;ozQYi~m$+YPm&4A#pe6mBxj=@WC<#2VqYiM4|1q}YR%bDq7NcW~ysqc`Ur-Z|&_
z&zJ|TJ)h&_j#TJB6Vm@`r1za`-50HO&!pC?-elU-nZo^{Y?AJQml=#pq8K=<-)_Fo
z$Ts)E+<Q-5-hGpM|JCmOb4K|mij#F4{?Eu^v`JmX%H#MTfN??&qo3MMCZDYh3z;5l
z7jH<u&whflaT$NJ(RapczP~T7FqAkT!o1`3husYAF$V&KcI;;_P+%|oaKWjgy_m(l
zN~H2x@Psprlei8Ts);rTpIyn&vykCg2t%I9N`^aWL5wT5bY)HEa%lEsRmkXGyG?S@
zT?1LSo=cfMdXu>vx)>#z8EbC1duTQEPY!8V$fU58K}Gby6eb=~21!<fMGSw+SUvcf
zkDX#Pial`R^@B4i2E0tZ@f<gAeJT8KVt2#JEew-%5A=u`h_O^@d2+}EF&qzIxFmAG
zgjIr@X{F&x29}(XRk{r-EVulHnD(CTyyqLlSkqvraAA3ETL`zpT2`K&48<A@^&#9R
zX0oK&@t@x#H0>Fak34(+jE`0pZ(|+Qm}mSm%IMNPu-Ic;Ln5n((}RsF(FZm#70kN4
zk|8E}7E{4yPu2x@Ojs9OTf*eCmvu%C<4%bKJZv8X<yBWQ*d3J6JD|eSr@^o|>OhHj
z!%b<&nVTEV^e#Aad?APd_KiGSs-eR&-jeeVk1tH#3i6K%^OL3nKGH8DRdN&ZSPgs`
zjdByrSY|Oc24^v<MLR6xJ(I#PiOb*!!%l?@={3`MI8+w1PFTp0BElfadf<I{!$nJn
zOKi_d7-tGt{8=2hQzGGq&m2!yi6n-}Tn3kz&SWsov~*BosS?uUkO^a0zJMV`gW>wj
zWehU~X3S*f*~(xP)o@bG!H8WVi%~_<K%9BPGKQA|7PnX@Tw}Ua+;D#_gXMeX6t{zm
ziyO`)22A5V(c)l!E{f}HQiG4Q1=#o{TN^YTA538SVJ)I?neAEAfiGeSZrlnvL5vcq
z%*T@&9x7z8FfD(=ROI*|fbT>5tphUFjf?wT)7Q16?&UG6*0o`0ezK`CIFE60af1(s
z%%;YhTn9o#4(PC+*wVOI(ZHBp;x3cX<O4p^7PA;Vf*TY$WKOg4+;%YHY6#>y@I|~~
z=d#Ad>sxv=ncHI<veVwOEMs+CESZoaZ4t)pah}n~=l};x-?qk?fgd8cCP=dOZ)<cG
z$dF>0l+vKNwIRmLz?_+f-EoO#!^zr)FA5o3cvC{S6Q(eIIKHFd4T$S=o6E2Hz(vOk
z8EhWg8~NfnW_oc;G&x*WDA>X)6U4CGkx^nP!%VY+9jrYX2exc$5Cl2XjotCEfX6H*
zkiWQ^{v8l|VDg0Fu-Sze^`s&e$DNW1N7(rIn~&u&I$JuJfn2vgoY5%v0SC*n=M2Hw
zj4#a!OqhH4nv4_+Zm>=eW$mBJ{NXp(ft6>Nj-6w?6x*=)9dins<4#G1yKH@TnS5>?
zI3tt5!L&K|!3HLSUakZ_R*6lGHw7%FFfVaGn7q9~P<qB}MmKiHmjW}Y#T@uJWU|E$
z$TK(YT%6#3^S~F48-eUfbCj4<)EaN<9!L?Iag(XYIpLi~MHZKV71ul?P)I4VO5A0-
zH2J_rNd;q$Q@o8Y%_h9;YN~hUF6i=Hko=bASpnlqffp;d6%X@F$Yj1e`M?=5hcIpl
zX(sok1!puWUU3<Su%@#+CObbkVPX)@E#b*@Irl*Zn+JcBk)pv})+gH<eGECDY&U8M
z=50D-$yXL4GDn-^R7yjRw1p9m)N0nACk#6k3f3rO+!9eJ7ns7?c+>L03$cVSZUtT@
zcVmV~P{d9yma+M&&|#k~GiN5V#nRslmI?;q%qh1Hyh#kG;+E)a+Fab=Bkdu^;@8jA
z!{T_;te}K%f*kAe?F|zX1Ge#=Im>WUz+)Oy%B=$zEf2_B@X6WomPC~?9WP+KDKKL;
zW6{k6cXSo3xy-y7B@VOs?Puz_;jmdmVK=MAQ89yCY|oM!?g-3y%j9<Zz#FCq=V!6a
zGUl8!iTea^V{lT#Mb8IUq8!v%(#|v0t!GL($8@aez{Y5YG9impwiB$4$-5igFg;k`
z(bPWKq4*g?vTUbU`vFa3hjl6j;oK+AFfL<htZ!lJX*;m7sNs#+gqbXUy^PCv8h3Iv
zqzIT;asCnJR<LH5*ak93^DgI^w1&)V#^k3A$u|$!J24h*We5)Zuw_d_W^%(F-2+?7
z8TTEUVR;}vh9S6^@uh%8F3$wc#>>~4{&BJX$kk2IVLfpal>bY`KiEewTwctOYzRu#
z|F<#uWOL7`W1F!}>;t<<gR#M4W5dnP-x<@)cZy^c$sc&4b09^?LWYI+Im2NygS)IL
z&JU(YBt%6Yn7@>v?|YK|#~}UBMe9F!tv3>7;l1q;99Uq+{3MU@@;Zk9%&Z^o?-#Yn
z)m1QOPH}qhL8l>v&tMKq5nFnZSb8zv^CG$D#f;)cefBF^efXJsSQ~HZDcogS_MBmf
zYNJXzqcXp<&u+n#TbB*$pVcpB__tg4!2fK<`h1Q*n?)Yvvo!8M&*sO^{72I4!*}fi
z?>9GIUe55}*z7|;chj-3hW%<BzjV1ixU)G1CpG*(sPN+dUX6-hA`kMVS^w|1=9v}7
z`a_z(d6^C0xAMN`V#5PpdYYHBG+s91o41R}r&8w4dl~lUVGWt`?EW(u>%Lo5yy8|2
zE@upm<B(j-aCy7Hq4zNyGiNdR<SM4T(oHzUt$35iU@y1gpGt1U`u?dKHi|y@A9m=U
znD@eD%>(yqG{3Bm=Kj8akJ!9u#(%rE7X1IeN$g*`EziUKe+*QnGyR#$@BHI_jl`$#
zl~U8Z8UH==Km0GQ-+8$&<G*A5&az7xo}FPlRwZXA#bi9cy+5ttj7q^N-GnRw3oDLU
zyO>gLAJDYtFV{MM*j>Fb+0fzL^M{LL9iDyuaMAO@d^uMCOeu?NGk0v{cj-xMIKwO$
zoXzO-)Zxerg^W{N6J%LZZy(sWuBG=Xs1S%@SDJCEkz-krLeiJr4QDidnBQUlQ9ZZg
zWLU%gpPe)I-=DZbQ~SVw+0I{=&mZA6K2ZPKCuSMbpRehUj3giIuTy)s-d<$pNrw8r
z3s3m4{&>yrnr3w1|AmDo_McvPW24A}|9(gR`S!Uk*FJFnW5kz|zi|!S0rR+;P6b;!
z{FK<-@JWPa+H!>rbB^DfqJDQy(e@>Cp5JLJ+P-+s^qUjI@6Iez+bBKxZgbJSwETOe
z@u%+2FS7fjaLTr&$nJZ=Dcea!`wZt7acgd$QB?OW<CJY%QQC)!Q??U}(!PqEvh6K;
z_Q~gz?d+oSTjvz%FSt`UE%;r<sl6>l(>@iQ+B>Oe{kAzp>lfdV)>(dMw&wS+)0*4o
zaGhSe<Wy0X&h|dv9EAi+-)YiIjuze0**<r}Qx~1>lVjg1<yCeug4|xo#dLb-eX#4l
zF`f$E-0<m3=7SS<4!67_DzkL=)ckN?>=Vr`|L?BD<!guj-?-1a#$#tgSBOZ=#HIsW
za>>c_3WBvNX6aU3Tf5=`>$az=+m|1bUHPE2eBq(HD<0^6Uvg;g$_KUI7aw9?@j#gG
znKA#;CVk7M^|oDH`xZCI>nu7Xr1j&fk(SLguCz}qS~i_rY2QP%Z02%3`>3O3)6OOK
zrABMd1TL}9N?LnnaOrPt;#$Ap(CRe{4rQ<WP^G=%gPPW!qg+~h=60#DgazcbZoLxe
z*eq(cY3W&(wHv0s<++&0DjO!T^fK43H5+EjX}{QdsE%z-LX+sdqb}Mzj(3F!giQ2e
z(hdqNaD5f);F_hmMd_>F0;O8@30Dj<ZgD-x|3BGKndd{jz2s;2KN%sZr&vRlDQqxe
zZJcUzQqAUVTF57v=ub`2!6#4W9AEv;L3Q$tnJ3?QspjuypZd;KRep#5)OY@>^Q#1=
z$~mdVS6WP!^HjY*+ka_m$fs`AkSdd@XI^X!sj``R=9y<mRoB#zDyymUGF7L}b6)y9
z(sQYJ&`J9}9bWp&CZ+D_@mjxNQhk-_)HrX|)m6+>@1>|tz2~)bd$i}$@_@{xSFc2P
z&Yfx|uwjy#Ht(e*)!eXKemA_7!ftt<@p=??%lXi$5WWD*5QaOssahPXd{i5!uB>f1
zbwy`^(N^II%NPb_X~!j84IzvZv>1X|9ab^aIdc~Tt_pGt2-RX=A@w=^@v0z!h@-+e
zM}qU5M9*)sJil8tbk7sBke#xjd*1bh>@*JD^E5Byqh9r=ebvE7-QOHnmva!EUu_U7
z=Ouc-f+bYWRn$JpVXA9L<I<2wH&Nqinb3I&qM`GAM2oAXLgzV(a#xsz&hr-Su3`-B
z+uWsfJou?<Sm4vAA(cx*Ln?Vg<I+V#?|F!3S8|8mOA`$Z3z#ay78;m6^{YvQ>*7!|
z;VoTZt9dTwO_hC<HpOpsklBV)alh6i9nexQSRSg$w!+IXAv8-SW@=Z{>bBemCxS9Q
z#X5w(%8Urj(%$ikUynh2LDd<V1y-rdtAoupSZQ;vNvkz`;Ay^SR{D)8&+p91iYw7x
zRoR+bdG_tfXS`*Pe9ITkD!(!J`<=;Ib|vzw?)GQdeRf#&bCUCqTZdOXv+iGV%VyQj
zn@+2Am(7y2nU&SQaaLCU@>!NPomu`1XI0wH%{sqiR;x{W*7?n|vh<hCQr+8;rN3;}
z(>*;|>o?5GTEFa8_S$8)q*r`XTfOpI*s93;MXUB6&RVs0*|DtGE4I&SxN3GWXRGd;
z3~9yHyq6PA16TK6OfA*oTIaX6CA3;xc<nQ})qDGYuk~|GDCJ^W-5z`3LOy%++$!k^
z+dqo~!}!%3m9rn7+}?O~|6+zYvu7DjJ}}F$-O*H2Jm7HDI$z$`o8<g=Fq+z&J!bQI
z*_97X(E*1~=bT-g=gm9$M&rqMF1-1>wN2mo@yhQIH?29dujbXiD<4|f10O41`LMP<
z_%OemYwyo1A6C0wiE!dIj&$SQTqR>V&w;nN(#Uk47w_k4Hq&{jyr%QKdAq9_P5U;t
zNgWS<ta>fr@zX0CCWQw+HoX?``0JI5#imy(xJ~b+@tTH3IQNELQ7LYal3KHIqFOf3
zr6k_mYd8FENGZR`R5#4-xtz<(nf+$*{aGP=0h6ORR(@oZ+oHzWXsXGv=40l(jcQMs
zvf7Fnf*b>i)HkTDW|+ivVEVN`@5CM)x{~&kVe3kn1!mb|0kfyFT>B&<{i#Pf`1I#I
zH(mXWs_S={ZryXPY|lf!E1#xW2cO>k=GgCdj=J(Y&9}bu)}3F?u(jst!7Ei7TWj76
zUimb+@=BD0Zj{g3rB{r)j|ZH7Bj>+XJ?ON}Jg2qGBfZzA2c1@$=e+iLr1x6!pwpM)
zT-J&QpXQ2lTN@tXy*51f^s6}cwdN7tYt4gSue}zOy>si8D9^Q5uLWi6e!V8O;9}Hl
z&M5EITiY_WU*l7{b}4gh?2)y;HxERyOKdSa%CJ?FZN*nbxou`&t#*`ED5|_<%G#Wh
zkb8>l8lU^Ylk$CQ&T2JehBBlt*2|V(pr_5b=JYN072Y=wScR2|z6#P?(6=?V-D+M+
z?YuJQR~6@cS3Gt#d!D*|N#FH5ZC2YC_nF_FXmzhp{MDUaE4vc^S3i!_t|+#D_2Uxr
z%E!|D3(p;1@z}k8NniY#<>#DU&A2G^%I22UE1PLn&%Us{vN>t>%4VvS*cYBxHm9v#
z*-W>Z_JQe@OuB4o-|}<bYZjk7y>{`r)hj+ry<YLT>h+4xYOnSjwR*MZuGOnO%~q?|
zEIt?Y`o=LfrfWA{HkWSO(4E_|#@MI5)a~YRiP&p5efvvS78cAE-f?-C2=f(Qf9A;o
z5$120CT(um^)NBu65F-Z=M0go6V@`+^RV<iWr}J1wWfE$uPucig4g-mp5G*R{xj3;
zPm^W`pI@DG^tDe?wAyaluY2D5UHL4x`%~lY;Pc1dx!TU(s2{(>{%g%!$19&@+dnn8
z2cJJL=V}|_u-Em9@#dvhjAtJYcwczMc)NPg`I>o7dzS~EKQzzNw!4z=>pXW`?@Gn5
zI<H-?RB!xxrCRdqnnzQwRB!!yrCRpun#a9YsyBbVQZ4;8CyDiISd{->(<_^MznVnk
zEBjuPUUIbR)|%~eH+*&Li1I&E^|&NDzbWqZ%kB3Z)gs=<`fRb=DjM^?*(Rlyi|KXk
z9Q8H+I~%IzKWBX%9DVTXzH=(CFLO71U*oUOV7J+BFT;;>zwQSx=y^C_^NMixlfE(G
zDU(#h@zTr(l4cJq%@;L_-<`r1m&hGgtSwb>I5+cwZux@7@|!ci-<`^4SHv&%W6Iv2
zcWN^qX!9><%(tDv#=o?2zD*NbooPQ?+J*^i-I)nt{mU9HZKkpHFK?{0?PL@C5F%xB
zmrcs1o9*AjohB9gcug$Mu}R7JGiz6A^2X&c^TxR{XIJU+#^p2f-b-QTz30`u{kB7M
z`3;BWt0ocI%)BRM7931#GP{t~tavMTLvsi3%GL>N)gCt{Y-;4acQV$j!u<P<30zH5
zH8b3EJRB36{Xb3NjnrG9c$aNi(}K2#kq)0SBMyIX@^EAH>1MJ}Z=4fYppdPoa$u95
zyF#|A&Vg6!92HhF_-~dwzl)JEt{|Cd&zZD6uf$kpJh{eFarrIB2R`dh^Q?s*IF~CQ
zP=DunU@zx~rN0FqNb{>4_%7#k;4sIBZg(Mv&zuI6U0HM#54@Qsn4s6M{D6~<qr!+$
z?2`$T&a0U$Hn$lV&nq7=it}iAy0@c2Tw38lDoey!ZO)3Vj7)Lq4Grc(3C{V74|3T!
zA`%-KLRr=rIvl8CX5qQvvY9c8=Z4#fhD0kKiKUkrV%gp-JKnJOi=>C^K}PkW?TqiA
z+A*)pOgP~Fb9>{%+J+PnnGcrp%qOHWGw(Z?!W`+DkWe9I5yViFn=p$zLCaq9@{D4s
z8y3G3JF+jIFka`be15Z{{wJZ?AG&5=Jn=fuQ+e{;Hn)3e)%Qx>rG6fW&3KYrzI@{O
z8{PVM+THe*)l2<6*PQXhoqy@Y!<j7oizZ6yE|?gpv+QD!)XdAt87Xr8%P0P{?R4|s
zIML02`NX5P-EPyq#7NoRcaxG$SMKdwK5^>aDQ^1PC%UcQG|_GS(urU9G`i()n&_6l
zb)wtp+$9&iq}Fbm==M5iiJ>KLj!MSjwOejxSSL#N3T!ppDsU;IDNg!r`hjB)Ya3LU
zO{(nqZ&=J>QB&M-QN7~Qv4_11L5~ySHWpUMD=2eh`Sdq!=1RCFs<2h?iisHW4i#U^
z+yvp(yQF;AJe*~+(d_jHo%0**^mi!w?s=nT@^RMe%SWVhj?Uh5blaZC-%LL4v%Yx5
z{hgQa{7vlhcZ>VhJl$vVaV`6WBm8nc!uHh?zH*Mj#xvZ7jiWt;H%B^6cE9a1`S_(H
zHS-*VxvPwPbslA!RJQq=RGRtfysb3ZI7j@_5&OLzYWmwc)$})as;ytrxpi-w+WO6%
zYWZ6_)$%uXs^u^5)ZN>xwmN6g$*9>Gn+~eY%2{+%EjnZCNrAU!Hyw|tS$E!?GK<aZ
zru%+hKBI$b?~@k!YO-Z~a+KS2(!Ju!G98YbPm%LBpA@gSxU58a23OOpOOp?LVS2zl
zyDpe<$+3fHlN}eFzHp{U&;PRoyVATu*;$qMzGgmCHD5F{{N|MFGmnV*lxfeZyq%l*
z%(i^NO#Ztw)9ez>?TYzl{k*g{^O^Mb#WUaAPDrc!Brxme)x(+JJZ8;2Su<<qRi#-o
z4+qVfc{@4do5k$RZ!WVUZv<zg8Tv1uscO@mc7Ef`wDa3%rX9cOv-xpmTB!cgnWlT1
z($;U9nYMoG%(VOsGt=^y%{;rOH|=!pvYTGBGq)W}o3(cP%rxmtKfM-{+ioY)4wu}>
znc_G5tx{g`DK<0f0}IZAvVFDr_Zv2Q1gG#c&H8Kpf8)*Lm4}`^jAY1s{9p-hPMJ{t
zjX82Gsl3gz+QSdk6*Derb959d3~UOX!NwMOGn8Y~tkuFPzSosb6t6kWz2^kmo-^7x
zXR`CWCYax8Qpn$F>Ugizx~b+tAIr}fu|KZd<@nTEE%YS&yW)xRcm5OPZ95e9S7<nX
z;b@X`oe-&`aN>=aaEe~P+KD}K-V<1D8W*Tbs=Qdq##zPYIPFtTlg{f(mdJzLoSP<z
z3w}vzX4!j2!EwEb$AxT;O^w%uQ<C$QUg)xMR_%6dx|cX%!BsZSsPqX77@N!_RWdGw
z-Qv0BcVmIzBDUU(sTcC9c$VcPT;RNud7<-8?uF`|=NIsQSa9&+T!%~Bo0{zoZ)U5V
zC(iRrNMG7#dt;<$!Ug`HClY>{d?*)p2ot(-Xp){Q_vsxvy2<l8DyMC&yjPm}P}O`v
zYxvz6Vrn}jb@#lSw&g?L?F)x~=bUe^IpSCINN>xBox3j|3V-LyeSep}?w<#YTRv=N
zzsw}(#%)}sqWkQoQ+MkYgXOAQ4Ej^I80<fO@sQIz5AN<NF5N$eFK2%AiO%>a6P@v~
zCOV^Vj_wwVd17JTgQ6l%YiA_Ju3vUEJ9ptx>70c}XXh?FdOK&~QLgBWji<z-)@*GR
zlg`+9Q7mfG<pW~QTW%+@3r4?DN$W1$m22p@UiYweq9o6SM}KV+y7@nD(6u|YKlh`d
z+;&x4F1dMZleP&=I>Q)MGrK&;)1T@87N!$3nYV0Oq<!&});cfk)w|i&+C0Ct<<p|q
z7f)&DoXFmDPHoS@6tm~L_tLcQJ+<BTlzIE|sr`35!|aN~qkdkp&3G#Pec9Cacl*QY
zJ~>4Fyy~2h%ErHZ>P*|Nu(Zt$Vcj`PuLecUJfEDA>e#=0s;f<BnArD_sK`sk8L5)z
zmrZ?Y+aDJ8#VIQCXm`ffr0C4AM$wsHy`nR}N=0XWt%}b4surF3H7q)F>z%NuwM(YT
zu3b1acFppu4QsdD%F$lS*V`P;dpU7+pjGbH?j38tP1tbN?pJQ<1kP<$;=;MI_qfz@
zW#+UT2%G=FGrD$Gdd^qNdE2jwSDp-ue;68FJJ)ktA79hIPfQZdjPsteUVEq-msT5B
z>U?X)6SXZLm(9L>%sS6i`u%R*+?pqRTRyI|zI;slott$0ZuQ)n=XP5@F8+P_n7*8g
zbd^T#nJ0o<3|CifF>G($Vz^y(OXZf_EtP9>w^TOeZmHaqyQOkg?v~1Bxmzmxa<^3O
z%iUsm&g_<qzjSt$X6~BDqFXlZ3%`8KEzVtfc9n8&&O_ZT8@F!1e5~xA<LuCF7t_|}
zZn>EtoojZ}ZMN>Vi)pjpw&WT+T`@~8xtV5eyX~g;{9HbRjM?Qy({t~gwcS=J|NZu}
zW}B4R{U283f@c7F&N0@7Gg>Gsrj>~~oq6`AWya;59ESa$g_7#T6^=OR`E<C(_6Ynh
z;B?Y?dZ{Ji+Eb2=P5)Jnc&+p42#xI($ljr*7*`_ewCB;UmWsQ*9ELZ2IX`ZT7I<X4
zUF}GFo_mM?orwbTcXKQ5D=K%Yc^%jC<6tf4$Ia{lO#Es`dgR<XB5fuKY@Y4ku~SFs
z$ew9JNsRr9M-IvPcO13p6!5OlQk?dU$4Te;&6Xd_p9?0X>Z=^digP*9%`5oH$hl?D
zB>~0thAt;w^9p`ab8gvlRY37Hui&Oj0*cu@f}8FMC`$7R8fA0@6lt2IunRhu2^pu%
z$#YhFVVYvk+&1UH+_pI<?zZij{+s6~1HaU#L^;DJ`+xQ;%0K6HwmW*ct!CPDo}Wzm
zQlC=e44-80$va^_Bj?2SirW+3f10Og|G?R~?u>fdpPuu)KUL!;KS}R1ee(TJ!io7m
zZeEzblHvSkrtFVG`kVFEf0B|m=rq4E!@RQlY(;zd%}L*X9>~pjp1ghe-1B!j%l4Io
z-}-sXHsg8q_hobE-{~)_`|5CO=0WF-^fdnEb8p&ol|9?iQ1)!&jIw9nGj2tmNX|?T
z^j|QyzQX9O&eO~-o7bdYI>$B7*;>2O?(Lda7Pm9Y_q^Rwz4Gmr>ejbgs<*z~Qa$(W
zmg>cCw^Vn(-BP{#?Uw5Hw_Boft>0d|>9?ElcINh*Ww&y-&Mj--)^xk~Qs(a1Be~n#
zTi$-Vn7_N(XG3j@=9DW@KQchmF+JxPK~-X;!!NHJ7gk2pKkC27QRI4P%^R(j$g@{D
zKQGD_d?tEb^~~!$hZ!gHd}eIF+hg#4r)r|z6Xk7Bh3!(=?VfX&J=5M-W`3yV`Mj2&
z7i&2_cmEc4<5xQ4Bj+_E(zeN<c!v9oow_P#YNiRKIiBX&+;Lnmt<c}Z=SDD(@VAn~
zEw-l(63?6Z+~DRBPUF>AI&&+|X~x$*a}1=bL=(+EMjgs|CwFo82H08v-j<uEX7dVv
zGdtX}*1+e6*5Q`5ram{=4!7hQ`P>jY+`=oVmUDw6@bIx0MmgrTZD%96zw4<<eUp1<
z`sS}q!j1Nd8yosR<sY^?_PDKf(sG{PJm;mpRmK^-@!pg3V}A^To+rEaZXQ{k=buVa
zG!JmEIq1FT%&k4Avez6}xmVz9RdL$)#e-P$<<0zey7=tMqOE?Mk$v&NyL?%5{*P&Q
zf6kM?)6G{`7H@Tc`9*>o|FY&tn;yQj?;ch&PS;q?xUOUsaUjV0#Rm!N7auCDUnF??
zFKbS<>E)aD-N!28V)2Uv(euljuga#g%l2(==F{KW%(s3+GvE4c&3x-OH}mChY3AGZ
zHO%V9!6K_0H@&Q1Y&gbewPt%WpY+=WhZo3}+(=`WJ-NM6woGXA;VXv)e!VGZaJ1et
zdH0(SdG9tJ{=MTqpZpU=>zWq#w-S|7W~|~D9;)2iaM--^bf5iRhL{$P?wuABHMcT^
zs~+lJ=hzY+Gn-@mZaG1<&uY>i&E9X&eE)G@w7^5<?P`aX=ef7&-<ik}znfcdUvat8
zpA-J?d|Tr0_H!6lC<vx~6Hq$y?4iqy%Zob<`dM9O+)q+=iMU~;r1PxMCE}29=Y}oI
z1rja&)eqU*p5_odZ|Zb}yGI~VS6}JSt~jR_-aT_Tq^qY2D#c~DbeKyhK052xQ88Ok
zDNI7~P+pj{V$xheCAJ=cjW;<2qk9E5-sPD1<nRQKB2AN|ra0wq#tBC_?_?h7ypwyR
zdgu9$mF0{)`mJs?P3pZrOwLPuw47%?=``E2rwoGkpEE1hM=)B*2Z|LqE=s<~*|TYn
zwm_<DxYDeUhUpbEO)IBfk7?J)-(eScuSj{(p4ZD<em3ymoYepGNN&fcowtRbYL_dW
z+WyXKiu|2s4g1gCzXe>stDo|bbD0upJ4K_of+g^o*?EmX?p~o(Meoi{D~=01m6!9M
zvef3JMxei`*A?R)q14p#il?&X`A;#GO`o#jaj($Vpv5kG4`~FNeU@63^YW`(XVv7u
zMfb9%ta$3y8I?IjqdF>k$_ie$&RZ!{R_MBQN*Q@w;ahxoeRHSu*7lab-!IHxDG2vG
zOK4cZ|G6XZ|JnMUzL!jk_8nU7R?O;{>6!4wKb2wnB4cxwT~c%RJepPV$!c=M^pkr|
zvh6u*o#&(eez)Y@nkUmrK55S1s2l%bsr7}E=I?ye@9&nL`{&8Ll26(@^yi*=!B}F{
z&3^gh8#y=i;!2gdXHM6MT{zh!cKM`|oUeL!wa#3fmz-snPHvj#q^@0IHFwRE$dXN~
zp5O9ZE`GyP{dI-l+%@l2OEyiMe%o_-_)X8{*Kc{M->y)eoAX|`?9$7(WtU#cmR-u+
zI=5s~|JSlhnTzL^NNt(ycl*tf%NypFT$))UdneP}w(OSo{JDGv8R?T4t@gH8zx`4t
zx8ZVo#f@`39B;m8&f9i5z4F{S8M6(SPwvS~U#D@y|L2)=_ahk2`R1HaF_@MtC6TNe
zu6E3O&zV=CoPAW~UO{Zqo~LX_DyDzG(Zc`Z!r9J`oza4ii?^#D3$HobS97}jol}qe
z-MJF`cZeINuzgoPc1F&l=cY}IL~)gc;j@n#$wwj%I3?-ia2kqjJ|kh+Z|v5SYSSrk
zx?0OH><drw5u4i*hSxsSB&~UCk$glZzh}mDDdl6!;yinF_Z*WjTyO4nW_FKYvU<Mq
zv2|e*%4t&#ldefAyPat;Ofr*JPFro5v`tz$?Z^znq+>mobI-8sJ?1vAt#G>G`)6{=
z_m2NPX4JG`M*qhh8)ftqo}J#4q~p#faN3mT6ZbxoZ|xcl-Iu05_K68^W7=~@d!3*7
z`rTr&KF@rwJ<h#X=)9}qzVC}i%64hoc2AABFYDI7+o!j$(0$jBdGdFr>eZF;?>eye
zWs+N3QT?tNSDRlX@$oP1-f4SCZ`X|bHM=5CDD8^4614k85@-L??xnVkdec6q?0)gd
zWcQ0C(esPCui9SM+qLI_-mZxA-7k`y^%r*g?zyA4YtJdYT{mvMevxFIzolC*e`B{^
z{`PLYZyPS@?OL<3TkrMTMcsO{-z+*Uw)=%qig;|<ja2d2lVTTA`8jt_THm~T&VjjQ
zmJ@fsm8z6G=Un!aqyN@a#>QB?!<);VZfK0PY+A4`=JA7<8Vt`B<|RvroG(;VnU~1?
zc+DHFBb8IHM>Koxd3ftc<>{{-pY`5v6qNt4aJJBM;q40Np4U7yJM#0^+s@B(tp%UE
z*A<yR`txeuk(mc;JB*DtS1=T&eNT9F=4s-QnbUvTbXjmmIm~g@G4q>KAK^A<sZF27
z>8eGAkN#W^?%cd7T_D}`yqVvetv2&5UR#~BC_FB${%+~9&doc+rPSY<9_y^$TlnbB
zi?hc%t7jKJ3X@RxyOZ_!$Xa8+I}L@8kMK&V=glsB)HeBksg(M>62^~9czdi*usoLJ
z5%|t1XEKkmv2gwa&&QH_3h%u4<k%c$J65dH`0)+X1L?>69U14$e<u@uXqR!F^$zQ$
z4C^;&t^c?y`@-3jdnvN_p2=QcKKuLKjy$_Z$>xh^pT9FHZ{HK`ZBM25m9p>pd2sH_
zXX$l?<-0EKeUYa2ed+ATnP-__rup$NoLy;iCvR8e0h?WsH=K4w_8iq+I$PDYEpOV#
zirp{MSpApHo@#S8Z<p=myj_u(i(jV6>Tj5xXZAs9*UcN=Z<gIY{dU>xwR>jeZTo7q
z`{g&c-7nL`^S92<JN<UqZLi&Lm)(xq{c_vEyj?H1-OSsSyLEQn?aBX@vdr(6-Spjl
z*Hik&TZZN`b;$*{t9M+_d;gqq_hiR_?f;+Im!&%-l=Dg7m^+cV<atNa?z2%`f9DFk
zNcxiUhWSg%8<uY$R;|8tSmj=V@4Y9w*B7>zSN8M%XyCs)L(cADu-WtCeFfT8KW^o|
zd}zI|+`a0@$=DYU!wdMUW?bC+GEwaN=61Pf9~7!)+;)DMX!q>9M^(g$nyQE^O4TnC
zIs2EjFSWfUR~2zj_+_H2|HgK?u&+E-5r;RwU3mQSn}zLPWz+d>`?j~snSC~@x^YSS
z?ZV^PZx*)8?l~w|wdbZ>)s4Hi-!43E{bpgiT=tuV$E&JeY`iE}{bJ)$xhfvj|E@>m
zs(NlZ`@gbt=>N-eV{%G^-1}#8)kbZOwvqxjCO>4Vs+l<b&B+aowvvtk{@-*Gthf$D
zdZy&Cs2bg4RWWK>;Bw5wU}8wa^@_V!Jq&J|dVVl_zeA7nUOBT+&5`4IPEF_U%wdWD
zG&OqigXrzb2l@ZJ@KgD5G}cqWc!xS?TA94inPYF{9GZ68%wYLkHG@+~=S84O#1ST8
zl^^Y@DiNoQgjFKWJ@)+I?{DPT6l&AUvbuU1r_h?WJ5?gibNft4P}WyExGXNIsb%_X
zg@a~sxlJwCXDS>#cQ2)>W&11z$3tAgDr>yzRv9}Ua`+T{fraz7&jf><LoA%uz7q`Q
z{h6|%zfSmMVZou!JGn|H893#iC<=RW`23LQpY7q4a45a<oJ$+GN6L)@E^Y!-PDrq+
z8eKaiT%REFX498tIS*E^^U<GN(R{UX^7feSxO-1+uRUhAD{-#++2Vh5%K4v%bYDEp
z-d8AH_4D4_mrvE}%F?S2-hGkkmR6)+HS=oi%T&H+UmU7t9(R6`S||2_qbl--P4&yv
z!tNKTp5AYlPEWO+78mw`rTS%Rs{g|2S8eXbRYjiO{4zE6{O0L#W+ij>ezCe2S9SBy
z={HNSYrkDO{q5dsaaDT{##O!iDpvjS>$fM%y{cbsJr-B}a_hmks$8$StgX}IZcm=S
z=-Z|2@K2WmxL^3X9o#F)b78h1%hxoAg#0${7rynfKF21m_@ZJ^EH&ewUV;_(0oE6%
zBe>q4-YIhHc=n!iT6+$rgfH*kUfI62vj2N*za1!RFX}&kXNujvC)(SW^ymNV%l+9X
zf49-D?qPWO!hXp+bM4a7#J(@<zj?Rc?pabE|Dyh%HdpL^MVwH6nH(s#xxsGQh8cF#
z(j-s6NUrSP+;125N#$3>)!?^_`%P^p+g<x8^ZP|Iv;KyDJF|~Uzi!;|ezUlL?cPIn
zzxLd+`*q{w>$i)~&wjJG-!6Z1zn%7*&HZ+(C*Qwz+kJlTNq^mM7t=L<<|}=>n6C44
z<#D@TLE=uoCh=T&ZhI#?-iYJX=R~=U`kalml7R*BZQL)sZyngzqp(6>nd{weXRd@Z
z3M=fjIjZJ*u5+@_|0I_Ef$#k;v%fV5+SmEp&;Ot){n;{phveUyv*vlO_V;(|{{3_0
z{5uc(1-mbu_j%`Nzu9Q^?+fSWyvw)$d*=1QFPj;-t1SNNJPQ1F`MkZ(lKD$@HqNh`
z_F3Zh%XC-&1@l8~Zr1&ZJbd}>^81_LET8|?_I%y1n>Px-U4CEj`(?Ve{^t30+dgak
zx_L4C?eh6``CI1K<$Km?`TvVdwf}of&7Sqm^80DO-!8wu?a6l8Z<q7aKi$sz{c`*D
zy5Eu;>`yZMy?563o4Vuz`(&vb^IH!5;}O3wzfM_WD)X1+_t`z>v;JAeRN%)}bdHIw
zXkNFx$E^d5_Y#a&e-g{z&Bnav`0sUx8RS12N`KItztfPp=45!@Ifnb6=0+PI=+8UO
zu>ZqqYr_LPXI|v-7<5+~9e8u*;Xdd8;`}KMKW&dNvPIlbZu_VI%=o}0G0OuCr>jan
z{V$SXUh}4t&)~qTd9N6l*Swv{vtizIivtYOm5t0i8)k|d9+(#Qh=DohwJ4v#gR6W7
z2O6%c|KD?yk!{aeMs|r0eNVQV@);!5e!9Kv$@aB;1_{-lZfATtzk``)hDV)L9H(@F
zQn~enl!itX7QPgR2M$6^>_#yM94@i(ExFI(rP|26n7d)U?2J6tf;hHfwZ`U?G6@Dt
z8P*$jPMvXP_PSFF??0@|Hafvxb7EJ`8TGsa3iCg=&Neu4z2>nP&nH{^9lXtd-hAU>
z+GX5)=E#|M=M*;YoZif1H2t^Xi9KhYJMwH&;I5Qt)_FCN&*+4Zn8ArlI?0^PI{7o3
zc{WWtZhb;wb)`}Bnv+rU&MCaEn%2y-Y2kCr6AH7f&N;HlzE^0@d7R2;bb>GLsX}wy
z>jlj`Rg0T>j9#ogX|FAla$(hz``1+W=ax)xY(AOqe9~U|<o>rs6CA52-T!9&LP1#O
zOhUs!6=oha#R7w5`2>TPOl+6+TbC6z98BRenDMWgab@C#gkSGj|11-G(BvagEq~zY
z%mXU-3RKlTh~@8=60Yd~9@)+R^F-;)1IufkwfQ{o-d7Z?_CfdlPF3L_6X)NU7XRa_
z><my$>-i*zrIqrl8L$`s`oFdOUSg0~<n8}=+hSu6uajU@eLhFfwbJnUpQLN1>9NJ%
z_Es1^pL2Ls_7mgfrX@4@jBOXHyGwj(NMPe>V7f0~yKC3Hd4=KvwO606vOiaQKh)O$
z{MD~>o?ls6wTe&i$TO=LMW-#7C(eAoFq!k>JU*+50@g25S~)I;F4uPHm}fOxp!UV;
z&zy!1;#w{pin~G-oq8@z<q}MCk6kUGcq~gv@z~3%R*sFk^TIj=6z}GJ%WLI$Y1b;E
zw4~jq_RO1LF2PI2VZZm>oWAy3Xe-A{-r)O&zxUmIQ`Imb>4@ki3568LgcD5%0u)4L
zHU&DIXlqog@1F6-ZK9s2%%|-gKRsm+c(b<a3W{vAakyb~Kqt+({oa{WIr+=;S!)(K
zw)~u<Z_;DH9l0d1<!4*|R^h~Hn|yW)rR_W>%(ldqb2FoKR{WuyBgd>J7|h-@lTY<b
z{0*o7zBAUAOgYqY)9<*Z&y2TU!w;1#>-JOiDX)6rbLh)8OD^GM`}G257&Mn|Jk%n&
z?zE`dnT*)A28m_Y{%iO|{9kR5Sa!LWOIU49^x1ov-{Lm&YxzX<YpgLyv`ze$xw`h;
z8*eV*YyUUjx_)+F?zj1A_CXPeN?fZOW*ib@Zqa4qh!&98reN?UUv&0ejZ04%4^3m|
zh*r{glP|I}%=*Co2vM0tKHXQoE&Vgs|8w~<<-ExZj`&Yg+k_Jh<Fic!_a%3hsU7<M
zXF;J$#LBxJ8{}SR>nr_fw9m3v`qSxKA|Pn?{Jd2U$J-l0!W|oUZ@-dIDp|1DPr*rj
z?h+2cT`x^sJ1%&qYdW>mS@{bp@my-{5=fk(7uv$HxMZo4%MH)#T23vorV}|Hm+n<^
z>3EU0dHd|Wx8M9tlQ;Xl<K}*CCztbDi#P=LCX{WudHu}3)Ni(%<!7C>VNw!fcF|$$
zh~N>}s9=!fm~h06QBa!A?ay4N&Cgj=%DLmu@-5))xb=@A@V2H&)@#N^X5s={eG;w+
zIR>6)cA0rJ=c~f0m}e{b1I0dcvI#sb-giM@kxt4)H-V?p`>yu6M4mG0RXtS{_F{jB
z(%W?!fo50kbqS>=zg@2pXm<HvmryFV>^hCWZPzAt2`$~*7dl15`h|;Y=cUl)8eUW8
zSvdzT`f}B>ODJ`LUceL$=hBUfTqIYX7F9hZ5xZ6+u<YW04X=>@t5+;?DP4RM7NfIj
zue_O@Hs27GYR~S=`sTa&{j9$Saw0C?ahv$$t<bc)8b;Mg9%ZW|K9zAsd&@phuWYz^
zW?}2RGmn#>U7qg$W6F7n6XG=|!+BB#yMNA_SaZ5uCz0p$k9qPpT1D5e^e%7sdefmg
z=z#o9kKaKD)N)oaYd$#t$F)7^z_gsD|Ccr7-t==1c5vTz{iDc*nR-^8OuH^SFAsFc
z|MfzL>&1D7x$cb3l8d-C6D*WVG+BGn++#f%t&PL32OY5Z=PexSz{tAm;2Yhv_XgGd
zH`&kFC4J-E>^~cnF4N)-f4AK%KeI32EX7QkMJz%fBEd1Ck+qT4j7wufphF`sGk1<e
zL_%c)lQ)ZKgw~D&YRz0ZwhoQD-1-}8nYgb7u?K`FZ7~S9?KGUv`pUcK{Erys&X1zp
zrc)&1Kli!`C3AY4wn^A;h}kW$+4bda!DQ!u3-)$wG_1c=cjQLT*-`<+Z42h|DIdF*
zvzYTphCjQkbC2wcCBhvSr{-Bj8YX?Y^s-BE@%(dPJrd0&`;v}GEbA6gKBf`7Ov142
zQfQZ8a(L|W8A(SvGAG@fedb=;H@(f@XV#v0lbkmH)E`#c>~E}_C!gJy_Dy&5`<Z_)
z<hU3f6;WO{gSF9+n<-h0<(Ljf&rJ=5w8afGdYO{4l!a&9RyU|la4B1#kh41CTFrci
zt?GH53oPcoJS4L#^2POT)|x}hzdSD9_rRN1>70^SwnX8+r`Ekn=ZyAU_d61K(Ce+&
z9kZ2p=33OJD8Kcc<9j3IxA61xe_Yvx)4jJ{dU)jKw6`To9v!(EcU;SFj-FLu;iE4L
zmiwvt$^Uxg^N1&5!MV^m7S3PIk9HadP1o?7W4Ozy@X?z^*&^zGb9ShuO~^B-?!IY#
z=3eqQ#-pO@>)g-SP270oYtPN+XZPjk#+m+JcC-9!U4q$~9Sh&gb}Zy(dMw6rOqZjF
z-Mm{Ze|N<*jl9Z+A5rfaZZ);|vZ>zsz)+kKXf9N9rsk{C!R0l}>QsJAS|4#DLF}{X
z{R|7vX&XWodwyU(z15i0L25Y*r`Z$!Tg@!epVi+wH=Vr^!#*K_`_@YVRgVq5eF04@
zvM*LF_Po$}&T1aZ-52X7Pf>8ppSz5O^Ve$~RS$z1idOSk4ofcVo}zHDZ<i0JP|wv+
zuL%kZUr#YGIr+vnE#J60d|B(eVqHj?65U-tqxRy~nxk)|!#?-j{C>7=ih)S56Xzta
z2%ZTWBoqYi=*+58%@LWfA<#i-N9302oIW>V9Flsi8_bk{F7`e&X&Q&ur9&~#F3$a_
z^Fa8k+R5iN3;(G^o>1adJ852Xx?IX}Qfke5S<g*PQ>DBwz5Dl3<)^ZArvIdzL(6WN
z7stx3Q1RTBlr8Hv>21b(&a%77Q&c>|=Ppq3th(gAe8Lj_za?#xR3w)aPf<B(5W7Id
z)6Fnyx`yYZxuva>R6JkJ>QP<Ux$I8DH?hs-8ksNRHuKM_H3?p<9^0LMc3*<&<g@#p
zMeWHwWq-ErNfwvS$#ooFQ9Kh$91|`z9azHJc=AEs!!u!*J~4Q1HI!W9suNbEYs0jK
zw{@+}ftY6>H|`3~SQtOw=f!eHkxet!o3=RZOXl>JJo)|4fui1p0u#y>UQk<DzIa0K
z&&l5wO*nfa=J(18PPaBL<y$r(_eNNIum`)<D-Y2ikMvzHEVy3!@&65N6}jZTeANUe
zHiLllz!L&(uWUqvPI$zwaN?3Y?6=DYbXURZGjYqEoF|{Tm-5Xlym<S~-^N{XWv2c!
zYHwxDD>l`i{b|)r^VqZ1%W5*r7CAX{imsZVB+BN`voNStj74ml6sri^cdl<jj;(90
z4&3Ty{AAXl@hJJ(<_5W%Q|UG9>_k3_az`F<0A1jEHJ~fvlu_@Jj;Cu9mX<B*_!<$v
zJ18Yx^qrsJ><ufwEjy8>z`vkl?Tx7RfFosFt_x}{>X3c0WU=NV?Ykv=x-=Gv?=3ZQ
z{jzw!U$~$v&$XLci#i_mTwn#MD&5$nv8Y2ScB131W17OgI}g6m)iNqsezSV+rwKQY
z8+FYqGW~Dx)OGouq*Kyq_X8&`<Ui9kSIB&}wZWnjO$Qb|SQu!sYQ<H94J+3AJdi49
z$n{xuwWMIx)kzyftPQ4DzH;hftyv_uMCZ$E?=DxJYYss(8|Sx8d{kX`K_h4l%aXaC
z8yTgu<^(OdF~dHSKPczevs><(L0gi&Wj(q;(W2$r)t9rLbIA)IaoNQpnpGEq)wNu^
z_F1`V2Jxg!I2Y0-a=2t&&=QHG8L=xwG=p}TBzwNp3SJj{>VnE<bIYe?o6D`AGH&j-
zczTlOlCfXq!6_&GD(_C&KKIi;O~s`=N6(09r8*{@YC16Gwyq6`HCJL%)>L*6R%?cM
zjirBF7p|QDgmH`R(Ru7AdVcRto3p<vC}&~3J@;R>z%xSAHu)UZOtaKBnU&;i)4TMB
z)t!p2n=QUu)sJ3#_-*lwwKt;JS6UR?%K8~vU+{EaH6v-)#n|I3XCzf!c2^Jdsb_m(
zA{u-~pzT$TXz&@2x$Bd<G?zt)r%%ue-?%V4=B`U{Ucsrg%kI34x}W|{ak<UA3zyU8
z7oR#Uxg>n<r)iq+SKhebzHZ%tDN9ysZ&TQCgSGMKS~td{c~(1igetAD`2Xa>gH;bg
z-!a^pGpYV#UV`VbpR2W1YmPmyaa`Z?Io#e$=ZmzDr`p@af>SmKZBbU8xjIwaE9X<C
zxz~-Jvs<ToX)KhD&Z_syxlqZWT9Q&NyHLpMg;TifS|P6&p89hgIBQ=npB(DM*(|Zf
zIK+wbu;jwxP$y2+U(v^c7J19=I`wK@aOXnLwEUt|Z~5*fe`8#3^Xfvd<dXEcpB6c<
zkGLzXW%y;?>faZpbgcHan9|GW6(bPw$c<5TZCj(N9)G~3`hq3qvN4<7WEBjgBVLKM
zPP5`SxPR>L-7`PGFEW|@HMri(c;WoEfK&WB>8)--T@n7t8e4NS%a>kpli3}dRsP>@
z$|lk1*9=pGysE8U1WXO`Qn$)xTDpzpZ-m!NU-`K!g1jUTILuuY<Ry8^VD8c&FG<&x
z=fX9YPI<McXKBcE>yln);k8$JwM<J^JD1PgdtQ^@`b&%R`IHIs!dEUlx$a$Q`@N03
zzQ?ZK;9S@ql;#~P5b-ML;L<#!6(;|0Sm+CefOtQjv#l#+&rs(06JZ^Yc5c6Ps^s(a
z_ohU?FmEuLwyEd6=@cXHUww;uzTR}OUfE-0mXzEZESU;Q|IJ3#%!%=*-n_H#Fsf#L
zSa1py@GFf@z3|kRU2b&hg?s(nB}S(t&Irt1XLL&9pvT<BMyE6u`_!LSh+Sml9Bx%I
z*LiZx@7c1u4!?R=xK^&@g<<=@cNdEJ_Revv3QcXhSM*{&U#m>lPJgkPldLT^ondWE
z%@YZD*4CJ+#~(1QJ}ctgjUAzH7;a72Qf;X6R;*>o-EPIq>6|{7C;rq4P`@PkeEqv6
zktdYIR`X|a|7DxBt?|CWrD<PeeQ&+{w{gkack=$T>_3aYU1^fJEh+o$a+AzkmmS%)
zeP{WVTod$~yv*9RWXq)`FP-D(E-=YtGxAuj;X5ml=lV>q$!fk)&n-(PIzz(W*uz{S
z_eEIyyP_9$?Q(@LJlp4$zHn`iD}3SGey{k2ayyrihv!n>sS;Y@w^$o9&AB{w2Rhv1
zWxlK@IHhdnfi1InymqT5W|pV;{90bwu;%moIfegfT={2z`q{S6>|Oja$0@fD<Xb$w
zcD8KEon1HerbL_H?k#$qRvnyo_YK3Tx9{wy6wNM~x1i|MOV@na)kUXXo@e+Q`gDqM
z%R(#Pr&EIccAhJH!PKr-_`<7wU2r8^_9SO>>ymco?^a(XIQLtB+2VZO+9dL+<eKZU
zRmT_d%XC>xDOho1;hl|zPxr4fZobmURs3)6N`vS3o4Jbr)vi2YQD1i<K`ZBhc@vlS
z@1BK+_?F+9%H?hT-mg`4_P0P*(JjlH`9fGlOBQYB3uYDl_UU9`$c?@y$5%ITu^C3F
zuWsVfT5&;=Z|>_0t$eY|x_GW#jdW>MvnpBaynW}ia_cV*&iz(jra1o(aAkYFRA-UX
zddn}{oZs)Bme~G?Z>fye>O)NjxZXcF!DY^~rr_`auIcP6B3{cn)GxfWS0X4=E`d?j
zI8%OKfVkG#pWl~Unp1DDWqfYFsFc%E-al?Znaum=uGms|%px@Cq}Z0ra;uhHdiU?|
ziY>eUCxixhhVOdG5gO#FU-dd8G$`};#Q7_{v?RTj`h}`a4GCJgS;i`Us^psP%^hB`
zFE5m?tDEF(UakAS<W()7?VAh2tIj0YPIe7>1&a5t`Bq=%T{n7iWrnjW-_+EAJllp>
zE5esbvxaQ5vob3$Gnl{X({mfsH^QY$PFen67x{dBT*%DN@BKrM{cLUvN@d<37;^JK
ze)_6ADVHl&y?J-PTg%(z?Ru?MIlF!ata|fq{sOI4FTCw#S8J_$<FjaTh^uI5$jg%U
zb0?Knl`IU_FMg2~YH4$Eq4efed7odsFMQR^XZ!4`{o5<gWoNC?YQJCb;_jMN{Cj^f
zEf=#2d3E)<SWC#xK!>SCrw^@;kz26p>&u5VOIMk`V7S%t%IrDQs+;GE{@uQPet$sh
z%5xU=`xb96{>QxHoJIY$%Lc1-zexLTZLLcV_1(&ARKEBY+sx|Kv$A&o=3jDa-rx3>
zv$AeCJkw}06e?z5;Hmd?aSRC!KFh%Nsv<Pmb$QChb0sfqLal2yI)_)hDvey@Ij^ca
z`2CkFzvuqyaQ0ty>tVgcmr2X_O*>k3JJ`M;>qziqKi$F=O3fk8Yga|f%bn#3)y{XF
zAoihi)l_rYHS2%6UCn;NxP{e}k$=L;pZWg1PydLomNtF%r#krYoc|74cQ}$QOvQe^
z_2{kM^Tw;!Hm)q3*R<^Wd+*-8Wn~kxR&3n;pW|vkGJBBhVyUbZ3*FSy1Wm2Zu1sHj
z?BRaPl9kKj-ahQ)yZd70_VkVKK3-{`^J_<zOx>}C;x=DJ`S(vf`fK^}wz*R06|M#>
zPHI18yY-m0^^Rk_%-MTv9C~lf;$9JWZ_<YOUpOvoyApNnz4u#(wcUSq?>@1gf9tuQ
z{EM#bEwgHh;{JPV#k45z-#x*)Tg$$`_guTTc+32(m0NfJ7q}XfUH+ftYS3v0wxHFI
zL%emjUU{`dXHi&s#Sfe7kCd)j)wH&+Kb_?J=}NRs&GhWT{aLbgR}R;gzp(V5`{tp!
z&7U~2*Nb_Abhma@>IV7wR_p$m?3{hu#%5R8&X9uK=yvz@Q~3^T%XvQUFZat7`~TZt
z`OO98_2P5&2BmqEGF3|7wN9S9vN&J1fB88#@#>X*R=a=m2gsI|eV1Qm_3F(#d#}=n
zi=2^bf<vBvh?LuR;PCXSA6fkVB`@6k_uf7Hz3N9Izx~XkRbi!k`=30#Zu6(F-Tq5~
zqu6SL<`DO}r)*+!cg$nET6y@uu5Et&=a)8x?`D3%e<j_z!EEWh*}QAE^L?1PZSlRj
zf3B}w_S*iQzJmShxu4$`-?RL$cxCsAB$2Q04jN6XdLCXDZ2PtB`}@UJuin11_xO6{
z_TBoHR~r{4+x!XVpa1S*v2D%7_Vph=l&(5&;2X5}@b-!ydi?ee9v-*(v!y-$!v}4-
zy3>c>S6fUvxN3QvC;#-S9j6X|%_=#3ph}-VV110%j(fAYSA^$zM(i#6&3tA3O7<Uf
z^fTtye*3)D>hgm*_5M<GKEL;GF8=47S+KgtZFM6X_usNWW?sGR8`yc@P5t~gqhPk5
z%px|a7vA<#CXT!j7YpU=ZXQlwrFgnzU%URt522Pm&1zMq=9NGA`0qb|=ze8FYSpR3
z=PN5VwckIHV0vM}cN>{giBeNO6m(u+b?LAeOBPq~)d#%H(kAY@KUXHyn;C3Z(b?{J
z<dq+r>87o=zi(fDG4JpFRouPjetutc(egi|iPdv^pI(z)7xH;}^I{DBdQEQqc{DF;
z$;CLc+wr|7yVk1n2P=n_OlkKINS^lcip;XW=M_Jk)?a-pw=b+$Zuh;z+pB)Oi_x}~
z_;Exy?(Al{x|4_3r*7C-Zu=*2otq*5a;Et!K4iV(F*kJWy_vXRKKlh5yRgOP;un5Q
zwrVh2ta+X}g}qKTqlkIGYRT5pf2SiC-ZQa$Za-n!o%@$LX5CRvRX4r(Buuh@`N_2g
zx1xPbZuZ=7%v#iGXL8YHa$kUOScwnc<t3B%%rd?*CDls5J@b-k+}Y5^S)FlbedYE!
z`^xRUf4HA5Yu-7-y$>FS8{N2ZTkfAiK=6Zyi(+~&MXphs74rJwvNr|+#xqu`=?h+2
zVy4!-rQ>MUFHgA!-L0a*o6gsXUB3ADkN4H7nltCmpSr-#r|?|;gk=Ut*Xl`}6v;n4
zbE8k;>+Z74BFlD!`+mPFvMl9Yo$MOT9g8?EmpwK)n!KFl#!b0@(F>k^lDWKf)}xKD
zZELa@JewzT*|~9+I`bRL^>?4}n0;H;{$FxM=aU(eBG+j81V%21?G3-IV$W~jnw!G(
zRdar3SClTtPfpo}wKr~6e=ASP`gZgD_gBZRoH^eg;a@xRRj#FZ%gS><`!9to+jSvd
z+&6XA?V>z>2vzTUw2SX*NWbjV!#-C#8OwHEe|P7=ay`BctC@0=`d+H}e!Vf5@tZ^6
z%Z)r{-+UVOiu}0pI_~W5#<GPB-YgNBeJi!PO{cERGMOXE=6CiP<CQ}(zM;~S9ampv
z{Ng@~S-WXgEc=h3=*w?xe{WxI`TI@!&Rv(^`09LLd=r%9zb)#N&HT1(>amqG)4umz
zjLTX!Q|`->nQ5{s(qb+OS}sez@@C^?rZ;C8b}Jmv<KB>cb<X2mb_epfH&ipfnaJ?F
zx?%5x<SNzX-o3I3@@X??Wrpb-=we=DbU@0+%=hdk@fMTQ^SLvo?U!3%d7Uw0)icwN
z4DlN$<ZiOJzrWGN+CcaBoAjks24`P;{GIu%bV=f@V<yl49M6!tyk~9NG2^qhvoqv<
z4~xpmBnUITsqj5rI9Dp+Im->#S<@cxx|Hs7`3S>q%LDJYYCaugs8%}gZ(^e4x|59G
z(i-;8Pd&!Xq$8RjS{Hqlea39QYdOy{W<6uGI*^`~?AY<Y=!I4(!{3=Na~!RuzvmzR
za%c1W)K^EoyxA<jQvLGYtw)(n=Dv(`s${vm_byxcwUTAKFXWs1rd!>8ajs;UaqRC*
zt936fFj#wCX8yCDv8*kA_2<vG;>1?$4ZB<%bDjN0uH>^HwT$0Z#IIid`PM#>6}7ep
z?wvMzJdr{BOZL=r+0o)Fa<7%>^BdSs=eWdVcd_K><%5^6?_jpzpHTZP|8&ot&GY52
z%#^&DZvT3<xbdI;3mwmVnDgJ`Y(m@iEj8k26WX}{e!IZ4XAyJFy2GZ*2l~J6^gFlO
z);geiVH(Sisg*TJ4R_~+S8qT6HK5J%Ur2-P{P5qa&VTirCdtnlp|pP6ndhrc8lFvP
zTV`c8Iday*1hs-TyHM%ZjA1L8GnCVwt!1Av^Y2g4xV@}#@%g&272L*qW0LaErYw8@
zhdo=(c<;|67iXRH$>094aMnqmT}G2<p1Be?Yvs%xi<&?EXtAklI$t^~jqOKe<)2G7
zb!*R;*0x#JRm<(S@3((fY&$#knELaN+dutiw+q)fZZdhM*2%|LD{H(Osw*4*gnW=H
zX)v=rp!ENy|L;5J&wB-gr?JNAyga?;K+dCpG}e21a);L(c>VOTDfjw}`!;nMa`smJ
z^Or>KTeSJpkJidRr)=y3H`lmsfAX>V(+}m!KQDRCYgK9X@1J=5{`tqOk@EsW<{V%B
zsUld8zl7mg_O$zqKfE^o;X5F7HtH<j0^J#JK}E>Cn>**rZ=AQw(0aqH1@fDjD~}}3
zI-7I;=ldl$&ny$3J9Dn)t=P>UyS|-&+@8H{{fiq4>D&CyW*6qk?RVK+>v}z9$MQQ9
zj=$&Fc7eI_Pp3}#sn3;vt|oBroqhbUWu8}{+<J~}0nT#s6D_85&RP2)<wB0`nb!=f
z-!h6_KF9y}N1W`8$-jR_&gZ={*RoM3ss3!DUxMLDj%O^}X34L%Wa;|Gqh%FP{AmiO
zqpNy`-@GC>x%~@5yS1Y<g`2zbP8Rs@G+*)JVwmo{v)P80r{{hu3%KZRndfD+LgVf#
z*V?%5mvZM-nx19st4lE}m}=c%w(RI@hVGwHZ!<nR+fQ4qtXnDBBDdwqS~VFD?}Ygu
zCuS`?I;WmncS}b2))lPlGv0@tQd~P_akQp7yXf4t(`=qT3Oi*gsk;1STiB_&Yp1j~
zb<I0fw0zGEugb+!KRNoH%;?%4bgHQ<t9G4Ol!>nY%+=FkluoEMM>WYdyuY$(mz=`m
zKij|5*M)5ex@~N}{_&TTynEhDn@y(gY@F`po~>8u`uMZy+v{GIF~!ZZ`m&eKS+>*B
z_xbi9z4IE3xk=hjul)(zwSMZSim;PeRqLjH%JMszQKcWBxQ;7ot5)XHD?hrP8HJx+
zE27VTp~}qQ|IrDdZyCP5xjyX-cUzr@wSj)VYNGzx<T!)IHHx#2+dTjC+|WPS#Q!sg
z$lH5fmJ52rgg=?iT~WDq%jQp}u~Pz>Zkhg^m6x&jYV6u5+c}{&Z)eu{PA=}ceDCCS
zk-WvBt3p?6#T({k?OP^xmb;9>?)skk`;06#Yr;}<vtR#vwEmku)90(Jwk%!Sx9i>K
z{WH%qb6;`$`E}L)zWk5XKaVll1xhc?{d)Y%)$G5&e{1i*o3HmEcx&Xp^<PTE|GBQ`
zsaa-ry8q?=kh8m9|5v)sZg;(Zis{P8?<?=$Sl*!jW%1ML>wf$1c(nfYZH^y7{}-)U
z{kQfy*AK7%o7SxUAA6md`)mHGU1Iz1i!q74ygw~|)7kewv-a=HS4r3yws1|<>aBP4
z?uOQXD?4yK>gcE9Eq^Niz1sD9{im;u`CFu(Ucdb7`j^<c-S=Y-Y>zs->DT;-$>;wV
zh5!6ow>kdBfA)QsrKZOJDt^80$L1Kph(+^5uGRiC|67@`@|ss<bbb2Uze`K+XNYob
z@X6l$N2dPs_AlY}*7rjWeE-FIYS-#NR_m1>u>YMut@QeT`@MD>V)jqm^ltV)9@dD3
p|6hEP|M#C+d+WMC$EW@053I`Gf8N&TIs*d(gQu&X%Q~loCIC~ZCvX4&

diff --git a/_tools/code_generators/libs/png++/test/cmp/gray_packed_1.png.out b/_tools/code_generators/libs/png++/test/cmp/gray_packed_1.png.out
deleted file mode 100644
index 238628050db4b5b95143b97049d1782b39be9cc9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 75
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;IMg|53hG<6jNCpN5Ax{^_5RRG29IQ-jp$-QO
aG$I*x%(Xx0w&rFSNR_9npUXO@geCyu=MYu^

diff --git a/_tools/code_generators/libs/png++/test/cmp/gray_packed_2.png.out b/_tools/code_generators/libs/png++/test/cmp/gray_packed_2.png.out
deleted file mode 100644
index fb0e9c7c9bcf4edf0c78d00db465d9abdd3d12d3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 83
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;ICI$uu2APGnoeT^NQl2i3Are!QC$urO$!H|p
i;9%uBzMvtIWi=y%UUq%s9PxsDkZMm?KbLh*2~7Z*coR1O

diff --git a/_tools/code_generators/libs/png++/test/cmp/gray_packed_4.png.out b/_tools/code_generators/libs/png++/test/cmp/gray_packed_4.png.out
deleted file mode 100644
index 5d5563ab28e9e2bef551619226bf1b51186cea84..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 148
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I76t|ehRF|4XfiM`M0>h8hG<NDd%;k$L4kqw
z;bJDy6%MRg0SCE4Hb9w<$`+Otl5_HYwtu&E(mHN=?d!A|*{_T5=L>RhxUdK@Nj5e)
txIS=Lpje=EK~RFjheeEO_W%C#H`tqs{xh~_s@8z4^K|udS?83{1OTx@EuH`X

diff --git a/_tools/code_generators/libs/png++/test/cmp/interlace.png.GA.16.out b/_tools/code_generators/libs/png++/test/cmp/interlace.png.GA.16.out
deleted file mode 100644
index ca364b29b8a77b77e5c2b922735ab84e4ce878e1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 428
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0Tu=Z#(z)ZRxvOz7JIrlhD5X;4Y{3nSb@jZ
z<In%?rI+dw_-EhB^!JXqs@AyoNNCc5XOl|#H3W+FwlRKgZODIM_~vw);NKlg8`K#N
z@A|=*a8H$Q``?FQ9ky$`Ut68gX3BFYy3?s7I)mX%4Ku5TMXvc79f#s#L7O`aH#Q5*
zS;DK5tnXxSQXq9>>JIfy6$S-Q@|?9Cia)nCNFLb4mbH&tb4x=lcVl{jf2h_*FNX7+
zChRf?o_n%SQu;4%d4Zv(-&R{}>&~Ap8ClA;YlY3G%we@QTlHJlQM)2jv18W*s{^5?
zC$?_XV14PZlI2$CnQIB>7#5v25fSlG@tAvL)^CB*h0mN^U3C~$WUtsLoSYo7SYj``
zJO>BQmo=pec)T3kxi8=8^FKF--}+zkhUaYmf<jCm@QL|;wNl@=+F^Bu--cTb{@+v&
z?TpyoC?t5XA-KhBeX#G%a<;ZpIjWnctrFSWV#^d2dS&_sb7$RYwVeGg@;h(d)y)um
iW%htiY{k((O#GccK1y~!y2!x5z~JfX=d#Wzp$P!TJh5B=

diff --git a/_tools/code_generators/libs/png++/test/cmp/interlace.png.GA.8.out b/_tools/code_generators/libs/png++/test/cmp/interlace.png.GA.8.out
deleted file mode 100644
index 2fb3afaf4051b3dbb820cf2f2275e88390540691..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 386
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4i*Lm#&so4FBupZJw06<Lp(a?2A%FZtiU6q
z^8f$#t(X2Ckc(2iI&ad26|D#4m^9gZE^)Lb^r!z}`1+ikN5Ua|!(pCX2}gR=uk;>&
z@pZvRme>V`$!)(r>epP8F7f4ImX^(zkcgOZHL*D{VPVy>k4&X!OztEmIM^Cb?$Gs?
zzjRFJifTqd4G%N(*VnpY9`~7ENo|<S9Md4XV*Lrdf&xQ@@D7JN!mQ_dp8G1YFKXZA
zV|4%O;nTTMItpiHo~mSIeYh)ip-J2_;kA=_;zG9L%qkHaCzhYg+HiA*tW1WE*J-Ab
zty`XKQZt)YbH7Wc(PiPkfJvU$X5OyeQ7yl~xSs!#=nIXT>wV{)mJ|0~eo~LC#$A`?
zi@5FbrN@hBH2U~<E^@H0_w-vE+c;?w=Zmb9ekxCbOyndYa(}I9Dm(u+s%!d=>4w{H
rc;9)yV+!wfg~?^CUmTlS{xILX_T!_s_n9dS3=9mOu6{1-oD!M<*ovl=

diff --git a/_tools/code_generators/libs/png++/test/cmp/interlace.png.GRAY.16.out b/_tools/code_generators/libs/png++/test/cmp/interlace.png.GRAY.16.out
deleted file mode 100644
index 81139f7173154098c701104e297b8be549dd75ce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 382
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0R{#J#=^Ffe;F7UT|HeKLp(a?2A$4pG2ofw
z@$Y~B?Ww<*ZMQV7Qdj6M6ZYX(xpIzM%(dmlV@Z3V&)tm7Y!_nX(=PBTr`aUzGfCOr
ze3ZGQ`Dl;iGiLvdaSL`E$kdeVdGO%DL$h}Nw&wPiQ;!K>(Y&15-pu^<l!##UG`l6e
zkt>8V3jRp*@jVlk^Zpv`5X=0mih+HGW36KuV{@{@DuKow+^lDNp2sS(E^6Q9Vs!Vc
z|6<>M)|9Er^I3d(?eZCQD^{|<iM^o~v$C<&fp;CtlFK2cKT^){u=Pe}dN$}zQ`5^1
zO7{G|_k@f9*VA?-waB!0?;lEMH>~>;K0((Z{p9OwPqw}(yjU{xOyC3CEVYFDFCwSO
zolj&dU8NGndh2KLrY(G|MP5n?-Kxb?CwN_~NJ?1xay8d2+wIvW;~oVbyAq`TamV8r
lvpY_6OEePvg|be_AG7@Uqm%Vg9|HpegQu&X%Q~loCIBWppbh{4

diff --git a/_tools/code_generators/libs/png++/test/cmp/interlace.png.GRAY.8.out b/_tools/code_generators/libs/png++/test/cmp/interlace.png.GRAY.8.out
deleted file mode 100644
index 9dd1ecdd1f282df6d202c52ae2890c8ea1b7b3e8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 345
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWMny5veGCkY3Z5>GAr`&06CC@R4R~Bd
zPky(Lp7@Mu^9(Mx&5JxI7XGp2R#$A?ru3lZzxZ*BKWkrm1^>(`sm?k7Avk4Grmz35
zrMcYkXU?3l_C0fEcgn08<r8&G3a9BzI{b*|@|(a@ZY^T{^8`;iaetoYYIIiTk@QKW
zNR^uOxAIFXFGvUlXk=t=U<xo{`ta1HP_$qX7weQXlPE^lA6GXDdhN^X4Ul1Ic(kI_
zLu0`dx4YLJJiqMnzY^!&+w-lsKWe?&rNHy`dR6wNjgJ;`U*tV*{Wiuy@EzNOzu8k}
zRi#R6)LG=GxqY0>YuuH8hi%F9^6JVNl1C@Me#S6|%jEW9)(yrJ+B9X{mcA&=Jlke;
zT*co__p(~0U8M8OCr@7;3p$b!+wkSki=+06ULSv)Q@EnSz`(%Z>FVdQ&MBb@00QBY
AUjP6A

diff --git a/_tools/code_generators/libs/png++/test/cmp/interlace.png.RGB.16.out b/_tools/code_generators/libs/png++/test/cmp/interlace.png.RGB.16.out
deleted file mode 100644
index 9dfaf8d7f7020d9e0fd2d5e2bb12b1aa41512044..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 426
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0VW0p#@qdjWeg0Ag`O^sArY--r`i@BRuE{l
zPYaoF?&Y0jUrdWW$Q-q7x}+(qsiM{`cr8gxy35@9^gml$2R(rX{T&B2rCxse*~b1L
zIM3yJ*So0ek0<5Fe3HAk^(#kAV}8IxzFymP4D!-q_8mN0DpQ(OcFhbp$ha)y#kI)!
z1^=EGOc8Jv<;;9>w`K1ICnrl2Zws#2i>zr6*c&8!a^qLePFt(~hULKS(B>^G0-K92
zwz2J6G?n*Nx0civQC*V_+FH5W1zwc%Cv>^ZFHP$D`^Nk5vPRS95YAw>*5H(b3u>m#
zlGJ#2a4}EG_J@jWQ_Xj_IsUB;GtQ{!?vvQE*P~ogV(+qQo;UZd^fZ1g)|H5u9+xW~
z(Gb7mpz7zI7vJ~(H@BVUzv1@(Gi5({?weI7u%2@EmhoY{d*PCO1JhS$@0y8Bxz67I
zg+(_=M<u1R{^HU7D=YHCev6AT>pbf%U(7W=>{_TAre$#K!lm^A340c*iit=hTlB_j
f7~Ct6`Y*pXchPU2*Y0Kv3=9mOu6{1-oD!M<>JGGq

diff --git a/_tools/code_generators/libs/png++/test/cmp/interlace.png.RGB.8.out b/_tools/code_generators/libs/png++/test/cmp/interlace.png.RGB.8.out
deleted file mode 100644
index ac0d03179b22e92fe52521b5967f9ce1f7546790..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 364
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$#%}q$rVI>>#-1*YAs(GuCmU{RQ4nyE
z4`s`FmbR=d?r`(_z-!7G&(7aqxW>dN8TRkW6xG8e+ut@AwTbIl$JIE?bMtPF&6trG
z_MRurO6+puOqpYQB0GYA|8UN4G5jGB{mHy(lJC}8OW0(&S4vEhX72fT?1N~$(ACSw
z1nS;RS|KO>T&w5Qnw$+vHLvFEw=ntgVG2XcY8HVlam+$%EgiO*vWZ01Hmta6cQtR-
zGl%10a*g7($D=Ot`tNMotQhj)e^8|2k3iSf3chfz&cGOrCu(!UPViZ;EU2A!j;r-?
zNzjBj*VZn&9X>%Wf3?Efwz!#d?PK1V)L-BF-Cgch+SS_Ci`&@O%CcO^l~q|0ZFwT-
zetE!xeUBYn{?2aZdKJZf^-2-DeUP`zokjb~E;Lv@Um#ifW`W_>_YdM%<km6lyS?Z)
U>+{YS1_lNOPgg&ebxsLQ0L1g1J^%m!

diff --git a/_tools/code_generators/libs/png++/test/cmp/interlace.png.RGBA.16.out b/_tools/code_generators/libs/png++/test/cmp/interlace.png.RGBA.16.out
deleted file mode 100644
index 47cf3ff50ab01fd8f31d400b6331e3cdb4d8d099..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 462
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I0X7B(#*nwu6d4#8r+T_LhGaC}4L2-1tibbk
z&-8<LFX?6<i&@P6KJb#V#q8Y|4^9veH8|ukA>${TqRQWz=42fmhVJ||ZXZ8X{K*f_
zI{4&6w;qSA+}Top-sxAGyjQhdC|rN=5!Zo7$9;<oJe^P3a6e}-?_9=slh=z$W7f^T
ze5Nu9YY*6edK<F);K_$GcRNa)xTPQ#vBgo(V7H@ZLJ70q0{3J?<_$Y`p1is6Sj8e)
zkJ<IXeSG#yxjR%vbQh>3US`S?dZ)F()hUcoh;uV*hRTxU%{zWCIBv<n(0+XJKH2L`
z&(5|AbvEv1`y$bi>Db!XyWOF$ang3j7RG0m7y24!eO|!HZ0&!jiY;nRM<|cUKJHVJ
z6Ltu9NeJxYz08wwrz?=nWc_1xHWT6B8#hKUMEu$1+2x(|PxjBdde8mu1#@RB-FRB<
zaXN{Y`GC7Yoi^(f6Q7SuMFTDyeBD2VDaypBFoV^@#OJTGro-aIu2|6vixXdkhaTYI
z4HgMK(7_vAAI#cwLE!p+Z$@RaBVRX*7&skV`!|xcC!!$x|70dN4UgOZ+0U}B{Bl*S
S?<4~Q1B0ilpUXO@geCx6k-~)l

diff --git a/_tools/code_generators/libs/png++/test/cmp/interlace.png.RGBA.8.out b/_tools/code_generators/libs/png++/test/cmp/interlace.png.RGBA.8.out
deleted file mode 100644
index fe428a3b8ddffa69ca35129b82aec0615fd76aed..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 390
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`MwVKyBnAdXUr!gukcig3Q>=?x3<O-}
zui|*ZlfI-SCYgVq`%PP>6pP8tu5Q=<H_uq5>0o^M?o|&VuZ8m(&NZsLc@#S`@$dcc
zvw{7Q=<$d%tw)bU`0;#o+RIq)C4G5{3G-&{81Xf1+ZP0{(OSmHcF&I2YFWhLl8g^#
zK5ZV$AL>*|{S#lywmrk-N4J6Um9AS2q8jz5ruZ+MaDby`I@6ryR)%*8Y7P|!j1%N|
z7@qJ)F+6SlrCD}$6MsTN_skhx6C1bI{dnv+wdry@7wflpji3krI+<7()=pTeut(fT
zWJy_4h+~zxo5+)Stm~Wpe0~rZP$jkfSE9G$-9kH&E4+t00<2%LU)U-A{_p<O*R?^?
zpY)~QEjCN~Va0OiQG<8QWah+2=lGU%T3b%=ui41_^oY1+fd8Er4%UTBnXe0qTNT(A
uE@S@NA<XwhozJ2`e&f>ve~(zzGv1oD@{494+h+y_1_n=8KbLh*2~7ZJ0isU;

diff --git a/_tools/code_generators/libs/png++/test/cmp/palette1.png.out b/_tools/code_generators/libs/png++/test/cmp/palette1.png.out
deleted file mode 100644
index ee4323b2fe29283fed6817592868242f40aec608..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 85
zcmeAS@N?(olHy`uVBq!ia0y~yU|<AcMrH;E2G!ePrx+L**aCb)Tp8*?(D75RAOiyf
km#2$k2*=Fi1O^5MCI-eYg(=Gz7#J8lUHx3vIVCg!0D*N8fdBvi

diff --git a/_tools/code_generators/libs/png++/test/cmp/palette2.png.out b/_tools/code_generators/libs/png++/test/cmp/palette2.png.out
deleted file mode 100644
index ba7fad816501e85bd3c5fe116053567aedfac430..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 93
zcmeAS@N?(olHy`uVBq!ia0y~yU|<4aCT0c(2L2mQw=*y>@C5jTxH9Z#u&)Qf{S5nK
q&Rl*668Cg*4B?oWERf*Az`!ttp^)iq1|tIl1B0ilpUXO@geCx(5*9=N

diff --git a/_tools/code_generators/libs/png++/test/cmp/palette4.png.out b/_tools/code_generators/libs/png++/test/cmp/palette4.png.out
deleted file mode 100644
index 1b1132bbe7b67dc1563d0e2d032c496601f7d58e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 158
zcmeAS@N?(olHy`uVBq!ia0y~yVBi2@7G?$p1~bLQI~W)k3<7*YTp8Xo@ZaZ`KQFJp
zU*CScz5jgw`2P6(dJyc7@1O5Kf4%+s{rdaQ%b&l`fB!whd$Zl1vlti{G(BA$LpWw8
zCxn#wrVAKxu1;VuvXX4*iR5uOmc^!!%+EZba2n%@9qbG@FYta`dD-MN0|Nttr>mdK
II;Vst00;0g>Hq)$

diff --git a/_tools/code_generators/libs/png++/test/cmp/palette8.png.out b/_tools/code_generators/libs/png++/test/cmp/palette8.png.out
deleted file mode 100644
index 1b5ea446d6037c855034c9cc6b28bfee7e90fe9e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1384
zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZaW(e>Jab@_&!0?xW@ed=@
zZzkqn%q%}ySbwmxeP?6;#?JATgYyd~*Jm#7Pux5od3ZnY^1bKdf5$KIRzUELpwMd}
z;a9>UFGWOOh>ATI6MrTy@l-<ciKNtHDd|VjG7n{BAIQqxmy^FIuW(mE@s6U>Z6)Pf
z$|^TiRBx!NT~|}Trmk^SL-UHJ)@3d2OWHaYb#yQ2>YdlqKc{bS*1+(Lq0wn0<5R{a
zCrwOGn3^3oGe2f-an!={h^5tGE9*nnHV18N57^r6x3k}8@37awagU?ZZYSqm&MrG$
zTz9y-ZFh6u=I*i8!*h$L*Jdy8P2N5meSA0g`mOi#U*{jNHXv|KV9@HI;8npPD?>t8
zgoZ5-3ttu<u{0ubNo3UGsOUw}F$-g27sSTRkBgrdpD;HeaZX~=?4;yb$tg2aQfH*5
zO;1aomYy*+BXde-*5s`0N!d9Qb8;u-=Jn_0_vIJ#78Ldr7IhaDcNLd(mXvmsmbI6a
zx0P44R#diBRy9{uH&xd(*3>rC*42YxLv2H2O=DAaQ*%{wOJz%IMQdAmTYFi1M`=fA
zNoQAaS9ei&Phn4QL2qAvUw>Zzgxm=eb0$v8o-{dY@|4UeQ!}PcOP@A9ZTgJV88cI6
z&Ptv&J8AZu#5r>l=FW?sH$QIvg4hKMV-_xoUbHxB@sh|TOCy#p3tzT8Z25}N6)Qtl
zt_ohYI%xHpz%^?F)~@qkx88642Hy=EeKv0L-n7|k^A^u7TRpaJbKkbzZTk+_9Xnli
z?sDF>+iCY6$31%;_U^Oax8H960owxyZ4Mr?K6KdX@Da-+M=g#XGe36R?Dz@O6DLhh
zo-#gl+UWEd!!u_M&YsghcV6%O1>Fl5buM1gzI0jZ@)gZ1S2eC)Q@?gy?fMPX8#h&M
z-cr7GTj};4#XENu?%tEXcVF)Q1K9@;Wgb3~e)L%C@e|1>PbHo{6Myzx?D-4P7cWI#
zz7l@*TIlr~!8dOO-oE31_nz<l2i^}Kc|LyP{`8sa^B2x9Upc;hWB>M@?fVbbA3s@s
z{$l?1o9Xu-#y@`<{{Cb5H*M#fVg?2#WltB!kcv4+&oWPvU|?X_xHk9pHW2!p1)*=x
zvrGQm=&;~`V-p*<oKnh)3yFu?xaAd-mYfJ&<kl^xoVMmh;iF^S^A!>o9r2u`<~>g-
zb=8&3OUu0HD<&^H6S*nv^gQMCb$2R1Jv$x0AYtJl*Df*bxJ4-|FQuNErX9a9Y3ZrZ
zRbi{+7N@PfRr>1M>iY{47a#MTWtM$!QR?bzxwp1u-(Q%#{9Np=ve)+(r?0<P`|I0l
z`Go(>6aF`z_^<G!-r$ox%TM{PKm5-B+Liw+PxwFa#D9$^^(LR}*?!7*|LJ%BcU<|u
z@Pz-JC;qEEsW<v$&-!zI*B^i9f6JBs8&CK@^TdChC-r8Z?Ad?L@BVY%`QLNp|J)P)
zx1RW~^rYVK(|(qp@m+uPo&QZ&{;xgZ|I`!zwVu?Qe%jCWGrs%Jdgp)FmH$gm_}_ct
zzuJ>}<4^lpf8Ou<lkfa*yYheQ3IFGw_^<b*-u%;k_Mi8=|Ganp_g(ov`-K0^C;lrw
z`ET&4p5>=~*B^Q3fBnk;)hGO)eB!_6lm8~4>e+tUcmJ91{O`Q-fAI<byHEUAee&Pv
zQ$6d?{at_Jo&T*@{%=0v|Lhb0b)Wn<`&7^VbAR`r`_BK~EC1)8@W1`Uf8{6t4L|*7
z`B~rf$KLtheC7Z86aG&>@n8GNf74I@*?!h{|Jm>S@4oVX`3e8~PyAPZ^56K=f7YM>
zyZ+QW|J$$p-+sdX`6vGCKlyL|=|B6=|J{H7|K_h+c<|EScYJ>t7#J8lUHx3vIVCg!
E0Hz$%lK=n!

diff --git a/_tools/code_generators/libs/png++/test/cmp/palette8_tRNS.png.out b/_tools/code_generators/libs/png++/test/cmp/palette8_tRNS.png.out
deleted file mode 100644
index 0d3da33341fabbf3f16d661c5f6453f1cb4a788b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1652
zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZaW(e>Jab@_&!0?xW@ed=@
zZzkqn%q%}ySbwmxeP?6;#?JATgYyd~*Jm#7Pux5od3ZnY^1bKdf5$KIRzUELpwMd}
z;a9>UFGWOOh>ATI6MrTy@l-<ciKNtHDd|VjG7n{BAIQqxmy^FIuW(mE@s6U>Z6)Pf
z$|^TiRBx!NT~|}Trmk^SL-UHJ)@3d2OWHaYb#yQ2>YdlqKc{bS*1+(Lq0wn0<5R{a
zCrwOGn3^3oGe2f-an!={h^5tGE9*nnHV18N57^r6x3k}8@37awagU?ZZYSqm&MrG$
zTz9y-ZFh6u=I*i8!*h$L*Jdy8P2N5meSA0g`mOi#U*{jNHXv|KV9@HI;8npPD?>t8
zgoZ5-3ttu<u{0ubNo3UGsOUw}F$-g27sSTRkBgrdpD;HeaZX~=?4;yb$tg2aQfH*5
zO;1aomYy*+BXde-*5s`0N!d9Qb8;u-=Jn_0_vIJ#78Ldr7IhaDcNLd(mXvmsmbI6a
zx0P44R#diBRy9{uH&xd(*3>rC*42YxLv2H2O=DAaQ*%{wOJz%IMQdAmTYFi1M`=fA
zNoQAaS9ei&Phn4QL2qAvUw>Zzgxm=eb0$v8o-{dY@|4UeQ!}PcOP@A9ZTgJV88cI6
z&Ptv&J8AZu#5r>l=FW?sH$QIvg4hKMV-_xoUbHxB@sh|TOCy#p3tzT8Z25}N6)Qtl
zt_ohYI%xHpz%^?F)~@qkx88642Hy=EeKv0L-n7|k^A^u7TRpaJbKkbzZTk+_9Xnli
z?sDF>+iCY6$31%;_U^Oax8H960owxyZ4Mr?K6KdX@Da-+M=g#XGe36R?Dz@O6DLhh
zo-#gl+UWEd!!u_M&YsghcV6%O1>Fl5buM1gzI0jZ@)gZ1S2eC)Q@?gy?fMPX8#h&M
z-cr7GTj};4#XENu?%tEXcVF)Q1K9@;Wgb3~e)L%C@e|1>PbHo{6Myzx?D-4P7cWI#
zz7l@*TIlr~!8dOO-oE31_nz<l2i^}Kc|LyP{`8sa^B2x9Upc;hWB>M@?fVbbA3s@s
z{$l?1o9Xu-#y@`<{{Cb5H*M#fVg?3AhLRw^U<O7eW)@a9b`DN1ZXRAfegQ!tVG&U=
zaS2H&X&G5Lc?Cr!WffI5bq!4|Z5>@beFH-yV-r&|a|=r=Ya3fTdk04+XBSsDcMnf5
zZy#Sj|A4@t;E>R;@QBE$=$P2J_=Loy<doF3^o-1`?3~=Z{DQ)w;*!#`@`}o;>YCcR
z`i91)=9bpB_Kwc3?w;Ph{s|K&O`bA!+VmMSXU(27ci#L33l}Y3vUJ(<6)RV*UbA-H
z`VAX5ZQinV+x8thckSM@ci;X42M--Sa`f2o6DLodK6Ccm`3n~>UA}Vl+VvYZZ{5Cg
z_ul;n4<9{#^7PsB7cXDEe)IO-`wt&Keg5+G+xH(ofBpXR_uv1O5odleFfb{5x;TbZ
z%sG0Nd6EPJ1H;C(xwp50(B~`&eS4l=^5;f}1qU3P*tq4CQdV3@Jk-W5ub8ytMBpN~
zZaL+&H8%<$9qXR2khtiG=Oi`nc}l6Pu4G<X<~?6AdD)rBO=+j+DW|WyQ~BxH>G%Z+
z3lF(=iD}0zN?Ca+_0%-&_=QPJPlc`uTOGGJZSAenSJzhGUy!)?nC~pJ?0bt+S6|D$
zwJrPp!sO-WVt19jzPC7i{k_^>-(Jfn{AZr<zwyL>g(vj}pX^zF%6I+YcmCI|{9k#(
z|A{C5Ydonp`DD-bQ@;C8zw^K2%KwEY{O>&RU*$=?(I<P>pYyx^_&fhwuKeG4!vC2k
z{_8xcH~VDI{&Rl!pYzWDo-6<7p76i*#DAqH^@gAJv;2(j`lIjsZ@Th-?Fs*<p7^iz
zq~7$?ezu?S-GA0Q|GTdIUwXp--V^`Tp41zE+Rys)e%GIT=YQLk|65P^Klj9cy(jhN
zpZ2r=yx;xjz4O2C%KzCX{BJ(-U-8L*gHQD=Kkd8z$UFb*SN^X);s4|l|23cdH~Cc0
z_S3%m&wS^9=av79Px#+`;=k&X|3;tcS%2>D`V;T`Z@uz=^9lcFpZKr)<iFXcdiJ0D
zyZ_vG{`X$_KmUaP?I->#KlyL?=|9WQ`mR6r&j02s|JR@JfBK34+E4zQe)`Y$v%dS!
ze&>JpmH*36_}_oxzxtE^#-IMP{`}wdr{4MBe&zr66aLRX@n8SRfAdfO*?<1;{`3Dg
af7QZ+m;S!v`^&(<z~JfX=d#Wzp$Pz0?N?C%

diff --git a/_tools/code_generators/libs/png++/test/convert_color_space.cpp b/_tools/code_generators/libs/png++/test/convert_color_space.cpp
deleted file mode 100644
index 2f598de..0000000
--- a/_tools/code_generators/libs/png++/test/convert_color_space.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2007,2008   Alex Shulgin
- *
- * This file is part of png++ the C++ wrapper for libpng.  PNG++ is free
- * software; the exact copying conditions are as follows:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <iostream>
-#include <ostream>
-
-#include <png.hpp>
-
-void
-print_usage()
-{
-    std::cerr << "usage: convert_color_space RGB|RGBA|GRAY|GA 8|16"
-              << " INFILE OUTFILE" << std::endl;
-}
-
-int
-main(int argc, char* argv[])
-try
-{
-    if (argc != 5)
-    {
-        print_usage();
-        return EXIT_FAILURE;
-    }
-    char const* space = argv[1];
-    int bits = atoi(argv[2]);
-    char const* infile = argv[3];
-    char const* outfile = argv[4];
-
-    if (bits != 8 && bits != 16)
-    {
-        print_usage();
-        return EXIT_FAILURE;
-    }
-    if (strcmp(space, "RGB") == 0)
-    {
-        if (bits == 16)
-        {
-            png::image< png::rgb_pixel_16 > image(infile);
-            image.write(outfile);
-        }
-        else
-        {
-            png::image< png::rgb_pixel > image(infile);
-            image.write(outfile);
-        }
-    }
-    else if (strcmp(space, "RGBA") == 0)
-    {
-        if (bits == 16)
-        {
-            png::image< png::rgba_pixel_16 > image(infile);
-            image.write(outfile);
-        }
-        else
-        {
-            png::image< png::rgba_pixel > image(infile);
-            image.write(outfile);
-        }
-    }
-    else if (strcmp(space, "GRAY") == 0)
-    {
-        if (bits == 16)
-        {
-            png::image< png::gray_pixel_16 > image(infile);
-            image.write(outfile);
-        }
-        else
-        {
-            png::image< png::gray_pixel > image(infile);
-            image.write(outfile);
-        }
-    }
-    else if (strcmp(space, "GA") == 0)
-    {
-        if (bits == 16)
-        {
-            png::ga_pixel_16 ga(1); // test alpha_pixel_traits
-
-            png::image< png::ga_pixel_16 > image(infile);
-            image.write(outfile);
-        }
-        else
-        {
-            png::ga_pixel ga(1); // test alpha_pixel_traits
-
-            png::image< png::ga_pixel > image(infile);
-            image.write(outfile);
-        }
-    }
-    else
-    {
-        print_usage();
-        return EXIT_FAILURE;
-    }
-}
-catch (std::exception const& error)
-{
-    std::cerr << "convert_color_space: " << error.what() << std::endl;
-    return EXIT_FAILURE;
-}
diff --git a/_tools/code_generators/libs/png++/test/dump.cpp b/_tools/code_generators/libs/png++/test/dump.cpp
deleted file mode 100644
index 038ab6d..0000000
--- a/_tools/code_generators/libs/png++/test/dump.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <iostream>
-#include <ostream>
-
-#include <png.hpp>
-
-// inline png::uint_16
-// to_png_order(png::uint_16 x)
-// {
-//     return ((x & 0xff) << 8) | (x >> 8);
-// }
-
-int
-main(int argc, char* argv[])
-try
-{
-    if (argc != 2)
-    {
-        throw std::runtime_error("usage: dump PNG");
-    }
-    char const* file = argv[1];
-    png::image< png::gray_pixel_16 > image(file);
-    for (size_t y = 0; y < image.get_height(); ++y)
-    {
-        for (size_t x = 0; x < image.get_width(); ++x)
-        {
-            if (x)
-            {
-                putchar(' ');
-            }
-            printf("%04x", image[y][x]);
-        }
-        putchar('\n');
-    }
-}
-catch (std::exception const& error)
-{
-    std::cerr << "dump: " << error.what() << std::endl;
-    return EXIT_FAILURE;
-}
diff --git a/_tools/code_generators/libs/png++/test/generate_gray_packed.cpp b/_tools/code_generators/libs/png++/test/generate_gray_packed.cpp
deleted file mode 100644
index d2106e7..0000000
--- a/_tools/code_generators/libs/png++/test/generate_gray_packed.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2007,2008   Alex Shulgin
- *
- * This file is part of png++ the C++ wrapper for libpng.  PNG++ is free
- * software; the exact copying conditions are as follows:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <iostream>
-#include <ostream>
-
-#include <png.hpp>
-
-template< class pixel >
-void
-generate_image(png::image< pixel >& image, char const* filename)
-{
-    for (size_t j = 0; j < image.get_height(); ++j)
-    {
-        for (size_t i = 0; i < image.get_width(); ++i)
-        {
-            image.set_pixel(i, j, pixel(i + j));
-        }
-    }
-    image.write(filename);
-}
-
-int
-main(int argc, char* argv[])
-try
-{
-    size_t const width = 32;
-    size_t const height = 32;
-
-    png::image< png::gray_pixel_1 > image1(width, height);
-    generate_image(image1, "gray_packed_1.png.out");
-
-    png::image< png::gray_pixel_2 > image2(width, height);
-    generate_image(image2, "gray_packed_2.png.out");
-
-    png::image< png::gray_pixel_4 > image4(width, height);
-    generate_image(image4, "gray_packed_4.png.out");
-}
-catch (std::exception const& error)
-{
-    std::cerr << "generate_gray_packed: " << error.what() << std::endl;
-    return EXIT_FAILURE;
-}
diff --git a/_tools/code_generators/libs/png++/test/generate_palette.cpp b/_tools/code_generators/libs/png++/test/generate_palette.cpp
deleted file mode 100644
index 4fb9f97..0000000
--- a/_tools/code_generators/libs/png++/test/generate_palette.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2007,2008   Alex Shulgin
- *
- * This file is part of png++ the C++ wrapper for libpng.  PNG++ is free
- * software; the exact copying conditions are as follows:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <iostream>
-#include <ostream>
-
-#include <png.hpp>
-
-template< typename pixel >
-void
-generate_image(png::image< pixel >& image)
-{
-    typedef png::pixel_traits< pixel > traits;
-    size_t colors = 1 << traits::get_bit_depth();
-    size_t size = colors / 2; 
-    image.resize(size, size);
-
-    png::palette palette(colors);
-    for (size_t c = 0; c < colors; ++c)
-    {
-        palette[c] = png::color(c * 255 / colors,
-                                (colors - c - 1) * 255 / colors,
-                                c * 255 / colors);
-    }
-    image.set_palette(palette);
-    for (size_t j = 0; j < image.get_height(); ++j)
-    {
-        for (size_t i = 0; i < image.get_width(); ++i)
-        {
-            image.set_pixel(i, j, i + j);
-        }
-    }
-}
-
-int
-main()
-try
-{
-    png::image< png::index_pixel_1 > image1;
-    generate_image(image1);
-    image1.write("palette1.png.out");
-
-    png::image< png::index_pixel_2 > image2;
-    generate_image(image2);
-    image2.write("palette2.png.out");
-
-    png::image< png::index_pixel_4 > image4;
-    generate_image(image4);
-    image4.write("palette4.png.out");
-
-    png::image< png::index_pixel > image8;
-    generate_image(image8);
-    image8.write("palette8.png.out");
-
-    png::image< png::index_pixel > image8_tRNS;
-    generate_image(image8_tRNS);
-    png::tRNS trns(256);
-    for (size_t i = 0; i < trns.size(); ++i)
-    {
-        trns[i] = i;
-    }
-    image8_tRNS.set_tRNS(trns);
-    image8_tRNS.write("palette8_tRNS.png.out");
-}
-catch (std::exception const& error)
-{
-    std::cerr << "generate_palette: " << error.what() << std::endl;
-    return EXIT_FAILURE;
-}
diff --git a/_tools/code_generators/libs/png++/test/interlace.png b/_tools/code_generators/libs/png++/test/interlace.png
deleted file mode 100644
index 8a3f4a9d97036598c0a572b59a1128d7ce668b82..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 393
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$#%}q$rVI=WoCO|{#S9GG!XV7ZFl&wk
z0|NtliKnkC`*k*U4ox*r1%?I&21X4}7sn8f<69^1-PEig&}yHq<B@I^?HzxZ{ruu1
z?i0?H++jNGz_3|*r?s_T!ufvngy%B+eeWti=n0FliS0MoaNv@y_8d!{X9s5T_f>D2
zw7v7^!Tcu8O3D4A{F8L=-+k64_hrqLEFC_#8J`aRFpKBjE#GWddw1&wX|`m=_S+ja
zDAvr1+P8;?r(n7O--?zA4(B;pGkODBpS9>;n4!@0D}B55Rm%&>7q48{ta+hey0wg9
z3*X26DWVyj&UJiYjdtZL=57gHkj?kJ{G`@}oy||SMX_3yO^C~Xui$$4!p^zk?(a?h
z=We;*zo#ev>i1=n+oabDt6a(z7FiOly22~o|AXr<FQ$oK@;OB=-D1hgtZb5Bs>-S7
uIbS_PA=dkXkCp$02rIu2`j__oXV`ap(Qjq-JuVCk3=E#GelF{r5}E)m8k{cx

diff --git a/_tools/code_generators/libs/png++/test/read_write_gray_packed.cpp b/_tools/code_generators/libs/png++/test/read_write_gray_packed.cpp
deleted file mode 100644
index 1f51c54..0000000
--- a/_tools/code_generators/libs/png++/test/read_write_gray_packed.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2007,2008   Alex Shulgin
- *
- * This file is part of png++ the C++ wrapper for libpng.  PNG++ is free
- * software; the exact copying conditions are as follows:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <iostream>
-#include <ostream>
-
-#include <png.hpp>
-
-void
-print_usage()
-{
-    std::cerr << "usage: read_write_gray_packed 1|2|4 INFILE OUTFILE"
-              << std::endl;
-}
-
-template< class pixel >
-void
-test_image(char const* infile, char const* outfile)
-{
-    png::image< pixel > image(infile, png::require_color_space< pixel >());
-    image.write(outfile);
-}
-
-int
-main(int argc, char* argv[])
-try
-{
-    if (argc != 4)
-    {
-        print_usage();
-        return EXIT_FAILURE;
-    }
-    char const* bits = argv[1];
-    char const* infile = argv[2];
-    char const* outfile = argv[3];
-
-    if (strcmp(bits, "1") == 0)
-    {
-        test_image< png::gray_pixel_1 >(infile, outfile);
-    }
-    else if (strcmp(bits, "2") == 0)
-    {
-        test_image< png::gray_pixel_2 >(infile, outfile);
-    }
-    else if (strcmp(bits, "4") == 0)
-    {
-        test_image< png::gray_pixel_4 >(infile, outfile);
-    }
-    else
-    {
-        print_usage();
-        return EXIT_FAILURE;
-    }
-}
-catch (std::exception const& error)
-{
-    std::cerr << "read_write_gray_packed: " << error.what() << std::endl;
-    return EXIT_FAILURE;
-}
diff --git a/_tools/code_generators/libs/png++/test/read_write_param.cpp b/_tools/code_generators/libs/png++/test/read_write_param.cpp
deleted file mode 100644
index c755f4d..0000000
--- a/_tools/code_generators/libs/png++/test/read_write_param.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <iostream>
-#include <ostream>
-
-#include <png.hpp>
-
-int
-main()
-{
-    std::cerr << "read_write_param: do not run this test--it's compile-only"
-              << std::endl;
-    exit(1);
-
-    typedef png::image< png::rgb_pixel > image;
-    image image1;               // default contructor
-    image image2("test2.png");  // char const*
-    char test3[] = "test3.png"; // char*
-    image image3(test3); 
-    image image4(std::string("test4.png"));
-
-    image1.write("test4.png");  // char const*
-    char test5[] = "test5.png";
-    image1.write(test5);        // char*
-    image1.write(std::string("test6.png"));
-}
diff --git a/_tools/code_generators/libs/png++/test/test.sh b/_tools/code_generators/libs/png++/test/test.sh
deleted file mode 100644
index 9329b0a..0000000
--- a/_tools/code_generators/libs/png++/test/test.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/sh
-
-status=0
-
-for i in *.png; do
-    for j in RGB RGBA GRAY GA; do
-	for k in 8 16; do
-	    out=$i.$j.$k.out
-	    echo ./convert_color_space $j $k $i $out
-	    ./convert_color_space $j $k $i $out && cmp $out cmp/$out \
-	    || status=1
-	done;
-    done;
-done
-
-echo ./generate_gray_packed
-./generate_gray_packed || status=1
-for i in 1 2 4; do
-    out=gray_packed_$i.png.out
-    cmp $out cmp/$out || status=1
-done
-
-for i in 1 2 4; do
-    in=basn0g0$i.png
-    out=$in.out
-    echo ./read_write_gray_packed $i $in $out
-    ./read_write_gray_packed $i $in $out && cmp $out cmp/$out || status=1
-done
-
-echo ./generate_palette
-./generate_palette || status=1
-for i in 1 2 4 8; do
-    out=palette$i.png.out
-    cmp $out cmp/$out || status=1
-done
-cmp palette8_tRNS.png.out cmp/palette8_tRNS.png.out || status=1
-
-echo ./write_gray_16
-./write_gray_16 && cmp gray_16.out cmp/gray_16.out || status=1
-
-test $status -eq 0 && echo 'PNG++ PASSES TESTS' || echo 'PNG++ FAILS TESTS'
-exit $status
diff --git a/_tools/code_generators/libs/png++/test/write_gray_16.cpp b/_tools/code_generators/libs/png++/test/write_gray_16.cpp
deleted file mode 100644
index 6c7f922..0000000
--- a/_tools/code_generators/libs/png++/test/write_gray_16.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2007,2008   Alex Shulgin
- *
- * This file is part of png++ the C++ wrapper for libpng.  PNG++ is free
- * software; the exact copying conditions are as follows:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <iostream>
-#include <ostream>
-
-#include <png.hpp>
-
-int
-main()
-try
-{
-    png::image< png::gray_pixel_16 > image(256, 256);
-    for (size_t y = 0; y < image.get_height(); ++y)
-    {
-        for (size_t x = 0; x < image.get_width(); ++x)
-        {
-            png::gray_pixel_16 pix = x*y;
-            image[y][x] = pix;
-        }
-    }
-    image.write("gray_16.out");
-}
-catch (std::exception const& error)
-{
-    std::cerr << "write_gray_16: " << error.what() << std::endl;
-    return EXIT_FAILURE;
-}
diff --git a/_tools/code_generators/libs/png++/writer.hpp b/_tools/code_generators/libs/png++/writer.hpp
index 05e28e8..448dfd5 100644
--- a/_tools/code_generators/libs/png++/writer.hpp
+++ b/_tools/code_generators/libs/png++/writer.hpp
@@ -88,7 +88,7 @@ namespace png
 
         void write_png() const
         {
-            if (setjmp(m_png->jmpbuf))
+            if (setjmp(png_jmpbuf(m_png)))
             {
                 throw error(m_error);
             }
@@ -103,7 +103,7 @@ namespace png
          */
         void write_info() const
         {
-            if (setjmp(m_png->jmpbuf))
+            if (setjmp(png_jmpbuf(m_png)))
             {
                 throw error(m_error);
             }
@@ -115,7 +115,7 @@ namespace png
          */
         void write_row(byte* bytes)
         {
-            if (setjmp(m_png->jmpbuf))
+            if (setjmp(png_jmpbuf(m_png)))
             {
                 throw error(m_error);
             }
@@ -127,7 +127,7 @@ namespace png
          */
         void write_end_info() const
         {
-            if (setjmp(m_png->jmpbuf))
+            if (setjmp(png_jmpbuf(m_png)))
             {
                 throw error(m_error);
             }
@@ -135,7 +135,7 @@ namespace png
         }
 
     private:
-        static void write_data(png_struct* png, byte* data, size_t length)
+        static void write_data(png_struct* png, byte* data, png_size_t length)
         {
             io_base* io = static_cast< io_base* >(png_get_error_ptr(png));
             writer* wr = static_cast< writer* >(io);
-- 
GitLab