From 64f38bf58812f0c660d51fb231230e96b122982c Mon Sep 17 00:00:00 2001
From: Logan Aerl Arias <logana@srb2.org>
Date: Sat, 10 Feb 2024 22:09:28 -0500
Subject: [PATCH] update zlib to v1.3.1

update zlib to v1.3.1
---
 libs/zlib/CMakeLists.txt                      |   83 +-
 libs/zlib/ChangeLog                           |  215 +-
 libs/zlib/FAQ                                 |    5 +-
 libs/zlib/LICENSE                             |   22 +
 libs/zlib/Makefile.in                         |   54 +-
 libs/zlib/README                              |   24 +-
 libs/zlib/adler32.c                           |   32 +-
 libs/zlib/compress.c                          |   21 +-
 libs/zlib/configure                           |  164 +-
 libs/zlib/contrib/README.contrib              |   23 +-
 libs/zlib/contrib/ada/readme.txt              |    4 +-
 libs/zlib/contrib/ada/test.adb                |    4 +-
 libs/zlib/contrib/ada/zlib-streams.ads        |    2 +-
 libs/zlib/contrib/ada/zlib.adb                |    2 +-
 libs/zlib/contrib/ada/zlib.ads                |    2 +-
 libs/zlib/contrib/amd64/amd64-match.S         |  452 -
 libs/zlib/contrib/asm686/README.686           |   51 -
 libs/zlib/contrib/asm686/match.S              |  357 -
 libs/zlib/contrib/blast/blast.h               |    2 +-
 libs/zlib/contrib/delphi/ZLib.pas             |    2 +-
 .../contrib/dotzlib/DotZLib/ChecksumImpl.cs   |    4 +-
 .../zlib/contrib/dotzlib/DotZLib/CodecBase.cs |    4 +-
 .../contrib/dotzlib/DotZLib/GZipStream.cs     |    6 +-
 .../zlib/contrib/dotzlib/DotZLib/UnitTests.cs |    2 +-
 libs/zlib/contrib/dotzlib/readme.txt          |    2 +-
 libs/zlib/contrib/infback9/infback9.c         |   24 +-
 libs/zlib/contrib/infback9/infback9.h         |   16 +-
 libs/zlib/contrib/infback9/inftree9.c         |   17 +-
 libs/zlib/contrib/infback9/inftree9.h         |   12 +-
 libs/zlib/contrib/inflate86/inffas86.c        | 1157 --
 libs/zlib/contrib/inflate86/inffast.S         | 1368 ---
 libs/zlib/contrib/iostream3/zfstream.h        |    4 +-
 libs/zlib/contrib/masmx64/bld_ml64.bat        |    2 -
 libs/zlib/contrib/masmx64/gvmat64.asm         |  553 -
 libs/zlib/contrib/masmx64/inffas8664.c        |  186 -
 libs/zlib/contrib/masmx64/inffasx64.asm       |  396 -
 libs/zlib/contrib/masmx64/readme.txt          |   31 -
 libs/zlib/contrib/masmx86/bld_ml32.bat        |    2 -
 libs/zlib/contrib/masmx86/inffas32.asm        | 1080 --
 libs/zlib/contrib/masmx86/match686.asm        |  479 -
 libs/zlib/contrib/masmx86/readme.txt          |   27 -
 libs/zlib/contrib/minizip/Makefile            |   14 +-
 .../contrib/minizip/MiniZip64_Changes.txt     |    2 +-
 libs/zlib/contrib/minizip/configure.ac        |    2 +-
 libs/zlib/contrib/minizip/crypt.h             |   29 +-
 libs/zlib/contrib/minizip/ioapi.c             |   78 +-
 libs/zlib/contrib/minizip/ioapi.h             |   46 +-
 libs/zlib/contrib/minizip/iowin32.c           |   70 +-
 libs/zlib/contrib/minizip/iowin32.h           |    8 +-
 libs/zlib/contrib/minizip/miniunz.c           |  103 +-
 libs/zlib/contrib/minizip/minizip.c           |   87 +-
 libs/zlib/contrib/minizip/mztools.c           |    8 +-
 libs/zlib/contrib/minizip/unzip.c             |  552 +-
 libs/zlib/contrib/minizip/unzip.h             |  150 +-
 libs/zlib/contrib/minizip/zip.c               |  367 +-
 libs/zlib/contrib/minizip/zip.h               |  310 +-
 libs/zlib/contrib/nuget/nuget.csproj          |   43 +
 libs/zlib/contrib/nuget/nuget.sln             |   22 +
 libs/zlib/contrib/pascal/zlibpas.pas          |    2 +-
 libs/zlib/contrib/puff/README                 |    2 +-
 libs/zlib/contrib/puff/puff.c                 |   12 +-
 libs/zlib/contrib/puff/pufftest.c             |    2 +-
 libs/zlib/contrib/testzlib/testzlib.c         |    2 +-
 libs/zlib/contrib/untgz/untgz.c               |   63 +-
 libs/zlib/contrib/vstudio/readme.txt          |   13 +-
 .../vstudio/vc10/miniunz.vcxproj.filters      |    2 +-
 .../contrib/vstudio/vc10/miniunz.vcxproj.user |    3 -
 .../vstudio/vc10/minizip.vcxproj.filters      |    2 +-
 .../contrib/vstudio/vc10/minizip.vcxproj.user |    3 -
 .../contrib/vstudio/vc10/testzlib.vcxproj     |   24 +-
 .../vstudio/vc10/testzlib.vcxproj.filters     |    5 +-
 .../vstudio/vc10/testzlib.vcxproj.user        |    3 -
 .../vstudio/vc10/testzlibdll.vcxproj.filters  |    2 +-
 .../vstudio/vc10/testzlibdll.vcxproj.user     |    3 -
 libs/zlib/contrib/vstudio/vc10/zlib.rc        |    8 +-
 .../contrib/vstudio/vc10/zlibstat.vcxproj     |   50 +-
 .../vstudio/vc10/zlibstat.vcxproj.filters     |    3 -
 .../vstudio/vc10/zlibstat.vcxproj.user        |    3 -
 libs/zlib/contrib/vstudio/vc10/zlibvc.def     |    7 +-
 libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj |   58 +-
 .../vstudio/vc10/zlibvc.vcxproj.filters       |    3 -
 .../contrib/vstudio/vc10/zlibvc.vcxproj.user  |    3 -
 .../contrib/vstudio/vc11/testzlib.vcxproj     |   24 +-
 libs/zlib/contrib/vstudio/vc11/zlib.rc        |    8 +-
 .../contrib/vstudio/vc11/zlibstat.vcxproj     |   34 +-
 libs/zlib/contrib/vstudio/vc11/zlibvc.def     |    7 +-
 libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj |   58 +-
 .../contrib/vstudio/vc12/testzlib.vcxproj     |   24 +-
 libs/zlib/contrib/vstudio/vc12/zlib.rc        |    8 +-
 .../contrib/vstudio/vc12/zlibstat.vcxproj     |   34 +-
 libs/zlib/contrib/vstudio/vc12/zlibvc.def     |    7 +-
 libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj |   58 +-
 .../contrib/vstudio/vc14/testzlib.vcxproj     |   24 +-
 libs/zlib/contrib/vstudio/vc14/zlib.rc        |    8 +-
 .../contrib/vstudio/vc14/zlibstat.vcxproj     |   34 +-
 libs/zlib/contrib/vstudio/vc14/zlibvc.def     |    7 +-
 libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj |   58 +-
 .../zlib/contrib/vstudio/vc17/miniunz.vcxproj |  409 +
 .../zlib/contrib/vstudio/vc17/minizip.vcxproj |  405 +
 .../contrib/vstudio/vc17/testzlib.vcxproj     |  473 +
 .../contrib/vstudio/vc17/testzlibdll.vcxproj  |  409 +
 .../contrib/vstudio/{vc8 => vc17}/zlib.rc     |   12 +-
 .../contrib/vstudio/vc17/zlibstat.vcxproj     |  602 +
 .../contrib/vstudio/{vc8 => vc17}/zlibvc.def  |   72 +-
 libs/zlib/contrib/vstudio/vc17/zlibvc.sln     |  179 +
 libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj |  875 ++
 libs/zlib/contrib/vstudio/vc7/miniunz.vcproj  |  126 -
 libs/zlib/contrib/vstudio/vc7/minizip.vcproj  |  126 -
 libs/zlib/contrib/vstudio/vc7/testzlib.vcproj |  126 -
 libs/zlib/contrib/vstudio/vc7/zlib.rc         |   32 -
 libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj |  246 -
 libs/zlib/contrib/vstudio/vc7/zlibvc.def      |   92 -
 libs/zlib/contrib/vstudio/vc7/zlibvc.sln      |   78 -
 libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj   |  445 -
 libs/zlib/contrib/vstudio/vc8/miniunz.vcproj  |  566 -
 libs/zlib/contrib/vstudio/vc8/minizip.vcproj  |  563 -
 libs/zlib/contrib/vstudio/vc8/testzlib.vcproj |  948 --
 .../contrib/vstudio/vc8/testzlibdll.vcproj    |  567 -
 libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj |  870 --
 libs/zlib/contrib/vstudio/vc8/zlibvc.sln      |  144 -
 libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj   | 1219 --
 libs/zlib/contrib/vstudio/vc9/miniunz.vcproj  |    2 +-
 libs/zlib/contrib/vstudio/vc9/minizip.vcproj  |    2 +-
 libs/zlib/contrib/vstudio/vc9/testzlib.vcproj |   66 +-
 .../contrib/vstudio/vc9/testzlibdll.vcproj    |    2 +-
 libs/zlib/contrib/vstudio/vc9/zlib.rc         |    8 +-
 libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj |   76 +-
 libs/zlib/contrib/vstudio/vc9/zlibvc.def      |    7 +-
 libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj   |   82 +-
 libs/zlib/crc32.c                             | 1253 ++-
 libs/zlib/crc32.h                             | 9877 ++++++++++++++++-
 libs/zlib/deflate.c                           |  880 +-
 libs/zlib/deflate.h                           |   74 +-
 libs/zlib/doc/algorithm.txt                   |    2 +-
 libs/zlib/doc/crc-doc.1.0.pdf                 |  Bin 0 -> 776142 bytes
 libs/zlib/doc/txtvsbin.txt                    |   12 +-
 libs/zlib/examples/README.examples            |    5 +
 libs/zlib/examples/enough.c                   |  745 +-
 libs/zlib/examples/fitblk.c                   |    6 +-
 libs/zlib/examples/gun.c                      |    2 +-
 libs/zlib/examples/gzappend.c                 |    6 +-
 libs/zlib/examples/gzlog.c                    |   10 +-
 libs/zlib/examples/gzlog.h                    |    2 +-
 libs/zlib/examples/gznorm.c                   |  470 +
 libs/zlib/examples/zlib_how.html              |   26 +-
 libs/zlib/examples/zran.c                     |  740 +-
 libs/zlib/examples/zran.h                     |   51 +
 libs/zlib/gzclose.c                           |    4 +-
 libs/zlib/gzguts.h                            |   34 +-
 libs/zlib/gzlib.c                             |  119 +-
 libs/zlib/gzread.c                            |  108 +-
 libs/zlib/gzwrite.c                           |  118 +-
 libs/zlib/infback.c                           |   50 +-
 libs/zlib/inffast.c                           |   33 +-
 libs/zlib/inffast.h                           |    2 +-
 libs/zlib/inflate.c                           |  185 +-
 libs/zlib/inflate.h                           |    5 +-
 libs/zlib/inftrees.c                          |   17 +-
 libs/zlib/inftrees.h                          |   12 +-
 libs/zlib/make_vms.com                        |    4 +-
 libs/zlib/old/as400/bndsrc                    |  132 -
 libs/zlib/old/as400/compile.clp               |  123 -
 libs/zlib/old/as400/readme.txt                |  111 -
 libs/zlib/old/as400/zlib.inc                  |  331 -
 libs/zlib/old/visual-basic.txt                |    2 +-
 libs/zlib/old/visualc6/README.txt             |   73 -
 libs/zlib/old/visualc6/example.dsp            |  278 -
 libs/zlib/old/visualc6/minigzip.dsp           |  278 -
 libs/zlib/old/visualc6/zlib.dsp               |  621 --
 libs/zlib/old/visualc6/zlib.dsw               |   59 -
 libs/zlib/os400/README400                     |    6 +-
 libs/zlib/os400/bndsrc                        |    8 +
 libs/zlib/os400/zlib.inc                      |    8 +-
 libs/zlib/projects/README.projects            |   41 -
 libs/zlib/projects/visualc10/.gitignore       |    5 -
 libs/zlib/projects/visualc10/zlib.vcxproj     |  619 --
 libs/zlib/projects/visualc6/README.txt        |   73 -
 libs/zlib/projects/visualc6/example.dsp       |  278 -
 libs/zlib/projects/visualc6/minigzip.dsp      |  278 -
 libs/zlib/projects/visualc6/zlib.dsp          |  283 -
 libs/zlib/projects/visualc6/zlib.dsw          |   59 -
 libs/zlib/projects/visualc9/.gitignore        |    3 -
 libs/zlib/projects/visualc9/zlib.vcproj       | 1056 --
 libs/zlib/qnx/package.qpg                     |   10 +-
 libs/zlib/test/example.c                      |  112 +-
 libs/zlib/test/infcover.c                     |    5 +-
 libs/zlib/test/minigzip.c                     |  176 +-
 libs/zlib/treebuild.xml                       |    4 +-
 libs/zlib/trees.c                             |  674 +-
 libs/zlib/uncompr.c                           |   16 +-
 libs/zlib/win32/DLL_FAQ.txt                   |   20 +-
 libs/zlib/win32/Makefile.bor                  |    1 -
 libs/zlib/win32/Makefile.emx                  |   69 -
 libs/zlib/win32/Makefile.gcc                  |    5 -
 libs/zlib/win32/Makefile.msc                  |    4 -
 libs/zlib/win32/README-WIN32.txt              |    8 +-
 libs/zlib/win32/libz32.a                      |  Bin 117602 -> 0 bytes
 libs/zlib/win32/libz64.a                      |  Bin 130026 -> 0 bytes
 libs/zlib/win32/zlib.def                      |    3 +
 libs/zlib/win32/zlib1.rc                      |    2 +-
 libs/zlib/zconf.h                             |   39 +-
 libs/zlib/zconf.h.cmakein                     |   37 +-
 libs/zlib/zconf.h.in                          |   37 +-
 libs/zlib/zlib.3                              |    6 +-
 libs/zlib/zlib.3.pdf                          |  Bin 19318 -> 25523 bytes
 libs/zlib/zlib.h                              |  594 +-
 libs/zlib/zlib.map                            |    6 +
 libs/zlib/zlib2ansi                           |  152 -
 libs/zlib/zutil.c                             |   66 +-
 libs/zlib/zutil.h                             |   65 +-
 thirdparty/cpm-zlib.cmake                     |   59 +-
 211 files changed, 18286 insertions(+), 22745 deletions(-)
 create mode 100644 libs/zlib/LICENSE
 delete mode 100644 libs/zlib/contrib/amd64/amd64-match.S
 delete mode 100644 libs/zlib/contrib/asm686/README.686
 delete mode 100644 libs/zlib/contrib/asm686/match.S
 delete mode 100644 libs/zlib/contrib/inflate86/inffas86.c
 delete mode 100644 libs/zlib/contrib/inflate86/inffast.S
 delete mode 100644 libs/zlib/contrib/masmx64/bld_ml64.bat
 delete mode 100644 libs/zlib/contrib/masmx64/gvmat64.asm
 delete mode 100644 libs/zlib/contrib/masmx64/inffas8664.c
 delete mode 100644 libs/zlib/contrib/masmx64/inffasx64.asm
 delete mode 100644 libs/zlib/contrib/masmx64/readme.txt
 delete mode 100644 libs/zlib/contrib/masmx86/bld_ml32.bat
 delete mode 100644 libs/zlib/contrib/masmx86/inffas32.asm
 delete mode 100644 libs/zlib/contrib/masmx86/match686.asm
 delete mode 100644 libs/zlib/contrib/masmx86/readme.txt
 create mode 100644 libs/zlib/contrib/nuget/nuget.csproj
 create mode 100644 libs/zlib/contrib/nuget/nuget.sln
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user
 create mode 100644 libs/zlib/contrib/vstudio/vc17/miniunz.vcxproj
 create mode 100644 libs/zlib/contrib/vstudio/vc17/minizip.vcxproj
 create mode 100644 libs/zlib/contrib/vstudio/vc17/testzlib.vcxproj
 create mode 100644 libs/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj
 rename libs/zlib/contrib/vstudio/{vc8 => vc17}/zlib.rc (68%)
 create mode 100644 libs/zlib/contrib/vstudio/vc17/zlibstat.vcxproj
 rename libs/zlib/contrib/vstudio/{vc8 => vc17}/zlibvc.def (60%)
 create mode 100644 libs/zlib/contrib/vstudio/vc17/zlibvc.sln
 create mode 100644 libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/miniunz.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/minizip.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/testzlib.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlib.rc
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlibvc.def
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlibvc.sln
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/miniunz.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/minizip.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/testzlib.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/testzlibdll.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/zlibvc.sln
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj
 create mode 100644 libs/zlib/doc/crc-doc.1.0.pdf
 create mode 100644 libs/zlib/examples/gznorm.c
 create mode 100644 libs/zlib/examples/zran.h
 delete mode 100644 libs/zlib/old/as400/bndsrc
 delete mode 100644 libs/zlib/old/as400/compile.clp
 delete mode 100644 libs/zlib/old/as400/readme.txt
 delete mode 100644 libs/zlib/old/as400/zlib.inc
 delete mode 100644 libs/zlib/old/visualc6/README.txt
 delete mode 100644 libs/zlib/old/visualc6/example.dsp
 delete mode 100644 libs/zlib/old/visualc6/minigzip.dsp
 delete mode 100644 libs/zlib/old/visualc6/zlib.dsp
 delete mode 100644 libs/zlib/old/visualc6/zlib.dsw
 delete mode 100644 libs/zlib/projects/README.projects
 delete mode 100644 libs/zlib/projects/visualc10/.gitignore
 delete mode 100644 libs/zlib/projects/visualc10/zlib.vcxproj
 delete mode 100644 libs/zlib/projects/visualc6/README.txt
 delete mode 100644 libs/zlib/projects/visualc6/example.dsp
 delete mode 100644 libs/zlib/projects/visualc6/minigzip.dsp
 delete mode 100644 libs/zlib/projects/visualc6/zlib.dsp
 delete mode 100644 libs/zlib/projects/visualc6/zlib.dsw
 delete mode 100644 libs/zlib/projects/visualc9/.gitignore
 delete mode 100644 libs/zlib/projects/visualc9/zlib.vcproj
 delete mode 100644 libs/zlib/win32/Makefile.emx
 delete mode 100644 libs/zlib/win32/libz32.a
 delete mode 100644 libs/zlib/win32/libz64.a
 delete mode 100755 libs/zlib/zlib2ansi

diff --git a/libs/zlib/CMakeLists.txt b/libs/zlib/CMakeLists.txt
index 0fe939df68..15ceebe787 100644
--- a/libs/zlib/CMakeLists.txt
+++ b/libs/zlib/CMakeLists.txt
@@ -1,12 +1,11 @@
-cmake_minimum_required(VERSION 2.4.4)
+cmake_minimum_required(VERSION 2.4.4...3.15.0)
 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
 
 project(zlib C)
 
-set(VERSION "1.2.11")
+set(VERSION "1.3.1")
 
-option(ASM686 "Enable building i686 assembly implementation")
-option(AMD64 "Enable building amd64 assembly implementation")
+option(ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" ON)
 
 set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
 set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
@@ -129,39 +128,6 @@ if(NOT MINGW)
     )
 endif()
 
-if(CMAKE_COMPILER_IS_GNUCC)
-    if(ASM686)
-        set(ZLIB_ASMS contrib/asm686/match.S)
-    elseif (AMD64)
-        set(ZLIB_ASMS contrib/amd64/amd64-match.S)
-    endif ()
-
-	if(ZLIB_ASMS)
-		add_definitions(-DASMV)
-		set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
-	endif()
-endif()
-
-if(MSVC)
-    if(ASM686)
-		ENABLE_LANGUAGE(ASM_MASM)
-        set(ZLIB_ASMS
-			contrib/masmx86/inffas32.asm
-			contrib/masmx86/match686.asm
-		)
-    elseif (AMD64)
-		ENABLE_LANGUAGE(ASM_MASM)
-        set(ZLIB_ASMS
-			contrib/masmx64/gvmat64.asm
-			contrib/masmx64/inffasx64.asm
-		)
-    endif()
-
-	if(ZLIB_ASMS)
-		add_definitions(-DASMV -DASMINF)
-	endif()
-endif()
-
 # parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
 file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
 string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
@@ -183,8 +149,10 @@ if(MINGW)
     set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
 endif(MINGW)
 
-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
-add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+target_include_directories(zlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+target_include_directories(zlibstatic PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
 set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
 set_target_properties(zlib PROPERTIES SOVERSION 1)
 
@@ -202,7 +170,7 @@ endif()
 if(UNIX)
     # On unix-like platforms the library is almost always called libz
    set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
-   if(NOT APPLE)
+   if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX))
      set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
    endif()
 elseif(BUILD_SHARED_LIBS AND WIN32)
@@ -229,21 +197,22 @@ endif()
 #============================================================================
 # Example binaries
 #============================================================================
-
-add_executable(example test/example.c)
-target_link_libraries(example zlib)
-add_test(example example)
-
-add_executable(minigzip test/minigzip.c)
-target_link_libraries(minigzip zlib)
-
-if(HAVE_OFF64_T)
-    add_executable(example64 test/example.c)
-    target_link_libraries(example64 zlib)
-    set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
-    add_test(example64 example64)
-
-    add_executable(minigzip64 test/minigzip.c)
-    target_link_libraries(minigzip64 zlib)
-    set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+if(ZLIB_BUILD_EXAMPLES)
+    add_executable(example test/example.c)
+    target_link_libraries(example zlib)
+    add_test(example example)
+
+    add_executable(minigzip test/minigzip.c)
+    target_link_libraries(minigzip zlib)
+
+    if(HAVE_OFF64_T)
+        add_executable(example64 test/example.c)
+        target_link_libraries(example64 zlib)
+        set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+        add_test(example64 example64)
+
+        add_executable(minigzip64 test/minigzip.c)
+        target_link_libraries(minigzip64 zlib)
+        set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+    endif()
 endif()
diff --git a/libs/zlib/ChangeLog b/libs/zlib/ChangeLog
index 30199a65a0..b801a1031e 100644
--- a/libs/zlib/ChangeLog
+++ b/libs/zlib/ChangeLog
@@ -1,6 +1,109 @@
 
                 ChangeLog file for zlib
 
+Changes in 1.3.1 (22 Jan 2024)
+- Reject overflows of zip header fields in minizip
+- Fix bug in inflateSync() for data held in bit buffer
+- Add LIT_MEM define to use more memory for a small deflate speedup
+- Fix decision on the emission of Zip64 end records in minizip
+- Add bounds checking to ERR_MSG() macro, used by zError()
+- Neutralize zip file traversal attacks in miniunz
+- Fix a bug in ZLIB_DEBUG compiles in check_match()
+- Various portability and appearance improvements
+
+Changes in 1.3 (18 Aug 2023)
+- Remove K&R function definitions and zlib2ansi
+- Fix bug in deflateBound() for level 0 and memLevel 9
+- Fix bug when gzungetc() is used immediately after gzopen()
+- Fix bug when using gzflush() with a very small buffer
+- Fix crash when gzsetparams() attempted for transparent write
+- Fix test/example.c to work with FORCE_STORED
+- Rewrite of zran in examples (see zran.c version history)
+- Fix minizip to allow it to open an empty zip file
+- Fix reading disk number start on zip64 files in minizip
+- Fix logic error in minizip argument processing
+- Add minizip testing to Makefile
+- Read multiple bytes instead of byte-by-byte in minizip unzip.c
+- Add memory sanitizer to configure (--memory)
+- Various portability improvements
+- Various documentation improvements
+- Various spelling and typo corrections
+
+Changes in 1.2.13 (13 Oct 2022)
+- Fix configure issue that discarded provided CC definition
+- Correct incorrect inputs provided to the CRC functions
+- Repair prototypes and exporting of new CRC functions
+- Fix inflateBack to detect invalid input with distances too far
+- Have infback() deliver all of the available output up to any error
+- Fix a bug when getting a gzip header extra field with inflate()
+- Fix bug in block type selection when Z_FIXED used
+- Tighten deflateBound bounds
+- Remove deleted assembler code references
+- Various portability and appearance improvements
+
+Changes in 1.2.12 (27 Mar 2022)
+- Cygwin does not have _wopen(), so do not create gzopen_w() there
+- Permit a deflateParams() parameter change as soon as possible
+- Limit hash table inserts after switch from stored deflate
+- Fix bug when window full in deflate_stored()
+- Fix CLEAR_HASH macro to be usable as a single statement
+- Avoid a conversion error in gzseek when off_t type too small
+- Have Makefile return non-zero error code on test failure
+- Avoid some conversion warnings in gzread.c and gzwrite.c
+- Update use of errno for newer Windows CE versions
+- Small speedup to inflate [psumbera]
+- Return an error if the gzputs string length can't fit in an int
+- Add address checking in clang to -w option of configure
+- Don't compute check value for raw inflate if asked to validate
+- Handle case where inflateSync used when header never processed
+- Avoid the use of ptrdiff_t
+- Avoid an undefined behavior of memcpy() in gzappend()
+- Avoid undefined behaviors of memcpy() in gz*printf()
+- Avoid an undefined behavior of memcpy() in _tr_stored_block()
+- Make the names in functions declarations identical to definitions
+- Remove old assembler code in which bugs have manifested
+- Fix deflateEnd() to not report an error at start of raw deflate
+- Add legal disclaimer to README
+- Emphasize the need to continue decompressing gzip members
+- Correct the initialization requirements for deflateInit2()
+- Fix a bug that can crash deflate on some input when using Z_FIXED
+- Assure that the number of bits for deflatePrime() is valid
+- Use a structure to make globals in enough.c evident
+- Use a macro for the printf format of big_t in enough.c
+- Clean up code style in enough.c, update version
+- Use inline function instead of macro for index in enough.c
+- Clarify that prefix codes are counted in enough.c
+- Show all the codes for the maximum tables size in enough.c
+- Add gznorm.c example, which normalizes gzip files
+- Fix the zran.c example to work on a multiple-member gzip file
+- Add tables for crc32_combine(), to speed it up by a factor of 200
+- Add crc32_combine_gen() and crc32_combine_op() for fast combines
+- Speed up software CRC-32 computation by a factor of 1.5 to 3
+- Use atomic test and set, if available, for dynamic CRC tables
+- Don't bother computing check value after successful inflateSync()
+- Correct comment in crc32.c
+- Add use of the ARMv8 crc32 instructions when requested
+- Use ARM crc32 instructions if the ARM architecture has them
+- Explicitly note that the 32-bit check values are 32 bits
+- Avoid adding empty gzip member after gzflush with Z_FINISH
+- Fix memory leak on error in gzlog.c
+- Fix error in comment on the polynomial representation of a byte
+- Clarify gz* function interfaces, referring to parameter names
+- Change macro name in inflate.c to avoid collision in VxWorks
+- Correct typo in blast.c
+- Improve portability of contrib/minizip
+- Fix indentation in minizip's zip.c
+- Replace black/white with allow/block. (theresa-m)
+- minizip warning fix if MAXU32 already defined. (gvollant)
+- Fix unztell64() in minizip to work past 4GB. (Daniël Hörchner)
+- Clean up minizip to reduce warnings for testing
+- Add fallthrough comments for gcc
+- Eliminate use of ULL constants
+- Separate out address sanitizing from warnings in configure
+- Remove destructive aspects of make distclean
+- Check for cc masquerading as gcc or clang in configure
+- Fix crc32.c to compile local functions only if used
+
 Changes in 1.2.11 (15 Jan 2017)
 - Fix deflate stored bug when pulling last block from window
 - Permit immediate deflateParams changes before any deflate input
@@ -96,7 +199,7 @@ Changes in 1.2.7.1 (24 Mar 2013)
 - Fix types in contrib/minizip to match result of get_crc_table()
 - Simplify contrib/vstudio/vc10 with 'd' suffix
 - Add TOP support to win32/Makefile.msc
-- Suport i686 and amd64 assembler builds in CMakeLists.txt
+- Support i686 and amd64 assembler builds in CMakeLists.txt
 - Fix typos in the use of _LARGEFILE64_SOURCE in zconf.h
 - Add vc11 and vc12 build files to contrib/vstudio
 - Add gzvprintf() as an undocumented function in zlib
@@ -296,14 +399,14 @@ Changes in 1.2.5.1 (10 Sep 2011)
 - Use u4 type for crc_table to avoid conversion warnings
 - Apply casts in zlib.h to avoid conversion warnings
 - Add OF to prototypes for adler32_combine_ and crc32_combine_ [Miller]
-- Improve inflateSync() documentation to note indeterminancy
+- Improve inflateSync() documentation to note indeterminacy
 - Add deflatePending() function to return the amount of pending output
 - Correct the spelling of "specification" in FAQ [Randers-Pehrson]
 - Add a check in configure for stdarg.h, use for gzprintf()
 - Check that pointers fit in ints when gzprint() compiled old style
 - Add dummy name before $(SHAREDLIBV) in Makefile [Bar-Lev, Bowler]
 - Delete line in configure that adds -L. libz.a to LDFLAGS [Weigelt]
-- Add debug records in assmebler code [Londer]
+- Add debug records in assembler code [Londer]
 - Update RFC references to use http://tools.ietf.org/html/... [Li]
 - Add --archs option, use of libtool to configure for Mac OS X [Borstel]
 
@@ -511,7 +614,7 @@ Changes in 1.2.3.5 (8 Jan 2010)
 - Don't use _vsnprintf on later versions of MSVC [Lowman]
 - Add CMake build script and input file [Lowman]
 - Update contrib/minizip to 1.1 [Svensson, Vollant]
-- Moved nintendods directory from contrib to .
+- Moved nintendods directory from contrib to root
 - Replace gzio.c with a new set of routines with the same functionality
 - Add gzbuffer(), gzoffset(), gzclose_r(), gzclose_w() as part of above
 - Update contrib/minizip to 1.1b
@@ -685,7 +788,7 @@ Changes in 1.2.2.4 (11 July 2005)
 - Be more strict on incomplete code sets in inflate_table() and increase
   ENOUGH and MAXD -- this repairs a possible security vulnerability for
   invalid inflate input.  Thanks to Tavis Ormandy and Markus Oberhumer for
-  discovering the vulnerability and providing test cases.
+  discovering the vulnerability and providing test cases
 - Add ia64 support to configure for HP-UX [Smith]
 - Add error return to gzread() for format or i/o error [Levin]
 - Use malloc.h for OS/2 [Necasek]
@@ -721,7 +824,7 @@ Changes in 1.2.2.2 (30 December 2004)
 - Add Z_FIXED strategy option to deflateInit2() to force fixed trees
 - Add updated make_vms.com [Coghlan], update README
 - Create a new "examples" directory, move gzappend.c there, add zpipe.c,
-  fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html.
+  fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html
 - Add FAQ entry and comments in deflate.c on uninitialized memory access
 - Add Solaris 9 make options in configure [Gilbert]
 - Allow strerror() usage in gzio.c for STDC
@@ -792,7 +895,7 @@ Changes in 1.2.1.1 (9 January 2004)
 - Fix a big fat bug in inftrees.c that prevented decoding valid
   dynamic blocks with only literals and no distance codes --
   Thanks to "Hot Emu" for the bug report and sample file
-- Add a note to puff.c on no distance codes case.
+- Add a note to puff.c on no distance codes case
 
 Changes in 1.2.1 (17 November 2003)
 - Remove a tab in contrib/gzappend/gzappend.c
@@ -970,7 +1073,7 @@ Changes in 1.2.0.1 (17 March 2003)
     - Include additional header file on VMS for off_t typedef
 - Try to use _vsnprintf where it supplants vsprintf [Vollant]
 - Add some casts in inffast.c
-- Enchance comments in zlib.h on what happens if gzprintf() tries to
+- Enhance comments in zlib.h on what happens if gzprintf() tries to
   write more than 4095 bytes before compression
 - Remove unused state from inflateBackEnd()
 - Remove exit(0) from minigzip.c, example.c
@@ -1036,14 +1139,14 @@ Changes in 1.2.0 (9 March 2003)
 - Add contrib/puff/ simple inflate for deflate format description
 
 Changes in 1.1.4 (11 March 2002)
-- ZFREE was repeated on same allocation on some error conditions.
+- ZFREE was repeated on same allocation on some error conditions
   This creates a security problem described in
   http://www.zlib.org/advisory-2002-03-11.txt
 - Returned incorrect error (Z_MEM_ERROR) on some invalid data
 - Avoid accesses before window for invalid distances with inflate window
-  less than 32K.
+  less than 32K
 - force windowBits > 8 to avoid a bug in the encoder for a window size
-  of 256 bytes. (A complete fix will be available in 1.1.5).
+  of 256 bytes. (A complete fix will be available in 1.1.5)
 
 Changes in 1.1.3 (9 July 1998)
 - fix "an inflate input buffer bug that shows up on rare but persistent
@@ -1117,7 +1220,7 @@ Changes in 1.1.1 (27 Feb 98)
 - remove block truncation heuristic which had very marginal effect for zlib
   (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
   compression ratio on some files. This also allows inlining _tr_tally for
-  matches in deflate_slow.
+  matches in deflate_slow
 - added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
 
 Changes in 1.1.0 (24 Feb 98)
@@ -1148,7 +1251,7 @@ Changes in 1.0.9 (17 Feb 1998)
 - Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8
 - in inftrees.c, avoid cc -O bug on HP (Farshid Elahi)
 - in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with
-  the declaration of FAR (Gilles VOllant)
+  the declaration of FAR (Gilles Vollant)
 - install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann)
 - read_buf buf parameter of type Bytef* instead of charf*
 - zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout)
@@ -1162,7 +1265,7 @@ Changes in 1.0.8 (27 Jan 1998)
 - include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong)
 - use constant arrays for the static trees in trees.c instead of computing
   them at run time (thanks to Ken Raeburn for this suggestion). To create
-  trees.h, compile with GEN_TREES_H and run "make test".
+  trees.h, compile with GEN_TREES_H and run "make test"
 - check return code of example in "make test" and display result
 - pass minigzip command line options to file_compress
 - simplifying code of inflateSync to avoid gcc 2.8 bug
@@ -1201,12 +1304,12 @@ Changes in 1.0.6 (19 Jan 1998)
 - add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and
   gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code)
 - Fix a deflate bug occurring only with compression level 0 (thanks to
-  Andy Buckler for finding this one).
-- In minigzip, pass transparently also the first byte for .Z files.
+  Andy Buckler for finding this one)
+- In minigzip, pass transparently also the first byte for .Z files
 - return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress()
 - check Z_FINISH in inflate (thanks to Marc Schluper)
 - Implement deflateCopy (thanks to Adam Costello)
-- make static libraries by default in configure, add --shared option.
+- make static libraries by default in configure, add --shared option
 - move MSDOS or Windows specific files to directory msdos
 - suppress the notion of partial flush to simplify the interface
   (but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4)
@@ -1218,7 +1321,7 @@ Changes in 1.0.6 (19 Jan 1998)
 - added Makefile.nt (thanks to Stephen Williams)
 - added the unsupported "contrib" directory:
    contrib/asm386/ by Gilles Vollant <info@winimage.com>
-        386 asm code replacing longest_match().
+        386 asm code replacing longest_match()
    contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
         A C++ I/O streams interface to the zlib gz* functions
    contrib/iostream2/  by Tyge Løvset <Tyge.Lovset@cmr.no>
@@ -1226,7 +1329,7 @@ Changes in 1.0.6 (19 Jan 1998)
    contrib/untgz/  by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
         A very simple tar.gz file extractor using zlib
    contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
-        How to use compress(), uncompress() and the gz* functions from VB.
+        How to use compress(), uncompress() and the gz* functions from VB
 - pass params -f (filtered data), -h (huffman only), -1 to -9 (compression
   level) in minigzip (thanks to Tom Lane)
 
@@ -1235,8 +1338,8 @@ Changes in 1.0.6 (19 Jan 1998)
 - add undocumented function inflateSyncPoint() (hack for Paul Mackerras)
 - add undocumented function zError to convert error code to string
   (for Tim Smithers)
-- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code.
-- Use default memcpy for Symantec MSDOS compiler.
+- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code
+- Use default memcpy for Symantec MSDOS compiler
 - Add EXPORT keyword for check_func (needed for Windows DLL)
 - add current directory to LD_LIBRARY_PATH for "make test"
 - create also a link for libz.so.1
@@ -1249,7 +1352,7 @@ Changes in 1.0.6 (19 Jan 1998)
 - allow compilation with ANSI keywords only enabled for TurboC in large model
 - avoid "versionString"[0] (Borland bug)
 - add NEED_DUMMY_RETURN for Borland
-- use variable z_verbose for tracing in debug mode (L. Peter Deutsch).
+- use variable z_verbose for tracing in debug mode (L. Peter Deutsch)
 - allow compilation with CC
 - defined STDC for OS/2 (David Charlap)
 - limit external names to 8 chars for MVS (Thomas Lund)
@@ -1259,7 +1362,7 @@ Changes in 1.0.6 (19 Jan 1998)
 - use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
 - added makelcc.bat for lcc-win32 (Tom St Denis)
 - in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
-- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
+- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion
 - check for unistd.h in configure (for off_t)
 - remove useless check parameter in inflate_blocks_free
 - avoid useless assignment of s->check to itself in inflate_blocks_new
@@ -1280,7 +1383,7 @@ Changes in 1.0.5 (3 Jan 98)
 Changes in 1.0.4 (24 Jul 96)
 - In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
   bit, so the decompressor could decompress all the correct data but went
-  on to attempt decompressing extra garbage data. This affected minigzip too.
+  on to attempt decompressing extra garbage data. This affected minigzip too
 - zlibVersion and gzerror return const char* (needed for DLL)
 - port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
 - use z_error only for DEBUG (avoid problem with DLLs)
@@ -1310,7 +1413,7 @@ Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
 - fix array overlay in deflate.c which sometimes caused bad compressed data
 - fix inflate bug with empty stored block
 - fix MSDOS medium model which was broken in 0.99
-- fix deflateParams() which could generate bad compressed data.
+- fix deflateParams() which could generate bad compressed data
 - Bytef is define'd instead of typedef'ed (work around Borland bug)
 - added an INDEX file
 - new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
@@ -1331,7 +1434,7 @@ Changes in 0.99 (27 Jan 96)
 - allow preset dictionary shared between compressor and decompressor
 - allow compression level 0 (no compression)
 - add deflateParams in zlib.h: allow dynamic change of compression level
-  and compression strategy.
+  and compression strategy
 - test large buffers and deflateParams in example.c
 - add optional "configure" to build zlib as a shared library
 - suppress Makefile.qnx, use configure instead
@@ -1370,33 +1473,33 @@ Changes in 0.99 (27 Jan 96)
 - fix typo in Make_vms.com (f$trnlnm -> f$getsyi)
 - in fcalloc, normalize pointer if size > 65520 bytes
 - don't use special fcalloc for 32 bit Borland C++
-- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc...
+- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc.
 - use Z_BINARY instead of BINARY
 - document that gzclose after gzdopen will close the file
-- allow "a" as mode in gzopen.
+- allow "a" as mode in gzopen
 - fix error checking in gzread
 - allow skipping .gz extra-field on pipes
 - added reference to Perl interface in README
 - put the crc table in FAR data (I dislike more and more the medium model :)
 - added get_crc_table
-- added a dimension to all arrays (Borland C can't count).
+- added a dimension to all arrays (Borland C can't count)
 - workaround Borland C bug in declaration of inflate_codes_new & inflate_fast
 - guard against multiple inclusion of *.h (for precompiled header on Mac)
-- Watcom C pretends to be Microsoft C small model even in 32 bit mode.
+- Watcom C pretends to be Microsoft C small model even in 32 bit mode
 - don't use unsized arrays to avoid silly warnings by Visual C++:
      warning C4746: 'inflate_mask' : unsized array treated as  '__far'
-     (what's wrong with far data in far model?).
+     (what's wrong with far data in far model?)
 - define enum out of inflate_blocks_state to allow compilation with C++
 
 Changes in 0.95 (16 Aug 95)
 - fix MSDOS small and medium model (now easier to adapt to any compiler)
 - inlined send_bits
 - fix the final (:-) bug for deflate with flush (output was correct but
-  not completely flushed in rare occasions).
+  not completely flushed in rare occasions)
 - default window size is same for compression and decompression
-  (it's now sufficient to set MAX_WBITS in zconf.h).
+  (it's now sufficient to set MAX_WBITS in zconf.h)
 - voidp -> voidpf and voidnp -> voidp (for consistency with other
-  typedefs and because voidnp was not near in large model).
+  typedefs and because voidnp was not near in large model)
 
 Changes in 0.94 (13 Aug 95)
 - support MSDOS medium model
@@ -1405,12 +1508,12 @@ Changes in 0.94 (13 Aug 95)
 - added support for VMS
 - allow a compression level in gzopen()
 - gzflush now calls fflush
-- For deflate with flush, flush even if no more input is provided.
+- For deflate with flush, flush even if no more input is provided
 - rename libgz.a as libz.a
 - avoid complex expression in infcodes.c triggering Turbo C bug
 - work around a problem with gcc on Alpha (in INSERT_STRING)
 - don't use inline functions (problem with some gcc versions)
-- allow renaming of Byte, uInt, etc... with #define.
+- allow renaming of Byte, uInt, etc... with #define
 - avoid warning about (unused) pointer before start of array in deflate.c
 - avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c
 - avoid reserved word 'new' in trees.c
@@ -1429,7 +1532,7 @@ Changes in 0.92 (3 May 95)
 - no memcpy on Pyramid
 - suppressed inftest.c
 - optimized fill_window, put longest_match inline for gcc
-- optimized inflate on stored blocks.
+- optimized inflate on stored blocks
 - untabify all sources to simplify patches
 
 Changes in 0.91 (2 May 95)
@@ -1447,7 +1550,7 @@ Changes in 0.9 (1 May 95)
 - let again gzread copy uncompressed data unchanged (was working in 0.71)
 - deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
 - added a test of inflateSync in example.c
-- moved MAX_WBITS to zconf.h because users might want to change that.
+- moved MAX_WBITS to zconf.h because users might want to change that
 - document explicitly that zalloc(64K) on MSDOS must return a normalized
   pointer (zero offset)
 - added Makefiles for Microsoft C, Turbo C, Borland C++
@@ -1456,7 +1559,7 @@ Changes in 0.9 (1 May 95)
 Changes in 0.8 (29 April 95)
 - added fast inflate (inffast.c)
 - deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this
-  is incompatible with previous versions of zlib which returned Z_OK.
+  is incompatible with previous versions of zlib which returned Z_OK
 - work around a TurboC compiler bug (bad code for b << 0, see infutil.h)
   (actually that was not a compiler bug, see 0.81 above)
 - gzread no longer reads one extra byte in certain cases
@@ -1466,50 +1569,50 @@ Changes in 0.8 (29 April 95)
 
 Changes in 0.71 (14 April 95)
 - Fixed more MSDOS compilation problems :( There is still a bug with
-  TurboC large model.
+  TurboC large model
 
 Changes in 0.7 (14 April 95)
-- Added full inflate support.
+- Added full inflate support
 - Simplified the crc32() interface. The pre- and post-conditioning
   (one's complement) is now done inside crc32(). WARNING: this is
-  incompatible with previous versions; see zlib.h for the new usage.
+  incompatible with previous versions; see zlib.h for the new usage
 
 Changes in 0.61 (12 April 95)
-- workaround for a bug in TurboC. example and minigzip now work on MSDOS.
+- workaround for a bug in TurboC. example and minigzip now work on MSDOS
 
 Changes in 0.6 (11 April 95)
 - added minigzip.c
 - added gzdopen to reopen a file descriptor as gzFile
-- added transparent reading of non-gziped files in gzread.
+- added transparent reading of non-gziped files in gzread
 - fixed bug in gzread (don't read crc as data)
-- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose).
+- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose)
 - don't allocate big arrays in the stack (for MSDOS)
 - fix some MSDOS compilation problems
 
 Changes in 0.5:
 - do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but
-  not yet Z_FULL_FLUSH.
+  not yet Z_FULL_FLUSH
 - support decompression but only in a single step (forced Z_FINISH)
-- added opaque object for zalloc and zfree.
+- added opaque object for zalloc and zfree
 - added deflateReset and inflateReset
-- added a variable zlib_version for consistency checking.
-- renamed the 'filter' parameter of deflateInit2 as 'strategy'.
-  Added Z_FILTERED and Z_HUFFMAN_ONLY constants.
+- added a variable zlib_version for consistency checking
+- renamed the 'filter' parameter of deflateInit2 as 'strategy'
+  Added Z_FILTERED and Z_HUFFMAN_ONLY constants
 
 Changes in 0.4:
-- avoid "zip" everywhere, use zlib instead of ziplib.
+- avoid "zip" everywhere, use zlib instead of ziplib
 - suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush
-  if compression method == 8.
+  if compression method == 8
 - added adler32 and crc32
 - renamed deflateOptions as deflateInit2, call one or the other but not both
-- added the method parameter for deflateInit2.
+- added the method parameter for deflateInit2
 - added inflateInit2
-- simplied considerably deflateInit and inflateInit by not supporting
+- simplified considerably deflateInit and inflateInit by not supporting
   user-provided history buffer. This is supported only in deflateInit2
-  and inflateInit2.
+  and inflateInit2
 
 Changes in 0.3:
 - prefix all macro names with Z_
-- use Z_FINISH instead of deflateEnd to finish compression.
+- use Z_FINISH instead of deflateEnd to finish compression
 - added Z_HUFFMAN_ONLY
 - added gzerror()
diff --git a/libs/zlib/FAQ b/libs/zlib/FAQ
index 99b7cf92e4..92f5d3e29f 100644
--- a/libs/zlib/FAQ
+++ b/libs/zlib/FAQ
@@ -4,7 +4,7 @@
 
 If your question is not there, please check the zlib home page
 http://zlib.net/ which may have more recent information.
-The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
+The latest zlib FAQ is at http://zlib.net/zlib_faq.html
 
 
  1. Is zlib Y2K-compliant?
@@ -14,8 +14,7 @@ The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
  2. Where can I get a Windows DLL version?
 
     The zlib sources can be compiled without change to produce a DLL.  See the
-    file win32/DLL_FAQ.txt in the zlib distribution.  Pointers to the
-    precompiled DLL are found in the zlib web site at http://zlib.net/ .
+    file win32/DLL_FAQ.txt in the zlib distribution.
 
  3. Where can I get a Visual Basic interface to zlib?
 
diff --git a/libs/zlib/LICENSE b/libs/zlib/LICENSE
new file mode 100644
index 0000000000..ab8ee6f714
--- /dev/null
+++ b/libs/zlib/LICENSE
@@ -0,0 +1,22 @@
+Copyright notice:
+
+ (C) 1995-2022 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
diff --git a/libs/zlib/Makefile.in b/libs/zlib/Makefile.in
index 5a77949ff0..cb8b00a9b0 100644
--- a/libs/zlib/Makefile.in
+++ b/libs/zlib/Makefile.in
@@ -1,5 +1,5 @@
 # Makefile for zlib
-# Copyright (C) 1995-2017 Jean-loup Gailly, Mark Adler
+# Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
 # For conditions of distribution and use, see copyright notice in zlib.h
 
 # To compile and test, type:
@@ -7,10 +7,6 @@
 # Normally configure builds both a static and a shared library.
 # If you want to build just a static library, use: ./configure --static
 
-# To use the asm code, type:
-#    cp contrib/asm?86/match.S ./match.S
-#    make LOC=-DASMV OBJA=match.o
-
 # To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type:
 #    make install
 # To install in $HOME instead of /usr/local, use:
@@ -26,13 +22,13 @@ CFLAGS=-O
 
 SFLAGS=-O
 LDFLAGS=
-TEST_LDFLAGS=-L. libz.a
+TEST_LIBS=-L. libz.a
 LDSHARED=$(CC)
 CPP=$(CC) -E
 
 STATICLIB=libz.a
 SHAREDLIB=libz.so
-SHAREDLIBV=libz.so.1.2.11
+SHAREDLIBV=libz.so.1.3.1
 SHAREDLIBM=libz.so.1
 LIBS=$(STATICLIB) $(SHAREDLIBV)
 
@@ -87,12 +83,12 @@ test: all teststatic testshared
 
 teststatic: static
 	@TMPST=tmpst_$$; \
-	if echo hello world | ./minigzip | ./minigzip -d && ./example $$TMPST ; then \
+	if echo hello world | ${QEMU_RUN} ./minigzip | ${QEMU_RUN} ./minigzip -d && ${QEMU_RUN} ./example $$TMPST ; then \
 	  echo '		*** zlib test OK ***'; \
 	else \
 	  echo '		*** zlib test FAILED ***'; false; \
-	fi; \
-	rm -f $$TMPST
+	fi
+	@rm -f tmpst_$$
 
 testshared: shared
 	@LD_LIBRARY_PATH=`pwd`:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
@@ -100,21 +96,21 @@ testshared: shared
 	DYLD_LIBRARY_PATH=`pwd`:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \
 	SHLIB_PATH=`pwd`:$(SHLIB_PATH) ; export SHLIB_PATH; \
 	TMPSH=tmpsh_$$; \
-	if echo hello world | ./minigzipsh | ./minigzipsh -d && ./examplesh $$TMPSH; then \
+	if echo hello world | ${QEMU_RUN} ./minigzipsh | ${QEMU_RUN} ./minigzipsh -d && ${QEMU_RUN} ./examplesh $$TMPSH; then \
 	  echo '		*** zlib shared test OK ***'; \
 	else \
 	  echo '		*** zlib shared test FAILED ***'; false; \
-	fi; \
-	rm -f $$TMPSH
+	fi
+	@rm -f tmpsh_$$
 
 test64: all64
 	@TMP64=tmp64_$$; \
-	if echo hello world | ./minigzip64 | ./minigzip64 -d && ./example64 $$TMP64; then \
+	if echo hello world | ${QEMU_RUN} ./minigzip64 | ${QEMU_RUN} ./minigzip64 -d && ${QEMU_RUN} ./example64 $$TMP64; then \
 	  echo '		*** zlib 64-bit test OK ***'; \
 	else \
 	  echo '		*** zlib 64-bit test FAILED ***'; false; \
-	fi; \
-	rm -f $$TMP64
+	fi
+	@rm -f tmp64_$$
 
 infcover.o: $(SRCDIR)test/infcover.c $(SRCDIR)zlib.h zconf.h
 	$(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/infcover.c
@@ -124,7 +120,7 @@ infcover: infcover.o libz.a
 
 cover: infcover
 	rm -f *.gcda
-	./infcover
+	${QEMU_RUN} ./infcover
 	gcov inf*.c
 
 libz.a: $(OBJS)
@@ -286,22 +282,22 @@ placebo $(SHAREDLIBV): $(PIC_OBJS) libz.a
 	-@rmdir objs
 
 example$(EXE): example.o $(STATICLIB)
-	$(CC) $(CFLAGS) -o $@ example.o $(TEST_LDFLAGS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ example.o $(TEST_LIBS)
 
 minigzip$(EXE): minigzip.o $(STATICLIB)
-	$(CC) $(CFLAGS) -o $@ minigzip.o $(TEST_LDFLAGS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ minigzip.o $(TEST_LIBS)
 
 examplesh$(EXE): example.o $(SHAREDLIBV)
-	$(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV)
+	$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) -L. $(SHAREDLIBV)
 
 minigzipsh$(EXE): minigzip.o $(SHAREDLIBV)
-	$(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV)
+	$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) -L. $(SHAREDLIBV)
 
 example64$(EXE): example64.o $(STATICLIB)
-	$(CC) $(CFLAGS) -o $@ example64.o $(TEST_LDFLAGS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ example64.o $(TEST_LIBS)
 
 minigzip64$(EXE): minigzip64.o $(STATICLIB)
-	$(CC) $(CFLAGS) -o $@ minigzip64.o $(TEST_LDFLAGS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ minigzip64.o $(TEST_LIBS)
 
 install-libs: $(LIBS)
 	-@if [ ! -d $(DESTDIR)$(exec_prefix)  ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi
@@ -363,8 +359,14 @@ zconf.h.cmakein: $(SRCDIR)zconf.h.in
 zconf: $(SRCDIR)zconf.h.in
 	cp -p $(SRCDIR)zconf.h.in zconf.h
 
+minizip-test: static
+	cd contrib/minizip && { CC="$(CC)" CFLAGS="$(CFLAGS)" $(MAKE) test ; cd ../.. ; }
+
+minizip-clean:
+	cd contrib/minizip && { $(MAKE) clean ; cd ../.. ; }
+
 mostlyclean: clean
-clean:
+clean: minizip-clean
 	rm -f *.o *.lo *~ \
 	   example$(EXE) minigzip$(EXE) examplesh$(EXE) minigzipsh$(EXE) \
 	   example64$(EXE) minigzip64$(EXE) \
@@ -376,15 +378,13 @@ clean:
 	rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov
 
 maintainer-clean: distclean
-distclean: clean zconf zconf.h.cmakein docs
+distclean: clean zconf zconf.h.cmakein
 	rm -f Makefile zlib.pc configure.log
 	-@rm -f .DS_Store
 	@if [ -f Makefile.in ]; then \
 	printf 'all:\n\t-@echo "Please use ./configure first.  Thank you."\n' > Makefile ; \
 	printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile ; \
 	touch -r $(SRCDIR)Makefile.in Makefile ; fi
-	@if [ ! -f zconf.h.in ]; then rm -f zconf.h zconf.h.cmakein ; fi
-	@if [ ! -f zlib.3 ]; then rm -f zlib.3.pdf ; fi
 
 tags:
 	etags $(SRCDIR)*.[ch]
diff --git a/libs/zlib/README b/libs/zlib/README
index 51106de475..c5f917540b 100644
--- a/libs/zlib/README
+++ b/libs/zlib/README
@@ -1,6 +1,6 @@
 ZLIB DATA COMPRESSION LIBRARY
 
-zlib 1.2.11 is a general purpose data compression library.  All the code is
+zlib 1.3.1 is a general purpose data compression library.  All the code is
 thread safe.  The data format used by the zlib library is described by RFCs
 (Request for Comments) 1950 to 1952 in the files
 http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
@@ -29,18 +29,17 @@ PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help.
 
 Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan.  1997
 issue of Dr.  Dobb's Journal; a copy of the article is available at
-http://marknelson.us/1997/01/01/zlib-engine/ .
+https://marknelson.us/posts/1997/01/01/zlib-engine.html .
 
-The changes made in version 1.2.11 are documented in the file ChangeLog.
+The changes made in version 1.3.1 are documented in the file ChangeLog.
 
 Unsupported third party contributions are provided in directory contrib/ .
 
-zlib is available in Java using the java.util.zip package, documented at
-http://java.sun.com/developer/technicalArticles/Programming/compression/ .
+zlib is available in Java using the java.util.zip package. Follow the API
+Documentation link at: https://docs.oracle.com/search/?q=java.util.zip .
 
-A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available
-at CPAN (Comprehensive Perl Archive Network) sites, including
-http://search.cpan.org/~pmqs/IO-Compress-Zlib/ .
+A Perl interface to zlib and bzip2 written by Paul Marquess <pmqs@cpan.org>
+can be found at https://github.com/pmqs/IO-Compress .
 
 A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is
 available in Python 1.5 and later versions, see
@@ -64,7 +63,7 @@ Notes for some targets:
 - zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works
   when compiled with cc.
 
-- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is
+- On Digital Unix 4.0D (formerly OSF/1) on AlphaServer, the cc option -std1 is
   necessary to get gzprintf working correctly. This is done by configure.
 
 - zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
@@ -84,7 +83,7 @@ Acknowledgments:
 
 Copyright notice:
 
- (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ (C) 1995-2024 Jean-loup Gailly and Mark Adler
 
   This software is provided 'as-is', without any express or implied
   warranty.  In no event will the authors be held liable for any damages
@@ -108,7 +107,10 @@ Copyright notice:
 If you use the zlib library in a product, we would appreciate *not* receiving
 lengthy legal documents to sign.  The sources are provided for free but without
 warranty of any kind.  The library has been entirely written by Jean-loup
-Gailly and Mark Adler; it does not include third-party code.
+Gailly and Mark Adler; it does not include third-party code.  We make all
+contributions to and distributions of this project solely in our personal
+capacity, and are not conveying any rights to any intellectual property of
+any third parties.
 
 If you redistribute modified sources, we would appreciate that you include in
 the file ChangeLog history information documenting your changes.  Please read
diff --git a/libs/zlib/adler32.c b/libs/zlib/adler32.c
index d0be4380a3..04b81d29ba 100644
--- a/libs/zlib/adler32.c
+++ b/libs/zlib/adler32.c
@@ -7,8 +7,6 @@
 
 #include "zutil.h"
 
-local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
-
 #define BASE 65521U     /* largest prime smaller than 65536 */
 #define NMAX 5552
 /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
@@ -60,11 +58,7 @@ local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
 #endif
 
 /* ========================================================================= */
-uLong ZEXPORT adler32_z(adler, buf, len)
-    uLong adler;
-    const Bytef *buf;
-    z_size_t len;
-{
+uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) {
     unsigned long sum2;
     unsigned n;
 
@@ -131,20 +125,12 @@ uLong ZEXPORT adler32_z(adler, buf, len)
 }
 
 /* ========================================================================= */
-uLong ZEXPORT adler32(adler, buf, len)
-    uLong adler;
-    const Bytef *buf;
-    uInt len;
-{
+uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len) {
     return adler32_z(adler, buf, len);
 }
 
 /* ========================================================================= */
-local uLong adler32_combine_(adler1, adler2, len2)
-    uLong adler1;
-    uLong adler2;
-    z_off64_t len2;
-{
+local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2) {
     unsigned long sum1;
     unsigned long sum2;
     unsigned rem;
@@ -169,18 +155,10 @@ local uLong adler32_combine_(adler1, adler2, len2)
 }
 
 /* ========================================================================= */
-uLong ZEXPORT adler32_combine(adler1, adler2, len2)
-    uLong adler1;
-    uLong adler2;
-    z_off_t len2;
-{
+uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, z_off_t len2) {
     return adler32_combine_(adler1, adler2, len2);
 }
 
-uLong ZEXPORT adler32_combine64(adler1, adler2, len2)
-    uLong adler1;
-    uLong adler2;
-    z_off64_t len2;
-{
+uLong ZEXPORT adler32_combine64(uLong adler1, uLong adler2, z_off64_t len2) {
     return adler32_combine_(adler1, adler2, len2);
 }
diff --git a/libs/zlib/compress.c b/libs/zlib/compress.c
index e2db404abf..f43bacf7ab 100644
--- a/libs/zlib/compress.c
+++ b/libs/zlib/compress.c
@@ -19,13 +19,8 @@
    memory, Z_BUF_ERROR if there was not enough room in the output buffer,
    Z_STREAM_ERROR if the level parameter is invalid.
 */
-int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong sourceLen;
-    int level;
-{
+int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source,
+                      uLong sourceLen, int level) {
     z_stream stream;
     int err;
     const uInt max = (uInt)-1;
@@ -65,12 +60,8 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
 
 /* ===========================================================================
  */
-int ZEXPORT compress (dest, destLen, source, sourceLen)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong sourceLen;
-{
+int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source,
+                     uLong sourceLen) {
     return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION);
 }
 
@@ -78,9 +69,7 @@ int ZEXPORT compress (dest, destLen, source, sourceLen)
      If the default memLevel or windowBits for deflateInit() is changed, then
    this function needs to be updated.
  */
-uLong ZEXPORT compressBound (sourceLen)
-    uLong sourceLen;
-{
+uLong ZEXPORT compressBound(uLong sourceLen) {
     return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
            (sourceLen >> 25) + 13;
 }
diff --git a/libs/zlib/configure b/libs/zlib/configure
index e974d1fd79..c55098afc4 100755
--- a/libs/zlib/configure
+++ b/libs/zlib/configure
@@ -25,15 +25,18 @@ if test $SRCDIR = "."; then
     ZINCOUT="-I."
     SRCDIR=""
 else
-    ZINC='-include zconf.h'
+    ZINC='-I. -include zconf.h'
     ZINCOUT='-I. -I$(SRCDIR)'
     SRCDIR="$SRCDIR/"
 fi
 
 # set command prefix for cross-compilation
 if [ -n "${CHOST}" ]; then
-    uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`"
+    uname=${CHOST}
+    mname=${CHOST}
     CROSS_PREFIX="${CHOST}-"
+else
+    mname=`(uname -a || echo unknown) 2>/dev/null`
 fi
 
 # destination name for static library
@@ -41,9 +44,8 @@ STATICLIB=libz.a
 
 # extract zlib version numbers from zlib.h
 VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < ${SRCDIR}zlib.h`
-VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < ${SRCDIR}zlib.h`
-VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h`
-VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h`
+VER3=`echo ${VER}|sed -n -e 's/\([0-9]\{1,\}\(\\.[0-9]\{1,\}\)\{1,2\}\).*/\1/p'`
+VER1=`echo ${VER}|sed -n -e 's/\([0-9]\{1,\}\)\\..*/\1/p'`
 
 # establish commands for library building
 if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
@@ -87,6 +89,8 @@ build64=0
 gcc=0
 warn=0
 debug=0
+address=0
+memory=0
 old_cc="$CC"
 old_cflags="$CFLAGS"
 OBJC='$(OBJZ) $(OBJG)'
@@ -98,7 +102,7 @@ leave()
   if test "$*" != "0"; then
     echo "** $0 aborting." | tee -a configure.log
   fi
-  rm -f $test.[co] $test $test$shared_ext $test.gcno ./--version
+  rm -rf $test.[co] $test $test$shared_ext $test.gcno $test.dSYM ./--version
   echo -------------------- >> configure.log
   echo >> configure.log
   echo >> configure.log
@@ -137,6 +141,9 @@ case "$1" in
     -c* | --const) zconst=1; shift ;;
     -w* | --warn) warn=1; shift ;;
     -d* | --debug) debug=1; shift ;;
+    --sanitize) address=1; shift ;;
+    --address) address=1; shift ;;
+    --memory) memory=1; shift ;;
     *)
       echo "unknown option: $1" | tee -a configure.log
       echo "$0 --help for help" | tee -a configure.log
@@ -165,10 +172,17 @@ extern int getchar();
 int hello() {return getchar();}
 EOF
 
-test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
-cc=${CC-${CROSS_PREFIX}gcc}
-cflags=${CFLAGS-"-O3"}
-# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
+if test -z "$CC"; then
+  echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
+  if ${CROSS_PREFIX}gcc -v >/dev/null 2>&1; then
+    cc=${CROSS_PREFIX}gcc
+  else
+    cc=${CROSS_PREFIX}cc
+  fi
+else
+  cc=${CC}
+fi
+
 case "$cc" in
   *gcc*) gcc=1 ;;
   *clang*) gcc=1 ;;
@@ -194,11 +208,17 @@ if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then
   fi
   if test "$warn" -eq 1; then
     if test "$zconst" -eq 1; then
-      CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual -pedantic -DZLIB_CONST"
+      CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual -DZLIB_CONST"
     else
-      CFLAGS="${CFLAGS} -Wall -Wextra -pedantic"
+      CFLAGS="${CFLAGS} -Wall -Wextra"
     fi
   fi
+  if test $address -eq 1; then
+    CFLAGS="${CFLAGS} -g -fsanitize=address -fno-omit-frame-pointer"
+  fi
+  if test $memory -eq 1; then
+    CFLAGS="${CFLAGS} -g -fsanitize=memory -fno-omit-frame-pointer"
+  fi
   if test $debug -eq 1; then
     CFLAGS="${CFLAGS} -DZLIB_DEBUG"
     SFLAGS="${SFLAGS} -DZLIB_DEBUG"
@@ -207,47 +227,54 @@ if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then
     uname=`(uname -s || echo unknown) 2>/dev/null`
   fi
   case "$uname" in
-  Linux* | linux* | GNU | GNU/* | solaris*)
+  Linux* | linux* | *-linux* | GNU | GNU/* | solaris*)
+        case "$mname" in
+        *sparc*)
+            LDFLAGS="${LDFLAGS} -Wl,--no-warn-rwx-segments" ;;
+        esac
         LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}zlib.map"} ;;
   *BSD | *bsd* | DragonFly)
         LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}zlib.map"}
         LDCONFIG="ldconfig -m" ;;
-  CYGWIN* | Cygwin* | cygwin* | OS/2*)
+  CYGWIN* | Cygwin* | cygwin* | *-cygwin* | OS/2*)
         EXE='.exe' ;;
-  MINGW* | mingw*)
-# temporary bypass
+  MINGW* | mingw* | *-mingw*)
         rm -f $test.[co] $test $test$shared_ext
-        echo "Please use win32/Makefile.gcc instead." | tee -a configure.log
-        leave 1
+        echo "If this doesn't work for you, try win32/Makefile.gcc." | tee -a configure.log
         LDSHARED=${LDSHARED-"$cc -shared"}
         LDSHAREDLIBC=""
         EXE='.exe' ;;
-  QNX*)  # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
-         # (alain.bonnefoy@icbt.com)
-                 LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;;
+  QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
+        # (alain.bonnefoy@icbt.com)
+        LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;;
   HP-UX*)
-         LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
-         case `(uname -m || echo unknown) 2>/dev/null` in
-         ia64)
-                 shared_ext='.so'
-                 SHAREDLIB='libz.so' ;;
-         *)
-                 shared_ext='.sl'
-                 SHAREDLIB='libz.sl' ;;
-         esac ;;
-  Darwin* | darwin*)
-             shared_ext='.dylib'
-             SHAREDLIB=libz$shared_ext
-             SHAREDLIBV=libz.$VER$shared_ext
-             SHAREDLIBM=libz.$VER1$shared_ext
-             LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
-             if libtool -V 2>&1 | grep Apple > /dev/null; then
-                 AR="libtool"
-             else
-                 AR="/usr/bin/libtool"
-             fi
-             ARFLAGS="-o" ;;
-  *)             LDSHARED=${LDSHARED-"$cc -shared"} ;;
+        LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
+        case `(uname -m || echo unknown) 2>/dev/null` in
+        ia64)
+            shared_ext='.so'
+            SHAREDLIB='libz.so' ;;
+        *)
+            shared_ext='.sl'
+            SHAREDLIB='libz.sl' ;;
+        esac ;;
+  AIX*)
+        LDFLAGS="${LDFLAGS} -Wl,-brtl" ;;
+  Darwin* | darwin* | *-darwin*)
+        shared_ext='.dylib'
+        SHAREDLIB=libz$shared_ext
+        SHAREDLIBV=libz.$VER$shared_ext
+        SHAREDLIBM=libz.$VER1$shared_ext
+        LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
+        if "${CROSS_PREFIX}libtool" -V 2>&1 | grep Apple > /dev/null; then
+            AR="${CROSS_PREFIX}libtool"
+        elif libtool -V 2>&1 | grep Apple > /dev/null; then
+            AR="libtool"
+        else
+            AR="/usr/bin/libtool"
+        fi
+        ARFLAGS="-o" ;;
+  *)
+        LDSHARED=${LDSHARED-"$cc -shared"} ;;
   esac
 else
   # find system name and corresponding cc options
@@ -367,8 +394,11 @@ else
   try()
   {
     show $*
-    ( $* ) >> configure.log 2>&1
+    got=`( $* ) 2>&1`
     ret=$?
+    if test "$got" != ""; then
+      printf "%s\n" "$got" >> configure.log
+    fi
     if test $ret -ne 0; then
       echo "(exit code "$ret")" >> configure.log
     fi
@@ -381,8 +411,11 @@ tryboth()
   show $*
   got=`( $* ) 2>&1`
   ret=$?
-  printf %s "$got" >> configure.log
+  if test "$got" != ""; then
+    printf "%s\n" "$got" >> configure.log
+  fi
   if test $ret -ne 0; then
+    echo "(exit code "$ret")" >> configure.log
     return $ret
   fi
   test "$got" = ""
@@ -409,7 +442,7 @@ EOF
 if test $shared -eq 1; then
   echo Checking for shared library support... | tee -a configure.log
   # we must test in two steps (cc then ld), required at least on SunOS 4.x
-  if try $CC -w -c $SFLAGS $test.c &&
+  if try $CC -c $SFLAGS $test.c &&
      try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
     echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
   elif test -z "$old_cc" -a -z "$old_cflags"; then
@@ -433,20 +466,6 @@ else
   TEST="all teststatic testshared"
 fi
 
-# check for underscores in external names for use by assembler code
-CPP=${CPP-"$CC -E"}
-case $CFLAGS in
-  *ASMV*)
-    echo >> configure.log
-    show "$NM $test.o | grep _hello"
-    if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then
-      CPP="$CPP -DNO_UNDERLINE"
-      echo Checking for underline in external names... No. | tee -a configure.log
-    else
-      echo Checking for underline in external names... Yes. | tee -a configure.log
-    fi ;;
-esac
-
 echo >> configure.log
 
 # check for size_t
@@ -457,17 +476,11 @@ size_t dummy = 0;
 EOF
 if try $CC -c $CFLAGS $test.c; then
   echo "Checking for size_t... Yes." | tee -a configure.log
-  need_sizet=0
 else
   echo "Checking for size_t... No." | tee -a configure.log
-  need_sizet=1
-fi
-
-echo >> configure.log
-
-# find the size_t integer type, if needed
-if test $need_sizet -eq 1; then
-  cat > $test.c <<EOF
+  # find a size_t integer type
+  # check for long long
+  cat > $test.c << EOF
 long long dummy = 0;
 EOF
   if try $CC -c $CFLAGS $test.c; then
@@ -495,17 +508,13 @@ EOF
   if try $CC $CFLAGS -o $test $test.c; then
     sizet=`./$test`
     echo "Checking for a pointer-size integer type..." $sizet"." | tee -a configure.log
+    CFLAGS="${CFLAGS} -DNO_SIZE_T=${sizet}"
+    SFLAGS="${SFLAGS} -DNO_SIZE_T=${sizet}"
   else
-    echo "Failed to find a pointer-size integer type." | tee -a configure.log
-    leave 1
+    echo "Checking for a pointer-size integer type... not found." | tee -a configure.log
   fi
 fi
 
-if test $need_sizet -eq 1; then
-  CFLAGS="${CFLAGS} -DNO_SIZE_T=${sizet}"
-  SFLAGS="${SFLAGS} -DNO_SIZE_T=${sizet}"
-fi
-
 echo >> configure.log
 
 # check for large file support, and if none, check for fseeko()
@@ -849,7 +858,6 @@ echo SHAREDLIBV = $SHAREDLIBV >> configure.log
 echo STATICLIB = $STATICLIB >> configure.log
 echo TEST = $TEST >> configure.log
 echo VER = $VER >> configure.log
-echo Z_U4 = $Z_U4 >> configure.log
 echo SRCDIR = $SRCDIR >> configure.log
 echo exec_prefix = $exec_prefix >> configure.log
 echo includedir = $includedir >> configure.log
@@ -859,7 +867,7 @@ echo prefix = $prefix >> configure.log
 echo sharedlibdir = $sharedlibdir >> configure.log
 echo uname = $uname >> configure.log
 
-# udpate Makefile with the configure results
+# update Makefile with the configure results
 sed < ${SRCDIR}Makefile.in "
 /^CC *=/s#=.*#=$CC#
 /^CFLAGS *=/s#=.*#=$CFLAGS#
diff --git a/libs/zlib/contrib/README.contrib b/libs/zlib/contrib/README.contrib
index a411d5c396..5e5f950540 100644
--- a/libs/zlib/contrib/README.contrib
+++ b/libs/zlib/contrib/README.contrib
@@ -1,4 +1,4 @@
-All files under this contrib directory are UNSUPPORTED. There were
+All files under this contrib directory are UNSUPPORTED. They were
 provided by users of zlib and were not tested by the authors of zlib.
 Use at your own risk. Please contact the authors of the contributions
 for help about these, not the zlib authors. Thanks.
@@ -8,14 +8,6 @@ ada/        by Dmitriy Anisimkov <anisimkov@yahoo.com>
         Support for Ada
         See http://zlib-ada.sourceforge.net/
 
-amd64/      by Mikhail Teterin <mi@ALDAN.algebra.com>
-        asm code for AMD64
-        See patch at http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/96393
-
-asm686/     by Brian Raiter <breadbox@muppetlabs.com>
-        asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax
-        See http://www.muppetlabs.com/~breadbox/software/assembly.html
-
 blast/      by Mark Adler <madler@alumni.caltech.edu>
         Decompressor for output of PKWare Data Compression Library (DCL)
 
@@ -32,9 +24,6 @@ gcc_gvmat64/by Gilles Vollant <info@winimage.com>
 infback9/   by Mark Adler <madler@alumni.caltech.edu>
         Unsupported diffs to infback to decode the deflate64 format
 
-inflate86/  by Chris Anderson <christop@charm.net>
-        Tuned x86 gcc asm code to replace inflate_fast()
-
 iostream/   by Kevin Ruland <kevin@rodin.wustl.edu>
         A C++ I/O streams interface to the zlib gz* functions
 
@@ -45,16 +34,6 @@ iostream3/  by Ludwig Schwardt <schwardt@sun.ac.za>
             and Kevin Ruland <kevin@rodin.wustl.edu>
         Yet another C++ I/O streams interface
 
-masmx64/    by Gilles Vollant <info@winimage.com>
-        x86 64-bit (AMD64 and Intel EM64t) code for x64 assembler to
-        replace longest_match() and inflate_fast(),  also masm x86
-        64-bits translation of Chris Anderson inflate_fast()
-
-masmx86/    by Gilles Vollant <info@winimage.com>
-        x86 asm code to replace longest_match() and inflate_fast(),
-        for Visual C++ and MASM (32 bits).
-        Based on Brian Raiter (asm686) and Chris Anderson (inflate86)
-
 minizip/    by Gilles Vollant <info@winimage.com>
         Mini zip and unzip based on zlib
         Includes Zip64 support by Mathias Svensson <mathias@result42.com>
diff --git a/libs/zlib/contrib/ada/readme.txt b/libs/zlib/contrib/ada/readme.txt
index ce4d2cadf0..efdd639fba 100644
--- a/libs/zlib/contrib/ada/readme.txt
+++ b/libs/zlib/contrib/ada/readme.txt
@@ -8,8 +8,8 @@ It provides Ada-style access to the ZLib C library.
 
         Here are the main changes since ZLib.Ada 1.2:
 
-- Attension: ZLib.Read generic routine have a initialization requirement
-  for Read_Last parameter now. It is a bit incompartible with previous version,
+- Attention: ZLib.Read generic routine have a initialization requirement
+  for Read_Last parameter now. It is a bit incompatible with previous version,
   but extends functionality, we could use new parameters Allow_Read_Some and
   Flush now.
 
diff --git a/libs/zlib/contrib/ada/test.adb b/libs/zlib/contrib/ada/test.adb
index 90773acfa1..8b35031508 100644
--- a/libs/zlib/contrib/ada/test.adb
+++ b/libs/zlib/contrib/ada/test.adb
@@ -65,12 +65,12 @@ procedure Test is
    Time_Stamp : Ada.Calendar.Time;
 
    procedure Generate_File;
-   --  Generate file of spetsified size with some random data.
+   --  Generate file of specified size with some random data.
    --  The random data is repeatable, for the good compression.
 
    procedure Compare_Streams
      (Left, Right : in out Root_Stream_Type'Class);
-   --  The procedure compearing data in 2 streams.
+   --  The procedure comparing data in 2 streams.
    --  It is for compare data before and after compression/decompression.
 
    procedure Compare_Files (Left, Right : String);
diff --git a/libs/zlib/contrib/ada/zlib-streams.ads b/libs/zlib/contrib/ada/zlib-streams.ads
index 8e26cd4508..af136933e1 100644
--- a/libs/zlib/contrib/ada/zlib-streams.ads
+++ b/libs/zlib/contrib/ada/zlib-streams.ads
@@ -62,7 +62,7 @@ package ZLib.Streams is
                                     := Default_Buffer_Size;
       Write_Buffer_Size : in     Ada.Streams.Stream_Element_Offset
                                     := Default_Buffer_Size);
-   --  Create the Comression/Decompression stream.
+   --  Create the Compression/Decompression stream.
    --  If mode is In_Stream then Write operation is disabled.
    --  If mode is Out_Stream then Read operation is disabled.
 
diff --git a/libs/zlib/contrib/ada/zlib.adb b/libs/zlib/contrib/ada/zlib.adb
index 8b6fd686ac..c1abe791d6 100644
--- a/libs/zlib/contrib/ada/zlib.adb
+++ b/libs/zlib/contrib/ada/zlib.adb
@@ -204,7 +204,7 @@ package body ZLib is
       end if;
 
       --  We allow ZLib to make header only in case of default header type.
-      --  Otherwise we would either do header by ourselfs, or do not do
+      --  Otherwise we would either do header by ourselves, or do not do
       --  header at all.
 
       if Header = None or else Header = GZip then
diff --git a/libs/zlib/contrib/ada/zlib.ads b/libs/zlib/contrib/ada/zlib.ads
index 79ffc4095c..81aaf1b6ae 100644
--- a/libs/zlib/contrib/ada/zlib.ads
+++ b/libs/zlib/contrib/ada/zlib.ads
@@ -114,7 +114,7 @@ package ZLib is
    -- Compression strategy constants --
    ------------------------------------
 
-   --  RLE stategy could be used only in version 1.2.0 and later.
+   --  RLE strategy could be used only in version 1.2.0 and later.
 
    Filtered         : constant Strategy_Type;
    Huffman_Only     : constant Strategy_Type;
diff --git a/libs/zlib/contrib/amd64/amd64-match.S b/libs/zlib/contrib/amd64/amd64-match.S
deleted file mode 100644
index 81d4a1c949..0000000000
--- a/libs/zlib/contrib/amd64/amd64-match.S
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- * match.S -- optimized version of longest_match()
- * based on the similar work by Gilles Vollant, and Brian Raiter, written 1998
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the BSD License. Use by owners of Che Guevarra
- * parafernalia is prohibited, where possible, and highly discouraged
- * elsewhere.
- */
-
-#ifndef NO_UNDERLINE
-#	define	match_init	_match_init
-#	define	longest_match	_longest_match
-#endif
-
-#define	scanend		ebx
-#define	scanendw	bx
-#define	chainlenwmask	edx /* high word: current chain len low word: s->wmask */
-#define	curmatch	rsi
-#define	curmatchd	esi
-#define	windowbestlen	r8
-#define	scanalign	r9
-#define	scanalignd	r9d
-#define	window		r10
-#define	bestlen		r11
-#define	bestlend	r11d
-#define	scanstart	r12d
-#define	scanstartw	r12w
-#define scan		r13
-#define nicematch	r14d
-#define	limit		r15
-#define	limitd		r15d
-#define prev		rcx
-
-/*
- * The 258 is a "magic number, not a parameter -- changing it
- * breaks the hell loose
- */
-#define	MAX_MATCH	(258)
-#define	MIN_MATCH	(3)
-#define	MIN_LOOKAHEAD	(MAX_MATCH + MIN_MATCH + 1)
-#define	MAX_MATCH_8	((MAX_MATCH + 7) & ~7)
-
-/* stack frame offsets */
-#define	LocalVarsSize	(112)
-#define _chainlenwmask	( 8-LocalVarsSize)(%rsp)
-#define _windowbestlen	(16-LocalVarsSize)(%rsp)
-#define save_r14        (24-LocalVarsSize)(%rsp)
-#define save_rsi        (32-LocalVarsSize)(%rsp)
-#define save_rbx        (40-LocalVarsSize)(%rsp)
-#define save_r12        (56-LocalVarsSize)(%rsp)
-#define save_r13        (64-LocalVarsSize)(%rsp)
-#define save_r15        (80-LocalVarsSize)(%rsp)
-
-
-.globl	match_init, longest_match
-
-/*
- * On AMD64 the first argument of a function (in our case -- the pointer to
- * deflate_state structure) is passed in %rdi, hence our offsets below are
- * all off of that.
- */
-
-/* you can check the structure offset by running
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "deflate.h"
-
-void print_depl()
-{
-deflate_state ds;
-deflate_state *s=&ds;
-printf("size pointer=%u\n",(int)sizeof(void*));
-
-printf("#define dsWSize         (%3u)(%%rdi)\n",(int)(((char*)&(s->w_size))-((char*)s)));
-printf("#define dsWMask         (%3u)(%%rdi)\n",(int)(((char*)&(s->w_mask))-((char*)s)));
-printf("#define dsWindow        (%3u)(%%rdi)\n",(int)(((char*)&(s->window))-((char*)s)));
-printf("#define dsPrev          (%3u)(%%rdi)\n",(int)(((char*)&(s->prev))-((char*)s)));
-printf("#define dsMatchLen      (%3u)(%%rdi)\n",(int)(((char*)&(s->match_length))-((char*)s)));
-printf("#define dsPrevMatch     (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_match))-((char*)s)));
-printf("#define dsStrStart      (%3u)(%%rdi)\n",(int)(((char*)&(s->strstart))-((char*)s)));
-printf("#define dsMatchStart    (%3u)(%%rdi)\n",(int)(((char*)&(s->match_start))-((char*)s)));
-printf("#define dsLookahead     (%3u)(%%rdi)\n",(int)(((char*)&(s->lookahead))-((char*)s)));
-printf("#define dsPrevLen       (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_length))-((char*)s)));
-printf("#define dsMaxChainLen   (%3u)(%%rdi)\n",(int)(((char*)&(s->max_chain_length))-((char*)s)));
-printf("#define dsGoodMatch     (%3u)(%%rdi)\n",(int)(((char*)&(s->good_match))-((char*)s)));
-printf("#define dsNiceMatch     (%3u)(%%rdi)\n",(int)(((char*)&(s->nice_match))-((char*)s)));
-}
-
-*/
-
-
-/*
-  to compile for XCode 3.2 on MacOSX x86_64
-  - run "gcc -g -c -DXCODE_MAC_X64_STRUCTURE amd64-match.S"
- */
-
-
-#ifndef CURRENT_LINX_XCODE_MAC_X64_STRUCTURE
-#define dsWSize		( 68)(%rdi)
-#define dsWMask		( 76)(%rdi)
-#define dsWindow	( 80)(%rdi)
-#define dsPrev		( 96)(%rdi)
-#define dsMatchLen	(144)(%rdi)
-#define dsPrevMatch	(148)(%rdi)
-#define dsStrStart	(156)(%rdi)
-#define dsMatchStart	(160)(%rdi)
-#define dsLookahead	(164)(%rdi)
-#define dsPrevLen	(168)(%rdi)
-#define dsMaxChainLen	(172)(%rdi)
-#define dsGoodMatch	(188)(%rdi)
-#define dsNiceMatch	(192)(%rdi)
-
-#else 
-
-#ifndef STRUCT_OFFSET
-#	define STRUCT_OFFSET	(0)
-#endif
-
-
-#define dsWSize		( 56 + STRUCT_OFFSET)(%rdi)
-#define dsWMask		( 64 + STRUCT_OFFSET)(%rdi)
-#define dsWindow	( 72 + STRUCT_OFFSET)(%rdi)
-#define dsPrev		( 88 + STRUCT_OFFSET)(%rdi)
-#define dsMatchLen	(136 + STRUCT_OFFSET)(%rdi)
-#define dsPrevMatch	(140 + STRUCT_OFFSET)(%rdi)
-#define dsStrStart	(148 + STRUCT_OFFSET)(%rdi)
-#define dsMatchStart	(152 + STRUCT_OFFSET)(%rdi)
-#define dsLookahead	(156 + STRUCT_OFFSET)(%rdi)
-#define dsPrevLen	(160 + STRUCT_OFFSET)(%rdi)
-#define dsMaxChainLen	(164 + STRUCT_OFFSET)(%rdi)
-#define dsGoodMatch	(180 + STRUCT_OFFSET)(%rdi)
-#define dsNiceMatch	(184 + STRUCT_OFFSET)(%rdi)
-
-#endif
-
-
-
-
-.text
-
-/* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */
-
-longest_match:
-/*
- * Retrieve the function arguments. %curmatch will hold cur_match
- * throughout the entire function (passed via rsi on amd64).
- * rdi will hold the pointer to the deflate_state (first arg on amd64)
- */
-		mov     %rsi, save_rsi
-		mov     %rbx, save_rbx
-		mov	%r12, save_r12
-		mov     %r13, save_r13
-		mov     %r14, save_r14
-		mov     %r15, save_r15
-
-/* uInt wmask = s->w_mask;						*/
-/* unsigned chain_length = s->max_chain_length;				*/
-/* if (s->prev_length >= s->good_match) {				*/
-/*     chain_length >>= 2;						*/
-/* }									*/
-
-		movl	dsPrevLen, %eax
-		movl	dsGoodMatch, %ebx
-		cmpl	%ebx, %eax
-		movl	dsWMask, %eax
-		movl	dsMaxChainLen, %chainlenwmask
-		jl	LastMatchGood
-		shrl	$2, %chainlenwmask
-LastMatchGood:
-
-/* chainlen is decremented once beforehand so that the function can	*/
-/* use the sign flag instead of the zero flag for the exit test.	*/
-/* It is then shifted into the high word, to make room for the wmask	*/
-/* value, which it will always accompany.				*/
-
-		decl	%chainlenwmask
-		shll	$16, %chainlenwmask
-		orl	%eax, %chainlenwmask
-
-/* if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;	*/
-
-		movl	dsNiceMatch, %eax
-		movl	dsLookahead, %ebx
-		cmpl	%eax, %ebx
-		jl	LookaheadLess
-		movl	%eax, %ebx
-LookaheadLess:	movl	%ebx, %nicematch
-
-/* register Bytef *scan = s->window + s->strstart;			*/
-
-		mov	dsWindow, %window
-		movl	dsStrStart, %limitd
-		lea	(%limit, %window), %scan
-
-/* Determine how many bytes the scan ptr is off from being		*/
-/* dword-aligned.							*/
-
-		mov	%scan, %scanalign
-		negl	%scanalignd
-		andl	$3, %scanalignd
-
-/* IPos limit = s->strstart > (IPos)MAX_DIST(s) ?			*/
-/*     s->strstart - (IPos)MAX_DIST(s) : NIL;				*/
-
-		movl	dsWSize, %eax
-		subl	$MIN_LOOKAHEAD, %eax
-		xorl	%ecx, %ecx
-		subl	%eax, %limitd
-		cmovng	%ecx, %limitd
-
-/* int best_len = s->prev_length;					*/
-
-		movl	dsPrevLen, %bestlend
-
-/* Store the sum of s->window + best_len in %windowbestlen locally, and in memory.	*/
-
-		lea	(%window, %bestlen), %windowbestlen
-		mov	%windowbestlen, _windowbestlen
-
-/* register ush scan_start = *(ushf*)scan;				*/
-/* register ush scan_end   = *(ushf*)(scan+best_len-1);			*/
-/* Posf *prev = s->prev;						*/
-
-		movzwl	(%scan), %scanstart
-		movzwl	-1(%scan, %bestlen), %scanend
-		mov	dsPrev, %prev
-
-/* Jump into the main loop.						*/
-
-		movl	%chainlenwmask, _chainlenwmask
-		jmp	LoopEntry
-
-.balign 16
-
-/* do {
- *     match = s->window + cur_match;
- *     if (*(ushf*)(match+best_len-1) != scan_end ||
- *         *(ushf*)match != scan_start) continue;
- *     [...]
- * } while ((cur_match = prev[cur_match & wmask]) > limit
- *          && --chain_length != 0);
- *
- * Here is the inner loop of the function. The function will spend the
- * majority of its time in this loop, and majority of that time will
- * be spent in the first ten instructions.
- */
-LookupLoop:
-		andl	%chainlenwmask, %curmatchd
-		movzwl	(%prev, %curmatch, 2), %curmatchd
-		cmpl	%limitd, %curmatchd
-		jbe	LeaveNow
-		subl	$0x00010000, %chainlenwmask
-		js	LeaveNow
-LoopEntry:	cmpw	-1(%windowbestlen, %curmatch), %scanendw
-		jne	LookupLoop
-		cmpw	%scanstartw, (%window, %curmatch)
-		jne	LookupLoop
-
-/* Store the current value of chainlen.					*/
-		movl	%chainlenwmask, _chainlenwmask
-
-/* %scan is the string under scrutiny, and %prev to the string we	*/
-/* are hoping to match it up with. In actuality, %esi and %edi are	*/
-/* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is	*/
-/* initialized to -(MAX_MATCH_8 - scanalign).				*/
-
-		mov	$(-MAX_MATCH_8), %rdx
-		lea	(%curmatch, %window), %windowbestlen
-		lea	MAX_MATCH_8(%windowbestlen, %scanalign), %windowbestlen
-		lea	MAX_MATCH_8(%scan, %scanalign), %prev
-
-/* the prefetching below makes very little difference... */
-		prefetcht1	(%windowbestlen, %rdx)
-		prefetcht1	(%prev, %rdx)
-
-/*
- * Test the strings for equality, 8 bytes at a time. At the end,
- * adjust %rdx so that it is offset to the exact byte that mismatched.
- *
- * It should be confessed that this loop usually does not represent
- * much of the total running time. Replacing it with a more
- * straightforward "rep cmpsb" would not drastically degrade
- * performance -- unrolling it, for example, makes no difference.
- */
-
-#undef USE_SSE	/* works, but is 6-7% slower, than non-SSE... */
-
-LoopCmps:
-#ifdef USE_SSE
-		/* Preload the SSE registers */
-		movdqu	  (%windowbestlen, %rdx), %xmm1
-		movdqu	  (%prev, %rdx), %xmm2
-		pcmpeqb	%xmm2, %xmm1
-		movdqu	16(%windowbestlen, %rdx), %xmm3
-		movdqu	16(%prev, %rdx), %xmm4
-		pcmpeqb	%xmm4, %xmm3
-		movdqu	32(%windowbestlen, %rdx), %xmm5
-		movdqu	32(%prev, %rdx), %xmm6
-		pcmpeqb	%xmm6, %xmm5
-		movdqu	48(%windowbestlen, %rdx), %xmm7
-		movdqu	48(%prev, %rdx), %xmm8
-		pcmpeqb	%xmm8, %xmm7
-
-		/* Check the comparisions' results */
-		pmovmskb %xmm1, %rax
-		notw	%ax
-		bsfw	%ax, %ax
-		jnz	LeaveLoopCmps
-		
-		/* this is the only iteration of the loop with a possibility of having
-		   incremented rdx by 0x108 (each loop iteration add 16*4 = 0x40 
-		   and (0x40*4)+8=0x108 */
-		add	$8, %rdx
-		jz LenMaximum
-		add	$8, %rdx
-
-		
-		pmovmskb %xmm3, %rax
-		notw	%ax
-		bsfw	%ax, %ax
-		jnz	LeaveLoopCmps
-		
-		
-		add	$16, %rdx
-
-
-		pmovmskb %xmm5, %rax
-		notw	%ax
-		bsfw	%ax, %ax
-		jnz	LeaveLoopCmps
-		
-		add	$16, %rdx
-
-
-		pmovmskb %xmm7, %rax
-		notw	%ax
-		bsfw	%ax, %ax
-		jnz	LeaveLoopCmps
-		
-		add	$16, %rdx
-		
-		jmp	LoopCmps
-LeaveLoopCmps:	add	%rax, %rdx
-#else
-		mov	(%windowbestlen, %rdx), %rax
-		xor	(%prev, %rdx), %rax
-		jnz	LeaveLoopCmps
-		
-		mov	8(%windowbestlen, %rdx), %rax
-		xor	8(%prev, %rdx), %rax
-		jnz	LeaveLoopCmps8
-
-		mov	16(%windowbestlen, %rdx), %rax
-		xor	16(%prev, %rdx), %rax
-		jnz	LeaveLoopCmps16
-				
-		add	$24, %rdx
-		jnz	LoopCmps
-		jmp	LenMaximum
-#	if 0
-/*
- * This three-liner is tantalizingly simple, but bsf is a slow instruction,
- * and the complicated alternative down below is quite a bit faster. Sad...
- */
-
-LeaveLoopCmps:	bsf	%rax, %rax /* find the first non-zero bit */
-		shrl	$3, %eax /* divide by 8 to get the byte */
-		add	%rax, %rdx
-#	else
-LeaveLoopCmps16:
-		add	$8, %rdx
-LeaveLoopCmps8:
-		add	$8, %rdx
-LeaveLoopCmps:	testl   $0xFFFFFFFF, %eax /* Check the first 4 bytes */
-		jnz     Check16
-		add     $4, %rdx
-		shr     $32, %rax
-Check16:        testw   $0xFFFF, %ax
-		jnz     LenLower
-		add	$2, %rdx
-		shrl	$16, %eax
-LenLower:	subb	$1, %al
-		adc	$0, %rdx
-#	endif
-#endif
-
-/* Calculate the length of the match. If it is longer than MAX_MATCH,	*/
-/* then automatically accept it as the best possible match and leave.	*/
-
-		lea	(%prev, %rdx), %rax
-		sub	%scan, %rax
-		cmpl	$MAX_MATCH, %eax
-		jge	LenMaximum
-
-/* If the length of the match is not longer than the best match we	*/
-/* have so far, then forget it and return to the lookup loop.		*/
-
-		cmpl	%bestlend, %eax
-		jg	LongerMatch
-		mov	_windowbestlen, %windowbestlen
-		mov	dsPrev, %prev
-		movl	_chainlenwmask, %edx
-		jmp	LookupLoop
-
-/*         s->match_start = cur_match;					*/
-/*         best_len = len;						*/
-/*         if (len >= nice_match) break;				*/
-/*         scan_end = *(ushf*)(scan+best_len-1);			*/
-
-LongerMatch:
-		movl	%eax, %bestlend
-		movl	%curmatchd, dsMatchStart
-		cmpl	%nicematch, %eax
-		jge	LeaveNow
-
-		lea	(%window, %bestlen), %windowbestlen
-		mov	%windowbestlen, _windowbestlen
-
-		movzwl	-1(%scan, %rax), %scanend
-		mov	dsPrev, %prev
-		movl	_chainlenwmask, %chainlenwmask
-		jmp	LookupLoop
-
-/* Accept the current string, with the maximum possible length.		*/
-
-LenMaximum:
-		movl	$MAX_MATCH, %bestlend
-		movl	%curmatchd, dsMatchStart
-
-/* if ((uInt)best_len <= s->lookahead) return (uInt)best_len;		*/
-/* return s->lookahead;							*/
-
-LeaveNow:
-		movl	dsLookahead, %eax
-		cmpl	%eax, %bestlend
-		cmovngl	%bestlend, %eax
-LookaheadRet:
-
-/* Restore the registers and return from whence we came.			*/
-
-	mov	save_rsi, %rsi
-	mov	save_rbx, %rbx
-	mov	save_r12, %r12
-	mov	save_r13, %r13
-	mov	save_r14, %r14
-	mov	save_r15, %r15
-
-	ret
-
-match_init:	ret
diff --git a/libs/zlib/contrib/asm686/README.686 b/libs/zlib/contrib/asm686/README.686
deleted file mode 100644
index a0bf3bea4a..0000000000
--- a/libs/zlib/contrib/asm686/README.686
+++ /dev/null
@@ -1,51 +0,0 @@
-This is a patched version of zlib, modified to use
-Pentium-Pro-optimized assembly code in the deflation algorithm. The
-files changed/added by this patch are:
-
-README.686
-match.S
-
-The speedup that this patch provides varies, depending on whether the
-compiler used to build the original version of zlib falls afoul of the
-PPro's speed traps. My own tests show a speedup of around 10-20% at
-the default compression level, and 20-30% using -9, against a version
-compiled using gcc 2.7.2.3. Your mileage may vary.
-
-Note that this code has been tailored for the PPro/PII in particular,
-and will not perform particuarly well on a Pentium.
-
-If you are using an assembler other than GNU as, you will have to
-translate match.S to use your assembler's syntax. (Have fun.)
-
-Brian Raiter
-breadbox@muppetlabs.com
-April, 1998
-
-
-Added for zlib 1.1.3:
-
-The patches come from
-http://www.muppetlabs.com/~breadbox/software/assembly.html
-
-To compile zlib with this asm file, copy match.S to the zlib directory
-then do:
-
-CFLAGS="-O3 -DASMV" ./configure
-make OBJA=match.o
-
-
-Update:
-
-I've been ignoring these assembly routines for years, believing that
-gcc's generated code had caught up with it sometime around gcc 2.95
-and the major rearchitecting of the Pentium 4. However, I recently
-learned that, despite what I believed, this code still has some life
-in it. On the Pentium 4 and AMD64 chips, it continues to run about 8%
-faster than the code produced by gcc 4.1.
-
-In acknowledgement of its continuing usefulness, I've altered the
-license to match that of the rest of zlib. Share and Enjoy!
-
-Brian Raiter
-breadbox@muppetlabs.com
-April, 2007
diff --git a/libs/zlib/contrib/asm686/match.S b/libs/zlib/contrib/asm686/match.S
deleted file mode 100644
index fa42109278..0000000000
--- a/libs/zlib/contrib/asm686/match.S
+++ /dev/null
@@ -1,357 +0,0 @@
-/* match.S -- x86 assembly version of the zlib longest_match() function.
- * Optimized for the Intel 686 chips (PPro and later).
- *
- * Copyright (C) 1998, 2007 Brian Raiter <breadbox@muppetlabs.com>
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the author be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef NO_UNDERLINE
-#define	match_init	_match_init
-#define	longest_match	_longest_match
-#endif
-
-#define	MAX_MATCH	(258)
-#define	MIN_MATCH	(3)
-#define	MIN_LOOKAHEAD	(MAX_MATCH + MIN_MATCH + 1)
-#define	MAX_MATCH_8	((MAX_MATCH + 7) & ~7)
-
-/* stack frame offsets */
-
-#define	chainlenwmask		0	/* high word: current chain len	*/
-					/* low word: s->wmask		*/
-#define	window			4	/* local copy of s->window	*/
-#define	windowbestlen		8	/* s->window + bestlen		*/
-#define	scanstart		16	/* first two bytes of string	*/
-#define	scanend			12	/* last two bytes of string	*/
-#define	scanalign		20	/* dword-misalignment of string	*/
-#define	nicematch		24	/* a good enough match size	*/
-#define	bestlen			28	/* size of best match so far	*/
-#define	scan			32	/* ptr to string wanting match	*/
-
-#define	LocalVarsSize		(36)
-/*	saved ebx		36 */
-/*	saved edi		40 */
-/*	saved esi		44 */
-/*	saved ebp		48 */
-/*	return address		52 */
-#define	deflatestate		56	/* the function arguments	*/
-#define	curmatch		60
-
-/* All the +zlib1222add offsets are due to the addition of fields
- *  in zlib in the deflate_state structure since the asm code was first written
- * (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
- * (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
- * if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
- */
-
-#define zlib1222add		(8)
-
-#define	dsWSize			(36+zlib1222add)
-#define	dsWMask			(44+zlib1222add)
-#define	dsWindow		(48+zlib1222add)
-#define	dsPrev			(56+zlib1222add)
-#define	dsMatchLen		(88+zlib1222add)
-#define	dsPrevMatch		(92+zlib1222add)
-#define	dsStrStart		(100+zlib1222add)
-#define	dsMatchStart		(104+zlib1222add)
-#define	dsLookahead		(108+zlib1222add)
-#define	dsPrevLen		(112+zlib1222add)
-#define	dsMaxChainLen		(116+zlib1222add)
-#define	dsGoodMatch		(132+zlib1222add)
-#define	dsNiceMatch		(136+zlib1222add)
-
-
-.file "match.S"
-
-.globl	match_init, longest_match
-
-.text
-
-/* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */
-.cfi_sections	.debug_frame
-
-longest_match:
-
-.cfi_startproc
-/* Save registers that the compiler may be using, and adjust %esp to	*/
-/* make room for our stack frame.					*/
-
-		pushl	%ebp
-		.cfi_def_cfa_offset 8
-		.cfi_offset ebp, -8
-		pushl	%edi
-		.cfi_def_cfa_offset 12
-		pushl	%esi
-		.cfi_def_cfa_offset 16
-		pushl	%ebx
-		.cfi_def_cfa_offset 20
-		subl	$LocalVarsSize, %esp
-		.cfi_def_cfa_offset LocalVarsSize+20
-
-/* Retrieve the function arguments. %ecx will hold cur_match		*/
-/* throughout the entire function. %edx will hold the pointer to the	*/
-/* deflate_state structure during the function's setup (before		*/
-/* entering the main loop).						*/
-
-		movl	deflatestate(%esp), %edx
-		movl	curmatch(%esp), %ecx
-
-/* uInt wmask = s->w_mask;						*/
-/* unsigned chain_length = s->max_chain_length;				*/
-/* if (s->prev_length >= s->good_match) {				*/
-/*     chain_length >>= 2;						*/
-/* }									*/
- 
-		movl	dsPrevLen(%edx), %eax
-		movl	dsGoodMatch(%edx), %ebx
-		cmpl	%ebx, %eax
-		movl	dsWMask(%edx), %eax
-		movl	dsMaxChainLen(%edx), %ebx
-		jl	LastMatchGood
-		shrl	$2, %ebx
-LastMatchGood:
-
-/* chainlen is decremented once beforehand so that the function can	*/
-/* use the sign flag instead of the zero flag for the exit test.	*/
-/* It is then shifted into the high word, to make room for the wmask	*/
-/* value, which it will always accompany.				*/
-
-		decl	%ebx
-		shll	$16, %ebx
-		orl	%eax, %ebx
-		movl	%ebx, chainlenwmask(%esp)
-
-/* if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;	*/
-
-		movl	dsNiceMatch(%edx), %eax
-		movl	dsLookahead(%edx), %ebx
-		cmpl	%eax, %ebx
-		jl	LookaheadLess
-		movl	%eax, %ebx
-LookaheadLess:	movl	%ebx, nicematch(%esp)
-
-/* register Bytef *scan = s->window + s->strstart;			*/
-
-		movl	dsWindow(%edx), %esi
-		movl	%esi, window(%esp)
-		movl	dsStrStart(%edx), %ebp
-		lea	(%esi,%ebp), %edi
-		movl	%edi, scan(%esp)
-
-/* Determine how many bytes the scan ptr is off from being		*/
-/* dword-aligned.							*/
-
-		movl	%edi, %eax
-		negl	%eax
-		andl	$3, %eax
-		movl	%eax, scanalign(%esp)
-
-/* IPos limit = s->strstart > (IPos)MAX_DIST(s) ?			*/
-/*     s->strstart - (IPos)MAX_DIST(s) : NIL;				*/
-
-		movl	dsWSize(%edx), %eax
-		subl	$MIN_LOOKAHEAD, %eax
-		subl	%eax, %ebp
-		jg	LimitPositive
-		xorl	%ebp, %ebp
-LimitPositive:
-
-/* int best_len = s->prev_length;					*/
-
-		movl	dsPrevLen(%edx), %eax
-		movl	%eax, bestlen(%esp)
-
-/* Store the sum of s->window + best_len in %esi locally, and in %esi.	*/
-
-		addl	%eax, %esi
-		movl	%esi, windowbestlen(%esp)
-
-/* register ush scan_start = *(ushf*)scan;				*/
-/* register ush scan_end   = *(ushf*)(scan+best_len-1);			*/
-/* Posf *prev = s->prev;						*/
-
-		movzwl	(%edi), %ebx
-		movl	%ebx, scanstart(%esp)
-		movzwl	-1(%edi,%eax), %ebx
-		movl	%ebx, scanend(%esp)
-		movl	dsPrev(%edx), %edi
-
-/* Jump into the main loop.						*/
-
-		movl	chainlenwmask(%esp), %edx
-		jmp	LoopEntry
-
-.balign 16
-
-/* do {
- *     match = s->window + cur_match;
- *     if (*(ushf*)(match+best_len-1) != scan_end ||
- *         *(ushf*)match != scan_start) continue;
- *     [...]
- * } while ((cur_match = prev[cur_match & wmask]) > limit
- *          && --chain_length != 0);
- *
- * Here is the inner loop of the function. The function will spend the
- * majority of its time in this loop, and majority of that time will
- * be spent in the first ten instructions.
- *
- * Within this loop:
- * %ebx = scanend
- * %ecx = curmatch
- * %edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
- * %esi = windowbestlen - i.e., (window + bestlen)
- * %edi = prev
- * %ebp = limit
- */
-LookupLoop:
-		andl	%edx, %ecx
-		movzwl	(%edi,%ecx,2), %ecx
-		cmpl	%ebp, %ecx
-		jbe	LeaveNow
-		subl	$0x00010000, %edx
-		js	LeaveNow
-LoopEntry:	movzwl	-1(%esi,%ecx), %eax
-		cmpl	%ebx, %eax
-		jnz	LookupLoop
-		movl	window(%esp), %eax
-		movzwl	(%eax,%ecx), %eax
-		cmpl	scanstart(%esp), %eax
-		jnz	LookupLoop
-
-/* Store the current value of chainlen.					*/
-
-		movl	%edx, chainlenwmask(%esp)
-
-/* Point %edi to the string under scrutiny, and %esi to the string we	*/
-/* are hoping to match it up with. In actuality, %esi and %edi are	*/
-/* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is	*/
-/* initialized to -(MAX_MATCH_8 - scanalign).				*/
-
-		movl	window(%esp), %esi
-		movl	scan(%esp), %edi
-		addl	%ecx, %esi
-		movl	scanalign(%esp), %eax
-		movl	$(-MAX_MATCH_8), %edx
-		lea	MAX_MATCH_8(%edi,%eax), %edi
-		lea	MAX_MATCH_8(%esi,%eax), %esi
-
-/* Test the strings for equality, 8 bytes at a time. At the end,
- * adjust %edx so that it is offset to the exact byte that mismatched.
- *
- * We already know at this point that the first three bytes of the
- * strings match each other, and they can be safely passed over before
- * starting the compare loop. So what this code does is skip over 0-3
- * bytes, as much as necessary in order to dword-align the %edi
- * pointer. (%esi will still be misaligned three times out of four.)
- *
- * It should be confessed that this loop usually does not represent
- * much of the total running time. Replacing it with a more
- * straightforward "rep cmpsb" would not drastically degrade
- * performance.
- */
-LoopCmps:
-		movl	(%esi,%edx), %eax
-		xorl	(%edi,%edx), %eax
-		jnz	LeaveLoopCmps
-		movl	4(%esi,%edx), %eax
-		xorl	4(%edi,%edx), %eax
-		jnz	LeaveLoopCmps4
-		addl	$8, %edx
-		jnz	LoopCmps
-		jmp	LenMaximum
-LeaveLoopCmps4:	addl	$4, %edx
-LeaveLoopCmps:	testl	$0x0000FFFF, %eax
-		jnz	LenLower
-		addl	$2, %edx
-		shrl	$16, %eax
-LenLower:	subb	$1, %al
-		adcl	$0, %edx
-
-/* Calculate the length of the match. If it is longer than MAX_MATCH,	*/
-/* then automatically accept it as the best possible match and leave.	*/
-
-		lea	(%edi,%edx), %eax
-		movl	scan(%esp), %edi
-		subl	%edi, %eax
-		cmpl	$MAX_MATCH, %eax
-		jge	LenMaximum
-
-/* If the length of the match is not longer than the best match we	*/
-/* have so far, then forget it and return to the lookup loop.		*/
-
-		movl	deflatestate(%esp), %edx
-		movl	bestlen(%esp), %ebx
-		cmpl	%ebx, %eax
-		jg	LongerMatch
-		movl	windowbestlen(%esp), %esi
-		movl	dsPrev(%edx), %edi
-		movl	scanend(%esp), %ebx
-		movl	chainlenwmask(%esp), %edx
-		jmp	LookupLoop
-
-/*         s->match_start = cur_match;					*/
-/*         best_len = len;						*/
-/*         if (len >= nice_match) break;				*/
-/*         scan_end = *(ushf*)(scan+best_len-1);			*/
-
-LongerMatch:	movl	nicematch(%esp), %ebx
-		movl	%eax, bestlen(%esp)
-		movl	%ecx, dsMatchStart(%edx)
-		cmpl	%ebx, %eax
-		jge	LeaveNow
-		movl	window(%esp), %esi
-		addl	%eax, %esi
-		movl	%esi, windowbestlen(%esp)
-		movzwl	-1(%edi,%eax), %ebx
-		movl	dsPrev(%edx), %edi
-		movl	%ebx, scanend(%esp)
-		movl	chainlenwmask(%esp), %edx
-		jmp	LookupLoop
-
-/* Accept the current string, with the maximum possible length.		*/
-
-LenMaximum:	movl	deflatestate(%esp), %edx
-		movl	$MAX_MATCH, bestlen(%esp)
-		movl	%ecx, dsMatchStart(%edx)
-
-/* if ((uInt)best_len <= s->lookahead) return (uInt)best_len;		*/
-/* return s->lookahead;							*/
-
-LeaveNow:
-		movl	deflatestate(%esp), %edx
-		movl	bestlen(%esp), %ebx
-		movl	dsLookahead(%edx), %eax
-		cmpl	%eax, %ebx
-		jg	LookaheadRet
-		movl	%ebx, %eax
-LookaheadRet:
-
-/* Restore the stack and return from whence we came.			*/
-
-		addl	$LocalVarsSize, %esp
-		.cfi_def_cfa_offset 20
-		popl	%ebx
-		.cfi_def_cfa_offset 16
-		popl	%esi
-		.cfi_def_cfa_offset 12
-		popl	%edi
-		.cfi_def_cfa_offset 8
-		popl	%ebp
-		.cfi_def_cfa_offset 4
-.cfi_endproc
-match_init:	ret
diff --git a/libs/zlib/contrib/blast/blast.h b/libs/zlib/contrib/blast/blast.h
index 6cf65eda16..ef8544c53b 100644
--- a/libs/zlib/contrib/blast/blast.h
+++ b/libs/zlib/contrib/blast/blast.h
@@ -57,7 +57,7 @@ int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow,
  * use by the application to pass an input descriptor to infun(), if desired.
  *
  * If left and in are not NULL and *left is not zero when blast() is called,
- * then the *left bytes are *in are consumed for input before infun() is used.
+ * then the *left bytes at *in are consumed for input before infun() is used.
  *
  * The output function is invoked: err = outfun(how, buf, len), where the bytes
  * to be written are buf[0..len-1].  If err is not zero, then blast() returns
diff --git a/libs/zlib/contrib/delphi/ZLib.pas b/libs/zlib/contrib/delphi/ZLib.pas
index 060e199118..93fa4c9edb 100644
--- a/libs/zlib/contrib/delphi/ZLib.pas
+++ b/libs/zlib/contrib/delphi/ZLib.pas
@@ -152,7 +152,7 @@ procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer;
   const OutBuf: Pointer; BufSize: Integer);
 
 const
-  zlib_version = '1.2.11';
+  zlib_version = '1.3.1';
 
 type
   EZlibError = class(Exception);
diff --git a/libs/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs b/libs/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs
index 788b2fcece..de88dcf116 100644
--- a/libs/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs
+++ b/libs/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs
@@ -34,7 +34,7 @@ namespace DotZLib
         }
 
         /// <summary>
-        /// Initializes a new instance of the checksum generator basewith a specified value
+        /// Initializes a new instance of the checksum generator base with a specified value
         /// </summary>
         /// <param name="initialValue">The value to set the current checksum to</param>
         public ChecksumGeneratorBase(uint initialValue)
@@ -61,7 +61,7 @@ namespace DotZLib
         /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception>
         /// <exception cref="NullReferenceException"><c>data</c> is a null reference</exception>
         /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception>
-        /// <remarks>All the other <c>Update</c> methods are implmeneted in terms of this one.
+        /// <remarks>All the other <c>Update</c> methods are implemented in terms of this one.
         /// This is therefore the only method a derived class has to implement</remarks>
         public abstract void Update(byte[] data, int offset, int count);
 
diff --git a/libs/zlib/contrib/dotzlib/DotZLib/CodecBase.cs b/libs/zlib/contrib/dotzlib/DotZLib/CodecBase.cs
index 42e6da3a56..c4bc8b8796 100644
--- a/libs/zlib/contrib/dotzlib/DotZLib/CodecBase.cs
+++ b/libs/zlib/contrib/dotzlib/DotZLib/CodecBase.cs
@@ -139,7 +139,7 @@ namespace DotZLib
         /// <remarks>This must be implemented by a derived class</remarks>
         protected abstract void CleanUp();
 
-        // performs the release of the handles and calls the dereived CleanUp()
+        // performs the release of the handles and calls the derived CleanUp()
         private void CleanUp(bool isDisposing)
         {
             if (!_isDisposed)
@@ -160,7 +160,7 @@ namespace DotZLib
         #region Helper methods
 
         /// <summary>
-        /// Copies a number of bytes to the internal codec buffer - ready for proccesing
+        /// Copies a number of bytes to the internal codec buffer - ready for processing
         /// </summary>
         /// <param name="data">The byte array that contains the data to copy</param>
         /// <param name="startIndex">The index of the first byte to copy</param>
diff --git a/libs/zlib/contrib/dotzlib/DotZLib/GZipStream.cs b/libs/zlib/contrib/dotzlib/DotZLib/GZipStream.cs
index b161300b18..58091d3a3e 100644
--- a/libs/zlib/contrib/dotzlib/DotZLib/GZipStream.cs
+++ b/libs/zlib/contrib/dotzlib/DotZLib/GZipStream.cs
@@ -246,7 +246,7 @@ namespace DotZLib
         }
 
         /// <summary>
-        ///  Not suppported.
+        ///  Not supported.
         /// </summary>
         /// <param name="offset"></param>
         /// <param name="origin"></param>
@@ -268,7 +268,7 @@ namespace DotZLib
         }
 
         /// <summary>
-        /// Gets/sets the current position in the <c>GZipStream</c>. Not suppported.
+        /// Gets/sets the current position in the <c>GZipStream</c>. Not supported.
         /// </summary>
         /// <remarks>In this implementation this property is not supported</remarks>
         /// <exception cref="NotSupportedException">Always thrown</exception>
@@ -285,7 +285,7 @@ namespace DotZLib
         }
 
         /// <summary>
-        /// Gets the size of the stream. Not suppported.
+        /// Gets the size of the stream. Not supported.
         /// </summary>
         /// <remarks>In this implementation this property is not supported</remarks>
         /// <exception cref="NotSupportedException">Always thrown</exception>
diff --git a/libs/zlib/contrib/dotzlib/DotZLib/UnitTests.cs b/libs/zlib/contrib/dotzlib/DotZLib/UnitTests.cs
index 44f76332ba..d4f0980237 100644
--- a/libs/zlib/contrib/dotzlib/DotZLib/UnitTests.cs
+++ b/libs/zlib/contrib/dotzlib/DotZLib/UnitTests.cs
@@ -156,7 +156,7 @@ namespace DotZLibTests
         public void Info_Version()
         {
             Info info = new Info();
-            Assert.AreEqual("1.2.11", Info.Version);
+            Assert.AreEqual("1.3.1", Info.Version);
             Assert.AreEqual(32, info.SizeOfUInt);
             Assert.AreEqual(32, info.SizeOfULong);
             Assert.AreEqual(32, info.SizeOfPointer);
diff --git a/libs/zlib/contrib/dotzlib/readme.txt b/libs/zlib/contrib/dotzlib/readme.txt
index 4d8c2dd932..9675f41d29 100644
--- a/libs/zlib/contrib/dotzlib/readme.txt
+++ b/libs/zlib/contrib/dotzlib/readme.txt
@@ -36,7 +36,7 @@ Build instructions:
    in the same directory as the DotZLib.build file.
    You can define 2 properties on the nant command-line to control the build:
    debug={true|false} to toggle between release/debug builds (default=true).
-   nunit={true|false} to include or esclude unit tests (default=true).
+   nunit={true|false} to include or exclude unit tests (default=true).
    Also the target clean will remove binaries.
    Output file (DotZLib.dll) will be found in either ./DotZLib/bin/release
    or ./DotZLib/bin/debug, depending on whether you are building the release
diff --git a/libs/zlib/contrib/infback9/infback9.c b/libs/zlib/contrib/infback9/infback9.c
index 05fb3e3380..742a39214a 100644
--- a/libs/zlib/contrib/infback9/infback9.c
+++ b/libs/zlib/contrib/infback9/infback9.c
@@ -16,12 +16,8 @@
 
    window is a user-supplied window and output buffer that is 64K bytes.
  */
-int ZEXPORT inflateBack9Init_(strm, window, version, stream_size)
-z_stream FAR *strm;
-unsigned char FAR *window;
-const char *version;
-int stream_size;
-{
+int ZEXPORT inflateBack9Init_(z_stream FAR *strm, unsigned char FAR *window,
+                              const char *version, int stream_size) {
     struct inflate_state FAR *state;
 
     if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
@@ -51,8 +47,7 @@ int stream_size;
 #ifdef MAKEFIXED
 #include <stdio.h>
 
-void makefixed9(void)
-{
+void makefixed9(void) {
     unsigned sym, bits, low, size;
     code *next, *lenfix, *distfix;
     struct inflate_state state;
@@ -214,13 +209,8 @@ void makefixed9(void)
    inflateBack() can also return Z_STREAM_ERROR if the input parameters
    are not correct, i.e. strm is Z_NULL or the state was not initialized.
  */
-int ZEXPORT inflateBack9(strm, in, in_desc, out, out_desc)
-z_stream FAR *strm;
-in_func in;
-void FAR *in_desc;
-out_func out;
-void FAR *out_desc;
-{
+int ZEXPORT inflateBack9(z_stream FAR *strm, in_func in, void FAR *in_desc,
+                         out_func out, void FAR *out_desc) {
     struct inflate_state FAR *state;
     z_const unsigned char FAR *next;    /* next input */
     unsigned char FAR *put;     /* next output */
@@ -603,9 +593,7 @@ void FAR *out_desc;
     return ret;
 }
 
-int ZEXPORT inflateBack9End(strm)
-z_stream FAR *strm;
-{
+int ZEXPORT inflateBack9End(z_stream FAR *strm) {
     if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
         return Z_STREAM_ERROR;
     ZFREE(strm, strm->state);
diff --git a/libs/zlib/contrib/infback9/infback9.h b/libs/zlib/contrib/infback9/infback9.h
index 1073c0a38e..8371b4ec7d 100644
--- a/libs/zlib/contrib/infback9/infback9.h
+++ b/libs/zlib/contrib/infback9/infback9.h
@@ -20,14 +20,14 @@
 extern "C" {
 #endif
 
-ZEXTERN int ZEXPORT inflateBack9 OF((z_stream FAR *strm,
-                                    in_func in, void FAR *in_desc,
-                                    out_func out, void FAR *out_desc));
-ZEXTERN int ZEXPORT inflateBack9End OF((z_stream FAR *strm));
-ZEXTERN int ZEXPORT inflateBack9Init_ OF((z_stream FAR *strm,
-                                         unsigned char FAR *window,
-                                         const char *version,
-                                         int stream_size));
+ZEXTERN int ZEXPORT inflateBack9(z_stream FAR *strm,
+                                 in_func in, void FAR *in_desc,
+                                 out_func out, void FAR *out_desc);
+ZEXTERN int ZEXPORT inflateBack9End(z_stream FAR *strm);
+ZEXTERN int ZEXPORT inflateBack9Init_(z_stream FAR *strm,
+                                      unsigned char FAR *window,
+                                      const char *version,
+                                      int stream_size);
 #define inflateBack9Init(strm, window) \
         inflateBack9Init_((strm), (window), \
         ZLIB_VERSION, sizeof(z_stream))
diff --git a/libs/zlib/contrib/infback9/inftree9.c b/libs/zlib/contrib/infback9/inftree9.c
index 5f4a76798d..ac707ed3fb 100644
--- a/libs/zlib/contrib/infback9/inftree9.c
+++ b/libs/zlib/contrib/infback9/inftree9.c
@@ -1,5 +1,5 @@
 /* inftree9.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2017 Mark Adler
+ * Copyright (C) 1995-2024 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -9,7 +9,7 @@
 #define MAXBITS 15
 
 const char inflate9_copyright[] =
-   " inflate9 1.2.11 Copyright 1995-2017 Mark Adler ";
+   " inflate9 1.3.1 Copyright 1995-2024 Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -29,14 +29,9 @@ const char inflate9_copyright[] =
    table index bits.  It will differ if the request is greater than the
    longest code or if it is less than the shortest code.
  */
-int inflate_table9(type, lens, codes, table, bits, work)
-codetype type;
-unsigned short FAR *lens;
-unsigned codes;
-code FAR * FAR *table;
-unsigned FAR *bits;
-unsigned short FAR *work;
-{
+int inflate_table9(codetype type, unsigned short FAR *lens, unsigned codes,
+                   code FAR * FAR *table, unsigned FAR *bits,
+                   unsigned short FAR *work) {
     unsigned len;               /* a code's length in bits */
     unsigned sym;               /* index of code symbols */
     unsigned min, max;          /* minimum and maximum code lengths */
@@ -64,7 +59,7 @@ unsigned short FAR *work;
     static const unsigned short lext[31] = { /* Length codes 257..285 extra */
         128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129,
         130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132,
-        133, 133, 133, 133, 144, 77, 202};
+        133, 133, 133, 133, 144, 203, 77};
     static const unsigned short dbase[32] = { /* Distance codes 0..31 base */
         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49,
         65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073,
diff --git a/libs/zlib/contrib/infback9/inftree9.h b/libs/zlib/contrib/infback9/inftree9.h
index 5ab21f0c6d..ab2ea28b2b 100644
--- a/libs/zlib/contrib/infback9/inftree9.h
+++ b/libs/zlib/contrib/infback9/inftree9.h
@@ -38,11 +38,11 @@ typedef struct {
 /* Maximum size of the dynamic table.  The maximum number of code structures is
    1446, which is the sum of 852 for literal/length codes and 594 for distance
    codes.  These values were found by exhaustive searches using the program
-   examples/enough.c found in the zlib distribtution.  The arguments to that
+   examples/enough.c found in the zlib distribution.  The arguments to that
    program are the number of symbols, the initial root table size, and the
    maximum bit length of a code.  "enough 286 9 15" for literal/length codes
-   returns returns 852, and "enough 32 6 15" for distance codes returns 594.
-   The initial root table size (9 or 6) is found in the fifth argument of the
+   returns 852, and "enough 32 6 15" for distance codes returns 594. The
+   initial root table size (9 or 6) is found in the fifth argument of the
    inflate_table() calls in infback9.c.  If the root table size is changed,
    then these maximum sizes would be need to be recalculated and updated. */
 #define ENOUGH_LENS 852
@@ -56,6 +56,6 @@ typedef enum {
     DISTS
 } codetype;
 
-extern int inflate_table9 OF((codetype type, unsigned short FAR *lens,
-                             unsigned codes, code FAR * FAR *table,
-                             unsigned FAR *bits, unsigned short FAR *work));
+extern int inflate_table9(codetype type, unsigned short FAR *lens,
+                          unsigned codes, code FAR * FAR *table,
+                          unsigned FAR *bits, unsigned short FAR *work);
diff --git a/libs/zlib/contrib/inflate86/inffas86.c b/libs/zlib/contrib/inflate86/inffas86.c
deleted file mode 100644
index 7292f67b75..0000000000
--- a/libs/zlib/contrib/inflate86/inffas86.c
+++ /dev/null
@@ -1,1157 +0,0 @@
-/* inffas86.c is a hand tuned assembler version of
- *
- * inffast.c -- fast decoding
- * Copyright (C) 1995-2003 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Copyright (C) 2003 Chris Anderson <christop@charm.net>
- * Please use the copyright conditions above.
- *
- * Dec-29-2003 -- I added AMD64 inflate asm support.  This version is also
- * slightly quicker on x86 systems because, instead of using rep movsb to copy
- * data, it uses rep movsw, which moves data in 2-byte chunks instead of single
- * bytes.  I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates
- * from http://fedora.linux.duke.edu/fc1_x86_64
- * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with
- * 1GB ram.  The 64-bit version is about 4% faster than the 32-bit version,
- * when decompressing mozilla-source-1.3.tar.gz.
- *
- * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
- * the gcc -S output of zlib-1.2.0/inffast.c.  Zlib-1.2.0 is in beta release at
- * the moment.  I have successfully compiled and tested this code with gcc2.96,
- * gcc3.2, icc5.0, msvc6.0.  It is very close to the speed of inffast.S
- * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
- * enabled.  I will attempt to merge the MMX code into this version.  Newer
- * versions of this and inffast.S can be found at
- * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-/* Mark Adler's comments from inffast.c: */
-
-/*
-   Decode literal, length, and distance codes and write out the resulting
-   literal and match bytes until either not enough input or output is
-   available, an end-of-block is encountered, or a data error is encountered.
-   When large enough input and output buffers are supplied to inflate(), for
-   example, a 16K input buffer and a 64K output buffer, more than 95% of the
-   inflate execution time is spent in this routine.
-
-   Entry assumptions:
-
-        state->mode == LEN
-        strm->avail_in >= 6
-        strm->avail_out >= 258
-        start >= strm->avail_out
-        state->bits < 8
-
-   On return, state->mode is one of:
-
-        LEN -- ran out of enough output space or enough available input
-        TYPE -- reached end of block code, inflate() to interpret next block
-        BAD -- error in block data
-
-   Notes:
-
-    - The maximum input bits used by a length/distance pair is 15 bits for the
-      length code, 5 bits for the length extra, 15 bits for the distance code,
-      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
-      Therefore if strm->avail_in >= 6, then there is enough input to avoid
-      checking for available input while decoding.
-
-    - The maximum bytes that a single length/distance pair can output is 258
-      bytes, which is the maximum length that can be coded.  inflate_fast()
-      requires strm->avail_out >= 258 for each loop to avoid checking for
-      output space.
- */
-void inflate_fast(strm, start)
-z_streamp strm;
-unsigned start;         /* inflate()'s starting value for strm->avail_out */
-{
-    struct inflate_state FAR *state;
-    struct inffast_ar {
-/* 64   32                               x86  x86_64 */
-/* ar offset                              register */
-/*  0    0 */ void *esp;                /* esp save */
-/*  8    4 */ void *ebp;                /* ebp save */
-/* 16    8 */ unsigned char FAR *in;    /* esi rsi  local strm->next_in */
-/* 24   12 */ unsigned char FAR *last;  /*     r9   while in < last */
-/* 32   16 */ unsigned char FAR *out;   /* edi rdi  local strm->next_out */
-/* 40   20 */ unsigned char FAR *beg;   /*          inflate()'s init next_out */
-/* 48   24 */ unsigned char FAR *end;   /*     r10  while out < end */
-/* 56   28 */ unsigned char FAR *window;/*          size of window, wsize!=0 */
-/* 64   32 */ code const FAR *lcode;    /* ebp rbp  local strm->lencode */
-/* 72   36 */ code const FAR *dcode;    /*     r11  local strm->distcode */
-/* 80   40 */ unsigned long hold;       /* edx rdx  local strm->hold */
-/* 88   44 */ unsigned bits;            /* ebx rbx  local strm->bits */
-/* 92   48 */ unsigned wsize;           /*          window size */
-/* 96   52 */ unsigned write;           /*          window write index */
-/*100   56 */ unsigned lmask;           /*     r12  mask for lcode */
-/*104   60 */ unsigned dmask;           /*     r13  mask for dcode */
-/*108   64 */ unsigned len;             /*     r14  match length */
-/*112   68 */ unsigned dist;            /*     r15  match distance */
-/*116   72 */ unsigned status;          /*          set when state chng*/
-    } ar;
-
-#if defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )
-#define PAD_AVAIL_IN 6
-#define PAD_AVAIL_OUT 258
-#else
-#define PAD_AVAIL_IN 5
-#define PAD_AVAIL_OUT 257
-#endif
-
-    /* copy state to local variables */
-    state = (struct inflate_state FAR *)strm->state;
-    ar.in = strm->next_in;
-    ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN);
-    ar.out = strm->next_out;
-    ar.beg = ar.out - (start - strm->avail_out);
-    ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT);
-    ar.wsize = state->wsize;
-    ar.write = state->wnext;
-    ar.window = state->window;
-    ar.hold = state->hold;
-    ar.bits = state->bits;
-    ar.lcode = state->lencode;
-    ar.dcode = state->distcode;
-    ar.lmask = (1U << state->lenbits) - 1;
-    ar.dmask = (1U << state->distbits) - 1;
-
-    /* decode literals and length/distances until end-of-block or not enough
-       input data or output space */
-
-    /* align in on 1/2 hold size boundary */
-    while (((unsigned long)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) {
-        ar.hold += (unsigned long)*ar.in++ << ar.bits;
-        ar.bits += 8;
-    }
-
-#if defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )
-    __asm__ __volatile__ (
-"        leaq    %0, %%rax\n"
-"        movq    %%rbp, 8(%%rax)\n"       /* save regs rbp and rsp */
-"        movq    %%rsp, (%%rax)\n"
-"        movq    %%rax, %%rsp\n"          /* make rsp point to &ar */
-"        movq    16(%%rsp), %%rsi\n"      /* rsi  = in */
-"        movq    32(%%rsp), %%rdi\n"      /* rdi  = out */
-"        movq    24(%%rsp), %%r9\n"       /* r9   = last */
-"        movq    48(%%rsp), %%r10\n"      /* r10  = end */
-"        movq    64(%%rsp), %%rbp\n"      /* rbp  = lcode */
-"        movq    72(%%rsp), %%r11\n"      /* r11  = dcode */
-"        movq    80(%%rsp), %%rdx\n"      /* rdx  = hold */
-"        movl    88(%%rsp), %%ebx\n"      /* ebx  = bits */
-"        movl    100(%%rsp), %%r12d\n"    /* r12d = lmask */
-"        movl    104(%%rsp), %%r13d\n"    /* r13d = dmask */
-                                          /* r14d = len */
-                                          /* r15d = dist */
-"        cld\n"
-"        cmpq    %%rdi, %%r10\n"
-"        je      .L_one_time\n"           /* if only one decode left */
-"        cmpq    %%rsi, %%r9\n"
-"        je      .L_one_time\n"
-"        jmp     .L_do_loop\n"
-
-".L_one_time:\n"
-"        movq    %%r12, %%r8\n"           /* r8 = lmask */
-"        cmpb    $32, %%bl\n"
-"        ja      .L_get_length_code_one_time\n"
-
-"        lodsl\n"                         /* eax = *(uint *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $32, %%bl\n"             /* bits += 32 */
-"        shlq    %%cl, %%rax\n"
-"        orq     %%rax, %%rdx\n"          /* hold |= *((uint *)in)++ << bits */
-"        jmp     .L_get_length_code_one_time\n"
-
-".align 32,0x90\n"
-".L_while_test:\n"
-"        cmpq    %%rdi, %%r10\n"
-"        jbe     .L_break_loop\n"
-"        cmpq    %%rsi, %%r9\n"
-"        jbe     .L_break_loop\n"
-
-".L_do_loop:\n"
-"        movq    %%r12, %%r8\n"           /* r8 = lmask */
-"        cmpb    $32, %%bl\n"
-"        ja      .L_get_length_code\n"    /* if (32 < bits) */
-
-"        lodsl\n"                         /* eax = *(uint *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $32, %%bl\n"             /* bits += 32 */
-"        shlq    %%cl, %%rax\n"
-"        orq     %%rax, %%rdx\n"          /* hold |= *((uint *)in)++ << bits */
-
-".L_get_length_code:\n"
-"        andq    %%rdx, %%r8\n"            /* r8 &= hold */
-"        movl    (%%rbp,%%r8,4), %%eax\n"  /* eax = lcode[hold & lmask] */
-
-"        movb    %%ah, %%cl\n"            /* cl = this.bits */
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrq    %%cl, %%rdx\n"           /* hold >>= this.bits */
-
-"        testb   %%al, %%al\n"
-"        jnz     .L_test_for_length_base\n" /* if (op != 0) 45.7% */
-
-"        movq    %%r12, %%r8\n"            /* r8 = lmask */
-"        shrl    $16, %%eax\n"            /* output this.val char */
-"        stosb\n"
-
-".L_get_length_code_one_time:\n"
-"        andq    %%rdx, %%r8\n"            /* r8 &= hold */
-"        movl    (%%rbp,%%r8,4), %%eax\n" /* eax = lcode[hold & lmask] */
-
-".L_dolen:\n"
-"        movb    %%ah, %%cl\n"            /* cl = this.bits */
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrq    %%cl, %%rdx\n"           /* hold >>= this.bits */
-
-"        testb   %%al, %%al\n"
-"        jnz     .L_test_for_length_base\n" /* if (op != 0) 45.7% */
-
-"        shrl    $16, %%eax\n"            /* output this.val char */
-"        stosb\n"
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_test_for_length_base:\n"
-"        movl    %%eax, %%r14d\n"         /* len = this */
-"        shrl    $16, %%r14d\n"           /* len = this.val */
-"        movb    %%al, %%cl\n"
-
-"        testb   $16, %%al\n"
-"        jz      .L_test_for_second_level_length\n" /* if ((op & 16) == 0) 8% */
-"        andb    $15, %%cl\n"             /* op &= 15 */
-"        jz      .L_decode_distance\n"    /* if (!op) */
-
-".L_add_bits_to_len:\n"
-"        subb    %%cl, %%bl\n"
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        shrq    %%cl, %%rdx\n"
-"        addl    %%eax, %%r14d\n"         /* len += hold & mask[op] */
-
-".L_decode_distance:\n"
-"        movq    %%r13, %%r8\n"           /* r8 = dmask */
-"        cmpb    $32, %%bl\n"
-"        ja      .L_get_distance_code\n"  /* if (32 < bits) */
-
-"        lodsl\n"                         /* eax = *(uint *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $32, %%bl\n"             /* bits += 32 */
-"        shlq    %%cl, %%rax\n"
-"        orq     %%rax, %%rdx\n"          /* hold |= *((uint *)in)++ << bits */
-
-".L_get_distance_code:\n"
-"        andq    %%rdx, %%r8\n"           /* r8 &= hold */
-"        movl    (%%r11,%%r8,4), %%eax\n" /* eax = dcode[hold & dmask] */
-
-".L_dodist:\n"
-"        movl    %%eax, %%r15d\n"         /* dist = this */
-"        shrl    $16, %%r15d\n"           /* dist = this.val */
-"        movb    %%ah, %%cl\n"
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrq    %%cl, %%rdx\n"           /* hold >>= this.bits */
-"        movb    %%al, %%cl\n"            /* cl = this.op */
-
-"        testb   $16, %%al\n"             /* if ((op & 16) == 0) */
-"        jz      .L_test_for_second_level_dist\n"
-"        andb    $15, %%cl\n"             /* op &= 15 */
-"        jz      .L_check_dist_one\n"
-
-".L_add_bits_to_dist:\n"
-"        subb    %%cl, %%bl\n"
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"                 /* (1 << op) - 1 */
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        shrq    %%cl, %%rdx\n"
-"        addl    %%eax, %%r15d\n"         /* dist += hold & ((1 << op) - 1) */
-
-".L_check_window:\n"
-"        movq    %%rsi, %%r8\n"           /* save in so from can use it's reg */
-"        movq    %%rdi, %%rax\n"
-"        subq    40(%%rsp), %%rax\n"      /* nbytes = out - beg */
-
-"        cmpl    %%r15d, %%eax\n"
-"        jb      .L_clip_window\n"        /* if (dist > nbytes) 4.2% */
-
-"        movl    %%r14d, %%ecx\n"         /* ecx = len */
-"        movq    %%rdi, %%rsi\n"
-"        subq    %%r15, %%rsi\n"          /* from = out - dist */
-
-"        sarl    %%ecx\n"
-"        jnc     .L_copy_two\n"           /* if len % 2 == 0 */
-
-"        rep     movsw\n"
-"        movb    (%%rsi), %%al\n"
-"        movb    %%al, (%%rdi)\n"
-"        incq    %%rdi\n"
-
-"        movq    %%r8, %%rsi\n"           /* move in back to %rsi, toss from */
-"        jmp     .L_while_test\n"
-
-".L_copy_two:\n"
-"        rep     movsw\n"
-"        movq    %%r8, %%rsi\n"           /* move in back to %rsi, toss from */
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_check_dist_one:\n"
-"        cmpl    $1, %%r15d\n"            /* if dist 1, is a memset */
-"        jne     .L_check_window\n"
-"        cmpq    %%rdi, 40(%%rsp)\n"      /* if out == beg, outside window */
-"        je      .L_check_window\n"
-
-"        movl    %%r14d, %%ecx\n"         /* ecx = len */
-"        movb    -1(%%rdi), %%al\n"
-"        movb    %%al, %%ah\n"
-
-"        sarl    %%ecx\n"
-"        jnc     .L_set_two\n"
-"        movb    %%al, (%%rdi)\n"
-"        incq    %%rdi\n"
-
-".L_set_two:\n"
-"        rep     stosw\n"
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_test_for_second_level_length:\n"
-"        testb   $64, %%al\n"
-"        jnz     .L_test_for_end_of_block\n" /* if ((op & 64) != 0) */
-
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"         /* eax &= hold */
-"        addl    %%r14d, %%eax\n"        /* eax += len */
-"        movl    (%%rbp,%%rax,4), %%eax\n" /* eax = lcode[val+(hold&mask[op])]*/
-"        jmp     .L_dolen\n"
-
-".align 32,0x90\n"
-".L_test_for_second_level_dist:\n"
-"        testb   $64, %%al\n"
-"        jnz     .L_invalid_distance_code\n" /* if ((op & 64) != 0) */
-
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"         /* eax &= hold */
-"        addl    %%r15d, %%eax\n"        /* eax += dist */
-"        movl    (%%r11,%%rax,4), %%eax\n" /* eax = dcode[val+(hold&mask[op])]*/
-"        jmp     .L_dodist\n"
-
-".align 32,0x90\n"
-".L_clip_window:\n"
-"        movl    %%eax, %%ecx\n"         /* ecx = nbytes */
-"        movl    92(%%rsp), %%eax\n"     /* eax = wsize, prepare for dist cmp */
-"        negl    %%ecx\n"                /* nbytes = -nbytes */
-
-"        cmpl    %%r15d, %%eax\n"
-"        jb      .L_invalid_distance_too_far\n" /* if (dist > wsize) */
-
-"        addl    %%r15d, %%ecx\n"         /* nbytes = dist - nbytes */
-"        cmpl    $0, 96(%%rsp)\n"
-"        jne     .L_wrap_around_window\n" /* if (write != 0) */
-
-"        movq    56(%%rsp), %%rsi\n"     /* from  = window */
-"        subl    %%ecx, %%eax\n"         /* eax  -= nbytes */
-"        addq    %%rax, %%rsi\n"         /* from += wsize - nbytes */
-
-"        movl    %%r14d, %%eax\n"        /* eax = len */
-"        cmpl    %%ecx, %%r14d\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* eax -= nbytes */
-"        rep     movsb\n"
-"        movq    %%rdi, %%rsi\n"
-"        subq    %%r15, %%rsi\n"         /* from = &out[ -dist ] */
-"        jmp     .L_do_copy\n"
-
-".align 32,0x90\n"
-".L_wrap_around_window:\n"
-"        movl    96(%%rsp), %%eax\n"     /* eax = write */
-"        cmpl    %%eax, %%ecx\n"
-"        jbe     .L_contiguous_in_window\n" /* if (write >= nbytes) */
-
-"        movl    92(%%rsp), %%esi\n"     /* from  = wsize */
-"        addq    56(%%rsp), %%rsi\n"     /* from += window */
-"        addq    %%rax, %%rsi\n"         /* from += write */
-"        subq    %%rcx, %%rsi\n"         /* from -= nbytes */
-"        subl    %%eax, %%ecx\n"         /* nbytes -= write */
-
-"        movl    %%r14d, %%eax\n"        /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movq    56(%%rsp), %%rsi\n"     /* from = window */
-"        movl    96(%%rsp), %%ecx\n"     /* nbytes = write */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movq    %%rdi, %%rsi\n"
-"        subq    %%r15, %%rsi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"
-
-".align 32,0x90\n"
-".L_contiguous_in_window:\n"
-"        movq    56(%%rsp), %%rsi\n"     /* rsi = window */
-"        addq    %%rax, %%rsi\n"
-"        subq    %%rcx, %%rsi\n"         /* from += write - nbytes */
-
-"        movl    %%r14d, %%eax\n"        /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movq    %%rdi, %%rsi\n"
-"        subq    %%r15, %%rsi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"           /* if (nbytes >= len) */
-
-".align 32,0x90\n"
-".L_do_copy:\n"
-"        movl    %%eax, %%ecx\n"         /* ecx = len */
-"        rep     movsb\n"
-
-"        movq    %%r8, %%rsi\n"          /* move in back to %esi, toss from */
-"        jmp     .L_while_test\n"
-
-".L_test_for_end_of_block:\n"
-"        testb   $32, %%al\n"
-"        jz      .L_invalid_literal_length_code\n"
-"        movl    $1, 116(%%rsp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_literal_length_code:\n"
-"        movl    $2, 116(%%rsp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_distance_code:\n"
-"        movl    $3, 116(%%rsp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_distance_too_far:\n"
-"        movl    $4, 116(%%rsp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_break_loop:\n"
-"        movl    $0, 116(%%rsp)\n"
-
-".L_break_loop_with_status:\n"
-/* put in, out, bits, and hold back into ar and pop esp */
-"        movq    %%rsi, 16(%%rsp)\n"     /* in */
-"        movq    %%rdi, 32(%%rsp)\n"     /* out */
-"        movl    %%ebx, 88(%%rsp)\n"     /* bits */
-"        movq    %%rdx, 80(%%rsp)\n"     /* hold */
-"        movq    (%%rsp), %%rax\n"       /* restore rbp and rsp */
-"        movq    8(%%rsp), %%rbp\n"
-"        movq    %%rax, %%rsp\n"
-          :
-          : "m" (ar)
-          : "memory", "%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%rdi",
-            "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"
-    );
-#elif ( defined( __GNUC__ ) || defined( __ICC ) ) && defined( __i386 )
-    __asm__ __volatile__ (
-"        leal    %0, %%eax\n"
-"        movl    %%esp, (%%eax)\n"        /* save esp, ebp */
-"        movl    %%ebp, 4(%%eax)\n"
-"        movl    %%eax, %%esp\n"
-"        movl    8(%%esp), %%esi\n"       /* esi = in */
-"        movl    16(%%esp), %%edi\n"      /* edi = out */
-"        movl    40(%%esp), %%edx\n"      /* edx = hold */
-"        movl    44(%%esp), %%ebx\n"      /* ebx = bits */
-"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */
-
-"        cld\n"
-"        jmp     .L_do_loop\n"
-
-".align 32,0x90\n"
-".L_while_test:\n"
-"        cmpl    %%edi, 24(%%esp)\n"      /* out < end */
-"        jbe     .L_break_loop\n"
-"        cmpl    %%esi, 12(%%esp)\n"      /* in < last */
-"        jbe     .L_break_loop\n"
-
-".L_do_loop:\n"
-"        cmpb    $15, %%bl\n"
-"        ja      .L_get_length_code\n"    /* if (15 < bits) */
-
-"        xorl    %%eax, %%eax\n"
-"        lodsw\n"                         /* al = *(ushort *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $16, %%bl\n"             /* bits += 16 */
-"        shll    %%cl, %%eax\n"
-"        orl     %%eax, %%edx\n"        /* hold |= *((ushort *)in)++ << bits */
-
-".L_get_length_code:\n"
-"        movl    56(%%esp), %%eax\n"      /* eax = lmask */
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        movl    (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[hold & lmask] */
-
-".L_dolen:\n"
-"        movb    %%ah, %%cl\n"            /* cl = this.bits */
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrl    %%cl, %%edx\n"           /* hold >>= this.bits */
-
-"        testb   %%al, %%al\n"
-"        jnz     .L_test_for_length_base\n" /* if (op != 0) 45.7% */
-
-"        shrl    $16, %%eax\n"            /* output this.val char */
-"        stosb\n"
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_test_for_length_base:\n"
-"        movl    %%eax, %%ecx\n"          /* len = this */
-"        shrl    $16, %%ecx\n"            /* len = this.val */
-"        movl    %%ecx, 64(%%esp)\n"      /* save len */
-"        movb    %%al, %%cl\n"
-
-"        testb   $16, %%al\n"
-"        jz      .L_test_for_second_level_length\n" /* if ((op & 16) == 0) 8% */
-"        andb    $15, %%cl\n"             /* op &= 15 */
-"        jz      .L_decode_distance\n"    /* if (!op) */
-"        cmpb    %%cl, %%bl\n"
-"        jae     .L_add_bits_to_len\n"    /* if (op <= bits) */
-
-"        movb    %%cl, %%ch\n"            /* stash op in ch, freeing cl */
-"        xorl    %%eax, %%eax\n"
-"        lodsw\n"                         /* al = *(ushort *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $16, %%bl\n"             /* bits += 16 */
-"        shll    %%cl, %%eax\n"
-"        orl     %%eax, %%edx\n"         /* hold |= *((ushort *)in)++ << bits */
-"        movb    %%ch, %%cl\n"            /* move op back to ecx */
-
-".L_add_bits_to_len:\n"
-"        subb    %%cl, %%bl\n"
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        shrl    %%cl, %%edx\n"
-"        addl    %%eax, 64(%%esp)\n"      /* len += hold & mask[op] */
-
-".L_decode_distance:\n"
-"        cmpb    $15, %%bl\n"
-"        ja      .L_get_distance_code\n"  /* if (15 < bits) */
-
-"        xorl    %%eax, %%eax\n"
-"        lodsw\n"                         /* al = *(ushort *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $16, %%bl\n"             /* bits += 16 */
-"        shll    %%cl, %%eax\n"
-"        orl     %%eax, %%edx\n"         /* hold |= *((ushort *)in)++ << bits */
-
-".L_get_distance_code:\n"
-"        movl    60(%%esp), %%eax\n"      /* eax = dmask */
-"        movl    36(%%esp), %%ecx\n"      /* ecx = dcode */
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        movl    (%%ecx,%%eax,4), %%eax\n"/* eax = dcode[hold & dmask] */
-
-".L_dodist:\n"
-"        movl    %%eax, %%ebp\n"          /* dist = this */
-"        shrl    $16, %%ebp\n"            /* dist = this.val */
-"        movb    %%ah, %%cl\n"
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrl    %%cl, %%edx\n"           /* hold >>= this.bits */
-"        movb    %%al, %%cl\n"            /* cl = this.op */
-
-"        testb   $16, %%al\n"             /* if ((op & 16) == 0) */
-"        jz      .L_test_for_second_level_dist\n"
-"        andb    $15, %%cl\n"             /* op &= 15 */
-"        jz      .L_check_dist_one\n"
-"        cmpb    %%cl, %%bl\n"
-"        jae     .L_add_bits_to_dist\n"   /* if (op <= bits) 97.6% */
-
-"        movb    %%cl, %%ch\n"            /* stash op in ch, freeing cl */
-"        xorl    %%eax, %%eax\n"
-"        lodsw\n"                         /* al = *(ushort *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $16, %%bl\n"             /* bits += 16 */
-"        shll    %%cl, %%eax\n"
-"        orl     %%eax, %%edx\n"        /* hold |= *((ushort *)in)++ << bits */
-"        movb    %%ch, %%cl\n"            /* move op back to ecx */
-
-".L_add_bits_to_dist:\n"
-"        subb    %%cl, %%bl\n"
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"                 /* (1 << op) - 1 */
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        shrl    %%cl, %%edx\n"
-"        addl    %%eax, %%ebp\n"          /* dist += hold & ((1 << op) - 1) */
-
-".L_check_window:\n"
-"        movl    %%esi, 8(%%esp)\n"       /* save in so from can use it's reg */
-"        movl    %%edi, %%eax\n"
-"        subl    20(%%esp), %%eax\n"      /* nbytes = out - beg */
-
-"        cmpl    %%ebp, %%eax\n"
-"        jb      .L_clip_window\n"        /* if (dist > nbytes) 4.2% */
-
-"        movl    64(%%esp), %%ecx\n"      /* ecx = len */
-"        movl    %%edi, %%esi\n"
-"        subl    %%ebp, %%esi\n"          /* from = out - dist */
-
-"        sarl    %%ecx\n"
-"        jnc     .L_copy_two\n"           /* if len % 2 == 0 */
-
-"        rep     movsw\n"
-"        movb    (%%esi), %%al\n"
-"        movb    %%al, (%%edi)\n"
-"        incl    %%edi\n"
-
-"        movl    8(%%esp), %%esi\n"       /* move in back to %esi, toss from */
-"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */
-"        jmp     .L_while_test\n"
-
-".L_copy_two:\n"
-"        rep     movsw\n"
-"        movl    8(%%esp), %%esi\n"       /* move in back to %esi, toss from */
-"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_check_dist_one:\n"
-"        cmpl    $1, %%ebp\n"            /* if dist 1, is a memset */
-"        jne     .L_check_window\n"
-"        cmpl    %%edi, 20(%%esp)\n"
-"        je      .L_check_window\n"      /* out == beg, if outside window */
-
-"        movl    64(%%esp), %%ecx\n"      /* ecx = len */
-"        movb    -1(%%edi), %%al\n"
-"        movb    %%al, %%ah\n"
-
-"        sarl    %%ecx\n"
-"        jnc     .L_set_two\n"
-"        movb    %%al, (%%edi)\n"
-"        incl    %%edi\n"
-
-".L_set_two:\n"
-"        rep     stosw\n"
-"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_test_for_second_level_length:\n"
-"        testb   $64, %%al\n"
-"        jnz     .L_test_for_end_of_block\n" /* if ((op & 64) != 0) */
-
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"         /* eax &= hold */
-"        addl    64(%%esp), %%eax\n"     /* eax += len */
-"        movl    (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[val+(hold&mask[op])]*/
-"        jmp     .L_dolen\n"
-
-".align 32,0x90\n"
-".L_test_for_second_level_dist:\n"
-"        testb   $64, %%al\n"
-"        jnz     .L_invalid_distance_code\n" /* if ((op & 64) != 0) */
-
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"         /* eax &= hold */
-"        addl    %%ebp, %%eax\n"         /* eax += dist */
-"        movl    36(%%esp), %%ecx\n"     /* ecx = dcode */
-"        movl    (%%ecx,%%eax,4), %%eax\n" /* eax = dcode[val+(hold&mask[op])]*/
-"        jmp     .L_dodist\n"
-
-".align 32,0x90\n"
-".L_clip_window:\n"
-"        movl    %%eax, %%ecx\n"
-"        movl    48(%%esp), %%eax\n"     /* eax = wsize */
-"        negl    %%ecx\n"                /* nbytes = -nbytes */
-"        movl    28(%%esp), %%esi\n"     /* from = window */
-
-"        cmpl    %%ebp, %%eax\n"
-"        jb      .L_invalid_distance_too_far\n" /* if (dist > wsize) */
-
-"        addl    %%ebp, %%ecx\n"         /* nbytes = dist - nbytes */
-"        cmpl    $0, 52(%%esp)\n"
-"        jne     .L_wrap_around_window\n" /* if (write != 0) */
-
-"        subl    %%ecx, %%eax\n"
-"        addl    %%eax, %%esi\n"         /* from += wsize - nbytes */
-
-"        movl    64(%%esp), %%eax\n"     /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movl    %%edi, %%esi\n"
-"        subl    %%ebp, %%esi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"
-
-".align 32,0x90\n"
-".L_wrap_around_window:\n"
-"        movl    52(%%esp), %%eax\n"     /* eax = write */
-"        cmpl    %%eax, %%ecx\n"
-"        jbe     .L_contiguous_in_window\n" /* if (write >= nbytes) */
-
-"        addl    48(%%esp), %%esi\n"     /* from += wsize */
-"        addl    %%eax, %%esi\n"         /* from += write */
-"        subl    %%ecx, %%esi\n"         /* from -= nbytes */
-"        subl    %%eax, %%ecx\n"         /* nbytes -= write */
-
-"        movl    64(%%esp), %%eax\n"     /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movl    28(%%esp), %%esi\n"     /* from = window */
-"        movl    52(%%esp), %%ecx\n"     /* nbytes = write */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movl    %%edi, %%esi\n"
-"        subl    %%ebp, %%esi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"
-
-".align 32,0x90\n"
-".L_contiguous_in_window:\n"
-"        addl    %%eax, %%esi\n"
-"        subl    %%ecx, %%esi\n"         /* from += write - nbytes */
-
-"        movl    64(%%esp), %%eax\n"     /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movl    %%edi, %%esi\n"
-"        subl    %%ebp, %%esi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"           /* if (nbytes >= len) */
-
-".align 32,0x90\n"
-".L_do_copy:\n"
-"        movl    %%eax, %%ecx\n"
-"        rep     movsb\n"
-
-"        movl    8(%%esp), %%esi\n"      /* move in back to %esi, toss from */
-"        movl    32(%%esp), %%ebp\n"     /* ebp = lcode */
-"        jmp     .L_while_test\n"
-
-".L_test_for_end_of_block:\n"
-"        testb   $32, %%al\n"
-"        jz      .L_invalid_literal_length_code\n"
-"        movl    $1, 72(%%esp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_literal_length_code:\n"
-"        movl    $2, 72(%%esp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_distance_code:\n"
-"        movl    $3, 72(%%esp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_distance_too_far:\n"
-"        movl    8(%%esp), %%esi\n"
-"        movl    $4, 72(%%esp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_break_loop:\n"
-"        movl    $0, 72(%%esp)\n"
-
-".L_break_loop_with_status:\n"
-/* put in, out, bits, and hold back into ar and pop esp */
-"        movl    %%esi, 8(%%esp)\n"      /* save in */
-"        movl    %%edi, 16(%%esp)\n"     /* save out */
-"        movl    %%ebx, 44(%%esp)\n"     /* save bits */
-"        movl    %%edx, 40(%%esp)\n"     /* save hold */
-"        movl    4(%%esp), %%ebp\n"      /* restore esp, ebp */
-"        movl    (%%esp), %%esp\n"
-          :
-          : "m" (ar)
-          : "memory", "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi"
-    );
-#elif defined( _MSC_VER ) && ! defined( _M_AMD64 )
-    __asm {
-	lea	eax, ar
-	mov	[eax], esp         /* save esp, ebp */
-	mov	[eax+4], ebp
-	mov	esp, eax
-	mov	esi, [esp+8]       /* esi = in */
-	mov	edi, [esp+16]      /* edi = out */
-	mov	edx, [esp+40]      /* edx = hold */
-	mov	ebx, [esp+44]      /* ebx = bits */
-	mov	ebp, [esp+32]      /* ebp = lcode */
-
-	cld
-	jmp	L_do_loop
-
-ALIGN 4
-L_while_test:
-	cmp	[esp+24], edi
-	jbe	L_break_loop
-	cmp	[esp+12], esi
-	jbe	L_break_loop
-
-L_do_loop:
-	cmp	bl, 15
-	ja	L_get_length_code    /* if (15 < bits) */
-
-	xor	eax, eax
-	lodsw                         /* al = *(ushort *)in++ */
-	mov	cl, bl            /* cl = bits, needs it for shifting */
-	add	bl, 16             /* bits += 16 */
-	shl	eax, cl
-	or	edx, eax        /* hold |= *((ushort *)in)++ << bits */
-
-L_get_length_code:
-	mov	eax, [esp+56]      /* eax = lmask */
-	and	eax, edx          /* eax &= hold */
-	mov	eax, [ebp+eax*4] /* eax = lcode[hold & lmask] */
-
-L_dolen:
-	mov	cl, ah            /* cl = this.bits */
-	sub	bl, ah            /* bits -= this.bits */
-	shr	edx, cl           /* hold >>= this.bits */
-
-	test	al, al
-	jnz	L_test_for_length_base /* if (op != 0) 45.7% */
-
-	shr	eax, 16            /* output this.val char */
-	stosb
-	jmp	L_while_test
-
-ALIGN 4
-L_test_for_length_base:
-	mov	ecx, eax          /* len = this */
-	shr	ecx, 16            /* len = this.val */
-	mov	[esp+64], ecx      /* save len */
-	mov	cl, al
-
-	test	al, 16
-	jz	L_test_for_second_level_length /* if ((op & 16) == 0) 8% */
-	and	cl, 15             /* op &= 15 */
-	jz	L_decode_distance    /* if (!op) */
-	cmp	bl, cl
-	jae	L_add_bits_to_len    /* if (op <= bits) */
-
-	mov	ch, cl            /* stash op in ch, freeing cl */
-	xor	eax, eax
-	lodsw                         /* al = *(ushort *)in++ */
-	mov	cl, bl            /* cl = bits, needs it for shifting */
-	add	bl, 16             /* bits += 16 */
-	shl	eax, cl
-	or	edx, eax         /* hold |= *((ushort *)in)++ << bits */
-	mov	cl, ch            /* move op back to ecx */
-
-L_add_bits_to_len:
-	sub	bl, cl
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx          /* eax &= hold */
-	shr	edx, cl
-	add	[esp+64], eax      /* len += hold & mask[op] */
-
-L_decode_distance:
-	cmp	bl, 15
-	ja	L_get_distance_code  /* if (15 < bits) */
-
-	xor	eax, eax
-	lodsw                         /* al = *(ushort *)in++ */
-	mov	cl, bl            /* cl = bits, needs it for shifting */
-	add	bl, 16             /* bits += 16 */
-	shl	eax, cl
-	or	edx, eax         /* hold |= *((ushort *)in)++ << bits */
-
-L_get_distance_code:
-	mov	eax, [esp+60]      /* eax = dmask */
-	mov	ecx, [esp+36]      /* ecx = dcode */
-	and	eax, edx          /* eax &= hold */
-	mov	eax, [ecx+eax*4]/* eax = dcode[hold & dmask] */
-
-L_dodist:
-	mov	ebp, eax          /* dist = this */
-	shr	ebp, 16            /* dist = this.val */
-	mov	cl, ah
-	sub	bl, ah            /* bits -= this.bits */
-	shr	edx, cl           /* hold >>= this.bits */
-	mov	cl, al            /* cl = this.op */
-
-	test	al, 16             /* if ((op & 16) == 0) */
-	jz	L_test_for_second_level_dist
-	and	cl, 15             /* op &= 15 */
-	jz	L_check_dist_one
-	cmp	bl, cl
-	jae	L_add_bits_to_dist   /* if (op <= bits) 97.6% */
-
-	mov	ch, cl            /* stash op in ch, freeing cl */
-	xor	eax, eax
-	lodsw                         /* al = *(ushort *)in++ */
-	mov	cl, bl            /* cl = bits, needs it for shifting */
-	add	bl, 16             /* bits += 16 */
-	shl	eax, cl
-	or	edx, eax        /* hold |= *((ushort *)in)++ << bits */
-	mov	cl, ch            /* move op back to ecx */
-
-L_add_bits_to_dist:
-	sub	bl, cl
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax                 /* (1 << op) - 1 */
-	and	eax, edx          /* eax &= hold */
-	shr	edx, cl
-	add	ebp, eax          /* dist += hold & ((1 << op) - 1) */
-
-L_check_window:
-	mov	[esp+8], esi       /* save in so from can use it's reg */
-	mov	eax, edi
-	sub	eax, [esp+20]      /* nbytes = out - beg */
-
-	cmp	eax, ebp
-	jb	L_clip_window        /* if (dist > nbytes) 4.2% */
-
-	mov	ecx, [esp+64]      /* ecx = len */
-	mov	esi, edi
-	sub	esi, ebp          /* from = out - dist */
-
-	sar	ecx, 1
-	jnc	L_copy_two
-
-	rep     movsw
-	mov	al, [esi]
-	mov	[edi], al
-	inc	edi
-
-	mov	esi, [esp+8]      /* move in back to %esi, toss from */
-	mov	ebp, [esp+32]     /* ebp = lcode */
-	jmp	L_while_test
-
-L_copy_two:
-	rep     movsw
-	mov	esi, [esp+8]      /* move in back to %esi, toss from */
-	mov	ebp, [esp+32]     /* ebp = lcode */
-	jmp	L_while_test
-
-ALIGN 4
-L_check_dist_one:
-	cmp	ebp, 1            /* if dist 1, is a memset */
-	jne	L_check_window
-	cmp	[esp+20], edi
-	je	L_check_window    /* out == beg, if outside window */
-
-	mov	ecx, [esp+64]     /* ecx = len */
-	mov	al, [edi-1]
-	mov	ah, al
-
-	sar	ecx, 1
-	jnc	L_set_two
-	mov	[edi], al         /* memset out with from[-1] */
-	inc	edi
-
-L_set_two:
-	rep     stosw
-	mov	ebp, [esp+32]     /* ebp = lcode */
-	jmp	L_while_test
-
-ALIGN 4
-L_test_for_second_level_length:
-	test	al, 64
-	jnz	L_test_for_end_of_block /* if ((op & 64) != 0) */
-
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx         /* eax &= hold */
-	add	eax, [esp+64]     /* eax += len */
-	mov	eax, [ebp+eax*4] /* eax = lcode[val+(hold&mask[op])]*/
-	jmp	L_dolen
-
-ALIGN 4
-L_test_for_second_level_dist:
-	test	al, 64
-	jnz	L_invalid_distance_code /* if ((op & 64) != 0) */
-
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx         /* eax &= hold */
-	add	eax, ebp         /* eax += dist */
-	mov	ecx, [esp+36]     /* ecx = dcode */
-	mov	eax, [ecx+eax*4] /* eax = dcode[val+(hold&mask[op])]*/
-	jmp	L_dodist
-
-ALIGN 4
-L_clip_window:
-	mov	ecx, eax
-	mov	eax, [esp+48]     /* eax = wsize */
-	neg	ecx                /* nbytes = -nbytes */
-	mov	esi, [esp+28]     /* from = window */
-
-	cmp	eax, ebp
-	jb	L_invalid_distance_too_far /* if (dist > wsize) */
-
-	add	ecx, ebp         /* nbytes = dist - nbytes */
-	cmp	dword ptr [esp+52], 0
-	jne	L_wrap_around_window /* if (write != 0) */
-
-	sub	eax, ecx
-	add	esi, eax         /* from += wsize - nbytes */
-
-	mov	eax, [esp+64]    /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy          /* if (nbytes >= len) */
-
-	sub	eax, ecx         /* len -= nbytes */
-	rep     movsb
-	mov	esi, edi
-	sub	esi, ebp         /* from = out - dist */
-	jmp	L_do_copy
-
-ALIGN 4
-L_wrap_around_window:
-	mov	eax, [esp+52]    /* eax = write */
-	cmp	ecx, eax
-	jbe	L_contiguous_in_window /* if (write >= nbytes) */
-
-	add	esi, [esp+48]    /* from += wsize */
-	add	esi, eax         /* from += write */
-	sub	esi, ecx         /* from -= nbytes */
-	sub	ecx, eax         /* nbytes -= write */
-
-	mov	eax, [esp+64]    /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy          /* if (nbytes >= len) */
-
-	sub	eax, ecx         /* len -= nbytes */
-	rep     movsb
-	mov	esi, [esp+28]     /* from = window */
-	mov	ecx, [esp+52]     /* nbytes = write */
-	cmp	eax, ecx
-	jbe	L_do_copy          /* if (nbytes >= len) */
-
-	sub	eax, ecx         /* len -= nbytes */
-	rep     movsb
-	mov	esi, edi
-	sub	esi, ebp         /* from = out - dist */
-	jmp	L_do_copy
-
-ALIGN 4
-L_contiguous_in_window:
-	add	esi, eax
-	sub	esi, ecx         /* from += write - nbytes */
-
-	mov	eax, [esp+64]    /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy          /* if (nbytes >= len) */
-
-	sub	eax, ecx         /* len -= nbytes */
-	rep     movsb
-	mov	esi, edi
-	sub	esi, ebp         /* from = out - dist */
-	jmp	L_do_copy
-
-ALIGN 4
-L_do_copy:
-	mov	ecx, eax
-	rep     movsb
-
-	mov	esi, [esp+8]      /* move in back to %esi, toss from */
-	mov	ebp, [esp+32]     /* ebp = lcode */
-	jmp	L_while_test
-
-L_test_for_end_of_block:
-	test	al, 32
-	jz	L_invalid_literal_length_code
-	mov	dword ptr [esp+72], 1
-	jmp	L_break_loop_with_status
-
-L_invalid_literal_length_code:
-	mov	dword ptr [esp+72], 2
-	jmp	L_break_loop_with_status
-
-L_invalid_distance_code:
-	mov	dword ptr [esp+72], 3
-	jmp	L_break_loop_with_status
-
-L_invalid_distance_too_far:
-	mov	esi, [esp+4]
-	mov	dword ptr [esp+72], 4
-	jmp	L_break_loop_with_status
-
-L_break_loop:
-	mov	dword ptr [esp+72], 0
-
-L_break_loop_with_status:
-/* put in, out, bits, and hold back into ar and pop esp */
-	mov	[esp+8], esi     /* save in */
-	mov	[esp+16], edi    /* save out */
-	mov	[esp+44], ebx    /* save bits */
-	mov	[esp+40], edx    /* save hold */
-	mov	ebp, [esp+4]     /* restore esp, ebp */
-	mov	esp, [esp]
-    }
-#else
-#error "x86 architecture not defined"
-#endif
-
-    if (ar.status > 1) {
-        if (ar.status == 2)
-            strm->msg = "invalid literal/length code";
-        else if (ar.status == 3)
-            strm->msg = "invalid distance code";
-        else
-            strm->msg = "invalid distance too far back";
-        state->mode = BAD;
-    }
-    else if ( ar.status == 1 ) {
-        state->mode = TYPE;
-    }
-
-    /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
-    ar.len = ar.bits >> 3;
-    ar.in -= ar.len;
-    ar.bits -= ar.len << 3;
-    ar.hold &= (1U << ar.bits) - 1;
-
-    /* update state and return */
-    strm->next_in = ar.in;
-    strm->next_out = ar.out;
-    strm->avail_in = (unsigned)(ar.in < ar.last ?
-                                PAD_AVAIL_IN + (ar.last - ar.in) :
-                                PAD_AVAIL_IN - (ar.in - ar.last));
-    strm->avail_out = (unsigned)(ar.out < ar.end ?
-                                 PAD_AVAIL_OUT + (ar.end - ar.out) :
-                                 PAD_AVAIL_OUT - (ar.out - ar.end));
-    state->hold = ar.hold;
-    state->bits = ar.bits;
-    return;
-}
-
diff --git a/libs/zlib/contrib/inflate86/inffast.S b/libs/zlib/contrib/inflate86/inffast.S
deleted file mode 100644
index 2245a2905b..0000000000
--- a/libs/zlib/contrib/inflate86/inffast.S
+++ /dev/null
@@ -1,1368 +0,0 @@
-/*
- * inffast.S is a hand tuned assembler version of:
- *
- * inffast.c -- fast decoding
- * Copyright (C) 1995-2003 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Copyright (C) 2003 Chris Anderson <christop@charm.net>
- * Please use the copyright conditions above.
- *
- * This version (Jan-23-2003) of inflate_fast was coded and tested under
- * GNU/Linux on a pentium 3, using the gcc-3.2 compiler distribution.  On that
- * machine, I found that gzip style archives decompressed about 20% faster than
- * the gcc-3.2 -O3 -fomit-frame-pointer compiled version.  Your results will
- * depend on how large of a buffer is used for z_stream.next_in & next_out
- * (8K-32K worked best for my 256K cpu cache) and how much overhead there is in
- * stream processing I/O and crc32/addler32.  In my case, this routine used
- * 70% of the cpu time and crc32 used 20%.
- *
- * I am confident that this version will work in the general case, but I have
- * not tested a wide variety of datasets or a wide variety of platforms.
- *
- * Jan-24-2003 -- Added -DUSE_MMX define for slightly faster inflating.
- * It should be a runtime flag instead of compile time flag...
- *
- * Jan-26-2003 -- Added runtime check for MMX support with cpuid instruction.
- * With -DUSE_MMX, only MMX code is compiled.  With -DNO_MMX, only non-MMX code
- * is compiled.  Without either option, runtime detection is enabled.  Runtime
- * detection should work on all modern cpus and the recomended algorithm (flip
- * ID bit on eflags and then use the cpuid instruction) is used in many
- * multimedia applications.  Tested under win2k with gcc-2.95 and gas-2.12
- * distributed with cygwin3.  Compiling with gcc-2.95 -c inffast.S -o
- * inffast.obj generates a COFF object which can then be linked with MSVC++
- * compiled code.  Tested under FreeBSD 4.7 with gcc-2.95.
- *
- * Jan-28-2003 -- Tested Athlon XP... MMX mode is slower than no MMX (and
- * slower than compiler generated code).  Adjusted cpuid check to use the MMX
- * code only for Pentiums < P4 until I have more data on the P4.  Speed
- * improvment is only about 15% on the Athlon when compared with code generated
- * with MSVC++.  Not sure yet, but I think the P4 will also be slower using the
- * MMX mode because many of it's x86 ALU instructions execute in .5 cycles and
- * have less latency than MMX ops.  Added code to buffer the last 11 bytes of
- * the input stream since the MMX code grabs bits in chunks of 32, which
- * differs from the inffast.c algorithm.  I don't think there would have been
- * read overruns where a page boundary was crossed (a segfault), but there
- * could have been overruns when next_in ends on unaligned memory (unintialized
- * memory read).
- *
- * Mar-13-2003 -- P4 MMX is slightly slower than P4 NO_MMX.  I created a C
- * version of the non-MMX code so that it doesn't depend on zstrm and zstate
- * structure offsets which are hard coded in this file.  This was last tested
- * with zlib-1.2.0 which is currently in beta testing, newer versions of this
- * and inffas86.c can be found at http://www.eetbeetee.com/zlib/ and
- * http://www.charm.net/~christop/zlib/
- */
-
-
-/*
- * if you have underscore linking problems (_inflate_fast undefined), try
- * using -DGAS_COFF
- */
-#if ! defined( GAS_COFF ) && ! defined( GAS_ELF )
-
-#if defined( WIN32 ) || defined( __CYGWIN__ )
-#define GAS_COFF /* windows object format */
-#else
-#define GAS_ELF
-#endif
-
-#endif /* ! GAS_COFF && ! GAS_ELF */
-
-
-#if defined( GAS_COFF )
-
-/* coff externals have underscores */
-#define inflate_fast _inflate_fast
-#define inflate_fast_use_mmx _inflate_fast_use_mmx
-
-#endif /* GAS_COFF */
-
-
-.file "inffast.S"
-
-.globl inflate_fast
-
-.text
-.align 4,0
-.L_invalid_literal_length_code_msg:
-.string "invalid literal/length code"
-
-.align 4,0
-.L_invalid_distance_code_msg:
-.string "invalid distance code"
-
-.align 4,0
-.L_invalid_distance_too_far_msg:
-.string "invalid distance too far back"
-
-#if ! defined( NO_MMX )
-.align 4,0
-.L_mask: /* mask[N] = ( 1 << N ) - 1 */
-.long 0
-.long 1
-.long 3
-.long 7
-.long 15
-.long 31
-.long 63
-.long 127
-.long 255
-.long 511
-.long 1023
-.long 2047
-.long 4095
-.long 8191
-.long 16383
-.long 32767
-.long 65535
-.long 131071
-.long 262143
-.long 524287
-.long 1048575
-.long 2097151
-.long 4194303
-.long 8388607
-.long 16777215
-.long 33554431
-.long 67108863
-.long 134217727
-.long 268435455
-.long 536870911
-.long 1073741823
-.long 2147483647
-.long 4294967295
-#endif /* NO_MMX */
-
-.text
-
-/*
- * struct z_stream offsets, in zlib.h
- */
-#define next_in_strm   0   /* strm->next_in */
-#define avail_in_strm  4   /* strm->avail_in */
-#define next_out_strm  12  /* strm->next_out */
-#define avail_out_strm 16  /* strm->avail_out */
-#define msg_strm       24  /* strm->msg */
-#define state_strm     28  /* strm->state */
-
-/*
- * struct inflate_state offsets, in inflate.h
- */
-#define mode_state     0   /* state->mode */
-#define wsize_state    32  /* state->wsize */
-#define write_state    40  /* state->write */
-#define window_state   44  /* state->window */
-#define hold_state     48  /* state->hold */
-#define bits_state     52  /* state->bits */
-#define lencode_state  68  /* state->lencode */
-#define distcode_state 72  /* state->distcode */
-#define lenbits_state  76  /* state->lenbits */
-#define distbits_state 80  /* state->distbits */
-
-/*
- * inflate_fast's activation record
- */
-#define local_var_size 64 /* how much local space for vars */
-#define strm_sp        88 /* first arg: z_stream * (local_var_size + 24) */
-#define start_sp       92 /* second arg: unsigned int (local_var_size + 28) */
-
-/*
- * offsets for local vars on stack
- */
-#define out            60  /* unsigned char* */
-#define window         56  /* unsigned char* */
-#define wsize          52  /* unsigned int */
-#define write          48  /* unsigned int */
-#define in             44  /* unsigned char* */
-#define beg            40  /* unsigned char* */
-#define buf            28  /* char[ 12 ] */
-#define len            24  /* unsigned int */
-#define last           20  /* unsigned char* */
-#define end            16  /* unsigned char* */
-#define dcode          12  /* code* */
-#define lcode           8  /* code* */
-#define dmask           4  /* unsigned int */
-#define lmask           0  /* unsigned int */
-
-/*
- * typedef enum inflate_mode consts, in inflate.h
- */
-#define INFLATE_MODE_TYPE 11  /* state->mode flags enum-ed in inflate.h */
-#define INFLATE_MODE_BAD  26
-
-
-#if ! defined( USE_MMX ) && ! defined( NO_MMX )
-
-#define RUN_TIME_MMX
-
-#define CHECK_MMX    1
-#define DO_USE_MMX   2
-#define DONT_USE_MMX 3
-
-.globl inflate_fast_use_mmx
-
-.data
-
-.align 4,0
-inflate_fast_use_mmx: /* integer flag for run time control 1=check,2=mmx,3=no */
-.long CHECK_MMX
-
-#if defined( GAS_ELF )
-/* elf info */
-.type   inflate_fast_use_mmx,@object
-.size   inflate_fast_use_mmx,4
-#endif
-
-#endif /* RUN_TIME_MMX */
-
-#if defined( GAS_COFF )
-/* coff info: scl 2 = extern, type 32 = function */
-.def inflate_fast; .scl 2; .type 32; .endef
-#endif
-
-.text
-
-.align 32,0x90
-inflate_fast:
-        pushl   %edi
-        pushl   %esi
-        pushl   %ebp
-        pushl   %ebx
-        pushf   /* save eflags (strm_sp, state_sp assumes this is 32 bits) */
-        subl    $local_var_size, %esp
-        cld
-
-#define strm_r  %esi
-#define state_r %edi
-
-        movl    strm_sp(%esp), strm_r
-        movl    state_strm(strm_r), state_r
-
-        /* in = strm->next_in;
-         * out = strm->next_out;
-         * last = in + strm->avail_in - 11;
-         * beg = out - (start - strm->avail_out);
-         * end = out + (strm->avail_out - 257);
-         */
-        movl    avail_in_strm(strm_r), %edx
-        movl    next_in_strm(strm_r), %eax
-
-        addl    %eax, %edx      /* avail_in += next_in */
-        subl    $11, %edx       /* avail_in -= 11 */
-
-        movl    %eax, in(%esp)
-        movl    %edx, last(%esp)
-
-        movl    start_sp(%esp), %ebp
-        movl    avail_out_strm(strm_r), %ecx
-        movl    next_out_strm(strm_r), %ebx
-
-        subl    %ecx, %ebp      /* start -= avail_out */
-        negl    %ebp            /* start = -start */
-        addl    %ebx, %ebp      /* start += next_out */
-
-        subl    $257, %ecx      /* avail_out -= 257 */
-        addl    %ebx, %ecx      /* avail_out += out */
-
-        movl    %ebx, out(%esp)
-        movl    %ebp, beg(%esp)
-        movl    %ecx, end(%esp)
-
-        /* wsize = state->wsize;
-         * write = state->write;
-         * window = state->window;
-         * hold = state->hold;
-         * bits = state->bits;
-         * lcode = state->lencode;
-         * dcode = state->distcode;
-         * lmask = ( 1 << state->lenbits ) - 1;
-         * dmask = ( 1 << state->distbits ) - 1;
-         */
-
-        movl    lencode_state(state_r), %eax
-        movl    distcode_state(state_r), %ecx
-
-        movl    %eax, lcode(%esp)
-        movl    %ecx, dcode(%esp)
-
-        movl    $1, %eax
-        movl    lenbits_state(state_r), %ecx
-        shll    %cl, %eax
-        decl    %eax
-        movl    %eax, lmask(%esp)
-
-        movl    $1, %eax
-        movl    distbits_state(state_r), %ecx
-        shll    %cl, %eax
-        decl    %eax
-        movl    %eax, dmask(%esp)
-
-        movl    wsize_state(state_r), %eax
-        movl    write_state(state_r), %ecx
-        movl    window_state(state_r), %edx
-
-        movl    %eax, wsize(%esp)
-        movl    %ecx, write(%esp)
-        movl    %edx, window(%esp)
-
-        movl    hold_state(state_r), %ebp
-        movl    bits_state(state_r), %ebx
-
-#undef strm_r
-#undef state_r
-
-#define in_r       %esi
-#define from_r     %esi
-#define out_r      %edi
-
-        movl    in(%esp), in_r
-        movl    last(%esp), %ecx
-        cmpl    in_r, %ecx
-        ja      .L_align_long           /* if in < last */
-
-        addl    $11, %ecx               /* ecx = &in[ avail_in ] */
-        subl    in_r, %ecx              /* ecx = avail_in */
-        movl    $12, %eax
-        subl    %ecx, %eax              /* eax = 12 - avail_in */
-        leal    buf(%esp), %edi
-        rep     movsb                   /* memcpy( buf, in, avail_in ) */
-        movl    %eax, %ecx
-        xorl    %eax, %eax
-        rep     stosb         /* memset( &buf[ avail_in ], 0, 12 - avail_in ) */
-        leal    buf(%esp), in_r         /* in = buf */
-        movl    in_r, last(%esp)        /* last = in, do just one iteration */
-        jmp     .L_is_aligned
-
-        /* align in_r on long boundary */
-.L_align_long:
-        testl   $3, in_r
-        jz      .L_is_aligned
-        xorl    %eax, %eax
-        movb    (in_r), %al
-        incl    in_r
-        movl    %ebx, %ecx
-        addl    $8, %ebx
-        shll    %cl, %eax
-        orl     %eax, %ebp
-        jmp     .L_align_long
-
-.L_is_aligned:
-        movl    out(%esp), out_r
-
-#if defined( NO_MMX )
-        jmp     .L_do_loop
-#endif
-
-#if defined( USE_MMX )
-        jmp     .L_init_mmx
-#endif
-
-/*** Runtime MMX check ***/
-
-#if defined( RUN_TIME_MMX )
-.L_check_mmx:
-        cmpl    $DO_USE_MMX, inflate_fast_use_mmx
-        je      .L_init_mmx
-        ja      .L_do_loop /* > 2 */
-
-        pushl   %eax
-        pushl   %ebx
-        pushl   %ecx
-        pushl   %edx
-        pushf
-        movl    (%esp), %eax      /* copy eflags to eax */
-        xorl    $0x200000, (%esp) /* try toggling ID bit of eflags (bit 21)
-                                   * to see if cpu supports cpuid...
-                                   * ID bit method not supported by NexGen but
-                                   * bios may load a cpuid instruction and
-                                   * cpuid may be disabled on Cyrix 5-6x86 */
-        popf
-        pushf
-        popl    %edx              /* copy new eflags to edx */
-        xorl    %eax, %edx        /* test if ID bit is flipped */
-        jz      .L_dont_use_mmx   /* not flipped if zero */
-        xorl    %eax, %eax
-        cpuid
-        cmpl    $0x756e6547, %ebx /* check for GenuineIntel in ebx,ecx,edx */
-        jne     .L_dont_use_mmx
-        cmpl    $0x6c65746e, %ecx
-        jne     .L_dont_use_mmx
-        cmpl    $0x49656e69, %edx
-        jne     .L_dont_use_mmx
-        movl    $1, %eax
-        cpuid                     /* get cpu features */
-        shrl    $8, %eax
-        andl    $15, %eax
-        cmpl    $6, %eax          /* check for Pentium family, is 0xf for P4 */
-        jne     .L_dont_use_mmx
-        testl   $0x800000, %edx   /* test if MMX feature is set (bit 23) */
-        jnz     .L_use_mmx
-        jmp     .L_dont_use_mmx
-.L_use_mmx:
-        movl    $DO_USE_MMX, inflate_fast_use_mmx
-        jmp     .L_check_mmx_pop
-.L_dont_use_mmx:
-        movl    $DONT_USE_MMX, inflate_fast_use_mmx
-.L_check_mmx_pop:
-        popl    %edx
-        popl    %ecx
-        popl    %ebx
-        popl    %eax
-        jmp     .L_check_mmx
-#endif
-
-
-/*** Non-MMX code ***/
-
-#if defined ( NO_MMX ) || defined( RUN_TIME_MMX )
-
-#define hold_r     %ebp
-#define bits_r     %bl
-#define bitslong_r %ebx
-
-.align 32,0x90
-.L_while_test:
-        /* while (in < last && out < end)
-         */
-        cmpl    out_r, end(%esp)
-        jbe     .L_break_loop           /* if (out >= end) */
-
-        cmpl    in_r, last(%esp)
-        jbe     .L_break_loop
-
-.L_do_loop:
-        /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out
-         *
-         * do {
-         *   if (bits < 15) {
-         *     hold |= *((unsigned short *)in)++ << bits;
-         *     bits += 16
-         *   }
-         *   this = lcode[hold & lmask]
-         */
-        cmpb    $15, bits_r
-        ja      .L_get_length_code      /* if (15 < bits) */
-
-        xorl    %eax, %eax
-        lodsw                           /* al = *(ushort *)in++ */
-        movb    bits_r, %cl             /* cl = bits, needs it for shifting */
-        addb    $16, bits_r             /* bits += 16 */
-        shll    %cl, %eax
-        orl     %eax, hold_r            /* hold |= *((ushort *)in)++ << bits */
-
-.L_get_length_code:
-        movl    lmask(%esp), %edx       /* edx = lmask */
-        movl    lcode(%esp), %ecx       /* ecx = lcode */
-        andl    hold_r, %edx            /* edx &= hold */
-        movl    (%ecx,%edx,4), %eax     /* eax = lcode[hold & lmask] */
-
-.L_dolen:
-        /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out
-         *
-         * dolen:
-         *    bits -= this.bits;
-         *    hold >>= this.bits
-         */
-        movb    %ah, %cl                /* cl = this.bits */
-        subb    %ah, bits_r             /* bits -= this.bits */
-        shrl    %cl, hold_r             /* hold >>= this.bits */
-
-        /* check if op is a literal
-         * if (op == 0) {
-         *    PUP(out) = this.val;
-         *  }
-         */
-        testb   %al, %al
-        jnz     .L_test_for_length_base /* if (op != 0) 45.7% */
-
-        shrl    $16, %eax               /* output this.val char */
-        stosb
-        jmp     .L_while_test
-
-.L_test_for_length_base:
-        /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out, %edx = len
-         *
-         * else if (op & 16) {
-         *   len = this.val
-         *   op &= 15
-         *   if (op) {
-         *     if (op > bits) {
-         *       hold |= *((unsigned short *)in)++ << bits;
-         *       bits += 16
-         *     }
-         *     len += hold & mask[op];
-         *     bits -= op;
-         *     hold >>= op;
-         *   }
-         */
-#define len_r %edx
-        movl    %eax, len_r             /* len = this */
-        shrl    $16, len_r              /* len = this.val */
-        movb    %al, %cl
-
-        testb   $16, %al
-        jz      .L_test_for_second_level_length /* if ((op & 16) == 0) 8% */
-        andb    $15, %cl                /* op &= 15 */
-        jz      .L_save_len             /* if (!op) */
-        cmpb    %cl, bits_r
-        jae     .L_add_bits_to_len      /* if (op <= bits) */
-
-        movb    %cl, %ch                /* stash op in ch, freeing cl */
-        xorl    %eax, %eax
-        lodsw                           /* al = *(ushort *)in++ */
-        movb    bits_r, %cl             /* cl = bits, needs it for shifting */
-        addb    $16, bits_r             /* bits += 16 */
-        shll    %cl, %eax
-        orl     %eax, hold_r            /* hold |= *((ushort *)in)++ << bits */
-        movb    %ch, %cl                /* move op back to ecx */
-
-.L_add_bits_to_len:
-        movl    $1, %eax
-        shll    %cl, %eax
-        decl    %eax
-        subb    %cl, bits_r
-        andl    hold_r, %eax            /* eax &= hold */
-        shrl    %cl, hold_r
-        addl    %eax, len_r             /* len += hold & mask[op] */
-
-.L_save_len:
-        movl    len_r, len(%esp)        /* save len */
-#undef  len_r
-
-.L_decode_distance:
-        /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *
-         *   if (bits < 15) {
-         *     hold |= *((unsigned short *)in)++ << bits;
-         *     bits += 16
-         *   }
-         *   this = dcode[hold & dmask];
-         * dodist:
-         *   bits -= this.bits;
-         *   hold >>= this.bits;
-         *   op = this.op;
-         */
-
-        cmpb    $15, bits_r
-        ja      .L_get_distance_code    /* if (15 < bits) */
-
-        xorl    %eax, %eax
-        lodsw                           /* al = *(ushort *)in++ */
-        movb    bits_r, %cl             /* cl = bits, needs it for shifting */
-        addb    $16, bits_r             /* bits += 16 */
-        shll    %cl, %eax
-        orl     %eax, hold_r            /* hold |= *((ushort *)in)++ << bits */
-
-.L_get_distance_code:
-        movl    dmask(%esp), %edx       /* edx = dmask */
-        movl    dcode(%esp), %ecx       /* ecx = dcode */
-        andl    hold_r, %edx            /* edx &= hold */
-        movl    (%ecx,%edx,4), %eax     /* eax = dcode[hold & dmask] */
-
-#define dist_r %edx
-.L_dodist:
-        movl    %eax, dist_r            /* dist = this */
-        shrl    $16, dist_r             /* dist = this.val */
-        movb    %ah, %cl
-        subb    %ah, bits_r             /* bits -= this.bits */
-        shrl    %cl, hold_r             /* hold >>= this.bits */
-
-        /* if (op & 16) {
-         *   dist = this.val
-         *   op &= 15
-         *   if (op > bits) {
-         *     hold |= *((unsigned short *)in)++ << bits;
-         *     bits += 16
-         *   }
-         *   dist += hold & mask[op];
-         *   bits -= op;
-         *   hold >>= op;
-         */
-        movb    %al, %cl                /* cl = this.op */
-
-        testb   $16, %al                /* if ((op & 16) == 0) */
-        jz      .L_test_for_second_level_dist
-        andb    $15, %cl                /* op &= 15 */
-        jz      .L_check_dist_one
-        cmpb    %cl, bits_r
-        jae     .L_add_bits_to_dist     /* if (op <= bits) 97.6% */
-
-        movb    %cl, %ch                /* stash op in ch, freeing cl */
-        xorl    %eax, %eax
-        lodsw                           /* al = *(ushort *)in++ */
-        movb    bits_r, %cl             /* cl = bits, needs it for shifting */
-        addb    $16, bits_r             /* bits += 16 */
-        shll    %cl, %eax
-        orl     %eax, hold_r            /* hold |= *((ushort *)in)++ << bits */
-        movb    %ch, %cl                /* move op back to ecx */
-
-.L_add_bits_to_dist:
-        movl    $1, %eax
-        shll    %cl, %eax
-        decl    %eax                    /* (1 << op) - 1 */
-        subb    %cl, bits_r
-        andl    hold_r, %eax            /* eax &= hold */
-        shrl    %cl, hold_r
-        addl    %eax, dist_r            /* dist += hold & ((1 << op) - 1) */
-        jmp     .L_check_window
-
-.L_check_window:
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes
-         *
-         * nbytes = out - beg;
-         * if (dist <= nbytes) {
-         *   from = out - dist;
-         *   do {
-         *     PUP(out) = PUP(from);
-         *   } while (--len > 0) {
-         * }
-         */
-
-        movl    in_r, in(%esp)          /* save in so from can use it's reg */
-        movl    out_r, %eax
-        subl    beg(%esp), %eax         /* nbytes = out - beg */
-
-        cmpl    dist_r, %eax
-        jb      .L_clip_window          /* if (dist > nbytes) 4.2% */
-
-        movl    len(%esp), %ecx
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-
-        subl    $3, %ecx
-        movb    (from_r), %al
-        movb    %al, (out_r)
-        movb    1(from_r), %al
-        movb    2(from_r), %dl
-        addl    $3, from_r
-        movb    %al, 1(out_r)
-        movb    %dl, 2(out_r)
-        addl    $3, out_r
-        rep     movsb
-
-        movl    in(%esp), in_r          /* move in back to %esi, toss from */
-        jmp     .L_while_test
-
-.align 16,0x90
-.L_check_dist_one:
-        cmpl    $1, dist_r
-        jne     .L_check_window
-        cmpl    out_r, beg(%esp)
-        je      .L_check_window
-
-        decl    out_r
-        movl    len(%esp), %ecx
-        movb    (out_r), %al
-        subl    $3, %ecx
-
-        movb    %al, 1(out_r)
-        movb    %al, 2(out_r)
-        movb    %al, 3(out_r)
-        addl    $4, out_r
-        rep     stosb
-
-        jmp     .L_while_test
-
-.align 16,0x90
-.L_test_for_second_level_length:
-        /* else if ((op & 64) == 0) {
-         *   this = lcode[this.val + (hold & mask[op])];
-         * }
-         */
-        testb   $64, %al
-        jnz     .L_test_for_end_of_block  /* if ((op & 64) != 0) */
-
-        movl    $1, %eax
-        shll    %cl, %eax
-        decl    %eax
-        andl    hold_r, %eax            /* eax &= hold */
-        addl    %edx, %eax              /* eax += this.val */
-        movl    lcode(%esp), %edx       /* edx = lcode */
-        movl    (%edx,%eax,4), %eax     /* eax = lcode[val + (hold&mask[op])] */
-        jmp     .L_dolen
-
-.align 16,0x90
-.L_test_for_second_level_dist:
-        /* else if ((op & 64) == 0) {
-         *   this = dcode[this.val + (hold & mask[op])];
-         * }
-         */
-        testb   $64, %al
-        jnz     .L_invalid_distance_code  /* if ((op & 64) != 0) */
-
-        movl    $1, %eax
-        shll    %cl, %eax
-        decl    %eax
-        andl    hold_r, %eax            /* eax &= hold */
-        addl    %edx, %eax              /* eax += this.val */
-        movl    dcode(%esp), %edx       /* edx = dcode */
-        movl    (%edx,%eax,4), %eax     /* eax = dcode[val + (hold&mask[op])] */
-        jmp     .L_dodist
-
-.align 16,0x90
-.L_clip_window:
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes
-         *
-         * else {
-         *   if (dist > wsize) {
-         *     invalid distance
-         *   }
-         *   from = window;
-         *   nbytes = dist - nbytes;
-         *   if (write == 0) {
-         *     from += wsize - nbytes;
-         */
-#define nbytes_r %ecx
-        movl    %eax, nbytes_r
-        movl    wsize(%esp), %eax       /* prepare for dist compare */
-        negl    nbytes_r                /* nbytes = -nbytes */
-        movl    window(%esp), from_r    /* from = window */
-
-        cmpl    dist_r, %eax
-        jb      .L_invalid_distance_too_far /* if (dist > wsize) */
-
-        addl    dist_r, nbytes_r        /* nbytes = dist - nbytes */
-        cmpl    $0, write(%esp)
-        jne     .L_wrap_around_window   /* if (write != 0) */
-
-        subl    nbytes_r, %eax
-        addl    %eax, from_r            /* from += wsize - nbytes */
-
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes, %eax = len
-         *
-         *     if (nbytes < len) {
-         *       len -= nbytes;
-         *       do {
-         *         PUP(out) = PUP(from);
-         *       } while (--nbytes);
-         *       from = out - dist;
-         *     }
-         *   }
-         */
-#define len_r %eax
-        movl    len(%esp), len_r
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1
-
-.L_wrap_around_window:
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes, %eax = write, %eax = len
-         *
-         *   else if (write < nbytes) {
-         *     from += wsize + write - nbytes;
-         *     nbytes -= write;
-         *     if (nbytes < len) {
-         *       len -= nbytes;
-         *       do {
-         *         PUP(out) = PUP(from);
-         *       } while (--nbytes);
-         *       from = window;
-         *       nbytes = write;
-         *       if (nbytes < len) {
-         *         len -= nbytes;
-         *         do {
-         *           PUP(out) = PUP(from);
-         *         } while(--nbytes);
-         *         from = out - dist;
-         *       }
-         *     }
-         *   }
-         */
-#define write_r %eax
-        movl    write(%esp), write_r
-        cmpl    write_r, nbytes_r
-        jbe     .L_contiguous_in_window /* if (write >= nbytes) */
-
-        addl    wsize(%esp), from_r
-        addl    write_r, from_r
-        subl    nbytes_r, from_r        /* from += wsize + write - nbytes */
-        subl    write_r, nbytes_r       /* nbytes -= write */
-#undef write_r
-
-        movl    len(%esp), len_r
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    window(%esp), from_r    /* from = window */
-        movl    write(%esp), nbytes_r   /* nbytes = write */
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1
-
-.L_contiguous_in_window:
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes, %eax = write, %eax = len
-         *
-         *   else {
-         *     from += write - nbytes;
-         *     if (nbytes < len) {
-         *       len -= nbytes;
-         *       do {
-         *         PUP(out) = PUP(from);
-         *       } while (--nbytes);
-         *       from = out - dist;
-         *     }
-         *   }
-         */
-#define write_r %eax
-        addl    write_r, from_r
-        subl    nbytes_r, from_r        /* from += write - nbytes */
-#undef write_r
-
-        movl    len(%esp), len_r
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-
-.L_do_copy1:
-        /* regs: %esi = from, %esi = in, %ebp = hold, %bl = bits, %edi = out
-         *       %eax = len
-         *
-         *     while (len > 0) {
-         *       PUP(out) = PUP(from);
-         *       len--;
-         *     }
-         *   }
-         * } while (in < last && out < end);
-         */
-#undef nbytes_r
-#define in_r %esi
-        movl    len_r, %ecx
-        rep     movsb
-
-        movl    in(%esp), in_r          /* move in back to %esi, toss from */
-        jmp     .L_while_test
-
-#undef len_r
-#undef dist_r
-
-#endif /* NO_MMX || RUN_TIME_MMX */
-
-
-/*** MMX code ***/
-
-#if defined( USE_MMX ) || defined( RUN_TIME_MMX )
-
-.align 32,0x90
-.L_init_mmx:
-        emms
-
-#undef  bits_r
-#undef  bitslong_r
-#define bitslong_r %ebp
-#define hold_mm    %mm0
-        movd    %ebp, hold_mm
-        movl    %ebx, bitslong_r
-
-#define used_mm   %mm1
-#define dmask2_mm %mm2
-#define lmask2_mm %mm3
-#define lmask_mm  %mm4
-#define dmask_mm  %mm5
-#define tmp_mm    %mm6
-
-        movd    lmask(%esp), lmask_mm
-        movq    lmask_mm, lmask2_mm
-        movd    dmask(%esp), dmask_mm
-        movq    dmask_mm, dmask2_mm
-        pxor    used_mm, used_mm
-        movl    lcode(%esp), %ebx       /* ebx = lcode */
-        jmp     .L_do_loop_mmx
-
-.align 32,0x90
-.L_while_test_mmx:
-        /* while (in < last && out < end)
-         */
-        cmpl    out_r, end(%esp)
-        jbe     .L_break_loop           /* if (out >= end) */
-
-        cmpl    in_r, last(%esp)
-        jbe     .L_break_loop
-
-.L_do_loop_mmx:
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-
-        cmpl    $32, bitslong_r
-        ja      .L_get_length_code_mmx  /* if (32 < bits) */
-
-        movd    bitslong_r, tmp_mm
-        movd    (in_r), %mm7
-        addl    $4, in_r
-        psllq   tmp_mm, %mm7
-        addl    $32, bitslong_r
-        por     %mm7, hold_mm           /* hold_mm |= *((uint *)in)++ << bits */
-
-.L_get_length_code_mmx:
-        pand    hold_mm, lmask_mm
-        movd    lmask_mm, %eax
-        movq    lmask2_mm, lmask_mm
-        movl    (%ebx,%eax,4), %eax     /* eax = lcode[hold & lmask] */
-
-.L_dolen_mmx:
-        movzbl  %ah, %ecx               /* ecx = this.bits */
-        movd    %ecx, used_mm
-        subl    %ecx, bitslong_r        /* bits -= this.bits */
-
-        testb   %al, %al
-        jnz     .L_test_for_length_base_mmx /* if (op != 0) 45.7% */
-
-        shrl    $16, %eax               /* output this.val char */
-        stosb
-        jmp     .L_while_test_mmx
-
-.L_test_for_length_base_mmx:
-#define len_r  %edx
-        movl    %eax, len_r             /* len = this */
-        shrl    $16, len_r              /* len = this.val */
-
-        testb   $16, %al
-        jz      .L_test_for_second_level_length_mmx /* if ((op & 16) == 0) 8% */
-        andl    $15, %eax               /* op &= 15 */
-        jz      .L_decode_distance_mmx  /* if (!op) */
-
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    %eax, used_mm
-        movd    hold_mm, %ecx
-        subl    %eax, bitslong_r
-        andl    .L_mask(,%eax,4), %ecx
-        addl    %ecx, len_r             /* len += hold & mask[op] */
-
-.L_decode_distance_mmx:
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-
-        cmpl    $32, bitslong_r
-        ja      .L_get_dist_code_mmx    /* if (32 < bits) */
-
-        movd    bitslong_r, tmp_mm
-        movd    (in_r), %mm7
-        addl    $4, in_r
-        psllq   tmp_mm, %mm7
-        addl    $32, bitslong_r
-        por     %mm7, hold_mm           /* hold_mm |= *((uint *)in)++ << bits */
-
-.L_get_dist_code_mmx:
-        movl    dcode(%esp), %ebx       /* ebx = dcode */
-        pand    hold_mm, dmask_mm
-        movd    dmask_mm, %eax
-        movq    dmask2_mm, dmask_mm
-        movl    (%ebx,%eax,4), %eax     /* eax = dcode[hold & lmask] */
-
-.L_dodist_mmx:
-#define dist_r %ebx
-        movzbl  %ah, %ecx               /* ecx = this.bits */
-        movl    %eax, dist_r
-        shrl    $16, dist_r             /* dist  = this.val */
-        subl    %ecx, bitslong_r        /* bits -= this.bits */
-        movd    %ecx, used_mm
-
-        testb   $16, %al                /* if ((op & 16) == 0) */
-        jz      .L_test_for_second_level_dist_mmx
-        andl    $15, %eax               /* op &= 15 */
-        jz      .L_check_dist_one_mmx
-
-.L_add_bits_to_dist_mmx:
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    %eax, used_mm           /* save bit length of current op */
-        movd    hold_mm, %ecx           /* get the next bits on input stream */
-        subl    %eax, bitslong_r        /* bits -= op bits */
-        andl    .L_mask(,%eax,4), %ecx  /* ecx   = hold & mask[op] */
-        addl    %ecx, dist_r            /* dist += hold & mask[op] */
-
-.L_check_window_mmx:
-        movl    in_r, in(%esp)          /* save in so from can use it's reg */
-        movl    out_r, %eax
-        subl    beg(%esp), %eax         /* nbytes = out - beg */
-
-        cmpl    dist_r, %eax
-        jb      .L_clip_window_mmx      /* if (dist > nbytes) 4.2% */
-
-        movl    len_r, %ecx
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-
-        subl    $3, %ecx
-        movb    (from_r), %al
-        movb    %al, (out_r)
-        movb    1(from_r), %al
-        movb    2(from_r), %dl
-        addl    $3, from_r
-        movb    %al, 1(out_r)
-        movb    %dl, 2(out_r)
-        addl    $3, out_r
-        rep     movsb
-
-        movl    in(%esp), in_r          /* move in back to %esi, toss from */
-        movl    lcode(%esp), %ebx       /* move lcode back to %ebx, toss dist */
-        jmp     .L_while_test_mmx
-
-.align 16,0x90
-.L_check_dist_one_mmx:
-        cmpl    $1, dist_r
-        jne     .L_check_window_mmx
-        cmpl    out_r, beg(%esp)
-        je      .L_check_window_mmx
-
-        decl    out_r
-        movl    len_r, %ecx
-        movb    (out_r), %al
-        subl    $3, %ecx
-
-        movb    %al, 1(out_r)
-        movb    %al, 2(out_r)
-        movb    %al, 3(out_r)
-        addl    $4, out_r
-        rep     stosb
-
-        movl    lcode(%esp), %ebx       /* move lcode back to %ebx, toss dist */
-        jmp     .L_while_test_mmx
-
-.align 16,0x90
-.L_test_for_second_level_length_mmx:
-        testb   $64, %al
-        jnz     .L_test_for_end_of_block  /* if ((op & 64) != 0) */
-
-        andl    $15, %eax
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    hold_mm, %ecx
-        andl    .L_mask(,%eax,4), %ecx
-        addl    len_r, %ecx
-        movl    (%ebx,%ecx,4), %eax     /* eax = lcode[hold & lmask] */
-        jmp     .L_dolen_mmx
-
-.align 16,0x90
-.L_test_for_second_level_dist_mmx:
-        testb   $64, %al
-        jnz     .L_invalid_distance_code  /* if ((op & 64) != 0) */
-
-        andl    $15, %eax
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    hold_mm, %ecx
-        andl    .L_mask(,%eax,4), %ecx
-        movl    dcode(%esp), %eax       /* ecx = dcode */
-        addl    dist_r, %ecx
-        movl    (%eax,%ecx,4), %eax     /* eax = lcode[hold & lmask] */
-        jmp     .L_dodist_mmx
-
-.align 16,0x90
-.L_clip_window_mmx:
-#define nbytes_r %ecx
-        movl    %eax, nbytes_r
-        movl    wsize(%esp), %eax       /* prepare for dist compare */
-        negl    nbytes_r                /* nbytes = -nbytes */
-        movl    window(%esp), from_r    /* from = window */
-
-        cmpl    dist_r, %eax
-        jb      .L_invalid_distance_too_far /* if (dist > wsize) */
-
-        addl    dist_r, nbytes_r        /* nbytes = dist - nbytes */
-        cmpl    $0, write(%esp)
-        jne     .L_wrap_around_window_mmx /* if (write != 0) */
-
-        subl    nbytes_r, %eax
-        addl    %eax, from_r            /* from += wsize - nbytes */
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1_mmx
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1_mmx
-
-.L_wrap_around_window_mmx:
-#define write_r %eax
-        movl    write(%esp), write_r
-        cmpl    write_r, nbytes_r
-        jbe     .L_contiguous_in_window_mmx /* if (write >= nbytes) */
-
-        addl    wsize(%esp), from_r
-        addl    write_r, from_r
-        subl    nbytes_r, from_r        /* from += wsize + write - nbytes */
-        subl    write_r, nbytes_r       /* nbytes -= write */
-#undef write_r
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    window(%esp), from_r    /* from = window */
-        movl    write(%esp), nbytes_r   /* nbytes = write */
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1_mmx
-
-.L_contiguous_in_window_mmx:
-#define write_r %eax
-        addl    write_r, from_r
-        subl    nbytes_r, from_r        /* from += write - nbytes */
-#undef write_r
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-
-.L_do_copy1_mmx:
-#undef nbytes_r
-#define in_r %esi
-        movl    len_r, %ecx
-        rep     movsb
-
-        movl    in(%esp), in_r          /* move in back to %esi, toss from */
-        movl    lcode(%esp), %ebx       /* move lcode back to %ebx, toss dist */
-        jmp     .L_while_test_mmx
-
-#undef hold_r
-#undef bitslong_r
-
-#endif /* USE_MMX || RUN_TIME_MMX */
-
-
-/*** USE_MMX, NO_MMX, and RUNTIME_MMX from here on ***/
-
-.L_invalid_distance_code:
-        /* else {
-         *   strm->msg = "invalid distance code";
-         *   state->mode = BAD;
-         * }
-         */
-        movl    $.L_invalid_distance_code_msg, %ecx
-        movl    $INFLATE_MODE_BAD, %edx
-        jmp     .L_update_stream_state
-
-.L_test_for_end_of_block:
-        /* else if (op & 32) {
-         *   state->mode = TYPE;
-         *   break;
-         * }
-         */
-        testb   $32, %al
-        jz      .L_invalid_literal_length_code  /* if ((op & 32) == 0) */
-
-        movl    $0, %ecx
-        movl    $INFLATE_MODE_TYPE, %edx
-        jmp     .L_update_stream_state
-
-.L_invalid_literal_length_code:
-        /* else {
-         *   strm->msg = "invalid literal/length code";
-         *   state->mode = BAD;
-         * }
-         */
-        movl    $.L_invalid_literal_length_code_msg, %ecx
-        movl    $INFLATE_MODE_BAD, %edx
-        jmp     .L_update_stream_state
-
-.L_invalid_distance_too_far:
-        /* strm->msg = "invalid distance too far back";
-         * state->mode = BAD;
-         */
-        movl    in(%esp), in_r          /* from_r has in's reg, put in back */
-        movl    $.L_invalid_distance_too_far_msg, %ecx
-        movl    $INFLATE_MODE_BAD, %edx
-        jmp     .L_update_stream_state
-
-.L_update_stream_state:
-        /* set strm->msg = %ecx, strm->state->mode = %edx */
-        movl    strm_sp(%esp), %eax
-        testl   %ecx, %ecx              /* if (msg != NULL) */
-        jz      .L_skip_msg
-        movl    %ecx, msg_strm(%eax)    /* strm->msg = msg */
-.L_skip_msg:
-        movl    state_strm(%eax), %eax  /* state = strm->state */
-        movl    %edx, mode_state(%eax)  /* state->mode = edx (BAD | TYPE) */
-        jmp     .L_break_loop
-
-.align 32,0x90
-.L_break_loop:
-
-/*
- * Regs:
- *
- * bits = %ebp when mmx, and in %ebx when non-mmx
- * hold = %hold_mm when mmx, and in %ebp when non-mmx
- * in   = %esi
- * out  = %edi
- */
-
-#if defined( USE_MMX ) || defined( RUN_TIME_MMX )
-
-#if defined( RUN_TIME_MMX )
-
-        cmpl    $DO_USE_MMX, inflate_fast_use_mmx
-        jne     .L_update_next_in
-
-#endif /* RUN_TIME_MMX */
-
-        movl    %ebp, %ebx
-
-.L_update_next_in:
-
-#endif
-
-#define strm_r  %eax
-#define state_r %edx
-
-        /* len = bits >> 3;
-         * in -= len;
-         * bits -= len << 3;
-         * hold &= (1U << bits) - 1;
-         * state->hold = hold;
-         * state->bits = bits;
-         * strm->next_in = in;
-         * strm->next_out = out;
-         */
-        movl    strm_sp(%esp), strm_r
-        movl    %ebx, %ecx
-        movl    state_strm(strm_r), state_r
-        shrl    $3, %ecx
-        subl    %ecx, in_r
-        shll    $3, %ecx
-        subl    %ecx, %ebx
-        movl    out_r, next_out_strm(strm_r)
-        movl    %ebx, bits_state(state_r)
-        movl    %ebx, %ecx
-
-        leal    buf(%esp), %ebx
-        cmpl    %ebx, last(%esp)
-        jne     .L_buf_not_used         /* if buf != last */
-
-        subl    %ebx, in_r              /* in -= buf */
-        movl    next_in_strm(strm_r), %ebx
-        movl    %ebx, last(%esp)        /* last = strm->next_in */
-        addl    %ebx, in_r              /* in += strm->next_in */
-        movl    avail_in_strm(strm_r), %ebx
-        subl    $11, %ebx
-        addl    %ebx, last(%esp)    /* last = &strm->next_in[ avail_in - 11 ] */
-
-.L_buf_not_used:
-        movl    in_r, next_in_strm(strm_r)
-
-        movl    $1, %ebx
-        shll    %cl, %ebx
-        decl    %ebx
-
-#if defined( USE_MMX ) || defined( RUN_TIME_MMX )
-
-#if defined( RUN_TIME_MMX )
-
-        cmpl    $DO_USE_MMX, inflate_fast_use_mmx
-        jne     .L_update_hold
-
-#endif /* RUN_TIME_MMX */
-
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    hold_mm, %ebp
-
-        emms
-
-.L_update_hold:
-
-#endif /* USE_MMX || RUN_TIME_MMX */
-
-        andl    %ebx, %ebp
-        movl    %ebp, hold_state(state_r)
-
-#define last_r %ebx
-
-        /* strm->avail_in = in < last ? 11 + (last - in) : 11 - (in - last) */
-        movl    last(%esp), last_r
-        cmpl    in_r, last_r
-        jbe     .L_last_is_smaller     /* if (in >= last) */
-
-        subl    in_r, last_r           /* last -= in */
-        addl    $11, last_r            /* last += 11 */
-        movl    last_r, avail_in_strm(strm_r)
-        jmp     .L_fixup_out
-.L_last_is_smaller:
-        subl    last_r, in_r           /* in -= last */
-        negl    in_r                   /* in = -in */
-        addl    $11, in_r              /* in += 11 */
-        movl    in_r, avail_in_strm(strm_r)
-
-#undef last_r
-#define end_r %ebx
-
-.L_fixup_out:
-        /* strm->avail_out = out < end ? 257 + (end - out) : 257 - (out - end)*/
-        movl    end(%esp), end_r
-        cmpl    out_r, end_r
-        jbe     .L_end_is_smaller      /* if (out >= end) */
-
-        subl    out_r, end_r           /* end -= out */
-        addl    $257, end_r            /* end += 257 */
-        movl    end_r, avail_out_strm(strm_r)
-        jmp     .L_done
-.L_end_is_smaller:
-        subl    end_r, out_r           /* out -= end */
-        negl    out_r                  /* out = -out */
-        addl    $257, out_r            /* out += 257 */
-        movl    out_r, avail_out_strm(strm_r)
-
-#undef end_r
-#undef strm_r
-#undef state_r
-
-.L_done:
-        addl    $local_var_size, %esp
-        popf
-        popl    %ebx
-        popl    %ebp
-        popl    %esi
-        popl    %edi
-        ret
-
-#if defined( GAS_ELF )
-/* elf info */
-.type inflate_fast,@function
-.size inflate_fast,.-inflate_fast
-#endif
diff --git a/libs/zlib/contrib/iostream3/zfstream.h b/libs/zlib/contrib/iostream3/zfstream.h
index 8574479ae1..3dabc0f97d 100644
--- a/libs/zlib/contrib/iostream3/zfstream.h
+++ b/libs/zlib/contrib/iostream3/zfstream.h
@@ -413,7 +413,7 @@ template<typename T1, typename T2>
   class gzomanip2
   {
   public:
-    // Allows insertor to peek at internals
+    // Allows inserter to peek at internals
     template <typename Ta, typename Tb>
       friend gzofstream&
       operator<<(gzofstream&,
@@ -452,7 +452,7 @@ template<typename T1, typename T2>
   : func(f), val1(v1), val2(v2)
   { }
 
-// Insertor applies underlying manipulator function to stream
+// Inserter applies underlying manipulator function to stream
 template<typename T1, typename T2>
   inline gzofstream&
   operator<<(gzofstream& s, const gzomanip2<T1,T2>& m)
diff --git a/libs/zlib/contrib/masmx64/bld_ml64.bat b/libs/zlib/contrib/masmx64/bld_ml64.bat
deleted file mode 100644
index 8f9343d0af..0000000000
--- a/libs/zlib/contrib/masmx64/bld_ml64.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-ml64.exe /Flinffasx64 /c /Zi inffasx64.asm
-ml64.exe /Flgvmat64   /c /Zi gvmat64.asm
diff --git a/libs/zlib/contrib/masmx64/gvmat64.asm b/libs/zlib/contrib/masmx64/gvmat64.asm
deleted file mode 100644
index c1817f1be9..0000000000
--- a/libs/zlib/contrib/masmx64/gvmat64.asm
+++ /dev/null
@@ -1,553 +0,0 @@
-;uInt longest_match_x64(
-;    deflate_state *s,
-;    IPos cur_match);                             /* current match */
-
-; gvmat64.asm -- Asm portion of the optimized longest_match for 32 bits x86_64
-;  (AMD64 on Athlon 64, Opteron, Phenom
-;     and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7)
-; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant.
-;
-; File written by Gilles Vollant, by converting to assembly the longest_match
-;  from Jean-loup Gailly in deflate.c of zLib and infoZip zip.
-;
-;  and by taking inspiration on asm686 with masm, optimised assembly code
-;        from Brian Raiter, written 1998
-;
-;  This software is provided 'as-is', without any express or implied
-;  warranty.  In no event will the authors be held liable for any damages
-;  arising from the use of this software.
-;
-;  Permission is granted to anyone to use this software for any purpose,
-;  including commercial applications, and to alter it and redistribute it
-;  freely, subject to the following restrictions:
-;
-;  1. The origin of this software must not be misrepresented; you must not
-;     claim that you wrote the original software. If you use this software
-;     in a product, an acknowledgment in the product documentation would be
-;     appreciated but is not required.
-;  2. Altered source versions must be plainly marked as such, and must not be
-;     misrepresented as being the original software
-;  3. This notice may not be removed or altered from any source distribution.
-;
-;
-;
-;         http://www.zlib.net
-;         http://www.winimage.com/zLibDll
-;         http://www.muppetlabs.com/~breadbox/software/assembly.html
-;
-; to compile this file for infozip Zip, I use option:
-;   ml64.exe /Flgvmat64 /c /Zi /DINFOZIP gvmat64.asm
-;
-; to compile this file for zLib, I use option:
-;   ml64.exe /Flgvmat64 /c /Zi gvmat64.asm
-; Be carrefull to adapt zlib1222add below to your version of zLib
-;   (if you use a version of zLib before 1.0.4 or after 1.2.2.2, change
-;    value of zlib1222add later)
-;
-; This file compile with Microsoft Macro Assembler (x64) for AMD64
-;
-;   ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK
-;
-;   (you can get Windows WDK with ml64 for AMD64 from
-;      http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price)
-;
-
-
-;uInt longest_match(s, cur_match)
-;    deflate_state *s;
-;    IPos cur_match;                             /* current match */
-.code
-longest_match PROC
-
-
-;LocalVarsSize   equ 88
- LocalVarsSize   equ 72
-
-; register used : rax,rbx,rcx,rdx,rsi,rdi,r8,r9,r10,r11,r12
-; free register :  r14,r15
-; register can be saved : rsp
-
- chainlenwmask   equ  rsp + 8 - LocalVarsSize    ; high word: current chain len
-                                                 ; low word: s->wmask
-;window          equ  rsp + xx - LocalVarsSize   ; local copy of s->window ; stored in r10
-;windowbestlen   equ  rsp + xx - LocalVarsSize   ; s->window + bestlen , use r10+r11
-;scanstart       equ  rsp + xx - LocalVarsSize   ; first two bytes of string ; stored in r12w
-;scanend         equ  rsp + xx - LocalVarsSize   ; last two bytes of string use ebx
-;scanalign       equ  rsp + xx - LocalVarsSize   ; dword-misalignment of string r13
-;bestlen         equ  rsp + xx - LocalVarsSize   ; size of best match so far -> r11d
-;scan            equ  rsp + xx - LocalVarsSize   ; ptr to string wanting match -> r9
-IFDEF INFOZIP
-ELSE
- nicematch       equ  (rsp + 16 - LocalVarsSize) ; a good enough match size
-ENDIF
-
-save_rdi        equ  rsp + 24 - LocalVarsSize
-save_rsi        equ  rsp + 32 - LocalVarsSize
-save_rbx        equ  rsp + 40 - LocalVarsSize
-save_rbp        equ  rsp + 48 - LocalVarsSize
-save_r12        equ  rsp + 56 - LocalVarsSize
-save_r13        equ  rsp + 64 - LocalVarsSize
-;save_r14        equ  rsp + 72 - LocalVarsSize
-;save_r15        equ  rsp + 80 - LocalVarsSize
-
-
-; summary of register usage
-; scanend     ebx
-; scanendw    bx
-; chainlenwmask   edx
-; curmatch    rsi
-; curmatchd   esi
-; windowbestlen   r8
-; scanalign   r9
-; scanalignd  r9d
-; window      r10
-; bestlen     r11
-; bestlend    r11d
-; scanstart   r12d
-; scanstartw  r12w
-; scan        r13
-; nicematch   r14d
-; limit       r15
-; limitd      r15d
-; prev        rcx
-
-;  all the +4 offsets are due to the addition of pending_buf_size (in zlib
-;  in the deflate_state structure since the asm code was first written
-;  (if you compile with zlib 1.0.4 or older, remove the +4).
-;  Note : these value are good with a 8 bytes boundary pack structure
-
-
-    MAX_MATCH           equ     258
-    MIN_MATCH           equ     3
-    MIN_LOOKAHEAD       equ     (MAX_MATCH+MIN_MATCH+1)
-
-
-;;; Offsets for fields in the deflate_state structure. These numbers
-;;; are calculated from the definition of deflate_state, with the
-;;; assumption that the compiler will dword-align the fields. (Thus,
-;;; changing the definition of deflate_state could easily cause this
-;;; program to crash horribly, without so much as a warning at
-;;; compile time. Sigh.)
-
-;  all the +zlib1222add offsets are due to the addition of fields
-;  in zlib in the deflate_state structure since the asm code was first written
-;  (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
-;  (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
-;  if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
-
-
-IFDEF INFOZIP
-
-_DATA   SEGMENT
-COMM    window_size:DWORD
-; WMask ; 7fff
-COMM    window:BYTE:010040H
-COMM    prev:WORD:08000H
-; MatchLen : unused
-; PrevMatch : unused
-COMM    strstart:DWORD
-COMM    match_start:DWORD
-; Lookahead : ignore
-COMM    prev_length:DWORD ; PrevLen
-COMM    max_chain_length:DWORD
-COMM    good_match:DWORD
-COMM    nice_match:DWORD
-prev_ad equ OFFSET prev
-window_ad equ OFFSET window
-nicematch equ nice_match
-_DATA ENDS
-WMask equ 07fffh
-
-ELSE
-
-  IFNDEF zlib1222add
-    zlib1222add equ 8
-  ENDIF
-dsWSize         equ 56+zlib1222add+(zlib1222add/2)
-dsWMask         equ 64+zlib1222add+(zlib1222add/2)
-dsWindow        equ 72+zlib1222add
-dsPrev          equ 88+zlib1222add
-dsMatchLen      equ 128+zlib1222add
-dsPrevMatch     equ 132+zlib1222add
-dsStrStart      equ 140+zlib1222add
-dsMatchStart    equ 144+zlib1222add
-dsLookahead     equ 148+zlib1222add
-dsPrevLen       equ 152+zlib1222add
-dsMaxChainLen   equ 156+zlib1222add
-dsGoodMatch     equ 172+zlib1222add
-dsNiceMatch     equ 176+zlib1222add
-
-window_size     equ [ rcx + dsWSize]
-WMask           equ [ rcx + dsWMask]
-window_ad       equ [ rcx + dsWindow]
-prev_ad         equ [ rcx + dsPrev]
-strstart        equ [ rcx + dsStrStart]
-match_start     equ [ rcx + dsMatchStart]
-Lookahead       equ [ rcx + dsLookahead] ; 0ffffffffh on infozip
-prev_length     equ [ rcx + dsPrevLen]
-max_chain_length equ [ rcx + dsMaxChainLen]
-good_match      equ [ rcx + dsGoodMatch]
-nice_match      equ [ rcx + dsNiceMatch]
-ENDIF
-
-; parameter 1 in r8(deflate state s), param 2 in rdx (cur match)
-
-; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and
-; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp
-;
-; All registers must be preserved across the call, except for
-;   rax, rcx, rdx, r8, r9, r10, and r11, which are scratch.
-
-
-
-;;; Save registers that the compiler may be using, and adjust esp to
-;;; make room for our stack frame.
-
-
-;;; Retrieve the function arguments. r8d will hold cur_match
-;;; throughout the entire function. edx will hold the pointer to the
-;;; deflate_state structure during the function's setup (before
-;;; entering the main loop.
-
-; parameter 1 in rcx (deflate_state* s), param 2 in edx -> r8 (cur match)
-
-; this clear high 32 bits of r8, which can be garbage in both r8 and rdx
-
-        mov [save_rdi],rdi
-        mov [save_rsi],rsi
-        mov [save_rbx],rbx
-        mov [save_rbp],rbp
-IFDEF INFOZIP
-        mov r8d,ecx
-ELSE
-        mov r8d,edx
-ENDIF
-        mov [save_r12],r12
-        mov [save_r13],r13
-;        mov [save_r14],r14
-;        mov [save_r15],r15
-
-
-;;; uInt wmask = s->w_mask;
-;;; unsigned chain_length = s->max_chain_length;
-;;; if (s->prev_length >= s->good_match) {
-;;;     chain_length >>= 2;
-;;; }
-
-        mov edi, prev_length
-        mov esi, good_match
-        mov eax, WMask
-        mov ebx, max_chain_length
-        cmp edi, esi
-        jl  LastMatchGood
-        shr ebx, 2
-LastMatchGood:
-
-;;; chainlen is decremented once beforehand so that the function can
-;;; use the sign flag instead of the zero flag for the exit test.
-;;; It is then shifted into the high word, to make room for the wmask
-;;; value, which it will always accompany.
-
-        dec ebx
-        shl ebx, 16
-        or  ebx, eax
-
-;;; on zlib only
-;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
-
-IFDEF INFOZIP
-        mov [chainlenwmask], ebx
-; on infozip nice_match = [nice_match]
-ELSE
-        mov eax, nice_match
-        mov [chainlenwmask], ebx
-        mov r10d, Lookahead
-        cmp r10d, eax
-        cmovnl r10d, eax
-        mov [nicematch],r10d
-ENDIF
-
-;;; register Bytef *scan = s->window + s->strstart;
-        mov r10, window_ad
-        mov ebp, strstart
-        lea r13, [r10 + rbp]
-
-;;; Determine how many bytes the scan ptr is off from being
-;;; dword-aligned.
-
-         mov r9,r13
-         neg r13
-         and r13,3
-
-;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
-;;;     s->strstart - (IPos)MAX_DIST(s) : NIL;
-IFDEF INFOZIP
-        mov eax,07efah ; MAX_DIST = (WSIZE-MIN_LOOKAHEAD) (0x8000-(3+8+1))
-ELSE
-        mov eax, window_size
-        sub eax, MIN_LOOKAHEAD
-ENDIF
-        xor edi,edi
-        sub ebp, eax
-
-        mov r11d, prev_length
-
-        cmovng ebp,edi
-
-;;; int best_len = s->prev_length;
-
-
-;;; Store the sum of s->window + best_len in esi locally, and in esi.
-
-       lea  rsi,[r10+r11]
-
-;;; register ush scan_start = *(ushf*)scan;
-;;; register ush scan_end   = *(ushf*)(scan+best_len-1);
-;;; Posf *prev = s->prev;
-
-        movzx r12d,word ptr [r9]
-        movzx ebx, word ptr [r9 + r11 - 1]
-
-        mov rdi, prev_ad
-
-;;; Jump into the main loop.
-
-        mov edx, [chainlenwmask]
-
-        cmp bx,word ptr [rsi + r8 - 1]
-        jz  LookupLoopIsZero
-
-LookupLoop1:
-        and r8d, edx
-
-        movzx   r8d, word ptr [rdi + r8*2]
-        cmp r8d, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-
-LoopEntry1:
-        cmp bx,word ptr [rsi + r8 - 1]
-        jz  LookupLoopIsZero
-
-LookupLoop2:
-        and r8d, edx
-
-        movzx   r8d, word ptr [rdi + r8*2]
-        cmp r8d, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-
-LoopEntry2:
-        cmp bx,word ptr [rsi + r8 - 1]
-        jz  LookupLoopIsZero
-
-LookupLoop4:
-        and r8d, edx
-
-        movzx   r8d, word ptr [rdi + r8*2]
-        cmp r8d, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-
-LoopEntry4:
-
-        cmp bx,word ptr [rsi + r8 - 1]
-        jnz LookupLoop1
-        jmp LookupLoopIsZero
-
-
-;;; do {
-;;;     match = s->window + cur_match;
-;;;     if (*(ushf*)(match+best_len-1) != scan_end ||
-;;;         *(ushf*)match != scan_start) continue;
-;;;     [...]
-;;; } while ((cur_match = prev[cur_match & wmask]) > limit
-;;;          && --chain_length != 0);
-;;;
-;;; Here is the inner loop of the function. The function will spend the
-;;; majority of its time in this loop, and majority of that time will
-;;; be spent in the first ten instructions.
-;;;
-;;; Within this loop:
-;;; ebx = scanend
-;;; r8d = curmatch
-;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
-;;; esi = windowbestlen - i.e., (window + bestlen)
-;;; edi = prev
-;;; ebp = limit
-
-LookupLoop:
-        and r8d, edx
-
-        movzx   r8d, word ptr [rdi + r8*2]
-        cmp r8d, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-
-LoopEntry:
-
-        cmp bx,word ptr [rsi + r8 - 1]
-        jnz LookupLoop1
-LookupLoopIsZero:
-        cmp     r12w, word ptr [r10 + r8]
-        jnz LookupLoop1
-
-
-;;; Store the current value of chainlen.
-        mov [chainlenwmask], edx
-
-;;; Point edi to the string under scrutiny, and esi to the string we
-;;; are hoping to match it up with. In actuality, esi and edi are
-;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is
-;;; initialized to -(MAX_MATCH_8 - scanalign).
-
-        lea rsi,[r8+r10]
-        mov rdx, 0fffffffffffffef8h; -(MAX_MATCH_8)
-        lea rsi, [rsi + r13 + 0108h] ;MAX_MATCH_8]
-        lea rdi, [r9 + r13 + 0108h] ;MAX_MATCH_8]
-
-        prefetcht1 [rsi+rdx]
-        prefetcht1 [rdi+rdx]
-
-
-;;; Test the strings for equality, 8 bytes at a time. At the end,
-;;; adjust rdx so that it is offset to the exact byte that mismatched.
-;;;
-;;; We already know at this point that the first three bytes of the
-;;; strings match each other, and they can be safely passed over before
-;;; starting the compare loop. So what this code does is skip over 0-3
-;;; bytes, as much as necessary in order to dword-align the edi
-;;; pointer. (rsi will still be misaligned three times out of four.)
-;;;
-;;; It should be confessed that this loop usually does not represent
-;;; much of the total running time. Replacing it with a more
-;;; straightforward "rep cmpsb" would not drastically degrade
-;;; performance.
-
-
-LoopCmps:
-        mov rax, [rsi + rdx]
-        xor rax, [rdi + rdx]
-        jnz LeaveLoopCmps
-
-        mov rax, [rsi + rdx + 8]
-        xor rax, [rdi + rdx + 8]
-        jnz LeaveLoopCmps8
-
-
-        mov rax, [rsi + rdx + 8+8]
-        xor rax, [rdi + rdx + 8+8]
-        jnz LeaveLoopCmps16
-
-        add rdx,8+8+8
-
-        jnz short LoopCmps
-        jmp short LenMaximum
-LeaveLoopCmps16: add rdx,8
-LeaveLoopCmps8: add rdx,8
-LeaveLoopCmps:
-
-        test    eax, 0000FFFFh
-        jnz LenLower
-
-        test eax,0ffffffffh
-
-        jnz LenLower32
-
-        add rdx,4
-        shr rax,32
-        or ax,ax
-        jnz LenLower
-
-LenLower32:
-        shr eax,16
-        add rdx,2
-LenLower:   sub al, 1
-        adc rdx, 0
-;;; Calculate the length of the match. If it is longer than MAX_MATCH,
-;;; then automatically accept it as the best possible match and leave.
-
-        lea rax, [rdi + rdx]
-        sub rax, r9
-        cmp eax, MAX_MATCH
-        jge LenMaximum
-
-;;; If the length of the match is not longer than the best match we
-;;; have so far, then forget it and return to the lookup loop.
-;///////////////////////////////////
-
-        cmp eax, r11d
-        jg  LongerMatch
-
-        lea rsi,[r10+r11]
-
-        mov rdi, prev_ad
-        mov edx, [chainlenwmask]
-        jmp LookupLoop
-
-;;;         s->match_start = cur_match;
-;;;         best_len = len;
-;;;         if (len >= nice_match) break;
-;;;         scan_end = *(ushf*)(scan+best_len-1);
-
-LongerMatch:
-        mov r11d, eax
-        mov match_start, r8d
-        cmp eax, [nicematch]
-        jge LeaveNow
-
-        lea rsi,[r10+rax]
-
-        movzx   ebx, word ptr [r9 + rax - 1]
-        mov rdi, prev_ad
-        mov edx, [chainlenwmask]
-        jmp LookupLoop
-
-;;; Accept the current string, with the maximum possible length.
-
-LenMaximum:
-        mov r11d,MAX_MATCH
-        mov match_start, r8d
-
-;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
-;;; return s->lookahead;
-
-LeaveNow:
-IFDEF INFOZIP
-        mov eax,r11d
-ELSE
-        mov eax, Lookahead
-        cmp r11d, eax
-        cmovng eax, r11d
-ENDIF
-
-;;; Restore the stack and return from whence we came.
-
-
-        mov rsi,[save_rsi]
-        mov rdi,[save_rdi]
-        mov rbx,[save_rbx]
-        mov rbp,[save_rbp]
-        mov r12,[save_r12]
-        mov r13,[save_r13]
-;        mov r14,[save_r14]
-;        mov r15,[save_r15]
-
-
-        ret 0
-; please don't remove this string !
-; Your can freely use gvmat64 in any free or commercial app
-; but it is far better don't remove the string in the binary!
-    db     0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998, converted to amd 64 by Gilles Vollant 2005",0dh,0ah,0
-longest_match   ENDP
-
-match_init PROC
-  ret 0
-match_init ENDP
-
-
-END
diff --git a/libs/zlib/contrib/masmx64/inffas8664.c b/libs/zlib/contrib/masmx64/inffas8664.c
deleted file mode 100644
index aa861a3339..0000000000
--- a/libs/zlib/contrib/masmx64/inffas8664.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/* inffas8664.c is a hand tuned assembler version of inffast.c - fast decoding
- * version for AMD64 on Windows using Microsoft C compiler
- *
- * Copyright (C) 1995-2003 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Copyright (C) 2003 Chris Anderson <christop@charm.net>
- * Please use the copyright conditions above.
- *
- * 2005 - Adaptation to Microsoft C Compiler for AMD64 by Gilles Vollant
- *
- * inffas8664.c call function inffas8664fnc in inffasx64.asm
- *  inffasx64.asm is automatically convert from AMD64 portion of inffas86.c
- *
- * Dec-29-2003 -- I added AMD64 inflate asm support.  This version is also
- * slightly quicker on x86 systems because, instead of using rep movsb to copy
- * data, it uses rep movsw, which moves data in 2-byte chunks instead of single
- * bytes.  I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates
- * from http://fedora.linux.duke.edu/fc1_x86_64
- * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with
- * 1GB ram.  The 64-bit version is about 4% faster than the 32-bit version,
- * when decompressing mozilla-source-1.3.tar.gz.
- *
- * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
- * the gcc -S output of zlib-1.2.0/inffast.c.  Zlib-1.2.0 is in beta release at
- * the moment.  I have successfully compiled and tested this code with gcc2.96,
- * gcc3.2, icc5.0, msvc6.0.  It is very close to the speed of inffast.S
- * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
- * enabled.  I will attempt to merge the MMX code into this version.  Newer
- * versions of this and inffast.S can be found at
- * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
- *
- */
-
-#include <stdio.h>
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-/* Mark Adler's comments from inffast.c: */
-
-/*
-   Decode literal, length, and distance codes and write out the resulting
-   literal and match bytes until either not enough input or output is
-   available, an end-of-block is encountered, or a data error is encountered.
-   When large enough input and output buffers are supplied to inflate(), for
-   example, a 16K input buffer and a 64K output buffer, more than 95% of the
-   inflate execution time is spent in this routine.
-
-   Entry assumptions:
-
-        state->mode == LEN
-        strm->avail_in >= 6
-        strm->avail_out >= 258
-        start >= strm->avail_out
-        state->bits < 8
-
-   On return, state->mode is one of:
-
-        LEN -- ran out of enough output space or enough available input
-        TYPE -- reached end of block code, inflate() to interpret next block
-        BAD -- error in block data
-
-   Notes:
-
-    - The maximum input bits used by a length/distance pair is 15 bits for the
-      length code, 5 bits for the length extra, 15 bits for the distance code,
-      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
-      Therefore if strm->avail_in >= 6, then there is enough input to avoid
-      checking for available input while decoding.
-
-    - The maximum bytes that a single length/distance pair can output is 258
-      bytes, which is the maximum length that can be coded.  inflate_fast()
-      requires strm->avail_out >= 258 for each loop to avoid checking for
-      output space.
- */
-
-
-
-    typedef struct inffast_ar {
-/* 64   32                               x86  x86_64 */
-/* ar offset                              register */
-/*  0    0 */ void *esp;                /* esp save */
-/*  8    4 */ void *ebp;                /* ebp save */
-/* 16    8 */ unsigned char FAR *in;    /* esi rsi  local strm->next_in */
-/* 24   12 */ unsigned char FAR *last;  /*     r9   while in < last */
-/* 32   16 */ unsigned char FAR *out;   /* edi rdi  local strm->next_out */
-/* 40   20 */ unsigned char FAR *beg;   /*          inflate()'s init next_out */
-/* 48   24 */ unsigned char FAR *end;   /*     r10  while out < end */
-/* 56   28 */ unsigned char FAR *window;/*          size of window, wsize!=0 */
-/* 64   32 */ code const FAR *lcode;    /* ebp rbp  local strm->lencode */
-/* 72   36 */ code const FAR *dcode;    /*     r11  local strm->distcode */
-/* 80   40 */ size_t /*unsigned long */hold;       /* edx rdx  local strm->hold */
-/* 88   44 */ unsigned bits;            /* ebx rbx  local strm->bits */
-/* 92   48 */ unsigned wsize;           /*          window size */
-/* 96   52 */ unsigned write;           /*          window write index */
-/*100   56 */ unsigned lmask;           /*     r12  mask for lcode */
-/*104   60 */ unsigned dmask;           /*     r13  mask for dcode */
-/*108   64 */ unsigned len;             /*     r14  match length */
-/*112   68 */ unsigned dist;            /*     r15  match distance */
-/*116   72 */ unsigned status;          /*          set when state chng*/
-    } type_ar;
-#ifdef ASMINF
-
-void inflate_fast(strm, start)
-z_streamp strm;
-unsigned start;         /* inflate()'s starting value for strm->avail_out */
-{
-    struct inflate_state FAR *state;
-    type_ar ar;
-    void inffas8664fnc(struct inffast_ar * par);
-
-
-
-#if (defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )) || (defined(_MSC_VER) && defined(_M_AMD64))
-#define PAD_AVAIL_IN 6
-#define PAD_AVAIL_OUT 258
-#else
-#define PAD_AVAIL_IN 5
-#define PAD_AVAIL_OUT 257
-#endif
-
-    /* copy state to local variables */
-    state = (struct inflate_state FAR *)strm->state;
-
-    ar.in = strm->next_in;
-    ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN);
-    ar.out = strm->next_out;
-    ar.beg = ar.out - (start - strm->avail_out);
-    ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT);
-    ar.wsize = state->wsize;
-    ar.write = state->wnext;
-    ar.window = state->window;
-    ar.hold = state->hold;
-    ar.bits = state->bits;
-    ar.lcode = state->lencode;
-    ar.dcode = state->distcode;
-    ar.lmask = (1U << state->lenbits) - 1;
-    ar.dmask = (1U << state->distbits) - 1;
-
-    /* decode literals and length/distances until end-of-block or not enough
-       input data or output space */
-
-    /* align in on 1/2 hold size boundary */
-    while (((size_t)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) {
-        ar.hold += (unsigned long)*ar.in++ << ar.bits;
-        ar.bits += 8;
-    }
-
-    inffas8664fnc(&ar);
-
-    if (ar.status > 1) {
-        if (ar.status == 2)
-            strm->msg = "invalid literal/length code";
-        else if (ar.status == 3)
-            strm->msg = "invalid distance code";
-        else
-            strm->msg = "invalid distance too far back";
-        state->mode = BAD;
-    }
-    else if ( ar.status == 1 ) {
-        state->mode = TYPE;
-    }
-
-    /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
-    ar.len = ar.bits >> 3;
-    ar.in -= ar.len;
-    ar.bits -= ar.len << 3;
-    ar.hold &= (1U << ar.bits) - 1;
-
-    /* update state and return */
-    strm->next_in = ar.in;
-    strm->next_out = ar.out;
-    strm->avail_in = (unsigned)(ar.in < ar.last ?
-                                PAD_AVAIL_IN + (ar.last - ar.in) :
-                                PAD_AVAIL_IN - (ar.in - ar.last));
-    strm->avail_out = (unsigned)(ar.out < ar.end ?
-                                 PAD_AVAIL_OUT + (ar.end - ar.out) :
-                                 PAD_AVAIL_OUT - (ar.out - ar.end));
-    state->hold = (unsigned long)ar.hold;
-    state->bits = ar.bits;
-    return;
-}
-
-#endif
diff --git a/libs/zlib/contrib/masmx64/inffasx64.asm b/libs/zlib/contrib/masmx64/inffasx64.asm
deleted file mode 100644
index 41ec82392e..0000000000
--- a/libs/zlib/contrib/masmx64/inffasx64.asm
+++ /dev/null
@@ -1,396 +0,0 @@
-; inffasx64.asm is a hand tuned assembler version of inffast.c - fast decoding
-; version for AMD64 on Windows using Microsoft C compiler
-;
-; inffasx64.asm is automatically convert from AMD64 portion of inffas86.c
-; inffasx64.asm is called by inffas8664.c, which contain more info.
-
-
-; to compile this file, I use option
-;   ml64.exe /Flinffasx64 /c /Zi inffasx64.asm
-;   with Microsoft Macro Assembler (x64) for AMD64
-;
-
-; This file compile with Microsoft Macro Assembler (x64) for AMD64
-;
-;   ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK
-;
-;   (you can get Windows WDK with ml64 for AMD64 from
-;      http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price)
-;
-
-
-.code
-inffas8664fnc PROC
-
-; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and
-; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp
-;
-; All registers must be preserved across the call, except for
-;   rax, rcx, rdx, r8, r-9, r10, and r11, which are scratch.
-
-
-	mov [rsp-8],rsi
-	mov [rsp-16],rdi
-	mov [rsp-24],r12
-	mov [rsp-32],r13
-	mov [rsp-40],r14
-	mov [rsp-48],r15
-	mov [rsp-56],rbx
-
-	mov rax,rcx
-
-	mov	[rax+8], rbp       ; /* save regs rbp and rsp */
-	mov	[rax], rsp
-
-	mov	rsp, rax          ; /* make rsp point to &ar */
-
-	mov	rsi, [rsp+16]      ; /* rsi  = in */
-	mov	rdi, [rsp+32]      ; /* rdi  = out */
-	mov	r9, [rsp+24]       ; /* r9   = last */
-	mov	r10, [rsp+48]      ; /* r10  = end */
-	mov	rbp, [rsp+64]      ; /* rbp  = lcode */
-	mov	r11, [rsp+72]      ; /* r11  = dcode */
-	mov	rdx, [rsp+80]      ; /* rdx  = hold */
-	mov	ebx, [rsp+88]      ; /* ebx  = bits */
-	mov	r12d, [rsp+100]    ; /* r12d = lmask */
-	mov	r13d, [rsp+104]    ; /* r13d = dmask */
-                                          ; /* r14d = len */
-                                          ; /* r15d = dist */
-
-
-	cld
-	cmp	r10, rdi
-	je	L_one_time           ; /* if only one decode left */
-	cmp	r9, rsi
-
-    jne L_do_loop
-
-
-L_one_time:
-	mov	r8, r12           ; /* r8 = lmask */
-	cmp	bl, 32
-	ja	L_get_length_code_one_time
-
-	lodsd                         ; /* eax = *(uint *)in++ */
-	mov	cl, bl            ; /* cl = bits, needs it for shifting */
-	add	bl, 32             ; /* bits += 32 */
-	shl	rax, cl
-	or	rdx, rax          ; /* hold |= *((uint *)in)++ << bits */
-	jmp	L_get_length_code_one_time
-
-ALIGN 4
-L_while_test:
-	cmp	r10, rdi
-	jbe	L_break_loop
-	cmp	r9, rsi
-	jbe	L_break_loop
-
-L_do_loop:
-	mov	r8, r12           ; /* r8 = lmask */
-	cmp	bl, 32
-	ja	L_get_length_code    ; /* if (32 < bits) */
-
-	lodsd                         ; /* eax = *(uint *)in++ */
-	mov	cl, bl            ; /* cl = bits, needs it for shifting */
-	add	bl, 32             ; /* bits += 32 */
-	shl	rax, cl
-	or	rdx, rax          ; /* hold |= *((uint *)in)++ << bits */
-
-L_get_length_code:
-	and	r8, rdx            ; /* r8 &= hold */
-	mov	eax, [rbp+r8*4]  ; /* eax = lcode[hold & lmask] */
-
-	mov	cl, ah            ; /* cl = this.bits */
-	sub	bl, ah            ; /* bits -= this.bits */
-	shr	rdx, cl           ; /* hold >>= this.bits */
-
-	test	al, al
-	jnz	L_test_for_length_base ; /* if (op != 0) 45.7% */
-
-	mov	r8, r12            ; /* r8 = lmask */
-	shr	eax, 16            ; /* output this.val char */
-	stosb
-
-L_get_length_code_one_time:
-	and	r8, rdx            ; /* r8 &= hold */
-	mov	eax, [rbp+r8*4] ; /* eax = lcode[hold & lmask] */
-
-L_dolen:
-	mov	cl, ah            ; /* cl = this.bits */
-	sub	bl, ah            ; /* bits -= this.bits */
-	shr	rdx, cl           ; /* hold >>= this.bits */
-
-	test	al, al
-	jnz	L_test_for_length_base ; /* if (op != 0) 45.7% */
-
-	shr	eax, 16            ; /* output this.val char */
-	stosb
-	jmp	L_while_test
-
-ALIGN 4
-L_test_for_length_base:
-	mov	r14d, eax         ; /* len = this */
-	shr	r14d, 16           ; /* len = this.val */
-	mov	cl, al
-
-	test	al, 16
-	jz	L_test_for_second_level_length ; /* if ((op & 16) == 0) 8% */
-	and	cl, 15             ; /* op &= 15 */
-	jz	L_decode_distance    ; /* if (!op) */
-
-L_add_bits_to_len:
-	sub	bl, cl
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx          ; /* eax &= hold */
-	shr	rdx, cl
-	add	r14d, eax         ; /* len += hold & mask[op] */
-
-L_decode_distance:
-	mov	r8, r13           ; /* r8 = dmask */
-	cmp	bl, 32
-	ja	L_get_distance_code  ; /* if (32 < bits) */
-
-	lodsd                         ; /* eax = *(uint *)in++ */
-	mov	cl, bl            ; /* cl = bits, needs it for shifting */
-	add	bl, 32             ; /* bits += 32 */
-	shl	rax, cl
-	or	rdx, rax          ; /* hold |= *((uint *)in)++ << bits */
-
-L_get_distance_code:
-	and	r8, rdx           ; /* r8 &= hold */
-	mov	eax, [r11+r8*4] ; /* eax = dcode[hold & dmask] */
-
-L_dodist:
-	mov	r15d, eax         ; /* dist = this */
-	shr	r15d, 16           ; /* dist = this.val */
-	mov	cl, ah
-	sub	bl, ah            ; /* bits -= this.bits */
-	shr	rdx, cl           ; /* hold >>= this.bits */
-	mov	cl, al            ; /* cl = this.op */
-
-	test	al, 16             ; /* if ((op & 16) == 0) */
-	jz	L_test_for_second_level_dist
-	and	cl, 15             ; /* op &= 15 */
-	jz	L_check_dist_one
-
-L_add_bits_to_dist:
-	sub	bl, cl
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax                 ; /* (1 << op) - 1 */
-	and	eax, edx          ; /* eax &= hold */
-	shr	rdx, cl
-	add	r15d, eax         ; /* dist += hold & ((1 << op) - 1) */
-
-L_check_window:
-	mov	r8, rsi           ; /* save in so from can use it's reg */
-	mov	rax, rdi
-	sub	rax, [rsp+40]      ; /* nbytes = out - beg */
-
-	cmp	eax, r15d
-	jb	L_clip_window        ; /* if (dist > nbytes) 4.2% */
-
-	mov	ecx, r14d         ; /* ecx = len */
-	mov	rsi, rdi
-	sub	rsi, r15          ; /* from = out - dist */
-
-	sar	ecx, 1
-	jnc	L_copy_two           ; /* if len % 2 == 0 */
-
-	rep     movsw
-	mov	al, [rsi]
-	mov	[rdi], al
-	inc	rdi
-
-	mov	rsi, r8           ; /* move in back to %rsi, toss from */
-	jmp	L_while_test
-
-L_copy_two:
-	rep     movsw
-	mov	rsi, r8           ; /* move in back to %rsi, toss from */
-	jmp	L_while_test
-
-ALIGN 4
-L_check_dist_one:
-	cmp	r15d, 1            ; /* if dist 1, is a memset */
-	jne	L_check_window
-	cmp	[rsp+40], rdi      ; /* if out == beg, outside window */
-	je	L_check_window
-
-	mov	ecx, r14d         ; /* ecx = len */
-	mov	al, [rdi-1]
-	mov	ah, al
-
-	sar	ecx, 1
-	jnc	L_set_two
-	mov	[rdi], al
-	inc	rdi
-
-L_set_two:
-	rep     stosw
-	jmp	L_while_test
-
-ALIGN 4
-L_test_for_second_level_length:
-	test	al, 64
-	jnz	L_test_for_end_of_block ; /* if ((op & 64) != 0) */
-
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx         ; /* eax &= hold */
-	add	eax, r14d        ; /* eax += len */
-	mov	eax, [rbp+rax*4] ; /* eax = lcode[val+(hold&mask[op])]*/
-	jmp	L_dolen
-
-ALIGN 4
-L_test_for_second_level_dist:
-	test	al, 64
-	jnz	L_invalid_distance_code ; /* if ((op & 64) != 0) */
-
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx         ; /* eax &= hold */
-	add	eax, r15d        ; /* eax += dist */
-	mov	eax, [r11+rax*4] ; /* eax = dcode[val+(hold&mask[op])]*/
-	jmp	L_dodist
-
-ALIGN 4
-L_clip_window:
-	mov	ecx, eax         ; /* ecx = nbytes */
-	mov	eax, [rsp+92]     ; /* eax = wsize, prepare for dist cmp */
-	neg	ecx                ; /* nbytes = -nbytes */
-
-	cmp	eax, r15d
-	jb	L_invalid_distance_too_far ; /* if (dist > wsize) */
-
-	add	ecx, r15d         ; /* nbytes = dist - nbytes */
-	cmp	dword ptr [rsp+96], 0
-	jne	L_wrap_around_window ; /* if (write != 0) */
-
-	mov	rsi, [rsp+56]     ; /* from  = window */
-	sub	eax, ecx         ; /* eax  -= nbytes */
-	add	rsi, rax         ; /* from += wsize - nbytes */
-
-	mov	eax, r14d        ; /* eax = len */
-	cmp	r14d, ecx
-	jbe	L_do_copy           ; /* if (nbytes >= len) */
-
-	sub	eax, ecx         ; /* eax -= nbytes */
-	rep     movsb
-	mov	rsi, rdi
-	sub	rsi, r15         ; /* from = &out[ -dist ] */
-	jmp	L_do_copy
-
-ALIGN 4
-L_wrap_around_window:
-	mov	eax, [rsp+96]     ; /* eax = write */
-	cmp	ecx, eax
-	jbe	L_contiguous_in_window ; /* if (write >= nbytes) */
-
-	mov	esi, [rsp+92]     ; /* from  = wsize */
-	add	rsi, [rsp+56]     ; /* from += window */
-	add	rsi, rax         ; /* from += write */
-	sub	rsi, rcx         ; /* from -= nbytes */
-	sub	ecx, eax         ; /* nbytes -= write */
-
-	mov	eax, r14d        ; /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy           ; /* if (nbytes >= len) */
-
-	sub	eax, ecx         ; /* len -= nbytes */
-	rep     movsb
-	mov	rsi, [rsp+56]     ; /* from = window */
-	mov	ecx, [rsp+96]     ; /* nbytes = write */
-	cmp	eax, ecx
-	jbe	L_do_copy           ; /* if (nbytes >= len) */
-
-	sub	eax, ecx         ; /* len -= nbytes */
-	rep     movsb
-	mov	rsi, rdi
-	sub	rsi, r15         ; /* from = out - dist */
-	jmp	L_do_copy
-
-ALIGN 4
-L_contiguous_in_window:
-	mov	rsi, [rsp+56]     ; /* rsi = window */
-	add	rsi, rax
-	sub	rsi, rcx         ; /* from += write - nbytes */
-
-	mov	eax, r14d        ; /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy           ; /* if (nbytes >= len) */
-
-	sub	eax, ecx         ; /* len -= nbytes */
-	rep     movsb
-	mov	rsi, rdi
-	sub	rsi, r15         ; /* from = out - dist */
-	jmp	L_do_copy           ; /* if (nbytes >= len) */
-
-ALIGN 4
-L_do_copy:
-	mov	ecx, eax         ; /* ecx = len */
-	rep     movsb
-
-	mov	rsi, r8          ; /* move in back to %esi, toss from */
-	jmp	L_while_test
-
-L_test_for_end_of_block:
-	test	al, 32
-	jz	L_invalid_literal_length_code
-	mov	dword ptr [rsp+116], 1
-	jmp	L_break_loop_with_status
-
-L_invalid_literal_length_code:
-	mov	dword ptr [rsp+116], 2
-	jmp	L_break_loop_with_status
-
-L_invalid_distance_code:
-	mov	dword ptr [rsp+116], 3
-	jmp	L_break_loop_with_status
-
-L_invalid_distance_too_far:
-	mov	dword ptr [rsp+116], 4
-	jmp	L_break_loop_with_status
-
-L_break_loop:
-	mov	dword ptr [rsp+116], 0
-
-L_break_loop_with_status:
-; /* put in, out, bits, and hold back into ar and pop esp */
-	mov	[rsp+16], rsi     ; /* in */
-	mov	[rsp+32], rdi     ; /* out */
-	mov	[rsp+88], ebx     ; /* bits */
-	mov	[rsp+80], rdx     ; /* hold */
-
-	mov	rax, [rsp]       ; /* restore rbp and rsp */
-	mov	rbp, [rsp+8]
-	mov	rsp, rax
-
-
-
-	mov rsi,[rsp-8]
-	mov rdi,[rsp-16]
-	mov r12,[rsp-24]
-	mov r13,[rsp-32]
-	mov r14,[rsp-40]
-	mov r15,[rsp-48]
-	mov rbx,[rsp-56]
-
-    ret 0
-;          :
-;          : "m" (ar)
-;          : "memory", "%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%rdi",
-;            "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"
-;    );
-
-inffas8664fnc 	ENDP
-;_TEXT	ENDS
-END
diff --git a/libs/zlib/contrib/masmx64/readme.txt b/libs/zlib/contrib/masmx64/readme.txt
deleted file mode 100644
index 652571c7a5..0000000000
--- a/libs/zlib/contrib/masmx64/readme.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-Summary
--------
-This directory contains ASM implementations of the functions
-longest_match() and inflate_fast(), for 64 bits x86 (both AMD64 and Intel EM64t),
-for use with Microsoft Macro Assembler (x64) for AMD64 and Microsoft C++ 64 bits.
-
-gvmat64.asm is written by Gilles Vollant (2005), by using Brian Raiter 686/32 bits
-   assembly optimized version from Jean-loup Gailly original longest_match function
-
-inffasx64.asm and inffas8664.c were written by Chris Anderson, by optimizing
-   original function from Mark Adler
-
-Use instructions
-----------------
-Assemble the .asm files using MASM and put the object files into the zlib source
-directory.  You can also get object files here:
-
-     http://www.winimage.com/zLibDll/zlib124_masm_obj.zip
-
-define ASMV and ASMINF in your project. Include inffas8664.c in your source tree,
-and inffasx64.obj and gvmat64.obj as object to link.
-
-
-Build instructions
-------------------
-run bld_64.bat with Microsoft Macro Assembler (x64) for AMD64 (ml64.exe)
-
-ml64.exe is given with Visual Studio 2005, Windows 2003 server DDK
-
-You can get Windows 2003 server DDK with ml64 and cl for AMD64 from
-  http://www.microsoft.com/whdc/devtools/ddk/default.mspx for low price)
diff --git a/libs/zlib/contrib/masmx86/bld_ml32.bat b/libs/zlib/contrib/masmx86/bld_ml32.bat
deleted file mode 100644
index e1b86bf68a..0000000000
--- a/libs/zlib/contrib/masmx86/bld_ml32.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-ml /coff /Zi /c /Flmatch686.lst match686.asm
-ml /coff /Zi /c /Flinffas32.lst inffas32.asm
diff --git a/libs/zlib/contrib/masmx86/inffas32.asm b/libs/zlib/contrib/masmx86/inffas32.asm
deleted file mode 100644
index cb37a81e4e..0000000000
--- a/libs/zlib/contrib/masmx86/inffas32.asm
+++ /dev/null
@@ -1,1080 +0,0 @@
-;/* inffas32.asm is a hand tuned assembler version of inffast.c -- fast decoding
-; *
-; * inffas32.asm is derivated from inffas86.c, with translation of assembly code
-; *
-; * Copyright (C) 1995-2003 Mark Adler
-; * For conditions of distribution and use, see copyright notice in zlib.h
-; *
-; * Copyright (C) 2003 Chris Anderson <christop@charm.net>
-; * Please use the copyright conditions above.
-; *
-; * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
-; * the gcc -S output of zlib-1.2.0/inffast.c.  Zlib-1.2.0 is in beta release at
-; * the moment.  I have successfully compiled and tested this code with gcc2.96,
-; * gcc3.2, icc5.0, msvc6.0.  It is very close to the speed of inffast.S
-; * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
-; * enabled.  I will attempt to merge the MMX code into this version.  Newer
-; * versions of this and inffast.S can be found at
-; * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
-; *
-; * 2005 : modification by Gilles Vollant
-; */
-; For Visual C++ 4.x and higher and ML 6.x and higher
-;   ml.exe is in directory \MASM611C of Win95 DDK
-;   ml.exe is also distributed in http://www.masm32.com/masmdl.htm
-;    and in VC++2003 toolkit at http://msdn.microsoft.com/visualc/vctoolkit2003/
-;
-;
-;   compile with command line option
-;   ml  /coff /Zi /c /Flinffas32.lst inffas32.asm
-
-;   if you define NO_GZIP (see inflate.h), compile with
-;   ml  /coff /Zi /c /Flinffas32.lst /DNO_GUNZIP inffas32.asm
-
-
-; zlib122sup is 0 fort zlib 1.2.2.1 and lower
-; zlib122sup is 8 fort zlib 1.2.2.2 and more (with addition of dmax and head
-;        in inflate_state in inflate.h)
-zlib1222sup      equ    8
-
-
-IFDEF GUNZIP
-  INFLATE_MODE_TYPE    equ 11
-  INFLATE_MODE_BAD     equ 26
-ELSE
-  IFNDEF NO_GUNZIP
-    INFLATE_MODE_TYPE    equ 11
-    INFLATE_MODE_BAD     equ 26
-  ELSE
-    INFLATE_MODE_TYPE    equ 3
-    INFLATE_MODE_BAD     equ 17
-  ENDIF
-ENDIF
-
-
-; 75 "inffast.S"
-;FILE "inffast.S"
-
-;;;GLOBAL _inflate_fast
-
-;;;SECTION .text
-
-
-
-	.586p
-	.mmx
-
-	name	inflate_fast_x86
-	.MODEL	FLAT
-
-_DATA			segment
-inflate_fast_use_mmx:
-	dd	1
-
-
-_TEXT			segment
-
-
-
-ALIGN 4
-	db	'Fast decoding Code from Chris Anderson'
-	db	0
-
-ALIGN 4
-invalid_literal_length_code_msg:
-	db	'invalid literal/length code'
-	db	0
-
-ALIGN 4
-invalid_distance_code_msg:
-	db	'invalid distance code'
-	db	0
-
-ALIGN 4
-invalid_distance_too_far_msg:
-	db	'invalid distance too far back'
-	db	0
-
-
-ALIGN 4
-inflate_fast_mask:
-dd	0
-dd	1
-dd	3
-dd	7
-dd	15
-dd	31
-dd	63
-dd	127
-dd	255
-dd	511
-dd	1023
-dd	2047
-dd	4095
-dd	8191
-dd	16383
-dd	32767
-dd	65535
-dd	131071
-dd	262143
-dd	524287
-dd	1048575
-dd	2097151
-dd	4194303
-dd	8388607
-dd	16777215
-dd	33554431
-dd	67108863
-dd	134217727
-dd	268435455
-dd	536870911
-dd	1073741823
-dd	2147483647
-dd	4294967295
-
-
-mode_state	 equ	0	;/* state->mode	*/
-wsize_state	 equ	(32+zlib1222sup)	;/* state->wsize */
-write_state	 equ	(36+4+zlib1222sup)	;/* state->write */
-window_state	 equ	(40+4+zlib1222sup)	;/* state->window */
-hold_state	 equ	(44+4+zlib1222sup)	;/* state->hold	*/
-bits_state	 equ	(48+4+zlib1222sup)	;/* state->bits	*/
-lencode_state	 equ	(64+4+zlib1222sup)	;/* state->lencode */
-distcode_state	 equ	(68+4+zlib1222sup)	;/* state->distcode */
-lenbits_state	 equ	(72+4+zlib1222sup)	;/* state->lenbits */
-distbits_state	 equ	(76+4+zlib1222sup)	;/* state->distbits */
-
-
-;;SECTION .text
-; 205 "inffast.S"
-;GLOBAL	inflate_fast_use_mmx
-
-;SECTION .data
-
-
-; GLOBAL inflate_fast_use_mmx:object
-;.size inflate_fast_use_mmx, 4
-; 226 "inffast.S"
-;SECTION .text
-
-ALIGN 4
-_inflate_fast proc near
-.FPO (16, 4, 0, 0, 1, 0)
-	push  edi
-	push  esi
-	push  ebp
-	push  ebx
-	pushfd
-	sub  esp,64
-	cld
-
-
-
-
-	mov  esi, [esp+88]
-	mov  edi, [esi+28]
-
-
-
-
-
-
-
-	mov  edx, [esi+4]
-	mov  eax, [esi+0]
-
-	add  edx,eax
-	sub  edx,11
-
-	mov  [esp+44],eax
-	mov  [esp+20],edx
-
-	mov  ebp, [esp+92]
-	mov  ecx, [esi+16]
-	mov  ebx, [esi+12]
-
-	sub  ebp,ecx
-	neg  ebp
-	add  ebp,ebx
-
-	sub  ecx,257
-	add  ecx,ebx
-
-	mov  [esp+60],ebx
-	mov  [esp+40],ebp
-	mov  [esp+16],ecx
-; 285 "inffast.S"
-	mov  eax, [edi+lencode_state]
-	mov  ecx, [edi+distcode_state]
-
-	mov  [esp+8],eax
-	mov  [esp+12],ecx
-
-	mov  eax,1
-	mov  ecx, [edi+lenbits_state]
-	shl  eax,cl
-	dec  eax
-	mov  [esp+0],eax
-
-	mov  eax,1
-	mov  ecx, [edi+distbits_state]
-	shl  eax,cl
-	dec  eax
-	mov  [esp+4],eax
-
-	mov  eax, [edi+wsize_state]
-	mov  ecx, [edi+write_state]
-	mov  edx, [edi+window_state]
-
-	mov  [esp+52],eax
-	mov  [esp+48],ecx
-	mov  [esp+56],edx
-
-	mov  ebp, [edi+hold_state]
-	mov  ebx, [edi+bits_state]
-; 321 "inffast.S"
-	mov  esi, [esp+44]
-	mov  ecx, [esp+20]
-	cmp  ecx,esi
-	ja   L_align_long
-
-	add  ecx,11
-	sub  ecx,esi
-	mov  eax,12
-	sub  eax,ecx
-	lea  edi, [esp+28]
-	rep movsb
-	mov  ecx,eax
-	xor  eax,eax
-	rep stosb
-	lea  esi, [esp+28]
-	mov  [esp+20],esi
-	jmp  L_is_aligned
-
-
-L_align_long:
-	test  esi,3
-	jz   L_is_aligned
-	xor  eax,eax
-	mov  al, [esi]
-	inc  esi
-	mov  ecx,ebx
-	add  ebx,8
-	shl  eax,cl
-	or  ebp,eax
-	jmp L_align_long
-
-L_is_aligned:
-	mov  edi, [esp+60]
-; 366 "inffast.S"
-L_check_mmx:
-	cmp  dword ptr [inflate_fast_use_mmx],2
-	je   L_init_mmx
-	ja   L_do_loop
-
-	push  eax
-	push  ebx
-	push  ecx
-	push  edx
-	pushfd
-	mov  eax, [esp]
-	xor  dword ptr [esp],0200000h
-
-
-
-
-	popfd
-	pushfd
-	pop  edx
-	xor  edx,eax
-	jz   L_dont_use_mmx
-	xor  eax,eax
-	cpuid
-	cmp  ebx,0756e6547h
-	jne  L_dont_use_mmx
-	cmp  ecx,06c65746eh
-	jne  L_dont_use_mmx
-	cmp  edx,049656e69h
-	jne  L_dont_use_mmx
-	mov  eax,1
-	cpuid
-	shr  eax,8
-	and  eax,15
-	cmp  eax,6
-	jne  L_dont_use_mmx
-	test  edx,0800000h
-	jnz  L_use_mmx
-	jmp  L_dont_use_mmx
-L_use_mmx:
-	mov  dword ptr [inflate_fast_use_mmx],2
-	jmp  L_check_mmx_pop
-L_dont_use_mmx:
-	mov  dword ptr [inflate_fast_use_mmx],3
-L_check_mmx_pop:
-	pop  edx
-	pop  ecx
-	pop  ebx
-	pop  eax
-	jmp  L_check_mmx
-; 426 "inffast.S"
-ALIGN 4
-L_do_loop:
-; 437 "inffast.S"
-	cmp  bl,15
-	ja   L_get_length_code
-
-	xor  eax,eax
-	lodsw
-	mov  cl,bl
-	add  bl,16
-	shl  eax,cl
-	or  ebp,eax
-
-L_get_length_code:
-	mov  edx, [esp+0]
-	mov  ecx, [esp+8]
-	and  edx,ebp
-	mov  eax, [ecx+edx*4]
-
-L_dolen:
-
-
-
-
-
-
-	mov  cl,ah
-	sub  bl,ah
-	shr  ebp,cl
-
-
-
-
-
-
-	test  al,al
-	jnz   L_test_for_length_base
-
-	shr  eax,16
-	stosb
-
-L_while_test:
-
-
-	cmp  [esp+16],edi
-	jbe  L_break_loop
-
-	cmp  [esp+20],esi
-	ja   L_do_loop
-	jmp  L_break_loop
-
-L_test_for_length_base:
-; 502 "inffast.S"
-	mov  edx,eax
-	shr  edx,16
-	mov  cl,al
-
-	test  al,16
-	jz   L_test_for_second_level_length
-	and  cl,15
-	jz   L_save_len
-	cmp  bl,cl
-	jae  L_add_bits_to_len
-
-	mov  ch,cl
-	xor  eax,eax
-	lodsw
-	mov  cl,bl
-	add  bl,16
-	shl  eax,cl
-	or  ebp,eax
-	mov  cl,ch
-
-L_add_bits_to_len:
-	mov  eax,1
-	shl  eax,cl
-	dec  eax
-	sub  bl,cl
-	and  eax,ebp
-	shr  ebp,cl
-	add  edx,eax
-
-L_save_len:
-	mov  [esp+24],edx
-
-
-L_decode_distance:
-; 549 "inffast.S"
-	cmp  bl,15
-	ja   L_get_distance_code
-
-	xor  eax,eax
-	lodsw
-	mov  cl,bl
-	add  bl,16
-	shl  eax,cl
-	or  ebp,eax
-
-L_get_distance_code:
-	mov  edx, [esp+4]
-	mov  ecx, [esp+12]
-	and  edx,ebp
-	mov  eax, [ecx+edx*4]
-
-
-L_dodist:
-	mov  edx,eax
-	shr  edx,16
-	mov  cl,ah
-	sub  bl,ah
-	shr  ebp,cl
-; 584 "inffast.S"
-	mov  cl,al
-
-	test  al,16
-	jz  L_test_for_second_level_dist
-	and  cl,15
-	jz  L_check_dist_one
-	cmp  bl,cl
-	jae  L_add_bits_to_dist
-
-	mov  ch,cl
-	xor  eax,eax
-	lodsw
-	mov  cl,bl
-	add  bl,16
-	shl  eax,cl
-	or  ebp,eax
-	mov  cl,ch
-
-L_add_bits_to_dist:
-	mov  eax,1
-	shl  eax,cl
-	dec  eax
-	sub  bl,cl
-	and  eax,ebp
-	shr  ebp,cl
-	add  edx,eax
-	jmp  L_check_window
-
-L_check_window:
-; 625 "inffast.S"
-	mov  [esp+44],esi
-	mov  eax,edi
-	sub  eax, [esp+40]
-
-	cmp  eax,edx
-	jb   L_clip_window
-
-	mov  ecx, [esp+24]
-	mov  esi,edi
-	sub  esi,edx
-
-	sub  ecx,3
-	mov  al, [esi]
-	mov  [edi],al
-	mov  al, [esi+1]
-	mov  dl, [esi+2]
-	add  esi,3
-	mov  [edi+1],al
-	mov  [edi+2],dl
-	add  edi,3
-	rep movsb
-
-	mov  esi, [esp+44]
-	jmp  L_while_test
-
-ALIGN 4
-L_check_dist_one:
-	cmp  edx,1
-	jne  L_check_window
-	cmp  [esp+40],edi
-	je  L_check_window
-
-	dec  edi
-	mov  ecx, [esp+24]
-	mov  al, [edi]
-	sub  ecx,3
-
-	mov  [edi+1],al
-	mov  [edi+2],al
-	mov  [edi+3],al
-	add  edi,4
-	rep stosb
-
-	jmp  L_while_test
-
-ALIGN 4
-L_test_for_second_level_length:
-
-
-
-
-	test  al,64
-	jnz   L_test_for_end_of_block
-
-	mov  eax,1
-	shl  eax,cl
-	dec  eax
-	and  eax,ebp
-	add  eax,edx
-	mov  edx, [esp+8]
-	mov  eax, [edx+eax*4]
-	jmp  L_dolen
-
-ALIGN 4
-L_test_for_second_level_dist:
-
-
-
-
-	test  al,64
-	jnz   L_invalid_distance_code
-
-	mov  eax,1
-	shl  eax,cl
-	dec  eax
-	and  eax,ebp
-	add  eax,edx
-	mov  edx, [esp+12]
-	mov  eax, [edx+eax*4]
-	jmp  L_dodist
-
-ALIGN 4
-L_clip_window:
-; 721 "inffast.S"
-	mov  ecx,eax
-	mov  eax, [esp+52]
-	neg  ecx
-	mov  esi, [esp+56]
-
-	cmp  eax,edx
-	jb   L_invalid_distance_too_far
-
-	add  ecx,edx
-	cmp  dword ptr [esp+48],0
-	jne  L_wrap_around_window
-
-	sub  eax,ecx
-	add  esi,eax
-; 749 "inffast.S"
-	mov  eax, [esp+24]
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,edx
-	jmp  L_do_copy1
-
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,edx
-	jmp  L_do_copy1
-
-L_wrap_around_window:
-; 793 "inffast.S"
-	mov  eax, [esp+48]
-	cmp  ecx,eax
-	jbe  L_contiguous_in_window
-
-	add  esi, [esp+52]
-	add  esi,eax
-	sub  esi,ecx
-	sub  ecx,eax
-
-
-	mov  eax, [esp+24]
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi, [esp+56]
-	mov  ecx, [esp+48]
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,edx
-	jmp  L_do_copy1
-
-L_contiguous_in_window:
-; 836 "inffast.S"
-	add  esi,eax
-	sub  esi,ecx
-
-
-	mov  eax, [esp+24]
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,edx
-
-L_do_copy1:
-; 862 "inffast.S"
-	mov  ecx,eax
-	rep movsb
-
-	mov  esi, [esp+44]
-	jmp  L_while_test
-; 878 "inffast.S"
-ALIGN 4
-L_init_mmx:
-	emms
-
-
-
-
-
-	movd mm0,ebp
-	mov  ebp,ebx
-; 896 "inffast.S"
-	movd mm4,dword ptr [esp+0]
-	movq mm3,mm4
-	movd mm5,dword ptr [esp+4]
-	movq mm2,mm5
-	pxor mm1,mm1
-	mov  ebx, [esp+8]
-	jmp  L_do_loop_mmx
-
-ALIGN 4
-L_do_loop_mmx:
-	psrlq mm0,mm1
-
-	cmp  ebp,32
-	ja  L_get_length_code_mmx
-
-	movd mm6,ebp
-	movd mm7,dword ptr [esi]
-	add  esi,4
-	psllq mm7,mm6
-	add  ebp,32
-	por mm0,mm7
-
-L_get_length_code_mmx:
-	pand mm4,mm0
-	movd eax,mm4
-	movq mm4,mm3
-	mov  eax, [ebx+eax*4]
-
-L_dolen_mmx:
-	movzx  ecx,ah
-	movd mm1,ecx
-	sub  ebp,ecx
-
-	test  al,al
-	jnz L_test_for_length_base_mmx
-
-	shr  eax,16
-	stosb
-
-L_while_test_mmx:
-
-
-	cmp  [esp+16],edi
-	jbe L_break_loop
-
-	cmp  [esp+20],esi
-	ja L_do_loop_mmx
-	jmp L_break_loop
-
-L_test_for_length_base_mmx:
-
-	mov  edx,eax
-	shr  edx,16
-
-	test  al,16
-	jz  L_test_for_second_level_length_mmx
-	and  eax,15
-	jz L_decode_distance_mmx
-
-	psrlq mm0,mm1
-	movd mm1,eax
-	movd ecx,mm0
-	sub  ebp,eax
-	and  ecx, [inflate_fast_mask+eax*4]
-	add  edx,ecx
-
-L_decode_distance_mmx:
-	psrlq mm0,mm1
-
-	cmp  ebp,32
-	ja L_get_dist_code_mmx
-
-	movd mm6,ebp
-	movd mm7,dword ptr [esi]
-	add  esi,4
-	psllq mm7,mm6
-	add  ebp,32
-	por mm0,mm7
-
-L_get_dist_code_mmx:
-	mov  ebx, [esp+12]
-	pand mm5,mm0
-	movd eax,mm5
-	movq mm5,mm2
-	mov  eax, [ebx+eax*4]
-
-L_dodist_mmx:
-
-	movzx  ecx,ah
-	mov  ebx,eax
-	shr  ebx,16
-	sub  ebp,ecx
-	movd mm1,ecx
-
-	test  al,16
-	jz L_test_for_second_level_dist_mmx
-	and  eax,15
-	jz L_check_dist_one_mmx
-
-L_add_bits_to_dist_mmx:
-	psrlq mm0,mm1
-	movd mm1,eax
-	movd ecx,mm0
-	sub  ebp,eax
-	and  ecx, [inflate_fast_mask+eax*4]
-	add  ebx,ecx
-
-L_check_window_mmx:
-	mov  [esp+44],esi
-	mov  eax,edi
-	sub  eax, [esp+40]
-
-	cmp  eax,ebx
-	jb L_clip_window_mmx
-
-	mov  ecx,edx
-	mov  esi,edi
-	sub  esi,ebx
-
-	sub  ecx,3
-	mov  al, [esi]
-	mov  [edi],al
-	mov  al, [esi+1]
-	mov  dl, [esi+2]
-	add  esi,3
-	mov  [edi+1],al
-	mov  [edi+2],dl
-	add  edi,3
-	rep movsb
-
-	mov  esi, [esp+44]
-	mov  ebx, [esp+8]
-	jmp  L_while_test_mmx
-
-ALIGN 4
-L_check_dist_one_mmx:
-	cmp  ebx,1
-	jne  L_check_window_mmx
-	cmp  [esp+40],edi
-	je   L_check_window_mmx
-
-	dec  edi
-	mov  ecx,edx
-	mov  al, [edi]
-	sub  ecx,3
-
-	mov  [edi+1],al
-	mov  [edi+2],al
-	mov  [edi+3],al
-	add  edi,4
-	rep stosb
-
-	mov  ebx, [esp+8]
-	jmp  L_while_test_mmx
-
-ALIGN 4
-L_test_for_second_level_length_mmx:
-	test  al,64
-	jnz L_test_for_end_of_block
-
-	and  eax,15
-	psrlq mm0,mm1
-	movd ecx,mm0
-	and  ecx, [inflate_fast_mask+eax*4]
-	add  ecx,edx
-	mov  eax, [ebx+ecx*4]
-	jmp L_dolen_mmx
-
-ALIGN 4
-L_test_for_second_level_dist_mmx:
-	test  al,64
-	jnz L_invalid_distance_code
-
-	and  eax,15
-	psrlq mm0,mm1
-	movd ecx,mm0
-	and  ecx, [inflate_fast_mask+eax*4]
-	mov  eax, [esp+12]
-	add  ecx,ebx
-	mov  eax, [eax+ecx*4]
-	jmp  L_dodist_mmx
-
-ALIGN 4
-L_clip_window_mmx:
-
-	mov  ecx,eax
-	mov  eax, [esp+52]
-	neg  ecx
-	mov  esi, [esp+56]
-
-	cmp  eax,ebx
-	jb  L_invalid_distance_too_far
-
-	add  ecx,ebx
-	cmp  dword ptr [esp+48],0
-	jne  L_wrap_around_window_mmx
-
-	sub  eax,ecx
-	add  esi,eax
-
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,ebx
-	jmp  L_do_copy1_mmx
-
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,ebx
-	jmp  L_do_copy1_mmx
-
-L_wrap_around_window_mmx:
-
-	mov  eax, [esp+48]
-	cmp  ecx,eax
-	jbe  L_contiguous_in_window_mmx
-
-	add  esi, [esp+52]
-	add  esi,eax
-	sub  esi,ecx
-	sub  ecx,eax
-
-
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi, [esp+56]
-	mov  ecx, [esp+48]
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,ebx
-	jmp  L_do_copy1_mmx
-
-L_contiguous_in_window_mmx:
-
-	add  esi,eax
-	sub  esi,ecx
-
-
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,ebx
-
-L_do_copy1_mmx:
-
-
-	mov  ecx,edx
-	rep movsb
-
-	mov  esi, [esp+44]
-	mov  ebx, [esp+8]
-	jmp  L_while_test_mmx
-; 1174 "inffast.S"
-L_invalid_distance_code:
-
-
-
-
-
-	mov  ecx, invalid_distance_code_msg
-	mov  edx,INFLATE_MODE_BAD
-	jmp  L_update_stream_state
-
-L_test_for_end_of_block:
-
-
-
-
-
-	test  al,32
-	jz  L_invalid_literal_length_code
-
-	mov  ecx,0
-	mov  edx,INFLATE_MODE_TYPE
-	jmp  L_update_stream_state
-
-L_invalid_literal_length_code:
-
-
-
-
-
-	mov  ecx, invalid_literal_length_code_msg
-	mov  edx,INFLATE_MODE_BAD
-	jmp  L_update_stream_state
-
-L_invalid_distance_too_far:
-
-
-
-	mov  esi, [esp+44]
-	mov  ecx, invalid_distance_too_far_msg
-	mov  edx,INFLATE_MODE_BAD
-	jmp  L_update_stream_state
-
-L_update_stream_state:
-
-	mov  eax, [esp+88]
-	test  ecx,ecx
-	jz  L_skip_msg
-	mov  [eax+24],ecx
-L_skip_msg:
-	mov  eax, [eax+28]
-	mov  [eax+mode_state],edx
-	jmp  L_break_loop
-
-ALIGN 4
-L_break_loop:
-; 1243 "inffast.S"
-	cmp  dword ptr [inflate_fast_use_mmx],2
-	jne  L_update_next_in
-
-
-
-	mov  ebx,ebp
-
-L_update_next_in:
-; 1266 "inffast.S"
-	mov  eax, [esp+88]
-	mov  ecx,ebx
-	mov  edx, [eax+28]
-	shr  ecx,3
-	sub  esi,ecx
-	shl  ecx,3
-	sub  ebx,ecx
-	mov  [eax+12],edi
-	mov  [edx+bits_state],ebx
-	mov  ecx,ebx
-
-	lea  ebx, [esp+28]
-	cmp  [esp+20],ebx
-	jne  L_buf_not_used
-
-	sub  esi,ebx
-	mov  ebx, [eax+0]
-	mov  [esp+20],ebx
-	add  esi,ebx
-	mov  ebx, [eax+4]
-	sub  ebx,11
-	add  [esp+20],ebx
-
-L_buf_not_used:
-	mov  [eax+0],esi
-
-	mov  ebx,1
-	shl  ebx,cl
-	dec  ebx
-
-
-
-
-
-	cmp  dword ptr [inflate_fast_use_mmx],2
-	jne  L_update_hold
-
-
-
-	psrlq mm0,mm1
-	movd ebp,mm0
-
-	emms
-
-L_update_hold:
-
-
-
-	and  ebp,ebx
-	mov  [edx+hold_state],ebp
-
-
-
-
-	mov  ebx, [esp+20]
-	cmp  ebx,esi
-	jbe  L_last_is_smaller
-
-	sub  ebx,esi
-	add  ebx,11
-	mov  [eax+4],ebx
-	jmp  L_fixup_out
-L_last_is_smaller:
-	sub  esi,ebx
-	neg  esi
-	add  esi,11
-	mov  [eax+4],esi
-
-
-
-
-L_fixup_out:
-
-	mov  ebx, [esp+16]
-	cmp  ebx,edi
-	jbe  L_end_is_smaller
-
-	sub  ebx,edi
-	add  ebx,257
-	mov  [eax+16],ebx
-	jmp  L_done
-L_end_is_smaller:
-	sub  edi,ebx
-	neg  edi
-	add  edi,257
-	mov  [eax+16],edi
-
-
-
-
-
-L_done:
-	add  esp,64
-	popfd
-	pop  ebx
-	pop  ebp
-	pop  esi
-	pop  edi
-	ret
-_inflate_fast endp
-
-_TEXT	ends
-end
diff --git a/libs/zlib/contrib/masmx86/match686.asm b/libs/zlib/contrib/masmx86/match686.asm
deleted file mode 100644
index 69e0eed01d..0000000000
--- a/libs/zlib/contrib/masmx86/match686.asm
+++ /dev/null
@@ -1,479 +0,0 @@
-; match686.asm -- Asm portion of the optimized longest_match for 32 bits x86
-; Copyright (C) 1995-1996 Jean-loup Gailly, Brian Raiter and Gilles Vollant.
-; File written by Gilles Vollant, by converting match686.S from Brian Raiter
-; for MASM. This is as assembly version of longest_match
-;  from Jean-loup Gailly in deflate.c
-;
-;         http://www.zlib.net
-;         http://www.winimage.com/zLibDll
-;         http://www.muppetlabs.com/~breadbox/software/assembly.html
-;
-; For Visual C++ 4.x and higher and ML 6.x and higher
-;   ml.exe is distributed in
-;  http://www.microsoft.com/downloads/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
-;
-; this file contain two implementation of longest_match
-;
-;  this longest_match was written by Brian raiter (1998), optimized for Pentium Pro
-;   (and the faster known version of match_init on modern Core 2 Duo and AMD Phenom)
-;
-;  for using an assembly version of longest_match, you need define ASMV in project
-;
-;    compile the asm file running
-;           ml /coff /Zi /c /Flmatch686.lst match686.asm
-;    and do not include match686.obj in your project
-;
-; note: contrib of zLib 1.2.3 and earlier contained both a deprecated version for
-;  Pentium (prior Pentium Pro) and this version for Pentium Pro and modern processor
-;  with autoselect (with cpu detection code)
-;  if you want support the old pentium optimization, you can still use these version
-;
-; this file is not optimized for old pentium, but it compatible with all x86 32 bits
-; processor (starting 80386)
-;
-;
-; see below : zlib1222add must be adjuster if you use a zlib version < 1.2.2.2
-
-;uInt longest_match(s, cur_match)
-;    deflate_state *s;
-;    IPos cur_match;                             /* current match */
-
-    NbStack         equ     76
-    cur_match       equ     dword ptr[esp+NbStack-0]
-    str_s           equ     dword ptr[esp+NbStack-4]
-; 5 dword on top (ret,ebp,esi,edi,ebx)
-    adrret          equ     dword ptr[esp+NbStack-8]
-    pushebp         equ     dword ptr[esp+NbStack-12]
-    pushedi         equ     dword ptr[esp+NbStack-16]
-    pushesi         equ     dword ptr[esp+NbStack-20]
-    pushebx         equ     dword ptr[esp+NbStack-24]
-
-    chain_length    equ     dword ptr [esp+NbStack-28]
-    limit           equ     dword ptr [esp+NbStack-32]
-    best_len        equ     dword ptr [esp+NbStack-36]
-    window          equ     dword ptr [esp+NbStack-40]
-    prev            equ     dword ptr [esp+NbStack-44]
-    scan_start      equ      word ptr [esp+NbStack-48]
-    wmask           equ     dword ptr [esp+NbStack-52]
-    match_start_ptr equ     dword ptr [esp+NbStack-56]
-    nice_match      equ     dword ptr [esp+NbStack-60]
-    scan            equ     dword ptr [esp+NbStack-64]
-
-    windowlen       equ     dword ptr [esp+NbStack-68]
-    match_start     equ     dword ptr [esp+NbStack-72]
-    strend          equ     dword ptr [esp+NbStack-76]
-    NbStackAdd      equ     (NbStack-24)
-
-    .386p
-
-    name    gvmatch
-    .MODEL  FLAT
-
-
-
-;  all the +zlib1222add offsets are due to the addition of fields
-;  in zlib in the deflate_state structure since the asm code was first written
-;  (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
-;  (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
-;  if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
-
-    zlib1222add         equ     8
-
-;  Note : these value are good with a 8 bytes boundary pack structure
-    dep_chain_length    equ     74h+zlib1222add
-    dep_window          equ     30h+zlib1222add
-    dep_strstart        equ     64h+zlib1222add
-    dep_prev_length     equ     70h+zlib1222add
-    dep_nice_match      equ     88h+zlib1222add
-    dep_w_size          equ     24h+zlib1222add
-    dep_prev            equ     38h+zlib1222add
-    dep_w_mask          equ     2ch+zlib1222add
-    dep_good_match      equ     84h+zlib1222add
-    dep_match_start     equ     68h+zlib1222add
-    dep_lookahead       equ     6ch+zlib1222add
-
-
-_TEXT                   segment
-
-IFDEF NOUNDERLINE
-            public  longest_match
-            public  match_init
-ELSE
-            public  _longest_match
-            public  _match_init
-ENDIF
-
-    MAX_MATCH           equ     258
-    MIN_MATCH           equ     3
-    MIN_LOOKAHEAD       equ     (MAX_MATCH+MIN_MATCH+1)
-
-
-
-MAX_MATCH       equ     258
-MIN_MATCH       equ     3
-MIN_LOOKAHEAD   equ     (MAX_MATCH + MIN_MATCH + 1)
-MAX_MATCH_8_     equ     ((MAX_MATCH + 7) AND 0FFF0h)
-
-
-;;; stack frame offsets
-
-chainlenwmask   equ  esp + 0    ; high word: current chain len
-                    ; low word: s->wmask
-window      equ  esp + 4    ; local copy of s->window
-windowbestlen   equ  esp + 8    ; s->window + bestlen
-scanstart   equ  esp + 16   ; first two bytes of string
-scanend     equ  esp + 12   ; last two bytes of string
-scanalign   equ  esp + 20   ; dword-misalignment of string
-nicematch   equ  esp + 24   ; a good enough match size
-bestlen     equ  esp + 28   ; size of best match so far
-scan        equ  esp + 32   ; ptr to string wanting match
-
-LocalVarsSize   equ 36
-;   saved ebx   byte esp + 36
-;   saved edi   byte esp + 40
-;   saved esi   byte esp + 44
-;   saved ebp   byte esp + 48
-;   return address  byte esp + 52
-deflatestate    equ  esp + 56   ; the function arguments
-curmatch    equ  esp + 60
-
-;;; Offsets for fields in the deflate_state structure. These numbers
-;;; are calculated from the definition of deflate_state, with the
-;;; assumption that the compiler will dword-align the fields. (Thus,
-;;; changing the definition of deflate_state could easily cause this
-;;; program to crash horribly, without so much as a warning at
-;;; compile time. Sigh.)
-
-dsWSize     equ 36+zlib1222add
-dsWMask     equ 44+zlib1222add
-dsWindow    equ 48+zlib1222add
-dsPrev      equ 56+zlib1222add
-dsMatchLen  equ 88+zlib1222add
-dsPrevMatch equ 92+zlib1222add
-dsStrStart  equ 100+zlib1222add
-dsMatchStart    equ 104+zlib1222add
-dsLookahead equ 108+zlib1222add
-dsPrevLen   equ 112+zlib1222add
-dsMaxChainLen   equ 116+zlib1222add
-dsGoodMatch equ 132+zlib1222add
-dsNiceMatch equ 136+zlib1222add
-
-
-;;; match686.asm -- Pentium-Pro-optimized version of longest_match()
-;;; Written for zlib 1.1.2
-;;; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com>
-;;; You can look at http://www.muppetlabs.com/~breadbox/software/assembly.html
-;;;
-;;
-;;  This software is provided 'as-is', without any express or implied
-;;  warranty.  In no event will the authors be held liable for any damages
-;;  arising from the use of this software.
-;;
-;;  Permission is granted to anyone to use this software for any purpose,
-;;  including commercial applications, and to alter it and redistribute it
-;;  freely, subject to the following restrictions:
-;;
-;;  1. The origin of this software must not be misrepresented; you must not
-;;     claim that you wrote the original software. If you use this software
-;;     in a product, an acknowledgment in the product documentation would be
-;;     appreciated but is not required.
-;;  2. Altered source versions must be plainly marked as such, and must not be
-;;     misrepresented as being the original software
-;;  3. This notice may not be removed or altered from any source distribution.
-;;
-
-;GLOBAL _longest_match, _match_init
-
-
-;SECTION    .text
-
-;;; uInt longest_match(deflate_state *deflatestate, IPos curmatch)
-
-;_longest_match:
-    IFDEF NOUNDERLINE
-    longest_match       proc near
-    ELSE
-    _longest_match      proc near
-    ENDIF
-.FPO (9, 4, 0, 0, 1, 0)
-
-;;; Save registers that the compiler may be using, and adjust esp to
-;;; make room for our stack frame.
-
-        push    ebp
-        push    edi
-        push    esi
-        push    ebx
-        sub esp, LocalVarsSize
-
-;;; Retrieve the function arguments. ecx will hold cur_match
-;;; throughout the entire function. edx will hold the pointer to the
-;;; deflate_state structure during the function's setup (before
-;;; entering the main loop.
-
-        mov edx, [deflatestate]
-        mov ecx, [curmatch]
-
-;;; uInt wmask = s->w_mask;
-;;; unsigned chain_length = s->max_chain_length;
-;;; if (s->prev_length >= s->good_match) {
-;;;     chain_length >>= 2;
-;;; }
-
-        mov eax, [edx + dsPrevLen]
-        mov ebx, [edx + dsGoodMatch]
-        cmp eax, ebx
-        mov eax, [edx + dsWMask]
-        mov ebx, [edx + dsMaxChainLen]
-        jl  LastMatchGood
-        shr ebx, 2
-LastMatchGood:
-
-;;; chainlen is decremented once beforehand so that the function can
-;;; use the sign flag instead of the zero flag for the exit test.
-;;; It is then shifted into the high word, to make room for the wmask
-;;; value, which it will always accompany.
-
-        dec ebx
-        shl ebx, 16
-        or  ebx, eax
-        mov [chainlenwmask], ebx
-
-;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
-
-        mov eax, [edx + dsNiceMatch]
-        mov ebx, [edx + dsLookahead]
-        cmp ebx, eax
-        jl  LookaheadLess
-        mov ebx, eax
-LookaheadLess:  mov [nicematch], ebx
-
-;;; register Bytef *scan = s->window + s->strstart;
-
-        mov esi, [edx + dsWindow]
-        mov [window], esi
-        mov ebp, [edx + dsStrStart]
-        lea edi, [esi + ebp]
-        mov [scan], edi
-
-;;; Determine how many bytes the scan ptr is off from being
-;;; dword-aligned.
-
-        mov eax, edi
-        neg eax
-        and eax, 3
-        mov [scanalign], eax
-
-;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
-;;;     s->strstart - (IPos)MAX_DIST(s) : NIL;
-
-        mov eax, [edx + dsWSize]
-        sub eax, MIN_LOOKAHEAD
-        sub ebp, eax
-        jg  LimitPositive
-        xor ebp, ebp
-LimitPositive:
-
-;;; int best_len = s->prev_length;
-
-        mov eax, [edx + dsPrevLen]
-        mov [bestlen], eax
-
-;;; Store the sum of s->window + best_len in esi locally, and in esi.
-
-        add esi, eax
-        mov [windowbestlen], esi
-
-;;; register ush scan_start = *(ushf*)scan;
-;;; register ush scan_end   = *(ushf*)(scan+best_len-1);
-;;; Posf *prev = s->prev;
-
-        movzx   ebx, word ptr [edi]
-        mov [scanstart], ebx
-        movzx   ebx, word ptr [edi + eax - 1]
-        mov [scanend], ebx
-        mov edi, [edx + dsPrev]
-
-;;; Jump into the main loop.
-
-        mov edx, [chainlenwmask]
-        jmp short LoopEntry
-
-align 4
-
-;;; do {
-;;;     match = s->window + cur_match;
-;;;     if (*(ushf*)(match+best_len-1) != scan_end ||
-;;;         *(ushf*)match != scan_start) continue;
-;;;     [...]
-;;; } while ((cur_match = prev[cur_match & wmask]) > limit
-;;;          && --chain_length != 0);
-;;;
-;;; Here is the inner loop of the function. The function will spend the
-;;; majority of its time in this loop, and majority of that time will
-;;; be spent in the first ten instructions.
-;;;
-;;; Within this loop:
-;;; ebx = scanend
-;;; ecx = curmatch
-;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
-;;; esi = windowbestlen - i.e., (window + bestlen)
-;;; edi = prev
-;;; ebp = limit
-
-LookupLoop:
-        and ecx, edx
-        movzx   ecx, word ptr [edi + ecx*2]
-        cmp ecx, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-LoopEntry:  movzx   eax, word ptr [esi + ecx - 1]
-        cmp eax, ebx
-        jnz LookupLoop
-        mov eax, [window]
-        movzx   eax, word ptr [eax + ecx]
-        cmp eax, [scanstart]
-        jnz LookupLoop
-
-;;; Store the current value of chainlen.
-
-        mov [chainlenwmask], edx
-
-;;; Point edi to the string under scrutiny, and esi to the string we
-;;; are hoping to match it up with. In actuality, esi and edi are
-;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is
-;;; initialized to -(MAX_MATCH_8 - scanalign).
-
-        mov esi, [window]
-        mov edi, [scan]
-        add esi, ecx
-        mov eax, [scanalign]
-        mov edx, 0fffffef8h; -(MAX_MATCH_8)
-        lea edi, [edi + eax + 0108h] ;MAX_MATCH_8]
-        lea esi, [esi + eax + 0108h] ;MAX_MATCH_8]
-
-;;; Test the strings for equality, 8 bytes at a time. At the end,
-;;; adjust edx so that it is offset to the exact byte that mismatched.
-;;;
-;;; We already know at this point that the first three bytes of the
-;;; strings match each other, and they can be safely passed over before
-;;; starting the compare loop. So what this code does is skip over 0-3
-;;; bytes, as much as necessary in order to dword-align the edi
-;;; pointer. (esi will still be misaligned three times out of four.)
-;;;
-;;; It should be confessed that this loop usually does not represent
-;;; much of the total running time. Replacing it with a more
-;;; straightforward "rep cmpsb" would not drastically degrade
-;;; performance.
-
-LoopCmps:
-        mov eax, [esi + edx]
-        xor eax, [edi + edx]
-        jnz LeaveLoopCmps
-        mov eax, [esi + edx + 4]
-        xor eax, [edi + edx + 4]
-        jnz LeaveLoopCmps4
-        add edx, 8
-        jnz LoopCmps
-        jmp short LenMaximum
-LeaveLoopCmps4: add edx, 4
-LeaveLoopCmps:  test    eax, 0000FFFFh
-        jnz LenLower
-        add edx,  2
-        shr eax, 16
-LenLower:   sub al, 1
-        adc edx, 0
-
-;;; Calculate the length of the match. If it is longer than MAX_MATCH,
-;;; then automatically accept it as the best possible match and leave.
-
-        lea eax, [edi + edx]
-        mov edi, [scan]
-        sub eax, edi
-        cmp eax, MAX_MATCH
-        jge LenMaximum
-
-;;; If the length of the match is not longer than the best match we
-;;; have so far, then forget it and return to the lookup loop.
-
-        mov edx, [deflatestate]
-        mov ebx, [bestlen]
-        cmp eax, ebx
-        jg  LongerMatch
-        mov esi, [windowbestlen]
-        mov edi, [edx + dsPrev]
-        mov ebx, [scanend]
-        mov edx, [chainlenwmask]
-        jmp LookupLoop
-
-;;;         s->match_start = cur_match;
-;;;         best_len = len;
-;;;         if (len >= nice_match) break;
-;;;         scan_end = *(ushf*)(scan+best_len-1);
-
-LongerMatch:    mov ebx, [nicematch]
-        mov [bestlen], eax
-        mov [edx + dsMatchStart], ecx
-        cmp eax, ebx
-        jge LeaveNow
-        mov esi, [window]
-        add esi, eax
-        mov [windowbestlen], esi
-        movzx   ebx, word ptr [edi + eax - 1]
-        mov edi, [edx + dsPrev]
-        mov [scanend], ebx
-        mov edx, [chainlenwmask]
-        jmp LookupLoop
-
-;;; Accept the current string, with the maximum possible length.
-
-LenMaximum: mov edx, [deflatestate]
-        mov dword ptr [bestlen], MAX_MATCH
-        mov [edx + dsMatchStart], ecx
-
-;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
-;;; return s->lookahead;
-
-LeaveNow:
-        mov edx, [deflatestate]
-        mov ebx, [bestlen]
-        mov eax, [edx + dsLookahead]
-        cmp ebx, eax
-        jg  LookaheadRet
-        mov eax, ebx
-LookaheadRet:
-
-;;; Restore the stack and return from whence we came.
-
-        add esp, LocalVarsSize
-        pop ebx
-        pop esi
-        pop edi
-        pop ebp
-
-        ret
-; please don't remove this string !
-; Your can freely use match686 in any free or commercial app if you don't remove the string in the binary!
-    db     0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998",0dh,0ah
-
-
-    IFDEF NOUNDERLINE
-    longest_match       endp
-    ELSE
-    _longest_match      endp
-    ENDIF
-
-    IFDEF NOUNDERLINE
-    match_init      proc near
-                    ret
-    match_init      endp
-    ELSE
-    _match_init     proc near
-                    ret
-    _match_init     endp
-    ENDIF
-
-
-_TEXT   ends
-end
diff --git a/libs/zlib/contrib/masmx86/readme.txt b/libs/zlib/contrib/masmx86/readme.txt
deleted file mode 100644
index 3f8888679f..0000000000
--- a/libs/zlib/contrib/masmx86/readme.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-
-Summary
--------
-This directory contains ASM implementations of the functions
-longest_match() and inflate_fast().
-
-
-Use instructions
-----------------
-Assemble using MASM, and copy the object files into the zlib source
-directory, then run the appropriate makefile, as suggested below.  You can
-donwload MASM from here:
-
-    http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
-
-You can also get objects files here:
-
-    http://www.winimage.com/zLibDll/zlib124_masm_obj.zip
-
-Build instructions
-------------------
-* With Microsoft C and MASM:
-nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj"
-
-* With Borland C and TASM:
-make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj"
-
diff --git a/libs/zlib/contrib/minizip/Makefile b/libs/zlib/contrib/minizip/Makefile
index 84eaad20d4..3d927ec149 100644
--- a/libs/zlib/contrib/minizip/Makefile
+++ b/libs/zlib/contrib/minizip/Makefile
@@ -1,5 +1,5 @@
-CC=cc
-CFLAGS=-O -I../..
+CC?=cc
+CFLAGS := $(CFLAGS) -O -I../..
 
 UNZ_OBJS = miniunz.o unzip.o ioapi.o ../../libz.a
 ZIP_OBJS = minizip.o zip.o   ioapi.o ../../libz.a
@@ -16,10 +16,14 @@ minizip:  $(ZIP_OBJS)
 	$(CC) $(CFLAGS) -o $@ $(ZIP_OBJS)
 
 test:	miniunz minizip
-	./minizip test readme.txt
+	@rm -f test.*
+	@echo hello hello hello > test.txt
+	./minizip test test.txt
 	./miniunz -l test.zip
-	mv readme.txt readme.old
+	@mv test.txt test.old
 	./miniunz test.zip
+	@cmp test.txt test.old
+	@rm -f test.*
 
 clean:
-	/bin/rm -f *.o *~ minizip miniunz
+	/bin/rm -f *.o *~ minizip miniunz test.*
diff --git a/libs/zlib/contrib/minizip/MiniZip64_Changes.txt b/libs/zlib/contrib/minizip/MiniZip64_Changes.txt
index 13a1bd91a9..3759468113 100644
--- a/libs/zlib/contrib/minizip/MiniZip64_Changes.txt
+++ b/libs/zlib/contrib/minizip/MiniZip64_Changes.txt
@@ -1,5 +1,5 @@
 
-MiniZip 1.1 was derrived from MiniZip at version 1.01f
+MiniZip 1.1 was derived from MiniZip at version 1.01f
 
 Change in 1.0 (Okt 2009)
  - **TODO - Add history**
diff --git a/libs/zlib/contrib/minizip/configure.ac b/libs/zlib/contrib/minizip/configure.ac
index 5b11970977..15ec917189 100644
--- a/libs/zlib/contrib/minizip/configure.ac
+++ b/libs/zlib/contrib/minizip/configure.ac
@@ -1,7 +1,7 @@
 #                                               -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 
-AC_INIT([minizip], [1.2.11], [bugzilla.redhat.com])
+AC_INIT([minizip], [1.3.1], [bugzilla.redhat.com])
 AC_CONFIG_SRCDIR([minizip.c])
 AM_INIT_AUTOMAKE([foreign])
 LT_INIT
diff --git a/libs/zlib/contrib/minizip/crypt.h b/libs/zlib/contrib/minizip/crypt.h
index 1e9e8200b2..f4b93b78dc 100644
--- a/libs/zlib/contrib/minizip/crypt.h
+++ b/libs/zlib/contrib/minizip/crypt.h
@@ -32,12 +32,12 @@
 /***********************************************************************
  * Return the next byte in the pseudo-random sequence
  */
-static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
-{
+static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab) {
     unsigned temp;  /* POTENTIAL BUG:  temp*(temp^1) may overflow in an
                      * unpredictable manner on 16-bit systems; not a problem
                      * with any known compiler so far, though */
 
+    (void)pcrc_32_tab;
     temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2;
     return (int)(((temp * (temp ^ 1)) >> 8) & 0xff);
 }
@@ -45,8 +45,7 @@ static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
 /***********************************************************************
  * Update the encryption keys with the next byte of plain text
  */
-static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
-{
+static int update_keys(unsigned long* pkeys, const z_crc_t* pcrc_32_tab, int c) {
     (*(pkeys+0)) = CRC32((*(pkeys+0)), c);
     (*(pkeys+1)) += (*(pkeys+0)) & 0xff;
     (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1;
@@ -62,8 +61,7 @@ static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
  * Initialize the encryption keys and the random header according to
  * the given password.
  */
-static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcrc_32_tab)
-{
+static void init_keys(const char* passwd, unsigned long* pkeys, const z_crc_t* pcrc_32_tab) {
     *(pkeys+0) = 305419896L;
     *(pkeys+1) = 591751049L;
     *(pkeys+2) = 878082192L;
@@ -77,24 +75,23 @@ static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcr
     (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab)))
 
 #define zencode(pkeys,pcrc_32_tab,c,t) \
-    (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c))
+    (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), (Byte)t^(c))
 
 #ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED
 
 #define RAND_HEAD_LEN  12
    /* "last resort" source for second part of crypt seed pattern */
 #  ifndef ZCR_SEED2
-#    define ZCR_SEED2 3141592654UL     /* use PI as default pattern */
+#    define ZCR_SEED2 3141592654UL      /* use PI as default pattern */
 #  endif
 
-static int crypthead(const char* passwd,      /* password string */
-                     unsigned char* buf,      /* where to write header */
-                     int bufSize,
-                     unsigned long* pkeys,
-                     const z_crc_t* pcrc_32_tab,
-                     unsigned long crcForCrypting)
-{
-    int n;                       /* index in random header */
+static unsigned crypthead(const char* passwd,       /* password string */
+                          unsigned char* buf,       /* where to write header */
+                          int bufSize,
+                          unsigned long* pkeys,
+                          const z_crc_t* pcrc_32_tab,
+                          unsigned long crcForCrypting) {
+    unsigned n;                  /* index in random header */
     int t;                       /* temporary */
     int c;                       /* random byte */
     unsigned char header[RAND_HEAD_LEN-2]; /* random header */
diff --git a/libs/zlib/contrib/minizip/ioapi.c b/libs/zlib/contrib/minizip/ioapi.c
index 7f5c191b2a..782d32469a 100644
--- a/libs/zlib/contrib/minizip/ioapi.c
+++ b/libs/zlib/contrib/minizip/ioapi.c
@@ -14,7 +14,7 @@
         #define _CRT_SECURE_NO_WARNINGS
 #endif
 
-#if defined(__APPLE__) || defined(IOAPI_NO_64)
+#if defined(__APPLE__) || defined(IOAPI_NO_64) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64)
 // In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
 #define FOPEN_FUNC(filename, mode) fopen(filename, mode)
 #define FTELLO_FUNC(stream) ftello(stream)
@@ -28,8 +28,7 @@
 
 #include "ioapi.h"
 
-voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
-{
+voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc, const void*filename, int mode) {
     if (pfilefunc->zfile_func64.zopen64_file != NULL)
         return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode);
     else
@@ -38,8 +37,7 @@ voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename
     }
 }
 
-long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)
-{
+long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin) {
     if (pfilefunc->zfile_func64.zseek64_file != NULL)
         return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin);
     else
@@ -52,13 +50,12 @@ long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZP
     }
 }
 
-ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)
-{
+ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc, voidpf filestream) {
     if (pfilefunc->zfile_func64.zseek64_file != NULL)
         return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream);
     else
     {
-        uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
+        uLong tell_uLong = (uLong)(*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
         if ((tell_uLong) == MAXU32)
             return (ZPOS64_T)-1;
         else
@@ -66,11 +63,9 @@ ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream
     }
 }
 
-void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32)
-{
+void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32, const zlib_filefunc_def* p_filefunc32) {
     p_filefunc64_32->zfile_func64.zopen64_file = NULL;
     p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file;
-    p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
     p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file;
     p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file;
     p_filefunc64_32->zfile_func64.ztell64_file = NULL;
@@ -84,18 +79,10 @@ void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filef
 
 
 
-static voidpf  ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
-static uLong   ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
-static uLong   ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size));
-static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream));
-static long    ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
-static int     ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream));
-static int     ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream));
-
-static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode)
-{
+static voidpf ZCALLBACK fopen_file_func(voidpf opaque, const char* filename, int mode) {
     FILE* file = NULL;
     const char* mode_fopen = NULL;
+    (void)opaque;
     if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
         mode_fopen = "rb";
     else
@@ -110,10 +97,10 @@ static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, in
     return file;
 }
 
-static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode)
-{
+static voidpf ZCALLBACK fopen64_file_func(voidpf opaque, const void* filename, int mode) {
     FILE* file = NULL;
     const char* mode_fopen = NULL;
+    (void)opaque;
     if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
         mode_fopen = "rb";
     else
@@ -129,39 +116,39 @@ static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename,
 }
 
 
-static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
-{
+static uLong ZCALLBACK fread_file_func(voidpf opaque, voidpf stream, void* buf, uLong size) {
     uLong ret;
+    (void)opaque;
     ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
     return ret;
 }
 
-static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size)
-{
+static uLong ZCALLBACK fwrite_file_func(voidpf opaque, voidpf stream, const void* buf, uLong size) {
     uLong ret;
+    (void)opaque;
     ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
     return ret;
 }
 
-static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
-{
+static long ZCALLBACK ftell_file_func(voidpf opaque, voidpf stream) {
     long ret;
+    (void)opaque;
     ret = ftell((FILE *)stream);
     return ret;
 }
 
 
-static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
-{
+static ZPOS64_T ZCALLBACK ftell64_file_func(voidpf opaque, voidpf stream) {
     ZPOS64_T ret;
-    ret = FTELLO_FUNC((FILE *)stream);
+    (void)opaque;
+    ret = (ZPOS64_T)FTELLO_FUNC((FILE *)stream);
     return ret;
 }
 
-static long ZCALLBACK fseek_file_func (voidpf  opaque, voidpf stream, uLong offset, int origin)
-{
+static long ZCALLBACK fseek_file_func(voidpf opaque, voidpf stream, uLong offset, int origin) {
     int fseek_origin=0;
     long ret;
+    (void)opaque;
     switch (origin)
     {
     case ZLIB_FILEFUNC_SEEK_CUR :
@@ -176,15 +163,15 @@ static long ZCALLBACK fseek_file_func (voidpf  opaque, voidpf stream, uLong offs
     default: return -1;
     }
     ret = 0;
-    if (fseek((FILE *)stream, offset, fseek_origin) != 0)
+    if (fseek((FILE *)stream, (long)offset, fseek_origin) != 0)
         ret = -1;
     return ret;
 }
 
-static long ZCALLBACK fseek64_file_func (voidpf  opaque, voidpf stream, ZPOS64_T offset, int origin)
-{
+static long ZCALLBACK fseek64_file_func(voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) {
     int fseek_origin=0;
     long ret;
+    (void)opaque;
     switch (origin)
     {
     case ZLIB_FILEFUNC_SEEK_CUR :
@@ -200,30 +187,28 @@ static long ZCALLBACK fseek64_file_func (voidpf  opaque, voidpf stream, ZPOS64_T
     }
     ret = 0;
 
-    if(FSEEKO_FUNC((FILE *)stream, offset, fseek_origin) != 0)
+    if(FSEEKO_FUNC((FILE *)stream, (z_off64_t)offset, fseek_origin) != 0)
                         ret = -1;
 
     return ret;
 }
 
 
-static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
-{
+static int ZCALLBACK fclose_file_func(voidpf opaque, voidpf stream) {
     int ret;
+    (void)opaque;
     ret = fclose((FILE *)stream);
     return ret;
 }
 
-static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream)
-{
+static int ZCALLBACK ferror_file_func(voidpf opaque, voidpf stream) {
     int ret;
+    (void)opaque;
     ret = ferror((FILE *)stream);
     return ret;
 }
 
-void fill_fopen_filefunc (pzlib_filefunc_def)
-  zlib_filefunc_def* pzlib_filefunc_def;
-{
+void fill_fopen_filefunc(zlib_filefunc_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen_file = fopen_file_func;
     pzlib_filefunc_def->zread_file = fread_file_func;
     pzlib_filefunc_def->zwrite_file = fwrite_file_func;
@@ -234,8 +219,7 @@ void fill_fopen_filefunc (pzlib_filefunc_def)
     pzlib_filefunc_def->opaque = NULL;
 }
 
-void fill_fopen64_filefunc (zlib_filefunc64_def*  pzlib_filefunc_def)
-{
+void fill_fopen64_filefunc(zlib_filefunc64_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen64_file = fopen64_file_func;
     pzlib_filefunc_def->zread_file = fread_file_func;
     pzlib_filefunc_def->zwrite_file = fwrite_file_func;
diff --git a/libs/zlib/contrib/minizip/ioapi.h b/libs/zlib/contrib/minizip/ioapi.h
index 8dcbdb06e3..a2d2e6e60d 100644
--- a/libs/zlib/contrib/minizip/ioapi.h
+++ b/libs/zlib/contrib/minizip/ioapi.h
@@ -50,7 +50,7 @@
 #define ftello64 ftell
 #define fseeko64 fseek
 #else
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64)
 #define fopen64 fopen
 #define ftello64 ftello
 #define fseeko64 fseeko
@@ -82,7 +82,7 @@
 #include "mz64conf.h"
 #endif
 
-/* a type choosen by DEFINE */
+/* a type chosen by DEFINE */
 #ifdef HAVE_64BIT_INT_CUSTOM
 typedef  64BIT_INT_CUSTOM_TYPE ZPOS64_T;
 #else
@@ -91,8 +91,7 @@ typedef  64BIT_INT_CUSTOM_TYPE ZPOS64_T;
 typedef uint64_t ZPOS64_T;
 #else
 
-/* Maximum unsigned 32-bit value used as placeholder for zip64 */
-#define MAXU32 0xffffffff
+
 
 #if defined(_MSC_VER) || defined(__BORLANDC__)
 typedef unsigned __int64 ZPOS64_T;
@@ -102,7 +101,10 @@ typedef unsigned long long int ZPOS64_T;
 #endif
 #endif
 
-
+/* Maximum unsigned 32-bit value used as placeholder for zip64 */
+#ifndef MAXU32
+#define MAXU32 (0xffffffff)
+#endif
 
 #ifdef __cplusplus
 extern "C" {
@@ -132,17 +134,17 @@ extern "C" {
 
 
 
-typedef voidpf   (ZCALLBACK *open_file_func)      OF((voidpf opaque, const char* filename, int mode));
-typedef uLong    (ZCALLBACK *read_file_func)      OF((voidpf opaque, voidpf stream, void* buf, uLong size));
-typedef uLong    (ZCALLBACK *write_file_func)     OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
-typedef int      (ZCALLBACK *close_file_func)     OF((voidpf opaque, voidpf stream));
-typedef int      (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream));
+typedef voidpf   (ZCALLBACK *open_file_func)      (voidpf opaque, const char* filename, int mode);
+typedef uLong    (ZCALLBACK *read_file_func)      (voidpf opaque, voidpf stream, void* buf, uLong size);
+typedef uLong    (ZCALLBACK *write_file_func)     (voidpf opaque, voidpf stream, const void* buf, uLong size);
+typedef int      (ZCALLBACK *close_file_func)     (voidpf opaque, voidpf stream);
+typedef int      (ZCALLBACK *testerror_file_func) (voidpf opaque, voidpf stream);
 
-typedef long     (ZCALLBACK *tell_file_func)      OF((voidpf opaque, voidpf stream));
-typedef long     (ZCALLBACK *seek_file_func)      OF((voidpf opaque, voidpf stream, uLong offset, int origin));
+typedef long     (ZCALLBACK *tell_file_func)      (voidpf opaque, voidpf stream);
+typedef long     (ZCALLBACK *seek_file_func)      (voidpf opaque, voidpf stream, uLong offset, int origin);
 
 
-/* here is the "old" 32 bits structure structure */
+/* here is the "old" 32 bits structure */
 typedef struct zlib_filefunc_def_s
 {
     open_file_func      zopen_file;
@@ -155,9 +157,9 @@ typedef struct zlib_filefunc_def_s
     voidpf              opaque;
 } zlib_filefunc_def;
 
-typedef ZPOS64_T (ZCALLBACK *tell64_file_func)    OF((voidpf opaque, voidpf stream));
-typedef long     (ZCALLBACK *seek64_file_func)    OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
-typedef voidpf   (ZCALLBACK *open64_file_func)    OF((voidpf opaque, const void* filename, int mode));
+typedef ZPOS64_T (ZCALLBACK *tell64_file_func)    (voidpf opaque, voidpf stream);
+typedef long     (ZCALLBACK *seek64_file_func)    (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin);
+typedef voidpf   (ZCALLBACK *open64_file_func)    (voidpf opaque, const void* filename, int mode);
 
 typedef struct zlib_filefunc64_def_s
 {
@@ -171,8 +173,8 @@ typedef struct zlib_filefunc64_def_s
     voidpf              opaque;
 } zlib_filefunc64_def;
 
-void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def));
-void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
+void fill_fopen64_filefunc(zlib_filefunc64_def* pzlib_filefunc_def);
+void fill_fopen_filefunc(zlib_filefunc_def* pzlib_filefunc_def);
 
 /* now internal definition, only for zip.c and unzip.h */
 typedef struct zlib_filefunc64_32_def_s
@@ -191,11 +193,11 @@ typedef struct zlib_filefunc64_32_def_s
 #define ZCLOSE64(filefunc,filestream)             ((*((filefunc).zfile_func64.zclose_file))  ((filefunc).zfile_func64.opaque,filestream))
 #define ZERROR64(filefunc,filestream)             ((*((filefunc).zfile_func64.zerror_file))  ((filefunc).zfile_func64.opaque,filestream))
 
-voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode));
-long    call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin));
-ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream));
+voidpf call_zopen64(const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode);
+long call_zseek64(const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin);
+ZPOS64_T call_ztell64(const zlib_filefunc64_32_def* pfilefunc,voidpf filestream);
 
-void    fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32);
+void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32);
 
 #define ZOPEN64(filefunc,filename,mode)         (call_zopen64((&(filefunc)),(filename),(mode)))
 #define ZTELL64(filefunc,filestream)            (call_ztell64((&(filefunc)),(filestream)))
diff --git a/libs/zlib/contrib/minizip/iowin32.c b/libs/zlib/contrib/minizip/iowin32.c
index 274f39eb1d..08536e94b8 100644
--- a/libs/zlib/contrib/minizip/iowin32.c
+++ b/libs/zlib/contrib/minizip/iowin32.c
@@ -28,19 +28,16 @@
 
 // see Include/shared/winapifamily.h in the Windows Kit
 #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API)))
+
+#if !defined(WINAPI_FAMILY_ONE_PARTITION)
+#define WINAPI_FAMILY_ONE_PARTITION(PartitionSet, Partition) ((WINAPI_FAMILY & PartitionSet) == Partition)
+#endif
+
 #if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP)
 #define IOWIN32_USING_WINRT_API 1
 #endif
 #endif
 
-voidpf  ZCALLBACK win32_open_file_func  OF((voidpf opaque, const char* filename, int mode));
-uLong   ZCALLBACK win32_read_file_func  OF((voidpf opaque, voidpf stream, void* buf, uLong size));
-uLong   ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
-ZPOS64_T ZCALLBACK win32_tell64_file_func  OF((voidpf opaque, voidpf stream));
-long    ZCALLBACK win32_seek64_file_func  OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
-int     ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream));
-int     ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream));
-
 typedef struct
 {
     HANDLE hf;
@@ -52,8 +49,7 @@ static void win32_translate_open_mode(int mode,
                                       DWORD* lpdwDesiredAccess,
                                       DWORD* lpdwCreationDisposition,
                                       DWORD* lpdwShareMode,
-                                      DWORD* lpdwFlagsAndAttributes)
-{
+                                      DWORD* lpdwFlagsAndAttributes) {
     *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0;
 
     if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
@@ -74,8 +70,7 @@ static void win32_translate_open_mode(int mode,
     }
 }
 
-static voidpf win32_build_iowin(HANDLE hFile)
-{
+static voidpf win32_build_iowin(HANDLE hFile) {
     voidpf ret=NULL;
 
     if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE))
@@ -93,8 +88,7 @@ static voidpf win32_build_iowin(HANDLE hFile)
     return ret;
 }
 
-voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int mode)
-{
+voidpf ZCALLBACK win32_open64_file_func(voidpf opaque, const void* filename, int mode) {
     const char* mode_fopen = NULL;
     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
     HANDLE hFile = NULL;
@@ -122,8 +116,7 @@ voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int
 }
 
 
-voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int mode)
-{
+voidpf ZCALLBACK win32_open64_file_funcA(voidpf opaque, const void* filename, int mode) {
     const char* mode_fopen = NULL;
     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
     HANDLE hFile = NULL;
@@ -146,8 +139,7 @@ voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int
 }
 
 
-voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int mode)
-{
+voidpf ZCALLBACK win32_open64_file_funcW(voidpf opaque, const void* filename, int mode) {
     const char* mode_fopen = NULL;
     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
     HANDLE hFile = NULL;
@@ -166,8 +158,7 @@ voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int
 }
 
 
-voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mode)
-{
+voidpf ZCALLBACK win32_open_file_func(voidpf opaque, const char* filename, int mode) {
     const char* mode_fopen = NULL;
     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
     HANDLE hFile = NULL;
@@ -195,8 +186,7 @@ voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mo
 }
 
 
-uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uLong size)
-{
+uLong ZCALLBACK win32_read_file_func(voidpf opaque, voidpf stream, void* buf,uLong size) {
     uLong ret=0;
     HANDLE hFile = NULL;
     if (stream!=NULL)
@@ -217,8 +207,7 @@ uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uL
 }
 
 
-uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* buf,uLong size)
-{
+uLong ZCALLBACK win32_write_file_func(voidpf opaque, voidpf stream, const void* buf, uLong size) {
     uLong ret=0;
     HANDLE hFile = NULL;
     if (stream!=NULL)
@@ -238,8 +227,7 @@ uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* b
     return ret;
 }
 
-static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos,  DWORD dwMoveMethod)
-{
+static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod) {
 #ifdef IOWIN32_USING_WINRT_API
     return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod);
 #else
@@ -258,8 +246,7 @@ static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *n
 #endif
 }
 
-long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
-{
+long ZCALLBACK win32_tell_file_func(voidpf opaque, voidpf stream) {
     long ret=-1;
     HANDLE hFile = NULL;
     if (stream!=NULL)
@@ -281,8 +268,7 @@ long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
     return ret;
 }
 
-ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream)
-{
+ZPOS64_T ZCALLBACK win32_tell64_file_func(voidpf opaque, voidpf stream) {
     ZPOS64_T ret= (ZPOS64_T)-1;
     HANDLE hFile = NULL;
     if (stream!=NULL)
@@ -306,8 +292,7 @@ ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream)
 }
 
 
-long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,int origin)
-{
+long ZCALLBACK win32_seek_file_func(voidpf opaque, voidpf stream, uLong offset, int origin) {
     DWORD dwMoveMethod=0xFFFFFFFF;
     HANDLE hFile = NULL;
 
@@ -344,8 +329,7 @@ long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,in
     return ret;
 }
 
-long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T offset,int origin)
-{
+long ZCALLBACK win32_seek64_file_func(voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) {
     DWORD dwMoveMethod=0xFFFFFFFF;
     HANDLE hFile = NULL;
     long ret=-1;
@@ -383,8 +367,7 @@ long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T off
     return ret;
 }
 
-int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream)
-{
+int ZCALLBACK win32_close_file_func(voidpf opaque, voidpf stream) {
     int ret=-1;
 
     if (stream!=NULL)
@@ -401,8 +384,7 @@ int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream)
     return ret;
 }
 
-int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream)
-{
+int ZCALLBACK win32_error_file_func(voidpf opaque, voidpf stream) {
     int ret=-1;
     if (stream!=NULL)
     {
@@ -411,8 +393,7 @@ int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream)
     return ret;
 }
 
-void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def)
-{
+void fill_win32_filefunc(zlib_filefunc_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen_file = win32_open_file_func;
     pzlib_filefunc_def->zread_file = win32_read_file_func;
     pzlib_filefunc_def->zwrite_file = win32_write_file_func;
@@ -423,8 +404,7 @@ void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def)
     pzlib_filefunc_def->opaque = NULL;
 }
 
-void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def)
-{
+void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen64_file = win32_open64_file_func;
     pzlib_filefunc_def->zread_file = win32_read_file_func;
     pzlib_filefunc_def->zwrite_file = win32_write_file_func;
@@ -436,8 +416,7 @@ void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def)
 }
 
 
-void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def)
-{
+void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen64_file = win32_open64_file_funcA;
     pzlib_filefunc_def->zread_file = win32_read_file_func;
     pzlib_filefunc_def->zwrite_file = win32_write_file_func;
@@ -449,8 +428,7 @@ void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def)
 }
 
 
-void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def)
-{
+void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW;
     pzlib_filefunc_def->zread_file = win32_read_file_func;
     pzlib_filefunc_def->zwrite_file = win32_write_file_func;
diff --git a/libs/zlib/contrib/minizip/iowin32.h b/libs/zlib/contrib/minizip/iowin32.h
index 0ca0969a7d..a23a65d433 100644
--- a/libs/zlib/contrib/minizip/iowin32.h
+++ b/libs/zlib/contrib/minizip/iowin32.h
@@ -18,10 +18,10 @@
 extern "C" {
 #endif
 
-void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
-void fill_win32_filefunc64 OF((zlib_filefunc64_def* pzlib_filefunc_def));
-void fill_win32_filefunc64A OF((zlib_filefunc64_def* pzlib_filefunc_def));
-void fill_win32_filefunc64W OF((zlib_filefunc64_def* pzlib_filefunc_def));
+void fill_win32_filefunc(zlib_filefunc_def* pzlib_filefunc_def);
+void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def);
+void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def);
+void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def);
 
 #ifdef __cplusplus
 }
diff --git a/libs/zlib/contrib/minizip/miniunz.c b/libs/zlib/contrib/minizip/miniunz.c
index 3d65401be5..d627c4226b 100644
--- a/libs/zlib/contrib/minizip/miniunz.c
+++ b/libs/zlib/contrib/minizip/miniunz.c
@@ -27,7 +27,7 @@
         #endif
 #endif
 
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64)
 // In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
 #define FOPEN_FUNC(filename, mode) fopen(filename, mode)
 #define FTELLO_FUNC(stream) ftello(stream)
@@ -45,6 +45,7 @@
 #include <time.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <sys/stat.h>
 
 #ifdef _WIN32
 # include <direct.h>
@@ -78,13 +79,9 @@
 
 /* change_file_date : change the date/time of a file
     filename : the filename of the file where date/time must be modified
-    dosdate : the new date at the MSDos format (4 bytes)
+    dosdate : the new date at the MSDOS format (4 bytes)
     tmu_date : the SAME new date at the tm_unz format */
-void change_file_date(filename,dosdate,tmu_date)
-    const char *filename;
-    uLong dosdate;
-    tm_unz tmu_date;
-{
+static void change_file_date(const char *filename, uLong dosdate, tm_unz tmu_date) {
 #ifdef _WIN32
   HANDLE hFile;
   FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite;
@@ -97,7 +94,8 @@ void change_file_date(filename,dosdate,tmu_date)
   SetFileTime(hFile,&ftm,&ftLastAcc,&ftm);
   CloseHandle(hFile);
 #else
-#ifdef unix || __APPLE__
+#if defined(unix) || defined(__APPLE__)
+  (void)dosdate;
   struct utimbuf ut;
   struct tm newdate;
   newdate.tm_sec = tmu_date.tm_sec;
@@ -113,6 +111,10 @@ void change_file_date(filename,dosdate,tmu_date)
 
   ut.actime=ut.modtime=mktime(&newdate);
   utime(filename,&ut);
+#else
+  (void)filename;
+  (void)dosdate;
+  (void)tmu_date;
 #endif
 #endif
 }
@@ -121,9 +123,7 @@ void change_file_date(filename,dosdate,tmu_date)
 /* mymkdir and change_file_date are not 100 % portable
    As I don't know well Unix, I wait feedback for the unix portion */
 
-int mymkdir(dirname)
-    const char* dirname;
-{
+static int mymkdir(const char* dirname) {
     int ret=0;
 #ifdef _WIN32
     ret = _mkdir(dirname);
@@ -131,18 +131,18 @@ int mymkdir(dirname)
     ret = mkdir (dirname,0775);
 #elif __APPLE__
     ret = mkdir (dirname,0775);
+#else
+    (void)dirname;
 #endif
     return ret;
 }
 
-int makedir (newdir)
-    char *newdir;
-{
+static int makedir(const char *newdir) {
   char *buffer ;
   char *p;
-  int  len = (int)strlen(newdir);
+  size_t len = strlen(newdir);
 
-  if (len <= 0)
+  if (len == 0)
     return 0;
 
   buffer = (char*)malloc(len+1);
@@ -185,14 +185,12 @@ int makedir (newdir)
   return 1;
 }
 
-void do_banner()
-{
-    printf("MiniUnz 1.01b, demo of zLib + Unz package written by Gilles Vollant\n");
+static void do_banner(void) {
+    printf("MiniUnz 1.1, demo of zLib + Unz package written by Gilles Vollant\n");
     printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n");
 }
 
-void do_help()
-{
+static void do_help(void) {
     printf("Usage : miniunz [-e] [-x] [-v] [-l] [-o] [-p password] file.zip [file_to_extr.] [-d extractdir]\n\n" \
            "  -e  Extract without pathname (junk paths)\n" \
            "  -x  Extract with pathname\n" \
@@ -200,11 +198,10 @@ void do_help()
            "  -l  list files\n" \
            "  -d  directory to extract into\n" \
            "  -o  overwrite files without prompting\n" \
-           "  -p  extract crypted file using password\n\n");
+           "  -p  extract encrypted file using password\n\n");
 }
 
-void Display64BitsSize(ZPOS64_T n, int size_char)
-{
+static void Display64BitsSize(ZPOS64_T n, int size_char) {
   /* to avoid compatibility problem , we do here the conversion */
   char number[21];
   int offset=19;
@@ -231,9 +228,7 @@ void Display64BitsSize(ZPOS64_T n, int size_char)
   printf("%s",&number[pos_string]);
 }
 
-int do_list(uf)
-    unzFile uf;
-{
+static int do_list(unzFile uf) {
     uLong i;
     unz_global_info64 gi;
     int err;
@@ -248,7 +243,7 @@ int do_list(uf)
         char filename_inzip[256];
         unz_file_info64 file_info;
         uLong ratio=0;
-        const char *string_method;
+        const char *string_method = "";
         char charCrypt=' ';
         err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0);
         if (err!=UNZ_OK)
@@ -259,7 +254,7 @@ int do_list(uf)
         if (file_info.uncompressed_size>0)
             ratio = (uLong)((file_info.compressed_size*100)/file_info.uncompressed_size);
 
-        /* display a '*' if the file is crypted */
+        /* display a '*' if the file is encrypted */
         if ((file_info.flag & 1) != 0)
             charCrypt='*';
 
@@ -309,12 +304,7 @@ int do_list(uf)
 }
 
 
-int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
-    unzFile uf;
-    const int* popt_extract_without_path;
-    int* popt_overwrite;
-    const char* password;
-{
+static int do_extract_currentfile(unzFile uf, const int* popt_extract_without_path, int* popt_overwrite, const char* password) {
     char filename_inzip[256];
     char* filename_withoutpath;
     char* p;
@@ -324,7 +314,6 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
     uInt size_buf;
 
     unz_file_info64 file_info;
-    uLong ratio=0;
     err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0);
 
     if (err!=UNZ_OK)
@@ -367,6 +356,20 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
         else
             write_filename = filename_withoutpath;
 
+        if (write_filename[0]!='\0')
+        {
+            const char* relative_check = write_filename;
+            while (relative_check[1]!='\0')
+            {
+                if (relative_check[0]=='.' && relative_check[1]=='.')
+                    write_filename = relative_check;
+                relative_check++;
+            }
+        }
+
+        while (write_filename[0]=='/' || write_filename[0]=='.')
+            write_filename++;
+
         err = unzOpenCurrentFilePassword(uf,password);
         if (err!=UNZ_OK)
         {
@@ -439,7 +442,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
                     break;
                 }
                 if (err>0)
-                    if (fwrite(buf,err,1,fout)!=1)
+                    if (fwrite(buf,(unsigned)err,1,fout)!=1)
                     {
                         printf("error in writing extracted file\n");
                         err=UNZ_ERRNO;
@@ -472,16 +475,10 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
 }
 
 
-int do_extract(uf,opt_extract_without_path,opt_overwrite,password)
-    unzFile uf;
-    int opt_extract_without_path;
-    int opt_overwrite;
-    const char* password;
-{
+static int do_extract(unzFile uf, int opt_extract_without_path, int opt_overwrite, const char* password) {
     uLong i;
     unz_global_info64 gi;
     int err;
-    FILE* fout=NULL;
 
     err = unzGetGlobalInfo64(uf,&gi);
     if (err!=UNZ_OK)
@@ -508,14 +505,7 @@ int do_extract(uf,opt_extract_without_path,opt_overwrite,password)
     return 0;
 }
 
-int do_extract_onefile(uf,filename,opt_extract_without_path,opt_overwrite,password)
-    unzFile uf;
-    const char* filename;
-    int opt_extract_without_path;
-    int opt_overwrite;
-    const char* password;
-{
-    int err = UNZ_OK;
+static int do_extract_onefile(unzFile uf, const char* filename, int opt_extract_without_path, int opt_overwrite, const char* password) {
     if (unzLocateFile(uf,filename,CASESENSITIVITY)!=UNZ_OK)
     {
         printf("file %s not found in the zipfile\n",filename);
@@ -531,10 +521,7 @@ int do_extract_onefile(uf,filename,opt_extract_without_path,opt_overwrite,passwo
 }
 
 
-int main(argc,argv)
-    int argc;
-    char *argv[];
-{
+int main(int argc, char *argv[]) {
     const char *zipfilename=NULL;
     const char *filename_to_extract=NULL;
     const char *password=NULL;
@@ -565,7 +552,7 @@ int main(argc,argv)
 
                 while ((*p)!='\0')
                 {
-                    char c=*(p++);;
+                    char c=*(p++);
                     if ((c=='l') || (c=='L'))
                         opt_do_list = 1;
                     if ((c=='v') || (c=='V'))
@@ -607,7 +594,7 @@ int main(argc,argv)
 #        endif
 
         strncpy(filename_try, zipfilename,MAXFILENAME-1);
-        /* strncpy doesnt append the trailing NULL, of the string is too long. */
+        /* strncpy doesn't append the trailing NULL, of the string is too long. */
         filename_try[ MAXFILENAME ] = '\0';
 
 #        ifdef USEWIN32IOAPI
diff --git a/libs/zlib/contrib/minizip/minizip.c b/libs/zlib/contrib/minizip/minizip.c
index 4288962ece..26ee8d029e 100644
--- a/libs/zlib/contrib/minizip/minizip.c
+++ b/libs/zlib/contrib/minizip/minizip.c
@@ -28,7 +28,7 @@
         #endif
 #endif
 
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64)
 // In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
 #define FOPEN_FUNC(filename, mode) fopen(filename, mode)
 #define FTELLO_FUNC(stream) ftello(stream)
@@ -71,11 +71,9 @@
 #define MAXFILENAME (256)
 
 #ifdef _WIN32
-uLong filetime(f, tmzip, dt)
-    char *f;                /* name of file to get info on */
-    tm_zip *tmzip;             /* return value: access, modific. and creation times */
-    uLong *dt;             /* dostime */
-{
+/* f: name of file to get info on, tmzip: return value: access,
+   modification and creation times, dt: dostime */
+static int filetime(const char *f, tm_zip *tmzip, uLong *dt) {
   int ret = 0;
   {
       FILETIME ftLocal;
@@ -94,12 +92,11 @@ uLong filetime(f, tmzip, dt)
   return ret;
 }
 #else
-#ifdef unix || __APPLE__
-uLong filetime(f, tmzip, dt)
-    char *f;               /* name of file to get info on */
-    tm_zip *tmzip;         /* return value: access, modific. and creation times */
-    uLong *dt;             /* dostime */
-{
+#if defined(unix) || defined(__APPLE__)
+/* f: name of file to get info on, tmzip: return value: access,
+   modification and creation times, dt: dostime */
+static int filetime(const char *f, tm_zip *tmzip, uLong *dt) {
+  (void)dt;
   int ret=0;
   struct stat s;        /* results of stat() */
   struct tm* filedate;
@@ -108,12 +105,12 @@ uLong filetime(f, tmzip, dt)
   if (strcmp(f,"-")!=0)
   {
     char name[MAXFILENAME+1];
-    int len = strlen(f);
+    size_t len = strlen(f);
     if (len > MAXFILENAME)
       len = MAXFILENAME;
 
     strncpy(name, f,MAXFILENAME-1);
-    /* strncpy doesnt append the trailing NULL, of the string is too long. */
+    /* strncpy doesn't append the trailing NULL, of the string is too long. */
     name[ MAXFILENAME ] = '\0';
 
     if (name[len - 1] == '/')
@@ -137,11 +134,12 @@ uLong filetime(f, tmzip, dt)
   return ret;
 }
 #else
-uLong filetime(f, tmzip, dt)
-    char *f;                /* name of file to get info on */
-    tm_zip *tmzip;             /* return value: access, modific. and creation times */
-    uLong *dt;             /* dostime */
-{
+/* f: name of file to get info on, tmzip: return value: access,
+   modification and creation times, dt: dostime */
+static int filetime(const char *f, tm_zip *tmzip, uLong *dt) {
+    (void)f;
+    (void)tmzip;
+    (void)dt;
     return 0;
 }
 #endif
@@ -150,9 +148,7 @@ uLong filetime(f, tmzip, dt)
 
 
 
-int check_exist_file(filename)
-    const char* filename;
-{
+static int check_exist_file(const char* filename) {
     FILE* ftestexist;
     int ret = 1;
     ftestexist = FOPEN_FUNC(filename,"rb");
@@ -163,14 +159,12 @@ int check_exist_file(filename)
     return ret;
 }
 
-void do_banner()
-{
+static void do_banner(void) {
     printf("MiniZip 1.1, demo of zLib + MiniZip64 package, written by Gilles Vollant\n");
     printf("more info on MiniZip at http://www.winimage.com/zLibDll/minizip.html\n\n");
 }
 
-void do_help()
-{
+static void do_help(void) {
     printf("Usage : minizip [-o] [-a] [-0 to -9] [-p password] [-j] file.zip [files_to_add]\n\n" \
            "  -o  Overwrite existing file.zip\n" \
            "  -a  Append to existing file.zip\n" \
@@ -182,14 +176,13 @@ void do_help()
 
 /* calculate the CRC32 of a file,
    because to encrypt a file, we need known the CRC32 of the file before */
-int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigned long* result_crc)
-{
+static int getFileCrc(const char* filenameinzip, void* buf, unsigned long size_buf, unsigned long* result_crc) {
    unsigned long calculate_crc=0;
    int err=ZIP_OK;
    FILE * fin = FOPEN_FUNC(filenameinzip,"rb");
 
    unsigned long size_read = 0;
-   unsigned long total_read = 0;
+   /* unsigned long total_read = 0; */
    if (fin==NULL)
    {
        err = ZIP_ERRNO;
@@ -199,7 +192,7 @@ int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
         do
         {
             err = ZIP_OK;
-            size_read = (int)fread(buf,1,size_buf,fin);
+            size_read = fread(buf,1,size_buf,fin);
             if (size_read < size_buf)
                 if (feof(fin)==0)
             {
@@ -208,8 +201,8 @@ int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
             }
 
             if (size_read>0)
-                calculate_crc = crc32(calculate_crc,buf,size_read);
-            total_read += size_read;
+                calculate_crc = crc32_z(calculate_crc,buf,size_read);
+            /* total_read += size_read; */
 
         } while ((err == ZIP_OK) && (size_read>0));
 
@@ -221,18 +214,17 @@ int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
     return err;
 }
 
-int isLargeFile(const char* filename)
-{
+static int isLargeFile(const char* filename) {
   int largeFile = 0;
   ZPOS64_T pos = 0;
   FILE* pFile = FOPEN_FUNC(filename, "rb");
 
   if(pFile != NULL)
   {
-    int n = FSEEKO_FUNC(pFile, 0, SEEK_END);
-    pos = FTELLO_FUNC(pFile);
+    FSEEKO_FUNC(pFile, 0, SEEK_END);
+    pos = (ZPOS64_T)FTELLO_FUNC(pFile);
 
-                printf("File : %s is %lld bytes\n", filename, pos);
+                printf("File : %s is %llu bytes\n", filename, pos);
 
     if(pos >= 0xffffffff)
      largeFile = 1;
@@ -243,10 +235,7 @@ int isLargeFile(const char* filename)
  return largeFile;
 }
 
-int main(argc,argv)
-    int argc;
-    char *argv[];
-{
+int main(int argc, char *argv[]) {
     int i;
     int opt_overwrite=0;
     int opt_compress_level=Z_DEFAULT_COMPRESSION;
@@ -255,7 +244,7 @@ int main(argc,argv)
     char filename_try[MAXFILENAME+16];
     int zipok;
     int err=0;
-    int size_buf=0;
+    size_t size_buf=0;
     void* buf=NULL;
     const char* password=NULL;
 
@@ -276,7 +265,7 @@ int main(argc,argv)
 
                 while ((*p)!='\0')
                 {
-                    char c=*(p++);;
+                    char c=*(p++);
                     if ((c=='o') || (c=='O'))
                         opt_overwrite = 1;
                     if ((c=='a') || (c=='A'))
@@ -322,7 +311,7 @@ int main(argc,argv)
 
         zipok = 1 ;
         strncpy(filename_try, argv[zipfilenamearg],MAXFILENAME-1);
-        /* strncpy doesnt append the trailing NULL, of the string is too long. */
+        /* strncpy doesn't append the trailing NULL, of the string is too long. */
         filename_try[ MAXFILENAME ] = '\0';
 
         len=(int)strlen(filename_try);
@@ -392,11 +381,11 @@ int main(argc,argv)
                   ((argv[i][1]=='o') || (argv[i][1]=='O') ||
                    (argv[i][1]=='a') || (argv[i][1]=='A') ||
                    (argv[i][1]=='p') || (argv[i][1]=='P') ||
-                   ((argv[i][1]>='0') || (argv[i][1]<='9'))) &&
+                   ((argv[i][1]>='0') && (argv[i][1]<='9'))) &&
                   (strlen(argv[i]) == 2)))
             {
-                FILE * fin;
-                int size_read;
+                FILE * fin = NULL;
+                size_t size_read;
                 const char* filenameinzip = argv[i];
                 const char *savefilenameinzip;
                 zip_fileinfo zi;
@@ -472,7 +461,7 @@ int main(argc,argv)
                     do
                     {
                         err = ZIP_OK;
-                        size_read = (int)fread(buf,1,size_buf,fin);
+                        size_read = fread(buf,1,size_buf,fin);
                         if (size_read < size_buf)
                             if (feof(fin)==0)
                         {
@@ -482,7 +471,7 @@ int main(argc,argv)
 
                         if (size_read>0)
                         {
-                            err = zipWriteInFileInZip (zf,buf,size_read);
+                            err = zipWriteInFileInZip (zf,buf,(unsigned)size_read);
                             if (err<0)
                             {
                                 printf("error in writing %s in the zipfile\n",
diff --git a/libs/zlib/contrib/minizip/mztools.c b/libs/zlib/contrib/minizip/mztools.c
index 96891c2e0b..c8d2375615 100644
--- a/libs/zlib/contrib/minizip/mztools.c
+++ b/libs/zlib/contrib/minizip/mztools.c
@@ -27,13 +27,7 @@
   WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \
 } while(0)
 
-extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered)
-const char* file;
-const char* fileOut;
-const char* fileOutTmp;
-uLong* nRecovered;
-uLong* bytesRecovered;
-{
+extern int ZEXPORT unzRepair(const char* file, const char* fileOut, const char* fileOutTmp, uLong* nRecovered, uLong* bytesRecovered) {
   int err = Z_OK;
   FILE* fpZip = fopen(file, "rb");
   FILE* fpOut = fopen(fileOut, "wb");
diff --git a/libs/zlib/contrib/minizip/unzip.c b/libs/zlib/contrib/minizip/unzip.c
index bcfb9416ec..ea05b7d62a 100644
--- a/libs/zlib/contrib/minizip/unzip.c
+++ b/libs/zlib/contrib/minizip/unzip.c
@@ -49,12 +49,12 @@
         Copyright (C) 2007-2008 Even Rouault
 
 
-        Oct-2009 - Mathias Svensson - Removed cpl_* from symbol names (Even Rouault added them but since this is now moved to a new project (minizip64) I renamed them again).
+  Oct-2009 - Mathias Svensson - Removed cpl_* from symbol names (Even Rouault added them but since this is now moved to a new project (minizip64) I renamed them again).
   Oct-2009 - Mathias Svensson - Fixed problem if uncompressed size was > 4G and compressed size was <4G
                                 should only read the compressed/uncompressed size from the Zip64 format if
                                 the size from normal header was 0xFFFFFFFF
-  Oct-2009 - Mathias Svensson - Applied some bug fixes from paches recived from Gilles Vollant
-        Oct-2009 - Mathias Svensson - Applied support to unzip files with compression mathod BZIP2 (bzip2 lib is required)
+  Oct-2009 - Mathias Svensson - Applied some bug fixes from patches received from Gilles Vollant
+  Oct-2009 - Mathias Svensson - Applied support to unzip files with compression method BZIP2 (bzip2 lib is required)
                                 Patch created by Daniel Borca
 
   Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer
@@ -77,8 +77,6 @@
 
 #ifdef STDC
 #  include <stddef.h>
-#  include <string.h>
-#  include <stdlib.h>
 #endif
 #ifdef NO_ERRNO_H
     extern int errno;
@@ -111,9 +109,6 @@
 #ifndef ALLOC
 # define ALLOC(size) (malloc(size))
 #endif
-#ifndef TRYFREE
-# define TRYFREE(p) {if (p) free(p);}
-#endif
 
 #define SIZECENTRALDIRITEM (0x2e)
 #define SIZEZIPLOCALHEADER (0x1e)
@@ -122,7 +117,7 @@
 const char unz_copyright[] =
    " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll";
 
-/* unz_file_info_interntal contain internal info about a file in zipfile*/
+/* unz_file_info64_internal contain internal info about a file in zipfile*/
 typedef struct unz_file_info64_internal_s
 {
     ZPOS64_T offset_curfile;/* relative offset of local header 8 bytes */
@@ -153,7 +148,7 @@ typedef struct
     ZPOS64_T rest_read_compressed; /* number of byte to be decompressed */
     ZPOS64_T rest_read_uncompressed;/*number of byte to be obtained after decomp*/
     zlib_filefunc64_32_def z_filefunc;
-    voidpf filestream;        /* io structore of the zipfile */
+    voidpf filestream;        /* io structure of the zipfile */
     uLong compression_method;   /* compression method (0==store) */
     ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
     int   raw;
@@ -166,7 +161,7 @@ typedef struct
 {
     zlib_filefunc64_32_def z_filefunc;
     int is64bitOpenFunction;
-    voidpf filestream;        /* io structore of the zipfile */
+    voidpf filestream;        /* io structure of the zipfile */
     unz_global_info64 gi;       /* public global information */
     ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
     ZPOS64_T num_file;             /* number of the current file in the zipfile*/
@@ -197,29 +192,24 @@ typedef struct
 #include "crypt.h"
 #endif
 
+
 /* ===========================================================================
-     Read a byte from a gz_stream; update next_in and avail_in. Return EOF
-   for end of file.
-   IN assertion: the stream s has been successfully opened for reading.
+   Reads a long in LSB order from the given gz_stream. Sets
 */
 
-
-local int unz64local_getByte OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream,
-    int *pi));
-
-local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)
-{
-    unsigned char c;
-    int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1);
-    if (err==1)
+local int unz64local_getShort(const zlib_filefunc64_32_def* pzlib_filefunc_def,
+                              voidpf filestream,
+                              uLong *pX) {
+    unsigned char c[2];
+    int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,c,2);
+    if (err==2)
     {
-        *pi = (int)c;
+        *pX = c[0] | ((uLong)c[1] << 8);
         return UNZ_OK;
     }
     else
     {
+        *pX = 0;
         if (ZERROR64(*pzlib_filefunc_def,filestream))
             return UNZ_ERRNO;
         else
@@ -227,127 +217,50 @@ local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, v
     }
 }
 
-
-/* ===========================================================================
-   Reads a long in LSB order from the given gz_stream. Sets
-*/
-local int unz64local_getShort OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream,
-    uLong *pX));
-
-local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def,
+local int unz64local_getLong(const zlib_filefunc64_32_def* pzlib_filefunc_def,
                              voidpf filestream,
-                             uLong *pX)
-{
-    uLong x ;
-    int i = 0;
-    int err;
-
-    err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x = (uLong)i;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((uLong)i)<<8;
-
-    if (err==UNZ_OK)
-        *pX = x;
-    else
-        *pX = 0;
-    return err;
-}
-
-local int unz64local_getLong OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream,
-    uLong *pX));
-
-local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def,
-                            voidpf filestream,
-                            uLong *pX)
-{
-    uLong x ;
-    int i = 0;
-    int err;
-
-    err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x = (uLong)i;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((uLong)i)<<8;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((uLong)i)<<16;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x += ((uLong)i)<<24;
-
-    if (err==UNZ_OK)
-        *pX = x;
+                             uLong *pX) {
+    unsigned char c[4];
+    int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,c,4);
+    if (err==4)
+    {
+        *pX = c[0] | ((uLong)c[1] << 8) | ((uLong)c[2] << 16) | ((uLong)c[3] << 24);
+        return UNZ_OK;
+    }
     else
+    {
         *pX = 0;
-    return err;
+        if (ZERROR64(*pzlib_filefunc_def,filestream))
+            return UNZ_ERRNO;
+        else
+            return UNZ_EOF;
+    }
 }
 
-local int unz64local_getLong64 OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream,
-    ZPOS64_T *pX));
-
-
-local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def,
-                            voidpf filestream,
-                            ZPOS64_T *pX)
-{
-    ZPOS64_T x ;
-    int i = 0;
-    int err;
-
-    err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x = (ZPOS64_T)i;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<8;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<16;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<24;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<32;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<40;
 
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<48;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<56;
-
-    if (err==UNZ_OK)
-        *pX = x;
+local int unz64local_getLong64(const zlib_filefunc64_32_def* pzlib_filefunc_def,
+                               voidpf filestream,
+                               ZPOS64_T *pX) {
+    unsigned char c[8];
+    int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,c,8);
+    if (err==8)
+    {
+        *pX = c[0] | ((ZPOS64_T)c[1] << 8) | ((ZPOS64_T)c[2] << 16) | ((ZPOS64_T)c[3] << 24)
+            | ((ZPOS64_T)c[4] << 32) | ((ZPOS64_T)c[5] << 40) | ((ZPOS64_T)c[6] << 48) | ((ZPOS64_T)c[7] << 56);
+        return UNZ_OK;
+    }
     else
+    {
         *pX = 0;
-    return err;
+        if (ZERROR64(*pzlib_filefunc_def,filestream))
+            return UNZ_ERRNO;
+        else
+            return UNZ_EOF;
+    }
 }
 
 /* My own strcmpi / strcasecmp */
-local int strcmpcasenosensitive_internal (const char* fileName1, const char* fileName2)
-{
+local int strcmpcasenosensitive_internal(const char* fileName1, const char* fileName2) {
     for (;;)
     {
         char c1=*(fileName1++);
@@ -379,19 +292,17 @@ local int strcmpcasenosensitive_internal (const char* fileName1, const char* fil
 #endif
 
 /*
-   Compare two filename (fileName1,fileName2).
-   If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
-   If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
+   Compare two filenames (fileName1,fileName2).
+   If iCaseSensitivity = 1, comparison is case sensitive (like strcmp)
+   If iCaseSensitivity = 2, comparison is not case sensitive (like strcmpi
                                                                 or strcasecmp)
-   If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
+   If iCaseSensitivity = 0, case sensitivity is default of your operating system
         (like 1 on Unix, 2 on Windows)
 
 */
 extern int ZEXPORT unzStringFileNameCompare (const char*  fileName1,
-                                                 const char*  fileName2,
-                                                 int iCaseSensitivity)
-
-{
+                                             const char*  fileName2,
+                                             int iCaseSensitivity) {
     if (iCaseSensitivity==0)
         iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
 
@@ -405,21 +316,23 @@ extern int ZEXPORT unzStringFileNameCompare (const char*  fileName1,
 #define BUFREADCOMMENT (0x400)
 #endif
 
+#ifndef CENTRALDIRINVALID
+#define CENTRALDIRINVALID ((ZPOS64_T)(-1))
+#endif
+
 /*
   Locate the Central directory of a zipfile (at the end, just before
     the global comment)
 */
-local ZPOS64_T unz64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream));
-local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)
-{
+local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) {
     unsigned char* buf;
     ZPOS64_T uSizeFile;
     ZPOS64_T uBackRead;
     ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */
-    ZPOS64_T uPosFound=0;
+    ZPOS64_T uPosFound=CENTRALDIRINVALID;
 
     if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
-        return 0;
+        return CENTRALDIRINVALID;
 
 
     uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream);
@@ -429,7 +342,7 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
 
     buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4);
     if (buf==NULL)
-        return 0;
+        return CENTRALDIRINVALID;
 
     uBackRead = 4;
     while (uBackRead<uMaxBack)
@@ -455,14 +368,14 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
             if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
                 ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06))
             {
-                uPosFound = uReadPos+i;
+                uPosFound = uReadPos+(unsigned)i;
                 break;
             }
 
-        if (uPosFound!=0)
+        if (uPosFound!=CENTRALDIRINVALID)
             break;
     }
-    TRYFREE(buf);
+    free(buf);
     return uPosFound;
 }
 
@@ -471,23 +384,18 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
   Locate the Central directory 64 of a zipfile (at the end, just before
     the global comment)
 */
-local ZPOS64_T unz64local_SearchCentralDir64 OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream));
-
 local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def,
-                                      voidpf filestream)
-{
+                                             voidpf filestream) {
     unsigned char* buf;
     ZPOS64_T uSizeFile;
     ZPOS64_T uBackRead;
     ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */
-    ZPOS64_T uPosFound=0;
+    ZPOS64_T uPosFound=CENTRALDIRINVALID;
     uLong uL;
                 ZPOS64_T relativeOffset;
 
     if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
-        return 0;
+        return CENTRALDIRINVALID;
 
 
     uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream);
@@ -497,7 +405,7 @@ local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
 
     buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4);
     if (buf==NULL)
-        return 0;
+        return CENTRALDIRINVALID;
 
     uBackRead = 4;
     while (uBackRead<uMaxBack)
@@ -523,51 +431,51 @@ local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
             if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
                 ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07))
             {
-                uPosFound = uReadPos+i;
+                uPosFound = uReadPos+(unsigned)i;
                 break;
             }
 
-        if (uPosFound!=0)
+        if (uPosFound!=CENTRALDIRINVALID)
             break;
     }
-    TRYFREE(buf);
-    if (uPosFound == 0)
-        return 0;
+    free(buf);
+    if (uPosFound == CENTRALDIRINVALID)
+        return CENTRALDIRINVALID;
 
     /* Zip64 end of central directory locator */
     if (ZSEEK64(*pzlib_filefunc_def,filestream, uPosFound,ZLIB_FILEFUNC_SEEK_SET)!=0)
-        return 0;
+        return CENTRALDIRINVALID;
 
     /* the signature, already checked */
     if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
 
-    /* number of the disk with the start of the zip64 end of  central directory */
+    /* number of the disk with the start of the zip64 end of central directory */
     if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
     if (uL != 0)
-        return 0;
+        return CENTRALDIRINVALID;
 
     /* relative offset of the zip64 end of central directory record */
     if (unz64local_getLong64(pzlib_filefunc_def,filestream,&relativeOffset)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
 
     /* total number of disks */
     if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
     if (uL != 1)
-        return 0;
+        return CENTRALDIRINVALID;
 
     /* Goto end of central directory record */
     if (ZSEEK64(*pzlib_filefunc_def,filestream, relativeOffset,ZLIB_FILEFUNC_SEEK_SET)!=0)
-        return 0;
+        return CENTRALDIRINVALID;
 
      /* the signature */
     if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
 
     if (uL != 0x06064b50)
-        return 0;
+        return CENTRALDIRINVALID;
 
     return relativeOffset;
 }
@@ -581,19 +489,18 @@ local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
      Else, the return value is a unzFile Handle, usable with other function
        of this unzip package.
 */
-local unzFile unzOpenInternal (const void *path,
-                               zlib_filefunc64_32_def* pzlib_filefunc64_32_def,
-                               int is64bitOpenFunction)
-{
+local unzFile unzOpenInternal(const void *path,
+                              zlib_filefunc64_32_def* pzlib_filefunc64_32_def,
+                              int is64bitOpenFunction) {
     unz64_s us;
     unz64_s *s;
     ZPOS64_T central_pos;
     uLong   uL;
 
-    uLong number_disk;          /* number of the current dist, used for
-                                   spaning ZIP, unsupported, always 0*/
-    uLong number_disk_with_CD;  /* number the the disk with central dir, used
-                                   for spaning ZIP, unsupported, always 0*/
+    uLong number_disk;          /* number of the current disk, used for
+                                   spanning ZIP, unsupported, always 0*/
+    uLong number_disk_with_CD;  /* number the disk with central dir, used
+                                   for spanning ZIP, unsupported, always 0*/
     ZPOS64_T number_entry_CD;      /* total number of entries in
                                    the central dir
                                    (same than number_entry on nospan) */
@@ -621,7 +528,7 @@ local unzFile unzOpenInternal (const void *path,
         return NULL;
 
     central_pos = unz64local_SearchCentralDir64(&us.z_filefunc,us.filestream);
-    if (central_pos)
+    if (central_pos!=CENTRALDIRINVALID)
     {
         uLong uS;
         ZPOS64_T uL64;
@@ -683,7 +590,7 @@ local unzFile unzOpenInternal (const void *path,
     else
     {
         central_pos = unz64local_SearchCentralDir(&us.z_filefunc,us.filestream);
-        if (central_pos==0)
+        if (central_pos==CENTRALDIRINVALID)
             err=UNZ_ERRNO;
 
         us.isZip64 = 0;
@@ -762,9 +669,8 @@ local unzFile unzOpenInternal (const void *path,
 }
 
 
-extern unzFile ZEXPORT unzOpen2 (const char *path,
-                                        zlib_filefunc_def* pzlib_filefunc32_def)
-{
+extern unzFile ZEXPORT unzOpen2(const char *path,
+                                zlib_filefunc_def* pzlib_filefunc32_def) {
     if (pzlib_filefunc32_def != NULL)
     {
         zlib_filefunc64_32_def zlib_filefunc64_32_def_fill;
@@ -775,9 +681,8 @@ extern unzFile ZEXPORT unzOpen2 (const char *path,
         return unzOpenInternal(path, NULL, 0);
 }
 
-extern unzFile ZEXPORT unzOpen2_64 (const void *path,
-                                     zlib_filefunc64_def* pzlib_filefunc_def)
-{
+extern unzFile ZEXPORT unzOpen2_64(const void *path,
+                                   zlib_filefunc64_def* pzlib_filefunc_def) {
     if (pzlib_filefunc_def != NULL)
     {
         zlib_filefunc64_32_def zlib_filefunc64_32_def_fill;
@@ -790,13 +695,11 @@ extern unzFile ZEXPORT unzOpen2_64 (const void *path,
         return unzOpenInternal(path, NULL, 1);
 }
 
-extern unzFile ZEXPORT unzOpen (const char *path)
-{
+extern unzFile ZEXPORT unzOpen(const char *path) {
     return unzOpenInternal(path, NULL, 0);
 }
 
-extern unzFile ZEXPORT unzOpen64 (const void *path)
-{
+extern unzFile ZEXPORT unzOpen64(const void *path) {
     return unzOpenInternal(path, NULL, 1);
 }
 
@@ -805,8 +708,7 @@ extern unzFile ZEXPORT unzOpen64 (const void *path)
   If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
     these files MUST be closed with unzCloseCurrentFile before call unzClose.
   return UNZ_OK if there is no problem. */
-extern int ZEXPORT unzClose (unzFile file)
-{
+extern int ZEXPORT unzClose(unzFile file) {
     unz64_s* s;
     if (file==NULL)
         return UNZ_PARAMERROR;
@@ -816,7 +718,7 @@ extern int ZEXPORT unzClose (unzFile file)
         unzCloseCurrentFile(file);
 
     ZCLOSE64(s->z_filefunc, s->filestream);
-    TRYFREE(s);
+    free(s);
     return UNZ_OK;
 }
 
@@ -825,8 +727,7 @@ extern int ZEXPORT unzClose (unzFile file)
   Write info about the ZipFile in the *pglobal_info structure.
   No preparation of the structure is needed
   return UNZ_OK if there is no problem. */
-extern int ZEXPORT unzGetGlobalInfo64 (unzFile file, unz_global_info64* pglobal_info)
-{
+extern int ZEXPORT unzGetGlobalInfo64(unzFile file, unz_global_info64* pglobal_info) {
     unz64_s* s;
     if (file==NULL)
         return UNZ_PARAMERROR;
@@ -835,8 +736,7 @@ extern int ZEXPORT unzGetGlobalInfo64 (unzFile file, unz_global_info64* pglobal_
     return UNZ_OK;
 }
 
-extern int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info* pglobal_info32)
-{
+extern int ZEXPORT unzGetGlobalInfo(unzFile file, unz_global_info* pglobal_info32) {
     unz64_s* s;
     if (file==NULL)
         return UNZ_PARAMERROR;
@@ -847,46 +747,33 @@ extern int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info* pglobal_info
     return UNZ_OK;
 }
 /*
-   Translate date/time from Dos format to tm_unz (readable more easilty)
+   Translate date/time from Dos format to tm_unz (readable more easily)
 */
-local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm)
-{
+local void unz64local_DosDateToTmuDate(ZPOS64_T ulDosDate, tm_unz* ptm) {
     ZPOS64_T uDate;
     uDate = (ZPOS64_T)(ulDosDate>>16);
-    ptm->tm_mday = (uInt)(uDate&0x1f) ;
-    ptm->tm_mon =  (uInt)((((uDate)&0x1E0)/0x20)-1) ;
-    ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ;
+    ptm->tm_mday = (int)(uDate&0x1f) ;
+    ptm->tm_mon =  (int)((((uDate)&0x1E0)/0x20)-1) ;
+    ptm->tm_year = (int)(((uDate&0x0FE00)/0x0200)+1980) ;
 
-    ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800);
-    ptm->tm_min =  (uInt) ((ulDosDate&0x7E0)/0x20) ;
-    ptm->tm_sec =  (uInt) (2*(ulDosDate&0x1f)) ;
+    ptm->tm_hour = (int) ((ulDosDate &0xF800)/0x800);
+    ptm->tm_min =  (int) ((ulDosDate&0x7E0)/0x20) ;
+    ptm->tm_sec =  (int) (2*(ulDosDate&0x1f)) ;
 }
 
 /*
   Get Info about the current file in the zipfile, with internal only info
 */
-local int unz64local_GetCurrentFileInfoInternal OF((unzFile file,
-                                                  unz_file_info64 *pfile_info,
-                                                  unz_file_info64_internal
-                                                  *pfile_info_internal,
-                                                  char *szFileName,
-                                                  uLong fileNameBufferSize,
-                                                  void *extraField,
-                                                  uLong extraFieldBufferSize,
-                                                  char *szComment,
-                                                  uLong commentBufferSize));
-
-local int unz64local_GetCurrentFileInfoInternal (unzFile file,
-                                                  unz_file_info64 *pfile_info,
-                                                  unz_file_info64_internal
-                                                  *pfile_info_internal,
-                                                  char *szFileName,
-                                                  uLong fileNameBufferSize,
-                                                  void *extraField,
-                                                  uLong extraFieldBufferSize,
-                                                  char *szComment,
-                                                  uLong commentBufferSize)
-{
+local int unz64local_GetCurrentFileInfoInternal(unzFile file,
+                                                unz_file_info64 *pfile_info,
+                                                unz_file_info64_internal
+                                                *pfile_info_internal,
+                                                char *szFileName,
+                                                uLong fileNameBufferSize,
+                                                void *extraField,
+                                                uLong extraFieldBufferSize,
+                                                char *szComment,
+                                                uLong commentBufferSize) {
     unz64_s* s;
     unz_file_info64 file_info;
     unz_file_info64_internal file_info_internal;
@@ -993,7 +880,7 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
 
         if (lSeek!=0)
         {
-            if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+            if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
                 lSeek=0;
             else
                 err=UNZ_ERRNO;
@@ -1018,7 +905,7 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
 
         if (lSeek!=0)
         {
-            if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+            if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
                 lSeek=0;
             else
                 err=UNZ_ERRNO;
@@ -1038,33 +925,31 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
             /* ZIP64 extra fields */
             if (headerId == 0x0001)
             {
-                                                        uLong uL;
-
-                                                                if(file_info.uncompressed_size == MAXU32)
-                                                                {
-                                                                        if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK)
-                                                                                        err=UNZ_ERRNO;
-                                                                }
-
-                                                                if(file_info.compressed_size == MAXU32)
-                                                                {
-                                                                        if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)
-                                                                                  err=UNZ_ERRNO;
-                                                                }
-
-                                                                if(file_info_internal.offset_curfile == MAXU32)
-                                                                {
-                                                                        /* Relative Header offset */
-                                                                        if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)
-                                                                                err=UNZ_ERRNO;
-                                                                }
-
-                                                                if(file_info.disk_num_start == MAXU32)
-                                                                {
-                                                                        /* Disk Start Number */
-                                                                        if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK)
-                                                                                err=UNZ_ERRNO;
-                                                                }
+                if(file_info.uncompressed_size == MAXU32)
+                {
+                    if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK)
+                        err=UNZ_ERRNO;
+                }
+
+                if(file_info.compressed_size == MAXU32)
+                {
+                    if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)
+                        err=UNZ_ERRNO;
+                }
+
+                if(file_info_internal.offset_curfile == MAXU32)
+                {
+                    /* Relative Header offset */
+                    if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)
+                        err=UNZ_ERRNO;
+                }
+
+                if(file_info.disk_num_start == 0xffff)
+                {
+                    /* Disk Start Number */
+                    if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK)
+                        err=UNZ_ERRNO;
+                }
 
             }
             else
@@ -1090,7 +975,7 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
 
         if (lSeek!=0)
         {
-            if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+            if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
                 lSeek=0;
             else
                 err=UNZ_ERRNO;
@@ -1121,24 +1006,22 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
   No preparation of the structure is needed
   return UNZ_OK if there is no problem.
 */
-extern int ZEXPORT unzGetCurrentFileInfo64 (unzFile file,
-                                          unz_file_info64 * pfile_info,
-                                          char * szFileName, uLong fileNameBufferSize,
-                                          void *extraField, uLong extraFieldBufferSize,
-                                          char* szComment,  uLong commentBufferSize)
-{
+extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file,
+                                           unz_file_info64 * pfile_info,
+                                           char * szFileName, uLong fileNameBufferSize,
+                                           void *extraField, uLong extraFieldBufferSize,
+                                           char* szComment,  uLong commentBufferSize) {
     return unz64local_GetCurrentFileInfoInternal(file,pfile_info,NULL,
-                                                szFileName,fileNameBufferSize,
-                                                extraField,extraFieldBufferSize,
-                                                szComment,commentBufferSize);
+                                                 szFileName,fileNameBufferSize,
+                                                 extraField,extraFieldBufferSize,
+                                                 szComment,commentBufferSize);
 }
 
-extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
-                                          unz_file_info * pfile_info,
-                                          char * szFileName, uLong fileNameBufferSize,
-                                          void *extraField, uLong extraFieldBufferSize,
-                                          char* szComment,  uLong commentBufferSize)
-{
+extern int ZEXPORT unzGetCurrentFileInfo(unzFile file,
+                                         unz_file_info * pfile_info,
+                                         char * szFileName, uLong fileNameBufferSize,
+                                         void *extraField, uLong extraFieldBufferSize,
+                                         char* szComment,  uLong commentBufferSize) {
     int err;
     unz_file_info64 file_info64;
     err = unz64local_GetCurrentFileInfoInternal(file,&file_info64,NULL,
@@ -1162,7 +1045,7 @@ extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
         pfile_info->internal_fa = file_info64.internal_fa;
         pfile_info->external_fa = file_info64.external_fa;
 
-        pfile_info->tmu_date = file_info64.tmu_date,
+        pfile_info->tmu_date = file_info64.tmu_date;
 
 
         pfile_info->compressed_size = (uLong)file_info64.compressed_size;
@@ -1175,8 +1058,7 @@ extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
   Set the current file of the zipfile to the first file.
   return UNZ_OK if there is no problem
 */
-extern int ZEXPORT unzGoToFirstFile (unzFile file)
-{
+extern int ZEXPORT unzGoToFirstFile(unzFile file) {
     int err=UNZ_OK;
     unz64_s* s;
     if (file==NULL)
@@ -1196,8 +1078,7 @@ extern int ZEXPORT unzGoToFirstFile (unzFile file)
   return UNZ_OK if there is no problem
   return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
 */
-extern int ZEXPORT unzGoToNextFile (unzFile  file)
-{
+extern int ZEXPORT unzGoToNextFile(unzFile file) {
     unz64_s* s;
     int err;
 
@@ -1229,8 +1110,7 @@ extern int ZEXPORT unzGoToNextFile (unzFile  file)
   UNZ_OK if the file is found. It becomes the current file.
   UNZ_END_OF_LIST_OF_FILE if the file is not found
 */
-extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity)
-{
+extern int ZEXPORT unzLocateFile(unzFile file, const char *szFileName, int iCaseSensitivity) {
     unz64_s* s;
     int err;
 
@@ -1305,8 +1185,7 @@ typedef struct unz_file_pos_s
 } unz_file_pos;
 */
 
-extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos*  file_pos)
-{
+extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos* file_pos) {
     unz64_s* s;
 
     if (file==NULL || file_pos==NULL)
@@ -1321,10 +1200,7 @@ extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos*  file_pos)
     return UNZ_OK;
 }
 
-extern int ZEXPORT unzGetFilePos(
-    unzFile file,
-    unz_file_pos* file_pos)
-{
+extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos* file_pos) {
     unz64_file_pos file_pos64;
     int err = unzGetFilePos64(file,&file_pos64);
     if (err==UNZ_OK)
@@ -1335,8 +1211,7 @@ extern int ZEXPORT unzGetFilePos(
     return err;
 }
 
-extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos)
-{
+extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos) {
     unz64_s* s;
     int err;
 
@@ -1357,10 +1232,7 @@ extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos
     return err;
 }
 
-extern int ZEXPORT unzGoToFilePos(
-    unzFile file,
-    unz_file_pos* file_pos)
-{
+extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos* file_pos) {
     unz64_file_pos file_pos64;
     if (file_pos == NULL)
         return UNZ_PARAMERROR;
@@ -1382,10 +1254,9 @@ extern int ZEXPORT unzGoToFilePos(
   store in *piSizeVar the size of extra info in local header
         (filename and size of extra field data)
 */
-local int unz64local_CheckCurrentFileCoherencyHeader (unz64_s* s, uInt* piSizeVar,
-                                                    ZPOS64_T * poffset_local_extrafield,
-                                                    uInt  * psize_local_extrafield)
-{
+local int unz64local_CheckCurrentFileCoherencyHeader(unz64_s* s, uInt* piSizeVar,
+                                                     ZPOS64_T * poffset_local_extrafield,
+                                                     uInt  * psize_local_extrafield) {
     uLong uMagic,uData,uFlags;
     uLong size_filename;
     uLong size_extra_field;
@@ -1469,9 +1340,8 @@ local int unz64local_CheckCurrentFileCoherencyHeader (unz64_s* s, uInt* piSizeVa
   Open for reading data the current file in the zipfile.
   If there is no error and the file is opened, the return value is UNZ_OK.
 */
-extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
-                                            int* level, int raw, const char* password)
-{
+extern int ZEXPORT unzOpenCurrentFile3(unzFile file, int* method,
+                                       int* level, int raw, const char* password) {
     int err=UNZ_OK;
     uInt iSizeVar;
     unz64_s* s;
@@ -1509,7 +1379,7 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
 
     if (pfile_in_zip_read_info->read_buffer==NULL)
     {
-        TRYFREE(pfile_in_zip_read_info);
+        free(pfile_in_zip_read_info);
         return UNZ_INTERNALERROR;
     }
 
@@ -1566,7 +1436,8 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
         pfile_in_zip_read_info->stream_initialised=Z_BZIP2ED;
       else
       {
-        TRYFREE(pfile_in_zip_read_info);
+        free(pfile_in_zip_read_info->read_buffer);
+        free(pfile_in_zip_read_info);
         return err;
       }
 #else
@@ -1586,7 +1457,8 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
         pfile_in_zip_read_info->stream_initialised=Z_DEFLATED;
       else
       {
-        TRYFREE(pfile_in_zip_read_info);
+        free(pfile_in_zip_read_info->read_buffer);
+        free(pfile_in_zip_read_info);
         return err;
       }
         /* windowBits is passed < 0 to tell that there is no zlib header.
@@ -1638,25 +1510,21 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
     return UNZ_OK;
 }
 
-extern int ZEXPORT unzOpenCurrentFile (unzFile file)
-{
+extern int ZEXPORT unzOpenCurrentFile(unzFile file) {
     return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
 }
 
-extern int ZEXPORT unzOpenCurrentFilePassword (unzFile file, const char*  password)
-{
+extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file, const char* password) {
     return unzOpenCurrentFile3(file, NULL, NULL, 0, password);
 }
 
-extern int ZEXPORT unzOpenCurrentFile2 (unzFile file, int* method, int* level, int raw)
-{
+extern int ZEXPORT unzOpenCurrentFile2(unzFile file, int* method, int* level, int raw) {
     return unzOpenCurrentFile3(file, method, level, raw, NULL);
 }
 
 /** Addition for GDAL : START */
 
-extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64( unzFile file)
-{
+extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64(unzFile file) {
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
     s=(unz64_s*)file;
@@ -1676,13 +1544,12 @@ extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64( unzFile file)
   buf contain buffer where data must be copied
   len the size of buf.
 
-  return the number of byte copied if somes bytes are copied
+  return the number of byte copied if some bytes are copied
   return 0 if the end of file was reached
   return <0 with error code if there is an error
     (UNZ_ERRNO for IO error, or zLib error for uncompress error)
 */
-extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
-{
+extern int ZEXPORT unzReadCurrentFile(unzFile file, voidp buf, unsigned len) {
     int err=UNZ_OK;
     uInt iRead = 0;
     unz64_s* s;
@@ -1767,7 +1634,7 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
 
             if ((pfile_in_zip_read_info->stream.avail_in == 0) &&
                 (pfile_in_zip_read_info->rest_read_compressed == 0))
-                return (iRead==0) ? UNZ_EOF : iRead;
+                return (iRead==0) ? UNZ_EOF : (int)iRead;
 
             if (pfile_in_zip_read_info->stream.avail_out <
                             pfile_in_zip_read_info->stream.avail_in)
@@ -1857,6 +1724,9 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
               err = Z_DATA_ERROR;
 
             uTotalOutAfter = pfile_in_zip_read_info->stream.total_out;
+            /* Detect overflow, because z_stream.total_out is uLong (32 bits) */
+            if (uTotalOutAfter<uTotalOutBefore)
+                uTotalOutAfter += 1LL << 32; /* Add maximum value of uLong + 1 */
             uOutThis = uTotalOutAfter-uTotalOutBefore;
 
             pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis;
@@ -1871,14 +1741,14 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
             iRead += (uInt)(uTotalOutAfter - uTotalOutBefore);
 
             if (err==Z_STREAM_END)
-                return (iRead==0) ? UNZ_EOF : iRead;
+                return (iRead==0) ? UNZ_EOF : (int)iRead;
             if (err!=Z_OK)
                 break;
         }
     }
 
     if (err==Z_OK)
-        return iRead;
+        return (int)iRead;
     return err;
 }
 
@@ -1886,8 +1756,7 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
 /*
   Give the current position in uncompressed data
 */
-extern z_off_t ZEXPORT unztell (unzFile file)
-{
+extern z_off_t ZEXPORT unztell(unzFile file) {
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
     if (file==NULL)
@@ -1901,8 +1770,7 @@ extern z_off_t ZEXPORT unztell (unzFile file)
     return (z_off_t)pfile_in_zip_read_info->stream.total_out;
 }
 
-extern ZPOS64_T ZEXPORT unztell64 (unzFile file)
-{
+extern ZPOS64_T ZEXPORT unztell64(unzFile file) {
 
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
@@ -1921,8 +1789,7 @@ extern ZPOS64_T ZEXPORT unztell64 (unzFile file)
 /*
   return 1 if the end of file was reached, 0 elsewhere
 */
-extern int ZEXPORT unzeof (unzFile file)
-{
+extern int ZEXPORT unzeof(unzFile file) {
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
     if (file==NULL)
@@ -1953,8 +1820,7 @@ more info in the local-header version than in the central-header)
   the return value is the number of bytes copied in buf, or (if <0)
     the error code
 */
-extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len)
-{
+extern int ZEXPORT unzGetLocalExtrafield(unzFile file, voidp buf, unsigned len) {
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
     uInt read_now;
@@ -2001,8 +1867,7 @@ extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len)
   Close the file in zip opened with unzOpenCurrentFile
   Return UNZ_CRCERROR if all the file was read but the CRC is not good
 */
-extern int ZEXPORT unzCloseCurrentFile (unzFile file)
-{
+extern int ZEXPORT unzCloseCurrentFile(unzFile file) {
     int err=UNZ_OK;
 
     unz64_s* s;
@@ -2024,7 +1889,7 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
     }
 
 
-    TRYFREE(pfile_in_zip_read_info->read_buffer);
+    free(pfile_in_zip_read_info->read_buffer);
     pfile_in_zip_read_info->read_buffer = NULL;
     if (pfile_in_zip_read_info->stream_initialised == Z_DEFLATED)
         inflateEnd(&pfile_in_zip_read_info->stream);
@@ -2035,7 +1900,7 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
 
 
     pfile_in_zip_read_info->stream_initialised = 0;
-    TRYFREE(pfile_in_zip_read_info);
+    free(pfile_in_zip_read_info);
 
     s->pfile_in_zip_read=NULL;
 
@@ -2048,8 +1913,7 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
   uSizeBuf is the size of the szComment buffer.
   return the number of byte copied or an error code <0
 */
-extern int ZEXPORT unzGetGlobalComment (unzFile file, char * szComment, uLong uSizeBuf)
-{
+extern int ZEXPORT unzGetGlobalComment(unzFile file, char * szComment, uLong uSizeBuf) {
     unz64_s* s;
     uLong uReadThis ;
     if (file==NULL)
@@ -2076,8 +1940,7 @@ extern int ZEXPORT unzGetGlobalComment (unzFile file, char * szComment, uLong uS
 }
 
 /* Additions by RX '2004 */
-extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file)
-{
+extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file) {
     unz64_s* s;
 
     if (file==NULL)
@@ -2091,8 +1954,7 @@ extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file)
     return s->pos_in_central_dir;
 }
 
-extern uLong ZEXPORT unzGetOffset (unzFile file)
-{
+extern uLong ZEXPORT unzGetOffset(unzFile file) {
     ZPOS64_T offset64;
 
     if (file==NULL)
@@ -2101,8 +1963,7 @@ extern uLong ZEXPORT unzGetOffset (unzFile file)
     return (uLong)offset64;
 }
 
-extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos)
-{
+extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos) {
     unz64_s* s;
     int err;
 
@@ -2119,7 +1980,6 @@ extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos)
     return err;
 }
 
-extern int ZEXPORT unzSetOffset (unzFile file, uLong pos)
-{
+extern int ZEXPORT unzSetOffset (unzFile file, uLong pos) {
     return unzSetOffset64(file,pos);
 }
diff --git a/libs/zlib/contrib/minizip/unzip.h b/libs/zlib/contrib/minizip/unzip.h
index 2104e39150..5cfc9c6274 100644
--- a/libs/zlib/contrib/minizip/unzip.h
+++ b/libs/zlib/contrib/minizip/unzip.h
@@ -83,12 +83,12 @@ typedef voidp unzFile;
 /* tm_unz contain date/time info */
 typedef struct tm_unz_s
 {
-    uInt tm_sec;            /* seconds after the minute - [0,59] */
-    uInt tm_min;            /* minutes after the hour - [0,59] */
-    uInt tm_hour;           /* hours since midnight - [0,23] */
-    uInt tm_mday;           /* day of the month - [1,31] */
-    uInt tm_mon;            /* months since January - [0,11] */
-    uInt tm_year;           /* years - [1980..2044] */
+    int tm_sec;             /* seconds after the minute - [0,59] */
+    int tm_min;             /* minutes after the hour - [0,59] */
+    int tm_hour;            /* hours since midnight - [0,23] */
+    int tm_mday;            /* day of the month - [1,31] */
+    int tm_mon;             /* months since January - [0,11] */
+    int tm_year;            /* years - [1980..2044] */
 } tm_unz;
 
 /* unz_global_info structure contain global data about the ZIPfile
@@ -150,21 +150,21 @@ typedef struct unz_file_info_s
     tm_unz tmu_date;
 } unz_file_info;
 
-extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
-                                                 const char* fileName2,
-                                                 int iCaseSensitivity));
+extern int ZEXPORT unzStringFileNameCompare(const char* fileName1,
+                                            const char* fileName2,
+                                            int iCaseSensitivity);
 /*
-   Compare two filename (fileName1,fileName2).
-   If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
-   If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
+   Compare two filenames (fileName1,fileName2).
+   If iCaseSensitivity = 1, comparison is case sensitive (like strcmp)
+   If iCaseSensitivity = 2, comparison is not case sensitive (like strcmpi
                                 or strcasecmp)
-   If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
+   If iCaseSensitivity = 0, case sensitivity is default of your operating system
     (like 1 on Unix, 2 on Windows)
 */
 
 
-extern unzFile ZEXPORT unzOpen OF((const char *path));
-extern unzFile ZEXPORT unzOpen64 OF((const void *path));
+extern unzFile ZEXPORT unzOpen(const char *path);
+extern unzFile ZEXPORT unzOpen64(const void *path);
 /*
   Open a Zip file. path contain the full pathname (by example,
      on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer
@@ -181,41 +181,41 @@ extern unzFile ZEXPORT unzOpen64 OF((const void *path));
 */
 
 
-extern unzFile ZEXPORT unzOpen2 OF((const char *path,
-                                    zlib_filefunc_def* pzlib_filefunc_def));
+extern unzFile ZEXPORT unzOpen2(const char *path,
+                                zlib_filefunc_def* pzlib_filefunc_def);
 /*
    Open a Zip file, like unzOpen, but provide a set of file low level API
       for read/write the zip file (see ioapi.h)
 */
 
-extern unzFile ZEXPORT unzOpen2_64 OF((const void *path,
-                                    zlib_filefunc64_def* pzlib_filefunc_def));
+extern unzFile ZEXPORT unzOpen2_64(const void *path,
+                                   zlib_filefunc64_def* pzlib_filefunc_def);
 /*
    Open a Zip file, like unz64Open, but provide a set of file low level API
       for read/write the zip file (see ioapi.h)
 */
 
-extern int ZEXPORT unzClose OF((unzFile file));
+extern int ZEXPORT unzClose(unzFile file);
 /*
   Close a ZipFile opened with unzOpen.
   If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
     these files MUST be closed with unzCloseCurrentFile before call unzClose.
   return UNZ_OK if there is no problem. */
 
-extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
-                                        unz_global_info *pglobal_info));
+extern int ZEXPORT unzGetGlobalInfo(unzFile file,
+                                    unz_global_info *pglobal_info);
 
-extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file,
-                                        unz_global_info64 *pglobal_info));
+extern int ZEXPORT unzGetGlobalInfo64(unzFile file,
+                                      unz_global_info64 *pglobal_info);
 /*
   Write info about the ZipFile in the *pglobal_info structure.
   No preparation of the structure is needed
   return UNZ_OK if there is no problem. */
 
 
-extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
-                                           char *szComment,
-                                           uLong uSizeBuf));
+extern int ZEXPORT unzGetGlobalComment(unzFile file,
+                                       char *szComment,
+                                       uLong uSizeBuf);
 /*
   Get the global comment string of the ZipFile, in the szComment buffer.
   uSizeBuf is the size of the szComment buffer.
@@ -226,22 +226,22 @@ extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
 /***************************************************************************/
 /* Unzip package allow you browse the directory of the zipfile */
 
-extern int ZEXPORT unzGoToFirstFile OF((unzFile file));
+extern int ZEXPORT unzGoToFirstFile(unzFile file);
 /*
   Set the current file of the zipfile to the first file.
   return UNZ_OK if there is no problem
 */
 
-extern int ZEXPORT unzGoToNextFile OF((unzFile file));
+extern int ZEXPORT unzGoToNextFile(unzFile file);
 /*
   Set the current file of the zipfile to the next file.
   return UNZ_OK if there is no problem
   return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
 */
 
-extern int ZEXPORT unzLocateFile OF((unzFile file,
-                     const char *szFileName,
-                     int iCaseSensitivity));
+extern int ZEXPORT unzLocateFile(unzFile file,
+                                 const char *szFileName,
+                                 int iCaseSensitivity);
 /*
   Try locate the file szFileName in the zipfile.
   For the iCaseSensitivity signification, see unzStringFileNameCompare
@@ -285,28 +285,28 @@ extern int ZEXPORT unzGoToFilePos64(
 
 /* ****************************************** */
 
-extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file,
-                         unz_file_info64 *pfile_info,
-                         char *szFileName,
-                         uLong fileNameBufferSize,
-                         void *extraField,
-                         uLong extraFieldBufferSize,
-                         char *szComment,
-                         uLong commentBufferSize));
-
-extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
-                         unz_file_info *pfile_info,
-                         char *szFileName,
-                         uLong fileNameBufferSize,
-                         void *extraField,
-                         uLong extraFieldBufferSize,
-                         char *szComment,
-                         uLong commentBufferSize));
+extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file,
+                                           unz_file_info64 *pfile_info,
+                                           char *szFileName,
+                                           uLong fileNameBufferSize,
+                                           void *extraField,
+                                           uLong extraFieldBufferSize,
+                                           char *szComment,
+                                           uLong commentBufferSize);
+
+extern int ZEXPORT unzGetCurrentFileInfo(unzFile file,
+                                         unz_file_info *pfile_info,
+                                         char *szFileName,
+                                         uLong fileNameBufferSize,
+                                         void *extraField,
+                                         uLong extraFieldBufferSize,
+                                         char *szComment,
+                                         uLong commentBufferSize);
 /*
   Get Info about the current file
-  if pfile_info!=NULL, the *pfile_info structure will contain somes info about
+  if pfile_info!=NULL, the *pfile_info structure will contain some info about
         the current file
-  if szFileName!=NULL, the filemane string will be copied in szFileName
+  if szFileName!=NULL, the filename string will be copied in szFileName
             (fileNameBufferSize is the size of the buffer)
   if extraField!=NULL, the extra field information will be copied in extraField
             (extraFieldBufferSize is the size of the buffer).
@@ -318,7 +318,7 @@ extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
 
 /** Addition for GDAL : START */
 
-extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
+extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64(unzFile file);
 
 /** Addition for GDAL : END */
 
@@ -328,24 +328,24 @@ extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
    from it, and close it (you can close it before reading all the file)
    */
 
-extern int ZEXPORT unzOpenCurrentFile OF((unzFile file));
+extern int ZEXPORT unzOpenCurrentFile(unzFile file);
 /*
   Open for reading data the current file in the zipfile.
   If there is no error, the return value is UNZ_OK.
 */
 
-extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file,
-                                                  const char* password));
+extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file,
+                                              const char* password);
 /*
   Open for reading data the current file in the zipfile.
   password is a crypting password
   If there is no error, the return value is UNZ_OK.
 */
 
-extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
-                                           int* method,
-                                           int* level,
-                                           int raw));
+extern int ZEXPORT unzOpenCurrentFile2(unzFile file,
+                                       int* method,
+                                       int* level,
+                                       int raw);
 /*
   Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
     if raw==1
@@ -355,11 +355,11 @@ extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
          but you CANNOT set method parameter as NULL
 */
 
-extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
-                                           int* method,
-                                           int* level,
-                                           int raw,
-                                           const char* password));
+extern int ZEXPORT unzOpenCurrentFile3(unzFile file,
+                                       int* method,
+                                       int* level,
+                                       int raw,
+                                       const char* password);
 /*
   Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
     if raw==1
@@ -370,41 +370,41 @@ extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
 */
 
 
-extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
+extern int ZEXPORT unzCloseCurrentFile(unzFile file);
 /*
   Close the file in zip opened with unzOpenCurrentFile
   Return UNZ_CRCERROR if all the file was read but the CRC is not good
 */
 
-extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
-                      voidp buf,
-                      unsigned len));
+extern int ZEXPORT unzReadCurrentFile(unzFile file,
+                                      voidp buf,
+                                      unsigned len);
 /*
   Read bytes from the current file (opened by unzOpenCurrentFile)
   buf contain buffer where data must be copied
   len the size of buf.
 
-  return the number of byte copied if somes bytes are copied
+  return the number of byte copied if some bytes are copied
   return 0 if the end of file was reached
   return <0 with error code if there is an error
     (UNZ_ERRNO for IO error, or zLib error for uncompress error)
 */
 
-extern z_off_t ZEXPORT unztell OF((unzFile file));
+extern z_off_t ZEXPORT unztell(unzFile file);
 
-extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file));
+extern ZPOS64_T ZEXPORT unztell64(unzFile file);
 /*
   Give the current position in uncompressed data
 */
 
-extern int ZEXPORT unzeof OF((unzFile file));
+extern int ZEXPORT unzeof(unzFile file);
 /*
   return 1 if the end of file was reached, 0 elsewhere
 */
 
-extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file,
-                                             voidp buf,
-                                             unsigned len));
+extern int ZEXPORT unzGetLocalExtrafield(unzFile file,
+                                         voidp buf,
+                                         unsigned len);
 /*
   Read extra field from the current file (opened by unzOpenCurrentFile)
   This is the local-header version of the extra field (sometimes, there is
diff --git a/libs/zlib/contrib/minizip/zip.c b/libs/zlib/contrib/minizip/zip.c
index 44e88a9cb9..60bdffac34 100644
--- a/libs/zlib/contrib/minizip/zip.c
+++ b/libs/zlib/contrib/minizip/zip.c
@@ -14,7 +14,7 @@
    Oct-2009 - Mathias Svensson - Added Zip64 Support when creating new file archives
    Oct-2009 - Mathias Svensson - Did some code cleanup and refactoring to get better overview of some functions.
    Oct-2009 - Mathias Svensson - Added zipRemoveExtraInfoBlock to strip extra field data from its ZIP64 data
-                                 It is used when recreting zip archive with RAW when deleting items from a zip.
+                                 It is used when recreating zip archive with RAW when deleting items from a zip.
                                  ZIP64 data is automatically added to items that needs it, and existing ZIP64 data need to be removed.
    Oct-2009 - Mathias Svensson - Added support for BZIP2 as compression mode (bzip2 lib is required)
    Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer
@@ -25,14 +25,13 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdint.h>
 #include <time.h>
 #include "zlib.h"
 #include "zip.h"
 
 #ifdef STDC
 #  include <stddef.h>
-#  include <string.h>
-#  include <stdlib.h>
 #endif
 #ifdef NO_ERRNO_H
     extern int errno;
@@ -47,7 +46,7 @@
 /* compile with -Dlocal if your debugger can't find static symbols */
 
 #ifndef VERSIONMADEBY
-# define VERSIONMADEBY   (0x0) /* platform depedent */
+# define VERSIONMADEBY   (0x0) /* platform dependent */
 #endif
 
 #ifndef Z_BUFSIZE
@@ -61,9 +60,6 @@
 #ifndef ALLOC
 # define ALLOC(size) (malloc(size))
 #endif
-#ifndef TRYFREE
-# define TRYFREE(p) {if (p) free(p);}
-#endif
 
 /*
 #define SIZECENTRALDIRITEM (0x2e)
@@ -138,37 +134,37 @@ typedef struct
     uInt pos_in_buffered_data;  /* last written byte in buffered_data */
 
     ZPOS64_T pos_local_header;     /* offset of the local header of the file
-                                     currenty writing */
+                                     currently writing */
     char* central_header;       /* central header data for the current file */
     uLong size_centralExtra;
     uLong size_centralheader;   /* size of the central header for cur file */
     uLong size_centralExtraFree; /* Extra bytes allocated to the centralheader but that are not used */
     uLong flag;                 /* flag of the file currently writing */
 
-    int  method;                /* compression method of file currenty wr.*/
+    int  method;                /* compression method of file currently wr.*/
     int  raw;                   /* 1 for directly writing raw data */
     Byte buffered_data[Z_BUFSIZE];/* buffer contain compressed data to be writ*/
     uLong dosDate;
     uLong crc32;
     int  encrypt;
-    int  zip64;               /* Add ZIP64 extened information in the extra field */
+    int  zip64;               /* Add ZIP64 extended information in the extra field */
     ZPOS64_T pos_zip64extrainfo;
     ZPOS64_T totalCompressedData;
     ZPOS64_T totalUncompressedData;
 #ifndef NOCRYPT
     unsigned long keys[3];     /* keys defining the pseudo-random sequence */
     const z_crc_t* pcrc_32_tab;
-    int crypt_header_size;
+    unsigned crypt_header_size;
 #endif
 } curfile64_info;
 
 typedef struct
 {
     zlib_filefunc64_32_def z_filefunc;
-    voidpf filestream;        /* io structore of the zipfile */
+    voidpf filestream;        /* io structure of the zipfile */
     linkedlist_data central_dir;/* datablock with central dir in construction*/
     int  in_opened_file_inzip;  /* 1 if a file in the zip is currently writ.*/
-    curfile64_info ci;            /* info on the file curretly writing */
+    curfile64_info ci;            /* info on the file currently writing */
 
     ZPOS64_T begin_pos;            /* position of the beginning of the zipfile */
     ZPOS64_T add_position_when_writing_offset;
@@ -186,8 +182,7 @@ typedef struct
 #include "crypt.h"
 #endif
 
-local linkedlist_datablock_internal* allocate_new_datablock()
-{
+local linkedlist_datablock_internal* allocate_new_datablock(void) {
     linkedlist_datablock_internal* ldi;
     ldi = (linkedlist_datablock_internal*)
                  ALLOC(sizeof(linkedlist_datablock_internal));
@@ -200,30 +195,26 @@ local linkedlist_datablock_internal* allocate_new_datablock()
     return ldi;
 }
 
-local void free_datablock(linkedlist_datablock_internal* ldi)
-{
+local void free_datablock(linkedlist_datablock_internal* ldi) {
     while (ldi!=NULL)
     {
         linkedlist_datablock_internal* ldinext = ldi->next_datablock;
-        TRYFREE(ldi);
+        free(ldi);
         ldi = ldinext;
     }
 }
 
-local void init_linkedlist(linkedlist_data* ll)
-{
+local void init_linkedlist(linkedlist_data* ll) {
     ll->first_block = ll->last_block = NULL;
 }
 
-local void free_linkedlist(linkedlist_data* ll)
-{
+local void free_linkedlist(linkedlist_data* ll) {
     free_datablock(ll->first_block);
     ll->first_block = ll->last_block = NULL;
 }
 
 
-local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len)
-{
+local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len) {
     linkedlist_datablock_internal* ldi;
     const unsigned char* from_copy;
 
@@ -238,7 +229,7 @@ local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len)
     }
 
     ldi = ll->last_block;
-    from_copy = (unsigned char*)buf;
+    from_copy = (const unsigned char*)buf;
 
     while (len>0)
     {
@@ -283,9 +274,7 @@ local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len)
    nbByte == 1, 2 ,4 or 8 (byte, short or long, ZPOS64_T)
 */
 
-local int zip64local_putValue OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte));
-local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)
-{
+local int zip64local_putValue(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte) {
     unsigned char buf[8];
     int n;
     for (n = 0; n < nbByte; n++)
@@ -301,15 +290,13 @@ local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def,
         }
       }
 
-    if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte)
+    if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,(uLong)nbByte)!=(uLong)nbByte)
         return ZIP_ERRNO;
     else
         return ZIP_OK;
 }
 
-local void zip64local_putValue_inmemory OF((void* dest, ZPOS64_T x, int nbByte));
-local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte)
-{
+local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte) {
     unsigned char* buf=(unsigned char*)dest;
     int n;
     for (n = 0; n < nbByte; n++) {
@@ -329,25 +316,21 @@ local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte)
 /****************************************************************************/
 
 
-local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm)
-{
+local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm) {
     uLong year = (uLong)ptm->tm_year;
     if (year>=1980)
         year-=1980;
     else if (year>=80)
         year-=80;
     return
-      (uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) |
-        ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour));
+      (uLong) (((uLong)(ptm->tm_mday) + (32 * (uLong)(ptm->tm_mon+1)) + (512 * year)) << 16) |
+        (((uLong)ptm->tm_sec/2) + (32 * (uLong)ptm->tm_min) + (2048 * (uLong)ptm->tm_hour));
 }
 
 
 /****************************************************************************/
 
-local int zip64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi));
-
-local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,voidpf filestream,int* pi)
-{
+local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int* pi) {
     unsigned char c;
     int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1);
     if (err==1)
@@ -368,10 +351,7 @@ local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,vo
 /* ===========================================================================
    Reads a long in LSB order from the given gz_stream. Sets
 */
-local int zip64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX));
-
-local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX)
-{
+local int zip64local_getShort(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) {
     uLong x ;
     int i = 0;
     int err;
@@ -390,10 +370,7 @@ local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def,
     return err;
 }
 
-local int zip64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX));
-
-local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX)
-{
+local int zip64local_getLong(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) {
     uLong x ;
     int i = 0;
     int err;
@@ -420,11 +397,8 @@ local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def,
     return err;
 }
 
-local int zip64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX));
 
-
-local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)
-{
+local int zip64local_getLong64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX) {
   ZPOS64_T x;
   int i = 0;
   int err;
@@ -475,10 +449,7 @@ local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def
   Locate the Central directory of a zipfile (at the end, just before
     the global comment)
 */
-local ZPOS64_T zip64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream));
-
-local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)
-{
+local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) {
   unsigned char* buf;
   ZPOS64_T uSizeFile;
   ZPOS64_T uBackRead;
@@ -522,14 +493,14 @@ local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
       if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
         ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06))
       {
-        uPosFound = uReadPos+i;
+        uPosFound = uReadPos+(unsigned)i;
         break;
       }
 
-      if (uPosFound!=0)
-        break;
+    if (uPosFound!=0)
+      break;
   }
-  TRYFREE(buf);
+  free(buf);
   return uPosFound;
 }
 
@@ -537,10 +508,7 @@ local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
 Locate the End of Zip64 Central directory locator and from there find the CD of a zipfile (at the end, just before
 the global comment)
 */
-local ZPOS64_T zip64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream));
-
-local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)
-{
+local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) {
   unsigned char* buf;
   ZPOS64_T uSizeFile;
   ZPOS64_T uBackRead;
@@ -586,7 +554,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
       // Signature "0x07064b50" Zip64 end of central directory locater
       if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07))
       {
-        uPosFound = uReadPos+i;
+        uPosFound = uReadPos+(unsigned)i;
         break;
       }
     }
@@ -595,7 +563,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
         break;
   }
 
-  TRYFREE(buf);
+  free(buf);
   if (uPosFound == 0)
     return 0;
 
@@ -607,7 +575,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
   if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK)
     return 0;
 
-  /* number of the disk with the start of the zip64 end of  central directory */
+  /* number of the disk with the start of the zip64 end of central directory */
   if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK)
     return 0;
   if (uL != 0)
@@ -637,8 +605,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
   return relativeOffset;
 }
 
-int LoadCentralDirectoryRecord(zip64_internal* pziinit)
-{
+local int LoadCentralDirectoryRecord(zip64_internal* pziinit) {
   int err=ZIP_OK;
   ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
 
@@ -647,10 +614,10 @@ int LoadCentralDirectoryRecord(zip64_internal* pziinit)
   ZPOS64_T central_pos;
   uLong uL;
 
-  uLong number_disk;          /* number of the current dist, used for
-                              spaning ZIP, unsupported, always 0*/
-  uLong number_disk_with_CD;  /* number the the disk with central dir, used
-                              for spaning ZIP, unsupported, always 0*/
+  uLong number_disk;          /* number of the current disk, used for
+                              spanning ZIP, unsupported, always 0*/
+  uLong number_disk_with_CD;  /* number of the disk with central dir, used
+                              for spanning ZIP, unsupported, always 0*/
   ZPOS64_T number_entry;
   ZPOS64_T number_entry_CD;      /* total number of entries in
                                 the central dir
@@ -830,7 +797,7 @@ int LoadCentralDirectoryRecord(zip64_internal* pziinit)
 
       size_central_dir_to_read-=read_this;
     }
-    TRYFREE(buf_read);
+    free(buf_read);
   }
   pziinit->begin_pos = byte_before_the_zipfile;
   pziinit->number_entry = number_entry_CD;
@@ -846,8 +813,7 @@ int LoadCentralDirectoryRecord(zip64_internal* pziinit)
 
 
 /************************************************************/
-extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def)
-{
+extern zipFile ZEXPORT zipOpen3(const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def) {
     zip64_internal ziinit;
     zip64_internal* zi;
     int err=ZIP_OK;
@@ -905,9 +871,9 @@ extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* gl
     if (err != ZIP_OK)
     {
 #    ifndef NO_ADDFILEINEXISTINGZIP
-        TRYFREE(ziinit.globalcomment);
+        free(ziinit.globalcomment);
 #    endif /* !NO_ADDFILEINEXISTINGZIP*/
-        TRYFREE(zi);
+        free(zi);
         return NULL;
     }
     else
@@ -917,8 +883,7 @@ extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* gl
     }
 }
 
-extern zipFile ZEXPORT zipOpen2 (const char *pathname, int append, zipcharpc* globalcomment, zlib_filefunc_def* pzlib_filefunc32_def)
-{
+extern zipFile ZEXPORT zipOpen2(const char *pathname, int append, zipcharpc* globalcomment, zlib_filefunc_def* pzlib_filefunc32_def) {
     if (pzlib_filefunc32_def != NULL)
     {
         zlib_filefunc64_32_def zlib_filefunc64_32_def_fill;
@@ -929,8 +894,7 @@ extern zipFile ZEXPORT zipOpen2 (const char *pathname, int append, zipcharpc* gl
         return zipOpen3(pathname, append, globalcomment, NULL);
 }
 
-extern zipFile ZEXPORT zipOpen2_64 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def)
-{
+extern zipFile ZEXPORT zipOpen2_64(const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def) {
     if (pzlib_filefunc_def != NULL)
     {
         zlib_filefunc64_32_def zlib_filefunc64_32_def_fill;
@@ -945,18 +909,15 @@ extern zipFile ZEXPORT zipOpen2_64 (const void *pathname, int append, zipcharpc*
 
 
 
-extern zipFile ZEXPORT zipOpen (const char* pathname, int append)
-{
+extern zipFile ZEXPORT zipOpen(const char* pathname, int append) {
     return zipOpen3((const void*)pathname,append,NULL,NULL);
 }
 
-extern zipFile ZEXPORT zipOpen64 (const void* pathname, int append)
-{
+extern zipFile ZEXPORT zipOpen64(const void* pathname, int append) {
     return zipOpen3(pathname,append,NULL,NULL);
 }
 
-int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local)
-{
+local int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local) {
   /* write the local header */
   int err;
   uInt size_filename = (uInt)strlen(filename);
@@ -1034,8 +995,8 @@ int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_ex
       // Remember position of Zip64 extended info for the local file header. (needed when we update size after done with file)
       zi->ci.pos_zip64extrainfo = ZTELL64(zi->z_filefunc,zi->filestream);
 
-      err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)HeaderID,2);
-      err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)DataSize,2);
+      err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)HeaderID,2);
+      err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)DataSize,2);
 
       err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)UncompressedSize,8);
       err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)CompressedSize,8);
@@ -1052,14 +1013,13 @@ int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_ex
  It is not done here because then we need to realloc a new buffer since parameters are 'const' and I want to minimize
  unnecessary allocations.
  */
-extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                         const void* extrafield_local, uInt size_extrafield_local,
-                                         const void* extrafield_global, uInt size_extrafield_global,
-                                         const char* comment, int method, int level, int raw,
-                                         int windowBits,int memLevel, int strategy,
-                                         const char* password, uLong crcForCrypting,
-                                         uLong versionMadeBy, uLong flagBase, int zip64)
-{
+extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                           const void* extrafield_local, uInt size_extrafield_local,
+                                           const void* extrafield_global, uInt size_extrafield_global,
+                                           const char* comment, int method, int level, int raw,
+                                           int windowBits,int memLevel, int strategy,
+                                           const char* password, uLong crcForCrypting,
+                                           uLong versionMadeBy, uLong flagBase, int zip64) {
     zip64_internal* zi;
     uInt size_filename;
     uInt size_comment;
@@ -1083,6 +1043,17 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
       return ZIP_PARAMERROR;
 #endif
 
+    // The filename and comment length must fit in 16 bits.
+    if ((filename!=NULL) && (strlen(filename)>0xffff))
+        return ZIP_PARAMERROR;
+    if ((comment!=NULL) && (strlen(comment)>0xffff))
+        return ZIP_PARAMERROR;
+    // The extra field length must fit in 16 bits. If the member also requires
+    // a Zip64 extra block, that will also need to fit within that 16-bit
+    // length, but that will be checked for later.
+    if ((size_extrafield_local>0xffff) || (size_extrafield_global>0xffff))
+        return ZIP_PARAMERROR;
+
     zi = (zip64_internal*)file;
 
     if (zi->in_opened_file_inzip == 1)
@@ -1262,35 +1233,33 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
     return err;
 }
 
-extern int ZEXPORT zipOpenNewFileInZip4 (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                         const void* extrafield_local, uInt size_extrafield_local,
-                                         const void* extrafield_global, uInt size_extrafield_global,
-                                         const char* comment, int method, int level, int raw,
-                                         int windowBits,int memLevel, int strategy,
-                                         const char* password, uLong crcForCrypting,
-                                         uLong versionMadeBy, uLong flagBase)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 windowBits, memLevel, strategy,
-                                 password, crcForCrypting, versionMadeBy, flagBase, 0);
+extern int ZEXPORT zipOpenNewFileInZip4(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                        const void* extrafield_local, uInt size_extrafield_local,
+                                        const void* extrafield_global, uInt size_extrafield_global,
+                                        const char* comment, int method, int level, int raw,
+                                        int windowBits,int memLevel, int strategy,
+                                        const char* password, uLong crcForCrypting,
+                                        uLong versionMadeBy, uLong flagBase) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   windowBits, memLevel, strategy,
+                                   password, crcForCrypting, versionMadeBy, flagBase, 0);
 }
 
-extern int ZEXPORT zipOpenNewFileInZip3 (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                         const void* extrafield_local, uInt size_extrafield_local,
-                                         const void* extrafield_global, uInt size_extrafield_global,
-                                         const char* comment, int method, int level, int raw,
-                                         int windowBits,int memLevel, int strategy,
-                                         const char* password, uLong crcForCrypting)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 windowBits, memLevel, strategy,
-                                 password, crcForCrypting, VERSIONMADEBY, 0, 0);
+extern int ZEXPORT zipOpenNewFileInZip3(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                        const void* extrafield_local, uInt size_extrafield_local,
+                                        const void* extrafield_global, uInt size_extrafield_global,
+                                        const char* comment, int method, int level, int raw,
+                                        int windowBits,int memLevel, int strategy,
+                                        const char* password, uLong crcForCrypting) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   windowBits, memLevel, strategy,
+                                   password, crcForCrypting, VERSIONMADEBY, 0, 0);
 }
 
 extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* filename, const zip_fileinfo* zipfi,
@@ -1298,70 +1267,64 @@ extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* filename, c
                                          const void* extrafield_global, uInt size_extrafield_global,
                                          const char* comment, int method, int level, int raw,
                                          int windowBits,int memLevel, int strategy,
-                                         const char* password, uLong crcForCrypting, int zip64)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 windowBits, memLevel, strategy,
-                                 password, crcForCrypting, VERSIONMADEBY, 0, zip64);
+                                         const char* password, uLong crcForCrypting, int zip64) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   windowBits, memLevel, strategy,
+                                   password, crcForCrypting, VERSIONMADEBY, 0, zip64);
 }
 
 extern int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char* filename, const zip_fileinfo* zipfi,
                                         const void* extrafield_local, uInt size_extrafield_local,
                                         const void* extrafield_global, uInt size_extrafield_global,
-                                        const char* comment, int method, int level, int raw)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
-                                 NULL, 0, VERSIONMADEBY, 0, 0);
+                                        const char* comment, int method, int level, int raw) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
+                                   NULL, 0, VERSIONMADEBY, 0, 0);
 }
 
 extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                        const void* extrafield_local, uInt size_extrafield_local,
-                                        const void* extrafield_global, uInt size_extrafield_global,
-                                        const char* comment, int method, int level, int raw, int zip64)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
-                                 NULL, 0, VERSIONMADEBY, 0, zip64);
+                                           const void* extrafield_local, uInt size_extrafield_local,
+                                           const void* extrafield_global, uInt size_extrafield_global,
+                                           const char* comment, int method, int level, int raw, int zip64) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
+                                   NULL, 0, VERSIONMADEBY, 0, zip64);
 }
 
-extern int ZEXPORT zipOpenNewFileInZip64 (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                        const void* extrafield_local, uInt size_extrafield_local,
-                                        const void*extrafield_global, uInt size_extrafield_global,
-                                        const char* comment, int method, int level, int zip64)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, 0,
-                                 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
-                                 NULL, 0, VERSIONMADEBY, 0, zip64);
+extern int ZEXPORT zipOpenNewFileInZip64(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                         const void* extrafield_local, uInt size_extrafield_local,
+                                         const void*extrafield_global, uInt size_extrafield_global,
+                                         const char* comment, int method, int level, int zip64) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, 0,
+                                   -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
+                                   NULL, 0, VERSIONMADEBY, 0, zip64);
 }
 
-extern int ZEXPORT zipOpenNewFileInZip (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                        const void* extrafield_local, uInt size_extrafield_local,
-                                        const void*extrafield_global, uInt size_extrafield_global,
-                                        const char* comment, int method, int level)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, 0,
-                                 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
-                                 NULL, 0, VERSIONMADEBY, 0, 0);
+extern int ZEXPORT zipOpenNewFileInZip(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                       const void* extrafield_local, uInt size_extrafield_local,
+                                       const void*extrafield_global, uInt size_extrafield_global,
+                                       const char* comment, int method, int level) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, 0,
+                                   -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
+                                   NULL, 0, VERSIONMADEBY, 0, 0);
 }
 
-local int zip64FlushWriteBuffer(zip64_internal* zi)
-{
+local int zip64FlushWriteBuffer(zip64_internal* zi) {
     int err=ZIP_OK;
 
     if (zi->ci.encrypt != 0)
@@ -1399,8 +1362,7 @@ local int zip64FlushWriteBuffer(zip64_internal* zi)
     return err;
 }
 
-extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned int len)
-{
+extern int ZEXPORT zipWriteInFileInZip(zipFile file, const void* buf, unsigned int len) {
     zip64_internal* zi;
     int err=ZIP_OK;
 
@@ -1450,7 +1412,7 @@ extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned in
     else
 #endif
     {
-      zi->ci.stream.next_in = (Bytef*)buf;
+      zi->ci.stream.next_in = (Bytef*)(uintptr_t)buf;
       zi->ci.stream.avail_in = len;
 
       while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0))
@@ -1471,11 +1433,6 @@ extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned in
           {
               uLong uTotalOutBefore = zi->ci.stream.total_out;
               err=deflate(&zi->ci.stream,  Z_NO_FLUSH);
-              if(uTotalOutBefore > zi->ci.stream.total_out)
-              {
-                int bBreak = 0;
-                bBreak++;
-              }
 
               zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ;
           }
@@ -1506,17 +1463,15 @@ extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned in
     return err;
 }
 
-extern int ZEXPORT zipCloseFileInZipRaw (zipFile file, uLong uncompressed_size, uLong crc32)
-{
+extern int ZEXPORT zipCloseFileInZipRaw(zipFile file, uLong uncompressed_size, uLong crc32) {
     return zipCloseFileInZipRaw64 (file, uncompressed_size, crc32);
 }
 
-extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_size, uLong crc32)
-{
+extern int ZEXPORT zipCloseFileInZipRaw64(zipFile file, ZPOS64_T uncompressed_size, uLong crc32) {
     zip64_internal* zi;
     ZPOS64_T compressed_size;
     uLong invalidValue = 0xffffffff;
-    short datasize = 0;
+    unsigned datasize = 0;
     int err=ZIP_OK;
 
     if (file == NULL)
@@ -1653,7 +1608,7 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
 
       if((uLong)(datasize + 4) > zi->ci.size_centralExtraFree)
       {
-        // we can not write more data to the buffer that we have room for.
+        // we cannot write more data to the buffer that we have room for.
         return ZIP_BADZIPFILE;
       }
 
@@ -1747,13 +1702,11 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
     return err;
 }
 
-extern int ZEXPORT zipCloseFileInZip (zipFile file)
-{
+extern int ZEXPORT zipCloseFileInZip(zipFile file) {
     return zipCloseFileInZipRaw (file,0,0);
 }
 
-int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip)
-{
+local int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip) {
   int err = ZIP_OK;
   ZPOS64_T pos = zip64eocd_pos_inzip - zi->add_position_when_writing_offset;
 
@@ -1774,8 +1727,7 @@ int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eo
     return err;
 }
 
-int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
-{
+local int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) {
   int err = ZIP_OK;
 
   uLong Zip64DataSize = 44;
@@ -1813,8 +1765,8 @@ int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centra
   }
   return err;
 }
-int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
-{
+
+local int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) {
   int err = ZIP_OK;
 
   /*signature*/
@@ -1861,8 +1813,7 @@ int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir,
    return err;
 }
 
-int Write_GlobalComment(zip64_internal* zi, const char* global_comment)
-{
+local int Write_GlobalComment(zip64_internal* zi, const char* global_comment) {
   int err = ZIP_OK;
   uInt size_global_comment = 0;
 
@@ -1879,8 +1830,7 @@ int Write_GlobalComment(zip64_internal* zi, const char* global_comment)
   return err;
 }
 
-extern int ZEXPORT zipClose (zipFile file, const char* global_comment)
-{
+extern int ZEXPORT zipClose(zipFile file, const char* global_comment) {
     zip64_internal* zi;
     int err = 0;
     uLong size_centraldir = 0;
@@ -1922,7 +1872,7 @@ extern int ZEXPORT zipClose (zipFile file, const char* global_comment)
     free_linkedlist(&(zi->central_dir));
 
     pos = centraldir_pos_inzip - zi->add_position_when_writing_offset;
-    if(pos >= 0xffffffff || zi->number_entry > 0xFFFF)
+    if(pos >= 0xffffffff || zi->number_entry >= 0xFFFF)
     {
       ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream);
       Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
@@ -1941,15 +1891,14 @@ extern int ZEXPORT zipClose (zipFile file, const char* global_comment)
             err = ZIP_ERRNO;
 
 #ifndef NO_ADDFILEINEXISTINGZIP
-    TRYFREE(zi->globalcomment);
+    free(zi->globalcomment);
 #endif
-    TRYFREE(zi);
+    free(zi);
 
     return err;
 }
 
-extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHeader)
-{
+extern int ZEXPORT zipRemoveExtraInfoBlock(char* pData, int* dataLen, short sHeader) {
   char* p = pData;
   int size = 0;
   char* pNewHeader;
@@ -1959,10 +1908,10 @@ extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHe
 
   int retVal = ZIP_OK;
 
-  if(pData == NULL || *dataLen < 4)
+  if(pData == NULL || dataLen == NULL || *dataLen < 4)
     return ZIP_PARAMERROR;
 
-  pNewHeader = (char*)ALLOC(*dataLen);
+  pNewHeader = (char*)ALLOC((unsigned)*dataLen);
   pTmp = pNewHeader;
 
   while(p < (pData + *dataLen))
@@ -2001,7 +1950,7 @@ extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHe
   else
     retVal = ZIP_ERRNO;
 
-  TRYFREE(pNewHeader);
+  free(pNewHeader);
 
   return retVal;
 }
diff --git a/libs/zlib/contrib/minizip/zip.h b/libs/zlib/contrib/minizip/zip.h
index 8aaebb6234..3e230d3405 100644
--- a/libs/zlib/contrib/minizip/zip.h
+++ b/libs/zlib/contrib/minizip/zip.h
@@ -88,12 +88,12 @@ typedef voidp zipFile;
 /* tm_zip contain date/time info */
 typedef struct tm_zip_s
 {
-    uInt tm_sec;            /* seconds after the minute - [0,59] */
-    uInt tm_min;            /* minutes after the hour - [0,59] */
-    uInt tm_hour;           /* hours since midnight - [0,23] */
-    uInt tm_mday;           /* day of the month - [1,31] */
-    uInt tm_mon;            /* months since January - [0,11] */
-    uInt tm_year;           /* years - [1980..2044] */
+    int tm_sec;             /* seconds after the minute - [0,59] */
+    int tm_min;             /* minutes after the hour - [0,59] */
+    int tm_hour;            /* hours since midnight - [0,23] */
+    int tm_mday;            /* day of the month - [1,31] */
+    int tm_mon;             /* months since January - [0,11] */
+    int tm_year;            /* years - [1980..2044] */
 } tm_zip;
 
 typedef struct
@@ -113,8 +113,8 @@ typedef const char* zipcharpc;
 #define APPEND_STATUS_CREATEAFTER   (1)
 #define APPEND_STATUS_ADDINZIP      (2)
 
-extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append));
-extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append));
+extern zipFile ZEXPORT zipOpen(const char *pathname, int append);
+extern zipFile ZEXPORT zipOpen64(const void *pathname, int append);
 /*
   Create a zipfile.
      pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
@@ -131,50 +131,55 @@ extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append));
 
 /* Note : there is no delete function into a zipfile.
    If you want delete file into a zipfile, you must open a zipfile, and create another
-   Of couse, you can use RAW reading and writing to copy the file you did not want delte
+   Of course, you can use RAW reading and writing to copy the file you did not want delete
 */
 
-extern zipFile ZEXPORT zipOpen2 OF((const char *pathname,
-                                   int append,
-                                   zipcharpc* globalcomment,
-                                   zlib_filefunc_def* pzlib_filefunc_def));
+extern zipFile ZEXPORT zipOpen2(const char *pathname,
+                                int append,
+                                zipcharpc* globalcomment,
+                                zlib_filefunc_def* pzlib_filefunc_def);
 
-extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname,
+extern zipFile ZEXPORT zipOpen2_64(const void *pathname,
                                    int append,
                                    zipcharpc* globalcomment,
-                                   zlib_filefunc64_def* pzlib_filefunc_def));
-
-extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file,
-                       const char* filename,
-                       const zip_fileinfo* zipfi,
-                       const void* extrafield_local,
-                       uInt size_extrafield_local,
-                       const void* extrafield_global,
-                       uInt size_extrafield_global,
-                       const char* comment,
-                       int method,
-                       int level));
-
-extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file,
-                       const char* filename,
-                       const zip_fileinfo* zipfi,
-                       const void* extrafield_local,
-                       uInt size_extrafield_local,
-                       const void* extrafield_global,
-                       uInt size_extrafield_global,
-                       const char* comment,
-                       int method,
-                       int level,
-                       int zip64));
+                                   zlib_filefunc64_def* pzlib_filefunc_def);
+
+extern zipFile ZEXPORT zipOpen3(const void *pathname,
+                                int append,
+                                zipcharpc* globalcomment,
+                                zlib_filefunc64_32_def* pzlib_filefunc64_32_def);
+
+extern int ZEXPORT zipOpenNewFileInZip(zipFile file,
+                                       const char* filename,
+                                       const zip_fileinfo* zipfi,
+                                       const void* extrafield_local,
+                                       uInt size_extrafield_local,
+                                       const void* extrafield_global,
+                                       uInt size_extrafield_global,
+                                       const char* comment,
+                                       int method,
+                                       int level);
+
+extern int ZEXPORT zipOpenNewFileInZip64(zipFile file,
+                                         const char* filename,
+                                         const zip_fileinfo* zipfi,
+                                         const void* extrafield_local,
+                                         uInt size_extrafield_local,
+                                         const void* extrafield_global,
+                                         uInt size_extrafield_global,
+                                         const char* comment,
+                                         int method,
+                                         int level,
+                                         int zip64);
 
 /*
   Open a file in the ZIP for writing.
   filename : the filename in zip (if NULL, '-' without quote will be used
   *zipfi contain supplemental information
   if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local
-    contains the extrafield data the the local header
+    contains the extrafield data for the local header
   if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global
-    contains the extrafield data the the local header
+    contains the extrafield data for the global header
   if comment != NULL, comment contain the comment string
   method contain the compression method (0 for store, Z_DEFLATED for deflate)
   level contain the level of compression (can be Z_DEFAULT_COMPRESSION)
@@ -184,70 +189,69 @@ extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file,
 */
 
 
-extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw));
-
-
-extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int zip64));
+extern int ZEXPORT zipOpenNewFileInZip2(zipFile file,
+                                        const char* filename,
+                                        const zip_fileinfo* zipfi,
+                                        const void* extrafield_local,
+                                        uInt size_extrafield_local,
+                                        const void* extrafield_global,
+                                        uInt size_extrafield_global,
+                                        const char* comment,
+                                        int method,
+                                        int level,
+                                        int raw);
+
+
+extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file,
+                                           const char* filename,
+                                           const zip_fileinfo* zipfi,
+                                           const void* extrafield_local,
+                                           uInt size_extrafield_local,
+                                           const void* extrafield_global,
+                                           uInt size_extrafield_global,
+                                           const char* comment,
+                                           int method,
+                                           int level,
+                                           int raw,
+                                           int zip64);
 /*
   Same than zipOpenNewFileInZip, except if raw=1, we write raw file
  */
 
-extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int windowBits,
-                                            int memLevel,
-                                            int strategy,
-                                            const char* password,
-                                            uLong crcForCrypting));
-
-extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int windowBits,
-                                            int memLevel,
-                                            int strategy,
-                                            const char* password,
-                                            uLong crcForCrypting,
-                                            int zip64
-                                            ));
+extern int ZEXPORT zipOpenNewFileInZip3(zipFile file,
+                                        const char* filename,
+                                        const zip_fileinfo* zipfi,
+                                        const void* extrafield_local,
+                                        uInt size_extrafield_local,
+                                        const void* extrafield_global,
+                                        uInt size_extrafield_global,
+                                        const char* comment,
+                                        int method,
+                                        int level,
+                                        int raw,
+                                        int windowBits,
+                                        int memLevel,
+                                        int strategy,
+                                        const char* password,
+                                        uLong crcForCrypting);
+
+extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file,
+                                           const char* filename,
+                                           const zip_fileinfo* zipfi,
+                                           const void* extrafield_local,
+                                           uInt size_extrafield_local,
+                                           const void* extrafield_global,
+                                           uInt size_extrafield_global,
+                                           const char* comment,
+                                           int method,
+                                           int level,
+                                           int raw,
+                                           int windowBits,
+                                           int memLevel,
+                                           int strategy,
+                                           const char* password,
+                                           uLong crcForCrypting,
+                                           int zip64);
 
 /*
   Same than zipOpenNewFileInZip2, except
@@ -256,47 +260,45 @@ extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file,
     crcForCrypting : crc of file to compress (needed for crypting)
  */
 
-extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int windowBits,
-                                            int memLevel,
-                                            int strategy,
-                                            const char* password,
-                                            uLong crcForCrypting,
-                                            uLong versionMadeBy,
-                                            uLong flagBase
-                                            ));
-
-
-extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int windowBits,
-                                            int memLevel,
-                                            int strategy,
-                                            const char* password,
-                                            uLong crcForCrypting,
-                                            uLong versionMadeBy,
-                                            uLong flagBase,
-                                            int zip64
-                                            ));
+extern int ZEXPORT zipOpenNewFileInZip4(zipFile file,
+                                        const char* filename,
+                                        const zip_fileinfo* zipfi,
+                                        const void* extrafield_local,
+                                        uInt size_extrafield_local,
+                                        const void* extrafield_global,
+                                        uInt size_extrafield_global,
+                                        const char* comment,
+                                        int method,
+                                        int level,
+                                        int raw,
+                                        int windowBits,
+                                        int memLevel,
+                                        int strategy,
+                                        const char* password,
+                                        uLong crcForCrypting,
+                                        uLong versionMadeBy,
+                                        uLong flagBase);
+
+
+extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file,
+                                           const char* filename,
+                                           const zip_fileinfo* zipfi,
+                                           const void* extrafield_local,
+                                           uInt size_extrafield_local,
+                                           const void* extrafield_global,
+                                           uInt size_extrafield_global,
+                                           const char* comment,
+                                           int method,
+                                           int level,
+                                           int raw,
+                                           int windowBits,
+                                           int memLevel,
+                                           int strategy,
+                                           const char* password,
+                                           uLong crcForCrypting,
+                                           uLong versionMadeBy,
+                                           uLong flagBase,
+                                           int zip64);
 /*
   Same than zipOpenNewFileInZip4, except
     versionMadeBy : value for Version made by field
@@ -304,25 +306,25 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file,
  */
 
 
-extern int ZEXPORT zipWriteInFileInZip OF((zipFile file,
-                       const void* buf,
-                       unsigned len));
+extern int ZEXPORT zipWriteInFileInZip(zipFile file,
+                                       const void* buf,
+                                       unsigned len);
 /*
   Write data in the zipfile
 */
 
-extern int ZEXPORT zipCloseFileInZip OF((zipFile file));
+extern int ZEXPORT zipCloseFileInZip(zipFile file);
 /*
   Close the current file in the zipfile
 */
 
-extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file,
-                                            uLong uncompressed_size,
-                                            uLong crc32));
+extern int ZEXPORT zipCloseFileInZipRaw(zipFile file,
+                                        uLong uncompressed_size,
+                                        uLong crc32);
 
-extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file,
-                                            ZPOS64_T uncompressed_size,
-                                            uLong crc32));
+extern int ZEXPORT zipCloseFileInZipRaw64(zipFile file,
+                                          ZPOS64_T uncompressed_size,
+                                          uLong crc32);
 
 /*
   Close the current file in the zipfile, for file opened with
@@ -330,14 +332,14 @@ extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file,
   uncompressed_size and crc32 are value for the uncompressed size
 */
 
-extern int ZEXPORT zipClose OF((zipFile file,
-                const char* global_comment));
+extern int ZEXPORT zipClose(zipFile file,
+                            const char* global_comment);
 /*
   Close the zipfile
 */
 
 
-extern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader));
+extern int ZEXPORT zipRemoveExtraInfoBlock(char* pData, int* dataLen, short sHeader);
 /*
   zipRemoveExtraInfoBlock -  Added by Mathias Svensson
 
diff --git a/libs/zlib/contrib/nuget/nuget.csproj b/libs/zlib/contrib/nuget/nuget.csproj
new file mode 100644
index 0000000000..68627f034a
--- /dev/null
+++ b/libs/zlib/contrib/nuget/nuget.csproj
@@ -0,0 +1,43 @@
+<Project Sdk="Microsoft.Build.NoTargets/3.5.6">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <PackageId>madler.zlib.redist</PackageId>
+    <PackageId Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(PackageId).win</PackageId>
+    <PackageId Condition="$([MSBuild]::IsOSPlatform('Linux'))">$(PackageId).linux</PackageId>
+    <PackageId Condition="$([MSBuild]::IsOSPlatform('OSX'))">$(PackageId).osx</PackageId>
+    <Copyright>(C) 1995-2024 Jean-loup Gailly and Mark Adler</Copyright>
+    <version>1.3.1</version>
+    <PackageDescription>NuGet Package for consuming native builds of zlib into .NET without complexity.</PackageDescription>
+    <!--
+        Warns about not having any lib or ref assemblies (.NET Assemblies) in those directories.
+        Native only packages that is to be consumed in .NET should not require these.
+    -->
+    <NoWarn>NU5128</NoWarn>
+    <PackageOutputPath>$(MSBuildProjectDirectory)</PackageOutputPath>
+    <Authors>Jean-loup Gailly and Mark Adler</Authors>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <None Include="../../LICENSE" Pack="true" PackagePath="" />
+    <!-- Package up Windows builds. -->
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/x86/ZlibDll$(Configuration)/zlibwapi.dll" Pack="true" PackagePath="runtimes/win-x86/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/x64/ZlibDll$(Configuration)/zlibwapi.dll" Pack="true" PackagePath="runtimes/win-x64/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/arm/ZlibDll$(Configuration)/zlibwapi.dll" Pack="true" PackagePath="runtimes/win-arm/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/arm64/ZlibDll$(Configuration)/zlibwapi.dll" Pack="true" PackagePath="runtimes/win-arm64/native" />
+    <!-- Include debug symbols as well as we never know if they might actually be needed in the future. -->
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/x86/ZlibDll$(Configuration)/zlibwapi.pdb" Pack="true" PackagePath="runtimes/win-x86/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/x64/ZlibDll$(Configuration)/zlibwapi.pdb" Pack="true" PackagePath="runtimes/win-x64/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/arm/ZlibDll$(Configuration)/zlibwapi.pdb" Pack="true" PackagePath="runtimes/win-arm/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/arm64/ZlibDll$(Configuration)/zlibwapi.pdb" Pack="true" PackagePath="runtimes/win-arm64/native" />
+    <!-- Package up Linux builds. -->
+    <None Condition="$([MSBuild]::IsOSPlatform('Linux'))" Include="./linux-x86/libz.so" Pack="true" PackagePath="runtimes/linux-x86/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Linux'))" Include="./linux-x64/libz.so" Pack="true" PackagePath="runtimes/linux-x64/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Linux'))" Include="./linux-arm/libz.so" Pack="true" PackagePath="runtimes/linux-arm/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Linux'))" Include="./linux-arm64/libz.so" Pack="true" PackagePath="runtimes/linux-arm64/native" />
+    <!-- Package up MacOS builds. -->
+    <None Condition="$([MSBuild]::IsOSPlatform('OSX'))" Include="./osx-x64/libz.dylib" Pack="true" PackagePath="runtimes/osx-x64/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('OSX'))" Include="./osx-arm64/libz.dylib" Pack="true" PackagePath="runtimes/osx-arm64/native" />
+  </ItemGroup>
+
+</Project>
diff --git a/libs/zlib/contrib/nuget/nuget.sln b/libs/zlib/contrib/nuget/nuget.sln
new file mode 100644
index 0000000000..46ee8deab8
--- /dev/null
+++ b/libs/zlib/contrib/nuget/nuget.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nuget", "nuget.csproj", "{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+EndGlobal
diff --git a/libs/zlib/contrib/pascal/zlibpas.pas b/libs/zlib/contrib/pascal/zlibpas.pas
index a0dff11b50..0cf0e7b82d 100644
--- a/libs/zlib/contrib/pascal/zlibpas.pas
+++ b/libs/zlib/contrib/pascal/zlibpas.pas
@@ -10,7 +10,7 @@ unit zlibpas;
 interface
 
 const
-  ZLIB_VERSION = '1.2.11';
+  ZLIB_VERSION = '1.3.1';
   ZLIB_VERNUM  = $12a0;
 
 type
diff --git a/libs/zlib/contrib/puff/README b/libs/zlib/contrib/puff/README
index bbc4cb595e..d8192c7874 100644
--- a/libs/zlib/contrib/puff/README
+++ b/libs/zlib/contrib/puff/README
@@ -38,7 +38,7 @@ Then you can call puff() to decompress a deflate stream that is in memory in
 its entirety at source, to a sufficiently sized block of memory for the
 decompressed data at dest.  puff() is the only external symbol in puff.c  The
 only C library functions that puff.c needs are setjmp() and longjmp(), which
-are used to simplify error checking in the code to improve readabilty.  puff.c
+are used to simplify error checking in the code to improve readability.  puff.c
 does no memory allocation, and uses less than 2K bytes off of the stack.
 
 If destlen is not enough space for the uncompressed data, then inflate will
diff --git a/libs/zlib/contrib/puff/puff.c b/libs/zlib/contrib/puff/puff.c
index c6c90d7142..d759825ab1 100644
--- a/libs/zlib/contrib/puff/puff.c
+++ b/libs/zlib/contrib/puff/puff.c
@@ -43,7 +43,7 @@
  *                      - Use pointers instead of long to specify source and
  *                        destination sizes to avoid arbitrary 4 GB limits
  * 1.2  17 Mar 2002     - Add faster version of decode(), doubles speed (!),
- *                        but leave simple version for readabilty
+ *                        but leave simple version for readability
  *                      - Make sure invalid distances detected if pointers
  *                        are 16 bits
  *                      - Fix fixed codes table error
@@ -593,10 +593,10 @@ local int fixed(struct state *s)
  *   provided for each of the literal/length symbols, and for each of the
  *   distance symbols.
  *
- * - If a symbol is not used in the block, this is represented by a zero as
- *   as the code length.  This does not mean a zero-length code, but rather
- *   that no code should be created for this symbol.  There is no way in the
- *   deflate format to represent a zero-length code.
+ * - If a symbol is not used in the block, this is represented by a zero as the
+ *   code length.  This does not mean a zero-length code, but rather that no
+ *   code should be created for this symbol.  There is no way in the deflate
+ *   format to represent a zero-length code.
  *
  * - The maximum number of bits in a code is 15, so the possible lengths for
  *   any code are 1..15.
@@ -624,7 +624,7 @@ local int fixed(struct state *s)
  *   are themselves compressed using Huffman codes and run-length encoding.  In
  *   the list of code lengths, a 0 symbol means no code, a 1..15 symbol means
  *   that length, and the symbols 16, 17, and 18 are run-length instructions.
- *   Each of 16, 17, and 18 are follwed by extra bits to define the length of
+ *   Each of 16, 17, and 18 are followed by extra bits to define the length of
  *   the run.  16 copies the last length 3 to 6 times.  17 represents 3 to 10
  *   zero lengths, and 18 represents 11 to 138 zero lengths.  Unused symbols
  *   are common, hence the special coding for zero lengths.
diff --git a/libs/zlib/contrib/puff/pufftest.c b/libs/zlib/contrib/puff/pufftest.c
index 776481488c..5f72ecc827 100644
--- a/libs/zlib/contrib/puff/pufftest.c
+++ b/libs/zlib/contrib/puff/pufftest.c
@@ -143,7 +143,7 @@ int main(int argc, char **argv)
                                      len - sourcelen);
     }
 
-    /* if requested, inflate again and write decompressd data to stdout */
+    /* if requested, inflate again and write decompressed data to stdout */
     if (put && ret == 0) {
         if (fail)
             destlen >>= 1;
diff --git a/libs/zlib/contrib/testzlib/testzlib.c b/libs/zlib/contrib/testzlib/testzlib.c
index 8626c92ad1..c4b0148a2b 100644
--- a/libs/zlib/contrib/testzlib/testzlib.c
+++ b/libs/zlib/contrib/testzlib/testzlib.c
@@ -169,7 +169,7 @@ int main(int argc, char *argv[])
         printf("error reading %s\n",argv[1]);
         return 1;
     }
-    else printf("file %s read, %u bytes\n",argv[1],lFileSize);
+    else printf("file %s read, %ld bytes\n",argv[1],lFileSize);
 
     if (argc>=3)
         BlockSizeCompress=atol(argv[2]);
diff --git a/libs/zlib/contrib/untgz/untgz.c b/libs/zlib/contrib/untgz/untgz.c
index 2c391e5986..78579211fe 100644
--- a/libs/zlib/contrib/untgz/untgz.c
+++ b/libs/zlib/contrib/untgz/untgz.c
@@ -4,6 +4,22 @@
  * written by Pedro A. Aranda Gutierrez <paag@tid.es>
  * adaptation to Unix by Jean-loup Gailly <jloup@gzip.org>
  * various fixes by Cosmin Truta <cosmint@cs.ubbcluj.ro>
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
  */
 
 #include <stdio.h>
@@ -14,15 +30,10 @@
 
 #include "zlib.h"
 
-#ifdef unix
-#  include <unistd.h>
-#else
+#ifdef _WIN32
 #  include <direct.h>
 #  include <io.h>
-#endif
-
-#ifdef WIN32
-#include <windows.h>
+#  include <windows.h>
 #  ifndef F_OK
 #    define F_OK  0
 #  endif
@@ -33,6 +44,8 @@
 #    define strdup(str)         _strdup(str)
 #  endif
 #else
+#  include <sys/stat.h>
+#  include <unistd.h>
 #  include <utime.h>
 #endif
 
@@ -102,28 +115,14 @@ struct attr_item
 
 enum { TGZ_EXTRACT, TGZ_LIST, TGZ_INVALID };
 
-char *TGZfname          OF((const char *));
-void TGZnotfound        OF((const char *));
-
-int getoct              OF((char *, int));
-char *strtime           OF((time_t *));
-int setfiletime         OF((char *, time_t));
-void push_attr          OF((struct attr_item **, char *, int, time_t));
-void restore_attr       OF((struct attr_item **));
-
-int ExprMatch           OF((char *, char *));
-
-int makedir             OF((char *));
-int matchname           OF((int, int, char **, char *));
-
-void error              OF((const char *));
-int tar                 OF((gzFile, int, int, int, char **));
-
-void help               OF((int));
-int main                OF((int, char **));
-
 char *prog;
 
+void error(const char *msg)
+{
+  fprintf(stderr, "%s: %s\n", prog, msg);
+  exit(1);
+}
+
 const char *TGZsuffix[] = { "\0", ".tar", ".tar.gz", ".taz", ".tgz", NULL };
 
 /* return the file name of the TGZ archive */
@@ -205,7 +204,7 @@ char *strtime (time_t *t)
 
 int setfiletime (char *fname,time_t ftime)
 {
-#ifdef WIN32
+#ifdef _WIN32
   static int isWinNT = -1;
   SYSTEMTIME st;
   FILETIME locft, modft;
@@ -590,12 +589,6 @@ void help(int exitval)
   exit(exitval);
 }
 
-void error(const char *msg)
-{
-  fprintf(stderr, "%s: %s\n", prog, msg);
-  exit(1);
-}
-
 
 /* ============================================================ */
 
@@ -608,7 +601,7 @@ int main(int argc,char **argv)
     int         action = TGZ_EXTRACT;
     int         arg = 1;
     char        *TGZfile;
-    gzFile      *f;
+    gzFile      f;
 
     prog = strrchr(argv[0],'\\');
     if (prog == NULL)
diff --git a/libs/zlib/contrib/vstudio/readme.txt b/libs/zlib/contrib/vstudio/readme.txt
index 48cccc0d2a..061bbc0e2d 100644
--- a/libs/zlib/contrib/vstudio/readme.txt
+++ b/libs/zlib/contrib/vstudio/readme.txt
@@ -1,4 +1,4 @@
-Building instructions for the DLL versions of Zlib 1.2.11
+Building instructions for the DLL versions of Zlib 1.3.1
 ========================================================
 
 This directory contains projects that build zlib and minizip using
@@ -17,9 +17,6 @@ More information can be found at this site.
 Build instructions for Visual Studio 2008 (32 bits or 64 bits)
 --------------------------------------------------------------
 - Decompress current zlib, including all contrib/* files
-- Compile assembly code (with Visual Studio Command Prompt) by running:
-   bld_ml64.bat (in contrib\masmx64)
-   bld_ml32.bat (in contrib\masmx86)
 - Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008
 - Or run: vcbuild /rebuild contrib\vstudio\vc9\zlibvc.sln "Release|Win32"
 
@@ -43,6 +40,12 @@ Build instructions for Visual Studio 2015 (32 bits or 64 bits)
 - Decompress current zlib, including all contrib/* files
 - Open contrib\vstudio\vc14\zlibvc.sln with Microsoft Visual C++ 2015
 
+Build instructions for Visual Studio 2022 (64 bits)
+--------------------------------------------------------------
+- Decompress current zlib, including all contrib/* files
+- Open contrib\vstudio\vc143\zlibvc.sln with Microsoft Visual C++ 2022
+
+
 
 Important
 ---------
@@ -74,5 +77,5 @@ Additional notes
 Gilles Vollant
 info@winimage.com
 
-Visual Studio 2013 and 2015 Projects from Sean Hunt
+Visual Studio 2013, 2015, and 2022 Projects from Sean Hunt
 seandhunt_7@yahoo.com
diff --git a/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters
index 0b2a3de2df..e53556a638 100644
--- a/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters
@@ -3,7 +3,7 @@
   <ItemGroup>
     <Filter Include="Source Files">
       <UniqueIdentifier>{048af943-022b-4db6-beeb-a54c34774ee2}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat</Extensions>
     </Filter>
     <Filter Include="Header Files">
       <UniqueIdentifier>{c1d600d2-888f-4aea-b73e-8b0dd9befa0c}</UniqueIdentifier>
diff --git a/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user
deleted file mode 100644
index 695b5c78b9..0000000000
--- a/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters
index dd73cd3132..bd18d715e7 100644
--- a/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters
@@ -3,7 +3,7 @@
   <ItemGroup>
     <Filter Include="Source Files">
       <UniqueIdentifier>{c0419b40-bf50-40da-b153-ff74215b79de}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat</Extensions>
     </Filter>
     <Filter Include="Header Files">
       <UniqueIdentifier>{bb87b070-735b-478e-92ce-7383abb2f36c}</UniqueIdentifier>
diff --git a/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.user
deleted file mode 100644
index 695b5c78b9..0000000000
--- a/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj
index 9088d176f8..0e668f7643 100644
--- a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj
@@ -181,7 +181,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -194,7 +194,7 @@
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
@@ -241,7 +241,7 @@
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -254,7 +254,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
@@ -269,14 +269,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
@@ -352,14 +352,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
@@ -398,14 +398,6 @@
     <ClCompile Include="..\..\..\crc32.c" />
     <ClCompile Include="..\..\..\deflate.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters
index 249daa89ca..3cf52ee3ed 100644
--- a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters
@@ -3,7 +3,7 @@
   <ItemGroup>
     <Filter Include="Source Files">
       <UniqueIdentifier>{c1f6a2e3-5da5-4955-8653-310d3efe05a9}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat</Extensions>
     </Filter>
     <Filter Include="Header Files">
       <UniqueIdentifier>{c2aaffdc-2c95-4d6f-8466-4bec5890af2c}</UniqueIdentifier>
@@ -30,9 +30,6 @@
     <ClCompile Include="..\..\..\infback.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c">
       <Filter>Source Files</Filter>
     </ClCompile>
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user
deleted file mode 100644
index 695b5c78b9..0000000000
--- a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters
index 53a8693bb0..aeb550e9c3 100644
--- a/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters
@@ -3,7 +3,7 @@
   <ItemGroup>
     <Filter Include="Source Files">
       <UniqueIdentifier>{fa61a89f-93fc-4c89-b29e-36224b7592f4}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat</Extensions>
     </Filter>
     <Filter Include="Header Files">
       <UniqueIdentifier>{d4b85da0-2ba2-4934-b57f-e2584e3848ee}</UniqueIdentifier>
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user
deleted file mode 100644
index 695b5c78b9..0000000000
--- a/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/zlib.rc b/libs/zlib/contrib/vstudio/vc10/zlib.rc
index c4e4b016e9..a55f341c74 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc10/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj
index b9f2bbe5f0..c7ed09e519 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj
@@ -160,7 +160,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -182,16 +182,12 @@
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -210,19 +206,15 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -252,7 +244,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -274,10 +266,6 @@ bld_ml32.bat</Command>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -285,7 +273,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -314,8 +302,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -334,14 +322,10 @@ bld_ml64.bat</Command>
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -349,7 +333,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -379,7 +363,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -409,7 +393,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -443,14 +427,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters
index c8c7f7ea39..ba7e23d325 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters
@@ -33,9 +33,6 @@
     <ClCompile Include="..\..\..\infback.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c">
       <Filter>Source Files</Filter>
     </ClCompile>
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user
deleted file mode 100644
index 695b5c78b9..0000000000
--- a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibvc.def b/libs/zlib/contrib/vstudio/vc10/zlibvc.def
index f876c3bcab..53947cc31b 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc10/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj
index 6ff9ddb077..19dfc35bf3 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj
@@ -197,8 +197,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -219,7 +219,7 @@
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -229,10 +229,6 @@
       <DataExecutionPrevention>
       </DataExecutionPrevention>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <Midl>
@@ -244,7 +240,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -288,8 +284,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -312,7 +308,7 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -322,10 +318,6 @@ bld_ml32.bat</Command>
       <DataExecutionPrevention>
       </DataExecutionPrevention>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Midl>
@@ -337,8 +329,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -358,7 +350,7 @@ bld_ml32.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -366,10 +358,6 @@ bld_ml32.bat</Command>
       <SubSystem>Windows</SubSystem>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -381,7 +369,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -424,7 +412,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -465,7 +453,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -510,8 +498,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -533,7 +521,7 @@ bld_ml64.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -541,10 +529,6 @@ bld_ml64.bat</Command>
       <SubSystem>Windows</SubSystem>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -556,7 +540,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -601,14 +585,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters
index 180b71cd61..67c444ab9a 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters
@@ -42,9 +42,6 @@
     <ClCompile Include="..\..\..\infback.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c">
       <Filter>Source Files</Filter>
     </ClCompile>
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user
deleted file mode 100644
index 695b5c78b9..0000000000
--- a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc11/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc11/testzlib.vcxproj
index 6d55954013..c6198c1fd2 100644
--- a/libs/zlib/contrib/vstudio/vc11/testzlib.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc11/testzlib.vcxproj
@@ -187,7 +187,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -200,7 +200,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
@@ -247,7 +247,7 @@
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -260,7 +260,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
@@ -275,14 +275,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
@@ -358,14 +358,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
@@ -404,14 +404,6 @@
     <ClCompile Include="..\..\..\crc32.c" />
     <ClCompile Include="..\..\..\deflate.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc11/zlib.rc b/libs/zlib/contrib/vstudio/vc11/zlib.rc
index c4e4b016e9..a55f341c74 100644
--- a/libs/zlib/contrib/vstudio/vc11/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc11/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc11/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc11/zlibstat.vcxproj
index 806b76a88b..86fb1c8bf6 100644
--- a/libs/zlib/contrib/vstudio/vc11/zlibstat.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc11/zlibstat.vcxproj
@@ -167,7 +167,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -193,8 +193,8 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -213,7 +213,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -221,7 +221,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -251,7 +251,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -280,7 +280,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -309,8 +309,8 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -329,7 +329,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -340,7 +340,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -370,7 +370,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -400,7 +400,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -434,14 +434,6 @@
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc11/zlibvc.def b/libs/zlib/contrib/vstudio/vc11/zlibvc.def
index f876c3bcab..53947cc31b 100644
--- a/libs/zlib/contrib/vstudio/vc11/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc11/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj
index c65b95fdbb..fc8cd9c176 100644
--- a/libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj
@@ -204,8 +204,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -226,7 +226,7 @@
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -240,10 +240,6 @@
       </DataExecutionPrevention>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <Midl>
@@ -255,7 +251,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -303,8 +299,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -327,7 +323,7 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -341,10 +337,6 @@ bld_ml32.bat</Command>
       </DataExecutionPrevention>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Midl>
@@ -356,8 +348,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -377,7 +369,7 @@ bld_ml32.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -389,10 +381,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\contrib\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -404,7 +392,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -447,7 +435,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -492,7 +480,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -537,8 +525,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -560,7 +548,7 @@ bld_ml64.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -572,10 +560,6 @@ bld_ml64.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -587,7 +571,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -632,14 +616,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc12/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc12/testzlib.vcxproj
index 64b2cbe34a..41303c0af4 100644
--- a/libs/zlib/contrib/vstudio/vc12/testzlib.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc12/testzlib.vcxproj
@@ -190,7 +190,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -203,7 +203,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
@@ -250,7 +250,7 @@
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -263,7 +263,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
@@ -279,14 +279,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
@@ -362,14 +362,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
@@ -408,14 +408,6 @@
     <ClCompile Include="..\..\..\crc32.c" />
     <ClCompile Include="..\..\..\deflate.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc12/zlib.rc b/libs/zlib/contrib/vstudio/vc12/zlib.rc
index c4e4b016e9..a55f341c74 100644
--- a/libs/zlib/contrib/vstudio/vc12/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc12/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc12/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc12/zlibstat.vcxproj
index 3fdee7c507..6629d8e2a3 100644
--- a/libs/zlib/contrib/vstudio/vc12/zlibstat.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc12/zlibstat.vcxproj
@@ -170,7 +170,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -196,8 +196,8 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -216,7 +216,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -224,7 +224,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -254,7 +254,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -283,7 +283,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -312,8 +312,8 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -332,7 +332,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -343,7 +343,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -373,7 +373,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -403,7 +403,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -437,14 +437,6 @@
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc12/zlibvc.def b/libs/zlib/contrib/vstudio/vc12/zlibvc.def
index f876c3bcab..53947cc31b 100644
--- a/libs/zlib/contrib/vstudio/vc12/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc12/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj
index ab2b6c3603..4e0de691ef 100644
--- a/libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj
@@ -207,8 +207,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -229,7 +229,7 @@
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -243,10 +243,6 @@
       </DataExecutionPrevention>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <Midl>
@@ -258,7 +254,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -306,8 +302,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -330,7 +326,7 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -345,10 +341,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Midl>
@@ -360,8 +352,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -381,7 +373,7 @@ bld_ml32.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -393,10 +385,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\contrib\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -408,7 +396,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -451,7 +439,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -496,7 +484,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -541,8 +529,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -564,7 +552,7 @@ bld_ml64.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -576,10 +564,6 @@ bld_ml64.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -591,7 +575,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -636,14 +620,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc14/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc14/testzlib.vcxproj
index 2c371252ae..545204954d 100644
--- a/libs/zlib/contrib/vstudio/vc14/testzlib.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc14/testzlib.vcxproj
@@ -190,7 +190,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -203,7 +203,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
@@ -250,7 +250,7 @@
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -263,7 +263,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
@@ -279,14 +279,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
@@ -362,14 +362,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
@@ -408,14 +408,6 @@
     <ClCompile Include="..\..\..\crc32.c" />
     <ClCompile Include="..\..\..\deflate.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc14/zlib.rc b/libs/zlib/contrib/vstudio/vc14/zlib.rc
index c4e4b016e9..a55f341c74 100644
--- a/libs/zlib/contrib/vstudio/vc14/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc14/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc14/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc14/zlibstat.vcxproj
index 3e4b986392..85c1e8958e 100644
--- a/libs/zlib/contrib/vstudio/vc14/zlibstat.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc14/zlibstat.vcxproj
@@ -170,7 +170,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -196,8 +196,8 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -216,7 +216,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -224,7 +224,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -254,7 +254,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -283,7 +283,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -312,8 +312,8 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -332,7 +332,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -343,7 +343,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -373,7 +373,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -403,7 +403,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -437,14 +437,6 @@
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc14/zlibvc.def b/libs/zlib/contrib/vstudio/vc14/zlibvc.def
index f876c3bcab..53947cc31b 100644
--- a/libs/zlib/contrib/vstudio/vc14/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc14/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj
index f8f673cb05..424ff55b7e 100644
--- a/libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj
@@ -207,8 +207,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -229,7 +229,7 @@
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -243,10 +243,6 @@
       </DataExecutionPrevention>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <Midl>
@@ -258,7 +254,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -306,8 +302,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -330,7 +326,7 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -345,10 +341,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Midl>
@@ -360,8 +352,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -381,7 +373,7 @@ bld_ml32.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -393,10 +385,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\contrib\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -408,7 +396,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -451,7 +439,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -496,7 +484,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -541,8 +529,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -564,7 +552,7 @@ bld_ml64.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -576,10 +564,6 @@ bld_ml64.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -591,7 +575,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -636,14 +620,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc17/miniunz.vcxproj b/libs/zlib/contrib/vstudio/vc17/miniunz.vcxproj
new file mode 100644
index 0000000000..68ef16588b
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/miniunz.vcxproj
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694382A}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</GenerateManifest>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir>arm64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir>arm64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir>arm\MiniUnzip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir>arm\MiniUnzip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\minizip\miniunz.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="zlibvc.vcxproj">
+      <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc17/minizip.vcxproj b/libs/zlib/contrib/vstudio/vc17/minizip.vcxproj
new file mode 100644
index 0000000000..dd3c52e70c
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/minizip.vcxproj
@@ -0,0 +1,405 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\MiniZip$(Configuration)\</OutDir>
+    <IntDir>arm64\MiniZip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\MiniZip$(Configuration)\</OutDir>
+    <IntDir>arm64\MiniZip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\MiniZip$(Configuration)\</OutDir>
+    <IntDir>arm\MiniZip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\MiniZip$(Configuration)\</OutDir>
+    <IntDir>arm\MiniZip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\minizip\minizip.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="zlibvc.vcxproj">
+      <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc17/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc17/testzlib.vcxproj
new file mode 100644
index 0000000000..4cc99b3ffe
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/testzlib.vcxproj
@@ -0,0 +1,473 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|ARM">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|ARM64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|Win32">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|x64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid>
+    <RootNamespace>testzlib</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</GenerateManifest>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <OutDir>arm64\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <OutDir>arm\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\adler32.c" />
+    <ClCompile Include="..\..\..\compress.c" />
+    <ClCompile Include="..\..\..\crc32.c" />
+    <ClCompile Include="..\..\..\deflate.c" />
+    <ClCompile Include="..\..\..\infback.c" />
+    <ClCompile Include="..\..\..\inffast.c" />
+    <ClCompile Include="..\..\..\inflate.c" />
+    <ClCompile Include="..\..\..\inftrees.c" />
+    <ClCompile Include="..\..\testzlib\testzlib.c" />
+    <ClCompile Include="..\..\..\trees.c" />
+    <ClCompile Include="..\..\..\uncompr.c" />
+    <ClCompile Include="..\..\..\zutil.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj b/libs/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj
new file mode 100644
index 0000000000..73bba55da8
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694366A}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</GenerateManifest>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\testzlib\testzlib.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="zlibvc.vcxproj">
+      <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc8/zlib.rc b/libs/zlib/contrib/vstudio/vc17/zlib.rc
similarity index 68%
rename from libs/zlib/contrib/vstudio/vc8/zlib.rc
rename to libs/zlib/contrib/vstudio/vc17/zlib.rc
index 58f756722f..a55f341c74 100644
--- a/libs/zlib/contrib/vstudio/vc8/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc17/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1,2,3,0
-  PRODUCTVERSION 1,2,3,0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -16,13 +16,13 @@ BEGIN
     //language ID = U.S. English, char set = Windows, Multilingual
 
     BEGIN
-      VALUE "FileDescription", "zlib data compression library\0"
-      VALUE "FileVersion",	"1.2.3.0\0"
+      VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
-      VALUE "OriginalFilename",	"zlib.dll\0"
+      VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc17/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc17/zlibstat.vcxproj
new file mode 100644
index 0000000000..b946ac2a90
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/zlibstat.vcxproj
@@ -0,0 +1,602 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|ARM">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|ARM64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|Win32">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|x64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}</ProjectGuid>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <OutDir>arm64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <OutDir>arm\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl />
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl />
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <Midl />
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <Midl />
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\adler32.c" />
+    <ClCompile Include="..\..\..\compress.c" />
+    <ClCompile Include="..\..\..\crc32.c" />
+    <ClCompile Include="..\..\..\deflate.c" />
+    <ClCompile Include="..\..\..\gzclose.c" />
+    <ClCompile Include="..\..\..\gzlib.c" />
+    <ClCompile Include="..\..\..\gzread.c" />
+    <ClCompile Include="..\..\..\gzwrite.c" />
+    <ClCompile Include="..\..\..\infback.c" />
+    <ClCompile Include="..\..\..\inffast.c" />
+    <ClCompile Include="..\..\..\inflate.c" />
+    <ClCompile Include="..\..\..\inftrees.c" />
+    <ClCompile Include="..\..\minizip\ioapi.c" />
+    <ClCompile Include="..\..\..\trees.c" />
+    <ClCompile Include="..\..\..\uncompr.c" />
+    <ClCompile Include="..\..\minizip\unzip.c" />
+    <ClCompile Include="..\..\minizip\zip.c" />
+    <ClCompile Include="..\..\..\zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="zlib.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="zlibvc.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc8/zlibvc.def b/libs/zlib/contrib/vstudio/vc17/zlibvc.def
similarity index 60%
rename from libs/zlib/contrib/vstudio/vc8/zlibvc.def
rename to libs/zlib/contrib/vstudio/vc17/zlibvc.def
index 74dfdb8af1..53947cc31b 100644
--- a/libs/zlib/contrib/vstudio/vc8/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc17/zlibvc.def
@@ -1,7 +1,7 @@
+LIBRARY
+; zlib data compression and ZIP file I/O library
 
-VERSION		1.23
-
-HEAPSIZE	1048576,8192
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -55,6 +55,7 @@ EXPORTS
         gzungetc                                 @49
         zlibCompileFlags                         @50
         deflatePrime                             @51
+        deflatePending                           @52
 
         unzOpen                                  @61
         unzClose                                 @62
@@ -90,3 +91,68 @@ EXPORTS
         unzGoToFilePos                           @101
 
         fill_win32_filefunc                      @110
+
+; zlibwapi v1.2.4 added:
+        fill_win32_filefunc64                   @111
+        fill_win32_filefunc64A                  @112
+        fill_win32_filefunc64W                  @113
+
+        unzOpen64                               @120
+        unzOpen2_64                             @121
+        unzGetGlobalInfo64                      @122
+        unzGetCurrentFileInfo64                 @124
+        unzGetCurrentFileZStreamPos64           @125
+        unztell64                               @126
+        unzGetFilePos64                         @127
+        unzGoToFilePos64                        @128
+
+        zipOpen64                               @130
+        zipOpen2_64                             @131
+        zipOpenNewFileInZip64                   @132
+        zipOpenNewFileInZip2_64                 @133
+        zipOpenNewFileInZip3_64                 @134
+        zipOpenNewFileInZip4_64                 @135
+        zipCloseFileInZipRaw64                  @136
+
+; zlib1 v1.2.4 added:
+        adler32_combine                         @140
+        crc32_combine                           @142
+        deflateSetHeader                        @144
+        deflateTune                             @145
+        gzbuffer                                @146
+        gzclose_r                               @147
+        gzclose_w                               @148
+        gzdirect                                @149
+        gzoffset                                @150
+        inflateGetHeader                        @156
+        inflateMark                             @157
+        inflatePrime                            @158
+        inflateReset2                           @159
+        inflateUndermine                        @160
+
+; zlib1 v1.2.6 added:
+        gzgetc_                                 @161
+        inflateResetKeep                        @163
+        deflateResetKeep                        @164
+
+; zlib1 v1.2.7 added:
+        gzopen_w                                @165
+
+; zlib1 v1.2.8 added:
+        inflateGetDictionary                    @166
+        gzvprintf                               @167
+
+; zlib1 v1.2.9 added:
+        inflateCodesUsed                        @168
+        inflateValidate                         @169
+        uncompress2                             @170
+        gzfread                                 @171
+        gzfwrite                                @172
+        deflateGetDictionary                    @173
+        adler32_z                               @174
+        crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc17/zlibvc.sln b/libs/zlib/contrib/vstudio/vc17/zlibvc.sln
new file mode 100644
index 0000000000..67896b7470
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/zlibvc.sln
@@ -0,0 +1,179 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.4.33015.44
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcxproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcxproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlibdll", "testzlibdll.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcxproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|ARM = Debug|ARM
+		Debug|ARM64 = Debug|ARM64
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|ARM = Release|ARM
+		Release|ARM64 = Release|ARM64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+		ReleaseWithoutAsm|ARM = ReleaseWithoutAsm|ARM
+		ReleaseWithoutAsm|ARM64 = ReleaseWithoutAsm|ARM64
+		ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32
+		ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM.ActiveCfg = Debug|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM.Build.0 = Debug|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM64.Build.0 = Debug|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM.ActiveCfg = Release|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM.Build.0 = Release|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM64.ActiveCfg = Release|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM64.Build.0 = Release|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM.ActiveCfg = Debug|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM.Build.0 = Debug|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM64.Build.0 = Debug|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM.ActiveCfg = Release|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM.Build.0 = Release|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM64.ActiveCfg = Release|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM64.Build.0 = Release|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.ActiveCfg = Debug|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.Build.0 = Debug|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.Build.0 = Debug|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.ActiveCfg = Release|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.Build.0 = Release|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.ActiveCfg = Release|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.Build.0 = Release|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM.ActiveCfg = Debug|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM.Build.0 = Debug|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM64.Build.0 = Debug|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM.ActiveCfg = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM.Build.0 = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM64.ActiveCfg = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM64.Build.0 = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.ActiveCfg = Debug|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.Build.0 = Debug|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.Build.0 = Debug|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.ActiveCfg = Release|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.Build.0 = Release|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.ActiveCfg = Release|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.Build.0 = Release|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM.ActiveCfg = Debug|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM.Build.0 = Debug|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM64.Build.0 = Debug|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM.ActiveCfg = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM.Build.0 = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM64.ActiveCfg = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM64.Build.0 = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {EAA58685-56D9-43F2-8703-FD2CB020745E}
+	EndGlobalSection
+EndGlobal
diff --git a/libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj
new file mode 100644
index 0000000000..10a7a901ef
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj
@@ -0,0 +1,875 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|ARM">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|ARM64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|Win32">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|x64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8FD826F8-3739-44E6-8CC8-997122E53B8D}</ProjectGuid>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</GenerateManifest>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">zlibwapi</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <OutDir>arm64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <OutDir>arm\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\adler32.c" />
+    <ClCompile Include="..\..\..\compress.c" />
+    <ClCompile Include="..\..\..\crc32.c" />
+    <ClCompile Include="..\..\..\deflate.c" />
+    <ClCompile Include="..\..\..\gzclose.c" />
+    <ClCompile Include="..\..\..\gzlib.c" />
+    <ClCompile Include="..\..\..\gzread.c" />
+    <ClCompile Include="..\..\..\gzwrite.c" />
+    <ClCompile Include="..\..\..\infback.c" />
+    <ClCompile Include="..\..\..\inffast.c" />
+    <ClCompile Include="..\..\..\inflate.c" />
+    <ClCompile Include="..\..\..\inftrees.c" />
+    <ClCompile Include="..\..\minizip\ioapi.c" />
+    <ClCompile Include="..\..\minizip\iowin32.c" />
+    <ClCompile Include="..\..\..\trees.c" />
+    <ClCompile Include="..\..\..\uncompr.c" />
+    <ClCompile Include="..\..\minizip\unzip.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <ClCompile Include="..\..\minizip\zip.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <ClCompile Include="..\..\..\zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="zlib.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="zlibvc.def" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\deflate.h" />
+    <ClInclude Include="..\..\..\infblock.h" />
+    <ClInclude Include="..\..\..\infcodes.h" />
+    <ClInclude Include="..\..\..\inffast.h" />
+    <ClInclude Include="..\..\..\inftrees.h" />
+    <ClInclude Include="..\..\..\infutil.h" />
+    <ClInclude Include="..\..\..\zconf.h" />
+    <ClInclude Include="..\..\..\zlib.h" />
+    <ClInclude Include="..\..\..\zutil.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc7/miniunz.vcproj b/libs/zlib/contrib/vstudio/vc7/miniunz.vcproj
deleted file mode 100644
index ad5117c845..0000000000
--- a/libs/zlib/contrib/vstudio/vc7/miniunz.vcproj
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="miniunz"
-	ProjectGUID="{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug"
-			IntermediateDirectory="Debug"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="5"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/miniunz.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="TRUE"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="TRUE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
-			<File
-				RelativePath="..\..\minizip\miniunz.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
-		</Filter>
-		<File
-			RelativePath="ReleaseDll\zlibwapi.lib">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc7/minizip.vcproj b/libs/zlib/contrib/vstudio/vc7/minizip.vcproj
deleted file mode 100644
index fb5b6320d5..0000000000
--- a/libs/zlib/contrib/vstudio/vc7/minizip.vcproj
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="minizip"
-	ProjectGUID="{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug"
-			IntermediateDirectory="Debug"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="5"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/minizip.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="TRUE"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="TRUE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
-			<File
-				RelativePath="..\..\minizip\minizip.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
-		</Filter>
-		<File
-			RelativePath="ReleaseDll\zlibwapi.lib">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc7/testzlib.vcproj b/libs/zlib/contrib/vstudio/vc7/testzlib.vcproj
deleted file mode 100644
index 97bc3e8c86..0000000000
--- a/libs/zlib/contrib/vstudio/vc7/testzlib.vcproj
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="testZlibDll"
-	ProjectGUID="{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug"
-			IntermediateDirectory="Debug"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="5"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="TRUE"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="TRUE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
-			<File
-				RelativePath="..\..\testzlib\testzlib.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
-		</Filter>
-		<File
-			RelativePath="ReleaseDll\zlibwapi.lib">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc7/zlib.rc b/libs/zlib/contrib/vstudio/vc7/zlib.rc
deleted file mode 100644
index 58f756722f..0000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlib.rc
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <windows.h>
-
-#define IDR_VERSION1  1
-IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1,2,3,0
-  PRODUCTVERSION 1,2,3,0
-  FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
-  FILEFLAGS	0
-  FILEOS	VOS_DOS_WINDOWS32
-  FILETYPE	VFT_DLL
-  FILESUBTYPE	0	// not used
-BEGIN
-  BLOCK "StringFileInfo"
-  BEGIN
-    BLOCK "040904E4"
-    //language ID = U.S. English, char set = Windows, Multilingual
-
-    BEGIN
-      VALUE "FileDescription", "zlib data compression library\0"
-      VALUE "FileVersion",	"1.2.3.0\0"
-      VALUE "InternalName",	"zlib\0"
-      VALUE "OriginalFilename",	"zlib.dll\0"
-      VALUE "ProductName",	"ZLib.DLL\0"
-      VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0"
-    END
-  END
-  BLOCK "VarFileInfo"
-  BEGIN
-    VALUE "Translation", 0x0409, 1252
-  END
-END
diff --git a/libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj b/libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj
deleted file mode 100644
index 766d7a4d6e..0000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj
+++ /dev/null
@@ -1,246 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="zlibstat"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory=".\zlibstatDebug"
-			IntermediateDirectory=".\zlibstatDebug"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="5"
-				PrecompiledHeaderFile=".\zlibstatDebug/zlibstat.pch"
-				AssemblerListingLocation=".\zlibstatDebug/"
-				ObjectFile=".\zlibstatDebug/"
-				ProgramDataBaseFileName=".\zlibstatDebug/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="1"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/NODEFAULTLIB "
-				OutputFile=".\zlibstatDebug\zlibstat.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseAxp|Win32"
-			OutputDirectory=".\zlibsta0"
-			IntermediateDirectory=".\zlibsta0"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibsta0/zlibstat.pch"
-				AssemblerListingLocation=".\zlibsta0/"
-				ObjectFile=".\zlibsta0/"
-				ProgramDataBaseFileName=".\zlibsta0/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/NODEFAULTLIB "
-				OutputFile=".\zlibsta0\zlibstat.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\zlibstat"
-			IntermediateDirectory=".\zlibstat"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;ASMV;ASMINF"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibstat/zlibstat.pch"
-				AssemblerListingLocation=".\zlibstat/"
-				ObjectFile=".\zlibstat/"
-				ProgramDataBaseFileName=".\zlibstat/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj /NODEFAULTLIB "
-				OutputFile=".\zlibstat\zlibstat.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory="zlibstatWithoutAsm"
-			IntermediateDirectory="zlibstatWithoutAsm"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibstat/zlibstat.pch"
-				AssemblerListingLocation=".\zlibstatWithoutAsm/"
-				ObjectFile=".\zlibstatWithoutAsm/"
-				ProgramDataBaseFileName=".\zlibstatWithoutAsm/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions=" /NODEFAULTLIB "
-				OutputFile=".\zlibstatWithoutAsm\zlibstat.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="">
-			<File
-				RelativePath="..\..\..\adler32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c">
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c">
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c">
-			</File>
-			<File
-				RelativePath="..\..\..\gzio.c">
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\ioapi.c">
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c">
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\unzip.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\zip.c">
-			</File>
-			<File
-				RelativePath=".\zlib.rc">
-			</File>
-			<File
-				RelativePath=".\zlibvc.def">
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c">
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc7/zlibvc.def b/libs/zlib/contrib/vstudio/vc7/zlibvc.def
deleted file mode 100644
index 74dfdb8af1..0000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlibvc.def
+++ /dev/null
@@ -1,92 +0,0 @@
-
-VERSION		1.23
-
-HEAPSIZE	1048576,8192
-
-EXPORTS
-        adler32                                  @1
-        compress                                 @2
-        crc32                                    @3
-        deflate                                  @4
-        deflateCopy                              @5
-        deflateEnd                               @6
-        deflateInit2_                            @7
-        deflateInit_                             @8
-        deflateParams                            @9
-        deflateReset                             @10
-        deflateSetDictionary                     @11
-        gzclose                                  @12
-        gzdopen                                  @13
-        gzerror                                  @14
-        gzflush                                  @15
-        gzopen                                   @16
-        gzread                                   @17
-        gzwrite                                  @18
-        inflate                                  @19
-        inflateEnd                               @20
-        inflateInit2_                            @21
-        inflateInit_                             @22
-        inflateReset                             @23
-        inflateSetDictionary                     @24
-        inflateSync                              @25
-        uncompress                               @26
-        zlibVersion                              @27
-        gzprintf                                 @28
-        gzputc                                   @29
-        gzgetc                                   @30
-        gzseek                                   @31
-        gzrewind                                 @32
-        gztell                                   @33
-        gzeof                                    @34
-        gzsetparams                              @35
-        zError                                   @36
-        inflateSyncPoint                         @37
-        get_crc_table                            @38
-        compress2                                @39
-        gzputs                                   @40
-        gzgets                                   @41
-        inflateCopy                              @42
-        inflateBackInit_                         @43
-        inflateBack                              @44
-        inflateBackEnd                           @45
-        compressBound                            @46
-        deflateBound                             @47
-        gzclearerr                               @48
-        gzungetc                                 @49
-        zlibCompileFlags                         @50
-        deflatePrime                             @51
-
-        unzOpen                                  @61
-        unzClose                                 @62
-        unzGetGlobalInfo                         @63
-        unzGetCurrentFileInfo                    @64
-        unzGoToFirstFile                         @65
-        unzGoToNextFile                          @66
-        unzOpenCurrentFile                       @67
-        unzReadCurrentFile                       @68
-        unzOpenCurrentFile3                      @69
-        unztell                                  @70
-        unzeof                                   @71
-        unzCloseCurrentFile                      @72
-        unzGetGlobalComment                      @73
-        unzStringFileNameCompare                 @74
-        unzLocateFile                            @75
-        unzGetLocalExtrafield                    @76
-        unzOpen2                                 @77
-        unzOpenCurrentFile2                      @78
-        unzOpenCurrentFilePassword               @79
-
-        zipOpen                                  @80
-        zipOpenNewFileInZip                      @81
-        zipWriteInFileInZip                      @82
-        zipCloseFileInZip                        @83
-        zipClose                                 @84
-        zipOpenNewFileInZip2                     @86
-        zipCloseFileInZipRaw                     @87
-        zipOpen2                                 @88
-        zipOpenNewFileInZip3                     @89
-
-        unzGetFilePos                            @100
-        unzGoToFilePos                           @101
-
-        fill_win32_filefunc                      @110
diff --git a/libs/zlib/contrib/vstudio/vc7/zlibvc.sln b/libs/zlib/contrib/vstudio/vc7/zlibvc.sln
deleted file mode 100644
index 927b42b7bd..0000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlibvc.sln
+++ /dev/null
@@ -1,78 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testZlibDll", "testzlib.vcproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}"
-EndProject
-Global
-	GlobalSection(SolutionConfiguration) = preSolution
-		ConfigName.0 = Debug
-		ConfigName.1 = Release
-		ConfigName.2 = ReleaseAxp
-		ConfigName.3 = ReleaseWithoutAsm
-		ConfigName.4 = ReleaseWithoutCrtdll
-	EndGlobalSection
-	GlobalSection(ProjectDependencies) = postSolution
-	EndGlobalSection
-	GlobalSection(ProjectConfiguration) = postSolution
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug.ActiveCfg = Debug|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug.Build.0 = Debug|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release.ActiveCfg = Release|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release.Build.0 = Release|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseAxp.ActiveCfg = ReleaseAxp|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseAxp.Build.0 = ReleaseAxp|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm.ActiveCfg = ReleaseWithoutAsm|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm.Build.0 = ReleaseWithoutAsm|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutCrtdll.ActiveCfg = ReleaseAxp|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutCrtdll.Build.0 = ReleaseAxp|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug.ActiveCfg = Debug|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug.Build.0 = Debug|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release.ActiveCfg = Release|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release.Build.0 = Release|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseAxp.ActiveCfg = ReleaseAxp|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseAxp.Build.0 = ReleaseAxp|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm.ActiveCfg = ReleaseWithoutAsm|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm.Build.0 = ReleaseWithoutAsm|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutCrtdll.ActiveCfg = ReleaseWithoutCrtdll|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutCrtdll.Build.0 = ReleaseWithoutCrtdll|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug.ActiveCfg = Debug|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug.Build.0 = Debug|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release.Build.0 = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseAxp.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseAxp.Build.0 = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm.Build.0 = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutCrtdll.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutCrtdll.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug.ActiveCfg = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug.Build.0 = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseAxp.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseAxp.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutCrtdll.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutCrtdll.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.Debug.ActiveCfg = Debug|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.Debug.Build.0 = Debug|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.Release.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.Release.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseAxp.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseAxp.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseWithoutAsm.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseWithoutAsm.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseWithoutCrtdll.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseWithoutCrtdll.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-	EndGlobalSection
-	GlobalSection(ExtensibilityAddIns) = postSolution
-	EndGlobalSection
-EndGlobal
diff --git a/libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj b/libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj
deleted file mode 100644
index 8533b49475..0000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj
+++ /dev/null
@@ -1,445 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="zlibvc"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory=".\DebugDll"
-			IntermediateDirectory=".\DebugDll"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI,ASMV,ASMINF"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="1"
-				PrecompiledHeaderFile=".\DebugDll/zlibvc.pch"
-				AssemblerListingLocation=".\DebugDll/"
-				ObjectFile=".\DebugDll/"
-				ProgramDataBaseFileName=".\DebugDll/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
-				OutputFile=".\DebugDll\zlibwapi.dll"
-				LinkIncremental="2"
-				SuppressStartupBanner="TRUE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile=".\DebugDll/zlibwapi.pdb"
-				SubSystem="2"
-				ImportLibrary=".\DebugDll/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\DebugDll/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory=".\zlibDllWithoutAsm"
-			IntermediateDirectory=".\zlibDllWithoutAsm"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibDllWithoutAsm/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation=".\zlibDllWithoutAsm/"
-				ObjectFile=".\zlibDllWithoutAsm/"
-				ProgramDataBaseFileName=".\zlibDllWithoutAsm/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="crtdll.lib"
-				OutputFile=".\zlibDllWithoutAsm\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreAllDefaultLibraries="TRUE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile=".\zlibDllWithoutAsm/zlibwapi.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\zlibDllWithoutAsm/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary=".\zlibDllWithoutAsm/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\zlibDllWithoutAsm/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutCrtdll|Win32"
-			OutputDirectory=".\zlibDllWithoutCrtDll"
-			IntermediateDirectory=".\zlibDllWithoutCrtDll"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI,ASMV,ASMINF"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibDllWithoutCrtDll/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation=".\zlibDllWithoutCrtDll/"
-				ObjectFile=".\zlibDllWithoutCrtDll/"
-				ProgramDataBaseFileName=".\zlibDllWithoutCrtDll/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj "
-				OutputFile=".\zlibDllWithoutCrtDll\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreAllDefaultLibraries="FALSE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile=".\zlibDllWithoutCrtDll/zlibwapi.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\zlibDllWithoutCrtDll/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary=".\zlibDllWithoutCrtDll/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\zlibDllWithoutCrtDll/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseAxp|Win32"
-			OutputDirectory=".\zlibvc__"
-			IntermediateDirectory=".\zlibvc__"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibvc__/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation=".\zlibvc__/"
-				ObjectFile=".\zlibvc__/"
-				ProgramDataBaseFileName=".\zlibvc__/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="crtdll.lib"
-				OutputFile="zlibvc__\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreAllDefaultLibraries="TRUE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile=".\zlibvc__/zlibwapi.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\zlibvc__/zlibwapi.map"
-				SubSystem="2"
-				ImportLibrary=".\zlibvc__/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\zlibvc__/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\ReleaseDll"
-			IntermediateDirectory=".\ReleaseDll"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI,ASMV,ASMINF"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\ReleaseDll/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation=".\ReleaseDll/"
-				ObjectFile=".\ReleaseDll/"
-				ProgramDataBaseFileName=".\ReleaseDll/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj crtdll.lib"
-				OutputFile=".\ReleaseDll\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreAllDefaultLibraries="TRUE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile=".\ReleaseDll/zlibwapi.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\ReleaseDll/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary=".\ReleaseDll/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\Release/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90">
-			<File
-				RelativePath="..\..\..\adler32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c">
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c">
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c">
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="TRUE">
-					<Tool
-						Name="VCCLCompilerTool"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\gzio.c">
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\ioapi.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\iowin32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c">
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\unzip.c">
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\minizip\zip.c">
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\zlib.rc">
-			</File>
-			<File
-				RelativePath=".\zlibvc.def">
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;fi;fd">
-			<File
-				RelativePath="..\..\..\deflate.h">
-			</File>
-			<File
-				RelativePath="..\..\..\infblock.h">
-			</File>
-			<File
-				RelativePath="..\..\..\infcodes.h">
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.h">
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.h">
-			</File>
-			<File
-				RelativePath="..\..\..\infutil.h">
-			</File>
-			<File
-				RelativePath="..\..\..\zconf.h">
-			</File>
-			<File
-				RelativePath="..\..\..\zlib.h">
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/miniunz.vcproj b/libs/zlib/contrib/vstudio/vc8/miniunz.vcproj
deleted file mode 100644
index 4af53e8a31..0000000000
--- a/libs/zlib/contrib/vstudio/vc8/miniunz.vcproj
+++ /dev/null
@@ -1,566 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="miniunz"
-	ProjectGUID="{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="x86\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/miniunz.pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="x64\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/miniunz.pdb"
-				SubSystem="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="ia64\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/miniunz.pdb"
-				SubSystem="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="x86\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="x64\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="ia64\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
-			>
-			<File
-				RelativePath="..\..\minizip\miniunz.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/minizip.vcproj b/libs/zlib/contrib/vstudio/vc8/minizip.vcproj
deleted file mode 100644
index 85f64c4d2a..0000000000
--- a/libs/zlib/contrib/vstudio/vc8/minizip.vcproj
+++ /dev/null
@@ -1,563 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="minizip"
-	ProjectGUID="{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\MiniZip$(ConfigurationName)"
-			IntermediateDirectory="x86\MiniZip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/minizip.pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\$(ConfigurationName)"
-			IntermediateDirectory="x64\$(ConfigurationName)"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/minizip.pdb"
-				SubSystem="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\$(ConfigurationName)"
-			IntermediateDirectory="ia64\$(ConfigurationName)"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/minizip.pdb"
-				SubSystem="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\MiniZip$(ConfigurationName)"
-			IntermediateDirectory="x86\MiniZip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\$(ConfigurationName)"
-			IntermediateDirectory="x64\$(ConfigurationName)"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\$(ConfigurationName)"
-			IntermediateDirectory="ia64\$(ConfigurationName)"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
-			>
-			<File
-				RelativePath="..\..\minizip\minizip.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/testzlib.vcproj b/libs/zlib/contrib/vstudio/vc8/testzlib.vcproj
deleted file mode 100644
index 68c3539911..0000000000
--- a/libs/zlib/contrib/vstudio/vc8/testzlib.vcproj
+++ /dev/null
@@ -1,948 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="testzlib"
-	ProjectGUID="{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}"
-	RootNamespace="testzlib"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerOutput="4"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				AssemblerListingLocation="$(IntDir)\"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
-				GenerateManifest="false"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerOutput="4"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory="x86\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|x64"
-			OutputDirectory="x64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				AssemblerListingLocation="$(IntDir)\"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies=""
-				GenerateManifest="false"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Itanium"
-			OutputDirectory="ia64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				AssemblerListingLocation="$(IntDir)\"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
-				GenerateManifest="false"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
-			>
-			<File
-				RelativePath="..\..\..\adler32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c"
-				>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win64 (AMD64)"
-					ExcludedFromBuild="TRUE"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win64 (AMD64)"
-					ExcludedFromBuild="TRUE"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseAsm|Win64 (AMD64)"
-					ExcludedFromBuild="TRUE"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\testzlib\testzlib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/testzlibdll.vcproj b/libs/zlib/contrib/vstudio/vc8/testzlibdll.vcproj
deleted file mode 100644
index f38ab5e08a..0000000000
--- a/libs/zlib/contrib/vstudio/vc8/testzlibdll.vcproj
+++ /dev/null
@@ -1,567 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="TestZlibDll"
-	ProjectGUID="{C52F9E7B-498A-42BE-8DB4-85A15694366A}"
-	Keyword="Win32Proj"
-	SignManifests="true"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
-			>
-			<File
-				RelativePath="..\..\testzlib\testzlib.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj b/libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj
deleted file mode 100644
index fb97037acf..0000000000
--- a/libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj
+++ /dev/null
@@ -1,870 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="zlibstat"
-	ProjectGUID="{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				ExceptionHandling="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				ExceptionHandling="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				ExceptionHandling="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ASMV;ASMINF"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj "
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ASMV;ASMINF;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory="x86\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|x64"
-			OutputDirectory="x64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Itanium"
-			OutputDirectory="ia64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			>
-			<File
-				RelativePath="..\..\..\adler32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c"
-				>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\gzio.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\ioapi.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\unzip.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\zip.c"
-				>
-			</File>
-			<File
-				RelativePath=".\zlib.rc"
-				>
-			</File>
-			<File
-				RelativePath=".\zlibvc.def"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/zlibvc.sln b/libs/zlib/contrib/vstudio/vc8/zlibvc.sln
deleted file mode 100644
index a815a5549f..0000000000
--- a/libs/zlib/contrib/vstudio/vc8/zlibvc.sln
+++ /dev/null
@@ -1,144 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestZlibDll", "testzlibdll.vcproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D} = {8FD826F8-3739-44E6-8CC8-997122E53B8D}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
-	ProjectSection(ProjectDependencies) = postProject
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D} = {8FD826F8-3739-44E6-8CC8-997122E53B8D}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D} = {8FD826F8-3739-44E6-8CC8-997122E53B8D}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Itanium = Debug|Itanium
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Itanium = Release|Itanium
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-		ReleaseWithoutAsm|Itanium = ReleaseWithoutAsm|Itanium
-		ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32
-		ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.Build.0 = Debug|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.ActiveCfg = Release|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = ReleaseWithoutAsm|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = ReleaseWithoutAsm|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.Build.0 = Debug|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.ActiveCfg = Release|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.Build.0 = Release|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.Build.0 = Release|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.Build.0 = Debug|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.Build.0 = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.Build.0 = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.Build.0 = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj b/libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj
deleted file mode 100644
index e717011df7..0000000000
--- a/libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj
+++ /dev/null
@@ -1,1219 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="zlibvc"
-	ProjectGUID="{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="1"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI,ASMV,ASMINF"
-				ExceptionHandling="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="2"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="3"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI,ASMV,ASMINF;WIN64"
-				ExceptionHandling="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="2"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="2"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;WIN64"
-				ExceptionHandling="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="2"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory="x86\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="1"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|x64"
-			OutputDirectory="x64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="3"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Itanium"
-			OutputDirectory="ia64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="2"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="1"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;ASMV;ASMINF"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj "
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="3"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;ASMV;ASMINF;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="2"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
-			>
-			<File
-				RelativePath="..\..\..\adler32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c"
-				>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\gzio.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\ioapi.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\iowin32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\unzip.c"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\minizip\zip.c"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\zlib.rc"
-				>
-			</File>
-			<File
-				RelativePath=".\zlibvc.def"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;fi;fd"
-			>
-			<File
-				RelativePath="..\..\..\deflate.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infblock.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infcodes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infutil.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zconf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zlib.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc9/miniunz.vcproj b/libs/zlib/contrib/vstudio/vc9/miniunz.vcproj
index 7da32b91ea..cc3d13a10c 100644
--- a/libs/zlib/contrib/vstudio/vc9/miniunz.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/miniunz.vcproj
@@ -542,7 +542,7 @@
 	<Files>
 		<Filter
 			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat"
 			>
 			<File
 				RelativePath="..\..\minizip\miniunz.c"
diff --git a/libs/zlib/contrib/vstudio/vc9/minizip.vcproj b/libs/zlib/contrib/vstudio/vc9/minizip.vcproj
index e57e07d90c..fecd9dd07d 100644
--- a/libs/zlib/contrib/vstudio/vc9/minizip.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/minizip.vcproj
@@ -539,7 +539,7 @@
 	<Files>
 		<Filter
 			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat"
 			>
 			<File
 				RelativePath="..\..\minizip\minizip.c"
diff --git a/libs/zlib/contrib/vstudio/vc9/testzlib.vcproj b/libs/zlib/contrib/vstudio/vc9/testzlib.vcproj
index 9cb0bf877f..ff69640e3f 100644
--- a/libs/zlib/contrib/vstudio/vc9/testzlib.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/testzlib.vcproj
@@ -48,7 +48,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="0"
 				RuntimeLibrary="1"
@@ -71,7 +71,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj"
 				OutputFile="$(OutDir)/testzlib.exe"
 				LinkIncremental="2"
 				GenerateManifest="false"
@@ -128,7 +127,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				BasicRuntimeChecks="0"
 				RuntimeLibrary="3"
 				BufferSecurityCheck="false"
@@ -145,7 +144,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
 				GenerateManifest="false"
 			/>
 			<Tool
@@ -517,7 +515,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				StringPooling="true"
 				BasicRuntimeChecks="0"
 				RuntimeLibrary="0"
@@ -540,7 +538,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj"
 				OutputFile="$(OutDir)/testzlib.exe"
 				LinkIncremental="1"
 				GenerateManifest="false"
@@ -600,7 +597,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				BasicRuntimeChecks="0"
 				RuntimeLibrary="0"
 				BufferSecurityCheck="false"
@@ -617,7 +614,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
 				GenerateManifest="false"
 			/>
 			<Tool
@@ -733,7 +729,7 @@
 	<Files>
 		<Filter
 			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat"
 			>
 			<File
 				RelativePath="..\..\..\adler32.c"
@@ -755,58 +751,6 @@
 				RelativePath="..\..\..\infback.c"
 				>
 			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
 			<File
 				RelativePath="..\..\..\inffast.c"
 				>
diff --git a/libs/zlib/contrib/vstudio/vc9/testzlibdll.vcproj b/libs/zlib/contrib/vstudio/vc9/testzlibdll.vcproj
index b1ddde05f9..6448b497cd 100644
--- a/libs/zlib/contrib/vstudio/vc9/testzlibdll.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/testzlibdll.vcproj
@@ -542,7 +542,7 @@
 	<Files>
 		<Filter
 			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat"
 			>
 			<File
 				RelativePath="..\..\testzlib\testzlib.c"
diff --git a/libs/zlib/contrib/vstudio/vc9/zlib.rc b/libs/zlib/contrib/vstudio/vc9/zlib.rc
index c4e4b016e9..a55f341c74 100644
--- a/libs/zlib/contrib/vstudio/vc9/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc9/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj b/libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj
index 61c76c7c5b..1bf15635ad 100644
--- a/libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj
@@ -47,7 +47,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				ExceptionHandling="0"
 				RuntimeLibrary="1"
@@ -121,7 +121,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				ExceptionHandling="0"
 				RuntimeLibrary="3"
@@ -195,7 +195,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				ExceptionHandling="0"
 				RuntimeLibrary="3"
@@ -268,8 +268,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				StringPooling="true"
 				ExceptionHandling="0"
 				RuntimeLibrary="0"
@@ -295,7 +295,6 @@
 			<Tool
 				Name="VCLibrarianTool"
 				AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj "
 				OutputFile="$(OutDir)\zlibstat.lib"
 				SuppressStartupBanner="true"
 			/>
@@ -343,8 +342,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
 				RuntimeLibrary="2"
@@ -370,7 +369,6 @@
 			<Tool
 				Name="VCLibrarianTool"
 				AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
 				OutputFile="$(OutDir)\zlibstat.lib"
 				SuppressStartupBanner="true"
 			/>
@@ -418,7 +416,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -491,7 +489,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -565,7 +563,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -639,7 +637,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -732,58 +730,6 @@
 				RelativePath="..\..\..\infback.c"
 				>
 			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
 			<File
 				RelativePath="..\..\..\inffast.c"
 				>
diff --git a/libs/zlib/contrib/vstudio/vc9/zlibvc.def b/libs/zlib/contrib/vstudio/vc9/zlibvc.def
index f876c3bcab..53947cc31b 100644
--- a/libs/zlib/contrib/vstudio/vc9/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc9/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj b/libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj
index c9a89471e7..f11dd1fbf3 100644
--- a/libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj
@@ -53,8 +53,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI"
 				ExceptionHandling="0"
 				RuntimeLibrary="1"
 				BufferSecurityCheck="false"
@@ -81,7 +81,6 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj"
 				OutputFile="$(OutDir)\zlibwapi.dll"
 				LinkIncremental="2"
 				SuppressStartupBanner="true"
@@ -150,8 +149,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				ExceptionHandling="0"
 				RuntimeLibrary="3"
 				BufferSecurityCheck="false"
@@ -177,7 +176,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
 				OutputFile="$(OutDir)\zlibwapi.dll"
 				LinkIncremental="2"
 				SuppressStartupBanner="true"
@@ -245,7 +243,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				ExceptionHandling="0"
 				RuntimeLibrary="3"
@@ -340,7 +338,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -440,7 +438,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -538,7 +536,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -636,8 +634,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI"
 				StringPooling="true"
 				ExceptionHandling="0"
 				RuntimeLibrary="0"
@@ -666,7 +664,6 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj "
 				OutputFile="$(OutDir)\zlibwapi.dll"
 				LinkIncremental="1"
 				SuppressStartupBanner="true"
@@ -737,8 +734,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
 				RuntimeLibrary="2"
@@ -766,7 +763,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
 				OutputFile="$(OutDir)\zlibwapi.dll"
 				LinkIncremental="1"
 				SuppressStartupBanner="true"
@@ -836,7 +832,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -949,58 +945,6 @@
 				RelativePath="..\..\..\infback.c"
 				>
 			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
 			<File
 				RelativePath="..\..\..\inffast.c"
 				>
diff --git a/libs/zlib/crc32.c b/libs/zlib/crc32.c
index 9580440c0e..6c38f5c04c 100644
--- a/libs/zlib/crc32.c
+++ b/libs/zlib/crc32.c
@@ -1,12 +1,10 @@
 /* crc32.c -- compute the CRC-32 of a data stream
- * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  *
- * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
- * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
- * tables for updating the shift register in one step with three exclusive-ors
- * instead of four steps with four exclusive-ors.  This results in about a
- * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
+ * This interleaved implementation of a CRC makes use of pipelined multiple
+ * arithmetic-logic units, commonly found in modern CPU cores. It is due to
+ * Kadatch and Jenkins (2010). See doc/crc-doc.1.0.pdf in this distribution.
  */
 
 /* @(#) $Id$ */
@@ -14,11 +12,12 @@
 /*
   Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
   protection on the static variables used to control the first-use generation
-  of the crc tables.  Therefore, if you #define DYNAMIC_CRC_TABLE, you should
+  of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
   first call get_crc_table() to initialize the tables before allowing more than
   one thread to use crc32().
 
-  DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
+  MAKECRCH can be #defined to write out crc32.h. A main() routine is also
+  produced, so that this one source file can be compiled to an executable.
  */
 
 #ifdef MAKECRCH
@@ -28,415 +27,1023 @@
 #  endif /* !DYNAMIC_CRC_TABLE */
 #endif /* MAKECRCH */
 
-#include "zutil.h"      /* for STDC and FAR definitions */
+#include "zutil.h"      /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */
 
-/* Definitions for doing the crc four data bytes at a time. */
-#if !defined(NOBYFOUR) && defined(Z_U4)
-#  define BYFOUR
+ /*
+  A CRC of a message is computed on N braids of words in the message, where
+  each word consists of W bytes (4 or 8). If N is 3, for example, then three
+  running sparse CRCs are calculated respectively on each braid, at these
+  indices in the array of words: 0, 3, 6, ..., 1, 4, 7, ..., and 2, 5, 8, ...
+  This is done starting at a word boundary, and continues until as many blocks
+  of N * W bytes as are available have been processed. The results are combined
+  into a single CRC at the end. For this code, N must be in the range 1..6 and
+  W must be 4 or 8. The upper limit on N can be increased if desired by adding
+  more #if blocks, extending the patterns apparent in the code. In addition,
+  crc32.h would need to be regenerated, if the maximum N value is increased.
+
+  N and W are chosen empirically by benchmarking the execution time on a given
+  processor. The choices for N and W below were based on testing on Intel Kaby
+  Lake i7, AMD Ryzen 7, ARM Cortex-A57, Sparc64-VII, PowerPC POWER9, and MIPS64
+  Octeon II processors. The Intel, AMD, and ARM processors were all fastest
+  with N=5, W=8. The Sparc, PowerPC, and MIPS64 were all fastest at N=5, W=4.
+  They were all tested with either gcc or clang, all using the -O3 optimization
+  level. Your mileage may vary.
+ */
+
+/* Define N */
+#ifdef Z_TESTN
+#  define N Z_TESTN
+#else
+#  define N 5
+#endif
+#if N < 1 || N > 6
+#  error N must be in 1..6
 #endif
-#ifdef BYFOUR
-   local unsigned long crc32_little OF((unsigned long,
-                        const unsigned char FAR *, z_size_t));
-   local unsigned long crc32_big OF((unsigned long,
-                        const unsigned char FAR *, z_size_t));
-#  define TBLS 8
+
+/*
+  z_crc_t must be at least 32 bits. z_word_t must be at least as long as
+  z_crc_t. It is assumed here that z_word_t is either 32 bits or 64 bits, and
+  that bytes are eight bits.
+ */
+
+/*
+  Define W and the associated z_word_t type. If W is not defined, then a
+  braided calculation is not used, and the associated tables and code are not
+  compiled.
+ */
+#ifdef Z_TESTW
+#  if Z_TESTW-1 != -1
+#    define W Z_TESTW
+#  endif
 #else
-#  define TBLS 1
-#endif /* BYFOUR */
+#  ifdef MAKECRCH
+#    define W 8         /* required for MAKECRCH */
+#  else
+#    if defined(__x86_64__) || defined(__aarch64__)
+#      define W 8
+#    else
+#      define W 4
+#    endif
+#  endif
+#endif
+#ifdef W
+#  if W == 8 && defined(Z_U8)
+     typedef Z_U8 z_word_t;
+#  elif defined(Z_U4)
+#    undef W
+#    define W 4
+     typedef Z_U4 z_word_t;
+#  else
+#    undef W
+#  endif
+#endif
 
-/* Local functions for crc concatenation */
-local unsigned long gf2_matrix_times OF((unsigned long *mat,
-                                         unsigned long vec));
-local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
-local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2));
+/* If available, use the ARM processor CRC32 instruction. */
+#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8
+#  define ARMCRC32
+#endif
 
+#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
+/*
+  Swap the bytes in a z_word_t to convert between little and big endian. Any
+  self-respecting compiler will optimize this to a single machine byte-swap
+  instruction, if one is available. This assumes that word_t is either 32 bits
+  or 64 bits.
+ */
+local z_word_t byte_swap(z_word_t word) {
+#  if W == 8
+    return
+        (word & 0xff00000000000000) >> 56 |
+        (word & 0xff000000000000) >> 40 |
+        (word & 0xff0000000000) >> 24 |
+        (word & 0xff00000000) >> 8 |
+        (word & 0xff000000) << 8 |
+        (word & 0xff0000) << 24 |
+        (word & 0xff00) << 40 |
+        (word & 0xff) << 56;
+#  else   /* W == 4 */
+    return
+        (word & 0xff000000) >> 24 |
+        (word & 0xff0000) >> 8 |
+        (word & 0xff00) << 8 |
+        (word & 0xff) << 24;
+#  endif
+}
+#endif
 
 #ifdef DYNAMIC_CRC_TABLE
+/* =========================================================================
+ * Table of powers of x for combining CRC-32s, filled in by make_crc_table()
+ * below.
+ */
+   local z_crc_t FAR x2n_table[32];
+#else
+/* =========================================================================
+ * Tables for byte-wise and braided CRC-32 calculations, and a table of powers
+ * of x for combining CRC-32s, all made by make_crc_table().
+ */
+#  include "crc32.h"
+#endif
+
+/* CRC polynomial. */
+#define POLY 0xedb88320         /* p(x) reflected, with x^32 implied */
 
-local volatile int crc_table_empty = 1;
-local z_crc_t FAR crc_table[TBLS][256];
-local void make_crc_table OF((void));
+/*
+  Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial,
+  reflected. For speed, this requires that a not be zero.
+ */
+local z_crc_t multmodp(z_crc_t a, z_crc_t b) {
+    z_crc_t m, p;
+
+    m = (z_crc_t)1 << 31;
+    p = 0;
+    for (;;) {
+        if (a & m) {
+            p ^= b;
+            if ((a & (m - 1)) == 0)
+                break;
+        }
+        m >>= 1;
+        b = b & 1 ? (b >> 1) ^ POLY : b >> 1;
+    }
+    return p;
+}
+
+/*
+  Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been
+  initialized.
+ */
+local z_crc_t x2nmodp(z_off64_t n, unsigned k) {
+    z_crc_t p;
+
+    p = (z_crc_t)1 << 31;           /* x^0 == 1 */
+    while (n) {
+        if (n & 1)
+            p = multmodp(x2n_table[k & 31], p);
+        n >>= 1;
+        k++;
+    }
+    return p;
+}
+
+#ifdef DYNAMIC_CRC_TABLE
+/* =========================================================================
+ * Build the tables for byte-wise and braided CRC-32 calculations, and a table
+ * of powers of x for combining CRC-32s.
+ */
+local z_crc_t FAR crc_table[256];
+#ifdef W
+   local z_word_t FAR crc_big_table[256];
+   local z_crc_t FAR crc_braid_table[W][256];
+   local z_word_t FAR crc_braid_big_table[W][256];
+   local void braid(z_crc_t [][256], z_word_t [][256], int, int);
+#endif
 #ifdef MAKECRCH
-   local void write_table OF((FILE *, const z_crc_t FAR *));
+   local void write_table(FILE *, const z_crc_t FAR *, int);
+   local void write_table32hi(FILE *, const z_word_t FAR *, int);
+   local void write_table64(FILE *, const z_word_t FAR *, int);
 #endif /* MAKECRCH */
+
+/*
+  Define a once() function depending on the availability of atomics. If this is
+  compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in
+  multiple threads, and if atomics are not available, then get_crc_table() must
+  be called to initialize the tables and must return before any threads are
+  allowed to compute or combine CRCs.
+ */
+
+/* Definition of once functionality. */
+typedef struct once_s once_t;
+
+/* Check for the availability of atomics. */
+#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \
+    !defined(__STDC_NO_ATOMICS__)
+
+#include <stdatomic.h>
+
+/* Structure for once(), which must be initialized with ONCE_INIT. */
+struct once_s {
+    atomic_flag begun;
+    atomic_int done;
+};
+#define ONCE_INIT {ATOMIC_FLAG_INIT, 0}
+
+/*
+  Run the provided init() function exactly once, even if multiple threads
+  invoke once() at the same time. The state must be a once_t initialized with
+  ONCE_INIT.
+ */
+local void once(once_t *state, void (*init)(void)) {
+    if (!atomic_load(&state->done)) {
+        if (atomic_flag_test_and_set(&state->begun))
+            while (!atomic_load(&state->done))
+                ;
+        else {
+            init();
+            atomic_store(&state->done, 1);
+        }
+    }
+}
+
+#else   /* no atomics */
+
+/* Structure for once(), which must be initialized with ONCE_INIT. */
+struct once_s {
+    volatile int begun;
+    volatile int done;
+};
+#define ONCE_INIT {0, 0}
+
+/* Test and set. Alas, not atomic, but tries to minimize the period of
+   vulnerability. */
+local int test_and_set(int volatile *flag) {
+    int was;
+
+    was = *flag;
+    *flag = 1;
+    return was;
+}
+
+/* Run the provided init() function once. This is not thread-safe. */
+local void once(once_t *state, void (*init)(void)) {
+    if (!state->done) {
+        if (test_and_set(&state->begun))
+            while (!state->done)
+                ;
+        else {
+            init();
+            state->done = 1;
+        }
+    }
+}
+
+#endif
+
+/* State for once(). */
+local once_t made = ONCE_INIT;
+
 /*
   Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
   x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
 
   Polynomials over GF(2) are represented in binary, one bit per coefficient,
-  with the lowest powers in the most significant bit.  Then adding polynomials
+  with the lowest powers in the most significant bit. Then adding polynomials
   is just exclusive-or, and multiplying a polynomial by x is a right shift by
-  one.  If we call the above polynomial p, and represent a byte as the
+  one. If we call the above polynomial p, and represent a byte as the
   polynomial q, also with the lowest power in the most significant bit (so the
-  byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
+  byte 0xb1 is the polynomial x^7+x^3+x^2+1), then the CRC is (q*x^32) mod p,
   where a mod b means the remainder after dividing a by b.
 
   This calculation is done using the shift-register method of multiplying and
-  taking the remainder.  The register is initialized to zero, and for each
+  taking the remainder. The register is initialized to zero, and for each
   incoming bit, x^32 is added mod p to the register if the bit is a one (where
-  x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
-  x (which is shifting right by one and adding x^32 mod p if the bit shifted
-  out is a one).  We start with the highest power (least significant bit) of
-  q and repeat for all eight bits of q.
-
-  The first table is simply the CRC of all possible eight bit values.  This is
-  all the information needed to generate CRCs on data a byte at a time for all
-  combinations of CRC register values and incoming bytes.  The remaining tables
-  allow for word-at-a-time CRC calculation for both big-endian and little-
-  endian machines, where a word is four bytes.
-*/
-local void make_crc_table()
-{
-    z_crc_t c;
-    int n, k;
-    z_crc_t poly;                       /* polynomial exclusive-or pattern */
-    /* terms of polynomial defining this crc (except x^32): */
-    static volatile int first = 1;      /* flag to limit concurrent making */
-    static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
-
-    /* See if another task is already doing this (not thread-safe, but better
-       than nothing -- significantly reduces duration of vulnerability in
-       case the advice about DYNAMIC_CRC_TABLE is ignored) */
-    if (first) {
-        first = 0;
-
-        /* make exclusive-or pattern from polynomial (0xedb88320UL) */
-        poly = 0;
-        for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
-            poly |= (z_crc_t)1 << (31 - p[n]);
-
-        /* generate a crc for every 8-bit value */
-        for (n = 0; n < 256; n++) {
-            c = (z_crc_t)n;
-            for (k = 0; k < 8; k++)
-                c = c & 1 ? poly ^ (c >> 1) : c >> 1;
-            crc_table[0][n] = c;
-        }
+  x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by x
+  (which is shifting right by one and adding x^32 mod p if the bit shifted out
+  is a one). We start with the highest power (least significant bit) of q and
+  repeat for all eight bits of q.
 
-#ifdef BYFOUR
-        /* generate crc for each value followed by one, two, and three zeros,
-           and then the byte reversal of those as well as the first table */
-        for (n = 0; n < 256; n++) {
-            c = crc_table[0][n];
-            crc_table[4][n] = ZSWAP32(c);
-            for (k = 1; k < 4; k++) {
-                c = crc_table[0][c & 0xff] ^ (c >> 8);
-                crc_table[k][n] = c;
-                crc_table[k + 4][n] = ZSWAP32(c);
-            }
-        }
-#endif /* BYFOUR */
+  The table is simply the CRC of all possible eight bit values. This is all the
+  information needed to generate CRCs on data a byte at a time for all
+  combinations of CRC register values and incoming bytes.
+ */
 
-        crc_table_empty = 0;
-    }
-    else {      /* not first */
-        /* wait for the other guy to finish (not efficient, but rare) */
-        while (crc_table_empty)
-            ;
+local void make_crc_table(void) {
+    unsigned i, j, n;
+    z_crc_t p;
+
+    /* initialize the CRC of bytes tables */
+    for (i = 0; i < 256; i++) {
+        p = i;
+        for (j = 0; j < 8; j++)
+            p = p & 1 ? (p >> 1) ^ POLY : p >> 1;
+        crc_table[i] = p;
+#ifdef W
+        crc_big_table[i] = byte_swap(p);
+#endif
     }
 
+    /* initialize the x^2^n mod p(x) table */
+    p = (z_crc_t)1 << 30;         /* x^1 */
+    x2n_table[0] = p;
+    for (n = 1; n < 32; n++)
+        x2n_table[n] = p = multmodp(p, p);
+
+#ifdef W
+    /* initialize the braiding tables -- needs x2n_table[] */
+    braid(crc_braid_table, crc_braid_big_table, N, W);
+#endif
+
 #ifdef MAKECRCH
-    /* write out CRC tables to crc32.h */
     {
+        /*
+          The crc32.h header file contains tables for both 32-bit and 64-bit
+          z_word_t's, and so requires a 64-bit type be available. In that case,
+          z_word_t must be defined to be 64-bits. This code then also generates
+          and writes out the tables for the case that z_word_t is 32 bits.
+         */
+#if !defined(W) || W != 8
+#  error Need a 64-bit integer type in order to generate crc32.h.
+#endif
         FILE *out;
+        int k, n;
+        z_crc_t ltl[8][256];
+        z_word_t big[8][256];
 
         out = fopen("crc32.h", "w");
         if (out == NULL) return;
-        fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
-        fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
-        fprintf(out, "local const z_crc_t FAR ");
-        fprintf(out, "crc_table[TBLS][256] =\n{\n  {\n");
-        write_table(out, crc_table[0]);
-#  ifdef BYFOUR
-        fprintf(out, "#ifdef BYFOUR\n");
-        for (k = 1; k < 8; k++) {
-            fprintf(out, "  },\n  {\n");
-            write_table(out, crc_table[k]);
+
+        /* write out little-endian CRC table to crc32.h */
+        fprintf(out,
+            "/* crc32.h -- tables for rapid CRC calculation\n"
+            " * Generated automatically by crc32.c\n */\n"
+            "\n"
+            "local const z_crc_t FAR crc_table[] = {\n"
+            "    ");
+        write_table(out, crc_table, 256);
+        fprintf(out,
+            "};\n");
+
+        /* write out big-endian CRC table for 64-bit z_word_t to crc32.h */
+        fprintf(out,
+            "\n"
+            "#ifdef W\n"
+            "\n"
+            "#if W == 8\n"
+            "\n"
+            "local const z_word_t FAR crc_big_table[] = {\n"
+            "    ");
+        write_table64(out, crc_big_table, 256);
+        fprintf(out,
+            "};\n");
+
+        /* write out big-endian CRC table for 32-bit z_word_t to crc32.h */
+        fprintf(out,
+            "\n"
+            "#else /* W == 4 */\n"
+            "\n"
+            "local const z_word_t FAR crc_big_table[] = {\n"
+            "    ");
+        write_table32hi(out, crc_big_table, 256);
+        fprintf(out,
+            "};\n"
+            "\n"
+            "#endif\n");
+
+        /* write out braid tables for each value of N */
+        for (n = 1; n <= 6; n++) {
+            fprintf(out,
+            "\n"
+            "#if N == %d\n", n);
+
+            /* compute braid tables for this N and 64-bit word_t */
+            braid(ltl, big, n, 8);
+
+            /* write out braid tables for 64-bit z_word_t to crc32.h */
+            fprintf(out,
+            "\n"
+            "#if W == 8\n"
+            "\n"
+            "local const z_crc_t FAR crc_braid_table[][256] = {\n");
+            for (k = 0; k < 8; k++) {
+                fprintf(out, "   {");
+                write_table(out, ltl[k], 256);
+                fprintf(out, "}%s", k < 7 ? ",\n" : "");
+            }
+            fprintf(out,
+            "};\n"
+            "\n"
+            "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
+            for (k = 0; k < 8; k++) {
+                fprintf(out, "   {");
+                write_table64(out, big[k], 256);
+                fprintf(out, "}%s", k < 7 ? ",\n" : "");
+            }
+            fprintf(out,
+            "};\n");
+
+            /* compute braid tables for this N and 32-bit word_t */
+            braid(ltl, big, n, 4);
+
+            /* write out braid tables for 32-bit z_word_t to crc32.h */
+            fprintf(out,
+            "\n"
+            "#else /* W == 4 */\n"
+            "\n"
+            "local const z_crc_t FAR crc_braid_table[][256] = {\n");
+            for (k = 0; k < 4; k++) {
+                fprintf(out, "   {");
+                write_table(out, ltl[k], 256);
+                fprintf(out, "}%s", k < 3 ? ",\n" : "");
+            }
+            fprintf(out,
+            "};\n"
+            "\n"
+            "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
+            for (k = 0; k < 4; k++) {
+                fprintf(out, "   {");
+                write_table32hi(out, big[k], 256);
+                fprintf(out, "}%s", k < 3 ? ",\n" : "");
+            }
+            fprintf(out,
+            "};\n"
+            "\n"
+            "#endif\n"
+            "\n"
+            "#endif\n");
         }
-        fprintf(out, "#endif\n");
-#  endif /* BYFOUR */
-        fprintf(out, "  }\n};\n");
+        fprintf(out,
+            "\n"
+            "#endif\n");
+
+        /* write out zeros operator table to crc32.h */
+        fprintf(out,
+            "\n"
+            "local const z_crc_t FAR x2n_table[] = {\n"
+            "    ");
+        write_table(out, x2n_table, 32);
+        fprintf(out,
+            "};\n");
         fclose(out);
     }
 #endif /* MAKECRCH */
 }
 
 #ifdef MAKECRCH
-local void write_table(out, table)
-    FILE *out;
-    const z_crc_t FAR *table;
-{
+
+/*
+   Write the 32-bit values in table[0..k-1] to out, five per line in
+   hexadecimal separated by commas.
+ */
+local void write_table(FILE *out, const z_crc_t FAR *table, int k) {
     int n;
 
-    for (n = 0; n < 256; n++)
-        fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : "    ",
+    for (n = 0; n < k; n++)
+        fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : "    ",
                 (unsigned long)(table[n]),
-                n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
+                n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
+}
+
+/*
+   Write the high 32-bits of each value in table[0..k-1] to out, five per line
+   in hexadecimal separated by commas.
+ */
+local void write_table32hi(FILE *out, const z_word_t FAR *table, int k) {
+    int n;
+
+    for (n = 0; n < k; n++)
+        fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : "    ",
+                (unsigned long)(table[n] >> 32),
+                n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
+}
+
+/*
+  Write the 64-bit values in table[0..k-1] to out, three per line in
+  hexadecimal separated by commas. This assumes that if there is a 64-bit
+  type, then there is also a long long integer type, and it is at least 64
+  bits. If not, then the type cast and format string can be adjusted
+  accordingly.
+ */
+local void write_table64(FILE *out, const z_word_t FAR *table, int k) {
+    int n;
+
+    for (n = 0; n < k; n++)
+        fprintf(out, "%s0x%016llx%s", n == 0 || n % 3 ? "" : "    ",
+                (unsigned long long)(table[n]),
+                n == k - 1 ? "" : (n % 3 == 2 ? ",\n" : ", "));
+}
+
+/* Actually do the deed. */
+int main(void) {
+    make_crc_table();
+    return 0;
 }
+
 #endif /* MAKECRCH */
 
-#else /* !DYNAMIC_CRC_TABLE */
-/* ========================================================================
- * Tables of CRC-32s of all single-byte values, made by make_crc_table().
+#ifdef W
+/*
+  Generate the little and big-endian braid tables for the given n and z_word_t
+  size w. Each array must have room for w blocks of 256 elements.
  */
-#include "crc32.h"
+local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) {
+    int k;
+    z_crc_t i, p, q;
+    for (k = 0; k < w; k++) {
+        p = x2nmodp((n * w + 3 - k) << 3, 0);
+        ltl[k][0] = 0;
+        big[w - 1 - k][0] = 0;
+        for (i = 1; i < 256; i++) {
+            ltl[k][i] = q = multmodp(i << 24, p);
+            big[w - 1 - k][i] = byte_swap(q);
+        }
+    }
+}
+#endif
+
 #endif /* DYNAMIC_CRC_TABLE */
 
 /* =========================================================================
- * This function can be used by asm versions of crc32()
+ * This function can be used by asm versions of crc32(), and to force the
+ * generation of the CRC tables in a threaded application.
  */
-const z_crc_t FAR * ZEXPORT get_crc_table()
-{
+const z_crc_t FAR * ZEXPORT get_crc_table(void) {
 #ifdef DYNAMIC_CRC_TABLE
-    if (crc_table_empty)
-        make_crc_table();
+    once(&made, make_crc_table);
 #endif /* DYNAMIC_CRC_TABLE */
     return (const z_crc_t FAR *)crc_table;
 }
 
-/* ========================================================================= */
-#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
-#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
+/* =========================================================================
+ * Use ARM machine instructions if available. This will compute the CRC about
+ * ten times faster than the braided calculation. This code does not check for
+ * the presence of the CRC instruction at run time. __ARM_FEATURE_CRC32 will
+ * only be defined if the compilation specifies an ARM processor architecture
+ * that has the instructions. For example, compiling with -march=armv8.1-a or
+ * -march=armv8-a+crc, or -march=native if the compile machine has the crc32
+ * instructions.
+ */
+#ifdef ARMCRC32
 
-/* ========================================================================= */
-unsigned long ZEXPORT crc32_z(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    z_size_t len;
-{
-    if (buf == Z_NULL) return 0UL;
+/*
+   Constants empirically determined to maximize speed. These values are from
+   measurements on a Cortex-A57. Your mileage may vary.
+ */
+#define Z_BATCH 3990                /* number of words in a batch */
+#define Z_BATCH_ZEROS 0xa10d3d0c    /* computed from Z_BATCH = 3990 */
+#define Z_BATCH_MIN 800             /* fewest words in a final batch */
+
+unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf,
+                              z_size_t len) {
+    z_crc_t val;
+    z_word_t crc1, crc2;
+    const z_word_t *word;
+    z_word_t val0, val1, val2;
+    z_size_t last, last2, i;
+    z_size_t num;
+
+    /* Return initial CRC, if requested. */
+    if (buf == Z_NULL) return 0;
 
 #ifdef DYNAMIC_CRC_TABLE
-    if (crc_table_empty)
-        make_crc_table();
+    once(&made, make_crc_table);
 #endif /* DYNAMIC_CRC_TABLE */
 
-#ifdef BYFOUR
-    if (sizeof(void *) == sizeof(ptrdiff_t)) {
-        z_crc_t endian;
+    /* Pre-condition the CRC */
+    crc = (~crc) & 0xffffffff;
 
-        endian = 1;
-        if (*((unsigned char *)(&endian)))
-            return crc32_little(crc, buf, len);
-        else
-            return crc32_big(crc, buf, len);
+    /* Compute the CRC up to a word boundary. */
+    while (len && ((z_size_t)buf & 7) != 0) {
+        len--;
+        val = *buf++;
+        __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
     }
-#endif /* BYFOUR */
-    crc = crc ^ 0xffffffffUL;
-    while (len >= 8) {
-        DO8;
-        len -= 8;
+
+    /* Prepare to compute the CRC on full 64-bit words word[0..num-1]. */
+    word = (z_word_t const *)buf;
+    num = len >> 3;
+    len &= 7;
+
+    /* Do three interleaved CRCs to realize the throughput of one crc32x
+       instruction per cycle. Each CRC is calculated on Z_BATCH words. The
+       three CRCs are combined into a single CRC after each set of batches. */
+    while (num >= 3 * Z_BATCH) {
+        crc1 = 0;
+        crc2 = 0;
+        for (i = 0; i < Z_BATCH; i++) {
+            val0 = word[i];
+            val1 = word[i + Z_BATCH];
+            val2 = word[i + 2 * Z_BATCH];
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
+        }
+        word += 3 * Z_BATCH;
+        num -= 3 * Z_BATCH;
+        crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc1;
+        crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc2;
     }
-    if (len) do {
-        DO1;
-    } while (--len);
-    return crc ^ 0xffffffffUL;
-}
 
-/* ========================================================================= */
-unsigned long ZEXPORT crc32(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    uInt len;
-{
-    return crc32_z(crc, buf, len);
+    /* Do one last smaller batch with the remaining words, if there are enough
+       to pay for the combination of CRCs. */
+    last = num / 3;
+    if (last >= Z_BATCH_MIN) {
+        last2 = last << 1;
+        crc1 = 0;
+        crc2 = 0;
+        for (i = 0; i < last; i++) {
+            val0 = word[i];
+            val1 = word[i + last];
+            val2 = word[i + last2];
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
+        }
+        word += 3 * last;
+        num -= 3 * last;
+        val = x2nmodp(last, 6);
+        crc = multmodp(val, crc) ^ crc1;
+        crc = multmodp(val, crc) ^ crc2;
+    }
+
+    /* Compute the CRC on any remaining words. */
+    for (i = 0; i < num; i++) {
+        val0 = word[i];
+        __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+    }
+    word += num;
+
+    /* Complete the CRC on any remaining bytes. */
+    buf = (const unsigned char FAR *)word;
+    while (len) {
+        len--;
+        val = *buf++;
+        __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
+    }
+
+    /* Return the CRC, post-conditioned. */
+    return crc ^ 0xffffffff;
 }
 
-#ifdef BYFOUR
+#else
+
+#ifdef W
 
 /*
-   This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
-   integer pointer type. This violates the strict aliasing rule, where a
-   compiler can assume, for optimization purposes, that two pointers to
-   fundamentally different types won't ever point to the same memory. This can
-   manifest as a problem only if one of the pointers is written to. This code
-   only reads from those pointers. So long as this code remains isolated in
-   this compilation unit, there won't be a problem. For this reason, this code
-   should not be copied and pasted into a compilation unit in which other code
-   writes to the buffer that is passed to these routines.
+  Return the CRC of the W bytes in the word_t data, taking the
+  least-significant byte of the word as the first byte of data, without any pre
+  or post conditioning. This is used to combine the CRCs of each braid.
  */
+local z_crc_t crc_word(z_word_t data) {
+    int k;
+    for (k = 0; k < W; k++)
+        data = (data >> 8) ^ crc_table[data & 0xff];
+    return (z_crc_t)data;
+}
 
-/* ========================================================================= */
-#define DOLIT4 c ^= *buf4++; \
-        c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
-            crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
-#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
+local z_word_t crc_word_big(z_word_t data) {
+    int k;
+    for (k = 0; k < W; k++)
+        data = (data << 8) ^
+            crc_big_table[(data >> ((W - 1) << 3)) & 0xff];
+    return data;
+}
+
+#endif
 
 /* ========================================================================= */
-local unsigned long crc32_little(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    z_size_t len;
-{
-    register z_crc_t c;
-    register const z_crc_t FAR *buf4;
-
-    c = (z_crc_t)crc;
-    c = ~c;
-    while (len && ((ptrdiff_t)buf & 3)) {
-        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
-        len--;
-    }
+unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf,
+                              z_size_t len) {
+    /* Return initial CRC, if requested. */
+    if (buf == Z_NULL) return 0;
 
-    buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
-    while (len >= 32) {
-        DOLIT32;
-        len -= 32;
-    }
-    while (len >= 4) {
-        DOLIT4;
-        len -= 4;
-    }
-    buf = (const unsigned char FAR *)buf4;
+#ifdef DYNAMIC_CRC_TABLE
+    once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
 
-    if (len) do {
-        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
-    } while (--len);
-    c = ~c;
-    return (unsigned long)c;
-}
+    /* Pre-condition the CRC */
+    crc = (~crc) & 0xffffffff;
 
-/* ========================================================================= */
-#define DOBIG4 c ^= *buf4++; \
-        c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
-            crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
-#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
+#ifdef W
 
-/* ========================================================================= */
-local unsigned long crc32_big(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    z_size_t len;
-{
-    register z_crc_t c;
-    register const z_crc_t FAR *buf4;
-
-    c = ZSWAP32((z_crc_t)crc);
-    c = ~c;
-    while (len && ((ptrdiff_t)buf & 3)) {
-        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
-        len--;
+    /* If provided enough bytes, do a braided CRC calculation. */
+    if (len >= N * W + W - 1) {
+        z_size_t blks;
+        z_word_t const *words;
+        unsigned endian;
+        int k;
+
+        /* Compute the CRC up to a z_word_t boundary. */
+        while (len && ((z_size_t)buf & (W - 1)) != 0) {
+            len--;
+            crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        }
+
+        /* Compute the CRC on as many N z_word_t blocks as are available. */
+        blks = len / (N * W);
+        len -= blks * N * W;
+        words = (z_word_t const *)buf;
+
+        /* Do endian check at execution time instead of compile time, since ARM
+           processors can change the endianness at execution time. If the
+           compiler knows what the endianness will be, it can optimize out the
+           check and the unused branch. */
+        endian = 1;
+        if (*(unsigned char *)&endian) {
+            /* Little endian. */
+
+            z_crc_t crc0;
+            z_word_t word0;
+#if N > 1
+            z_crc_t crc1;
+            z_word_t word1;
+#if N > 2
+            z_crc_t crc2;
+            z_word_t word2;
+#if N > 3
+            z_crc_t crc3;
+            z_word_t word3;
+#if N > 4
+            z_crc_t crc4;
+            z_word_t word4;
+#if N > 5
+            z_crc_t crc5;
+            z_word_t word5;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+            /* Initialize the CRC for each braid. */
+            crc0 = crc;
+#if N > 1
+            crc1 = 0;
+#if N > 2
+            crc2 = 0;
+#if N > 3
+            crc3 = 0;
+#if N > 4
+            crc4 = 0;
+#if N > 5
+            crc5 = 0;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+            /*
+              Process the first blks-1 blocks, computing the CRCs on each braid
+              independently.
+             */
+            while (--blks) {
+                /* Load the word for each braid into registers. */
+                word0 = crc0 ^ words[0];
+#if N > 1
+                word1 = crc1 ^ words[1];
+#if N > 2
+                word2 = crc2 ^ words[2];
+#if N > 3
+                word3 = crc3 ^ words[3];
+#if N > 4
+                word4 = crc4 ^ words[4];
+#if N > 5
+                word5 = crc5 ^ words[5];
+#endif
+#endif
+#endif
+#endif
+#endif
+                words += N;
+
+                /* Compute and update the CRC for each word. The loop should
+                   get unrolled. */
+                crc0 = crc_braid_table[0][word0 & 0xff];
+#if N > 1
+                crc1 = crc_braid_table[0][word1 & 0xff];
+#if N > 2
+                crc2 = crc_braid_table[0][word2 & 0xff];
+#if N > 3
+                crc3 = crc_braid_table[0][word3 & 0xff];
+#if N > 4
+                crc4 = crc_braid_table[0][word4 & 0xff];
+#if N > 5
+                crc5 = crc_braid_table[0][word5 & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+                for (k = 1; k < W; k++) {
+                    crc0 ^= crc_braid_table[k][(word0 >> (k << 3)) & 0xff];
+#if N > 1
+                    crc1 ^= crc_braid_table[k][(word1 >> (k << 3)) & 0xff];
+#if N > 2
+                    crc2 ^= crc_braid_table[k][(word2 >> (k << 3)) & 0xff];
+#if N > 3
+                    crc3 ^= crc_braid_table[k][(word3 >> (k << 3)) & 0xff];
+#if N > 4
+                    crc4 ^= crc_braid_table[k][(word4 >> (k << 3)) & 0xff];
+#if N > 5
+                    crc5 ^= crc_braid_table[k][(word5 >> (k << 3)) & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+                }
+            }
+
+            /*
+              Process the last block, combining the CRCs of the N braids at the
+              same time.
+             */
+            crc = crc_word(crc0 ^ words[0]);
+#if N > 1
+            crc = crc_word(crc1 ^ words[1] ^ crc);
+#if N > 2
+            crc = crc_word(crc2 ^ words[2] ^ crc);
+#if N > 3
+            crc = crc_word(crc3 ^ words[3] ^ crc);
+#if N > 4
+            crc = crc_word(crc4 ^ words[4] ^ crc);
+#if N > 5
+            crc = crc_word(crc5 ^ words[5] ^ crc);
+#endif
+#endif
+#endif
+#endif
+#endif
+            words += N;
+        }
+        else {
+            /* Big endian. */
+
+            z_word_t crc0, word0, comb;
+#if N > 1
+            z_word_t crc1, word1;
+#if N > 2
+            z_word_t crc2, word2;
+#if N > 3
+            z_word_t crc3, word3;
+#if N > 4
+            z_word_t crc4, word4;
+#if N > 5
+            z_word_t crc5, word5;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+            /* Initialize the CRC for each braid. */
+            crc0 = byte_swap(crc);
+#if N > 1
+            crc1 = 0;
+#if N > 2
+            crc2 = 0;
+#if N > 3
+            crc3 = 0;
+#if N > 4
+            crc4 = 0;
+#if N > 5
+            crc5 = 0;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+            /*
+              Process the first blks-1 blocks, computing the CRCs on each braid
+              independently.
+             */
+            while (--blks) {
+                /* Load the word for each braid into registers. */
+                word0 = crc0 ^ words[0];
+#if N > 1
+                word1 = crc1 ^ words[1];
+#if N > 2
+                word2 = crc2 ^ words[2];
+#if N > 3
+                word3 = crc3 ^ words[3];
+#if N > 4
+                word4 = crc4 ^ words[4];
+#if N > 5
+                word5 = crc5 ^ words[5];
+#endif
+#endif
+#endif
+#endif
+#endif
+                words += N;
+
+                /* Compute and update the CRC for each word. The loop should
+                   get unrolled. */
+                crc0 = crc_braid_big_table[0][word0 & 0xff];
+#if N > 1
+                crc1 = crc_braid_big_table[0][word1 & 0xff];
+#if N > 2
+                crc2 = crc_braid_big_table[0][word2 & 0xff];
+#if N > 3
+                crc3 = crc_braid_big_table[0][word3 & 0xff];
+#if N > 4
+                crc4 = crc_braid_big_table[0][word4 & 0xff];
+#if N > 5
+                crc5 = crc_braid_big_table[0][word5 & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+                for (k = 1; k < W; k++) {
+                    crc0 ^= crc_braid_big_table[k][(word0 >> (k << 3)) & 0xff];
+#if N > 1
+                    crc1 ^= crc_braid_big_table[k][(word1 >> (k << 3)) & 0xff];
+#if N > 2
+                    crc2 ^= crc_braid_big_table[k][(word2 >> (k << 3)) & 0xff];
+#if N > 3
+                    crc3 ^= crc_braid_big_table[k][(word3 >> (k << 3)) & 0xff];
+#if N > 4
+                    crc4 ^= crc_braid_big_table[k][(word4 >> (k << 3)) & 0xff];
+#if N > 5
+                    crc5 ^= crc_braid_big_table[k][(word5 >> (k << 3)) & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+                }
+            }
+
+            /*
+              Process the last block, combining the CRCs of the N braids at the
+              same time.
+             */
+            comb = crc_word_big(crc0 ^ words[0]);
+#if N > 1
+            comb = crc_word_big(crc1 ^ words[1] ^ comb);
+#if N > 2
+            comb = crc_word_big(crc2 ^ words[2] ^ comb);
+#if N > 3
+            comb = crc_word_big(crc3 ^ words[3] ^ comb);
+#if N > 4
+            comb = crc_word_big(crc4 ^ words[4] ^ comb);
+#if N > 5
+            comb = crc_word_big(crc5 ^ words[5] ^ comb);
+#endif
+#endif
+#endif
+#endif
+#endif
+            words += N;
+            crc = byte_swap(comb);
+        }
+
+        /*
+          Update the pointer to the remaining bytes to process.
+         */
+        buf = (unsigned char const *)words;
     }
 
-    buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
-    while (len >= 32) {
-        DOBIG32;
-        len -= 32;
+#endif /* W */
+
+    /* Complete the computation of the CRC on any remaining bytes. */
+    while (len >= 8) {
+        len -= 8;
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
     }
-    while (len >= 4) {
-        DOBIG4;
-        len -= 4;
+    while (len) {
+        len--;
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
     }
-    buf = (const unsigned char FAR *)buf4;
 
-    if (len) do {
-        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
-    } while (--len);
-    c = ~c;
-    return (unsigned long)(ZSWAP32(c));
+    /* Return the CRC, post-conditioned. */
+    return crc ^ 0xffffffff;
 }
 
-#endif /* BYFOUR */
-
-#define GF2_DIM 32      /* dimension of GF(2) vectors (length of CRC) */
+#endif
 
 /* ========================================================================= */
-local unsigned long gf2_matrix_times(mat, vec)
-    unsigned long *mat;
-    unsigned long vec;
-{
-    unsigned long sum;
-
-    sum = 0;
-    while (vec) {
-        if (vec & 1)
-            sum ^= *mat;
-        vec >>= 1;
-        mat++;
-    }
-    return sum;
+unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf,
+                            uInt len) {
+    return crc32_z(crc, buf, len);
 }
 
 /* ========================================================================= */
-local void gf2_matrix_square(square, mat)
-    unsigned long *square;
-    unsigned long *mat;
-{
-    int n;
-
-    for (n = 0; n < GF2_DIM; n++)
-        square[n] = gf2_matrix_times(mat, mat[n]);
+uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) {
+#ifdef DYNAMIC_CRC_TABLE
+    once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
+    return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff);
 }
 
 /* ========================================================================= */
-local uLong crc32_combine_(crc1, crc2, len2)
-    uLong crc1;
-    uLong crc2;
-    z_off64_t len2;
-{
-    int n;
-    unsigned long row;
-    unsigned long even[GF2_DIM];    /* even-power-of-two zeros operator */
-    unsigned long odd[GF2_DIM];     /* odd-power-of-two zeros operator */
-
-    /* degenerate case (also disallow negative lengths) */
-    if (len2 <= 0)
-        return crc1;
-
-    /* put operator for one zero bit in odd */
-    odd[0] = 0xedb88320UL;          /* CRC-32 polynomial */
-    row = 1;
-    for (n = 1; n < GF2_DIM; n++) {
-        odd[n] = row;
-        row <<= 1;
-    }
+uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) {
+    return crc32_combine64(crc1, crc2, (z_off64_t)len2);
+}
 
-    /* put operator for two zero bits in even */
-    gf2_matrix_square(even, odd);
-
-    /* put operator for four zero bits in odd */
-    gf2_matrix_square(odd, even);
-
-    /* apply len2 zeros to crc1 (first square will put the operator for one
-       zero byte, eight zero bits, in even) */
-    do {
-        /* apply zeros operator for this bit of len2 */
-        gf2_matrix_square(even, odd);
-        if (len2 & 1)
-            crc1 = gf2_matrix_times(even, crc1);
-        len2 >>= 1;
-
-        /* if no more bits set, then done */
-        if (len2 == 0)
-            break;
-
-        /* another iteration of the loop with odd and even swapped */
-        gf2_matrix_square(odd, even);
-        if (len2 & 1)
-            crc1 = gf2_matrix_times(odd, crc1);
-        len2 >>= 1;
-
-        /* if no more bits set, then done */
-    } while (len2 != 0);
-
-    /* return combined crc */
-    crc1 ^= crc2;
-    return crc1;
+/* ========================================================================= */
+uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) {
+#ifdef DYNAMIC_CRC_TABLE
+    once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
+    return x2nmodp(len2, 3);
 }
 
 /* ========================================================================= */
-uLong ZEXPORT crc32_combine(crc1, crc2, len2)
-    uLong crc1;
-    uLong crc2;
-    z_off_t len2;
-{
-    return crc32_combine_(crc1, crc2, len2);
+uLong ZEXPORT crc32_combine_gen(z_off_t len2) {
+    return crc32_combine_gen64((z_off64_t)len2);
 }
 
-uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
-    uLong crc1;
-    uLong crc2;
-    z_off64_t len2;
-{
-    return crc32_combine_(crc1, crc2, len2);
+/* ========================================================================= */
+uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) {
+    return multmodp(op, crc1) ^ (crc2 & 0xffffffff);
 }
diff --git a/libs/zlib/crc32.h b/libs/zlib/crc32.h
index 9e0c778102..137df68d61 100644
--- a/libs/zlib/crc32.h
+++ b/libs/zlib/crc32.h
@@ -2,440 +2,9445 @@
  * Generated automatically by crc32.c
  */
 
-local const z_crc_t FAR crc_table[TBLS][256] =
-{
-  {
-    0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
-    0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
-    0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
-    0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
-    0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
-    0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
-    0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
-    0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
-    0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
-    0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
-    0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
-    0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
-    0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
-    0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
-    0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
-    0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
-    0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
-    0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
-    0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
-    0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
-    0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
-    0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
-    0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
-    0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
-    0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
-    0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
-    0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
-    0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
-    0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
-    0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
-    0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
-    0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
-    0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
-    0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
-    0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
-    0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
-    0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
-    0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
-    0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
-    0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
-    0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
-    0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
-    0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
-    0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
-    0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
-    0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
-    0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
-    0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
-    0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
-    0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
-    0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
-    0x2d02ef8dUL
-#ifdef BYFOUR
-  },
-  {
-    0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
-    0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
-    0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
-    0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
-    0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
-    0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
-    0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
-    0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
-    0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
-    0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
-    0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
-    0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
-    0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
-    0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
-    0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
-    0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
-    0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
-    0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
-    0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
-    0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
-    0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
-    0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
-    0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
-    0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
-    0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
-    0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
-    0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
-    0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
-    0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
-    0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
-    0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
-    0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
-    0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
-    0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
-    0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
-    0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
-    0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
-    0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
-    0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
-    0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
-    0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
-    0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
-    0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
-    0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
-    0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
-    0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
-    0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
-    0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
-    0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
-    0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
-    0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
-    0x9324fd72UL
-  },
-  {
-    0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
-    0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
-    0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
-    0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
-    0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
-    0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
-    0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
-    0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
-    0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
-    0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
-    0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
-    0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
-    0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
-    0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
-    0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
-    0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
-    0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
-    0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
-    0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
-    0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
-    0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
-    0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
-    0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
-    0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
-    0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
-    0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
-    0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
-    0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
-    0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
-    0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
-    0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
-    0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
-    0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
-    0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
-    0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
-    0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
-    0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
-    0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
-    0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
-    0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
-    0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
-    0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
-    0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
-    0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
-    0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
-    0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
-    0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
-    0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
-    0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
-    0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
-    0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
-    0xbe9834edUL
-  },
-  {
-    0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
-    0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
-    0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
-    0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
-    0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
-    0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
-    0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
-    0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
-    0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
-    0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
-    0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
-    0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
-    0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
-    0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
-    0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
-    0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
-    0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
-    0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
-    0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
-    0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
-    0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
-    0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
-    0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
-    0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
-    0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
-    0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
-    0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
-    0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
-    0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
-    0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
-    0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
-    0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
-    0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
-    0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
-    0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
-    0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
-    0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
-    0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
-    0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
-    0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
-    0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
-    0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
-    0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
-    0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
-    0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
-    0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
-    0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
-    0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
-    0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
-    0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
-    0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
-    0xde0506f1UL
-  },
-  {
-    0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
-    0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
-    0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
-    0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
-    0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
-    0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
-    0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
-    0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
-    0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
-    0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
-    0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
-    0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
-    0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
-    0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
-    0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
-    0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
-    0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
-    0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
-    0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
-    0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
-    0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
-    0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
-    0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
-    0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
-    0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
-    0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
-    0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
-    0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
-    0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
-    0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
-    0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
-    0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
-    0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
-    0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
-    0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
-    0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
-    0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
-    0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
-    0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
-    0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
-    0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
-    0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
-    0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
-    0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
-    0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
-    0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
-    0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
-    0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
-    0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
-    0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
-    0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
-    0x8def022dUL
-  },
-  {
-    0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
-    0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
-    0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
-    0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
-    0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
-    0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
-    0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
-    0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
-    0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
-    0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
-    0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
-    0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
-    0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
-    0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
-    0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
-    0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
-    0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
-    0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
-    0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
-    0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
-    0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
-    0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
-    0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
-    0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
-    0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
-    0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
-    0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
-    0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
-    0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
-    0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
-    0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
-    0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
-    0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
-    0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
-    0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
-    0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
-    0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
-    0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
-    0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
-    0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
-    0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
-    0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
-    0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
-    0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
-    0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
-    0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
-    0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
-    0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
-    0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
-    0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
-    0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
-    0x72fd2493UL
-  },
-  {
-    0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
-    0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
-    0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
-    0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
-    0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
-    0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
-    0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
-    0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
-    0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
-    0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
-    0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
-    0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
-    0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
-    0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
-    0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
-    0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
-    0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
-    0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
-    0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
-    0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
-    0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
-    0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
-    0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
-    0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
-    0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
-    0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
-    0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
-    0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
-    0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
-    0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
-    0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
-    0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
-    0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
-    0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
-    0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
-    0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
-    0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
-    0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
-    0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
-    0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
-    0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
-    0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
-    0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
-    0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
-    0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
-    0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
-    0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
-    0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
-    0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
-    0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
-    0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
-    0xed3498beUL
-  },
-  {
-    0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
-    0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
-    0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
-    0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
-    0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
-    0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
-    0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
-    0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
-    0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
-    0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
-    0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
-    0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
-    0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
-    0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
-    0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
-    0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
-    0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
-    0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
-    0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
-    0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
-    0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
-    0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
-    0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
-    0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
-    0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
-    0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
-    0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
-    0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
-    0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
-    0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
-    0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
-    0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
-    0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
-    0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
-    0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
-    0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
-    0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
-    0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
-    0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
-    0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
-    0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
-    0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
-    0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
-    0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
-    0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
-    0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
-    0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
-    0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
-    0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
-    0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
-    0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
-    0xf10605deUL
+local const z_crc_t FAR crc_table[] = {
+    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+    0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+    0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+    0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+    0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+    0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+    0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+    0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+    0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+    0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+    0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+    0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+    0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+    0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+    0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+    0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+    0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+    0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+    0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+    0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+    0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+    0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+    0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+    0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+    0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+    0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+    0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+    0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+    0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+    0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+    0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+    0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+    0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+    0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+    0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+    0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+    0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+    0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+    0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+    0x2d02ef8d};
+
+#ifdef W
+
+#if W == 8
+
+local const z_word_t FAR crc_big_table[] = {
+    0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
+    0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
+    0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
+    0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
+    0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
+    0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
+    0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
+    0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
+    0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
+    0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
+    0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
+    0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
+    0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
+    0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
+    0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
+    0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
+    0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
+    0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
+    0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
+    0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
+    0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
+    0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
+    0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
+    0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
+    0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
+    0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
+    0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
+    0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
+    0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
+    0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
+    0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
+    0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
+    0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
+    0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
+    0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
+    0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
+    0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
+    0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
+    0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
+    0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
+    0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
+    0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
+    0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
+    0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
+    0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
+    0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
+    0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
+    0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
+    0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
+    0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
+    0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
+    0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
+    0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
+    0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
+    0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
+    0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
+    0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
+    0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
+    0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
+    0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
+    0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
+    0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
+    0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
+    0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
+    0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
+    0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
+    0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
+    0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
+    0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
+    0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
+    0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
+    0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
+    0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
+    0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
+    0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
+    0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
+    0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
+    0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
+    0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
+    0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
+    0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
+    0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
+    0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
+    0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
+    0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
+    0x8def022d00000000};
+
+#else /* W == 4 */
+
+local const z_word_t FAR crc_big_table[] = {
+    0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
+    0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
+    0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
+    0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
+    0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
+    0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
+    0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
+    0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
+    0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
+    0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
+    0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
+    0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
+    0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
+    0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
+    0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
+    0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
+    0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
+    0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
+    0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
+    0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
+    0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
+    0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
+    0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
+    0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
+    0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
+    0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
+    0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
+    0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
+    0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
+    0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
+    0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
+    0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
+    0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
+    0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
+    0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
+    0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
+    0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
+    0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
+    0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
+    0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
+    0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
+    0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
+    0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
+    0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
+    0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
+    0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
+    0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
+    0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
+    0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
+    0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
+    0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
+    0x8def022d};
+
+#endif
+
+#if N == 1
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
+    0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
+    0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
+    0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
+    0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
+    0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
+    0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
+    0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
+    0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
+    0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
+    0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
+    0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
+    0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
+    0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
+    0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
+    0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
+    0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
+    0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
+    0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
+    0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
+    0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
+    0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
+    0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
+    0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
+    0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
+    0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
+    0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
+    0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
+    0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
+    0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
+    0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
+    0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
+    0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
+    0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
+    0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
+    0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
+    0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
+    0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
+    0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
+    0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
+    0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
+    0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
+    0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
+    0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
+    0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
+    0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
+    0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
+    0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
+    0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
+    0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
+    0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
+    0x264b06e6},
+   {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
+    0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
+    0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
+    0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
+    0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
+    0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
+    0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
+    0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
+    0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
+    0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
+    0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
+    0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
+    0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
+    0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
+    0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
+    0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
+    0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
+    0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
+    0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
+    0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
+    0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
+    0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
+    0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
+    0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
+    0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
+    0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
+    0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
+    0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
+    0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
+    0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
+    0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
+    0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
+    0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
+    0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
+    0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
+    0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
+    0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
+    0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
+    0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
+    0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
+    0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
+    0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
+    0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
+    0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
+    0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
+    0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
+    0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
+    0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
+    0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
+    0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
+    0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
+    0x92364a30},
+   {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
+    0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
+    0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
+    0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
+    0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
+    0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
+    0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
+    0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
+    0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
+    0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
+    0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
+    0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
+    0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
+    0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
+    0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
+    0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
+    0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
+    0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
+    0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
+    0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
+    0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
+    0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
+    0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
+    0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
+    0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
+    0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
+    0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
+    0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
+    0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
+    0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
+    0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
+    0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
+    0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
+    0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
+    0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
+    0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
+    0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
+    0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
+    0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
+    0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
+    0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
+    0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
+    0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
+    0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
+    0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
+    0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
+    0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
+    0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
+    0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
+    0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
+    0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
+    0xe4c4abcc},
+   {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
+    0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
+    0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
+    0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
+    0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
+    0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
+    0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
+    0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
+    0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
+    0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
+    0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
+    0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
+    0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
+    0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
+    0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
+    0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
+    0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
+    0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
+    0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
+    0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
+    0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
+    0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
+    0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
+    0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
+    0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
+    0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
+    0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
+    0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
+    0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
+    0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
+    0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
+    0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
+    0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
+    0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
+    0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
+    0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
+    0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
+    0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
+    0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
+    0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
+    0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
+    0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
+    0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
+    0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
+    0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
+    0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
+    0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
+    0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
+    0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
+    0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
+    0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
+    0xca64c78c},
+   {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
+    0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
+    0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
+    0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
+    0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
+    0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
+    0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
+    0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
+    0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
+    0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
+    0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
+    0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
+    0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
+    0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
+    0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
+    0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
+    0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
+    0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
+    0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
+    0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
+    0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
+    0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
+    0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
+    0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
+    0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
+    0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
+    0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
+    0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
+    0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
+    0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
+    0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
+    0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
+    0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
+    0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
+    0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
+    0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
+    0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
+    0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
+    0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
+    0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
+    0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
+    0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
+    0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
+    0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
+    0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
+    0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
+    0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
+    0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
+    0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
+    0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
+    0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
+    0xde0506f1},
+   {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
+    0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
+    0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
+    0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
+    0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
+    0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
+    0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
+    0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
+    0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
+    0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
+    0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
+    0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
+    0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
+    0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
+    0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
+    0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
+    0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
+    0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
+    0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
+    0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
+    0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
+    0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
+    0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
+    0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
+    0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
+    0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
+    0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
+    0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
+    0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
+    0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
+    0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
+    0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
+    0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
+    0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
+    0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
+    0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
+    0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
+    0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
+    0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
+    0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
+    0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
+    0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
+    0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
+    0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
+    0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
+    0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
+    0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
+    0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
+    0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
+    0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
+    0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
+    0xbe9834ed},
+   {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
+    0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
+    0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
+    0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
+    0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
+    0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
+    0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
+    0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
+    0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
+    0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
+    0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
+    0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
+    0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
+    0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
+    0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
+    0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
+    0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
+    0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
+    0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
+    0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
+    0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
+    0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
+    0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
+    0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
+    0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
+    0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
+    0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
+    0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
+    0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
+    0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
+    0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
+    0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
+    0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
+    0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
+    0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
+    0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
+    0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
+    0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
+    0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
+    0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
+    0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
+    0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
+    0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
+    0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
+    0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
+    0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
+    0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
+    0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
+    0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
+    0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
+    0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
+    0x9324fd72},
+   {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+    0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+    0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+    0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+    0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+    0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+    0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+    0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+    0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+    0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+    0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+    0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+    0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+    0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+    0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+    0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+    0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+    0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+    0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+    0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+    0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+    0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+    0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+    0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+    0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+    0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+    0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+    0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+    0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+    0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+    0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+    0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+    0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+    0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+    0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+    0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+    0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+    0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+    0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+    0x2d02ef8d}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
+    0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
+    0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
+    0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
+    0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
+    0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
+    0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
+    0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
+    0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
+    0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
+    0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
+    0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
+    0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
+    0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
+    0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
+    0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
+    0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
+    0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
+    0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
+    0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
+    0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
+    0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
+    0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
+    0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
+    0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
+    0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
+    0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
+    0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
+    0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
+    0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
+    0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
+    0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
+    0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
+    0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
+    0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
+    0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
+    0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
+    0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
+    0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
+    0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
+    0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
+    0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
+    0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
+    0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
+    0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
+    0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
+    0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
+    0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
+    0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
+    0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
+    0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
+    0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
+    0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
+    0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
+    0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
+    0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
+    0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
+    0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
+    0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
+    0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
+    0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
+    0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
+    0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
+    0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
+    0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
+    0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
+    0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
+    0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
+    0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
+    0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
+    0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
+    0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
+    0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
+    0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
+    0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
+    0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
+    0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
+    0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
+    0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
+    0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
+    0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
+    0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
+    0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
+    0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
+    0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
+    0x8def022d00000000},
+   {0x0000000000000000, 0x41311b1900000000, 0x8262363200000000,
+    0xc3532d2b00000000, 0x04c56c6400000000, 0x45f4777d00000000,
+    0x86a75a5600000000, 0xc796414f00000000, 0x088ad9c800000000,
+    0x49bbc2d100000000, 0x8ae8effa00000000, 0xcbd9f4e300000000,
+    0x0c4fb5ac00000000, 0x4d7eaeb500000000, 0x8e2d839e00000000,
+    0xcf1c988700000000, 0x5112c24a00000000, 0x1023d95300000000,
+    0xd370f47800000000, 0x9241ef6100000000, 0x55d7ae2e00000000,
+    0x14e6b53700000000, 0xd7b5981c00000000, 0x9684830500000000,
+    0x59981b8200000000, 0x18a9009b00000000, 0xdbfa2db000000000,
+    0x9acb36a900000000, 0x5d5d77e600000000, 0x1c6c6cff00000000,
+    0xdf3f41d400000000, 0x9e0e5acd00000000, 0xa224849500000000,
+    0xe3159f8c00000000, 0x2046b2a700000000, 0x6177a9be00000000,
+    0xa6e1e8f100000000, 0xe7d0f3e800000000, 0x2483dec300000000,
+    0x65b2c5da00000000, 0xaaae5d5d00000000, 0xeb9f464400000000,
+    0x28cc6b6f00000000, 0x69fd707600000000, 0xae6b313900000000,
+    0xef5a2a2000000000, 0x2c09070b00000000, 0x6d381c1200000000,
+    0xf33646df00000000, 0xb2075dc600000000, 0x715470ed00000000,
+    0x30656bf400000000, 0xf7f32abb00000000, 0xb6c231a200000000,
+    0x75911c8900000000, 0x34a0079000000000, 0xfbbc9f1700000000,
+    0xba8d840e00000000, 0x79dea92500000000, 0x38efb23c00000000,
+    0xff79f37300000000, 0xbe48e86a00000000, 0x7d1bc54100000000,
+    0x3c2ade5800000000, 0x054f79f000000000, 0x447e62e900000000,
+    0x872d4fc200000000, 0xc61c54db00000000, 0x018a159400000000,
+    0x40bb0e8d00000000, 0x83e823a600000000, 0xc2d938bf00000000,
+    0x0dc5a03800000000, 0x4cf4bb2100000000, 0x8fa7960a00000000,
+    0xce968d1300000000, 0x0900cc5c00000000, 0x4831d74500000000,
+    0x8b62fa6e00000000, 0xca53e17700000000, 0x545dbbba00000000,
+    0x156ca0a300000000, 0xd63f8d8800000000, 0x970e969100000000,
+    0x5098d7de00000000, 0x11a9ccc700000000, 0xd2fae1ec00000000,
+    0x93cbfaf500000000, 0x5cd7627200000000, 0x1de6796b00000000,
+    0xdeb5544000000000, 0x9f844f5900000000, 0x58120e1600000000,
+    0x1923150f00000000, 0xda70382400000000, 0x9b41233d00000000,
+    0xa76bfd6500000000, 0xe65ae67c00000000, 0x2509cb5700000000,
+    0x6438d04e00000000, 0xa3ae910100000000, 0xe29f8a1800000000,
+    0x21cca73300000000, 0x60fdbc2a00000000, 0xafe124ad00000000,
+    0xeed03fb400000000, 0x2d83129f00000000, 0x6cb2098600000000,
+    0xab2448c900000000, 0xea1553d000000000, 0x29467efb00000000,
+    0x687765e200000000, 0xf6793f2f00000000, 0xb748243600000000,
+    0x741b091d00000000, 0x352a120400000000, 0xf2bc534b00000000,
+    0xb38d485200000000, 0x70de657900000000, 0x31ef7e6000000000,
+    0xfef3e6e700000000, 0xbfc2fdfe00000000, 0x7c91d0d500000000,
+    0x3da0cbcc00000000, 0xfa368a8300000000, 0xbb07919a00000000,
+    0x7854bcb100000000, 0x3965a7a800000000, 0x4b98833b00000000,
+    0x0aa9982200000000, 0xc9fab50900000000, 0x88cbae1000000000,
+    0x4f5def5f00000000, 0x0e6cf44600000000, 0xcd3fd96d00000000,
+    0x8c0ec27400000000, 0x43125af300000000, 0x022341ea00000000,
+    0xc1706cc100000000, 0x804177d800000000, 0x47d7369700000000,
+    0x06e62d8e00000000, 0xc5b500a500000000, 0x84841bbc00000000,
+    0x1a8a417100000000, 0x5bbb5a6800000000, 0x98e8774300000000,
+    0xd9d96c5a00000000, 0x1e4f2d1500000000, 0x5f7e360c00000000,
+    0x9c2d1b2700000000, 0xdd1c003e00000000, 0x120098b900000000,
+    0x533183a000000000, 0x9062ae8b00000000, 0xd153b59200000000,
+    0x16c5f4dd00000000, 0x57f4efc400000000, 0x94a7c2ef00000000,
+    0xd596d9f600000000, 0xe9bc07ae00000000, 0xa88d1cb700000000,
+    0x6bde319c00000000, 0x2aef2a8500000000, 0xed796bca00000000,
+    0xac4870d300000000, 0x6f1b5df800000000, 0x2e2a46e100000000,
+    0xe136de6600000000, 0xa007c57f00000000, 0x6354e85400000000,
+    0x2265f34d00000000, 0xe5f3b20200000000, 0xa4c2a91b00000000,
+    0x6791843000000000, 0x26a09f2900000000, 0xb8aec5e400000000,
+    0xf99fdefd00000000, 0x3accf3d600000000, 0x7bfde8cf00000000,
+    0xbc6ba98000000000, 0xfd5ab29900000000, 0x3e099fb200000000,
+    0x7f3884ab00000000, 0xb0241c2c00000000, 0xf115073500000000,
+    0x32462a1e00000000, 0x7377310700000000, 0xb4e1704800000000,
+    0xf5d06b5100000000, 0x3683467a00000000, 0x77b25d6300000000,
+    0x4ed7facb00000000, 0x0fe6e1d200000000, 0xccb5ccf900000000,
+    0x8d84d7e000000000, 0x4a1296af00000000, 0x0b238db600000000,
+    0xc870a09d00000000, 0x8941bb8400000000, 0x465d230300000000,
+    0x076c381a00000000, 0xc43f153100000000, 0x850e0e2800000000,
+    0x42984f6700000000, 0x03a9547e00000000, 0xc0fa795500000000,
+    0x81cb624c00000000, 0x1fc5388100000000, 0x5ef4239800000000,
+    0x9da70eb300000000, 0xdc9615aa00000000, 0x1b0054e500000000,
+    0x5a314ffc00000000, 0x996262d700000000, 0xd85379ce00000000,
+    0x174fe14900000000, 0x567efa5000000000, 0x952dd77b00000000,
+    0xd41ccc6200000000, 0x138a8d2d00000000, 0x52bb963400000000,
+    0x91e8bb1f00000000, 0xd0d9a00600000000, 0xecf37e5e00000000,
+    0xadc2654700000000, 0x6e91486c00000000, 0x2fa0537500000000,
+    0xe836123a00000000, 0xa907092300000000, 0x6a54240800000000,
+    0x2b653f1100000000, 0xe479a79600000000, 0xa548bc8f00000000,
+    0x661b91a400000000, 0x272a8abd00000000, 0xe0bccbf200000000,
+    0xa18dd0eb00000000, 0x62defdc000000000, 0x23efe6d900000000,
+    0xbde1bc1400000000, 0xfcd0a70d00000000, 0x3f838a2600000000,
+    0x7eb2913f00000000, 0xb924d07000000000, 0xf815cb6900000000,
+    0x3b46e64200000000, 0x7a77fd5b00000000, 0xb56b65dc00000000,
+    0xf45a7ec500000000, 0x370953ee00000000, 0x763848f700000000,
+    0xb1ae09b800000000, 0xf09f12a100000000, 0x33cc3f8a00000000,
+    0x72fd249300000000},
+   {0x0000000000000000, 0x376ac20100000000, 0x6ed4840300000000,
+    0x59be460200000000, 0xdca8090700000000, 0xebc2cb0600000000,
+    0xb27c8d0400000000, 0x85164f0500000000, 0xb851130e00000000,
+    0x8f3bd10f00000000, 0xd685970d00000000, 0xe1ef550c00000000,
+    0x64f91a0900000000, 0x5393d80800000000, 0x0a2d9e0a00000000,
+    0x3d475c0b00000000, 0x70a3261c00000000, 0x47c9e41d00000000,
+    0x1e77a21f00000000, 0x291d601e00000000, 0xac0b2f1b00000000,
+    0x9b61ed1a00000000, 0xc2dfab1800000000, 0xf5b5691900000000,
+    0xc8f2351200000000, 0xff98f71300000000, 0xa626b11100000000,
+    0x914c731000000000, 0x145a3c1500000000, 0x2330fe1400000000,
+    0x7a8eb81600000000, 0x4de47a1700000000, 0xe0464d3800000000,
+    0xd72c8f3900000000, 0x8e92c93b00000000, 0xb9f80b3a00000000,
+    0x3cee443f00000000, 0x0b84863e00000000, 0x523ac03c00000000,
+    0x6550023d00000000, 0x58175e3600000000, 0x6f7d9c3700000000,
+    0x36c3da3500000000, 0x01a9183400000000, 0x84bf573100000000,
+    0xb3d5953000000000, 0xea6bd33200000000, 0xdd01113300000000,
+    0x90e56b2400000000, 0xa78fa92500000000, 0xfe31ef2700000000,
+    0xc95b2d2600000000, 0x4c4d622300000000, 0x7b27a02200000000,
+    0x2299e62000000000, 0x15f3242100000000, 0x28b4782a00000000,
+    0x1fdeba2b00000000, 0x4660fc2900000000, 0x710a3e2800000000,
+    0xf41c712d00000000, 0xc376b32c00000000, 0x9ac8f52e00000000,
+    0xada2372f00000000, 0xc08d9a7000000000, 0xf7e7587100000000,
+    0xae591e7300000000, 0x9933dc7200000000, 0x1c25937700000000,
+    0x2b4f517600000000, 0x72f1177400000000, 0x459bd57500000000,
+    0x78dc897e00000000, 0x4fb64b7f00000000, 0x16080d7d00000000,
+    0x2162cf7c00000000, 0xa474807900000000, 0x931e427800000000,
+    0xcaa0047a00000000, 0xfdcac67b00000000, 0xb02ebc6c00000000,
+    0x87447e6d00000000, 0xdefa386f00000000, 0xe990fa6e00000000,
+    0x6c86b56b00000000, 0x5bec776a00000000, 0x0252316800000000,
+    0x3538f36900000000, 0x087faf6200000000, 0x3f156d6300000000,
+    0x66ab2b6100000000, 0x51c1e96000000000, 0xd4d7a66500000000,
+    0xe3bd646400000000, 0xba03226600000000, 0x8d69e06700000000,
+    0x20cbd74800000000, 0x17a1154900000000, 0x4e1f534b00000000,
+    0x7975914a00000000, 0xfc63de4f00000000, 0xcb091c4e00000000,
+    0x92b75a4c00000000, 0xa5dd984d00000000, 0x989ac44600000000,
+    0xaff0064700000000, 0xf64e404500000000, 0xc124824400000000,
+    0x4432cd4100000000, 0x73580f4000000000, 0x2ae6494200000000,
+    0x1d8c8b4300000000, 0x5068f15400000000, 0x6702335500000000,
+    0x3ebc755700000000, 0x09d6b75600000000, 0x8cc0f85300000000,
+    0xbbaa3a5200000000, 0xe2147c5000000000, 0xd57ebe5100000000,
+    0xe839e25a00000000, 0xdf53205b00000000, 0x86ed665900000000,
+    0xb187a45800000000, 0x3491eb5d00000000, 0x03fb295c00000000,
+    0x5a456f5e00000000, 0x6d2fad5f00000000, 0x801b35e100000000,
+    0xb771f7e000000000, 0xeecfb1e200000000, 0xd9a573e300000000,
+    0x5cb33ce600000000, 0x6bd9fee700000000, 0x3267b8e500000000,
+    0x050d7ae400000000, 0x384a26ef00000000, 0x0f20e4ee00000000,
+    0x569ea2ec00000000, 0x61f460ed00000000, 0xe4e22fe800000000,
+    0xd388ede900000000, 0x8a36abeb00000000, 0xbd5c69ea00000000,
+    0xf0b813fd00000000, 0xc7d2d1fc00000000, 0x9e6c97fe00000000,
+    0xa90655ff00000000, 0x2c101afa00000000, 0x1b7ad8fb00000000,
+    0x42c49ef900000000, 0x75ae5cf800000000, 0x48e900f300000000,
+    0x7f83c2f200000000, 0x263d84f000000000, 0x115746f100000000,
+    0x944109f400000000, 0xa32bcbf500000000, 0xfa958df700000000,
+    0xcdff4ff600000000, 0x605d78d900000000, 0x5737bad800000000,
+    0x0e89fcda00000000, 0x39e33edb00000000, 0xbcf571de00000000,
+    0x8b9fb3df00000000, 0xd221f5dd00000000, 0xe54b37dc00000000,
+    0xd80c6bd700000000, 0xef66a9d600000000, 0xb6d8efd400000000,
+    0x81b22dd500000000, 0x04a462d000000000, 0x33cea0d100000000,
+    0x6a70e6d300000000, 0x5d1a24d200000000, 0x10fe5ec500000000,
+    0x27949cc400000000, 0x7e2adac600000000, 0x494018c700000000,
+    0xcc5657c200000000, 0xfb3c95c300000000, 0xa282d3c100000000,
+    0x95e811c000000000, 0xa8af4dcb00000000, 0x9fc58fca00000000,
+    0xc67bc9c800000000, 0xf1110bc900000000, 0x740744cc00000000,
+    0x436d86cd00000000, 0x1ad3c0cf00000000, 0x2db902ce00000000,
+    0x4096af9100000000, 0x77fc6d9000000000, 0x2e422b9200000000,
+    0x1928e99300000000, 0x9c3ea69600000000, 0xab54649700000000,
+    0xf2ea229500000000, 0xc580e09400000000, 0xf8c7bc9f00000000,
+    0xcfad7e9e00000000, 0x9613389c00000000, 0xa179fa9d00000000,
+    0x246fb59800000000, 0x1305779900000000, 0x4abb319b00000000,
+    0x7dd1f39a00000000, 0x3035898d00000000, 0x075f4b8c00000000,
+    0x5ee10d8e00000000, 0x698bcf8f00000000, 0xec9d808a00000000,
+    0xdbf7428b00000000, 0x8249048900000000, 0xb523c68800000000,
+    0x88649a8300000000, 0xbf0e588200000000, 0xe6b01e8000000000,
+    0xd1dadc8100000000, 0x54cc938400000000, 0x63a6518500000000,
+    0x3a18178700000000, 0x0d72d58600000000, 0xa0d0e2a900000000,
+    0x97ba20a800000000, 0xce0466aa00000000, 0xf96ea4ab00000000,
+    0x7c78ebae00000000, 0x4b1229af00000000, 0x12ac6fad00000000,
+    0x25c6adac00000000, 0x1881f1a700000000, 0x2feb33a600000000,
+    0x765575a400000000, 0x413fb7a500000000, 0xc429f8a000000000,
+    0xf3433aa100000000, 0xaafd7ca300000000, 0x9d97bea200000000,
+    0xd073c4b500000000, 0xe71906b400000000, 0xbea740b600000000,
+    0x89cd82b700000000, 0x0cdbcdb200000000, 0x3bb10fb300000000,
+    0x620f49b100000000, 0x55658bb000000000, 0x6822d7bb00000000,
+    0x5f4815ba00000000, 0x06f653b800000000, 0x319c91b900000000,
+    0xb48adebc00000000, 0x83e01cbd00000000, 0xda5e5abf00000000,
+    0xed3498be00000000},
+   {0x0000000000000000, 0x6567bcb800000000, 0x8bc809aa00000000,
+    0xeeafb51200000000, 0x5797628f00000000, 0x32f0de3700000000,
+    0xdc5f6b2500000000, 0xb938d79d00000000, 0xef28b4c500000000,
+    0x8a4f087d00000000, 0x64e0bd6f00000000, 0x018701d700000000,
+    0xb8bfd64a00000000, 0xddd86af200000000, 0x3377dfe000000000,
+    0x5610635800000000, 0x9f57195000000000, 0xfa30a5e800000000,
+    0x149f10fa00000000, 0x71f8ac4200000000, 0xc8c07bdf00000000,
+    0xada7c76700000000, 0x4308727500000000, 0x266fcecd00000000,
+    0x707fad9500000000, 0x1518112d00000000, 0xfbb7a43f00000000,
+    0x9ed0188700000000, 0x27e8cf1a00000000, 0x428f73a200000000,
+    0xac20c6b000000000, 0xc9477a0800000000, 0x3eaf32a000000000,
+    0x5bc88e1800000000, 0xb5673b0a00000000, 0xd00087b200000000,
+    0x6938502f00000000, 0x0c5fec9700000000, 0xe2f0598500000000,
+    0x8797e53d00000000, 0xd187866500000000, 0xb4e03add00000000,
+    0x5a4f8fcf00000000, 0x3f28337700000000, 0x8610e4ea00000000,
+    0xe377585200000000, 0x0dd8ed4000000000, 0x68bf51f800000000,
+    0xa1f82bf000000000, 0xc49f974800000000, 0x2a30225a00000000,
+    0x4f579ee200000000, 0xf66f497f00000000, 0x9308f5c700000000,
+    0x7da740d500000000, 0x18c0fc6d00000000, 0x4ed09f3500000000,
+    0x2bb7238d00000000, 0xc518969f00000000, 0xa07f2a2700000000,
+    0x1947fdba00000000, 0x7c20410200000000, 0x928ff41000000000,
+    0xf7e848a800000000, 0x3d58149b00000000, 0x583fa82300000000,
+    0xb6901d3100000000, 0xd3f7a18900000000, 0x6acf761400000000,
+    0x0fa8caac00000000, 0xe1077fbe00000000, 0x8460c30600000000,
+    0xd270a05e00000000, 0xb7171ce600000000, 0x59b8a9f400000000,
+    0x3cdf154c00000000, 0x85e7c2d100000000, 0xe0807e6900000000,
+    0x0e2fcb7b00000000, 0x6b4877c300000000, 0xa20f0dcb00000000,
+    0xc768b17300000000, 0x29c7046100000000, 0x4ca0b8d900000000,
+    0xf5986f4400000000, 0x90ffd3fc00000000, 0x7e5066ee00000000,
+    0x1b37da5600000000, 0x4d27b90e00000000, 0x284005b600000000,
+    0xc6efb0a400000000, 0xa3880c1c00000000, 0x1ab0db8100000000,
+    0x7fd7673900000000, 0x9178d22b00000000, 0xf41f6e9300000000,
+    0x03f7263b00000000, 0x66909a8300000000, 0x883f2f9100000000,
+    0xed58932900000000, 0x546044b400000000, 0x3107f80c00000000,
+    0xdfa84d1e00000000, 0xbacff1a600000000, 0xecdf92fe00000000,
+    0x89b82e4600000000, 0x67179b5400000000, 0x027027ec00000000,
+    0xbb48f07100000000, 0xde2f4cc900000000, 0x3080f9db00000000,
+    0x55e7456300000000, 0x9ca03f6b00000000, 0xf9c783d300000000,
+    0x176836c100000000, 0x720f8a7900000000, 0xcb375de400000000,
+    0xae50e15c00000000, 0x40ff544e00000000, 0x2598e8f600000000,
+    0x73888bae00000000, 0x16ef371600000000, 0xf840820400000000,
+    0x9d273ebc00000000, 0x241fe92100000000, 0x4178559900000000,
+    0xafd7e08b00000000, 0xcab05c3300000000, 0x3bb659ed00000000,
+    0x5ed1e55500000000, 0xb07e504700000000, 0xd519ecff00000000,
+    0x6c213b6200000000, 0x094687da00000000, 0xe7e932c800000000,
+    0x828e8e7000000000, 0xd49eed2800000000, 0xb1f9519000000000,
+    0x5f56e48200000000, 0x3a31583a00000000, 0x83098fa700000000,
+    0xe66e331f00000000, 0x08c1860d00000000, 0x6da63ab500000000,
+    0xa4e140bd00000000, 0xc186fc0500000000, 0x2f29491700000000,
+    0x4a4ef5af00000000, 0xf376223200000000, 0x96119e8a00000000,
+    0x78be2b9800000000, 0x1dd9972000000000, 0x4bc9f47800000000,
+    0x2eae48c000000000, 0xc001fdd200000000, 0xa566416a00000000,
+    0x1c5e96f700000000, 0x79392a4f00000000, 0x97969f5d00000000,
+    0xf2f123e500000000, 0x05196b4d00000000, 0x607ed7f500000000,
+    0x8ed162e700000000, 0xebb6de5f00000000, 0x528e09c200000000,
+    0x37e9b57a00000000, 0xd946006800000000, 0xbc21bcd000000000,
+    0xea31df8800000000, 0x8f56633000000000, 0x61f9d62200000000,
+    0x049e6a9a00000000, 0xbda6bd0700000000, 0xd8c101bf00000000,
+    0x366eb4ad00000000, 0x5309081500000000, 0x9a4e721d00000000,
+    0xff29cea500000000, 0x11867bb700000000, 0x74e1c70f00000000,
+    0xcdd9109200000000, 0xa8beac2a00000000, 0x4611193800000000,
+    0x2376a58000000000, 0x7566c6d800000000, 0x10017a6000000000,
+    0xfeaecf7200000000, 0x9bc973ca00000000, 0x22f1a45700000000,
+    0x479618ef00000000, 0xa939adfd00000000, 0xcc5e114500000000,
+    0x06ee4d7600000000, 0x6389f1ce00000000, 0x8d2644dc00000000,
+    0xe841f86400000000, 0x51792ff900000000, 0x341e934100000000,
+    0xdab1265300000000, 0xbfd69aeb00000000, 0xe9c6f9b300000000,
+    0x8ca1450b00000000, 0x620ef01900000000, 0x07694ca100000000,
+    0xbe519b3c00000000, 0xdb36278400000000, 0x3599929600000000,
+    0x50fe2e2e00000000, 0x99b9542600000000, 0xfcdee89e00000000,
+    0x12715d8c00000000, 0x7716e13400000000, 0xce2e36a900000000,
+    0xab498a1100000000, 0x45e63f0300000000, 0x208183bb00000000,
+    0x7691e0e300000000, 0x13f65c5b00000000, 0xfd59e94900000000,
+    0x983e55f100000000, 0x2106826c00000000, 0x44613ed400000000,
+    0xaace8bc600000000, 0xcfa9377e00000000, 0x38417fd600000000,
+    0x5d26c36e00000000, 0xb389767c00000000, 0xd6eecac400000000,
+    0x6fd61d5900000000, 0x0ab1a1e100000000, 0xe41e14f300000000,
+    0x8179a84b00000000, 0xd769cb1300000000, 0xb20e77ab00000000,
+    0x5ca1c2b900000000, 0x39c67e0100000000, 0x80fea99c00000000,
+    0xe599152400000000, 0x0b36a03600000000, 0x6e511c8e00000000,
+    0xa716668600000000, 0xc271da3e00000000, 0x2cde6f2c00000000,
+    0x49b9d39400000000, 0xf081040900000000, 0x95e6b8b100000000,
+    0x7b490da300000000, 0x1e2eb11b00000000, 0x483ed24300000000,
+    0x2d596efb00000000, 0xc3f6dbe900000000, 0xa691675100000000,
+    0x1fa9b0cc00000000, 0x7ace0c7400000000, 0x9461b96600000000,
+    0xf10605de00000000},
+   {0x0000000000000000, 0xb029603d00000000, 0x6053c07a00000000,
+    0xd07aa04700000000, 0xc0a680f500000000, 0x708fe0c800000000,
+    0xa0f5408f00000000, 0x10dc20b200000000, 0xc14b703000000000,
+    0x7162100d00000000, 0xa118b04a00000000, 0x1131d07700000000,
+    0x01edf0c500000000, 0xb1c490f800000000, 0x61be30bf00000000,
+    0xd197508200000000, 0x8297e06000000000, 0x32be805d00000000,
+    0xe2c4201a00000000, 0x52ed402700000000, 0x4231609500000000,
+    0xf21800a800000000, 0x2262a0ef00000000, 0x924bc0d200000000,
+    0x43dc905000000000, 0xf3f5f06d00000000, 0x238f502a00000000,
+    0x93a6301700000000, 0x837a10a500000000, 0x3353709800000000,
+    0xe329d0df00000000, 0x5300b0e200000000, 0x042fc1c100000000,
+    0xb406a1fc00000000, 0x647c01bb00000000, 0xd455618600000000,
+    0xc489413400000000, 0x74a0210900000000, 0xa4da814e00000000,
+    0x14f3e17300000000, 0xc564b1f100000000, 0x754dd1cc00000000,
+    0xa537718b00000000, 0x151e11b600000000, 0x05c2310400000000,
+    0xb5eb513900000000, 0x6591f17e00000000, 0xd5b8914300000000,
+    0x86b821a100000000, 0x3691419c00000000, 0xe6ebe1db00000000,
+    0x56c281e600000000, 0x461ea15400000000, 0xf637c16900000000,
+    0x264d612e00000000, 0x9664011300000000, 0x47f3519100000000,
+    0xf7da31ac00000000, 0x27a091eb00000000, 0x9789f1d600000000,
+    0x8755d16400000000, 0x377cb15900000000, 0xe706111e00000000,
+    0x572f712300000000, 0x4958f35800000000, 0xf971936500000000,
+    0x290b332200000000, 0x9922531f00000000, 0x89fe73ad00000000,
+    0x39d7139000000000, 0xe9adb3d700000000, 0x5984d3ea00000000,
+    0x8813836800000000, 0x383ae35500000000, 0xe840431200000000,
+    0x5869232f00000000, 0x48b5039d00000000, 0xf89c63a000000000,
+    0x28e6c3e700000000, 0x98cfa3da00000000, 0xcbcf133800000000,
+    0x7be6730500000000, 0xab9cd34200000000, 0x1bb5b37f00000000,
+    0x0b6993cd00000000, 0xbb40f3f000000000, 0x6b3a53b700000000,
+    0xdb13338a00000000, 0x0a84630800000000, 0xbaad033500000000,
+    0x6ad7a37200000000, 0xdafec34f00000000, 0xca22e3fd00000000,
+    0x7a0b83c000000000, 0xaa71238700000000, 0x1a5843ba00000000,
+    0x4d77329900000000, 0xfd5e52a400000000, 0x2d24f2e300000000,
+    0x9d0d92de00000000, 0x8dd1b26c00000000, 0x3df8d25100000000,
+    0xed82721600000000, 0x5dab122b00000000, 0x8c3c42a900000000,
+    0x3c15229400000000, 0xec6f82d300000000, 0x5c46e2ee00000000,
+    0x4c9ac25c00000000, 0xfcb3a26100000000, 0x2cc9022600000000,
+    0x9ce0621b00000000, 0xcfe0d2f900000000, 0x7fc9b2c400000000,
+    0xafb3128300000000, 0x1f9a72be00000000, 0x0f46520c00000000,
+    0xbf6f323100000000, 0x6f15927600000000, 0xdf3cf24b00000000,
+    0x0eaba2c900000000, 0xbe82c2f400000000, 0x6ef862b300000000,
+    0xded1028e00000000, 0xce0d223c00000000, 0x7e24420100000000,
+    0xae5ee24600000000, 0x1e77827b00000000, 0x92b0e6b100000000,
+    0x2299868c00000000, 0xf2e326cb00000000, 0x42ca46f600000000,
+    0x5216664400000000, 0xe23f067900000000, 0x3245a63e00000000,
+    0x826cc60300000000, 0x53fb968100000000, 0xe3d2f6bc00000000,
+    0x33a856fb00000000, 0x838136c600000000, 0x935d167400000000,
+    0x2374764900000000, 0xf30ed60e00000000, 0x4327b63300000000,
+    0x102706d100000000, 0xa00e66ec00000000, 0x7074c6ab00000000,
+    0xc05da69600000000, 0xd081862400000000, 0x60a8e61900000000,
+    0xb0d2465e00000000, 0x00fb266300000000, 0xd16c76e100000000,
+    0x614516dc00000000, 0xb13fb69b00000000, 0x0116d6a600000000,
+    0x11caf61400000000, 0xa1e3962900000000, 0x7199366e00000000,
+    0xc1b0565300000000, 0x969f277000000000, 0x26b6474d00000000,
+    0xf6cce70a00000000, 0x46e5873700000000, 0x5639a78500000000,
+    0xe610c7b800000000, 0x366a67ff00000000, 0x864307c200000000,
+    0x57d4574000000000, 0xe7fd377d00000000, 0x3787973a00000000,
+    0x87aef70700000000, 0x9772d7b500000000, 0x275bb78800000000,
+    0xf72117cf00000000, 0x470877f200000000, 0x1408c71000000000,
+    0xa421a72d00000000, 0x745b076a00000000, 0xc472675700000000,
+    0xd4ae47e500000000, 0x648727d800000000, 0xb4fd879f00000000,
+    0x04d4e7a200000000, 0xd543b72000000000, 0x656ad71d00000000,
+    0xb510775a00000000, 0x0539176700000000, 0x15e537d500000000,
+    0xa5cc57e800000000, 0x75b6f7af00000000, 0xc59f979200000000,
+    0xdbe815e900000000, 0x6bc175d400000000, 0xbbbbd59300000000,
+    0x0b92b5ae00000000, 0x1b4e951c00000000, 0xab67f52100000000,
+    0x7b1d556600000000, 0xcb34355b00000000, 0x1aa365d900000000,
+    0xaa8a05e400000000, 0x7af0a5a300000000, 0xcad9c59e00000000,
+    0xda05e52c00000000, 0x6a2c851100000000, 0xba56255600000000,
+    0x0a7f456b00000000, 0x597ff58900000000, 0xe95695b400000000,
+    0x392c35f300000000, 0x890555ce00000000, 0x99d9757c00000000,
+    0x29f0154100000000, 0xf98ab50600000000, 0x49a3d53b00000000,
+    0x983485b900000000, 0x281de58400000000, 0xf86745c300000000,
+    0x484e25fe00000000, 0x5892054c00000000, 0xe8bb657100000000,
+    0x38c1c53600000000, 0x88e8a50b00000000, 0xdfc7d42800000000,
+    0x6feeb41500000000, 0xbf94145200000000, 0x0fbd746f00000000,
+    0x1f6154dd00000000, 0xaf4834e000000000, 0x7f3294a700000000,
+    0xcf1bf49a00000000, 0x1e8ca41800000000, 0xaea5c42500000000,
+    0x7edf646200000000, 0xcef6045f00000000, 0xde2a24ed00000000,
+    0x6e0344d000000000, 0xbe79e49700000000, 0x0e5084aa00000000,
+    0x5d50344800000000, 0xed79547500000000, 0x3d03f43200000000,
+    0x8d2a940f00000000, 0x9df6b4bd00000000, 0x2ddfd48000000000,
+    0xfda574c700000000, 0x4d8c14fa00000000, 0x9c1b447800000000,
+    0x2c32244500000000, 0xfc48840200000000, 0x4c61e43f00000000,
+    0x5cbdc48d00000000, 0xec94a4b000000000, 0x3cee04f700000000,
+    0x8cc764ca00000000},
+   {0x0000000000000000, 0xa5d35ccb00000000, 0x0ba1c84d00000000,
+    0xae72948600000000, 0x1642919b00000000, 0xb391cd5000000000,
+    0x1de359d600000000, 0xb830051d00000000, 0x6d8253ec00000000,
+    0xc8510f2700000000, 0x66239ba100000000, 0xc3f0c76a00000000,
+    0x7bc0c27700000000, 0xde139ebc00000000, 0x70610a3a00000000,
+    0xd5b256f100000000, 0x9b02d60300000000, 0x3ed18ac800000000,
+    0x90a31e4e00000000, 0x3570428500000000, 0x8d40479800000000,
+    0x28931b5300000000, 0x86e18fd500000000, 0x2332d31e00000000,
+    0xf68085ef00000000, 0x5353d92400000000, 0xfd214da200000000,
+    0x58f2116900000000, 0xe0c2147400000000, 0x451148bf00000000,
+    0xeb63dc3900000000, 0x4eb080f200000000, 0x3605ac0700000000,
+    0x93d6f0cc00000000, 0x3da4644a00000000, 0x9877388100000000,
+    0x20473d9c00000000, 0x8594615700000000, 0x2be6f5d100000000,
+    0x8e35a91a00000000, 0x5b87ffeb00000000, 0xfe54a32000000000,
+    0x502637a600000000, 0xf5f56b6d00000000, 0x4dc56e7000000000,
+    0xe81632bb00000000, 0x4664a63d00000000, 0xe3b7faf600000000,
+    0xad077a0400000000, 0x08d426cf00000000, 0xa6a6b24900000000,
+    0x0375ee8200000000, 0xbb45eb9f00000000, 0x1e96b75400000000,
+    0xb0e423d200000000, 0x15377f1900000000, 0xc08529e800000000,
+    0x6556752300000000, 0xcb24e1a500000000, 0x6ef7bd6e00000000,
+    0xd6c7b87300000000, 0x7314e4b800000000, 0xdd66703e00000000,
+    0x78b52cf500000000, 0x6c0a580f00000000, 0xc9d904c400000000,
+    0x67ab904200000000, 0xc278cc8900000000, 0x7a48c99400000000,
+    0xdf9b955f00000000, 0x71e901d900000000, 0xd43a5d1200000000,
+    0x01880be300000000, 0xa45b572800000000, 0x0a29c3ae00000000,
+    0xaffa9f6500000000, 0x17ca9a7800000000, 0xb219c6b300000000,
+    0x1c6b523500000000, 0xb9b80efe00000000, 0xf7088e0c00000000,
+    0x52dbd2c700000000, 0xfca9464100000000, 0x597a1a8a00000000,
+    0xe14a1f9700000000, 0x4499435c00000000, 0xeaebd7da00000000,
+    0x4f388b1100000000, 0x9a8adde000000000, 0x3f59812b00000000,
+    0x912b15ad00000000, 0x34f8496600000000, 0x8cc84c7b00000000,
+    0x291b10b000000000, 0x8769843600000000, 0x22bad8fd00000000,
+    0x5a0ff40800000000, 0xffdca8c300000000, 0x51ae3c4500000000,
+    0xf47d608e00000000, 0x4c4d659300000000, 0xe99e395800000000,
+    0x47ecadde00000000, 0xe23ff11500000000, 0x378da7e400000000,
+    0x925efb2f00000000, 0x3c2c6fa900000000, 0x99ff336200000000,
+    0x21cf367f00000000, 0x841c6ab400000000, 0x2a6efe3200000000,
+    0x8fbda2f900000000, 0xc10d220b00000000, 0x64de7ec000000000,
+    0xcaacea4600000000, 0x6f7fb68d00000000, 0xd74fb39000000000,
+    0x729cef5b00000000, 0xdcee7bdd00000000, 0x793d271600000000,
+    0xac8f71e700000000, 0x095c2d2c00000000, 0xa72eb9aa00000000,
+    0x02fde56100000000, 0xbacde07c00000000, 0x1f1ebcb700000000,
+    0xb16c283100000000, 0x14bf74fa00000000, 0xd814b01e00000000,
+    0x7dc7ecd500000000, 0xd3b5785300000000, 0x7666249800000000,
+    0xce56218500000000, 0x6b857d4e00000000, 0xc5f7e9c800000000,
+    0x6024b50300000000, 0xb596e3f200000000, 0x1045bf3900000000,
+    0xbe372bbf00000000, 0x1be4777400000000, 0xa3d4726900000000,
+    0x06072ea200000000, 0xa875ba2400000000, 0x0da6e6ef00000000,
+    0x4316661d00000000, 0xe6c53ad600000000, 0x48b7ae5000000000,
+    0xed64f29b00000000, 0x5554f78600000000, 0xf087ab4d00000000,
+    0x5ef53fcb00000000, 0xfb26630000000000, 0x2e9435f100000000,
+    0x8b47693a00000000, 0x2535fdbc00000000, 0x80e6a17700000000,
+    0x38d6a46a00000000, 0x9d05f8a100000000, 0x33776c2700000000,
+    0x96a430ec00000000, 0xee111c1900000000, 0x4bc240d200000000,
+    0xe5b0d45400000000, 0x4063889f00000000, 0xf8538d8200000000,
+    0x5d80d14900000000, 0xf3f245cf00000000, 0x5621190400000000,
+    0x83934ff500000000, 0x2640133e00000000, 0x883287b800000000,
+    0x2de1db7300000000, 0x95d1de6e00000000, 0x300282a500000000,
+    0x9e70162300000000, 0x3ba34ae800000000, 0x7513ca1a00000000,
+    0xd0c096d100000000, 0x7eb2025700000000, 0xdb615e9c00000000,
+    0x63515b8100000000, 0xc682074a00000000, 0x68f093cc00000000,
+    0xcd23cf0700000000, 0x189199f600000000, 0xbd42c53d00000000,
+    0x133051bb00000000, 0xb6e30d7000000000, 0x0ed3086d00000000,
+    0xab0054a600000000, 0x0572c02000000000, 0xa0a19ceb00000000,
+    0xb41ee81100000000, 0x11cdb4da00000000, 0xbfbf205c00000000,
+    0x1a6c7c9700000000, 0xa25c798a00000000, 0x078f254100000000,
+    0xa9fdb1c700000000, 0x0c2eed0c00000000, 0xd99cbbfd00000000,
+    0x7c4fe73600000000, 0xd23d73b000000000, 0x77ee2f7b00000000,
+    0xcfde2a6600000000, 0x6a0d76ad00000000, 0xc47fe22b00000000,
+    0x61acbee000000000, 0x2f1c3e1200000000, 0x8acf62d900000000,
+    0x24bdf65f00000000, 0x816eaa9400000000, 0x395eaf8900000000,
+    0x9c8df34200000000, 0x32ff67c400000000, 0x972c3b0f00000000,
+    0x429e6dfe00000000, 0xe74d313500000000, 0x493fa5b300000000,
+    0xececf97800000000, 0x54dcfc6500000000, 0xf10fa0ae00000000,
+    0x5f7d342800000000, 0xfaae68e300000000, 0x821b441600000000,
+    0x27c818dd00000000, 0x89ba8c5b00000000, 0x2c69d09000000000,
+    0x9459d58d00000000, 0x318a894600000000, 0x9ff81dc000000000,
+    0x3a2b410b00000000, 0xef9917fa00000000, 0x4a4a4b3100000000,
+    0xe438dfb700000000, 0x41eb837c00000000, 0xf9db866100000000,
+    0x5c08daaa00000000, 0xf27a4e2c00000000, 0x57a912e700000000,
+    0x1919921500000000, 0xbccacede00000000, 0x12b85a5800000000,
+    0xb76b069300000000, 0x0f5b038e00000000, 0xaa885f4500000000,
+    0x04facbc300000000, 0xa129970800000000, 0x749bc1f900000000,
+    0xd1489d3200000000, 0x7f3a09b400000000, 0xdae9557f00000000,
+    0x62d9506200000000, 0xc70a0ca900000000, 0x6978982f00000000,
+    0xccabc4e400000000},
+   {0x0000000000000000, 0xb40b77a600000000, 0x29119f9700000000,
+    0x9d1ae83100000000, 0x13244ff400000000, 0xa72f385200000000,
+    0x3a35d06300000000, 0x8e3ea7c500000000, 0x674eef3300000000,
+    0xd345989500000000, 0x4e5f70a400000000, 0xfa54070200000000,
+    0x746aa0c700000000, 0xc061d76100000000, 0x5d7b3f5000000000,
+    0xe97048f600000000, 0xce9cde6700000000, 0x7a97a9c100000000,
+    0xe78d41f000000000, 0x5386365600000000, 0xddb8919300000000,
+    0x69b3e63500000000, 0xf4a90e0400000000, 0x40a279a200000000,
+    0xa9d2315400000000, 0x1dd946f200000000, 0x80c3aec300000000,
+    0x34c8d96500000000, 0xbaf67ea000000000, 0x0efd090600000000,
+    0x93e7e13700000000, 0x27ec969100000000, 0x9c39bdcf00000000,
+    0x2832ca6900000000, 0xb528225800000000, 0x012355fe00000000,
+    0x8f1df23b00000000, 0x3b16859d00000000, 0xa60c6dac00000000,
+    0x12071a0a00000000, 0xfb7752fc00000000, 0x4f7c255a00000000,
+    0xd266cd6b00000000, 0x666dbacd00000000, 0xe8531d0800000000,
+    0x5c586aae00000000, 0xc142829f00000000, 0x7549f53900000000,
+    0x52a563a800000000, 0xe6ae140e00000000, 0x7bb4fc3f00000000,
+    0xcfbf8b9900000000, 0x41812c5c00000000, 0xf58a5bfa00000000,
+    0x6890b3cb00000000, 0xdc9bc46d00000000, 0x35eb8c9b00000000,
+    0x81e0fb3d00000000, 0x1cfa130c00000000, 0xa8f164aa00000000,
+    0x26cfc36f00000000, 0x92c4b4c900000000, 0x0fde5cf800000000,
+    0xbbd52b5e00000000, 0x79750b4400000000, 0xcd7e7ce200000000,
+    0x506494d300000000, 0xe46fe37500000000, 0x6a5144b000000000,
+    0xde5a331600000000, 0x4340db2700000000, 0xf74bac8100000000,
+    0x1e3be47700000000, 0xaa3093d100000000, 0x372a7be000000000,
+    0x83210c4600000000, 0x0d1fab8300000000, 0xb914dc2500000000,
+    0x240e341400000000, 0x900543b200000000, 0xb7e9d52300000000,
+    0x03e2a28500000000, 0x9ef84ab400000000, 0x2af33d1200000000,
+    0xa4cd9ad700000000, 0x10c6ed7100000000, 0x8ddc054000000000,
+    0x39d772e600000000, 0xd0a73a1000000000, 0x64ac4db600000000,
+    0xf9b6a58700000000, 0x4dbdd22100000000, 0xc38375e400000000,
+    0x7788024200000000, 0xea92ea7300000000, 0x5e999dd500000000,
+    0xe54cb68b00000000, 0x5147c12d00000000, 0xcc5d291c00000000,
+    0x78565eba00000000, 0xf668f97f00000000, 0x42638ed900000000,
+    0xdf7966e800000000, 0x6b72114e00000000, 0x820259b800000000,
+    0x36092e1e00000000, 0xab13c62f00000000, 0x1f18b18900000000,
+    0x9126164c00000000, 0x252d61ea00000000, 0xb83789db00000000,
+    0x0c3cfe7d00000000, 0x2bd068ec00000000, 0x9fdb1f4a00000000,
+    0x02c1f77b00000000, 0xb6ca80dd00000000, 0x38f4271800000000,
+    0x8cff50be00000000, 0x11e5b88f00000000, 0xa5eecf2900000000,
+    0x4c9e87df00000000, 0xf895f07900000000, 0x658f184800000000,
+    0xd1846fee00000000, 0x5fbac82b00000000, 0xebb1bf8d00000000,
+    0x76ab57bc00000000, 0xc2a0201a00000000, 0xf2ea168800000000,
+    0x46e1612e00000000, 0xdbfb891f00000000, 0x6ff0feb900000000,
+    0xe1ce597c00000000, 0x55c52eda00000000, 0xc8dfc6eb00000000,
+    0x7cd4b14d00000000, 0x95a4f9bb00000000, 0x21af8e1d00000000,
+    0xbcb5662c00000000, 0x08be118a00000000, 0x8680b64f00000000,
+    0x328bc1e900000000, 0xaf9129d800000000, 0x1b9a5e7e00000000,
+    0x3c76c8ef00000000, 0x887dbf4900000000, 0x1567577800000000,
+    0xa16c20de00000000, 0x2f52871b00000000, 0x9b59f0bd00000000,
+    0x0643188c00000000, 0xb2486f2a00000000, 0x5b3827dc00000000,
+    0xef33507a00000000, 0x7229b84b00000000, 0xc622cfed00000000,
+    0x481c682800000000, 0xfc171f8e00000000, 0x610df7bf00000000,
+    0xd506801900000000, 0x6ed3ab4700000000, 0xdad8dce100000000,
+    0x47c234d000000000, 0xf3c9437600000000, 0x7df7e4b300000000,
+    0xc9fc931500000000, 0x54e67b2400000000, 0xe0ed0c8200000000,
+    0x099d447400000000, 0xbd9633d200000000, 0x208cdbe300000000,
+    0x9487ac4500000000, 0x1ab90b8000000000, 0xaeb27c2600000000,
+    0x33a8941700000000, 0x87a3e3b100000000, 0xa04f752000000000,
+    0x1444028600000000, 0x895eeab700000000, 0x3d559d1100000000,
+    0xb36b3ad400000000, 0x07604d7200000000, 0x9a7aa54300000000,
+    0x2e71d2e500000000, 0xc7019a1300000000, 0x730aedb500000000,
+    0xee10058400000000, 0x5a1b722200000000, 0xd425d5e700000000,
+    0x602ea24100000000, 0xfd344a7000000000, 0x493f3dd600000000,
+    0x8b9f1dcc00000000, 0x3f946a6a00000000, 0xa28e825b00000000,
+    0x1685f5fd00000000, 0x98bb523800000000, 0x2cb0259e00000000,
+    0xb1aacdaf00000000, 0x05a1ba0900000000, 0xecd1f2ff00000000,
+    0x58da855900000000, 0xc5c06d6800000000, 0x71cb1ace00000000,
+    0xfff5bd0b00000000, 0x4bfecaad00000000, 0xd6e4229c00000000,
+    0x62ef553a00000000, 0x4503c3ab00000000, 0xf108b40d00000000,
+    0x6c125c3c00000000, 0xd8192b9a00000000, 0x56278c5f00000000,
+    0xe22cfbf900000000, 0x7f3613c800000000, 0xcb3d646e00000000,
+    0x224d2c9800000000, 0x96465b3e00000000, 0x0b5cb30f00000000,
+    0xbf57c4a900000000, 0x3169636c00000000, 0x856214ca00000000,
+    0x1878fcfb00000000, 0xac738b5d00000000, 0x17a6a00300000000,
+    0xa3add7a500000000, 0x3eb73f9400000000, 0x8abc483200000000,
+    0x0482eff700000000, 0xb089985100000000, 0x2d93706000000000,
+    0x999807c600000000, 0x70e84f3000000000, 0xc4e3389600000000,
+    0x59f9d0a700000000, 0xedf2a70100000000, 0x63cc00c400000000,
+    0xd7c7776200000000, 0x4add9f5300000000, 0xfed6e8f500000000,
+    0xd93a7e6400000000, 0x6d3109c200000000, 0xf02be1f300000000,
+    0x4420965500000000, 0xca1e319000000000, 0x7e15463600000000,
+    0xe30fae0700000000, 0x5704d9a100000000, 0xbe74915700000000,
+    0x0a7fe6f100000000, 0x97650ec000000000, 0x236e796600000000,
+    0xad50dea300000000, 0x195ba90500000000, 0x8441413400000000,
+    0x304a369200000000},
+   {0x0000000000000000, 0x9e00aacc00000000, 0x7d07254200000000,
+    0xe3078f8e00000000, 0xfa0e4a8400000000, 0x640ee04800000000,
+    0x87096fc600000000, 0x1909c50a00000000, 0xb51be5d300000000,
+    0x2b1b4f1f00000000, 0xc81cc09100000000, 0x561c6a5d00000000,
+    0x4f15af5700000000, 0xd115059b00000000, 0x32128a1500000000,
+    0xac1220d900000000, 0x2b31bb7c00000000, 0xb53111b000000000,
+    0x56369e3e00000000, 0xc83634f200000000, 0xd13ff1f800000000,
+    0x4f3f5b3400000000, 0xac38d4ba00000000, 0x32387e7600000000,
+    0x9e2a5eaf00000000, 0x002af46300000000, 0xe32d7bed00000000,
+    0x7d2dd12100000000, 0x6424142b00000000, 0xfa24bee700000000,
+    0x1923316900000000, 0x87239ba500000000, 0x566276f900000000,
+    0xc862dc3500000000, 0x2b6553bb00000000, 0xb565f97700000000,
+    0xac6c3c7d00000000, 0x326c96b100000000, 0xd16b193f00000000,
+    0x4f6bb3f300000000, 0xe379932a00000000, 0x7d7939e600000000,
+    0x9e7eb66800000000, 0x007e1ca400000000, 0x1977d9ae00000000,
+    0x8777736200000000, 0x6470fcec00000000, 0xfa70562000000000,
+    0x7d53cd8500000000, 0xe353674900000000, 0x0054e8c700000000,
+    0x9e54420b00000000, 0x875d870100000000, 0x195d2dcd00000000,
+    0xfa5aa24300000000, 0x645a088f00000000, 0xc848285600000000,
+    0x5648829a00000000, 0xb54f0d1400000000, 0x2b4fa7d800000000,
+    0x324662d200000000, 0xac46c81e00000000, 0x4f41479000000000,
+    0xd141ed5c00000000, 0xedc29d2900000000, 0x73c237e500000000,
+    0x90c5b86b00000000, 0x0ec512a700000000, 0x17ccd7ad00000000,
+    0x89cc7d6100000000, 0x6acbf2ef00000000, 0xf4cb582300000000,
+    0x58d978fa00000000, 0xc6d9d23600000000, 0x25de5db800000000,
+    0xbbdef77400000000, 0xa2d7327e00000000, 0x3cd798b200000000,
+    0xdfd0173c00000000, 0x41d0bdf000000000, 0xc6f3265500000000,
+    0x58f38c9900000000, 0xbbf4031700000000, 0x25f4a9db00000000,
+    0x3cfd6cd100000000, 0xa2fdc61d00000000, 0x41fa499300000000,
+    0xdffae35f00000000, 0x73e8c38600000000, 0xede8694a00000000,
+    0x0eefe6c400000000, 0x90ef4c0800000000, 0x89e6890200000000,
+    0x17e623ce00000000, 0xf4e1ac4000000000, 0x6ae1068c00000000,
+    0xbba0ebd000000000, 0x25a0411c00000000, 0xc6a7ce9200000000,
+    0x58a7645e00000000, 0x41aea15400000000, 0xdfae0b9800000000,
+    0x3ca9841600000000, 0xa2a92eda00000000, 0x0ebb0e0300000000,
+    0x90bba4cf00000000, 0x73bc2b4100000000, 0xedbc818d00000000,
+    0xf4b5448700000000, 0x6ab5ee4b00000000, 0x89b261c500000000,
+    0x17b2cb0900000000, 0x909150ac00000000, 0x0e91fa6000000000,
+    0xed9675ee00000000, 0x7396df2200000000, 0x6a9f1a2800000000,
+    0xf49fb0e400000000, 0x17983f6a00000000, 0x899895a600000000,
+    0x258ab57f00000000, 0xbb8a1fb300000000, 0x588d903d00000000,
+    0xc68d3af100000000, 0xdf84fffb00000000, 0x4184553700000000,
+    0xa283dab900000000, 0x3c83707500000000, 0xda853b5300000000,
+    0x4485919f00000000, 0xa7821e1100000000, 0x3982b4dd00000000,
+    0x208b71d700000000, 0xbe8bdb1b00000000, 0x5d8c549500000000,
+    0xc38cfe5900000000, 0x6f9ede8000000000, 0xf19e744c00000000,
+    0x1299fbc200000000, 0x8c99510e00000000, 0x9590940400000000,
+    0x0b903ec800000000, 0xe897b14600000000, 0x76971b8a00000000,
+    0xf1b4802f00000000, 0x6fb42ae300000000, 0x8cb3a56d00000000,
+    0x12b30fa100000000, 0x0bbacaab00000000, 0x95ba606700000000,
+    0x76bdefe900000000, 0xe8bd452500000000, 0x44af65fc00000000,
+    0xdaafcf3000000000, 0x39a840be00000000, 0xa7a8ea7200000000,
+    0xbea12f7800000000, 0x20a185b400000000, 0xc3a60a3a00000000,
+    0x5da6a0f600000000, 0x8ce74daa00000000, 0x12e7e76600000000,
+    0xf1e068e800000000, 0x6fe0c22400000000, 0x76e9072e00000000,
+    0xe8e9ade200000000, 0x0bee226c00000000, 0x95ee88a000000000,
+    0x39fca87900000000, 0xa7fc02b500000000, 0x44fb8d3b00000000,
+    0xdafb27f700000000, 0xc3f2e2fd00000000, 0x5df2483100000000,
+    0xbef5c7bf00000000, 0x20f56d7300000000, 0xa7d6f6d600000000,
+    0x39d65c1a00000000, 0xdad1d39400000000, 0x44d1795800000000,
+    0x5dd8bc5200000000, 0xc3d8169e00000000, 0x20df991000000000,
+    0xbedf33dc00000000, 0x12cd130500000000, 0x8ccdb9c900000000,
+    0x6fca364700000000, 0xf1ca9c8b00000000, 0xe8c3598100000000,
+    0x76c3f34d00000000, 0x95c47cc300000000, 0x0bc4d60f00000000,
+    0x3747a67a00000000, 0xa9470cb600000000, 0x4a40833800000000,
+    0xd44029f400000000, 0xcd49ecfe00000000, 0x5349463200000000,
+    0xb04ec9bc00000000, 0x2e4e637000000000, 0x825c43a900000000,
+    0x1c5ce96500000000, 0xff5b66eb00000000, 0x615bcc2700000000,
+    0x7852092d00000000, 0xe652a3e100000000, 0x05552c6f00000000,
+    0x9b5586a300000000, 0x1c761d0600000000, 0x8276b7ca00000000,
+    0x6171384400000000, 0xff71928800000000, 0xe678578200000000,
+    0x7878fd4e00000000, 0x9b7f72c000000000, 0x057fd80c00000000,
+    0xa96df8d500000000, 0x376d521900000000, 0xd46add9700000000,
+    0x4a6a775b00000000, 0x5363b25100000000, 0xcd63189d00000000,
+    0x2e64971300000000, 0xb0643ddf00000000, 0x6125d08300000000,
+    0xff257a4f00000000, 0x1c22f5c100000000, 0x82225f0d00000000,
+    0x9b2b9a0700000000, 0x052b30cb00000000, 0xe62cbf4500000000,
+    0x782c158900000000, 0xd43e355000000000, 0x4a3e9f9c00000000,
+    0xa939101200000000, 0x3739bade00000000, 0x2e307fd400000000,
+    0xb030d51800000000, 0x53375a9600000000, 0xcd37f05a00000000,
+    0x4a146bff00000000, 0xd414c13300000000, 0x37134ebd00000000,
+    0xa913e47100000000, 0xb01a217b00000000, 0x2e1a8bb700000000,
+    0xcd1d043900000000, 0x531daef500000000, 0xff0f8e2c00000000,
+    0x610f24e000000000, 0x8208ab6e00000000, 0x1c0801a200000000,
+    0x0501c4a800000000, 0x9b016e6400000000, 0x7806e1ea00000000,
+    0xe6064b2600000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
+    0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
+    0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
+    0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
+    0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
+    0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
+    0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
+    0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
+    0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
+    0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
+    0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
+    0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
+    0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
+    0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
+    0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
+    0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
+    0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
+    0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
+    0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
+    0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
+    0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
+    0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
+    0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
+    0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
+    0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
+    0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
+    0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
+    0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
+    0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
+    0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
+    0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
+    0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
+    0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
+    0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
+    0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
+    0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
+    0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
+    0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
+    0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
+    0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
+    0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
+    0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
+    0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
+    0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
+    0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
+    0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
+    0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
+    0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
+    0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
+    0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
+    0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
+    0xde0506f1},
+   {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
+    0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
+    0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
+    0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
+    0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
+    0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
+    0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
+    0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
+    0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
+    0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
+    0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
+    0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
+    0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
+    0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
+    0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
+    0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
+    0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
+    0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
+    0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
+    0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
+    0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
+    0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
+    0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
+    0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
+    0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
+    0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
+    0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
+    0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
+    0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
+    0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
+    0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
+    0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
+    0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
+    0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
+    0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
+    0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
+    0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
+    0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
+    0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
+    0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
+    0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
+    0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
+    0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
+    0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
+    0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
+    0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
+    0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
+    0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
+    0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
+    0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
+    0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
+    0xbe9834ed},
+   {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
+    0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
+    0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
+    0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
+    0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
+    0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
+    0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
+    0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
+    0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
+    0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
+    0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
+    0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
+    0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
+    0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
+    0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
+    0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
+    0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
+    0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
+    0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
+    0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
+    0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
+    0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
+    0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
+    0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
+    0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
+    0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
+    0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
+    0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
+    0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
+    0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
+    0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
+    0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
+    0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
+    0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
+    0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
+    0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
+    0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
+    0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
+    0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
+    0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
+    0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
+    0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
+    0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
+    0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
+    0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
+    0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
+    0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
+    0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
+    0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
+    0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
+    0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
+    0x9324fd72},
+   {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+    0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+    0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+    0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+    0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+    0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+    0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+    0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+    0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+    0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+    0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+    0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+    0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+    0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+    0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+    0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+    0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+    0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+    0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+    0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+    0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+    0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+    0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+    0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+    0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+    0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+    0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+    0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+    0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+    0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+    0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+    0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+    0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+    0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+    0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+    0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+    0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+    0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+    0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+    0x2d02ef8d}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
+    0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
+    0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
+    0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
+    0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
+    0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
+    0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
+    0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
+    0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
+    0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
+    0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
+    0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
+    0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
+    0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
+    0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
+    0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
+    0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
+    0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
+    0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
+    0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
+    0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
+    0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
+    0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
+    0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
+    0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
+    0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
+    0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
+    0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
+    0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
+    0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
+    0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
+    0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
+    0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
+    0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
+    0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
+    0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
+    0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
+    0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
+    0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
+    0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
+    0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
+    0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
+    0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
+    0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
+    0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
+    0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
+    0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
+    0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
+    0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
+    0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
+    0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
+    0x8def022d},
+   {0x00000000, 0x41311b19, 0x82623632, 0xc3532d2b, 0x04c56c64,
+    0x45f4777d, 0x86a75a56, 0xc796414f, 0x088ad9c8, 0x49bbc2d1,
+    0x8ae8effa, 0xcbd9f4e3, 0x0c4fb5ac, 0x4d7eaeb5, 0x8e2d839e,
+    0xcf1c9887, 0x5112c24a, 0x1023d953, 0xd370f478, 0x9241ef61,
+    0x55d7ae2e, 0x14e6b537, 0xd7b5981c, 0x96848305, 0x59981b82,
+    0x18a9009b, 0xdbfa2db0, 0x9acb36a9, 0x5d5d77e6, 0x1c6c6cff,
+    0xdf3f41d4, 0x9e0e5acd, 0xa2248495, 0xe3159f8c, 0x2046b2a7,
+    0x6177a9be, 0xa6e1e8f1, 0xe7d0f3e8, 0x2483dec3, 0x65b2c5da,
+    0xaaae5d5d, 0xeb9f4644, 0x28cc6b6f, 0x69fd7076, 0xae6b3139,
+    0xef5a2a20, 0x2c09070b, 0x6d381c12, 0xf33646df, 0xb2075dc6,
+    0x715470ed, 0x30656bf4, 0xf7f32abb, 0xb6c231a2, 0x75911c89,
+    0x34a00790, 0xfbbc9f17, 0xba8d840e, 0x79dea925, 0x38efb23c,
+    0xff79f373, 0xbe48e86a, 0x7d1bc541, 0x3c2ade58, 0x054f79f0,
+    0x447e62e9, 0x872d4fc2, 0xc61c54db, 0x018a1594, 0x40bb0e8d,
+    0x83e823a6, 0xc2d938bf, 0x0dc5a038, 0x4cf4bb21, 0x8fa7960a,
+    0xce968d13, 0x0900cc5c, 0x4831d745, 0x8b62fa6e, 0xca53e177,
+    0x545dbbba, 0x156ca0a3, 0xd63f8d88, 0x970e9691, 0x5098d7de,
+    0x11a9ccc7, 0xd2fae1ec, 0x93cbfaf5, 0x5cd76272, 0x1de6796b,
+    0xdeb55440, 0x9f844f59, 0x58120e16, 0x1923150f, 0xda703824,
+    0x9b41233d, 0xa76bfd65, 0xe65ae67c, 0x2509cb57, 0x6438d04e,
+    0xa3ae9101, 0xe29f8a18, 0x21cca733, 0x60fdbc2a, 0xafe124ad,
+    0xeed03fb4, 0x2d83129f, 0x6cb20986, 0xab2448c9, 0xea1553d0,
+    0x29467efb, 0x687765e2, 0xf6793f2f, 0xb7482436, 0x741b091d,
+    0x352a1204, 0xf2bc534b, 0xb38d4852, 0x70de6579, 0x31ef7e60,
+    0xfef3e6e7, 0xbfc2fdfe, 0x7c91d0d5, 0x3da0cbcc, 0xfa368a83,
+    0xbb07919a, 0x7854bcb1, 0x3965a7a8, 0x4b98833b, 0x0aa99822,
+    0xc9fab509, 0x88cbae10, 0x4f5def5f, 0x0e6cf446, 0xcd3fd96d,
+    0x8c0ec274, 0x43125af3, 0x022341ea, 0xc1706cc1, 0x804177d8,
+    0x47d73697, 0x06e62d8e, 0xc5b500a5, 0x84841bbc, 0x1a8a4171,
+    0x5bbb5a68, 0x98e87743, 0xd9d96c5a, 0x1e4f2d15, 0x5f7e360c,
+    0x9c2d1b27, 0xdd1c003e, 0x120098b9, 0x533183a0, 0x9062ae8b,
+    0xd153b592, 0x16c5f4dd, 0x57f4efc4, 0x94a7c2ef, 0xd596d9f6,
+    0xe9bc07ae, 0xa88d1cb7, 0x6bde319c, 0x2aef2a85, 0xed796bca,
+    0xac4870d3, 0x6f1b5df8, 0x2e2a46e1, 0xe136de66, 0xa007c57f,
+    0x6354e854, 0x2265f34d, 0xe5f3b202, 0xa4c2a91b, 0x67918430,
+    0x26a09f29, 0xb8aec5e4, 0xf99fdefd, 0x3accf3d6, 0x7bfde8cf,
+    0xbc6ba980, 0xfd5ab299, 0x3e099fb2, 0x7f3884ab, 0xb0241c2c,
+    0xf1150735, 0x32462a1e, 0x73773107, 0xb4e17048, 0xf5d06b51,
+    0x3683467a, 0x77b25d63, 0x4ed7facb, 0x0fe6e1d2, 0xccb5ccf9,
+    0x8d84d7e0, 0x4a1296af, 0x0b238db6, 0xc870a09d, 0x8941bb84,
+    0x465d2303, 0x076c381a, 0xc43f1531, 0x850e0e28, 0x42984f67,
+    0x03a9547e, 0xc0fa7955, 0x81cb624c, 0x1fc53881, 0x5ef42398,
+    0x9da70eb3, 0xdc9615aa, 0x1b0054e5, 0x5a314ffc, 0x996262d7,
+    0xd85379ce, 0x174fe149, 0x567efa50, 0x952dd77b, 0xd41ccc62,
+    0x138a8d2d, 0x52bb9634, 0x91e8bb1f, 0xd0d9a006, 0xecf37e5e,
+    0xadc26547, 0x6e91486c, 0x2fa05375, 0xe836123a, 0xa9070923,
+    0x6a542408, 0x2b653f11, 0xe479a796, 0xa548bc8f, 0x661b91a4,
+    0x272a8abd, 0xe0bccbf2, 0xa18dd0eb, 0x62defdc0, 0x23efe6d9,
+    0xbde1bc14, 0xfcd0a70d, 0x3f838a26, 0x7eb2913f, 0xb924d070,
+    0xf815cb69, 0x3b46e642, 0x7a77fd5b, 0xb56b65dc, 0xf45a7ec5,
+    0x370953ee, 0x763848f7, 0xb1ae09b8, 0xf09f12a1, 0x33cc3f8a,
+    0x72fd2493},
+   {0x00000000, 0x376ac201, 0x6ed48403, 0x59be4602, 0xdca80907,
+    0xebc2cb06, 0xb27c8d04, 0x85164f05, 0xb851130e, 0x8f3bd10f,
+    0xd685970d, 0xe1ef550c, 0x64f91a09, 0x5393d808, 0x0a2d9e0a,
+    0x3d475c0b, 0x70a3261c, 0x47c9e41d, 0x1e77a21f, 0x291d601e,
+    0xac0b2f1b, 0x9b61ed1a, 0xc2dfab18, 0xf5b56919, 0xc8f23512,
+    0xff98f713, 0xa626b111, 0x914c7310, 0x145a3c15, 0x2330fe14,
+    0x7a8eb816, 0x4de47a17, 0xe0464d38, 0xd72c8f39, 0x8e92c93b,
+    0xb9f80b3a, 0x3cee443f, 0x0b84863e, 0x523ac03c, 0x6550023d,
+    0x58175e36, 0x6f7d9c37, 0x36c3da35, 0x01a91834, 0x84bf5731,
+    0xb3d59530, 0xea6bd332, 0xdd011133, 0x90e56b24, 0xa78fa925,
+    0xfe31ef27, 0xc95b2d26, 0x4c4d6223, 0x7b27a022, 0x2299e620,
+    0x15f32421, 0x28b4782a, 0x1fdeba2b, 0x4660fc29, 0x710a3e28,
+    0xf41c712d, 0xc376b32c, 0x9ac8f52e, 0xada2372f, 0xc08d9a70,
+    0xf7e75871, 0xae591e73, 0x9933dc72, 0x1c259377, 0x2b4f5176,
+    0x72f11774, 0x459bd575, 0x78dc897e, 0x4fb64b7f, 0x16080d7d,
+    0x2162cf7c, 0xa4748079, 0x931e4278, 0xcaa0047a, 0xfdcac67b,
+    0xb02ebc6c, 0x87447e6d, 0xdefa386f, 0xe990fa6e, 0x6c86b56b,
+    0x5bec776a, 0x02523168, 0x3538f369, 0x087faf62, 0x3f156d63,
+    0x66ab2b61, 0x51c1e960, 0xd4d7a665, 0xe3bd6464, 0xba032266,
+    0x8d69e067, 0x20cbd748, 0x17a11549, 0x4e1f534b, 0x7975914a,
+    0xfc63de4f, 0xcb091c4e, 0x92b75a4c, 0xa5dd984d, 0x989ac446,
+    0xaff00647, 0xf64e4045, 0xc1248244, 0x4432cd41, 0x73580f40,
+    0x2ae64942, 0x1d8c8b43, 0x5068f154, 0x67023355, 0x3ebc7557,
+    0x09d6b756, 0x8cc0f853, 0xbbaa3a52, 0xe2147c50, 0xd57ebe51,
+    0xe839e25a, 0xdf53205b, 0x86ed6659, 0xb187a458, 0x3491eb5d,
+    0x03fb295c, 0x5a456f5e, 0x6d2fad5f, 0x801b35e1, 0xb771f7e0,
+    0xeecfb1e2, 0xd9a573e3, 0x5cb33ce6, 0x6bd9fee7, 0x3267b8e5,
+    0x050d7ae4, 0x384a26ef, 0x0f20e4ee, 0x569ea2ec, 0x61f460ed,
+    0xe4e22fe8, 0xd388ede9, 0x8a36abeb, 0xbd5c69ea, 0xf0b813fd,
+    0xc7d2d1fc, 0x9e6c97fe, 0xa90655ff, 0x2c101afa, 0x1b7ad8fb,
+    0x42c49ef9, 0x75ae5cf8, 0x48e900f3, 0x7f83c2f2, 0x263d84f0,
+    0x115746f1, 0x944109f4, 0xa32bcbf5, 0xfa958df7, 0xcdff4ff6,
+    0x605d78d9, 0x5737bad8, 0x0e89fcda, 0x39e33edb, 0xbcf571de,
+    0x8b9fb3df, 0xd221f5dd, 0xe54b37dc, 0xd80c6bd7, 0xef66a9d6,
+    0xb6d8efd4, 0x81b22dd5, 0x04a462d0, 0x33cea0d1, 0x6a70e6d3,
+    0x5d1a24d2, 0x10fe5ec5, 0x27949cc4, 0x7e2adac6, 0x494018c7,
+    0xcc5657c2, 0xfb3c95c3, 0xa282d3c1, 0x95e811c0, 0xa8af4dcb,
+    0x9fc58fca, 0xc67bc9c8, 0xf1110bc9, 0x740744cc, 0x436d86cd,
+    0x1ad3c0cf, 0x2db902ce, 0x4096af91, 0x77fc6d90, 0x2e422b92,
+    0x1928e993, 0x9c3ea696, 0xab546497, 0xf2ea2295, 0xc580e094,
+    0xf8c7bc9f, 0xcfad7e9e, 0x9613389c, 0xa179fa9d, 0x246fb598,
+    0x13057799, 0x4abb319b, 0x7dd1f39a, 0x3035898d, 0x075f4b8c,
+    0x5ee10d8e, 0x698bcf8f, 0xec9d808a, 0xdbf7428b, 0x82490489,
+    0xb523c688, 0x88649a83, 0xbf0e5882, 0xe6b01e80, 0xd1dadc81,
+    0x54cc9384, 0x63a65185, 0x3a181787, 0x0d72d586, 0xa0d0e2a9,
+    0x97ba20a8, 0xce0466aa, 0xf96ea4ab, 0x7c78ebae, 0x4b1229af,
+    0x12ac6fad, 0x25c6adac, 0x1881f1a7, 0x2feb33a6, 0x765575a4,
+    0x413fb7a5, 0xc429f8a0, 0xf3433aa1, 0xaafd7ca3, 0x9d97bea2,
+    0xd073c4b5, 0xe71906b4, 0xbea740b6, 0x89cd82b7, 0x0cdbcdb2,
+    0x3bb10fb3, 0x620f49b1, 0x55658bb0, 0x6822d7bb, 0x5f4815ba,
+    0x06f653b8, 0x319c91b9, 0xb48adebc, 0x83e01cbd, 0xda5e5abf,
+    0xed3498be},
+   {0x00000000, 0x6567bcb8, 0x8bc809aa, 0xeeafb512, 0x5797628f,
+    0x32f0de37, 0xdc5f6b25, 0xb938d79d, 0xef28b4c5, 0x8a4f087d,
+    0x64e0bd6f, 0x018701d7, 0xb8bfd64a, 0xddd86af2, 0x3377dfe0,
+    0x56106358, 0x9f571950, 0xfa30a5e8, 0x149f10fa, 0x71f8ac42,
+    0xc8c07bdf, 0xada7c767, 0x43087275, 0x266fcecd, 0x707fad95,
+    0x1518112d, 0xfbb7a43f, 0x9ed01887, 0x27e8cf1a, 0x428f73a2,
+    0xac20c6b0, 0xc9477a08, 0x3eaf32a0, 0x5bc88e18, 0xb5673b0a,
+    0xd00087b2, 0x6938502f, 0x0c5fec97, 0xe2f05985, 0x8797e53d,
+    0xd1878665, 0xb4e03add, 0x5a4f8fcf, 0x3f283377, 0x8610e4ea,
+    0xe3775852, 0x0dd8ed40, 0x68bf51f8, 0xa1f82bf0, 0xc49f9748,
+    0x2a30225a, 0x4f579ee2, 0xf66f497f, 0x9308f5c7, 0x7da740d5,
+    0x18c0fc6d, 0x4ed09f35, 0x2bb7238d, 0xc518969f, 0xa07f2a27,
+    0x1947fdba, 0x7c204102, 0x928ff410, 0xf7e848a8, 0x3d58149b,
+    0x583fa823, 0xb6901d31, 0xd3f7a189, 0x6acf7614, 0x0fa8caac,
+    0xe1077fbe, 0x8460c306, 0xd270a05e, 0xb7171ce6, 0x59b8a9f4,
+    0x3cdf154c, 0x85e7c2d1, 0xe0807e69, 0x0e2fcb7b, 0x6b4877c3,
+    0xa20f0dcb, 0xc768b173, 0x29c70461, 0x4ca0b8d9, 0xf5986f44,
+    0x90ffd3fc, 0x7e5066ee, 0x1b37da56, 0x4d27b90e, 0x284005b6,
+    0xc6efb0a4, 0xa3880c1c, 0x1ab0db81, 0x7fd76739, 0x9178d22b,
+    0xf41f6e93, 0x03f7263b, 0x66909a83, 0x883f2f91, 0xed589329,
+    0x546044b4, 0x3107f80c, 0xdfa84d1e, 0xbacff1a6, 0xecdf92fe,
+    0x89b82e46, 0x67179b54, 0x027027ec, 0xbb48f071, 0xde2f4cc9,
+    0x3080f9db, 0x55e74563, 0x9ca03f6b, 0xf9c783d3, 0x176836c1,
+    0x720f8a79, 0xcb375de4, 0xae50e15c, 0x40ff544e, 0x2598e8f6,
+    0x73888bae, 0x16ef3716, 0xf8408204, 0x9d273ebc, 0x241fe921,
+    0x41785599, 0xafd7e08b, 0xcab05c33, 0x3bb659ed, 0x5ed1e555,
+    0xb07e5047, 0xd519ecff, 0x6c213b62, 0x094687da, 0xe7e932c8,
+    0x828e8e70, 0xd49eed28, 0xb1f95190, 0x5f56e482, 0x3a31583a,
+    0x83098fa7, 0xe66e331f, 0x08c1860d, 0x6da63ab5, 0xa4e140bd,
+    0xc186fc05, 0x2f294917, 0x4a4ef5af, 0xf3762232, 0x96119e8a,
+    0x78be2b98, 0x1dd99720, 0x4bc9f478, 0x2eae48c0, 0xc001fdd2,
+    0xa566416a, 0x1c5e96f7, 0x79392a4f, 0x97969f5d, 0xf2f123e5,
+    0x05196b4d, 0x607ed7f5, 0x8ed162e7, 0xebb6de5f, 0x528e09c2,
+    0x37e9b57a, 0xd9460068, 0xbc21bcd0, 0xea31df88, 0x8f566330,
+    0x61f9d622, 0x049e6a9a, 0xbda6bd07, 0xd8c101bf, 0x366eb4ad,
+    0x53090815, 0x9a4e721d, 0xff29cea5, 0x11867bb7, 0x74e1c70f,
+    0xcdd91092, 0xa8beac2a, 0x46111938, 0x2376a580, 0x7566c6d8,
+    0x10017a60, 0xfeaecf72, 0x9bc973ca, 0x22f1a457, 0x479618ef,
+    0xa939adfd, 0xcc5e1145, 0x06ee4d76, 0x6389f1ce, 0x8d2644dc,
+    0xe841f864, 0x51792ff9, 0x341e9341, 0xdab12653, 0xbfd69aeb,
+    0xe9c6f9b3, 0x8ca1450b, 0x620ef019, 0x07694ca1, 0xbe519b3c,
+    0xdb362784, 0x35999296, 0x50fe2e2e, 0x99b95426, 0xfcdee89e,
+    0x12715d8c, 0x7716e134, 0xce2e36a9, 0xab498a11, 0x45e63f03,
+    0x208183bb, 0x7691e0e3, 0x13f65c5b, 0xfd59e949, 0x983e55f1,
+    0x2106826c, 0x44613ed4, 0xaace8bc6, 0xcfa9377e, 0x38417fd6,
+    0x5d26c36e, 0xb389767c, 0xd6eecac4, 0x6fd61d59, 0x0ab1a1e1,
+    0xe41e14f3, 0x8179a84b, 0xd769cb13, 0xb20e77ab, 0x5ca1c2b9,
+    0x39c67e01, 0x80fea99c, 0xe5991524, 0x0b36a036, 0x6e511c8e,
+    0xa7166686, 0xc271da3e, 0x2cde6f2c, 0x49b9d394, 0xf0810409,
+    0x95e6b8b1, 0x7b490da3, 0x1e2eb11b, 0x483ed243, 0x2d596efb,
+    0xc3f6dbe9, 0xa6916751, 0x1fa9b0cc, 0x7ace0c74, 0x9461b966,
+    0xf10605de}};
+
+#endif
+
+#endif
+
+#if N == 2
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
+    0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
+    0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
+    0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
+    0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
+    0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
+    0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
+    0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
+    0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
+    0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
+    0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
+    0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
+    0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
+    0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
+    0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
+    0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
+    0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
+    0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
+    0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
+    0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
+    0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
+    0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
+    0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
+    0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
+    0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
+    0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
+    0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
+    0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
+    0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
+    0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
+    0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
+    0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
+    0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
+    0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
+    0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
+    0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
+    0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
+    0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
+    0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
+    0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
+    0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
+    0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
+    0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
+    0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
+    0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
+    0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
+    0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
+    0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
+    0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
+    0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
+    0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
+    0x0d7139d7},
+   {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
+    0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
+    0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
+    0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
+    0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
+    0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
+    0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
+    0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
+    0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
+    0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
+    0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
+    0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
+    0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
+    0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
+    0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
+    0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
+    0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
+    0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
+    0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
+    0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
+    0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
+    0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
+    0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
+    0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
+    0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
+    0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
+    0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
+    0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
+    0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
+    0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
+    0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
+    0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
+    0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
+    0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
+    0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
+    0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
+    0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
+    0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
+    0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
+    0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
+    0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
+    0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
+    0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
+    0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
+    0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
+    0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
+    0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
+    0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
+    0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
+    0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
+    0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
+    0x1c53e98a},
+   {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
+    0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
+    0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
+    0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
+    0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
+    0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
+    0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
+    0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
+    0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
+    0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
+    0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
+    0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
+    0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
+    0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
+    0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
+    0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
+    0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
+    0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
+    0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
+    0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
+    0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
+    0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
+    0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
+    0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
+    0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
+    0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
+    0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
+    0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
+    0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
+    0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
+    0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
+    0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
+    0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
+    0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
+    0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
+    0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
+    0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
+    0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
+    0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
+    0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
+    0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
+    0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
+    0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
+    0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
+    0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
+    0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
+    0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
+    0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
+    0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
+    0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
+    0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
+    0x3f88e851},
+   {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
+    0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
+    0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
+    0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
+    0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
+    0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
+    0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
+    0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
+    0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
+    0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
+    0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
+    0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
+    0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
+    0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
+    0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
+    0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
+    0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
+    0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
+    0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
+    0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
+    0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
+    0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
+    0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
+    0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
+    0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
+    0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
+    0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
+    0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
+    0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
+    0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
+    0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
+    0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
+    0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
+    0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
+    0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
+    0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
+    0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
+    0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
+    0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
+    0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
+    0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
+    0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
+    0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
+    0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
+    0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
+    0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
+    0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
+    0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
+    0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
+    0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
+    0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
+    0x3dee8ca6},
+   {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
+    0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
+    0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
+    0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
+    0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
+    0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
+    0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
+    0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
+    0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
+    0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
+    0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
+    0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
+    0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
+    0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
+    0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
+    0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
+    0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
+    0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
+    0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
+    0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
+    0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
+    0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
+    0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
+    0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
+    0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
+    0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
+    0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
+    0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
+    0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
+    0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
+    0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
+    0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
+    0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
+    0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
+    0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
+    0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
+    0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
+    0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
+    0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
+    0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
+    0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
+    0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
+    0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
+    0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
+    0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
+    0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
+    0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
+    0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
+    0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
+    0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
+    0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
+    0x36197165},
+   {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
+    0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
+    0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
+    0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
+    0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
+    0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
+    0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
+    0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
+    0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
+    0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
+    0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
+    0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
+    0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
+    0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
+    0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
+    0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
+    0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
+    0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
+    0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
+    0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
+    0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
+    0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
+    0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
+    0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
+    0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
+    0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
+    0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
+    0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
+    0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
+    0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
+    0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
+    0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
+    0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
+    0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
+    0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
+    0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
+    0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
+    0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
+    0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
+    0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
+    0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
+    0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
+    0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
+    0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
+    0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
+    0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
+    0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
+    0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
+    0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
+    0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
+    0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
+    0x1a3b93aa},
+   {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
+    0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
+    0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
+    0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
+    0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
+    0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
+    0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
+    0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
+    0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
+    0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
+    0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
+    0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
+    0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
+    0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
+    0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
+    0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
+    0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
+    0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
+    0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
+    0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
+    0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
+    0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
+    0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
+    0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
+    0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
+    0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
+    0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
+    0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
+    0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
+    0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
+    0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
+    0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
+    0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
+    0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
+    0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
+    0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
+    0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
+    0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
+    0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
+    0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
+    0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
+    0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
+    0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
+    0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
+    0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
+    0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
+    0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
+    0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
+    0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
+    0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
+    0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
+    0xe147d714},
+   {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
+    0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
+    0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
+    0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
+    0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
+    0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
+    0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
+    0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
+    0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
+    0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
+    0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
+    0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
+    0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
+    0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
+    0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
+    0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
+    0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
+    0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
+    0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
+    0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
+    0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
+    0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
+    0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
+    0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
+    0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
+    0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
+    0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
+    0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
+    0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
+    0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
+    0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
+    0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
+    0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
+    0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
+    0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
+    0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
+    0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
+    0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
+    0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
+    0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
+    0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
+    0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
+    0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
+    0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
+    0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
+    0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
+    0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
+    0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
+    0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
+    0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
+    0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
+    0x494f0c4b}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0x43147b1700000000, 0x8628f62e00000000,
+    0xc53c8d3900000000, 0x0c51ec5d00000000, 0x4f45974a00000000,
+    0x8a791a7300000000, 0xc96d616400000000, 0x18a2d8bb00000000,
+    0x5bb6a3ac00000000, 0x9e8a2e9500000000, 0xdd9e558200000000,
+    0x14f334e600000000, 0x57e74ff100000000, 0x92dbc2c800000000,
+    0xd1cfb9df00000000, 0x7142c0ac00000000, 0x3256bbbb00000000,
+    0xf76a368200000000, 0xb47e4d9500000000, 0x7d132cf100000000,
+    0x3e0757e600000000, 0xfb3bdadf00000000, 0xb82fa1c800000000,
+    0x69e0181700000000, 0x2af4630000000000, 0xefc8ee3900000000,
+    0xacdc952e00000000, 0x65b1f44a00000000, 0x26a58f5d00000000,
+    0xe399026400000000, 0xa08d797300000000, 0xa382f18200000000,
+    0xe0968a9500000000, 0x25aa07ac00000000, 0x66be7cbb00000000,
+    0xafd31ddf00000000, 0xecc766c800000000, 0x29fbebf100000000,
+    0x6aef90e600000000, 0xbb20293900000000, 0xf834522e00000000,
+    0x3d08df1700000000, 0x7e1ca40000000000, 0xb771c56400000000,
+    0xf465be7300000000, 0x3159334a00000000, 0x724d485d00000000,
+    0xd2c0312e00000000, 0x91d44a3900000000, 0x54e8c70000000000,
+    0x17fcbc1700000000, 0xde91dd7300000000, 0x9d85a66400000000,
+    0x58b92b5d00000000, 0x1bad504a00000000, 0xca62e99500000000,
+    0x8976928200000000, 0x4c4a1fbb00000000, 0x0f5e64ac00000000,
+    0xc63305c800000000, 0x85277edf00000000, 0x401bf3e600000000,
+    0x030f88f100000000, 0x070392de00000000, 0x4417e9c900000000,
+    0x812b64f000000000, 0xc23f1fe700000000, 0x0b527e8300000000,
+    0x4846059400000000, 0x8d7a88ad00000000, 0xce6ef3ba00000000,
+    0x1fa14a6500000000, 0x5cb5317200000000, 0x9989bc4b00000000,
+    0xda9dc75c00000000, 0x13f0a63800000000, 0x50e4dd2f00000000,
+    0x95d8501600000000, 0xd6cc2b0100000000, 0x7641527200000000,
+    0x3555296500000000, 0xf069a45c00000000, 0xb37ddf4b00000000,
+    0x7a10be2f00000000, 0x3904c53800000000, 0xfc38480100000000,
+    0xbf2c331600000000, 0x6ee38ac900000000, 0x2df7f1de00000000,
+    0xe8cb7ce700000000, 0xabdf07f000000000, 0x62b2669400000000,
+    0x21a61d8300000000, 0xe49a90ba00000000, 0xa78eebad00000000,
+    0xa481635c00000000, 0xe795184b00000000, 0x22a9957200000000,
+    0x61bdee6500000000, 0xa8d08f0100000000, 0xebc4f41600000000,
+    0x2ef8792f00000000, 0x6dec023800000000, 0xbc23bbe700000000,
+    0xff37c0f000000000, 0x3a0b4dc900000000, 0x791f36de00000000,
+    0xb07257ba00000000, 0xf3662cad00000000, 0x365aa19400000000,
+    0x754eda8300000000, 0xd5c3a3f000000000, 0x96d7d8e700000000,
+    0x53eb55de00000000, 0x10ff2ec900000000, 0xd9924fad00000000,
+    0x9a8634ba00000000, 0x5fbab98300000000, 0x1caec29400000000,
+    0xcd617b4b00000000, 0x8e75005c00000000, 0x4b498d6500000000,
+    0x085df67200000000, 0xc130971600000000, 0x8224ec0100000000,
+    0x4718613800000000, 0x040c1a2f00000000, 0x4f00556600000000,
+    0x0c142e7100000000, 0xc928a34800000000, 0x8a3cd85f00000000,
+    0x4351b93b00000000, 0x0045c22c00000000, 0xc5794f1500000000,
+    0x866d340200000000, 0x57a28ddd00000000, 0x14b6f6ca00000000,
+    0xd18a7bf300000000, 0x929e00e400000000, 0x5bf3618000000000,
+    0x18e71a9700000000, 0xdddb97ae00000000, 0x9ecfecb900000000,
+    0x3e4295ca00000000, 0x7d56eedd00000000, 0xb86a63e400000000,
+    0xfb7e18f300000000, 0x3213799700000000, 0x7107028000000000,
+    0xb43b8fb900000000, 0xf72ff4ae00000000, 0x26e04d7100000000,
+    0x65f4366600000000, 0xa0c8bb5f00000000, 0xe3dcc04800000000,
+    0x2ab1a12c00000000, 0x69a5da3b00000000, 0xac99570200000000,
+    0xef8d2c1500000000, 0xec82a4e400000000, 0xaf96dff300000000,
+    0x6aaa52ca00000000, 0x29be29dd00000000, 0xe0d348b900000000,
+    0xa3c733ae00000000, 0x66fbbe9700000000, 0x25efc58000000000,
+    0xf4207c5f00000000, 0xb734074800000000, 0x72088a7100000000,
+    0x311cf16600000000, 0xf871900200000000, 0xbb65eb1500000000,
+    0x7e59662c00000000, 0x3d4d1d3b00000000, 0x9dc0644800000000,
+    0xded41f5f00000000, 0x1be8926600000000, 0x58fce97100000000,
+    0x9191881500000000, 0xd285f30200000000, 0x17b97e3b00000000,
+    0x54ad052c00000000, 0x8562bcf300000000, 0xc676c7e400000000,
+    0x034a4add00000000, 0x405e31ca00000000, 0x893350ae00000000,
+    0xca272bb900000000, 0x0f1ba68000000000, 0x4c0fdd9700000000,
+    0x4803c7b800000000, 0x0b17bcaf00000000, 0xce2b319600000000,
+    0x8d3f4a8100000000, 0x44522be500000000, 0x074650f200000000,
+    0xc27addcb00000000, 0x816ea6dc00000000, 0x50a11f0300000000,
+    0x13b5641400000000, 0xd689e92d00000000, 0x959d923a00000000,
+    0x5cf0f35e00000000, 0x1fe4884900000000, 0xdad8057000000000,
+    0x99cc7e6700000000, 0x3941071400000000, 0x7a557c0300000000,
+    0xbf69f13a00000000, 0xfc7d8a2d00000000, 0x3510eb4900000000,
+    0x7604905e00000000, 0xb3381d6700000000, 0xf02c667000000000,
+    0x21e3dfaf00000000, 0x62f7a4b800000000, 0xa7cb298100000000,
+    0xe4df529600000000, 0x2db233f200000000, 0x6ea648e500000000,
+    0xab9ac5dc00000000, 0xe88ebecb00000000, 0xeb81363a00000000,
+    0xa8954d2d00000000, 0x6da9c01400000000, 0x2ebdbb0300000000,
+    0xe7d0da6700000000, 0xa4c4a17000000000, 0x61f82c4900000000,
+    0x22ec575e00000000, 0xf323ee8100000000, 0xb037959600000000,
+    0x750b18af00000000, 0x361f63b800000000, 0xff7202dc00000000,
+    0xbc6679cb00000000, 0x795af4f200000000, 0x3a4e8fe500000000,
+    0x9ac3f69600000000, 0xd9d78d8100000000, 0x1ceb00b800000000,
+    0x5fff7baf00000000, 0x96921acb00000000, 0xd58661dc00000000,
+    0x10baece500000000, 0x53ae97f200000000, 0x82612e2d00000000,
+    0xc175553a00000000, 0x0449d80300000000, 0x475da31400000000,
+    0x8e30c27000000000, 0xcd24b96700000000, 0x0818345e00000000,
+    0x4b0c4f4900000000},
+   {0x0000000000000000, 0x3e6bc2ef00000000, 0x3dd0f50400000000,
+    0x03bb37eb00000000, 0x7aa0eb0900000000, 0x44cb29e600000000,
+    0x47701e0d00000000, 0x791bdce200000000, 0xf440d71300000000,
+    0xca2b15fc00000000, 0xc990221700000000, 0xf7fbe0f800000000,
+    0x8ee03c1a00000000, 0xb08bfef500000000, 0xb330c91e00000000,
+    0x8d5b0bf100000000, 0xe881ae2700000000, 0xd6ea6cc800000000,
+    0xd5515b2300000000, 0xeb3a99cc00000000, 0x9221452e00000000,
+    0xac4a87c100000000, 0xaff1b02a00000000, 0x919a72c500000000,
+    0x1cc1793400000000, 0x22aabbdb00000000, 0x21118c3000000000,
+    0x1f7a4edf00000000, 0x6661923d00000000, 0x580a50d200000000,
+    0x5bb1673900000000, 0x65daa5d600000000, 0xd0035d4f00000000,
+    0xee689fa000000000, 0xedd3a84b00000000, 0xd3b86aa400000000,
+    0xaaa3b64600000000, 0x94c874a900000000, 0x9773434200000000,
+    0xa91881ad00000000, 0x24438a5c00000000, 0x1a2848b300000000,
+    0x19937f5800000000, 0x27f8bdb700000000, 0x5ee3615500000000,
+    0x6088a3ba00000000, 0x6333945100000000, 0x5d5856be00000000,
+    0x3882f36800000000, 0x06e9318700000000, 0x0552066c00000000,
+    0x3b39c48300000000, 0x4222186100000000, 0x7c49da8e00000000,
+    0x7ff2ed6500000000, 0x41992f8a00000000, 0xccc2247b00000000,
+    0xf2a9e69400000000, 0xf112d17f00000000, 0xcf79139000000000,
+    0xb662cf7200000000, 0x88090d9d00000000, 0x8bb23a7600000000,
+    0xb5d9f89900000000, 0xa007ba9e00000000, 0x9e6c787100000000,
+    0x9dd74f9a00000000, 0xa3bc8d7500000000, 0xdaa7519700000000,
+    0xe4cc937800000000, 0xe777a49300000000, 0xd91c667c00000000,
+    0x54476d8d00000000, 0x6a2caf6200000000, 0x6997988900000000,
+    0x57fc5a6600000000, 0x2ee7868400000000, 0x108c446b00000000,
+    0x1337738000000000, 0x2d5cb16f00000000, 0x488614b900000000,
+    0x76edd65600000000, 0x7556e1bd00000000, 0x4b3d235200000000,
+    0x3226ffb000000000, 0x0c4d3d5f00000000, 0x0ff60ab400000000,
+    0x319dc85b00000000, 0xbcc6c3aa00000000, 0x82ad014500000000,
+    0x811636ae00000000, 0xbf7df44100000000, 0xc66628a300000000,
+    0xf80dea4c00000000, 0xfbb6dda700000000, 0xc5dd1f4800000000,
+    0x7004e7d100000000, 0x4e6f253e00000000, 0x4dd412d500000000,
+    0x73bfd03a00000000, 0x0aa40cd800000000, 0x34cfce3700000000,
+    0x3774f9dc00000000, 0x091f3b3300000000, 0x844430c200000000,
+    0xba2ff22d00000000, 0xb994c5c600000000, 0x87ff072900000000,
+    0xfee4dbcb00000000, 0xc08f192400000000, 0xc3342ecf00000000,
+    0xfd5fec2000000000, 0x988549f600000000, 0xa6ee8b1900000000,
+    0xa555bcf200000000, 0x9b3e7e1d00000000, 0xe225a2ff00000000,
+    0xdc4e601000000000, 0xdff557fb00000000, 0xe19e951400000000,
+    0x6cc59ee500000000, 0x52ae5c0a00000000, 0x51156be100000000,
+    0x6f7ea90e00000000, 0x166575ec00000000, 0x280eb70300000000,
+    0x2bb580e800000000, 0x15de420700000000, 0x010905e600000000,
+    0x3f62c70900000000, 0x3cd9f0e200000000, 0x02b2320d00000000,
+    0x7ba9eeef00000000, 0x45c22c0000000000, 0x46791beb00000000,
+    0x7812d90400000000, 0xf549d2f500000000, 0xcb22101a00000000,
+    0xc89927f100000000, 0xf6f2e51e00000000, 0x8fe939fc00000000,
+    0xb182fb1300000000, 0xb239ccf800000000, 0x8c520e1700000000,
+    0xe988abc100000000, 0xd7e3692e00000000, 0xd4585ec500000000,
+    0xea339c2a00000000, 0x932840c800000000, 0xad43822700000000,
+    0xaef8b5cc00000000, 0x9093772300000000, 0x1dc87cd200000000,
+    0x23a3be3d00000000, 0x201889d600000000, 0x1e734b3900000000,
+    0x676897db00000000, 0x5903553400000000, 0x5ab862df00000000,
+    0x64d3a03000000000, 0xd10a58a900000000, 0xef619a4600000000,
+    0xecdaadad00000000, 0xd2b16f4200000000, 0xabaab3a000000000,
+    0x95c1714f00000000, 0x967a46a400000000, 0xa811844b00000000,
+    0x254a8fba00000000, 0x1b214d5500000000, 0x189a7abe00000000,
+    0x26f1b85100000000, 0x5fea64b300000000, 0x6181a65c00000000,
+    0x623a91b700000000, 0x5c51535800000000, 0x398bf68e00000000,
+    0x07e0346100000000, 0x045b038a00000000, 0x3a30c16500000000,
+    0x432b1d8700000000, 0x7d40df6800000000, 0x7efbe88300000000,
+    0x40902a6c00000000, 0xcdcb219d00000000, 0xf3a0e37200000000,
+    0xf01bd49900000000, 0xce70167600000000, 0xb76bca9400000000,
+    0x8900087b00000000, 0x8abb3f9000000000, 0xb4d0fd7f00000000,
+    0xa10ebf7800000000, 0x9f657d9700000000, 0x9cde4a7c00000000,
+    0xa2b5889300000000, 0xdbae547100000000, 0xe5c5969e00000000,
+    0xe67ea17500000000, 0xd815639a00000000, 0x554e686b00000000,
+    0x6b25aa8400000000, 0x689e9d6f00000000, 0x56f55f8000000000,
+    0x2fee836200000000, 0x1185418d00000000, 0x123e766600000000,
+    0x2c55b48900000000, 0x498f115f00000000, 0x77e4d3b000000000,
+    0x745fe45b00000000, 0x4a3426b400000000, 0x332ffa5600000000,
+    0x0d4438b900000000, 0x0eff0f5200000000, 0x3094cdbd00000000,
+    0xbdcfc64c00000000, 0x83a404a300000000, 0x801f334800000000,
+    0xbe74f1a700000000, 0xc76f2d4500000000, 0xf904efaa00000000,
+    0xfabfd84100000000, 0xc4d41aae00000000, 0x710de23700000000,
+    0x4f6620d800000000, 0x4cdd173300000000, 0x72b6d5dc00000000,
+    0x0bad093e00000000, 0x35c6cbd100000000, 0x367dfc3a00000000,
+    0x08163ed500000000, 0x854d352400000000, 0xbb26f7cb00000000,
+    0xb89dc02000000000, 0x86f602cf00000000, 0xffedde2d00000000,
+    0xc1861cc200000000, 0xc23d2b2900000000, 0xfc56e9c600000000,
+    0x998c4c1000000000, 0xa7e78eff00000000, 0xa45cb91400000000,
+    0x9a377bfb00000000, 0xe32ca71900000000, 0xdd4765f600000000,
+    0xdefc521d00000000, 0xe09790f200000000, 0x6dcc9b0300000000,
+    0x53a759ec00000000, 0x501c6e0700000000, 0x6e77ace800000000,
+    0x176c700a00000000, 0x2907b2e500000000, 0x2abc850e00000000,
+    0x14d747e100000000},
+   {0x0000000000000000, 0xc0df8ec100000000, 0xc1b96c5800000000,
+    0x0166e29900000000, 0x8273d9b000000000, 0x42ac577100000000,
+    0x43cab5e800000000, 0x83153b2900000000, 0x45e1c3ba00000000,
+    0x853e4d7b00000000, 0x8458afe200000000, 0x4487212300000000,
+    0xc7921a0a00000000, 0x074d94cb00000000, 0x062b765200000000,
+    0xc6f4f89300000000, 0xcbc4f6ae00000000, 0x0b1b786f00000000,
+    0x0a7d9af600000000, 0xcaa2143700000000, 0x49b72f1e00000000,
+    0x8968a1df00000000, 0x880e434600000000, 0x48d1cd8700000000,
+    0x8e25351400000000, 0x4efabbd500000000, 0x4f9c594c00000000,
+    0x8f43d78d00000000, 0x0c56eca400000000, 0xcc89626500000000,
+    0xcdef80fc00000000, 0x0d300e3d00000000, 0xd78f9c8600000000,
+    0x1750124700000000, 0x1636f0de00000000, 0xd6e97e1f00000000,
+    0x55fc453600000000, 0x9523cbf700000000, 0x9445296e00000000,
+    0x549aa7af00000000, 0x926e5f3c00000000, 0x52b1d1fd00000000,
+    0x53d7336400000000, 0x9308bda500000000, 0x101d868c00000000,
+    0xd0c2084d00000000, 0xd1a4ead400000000, 0x117b641500000000,
+    0x1c4b6a2800000000, 0xdc94e4e900000000, 0xddf2067000000000,
+    0x1d2d88b100000000, 0x9e38b39800000000, 0x5ee73d5900000000,
+    0x5f81dfc000000000, 0x9f5e510100000000, 0x59aaa99200000000,
+    0x9975275300000000, 0x9813c5ca00000000, 0x58cc4b0b00000000,
+    0xdbd9702200000000, 0x1b06fee300000000, 0x1a601c7a00000000,
+    0xdabf92bb00000000, 0xef1948d600000000, 0x2fc6c61700000000,
+    0x2ea0248e00000000, 0xee7faa4f00000000, 0x6d6a916600000000,
+    0xadb51fa700000000, 0xacd3fd3e00000000, 0x6c0c73ff00000000,
+    0xaaf88b6c00000000, 0x6a2705ad00000000, 0x6b41e73400000000,
+    0xab9e69f500000000, 0x288b52dc00000000, 0xe854dc1d00000000,
+    0xe9323e8400000000, 0x29edb04500000000, 0x24ddbe7800000000,
+    0xe40230b900000000, 0xe564d22000000000, 0x25bb5ce100000000,
+    0xa6ae67c800000000, 0x6671e90900000000, 0x67170b9000000000,
+    0xa7c8855100000000, 0x613c7dc200000000, 0xa1e3f30300000000,
+    0xa085119a00000000, 0x605a9f5b00000000, 0xe34fa47200000000,
+    0x23902ab300000000, 0x22f6c82a00000000, 0xe22946eb00000000,
+    0x3896d45000000000, 0xf8495a9100000000, 0xf92fb80800000000,
+    0x39f036c900000000, 0xbae50de000000000, 0x7a3a832100000000,
+    0x7b5c61b800000000, 0xbb83ef7900000000, 0x7d7717ea00000000,
+    0xbda8992b00000000, 0xbcce7bb200000000, 0x7c11f57300000000,
+    0xff04ce5a00000000, 0x3fdb409b00000000, 0x3ebda20200000000,
+    0xfe622cc300000000, 0xf35222fe00000000, 0x338dac3f00000000,
+    0x32eb4ea600000000, 0xf234c06700000000, 0x7121fb4e00000000,
+    0xb1fe758f00000000, 0xb098971600000000, 0x704719d700000000,
+    0xb6b3e14400000000, 0x766c6f8500000000, 0x770a8d1c00000000,
+    0xb7d503dd00000000, 0x34c038f400000000, 0xf41fb63500000000,
+    0xf57954ac00000000, 0x35a6da6d00000000, 0x9f35e17700000000,
+    0x5fea6fb600000000, 0x5e8c8d2f00000000, 0x9e5303ee00000000,
+    0x1d4638c700000000, 0xdd99b60600000000, 0xdcff549f00000000,
+    0x1c20da5e00000000, 0xdad422cd00000000, 0x1a0bac0c00000000,
+    0x1b6d4e9500000000, 0xdbb2c05400000000, 0x58a7fb7d00000000,
+    0x987875bc00000000, 0x991e972500000000, 0x59c119e400000000,
+    0x54f117d900000000, 0x942e991800000000, 0x95487b8100000000,
+    0x5597f54000000000, 0xd682ce6900000000, 0x165d40a800000000,
+    0x173ba23100000000, 0xd7e42cf000000000, 0x1110d46300000000,
+    0xd1cf5aa200000000, 0xd0a9b83b00000000, 0x107636fa00000000,
+    0x93630dd300000000, 0x53bc831200000000, 0x52da618b00000000,
+    0x9205ef4a00000000, 0x48ba7df100000000, 0x8865f33000000000,
+    0x890311a900000000, 0x49dc9f6800000000, 0xcac9a44100000000,
+    0x0a162a8000000000, 0x0b70c81900000000, 0xcbaf46d800000000,
+    0x0d5bbe4b00000000, 0xcd84308a00000000, 0xcce2d21300000000,
+    0x0c3d5cd200000000, 0x8f2867fb00000000, 0x4ff7e93a00000000,
+    0x4e910ba300000000, 0x8e4e856200000000, 0x837e8b5f00000000,
+    0x43a1059e00000000, 0x42c7e70700000000, 0x821869c600000000,
+    0x010d52ef00000000, 0xc1d2dc2e00000000, 0xc0b43eb700000000,
+    0x006bb07600000000, 0xc69f48e500000000, 0x0640c62400000000,
+    0x072624bd00000000, 0xc7f9aa7c00000000, 0x44ec915500000000,
+    0x84331f9400000000, 0x8555fd0d00000000, 0x458a73cc00000000,
+    0x702ca9a100000000, 0xb0f3276000000000, 0xb195c5f900000000,
+    0x714a4b3800000000, 0xf25f701100000000, 0x3280fed000000000,
+    0x33e61c4900000000, 0xf339928800000000, 0x35cd6a1b00000000,
+    0xf512e4da00000000, 0xf474064300000000, 0x34ab888200000000,
+    0xb7beb3ab00000000, 0x77613d6a00000000, 0x7607dff300000000,
+    0xb6d8513200000000, 0xbbe85f0f00000000, 0x7b37d1ce00000000,
+    0x7a51335700000000, 0xba8ebd9600000000, 0x399b86bf00000000,
+    0xf944087e00000000, 0xf822eae700000000, 0x38fd642600000000,
+    0xfe099cb500000000, 0x3ed6127400000000, 0x3fb0f0ed00000000,
+    0xff6f7e2c00000000, 0x7c7a450500000000, 0xbca5cbc400000000,
+    0xbdc3295d00000000, 0x7d1ca79c00000000, 0xa7a3352700000000,
+    0x677cbbe600000000, 0x661a597f00000000, 0xa6c5d7be00000000,
+    0x25d0ec9700000000, 0xe50f625600000000, 0xe46980cf00000000,
+    0x24b60e0e00000000, 0xe242f69d00000000, 0x229d785c00000000,
+    0x23fb9ac500000000, 0xe324140400000000, 0x60312f2d00000000,
+    0xa0eea1ec00000000, 0xa188437500000000, 0x6157cdb400000000,
+    0x6c67c38900000000, 0xacb84d4800000000, 0xaddeafd100000000,
+    0x6d01211000000000, 0xee141a3900000000, 0x2ecb94f800000000,
+    0x2fad766100000000, 0xef72f8a000000000, 0x2986003300000000,
+    0xe9598ef200000000, 0xe83f6c6b00000000, 0x28e0e2aa00000000,
+    0xabf5d98300000000, 0x6b2a574200000000, 0x6a4cb5db00000000,
+    0xaa933b1a00000000},
+   {0x0000000000000000, 0x6f4ca59b00000000, 0x9f9e3bec00000000,
+    0xf0d29e7700000000, 0x7f3b060300000000, 0x1077a39800000000,
+    0xe0a53def00000000, 0x8fe9987400000000, 0xfe760c0600000000,
+    0x913aa99d00000000, 0x61e837ea00000000, 0x0ea4927100000000,
+    0x814d0a0500000000, 0xee01af9e00000000, 0x1ed331e900000000,
+    0x719f947200000000, 0xfced180c00000000, 0x93a1bd9700000000,
+    0x637323e000000000, 0x0c3f867b00000000, 0x83d61e0f00000000,
+    0xec9abb9400000000, 0x1c4825e300000000, 0x7304807800000000,
+    0x029b140a00000000, 0x6dd7b19100000000, 0x9d052fe600000000,
+    0xf2498a7d00000000, 0x7da0120900000000, 0x12ecb79200000000,
+    0xe23e29e500000000, 0x8d728c7e00000000, 0xf8db311800000000,
+    0x9797948300000000, 0x67450af400000000, 0x0809af6f00000000,
+    0x87e0371b00000000, 0xe8ac928000000000, 0x187e0cf700000000,
+    0x7732a96c00000000, 0x06ad3d1e00000000, 0x69e1988500000000,
+    0x993306f200000000, 0xf67fa36900000000, 0x79963b1d00000000,
+    0x16da9e8600000000, 0xe60800f100000000, 0x8944a56a00000000,
+    0x0436291400000000, 0x6b7a8c8f00000000, 0x9ba812f800000000,
+    0xf4e4b76300000000, 0x7b0d2f1700000000, 0x14418a8c00000000,
+    0xe49314fb00000000, 0x8bdfb16000000000, 0xfa40251200000000,
+    0x950c808900000000, 0x65de1efe00000000, 0x0a92bb6500000000,
+    0x857b231100000000, 0xea37868a00000000, 0x1ae518fd00000000,
+    0x75a9bd6600000000, 0xf0b7633000000000, 0x9ffbc6ab00000000,
+    0x6f2958dc00000000, 0x0065fd4700000000, 0x8f8c653300000000,
+    0xe0c0c0a800000000, 0x10125edf00000000, 0x7f5efb4400000000,
+    0x0ec16f3600000000, 0x618dcaad00000000, 0x915f54da00000000,
+    0xfe13f14100000000, 0x71fa693500000000, 0x1eb6ccae00000000,
+    0xee6452d900000000, 0x8128f74200000000, 0x0c5a7b3c00000000,
+    0x6316dea700000000, 0x93c440d000000000, 0xfc88e54b00000000,
+    0x73617d3f00000000, 0x1c2dd8a400000000, 0xecff46d300000000,
+    0x83b3e34800000000, 0xf22c773a00000000, 0x9d60d2a100000000,
+    0x6db24cd600000000, 0x02fee94d00000000, 0x8d17713900000000,
+    0xe25bd4a200000000, 0x12894ad500000000, 0x7dc5ef4e00000000,
+    0x086c522800000000, 0x6720f7b300000000, 0x97f269c400000000,
+    0xf8becc5f00000000, 0x7757542b00000000, 0x181bf1b000000000,
+    0xe8c96fc700000000, 0x8785ca5c00000000, 0xf61a5e2e00000000,
+    0x9956fbb500000000, 0x698465c200000000, 0x06c8c05900000000,
+    0x8921582d00000000, 0xe66dfdb600000000, 0x16bf63c100000000,
+    0x79f3c65a00000000, 0xf4814a2400000000, 0x9bcdefbf00000000,
+    0x6b1f71c800000000, 0x0453d45300000000, 0x8bba4c2700000000,
+    0xe4f6e9bc00000000, 0x142477cb00000000, 0x7b68d25000000000,
+    0x0af7462200000000, 0x65bbe3b900000000, 0x95697dce00000000,
+    0xfa25d85500000000, 0x75cc402100000000, 0x1a80e5ba00000000,
+    0xea527bcd00000000, 0x851ede5600000000, 0xe06fc76000000000,
+    0x8f2362fb00000000, 0x7ff1fc8c00000000, 0x10bd591700000000,
+    0x9f54c16300000000, 0xf01864f800000000, 0x00cafa8f00000000,
+    0x6f865f1400000000, 0x1e19cb6600000000, 0x71556efd00000000,
+    0x8187f08a00000000, 0xeecb551100000000, 0x6122cd6500000000,
+    0x0e6e68fe00000000, 0xfebcf68900000000, 0x91f0531200000000,
+    0x1c82df6c00000000, 0x73ce7af700000000, 0x831ce48000000000,
+    0xec50411b00000000, 0x63b9d96f00000000, 0x0cf57cf400000000,
+    0xfc27e28300000000, 0x936b471800000000, 0xe2f4d36a00000000,
+    0x8db876f100000000, 0x7d6ae88600000000, 0x12264d1d00000000,
+    0x9dcfd56900000000, 0xf28370f200000000, 0x0251ee8500000000,
+    0x6d1d4b1e00000000, 0x18b4f67800000000, 0x77f853e300000000,
+    0x872acd9400000000, 0xe866680f00000000, 0x678ff07b00000000,
+    0x08c355e000000000, 0xf811cb9700000000, 0x975d6e0c00000000,
+    0xe6c2fa7e00000000, 0x898e5fe500000000, 0x795cc19200000000,
+    0x1610640900000000, 0x99f9fc7d00000000, 0xf6b559e600000000,
+    0x0667c79100000000, 0x692b620a00000000, 0xe459ee7400000000,
+    0x8b154bef00000000, 0x7bc7d59800000000, 0x148b700300000000,
+    0x9b62e87700000000, 0xf42e4dec00000000, 0x04fcd39b00000000,
+    0x6bb0760000000000, 0x1a2fe27200000000, 0x756347e900000000,
+    0x85b1d99e00000000, 0xeafd7c0500000000, 0x6514e47100000000,
+    0x0a5841ea00000000, 0xfa8adf9d00000000, 0x95c67a0600000000,
+    0x10d8a45000000000, 0x7f9401cb00000000, 0x8f469fbc00000000,
+    0xe00a3a2700000000, 0x6fe3a25300000000, 0x00af07c800000000,
+    0xf07d99bf00000000, 0x9f313c2400000000, 0xeeaea85600000000,
+    0x81e20dcd00000000, 0x713093ba00000000, 0x1e7c362100000000,
+    0x9195ae5500000000, 0xfed90bce00000000, 0x0e0b95b900000000,
+    0x6147302200000000, 0xec35bc5c00000000, 0x837919c700000000,
+    0x73ab87b000000000, 0x1ce7222b00000000, 0x930eba5f00000000,
+    0xfc421fc400000000, 0x0c9081b300000000, 0x63dc242800000000,
+    0x1243b05a00000000, 0x7d0f15c100000000, 0x8ddd8bb600000000,
+    0xe2912e2d00000000, 0x6d78b65900000000, 0x023413c200000000,
+    0xf2e68db500000000, 0x9daa282e00000000, 0xe803954800000000,
+    0x874f30d300000000, 0x779daea400000000, 0x18d10b3f00000000,
+    0x9738934b00000000, 0xf87436d000000000, 0x08a6a8a700000000,
+    0x67ea0d3c00000000, 0x1675994e00000000, 0x79393cd500000000,
+    0x89eba2a200000000, 0xe6a7073900000000, 0x694e9f4d00000000,
+    0x06023ad600000000, 0xf6d0a4a100000000, 0x999c013a00000000,
+    0x14ee8d4400000000, 0x7ba228df00000000, 0x8b70b6a800000000,
+    0xe43c133300000000, 0x6bd58b4700000000, 0x04992edc00000000,
+    0xf44bb0ab00000000, 0x9b07153000000000, 0xea98814200000000,
+    0x85d424d900000000, 0x7506baae00000000, 0x1a4a1f3500000000,
+    0x95a3874100000000, 0xfaef22da00000000, 0x0a3dbcad00000000,
+    0x6571193600000000},
+   {0x0000000000000000, 0x85d996dd00000000, 0x4bb55c6000000000,
+    0xce6ccabd00000000, 0x966ab9c000000000, 0x13b32f1d00000000,
+    0xdddfe5a000000000, 0x5806737d00000000, 0x6dd3035a00000000,
+    0xe80a958700000000, 0x26665f3a00000000, 0xa3bfc9e700000000,
+    0xfbb9ba9a00000000, 0x7e602c4700000000, 0xb00ce6fa00000000,
+    0x35d5702700000000, 0xdaa607b400000000, 0x5f7f916900000000,
+    0x91135bd400000000, 0x14cacd0900000000, 0x4cccbe7400000000,
+    0xc91528a900000000, 0x0779e21400000000, 0x82a074c900000000,
+    0xb77504ee00000000, 0x32ac923300000000, 0xfcc0588e00000000,
+    0x7919ce5300000000, 0x211fbd2e00000000, 0xa4c62bf300000000,
+    0x6aaae14e00000000, 0xef73779300000000, 0xf54b7eb300000000,
+    0x7092e86e00000000, 0xbefe22d300000000, 0x3b27b40e00000000,
+    0x6321c77300000000, 0xe6f851ae00000000, 0x28949b1300000000,
+    0xad4d0dce00000000, 0x98987de900000000, 0x1d41eb3400000000,
+    0xd32d218900000000, 0x56f4b75400000000, 0x0ef2c42900000000,
+    0x8b2b52f400000000, 0x4547984900000000, 0xc09e0e9400000000,
+    0x2fed790700000000, 0xaa34efda00000000, 0x6458256700000000,
+    0xe181b3ba00000000, 0xb987c0c700000000, 0x3c5e561a00000000,
+    0xf2329ca700000000, 0x77eb0a7a00000000, 0x423e7a5d00000000,
+    0xc7e7ec8000000000, 0x098b263d00000000, 0x8c52b0e000000000,
+    0xd454c39d00000000, 0x518d554000000000, 0x9fe19ffd00000000,
+    0x1a38092000000000, 0xab918dbd00000000, 0x2e481b6000000000,
+    0xe024d1dd00000000, 0x65fd470000000000, 0x3dfb347d00000000,
+    0xb822a2a000000000, 0x764e681d00000000, 0xf397fec000000000,
+    0xc6428ee700000000, 0x439b183a00000000, 0x8df7d28700000000,
+    0x082e445a00000000, 0x5028372700000000, 0xd5f1a1fa00000000,
+    0x1b9d6b4700000000, 0x9e44fd9a00000000, 0x71378a0900000000,
+    0xf4ee1cd400000000, 0x3a82d66900000000, 0xbf5b40b400000000,
+    0xe75d33c900000000, 0x6284a51400000000, 0xace86fa900000000,
+    0x2931f97400000000, 0x1ce4895300000000, 0x993d1f8e00000000,
+    0x5751d53300000000, 0xd28843ee00000000, 0x8a8e309300000000,
+    0x0f57a64e00000000, 0xc13b6cf300000000, 0x44e2fa2e00000000,
+    0x5edaf30e00000000, 0xdb0365d300000000, 0x156faf6e00000000,
+    0x90b639b300000000, 0xc8b04ace00000000, 0x4d69dc1300000000,
+    0x830516ae00000000, 0x06dc807300000000, 0x3309f05400000000,
+    0xb6d0668900000000, 0x78bcac3400000000, 0xfd653ae900000000,
+    0xa563499400000000, 0x20badf4900000000, 0xeed615f400000000,
+    0x6b0f832900000000, 0x847cf4ba00000000, 0x01a5626700000000,
+    0xcfc9a8da00000000, 0x4a103e0700000000, 0x12164d7a00000000,
+    0x97cfdba700000000, 0x59a3111a00000000, 0xdc7a87c700000000,
+    0xe9aff7e000000000, 0x6c76613d00000000, 0xa21aab8000000000,
+    0x27c33d5d00000000, 0x7fc54e2000000000, 0xfa1cd8fd00000000,
+    0x3470124000000000, 0xb1a9849d00000000, 0x17256aa000000000,
+    0x92fcfc7d00000000, 0x5c9036c000000000, 0xd949a01d00000000,
+    0x814fd36000000000, 0x049645bd00000000, 0xcafa8f0000000000,
+    0x4f2319dd00000000, 0x7af669fa00000000, 0xff2fff2700000000,
+    0x3143359a00000000, 0xb49aa34700000000, 0xec9cd03a00000000,
+    0x694546e700000000, 0xa7298c5a00000000, 0x22f01a8700000000,
+    0xcd836d1400000000, 0x485afbc900000000, 0x8636317400000000,
+    0x03efa7a900000000, 0x5be9d4d400000000, 0xde30420900000000,
+    0x105c88b400000000, 0x95851e6900000000, 0xa0506e4e00000000,
+    0x2589f89300000000, 0xebe5322e00000000, 0x6e3ca4f300000000,
+    0x363ad78e00000000, 0xb3e3415300000000, 0x7d8f8bee00000000,
+    0xf8561d3300000000, 0xe26e141300000000, 0x67b782ce00000000,
+    0xa9db487300000000, 0x2c02deae00000000, 0x7404add300000000,
+    0xf1dd3b0e00000000, 0x3fb1f1b300000000, 0xba68676e00000000,
+    0x8fbd174900000000, 0x0a64819400000000, 0xc4084b2900000000,
+    0x41d1ddf400000000, 0x19d7ae8900000000, 0x9c0e385400000000,
+    0x5262f2e900000000, 0xd7bb643400000000, 0x38c813a700000000,
+    0xbd11857a00000000, 0x737d4fc700000000, 0xf6a4d91a00000000,
+    0xaea2aa6700000000, 0x2b7b3cba00000000, 0xe517f60700000000,
+    0x60ce60da00000000, 0x551b10fd00000000, 0xd0c2862000000000,
+    0x1eae4c9d00000000, 0x9b77da4000000000, 0xc371a93d00000000,
+    0x46a83fe000000000, 0x88c4f55d00000000, 0x0d1d638000000000,
+    0xbcb4e71d00000000, 0x396d71c000000000, 0xf701bb7d00000000,
+    0x72d82da000000000, 0x2ade5edd00000000, 0xaf07c80000000000,
+    0x616b02bd00000000, 0xe4b2946000000000, 0xd167e44700000000,
+    0x54be729a00000000, 0x9ad2b82700000000, 0x1f0b2efa00000000,
+    0x470d5d8700000000, 0xc2d4cb5a00000000, 0x0cb801e700000000,
+    0x8961973a00000000, 0x6612e0a900000000, 0xe3cb767400000000,
+    0x2da7bcc900000000, 0xa87e2a1400000000, 0xf078596900000000,
+    0x75a1cfb400000000, 0xbbcd050900000000, 0x3e1493d400000000,
+    0x0bc1e3f300000000, 0x8e18752e00000000, 0x4074bf9300000000,
+    0xc5ad294e00000000, 0x9dab5a3300000000, 0x1872ccee00000000,
+    0xd61e065300000000, 0x53c7908e00000000, 0x49ff99ae00000000,
+    0xcc260f7300000000, 0x024ac5ce00000000, 0x8793531300000000,
+    0xdf95206e00000000, 0x5a4cb6b300000000, 0x94207c0e00000000,
+    0x11f9ead300000000, 0x242c9af400000000, 0xa1f50c2900000000,
+    0x6f99c69400000000, 0xea40504900000000, 0xb246233400000000,
+    0x379fb5e900000000, 0xf9f37f5400000000, 0x7c2ae98900000000,
+    0x93599e1a00000000, 0x168008c700000000, 0xd8ecc27a00000000,
+    0x5d3554a700000000, 0x053327da00000000, 0x80eab10700000000,
+    0x4e867bba00000000, 0xcb5fed6700000000, 0xfe8a9d4000000000,
+    0x7b530b9d00000000, 0xb53fc12000000000, 0x30e657fd00000000,
+    0x68e0248000000000, 0xed39b25d00000000, 0x235578e000000000,
+    0xa68cee3d00000000},
+   {0x0000000000000000, 0x76e10f9d00000000, 0xadc46ee100000000,
+    0xdb25617c00000000, 0x1b8fac1900000000, 0x6d6ea38400000000,
+    0xb64bc2f800000000, 0xc0aacd6500000000, 0x361e593300000000,
+    0x40ff56ae00000000, 0x9bda37d200000000, 0xed3b384f00000000,
+    0x2d91f52a00000000, 0x5b70fab700000000, 0x80559bcb00000000,
+    0xf6b4945600000000, 0x6c3cb26600000000, 0x1addbdfb00000000,
+    0xc1f8dc8700000000, 0xb719d31a00000000, 0x77b31e7f00000000,
+    0x015211e200000000, 0xda77709e00000000, 0xac967f0300000000,
+    0x5a22eb5500000000, 0x2cc3e4c800000000, 0xf7e685b400000000,
+    0x81078a2900000000, 0x41ad474c00000000, 0x374c48d100000000,
+    0xec6929ad00000000, 0x9a88263000000000, 0xd87864cd00000000,
+    0xae996b5000000000, 0x75bc0a2c00000000, 0x035d05b100000000,
+    0xc3f7c8d400000000, 0xb516c74900000000, 0x6e33a63500000000,
+    0x18d2a9a800000000, 0xee663dfe00000000, 0x9887326300000000,
+    0x43a2531f00000000, 0x35435c8200000000, 0xf5e991e700000000,
+    0x83089e7a00000000, 0x582dff0600000000, 0x2eccf09b00000000,
+    0xb444d6ab00000000, 0xc2a5d93600000000, 0x1980b84a00000000,
+    0x6f61b7d700000000, 0xafcb7ab200000000, 0xd92a752f00000000,
+    0x020f145300000000, 0x74ee1bce00000000, 0x825a8f9800000000,
+    0xf4bb800500000000, 0x2f9ee17900000000, 0x597feee400000000,
+    0x99d5238100000000, 0xef342c1c00000000, 0x34114d6000000000,
+    0x42f042fd00000000, 0xf1f7b94100000000, 0x8716b6dc00000000,
+    0x5c33d7a000000000, 0x2ad2d83d00000000, 0xea78155800000000,
+    0x9c991ac500000000, 0x47bc7bb900000000, 0x315d742400000000,
+    0xc7e9e07200000000, 0xb108efef00000000, 0x6a2d8e9300000000,
+    0x1ccc810e00000000, 0xdc664c6b00000000, 0xaa8743f600000000,
+    0x71a2228a00000000, 0x07432d1700000000, 0x9dcb0b2700000000,
+    0xeb2a04ba00000000, 0x300f65c600000000, 0x46ee6a5b00000000,
+    0x8644a73e00000000, 0xf0a5a8a300000000, 0x2b80c9df00000000,
+    0x5d61c64200000000, 0xabd5521400000000, 0xdd345d8900000000,
+    0x06113cf500000000, 0x70f0336800000000, 0xb05afe0d00000000,
+    0xc6bbf19000000000, 0x1d9e90ec00000000, 0x6b7f9f7100000000,
+    0x298fdd8c00000000, 0x5f6ed21100000000, 0x844bb36d00000000,
+    0xf2aabcf000000000, 0x3200719500000000, 0x44e17e0800000000,
+    0x9fc41f7400000000, 0xe92510e900000000, 0x1f9184bf00000000,
+    0x69708b2200000000, 0xb255ea5e00000000, 0xc4b4e5c300000000,
+    0x041e28a600000000, 0x72ff273b00000000, 0xa9da464700000000,
+    0xdf3b49da00000000, 0x45b36fea00000000, 0x3352607700000000,
+    0xe877010b00000000, 0x9e960e9600000000, 0x5e3cc3f300000000,
+    0x28ddcc6e00000000, 0xf3f8ad1200000000, 0x8519a28f00000000,
+    0x73ad36d900000000, 0x054c394400000000, 0xde69583800000000,
+    0xa88857a500000000, 0x68229ac000000000, 0x1ec3955d00000000,
+    0xc5e6f42100000000, 0xb307fbbc00000000, 0xe2ef738300000000,
+    0x940e7c1e00000000, 0x4f2b1d6200000000, 0x39ca12ff00000000,
+    0xf960df9a00000000, 0x8f81d00700000000, 0x54a4b17b00000000,
+    0x2245bee600000000, 0xd4f12ab000000000, 0xa210252d00000000,
+    0x7935445100000000, 0x0fd44bcc00000000, 0xcf7e86a900000000,
+    0xb99f893400000000, 0x62bae84800000000, 0x145be7d500000000,
+    0x8ed3c1e500000000, 0xf832ce7800000000, 0x2317af0400000000,
+    0x55f6a09900000000, 0x955c6dfc00000000, 0xe3bd626100000000,
+    0x3898031d00000000, 0x4e790c8000000000, 0xb8cd98d600000000,
+    0xce2c974b00000000, 0x1509f63700000000, 0x63e8f9aa00000000,
+    0xa34234cf00000000, 0xd5a33b5200000000, 0x0e865a2e00000000,
+    0x786755b300000000, 0x3a97174e00000000, 0x4c7618d300000000,
+    0x975379af00000000, 0xe1b2763200000000, 0x2118bb5700000000,
+    0x57f9b4ca00000000, 0x8cdcd5b600000000, 0xfa3dda2b00000000,
+    0x0c894e7d00000000, 0x7a6841e000000000, 0xa14d209c00000000,
+    0xd7ac2f0100000000, 0x1706e26400000000, 0x61e7edf900000000,
+    0xbac28c8500000000, 0xcc23831800000000, 0x56aba52800000000,
+    0x204aaab500000000, 0xfb6fcbc900000000, 0x8d8ec45400000000,
+    0x4d24093100000000, 0x3bc506ac00000000, 0xe0e067d000000000,
+    0x9601684d00000000, 0x60b5fc1b00000000, 0x1654f38600000000,
+    0xcd7192fa00000000, 0xbb909d6700000000, 0x7b3a500200000000,
+    0x0ddb5f9f00000000, 0xd6fe3ee300000000, 0xa01f317e00000000,
+    0x1318cac200000000, 0x65f9c55f00000000, 0xbedca42300000000,
+    0xc83dabbe00000000, 0x089766db00000000, 0x7e76694600000000,
+    0xa553083a00000000, 0xd3b207a700000000, 0x250693f100000000,
+    0x53e79c6c00000000, 0x88c2fd1000000000, 0xfe23f28d00000000,
+    0x3e893fe800000000, 0x4868307500000000, 0x934d510900000000,
+    0xe5ac5e9400000000, 0x7f2478a400000000, 0x09c5773900000000,
+    0xd2e0164500000000, 0xa40119d800000000, 0x64abd4bd00000000,
+    0x124adb2000000000, 0xc96fba5c00000000, 0xbf8eb5c100000000,
+    0x493a219700000000, 0x3fdb2e0a00000000, 0xe4fe4f7600000000,
+    0x921f40eb00000000, 0x52b58d8e00000000, 0x2454821300000000,
+    0xff71e36f00000000, 0x8990ecf200000000, 0xcb60ae0f00000000,
+    0xbd81a19200000000, 0x66a4c0ee00000000, 0x1045cf7300000000,
+    0xd0ef021600000000, 0xa60e0d8b00000000, 0x7d2b6cf700000000,
+    0x0bca636a00000000, 0xfd7ef73c00000000, 0x8b9ff8a100000000,
+    0x50ba99dd00000000, 0x265b964000000000, 0xe6f15b2500000000,
+    0x901054b800000000, 0x4b3535c400000000, 0x3dd43a5900000000,
+    0xa75c1c6900000000, 0xd1bd13f400000000, 0x0a98728800000000,
+    0x7c797d1500000000, 0xbcd3b07000000000, 0xca32bfed00000000,
+    0x1117de9100000000, 0x67f6d10c00000000, 0x9142455a00000000,
+    0xe7a34ac700000000, 0x3c862bbb00000000, 0x4a67242600000000,
+    0x8acde94300000000, 0xfc2ce6de00000000, 0x270987a200000000,
+    0x51e8883f00000000},
+   {0x0000000000000000, 0xe8dbfbb900000000, 0x91b186a800000000,
+    0x796a7d1100000000, 0x63657c8a00000000, 0x8bbe873300000000,
+    0xf2d4fa2200000000, 0x1a0f019b00000000, 0x87cc89cf00000000,
+    0x6f17727600000000, 0x167d0f6700000000, 0xfea6f4de00000000,
+    0xe4a9f54500000000, 0x0c720efc00000000, 0x751873ed00000000,
+    0x9dc3885400000000, 0x4f9f624400000000, 0xa74499fd00000000,
+    0xde2ee4ec00000000, 0x36f51f5500000000, 0x2cfa1ece00000000,
+    0xc421e57700000000, 0xbd4b986600000000, 0x559063df00000000,
+    0xc853eb8b00000000, 0x2088103200000000, 0x59e26d2300000000,
+    0xb139969a00000000, 0xab36970100000000, 0x43ed6cb800000000,
+    0x3a8711a900000000, 0xd25cea1000000000, 0x9e3ec58800000000,
+    0x76e53e3100000000, 0x0f8f432000000000, 0xe754b89900000000,
+    0xfd5bb90200000000, 0x158042bb00000000, 0x6cea3faa00000000,
+    0x8431c41300000000, 0x19f24c4700000000, 0xf129b7fe00000000,
+    0x8843caef00000000, 0x6098315600000000, 0x7a9730cd00000000,
+    0x924ccb7400000000, 0xeb26b66500000000, 0x03fd4ddc00000000,
+    0xd1a1a7cc00000000, 0x397a5c7500000000, 0x4010216400000000,
+    0xa8cbdadd00000000, 0xb2c4db4600000000, 0x5a1f20ff00000000,
+    0x23755dee00000000, 0xcbaea65700000000, 0x566d2e0300000000,
+    0xbeb6d5ba00000000, 0xc7dca8ab00000000, 0x2f07531200000000,
+    0x3508528900000000, 0xddd3a93000000000, 0xa4b9d42100000000,
+    0x4c622f9800000000, 0x7d7bfbca00000000, 0x95a0007300000000,
+    0xecca7d6200000000, 0x041186db00000000, 0x1e1e874000000000,
+    0xf6c57cf900000000, 0x8faf01e800000000, 0x6774fa5100000000,
+    0xfab7720500000000, 0x126c89bc00000000, 0x6b06f4ad00000000,
+    0x83dd0f1400000000, 0x99d20e8f00000000, 0x7109f53600000000,
+    0x0863882700000000, 0xe0b8739e00000000, 0x32e4998e00000000,
+    0xda3f623700000000, 0xa3551f2600000000, 0x4b8ee49f00000000,
+    0x5181e50400000000, 0xb95a1ebd00000000, 0xc03063ac00000000,
+    0x28eb981500000000, 0xb528104100000000, 0x5df3ebf800000000,
+    0x249996e900000000, 0xcc426d5000000000, 0xd64d6ccb00000000,
+    0x3e96977200000000, 0x47fcea6300000000, 0xaf2711da00000000,
+    0xe3453e4200000000, 0x0b9ec5fb00000000, 0x72f4b8ea00000000,
+    0x9a2f435300000000, 0x802042c800000000, 0x68fbb97100000000,
+    0x1191c46000000000, 0xf94a3fd900000000, 0x6489b78d00000000,
+    0x8c524c3400000000, 0xf538312500000000, 0x1de3ca9c00000000,
+    0x07eccb0700000000, 0xef3730be00000000, 0x965d4daf00000000,
+    0x7e86b61600000000, 0xacda5c0600000000, 0x4401a7bf00000000,
+    0x3d6bdaae00000000, 0xd5b0211700000000, 0xcfbf208c00000000,
+    0x2764db3500000000, 0x5e0ea62400000000, 0xb6d55d9d00000000,
+    0x2b16d5c900000000, 0xc3cd2e7000000000, 0xbaa7536100000000,
+    0x527ca8d800000000, 0x4873a94300000000, 0xa0a852fa00000000,
+    0xd9c22feb00000000, 0x3119d45200000000, 0xbbf0874e00000000,
+    0x532b7cf700000000, 0x2a4101e600000000, 0xc29afa5f00000000,
+    0xd895fbc400000000, 0x304e007d00000000, 0x49247d6c00000000,
+    0xa1ff86d500000000, 0x3c3c0e8100000000, 0xd4e7f53800000000,
+    0xad8d882900000000, 0x4556739000000000, 0x5f59720b00000000,
+    0xb78289b200000000, 0xcee8f4a300000000, 0x26330f1a00000000,
+    0xf46fe50a00000000, 0x1cb41eb300000000, 0x65de63a200000000,
+    0x8d05981b00000000, 0x970a998000000000, 0x7fd1623900000000,
+    0x06bb1f2800000000, 0xee60e49100000000, 0x73a36cc500000000,
+    0x9b78977c00000000, 0xe212ea6d00000000, 0x0ac911d400000000,
+    0x10c6104f00000000, 0xf81debf600000000, 0x817796e700000000,
+    0x69ac6d5e00000000, 0x25ce42c600000000, 0xcd15b97f00000000,
+    0xb47fc46e00000000, 0x5ca43fd700000000, 0x46ab3e4c00000000,
+    0xae70c5f500000000, 0xd71ab8e400000000, 0x3fc1435d00000000,
+    0xa202cb0900000000, 0x4ad930b000000000, 0x33b34da100000000,
+    0xdb68b61800000000, 0xc167b78300000000, 0x29bc4c3a00000000,
+    0x50d6312b00000000, 0xb80dca9200000000, 0x6a51208200000000,
+    0x828adb3b00000000, 0xfbe0a62a00000000, 0x133b5d9300000000,
+    0x09345c0800000000, 0xe1efa7b100000000, 0x9885daa000000000,
+    0x705e211900000000, 0xed9da94d00000000, 0x054652f400000000,
+    0x7c2c2fe500000000, 0x94f7d45c00000000, 0x8ef8d5c700000000,
+    0x66232e7e00000000, 0x1f49536f00000000, 0xf792a8d600000000,
+    0xc68b7c8400000000, 0x2e50873d00000000, 0x573afa2c00000000,
+    0xbfe1019500000000, 0xa5ee000e00000000, 0x4d35fbb700000000,
+    0x345f86a600000000, 0xdc847d1f00000000, 0x4147f54b00000000,
+    0xa99c0ef200000000, 0xd0f673e300000000, 0x382d885a00000000,
+    0x222289c100000000, 0xcaf9727800000000, 0xb3930f6900000000,
+    0x5b48f4d000000000, 0x89141ec000000000, 0x61cfe57900000000,
+    0x18a5986800000000, 0xf07e63d100000000, 0xea71624a00000000,
+    0x02aa99f300000000, 0x7bc0e4e200000000, 0x931b1f5b00000000,
+    0x0ed8970f00000000, 0xe6036cb600000000, 0x9f6911a700000000,
+    0x77b2ea1e00000000, 0x6dbdeb8500000000, 0x8566103c00000000,
+    0xfc0c6d2d00000000, 0x14d7969400000000, 0x58b5b90c00000000,
+    0xb06e42b500000000, 0xc9043fa400000000, 0x21dfc41d00000000,
+    0x3bd0c58600000000, 0xd30b3e3f00000000, 0xaa61432e00000000,
+    0x42bab89700000000, 0xdf7930c300000000, 0x37a2cb7a00000000,
+    0x4ec8b66b00000000, 0xa6134dd200000000, 0xbc1c4c4900000000,
+    0x54c7b7f000000000, 0x2dadcae100000000, 0xc576315800000000,
+    0x172adb4800000000, 0xfff120f100000000, 0x869b5de000000000,
+    0x6e40a65900000000, 0x744fa7c200000000, 0x9c945c7b00000000,
+    0xe5fe216a00000000, 0x0d25dad300000000, 0x90e6528700000000,
+    0x783da93e00000000, 0x0157d42f00000000, 0xe98c2f9600000000,
+    0xf3832e0d00000000, 0x1b58d5b400000000, 0x6232a8a500000000,
+    0x8ae9531c00000000},
+   {0x0000000000000000, 0x919168ae00000000, 0x6325a08700000000,
+    0xf2b4c82900000000, 0x874c31d400000000, 0x16dd597a00000000,
+    0xe469915300000000, 0x75f8f9fd00000000, 0x4f9f137300000000,
+    0xde0e7bdd00000000, 0x2cbab3f400000000, 0xbd2bdb5a00000000,
+    0xc8d322a700000000, 0x59424a0900000000, 0xabf6822000000000,
+    0x3a67ea8e00000000, 0x9e3e27e600000000, 0x0faf4f4800000000,
+    0xfd1b876100000000, 0x6c8aefcf00000000, 0x1972163200000000,
+    0x88e37e9c00000000, 0x7a57b6b500000000, 0xebc6de1b00000000,
+    0xd1a1349500000000, 0x40305c3b00000000, 0xb284941200000000,
+    0x2315fcbc00000000, 0x56ed054100000000, 0xc77c6def00000000,
+    0x35c8a5c600000000, 0xa459cd6800000000, 0x7d7b3f1700000000,
+    0xecea57b900000000, 0x1e5e9f9000000000, 0x8fcff73e00000000,
+    0xfa370ec300000000, 0x6ba6666d00000000, 0x9912ae4400000000,
+    0x0883c6ea00000000, 0x32e42c6400000000, 0xa37544ca00000000,
+    0x51c18ce300000000, 0xc050e44d00000000, 0xb5a81db000000000,
+    0x2439751e00000000, 0xd68dbd3700000000, 0x471cd59900000000,
+    0xe34518f100000000, 0x72d4705f00000000, 0x8060b87600000000,
+    0x11f1d0d800000000, 0x6409292500000000, 0xf598418b00000000,
+    0x072c89a200000000, 0x96bde10c00000000, 0xacda0b8200000000,
+    0x3d4b632c00000000, 0xcfffab0500000000, 0x5e6ec3ab00000000,
+    0x2b963a5600000000, 0xba0752f800000000, 0x48b39ad100000000,
+    0xd922f27f00000000, 0xfaf67e2e00000000, 0x6b67168000000000,
+    0x99d3dea900000000, 0x0842b60700000000, 0x7dba4ffa00000000,
+    0xec2b275400000000, 0x1e9fef7d00000000, 0x8f0e87d300000000,
+    0xb5696d5d00000000, 0x24f805f300000000, 0xd64ccdda00000000,
+    0x47dda57400000000, 0x32255c8900000000, 0xa3b4342700000000,
+    0x5100fc0e00000000, 0xc09194a000000000, 0x64c859c800000000,
+    0xf559316600000000, 0x07edf94f00000000, 0x967c91e100000000,
+    0xe384681c00000000, 0x721500b200000000, 0x80a1c89b00000000,
+    0x1130a03500000000, 0x2b574abb00000000, 0xbac6221500000000,
+    0x4872ea3c00000000, 0xd9e3829200000000, 0xac1b7b6f00000000,
+    0x3d8a13c100000000, 0xcf3edbe800000000, 0x5eafb34600000000,
+    0x878d413900000000, 0x161c299700000000, 0xe4a8e1be00000000,
+    0x7539891000000000, 0x00c170ed00000000, 0x9150184300000000,
+    0x63e4d06a00000000, 0xf275b8c400000000, 0xc812524a00000000,
+    0x59833ae400000000, 0xab37f2cd00000000, 0x3aa69a6300000000,
+    0x4f5e639e00000000, 0xdecf0b3000000000, 0x2c7bc31900000000,
+    0xbdeaabb700000000, 0x19b366df00000000, 0x88220e7100000000,
+    0x7a96c65800000000, 0xeb07aef600000000, 0x9eff570b00000000,
+    0x0f6e3fa500000000, 0xfddaf78c00000000, 0x6c4b9f2200000000,
+    0x562c75ac00000000, 0xc7bd1d0200000000, 0x3509d52b00000000,
+    0xa498bd8500000000, 0xd160447800000000, 0x40f12cd600000000,
+    0xb245e4ff00000000, 0x23d48c5100000000, 0xf4edfd5c00000000,
+    0x657c95f200000000, 0x97c85ddb00000000, 0x0659357500000000,
+    0x73a1cc8800000000, 0xe230a42600000000, 0x10846c0f00000000,
+    0x811504a100000000, 0xbb72ee2f00000000, 0x2ae3868100000000,
+    0xd8574ea800000000, 0x49c6260600000000, 0x3c3edffb00000000,
+    0xadafb75500000000, 0x5f1b7f7c00000000, 0xce8a17d200000000,
+    0x6ad3daba00000000, 0xfb42b21400000000, 0x09f67a3d00000000,
+    0x9867129300000000, 0xed9feb6e00000000, 0x7c0e83c000000000,
+    0x8eba4be900000000, 0x1f2b234700000000, 0x254cc9c900000000,
+    0xb4dda16700000000, 0x4669694e00000000, 0xd7f801e000000000,
+    0xa200f81d00000000, 0x339190b300000000, 0xc125589a00000000,
+    0x50b4303400000000, 0x8996c24b00000000, 0x1807aae500000000,
+    0xeab362cc00000000, 0x7b220a6200000000, 0x0edaf39f00000000,
+    0x9f4b9b3100000000, 0x6dff531800000000, 0xfc6e3bb600000000,
+    0xc609d13800000000, 0x5798b99600000000, 0xa52c71bf00000000,
+    0x34bd191100000000, 0x4145e0ec00000000, 0xd0d4884200000000,
+    0x2260406b00000000, 0xb3f128c500000000, 0x17a8e5ad00000000,
+    0x86398d0300000000, 0x748d452a00000000, 0xe51c2d8400000000,
+    0x90e4d47900000000, 0x0175bcd700000000, 0xf3c174fe00000000,
+    0x62501c5000000000, 0x5837f6de00000000, 0xc9a69e7000000000,
+    0x3b12565900000000, 0xaa833ef700000000, 0xdf7bc70a00000000,
+    0x4eeaafa400000000, 0xbc5e678d00000000, 0x2dcf0f2300000000,
+    0x0e1b837200000000, 0x9f8aebdc00000000, 0x6d3e23f500000000,
+    0xfcaf4b5b00000000, 0x8957b2a600000000, 0x18c6da0800000000,
+    0xea72122100000000, 0x7be37a8f00000000, 0x4184900100000000,
+    0xd015f8af00000000, 0x22a1308600000000, 0xb330582800000000,
+    0xc6c8a1d500000000, 0x5759c97b00000000, 0xa5ed015200000000,
+    0x347c69fc00000000, 0x9025a49400000000, 0x01b4cc3a00000000,
+    0xf300041300000000, 0x62916cbd00000000, 0x1769954000000000,
+    0x86f8fdee00000000, 0x744c35c700000000, 0xe5dd5d6900000000,
+    0xdfbab7e700000000, 0x4e2bdf4900000000, 0xbc9f176000000000,
+    0x2d0e7fce00000000, 0x58f6863300000000, 0xc967ee9d00000000,
+    0x3bd326b400000000, 0xaa424e1a00000000, 0x7360bc6500000000,
+    0xe2f1d4cb00000000, 0x10451ce200000000, 0x81d4744c00000000,
+    0xf42c8db100000000, 0x65bde51f00000000, 0x97092d3600000000,
+    0x0698459800000000, 0x3cffaf1600000000, 0xad6ec7b800000000,
+    0x5fda0f9100000000, 0xce4b673f00000000, 0xbbb39ec200000000,
+    0x2a22f66c00000000, 0xd8963e4500000000, 0x490756eb00000000,
+    0xed5e9b8300000000, 0x7ccff32d00000000, 0x8e7b3b0400000000,
+    0x1fea53aa00000000, 0x6a12aa5700000000, 0xfb83c2f900000000,
+    0x09370ad000000000, 0x98a6627e00000000, 0xa2c188f000000000,
+    0x3350e05e00000000, 0xc1e4287700000000, 0x507540d900000000,
+    0x258db92400000000, 0xb41cd18a00000000, 0x46a819a300000000,
+    0xd739710d00000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
+    0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
+    0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
+    0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
+    0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
+    0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
+    0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
+    0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
+    0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
+    0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
+    0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
+    0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
+    0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
+    0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
+    0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
+    0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
+    0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
+    0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
+    0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
+    0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
+    0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
+    0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
+    0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
+    0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
+    0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
+    0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
+    0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
+    0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
+    0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
+    0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
+    0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
+    0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
+    0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
+    0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
+    0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
+    0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
+    0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
+    0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
+    0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
+    0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
+    0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
+    0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
+    0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
+    0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
+    0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
+    0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
+    0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
+    0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
+    0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
+    0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
+    0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
+    0x264b06e6},
+   {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
+    0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
+    0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
+    0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
+    0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
+    0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
+    0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
+    0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
+    0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
+    0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
+    0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
+    0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
+    0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
+    0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
+    0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
+    0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
+    0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
+    0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
+    0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
+    0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
+    0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
+    0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
+    0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
+    0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
+    0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
+    0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
+    0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
+    0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
+    0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
+    0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
+    0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
+    0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
+    0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
+    0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
+    0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
+    0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
+    0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
+    0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
+    0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
+    0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
+    0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
+    0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
+    0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
+    0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
+    0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
+    0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
+    0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
+    0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
+    0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
+    0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
+    0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
+    0x92364a30},
+   {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
+    0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
+    0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
+    0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
+    0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
+    0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
+    0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
+    0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
+    0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
+    0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
+    0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
+    0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
+    0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
+    0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
+    0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
+    0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
+    0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
+    0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
+    0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
+    0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
+    0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
+    0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
+    0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
+    0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
+    0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
+    0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
+    0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
+    0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
+    0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
+    0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
+    0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
+    0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
+    0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
+    0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
+    0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
+    0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
+    0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
+    0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
+    0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
+    0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
+    0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
+    0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
+    0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
+    0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
+    0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
+    0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
+    0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
+    0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
+    0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
+    0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
+    0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
+    0xe4c4abcc},
+   {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
+    0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
+    0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
+    0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
+    0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
+    0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
+    0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
+    0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
+    0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
+    0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
+    0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
+    0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
+    0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
+    0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
+    0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
+    0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
+    0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
+    0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
+    0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
+    0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
+    0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
+    0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
+    0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
+    0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
+    0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
+    0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
+    0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
+    0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
+    0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
+    0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
+    0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
+    0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
+    0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
+    0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
+    0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
+    0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
+    0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
+    0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
+    0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
+    0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
+    0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
+    0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
+    0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
+    0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
+    0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
+    0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
+    0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
+    0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
+    0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
+    0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
+    0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
+    0xca64c78c}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0xb029603d, 0x6053c07a, 0xd07aa047, 0xc0a680f5,
+    0x708fe0c8, 0xa0f5408f, 0x10dc20b2, 0xc14b7030, 0x7162100d,
+    0xa118b04a, 0x1131d077, 0x01edf0c5, 0xb1c490f8, 0x61be30bf,
+    0xd1975082, 0x8297e060, 0x32be805d, 0xe2c4201a, 0x52ed4027,
+    0x42316095, 0xf21800a8, 0x2262a0ef, 0x924bc0d2, 0x43dc9050,
+    0xf3f5f06d, 0x238f502a, 0x93a63017, 0x837a10a5, 0x33537098,
+    0xe329d0df, 0x5300b0e2, 0x042fc1c1, 0xb406a1fc, 0x647c01bb,
+    0xd4556186, 0xc4894134, 0x74a02109, 0xa4da814e, 0x14f3e173,
+    0xc564b1f1, 0x754dd1cc, 0xa537718b, 0x151e11b6, 0x05c23104,
+    0xb5eb5139, 0x6591f17e, 0xd5b89143, 0x86b821a1, 0x3691419c,
+    0xe6ebe1db, 0x56c281e6, 0x461ea154, 0xf637c169, 0x264d612e,
+    0x96640113, 0x47f35191, 0xf7da31ac, 0x27a091eb, 0x9789f1d6,
+    0x8755d164, 0x377cb159, 0xe706111e, 0x572f7123, 0x4958f358,
+    0xf9719365, 0x290b3322, 0x9922531f, 0x89fe73ad, 0x39d71390,
+    0xe9adb3d7, 0x5984d3ea, 0x88138368, 0x383ae355, 0xe8404312,
+    0x5869232f, 0x48b5039d, 0xf89c63a0, 0x28e6c3e7, 0x98cfa3da,
+    0xcbcf1338, 0x7be67305, 0xab9cd342, 0x1bb5b37f, 0x0b6993cd,
+    0xbb40f3f0, 0x6b3a53b7, 0xdb13338a, 0x0a846308, 0xbaad0335,
+    0x6ad7a372, 0xdafec34f, 0xca22e3fd, 0x7a0b83c0, 0xaa712387,
+    0x1a5843ba, 0x4d773299, 0xfd5e52a4, 0x2d24f2e3, 0x9d0d92de,
+    0x8dd1b26c, 0x3df8d251, 0xed827216, 0x5dab122b, 0x8c3c42a9,
+    0x3c152294, 0xec6f82d3, 0x5c46e2ee, 0x4c9ac25c, 0xfcb3a261,
+    0x2cc90226, 0x9ce0621b, 0xcfe0d2f9, 0x7fc9b2c4, 0xafb31283,
+    0x1f9a72be, 0x0f46520c, 0xbf6f3231, 0x6f159276, 0xdf3cf24b,
+    0x0eaba2c9, 0xbe82c2f4, 0x6ef862b3, 0xded1028e, 0xce0d223c,
+    0x7e244201, 0xae5ee246, 0x1e77827b, 0x92b0e6b1, 0x2299868c,
+    0xf2e326cb, 0x42ca46f6, 0x52166644, 0xe23f0679, 0x3245a63e,
+    0x826cc603, 0x53fb9681, 0xe3d2f6bc, 0x33a856fb, 0x838136c6,
+    0x935d1674, 0x23747649, 0xf30ed60e, 0x4327b633, 0x102706d1,
+    0xa00e66ec, 0x7074c6ab, 0xc05da696, 0xd0818624, 0x60a8e619,
+    0xb0d2465e, 0x00fb2663, 0xd16c76e1, 0x614516dc, 0xb13fb69b,
+    0x0116d6a6, 0x11caf614, 0xa1e39629, 0x7199366e, 0xc1b05653,
+    0x969f2770, 0x26b6474d, 0xf6cce70a, 0x46e58737, 0x5639a785,
+    0xe610c7b8, 0x366a67ff, 0x864307c2, 0x57d45740, 0xe7fd377d,
+    0x3787973a, 0x87aef707, 0x9772d7b5, 0x275bb788, 0xf72117cf,
+    0x470877f2, 0x1408c710, 0xa421a72d, 0x745b076a, 0xc4726757,
+    0xd4ae47e5, 0x648727d8, 0xb4fd879f, 0x04d4e7a2, 0xd543b720,
+    0x656ad71d, 0xb510775a, 0x05391767, 0x15e537d5, 0xa5cc57e8,
+    0x75b6f7af, 0xc59f9792, 0xdbe815e9, 0x6bc175d4, 0xbbbbd593,
+    0x0b92b5ae, 0x1b4e951c, 0xab67f521, 0x7b1d5566, 0xcb34355b,
+    0x1aa365d9, 0xaa8a05e4, 0x7af0a5a3, 0xcad9c59e, 0xda05e52c,
+    0x6a2c8511, 0xba562556, 0x0a7f456b, 0x597ff589, 0xe95695b4,
+    0x392c35f3, 0x890555ce, 0x99d9757c, 0x29f01541, 0xf98ab506,
+    0x49a3d53b, 0x983485b9, 0x281de584, 0xf86745c3, 0x484e25fe,
+    0x5892054c, 0xe8bb6571, 0x38c1c536, 0x88e8a50b, 0xdfc7d428,
+    0x6feeb415, 0xbf941452, 0x0fbd746f, 0x1f6154dd, 0xaf4834e0,
+    0x7f3294a7, 0xcf1bf49a, 0x1e8ca418, 0xaea5c425, 0x7edf6462,
+    0xcef6045f, 0xde2a24ed, 0x6e0344d0, 0xbe79e497, 0x0e5084aa,
+    0x5d503448, 0xed795475, 0x3d03f432, 0x8d2a940f, 0x9df6b4bd,
+    0x2ddfd480, 0xfda574c7, 0x4d8c14fa, 0x9c1b4478, 0x2c322445,
+    0xfc488402, 0x4c61e43f, 0x5cbdc48d, 0xec94a4b0, 0x3cee04f7,
+    0x8cc764ca},
+   {0x00000000, 0xa5d35ccb, 0x0ba1c84d, 0xae729486, 0x1642919b,
+    0xb391cd50, 0x1de359d6, 0xb830051d, 0x6d8253ec, 0xc8510f27,
+    0x66239ba1, 0xc3f0c76a, 0x7bc0c277, 0xde139ebc, 0x70610a3a,
+    0xd5b256f1, 0x9b02d603, 0x3ed18ac8, 0x90a31e4e, 0x35704285,
+    0x8d404798, 0x28931b53, 0x86e18fd5, 0x2332d31e, 0xf68085ef,
+    0x5353d924, 0xfd214da2, 0x58f21169, 0xe0c21474, 0x451148bf,
+    0xeb63dc39, 0x4eb080f2, 0x3605ac07, 0x93d6f0cc, 0x3da4644a,
+    0x98773881, 0x20473d9c, 0x85946157, 0x2be6f5d1, 0x8e35a91a,
+    0x5b87ffeb, 0xfe54a320, 0x502637a6, 0xf5f56b6d, 0x4dc56e70,
+    0xe81632bb, 0x4664a63d, 0xe3b7faf6, 0xad077a04, 0x08d426cf,
+    0xa6a6b249, 0x0375ee82, 0xbb45eb9f, 0x1e96b754, 0xb0e423d2,
+    0x15377f19, 0xc08529e8, 0x65567523, 0xcb24e1a5, 0x6ef7bd6e,
+    0xd6c7b873, 0x7314e4b8, 0xdd66703e, 0x78b52cf5, 0x6c0a580f,
+    0xc9d904c4, 0x67ab9042, 0xc278cc89, 0x7a48c994, 0xdf9b955f,
+    0x71e901d9, 0xd43a5d12, 0x01880be3, 0xa45b5728, 0x0a29c3ae,
+    0xaffa9f65, 0x17ca9a78, 0xb219c6b3, 0x1c6b5235, 0xb9b80efe,
+    0xf7088e0c, 0x52dbd2c7, 0xfca94641, 0x597a1a8a, 0xe14a1f97,
+    0x4499435c, 0xeaebd7da, 0x4f388b11, 0x9a8adde0, 0x3f59812b,
+    0x912b15ad, 0x34f84966, 0x8cc84c7b, 0x291b10b0, 0x87698436,
+    0x22bad8fd, 0x5a0ff408, 0xffdca8c3, 0x51ae3c45, 0xf47d608e,
+    0x4c4d6593, 0xe99e3958, 0x47ecadde, 0xe23ff115, 0x378da7e4,
+    0x925efb2f, 0x3c2c6fa9, 0x99ff3362, 0x21cf367f, 0x841c6ab4,
+    0x2a6efe32, 0x8fbda2f9, 0xc10d220b, 0x64de7ec0, 0xcaacea46,
+    0x6f7fb68d, 0xd74fb390, 0x729cef5b, 0xdcee7bdd, 0x793d2716,
+    0xac8f71e7, 0x095c2d2c, 0xa72eb9aa, 0x02fde561, 0xbacde07c,
+    0x1f1ebcb7, 0xb16c2831, 0x14bf74fa, 0xd814b01e, 0x7dc7ecd5,
+    0xd3b57853, 0x76662498, 0xce562185, 0x6b857d4e, 0xc5f7e9c8,
+    0x6024b503, 0xb596e3f2, 0x1045bf39, 0xbe372bbf, 0x1be47774,
+    0xa3d47269, 0x06072ea2, 0xa875ba24, 0x0da6e6ef, 0x4316661d,
+    0xe6c53ad6, 0x48b7ae50, 0xed64f29b, 0x5554f786, 0xf087ab4d,
+    0x5ef53fcb, 0xfb266300, 0x2e9435f1, 0x8b47693a, 0x2535fdbc,
+    0x80e6a177, 0x38d6a46a, 0x9d05f8a1, 0x33776c27, 0x96a430ec,
+    0xee111c19, 0x4bc240d2, 0xe5b0d454, 0x4063889f, 0xf8538d82,
+    0x5d80d149, 0xf3f245cf, 0x56211904, 0x83934ff5, 0x2640133e,
+    0x883287b8, 0x2de1db73, 0x95d1de6e, 0x300282a5, 0x9e701623,
+    0x3ba34ae8, 0x7513ca1a, 0xd0c096d1, 0x7eb20257, 0xdb615e9c,
+    0x63515b81, 0xc682074a, 0x68f093cc, 0xcd23cf07, 0x189199f6,
+    0xbd42c53d, 0x133051bb, 0xb6e30d70, 0x0ed3086d, 0xab0054a6,
+    0x0572c020, 0xa0a19ceb, 0xb41ee811, 0x11cdb4da, 0xbfbf205c,
+    0x1a6c7c97, 0xa25c798a, 0x078f2541, 0xa9fdb1c7, 0x0c2eed0c,
+    0xd99cbbfd, 0x7c4fe736, 0xd23d73b0, 0x77ee2f7b, 0xcfde2a66,
+    0x6a0d76ad, 0xc47fe22b, 0x61acbee0, 0x2f1c3e12, 0x8acf62d9,
+    0x24bdf65f, 0x816eaa94, 0x395eaf89, 0x9c8df342, 0x32ff67c4,
+    0x972c3b0f, 0x429e6dfe, 0xe74d3135, 0x493fa5b3, 0xececf978,
+    0x54dcfc65, 0xf10fa0ae, 0x5f7d3428, 0xfaae68e3, 0x821b4416,
+    0x27c818dd, 0x89ba8c5b, 0x2c69d090, 0x9459d58d, 0x318a8946,
+    0x9ff81dc0, 0x3a2b410b, 0xef9917fa, 0x4a4a4b31, 0xe438dfb7,
+    0x41eb837c, 0xf9db8661, 0x5c08daaa, 0xf27a4e2c, 0x57a912e7,
+    0x19199215, 0xbccacede, 0x12b85a58, 0xb76b0693, 0x0f5b038e,
+    0xaa885f45, 0x04facbc3, 0xa1299708, 0x749bc1f9, 0xd1489d32,
+    0x7f3a09b4, 0xdae9557f, 0x62d95062, 0xc70a0ca9, 0x6978982f,
+    0xccabc4e4},
+   {0x00000000, 0xb40b77a6, 0x29119f97, 0x9d1ae831, 0x13244ff4,
+    0xa72f3852, 0x3a35d063, 0x8e3ea7c5, 0x674eef33, 0xd3459895,
+    0x4e5f70a4, 0xfa540702, 0x746aa0c7, 0xc061d761, 0x5d7b3f50,
+    0xe97048f6, 0xce9cde67, 0x7a97a9c1, 0xe78d41f0, 0x53863656,
+    0xddb89193, 0x69b3e635, 0xf4a90e04, 0x40a279a2, 0xa9d23154,
+    0x1dd946f2, 0x80c3aec3, 0x34c8d965, 0xbaf67ea0, 0x0efd0906,
+    0x93e7e137, 0x27ec9691, 0x9c39bdcf, 0x2832ca69, 0xb5282258,
+    0x012355fe, 0x8f1df23b, 0x3b16859d, 0xa60c6dac, 0x12071a0a,
+    0xfb7752fc, 0x4f7c255a, 0xd266cd6b, 0x666dbacd, 0xe8531d08,
+    0x5c586aae, 0xc142829f, 0x7549f539, 0x52a563a8, 0xe6ae140e,
+    0x7bb4fc3f, 0xcfbf8b99, 0x41812c5c, 0xf58a5bfa, 0x6890b3cb,
+    0xdc9bc46d, 0x35eb8c9b, 0x81e0fb3d, 0x1cfa130c, 0xa8f164aa,
+    0x26cfc36f, 0x92c4b4c9, 0x0fde5cf8, 0xbbd52b5e, 0x79750b44,
+    0xcd7e7ce2, 0x506494d3, 0xe46fe375, 0x6a5144b0, 0xde5a3316,
+    0x4340db27, 0xf74bac81, 0x1e3be477, 0xaa3093d1, 0x372a7be0,
+    0x83210c46, 0x0d1fab83, 0xb914dc25, 0x240e3414, 0x900543b2,
+    0xb7e9d523, 0x03e2a285, 0x9ef84ab4, 0x2af33d12, 0xa4cd9ad7,
+    0x10c6ed71, 0x8ddc0540, 0x39d772e6, 0xd0a73a10, 0x64ac4db6,
+    0xf9b6a587, 0x4dbdd221, 0xc38375e4, 0x77880242, 0xea92ea73,
+    0x5e999dd5, 0xe54cb68b, 0x5147c12d, 0xcc5d291c, 0x78565eba,
+    0xf668f97f, 0x42638ed9, 0xdf7966e8, 0x6b72114e, 0x820259b8,
+    0x36092e1e, 0xab13c62f, 0x1f18b189, 0x9126164c, 0x252d61ea,
+    0xb83789db, 0x0c3cfe7d, 0x2bd068ec, 0x9fdb1f4a, 0x02c1f77b,
+    0xb6ca80dd, 0x38f42718, 0x8cff50be, 0x11e5b88f, 0xa5eecf29,
+    0x4c9e87df, 0xf895f079, 0x658f1848, 0xd1846fee, 0x5fbac82b,
+    0xebb1bf8d, 0x76ab57bc, 0xc2a0201a, 0xf2ea1688, 0x46e1612e,
+    0xdbfb891f, 0x6ff0feb9, 0xe1ce597c, 0x55c52eda, 0xc8dfc6eb,
+    0x7cd4b14d, 0x95a4f9bb, 0x21af8e1d, 0xbcb5662c, 0x08be118a,
+    0x8680b64f, 0x328bc1e9, 0xaf9129d8, 0x1b9a5e7e, 0x3c76c8ef,
+    0x887dbf49, 0x15675778, 0xa16c20de, 0x2f52871b, 0x9b59f0bd,
+    0x0643188c, 0xb2486f2a, 0x5b3827dc, 0xef33507a, 0x7229b84b,
+    0xc622cfed, 0x481c6828, 0xfc171f8e, 0x610df7bf, 0xd5068019,
+    0x6ed3ab47, 0xdad8dce1, 0x47c234d0, 0xf3c94376, 0x7df7e4b3,
+    0xc9fc9315, 0x54e67b24, 0xe0ed0c82, 0x099d4474, 0xbd9633d2,
+    0x208cdbe3, 0x9487ac45, 0x1ab90b80, 0xaeb27c26, 0x33a89417,
+    0x87a3e3b1, 0xa04f7520, 0x14440286, 0x895eeab7, 0x3d559d11,
+    0xb36b3ad4, 0x07604d72, 0x9a7aa543, 0x2e71d2e5, 0xc7019a13,
+    0x730aedb5, 0xee100584, 0x5a1b7222, 0xd425d5e7, 0x602ea241,
+    0xfd344a70, 0x493f3dd6, 0x8b9f1dcc, 0x3f946a6a, 0xa28e825b,
+    0x1685f5fd, 0x98bb5238, 0x2cb0259e, 0xb1aacdaf, 0x05a1ba09,
+    0xecd1f2ff, 0x58da8559, 0xc5c06d68, 0x71cb1ace, 0xfff5bd0b,
+    0x4bfecaad, 0xd6e4229c, 0x62ef553a, 0x4503c3ab, 0xf108b40d,
+    0x6c125c3c, 0xd8192b9a, 0x56278c5f, 0xe22cfbf9, 0x7f3613c8,
+    0xcb3d646e, 0x224d2c98, 0x96465b3e, 0x0b5cb30f, 0xbf57c4a9,
+    0x3169636c, 0x856214ca, 0x1878fcfb, 0xac738b5d, 0x17a6a003,
+    0xa3add7a5, 0x3eb73f94, 0x8abc4832, 0x0482eff7, 0xb0899851,
+    0x2d937060, 0x999807c6, 0x70e84f30, 0xc4e33896, 0x59f9d0a7,
+    0xedf2a701, 0x63cc00c4, 0xd7c77762, 0x4add9f53, 0xfed6e8f5,
+    0xd93a7e64, 0x6d3109c2, 0xf02be1f3, 0x44209655, 0xca1e3190,
+    0x7e154636, 0xe30fae07, 0x5704d9a1, 0xbe749157, 0x0a7fe6f1,
+    0x97650ec0, 0x236e7966, 0xad50dea3, 0x195ba905, 0x84414134,
+    0x304a3692},
+   {0x00000000, 0x9e00aacc, 0x7d072542, 0xe3078f8e, 0xfa0e4a84,
+    0x640ee048, 0x87096fc6, 0x1909c50a, 0xb51be5d3, 0x2b1b4f1f,
+    0xc81cc091, 0x561c6a5d, 0x4f15af57, 0xd115059b, 0x32128a15,
+    0xac1220d9, 0x2b31bb7c, 0xb53111b0, 0x56369e3e, 0xc83634f2,
+    0xd13ff1f8, 0x4f3f5b34, 0xac38d4ba, 0x32387e76, 0x9e2a5eaf,
+    0x002af463, 0xe32d7bed, 0x7d2dd121, 0x6424142b, 0xfa24bee7,
+    0x19233169, 0x87239ba5, 0x566276f9, 0xc862dc35, 0x2b6553bb,
+    0xb565f977, 0xac6c3c7d, 0x326c96b1, 0xd16b193f, 0x4f6bb3f3,
+    0xe379932a, 0x7d7939e6, 0x9e7eb668, 0x007e1ca4, 0x1977d9ae,
+    0x87777362, 0x6470fcec, 0xfa705620, 0x7d53cd85, 0xe3536749,
+    0x0054e8c7, 0x9e54420b, 0x875d8701, 0x195d2dcd, 0xfa5aa243,
+    0x645a088f, 0xc8482856, 0x5648829a, 0xb54f0d14, 0x2b4fa7d8,
+    0x324662d2, 0xac46c81e, 0x4f414790, 0xd141ed5c, 0xedc29d29,
+    0x73c237e5, 0x90c5b86b, 0x0ec512a7, 0x17ccd7ad, 0x89cc7d61,
+    0x6acbf2ef, 0xf4cb5823, 0x58d978fa, 0xc6d9d236, 0x25de5db8,
+    0xbbdef774, 0xa2d7327e, 0x3cd798b2, 0xdfd0173c, 0x41d0bdf0,
+    0xc6f32655, 0x58f38c99, 0xbbf40317, 0x25f4a9db, 0x3cfd6cd1,
+    0xa2fdc61d, 0x41fa4993, 0xdffae35f, 0x73e8c386, 0xede8694a,
+    0x0eefe6c4, 0x90ef4c08, 0x89e68902, 0x17e623ce, 0xf4e1ac40,
+    0x6ae1068c, 0xbba0ebd0, 0x25a0411c, 0xc6a7ce92, 0x58a7645e,
+    0x41aea154, 0xdfae0b98, 0x3ca98416, 0xa2a92eda, 0x0ebb0e03,
+    0x90bba4cf, 0x73bc2b41, 0xedbc818d, 0xf4b54487, 0x6ab5ee4b,
+    0x89b261c5, 0x17b2cb09, 0x909150ac, 0x0e91fa60, 0xed9675ee,
+    0x7396df22, 0x6a9f1a28, 0xf49fb0e4, 0x17983f6a, 0x899895a6,
+    0x258ab57f, 0xbb8a1fb3, 0x588d903d, 0xc68d3af1, 0xdf84fffb,
+    0x41845537, 0xa283dab9, 0x3c837075, 0xda853b53, 0x4485919f,
+    0xa7821e11, 0x3982b4dd, 0x208b71d7, 0xbe8bdb1b, 0x5d8c5495,
+    0xc38cfe59, 0x6f9ede80, 0xf19e744c, 0x1299fbc2, 0x8c99510e,
+    0x95909404, 0x0b903ec8, 0xe897b146, 0x76971b8a, 0xf1b4802f,
+    0x6fb42ae3, 0x8cb3a56d, 0x12b30fa1, 0x0bbacaab, 0x95ba6067,
+    0x76bdefe9, 0xe8bd4525, 0x44af65fc, 0xdaafcf30, 0x39a840be,
+    0xa7a8ea72, 0xbea12f78, 0x20a185b4, 0xc3a60a3a, 0x5da6a0f6,
+    0x8ce74daa, 0x12e7e766, 0xf1e068e8, 0x6fe0c224, 0x76e9072e,
+    0xe8e9ade2, 0x0bee226c, 0x95ee88a0, 0x39fca879, 0xa7fc02b5,
+    0x44fb8d3b, 0xdafb27f7, 0xc3f2e2fd, 0x5df24831, 0xbef5c7bf,
+    0x20f56d73, 0xa7d6f6d6, 0x39d65c1a, 0xdad1d394, 0x44d17958,
+    0x5dd8bc52, 0xc3d8169e, 0x20df9910, 0xbedf33dc, 0x12cd1305,
+    0x8ccdb9c9, 0x6fca3647, 0xf1ca9c8b, 0xe8c35981, 0x76c3f34d,
+    0x95c47cc3, 0x0bc4d60f, 0x3747a67a, 0xa9470cb6, 0x4a408338,
+    0xd44029f4, 0xcd49ecfe, 0x53494632, 0xb04ec9bc, 0x2e4e6370,
+    0x825c43a9, 0x1c5ce965, 0xff5b66eb, 0x615bcc27, 0x7852092d,
+    0xe652a3e1, 0x05552c6f, 0x9b5586a3, 0x1c761d06, 0x8276b7ca,
+    0x61713844, 0xff719288, 0xe6785782, 0x7878fd4e, 0x9b7f72c0,
+    0x057fd80c, 0xa96df8d5, 0x376d5219, 0xd46add97, 0x4a6a775b,
+    0x5363b251, 0xcd63189d, 0x2e649713, 0xb0643ddf, 0x6125d083,
+    0xff257a4f, 0x1c22f5c1, 0x82225f0d, 0x9b2b9a07, 0x052b30cb,
+    0xe62cbf45, 0x782c1589, 0xd43e3550, 0x4a3e9f9c, 0xa9391012,
+    0x3739bade, 0x2e307fd4, 0xb030d518, 0x53375a96, 0xcd37f05a,
+    0x4a146bff, 0xd414c133, 0x37134ebd, 0xa913e471, 0xb01a217b,
+    0x2e1a8bb7, 0xcd1d0439, 0x531daef5, 0xff0f8e2c, 0x610f24e0,
+    0x8208ab6e, 0x1c0801a2, 0x0501c4a8, 0x9b016e64, 0x7806e1ea,
+    0xe6064b26}};
+
 #endif
-  }
-};
+
+#endif
+
+#if N == 3
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
+    0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
+    0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
+    0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
+    0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
+    0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
+    0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
+    0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
+    0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
+    0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
+    0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
+    0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
+    0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
+    0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
+    0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
+    0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
+    0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
+    0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
+    0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
+    0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
+    0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
+    0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
+    0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
+    0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
+    0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
+    0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
+    0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
+    0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
+    0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
+    0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
+    0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
+    0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
+    0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
+    0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
+    0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
+    0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
+    0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
+    0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
+    0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
+    0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
+    0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
+    0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
+    0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
+    0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
+    0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
+    0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
+    0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
+    0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
+    0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
+    0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
+    0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
+    0x09cd8551},
+   {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
+    0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
+    0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
+    0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
+    0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
+    0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
+    0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
+    0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
+    0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
+    0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
+    0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
+    0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
+    0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
+    0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
+    0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
+    0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
+    0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
+    0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
+    0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
+    0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
+    0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
+    0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
+    0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
+    0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
+    0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
+    0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
+    0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
+    0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
+    0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
+    0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
+    0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
+    0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
+    0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
+    0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
+    0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
+    0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
+    0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
+    0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
+    0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
+    0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
+    0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
+    0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
+    0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
+    0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
+    0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
+    0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
+    0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
+    0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
+    0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
+    0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
+    0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
+    0x7bc97a0c},
+   {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
+    0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
+    0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
+    0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
+    0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
+    0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
+    0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
+    0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
+    0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
+    0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
+    0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
+    0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
+    0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
+    0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
+    0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
+    0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
+    0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
+    0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
+    0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
+    0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
+    0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
+    0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
+    0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
+    0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
+    0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
+    0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
+    0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
+    0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
+    0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
+    0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
+    0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
+    0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
+    0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
+    0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
+    0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
+    0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
+    0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
+    0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
+    0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
+    0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
+    0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
+    0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
+    0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
+    0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
+    0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
+    0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
+    0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
+    0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
+    0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
+    0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
+    0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
+    0x7851a2ca},
+   {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
+    0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
+    0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
+    0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
+    0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
+    0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
+    0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
+    0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
+    0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
+    0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
+    0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
+    0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
+    0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
+    0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
+    0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
+    0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
+    0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
+    0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
+    0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
+    0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
+    0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
+    0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
+    0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
+    0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
+    0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
+    0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
+    0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
+    0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
+    0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
+    0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
+    0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
+    0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
+    0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
+    0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
+    0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
+    0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
+    0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
+    0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
+    0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
+    0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
+    0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
+    0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
+    0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
+    0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
+    0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
+    0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
+    0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
+    0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
+    0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
+    0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
+    0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
+    0x566b6848},
+   {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
+    0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
+    0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
+    0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
+    0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
+    0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
+    0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
+    0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
+    0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
+    0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
+    0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
+    0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
+    0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
+    0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
+    0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
+    0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
+    0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
+    0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
+    0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
+    0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
+    0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
+    0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
+    0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
+    0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
+    0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
+    0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
+    0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
+    0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
+    0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
+    0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
+    0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
+    0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
+    0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
+    0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
+    0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
+    0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
+    0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
+    0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
+    0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
+    0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
+    0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
+    0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
+    0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
+    0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
+    0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
+    0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
+    0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
+    0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
+    0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
+    0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
+    0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
+    0xd8ac6b35},
+   {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
+    0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
+    0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
+    0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
+    0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
+    0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
+    0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
+    0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
+    0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
+    0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
+    0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
+    0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
+    0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
+    0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
+    0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
+    0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
+    0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
+    0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
+    0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
+    0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
+    0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
+    0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
+    0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
+    0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
+    0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
+    0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
+    0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
+    0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
+    0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
+    0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
+    0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
+    0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
+    0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
+    0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
+    0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
+    0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
+    0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
+    0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
+    0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
+    0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
+    0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
+    0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
+    0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
+    0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
+    0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
+    0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
+    0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
+    0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
+    0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
+    0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
+    0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
+    0xa140efa8},
+   {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
+    0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
+    0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
+    0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
+    0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
+    0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
+    0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
+    0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
+    0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
+    0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
+    0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
+    0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
+    0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
+    0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
+    0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
+    0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
+    0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
+    0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
+    0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
+    0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
+    0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
+    0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
+    0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
+    0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
+    0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
+    0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
+    0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
+    0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
+    0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
+    0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
+    0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
+    0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
+    0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
+    0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
+    0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
+    0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
+    0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
+    0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
+    0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
+    0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
+    0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
+    0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
+    0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
+    0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
+    0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
+    0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
+    0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
+    0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
+    0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
+    0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
+    0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
+    0x917cd6a1},
+   {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
+    0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
+    0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
+    0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
+    0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
+    0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
+    0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
+    0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
+    0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
+    0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
+    0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
+    0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
+    0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
+    0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
+    0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
+    0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
+    0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
+    0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
+    0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
+    0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
+    0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
+    0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
+    0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
+    0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
+    0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
+    0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
+    0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
+    0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
+    0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
+    0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
+    0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
+    0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
+    0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
+    0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
+    0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
+    0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
+    0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
+    0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
+    0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
+    0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
+    0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
+    0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
+    0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
+    0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
+    0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
+    0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
+    0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
+    0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
+    0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
+    0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
+    0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
+    0x18ba364e}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0x43cba68700000000, 0xc7903cd400000000,
+    0x845b9a5300000000, 0xcf27087300000000, 0x8cecaef400000000,
+    0x08b734a700000000, 0x4b7c922000000000, 0x9e4f10e600000000,
+    0xdd84b66100000000, 0x59df2c3200000000, 0x1a148ab500000000,
+    0x5168189500000000, 0x12a3be1200000000, 0x96f8244100000000,
+    0xd53382c600000000, 0x7d99511700000000, 0x3e52f79000000000,
+    0xba096dc300000000, 0xf9c2cb4400000000, 0xb2be596400000000,
+    0xf175ffe300000000, 0x752e65b000000000, 0x36e5c33700000000,
+    0xe3d641f100000000, 0xa01de77600000000, 0x24467d2500000000,
+    0x678ddba200000000, 0x2cf1498200000000, 0x6f3aef0500000000,
+    0xeb61755600000000, 0xa8aad3d100000000, 0xfa32a32e00000000,
+    0xb9f905a900000000, 0x3da29ffa00000000, 0x7e69397d00000000,
+    0x3515ab5d00000000, 0x76de0dda00000000, 0xf285978900000000,
+    0xb14e310e00000000, 0x647db3c800000000, 0x27b6154f00000000,
+    0xa3ed8f1c00000000, 0xe026299b00000000, 0xab5abbbb00000000,
+    0xe8911d3c00000000, 0x6cca876f00000000, 0x2f0121e800000000,
+    0x87abf23900000000, 0xc46054be00000000, 0x403bceed00000000,
+    0x03f0686a00000000, 0x488cfa4a00000000, 0x0b475ccd00000000,
+    0x8f1cc69e00000000, 0xccd7601900000000, 0x19e4e2df00000000,
+    0x5a2f445800000000, 0xde74de0b00000000, 0x9dbf788c00000000,
+    0xd6c3eaac00000000, 0x95084c2b00000000, 0x1153d67800000000,
+    0x529870ff00000000, 0xf465465d00000000, 0xb7aee0da00000000,
+    0x33f57a8900000000, 0x703edc0e00000000, 0x3b424e2e00000000,
+    0x7889e8a900000000, 0xfcd272fa00000000, 0xbf19d47d00000000,
+    0x6a2a56bb00000000, 0x29e1f03c00000000, 0xadba6a6f00000000,
+    0xee71cce800000000, 0xa50d5ec800000000, 0xe6c6f84f00000000,
+    0x629d621c00000000, 0x2156c49b00000000, 0x89fc174a00000000,
+    0xca37b1cd00000000, 0x4e6c2b9e00000000, 0x0da78d1900000000,
+    0x46db1f3900000000, 0x0510b9be00000000, 0x814b23ed00000000,
+    0xc280856a00000000, 0x17b307ac00000000, 0x5478a12b00000000,
+    0xd0233b7800000000, 0x93e89dff00000000, 0xd8940fdf00000000,
+    0x9b5fa95800000000, 0x1f04330b00000000, 0x5ccf958c00000000,
+    0x0e57e57300000000, 0x4d9c43f400000000, 0xc9c7d9a700000000,
+    0x8a0c7f2000000000, 0xc170ed0000000000, 0x82bb4b8700000000,
+    0x06e0d1d400000000, 0x452b775300000000, 0x9018f59500000000,
+    0xd3d3531200000000, 0x5788c94100000000, 0x14436fc600000000,
+    0x5f3ffde600000000, 0x1cf45b6100000000, 0x98afc13200000000,
+    0xdb6467b500000000, 0x73ceb46400000000, 0x300512e300000000,
+    0xb45e88b000000000, 0xf7952e3700000000, 0xbce9bc1700000000,
+    0xff221a9000000000, 0x7b7980c300000000, 0x38b2264400000000,
+    0xed81a48200000000, 0xae4a020500000000, 0x2a11985600000000,
+    0x69da3ed100000000, 0x22a6acf100000000, 0x616d0a7600000000,
+    0xe536902500000000, 0xa6fd36a200000000, 0xe8cb8cba00000000,
+    0xab002a3d00000000, 0x2f5bb06e00000000, 0x6c9016e900000000,
+    0x27ec84c900000000, 0x6427224e00000000, 0xe07cb81d00000000,
+    0xa3b71e9a00000000, 0x76849c5c00000000, 0x354f3adb00000000,
+    0xb114a08800000000, 0xf2df060f00000000, 0xb9a3942f00000000,
+    0xfa6832a800000000, 0x7e33a8fb00000000, 0x3df80e7c00000000,
+    0x9552ddad00000000, 0xd6997b2a00000000, 0x52c2e17900000000,
+    0x110947fe00000000, 0x5a75d5de00000000, 0x19be735900000000,
+    0x9de5e90a00000000, 0xde2e4f8d00000000, 0x0b1dcd4b00000000,
+    0x48d66bcc00000000, 0xcc8df19f00000000, 0x8f46571800000000,
+    0xc43ac53800000000, 0x87f163bf00000000, 0x03aaf9ec00000000,
+    0x40615f6b00000000, 0x12f92f9400000000, 0x5132891300000000,
+    0xd569134000000000, 0x96a2b5c700000000, 0xddde27e700000000,
+    0x9e15816000000000, 0x1a4e1b3300000000, 0x5985bdb400000000,
+    0x8cb63f7200000000, 0xcf7d99f500000000, 0x4b2603a600000000,
+    0x08eda52100000000, 0x4391370100000000, 0x005a918600000000,
+    0x84010bd500000000, 0xc7caad5200000000, 0x6f607e8300000000,
+    0x2cabd80400000000, 0xa8f0425700000000, 0xeb3be4d000000000,
+    0xa04776f000000000, 0xe38cd07700000000, 0x67d74a2400000000,
+    0x241ceca300000000, 0xf12f6e6500000000, 0xb2e4c8e200000000,
+    0x36bf52b100000000, 0x7574f43600000000, 0x3e08661600000000,
+    0x7dc3c09100000000, 0xf9985ac200000000, 0xba53fc4500000000,
+    0x1caecae700000000, 0x5f656c6000000000, 0xdb3ef63300000000,
+    0x98f550b400000000, 0xd389c29400000000, 0x9042641300000000,
+    0x1419fe4000000000, 0x57d258c700000000, 0x82e1da0100000000,
+    0xc12a7c8600000000, 0x4571e6d500000000, 0x06ba405200000000,
+    0x4dc6d27200000000, 0x0e0d74f500000000, 0x8a56eea600000000,
+    0xc99d482100000000, 0x61379bf000000000, 0x22fc3d7700000000,
+    0xa6a7a72400000000, 0xe56c01a300000000, 0xae10938300000000,
+    0xeddb350400000000, 0x6980af5700000000, 0x2a4b09d000000000,
+    0xff788b1600000000, 0xbcb32d9100000000, 0x38e8b7c200000000,
+    0x7b23114500000000, 0x305f836500000000, 0x739425e200000000,
+    0xf7cfbfb100000000, 0xb404193600000000, 0xe69c69c900000000,
+    0xa557cf4e00000000, 0x210c551d00000000, 0x62c7f39a00000000,
+    0x29bb61ba00000000, 0x6a70c73d00000000, 0xee2b5d6e00000000,
+    0xade0fbe900000000, 0x78d3792f00000000, 0x3b18dfa800000000,
+    0xbf4345fb00000000, 0xfc88e37c00000000, 0xb7f4715c00000000,
+    0xf43fd7db00000000, 0x70644d8800000000, 0x33afeb0f00000000,
+    0x9b0538de00000000, 0xd8ce9e5900000000, 0x5c95040a00000000,
+    0x1f5ea28d00000000, 0x542230ad00000000, 0x17e9962a00000000,
+    0x93b20c7900000000, 0xd079aafe00000000, 0x054a283800000000,
+    0x46818ebf00000000, 0xc2da14ec00000000, 0x8111b26b00000000,
+    0xca6d204b00000000, 0x89a686cc00000000, 0x0dfd1c9f00000000,
+    0x4e36ba1800000000},
+   {0x0000000000000000, 0xe1b652ef00000000, 0x836bd40500000000,
+    0x62dd86ea00000000, 0x06d7a80b00000000, 0xe761fae400000000,
+    0x85bc7c0e00000000, 0x640a2ee100000000, 0x0cae511700000000,
+    0xed1803f800000000, 0x8fc5851200000000, 0x6e73d7fd00000000,
+    0x0a79f91c00000000, 0xebcfabf300000000, 0x89122d1900000000,
+    0x68a47ff600000000, 0x185ca32e00000000, 0xf9eaf1c100000000,
+    0x9b37772b00000000, 0x7a8125c400000000, 0x1e8b0b2500000000,
+    0xff3d59ca00000000, 0x9de0df2000000000, 0x7c568dcf00000000,
+    0x14f2f23900000000, 0xf544a0d600000000, 0x9799263c00000000,
+    0x762f74d300000000, 0x12255a3200000000, 0xf39308dd00000000,
+    0x914e8e3700000000, 0x70f8dcd800000000, 0x30b8465d00000000,
+    0xd10e14b200000000, 0xb3d3925800000000, 0x5265c0b700000000,
+    0x366fee5600000000, 0xd7d9bcb900000000, 0xb5043a5300000000,
+    0x54b268bc00000000, 0x3c16174a00000000, 0xdda045a500000000,
+    0xbf7dc34f00000000, 0x5ecb91a000000000, 0x3ac1bf4100000000,
+    0xdb77edae00000000, 0xb9aa6b4400000000, 0x581c39ab00000000,
+    0x28e4e57300000000, 0xc952b79c00000000, 0xab8f317600000000,
+    0x4a39639900000000, 0x2e334d7800000000, 0xcf851f9700000000,
+    0xad58997d00000000, 0x4ceecb9200000000, 0x244ab46400000000,
+    0xc5fce68b00000000, 0xa721606100000000, 0x4697328e00000000,
+    0x229d1c6f00000000, 0xc32b4e8000000000, 0xa1f6c86a00000000,
+    0x40409a8500000000, 0x60708dba00000000, 0x81c6df5500000000,
+    0xe31b59bf00000000, 0x02ad0b5000000000, 0x66a725b100000000,
+    0x8711775e00000000, 0xe5ccf1b400000000, 0x047aa35b00000000,
+    0x6cdedcad00000000, 0x8d688e4200000000, 0xefb508a800000000,
+    0x0e035a4700000000, 0x6a0974a600000000, 0x8bbf264900000000,
+    0xe962a0a300000000, 0x08d4f24c00000000, 0x782c2e9400000000,
+    0x999a7c7b00000000, 0xfb47fa9100000000, 0x1af1a87e00000000,
+    0x7efb869f00000000, 0x9f4dd47000000000, 0xfd90529a00000000,
+    0x1c26007500000000, 0x74827f8300000000, 0x95342d6c00000000,
+    0xf7e9ab8600000000, 0x165ff96900000000, 0x7255d78800000000,
+    0x93e3856700000000, 0xf13e038d00000000, 0x1088516200000000,
+    0x50c8cbe700000000, 0xb17e990800000000, 0xd3a31fe200000000,
+    0x32154d0d00000000, 0x561f63ec00000000, 0xb7a9310300000000,
+    0xd574b7e900000000, 0x34c2e50600000000, 0x5c669af000000000,
+    0xbdd0c81f00000000, 0xdf0d4ef500000000, 0x3ebb1c1a00000000,
+    0x5ab132fb00000000, 0xbb07601400000000, 0xd9dae6fe00000000,
+    0x386cb41100000000, 0x489468c900000000, 0xa9223a2600000000,
+    0xcbffbccc00000000, 0x2a49ee2300000000, 0x4e43c0c200000000,
+    0xaff5922d00000000, 0xcd2814c700000000, 0x2c9e462800000000,
+    0x443a39de00000000, 0xa58c6b3100000000, 0xc751eddb00000000,
+    0x26e7bf3400000000, 0x42ed91d500000000, 0xa35bc33a00000000,
+    0xc18645d000000000, 0x2030173f00000000, 0x81e66bae00000000,
+    0x6050394100000000, 0x028dbfab00000000, 0xe33bed4400000000,
+    0x8731c3a500000000, 0x6687914a00000000, 0x045a17a000000000,
+    0xe5ec454f00000000, 0x8d483ab900000000, 0x6cfe685600000000,
+    0x0e23eebc00000000, 0xef95bc5300000000, 0x8b9f92b200000000,
+    0x6a29c05d00000000, 0x08f446b700000000, 0xe942145800000000,
+    0x99bac88000000000, 0x780c9a6f00000000, 0x1ad11c8500000000,
+    0xfb674e6a00000000, 0x9f6d608b00000000, 0x7edb326400000000,
+    0x1c06b48e00000000, 0xfdb0e66100000000, 0x9514999700000000,
+    0x74a2cb7800000000, 0x167f4d9200000000, 0xf7c91f7d00000000,
+    0x93c3319c00000000, 0x7275637300000000, 0x10a8e59900000000,
+    0xf11eb77600000000, 0xb15e2df300000000, 0x50e87f1c00000000,
+    0x3235f9f600000000, 0xd383ab1900000000, 0xb78985f800000000,
+    0x563fd71700000000, 0x34e251fd00000000, 0xd554031200000000,
+    0xbdf07ce400000000, 0x5c462e0b00000000, 0x3e9ba8e100000000,
+    0xdf2dfa0e00000000, 0xbb27d4ef00000000, 0x5a91860000000000,
+    0x384c00ea00000000, 0xd9fa520500000000, 0xa9028edd00000000,
+    0x48b4dc3200000000, 0x2a695ad800000000, 0xcbdf083700000000,
+    0xafd526d600000000, 0x4e63743900000000, 0x2cbef2d300000000,
+    0xcd08a03c00000000, 0xa5acdfca00000000, 0x441a8d2500000000,
+    0x26c70bcf00000000, 0xc771592000000000, 0xa37b77c100000000,
+    0x42cd252e00000000, 0x2010a3c400000000, 0xc1a6f12b00000000,
+    0xe196e61400000000, 0x0020b4fb00000000, 0x62fd321100000000,
+    0x834b60fe00000000, 0xe7414e1f00000000, 0x06f71cf000000000,
+    0x642a9a1a00000000, 0x859cc8f500000000, 0xed38b70300000000,
+    0x0c8ee5ec00000000, 0x6e53630600000000, 0x8fe531e900000000,
+    0xebef1f0800000000, 0x0a594de700000000, 0x6884cb0d00000000,
+    0x893299e200000000, 0xf9ca453a00000000, 0x187c17d500000000,
+    0x7aa1913f00000000, 0x9b17c3d000000000, 0xff1ded3100000000,
+    0x1eabbfde00000000, 0x7c76393400000000, 0x9dc06bdb00000000,
+    0xf564142d00000000, 0x14d246c200000000, 0x760fc02800000000,
+    0x97b992c700000000, 0xf3b3bc2600000000, 0x1205eec900000000,
+    0x70d8682300000000, 0x916e3acc00000000, 0xd12ea04900000000,
+    0x3098f2a600000000, 0x5245744c00000000, 0xb3f326a300000000,
+    0xd7f9084200000000, 0x364f5aad00000000, 0x5492dc4700000000,
+    0xb5248ea800000000, 0xdd80f15e00000000, 0x3c36a3b100000000,
+    0x5eeb255b00000000, 0xbf5d77b400000000, 0xdb57595500000000,
+    0x3ae10bba00000000, 0x583c8d5000000000, 0xb98adfbf00000000,
+    0xc972036700000000, 0x28c4518800000000, 0x4a19d76200000000,
+    0xabaf858d00000000, 0xcfa5ab6c00000000, 0x2e13f98300000000,
+    0x4cce7f6900000000, 0xad782d8600000000, 0xc5dc527000000000,
+    0x246a009f00000000, 0x46b7867500000000, 0xa701d49a00000000,
+    0xc30bfa7b00000000, 0x22bda89400000000, 0x40602e7e00000000,
+    0xa1d67c9100000000},
+   {0x0000000000000000, 0x5880e2d700000000, 0xf106b47400000000,
+    0xa98656a300000000, 0xe20d68e900000000, 0xba8d8a3e00000000,
+    0x130bdc9d00000000, 0x4b8b3e4a00000000, 0x851da10900000000,
+    0xdd9d43de00000000, 0x741b157d00000000, 0x2c9bf7aa00000000,
+    0x6710c9e000000000, 0x3f902b3700000000, 0x96167d9400000000,
+    0xce969f4300000000, 0x0a3b421300000000, 0x52bba0c400000000,
+    0xfb3df66700000000, 0xa3bd14b000000000, 0xe8362afa00000000,
+    0xb0b6c82d00000000, 0x19309e8e00000000, 0x41b07c5900000000,
+    0x8f26e31a00000000, 0xd7a601cd00000000, 0x7e20576e00000000,
+    0x26a0b5b900000000, 0x6d2b8bf300000000, 0x35ab692400000000,
+    0x9c2d3f8700000000, 0xc4addd5000000000, 0x1476842600000000,
+    0x4cf666f100000000, 0xe570305200000000, 0xbdf0d28500000000,
+    0xf67beccf00000000, 0xaefb0e1800000000, 0x077d58bb00000000,
+    0x5ffdba6c00000000, 0x916b252f00000000, 0xc9ebc7f800000000,
+    0x606d915b00000000, 0x38ed738c00000000, 0x73664dc600000000,
+    0x2be6af1100000000, 0x8260f9b200000000, 0xdae01b6500000000,
+    0x1e4dc63500000000, 0x46cd24e200000000, 0xef4b724100000000,
+    0xb7cb909600000000, 0xfc40aedc00000000, 0xa4c04c0b00000000,
+    0x0d461aa800000000, 0x55c6f87f00000000, 0x9b50673c00000000,
+    0xc3d085eb00000000, 0x6a56d34800000000, 0x32d6319f00000000,
+    0x795d0fd500000000, 0x21dded0200000000, 0x885bbba100000000,
+    0xd0db597600000000, 0x28ec084d00000000, 0x706cea9a00000000,
+    0xd9eabc3900000000, 0x816a5eee00000000, 0xcae160a400000000,
+    0x9261827300000000, 0x3be7d4d000000000, 0x6367360700000000,
+    0xadf1a94400000000, 0xf5714b9300000000, 0x5cf71d3000000000,
+    0x0477ffe700000000, 0x4ffcc1ad00000000, 0x177c237a00000000,
+    0xbefa75d900000000, 0xe67a970e00000000, 0x22d74a5e00000000,
+    0x7a57a88900000000, 0xd3d1fe2a00000000, 0x8b511cfd00000000,
+    0xc0da22b700000000, 0x985ac06000000000, 0x31dc96c300000000,
+    0x695c741400000000, 0xa7caeb5700000000, 0xff4a098000000000,
+    0x56cc5f2300000000, 0x0e4cbdf400000000, 0x45c783be00000000,
+    0x1d47616900000000, 0xb4c137ca00000000, 0xec41d51d00000000,
+    0x3c9a8c6b00000000, 0x641a6ebc00000000, 0xcd9c381f00000000,
+    0x951cdac800000000, 0xde97e48200000000, 0x8617065500000000,
+    0x2f9150f600000000, 0x7711b22100000000, 0xb9872d6200000000,
+    0xe107cfb500000000, 0x4881991600000000, 0x10017bc100000000,
+    0x5b8a458b00000000, 0x030aa75c00000000, 0xaa8cf1ff00000000,
+    0xf20c132800000000, 0x36a1ce7800000000, 0x6e212caf00000000,
+    0xc7a77a0c00000000, 0x9f2798db00000000, 0xd4aca69100000000,
+    0x8c2c444600000000, 0x25aa12e500000000, 0x7d2af03200000000,
+    0xb3bc6f7100000000, 0xeb3c8da600000000, 0x42badb0500000000,
+    0x1a3a39d200000000, 0x51b1079800000000, 0x0931e54f00000000,
+    0xa0b7b3ec00000000, 0xf837513b00000000, 0x50d8119a00000000,
+    0x0858f34d00000000, 0xa1dea5ee00000000, 0xf95e473900000000,
+    0xb2d5797300000000, 0xea559ba400000000, 0x43d3cd0700000000,
+    0x1b532fd000000000, 0xd5c5b09300000000, 0x8d45524400000000,
+    0x24c304e700000000, 0x7c43e63000000000, 0x37c8d87a00000000,
+    0x6f483aad00000000, 0xc6ce6c0e00000000, 0x9e4e8ed900000000,
+    0x5ae3538900000000, 0x0263b15e00000000, 0xabe5e7fd00000000,
+    0xf365052a00000000, 0xb8ee3b6000000000, 0xe06ed9b700000000,
+    0x49e88f1400000000, 0x11686dc300000000, 0xdffef28000000000,
+    0x877e105700000000, 0x2ef846f400000000, 0x7678a42300000000,
+    0x3df39a6900000000, 0x657378be00000000, 0xccf52e1d00000000,
+    0x9475ccca00000000, 0x44ae95bc00000000, 0x1c2e776b00000000,
+    0xb5a821c800000000, 0xed28c31f00000000, 0xa6a3fd5500000000,
+    0xfe231f8200000000, 0x57a5492100000000, 0x0f25abf600000000,
+    0xc1b334b500000000, 0x9933d66200000000, 0x30b580c100000000,
+    0x6835621600000000, 0x23be5c5c00000000, 0x7b3ebe8b00000000,
+    0xd2b8e82800000000, 0x8a380aff00000000, 0x4e95d7af00000000,
+    0x1615357800000000, 0xbf9363db00000000, 0xe713810c00000000,
+    0xac98bf4600000000, 0xf4185d9100000000, 0x5d9e0b3200000000,
+    0x051ee9e500000000, 0xcb8876a600000000, 0x9308947100000000,
+    0x3a8ec2d200000000, 0x620e200500000000, 0x29851e4f00000000,
+    0x7105fc9800000000, 0xd883aa3b00000000, 0x800348ec00000000,
+    0x783419d700000000, 0x20b4fb0000000000, 0x8932ada300000000,
+    0xd1b24f7400000000, 0x9a39713e00000000, 0xc2b993e900000000,
+    0x6b3fc54a00000000, 0x33bf279d00000000, 0xfd29b8de00000000,
+    0xa5a95a0900000000, 0x0c2f0caa00000000, 0x54afee7d00000000,
+    0x1f24d03700000000, 0x47a432e000000000, 0xee22644300000000,
+    0xb6a2869400000000, 0x720f5bc400000000, 0x2a8fb91300000000,
+    0x8309efb000000000, 0xdb890d6700000000, 0x9002332d00000000,
+    0xc882d1fa00000000, 0x6104875900000000, 0x3984658e00000000,
+    0xf712facd00000000, 0xaf92181a00000000, 0x06144eb900000000,
+    0x5e94ac6e00000000, 0x151f922400000000, 0x4d9f70f300000000,
+    0xe419265000000000, 0xbc99c48700000000, 0x6c429df100000000,
+    0x34c27f2600000000, 0x9d44298500000000, 0xc5c4cb5200000000,
+    0x8e4ff51800000000, 0xd6cf17cf00000000, 0x7f49416c00000000,
+    0x27c9a3bb00000000, 0xe95f3cf800000000, 0xb1dfde2f00000000,
+    0x1859888c00000000, 0x40d96a5b00000000, 0x0b52541100000000,
+    0x53d2b6c600000000, 0xfa54e06500000000, 0xa2d402b200000000,
+    0x6679dfe200000000, 0x3ef93d3500000000, 0x977f6b9600000000,
+    0xcfff894100000000, 0x8474b70b00000000, 0xdcf455dc00000000,
+    0x7572037f00000000, 0x2df2e1a800000000, 0xe3647eeb00000000,
+    0xbbe49c3c00000000, 0x1262ca9f00000000, 0x4ae2284800000000,
+    0x0169160200000000, 0x59e9f4d500000000, 0xf06fa27600000000,
+    0xa8ef40a100000000},
+   {0x0000000000000000, 0x463b676500000000, 0x8c76ceca00000000,
+    0xca4da9af00000000, 0x59ebed4e00000000, 0x1fd08a2b00000000,
+    0xd59d238400000000, 0x93a644e100000000, 0xb2d6db9d00000000,
+    0xf4edbcf800000000, 0x3ea0155700000000, 0x789b723200000000,
+    0xeb3d36d300000000, 0xad0651b600000000, 0x674bf81900000000,
+    0x21709f7c00000000, 0x25abc6e000000000, 0x6390a18500000000,
+    0xa9dd082a00000000, 0xefe66f4f00000000, 0x7c402bae00000000,
+    0x3a7b4ccb00000000, 0xf036e56400000000, 0xb60d820100000000,
+    0x977d1d7d00000000, 0xd1467a1800000000, 0x1b0bd3b700000000,
+    0x5d30b4d200000000, 0xce96f03300000000, 0x88ad975600000000,
+    0x42e03ef900000000, 0x04db599c00000000, 0x0b50fc1a00000000,
+    0x4d6b9b7f00000000, 0x872632d000000000, 0xc11d55b500000000,
+    0x52bb115400000000, 0x1480763100000000, 0xdecddf9e00000000,
+    0x98f6b8fb00000000, 0xb986278700000000, 0xffbd40e200000000,
+    0x35f0e94d00000000, 0x73cb8e2800000000, 0xe06dcac900000000,
+    0xa656adac00000000, 0x6c1b040300000000, 0x2a20636600000000,
+    0x2efb3afa00000000, 0x68c05d9f00000000, 0xa28df43000000000,
+    0xe4b6935500000000, 0x7710d7b400000000, 0x312bb0d100000000,
+    0xfb66197e00000000, 0xbd5d7e1b00000000, 0x9c2de16700000000,
+    0xda16860200000000, 0x105b2fad00000000, 0x566048c800000000,
+    0xc5c60c2900000000, 0x83fd6b4c00000000, 0x49b0c2e300000000,
+    0x0f8ba58600000000, 0x16a0f83500000000, 0x509b9f5000000000,
+    0x9ad636ff00000000, 0xdced519a00000000, 0x4f4b157b00000000,
+    0x0970721e00000000, 0xc33ddbb100000000, 0x8506bcd400000000,
+    0xa47623a800000000, 0xe24d44cd00000000, 0x2800ed6200000000,
+    0x6e3b8a0700000000, 0xfd9dcee600000000, 0xbba6a98300000000,
+    0x71eb002c00000000, 0x37d0674900000000, 0x330b3ed500000000,
+    0x753059b000000000, 0xbf7df01f00000000, 0xf946977a00000000,
+    0x6ae0d39b00000000, 0x2cdbb4fe00000000, 0xe6961d5100000000,
+    0xa0ad7a3400000000, 0x81dde54800000000, 0xc7e6822d00000000,
+    0x0dab2b8200000000, 0x4b904ce700000000, 0xd836080600000000,
+    0x9e0d6f6300000000, 0x5440c6cc00000000, 0x127ba1a900000000,
+    0x1df0042f00000000, 0x5bcb634a00000000, 0x9186cae500000000,
+    0xd7bdad8000000000, 0x441be96100000000, 0x02208e0400000000,
+    0xc86d27ab00000000, 0x8e5640ce00000000, 0xaf26dfb200000000,
+    0xe91db8d700000000, 0x2350117800000000, 0x656b761d00000000,
+    0xf6cd32fc00000000, 0xb0f6559900000000, 0x7abbfc3600000000,
+    0x3c809b5300000000, 0x385bc2cf00000000, 0x7e60a5aa00000000,
+    0xb42d0c0500000000, 0xf2166b6000000000, 0x61b02f8100000000,
+    0x278b48e400000000, 0xedc6e14b00000000, 0xabfd862e00000000,
+    0x8a8d195200000000, 0xccb67e3700000000, 0x06fbd79800000000,
+    0x40c0b0fd00000000, 0xd366f41c00000000, 0x955d937900000000,
+    0x5f103ad600000000, 0x192b5db300000000, 0x2c40f16b00000000,
+    0x6a7b960e00000000, 0xa0363fa100000000, 0xe60d58c400000000,
+    0x75ab1c2500000000, 0x33907b4000000000, 0xf9ddd2ef00000000,
+    0xbfe6b58a00000000, 0x9e962af600000000, 0xd8ad4d9300000000,
+    0x12e0e43c00000000, 0x54db835900000000, 0xc77dc7b800000000,
+    0x8146a0dd00000000, 0x4b0b097200000000, 0x0d306e1700000000,
+    0x09eb378b00000000, 0x4fd050ee00000000, 0x859df94100000000,
+    0xc3a69e2400000000, 0x5000dac500000000, 0x163bbda000000000,
+    0xdc76140f00000000, 0x9a4d736a00000000, 0xbb3dec1600000000,
+    0xfd068b7300000000, 0x374b22dc00000000, 0x717045b900000000,
+    0xe2d6015800000000, 0xa4ed663d00000000, 0x6ea0cf9200000000,
+    0x289ba8f700000000, 0x27100d7100000000, 0x612b6a1400000000,
+    0xab66c3bb00000000, 0xed5da4de00000000, 0x7efbe03f00000000,
+    0x38c0875a00000000, 0xf28d2ef500000000, 0xb4b6499000000000,
+    0x95c6d6ec00000000, 0xd3fdb18900000000, 0x19b0182600000000,
+    0x5f8b7f4300000000, 0xcc2d3ba200000000, 0x8a165cc700000000,
+    0x405bf56800000000, 0x0660920d00000000, 0x02bbcb9100000000,
+    0x4480acf400000000, 0x8ecd055b00000000, 0xc8f6623e00000000,
+    0x5b5026df00000000, 0x1d6b41ba00000000, 0xd726e81500000000,
+    0x911d8f7000000000, 0xb06d100c00000000, 0xf656776900000000,
+    0x3c1bdec600000000, 0x7a20b9a300000000, 0xe986fd4200000000,
+    0xafbd9a2700000000, 0x65f0338800000000, 0x23cb54ed00000000,
+    0x3ae0095e00000000, 0x7cdb6e3b00000000, 0xb696c79400000000,
+    0xf0ada0f100000000, 0x630be41000000000, 0x2530837500000000,
+    0xef7d2ada00000000, 0xa9464dbf00000000, 0x8836d2c300000000,
+    0xce0db5a600000000, 0x04401c0900000000, 0x427b7b6c00000000,
+    0xd1dd3f8d00000000, 0x97e658e800000000, 0x5dabf14700000000,
+    0x1b90962200000000, 0x1f4bcfbe00000000, 0x5970a8db00000000,
+    0x933d017400000000, 0xd506661100000000, 0x46a022f000000000,
+    0x009b459500000000, 0xcad6ec3a00000000, 0x8ced8b5f00000000,
+    0xad9d142300000000, 0xeba6734600000000, 0x21ebdae900000000,
+    0x67d0bd8c00000000, 0xf476f96d00000000, 0xb24d9e0800000000,
+    0x780037a700000000, 0x3e3b50c200000000, 0x31b0f54400000000,
+    0x778b922100000000, 0xbdc63b8e00000000, 0xfbfd5ceb00000000,
+    0x685b180a00000000, 0x2e607f6f00000000, 0xe42dd6c000000000,
+    0xa216b1a500000000, 0x83662ed900000000, 0xc55d49bc00000000,
+    0x0f10e01300000000, 0x492b877600000000, 0xda8dc39700000000,
+    0x9cb6a4f200000000, 0x56fb0d5d00000000, 0x10c06a3800000000,
+    0x141b33a400000000, 0x522054c100000000, 0x986dfd6e00000000,
+    0xde569a0b00000000, 0x4df0deea00000000, 0x0bcbb98f00000000,
+    0xc186102000000000, 0x87bd774500000000, 0xa6cde83900000000,
+    0xe0f68f5c00000000, 0x2abb26f300000000, 0x6c80419600000000,
+    0xff26057700000000, 0xb91d621200000000, 0x7350cbbd00000000,
+    0x356bacd800000000},
+   {0x0000000000000000, 0x9e83da9f00000000, 0x7d01c4e400000000,
+    0xe3821e7b00000000, 0xbb04f91200000000, 0x2587238d00000000,
+    0xc6053df600000000, 0x5886e76900000000, 0x7609f22500000000,
+    0xe88a28ba00000000, 0x0b0836c100000000, 0x958bec5e00000000,
+    0xcd0d0b3700000000, 0x538ed1a800000000, 0xb00ccfd300000000,
+    0x2e8f154c00000000, 0xec12e44b00000000, 0x72913ed400000000,
+    0x911320af00000000, 0x0f90fa3000000000, 0x57161d5900000000,
+    0xc995c7c600000000, 0x2a17d9bd00000000, 0xb494032200000000,
+    0x9a1b166e00000000, 0x0498ccf100000000, 0xe71ad28a00000000,
+    0x7999081500000000, 0x211fef7c00000000, 0xbf9c35e300000000,
+    0x5c1e2b9800000000, 0xc29df10700000000, 0xd825c89700000000,
+    0x46a6120800000000, 0xa5240c7300000000, 0x3ba7d6ec00000000,
+    0x6321318500000000, 0xfda2eb1a00000000, 0x1e20f56100000000,
+    0x80a32ffe00000000, 0xae2c3ab200000000, 0x30afe02d00000000,
+    0xd32dfe5600000000, 0x4dae24c900000000, 0x1528c3a000000000,
+    0x8bab193f00000000, 0x6829074400000000, 0xf6aadddb00000000,
+    0x34372cdc00000000, 0xaab4f64300000000, 0x4936e83800000000,
+    0xd7b532a700000000, 0x8f33d5ce00000000, 0x11b00f5100000000,
+    0xf232112a00000000, 0x6cb1cbb500000000, 0x423edef900000000,
+    0xdcbd046600000000, 0x3f3f1a1d00000000, 0xa1bcc08200000000,
+    0xf93a27eb00000000, 0x67b9fd7400000000, 0x843be30f00000000,
+    0x1ab8399000000000, 0xf14de1f400000000, 0x6fce3b6b00000000,
+    0x8c4c251000000000, 0x12cfff8f00000000, 0x4a4918e600000000,
+    0xd4cac27900000000, 0x3748dc0200000000, 0xa9cb069d00000000,
+    0x874413d100000000, 0x19c7c94e00000000, 0xfa45d73500000000,
+    0x64c60daa00000000, 0x3c40eac300000000, 0xa2c3305c00000000,
+    0x41412e2700000000, 0xdfc2f4b800000000, 0x1d5f05bf00000000,
+    0x83dcdf2000000000, 0x605ec15b00000000, 0xfedd1bc400000000,
+    0xa65bfcad00000000, 0x38d8263200000000, 0xdb5a384900000000,
+    0x45d9e2d600000000, 0x6b56f79a00000000, 0xf5d52d0500000000,
+    0x1657337e00000000, 0x88d4e9e100000000, 0xd0520e8800000000,
+    0x4ed1d41700000000, 0xad53ca6c00000000, 0x33d010f300000000,
+    0x2968296300000000, 0xb7ebf3fc00000000, 0x5469ed8700000000,
+    0xcaea371800000000, 0x926cd07100000000, 0x0cef0aee00000000,
+    0xef6d149500000000, 0x71eece0a00000000, 0x5f61db4600000000,
+    0xc1e201d900000000, 0x22601fa200000000, 0xbce3c53d00000000,
+    0xe465225400000000, 0x7ae6f8cb00000000, 0x9964e6b000000000,
+    0x07e73c2f00000000, 0xc57acd2800000000, 0x5bf917b700000000,
+    0xb87b09cc00000000, 0x26f8d35300000000, 0x7e7e343a00000000,
+    0xe0fdeea500000000, 0x037ff0de00000000, 0x9dfc2a4100000000,
+    0xb3733f0d00000000, 0x2df0e59200000000, 0xce72fbe900000000,
+    0x50f1217600000000, 0x0877c61f00000000, 0x96f41c8000000000,
+    0x757602fb00000000, 0xebf5d86400000000, 0xa39db33200000000,
+    0x3d1e69ad00000000, 0xde9c77d600000000, 0x401fad4900000000,
+    0x18994a2000000000, 0x861a90bf00000000, 0x65988ec400000000,
+    0xfb1b545b00000000, 0xd594411700000000, 0x4b179b8800000000,
+    0xa89585f300000000, 0x36165f6c00000000, 0x6e90b80500000000,
+    0xf013629a00000000, 0x13917ce100000000, 0x8d12a67e00000000,
+    0x4f8f577900000000, 0xd10c8de600000000, 0x328e939d00000000,
+    0xac0d490200000000, 0xf48bae6b00000000, 0x6a0874f400000000,
+    0x898a6a8f00000000, 0x1709b01000000000, 0x3986a55c00000000,
+    0xa7057fc300000000, 0x448761b800000000, 0xda04bb2700000000,
+    0x82825c4e00000000, 0x1c0186d100000000, 0xff8398aa00000000,
+    0x6100423500000000, 0x7bb87ba500000000, 0xe53ba13a00000000,
+    0x06b9bf4100000000, 0x983a65de00000000, 0xc0bc82b700000000,
+    0x5e3f582800000000, 0xbdbd465300000000, 0x233e9ccc00000000,
+    0x0db1898000000000, 0x9332531f00000000, 0x70b04d6400000000,
+    0xee3397fb00000000, 0xb6b5709200000000, 0x2836aa0d00000000,
+    0xcbb4b47600000000, 0x55376ee900000000, 0x97aa9fee00000000,
+    0x0929457100000000, 0xeaab5b0a00000000, 0x7428819500000000,
+    0x2cae66fc00000000, 0xb22dbc6300000000, 0x51afa21800000000,
+    0xcf2c788700000000, 0xe1a36dcb00000000, 0x7f20b75400000000,
+    0x9ca2a92f00000000, 0x022173b000000000, 0x5aa794d900000000,
+    0xc4244e4600000000, 0x27a6503d00000000, 0xb9258aa200000000,
+    0x52d052c600000000, 0xcc53885900000000, 0x2fd1962200000000,
+    0xb1524cbd00000000, 0xe9d4abd400000000, 0x7757714b00000000,
+    0x94d56f3000000000, 0x0a56b5af00000000, 0x24d9a0e300000000,
+    0xba5a7a7c00000000, 0x59d8640700000000, 0xc75bbe9800000000,
+    0x9fdd59f100000000, 0x015e836e00000000, 0xe2dc9d1500000000,
+    0x7c5f478a00000000, 0xbec2b68d00000000, 0x20416c1200000000,
+    0xc3c3726900000000, 0x5d40a8f600000000, 0x05c64f9f00000000,
+    0x9b45950000000000, 0x78c78b7b00000000, 0xe64451e400000000,
+    0xc8cb44a800000000, 0x56489e3700000000, 0xb5ca804c00000000,
+    0x2b495ad300000000, 0x73cfbdba00000000, 0xed4c672500000000,
+    0x0ece795e00000000, 0x904da3c100000000, 0x8af59a5100000000,
+    0x147640ce00000000, 0xf7f45eb500000000, 0x6977842a00000000,
+    0x31f1634300000000, 0xaf72b9dc00000000, 0x4cf0a7a700000000,
+    0xd2737d3800000000, 0xfcfc687400000000, 0x627fb2eb00000000,
+    0x81fdac9000000000, 0x1f7e760f00000000, 0x47f8916600000000,
+    0xd97b4bf900000000, 0x3af9558200000000, 0xa47a8f1d00000000,
+    0x66e77e1a00000000, 0xf864a48500000000, 0x1be6bafe00000000,
+    0x8565606100000000, 0xdde3870800000000, 0x43605d9700000000,
+    0xa0e243ec00000000, 0x3e61997300000000, 0x10ee8c3f00000000,
+    0x8e6d56a000000000, 0x6def48db00000000, 0xf36c924400000000,
+    0xabea752d00000000, 0x3569afb200000000, 0xd6ebb1c900000000,
+    0x48686b5600000000},
+   {0x0000000000000000, 0xc064281700000000, 0x80c9502e00000000,
+    0x40ad783900000000, 0x0093a15c00000000, 0xc0f7894b00000000,
+    0x805af17200000000, 0x403ed96500000000, 0x002643b900000000,
+    0xc0426bae00000000, 0x80ef139700000000, 0x408b3b8000000000,
+    0x00b5e2e500000000, 0xc0d1caf200000000, 0x807cb2cb00000000,
+    0x40189adc00000000, 0x414af7a900000000, 0x812edfbe00000000,
+    0xc183a78700000000, 0x01e78f9000000000, 0x41d956f500000000,
+    0x81bd7ee200000000, 0xc11006db00000000, 0x01742ecc00000000,
+    0x416cb41000000000, 0x81089c0700000000, 0xc1a5e43e00000000,
+    0x01c1cc2900000000, 0x41ff154c00000000, 0x819b3d5b00000000,
+    0xc136456200000000, 0x01526d7500000000, 0xc3929f8800000000,
+    0x03f6b79f00000000, 0x435bcfa600000000, 0x833fe7b100000000,
+    0xc3013ed400000000, 0x036516c300000000, 0x43c86efa00000000,
+    0x83ac46ed00000000, 0xc3b4dc3100000000, 0x03d0f42600000000,
+    0x437d8c1f00000000, 0x8319a40800000000, 0xc3277d6d00000000,
+    0x0343557a00000000, 0x43ee2d4300000000, 0x838a055400000000,
+    0x82d8682100000000, 0x42bc403600000000, 0x0211380f00000000,
+    0xc275101800000000, 0x824bc97d00000000, 0x422fe16a00000000,
+    0x0282995300000000, 0xc2e6b14400000000, 0x82fe2b9800000000,
+    0x429a038f00000000, 0x02377bb600000000, 0xc25353a100000000,
+    0x826d8ac400000000, 0x4209a2d300000000, 0x02a4daea00000000,
+    0xc2c0f2fd00000000, 0xc7234eca00000000, 0x074766dd00000000,
+    0x47ea1ee400000000, 0x878e36f300000000, 0xc7b0ef9600000000,
+    0x07d4c78100000000, 0x4779bfb800000000, 0x871d97af00000000,
+    0xc7050d7300000000, 0x0761256400000000, 0x47cc5d5d00000000,
+    0x87a8754a00000000, 0xc796ac2f00000000, 0x07f2843800000000,
+    0x475ffc0100000000, 0x873bd41600000000, 0x8669b96300000000,
+    0x460d917400000000, 0x06a0e94d00000000, 0xc6c4c15a00000000,
+    0x86fa183f00000000, 0x469e302800000000, 0x0633481100000000,
+    0xc657600600000000, 0x864ffada00000000, 0x462bd2cd00000000,
+    0x0686aaf400000000, 0xc6e282e300000000, 0x86dc5b8600000000,
+    0x46b8739100000000, 0x06150ba800000000, 0xc67123bf00000000,
+    0x04b1d14200000000, 0xc4d5f95500000000, 0x8478816c00000000,
+    0x441ca97b00000000, 0x0422701e00000000, 0xc446580900000000,
+    0x84eb203000000000, 0x448f082700000000, 0x049792fb00000000,
+    0xc4f3baec00000000, 0x845ec2d500000000, 0x443aeac200000000,
+    0x040433a700000000, 0xc4601bb000000000, 0x84cd638900000000,
+    0x44a94b9e00000000, 0x45fb26eb00000000, 0x859f0efc00000000,
+    0xc53276c500000000, 0x05565ed200000000, 0x456887b700000000,
+    0x850cafa000000000, 0xc5a1d79900000000, 0x05c5ff8e00000000,
+    0x45dd655200000000, 0x85b94d4500000000, 0xc514357c00000000,
+    0x05701d6b00000000, 0x454ec40e00000000, 0x852aec1900000000,
+    0xc587942000000000, 0x05e3bc3700000000, 0xcf41ed4f00000000,
+    0x0f25c55800000000, 0x4f88bd6100000000, 0x8fec957600000000,
+    0xcfd24c1300000000, 0x0fb6640400000000, 0x4f1b1c3d00000000,
+    0x8f7f342a00000000, 0xcf67aef600000000, 0x0f0386e100000000,
+    0x4faefed800000000, 0x8fcad6cf00000000, 0xcff40faa00000000,
+    0x0f9027bd00000000, 0x4f3d5f8400000000, 0x8f59779300000000,
+    0x8e0b1ae600000000, 0x4e6f32f100000000, 0x0ec24ac800000000,
+    0xcea662df00000000, 0x8e98bbba00000000, 0x4efc93ad00000000,
+    0x0e51eb9400000000, 0xce35c38300000000, 0x8e2d595f00000000,
+    0x4e49714800000000, 0x0ee4097100000000, 0xce80216600000000,
+    0x8ebef80300000000, 0x4edad01400000000, 0x0e77a82d00000000,
+    0xce13803a00000000, 0x0cd372c700000000, 0xccb75ad000000000,
+    0x8c1a22e900000000, 0x4c7e0afe00000000, 0x0c40d39b00000000,
+    0xcc24fb8c00000000, 0x8c8983b500000000, 0x4cedaba200000000,
+    0x0cf5317e00000000, 0xcc91196900000000, 0x8c3c615000000000,
+    0x4c58494700000000, 0x0c66902200000000, 0xcc02b83500000000,
+    0x8cafc00c00000000, 0x4ccbe81b00000000, 0x4d99856e00000000,
+    0x8dfdad7900000000, 0xcd50d54000000000, 0x0d34fd5700000000,
+    0x4d0a243200000000, 0x8d6e0c2500000000, 0xcdc3741c00000000,
+    0x0da75c0b00000000, 0x4dbfc6d700000000, 0x8ddbeec000000000,
+    0xcd7696f900000000, 0x0d12beee00000000, 0x4d2c678b00000000,
+    0x8d484f9c00000000, 0xcde537a500000000, 0x0d811fb200000000,
+    0x0862a38500000000, 0xc8068b9200000000, 0x88abf3ab00000000,
+    0x48cfdbbc00000000, 0x08f102d900000000, 0xc8952ace00000000,
+    0x883852f700000000, 0x485c7ae000000000, 0x0844e03c00000000,
+    0xc820c82b00000000, 0x888db01200000000, 0x48e9980500000000,
+    0x08d7416000000000, 0xc8b3697700000000, 0x881e114e00000000,
+    0x487a395900000000, 0x4928542c00000000, 0x894c7c3b00000000,
+    0xc9e1040200000000, 0x09852c1500000000, 0x49bbf57000000000,
+    0x89dfdd6700000000, 0xc972a55e00000000, 0x09168d4900000000,
+    0x490e179500000000, 0x896a3f8200000000, 0xc9c747bb00000000,
+    0x09a36fac00000000, 0x499db6c900000000, 0x89f99ede00000000,
+    0xc954e6e700000000, 0x0930cef000000000, 0xcbf03c0d00000000,
+    0x0b94141a00000000, 0x4b396c2300000000, 0x8b5d443400000000,
+    0xcb639d5100000000, 0x0b07b54600000000, 0x4baacd7f00000000,
+    0x8bcee56800000000, 0xcbd67fb400000000, 0x0bb257a300000000,
+    0x4b1f2f9a00000000, 0x8b7b078d00000000, 0xcb45dee800000000,
+    0x0b21f6ff00000000, 0x4b8c8ec600000000, 0x8be8a6d100000000,
+    0x8abacba400000000, 0x4adee3b300000000, 0x0a739b8a00000000,
+    0xca17b39d00000000, 0x8a296af800000000, 0x4a4d42ef00000000,
+    0x0ae03ad600000000, 0xca8412c100000000, 0x8a9c881d00000000,
+    0x4af8a00a00000000, 0x0a55d83300000000, 0xca31f02400000000,
+    0x8a0f294100000000, 0x4a6b015600000000, 0x0ac6796f00000000,
+    0xcaa2517800000000},
+   {0x0000000000000000, 0xd4ea739b00000000, 0xe9d396ed00000000,
+    0x3d39e57600000000, 0x93a15c0000000000, 0x474b2f9b00000000,
+    0x7a72caed00000000, 0xae98b97600000000, 0x2643b90000000000,
+    0xf2a9ca9b00000000, 0xcf902fed00000000, 0x1b7a5c7600000000,
+    0xb5e2e50000000000, 0x6108969b00000000, 0x5c3173ed00000000,
+    0x88db007600000000, 0x4c86720100000000, 0x986c019a00000000,
+    0xa555e4ec00000000, 0x71bf977700000000, 0xdf272e0100000000,
+    0x0bcd5d9a00000000, 0x36f4b8ec00000000, 0xe21ecb7700000000,
+    0x6ac5cb0100000000, 0xbe2fb89a00000000, 0x83165dec00000000,
+    0x57fc2e7700000000, 0xf964970100000000, 0x2d8ee49a00000000,
+    0x10b701ec00000000, 0xc45d727700000000, 0x980ce50200000000,
+    0x4ce6969900000000, 0x71df73ef00000000, 0xa535007400000000,
+    0x0badb90200000000, 0xdf47ca9900000000, 0xe27e2fef00000000,
+    0x36945c7400000000, 0xbe4f5c0200000000, 0x6aa52f9900000000,
+    0x579ccaef00000000, 0x8376b97400000000, 0x2dee000200000000,
+    0xf904739900000000, 0xc43d96ef00000000, 0x10d7e57400000000,
+    0xd48a970300000000, 0x0060e49800000000, 0x3d5901ee00000000,
+    0xe9b3727500000000, 0x472bcb0300000000, 0x93c1b89800000000,
+    0xaef85dee00000000, 0x7a122e7500000000, 0xf2c92e0300000000,
+    0x26235d9800000000, 0x1b1ab8ee00000000, 0xcff0cb7500000000,
+    0x6168720300000000, 0xb582019800000000, 0x88bbe4ee00000000,
+    0x5c51977500000000, 0x3019ca0500000000, 0xe4f3b99e00000000,
+    0xd9ca5ce800000000, 0x0d202f7300000000, 0xa3b8960500000000,
+    0x7752e59e00000000, 0x4a6b00e800000000, 0x9e81737300000000,
+    0x165a730500000000, 0xc2b0009e00000000, 0xff89e5e800000000,
+    0x2b63967300000000, 0x85fb2f0500000000, 0x51115c9e00000000,
+    0x6c28b9e800000000, 0xb8c2ca7300000000, 0x7c9fb80400000000,
+    0xa875cb9f00000000, 0x954c2ee900000000, 0x41a65d7200000000,
+    0xef3ee40400000000, 0x3bd4979f00000000, 0x06ed72e900000000,
+    0xd207017200000000, 0x5adc010400000000, 0x8e36729f00000000,
+    0xb30f97e900000000, 0x67e5e47200000000, 0xc97d5d0400000000,
+    0x1d972e9f00000000, 0x20aecbe900000000, 0xf444b87200000000,
+    0xa8152f0700000000, 0x7cff5c9c00000000, 0x41c6b9ea00000000,
+    0x952cca7100000000, 0x3bb4730700000000, 0xef5e009c00000000,
+    0xd267e5ea00000000, 0x068d967100000000, 0x8e56960700000000,
+    0x5abce59c00000000, 0x678500ea00000000, 0xb36f737100000000,
+    0x1df7ca0700000000, 0xc91db99c00000000, 0xf4245cea00000000,
+    0x20ce2f7100000000, 0xe4935d0600000000, 0x30792e9d00000000,
+    0x0d40cbeb00000000, 0xd9aab87000000000, 0x7732010600000000,
+    0xa3d8729d00000000, 0x9ee197eb00000000, 0x4a0be47000000000,
+    0xc2d0e40600000000, 0x163a979d00000000, 0x2b0372eb00000000,
+    0xffe9017000000000, 0x5171b80600000000, 0x859bcb9d00000000,
+    0xb8a22eeb00000000, 0x6c485d7000000000, 0x6032940b00000000,
+    0xb4d8e79000000000, 0x89e102e600000000, 0x5d0b717d00000000,
+    0xf393c80b00000000, 0x2779bb9000000000, 0x1a405ee600000000,
+    0xceaa2d7d00000000, 0x46712d0b00000000, 0x929b5e9000000000,
+    0xafa2bbe600000000, 0x7b48c87d00000000, 0xd5d0710b00000000,
+    0x013a029000000000, 0x3c03e7e600000000, 0xe8e9947d00000000,
+    0x2cb4e60a00000000, 0xf85e959100000000, 0xc56770e700000000,
+    0x118d037c00000000, 0xbf15ba0a00000000, 0x6bffc99100000000,
+    0x56c62ce700000000, 0x822c5f7c00000000, 0x0af75f0a00000000,
+    0xde1d2c9100000000, 0xe324c9e700000000, 0x37ceba7c00000000,
+    0x9956030a00000000, 0x4dbc709100000000, 0x708595e700000000,
+    0xa46fe67c00000000, 0xf83e710900000000, 0x2cd4029200000000,
+    0x11ede7e400000000, 0xc507947f00000000, 0x6b9f2d0900000000,
+    0xbf755e9200000000, 0x824cbbe400000000, 0x56a6c87f00000000,
+    0xde7dc80900000000, 0x0a97bb9200000000, 0x37ae5ee400000000,
+    0xe3442d7f00000000, 0x4ddc940900000000, 0x9936e79200000000,
+    0xa40f02e400000000, 0x70e5717f00000000, 0xb4b8030800000000,
+    0x6052709300000000, 0x5d6b95e500000000, 0x8981e67e00000000,
+    0x27195f0800000000, 0xf3f32c9300000000, 0xcecac9e500000000,
+    0x1a20ba7e00000000, 0x92fbba0800000000, 0x4611c99300000000,
+    0x7b282ce500000000, 0xafc25f7e00000000, 0x015ae60800000000,
+    0xd5b0959300000000, 0xe88970e500000000, 0x3c63037e00000000,
+    0x502b5e0e00000000, 0x84c12d9500000000, 0xb9f8c8e300000000,
+    0x6d12bb7800000000, 0xc38a020e00000000, 0x1760719500000000,
+    0x2a5994e300000000, 0xfeb3e77800000000, 0x7668e70e00000000,
+    0xa282949500000000, 0x9fbb71e300000000, 0x4b51027800000000,
+    0xe5c9bb0e00000000, 0x3123c89500000000, 0x0c1a2de300000000,
+    0xd8f05e7800000000, 0x1cad2c0f00000000, 0xc8475f9400000000,
+    0xf57ebae200000000, 0x2194c97900000000, 0x8f0c700f00000000,
+    0x5be6039400000000, 0x66dfe6e200000000, 0xb235957900000000,
+    0x3aee950f00000000, 0xee04e69400000000, 0xd33d03e200000000,
+    0x07d7707900000000, 0xa94fc90f00000000, 0x7da5ba9400000000,
+    0x409c5fe200000000, 0x94762c7900000000, 0xc827bb0c00000000,
+    0x1ccdc89700000000, 0x21f42de100000000, 0xf51e5e7a00000000,
+    0x5b86e70c00000000, 0x8f6c949700000000, 0xb25571e100000000,
+    0x66bf027a00000000, 0xee64020c00000000, 0x3a8e719700000000,
+    0x07b794e100000000, 0xd35de77a00000000, 0x7dc55e0c00000000,
+    0xa92f2d9700000000, 0x9416c8e100000000, 0x40fcbb7a00000000,
+    0x84a1c90d00000000, 0x504bba9600000000, 0x6d725fe000000000,
+    0xb9982c7b00000000, 0x1700950d00000000, 0xc3eae69600000000,
+    0xfed303e000000000, 0x2a39707b00000000, 0xa2e2700d00000000,
+    0x7608039600000000, 0x4b31e6e000000000, 0x9fdb957b00000000,
+    0x31432c0d00000000, 0xe5a95f9600000000, 0xd890bae000000000,
+    0x0c7ac97b00000000},
+   {0x0000000000000000, 0x2765258100000000, 0x0fcc3bd900000000,
+    0x28a91e5800000000, 0x5f9e066900000000, 0x78fb23e800000000,
+    0x50523db000000000, 0x7737183100000000, 0xbe3c0dd200000000,
+    0x9959285300000000, 0xb1f0360b00000000, 0x9695138a00000000,
+    0xe1a20bbb00000000, 0xc6c72e3a00000000, 0xee6e306200000000,
+    0xc90b15e300000000, 0x3d7f6b7f00000000, 0x1a1a4efe00000000,
+    0x32b350a600000000, 0x15d6752700000000, 0x62e16d1600000000,
+    0x4584489700000000, 0x6d2d56cf00000000, 0x4a48734e00000000,
+    0x834366ad00000000, 0xa426432c00000000, 0x8c8f5d7400000000,
+    0xabea78f500000000, 0xdcdd60c400000000, 0xfbb8454500000000,
+    0xd3115b1d00000000, 0xf4747e9c00000000, 0x7afed6fe00000000,
+    0x5d9bf37f00000000, 0x7532ed2700000000, 0x5257c8a600000000,
+    0x2560d09700000000, 0x0205f51600000000, 0x2aaceb4e00000000,
+    0x0dc9cecf00000000, 0xc4c2db2c00000000, 0xe3a7fead00000000,
+    0xcb0ee0f500000000, 0xec6bc57400000000, 0x9b5cdd4500000000,
+    0xbc39f8c400000000, 0x9490e69c00000000, 0xb3f5c31d00000000,
+    0x4781bd8100000000, 0x60e4980000000000, 0x484d865800000000,
+    0x6f28a3d900000000, 0x181fbbe800000000, 0x3f7a9e6900000000,
+    0x17d3803100000000, 0x30b6a5b000000000, 0xf9bdb05300000000,
+    0xded895d200000000, 0xf6718b8a00000000, 0xd114ae0b00000000,
+    0xa623b63a00000000, 0x814693bb00000000, 0xa9ef8de300000000,
+    0x8e8aa86200000000, 0xb5fadc2600000000, 0x929ff9a700000000,
+    0xba36e7ff00000000, 0x9d53c27e00000000, 0xea64da4f00000000,
+    0xcd01ffce00000000, 0xe5a8e19600000000, 0xc2cdc41700000000,
+    0x0bc6d1f400000000, 0x2ca3f47500000000, 0x040aea2d00000000,
+    0x236fcfac00000000, 0x5458d79d00000000, 0x733df21c00000000,
+    0x5b94ec4400000000, 0x7cf1c9c500000000, 0x8885b75900000000,
+    0xafe092d800000000, 0x87498c8000000000, 0xa02ca90100000000,
+    0xd71bb13000000000, 0xf07e94b100000000, 0xd8d78ae900000000,
+    0xffb2af6800000000, 0x36b9ba8b00000000, 0x11dc9f0a00000000,
+    0x3975815200000000, 0x1e10a4d300000000, 0x6927bce200000000,
+    0x4e42996300000000, 0x66eb873b00000000, 0x418ea2ba00000000,
+    0xcf040ad800000000, 0xe8612f5900000000, 0xc0c8310100000000,
+    0xe7ad148000000000, 0x909a0cb100000000, 0xb7ff293000000000,
+    0x9f56376800000000, 0xb83312e900000000, 0x7138070a00000000,
+    0x565d228b00000000, 0x7ef43cd300000000, 0x5991195200000000,
+    0x2ea6016300000000, 0x09c324e200000000, 0x216a3aba00000000,
+    0x060f1f3b00000000, 0xf27b61a700000000, 0xd51e442600000000,
+    0xfdb75a7e00000000, 0xdad27fff00000000, 0xade567ce00000000,
+    0x8a80424f00000000, 0xa2295c1700000000, 0x854c799600000000,
+    0x4c476c7500000000, 0x6b2249f400000000, 0x438b57ac00000000,
+    0x64ee722d00000000, 0x13d96a1c00000000, 0x34bc4f9d00000000,
+    0x1c1551c500000000, 0x3b70744400000000, 0x6af5b94d00000000,
+    0x4d909ccc00000000, 0x6539829400000000, 0x425ca71500000000,
+    0x356bbf2400000000, 0x120e9aa500000000, 0x3aa784fd00000000,
+    0x1dc2a17c00000000, 0xd4c9b49f00000000, 0xf3ac911e00000000,
+    0xdb058f4600000000, 0xfc60aac700000000, 0x8b57b2f600000000,
+    0xac32977700000000, 0x849b892f00000000, 0xa3feacae00000000,
+    0x578ad23200000000, 0x70eff7b300000000, 0x5846e9eb00000000,
+    0x7f23cc6a00000000, 0x0814d45b00000000, 0x2f71f1da00000000,
+    0x07d8ef8200000000, 0x20bdca0300000000, 0xe9b6dfe000000000,
+    0xced3fa6100000000, 0xe67ae43900000000, 0xc11fc1b800000000,
+    0xb628d98900000000, 0x914dfc0800000000, 0xb9e4e25000000000,
+    0x9e81c7d100000000, 0x100b6fb300000000, 0x376e4a3200000000,
+    0x1fc7546a00000000, 0x38a271eb00000000, 0x4f9569da00000000,
+    0x68f04c5b00000000, 0x4059520300000000, 0x673c778200000000,
+    0xae37626100000000, 0x895247e000000000, 0xa1fb59b800000000,
+    0x869e7c3900000000, 0xf1a9640800000000, 0xd6cc418900000000,
+    0xfe655fd100000000, 0xd9007a5000000000, 0x2d7404cc00000000,
+    0x0a11214d00000000, 0x22b83f1500000000, 0x05dd1a9400000000,
+    0x72ea02a500000000, 0x558f272400000000, 0x7d26397c00000000,
+    0x5a431cfd00000000, 0x9348091e00000000, 0xb42d2c9f00000000,
+    0x9c8432c700000000, 0xbbe1174600000000, 0xccd60f7700000000,
+    0xebb32af600000000, 0xc31a34ae00000000, 0xe47f112f00000000,
+    0xdf0f656b00000000, 0xf86a40ea00000000, 0xd0c35eb200000000,
+    0xf7a67b3300000000, 0x8091630200000000, 0xa7f4468300000000,
+    0x8f5d58db00000000, 0xa8387d5a00000000, 0x613368b900000000,
+    0x46564d3800000000, 0x6eff536000000000, 0x499a76e100000000,
+    0x3ead6ed000000000, 0x19c84b5100000000, 0x3161550900000000,
+    0x1604708800000000, 0xe2700e1400000000, 0xc5152b9500000000,
+    0xedbc35cd00000000, 0xcad9104c00000000, 0xbdee087d00000000,
+    0x9a8b2dfc00000000, 0xb22233a400000000, 0x9547162500000000,
+    0x5c4c03c600000000, 0x7b29264700000000, 0x5380381f00000000,
+    0x74e51d9e00000000, 0x03d205af00000000, 0x24b7202e00000000,
+    0x0c1e3e7600000000, 0x2b7b1bf700000000, 0xa5f1b39500000000,
+    0x8294961400000000, 0xaa3d884c00000000, 0x8d58adcd00000000,
+    0xfa6fb5fc00000000, 0xdd0a907d00000000, 0xf5a38e2500000000,
+    0xd2c6aba400000000, 0x1bcdbe4700000000, 0x3ca89bc600000000,
+    0x1401859e00000000, 0x3364a01f00000000, 0x4453b82e00000000,
+    0x63369daf00000000, 0x4b9f83f700000000, 0x6cfaa67600000000,
+    0x988ed8ea00000000, 0xbfebfd6b00000000, 0x9742e33300000000,
+    0xb027c6b200000000, 0xc710de8300000000, 0xe075fb0200000000,
+    0xc8dce55a00000000, 0xefb9c0db00000000, 0x26b2d53800000000,
+    0x01d7f0b900000000, 0x297eeee100000000, 0x0e1bcb6000000000,
+    0x792cd35100000000, 0x5e49f6d000000000, 0x76e0e88800000000,
+    0x5185cd0900000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
+    0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
+    0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
+    0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
+    0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
+    0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
+    0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
+    0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
+    0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
+    0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
+    0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
+    0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
+    0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
+    0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
+    0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
+    0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
+    0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
+    0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
+    0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
+    0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
+    0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
+    0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
+    0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
+    0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
+    0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
+    0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
+    0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
+    0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
+    0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
+    0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
+    0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
+    0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
+    0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
+    0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
+    0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
+    0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
+    0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
+    0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
+    0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
+    0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
+    0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
+    0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
+    0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
+    0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
+    0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
+    0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
+    0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
+    0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
+    0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
+    0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
+    0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
+    0x36197165},
+   {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
+    0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
+    0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
+    0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
+    0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
+    0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
+    0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
+    0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
+    0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
+    0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
+    0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
+    0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
+    0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
+    0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
+    0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
+    0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
+    0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
+    0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
+    0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
+    0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
+    0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
+    0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
+    0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
+    0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
+    0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
+    0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
+    0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
+    0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
+    0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
+    0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
+    0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
+    0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
+    0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
+    0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
+    0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
+    0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
+    0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
+    0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
+    0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
+    0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
+    0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
+    0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
+    0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
+    0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
+    0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
+    0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
+    0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
+    0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
+    0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
+    0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
+    0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
+    0x1a3b93aa},
+   {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
+    0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
+    0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
+    0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
+    0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
+    0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
+    0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
+    0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
+    0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
+    0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
+    0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
+    0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
+    0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
+    0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
+    0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
+    0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
+    0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
+    0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
+    0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
+    0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
+    0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
+    0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
+    0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
+    0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
+    0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
+    0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
+    0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
+    0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
+    0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
+    0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
+    0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
+    0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
+    0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
+    0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
+    0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
+    0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
+    0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
+    0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
+    0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
+    0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
+    0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
+    0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
+    0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
+    0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
+    0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
+    0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
+    0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
+    0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
+    0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
+    0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
+    0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
+    0xe147d714},
+   {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
+    0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
+    0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
+    0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
+    0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
+    0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
+    0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
+    0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
+    0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
+    0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
+    0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
+    0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
+    0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
+    0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
+    0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
+    0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
+    0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
+    0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
+    0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
+    0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
+    0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
+    0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
+    0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
+    0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
+    0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
+    0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
+    0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
+    0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
+    0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
+    0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
+    0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
+    0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
+    0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
+    0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
+    0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
+    0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
+    0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
+    0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
+    0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
+    0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
+    0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
+    0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
+    0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
+    0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
+    0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
+    0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
+    0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
+    0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
+    0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
+    0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
+    0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
+    0x494f0c4b}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x43147b17, 0x8628f62e, 0xc53c8d39, 0x0c51ec5d,
+    0x4f45974a, 0x8a791a73, 0xc96d6164, 0x18a2d8bb, 0x5bb6a3ac,
+    0x9e8a2e95, 0xdd9e5582, 0x14f334e6, 0x57e74ff1, 0x92dbc2c8,
+    0xd1cfb9df, 0x7142c0ac, 0x3256bbbb, 0xf76a3682, 0xb47e4d95,
+    0x7d132cf1, 0x3e0757e6, 0xfb3bdadf, 0xb82fa1c8, 0x69e01817,
+    0x2af46300, 0xefc8ee39, 0xacdc952e, 0x65b1f44a, 0x26a58f5d,
+    0xe3990264, 0xa08d7973, 0xa382f182, 0xe0968a95, 0x25aa07ac,
+    0x66be7cbb, 0xafd31ddf, 0xecc766c8, 0x29fbebf1, 0x6aef90e6,
+    0xbb202939, 0xf834522e, 0x3d08df17, 0x7e1ca400, 0xb771c564,
+    0xf465be73, 0x3159334a, 0x724d485d, 0xd2c0312e, 0x91d44a39,
+    0x54e8c700, 0x17fcbc17, 0xde91dd73, 0x9d85a664, 0x58b92b5d,
+    0x1bad504a, 0xca62e995, 0x89769282, 0x4c4a1fbb, 0x0f5e64ac,
+    0xc63305c8, 0x85277edf, 0x401bf3e6, 0x030f88f1, 0x070392de,
+    0x4417e9c9, 0x812b64f0, 0xc23f1fe7, 0x0b527e83, 0x48460594,
+    0x8d7a88ad, 0xce6ef3ba, 0x1fa14a65, 0x5cb53172, 0x9989bc4b,
+    0xda9dc75c, 0x13f0a638, 0x50e4dd2f, 0x95d85016, 0xd6cc2b01,
+    0x76415272, 0x35552965, 0xf069a45c, 0xb37ddf4b, 0x7a10be2f,
+    0x3904c538, 0xfc384801, 0xbf2c3316, 0x6ee38ac9, 0x2df7f1de,
+    0xe8cb7ce7, 0xabdf07f0, 0x62b26694, 0x21a61d83, 0xe49a90ba,
+    0xa78eebad, 0xa481635c, 0xe795184b, 0x22a99572, 0x61bdee65,
+    0xa8d08f01, 0xebc4f416, 0x2ef8792f, 0x6dec0238, 0xbc23bbe7,
+    0xff37c0f0, 0x3a0b4dc9, 0x791f36de, 0xb07257ba, 0xf3662cad,
+    0x365aa194, 0x754eda83, 0xd5c3a3f0, 0x96d7d8e7, 0x53eb55de,
+    0x10ff2ec9, 0xd9924fad, 0x9a8634ba, 0x5fbab983, 0x1caec294,
+    0xcd617b4b, 0x8e75005c, 0x4b498d65, 0x085df672, 0xc1309716,
+    0x8224ec01, 0x47186138, 0x040c1a2f, 0x4f005566, 0x0c142e71,
+    0xc928a348, 0x8a3cd85f, 0x4351b93b, 0x0045c22c, 0xc5794f15,
+    0x866d3402, 0x57a28ddd, 0x14b6f6ca, 0xd18a7bf3, 0x929e00e4,
+    0x5bf36180, 0x18e71a97, 0xdddb97ae, 0x9ecfecb9, 0x3e4295ca,
+    0x7d56eedd, 0xb86a63e4, 0xfb7e18f3, 0x32137997, 0x71070280,
+    0xb43b8fb9, 0xf72ff4ae, 0x26e04d71, 0x65f43666, 0xa0c8bb5f,
+    0xe3dcc048, 0x2ab1a12c, 0x69a5da3b, 0xac995702, 0xef8d2c15,
+    0xec82a4e4, 0xaf96dff3, 0x6aaa52ca, 0x29be29dd, 0xe0d348b9,
+    0xa3c733ae, 0x66fbbe97, 0x25efc580, 0xf4207c5f, 0xb7340748,
+    0x72088a71, 0x311cf166, 0xf8719002, 0xbb65eb15, 0x7e59662c,
+    0x3d4d1d3b, 0x9dc06448, 0xded41f5f, 0x1be89266, 0x58fce971,
+    0x91918815, 0xd285f302, 0x17b97e3b, 0x54ad052c, 0x8562bcf3,
+    0xc676c7e4, 0x034a4add, 0x405e31ca, 0x893350ae, 0xca272bb9,
+    0x0f1ba680, 0x4c0fdd97, 0x4803c7b8, 0x0b17bcaf, 0xce2b3196,
+    0x8d3f4a81, 0x44522be5, 0x074650f2, 0xc27addcb, 0x816ea6dc,
+    0x50a11f03, 0x13b56414, 0xd689e92d, 0x959d923a, 0x5cf0f35e,
+    0x1fe48849, 0xdad80570, 0x99cc7e67, 0x39410714, 0x7a557c03,
+    0xbf69f13a, 0xfc7d8a2d, 0x3510eb49, 0x7604905e, 0xb3381d67,
+    0xf02c6670, 0x21e3dfaf, 0x62f7a4b8, 0xa7cb2981, 0xe4df5296,
+    0x2db233f2, 0x6ea648e5, 0xab9ac5dc, 0xe88ebecb, 0xeb81363a,
+    0xa8954d2d, 0x6da9c014, 0x2ebdbb03, 0xe7d0da67, 0xa4c4a170,
+    0x61f82c49, 0x22ec575e, 0xf323ee81, 0xb0379596, 0x750b18af,
+    0x361f63b8, 0xff7202dc, 0xbc6679cb, 0x795af4f2, 0x3a4e8fe5,
+    0x9ac3f696, 0xd9d78d81, 0x1ceb00b8, 0x5fff7baf, 0x96921acb,
+    0xd58661dc, 0x10baece5, 0x53ae97f2, 0x82612e2d, 0xc175553a,
+    0x0449d803, 0x475da314, 0x8e30c270, 0xcd24b967, 0x0818345e,
+    0x4b0c4f49},
+   {0x00000000, 0x3e6bc2ef, 0x3dd0f504, 0x03bb37eb, 0x7aa0eb09,
+    0x44cb29e6, 0x47701e0d, 0x791bdce2, 0xf440d713, 0xca2b15fc,
+    0xc9902217, 0xf7fbe0f8, 0x8ee03c1a, 0xb08bfef5, 0xb330c91e,
+    0x8d5b0bf1, 0xe881ae27, 0xd6ea6cc8, 0xd5515b23, 0xeb3a99cc,
+    0x9221452e, 0xac4a87c1, 0xaff1b02a, 0x919a72c5, 0x1cc17934,
+    0x22aabbdb, 0x21118c30, 0x1f7a4edf, 0x6661923d, 0x580a50d2,
+    0x5bb16739, 0x65daa5d6, 0xd0035d4f, 0xee689fa0, 0xedd3a84b,
+    0xd3b86aa4, 0xaaa3b646, 0x94c874a9, 0x97734342, 0xa91881ad,
+    0x24438a5c, 0x1a2848b3, 0x19937f58, 0x27f8bdb7, 0x5ee36155,
+    0x6088a3ba, 0x63339451, 0x5d5856be, 0x3882f368, 0x06e93187,
+    0x0552066c, 0x3b39c483, 0x42221861, 0x7c49da8e, 0x7ff2ed65,
+    0x41992f8a, 0xccc2247b, 0xf2a9e694, 0xf112d17f, 0xcf791390,
+    0xb662cf72, 0x88090d9d, 0x8bb23a76, 0xb5d9f899, 0xa007ba9e,
+    0x9e6c7871, 0x9dd74f9a, 0xa3bc8d75, 0xdaa75197, 0xe4cc9378,
+    0xe777a493, 0xd91c667c, 0x54476d8d, 0x6a2caf62, 0x69979889,
+    0x57fc5a66, 0x2ee78684, 0x108c446b, 0x13377380, 0x2d5cb16f,
+    0x488614b9, 0x76edd656, 0x7556e1bd, 0x4b3d2352, 0x3226ffb0,
+    0x0c4d3d5f, 0x0ff60ab4, 0x319dc85b, 0xbcc6c3aa, 0x82ad0145,
+    0x811636ae, 0xbf7df441, 0xc66628a3, 0xf80dea4c, 0xfbb6dda7,
+    0xc5dd1f48, 0x7004e7d1, 0x4e6f253e, 0x4dd412d5, 0x73bfd03a,
+    0x0aa40cd8, 0x34cfce37, 0x3774f9dc, 0x091f3b33, 0x844430c2,
+    0xba2ff22d, 0xb994c5c6, 0x87ff0729, 0xfee4dbcb, 0xc08f1924,
+    0xc3342ecf, 0xfd5fec20, 0x988549f6, 0xa6ee8b19, 0xa555bcf2,
+    0x9b3e7e1d, 0xe225a2ff, 0xdc4e6010, 0xdff557fb, 0xe19e9514,
+    0x6cc59ee5, 0x52ae5c0a, 0x51156be1, 0x6f7ea90e, 0x166575ec,
+    0x280eb703, 0x2bb580e8, 0x15de4207, 0x010905e6, 0x3f62c709,
+    0x3cd9f0e2, 0x02b2320d, 0x7ba9eeef, 0x45c22c00, 0x46791beb,
+    0x7812d904, 0xf549d2f5, 0xcb22101a, 0xc89927f1, 0xf6f2e51e,
+    0x8fe939fc, 0xb182fb13, 0xb239ccf8, 0x8c520e17, 0xe988abc1,
+    0xd7e3692e, 0xd4585ec5, 0xea339c2a, 0x932840c8, 0xad438227,
+    0xaef8b5cc, 0x90937723, 0x1dc87cd2, 0x23a3be3d, 0x201889d6,
+    0x1e734b39, 0x676897db, 0x59035534, 0x5ab862df, 0x64d3a030,
+    0xd10a58a9, 0xef619a46, 0xecdaadad, 0xd2b16f42, 0xabaab3a0,
+    0x95c1714f, 0x967a46a4, 0xa811844b, 0x254a8fba, 0x1b214d55,
+    0x189a7abe, 0x26f1b851, 0x5fea64b3, 0x6181a65c, 0x623a91b7,
+    0x5c515358, 0x398bf68e, 0x07e03461, 0x045b038a, 0x3a30c165,
+    0x432b1d87, 0x7d40df68, 0x7efbe883, 0x40902a6c, 0xcdcb219d,
+    0xf3a0e372, 0xf01bd499, 0xce701676, 0xb76bca94, 0x8900087b,
+    0x8abb3f90, 0xb4d0fd7f, 0xa10ebf78, 0x9f657d97, 0x9cde4a7c,
+    0xa2b58893, 0xdbae5471, 0xe5c5969e, 0xe67ea175, 0xd815639a,
+    0x554e686b, 0x6b25aa84, 0x689e9d6f, 0x56f55f80, 0x2fee8362,
+    0x1185418d, 0x123e7666, 0x2c55b489, 0x498f115f, 0x77e4d3b0,
+    0x745fe45b, 0x4a3426b4, 0x332ffa56, 0x0d4438b9, 0x0eff0f52,
+    0x3094cdbd, 0xbdcfc64c, 0x83a404a3, 0x801f3348, 0xbe74f1a7,
+    0xc76f2d45, 0xf904efaa, 0xfabfd841, 0xc4d41aae, 0x710de237,
+    0x4f6620d8, 0x4cdd1733, 0x72b6d5dc, 0x0bad093e, 0x35c6cbd1,
+    0x367dfc3a, 0x08163ed5, 0x854d3524, 0xbb26f7cb, 0xb89dc020,
+    0x86f602cf, 0xffedde2d, 0xc1861cc2, 0xc23d2b29, 0xfc56e9c6,
+    0x998c4c10, 0xa7e78eff, 0xa45cb914, 0x9a377bfb, 0xe32ca719,
+    0xdd4765f6, 0xdefc521d, 0xe09790f2, 0x6dcc9b03, 0x53a759ec,
+    0x501c6e07, 0x6e77ace8, 0x176c700a, 0x2907b2e5, 0x2abc850e,
+    0x14d747e1},
+   {0x00000000, 0xc0df8ec1, 0xc1b96c58, 0x0166e299, 0x8273d9b0,
+    0x42ac5771, 0x43cab5e8, 0x83153b29, 0x45e1c3ba, 0x853e4d7b,
+    0x8458afe2, 0x44872123, 0xc7921a0a, 0x074d94cb, 0x062b7652,
+    0xc6f4f893, 0xcbc4f6ae, 0x0b1b786f, 0x0a7d9af6, 0xcaa21437,
+    0x49b72f1e, 0x8968a1df, 0x880e4346, 0x48d1cd87, 0x8e253514,
+    0x4efabbd5, 0x4f9c594c, 0x8f43d78d, 0x0c56eca4, 0xcc896265,
+    0xcdef80fc, 0x0d300e3d, 0xd78f9c86, 0x17501247, 0x1636f0de,
+    0xd6e97e1f, 0x55fc4536, 0x9523cbf7, 0x9445296e, 0x549aa7af,
+    0x926e5f3c, 0x52b1d1fd, 0x53d73364, 0x9308bda5, 0x101d868c,
+    0xd0c2084d, 0xd1a4ead4, 0x117b6415, 0x1c4b6a28, 0xdc94e4e9,
+    0xddf20670, 0x1d2d88b1, 0x9e38b398, 0x5ee73d59, 0x5f81dfc0,
+    0x9f5e5101, 0x59aaa992, 0x99752753, 0x9813c5ca, 0x58cc4b0b,
+    0xdbd97022, 0x1b06fee3, 0x1a601c7a, 0xdabf92bb, 0xef1948d6,
+    0x2fc6c617, 0x2ea0248e, 0xee7faa4f, 0x6d6a9166, 0xadb51fa7,
+    0xacd3fd3e, 0x6c0c73ff, 0xaaf88b6c, 0x6a2705ad, 0x6b41e734,
+    0xab9e69f5, 0x288b52dc, 0xe854dc1d, 0xe9323e84, 0x29edb045,
+    0x24ddbe78, 0xe40230b9, 0xe564d220, 0x25bb5ce1, 0xa6ae67c8,
+    0x6671e909, 0x67170b90, 0xa7c88551, 0x613c7dc2, 0xa1e3f303,
+    0xa085119a, 0x605a9f5b, 0xe34fa472, 0x23902ab3, 0x22f6c82a,
+    0xe22946eb, 0x3896d450, 0xf8495a91, 0xf92fb808, 0x39f036c9,
+    0xbae50de0, 0x7a3a8321, 0x7b5c61b8, 0xbb83ef79, 0x7d7717ea,
+    0xbda8992b, 0xbcce7bb2, 0x7c11f573, 0xff04ce5a, 0x3fdb409b,
+    0x3ebda202, 0xfe622cc3, 0xf35222fe, 0x338dac3f, 0x32eb4ea6,
+    0xf234c067, 0x7121fb4e, 0xb1fe758f, 0xb0989716, 0x704719d7,
+    0xb6b3e144, 0x766c6f85, 0x770a8d1c, 0xb7d503dd, 0x34c038f4,
+    0xf41fb635, 0xf57954ac, 0x35a6da6d, 0x9f35e177, 0x5fea6fb6,
+    0x5e8c8d2f, 0x9e5303ee, 0x1d4638c7, 0xdd99b606, 0xdcff549f,
+    0x1c20da5e, 0xdad422cd, 0x1a0bac0c, 0x1b6d4e95, 0xdbb2c054,
+    0x58a7fb7d, 0x987875bc, 0x991e9725, 0x59c119e4, 0x54f117d9,
+    0x942e9918, 0x95487b81, 0x5597f540, 0xd682ce69, 0x165d40a8,
+    0x173ba231, 0xd7e42cf0, 0x1110d463, 0xd1cf5aa2, 0xd0a9b83b,
+    0x107636fa, 0x93630dd3, 0x53bc8312, 0x52da618b, 0x9205ef4a,
+    0x48ba7df1, 0x8865f330, 0x890311a9, 0x49dc9f68, 0xcac9a441,
+    0x0a162a80, 0x0b70c819, 0xcbaf46d8, 0x0d5bbe4b, 0xcd84308a,
+    0xcce2d213, 0x0c3d5cd2, 0x8f2867fb, 0x4ff7e93a, 0x4e910ba3,
+    0x8e4e8562, 0x837e8b5f, 0x43a1059e, 0x42c7e707, 0x821869c6,
+    0x010d52ef, 0xc1d2dc2e, 0xc0b43eb7, 0x006bb076, 0xc69f48e5,
+    0x0640c624, 0x072624bd, 0xc7f9aa7c, 0x44ec9155, 0x84331f94,
+    0x8555fd0d, 0x458a73cc, 0x702ca9a1, 0xb0f32760, 0xb195c5f9,
+    0x714a4b38, 0xf25f7011, 0x3280fed0, 0x33e61c49, 0xf3399288,
+    0x35cd6a1b, 0xf512e4da, 0xf4740643, 0x34ab8882, 0xb7beb3ab,
+    0x77613d6a, 0x7607dff3, 0xb6d85132, 0xbbe85f0f, 0x7b37d1ce,
+    0x7a513357, 0xba8ebd96, 0x399b86bf, 0xf944087e, 0xf822eae7,
+    0x38fd6426, 0xfe099cb5, 0x3ed61274, 0x3fb0f0ed, 0xff6f7e2c,
+    0x7c7a4505, 0xbca5cbc4, 0xbdc3295d, 0x7d1ca79c, 0xa7a33527,
+    0x677cbbe6, 0x661a597f, 0xa6c5d7be, 0x25d0ec97, 0xe50f6256,
+    0xe46980cf, 0x24b60e0e, 0xe242f69d, 0x229d785c, 0x23fb9ac5,
+    0xe3241404, 0x60312f2d, 0xa0eea1ec, 0xa1884375, 0x6157cdb4,
+    0x6c67c389, 0xacb84d48, 0xaddeafd1, 0x6d012110, 0xee141a39,
+    0x2ecb94f8, 0x2fad7661, 0xef72f8a0, 0x29860033, 0xe9598ef2,
+    0xe83f6c6b, 0x28e0e2aa, 0xabf5d983, 0x6b2a5742, 0x6a4cb5db,
+    0xaa933b1a},
+   {0x00000000, 0x6f4ca59b, 0x9f9e3bec, 0xf0d29e77, 0x7f3b0603,
+    0x1077a398, 0xe0a53def, 0x8fe99874, 0xfe760c06, 0x913aa99d,
+    0x61e837ea, 0x0ea49271, 0x814d0a05, 0xee01af9e, 0x1ed331e9,
+    0x719f9472, 0xfced180c, 0x93a1bd97, 0x637323e0, 0x0c3f867b,
+    0x83d61e0f, 0xec9abb94, 0x1c4825e3, 0x73048078, 0x029b140a,
+    0x6dd7b191, 0x9d052fe6, 0xf2498a7d, 0x7da01209, 0x12ecb792,
+    0xe23e29e5, 0x8d728c7e, 0xf8db3118, 0x97979483, 0x67450af4,
+    0x0809af6f, 0x87e0371b, 0xe8ac9280, 0x187e0cf7, 0x7732a96c,
+    0x06ad3d1e, 0x69e19885, 0x993306f2, 0xf67fa369, 0x79963b1d,
+    0x16da9e86, 0xe60800f1, 0x8944a56a, 0x04362914, 0x6b7a8c8f,
+    0x9ba812f8, 0xf4e4b763, 0x7b0d2f17, 0x14418a8c, 0xe49314fb,
+    0x8bdfb160, 0xfa402512, 0x950c8089, 0x65de1efe, 0x0a92bb65,
+    0x857b2311, 0xea37868a, 0x1ae518fd, 0x75a9bd66, 0xf0b76330,
+    0x9ffbc6ab, 0x6f2958dc, 0x0065fd47, 0x8f8c6533, 0xe0c0c0a8,
+    0x10125edf, 0x7f5efb44, 0x0ec16f36, 0x618dcaad, 0x915f54da,
+    0xfe13f141, 0x71fa6935, 0x1eb6ccae, 0xee6452d9, 0x8128f742,
+    0x0c5a7b3c, 0x6316dea7, 0x93c440d0, 0xfc88e54b, 0x73617d3f,
+    0x1c2dd8a4, 0xecff46d3, 0x83b3e348, 0xf22c773a, 0x9d60d2a1,
+    0x6db24cd6, 0x02fee94d, 0x8d177139, 0xe25bd4a2, 0x12894ad5,
+    0x7dc5ef4e, 0x086c5228, 0x6720f7b3, 0x97f269c4, 0xf8becc5f,
+    0x7757542b, 0x181bf1b0, 0xe8c96fc7, 0x8785ca5c, 0xf61a5e2e,
+    0x9956fbb5, 0x698465c2, 0x06c8c059, 0x8921582d, 0xe66dfdb6,
+    0x16bf63c1, 0x79f3c65a, 0xf4814a24, 0x9bcdefbf, 0x6b1f71c8,
+    0x0453d453, 0x8bba4c27, 0xe4f6e9bc, 0x142477cb, 0x7b68d250,
+    0x0af74622, 0x65bbe3b9, 0x95697dce, 0xfa25d855, 0x75cc4021,
+    0x1a80e5ba, 0xea527bcd, 0x851ede56, 0xe06fc760, 0x8f2362fb,
+    0x7ff1fc8c, 0x10bd5917, 0x9f54c163, 0xf01864f8, 0x00cafa8f,
+    0x6f865f14, 0x1e19cb66, 0x71556efd, 0x8187f08a, 0xeecb5511,
+    0x6122cd65, 0x0e6e68fe, 0xfebcf689, 0x91f05312, 0x1c82df6c,
+    0x73ce7af7, 0x831ce480, 0xec50411b, 0x63b9d96f, 0x0cf57cf4,
+    0xfc27e283, 0x936b4718, 0xe2f4d36a, 0x8db876f1, 0x7d6ae886,
+    0x12264d1d, 0x9dcfd569, 0xf28370f2, 0x0251ee85, 0x6d1d4b1e,
+    0x18b4f678, 0x77f853e3, 0x872acd94, 0xe866680f, 0x678ff07b,
+    0x08c355e0, 0xf811cb97, 0x975d6e0c, 0xe6c2fa7e, 0x898e5fe5,
+    0x795cc192, 0x16106409, 0x99f9fc7d, 0xf6b559e6, 0x0667c791,
+    0x692b620a, 0xe459ee74, 0x8b154bef, 0x7bc7d598, 0x148b7003,
+    0x9b62e877, 0xf42e4dec, 0x04fcd39b, 0x6bb07600, 0x1a2fe272,
+    0x756347e9, 0x85b1d99e, 0xeafd7c05, 0x6514e471, 0x0a5841ea,
+    0xfa8adf9d, 0x95c67a06, 0x10d8a450, 0x7f9401cb, 0x8f469fbc,
+    0xe00a3a27, 0x6fe3a253, 0x00af07c8, 0xf07d99bf, 0x9f313c24,
+    0xeeaea856, 0x81e20dcd, 0x713093ba, 0x1e7c3621, 0x9195ae55,
+    0xfed90bce, 0x0e0b95b9, 0x61473022, 0xec35bc5c, 0x837919c7,
+    0x73ab87b0, 0x1ce7222b, 0x930eba5f, 0xfc421fc4, 0x0c9081b3,
+    0x63dc2428, 0x1243b05a, 0x7d0f15c1, 0x8ddd8bb6, 0xe2912e2d,
+    0x6d78b659, 0x023413c2, 0xf2e68db5, 0x9daa282e, 0xe8039548,
+    0x874f30d3, 0x779daea4, 0x18d10b3f, 0x9738934b, 0xf87436d0,
+    0x08a6a8a7, 0x67ea0d3c, 0x1675994e, 0x79393cd5, 0x89eba2a2,
+    0xe6a70739, 0x694e9f4d, 0x06023ad6, 0xf6d0a4a1, 0x999c013a,
+    0x14ee8d44, 0x7ba228df, 0x8b70b6a8, 0xe43c1333, 0x6bd58b47,
+    0x04992edc, 0xf44bb0ab, 0x9b071530, 0xea988142, 0x85d424d9,
+    0x7506baae, 0x1a4a1f35, 0x95a38741, 0xfaef22da, 0x0a3dbcad,
+    0x65711936}};
+
+#endif
+
+#endif
+
+#if N == 4
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xf1da05aa, 0x38c50d15, 0xc91f08bf, 0x718a1a2a,
+    0x80501f80, 0x494f173f, 0xb8951295, 0xe3143454, 0x12ce31fe,
+    0xdbd13941, 0x2a0b3ceb, 0x929e2e7e, 0x63442bd4, 0xaa5b236b,
+    0x5b8126c1, 0x1d596ee9, 0xec836b43, 0x259c63fc, 0xd4466656,
+    0x6cd374c3, 0x9d097169, 0x541679d6, 0xa5cc7c7c, 0xfe4d5abd,
+    0x0f975f17, 0xc68857a8, 0x37525202, 0x8fc74097, 0x7e1d453d,
+    0xb7024d82, 0x46d84828, 0x3ab2ddd2, 0xcb68d878, 0x0277d0c7,
+    0xf3add56d, 0x4b38c7f8, 0xbae2c252, 0x73fdcaed, 0x8227cf47,
+    0xd9a6e986, 0x287cec2c, 0xe163e493, 0x10b9e139, 0xa82cf3ac,
+    0x59f6f606, 0x90e9feb9, 0x6133fb13, 0x27ebb33b, 0xd631b691,
+    0x1f2ebe2e, 0xeef4bb84, 0x5661a911, 0xa7bbacbb, 0x6ea4a404,
+    0x9f7ea1ae, 0xc4ff876f, 0x352582c5, 0xfc3a8a7a, 0x0de08fd0,
+    0xb5759d45, 0x44af98ef, 0x8db09050, 0x7c6a95fa, 0x7565bba4,
+    0x84bfbe0e, 0x4da0b6b1, 0xbc7ab31b, 0x04efa18e, 0xf535a424,
+    0x3c2aac9b, 0xcdf0a931, 0x96718ff0, 0x67ab8a5a, 0xaeb482e5,
+    0x5f6e874f, 0xe7fb95da, 0x16219070, 0xdf3e98cf, 0x2ee49d65,
+    0x683cd54d, 0x99e6d0e7, 0x50f9d858, 0xa123ddf2, 0x19b6cf67,
+    0xe86ccacd, 0x2173c272, 0xd0a9c7d8, 0x8b28e119, 0x7af2e4b3,
+    0xb3edec0c, 0x4237e9a6, 0xfaa2fb33, 0x0b78fe99, 0xc267f626,
+    0x33bdf38c, 0x4fd76676, 0xbe0d63dc, 0x77126b63, 0x86c86ec9,
+    0x3e5d7c5c, 0xcf8779f6, 0x06987149, 0xf74274e3, 0xacc35222,
+    0x5d195788, 0x94065f37, 0x65dc5a9d, 0xdd494808, 0x2c934da2,
+    0xe58c451d, 0x145640b7, 0x528e089f, 0xa3540d35, 0x6a4b058a,
+    0x9b910020, 0x230412b5, 0xd2de171f, 0x1bc11fa0, 0xea1b1a0a,
+    0xb19a3ccb, 0x40403961, 0x895f31de, 0x78853474, 0xc01026e1,
+    0x31ca234b, 0xf8d52bf4, 0x090f2e5e, 0xeacb7748, 0x1b1172e2,
+    0xd20e7a5d, 0x23d47ff7, 0x9b416d62, 0x6a9b68c8, 0xa3846077,
+    0x525e65dd, 0x09df431c, 0xf80546b6, 0x311a4e09, 0xc0c04ba3,
+    0x78555936, 0x898f5c9c, 0x40905423, 0xb14a5189, 0xf79219a1,
+    0x06481c0b, 0xcf5714b4, 0x3e8d111e, 0x8618038b, 0x77c20621,
+    0xbedd0e9e, 0x4f070b34, 0x14862df5, 0xe55c285f, 0x2c4320e0,
+    0xdd99254a, 0x650c37df, 0x94d63275, 0x5dc93aca, 0xac133f60,
+    0xd079aa9a, 0x21a3af30, 0xe8bca78f, 0x1966a225, 0xa1f3b0b0,
+    0x5029b51a, 0x9936bda5, 0x68ecb80f, 0x336d9ece, 0xc2b79b64,
+    0x0ba893db, 0xfa729671, 0x42e784e4, 0xb33d814e, 0x7a2289f1,
+    0x8bf88c5b, 0xcd20c473, 0x3cfac1d9, 0xf5e5c966, 0x043fcccc,
+    0xbcaade59, 0x4d70dbf3, 0x846fd34c, 0x75b5d6e6, 0x2e34f027,
+    0xdfeef58d, 0x16f1fd32, 0xe72bf898, 0x5fbeea0d, 0xae64efa7,
+    0x677be718, 0x96a1e2b2, 0x9faeccec, 0x6e74c946, 0xa76bc1f9,
+    0x56b1c453, 0xee24d6c6, 0x1ffed36c, 0xd6e1dbd3, 0x273bde79,
+    0x7cbaf8b8, 0x8d60fd12, 0x447ff5ad, 0xb5a5f007, 0x0d30e292,
+    0xfceae738, 0x35f5ef87, 0xc42fea2d, 0x82f7a205, 0x732da7af,
+    0xba32af10, 0x4be8aaba, 0xf37db82f, 0x02a7bd85, 0xcbb8b53a,
+    0x3a62b090, 0x61e39651, 0x903993fb, 0x59269b44, 0xa8fc9eee,
+    0x10698c7b, 0xe1b389d1, 0x28ac816e, 0xd97684c4, 0xa51c113e,
+    0x54c61494, 0x9dd91c2b, 0x6c031981, 0xd4960b14, 0x254c0ebe,
+    0xec530601, 0x1d8903ab, 0x4608256a, 0xb7d220c0, 0x7ecd287f,
+    0x8f172dd5, 0x37823f40, 0xc6583aea, 0x0f473255, 0xfe9d37ff,
+    0xb8457fd7, 0x499f7a7d, 0x808072c2, 0x715a7768, 0xc9cf65fd,
+    0x38156057, 0xf10a68e8, 0x00d06d42, 0x5b514b83, 0xaa8b4e29,
+    0x63944696, 0x924e433c, 0x2adb51a9, 0xdb015403, 0x121e5cbc,
+    0xe3c45916},
+   {0x00000000, 0x0ee7e8d1, 0x1dcfd1a2, 0x13283973, 0x3b9fa344,
+    0x35784b95, 0x265072e6, 0x28b79a37, 0x773f4688, 0x79d8ae59,
+    0x6af0972a, 0x64177ffb, 0x4ca0e5cc, 0x42470d1d, 0x516f346e,
+    0x5f88dcbf, 0xee7e8d10, 0xe09965c1, 0xf3b15cb2, 0xfd56b463,
+    0xd5e12e54, 0xdb06c685, 0xc82efff6, 0xc6c91727, 0x9941cb98,
+    0x97a62349, 0x848e1a3a, 0x8a69f2eb, 0xa2de68dc, 0xac39800d,
+    0xbf11b97e, 0xb1f651af, 0x078c1c61, 0x096bf4b0, 0x1a43cdc3,
+    0x14a42512, 0x3c13bf25, 0x32f457f4, 0x21dc6e87, 0x2f3b8656,
+    0x70b35ae9, 0x7e54b238, 0x6d7c8b4b, 0x639b639a, 0x4b2cf9ad,
+    0x45cb117c, 0x56e3280f, 0x5804c0de, 0xe9f29171, 0xe71579a0,
+    0xf43d40d3, 0xfadaa802, 0xd26d3235, 0xdc8adae4, 0xcfa2e397,
+    0xc1450b46, 0x9ecdd7f9, 0x902a3f28, 0x8302065b, 0x8de5ee8a,
+    0xa55274bd, 0xabb59c6c, 0xb89da51f, 0xb67a4dce, 0x0f1838c2,
+    0x01ffd013, 0x12d7e960, 0x1c3001b1, 0x34879b86, 0x3a607357,
+    0x29484a24, 0x27afa2f5, 0x78277e4a, 0x76c0969b, 0x65e8afe8,
+    0x6b0f4739, 0x43b8dd0e, 0x4d5f35df, 0x5e770cac, 0x5090e47d,
+    0xe166b5d2, 0xef815d03, 0xfca96470, 0xf24e8ca1, 0xdaf91696,
+    0xd41efe47, 0xc736c734, 0xc9d12fe5, 0x9659f35a, 0x98be1b8b,
+    0x8b9622f8, 0x8571ca29, 0xadc6501e, 0xa321b8cf, 0xb00981bc,
+    0xbeee696d, 0x089424a3, 0x0673cc72, 0x155bf501, 0x1bbc1dd0,
+    0x330b87e7, 0x3dec6f36, 0x2ec45645, 0x2023be94, 0x7fab622b,
+    0x714c8afa, 0x6264b389, 0x6c835b58, 0x4434c16f, 0x4ad329be,
+    0x59fb10cd, 0x571cf81c, 0xe6eaa9b3, 0xe80d4162, 0xfb257811,
+    0xf5c290c0, 0xdd750af7, 0xd392e226, 0xc0badb55, 0xce5d3384,
+    0x91d5ef3b, 0x9f3207ea, 0x8c1a3e99, 0x82fdd648, 0xaa4a4c7f,
+    0xa4ada4ae, 0xb7859ddd, 0xb962750c, 0x1e307184, 0x10d79955,
+    0x03ffa026, 0x0d1848f7, 0x25afd2c0, 0x2b483a11, 0x38600362,
+    0x3687ebb3, 0x690f370c, 0x67e8dfdd, 0x74c0e6ae, 0x7a270e7f,
+    0x52909448, 0x5c777c99, 0x4f5f45ea, 0x41b8ad3b, 0xf04efc94,
+    0xfea91445, 0xed812d36, 0xe366c5e7, 0xcbd15fd0, 0xc536b701,
+    0xd61e8e72, 0xd8f966a3, 0x8771ba1c, 0x899652cd, 0x9abe6bbe,
+    0x9459836f, 0xbcee1958, 0xb209f189, 0xa121c8fa, 0xafc6202b,
+    0x19bc6de5, 0x175b8534, 0x0473bc47, 0x0a945496, 0x2223cea1,
+    0x2cc42670, 0x3fec1f03, 0x310bf7d2, 0x6e832b6d, 0x6064c3bc,
+    0x734cfacf, 0x7dab121e, 0x551c8829, 0x5bfb60f8, 0x48d3598b,
+    0x4634b15a, 0xf7c2e0f5, 0xf9250824, 0xea0d3157, 0xe4ead986,
+    0xcc5d43b1, 0xc2baab60, 0xd1929213, 0xdf757ac2, 0x80fda67d,
+    0x8e1a4eac, 0x9d3277df, 0x93d59f0e, 0xbb620539, 0xb585ede8,
+    0xa6add49b, 0xa84a3c4a, 0x11284946, 0x1fcfa197, 0x0ce798e4,
+    0x02007035, 0x2ab7ea02, 0x245002d3, 0x37783ba0, 0x399fd371,
+    0x66170fce, 0x68f0e71f, 0x7bd8de6c, 0x753f36bd, 0x5d88ac8a,
+    0x536f445b, 0x40477d28, 0x4ea095f9, 0xff56c456, 0xf1b12c87,
+    0xe29915f4, 0xec7efd25, 0xc4c96712, 0xca2e8fc3, 0xd906b6b0,
+    0xd7e15e61, 0x886982de, 0x868e6a0f, 0x95a6537c, 0x9b41bbad,
+    0xb3f6219a, 0xbd11c94b, 0xae39f038, 0xa0de18e9, 0x16a45527,
+    0x1843bdf6, 0x0b6b8485, 0x058c6c54, 0x2d3bf663, 0x23dc1eb2,
+    0x30f427c1, 0x3e13cf10, 0x619b13af, 0x6f7cfb7e, 0x7c54c20d,
+    0x72b32adc, 0x5a04b0eb, 0x54e3583a, 0x47cb6149, 0x492c8998,
+    0xf8dad837, 0xf63d30e6, 0xe5150995, 0xebf2e144, 0xc3457b73,
+    0xcda293a2, 0xde8aaad1, 0xd06d4200, 0x8fe59ebf, 0x8102766e,
+    0x922a4f1d, 0x9ccda7cc, 0xb47a3dfb, 0xba9dd52a, 0xa9b5ec59,
+    0xa7520488},
+   {0x00000000, 0x3c60e308, 0x78c1c610, 0x44a12518, 0xf1838c20,
+    0xcde36f28, 0x89424a30, 0xb522a938, 0x38761e01, 0x0416fd09,
+    0x40b7d811, 0x7cd73b19, 0xc9f59221, 0xf5957129, 0xb1345431,
+    0x8d54b739, 0x70ec3c02, 0x4c8cdf0a, 0x082dfa12, 0x344d191a,
+    0x816fb022, 0xbd0f532a, 0xf9ae7632, 0xc5ce953a, 0x489a2203,
+    0x74fac10b, 0x305be413, 0x0c3b071b, 0xb919ae23, 0x85794d2b,
+    0xc1d86833, 0xfdb88b3b, 0xe1d87804, 0xddb89b0c, 0x9919be14,
+    0xa5795d1c, 0x105bf424, 0x2c3b172c, 0x689a3234, 0x54fad13c,
+    0xd9ae6605, 0xe5ce850d, 0xa16fa015, 0x9d0f431d, 0x282dea25,
+    0x144d092d, 0x50ec2c35, 0x6c8ccf3d, 0x91344406, 0xad54a70e,
+    0xe9f58216, 0xd595611e, 0x60b7c826, 0x5cd72b2e, 0x18760e36,
+    0x2416ed3e, 0xa9425a07, 0x9522b90f, 0xd1839c17, 0xede37f1f,
+    0x58c1d627, 0x64a1352f, 0x20001037, 0x1c60f33f, 0x18c1f649,
+    0x24a11541, 0x60003059, 0x5c60d351, 0xe9427a69, 0xd5229961,
+    0x9183bc79, 0xade35f71, 0x20b7e848, 0x1cd70b40, 0x58762e58,
+    0x6416cd50, 0xd1346468, 0xed548760, 0xa9f5a278, 0x95954170,
+    0x682dca4b, 0x544d2943, 0x10ec0c5b, 0x2c8cef53, 0x99ae466b,
+    0xa5cea563, 0xe16f807b, 0xdd0f6373, 0x505bd44a, 0x6c3b3742,
+    0x289a125a, 0x14faf152, 0xa1d8586a, 0x9db8bb62, 0xd9199e7a,
+    0xe5797d72, 0xf9198e4d, 0xc5796d45, 0x81d8485d, 0xbdb8ab55,
+    0x089a026d, 0x34fae165, 0x705bc47d, 0x4c3b2775, 0xc16f904c,
+    0xfd0f7344, 0xb9ae565c, 0x85ceb554, 0x30ec1c6c, 0x0c8cff64,
+    0x482dda7c, 0x744d3974, 0x89f5b24f, 0xb5955147, 0xf134745f,
+    0xcd549757, 0x78763e6f, 0x4416dd67, 0x00b7f87f, 0x3cd71b77,
+    0xb183ac4e, 0x8de34f46, 0xc9426a5e, 0xf5228956, 0x4000206e,
+    0x7c60c366, 0x38c1e67e, 0x04a10576, 0x3183ec92, 0x0de30f9a,
+    0x49422a82, 0x7522c98a, 0xc00060b2, 0xfc6083ba, 0xb8c1a6a2,
+    0x84a145aa, 0x09f5f293, 0x3595119b, 0x71343483, 0x4d54d78b,
+    0xf8767eb3, 0xc4169dbb, 0x80b7b8a3, 0xbcd75bab, 0x416fd090,
+    0x7d0f3398, 0x39ae1680, 0x05cef588, 0xb0ec5cb0, 0x8c8cbfb8,
+    0xc82d9aa0, 0xf44d79a8, 0x7919ce91, 0x45792d99, 0x01d80881,
+    0x3db8eb89, 0x889a42b1, 0xb4faa1b9, 0xf05b84a1, 0xcc3b67a9,
+    0xd05b9496, 0xec3b779e, 0xa89a5286, 0x94fab18e, 0x21d818b6,
+    0x1db8fbbe, 0x5919dea6, 0x65793dae, 0xe82d8a97, 0xd44d699f,
+    0x90ec4c87, 0xac8caf8f, 0x19ae06b7, 0x25cee5bf, 0x616fc0a7,
+    0x5d0f23af, 0xa0b7a894, 0x9cd74b9c, 0xd8766e84, 0xe4168d8c,
+    0x513424b4, 0x6d54c7bc, 0x29f5e2a4, 0x159501ac, 0x98c1b695,
+    0xa4a1559d, 0xe0007085, 0xdc60938d, 0x69423ab5, 0x5522d9bd,
+    0x1183fca5, 0x2de31fad, 0x29421adb, 0x1522f9d3, 0x5183dccb,
+    0x6de33fc3, 0xd8c196fb, 0xe4a175f3, 0xa00050eb, 0x9c60b3e3,
+    0x113404da, 0x2d54e7d2, 0x69f5c2ca, 0x559521c2, 0xe0b788fa,
+    0xdcd76bf2, 0x98764eea, 0xa416ade2, 0x59ae26d9, 0x65cec5d1,
+    0x216fe0c9, 0x1d0f03c1, 0xa82daaf9, 0x944d49f1, 0xd0ec6ce9,
+    0xec8c8fe1, 0x61d838d8, 0x5db8dbd0, 0x1919fec8, 0x25791dc0,
+    0x905bb4f8, 0xac3b57f0, 0xe89a72e8, 0xd4fa91e0, 0xc89a62df,
+    0xf4fa81d7, 0xb05ba4cf, 0x8c3b47c7, 0x3919eeff, 0x05790df7,
+    0x41d828ef, 0x7db8cbe7, 0xf0ec7cde, 0xcc8c9fd6, 0x882dbace,
+    0xb44d59c6, 0x016ff0fe, 0x3d0f13f6, 0x79ae36ee, 0x45ced5e6,
+    0xb8765edd, 0x8416bdd5, 0xc0b798cd, 0xfcd77bc5, 0x49f5d2fd,
+    0x759531f5, 0x313414ed, 0x0d54f7e5, 0x800040dc, 0xbc60a3d4,
+    0xf8c186cc, 0xc4a165c4, 0x7183ccfc, 0x4de32ff4, 0x09420aec,
+    0x3522e9e4},
+   {0x00000000, 0x6307d924, 0xc60fb248, 0xa5086b6c, 0x576e62d1,
+    0x3469bbf5, 0x9161d099, 0xf26609bd, 0xaedcc5a2, 0xcddb1c86,
+    0x68d377ea, 0x0bd4aece, 0xf9b2a773, 0x9ab57e57, 0x3fbd153b,
+    0x5cbacc1f, 0x86c88d05, 0xe5cf5421, 0x40c73f4d, 0x23c0e669,
+    0xd1a6efd4, 0xb2a136f0, 0x17a95d9c, 0x74ae84b8, 0x281448a7,
+    0x4b139183, 0xee1bfaef, 0x8d1c23cb, 0x7f7a2a76, 0x1c7df352,
+    0xb975983e, 0xda72411a, 0xd6e01c4b, 0xb5e7c56f, 0x10efae03,
+    0x73e87727, 0x818e7e9a, 0xe289a7be, 0x4781ccd2, 0x248615f6,
+    0x783cd9e9, 0x1b3b00cd, 0xbe336ba1, 0xdd34b285, 0x2f52bb38,
+    0x4c55621c, 0xe95d0970, 0x8a5ad054, 0x5028914e, 0x332f486a,
+    0x96272306, 0xf520fa22, 0x0746f39f, 0x64412abb, 0xc14941d7,
+    0xa24e98f3, 0xfef454ec, 0x9df38dc8, 0x38fbe6a4, 0x5bfc3f80,
+    0xa99a363d, 0xca9def19, 0x6f958475, 0x0c925d51, 0x76b13ed7,
+    0x15b6e7f3, 0xb0be8c9f, 0xd3b955bb, 0x21df5c06, 0x42d88522,
+    0xe7d0ee4e, 0x84d7376a, 0xd86dfb75, 0xbb6a2251, 0x1e62493d,
+    0x7d659019, 0x8f0399a4, 0xec044080, 0x490c2bec, 0x2a0bf2c8,
+    0xf079b3d2, 0x937e6af6, 0x3676019a, 0x5571d8be, 0xa717d103,
+    0xc4100827, 0x6118634b, 0x021fba6f, 0x5ea57670, 0x3da2af54,
+    0x98aac438, 0xfbad1d1c, 0x09cb14a1, 0x6acccd85, 0xcfc4a6e9,
+    0xacc37fcd, 0xa051229c, 0xc356fbb8, 0x665e90d4, 0x055949f0,
+    0xf73f404d, 0x94389969, 0x3130f205, 0x52372b21, 0x0e8de73e,
+    0x6d8a3e1a, 0xc8825576, 0xab858c52, 0x59e385ef, 0x3ae45ccb,
+    0x9fec37a7, 0xfcebee83, 0x2699af99, 0x459e76bd, 0xe0961dd1,
+    0x8391c4f5, 0x71f7cd48, 0x12f0146c, 0xb7f87f00, 0xd4ffa624,
+    0x88456a3b, 0xeb42b31f, 0x4e4ad873, 0x2d4d0157, 0xdf2b08ea,
+    0xbc2cd1ce, 0x1924baa2, 0x7a236386, 0xed627dae, 0x8e65a48a,
+    0x2b6dcfe6, 0x486a16c2, 0xba0c1f7f, 0xd90bc65b, 0x7c03ad37,
+    0x1f047413, 0x43beb80c, 0x20b96128, 0x85b10a44, 0xe6b6d360,
+    0x14d0dadd, 0x77d703f9, 0xd2df6895, 0xb1d8b1b1, 0x6baaf0ab,
+    0x08ad298f, 0xada542e3, 0xcea29bc7, 0x3cc4927a, 0x5fc34b5e,
+    0xfacb2032, 0x99ccf916, 0xc5763509, 0xa671ec2d, 0x03798741,
+    0x607e5e65, 0x921857d8, 0xf11f8efc, 0x5417e590, 0x37103cb4,
+    0x3b8261e5, 0x5885b8c1, 0xfd8dd3ad, 0x9e8a0a89, 0x6cec0334,
+    0x0febda10, 0xaae3b17c, 0xc9e46858, 0x955ea447, 0xf6597d63,
+    0x5351160f, 0x3056cf2b, 0xc230c696, 0xa1371fb2, 0x043f74de,
+    0x6738adfa, 0xbd4aece0, 0xde4d35c4, 0x7b455ea8, 0x1842878c,
+    0xea248e31, 0x89235715, 0x2c2b3c79, 0x4f2ce55d, 0x13962942,
+    0x7091f066, 0xd5999b0a, 0xb69e422e, 0x44f84b93, 0x27ff92b7,
+    0x82f7f9db, 0xe1f020ff, 0x9bd34379, 0xf8d49a5d, 0x5ddcf131,
+    0x3edb2815, 0xccbd21a8, 0xafbaf88c, 0x0ab293e0, 0x69b54ac4,
+    0x350f86db, 0x56085fff, 0xf3003493, 0x9007edb7, 0x6261e40a,
+    0x01663d2e, 0xa46e5642, 0xc7698f66, 0x1d1bce7c, 0x7e1c1758,
+    0xdb147c34, 0xb813a510, 0x4a75acad, 0x29727589, 0x8c7a1ee5,
+    0xef7dc7c1, 0xb3c70bde, 0xd0c0d2fa, 0x75c8b996, 0x16cf60b2,
+    0xe4a9690f, 0x87aeb02b, 0x22a6db47, 0x41a10263, 0x4d335f32,
+    0x2e348616, 0x8b3ced7a, 0xe83b345e, 0x1a5d3de3, 0x795ae4c7,
+    0xdc528fab, 0xbf55568f, 0xe3ef9a90, 0x80e843b4, 0x25e028d8,
+    0x46e7f1fc, 0xb481f841, 0xd7862165, 0x728e4a09, 0x1189932d,
+    0xcbfbd237, 0xa8fc0b13, 0x0df4607f, 0x6ef3b95b, 0x9c95b0e6,
+    0xff9269c2, 0x5a9a02ae, 0x399ddb8a, 0x65271795, 0x0620ceb1,
+    0xa328a5dd, 0xc02f7cf9, 0x32497544, 0x514eac60, 0xf446c70c,
+    0x97411e28},
+   {0x00000000, 0x01b5fd1d, 0x036bfa3a, 0x02de0727, 0x06d7f474,
+    0x07620969, 0x05bc0e4e, 0x0409f353, 0x0dafe8e8, 0x0c1a15f5,
+    0x0ec412d2, 0x0f71efcf, 0x0b781c9c, 0x0acde181, 0x0813e6a6,
+    0x09a61bbb, 0x1b5fd1d0, 0x1aea2ccd, 0x18342bea, 0x1981d6f7,
+    0x1d8825a4, 0x1c3dd8b9, 0x1ee3df9e, 0x1f562283, 0x16f03938,
+    0x1745c425, 0x159bc302, 0x142e3e1f, 0x1027cd4c, 0x11923051,
+    0x134c3776, 0x12f9ca6b, 0x36bfa3a0, 0x370a5ebd, 0x35d4599a,
+    0x3461a487, 0x306857d4, 0x31ddaac9, 0x3303adee, 0x32b650f3,
+    0x3b104b48, 0x3aa5b655, 0x387bb172, 0x39ce4c6f, 0x3dc7bf3c,
+    0x3c724221, 0x3eac4506, 0x3f19b81b, 0x2de07270, 0x2c558f6d,
+    0x2e8b884a, 0x2f3e7557, 0x2b378604, 0x2a827b19, 0x285c7c3e,
+    0x29e98123, 0x204f9a98, 0x21fa6785, 0x232460a2, 0x22919dbf,
+    0x26986eec, 0x272d93f1, 0x25f394d6, 0x244669cb, 0x6d7f4740,
+    0x6ccaba5d, 0x6e14bd7a, 0x6fa14067, 0x6ba8b334, 0x6a1d4e29,
+    0x68c3490e, 0x6976b413, 0x60d0afa8, 0x616552b5, 0x63bb5592,
+    0x620ea88f, 0x66075bdc, 0x67b2a6c1, 0x656ca1e6, 0x64d95cfb,
+    0x76209690, 0x77956b8d, 0x754b6caa, 0x74fe91b7, 0x70f762e4,
+    0x71429ff9, 0x739c98de, 0x722965c3, 0x7b8f7e78, 0x7a3a8365,
+    0x78e48442, 0x7951795f, 0x7d588a0c, 0x7ced7711, 0x7e337036,
+    0x7f868d2b, 0x5bc0e4e0, 0x5a7519fd, 0x58ab1eda, 0x591ee3c7,
+    0x5d171094, 0x5ca2ed89, 0x5e7ceaae, 0x5fc917b3, 0x566f0c08,
+    0x57daf115, 0x5504f632, 0x54b10b2f, 0x50b8f87c, 0x510d0561,
+    0x53d30246, 0x5266ff5b, 0x409f3530, 0x412ac82d, 0x43f4cf0a,
+    0x42413217, 0x4648c144, 0x47fd3c59, 0x45233b7e, 0x4496c663,
+    0x4d30ddd8, 0x4c8520c5, 0x4e5b27e2, 0x4feedaff, 0x4be729ac,
+    0x4a52d4b1, 0x488cd396, 0x49392e8b, 0xdafe8e80, 0xdb4b739d,
+    0xd99574ba, 0xd82089a7, 0xdc297af4, 0xdd9c87e9, 0xdf4280ce,
+    0xdef77dd3, 0xd7516668, 0xd6e49b75, 0xd43a9c52, 0xd58f614f,
+    0xd186921c, 0xd0336f01, 0xd2ed6826, 0xd358953b, 0xc1a15f50,
+    0xc014a24d, 0xc2caa56a, 0xc37f5877, 0xc776ab24, 0xc6c35639,
+    0xc41d511e, 0xc5a8ac03, 0xcc0eb7b8, 0xcdbb4aa5, 0xcf654d82,
+    0xced0b09f, 0xcad943cc, 0xcb6cbed1, 0xc9b2b9f6, 0xc80744eb,
+    0xec412d20, 0xedf4d03d, 0xef2ad71a, 0xee9f2a07, 0xea96d954,
+    0xeb232449, 0xe9fd236e, 0xe848de73, 0xe1eec5c8, 0xe05b38d5,
+    0xe2853ff2, 0xe330c2ef, 0xe73931bc, 0xe68ccca1, 0xe452cb86,
+    0xe5e7369b, 0xf71efcf0, 0xf6ab01ed, 0xf47506ca, 0xf5c0fbd7,
+    0xf1c90884, 0xf07cf599, 0xf2a2f2be, 0xf3170fa3, 0xfab11418,
+    0xfb04e905, 0xf9daee22, 0xf86f133f, 0xfc66e06c, 0xfdd31d71,
+    0xff0d1a56, 0xfeb8e74b, 0xb781c9c0, 0xb63434dd, 0xb4ea33fa,
+    0xb55fcee7, 0xb1563db4, 0xb0e3c0a9, 0xb23dc78e, 0xb3883a93,
+    0xba2e2128, 0xbb9bdc35, 0xb945db12, 0xb8f0260f, 0xbcf9d55c,
+    0xbd4c2841, 0xbf922f66, 0xbe27d27b, 0xacde1810, 0xad6be50d,
+    0xafb5e22a, 0xae001f37, 0xaa09ec64, 0xabbc1179, 0xa962165e,
+    0xa8d7eb43, 0xa171f0f8, 0xa0c40de5, 0xa21a0ac2, 0xa3aff7df,
+    0xa7a6048c, 0xa613f991, 0xa4cdfeb6, 0xa57803ab, 0x813e6a60,
+    0x808b977d, 0x8255905a, 0x83e06d47, 0x87e99e14, 0x865c6309,
+    0x8482642e, 0x85379933, 0x8c918288, 0x8d247f95, 0x8ffa78b2,
+    0x8e4f85af, 0x8a4676fc, 0x8bf38be1, 0x892d8cc6, 0x889871db,
+    0x9a61bbb0, 0x9bd446ad, 0x990a418a, 0x98bfbc97, 0x9cb64fc4,
+    0x9d03b2d9, 0x9fddb5fe, 0x9e6848e3, 0x97ce5358, 0x967bae45,
+    0x94a5a962, 0x9510547f, 0x9119a72c, 0x90ac5a31, 0x92725d16,
+    0x93c7a00b},
+   {0x00000000, 0x6e8c1b41, 0xdd183682, 0xb3942dc3, 0x61416b45,
+    0x0fcd7004, 0xbc595dc7, 0xd2d54686, 0xc282d68a, 0xac0ecdcb,
+    0x1f9ae008, 0x7116fb49, 0xa3c3bdcf, 0xcd4fa68e, 0x7edb8b4d,
+    0x1057900c, 0x5e74ab55, 0x30f8b014, 0x836c9dd7, 0xede08696,
+    0x3f35c010, 0x51b9db51, 0xe22df692, 0x8ca1edd3, 0x9cf67ddf,
+    0xf27a669e, 0x41ee4b5d, 0x2f62501c, 0xfdb7169a, 0x933b0ddb,
+    0x20af2018, 0x4e233b59, 0xbce956aa, 0xd2654deb, 0x61f16028,
+    0x0f7d7b69, 0xdda83def, 0xb32426ae, 0x00b00b6d, 0x6e3c102c,
+    0x7e6b8020, 0x10e79b61, 0xa373b6a2, 0xcdffade3, 0x1f2aeb65,
+    0x71a6f024, 0xc232dde7, 0xacbec6a6, 0xe29dfdff, 0x8c11e6be,
+    0x3f85cb7d, 0x5109d03c, 0x83dc96ba, 0xed508dfb, 0x5ec4a038,
+    0x3048bb79, 0x201f2b75, 0x4e933034, 0xfd071df7, 0x938b06b6,
+    0x415e4030, 0x2fd25b71, 0x9c4676b2, 0xf2ca6df3, 0xa2a3ab15,
+    0xcc2fb054, 0x7fbb9d97, 0x113786d6, 0xc3e2c050, 0xad6edb11,
+    0x1efaf6d2, 0x7076ed93, 0x60217d9f, 0x0ead66de, 0xbd394b1d,
+    0xd3b5505c, 0x016016da, 0x6fec0d9b, 0xdc782058, 0xb2f43b19,
+    0xfcd70040, 0x925b1b01, 0x21cf36c2, 0x4f432d83, 0x9d966b05,
+    0xf31a7044, 0x408e5d87, 0x2e0246c6, 0x3e55d6ca, 0x50d9cd8b,
+    0xe34de048, 0x8dc1fb09, 0x5f14bd8f, 0x3198a6ce, 0x820c8b0d,
+    0xec80904c, 0x1e4afdbf, 0x70c6e6fe, 0xc352cb3d, 0xadded07c,
+    0x7f0b96fa, 0x11878dbb, 0xa213a078, 0xcc9fbb39, 0xdcc82b35,
+    0xb2443074, 0x01d01db7, 0x6f5c06f6, 0xbd894070, 0xd3055b31,
+    0x609176f2, 0x0e1d6db3, 0x403e56ea, 0x2eb24dab, 0x9d266068,
+    0xf3aa7b29, 0x217f3daf, 0x4ff326ee, 0xfc670b2d, 0x92eb106c,
+    0x82bc8060, 0xec309b21, 0x5fa4b6e2, 0x3128ada3, 0xe3fdeb25,
+    0x8d71f064, 0x3ee5dda7, 0x5069c6e6, 0x9e36506b, 0xf0ba4b2a,
+    0x432e66e9, 0x2da27da8, 0xff773b2e, 0x91fb206f, 0x226f0dac,
+    0x4ce316ed, 0x5cb486e1, 0x32389da0, 0x81acb063, 0xef20ab22,
+    0x3df5eda4, 0x5379f6e5, 0xe0eddb26, 0x8e61c067, 0xc042fb3e,
+    0xaecee07f, 0x1d5acdbc, 0x73d6d6fd, 0xa103907b, 0xcf8f8b3a,
+    0x7c1ba6f9, 0x1297bdb8, 0x02c02db4, 0x6c4c36f5, 0xdfd81b36,
+    0xb1540077, 0x638146f1, 0x0d0d5db0, 0xbe997073, 0xd0156b32,
+    0x22df06c1, 0x4c531d80, 0xffc73043, 0x914b2b02, 0x439e6d84,
+    0x2d1276c5, 0x9e865b06, 0xf00a4047, 0xe05dd04b, 0x8ed1cb0a,
+    0x3d45e6c9, 0x53c9fd88, 0x811cbb0e, 0xef90a04f, 0x5c048d8c,
+    0x328896cd, 0x7cabad94, 0x1227b6d5, 0xa1b39b16, 0xcf3f8057,
+    0x1deac6d1, 0x7366dd90, 0xc0f2f053, 0xae7eeb12, 0xbe297b1e,
+    0xd0a5605f, 0x63314d9c, 0x0dbd56dd, 0xdf68105b, 0xb1e40b1a,
+    0x027026d9, 0x6cfc3d98, 0x3c95fb7e, 0x5219e03f, 0xe18dcdfc,
+    0x8f01d6bd, 0x5dd4903b, 0x33588b7a, 0x80cca6b9, 0xee40bdf8,
+    0xfe172df4, 0x909b36b5, 0x230f1b76, 0x4d830037, 0x9f5646b1,
+    0xf1da5df0, 0x424e7033, 0x2cc26b72, 0x62e1502b, 0x0c6d4b6a,
+    0xbff966a9, 0xd1757de8, 0x03a03b6e, 0x6d2c202f, 0xdeb80dec,
+    0xb03416ad, 0xa06386a1, 0xceef9de0, 0x7d7bb023, 0x13f7ab62,
+    0xc122ede4, 0xafaef6a5, 0x1c3adb66, 0x72b6c027, 0x807cadd4,
+    0xeef0b695, 0x5d649b56, 0x33e88017, 0xe13dc691, 0x8fb1ddd0,
+    0x3c25f013, 0x52a9eb52, 0x42fe7b5e, 0x2c72601f, 0x9fe64ddc,
+    0xf16a569d, 0x23bf101b, 0x4d330b5a, 0xfea72699, 0x902b3dd8,
+    0xde080681, 0xb0841dc0, 0x03103003, 0x6d9c2b42, 0xbf496dc4,
+    0xd1c57685, 0x62515b46, 0x0cdd4007, 0x1c8ad00b, 0x7206cb4a,
+    0xc192e689, 0xaf1efdc8, 0x7dcbbb4e, 0x1347a00f, 0xa0d38dcc,
+    0xce5f968d},
+   {0x00000000, 0xe71da697, 0x154a4b6f, 0xf257edf8, 0x2a9496de,
+    0xcd893049, 0x3fdeddb1, 0xd8c37b26, 0x55292dbc, 0xb2348b2b,
+    0x406366d3, 0xa77ec044, 0x7fbdbb62, 0x98a01df5, 0x6af7f00d,
+    0x8dea569a, 0xaa525b78, 0x4d4ffdef, 0xbf181017, 0x5805b680,
+    0x80c6cda6, 0x67db6b31, 0x958c86c9, 0x7291205e, 0xff7b76c4,
+    0x1866d053, 0xea313dab, 0x0d2c9b3c, 0xd5efe01a, 0x32f2468d,
+    0xc0a5ab75, 0x27b80de2, 0x8fd5b0b1, 0x68c81626, 0x9a9ffbde,
+    0x7d825d49, 0xa541266f, 0x425c80f8, 0xb00b6d00, 0x5716cb97,
+    0xdafc9d0d, 0x3de13b9a, 0xcfb6d662, 0x28ab70f5, 0xf0680bd3,
+    0x1775ad44, 0xe52240bc, 0x023fe62b, 0x2587ebc9, 0xc29a4d5e,
+    0x30cda0a6, 0xd7d00631, 0x0f137d17, 0xe80edb80, 0x1a593678,
+    0xfd4490ef, 0x70aec675, 0x97b360e2, 0x65e48d1a, 0x82f92b8d,
+    0x5a3a50ab, 0xbd27f63c, 0x4f701bc4, 0xa86dbd53, 0xc4da6723,
+    0x23c7c1b4, 0xd1902c4c, 0x368d8adb, 0xee4ef1fd, 0x0953576a,
+    0xfb04ba92, 0x1c191c05, 0x91f34a9f, 0x76eeec08, 0x84b901f0,
+    0x63a4a767, 0xbb67dc41, 0x5c7a7ad6, 0xae2d972e, 0x493031b9,
+    0x6e883c5b, 0x89959acc, 0x7bc27734, 0x9cdfd1a3, 0x441caa85,
+    0xa3010c12, 0x5156e1ea, 0xb64b477d, 0x3ba111e7, 0xdcbcb770,
+    0x2eeb5a88, 0xc9f6fc1f, 0x11358739, 0xf62821ae, 0x047fcc56,
+    0xe3626ac1, 0x4b0fd792, 0xac127105, 0x5e459cfd, 0xb9583a6a,
+    0x619b414c, 0x8686e7db, 0x74d10a23, 0x93ccacb4, 0x1e26fa2e,
+    0xf93b5cb9, 0x0b6cb141, 0xec7117d6, 0x34b26cf0, 0xd3afca67,
+    0x21f8279f, 0xc6e58108, 0xe15d8cea, 0x06402a7d, 0xf417c785,
+    0x130a6112, 0xcbc91a34, 0x2cd4bca3, 0xde83515b, 0x399ef7cc,
+    0xb474a156, 0x536907c1, 0xa13eea39, 0x46234cae, 0x9ee03788,
+    0x79fd911f, 0x8baa7ce7, 0x6cb7da70, 0x52c5c807, 0xb5d86e90,
+    0x478f8368, 0xa09225ff, 0x78515ed9, 0x9f4cf84e, 0x6d1b15b6,
+    0x8a06b321, 0x07ece5bb, 0xe0f1432c, 0x12a6aed4, 0xf5bb0843,
+    0x2d787365, 0xca65d5f2, 0x3832380a, 0xdf2f9e9d, 0xf897937f,
+    0x1f8a35e8, 0xedddd810, 0x0ac07e87, 0xd20305a1, 0x351ea336,
+    0xc7494ece, 0x2054e859, 0xadbebec3, 0x4aa31854, 0xb8f4f5ac,
+    0x5fe9533b, 0x872a281d, 0x60378e8a, 0x92606372, 0x757dc5e5,
+    0xdd1078b6, 0x3a0dde21, 0xc85a33d9, 0x2f47954e, 0xf784ee68,
+    0x109948ff, 0xe2cea507, 0x05d30390, 0x8839550a, 0x6f24f39d,
+    0x9d731e65, 0x7a6eb8f2, 0xa2adc3d4, 0x45b06543, 0xb7e788bb,
+    0x50fa2e2c, 0x774223ce, 0x905f8559, 0x620868a1, 0x8515ce36,
+    0x5dd6b510, 0xbacb1387, 0x489cfe7f, 0xaf8158e8, 0x226b0e72,
+    0xc576a8e5, 0x3721451d, 0xd03ce38a, 0x08ff98ac, 0xefe23e3b,
+    0x1db5d3c3, 0xfaa87554, 0x961faf24, 0x710209b3, 0x8355e44b,
+    0x644842dc, 0xbc8b39fa, 0x5b969f6d, 0xa9c17295, 0x4edcd402,
+    0xc3368298, 0x242b240f, 0xd67cc9f7, 0x31616f60, 0xe9a21446,
+    0x0ebfb2d1, 0xfce85f29, 0x1bf5f9be, 0x3c4df45c, 0xdb5052cb,
+    0x2907bf33, 0xce1a19a4, 0x16d96282, 0xf1c4c415, 0x039329ed,
+    0xe48e8f7a, 0x6964d9e0, 0x8e797f77, 0x7c2e928f, 0x9b333418,
+    0x43f04f3e, 0xa4ede9a9, 0x56ba0451, 0xb1a7a2c6, 0x19ca1f95,
+    0xfed7b902, 0x0c8054fa, 0xeb9df26d, 0x335e894b, 0xd4432fdc,
+    0x2614c224, 0xc10964b3, 0x4ce33229, 0xabfe94be, 0x59a97946,
+    0xbeb4dfd1, 0x6677a4f7, 0x816a0260, 0x733def98, 0x9420490f,
+    0xb39844ed, 0x5485e27a, 0xa6d20f82, 0x41cfa915, 0x990cd233,
+    0x7e1174a4, 0x8c46995c, 0x6b5b3fcb, 0xe6b16951, 0x01accfc6,
+    0xf3fb223e, 0x14e684a9, 0xcc25ff8f, 0x2b385918, 0xd96fb4e0,
+    0x3e721277},
+   {0x00000000, 0xa58b900e, 0x9066265d, 0x35edb653, 0xfbbd4afb,
+    0x5e36daf5, 0x6bdb6ca6, 0xce50fca8, 0x2c0b93b7, 0x898003b9,
+    0xbc6db5ea, 0x19e625e4, 0xd7b6d94c, 0x723d4942, 0x47d0ff11,
+    0xe25b6f1f, 0x5817276e, 0xfd9cb760, 0xc8710133, 0x6dfa913d,
+    0xa3aa6d95, 0x0621fd9b, 0x33cc4bc8, 0x9647dbc6, 0x741cb4d9,
+    0xd19724d7, 0xe47a9284, 0x41f1028a, 0x8fa1fe22, 0x2a2a6e2c,
+    0x1fc7d87f, 0xba4c4871, 0xb02e4edc, 0x15a5ded2, 0x20486881,
+    0x85c3f88f, 0x4b930427, 0xee189429, 0xdbf5227a, 0x7e7eb274,
+    0x9c25dd6b, 0x39ae4d65, 0x0c43fb36, 0xa9c86b38, 0x67989790,
+    0xc213079e, 0xf7feb1cd, 0x527521c3, 0xe83969b2, 0x4db2f9bc,
+    0x785f4fef, 0xddd4dfe1, 0x13842349, 0xb60fb347, 0x83e20514,
+    0x2669951a, 0xc432fa05, 0x61b96a0b, 0x5454dc58, 0xf1df4c56,
+    0x3f8fb0fe, 0x9a0420f0, 0xafe996a3, 0x0a6206ad, 0xbb2d9bf9,
+    0x1ea60bf7, 0x2b4bbda4, 0x8ec02daa, 0x4090d102, 0xe51b410c,
+    0xd0f6f75f, 0x757d6751, 0x9726084e, 0x32ad9840, 0x07402e13,
+    0xa2cbbe1d, 0x6c9b42b5, 0xc910d2bb, 0xfcfd64e8, 0x5976f4e6,
+    0xe33abc97, 0x46b12c99, 0x735c9aca, 0xd6d70ac4, 0x1887f66c,
+    0xbd0c6662, 0x88e1d031, 0x2d6a403f, 0xcf312f20, 0x6ababf2e,
+    0x5f57097d, 0xfadc9973, 0x348c65db, 0x9107f5d5, 0xa4ea4386,
+    0x0161d388, 0x0b03d525, 0xae88452b, 0x9b65f378, 0x3eee6376,
+    0xf0be9fde, 0x55350fd0, 0x60d8b983, 0xc553298d, 0x27084692,
+    0x8283d69c, 0xb76e60cf, 0x12e5f0c1, 0xdcb50c69, 0x793e9c67,
+    0x4cd32a34, 0xe958ba3a, 0x5314f24b, 0xf69f6245, 0xc372d416,
+    0x66f94418, 0xa8a9b8b0, 0x0d2228be, 0x38cf9eed, 0x9d440ee3,
+    0x7f1f61fc, 0xda94f1f2, 0xef7947a1, 0x4af2d7af, 0x84a22b07,
+    0x2129bb09, 0x14c40d5a, 0xb14f9d54, 0xad2a31b3, 0x08a1a1bd,
+    0x3d4c17ee, 0x98c787e0, 0x56977b48, 0xf31ceb46, 0xc6f15d15,
+    0x637acd1b, 0x8121a204, 0x24aa320a, 0x11478459, 0xb4cc1457,
+    0x7a9ce8ff, 0xdf1778f1, 0xeafacea2, 0x4f715eac, 0xf53d16dd,
+    0x50b686d3, 0x655b3080, 0xc0d0a08e, 0x0e805c26, 0xab0bcc28,
+    0x9ee67a7b, 0x3b6dea75, 0xd936856a, 0x7cbd1564, 0x4950a337,
+    0xecdb3339, 0x228bcf91, 0x87005f9f, 0xb2ede9cc, 0x176679c2,
+    0x1d047f6f, 0xb88fef61, 0x8d625932, 0x28e9c93c, 0xe6b93594,
+    0x4332a59a, 0x76df13c9, 0xd35483c7, 0x310fecd8, 0x94847cd6,
+    0xa169ca85, 0x04e25a8b, 0xcab2a623, 0x6f39362d, 0x5ad4807e,
+    0xff5f1070, 0x45135801, 0xe098c80f, 0xd5757e5c, 0x70feee52,
+    0xbeae12fa, 0x1b2582f4, 0x2ec834a7, 0x8b43a4a9, 0x6918cbb6,
+    0xcc935bb8, 0xf97eedeb, 0x5cf57de5, 0x92a5814d, 0x372e1143,
+    0x02c3a710, 0xa748371e, 0x1607aa4a, 0xb38c3a44, 0x86618c17,
+    0x23ea1c19, 0xedbae0b1, 0x483170bf, 0x7ddcc6ec, 0xd85756e2,
+    0x3a0c39fd, 0x9f87a9f3, 0xaa6a1fa0, 0x0fe18fae, 0xc1b17306,
+    0x643ae308, 0x51d7555b, 0xf45cc555, 0x4e108d24, 0xeb9b1d2a,
+    0xde76ab79, 0x7bfd3b77, 0xb5adc7df, 0x102657d1, 0x25cbe182,
+    0x8040718c, 0x621b1e93, 0xc7908e9d, 0xf27d38ce, 0x57f6a8c0,
+    0x99a65468, 0x3c2dc466, 0x09c07235, 0xac4be23b, 0xa629e496,
+    0x03a27498, 0x364fc2cb, 0x93c452c5, 0x5d94ae6d, 0xf81f3e63,
+    0xcdf28830, 0x6879183e, 0x8a227721, 0x2fa9e72f, 0x1a44517c,
+    0xbfcfc172, 0x719f3dda, 0xd414add4, 0xe1f91b87, 0x44728b89,
+    0xfe3ec3f8, 0x5bb553f6, 0x6e58e5a5, 0xcbd375ab, 0x05838903,
+    0xa008190d, 0x95e5af5e, 0x306e3f50, 0xd235504f, 0x77bec041,
+    0x42537612, 0xe7d8e61c, 0x29881ab4, 0x8c038aba, 0xb9ee3ce9,
+    0x1c65ace7}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0x0e908ba500000000, 0x5d26669000000000,
+    0x53b6ed3500000000, 0xfb4abdfb00000000, 0xf5da365e00000000,
+    0xa66cdb6b00000000, 0xa8fc50ce00000000, 0xb7930b2c00000000,
+    0xb903808900000000, 0xeab56dbc00000000, 0xe425e61900000000,
+    0x4cd9b6d700000000, 0x42493d7200000000, 0x11ffd04700000000,
+    0x1f6f5be200000000, 0x6e27175800000000, 0x60b79cfd00000000,
+    0x330171c800000000, 0x3d91fa6d00000000, 0x956daaa300000000,
+    0x9bfd210600000000, 0xc84bcc3300000000, 0xc6db479600000000,
+    0xd9b41c7400000000, 0xd72497d100000000, 0x84927ae400000000,
+    0x8a02f14100000000, 0x22fea18f00000000, 0x2c6e2a2a00000000,
+    0x7fd8c71f00000000, 0x71484cba00000000, 0xdc4e2eb000000000,
+    0xd2dea51500000000, 0x8168482000000000, 0x8ff8c38500000000,
+    0x2704934b00000000, 0x299418ee00000000, 0x7a22f5db00000000,
+    0x74b27e7e00000000, 0x6bdd259c00000000, 0x654dae3900000000,
+    0x36fb430c00000000, 0x386bc8a900000000, 0x9097986700000000,
+    0x9e0713c200000000, 0xcdb1fef700000000, 0xc321755200000000,
+    0xb26939e800000000, 0xbcf9b24d00000000, 0xef4f5f7800000000,
+    0xe1dfd4dd00000000, 0x4923841300000000, 0x47b30fb600000000,
+    0x1405e28300000000, 0x1a95692600000000, 0x05fa32c400000000,
+    0x0b6ab96100000000, 0x58dc545400000000, 0x564cdff100000000,
+    0xfeb08f3f00000000, 0xf020049a00000000, 0xa396e9af00000000,
+    0xad06620a00000000, 0xf99b2dbb00000000, 0xf70ba61e00000000,
+    0xa4bd4b2b00000000, 0xaa2dc08e00000000, 0x02d1904000000000,
+    0x0c411be500000000, 0x5ff7f6d000000000, 0x51677d7500000000,
+    0x4e08269700000000, 0x4098ad3200000000, 0x132e400700000000,
+    0x1dbecba200000000, 0xb5429b6c00000000, 0xbbd210c900000000,
+    0xe864fdfc00000000, 0xe6f4765900000000, 0x97bc3ae300000000,
+    0x992cb14600000000, 0xca9a5c7300000000, 0xc40ad7d600000000,
+    0x6cf6871800000000, 0x62660cbd00000000, 0x31d0e18800000000,
+    0x3f406a2d00000000, 0x202f31cf00000000, 0x2ebfba6a00000000,
+    0x7d09575f00000000, 0x7399dcfa00000000, 0xdb658c3400000000,
+    0xd5f5079100000000, 0x8643eaa400000000, 0x88d3610100000000,
+    0x25d5030b00000000, 0x2b4588ae00000000, 0x78f3659b00000000,
+    0x7663ee3e00000000, 0xde9fbef000000000, 0xd00f355500000000,
+    0x83b9d86000000000, 0x8d2953c500000000, 0x9246082700000000,
+    0x9cd6838200000000, 0xcf606eb700000000, 0xc1f0e51200000000,
+    0x690cb5dc00000000, 0x679c3e7900000000, 0x342ad34c00000000,
+    0x3aba58e900000000, 0x4bf2145300000000, 0x45629ff600000000,
+    0x16d472c300000000, 0x1844f96600000000, 0xb0b8a9a800000000,
+    0xbe28220d00000000, 0xed9ecf3800000000, 0xe30e449d00000000,
+    0xfc611f7f00000000, 0xf2f194da00000000, 0xa14779ef00000000,
+    0xafd7f24a00000000, 0x072ba28400000000, 0x09bb292100000000,
+    0x5a0dc41400000000, 0x549d4fb100000000, 0xb3312aad00000000,
+    0xbda1a10800000000, 0xee174c3d00000000, 0xe087c79800000000,
+    0x487b975600000000, 0x46eb1cf300000000, 0x155df1c600000000,
+    0x1bcd7a6300000000, 0x04a2218100000000, 0x0a32aa2400000000,
+    0x5984471100000000, 0x5714ccb400000000, 0xffe89c7a00000000,
+    0xf17817df00000000, 0xa2cefaea00000000, 0xac5e714f00000000,
+    0xdd163df500000000, 0xd386b65000000000, 0x80305b6500000000,
+    0x8ea0d0c000000000, 0x265c800e00000000, 0x28cc0bab00000000,
+    0x7b7ae69e00000000, 0x75ea6d3b00000000, 0x6a8536d900000000,
+    0x6415bd7c00000000, 0x37a3504900000000, 0x3933dbec00000000,
+    0x91cf8b2200000000, 0x9f5f008700000000, 0xcce9edb200000000,
+    0xc279661700000000, 0x6f7f041d00000000, 0x61ef8fb800000000,
+    0x3259628d00000000, 0x3cc9e92800000000, 0x9435b9e600000000,
+    0x9aa5324300000000, 0xc913df7600000000, 0xc78354d300000000,
+    0xd8ec0f3100000000, 0xd67c849400000000, 0x85ca69a100000000,
+    0x8b5ae20400000000, 0x23a6b2ca00000000, 0x2d36396f00000000,
+    0x7e80d45a00000000, 0x70105fff00000000, 0x0158134500000000,
+    0x0fc898e000000000, 0x5c7e75d500000000, 0x52eefe7000000000,
+    0xfa12aebe00000000, 0xf482251b00000000, 0xa734c82e00000000,
+    0xa9a4438b00000000, 0xb6cb186900000000, 0xb85b93cc00000000,
+    0xebed7ef900000000, 0xe57df55c00000000, 0x4d81a59200000000,
+    0x43112e3700000000, 0x10a7c30200000000, 0x1e3748a700000000,
+    0x4aaa071600000000, 0x443a8cb300000000, 0x178c618600000000,
+    0x191cea2300000000, 0xb1e0baed00000000, 0xbf70314800000000,
+    0xecc6dc7d00000000, 0xe25657d800000000, 0xfd390c3a00000000,
+    0xf3a9879f00000000, 0xa01f6aaa00000000, 0xae8fe10f00000000,
+    0x0673b1c100000000, 0x08e33a6400000000, 0x5b55d75100000000,
+    0x55c55cf400000000, 0x248d104e00000000, 0x2a1d9beb00000000,
+    0x79ab76de00000000, 0x773bfd7b00000000, 0xdfc7adb500000000,
+    0xd157261000000000, 0x82e1cb2500000000, 0x8c71408000000000,
+    0x931e1b6200000000, 0x9d8e90c700000000, 0xce387df200000000,
+    0xc0a8f65700000000, 0x6854a69900000000, 0x66c42d3c00000000,
+    0x3572c00900000000, 0x3be24bac00000000, 0x96e429a600000000,
+    0x9874a20300000000, 0xcbc24f3600000000, 0xc552c49300000000,
+    0x6dae945d00000000, 0x633e1ff800000000, 0x3088f2cd00000000,
+    0x3e18796800000000, 0x2177228a00000000, 0x2fe7a92f00000000,
+    0x7c51441a00000000, 0x72c1cfbf00000000, 0xda3d9f7100000000,
+    0xd4ad14d400000000, 0x871bf9e100000000, 0x898b724400000000,
+    0xf8c33efe00000000, 0xf653b55b00000000, 0xa5e5586e00000000,
+    0xab75d3cb00000000, 0x0389830500000000, 0x0d1908a000000000,
+    0x5eafe59500000000, 0x503f6e3000000000, 0x4f5035d200000000,
+    0x41c0be7700000000, 0x1276534200000000, 0x1ce6d8e700000000,
+    0xb41a882900000000, 0xba8a038c00000000, 0xe93ceeb900000000,
+    0xe7ac651c00000000},
+   {0x0000000000000000, 0x97a61de700000000, 0x6f4b4a1500000000,
+    0xf8ed57f200000000, 0xde96942a00000000, 0x493089cd00000000,
+    0xb1ddde3f00000000, 0x267bc3d800000000, 0xbc2d295500000000,
+    0x2b8b34b200000000, 0xd366634000000000, 0x44c07ea700000000,
+    0x62bbbd7f00000000, 0xf51da09800000000, 0x0df0f76a00000000,
+    0x9a56ea8d00000000, 0x785b52aa00000000, 0xeffd4f4d00000000,
+    0x171018bf00000000, 0x80b6055800000000, 0xa6cdc68000000000,
+    0x316bdb6700000000, 0xc9868c9500000000, 0x5e20917200000000,
+    0xc4767bff00000000, 0x53d0661800000000, 0xab3d31ea00000000,
+    0x3c9b2c0d00000000, 0x1ae0efd500000000, 0x8d46f23200000000,
+    0x75aba5c000000000, 0xe20db82700000000, 0xb1b0d58f00000000,
+    0x2616c86800000000, 0xdefb9f9a00000000, 0x495d827d00000000,
+    0x6f2641a500000000, 0xf8805c4200000000, 0x006d0bb000000000,
+    0x97cb165700000000, 0x0d9dfcda00000000, 0x9a3be13d00000000,
+    0x62d6b6cf00000000, 0xf570ab2800000000, 0xd30b68f000000000,
+    0x44ad751700000000, 0xbc4022e500000000, 0x2be63f0200000000,
+    0xc9eb872500000000, 0x5e4d9ac200000000, 0xa6a0cd3000000000,
+    0x3106d0d700000000, 0x177d130f00000000, 0x80db0ee800000000,
+    0x7836591a00000000, 0xef9044fd00000000, 0x75c6ae7000000000,
+    0xe260b39700000000, 0x1a8de46500000000, 0x8d2bf98200000000,
+    0xab503a5a00000000, 0x3cf627bd00000000, 0xc41b704f00000000,
+    0x53bd6da800000000, 0x2367dac400000000, 0xb4c1c72300000000,
+    0x4c2c90d100000000, 0xdb8a8d3600000000, 0xfdf14eee00000000,
+    0x6a57530900000000, 0x92ba04fb00000000, 0x051c191c00000000,
+    0x9f4af39100000000, 0x08ecee7600000000, 0xf001b98400000000,
+    0x67a7a46300000000, 0x41dc67bb00000000, 0xd67a7a5c00000000,
+    0x2e972dae00000000, 0xb931304900000000, 0x5b3c886e00000000,
+    0xcc9a958900000000, 0x3477c27b00000000, 0xa3d1df9c00000000,
+    0x85aa1c4400000000, 0x120c01a300000000, 0xeae1565100000000,
+    0x7d474bb600000000, 0xe711a13b00000000, 0x70b7bcdc00000000,
+    0x885aeb2e00000000, 0x1ffcf6c900000000, 0x3987351100000000,
+    0xae2128f600000000, 0x56cc7f0400000000, 0xc16a62e300000000,
+    0x92d70f4b00000000, 0x057112ac00000000, 0xfd9c455e00000000,
+    0x6a3a58b900000000, 0x4c419b6100000000, 0xdbe7868600000000,
+    0x230ad17400000000, 0xb4accc9300000000, 0x2efa261e00000000,
+    0xb95c3bf900000000, 0x41b16c0b00000000, 0xd61771ec00000000,
+    0xf06cb23400000000, 0x67caafd300000000, 0x9f27f82100000000,
+    0x0881e5c600000000, 0xea8c5de100000000, 0x7d2a400600000000,
+    0x85c717f400000000, 0x12610a1300000000, 0x341ac9cb00000000,
+    0xa3bcd42c00000000, 0x5b5183de00000000, 0xccf79e3900000000,
+    0x56a174b400000000, 0xc107695300000000, 0x39ea3ea100000000,
+    0xae4c234600000000, 0x8837e09e00000000, 0x1f91fd7900000000,
+    0xe77caa8b00000000, 0x70dab76c00000000, 0x07c8c55200000000,
+    0x906ed8b500000000, 0x68838f4700000000, 0xff2592a000000000,
+    0xd95e517800000000, 0x4ef84c9f00000000, 0xb6151b6d00000000,
+    0x21b3068a00000000, 0xbbe5ec0700000000, 0x2c43f1e000000000,
+    0xd4aea61200000000, 0x4308bbf500000000, 0x6573782d00000000,
+    0xf2d565ca00000000, 0x0a38323800000000, 0x9d9e2fdf00000000,
+    0x7f9397f800000000, 0xe8358a1f00000000, 0x10d8dded00000000,
+    0x877ec00a00000000, 0xa10503d200000000, 0x36a31e3500000000,
+    0xce4e49c700000000, 0x59e8542000000000, 0xc3bebead00000000,
+    0x5418a34a00000000, 0xacf5f4b800000000, 0x3b53e95f00000000,
+    0x1d282a8700000000, 0x8a8e376000000000, 0x7263609200000000,
+    0xe5c57d7500000000, 0xb67810dd00000000, 0x21de0d3a00000000,
+    0xd9335ac800000000, 0x4e95472f00000000, 0x68ee84f700000000,
+    0xff48991000000000, 0x07a5cee200000000, 0x9003d30500000000,
+    0x0a55398800000000, 0x9df3246f00000000, 0x651e739d00000000,
+    0xf2b86e7a00000000, 0xd4c3ada200000000, 0x4365b04500000000,
+    0xbb88e7b700000000, 0x2c2efa5000000000, 0xce23427700000000,
+    0x59855f9000000000, 0xa168086200000000, 0x36ce158500000000,
+    0x10b5d65d00000000, 0x8713cbba00000000, 0x7ffe9c4800000000,
+    0xe85881af00000000, 0x720e6b2200000000, 0xe5a876c500000000,
+    0x1d45213700000000, 0x8ae33cd000000000, 0xac98ff0800000000,
+    0x3b3ee2ef00000000, 0xc3d3b51d00000000, 0x5475a8fa00000000,
+    0x24af1f9600000000, 0xb309027100000000, 0x4be4558300000000,
+    0xdc42486400000000, 0xfa398bbc00000000, 0x6d9f965b00000000,
+    0x9572c1a900000000, 0x02d4dc4e00000000, 0x988236c300000000,
+    0x0f242b2400000000, 0xf7c97cd600000000, 0x606f613100000000,
+    0x4614a2e900000000, 0xd1b2bf0e00000000, 0x295fe8fc00000000,
+    0xbef9f51b00000000, 0x5cf44d3c00000000, 0xcb5250db00000000,
+    0x33bf072900000000, 0xa4191ace00000000, 0x8262d91600000000,
+    0x15c4c4f100000000, 0xed29930300000000, 0x7a8f8ee400000000,
+    0xe0d9646900000000, 0x777f798e00000000, 0x8f922e7c00000000,
+    0x1834339b00000000, 0x3e4ff04300000000, 0xa9e9eda400000000,
+    0x5104ba5600000000, 0xc6a2a7b100000000, 0x951fca1900000000,
+    0x02b9d7fe00000000, 0xfa54800c00000000, 0x6df29deb00000000,
+    0x4b895e3300000000, 0xdc2f43d400000000, 0x24c2142600000000,
+    0xb36409c100000000, 0x2932e34c00000000, 0xbe94feab00000000,
+    0x4679a95900000000, 0xd1dfb4be00000000, 0xf7a4776600000000,
+    0x60026a8100000000, 0x98ef3d7300000000, 0x0f49209400000000,
+    0xed4498b300000000, 0x7ae2855400000000, 0x820fd2a600000000,
+    0x15a9cf4100000000, 0x33d20c9900000000, 0xa474117e00000000,
+    0x5c99468c00000000, 0xcb3f5b6b00000000, 0x5169b1e600000000,
+    0xc6cfac0100000000, 0x3e22fbf300000000, 0xa984e61400000000,
+    0x8fff25cc00000000, 0x1859382b00000000, 0xe0b46fd900000000,
+    0x7712723e00000000},
+   {0x0000000000000000, 0x411b8c6e00000000, 0x823618dd00000000,
+    0xc32d94b300000000, 0x456b416100000000, 0x0470cd0f00000000,
+    0xc75d59bc00000000, 0x8646d5d200000000, 0x8ad682c200000000,
+    0xcbcd0eac00000000, 0x08e09a1f00000000, 0x49fb167100000000,
+    0xcfbdc3a300000000, 0x8ea64fcd00000000, 0x4d8bdb7e00000000,
+    0x0c90571000000000, 0x55ab745e00000000, 0x14b0f83000000000,
+    0xd79d6c8300000000, 0x9686e0ed00000000, 0x10c0353f00000000,
+    0x51dbb95100000000, 0x92f62de200000000, 0xd3eda18c00000000,
+    0xdf7df69c00000000, 0x9e667af200000000, 0x5d4bee4100000000,
+    0x1c50622f00000000, 0x9a16b7fd00000000, 0xdb0d3b9300000000,
+    0x1820af2000000000, 0x593b234e00000000, 0xaa56e9bc00000000,
+    0xeb4d65d200000000, 0x2860f16100000000, 0x697b7d0f00000000,
+    0xef3da8dd00000000, 0xae2624b300000000, 0x6d0bb00000000000,
+    0x2c103c6e00000000, 0x20806b7e00000000, 0x619be71000000000,
+    0xa2b673a300000000, 0xe3adffcd00000000, 0x65eb2a1f00000000,
+    0x24f0a67100000000, 0xe7dd32c200000000, 0xa6c6beac00000000,
+    0xfffd9de200000000, 0xbee6118c00000000, 0x7dcb853f00000000,
+    0x3cd0095100000000, 0xba96dc8300000000, 0xfb8d50ed00000000,
+    0x38a0c45e00000000, 0x79bb483000000000, 0x752b1f2000000000,
+    0x3430934e00000000, 0xf71d07fd00000000, 0xb6068b9300000000,
+    0x30405e4100000000, 0x715bd22f00000000, 0xb276469c00000000,
+    0xf36dcaf200000000, 0x15aba3a200000000, 0x54b02fcc00000000,
+    0x979dbb7f00000000, 0xd686371100000000, 0x50c0e2c300000000,
+    0x11db6ead00000000, 0xd2f6fa1e00000000, 0x93ed767000000000,
+    0x9f7d216000000000, 0xde66ad0e00000000, 0x1d4b39bd00000000,
+    0x5c50b5d300000000, 0xda16600100000000, 0x9b0dec6f00000000,
+    0x582078dc00000000, 0x193bf4b200000000, 0x4000d7fc00000000,
+    0x011b5b9200000000, 0xc236cf2100000000, 0x832d434f00000000,
+    0x056b969d00000000, 0x44701af300000000, 0x875d8e4000000000,
+    0xc646022e00000000, 0xcad6553e00000000, 0x8bcdd95000000000,
+    0x48e04de300000000, 0x09fbc18d00000000, 0x8fbd145f00000000,
+    0xcea6983100000000, 0x0d8b0c8200000000, 0x4c9080ec00000000,
+    0xbffd4a1e00000000, 0xfee6c67000000000, 0x3dcb52c300000000,
+    0x7cd0dead00000000, 0xfa960b7f00000000, 0xbb8d871100000000,
+    0x78a013a200000000, 0x39bb9fcc00000000, 0x352bc8dc00000000,
+    0x743044b200000000, 0xb71dd00100000000, 0xf6065c6f00000000,
+    0x704089bd00000000, 0x315b05d300000000, 0xf276916000000000,
+    0xb36d1d0e00000000, 0xea563e4000000000, 0xab4db22e00000000,
+    0x6860269d00000000, 0x297baaf300000000, 0xaf3d7f2100000000,
+    0xee26f34f00000000, 0x2d0b67fc00000000, 0x6c10eb9200000000,
+    0x6080bc8200000000, 0x219b30ec00000000, 0xe2b6a45f00000000,
+    0xa3ad283100000000, 0x25ebfde300000000, 0x64f0718d00000000,
+    0xa7dde53e00000000, 0xe6c6695000000000, 0x6b50369e00000000,
+    0x2a4bbaf000000000, 0xe9662e4300000000, 0xa87da22d00000000,
+    0x2e3b77ff00000000, 0x6f20fb9100000000, 0xac0d6f2200000000,
+    0xed16e34c00000000, 0xe186b45c00000000, 0xa09d383200000000,
+    0x63b0ac8100000000, 0x22ab20ef00000000, 0xa4edf53d00000000,
+    0xe5f6795300000000, 0x26dbede000000000, 0x67c0618e00000000,
+    0x3efb42c000000000, 0x7fe0ceae00000000, 0xbccd5a1d00000000,
+    0xfdd6d67300000000, 0x7b9003a100000000, 0x3a8b8fcf00000000,
+    0xf9a61b7c00000000, 0xb8bd971200000000, 0xb42dc00200000000,
+    0xf5364c6c00000000, 0x361bd8df00000000, 0x770054b100000000,
+    0xf146816300000000, 0xb05d0d0d00000000, 0x737099be00000000,
+    0x326b15d000000000, 0xc106df2200000000, 0x801d534c00000000,
+    0x4330c7ff00000000, 0x022b4b9100000000, 0x846d9e4300000000,
+    0xc576122d00000000, 0x065b869e00000000, 0x47400af000000000,
+    0x4bd05de000000000, 0x0acbd18e00000000, 0xc9e6453d00000000,
+    0x88fdc95300000000, 0x0ebb1c8100000000, 0x4fa090ef00000000,
+    0x8c8d045c00000000, 0xcd96883200000000, 0x94adab7c00000000,
+    0xd5b6271200000000, 0x169bb3a100000000, 0x57803fcf00000000,
+    0xd1c6ea1d00000000, 0x90dd667300000000, 0x53f0f2c000000000,
+    0x12eb7eae00000000, 0x1e7b29be00000000, 0x5f60a5d000000000,
+    0x9c4d316300000000, 0xdd56bd0d00000000, 0x5b1068df00000000,
+    0x1a0be4b100000000, 0xd926700200000000, 0x983dfc6c00000000,
+    0x7efb953c00000000, 0x3fe0195200000000, 0xfccd8de100000000,
+    0xbdd6018f00000000, 0x3b90d45d00000000, 0x7a8b583300000000,
+    0xb9a6cc8000000000, 0xf8bd40ee00000000, 0xf42d17fe00000000,
+    0xb5369b9000000000, 0x761b0f2300000000, 0x3700834d00000000,
+    0xb146569f00000000, 0xf05ddaf100000000, 0x33704e4200000000,
+    0x726bc22c00000000, 0x2b50e16200000000, 0x6a4b6d0c00000000,
+    0xa966f9bf00000000, 0xe87d75d100000000, 0x6e3ba00300000000,
+    0x2f202c6d00000000, 0xec0db8de00000000, 0xad1634b000000000,
+    0xa18663a000000000, 0xe09defce00000000, 0x23b07b7d00000000,
+    0x62abf71300000000, 0xe4ed22c100000000, 0xa5f6aeaf00000000,
+    0x66db3a1c00000000, 0x27c0b67200000000, 0xd4ad7c8000000000,
+    0x95b6f0ee00000000, 0x569b645d00000000, 0x1780e83300000000,
+    0x91c63de100000000, 0xd0ddb18f00000000, 0x13f0253c00000000,
+    0x52eba95200000000, 0x5e7bfe4200000000, 0x1f60722c00000000,
+    0xdc4de69f00000000, 0x9d566af100000000, 0x1b10bf2300000000,
+    0x5a0b334d00000000, 0x9926a7fe00000000, 0xd83d2b9000000000,
+    0x810608de00000000, 0xc01d84b000000000, 0x0330100300000000,
+    0x422b9c6d00000000, 0xc46d49bf00000000, 0x8576c5d100000000,
+    0x465b516200000000, 0x0740dd0c00000000, 0x0bd08a1c00000000,
+    0x4acb067200000000, 0x89e692c100000000, 0xc8fd1eaf00000000,
+    0x4ebbcb7d00000000, 0x0fa0471300000000, 0xcc8dd3a000000000,
+    0x8d965fce00000000},
+   {0x0000000000000000, 0x1dfdb50100000000, 0x3afa6b0300000000,
+    0x2707de0200000000, 0x74f4d70600000000, 0x6909620700000000,
+    0x4e0ebc0500000000, 0x53f3090400000000, 0xe8e8af0d00000000,
+    0xf5151a0c00000000, 0xd212c40e00000000, 0xcfef710f00000000,
+    0x9c1c780b00000000, 0x81e1cd0a00000000, 0xa6e6130800000000,
+    0xbb1ba60900000000, 0xd0d15f1b00000000, 0xcd2cea1a00000000,
+    0xea2b341800000000, 0xf7d6811900000000, 0xa425881d00000000,
+    0xb9d83d1c00000000, 0x9edfe31e00000000, 0x8322561f00000000,
+    0x3839f01600000000, 0x25c4451700000000, 0x02c39b1500000000,
+    0x1f3e2e1400000000, 0x4ccd271000000000, 0x5130921100000000,
+    0x76374c1300000000, 0x6bcaf91200000000, 0xa0a3bf3600000000,
+    0xbd5e0a3700000000, 0x9a59d43500000000, 0x87a4613400000000,
+    0xd457683000000000, 0xc9aadd3100000000, 0xeead033300000000,
+    0xf350b63200000000, 0x484b103b00000000, 0x55b6a53a00000000,
+    0x72b17b3800000000, 0x6f4cce3900000000, 0x3cbfc73d00000000,
+    0x2142723c00000000, 0x0645ac3e00000000, 0x1bb8193f00000000,
+    0x7072e02d00000000, 0x6d8f552c00000000, 0x4a888b2e00000000,
+    0x57753e2f00000000, 0x0486372b00000000, 0x197b822a00000000,
+    0x3e7c5c2800000000, 0x2381e92900000000, 0x989a4f2000000000,
+    0x8567fa2100000000, 0xa260242300000000, 0xbf9d912200000000,
+    0xec6e982600000000, 0xf1932d2700000000, 0xd694f32500000000,
+    0xcb69462400000000, 0x40477f6d00000000, 0x5dbaca6c00000000,
+    0x7abd146e00000000, 0x6740a16f00000000, 0x34b3a86b00000000,
+    0x294e1d6a00000000, 0x0e49c36800000000, 0x13b4766900000000,
+    0xa8afd06000000000, 0xb552656100000000, 0x9255bb6300000000,
+    0x8fa80e6200000000, 0xdc5b076600000000, 0xc1a6b26700000000,
+    0xe6a16c6500000000, 0xfb5cd96400000000, 0x9096207600000000,
+    0x8d6b957700000000, 0xaa6c4b7500000000, 0xb791fe7400000000,
+    0xe462f77000000000, 0xf99f427100000000, 0xde989c7300000000,
+    0xc365297200000000, 0x787e8f7b00000000, 0x65833a7a00000000,
+    0x4284e47800000000, 0x5f79517900000000, 0x0c8a587d00000000,
+    0x1177ed7c00000000, 0x3670337e00000000, 0x2b8d867f00000000,
+    0xe0e4c05b00000000, 0xfd19755a00000000, 0xda1eab5800000000,
+    0xc7e31e5900000000, 0x9410175d00000000, 0x89eda25c00000000,
+    0xaeea7c5e00000000, 0xb317c95f00000000, 0x080c6f5600000000,
+    0x15f1da5700000000, 0x32f6045500000000, 0x2f0bb15400000000,
+    0x7cf8b85000000000, 0x61050d5100000000, 0x4602d35300000000,
+    0x5bff665200000000, 0x30359f4000000000, 0x2dc82a4100000000,
+    0x0acff44300000000, 0x1732414200000000, 0x44c1484600000000,
+    0x593cfd4700000000, 0x7e3b234500000000, 0x63c6964400000000,
+    0xd8dd304d00000000, 0xc520854c00000000, 0xe2275b4e00000000,
+    0xffdaee4f00000000, 0xac29e74b00000000, 0xb1d4524a00000000,
+    0x96d38c4800000000, 0x8b2e394900000000, 0x808efeda00000000,
+    0x9d734bdb00000000, 0xba7495d900000000, 0xa78920d800000000,
+    0xf47a29dc00000000, 0xe9879cdd00000000, 0xce8042df00000000,
+    0xd37df7de00000000, 0x686651d700000000, 0x759be4d600000000,
+    0x529c3ad400000000, 0x4f618fd500000000, 0x1c9286d100000000,
+    0x016f33d000000000, 0x2668edd200000000, 0x3b9558d300000000,
+    0x505fa1c100000000, 0x4da214c000000000, 0x6aa5cac200000000,
+    0x77587fc300000000, 0x24ab76c700000000, 0x3956c3c600000000,
+    0x1e511dc400000000, 0x03aca8c500000000, 0xb8b70ecc00000000,
+    0xa54abbcd00000000, 0x824d65cf00000000, 0x9fb0d0ce00000000,
+    0xcc43d9ca00000000, 0xd1be6ccb00000000, 0xf6b9b2c900000000,
+    0xeb4407c800000000, 0x202d41ec00000000, 0x3dd0f4ed00000000,
+    0x1ad72aef00000000, 0x072a9fee00000000, 0x54d996ea00000000,
+    0x492423eb00000000, 0x6e23fde900000000, 0x73de48e800000000,
+    0xc8c5eee100000000, 0xd5385be000000000, 0xf23f85e200000000,
+    0xefc230e300000000, 0xbc3139e700000000, 0xa1cc8ce600000000,
+    0x86cb52e400000000, 0x9b36e7e500000000, 0xf0fc1ef700000000,
+    0xed01abf600000000, 0xca0675f400000000, 0xd7fbc0f500000000,
+    0x8408c9f100000000, 0x99f57cf000000000, 0xbef2a2f200000000,
+    0xa30f17f300000000, 0x1814b1fa00000000, 0x05e904fb00000000,
+    0x22eedaf900000000, 0x3f136ff800000000, 0x6ce066fc00000000,
+    0x711dd3fd00000000, 0x561a0dff00000000, 0x4be7b8fe00000000,
+    0xc0c981b700000000, 0xdd3434b600000000, 0xfa33eab400000000,
+    0xe7ce5fb500000000, 0xb43d56b100000000, 0xa9c0e3b000000000,
+    0x8ec73db200000000, 0x933a88b300000000, 0x28212eba00000000,
+    0x35dc9bbb00000000, 0x12db45b900000000, 0x0f26f0b800000000,
+    0x5cd5f9bc00000000, 0x41284cbd00000000, 0x662f92bf00000000,
+    0x7bd227be00000000, 0x1018deac00000000, 0x0de56bad00000000,
+    0x2ae2b5af00000000, 0x371f00ae00000000, 0x64ec09aa00000000,
+    0x7911bcab00000000, 0x5e1662a900000000, 0x43ebd7a800000000,
+    0xf8f071a100000000, 0xe50dc4a000000000, 0xc20a1aa200000000,
+    0xdff7afa300000000, 0x8c04a6a700000000, 0x91f913a600000000,
+    0xb6fecda400000000, 0xab0378a500000000, 0x606a3e8100000000,
+    0x7d978b8000000000, 0x5a90558200000000, 0x476de08300000000,
+    0x149ee98700000000, 0x09635c8600000000, 0x2e64828400000000,
+    0x3399378500000000, 0x8882918c00000000, 0x957f248d00000000,
+    0xb278fa8f00000000, 0xaf854f8e00000000, 0xfc76468a00000000,
+    0xe18bf38b00000000, 0xc68c2d8900000000, 0xdb71988800000000,
+    0xb0bb619a00000000, 0xad46d49b00000000, 0x8a410a9900000000,
+    0x97bcbf9800000000, 0xc44fb69c00000000, 0xd9b2039d00000000,
+    0xfeb5dd9f00000000, 0xe348689e00000000, 0x5853ce9700000000,
+    0x45ae7b9600000000, 0x62a9a59400000000, 0x7f54109500000000,
+    0x2ca7199100000000, 0x315aac9000000000, 0x165d729200000000,
+    0x0ba0c79300000000},
+   {0x0000000000000000, 0x24d9076300000000, 0x48b20fc600000000,
+    0x6c6b08a500000000, 0xd1626e5700000000, 0xf5bb693400000000,
+    0x99d0619100000000, 0xbd0966f200000000, 0xa2c5dcae00000000,
+    0x861cdbcd00000000, 0xea77d36800000000, 0xceaed40b00000000,
+    0x73a7b2f900000000, 0x577eb59a00000000, 0x3b15bd3f00000000,
+    0x1fccba5c00000000, 0x058dc88600000000, 0x2154cfe500000000,
+    0x4d3fc74000000000, 0x69e6c02300000000, 0xd4efa6d100000000,
+    0xf036a1b200000000, 0x9c5da91700000000, 0xb884ae7400000000,
+    0xa748142800000000, 0x8391134b00000000, 0xeffa1bee00000000,
+    0xcb231c8d00000000, 0x762a7a7f00000000, 0x52f37d1c00000000,
+    0x3e9875b900000000, 0x1a4172da00000000, 0x4b1ce0d600000000,
+    0x6fc5e7b500000000, 0x03aeef1000000000, 0x2777e87300000000,
+    0x9a7e8e8100000000, 0xbea789e200000000, 0xd2cc814700000000,
+    0xf615862400000000, 0xe9d93c7800000000, 0xcd003b1b00000000,
+    0xa16b33be00000000, 0x85b234dd00000000, 0x38bb522f00000000,
+    0x1c62554c00000000, 0x70095de900000000, 0x54d05a8a00000000,
+    0x4e91285000000000, 0x6a482f3300000000, 0x0623279600000000,
+    0x22fa20f500000000, 0x9ff3460700000000, 0xbb2a416400000000,
+    0xd74149c100000000, 0xf3984ea200000000, 0xec54f4fe00000000,
+    0xc88df39d00000000, 0xa4e6fb3800000000, 0x803ffc5b00000000,
+    0x3d369aa900000000, 0x19ef9dca00000000, 0x7584956f00000000,
+    0x515d920c00000000, 0xd73eb17600000000, 0xf3e7b61500000000,
+    0x9f8cbeb000000000, 0xbb55b9d300000000, 0x065cdf2100000000,
+    0x2285d84200000000, 0x4eeed0e700000000, 0x6a37d78400000000,
+    0x75fb6dd800000000, 0x51226abb00000000, 0x3d49621e00000000,
+    0x1990657d00000000, 0xa499038f00000000, 0x804004ec00000000,
+    0xec2b0c4900000000, 0xc8f20b2a00000000, 0xd2b379f000000000,
+    0xf66a7e9300000000, 0x9a01763600000000, 0xbed8715500000000,
+    0x03d117a700000000, 0x270810c400000000, 0x4b63186100000000,
+    0x6fba1f0200000000, 0x7076a55e00000000, 0x54afa23d00000000,
+    0x38c4aa9800000000, 0x1c1dadfb00000000, 0xa114cb0900000000,
+    0x85cdcc6a00000000, 0xe9a6c4cf00000000, 0xcd7fc3ac00000000,
+    0x9c2251a000000000, 0xb8fb56c300000000, 0xd4905e6600000000,
+    0xf049590500000000, 0x4d403ff700000000, 0x6999389400000000,
+    0x05f2303100000000, 0x212b375200000000, 0x3ee78d0e00000000,
+    0x1a3e8a6d00000000, 0x765582c800000000, 0x528c85ab00000000,
+    0xef85e35900000000, 0xcb5ce43a00000000, 0xa737ec9f00000000,
+    0x83eeebfc00000000, 0x99af992600000000, 0xbd769e4500000000,
+    0xd11d96e000000000, 0xf5c4918300000000, 0x48cdf77100000000,
+    0x6c14f01200000000, 0x007ff8b700000000, 0x24a6ffd400000000,
+    0x3b6a458800000000, 0x1fb342eb00000000, 0x73d84a4e00000000,
+    0x57014d2d00000000, 0xea082bdf00000000, 0xced12cbc00000000,
+    0xa2ba241900000000, 0x8663237a00000000, 0xae7d62ed00000000,
+    0x8aa4658e00000000, 0xe6cf6d2b00000000, 0xc2166a4800000000,
+    0x7f1f0cba00000000, 0x5bc60bd900000000, 0x37ad037c00000000,
+    0x1374041f00000000, 0x0cb8be4300000000, 0x2861b92000000000,
+    0x440ab18500000000, 0x60d3b6e600000000, 0xdddad01400000000,
+    0xf903d77700000000, 0x9568dfd200000000, 0xb1b1d8b100000000,
+    0xabf0aa6b00000000, 0x8f29ad0800000000, 0xe342a5ad00000000,
+    0xc79ba2ce00000000, 0x7a92c43c00000000, 0x5e4bc35f00000000,
+    0x3220cbfa00000000, 0x16f9cc9900000000, 0x093576c500000000,
+    0x2dec71a600000000, 0x4187790300000000, 0x655e7e6000000000,
+    0xd857189200000000, 0xfc8e1ff100000000, 0x90e5175400000000,
+    0xb43c103700000000, 0xe561823b00000000, 0xc1b8855800000000,
+    0xadd38dfd00000000, 0x890a8a9e00000000, 0x3403ec6c00000000,
+    0x10daeb0f00000000, 0x7cb1e3aa00000000, 0x5868e4c900000000,
+    0x47a45e9500000000, 0x637d59f600000000, 0x0f16515300000000,
+    0x2bcf563000000000, 0x96c630c200000000, 0xb21f37a100000000,
+    0xde743f0400000000, 0xfaad386700000000, 0xe0ec4abd00000000,
+    0xc4354dde00000000, 0xa85e457b00000000, 0x8c87421800000000,
+    0x318e24ea00000000, 0x1557238900000000, 0x793c2b2c00000000,
+    0x5de52c4f00000000, 0x4229961300000000, 0x66f0917000000000,
+    0x0a9b99d500000000, 0x2e429eb600000000, 0x934bf84400000000,
+    0xb792ff2700000000, 0xdbf9f78200000000, 0xff20f0e100000000,
+    0x7943d39b00000000, 0x5d9ad4f800000000, 0x31f1dc5d00000000,
+    0x1528db3e00000000, 0xa821bdcc00000000, 0x8cf8baaf00000000,
+    0xe093b20a00000000, 0xc44ab56900000000, 0xdb860f3500000000,
+    0xff5f085600000000, 0x933400f300000000, 0xb7ed079000000000,
+    0x0ae4616200000000, 0x2e3d660100000000, 0x42566ea400000000,
+    0x668f69c700000000, 0x7cce1b1d00000000, 0x58171c7e00000000,
+    0x347c14db00000000, 0x10a513b800000000, 0xadac754a00000000,
+    0x8975722900000000, 0xe51e7a8c00000000, 0xc1c77def00000000,
+    0xde0bc7b300000000, 0xfad2c0d000000000, 0x96b9c87500000000,
+    0xb260cf1600000000, 0x0f69a9e400000000, 0x2bb0ae8700000000,
+    0x47dba62200000000, 0x6302a14100000000, 0x325f334d00000000,
+    0x1686342e00000000, 0x7aed3c8b00000000, 0x5e343be800000000,
+    0xe33d5d1a00000000, 0xc7e45a7900000000, 0xab8f52dc00000000,
+    0x8f5655bf00000000, 0x909aefe300000000, 0xb443e88000000000,
+    0xd828e02500000000, 0xfcf1e74600000000, 0x41f881b400000000,
+    0x652186d700000000, 0x094a8e7200000000, 0x2d93891100000000,
+    0x37d2fbcb00000000, 0x130bfca800000000, 0x7f60f40d00000000,
+    0x5bb9f36e00000000, 0xe6b0959c00000000, 0xc26992ff00000000,
+    0xae029a5a00000000, 0x8adb9d3900000000, 0x9517276500000000,
+    0xb1ce200600000000, 0xdda528a300000000, 0xf97c2fc000000000,
+    0x4475493200000000, 0x60ac4e5100000000, 0x0cc746f400000000,
+    0x281e419700000000},
+   {0x0000000000000000, 0x08e3603c00000000, 0x10c6c17800000000,
+    0x1825a14400000000, 0x208c83f100000000, 0x286fe3cd00000000,
+    0x304a428900000000, 0x38a922b500000000, 0x011e763800000000,
+    0x09fd160400000000, 0x11d8b74000000000, 0x193bd77c00000000,
+    0x2192f5c900000000, 0x297195f500000000, 0x315434b100000000,
+    0x39b7548d00000000, 0x023cec7000000000, 0x0adf8c4c00000000,
+    0x12fa2d0800000000, 0x1a194d3400000000, 0x22b06f8100000000,
+    0x2a530fbd00000000, 0x3276aef900000000, 0x3a95cec500000000,
+    0x03229a4800000000, 0x0bc1fa7400000000, 0x13e45b3000000000,
+    0x1b073b0c00000000, 0x23ae19b900000000, 0x2b4d798500000000,
+    0x3368d8c100000000, 0x3b8bb8fd00000000, 0x0478d8e100000000,
+    0x0c9bb8dd00000000, 0x14be199900000000, 0x1c5d79a500000000,
+    0x24f45b1000000000, 0x2c173b2c00000000, 0x34329a6800000000,
+    0x3cd1fa5400000000, 0x0566aed900000000, 0x0d85cee500000000,
+    0x15a06fa100000000, 0x1d430f9d00000000, 0x25ea2d2800000000,
+    0x2d094d1400000000, 0x352cec5000000000, 0x3dcf8c6c00000000,
+    0x0644349100000000, 0x0ea754ad00000000, 0x1682f5e900000000,
+    0x1e6195d500000000, 0x26c8b76000000000, 0x2e2bd75c00000000,
+    0x360e761800000000, 0x3eed162400000000, 0x075a42a900000000,
+    0x0fb9229500000000, 0x179c83d100000000, 0x1f7fe3ed00000000,
+    0x27d6c15800000000, 0x2f35a16400000000, 0x3710002000000000,
+    0x3ff3601c00000000, 0x49f6c11800000000, 0x4115a12400000000,
+    0x5930006000000000, 0x51d3605c00000000, 0x697a42e900000000,
+    0x619922d500000000, 0x79bc839100000000, 0x715fe3ad00000000,
+    0x48e8b72000000000, 0x400bd71c00000000, 0x582e765800000000,
+    0x50cd166400000000, 0x686434d100000000, 0x608754ed00000000,
+    0x78a2f5a900000000, 0x7041959500000000, 0x4bca2d6800000000,
+    0x43294d5400000000, 0x5b0cec1000000000, 0x53ef8c2c00000000,
+    0x6b46ae9900000000, 0x63a5cea500000000, 0x7b806fe100000000,
+    0x73630fdd00000000, 0x4ad45b5000000000, 0x42373b6c00000000,
+    0x5a129a2800000000, 0x52f1fa1400000000, 0x6a58d8a100000000,
+    0x62bbb89d00000000, 0x7a9e19d900000000, 0x727d79e500000000,
+    0x4d8e19f900000000, 0x456d79c500000000, 0x5d48d88100000000,
+    0x55abb8bd00000000, 0x6d029a0800000000, 0x65e1fa3400000000,
+    0x7dc45b7000000000, 0x75273b4c00000000, 0x4c906fc100000000,
+    0x44730ffd00000000, 0x5c56aeb900000000, 0x54b5ce8500000000,
+    0x6c1cec3000000000, 0x64ff8c0c00000000, 0x7cda2d4800000000,
+    0x74394d7400000000, 0x4fb2f58900000000, 0x475195b500000000,
+    0x5f7434f100000000, 0x579754cd00000000, 0x6f3e767800000000,
+    0x67dd164400000000, 0x7ff8b70000000000, 0x771bd73c00000000,
+    0x4eac83b100000000, 0x464fe38d00000000, 0x5e6a42c900000000,
+    0x568922f500000000, 0x6e20004000000000, 0x66c3607c00000000,
+    0x7ee6c13800000000, 0x7605a10400000000, 0x92ec833100000000,
+    0x9a0fe30d00000000, 0x822a424900000000, 0x8ac9227500000000,
+    0xb26000c000000000, 0xba8360fc00000000, 0xa2a6c1b800000000,
+    0xaa45a18400000000, 0x93f2f50900000000, 0x9b11953500000000,
+    0x8334347100000000, 0x8bd7544d00000000, 0xb37e76f800000000,
+    0xbb9d16c400000000, 0xa3b8b78000000000, 0xab5bd7bc00000000,
+    0x90d06f4100000000, 0x98330f7d00000000, 0x8016ae3900000000,
+    0x88f5ce0500000000, 0xb05cecb000000000, 0xb8bf8c8c00000000,
+    0xa09a2dc800000000, 0xa8794df400000000, 0x91ce197900000000,
+    0x992d794500000000, 0x8108d80100000000, 0x89ebb83d00000000,
+    0xb1429a8800000000, 0xb9a1fab400000000, 0xa1845bf000000000,
+    0xa9673bcc00000000, 0x96945bd000000000, 0x9e773bec00000000,
+    0x86529aa800000000, 0x8eb1fa9400000000, 0xb618d82100000000,
+    0xbefbb81d00000000, 0xa6de195900000000, 0xae3d796500000000,
+    0x978a2de800000000, 0x9f694dd400000000, 0x874cec9000000000,
+    0x8faf8cac00000000, 0xb706ae1900000000, 0xbfe5ce2500000000,
+    0xa7c06f6100000000, 0xaf230f5d00000000, 0x94a8b7a000000000,
+    0x9c4bd79c00000000, 0x846e76d800000000, 0x8c8d16e400000000,
+    0xb424345100000000, 0xbcc7546d00000000, 0xa4e2f52900000000,
+    0xac01951500000000, 0x95b6c19800000000, 0x9d55a1a400000000,
+    0x857000e000000000, 0x8d9360dc00000000, 0xb53a426900000000,
+    0xbdd9225500000000, 0xa5fc831100000000, 0xad1fe32d00000000,
+    0xdb1a422900000000, 0xd3f9221500000000, 0xcbdc835100000000,
+    0xc33fe36d00000000, 0xfb96c1d800000000, 0xf375a1e400000000,
+    0xeb5000a000000000, 0xe3b3609c00000000, 0xda04341100000000,
+    0xd2e7542d00000000, 0xcac2f56900000000, 0xc221955500000000,
+    0xfa88b7e000000000, 0xf26bd7dc00000000, 0xea4e769800000000,
+    0xe2ad16a400000000, 0xd926ae5900000000, 0xd1c5ce6500000000,
+    0xc9e06f2100000000, 0xc1030f1d00000000, 0xf9aa2da800000000,
+    0xf1494d9400000000, 0xe96cecd000000000, 0xe18f8cec00000000,
+    0xd838d86100000000, 0xd0dbb85d00000000, 0xc8fe191900000000,
+    0xc01d792500000000, 0xf8b45b9000000000, 0xf0573bac00000000,
+    0xe8729ae800000000, 0xe091fad400000000, 0xdf629ac800000000,
+    0xd781faf400000000, 0xcfa45bb000000000, 0xc7473b8c00000000,
+    0xffee193900000000, 0xf70d790500000000, 0xef28d84100000000,
+    0xe7cbb87d00000000, 0xde7cecf000000000, 0xd69f8ccc00000000,
+    0xceba2d8800000000, 0xc6594db400000000, 0xfef06f0100000000,
+    0xf6130f3d00000000, 0xee36ae7900000000, 0xe6d5ce4500000000,
+    0xdd5e76b800000000, 0xd5bd168400000000, 0xcd98b7c000000000,
+    0xc57bd7fc00000000, 0xfdd2f54900000000, 0xf531957500000000,
+    0xed14343100000000, 0xe5f7540d00000000, 0xdc40008000000000,
+    0xd4a360bc00000000, 0xcc86c1f800000000, 0xc465a1c400000000,
+    0xfccc837100000000, 0xf42fe34d00000000, 0xec0a420900000000,
+    0xe4e9223500000000},
+   {0x0000000000000000, 0xd1e8e70e00000000, 0xa2d1cf1d00000000,
+    0x7339281300000000, 0x44a39f3b00000000, 0x954b783500000000,
+    0xe672502600000000, 0x379ab72800000000, 0x88463f7700000000,
+    0x59aed87900000000, 0x2a97f06a00000000, 0xfb7f176400000000,
+    0xcce5a04c00000000, 0x1d0d474200000000, 0x6e346f5100000000,
+    0xbfdc885f00000000, 0x108d7eee00000000, 0xc16599e000000000,
+    0xb25cb1f300000000, 0x63b456fd00000000, 0x542ee1d500000000,
+    0x85c606db00000000, 0xf6ff2ec800000000, 0x2717c9c600000000,
+    0x98cb419900000000, 0x4923a69700000000, 0x3a1a8e8400000000,
+    0xebf2698a00000000, 0xdc68dea200000000, 0x0d8039ac00000000,
+    0x7eb911bf00000000, 0xaf51f6b100000000, 0x611c8c0700000000,
+    0xb0f46b0900000000, 0xc3cd431a00000000, 0x1225a41400000000,
+    0x25bf133c00000000, 0xf457f43200000000, 0x876edc2100000000,
+    0x56863b2f00000000, 0xe95ab37000000000, 0x38b2547e00000000,
+    0x4b8b7c6d00000000, 0x9a639b6300000000, 0xadf92c4b00000000,
+    0x7c11cb4500000000, 0x0f28e35600000000, 0xdec0045800000000,
+    0x7191f2e900000000, 0xa07915e700000000, 0xd3403df400000000,
+    0x02a8dafa00000000, 0x35326dd200000000, 0xe4da8adc00000000,
+    0x97e3a2cf00000000, 0x460b45c100000000, 0xf9d7cd9e00000000,
+    0x283f2a9000000000, 0x5b06028300000000, 0x8aeee58d00000000,
+    0xbd7452a500000000, 0x6c9cb5ab00000000, 0x1fa59db800000000,
+    0xce4d7ab600000000, 0xc238180f00000000, 0x13d0ff0100000000,
+    0x60e9d71200000000, 0xb101301c00000000, 0x869b873400000000,
+    0x5773603a00000000, 0x244a482900000000, 0xf5a2af2700000000,
+    0x4a7e277800000000, 0x9b96c07600000000, 0xe8afe86500000000,
+    0x39470f6b00000000, 0x0eddb84300000000, 0xdf355f4d00000000,
+    0xac0c775e00000000, 0x7de4905000000000, 0xd2b566e100000000,
+    0x035d81ef00000000, 0x7064a9fc00000000, 0xa18c4ef200000000,
+    0x9616f9da00000000, 0x47fe1ed400000000, 0x34c736c700000000,
+    0xe52fd1c900000000, 0x5af3599600000000, 0x8b1bbe9800000000,
+    0xf822968b00000000, 0x29ca718500000000, 0x1e50c6ad00000000,
+    0xcfb821a300000000, 0xbc8109b000000000, 0x6d69eebe00000000,
+    0xa324940800000000, 0x72cc730600000000, 0x01f55b1500000000,
+    0xd01dbc1b00000000, 0xe7870b3300000000, 0x366fec3d00000000,
+    0x4556c42e00000000, 0x94be232000000000, 0x2b62ab7f00000000,
+    0xfa8a4c7100000000, 0x89b3646200000000, 0x585b836c00000000,
+    0x6fc1344400000000, 0xbe29d34a00000000, 0xcd10fb5900000000,
+    0x1cf81c5700000000, 0xb3a9eae600000000, 0x62410de800000000,
+    0x117825fb00000000, 0xc090c2f500000000, 0xf70a75dd00000000,
+    0x26e292d300000000, 0x55dbbac000000000, 0x84335dce00000000,
+    0x3befd59100000000, 0xea07329f00000000, 0x993e1a8c00000000,
+    0x48d6fd8200000000, 0x7f4c4aaa00000000, 0xaea4ada400000000,
+    0xdd9d85b700000000, 0x0c7562b900000000, 0x8471301e00000000,
+    0x5599d71000000000, 0x26a0ff0300000000, 0xf748180d00000000,
+    0xc0d2af2500000000, 0x113a482b00000000, 0x6203603800000000,
+    0xb3eb873600000000, 0x0c370f6900000000, 0xdddfe86700000000,
+    0xaee6c07400000000, 0x7f0e277a00000000, 0x4894905200000000,
+    0x997c775c00000000, 0xea455f4f00000000, 0x3badb84100000000,
+    0x94fc4ef000000000, 0x4514a9fe00000000, 0x362d81ed00000000,
+    0xe7c566e300000000, 0xd05fd1cb00000000, 0x01b736c500000000,
+    0x728e1ed600000000, 0xa366f9d800000000, 0x1cba718700000000,
+    0xcd52968900000000, 0xbe6bbe9a00000000, 0x6f83599400000000,
+    0x5819eebc00000000, 0x89f109b200000000, 0xfac821a100000000,
+    0x2b20c6af00000000, 0xe56dbc1900000000, 0x34855b1700000000,
+    0x47bc730400000000, 0x9654940a00000000, 0xa1ce232200000000,
+    0x7026c42c00000000, 0x031fec3f00000000, 0xd2f70b3100000000,
+    0x6d2b836e00000000, 0xbcc3646000000000, 0xcffa4c7300000000,
+    0x1e12ab7d00000000, 0x29881c5500000000, 0xf860fb5b00000000,
+    0x8b59d34800000000, 0x5ab1344600000000, 0xf5e0c2f700000000,
+    0x240825f900000000, 0x57310dea00000000, 0x86d9eae400000000,
+    0xb1435dcc00000000, 0x60abbac200000000, 0x139292d100000000,
+    0xc27a75df00000000, 0x7da6fd8000000000, 0xac4e1a8e00000000,
+    0xdf77329d00000000, 0x0e9fd59300000000, 0x390562bb00000000,
+    0xe8ed85b500000000, 0x9bd4ada600000000, 0x4a3c4aa800000000,
+    0x4649281100000000, 0x97a1cf1f00000000, 0xe498e70c00000000,
+    0x3570000200000000, 0x02eab72a00000000, 0xd302502400000000,
+    0xa03b783700000000, 0x71d39f3900000000, 0xce0f176600000000,
+    0x1fe7f06800000000, 0x6cded87b00000000, 0xbd363f7500000000,
+    0x8aac885d00000000, 0x5b446f5300000000, 0x287d474000000000,
+    0xf995a04e00000000, 0x56c456ff00000000, 0x872cb1f100000000,
+    0xf41599e200000000, 0x25fd7eec00000000, 0x1267c9c400000000,
+    0xc38f2eca00000000, 0xb0b606d900000000, 0x615ee1d700000000,
+    0xde82698800000000, 0x0f6a8e8600000000, 0x7c53a69500000000,
+    0xadbb419b00000000, 0x9a21f6b300000000, 0x4bc911bd00000000,
+    0x38f039ae00000000, 0xe918dea000000000, 0x2755a41600000000,
+    0xf6bd431800000000, 0x85846b0b00000000, 0x546c8c0500000000,
+    0x63f63b2d00000000, 0xb21edc2300000000, 0xc127f43000000000,
+    0x10cf133e00000000, 0xaf139b6100000000, 0x7efb7c6f00000000,
+    0x0dc2547c00000000, 0xdc2ab37200000000, 0xebb0045a00000000,
+    0x3a58e35400000000, 0x4961cb4700000000, 0x98892c4900000000,
+    0x37d8daf800000000, 0xe6303df600000000, 0x950915e500000000,
+    0x44e1f2eb00000000, 0x737b45c300000000, 0xa293a2cd00000000,
+    0xd1aa8ade00000000, 0x00426dd000000000, 0xbf9ee58f00000000,
+    0x6e76028100000000, 0x1d4f2a9200000000, 0xcca7cd9c00000000,
+    0xfb3d7ab400000000, 0x2ad59dba00000000, 0x59ecb5a900000000,
+    0x880452a700000000},
+   {0x0000000000000000, 0xaa05daf100000000, 0x150dc53800000000,
+    0xbf081fc900000000, 0x2a1a8a7100000000, 0x801f508000000000,
+    0x3f174f4900000000, 0x951295b800000000, 0x543414e300000000,
+    0xfe31ce1200000000, 0x4139d1db00000000, 0xeb3c0b2a00000000,
+    0x7e2e9e9200000000, 0xd42b446300000000, 0x6b235baa00000000,
+    0xc126815b00000000, 0xe96e591d00000000, 0x436b83ec00000000,
+    0xfc639c2500000000, 0x566646d400000000, 0xc374d36c00000000,
+    0x6971099d00000000, 0xd679165400000000, 0x7c7ccca500000000,
+    0xbd5a4dfe00000000, 0x175f970f00000000, 0xa85788c600000000,
+    0x0252523700000000, 0x9740c78f00000000, 0x3d451d7e00000000,
+    0x824d02b700000000, 0x2848d84600000000, 0xd2ddb23a00000000,
+    0x78d868cb00000000, 0xc7d0770200000000, 0x6dd5adf300000000,
+    0xf8c7384b00000000, 0x52c2e2ba00000000, 0xedcafd7300000000,
+    0x47cf278200000000, 0x86e9a6d900000000, 0x2cec7c2800000000,
+    0x93e463e100000000, 0x39e1b91000000000, 0xacf32ca800000000,
+    0x06f6f65900000000, 0xb9fee99000000000, 0x13fb336100000000,
+    0x3bb3eb2700000000, 0x91b631d600000000, 0x2ebe2e1f00000000,
+    0x84bbf4ee00000000, 0x11a9615600000000, 0xbbacbba700000000,
+    0x04a4a46e00000000, 0xaea17e9f00000000, 0x6f87ffc400000000,
+    0xc582253500000000, 0x7a8a3afc00000000, 0xd08fe00d00000000,
+    0x459d75b500000000, 0xef98af4400000000, 0x5090b08d00000000,
+    0xfa956a7c00000000, 0xa4bb657500000000, 0x0ebebf8400000000,
+    0xb1b6a04d00000000, 0x1bb37abc00000000, 0x8ea1ef0400000000,
+    0x24a435f500000000, 0x9bac2a3c00000000, 0x31a9f0cd00000000,
+    0xf08f719600000000, 0x5a8aab6700000000, 0xe582b4ae00000000,
+    0x4f876e5f00000000, 0xda95fbe700000000, 0x7090211600000000,
+    0xcf983edf00000000, 0x659de42e00000000, 0x4dd53c6800000000,
+    0xe7d0e69900000000, 0x58d8f95000000000, 0xf2dd23a100000000,
+    0x67cfb61900000000, 0xcdca6ce800000000, 0x72c2732100000000,
+    0xd8c7a9d000000000, 0x19e1288b00000000, 0xb3e4f27a00000000,
+    0x0cecedb300000000, 0xa6e9374200000000, 0x33fba2fa00000000,
+    0x99fe780b00000000, 0x26f667c200000000, 0x8cf3bd3300000000,
+    0x7666d74f00000000, 0xdc630dbe00000000, 0x636b127700000000,
+    0xc96ec88600000000, 0x5c7c5d3e00000000, 0xf67987cf00000000,
+    0x4971980600000000, 0xe37442f700000000, 0x2252c3ac00000000,
+    0x8857195d00000000, 0x375f069400000000, 0x9d5adc6500000000,
+    0x084849dd00000000, 0xa24d932c00000000, 0x1d458ce500000000,
+    0xb740561400000000, 0x9f088e5200000000, 0x350d54a300000000,
+    0x8a054b6a00000000, 0x2000919b00000000, 0xb512042300000000,
+    0x1f17ded200000000, 0xa01fc11b00000000, 0x0a1a1bea00000000,
+    0xcb3c9ab100000000, 0x6139404000000000, 0xde315f8900000000,
+    0x7434857800000000, 0xe12610c000000000, 0x4b23ca3100000000,
+    0xf42bd5f800000000, 0x5e2e0f0900000000, 0x4877cbea00000000,
+    0xe272111b00000000, 0x5d7a0ed200000000, 0xf77fd42300000000,
+    0x626d419b00000000, 0xc8689b6a00000000, 0x776084a300000000,
+    0xdd655e5200000000, 0x1c43df0900000000, 0xb64605f800000000,
+    0x094e1a3100000000, 0xa34bc0c000000000, 0x3659557800000000,
+    0x9c5c8f8900000000, 0x2354904000000000, 0x89514ab100000000,
+    0xa11992f700000000, 0x0b1c480600000000, 0xb41457cf00000000,
+    0x1e118d3e00000000, 0x8b03188600000000, 0x2106c27700000000,
+    0x9e0eddbe00000000, 0x340b074f00000000, 0xf52d861400000000,
+    0x5f285ce500000000, 0xe020432c00000000, 0x4a2599dd00000000,
+    0xdf370c6500000000, 0x7532d69400000000, 0xca3ac95d00000000,
+    0x603f13ac00000000, 0x9aaa79d000000000, 0x30afa32100000000,
+    0x8fa7bce800000000, 0x25a2661900000000, 0xb0b0f3a100000000,
+    0x1ab5295000000000, 0xa5bd369900000000, 0x0fb8ec6800000000,
+    0xce9e6d3300000000, 0x649bb7c200000000, 0xdb93a80b00000000,
+    0x719672fa00000000, 0xe484e74200000000, 0x4e813db300000000,
+    0xf189227a00000000, 0x5b8cf88b00000000, 0x73c420cd00000000,
+    0xd9c1fa3c00000000, 0x66c9e5f500000000, 0xcccc3f0400000000,
+    0x59deaabc00000000, 0xf3db704d00000000, 0x4cd36f8400000000,
+    0xe6d6b57500000000, 0x27f0342e00000000, 0x8df5eedf00000000,
+    0x32fdf11600000000, 0x98f82be700000000, 0x0deabe5f00000000,
+    0xa7ef64ae00000000, 0x18e77b6700000000, 0xb2e2a19600000000,
+    0xecccae9f00000000, 0x46c9746e00000000, 0xf9c16ba700000000,
+    0x53c4b15600000000, 0xc6d624ee00000000, 0x6cd3fe1f00000000,
+    0xd3dbe1d600000000, 0x79de3b2700000000, 0xb8f8ba7c00000000,
+    0x12fd608d00000000, 0xadf57f4400000000, 0x07f0a5b500000000,
+    0x92e2300d00000000, 0x38e7eafc00000000, 0x87eff53500000000,
+    0x2dea2fc400000000, 0x05a2f78200000000, 0xafa72d7300000000,
+    0x10af32ba00000000, 0xbaaae84b00000000, 0x2fb87df300000000,
+    0x85bda70200000000, 0x3ab5b8cb00000000, 0x90b0623a00000000,
+    0x5196e36100000000, 0xfb93399000000000, 0x449b265900000000,
+    0xee9efca800000000, 0x7b8c691000000000, 0xd189b3e100000000,
+    0x6e81ac2800000000, 0xc48476d900000000, 0x3e111ca500000000,
+    0x9414c65400000000, 0x2b1cd99d00000000, 0x8119036c00000000,
+    0x140b96d400000000, 0xbe0e4c2500000000, 0x010653ec00000000,
+    0xab03891d00000000, 0x6a25084600000000, 0xc020d2b700000000,
+    0x7f28cd7e00000000, 0xd52d178f00000000, 0x403f823700000000,
+    0xea3a58c600000000, 0x5532470f00000000, 0xff379dfe00000000,
+    0xd77f45b800000000, 0x7d7a9f4900000000, 0xc272808000000000,
+    0x68775a7100000000, 0xfd65cfc900000000, 0x5760153800000000,
+    0xe8680af100000000, 0x426dd00000000000, 0x834b515b00000000,
+    0x294e8baa00000000, 0x9646946300000000, 0x3c434e9200000000,
+    0xa951db2a00000000, 0x035401db00000000, 0xbc5c1e1200000000,
+    0x1659c4e300000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
+    0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
+    0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
+    0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
+    0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
+    0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
+    0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
+    0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
+    0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
+    0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
+    0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
+    0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
+    0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
+    0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
+    0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
+    0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
+    0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
+    0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
+    0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
+    0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
+    0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
+    0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
+    0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
+    0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
+    0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
+    0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
+    0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
+    0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
+    0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
+    0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
+    0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
+    0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
+    0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
+    0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
+    0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
+    0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
+    0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
+    0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
+    0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
+    0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
+    0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
+    0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
+    0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
+    0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
+    0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
+    0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
+    0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
+    0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
+    0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
+    0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
+    0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
+    0x0d7139d7},
+   {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
+    0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
+    0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
+    0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
+    0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
+    0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
+    0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
+    0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
+    0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
+    0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
+    0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
+    0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
+    0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
+    0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
+    0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
+    0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
+    0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
+    0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
+    0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
+    0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
+    0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
+    0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
+    0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
+    0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
+    0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
+    0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
+    0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
+    0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
+    0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
+    0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
+    0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
+    0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
+    0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
+    0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
+    0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
+    0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
+    0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
+    0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
+    0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
+    0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
+    0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
+    0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
+    0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
+    0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
+    0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
+    0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
+    0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
+    0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
+    0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
+    0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
+    0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
+    0x1c53e98a},
+   {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
+    0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
+    0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
+    0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
+    0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
+    0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
+    0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
+    0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
+    0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
+    0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
+    0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
+    0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
+    0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
+    0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
+    0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
+    0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
+    0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
+    0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
+    0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
+    0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
+    0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
+    0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
+    0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
+    0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
+    0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
+    0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
+    0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
+    0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
+    0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
+    0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
+    0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
+    0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
+    0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
+    0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
+    0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
+    0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
+    0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
+    0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
+    0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
+    0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
+    0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
+    0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
+    0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
+    0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
+    0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
+    0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
+    0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
+    0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
+    0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
+    0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
+    0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
+    0x3f88e851},
+   {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
+    0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
+    0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
+    0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
+    0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
+    0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
+    0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
+    0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
+    0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
+    0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
+    0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
+    0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
+    0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
+    0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
+    0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
+    0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
+    0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
+    0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
+    0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
+    0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
+    0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
+    0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
+    0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
+    0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
+    0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
+    0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
+    0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
+    0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
+    0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
+    0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
+    0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
+    0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
+    0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
+    0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
+    0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
+    0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
+    0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
+    0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
+    0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
+    0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
+    0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
+    0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
+    0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
+    0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
+    0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
+    0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
+    0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
+    0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
+    0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
+    0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
+    0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
+    0x3dee8ca6}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x85d996dd, 0x4bb55c60, 0xce6ccabd, 0x966ab9c0,
+    0x13b32f1d, 0xdddfe5a0, 0x5806737d, 0x6dd3035a, 0xe80a9587,
+    0x26665f3a, 0xa3bfc9e7, 0xfbb9ba9a, 0x7e602c47, 0xb00ce6fa,
+    0x35d57027, 0xdaa607b4, 0x5f7f9169, 0x91135bd4, 0x14cacd09,
+    0x4cccbe74, 0xc91528a9, 0x0779e214, 0x82a074c9, 0xb77504ee,
+    0x32ac9233, 0xfcc0588e, 0x7919ce53, 0x211fbd2e, 0xa4c62bf3,
+    0x6aaae14e, 0xef737793, 0xf54b7eb3, 0x7092e86e, 0xbefe22d3,
+    0x3b27b40e, 0x6321c773, 0xe6f851ae, 0x28949b13, 0xad4d0dce,
+    0x98987de9, 0x1d41eb34, 0xd32d2189, 0x56f4b754, 0x0ef2c429,
+    0x8b2b52f4, 0x45479849, 0xc09e0e94, 0x2fed7907, 0xaa34efda,
+    0x64582567, 0xe181b3ba, 0xb987c0c7, 0x3c5e561a, 0xf2329ca7,
+    0x77eb0a7a, 0x423e7a5d, 0xc7e7ec80, 0x098b263d, 0x8c52b0e0,
+    0xd454c39d, 0x518d5540, 0x9fe19ffd, 0x1a380920, 0xab918dbd,
+    0x2e481b60, 0xe024d1dd, 0x65fd4700, 0x3dfb347d, 0xb822a2a0,
+    0x764e681d, 0xf397fec0, 0xc6428ee7, 0x439b183a, 0x8df7d287,
+    0x082e445a, 0x50283727, 0xd5f1a1fa, 0x1b9d6b47, 0x9e44fd9a,
+    0x71378a09, 0xf4ee1cd4, 0x3a82d669, 0xbf5b40b4, 0xe75d33c9,
+    0x6284a514, 0xace86fa9, 0x2931f974, 0x1ce48953, 0x993d1f8e,
+    0x5751d533, 0xd28843ee, 0x8a8e3093, 0x0f57a64e, 0xc13b6cf3,
+    0x44e2fa2e, 0x5edaf30e, 0xdb0365d3, 0x156faf6e, 0x90b639b3,
+    0xc8b04ace, 0x4d69dc13, 0x830516ae, 0x06dc8073, 0x3309f054,
+    0xb6d06689, 0x78bcac34, 0xfd653ae9, 0xa5634994, 0x20badf49,
+    0xeed615f4, 0x6b0f8329, 0x847cf4ba, 0x01a56267, 0xcfc9a8da,
+    0x4a103e07, 0x12164d7a, 0x97cfdba7, 0x59a3111a, 0xdc7a87c7,
+    0xe9aff7e0, 0x6c76613d, 0xa21aab80, 0x27c33d5d, 0x7fc54e20,
+    0xfa1cd8fd, 0x34701240, 0xb1a9849d, 0x17256aa0, 0x92fcfc7d,
+    0x5c9036c0, 0xd949a01d, 0x814fd360, 0x049645bd, 0xcafa8f00,
+    0x4f2319dd, 0x7af669fa, 0xff2fff27, 0x3143359a, 0xb49aa347,
+    0xec9cd03a, 0x694546e7, 0xa7298c5a, 0x22f01a87, 0xcd836d14,
+    0x485afbc9, 0x86363174, 0x03efa7a9, 0x5be9d4d4, 0xde304209,
+    0x105c88b4, 0x95851e69, 0xa0506e4e, 0x2589f893, 0xebe5322e,
+    0x6e3ca4f3, 0x363ad78e, 0xb3e34153, 0x7d8f8bee, 0xf8561d33,
+    0xe26e1413, 0x67b782ce, 0xa9db4873, 0x2c02deae, 0x7404add3,
+    0xf1dd3b0e, 0x3fb1f1b3, 0xba68676e, 0x8fbd1749, 0x0a648194,
+    0xc4084b29, 0x41d1ddf4, 0x19d7ae89, 0x9c0e3854, 0x5262f2e9,
+    0xd7bb6434, 0x38c813a7, 0xbd11857a, 0x737d4fc7, 0xf6a4d91a,
+    0xaea2aa67, 0x2b7b3cba, 0xe517f607, 0x60ce60da, 0x551b10fd,
+    0xd0c28620, 0x1eae4c9d, 0x9b77da40, 0xc371a93d, 0x46a83fe0,
+    0x88c4f55d, 0x0d1d6380, 0xbcb4e71d, 0x396d71c0, 0xf701bb7d,
+    0x72d82da0, 0x2ade5edd, 0xaf07c800, 0x616b02bd, 0xe4b29460,
+    0xd167e447, 0x54be729a, 0x9ad2b827, 0x1f0b2efa, 0x470d5d87,
+    0xc2d4cb5a, 0x0cb801e7, 0x8961973a, 0x6612e0a9, 0xe3cb7674,
+    0x2da7bcc9, 0xa87e2a14, 0xf0785969, 0x75a1cfb4, 0xbbcd0509,
+    0x3e1493d4, 0x0bc1e3f3, 0x8e18752e, 0x4074bf93, 0xc5ad294e,
+    0x9dab5a33, 0x1872ccee, 0xd61e0653, 0x53c7908e, 0x49ff99ae,
+    0xcc260f73, 0x024ac5ce, 0x87935313, 0xdf95206e, 0x5a4cb6b3,
+    0x94207c0e, 0x11f9ead3, 0x242c9af4, 0xa1f50c29, 0x6f99c694,
+    0xea405049, 0xb2462334, 0x379fb5e9, 0xf9f37f54, 0x7c2ae989,
+    0x93599e1a, 0x168008c7, 0xd8ecc27a, 0x5d3554a7, 0x053327da,
+    0x80eab107, 0x4e867bba, 0xcb5fed67, 0xfe8a9d40, 0x7b530b9d,
+    0xb53fc120, 0x30e657fd, 0x68e02480, 0xed39b25d, 0x235578e0,
+    0xa68cee3d},
+   {0x00000000, 0x76e10f9d, 0xadc46ee1, 0xdb25617c, 0x1b8fac19,
+    0x6d6ea384, 0xb64bc2f8, 0xc0aacd65, 0x361e5933, 0x40ff56ae,
+    0x9bda37d2, 0xed3b384f, 0x2d91f52a, 0x5b70fab7, 0x80559bcb,
+    0xf6b49456, 0x6c3cb266, 0x1addbdfb, 0xc1f8dc87, 0xb719d31a,
+    0x77b31e7f, 0x015211e2, 0xda77709e, 0xac967f03, 0x5a22eb55,
+    0x2cc3e4c8, 0xf7e685b4, 0x81078a29, 0x41ad474c, 0x374c48d1,
+    0xec6929ad, 0x9a882630, 0xd87864cd, 0xae996b50, 0x75bc0a2c,
+    0x035d05b1, 0xc3f7c8d4, 0xb516c749, 0x6e33a635, 0x18d2a9a8,
+    0xee663dfe, 0x98873263, 0x43a2531f, 0x35435c82, 0xf5e991e7,
+    0x83089e7a, 0x582dff06, 0x2eccf09b, 0xb444d6ab, 0xc2a5d936,
+    0x1980b84a, 0x6f61b7d7, 0xafcb7ab2, 0xd92a752f, 0x020f1453,
+    0x74ee1bce, 0x825a8f98, 0xf4bb8005, 0x2f9ee179, 0x597feee4,
+    0x99d52381, 0xef342c1c, 0x34114d60, 0x42f042fd, 0xf1f7b941,
+    0x8716b6dc, 0x5c33d7a0, 0x2ad2d83d, 0xea781558, 0x9c991ac5,
+    0x47bc7bb9, 0x315d7424, 0xc7e9e072, 0xb108efef, 0x6a2d8e93,
+    0x1ccc810e, 0xdc664c6b, 0xaa8743f6, 0x71a2228a, 0x07432d17,
+    0x9dcb0b27, 0xeb2a04ba, 0x300f65c6, 0x46ee6a5b, 0x8644a73e,
+    0xf0a5a8a3, 0x2b80c9df, 0x5d61c642, 0xabd55214, 0xdd345d89,
+    0x06113cf5, 0x70f03368, 0xb05afe0d, 0xc6bbf190, 0x1d9e90ec,
+    0x6b7f9f71, 0x298fdd8c, 0x5f6ed211, 0x844bb36d, 0xf2aabcf0,
+    0x32007195, 0x44e17e08, 0x9fc41f74, 0xe92510e9, 0x1f9184bf,
+    0x69708b22, 0xb255ea5e, 0xc4b4e5c3, 0x041e28a6, 0x72ff273b,
+    0xa9da4647, 0xdf3b49da, 0x45b36fea, 0x33526077, 0xe877010b,
+    0x9e960e96, 0x5e3cc3f3, 0x28ddcc6e, 0xf3f8ad12, 0x8519a28f,
+    0x73ad36d9, 0x054c3944, 0xde695838, 0xa88857a5, 0x68229ac0,
+    0x1ec3955d, 0xc5e6f421, 0xb307fbbc, 0xe2ef7383, 0x940e7c1e,
+    0x4f2b1d62, 0x39ca12ff, 0xf960df9a, 0x8f81d007, 0x54a4b17b,
+    0x2245bee6, 0xd4f12ab0, 0xa210252d, 0x79354451, 0x0fd44bcc,
+    0xcf7e86a9, 0xb99f8934, 0x62bae848, 0x145be7d5, 0x8ed3c1e5,
+    0xf832ce78, 0x2317af04, 0x55f6a099, 0x955c6dfc, 0xe3bd6261,
+    0x3898031d, 0x4e790c80, 0xb8cd98d6, 0xce2c974b, 0x1509f637,
+    0x63e8f9aa, 0xa34234cf, 0xd5a33b52, 0x0e865a2e, 0x786755b3,
+    0x3a97174e, 0x4c7618d3, 0x975379af, 0xe1b27632, 0x2118bb57,
+    0x57f9b4ca, 0x8cdcd5b6, 0xfa3dda2b, 0x0c894e7d, 0x7a6841e0,
+    0xa14d209c, 0xd7ac2f01, 0x1706e264, 0x61e7edf9, 0xbac28c85,
+    0xcc238318, 0x56aba528, 0x204aaab5, 0xfb6fcbc9, 0x8d8ec454,
+    0x4d240931, 0x3bc506ac, 0xe0e067d0, 0x9601684d, 0x60b5fc1b,
+    0x1654f386, 0xcd7192fa, 0xbb909d67, 0x7b3a5002, 0x0ddb5f9f,
+    0xd6fe3ee3, 0xa01f317e, 0x1318cac2, 0x65f9c55f, 0xbedca423,
+    0xc83dabbe, 0x089766db, 0x7e766946, 0xa553083a, 0xd3b207a7,
+    0x250693f1, 0x53e79c6c, 0x88c2fd10, 0xfe23f28d, 0x3e893fe8,
+    0x48683075, 0x934d5109, 0xe5ac5e94, 0x7f2478a4, 0x09c57739,
+    0xd2e01645, 0xa40119d8, 0x64abd4bd, 0x124adb20, 0xc96fba5c,
+    0xbf8eb5c1, 0x493a2197, 0x3fdb2e0a, 0xe4fe4f76, 0x921f40eb,
+    0x52b58d8e, 0x24548213, 0xff71e36f, 0x8990ecf2, 0xcb60ae0f,
+    0xbd81a192, 0x66a4c0ee, 0x1045cf73, 0xd0ef0216, 0xa60e0d8b,
+    0x7d2b6cf7, 0x0bca636a, 0xfd7ef73c, 0x8b9ff8a1, 0x50ba99dd,
+    0x265b9640, 0xe6f15b25, 0x901054b8, 0x4b3535c4, 0x3dd43a59,
+    0xa75c1c69, 0xd1bd13f4, 0x0a987288, 0x7c797d15, 0xbcd3b070,
+    0xca32bfed, 0x1117de91, 0x67f6d10c, 0x9142455a, 0xe7a34ac7,
+    0x3c862bbb, 0x4a672426, 0x8acde943, 0xfc2ce6de, 0x270987a2,
+    0x51e8883f},
+   {0x00000000, 0xe8dbfbb9, 0x91b186a8, 0x796a7d11, 0x63657c8a,
+    0x8bbe8733, 0xf2d4fa22, 0x1a0f019b, 0x87cc89cf, 0x6f177276,
+    0x167d0f67, 0xfea6f4de, 0xe4a9f545, 0x0c720efc, 0x751873ed,
+    0x9dc38854, 0x4f9f6244, 0xa74499fd, 0xde2ee4ec, 0x36f51f55,
+    0x2cfa1ece, 0xc421e577, 0xbd4b9866, 0x559063df, 0xc853eb8b,
+    0x20881032, 0x59e26d23, 0xb139969a, 0xab369701, 0x43ed6cb8,
+    0x3a8711a9, 0xd25cea10, 0x9e3ec588, 0x76e53e31, 0x0f8f4320,
+    0xe754b899, 0xfd5bb902, 0x158042bb, 0x6cea3faa, 0x8431c413,
+    0x19f24c47, 0xf129b7fe, 0x8843caef, 0x60983156, 0x7a9730cd,
+    0x924ccb74, 0xeb26b665, 0x03fd4ddc, 0xd1a1a7cc, 0x397a5c75,
+    0x40102164, 0xa8cbdadd, 0xb2c4db46, 0x5a1f20ff, 0x23755dee,
+    0xcbaea657, 0x566d2e03, 0xbeb6d5ba, 0xc7dca8ab, 0x2f075312,
+    0x35085289, 0xddd3a930, 0xa4b9d421, 0x4c622f98, 0x7d7bfbca,
+    0x95a00073, 0xecca7d62, 0x041186db, 0x1e1e8740, 0xf6c57cf9,
+    0x8faf01e8, 0x6774fa51, 0xfab77205, 0x126c89bc, 0x6b06f4ad,
+    0x83dd0f14, 0x99d20e8f, 0x7109f536, 0x08638827, 0xe0b8739e,
+    0x32e4998e, 0xda3f6237, 0xa3551f26, 0x4b8ee49f, 0x5181e504,
+    0xb95a1ebd, 0xc03063ac, 0x28eb9815, 0xb5281041, 0x5df3ebf8,
+    0x249996e9, 0xcc426d50, 0xd64d6ccb, 0x3e969772, 0x47fcea63,
+    0xaf2711da, 0xe3453e42, 0x0b9ec5fb, 0x72f4b8ea, 0x9a2f4353,
+    0x802042c8, 0x68fbb971, 0x1191c460, 0xf94a3fd9, 0x6489b78d,
+    0x8c524c34, 0xf5383125, 0x1de3ca9c, 0x07eccb07, 0xef3730be,
+    0x965d4daf, 0x7e86b616, 0xacda5c06, 0x4401a7bf, 0x3d6bdaae,
+    0xd5b02117, 0xcfbf208c, 0x2764db35, 0x5e0ea624, 0xb6d55d9d,
+    0x2b16d5c9, 0xc3cd2e70, 0xbaa75361, 0x527ca8d8, 0x4873a943,
+    0xa0a852fa, 0xd9c22feb, 0x3119d452, 0xbbf0874e, 0x532b7cf7,
+    0x2a4101e6, 0xc29afa5f, 0xd895fbc4, 0x304e007d, 0x49247d6c,
+    0xa1ff86d5, 0x3c3c0e81, 0xd4e7f538, 0xad8d8829, 0x45567390,
+    0x5f59720b, 0xb78289b2, 0xcee8f4a3, 0x26330f1a, 0xf46fe50a,
+    0x1cb41eb3, 0x65de63a2, 0x8d05981b, 0x970a9980, 0x7fd16239,
+    0x06bb1f28, 0xee60e491, 0x73a36cc5, 0x9b78977c, 0xe212ea6d,
+    0x0ac911d4, 0x10c6104f, 0xf81debf6, 0x817796e7, 0x69ac6d5e,
+    0x25ce42c6, 0xcd15b97f, 0xb47fc46e, 0x5ca43fd7, 0x46ab3e4c,
+    0xae70c5f5, 0xd71ab8e4, 0x3fc1435d, 0xa202cb09, 0x4ad930b0,
+    0x33b34da1, 0xdb68b618, 0xc167b783, 0x29bc4c3a, 0x50d6312b,
+    0xb80dca92, 0x6a512082, 0x828adb3b, 0xfbe0a62a, 0x133b5d93,
+    0x09345c08, 0xe1efa7b1, 0x9885daa0, 0x705e2119, 0xed9da94d,
+    0x054652f4, 0x7c2c2fe5, 0x94f7d45c, 0x8ef8d5c7, 0x66232e7e,
+    0x1f49536f, 0xf792a8d6, 0xc68b7c84, 0x2e50873d, 0x573afa2c,
+    0xbfe10195, 0xa5ee000e, 0x4d35fbb7, 0x345f86a6, 0xdc847d1f,
+    0x4147f54b, 0xa99c0ef2, 0xd0f673e3, 0x382d885a, 0x222289c1,
+    0xcaf97278, 0xb3930f69, 0x5b48f4d0, 0x89141ec0, 0x61cfe579,
+    0x18a59868, 0xf07e63d1, 0xea71624a, 0x02aa99f3, 0x7bc0e4e2,
+    0x931b1f5b, 0x0ed8970f, 0xe6036cb6, 0x9f6911a7, 0x77b2ea1e,
+    0x6dbdeb85, 0x8566103c, 0xfc0c6d2d, 0x14d79694, 0x58b5b90c,
+    0xb06e42b5, 0xc9043fa4, 0x21dfc41d, 0x3bd0c586, 0xd30b3e3f,
+    0xaa61432e, 0x42bab897, 0xdf7930c3, 0x37a2cb7a, 0x4ec8b66b,
+    0xa6134dd2, 0xbc1c4c49, 0x54c7b7f0, 0x2dadcae1, 0xc5763158,
+    0x172adb48, 0xfff120f1, 0x869b5de0, 0x6e40a659, 0x744fa7c2,
+    0x9c945c7b, 0xe5fe216a, 0x0d25dad3, 0x90e65287, 0x783da93e,
+    0x0157d42f, 0xe98c2f96, 0xf3832e0d, 0x1b58d5b4, 0x6232a8a5,
+    0x8ae9531c},
+   {0x00000000, 0x919168ae, 0x6325a087, 0xf2b4c829, 0x874c31d4,
+    0x16dd597a, 0xe4699153, 0x75f8f9fd, 0x4f9f1373, 0xde0e7bdd,
+    0x2cbab3f4, 0xbd2bdb5a, 0xc8d322a7, 0x59424a09, 0xabf68220,
+    0x3a67ea8e, 0x9e3e27e6, 0x0faf4f48, 0xfd1b8761, 0x6c8aefcf,
+    0x19721632, 0x88e37e9c, 0x7a57b6b5, 0xebc6de1b, 0xd1a13495,
+    0x40305c3b, 0xb2849412, 0x2315fcbc, 0x56ed0541, 0xc77c6def,
+    0x35c8a5c6, 0xa459cd68, 0x7d7b3f17, 0xecea57b9, 0x1e5e9f90,
+    0x8fcff73e, 0xfa370ec3, 0x6ba6666d, 0x9912ae44, 0x0883c6ea,
+    0x32e42c64, 0xa37544ca, 0x51c18ce3, 0xc050e44d, 0xb5a81db0,
+    0x2439751e, 0xd68dbd37, 0x471cd599, 0xe34518f1, 0x72d4705f,
+    0x8060b876, 0x11f1d0d8, 0x64092925, 0xf598418b, 0x072c89a2,
+    0x96bde10c, 0xacda0b82, 0x3d4b632c, 0xcfffab05, 0x5e6ec3ab,
+    0x2b963a56, 0xba0752f8, 0x48b39ad1, 0xd922f27f, 0xfaf67e2e,
+    0x6b671680, 0x99d3dea9, 0x0842b607, 0x7dba4ffa, 0xec2b2754,
+    0x1e9fef7d, 0x8f0e87d3, 0xb5696d5d, 0x24f805f3, 0xd64ccdda,
+    0x47dda574, 0x32255c89, 0xa3b43427, 0x5100fc0e, 0xc09194a0,
+    0x64c859c8, 0xf5593166, 0x07edf94f, 0x967c91e1, 0xe384681c,
+    0x721500b2, 0x80a1c89b, 0x1130a035, 0x2b574abb, 0xbac62215,
+    0x4872ea3c, 0xd9e38292, 0xac1b7b6f, 0x3d8a13c1, 0xcf3edbe8,
+    0x5eafb346, 0x878d4139, 0x161c2997, 0xe4a8e1be, 0x75398910,
+    0x00c170ed, 0x91501843, 0x63e4d06a, 0xf275b8c4, 0xc812524a,
+    0x59833ae4, 0xab37f2cd, 0x3aa69a63, 0x4f5e639e, 0xdecf0b30,
+    0x2c7bc319, 0xbdeaabb7, 0x19b366df, 0x88220e71, 0x7a96c658,
+    0xeb07aef6, 0x9eff570b, 0x0f6e3fa5, 0xfddaf78c, 0x6c4b9f22,
+    0x562c75ac, 0xc7bd1d02, 0x3509d52b, 0xa498bd85, 0xd1604478,
+    0x40f12cd6, 0xb245e4ff, 0x23d48c51, 0xf4edfd5c, 0x657c95f2,
+    0x97c85ddb, 0x06593575, 0x73a1cc88, 0xe230a426, 0x10846c0f,
+    0x811504a1, 0xbb72ee2f, 0x2ae38681, 0xd8574ea8, 0x49c62606,
+    0x3c3edffb, 0xadafb755, 0x5f1b7f7c, 0xce8a17d2, 0x6ad3daba,
+    0xfb42b214, 0x09f67a3d, 0x98671293, 0xed9feb6e, 0x7c0e83c0,
+    0x8eba4be9, 0x1f2b2347, 0x254cc9c9, 0xb4dda167, 0x4669694e,
+    0xd7f801e0, 0xa200f81d, 0x339190b3, 0xc125589a, 0x50b43034,
+    0x8996c24b, 0x1807aae5, 0xeab362cc, 0x7b220a62, 0x0edaf39f,
+    0x9f4b9b31, 0x6dff5318, 0xfc6e3bb6, 0xc609d138, 0x5798b996,
+    0xa52c71bf, 0x34bd1911, 0x4145e0ec, 0xd0d48842, 0x2260406b,
+    0xb3f128c5, 0x17a8e5ad, 0x86398d03, 0x748d452a, 0xe51c2d84,
+    0x90e4d479, 0x0175bcd7, 0xf3c174fe, 0x62501c50, 0x5837f6de,
+    0xc9a69e70, 0x3b125659, 0xaa833ef7, 0xdf7bc70a, 0x4eeaafa4,
+    0xbc5e678d, 0x2dcf0f23, 0x0e1b8372, 0x9f8aebdc, 0x6d3e23f5,
+    0xfcaf4b5b, 0x8957b2a6, 0x18c6da08, 0xea721221, 0x7be37a8f,
+    0x41849001, 0xd015f8af, 0x22a13086, 0xb3305828, 0xc6c8a1d5,
+    0x5759c97b, 0xa5ed0152, 0x347c69fc, 0x9025a494, 0x01b4cc3a,
+    0xf3000413, 0x62916cbd, 0x17699540, 0x86f8fdee, 0x744c35c7,
+    0xe5dd5d69, 0xdfbab7e7, 0x4e2bdf49, 0xbc9f1760, 0x2d0e7fce,
+    0x58f68633, 0xc967ee9d, 0x3bd326b4, 0xaa424e1a, 0x7360bc65,
+    0xe2f1d4cb, 0x10451ce2, 0x81d4744c, 0xf42c8db1, 0x65bde51f,
+    0x97092d36, 0x06984598, 0x3cffaf16, 0xad6ec7b8, 0x5fda0f91,
+    0xce4b673f, 0xbbb39ec2, 0x2a22f66c, 0xd8963e45, 0x490756eb,
+    0xed5e9b83, 0x7ccff32d, 0x8e7b3b04, 0x1fea53aa, 0x6a12aa57,
+    0xfb83c2f9, 0x09370ad0, 0x98a6627e, 0xa2c188f0, 0x3350e05e,
+    0xc1e42877, 0x507540d9, 0x258db924, 0xb41cd18a, 0x46a819a3,
+    0xd739710d}};
+
+#endif
+
+#endif
+
+#if N == 5
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xaf449247, 0x85f822cf, 0x2abcb088, 0xd08143df,
+    0x7fc5d198, 0x55796110, 0xfa3df357, 0x7a7381ff, 0xd53713b8,
+    0xff8ba330, 0x50cf3177, 0xaaf2c220, 0x05b65067, 0x2f0ae0ef,
+    0x804e72a8, 0xf4e703fe, 0x5ba391b9, 0x711f2131, 0xde5bb376,
+    0x24664021, 0x8b22d266, 0xa19e62ee, 0x0edaf0a9, 0x8e948201,
+    0x21d01046, 0x0b6ca0ce, 0xa4283289, 0x5e15c1de, 0xf1515399,
+    0xdbede311, 0x74a97156, 0x32bf01bd, 0x9dfb93fa, 0xb7472372,
+    0x1803b135, 0xe23e4262, 0x4d7ad025, 0x67c660ad, 0xc882f2ea,
+    0x48cc8042, 0xe7881205, 0xcd34a28d, 0x627030ca, 0x984dc39d,
+    0x370951da, 0x1db5e152, 0xb2f17315, 0xc6580243, 0x691c9004,
+    0x43a0208c, 0xece4b2cb, 0x16d9419c, 0xb99dd3db, 0x93216353,
+    0x3c65f114, 0xbc2b83bc, 0x136f11fb, 0x39d3a173, 0x96973334,
+    0x6caac063, 0xc3ee5224, 0xe952e2ac, 0x461670eb, 0x657e037a,
+    0xca3a913d, 0xe08621b5, 0x4fc2b3f2, 0xb5ff40a5, 0x1abbd2e2,
+    0x3007626a, 0x9f43f02d, 0x1f0d8285, 0xb04910c2, 0x9af5a04a,
+    0x35b1320d, 0xcf8cc15a, 0x60c8531d, 0x4a74e395, 0xe53071d2,
+    0x91990084, 0x3edd92c3, 0x1461224b, 0xbb25b00c, 0x4118435b,
+    0xee5cd11c, 0xc4e06194, 0x6ba4f3d3, 0xebea817b, 0x44ae133c,
+    0x6e12a3b4, 0xc15631f3, 0x3b6bc2a4, 0x942f50e3, 0xbe93e06b,
+    0x11d7722c, 0x57c102c7, 0xf8859080, 0xd2392008, 0x7d7db24f,
+    0x87404118, 0x2804d35f, 0x02b863d7, 0xadfcf190, 0x2db28338,
+    0x82f6117f, 0xa84aa1f7, 0x070e33b0, 0xfd33c0e7, 0x527752a0,
+    0x78cbe228, 0xd78f706f, 0xa3260139, 0x0c62937e, 0x26de23f6,
+    0x899ab1b1, 0x73a742e6, 0xdce3d0a1, 0xf65f6029, 0x591bf26e,
+    0xd95580c6, 0x76111281, 0x5cada209, 0xf3e9304e, 0x09d4c319,
+    0xa690515e, 0x8c2ce1d6, 0x23687391, 0xcafc06f4, 0x65b894b3,
+    0x4f04243b, 0xe040b67c, 0x1a7d452b, 0xb539d76c, 0x9f8567e4,
+    0x30c1f5a3, 0xb08f870b, 0x1fcb154c, 0x3577a5c4, 0x9a333783,
+    0x600ec4d4, 0xcf4a5693, 0xe5f6e61b, 0x4ab2745c, 0x3e1b050a,
+    0x915f974d, 0xbbe327c5, 0x14a7b582, 0xee9a46d5, 0x41ded492,
+    0x6b62641a, 0xc426f65d, 0x446884f5, 0xeb2c16b2, 0xc190a63a,
+    0x6ed4347d, 0x94e9c72a, 0x3bad556d, 0x1111e5e5, 0xbe5577a2,
+    0xf8430749, 0x5707950e, 0x7dbb2586, 0xd2ffb7c1, 0x28c24496,
+    0x8786d6d1, 0xad3a6659, 0x027ef41e, 0x823086b6, 0x2d7414f1,
+    0x07c8a479, 0xa88c363e, 0x52b1c569, 0xfdf5572e, 0xd749e7a6,
+    0x780d75e1, 0x0ca404b7, 0xa3e096f0, 0x895c2678, 0x2618b43f,
+    0xdc254768, 0x7361d52f, 0x59dd65a7, 0xf699f7e0, 0x76d78548,
+    0xd993170f, 0xf32fa787, 0x5c6b35c0, 0xa656c697, 0x091254d0,
+    0x23aee458, 0x8cea761f, 0xaf82058e, 0x00c697c9, 0x2a7a2741,
+    0x853eb506, 0x7f034651, 0xd047d416, 0xfafb649e, 0x55bff6d9,
+    0xd5f18471, 0x7ab51636, 0x5009a6be, 0xff4d34f9, 0x0570c7ae,
+    0xaa3455e9, 0x8088e561, 0x2fcc7726, 0x5b650670, 0xf4219437,
+    0xde9d24bf, 0x71d9b6f8, 0x8be445af, 0x24a0d7e8, 0x0e1c6760,
+    0xa158f527, 0x2116878f, 0x8e5215c8, 0xa4eea540, 0x0baa3707,
+    0xf197c450, 0x5ed35617, 0x746fe69f, 0xdb2b74d8, 0x9d3d0433,
+    0x32799674, 0x18c526fc, 0xb781b4bb, 0x4dbc47ec, 0xe2f8d5ab,
+    0xc8446523, 0x6700f764, 0xe74e85cc, 0x480a178b, 0x62b6a703,
+    0xcdf23544, 0x37cfc613, 0x988b5454, 0xb237e4dc, 0x1d73769b,
+    0x69da07cd, 0xc69e958a, 0xec222502, 0x4366b745, 0xb95b4412,
+    0x161fd655, 0x3ca366dd, 0x93e7f49a, 0x13a98632, 0xbced1475,
+    0x9651a4fd, 0x391536ba, 0xc328c5ed, 0x6c6c57aa, 0x46d0e722,
+    0xe9947565},
+   {0x00000000, 0x4e890ba9, 0x9d121752, 0xd39b1cfb, 0xe15528e5,
+    0xafdc234c, 0x7c473fb7, 0x32ce341e, 0x19db578b, 0x57525c22,
+    0x84c940d9, 0xca404b70, 0xf88e7f6e, 0xb60774c7, 0x659c683c,
+    0x2b156395, 0x33b6af16, 0x7d3fa4bf, 0xaea4b844, 0xe02db3ed,
+    0xd2e387f3, 0x9c6a8c5a, 0x4ff190a1, 0x01789b08, 0x2a6df89d,
+    0x64e4f334, 0xb77fefcf, 0xf9f6e466, 0xcb38d078, 0x85b1dbd1,
+    0x562ac72a, 0x18a3cc83, 0x676d5e2c, 0x29e45585, 0xfa7f497e,
+    0xb4f642d7, 0x863876c9, 0xc8b17d60, 0x1b2a619b, 0x55a36a32,
+    0x7eb609a7, 0x303f020e, 0xe3a41ef5, 0xad2d155c, 0x9fe32142,
+    0xd16a2aeb, 0x02f13610, 0x4c783db9, 0x54dbf13a, 0x1a52fa93,
+    0xc9c9e668, 0x8740edc1, 0xb58ed9df, 0xfb07d276, 0x289cce8d,
+    0x6615c524, 0x4d00a6b1, 0x0389ad18, 0xd012b1e3, 0x9e9bba4a,
+    0xac558e54, 0xe2dc85fd, 0x31479906, 0x7fce92af, 0xcedabc58,
+    0x8053b7f1, 0x53c8ab0a, 0x1d41a0a3, 0x2f8f94bd, 0x61069f14,
+    0xb29d83ef, 0xfc148846, 0xd701ebd3, 0x9988e07a, 0x4a13fc81,
+    0x049af728, 0x3654c336, 0x78ddc89f, 0xab46d464, 0xe5cfdfcd,
+    0xfd6c134e, 0xb3e518e7, 0x607e041c, 0x2ef70fb5, 0x1c393bab,
+    0x52b03002, 0x812b2cf9, 0xcfa22750, 0xe4b744c5, 0xaa3e4f6c,
+    0x79a55397, 0x372c583e, 0x05e26c20, 0x4b6b6789, 0x98f07b72,
+    0xd67970db, 0xa9b7e274, 0xe73ee9dd, 0x34a5f526, 0x7a2cfe8f,
+    0x48e2ca91, 0x066bc138, 0xd5f0ddc3, 0x9b79d66a, 0xb06cb5ff,
+    0xfee5be56, 0x2d7ea2ad, 0x63f7a904, 0x51399d1a, 0x1fb096b3,
+    0xcc2b8a48, 0x82a281e1, 0x9a014d62, 0xd48846cb, 0x07135a30,
+    0x499a5199, 0x7b546587, 0x35dd6e2e, 0xe64672d5, 0xa8cf797c,
+    0x83da1ae9, 0xcd531140, 0x1ec80dbb, 0x50410612, 0x628f320c,
+    0x2c0639a5, 0xff9d255e, 0xb1142ef7, 0x46c47ef1, 0x084d7558,
+    0xdbd669a3, 0x955f620a, 0xa7915614, 0xe9185dbd, 0x3a834146,
+    0x740a4aef, 0x5f1f297a, 0x119622d3, 0xc20d3e28, 0x8c843581,
+    0xbe4a019f, 0xf0c30a36, 0x235816cd, 0x6dd11d64, 0x7572d1e7,
+    0x3bfbda4e, 0xe860c6b5, 0xa6e9cd1c, 0x9427f902, 0xdaaef2ab,
+    0x0935ee50, 0x47bce5f9, 0x6ca9866c, 0x22208dc5, 0xf1bb913e,
+    0xbf329a97, 0x8dfcae89, 0xc375a520, 0x10eeb9db, 0x5e67b272,
+    0x21a920dd, 0x6f202b74, 0xbcbb378f, 0xf2323c26, 0xc0fc0838,
+    0x8e750391, 0x5dee1f6a, 0x136714c3, 0x38727756, 0x76fb7cff,
+    0xa5606004, 0xebe96bad, 0xd9275fb3, 0x97ae541a, 0x443548e1,
+    0x0abc4348, 0x121f8fcb, 0x5c968462, 0x8f0d9899, 0xc1849330,
+    0xf34aa72e, 0xbdc3ac87, 0x6e58b07c, 0x20d1bbd5, 0x0bc4d840,
+    0x454dd3e9, 0x96d6cf12, 0xd85fc4bb, 0xea91f0a5, 0xa418fb0c,
+    0x7783e7f7, 0x390aec5e, 0x881ec2a9, 0xc697c900, 0x150cd5fb,
+    0x5b85de52, 0x694bea4c, 0x27c2e1e5, 0xf459fd1e, 0xbad0f6b7,
+    0x91c59522, 0xdf4c9e8b, 0x0cd78270, 0x425e89d9, 0x7090bdc7,
+    0x3e19b66e, 0xed82aa95, 0xa30ba13c, 0xbba86dbf, 0xf5216616,
+    0x26ba7aed, 0x68337144, 0x5afd455a, 0x14744ef3, 0xc7ef5208,
+    0x896659a1, 0xa2733a34, 0xecfa319d, 0x3f612d66, 0x71e826cf,
+    0x432612d1, 0x0daf1978, 0xde340583, 0x90bd0e2a, 0xef739c85,
+    0xa1fa972c, 0x72618bd7, 0x3ce8807e, 0x0e26b460, 0x40afbfc9,
+    0x9334a332, 0xddbda89b, 0xf6a8cb0e, 0xb821c0a7, 0x6bbadc5c,
+    0x2533d7f5, 0x17fde3eb, 0x5974e842, 0x8aeff4b9, 0xc466ff10,
+    0xdcc53393, 0x924c383a, 0x41d724c1, 0x0f5e2f68, 0x3d901b76,
+    0x731910df, 0xa0820c24, 0xee0b078d, 0xc51e6418, 0x8b976fb1,
+    0x580c734a, 0x168578e3, 0x244b4cfd, 0x6ac24754, 0xb9595baf,
+    0xf7d05006},
+   {0x00000000, 0x8d88fde2, 0xc060fd85, 0x4de80067, 0x5bb0fd4b,
+    0xd63800a9, 0x9bd000ce, 0x1658fd2c, 0xb761fa96, 0x3ae90774,
+    0x77010713, 0xfa89faf1, 0xecd107dd, 0x6159fa3f, 0x2cb1fa58,
+    0xa13907ba, 0xb5b2f36d, 0x383a0e8f, 0x75d20ee8, 0xf85af30a,
+    0xee020e26, 0x638af3c4, 0x2e62f3a3, 0xa3ea0e41, 0x02d309fb,
+    0x8f5bf419, 0xc2b3f47e, 0x4f3b099c, 0x5963f4b0, 0xd4eb0952,
+    0x99030935, 0x148bf4d7, 0xb014e09b, 0x3d9c1d79, 0x70741d1e,
+    0xfdfce0fc, 0xeba41dd0, 0x662ce032, 0x2bc4e055, 0xa64c1db7,
+    0x07751a0d, 0x8afde7ef, 0xc715e788, 0x4a9d1a6a, 0x5cc5e746,
+    0xd14d1aa4, 0x9ca51ac3, 0x112de721, 0x05a613f6, 0x882eee14,
+    0xc5c6ee73, 0x484e1391, 0x5e16eebd, 0xd39e135f, 0x9e761338,
+    0x13feeeda, 0xb2c7e960, 0x3f4f1482, 0x72a714e5, 0xff2fe907,
+    0xe977142b, 0x64ffe9c9, 0x2917e9ae, 0xa49f144c, 0xbb58c777,
+    0x36d03a95, 0x7b383af2, 0xf6b0c710, 0xe0e83a3c, 0x6d60c7de,
+    0x2088c7b9, 0xad003a5b, 0x0c393de1, 0x81b1c003, 0xcc59c064,
+    0x41d13d86, 0x5789c0aa, 0xda013d48, 0x97e93d2f, 0x1a61c0cd,
+    0x0eea341a, 0x8362c9f8, 0xce8ac99f, 0x4302347d, 0x555ac951,
+    0xd8d234b3, 0x953a34d4, 0x18b2c936, 0xb98bce8c, 0x3403336e,
+    0x79eb3309, 0xf463ceeb, 0xe23b33c7, 0x6fb3ce25, 0x225bce42,
+    0xafd333a0, 0x0b4c27ec, 0x86c4da0e, 0xcb2cda69, 0x46a4278b,
+    0x50fcdaa7, 0xdd742745, 0x909c2722, 0x1d14dac0, 0xbc2ddd7a,
+    0x31a52098, 0x7c4d20ff, 0xf1c5dd1d, 0xe79d2031, 0x6a15ddd3,
+    0x27fdddb4, 0xaa752056, 0xbefed481, 0x33762963, 0x7e9e2904,
+    0xf316d4e6, 0xe54e29ca, 0x68c6d428, 0x252ed44f, 0xa8a629ad,
+    0x099f2e17, 0x8417d3f5, 0xc9ffd392, 0x44772e70, 0x522fd35c,
+    0xdfa72ebe, 0x924f2ed9, 0x1fc7d33b, 0xadc088af, 0x2048754d,
+    0x6da0752a, 0xe02888c8, 0xf67075e4, 0x7bf88806, 0x36108861,
+    0xbb987583, 0x1aa17239, 0x97298fdb, 0xdac18fbc, 0x5749725e,
+    0x41118f72, 0xcc997290, 0x817172f7, 0x0cf98f15, 0x18727bc2,
+    0x95fa8620, 0xd8128647, 0x559a7ba5, 0x43c28689, 0xce4a7b6b,
+    0x83a27b0c, 0x0e2a86ee, 0xaf138154, 0x229b7cb6, 0x6f737cd1,
+    0xe2fb8133, 0xf4a37c1f, 0x792b81fd, 0x34c3819a, 0xb94b7c78,
+    0x1dd46834, 0x905c95d6, 0xddb495b1, 0x503c6853, 0x4664957f,
+    0xcbec689d, 0x860468fa, 0x0b8c9518, 0xaab592a2, 0x273d6f40,
+    0x6ad56f27, 0xe75d92c5, 0xf1056fe9, 0x7c8d920b, 0x3165926c,
+    0xbced6f8e, 0xa8669b59, 0x25ee66bb, 0x680666dc, 0xe58e9b3e,
+    0xf3d66612, 0x7e5e9bf0, 0x33b69b97, 0xbe3e6675, 0x1f0761cf,
+    0x928f9c2d, 0xdf679c4a, 0x52ef61a8, 0x44b79c84, 0xc93f6166,
+    0x84d76101, 0x095f9ce3, 0x16984fd8, 0x9b10b23a, 0xd6f8b25d,
+    0x5b704fbf, 0x4d28b293, 0xc0a04f71, 0x8d484f16, 0x00c0b2f4,
+    0xa1f9b54e, 0x2c7148ac, 0x619948cb, 0xec11b529, 0xfa494805,
+    0x77c1b5e7, 0x3a29b580, 0xb7a14862, 0xa32abcb5, 0x2ea24157,
+    0x634a4130, 0xeec2bcd2, 0xf89a41fe, 0x7512bc1c, 0x38fabc7b,
+    0xb5724199, 0x144b4623, 0x99c3bbc1, 0xd42bbba6, 0x59a34644,
+    0x4ffbbb68, 0xc273468a, 0x8f9b46ed, 0x0213bb0f, 0xa68caf43,
+    0x2b0452a1, 0x66ec52c6, 0xeb64af24, 0xfd3c5208, 0x70b4afea,
+    0x3d5caf8d, 0xb0d4526f, 0x11ed55d5, 0x9c65a837, 0xd18da850,
+    0x5c0555b2, 0x4a5da89e, 0xc7d5557c, 0x8a3d551b, 0x07b5a8f9,
+    0x133e5c2e, 0x9eb6a1cc, 0xd35ea1ab, 0x5ed65c49, 0x488ea165,
+    0xc5065c87, 0x88ee5ce0, 0x0566a102, 0xa45fa6b8, 0x29d75b5a,
+    0x643f5b3d, 0xe9b7a6df, 0xffef5bf3, 0x7267a611, 0x3f8fa676,
+    0xb2075b94},
+   {0x00000000, 0x80f0171f, 0xda91287f, 0x5a613f60, 0x6e5356bf,
+    0xeea341a0, 0xb4c27ec0, 0x343269df, 0xdca6ad7e, 0x5c56ba61,
+    0x06378501, 0x86c7921e, 0xb2f5fbc1, 0x3205ecde, 0x6864d3be,
+    0xe894c4a1, 0x623c5cbd, 0xe2cc4ba2, 0xb8ad74c2, 0x385d63dd,
+    0x0c6f0a02, 0x8c9f1d1d, 0xd6fe227d, 0x560e3562, 0xbe9af1c3,
+    0x3e6ae6dc, 0x640bd9bc, 0xe4fbcea3, 0xd0c9a77c, 0x5039b063,
+    0x0a588f03, 0x8aa8981c, 0xc478b97a, 0x4488ae65, 0x1ee99105,
+    0x9e19861a, 0xaa2befc5, 0x2adbf8da, 0x70bac7ba, 0xf04ad0a5,
+    0x18de1404, 0x982e031b, 0xc24f3c7b, 0x42bf2b64, 0x768d42bb,
+    0xf67d55a4, 0xac1c6ac4, 0x2cec7ddb, 0xa644e5c7, 0x26b4f2d8,
+    0x7cd5cdb8, 0xfc25daa7, 0xc817b378, 0x48e7a467, 0x12869b07,
+    0x92768c18, 0x7ae248b9, 0xfa125fa6, 0xa07360c6, 0x208377d9,
+    0x14b11e06, 0x94410919, 0xce203679, 0x4ed02166, 0x538074b5,
+    0xd37063aa, 0x89115cca, 0x09e14bd5, 0x3dd3220a, 0xbd233515,
+    0xe7420a75, 0x67b21d6a, 0x8f26d9cb, 0x0fd6ced4, 0x55b7f1b4,
+    0xd547e6ab, 0xe1758f74, 0x6185986b, 0x3be4a70b, 0xbb14b014,
+    0x31bc2808, 0xb14c3f17, 0xeb2d0077, 0x6bdd1768, 0x5fef7eb7,
+    0xdf1f69a8, 0x857e56c8, 0x058e41d7, 0xed1a8576, 0x6dea9269,
+    0x378bad09, 0xb77bba16, 0x8349d3c9, 0x03b9c4d6, 0x59d8fbb6,
+    0xd928eca9, 0x97f8cdcf, 0x1708dad0, 0x4d69e5b0, 0xcd99f2af,
+    0xf9ab9b70, 0x795b8c6f, 0x233ab30f, 0xa3caa410, 0x4b5e60b1,
+    0xcbae77ae, 0x91cf48ce, 0x113f5fd1, 0x250d360e, 0xa5fd2111,
+    0xff9c1e71, 0x7f6c096e, 0xf5c49172, 0x7534866d, 0x2f55b90d,
+    0xafa5ae12, 0x9b97c7cd, 0x1b67d0d2, 0x4106efb2, 0xc1f6f8ad,
+    0x29623c0c, 0xa9922b13, 0xf3f31473, 0x7303036c, 0x47316ab3,
+    0xc7c17dac, 0x9da042cc, 0x1d5055d3, 0xa700e96a, 0x27f0fe75,
+    0x7d91c115, 0xfd61d60a, 0xc953bfd5, 0x49a3a8ca, 0x13c297aa,
+    0x933280b5, 0x7ba64414, 0xfb56530b, 0xa1376c6b, 0x21c77b74,
+    0x15f512ab, 0x950505b4, 0xcf643ad4, 0x4f942dcb, 0xc53cb5d7,
+    0x45cca2c8, 0x1fad9da8, 0x9f5d8ab7, 0xab6fe368, 0x2b9ff477,
+    0x71fecb17, 0xf10edc08, 0x199a18a9, 0x996a0fb6, 0xc30b30d6,
+    0x43fb27c9, 0x77c94e16, 0xf7395909, 0xad586669, 0x2da87176,
+    0x63785010, 0xe388470f, 0xb9e9786f, 0x39196f70, 0x0d2b06af,
+    0x8ddb11b0, 0xd7ba2ed0, 0x574a39cf, 0xbfdefd6e, 0x3f2eea71,
+    0x654fd511, 0xe5bfc20e, 0xd18dabd1, 0x517dbcce, 0x0b1c83ae,
+    0x8bec94b1, 0x01440cad, 0x81b41bb2, 0xdbd524d2, 0x5b2533cd,
+    0x6f175a12, 0xefe74d0d, 0xb586726d, 0x35766572, 0xdde2a1d3,
+    0x5d12b6cc, 0x077389ac, 0x87839eb3, 0xb3b1f76c, 0x3341e073,
+    0x6920df13, 0xe9d0c80c, 0xf4809ddf, 0x74708ac0, 0x2e11b5a0,
+    0xaee1a2bf, 0x9ad3cb60, 0x1a23dc7f, 0x4042e31f, 0xc0b2f400,
+    0x282630a1, 0xa8d627be, 0xf2b718de, 0x72470fc1, 0x4675661e,
+    0xc6857101, 0x9ce44e61, 0x1c14597e, 0x96bcc162, 0x164cd67d,
+    0x4c2de91d, 0xccddfe02, 0xf8ef97dd, 0x781f80c2, 0x227ebfa2,
+    0xa28ea8bd, 0x4a1a6c1c, 0xcaea7b03, 0x908b4463, 0x107b537c,
+    0x24493aa3, 0xa4b92dbc, 0xfed812dc, 0x7e2805c3, 0x30f824a5,
+    0xb00833ba, 0xea690cda, 0x6a991bc5, 0x5eab721a, 0xde5b6505,
+    0x843a5a65, 0x04ca4d7a, 0xec5e89db, 0x6cae9ec4, 0x36cfa1a4,
+    0xb63fb6bb, 0x820ddf64, 0x02fdc87b, 0x589cf71b, 0xd86ce004,
+    0x52c47818, 0xd2346f07, 0x88555067, 0x08a54778, 0x3c972ea7,
+    0xbc6739b8, 0xe60606d8, 0x66f611c7, 0x8e62d566, 0x0e92c279,
+    0x54f3fd19, 0xd403ea06, 0xe03183d9, 0x60c194c6, 0x3aa0aba6,
+    0xba50bcb9},
+   {0x00000000, 0x9570d495, 0xf190af6b, 0x64e07bfe, 0x38505897,
+    0xad208c02, 0xc9c0f7fc, 0x5cb02369, 0x70a0b12e, 0xe5d065bb,
+    0x81301e45, 0x1440cad0, 0x48f0e9b9, 0xdd803d2c, 0xb96046d2,
+    0x2c109247, 0xe141625c, 0x7431b6c9, 0x10d1cd37, 0x85a119a2,
+    0xd9113acb, 0x4c61ee5e, 0x288195a0, 0xbdf14135, 0x91e1d372,
+    0x049107e7, 0x60717c19, 0xf501a88c, 0xa9b18be5, 0x3cc15f70,
+    0x5821248e, 0xcd51f01b, 0x19f3c2f9, 0x8c83166c, 0xe8636d92,
+    0x7d13b907, 0x21a39a6e, 0xb4d34efb, 0xd0333505, 0x4543e190,
+    0x695373d7, 0xfc23a742, 0x98c3dcbc, 0x0db30829, 0x51032b40,
+    0xc473ffd5, 0xa093842b, 0x35e350be, 0xf8b2a0a5, 0x6dc27430,
+    0x09220fce, 0x9c52db5b, 0xc0e2f832, 0x55922ca7, 0x31725759,
+    0xa40283cc, 0x8812118b, 0x1d62c51e, 0x7982bee0, 0xecf26a75,
+    0xb042491c, 0x25329d89, 0x41d2e677, 0xd4a232e2, 0x33e785f2,
+    0xa6975167, 0xc2772a99, 0x5707fe0c, 0x0bb7dd65, 0x9ec709f0,
+    0xfa27720e, 0x6f57a69b, 0x434734dc, 0xd637e049, 0xb2d79bb7,
+    0x27a74f22, 0x7b176c4b, 0xee67b8de, 0x8a87c320, 0x1ff717b5,
+    0xd2a6e7ae, 0x47d6333b, 0x233648c5, 0xb6469c50, 0xeaf6bf39,
+    0x7f866bac, 0x1b661052, 0x8e16c4c7, 0xa2065680, 0x37768215,
+    0x5396f9eb, 0xc6e62d7e, 0x9a560e17, 0x0f26da82, 0x6bc6a17c,
+    0xfeb675e9, 0x2a14470b, 0xbf64939e, 0xdb84e860, 0x4ef43cf5,
+    0x12441f9c, 0x8734cb09, 0xe3d4b0f7, 0x76a46462, 0x5ab4f625,
+    0xcfc422b0, 0xab24594e, 0x3e548ddb, 0x62e4aeb2, 0xf7947a27,
+    0x937401d9, 0x0604d54c, 0xcb552557, 0x5e25f1c2, 0x3ac58a3c,
+    0xafb55ea9, 0xf3057dc0, 0x6675a955, 0x0295d2ab, 0x97e5063e,
+    0xbbf59479, 0x2e8540ec, 0x4a653b12, 0xdf15ef87, 0x83a5ccee,
+    0x16d5187b, 0x72356385, 0xe745b710, 0x67cf0be4, 0xf2bfdf71,
+    0x965fa48f, 0x032f701a, 0x5f9f5373, 0xcaef87e6, 0xae0ffc18,
+    0x3b7f288d, 0x176fbaca, 0x821f6e5f, 0xe6ff15a1, 0x738fc134,
+    0x2f3fe25d, 0xba4f36c8, 0xdeaf4d36, 0x4bdf99a3, 0x868e69b8,
+    0x13febd2d, 0x771ec6d3, 0xe26e1246, 0xbede312f, 0x2baee5ba,
+    0x4f4e9e44, 0xda3e4ad1, 0xf62ed896, 0x635e0c03, 0x07be77fd,
+    0x92cea368, 0xce7e8001, 0x5b0e5494, 0x3fee2f6a, 0xaa9efbff,
+    0x7e3cc91d, 0xeb4c1d88, 0x8fac6676, 0x1adcb2e3, 0x466c918a,
+    0xd31c451f, 0xb7fc3ee1, 0x228cea74, 0x0e9c7833, 0x9becaca6,
+    0xff0cd758, 0x6a7c03cd, 0x36cc20a4, 0xa3bcf431, 0xc75c8fcf,
+    0x522c5b5a, 0x9f7dab41, 0x0a0d7fd4, 0x6eed042a, 0xfb9dd0bf,
+    0xa72df3d6, 0x325d2743, 0x56bd5cbd, 0xc3cd8828, 0xefdd1a6f,
+    0x7aadcefa, 0x1e4db504, 0x8b3d6191, 0xd78d42f8, 0x42fd966d,
+    0x261ded93, 0xb36d3906, 0x54288e16, 0xc1585a83, 0xa5b8217d,
+    0x30c8f5e8, 0x6c78d681, 0xf9080214, 0x9de879ea, 0x0898ad7f,
+    0x24883f38, 0xb1f8ebad, 0xd5189053, 0x406844c6, 0x1cd867af,
+    0x89a8b33a, 0xed48c8c4, 0x78381c51, 0xb569ec4a, 0x201938df,
+    0x44f94321, 0xd18997b4, 0x8d39b4dd, 0x18496048, 0x7ca91bb6,
+    0xe9d9cf23, 0xc5c95d64, 0x50b989f1, 0x3459f20f, 0xa129269a,
+    0xfd9905f3, 0x68e9d166, 0x0c09aa98, 0x99797e0d, 0x4ddb4cef,
+    0xd8ab987a, 0xbc4be384, 0x293b3711, 0x758b1478, 0xe0fbc0ed,
+    0x841bbb13, 0x116b6f86, 0x3d7bfdc1, 0xa80b2954, 0xcceb52aa,
+    0x599b863f, 0x052ba556, 0x905b71c3, 0xf4bb0a3d, 0x61cbdea8,
+    0xac9a2eb3, 0x39eafa26, 0x5d0a81d8, 0xc87a554d, 0x94ca7624,
+    0x01baa2b1, 0x655ad94f, 0xf02a0dda, 0xdc3a9f9d, 0x494a4b08,
+    0x2daa30f6, 0xb8dae463, 0xe46ac70a, 0x711a139f, 0x15fa6861,
+    0x808abcf4},
+   {0x00000000, 0xcf9e17c8, 0x444d29d1, 0x8bd33e19, 0x889a53a2,
+    0x4704446a, 0xccd77a73, 0x03496dbb, 0xca45a105, 0x05dbb6cd,
+    0x8e0888d4, 0x41969f1c, 0x42dff2a7, 0x8d41e56f, 0x0692db76,
+    0xc90cccbe, 0x4ffa444b, 0x80645383, 0x0bb76d9a, 0xc4297a52,
+    0xc76017e9, 0x08fe0021, 0x832d3e38, 0x4cb329f0, 0x85bfe54e,
+    0x4a21f286, 0xc1f2cc9f, 0x0e6cdb57, 0x0d25b6ec, 0xc2bba124,
+    0x49689f3d, 0x86f688f5, 0x9ff48896, 0x506a9f5e, 0xdbb9a147,
+    0x1427b68f, 0x176edb34, 0xd8f0ccfc, 0x5323f2e5, 0x9cbde52d,
+    0x55b12993, 0x9a2f3e5b, 0x11fc0042, 0xde62178a, 0xdd2b7a31,
+    0x12b56df9, 0x996653e0, 0x56f84428, 0xd00eccdd, 0x1f90db15,
+    0x9443e50c, 0x5bddf2c4, 0x58949f7f, 0x970a88b7, 0x1cd9b6ae,
+    0xd347a166, 0x1a4b6dd8, 0xd5d57a10, 0x5e064409, 0x919853c1,
+    0x92d13e7a, 0x5d4f29b2, 0xd69c17ab, 0x19020063, 0xe498176d,
+    0x2b0600a5, 0xa0d53ebc, 0x6f4b2974, 0x6c0244cf, 0xa39c5307,
+    0x284f6d1e, 0xe7d17ad6, 0x2eddb668, 0xe143a1a0, 0x6a909fb9,
+    0xa50e8871, 0xa647e5ca, 0x69d9f202, 0xe20acc1b, 0x2d94dbd3,
+    0xab625326, 0x64fc44ee, 0xef2f7af7, 0x20b16d3f, 0x23f80084,
+    0xec66174c, 0x67b52955, 0xa82b3e9d, 0x6127f223, 0xaeb9e5eb,
+    0x256adbf2, 0xeaf4cc3a, 0xe9bda181, 0x2623b649, 0xadf08850,
+    0x626e9f98, 0x7b6c9ffb, 0xb4f28833, 0x3f21b62a, 0xf0bfa1e2,
+    0xf3f6cc59, 0x3c68db91, 0xb7bbe588, 0x7825f240, 0xb1293efe,
+    0x7eb72936, 0xf564172f, 0x3afa00e7, 0x39b36d5c, 0xf62d7a94,
+    0x7dfe448d, 0xb2605345, 0x3496dbb0, 0xfb08cc78, 0x70dbf261,
+    0xbf45e5a9, 0xbc0c8812, 0x73929fda, 0xf841a1c3, 0x37dfb60b,
+    0xfed37ab5, 0x314d6d7d, 0xba9e5364, 0x750044ac, 0x76492917,
+    0xb9d73edf, 0x320400c6, 0xfd9a170e, 0x1241289b, 0xdddf3f53,
+    0x560c014a, 0x99921682, 0x9adb7b39, 0x55456cf1, 0xde9652e8,
+    0x11084520, 0xd804899e, 0x179a9e56, 0x9c49a04f, 0x53d7b787,
+    0x509eda3c, 0x9f00cdf4, 0x14d3f3ed, 0xdb4de425, 0x5dbb6cd0,
+    0x92257b18, 0x19f64501, 0xd66852c9, 0xd5213f72, 0x1abf28ba,
+    0x916c16a3, 0x5ef2016b, 0x97fecdd5, 0x5860da1d, 0xd3b3e404,
+    0x1c2df3cc, 0x1f649e77, 0xd0fa89bf, 0x5b29b7a6, 0x94b7a06e,
+    0x8db5a00d, 0x422bb7c5, 0xc9f889dc, 0x06669e14, 0x052ff3af,
+    0xcab1e467, 0x4162da7e, 0x8efccdb6, 0x47f00108, 0x886e16c0,
+    0x03bd28d9, 0xcc233f11, 0xcf6a52aa, 0x00f44562, 0x8b277b7b,
+    0x44b96cb3, 0xc24fe446, 0x0dd1f38e, 0x8602cd97, 0x499cda5f,
+    0x4ad5b7e4, 0x854ba02c, 0x0e989e35, 0xc10689fd, 0x080a4543,
+    0xc794528b, 0x4c476c92, 0x83d97b5a, 0x809016e1, 0x4f0e0129,
+    0xc4dd3f30, 0x0b4328f8, 0xf6d93ff6, 0x3947283e, 0xb2941627,
+    0x7d0a01ef, 0x7e436c54, 0xb1dd7b9c, 0x3a0e4585, 0xf590524d,
+    0x3c9c9ef3, 0xf302893b, 0x78d1b722, 0xb74fa0ea, 0xb406cd51,
+    0x7b98da99, 0xf04be480, 0x3fd5f348, 0xb9237bbd, 0x76bd6c75,
+    0xfd6e526c, 0x32f045a4, 0x31b9281f, 0xfe273fd7, 0x75f401ce,
+    0xba6a1606, 0x7366dab8, 0xbcf8cd70, 0x372bf369, 0xf8b5e4a1,
+    0xfbfc891a, 0x34629ed2, 0xbfb1a0cb, 0x702fb703, 0x692db760,
+    0xa6b3a0a8, 0x2d609eb1, 0xe2fe8979, 0xe1b7e4c2, 0x2e29f30a,
+    0xa5facd13, 0x6a64dadb, 0xa3681665, 0x6cf601ad, 0xe7253fb4,
+    0x28bb287c, 0x2bf245c7, 0xe46c520f, 0x6fbf6c16, 0xa0217bde,
+    0x26d7f32b, 0xe949e4e3, 0x629adafa, 0xad04cd32, 0xae4da089,
+    0x61d3b741, 0xea008958, 0x259e9e90, 0xec92522e, 0x230c45e6,
+    0xa8df7bff, 0x67416c37, 0x6408018c, 0xab961644, 0x2045285d,
+    0xefdb3f95},
+   {0x00000000, 0x24825136, 0x4904a26c, 0x6d86f35a, 0x920944d8,
+    0xb68b15ee, 0xdb0de6b4, 0xff8fb782, 0xff638ff1, 0xdbe1dec7,
+    0xb6672d9d, 0x92e57cab, 0x6d6acb29, 0x49e89a1f, 0x246e6945,
+    0x00ec3873, 0x25b619a3, 0x01344895, 0x6cb2bbcf, 0x4830eaf9,
+    0xb7bf5d7b, 0x933d0c4d, 0xfebbff17, 0xda39ae21, 0xdad59652,
+    0xfe57c764, 0x93d1343e, 0xb7536508, 0x48dcd28a, 0x6c5e83bc,
+    0x01d870e6, 0x255a21d0, 0x4b6c3346, 0x6fee6270, 0x0268912a,
+    0x26eac01c, 0xd965779e, 0xfde726a8, 0x9061d5f2, 0xb4e384c4,
+    0xb40fbcb7, 0x908ded81, 0xfd0b1edb, 0xd9894fed, 0x2606f86f,
+    0x0284a959, 0x6f025a03, 0x4b800b35, 0x6eda2ae5, 0x4a587bd3,
+    0x27de8889, 0x035cd9bf, 0xfcd36e3d, 0xd8513f0b, 0xb5d7cc51,
+    0x91559d67, 0x91b9a514, 0xb53bf422, 0xd8bd0778, 0xfc3f564e,
+    0x03b0e1cc, 0x2732b0fa, 0x4ab443a0, 0x6e361296, 0x96d8668c,
+    0xb25a37ba, 0xdfdcc4e0, 0xfb5e95d6, 0x04d12254, 0x20537362,
+    0x4dd58038, 0x6957d10e, 0x69bbe97d, 0x4d39b84b, 0x20bf4b11,
+    0x043d1a27, 0xfbb2ada5, 0xdf30fc93, 0xb2b60fc9, 0x96345eff,
+    0xb36e7f2f, 0x97ec2e19, 0xfa6add43, 0xdee88c75, 0x21673bf7,
+    0x05e56ac1, 0x6863999b, 0x4ce1c8ad, 0x4c0df0de, 0x688fa1e8,
+    0x050952b2, 0x218b0384, 0xde04b406, 0xfa86e530, 0x9700166a,
+    0xb382475c, 0xddb455ca, 0xf93604fc, 0x94b0f7a6, 0xb032a690,
+    0x4fbd1112, 0x6b3f4024, 0x06b9b37e, 0x223be248, 0x22d7da3b,
+    0x06558b0d, 0x6bd37857, 0x4f512961, 0xb0de9ee3, 0x945ccfd5,
+    0xf9da3c8f, 0xdd586db9, 0xf8024c69, 0xdc801d5f, 0xb106ee05,
+    0x9584bf33, 0x6a0b08b1, 0x4e895987, 0x230faadd, 0x078dfbeb,
+    0x0761c398, 0x23e392ae, 0x4e6561f4, 0x6ae730c2, 0x95688740,
+    0xb1ead676, 0xdc6c252c, 0xf8ee741a, 0xf6c1cb59, 0xd2439a6f,
+    0xbfc56935, 0x9b473803, 0x64c88f81, 0x404adeb7, 0x2dcc2ded,
+    0x094e7cdb, 0x09a244a8, 0x2d20159e, 0x40a6e6c4, 0x6424b7f2,
+    0x9bab0070, 0xbf295146, 0xd2afa21c, 0xf62df32a, 0xd377d2fa,
+    0xf7f583cc, 0x9a737096, 0xbef121a0, 0x417e9622, 0x65fcc714,
+    0x087a344e, 0x2cf86578, 0x2c145d0b, 0x08960c3d, 0x6510ff67,
+    0x4192ae51, 0xbe1d19d3, 0x9a9f48e5, 0xf719bbbf, 0xd39bea89,
+    0xbdadf81f, 0x992fa929, 0xf4a95a73, 0xd02b0b45, 0x2fa4bcc7,
+    0x0b26edf1, 0x66a01eab, 0x42224f9d, 0x42ce77ee, 0x664c26d8,
+    0x0bcad582, 0x2f4884b4, 0xd0c73336, 0xf4456200, 0x99c3915a,
+    0xbd41c06c, 0x981be1bc, 0xbc99b08a, 0xd11f43d0, 0xf59d12e6,
+    0x0a12a564, 0x2e90f452, 0x43160708, 0x6794563e, 0x67786e4d,
+    0x43fa3f7b, 0x2e7ccc21, 0x0afe9d17, 0xf5712a95, 0xd1f37ba3,
+    0xbc7588f9, 0x98f7d9cf, 0x6019add5, 0x449bfce3, 0x291d0fb9,
+    0x0d9f5e8f, 0xf210e90d, 0xd692b83b, 0xbb144b61, 0x9f961a57,
+    0x9f7a2224, 0xbbf87312, 0xd67e8048, 0xf2fcd17e, 0x0d7366fc,
+    0x29f137ca, 0x4477c490, 0x60f595a6, 0x45afb476, 0x612de540,
+    0x0cab161a, 0x2829472c, 0xd7a6f0ae, 0xf324a198, 0x9ea252c2,
+    0xba2003f4, 0xbacc3b87, 0x9e4e6ab1, 0xf3c899eb, 0xd74ac8dd,
+    0x28c57f5f, 0x0c472e69, 0x61c1dd33, 0x45438c05, 0x2b759e93,
+    0x0ff7cfa5, 0x62713cff, 0x46f36dc9, 0xb97cda4b, 0x9dfe8b7d,
+    0xf0787827, 0xd4fa2911, 0xd4161162, 0xf0944054, 0x9d12b30e,
+    0xb990e238, 0x461f55ba, 0x629d048c, 0x0f1bf7d6, 0x2b99a6e0,
+    0x0ec38730, 0x2a41d606, 0x47c7255c, 0x6345746a, 0x9ccac3e8,
+    0xb84892de, 0xd5ce6184, 0xf14c30b2, 0xf1a008c1, 0xd52259f7,
+    0xb8a4aaad, 0x9c26fb9b, 0x63a94c19, 0x472b1d2f, 0x2aadee75,
+    0x0e2fbf43},
+   {0x00000000, 0x36f290f3, 0x6de521e6, 0x5b17b115, 0xdbca43cc,
+    0xed38d33f, 0xb62f622a, 0x80ddf2d9, 0x6ce581d9, 0x5a17112a,
+    0x0100a03f, 0x37f230cc, 0xb72fc215, 0x81dd52e6, 0xdacae3f3,
+    0xec387300, 0xd9cb03b2, 0xef399341, 0xb42e2254, 0x82dcb2a7,
+    0x0201407e, 0x34f3d08d, 0x6fe46198, 0x5916f16b, 0xb52e826b,
+    0x83dc1298, 0xd8cba38d, 0xee39337e, 0x6ee4c1a7, 0x58165154,
+    0x0301e041, 0x35f370b2, 0x68e70125, 0x5e1591d6, 0x050220c3,
+    0x33f0b030, 0xb32d42e9, 0x85dfd21a, 0xdec8630f, 0xe83af3fc,
+    0x040280fc, 0x32f0100f, 0x69e7a11a, 0x5f1531e9, 0xdfc8c330,
+    0xe93a53c3, 0xb22de2d6, 0x84df7225, 0xb12c0297, 0x87de9264,
+    0xdcc92371, 0xea3bb382, 0x6ae6415b, 0x5c14d1a8, 0x070360bd,
+    0x31f1f04e, 0xddc9834e, 0xeb3b13bd, 0xb02ca2a8, 0x86de325b,
+    0x0603c082, 0x30f15071, 0x6be6e164, 0x5d147197, 0xd1ce024a,
+    0xe73c92b9, 0xbc2b23ac, 0x8ad9b35f, 0x0a044186, 0x3cf6d175,
+    0x67e16060, 0x5113f093, 0xbd2b8393, 0x8bd91360, 0xd0cea275,
+    0xe63c3286, 0x66e1c05f, 0x501350ac, 0x0b04e1b9, 0x3df6714a,
+    0x080501f8, 0x3ef7910b, 0x65e0201e, 0x5312b0ed, 0xd3cf4234,
+    0xe53dd2c7, 0xbe2a63d2, 0x88d8f321, 0x64e08021, 0x521210d2,
+    0x0905a1c7, 0x3ff73134, 0xbf2ac3ed, 0x89d8531e, 0xd2cfe20b,
+    0xe43d72f8, 0xb929036f, 0x8fdb939c, 0xd4cc2289, 0xe23eb27a,
+    0x62e340a3, 0x5411d050, 0x0f066145, 0x39f4f1b6, 0xd5cc82b6,
+    0xe33e1245, 0xb829a350, 0x8edb33a3, 0x0e06c17a, 0x38f45189,
+    0x63e3e09c, 0x5511706f, 0x60e200dd, 0x5610902e, 0x0d07213b,
+    0x3bf5b1c8, 0xbb284311, 0x8ddad3e2, 0xd6cd62f7, 0xe03ff204,
+    0x0c078104, 0x3af511f7, 0x61e2a0e2, 0x57103011, 0xd7cdc2c8,
+    0xe13f523b, 0xba28e32e, 0x8cda73dd, 0x78ed02d5, 0x4e1f9226,
+    0x15082333, 0x23fab3c0, 0xa3274119, 0x95d5d1ea, 0xcec260ff,
+    0xf830f00c, 0x1408830c, 0x22fa13ff, 0x79eda2ea, 0x4f1f3219,
+    0xcfc2c0c0, 0xf9305033, 0xa227e126, 0x94d571d5, 0xa1260167,
+    0x97d49194, 0xccc32081, 0xfa31b072, 0x7aec42ab, 0x4c1ed258,
+    0x1709634d, 0x21fbf3be, 0xcdc380be, 0xfb31104d, 0xa026a158,
+    0x96d431ab, 0x1609c372, 0x20fb5381, 0x7bece294, 0x4d1e7267,
+    0x100a03f0, 0x26f89303, 0x7def2216, 0x4b1db2e5, 0xcbc0403c,
+    0xfd32d0cf, 0xa62561da, 0x90d7f129, 0x7cef8229, 0x4a1d12da,
+    0x110aa3cf, 0x27f8333c, 0xa725c1e5, 0x91d75116, 0xcac0e003,
+    0xfc3270f0, 0xc9c10042, 0xff3390b1, 0xa42421a4, 0x92d6b157,
+    0x120b438e, 0x24f9d37d, 0x7fee6268, 0x491cf29b, 0xa524819b,
+    0x93d61168, 0xc8c1a07d, 0xfe33308e, 0x7eeec257, 0x481c52a4,
+    0x130be3b1, 0x25f97342, 0xa923009f, 0x9fd1906c, 0xc4c62179,
+    0xf234b18a, 0x72e94353, 0x441bd3a0, 0x1f0c62b5, 0x29fef246,
+    0xc5c68146, 0xf33411b5, 0xa823a0a0, 0x9ed13053, 0x1e0cc28a,
+    0x28fe5279, 0x73e9e36c, 0x451b739f, 0x70e8032d, 0x461a93de,
+    0x1d0d22cb, 0x2bffb238, 0xab2240e1, 0x9dd0d012, 0xc6c76107,
+    0xf035f1f4, 0x1c0d82f4, 0x2aff1207, 0x71e8a312, 0x471a33e1,
+    0xc7c7c138, 0xf13551cb, 0xaa22e0de, 0x9cd0702d, 0xc1c401ba,
+    0xf7369149, 0xac21205c, 0x9ad3b0af, 0x1a0e4276, 0x2cfcd285,
+    0x77eb6390, 0x4119f363, 0xad218063, 0x9bd31090, 0xc0c4a185,
+    0xf6363176, 0x76ebc3af, 0x4019535c, 0x1b0ee249, 0x2dfc72ba,
+    0x180f0208, 0x2efd92fb, 0x75ea23ee, 0x4318b31d, 0xc3c541c4,
+    0xf537d137, 0xae206022, 0x98d2f0d1, 0x74ea83d1, 0x42181322,
+    0x190fa237, 0x2ffd32c4, 0xaf20c01d, 0x99d250ee, 0xc2c5e1fb,
+    0xf4377108}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0xf390f23600000000, 0xe621e56d00000000,
+    0x15b1175b00000000, 0xcc43cadb00000000, 0x3fd338ed00000000,
+    0x2a622fb600000000, 0xd9f2dd8000000000, 0xd981e56c00000000,
+    0x2a11175a00000000, 0x3fa0000100000000, 0xcc30f23700000000,
+    0x15c22fb700000000, 0xe652dd8100000000, 0xf3e3cada00000000,
+    0x007338ec00000000, 0xb203cbd900000000, 0x419339ef00000000,
+    0x54222eb400000000, 0xa7b2dc8200000000, 0x7e40010200000000,
+    0x8dd0f33400000000, 0x9861e46f00000000, 0x6bf1165900000000,
+    0x6b822eb500000000, 0x9812dc8300000000, 0x8da3cbd800000000,
+    0x7e3339ee00000000, 0xa7c1e46e00000000, 0x5451165800000000,
+    0x41e0010300000000, 0xb270f33500000000, 0x2501e76800000000,
+    0xd691155e00000000, 0xc320020500000000, 0x30b0f03300000000,
+    0xe9422db300000000, 0x1ad2df8500000000, 0x0f63c8de00000000,
+    0xfcf33ae800000000, 0xfc80020400000000, 0x0f10f03200000000,
+    0x1aa1e76900000000, 0xe931155f00000000, 0x30c3c8df00000000,
+    0xc3533ae900000000, 0xd6e22db200000000, 0x2572df8400000000,
+    0x97022cb100000000, 0x6492de8700000000, 0x7123c9dc00000000,
+    0x82b33bea00000000, 0x5b41e66a00000000, 0xa8d1145c00000000,
+    0xbd60030700000000, 0x4ef0f13100000000, 0x4e83c9dd00000000,
+    0xbd133beb00000000, 0xa8a22cb000000000, 0x5b32de8600000000,
+    0x82c0030600000000, 0x7150f13000000000, 0x64e1e66b00000000,
+    0x9771145d00000000, 0x4a02ced100000000, 0xb9923ce700000000,
+    0xac232bbc00000000, 0x5fb3d98a00000000, 0x8641040a00000000,
+    0x75d1f63c00000000, 0x6060e16700000000, 0x93f0135100000000,
+    0x93832bbd00000000, 0x6013d98b00000000, 0x75a2ced000000000,
+    0x86323ce600000000, 0x5fc0e16600000000, 0xac50135000000000,
+    0xb9e1040b00000000, 0x4a71f63d00000000, 0xf801050800000000,
+    0x0b91f73e00000000, 0x1e20e06500000000, 0xedb0125300000000,
+    0x3442cfd300000000, 0xc7d23de500000000, 0xd2632abe00000000,
+    0x21f3d88800000000, 0x2180e06400000000, 0xd210125200000000,
+    0xc7a1050900000000, 0x3431f73f00000000, 0xedc32abf00000000,
+    0x1e53d88900000000, 0x0be2cfd200000000, 0xf8723de400000000,
+    0x6f0329b900000000, 0x9c93db8f00000000, 0x8922ccd400000000,
+    0x7ab23ee200000000, 0xa340e36200000000, 0x50d0115400000000,
+    0x4561060f00000000, 0xb6f1f43900000000, 0xb682ccd500000000,
+    0x45123ee300000000, 0x50a329b800000000, 0xa333db8e00000000,
+    0x7ac1060e00000000, 0x8951f43800000000, 0x9ce0e36300000000,
+    0x6f70115500000000, 0xdd00e26000000000, 0x2e90105600000000,
+    0x3b21070d00000000, 0xc8b1f53b00000000, 0x114328bb00000000,
+    0xe2d3da8d00000000, 0xf762cdd600000000, 0x04f23fe000000000,
+    0x0481070c00000000, 0xf711f53a00000000, 0xe2a0e26100000000,
+    0x1130105700000000, 0xc8c2cdd700000000, 0x3b523fe100000000,
+    0x2ee328ba00000000, 0xdd73da8c00000000, 0xd502ed7800000000,
+    0x26921f4e00000000, 0x3323081500000000, 0xc0b3fa2300000000,
+    0x194127a300000000, 0xead1d59500000000, 0xff60c2ce00000000,
+    0x0cf030f800000000, 0x0c83081400000000, 0xff13fa2200000000,
+    0xeaa2ed7900000000, 0x19321f4f00000000, 0xc0c0c2cf00000000,
+    0x335030f900000000, 0x26e127a200000000, 0xd571d59400000000,
+    0x670126a100000000, 0x9491d49700000000, 0x8120c3cc00000000,
+    0x72b031fa00000000, 0xab42ec7a00000000, 0x58d21e4c00000000,
+    0x4d63091700000000, 0xbef3fb2100000000, 0xbe80c3cd00000000,
+    0x4d1031fb00000000, 0x58a126a000000000, 0xab31d49600000000,
+    0x72c3091600000000, 0x8153fb2000000000, 0x94e2ec7b00000000,
+    0x67721e4d00000000, 0xf0030a1000000000, 0x0393f82600000000,
+    0x1622ef7d00000000, 0xe5b21d4b00000000, 0x3c40c0cb00000000,
+    0xcfd032fd00000000, 0xda6125a600000000, 0x29f1d79000000000,
+    0x2982ef7c00000000, 0xda121d4a00000000, 0xcfa30a1100000000,
+    0x3c33f82700000000, 0xe5c125a700000000, 0x1651d79100000000,
+    0x03e0c0ca00000000, 0xf07032fc00000000, 0x4200c1c900000000,
+    0xb19033ff00000000, 0xa42124a400000000, 0x57b1d69200000000,
+    0x8e430b1200000000, 0x7dd3f92400000000, 0x6862ee7f00000000,
+    0x9bf21c4900000000, 0x9b8124a500000000, 0x6811d69300000000,
+    0x7da0c1c800000000, 0x8e3033fe00000000, 0x57c2ee7e00000000,
+    0xa4521c4800000000, 0xb1e30b1300000000, 0x4273f92500000000,
+    0x9f0023a900000000, 0x6c90d19f00000000, 0x7921c6c400000000,
+    0x8ab134f200000000, 0x5343e97200000000, 0xa0d31b4400000000,
+    0xb5620c1f00000000, 0x46f2fe2900000000, 0x4681c6c500000000,
+    0xb51134f300000000, 0xa0a023a800000000, 0x5330d19e00000000,
+    0x8ac20c1e00000000, 0x7952fe2800000000, 0x6ce3e97300000000,
+    0x9f731b4500000000, 0x2d03e87000000000, 0xde931a4600000000,
+    0xcb220d1d00000000, 0x38b2ff2b00000000, 0xe14022ab00000000,
+    0x12d0d09d00000000, 0x0761c7c600000000, 0xf4f135f000000000,
+    0xf4820d1c00000000, 0x0712ff2a00000000, 0x12a3e87100000000,
+    0xe1331a4700000000, 0x38c1c7c700000000, 0xcb5135f100000000,
+    0xdee022aa00000000, 0x2d70d09c00000000, 0xba01c4c100000000,
+    0x499136f700000000, 0x5c2021ac00000000, 0xafb0d39a00000000,
+    0x76420e1a00000000, 0x85d2fc2c00000000, 0x9063eb7700000000,
+    0x63f3194100000000, 0x638021ad00000000, 0x9010d39b00000000,
+    0x85a1c4c000000000, 0x763136f600000000, 0xafc3eb7600000000,
+    0x5c53194000000000, 0x49e20e1b00000000, 0xba72fc2d00000000,
+    0x08020f1800000000, 0xfb92fd2e00000000, 0xee23ea7500000000,
+    0x1db3184300000000, 0xc441c5c300000000, 0x37d137f500000000,
+    0x226020ae00000000, 0xd1f0d29800000000, 0xd183ea7400000000,
+    0x2213184200000000, 0x37a20f1900000000, 0xc432fd2f00000000,
+    0x1dc020af00000000, 0xee50d29900000000, 0xfbe1c5c200000000,
+    0x087137f400000000},
+   {0x0000000000000000, 0x3651822400000000, 0x6ca2044900000000,
+    0x5af3866d00000000, 0xd844099200000000, 0xee158bb600000000,
+    0xb4e60ddb00000000, 0x82b78fff00000000, 0xf18f63ff00000000,
+    0xc7dee1db00000000, 0x9d2d67b600000000, 0xab7ce59200000000,
+    0x29cb6a6d00000000, 0x1f9ae84900000000, 0x45696e2400000000,
+    0x7338ec0000000000, 0xa319b62500000000, 0x9548340100000000,
+    0xcfbbb26c00000000, 0xf9ea304800000000, 0x7b5dbfb700000000,
+    0x4d0c3d9300000000, 0x17ffbbfe00000000, 0x21ae39da00000000,
+    0x5296d5da00000000, 0x64c757fe00000000, 0x3e34d19300000000,
+    0x086553b700000000, 0x8ad2dc4800000000, 0xbc835e6c00000000,
+    0xe670d80100000000, 0xd0215a2500000000, 0x46336c4b00000000,
+    0x7062ee6f00000000, 0x2a91680200000000, 0x1cc0ea2600000000,
+    0x9e7765d900000000, 0xa826e7fd00000000, 0xf2d5619000000000,
+    0xc484e3b400000000, 0xb7bc0fb400000000, 0x81ed8d9000000000,
+    0xdb1e0bfd00000000, 0xed4f89d900000000, 0x6ff8062600000000,
+    0x59a9840200000000, 0x035a026f00000000, 0x350b804b00000000,
+    0xe52ada6e00000000, 0xd37b584a00000000, 0x8988de2700000000,
+    0xbfd95c0300000000, 0x3d6ed3fc00000000, 0x0b3f51d800000000,
+    0x51ccd7b500000000, 0x679d559100000000, 0x14a5b99100000000,
+    0x22f43bb500000000, 0x7807bdd800000000, 0x4e563ffc00000000,
+    0xcce1b00300000000, 0xfab0322700000000, 0xa043b44a00000000,
+    0x9612366e00000000, 0x8c66d89600000000, 0xba375ab200000000,
+    0xe0c4dcdf00000000, 0xd6955efb00000000, 0x5422d10400000000,
+    0x6273532000000000, 0x3880d54d00000000, 0x0ed1576900000000,
+    0x7de9bb6900000000, 0x4bb8394d00000000, 0x114bbf2000000000,
+    0x271a3d0400000000, 0xa5adb2fb00000000, 0x93fc30df00000000,
+    0xc90fb6b200000000, 0xff5e349600000000, 0x2f7f6eb300000000,
+    0x192eec9700000000, 0x43dd6afa00000000, 0x758ce8de00000000,
+    0xf73b672100000000, 0xc16ae50500000000, 0x9b99636800000000,
+    0xadc8e14c00000000, 0xdef00d4c00000000, 0xe8a18f6800000000,
+    0xb252090500000000, 0x84038b2100000000, 0x06b404de00000000,
+    0x30e586fa00000000, 0x6a16009700000000, 0x5c4782b300000000,
+    0xca55b4dd00000000, 0xfc0436f900000000, 0xa6f7b09400000000,
+    0x90a632b000000000, 0x1211bd4f00000000, 0x24403f6b00000000,
+    0x7eb3b90600000000, 0x48e23b2200000000, 0x3bdad72200000000,
+    0x0d8b550600000000, 0x5778d36b00000000, 0x6129514f00000000,
+    0xe39edeb000000000, 0xd5cf5c9400000000, 0x8f3cdaf900000000,
+    0xb96d58dd00000000, 0x694c02f800000000, 0x5f1d80dc00000000,
+    0x05ee06b100000000, 0x33bf849500000000, 0xb1080b6a00000000,
+    0x8759894e00000000, 0xddaa0f2300000000, 0xebfb8d0700000000,
+    0x98c3610700000000, 0xae92e32300000000, 0xf461654e00000000,
+    0xc230e76a00000000, 0x4087689500000000, 0x76d6eab100000000,
+    0x2c256cdc00000000, 0x1a74eef800000000, 0x59cbc1f600000000,
+    0x6f9a43d200000000, 0x3569c5bf00000000, 0x0338479b00000000,
+    0x818fc86400000000, 0xb7de4a4000000000, 0xed2dcc2d00000000,
+    0xdb7c4e0900000000, 0xa844a20900000000, 0x9e15202d00000000,
+    0xc4e6a64000000000, 0xf2b7246400000000, 0x7000ab9b00000000,
+    0x465129bf00000000, 0x1ca2afd200000000, 0x2af32df600000000,
+    0xfad277d300000000, 0xcc83f5f700000000, 0x9670739a00000000,
+    0xa021f1be00000000, 0x22967e4100000000, 0x14c7fc6500000000,
+    0x4e347a0800000000, 0x7865f82c00000000, 0x0b5d142c00000000,
+    0x3d0c960800000000, 0x67ff106500000000, 0x51ae924100000000,
+    0xd3191dbe00000000, 0xe5489f9a00000000, 0xbfbb19f700000000,
+    0x89ea9bd300000000, 0x1ff8adbd00000000, 0x29a92f9900000000,
+    0x735aa9f400000000, 0x450b2bd000000000, 0xc7bca42f00000000,
+    0xf1ed260b00000000, 0xab1ea06600000000, 0x9d4f224200000000,
+    0xee77ce4200000000, 0xd8264c6600000000, 0x82d5ca0b00000000,
+    0xb484482f00000000, 0x3633c7d000000000, 0x006245f400000000,
+    0x5a91c39900000000, 0x6cc041bd00000000, 0xbce11b9800000000,
+    0x8ab099bc00000000, 0xd0431fd100000000, 0xe6129df500000000,
+    0x64a5120a00000000, 0x52f4902e00000000, 0x0807164300000000,
+    0x3e56946700000000, 0x4d6e786700000000, 0x7b3ffa4300000000,
+    0x21cc7c2e00000000, 0x179dfe0a00000000, 0x952a71f500000000,
+    0xa37bf3d100000000, 0xf98875bc00000000, 0xcfd9f79800000000,
+    0xd5ad196000000000, 0xe3fc9b4400000000, 0xb90f1d2900000000,
+    0x8f5e9f0d00000000, 0x0de910f200000000, 0x3bb892d600000000,
+    0x614b14bb00000000, 0x571a969f00000000, 0x24227a9f00000000,
+    0x1273f8bb00000000, 0x48807ed600000000, 0x7ed1fcf200000000,
+    0xfc66730d00000000, 0xca37f12900000000, 0x90c4774400000000,
+    0xa695f56000000000, 0x76b4af4500000000, 0x40e52d6100000000,
+    0x1a16ab0c00000000, 0x2c47292800000000, 0xaef0a6d700000000,
+    0x98a124f300000000, 0xc252a29e00000000, 0xf40320ba00000000,
+    0x873bccba00000000, 0xb16a4e9e00000000, 0xeb99c8f300000000,
+    0xddc84ad700000000, 0x5f7fc52800000000, 0x692e470c00000000,
+    0x33ddc16100000000, 0x058c434500000000, 0x939e752b00000000,
+    0xa5cff70f00000000, 0xff3c716200000000, 0xc96df34600000000,
+    0x4bda7cb900000000, 0x7d8bfe9d00000000, 0x277878f000000000,
+    0x1129fad400000000, 0x621116d400000000, 0x544094f000000000,
+    0x0eb3129d00000000, 0x38e290b900000000, 0xba551f4600000000,
+    0x8c049d6200000000, 0xd6f71b0f00000000, 0xe0a6992b00000000,
+    0x3087c30e00000000, 0x06d6412a00000000, 0x5c25c74700000000,
+    0x6a74456300000000, 0xe8c3ca9c00000000, 0xde9248b800000000,
+    0x8461ced500000000, 0xb2304cf100000000, 0xc108a0f100000000,
+    0xf75922d500000000, 0xadaaa4b800000000, 0x9bfb269c00000000,
+    0x194ca96300000000, 0x2f1d2b4700000000, 0x75eead2a00000000,
+    0x43bf2f0e00000000},
+   {0x0000000000000000, 0xc8179ecf00000000, 0xd1294d4400000000,
+    0x193ed38b00000000, 0xa2539a8800000000, 0x6a44044700000000,
+    0x737ad7cc00000000, 0xbb6d490300000000, 0x05a145ca00000000,
+    0xcdb6db0500000000, 0xd488088e00000000, 0x1c9f964100000000,
+    0xa7f2df4200000000, 0x6fe5418d00000000, 0x76db920600000000,
+    0xbecc0cc900000000, 0x4b44fa4f00000000, 0x8353648000000000,
+    0x9a6db70b00000000, 0x527a29c400000000, 0xe91760c700000000,
+    0x2100fe0800000000, 0x383e2d8300000000, 0xf029b34c00000000,
+    0x4ee5bf8500000000, 0x86f2214a00000000, 0x9fccf2c100000000,
+    0x57db6c0e00000000, 0xecb6250d00000000, 0x24a1bbc200000000,
+    0x3d9f684900000000, 0xf588f68600000000, 0x9688f49f00000000,
+    0x5e9f6a5000000000, 0x47a1b9db00000000, 0x8fb6271400000000,
+    0x34db6e1700000000, 0xfcccf0d800000000, 0xe5f2235300000000,
+    0x2de5bd9c00000000, 0x9329b15500000000, 0x5b3e2f9a00000000,
+    0x4200fc1100000000, 0x8a1762de00000000, 0x317a2bdd00000000,
+    0xf96db51200000000, 0xe053669900000000, 0x2844f85600000000,
+    0xddcc0ed000000000, 0x15db901f00000000, 0x0ce5439400000000,
+    0xc4f2dd5b00000000, 0x7f9f945800000000, 0xb7880a9700000000,
+    0xaeb6d91c00000000, 0x66a147d300000000, 0xd86d4b1a00000000,
+    0x107ad5d500000000, 0x0944065e00000000, 0xc153989100000000,
+    0x7a3ed19200000000, 0xb2294f5d00000000, 0xab179cd600000000,
+    0x6300021900000000, 0x6d1798e400000000, 0xa500062b00000000,
+    0xbc3ed5a000000000, 0x74294b6f00000000, 0xcf44026c00000000,
+    0x07539ca300000000, 0x1e6d4f2800000000, 0xd67ad1e700000000,
+    0x68b6dd2e00000000, 0xa0a143e100000000, 0xb99f906a00000000,
+    0x71880ea500000000, 0xcae547a600000000, 0x02f2d96900000000,
+    0x1bcc0ae200000000, 0xd3db942d00000000, 0x265362ab00000000,
+    0xee44fc6400000000, 0xf77a2fef00000000, 0x3f6db12000000000,
+    0x8400f82300000000, 0x4c1766ec00000000, 0x5529b56700000000,
+    0x9d3e2ba800000000, 0x23f2276100000000, 0xebe5b9ae00000000,
+    0xf2db6a2500000000, 0x3accf4ea00000000, 0x81a1bde900000000,
+    0x49b6232600000000, 0x5088f0ad00000000, 0x989f6e6200000000,
+    0xfb9f6c7b00000000, 0x3388f2b400000000, 0x2ab6213f00000000,
+    0xe2a1bff000000000, 0x59ccf6f300000000, 0x91db683c00000000,
+    0x88e5bbb700000000, 0x40f2257800000000, 0xfe3e29b100000000,
+    0x3629b77e00000000, 0x2f1764f500000000, 0xe700fa3a00000000,
+    0x5c6db33900000000, 0x947a2df600000000, 0x8d44fe7d00000000,
+    0x455360b200000000, 0xb0db963400000000, 0x78cc08fb00000000,
+    0x61f2db7000000000, 0xa9e545bf00000000, 0x12880cbc00000000,
+    0xda9f927300000000, 0xc3a141f800000000, 0x0bb6df3700000000,
+    0xb57ad3fe00000000, 0x7d6d4d3100000000, 0x64539eba00000000,
+    0xac44007500000000, 0x1729497600000000, 0xdf3ed7b900000000,
+    0xc600043200000000, 0x0e179afd00000000, 0x9b28411200000000,
+    0x533fdfdd00000000, 0x4a010c5600000000, 0x8216929900000000,
+    0x397bdb9a00000000, 0xf16c455500000000, 0xe85296de00000000,
+    0x2045081100000000, 0x9e8904d800000000, 0x569e9a1700000000,
+    0x4fa0499c00000000, 0x87b7d75300000000, 0x3cda9e5000000000,
+    0xf4cd009f00000000, 0xedf3d31400000000, 0x25e44ddb00000000,
+    0xd06cbb5d00000000, 0x187b259200000000, 0x0145f61900000000,
+    0xc95268d600000000, 0x723f21d500000000, 0xba28bf1a00000000,
+    0xa3166c9100000000, 0x6b01f25e00000000, 0xd5cdfe9700000000,
+    0x1dda605800000000, 0x04e4b3d300000000, 0xccf32d1c00000000,
+    0x779e641f00000000, 0xbf89fad000000000, 0xa6b7295b00000000,
+    0x6ea0b79400000000, 0x0da0b58d00000000, 0xc5b72b4200000000,
+    0xdc89f8c900000000, 0x149e660600000000, 0xaff32f0500000000,
+    0x67e4b1ca00000000, 0x7eda624100000000, 0xb6cdfc8e00000000,
+    0x0801f04700000000, 0xc0166e8800000000, 0xd928bd0300000000,
+    0x113f23cc00000000, 0xaa526acf00000000, 0x6245f40000000000,
+    0x7b7b278b00000000, 0xb36cb94400000000, 0x46e44fc200000000,
+    0x8ef3d10d00000000, 0x97cd028600000000, 0x5fda9c4900000000,
+    0xe4b7d54a00000000, 0x2ca04b8500000000, 0x359e980e00000000,
+    0xfd8906c100000000, 0x43450a0800000000, 0x8b5294c700000000,
+    0x926c474c00000000, 0x5a7bd98300000000, 0xe116908000000000,
+    0x29010e4f00000000, 0x303fddc400000000, 0xf828430b00000000,
+    0xf63fd9f600000000, 0x3e28473900000000, 0x271694b200000000,
+    0xef010a7d00000000, 0x546c437e00000000, 0x9c7bddb100000000,
+    0x85450e3a00000000, 0x4d5290f500000000, 0xf39e9c3c00000000,
+    0x3b8902f300000000, 0x22b7d17800000000, 0xeaa04fb700000000,
+    0x51cd06b400000000, 0x99da987b00000000, 0x80e44bf000000000,
+    0x48f3d53f00000000, 0xbd7b23b900000000, 0x756cbd7600000000,
+    0x6c526efd00000000, 0xa445f03200000000, 0x1f28b93100000000,
+    0xd73f27fe00000000, 0xce01f47500000000, 0x06166aba00000000,
+    0xb8da667300000000, 0x70cdf8bc00000000, 0x69f32b3700000000,
+    0xa1e4b5f800000000, 0x1a89fcfb00000000, 0xd29e623400000000,
+    0xcba0b1bf00000000, 0x03b72f7000000000, 0x60b72d6900000000,
+    0xa8a0b3a600000000, 0xb19e602d00000000, 0x7989fee200000000,
+    0xc2e4b7e100000000, 0x0af3292e00000000, 0x13cdfaa500000000,
+    0xdbda646a00000000, 0x651668a300000000, 0xad01f66c00000000,
+    0xb43f25e700000000, 0x7c28bb2800000000, 0xc745f22b00000000,
+    0x0f526ce400000000, 0x166cbf6f00000000, 0xde7b21a000000000,
+    0x2bf3d72600000000, 0xe3e449e900000000, 0xfada9a6200000000,
+    0x32cd04ad00000000, 0x89a04dae00000000, 0x41b7d36100000000,
+    0x588900ea00000000, 0x909e9e2500000000, 0x2e5292ec00000000,
+    0xe6450c2300000000, 0xff7bdfa800000000, 0x376c416700000000,
+    0x8c01086400000000, 0x441696ab00000000, 0x5d28452000000000,
+    0x953fdbef00000000},
+   {0x0000000000000000, 0x95d4709500000000, 0x6baf90f100000000,
+    0xfe7be06400000000, 0x9758503800000000, 0x028c20ad00000000,
+    0xfcf7c0c900000000, 0x6923b05c00000000, 0x2eb1a07000000000,
+    0xbb65d0e500000000, 0x451e308100000000, 0xd0ca401400000000,
+    0xb9e9f04800000000, 0x2c3d80dd00000000, 0xd24660b900000000,
+    0x4792102c00000000, 0x5c6241e100000000, 0xc9b6317400000000,
+    0x37cdd11000000000, 0xa219a18500000000, 0xcb3a11d900000000,
+    0x5eee614c00000000, 0xa095812800000000, 0x3541f1bd00000000,
+    0x72d3e19100000000, 0xe707910400000000, 0x197c716000000000,
+    0x8ca801f500000000, 0xe58bb1a900000000, 0x705fc13c00000000,
+    0x8e24215800000000, 0x1bf051cd00000000, 0xf9c2f31900000000,
+    0x6c16838c00000000, 0x926d63e800000000, 0x07b9137d00000000,
+    0x6e9aa32100000000, 0xfb4ed3b400000000, 0x053533d000000000,
+    0x90e1434500000000, 0xd773536900000000, 0x42a723fc00000000,
+    0xbcdcc39800000000, 0x2908b30d00000000, 0x402b035100000000,
+    0xd5ff73c400000000, 0x2b8493a000000000, 0xbe50e33500000000,
+    0xa5a0b2f800000000, 0x3074c26d00000000, 0xce0f220900000000,
+    0x5bdb529c00000000, 0x32f8e2c000000000, 0xa72c925500000000,
+    0x5957723100000000, 0xcc8302a400000000, 0x8b11128800000000,
+    0x1ec5621d00000000, 0xe0be827900000000, 0x756af2ec00000000,
+    0x1c4942b000000000, 0x899d322500000000, 0x77e6d24100000000,
+    0xe232a2d400000000, 0xf285e73300000000, 0x675197a600000000,
+    0x992a77c200000000, 0x0cfe075700000000, 0x65ddb70b00000000,
+    0xf009c79e00000000, 0x0e7227fa00000000, 0x9ba6576f00000000,
+    0xdc34474300000000, 0x49e037d600000000, 0xb79bd7b200000000,
+    0x224fa72700000000, 0x4b6c177b00000000, 0xdeb867ee00000000,
+    0x20c3878a00000000, 0xb517f71f00000000, 0xaee7a6d200000000,
+    0x3b33d64700000000, 0xc548362300000000, 0x509c46b600000000,
+    0x39bff6ea00000000, 0xac6b867f00000000, 0x5210661b00000000,
+    0xc7c4168e00000000, 0x805606a200000000, 0x1582763700000000,
+    0xebf9965300000000, 0x7e2de6c600000000, 0x170e569a00000000,
+    0x82da260f00000000, 0x7ca1c66b00000000, 0xe975b6fe00000000,
+    0x0b47142a00000000, 0x9e9364bf00000000, 0x60e884db00000000,
+    0xf53cf44e00000000, 0x9c1f441200000000, 0x09cb348700000000,
+    0xf7b0d4e300000000, 0x6264a47600000000, 0x25f6b45a00000000,
+    0xb022c4cf00000000, 0x4e5924ab00000000, 0xdb8d543e00000000,
+    0xb2aee46200000000, 0x277a94f700000000, 0xd901749300000000,
+    0x4cd5040600000000, 0x572555cb00000000, 0xc2f1255e00000000,
+    0x3c8ac53a00000000, 0xa95eb5af00000000, 0xc07d05f300000000,
+    0x55a9756600000000, 0xabd2950200000000, 0x3e06e59700000000,
+    0x7994f5bb00000000, 0xec40852e00000000, 0x123b654a00000000,
+    0x87ef15df00000000, 0xeecca58300000000, 0x7b18d51600000000,
+    0x8563357200000000, 0x10b745e700000000, 0xe40bcf6700000000,
+    0x71dfbff200000000, 0x8fa45f9600000000, 0x1a702f0300000000,
+    0x73539f5f00000000, 0xe687efca00000000, 0x18fc0fae00000000,
+    0x8d287f3b00000000, 0xcaba6f1700000000, 0x5f6e1f8200000000,
+    0xa115ffe600000000, 0x34c18f7300000000, 0x5de23f2f00000000,
+    0xc8364fba00000000, 0x364dafde00000000, 0xa399df4b00000000,
+    0xb8698e8600000000, 0x2dbdfe1300000000, 0xd3c61e7700000000,
+    0x46126ee200000000, 0x2f31debe00000000, 0xbae5ae2b00000000,
+    0x449e4e4f00000000, 0xd14a3eda00000000, 0x96d82ef600000000,
+    0x030c5e6300000000, 0xfd77be0700000000, 0x68a3ce9200000000,
+    0x01807ece00000000, 0x94540e5b00000000, 0x6a2fee3f00000000,
+    0xfffb9eaa00000000, 0x1dc93c7e00000000, 0x881d4ceb00000000,
+    0x7666ac8f00000000, 0xe3b2dc1a00000000, 0x8a916c4600000000,
+    0x1f451cd300000000, 0xe13efcb700000000, 0x74ea8c2200000000,
+    0x33789c0e00000000, 0xa6acec9b00000000, 0x58d70cff00000000,
+    0xcd037c6a00000000, 0xa420cc3600000000, 0x31f4bca300000000,
+    0xcf8f5cc700000000, 0x5a5b2c5200000000, 0x41ab7d9f00000000,
+    0xd47f0d0a00000000, 0x2a04ed6e00000000, 0xbfd09dfb00000000,
+    0xd6f32da700000000, 0x43275d3200000000, 0xbd5cbd5600000000,
+    0x2888cdc300000000, 0x6f1addef00000000, 0xfacead7a00000000,
+    0x04b54d1e00000000, 0x91613d8b00000000, 0xf8428dd700000000,
+    0x6d96fd4200000000, 0x93ed1d2600000000, 0x06396db300000000,
+    0x168e285400000000, 0x835a58c100000000, 0x7d21b8a500000000,
+    0xe8f5c83000000000, 0x81d6786c00000000, 0x140208f900000000,
+    0xea79e89d00000000, 0x7fad980800000000, 0x383f882400000000,
+    0xadebf8b100000000, 0x539018d500000000, 0xc644684000000000,
+    0xaf67d81c00000000, 0x3ab3a88900000000, 0xc4c848ed00000000,
+    0x511c387800000000, 0x4aec69b500000000, 0xdf38192000000000,
+    0x2143f94400000000, 0xb49789d100000000, 0xddb4398d00000000,
+    0x4860491800000000, 0xb61ba97c00000000, 0x23cfd9e900000000,
+    0x645dc9c500000000, 0xf189b95000000000, 0x0ff2593400000000,
+    0x9a2629a100000000, 0xf30599fd00000000, 0x66d1e96800000000,
+    0x98aa090c00000000, 0x0d7e799900000000, 0xef4cdb4d00000000,
+    0x7a98abd800000000, 0x84e34bbc00000000, 0x11373b2900000000,
+    0x78148b7500000000, 0xedc0fbe000000000, 0x13bb1b8400000000,
+    0x866f6b1100000000, 0xc1fd7b3d00000000, 0x54290ba800000000,
+    0xaa52ebcc00000000, 0x3f869b5900000000, 0x56a52b0500000000,
+    0xc3715b9000000000, 0x3d0abbf400000000, 0xa8decb6100000000,
+    0xb32e9aac00000000, 0x26faea3900000000, 0xd8810a5d00000000,
+    0x4d557ac800000000, 0x2476ca9400000000, 0xb1a2ba0100000000,
+    0x4fd95a6500000000, 0xda0d2af000000000, 0x9d9f3adc00000000,
+    0x084b4a4900000000, 0xf630aa2d00000000, 0x63e4dab800000000,
+    0x0ac76ae400000000, 0x9f131a7100000000, 0x6168fa1500000000,
+    0xf4bc8a8000000000},
+   {0x0000000000000000, 0x1f17f08000000000, 0x7f2891da00000000,
+    0x603f615a00000000, 0xbf56536e00000000, 0xa041a3ee00000000,
+    0xc07ec2b400000000, 0xdf69323400000000, 0x7eada6dc00000000,
+    0x61ba565c00000000, 0x0185370600000000, 0x1e92c78600000000,
+    0xc1fbf5b200000000, 0xdeec053200000000, 0xbed3646800000000,
+    0xa1c494e800000000, 0xbd5c3c6200000000, 0xa24bcce200000000,
+    0xc274adb800000000, 0xdd635d3800000000, 0x020a6f0c00000000,
+    0x1d1d9f8c00000000, 0x7d22fed600000000, 0x62350e5600000000,
+    0xc3f19abe00000000, 0xdce66a3e00000000, 0xbcd90b6400000000,
+    0xa3cefbe400000000, 0x7ca7c9d000000000, 0x63b0395000000000,
+    0x038f580a00000000, 0x1c98a88a00000000, 0x7ab978c400000000,
+    0x65ae884400000000, 0x0591e91e00000000, 0x1a86199e00000000,
+    0xc5ef2baa00000000, 0xdaf8db2a00000000, 0xbac7ba7000000000,
+    0xa5d04af000000000, 0x0414de1800000000, 0x1b032e9800000000,
+    0x7b3c4fc200000000, 0x642bbf4200000000, 0xbb428d7600000000,
+    0xa4557df600000000, 0xc46a1cac00000000, 0xdb7dec2c00000000,
+    0xc7e544a600000000, 0xd8f2b42600000000, 0xb8cdd57c00000000,
+    0xa7da25fc00000000, 0x78b317c800000000, 0x67a4e74800000000,
+    0x079b861200000000, 0x188c769200000000, 0xb948e27a00000000,
+    0xa65f12fa00000000, 0xc66073a000000000, 0xd977832000000000,
+    0x061eb11400000000, 0x1909419400000000, 0x793620ce00000000,
+    0x6621d04e00000000, 0xb574805300000000, 0xaa6370d300000000,
+    0xca5c118900000000, 0xd54be10900000000, 0x0a22d33d00000000,
+    0x153523bd00000000, 0x750a42e700000000, 0x6a1db26700000000,
+    0xcbd9268f00000000, 0xd4ced60f00000000, 0xb4f1b75500000000,
+    0xabe647d500000000, 0x748f75e100000000, 0x6b98856100000000,
+    0x0ba7e43b00000000, 0x14b014bb00000000, 0x0828bc3100000000,
+    0x173f4cb100000000, 0x77002deb00000000, 0x6817dd6b00000000,
+    0xb77eef5f00000000, 0xa8691fdf00000000, 0xc8567e8500000000,
+    0xd7418e0500000000, 0x76851aed00000000, 0x6992ea6d00000000,
+    0x09ad8b3700000000, 0x16ba7bb700000000, 0xc9d3498300000000,
+    0xd6c4b90300000000, 0xb6fbd85900000000, 0xa9ec28d900000000,
+    0xcfcdf89700000000, 0xd0da081700000000, 0xb0e5694d00000000,
+    0xaff299cd00000000, 0x709babf900000000, 0x6f8c5b7900000000,
+    0x0fb33a2300000000, 0x10a4caa300000000, 0xb1605e4b00000000,
+    0xae77aecb00000000, 0xce48cf9100000000, 0xd15f3f1100000000,
+    0x0e360d2500000000, 0x1121fda500000000, 0x711e9cff00000000,
+    0x6e096c7f00000000, 0x7291c4f500000000, 0x6d86347500000000,
+    0x0db9552f00000000, 0x12aea5af00000000, 0xcdc7979b00000000,
+    0xd2d0671b00000000, 0xb2ef064100000000, 0xadf8f6c100000000,
+    0x0c3c622900000000, 0x132b92a900000000, 0x7314f3f300000000,
+    0x6c03037300000000, 0xb36a314700000000, 0xac7dc1c700000000,
+    0xcc42a09d00000000, 0xd355501d00000000, 0x6ae900a700000000,
+    0x75fef02700000000, 0x15c1917d00000000, 0x0ad661fd00000000,
+    0xd5bf53c900000000, 0xcaa8a34900000000, 0xaa97c21300000000,
+    0xb580329300000000, 0x1444a67b00000000, 0x0b5356fb00000000,
+    0x6b6c37a100000000, 0x747bc72100000000, 0xab12f51500000000,
+    0xb405059500000000, 0xd43a64cf00000000, 0xcb2d944f00000000,
+    0xd7b53cc500000000, 0xc8a2cc4500000000, 0xa89dad1f00000000,
+    0xb78a5d9f00000000, 0x68e36fab00000000, 0x77f49f2b00000000,
+    0x17cbfe7100000000, 0x08dc0ef100000000, 0xa9189a1900000000,
+    0xb60f6a9900000000, 0xd6300bc300000000, 0xc927fb4300000000,
+    0x164ec97700000000, 0x095939f700000000, 0x696658ad00000000,
+    0x7671a82d00000000, 0x1050786300000000, 0x0f4788e300000000,
+    0x6f78e9b900000000, 0x706f193900000000, 0xaf062b0d00000000,
+    0xb011db8d00000000, 0xd02ebad700000000, 0xcf394a5700000000,
+    0x6efddebf00000000, 0x71ea2e3f00000000, 0x11d54f6500000000,
+    0x0ec2bfe500000000, 0xd1ab8dd100000000, 0xcebc7d5100000000,
+    0xae831c0b00000000, 0xb194ec8b00000000, 0xad0c440100000000,
+    0xb21bb48100000000, 0xd224d5db00000000, 0xcd33255b00000000,
+    0x125a176f00000000, 0x0d4de7ef00000000, 0x6d7286b500000000,
+    0x7265763500000000, 0xd3a1e2dd00000000, 0xccb6125d00000000,
+    0xac89730700000000, 0xb39e838700000000, 0x6cf7b1b300000000,
+    0x73e0413300000000, 0x13df206900000000, 0x0cc8d0e900000000,
+    0xdf9d80f400000000, 0xc08a707400000000, 0xa0b5112e00000000,
+    0xbfa2e1ae00000000, 0x60cbd39a00000000, 0x7fdc231a00000000,
+    0x1fe3424000000000, 0x00f4b2c000000000, 0xa130262800000000,
+    0xbe27d6a800000000, 0xde18b7f200000000, 0xc10f477200000000,
+    0x1e66754600000000, 0x017185c600000000, 0x614ee49c00000000,
+    0x7e59141c00000000, 0x62c1bc9600000000, 0x7dd64c1600000000,
+    0x1de92d4c00000000, 0x02feddcc00000000, 0xdd97eff800000000,
+    0xc2801f7800000000, 0xa2bf7e2200000000, 0xbda88ea200000000,
+    0x1c6c1a4a00000000, 0x037beaca00000000, 0x63448b9000000000,
+    0x7c537b1000000000, 0xa33a492400000000, 0xbc2db9a400000000,
+    0xdc12d8fe00000000, 0xc305287e00000000, 0xa524f83000000000,
+    0xba3308b000000000, 0xda0c69ea00000000, 0xc51b996a00000000,
+    0x1a72ab5e00000000, 0x05655bde00000000, 0x655a3a8400000000,
+    0x7a4dca0400000000, 0xdb895eec00000000, 0xc49eae6c00000000,
+    0xa4a1cf3600000000, 0xbbb63fb600000000, 0x64df0d8200000000,
+    0x7bc8fd0200000000, 0x1bf79c5800000000, 0x04e06cd800000000,
+    0x1878c45200000000, 0x076f34d200000000, 0x6750558800000000,
+    0x7847a50800000000, 0xa72e973c00000000, 0xb83967bc00000000,
+    0xd80606e600000000, 0xc711f66600000000, 0x66d5628e00000000,
+    0x79c2920e00000000, 0x19fdf35400000000, 0x06ea03d400000000,
+    0xd98331e000000000, 0xc694c16000000000, 0xa6aba03a00000000,
+    0xb9bc50ba00000000},
+   {0x0000000000000000, 0xe2fd888d00000000, 0x85fd60c000000000,
+    0x6700e84d00000000, 0x4bfdb05b00000000, 0xa90038d600000000,
+    0xce00d09b00000000, 0x2cfd581600000000, 0x96fa61b700000000,
+    0x7407e93a00000000, 0x1307017700000000, 0xf1fa89fa00000000,
+    0xdd07d1ec00000000, 0x3ffa596100000000, 0x58fab12c00000000,
+    0xba0739a100000000, 0x6df3b2b500000000, 0x8f0e3a3800000000,
+    0xe80ed27500000000, 0x0af35af800000000, 0x260e02ee00000000,
+    0xc4f38a6300000000, 0xa3f3622e00000000, 0x410eeaa300000000,
+    0xfb09d30200000000, 0x19f45b8f00000000, 0x7ef4b3c200000000,
+    0x9c093b4f00000000, 0xb0f4635900000000, 0x5209ebd400000000,
+    0x3509039900000000, 0xd7f48b1400000000, 0x9be014b000000000,
+    0x791d9c3d00000000, 0x1e1d747000000000, 0xfce0fcfd00000000,
+    0xd01da4eb00000000, 0x32e02c6600000000, 0x55e0c42b00000000,
+    0xb71d4ca600000000, 0x0d1a750700000000, 0xefe7fd8a00000000,
+    0x88e715c700000000, 0x6a1a9d4a00000000, 0x46e7c55c00000000,
+    0xa41a4dd100000000, 0xc31aa59c00000000, 0x21e72d1100000000,
+    0xf613a60500000000, 0x14ee2e8800000000, 0x73eec6c500000000,
+    0x91134e4800000000, 0xbdee165e00000000, 0x5f139ed300000000,
+    0x3813769e00000000, 0xdaeefe1300000000, 0x60e9c7b200000000,
+    0x82144f3f00000000, 0xe514a77200000000, 0x07e92fff00000000,
+    0x2b1477e900000000, 0xc9e9ff6400000000, 0xaee9172900000000,
+    0x4c149fa400000000, 0x77c758bb00000000, 0x953ad03600000000,
+    0xf23a387b00000000, 0x10c7b0f600000000, 0x3c3ae8e000000000,
+    0xdec7606d00000000, 0xb9c7882000000000, 0x5b3a00ad00000000,
+    0xe13d390c00000000, 0x03c0b18100000000, 0x64c059cc00000000,
+    0x863dd14100000000, 0xaac0895700000000, 0x483d01da00000000,
+    0x2f3de99700000000, 0xcdc0611a00000000, 0x1a34ea0e00000000,
+    0xf8c9628300000000, 0x9fc98ace00000000, 0x7d34024300000000,
+    0x51c95a5500000000, 0xb334d2d800000000, 0xd4343a9500000000,
+    0x36c9b21800000000, 0x8cce8bb900000000, 0x6e33033400000000,
+    0x0933eb7900000000, 0xebce63f400000000, 0xc7333be200000000,
+    0x25ceb36f00000000, 0x42ce5b2200000000, 0xa033d3af00000000,
+    0xec274c0b00000000, 0x0edac48600000000, 0x69da2ccb00000000,
+    0x8b27a44600000000, 0xa7dafc5000000000, 0x452774dd00000000,
+    0x22279c9000000000, 0xc0da141d00000000, 0x7add2dbc00000000,
+    0x9820a53100000000, 0xff204d7c00000000, 0x1dddc5f100000000,
+    0x31209de700000000, 0xd3dd156a00000000, 0xb4ddfd2700000000,
+    0x562075aa00000000, 0x81d4febe00000000, 0x6329763300000000,
+    0x04299e7e00000000, 0xe6d416f300000000, 0xca294ee500000000,
+    0x28d4c66800000000, 0x4fd42e2500000000, 0xad29a6a800000000,
+    0x172e9f0900000000, 0xf5d3178400000000, 0x92d3ffc900000000,
+    0x702e774400000000, 0x5cd32f5200000000, 0xbe2ea7df00000000,
+    0xd92e4f9200000000, 0x3bd3c71f00000000, 0xaf88c0ad00000000,
+    0x4d75482000000000, 0x2a75a06d00000000, 0xc88828e000000000,
+    0xe47570f600000000, 0x0688f87b00000000, 0x6188103600000000,
+    0x837598bb00000000, 0x3972a11a00000000, 0xdb8f299700000000,
+    0xbc8fc1da00000000, 0x5e72495700000000, 0x728f114100000000,
+    0x907299cc00000000, 0xf772718100000000, 0x158ff90c00000000,
+    0xc27b721800000000, 0x2086fa9500000000, 0x478612d800000000,
+    0xa57b9a5500000000, 0x8986c24300000000, 0x6b7b4ace00000000,
+    0x0c7ba28300000000, 0xee862a0e00000000, 0x548113af00000000,
+    0xb67c9b2200000000, 0xd17c736f00000000, 0x3381fbe200000000,
+    0x1f7ca3f400000000, 0xfd812b7900000000, 0x9a81c33400000000,
+    0x787c4bb900000000, 0x3468d41d00000000, 0xd6955c9000000000,
+    0xb195b4dd00000000, 0x53683c5000000000, 0x7f95644600000000,
+    0x9d68eccb00000000, 0xfa68048600000000, 0x18958c0b00000000,
+    0xa292b5aa00000000, 0x406f3d2700000000, 0x276fd56a00000000,
+    0xc5925de700000000, 0xe96f05f100000000, 0x0b928d7c00000000,
+    0x6c92653100000000, 0x8e6fedbc00000000, 0x599b66a800000000,
+    0xbb66ee2500000000, 0xdc66066800000000, 0x3e9b8ee500000000,
+    0x1266d6f300000000, 0xf09b5e7e00000000, 0x979bb63300000000,
+    0x75663ebe00000000, 0xcf61071f00000000, 0x2d9c8f9200000000,
+    0x4a9c67df00000000, 0xa861ef5200000000, 0x849cb74400000000,
+    0x66613fc900000000, 0x0161d78400000000, 0xe39c5f0900000000,
+    0xd84f981600000000, 0x3ab2109b00000000, 0x5db2f8d600000000,
+    0xbf4f705b00000000, 0x93b2284d00000000, 0x714fa0c000000000,
+    0x164f488d00000000, 0xf4b2c00000000000, 0x4eb5f9a100000000,
+    0xac48712c00000000, 0xcb48996100000000, 0x29b511ec00000000,
+    0x054849fa00000000, 0xe7b5c17700000000, 0x80b5293a00000000,
+    0x6248a1b700000000, 0xb5bc2aa300000000, 0x5741a22e00000000,
+    0x30414a6300000000, 0xd2bcc2ee00000000, 0xfe419af800000000,
+    0x1cbc127500000000, 0x7bbcfa3800000000, 0x994172b500000000,
+    0x23464b1400000000, 0xc1bbc39900000000, 0xa6bb2bd400000000,
+    0x4446a35900000000, 0x68bbfb4f00000000, 0x8a4673c200000000,
+    0xed469b8f00000000, 0x0fbb130200000000, 0x43af8ca600000000,
+    0xa152042b00000000, 0xc652ec6600000000, 0x24af64eb00000000,
+    0x08523cfd00000000, 0xeaafb47000000000, 0x8daf5c3d00000000,
+    0x6f52d4b000000000, 0xd555ed1100000000, 0x37a8659c00000000,
+    0x50a88dd100000000, 0xb255055c00000000, 0x9ea85d4a00000000,
+    0x7c55d5c700000000, 0x1b553d8a00000000, 0xf9a8b50700000000,
+    0x2e5c3e1300000000, 0xcca1b69e00000000, 0xaba15ed300000000,
+    0x495cd65e00000000, 0x65a18e4800000000, 0x875c06c500000000,
+    0xe05cee8800000000, 0x02a1660500000000, 0xb8a65fa400000000,
+    0x5a5bd72900000000, 0x3d5b3f6400000000, 0xdfa6b7e900000000,
+    0xf35befff00000000, 0x11a6677200000000, 0x76a68f3f00000000,
+    0x945b07b200000000},
+   {0x0000000000000000, 0xa90b894e00000000, 0x5217129d00000000,
+    0xfb1c9bd300000000, 0xe52855e100000000, 0x4c23dcaf00000000,
+    0xb73f477c00000000, 0x1e34ce3200000000, 0x8b57db1900000000,
+    0x225c525700000000, 0xd940c98400000000, 0x704b40ca00000000,
+    0x6e7f8ef800000000, 0xc77407b600000000, 0x3c689c6500000000,
+    0x9563152b00000000, 0x16afb63300000000, 0xbfa43f7d00000000,
+    0x44b8a4ae00000000, 0xedb32de000000000, 0xf387e3d200000000,
+    0x5a8c6a9c00000000, 0xa190f14f00000000, 0x089b780100000000,
+    0x9df86d2a00000000, 0x34f3e46400000000, 0xcfef7fb700000000,
+    0x66e4f6f900000000, 0x78d038cb00000000, 0xd1dbb18500000000,
+    0x2ac72a5600000000, 0x83cca31800000000, 0x2c5e6d6700000000,
+    0x8555e42900000000, 0x7e497ffa00000000, 0xd742f6b400000000,
+    0xc976388600000000, 0x607db1c800000000, 0x9b612a1b00000000,
+    0x326aa35500000000, 0xa709b67e00000000, 0x0e023f3000000000,
+    0xf51ea4e300000000, 0x5c152dad00000000, 0x4221e39f00000000,
+    0xeb2a6ad100000000, 0x1036f10200000000, 0xb93d784c00000000,
+    0x3af1db5400000000, 0x93fa521a00000000, 0x68e6c9c900000000,
+    0xc1ed408700000000, 0xdfd98eb500000000, 0x76d207fb00000000,
+    0x8dce9c2800000000, 0x24c5156600000000, 0xb1a6004d00000000,
+    0x18ad890300000000, 0xe3b112d000000000, 0x4aba9b9e00000000,
+    0x548e55ac00000000, 0xfd85dce200000000, 0x0699473100000000,
+    0xaf92ce7f00000000, 0x58bcdace00000000, 0xf1b7538000000000,
+    0x0aabc85300000000, 0xa3a0411d00000000, 0xbd948f2f00000000,
+    0x149f066100000000, 0xef839db200000000, 0x468814fc00000000,
+    0xd3eb01d700000000, 0x7ae0889900000000, 0x81fc134a00000000,
+    0x28f79a0400000000, 0x36c3543600000000, 0x9fc8dd7800000000,
+    0x64d446ab00000000, 0xcddfcfe500000000, 0x4e136cfd00000000,
+    0xe718e5b300000000, 0x1c047e6000000000, 0xb50ff72e00000000,
+    0xab3b391c00000000, 0x0230b05200000000, 0xf92c2b8100000000,
+    0x5027a2cf00000000, 0xc544b7e400000000, 0x6c4f3eaa00000000,
+    0x9753a57900000000, 0x3e582c3700000000, 0x206ce20500000000,
+    0x89676b4b00000000, 0x727bf09800000000, 0xdb7079d600000000,
+    0x74e2b7a900000000, 0xdde93ee700000000, 0x26f5a53400000000,
+    0x8ffe2c7a00000000, 0x91cae24800000000, 0x38c16b0600000000,
+    0xc3ddf0d500000000, 0x6ad6799b00000000, 0xffb56cb000000000,
+    0x56bee5fe00000000, 0xada27e2d00000000, 0x04a9f76300000000,
+    0x1a9d395100000000, 0xb396b01f00000000, 0x488a2bcc00000000,
+    0xe181a28200000000, 0x624d019a00000000, 0xcb4688d400000000,
+    0x305a130700000000, 0x99519a4900000000, 0x8765547b00000000,
+    0x2e6edd3500000000, 0xd57246e600000000, 0x7c79cfa800000000,
+    0xe91ada8300000000, 0x401153cd00000000, 0xbb0dc81e00000000,
+    0x1206415000000000, 0x0c328f6200000000, 0xa539062c00000000,
+    0x5e259dff00000000, 0xf72e14b100000000, 0xf17ec44600000000,
+    0x58754d0800000000, 0xa369d6db00000000, 0x0a625f9500000000,
+    0x145691a700000000, 0xbd5d18e900000000, 0x4641833a00000000,
+    0xef4a0a7400000000, 0x7a291f5f00000000, 0xd322961100000000,
+    0x283e0dc200000000, 0x8135848c00000000, 0x9f014abe00000000,
+    0x360ac3f000000000, 0xcd16582300000000, 0x641dd16d00000000,
+    0xe7d1727500000000, 0x4edafb3b00000000, 0xb5c660e800000000,
+    0x1ccde9a600000000, 0x02f9279400000000, 0xabf2aeda00000000,
+    0x50ee350900000000, 0xf9e5bc4700000000, 0x6c86a96c00000000,
+    0xc58d202200000000, 0x3e91bbf100000000, 0x979a32bf00000000,
+    0x89aefc8d00000000, 0x20a575c300000000, 0xdbb9ee1000000000,
+    0x72b2675e00000000, 0xdd20a92100000000, 0x742b206f00000000,
+    0x8f37bbbc00000000, 0x263c32f200000000, 0x3808fcc000000000,
+    0x9103758e00000000, 0x6a1fee5d00000000, 0xc314671300000000,
+    0x5677723800000000, 0xff7cfb7600000000, 0x046060a500000000,
+    0xad6be9eb00000000, 0xb35f27d900000000, 0x1a54ae9700000000,
+    0xe148354400000000, 0x4843bc0a00000000, 0xcb8f1f1200000000,
+    0x6284965c00000000, 0x99980d8f00000000, 0x309384c100000000,
+    0x2ea74af300000000, 0x87acc3bd00000000, 0x7cb0586e00000000,
+    0xd5bbd12000000000, 0x40d8c40b00000000, 0xe9d34d4500000000,
+    0x12cfd69600000000, 0xbbc45fd800000000, 0xa5f091ea00000000,
+    0x0cfb18a400000000, 0xf7e7837700000000, 0x5eec0a3900000000,
+    0xa9c21e8800000000, 0x00c997c600000000, 0xfbd50c1500000000,
+    0x52de855b00000000, 0x4cea4b6900000000, 0xe5e1c22700000000,
+    0x1efd59f400000000, 0xb7f6d0ba00000000, 0x2295c59100000000,
+    0x8b9e4cdf00000000, 0x7082d70c00000000, 0xd9895e4200000000,
+    0xc7bd907000000000, 0x6eb6193e00000000, 0x95aa82ed00000000,
+    0x3ca10ba300000000, 0xbf6da8bb00000000, 0x166621f500000000,
+    0xed7aba2600000000, 0x4471336800000000, 0x5a45fd5a00000000,
+    0xf34e741400000000, 0x0852efc700000000, 0xa159668900000000,
+    0x343a73a200000000, 0x9d31faec00000000, 0x662d613f00000000,
+    0xcf26e87100000000, 0xd112264300000000, 0x7819af0d00000000,
+    0x830534de00000000, 0x2a0ebd9000000000, 0x859c73ef00000000,
+    0x2c97faa100000000, 0xd78b617200000000, 0x7e80e83c00000000,
+    0x60b4260e00000000, 0xc9bfaf4000000000, 0x32a3349300000000,
+    0x9ba8bddd00000000, 0x0ecba8f600000000, 0xa7c021b800000000,
+    0x5cdcba6b00000000, 0xf5d7332500000000, 0xebe3fd1700000000,
+    0x42e8745900000000, 0xb9f4ef8a00000000, 0x10ff66c400000000,
+    0x9333c5dc00000000, 0x3a384c9200000000, 0xc124d74100000000,
+    0x682f5e0f00000000, 0x761b903d00000000, 0xdf10197300000000,
+    0x240c82a000000000, 0x8d070bee00000000, 0x18641ec500000000,
+    0xb16f978b00000000, 0x4a730c5800000000, 0xe378851600000000,
+    0xfd4c4b2400000000, 0x5447c26a00000000, 0xaf5b59b900000000,
+    0x0650d0f700000000},
+   {0x0000000000000000, 0x479244af00000000, 0xcf22f88500000000,
+    0x88b0bc2a00000000, 0xdf4381d000000000, 0x98d1c57f00000000,
+    0x1061795500000000, 0x57f33dfa00000000, 0xff81737a00000000,
+    0xb81337d500000000, 0x30a38bff00000000, 0x7731cf5000000000,
+    0x20c2f2aa00000000, 0x6750b60500000000, 0xefe00a2f00000000,
+    0xa8724e8000000000, 0xfe03e7f400000000, 0xb991a35b00000000,
+    0x31211f7100000000, 0x76b35bde00000000, 0x2140662400000000,
+    0x66d2228b00000000, 0xee629ea100000000, 0xa9f0da0e00000000,
+    0x0182948e00000000, 0x4610d02100000000, 0xcea06c0b00000000,
+    0x893228a400000000, 0xdec1155e00000000, 0x995351f100000000,
+    0x11e3eddb00000000, 0x5671a97400000000, 0xbd01bf3200000000,
+    0xfa93fb9d00000000, 0x722347b700000000, 0x35b1031800000000,
+    0x62423ee200000000, 0x25d07a4d00000000, 0xad60c66700000000,
+    0xeaf282c800000000, 0x4280cc4800000000, 0x051288e700000000,
+    0x8da234cd00000000, 0xca30706200000000, 0x9dc34d9800000000,
+    0xda51093700000000, 0x52e1b51d00000000, 0x1573f1b200000000,
+    0x430258c600000000, 0x04901c6900000000, 0x8c20a04300000000,
+    0xcbb2e4ec00000000, 0x9c41d91600000000, 0xdbd39db900000000,
+    0x5363219300000000, 0x14f1653c00000000, 0xbc832bbc00000000,
+    0xfb116f1300000000, 0x73a1d33900000000, 0x3433979600000000,
+    0x63c0aa6c00000000, 0x2452eec300000000, 0xace252e900000000,
+    0xeb70164600000000, 0x7a037e6500000000, 0x3d913aca00000000,
+    0xb52186e000000000, 0xf2b3c24f00000000, 0xa540ffb500000000,
+    0xe2d2bb1a00000000, 0x6a62073000000000, 0x2df0439f00000000,
+    0x85820d1f00000000, 0xc21049b000000000, 0x4aa0f59a00000000,
+    0x0d32b13500000000, 0x5ac18ccf00000000, 0x1d53c86000000000,
+    0x95e3744a00000000, 0xd27130e500000000, 0x8400999100000000,
+    0xc392dd3e00000000, 0x4b22611400000000, 0x0cb025bb00000000,
+    0x5b43184100000000, 0x1cd15cee00000000, 0x9461e0c400000000,
+    0xd3f3a46b00000000, 0x7b81eaeb00000000, 0x3c13ae4400000000,
+    0xb4a3126e00000000, 0xf33156c100000000, 0xa4c26b3b00000000,
+    0xe3502f9400000000, 0x6be093be00000000, 0x2c72d71100000000,
+    0xc702c15700000000, 0x809085f800000000, 0x082039d200000000,
+    0x4fb27d7d00000000, 0x1841408700000000, 0x5fd3042800000000,
+    0xd763b80200000000, 0x90f1fcad00000000, 0x3883b22d00000000,
+    0x7f11f68200000000, 0xf7a14aa800000000, 0xb0330e0700000000,
+    0xe7c033fd00000000, 0xa052775200000000, 0x28e2cb7800000000,
+    0x6f708fd700000000, 0x390126a300000000, 0x7e93620c00000000,
+    0xf623de2600000000, 0xb1b19a8900000000, 0xe642a77300000000,
+    0xa1d0e3dc00000000, 0x29605ff600000000, 0x6ef21b5900000000,
+    0xc68055d900000000, 0x8112117600000000, 0x09a2ad5c00000000,
+    0x4e30e9f300000000, 0x19c3d40900000000, 0x5e5190a600000000,
+    0xd6e12c8c00000000, 0x9173682300000000, 0xf406fcca00000000,
+    0xb394b86500000000, 0x3b24044f00000000, 0x7cb640e000000000,
+    0x2b457d1a00000000, 0x6cd739b500000000, 0xe467859f00000000,
+    0xa3f5c13000000000, 0x0b878fb000000000, 0x4c15cb1f00000000,
+    0xc4a5773500000000, 0x8337339a00000000, 0xd4c40e6000000000,
+    0x93564acf00000000, 0x1be6f6e500000000, 0x5c74b24a00000000,
+    0x0a051b3e00000000, 0x4d975f9100000000, 0xc527e3bb00000000,
+    0x82b5a71400000000, 0xd5469aee00000000, 0x92d4de4100000000,
+    0x1a64626b00000000, 0x5df626c400000000, 0xf584684400000000,
+    0xb2162ceb00000000, 0x3aa690c100000000, 0x7d34d46e00000000,
+    0x2ac7e99400000000, 0x6d55ad3b00000000, 0xe5e5111100000000,
+    0xa27755be00000000, 0x490743f800000000, 0x0e95075700000000,
+    0x8625bb7d00000000, 0xc1b7ffd200000000, 0x9644c22800000000,
+    0xd1d6868700000000, 0x59663aad00000000, 0x1ef47e0200000000,
+    0xb686308200000000, 0xf114742d00000000, 0x79a4c80700000000,
+    0x3e368ca800000000, 0x69c5b15200000000, 0x2e57f5fd00000000,
+    0xa6e749d700000000, 0xe1750d7800000000, 0xb704a40c00000000,
+    0xf096e0a300000000, 0x78265c8900000000, 0x3fb4182600000000,
+    0x684725dc00000000, 0x2fd5617300000000, 0xa765dd5900000000,
+    0xe0f799f600000000, 0x4885d77600000000, 0x0f1793d900000000,
+    0x87a72ff300000000, 0xc0356b5c00000000, 0x97c656a600000000,
+    0xd054120900000000, 0x58e4ae2300000000, 0x1f76ea8c00000000,
+    0x8e0582af00000000, 0xc997c60000000000, 0x41277a2a00000000,
+    0x06b53e8500000000, 0x5146037f00000000, 0x16d447d000000000,
+    0x9e64fbfa00000000, 0xd9f6bf5500000000, 0x7184f1d500000000,
+    0x3616b57a00000000, 0xbea6095000000000, 0xf9344dff00000000,
+    0xaec7700500000000, 0xe95534aa00000000, 0x61e5888000000000,
+    0x2677cc2f00000000, 0x7006655b00000000, 0x379421f400000000,
+    0xbf249dde00000000, 0xf8b6d97100000000, 0xaf45e48b00000000,
+    0xe8d7a02400000000, 0x60671c0e00000000, 0x27f558a100000000,
+    0x8f87162100000000, 0xc815528e00000000, 0x40a5eea400000000,
+    0x0737aa0b00000000, 0x50c497f100000000, 0x1756d35e00000000,
+    0x9fe66f7400000000, 0xd8742bdb00000000, 0x33043d9d00000000,
+    0x7496793200000000, 0xfc26c51800000000, 0xbbb481b700000000,
+    0xec47bc4d00000000, 0xabd5f8e200000000, 0x236544c800000000,
+    0x64f7006700000000, 0xcc854ee700000000, 0x8b170a4800000000,
+    0x03a7b66200000000, 0x4435f2cd00000000, 0x13c6cf3700000000,
+    0x54548b9800000000, 0xdce437b200000000, 0x9b76731d00000000,
+    0xcd07da6900000000, 0x8a959ec600000000, 0x022522ec00000000,
+    0x45b7664300000000, 0x12445bb900000000, 0x55d61f1600000000,
+    0xdd66a33c00000000, 0x9af4e79300000000, 0x3286a91300000000,
+    0x7514edbc00000000, 0xfda4519600000000, 0xba36153900000000,
+    0xedc528c300000000, 0xaa576c6c00000000, 0x22e7d04600000000,
+    0x657594e900000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
+    0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
+    0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
+    0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
+    0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
+    0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
+    0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
+    0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
+    0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
+    0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
+    0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
+    0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
+    0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
+    0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
+    0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
+    0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
+    0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
+    0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
+    0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
+    0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
+    0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
+    0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
+    0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
+    0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
+    0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
+    0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
+    0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
+    0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
+    0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
+    0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
+    0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
+    0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
+    0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
+    0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
+    0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
+    0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
+    0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
+    0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
+    0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
+    0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
+    0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
+    0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
+    0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
+    0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
+    0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
+    0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
+    0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
+    0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
+    0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
+    0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
+    0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
+    0xd8ac6b35},
+   {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
+    0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
+    0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
+    0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
+    0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
+    0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
+    0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
+    0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
+    0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
+    0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
+    0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
+    0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
+    0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
+    0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
+    0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
+    0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
+    0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
+    0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
+    0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
+    0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
+    0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
+    0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
+    0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
+    0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
+    0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
+    0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
+    0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
+    0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
+    0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
+    0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
+    0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
+    0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
+    0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
+    0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
+    0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
+    0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
+    0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
+    0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
+    0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
+    0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
+    0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
+    0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
+    0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
+    0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
+    0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
+    0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
+    0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
+    0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
+    0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
+    0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
+    0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
+    0xa140efa8},
+   {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
+    0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
+    0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
+    0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
+    0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
+    0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
+    0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
+    0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
+    0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
+    0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
+    0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
+    0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
+    0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
+    0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
+    0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
+    0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
+    0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
+    0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
+    0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
+    0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
+    0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
+    0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
+    0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
+    0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
+    0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
+    0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
+    0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
+    0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
+    0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
+    0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
+    0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
+    0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
+    0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
+    0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
+    0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
+    0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
+    0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
+    0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
+    0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
+    0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
+    0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
+    0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
+    0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
+    0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
+    0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
+    0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
+    0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
+    0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
+    0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
+    0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
+    0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
+    0x917cd6a1},
+   {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
+    0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
+    0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
+    0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
+    0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
+    0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
+    0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
+    0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
+    0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
+    0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
+    0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
+    0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
+    0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
+    0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
+    0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
+    0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
+    0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
+    0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
+    0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
+    0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
+    0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
+    0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
+    0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
+    0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
+    0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
+    0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
+    0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
+    0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
+    0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
+    0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
+    0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
+    0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
+    0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
+    0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
+    0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
+    0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
+    0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
+    0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
+    0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
+    0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
+    0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
+    0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
+    0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
+    0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
+    0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
+    0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
+    0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
+    0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
+    0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
+    0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
+    0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
+    0x18ba364e}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x43cba687, 0xc7903cd4, 0x845b9a53, 0xcf270873,
+    0x8cecaef4, 0x08b734a7, 0x4b7c9220, 0x9e4f10e6, 0xdd84b661,
+    0x59df2c32, 0x1a148ab5, 0x51681895, 0x12a3be12, 0x96f82441,
+    0xd53382c6, 0x7d995117, 0x3e52f790, 0xba096dc3, 0xf9c2cb44,
+    0xb2be5964, 0xf175ffe3, 0x752e65b0, 0x36e5c337, 0xe3d641f1,
+    0xa01de776, 0x24467d25, 0x678ddba2, 0x2cf14982, 0x6f3aef05,
+    0xeb617556, 0xa8aad3d1, 0xfa32a32e, 0xb9f905a9, 0x3da29ffa,
+    0x7e69397d, 0x3515ab5d, 0x76de0dda, 0xf2859789, 0xb14e310e,
+    0x647db3c8, 0x27b6154f, 0xa3ed8f1c, 0xe026299b, 0xab5abbbb,
+    0xe8911d3c, 0x6cca876f, 0x2f0121e8, 0x87abf239, 0xc46054be,
+    0x403bceed, 0x03f0686a, 0x488cfa4a, 0x0b475ccd, 0x8f1cc69e,
+    0xccd76019, 0x19e4e2df, 0x5a2f4458, 0xde74de0b, 0x9dbf788c,
+    0xd6c3eaac, 0x95084c2b, 0x1153d678, 0x529870ff, 0xf465465d,
+    0xb7aee0da, 0x33f57a89, 0x703edc0e, 0x3b424e2e, 0x7889e8a9,
+    0xfcd272fa, 0xbf19d47d, 0x6a2a56bb, 0x29e1f03c, 0xadba6a6f,
+    0xee71cce8, 0xa50d5ec8, 0xe6c6f84f, 0x629d621c, 0x2156c49b,
+    0x89fc174a, 0xca37b1cd, 0x4e6c2b9e, 0x0da78d19, 0x46db1f39,
+    0x0510b9be, 0x814b23ed, 0xc280856a, 0x17b307ac, 0x5478a12b,
+    0xd0233b78, 0x93e89dff, 0xd8940fdf, 0x9b5fa958, 0x1f04330b,
+    0x5ccf958c, 0x0e57e573, 0x4d9c43f4, 0xc9c7d9a7, 0x8a0c7f20,
+    0xc170ed00, 0x82bb4b87, 0x06e0d1d4, 0x452b7753, 0x9018f595,
+    0xd3d35312, 0x5788c941, 0x14436fc6, 0x5f3ffde6, 0x1cf45b61,
+    0x98afc132, 0xdb6467b5, 0x73ceb464, 0x300512e3, 0xb45e88b0,
+    0xf7952e37, 0xbce9bc17, 0xff221a90, 0x7b7980c3, 0x38b22644,
+    0xed81a482, 0xae4a0205, 0x2a119856, 0x69da3ed1, 0x22a6acf1,
+    0x616d0a76, 0xe5369025, 0xa6fd36a2, 0xe8cb8cba, 0xab002a3d,
+    0x2f5bb06e, 0x6c9016e9, 0x27ec84c9, 0x6427224e, 0xe07cb81d,
+    0xa3b71e9a, 0x76849c5c, 0x354f3adb, 0xb114a088, 0xf2df060f,
+    0xb9a3942f, 0xfa6832a8, 0x7e33a8fb, 0x3df80e7c, 0x9552ddad,
+    0xd6997b2a, 0x52c2e179, 0x110947fe, 0x5a75d5de, 0x19be7359,
+    0x9de5e90a, 0xde2e4f8d, 0x0b1dcd4b, 0x48d66bcc, 0xcc8df19f,
+    0x8f465718, 0xc43ac538, 0x87f163bf, 0x03aaf9ec, 0x40615f6b,
+    0x12f92f94, 0x51328913, 0xd5691340, 0x96a2b5c7, 0xddde27e7,
+    0x9e158160, 0x1a4e1b33, 0x5985bdb4, 0x8cb63f72, 0xcf7d99f5,
+    0x4b2603a6, 0x08eda521, 0x43913701, 0x005a9186, 0x84010bd5,
+    0xc7caad52, 0x6f607e83, 0x2cabd804, 0xa8f04257, 0xeb3be4d0,
+    0xa04776f0, 0xe38cd077, 0x67d74a24, 0x241ceca3, 0xf12f6e65,
+    0xb2e4c8e2, 0x36bf52b1, 0x7574f436, 0x3e086616, 0x7dc3c091,
+    0xf9985ac2, 0xba53fc45, 0x1caecae7, 0x5f656c60, 0xdb3ef633,
+    0x98f550b4, 0xd389c294, 0x90426413, 0x1419fe40, 0x57d258c7,
+    0x82e1da01, 0xc12a7c86, 0x4571e6d5, 0x06ba4052, 0x4dc6d272,
+    0x0e0d74f5, 0x8a56eea6, 0xc99d4821, 0x61379bf0, 0x22fc3d77,
+    0xa6a7a724, 0xe56c01a3, 0xae109383, 0xeddb3504, 0x6980af57,
+    0x2a4b09d0, 0xff788b16, 0xbcb32d91, 0x38e8b7c2, 0x7b231145,
+    0x305f8365, 0x739425e2, 0xf7cfbfb1, 0xb4041936, 0xe69c69c9,
+    0xa557cf4e, 0x210c551d, 0x62c7f39a, 0x29bb61ba, 0x6a70c73d,
+    0xee2b5d6e, 0xade0fbe9, 0x78d3792f, 0x3b18dfa8, 0xbf4345fb,
+    0xfc88e37c, 0xb7f4715c, 0xf43fd7db, 0x70644d88, 0x33afeb0f,
+    0x9b0538de, 0xd8ce9e59, 0x5c95040a, 0x1f5ea28d, 0x542230ad,
+    0x17e9962a, 0x93b20c79, 0xd079aafe, 0x054a2838, 0x46818ebf,
+    0xc2da14ec, 0x8111b26b, 0xca6d204b, 0x89a686cc, 0x0dfd1c9f,
+    0x4e36ba18},
+   {0x00000000, 0xe1b652ef, 0x836bd405, 0x62dd86ea, 0x06d7a80b,
+    0xe761fae4, 0x85bc7c0e, 0x640a2ee1, 0x0cae5117, 0xed1803f8,
+    0x8fc58512, 0x6e73d7fd, 0x0a79f91c, 0xebcfabf3, 0x89122d19,
+    0x68a47ff6, 0x185ca32e, 0xf9eaf1c1, 0x9b37772b, 0x7a8125c4,
+    0x1e8b0b25, 0xff3d59ca, 0x9de0df20, 0x7c568dcf, 0x14f2f239,
+    0xf544a0d6, 0x9799263c, 0x762f74d3, 0x12255a32, 0xf39308dd,
+    0x914e8e37, 0x70f8dcd8, 0x30b8465d, 0xd10e14b2, 0xb3d39258,
+    0x5265c0b7, 0x366fee56, 0xd7d9bcb9, 0xb5043a53, 0x54b268bc,
+    0x3c16174a, 0xdda045a5, 0xbf7dc34f, 0x5ecb91a0, 0x3ac1bf41,
+    0xdb77edae, 0xb9aa6b44, 0x581c39ab, 0x28e4e573, 0xc952b79c,
+    0xab8f3176, 0x4a396399, 0x2e334d78, 0xcf851f97, 0xad58997d,
+    0x4ceecb92, 0x244ab464, 0xc5fce68b, 0xa7216061, 0x4697328e,
+    0x229d1c6f, 0xc32b4e80, 0xa1f6c86a, 0x40409a85, 0x60708dba,
+    0x81c6df55, 0xe31b59bf, 0x02ad0b50, 0x66a725b1, 0x8711775e,
+    0xe5ccf1b4, 0x047aa35b, 0x6cdedcad, 0x8d688e42, 0xefb508a8,
+    0x0e035a47, 0x6a0974a6, 0x8bbf2649, 0xe962a0a3, 0x08d4f24c,
+    0x782c2e94, 0x999a7c7b, 0xfb47fa91, 0x1af1a87e, 0x7efb869f,
+    0x9f4dd470, 0xfd90529a, 0x1c260075, 0x74827f83, 0x95342d6c,
+    0xf7e9ab86, 0x165ff969, 0x7255d788, 0x93e38567, 0xf13e038d,
+    0x10885162, 0x50c8cbe7, 0xb17e9908, 0xd3a31fe2, 0x32154d0d,
+    0x561f63ec, 0xb7a93103, 0xd574b7e9, 0x34c2e506, 0x5c669af0,
+    0xbdd0c81f, 0xdf0d4ef5, 0x3ebb1c1a, 0x5ab132fb, 0xbb076014,
+    0xd9dae6fe, 0x386cb411, 0x489468c9, 0xa9223a26, 0xcbffbccc,
+    0x2a49ee23, 0x4e43c0c2, 0xaff5922d, 0xcd2814c7, 0x2c9e4628,
+    0x443a39de, 0xa58c6b31, 0xc751eddb, 0x26e7bf34, 0x42ed91d5,
+    0xa35bc33a, 0xc18645d0, 0x2030173f, 0x81e66bae, 0x60503941,
+    0x028dbfab, 0xe33bed44, 0x8731c3a5, 0x6687914a, 0x045a17a0,
+    0xe5ec454f, 0x8d483ab9, 0x6cfe6856, 0x0e23eebc, 0xef95bc53,
+    0x8b9f92b2, 0x6a29c05d, 0x08f446b7, 0xe9421458, 0x99bac880,
+    0x780c9a6f, 0x1ad11c85, 0xfb674e6a, 0x9f6d608b, 0x7edb3264,
+    0x1c06b48e, 0xfdb0e661, 0x95149997, 0x74a2cb78, 0x167f4d92,
+    0xf7c91f7d, 0x93c3319c, 0x72756373, 0x10a8e599, 0xf11eb776,
+    0xb15e2df3, 0x50e87f1c, 0x3235f9f6, 0xd383ab19, 0xb78985f8,
+    0x563fd717, 0x34e251fd, 0xd5540312, 0xbdf07ce4, 0x5c462e0b,
+    0x3e9ba8e1, 0xdf2dfa0e, 0xbb27d4ef, 0x5a918600, 0x384c00ea,
+    0xd9fa5205, 0xa9028edd, 0x48b4dc32, 0x2a695ad8, 0xcbdf0837,
+    0xafd526d6, 0x4e637439, 0x2cbef2d3, 0xcd08a03c, 0xa5acdfca,
+    0x441a8d25, 0x26c70bcf, 0xc7715920, 0xa37b77c1, 0x42cd252e,
+    0x2010a3c4, 0xc1a6f12b, 0xe196e614, 0x0020b4fb, 0x62fd3211,
+    0x834b60fe, 0xe7414e1f, 0x06f71cf0, 0x642a9a1a, 0x859cc8f5,
+    0xed38b703, 0x0c8ee5ec, 0x6e536306, 0x8fe531e9, 0xebef1f08,
+    0x0a594de7, 0x6884cb0d, 0x893299e2, 0xf9ca453a, 0x187c17d5,
+    0x7aa1913f, 0x9b17c3d0, 0xff1ded31, 0x1eabbfde, 0x7c763934,
+    0x9dc06bdb, 0xf564142d, 0x14d246c2, 0x760fc028, 0x97b992c7,
+    0xf3b3bc26, 0x1205eec9, 0x70d86823, 0x916e3acc, 0xd12ea049,
+    0x3098f2a6, 0x5245744c, 0xb3f326a3, 0xd7f90842, 0x364f5aad,
+    0x5492dc47, 0xb5248ea8, 0xdd80f15e, 0x3c36a3b1, 0x5eeb255b,
+    0xbf5d77b4, 0xdb575955, 0x3ae10bba, 0x583c8d50, 0xb98adfbf,
+    0xc9720367, 0x28c45188, 0x4a19d762, 0xabaf858d, 0xcfa5ab6c,
+    0x2e13f983, 0x4cce7f69, 0xad782d86, 0xc5dc5270, 0x246a009f,
+    0x46b78675, 0xa701d49a, 0xc30bfa7b, 0x22bda894, 0x40602e7e,
+    0xa1d67c91},
+   {0x00000000, 0x5880e2d7, 0xf106b474, 0xa98656a3, 0xe20d68e9,
+    0xba8d8a3e, 0x130bdc9d, 0x4b8b3e4a, 0x851da109, 0xdd9d43de,
+    0x741b157d, 0x2c9bf7aa, 0x6710c9e0, 0x3f902b37, 0x96167d94,
+    0xce969f43, 0x0a3b4213, 0x52bba0c4, 0xfb3df667, 0xa3bd14b0,
+    0xe8362afa, 0xb0b6c82d, 0x19309e8e, 0x41b07c59, 0x8f26e31a,
+    0xd7a601cd, 0x7e20576e, 0x26a0b5b9, 0x6d2b8bf3, 0x35ab6924,
+    0x9c2d3f87, 0xc4addd50, 0x14768426, 0x4cf666f1, 0xe5703052,
+    0xbdf0d285, 0xf67beccf, 0xaefb0e18, 0x077d58bb, 0x5ffdba6c,
+    0x916b252f, 0xc9ebc7f8, 0x606d915b, 0x38ed738c, 0x73664dc6,
+    0x2be6af11, 0x8260f9b2, 0xdae01b65, 0x1e4dc635, 0x46cd24e2,
+    0xef4b7241, 0xb7cb9096, 0xfc40aedc, 0xa4c04c0b, 0x0d461aa8,
+    0x55c6f87f, 0x9b50673c, 0xc3d085eb, 0x6a56d348, 0x32d6319f,
+    0x795d0fd5, 0x21dded02, 0x885bbba1, 0xd0db5976, 0x28ec084d,
+    0x706cea9a, 0xd9eabc39, 0x816a5eee, 0xcae160a4, 0x92618273,
+    0x3be7d4d0, 0x63673607, 0xadf1a944, 0xf5714b93, 0x5cf71d30,
+    0x0477ffe7, 0x4ffcc1ad, 0x177c237a, 0xbefa75d9, 0xe67a970e,
+    0x22d74a5e, 0x7a57a889, 0xd3d1fe2a, 0x8b511cfd, 0xc0da22b7,
+    0x985ac060, 0x31dc96c3, 0x695c7414, 0xa7caeb57, 0xff4a0980,
+    0x56cc5f23, 0x0e4cbdf4, 0x45c783be, 0x1d476169, 0xb4c137ca,
+    0xec41d51d, 0x3c9a8c6b, 0x641a6ebc, 0xcd9c381f, 0x951cdac8,
+    0xde97e482, 0x86170655, 0x2f9150f6, 0x7711b221, 0xb9872d62,
+    0xe107cfb5, 0x48819916, 0x10017bc1, 0x5b8a458b, 0x030aa75c,
+    0xaa8cf1ff, 0xf20c1328, 0x36a1ce78, 0x6e212caf, 0xc7a77a0c,
+    0x9f2798db, 0xd4aca691, 0x8c2c4446, 0x25aa12e5, 0x7d2af032,
+    0xb3bc6f71, 0xeb3c8da6, 0x42badb05, 0x1a3a39d2, 0x51b10798,
+    0x0931e54f, 0xa0b7b3ec, 0xf837513b, 0x50d8119a, 0x0858f34d,
+    0xa1dea5ee, 0xf95e4739, 0xb2d57973, 0xea559ba4, 0x43d3cd07,
+    0x1b532fd0, 0xd5c5b093, 0x8d455244, 0x24c304e7, 0x7c43e630,
+    0x37c8d87a, 0x6f483aad, 0xc6ce6c0e, 0x9e4e8ed9, 0x5ae35389,
+    0x0263b15e, 0xabe5e7fd, 0xf365052a, 0xb8ee3b60, 0xe06ed9b7,
+    0x49e88f14, 0x11686dc3, 0xdffef280, 0x877e1057, 0x2ef846f4,
+    0x7678a423, 0x3df39a69, 0x657378be, 0xccf52e1d, 0x9475ccca,
+    0x44ae95bc, 0x1c2e776b, 0xb5a821c8, 0xed28c31f, 0xa6a3fd55,
+    0xfe231f82, 0x57a54921, 0x0f25abf6, 0xc1b334b5, 0x9933d662,
+    0x30b580c1, 0x68356216, 0x23be5c5c, 0x7b3ebe8b, 0xd2b8e828,
+    0x8a380aff, 0x4e95d7af, 0x16153578, 0xbf9363db, 0xe713810c,
+    0xac98bf46, 0xf4185d91, 0x5d9e0b32, 0x051ee9e5, 0xcb8876a6,
+    0x93089471, 0x3a8ec2d2, 0x620e2005, 0x29851e4f, 0x7105fc98,
+    0xd883aa3b, 0x800348ec, 0x783419d7, 0x20b4fb00, 0x8932ada3,
+    0xd1b24f74, 0x9a39713e, 0xc2b993e9, 0x6b3fc54a, 0x33bf279d,
+    0xfd29b8de, 0xa5a95a09, 0x0c2f0caa, 0x54afee7d, 0x1f24d037,
+    0x47a432e0, 0xee226443, 0xb6a28694, 0x720f5bc4, 0x2a8fb913,
+    0x8309efb0, 0xdb890d67, 0x9002332d, 0xc882d1fa, 0x61048759,
+    0x3984658e, 0xf712facd, 0xaf92181a, 0x06144eb9, 0x5e94ac6e,
+    0x151f9224, 0x4d9f70f3, 0xe4192650, 0xbc99c487, 0x6c429df1,
+    0x34c27f26, 0x9d442985, 0xc5c4cb52, 0x8e4ff518, 0xd6cf17cf,
+    0x7f49416c, 0x27c9a3bb, 0xe95f3cf8, 0xb1dfde2f, 0x1859888c,
+    0x40d96a5b, 0x0b525411, 0x53d2b6c6, 0xfa54e065, 0xa2d402b2,
+    0x6679dfe2, 0x3ef93d35, 0x977f6b96, 0xcfff8941, 0x8474b70b,
+    0xdcf455dc, 0x7572037f, 0x2df2e1a8, 0xe3647eeb, 0xbbe49c3c,
+    0x1262ca9f, 0x4ae22848, 0x01691602, 0x59e9f4d5, 0xf06fa276,
+    0xa8ef40a1},
+   {0x00000000, 0x463b6765, 0x8c76ceca, 0xca4da9af, 0x59ebed4e,
+    0x1fd08a2b, 0xd59d2384, 0x93a644e1, 0xb2d6db9d, 0xf4edbcf8,
+    0x3ea01557, 0x789b7232, 0xeb3d36d3, 0xad0651b6, 0x674bf819,
+    0x21709f7c, 0x25abc6e0, 0x6390a185, 0xa9dd082a, 0xefe66f4f,
+    0x7c402bae, 0x3a7b4ccb, 0xf036e564, 0xb60d8201, 0x977d1d7d,
+    0xd1467a18, 0x1b0bd3b7, 0x5d30b4d2, 0xce96f033, 0x88ad9756,
+    0x42e03ef9, 0x04db599c, 0x0b50fc1a, 0x4d6b9b7f, 0x872632d0,
+    0xc11d55b5, 0x52bb1154, 0x14807631, 0xdecddf9e, 0x98f6b8fb,
+    0xb9862787, 0xffbd40e2, 0x35f0e94d, 0x73cb8e28, 0xe06dcac9,
+    0xa656adac, 0x6c1b0403, 0x2a206366, 0x2efb3afa, 0x68c05d9f,
+    0xa28df430, 0xe4b69355, 0x7710d7b4, 0x312bb0d1, 0xfb66197e,
+    0xbd5d7e1b, 0x9c2de167, 0xda168602, 0x105b2fad, 0x566048c8,
+    0xc5c60c29, 0x83fd6b4c, 0x49b0c2e3, 0x0f8ba586, 0x16a0f835,
+    0x509b9f50, 0x9ad636ff, 0xdced519a, 0x4f4b157b, 0x0970721e,
+    0xc33ddbb1, 0x8506bcd4, 0xa47623a8, 0xe24d44cd, 0x2800ed62,
+    0x6e3b8a07, 0xfd9dcee6, 0xbba6a983, 0x71eb002c, 0x37d06749,
+    0x330b3ed5, 0x753059b0, 0xbf7df01f, 0xf946977a, 0x6ae0d39b,
+    0x2cdbb4fe, 0xe6961d51, 0xa0ad7a34, 0x81dde548, 0xc7e6822d,
+    0x0dab2b82, 0x4b904ce7, 0xd8360806, 0x9e0d6f63, 0x5440c6cc,
+    0x127ba1a9, 0x1df0042f, 0x5bcb634a, 0x9186cae5, 0xd7bdad80,
+    0x441be961, 0x02208e04, 0xc86d27ab, 0x8e5640ce, 0xaf26dfb2,
+    0xe91db8d7, 0x23501178, 0x656b761d, 0xf6cd32fc, 0xb0f65599,
+    0x7abbfc36, 0x3c809b53, 0x385bc2cf, 0x7e60a5aa, 0xb42d0c05,
+    0xf2166b60, 0x61b02f81, 0x278b48e4, 0xedc6e14b, 0xabfd862e,
+    0x8a8d1952, 0xccb67e37, 0x06fbd798, 0x40c0b0fd, 0xd366f41c,
+    0x955d9379, 0x5f103ad6, 0x192b5db3, 0x2c40f16b, 0x6a7b960e,
+    0xa0363fa1, 0xe60d58c4, 0x75ab1c25, 0x33907b40, 0xf9ddd2ef,
+    0xbfe6b58a, 0x9e962af6, 0xd8ad4d93, 0x12e0e43c, 0x54db8359,
+    0xc77dc7b8, 0x8146a0dd, 0x4b0b0972, 0x0d306e17, 0x09eb378b,
+    0x4fd050ee, 0x859df941, 0xc3a69e24, 0x5000dac5, 0x163bbda0,
+    0xdc76140f, 0x9a4d736a, 0xbb3dec16, 0xfd068b73, 0x374b22dc,
+    0x717045b9, 0xe2d60158, 0xa4ed663d, 0x6ea0cf92, 0x289ba8f7,
+    0x27100d71, 0x612b6a14, 0xab66c3bb, 0xed5da4de, 0x7efbe03f,
+    0x38c0875a, 0xf28d2ef5, 0xb4b64990, 0x95c6d6ec, 0xd3fdb189,
+    0x19b01826, 0x5f8b7f43, 0xcc2d3ba2, 0x8a165cc7, 0x405bf568,
+    0x0660920d, 0x02bbcb91, 0x4480acf4, 0x8ecd055b, 0xc8f6623e,
+    0x5b5026df, 0x1d6b41ba, 0xd726e815, 0x911d8f70, 0xb06d100c,
+    0xf6567769, 0x3c1bdec6, 0x7a20b9a3, 0xe986fd42, 0xafbd9a27,
+    0x65f03388, 0x23cb54ed, 0x3ae0095e, 0x7cdb6e3b, 0xb696c794,
+    0xf0ada0f1, 0x630be410, 0x25308375, 0xef7d2ada, 0xa9464dbf,
+    0x8836d2c3, 0xce0db5a6, 0x04401c09, 0x427b7b6c, 0xd1dd3f8d,
+    0x97e658e8, 0x5dabf147, 0x1b909622, 0x1f4bcfbe, 0x5970a8db,
+    0x933d0174, 0xd5066611, 0x46a022f0, 0x009b4595, 0xcad6ec3a,
+    0x8ced8b5f, 0xad9d1423, 0xeba67346, 0x21ebdae9, 0x67d0bd8c,
+    0xf476f96d, 0xb24d9e08, 0x780037a7, 0x3e3b50c2, 0x31b0f544,
+    0x778b9221, 0xbdc63b8e, 0xfbfd5ceb, 0x685b180a, 0x2e607f6f,
+    0xe42dd6c0, 0xa216b1a5, 0x83662ed9, 0xc55d49bc, 0x0f10e013,
+    0x492b8776, 0xda8dc397, 0x9cb6a4f2, 0x56fb0d5d, 0x10c06a38,
+    0x141b33a4, 0x522054c1, 0x986dfd6e, 0xde569a0b, 0x4df0deea,
+    0x0bcbb98f, 0xc1861020, 0x87bd7745, 0xa6cde839, 0xe0f68f5c,
+    0x2abb26f3, 0x6c804196, 0xff260577, 0xb91d6212, 0x7350cbbd,
+    0x356bacd8}};
+
+#endif
+
+#endif
+
+#if N == 6
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x3db1ecdc, 0x7b63d9b8, 0x46d23564, 0xf6c7b370,
+    0xcb765fac, 0x8da46ac8, 0xb0158614, 0x36fe60a1, 0x0b4f8c7d,
+    0x4d9db919, 0x702c55c5, 0xc039d3d1, 0xfd883f0d, 0xbb5a0a69,
+    0x86ebe6b5, 0x6dfcc142, 0x504d2d9e, 0x169f18fa, 0x2b2ef426,
+    0x9b3b7232, 0xa68a9eee, 0xe058ab8a, 0xdde94756, 0x5b02a1e3,
+    0x66b34d3f, 0x2061785b, 0x1dd09487, 0xadc51293, 0x9074fe4f,
+    0xd6a6cb2b, 0xeb1727f7, 0xdbf98284, 0xe6486e58, 0xa09a5b3c,
+    0x9d2bb7e0, 0x2d3e31f4, 0x108fdd28, 0x565de84c, 0x6bec0490,
+    0xed07e225, 0xd0b60ef9, 0x96643b9d, 0xabd5d741, 0x1bc05155,
+    0x2671bd89, 0x60a388ed, 0x5d126431, 0xb60543c6, 0x8bb4af1a,
+    0xcd669a7e, 0xf0d776a2, 0x40c2f0b6, 0x7d731c6a, 0x3ba1290e,
+    0x0610c5d2, 0x80fb2367, 0xbd4acfbb, 0xfb98fadf, 0xc6291603,
+    0x763c9017, 0x4b8d7ccb, 0x0d5f49af, 0x30eea573, 0x6c820349,
+    0x5133ef95, 0x17e1daf1, 0x2a50362d, 0x9a45b039, 0xa7f45ce5,
+    0xe1266981, 0xdc97855d, 0x5a7c63e8, 0x67cd8f34, 0x211fba50,
+    0x1cae568c, 0xacbbd098, 0x910a3c44, 0xd7d80920, 0xea69e5fc,
+    0x017ec20b, 0x3ccf2ed7, 0x7a1d1bb3, 0x47acf76f, 0xf7b9717b,
+    0xca089da7, 0x8cdaa8c3, 0xb16b441f, 0x3780a2aa, 0x0a314e76,
+    0x4ce37b12, 0x715297ce, 0xc14711da, 0xfcf6fd06, 0xba24c862,
+    0x879524be, 0xb77b81cd, 0x8aca6d11, 0xcc185875, 0xf1a9b4a9,
+    0x41bc32bd, 0x7c0dde61, 0x3adfeb05, 0x076e07d9, 0x8185e16c,
+    0xbc340db0, 0xfae638d4, 0xc757d408, 0x7742521c, 0x4af3bec0,
+    0x0c218ba4, 0x31906778, 0xda87408f, 0xe736ac53, 0xa1e49937,
+    0x9c5575eb, 0x2c40f3ff, 0x11f11f23, 0x57232a47, 0x6a92c69b,
+    0xec79202e, 0xd1c8ccf2, 0x971af996, 0xaaab154a, 0x1abe935e,
+    0x270f7f82, 0x61dd4ae6, 0x5c6ca63a, 0xd9040692, 0xe4b5ea4e,
+    0xa267df2a, 0x9fd633f6, 0x2fc3b5e2, 0x1272593e, 0x54a06c5a,
+    0x69118086, 0xeffa6633, 0xd24b8aef, 0x9499bf8b, 0xa9285357,
+    0x193dd543, 0x248c399f, 0x625e0cfb, 0x5fefe027, 0xb4f8c7d0,
+    0x89492b0c, 0xcf9b1e68, 0xf22af2b4, 0x423f74a0, 0x7f8e987c,
+    0x395cad18, 0x04ed41c4, 0x8206a771, 0xbfb74bad, 0xf9657ec9,
+    0xc4d49215, 0x74c11401, 0x4970f8dd, 0x0fa2cdb9, 0x32132165,
+    0x02fd8416, 0x3f4c68ca, 0x799e5dae, 0x442fb172, 0xf43a3766,
+    0xc98bdbba, 0x8f59eede, 0xb2e80202, 0x3403e4b7, 0x09b2086b,
+    0x4f603d0f, 0x72d1d1d3, 0xc2c457c7, 0xff75bb1b, 0xb9a78e7f,
+    0x841662a3, 0x6f014554, 0x52b0a988, 0x14629cec, 0x29d37030,
+    0x99c6f624, 0xa4771af8, 0xe2a52f9c, 0xdf14c340, 0x59ff25f5,
+    0x644ec929, 0x229cfc4d, 0x1f2d1091, 0xaf389685, 0x92897a59,
+    0xd45b4f3d, 0xe9eaa3e1, 0xb58605db, 0x8837e907, 0xcee5dc63,
+    0xf35430bf, 0x4341b6ab, 0x7ef05a77, 0x38226f13, 0x059383cf,
+    0x8378657a, 0xbec989a6, 0xf81bbcc2, 0xc5aa501e, 0x75bfd60a,
+    0x480e3ad6, 0x0edc0fb2, 0x336de36e, 0xd87ac499, 0xe5cb2845,
+    0xa3191d21, 0x9ea8f1fd, 0x2ebd77e9, 0x130c9b35, 0x55deae51,
+    0x686f428d, 0xee84a438, 0xd33548e4, 0x95e77d80, 0xa856915c,
+    0x18431748, 0x25f2fb94, 0x6320cef0, 0x5e91222c, 0x6e7f875f,
+    0x53ce6b83, 0x151c5ee7, 0x28adb23b, 0x98b8342f, 0xa509d8f3,
+    0xe3dbed97, 0xde6a014b, 0x5881e7fe, 0x65300b22, 0x23e23e46,
+    0x1e53d29a, 0xae46548e, 0x93f7b852, 0xd5258d36, 0xe89461ea,
+    0x0383461d, 0x3e32aac1, 0x78e09fa5, 0x45517379, 0xf544f56d,
+    0xc8f519b1, 0x8e272cd5, 0xb396c009, 0x357d26bc, 0x08ccca60,
+    0x4e1eff04, 0x73af13d8, 0xc3ba95cc, 0xfe0b7910, 0xb8d94c74,
+    0x8568a0a8},
+   {0x00000000, 0x69790b65, 0xd2f216ca, 0xbb8b1daf, 0x7e952bd5,
+    0x17ec20b0, 0xac673d1f, 0xc51e367a, 0xfd2a57aa, 0x94535ccf,
+    0x2fd84160, 0x46a14a05, 0x83bf7c7f, 0xeac6771a, 0x514d6ab5,
+    0x383461d0, 0x2125a915, 0x485ca270, 0xf3d7bfdf, 0x9aaeb4ba,
+    0x5fb082c0, 0x36c989a5, 0x8d42940a, 0xe43b9f6f, 0xdc0ffebf,
+    0xb576f5da, 0x0efde875, 0x6784e310, 0xa29ad56a, 0xcbe3de0f,
+    0x7068c3a0, 0x1911c8c5, 0x424b522a, 0x2b32594f, 0x90b944e0,
+    0xf9c04f85, 0x3cde79ff, 0x55a7729a, 0xee2c6f35, 0x87556450,
+    0xbf610580, 0xd6180ee5, 0x6d93134a, 0x04ea182f, 0xc1f42e55,
+    0xa88d2530, 0x1306389f, 0x7a7f33fa, 0x636efb3f, 0x0a17f05a,
+    0xb19cedf5, 0xd8e5e690, 0x1dfbd0ea, 0x7482db8f, 0xcf09c620,
+    0xa670cd45, 0x9e44ac95, 0xf73da7f0, 0x4cb6ba5f, 0x25cfb13a,
+    0xe0d18740, 0x89a88c25, 0x3223918a, 0x5b5a9aef, 0x8496a454,
+    0xedefaf31, 0x5664b29e, 0x3f1db9fb, 0xfa038f81, 0x937a84e4,
+    0x28f1994b, 0x4188922e, 0x79bcf3fe, 0x10c5f89b, 0xab4ee534,
+    0xc237ee51, 0x0729d82b, 0x6e50d34e, 0xd5dbcee1, 0xbca2c584,
+    0xa5b30d41, 0xccca0624, 0x77411b8b, 0x1e3810ee, 0xdb262694,
+    0xb25f2df1, 0x09d4305e, 0x60ad3b3b, 0x58995aeb, 0x31e0518e,
+    0x8a6b4c21, 0xe3124744, 0x260c713e, 0x4f757a5b, 0xf4fe67f4,
+    0x9d876c91, 0xc6ddf67e, 0xafa4fd1b, 0x142fe0b4, 0x7d56ebd1,
+    0xb848ddab, 0xd131d6ce, 0x6abacb61, 0x03c3c004, 0x3bf7a1d4,
+    0x528eaab1, 0xe905b71e, 0x807cbc7b, 0x45628a01, 0x2c1b8164,
+    0x97909ccb, 0xfee997ae, 0xe7f85f6b, 0x8e81540e, 0x350a49a1,
+    0x5c7342c4, 0x996d74be, 0xf0147fdb, 0x4b9f6274, 0x22e66911,
+    0x1ad208c1, 0x73ab03a4, 0xc8201e0b, 0xa159156e, 0x64472314,
+    0x0d3e2871, 0xb6b535de, 0xdfcc3ebb, 0xd25c4ee9, 0xbb25458c,
+    0x00ae5823, 0x69d75346, 0xacc9653c, 0xc5b06e59, 0x7e3b73f6,
+    0x17427893, 0x2f761943, 0x460f1226, 0xfd840f89, 0x94fd04ec,
+    0x51e33296, 0x389a39f3, 0x8311245c, 0xea682f39, 0xf379e7fc,
+    0x9a00ec99, 0x218bf136, 0x48f2fa53, 0x8deccc29, 0xe495c74c,
+    0x5f1edae3, 0x3667d186, 0x0e53b056, 0x672abb33, 0xdca1a69c,
+    0xb5d8adf9, 0x70c69b83, 0x19bf90e6, 0xa2348d49, 0xcb4d862c,
+    0x90171cc3, 0xf96e17a6, 0x42e50a09, 0x2b9c016c, 0xee823716,
+    0x87fb3c73, 0x3c7021dc, 0x55092ab9, 0x6d3d4b69, 0x0444400c,
+    0xbfcf5da3, 0xd6b656c6, 0x13a860bc, 0x7ad16bd9, 0xc15a7676,
+    0xa8237d13, 0xb132b5d6, 0xd84bbeb3, 0x63c0a31c, 0x0ab9a879,
+    0xcfa79e03, 0xa6de9566, 0x1d5588c9, 0x742c83ac, 0x4c18e27c,
+    0x2561e919, 0x9eeaf4b6, 0xf793ffd3, 0x328dc9a9, 0x5bf4c2cc,
+    0xe07fdf63, 0x8906d406, 0x56caeabd, 0x3fb3e1d8, 0x8438fc77,
+    0xed41f712, 0x285fc168, 0x4126ca0d, 0xfaadd7a2, 0x93d4dcc7,
+    0xabe0bd17, 0xc299b672, 0x7912abdd, 0x106ba0b8, 0xd57596c2,
+    0xbc0c9da7, 0x07878008, 0x6efe8b6d, 0x77ef43a8, 0x1e9648cd,
+    0xa51d5562, 0xcc645e07, 0x097a687d, 0x60036318, 0xdb887eb7,
+    0xb2f175d2, 0x8ac51402, 0xe3bc1f67, 0x583702c8, 0x314e09ad,
+    0xf4503fd7, 0x9d2934b2, 0x26a2291d, 0x4fdb2278, 0x1481b897,
+    0x7df8b3f2, 0xc673ae5d, 0xaf0aa538, 0x6a149342, 0x036d9827,
+    0xb8e68588, 0xd19f8eed, 0xe9abef3d, 0x80d2e458, 0x3b59f9f7,
+    0x5220f292, 0x973ec4e8, 0xfe47cf8d, 0x45ccd222, 0x2cb5d947,
+    0x35a41182, 0x5cdd1ae7, 0xe7560748, 0x8e2f0c2d, 0x4b313a57,
+    0x22483132, 0x99c32c9d, 0xf0ba27f8, 0xc88e4628, 0xa1f74d4d,
+    0x1a7c50e2, 0x73055b87, 0xb61b6dfd, 0xdf626698, 0x64e97b37,
+    0x0d907052},
+   {0x00000000, 0x7fc99b93, 0xff933726, 0x805aacb5, 0x2457680d,
+    0x5b9ef39e, 0xdbc45f2b, 0xa40dc4b8, 0x48aed01a, 0x37674b89,
+    0xb73de73c, 0xc8f47caf, 0x6cf9b817, 0x13302384, 0x936a8f31,
+    0xeca314a2, 0x915da034, 0xee943ba7, 0x6ece9712, 0x11070c81,
+    0xb50ac839, 0xcac353aa, 0x4a99ff1f, 0x3550648c, 0xd9f3702e,
+    0xa63aebbd, 0x26604708, 0x59a9dc9b, 0xfda41823, 0x826d83b0,
+    0x02372f05, 0x7dfeb496, 0xf9ca4629, 0x8603ddba, 0x0659710f,
+    0x7990ea9c, 0xdd9d2e24, 0xa254b5b7, 0x220e1902, 0x5dc78291,
+    0xb1649633, 0xcead0da0, 0x4ef7a115, 0x313e3a86, 0x9533fe3e,
+    0xeafa65ad, 0x6aa0c918, 0x1569528b, 0x6897e61d, 0x175e7d8e,
+    0x9704d13b, 0xe8cd4aa8, 0x4cc08e10, 0x33091583, 0xb353b936,
+    0xcc9a22a5, 0x20393607, 0x5ff0ad94, 0xdfaa0121, 0xa0639ab2,
+    0x046e5e0a, 0x7ba7c599, 0xfbfd692c, 0x8434f2bf, 0x28e58a13,
+    0x572c1180, 0xd776bd35, 0xa8bf26a6, 0x0cb2e21e, 0x737b798d,
+    0xf321d538, 0x8ce84eab, 0x604b5a09, 0x1f82c19a, 0x9fd86d2f,
+    0xe011f6bc, 0x441c3204, 0x3bd5a997, 0xbb8f0522, 0xc4469eb1,
+    0xb9b82a27, 0xc671b1b4, 0x462b1d01, 0x39e28692, 0x9def422a,
+    0xe226d9b9, 0x627c750c, 0x1db5ee9f, 0xf116fa3d, 0x8edf61ae,
+    0x0e85cd1b, 0x714c5688, 0xd5419230, 0xaa8809a3, 0x2ad2a516,
+    0x551b3e85, 0xd12fcc3a, 0xaee657a9, 0x2ebcfb1c, 0x5175608f,
+    0xf578a437, 0x8ab13fa4, 0x0aeb9311, 0x75220882, 0x99811c20,
+    0xe64887b3, 0x66122b06, 0x19dbb095, 0xbdd6742d, 0xc21fefbe,
+    0x4245430b, 0x3d8cd898, 0x40726c0e, 0x3fbbf79d, 0xbfe15b28,
+    0xc028c0bb, 0x64250403, 0x1bec9f90, 0x9bb63325, 0xe47fa8b6,
+    0x08dcbc14, 0x77152787, 0xf74f8b32, 0x888610a1, 0x2c8bd419,
+    0x53424f8a, 0xd318e33f, 0xacd178ac, 0x51cb1426, 0x2e028fb5,
+    0xae582300, 0xd191b893, 0x759c7c2b, 0x0a55e7b8, 0x8a0f4b0d,
+    0xf5c6d09e, 0x1965c43c, 0x66ac5faf, 0xe6f6f31a, 0x993f6889,
+    0x3d32ac31, 0x42fb37a2, 0xc2a19b17, 0xbd680084, 0xc096b412,
+    0xbf5f2f81, 0x3f058334, 0x40cc18a7, 0xe4c1dc1f, 0x9b08478c,
+    0x1b52eb39, 0x649b70aa, 0x88386408, 0xf7f1ff9b, 0x77ab532e,
+    0x0862c8bd, 0xac6f0c05, 0xd3a69796, 0x53fc3b23, 0x2c35a0b0,
+    0xa801520f, 0xd7c8c99c, 0x57926529, 0x285bfeba, 0x8c563a02,
+    0xf39fa191, 0x73c50d24, 0x0c0c96b7, 0xe0af8215, 0x9f661986,
+    0x1f3cb533, 0x60f52ea0, 0xc4f8ea18, 0xbb31718b, 0x3b6bdd3e,
+    0x44a246ad, 0x395cf23b, 0x469569a8, 0xc6cfc51d, 0xb9065e8e,
+    0x1d0b9a36, 0x62c201a5, 0xe298ad10, 0x9d513683, 0x71f22221,
+    0x0e3bb9b2, 0x8e611507, 0xf1a88e94, 0x55a54a2c, 0x2a6cd1bf,
+    0xaa367d0a, 0xd5ffe699, 0x792e9e35, 0x06e705a6, 0x86bda913,
+    0xf9743280, 0x5d79f638, 0x22b06dab, 0xa2eac11e, 0xdd235a8d,
+    0x31804e2f, 0x4e49d5bc, 0xce137909, 0xb1dae29a, 0x15d72622,
+    0x6a1ebdb1, 0xea441104, 0x958d8a97, 0xe8733e01, 0x97baa592,
+    0x17e00927, 0x682992b4, 0xcc24560c, 0xb3edcd9f, 0x33b7612a,
+    0x4c7efab9, 0xa0ddee1b, 0xdf147588, 0x5f4ed93d, 0x208742ae,
+    0x848a8616, 0xfb431d85, 0x7b19b130, 0x04d02aa3, 0x80e4d81c,
+    0xff2d438f, 0x7f77ef3a, 0x00be74a9, 0xa4b3b011, 0xdb7a2b82,
+    0x5b208737, 0x24e91ca4, 0xc84a0806, 0xb7839395, 0x37d93f20,
+    0x4810a4b3, 0xec1d600b, 0x93d4fb98, 0x138e572d, 0x6c47ccbe,
+    0x11b97828, 0x6e70e3bb, 0xee2a4f0e, 0x91e3d49d, 0x35ee1025,
+    0x4a278bb6, 0xca7d2703, 0xb5b4bc90, 0x5917a832, 0x26de33a1,
+    0xa6849f14, 0xd94d0487, 0x7d40c03f, 0x02895bac, 0x82d3f719,
+    0xfd1a6c8a},
+   {0x00000000, 0xa396284c, 0x9c5d56d9, 0x3fcb7e95, 0xe3cbabf3,
+    0x405d83bf, 0x7f96fd2a, 0xdc00d566, 0x1ce651a7, 0xbf7079eb,
+    0x80bb077e, 0x232d2f32, 0xff2dfa54, 0x5cbbd218, 0x6370ac8d,
+    0xc0e684c1, 0x39cca34e, 0x9a5a8b02, 0xa591f597, 0x0607dddb,
+    0xda0708bd, 0x799120f1, 0x465a5e64, 0xe5cc7628, 0x252af2e9,
+    0x86bcdaa5, 0xb977a430, 0x1ae18c7c, 0xc6e1591a, 0x65777156,
+    0x5abc0fc3, 0xf92a278f, 0x7399469c, 0xd00f6ed0, 0xefc41045,
+    0x4c523809, 0x9052ed6f, 0x33c4c523, 0x0c0fbbb6, 0xaf9993fa,
+    0x6f7f173b, 0xcce93f77, 0xf32241e2, 0x50b469ae, 0x8cb4bcc8,
+    0x2f229484, 0x10e9ea11, 0xb37fc25d, 0x4a55e5d2, 0xe9c3cd9e,
+    0xd608b30b, 0x759e9b47, 0xa99e4e21, 0x0a08666d, 0x35c318f8,
+    0x965530b4, 0x56b3b475, 0xf5259c39, 0xcaeee2ac, 0x6978cae0,
+    0xb5781f86, 0x16ee37ca, 0x2925495f, 0x8ab36113, 0xe7328d38,
+    0x44a4a574, 0x7b6fdbe1, 0xd8f9f3ad, 0x04f926cb, 0xa76f0e87,
+    0x98a47012, 0x3b32585e, 0xfbd4dc9f, 0x5842f4d3, 0x67898a46,
+    0xc41fa20a, 0x181f776c, 0xbb895f20, 0x844221b5, 0x27d409f9,
+    0xdefe2e76, 0x7d68063a, 0x42a378af, 0xe13550e3, 0x3d358585,
+    0x9ea3adc9, 0xa168d35c, 0x02fefb10, 0xc2187fd1, 0x618e579d,
+    0x5e452908, 0xfdd30144, 0x21d3d422, 0x8245fc6e, 0xbd8e82fb,
+    0x1e18aab7, 0x94abcba4, 0x373de3e8, 0x08f69d7d, 0xab60b531,
+    0x77606057, 0xd4f6481b, 0xeb3d368e, 0x48ab1ec2, 0x884d9a03,
+    0x2bdbb24f, 0x1410ccda, 0xb786e496, 0x6b8631f0, 0xc81019bc,
+    0xf7db6729, 0x544d4f65, 0xad6768ea, 0x0ef140a6, 0x313a3e33,
+    0x92ac167f, 0x4eacc319, 0xed3aeb55, 0xd2f195c0, 0x7167bd8c,
+    0xb181394d, 0x12171101, 0x2ddc6f94, 0x8e4a47d8, 0x524a92be,
+    0xf1dcbaf2, 0xce17c467, 0x6d81ec2b, 0x15141c31, 0xb682347d,
+    0x89494ae8, 0x2adf62a4, 0xf6dfb7c2, 0x55499f8e, 0x6a82e11b,
+    0xc914c957, 0x09f24d96, 0xaa6465da, 0x95af1b4f, 0x36393303,
+    0xea39e665, 0x49afce29, 0x7664b0bc, 0xd5f298f0, 0x2cd8bf7f,
+    0x8f4e9733, 0xb085e9a6, 0x1313c1ea, 0xcf13148c, 0x6c853cc0,
+    0x534e4255, 0xf0d86a19, 0x303eeed8, 0x93a8c694, 0xac63b801,
+    0x0ff5904d, 0xd3f5452b, 0x70636d67, 0x4fa813f2, 0xec3e3bbe,
+    0x668d5aad, 0xc51b72e1, 0xfad00c74, 0x59462438, 0x8546f15e,
+    0x26d0d912, 0x191ba787, 0xba8d8fcb, 0x7a6b0b0a, 0xd9fd2346,
+    0xe6365dd3, 0x45a0759f, 0x99a0a0f9, 0x3a3688b5, 0x05fdf620,
+    0xa66bde6c, 0x5f41f9e3, 0xfcd7d1af, 0xc31caf3a, 0x608a8776,
+    0xbc8a5210, 0x1f1c7a5c, 0x20d704c9, 0x83412c85, 0x43a7a844,
+    0xe0318008, 0xdffafe9d, 0x7c6cd6d1, 0xa06c03b7, 0x03fa2bfb,
+    0x3c31556e, 0x9fa77d22, 0xf2269109, 0x51b0b945, 0x6e7bc7d0,
+    0xcdedef9c, 0x11ed3afa, 0xb27b12b6, 0x8db06c23, 0x2e26446f,
+    0xeec0c0ae, 0x4d56e8e2, 0x729d9677, 0xd10bbe3b, 0x0d0b6b5d,
+    0xae9d4311, 0x91563d84, 0x32c015c8, 0xcbea3247, 0x687c1a0b,
+    0x57b7649e, 0xf4214cd2, 0x282199b4, 0x8bb7b1f8, 0xb47ccf6d,
+    0x17eae721, 0xd70c63e0, 0x749a4bac, 0x4b513539, 0xe8c71d75,
+    0x34c7c813, 0x9751e05f, 0xa89a9eca, 0x0b0cb686, 0x81bfd795,
+    0x2229ffd9, 0x1de2814c, 0xbe74a900, 0x62747c66, 0xc1e2542a,
+    0xfe292abf, 0x5dbf02f3, 0x9d598632, 0x3ecfae7e, 0x0104d0eb,
+    0xa292f8a7, 0x7e922dc1, 0xdd04058d, 0xe2cf7b18, 0x41595354,
+    0xb87374db, 0x1be55c97, 0x242e2202, 0x87b80a4e, 0x5bb8df28,
+    0xf82ef764, 0xc7e589f1, 0x6473a1bd, 0xa495257c, 0x07030d30,
+    0x38c873a5, 0x9b5e5be9, 0x475e8e8f, 0xe4c8a6c3, 0xdb03d856,
+    0x7895f01a},
+   {0x00000000, 0x2a283862, 0x545070c4, 0x7e7848a6, 0xa8a0e188,
+    0x8288d9ea, 0xfcf0914c, 0xd6d8a92e, 0x8a30c551, 0xa018fd33,
+    0xde60b595, 0xf4488df7, 0x229024d9, 0x08b81cbb, 0x76c0541d,
+    0x5ce86c7f, 0xcf108ce3, 0xe538b481, 0x9b40fc27, 0xb168c445,
+    0x67b06d6b, 0x4d985509, 0x33e01daf, 0x19c825cd, 0x452049b2,
+    0x6f0871d0, 0x11703976, 0x3b580114, 0xed80a83a, 0xc7a89058,
+    0xb9d0d8fe, 0x93f8e09c, 0x45501f87, 0x6f7827e5, 0x11006f43,
+    0x3b285721, 0xedf0fe0f, 0xc7d8c66d, 0xb9a08ecb, 0x9388b6a9,
+    0xcf60dad6, 0xe548e2b4, 0x9b30aa12, 0xb1189270, 0x67c03b5e,
+    0x4de8033c, 0x33904b9a, 0x19b873f8, 0x8a409364, 0xa068ab06,
+    0xde10e3a0, 0xf438dbc2, 0x22e072ec, 0x08c84a8e, 0x76b00228,
+    0x5c983a4a, 0x00705635, 0x2a586e57, 0x542026f1, 0x7e081e93,
+    0xa8d0b7bd, 0x82f88fdf, 0xfc80c779, 0xd6a8ff1b, 0x8aa03f0e,
+    0xa088076c, 0xdef04fca, 0xf4d877a8, 0x2200de86, 0x0828e6e4,
+    0x7650ae42, 0x5c789620, 0x0090fa5f, 0x2ab8c23d, 0x54c08a9b,
+    0x7ee8b2f9, 0xa8301bd7, 0x821823b5, 0xfc606b13, 0xd6485371,
+    0x45b0b3ed, 0x6f988b8f, 0x11e0c329, 0x3bc8fb4b, 0xed105265,
+    0xc7386a07, 0xb94022a1, 0x93681ac3, 0xcf8076bc, 0xe5a84ede,
+    0x9bd00678, 0xb1f83e1a, 0x67209734, 0x4d08af56, 0x3370e7f0,
+    0x1958df92, 0xcff02089, 0xe5d818eb, 0x9ba0504d, 0xb188682f,
+    0x6750c101, 0x4d78f963, 0x3300b1c5, 0x192889a7, 0x45c0e5d8,
+    0x6fe8ddba, 0x1190951c, 0x3bb8ad7e, 0xed600450, 0xc7483c32,
+    0xb9307494, 0x93184cf6, 0x00e0ac6a, 0x2ac89408, 0x54b0dcae,
+    0x7e98e4cc, 0xa8404de2, 0x82687580, 0xfc103d26, 0xd6380544,
+    0x8ad0693b, 0xa0f85159, 0xde8019ff, 0xf4a8219d, 0x227088b3,
+    0x0858b0d1, 0x7620f877, 0x5c08c015, 0xce31785d, 0xe419403f,
+    0x9a610899, 0xb04930fb, 0x669199d5, 0x4cb9a1b7, 0x32c1e911,
+    0x18e9d173, 0x4401bd0c, 0x6e29856e, 0x1051cdc8, 0x3a79f5aa,
+    0xeca15c84, 0xc68964e6, 0xb8f12c40, 0x92d91422, 0x0121f4be,
+    0x2b09ccdc, 0x5571847a, 0x7f59bc18, 0xa9811536, 0x83a92d54,
+    0xfdd165f2, 0xd7f95d90, 0x8b1131ef, 0xa139098d, 0xdf41412b,
+    0xf5697949, 0x23b1d067, 0x0999e805, 0x77e1a0a3, 0x5dc998c1,
+    0x8b6167da, 0xa1495fb8, 0xdf31171e, 0xf5192f7c, 0x23c18652,
+    0x09e9be30, 0x7791f696, 0x5db9cef4, 0x0151a28b, 0x2b799ae9,
+    0x5501d24f, 0x7f29ea2d, 0xa9f14303, 0x83d97b61, 0xfda133c7,
+    0xd7890ba5, 0x4471eb39, 0x6e59d35b, 0x10219bfd, 0x3a09a39f,
+    0xecd10ab1, 0xc6f932d3, 0xb8817a75, 0x92a94217, 0xce412e68,
+    0xe469160a, 0x9a115eac, 0xb03966ce, 0x66e1cfe0, 0x4cc9f782,
+    0x32b1bf24, 0x18998746, 0x44914753, 0x6eb97f31, 0x10c13797,
+    0x3ae90ff5, 0xec31a6db, 0xc6199eb9, 0xb861d61f, 0x9249ee7d,
+    0xcea18202, 0xe489ba60, 0x9af1f2c6, 0xb0d9caa4, 0x6601638a,
+    0x4c295be8, 0x3251134e, 0x18792b2c, 0x8b81cbb0, 0xa1a9f3d2,
+    0xdfd1bb74, 0xf5f98316, 0x23212a38, 0x0909125a, 0x77715afc,
+    0x5d59629e, 0x01b10ee1, 0x2b993683, 0x55e17e25, 0x7fc94647,
+    0xa911ef69, 0x8339d70b, 0xfd419fad, 0xd769a7cf, 0x01c158d4,
+    0x2be960b6, 0x55912810, 0x7fb91072, 0xa961b95c, 0x8349813e,
+    0xfd31c998, 0xd719f1fa, 0x8bf19d85, 0xa1d9a5e7, 0xdfa1ed41,
+    0xf589d523, 0x23517c0d, 0x0979446f, 0x77010cc9, 0x5d2934ab,
+    0xced1d437, 0xe4f9ec55, 0x9a81a4f3, 0xb0a99c91, 0x667135bf,
+    0x4c590ddd, 0x3221457b, 0x18097d19, 0x44e11166, 0x6ec92904,
+    0x10b161a2, 0x3a9959c0, 0xec41f0ee, 0xc669c88c, 0xb811802a,
+    0x9239b848},
+   {0x00000000, 0x4713f6fb, 0x8e27edf6, 0xc9341b0d, 0xc73eddad,
+    0x802d2b56, 0x4919305b, 0x0e0ac6a0, 0x550cbd1b, 0x121f4be0,
+    0xdb2b50ed, 0x9c38a616, 0x923260b6, 0xd521964d, 0x1c158d40,
+    0x5b067bbb, 0xaa197a36, 0xed0a8ccd, 0x243e97c0, 0x632d613b,
+    0x6d27a79b, 0x2a345160, 0xe3004a6d, 0xa413bc96, 0xff15c72d,
+    0xb80631d6, 0x71322adb, 0x3621dc20, 0x382b1a80, 0x7f38ec7b,
+    0xb60cf776, 0xf11f018d, 0x8f43f22d, 0xc85004d6, 0x01641fdb,
+    0x4677e920, 0x487d2f80, 0x0f6ed97b, 0xc65ac276, 0x8149348d,
+    0xda4f4f36, 0x9d5cb9cd, 0x5468a2c0, 0x137b543b, 0x1d71929b,
+    0x5a626460, 0x93567f6d, 0xd4458996, 0x255a881b, 0x62497ee0,
+    0xab7d65ed, 0xec6e9316, 0xe26455b6, 0xa577a34d, 0x6c43b840,
+    0x2b504ebb, 0x70563500, 0x3745c3fb, 0xfe71d8f6, 0xb9622e0d,
+    0xb768e8ad, 0xf07b1e56, 0x394f055b, 0x7e5cf3a0, 0xc5f6e21b,
+    0x82e514e0, 0x4bd10fed, 0x0cc2f916, 0x02c83fb6, 0x45dbc94d,
+    0x8cefd240, 0xcbfc24bb, 0x90fa5f00, 0xd7e9a9fb, 0x1eddb2f6,
+    0x59ce440d, 0x57c482ad, 0x10d77456, 0xd9e36f5b, 0x9ef099a0,
+    0x6fef982d, 0x28fc6ed6, 0xe1c875db, 0xa6db8320, 0xa8d14580,
+    0xefc2b37b, 0x26f6a876, 0x61e55e8d, 0x3ae32536, 0x7df0d3cd,
+    0xb4c4c8c0, 0xf3d73e3b, 0xfdddf89b, 0xbace0e60, 0x73fa156d,
+    0x34e9e396, 0x4ab51036, 0x0da6e6cd, 0xc492fdc0, 0x83810b3b,
+    0x8d8bcd9b, 0xca983b60, 0x03ac206d, 0x44bfd696, 0x1fb9ad2d,
+    0x58aa5bd6, 0x919e40db, 0xd68db620, 0xd8877080, 0x9f94867b,
+    0x56a09d76, 0x11b36b8d, 0xe0ac6a00, 0xa7bf9cfb, 0x6e8b87f6,
+    0x2998710d, 0x2792b7ad, 0x60814156, 0xa9b55a5b, 0xeea6aca0,
+    0xb5a0d71b, 0xf2b321e0, 0x3b873aed, 0x7c94cc16, 0x729e0ab6,
+    0x358dfc4d, 0xfcb9e740, 0xbbaa11bb, 0x509cc277, 0x178f348c,
+    0xdebb2f81, 0x99a8d97a, 0x97a21fda, 0xd0b1e921, 0x1985f22c,
+    0x5e9604d7, 0x05907f6c, 0x42838997, 0x8bb7929a, 0xcca46461,
+    0xc2aea2c1, 0x85bd543a, 0x4c894f37, 0x0b9ab9cc, 0xfa85b841,
+    0xbd964eba, 0x74a255b7, 0x33b1a34c, 0x3dbb65ec, 0x7aa89317,
+    0xb39c881a, 0xf48f7ee1, 0xaf89055a, 0xe89af3a1, 0x21aee8ac,
+    0x66bd1e57, 0x68b7d8f7, 0x2fa42e0c, 0xe6903501, 0xa183c3fa,
+    0xdfdf305a, 0x98ccc6a1, 0x51f8ddac, 0x16eb2b57, 0x18e1edf7,
+    0x5ff21b0c, 0x96c60001, 0xd1d5f6fa, 0x8ad38d41, 0xcdc07bba,
+    0x04f460b7, 0x43e7964c, 0x4ded50ec, 0x0afea617, 0xc3cabd1a,
+    0x84d94be1, 0x75c64a6c, 0x32d5bc97, 0xfbe1a79a, 0xbcf25161,
+    0xb2f897c1, 0xf5eb613a, 0x3cdf7a37, 0x7bcc8ccc, 0x20caf777,
+    0x67d9018c, 0xaeed1a81, 0xe9feec7a, 0xe7f42ada, 0xa0e7dc21,
+    0x69d3c72c, 0x2ec031d7, 0x956a206c, 0xd279d697, 0x1b4dcd9a,
+    0x5c5e3b61, 0x5254fdc1, 0x15470b3a, 0xdc731037, 0x9b60e6cc,
+    0xc0669d77, 0x87756b8c, 0x4e417081, 0x0952867a, 0x075840da,
+    0x404bb621, 0x897fad2c, 0xce6c5bd7, 0x3f735a5a, 0x7860aca1,
+    0xb154b7ac, 0xf6474157, 0xf84d87f7, 0xbf5e710c, 0x766a6a01,
+    0x31799cfa, 0x6a7fe741, 0x2d6c11ba, 0xe4580ab7, 0xa34bfc4c,
+    0xad413aec, 0xea52cc17, 0x2366d71a, 0x647521e1, 0x1a29d241,
+    0x5d3a24ba, 0x940e3fb7, 0xd31dc94c, 0xdd170fec, 0x9a04f917,
+    0x5330e21a, 0x142314e1, 0x4f256f5a, 0x083699a1, 0xc10282ac,
+    0x86117457, 0x881bb2f7, 0xcf08440c, 0x063c5f01, 0x412fa9fa,
+    0xb030a877, 0xf7235e8c, 0x3e174581, 0x7904b37a, 0x770e75da,
+    0x301d8321, 0xf929982c, 0xbe3a6ed7, 0xe53c156c, 0xa22fe397,
+    0x6b1bf89a, 0x2c080e61, 0x2202c8c1, 0x65113e3a, 0xac252537,
+    0xeb36d3cc},
+   {0x00000000, 0xa13984ee, 0x99020f9d, 0x383b8b73, 0xe975197b,
+    0x484c9d95, 0x707716e6, 0xd14e9208, 0x099b34b7, 0xa8a2b059,
+    0x90993b2a, 0x31a0bfc4, 0xe0ee2dcc, 0x41d7a922, 0x79ec2251,
+    0xd8d5a6bf, 0x1336696e, 0xb20fed80, 0x8a3466f3, 0x2b0de21d,
+    0xfa437015, 0x5b7af4fb, 0x63417f88, 0xc278fb66, 0x1aad5dd9,
+    0xbb94d937, 0x83af5244, 0x2296d6aa, 0xf3d844a2, 0x52e1c04c,
+    0x6ada4b3f, 0xcbe3cfd1, 0x266cd2dc, 0x87555632, 0xbf6edd41,
+    0x1e5759af, 0xcf19cba7, 0x6e204f49, 0x561bc43a, 0xf72240d4,
+    0x2ff7e66b, 0x8ece6285, 0xb6f5e9f6, 0x17cc6d18, 0xc682ff10,
+    0x67bb7bfe, 0x5f80f08d, 0xfeb97463, 0x355abbb2, 0x94633f5c,
+    0xac58b42f, 0x0d6130c1, 0xdc2fa2c9, 0x7d162627, 0x452dad54,
+    0xe41429ba, 0x3cc18f05, 0x9df80beb, 0xa5c38098, 0x04fa0476,
+    0xd5b4967e, 0x748d1290, 0x4cb699e3, 0xed8f1d0d, 0x4cd9a5b8,
+    0xede02156, 0xd5dbaa25, 0x74e22ecb, 0xa5acbcc3, 0x0495382d,
+    0x3caeb35e, 0x9d9737b0, 0x4542910f, 0xe47b15e1, 0xdc409e92,
+    0x7d791a7c, 0xac378874, 0x0d0e0c9a, 0x353587e9, 0x940c0307,
+    0x5fefccd6, 0xfed64838, 0xc6edc34b, 0x67d447a5, 0xb69ad5ad,
+    0x17a35143, 0x2f98da30, 0x8ea15ede, 0x5674f861, 0xf74d7c8f,
+    0xcf76f7fc, 0x6e4f7312, 0xbf01e11a, 0x1e3865f4, 0x2603ee87,
+    0x873a6a69, 0x6ab57764, 0xcb8cf38a, 0xf3b778f9, 0x528efc17,
+    0x83c06e1f, 0x22f9eaf1, 0x1ac26182, 0xbbfbe56c, 0x632e43d3,
+    0xc217c73d, 0xfa2c4c4e, 0x5b15c8a0, 0x8a5b5aa8, 0x2b62de46,
+    0x13595535, 0xb260d1db, 0x79831e0a, 0xd8ba9ae4, 0xe0811197,
+    0x41b89579, 0x90f60771, 0x31cf839f, 0x09f408ec, 0xa8cd8c02,
+    0x70182abd, 0xd121ae53, 0xe91a2520, 0x4823a1ce, 0x996d33c6,
+    0x3854b728, 0x006f3c5b, 0xa156b8b5, 0x99b34b70, 0x388acf9e,
+    0x00b144ed, 0xa188c003, 0x70c6520b, 0xd1ffd6e5, 0xe9c45d96,
+    0x48fdd978, 0x90287fc7, 0x3111fb29, 0x092a705a, 0xa813f4b4,
+    0x795d66bc, 0xd864e252, 0xe05f6921, 0x4166edcf, 0x8a85221e,
+    0x2bbca6f0, 0x13872d83, 0xb2bea96d, 0x63f03b65, 0xc2c9bf8b,
+    0xfaf234f8, 0x5bcbb016, 0x831e16a9, 0x22279247, 0x1a1c1934,
+    0xbb259dda, 0x6a6b0fd2, 0xcb528b3c, 0xf369004f, 0x525084a1,
+    0xbfdf99ac, 0x1ee61d42, 0x26dd9631, 0x87e412df, 0x56aa80d7,
+    0xf7930439, 0xcfa88f4a, 0x6e910ba4, 0xb644ad1b, 0x177d29f5,
+    0x2f46a286, 0x8e7f2668, 0x5f31b460, 0xfe08308e, 0xc633bbfd,
+    0x670a3f13, 0xace9f0c2, 0x0dd0742c, 0x35ebff5f, 0x94d27bb1,
+    0x459ce9b9, 0xe4a56d57, 0xdc9ee624, 0x7da762ca, 0xa572c475,
+    0x044b409b, 0x3c70cbe8, 0x9d494f06, 0x4c07dd0e, 0xed3e59e0,
+    0xd505d293, 0x743c567d, 0xd56aeec8, 0x74536a26, 0x4c68e155,
+    0xed5165bb, 0x3c1ff7b3, 0x9d26735d, 0xa51df82e, 0x04247cc0,
+    0xdcf1da7f, 0x7dc85e91, 0x45f3d5e2, 0xe4ca510c, 0x3584c304,
+    0x94bd47ea, 0xac86cc99, 0x0dbf4877, 0xc65c87a6, 0x67650348,
+    0x5f5e883b, 0xfe670cd5, 0x2f299edd, 0x8e101a33, 0xb62b9140,
+    0x171215ae, 0xcfc7b311, 0x6efe37ff, 0x56c5bc8c, 0xf7fc3862,
+    0x26b2aa6a, 0x878b2e84, 0xbfb0a5f7, 0x1e892119, 0xf3063c14,
+    0x523fb8fa, 0x6a043389, 0xcb3db767, 0x1a73256f, 0xbb4aa181,
+    0x83712af2, 0x2248ae1c, 0xfa9d08a3, 0x5ba48c4d, 0x639f073e,
+    0xc2a683d0, 0x13e811d8, 0xb2d19536, 0x8aea1e45, 0x2bd39aab,
+    0xe030557a, 0x4109d194, 0x79325ae7, 0xd80bde09, 0x09454c01,
+    0xa87cc8ef, 0x9047439c, 0x317ec772, 0xe9ab61cd, 0x4892e523,
+    0x70a96e50, 0xd190eabe, 0x00de78b6, 0xa1e7fc58, 0x99dc772b,
+    0x38e5f3c5},
+   {0x00000000, 0xe81790a1, 0x0b5e2703, 0xe349b7a2, 0x16bc4e06,
+    0xfeabdea7, 0x1de26905, 0xf5f5f9a4, 0x2d789c0c, 0xc56f0cad,
+    0x2626bb0f, 0xce312bae, 0x3bc4d20a, 0xd3d342ab, 0x309af509,
+    0xd88d65a8, 0x5af13818, 0xb2e6a8b9, 0x51af1f1b, 0xb9b88fba,
+    0x4c4d761e, 0xa45ae6bf, 0x4713511d, 0xaf04c1bc, 0x7789a414,
+    0x9f9e34b5, 0x7cd78317, 0x94c013b6, 0x6135ea12, 0x89227ab3,
+    0x6a6bcd11, 0x827c5db0, 0xb5e27030, 0x5df5e091, 0xbebc5733,
+    0x56abc792, 0xa35e3e36, 0x4b49ae97, 0xa8001935, 0x40178994,
+    0x989aec3c, 0x708d7c9d, 0x93c4cb3f, 0x7bd35b9e, 0x8e26a23a,
+    0x6631329b, 0x85788539, 0x6d6f1598, 0xef134828, 0x0704d889,
+    0xe44d6f2b, 0x0c5aff8a, 0xf9af062e, 0x11b8968f, 0xf2f1212d,
+    0x1ae6b18c, 0xc26bd424, 0x2a7c4485, 0xc935f327, 0x21226386,
+    0xd4d79a22, 0x3cc00a83, 0xdf89bd21, 0x379e2d80, 0xb0b5e621,
+    0x58a27680, 0xbbebc122, 0x53fc5183, 0xa609a827, 0x4e1e3886,
+    0xad578f24, 0x45401f85, 0x9dcd7a2d, 0x75daea8c, 0x96935d2e,
+    0x7e84cd8f, 0x8b71342b, 0x6366a48a, 0x802f1328, 0x68388389,
+    0xea44de39, 0x02534e98, 0xe11af93a, 0x090d699b, 0xfcf8903f,
+    0x14ef009e, 0xf7a6b73c, 0x1fb1279d, 0xc73c4235, 0x2f2bd294,
+    0xcc626536, 0x2475f597, 0xd1800c33, 0x39979c92, 0xdade2b30,
+    0x32c9bb91, 0x05579611, 0xed4006b0, 0x0e09b112, 0xe61e21b3,
+    0x13ebd817, 0xfbfc48b6, 0x18b5ff14, 0xf0a26fb5, 0x282f0a1d,
+    0xc0389abc, 0x23712d1e, 0xcb66bdbf, 0x3e93441b, 0xd684d4ba,
+    0x35cd6318, 0xdddaf3b9, 0x5fa6ae09, 0xb7b13ea8, 0x54f8890a,
+    0xbcef19ab, 0x491ae00f, 0xa10d70ae, 0x4244c70c, 0xaa5357ad,
+    0x72de3205, 0x9ac9a2a4, 0x79801506, 0x919785a7, 0x64627c03,
+    0x8c75eca2, 0x6f3c5b00, 0x872bcba1, 0xba1aca03, 0x520d5aa2,
+    0xb144ed00, 0x59537da1, 0xaca68405, 0x44b114a4, 0xa7f8a306,
+    0x4fef33a7, 0x9762560f, 0x7f75c6ae, 0x9c3c710c, 0x742be1ad,
+    0x81de1809, 0x69c988a8, 0x8a803f0a, 0x6297afab, 0xe0ebf21b,
+    0x08fc62ba, 0xebb5d518, 0x03a245b9, 0xf657bc1d, 0x1e402cbc,
+    0xfd099b1e, 0x151e0bbf, 0xcd936e17, 0x2584feb6, 0xc6cd4914,
+    0x2edad9b5, 0xdb2f2011, 0x3338b0b0, 0xd0710712, 0x386697b3,
+    0x0ff8ba33, 0xe7ef2a92, 0x04a69d30, 0xecb10d91, 0x1944f435,
+    0xf1536494, 0x121ad336, 0xfa0d4397, 0x2280263f, 0xca97b69e,
+    0x29de013c, 0xc1c9919d, 0x343c6839, 0xdc2bf898, 0x3f624f3a,
+    0xd775df9b, 0x5509822b, 0xbd1e128a, 0x5e57a528, 0xb6403589,
+    0x43b5cc2d, 0xaba25c8c, 0x48ebeb2e, 0xa0fc7b8f, 0x78711e27,
+    0x90668e86, 0x732f3924, 0x9b38a985, 0x6ecd5021, 0x86dac080,
+    0x65937722, 0x8d84e783, 0x0aaf2c22, 0xe2b8bc83, 0x01f10b21,
+    0xe9e69b80, 0x1c136224, 0xf404f285, 0x174d4527, 0xff5ad586,
+    0x27d7b02e, 0xcfc0208f, 0x2c89972d, 0xc49e078c, 0x316bfe28,
+    0xd97c6e89, 0x3a35d92b, 0xd222498a, 0x505e143a, 0xb849849b,
+    0x5b003339, 0xb317a398, 0x46e25a3c, 0xaef5ca9d, 0x4dbc7d3f,
+    0xa5abed9e, 0x7d268836, 0x95311897, 0x7678af35, 0x9e6f3f94,
+    0x6b9ac630, 0x838d5691, 0x60c4e133, 0x88d37192, 0xbf4d5c12,
+    0x575accb3, 0xb4137b11, 0x5c04ebb0, 0xa9f11214, 0x41e682b5,
+    0xa2af3517, 0x4ab8a5b6, 0x9235c01e, 0x7a2250bf, 0x996be71d,
+    0x717c77bc, 0x84898e18, 0x6c9e1eb9, 0x8fd7a91b, 0x67c039ba,
+    0xe5bc640a, 0x0dabf4ab, 0xeee24309, 0x06f5d3a8, 0xf3002a0c,
+    0x1b17baad, 0xf85e0d0f, 0x10499dae, 0xc8c4f806, 0x20d368a7,
+    0xc39adf05, 0x2b8d4fa4, 0xde78b600, 0x366f26a1, 0xd5269103,
+    0x3d3101a2}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0xa19017e800000000, 0x03275e0b00000000,
+    0xa2b749e300000000, 0x064ebc1600000000, 0xa7deabfe00000000,
+    0x0569e21d00000000, 0xa4f9f5f500000000, 0x0c9c782d00000000,
+    0xad0c6fc500000000, 0x0fbb262600000000, 0xae2b31ce00000000,
+    0x0ad2c43b00000000, 0xab42d3d300000000, 0x09f59a3000000000,
+    0xa8658dd800000000, 0x1838f15a00000000, 0xb9a8e6b200000000,
+    0x1b1faf5100000000, 0xba8fb8b900000000, 0x1e764d4c00000000,
+    0xbfe65aa400000000, 0x1d51134700000000, 0xbcc104af00000000,
+    0x14a4897700000000, 0xb5349e9f00000000, 0x1783d77c00000000,
+    0xb613c09400000000, 0x12ea356100000000, 0xb37a228900000000,
+    0x11cd6b6a00000000, 0xb05d7c8200000000, 0x3070e2b500000000,
+    0x91e0f55d00000000, 0x3357bcbe00000000, 0x92c7ab5600000000,
+    0x363e5ea300000000, 0x97ae494b00000000, 0x351900a800000000,
+    0x9489174000000000, 0x3cec9a9800000000, 0x9d7c8d7000000000,
+    0x3fcbc49300000000, 0x9e5bd37b00000000, 0x3aa2268e00000000,
+    0x9b32316600000000, 0x3985788500000000, 0x98156f6d00000000,
+    0x284813ef00000000, 0x89d8040700000000, 0x2b6f4de400000000,
+    0x8aff5a0c00000000, 0x2e06aff900000000, 0x8f96b81100000000,
+    0x2d21f1f200000000, 0x8cb1e61a00000000, 0x24d46bc200000000,
+    0x85447c2a00000000, 0x27f335c900000000, 0x8663222100000000,
+    0x229ad7d400000000, 0x830ac03c00000000, 0x21bd89df00000000,
+    0x802d9e3700000000, 0x21e6b5b000000000, 0x8076a25800000000,
+    0x22c1ebbb00000000, 0x8351fc5300000000, 0x27a809a600000000,
+    0x86381e4e00000000, 0x248f57ad00000000, 0x851f404500000000,
+    0x2d7acd9d00000000, 0x8ceada7500000000, 0x2e5d939600000000,
+    0x8fcd847e00000000, 0x2b34718b00000000, 0x8aa4666300000000,
+    0x28132f8000000000, 0x8983386800000000, 0x39de44ea00000000,
+    0x984e530200000000, 0x3af91ae100000000, 0x9b690d0900000000,
+    0x3f90f8fc00000000, 0x9e00ef1400000000, 0x3cb7a6f700000000,
+    0x9d27b11f00000000, 0x35423cc700000000, 0x94d22b2f00000000,
+    0x366562cc00000000, 0x97f5752400000000, 0x330c80d100000000,
+    0x929c973900000000, 0x302bdeda00000000, 0x91bbc93200000000,
+    0x1196570500000000, 0xb00640ed00000000, 0x12b1090e00000000,
+    0xb3211ee600000000, 0x17d8eb1300000000, 0xb648fcfb00000000,
+    0x14ffb51800000000, 0xb56fa2f000000000, 0x1d0a2f2800000000,
+    0xbc9a38c000000000, 0x1e2d712300000000, 0xbfbd66cb00000000,
+    0x1b44933e00000000, 0xbad484d600000000, 0x1863cd3500000000,
+    0xb9f3dadd00000000, 0x09aea65f00000000, 0xa83eb1b700000000,
+    0x0a89f85400000000, 0xab19efbc00000000, 0x0fe01a4900000000,
+    0xae700da100000000, 0x0cc7444200000000, 0xad5753aa00000000,
+    0x0532de7200000000, 0xa4a2c99a00000000, 0x0615807900000000,
+    0xa785979100000000, 0x037c626400000000, 0xa2ec758c00000000,
+    0x005b3c6f00000000, 0xa1cb2b8700000000, 0x03ca1aba00000000,
+    0xa25a0d5200000000, 0x00ed44b100000000, 0xa17d535900000000,
+    0x0584a6ac00000000, 0xa414b14400000000, 0x06a3f8a700000000,
+    0xa733ef4f00000000, 0x0f56629700000000, 0xaec6757f00000000,
+    0x0c713c9c00000000, 0xade12b7400000000, 0x0918de8100000000,
+    0xa888c96900000000, 0x0a3f808a00000000, 0xabaf976200000000,
+    0x1bf2ebe000000000, 0xba62fc0800000000, 0x18d5b5eb00000000,
+    0xb945a20300000000, 0x1dbc57f600000000, 0xbc2c401e00000000,
+    0x1e9b09fd00000000, 0xbf0b1e1500000000, 0x176e93cd00000000,
+    0xb6fe842500000000, 0x1449cdc600000000, 0xb5d9da2e00000000,
+    0x11202fdb00000000, 0xb0b0383300000000, 0x120771d000000000,
+    0xb397663800000000, 0x33baf80f00000000, 0x922aefe700000000,
+    0x309da60400000000, 0x910db1ec00000000, 0x35f4441900000000,
+    0x946453f100000000, 0x36d31a1200000000, 0x97430dfa00000000,
+    0x3f26802200000000, 0x9eb697ca00000000, 0x3c01de2900000000,
+    0x9d91c9c100000000, 0x39683c3400000000, 0x98f82bdc00000000,
+    0x3a4f623f00000000, 0x9bdf75d700000000, 0x2b82095500000000,
+    0x8a121ebd00000000, 0x28a5575e00000000, 0x893540b600000000,
+    0x2dccb54300000000, 0x8c5ca2ab00000000, 0x2eebeb4800000000,
+    0x8f7bfca000000000, 0x271e717800000000, 0x868e669000000000,
+    0x24392f7300000000, 0x85a9389b00000000, 0x2150cd6e00000000,
+    0x80c0da8600000000, 0x2277936500000000, 0x83e7848d00000000,
+    0x222caf0a00000000, 0x83bcb8e200000000, 0x210bf10100000000,
+    0x809be6e900000000, 0x2462131c00000000, 0x85f204f400000000,
+    0x27454d1700000000, 0x86d55aff00000000, 0x2eb0d72700000000,
+    0x8f20c0cf00000000, 0x2d97892c00000000, 0x8c079ec400000000,
+    0x28fe6b3100000000, 0x896e7cd900000000, 0x2bd9353a00000000,
+    0x8a4922d200000000, 0x3a145e5000000000, 0x9b8449b800000000,
+    0x3933005b00000000, 0x98a317b300000000, 0x3c5ae24600000000,
+    0x9dcaf5ae00000000, 0x3f7dbc4d00000000, 0x9eedaba500000000,
+    0x3688267d00000000, 0x9718319500000000, 0x35af787600000000,
+    0x943f6f9e00000000, 0x30c69a6b00000000, 0x91568d8300000000,
+    0x33e1c46000000000, 0x9271d38800000000, 0x125c4dbf00000000,
+    0xb3cc5a5700000000, 0x117b13b400000000, 0xb0eb045c00000000,
+    0x1412f1a900000000, 0xb582e64100000000, 0x1735afa200000000,
+    0xb6a5b84a00000000, 0x1ec0359200000000, 0xbf50227a00000000,
+    0x1de76b9900000000, 0xbc777c7100000000, 0x188e898400000000,
+    0xb91e9e6c00000000, 0x1ba9d78f00000000, 0xba39c06700000000,
+    0x0a64bce500000000, 0xabf4ab0d00000000, 0x0943e2ee00000000,
+    0xa8d3f50600000000, 0x0c2a00f300000000, 0xadba171b00000000,
+    0x0f0d5ef800000000, 0xae9d491000000000, 0x06f8c4c800000000,
+    0xa768d32000000000, 0x05df9ac300000000, 0xa44f8d2b00000000,
+    0x00b678de00000000, 0xa1266f3600000000, 0x039126d500000000,
+    0xa201313d00000000},
+   {0x0000000000000000, 0xee8439a100000000, 0x9d0f029900000000,
+    0x738b3b3800000000, 0x7b1975e900000000, 0x959d4c4800000000,
+    0xe616777000000000, 0x08924ed100000000, 0xb7349b0900000000,
+    0x59b0a2a800000000, 0x2a3b999000000000, 0xc4bfa03100000000,
+    0xcc2deee000000000, 0x22a9d74100000000, 0x5122ec7900000000,
+    0xbfa6d5d800000000, 0x6e69361300000000, 0x80ed0fb200000000,
+    0xf366348a00000000, 0x1de20d2b00000000, 0x157043fa00000000,
+    0xfbf47a5b00000000, 0x887f416300000000, 0x66fb78c200000000,
+    0xd95dad1a00000000, 0x37d994bb00000000, 0x4452af8300000000,
+    0xaad6962200000000, 0xa244d8f300000000, 0x4cc0e15200000000,
+    0x3f4bda6a00000000, 0xd1cfe3cb00000000, 0xdcd26c2600000000,
+    0x3256558700000000, 0x41dd6ebf00000000, 0xaf59571e00000000,
+    0xa7cb19cf00000000, 0x494f206e00000000, 0x3ac41b5600000000,
+    0xd44022f700000000, 0x6be6f72f00000000, 0x8562ce8e00000000,
+    0xf6e9f5b600000000, 0x186dcc1700000000, 0x10ff82c600000000,
+    0xfe7bbb6700000000, 0x8df0805f00000000, 0x6374b9fe00000000,
+    0xb2bb5a3500000000, 0x5c3f639400000000, 0x2fb458ac00000000,
+    0xc130610d00000000, 0xc9a22fdc00000000, 0x2726167d00000000,
+    0x54ad2d4500000000, 0xba2914e400000000, 0x058fc13c00000000,
+    0xeb0bf89d00000000, 0x9880c3a500000000, 0x7604fa0400000000,
+    0x7e96b4d500000000, 0x90128d7400000000, 0xe399b64c00000000,
+    0x0d1d8fed00000000, 0xb8a5d94c00000000, 0x5621e0ed00000000,
+    0x25aadbd500000000, 0xcb2ee27400000000, 0xc3bcaca500000000,
+    0x2d38950400000000, 0x5eb3ae3c00000000, 0xb037979d00000000,
+    0x0f91424500000000, 0xe1157be400000000, 0x929e40dc00000000,
+    0x7c1a797d00000000, 0x748837ac00000000, 0x9a0c0e0d00000000,
+    0xe987353500000000, 0x07030c9400000000, 0xd6ccef5f00000000,
+    0x3848d6fe00000000, 0x4bc3edc600000000, 0xa547d46700000000,
+    0xadd59ab600000000, 0x4351a31700000000, 0x30da982f00000000,
+    0xde5ea18e00000000, 0x61f8745600000000, 0x8f7c4df700000000,
+    0xfcf776cf00000000, 0x12734f6e00000000, 0x1ae101bf00000000,
+    0xf465381e00000000, 0x87ee032600000000, 0x696a3a8700000000,
+    0x6477b56a00000000, 0x8af38ccb00000000, 0xf978b7f300000000,
+    0x17fc8e5200000000, 0x1f6ec08300000000, 0xf1eaf92200000000,
+    0x8261c21a00000000, 0x6ce5fbbb00000000, 0xd3432e6300000000,
+    0x3dc717c200000000, 0x4e4c2cfa00000000, 0xa0c8155b00000000,
+    0xa85a5b8a00000000, 0x46de622b00000000, 0x3555591300000000,
+    0xdbd160b200000000, 0x0a1e837900000000, 0xe49abad800000000,
+    0x971181e000000000, 0x7995b84100000000, 0x7107f69000000000,
+    0x9f83cf3100000000, 0xec08f40900000000, 0x028ccda800000000,
+    0xbd2a187000000000, 0x53ae21d100000000, 0x20251ae900000000,
+    0xcea1234800000000, 0xc6336d9900000000, 0x28b7543800000000,
+    0x5b3c6f0000000000, 0xb5b856a100000000, 0x704bb39900000000,
+    0x9ecf8a3800000000, 0xed44b10000000000, 0x03c088a100000000,
+    0x0b52c67000000000, 0xe5d6ffd100000000, 0x965dc4e900000000,
+    0x78d9fd4800000000, 0xc77f289000000000, 0x29fb113100000000,
+    0x5a702a0900000000, 0xb4f413a800000000, 0xbc665d7900000000,
+    0x52e264d800000000, 0x21695fe000000000, 0xcfed664100000000,
+    0x1e22858a00000000, 0xf0a6bc2b00000000, 0x832d871300000000,
+    0x6da9beb200000000, 0x653bf06300000000, 0x8bbfc9c200000000,
+    0xf834f2fa00000000, 0x16b0cb5b00000000, 0xa9161e8300000000,
+    0x4792272200000000, 0x34191c1a00000000, 0xda9d25bb00000000,
+    0xd20f6b6a00000000, 0x3c8b52cb00000000, 0x4f0069f300000000,
+    0xa184505200000000, 0xac99dfbf00000000, 0x421de61e00000000,
+    0x3196dd2600000000, 0xdf12e48700000000, 0xd780aa5600000000,
+    0x390493f700000000, 0x4a8fa8cf00000000, 0xa40b916e00000000,
+    0x1bad44b600000000, 0xf5297d1700000000, 0x86a2462f00000000,
+    0x68267f8e00000000, 0x60b4315f00000000, 0x8e3008fe00000000,
+    0xfdbb33c600000000, 0x133f0a6700000000, 0xc2f0e9ac00000000,
+    0x2c74d00d00000000, 0x5fffeb3500000000, 0xb17bd29400000000,
+    0xb9e99c4500000000, 0x576da5e400000000, 0x24e69edc00000000,
+    0xca62a77d00000000, 0x75c472a500000000, 0x9b404b0400000000,
+    0xe8cb703c00000000, 0x064f499d00000000, 0x0edd074c00000000,
+    0xe0593eed00000000, 0x93d205d500000000, 0x7d563c7400000000,
+    0xc8ee6ad500000000, 0x266a537400000000, 0x55e1684c00000000,
+    0xbb6551ed00000000, 0xb3f71f3c00000000, 0x5d73269d00000000,
+    0x2ef81da500000000, 0xc07c240400000000, 0x7fdaf1dc00000000,
+    0x915ec87d00000000, 0xe2d5f34500000000, 0x0c51cae400000000,
+    0x04c3843500000000, 0xea47bd9400000000, 0x99cc86ac00000000,
+    0x7748bf0d00000000, 0xa6875cc600000000, 0x4803656700000000,
+    0x3b885e5f00000000, 0xd50c67fe00000000, 0xdd9e292f00000000,
+    0x331a108e00000000, 0x40912bb600000000, 0xae15121700000000,
+    0x11b3c7cf00000000, 0xff37fe6e00000000, 0x8cbcc55600000000,
+    0x6238fcf700000000, 0x6aaab22600000000, 0x842e8b8700000000,
+    0xf7a5b0bf00000000, 0x1921891e00000000, 0x143c06f300000000,
+    0xfab83f5200000000, 0x8933046a00000000, 0x67b73dcb00000000,
+    0x6f25731a00000000, 0x81a14abb00000000, 0xf22a718300000000,
+    0x1cae482200000000, 0xa3089dfa00000000, 0x4d8ca45b00000000,
+    0x3e079f6300000000, 0xd083a6c200000000, 0xd811e81300000000,
+    0x3695d1b200000000, 0x451eea8a00000000, 0xab9ad32b00000000,
+    0x7a5530e000000000, 0x94d1094100000000, 0xe75a327900000000,
+    0x09de0bd800000000, 0x014c450900000000, 0xefc87ca800000000,
+    0x9c43479000000000, 0x72c77e3100000000, 0xcd61abe900000000,
+    0x23e5924800000000, 0x506ea97000000000, 0xbeea90d100000000,
+    0xb678de0000000000, 0x58fce7a100000000, 0x2b77dc9900000000,
+    0xc5f3e53800000000},
+   {0x0000000000000000, 0xfbf6134700000000, 0xf6ed278e00000000,
+    0x0d1b34c900000000, 0xaddd3ec700000000, 0x562b2d8000000000,
+    0x5b30194900000000, 0xa0c60a0e00000000, 0x1bbd0c5500000000,
+    0xe04b1f1200000000, 0xed502bdb00000000, 0x16a6389c00000000,
+    0xb660329200000000, 0x4d9621d500000000, 0x408d151c00000000,
+    0xbb7b065b00000000, 0x367a19aa00000000, 0xcd8c0aed00000000,
+    0xc0973e2400000000, 0x3b612d6300000000, 0x9ba7276d00000000,
+    0x6051342a00000000, 0x6d4a00e300000000, 0x96bc13a400000000,
+    0x2dc715ff00000000, 0xd63106b800000000, 0xdb2a327100000000,
+    0x20dc213600000000, 0x801a2b3800000000, 0x7bec387f00000000,
+    0x76f70cb600000000, 0x8d011ff100000000, 0x2df2438f00000000,
+    0xd60450c800000000, 0xdb1f640100000000, 0x20e9774600000000,
+    0x802f7d4800000000, 0x7bd96e0f00000000, 0x76c25ac600000000,
+    0x8d34498100000000, 0x364f4fda00000000, 0xcdb95c9d00000000,
+    0xc0a2685400000000, 0x3b547b1300000000, 0x9b92711d00000000,
+    0x6064625a00000000, 0x6d7f569300000000, 0x968945d400000000,
+    0x1b885a2500000000, 0xe07e496200000000, 0xed657dab00000000,
+    0x16936eec00000000, 0xb65564e200000000, 0x4da377a500000000,
+    0x40b8436c00000000, 0xbb4e502b00000000, 0x0035567000000000,
+    0xfbc3453700000000, 0xf6d871fe00000000, 0x0d2e62b900000000,
+    0xade868b700000000, 0x561e7bf000000000, 0x5b054f3900000000,
+    0xa0f35c7e00000000, 0x1be2f6c500000000, 0xe014e58200000000,
+    0xed0fd14b00000000, 0x16f9c20c00000000, 0xb63fc80200000000,
+    0x4dc9db4500000000, 0x40d2ef8c00000000, 0xbb24fccb00000000,
+    0x005ffa9000000000, 0xfba9e9d700000000, 0xf6b2dd1e00000000,
+    0x0d44ce5900000000, 0xad82c45700000000, 0x5674d71000000000,
+    0x5b6fe3d900000000, 0xa099f09e00000000, 0x2d98ef6f00000000,
+    0xd66efc2800000000, 0xdb75c8e100000000, 0x2083dba600000000,
+    0x8045d1a800000000, 0x7bb3c2ef00000000, 0x76a8f62600000000,
+    0x8d5ee56100000000, 0x3625e33a00000000, 0xcdd3f07d00000000,
+    0xc0c8c4b400000000, 0x3b3ed7f300000000, 0x9bf8ddfd00000000,
+    0x600eceba00000000, 0x6d15fa7300000000, 0x96e3e93400000000,
+    0x3610b54a00000000, 0xcde6a60d00000000, 0xc0fd92c400000000,
+    0x3b0b818300000000, 0x9bcd8b8d00000000, 0x603b98ca00000000,
+    0x6d20ac0300000000, 0x96d6bf4400000000, 0x2dadb91f00000000,
+    0xd65baa5800000000, 0xdb409e9100000000, 0x20b68dd600000000,
+    0x807087d800000000, 0x7b86949f00000000, 0x769da05600000000,
+    0x8d6bb31100000000, 0x006aace000000000, 0xfb9cbfa700000000,
+    0xf6878b6e00000000, 0x0d71982900000000, 0xadb7922700000000,
+    0x5641816000000000, 0x5b5ab5a900000000, 0xa0aca6ee00000000,
+    0x1bd7a0b500000000, 0xe021b3f200000000, 0xed3a873b00000000,
+    0x16cc947c00000000, 0xb60a9e7200000000, 0x4dfc8d3500000000,
+    0x40e7b9fc00000000, 0xbb11aabb00000000, 0x77c29c5000000000,
+    0x8c348f1700000000, 0x812fbbde00000000, 0x7ad9a89900000000,
+    0xda1fa29700000000, 0x21e9b1d000000000, 0x2cf2851900000000,
+    0xd704965e00000000, 0x6c7f900500000000, 0x9789834200000000,
+    0x9a92b78b00000000, 0x6164a4cc00000000, 0xc1a2aec200000000,
+    0x3a54bd8500000000, 0x374f894c00000000, 0xccb99a0b00000000,
+    0x41b885fa00000000, 0xba4e96bd00000000, 0xb755a27400000000,
+    0x4ca3b13300000000, 0xec65bb3d00000000, 0x1793a87a00000000,
+    0x1a889cb300000000, 0xe17e8ff400000000, 0x5a0589af00000000,
+    0xa1f39ae800000000, 0xace8ae2100000000, 0x571ebd6600000000,
+    0xf7d8b76800000000, 0x0c2ea42f00000000, 0x013590e600000000,
+    0xfac383a100000000, 0x5a30dfdf00000000, 0xa1c6cc9800000000,
+    0xacddf85100000000, 0x572beb1600000000, 0xf7ede11800000000,
+    0x0c1bf25f00000000, 0x0100c69600000000, 0xfaf6d5d100000000,
+    0x418dd38a00000000, 0xba7bc0cd00000000, 0xb760f40400000000,
+    0x4c96e74300000000, 0xec50ed4d00000000, 0x17a6fe0a00000000,
+    0x1abdcac300000000, 0xe14bd98400000000, 0x6c4ac67500000000,
+    0x97bcd53200000000, 0x9aa7e1fb00000000, 0x6151f2bc00000000,
+    0xc197f8b200000000, 0x3a61ebf500000000, 0x377adf3c00000000,
+    0xcc8ccc7b00000000, 0x77f7ca2000000000, 0x8c01d96700000000,
+    0x811aedae00000000, 0x7aecfee900000000, 0xda2af4e700000000,
+    0x21dce7a000000000, 0x2cc7d36900000000, 0xd731c02e00000000,
+    0x6c206a9500000000, 0x97d679d200000000, 0x9acd4d1b00000000,
+    0x613b5e5c00000000, 0xc1fd545200000000, 0x3a0b471500000000,
+    0x371073dc00000000, 0xcce6609b00000000, 0x779d66c000000000,
+    0x8c6b758700000000, 0x8170414e00000000, 0x7a86520900000000,
+    0xda40580700000000, 0x21b64b4000000000, 0x2cad7f8900000000,
+    0xd75b6cce00000000, 0x5a5a733f00000000, 0xa1ac607800000000,
+    0xacb754b100000000, 0x574147f600000000, 0xf7874df800000000,
+    0x0c715ebf00000000, 0x016a6a7600000000, 0xfa9c793100000000,
+    0x41e77f6a00000000, 0xba116c2d00000000, 0xb70a58e400000000,
+    0x4cfc4ba300000000, 0xec3a41ad00000000, 0x17cc52ea00000000,
+    0x1ad7662300000000, 0xe121756400000000, 0x41d2291a00000000,
+    0xba243a5d00000000, 0xb73f0e9400000000, 0x4cc91dd300000000,
+    0xec0f17dd00000000, 0x17f9049a00000000, 0x1ae2305300000000,
+    0xe114231400000000, 0x5a6f254f00000000, 0xa199360800000000,
+    0xac8202c100000000, 0x5774118600000000, 0xf7b21b8800000000,
+    0x0c4408cf00000000, 0x015f3c0600000000, 0xfaa92f4100000000,
+    0x77a830b000000000, 0x8c5e23f700000000, 0x8145173e00000000,
+    0x7ab3047900000000, 0xda750e7700000000, 0x21831d3000000000,
+    0x2c9829f900000000, 0xd76e3abe00000000, 0x6c153ce500000000,
+    0x97e32fa200000000, 0x9af81b6b00000000, 0x610e082c00000000,
+    0xc1c8022200000000, 0x3a3e116500000000, 0x372525ac00000000,
+    0xccd336eb00000000},
+   {0x0000000000000000, 0x6238282a00000000, 0xc470505400000000,
+    0xa648787e00000000, 0x88e1a0a800000000, 0xead9888200000000,
+    0x4c91f0fc00000000, 0x2ea9d8d600000000, 0x51c5308a00000000,
+    0x33fd18a000000000, 0x95b560de00000000, 0xf78d48f400000000,
+    0xd924902200000000, 0xbb1cb80800000000, 0x1d54c07600000000,
+    0x7f6ce85c00000000, 0xe38c10cf00000000, 0x81b438e500000000,
+    0x27fc409b00000000, 0x45c468b100000000, 0x6b6db06700000000,
+    0x0955984d00000000, 0xaf1de03300000000, 0xcd25c81900000000,
+    0xb249204500000000, 0xd071086f00000000, 0x7639701100000000,
+    0x1401583b00000000, 0x3aa880ed00000000, 0x5890a8c700000000,
+    0xfed8d0b900000000, 0x9ce0f89300000000, 0x871f504500000000,
+    0xe527786f00000000, 0x436f001100000000, 0x2157283b00000000,
+    0x0ffef0ed00000000, 0x6dc6d8c700000000, 0xcb8ea0b900000000,
+    0xa9b6889300000000, 0xd6da60cf00000000, 0xb4e248e500000000,
+    0x12aa309b00000000, 0x709218b100000000, 0x5e3bc06700000000,
+    0x3c03e84d00000000, 0x9a4b903300000000, 0xf873b81900000000,
+    0x6493408a00000000, 0x06ab68a000000000, 0xa0e310de00000000,
+    0xc2db38f400000000, 0xec72e02200000000, 0x8e4ac80800000000,
+    0x2802b07600000000, 0x4a3a985c00000000, 0x3556700000000000,
+    0x576e582a00000000, 0xf126205400000000, 0x931e087e00000000,
+    0xbdb7d0a800000000, 0xdf8ff88200000000, 0x79c780fc00000000,
+    0x1bffa8d600000000, 0x0e3fa08a00000000, 0x6c0788a000000000,
+    0xca4ff0de00000000, 0xa877d8f400000000, 0x86de002200000000,
+    0xe4e6280800000000, 0x42ae507600000000, 0x2096785c00000000,
+    0x5ffa900000000000, 0x3dc2b82a00000000, 0x9b8ac05400000000,
+    0xf9b2e87e00000000, 0xd71b30a800000000, 0xb523188200000000,
+    0x136b60fc00000000, 0x715348d600000000, 0xedb3b04500000000,
+    0x8f8b986f00000000, 0x29c3e01100000000, 0x4bfbc83b00000000,
+    0x655210ed00000000, 0x076a38c700000000, 0xa12240b900000000,
+    0xc31a689300000000, 0xbc7680cf00000000, 0xde4ea8e500000000,
+    0x7806d09b00000000, 0x1a3ef8b100000000, 0x3497206700000000,
+    0x56af084d00000000, 0xf0e7703300000000, 0x92df581900000000,
+    0x8920f0cf00000000, 0xeb18d8e500000000, 0x4d50a09b00000000,
+    0x2f6888b100000000, 0x01c1506700000000, 0x63f9784d00000000,
+    0xc5b1003300000000, 0xa789281900000000, 0xd8e5c04500000000,
+    0xbadde86f00000000, 0x1c95901100000000, 0x7eadb83b00000000,
+    0x500460ed00000000, 0x323c48c700000000, 0x947430b900000000,
+    0xf64c189300000000, 0x6aace00000000000, 0x0894c82a00000000,
+    0xaedcb05400000000, 0xcce4987e00000000, 0xe24d40a800000000,
+    0x8075688200000000, 0x263d10fc00000000, 0x440538d600000000,
+    0x3b69d08a00000000, 0x5951f8a000000000, 0xff1980de00000000,
+    0x9d21a8f400000000, 0xb388702200000000, 0xd1b0580800000000,
+    0x77f8207600000000, 0x15c0085c00000000, 0x5d7831ce00000000,
+    0x3f4019e400000000, 0x9908619a00000000, 0xfb3049b000000000,
+    0xd599916600000000, 0xb7a1b94c00000000, 0x11e9c13200000000,
+    0x73d1e91800000000, 0x0cbd014400000000, 0x6e85296e00000000,
+    0xc8cd511000000000, 0xaaf5793a00000000, 0x845ca1ec00000000,
+    0xe66489c600000000, 0x402cf1b800000000, 0x2214d99200000000,
+    0xbef4210100000000, 0xdccc092b00000000, 0x7a84715500000000,
+    0x18bc597f00000000, 0x361581a900000000, 0x542da98300000000,
+    0xf265d1fd00000000, 0x905df9d700000000, 0xef31118b00000000,
+    0x8d0939a100000000, 0x2b4141df00000000, 0x497969f500000000,
+    0x67d0b12300000000, 0x05e8990900000000, 0xa3a0e17700000000,
+    0xc198c95d00000000, 0xda67618b00000000, 0xb85f49a100000000,
+    0x1e1731df00000000, 0x7c2f19f500000000, 0x5286c12300000000,
+    0x30bee90900000000, 0x96f6917700000000, 0xf4ceb95d00000000,
+    0x8ba2510100000000, 0xe99a792b00000000, 0x4fd2015500000000,
+    0x2dea297f00000000, 0x0343f1a900000000, 0x617bd98300000000,
+    0xc733a1fd00000000, 0xa50b89d700000000, 0x39eb714400000000,
+    0x5bd3596e00000000, 0xfd9b211000000000, 0x9fa3093a00000000,
+    0xb10ad1ec00000000, 0xd332f9c600000000, 0x757a81b800000000,
+    0x1742a99200000000, 0x682e41ce00000000, 0x0a1669e400000000,
+    0xac5e119a00000000, 0xce6639b000000000, 0xe0cfe16600000000,
+    0x82f7c94c00000000, 0x24bfb13200000000, 0x4687991800000000,
+    0x5347914400000000, 0x317fb96e00000000, 0x9737c11000000000,
+    0xf50fe93a00000000, 0xdba631ec00000000, 0xb99e19c600000000,
+    0x1fd661b800000000, 0x7dee499200000000, 0x0282a1ce00000000,
+    0x60ba89e400000000, 0xc6f2f19a00000000, 0xa4cad9b000000000,
+    0x8a63016600000000, 0xe85b294c00000000, 0x4e13513200000000,
+    0x2c2b791800000000, 0xb0cb818b00000000, 0xd2f3a9a100000000,
+    0x74bbd1df00000000, 0x1683f9f500000000, 0x382a212300000000,
+    0x5a12090900000000, 0xfc5a717700000000, 0x9e62595d00000000,
+    0xe10eb10100000000, 0x8336992b00000000, 0x257ee15500000000,
+    0x4746c97f00000000, 0x69ef11a900000000, 0x0bd7398300000000,
+    0xad9f41fd00000000, 0xcfa769d700000000, 0xd458c10100000000,
+    0xb660e92b00000000, 0x1028915500000000, 0x7210b97f00000000,
+    0x5cb961a900000000, 0x3e81498300000000, 0x98c931fd00000000,
+    0xfaf119d700000000, 0x859df18b00000000, 0xe7a5d9a100000000,
+    0x41eda1df00000000, 0x23d589f500000000, 0x0d7c512300000000,
+    0x6f44790900000000, 0xc90c017700000000, 0xab34295d00000000,
+    0x37d4d1ce00000000, 0x55ecf9e400000000, 0xf3a4819a00000000,
+    0x919ca9b000000000, 0xbf35716600000000, 0xdd0d594c00000000,
+    0x7b45213200000000, 0x197d091800000000, 0x6611e14400000000,
+    0x0429c96e00000000, 0xa261b11000000000, 0xc059993a00000000,
+    0xeef041ec00000000, 0x8cc869c600000000, 0x2a8011b800000000,
+    0x48b8399200000000},
+   {0x0000000000000000, 0x4c2896a300000000, 0xd9565d9c00000000,
+    0x957ecb3f00000000, 0xf3abcbe300000000, 0xbf835d4000000000,
+    0x2afd967f00000000, 0x66d500dc00000000, 0xa751e61c00000000,
+    0xeb7970bf00000000, 0x7e07bb8000000000, 0x322f2d2300000000,
+    0x54fa2dff00000000, 0x18d2bb5c00000000, 0x8dac706300000000,
+    0xc184e6c000000000, 0x4ea3cc3900000000, 0x028b5a9a00000000,
+    0x97f591a500000000, 0xdbdd070600000000, 0xbd0807da00000000,
+    0xf120917900000000, 0x645e5a4600000000, 0x2876cce500000000,
+    0xe9f22a2500000000, 0xa5dabc8600000000, 0x30a477b900000000,
+    0x7c8ce11a00000000, 0x1a59e1c600000000, 0x5671776500000000,
+    0xc30fbc5a00000000, 0x8f272af900000000, 0x9c46997300000000,
+    0xd06e0fd000000000, 0x4510c4ef00000000, 0x0938524c00000000,
+    0x6fed529000000000, 0x23c5c43300000000, 0xb6bb0f0c00000000,
+    0xfa9399af00000000, 0x3b177f6f00000000, 0x773fe9cc00000000,
+    0xe24122f300000000, 0xae69b45000000000, 0xc8bcb48c00000000,
+    0x8494222f00000000, 0x11eae91000000000, 0x5dc27fb300000000,
+    0xd2e5554a00000000, 0x9ecdc3e900000000, 0x0bb308d600000000,
+    0x479b9e7500000000, 0x214e9ea900000000, 0x6d66080a00000000,
+    0xf818c33500000000, 0xb430559600000000, 0x75b4b35600000000,
+    0x399c25f500000000, 0xace2eeca00000000, 0xe0ca786900000000,
+    0x861f78b500000000, 0xca37ee1600000000, 0x5f49252900000000,
+    0x1361b38a00000000, 0x388d32e700000000, 0x74a5a44400000000,
+    0xe1db6f7b00000000, 0xadf3f9d800000000, 0xcb26f90400000000,
+    0x870e6fa700000000, 0x1270a49800000000, 0x5e58323b00000000,
+    0x9fdcd4fb00000000, 0xd3f4425800000000, 0x468a896700000000,
+    0x0aa21fc400000000, 0x6c771f1800000000, 0x205f89bb00000000,
+    0xb521428400000000, 0xf909d42700000000, 0x762efede00000000,
+    0x3a06687d00000000, 0xaf78a34200000000, 0xe35035e100000000,
+    0x8585353d00000000, 0xc9ada39e00000000, 0x5cd368a100000000,
+    0x10fbfe0200000000, 0xd17f18c200000000, 0x9d578e6100000000,
+    0x0829455e00000000, 0x4401d3fd00000000, 0x22d4d32100000000,
+    0x6efc458200000000, 0xfb828ebd00000000, 0xb7aa181e00000000,
+    0xa4cbab9400000000, 0xe8e33d3700000000, 0x7d9df60800000000,
+    0x31b560ab00000000, 0x5760607700000000, 0x1b48f6d400000000,
+    0x8e363deb00000000, 0xc21eab4800000000, 0x039a4d8800000000,
+    0x4fb2db2b00000000, 0xdacc101400000000, 0x96e486b700000000,
+    0xf031866b00000000, 0xbc1910c800000000, 0x2967dbf700000000,
+    0x654f4d5400000000, 0xea6867ad00000000, 0xa640f10e00000000,
+    0x333e3a3100000000, 0x7f16ac9200000000, 0x19c3ac4e00000000,
+    0x55eb3aed00000000, 0xc095f1d200000000, 0x8cbd677100000000,
+    0x4d3981b100000000, 0x0111171200000000, 0x946fdc2d00000000,
+    0xd8474a8e00000000, 0xbe924a5200000000, 0xf2badcf100000000,
+    0x67c417ce00000000, 0x2bec816d00000000, 0x311c141500000000,
+    0x7d3482b600000000, 0xe84a498900000000, 0xa462df2a00000000,
+    0xc2b7dff600000000, 0x8e9f495500000000, 0x1be1826a00000000,
+    0x57c914c900000000, 0x964df20900000000, 0xda6564aa00000000,
+    0x4f1baf9500000000, 0x0333393600000000, 0x65e639ea00000000,
+    0x29ceaf4900000000, 0xbcb0647600000000, 0xf098f2d500000000,
+    0x7fbfd82c00000000, 0x33974e8f00000000, 0xa6e985b000000000,
+    0xeac1131300000000, 0x8c1413cf00000000, 0xc03c856c00000000,
+    0x55424e5300000000, 0x196ad8f000000000, 0xd8ee3e3000000000,
+    0x94c6a89300000000, 0x01b863ac00000000, 0x4d90f50f00000000,
+    0x2b45f5d300000000, 0x676d637000000000, 0xf213a84f00000000,
+    0xbe3b3eec00000000, 0xad5a8d6600000000, 0xe1721bc500000000,
+    0x740cd0fa00000000, 0x3824465900000000, 0x5ef1468500000000,
+    0x12d9d02600000000, 0x87a71b1900000000, 0xcb8f8dba00000000,
+    0x0a0b6b7a00000000, 0x4623fdd900000000, 0xd35d36e600000000,
+    0x9f75a04500000000, 0xf9a0a09900000000, 0xb588363a00000000,
+    0x20f6fd0500000000, 0x6cde6ba600000000, 0xe3f9415f00000000,
+    0xafd1d7fc00000000, 0x3aaf1cc300000000, 0x76878a6000000000,
+    0x10528abc00000000, 0x5c7a1c1f00000000, 0xc904d72000000000,
+    0x852c418300000000, 0x44a8a74300000000, 0x088031e000000000,
+    0x9dfefadf00000000, 0xd1d66c7c00000000, 0xb7036ca000000000,
+    0xfb2bfa0300000000, 0x6e55313c00000000, 0x227da79f00000000,
+    0x099126f200000000, 0x45b9b05100000000, 0xd0c77b6e00000000,
+    0x9cefedcd00000000, 0xfa3aed1100000000, 0xb6127bb200000000,
+    0x236cb08d00000000, 0x6f44262e00000000, 0xaec0c0ee00000000,
+    0xe2e8564d00000000, 0x77969d7200000000, 0x3bbe0bd100000000,
+    0x5d6b0b0d00000000, 0x11439dae00000000, 0x843d569100000000,
+    0xc815c03200000000, 0x4732eacb00000000, 0x0b1a7c6800000000,
+    0x9e64b75700000000, 0xd24c21f400000000, 0xb499212800000000,
+    0xf8b1b78b00000000, 0x6dcf7cb400000000, 0x21e7ea1700000000,
+    0xe0630cd700000000, 0xac4b9a7400000000, 0x3935514b00000000,
+    0x751dc7e800000000, 0x13c8c73400000000, 0x5fe0519700000000,
+    0xca9e9aa800000000, 0x86b60c0b00000000, 0x95d7bf8100000000,
+    0xd9ff292200000000, 0x4c81e21d00000000, 0x00a974be00000000,
+    0x667c746200000000, 0x2a54e2c100000000, 0xbf2a29fe00000000,
+    0xf302bf5d00000000, 0x3286599d00000000, 0x7eaecf3e00000000,
+    0xebd0040100000000, 0xa7f892a200000000, 0xc12d927e00000000,
+    0x8d0504dd00000000, 0x187bcfe200000000, 0x5453594100000000,
+    0xdb7473b800000000, 0x975ce51b00000000, 0x02222e2400000000,
+    0x4e0ab88700000000, 0x28dfb85b00000000, 0x64f72ef800000000,
+    0xf189e5c700000000, 0xbda1736400000000, 0x7c2595a400000000,
+    0x300d030700000000, 0xa573c83800000000, 0xe95b5e9b00000000,
+    0x8f8e5e4700000000, 0xc3a6c8e400000000, 0x56d803db00000000,
+    0x1af0957800000000},
+   {0x0000000000000000, 0x939bc97f00000000, 0x263793ff00000000,
+    0xb5ac5a8000000000, 0x0d68572400000000, 0x9ef39e5b00000000,
+    0x2b5fc4db00000000, 0xb8c40da400000000, 0x1ad0ae4800000000,
+    0x894b673700000000, 0x3ce73db700000000, 0xaf7cf4c800000000,
+    0x17b8f96c00000000, 0x8423301300000000, 0x318f6a9300000000,
+    0xa214a3ec00000000, 0x34a05d9100000000, 0xa73b94ee00000000,
+    0x1297ce6e00000000, 0x810c071100000000, 0x39c80ab500000000,
+    0xaa53c3ca00000000, 0x1fff994a00000000, 0x8c64503500000000,
+    0x2e70f3d900000000, 0xbdeb3aa600000000, 0x0847602600000000,
+    0x9bdca95900000000, 0x2318a4fd00000000, 0xb0836d8200000000,
+    0x052f370200000000, 0x96b4fe7d00000000, 0x2946caf900000000,
+    0xbadd038600000000, 0x0f71590600000000, 0x9cea907900000000,
+    0x242e9ddd00000000, 0xb7b554a200000000, 0x02190e2200000000,
+    0x9182c75d00000000, 0x339664b100000000, 0xa00dadce00000000,
+    0x15a1f74e00000000, 0x863a3e3100000000, 0x3efe339500000000,
+    0xad65faea00000000, 0x18c9a06a00000000, 0x8b52691500000000,
+    0x1de6976800000000, 0x8e7d5e1700000000, 0x3bd1049700000000,
+    0xa84acde800000000, 0x108ec04c00000000, 0x8315093300000000,
+    0x36b953b300000000, 0xa5229acc00000000, 0x0736392000000000,
+    0x94adf05f00000000, 0x2101aadf00000000, 0xb29a63a000000000,
+    0x0a5e6e0400000000, 0x99c5a77b00000000, 0x2c69fdfb00000000,
+    0xbff2348400000000, 0x138ae52800000000, 0x80112c5700000000,
+    0x35bd76d700000000, 0xa626bfa800000000, 0x1ee2b20c00000000,
+    0x8d797b7300000000, 0x38d521f300000000, 0xab4ee88c00000000,
+    0x095a4b6000000000, 0x9ac1821f00000000, 0x2f6dd89f00000000,
+    0xbcf611e000000000, 0x04321c4400000000, 0x97a9d53b00000000,
+    0x22058fbb00000000, 0xb19e46c400000000, 0x272ab8b900000000,
+    0xb4b171c600000000, 0x011d2b4600000000, 0x9286e23900000000,
+    0x2a42ef9d00000000, 0xb9d926e200000000, 0x0c757c6200000000,
+    0x9feeb51d00000000, 0x3dfa16f100000000, 0xae61df8e00000000,
+    0x1bcd850e00000000, 0x88564c7100000000, 0x309241d500000000,
+    0xa30988aa00000000, 0x16a5d22a00000000, 0x853e1b5500000000,
+    0x3acc2fd100000000, 0xa957e6ae00000000, 0x1cfbbc2e00000000,
+    0x8f60755100000000, 0x37a478f500000000, 0xa43fb18a00000000,
+    0x1193eb0a00000000, 0x8208227500000000, 0x201c819900000000,
+    0xb38748e600000000, 0x062b126600000000, 0x95b0db1900000000,
+    0x2d74d6bd00000000, 0xbeef1fc200000000, 0x0b43454200000000,
+    0x98d88c3d00000000, 0x0e6c724000000000, 0x9df7bb3f00000000,
+    0x285be1bf00000000, 0xbbc028c000000000, 0x0304256400000000,
+    0x909fec1b00000000, 0x2533b69b00000000, 0xb6a87fe400000000,
+    0x14bcdc0800000000, 0x8727157700000000, 0x328b4ff700000000,
+    0xa110868800000000, 0x19d48b2c00000000, 0x8a4f425300000000,
+    0x3fe318d300000000, 0xac78d1ac00000000, 0x2614cb5100000000,
+    0xb58f022e00000000, 0x002358ae00000000, 0x93b891d100000000,
+    0x2b7c9c7500000000, 0xb8e7550a00000000, 0x0d4b0f8a00000000,
+    0x9ed0c6f500000000, 0x3cc4651900000000, 0xaf5fac6600000000,
+    0x1af3f6e600000000, 0x89683f9900000000, 0x31ac323d00000000,
+    0xa237fb4200000000, 0x179ba1c200000000, 0x840068bd00000000,
+    0x12b496c000000000, 0x812f5fbf00000000, 0x3483053f00000000,
+    0xa718cc4000000000, 0x1fdcc1e400000000, 0x8c47089b00000000,
+    0x39eb521b00000000, 0xaa709b6400000000, 0x0864388800000000,
+    0x9bfff1f700000000, 0x2e53ab7700000000, 0xbdc8620800000000,
+    0x050c6fac00000000, 0x9697a6d300000000, 0x233bfc5300000000,
+    0xb0a0352c00000000, 0x0f5201a800000000, 0x9cc9c8d700000000,
+    0x2965925700000000, 0xbafe5b2800000000, 0x023a568c00000000,
+    0x91a19ff300000000, 0x240dc57300000000, 0xb7960c0c00000000,
+    0x1582afe000000000, 0x8619669f00000000, 0x33b53c1f00000000,
+    0xa02ef56000000000, 0x18eaf8c400000000, 0x8b7131bb00000000,
+    0x3edd6b3b00000000, 0xad46a24400000000, 0x3bf25c3900000000,
+    0xa869954600000000, 0x1dc5cfc600000000, 0x8e5e06b900000000,
+    0x369a0b1d00000000, 0xa501c26200000000, 0x10ad98e200000000,
+    0x8336519d00000000, 0x2122f27100000000, 0xb2b93b0e00000000,
+    0x0715618e00000000, 0x948ea8f100000000, 0x2c4aa55500000000,
+    0xbfd16c2a00000000, 0x0a7d36aa00000000, 0x99e6ffd500000000,
+    0x359e2e7900000000, 0xa605e70600000000, 0x13a9bd8600000000,
+    0x803274f900000000, 0x38f6795d00000000, 0xab6db02200000000,
+    0x1ec1eaa200000000, 0x8d5a23dd00000000, 0x2f4e803100000000,
+    0xbcd5494e00000000, 0x097913ce00000000, 0x9ae2dab100000000,
+    0x2226d71500000000, 0xb1bd1e6a00000000, 0x041144ea00000000,
+    0x978a8d9500000000, 0x013e73e800000000, 0x92a5ba9700000000,
+    0x2709e01700000000, 0xb492296800000000, 0x0c5624cc00000000,
+    0x9fcdedb300000000, 0x2a61b73300000000, 0xb9fa7e4c00000000,
+    0x1beedda000000000, 0x887514df00000000, 0x3dd94e5f00000000,
+    0xae42872000000000, 0x16868a8400000000, 0x851d43fb00000000,
+    0x30b1197b00000000, 0xa32ad00400000000, 0x1cd8e48000000000,
+    0x8f432dff00000000, 0x3aef777f00000000, 0xa974be0000000000,
+    0x11b0b3a400000000, 0x822b7adb00000000, 0x3787205b00000000,
+    0xa41ce92400000000, 0x06084ac800000000, 0x959383b700000000,
+    0x203fd93700000000, 0xb3a4104800000000, 0x0b601dec00000000,
+    0x98fbd49300000000, 0x2d578e1300000000, 0xbecc476c00000000,
+    0x2878b91100000000, 0xbbe3706e00000000, 0x0e4f2aee00000000,
+    0x9dd4e39100000000, 0x2510ee3500000000, 0xb68b274a00000000,
+    0x03277dca00000000, 0x90bcb4b500000000, 0x32a8175900000000,
+    0xa133de2600000000, 0x149f84a600000000, 0x87044dd900000000,
+    0x3fc0407d00000000, 0xac5b890200000000, 0x19f7d38200000000,
+    0x8a6c1afd00000000},
+   {0x0000000000000000, 0x650b796900000000, 0xca16f2d200000000,
+    0xaf1d8bbb00000000, 0xd52b957e00000000, 0xb020ec1700000000,
+    0x1f3d67ac00000000, 0x7a361ec500000000, 0xaa572afd00000000,
+    0xcf5c539400000000, 0x6041d82f00000000, 0x054aa14600000000,
+    0x7f7cbf8300000000, 0x1a77c6ea00000000, 0xb56a4d5100000000,
+    0xd061343800000000, 0x15a9252100000000, 0x70a25c4800000000,
+    0xdfbfd7f300000000, 0xbab4ae9a00000000, 0xc082b05f00000000,
+    0xa589c93600000000, 0x0a94428d00000000, 0x6f9f3be400000000,
+    0xbffe0fdc00000000, 0xdaf576b500000000, 0x75e8fd0e00000000,
+    0x10e3846700000000, 0x6ad59aa200000000, 0x0fdee3cb00000000,
+    0xa0c3687000000000, 0xc5c8111900000000, 0x2a524b4200000000,
+    0x4f59322b00000000, 0xe044b99000000000, 0x854fc0f900000000,
+    0xff79de3c00000000, 0x9a72a75500000000, 0x356f2cee00000000,
+    0x5064558700000000, 0x800561bf00000000, 0xe50e18d600000000,
+    0x4a13936d00000000, 0x2f18ea0400000000, 0x552ef4c100000000,
+    0x30258da800000000, 0x9f38061300000000, 0xfa337f7a00000000,
+    0x3ffb6e6300000000, 0x5af0170a00000000, 0xf5ed9cb100000000,
+    0x90e6e5d800000000, 0xead0fb1d00000000, 0x8fdb827400000000,
+    0x20c609cf00000000, 0x45cd70a600000000, 0x95ac449e00000000,
+    0xf0a73df700000000, 0x5fbab64c00000000, 0x3ab1cf2500000000,
+    0x4087d1e000000000, 0x258ca88900000000, 0x8a91233200000000,
+    0xef9a5a5b00000000, 0x54a4968400000000, 0x31afefed00000000,
+    0x9eb2645600000000, 0xfbb91d3f00000000, 0x818f03fa00000000,
+    0xe4847a9300000000, 0x4b99f12800000000, 0x2e92884100000000,
+    0xfef3bc7900000000, 0x9bf8c51000000000, 0x34e54eab00000000,
+    0x51ee37c200000000, 0x2bd8290700000000, 0x4ed3506e00000000,
+    0xe1cedbd500000000, 0x84c5a2bc00000000, 0x410db3a500000000,
+    0x2406cacc00000000, 0x8b1b417700000000, 0xee10381e00000000,
+    0x942626db00000000, 0xf12d5fb200000000, 0x5e30d40900000000,
+    0x3b3bad6000000000, 0xeb5a995800000000, 0x8e51e03100000000,
+    0x214c6b8a00000000, 0x444712e300000000, 0x3e710c2600000000,
+    0x5b7a754f00000000, 0xf467fef400000000, 0x916c879d00000000,
+    0x7ef6ddc600000000, 0x1bfda4af00000000, 0xb4e02f1400000000,
+    0xd1eb567d00000000, 0xabdd48b800000000, 0xced631d100000000,
+    0x61cbba6a00000000, 0x04c0c30300000000, 0xd4a1f73b00000000,
+    0xb1aa8e5200000000, 0x1eb705e900000000, 0x7bbc7c8000000000,
+    0x018a624500000000, 0x64811b2c00000000, 0xcb9c909700000000,
+    0xae97e9fe00000000, 0x6b5ff8e700000000, 0x0e54818e00000000,
+    0xa1490a3500000000, 0xc442735c00000000, 0xbe746d9900000000,
+    0xdb7f14f000000000, 0x74629f4b00000000, 0x1169e62200000000,
+    0xc108d21a00000000, 0xa403ab7300000000, 0x0b1e20c800000000,
+    0x6e1559a100000000, 0x1423476400000000, 0x71283e0d00000000,
+    0xde35b5b600000000, 0xbb3eccdf00000000, 0xe94e5cd200000000,
+    0x8c4525bb00000000, 0x2358ae0000000000, 0x4653d76900000000,
+    0x3c65c9ac00000000, 0x596eb0c500000000, 0xf6733b7e00000000,
+    0x9378421700000000, 0x4319762f00000000, 0x26120f4600000000,
+    0x890f84fd00000000, 0xec04fd9400000000, 0x9632e35100000000,
+    0xf3399a3800000000, 0x5c24118300000000, 0x392f68ea00000000,
+    0xfce779f300000000, 0x99ec009a00000000, 0x36f18b2100000000,
+    0x53faf24800000000, 0x29ccec8d00000000, 0x4cc795e400000000,
+    0xe3da1e5f00000000, 0x86d1673600000000, 0x56b0530e00000000,
+    0x33bb2a6700000000, 0x9ca6a1dc00000000, 0xf9add8b500000000,
+    0x839bc67000000000, 0xe690bf1900000000, 0x498d34a200000000,
+    0x2c864dcb00000000, 0xc31c179000000000, 0xa6176ef900000000,
+    0x090ae54200000000, 0x6c019c2b00000000, 0x163782ee00000000,
+    0x733cfb8700000000, 0xdc21703c00000000, 0xb92a095500000000,
+    0x694b3d6d00000000, 0x0c40440400000000, 0xa35dcfbf00000000,
+    0xc656b6d600000000, 0xbc60a81300000000, 0xd96bd17a00000000,
+    0x76765ac100000000, 0x137d23a800000000, 0xd6b532b100000000,
+    0xb3be4bd800000000, 0x1ca3c06300000000, 0x79a8b90a00000000,
+    0x039ea7cf00000000, 0x6695dea600000000, 0xc988551d00000000,
+    0xac832c7400000000, 0x7ce2184c00000000, 0x19e9612500000000,
+    0xb6f4ea9e00000000, 0xd3ff93f700000000, 0xa9c98d3200000000,
+    0xccc2f45b00000000, 0x63df7fe000000000, 0x06d4068900000000,
+    0xbdeaca5600000000, 0xd8e1b33f00000000, 0x77fc388400000000,
+    0x12f741ed00000000, 0x68c15f2800000000, 0x0dca264100000000,
+    0xa2d7adfa00000000, 0xc7dcd49300000000, 0x17bde0ab00000000,
+    0x72b699c200000000, 0xddab127900000000, 0xb8a06b1000000000,
+    0xc29675d500000000, 0xa79d0cbc00000000, 0x0880870700000000,
+    0x6d8bfe6e00000000, 0xa843ef7700000000, 0xcd48961e00000000,
+    0x62551da500000000, 0x075e64cc00000000, 0x7d687a0900000000,
+    0x1863036000000000, 0xb77e88db00000000, 0xd275f1b200000000,
+    0x0214c58a00000000, 0x671fbce300000000, 0xc802375800000000,
+    0xad094e3100000000, 0xd73f50f400000000, 0xb234299d00000000,
+    0x1d29a22600000000, 0x7822db4f00000000, 0x97b8811400000000,
+    0xf2b3f87d00000000, 0x5dae73c600000000, 0x38a50aaf00000000,
+    0x4293146a00000000, 0x27986d0300000000, 0x8885e6b800000000,
+    0xed8e9fd100000000, 0x3defabe900000000, 0x58e4d28000000000,
+    0xf7f9593b00000000, 0x92f2205200000000, 0xe8c43e9700000000,
+    0x8dcf47fe00000000, 0x22d2cc4500000000, 0x47d9b52c00000000,
+    0x8211a43500000000, 0xe71add5c00000000, 0x480756e700000000,
+    0x2d0c2f8e00000000, 0x573a314b00000000, 0x3231482200000000,
+    0x9d2cc39900000000, 0xf827baf000000000, 0x28468ec800000000,
+    0x4d4df7a100000000, 0xe2507c1a00000000, 0x875b057300000000,
+    0xfd6d1bb600000000, 0x986662df00000000, 0x377be96400000000,
+    0x5270900d00000000},
+   {0x0000000000000000, 0xdcecb13d00000000, 0xb8d9637b00000000,
+    0x6435d24600000000, 0x70b3c7f600000000, 0xac5f76cb00000000,
+    0xc86aa48d00000000, 0x148615b000000000, 0xa160fe3600000000,
+    0x7d8c4f0b00000000, 0x19b99d4d00000000, 0xc5552c7000000000,
+    0xd1d339c000000000, 0x0d3f88fd00000000, 0x690a5abb00000000,
+    0xb5e6eb8600000000, 0x42c1fc6d00000000, 0x9e2d4d5000000000,
+    0xfa189f1600000000, 0x26f42e2b00000000, 0x32723b9b00000000,
+    0xee9e8aa600000000, 0x8aab58e000000000, 0x5647e9dd00000000,
+    0xe3a1025b00000000, 0x3f4db36600000000, 0x5b78612000000000,
+    0x8794d01d00000000, 0x9312c5ad00000000, 0x4ffe749000000000,
+    0x2bcba6d600000000, 0xf72717eb00000000, 0x8482f9db00000000,
+    0x586e48e600000000, 0x3c5b9aa000000000, 0xe0b72b9d00000000,
+    0xf4313e2d00000000, 0x28dd8f1000000000, 0x4ce85d5600000000,
+    0x9004ec6b00000000, 0x25e207ed00000000, 0xf90eb6d000000000,
+    0x9d3b649600000000, 0x41d7d5ab00000000, 0x5551c01b00000000,
+    0x89bd712600000000, 0xed88a36000000000, 0x3164125d00000000,
+    0xc64305b600000000, 0x1aafb48b00000000, 0x7e9a66cd00000000,
+    0xa276d7f000000000, 0xb6f0c24000000000, 0x6a1c737d00000000,
+    0x0e29a13b00000000, 0xd2c5100600000000, 0x6723fb8000000000,
+    0xbbcf4abd00000000, 0xdffa98fb00000000, 0x031629c600000000,
+    0x17903c7600000000, 0xcb7c8d4b00000000, 0xaf495f0d00000000,
+    0x73a5ee3000000000, 0x4903826c00000000, 0x95ef335100000000,
+    0xf1dae11700000000, 0x2d36502a00000000, 0x39b0459a00000000,
+    0xe55cf4a700000000, 0x816926e100000000, 0x5d8597dc00000000,
+    0xe8637c5a00000000, 0x348fcd6700000000, 0x50ba1f2100000000,
+    0x8c56ae1c00000000, 0x98d0bbac00000000, 0x443c0a9100000000,
+    0x2009d8d700000000, 0xfce569ea00000000, 0x0bc27e0100000000,
+    0xd72ecf3c00000000, 0xb31b1d7a00000000, 0x6ff7ac4700000000,
+    0x7b71b9f700000000, 0xa79d08ca00000000, 0xc3a8da8c00000000,
+    0x1f446bb100000000, 0xaaa2803700000000, 0x764e310a00000000,
+    0x127be34c00000000, 0xce97527100000000, 0xda1147c100000000,
+    0x06fdf6fc00000000, 0x62c824ba00000000, 0xbe24958700000000,
+    0xcd817bb700000000, 0x116dca8a00000000, 0x755818cc00000000,
+    0xa9b4a9f100000000, 0xbd32bc4100000000, 0x61de0d7c00000000,
+    0x05ebdf3a00000000, 0xd9076e0700000000, 0x6ce1858100000000,
+    0xb00d34bc00000000, 0xd438e6fa00000000, 0x08d457c700000000,
+    0x1c52427700000000, 0xc0bef34a00000000, 0xa48b210c00000000,
+    0x7867903100000000, 0x8f4087da00000000, 0x53ac36e700000000,
+    0x3799e4a100000000, 0xeb75559c00000000, 0xfff3402c00000000,
+    0x231ff11100000000, 0x472a235700000000, 0x9bc6926a00000000,
+    0x2e2079ec00000000, 0xf2ccc8d100000000, 0x96f91a9700000000,
+    0x4a15abaa00000000, 0x5e93be1a00000000, 0x827f0f2700000000,
+    0xe64add6100000000, 0x3aa66c5c00000000, 0x920604d900000000,
+    0x4eeab5e400000000, 0x2adf67a200000000, 0xf633d69f00000000,
+    0xe2b5c32f00000000, 0x3e59721200000000, 0x5a6ca05400000000,
+    0x8680116900000000, 0x3366faef00000000, 0xef8a4bd200000000,
+    0x8bbf999400000000, 0x575328a900000000, 0x43d53d1900000000,
+    0x9f398c2400000000, 0xfb0c5e6200000000, 0x27e0ef5f00000000,
+    0xd0c7f8b400000000, 0x0c2b498900000000, 0x681e9bcf00000000,
+    0xb4f22af200000000, 0xa0743f4200000000, 0x7c988e7f00000000,
+    0x18ad5c3900000000, 0xc441ed0400000000, 0x71a7068200000000,
+    0xad4bb7bf00000000, 0xc97e65f900000000, 0x1592d4c400000000,
+    0x0114c17400000000, 0xddf8704900000000, 0xb9cda20f00000000,
+    0x6521133200000000, 0x1684fd0200000000, 0xca684c3f00000000,
+    0xae5d9e7900000000, 0x72b12f4400000000, 0x66373af400000000,
+    0xbadb8bc900000000, 0xdeee598f00000000, 0x0202e8b200000000,
+    0xb7e4033400000000, 0x6b08b20900000000, 0x0f3d604f00000000,
+    0xd3d1d17200000000, 0xc757c4c200000000, 0x1bbb75ff00000000,
+    0x7f8ea7b900000000, 0xa362168400000000, 0x5445016f00000000,
+    0x88a9b05200000000, 0xec9c621400000000, 0x3070d32900000000,
+    0x24f6c69900000000, 0xf81a77a400000000, 0x9c2fa5e200000000,
+    0x40c314df00000000, 0xf525ff5900000000, 0x29c94e6400000000,
+    0x4dfc9c2200000000, 0x91102d1f00000000, 0x859638af00000000,
+    0x597a899200000000, 0x3d4f5bd400000000, 0xe1a3eae900000000,
+    0xdb0586b500000000, 0x07e9378800000000, 0x63dce5ce00000000,
+    0xbf3054f300000000, 0xabb6414300000000, 0x775af07e00000000,
+    0x136f223800000000, 0xcf83930500000000, 0x7a65788300000000,
+    0xa689c9be00000000, 0xc2bc1bf800000000, 0x1e50aac500000000,
+    0x0ad6bf7500000000, 0xd63a0e4800000000, 0xb20fdc0e00000000,
+    0x6ee36d3300000000, 0x99c47ad800000000, 0x4528cbe500000000,
+    0x211d19a300000000, 0xfdf1a89e00000000, 0xe977bd2e00000000,
+    0x359b0c1300000000, 0x51aede5500000000, 0x8d426f6800000000,
+    0x38a484ee00000000, 0xe44835d300000000, 0x807de79500000000,
+    0x5c9156a800000000, 0x4817431800000000, 0x94fbf22500000000,
+    0xf0ce206300000000, 0x2c22915e00000000, 0x5f877f6e00000000,
+    0x836bce5300000000, 0xe75e1c1500000000, 0x3bb2ad2800000000,
+    0x2f34b89800000000, 0xf3d809a500000000, 0x97eddbe300000000,
+    0x4b016ade00000000, 0xfee7815800000000, 0x220b306500000000,
+    0x463ee22300000000, 0x9ad2531e00000000, 0x8e5446ae00000000,
+    0x52b8f79300000000, 0x368d25d500000000, 0xea6194e800000000,
+    0x1d46830300000000, 0xc1aa323e00000000, 0xa59fe07800000000,
+    0x7973514500000000, 0x6df544f500000000, 0xb119f5c800000000,
+    0xd52c278e00000000, 0x09c096b300000000, 0xbc267d3500000000,
+    0x60cacc0800000000, 0x04ff1e4e00000000, 0xd813af7300000000,
+    0xcc95bac300000000, 0x10790bfe00000000, 0x744cd9b800000000,
+    0xa8a0688500000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
+    0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
+    0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
+    0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
+    0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
+    0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
+    0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
+    0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
+    0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
+    0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
+    0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
+    0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
+    0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
+    0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
+    0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
+    0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
+    0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
+    0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
+    0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
+    0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
+    0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
+    0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
+    0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
+    0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
+    0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
+    0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
+    0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
+    0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
+    0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
+    0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
+    0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
+    0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
+    0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
+    0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
+    0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
+    0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
+    0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
+    0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
+    0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
+    0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
+    0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
+    0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
+    0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
+    0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
+    0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
+    0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
+    0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
+    0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
+    0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
+    0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
+    0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
+    0x09cd8551},
+   {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
+    0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
+    0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
+    0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
+    0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
+    0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
+    0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
+    0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
+    0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
+    0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
+    0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
+    0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
+    0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
+    0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
+    0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
+    0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
+    0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
+    0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
+    0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
+    0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
+    0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
+    0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
+    0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
+    0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
+    0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
+    0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
+    0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
+    0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
+    0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
+    0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
+    0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
+    0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
+    0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
+    0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
+    0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
+    0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
+    0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
+    0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
+    0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
+    0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
+    0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
+    0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
+    0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
+    0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
+    0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
+    0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
+    0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
+    0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
+    0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
+    0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
+    0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
+    0x7bc97a0c},
+   {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
+    0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
+    0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
+    0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
+    0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
+    0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
+    0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
+    0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
+    0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
+    0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
+    0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
+    0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
+    0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
+    0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
+    0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
+    0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
+    0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
+    0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
+    0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
+    0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
+    0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
+    0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
+    0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
+    0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
+    0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
+    0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
+    0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
+    0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
+    0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
+    0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
+    0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
+    0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
+    0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
+    0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
+    0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
+    0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
+    0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
+    0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
+    0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
+    0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
+    0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
+    0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
+    0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
+    0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
+    0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
+    0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
+    0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
+    0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
+    0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
+    0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
+    0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
+    0x7851a2ca},
+   {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
+    0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
+    0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
+    0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
+    0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
+    0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
+    0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
+    0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
+    0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
+    0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
+    0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
+    0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
+    0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
+    0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
+    0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
+    0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
+    0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
+    0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
+    0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
+    0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
+    0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
+    0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
+    0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
+    0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
+    0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
+    0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
+    0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
+    0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
+    0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
+    0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
+    0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
+    0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
+    0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
+    0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
+    0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
+    0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
+    0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
+    0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
+    0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
+    0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
+    0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
+    0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
+    0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
+    0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
+    0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
+    0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
+    0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
+    0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
+    0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
+    0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
+    0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
+    0x566b6848}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x9e83da9f, 0x7d01c4e4, 0xe3821e7b, 0xbb04f912,
+    0x2587238d, 0xc6053df6, 0x5886e769, 0x7609f225, 0xe88a28ba,
+    0x0b0836c1, 0x958bec5e, 0xcd0d0b37, 0x538ed1a8, 0xb00ccfd3,
+    0x2e8f154c, 0xec12e44b, 0x72913ed4, 0x911320af, 0x0f90fa30,
+    0x57161d59, 0xc995c7c6, 0x2a17d9bd, 0xb4940322, 0x9a1b166e,
+    0x0498ccf1, 0xe71ad28a, 0x79990815, 0x211fef7c, 0xbf9c35e3,
+    0x5c1e2b98, 0xc29df107, 0xd825c897, 0x46a61208, 0xa5240c73,
+    0x3ba7d6ec, 0x63213185, 0xfda2eb1a, 0x1e20f561, 0x80a32ffe,
+    0xae2c3ab2, 0x30afe02d, 0xd32dfe56, 0x4dae24c9, 0x1528c3a0,
+    0x8bab193f, 0x68290744, 0xf6aadddb, 0x34372cdc, 0xaab4f643,
+    0x4936e838, 0xd7b532a7, 0x8f33d5ce, 0x11b00f51, 0xf232112a,
+    0x6cb1cbb5, 0x423edef9, 0xdcbd0466, 0x3f3f1a1d, 0xa1bcc082,
+    0xf93a27eb, 0x67b9fd74, 0x843be30f, 0x1ab83990, 0xf14de1f4,
+    0x6fce3b6b, 0x8c4c2510, 0x12cfff8f, 0x4a4918e6, 0xd4cac279,
+    0x3748dc02, 0xa9cb069d, 0x874413d1, 0x19c7c94e, 0xfa45d735,
+    0x64c60daa, 0x3c40eac3, 0xa2c3305c, 0x41412e27, 0xdfc2f4b8,
+    0x1d5f05bf, 0x83dcdf20, 0x605ec15b, 0xfedd1bc4, 0xa65bfcad,
+    0x38d82632, 0xdb5a3849, 0x45d9e2d6, 0x6b56f79a, 0xf5d52d05,
+    0x1657337e, 0x88d4e9e1, 0xd0520e88, 0x4ed1d417, 0xad53ca6c,
+    0x33d010f3, 0x29682963, 0xb7ebf3fc, 0x5469ed87, 0xcaea3718,
+    0x926cd071, 0x0cef0aee, 0xef6d1495, 0x71eece0a, 0x5f61db46,
+    0xc1e201d9, 0x22601fa2, 0xbce3c53d, 0xe4652254, 0x7ae6f8cb,
+    0x9964e6b0, 0x07e73c2f, 0xc57acd28, 0x5bf917b7, 0xb87b09cc,
+    0x26f8d353, 0x7e7e343a, 0xe0fdeea5, 0x037ff0de, 0x9dfc2a41,
+    0xb3733f0d, 0x2df0e592, 0xce72fbe9, 0x50f12176, 0x0877c61f,
+    0x96f41c80, 0x757602fb, 0xebf5d864, 0xa39db332, 0x3d1e69ad,
+    0xde9c77d6, 0x401fad49, 0x18994a20, 0x861a90bf, 0x65988ec4,
+    0xfb1b545b, 0xd5944117, 0x4b179b88, 0xa89585f3, 0x36165f6c,
+    0x6e90b805, 0xf013629a, 0x13917ce1, 0x8d12a67e, 0x4f8f5779,
+    0xd10c8de6, 0x328e939d, 0xac0d4902, 0xf48bae6b, 0x6a0874f4,
+    0x898a6a8f, 0x1709b010, 0x3986a55c, 0xa7057fc3, 0x448761b8,
+    0xda04bb27, 0x82825c4e, 0x1c0186d1, 0xff8398aa, 0x61004235,
+    0x7bb87ba5, 0xe53ba13a, 0x06b9bf41, 0x983a65de, 0xc0bc82b7,
+    0x5e3f5828, 0xbdbd4653, 0x233e9ccc, 0x0db18980, 0x9332531f,
+    0x70b04d64, 0xee3397fb, 0xb6b57092, 0x2836aa0d, 0xcbb4b476,
+    0x55376ee9, 0x97aa9fee, 0x09294571, 0xeaab5b0a, 0x74288195,
+    0x2cae66fc, 0xb22dbc63, 0x51afa218, 0xcf2c7887, 0xe1a36dcb,
+    0x7f20b754, 0x9ca2a92f, 0x022173b0, 0x5aa794d9, 0xc4244e46,
+    0x27a6503d, 0xb9258aa2, 0x52d052c6, 0xcc538859, 0x2fd19622,
+    0xb1524cbd, 0xe9d4abd4, 0x7757714b, 0x94d56f30, 0x0a56b5af,
+    0x24d9a0e3, 0xba5a7a7c, 0x59d86407, 0xc75bbe98, 0x9fdd59f1,
+    0x015e836e, 0xe2dc9d15, 0x7c5f478a, 0xbec2b68d, 0x20416c12,
+    0xc3c37269, 0x5d40a8f6, 0x05c64f9f, 0x9b459500, 0x78c78b7b,
+    0xe64451e4, 0xc8cb44a8, 0x56489e37, 0xb5ca804c, 0x2b495ad3,
+    0x73cfbdba, 0xed4c6725, 0x0ece795e, 0x904da3c1, 0x8af59a51,
+    0x147640ce, 0xf7f45eb5, 0x6977842a, 0x31f16343, 0xaf72b9dc,
+    0x4cf0a7a7, 0xd2737d38, 0xfcfc6874, 0x627fb2eb, 0x81fdac90,
+    0x1f7e760f, 0x47f89166, 0xd97b4bf9, 0x3af95582, 0xa47a8f1d,
+    0x66e77e1a, 0xf864a485, 0x1be6bafe, 0x85656061, 0xdde38708,
+    0x43605d97, 0xa0e243ec, 0x3e619973, 0x10ee8c3f, 0x8e6d56a0,
+    0x6def48db, 0xf36c9244, 0xabea752d, 0x3569afb2, 0xd6ebb1c9,
+    0x48686b56},
+   {0x00000000, 0xc0642817, 0x80c9502e, 0x40ad7839, 0x0093a15c,
+    0xc0f7894b, 0x805af172, 0x403ed965, 0x002643b9, 0xc0426bae,
+    0x80ef1397, 0x408b3b80, 0x00b5e2e5, 0xc0d1caf2, 0x807cb2cb,
+    0x40189adc, 0x414af7a9, 0x812edfbe, 0xc183a787, 0x01e78f90,
+    0x41d956f5, 0x81bd7ee2, 0xc11006db, 0x01742ecc, 0x416cb410,
+    0x81089c07, 0xc1a5e43e, 0x01c1cc29, 0x41ff154c, 0x819b3d5b,
+    0xc1364562, 0x01526d75, 0xc3929f88, 0x03f6b79f, 0x435bcfa6,
+    0x833fe7b1, 0xc3013ed4, 0x036516c3, 0x43c86efa, 0x83ac46ed,
+    0xc3b4dc31, 0x03d0f426, 0x437d8c1f, 0x8319a408, 0xc3277d6d,
+    0x0343557a, 0x43ee2d43, 0x838a0554, 0x82d86821, 0x42bc4036,
+    0x0211380f, 0xc2751018, 0x824bc97d, 0x422fe16a, 0x02829953,
+    0xc2e6b144, 0x82fe2b98, 0x429a038f, 0x02377bb6, 0xc25353a1,
+    0x826d8ac4, 0x4209a2d3, 0x02a4daea, 0xc2c0f2fd, 0xc7234eca,
+    0x074766dd, 0x47ea1ee4, 0x878e36f3, 0xc7b0ef96, 0x07d4c781,
+    0x4779bfb8, 0x871d97af, 0xc7050d73, 0x07612564, 0x47cc5d5d,
+    0x87a8754a, 0xc796ac2f, 0x07f28438, 0x475ffc01, 0x873bd416,
+    0x8669b963, 0x460d9174, 0x06a0e94d, 0xc6c4c15a, 0x86fa183f,
+    0x469e3028, 0x06334811, 0xc6576006, 0x864ffada, 0x462bd2cd,
+    0x0686aaf4, 0xc6e282e3, 0x86dc5b86, 0x46b87391, 0x06150ba8,
+    0xc67123bf, 0x04b1d142, 0xc4d5f955, 0x8478816c, 0x441ca97b,
+    0x0422701e, 0xc4465809, 0x84eb2030, 0x448f0827, 0x049792fb,
+    0xc4f3baec, 0x845ec2d5, 0x443aeac2, 0x040433a7, 0xc4601bb0,
+    0x84cd6389, 0x44a94b9e, 0x45fb26eb, 0x859f0efc, 0xc53276c5,
+    0x05565ed2, 0x456887b7, 0x850cafa0, 0xc5a1d799, 0x05c5ff8e,
+    0x45dd6552, 0x85b94d45, 0xc514357c, 0x05701d6b, 0x454ec40e,
+    0x852aec19, 0xc5879420, 0x05e3bc37, 0xcf41ed4f, 0x0f25c558,
+    0x4f88bd61, 0x8fec9576, 0xcfd24c13, 0x0fb66404, 0x4f1b1c3d,
+    0x8f7f342a, 0xcf67aef6, 0x0f0386e1, 0x4faefed8, 0x8fcad6cf,
+    0xcff40faa, 0x0f9027bd, 0x4f3d5f84, 0x8f597793, 0x8e0b1ae6,
+    0x4e6f32f1, 0x0ec24ac8, 0xcea662df, 0x8e98bbba, 0x4efc93ad,
+    0x0e51eb94, 0xce35c383, 0x8e2d595f, 0x4e497148, 0x0ee40971,
+    0xce802166, 0x8ebef803, 0x4edad014, 0x0e77a82d, 0xce13803a,
+    0x0cd372c7, 0xccb75ad0, 0x8c1a22e9, 0x4c7e0afe, 0x0c40d39b,
+    0xcc24fb8c, 0x8c8983b5, 0x4cedaba2, 0x0cf5317e, 0xcc911969,
+    0x8c3c6150, 0x4c584947, 0x0c669022, 0xcc02b835, 0x8cafc00c,
+    0x4ccbe81b, 0x4d99856e, 0x8dfdad79, 0xcd50d540, 0x0d34fd57,
+    0x4d0a2432, 0x8d6e0c25, 0xcdc3741c, 0x0da75c0b, 0x4dbfc6d7,
+    0x8ddbeec0, 0xcd7696f9, 0x0d12beee, 0x4d2c678b, 0x8d484f9c,
+    0xcde537a5, 0x0d811fb2, 0x0862a385, 0xc8068b92, 0x88abf3ab,
+    0x48cfdbbc, 0x08f102d9, 0xc8952ace, 0x883852f7, 0x485c7ae0,
+    0x0844e03c, 0xc820c82b, 0x888db012, 0x48e99805, 0x08d74160,
+    0xc8b36977, 0x881e114e, 0x487a3959, 0x4928542c, 0x894c7c3b,
+    0xc9e10402, 0x09852c15, 0x49bbf570, 0x89dfdd67, 0xc972a55e,
+    0x09168d49, 0x490e1795, 0x896a3f82, 0xc9c747bb, 0x09a36fac,
+    0x499db6c9, 0x89f99ede, 0xc954e6e7, 0x0930cef0, 0xcbf03c0d,
+    0x0b94141a, 0x4b396c23, 0x8b5d4434, 0xcb639d51, 0x0b07b546,
+    0x4baacd7f, 0x8bcee568, 0xcbd67fb4, 0x0bb257a3, 0x4b1f2f9a,
+    0x8b7b078d, 0xcb45dee8, 0x0b21f6ff, 0x4b8c8ec6, 0x8be8a6d1,
+    0x8abacba4, 0x4adee3b3, 0x0a739b8a, 0xca17b39d, 0x8a296af8,
+    0x4a4d42ef, 0x0ae03ad6, 0xca8412c1, 0x8a9c881d, 0x4af8a00a,
+    0x0a55d833, 0xca31f024, 0x8a0f2941, 0x4a6b0156, 0x0ac6796f,
+    0xcaa25178},
+   {0x00000000, 0xd4ea739b, 0xe9d396ed, 0x3d39e576, 0x93a15c00,
+    0x474b2f9b, 0x7a72caed, 0xae98b976, 0x2643b900, 0xf2a9ca9b,
+    0xcf902fed, 0x1b7a5c76, 0xb5e2e500, 0x6108969b, 0x5c3173ed,
+    0x88db0076, 0x4c867201, 0x986c019a, 0xa555e4ec, 0x71bf9777,
+    0xdf272e01, 0x0bcd5d9a, 0x36f4b8ec, 0xe21ecb77, 0x6ac5cb01,
+    0xbe2fb89a, 0x83165dec, 0x57fc2e77, 0xf9649701, 0x2d8ee49a,
+    0x10b701ec, 0xc45d7277, 0x980ce502, 0x4ce69699, 0x71df73ef,
+    0xa5350074, 0x0badb902, 0xdf47ca99, 0xe27e2fef, 0x36945c74,
+    0xbe4f5c02, 0x6aa52f99, 0x579ccaef, 0x8376b974, 0x2dee0002,
+    0xf9047399, 0xc43d96ef, 0x10d7e574, 0xd48a9703, 0x0060e498,
+    0x3d5901ee, 0xe9b37275, 0x472bcb03, 0x93c1b898, 0xaef85dee,
+    0x7a122e75, 0xf2c92e03, 0x26235d98, 0x1b1ab8ee, 0xcff0cb75,
+    0x61687203, 0xb5820198, 0x88bbe4ee, 0x5c519775, 0x3019ca05,
+    0xe4f3b99e, 0xd9ca5ce8, 0x0d202f73, 0xa3b89605, 0x7752e59e,
+    0x4a6b00e8, 0x9e817373, 0x165a7305, 0xc2b0009e, 0xff89e5e8,
+    0x2b639673, 0x85fb2f05, 0x51115c9e, 0x6c28b9e8, 0xb8c2ca73,
+    0x7c9fb804, 0xa875cb9f, 0x954c2ee9, 0x41a65d72, 0xef3ee404,
+    0x3bd4979f, 0x06ed72e9, 0xd2070172, 0x5adc0104, 0x8e36729f,
+    0xb30f97e9, 0x67e5e472, 0xc97d5d04, 0x1d972e9f, 0x20aecbe9,
+    0xf444b872, 0xa8152f07, 0x7cff5c9c, 0x41c6b9ea, 0x952cca71,
+    0x3bb47307, 0xef5e009c, 0xd267e5ea, 0x068d9671, 0x8e569607,
+    0x5abce59c, 0x678500ea, 0xb36f7371, 0x1df7ca07, 0xc91db99c,
+    0xf4245cea, 0x20ce2f71, 0xe4935d06, 0x30792e9d, 0x0d40cbeb,
+    0xd9aab870, 0x77320106, 0xa3d8729d, 0x9ee197eb, 0x4a0be470,
+    0xc2d0e406, 0x163a979d, 0x2b0372eb, 0xffe90170, 0x5171b806,
+    0x859bcb9d, 0xb8a22eeb, 0x6c485d70, 0x6032940b, 0xb4d8e790,
+    0x89e102e6, 0x5d0b717d, 0xf393c80b, 0x2779bb90, 0x1a405ee6,
+    0xceaa2d7d, 0x46712d0b, 0x929b5e90, 0xafa2bbe6, 0x7b48c87d,
+    0xd5d0710b, 0x013a0290, 0x3c03e7e6, 0xe8e9947d, 0x2cb4e60a,
+    0xf85e9591, 0xc56770e7, 0x118d037c, 0xbf15ba0a, 0x6bffc991,
+    0x56c62ce7, 0x822c5f7c, 0x0af75f0a, 0xde1d2c91, 0xe324c9e7,
+    0x37ceba7c, 0x9956030a, 0x4dbc7091, 0x708595e7, 0xa46fe67c,
+    0xf83e7109, 0x2cd40292, 0x11ede7e4, 0xc507947f, 0x6b9f2d09,
+    0xbf755e92, 0x824cbbe4, 0x56a6c87f, 0xde7dc809, 0x0a97bb92,
+    0x37ae5ee4, 0xe3442d7f, 0x4ddc9409, 0x9936e792, 0xa40f02e4,
+    0x70e5717f, 0xb4b80308, 0x60527093, 0x5d6b95e5, 0x8981e67e,
+    0x27195f08, 0xf3f32c93, 0xcecac9e5, 0x1a20ba7e, 0x92fbba08,
+    0x4611c993, 0x7b282ce5, 0xafc25f7e, 0x015ae608, 0xd5b09593,
+    0xe88970e5, 0x3c63037e, 0x502b5e0e, 0x84c12d95, 0xb9f8c8e3,
+    0x6d12bb78, 0xc38a020e, 0x17607195, 0x2a5994e3, 0xfeb3e778,
+    0x7668e70e, 0xa2829495, 0x9fbb71e3, 0x4b510278, 0xe5c9bb0e,
+    0x3123c895, 0x0c1a2de3, 0xd8f05e78, 0x1cad2c0f, 0xc8475f94,
+    0xf57ebae2, 0x2194c979, 0x8f0c700f, 0x5be60394, 0x66dfe6e2,
+    0xb2359579, 0x3aee950f, 0xee04e694, 0xd33d03e2, 0x07d77079,
+    0xa94fc90f, 0x7da5ba94, 0x409c5fe2, 0x94762c79, 0xc827bb0c,
+    0x1ccdc897, 0x21f42de1, 0xf51e5e7a, 0x5b86e70c, 0x8f6c9497,
+    0xb25571e1, 0x66bf027a, 0xee64020c, 0x3a8e7197, 0x07b794e1,
+    0xd35de77a, 0x7dc55e0c, 0xa92f2d97, 0x9416c8e1, 0x40fcbb7a,
+    0x84a1c90d, 0x504bba96, 0x6d725fe0, 0xb9982c7b, 0x1700950d,
+    0xc3eae696, 0xfed303e0, 0x2a39707b, 0xa2e2700d, 0x76080396,
+    0x4b31e6e0, 0x9fdb957b, 0x31432c0d, 0xe5a95f96, 0xd890bae0,
+    0x0c7ac97b},
+   {0x00000000, 0x27652581, 0x0fcc3bd9, 0x28a91e58, 0x5f9e0669,
+    0x78fb23e8, 0x50523db0, 0x77371831, 0xbe3c0dd2, 0x99592853,
+    0xb1f0360b, 0x9695138a, 0xe1a20bbb, 0xc6c72e3a, 0xee6e3062,
+    0xc90b15e3, 0x3d7f6b7f, 0x1a1a4efe, 0x32b350a6, 0x15d67527,
+    0x62e16d16, 0x45844897, 0x6d2d56cf, 0x4a48734e, 0x834366ad,
+    0xa426432c, 0x8c8f5d74, 0xabea78f5, 0xdcdd60c4, 0xfbb84545,
+    0xd3115b1d, 0xf4747e9c, 0x7afed6fe, 0x5d9bf37f, 0x7532ed27,
+    0x5257c8a6, 0x2560d097, 0x0205f516, 0x2aaceb4e, 0x0dc9cecf,
+    0xc4c2db2c, 0xe3a7fead, 0xcb0ee0f5, 0xec6bc574, 0x9b5cdd45,
+    0xbc39f8c4, 0x9490e69c, 0xb3f5c31d, 0x4781bd81, 0x60e49800,
+    0x484d8658, 0x6f28a3d9, 0x181fbbe8, 0x3f7a9e69, 0x17d38031,
+    0x30b6a5b0, 0xf9bdb053, 0xded895d2, 0xf6718b8a, 0xd114ae0b,
+    0xa623b63a, 0x814693bb, 0xa9ef8de3, 0x8e8aa862, 0xb5fadc26,
+    0x929ff9a7, 0xba36e7ff, 0x9d53c27e, 0xea64da4f, 0xcd01ffce,
+    0xe5a8e196, 0xc2cdc417, 0x0bc6d1f4, 0x2ca3f475, 0x040aea2d,
+    0x236fcfac, 0x5458d79d, 0x733df21c, 0x5b94ec44, 0x7cf1c9c5,
+    0x8885b759, 0xafe092d8, 0x87498c80, 0xa02ca901, 0xd71bb130,
+    0xf07e94b1, 0xd8d78ae9, 0xffb2af68, 0x36b9ba8b, 0x11dc9f0a,
+    0x39758152, 0x1e10a4d3, 0x6927bce2, 0x4e429963, 0x66eb873b,
+    0x418ea2ba, 0xcf040ad8, 0xe8612f59, 0xc0c83101, 0xe7ad1480,
+    0x909a0cb1, 0xb7ff2930, 0x9f563768, 0xb83312e9, 0x7138070a,
+    0x565d228b, 0x7ef43cd3, 0x59911952, 0x2ea60163, 0x09c324e2,
+    0x216a3aba, 0x060f1f3b, 0xf27b61a7, 0xd51e4426, 0xfdb75a7e,
+    0xdad27fff, 0xade567ce, 0x8a80424f, 0xa2295c17, 0x854c7996,
+    0x4c476c75, 0x6b2249f4, 0x438b57ac, 0x64ee722d, 0x13d96a1c,
+    0x34bc4f9d, 0x1c1551c5, 0x3b707444, 0x6af5b94d, 0x4d909ccc,
+    0x65398294, 0x425ca715, 0x356bbf24, 0x120e9aa5, 0x3aa784fd,
+    0x1dc2a17c, 0xd4c9b49f, 0xf3ac911e, 0xdb058f46, 0xfc60aac7,
+    0x8b57b2f6, 0xac329777, 0x849b892f, 0xa3feacae, 0x578ad232,
+    0x70eff7b3, 0x5846e9eb, 0x7f23cc6a, 0x0814d45b, 0x2f71f1da,
+    0x07d8ef82, 0x20bdca03, 0xe9b6dfe0, 0xced3fa61, 0xe67ae439,
+    0xc11fc1b8, 0xb628d989, 0x914dfc08, 0xb9e4e250, 0x9e81c7d1,
+    0x100b6fb3, 0x376e4a32, 0x1fc7546a, 0x38a271eb, 0x4f9569da,
+    0x68f04c5b, 0x40595203, 0x673c7782, 0xae376261, 0x895247e0,
+    0xa1fb59b8, 0x869e7c39, 0xf1a96408, 0xd6cc4189, 0xfe655fd1,
+    0xd9007a50, 0x2d7404cc, 0x0a11214d, 0x22b83f15, 0x05dd1a94,
+    0x72ea02a5, 0x558f2724, 0x7d26397c, 0x5a431cfd, 0x9348091e,
+    0xb42d2c9f, 0x9c8432c7, 0xbbe11746, 0xccd60f77, 0xebb32af6,
+    0xc31a34ae, 0xe47f112f, 0xdf0f656b, 0xf86a40ea, 0xd0c35eb2,
+    0xf7a67b33, 0x80916302, 0xa7f44683, 0x8f5d58db, 0xa8387d5a,
+    0x613368b9, 0x46564d38, 0x6eff5360, 0x499a76e1, 0x3ead6ed0,
+    0x19c84b51, 0x31615509, 0x16047088, 0xe2700e14, 0xc5152b95,
+    0xedbc35cd, 0xcad9104c, 0xbdee087d, 0x9a8b2dfc, 0xb22233a4,
+    0x95471625, 0x5c4c03c6, 0x7b292647, 0x5380381f, 0x74e51d9e,
+    0x03d205af, 0x24b7202e, 0x0c1e3e76, 0x2b7b1bf7, 0xa5f1b395,
+    0x82949614, 0xaa3d884c, 0x8d58adcd, 0xfa6fb5fc, 0xdd0a907d,
+    0xf5a38e25, 0xd2c6aba4, 0x1bcdbe47, 0x3ca89bc6, 0x1401859e,
+    0x3364a01f, 0x4453b82e, 0x63369daf, 0x4b9f83f7, 0x6cfaa676,
+    0x988ed8ea, 0xbfebfd6b, 0x9742e333, 0xb027c6b2, 0xc710de83,
+    0xe075fb02, 0xc8dce55a, 0xefb9c0db, 0x26b2d538, 0x01d7f0b9,
+    0x297eeee1, 0x0e1bcb60, 0x792cd351, 0x5e49f6d0, 0x76e0e888,
+    0x5185cd09}};
+
+#endif
+
+#endif
+
+#endif
+
+local const z_crc_t FAR x2n_table[] = {
+    0x40000000, 0x20000000, 0x08000000, 0x00800000, 0x00008000,
+    0xedb88320, 0xb1e6b092, 0xa06a2517, 0xed627dae, 0x88d14467,
+    0xd7bbfe6a, 0xec447f11, 0x8e7ea170, 0x6427800e, 0x4d47bae0,
+    0x09fe548f, 0x83852d0f, 0x30362f1a, 0x7b5a9cc3, 0x31fec169,
+    0x9fec022a, 0x6c8dedc4, 0x15d6874d, 0x5fde7a4e, 0xbad90e37,
+    0x2e4e5eef, 0x4eaba214, 0xa8a472c0, 0x429a969e, 0x148d302a,
+    0xc40ba6d0, 0xc4e22c3c};
diff --git a/libs/zlib/deflate.c b/libs/zlib/deflate.c
index 1ec761448d..012ea8148e 100644
--- a/libs/zlib/deflate.c
+++ b/libs/zlib/deflate.c
@@ -1,5 +1,5 @@
 /* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -52,7 +52,7 @@
 #include "deflate.h"
 
 const char deflate_copyright[] =
-   " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler ";
+   " deflate 1.3.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -60,9 +60,6 @@ const char deflate_copyright[] =
   copyright string in the executable of your product.
  */
 
-/* ===========================================================================
- *  Function prototypes.
- */
 typedef enum {
     need_more,      /* block not completed, need more input or more output */
     block_done,     /* block flush performed */
@@ -70,35 +67,16 @@ typedef enum {
     finish_done     /* finish done, accept no more input or output */
 } block_state;
 
-typedef block_state (*compress_func) OF((deflate_state *s, int flush));
+typedef block_state (*compress_func)(deflate_state *s, int flush);
 /* Compression function. Returns the block state after the call. */
 
-local int deflateStateCheck      OF((z_streamp strm));
-local void slide_hash     OF((deflate_state *s));
-local void fill_window    OF((deflate_state *s));
-local block_state deflate_stored OF((deflate_state *s, int flush));
-local block_state deflate_fast   OF((deflate_state *s, int flush));
+local block_state deflate_stored(deflate_state *s, int flush);
+local block_state deflate_fast(deflate_state *s, int flush);
 #ifndef FASTEST
-local block_state deflate_slow   OF((deflate_state *s, int flush));
-#endif
-local block_state deflate_rle    OF((deflate_state *s, int flush));
-local block_state deflate_huff   OF((deflate_state *s, int flush));
-local void lm_init        OF((deflate_state *s));
-local void putShortMSB    OF((deflate_state *s, uInt b));
-local void flush_pending  OF((z_streamp strm));
-local unsigned read_buf   OF((z_streamp strm, Bytef *buf, unsigned size));
-#ifdef ASMV
-#  pragma message("Assembler code may have bugs -- use at your own risk")
-      void match_init OF((void)); /* asm code initialization */
-      uInt longest_match  OF((deflate_state *s, IPos cur_match));
-#else
-local uInt longest_match  OF((deflate_state *s, IPos cur_match));
-#endif
-
-#ifdef ZLIB_DEBUG
-local  void check_match OF((deflate_state *s, IPos start, IPos match,
-                            int length));
+local block_state deflate_slow(deflate_state *s, int flush);
 #endif
+local block_state deflate_rle(deflate_state *s, int flush);
+local block_state deflate_huff(deflate_state *s, int flush);
 
 /* ===========================================================================
  * Local data
@@ -160,7 +138,7 @@ local const config configuration_table[10] = {
  *    characters, so that a running hash key can be computed from the previous
  *    key instead of complete recalculation each time.
  */
-#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
+#define UPDATE_HASH(s,h,c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask)
 
 
 /* ===========================================================================
@@ -190,17 +168,23 @@ local const config configuration_table[10] = {
  * prev[] will be initialized on the fly.
  */
 #define CLEAR_HASH(s) \
-    s->head[s->hash_size-1] = NIL; \
-    zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
+    do { \
+        s->head[s->hash_size - 1] = NIL; \
+        zmemzero((Bytef *)s->head, \
+                 (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \
+    } while (0)
 
 /* ===========================================================================
  * Slide the hash table when sliding the window down (could be avoided with 32
  * bit values at the expense of memory usage). We slide even when level == 0 to
  * keep the hash table consistent if we switch back to level > 0 later.
  */
-local void slide_hash(s)
-    deflate_state *s;
-{
+#if defined(__has_feature)
+#  if __has_feature(memory_sanitizer)
+     __attribute__((no_sanitize("memory")))
+#  endif
+#endif
+local void slide_hash(deflate_state *s) {
     unsigned n, m;
     Posf *p;
     uInt wsize = s->w_size;
@@ -224,39 +208,181 @@ local void slide_hash(s)
 #endif
 }
 
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read.  All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->next_in buffer and copying from it.
+ * (See also flush_pending()).
+ */
+local unsigned read_buf(z_streamp strm, Bytef *buf, unsigned size) {
+    unsigned len = strm->avail_in;
+
+    if (len > size) len = size;
+    if (len == 0) return 0;
+
+    strm->avail_in  -= len;
+
+    zmemcpy(buf, strm->next_in, len);
+    if (strm->state->wrap == 1) {
+        strm->adler = adler32(strm->adler, buf, len);
+    }
+#ifdef GZIP
+    else if (strm->state->wrap == 2) {
+        strm->adler = crc32(strm->adler, buf, len);
+    }
+#endif
+    strm->next_in  += len;
+    strm->total_in += len;
+
+    return len;
+}
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ *    At least one byte has been read, or avail_in == 0; reads are
+ *    performed for at least two bytes (required for the zip translate_eol
+ *    option -- not supported here).
+ */
+local void fill_window(deflate_state *s) {
+    unsigned n;
+    unsigned more;    /* Amount of free space at the end of the window. */
+    uInt wsize = s->w_size;
+
+    Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+    do {
+        more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
+
+        /* Deal with !@#$% 64K limit: */
+        if (sizeof(int) <= 2) {
+            if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+                more = wsize;
+
+            } else if (more == (unsigned)(-1)) {
+                /* Very unlikely, but possible on 16 bit machine if
+                 * strstart == 0 && lookahead == 1 (input done a byte at time)
+                 */
+                more--;
+            }
+        }
+
+        /* If the window is almost full and there is insufficient lookahead,
+         * move the upper half to the lower one to make room in the upper half.
+         */
+        if (s->strstart >= wsize + MAX_DIST(s)) {
+
+            zmemcpy(s->window, s->window + wsize, (unsigned)wsize - more);
+            s->match_start -= wsize;
+            s->strstart    -= wsize; /* we now have strstart >= MAX_DIST */
+            s->block_start -= (long) wsize;
+            if (s->insert > s->strstart)
+                s->insert = s->strstart;
+            slide_hash(s);
+            more += wsize;
+        }
+        if (s->strm->avail_in == 0) break;
+
+        /* If there was no sliding:
+         *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+         *    more == window_size - lookahead - strstart
+         * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+         * => more >= window_size - 2*WSIZE + 2
+         * In the BIG_MEM or MMAP case (not yet supported),
+         *   window_size == input_size + MIN_LOOKAHEAD  &&
+         *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+         * Otherwise, window_size == 2*WSIZE so more >= 2.
+         * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+         */
+        Assert(more >= 2, "more < 2");
+
+        n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more);
+        s->lookahead += n;
+
+        /* Initialize the hash value now that we have some input: */
+        if (s->lookahead + s->insert >= MIN_MATCH) {
+            uInt str = s->strstart - s->insert;
+            s->ins_h = s->window[str];
+            UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
+#if MIN_MATCH != 3
+            Call UPDATE_HASH() MIN_MATCH-3 more times
+#endif
+            while (s->insert) {
+                UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
+#ifndef FASTEST
+                s->prev[str & s->w_mask] = s->head[s->ins_h];
+#endif
+                s->head[s->ins_h] = (Pos)str;
+                str++;
+                s->insert--;
+                if (s->lookahead + s->insert < MIN_MATCH)
+                    break;
+            }
+        }
+        /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+         * but this is not important since only literal bytes will be emitted.
+         */
+
+    } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
+
+    /* If the WIN_INIT bytes after the end of the current data have never been
+     * written, then zero those bytes in order to avoid memory check reports of
+     * the use of uninitialized (or uninitialised as Julian writes) bytes by
+     * the longest match routines.  Update the high water mark for the next
+     * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+     * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+     */
+    if (s->high_water < s->window_size) {
+        ulg curr = s->strstart + (ulg)(s->lookahead);
+        ulg init;
+
+        if (s->high_water < curr) {
+            /* Previous high water mark below current data -- zero WIN_INIT
+             * bytes or up to end of window, whichever is less.
+             */
+            init = s->window_size - curr;
+            if (init > WIN_INIT)
+                init = WIN_INIT;
+            zmemzero(s->window + curr, (unsigned)init);
+            s->high_water = curr + init;
+        }
+        else if (s->high_water < (ulg)curr + WIN_INIT) {
+            /* High water mark at or above current data, but below current data
+             * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+             * to end of window, whichever is less.
+             */
+            init = (ulg)curr + WIN_INIT - s->high_water;
+            if (init > s->window_size - s->high_water)
+                init = s->window_size - s->high_water;
+            zmemzero(s->window + s->high_water, (unsigned)init);
+            s->high_water += init;
+        }
+    }
+
+    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+           "not enough room for search");
+}
+
 /* ========================================================================= */
-int ZEXPORT deflateInit_(strm, level, version, stream_size)
-    z_streamp strm;
-    int level;
-    const char *version;
-    int stream_size;
-{
+int ZEXPORT deflateInit_(z_streamp strm, int level, const char *version,
+                         int stream_size) {
     return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
                          Z_DEFAULT_STRATEGY, version, stream_size);
     /* To do: ignore strm->next_in if we use it as window */
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
-                  version, stream_size)
-    z_streamp strm;
-    int  level;
-    int  method;
-    int  windowBits;
-    int  memLevel;
-    int  strategy;
-    const char *version;
-    int stream_size;
-{
+int ZEXPORT deflateInit2_(z_streamp strm, int level, int method,
+                          int windowBits, int memLevel, int strategy,
+                          const char *version, int stream_size) {
     deflate_state *s;
     int wrap = 1;
     static const char my_version[] = ZLIB_VERSION;
 
-    ushf *overlay;
-    /* We overlay pending_buf and d_buf+l_buf. This works since the average
-     * output size for (length,distance) codes is <= 24 bits.
-     */
-
     if (version == Z_NULL || version[0] != my_version[0] ||
         stream_size != sizeof(z_stream)) {
         return Z_VERSION_ERROR;
@@ -287,6 +413,8 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
 
     if (windowBits < 0) { /* suppress zlib wrapper */
         wrap = 0;
+        if (windowBits < -15)
+            return Z_STREAM_ERROR;
         windowBits = -windowBits;
     }
 #ifdef GZIP
@@ -316,7 +444,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
     s->hash_bits = (uInt)memLevel + 7;
     s->hash_size = 1 << s->hash_bits;
     s->hash_mask = s->hash_size - 1;
-    s->hash_shift =  ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
+    s->hash_shift =  ((s->hash_bits + MIN_MATCH-1) / MIN_MATCH);
 
     s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
     s->prev   = (Posf *)  ZALLOC(strm, s->w_size, sizeof(Pos));
@@ -326,9 +454,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
 
     s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
 
-    overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
-    s->pending_buf = (uchf *) overlay;
-    s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
+    /* We overlay pending_buf and sym_buf. This works since the average size
+     * for length/distance pairs over any compressed block is assured to be 31
+     * bits or less.
+     *
+     * Analysis: The longest fixed codes are a length code of 8 bits plus 5
+     * extra bits, for lengths 131 to 257. The longest fixed distance codes are
+     * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
+     * possible fixed-codes length/distance pair is then 31 bits total.
+     *
+     * sym_buf starts one-fourth of the way into pending_buf. So there are
+     * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
+     * in sym_buf is three bytes -- two for the distance and one for the
+     * literal/length. As each symbol is consumed, the pointer to the next
+     * sym_buf value to read moves forward three bytes. From that symbol, up to
+     * 31 bits are written to pending_buf. The closest the written pending_buf
+     * bits gets to the next sym_buf symbol to read is just before the last
+     * code is written. At that time, 31*(n - 2) bits have been written, just
+     * after 24*(n - 2) bits have been consumed from sym_buf. sym_buf starts at
+     * 8*n bits into pending_buf. (Note that the symbol buffer fills when n - 1
+     * symbols are written.) The closest the writing gets to what is unread is
+     * then n + 14 bits. Here n is lit_bufsize, which is 16384 by default, and
+     * can range from 128 to 32768.
+     *
+     * Therefore, at a minimum, there are 142 bits of space between what is
+     * written and what is read in the overlain buffers, so the symbols cannot
+     * be overwritten by the compressed data. That space is actually 139 bits,
+     * due to the three-bit fixed-code block header.
+     *
+     * That covers the case where either Z_FIXED is specified, forcing fixed
+     * codes, or when the use of fixed codes is chosen, because that choice
+     * results in a smaller compressed block than dynamic codes. That latter
+     * condition then assures that the above analysis also covers all dynamic
+     * blocks. A dynamic-code block will only be chosen to be emitted if it has
+     * fewer bits than a fixed-code block would for the same set of symbols.
+     * Therefore its average symbol length is assured to be less than 31. So
+     * the compressed data for a dynamic block also cannot overwrite the
+     * symbols from which it is being constructed.
+     */
+
+    s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, LIT_BUFS);
+    s->pending_buf_size = (ulg)s->lit_bufsize * 4;
 
     if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
         s->pending_buf == Z_NULL) {
@@ -337,8 +503,18 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
         deflateEnd (strm);
         return Z_MEM_ERROR;
     }
-    s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
-    s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
+#ifdef LIT_MEM
+    s->d_buf = (ushf *)(s->pending_buf + (s->lit_bufsize << 1));
+    s->l_buf = s->pending_buf + (s->lit_bufsize << 2);
+    s->sym_end = s->lit_bufsize - 1;
+#else
+    s->sym_buf = s->pending_buf + s->lit_bufsize;
+    s->sym_end = (s->lit_bufsize - 1) * 3;
+#endif
+    /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
+     * on 16 bit machines and because stored blocks are restricted to
+     * 64K-1 bytes.
+     */
 
     s->level = level;
     s->strategy = strategy;
@@ -350,9 +526,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
 /* =========================================================================
  * Check for a valid deflate stream state. Return 0 if ok, 1 if not.
  */
-local int deflateStateCheck (strm)
-    z_streamp strm;
-{
+local int deflateStateCheck(z_streamp strm) {
     deflate_state *s;
     if (strm == Z_NULL ||
         strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0)
@@ -373,11 +547,8 @@ local int deflateStateCheck (strm)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
-    z_streamp strm;
-    const Bytef *dictionary;
-    uInt  dictLength;
-{
+int ZEXPORT deflateSetDictionary(z_streamp strm, const Bytef *dictionary,
+                                 uInt  dictLength) {
     deflate_state *s;
     uInt str, n;
     int wrap;
@@ -442,11 +613,8 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength)
-    z_streamp strm;
-    Bytef *dictionary;
-    uInt  *dictLength;
-{
+int ZEXPORT deflateGetDictionary(z_streamp strm, Bytef *dictionary,
+                                 uInt *dictLength) {
     deflate_state *s;
     uInt len;
 
@@ -464,9 +632,7 @@ int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateResetKeep (strm)
-    z_streamp strm;
-{
+int ZEXPORT deflateResetKeep(z_streamp strm) {
     deflate_state *s;
 
     if (deflateStateCheck(strm)) {
@@ -488,23 +654,45 @@ int ZEXPORT deflateResetKeep (strm)
 #ifdef GZIP
         s->wrap == 2 ? GZIP_STATE :
 #endif
-        s->wrap ? INIT_STATE : BUSY_STATE;
+        INIT_STATE;
     strm->adler =
 #ifdef GZIP
         s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
 #endif
         adler32(0L, Z_NULL, 0);
-    s->last_flush = Z_NO_FLUSH;
+    s->last_flush = -2;
 
     _tr_init(s);
 
     return Z_OK;
 }
 
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+local void lm_init(deflate_state *s) {
+    s->window_size = (ulg)2L*s->w_size;
+
+    CLEAR_HASH(s);
+
+    /* Set the default configuration parameters:
+     */
+    s->max_lazy_match   = configuration_table[s->level].max_lazy;
+    s->good_match       = configuration_table[s->level].good_length;
+    s->nice_match       = configuration_table[s->level].nice_length;
+    s->max_chain_length = configuration_table[s->level].max_chain;
+
+    s->strstart = 0;
+    s->block_start = 0L;
+    s->lookahead = 0;
+    s->insert = 0;
+    s->match_length = s->prev_length = MIN_MATCH-1;
+    s->match_available = 0;
+    s->ins_h = 0;
+}
+
 /* ========================================================================= */
-int ZEXPORT deflateReset (strm)
-    z_streamp strm;
-{
+int ZEXPORT deflateReset(z_streamp strm) {
     int ret;
 
     ret = deflateResetKeep(strm);
@@ -514,10 +702,7 @@ int ZEXPORT deflateReset (strm)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateSetHeader (strm, head)
-    z_streamp strm;
-    gz_headerp head;
-{
+int ZEXPORT deflateSetHeader(z_streamp strm, gz_headerp head) {
     if (deflateStateCheck(strm) || strm->state->wrap != 2)
         return Z_STREAM_ERROR;
     strm->state->gzhead = head;
@@ -525,11 +710,7 @@ int ZEXPORT deflateSetHeader (strm, head)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflatePending (strm, pending, bits)
-    unsigned *pending;
-    int *bits;
-    z_streamp strm;
-{
+int ZEXPORT deflatePending(z_streamp strm, unsigned *pending, int *bits) {
     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
     if (pending != Z_NULL)
         *pending = strm->state->pending;
@@ -539,18 +720,21 @@ int ZEXPORT deflatePending (strm, pending, bits)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflatePrime (strm, bits, value)
-    z_streamp strm;
-    int bits;
-    int value;
-{
+int ZEXPORT deflatePrime(z_streamp strm, int bits, int value) {
     deflate_state *s;
     int put;
 
     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
     s = strm->state;
-    if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
+#ifdef LIT_MEM
+    if (bits < 0 || bits > 16 ||
+        (uchf *)s->d_buf < s->pending_out + ((Buf_size + 7) >> 3))
+        return Z_BUF_ERROR;
+#else
+    if (bits < 0 || bits > 16 ||
+        s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3))
         return Z_BUF_ERROR;
+#endif
     do {
         put = Buf_size - s->bi_valid;
         if (put > bits)
@@ -565,11 +749,7 @@ int ZEXPORT deflatePrime (strm, bits, value)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateParams(strm, level, strategy)
-    z_streamp strm;
-    int level;
-    int strategy;
-{
+int ZEXPORT deflateParams(z_streamp strm, int level, int strategy) {
     deflate_state *s;
     compress_func func;
 
@@ -587,12 +767,12 @@ int ZEXPORT deflateParams(strm, level, strategy)
     func = configuration_table[s->level].func;
 
     if ((strategy != s->strategy || func != configuration_table[level].func) &&
-        s->high_water) {
+        s->last_flush != -2) {
         /* Flush the last buffer: */
         int err = deflate(strm, Z_BLOCK);
         if (err == Z_STREAM_ERROR)
             return err;
-        if (strm->avail_out == 0)
+        if (strm->avail_in || (s->strstart - s->block_start) + s->lookahead)
             return Z_BUF_ERROR;
     }
     if (s->level != level) {
@@ -614,13 +794,8 @@ int ZEXPORT deflateParams(strm, level, strategy)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain)
-    z_streamp strm;
-    int good_length;
-    int max_lazy;
-    int nice_length;
-    int max_chain;
-{
+int ZEXPORT deflateTune(z_streamp strm, int good_length, int max_lazy,
+                        int nice_length, int max_chain) {
     deflate_state *s;
 
     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -633,36 +808,47 @@ int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain)
 }
 
 /* =========================================================================
- * For the default windowBits of 15 and memLevel of 8, this function returns
- * a close to exact, as well as small, upper bound on the compressed size.
- * They are coded as constants here for a reason--if the #define's are
- * changed, then this function needs to be changed as well.  The return
- * value for 15 and 8 only works for those exact settings.
+ * For the default windowBits of 15 and memLevel of 8, this function returns a
+ * close to exact, as well as small, upper bound on the compressed size. This
+ * is an expansion of ~0.03%, plus a small constant.
+ *
+ * For any setting other than those defaults for windowBits and memLevel, one
+ * of two worst case bounds is returned. This is at most an expansion of ~4% or
+ * ~13%, plus a small constant.
+ *
+ * Both the 0.03% and 4% derive from the overhead of stored blocks. The first
+ * one is for stored blocks of 16383 bytes (memLevel == 8), whereas the second
+ * is for stored blocks of 127 bytes (the worst case memLevel == 1). The
+ * expansion results from five bytes of header for each stored block.
  *
- * For any setting other than those defaults for windowBits and memLevel,
- * the value returned is a conservative worst case for the maximum expansion
- * resulting from using fixed blocks instead of stored blocks, which deflate
- * can emit on compressed data for some combinations of the parameters.
+ * The larger expansion of 13% results from a window size less than or equal to
+ * the symbols buffer size (windowBits <= memLevel + 7). In that case some of
+ * the data being compressed may have slid out of the sliding window, impeding
+ * a stored block from being emitted. Then the only choice is a fixed or
+ * dynamic block, where a fixed block limits the maximum expansion to 9 bits
+ * per 8-bit byte, plus 10 bits for every block. The smallest block size for
+ * which this can occur is 255 (memLevel == 2).
  *
- * This function could be more sophisticated to provide closer upper bounds for
- * every combination of windowBits and memLevel.  But even the conservative
- * upper bound of about 14% expansion does not seem onerous for output buffer
- * allocation.
+ * Shifts are used to approximate divisions, for speed.
  */
-uLong ZEXPORT deflateBound(strm, sourceLen)
-    z_streamp strm;
-    uLong sourceLen;
-{
+uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) {
     deflate_state *s;
-    uLong complen, wraplen;
+    uLong fixedlen, storelen, wraplen;
 
-    /* conservative upper bound for compressed data */
-    complen = sourceLen +
-              ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
+    /* upper bound for fixed blocks with 9-bit literals and length 255
+       (memLevel == 2, which is the lowest that may not use stored blocks) --
+       ~13% overhead plus a small constant */
+    fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) +
+               (sourceLen >> 9) + 4;
 
-    /* if can't get parameters, return conservative bound plus zlib wrapper */
+    /* upper bound for stored blocks with length 127 (memLevel == 1) --
+       ~4% overhead plus a small constant */
+    storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) +
+               (sourceLen >> 11) + 7;
+
+    /* if can't get parameters, return larger bound plus a zlib wrapper */
     if (deflateStateCheck(strm))
-        return complen + 6;
+        return (fixedlen > storelen ? fixedlen : storelen) + 6;
 
     /* compute wrapper length */
     s = strm->state;
@@ -699,11 +885,13 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
         wraplen = 6;
     }
 
-    /* if not default parameters, return conservative bound */
+    /* if not default parameters, return one of the conservative bounds */
     if (s->w_bits != 15 || s->hash_bits != 8 + 7)
-        return complen + wraplen;
+        return (s->w_bits <= s->hash_bits && s->level ? fixedlen : storelen) +
+               wraplen;
 
-    /* default settings: return tight bound for that case */
+    /* default settings: return tight bound for that case -- ~0.03% overhead
+       plus a small constant */
     return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
            (sourceLen >> 25) + 13 - 6 + wraplen;
 }
@@ -713,10 +901,7 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
  * IN assertion: the stream state is correct and there is enough room in
  * pending_buf.
  */
-local void putShortMSB (s, b)
-    deflate_state *s;
-    uInt b;
-{
+local void putShortMSB(deflate_state *s, uInt b) {
     put_byte(s, (Byte)(b >> 8));
     put_byte(s, (Byte)(b & 0xff));
 }
@@ -727,9 +912,7 @@ local void putShortMSB (s, b)
  * applications may wish to modify it to avoid allocating a large
  * strm->next_out buffer and copying into it. (See also read_buf()).
  */
-local void flush_pending(strm)
-    z_streamp strm;
-{
+local void flush_pending(z_streamp strm) {
     unsigned len;
     deflate_state *s = strm->state;
 
@@ -760,10 +943,7 @@ local void flush_pending(strm)
     } while (0)
 
 /* ========================================================================= */
-int ZEXPORT deflate (strm, flush)
-    z_streamp strm;
-    int flush;
-{
+int ZEXPORT deflate(z_streamp strm, int flush) {
     int old_flush; /* value of flush param for previous deflate call */
     deflate_state *s;
 
@@ -811,9 +991,11 @@ int ZEXPORT deflate (strm, flush)
     }
 
     /* Write the header */
+    if (s->status == INIT_STATE && s->wrap == 0)
+        s->status = BUSY_STATE;
     if (s->status == INIT_STATE) {
         /* zlib header */
-        uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
+        uInt header = (Z_DEFLATED + ((s->w_bits - 8) << 4)) << 8;
         uInt level_flags;
 
         if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2)
@@ -1073,9 +1255,7 @@ int ZEXPORT deflate (strm, flush)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateEnd (strm)
-    z_streamp strm;
-{
+int ZEXPORT deflateEnd(z_streamp strm) {
     int status;
 
     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -1099,16 +1279,14 @@ int ZEXPORT deflateEnd (strm)
  * To simplify the source, this is not supported for 16-bit MSDOS (which
  * doesn't have enough memory anyway to duplicate compression states).
  */
-int ZEXPORT deflateCopy (dest, source)
-    z_streamp dest;
-    z_streamp source;
-{
+int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) {
 #ifdef MAXSEG_64K
+    (void)dest;
+    (void)source;
     return Z_STREAM_ERROR;
 #else
     deflate_state *ds;
     deflate_state *ss;
-    ushf *overlay;
 
 
     if (deflateStateCheck(source) || dest == Z_NULL) {
@@ -1128,8 +1306,7 @@ int ZEXPORT deflateCopy (dest, source)
     ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
     ds->prev   = (Posf *)  ZALLOC(dest, ds->w_size, sizeof(Pos));
     ds->head   = (Posf *)  ZALLOC(dest, ds->hash_size, sizeof(Pos));
-    overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
-    ds->pending_buf = (uchf *) overlay;
+    ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, LIT_BUFS);
 
     if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
         ds->pending_buf == Z_NULL) {
@@ -1140,11 +1317,15 @@ int ZEXPORT deflateCopy (dest, source)
     zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
     zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos));
     zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos));
-    zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
+    zmemcpy(ds->pending_buf, ss->pending_buf, ds->lit_bufsize * LIT_BUFS);
 
     ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
-    ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
-    ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
+#ifdef LIT_MEM
+    ds->d_buf = (ushf *)(ds->pending_buf + (ds->lit_bufsize << 1));
+    ds->l_buf = ds->pending_buf + (ds->lit_bufsize << 2);
+#else
+    ds->sym_buf = ds->pending_buf + ds->lit_bufsize;
+#endif
 
     ds->l_desc.dyn_tree = ds->dyn_ltree;
     ds->d_desc.dyn_tree = ds->dyn_dtree;
@@ -1154,71 +1335,6 @@ int ZEXPORT deflateCopy (dest, source)
 #endif /* MAXSEG_64K */
 }
 
-/* ===========================================================================
- * Read a new buffer from the current input stream, update the adler32
- * and total number of bytes read.  All deflate() input goes through
- * this function so some applications may wish to modify it to avoid
- * allocating a large strm->next_in buffer and copying from it.
- * (See also flush_pending()).
- */
-local unsigned read_buf(strm, buf, size)
-    z_streamp strm;
-    Bytef *buf;
-    unsigned size;
-{
-    unsigned len = strm->avail_in;
-
-    if (len > size) len = size;
-    if (len == 0) return 0;
-
-    strm->avail_in  -= len;
-
-    zmemcpy(buf, strm->next_in, len);
-    if (strm->state->wrap == 1) {
-        strm->adler = adler32(strm->adler, buf, len);
-    }
-#ifdef GZIP
-    else if (strm->state->wrap == 2) {
-        strm->adler = crc32(strm->adler, buf, len);
-    }
-#endif
-    strm->next_in  += len;
-    strm->total_in += len;
-
-    return len;
-}
-
-/* ===========================================================================
- * Initialize the "longest match" routines for a new zlib stream
- */
-local void lm_init (s)
-    deflate_state *s;
-{
-    s->window_size = (ulg)2L*s->w_size;
-
-    CLEAR_HASH(s);
-
-    /* Set the default configuration parameters:
-     */
-    s->max_lazy_match   = configuration_table[s->level].max_lazy;
-    s->good_match       = configuration_table[s->level].good_length;
-    s->nice_match       = configuration_table[s->level].nice_length;
-    s->max_chain_length = configuration_table[s->level].max_chain;
-
-    s->strstart = 0;
-    s->block_start = 0L;
-    s->lookahead = 0;
-    s->insert = 0;
-    s->match_length = s->prev_length = MIN_MATCH-1;
-    s->match_available = 0;
-    s->ins_h = 0;
-#ifndef FASTEST
-#ifdef ASMV
-    match_init(); /* initialize the asm code */
-#endif
-#endif
-}
-
 #ifndef FASTEST
 /* ===========================================================================
  * Set match_start to the longest match starting at the given string and
@@ -1229,14 +1345,7 @@ local void lm_init (s)
  *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
  * OUT assertion: the match length is not greater than s->lookahead.
  */
-#ifndef ASMV
-/* For 80x86 and 680x0, an optimized version will be provided in match.asm or
- * match.S. The code will be functionally equivalent.
- */
-local uInt longest_match(s, cur_match)
-    deflate_state *s;
-    IPos cur_match;                             /* current match */
-{
+local uInt longest_match(deflate_state *s, IPos cur_match) {
     unsigned chain_length = s->max_chain_length;/* max hash chain length */
     register Bytef *scan = s->window + s->strstart; /* current string */
     register Bytef *match;                      /* matched string */
@@ -1257,10 +1366,10 @@ local uInt longest_match(s, cur_match)
      */
     register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
     register ush scan_start = *(ushf*)scan;
-    register ush scan_end   = *(ushf*)(scan+best_len-1);
+    register ush scan_end   = *(ushf*)(scan + best_len - 1);
 #else
     register Bytef *strend = s->window + s->strstart + MAX_MATCH;
-    register Byte scan_end1  = scan[best_len-1];
+    register Byte scan_end1  = scan[best_len - 1];
     register Byte scan_end   = scan[best_len];
 #endif
 
@@ -1278,7 +1387,8 @@ local uInt longest_match(s, cur_match)
      */
     if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead;
 
-    Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+           "need lookahead");
 
     do {
         Assert(cur_match < s->strstart, "no future");
@@ -1296,43 +1406,44 @@ local uInt longest_match(s, cur_match)
         /* This code assumes sizeof(unsigned short) == 2. Do not use
          * UNALIGNED_OK if your compiler uses a different size.
          */
-        if (*(ushf*)(match+best_len-1) != scan_end ||
+        if (*(ushf*)(match + best_len - 1) != scan_end ||
             *(ushf*)match != scan_start) continue;
 
         /* It is not necessary to compare scan[2] and match[2] since they are
          * always equal when the other bytes match, given that the hash keys
          * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
-         * strstart+3, +5, ... up to strstart+257. We check for insufficient
+         * strstart + 3, + 5, up to strstart + 257. We check for insufficient
          * lookahead only every 4th comparison; the 128th check will be made
-         * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
+         * at strstart + 257. If MAX_MATCH-2 is not a multiple of 8, it is
          * necessary to put more guard bytes at the end of the window, or
          * to check more often for insufficient lookahead.
          */
         Assert(scan[2] == match[2], "scan[2]?");
         scan++, match++;
         do {
-        } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
+        } while (*(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
+                 *(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
+                 *(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
+                 *(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
                  scan < strend);
         /* The funny "do {}" generates better code on most compilers */
 
-        /* Here, scan <= window+strstart+257 */
-        Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+        /* Here, scan <= window + strstart + 257 */
+        Assert(scan <= s->window + (unsigned)(s->window_size - 1),
+               "wild scan");
         if (*scan == *match) scan++;
 
-        len = (MAX_MATCH - 1) - (int)(strend-scan);
+        len = (MAX_MATCH - 1) - (int)(strend - scan);
         scan = strend - (MAX_MATCH-1);
 
 #else /* UNALIGNED_OK */
 
-        if (match[best_len]   != scan_end  ||
-            match[best_len-1] != scan_end1 ||
-            *match            != *scan     ||
-            *++match          != scan[1])      continue;
+        if (match[best_len]     != scan_end  ||
+            match[best_len - 1] != scan_end1 ||
+            *match              != *scan     ||
+            *++match            != scan[1])      continue;
 
-        /* The check at best_len-1 can be removed because it will be made
+        /* The check at best_len - 1 can be removed because it will be made
          * again later. (This heuristic is not always a win.)
          * It is not necessary to compare scan[2] and match[2] since they
          * are always equal when the other bytes match, given that
@@ -1342,7 +1453,7 @@ local uInt longest_match(s, cur_match)
         Assert(*scan == *match, "match[2]?");
 
         /* We check for insufficient lookahead only every 8th comparison;
-         * the 256th check will be made at strstart+258.
+         * the 256th check will be made at strstart + 258.
          */
         do {
         } while (*++scan == *++match && *++scan == *++match &&
@@ -1351,7 +1462,8 @@ local uInt longest_match(s, cur_match)
                  *++scan == *++match && *++scan == *++match &&
                  scan < strend);
 
-        Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+        Assert(scan <= s->window + (unsigned)(s->window_size - 1),
+               "wild scan");
 
         len = MAX_MATCH - (int)(strend - scan);
         scan = strend - MAX_MATCH;
@@ -1363,9 +1475,9 @@ local uInt longest_match(s, cur_match)
             best_len = len;
             if (len >= nice_match) break;
 #ifdef UNALIGNED_OK
-            scan_end = *(ushf*)(scan+best_len-1);
+            scan_end = *(ushf*)(scan + best_len - 1);
 #else
-            scan_end1  = scan[best_len-1];
+            scan_end1  = scan[best_len - 1];
             scan_end   = scan[best_len];
 #endif
         }
@@ -1375,17 +1487,13 @@ local uInt longest_match(s, cur_match)
     if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
     return s->lookahead;
 }
-#endif /* ASMV */
 
 #else /* FASTEST */
 
 /* ---------------------------------------------------------------------------
  * Optimized version for FASTEST only
  */
-local uInt longest_match(s, cur_match)
-    deflate_state *s;
-    IPos cur_match;                             /* current match */
-{
+local uInt longest_match(deflate_state *s, IPos cur_match) {
     register Bytef *scan = s->window + s->strstart; /* current string */
     register Bytef *match;                       /* matched string */
     register int len;                           /* length of current match */
@@ -1396,7 +1504,8 @@ local uInt longest_match(s, cur_match)
      */
     Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
 
-    Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+           "need lookahead");
 
     Assert(cur_match < s->strstart, "no future");
 
@@ -1406,7 +1515,7 @@ local uInt longest_match(s, cur_match)
      */
     if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1;
 
-    /* The check at best_len-1 can be removed because it will be made
+    /* The check at best_len - 1 can be removed because it will be made
      * again later. (This heuristic is not always a win.)
      * It is not necessary to compare scan[2] and match[2] since they
      * are always equal when the other bytes match, given that
@@ -1416,7 +1525,7 @@ local uInt longest_match(s, cur_match)
     Assert(*scan == *match, "match[2]?");
 
     /* We check for insufficient lookahead only every 8th comparison;
-     * the 256th check will be made at strstart+258.
+     * the 256th check will be made at strstart + 258.
      */
     do {
     } while (*++scan == *++match && *++scan == *++match &&
@@ -1425,7 +1534,7 @@ local uInt longest_match(s, cur_match)
              *++scan == *++match && *++scan == *++match &&
              scan < strend);
 
-    Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+    Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan");
 
     len = MAX_MATCH - (int)(strend - scan);
 
@@ -1445,23 +1554,27 @@ local uInt longest_match(s, cur_match)
 /* ===========================================================================
  * Check that the match at match_start is indeed a match.
  */
-local void check_match(s, start, match, length)
-    deflate_state *s;
-    IPos start, match;
-    int length;
-{
+local void check_match(deflate_state *s, IPos start, IPos match, int length) {
     /* check that the match is indeed a match */
-    if (zmemcmp(s->window + match,
-                s->window + start, length) != EQUAL) {
-        fprintf(stderr, " start %u, match %u, length %d\n",
-                start, match, length);
+    Bytef *back = s->window + (int)match, *here = s->window + start;
+    IPos len = length;
+    if (match == (IPos)-1) {
+        /* match starts one byte before the current window -- just compare the
+           subsequent length-1 bytes */
+        back++;
+        here++;
+        len--;
+    }
+    if (zmemcmp(back, here, len) != EQUAL) {
+        fprintf(stderr, " start %u, match %d, length %d\n",
+                start, (int)match, length);
         do {
-            fprintf(stderr, "%c%c", s->window[match++], s->window[start++]);
-        } while (--length != 0);
+            fprintf(stderr, "(%02x %02x)", *back++, *here++);
+        } while (--len != 0);
         z_error("invalid match");
     }
     if (z_verbose > 1) {
-        fprintf(stderr,"\\[%d,%d]", start-match, length);
+        fprintf(stderr,"\\[%d,%d]", start - match, length);
         do { putc(s->window[start++], stderr); } while (--length != 0);
     }
 }
@@ -1469,135 +1582,6 @@ local void check_match(s, start, match, length)
 #  define check_match(s, start, match, length)
 #endif /* ZLIB_DEBUG */
 
-/* ===========================================================================
- * Fill the window when the lookahead becomes insufficient.
- * Updates strstart and lookahead.
- *
- * IN assertion: lookahead < MIN_LOOKAHEAD
- * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
- *    At least one byte has been read, or avail_in == 0; reads are
- *    performed for at least two bytes (required for the zip translate_eol
- *    option -- not supported here).
- */
-local void fill_window(s)
-    deflate_state *s;
-{
-    unsigned n;
-    unsigned more;    /* Amount of free space at the end of the window. */
-    uInt wsize = s->w_size;
-
-    Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
-
-    do {
-        more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
-
-        /* Deal with !@#$% 64K limit: */
-        if (sizeof(int) <= 2) {
-            if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
-                more = wsize;
-
-            } else if (more == (unsigned)(-1)) {
-                /* Very unlikely, but possible on 16 bit machine if
-                 * strstart == 0 && lookahead == 1 (input done a byte at time)
-                 */
-                more--;
-            }
-        }
-
-        /* If the window is almost full and there is insufficient lookahead,
-         * move the upper half to the lower one to make room in the upper half.
-         */
-        if (s->strstart >= wsize+MAX_DIST(s)) {
-
-            zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more);
-            s->match_start -= wsize;
-            s->strstart    -= wsize; /* we now have strstart >= MAX_DIST */
-            s->block_start -= (long) wsize;
-            slide_hash(s);
-            more += wsize;
-        }
-        if (s->strm->avail_in == 0) break;
-
-        /* If there was no sliding:
-         *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
-         *    more == window_size - lookahead - strstart
-         * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
-         * => more >= window_size - 2*WSIZE + 2
-         * In the BIG_MEM or MMAP case (not yet supported),
-         *   window_size == input_size + MIN_LOOKAHEAD  &&
-         *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
-         * Otherwise, window_size == 2*WSIZE so more >= 2.
-         * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
-         */
-        Assert(more >= 2, "more < 2");
-
-        n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more);
-        s->lookahead += n;
-
-        /* Initialize the hash value now that we have some input: */
-        if (s->lookahead + s->insert >= MIN_MATCH) {
-            uInt str = s->strstart - s->insert;
-            s->ins_h = s->window[str];
-            UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
-#if MIN_MATCH != 3
-            Call UPDATE_HASH() MIN_MATCH-3 more times
-#endif
-            while (s->insert) {
-                UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
-#ifndef FASTEST
-                s->prev[str & s->w_mask] = s->head[s->ins_h];
-#endif
-                s->head[s->ins_h] = (Pos)str;
-                str++;
-                s->insert--;
-                if (s->lookahead + s->insert < MIN_MATCH)
-                    break;
-            }
-        }
-        /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
-         * but this is not important since only literal bytes will be emitted.
-         */
-
-    } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
-
-    /* If the WIN_INIT bytes after the end of the current data have never been
-     * written, then zero those bytes in order to avoid memory check reports of
-     * the use of uninitialized (or uninitialised as Julian writes) bytes by
-     * the longest match routines.  Update the high water mark for the next
-     * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
-     * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
-     */
-    if (s->high_water < s->window_size) {
-        ulg curr = s->strstart + (ulg)(s->lookahead);
-        ulg init;
-
-        if (s->high_water < curr) {
-            /* Previous high water mark below current data -- zero WIN_INIT
-             * bytes or up to end of window, whichever is less.
-             */
-            init = s->window_size - curr;
-            if (init > WIN_INIT)
-                init = WIN_INIT;
-            zmemzero(s->window + curr, (unsigned)init);
-            s->high_water = curr + init;
-        }
-        else if (s->high_water < (ulg)curr + WIN_INIT) {
-            /* High water mark at or above current data, but below current data
-             * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
-             * to end of window, whichever is less.
-             */
-            init = (ulg)curr + WIN_INIT - s->high_water;
-            if (init > s->window_size - s->high_water)
-                init = s->window_size - s->high_water;
-            zmemzero(s->window + s->high_water, (unsigned)init);
-            s->high_water += init;
-        }
-    }
-
-    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
-           "not enough room for search");
-}
-
 /* ===========================================================================
  * Flush the current block, with given end-of-file flag.
  * IN assertion: strstart is set to the end of the current match.
@@ -1638,12 +1622,9 @@ local void fill_window(s)
  *
  * deflate_stored() is written to minimize the number of times an input byte is
  * copied. It is most efficient with large input and output buffers, which
- * maximizes the opportunites to have a single copy from next_in to next_out.
+ * maximizes the opportunities to have a single copy from next_in to next_out.
  */
-local block_state deflate_stored(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_stored(deflate_state *s, int flush) {
     /* Smallest worthy block size when not flushing or finishing. By default
      * this is 32K. This can be as small as 507 bytes for memLevel == 1. For
      * large input and output buffers, the stored block size will be larger.
@@ -1742,6 +1723,7 @@ local block_state deflate_stored(s, flush)
             s->matches = 2;         /* clear hash */
             zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);
             s->strstart = s->w_size;
+            s->insert = s->strstart;
         }
         else {
             if (s->window_size - s->strstart <= used) {
@@ -1750,12 +1732,14 @@ local block_state deflate_stored(s, flush)
                 zmemcpy(s->window, s->window + s->w_size, s->strstart);
                 if (s->matches < 2)
                     s->matches++;   /* add a pending slide_hash() */
+                if (s->insert > s->strstart)
+                    s->insert = s->strstart;
             }
             zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);
             s->strstart += used;
+            s->insert += MIN(used, s->w_size - s->insert);
         }
         s->block_start = s->strstart;
-        s->insert += MIN(used, s->w_size - s->insert);
     }
     if (s->high_water < s->strstart)
         s->high_water = s->strstart;
@@ -1770,7 +1754,7 @@ local block_state deflate_stored(s, flush)
         return block_done;
 
     /* Fill the window with any remaining input. */
-    have = s->window_size - s->strstart - 1;
+    have = s->window_size - s->strstart;
     if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) {
         /* Slide the window down. */
         s->block_start -= s->w_size;
@@ -1779,12 +1763,15 @@ local block_state deflate_stored(s, flush)
         if (s->matches < 2)
             s->matches++;           /* add a pending slide_hash() */
         have += s->w_size;          /* more space now */
+        if (s->insert > s->strstart)
+            s->insert = s->strstart;
     }
     if (have > s->strm->avail_in)
         have = s->strm->avail_in;
     if (have) {
         read_buf(s->strm, s->window + s->strstart, have);
         s->strstart += have;
+        s->insert += MIN(have, s->w_size - s->insert);
     }
     if (s->high_water < s->strstart)
         s->high_water = s->strstart;
@@ -1821,10 +1808,7 @@ local block_state deflate_stored(s, flush)
  * new strings in the dictionary only for unmatched strings or for short
  * matches. It is used only for the fast compression options.
  */
-local block_state deflate_fast(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_fast(deflate_state *s, int flush) {
     IPos hash_head;       /* head of the hash chain */
     int bflush;           /* set if current block must be flushed */
 
@@ -1842,7 +1826,7 @@ local block_state deflate_fast(s, flush)
             if (s->lookahead == 0) break; /* flush the current block */
         }
 
-        /* Insert the string window[strstart .. strstart+2] in the
+        /* Insert the string window[strstart .. strstart + 2] in the
          * dictionary, and set hash_head to the head of the hash chain:
          */
         hash_head = NIL;
@@ -1890,7 +1874,7 @@ local block_state deflate_fast(s, flush)
                 s->strstart += s->match_length;
                 s->match_length = 0;
                 s->ins_h = s->window[s->strstart];
-                UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
+                UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]);
 #if MIN_MATCH != 3
                 Call UPDATE_HASH() MIN_MATCH-3 more times
 #endif
@@ -1901,7 +1885,7 @@ local block_state deflate_fast(s, flush)
         } else {
             /* No match, output a literal byte */
             Tracevv((stderr,"%c", s->window[s->strstart]));
-            _tr_tally_lit (s, s->window[s->strstart], bflush);
+            _tr_tally_lit(s, s->window[s->strstart], bflush);
             s->lookahead--;
             s->strstart++;
         }
@@ -1912,7 +1896,7 @@ local block_state deflate_fast(s, flush)
         FLUSH_BLOCK(s, 1);
         return finish_done;
     }
-    if (s->last_lit)
+    if (s->sym_next)
         FLUSH_BLOCK(s, 0);
     return block_done;
 }
@@ -1923,10 +1907,7 @@ local block_state deflate_fast(s, flush)
  * evaluation for matches: a match is finally adopted only if there is
  * no better match at the next window position.
  */
-local block_state deflate_slow(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_slow(deflate_state *s, int flush) {
     IPos hash_head;          /* head of hash chain */
     int bflush;              /* set if current block must be flushed */
 
@@ -1945,7 +1926,7 @@ local block_state deflate_slow(s, flush)
             if (s->lookahead == 0) break; /* flush the current block */
         }
 
-        /* Insert the string window[strstart .. strstart+2] in the
+        /* Insert the string window[strstart .. strstart + 2] in the
          * dictionary, and set hash_head to the head of the hash chain:
          */
         hash_head = NIL;
@@ -1987,17 +1968,17 @@ local block_state deflate_slow(s, flush)
             uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
             /* Do not insert strings in hash table beyond this. */
 
-            check_match(s, s->strstart-1, s->prev_match, s->prev_length);
+            check_match(s, s->strstart - 1, s->prev_match, s->prev_length);
 
-            _tr_tally_dist(s, s->strstart -1 - s->prev_match,
+            _tr_tally_dist(s, s->strstart - 1 - s->prev_match,
                            s->prev_length - MIN_MATCH, bflush);
 
             /* Insert in hash table all strings up to the end of the match.
-             * strstart-1 and strstart are already inserted. If there is not
+             * strstart - 1 and strstart are already inserted. If there is not
              * enough lookahead, the last two strings are not inserted in
              * the hash table.
              */
-            s->lookahead -= s->prev_length-1;
+            s->lookahead -= s->prev_length - 1;
             s->prev_length -= 2;
             do {
                 if (++s->strstart <= max_insert) {
@@ -2015,8 +1996,8 @@ local block_state deflate_slow(s, flush)
              * single literal. If there was a match but the current match
              * is longer, truncate the previous match to a single literal.
              */
-            Tracevv((stderr,"%c", s->window[s->strstart-1]));
-            _tr_tally_lit(s, s->window[s->strstart-1], bflush);
+            Tracevv((stderr,"%c", s->window[s->strstart - 1]));
+            _tr_tally_lit(s, s->window[s->strstart - 1], bflush);
             if (bflush) {
                 FLUSH_BLOCK_ONLY(s, 0);
             }
@@ -2034,8 +2015,8 @@ local block_state deflate_slow(s, flush)
     }
     Assert (flush != Z_NO_FLUSH, "no flush?");
     if (s->match_available) {
-        Tracevv((stderr,"%c", s->window[s->strstart-1]));
-        _tr_tally_lit(s, s->window[s->strstart-1], bflush);
+        Tracevv((stderr,"%c", s->window[s->strstart - 1]));
+        _tr_tally_lit(s, s->window[s->strstart - 1], bflush);
         s->match_available = 0;
     }
     s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
@@ -2043,7 +2024,7 @@ local block_state deflate_slow(s, flush)
         FLUSH_BLOCK(s, 1);
         return finish_done;
     }
-    if (s->last_lit)
+    if (s->sym_next)
         FLUSH_BLOCK(s, 0);
     return block_done;
 }
@@ -2054,10 +2035,7 @@ local block_state deflate_slow(s, flush)
  * one.  Do not maintain a hash table.  (It will be regenerated if this run of
  * deflate switches away from Z_RLE.)
  */
-local block_state deflate_rle(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_rle(deflate_state *s, int flush) {
     int bflush;             /* set if current block must be flushed */
     uInt prev;              /* byte at distance one to match */
     Bytef *scan, *strend;   /* scan goes up to strend for length of run */
@@ -2092,7 +2070,8 @@ local block_state deflate_rle(s, flush)
                 if (s->match_length > s->lookahead)
                     s->match_length = s->lookahead;
             }
-            Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+            Assert(scan <= s->window + (uInt)(s->window_size - 1),
+                   "wild scan");
         }
 
         /* Emit match if have run of MIN_MATCH or longer, else emit literal */
@@ -2107,7 +2086,7 @@ local block_state deflate_rle(s, flush)
         } else {
             /* No match, output a literal byte */
             Tracevv((stderr,"%c", s->window[s->strstart]));
-            _tr_tally_lit (s, s->window[s->strstart], bflush);
+            _tr_tally_lit(s, s->window[s->strstart], bflush);
             s->lookahead--;
             s->strstart++;
         }
@@ -2118,7 +2097,7 @@ local block_state deflate_rle(s, flush)
         FLUSH_BLOCK(s, 1);
         return finish_done;
     }
-    if (s->last_lit)
+    if (s->sym_next)
         FLUSH_BLOCK(s, 0);
     return block_done;
 }
@@ -2127,10 +2106,7 @@ local block_state deflate_rle(s, flush)
  * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
  * (It will be regenerated if this run of deflate switches away from Huffman.)
  */
-local block_state deflate_huff(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_huff(deflate_state *s, int flush) {
     int bflush;             /* set if current block must be flushed */
 
     for (;;) {
@@ -2147,7 +2123,7 @@ local block_state deflate_huff(s, flush)
         /* Output a literal byte */
         s->match_length = 0;
         Tracevv((stderr,"%c", s->window[s->strstart]));
-        _tr_tally_lit (s, s->window[s->strstart], bflush);
+        _tr_tally_lit(s, s->window[s->strstart], bflush);
         s->lookahead--;
         s->strstart++;
         if (bflush) FLUSH_BLOCK(s, 0);
@@ -2157,7 +2133,7 @@ local block_state deflate_huff(s, flush)
         FLUSH_BLOCK(s, 1);
         return finish_done;
     }
-    if (s->last_lit)
+    if (s->sym_next)
         FLUSH_BLOCK(s, 0);
     return block_done;
 }
diff --git a/libs/zlib/deflate.h b/libs/zlib/deflate.h
index 23ecdd312b..300c6ada62 100644
--- a/libs/zlib/deflate.h
+++ b/libs/zlib/deflate.h
@@ -1,5 +1,5 @@
 /* deflate.h -- internal compression state
- * Copyright (C) 1995-2016 Jean-loup Gailly
+ * Copyright (C) 1995-2024 Jean-loup Gailly
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -23,6 +23,10 @@
 #  define GZIP
 #endif
 
+/* define LIT_MEM to slightly increase the speed of deflate (order 1% to 2%) at
+   the cost of a larger memory footprint */
+/* #define LIT_MEM */
+
 /* ===========================================================================
  * Internal compression state.
  */
@@ -217,7 +221,14 @@ typedef struct internal_state {
     /* Depth of each subtree used as tie breaker for trees of equal frequency
      */
 
-    uchf *l_buf;          /* buffer for literals or lengths */
+#ifdef LIT_MEM
+#   define LIT_BUFS 5
+    ushf *d_buf;          /* buffer for distances */
+    uchf *l_buf;          /* buffer for literals/lengths */
+#else
+#   define LIT_BUFS 4
+    uchf *sym_buf;        /* buffer for distances and literals/lengths */
+#endif
 
     uInt  lit_bufsize;
     /* Size of match buffer for literals/lengths.  There are 4 reasons for
@@ -239,13 +250,8 @@ typedef struct internal_state {
      *   - I can't count above 4
      */
 
-    uInt last_lit;      /* running index in l_buf */
-
-    ushf *d_buf;
-    /* Buffer for distances. To simplify the code, d_buf and l_buf have
-     * the same number of elements. To use different lengths, an extra flag
-     * array would be necessary.
-     */
+    uInt sym_next;      /* running index in symbol buffer */
+    uInt sym_end;       /* symbol table full when sym_next reaches this */
 
     ulg opt_len;        /* bit length of current block with optimal trees */
     ulg static_len;     /* bit length of current block with static trees */
@@ -296,14 +302,14 @@ typedef struct internal_state {
    memory checker errors from longest match routines */
 
         /* in trees.c */
-void ZLIB_INTERNAL _tr_init OF((deflate_state *s));
-int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
-void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf,
-                        ulg stored_len, int last));
-void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s));
-void ZLIB_INTERNAL _tr_align OF((deflate_state *s));
-void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
-                        ulg stored_len, int last));
+void ZLIB_INTERNAL _tr_init(deflate_state *s);
+int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc);
+void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf,
+                                   ulg stored_len, int last);
+void ZLIB_INTERNAL _tr_flush_bits(deflate_state *s);
+void ZLIB_INTERNAL _tr_align(deflate_state *s);
+void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf,
+                                    ulg stored_len, int last);
 
 #define d_code(dist) \
    ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
@@ -323,23 +329,45 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
   extern const uch ZLIB_INTERNAL _dist_code[];
 #endif
 
+#ifdef LIT_MEM
+# define _tr_tally_lit(s, c, flush) \
+  { uch cc = (c); \
+    s->d_buf[s->sym_next] = 0; \
+    s->l_buf[s->sym_next++] = cc; \
+    s->dyn_ltree[cc].Freq++; \
+    flush = (s->sym_next == s->sym_end); \
+   }
+# define _tr_tally_dist(s, distance, length, flush) \
+  { uch len = (uch)(length); \
+    ush dist = (ush)(distance); \
+    s->d_buf[s->sym_next] = dist; \
+    s->l_buf[s->sym_next++] = len; \
+    dist--; \
+    s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
+    s->dyn_dtree[d_code(dist)].Freq++; \
+    flush = (s->sym_next == s->sym_end); \
+  }
+#else
 # define _tr_tally_lit(s, c, flush) \
   { uch cc = (c); \
-    s->d_buf[s->last_lit] = 0; \
-    s->l_buf[s->last_lit++] = cc; \
+    s->sym_buf[s->sym_next++] = 0; \
+    s->sym_buf[s->sym_next++] = 0; \
+    s->sym_buf[s->sym_next++] = cc; \
     s->dyn_ltree[cc].Freq++; \
-    flush = (s->last_lit == s->lit_bufsize-1); \
+    flush = (s->sym_next == s->sym_end); \
    }
 # define _tr_tally_dist(s, distance, length, flush) \
   { uch len = (uch)(length); \
     ush dist = (ush)(distance); \
-    s->d_buf[s->last_lit] = dist; \
-    s->l_buf[s->last_lit++] = len; \
+    s->sym_buf[s->sym_next++] = (uch)dist; \
+    s->sym_buf[s->sym_next++] = (uch)(dist >> 8); \
+    s->sym_buf[s->sym_next++] = len; \
     dist--; \
     s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
     s->dyn_dtree[d_code(dist)].Freq++; \
-    flush = (s->last_lit == s->lit_bufsize-1); \
+    flush = (s->sym_next == s->sym_end); \
   }
+#endif
 #else
 # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
 # define _tr_tally_dist(s, distance, length, flush) \
diff --git a/libs/zlib/doc/algorithm.txt b/libs/zlib/doc/algorithm.txt
index c97f495020..029e5a3134 100644
--- a/libs/zlib/doc/algorithm.txt
+++ b/libs/zlib/doc/algorithm.txt
@@ -77,7 +77,7 @@ table took no time (and if you had infinite memory), then there would only
 be a first level table to cover all the way to the longest code.  However,
 building the table ends up taking a lot longer for more bits since short
 codes are replicated many times in such a table.  What inflate() does is
-simply to make the number of bits in the first table a variable, and  then
+simply to make the number of bits in the first table a variable, and then
 to set that variable for the maximum speed.
 
 For inflate, which has 286 possible codes for the literal/length tree, the size
diff --git a/libs/zlib/doc/crc-doc.1.0.pdf b/libs/zlib/doc/crc-doc.1.0.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d6942ecc09a3f8b2d7e4b6fbecc5955121e8e7cf
GIT binary patch
literal 776142
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%0AR!_69@!d`{&0bZyEqP|nUVWeB
z>sM7a76#|$rL#tb2dKVfoqJ`$o(bir3_m=Wus1c+>*nlJidh<pzOV0Yn&~f8SQDKa
zy+%9f_o}a@Pi~)MmvniPRche>E=+bubaP_U?D?m5?Fb9x%QgRNx9FEZd&Xk_CAS22
zKAk)@SX5#UTSJe@XNl+fzAw98XRX<^ddZ!i0fkyJmn!1_KZ*{i4PVYDdN9UdeTX(!
z-Iq=w4>m~;hsTQzwkLjFxn@;q{ecb1J$k}2No?%%WiJ+Le|l2wcYi|`Uu=uGW>{41
zcecPss=a)VO|B;2-Q9d*`POBt+sgu{h2H-?e`}qcP|og38=o~!d-T|9CQL|LmV06E
zt6RETpLhj6e%mg;GO$k1Tv@iVV&Vs$MNQMMtTX$%?bsySsdHSN*6Uo@p=$l&z@2TZ
zs~n!BKHjxr_Qh9Td#=sirBvHt<63gHD*RXNlIe1@9z^sRE`C}1S;~y_h-q}Z*ULG3
zs@89PVWRQr*`eikl(zUY2G;uDuUm2V=YpFdE3O$_5ijw*6VGdB-g2~5!eODygy3Se
zqRLfsR2vfJ?2k^93cI!QwZI{5u6l)kClsy;eO_aq#dT-;D%-PmwKH{Pcd>9XPOaIZ
zk}_l7^cF6Cul3(-R^C}X{efJ=fh{IG*8EX$+{JlMy{Ecqc9KtdXV11ao3=W&nsu)>
zX#}u$Sk!)K_hZ-V>DH;duA^EIR62WAMAN!^iPvAwIXS8N4a2=PdK*7hntsa^`{D5W
z!|qoPj%Ygmc~M+w{mhJ|=Wm0(memDjgBkH2os3tH9bI5-ePyG?-$!+C?Z5ra>uxeE
z;yKm3q}(@$i-AAj^y>_PzD0qPFYWDrcGAl~vHx<7@vYet+s~Kmh`!SNA;f6$veJFs
zS=+Y;TNT{hy8E`>vo4k+Ou-MTWG|L_yfJ)Wx%SoXaLKLxW{z*Z{NP%?!iJ?X^^C5t
zo6G~zPZHj*8_Z76JEOEl>B$+X-+}j^8>yFAKRcYJ^Yo@%K$utOljV<lTT+tbudUU~
zmOtt+=W#sW-P76{wg0s?@j58Cw3_M2?eAy%q4xOvyfgFoHoje>^ryw@d9q^JyGf5f
zJLmj9A|PG#!Qfb(opHr8t;5q(<~+K{ln@Zh`D3p7T#t!%|M%Lv*Zw~EnvbQtVupfV
z#K$W=X*B|l4kwKC?e@z3zj>f`t8uf5_5b;yvo^2!IkDwt-NDsIojEt#W}dy2I$6eO
zeofe-IrsDRHeG(kQ^%jId~S=3ciToUy&dNdGw@|=uAkkpa^YpauQS)HJ-WVU)|?I7
z4`28infJ`|+qWCFbCUB7olmb^A=jZAR&ar%LZDQuBVxyOm30$895ol$|HoWk6Fmh>
zOBi`^H};k=s9lNL5(cdk2_m?@-3)!rhdD?etc8ko%?HxL4MXHLA4u!lk&lETxV~NA
z&Dc!A5Hz$NMBGge=EzeE&_=YOg(=b3ZNH87&6hS8*!w(ug*oR5qd)&TCOS)*I7q9s
zA8O#<Vyp4#mROc|+ma)`^|fuMr%t=Gv@El7sfVZkCY3DDb7!hQTR8u(`S<2%w5`Dj
z4=wiR;o#F$`IZE97#UjZm-%D)r?l*Urs*k(<iopbcFM#*U%dZ(ef7s_0`I2>DP(?O
z*gbzwxpI?x@)DL<{vX`jGL>A;Q6Im~sGrThadN?X$t5w@DqOC9=&t@;I3>{b%-z|p
zb^A|D|Cz%gzxI>&Z$<gO=@VBPHwp?DO)zX)^5pGrg}?8cwQOrb?YQ_=jJjSX*|m0D
zV0ID|KlArNtYuH-;e;t^SA`3AYCYwh*b%f<&goS84>1K6NhLN(S2t<%H~lBNjCwZ6
zx(Yl$#ru1?rL?<D{<a@lX)1>V3`-KyuRcAuPWkdjr97h<XFC$i?k|v$<mq2^?8`HW
z?>z6?tqw(1FH@UXnP5BX+Ov;qA3uB8A#g2X{r<|Zo&)~hcCYz8mvyp)>+JI!VnQ}c
zPT!sPa9iH9!y3vFy!uKUmpz>Sq|PhlO1QyrwZZpC7w3&_-$P}MB{-F2(|(*xUdAbz
zC7_nJH&5>KbS7!7Z0C)~uC=dV-C$tt;(wOu7Sop7Ogsunz74*Xd1A(m3m45b(@40n
zsV!w`{(Gg%j&jV-;%g3G|8`D8e%@K74z+6^vL5i}HJW-hnfkYv&hJ}!c$Uh6D&hOF
z?>rj6x*9tvL@3U0y3M2O{BijVegh?mN6epO(_VdudofvI-ji0{JqLvL91uPkYF+e{
zac9t)30gZtXPOkfT_E<ir08xy_dVgQCNo-{`U3l(T(dJSR^I(VggIwZw_o?7w_QD~
zU2l%;{A%r1`oN--L$xnCQ|b7r=E~;sRIA#I{G3Gge-imePKf^KnyavV*(tNTt8=R5
zXP#@=Cw?$7U(9+*VSv!`(i_R0?R(|fwPlq0Pd}KE{?_TouSN#(tk;GOoH1_q4*Txw
z2%X>KbWF{G`GZ%t-aLWWJ;u9S`c36ZcS!j!TBP7Psi~fSQq$jvNlD(KZ6+qHydQpU
zl6)%3x;N*j`hgJct?MNEjnd8(?As+N7~Q3Mxb?3KzkH5j*}feycKv5oD0rl-ZTVC2
zN9xFf==?J!FT;#yo>zMuYA3yZ+2@(j=l*DI;^7tc3R}Ei;AZGj>t<cI+~v1+@Hb1{
zI5VMk&N{Pef!D0w-MyMrC%$@1_J-qa73-26H)zh7CU)SgYQ~Y7AJ>+c?%z8%`n`zW
zDSdCYV^W=mo;{EbTz0#^?1=aQb)6z^OQyw!k^ZTsnp%Y_cbxsJmMiPeVorCwa?&i=
zc*zqr%m35$pXJ?6DDH5)F<)X`-lxbj=kEOb*<qkDZ#Q4T_q^HMl8Z$1)pkxWc^*Dj
zuf$rnT3Pp=(1g#cCfwS-`^dR>TFyceowE#7K3`?AE!Ul2Q)W3gcDLX8<<;MB9yZ|$
zX0}*kVSe=J(ZgC(4(&d4^l1F{$Ei2fcE_Dbe8!=baB|J0$+CC(?p5b1zM1hsp>@%x
zB~C1t!peSLtF5hnKPzi#rlZi7mPv`rOs8lZ3fkU2N%h1ln~lcbSQkx=D?6AnJ+JxX
z->tKbZ)2Esf5j0Sm8ee>bhlI{@ALV5`*g(Xi>I!wTKdE8(fds=PfSozTJR-c%Rx!s
z=GO^-y~<xiPnb37>)pdoF6Dg5-QbvW{YOf-+_yW+|LWz3#Bm9%-4h&F<#+q@PW@B+
z5+4e^Hv6`9PN&L?zdQ>zixu;mU+z4sZr&G^yFS*v`tAJXJH2hf-cNmF5w|P+#Kw2e
zO9k2PyShpoolwZL)}{QIVyJl0)g#l+X(XMxqH=XsSMma3hG|~f@vbW)wEw<1_WAUU
zyG*B4p7@8w=ryQZU@Unh?|G|HZ^|DrhwuEGOmDik*cmRUUz}H`&pJ<RLAjWg=jNmL
zV*CEoy`Q%v$e}vYsV(vM|ECk=^x8|Ns-E+Dd8*)HLyy;y4W6H}w%l0ayfx~|`bno6
zs}nEAo=RoEb#UL!Df0TWCq3h3-~YZ?OfcN#<~{2kX2S)knoQF+3U@R$ckg{BvNHXB
ziD=-Pw_1<lb_eUMwVrxq&ZFZu<_NJnNn1`SvwW)Utr%wb<6_*W1S!dL)+&=;aSLx+
zf7`%wdScm8mnB9I1LLnZx_&K6c-h3~-OzWF(dytc<(aD{zwI-c`SC-JLuiHb8;Lw;
zIq&<wUtUpC=q(Bk>aMt=`z(3K;p!t-CIxXXRQK1_Rjd}Ye>Lk?@A>H)k8!(lvHzd%
z+)^&gJg2q$f8W9nQ9(ampG?_TAj_DwM0eTY)mn9@-}o=Kjbl~Zvhl<7A1~Luco)L;
z>aK?I$HlzvP4AZngmgW4^z`ieZEJomlYH5b(CO?du`?{HB+BQa+uCX)88sD&2<0_?
zdj&5vt~R!~>%FyXAD4)ks8*K$p59Z*g$pNKO6&i6_}DS6<)Ib);wl{<Yj>|)6n)@^
z)~-#d#lO>x_V50`rRZ$5<(zYB-8RJ%ArG`t_j3JA{=2`@<>vc&e~bRT(OxYuzXD6!
z1bOZqd)ow5U8A;5AdL<}hlOCaO+fnawoPz0NU$$F#oA6GYAJvP^57)24Ps<$Li9Dm
zZ==2YZ@YnxbkE2aNh<wy*H_x^O_gv$xuALk&jePp>IWWkBoB#LDy}Sic0d1Xv(W6U
zy*amvn&x<H?7n;T>yK5tx_;e0+nvAv`eu=(lTO_{d$-4+ZORp6O_4=DXY#@}|5tmx
zXIAjslE_HA{j>hRe>VSqo&SjsOGP|&)406?yrxt?KY97#OqZ2Ow=NVe$+U_VI1+6C
zx!QdxlTzPLp4}hwJyN8a1h1`9uZ*>v^iWSE$Z9U{wV$lqGKq5(*KW)HyUo7e!RT(^
zVVRVD3%u0x?>v3Gzc=LGyZpvXm5n@Rx7ORukTKH={-LY#Ui^Tenq|O&6sbgo?Jebn
zH??dhy>0rmqJqO!Woh~;_ZXG=!bWwr@d7Is9h<16bwyP=VZQ6Z>a3z*o+bQQN`{k@
zd)T9@k~<QdS!}u_uO5i&d~@6{LZD(&il5Y<8LTV2c~1O(W~EfuD-wRNDZO)k{ieSg
zI)40YaBJGU+*-<Kk+qMh<XU5q<-x}8EpI+si!d>F>Ds@yVU!loXgNATa?k#0E+R8N
zsibVslsUI}d(%(LO^Zd|aD1^(_-S)}W>|Uf&OWR2#UU>&CMllj6>cziabe}5Pz4!|
z586&^^8PrPY*TGy&=Ye$Bpmqa*Cm<iCcDGJFEZvPlvl6&!1so0^*xT}vzZrqIC?(J
zUa?YY#i8(qY1y15Ji2duG9E5p;5xretdwud2g5Bq<-Fhgr*d7fnrZmA_P*`Zqs|rW
z`Oc=j3m7CgFD@)zmu(<Cca72<$7L&@PTM;Fk>mr1-;>qq#pWtlvKcP1dwI2f(dFlk
z%O!N)-hQtbv1oaMXS|Z9Rp2q>sVXN$)~$TBPSRkBV53N};H?i|g*UFeP&B8bx5u}=
z@`h$eQn-_<$K)wnHVfU%7rW4zH6@7Yl<{>Fn_838^PkUBFWp?VJzs|Dlab${H*a5C
z$9~}STmER%<(FR%K3XI4d&i`>qc_-W9yHbpZQZPrb~nC_@%^)f8PB<oMNG1_Gb`OT
zCwQvOna<hr851X+O8cPsRl@l~jiLeD>(iU{@{`XrZI~%j`QPI})$_luTTjWa^?z3I
zTr2c|u*46o*GA>vxz!e#Da+pq-(d6j<fb_Lyj^RwU!9tGrF`S5X<ifWoqV#WLB?5S
zE9;US+B3T@B&g+2SbxTKSNALZ^>+_Tc#Gtvnru0`U`hk;#qJFz)Aj}~Yn!v)Sov*w
zzLmrz1#yR<hi4yL%RD3DKda)aX?f}9bK&nIujiafFOLqHr<1*D(;4p#3VM<f@%Mgk
zZu+;3sU%INxoWOrMKy!&_Pzz*ic|a6>8|>HX@B<FqXs?BVYjO;>+tppHB5cC>(uRa
zE4DpTp0ugL{=0Nj{9Wg}dHH|OvK#Y7?A~GO_i4|I`rQ}ziKNu`^jy~2&SCL6bxGMx
zk+=!k&)fV$bTU7y-eAv>skxXtQ(a)r-v?}e8XG@^<vrl*m{ryLXQ%X>X{~nNd(Zz{
z%(SiN!_M!zdag+V2W(DGJH03O?3`zrv;XgU*_!|ASn*k*8Lq}pzp$-37tfTrYEH`;
z>(sex@5HpF7ROe(oV<I!toZel3!g2nTq?f(G<!jF>!wp@7H1YspX$c{>}G+MMC7&9
z$Svpe-e~tOj}{Nzc&?}S<rJp%Y235LB1A==WNtVs%-3tS`hbJdvd2?`%VTGTFA&^O
z|Nf)UgJY-ax@SujT<&Yglnq!NsCZB=f9}!ED*D}9Hy){JofFSg@=iv0kK9s*U))*~
z{Py0Qk;4|afnSNC{q@&57oUi2i@kez$^-$1MPmL(vnEe{W^TNVQzZX(?f&Ct8xwA+
zi`iEh_Iy@iJW$5u92xNI@AaCAOot|_h{Y++C@g#WYTt}ayVf`D`p9qCbIgO2$$C=C
zmL~x{2ZXK(EPTkYu%=;M((Pwc&T4!(zR#nobit4Heb@dyZf^>?_<BpN-9GIFr7P~P
zy>Hd?UUA3UP0Nb;IFjYL7-rS(OFYAwHKWP)XjF!Bxs{6Vrr@*pR74Cl-EVsB*lPEr
zd&3XGm31xa<hy2NR34j{@knn9Z%K@Dqb3KJ!lcj1mt;zH{kx6Xq7}Fdg=VnMx-pH@
zB6F2nU+~ec%7UPKob2b`EA9K_$Ep6>X#Mx}hyb5lKe>o|YrQ|N`MWMAMn&!NGtoa9
zHJ_N0-PXQSFzl!?TjgNW$DngitzLEGyXz-zH>ccWt2Hj1Jl(7`OTNqf`;mF6Er}18
z2JbzzVU|I=l*-cZ<BkW~Z9iXpS$Zh#4u4>)<d);t-<*B5V2T>&f1fu#7xiW>nyw|t
z5_2MzMfvY58Fy|sv5StqvwS1w-AX_4WMWi6ahu=oKd<aJF6bAOIlDIfkqPgjx{f5Z
z+22p^?M&jEv+C?e;h3h6!YessuYKrSuH>|G^-`tDA)z-v{!;DBwGYS>&Hlhtu>8RJ
zhkWm^%1mhZXtaLwewTxuT$BIto!BND-LvB54WrqOERhFaFw5N*W<1)x{zB)MRKF$t
zzb|~;u;{$Kdq;nlc6-hAxgTPm)`a^#+WqMDr&zOv?>D_XXO^;R^V#DyMVrl!S{BZb
z{gKn0>)0@-o#{`xyw`FEM!SdGo3bWxtXtOe;8C}@@DCNf^0R7w9Zk=;&l^|S&NuGl
zd?RBa^pM>tP~gYiG^XICmmf{aUljZHb1?V(`act-vlEj7jKmzdgZrarJiEc4)?Pd7
z``yWJZ-=a7y=Z%7_V4z8_qLk3Tq;|3IKxWd@8rVcr)*YhU*1que!9kedBeHwUcdfz
zdR(i#o%Vel>!QhvUW;p;y0m-3YA@EeEo%QugH3imY&_+B>$ymvW#0V0{S4kO_gVL5
zyJda(+7i2E)oR!4BL1zJd^6ayZ!2i-ezZ|%+RXP`ZZ_U}SG!g7^$e$_ZgVF3|BraI
zDdqTE#r^DVbMLJ^^&m1WI>|e_xpZxI;;d;VIXiZSiC+GFR=(oZtnRcevFWKV<-TgQ
zFOPe=%<I~spH7~0{%p;8J^kD!wqsfGceaF`UnYD@-%9N3WX%Pxzx`U@?%648woUkC
z#h$}wEt5X==y&?Oc9i2}oxqoLU?XGX|Ajs=|9uonV}5GQ{d44X*K7XP|2_w|-j<oY
z^Zn`2(&xXk_KW6Tw>nu{abmT`k>!W&SJ&*!ol$jt<NFCdiN7QEvc%*s|Gbaq?)Lhb
zO)RHeO1lh}$}wz_toeBNZ1;cWowGQ~Fq@hd285QBf?H*%O-<+`Q{U8-%tWXB3WaEp
zA!dd~3g(tZv0VBAiAAY-B?_2LO^`manwrSNV@SKBa1DczHuPnIJQ4_NcA8iaf5~Y~
z<mB7nJx&St4qPg-`JNcb-*?S#>f9AUE7u0CdSnxzQr61VZ`!~0P5k_Kk_|@;RUEpO
z?ASDqgXyqk)vo>jb}c`+|K8po&)jbpAIV%-UH;uxP1msJ`xc`X?yI|{zyF(jr`AI}
zvtD6|_ombzbIx^Jzto@d@?V4MVx75Pclw4s{8wOhPTJ>Ed*aWNMRt+vH~sAS!hY%F
zliyE^Y|mOp*GjDW^?&d0m$T(1wa<2GyY>XyN<I7Be_@GHzE@9@YjgaHMHBN_HoA%B
z+L>7gx>!fPY7V_#V?W>L*^a*ZzwW5Kl(2rmyCb=U>$bFk+niIX-{fZh<+B$yntA@0
zj_2W0Ju}5g?MG|=O3Yjw+F~8&^GGq@v3iyT^I`{XPVJ`#G7}9V@4tHfEQsggw69*d
zeyT!uOf&;k(-QyoJZj<LV7hibC*$X{c#Q`0h4#U-Y)mFy3QLRkS#7dPCCK{6x-V(p
zOw6h|bxZOSI8A?>HqVbSc9P$8#Z5Tt?Ka-ji=5V{vmS?-ne(V{CjUHjzbP|t@}6#;
zGeU|9UzZ-!S9boj`t{Z2vb8xme?`~C&wjG<=2YcbCyn1`C!0l!-hP)8YL{>&)wgDD
zbbE<QhRAy5DYqZpY>?i4+k+)yl31d5NcThozbQgTuT=POa21?9EF8LRveXK`tOa^&
z*?R2~{?;Vt|7JX1GC9@!fMMP2g+E(sFK#xR;$+gg^ohY)#@}ZC6-U}8RL)qnNGxm#
zt6@k;?U~olL>xYKy^P!0zSj4~UbT;*jqAc2rTVVj=;E-yd$Y^$To`M*_BZS3ix+R!
z*-f!++xo%Gv1^k;{_Ne{A6dSasa|bVFqqrCf6GY=F$sgD?M(mEeWo0nXQ$=xey+2y
z_>bxvL3y2KyF_R4uyF5s;eG5`a>rJU#-P*9Q^k)PZb)CSRa#DRm%viJp6P~bnZqRi
zZn?j8kLQuJ!o@mSC7gHv%g%h;AjG)Zg<-i~zIiqu`>bQ;4PUI(WFJ_IW%4WU;_#op
zs4Q*g>YFzYsIE^Fyv*h^ZPDVLE6<Cnbks)27nzk@e|9!$1)HwM`<ARf3JPDp@!x8n
zb!T1kx>)wFTVF0%x#EF|k&HrQuX&6ct1G)`iTjELH`h06Eo(fqeZlhkb%BycB(J?m
z?$_LsQ{`D;E&h4k%65T=jK7(m7T8Qb6~E|?pLS&HcQf|m_ID4iTr4{$p-Y4LPBg<Z
zu5Xqyb96fIOirGl|H-i2GGgQOR?(X$H=lgBK}p|9#h+dK)8)jc5^2S{8-i}Sy6rHW
z`>E#9f-6a9J-5%itT}VhUW4E%zwd6@8&qwjW?+1A$C|tIo)m9Xzj<(8O80EBgT9~t
z=0(Nc@s(d=@?e@_^c$Z$_S2sRS!DPv`Nh<9NXjYb`r|vRtB;55sGg_yO=agSwY65a
zp5`3;Wt{N3Z^?8UwU?nYC#d?IUX>Kb+-l{Ta?ILcpPhZHQ-;p#&s&ehRP55LU4JIm
zabC8cM$#nqpLr7c>-ZnPO_a$0zImsgD_d+|&Xq)0HeHW!&u?EMKdt;ZFIeW&i64so
zshoWUrMf>?`8|LC(OL0xs_M3Nymm*Y9!l@NS1&!YO?hf&L6p+fd&1d!7<!9(-I(9y
z7|A{hjk`1R$=>PiQu9(SANRC6d-~y}!W}!=bRv=##<VT?Adq+Oym)ZV)_FXKdHeq?
zk~os1b@Ibaqu8~ZZaVusn<RY9+^N1xPRgL;Gwa1QT%F6<u04=oYm}cF9s0eW`!ch5
zvdhwWt@pmLH=PRj+5R~;apH`4Rvlxb?1Jn*gM+KL7H@vBaKW87p@va9Pr@5KmbI1M
zf7H$=zwAeaXx_eFg-(G7wken2ywQ7h+R62PhFxvU`y28){}UV7ne`kG75&$HX;iz|
zx<<=stJ<j<dDH$+a!rm&70p{BmTs-M)-{XmNJ4e!JZYt^HfF0sI!itu-@SEjw@j{2
z-_@(0dRAU915O>UG}(}p&~Te+g0fS{wUTRBZ%q;2eWBQG#v<KACe=?ARtFt*y6V+Y
zxkz;0vU>+(*XOeyUNVcL>!vXGfk%AnQ|?5+%kEqG&DKrv#=SYty>i`Lwr=Ntt`S_y
z8sHL}^R2+<=I(ewA-2AYLT6LAZh8Ovq*m;iw$*PqziQ3>b8ownV_7201g`l0^`V<$
zmi9l)I(+2A>9)>?(~o~hZM5O;l(-kIf6?=|cY?;lq)B?8<Np5Ud0H;HA=2v5r2qU8
zC+Gj&<=1^H&LA&RRsV5`WmL*fkz<V#DVsm+^!b}D^y8KD4n`w&M-`{(DNc?OT@lll
z&kcOq(J<f0b+WwKX5l;M&z+i6!SlJ!G3fK}4>QjmyBTa2$FIInafarfS7$fv<h?R`
ztA@?{`$Y$j_q0WK{LY>g66*D3kGfy!eU`@F%k9hTn%1mX<J!^wp>4DOzXda<z17zG
zuXo^WZgIf5+L@JhT1Fo@*esNMY~!Ps-+XrE-eaBU@?$5vH|NE+a4~-1+~p~H=gB=W
zCe|Jn0Zy5-caO|I`a)LeVU1y(^v6X~77saFGxb9nbasm>tUf(s>6<UB+H>~2+PGWb
zu57tdXuE3dvMDDe;}eDEzSwWk^Dq9?GylNbmlk>yg<n_@eZJe}`DdlNl`YR5)48lC
zO}x-Q^}N00O=*t#uM;cJEuWEfFl1>`^s=saDNE-)k*bR)|0#bRYIgG92NkjXRYI@z
zCoGFvu<}IU^oMbCC;VEN_ON(nmC>u83zj#iDrtA_ySd@Y><{0vDwbZqU-Ywj!FxLw
zPo>2T*|)Dp<R@RW(BA)ot4eS2-wK(#i+QKaSo`zYxyg*~theIMZmTVw7eDuTanZc=
zlXGhs&wVyIDz?0A-lw0I{y%xT&Rep+f6Q0?@w0Y{i^!Q@M(xa9`uWLyESqD)o2=&U
z3G|iUcjeS-+k^#K2?=E{kDOlNv_bc0msU&hr(Fk^Of@w%zQlC@$(qmK9BQ|IVY$~5
zvRP;Otkli}vmG9Me5Q6?XZy})S3mq!k?j$mt&;shqJI0lHJgreigEN9gvUH7dHAtF
z(oUK)?S;YYqY^bsCmlGU^4G#kKK$XW|L6VcT1~m#REvG4&Q^(Sd0bu5Qdw3rNnGQ{
z%%wj!@6l15mckOS_^sdOkd6Xgzt4Bdn%bR~s-|y#swMku)13RqFR&@`Cf<JS?>+aP
zo44tXl|4O$(%~oXZ~p)FbCu|wmw)!xu(Zlc+`Xb4ol+!uWQn{Zzni3--Gx;}JzTY|
zzc0EbCLH6*wzRd_`~0i%t(BYROj_%G>usX9lg;#YR;j~=dvvl-8J(#!JI}h$qdqpB
zJO9@Q-Uq2uj@>a(y*=ks?it?IxrHYZ%;J68C%@@`WWQEoo_(Z_IjhE%pV2~R9v&9A
zzq9v;J?qX$J}hlu<muTEY-clrn}{fFU<>fvD#58>3sVIH1?27jV10wI4GbDjhB?az
zdhoKjCDCgr-^O@PzHKJ7@BI1)6IX2%*dzb?YvSWI+1j2vC!NjtIpN8Ii5dK-t9rhE
zxbge-c4-FHpeB_pw@K-niYI9}G2D3Z@7HU$=KJxnHQ$e=^;w)PE&FPh>?E)_ciB|M
zm=$lbCj6b}-+epNQ2Ur{-sj5vIKN|a*G(~*zvum*%CC>h^Ceb)P0+b$v-sis`OeM1
zIJyk7SN*OJa22lQNa|g4tH$%|!ntd{9*jHCvgM@x^rNzVn<QE|zomUNHf%F<kq#~W
zlvga^)>*hH>w>KRvc>l{{K>!ieObUGl~WcOA2TmXKMJ3AUcHcM>$}}&43d_f*!5vc
zSm=4D;7=1=GAEbnE=*e<Q_8(_m2Ht|>CR(zDY1DiQQNbeBa8N(+qAV%qIJKO@|!G1
z){8#oPtLono!GiOZ0p2~MasSw@mZJoX9uzAw&_puP`#d>Q_eXfVfGqrUc(EEPD>PO
zt-DyC_VkDIa_yEA&&^ruCjMMwuJy>@Ro?VbT1;Kkk=ZL+D^|<2pZ~tVQ#S9DYx~o~
zaT(3r&lag2H{;w{^s1wUJ-+(huTKYjc0Sf#Svd6tdq}k5UhnU!i8+~xhm+>LSaN!%
z64TPdyc_*YO*U`zm=y8Op~EF??Z2&-OBB6kuDSLs;>Lx>pEv(pU6yCyJY&<3H6gQ>
z?kVw#>(R*EyiT#{)@LPYvz<SlUp=~<+eBm5#-8E{>Jn|s+75VqcNgFP-*YqLo!^Fw
zT`Xqb{W)zh&$XilS6UOl-9EZr{J!!H^RJp^OJ#1%y8Qdi)Wc75gTJ~Q7USLCe&hA-
zBeMbyO+76Up(J|R)KJsjdC9{CAzQCj&%B@&a#1ygw~N11QB*;SeapgITU{Qmde}TA
zc6-RT-wfZ}#Lq5I_N-)jXEN{I`-4UI6zA>bspw#ES=yw3=k(TI5v33R=FHlA*=Y4v
z%ifdfIrHY-?EUq#N9{xAXGg9Z2mh_O_1;i$+EGrO4R+!YiM(9_(prh(ml}87m{ykh
zZPrx339~Q1y1a4CsVyd2mp81O^8DF@ouOUtO~j99Zj9P{%4qgycHPTIxL%&U^0DLf
zW>43sD$R1fBlnG}^B&bLSo+TK)?BN?ny7=7bu(vK2BaM2oBgx1wk5~$)!UCAdvEau
zu48q1o3vbTVV1IB&*qf6(qIRXXSSk~xt=IZSSoZ}DZA44?f%yh6aAMpZ=Y?ZdoW|i
zF7||8v*j6`6Q6P9scbEXzWOb7`Dp_#KTjXy%0(}8&ZxC^mGO$C#@4NWG%3)*fva3X
zr@&P&PSsM$P2b_v%BUi#c~vR~bx)hOrygdnsHtR;whnqAvuN|$gVG%rXFNEVy!v$Q
zx+jcUI_Fz#|0wLtIm>#W{)tdPWtP)41KrtK#RrOJ#%^BKxzVmVuz%ZqwSdb9LWGW-
z%XwV7MlJi+o8zZq3+<Wj9gteJxqGYA>(F)Yr%zcbUF~$N;UmY6AdV(!je3a`mkA7u
zQtm20S$V%{@(HmyE_SMZlMb{d7fkxPg7aj5a8>fLv&)$#zj((hGf(#5X61@97Iq7!
z<DHWpDfTVUEwAyZsMot<!xLk+;c1BFg1NUj?w{B`&p={Nz27SxxeV@0v)sG4Jc{vH
z{Y~+$ql5N7%?n!2TQ2m^ESx`e`#d?(Cx?rTmb<p9r`M%LPdu19>Br`)VL$m-UYXUb
zUU$VMv)gaYO*L<!>85-olEI~Z!kua1?u~2T{nwW-o3B0Xrcim;<zsWzH|KA^zwc|{
z9qr%TH=kEcP>Q|m^ncof#tkk8Ve`%7PZ_`F`d?o1@<MEA>Bnfxcj7PZ=2Vr32RSXZ
zGv91Kkw0DM?V*hh=jSxuxL+N;^lDo1AuWgVtg*B1b7!c>u1Gt~`oG!8a_-r~M{^9N
zz8+)VV-WH2W&NGK6OXB=AA0e8?v~*9OL9-VcU^RDN;X4s!lDSR)TK2dF@ILNz4*UB
z=1<7JUoVS4E{>?Oj^FQgZ1Ph3sauOZTe{BGTsiEuaQ)nM7p(TXt)C$NaFM;_UA<=!
zm-V)s65qH*GOy)Q+K=3OyXD009^CThjrQx~55IBfiyf}4wAT6k(W4=MZ`eN`U-qMG
z>~+`wwF+ULn#^yvB{H(tDNSjHQJ9u!{I8>LZA3hNuUcAl(bQu8?F-MZ>{gFYwB_!7
zy;=Lw-q#9EA%Ui<Y5M%)orlCW=kmWS>RxKOLFl_igrP--wzR6r(+V^Fs=$bolVyVh
z51*;kYIx)3wIOnkaPW_55zl66eZ2KLeQ82snxnjxPJGyX@xPu+nY?#3nL8y1F4z9B
zohA99L+#8<y4?+>i+#S$+`OiE+F7sU-N8+s*PK`%?n=^qb#Tqo4U^t(789ChP_6Jv
z^ziW;Tdy5Ib*@`|id}|?v;D3&fAriEZyRy#ZVvQd-{)(3nK{+wvdQe8uH7$YrP}GF
zt={Zcp_dnUPC1{UVAU#<<SfS7xtcQNE>WfW26o+*^ZC?o&plxg_Vvd+<$leGG%XpX
zCjGiS$!$H)BV`Kj8TnpRDz1*$`bK%(VUKz1t*g2|MEXx^ZhgC9mc-<QbqZ~9x3_ba
z+`JGqgF}3^fuLSi;-dXqv&?pD-apUyHu9h1)C$HO59YjIX)TglmUkpGX#dvdp0_3k
zrhT`J%$%n3c-Nfs2aap1ey&egV5ni3chLDk+^*S*#cL9e?l^Apc;4FJB#+)Vab2O@
z>*Wsfy_pwe-1{xQ-?h<|;ph44+K@eomb)FV9*$r4@xhnt73Bs8N{*_%JFrSaSx)<d
zjfuqs7wv8A6)pO0)+#~wxoj%R;$%z8<hBd<oXcOHz;rQO_t#Y>rO+p{o^P%!oIPX5
z(w1FI9ebPeJGVT~?fPbM=*Y53X3d31r!NS|t>k?D*_3zo=bKE&lA1a{?lJ#kFmu}H
z*?~J;CV#Wpb}D`5g!4_&-YzZgD@x`+eb}<!{vLnquQStDp8Iaxo8R)G_i+SIh`**p
zfuR0mP6?LxQ}=ESzSh5E`{eyH`BM6~=0-1#j-14&_2A)hg`@u-zRz<ANR?MD6_)$G
zPKGa>buQoeJLZ8KrIR>&WH0<--p9AUE#B;MT@m|)rdJZj=SfYHn{jpZJzK-wGZ)Nw
ze{5xV;Efe4KH7@-JpN&*eca)>%Gzs+X`J_3Qlh+8P3xHTQ!OaaOZVl0)nDeVevlJ8
zD?5M3g_!r-Dr<TVc!k`1F{kHPnx)k2bv?X#(~n)NvF*8_>#sjsJz}2H_niW+ETZ45
z+PyEezNz`krQz$`wqR}dLj|34UG0ZhZ`26Zf9J^h`Oo#PkG4@rdf^Lh9=p6KU7H(T
zZqqd<v%0QX`bkS7&8CG-N$m(@+kss&{A-1N@dz|8pQCZ+nB08EXop8hQA>7RKC(_}
zVIk9PhwR)~PNB)y7kCOzElK?myRgD<qK<TXfzssyCDsd#OPAFhnL5>j{lk5G)l*V3
z6E}rjRakTSbY+c8iSEDKr@9|_OJ1vO%inM|UE$EIFg<5`!B1zK=UrcB6XB!0_Shwb
zr!V6VbN6@aD+Hemc_(>~>9G4Ar++Fl&*WDJe>i#6;Lok~?;kwK{U4;a<6-QiuX>#N
zrz>{9Yut6~-6g&U6OXJp6=Aom-0q89d2)F5Is2tm32y7skIahP#oT{2_n_cTdG|Ac
z1uk2TPHdjb^C^q{;h$UFo130~oDuwC+VSg;66IyzbRCgZp7ODH;#T9gIuciFx*fOJ
z=yzWK?-sa+PyFx69rtI8KhALdAsi+6{pa+hq7PFg?e~iA)UstiTXW9#p}@?Bsgr8X
z9=hz19}|1PWT|M@+oL?|onE*x&racrXl*#SB=)Uki>__W@vHwCCO^rF$I^KqxK_gg
z)V4<LJb>0*1d-8s0O^CZ(%tg&N)&8t6!hJQI42o-q#SuoDUKx^MhX_7vHBndqSkF#
zg8D)*XF)p;#wJEY51>Dd$<3G9F8J?VeBs&UqCywvJgmO_q<Jn|!GtBbuMRQFuuo7`
z6;+DtQ;80(t4(jaQ+@I6r#_`SY`Q%9J9ppN`SeV|vzZUq)YY<Z`~FX0bkpwH@ZpM;
zxY%*={<wXYx`lWByy~=i%AZGJZE+Xs7YCJee?EF&{_oq1>$QbugmkodL@ZsqcH#+^
zFJ_#{As-6$g{HMJ`3P)O)Q}E3Uwy;l@t*gOj-3c#Svq;;WRFu-*8j!Us?4*g|MJ6|
zqkBQng$)(|E;A`;icj#kcv~vQ#y)b7%!3C4JUbq~Jh*WCVNuz;1vLc{PEWiKeq8$C
z=_KiSp8tEl<Ugs<3SYORUhi-4OL@=#e{anYez||b<EOWR)i2d6{k49%{#eg`zhs5B
zhwN{^99;c8-uBn$&zfq?8vPr)Pp(zb@?rCSoRnrHCo@Z+^4o*VqywLs=2`hZ`#3%0
z+Pv>klCxi=KRGDB#jNtev3`qGlb+-bOTifr12+d0-ItKDv$XKJ$CG}<COsnSflj~2
zg7)hrZL?h6^v~>hw)t_*H*dS$b{1PqCapM<u>A|OvbVTkI{S}@vahG5Z#;O!=ip+a
zgMF8OtW=8Z<=XRhQjT_KSIX94m1%#jwN*Trw9o!`hU1P*rFiDaKh6l4#|!-~{4s6m
z|BXCsmirbh?mL_woO3Bs{rb%<OZg<GGk;;}?Pauozv#ouJt{FyPlI1gbTRI%^xW}e
zim~SYt*V|CLEj&rdB6HhZQ5?mGi4qVE1Z23^4Ntgq_el{Et1gmIoyAxL3FO~x>L;=
zB2w3nHirp`%DJpJS*!H0F<H*V->Zlt?)0W_2i81L)xS2m(j-yP=9B9@d&8sZ%5ye#
z-YA$6v#2_9`Ilqd5u%AZYyO)o40Y(cyrb~Q_TX!NJMV7eV+c=9;WO)CRK9(Pt>;Pg
z%-N4?K2EPGv;EktwkqMzE&o?5zq=jesd}nt{CkBvmx7OCv^US^ix-U8j7pD~W%Hb!
zcqRATgNd2t0^c{3>j|vkjODuKv2aoRL2dq@Q~%D9w&pS1EpkaT&Oxt>tIs!y<3M`&
znR!zMMMSHQ#;Jsf&)NRueT}$%lxK*<qh_YpM(#|$8f+4BpC3(JTzvTY67Dneor5kb
zTXMBG=~(n0;>m5Rf7&)}{&H8ZJ0F(p+Rn3=<u}K6r^;z_3qLTeo|9(9_oR*QFzZME
zX;w`YDY_Nfj&Z`%)(bA0CU0ss+f_ShVfXW&YkKyq?Kp5TY5N7$rZ6E<!5s@~bi5?r
zcQ+j5c)f@}>BWhAcb^zPO57Bv7o~k@L(<<JiefI0+xjE?W5uT26cf4syJK#9nxkdn
zZqaz>zrtZDwkx>Abs4vxYrX5W=#Z<lXw&%^pCd<IvTnSxJi**yB~-oL#+_wBweUP<
z-LJLX&l9RYzTCBUsq$KtI{rzwdiHKz!1Qp7?VGiQS`#O~oan9Hskw7PhOa`<lf`!=
z<_TKMUJ9DKVO^%lCgW>U`__l~&7E-0%;Z$Z6h{8dMv-+2LJ|oEBFd{vKIN2fnA|<_
z(L;dEJ|*WMPgBa=={p2u)0*e4Vw2swX`6OXwp!prbG53~0Y7-pyjKYnZYr?2SaX`I
z;IO#xFPTMAO|9pbKWr)Y-d{gA`R3+3e~$T1OE_cDCiN@OXXPIa!@sQ6H!t4zGMRHo
z=fnopxq*j6w(PNqz2MEgi^bxz5wm~G?jVV?Dq2R$(qbErBs9p>95oRve7R-WeUnFZ
zXI$4kI?gO|TQuj+UWXqmIh)<qoo$ML$uOaM-jx=IgSK~=H><pSy@vI*mEgA0Lm7J)
z3V%0<nAN+5x%2jI_SY<paclI_WjStqV{KillC^5#)I!ydOl{MRBM-=~ny6|m$#B;1
z_OcaQUZ3(ZnY_X$I$Jcjllh=utDUE#hje7a%+8}H5+l#=k<vWle_Aa-%)5g>k2_EL
zWXz%ixn~k?@aHf6@Au36((<h?&y)^NpYqWAOvAb(YLyp*i}w|N)ab9-UpP@XZ;AKz
zIr73R8V)B9rP%Q^v2NfjbD1M@`1sQq*K^9-c5^1FIOdm4a*EM=9DQ*4^d|rHOX?4K
z^85QR^ByiQdSa6=y8V`eeNU`pf0~f!)D8y~Zw9u13lEs4`nVqWm)H8<_{H~Yz6)+H
zSuXdWAn%m2%G2N#PIvg*xlSa^{#_t>_RekLb2D2nJYg15++%C7<*P~ZeNjcT$tzxX
zIGAR62(Y~UZ@iFKGE(@=d-W|F<0k+7Seulo5-8Yh?loJe$mtIMw%&b~hdQo4OMmSV
z>l?0c-Di<ebh^d`y-Y5T9H%+*`x2)nJ%5sNyyw^XCmO4cRXtDPKYQ}t^v|hhR?750
z`Sp9Nwt7*G;&uI{^;^sScE;?V{O@~FjrMWxopsuO^(|s1^H@$haxz1?;H*kf!p|&I
zq3Mc(H|MB7>V1Et`_73#p74{+a%!^0U!;n^%qn}zX31AOIe6`#$$C$Yg&&ky%kd?4
z<<vAG(UZ}u9i~qZGHsVu7XHTju)I~qN^5i1XN@NdTEG0<veQ$WIgTgt4sRasiWR#L
z?M)LBt&>{4M^{sDj!8$R?WR?Y(Jo3ir&edE1<sTZvf_EHXIQqdj7h}sORMr)6)oY#
zW)7SeF6KNeyJXiiSB$%E--O56JB!r*nir+q;VV4kJi-3{t;^nQH<zh42A=M@YTwE7
z^Xue2+iPdd-t_+Lhj}ON=iaeC8S$R+WpP!r!R)GMxhJHKU2}`PD_**F(uxlMV2MQU
z8?Dm}w|Q1~DNb6c>@Hgzq<Z!H!S8pN7R?VoS>~#6R^{1FXU2A}jYn?1NZUC%@l2Z0
zHWx7sp2aKHn7zyhji0t<s#EGI!xbA-IR3WGJ+$PDR&B_};5Mct-q?;UGhI^S6j!|P
zTG8OR%JR>xIH9$#_ZM0E2<&`j!#rR1`R2<tWpmH3`}}P3f@MeA+Ght(+v{L!^d+g#
z$?pg2Ne7lFr#;`r6|X;85TShL2KVPQMN^+y)6Qo7_kVt9Wz0;`(|r$HW#T{ooB!n5
z;wxF4yFN7P>fK!M{)dC@&EO{ji<74Gl%LwUZo#^lF0Nto4E(h!q#iS8%gTvdW6b=%
zO6&E0`D>ELB^T@Mxb3q@NkTmIkkB<nR;w`QId>c%zTye<Jn)czQ|DPbB~`(LMt5Zv
zuMhdy@+K>(d$pu;*WR+_Jzq~HhYQ^FS#&7+^y99lrn4HS++TOiW#t+d<;;M?<|oqT
zc>I6)sq2c{M>kn<JJy}aDMuwvyvzF0{UvpE<4Z};{Aq?s1qWt5jgxrO&7P#Uu500w
z6=iSKZ|#|{@l=ST&9lHr=XKl1fT?piyB@93ySa7JiW7YYs=ZWsOadasjjg*=K3q8R
zf8pMvzhAm~TWGyaes7?0KiuK2&my&Ovv0|)8t3v1eb=<*O1i5ovs38XK56$%hNP&M
z31#6s{{Fk7HnVi?&BorwX>4V!-e*;`xDFounY?kkp)Qx<uMItJ8cloikNfKB?8-lW
zbLrI|ix+d%s$M>;qV?zDuBuojwaw3;JrUF0dMnBP?2n%{%)aye*0OOml-xLcXhPX)
zz2BES797&i3zc6zt2aAn*~T?Df7gCIz-N1CMu<u5#VF&>%4-VO``U%pO5UHW=Uini
zydXcRS4B(sanlE(n=>v5$0aW?zYsgo(YW)}o*jHQr=2+9apGB*(DXS`_d1q5i_JS_
zt9QLqd(F!4yc|hqTL0)>E<VkBao4o!fNN!r|I&m+mrXo;WaFNzOEm9@sAg_#H?vsK
zzUxDQap$QcJ6I&R<hEJLoRJJ;6uuI{sJL^UrrU$HhO@d{&T44#=H(S_u3R5ubM|cL
zzH(3zYW_Z4+&jQIUB9S!=f{ej-)kO!yuQ=&yffF!?0*`JZl$W}cIKK#ZffaXnYU!u
z`R@T4ftD{mhpko73VJ%}$;P;=hnz1P$#0WuUi4z?moxtzZP}!hHCM~YW~v5W6nrdl
z^VuS0i@8S&ESoa}y=$BgJo(K$>FaG~&BR5Ab>;U>ZQph%&3OL0+1-r}J3~Ks?&~z(
zFaLSFblIn9)e;uf@>avRwM#xPJgmj_<;}Y93mL4}o-LfsRXOQFd9jwniol2SJFV@X
zd|JJJ{<Bv+({{yQJF};5vEs*4R*SPLTEEUdeUWUt$&`PMXZ3~jikQ888xC)J_=(#p
zWq<3Rr3&VDi*>j8mZi@A@p<WHokq#K#Zhm+s!F@+t$KgBD~wB2vhe3l>HT6`=hT^P
zaJTH!UTU^~eUXerxo><?RNy|hCp@n<byUWw+?urb^)0VlwLrlxzEgdvr>}h!&tKAi
z|H)e8whvbBKdt(1XQlsq^Y+-@-8Jv!f4(^zHQ8|PImdP}_QPib_l3*po76|YyYVsd
z=e+FJmotv0togaQilt1VW7>He-C5jGR=<x*O(=3KVE;ec^UP=Y9Za=bqGK6NU6wPI
zrE<;k40(1`^hNT-4R5<vC|0!YJKbSAd4*38_sUXEzT7vQe2Np2Ib!RdwR*NZsQP#2
zw4F-XznRnfzDJx~F;QA+u}6~f_P555ciw7Bd*&#qk?{TX=GU_~o7-<bY1aH-Su&d|
zZQkC8zNcqjUj6y<V&<RTQY99)KU>@j6$R(U#?5__9{2g?-79mK-~agXa?R@>pB}y4
zJ$v!&&E7W;sMRWJcxk!6YuGa{Qh#o8?ho_T+ms$+_E#;D7ujQ->;iY^Q2MKup!Hp3
z^jE?9U>!p@cz>1ZX9!w?X4zo&Ks%sDCdNcx)KeSbT@2Yc@M4qb2CtUJg9#4Lo}CDr
z6ubM;kz2PyR4p4G1kB;(C}4L;v8=EAZK|N)s2AF4YrB44UCrIz_wVBN?mPQwb;$9V
zX0KkoE0~%V88hST)RWy22d~`y_iDRF{MySQPcQC1|NN?zxAN<|C(X1M{My9kH_`oG
zne*N9)%NfH{rpu{ytQ|`o1~4w&ZyNU_f|~l-(?+jV?p<d?Xo)Tmt6R@w{|wnb*r1|
zX2fr<cwIiKep7XvMajCI&tJ+*-??&oR=fS-V{08P7q?tbEBy4AKfdDIv&Z|_&;0%E
zt$x;CPoZb?->m%FuVLIZbJ<6;>EiY~{&8e)(z%rV$6K_o<jQX0j)Jqnshh={)cteo
zx74vWi3djivMttkpUV5+FSVUjzVzH5uAA=V?{effD_t~GnaZ_F=h4|T<*?4+ji>Ks
ztyaFEp3T0daMRz7Yj6KP?pnQMw#DsFlKEKzPPy*I3O~=tWbIZg77;Ff;AF@?Nv`DL
zycuO@D__jKGrjg?NO$|ct&5Cje7>$_9{4iW`o!MdyHsaSmim_x_k7<Cy|}feE7)Vx
z4~B@ozZJdBfaAn5-Pf}$#qv%iT1=@eSh8tfzU_^tS3X8n6=^mv*7b}CxBv9&TTj~m
zr0*Ih+?scpM~d7re{uTsU;jU4jt{mSRGsZ1!@8HbJ@xH7=^$M`DW$FznX|v<sAY(I
zT-00hD*D-tWzqoxOMWNc{QQP9_vL|UvO)z?6a4w!JULS4`C!>p?$wu^cL-R1ZQr!=
zO>1}1l+u2$N*C9Km#&!Y`pIf(t`xm<_1Zg?f%lDdH!SP&c$&7?`F`aa-Qu#6Kx>oV
zmrm<ySTNiSd%g2ZaJJ;8FvV*|+#1c=774u_VZVg?Bkt~KV*Y=!scBxs1L490{(s80
zp1a%=%YCify{oys?fQ<kC2{(le{b*K=l#i^Ba<PG)3niI!{+UOZ(6$vKHJXzZ*Pag
zgELWXzw-ZSrbcXM5f$c(`FP^Wd(Tx*BX%x+dhz#^`qh&ro;uf8RwPh$`bsCy{^cn>
z)(7>E{H@pY68s#s@6hhM7mR~Xw?<Z!nHdXL-9CNo-;P<jE+QAFe>isV<TMGDYPp?l
z^`2c1TmF|9N&2NMiHu>eZ0UTpG3h>Q)S`xslcv2t@xFSeMUI?epnElkUBQz4_-!?n
zcGK@|ipnZ_mwiO`s}J{qvyl#eWSM!`L#vylPv1-AP-I@)yr0QRz+wgCvw$T+e;@I3
zuW;ZxDG;eC)leXk>@Z>Rf%jJe6C#)y%tIMkZG0E`ryq2PyU=gR!}jFThw2UdhYq|s
zrIL2R$>>E$lezpoqsBwJCu+EME>dHjWvFm6``ek-vG=b}%k-1I*Qs{ZOuXNadzaI@
zE4$C^2%B@<XU_8?hJLr>kpk8EyEng972B0~{p&Q*2P^(CJ-g?4C5<6l!Q;5j^#X&9
za}BP{dlLRccF*7Y46|j@Zl)Wis&U*}#P5{)Q0i2xP1QWs3D&_;$1OK6x?<d-;&P5X
z$E|ePT#2jlKV)kp78{=X|E1G1<E?nJ`y7|X+fFi9*Ks+mh+*9H)RRHx_s-|3vUe2n
zZaFT{+$>sr@XpD*)piMXi<hnI<#zo2^Fpj&!>OXZGkzP^r@6WAZVYk~Qz-kCHOKD9
zw<94Rsv@es>Au{pbl|1cF5TwaIq^q7Y!hjBRocK=Z8)zYyOQm!|JBAbo)4M2|6b7X
zj0w^*2$+6PerD5^=A)NqJXk+7H&8ji_M^wTb7z)pJLEb)*R(*AO}QyLL;B9nZJT(d
zxT`|NHt87k8+o5ocd*rq*SW7>9>*ZhEy#QI_Qd&95?gO9I+6Uvzo<`6TI7kR-6V0V
z6&gET+?H(@I??dTI-LFJ1sN-S^`F<bubdb1Fmh4y+-C~rCx2H@n(=&Tm7sW)^t2`a
zBi?W>kPR-(+Omc1_5~@8Ox`>N!5y<~IDRqta0|?cy}jp#M2qr0wljeORmqW!&7KF>
zYP7ukdWY+P1XG){z>9U?Re$kTStPJrjk_QbTdZ}YwCKbZjx&sp{zz8yACI{BQL5+O
zxl?Q_bH#GzpPywco7vMdox5$mfn%1a<lcLYZyWp!dnL}kF;>xaG50wrkSQPY^!7U2
zFE-Vm=b48ro;I<&X;b@;K4Alc%Qk+KEWEk4x;BaloN1|B_EJXKMw}sg>Gn$kFL<Yg
zuiNyYYUYmZy<hL#d|<LuU#MN^oWkF)XJ*Xu?SIQS$Dkz9cz)>m^9$<N8Sg&&fon$T
z`4cUw24=xxDu>f_+ZX3)rvC_dUS_+D{m^oy5UuPhhHv?vmdrRI(%*dIQ|N)5W$TY7
zu87U}{CmApBiq7D5t++4(r2i+Rwl}yRtuO>zhL+56~3=$GFZrTt1mdd?Vq&ePxmtZ
z9p=54Rni)+wMrV_5RMG)DF2uz=HJNITyaG0<Al>`by7Vy&q!PBomAmbUtfGUyM$+*
zN9;|tD&^z67m7VY4$1!h$}AxgTX6Bm*6a&1E7^{gP0LPen^B@Bz_(M@|LdJ?JEr#7
z&2$J??LQEk@NvV$CvHs_7jv7RJ~ipnnU=#0c9T;U%FeV3n$}y&amoCByj%Bw8C@%m
zEhR0YD-T_GUUJ6SN7TZ$lOxSTw%Pl{)&|zb<1AA@eE9wHvh~sIm=|3P+*<Q&czi{<
zwC;SKde1N+a#}v~G)2pUo6fXs;rg@k<R{5R4+=tfFXV75oM=CkcToFROp;KB-hryx
z6?x*P7i_${@5{C<HMS4wVqWTEUduInbakBf&Z>{ty`bp$=K6ki&$>3F)oYf#<k2-@
zD4p}HyH!B3VBUcyoy1eleS1n85@g+Kb8eZ`e)s5p(eByYxLU<9U~Y%&<n^-RYdlR(
zO3D_msBekyi&gmM*YY6W$RQ!|xoa_Vsp5ex0sT@Mubv7YJd}Oos)x6RsQ9$%jV+}!
zW-X1|b@cd#NmEjI?>t+$Dr<Ij+Wft-?9&?_{!u)^d0+iTV}s+q{yE|gkJ&UzpLxk+
z-deIT%uf7_47<|X7dy<RKje^(H2cSulT!7h=f2dum(KbPtrY<d%X3_=uAeF?Q8IJV
zg_bQEEuD3DC4S0;UcTNauq0rkX%2VX@kI-Ri`|y2=d&nWS^n|$mA+M(Js+mkH~+EO
z|3Ic&!zgt1qff7|OuDsT-I}}e4_?pI5nJhHwx+;L*v}zt>UpN%g@4<s&Kp0uc4Bs&
zep-iXUij1pp|uT6OXGi-ZHzdv#yDg1-o5S{KFNl+W;5^m@n*K5o=X2+wkb!h)h^<D
z6s(fdd&S?Q_QwZp;o=`^^9|JQi7ZHrJ>sbq|6%H(o#F4_#r>6^F1KktmZmE5!hGya
zRZznZwW$hP%SBF86{HW=ghVt|k#A8!o@Rm1rw}(m0-6DW84hconwk*3x~etuZt-n1
zq5AXj4^Il4rW>+w)V(k)ob_d0>FmrqJI|QZCaBzcCgZwFMRflA_51(6)${OLc2~S`
zV*~^Do9p}+cFzvaw|gQ!yI}IIFOQymJ9MOQ#?qgzvr-oJPVSz4_o)2Aw;ONrh2H+M
zdTaNk2Z^bl7hE{D{pzf!rv_8z8uc{`{0+Feb%O6|8~a!5o+f_UZT)t){;a#d7Ou`X
zb?p0>r*hq|l6GDCE^1ztQMU8f=V$Ta7mwbWQ80PMJ^t@k#f-kME|syqxciOQmPZdR
zY|W@&U-s1RSN?6kU0g4ClWxD`5B2qKvDsVr@Yv4Frg`rS<9Bi9b=PV9c9e>~JM;bH
znU`%0%;M`;hrD=Yu2G=cyKUn8={BN|0>qhnZ+mCk6q~#|wd_q-<JV=+%)i)j{r&i=
zD>PRB<*P#~Jr&ydb`x@!o<8)Zq`-{(bB%J7r^Nb<CB99oe{Z{$BpxZWW&5YKvqE#2
zj4EQq7VKM}B)!5XwvK)En$)Q~vkzKSO8hphvz#~c%Cf%c2g<{FSXZ>{S)tustDkd&
z=h5v+Hc9F>`>QW3nR#|knt@()O}XdZNWJtMWxKcXMA|#dxMftfg-y!fPoc&&@3>YE
zg_XWe&)#m2U21*6WVVP_L416kx}&(1^4-6+)oaQR-4*YcHDS)obMMop9zQ4|dZjkn
zZbeL_!WV--H{P6j=g}DYcm0fI%Y&mY1p6y^HZ5A!op1WPR&3ATpWo%O)o$LLRXAs|
zS8utRQ0)p8fudVir=7Vl{gTwX(sjFX-nCUHZYme>w>A_%*L1X`x49&shFgBy+uy2p
zSGWD@t7<x@FzMKYR~k32pK~?hxBA|y^_HhKuCQg^gYWIL$^uNwFER5Te0OShSJKwk
zr4Fa7<ve0Vm-Zaw<bHif@HyAAMGvlPbZSYOf8VAvAw_8Z4lRG~WfHH>vL`>&ynZB6
z>N1m%m_PIJ8y6&Bv+fc9K55I78_B&A0b6R{YO_6@P`7u|h1+_XiJvdH=w~G!vhdn-
zz&@k+8r!sI#zw}UR&l;tHI=g}z#`#`*Q=P@DqNE_Y)wB$_hoyhpMS?`bnLi-U%@PX
z+v9m!ajkvd3_^Y{5=%5=_~db{QsuHul4<{qgo7@X2fE&+Sk2FPV{<X$+_4|;qUTMU
zv#!!^?Z060#-N#k+qcZ*y%)D%{M^;$_p2A~5NP<&b$8=2m6(8oyYEkT-Wqz*YrpD8
zZ&}gqHS>?0WH(#8`u~S(uiPJI23<-xpfKxcp`mX<kNS$;pM{y0|H<DdYoIK(v1WqZ
zku|T6%y{6gw`h*1_uAvrSGep7?fLQNC%g8QlXA&kJ~3YmUVi<3h0}7{-lb<wuRQ8D
zS$M(57c4rZ+VO?Q`(!5To_Ay0e<@!}UM6{svh>d&!((w9m8It&=)C!1f8W&wRk^np
zm+#nmP3hH|FFxXzIG*lLK6@iW`N#1Kdv4wHWYVn8<Z3gDSn}G-YH839eo-R>4LdoH
z9`&NG879n0nk(FvD$ey{z7ZvLNr%tQjxobz7T5KrP`+I(Yr;&TTf?I~+ty8p`SNSx
z=WBsgvoAHTTNqk-D)9Ka8eQF^eRGcRwa@Yi-}v^I_(kt`7rTSMeCphIB4)E>&%!4E
zz2TQMUhST?ck}<~2cN?J?%Cm-^7P~(#)i|H9s6EQ_BfE?<@ip^cHX~`3MR#$ON8In
zouADfov8IISUo~$i<<y{cA57&v1r$MouLzE&M>@H_0V27>WGQ`-rXXZtEcdu@b;N?
zQvK^%@6LqczkV&N+6+SUowZ{h`ZX{7sPyS6(}oU~9lKoQj9vEmHZDHC@9Rg`&aMYM
z3wpbo{bRNN=ElD|A%3b<q+mmUM%cbRT-8l4E*$*baqjwRx5RDR61VV(eh=zS-YIvW
ztLnJKyV}xwa+>p8%|HIAd+;Faz=BIl-JG9u@9d0?505sw{Q7ymdQbwV?3CYP6TI|z
z9~k&8T|dv}^30kg4T2MkKAt`2r}ue7R7;%G)sHfv$DddHyxDYW*Tl;{60@WZT)5Dl
z7kGE0;0iXoKEZh5C;_pnVHUTK>*l`gePKGqYQ}4=)6bn&OmsNcdnC3*T=Z0%8^@V_
z0<r1YiYq5%1?jCSDl*kO+qI!n?RId<=AXu9_8<5BG+vu9Gw^frF~3$Zzq`A28II@A
zc<-e)^G?}8=fE$|)|ouq`S~<&1=EYz56AuAFM4wR`Q3Nn`({L>Xv}$L{v>}!rf`2}
zS5@sN$9o+mlLcm``()`Y374{o>rgbZ&!`t=77$Yxbe-^L-dBsJI-V81=S^IGeBrv~
z&Y8hzwqjAtqK?ld%bR!eeB12nAy&nho_{FA_?y3!&rFZd3afG_0lTvFVCnL%ho4ox
z3&ktH7AvrOSTebC=9Q0sO_)zS^_4%ty87)#y<Og{-!kR$GTfJU=AY4W+vN3Ra~I<s
zr`eB|zK~c~wS!;gWb7pAgYvolaw^Z-?WZcKDctXwn!D{(iY>>Bn=9?+FnBDQ_;q^T
zeCxBvuWnnx*fAkgqkdYw>{jNj#}+=Y<SzXgc+z#+^D@DQv%_xfF!?Mx?S*6I_F%qT
z>%^5!EsCiX){2GtjkT*q9<{3r>09`_p04mQ`FXotXEIAoGQ+`}$Cn)Z`c*vD<df{4
z7af`%Vm^*X-aI_TaO6tS<j)gN3UApZvOncTO7I@lVw(*T>x;hnn?F{#Aaz7xd5c1L
zRg&bM%*F@57?OTl_}@%<KIhYK{eSz83jO-0zV_wK+=J<-)=%`@e$`X)yT4e`XNKn%
zds$Dc^a^tQ^!~-_@bq129BCikubbZ06>Yz0ofJREvF(A^gzv^QcGuPL-muO8Qvdm>
zqTip*yn;z}N;m#|`TBjkAp3-6d*dD&?LCxwS+sB3yDwkZSKV)U`O`__{5?C*v{eCD
zKD;+SKP!6mgczx(xqY#n7oG*2IJ*71_A>=1mQyVUuRTkQSy;H|v({Xd#lDlS$U8ah
zeCYUmcB0**#WCMfUrs-EHdB$wyee}`<&j%ra~qcW=w~m;@wj%6L${-~LtTUEOzWd*
zX`9o}zj5W5=I7qaCV%hK=4Eyo$IhME_VU<q$q&VQe=1AWg+^K$n=ehg5MOX^j=-GA
zFYM0^b#)cw+?(DMehKX_{&wf_w0Zg#4|n&(@9Xq<IyJgtQq3pLpADK8%^bB)LOVQ_
zcP<Dx{$gc@56896>PF3i3ze4x&!_D2Iq<A$-DLfO8D4J!d8{46Hynv9RJWLWR(Vs@
zdaJqnZTlmP>Nq=2*Gs)RabCT-|MJ~4sr$IBn<ig>FPu1cj>Ku7i|hwQ{N@@zJ6+%;
zFtMcj;PZ35%T$V_e$90I*U^}N{n<|!gZT3a6HDf{N>_fJ(Ap!ZEPLkgmw$;iU!JXQ
zn4MRy6;&W;p7!VQDVKkqN6&n25YAEe-k5wkUL}ty?Kx*+)tsY`&wgAm@tE0EZuaMu
zroOY<D&3^}bs1Mjq-`+#75BH`^Q-??bkvxzG=vGRF|q`;Fi{)AptV9lq^~iu1nGmd
zRS^wgq{c6Dn;7M67}6TWh6czZ(Xdvrp_w`O*k%R7=Qg)SL<c|KAyhX%e&Y7fR|2l$
z(bJyu8u2jen2H#9Up?nHSE$cpkHxmr;y2Fx`T2I*lL;*a=a@GxxwiD`-`cyne(&sj
z>`zx5QPxscbt~^z)>HMJBDd0FA(Kn_=Zob<$@00$r_XGAEMG2u`Fz!sOCg-C+&40m
zEUq^FUU}c2Yw{`i$DIjEYUY(@VzYF7jphB9c%3*|amX|A&I@5#|3?~1^N&XfT`sFT
z_9ji|K{(g_v)=!6S0CpS-@D+7$+Rk8rEN>Q819w|HG26?O}&0qe);9;)5T|rniy+m
z8Ewxoc^DNmQ!Arj*0G1v{$Ad)ajmKEwmI9*CjAQd@@?U&dCQvoH>(}C-}NT!XtXrP
zw4j4e3qA<0&{2Jusdczg$#12X<s9~I7n>Qc<`r%b@t-uKMsJmxdBIH+&y$|Xzb=?O
zy<@)4K|lJ(x4oMq4C~#xL%5?GR9i!;PEWDW)!%$<T~6m_tH)pDj`p~9-rH+2D`xV|
zibbl*wY=4tM&_~=w|i~Edh_SR9}Zu##7Ta~=G+M~k9U@b$Hm;@Q{Q9pbk=gQDUVln
zoVXj|ek4sJdRiqL*UqixWsgjfcY9Tuu3~$)Xp7SK`)S*SkE#1Kmrho3l6EP$ni{9K
zYt@&@`=(X~tUf!JFI%Qxwj-eKcHsRVdtZGv%PEO5uiUt}@skwCF^gC8H2nJJAK$2?
zrhmpcu`t%hr<|c_j;l%U4>^|bbLC%H=VWRuc)hD$;{Zc!+|;)w3Pw72HXdYt)bP>$
z!wZ%jhdk0ZrzU4_;9C2<Kfm$B(nS;f+8&!{gc~T|bH0D`X83+bBc?*7t<IYk*@!87
zit>N{_xYO$>!l2no3oDG<iFBC(f-q>Pd_62)CE6$TeHfyu*Jzw?^CG6o6k%Eru>hW
zpOsnArR2Ns-<w})XHEuBnA?~?=fKb1TC?sjYjoIhEm(Wv{^vWf)74ELCS9M<CtkME
z#FdZRb&kSZtCrRYoIj`h51yKM=cBKOuiZ_f|1W1xUuNjfca|@>HnO3~w#Y9(m~VOB
zik7)+qOR7a^Bt0|<=@<}v@cHSqRRfccjx^!WT|J`9y|T2miwXy3HO<<)f&q*J6>9=
zb9>!O<2%AzCKdXevwfNSQ2mbn=X1Z7Ue~yB*)uno&r+9FIp{>kQHj$nJZv=?RhQT7
zjW9U(U;{@>^^*xr`<?q-g4bP<vwU{dJ2E8A@AIa^9?uk|m%Y2e^Tu-SZL|0(!82Yz
zD#^`K_<iN|FFy4x%alZ`=P>-gpmKBZ5%J5vI@T~Q39qo`{CKc7naQd7nXf|X+<!-R
zoGRj3%lY!po(H+_BV<;{{XHZawMT!~o^MOOE1o)C^nAHuM&gm9fh|X>4_akkD-G9`
z3f6Drnvii|cIjSD^%Xg5F8)6!V05>W&oE_g$%Z2z&;GnCer8?MpJPAVBW4&B-R((c
zbm+G{`Qdn8UBlw;YyQV)d#ZYF-%{6b{H~FO-kgn#KmUCBQuChA<lA3Y9Xq?q?0ut)
zw*4zzwuUk_7lx$w6*?lBpYnEYl8yPgHaXZW`QY|Vc_N%avsrJ639Jf{`1G>KL)6{z
z;)ber#`$TA<@LL5%hqO`V6u3zzHx21>&Eie&T<b9PSwb^(L0dy_@L~Jr>>KdI#p&U
ziC-1sX$<9ivQ*lJQ%LO0fjM%^IU^4CmNZ5iWb%EMb_sOKdAYQqVcDn9t43$m|1pnF
zZ#~SpMcVqkBJ<RnRwrUqw(gUtmM>U#;#ZQx_2`hJ6KuaM`?k~8es=BNCNGC2HZwZ&
ztXA*inJdk{I=$+^>VS$*6}MM2P0IZx-aWHH{-0seev#tCTwZHbWI5I<op4V&e?@${
zkA?T=DK(CH4oCJ$bp`eGSrknCy}tYJ4U4U69eM`^cP_3y^(1VKdn9k>LX9@x1y($}
zMYuJdS`}O>`nv0V^|iC%r5~dfx2|b8c(^wCOzt7p=|WC^TV6=_Gs`ef-)%B6(Kq+@
zwyYShN9`y1zgqN8_LZ=if0nP+>r~w1!xQa~iO+Q1zbQ`nrID%(zj;Z_<0ZU$0zIoz
z`h#MMe{$DNI-nDu$9qNSf4BN{bsf1lA#1<jKrg?Q|Kq}HGh+nKM%zES)4}_E-LWbD
zH?BVUzTwdkGv5aqE!r#O`}XcRx_Zs=JLXoqjU>wcO#AvImOsx}zimV7nZxgyMJ$V_
zZ``>3jJTiOld{_m6XF@gb;FD_Z`VD@sCnQc=ac>1afhaM!Rl6B{%IoH3}dfuX^(T;
zxPXgm&vt(0`Nf7ClQJX2T(?H}FWjBAd_si$!YTY;GjAk5KcHCbpKiYSe^Xd9Q~TwD
zBM*D0yxTjGf$8IfPr-coOB7Yvztrrv3!E{LRb1fsOWR}a@kbgs6&bdl5VqVidBexf
zd##@82l!1iHkn^bII=aFODx|`$!Nh;{V>CirxuDGW^+i%IQMW)K-6CL#=|$mE@<34
za`f};V4g%7=Nr+FJ^U<#tGC@$le?tq)yxnaBdwwGMPDIRAVxym-D%>pc?-JOKQ9wZ
zE!zKJ=eO2&KK?StK51r0?;_Wx6aS8^IGJ3u>D`+rs`+ch^94HR{-3V&AlGYh_@7oA
zu9=b%vafp0)ff-FOnL6fs~EG0_vr+-q%sqcV$G*P@2py#!>mMN*;4M#a?38y7d<Gv
z;6(O+sUOY1^iTY?m$rKSC`;(lO*Ieob$o~3Pe|GL;=bP|zh_R(_22Ba*1fSb-}i9y
zuj&n2Hdd>bd&bKfY2S%D&AZs_XXvqoWwT;sD|Rmp;CZj?tE4lttn6ve%lJ8klCR_q
z7RyO={XhDkh~K&XR%q9G`*jTVeKVeIT~<0VPH@I!p_tbaKi_nPtTEO0VB5xB(Au<Q
z)#25$)dCUBpZ}=6-PO9lW(}`uap<f9HkY;Eo42e#csf9pf8~n!FYoUAy_*%l|LePQ
zc)&rXU<Nx*5wm~wjDn}^=G?3OA<oVC!UD5#W@rGK9f!4;unto~nmVY>Gw}LqGMZ-~
zeK5-q%`@aS8B$Zt#6ZE&0JJ(gNI~BX=@1oTO9c~<tBG9TZD@dOE3BzzWMM>XQ|)ea
zWdCh5fx7$gicdV<lG?scRN_DT&EZmBRqjP5UpbLzPo5t)PWd(e`OW9*xw`q$DetX}
zO$^#Mr~Ew2^ZfS-#i{An#ryYP?sRkuni;d-S7RE7^gNGK6DDZwj8m^)dY$|1r8j5I
z;&mjGH7hqo6rH<#I$k_v>GXG}XCIyP%0&O3TvzP2_^17MuE)pMDp!6zVrG5w+R@jq
z#l`Q(#s8^w6yo{s;k3ogEtBDBhw;2MW#aXFkDZi~idT^^Ts*n|>EhijK^sDE%I8hK
zuUGf7BuOApYvO~(OGZ~XZO#dZhl-#7WvJk$pr*jaQnzeH_rcJ*s(Ovu7=GCWa}-Y9
z<he0L`$(qvukCNsw%**oc|-qxW_CpepXvPB4$7R)lRUm_e7vzt^-@jWj)21g%l_`D
zxiQa7UR+?h^G3N@Cs-e~Z1r8@EG%ix@!Imx@fL@I>l;7(e7DRZg8Bc(`cJYchMwQQ
z{WCFX74BGRabL*a$XQ(J&e6Lkb$DFalqBb$In-cjP?74PQ(RiLGo{34`s0Nw8{}GE
zI0a8vZrLLD<U|H{yxoT*wijM<XiiwPO7?Z)w43hMp2v<=3cMFT%%iEZyKZ9jucfcc
zl>XLT+!nvb>EPOSi8~i}O<!-L)i`5H>28Vi`#g<-Oo^UVjgF^!KE28D;dh<l7<1l9
zkoOmxTd9UpWrNbi3%stkE_@U*RP5^5tts?2+<D@*`2U8kNB%oZ{Bhul$V(PAkBP;G
zwjvWZteBlHHj&Nq)?$u@RtF|#ylGR;eUs5AVbrK>b6{e|eyP4Kf4iP_T=~!Lp3<QF
zv2ms4B~G58oH@$RllZ1*J8><UX_>y$>`cfZ!FC1Ch$Gr3RN_CnoY$E5@5-lhmrf?A
z94tO)8S{SUjTXBtZ<`+)T~11IQuJ|9lW2bx=)Y=C!<`vt8+=dydF|xCa*oS_qDvkL
zrtP_GZtmY78|^F-dOUUV0gpnv=1w056V+H@_NABasjXd~vuUce<$WH1C1-K3%O`x)
zxCD<qJCRbbMo;B%Xz<kI7f*zIC^~Wbgh^SLz?Xg6hq{<9<{9#6bIho_oj37@=N!Md
z7gcK3Mx~pA8SfoE?&{gW{_+@W)N#u)y(R5(8$L~_601sRT`?=jF!W1@Ti%O{PH7vz
zEU=m+cQMcOOUBNxtQVB+^h|A|3Kx2G6jsgQwp_yAuFae8?7xKFoF~(2WmM6hj`npw
zFSb3q*t&hzhUdqQ{}g;5cD8?8^hHyJgTZ&Z9=6LpKh9IQ^2fzKZXfxoDe~#geA6?w
zai4JsS;=A?F*6~iaqFU}yt=p3X1adk>r&O)a(n6j4V&xlhp0}<w%D^Ze8v2_e|PV$
zd9&=_@~dX{yUv@hJudo3V%pmIewA0lb`+&dmG9qXrBSV7Z&UqbR%Yq)V3xUFFZEXK
zyJ6-UT=eyf?UtMOYb<0Z@>=ZJt+M3K8jZg{7wi08kfYtbqqOYQszdJ<Z(W{gar4!M
zuNQokU-&6syPMD^^wq2@AWdqLPIT74E`zvGTmH72{94LAD};+T@4mUqbg!Skdp5Vf
z|NGTernmQ5i_E_K`__*?JG9KMDy+F%K6~%)vxf0=&D!_=7UFpEF@=-!{Fa>G&U^pe
z(8|1-H2>>yQLpwSMUP!|Zxr`3*d@j7{(9-M;gq&zdEbvL-IArFwMCle7GGP@!3CiP
z52~bjyd13+v@bR-Y1whD?iFwCLMH`IW5??=w{0|g=E3ybdS}|^)4c~ihCI2sPU^g`
zsg8N%#N6#aw^<iSKTnOz`TS<vndsfeVz=FYel#}oWE&gb=1*ChwfK%7zCF2l|DTJB
z0*wYwSi?31XiA5*-#wc)TU^xl%>(`VMf`UzuQw39X&qk_+OXa2qo!MJeP!fwof{7g
z_ONYWzq<S-TZd<0W<Ep3=UZJ`{7aZr8pO`({Jo;K#IG{-&+nZ5adj<QY@hzFy0LwB
z?K_*ZeaG)`zP@IC!kbm;eB^D-pOSMYO%0yTFYjj@#@ah|ekRMhb^q4P+<vz~kH>xS
ztnKd#gpRx|%QgJ+NzSjUcy7vGLB`(a9fGXi4jM^?N$tDqANID+u3XyF?qTA~bK6SI
zj>}AlcCcSLBg;PIcNe>P@ATqK+xn>t@(M>%^QVSITk6H^j&%&l+PPAU+uc9sjhgMm
zWx{jr@#zS69A4wP)NKx{`8tXAt<%4~jdqmZma(zBTr_+}v4l3KtmCAT*G2d5ZFD(u
zhQZ5FSNwVImHF=5*Syu%`xcVL7Bl0=%mmpx)BS6A7oSpKO*Up;B6dRJR`Zt}UIV9v
z(ss-$o6}`lzANl}&*J8g@Kk0(lS9JqxL<s3q9=Hjiyg8ej!0f={*v1)xFY$8Ow2=<
zTgH?17Nwgv7qh*dV%c$Mr{fa$^V9unkIoYEI8mL_?>>D2_rl6KdIy=+Vm|s_QRO=p
z@and~8^5v*N48d8jf$92$k@GYo#2LTmG7<|E&SQ#zEwHdM|`S+oY01ffVB($h1Uj1
zP1;c1Xms<kL1yWqZm$rBql;o$S(|^na;!;pIR3~nv1!4Y=`TeRWdk;41o(+u^7`V~
z%GnWVvtmR3>q&MizR%b<ZF8}sZIFxTiCJ?TyCfVVewwFON3q;do_qbnons5*dltRT
zKC&YBL2Qype^hs%wCJZW)*~8nTf`QdY4q^%cLbVfC>QAa$cLP45Ifp@E$RyMQAXWe
z;u+y(Zx?a#2c&xREQ-xNvf}wFj*dW^3|%+d0AYc}#g4W~E*6J!_zat7c%C{ZtX#NV
z!u9s`j=<XvzvC|L5ILHBE$GTImR~0tMDB8LIXrdKro+r3@g>r_U1eJ@F4EKB&kVH5
zSnC=a;K>vv!XLH1yQ<lXIY@-}mPg?EV5td<DlSBIRn1$~ATpQxmFDLKk%vR9_MVZp
zoxEB9x7N>8xs$f?^D1^2%lzJ5wZHJ^v3oU9_ukpxy7sL1?6IAP`3l5T&fe+luhp>L
z_4-zo@1=8w6OGTt&Q4bP-KcC(xbca|ZDr@Uc|27){WcCJ{~vn#e!l-_M|HSpQ;|kl
z{~hz`{PNfAi`F+jn|v<d)#ab}{I*Q`awl2le7zIT>}djwN!}5gM5H>R_t)QClkkuA
zK~`xSw$>qNWDeF~!_hhfwXTA=^n+51^Gl18Q;QW04L~D)gh%fT4Z*EAE;~Dg)V!4Z
zq%1CoPMCd&1|m|U5UCxAGJJ=$FA&i_B>5r<LqlT)0|l4^plwA%3v;4(1FoGFoqyX*
zq~ZQ&?H0R}FV1|ZyBYm@sq^l%=<7Vy8NV0Y@Jc^0{YqI>%Kp0cMJGHqojI`}V8Jw>
zE_r^}x+#8tem#5isrMX@(WFyvp6MyiQfN$7>v1@B;Z54a+Ee*zvz{J(yK0V)WU}S|
zN~5Q9o^O8pt8S-O`M2nK=O3=Qq5J)|Z*0xq4OTk!J}b^`-+ffIe5=a*dwTrq=H86o
zR$%tC=<~Zrubw@+&3e+{kFw-LwoK&(!Xkn%&eYU?e93)IEZ~RU;SR~Ue^;zpXWVA0
z<a6+&*6)gs3vYHD;E<ljxl~YG>l#N$dcg9$M_(__;OJbTH1mQ;;<-CB_T0T=f2Huv
z^#4<jI|eujCa192Exj;lS?<0kwjO+<y)w+4<p(%!x&<j#&*)OpbLSLZCbw|cS(W{=
z%96`GE*Kt4VVTgjb>bfWlMI>1Iwl$RPI=>|`FqABB~3TZ;H)K*ul*L-sjabab?>~)
zaQVez$t%oHLk><@A-G^p<JJoGfTFw2BBy#!>^vdo=_nlX!o}0GPsJ?RgX^7XV_xXO
z|5meO&&BQQIiWezyR(hgdF###7JV-?Wlu4#$`JP|IO6{@V8_KtFZDz|cPyN=u<Vt_
znZ5-&k5-hdD8It6VtR<x74KEdqJrM4&X#H$w$4(#kg&2uBl$!@9ZRU7|6K03fjtd-
z{dyKj96Y#bQyt%|z5Op#XG(s#lyb<+TyXCa=e=>W0-98MU#QBy`g*CYNcf_+k;#jt
z%u^w9Rsn(+y{)diPGz|AT2)f&%cnmd*ua|D9QMYYYyI}3)$#vHiL!?*fx+e0TGK<4
z3cM$KOb`;>u4245>XuKIQkG|0)#fcTUEI%1I>nRp(!kY4=cLd3seHk%dnTRv5+!M{
zElzvonS`m&XCBl#>7zfD(MNx(@l0F4g))JbZNUi=CgJ}2uIugM+>cD^;!Vm-diYaO
zZCc7Qaqrol$(pmljGMb3?1>1P>8K-{=A(1cM}Hb$u-lPIXTBtX4A)tCMq%3XnT}uy
zMj!oY#xrd#r85}4i~P<#yP<nZ!DoT4jsSc1m(){7gO}A9ss8-i@}yb#*`=#WA^az2
za5oyXUga+jaC~s_zyYoq-_;hgEHdcdac#kUmG@pjq0iaYEPwf+$CAyxL-5BGCvUH9
zKmSS=ugEy2&{UUbw537)(^Cl+L$3)2jFNXgi*2@#?>oq^EFj6Y=-r)b|4J+czDhV6
zsl6>!Kk=``((SRr(x$CTc1>Px9^E%laj^lf0k7>W`@J`d9=fSWMy;G)%Jla9G;edI
z=SuyoM@=p6tZ;GEyuq+T&N<*zo~F&WO_A1`lAfI{?BciF4w)_SkJg-fGIgu>_8B7I
zZg)(-w9t#Gr)=S*`DVdJlM^F-SL;o7yEBFFYhIRftEKMpl4a8`Gc4O4Y;{FK#YCEk
zx6G@psG>^!4A0J`2mPNrRbOE;_nH}aMaeQ}n$j%Q^>-(o;mON1df3zveQD-BU0*dH
zE}24at1G*g@-BU}C3@1#gSxqC^LI2yUs`xiS60LJ?X;3*<=*X`%6XpcRoiX&dGkEm
z*tXl)?>eaa+^PD`A<?8eJrBhg51*g+?}U7zw~_IVr6*g`Icjd{zVvxNO>Odl#3Q;d
z1Kv+F3vs^#w%R!K%}!O>S9dS9c@;tw@lAHUGl}nOUZtGWok={rd6EoY^DM=0eU4-G
zolqfs_xq~k-3NXz@GUM{HBsT%*FWFex1P1U>$mK~e&5)GO6RwizbpRs{QkRye-`mm
ztIKQn<+VcgZVk7W^D>!Pbjc$<bo%v|YhFDu7TfVJiEFFg{kYgzThkSv-)1>|I)1in
zuTEIN^c|a$Hg9;$<><@F;l%NOS6pyUUO*3*2&>4764TvvrmC}cIq_!&FGxsFR<_&p
zGx6u$Z2{}#)Mq_6Gdd>ak&zK9^KRSjul|!Y4<8cyT57c9Ygy{X8@JPTocO=dS8Vsz
z)Bkk4oIg%p9iqzSeDI)}<ilC>($-J^e79`>-sWSiy#M$94Y6$OWD;i5&Wbr`^QY$e
zyq(X!zk8AxuXiWZep-9|-SYXIk1yN5=>Ekc99Yw8Cwwa8Us>{cyD8e?5%zD}`hMDr
z3$pAEGF@S&Q2lyU#2dC}brC%a`W2(B+h5tNdhP$U_NsjK)Ytsg5BGilyYhNOgq*=r
z(=&NpyoWvrF`j;Wo3)KSnJxa7*4f9aF2q|tE&E!~(a_wV7~OE`^!DsYe>b&m{rqs{
zJa-@Io~+D9=DzD<7dQBM&V9B`amSMPW#)n^@iDjl#qU#GQn)l>!*!#Coljq6ZMns^
zMseRE?r_KLrxIWO{`B-$UFbUR^26WC0%z@ssJ;6xA>sPFlE8P*%XYob*|jU~2Y2|E
zJ3G$rjb*w0tHs%+z$J0%yKPs6W={Y8x9Ia$btx^)qQ`f6mfwu7E`F%nzvX#fEJx|P
z9}K5c_m)pS@a=eAW&E42tEbM{S3ldg)@ya<&giMFw!iFFI&W-!owQlAJdah7^Y#Xz
zn<2O3_x_HTY<=_g|BomCQn55hz_&ud>Syc?5^xoc+8{9mP1cduAVF>qK<ta~Ps&P7
zF5%J-E=?+_EJ#(*cgruz<pPsn6^2~;0U@ptdTyCHseXyMsR|lyR{AbQnPsU(#rp2f
z&ic8<mBsoQ`MIh3j(I6Xspa~~MalYkspW>o`YHLz`p)^e1(`XiMIbt{D6=>}Pp=>)
zO%rNrKw^5TUukYqYLNoWBG0_Ee3#7R5(Ps;(4xa2E`2BX!N%s6Mha$zpo5JO4Ky1Y
zkZWNFFc>Nr8iH3M;#>`=@0pvJp6a9kp`D?$r$Q{~CR%-HE6LQ@z{r^3yyu)Zv7Y_0
zy9@7eU#Q=4`bc;7Ip&0lhl-9oEFPEmPbi)6>X2o*%lO9kUtPr4+R!IEv%XGV6Q_EJ
zdETxQNwR!LXGJ{O`}foQy#2qf>i_?^{r`vE(LcVf&)@&^Zhrp9Z_E4Tv-TXddB60|
zEuQZod6v&_$Nzi$xZVEWqsQ%r?~LyT@qC|`XR5l=f9bu;1yc(0xBs75pS5cH{{KG`
z1OKj{Z6f0v`1|eC$L(T|ZG~$7Wo%8JsOxT;u>O4E!v0wQitE=4=DSxP+Ff_$x6N(l
zZ@(rzvRwieF5`c@f_=}c`F3?14A-p8>?+Pows>hObLi9Dl9@}3FO{u5e<}6ao;na&
zwiiJnL{=MrFz}AaoZqN_K835*!f;u&H+z$4PS2fpm2)I?Zb<0fNwzeM*kI_k@4PVM
zhU?2Oy#Kl+fmK@hc(t7%!~0)RscC#HVmUqg+UokQaLFjQm#ly8u{I%jNtwSoul5az
z)KgsYAY*K~`(;6NG4DSYhBsdislJq1Et=C4r1#mk;`(;QdRY#g8xqEMPg@3Q7xYNo
zww<TEwW)Wb%Y7U7ELQ2oYZuPvXej^t;(N`)15C$veE4&ZId1>A1M|(VpLgB6tS0`k
zMtA3Iu3PngkG|b6ZhptPagFb1v3IFoi%&MGuKUkg^qqfuGXM4D<xj#ijCU9oo&8>v
z*E5H^-1LXt@iSs6pJm!U%-meb7nxSH`D-A<GS&3FWmD_jtSU^}ckJ3}S#&tTyz%pm
zH_yJNEaTOF&vE0@LF?V@PkLe<+$Q+7PZs<nrJIp3msRe$l{e!N<*BEd3<I+z|3_X^
zJHAz`G*Hx1HoyL-@U?Ag{^@s0D!xpuEtwi~KjZI%<6-5GXRsfupS7tr_38b_KU105
zl=mpFzP4yXm%-&nz8m?)jCm)Y?lO3{aZ$p`zCD6BUY0K?S$g0fr?&dlbcxb4o;x!>
znz=od=zT2ay!<Qk;p!iJTh^J}IKFjvO8%3r-#03T|4#MNm40ov{H^`bfOnUgwwgX}
zd{|q<9u+S2=JBl$*-N}_QnmIeOkN{&fTiim_v!<;*7R-&JNbHV{e92pm*irLZ!Q*F
z{_0MVzgG7KPu|4bqny0EW^t!mw|#vl>k;d@q1{_TPvPuNvk8-YWs6cg4`)6y>Rgif
zeOBNGmU=sbJ>BmeUVAmyiZIR%Xj^z)RYUPlP?6v~hwY0K?iAY_?CFO{$5<^k*Yy^i
z=3m-r>%02Pvd#8}WrATJ4}7rO$GldX_e)^*R*oQ_e_a=hqR+lOkjxnKe(}4i*Z03)
z+PNkDy30bn*~xqhm$=0*a$B>mpmlOrz@;Y6sXi?4Z+{osC6w?!Bi<{r?cmLKyubE-
z>1Nz;!c8|K$#gmMVQWZOxf@zens)H^N!x~8<)?y%EqUyB?<M|_X#4(AHX}B3L;q<m
zt+z72brPcGB@Mpa@aFjb@s>%Q{Yq`lF9E!po2ySv`u6x@f%T5%OPD79I?#6C`}w7L
zvBJ`VJu|sw`ZQ+8u08fJOy!C7vOQB63$rEe?JZwWy7Zu3*IllcbCqi5Rh^eC%B*%}
zp5*;-o<c6~!QDUpE?K8?!+BT4>^C#MUpOC@mL+{NQZd{9^~3LzcTIBOzq+aYNuI1-
zybxblaQws$MJBV$zH_t+cn?<n-~;O{G@Vj8-Eh6$^Ps7s>)MN$1gHIF^j|!UXJIzS
zy@T(Ul`K5)PIvJ}$0OlAyH?&_IIn-V8}G89Mg4aaig@86Qg}?^adgY&y??IvglRGI
zD0gkv`oJ?`N85wgKXpOjLN69pwF?9qw9mHaD$r2;#GCw=xp~J?rp|1MYe&B?C|&yT
zPq?e>uOh+JpGSVih+Tf3*shusWc8TO``E#4={FRkSq>cH6Y{Y+oUgR;{D#B7X1w{3
z-oLDulQVzg=EQw{t*6B1z6!fEDem;9(|I#IYEzguGqvsbxUBHBV0@}i_Q4)4gO;t_
z0-J6bD2E*06EfL<^#h?Y3oeN~sotulhf5QW&3BzFb1>;?@9(3B_-ZRzglZ-njZAjG
z<M^22bY@)l;(d$$<-5O&kG^0oWqYwWUOTo#%zpV#wI-{#kyCww9#6gcHsjyZU+PtR
zJ}CZPE&sphudqzerYj+<uItyY{KmO&k<RUqyxOOS^A&A&DjyH6UHey>!@pqDu1(*P
zZd{*Lzw=+`JN_SK!uD?e-2Mvh5x!|&o0P$S`P<W1>Q?;OQC058Z#nP3zoLFo>ijL+
z_FHA=E81Lq#rE~jt1Ww5Ke$ZZVG|<nT)+4qr`qc)r@m;N-V^wrr8&r@^J3kMulnKk
z7ccGZwCP!2_oMr&|CWQZt}XkL_1auuUWVdQ^IQ8{Ke%wS1?}FeCVy{5eN*YeLq?qv
zKjz#AaUS(wKlS-^{HoeTc5HWl-db>f#eeN91#_jM{gif3U+^b}_j+ajaxuSUA-=rs
zuUxEIqO-b=GhaA#O1fR>-Sr#$IeMy&{hPevobk8$*Ur64e`CLu)BC`c4?$CT-UjoU
zzh3h4;kCrC!MyqcBEG!qn@)RPYFpV>&b{hk=sdmWPG_B}m$gmjZrL2T>fyWN%pr&4
z98B-Ly>R$S0eADl%EYaeod35U>F7Ut|N5I!nXjwPm0no<cfIb{?UQ$#RqS*5zWMkQ
z$)fmqCGD=q6!wbSw0+*c@a5K%pH=JjOMN~g#`x9XopDpNVDtB;;~9UiZ{M?}!p`|~
zrdgp?yiJ6jn3~1pk6&Xy2z36Rw(PpvdG`mgYmYWH>|{F<9KZP($4<8k<p)i#{L|Id
z*PVC%!LBJQKcA@Bp7ZX=U46k%y!I`Z_V0VR^x$XJynChxpBz=bxrtfWX_HCko(G0L
z|9E}Z`_9u3EacpiDA5tz{i4aa@x->n{fZyf=T+o>sOc;(@7=Yxf+ea&?5`}#+VX?R
z6~Cot#m%;ve=%obg>WZ}RI1<UzsKe%YQ6p7{N>l`+p!<!>tB4eZ%r7Byr7HUX(P@H
zj8didJ|tKCdL11XZ4>|K;_5Xo6xo!Ic=nxKSS%27kG22d^Zbme+)p)~X6udSm>d1m
zUfXbF!biOd9=&?!%h{8kd+Y3UPkXPhN4wYP@NU+aRM!55kJsl{=6<Yk>k1D)=+^Tf
zOZn=}jvrQk1SJ2xDii<n+*_sMvO`YUc1M%%pY!Xp4`(+&_wET7bIw$Fvubs#g*DUG
z-46_x{Qe3GFMY;4p&{Cn(o9xp^%iV6Yw$*|g6BpZ#Nvjssfzl%hQT*CS!5+oDHXRl
zmb`!8)2&B83)cDWH4HmCV@1RYi;z^2Qt_C>YwutBbm`Ggp7malY@#eSO9P#ik9d?H
zbT;`K4Gyn^!Me`JgqUXCT6Or=Re=|J6&%y*yg}YGw$Ms#)eMwc7ozVNZFp!Ww_MV~
z`<K4ldh&Dqr=49(?mp4GR^k1(cslpXp!V~ki=KBXh!(n4aXl+pTj}Y3EHp}Zy8goR
zORr@cepc0%(d%rHbNzB-`No~>_K&Z=zQrN-XUmHftoFjbY}|EHZw~tFCw#b^$X%EA
zt5ELG8UDEIS|_eQc>dr@#E0U72XcS5Fmc!MRh2y}y{gK7{g=<r`qQC%*L|%#Y1l3G
z_~VilH*|K3F1RYSEp)Yiv+<)>n%*9g4epE;*O}|Duisd@=97bm%tYT#{V=P?8Wsi@
zQj)i<$)3<URp+7mFOePZ!ZsLQNK)=dZkS<KRHJ)p=PBN1R_Vpk)suEU`QpJ`b5S_G
zL{j(s4K6dbsGOD<fwfX6ioa!~oBqDSQ|6q|+`GZ&&7;7@(`5y9pQImhx0T9aF`U%i
zYNVsda{ol0$#&sJT^>i?*e{Ij`^0|9T>ZB6s1xtuSr%<GSN{|2ZusS{qqIx#!Xd#U
z_jJVaxBg+TIee*FQnZxE?54!&q#kvq#|!o)$VuFlxOGVI%9Ct$rsRdQTUgznXR2<S
zd~DMly}v0gCCUa)ufFDN5bR<r;p1s@<>xu(Y0fq)hes-~_R!4Kk`fa&A%lpltw+AS
zT3J$NyLj>9n-eFrdh<5&$~gK;ys>}M712<VsG#<oRl3<%Ci$jfWTkA=k)|cyPXqd*
zu3Q0!jbh`|!(!V!UM@NPZsO(M2C+VcwgZv<1us_}vx)w3<#prxugi{Yd>UWo6WSDg
z^lO!+;f*7P0>;&@q5m(i+Ls*UkNw~*{^tVg|NN4J@x?2boi_B2&U^jJul{LR@11%Z
z{RJm~I^Ej&|M9lXfoD!OE8O(E$9MA5$;k!}E4N$|n%ZYsscZQ0@SHuzBEL;Gjkd6l
z>gE^UTh=JMwvzGuHJ)#qxBe*DCMJLW+MWaFuH`)Xo1<%6QF->A=%v%yVj_n6=eb`z
z^<?>3w3)3_%Xj)peb)M_%FBA1tF-*5MxP4vdpNz;z37&#TSi^BZ`Qp#rj>?Ey{^ii
z{c0BGaPXwG7;|y<!ORISmL-03G~1i~&2h&Pf5tk?8@jVwlfE5Z=J5NV#sP^4CGC0F
zm?K_2xt_?@A*yoA;MyUL2@8Z5tlaR!^2gWyt{ds{$N3okY$|v8$g?5A`jAG$lHdip
ziqjh|W!7#vzQj;uj|}U@?Xt5icrTR*nV7#yaX9`)@VVRV6=y^26HF|4X81O$n6pZ$
zl>TrH*c#!oKjwSgQr9fjjE%W-nwdQEgtkPiYV+fhc28P7{q!=8ikqxg7wKM0xvUVl
zJkiZpHtpTTH<?czJ*HawcQb@@|BPT>o}e<9saMW2#d__M*!$na<IUFmXcygj`~2O-
zhdVx1&GI>Gv^};f?DVtr#`;FxIZT>)TpMQWnJ0EN(0}8b_ymxk8LR3GmNWA{RY}GC
z=AQETAL9YP`9H4Rd-0b4!kr?P8OiRpU)yRAaJ}KqdGOYAee9*j{em+#mMKj6dsMuA
zuHDD---RVFHoTQ#Ja%WD`O#<c361rPynFV_?z3QwDlQG!H*@FpRX5vDZqxAhpXA9n
zYktlK%?V2a4U*TNWB*;C_+|B{wNq@v0(>7vPHtxF$dlT@9=+(4N%KbEF8%NqlZ7sD
zPg;I?L+51$Uv<asjjFF)Hf!GAawI~Eb8^<z2PxMJ*B)GUVNLiFhSf#N2VULznpXBh
zea(UW2gUpvMS7d$ZB?q%o6=UQTF+E8)?c5nqx1QTd;cs>3$VoftUaptH}U(Q4b^ow
zZ0+C7lP^2Zzx#Rn-Oq>L{oJ4W-KO?W!SBEJ|Gt%3%jtI4Y<Y8D{_V+4x4unI^_(Yk
z!*TEZKVLo`*8iWk@ND&(m)|bSPY>JM`Za!!F0V!<lje%FpP99`CyX;3@9F*CzMr%H
z_xtVh|9$v)_<jAQ8JE-ddc42WEu>=lbffsk^s0&XcZ$a<Z|vXeVSl;%)4shEK5q}P
zf9?8jX55wXcdjcxHJwk^KXv}gqP@lXZCd+|$6cBK(zX76+?3P}(?3P(-#Y&#X-~0!
z)&!et$K$@te|hxI-WfY=CQd6$-?zu+p;3Ndp5V%<_m5h6Z{Kmo*G3}XtK^Cok*C9j
z&d=&^W6YR8?SM{K>=iNL4dx<u!~%-L6x3U*LNa`hs~??etsEq<J7jy$s}&3<+Ok%-
z1}y&KwUEbS|D~Yd44>uJfdOAPFJ^F3Psvo#jGFjcXit+)cv{Ho?<)(-ba!x0*v*v7
z5u(0ons?W+Qe9bY7OsyCT_r&Zzk}r1AEqw5mA-q=)=LbMc`nPtuCqosc`cA+<#LVU
zbCvn7`B(b8>13uOt1d)&Z+vV0%HV!bfJoeD9frcq+hiO&Pbo2P@9%8VyejLk_Q2VO
zWfyyWxvwpH8Lp%tkal_Nw@ntO&-H97Yix6j_xm*E>Z>owVU8S|62AR8X4ISRdT^F!
zqgb$p%7GQmjjMW;SPior1Mi%Bwdh2y&?}d`%BX`)S?3olbzqpg)!=|G=MG)((l}q1
zsKZegimqRH?DFL4sjS8_rDrS-`-PSXTr;VC@Tx#1+3BC(ik@5d6@+_ltIRK1f9_(y
zhE?KM+MPDd%L>%EAY-2C==hdJv&Y2c%GEP=KDo9jZMnRw#J-dWd)x?IuquGD;c57L
z+e1@D5*jYOT6t%eN901uPHF8`%Y(eE4y>#X`+4L^Up#Bk;%Kf#S6*FvS#^-<w5r1?
zm$hqRFS&_z1YDf9w=pl%MJ{xI<@zXF;eA0{?TcL;5+-c*s9ccnwa{@1kA|8Ozfy9J
z*4L{W6hiWLwVd4d%QIepcj+pbL%xlQ;-U)wezaxo3!bn}&oj%r!9gZ+;VqtDOLiES
zh={D5r)#xIXP$6V1&^%IzSTOc<!X`9jcOCD3xy9Xn`-G8x4v**)Bnj?txwPR2!1HK
z>h)JPP}b<x!hB-|S@$G6-+%8;^NA_E>WgIEoVe@Sw@Ig;%sF+GnW^)L@VhGyy&PXf
zZE!g`#X7>3^+Zq%cNS|v&yqP?cXb|{Y`1Dl=A{yi@Dp|oCRbJJawhLNroFpyw;|UQ
zWwW0leo^}lFZnV-H0oXHVwV$4M>}_|dn}#1*43oZP(^+><0~dtE}J((o~Jc#%+J23
z^4!&B#fJbvjTid__%E6$XKk#@Op(2JYw{tEjoKkXKV6<qVf&^M8~M~-TsUIhme9uQ
zmM16OyR+ftb-Aeq0Y}%xXIm>t7R)#`HJb18wgomO3zZVJ+B>;bwCB#!WDs=ybmNHA
z(O{lKO5ML(&9xTz-MO_YO56J%M@Z)GlB1$mbq*UGiWSSqxVOK~ZJ)N1$8Uu<s+*7g
z6MHB$^X$6AiXo*dyta4kIOY=aP$+Vl%2r$P)@v0{qKp^XSRM}ak@M{JG&*V-+Bz%m
zw$|<tqp+OYr+B#YRdQajWW2iMdtv6x*D}T)zISUp?JsY9;{2Z_>e|8#*Li)xMVpV!
z&sfGQVq)6$A$3OZjHhXLc5tcfwmf4b>~M1}@0Uxd-u^!VuAl$bXIH-UWeN9*6p7d8
z4(z<-=Mxn7Cnv{lPU+Fir#|Lu=l$>#Q*aaTo4Ug=ana&QU7UaWMNhQkY(Cn+l*l^q
z<BaYFQ<`%MAF>+jK36Dy@nQKJ$;Ofmw>EV>dweeEftJ*~MO^K1GE%?9dYQKE5KfU+
zDVuSw&zpb4I+xo=n0qH1d4+9^3SFT4?Q*8@UbknWE0=VynsYZ`_k@z*MCOAIqH~uB
zFD<Wra;RkmXUy;GR&QJ;^EtLm%8|Wm<T>4T)g6(O7faiV)x<g*nzn9sTb66sdT`7C
zkPA}}YirI{yI{-AQN6_P#e@kp?2a>3auzncTI8GF*q8Y%e}mYX*+wqD7rtr;uF}5Q
zl`!e+t3_+xx_q6abV!ub_qYOgsO&zUz5+i6g{UBv+Jib`T1_(z)^0j$9q#|6!=dQZ
z($W`48w3p#Sah0qGiR-uo5onQ@ZBlKt%sgvf6Myvb!SFeR`$m08Z*@SPpz8qM=5Rh
zs@+{DC+$yWaQL{;pV@uts!OlMW}ThucE!NbQqa8Pw&9gajY|yNGVcgqEIEAZV5RW1
z-CzIRT&P~M%FIV$Mg7rtuTC%7^{M(WyHv*}X{(!V;c-j%ZkV!ekB!lSH)-1USM2HP
zGI+e7Wwtt#<qVm#om~P!GqW}_E?O9~jN5(1jfIapvnG`X%F4`*$uKqJeD%TX=A1*W
zSpqL?^=2MsP@QkQ+`>#mB|>S{NyWcbbBtFO&r3>9T{P+A%vC(sjC&T}J1e)yaO=0*
z6M}ue#7Al!&d#2=!t~Ir8Chvp`Ti?r9$v-!HKg-I>*Zy8qN>bZ*JT{3kbd(i)L3nc
zSxU|;)4*^!w)p=azb^3LvDOkQo}RtiS|eyOPX)Vc(j{~5vH+DVr{8>CF&Z^u!jX5<
z&qd6!m_1d2>&@QKc~2|3TT?V5`K=f4+GND0IYUFhTIKlencrGgIqhV&JS2VDyZn}j
zA1j05yebQh>C(3Oj3yBacRN(+*oDpxF$z++lp@-p<uz%Np5LAy_S`2rL>=;vEIEHL
z(;-37Z<f*eiOtIboJ<%dsV_?l<Pa3*)^ZTboEoC3ovO4tboIsN)~ySAA`Y=EQRFUW
zPQK(EF56rZDgRB_<4ee?@0}~0Ri4&dUn}(?vDP(W!BVs2phEBaJ`*p`y{KMzQp}~@
zOTx}IcE&n(`7Rk(g_EC7?poS0_4@Wrte0N6EVEVYImXZ;z-M)9-OXQ2rWWd|((8oQ
zy--=GroHUMhBxiP?*ue9?f)s+@pj2~!_?1Db8Pi)tTB4CB++<kMJ&5F{|@)r-M4(I
zxUOuBKI-E0tD~o?^k$l+nDIZ>Q#a2r#4>V}<dkSOOjOWwI2B;{>rjl(mB)9*W`($}
zJn1B?#g)q3;VpaUR?@n5rmH6ewmamPtX;c6rO)}2x`gPeb2%Sh%=i1>&^?>$%`b;S
zb=EIstFHw~iaIcdR!Y2MNh~QWGtTdMoLV(Im;YAiF3+p}p&HCiM-us*(;QMa&GHhc
z*1U8|tFPzUoy^NB8=M~WpL1RI>&OZ9BqiR>cQ3B{IY+S|c(wlqhX}I}(fen5)^%uj
z|B~iCH~Hr|gR>iFO4^)CFm_>Qo1te^aiOPC`i6aDs_4#Sxl41UZta?=5GU>8*OHPa
zAobGERHjS$u;}_5Qk;EN3{RVGEdIX8S=r^pe1@G1J|AOT5%B1T$-TL?j~Ql4FJ*l7
z+)PNY`67QE+l7{fn`gun>R)}CtHQ|phVPg{O}W9h4qtZG@DtNJW^Kv16Kt5hOOCgD
zx%kJ>N5Ofe!5qSuS6Hu1e&ZXdTKeMHvnkhCB{FttE#fLxb$0jdI1u5}n%d(qy=<1n
z)ZUtl7Yt-t4mkWVf6=&KM8RY7!Y>RV4i^_&hBWg0=;EAP(YB~~xwBJ?xrwvdd>0K{
zwydfCQf01%ybI%WolY8U6xP0C_?~yi(W|K|?<LRqQo`YV`~A#|+ILq8*EC-ZTR8vy
zja=C`&mOIIY%hFyvQ9D2Y~zbX?^0OUq+5-*Bsb1T=_y|QrmtDXb=|HVfvFRD{nje`
zxilQpOIXG9*iEFoDSG3A3%Om&Z)SQ<X4!U*rTe87`{NZHt38(2OWb7fUe3HKPlWN^
zhM6Tf8x9<4YC8MiPPnDXm9Tm7p$;>qUXhhlYkhZ^GjifP2BR=F$*e_=3#T%!*829k
zwejSYo%dhv{8W3(W(((^xJIRrt}{N@;uQl~Ii8)Kwb*rQc}TcJh#f2Ul--<}cK;0$
zCf|5n66G+TQNH=X)XtMtc1r@b>2G!j`IM*m&O`3Tsk=ua<Q`02CvC@nru4e0$ctkN
z>V@0|i^I}>nKuZ@sJrYdIbg7A$+r8FmSWSM?s4)f{Gz;5B08Ym;L^p?6?2XqR?)pt
zl;ddfR7)fL#NjC3oj%!XFSHhYT(4EsdQP^+$SQ~>?U$|~(~?8%7nFnNDQLFrGC8|_
z!vW(M{$s~DO(hm*N*Eo<zIN)=dWNJaw$^ufb_MAPEP5jv`-oHG>Q}9VJ<)1c_AFdA
zXP&afx?fGKSF2(#=ZYSZV%_1)-0ko<gloZ4p{&N$i@7CsTAe)dR?aiLBU^wmuyN<T
ziz^gjPFA|#(052#;8h+wYeW0$*OhO+1}fG*Na8<}G;2fH>xT<NFK7t}Pc?MbvUWJj
z>f`RX{G0RT#>`7Ud^b;2V{uU4<HFWgs?REM;%rMy+fVI}oo|F2Io6%ic(v;Mcb6I4
ziV7W8?~Jz2;VN#4*mUYfxpn1LFUGQk3$M*vG);G+!pBvIJ3>yWotB*}mHXSkEA7gc
zAI!a_!sRThpS{)c^xehAy?$F>-##m*-`{`kcxV-G-?Q_;otek;x7R496spv@vg{~3
z<Mhw#X-}lbuWzs7CI6&Ok66|9`q~ev3sa9h59AK?>zX(5y>7wvCKlfH%l|##ZVYg5
z)xNi(;<2cc(ZkCHq1H0b(k2!b&y`NS+V-il$JkO=LnEOyWW~9=y;+-rf|#Bjo_IdN
zv++Yk@VZQctx-qRrJA@evN&B%m@VeAHqRw&LD*`gyqyoS&N*+96n}Y3>HOPLE@`e0
zcRTbn!-A7HL}r9>JFHH+A-pB!i&3k?vb&nBE3WBuSFt~Alzh{WW*B1_{Uk~^Eubc7
z=iXPv_a|j~YI;OXFxcNxWIwT6`FvvR(<SUYYl~Yv@-!ow8;(rh8C_k}xzVRt`?{7`
zj*;%sY9qs(B1Z!@tqo6d)G`^BMJ~N~?BwcUWO44kvV_F-iIQIgJHE}*W9rMUGFf^h
zA*9@|I_-*Y3`1qvn=@{YxL59)Jt@q+ru>x%-?k@3YByLfrp=gtwL!{4{-CXEpV+dl
zC)3v*R(4L%TJ>0s$F5PGNzH9K(<F)YZM97*k{T;kJd^5pl@-v!y~(#(qle{bSD5({
zrp`LC6N}1^tkqc&6)oug=0K{-2J44G=dzCdv$C5U`8?Jy!*+{V;|B&k;knBevMpFu
z!kw_KHE{Vxxx-wdhU?h6qZKR!4~3N8vI!8q)>*eoT7lso+ugQ+Rg+WaY}&L<>k5Mi
zgS2?a@3$<!ZVI%!vfu4|#W!6;?R_4<&D4t*CpZV#Zcn}};Qwmk@*Jy$A5w*uP3MW-
z*p+hg;fdy7OpCf6zUKKkQ*ht9!<7>A_*8<M%qJiC%gd*=w&tc)fp@9D(R4@KYi$|s
z=g+-A>ZFn6y`8CA*O^Ii+WeKrL-Q6CI^?>yTf103eycjOWSLl#(VCOr)^}N-;Z~Mj
z)RXt@{I<Mz+3i0rOXMWv%@c{(A+^b<c)H^634)(9cbw622}?M5TwU5J?_A!FQ-5db
z3uTwH?Xp{|;HXzDD=bpI*!r~9hve(`Rj)F6ESt18N|MRJ><(Aybpu`AB^nX8w{WTy
zu@}8O=F7EnO~~$+GVwa=hQLYUA|}he9rT~m)2MjKec!^k7r)9@7RgS!JcFV2@UA0|
zrzGx}a$QpI`4J_)s%<w+r<{<TD3{~;Rk_=frHXHYRoCqUVu$x=&FczLduC`p*>>Fq
znYK^NZEHQ}7km#@DU<toTZN-q!ENdRXP>;3Hm&yQik}m{ostw`a1-fvJd*o&O<vB)
z0+!ig&g*i{_GZq%+M2LwwXoic(Bt3EuX(0<qqlRz5nq|LVNppskC$F>>Dhd;@7R({
zDRU?MHc3~1_2Nz0i$}*S;+tN`%iVp%S2DZAfK}|$fdz$1msO`Ttw~c(owL;O)S2Mt
zoH4%ZU6-{vt;}Tb`0r=7<IJgDt&bjT`BL_9YmU^s%Cwa;=OwqT)-rl5r?vOcmXIw=
zw#P4QkZ^e;8o#{mz(?8hS0vuQJ=in*-6bQVqNd)X3~Z_C>)XzJIo`1LO85J~ZCj>r
zwRx57dhozFA<Ra&FVXL{(Kc5Hh8Zi5^5i<Knz2CRd!}RcUwbq8;O|D8C&*5pd|P7T
zZbRM3>0R=L>76A9V_rNs!l4|t!EbVRbCkg5qi;nvXG$%7<}{^gZSkUo*$ZF1><XM+
zCTD&4(EEckj1$jlrOmjt^03%sCN7(Rb36wZiHkht<(_u;f6@b%M{@(km`+}s_G{9~
zZe}aCMRP2_GUk<hS@?-(LZRL(Q(yh7ohRz7j%Qx%alD>%)2LZwR@mCfT?)%P_jX7)
z7W60FxH-?Y+}+^novX&lY?GWEmdT!1KAV#BAiaFcv|lB94+>*S<R#kI@dlsWZ0$C2
zro7{NcD17G_Y*6QJ@TE$s5*NUgP5O0pp)tDIR|HLxsdU!wEs%EoZ!JNi92+6#OO>B
ze&BuV)g<q~_ukl?w1_*LzxTkhoU$~-b8|$y1Im6}+<S{d`G4b*O|cCQD-$wxh40T?
zx9Kh0Eg|MxB`=KjEBH(jWOnN5Iey{Hb>`(4GG%zmeY~IWSZJrSDHb;#kZNA`<btf7
zR?_5v&Wb61H*a%_^Xq4S5wLchEhfVsa#?Eejmk+|Cbl@H=_>Em|12W3**GD)xXXQ0
zh)CKrRsZ0?lxIvL+%2N(_@1+$xMIY7ulZhzgPPdkgEkY7?Od^L!fN4pkAo^7%$XJw
zc!wdmpyq<zVIwCg9)~$e^Ta$(ecEy}gz4f^t~@!3*$G=`e4euN>8kQHmRoap3||Xa
ze!ctY+6=pOo~QHH8v4&<Kj8Cm@xtYEp4?-fS?Q4Y!I<@4<9hSMd{Y)Jj^Yw84%Bv=
zeX{wc+F~P4vE_=gjdyx9XLoGRn`{x*zp+g1zoOi=#HT&av_#U452u$ruoiaGT+sJ?
z`iWPQrpq#|GA-RS`^=?+it=vW<9~PW+90LLc9c_a=8}R}Dom9I`x|ziy?ax4u5Hc?
z&ShE)J|8Zexyj}PpLv?GbUsJQiph>yYEeGiKGLW8(;qjkVE#0-@_pmUGiRnd8W|Vv
zl;E6oLZLw6^P-u|o1`Zv8~$c2;%cnDxAG!WSn`Wo|G63)7UpSM`5L{=);W`UE!Amm
zp^cM@(y=nRHp6E-jP+;bZR~LIxW-fI5w#~N<>%?cJ9ZTEA36Kv=n{uR=T^3@Ud}P|
zQ%aIB-?96voo<IZ8`Qs9e5i3j<aQl}*_=E4mR){X>U-wahA%6matnO)wyr&FBK1aO
z*@m{)ZcZOoDQB=HJF$vZ9Nx*h;z`uAXk+i?4hqH#z4yI4E@h$|VmHy)Fs!Y$a!&Wk
zi^Yj4qULji#82p5XBTego9r8Kdgi+y>63aV>Nn)1`5Lnem0V#ta!22D$<cJ-C-KcS
zvJr3BF7VAv_n*D$+m@cE$*CI{j4vD%5d7?X((sFxUVl-^8oSzy>*`&Mr+k!lwh}$C
z=#zGJo4bjv<J5#Hg4xH~&)$)lcd_A$`TODp>ry29Z%ux9>si_}*>e4-SI-@Dy0@oD
z<^RJrR`m&%i@O8fInMK($UpP)^aT@E=YQ(^o2dESX2E(pv%8^l*gxOiu`%I%=COE_
z-SeLxtVlj~F3#O)`s}&+A19buhr4EENLjl{+FWDo&6QL<>Cmdrdymg=`N^BUyZf5n
zHf0=YxZECaQDd37xt0(2s@F!fhbp!+8~dlkWk{?@)3e>R|K^X&v)dbw|K`?I|NC`j
ztwhAHx#gw>5;GRXx%U2eIn&~#k<{{vI+YJMJrlg%C4N4*_{zIIMmwG?aVn6VUOQE%
z-qUu5zr(ZZPj*gm(RMVB7g_W;VTTQaX8Kbh6)r^)j_(&<zOwe{<chj1AhPSCbnumo
zivj!Y&0TbK=acX(p(AydeYjf%f(|uhGCo+bbq`<MWGCK@TVKUz{ZxtBT^p|0y;g9$
z2zN8*k=0K(iF~T!Yc9Jwq0+HtQU9JK*$e8&_;ODbE@<w)&uOo_cB8IIstD&I7j6OV
zN!$I+Lj3MLI;_0XDF1l6MgAMsGry*6YTfaeMO^8J&MVOxaod@_{ZX!;|2=V>bwfvK
zt4o&?$CU-z8)sgh)p+{%P47?3B5XGbdP@`rbTPGlm>DCQG|SXTbIF0G<FTt>3aw4l
zEJ=RTzN6JKe8QsbHXmlbIcGR==4tjjEW-8+j=%Kby2A8>ed5)YTbxUOG|Y+cP3PXb
zAe@Qy+2nWqHL|R+>64~sN;62vpG}XoeZTOx&Z89RvTmo0o3j<g75LX~T~o9s&Go8D
zNZiz!E0$j3T5x;emZtuOYZWYsm%}b4Z~t%nd|9w}+7-8FqS_9QF_RW9%ghQ?*ww%`
zSMp>~fI~#x2cxp!rQV&ISKch%C0g*CVWX(1gXqBtN9HdVnkXvZGTD6jr1{1xGctPa
zY)zb`ze%jg@Tl<hbs6T)&nn%Tea=p}`h)9m#a5}j)SiHB$^Cji%dRp8_<mY*ch0sY
zzs|`r3s<=5h1W|iU_SKgu+c>(H<x3Py89D$az1?a_oJrZA<1y1gcxp<1Lbqx#^}8C
z{S;kfc)Pk&v2n$!lRi5yoSLsNRiHvLa$(1=cP-8C5<$ljIs0l^7Ns9tJIVM-ml(&D
zU#wO+ys=`*rlBWJBwxLfeMqcx;!2)rGwy!ooM>BAu(E2Un5@c$-ptcSo(cvrCLSy3
zVtT0LqU#xT`4H<Ok5Jje%uka(X+N}(;ylJ=_{p}-$tF?u=7dTc?Ze&{LE;+BhayG#
z+LtIW?Q9fVe?fptC1r<V<YN`hhwKj%+mGzsZP#|(DR)Z3@~+86#<{(-XRANantolM
zy(F>G-DJV7mu9}<i?e>FnG3eX@dtfoyg2_w)_gvp((euC%xmo*z7NX(Saj%wL5P6p
zHS0}WsuoUZLNAqVI*c_97*krkj9<^(F?EOY>a#o89v;(3Hh=PLt*Fw|MFHpktl%`-
zb^7s?CJvW{500Jw{7=0lCSk?VT*qVK34aaGU7XE%{^FeLvs``HTA%lRzb86jV(GCn
zCDB<To>L2)q89&&kzJyE$iHvZN5QLHSwj8}w@YMidmVYXN5sQ4DbbnNxl!Or){}-j
zM&nSPGih%&6z^_5Z&q}uJoJV#W7P}J+(&zv|FrN<{1`bmR%64${~AXwT0U%gs9GaF
zC8=zI;e=T;V(ou?SmSjk<JD}|3rimHr&OrL>VK47G{^erCFQG|gF3=18}?j1fBW90
zkA5+SY#$tsp4DNRo9`*K_DrNue3!Vy3!T_o_3v~_pRMe8QOD?$y!qqx`o!fz4UQen
z2d>yk%s&-*w!A{Jn%||*hJ9J7uDX^*v)57X2Zkq4mr43%9y#BT$FZqayrs}Oip}il
z#KhthnKyoG&z@=2;EL><`}h;b#>Rptjf>2#+82f`V|L-|nGsO&qb<GLZsoTuk4KuB
z7Z$1>F=J|DdwG?)S*mmS5k~vko&1`dhMHQ^dj0m6Pdk0B6>5YYZDY62?|v|a&0ga9
zo3H~a{CmXj6kO78I)2HM-Pn7{f=yEXtk)}?THAl$oiOvCn)E``-HqD$5@s_#?-27&
ziL2wRIA-yH!~W6F;AKn?GR)t$obGwm$RlPK({;pj-HfL_uMRGD^58v?yvWCH@wL1i
z7xh>x=80^rN!j+P$j|Ifmn&DrlWC`=Km5ynI;pV4=B?B+XQ}>A?SFrnto~TM$8eVG
zsbhkVQW?yvB-|CM*JMc<-DUo_MPIh*#Qiz%p0x<<Ec<R9wb7&E;d-Xe2d=3FE$p-0
z);(j!e-<qcJ8#D3Z5N+2F{YebX}@rZfxo)pNm<1JJO0x*Hl1CxCvuU&vx;k*RpoCQ
zL<*kS{cQcM$C7sQe%mEWe~fZ_GW+qKnD)P({$@YF`CPL&DE?6Mk?XWe&oi#x@z@u6
zch%8{!M5eHK@wXM7Abso-`{%X!O1PV^@P$&&L2(c`w+wSw7Xib*;3>~Oj+sS{L8!a
zePir$72IYzT$G(Y@l5Tq$3~NW-s5aJ*(bPP-#fpn@AL!T;(s|Z>mMH|mb`ece}Tj?
zUN$Sex($j_nIHD`{?={Yd2oZG+m;!;3l02^w|-~c{`}JJrAK+%msjiUeQY2#&-;DZ
z%c=9czpvRc%|GRDsfGW`#jl(6X1>0(yET)mp=6idTs}+D?Cqy#pPF!2MrD`Y-sq+W
zE~c>^jq>^PewM_(QIJ~aoj+~m(#P3*s=Os{%vNPKov`XNQ{*Cn!qwJ#HZSg`RQ|ob
zM51W=_Q!|bWLxM3a6j8&a%{!j!kesG1u~TnVr%D}z95tRVFBB`qGj6!Kd2P-EPs6I
zLyD^G^tQz;ReHIzb~~P5`thBR&GciRBP;X*6x*L4QkQA7<v)9QN#FT1HC1}O%Qt+8
zsoKDNu<yPi$LB9GR{eetcN+9}&g+hnx?TA4%&YR_u0D$jt@KP5zS#ZdmDQbJx88Xl
z7tPzD?-R7__oDLw^Zs!Q>%QD?z&V+Zr`TjW^W{R*d3-$uB_`}_*PXUAAGUs2k}yNW
zgT3u$?(N2jxnXx2UvBvD@<7SH-Uoi1+csAk+<5!!ph5qOraQZ<4R%!fu^$uiz0)|c
z>7ksDenM=8L5*p0wZYyQ=cj(Sd-HB<V$%I@i8F#;+nwo{c0>4Ezjltg+mml4>S-$W
zuG;IE@2nA6u!Fz&qI3RlgX7wlEmvmTvGdWZxpBHi;^$1(iG@e+O}ifdWcIYWzkfU)
z8{4ZLKcpQbxL-q{JGE(juKonoY32?)I9ZazxVYX4>V6C6I3er%^~Pc&Uw7_;tLYn0
z2F4!0DH8O5!5)cV`!lQU-mq~fy3J;O;<Y*4bg9GrtrvHPafv#3F6@!!>X6BH+{)DI
zr?7EpeP;ZlAdQ>ltXvD4EjIs&dURyE*Y*2;a~$HP^*ij@z<g7IRW|nBkA+A31bJDd
z^ecD|=VsVAdN~>Yxa-o&V3Bup?&7Tn)J^#BOqr{vp<1_1W6I@sE|1(MUq3B+vu>7K
z-S=a2JzFP+*=cC8K3i=USvBeBwh1<qWH;TFKQuK$w;^7n@ie!KAj7}Dwo}~Bf?Ib+
zf7<T!qhq1kp;+y=nom|unA>QopuT^B+LQ-N%;zdL&M>{#rf7U~H*@8Mm&^&Aw_QxX
ze=K7vb^hG6B4??<U&}Iv?UN>0o;WGC*jj$_{ZK2713C{lJ0h>%y!}XLp@8Jdl`}-2
z@n6r{QKPwyOY=geYyDS^4-QRtmkUobP(73DUH<2k(EN6Zy9JdohP%VWTWm@m9F+^}
zYCGLg?6Ow!udu-6XR<TXqEG!uT~_EM>>F&9;@0(Xv)|?SQYZ4Sepouq<6VE5sG-9d
zw>{Zcr0N?yxGT20)>UfV|2wan>FNUi18?{ETW#4DKjCeVkLeRe&e%<1{xQcUZteB?
zxqbC5C2i&m)f0hn3776)vU0I6ne@jY?0KeYeTw>x!Z%T2jhp0oQ>wd9oiWf{5UKN9
zn>Bg$Ry8ie>3gJ&`afAukoG?}%ZbNT@woTyg9ilaj&VynM;*)jF7<%riN%{$N2e(A
z$8=vj-Oh9~IQhWQr@|a7&m6X&$l)}jUPw57>J+h!H_y&d>RSKFj@{gIO_{E<nr_$&
zo~<k?mvW!~;u1X)XB5`KzajDE%SUZ#-sd-jP5k<}mT7OLx<K%QlfftNX=cXOH|IQx
z(f4Vc@jd^Q*{#3RIaB1eX|%K6)0?UHz4F+-t&_|(+3Eu4U3c&KJA-+BAxHa{g2;&z
z9~<**KjbX>HhF&F^|0R#{W~MtC(C=ju9)%gN~v1L7RBlDTt?3NzN=>{n~J`ex7sJ>
zndQ-C+6VreYWaGC<4DT=?LJaEXSZ)nxt5r0l)cC5)0f+vyDrp8Ixfr<*r_yav(-7_
zTi0bea?E8DWEY+`Su-O$YfonW!mCf*B#QV&nPxuP@hwdHjI~|cGV28qzoLph^KD&l
z+xGC)h`JoJG_fj&x%V3cIx71PcYeB1-ypEC@7=o)3+J>v{avR;!k*UmA2l^M_~{kN
zs=G{JvG}(|yZt3UPx}5RE3Z+H$Cx4KZeGoLpQj~vd^#5=RKJL;?CgA*Fs<W5AUm^v
zOMjN}G95Xkpnu0UZsNGs!4UARcaQ#MjxG1~FIu%cSeC!2u_N|iIJ5EZj}wpV_PN%2
ziaR7Qd!a}6-MQz_cu!)o3rpGk>{z$Lu4Dn8%;$WsB<-)C2tWJfgLAn+inr9dpMQ2O
zf2;6OWuy9qBDd%*XEIbIHYt_NWGqzrH+@_F&7CUl=Wg>Gyf2uh%&evQ{>e4w=nW61
zUbQ~By6vIwcQ@(%`}}IApRkDyy}N2+D-&1!1fMiHBZ;2so~)+3MX5}a;*)&6_AmRB
zHS2DOn!n}QvM(+?Cp2rj-ixR5zuHqfrEKe`v>=<)OW#iDtrpm8EVBOdwB7n?@z-uU
z&T!v!``@A~U$%Z&H~Dbz@#Py&n<QH<$X&eo`KyQKg?Ih$)gBUl^Y@DyqyMtvIloT$
z<)1zl6m>bAvGnEZW!Gb^cAm=q^5~n_mn~d*PdimF`M%pXB}c`rS^Hwq_uW5CCovt%
zo>!IZ73!8~?AnvU9CnhC?Sgk=B!AV8E_b<`mu~&Nt=G+>+N|PyN7FdhC+6UErEgnP
z+{=Ut6<IpsC%-wg)6nbSj3bKv-hYBF#Ot5r+L*XXLd!SpKvCAau)tqmGBSRZKG`UB
zll^L-XnjB#-!r4qN2?^O{LakPl+(Jm^RcjbdFi|B>TKMrr!Jh9H6{M4g72x{3L3eB
zd!I3$6z{!pT`#)T>D7+i%&G4>OW5zM?>Zbkl{azmhMZsTyl1R0Ssq_7pC?0bm5h#k
z;>VJ&0+MFGw61>t%^>vhp5<C4na9<y%Wf@Tb$IwJX@;oWo)cZ^c_w^YWgRY0+p{FZ
zrg(<krYEveM|Nx!SXa~e;jE<K?l0AC`pkQ**xAj6Ce-w9V?Vtzvmi}y^0{Ao#MQIp
zd|uqWy8q4=@0&s4+o!}E^L$U*uF`+t$*fO{z9@%ok-t^#aAd#2>W7Qedw+j<aOhxn
z@ktGZ7n9U4et2O0IWG7Xm(T4vdn2W_&mWH!?U&^J#K$CT^|pA6eZ#x<x8W{Ax2IqI
zJVRnt<^I-PZ@Pm{E?Bku!?U6@k#R9H(Lc}mhMM2_k=eUT^%Bpji+jVCP5sPxwJ`gn
z<Aw~S2<7)eS@#(O_wJiq_p;l3`6Y4gAc^*RxwSsK0}n--31&Q-nlE}z`04Uj2gR!S
zdq3T7yRqj}fgV%Jc_rUvS5h`cZ?)**ZdbiLMe_cOWxjij_BnsdZWWk%J*h8i<D|VG
zw5=AN`p(05ja9NP@k;6D@Th+W_3s_uRoQEM+v?kjw(67V8O&NWA@=>-Zt*r<d}CVX
zT=P;(ZcT;loPSyAD<7<$>QR1sjRf!9S3eKtSxS7IT=mN@Q^$Ve$E}<6ME0>Ra<5yr
z$w>c|Q1-E%Q=YL|^G}}AeY=14O}(DuBH=0jI$n4$UH@C@{k;3(m+em(m`$5pv*Km{
zqlzHk`-QXbXZ=#+UlHy5-|+bLtY3v|H10h4s#a?;bJZeCf1yj+tV_1Ye0k8(cC^jm
zq{r36<@}BzZiY_MyqC@_7MH63!)ohV?-RB5f3DwTma?1==VqThbnZsao`wyw7Z?QA
z98S=>6sdcV=h=mnpiK=@^K}^XGI#ytOpbDujp}vWzmL;@u9-xL^=j5D3%_VNTxj4j
zeRyytpBIa<>7-^O`N{mOEa_5OE^JqgHqU%1aVqxG&m_%0K~I4TI$<J71*uj`KYYk=
z7S!$t;mGicJpR~TM5oC_lF_k}HR%ppGL!K+6{%@cpFA$oni;^v<2L=Q^88I10gDzM
zoGG<;;Ugi*>BSHG=7h)O-w^*Hrt<foy2gq0pVg~(96C6EaSH=0_rmHhwwA!T8=Je;
zc2`KWyOsLQ*lP1_!^4EX-rjKvV)OsFe@vUOTth}nQ~kv21wnhFy(G?7PIX>vXf)OR
zcEhR3fs%JGO{r2np~Ga^drWJ-<A<(hGn0K{0+N!8Q@6iq^?!5jX-wxduD$v{MU`t=
z89fuM8lGqzobf*+LUreoi)-iHH5Rl}=)e2&qQHb0u^*q8sL!`tZ<f3wT3~-fQ1toE
zuO-jjHP&}BC^?*VR_A%>^Xu0s*6HG{A`Q;-B0~OD_s+iVy6$nfpO0XRML_<NDTfx?
z^&72~|M60H@|+Jbr@NBoloSRn%DH%OMZ<?fli~w{gdRIizn=Wi@}|g36|25SJ~gwt
zx}LkPIF&aoeqq#-?)y7DMK)yo`IEW4DPx81`$osoXEAnKUdOM<Ki4?HJ-t)^;hIg4
zCC|@Vo4EC<VUmGlAJh7kGt&?2_1Y9G`5f|G*Q|2s;1n4jXORge&l9`FHpWj^ZE^fI
zZQtU;P?0k8IGN_xZ)a}(B`qGXIP>A7yIWTD#^2(;S;7DP>x@ZlQ$7`Hde_L_p4fPX
zSDLry-(kf&d@s14<r{3zQTx-y_Oq`oFH_^V^fkWy9%^p?@6}41x&4~S<UQkB(y}Gi
z%gj|HjvMBD<#_#IL3(VPsGGCwclFIYEW*V<w=nDaB;UAQnWjEpM2#mgx_;6w%e~)w
zFUXiLS~4^H&NeN<^tj$bBC5uF*S~iB&&Z=Tf77+Uk9R%&VL0POm)0>w^(e2d<XcPj
z3N7c8oT(V+V#8;cGl^T^xwY8zWrf^j=X~_s<yCnPE+~+{&uZgj7ro<5Lp4)@5cAXK
zz?<6P9T%eellysAwztiZR4Z@z7g1bvyZ`eQuQM{oBd2i{1~YD4`1b#S<cHsU{P)_P
zY|#rcU6C-e%TI7h!;)GRu1V%skA8ol*Rsv#>ke-}p{q}x+*@Y!MO<x07LV`Ny#+?M
ztq;9pnDFhC*}sg8^~Wb)S2H<#C!;`J(sEA3n!q<n4*EB5n}od#b&fRHyoBM#)3eeF
zy!yo-Uolr-jrc72rPF))nz@gB=EV0O=_x$kptV3R>Dk6hHf)x`e4e|unyR*?<g8;m
zT{z!ZbK~@9Yk&InoXt61!jR{4`=rX=CRcZbQjw~T3)36t=@xbUpV`d*GBjon<5u-6
zshifyt!cNen)=OD#cX-7-L@O9zfvpR7HmJU=ahfY*41efU3W?zzLsUlan7m1;+pib
zEh`FwbNni}55L(n=XU6ymwV<MH2os+xk@8fvG?O|KQ6yhH>J1a#C>bhpR(x*>-*n-
zZ%nWKq{5TJ(zy8dV&g3$kC#mU{dditxt`invY&nk4E?aN=hzw>k(It_Gwv{4m+MW{
zJ=t^G{FU63#k-WJu5@ZCjO)7^E8>@Gbo&mo<?ZfUXHTyzS~vByqVu9j=hBq)@=u8|
z#h=?9R()#g?VVv8e?Glgdp#n{OG!zuS}RLj=cm4nskpB3(sbsxo(I_{G&3D3UUG_U
zUSDVQPZPe)I+kz0dItHX=|}&bG3oB2aub{LcMq+1cb=A)c%=5sCKt7!{=EFmR~N5u
zDz3g$lP$;@+%Ly#<nb-NJfq=SQNZ>c-M>SdjZX*HGi1zh|NcJe+rpeV5f+h_5xZ*d
zPV!!<crRn|9HmQ(*T1|ZuXOaBk*DphODzGG?_}by)#@HS7(92Ygz04GsZKent<!H?
zUwyIqmUV2_m(b$>_oDZ&Ive}rN!IVBS6-Ae-<#9y%qV%`^+MP5l<iwztiJV3tjj^Y
z+~?sH&L0ar;!Wq4a4Ed}bX47V!pTdYSA}J;FAZHdD|+&}C#{#3Xm4B?a&PsGuU@mh
zSo=PG6jN?@bJ>~$+tubaO)`DCI-+&`%-wd*w=Wo77nu6e*qD>`;q0?@A7(pLYh9M-
zeQqfh?yW3(;j6>8pj%%&rv=|CX%$#%R$Ert#U5-HS=YDg%S~hVv!4Q1?qT1Z-uB|r
z6FZx8%=c7FUrv6s$>g3_T>a}yD?>JYtKq9(uTc5w_wkK-EhR6DZ{*7x_n)5=)%bnY
zO|!}OrTk-e?a+96X><9vC;Nk@+HHUBqrWjrIrQb^e=D|Y%~k3Sefed<Cav1Ms;Nt~
zYV)eQ#Osb^uJj5o`yM^jZ`y%fCGJ`Q)9w1V-ng_>n}1!&%gMLWUS3+BwQj~dgWTO)
zpP#w;kKtGFRKJ~<R()A{$01~?zv?XS(5eESm7e8im`z?zX_TM!rE<;h{F=9xE4|{w
zUtOGTba1I$Y-L!!?JiEEuP?G^s_&@qG!W72tn)29G|~LY4ZC;q?q6SgKDz&&WN_W<
zi@Ukh?pA&A4Xtap*V;Gz*D}uIN8;<OkB3)%shg<9JEOcl^l;j;KcBfY%zAiu7rbTp
zV_#gLaHrv($OV=wKQjs@AI@~UP;lXbNyLR>ov(r!5;+O^tRL()^!HE5Dap9LnC-o|
z8H*F2MJ!`hi`Ig32T${tH#8Qun?H7lo7eEFWd5<RL(+R&16C~J7oHxlykld^%oT??
zGd_1WG1`4tE_u#Xs^G#NMlR6+nfU=$0uS!rc4oJBcCMD-@SJJ4K*2Hj#?5C3LfLp{
z->ng`?+bNmD;8hGc=7(f1jprfn=czbH#lbWZLYRm%&Dfu4|npXS}3py^wdo35&E^U
zH;nz?9EMw;n<LCs6qvgA?+%EZpv|Gd^3wUZ**!x>-z=eNX`x{iD{`3@sV#hvFM4s}
zl0vCap{UnsyIHU8iaf9I{>SB*AL>08%XfYAxp0ly|H?}r7slwugBz>z3l6(${@;D{
zi1R*&T@x1H5}w<w^l;s6#pf|$J6oJy#t8VYTw}SV&BXfITyIfjr_ef$unTvD1D5xC
zu6x~XbfU%8Xu&broSH2c*Od6{tPY-V@34uEhc1Kh1HlCgTg6tKnt3Yu$x*q;gJzx<
z*#{XOeLrTDBdW17&A`n0soI()4L`mrZhx2DBka9<rhS#uQ(lj@^^6|cilvvrUhoKs
zF)U(w^XN>k+eU5s#f4|N_isAcbj)4)YNBa+-kn{m-o1NUWpnFxe%dwuH<$M0Ivwva
z`|mJU?B4;;+W5!j!gJmFY;A0v6ckG@?i0?9Uer3JXMx71m3)_WB>i2&#KQNvee)Gp
zhxS$5k1Ah?*NR%otaLW|U|@4ybJ)JgSH->LUSvPN@$Szn1zTJ0Nh)8b{JYOG@zen~
zuiX`1OQ%{~wz`_&dv3{6hIWbVY~sgQ0$-(R{Nr1k=sRJ_bU(dNsgONWBqi08oz6Wf
zTo>jjV<o3G@0HFww!16O7j2z4ael+?>!s&@vD%le66cw0s!?crIm~k6bw$0a-L<Cr
zue<%j@10NGVXYuyJpB-_0q4Kj3wc(&G?fjgUpb}kSXtj*i}woEg(rmW?BUqCq|SHx
zYKi7QCpYbV(&a88dv;GVBWJ!|?aiVe>=u*WW<|Z%b(p{CSsVNN)JxqnIlppwsDF5J
zCS301k5isStusR}FUiXOwRDr3=pMgWch@s}m|pZq{B@MWca@1%@`)8%JPWiJysKDq
z=xx&7mxZDN4QDGXjYE1<);BE7>f_hpp0I4Gn5L9ey4IZSA3YcF3eQcD>s?#3qv+AB
z^}H)Sygs>ifunrPg<4IGiOr$!*Jdk*@N#lomQ7@9dC8}tZFJDBx$8!w|Jrp4+szce
zy?uBv>QmRfgX=BYCzvg-e)Hg3VI1>g%WZRHW`AsMsMw~x|Ng=j%L>2y1wZN>Wpu)O
z%k~sp|57_Wn=f7|=l;I~+tk>yi{3=;d$)_}?4`AfwP*C0OBD2n3w+%2iA(BggiXh%
z?hb9Yr?(t_cBd^}wpMH}%Wa_vGEN&#c-lsPec&gSQC8Ofd&aB4>$Zo^<jiQ+7d!gg
zUH2Ye?i2IN0o^k%PuTuk+yB-ybuSa2Nz)F!n-+GbLGR{F;g6|b*T$sHRO>dd=54!|
zbCXAXTX@+s$4k{Udpn(8u}{2m>S1colAw!P!VRattj(KHa<`nd!Ao`C!;LXl?_PW@
z)wYLw)t)??kW%e(*YzjUVm2O6^<1|{J(Xhu*9RZz>H1tTi<kX%J#-`YhNW@r7WQ4s
zdt7$8XL8Q?Sv-}y>yo9^6aGyVOG|HG*kiWv+i7Xvc`7j{pWnYc`G?(PcHXDH;sVd}
zRz5g8b&^)?kIL(sMm?8Lsh2O`pu^s$`BS{1z#(y_uD#<s^{K+A4PC-lomTR^wr6#z
zync7?)SC+R+il}ca(viScI?g{ORguYU3ScKJaE8gUgOM+*c1lgPUR)9J#J2S6RKbC
z7G>dIq<kSTL~F@h^Jh!nbrr9k;1KYA;?kLZK`eH$o(4G?v)B9obF^t~nk^73sN*Ub
zx%tK4n!t&oH|{e_t=#%|X7g4<;k{aScd=ZwZew#cxiI6`vBwP|k;{d$Y*fD=QPqw8
z;kK*l!Nt7Ea)B!?ru_MPn<>C|tHYs5g}0-=2kp&1xN^!b)x~DjntYG)eziS1@aft`
z-TqVG?}vw_T~?1V3rxDGcYNZz8%@c}CobBouDmzkaYb=s)9t5^Yo4ysi=E=fINhyl
z1Ghrx<m+7VueoDCmWXQv{Z^7Y5oP_ZyP4OCNAuV2f>pL6e=iz5y=d0aU{w4eEl1L3
z>A@}OxqhLNkCrUtX^67SU%rubhn10EWB$aq>g$g#y21NTW>y^6&$w5L?^6?=Kbobf
zdHvqW6YpLh6v;Ph*pr)evXC|5tt7)s?vmSoZdmV%{kD=JXw8cma%*N<PSr9$Gpl;u
z(d8F5+`TZ>@{!z|q-%1k7s)3y_j5NnygadH<r<gNnC$Q7a?>4NxSToHSyk8iipS*K
znj=Y#|E?#l@)lp!#TKfkaU^MNl4nnPC};1}HW|LqN6!w&tEa!2`}vf^o~ynYAG^0Z
zm45D)-EmSs%tw{)Kw;~&na};=9yAx<H5L4meBIYAa^c5<<(FmFwFbuOCI5-lYP47q
z#MvsXAOGdIgL&pLZNa{beJYzYPiQPPn3Z_i&m=yE>*<0h{%sda`EIPea4!5CPv%7j
zsf^}#Dk7)MH616Y?|uKLX`QrfwqerIZHwdAy_H|);J>!X=-aCmCzy-t<}A5d!Ja=`
zN8ib4vDDRVr$3iYIx+d7n}sZwyH88{1~tLJrN*-_OnPnLvt_D?ZP}t2z8ySb)2`I{
z-fU-Li*4)Fe%IR_qRSVXxNZB(%%_}Il}ER%2|9M$bLt1ZSeYX2W2raaZ@BWnV4nGA
z{nt7Lzw3^!&)HD_`C;jDfg4@#C;h+rrTuQ{-h%Iy4?i^jSn%U<58JVzjAABxuZ>3|
z%A1?tKYS%Vfm=z;;SqoB(oI_1?Y|f8`?vb8``)D~Rg+wwRLVXPwC?PfwD4;6ecAAi
z&#PwmC2`1}oqRw;oU_n(>r3g(9o}zMPfkdd<UHjW{{2txbRH!Kg?m@lCe3}4Bqfxn
zIp5XjV9p+qW0I@mMXz{1k$NJ&V$%`3G?$Dw8`bnu3U=8<_RmzTb-mz_`X}N+;X#X!
z>{pKLTQ&dqJ2(Fw0$pC_%?g1&l`LX1v#Sf|dcCPCKlWC8zf<1*-V9AS+ls&ZGGcMp
z&ph2XF_MM%OA%+^j(eVU_qmr?v2M}*Y9%vO*l6!Bro?xeGhRIWI4Ph%)N=OXI&FoZ
zr|&j;`<aUFog7fGc<b#@w}_z7@4|LHj4L_LJqtgP*>Zeo5bHsecE-0ow|FuN-<&yk
zx_}|6pM`f{@D1}?*V36*`ohQVZf<lJ?w)b-Y4Zmgg}*AxJLb#pJ=lNcb)a%s@>GMm
zf+W^LwukGlzwUeS?y1F0!;XiBwW}DeDF-M&IGMeCj((>eqee;eo2JK;q|cu#+*&Z<
z^5lcF4>xz;@v@kH`T$qZ{EVw*tcd{!b9;`RIWv97nqz&R--LXKc(W)fU}{pws?M;W
zdo3#5(;v->oGlWjr=g;JN~6APUx#DAxO!O7w?p2i1?Q>f>#|lBJ#v-j@3i)sbz|}q
zZQmpr{@6n4S(h3f$X)E2>BVsHNXI_!ZDPxB9aTMUb!zhVNp_J-^3Swi=VCFj=W+PV
zb*pZ9L7Zw}`qNdLbMDUjbmG-2#?7UH>L!|J4((2VmM`VU&~blC<O_4gpG%(<?tU?g
z>CmYtnHzgO(`TyIx`cn7!pr`*L2BWta*b6RpXvuqJ96$|k$_~)N%v=mGXm6(pUm4?
z>cA2!`9L!yqP!<vf2N;Z2nVaq{o@yIy}iJs!R&5*ng31dyj?ot=|`CK|L;1d9=dAd
z(<7(m-v1F*d2vdq^E$zsp?0awy1!dP!aBnuHkqw7>NC_ZyZLvu-OHWleBbs5&ELV5
zr}pRZx1T@DWrMCAR%~7AB+sWgJJj!O|0V0alE+2Y_qBz|Rytlkb6#`bH}{F``d`=V
zU*#yZ>iaZ)RfRhXSj(QrcWv)(b1QxCn7`OG<MT<kxo>tIzqC$5qOkmUYpwk%-~H-!
z$w~{RuZn-Dylm@EiQBn-sf+f%6OezA$#C)0ZB7x!s%=5X<zkLJ*jwf7%KxnUOOEq<
z)$-0CjJnLGCfhu>+TYl1Y1TLK@$^~whc2!-@tD;(#j?rPa>2pQBiDMTU3+>iZ`I$Q
zPbO3!vK1@HxR#e-+rI4&o9~q?YhO$#s&@{rTxZu-d^Xmk^jmWLX{9}P&dD5m<bTm%
z=5OV1OY+;rTMU=w|6c4Z_4>Ben^Omq9GVxuzwOFc!u)ma%5OJyQ^TH~ncAGq7uMqv
z6Hsfd=xHD{SM-Nb5)<!}V(BVThwU7D-o0XG)c4zB88R_pA^$7MXvLcrQXHGZE1$3X
z#+ch5>U{AC3m@agTbK9yt~+psVa99*V>N{$H%H6gWu``oIrrDCF}9fDbmhUUJWDR~
z{<}g4Ev9Dq>b#rQYWlb3@fN>`*~-oi3g!0GuD0Cy>#<S%$u{|`MS3-USC{X7d;ICP
z$Fp9Ci0WG8F-|&kA^BtSLI<9VdWN^fFP3@4{A~QRI-X_K{f=aZwd^s94&~dJZ@L|l
z^cBCb;#v=L(EM|+${1o-^c_3ru!l1v^U=G5Tz|OhZZrl@F+NrnF#iw3@ojf`-G8S@
z?z^u3b^3xWT}G!5XYUU#a<=>Nefka^>m+^QQ@;<yT{|Jj(s488k<5w(wY$!^J5Qf;
zXlAvqWvZrpLL7&8nBqOg)hmSZ6~1Y$+omb2mApKp)OLZdhDprpA|Ywdu-8Qg*90W3
z_h#Mv$YkB=`})mK7cIWl)Vp}{G+TwI*M!P9>aF6o$gVyY^|{rsK&x|pv-O1y@vFA?
zwmnr2DL3;tRe8R`*->0hVB*udUryh>CD;9$bIx3gFD>ob&j*puO151RnDD-1hs<sb
zlh!FK7b#EL|9p#5>XU?>*ZIGg9ZmS`nR-0aGAwKFv3HZABpmdgmR`Q$U8w%Cx~=#@
zLTFokPl#Z##kc6@)W_Vhk3xKZ%&Fu#{jNLwj>NNfFLvEY-zuB>F6Tn6;OFqbpC|Xv
z-&k?J?UTeU%WL9G+x;R7ELSskiZATnT@dzMS6B3I?*-Qtm$+1>OZ|wr@#Og;&5dHM
zEKg=c&;K;h=1=0$W6L-l%sk$g6#kuhaAiumiHqu#3_08EFD44UF&t05&#nr*dFYc=
z((!30W=;Coneff$^i{bv(ti&!o;Y4JL3PQwdoh!XTn?@bjE>JQKD0n_;y2mNPS&#P
zUc6uZXYK*1StcL8FSJ}Nc3<A;WP|-_uh$D@`#4@b%ruEuX~(@gRf<vEVy<`4uB(<Y
z5=(`vMSC~49laKrdF5ri&}_xJ;HS2$UoXsGq|)Q+r>J!1rpA^c=C_uc?pv5$U|?~`
zTx{#1qH>?#IMC^O?}DraMa(5FFQ?qiTXeHcHB<O(R-#m9!iRG81y4M0pWijZ(eeAF
zhzQ2FX&%k~d)dEF_fjee{d2P~t*>p<XYP<23@4?SvsQ}zsQs9K|Iz(~PkW>PNc)<8
z4Ekp+;+g+5Up8`;=D%9Mk5hk`uXFswrSwf(T4erjx7UfqTJN?sh_LeLFt2%V@6(ID
z944*{%KF|)nsWEZnCv^J8YsP?>Fdu`&L2PY-sk+8S8K*oc6$EQhNM5ck89n&@aV{?
zw7oxOc7Hx2V<Wo3?xO9J|C@g>Kb72Sv*Y95sduLaJWSWPHn(o`#e$E<AAawW?fme2
zS8>MW6dB$N$Nj(L?m9Y;IU{r0qlv43UsU{lbWZ6rX~S)nli43H|2?sU|9!Hl$S?K%
zfj<o9Oz-4j+I2(K_qk=6BRAWFj+1*7yQW`SJlDruV9!0l-(Jn<0@pU?tv(a@s6Hcr
zsY%D`L;CXjQ)X=6Jhw+7<JrQylk5I5o;>MgXV-q{flGm_L+jmU{fW;_Wj8No?6X=D
z+TQd?=3l9}aERyPin3+R9i@|nbu_Op4DpPVY+ml|-)VNA_s1mZTP+%jCs$RfO}!Sd
zXwJ(X>xknsL)T0@?sbg2^~%g?C67*7Bz<lBV7%{hlCy!oduD3mLq^m4YErjvT3@uR
z-1=a0%E7JKw<D)5Z%UJUnjrB<sq=mr<8i$U=PC=^3*II@-LR8w&)3g4Z=e3`dE?5m
zi*ZuSVxgVQ3oq5C?_%t+Yblr`?P%lrMe|hi&c81T!s>RMti2S(8Jr$zmR2cjvS&)h
zA@#nN1e3bcZy%ewY;eCBV|Fs-u%z$Cx`tV)n_6@x+e%CAUY)vW&J80;skT%j2eFfF
z#>=Bry4gB|-XG=mD7sSpl6g{!$4nims?9!P6Py-t?_cz--N$T>rG!$D!=(2~<z1hm
zA~d?C-|=)OI%l>C-}tOJc_AbJ;{3POVGGx`Zc?0G%$1rkgMVSplrz1q3w5NXEZlXh
zhx2Huzy)Wu-4DCxek$W?3HJLk<rJIovS1DARkqFxb8a+gEzHp{wr<_jaB4$<*_?<Q
zPB%HYS4qV&o-ny5t-u<!U1qn=WLAUOshb*}lt)fKeyVkSS;_65bMC1zivz@XbM4qq
zUkUr^`>S-;&n&)Y@m4#^4}Z`*xibG<&J3|rZF8BOw5l1BE6#^LdHDBlLy!*hmHdr7
z8<uWjSeLjmC+2vnVAqbR$@6ywUEI5R>86Hfl^&_iejFmF+qgL$jik3n-#;^RcIpxa
zl?T2Isdg;JCJ{o?dZH!HPZg*0{@nlJq2hhzQ>hJdNjG<NoxLG)dXeMFj%XdX!gXv0
zAxAys!#-bDW-et8+POKKVNyu&mq@K!83%Qwraj%XP{<<sbyRHRYpY{(FX;rZhD>KM
zju+6J;d)p?><m*-<LM}dw{zT^{jHYqhR$7>khad8b+h96Zjmz=Hpn+c=CIBAqcVfh
zaT%+z!__9qf~Pht#wI%6X>O_=X%(LoXYyJu4>V%lqBHBE^e<-<>7wez8EG}kGT5Hv
z^Iz1FDy!{CYi6}k5Lb<5t+w+j<b11Z6&zz~{bAt-7nRnH4N;XHX@|q!$*j3m{+mJS
zryTD*<^4^G*QT6nvzhqM_R`Htk96VAlX91ChTXOIPIq=)ULAh$$c|cB%aeEi&3K&s
zag9Iw+L%2*t>13#S<2Z_=$zlfa$tvIZdAJEhYKfU%8cF8KY6--e{$n+#)6Mk47E1$
zOC;YI=F5DrJ9$%?i&sGY>Cbnqi8s9~w_Lbz^TWN(eDX^fKA1mxIqhUx`mTqLY6~Bi
zuapkBI9aM&A#ce9E)9Wtg}ovRxHR^!EY3;Je|+Pdx^zRJ&9+U6i#8X$c)~9FPl(GU
zgQ4ec!m($KC58<@KB^yAnk8`NjPR`Q3E>i_cPecBVH%y?mS13Y?BdIL=6x!=E}l5y
zY{sT@|L;1d*o=gjz#NZY-t-U48$^m-OfoNbKGNgcmr=o+w)&!RlG^=CZ9WSWcWirT
z@NvO8--Gk-F3L=9u>O3RagmFJjk9#$iDlf*CKkd5&$Bl9eX{MX-F0QQiQoqvE{~6Q
z@{8C#oU*?@u+sU&G^rxSe!<jc)n%WwzpfBlY;^CrRGj7U$|?Q54DY!+s%Ae>xK(nY
zVSeb{x5pOtGO{n6oEf<=x@51fyL!pF6k(C?m(^B0J=nZ{?wfgYDvQ!2=Z5`bxjKV8
zbGh%Tga`KpGSsd%nb%w1Q@Qban~c98PwnFG$8Gk_o~`Y7g!h(M{e9lI_j{(sS$xsR
zjZBwOU#?s1J-x5_%wLXZrk@Kt8xkA$PnZ$gW1p|mE&ljx($e2&u3R`gW&MikMZ43?
z70%t6#cuAlbdsK#+llZ?XVx7!s<N`HNq<g+tB}6XyWe~d-kP|TKHA@`GXJ82aMgy$
z#kay_msgmq(w^g*V!^GwC#?OGxbbQA1=nTgw`{y}nYG(8BD0-S`mt%y*2+h({#>lc
z-^#?+Zxnrb3!}MI)aOd6=A-*&&e2$~a0|D~l|oH*)v`{r+nrmEGk(oXYCO8+^PUy$
zXYTRv@vr!Jq?|X*qE6@crdyeUL9^aye}55ha<T4`FfN^<^d~2_{I7m6(~0?G*t5?Z
zOO+eEvn_g-Xy1)ydR4S?X2YD+yI<~3m1TZD>#R1f!|4kB-l;E|Q?ssxvYfuWTDG^h
z(RB60h2fT6h1aj?f4MaGv~y}2^QLVgMn9+NJx>1UzGKI?hvyfr(~$Uc&L`wa?N*^K
zsRJ=7Q=GGJ9~Y0h=l}6jS#~v(#FU@RbAK0{TzShj>=&b<Mr)UnT*1|_SCt1W^PeAl
zU375$&W9}~Wz*8Xzun7kcJ}k1n$5Y~X#ox<qUH0x%{}+$+4^UXg+=eUEU})m?5X*R
zJ;8S!ZhC)Y?VT{q)n;ChP%!h|>07cpUqw#WmYT)1Mr>EC^Ll|rPWex_be)TOrDkHe
zc@ggt<6ZOR{<OKJDjM96a{C;2iqC3?&&r7`^S8-dQDAlTuU%GF`El>m*S1f0OmvU@
zby`U$!aT_6K;_rxfy>sh+1o$9(y_>|^!jeYh<C>eFG?O<+3?cVRPktYwwp0il8fV0
z&y^*ACZ??`Ul;oDs>)O08fhQLjAb9wHTF$@;{I_~#I8hlVNH(T8@LWVZ%<+2p1E=U
zV>{nPMt}F|E8b61T>9K&r4w65qW)BsMKdOgUpu9|s3`QHUYXVOL+6uEoGcWrtaLkk
z>5<5V6481s&v)TlC!Vr%`^x>k%kz-fq_Yd2?2`FrA5+zE=D>-rg{cq!DIJ{h!BQlz
zN8)Y+AG36m_>Ud)YE#9<uiX)OdhDsZ%<;mQz9V(UI*-?NT=;yNYpUBvGi%Mnk8N|`
z>viw?dqX*I^Y1A0RXNZ9e%0N$e~CErv`Nt|q4!^UJ`eS`t#W9NIl8j)O{bXMp1W46
zGI3cmq`v>-c=+kVJ<;I8ij!LU8|{lqy<7t2?jOtBxJBjAqcZt&GubfdiKlL6dHu7S
z^=pgJDfYNl4}HnP4Q*UE{MQt%EHqL%mFn#GOiAB?-6BWrt>Z?<Rg)NxPhH4kTdMAU
zq|LF-({Gw$?TTqfePnkA{V@LdDWK{<=Xqy`7!gnT=0zs42R>wY+tnNVcPx6hct+>C
zH&ag^tEhdn;X~Cqo>0d_5+)vsKmKj7tn@LP@QhJ#`5R4^-4`Cj-3T$9x;r7#(xg=J
za1>*Q*6)DcOIqBok9>OIW_{3QJyY7FvUxL8L#24F`3`2+7_7GT5tW_rhQ%pNO=Hql
zCV{t_KWY!#J1`l4p1iQJ_~qo}&+0R0JoQa_WNd4*%**N7k<$HgYLgbKOix%|AIO}j
zwJ&|E^bD5TWtKtzKC54`SE%zUZK;dlH0CZo_DW=VVEUGqGiGiUjgE*}vz@76%J&Zu
zt(iwJE=%JQP=EGTBQYthtlhy@?MYh3y#<>*k8$;e25vo;H}!tU>Y_BmL_^=rHw1)c
zD`dOWoO>$ol%8l}Q=O`i$#SdsTw(3W7aQa45}LI0cRypRY~Q<F?)14!6AoOep5d6<
z&vv5h^+PMO72QEr{Jisa6<K~(*xG-(W=+ZJa|exD9<>S2U(T(`x#Oji*O%FM{UkoJ
zEz@NQ67BIUD*5p{P0dKY#cs*Pmsg%9#z|a0d5ZU>>YAz#8g*6*6IVT0&&J6lw4lrF
zde8g+u4@{UK6q@=Z~ZiNdh0PChrbd$mTy*UlWsRVnk1gTZ_(DJCDPNCpYpB$rWVYi
zm@Xn;7xj~A)eOFyN@-q4C58C8bfQ^0H**;#7ZkqOyMMLCo;aSKRnF6=>$lYYTsCLA
za2LPcv{%(@7y2xB=x{xJ<Sv7S#leLY@+o&%T$r0)JP63S@Ss1YOgQ_q<&OI^)RI{~
zPVm?Bi^;qs5bdL@mm@eQLeWlK@g~EQX5$ye8<z8WBpWZ|+w)vvrp6D32Nx!v_nRf&
zq$shaHviVlP@m>nshVH5KXzQY|FWU$jD!sLl~3v#x(0KniWp7)n0(*d=gMm{A0M|p
zciTE6D?j8PKH?TO>9(GsX2;UlN5x(1-wG{{`s(@h^2%%1_xL|usMzOecs#I9WcjU5
zw$v3oRz*=+C;1d-@s~W6U$uC_Vt$5K=2Lt-uD5U{$5|Q*uQ&K>Z#PjuPW7~L46l-u
zl<9NBY1?WSxjT5I@2>6R^P6(@^K8SV%{r%-HI^;eebjCf6U)sTK35D5yl1%*)Zf4H
zOKQjWebwT=5*|6S0Z-jKmRx!h>eRi-Q#8^*alwVPeaYw2Pal2z$a|@dJ6B(Wp01*J
zMY;5prUh^Owuwb8xH~t@-;X;w(dWjS2DZi1nzr85HBJ%Z*URMNc(I5{Kjr6HsqdF}
zG8|i{_w%~-F7uhMEiPMc?Rj*qZ0q}&4s+|!Ne6GeJ7%3Q^YM*UQ`xT@{84f0-XCVp
zzgT{eW8b+M*-Ik#Fs#~Dxoi5)=(}bPt82{jHuZeJx>M6c|A=n#;R@dNZ;9UQPapAL
zR48A1;ZY9v*~F8#9`%1_x^H}X%ZBQ6>RXEBc*CmJdu^Gh5YZ8|+t#)G*g`Qke!f`|
zjDiy$tlB6ep;E4IEynP7dJSLSF-zCbj<?p5Jv;1M-hV!pG*QKfsXF!G0Y{Ix=W?eP
z&Nb$I;Bf9%+PPInJpM$@lxp~M+HUnF8KcS8QgQwL`j3BFFMY03xV_c6+xlTdW9`I3
zmF>PoS{GDv?Yk!k-9J0?_)MlKkJjpnb#6YBzb=1L7*@H4y)O9IU7ZN?<y&iJpPaGs
z&7HgVRx3!IyR4&pD~v}~sFml3nnUP+uU`|n?%&lcQl84-$Gh-?==(Evy5+lcuLhqj
zc9tso=#lGGYU_W|#g1#u<a>)vmuMEr>u-G1aEHO&I?H;=*Y%yRw<zdbdf0tI@yJvG
z?u~*!k5A?Nr7P`dVcc;e-7PwXRVBpYg;xttu;U%g>3dpN>q}~?>)mra)mmFnd9rY-
z--3$<KkoJ23og!|XTDkGOK^-$$p!z10aIpfP-R&XvTNZ#8=mA{Yc-#55--r-^QY+T
zhsi%)oH*@Ysjj~JsnMF%6T&3p1#Zu7>U=uKd-2)0a}TR0Nv)YQe@`S|TG0Ac%<sGU
zEw(+fsL1J*U`=5;QTDEO`ANMg7SWL{6OTxFIGxGyw9RZ4ww2kV&cD#lo=0>4Hj$Xt
z=A~texM$VRat=Bu8uILksF0{Q!vU^IofE~cFT2;7%D^1;hVM}Mi9`L#d-$d(B{%q;
z-`!v={&rE3h5efAb}tW>iL78gzoS8I|9sV^13oXG`<9$$T=F@vdZ7$|SnBN?4U4;C
zPuy>qd3v&(%&!kVH&%TJyz}K$aKU23!0Nb{i?=_BljdC;agwK_{7&^nrb|b=Wap;j
zss6RA(sx=Dee8VDo!y_AT)r=y*yop@F`=q2zv-8(*bH@(KS|~yW!~DB@s^)O6lZ(w
zJSjD+A;t4axRzAHvxI}9d*_tDIIcZqVbzMydy3Xf+Ow~}Z~D}QJW@3uGym@CmWjNv
z{Cwe;)<65@B)!>pl~+5xo^dL3gOWkhGx?=`{RaCPM7kCKea=}PwMS#0EbG)S`sO?W
zOb+E2nF1`2y(`buW8U}VrQ=R#)ycdkjdB%TI#)I4Tl#9=QN4R&m(J-YnSS5pCf%Rd
zST<pW`SQEEnp__bt@u2xWdUo;6cwTP;GCcqCRN2)=Nj*aHc7sVAErM2lDV?qZo7rq
zCxh*0%x>RYyLPR}#*)UTKV^F4Qzhk0E<~BRnBS1SH8a>qa)x{uuja%BnwzEc4QF=x
z3#nvqxeLuO?Z^u<UnYNW;=7^=UMqO?)*pN2le?_rYT%QFomN-N4!TwbIX)7S^;^p5
zq8*%@wbx7U)vU04US_dY!e=D*s&&SxWoUP*bcyQSS#a(GTi@Hy$&c2sYr21N?ksL>
zS<P4-aDw4NyvZb%4>q}Fyz<*0r!N=c)xWaz_mZV)va8O{d>U~fyw`W-%+e<dwlec9
z4G8dB$-7Lr<)(vy_i`&qwx*X~N(=;itXJN4n7}(>Td@HT%jT4VpXaOiuYR*$mU=^O
zEi+^8Ij5INw+`B_VP^DL{Quai%=)ru_C=1GF4DV~F0KC@$#|7V?|Q=2V(mX%ky0NX
z&r&w@_~UeXk^jD=b+7#QNhw4smSj(P^`kp`QMGMan$>3${xjJZ{@#4XXtJigHo;1E
z>09Q@GkFr_8J2K-{#W&_@K?)ehxMylgcV#D)H3jXdD$-;QWqe_!4Sx}zn$HC;{G3k
zK~MD0tq~~*7Oz-#Uh1Rh?T4>wg{$t0H8q6ltlL<Aisb_1%5CMV<!qMRb6?L@n;csr
zldICvwr&31Q-UYdWpBmRPLtkyH&x9->%Ers!H_Enw>U2>XlR{LTjObckXhqiQRMyO
zF7IVe8@#`;#Lgzds^eH?s#4y^n=1<rcvPBnc)$9l!@XtquHcEm7X^7Q-ODf2-V=S`
zwV5Ex9ivk=3YyFxF7HZSu;=p3y;Wi*r(YkK@M}x8)|rOoj3-+RI6to4HF?SolU$Zn
zsjAYAmzQ65D@ePx#HMamfrd5TQLkGZ=St>9ycP&8HO^&8w+zjBaoq122OIBwy~$yp
zgfz+>4&C%S$i1&oqVhHeUvT#cw*@awRd48?B*t%Noy)@Yb4jm5O#Us7XItkKrFQVf
z#k24q3SnE)sUY=iTQ5Vv=3a(?${QR#Hd_R37MNM?u*+cycC5Ov+gDU*L2rUql723W
z!>u&wM!{KTObh;1+~8Q2)xM-RL2JPbu3su^7Ve!to#_WCB#qX7=U-7K&B>JYHc_Rc
zEpA?OdoD}x$>q7q91()Af3PX(_OdX(Z2o`2BOpbkq4fLzzd!vaI37N}WPj76E!Y45
zI{rQR=~w^t_Gj-!gh>9$iMd_U6?(Wj@t@_qdijUut(Ex+PXe^p*Z<xBzVV?-*RO3N
zCx0cDX4yZllMrC^4|Dm_@PqNcs@nXIz3aK>f0m#7#gftf-|MF<`K3=KTsy#aFYDl@
z2<dBo<Nx>PD*pev-2VSd`G3Ewxt-M`;_dfN|GQV_eSN;llI>L?hV{uO{P&+KDB7FU
z`2Sz+qIG}&U6^0@Z~Fc}U+e$f{a^R@i+}yU%k{rGcYpi;`04IVPJhhf{^{5M{QbY>
zdt+4H@8fL!Kldd+T0U);{r$gR#kQ<BDA}98=D=l#i@)qH#4pY$wyap3QCu3c;6+vN
z2Zt*&7VH(5wb1&LDfqrgLE(@1{%_e=e*e3XpA`6CPVBAFlLc`GynhA6LYM6M{nqVY
zzrD-c{SSLXCe%Ogt#7faKm0p`_s_H6bpoZw!dHCW*V?Ri)nUPR>3xk>XJkG)$eKx%
z-jkWbk$j|bo_eM8lc(#=7w()g?dpxBALSi4_m_7)|L}g|x}UL2Zl9d`N8wVS;<sp#
zAIJA+*Z+JS|DS`u?$6TpsW12ay<~r6w|w3Gq=~EY_q}KTm{;3cZmV~78`IBcv(<ld
zy?xbm{BUnsmcgxF^Qm0NZ2ry9Pn?{=uCkK5>2)pZwH3QR9GG>S!S*5JeTT#UUrf30
za`bQQuXY#Hx5qzh(37zKXJ+%~pt%s|{?Etk)#~iO7$rV1kN<Y$z|H?0jOVY%+~t~N
zeqSe9qhtTUYghR!zcx1J7_fcXHFriDtMrEh2l$xpGshm9`(;@$OTF)e!}2#u?ALSt
z{ZlUZ#r|#Y{X_T5YNvDS2v}-;D)=wJRsQ6~zmLCv=T|7dfB$~ZNB+qD^7ZoX-{<dp
z-@akTRQD9qH(|Wj4oe<8Z~pnJU1ZmWw6m6_=lAFT`2PFRPT{P%KMdcqEB@ccws-B0
zt@-<I=F~T42Os?W{=R*r*Z04#o^YRL{XQv5!ll%)WxcG~yV>Pmo{L;7UBmmUHp9+Y
zQ~Sqs`{xaeCVSZh>UeJ4T|SkW<34j##_m_P4j+;ovLBh=;Qw$@_MKOMUPJ%80`c4Z
zb%(w)g#JCn*d)(<?@V$1n#Kpm8yLGU*d|zP|6p$)X5>|$aN&8dROvNy_LUE9J(!E^
z?aW`uP5AwBr{njAJN@T*PceS4tI4}yd*JuSjrQf+zduf{fA<bqLgD-4;^udZ|Bv0<
zo$_+xrwfaM3qP0nt$V<G*h0JgL0;9ryVAF+y#?lPj(NKOPNA&%n?Ed02ZQxlj#Sj#
zx_Y0tLoKc3YrmUryj=MVqixFkJgPZ8U2ESnJ9A1WCx|~k5OC;NghfwTf`+0&(V-7H
zJpMN%_RM_%5<Z~!q|u?`xql149ETT2PtmuB+Z)R34!-=s?8qt2TrMNS(Nb;~f6Gc>
zih#t|(lf7K&$!z2Sd+a?$n4nb8CS0xu3n!U7Jqz=-jNHk5?&lV->lN!mY%uwddAl4
zhKIjO^GkW%kXXO?TAcgZ{XJ3jl3UA9+??_2Sw&t=o!0e#SH$>P*Ufwu%6(-=v`Q|k
z-n8V;tY=h%f2Qk8+K83tOfc%^=Jor3X-n?9lX0&E`Y+wlyZT+maysw1=P~<Qt#^h^
z42e8HGwRd_b1y?dUN!lvdp5J|UH!1;f}zQ3Gfv+{LCf-Phi%@&H%oyr+e%_j-_3wE
zm!BK{Xg!|$J>or!r}doZKLvjeZpkjLx@KiyVRBw5f6*%4*Ne879R0hYv}M8L*n4`j
ztmB;udJ05q%zo{E!tF1WBlOJwXtsT)lJ?`q)puf@tPfpU7kY~0(G7`JKh`UJRaqz%
z_Qvdy?*|vj1_`S@EZ34w-LBT2bKiIUor<z6@9zs$2?e~(k*m{W7F_SP`S8@%r_+-D
z-Ywv7Y-N5at+?v@dQDr66;<5kv!+cG`8!?AHg@eRzn%jJRE<0i{FRhe*80JnVVk+3
z?^r{du1!oW!^iFo;*UL&ExL_*rhPf!a;`)DwnW_Vc*obC&ZTQC5+l8?|GXRX=74O)
zlWPKbEW0N+8k8lNJ6-t@A6yj_@V6pb>(Y|?0~;BZ&28#TpQIXl&up{dqPG1F*Cw~U
zvgoxpU%70VNjc|4os~tx2Ne05#m)u2f3xE5{zXMo(w6#^#R`j_{h%ab=fs&gEp}I|
z%C03V9?m#&?8B<RTv7f~tC9~+*88^H>+^1nJ8aDCG6&x^XZbi7cq_Q@{x@B!&U&@K
zops{06&1HWn@@Ol_UV4b2k*3+f4e5W;|Sbe@B7lz@$2jg!;6<Peok%l4Syl8DKe?&
z=WdTQv2)tTJEZ<GMfppuQJ%NOUaBws!R?C%iWP@HKFj*Mg!{kgLUzVbJ>?^n{?Z&T
zHl?>JAKB8_bN;^nfqH+Cp^vi-rkQ0FJ~*&lvwM&0bwRCn6E?8y-t)qt<JaG8FMh67
z_YP<mKd|1zw&QWms<l;mMaNg%6n%7Y$Ih1$fd}IqKmi-WA#VF(R)KuFW@65+?46Py
zf{ueEnoC>!_^;ilcxUjiK)R$Rww%8uYRkH)b0#h_2eW^?2S=>vbFsA-j_wxVVmir{
z|NobT!JUOIyCXj}3X1+=-7?Q4<apolX*#~!!^&EoMrq1+iMs9nvn)BrWxL>_uK)9{
zOm4}tDBNpxNuuP`Zhvn59e-{}yzSBmkrB8n5qK2pgjA2e?v884ryLKep0hyo*rmrS
z#CAvhZhTn!M|8_P6T5%z>z(tr70&!wFFU_N*6308w(ARZ?wd`zzR>6T>$`6+%yxQx
z=WRe&)vdpLk>`BNt)Hm)FTTT9wzPceJ2tt*_Q|VXdws9*o_@vhyLHUNjs^E0M*Ujy
zTlSD_^!EC)9R-;#8OA$)b}mSZ?O0Q0XBx=aCb#o(qWX&1mDL>EZTK}~1n+Io%Tqq@
zT=mhWz`cKW^-l3hxfg6FE*RSNrv6NcsE>FPJMH(~Rjq4{xr?{d`+a7=`F_i)UjCcB
z7yN$e{GNXE{q1LOUu=3G{n@#tJZg!V{z~HwN&S!N=l<7=zL=(PkNL-w*Y-{o{NCsE
zCjZ~^B|dHc<zt(kPW<rU@ORVyj{mIBE_f*XceDTh(tp3rf`2^!t@zvVpS3SXG^5yq
zACV9DpQ)Q(b$-X}nf9xH^b6cuT4Ow6`M2|S|E~XhAJl7Hbb9&YzsfD;FV`)ZXTSC@
zNI}fM55MglDyF}>esSy9&+q>;Je->~b8Xw|$((!6?UaAA-#h)4_4nQD|8qQymEzs;
zb4L6=`Ca?Z)lFZOxSH`hS55q9`6v5>xg`|#+O7Q_pSIuIDm=h%e&5Z0fq&{7?+6^Y
zmhC9>L_O%H+--|iqx<J=T8d8ZlhuAXb@r7!@l$1T52l=q$!ibTH_0m_KKo@$|NA7}
zT(ykLSwGX7-v{bm=iZ{e^-{3P^QCXO?iWN&_fB}L|FPkV*h%-Mvi_!)Z(Tl<tyMN1
zoN{xY;FdP^jQi=n({J9>@xQR`+$`$=Zl#@~Im`*h59Yn-Kie?piG8tqO_r7Zt4roW
zhra(mnebo#%RE;*KmYxlaaxBz?GxYaF4+2D9sh@;YybD3w*6@DCtsI&H}?IPwX^+h
zztmi&U#GsO;%)u17n@HUf4Thpj^q!w%jP{_6Tq?2t37_tr~f<dF#mu2u=)AMMftb2
z>r^$ryz}U937`JkU!+#-XGO)0$_1}(f2)kQ5cs+A?vsfhUIqN`Ty$PZp8vmPZ{*G`
zxt4_uE2MINT#fw4-!1z>o`3s~si})k1<nn>EN%2D_kBya{tvK89Lu+dPT))Yx!Cyp
zvAUN3RqAu{-p$u6e^5WC?`@7_FOPb|@|!zUB4=IMIrqb(WB)oQ^$W=_KQGm^@X}=-
z_f4EVI_HgI&Rah`>iO5$b-t^e-})^}O?6^_c72xl^zg#YJrBk8zxYq7nfAkC@41=m
z7x%Zy-|#B54_o(m?uSPy|7L<*-0pvKlHSfHYv!8vGUq4K_c;C4Kb@aaGv$ZH-eb#n
zbb=P%Ol^H3JmGV>`koz~(C`wsJ8>YgT4Yi6_sLv;N=~MC_Fw)uyYlvd?FC2E?xlYb
zymx!<heyx<g3VtZef`p}McQJ0*VcS@dO1V%%cK2&(_81AkZ)gnO(MDN%B1gCu4P}I
z?eJmyyO!n2-_pJ8ylQM@Hg5MhGjpQ7!GR4nU*B*pdF)s5b@xA)i|G^l+h>10Wc}>^
zozI<qla6u5zx1p4y6WHON#}*+`PE-d-NLQ1ec9AYqD#KCylV-c{}LR?6+1li?+AR<
zoii;g>(wQZAC~2ZR=a;u@3QNz`O`lw>}cV!Cg+K3r@r^qJ?103EbL?R;k>M;9h)Yt
zoNBY`l&|jYss+1dvA8chFTH*1rLP;d`t%nG`kOyg-T&}g{j$q9HnrT~)?Hp7^6tDy
zbbU_fflqa8Yus4h<eoCRcj)KL`HtZa7xLbJUiG#1S6%rJJKKY`^RwSyJbY=@)Z-h@
z*lo(L&de-)U*x{zMB?SNBN5t($tye(o*X@3Xz%voobNuRuN#H=c*Jf>sL8yMxcybE
z(e>H(lb70=zSSK6Ui0>X>U~k()rZce_}`Gw+GKbw>3p1=jLv&sDVe<u=1pE4jI;i>
z%=RyoFM4p{`HzjlW^G+LJh@J>&bJ@G`=TS|chEYX)y!%ByUkfw7yEB1D0*@CZ|6ZJ
z>15SeD*NIU|38nb{?zWakBg<r>ejx4oBdOFm)=^)EYG1O$gyn8BjJ@*OIWXYeO%yC
z-jmm}aGj9T{u}2OR+N;tsqvfhzt2cmapKqpZUcW7OP9&-=e4(+7(^%u*w`ru+|jH`
zIN`m^Fd`-S39FkJM^qrY)5n$1B{Vh)Zb>q0ns((_L3}1i_k~HFFKWvBm#LMB{=0PG
zL#w1jl=1Z`xsU8FF+2NR?p>JrOycZy$vq$U{XSE*=0f4G&IhN@2-aLQ@wKz`&fg+t
zb!w*WpA+9%FCXQ)6F=*2ums<gUc<ZRHzqCKl6HT~FR{3*y$ejme`*PE?CYIb5Px&~
z+h|@zseM-t1WY`z;QAZmgMZyE{s{8bw;Yy#_`%)ckG;0czwMjNS%Xq;UFH8<_^?B|
z@vkY@vOaNb1K<0Np9>~FQCBPdc4pmG+nxh9yV<LYv$OL0+W&5w8Gml#*)<PJ-tIW7
zVtu*%PTC~x5bM11#@B^hIzlz4bJa7D@%h}e`$3=Erlw2uT)jVk#lvON`TaMSJ@EVR
zcwO=QrN8$7Zs1w}{l#W`pMyI#oM`>M!|7J>j~O3w)sLt;#ywf!xM+48_xDeW__t_(
zVLZpFHfQn?%kmWhPhFF5n3xqy@%Jj)p0Ch+c-!#ftKj7vT<d~aSSy8h9<0<5-E;W$
zoLyJ_5C1Y-{l0V63CF{g85b1FPuFnQtd^a5J!anPg*#p?YN@ch(=B7-VUpo-e#1()
zNKIcAfBxQ{&}Zt^pXbfBdi2b-sZE$ys)*&B_Zzp_{(DyZi`nJ8yjfZCkENEN$eff3
z3i4;2!w-ARJQ=*^?o7wU;$9CfOf)}!Z>guQ*W}|-|E_L-H2G)T!IRN3CKXKHEm<W2
z0w)y|8)qHA^5y&9MLQ}l{S2M_L&(PF(K+rME~TBC4x&~9E3{K>O6rRa9IGp+sCQ!J
z<60oWvO**BpGAoFY4P)--nmhAP3=uAvi7IC@9FWIW<3u+YxVi)qQ}f$9r`O=0u&A^
zJos%oPha<qi@^Es`V~#}2fcH+?j8>mS<v#frf92iypzhl1uZ|CymGj_Cr7iK*j#2;
zd8_e3kS0Wwg*EVw$Prd%N13+{6XtaLYbe?+6mmRRp4rs2<7$Lo;^)mF@{2Zif30BZ
z&RP3$iC~TC+^EHgKQc2uZtgI=+tpTLrpm)V?W@x4w#^3?Jp8lDi#hLBy}y6?dZB%?
zPW!#A13P^WZVzudk`@(izvaAg)$!)iN!lCMc~sm9zMXS9bHa;d8-HFaeX*RqiJjr7
zyIKAf_om9Y<!rk>zntBEYT<!rQ{$7mHXTXlKNrFGw`}_NSONX@mk-T<vATZCLi<}6
z<a1y2n|*PY{<WC*@5Q!%8P5OpGo1fV-kg7FatrsG;#c!6em`2Kr>VEornXk>^Nn*4
zs)RFMKYT51dSsQ_%)EtV6EpI6%QCI)7muI6_dyv4_r9OC8@|1>>abXUx!5kV|D^4Y
zJAMM<w>Yz|`UR~1^<{SD7P;S(4n6cvS6>nNP3w%MD|4A;l)R$6beaAABQv+o{wKa_
z=koda_ZM9ITa{LQ_N3pf4|a*wQ#_JAUaVGp9QgIbvZmLrtfKq)MGfxz1)Mx&E>>H_
zz+|-l_03h2yW~v&RUP?NZ}#(_^xNwDSvJ>CFT9@KvT|w9<O7`jTh(M=s;A69z31xT
z&6!FSo{p~P%iNga4t!oTGyFxjk)p!m-Sbv!t$Y&sc>Qz6j{i=<_YS`kJpHRoCB(+<
zqCw!Md9#ZCiA`O-=l!M4yN|o}F?XG+WQvdYwrI|DKg(rn>u21I(-f<{@>6E&e~;vQ
z+kbkV-015bY$tU8=E^;0Qtv}OpG#GJU^##E%ZW14oS&05cUnJPf7|P7_in9IzqOqk
z7@1P*Zfp+q7PWm{(|5XliQ)U(+m<od_q?6G&9*nGe^*FHakY<E;f0nr&D`lMHsM~Y
zy|`9Y-PRMzTecu6t(o=g!RdLAyU&EA{+gcddj8;#xzQi?{pEWcWU@v5gXNt$`Wh9r
zAEvo!D*ZcfO*cf>$ZFHdi>p_>{yzO4TOUiEgDd;_*d33;RQUfMKJ_i?)A_~cjwk#H
zm-@V~)-=}LpZT3dW5CB(W!t9n@lKj{+hohmxQXt}9!FVx{6ri77@gt~D*9^VdF0n~
zo7tfsi`-q$Z~W0K{bAqSNE1=M_tR|Obi8tKUB7`%>$&gJs%g~=FCOr@)uyGE@Z-n_
z7MbN=n!Z&f@NH^oIMZLX?bYH%>80lrfBe1uao^uM+4ci`?h5nYo2-BNs9d~%(}5M*
zK@w*c7d$!C_pOPgEl#C8qP;NSOkBln7f!~h_d~W_Pv0rIe|2@=vG@1;zQ0vmI<sbn
z&)c0Laq^2RTZ-9DR<7Q$rZx1b)XpNS6-%5I{*+p$|7_SJF3a_FvG40mSL|Q!TqWdf
zm-XkXP3O<}j8oM+rtE&-YjLM?y29-XmD#hzOvPv1y+8l?xn-+wo#vbswQFL-clNz6
z9<=(s`^LudWZ&lqX;JG{ReeYE@3wq@TV6g<+#n@9v%=Or>8z}$-p8)HiZSJS*LO@8
zQQ;K*S9d~R-}C0PXlA{ie^#IRI+tyl&FgBuBOr(0Sp4Ecz&qRSzTZJ_o$5Em-g&35
zANM(N`)tv)l<d#Ws<N}H_zb?ez44hbeb4HhW{FO1r_WdEm8S;0Tl2<JWPhddz3+a0
zTNH%?rg|NpzDn|6aK7u(+d7+edOva1zpk)r!q(1|tsf_?Nq=Krsr_g7ytTYK(`>S9
zdXCjE)_lM5`_|ivGfGc>&fR|K@AZpaF_|u!vu9_;ZQ8MOY1of>(ytaxTD2_yysP$)
z$n&vAJ-4U3r=Gv~<E-?@edQeG(l(8u6PJ5m{W7;XqxDb9yt{V~Y+A(Us$Ekov^CK4
z>gDf-i$#B}+f<t@qAG7{=l<CK;*{@um!A4NBf0--R`KKs)4ff<o}Hc1QIm3N+J7Hc
zS*EA!kLRu1d+Mp`SzUn=#)dU>s?Ow`Tl0H*dg*z_pP)3deO~VS*LS-1U5&49c0Q+f
z`Rl$Pwww%aqQ6Yi)ZeYzoOE-o%(eTm*%lh>iVnxMm&{^l(0ngt{4^+d<Kkt{E&iO-
zt+;>tQ{4ZCz=_Z7Ojjr8gsl2^);8-*PTr0P%l0p8JJ=k2_b6ydPGrt%te-UVon7+I
z&FhX!{CSpJaleuK#v@xM$qHr9+yB<41nk(qVv70BV><qN#$v(&E6uGt&elvj=y`a7
z`I4UF&!?<iwc<|T#bS=S$83AvPv~2*@9>)AWtowp+mCx+z0YTuqMhgGI{CQ42423+
zMsbrwOAlS-`@e2esJf_aRt?{g`h}|Rtr?C5$qO1X`>UFL&sNoz78GoFQ(e@hIX$sW
z%Yz|hzuSYe4k44olXd52m>k-FGG{%%x817hzT==2C98WxV6t+}39ZZfOTK3;oF~`!
zsQ1M?-sE-eDVvr!hf2?w*l_okhE+k}CJz40`j3%MS9$6DT=CIR;eYS4J@wy&(k<^X
z`2N$#+;e!Q@6O-p`LFNoirS@qur*`L_3(i8`>VUQ{9BY&vYYRu*_COrH@?)G{`3F$
z|K6?pq09b0vdi3|@qVk(%lE4;))&t2$qe_Xjqk0$qW<{$H_x3PI^Jfde!3r;{O^|C
z#_kWte=L#uzrz2T{=3Pyf9d?(eQL`7m2P|M3g_RENvXT9{#5>}r|<r4{%6jA{cG}b
z_w?TEe_LaNjP(}$-6!>bg?F7{_u6k^pTFlX{hw>fCpLRsmZHVaT_xwUHU;d|Kk2vU
zamOE-{Og+<)-C&fo^77~7KZst)4Tk+<R|D?soi?DWm)Wrj2C<M-ALd*y17L^EjUbQ
z_wwD2lXu(++>*U6Kl`}Qr44UFX3pi%VF)jd={{l{f6l2)yXC{o6vp~(_8Xc$Bsm=}
z*Nw<|AYiW-?bE<E@pZJ>liTYaw^o;(d>+fg8PBtV`9SVw$r8iW{G$5=yjofAoS(_G
zi??v~630J5J70^p<S$71|Av>h`>)A~!k<@nzkh%K?xH3uJ(t*TI&(zl99liiRM+TY
z!ySgZ&6(F*&NF)ajeRpKx|#dL6l+NVFEN%z#YufTDs|P?=(AtB)p=*nCfECKSLAJc
z>3?4;>);}0x35{|MUD=V{z`Yb()Z?UX-oS5_S?x2!86Cyf4n)@6gQ#Z`x3{Mf<_Cz
za4tw(6yfC8)54q=R>oSikA+vUc$VV9kcTJFn=o{itayE^bW7`w^4PqLZHzDSuJQJs
z(>km3WS^DLw5Q)rJ=kN)5X%`@7%sYQuaNzlX%)X?XH@ntaE$0Vo9C>WwN=vO!-{Q=
z#Y|cnUCT_43NfDZSfNrgF~n6iDlJa?RY%*rnY+?Ok}pgskUq`!)RiOl@|3N6J}}sH
z?()c7bi7)#AxtRm{h7E0CKnuft~eaK)HUC2osweYyBH>iQbE(r-?kl+7JAozH$Z5e
z>79FfqFQ!M;8wf5DZ4-Slc>`DTqBM*Ig#BRceLzF{Y#s_$U5!isN}jSH__3_eOuPe
zRgTQIed})-z4*>9{X;;1#@5$Mxqr&@mqs|L^Y59?xb9)vlc%=sysz#qT<@?h(_mp#
zne0o4yq(sHO50EVxUf5W+S;hv9g-$`O8gJ`F1<Z5r&Z>6-lyj8mp>U~CjK>@d{_Cm
z?;~a9gA&UndCMoiiBLNHR=wfKhmdNI7TYxD66fB%GbLuP_q^V%yuGW%<q4Nq(w!S}
zF&Pa(O6znFm#nrv_A~#$jmx|X6E?bLYB%y+6`Ca$>TGts^JA0tVqNBc+z-;Smq|=@
ze5AKn;aUBJdY-L%hGt?ihxs^k6!{(Ip71u^)*W#|Md9GHC%4WCl<OL=DeHE7mh~sh
z@$<XHEu9Su-*-tw8hq#7r+(9Dq1nyA1}=+x0pj|*S!b{QmnM7KPkqDT_h#$YaazPa
zyY+q9`h&Ai`djZc_%NeU_Nu2uhSVwZm|n@doXk7Qp7;1poPApNaZO8G!TO5}HmU^d
z%JKEt<CwKWZO&VjwZiAFnU*aq|J!u_M)_)AgVimiTko#dzLP3^!Y`C}i+g}`^xF70
zCfeGC*`CK1zZHnt)^|!Q->z`~CEifSRL-08W^8C-dlEV0?nV*)=w)SxZd}i0%UIQ^
zo8=fW?ZFN6EizkQJ9BsEKhSP=w);3aLs-}G*e<5@n<1$W*9Tou6Smr-l>C7$F#mPa
zB>#=woaK@}7ECi{XKtKzxv)6#TSM6N<q9iGk4E&Cww=E_>q__vSJ|AzSi|$_XJQ|p
za?x{mCw_bh!wHo+a|`s}ykH61yW!tT!N>{WJJr=<Ruo0cv~f?FeKK@5_qv#{#}dNR
zn4~6fEZnGZ^NG*qbB?{USI=v`aNyD$72%q1N@prBUFv#S;m`9lH2r}<Mfst-0<)9m
zUjF*ddv@ImGn?rLer7~{YiUa{t~U7oY}L0V2ad8{sTDOZ5$XAsDz~iXYTBJcpLPh%
zwKaL{Rc0wR?TmqH%_Cjb4Sjv0>*npa&ZG7(_0hR+3x!x$W^M_q?|h;5B(#g0X^o^)
zjLOSJS9Z)<oN74vjOmmav4LBXbZ@NI*ZZkauNIlAx>|8{%nYZK^C}-ai0#&0HRB8G
ze(O5(HJNvO^~!2POM4l6_og)+k@%Y+f6UNG=T6S*I}1+cM7xSV{;w{VII$&BkHu%<
zmlhqf6-5@Sxb=9amA+*SpThQBb6RZ3^zDo4qU+pQcW&v7om?vAz>xI7O1kLbq^ia3
z##xf;9yf|JCaO7c>^oK&G$VG?dEsWgZ`tqeO<tUPYJ=6+#O6sy+KgEuBG!D`lpHB@
zXIJ<iRoRPTudeJlxJlQym}?D-&go~f`D-WrSf%hr*dX}z#JDO;^|`K#Ce%bWZ4~wr
znx(x%xmCyVWkZ;qPg%w9ycetPN%mgaWh{Lw-P~8~uZQU}k@smC^DC?vPjzgW!@43s
z^Mv7gg)`Rfiq=n$WlrPl71R>^x>8$NTIylN<X<jR6-{(aGXk$p3QgR#-f@d?6mLqY
z%=67(o*r?Yv{^RG+RmG`${?Ei_ocwIGfovf|KD2tq~NDo^|zF2x2o#HMdjB$wBEEA
z^e!>EZzNju)6J~$y^Qk7dE85rX71SY#<pCurQA4IeA2J^g_E>&MS8bgyLRdlYxc57
zy4e~Znld=2JUlV;o<MYkdCA3}iJLF2t9$rScX`YPsmwa*Bb(zjI;#bE7tPqn5`9rj
zuugpChxId5^Ob`Ir?Y9-3rhZO>TFL7+H2r_rv3t>;p$aF;>$RN&jeoU)ZQ++d4<xF
zrq?zP9d=l+d7#AGET%a7&0XDtDg2S<W)Ih8Nq*^b;5Ow*f1;N>!QtHlQ!&Am`$y%b
zJE|Ri8W6-k{n*y220yuSndKfCdazCQyLt2R71`wU%X?4U(Ri^giCv3lfl=ZIRrVG^
zw*Z|p4O|(Q3<IuOtle`=N~~_#?F`15+*Nw+aVaL(wEpvzeGTAV=kl@7+Hu$3lQWsF
zv;4Trpkm#_C*v(~wle*Z^d*6(+;cU==5~GGsDHLEr^79S@kM=?=-Q7>x0>gh_e{Up
zv*$3|V)e^~KLWZp32s~{7Q(69-l9{tFlQy>vbi@ef4s`cxidI~=Luif%}YFsBEH<T
zy!R~fxTja|j!71}S{qf?P1wC;g^5p!reV*)O)O=;j%lyfJ^V3eyWYFLSu=B;W1dNK
z#_DK_ALZI~Y0b1vs;oO_a9O@t(|G1mRF?6N{F(VeO^aP>R~{}^+MKZdVo>v<(;6|R
zryjj#ne`-ZO?ut2Ysr!sJI{MtvVV(u_Wj~JKdZ^XTQ<vH=D%~lxUA@(w7q`s37K_|
z=CQ1IR4#s-V$oYOb5hZB&jj&ZCTyBwYholm>fCy1*yE*hs@dh;<dbR_QdiY)^b7r5
zuxR^{LyF#+3~CJ@BV3Lp-$<Xn&&gw6==`*1(PNjRUgTQF?bLa)yeHN0N$Z2A=$2J#
zs<Ns<Ebm$tuG4(*GV+v{+J5opQhIy`X5KupYwJA5jE%=#e@-)Qy(e>Gri&%l>)R}0
zO5#@z-n3r0QP6Cgxyj2=!@h45E(CRH=h<wO+fm`{;+tdgW7|oaU)53zl^W$tcfa_u
zm2ro*-QxcjG%QPYZI29AHM~9dkg%-DlZ;Cr^yO!?#_&E$IDc9*)H&|kD^tD6dZsg~
zH{R>E-oW*a``D9*t61;r=g-mV-f?h`n)(X2`Nki-s+aAk7d$=Vw_WU-$Y`f06GP&*
z9ci0wC0JfmAbg}_yY4xk+ct}iteX=$cbBhI{p07N!K(tMM_zK{Na>M2_M_|Nk+&SL
ze@Y9T^pQ;$%v#8QG_s;uYb(oZ)7hCpyOUn=n)cjmmTJkoWg1+Te*Jj%G9T56vrcNg
z2{jRTwj#xSZIH%<nU-E|e+{cm7e`l34xL>&(b<VpYA>5;WZ9l;3q6F2?wQ`o5h-^s
zQ&!m+Y-#bf=-Zv8vc+3}_F8)^*uC*{@?@<}&ePID0e?=n`1ZYT+VNcRMOWw6BbiOl
zKk-beofPTKq*-8HC~P#FN6+br?5BfK%qKI{iiIV6Kbn5iikwoAnzt}h{5fwv|IUS)
zGcWF4oW{j>P4D{SHF|F!t$BIt{H7MWy(SCFg5G@$J;VF9C&8WVyM}4k)3np4gf%8F
z_&51}0Xye}ZL_CIi*?_eS=Megg~ikQ?B$8BTr-{H6|d|LcUtjjW4M$~(kW4f+S@``
z&0{=HUTc?j;*H~NK4D^-wDr=*{(>ThH*>wy1l=8HWlmk0b+KS&(GH`dhbFmjc4xNo
z%T73ECOGK{S7q`%i*KcMlV5*O+P&cPIhVPNUqrkPWKW&#-hX=6#l`La7H^b$XJ5d5
z=m~%G4qv6d0RD5EW*De^e$l^#ch<w%U(-&R&(4t8_KYvI*=p|5b9cCwZTOky{e|i8
zwigl4w!X+bC?z`SRpP00FZOwrJ(;<5{?jLirkcgB6gf6^`ZlQ-Q?eN^Jx@J!FVAMF
zuorjw1nsUFx+fPMirDulVXZzt+p8!hUE|wc5_z}%t3r>ys+q|<yF@-_<|oCs%QOBT
zaxH9WzS%4Hz2{zB*PIUyA094EaA66vyYG=#a=BzjzFk~q&HEKIrpVgPYnYegbKFz9
zS*+nm@6@9@oi{nX#r92Z{r32>Nr1X|M0vi2kd#o{1lFm-k-rNjZ(ea&e%_CiX2;yO
zStjX|?o|8PzC0QAHbnVhciC26k56X=!+Q?wNKI#2+oF}ibaZn|wA_x!9d~B87%OFN
zzxQ3unssUJ;*DOdY{!%oSLPboS1sDId|PVbl{s$BCoY-jHr{l8x1BNLQs2uzeeZl8
zwZ*;q#1Rzv`ll~L{dou0IhrPGH(S^4ofyhoTJ&R@-p8fq*FV0ZsKB;Ar0e!ciP>Ad
z%lS1Ni^cx><m9S{EN1NG3|@9~!8P}}3|>D<zbLy!7EPJ)=>FumO-FWGTcv82%Ipkn
z|FwU&w{OvjB_1ujjxvT)nU|UZOeWRnJEtWSHCAdyaPGPpux3)*q)YmN32o}@19jt7
zf<rhrJzRJ*JVPYr&9p;~yJJpEBz$#Fb4!zt2@!bdVX}Y5uBKa>`i~m!o%<K&(BwIP
zU(((u1qTBs=YP5GyXsHrj?I22rrx}i|MXOFL`1R24%N9gX9lO7NC=1vvD|1fyZof7
z=bi3#p1kZ+^O{#S`CGBB7h}G4c;bSI2GbX9DOXC@`u>V*|2M6@ClgOOCd-Fi$}MqW
zyXm&6>sQ8?-C3tDcHT7CbANvNWA&V)TWq(iT$S1@cV@||%VC%7&IGtHZC~!jb-SxH
zVpD2SiGIRaxwFrgImY-o?BEL7`9yBL;jZTL1BK^)$jDVYg<acPa4)>P+GDf)k_#(@
z!lJCA8Mmy7m^ZU~LE!Sq+m{4cPA-nUe!2Hy+6UKrS0e8_hHZ(sKdZTO^S;hTpH2Si
zKle8YJv||D`DfFF@SAHqgx>{O$ju3lYW-4~s%vbu?bC-3){2woYJJFTx~wO<WI@c~
zK*PU@E9(P1W;0bi4*u@I)LON?#b4yrTqQfr^*cM<3*_^c&uPt`vZwfx{MFs=Pw#L>
zyyMwAb3>rD=#EH@w1-S$dFtz$EIc|(Z)kOvtdorEKl*pd&O4IKs@0a_CewE6_3c~d
zx?4kN$MIb+^c1v>6fFG(*3B@Ta{6dx+g;(BiQaC1Dkgar*e>&YZ@Kf}lq`eVkY_yS
z%wB#nc{rUh)M=CXyB3#eD+2^Qy<D41+-B&NCM|a|ijnv4GDux;u<J&sLh$ETAsiXX
z42ygfPJP<!E0tosdzHr9X{#)5ygCtDxM6OYcg>BpGwfojXNvU8swXgLMmzEd{?vNn
za>{7wkGn?$<}H12J-|S`)n$>H-N|ppTQ8opk=#Cc(vIN8v$sT8&pXcK@<i&^in0|e
zR&&izUzPJAvbJRR3$G`F63dS~etKn67T3)Q9?3C64KjO|-FbFQAywwsIy<%K$4er4
zydNy{>EAKeYsC*9Dbpv{WS)rLnKZlL+RTcVcBbs%4$o}jrkJbkUslGTcRlCXx2J~D
zN$j#RbBaye---MZpFT-%!<yYGE&(5SjX%6UIaSSl=_{4?8(*}vnIuj$pEI^_-+E!&
z>nV!9B^M805^?YlI(0K?$NSXT+A=#d_1xnn4bLq(dNNeAUo8El>&)xZHXmKMHooY_
zv2QA~9Cy_fv-10joNV4G-@R#-p;YRGi=MMS&9$zS6`ZeR+U=@s9eF7;?Hya{FOE&d
zzO4+gL4Tb*P8|(B^k<P+tg={>pOE=6x9=B^)PB2g?&Z!&pWiL2xhj{|^(;<s@uNvT
z)h!~i?*u-~Gt_XI{OzpDvnP9}R7P$&IbCLF#{0fSt0#pe2j(VSlh`O`=q`}GBqn0{
z!oTM?%&_Hiou-p&@tmpd*RP4qUfvVG88}Z4^n1ths7<}#f@G4S^SU_BYuAd>nrm*)
zG(C6g+6={`FWu#`1kyjJ^rq)zt(>*%^VW%{g=Sb<*ypN0_r7xCh2E(-VqM3i`vs<2
z-g(&7D0T0E%d~=vn?98q)UNhz`q6!-*MG0$t|PDH7F~JqX~PGT1Dw~lh5g)Py}-{S
z>~Ys!@7c%1Rvp{>!Dqn_9`SdJ{woSzU;Fjt_QOee?1?*Pzisy3UD0ztvgfkoS=QrO
za@%s=<d}Y6KI=`)*}ID_Jq@qDypwJ9&!jbtj{?G26y9WKZvCFZeX%b;!~1lIdeFoP
zku!C6FTDQ5xZ!uX>bl#{Uj6i1cX&2W+(R$(llu-y$2qf3wk`{D-u>j<dWo~^>|)k6
zY5sWiC?WpK5f3F^C+!xWtCo$f2M>OA+qqprC?KfA>L^D*UWt{ssif#e8>iIOJ+e-!
z?e5P!Z)ZoPSgHgSwU&Fmoftml;mynIw>R@Ftzi5;f1RPJnOU$=?9ty&jE5E+HTZSX
zHav5a+8<}lX-+p67zA?}T*|pP`Bt)D2k#_zeYQY@Fp0y<BOX3YKD!|KM2BmzM^>v_
z-LJj7r!9~RHj7|nwihdZmez7u_pRH-gPH9Y*GjY3Ywf7CNQ>RwwPljzIUbK*&J_OL
z&+feKx}f&-;GP3hKhH9q5hRl3^K0jG!`!T6`pijFbM~EzjjK_NeboN;G-qM#$(idi
z_^0|Pom_S6j(Nx0JyBPtPThOs%|eT3`=TXzu2i+ovTlorlDhfT>k8v6|8nW1m2>Cl
zYO6ivEpamHoPOs+&&;Ullf7KR8us03D&8nIRog{)PSoY1#+|0eTrJN}HQdRde)RAn
zzu+WE-D9i$*6|!&J!x@<^g&n7IYxSCu1hcWx{zr#<zae-j-#M)^;L}-X|ZyRC2via
zG=!{G3|HLHvgPfo72P{$t?!H$mMUiIx)Y^YW@*80y>OxA$+C5yr3$}xJ9eq9JNROu
znFo*0JL4HOo1G^;$uMgVfBNL4)yxDT_EV;JyH*D_q)E7yiL{(r(X>ab)&6f~cXoP_
z{tw0Jv0>)?LfU8Jb60ci)DkIsWBvG%_rp6^pUz9_?A@+w5p}aTLtuaOx7;^xc5*p>
zKlYO8rB`l-nmF(39~}*O-_|OBux6WcruJ<0H{aqA^ZlAU`@ZeHqJQ5xwu^25y)8+W
z3&q&?6|d`+sPuI!(mm=~ct>>m)TY9;SBl*`>bCgv%n~xbR<``y-iY|4yw}8f4?o*^
zYuVm_*Uv*^ZX17{5o_@$gh!<J-LJWhT#q&;Mr>JFuJbwT%KKfb&HZLvUM)N;T6~dO
z>g0k_`#-Igda{?_PubS8>RI6FRa`8|7f<!w++n&#;PSyIGf%7Nu-aG~{g#p0T)9Mk
z_5Sn^*X8s6%1+n6vG?gyo`7??yY3!ayMIohV{}%{eT~?Bt7GP087_G~*j>9nX2Iva
zH~t(|8WKGF*1YhVcb3iN@TWr=QB8Jf+uJmMOsf0#CNSk??&C|(bJ<UpztipOo3w?k
zc|&XNgUw%rN*tG5Zaw|-g!E3k838XNvcmd%^h;mFvx!=5ut@M&pnvkv4)1C8SM_e|
zTzUNKL-!``v-f=?^fY(pZ%C=~`Ew&iZ_1Z1b&N`z?)HQWeGh9tv{5(l!u_pWo1R+l
z5?Y}5|5{PX&q|@p(#kCnQ|{?(5^9!~olw^Ny6shCRQ80k?{e(yE}e>GU-fC{38@xw
z(ai-Kht!I1J=HrM{5~huH8OnP;R}Bwp4h7MyfV>`n0)8%6`dowXSP=62sFOg(bc(I
zm`AJRfXJn($?BHt_LzS!GWTFV5zW42g{_;<jZINTojp??&3?GjI74rHYpc%rb4s7C
z^u;TENp1flx#sNQBX<-Rubm&@*SLlyRlCo9>w;R>mrrZ$zHX9DC@kGpo+UkpVP;gn
z-TY6dIm!bqHk?mA(D&|ycjMM_y~yWV+W75HEzFbL=eTdi>>c@yd6Fige;ImJMY19*
zM3R4KCYaPze5v&8yOVm@FuGcMDueg6H#>?}hNPV@b@Ep2Rz58n9C>o<osct?yFR=6
zH;7n%nIyO7bXSi2hEChYb7s3a)?WBN^`y|Q-w$_PTP4Q&?IMHigwn9+_qtR3;-jCf
zmY93l`1Xx1_wCQtgs=;rm{PjlT{m8C&wQbi^A268d?ndmX5yzc`-l0Fk9&8DGW6+{
z3aVtZon`+1j%$LXo#=i$yOf&kMe&IZl8j2SUyH8>a&IuTx$gMlnJt^DQnuVxuk<qq
z?yj54SKn=-(eT9Lg3mVzlL{f8Ra`|G4PAS9u1+k?T0OZ)PkoBgnTzZze%drEEIZh<
zA*=o5>I*ZcyG!&ldE5!k<=Qc4g<8d`ZF#F7t(h>P`SjJ(kI!m1POgly*z|~ZhIUxi
zniZ#3ecaBc)A;V&(U@a$K4A}qRBpPbPW`xoEi?GstT3_Z=@;z+z8O3})ahscoUwDl
z<82x|FB~J>bB+}h)?SR6$fLDsk?|I;S@O-33NErqDJD)e@J{ga{Q1c>FXTU)%*KWM
zJ~BTFV;ldaC#F?3ZT>RhhI?zDQ~5fT(35fxRn{)yj%r|=yFHq5*1poL1CQDmf4R&n
zvKMP$dFYq2`qYI(5}fws?5D!xR&3Gm+pyt$*X{}K2Kt$YK0m1`F|A~}YaFo7%;np)
z7l%KXm6o69De|haZ<~=(?A}{Y>Q~#9e~SA`bN;N&8WYs#daKoXKX;H;W+`sb_FR8|
zieTLym%YIku0=e*#>=j|@1WtOi%J>IY^7G>)gPWXrg*T<Rg+qG|D5=plkdx3oejRZ
z=JF-?<;wb%YBv?OuKV<KNq21Eqqj@Cr+iK@)1Jwt*mv*N3Fmv9wtjW3KfYZ*b@II)
z7uQ_f=qEQqCkkAZtXdip`Q%@(PK{7y_X2rouj5|}zIF9}+-)%BO<={`4bv7bF_4t>
z>J845_Tp!{FYRUA%64M<sbY;D-u^q8^^Of&0`&OyOn;D5_FT<rm);YhyibqCFRe-c
z7TmtGswqL_`bVb6H`%BBJ?ypPhtT~6p`{x$p6}D$Ub?x)VOm3stiaqgsoe&O55w9v
zmI&#!NOix;Qh(R8@TiFx*JgdkZ$CCHdi*C$!23er)t);C8%$051OH6lFK8wz-s!R2
z=KPN3I^j1yD0j?!r!v*-#9?-J#oEb#rnldfh-q8t{9beWwTTy$W}K1J%*^kyj%E-k
zIFKNuBJl1+s7iyv&CoAS%8J#A&9nARVthGmy=Y7Jr@w!FRyzn*v8A$Z2zB@CQPe)O
zPbAj!l=wu`Bxgg>8)+;@-kdw_t={d`knO%w|K9!6zDjax=XQxK*SF-{Y&M52r0q@N
zgd1$EOALdVcPgG{Sl#c=lqGaQ;X;i0*F#3W9ns19k`s8QK0V=kF>;BkG{g6dORZaL
znr6)so_4%L_Qt6`q2Qd0{h#=G@6CvgxbmfSq4Gg*z2|QnS$1d7+TFJ|{P8rE9?rRK
zE0hg|pZ7?Vc11pFFSN8SHD)_qcv$^}-_grquDv%eo!EGBHOv0lYYLxoJYved#eHU@
z)9mTTeyM&u>MG6?dW~H)?#0iVRejGagre41`$@bk*`j+;uYHGEoQr+#jHMf*ZW(C*
ztb1^Q`OROGq-lJ77dvj=R6Aj=7-{%XHTd#0DQ{&rX`kC26PHgj>#^Btk|?(R%nh|O
zK^gkK61glVS|X><uNKmdv)QjBoE9smotKmuD;KG|H|ye4oyDoKb0$c8E$3Wp(Vcr}
zhE+j?!RFr_QT{>U1>9-QMu}<P1J3_DVfNL(y6AS>MY+W}5^qmlY@2!at*oTst+gdD
zZ>2s`*;l>1xPMdPmiKDPZQ<rSMU!u5KHid)b2_I@)VMlADtO&9gTyWIYKxB^mS!rd
zK3?d~Da<DRU#2AWw*~j?TPimv+wz(x@MI(&mbvh0)5<np<C2OwX+2JY+awq7wrqL1
zQSnd5qyCg*Jgvtr_I%VWn`IcI+Ag{Hv$#=m$>H`h5?amel8c>hSNUb_UAiHuMDoP8
zq>AVBqYb%Qriv!_Sk4dYQSI4~bnMfGOI{1)+<NjJ-*oHwvOM>QN9!cPVuzshr!tQe
zWTYJNVY`01<6^Ac?T(o?Q*@M%xv8}Z8kbgR_ek`YFA`jQB38<9GCRYej*SZ=6OR~(
zgq!uS>$LJ3cenpGP3xC3J9EV^;fCrogF|gIt$w>oyM6Rw|FkVZ<h%;ETVej~rkPiJ
zHyjJs4d&)f`(!mG_h7^!F7C8X3JY{3+7C5tY^jMb*e5F{*5kyPa!@12LF~-4XHkaQ
zKVv1m*VMPM7N43gFKuvq>ZPR)U#)p&EUVx)Pw?7RVN&=i@5G*{mPFylj*qRSm!)Vu
zlAXBV{*(g-@1vVdG+rC{tD7(e_HSj;m{DNOysCk%TTCp~g-__0xa=LP1-o6{12_F{
z{$#7qC>Wp{F^TWiBoU3b=4nw*4?nJ+t)Vb?{iznAg-@0W2KKW!ylfFVA3pU*h!yAT
z*kkXf9l6Y6`}6TU&P5v!uQ6b-GVt?~SW+DQgnJspTKU^H4IMU&CYJ)2tN-$}GP}wk
zsb_YFA=OD*@`LRj_6>elVwk2**<|PaWKy~6rfZR&Jr(b6$o_xud5Nu#r^=COqLNEh
zUzp7g`mkr^8L8bY)-QX`T-g||Vqh&8xx8J7k+oR;_|?jVM{-zis0&^DxZur>T|FB7
zPvW?~Zd<n`?C9#weMO}cgI1rIDtKLZp}yukPUDIr3zz(#zrp<E#kuacjy_}C(;jn>
zeIuutw!wpi+XF7I+PM9F&vH)9{Dc4J&YA2ORHNC|vyai_$p+p9e>U5O$=&+-J;=gg
z&xOBz&99{xx_sB}wJ&(8(s6g$(uAJ(-|}OO9j<)p_xAW`wRqmLXURndu6G~Y|MY^F
zf9h04i^+?U#LT1fj@2=1xxZXEcfy+se`ebkZEG)ja`%O*d8_&Ik79}0Qj$+PrK-a<
z-5Ku6t1iBfaFpw7<Gau73b(KBJ}&2XC-Uj^%SBs@<nnK^9($&9<8#sO>f)NyZ>}!b
zG4+0EnQZzFQHEP>|BfE?zRP|$yPp01!%mY5VdwLWd8|*LO@DiK<1~{83mS_{A6;y3
zu8;qz|4u#hR1t^wwv*mf2YyWAHTHDcYw@~8&Ac-v!b~UkgWGn$&@i2M&-1gmO-?*G
zfAEleEu$3IH6H$HhgPt6n|&~PaPe)0=BNLQjh~-y(wRSjNtdZXs3-I2!38%CpI^c-
zg}LXRc2-Kphm<GW7hRWUr`gRql5dgZEWR{&;Q^ZrPD_D_PtIL0|F^Jrdi+E$>AISi
zn?vGuX{Y@-S!`xis}rp1uCb-{R$}Kn3;)VA|DRbZDyhpg@{&_#<|`y0m9Uw3BhE5z
z-NyZAKT7W{lCfjVIPtK&YJ<=%8NaJf|6jJSV36&fJ0;Yy`JDafBHe2Wz6ZWEiEi5~
zecxSbR`1%172yl-*O`@+J&*ajasPYP4NJl#<*E;HO}z85-D<`;ex+%JSFWbMk15^A
z-;=Rph3J$88)sFN-V1e{e1FfSiH{bo^Ov`LAigT{-`7n!9i<HAE_eHWtXjwFDr>TK
zrFg$v`Qer?TBc#1X6iewE%hFKD1Ywz`siKVoog0`cV4=+;&R<RXPxS+&HI$6ipRe_
z@pV^P=^JKsp)EV_DEmgO4foGq7p|UA%=zcR>K~_rPABf<TKGWeiG8@W+H=O-^)~Ds
zeovb}Bt`oz*{merqP9doa?yt!OE~9=K0R>9W}kc1(x=LneOsMNcbR)1yzliQ+&t3J
zto?4+YR{gB`zBmzVzZjy6IZP+_2j+BSMj*kL-zC9;vzGZ?}<x%@;udM79XW>G3&=X
zo=1~IGkkY;pVP|nysKHDaM9a7p6LXGfBfPQqmOwXPTqd?`me{|7y8_5E&Lh|1@96p
zTff%R<7b(J)^cUx5Rcvd*3yrbwHKc_!e+Ab@kO7MFRUJoBIho8&YAM*%|*dmeF+C8
zmv3LR@0|RjoTj}p>}9G4ZXR7}KFRuLps$XP=D{9IEvvT+%CFpeIQ7R9-ABvs=iT71
zRh%QNDmS+@w|)P~gMO>n*fz|Y<CrdZ)zM@fYx(a8&p%V<H|#hP_vh}Ty`d2nhL@h)
z_*hpZxAR!1Xnx(%Umb?JGQZr`&CE`!m2#-rBKm1U@uCSYram#g_q|$2@=Ic~TbFIE
z75CBI-94AS%UwQEbfkB}X-k`AzL)EROGR2vHebmo$hJu_I(9ZpCouD*@UAVT4_D;3
ze`)VuFxhv)^`Nfi!$pyggl?@onDScf{OUuD{0;7173&@C6okD6lJ}iEe?NH5WLqtd
zS4tAuC#Ia8ap>Wji6`_8=agR9>fUxC^_1-U6E-H!6C?E`KK`8hV2c-{B+G~GF26Re
zeJekwT=12Qw)m2l8`l&xt#jMH@Gz@J!OM(msoz!Blub30Z#X2ky?tGgpVX(O6$?*A
zK2xsE&73uT)q=z)6=9|?X8oI&Y*~Fl=6mZGyTeBq>|^hqoYeEMA@bFm3l1}c?f=X?
z@^|s>1FZosUxa<-4?Fy-m6vVhmn}=|XC%6?WK2n@h;+{uFr71Ny8EkwxQp{$R=@00
ze){)Qge6y@+T3WTKa<OoHRRb!PCDD|nYY#Q;4-@${rYCzg#kNPS?vsv`p>7&9sJ%X
zz?FaZ!@A>-j`_7&^!}2}x+veJ8gzbgo~G88uqO)P|CT+nP<`hiY0oVkYp1j7*(3%P
z)vyE7k~c*=W@PiczR#%Xu*G1ySdGQi_y+DTr$f`!J1nMt^%U0r+G2UYTl3?on?^^E
zdDm8N$qFcuZao+MtJ2|PuwiV&^sk>Ao&-<f-q|;4v(}fQ>VoMT1zJ~_I()L&RcgF)
zD_e4f>|VB$(<N7(*ZWoR^3|4;mKRO?q<*#d?UcyeP%~33ym0A+^U{AK&g#W1@<>+b
zX-P3MaB)76CwFJ*+5Iod-n>-{SvWyT=lF_*?f3LKrhIfvUS2cd$L^v<S$`xs6t>2(
zM(1mZ$l5pT4Qtl2us!nR(NB3H4lXITbDwheDXH3Ddh%b@`v2l}c6O!W?7BDQWB;c9
zY6%aQKh>EY`*%jKRMVxa|7SklU;4GX^Tf=+m-aauy1tgb7c&+#o_;N&WNlnDpUlk#
zccd#-u7AsKU$EfP{>l$aj@e%5-v3ejQqGxKBLALVVd8(55&7WQG$CIeZ)@*$S`%1>
zt5*2?txME2cH7RfS;FevpX6jiPCKK?svA~3xW+X@v4b~Rvr*LLNs9pcCEX=@PupJI
zF|d-?@mSZ~^?RF_^3I4^S&iFzRj=xZDs`{hkUisWhxdE=h~+{~YC0@JDob2!Zrx1?
zYq>LNK1<W8BS*9k&bga?a(hb4r-KKDZ5EzAF)hTGC8CeZz_TL4Tkdw|h9G`{se7C4
zQY$6&OVc7AuF^?3c(7zw=dAF~#g~p9h<E&_xu#)W`lE#AoA=G;9Q<I`611e_vuDD>
z+6l|qzWaPin$_MUn4S9L*tAU#7llV&{G@YyZOhF+1^v#~g*$aJ>n13gC?0LQawEX`
zgR=i;wSQ0amv54DU$Y{*=8Rgv=ZrOfL??yDoLPMOKI;<ImoeMQ8;ia*X9`V-d-@}w
z>$2DDV_DBm7W|mq94T?%KCJWR^yc<Gl3}vtJM=Q&=<IK9IWi}o=~LW_%A;%Bcd>qb
z{~%KMG-q{@V2~vDgcD)mel~X=gj_l=zi*Yv@6GF$pJDiO>e_|k-S@q?e@Qh|GDOLq
z{Hk&9VR5hK{wLkXx1NeBk75($uPym<yn36a(6PXOX7|ljny&oO{kTb}x7;POT*cs6
zVIkMqBi4I4cNV4VI<>l*Pq*NF+L!tDG#~5D0=GbhyR)`#tzRN~Pxsr0LnTZ$pEhmz
z*<xGf@MiHke&!Pe%q#5TOI1U3OqNF1UU2cW>MQc&sgJ9c$V({tX}U}{Dx%JQ8h04y
z-5pNrkKA>Lkt)A!?EiaX(+;2KT2&s?*<zKx8{V9>RM8_zzHE8Pr*=8-j99N@Tc$FK
zeKvl<Up_&v#^+({RFm7nTTGUk`K-M(tIUw~t!!P%@43%)ce732^>dESt<_;CcdQP7
zbI;}b46~e`&`3ewpq0zMO%i?Kp1N4i`dnN7nj1X#Zk$uMp6GG8vU<G^uV4F#ux+bc
zUwm0VGuw7sb!lRn+_U!fqKS+4ZP|4(cERTi-GKXh?_ZxS_DEcIs`%FK?l`mVq($2=
z*2Uap2$q#eKF}!;@xx}WO~Z|Qrn$n$%@dBzp7Y~T!ohboYvm#yhWdQbTW29z`t)Gz
zxjKU>=H;x0i8Vp@_(IjA&XxAEeJYyEE+w_}D8GLA<5b1s(4y_f@>q{8JM{m2;I)tU
zE-&TfyJN_1+I?x?yGvZp{=JE;{87R2eakjO)A{-3$|}-Ae_h)57Pr^jVfT(xVvIj%
zlJ|6O`X<S?yL%gY9_!m&SZU<3zrQ|B)a`bc0eh!hiBD@|Z?{hN>^P4|hTy;rQ*X;W
zThb!Jr+u3H>Qyg~?p_s>9fgNEypyZ7Yuu9fS1?z#oVN)(_qp@jHv{$Q9BKT!FP&c7
zbW6~VN8w&&`{%l@&v#N6Er0wz;>_)1IeYRHW-<P*&$034oT1|Q?!*5_2{XMNE6&?%
ziRyaPNrab&D66ONJ=`R6_1Zd?vcr?QK5tnx-6wZ3%a)E^*-J!LWG2U+dA8-jGTVwL
zQ(LcI5;C++VYcKwsJ44scYLR5>}^Ra{_EOn-#+bfd79Um7{tIlF}MDf+efd~6)yL}
zPvqu&<P+IbZ&$C+)HS_w{t~O88}6*p`tzqqzMXn@-P4T4;>(N~j!w?6-h5>Fgu9wT
z8mA@My%o&eV$9a$o@)2X=rYx<4wE{atG>6Q>}{)0$E_=;wyDmXGPR%K!krsG8B?~I
zEZ;G=%K7fbef>fL^?P?apSCVtQoZAr@9e7%&5@rNLjIaooqfD7^TW#1mVdt72>PeI
z?UBBo>F<Dtm(J|W>$H~M7oK-mn&WilxyaK7zvny+skF^J_tZ)AY^BrT_Eed~>6hl5
zJ{)xF^LA@d`}ZzMI``&to%?el?<Y5p_AS?nsSo{beO~NTer4YLME}Z*$Bjk)ckgrT
zt(Z64SSF=9D{AMle81mQ{9>*ed)KZraR{0(FB<(Z;5ehWV!(%;SDqJX)m?r5`x^V1
z{Q6wG)28pUji+CE?sZV<>rZP7(f;4JR=d3_ZkrZSzs_afrTOnqMVn`RSbSsC{kW%_
zmi?<S{(W(^LwKGz=egfE%C!XFhMoHwv>^Xy=>*eTlcH8s-93KHH1mSw!o;PPcdx`B
zxb^MBjj+O<&5nHYJD1j&Pt=_su6fZjXsyfgX--~W_zhk^jPv^P*W$nGz3&tA?kI=9
zypXB3S*X@NZ1VLkzn2%jKYr7$@Z{{pt(O*RKi*vOV)spN+4*~?#_u|QF3jr7S{A=s
z)55AgK0D|oR&Fs>Oedqh^u?J)NwUB4`oyjsSzZ_NJT6k=+UbnD>-qj(-cWBRa8EPj
z(&MLls#abQEl?A+dYxSx@`5X1GFR-*PfMN7-`=s$s$}WkX?%0TYF=L`x7ZbC_2sOR
z`lW@dUraA~(IsD1`l9;gRJj_N;8mXO>$Y?+b-wR&R&A~2r8#wtKSLK@t~{VsveaM_
zSFL{LE?>*<n<N!($R5`Evex2d&_eD16GL89TVB|4m;cGc*Q*`vMX#Fi?2fpn#x(u-
zDTS7Ut>3E)Mb3qK_r2x+`E$PMi?>%7oIiJC*`)>NBP&l-ywl6|6W+HXLT`&X_ddh_
z|Kihs=>Pp$BjF_Capar4*%NKnn1pAGv-}I>nU2^6?aE1buV2rQz%Z-E=zOWgehw)!
zsWvw5Uwuoh9vO%JudIJkekPsM_wuGU5e*Oi%;sIm!Fj}oN$CP(PT$?Svcebd>l>sL
z?IbSOO4*qHSP*S&%Am2#^yuF-=2w}HVqO~i0}phnEVSW#*t1wzy2r%)^TK2A#9uM+
zv0pmQ&MV8Sd|~c$qk`v*xei~}J04CsoM^6oZ1+WP%{hw&cw>%UjA?mS!G2pheU(Rf
zU1`3>9ryY5Kh}L%<|>%w(8JsD!)|xgUcFqw7?F_V$GaD?cA76-;G6pS>_YL`TboU`
z>2h4;bo|eL_VA7`_o9L)cHeAJ30fgNJK(~b3k(`Ii?82so9v%;=zXGxewod}qaS!G
zkEJtym3L2%IW|?(=JBey-eQ5&<|(F{-|oM?@7wny?^fforAKzJ`R!3sJ<~Ah;GMY_
z65>}MymVlR-OHemiL0J@c^kc%UA~mFu~|x?uJ1{Q{?etPeXqq2iN1B`)QMWmHlHV|
z_g<&{L?QE>Vkw4aVha`qD~ip@oOAxd$Kz~ep6%kYKc?=UUKNnww9X^vSZL6XbHxgC
zm3gDfe?95ky!TW+|5|f}JQs!=ChI+Cmz*}4{%V4CE=#q=$3=NQS?{c0`uO&*_7>mC
z`hOk&mF#Cn`>$WU`*$ZpV7c1Wi`JX(`JX<ZcyU(y-t$wgRb136TCU$}cV78)Ozlg*
zuL}3<OV-WaXU$*4Yio1jrE}@@(;=~QeY38KC_ZTJ(U@)XeD0|;XRQ_3|4Z-l^OCt<
zFgGNg@wc1w&0D1})?dE-QOw)3s`F>azGQK+xiM1(l}lGNvpBVGT``kE>G{#v=_Uua
zOB`WoxVT8GPQ7rZ|Mox$iOzMVr+c!@N@9=ny*tSKt$QQm#|3r|59Vu#D?GR^A#=O4
zYx(hKsvOsiy^H!R8r(~7Zf2a$_DbJ@J0QP-?e{K$)m&)~KPO#y^Ny{Aqf%#`%@sCI
z-M?p4j%+;t^}*Te6&4>AJNLhSuJ7#>mT7kMj-$+PerXYluc!G`SX%Xi_|BQ-FbLIV
z^n8nXATKOsvuXblj#{o&-2BtRtX9Uq-j?`(->;B_vr?B%rXH5qHzjzY{p#Yhqba5J
zbJSXE9&Nk%;+&6kt<%8`mXBuSyx_?=JadQ39S@%w7t%EDT*-@DbmdsHr=#SwLo9N3
znb*2FtpeZZHlDTEwT-jXS!%b1u$?BeOvYj_jcv~^-gvOcN<A!bhg{2#vS%qCT8Ul0
z2R3%dtTrm#T$ywIc2RGyz4T;(hS2T`i?BDV7V&>qJhI*TXv(UNJF3$wzp$Rz`|I@?
zsWbg2J9#Il+WuMd_F6=siP82&I<>;PmX%4>EYFPD>+n1_ox!Se%{_lRg~`&(Gmh^3
z@%2&l9l2}fu@giKv<`{rD_(rQxwa+cQ>9g3va;xFn^lfhB6r(^)8<SOl$!KNkHdm<
z!kGydJuPnRzOlPx`;P}o_NKeo^IMPmmAwCW@A5MykHuHd9C@t$V|R<mXXhfrMPYvy
z3)xi2-+FNF*UH&tPdb}UyB)2LzOmAE#b>LNUKu=<xf*Z&C|$Z_E}Qf3+*;=)QqHrL
z0tx~zdMPNi{=Tj~bM4W`C!2z^Ckp6RYn?r`{7}K%6X7QM>S=F9XB{w@)?{ybk5l)Z
z<rCYhhF$f2$4@<fS@PvobHP2e|0@<vou2h~vzO3f-KP^jl;*Zhj0w9Yd*JLeh08%%
ziyeGYT~=-1dieN{pq;js-#6u5Q1QF9e^KVAWvWN5<qypKTQ<?;P~$y~y^8zV|9CCZ
zh&uFQl6Sw|9Zqc?(+{U&=eIj_*~v3$F&@`*j955pvr3Lt$%8=GmaGpOHm;4&^S&`R
zG4}mrFDKc3f_-}19XB5NYNi!(V`uBPmCChYLCZsrS4~qE<=c7a+qv#v>#yuM;I+l#
zZSQZB+7vGK*i5a@Sw$}t{eo%|9+e%}u@(<r$h>2sm}=YhSMl!-${a1-`K-OGKW?T>
zu;hiAjq~)}IW4U@!>`HP@w(MoonyZh?oje!(ZvF-sJ^eWKfLHy;$HUXO@{8(BbTqO
zW09MAL+EI1^z(`dvplRX{K;`=yi&;`ZF;e!<nWER`D}KnyERgSV%opUbLMY0e61@j
z6g0=O@z}<Nt}V6(Mc1X?GW%Sadf{*Y-^(ni)6Oq5ws?BgdrF<s(eAn(!K81<6lpbc
zru4q&D|bX}Obm9M+n6_XLv@8npUkwlLkkz2b3LROt|Pnp+r{txZM!eG^126XWK`*1
zcO^E(P~vH)D_7K`Zy{YZ*Z1h`JoWh3iiY26n%PE7qLCr1O8553)KqQ~?Fg3^d~?+B
zg<n@aUu5JhhWKqeHZGi)EoUUJ=dkLwNtbTgg(pv*TZGI~yLL%s<DZFFH~i>jEphn6
zs#$rfWW`gd7k`aQs>FChm!uXQ=#5kT6X?M8VovF~Tj`a3slIHR0{zlXa`A?#JbQ44
z=kSx8^YzRQzId3k<LtIThd&QhIIZ42H}uSy`bSXQWXfl|l}^D{apLN(&303FiC#Hb
zy`<>IZoRql{L&VjtbF|G!|BS$v()pr?mXG;T`7C#ee5xteCg}f>2D1uTRjfeT(kL|
z(ew!!Ydk-%b+(k*|7+(dqpjs~CXp{y*JxhSsA-w1vh3r9RSS&Dnk1FVb)5vWx_>O&
zDPenl-<mV!S0Y$Th1^f*e<`}>DVHe6pH`Nj6OdWGG4n9r;`1MOue_4={Pv!{xtzMK
zC3X6OwLTks@9MC8kS{!4eI=&s%@x;0D@C?DE^L#Nt}&liF0^f-^U2&5#w+g>{}9o-
z!qawgMxFl5j!h4>7Hn?xTk*|UZ|<jdeSe?V&y*T1WB6}gRGXf5J<jWtsmS@Aj@Mh<
zC-45@Jl%J7|K^}SdcW**B91=T`gl{cz{OPexo$FDv4{8idDI=9u75;VJpInLK8|lr
z^6bx(Et$8RJoM@LjXjNB0&#bWHnuHWUXuN}=y2QHklG*1_`R3ridCPG)_xb*?%;Xx
z*Iy+o7vV<&C%V7eD*l~s<*OBV@b#)6M-D!>nqPhL%QkcCX}^`@H&kss?ly5*MAQdA
z3x}j1{M$GD3EsN*lxN|Q7L7@h+h0!zx48b?lSj_(z{fMaZ_cWz?A#H$^MR|I=heLn
z4;CJL8Q1R5dZKyns<kr@U6{?_<P@<x^ytq5t*ZKmtK-FU>#{^+?^y3XI!}H6|K}X9
zBed%}{(1ZlY?hf)CokFmS@s#5=7JSM<%=9I&i#9P?(t`HJ66is*-z!#^wGlGW#81K
zc|xBeW*UB;{q6My`GO_a{erEu|5{B<y0l{*@1eP~xgL3)NZ!53!g6Zx!FUJ$zkbu$
zf~ya*ImADxv5A<pUu@~DO_gmIAJ4q1aO`clc6CVLeqRp`r}ZL!?K{4e7i?0E)tt3_
z=Uln2xg35v_0x|0^O_SBcz1L7(#uD>Y<pG|-FqpJU#HJ%tN!=p<xR(*I;2h(e0-tx
z7khlJ)g^}YW^dOhS<g?>HQ!Unc-H>H`S2r&lG=7WD{9sAzAiq*ylSP_*5cqzg{!vQ
zF5+ENyKjQZqh(n)=Z5Ur<+^Z!{*u$me7s+7S6F;rw%k*hF}SNd^U<xMZ!QHlZ?6<q
z{bus*?4f^Nw(@~j-tl}|wkp!1#%A^^DZYIV$|SFzy&qYkwsPb8)tm-%Wdj*%Vk0g*
zNLSpN8RhtOveoxfN497DdUy7mQpx#WCM>MMjuxj@sqJ`m%yhcPk&TO=D%%D!@VJ&;
zn=0M)M&?D@9;N?FmLL5b=eKLpk_ij<h_c^X80@Ki&TMJOI)Q5~bM{(`RwupcD|q77
zXfgL8>%_QV&JQoFjHW(&u;bIykV8U0R`@(GXcXsK@Oghv@25P*ka_wICOfJ>OcFok
zv|Zcr^TnmtSI?Y!q3%Pw=(bxsG?pIS^FHB}T(rlVs9D)}c~7nSGa;tqW4#Cei^(gp
zKQH>D&Gf<ON&Slp`~SJ$pYrdcZ(_^U<L0icuBR<i+wLelI5B}Y`KIiwd9&)D|HywY
zGAnRt-d}#{DXZRvD|vZ1N=;@c-N&=rxjD)HqV`n%`O;kis}?qIJ7y!8Umo<%bj7k2
z{{PO+W;<dkb5AhJWxJm_yY{+F-qb(N&1ZJ(kCtz@pSm#qa$%oyi$$OB&y)T~Hu~KQ
z`01XpLCJVBBmc6x2oGIm53U;CdwnjvW%)Dvey*_5ci~UI{bH(!+O}B3bE-$;Mf=5X
z|N8ew?cgVumvbE&`oz~B^Q$si()X76?fVCTt1pB!-~Bc7=DkoK(U-Fv?OG-p-uN2$
z^J9rgsNRD>Q4N!T|1Iwq)l_)|FnM%^&YM1AU+1(7FZxov|JkW*wA#nO`}X$Tc;5IG
zry7IZ7B=peei3@d^^<U*DT9ip`^)Pe@2&~F|0DWhTy^D&tc&t|v6q&~Ivv%^-Y{iS
z_}wlx$@&GK(+z5@7!6PHzh70ee(Cbh>-<w${+NBJy{`Sqt^BL;{9Erhu0Kc!|MGB~
z*8hnm-WTWcRu`@d_K9;kccRuN;-~or+o`je-D^U8bN04qH7H94IIS|f`$NNrBTznG
z@^fIN@C2L3{0d8J<>hw2)STZ_Zm{hw^WFW)p^<xvd)t*v-u2a-az6L3*j7}rH#Yum
z)-3~@_N}`n%b8r7roLp!;zt$X+do-^dabq=Gd4W=DwH9=YQrlFmHIuqgj$|G_ibo1
zwdB~xSXFu0RD0uBZx$7+w*{$87N42b98c$OdYQjPa8hJ|Ae-f}O<B)VbieWL%YIjo
zsa+N2zw?UG{d*~bmZx<>HZrU_C{!>>?8N5jPaT$bxxX>;%$ufm<AK%lbxbiUzdo{L
zy<!`Y6t-%MW*vi63x`Sn+$*<Y{7lcucW@aOO7hrb&))pae)G3?@kgEqF3e-E^*KJJ
zWo^N4P5a-$yhe+j^suVt{cy0+`u$P1=E~XIb4ya}&uJ=`xyd~f>iQO}xlv5v=KZWU
z(_S13)j4I^oh<4oZyNDxkHdPFB`4K)JAKVwvt+@+yqSDf*Y&5@PV6aNd)?Dz!@A<f
z&(8(CR`h88>LjHT9n5gy_Dr$Z>l$|!mF73E`(AY8uGLissVUDsEG@|nxUoL8Wa9BJ
zmoMD#y<}h-@#SQ4Xmnb^z3EwMCfBFy7#SaP^X+A^_@a10;*GAp^rb>+CfPHdt0f-C
zCc0kQvqt5Bk<MhnM9v5AzaAIc`D9x~=S!`bGZuKhp7L>CQ?UNceOg+Rwf3v7cV(|^
zEKR<^|2nt9Hdx@Y-nX8eJQt52y!3v5^W_V2$B#8!5njDPH}vhVfBkEiuixLV*`dRE
zd~4)$MU%{p6V7R^^Hp8Bv;TFLmP~bq=ECwvF<#T0*QML8J2z+7<F6L&%cgDBGWJd0
z&Q;YMT0f`Nt?PQ}+NJYs4tu{^ut8;a#%24@^Q|sVxVMtOeYrDJ`*I=HZF8eiw4DAP
z2));?nZ2g|_&KXA4{a$M79WN37iMQg4r;vJXJaw(`9Z-sKIT0}A6uFN<@Nu`Ok3A#
z=gxV<%eFY7a;}KlJ&g%Fm&7|TPT0BawdND{unp>pymr5>BRFSIni;7T|19D8&XE62
zs{?AeHHy_%tlz@=e{+aM+)4whkpA@{63tQT!?pHEuluYjA~#iTTfmR<uKz+@k8hT#
zL~gi~epvO}57pNn=V;9-<><V7EYP|6LqPI&0e`34Gg|qqKN`gTohmW$@Y}Xqs~tI8
zek3~ve*A9EZM62U8O!dc_df><|K7b|;olRvrVArE^M$15q+fk-(1vmU3zdcI)-Xy7
zJYVR}d2gcqZS#8(er|97RitbGG?mhDll^jvnLB^`-1W1srI@Jntkcv_@Uz;<6n8vF
z;;YJnpL0W(N@>I$5q|pIa>wId?Y6`tyhUOEJRQ#ctrkwYe(iX;SfPZ46QjJoieiyJ
z|Gc6Xu`lM$dd(#DFf?O>lR%!kxy<*b`Xv3R?+4r~xjzNl*%T%`W@P-ZebRi{AOQxZ
zhTwk|H>+a$r*4<AJE;6TWshX{>`h9o$4)(eEmJmqzU+dui<X8*L@j3?JNrG1?M}ST
z$1?TEJ)+YzyPxk()yRJHY;mT;PEmfXwU73O_#al7eqo8V>m?r6tblWu9vp2;S(vx<
zjjT+~@|T_WW=s<O?)K^SGjR!#X?^aSKHs^;Gi~GLW$#w}Uc<H7Y8St&Pfm=+r1WZO
z=dx?<?k_vPTP`(@I%eTN^TNNgx1Dmz!VgYaIluAuCDxDM4qOTSzHyS-gHJ{Ggzf7C
zH43fcV!}>2Zi&iV(DP>2<%uot9&Ne!j#Kf~i?dJr6lXH>d8a+xb9BNPC(pm$M!(H^
z$_)xaR>(PYrri{{zDRNbS2ACyl*UD!8I$HrinO?D^dZFQl#AC%oj2!LPwK3k_^N9w
z^NTtCDbsj=NBJ>b(Q$6wyIW^g>)uleJ&d#J7xbryojZOm^7;Ho)s{({Id)1;NfG<B
zUE`$At!;-@R5wrf*gQ#cfl)yHFO8YCQgWr{-f5gC>nBc%-15oG$K}SUn;)kebN?3h
zFyg+MtueDT$8yRUC$S}y&Nw{{Q<%xRdRu^jw?pP`H{Pjt%x>uJ)Gf@3HcR>X_Tc*N
zR44z=q=rYzGg_0j85+&`x`ln=$GKrVf3B_V^*ZXk>T1OERVkYSB>6g07<RdA;&+&+
z6SIU_De{ISpOWM=+w~q|WsJ=pVtTAh6L~I}3wzzD<}r$Nnsh_XDY>R)Q%-?eTG{rZ
zP#=$Z_1?z&XRa=iJj>}V*4Q5~?ZZ5=!-wo1>5IrO<l(Keh%sPS^4-I?@Y$rar``A6
z;x|?IsMJh-#OQNni|{?Ux~S%S=kFUl#IzPhD@E4jdM1dR+?43kox*u?`dh^<$J|x8
zf2Idd;rjW(NyWHSW1^09$g>5TZ|l|YURYCUa$}R+?pVv>e;t=~J9W+%Tg!LqNLT&$
zNU;!jJ@rJ>(JYM#tu}d@6I<u3^-}tLbD_((Mz+SE6Hi>&pfmAd_$<{;6MiRqrdVuF
z>^$>)rck6t$_kZDE|WL&%sV#QsQ8~q7^}BjQT-MdwjU8ExPCk9DeZkYXXiex%bkUW
z6;}W3BYA#Zoa!L<sq3oLveYAY88i3(kM7K=Q`ywI;#a>**{sbP!AjkZiB*1~0W6*=
zFFNeL&A0p)tup)eLN)%C|3W?~&Cn6b>bd;$Xmo?ftt0(rqR*OE&kI<;K+d7(R;SdO
zf(1Xmo%><uIr~QXqdgBcJGHlk9jvU_uYR^><J4$w-frIg^0}8bOc!XlGw+7moXI=)
zHQOAL>G|Mhu3+D}aqh#*(&5uS{^4Y4c=A2D+E+!0@f?dl!^!7j>AlZ3R$jXt(H{4=
zmceIV$C3pn8xGz0Bg3J=b3|3uV8@r}<j-qZT3+dIxpz>{>e)&Gi{Sl5|6abAnzO`E
z%{K5+RFCv=HS2j6SKH!)kM6#3;KHIma>>ya-a)1-y5iO)%;M$huCs_RyPmS;SlNfA
z5z{v2ru$ZwYIy3zL<tAwya{fW=jz=bu9ko9>LRuUi#J5Yr7c~R{zXASQdeK$<RYcl
z&Z6%gWU_P|U|Vo!=a!R;9!@QGZ*7_XkNuYE4BqM8R~Fyk5#7jbshd1IbIHrM=i426
z7q*D-ZsjbQnfc|-ssoG;B6r!#V*^?4CZ|fynv;3D;D~QHgHsOwGa<3+&`Em!-zVJt
z{iB3Gwm9XA&kA8L7n8o?(qEUu7hQa^=J-bMq)(rmJv-KOezvHIeIm}fW&eeL@yEKl
zD|eh&`_A>nFZV*p6HGc1rvH3vq7*;2iK@()o@wo5vAy!uo83H$Qdjm~ki9xrK)Lt$
zhZ{#N4m6%SyW!ZM9mUqdTPk{2uD?{dcf0b7V2vNn3@QP~49qJhelwPqx%$=GaZjkd
zm4fK+MSsnto7UWWpX=kHp3V7aXYvjqsV5r^FWSCbaFIjv%pGI?>;oST>%8~6?cmhk
zboZz1Wfj?dKAffZ=HB0_#QSN_Ih&;mo60^!dU#Z*y!SO|>gZr<*1XJFeB^Vdc>l>y
zE~g`vHYXN5yR-A8%%32ivx__aEboY0Zsi{T(Zj!_LSn_smFMs8F#mD$X~Yj+2Tz}^
z$2TV(4{DjW=Dg3_BB!8-e)1VRUp|qYGud#xczX|D&s0qV>18nrYP;s1Ud#Nd=w7be
zofo+qE^_bOGWndJ_~uB{jZIIl`TynG<fFR8K`vM?bw`UaV_f^Qj+FQ6Z+)NCY!&Xk
zJ0p9l@oz?z>i@ZNd!jX~mw8n<KRffb{)w9XU)vatzVCr;F>%GM!e@6q(>i8S$;hwH
zm&EaM(W2@PZ|}cb{jQDq%N3XZRWrBuGSnM*u~giU3Kg@PdE9kD+Q#JSnfG7KNh|4>
z?J|3?r}^&OH#e>v6Pa&r`SI|<1FEI>R!4{@y!ypgAM$hoU%YQ6XM9+&p4jZWO=9ZH
zs`9TEeJv<p?F!=9_wrGC->%Xi|E$@|mMs6bZ{_Cw3F$jhiWk{`;yk!K@p^Zu`SL6)
z*6+46Z(m$J|F;jf&AqzN2&VpdHo43A)1J$EBt3WbdwP0J)|<WWjwkgTNZY>Wk#&Ce
zst_+j^TU1)%`=>Sb&9a2zck+~embzBT|<K-@$nBPpW;*BwYv<C&WMc{o!RsFyl>Qp
znL1sZAH`;C)UOQ<2?*qInt5sai{=R#Z+FQS-P|=L?7`cs{~oqq^Xtjpb9aj=Z-%VA
ze(auxkDYr`W^ldwKdJTHetqlUb(~Vt+b%PtG<S70T?pBctlY`PmgDh*Cp5b~%an7@
zs|Z!=5A80qbIRMF1Wl=qz4A%PZS&e(6NgLcXQOUTNk6E@xn}QS?~j3<yFT97`d~x!
z&HB%Cjwo;4zVe7}?~R9kuY?&N+~3==bkDOE%O%;9R9-2qY_&b|q;r#BQH8TaS9A2;
z+irFt^W#2lmllw`7X2g4aI4d~Q&JB5x+d>onLVYX;F9m-8@Y9+x4wSKGCEi)t2k>?
z&|bk1?&X2Y`L3wxZ$8;)^X6H5;Q5uzuG*sC;%-?V$yQZ)oMeAgs8FzzbMfwL?;b{m
zv@x$do~)7kPi6hp8Ov0^?hV|xN65A*$VB#lQ(Q&T=f&X;<!haMO47G~l3G6LMRiN*
zs_WZ=eVmzQMucA0*?HjT78#%2KU*u7TnqbgGF1QTdriN}N4aM&-1_#!YR-+HA<Pqm
zR&}{Y-mZ(~-n%MnT1w>0>Dz;)*kn1(be3#fRTEX@+wHdKZS$!jwoO4xK0PbytgzI)
zyFK;k);$lN1k9N*V;fuO<(s$fpLpj`VfDr%#CZMu{!EvxqI@%6)~{~l6Y2GOZz|KM
zu2`?RXHv}v_E{}2gpR$8w|L38ImNI^?ZsPP;nucOEDih?G2e9p4@q77|N5SR^sJ)w
zOq0Gx_^sKMbNJAaSL>MOu;-Uf|L=1yGgR_jWOL~3!VS@>_LF>0u}@C5Gl`hEjCrq@
zZg=fV`R=x3-|X+ct(kY_b?+kfZ{L<T{LfUV>3YOlZ>D(V%K4*P-C12Wif8?Mq4YuE
z)4IRfpFCC{X_2^L;dgpohyIM|9dg$>=i28<uT%Xr;Y8<YVP7qoygLD&>U_IXcPd;s
zUFnlNo5g>fQw(d|yD5^+PSH=dd2l;(oD@%S-}3HY`j3|zCfhc}G8Qh1T{0o;vR`zz
zfw!cvEAw{YNZm(&PaaJ2ymxT=5@V4b-h_)+z2?M(T$mt|zp#YkhHY?D@RfU^^AG#q
zzkW|(jl`)bjADJ-5po$3%eWW4=y?C&YpEXh&+PffV|tWdduoV8==-cFZ_qxn|Ej|}
z%R}iBVi$hqzR2*X3wWBs_vj(xMIVKp6`zdNe@r`Gw{E3B=dMR{0#;Z^W#pvhe>i!z
z(=w!|Fd(%=pysV|?F)8cAHB*`-_`UMpP1I`u`0HBLcp>K+IQNU9B1(yKg4I-Qnx*5
z>U_SnXTIHvPFpFySMlD#=64C@Otb#+_D=PWUf1xona_60wZ~VdxgY#LKUXR4_K~au
z9qV(GzP^2OWs|SWjHz*#k7$KT_zKrA|B-+B$WmL*%%A_9BUW9x?_GJ{NqxV5NxO5#
zllo%Opev2;dcr9eD&;2RNF8rZ^?wkt^se{9FI|<DSxK`NF;(VoaB-@blDYnntJ0>#
zfVK0IUy92LXbPW7mOH-v#U`VPB43{0nm1wozYFu#PThVKqjGI2*Ykix&-g1XYi>QC
zYVl>&>HB}*F1<EE-G1RYSB|BZK3ol&Tr@+(V1lUKLbs*+Z^*~-E@kxLs7tme<+Q!!
zlxOgM-KG<&COhv-J3L-K@ifz6ZRuoDp`bHCMHW8Z|J<BYn=cv1@s;Jyxic+~bw7`i
z*L3~)I&2%w#1<b+_~qA`YQ5&pnN56Otv}Rzd$gt=DWCID$6NF2+?PoTv-7pDryg@i
zX^zP^2)76fm~=DPbW-Y1JH@(+;x}5iDo#a4E&1#cy7%^<giiu98g`j%J1$>k)*bib
zn%d36X`8=)u@WgV3-}%tpK;wrY7N8xbIFg-B-#W$@BdO47P{||))Ds)C$;mndZ((~
zF3btt&UIW~ri4i<d?lBZ{|}wirgOim{5J*&{cKSF?$)K0e%si_W}35ly3m2fph@dy
zg>vz&3)>oA@MHD2E|GShPkn9k&p(Q;xgWgiobuXJU)8r6Hc2l#Fgtp_??DF(z5G9F
zimcDpgkGO{ZQ&Fi|B7`7Coh|^IPCh*SAX_DpY8Nv;ihRt-N%9+&3W^7^O4}v*0mYw
zR?|Nnu3Q-wZ{KR~^|E@|WyR%@FI&zwt<?YaXt&YT#Sg`FElw>o-_hRXsPSC>?xNO7
z>^Ic^_I;ah?O5^Nqn}itvIitA7I>z#agv<*`CTFZj~qUqeZyMIGmGs}&hKtEfn7p3
zmzg(DsC~MVRdd4g_bf{%w9J3@#@ko)t*VmIC$~C}=Dr>-g*dI(p8wD1OsGs<6mGiv
z)9o6~%}c&`$DeRHTN1jXpE)#m#y<YHb|+>`zVIVCXea+lh9)P+KUwcTcx_rB@=@Ao
z!=~u8xQR});(Zj(soxTb{u!0mCsft9XqBjab%nU7!tSuxitCL>wu&A<n0>nWVuM@3
zjd#EAX2yHRo|_mcnYhwIWz%=jZ%Zcn{|Kmz)K}D4HS249k9oe1x466EjxSE1S6f<$
z#yF<Wi<4dS>=wffM<c^ekG;y0H!v_nPCWb0rDnQ~=4tm|9uo~6mOsC1VXTmQE{d(J
z!^Szi{6fjB<$o?Em)L5_v!r>g-+rO?MWxZt7lQ1Cwl_Lsq<<P1&T0w!{iykLkV*)D
zLg1elbGJXRJ!W(3b>$kjy9MjdvbD1Q&y!H_JkC6ULwnzgpmSMX`{&<l7tl?M5wl%0
zeKJeR_f!|Fz4xZYo=f}{?RSFT`-(W%{|(YoyDLA||6e_Gx<I6vOriCh$gYEDL%r7T
z%-ZmvFYcUlRpqVpms$<xDc>JNgfsWa=W8=dnEaSnI=y)1uB51yvD^!64!kS<!7R{~
z)hM<kf#W0J^n-ylQUdq)F-9DJA)I_#`{BY5WuZrl{(U~gpvd4eyQ}f(vQIBhMgRA^
z-Ddu@ulm1(OQmYdoVV?ae>FT58+HA*Rj%RES@xv7om-J%C4bO^0Id)chIg;0wgiYV
z22Bd6(cjpaF>kMLO2__1n>dnu-v?B<JlbmQ<z5?KsPoFG|I|6Vn``}VYbJFzT>Tr8
z=o<FIvH8)_R`VNkPtCkN=WX%t#HF0VTv1)@>Vm-$zjRwzu7-#-CH|D3VBOjl-(AZu
z-JqHhp_ut*o07D0*=&Je;nLl2duM-I;&fQm>dw24_tx3^-;}Z*E!))8zdfdr>&{cZ
z{hzOSt-AZ(jIW*FyiOr<iDlV3d*N``_@4`{o0v6XcpXnGNHj#BWU81ia#CPl-u3g3
z<ceS2uKV{WXfvPa<@@VcYo|`1wka~4Pt5JWZ~4m49=RKCZJ2J>%d$Gub^iVB>@KFa
z-@jti+|cN8i+94dY=bo{t80B(e#mNF^!Kxt;rRDEP}pit>!qWUmTUU3aGq%RP`yf+
z>zs3?v9yHogm^>6s~x|eZWaovC|@1ACAYTL>HJnL`3aBCinEvN|2(;K*YrO;4%;+Z
z*ymSSE&MxkC)XL%#PVIorcY(y{hh2DaXyt{|5}!e2g~1jZdo_^^V96QUlz3obuU;~
zUX*U^GQ55xGVvLwCu6;}qSi0}iVdHW3k7`_^2~`W-7%eGhu4LJJ`*l1Y^sxUvR^+n
zL6g^hEeoga%lGOEtd2eJ4r-a$U9di_$B^-7Pgqk<z*ehLYmX*}-)Cl*N1pq%N$5_p
z=$DV-Sr4sWu(=vMd84@aO_%<KKPN*^nTl1Vs-83c+j93%TE&JEf#%P4dwwZTkL6<T
znPX<q>^;j&@yW*OWxV@CN>Z9_c=>jVzSVv3+*D9SCsR7#Y%R}$)xOqpKfJy3nNuB{
z&i`Xx=^yXEE~7$9K=tcZj*}s0^_33C%;b1i6n51_Fvj)vWtRm?j_W%gTrzX#KDac(
zllx%oxocUnkG45Fh&5^ZD@SpxJJg-2xZ?`<KCve6_j!>VdaErxUg|S_jN*7#`0U=f
zohj899(-26_RvUqfewq-Sr_ic9rrc~tZ8TUJ?%7sx2f4+Dr2g`iMG-l1qPEG1%@kj
zY)tZUQXF;{B4qB^voV?YNOCa5NONrHTHnghUUtLj0kbbRV_#j34$IAgXUCm3$Y?YD
ztx>#o<=%St#&_EUQk<i&{Z?O+QgEQ=^vio1m(vdC+&`Eo&Diky7Kc#S6xM4SayH+X
z6VCnbz7*%Q9u|)ezyJT6|KC0C(+|&=8vkSW&v^9z=l;6++4ldxpZ_0z_vYtqyv&Ie
z<`e!exTq-*V%4=}%e9PdvAe5uUx<jz-Sp%?|K95N8kZF#rxqEDu<>+={p|X3`0??;
zCyG5Q-2CnvPAQ9?ek_V%`k8W-1FCwDR|pGzxO-ZEpYUtp0v}VQzG9oX!OFMZUrvw~
zW0n81<48qw%EP%!<eq5mmOEdZy(p9E*OyAhxkCC~;rll^zxV3*Rq4<CG=2U>=}(C}
zt@r#tQora7SJ3u?gT;j(+6}L;zP5P2J$l~R;!EX02l!)_{_6Y~Jx{LxdH#3%T~A-%
zefYR(|J(Qs|0V2;pWo^~-fljjd8<xZ=&l)ej(E7S&sw+i^QZYn4$RVw2Sx7tMDo4p
zm|Q93V5-0*)wIA<U2)EhKMVoQ?$@4|M)Wl5pUgQI`}dxbQ!(#C&S+<$MAk}SC*@;P
z*8e}QKl{O(fGa;gc0CfawEl8MGU7_Mv-%fFt9c1mcN89piT2}5JY}lr&a7m4@8F7q
zTP(LJc4jK4hn?s-lQ6r%HR91%d7hj1)h6DHGmK7LVYJ-aDlNzJ#*sS>W}i(N=fA)E
zvF6^P1+gLLH>~c+OS-<M{MAP$r@-}s)~7Z|&)w3|cO<Fuoo(8ki#9iW_7tWwPTVbc
zWYfWkEIYcF+-Ve=_2A{sE%he1?}YE!cPGK{5icuWzVD_Ji&o#>f9~G8491CSGV6Ep
zA8~VCx?$0d+&{C9@Elwe(Ul;vokQlc-(2Qu8<xpml|vK)$_0Elt~6{7ZjV#sPnzJc
zLn%N!L}f?9rZUrzs-Jt}UcKe?o&IB5LQg#Fm$M?>e|}|&2lPi4e{eEWd{g)*qWbq<
z=fK<VyB?*TUmxp#`~9Lg>7zd{qy%wPH%_qlIw$FQ%7!TcYZxa!;+*Sd?_oMYYhqAM
zrxY`Xv6P(jq)Ea5Co(M+H{$tx>)^(CUj1&#^>cP!zs_)zIlWi&-jf+?_D<N7^(z0H
zg_L&fjpb40kL=F}ZWIe+Puex}`hw$IOs_f}%DLmKyixX%m5_E<e)tL7Dv7SC#<xQh
zm#1uI{xMN@&re4&<&twdv!xa9Jry{#^zqp$q5Nr?VJCUqkJL;l{;>GQ2TiU2Y<!(k
zja;dDDa9p4sfoEDR(?_zm!YAFf`I~vWn;so?^s%rkzb^s;h2|Flv=LIrSDvnnpl#V
zpXZWTlB%HLVr67tXkcJzU}R)uY-DVq$))d`pMp~^peR43G&!|M!6q#=EzQ8dB*nnM
z%+kQX%-F!d+{nPdEX}~c+!#WenHd<En-~}*rWzO+85kItq!}21#K0J;$IKKeXKG+z
zZUHd|BxaV3&}VF9U|?(j#pZTUALI|H8|>^5p>2v3+98z%sS5gT`FSN=`oX11C17qy
zQE4hjf=k~oF&89l$ffU;Seyz{rl9ZW<m}?=s_mSZlbKYM$))d_mz<xHnU}7hAD)@#
zm{*($6W{`y>ylcWT$EW*l3%1?XlSNjpb*5R@0M9qT;iOOSfpTL%BAm<2<4cYap{L=
zrj%q9D;OG@gOwt?8>AVQN<hwoxEo<U#6CZ;lhGaNmXnxXtYB=!rSDmin3I|8n3tZD
zs$jsS?^v9inpdJ=Zfd}#4>AhG(KQ0`oD&N?QZv&tppuSd>0q}hm>L*!>H8*DKzN2`
zmIe@u!y$@I3=FvRBcM9L1_hU-=7uSNj06RslT&_$LbQUeiMg2q$RY(pBSRCA{jm^Z
z+%j`gjT8(GEin8K3K5Y1qZNz|%oL1FjT8(NObyHlVgm(CXliT>6*V(9R4{;=W}skV
zWDtu;DIhn1Yy{;?-_(-Cl*E!m1w%tiu+#M2GIL5&ixl+TauQ2YT~d?tQ&PF~eNyw%
zOEMHpO$>~TVLU?xLjyw#69X<gJ1%I}ubA_uhO;I(^xiki?`i&*RdO#a^S!O&8}1#g
zArhrwQqml>?GoE9r-e&(f2VPu;OpWJ3lKS48z124+w4*3%3dmSG*?EpG~|Nh@xX(3
z3mc!+=KZtGS^sO_`#qm)Kc9X7dD;2ed7tf1+di+K_M3m3(K(6DkC!D0Yrk6MZaZO*
z>co%dM0+fywN7ijnk#<lzQMM|Erz}|sW)$Ys^!l=o%ZINyX0i^o>eQ>BuTD{)VSXe
z7UbqTC&2tu!}fU_e>cRw?_c$KdhO3m8{0oFQ#vN|j<fV9EBCXKZ$`)dcYM;#<&K_S
z@-AY|v4}Sj$ChZ{o~B=FzajVi_nxV*C4!~XbZ74Ua6A9F>%!)CiOcHe^4>-rnlwZF
z{QcHn({6HyozwbST4H2&>)4GGM=WL6zI~s5%lqO#lPCQ1n44eLE$;a;)nobD$Q>m|
z7w}KEKfL*ZeD;|?edk=8qr2awzxlM@a9%05*!HdSsy}eq{D1VX=Ov#`PV7dN&%3wu
z2g=u`y>ng5ZEbWbyWgnnYS6JokEiLpi;^nZ#C>u8S+9SS&h@D-?6-G`5AJ(d=(g;~
zwAHcOYlRliPt^O_rkW73L+)qFS#B=-nU=dg-DudS_t*K>><L$lJ1@3YNnJbsgYj_1
zll*J;B6%;Tcu!p#5wbQ%D|oY~kDD*|>2%qiO4*0ci_}(csnISfeU*Kc`C<y!#y>{8
z1Cp%NW?r47vNFZ9lzXz>XT$GV7r*VW+CKZ>hs9mL7VPyrRbX7Ud6N43P<L%**Vh-{
z%r9E074h1B`O?YLt+?ubwt5F`jQyW+yXdoh-1qCRzj)Wp)BTgaeWg{u?vJH4|1@`h
zmCuc~`qF>>@7G`G@c-jU>z=pGKbxKCUT5ZicHKYw%ZrWYT|TNM`saSdwf&Em?wWLV
z!o2jjpTTCrD?)!puKL4PVGym(9;vuPH%4z(FWWnItHzrR(k~dEG3OpwQn0hgEc(_V
zp(n*RO?Gyhp4uJJX4Ag)RP{}zowJ^vu8uhSe^q_t|F{3X{$Kg;q@3BT`r~_o8m@YL
z-#GEoZJpR%+}TfT%|dt05%p-V-&g;C_O464YdY!=vw2L8=nOeqwAAp7TIfPQ-Pih}
z8$&X=y#LRi@>@K%h{bba{l=ZrnsR=tXMD<c(LBTCZSr}8P1uoBH#Ne}9^3T$M&7pb
zxrO?L>kIO^S_94<E{gmg{Hb~3pQZ137fzVd+ioLOrCFl!CGmy#%gmi#avu+#;nzFz
zyy?W{x_!-ai<mDzh~7|CTlj3hwxX`<KT)rw{WY#xr;_U)TKfD8u~U+tYCqY2`u+*~
zr|h4!|KG_&hJxo<J{`_FQvdNw{QCdTo=RV}ORoC7Wu<Q~@4sKWJhuv~_sE-XOY`~q
zA~1BS=+ji?+NH{E(|M$$VoXvB66@mf_OI#rVv@h=bmHcyGir++*I&-Mq80gQP5jdB
ztB%T^$lzRIv}dvVbFIvLZJxEuC8C(}W~}nl7cSV|(!JAP|E2TE$n+^+0zL0{PP+3*
zFHv>p-#b&|${!@OUcY;Kc9!&l?I9J?cN>)xZS~fKN<M7i<m_iRy)(7XQuG}|eqlJ<
zs%ht6uFF~JP;KkxymR}W!xL`zf0gK&;I_hHTDd3xd8vbkoldQixutA4*RwLm!Eb#|
zF2B#3+!bpIs%&}_rM3CDi(Z(*zUASzJH=D&HhbT({rjyv|J~LNGj%Nk-`@LnEt8jV
zr|8sOPfxvj*UfZoj>ER?N)z_JI?u<mQ~ARA=s?L69~W($<*6=rfcaHP_w~Dfd7Yo{
zb+@y<dr4|z#wFeR2CiDpHV@UFaG$+k{zc&N=ZY!&VlKT-HlE0lvm$rFmf2@Z*k<b6
zFE>=!s$u!tweRlwCpiL^>Z`U_*q#ar-R4p^?R+7N*_o2(-<rQ4wtxA<ai6t9`j#^}
zvlka+yKmpVsOeAGeSr_54nLxllh?j^IluqYT3v}FF-Li~@;27IpVV+R+Kn}#K)cvr
z`#QxK)gavjZT=0@wt1{|s7r0Vq+gy|?#)^nka;@#_J)359@$rtPs-lOonYJOwp6}x
zN0E=0TWY!U?==mpkKXM2YI*wZgD)&Ky#?`$w=Y~AI8$}K>V#U3{?9G*CDyfWoEsP=
z66Utf_xet0mF0I<oDt)Br*&sfs_Kai3A+w?rn;T>y2E?tq>G`AYLHXl@~zD+bK>lx
zPEMM->gnRS^W6Aj_g_#=U*iAjOT)V<+jI=(yb!j1p1#{{=~TYd-P+b#elH(n_O4Qv
z?b-6}^4}>U@h);bQdX%}?%g_;vex2eoM&5nPw80QVKlpV_rco_W>p*8YJ{byY}DMx
zcRt^D?)GKdRw~-uo){WbAJz4#TSGKKE~UFAq|Y>B>SK}1Qhxnh%l%c{=TD5)-E{Y^
zRlaZR_Deg=FDVo!vnO7d)${6_cUKZyVs_ZWlFwmVt3DoD_bTr#Z|;nncOQQ))nA!2
z(>NsaaP-}KZ`WpP6t?}gTA8@Ec<QGW5@Cn4U!5-c{qT+E>yMv&x7yn6Te)s!;`~;_
z@5_F*EjY6D)3i;;=9xS(eN+6nfInLG=qib+EzzDDy1q_M;(G7zJWtMXwg?wBYq^}e
zcTQ`rRpR3{Yr~ahyWUW_5t8z`HTP7jXVIC)?!r4^yKYZ?8F|@a`R=8GH)C}8f;;8q
z9^4buQK)qPQs5~pYEWT)iped1W|DsBo24n&HOh3w*!mwA^cAU<Zm%fxOLR0fP+z`O
zL)&*(we!MXZ08-HPjus-cFSbJO2q}|58hnwC*NGOSY*oq8?6ls*M`1i|7@;Ny7lGN
z+}?<7iyTE(^1Zm&WOs?lE2Q<c#%aN+w+zf@94Pq9>%n4X!X{NbrQPgIE{}e?cSG+t
zzN1@$XTRck>iDzwuHn6=5BH9Q87zrkGC{63xs*4hP^q)sbkgK4fiEg&i$~__=2b)=
zz4dCtm6tlE7AG$?DhE!zDA;yT@?^@X4NpoIpA@+8e4*nXjaxI8=XjRx+O~0`mAqf9
zh-O22G?UvGjmIM4ZdwPdPpk_2)il5RLg>;Llf8_$?#-E0&gv(&^zy@LTTbxJxU@RD
z@JDd1vd%rFz{uru1dn-0v!7TM>L$m!|MbhRdl$;yn>sIe-JQC)r%xB?_&mGQ-g;JQ
z_jwbRWzU{`yF543wDs)WyH=O|!xidZ`lv@3?$Z8vEkS3+^t*d6{p5coTf=k2P4S%Y
zqZmaqj*W30rA})^lX?YKw??QQ@lp)qDC`qB-5Q~GBuH^ri$!#Ys*{db(nJC7)(C|o
zHHyzT4Z}Muoz93QO%srH+QNNN?TC+JRBMJ{Qk%f#)(o+vSpvbW8A6K!JJ=MLaTrE&
z>=*dzbcNH<vm;7Tjmyxn<D*lLaMBt9Q>PxmMNu6WoqB{8d3AUxYPD#HFY@V_==7sS
zLo}&H;Bc#kVA2c$=T;4|MIIfBPCR0Z0y-R>ctjRCbTB%75m$=uuu&{(eWC8sCy>rL
zQP*Xfz)YtUj){6MvjpN4gIYguJQO>m>e3}}(n*E$p@>po2aBSN(-Ce#^_EzU*#aA#
zj&LN39#U$F?8s2`adP2I6gi~O62~!DAWG51X+>)Qry{o^=fTzl!Gq3DUpNb6I+C6K
zXdK~ps?k4E?(`?NBfs^BTgUp=A6^~$tv{SP&bR*X=~(O}Blsv-(N6GDvf@9rBkoRr
zLOb|de{>7fi#=jiyeIx>gFt&rg?~qRYlVA<J?F=50{NUDmkHF1JmOW16Mw|-v`6j8
z`__ukj_{U>$d2hP6@eYiPJ0xNe0KWd*YUjN$6A5&TpxP`{J9GqI_`6PoFd@QwK2X!
zy`>_i<9JI&NQZk%MMOuf(-*Fd;T`QQH<XVwJG~K8(s1b)U{sV7cvPqOPB>}0fOYGR
z@Q&)19nl@KPIpv~%yqh>c;v0q9knBCo$e?dIqP&s<w&p79fc!bonq9FY;}rJK62G5
zNBohN;yRI}*#hAlg*yeJTX*<$c(>kAI+CWSC%7oOqr3Hn$`Mzm7>y&WP8}QCyGcjo
zT#Aq6^=OI?$>~ARB3V5gC~jZ0V8^UxP34%5na!GI7b>S%na?m1+0q#Fy7L-q@FIt7
z&8=-2rWdsqO+ENz;sViwPl_&Bx}5Hu7I-hnt5mRb(#JOmMUoku7n2sbhNLK7WLos|
z;1aJ3Hj8$;6nCTvpXE{uZLrd~>UYJ>Wb%rsD_S$yE|#pi?z1w}CAf1|hg7Fj$1(w5
zwNJuVg|7<wDy>qT<zdp8VRO-9(MA_jm*l2%SplXOUo0r*$q)$)y%5Q~ipT1BlUB#6
z&QlusDpx-XP7T^C=yJHzYsC|TMGHgr&REfr!ErHRkyBQVz(t3wr41Pjf%REB^ELWk
zJr(+@d`i)(TVu9Hx5ngI=M=n_n_ceM<FfL~mi80AUt?S}T~4}qy7(<RlJKY^fN7%g
z3=2jPe-U>#>xsQR8(j=t!cJ`#n0ZpdH$|yyk&W`iMi2i=D<$2DYBLN3m++}wX$o;M
zl2r97R1#B@Q+mZM{_wbFY0nGyMe-W&tG#O7zmzY^@7%{}^~y1xUAA<=dX2BD7sXxX
z2j5GdV&zrR@*?=u@0J(IM*n(WC@<PCRO{jT&uOK7@GEAoz5XRLUI;wh>;6Sg^1k9P
z;fuFj@&hNDYkqZKWZv{K*kL{UWA)~L4qv1s>;1oIUDS5b51u%^BTnV9<0A2ndFsDp
zMJxMWY)`3~_Cj*e@=iX1zinQ2t}E3$zX{tqR`v_qx*c=xlvAvlks%+bKlP6H%Jz<L
z0=6DotR=#^xY!;qYpUvCa^V-a>t7;&QE$;)m+x$k3*tUkub8^Kvn=3VtV_AjUB?pZ
zi@7e_h3-0)7@L*}Z!J>3$UCLn_F}2ab)i^i(RItNlr37_v2Mwp+$*O<U8V=$3tM!$
zLr?XV)0UZDaZW4q7Ik-;3C6mVBwo13wM!vmKBv|EjN}V;+$C}scRKEt-=dgtJn_tR
z_P5QBuRE><eKifqH@&!O!Cu)dlUA))uxih+ylAv&sY~pY67^8~*%_V}?y*Jr^y)5}
z#N8<-a8`YmyUFxdXBB7p+Rk>pYTa>bWs3AgpG9Gd#1=`qT+Y03_R8i=m*C6`zE?_=
zZC5mAaFv!D*`DxUdj*mnd2iJ$=yaU@sfE*V_NG0@*>j~GA2)4_xe%ch<ZPmr;T&^d
zwWjH;3=zrIP1{NroLcZ!DZur@Hn|YFEx8O+S(8^eD0kMlEOk+CGOXDD`Qa2T&M0Ze
z!yRpGYfoL$P}Aaya&K&7S<AcNpkuc1iV2_C1bKO)em8Qhc+#*SR5IfKg3z0@f4WqL
z*iN5!p<kn2%DP))w$y2*Q!1wvy!fL;^_L1(t~?u(b=kRh=SorWK(4FaYF<i3LaIWl
zEV^eE+%Fi(ipXy{!*EpaW@nDeMi;}7gI=OKDJH_M!ZSM-tynVAOX|c5^-F@8ohBhc
zzN(=qQ#w_Y{EpNpe)gH(WLG@<^^To)OL=~|KVW}QePdtq+xG{yA22^~eM3EKP3Io{
z3IAk%@K|ukH2w{KApE4Z=ga+u{)YWb@^0tL{;F2>y*__{{lM=7i8uHf?=#<Hz32GL
z|H1ag?G5IQ_OqVtzGuK&u$S*&b7tdf)8Mw(-w&+5uzp5Sj6SnIqrTFAg&h4EV!P(G
z|C9Yvd||)o*<#!5S+A>(nH>MRC3D+rhFAaC-rBO-aQ<-mU0BalAyc9AD(Cv*z`5((
z7wwASch@a_%UspCcY{648^?RiCvNjb3%p=tI>3Bv>bl>(t7E=PUf)qBd3{%z)b*Y3
zSl=<eV=H4QXDpX0jxBG<XU}t<8+~xQ#Pi*GZTmQXxjkTe@%rMm(u~(pTS|Fz!kKS3
zu5Qq7%sn8wqTKS<?JSA+yUrLKEM1wnExY@n-}SV^eAiivcD=6Id1C8C@tx;B=YN>L
zySTZ2Z~fZ(yXUsnJ&wwYc^wnIx$Nt$x!L#QUP~`GT=Q}Lr}g)Cp4xw@zOVl1x#B;k
z%k@65o_2GZZme4U-k$d{$F!$?{C9fCk!g|Bc1}MT=>2!@zjbrx)?KsQSnQm>AlOvr
zLgk9!q`7x4NZ;DO`|`{n)^BTHnnbQT_f7ws{>_~?_Gesk`fpQ`op&+k|D3s-|8DNO
z^;g#V_TOAr<G*WNb^l4ap8faIdiLMTU9<iKmz({R?w0x!98gyjxcC14&G+KNLtf9{
zviX|*!i+ujHg6txW&KGmzxLy}Nbk4s_cCwgLqndfKQbY5lIqF1D$!H;di<UIXH1^{
zwfxtd_Br#dL(fPSyemIt_{=4I(Ue@j2Tz5CemrXV$~j&2MA~t0zLU>SybDk5tJnOu
z_s981p&R%8c(X@KEWNY%_{p-=oWjSiRv(Iqa<o}sU~{do@LrGB=DD-q>g^7Bxv4nK
zHs$Xft=scA>`9q;CN0mb{mi8EJ&&Gcgl}1L$LZoG{i*{Kv^Jkioiru-gv#-sJ{vT2
z)7*U5tT&R5bvqfKH78+8&9O_LwB{RbuNR%Xb9V7DU4_W@P5ec>S9{fk{7g1mmNqB<
z?aKA1Pp*7<b)%;#<J}`G8TV;Uh+BTAcB?Pr*<}o$&3$uUJp6O%n4I3!>+CtF>R0eC
z*T1o;RdxDRmPxOrnm*}nSD9{ljm1pk)^qOH6BbE!nLP7(A9Zc&<jo~kd6#!jd)87v
z;nC?SA$>_9b-Si1t*x2XdRgbWxV{$Ktc$JLnMbyLnXdhJf8EFWQucp;*UK&YQ+M#h
zgc7^#>1IsN8J{yrH+(%{m7u$UErNFqQy7zWLvh2?14ap&7g*=;>M)8icQ>>iU`ntv
z;Ge;LhB1wKa|7Q3*$n11rnL^-2Fx?~Oqee>taK2*z+u7=+;Fl%eg*rh22TfF1Hl;#
zJ?zIAlN+THcmjBP*xVRH9aIAtr!c1;@HoIeg-N;Lp#!G@j|7(pv+DtY1cLw$9ws&>
z)&mR+>?iO)Vch9pufT4>eS&RMgO38U2m2)k{RvzZ4CW7*f*Mj3I189M9he?4JZiK!
zz;~k|LV;}qlh^?s7iKjDE(0bu2mTifx(gVuG-Rc4luJ%v;4`>(F7a{gfx-t8ACx~Z
zf3W=^`=R_n^aJS!*$=cIct7BNQ2fC7fkpw#50M`%KO}xge-Qi-{=oTx{(<?8{0-k5
z4<Ar`VEZ8Uf$RhS1Gf)EADDeWzR|qldZRtVddB_iajbESacpr+aV&gH`V8lp_cPC9
zuH&}hwqds6m0_r3wqdp5e8WDEL5^LHS&mhXQI72!<K6>t4-^ylKPYUF=3ugQV5nf&
zA-{wF2J0IZq*8>boMAijcE;^Y+ZoK6%^A&^%o(mTUuV3|be#dI@Hp`FK-dGL2SEwk
z8zgtIykOH~Gh-BI6lW6O@NJ^B#W(xo|DNCYFY|kT^8eyD^?iTOZ~SkGTW~JJIfg#t
zhQ~Y)ESN2*%7ocjJwN$<@tfMdz2`T6xBO;z{ND2$zhyvz|5u-XSpRwT$N0OA^`B20
zCR-)@{H!<ll572T`f~M6m20|l4?K6;)|#8_zhV1LpKXG#qRO~;ci%nC^v3g>O!edW
zKc#QiYG37!oU&(nW`s`iLU||mU+<Wzu3lUou}x8Qb<zASEjkMqr{C!NmdhRatIE{y
zjKI3=NpY=Twd-uYFvo51XlK*Te5sUCyyKYot=YfiUfeEh<Ijo|o_%WB#<XjPq746)
znYEv7O@FqTHAgX8#821hUe29#MN{Ub1v6T{o($@~DYRg+ZtCe9MK#kL%3XuJ?%jO&
z#i)$WPWy(}wyw2l**9*T_&aAqDsNF(>t*eR(j42gXE9}Q5u9qL-OB8CGi)vsynRIP
z-_a{a)kDm8x8xqPi9e<HJ96*SEmy*7^wPr<Y-3KYOS*m2G(!CPX6bVq;$*kQAJ0oN
zPd=+r8Gf*+I6`x0|EBaCa%J|_4YnfRQl<B}$qClY6#e#4=tlyt+m4S@<R<?=XZdh#
zsl;xhZSPKagdeE8r)fIP{m+UicRD6r;X2!V>C`P_n~kE$3bjQpQ+8?D{F{6&c<(3g
zu!sH9ejm?#eK=*&xh?<Z+&h<dgl~^%`O(!~yLe|^Ih$C!>hCh))O^n6`RU~wtPRDj
z4|y3xzH7R7@ZGU{`=-B5+5N$CrGMy=@0))gG8Rv;)j3hNncZ+Q|Hi#*%ya%P-7|mF
z`@S2^>N>w~9DXCXX2S8Cb#qMoA1dqgAN=NWq)H)Y@t5E?<{sKhHNNsxi>Y6Ef8+BT
z)^9@9QY*y|f4{Hv)u?*v-+6lv`Ub4uu>WD5Ou)X}&HMCzhR%^Py1XgLtgkmcSUy#4
z&;7?Y0`{f%?_K0HeRZwO`@GJbAHQ9H__}iE`8AV#s)dEU_f~V8MyF(#>YuOO5VD)K
zF!$xh^8WoZ>i^tTHaz;%z2cvB`+eJ-pO0L#3;!KByk1uB!u)94YX&(NCxvBSt_c3T
z<j|R(gUsw=JrlUtQ!9cOFWr!P;en#^lSWp}NjbvP1Sd^;_G$I;Sx-2Rn_jZYfBB^G
z)fAV_XO{$ed-lz^GpWS;?v*c-_N1&`bM-{lT(fMC$gHzXr><<@axJAgrl`kHe6mcs
z|F*3D{cHRFJ@hX9(*JZ7t9_hicAKxZ@8tD{FI1+wU7r2O!y<de@~Tai*A^Kai&|4?
zmD^*gwL0n6NA9<tUecar)>}(!WFD_E{jyWbYcA9Kvv=kmX?yym&F)t2!^a2azc*|D
zdHL=#1NpnMqR;xvq!0E#KJ8;t{GsMqqU4@<gKd6aIqbVdH~q6&?`|)-uI6nA)4Y0%
zKc6=3sY`J9UlP6LnMirY8^P}yeVcCwsT}R^njI22DJuQ**@)P^?|z;>b~U#?wf5qk
zWm?PqbXS+S#g-gw*{tq!?~>h;4Y{wc6vl3CJ`>gKb}zf|h|BFw#&f@x*AzZpdt7ct
zTKW8^J$=4C8&!|KGX89=tzT1g_SNxg{bx>`zYq~@@M-13#j8ZK%(YXu|C}^=(iuMX
zV{bRim@4h|#=u3BE4lQGSJ?bc+leRd&fIrqnvdmWnU9k!AE_1}@qX4Z{fwag%&GVD
z&d48Ox2)Rv@ZgmzkNybu7cgI2+nCPY{W@pwo_K$|8qsf4ri#TH|9rjm*)!%P3CAw|
z_MazZbL5rhS&r&U%+qhK-Ij4xb6@DnuoWeNw^l5ADLwny{oQ-E6kWBIRb9>fJ8pAS
z=r0Z1{r4oqlRG4>a?^e{yq$l~Zs*T=%F)N?To0U?5#ZbJ+jlkfNovpgx|)x({yq;^
zQU5%3W#&e|)qd%oT`#+R&v^Kix|qKI_2<;<I*u)BRhxx_AD)d}C|}Wh>)4x|NB1uM
z;QYvc<h0HsRk4pjGkg>Og?$w2uIRMw(O=Sb;osgeyK@OMmwelNDQMn&=f(0D_FKm0
zC}pRJ->hst_sp|k$*q#A-RgD+lP{|#t;yPI=C!=aTjOc||1v|h>kGm=bH3Q6Eq`}I
z`R+#dUCI3=$K_u3#s2j5US{sU>HDWSa=v?wY;FE8c;UChyz9CDmt(7b#IFl{>HF(3
z`=iaJ+d|qess1zKStT{wIPCqYkh}W3zCK=Cl|AXw_SS{xpZ2c$cf;s#6W_F(+Pxnn
z7d@&w<FDsCZBlS`WzYGHxvI6#<u24Wm@J6b*MD>IT<EsY&l5lJO20O}6|~&<_xW7S
z%Efwx0i~ZOupayxy4dVZ+ywj7GaFp?dSzdbGWMEX8ydUy?<e*7!L~K0KIlwllYToZ
z#eb2yX4#da=jWEc<DTBPQKeF7@4Oi<tItiHW|Z>n+q0RsZ?i9}2sSa9#=3Cvr@&Cg
z&l@k@)znOD|0K<(!+m=HiFA!Gb(0qyTfX1%r@xMKdg9gNU%t#=y+ibQPGQ}?)?-CC
zer@LddxXK3wJ_p^RPL6VS2Lb2&RQFnDrZpk@W#ozYn$7)#Kz3NKI`YoYb!!m7Cbh7
zbVqD;deYw~Z@!+-T{myT*PU0N&i$uo*1X5^TINO7<?7SV>|Ry)?Ay)O!m@dbwyGRC
zqB3La$#wh8qBohT8D6s}`)s`W+WsA-O?RJml_qZ4p0xJ*3Zo6zlD`|O-IOzlu)0!w
zX!W;(l*T#xVzNuj%A1(8o$`yVh3=Te?s+l$&(yXlZkgh}dppZyPt9jLvM6?$Y3YI3
zi?*w7CW&gj&8|!O>zN;QrdBUn%FOKtXU)b<l3JH-PRjjc{n(TIJZr6=O^dYC{ZIBQ
zmnXB_)T!#Xx@&nZsP*6e&yP-WYD_U!dV74{PoZj`)q7kfC2a{?x4C-qoVeY3QS&D}
zElRciQsutw^wg;fo}VtMu<KKp`==npXG)ZCYVWU&Hzq$ek(z5M=bzVfamIx1>z^iG
z5d7DW<+elpoqOb*E9dT<(G#^#*)pfKE^+3b&x@WmY;xe6|0a5w&5P&1%BEg>v*oy@
zu2kODBg<4RgOj&b)y6~>1-b2slb=6v${exf&s!tDZR(jV(zQwAO4ee_S2L_FFDIH<
z8BLzNS%{~N<>~*J^3oUYYXq&2^yuts&#ZF(Eq};x;l<O*kuM!(0{kz<XtaNL(8yX?
z6Zo%Vk_{`j`_t#4OsCGRc*5^hd8weLxbs+vRR4+@MJMD#jyYZK*!A$|>F$l+eESa`
z&A&YJOV+>Iv@UIBW@#Nmk))|XtWlO4nNR(W*hW9xF1b*7mD5#+n)XvEGyPls@0hbu
z<PNV+<8jurm-p<oS?6x6yyxt>g82p0$}YTo-m+>#%2(yr=Wg$=={WTKo1VOokM!<E
zc`?^p)@<4M{7P@Mm7;f7?2k95zLU4v?#^jE6mGM-?$lN98r9G1XBegazWE^c)Qr79
zo-GSZRWvI2dPKT<>5;o<q*C8JP2D|tS<=O+)8yKJ$63b|yo$S+Wg_`-`^^a@Tyx({
zI+jp={P@nd$K;b9FTT3z*ox=rD;KTlo52#^W9BHo)Mw#E1@pMfkeNX;*I2TrJmd82
zmEaccjyrSYX1$?}Nz>G~hj-2Tec?b!O~l4e%T3(2@4j*Kba(A9rR+ItPR>r#eD~D3
z+T?6OxMQYI%|}5Qw-2`te)w7P<H$<?eZjjTBtFI-nLn#w`r*RFAGrk^ZzWul*Ec)r
z`Z}a)bLVY$Q{J9Zo)wZ7i)wx97av;@taxZM-|S0~&+O~7>XKZ;5365dn0s@9ob2PC
zi`i>6`F2|?hW#(}JblE=f0@4i#knu9MNE3M=&_EPchoB7;x~_0IT}CLTVLfQ|2m{5
z?)G){^+z&h-*{4+vmoTHvG133U!BvlEDTrs^!dG;`s`im#f^uP+pW8*b{<Y&@$q?U
zQ1DgL%L21hzO0CzTDpiu;iwpoY;%|zN8O3@=iOtHEGyS!9(lBIhPa=_#zlS+b*FT{
ziA2U(uK9fL=+xNYt`AyMLZ$W|v&gvg=+vfdU03Q#wU4jsGI|}FHTUL@B{_MeX-N-{
z97;4kE+S!4wbm=><(tEQxV>kanLgd+?jswuYlU8Y>|51huSYR@i%-rI5}%!Lt-|Qe
zN@X>EnL7cqR&7<el`O0ym7n?e!JAhH_42oc=N2BD`FPF6Z6*0Naep_hdRVM3s(4Cg
z#uksC^&CsucvdmZ*^|D}CQRnc=ZGoxttUcOM&zwua!-1C@<*Su#cAI@{ji;u=G@J7
zdWi@(tM*chJsuzaE?Cgu$GpCRQCw_Zgr3c&MQcxKK71+{>X>teyF%4MW?sbGk8#O8
zp3Tic=l2KSw%MuozG2D>@iT?B#Y^_Z{A&+f`EvbZmGISq_Ivt71@enkRU@BFteVWH
zePWIMwwv0^<zEMfIdq)-9Fn)@`@`Qi1pXbHx29=Llg9E--BWc=-93Ht-9qQ9%~S7l
zzPv6{UUW(MeyPFjQ(NZG$+%iS>&1sHTJL48HoiH<m?mpuArpIMbxigBH;*E>wwg6d
z<x3}5MIN7V>8Ef}aCVqa+0*o8N7XE2P6l<^-CD8j=(njAZp(G|<-R*$`#C>8CS{v-
z&P+M)CfD~KUFG3t*6QWTO;lPP+WB(Q(YM!*svTXH`ZadxB=+rjhkVv@%TB!SbS3V<
zsv8&Py?J;l-ojN?&5ifXRITruR_qA~oM^?{%zMmi+Sj7p7L5LULbrE5I1;#mC#W>-
z#*(Ekg_bWiE3!J3FRFK|@Y@p8vr8qf-T1?){XS}nWm(F;(Br0oRnBf7e>7g!pEE~U
zeOhn+3;Xw7D`zsg2L?y}x)HdvQ|>;`{S(s!HUEhH@6}$l`Iyd&eaTgK_nOBV?RJru
zP4@Nc@!axak?zIEW_SL|zp3S{kh!`w?QT@n%6qG-?(e>GH>-5@)wR>Etc?xJ-n=#9
zUii&Tcc<Ojl#@Fxr6)2+W?D;*0ZWC$q(+ta6AldQJ<Vr7vBh~9F)IplsPO2&ubxn;
ze^}ter$gPnxt_)E)?RwXd-(M4duP78w))@QRr-Ey^?A$h|DMkaj?FRsId|EtKjLL3
zIr)5&GK`;j``>y_S$nFv#Ms!Tm}80bf+Tg##(T9sON%<xUz|&x(k$%1;8*fHxx0K^
z*{b)pA2OKwHLiEVT9M9>FvUpu)Q5)c5`L>^=><#9RrGgsanSnm?n-Rb<Y}8{y}U1-
zYbE-bd-M6XX7g%U{k^wdOiHk>?7kiovcjl3asOTRqKaN^hA$@razl=94w+OI7^da5
zd()o#BA=okKG2@OF#6+h*%#N=%v-<W@uT2%XLW;%l~yY5aQVX5@u9Ck&Mj1RW~8c0
zHiwR4#pJbzDxR)bv!$V-tEcB|7Q6Dq%C(7q4%*g!f1lk^%CEon{aLXoPv76&`gz;E
z6vxZkcBLlAUfizs?akZ|S8{Sr^dE7~WzOxjmSUd2_vZ)QjGw=xtA#dR4PT#gW9vd~
ziHzv2TQ@y*@OORr>Y?h?+t;_UJI#H){qoMzopWDzM@eP<5jFRzRlYejHb}wLq<qSg
zZ*Lga=CJ4esZf;KE@+acobhJD#Ty?vFV6T`c=N*I_CA{{^4`4mRWI7wKW%((Da{sM
z{x0v6<?E9-{b#p}n8^JTbbI{2EaUS19<yujex6c$+B5N?;ems{Z%VAmSvfhRr!3uf
zQT&yIj+VO5E=-fi=r0xf`H!*Tr>hSC#z#z7R%`6w@aRtYc7OdN-d8KvX6^M`+SJM^
zDXzHfW@edJ+STd=m7=v`+ZVJwy~z~KsrxsY=`P<z%~v7k&pUnJ`FhJD>0i9l_&%FH
z$kYvO{#gC~ySH;efaD+R(7Ag<o-+Nh3)>TVLdPM`b)_ErZSFlLDX;Wh-mWh+U|weA
zHrw;;2Q}NGvTsv3ckXN3x2}kJ`Q@TLdpD*pD*SwQws*|h$+q$rG96Zb7Tj&PJu7p^
zZuc&+443ssV-xt>V=k^+_-xgmd6iq_7`E(VKDLc>ajE3pnWk$Zq$4Nxu89ylY2+5M
z`8z|@_0G~odnYX@J$`GFq~{~6ZMW<Vqr&UFHtb72`Q&i*>~FcNOfy4zE-pB`Mm9J1
zT|V!z>vC`Qi5*)T_Oj<zEz7FQtBtqreEQVp-g$#Lw<31uEn51#IGSNq^{XhiaMiq9
zCBGe}@_uV|TYX;a8;erogGpaSr_O%fXf@+*jA-_H9u~$GzH+-?7`*O%xFKC`#nqQr
zt2YYshaHU9wusezyv6xo=9l#imun7AQ}P#jc5AW@TUG?Www<ky@&0YI-d~9LP<Lw0
z++Ur1Z@k^shA!rhSUrV9WC_zUYnI<%m@{_C{rzAw<D2!Gy6u+_=(O9kU6n9>o;Nj7
zDrG+VoPDz&l-#!QOXgnt*CHZAEd8nRiaxD{S%Rf9JX<Es`^;nFXy&Vb;59ez<^``N
z71VyeBrPYuN<M13V2I4wjFPN<6*m*APv3Zza`Dw`Gn1SyfgO1V*j8S(dCOh8#7$mi
zZDrDTbGPiXddm+g>~h`ger3m>bq=53om0In&HU?V!P$#5?>yg_x>Y>v*mH*UmqV;e
z-+Qhqe)e<CVVCmvFI+zU?ac^R&dPLo=_Zor(yRVr+M3Y!Utg_1xxiNP%2da#k|O67
zW_;AWFTZ#K%Nc9K&)Xh(RejgYX!CkG@!yd%Gj;gIf8ClH($#(9!Tl=6AIGcX`;S*w
z-+y_u{s^CfW<bZiAC=D<UU{8qe16H9|6O$L-D_=52j|38J~%k>(9@ej$`Y$R)?R+4
zH1)3N-tBAp4c{$$$D7)`J-^T9*$S5C1)F(!nvUi6-puu`c@h2kz5R|G3I;Pv*(M+L
z@L{^R<4;?=$m9ptWVha)efWlo#ittyN?Wb^O;_@#9S*#pa(|C+0`u&I2NJ1|&)iTe
zh->sU*v_2VCp1~%<V=~was#DHT3_y63D*%b;Q04ch|SSNM)4WL4d!fzbN<5B3%a7(
z?20F?n)CDUWHmwE^)`&0dl_}l&j~0p+HCpq=A17%eyrb4cCOg%^zmZp17Gv7>3maW
z={gIkIeKbX<|m(zeZ>+Xua_NiU}hlW^uS9(cY5b7m>X%n&9`CkirZcs+k#ek&U__o
zY=8Pz&5GT#LPCrRkG@*|QmkuM<zI=g9hIy#|7L_*a-WL)mTUK4<y)qi^YcwMd5bMs
zd(F<5?W){%`K;IS*&A<l*N9E3S=Q*?(0OIs36~(5h3ii{K8T!eaHh6M$fM0?quTks
zkG>bSi9{;sWqI1h?tg!9@8AEGOU!PWUJBbUs<YBA$#bemO7-jMy=9_%U#^auEh)ts
zy~@r$L?%Z%BlpfdfgL}WN$0tozJB+{WSzL;((Os!YwtzftV$5R5v1HJdiz?b$B}8b
z;_l2UO3YrhPi=yo$=9<f;la+137i|3ebBOJ*!5*~>$MQkjmuVbn5Nbo+M?Z3n{?-a
z`le-dq0F<-Kg{P%%{ne8cli17MW@TIZF?5o<a)a7+C$^FHlHrvo^F2k%O~;vKVP;z
zy*azC==qcD<u2LZ@9Y&lw{e$k`D4rHvn-qIj*6ZAX{K|Wt0RB$%NgO{82$co_;2(6
zVK!yM1m3@0?QiERCtUtBIpOl*v>DfHmTb1LNlSMKu{J%jmGQ*J#~l9BHGCHpU)@~4
zYU_rO!^<SUCu#faw21b*8r*xs?9|!cW_HG}Z+q15KeW#4-J!nTGmlp>-rN}Y*|4v7
z)oE+9Hy;9e9gV+QE<U^9QN`wmTd(<whPf|Njoi4-a9!xfEVga0lAd<Oq#gd6o%C+m
zN!|O7`;EH2UAITBW=h!pGnVi0>a~k)Pjfews`~j~SSz+StU1(#qi+7%C9C(V-L)@#
zeJo$>poDp|n23;crs%ebtMoTa+!XnH&BQN)5+47#r9F1Pkv~~g82Osx@9edU58Yb$
zyD0Rw)hVA14_=q<di3mG+pV)->u&7VlRe(1cUs!S`DJgfqjzC(=Fw%_TB2CXL<-zj
zFuhx2vBB!uc^&^N?=$!oKl--%nhHz%?IqhQ)=c7dxEgy)MmNuUSBTs6t8a{o-i1W_
ztm?A7>u8={66s@hFyT}6+J)2RdY`(!U8SN;JMUi4MKhz~zMV69n}1GNlr_&objAmB
z$u5gNE!#%9Q?uT<&by*%7O22c<2dj5Ev_7+>j~1C3maSP?m2wAe8g$j&75DmZb@xu
zZe21{k8$$M!(ukOLQ{E<{5`nj{)f_l<f~u)e)(dX!M{qIW1sQs%G!3}8o$lgUm9Fm
zUFtUP#qTSOTOTY6_ucFJXwv@lISsjIL%ykmHp|V~JSi(xd*v?{p-sOgss85)(tla5
zH{lm6o6xQmjUqcQ%x_F@TEUVxH&^(3u19W$r$mU(%(9xmv#YwE$=*C5o?qzh%y=-d
zboa&IQq9wje%$i1maYAE`n{^^c(&Xd6`!vK&CPgPy6Co&MNig6J+G_U!q!z1eT8fn
zJlDHBmpO>N{qnoRQDa{bPl~zGXX`ZcGcSu)P0gyX32Wcax~RfzO(gfy^?!VgG9NNE
z=KPqF8vgD4sZZ?5qV`jZl{cN3aWnQ_`R!|cwb|LuO%m}|6}QXkgL7jpT+oU;EI!3l
ze7!`h*rMD}-MOx_`POSzS(rb_Ug3TFPw48)FGZjFZOQxTdwVsPRQ0jEmoeX-p6^-f
zyRua6;L|Nlnde{syme<`*xuMD-q(HB-LhIB`u5nq+2QQXrP>bXmKvu^Jl?~5dC3g}
z-WzR=b2FdK*c`w8w~?7o)kfarln|-BD*Nm$?J=ybO6~h>OT9$SGS%*myHa>2I&J;w
zh4$Z9@KvAx($pu}({lKRIfs~!_=kFdAN{&B^s<g_4(VFf>E0ao;Npt9wrz|OrkBeO
zym|Gk%|~n1qeuBW%5<xp1vzv~=AT=un0(dABrL@^V(0I9bFJUsn8}s0-JJ2$E}`iC
z8}>e5)?1ifl^ZK&^69DU-=}jm+fBD_%6sm1GW6=@JA3x=m<dTsMVY1NcwFDI+&JpS
zw#9ZkSJ_GzTus^Swd%Lk<JPm$s~^ujTN;=D_tMlC<-K>e9V$5x9~bn<D`%#d($!SW
z?d!GXe)GB-*uGuGSh|=&ntz7V(RoXAO#X3XHR#ngJ-YkDJ#g99L<`$<xd9D7kCuDs
zH=WtWeVDJeectYWyB>#!n#)vu`|!1(Zc)Y4l;_J<TXQF^R@-G3cQ@2Qe&_4M?%VP!
zUR*JMXIWbEyRF^dcESF?OO;FSZnxX+Z+ZTxtOa|*=I<(@4&9M!ov*wsjk8?RQ!Bkb
zWY1@D4yzYi-(0dT?YZ~fVDbWHpX?*6O0u%dUNP7x?Y6ewn<_UmzrssB?D~lZb5tJe
z5o<0E;WIqn_&L>9VwyIGO@g@F*PI6r&n!Erb&>n>mNNHhP5!&jGp2^ExofZ~<@WTd
z$=_1VdG|X_Pttc=elz>xD%SmXUzJ<%blk5xe%1Q%$9K09Hmq<^{*~j_o*}|@_}!Un
z*|(;}l>bitUANG*y5ss!=4T2$;U80$=sUce$2yNk_G8K)PUf#s)-hVEKE3a`%AWnL
zwmkmwjbl=QhYi^l>+Q`-d6{$J;e$2m$t8L(CcIu_pb?RKGDjx&R?+L43yg0g|Nd;W
zS{-jBwWhB6gs_GEvxFe_&9he(oKcj}4w!i-tod+`k$8*k(${L!O?lR>yLd6?r<Lln
zg0@sk?T@KfPVeJ6yhi`=8$;`l$qa{YSTw#i{qyVep{*9nuT1B&-VpZLyQt>Inwh`O
z#@u+QdM;|hm-bUk$ENFu$&}q_+SlCY!hHEZN1MiJCWFOHQy&yZFvazI{MUAvCsX-j
zKI<3#WxGUVZyc6nTpeu?w!dPJMeLko5wUjdS5+f(i%!mOa@5;-YiGoVaE|NKyX-Xz
zd>`@mR)<YH#5U)kAcx(pN%3VfIa(wpaLu(~YuvZ>d-P({ro#&_NAC$csG1=Ym%bs@
z|M{d`UdCxHiaxB9uKE0tD!**vG;{9!#c642%7R<ED(5ZgX#dAk%&}uZ#f$6Oa=&=K
zT{xU)Q+Q@?)b@Y+FBhiAoBX!Xdwg^LD^}jcMh|#*UVF6FMQMX-`#(*&su%a~2VPmz
zFO{~cwJZ32YHXl!SEojjgP?6!M!-TTQDY6a#Vr4RMl0ScR-YicUnuqHdY8zz8+LAe
z6uxLpg?CQrqbtTGOi|OGT+dQTJ<a$0`v<>>pt#kIpLbj2$xRdZR~H?2+B;!Rnr7Q^
z>lEE98c)MNnY3=d|D#L%N$$7LN0u{3+t~#^ns{+(0pqTYG?n*_kN19zdpP&rk3VJ+
z_c*?5)r;Sh*u;IIJ+&^z>d#)~>ow`&Hl|<pO0R4E{Jm#hMQwT3-+64i_iNsd+q+Nk
z)s;*0_rE^h|J=;3<W-}!|HRMAJAbc>ihmmQ^=Nwgzssl1ue3#P>%DLDI+vZtE9n0m
z-uAy5Z=4hLxhey0^d8a^DO}XSe3aw;*+~txVg^CXY2{pjGq#5KROV_eGcZ}UXSqnQ
z1lRM+Hwpy~uU{(p*DvPe%EKY*TK70Dg!5ZhRH%zRvG1QP!1;RNF=izp-34=ck2_^2
z9pYRvk5yS_;q*$WdewhPdmi<x{B%Bgw4v(xzkhR`S<cKZ|5()FaKPd8CXW5bi@ur3
zD9z{<6xg!YIJ+Zs(GK~eH5!lHZwhbjJEpTKS$CUoeV^>+lYChg?5B;^XU|*4A8a+#
z(kdY=Ed9`%JwZE;<w>$`OuuWe_eIUK7{-eE;`J803pX5lb9RlF`4g*CUw%wgoORja
zwb}c%lMnu$b}{@#*XibRlNE-)bJcbyY-x4&W4d?!URlYU2J=4W1G5U)-SUsjT~gJM
z8h2)sT*xxUWm6t@#=HFpYx^0-)*U(R_=kOmG9B+8cvQYwP(x^9!x=@pbuSN^+Adkf
ze*KGv7WXrUM;1#jp5(iu{_&5Q)~d{qEq6Ou(-{pVUT-RhoPM--$~DDBySlhe*KPGr
z2zlVD)OWOHZ$=k;?+u9w3TemQEc%#lZf2Kyqa`d;XX|VC&D@98GHO2O?p~F%uVLa5
z-#tN!64I|vuQp2+myn*ldeINoc8$*2GY)ucZkRLq^*8NfZC0DPs;>k!_}Yi(^lrX+
z>yS#9N<bhdm-xa07SXD}Bh5}Jjans(oY=c=1RiNq3S-&9ti)HWac0pD_K8<d>8uaq
z+$}6rwx{E!sN$o~!3x&9&1Z`Eotbm`*MgRY<?|a%oesRe$|d2#@+WTX2Oix+dEHa5
zYl$&1_}h#5+sox`&RO;4lbgUX2AxA(sW<h-wc`|@|CFq_cYo?EuQTThU$F1rq8@oA
z`29;(<{M}CNbNlq`A79%lhOWy_Key8+H$mdMO~KtUvTl^_PZrgDl1s_UvByv(<8b6
z@3F?cCGXr7fBpBldg|hQ{u#RudPO+xonR^wx^R(K&pyGnH4*oxi?7j24PA9;Uy|&K
zD$zP;Gp;rLPI)5dyH^yZ{>=FKuxQzx_M5K{zxg_m^Z8-nbKgy39Rn|PH7z~9@w8QT
z<CWkWoV|;EZm3<Jex*)>RglkkZu+#Zr^+H_IQIvno$21Y{`6$`G`(l<mg;Wp@3#q^
zW#{>X({{t}*^9R>I-Pl?J8yG`v%lT;D^>>LRkO@5KDi)#!`|x&=bQP{H7uiw+AO`^
zY>uC|#3f>P#YP5QaaKwB`=MguOk1Bs9Xom1MO^)0kkG_}q;1n0vN^qU9ap;My)LQR
zQnSB7y^rg;^V6otlVS^4A2ykL&N#44;nSbf$BSkc)cv-&qUbllb=hK`lP+8dj|KLI
z`+e*_S~lhSVSUj%4=Waj@x4D2Jy~sSlCRsrjBOdI*+HG}8O-aQ5?^nhTQ{+;`}h4V
zvz{_E@8_~q{FS<8{%`dYftr@FUsiu%&|Dl=G;6`Nv`LEti@07+fBE>1y;EP<$;@V>
z*E_Z=w1*dMb2wMKWSZYe&Gsm356QoGHpeY_ub9eX(SBpM;V<1P%T6Vh`AgTlkmyrd
zpnia<^zVTZgD=eQcC|9L9O~y(xR5Wpc4yt;U)kZVi&lTEOuZO>XX#qir@2SP{8yRA
z-IFr6-~IKRt?A6h-P^w3*}8mN(Svn=Ze0|M5B&X3&7xZQ?e0{0SFX3qtqcA<Pzi02
ztDdw&!%yL~;rpw1ww~HO@rduiSiQOp@yXvJ)+T7&O*Q!}b2js;zp+(A<?7Q1<^^P1
zGKj35H7{oAvdTY~W;Z@}6ZBSY3oYIu9&0@H3&V$Hle8>3=luLou}C4%A#~1y*_-!V
z`<V7+f!$x`XHq|>c17m1yqxrEPsBmh`^z?5X0Cc%vXQU)t_j<}d!O1A=C9RW<Lx08
zwmK=~*`r<GG9G_ZWppk|J}$S#DSy}5=jmU|0yjjv+`YR}^rlyO=H9D$p)+Ng?k1Pr
z><RkX<+398@4IVz<og$LKG`jKYy;DAcA*zr*Cb}TS7eq}yu4Iknp`s1q5jk^&E)jL
zYwz;(?S2{mzg>6h{qrDw6WJ~Q=PFfgx^Ohx?%&(aQ=iv1oMPpBVkzv<s>@JST=VqE
zrAtpkg}y0%sG1sbPbhldvB+!lvaWxqus^%{_O-lK`5flcL>qp38_(IdWS#A%CEE{f
zUu1o2+P7P)%&&S^1%|x#;oE#Sdt2An(0xIk0g?xMHopozTYA!~`|zVLl4sb~-b*yC
zx_tW4+rLa_f1KJ>u{_*j@}mCBYq{^Gx!j-oRi}o{opH`daS@ljv-W=r%4^lG_HA0Z
zp#L>*cqYrDzEv;XKb}5qvOG*to<s4?C%4#Nt4of(yniA6oaLQ+)u9SCZ~XR8Z=E+g
z#!S0^UeHQKf8Nu<Ax`mgkL_MzHsP(+F2Mk!=KB*Zj9&kBU!UeX#qh`WAHK)p)%Yyp
zXNW&JdM|O0Qp%>2CtTKhubCSmm37MHi_Yl-92Q%(uSG;%nNkw<__UT%=JuN@8y9mL
zFh?v-{PkYf^ZBK_xd%7BIX7*>F^x|)5pOqSt@2G<tQjFWHHdNXu^jiie5;SWF!;4Z
zJyT>wH2<ZWOv$_XznFE_>wc^V6#aM4;C;!brRo<hu3<LYld0(YU$OU6zo>Ze!RJSt
zzy2>hs8Ri0_sbXkh%I_wzMOtM>AK<7HOuGk)4yYRWnZ4k>x;iHYaibwv-IesxaM%~
zUhO%bLf5Y;P+GY>@8!3u@40T8vYsWsbsw%ew8-belr^{Z=|o-qzB6=XO<rxV;_{2H
z-<n-adtf3}nt1t`(Q5rUckc+CY0>e^j`m-AIIiP=`@0a!jK_QvQX90aJUL&)r|{eV
zGFZJdr|0MNcg(x8*B{uw{(;2a=0uY>UvBpte6+n%Rk(T5<#?kPlA`OK_Ot6e&bXFg
zJi9cwe(}Xs36UllFHSayi@EWp7X%zREx-6Z<2&{hLaXMzs-4!gz+JO((uKv5_tt*i
z$!cNJnSS9hgIMT`k88q(_0v~O5LonIz-gg-4!iHx#;B@gVpr`BC9M4N?(l!Te|pIa
zKM5Z!d8#yhzgO;d{hEn|fnVnCd;U+~{QcXmyn7)Lq8r(w*`uO=OZ`1<eeJv5o+XC6
zkAwuoS-jjNV(P+e?6`1obtU^P>o*#&b>gpy3nwqV%BmVGxqtVXwL1*O`<@1PZ&DH6
z+^(`e!1nK))fysOB9;_PRE`bny59L}rv0VLUwM*>o71$PK4%p#k~Nj(I}p)dG{5oV
z!4D3P<0}5P_VaJN{PV%3y>DfA&t_&_TWuZo?(DAp8X_TLZI@V^RHtydX*02HS@ZkC
zvrkWsy$&ypxjuQ_og!cNug9Y1Z?DQNeLbz`Z2WeyFH3Wt@$8zok6GYSyWppcY3c%%
z=c;E|ZxWE#myX{bs9cpJ*6;CQqU(kSHixr#%?>^@DpZQOxZtB!Nmc8ti&3s8p5GL7
zQFhrZbMSaoLcg>{uxDseP0iom67s?l3OCm*5S2MmXi{}Upuw|h%1*}Om2);^F1-Cu
zSYhey1ODG%9(=Sk)avfp)~9vOsYWw2i<+k%F`Tne<FW`7U*(Yq_p4=3jHQg?#1)nv
zO);Lm<$BAdlS1KvI};B6P>5RFbal=5Dcg^6Nk#7xUd<7t=5UUwC(U##ukzE4YZmUc
zz7r>%m(PFQsLJ7#`6i*I=TnlLxR%Q0aUKbHv!BIBEnDHhRvEsCiC=ejX$j2H5VgC(
z{{L)Mu71<(H>umsPwloe++WG|L}bz1-P2g4FSn{q4O{(D?7DdSDJHezi<2g$nXXUz
zsLwWQTIsUvnwK;Dk2391YI}Tms_w*BrlE4)D-Ox$cHHz=v$|}zHc%ucum7fs6l-`R
zhuQkZ%hA1R-F<64TD(}hJFiCfSWS*Q9PQGqeJ|jJcK=V4HP&5^W3J6KE@A$w+BBcn
zsP3Lo_x$$FY1I?eC%Bw!7v-=$B0sbJLTz~4!fC7$rxJK_FTCD$rD5TX@1}pV-;}$r
ziTY}nT+%Y<o|5?eqtf@5*Z;Zizhm$3f}AGCP5oD`b(`+$e8}Kmt+wKnufJ8m?JwCW
zSN|&KF0}U!4fa)EX;ku~Vuwo1qVIDUURrC~Uc2+Y!BnMzN4`5&euMJw!^M|n51-lB
z|KHUiMR3L~@x+y?*Gy;V=6O{mPAb%zdQEVpFUuvt>T35*#}sGjgl+Llzwmmw{iZ2g
zU-$YR48NS6%^cO-SZ=}S99lK`-UH2VQ<s~nX%|JiEI<GJCzI2<5bKYre<u1hm_7cw
z`{l<&Tse0>lv(p1`l;8`d)(_!g2^dPp-KCgy(3Lm)xAhc-p$~s|KslynI<<erVOPU
zd-m=tb#Fd@zwoSBw#}o<j{^j^{Y`qeX<8CD*BTF#H7g5h7H+Y-@Wk||a9sSI<QnCT
z+cp~P%i6T~_p`aCbE1|v_bv}Tzv`-1{Vv_4ZEQw!Q)fzbuiUfwO5(If3I`Q37ILb*
zSo}!Bynfw-XZo9}P95V+OQ}0kxtDLXoW|YC8z)cf?~f6YYTuT@Ti$gs@<a4Vrn5?U
zzm8iqJGS>_^JcZhWpC(8tBdLvcMn^AeSzfm^Y2qi%z9?E9{61Jpt3`2any>d=Yx*E
zP&?(-dePUyEKcG0vD5P%@3UT6<KCZgwq{Y6a96;^?Xm65zAIiHWM$f65frCnvrj<#
zZJ+9yMK>x`WA#kGZ#R3sX_9V`?5E{TY5sS&O<SgW_1(8$+qTAgU%Ngn_0`%|IY*Hu
zQAc+Zg{-|#FFre?d~sXRdfR!r-<EYLH)#e;`NAq4Y?r>rY)afi?lq1%D=fsgRATm=
zeLA!5<fHQ4y;aNA6U6@VCCik}zWU{A$-K`8^Dc9Fe2hGyxwwCUw59ly8&l>~{o1@`
z_LPm<mYge8C&;u<N?zK3fp?B*(Ht*7%PAWR6r8UueX>MB-7#zD)Hw=Qj3ye%sV)~d
zHD$6<+#Kh99iMvp?I-;2>X+BEWAN82&-wlTQN>3u{$=m>BtO`6{QAGDKVN^m{&@ZI
z`s0<yt-1NPm0aBTD_Caoo3H=<W%Y~Q-lc^`ly<*T{#y67cvhIjy9<B(c86BadjBx~
zs_eDD0so`_=JT4iz2@0(TzBqAW9IaivWiMJr5~L`x@8}6Kg)e4A2BUrTGYOrowtj&
zZ$0dGQ*Oikmp9&+SiL>>_}udcKPG;zx42)j?{UrfpX$#o#h)ALS()wL_iR>K{lUNc
zmLLB->-y8Z^%p<RTYu!cX#Ji4s{dym@Oa?4Qm)S|vvo`0Ek$0h$CtKV^1U?upE94&
z)`c^&8}1zpm@-Rh(V38oXWp++ol^PCc7dz$dZXD2f5k2+`ON${^Y#pT<K^jg3|6L}
z%|54x^<G{hcWJr8^Y3RgJ^s(LJo~5enaG9B#>*S$&HgFy;>sESnU{6iKS#<v-)uF9
z|7rcH8kX|-RJ*1xtItS2<5|j7RhB08;>sE6Gm>H5#S6rqILtJkvH8M3lMBHY4n@8=
z|J%V{>E-4N{~{|MSuWV|F0w*tN=oPty)R;3o1`W^EA)K9JVhmUUb0^x$BWDt|1C3e
zrC!{eDY+on_`T8d2+@7qx(8x27~eT@7l^;wciP9XzK-{ch$vH4)wB1FbtcR<N$1Y&
z;S=dk<*NFsc0tpN!OHftoH1){bJPW+D^1fDif!T98lk(+^_VrQZA;V|x$8;10ohWw
z?0HMFp2;`(1)CW2mMXGWF<Gu@TolQ7nnUA6$I}fx4NW}}qSFLdA2Le18sX;P2t{k8
zPIGAVf8Gd|=ba|F`k+zL)(AI;#2AOh^J~OFlEnu0k#ZnoI5bXhyl_|HHDcm2V(NPR
zDZ<Sm^oQOw!2n**&pTA62?pF*2DT2QPU8f~-m8g{jG>QrN4Pmu)`*|(xSA}<$cluH
zCSQb!Y^>5zUZ54jeVSth+x0_6OkKxUA2(uJb$siFo(Se?f&mjiDEk0N$TGq$g@59L
zW|4dUAMUSnk~GrpebS})eyXHon5S__m!WoMnWJQ1k<nSNsI3a|zH<|+rfg}`N~>G8
zWb2e8>w+)Y{5=p;DZ90CZpfvoRWoWmJ*8h%-{7CRWujD2z2JK3C+lNsqdb+p)@p`b
zGFf^pZt)VyQ!8y3ExE~>YT>nhZ@A}bu_vonzTSF2?2^=}Wwp_s*_w^~TA6ZdXKAlr
z{HSK<q_$q``>U7mW?0&<Thbe{^j-c!b&lf>Q!hT+awgqU_j9D*>6&Sm-!vH+&40Qj
z%W)r)AV>s-E5GQ&bcvvX5T{kMYeb9YNG(-+a9=M==u^~*>n2b0vz{rW3j`^L2)#2o
zSY^lZ+;oDu!`rrM;U`-B&uymc<I1p~lG9k_9FV5|gx9IlF-VX7f7`;fbwOn;>(mtT
zTkcGL&F{po@?&~)QS*gEjytRvR(e)UbJ_QBr|>1`fH0-nd;D8}pEP%3_t0MKwR&<u
zQbeVip5j3X_mjq-pF}UH(2-49vs*#keP5uZpPS;u;=Uds`*1mT`8%45y8M&pC|*k9
zt5A7<-Y!+*mZXx5ba0g=ljY$jD~o1V%$dwx)iB?}?U>PT-r$+Hi|&7%?AFLE^t0+Y
z!^1-gKjYN@@x4;nc}RKQoXPEHjDKnhz5Lx_v@Y<_?YT>y)bxw@aTLGJ3i6lx8n?qw
zs5V05tkR`h2AK~P9v-f9{lxvVS5>Xw-v3wsasAV&b26CiPWvC(G;Kle#+?^W)XD^$
z@;PwT)a&(R1FlG?@Uxzp?j<VhI}djsGhKbQ_QGVD%DVZV{-|8M!KkEN^ZbxyK=r{D
z+0WB_+ioq$xVT_Ze(Dcv-h%IsqUMKx377Nrd-<PXr}lUC^#wfNH_p${dv`TXY4c4h
z@%_7B3!i;ZnL9Ccv)np1Px%j@uM6eQk5M@uw3K}@x7&r~XLfrUowB+3^y!4l?yj9Z
z$pOpeZ`t4T#cQ24=W&UGjUs)_Pdp}B?%VO)^U^PaDKlB_9{MY<pe)fW#^<Cr?SY<=
zm`$<RcB|R@yK6iv=Dc{HQ$5>re(G9Vk1e@PUkWCjS<ShL@5EMBBQ_iL&n}DEP8z51
zy;Uhq-+7(wPc)zQqL}iUgR+%&--YL$Ie(G)lz2sX{G*+pO!aQFM{Sw^VMD#&^WP``
z8ZO$%F8<=DgyhSPMK6n@E1f=`v8})JW8WSpmxW<H8P5%RwC&B)_1|1Q!Kxc?+5aqh
ze(X}!)VWi)F3-PMRsQhC^RK0a`(KF_F!Z~~b?<p~KI`ufnWit3O-owVEZynd7xJt)
zPtgB!*SGoh>;~Z*pS@K#{e7~k#eMSpZ1(9gO4+xbs(hI~OZ;>3qA6e4&NE7OPI3uL
zzH*h{^XbZvrB`fknA=$y?#d3zl9ZK~mObyw*Vm`AblF11%(D*;ygSL6>075{Ul+R1
z{^lfUsXLZ-8oYiUmYEe>?CtH8e4n_fsqC=d;eBhWw498UhOES#JG#Da?ps<;nSRXu
zd;b^yJ{}*B#Q`No_B^KUzn1R1_;KQ&A1*<!W=tu2T0Hsp@z27SD(uWvc>N9;|5Ec>
z()m#4%L09Kw#=B+ivJg$JdiN4+*EI2&!?*XY4Var&di(|kzc*LdDrsu_R38tb3VTG
z;KPkE_m`MhDEU4rbU44D%f!Tj>Acik)weP-3cRQJXPt?+<($g?{n_M6MrRgrW?GmR
z1-!b=-#q=d?M~@=^X(OSpC{-%ZZ^nSF++OVxBiF69lDt(7#mjbip-a3WsGfYpE8;6
z$+7mQ>4|3F-=6DrKK|+PNz<Q=f1P)JwB)>U&Tf}jx7udL2$tqarzWlZ#Jc7@bNxd@
z%Z&O2f$z%vveM_jK5s96T)i}~CjH>kb=}-EHn6&Fu1hHpdbNJ;8Q)XMI<0JOCz*da
zludrz{Im1Pr@yrq@3{E9I`4h@nES(b|DV2%Ik0Ngr+@p+*hK{OR|cEqC!cw$yV7mu
zv93U46K&<-&3j5&^BcN8DRE5_cQD>m;BqBs!tN7C4Os)XJPA;&a1nf>rOd?sVotO5
zHVc-hXLa_!3ocg8oj2?M=RY^kyIagre!XUE{r&U#x~0n+81`>m?9R@{*7xb{&xeb}
z)_jna-Eb_wb^8A0^S{r!$jv0SK0<E8rr%3%UGKJ?c_8R*>F2ODNtxFz)<*5@Fh4kD
z%ksH4J12MlsjX$&Vs293`}M7@dG;%pd0)5NJ+RY{xmxPZyth`Y;{M0#pKmtT9NZMj
zy>)BE!z~xmm)<vGyKwE!`TOnSIuAm-r?K}Gy^^dxTEvyKq<`~erTaf`<?s5tc-r?p
zKi0iJ@vCU<lE{Bkb<Q`f+x1%Z?yhxr?X%~6<?Z>BDB=|#T~)8Ez#Yz_7r*V$=W~vg
z=jX+~pVIn%FSB+S>yNcu2{*%k>qIQsd#w7R(f;{9FQ(t&emz%WZ^6YRe<zbu#Y^J@
z-d6^!ID9m%a65lzc)=n8XV>^p(dJ#}C*AsAc<{u#&%Gtr?_d9Hc;uU+yL;z#5Ba~B
zuJcPI)c(C1|Ld1y^Oozk_k8n?x3Adn^{eInFJHgkS-dyy`vLvhzZVwnsq1*xcENAz
zwrkh3m%m!*WbJRS!}j3O{jB;&ON+&mONx)W%-vt%sNOxj^nS<n(zS=Ymv=DS4HaCK
zEgW5X-DS(Wc%{(mdYek;KJva>8hFHC@45Qbe<?j}^Cgpol6?|;GJ8I<C07_9(>lhH
z+_T@<jVF1D;jzGDKe`OheVn{{js0i$WRLiJhQ}O^RWumNCGvzHt7tS_W_T>S$8f&k
zABkk!<eDQA)e_264f~AT?2=;=dc6NUS^v{ByxykG_nB-mPg0Ly&&Tv*66Ym?B_D?#
zn{iy?UXS1jiP@6L>d7j`ZeqzbCnc8l1fG{Lvj1uI{`R-y$uIiu86HbGRx!o!nBg(+
zo{wtDIte`T$080($QvBXJLZwx^SCE5p{KhiF|kK_*Xv1h-?f$SC;xeOJo(17yN1W!
zOC;+g?>QooZ*;8aSj16@_eRIudp1rt<TGlUXQ*d*%)F=2`??<QrBW}yo{tjAJB*H{
z=+=KLn^Y^m|AT<tp}%i_dwl!0ZnCpel9_MW*6AwMw<o;guZ})>Z{6?LtIKVaomA{f
z6es!JxOMIJZO*stk@kPq@Y_6^yQTm2-SanY^OqI9u6>Z6fB&zM_;g9*ZL#t;H-0_X
zW#)3;cwL@icy;})(%%Q0=gzrvr|Q_nwojY43VyTNZewm9J$J+QwdF;t-~T#vR?~mB
ze|)Z;qT-q7(|y;?SNZz7^4apukC)$_C(ECA{@gF0^KW*^m7MQm-=2QF`S#|^_oCmw
z*^*wBe%-XMw5-hR&_OF}bL+VU8_qsv{dzaP@at>subbuVPyR|%@4YVf^|D+pFZbh%
zvcjC4FVoe(zP|kV!LH_%#|hW1PYS%YFW^p`HEC_^-fySoWw!l}lrKGh`DNAj;%~RC
zOLzZ0VRf~xw!)<5$qCKiL;1IEN6&vfYjy2+|HMtPo44-!v~2CS;28z)D{Mc%&A)9L
zAARxux_O1`%IcpQ?znd_uIPn%V$yZ#`4*1VFA{2he7_JN=QZi@Tgi5dFB4^ceY4wj
zGk(*{`^L}z8)v@V`pt3nF8d~#H#stI=2k7g`*+RSwO{$}zp0f-$<99Ay|w*tb$VXy
zj%l2CKEA0~Hg9tN-;=iv-`lzSYhSjk^@{a=7PrdyZ(k3yFv@-#8eYBcn}p4def#%b
z*?*tI-~6@B9UJ#A@72G)|G(e^N8#pw)9e1-`}$X)e*(K}z2~d?<4rAJ-Yb9IzgJ1o
zTvk>3_`O9xKF+#v^Xm8arybT!KD^6LZFiLX?lU*ccD#N(?Q7u$HEHR$|Mwg_`Sx4#
zwWG(<f+u|Kwc?Zhw*2H|^Ob8_zy4g;x^bi3dfRtVGjH4fpVpgu{?V5{`<<`F#nKPF
zJvx!?%gfj~>(*~QTKGoY(#l5TkCTndJ=y8(_bUS|tUUVq_}hN$EVYfCasBJViO;8h
zPv}_8n?14oczbgE$&3H`j&EnXaf4^aV^Jmj{>&RUo<8;5HYs-g>b`G0wsjxF@5*-{
zkKX@KD#UirZ|ALb$+?Yw%U@qUUbv(C_}lz1lK0!+i>=wZ?{8zt%Ic$&A1V4pobP5@
z*!D&6R%-3nDt^0bW&5LkAL9_`@82_<b-R1W&zH3_vXU2$F8yw+yKUdbqmMP0G?vx1
z$86!hmYXoYYTt(wyKjBo+TQJ5dwt!J#?5j2F6c%)-tWWn`BVIskR3Xoc_Q?VeeU`4
z>Wrsf(u}Y5?~^ZY?S81;xqj<j&+FH%surF-^HSfs^WpllH77fZGp~Qo-EDunwEms)
zFTD@ZFV*FuPhIr4$@_ct>aW)<uh&mryMI@7{oISYlQ;cy53T<eF8z9bNxAK#xf%aE
z#m}vrbm5=2wDM2STh&`d6W<8N<fL`*nw>NYRf^jlzJ2=N2~)~Es^^<IZo7Z??W@<9
zt{+X@o&4u*wu9I8rM90hXD9rapkBS+J4V*os%@X;m$SdOWna&?|Nrvp^{4xd+~?F4
zRA2x4+jskV`y*M`4<CMCm0N4F^SM;*vybN0>y}&XTDMXD@BQqUQ#+=7w4N7N^n2Ea
z<?FnwpDn-M(v<#W-s#+1`*%LuHMh{(cw_ADx<6+&^WS|dHT~0?pF0)L%f8$-&%WY!
z)x(A|U(fxoOTQkSHt+P_UrTSy%g)NW{`J$V-LaR8mOVXFP?7ppHoW)S-uZFHx#<>X
z3T9-k{yXowTjupOTW!Oy`_GCs-kn)?TxPnZ_cN9AJ8gES^+oQkv%0s(vwZiK?*@kx
z<9_V9vF`QPWw)oBU7PKnwg23fs}-*omq%5t`xz{@<a<o_+ueHWPsdH)+kQ}G-PU`W
z_rBK5eKhw`@?+zx>C?Zi`u6g}%Lt>ilec5Ir?=>yY}}x_(>qU3c6F@xp=rN#?;a{m
zczJQ@eEq*wFR!0|GyUw7s2w>!H~H^cFTAh*)7^KoAOHSZB))Fr>G<e<RX_WlPQ5$5
z^5<63q@yhBR@N#1Df>~HG5!C<sh_uMJFuv*&3U^|YpZ?RqvG9P1Anh_53?02D7)Hs
zwLaqQwyL@b!4odey7OS?Klfd6XP<vt7tXppYd!bApYLvzPv0y3JMZ7_wYRpG{kdiE
zx-=#C?5>Be{~dU){Q6jdZv6CJ?;h;>^woJs+M4@^Umsh4K6?K4Jf8h=m-j`@-+r*{
za0hR&`I>EU;m-56$2lr?zHa-R9dP31glQ8l?@4l5QTt-W1;d4jG0UCz-!7PXecrn&
zwKt6uE+<Ytv@9=X&&OZO-p)?XsjK~bNH<wo&3#!u|BIh{l5h28&gZ$8d*`lPZT^<v
zFSjo$UW{H;?xOBiFBdCQYx--q#O)c1hJJ?r$95d`>8><ZQ+-x)=ILJL?{+)OPu=@k
zZGW>malOoMk2iO2ye;f26n@0?=+a}me&b_zd*%zsi_|M6`W$-GGNHwmlU+zl_)Mp>
z(0!jfQ!7j}Jub~y@_cfd%1`yRzFoen{N*O?F{rHlq<&I-((G?{cb`v<|FBQ_w^h)c
zpr&BHC0pKz|DJ#6|E+&V{(fD_zm#oB+Ok=fw{>tBy5tHwCrbQbd)NB=L81ibxepvR
zT**gklVtWRi8>NeA-U{e$qdHz2Yf0-(+=B2tf=a6-5{~&YSlw#?*vU9=J*Ic?F0P(
z*#9Ih-4)NWqWy?g1aG4N%fVMdANAI>mTr(!x*D`mc2NTRo0ixKOurRHFDc0OUFP*W
zAh}PkX>$Qz*F&2r4w^9yMjGv0E85&l156x^XGHKDM=W4n*T8e%L0h9h^wxt}QriEP
z&J%k3LAS&~{Z2sgk@63=cUt7HNM!a`g>|(_bhKJ@w6l1$sCcy1!fY{m!0?Be@6hrB
z4nAkKl!JmNg0q)6ZS}I^WwT&*&6@fy^=t869m9^|WsBdHepS6Iowe*;uHF8_>GfNE
zr)$p>x_T%qSFr2?`>!V3FU;&O`1=eP*bWI?^=X~C(qQwq`EiR5oe7ySlgl_bF-_|X
zSk!oGsDJ9!;K;8bVYXP9k8(rB-Z!vU9IA<6kiNnv$h1&^ZDPp7vW_O%4Z>xPTyNS#
zJeo@^7SCG2B^;W#NXsXrwR4q0ps3oaLoT5+5Q3gpR$V`ux}v!%gF)HkQ;e|5VbiT`
zTn0gmZdwOCSS406EZ%Xh*!&9Dss&A2D;98Rt!Uyp>9$wr<pHrb3;4gVR=;59yCBbY
zAYrTLF7~zq0TOKc8>=7MN$`C?oFBT_#Od$yFA5e1-#_I4;QmASkGTyC|6vbP|Drbc
z2Z0ql|9BQBnCv(Z|Df=Pc2A@F1J4Ssn1}fWV#f|vR7j~EFn+)$oG4_&J^7(!g<M>N
z<_D!6hrJC%<JvL}WYY|%-!x!<cE~2;`0qG=X$2N1MIN(5Y8Cuuhkpz3$$zT;wj%9P
znp!R;gz6>nJFE2{YM*Ei4mk1MznSrz!^9}3Q?rh`38_ssnAvht#YZjCh;y>%44*?O
zP$7$LEXSukxFNJB^U&<HJ(<U##6~yW<8xbgY!)aNdvwm}PNYXv$|a@AVl%g#NLu`B
z?G2Xq2h%F#4?SeQ!6bjk{lbcE!FS(=lv`iTU9u~B<-4#|yQjX&Te>THWuEfYSl80<
zz`LO#<)R?w$&l$jrL-kNPlUAkP(}nb-f|N?5z^=bC3Zz-3IEGIwAVLjk;IXg-oM5B
zl@ChFHM%FRDOjRxo%MhI)QZib`P&|y4cl|G%RKsHn)bb%qqEn71-n}3bc!8J>Nw(k
zTal~mfZq*P%`DTrHOG3d?${`09(LLC{o>+#?aJ8&DZG7a4o)<+*u>_3?ZF8tnaE~j
z!M41W7j#8;Ep^%+@?sj--JpfhS|#4CP(h_F_17)D-(K14$6n=p=JMXN&&!Y4JoHlQ
zNjc<!ok$YUl=A*A$<A%~TPcD^`=nDtRc}p<vi$WE$4x&K_STq8=<j~=Sn1~u4?Dd{
z{oPL%x7KW#&@cAsqLbaa3H{nn9&`QNfx&!ap<R1uR%2OVx89OfvXdA*-zJo?-Hn;_
z&&s&g`NfXoT*g;Awa*wdNxB&v=17w`$fG<Xk;S+tp-m7jIKv@7cj@+Rm!hLzu3h`(
zT3A)~>$};my-B8v>O$A<S!;GFS^DM1-Y+-Ys&bTVw@tj7m6*CO6@ey2&P)kYn>p1p
zEftNq(RZ)s-MP!&`309RU%C78mAjd*-fj6Y<GEd9Mn~gb0q#Npe$ELTo)dU}E41F<
zE+3@Gdr7hRy?jIS2Thr#!xK0o3s^Qi)R1YGu~@gP@c5-8={0{X=d{FJaF(m#jCZt~
z)5N6Fayg;FcvWMJ#EDiMgp2C_<y@<N{!*Hs{a}6pXIA9z(*f*XFEF@eguLF6CwpzJ
za<I|NNhhcHEK4y`ovb<2=VXeP8bqjPp|oL%a9iG?3%(M&IGxP{=Pozg!s$HQ077(j
z+4>)yw>;^5@W$si`z3DRMRiB(T+-~5QgEXs_fLPRo>`}V`F-lIy*ia03nwj~p?OyP
zyEpfd_e)zJ$z^J;d7Qq!omT)<ic2R7?_r<)u$H5p|7YawD^Z$4+nhz-G|b(=Z5Nj9
z`9?zMcaP~>mC)@zSGm)LZZt+)6?n7fy*!{RyJM;F_L4`_{O(-pjJEpNCAeM!N=&q_
zoD4y`Kg*UsuYPy#`<=P(cUs>sF5mb3+@Aw;e>PfwW-fom{_YI_mmaq=A>B7BQ8zrd
zY?z#psD9B&ey5wf;U)K;FM`UoM?B;YPF*uu`E?2Z>nA6yEF;!77asY0W0~0PD@n7X
za)P^avo`wbZd-ZOY%5IgS(eh*TmKx?o*HRR_uT1oDm6%Na?#8wr<cU2J&pRGm3B00
zDWip!uzTvG6+SXkI~N-jhN$&fwJhd)xWd`ul|Y|W%j`!5!7_PWhkXloX!4mKeYnix
zjz~LPaP5wjqUKv4EepGIrE7MSWvW@xshlTMZl2KGJTW*;dHESPznQ&rjHD3~cXypZ
zLOrvK3WN3XP962#xkFRj{OO~alPjL7%(LuF_j@#R@|PotUydZE*iV1+eA3^TP4m6K
z6`!oryLn#q_f90iXT>Lfh#J+k_QWeb4nF~Ap0aRGowLyB+=P!pMsZHZyiZhcO6n^<
zR!!N{(lZ?<xMERoxov9MTtmM=&*dwY1czMG)OvYky-jk+<d<1SvA)YzpDZz*xlZl!
z)s$Vce8Rzk-?h(4sFgJi0GborUi_-SPxjo(!<MC&Za-rD^u_&?Nw>}4KAXRS@BeJy
z60!EU?f&UuA1h5+oCMZ1CPZ-W|5o#fasPAYV}Cl%3vLko$9LN!R3)cf;|8O3qIeBY
zwZ%<$XPzTYGDn=5RGfrV4%>M&{++;;Ie|~IfZ-n_`@>)hmUczqO%FIyKF9SPGCa}v
zxPZy7`TRqbCrxsnu4Js4+OSn<Lm1OFuLDt>657nksR?U%dZspRG_v>~BbI*Sqh0df
z`0qTei65kQh`(!YzZ!HVu*=fR&|UMHMyh&^z4gQ2h8~h^nuirqC6@3sPf46$#1qu!
zc*+1OxTBi$U0l=d=?T3>YXbXBPi=Iwyrywn>S@Gcnd~XaP{EIT^q<{mvfP%?r#mB=
z``L}A=g%MhtgNV$n>WAx`SZd_yW?}3z9$&(;eYsnF{hFLp>jux_y+VgEO+^u$9<(;
z8~g;XX&$n2jabg{S|o9<(wg8F6v5ppiPKfyOlpah+UTuZmU%?4_r_Ae-6l!X-QHa4
zfD6heO#gi2sZE(>f9$#B>7QpDmEZg$S*-rdqyET0p4(beqCIF!{M)ap;(vC@tKt>E
zWLDX=uR6aF#5^4GH*wWJgV6dJtL)dzR(-e7xc~Crg}*M%J^u3E!_QIYIA32$-W6jQ
zc6~+NnrtDxU1=Y8oKumz8hIrswtIu1|K+2)C57CvcbvqxU%<x9e<E|?jOBuvugnAf
zvaPy*;qP)b-H;M)(YsEr+XF7@mi)0<b;}`CdPNp<Xzqelyl?(y-}rrf!}s-x@8b`z
zb4Uzdut7WEhN#9HE|D@;uH8(nv5kiy!pEoGOg{ZZWv1=2Lvq21{VO*d54mx0i+8%E
z;@svWi+o$nsT;ZtHW{sbvsWf^X4tp*zDFXPza?I?J9Dc&^0z^@eA?T?Yieg~<%bKh
z8@y&nlRdD;dS<Em=674(UB9+rJLj`6pCCOPvkgIt0$hn30((>1CY~{vB<W^!*dtBi
zB#-jUL>1#6u;6^jXP57a?%M5C9{%DT*WK8KyR{chERGX4IlSIN^zz!%FRwi<d0n)t
z)bj4GIeD>u+x3=5Pe&4Fy}PR^FV=DUx&_hU7uIUOxF%Zinrl}nSh#j(Uaaf(b&I0I
zFRoqv;#z3QYpq?SqIY+7frTfzZK^JzedB%G#kER_)-DJ6ZgB2?kbL8C#6<z-jRNc+
zCoptQU^%&gKPbU|iIdb4XEvFJ`U8$XMEDLSo@mjrU}`Op;wfP3TJbM(Rd3$AweL&U
zcQY<I==$Ak{{4rajY`>LKWl%qh`l`5?}d+g$+An{E58J3?cHL1|Lv3Ab8EIweqZ+K
zuHLl?OB22_U9E3?wcp`u{DNQl7q-rM8Fj8iH+|PM<Ji+P*FE*QUbHOR@-jqtk!Q&w
z&qr4A_nAU1yqQ#HC?4|!_ip2u<qc!C1o)Gz<?rSg&WpTZ%v^ofNO0Y41-BPYt&{T>
zODJCZcV>Q0jr05eZTJ53?)@)a_22wU&CGfFmp`Xg?ejT5{pC+1+xTVAPs0TLc+bv}
znq_HfQk<3X?8=2RD;+m4Jd<^D&9pOFrW>Qyt_jm#ef3n<)=g1s%WaPbYJYiK^{dRb
zcK5t}vHthhEzdW<uwDAaZQd_$*?yHVuU?wGwFJVf-QBqFuEYJj1*j@u!Usg>?pP!o
zUh=5RFXm#WwpF34`nnfKpn{iH&wlso`9|{@w;^5VHR>O{pZpj4x!>iV{>1-i%*a(L
z-cwUnPSOdTwA5=;i03q|lR>Ho!ArmQE&G1;;_p{4YD>TDv#N@h-MhZ;Uby@F)r-Nx
zCB?1H6>^KWCw?*Oxz~2_wn3G&TmIn}xe|MM;ez=|U;KLRot(S-7y@NKKDV{-`K=wr
zxp#J&>HOD!H}A~d$vdl!%Ke|c%UpglI^wTb*#6e5`H5fAn7fx{mHA$MGiz1kU7@h;
zv#zd9D_tFVH!E!Wta)LFx#lOd`foU-9`R6k%?Hk~Lx;RH*0dmq&Z!0)h19|h9r2p+
zqS(l~A^VHvOxXjbL3cHK6H;v=B>BURHBbGBU_PwjXHHPy2}++l*K1R-XPMSXKh>Kn
zRjj9`JQulX>00JDac*$RbCK06(nY_ftZ3j7ov@I}D8!+S>qG#fq?Up+D_ro3W1H29
z0Cve&3eK`AE1Y#i_(4M~W~<h%S);A}`qZgin>L{`SKnBcHgVzh6BnXWUg#Qq5tFRy
z=Gm)i_iU%Xf>ct1K1%JJ_zyDXV)Wx5qXozOLy8tWGbgaRD@a2s=U05ce(-&ijIZZY
zR}}v;fj$0E_yqpt3mCW_nn*n0`M!wb+#ySiw$A}fOA8oJEs)V#FzJ3U>(!dtiRVo}
z`0rrZ8geNWG7>T4ipCs)R^dejP9lCChd2W*6uH!09=1RPSKL}0l4}+^+xKc(@Yb6k
zW_8P|wTrV}uefEkYFpo`waMjSr{Arab~jRY_vWZ?@^WwNZEn<8Z212n;s3*f{|-0*
zZD;?@&yOTA<J`YwtKa=E-`FqP{2vR4KmO0-zWO^K`>p>K9=Ct@<GAeq9gpS9!GcRA
zSM`74I@1#V&~(Pp_w#v+6ZFnBZ$Iih=Yo2X6aV9ue_HBae$KfN|D;9k6zAPu;VKRF
zF9Cip7S6fgY`L(#$cg`Hi(J>^JB4$s`-+bjzOy(ddwl0(i*lLgeF(uh7o2Yz|A44H
z#c4Z5xJsj%L;ssV+#AI`H=HXrwtq<Ce|S{xP`7Q1xcc(|zjF)c%yG7~Y%eO}d-_D?
z)Je-JlZ!Rr5*yu(zIhy%dwD}ywt7i&e@WSCO$imwW|hPVDm;@~94Fmy{JpvPTRQvO
z^L)4F+aA`qn^U?vuTScX-!IN@eBaC7%f5Si&-%>~Be`8Mrmojd+-#~{`7ZmMtk}o4
zAF|Ih58I^9SkCi#O5!}DGr?_@rwsfh;es*8)UMuGGV9CsiT}(l-FN$S+oN9kWxn#?
z+$H;aL4w<?&oP^?t$%Df-7oq0ijO@~=TV4LdE9IV93+<L{hqnEiSz!<4|6&17iKkW
ze5H7A;Wzc(vp?2J-Zy=`JFVt=&-+;)V~zJ^A1j9mmepMEdw=U=to6R^<K=IYmcBUd
z(>x<nz?e5_nd2Fgj+tzRmle{aj(`LMzTdAp@@Qv-jd=I-q>nK=^Sb}?|G$>3Kks(;
z^KXxK?ybmsU;ksf-0~gF%m2y$yQa*1KJ~#)9-HZn&y7CBu+2Mtpjfg(4<=Z6{C-u+
zou~P>`wkSxKiH}N;f{F4J8qlrtn*eMDh{n!$8|pR;Z7}^@Yd(6KE#MZ1-rbo4#%1o
zT<5)0%3OZ;Kx}m3^{_izMay%KVq?BN7Q4IfdfuI_(&gyPaH)5<ns<MDu+DZzHa{j)
z;*MzZ?xccno_AdbV>5SX^Oi4txX$Fx)VAGj_aCm)+>veiu8OZ*^zpjo1>uJ8w2s9d
z-LYB%#80{t+OzvoVYt;huj8>VcWBF&FMYhO<j&MSB*E1ZAk)Aqy9&b%-+3L3)!d=Y
zTE6tbI*~h5n|22kgmYn-304WU$o}f1<xzh^y60zo4A!l)>X^^>XnFIGmkKNEW$oV{
z@IUVHKfds?aK%f`JzKc-T^}zxUwAQRrF@vjAui7dMNVy%#8#Cx6Iw(kZD4w?C&9p+
zIN{g5^M76@a))Ic<kF2;$f~_1p*3X9gf7vj4NfS6VrwomK?Q$q->s0lerF)>aju6E
ziZa?Q$*l!z1o}h|ZFI5-;{XXd9^{IQP~_H5No>_wGoe*<(}t!dQIRzZ5?EQaH6k1j
za&d(Ppa>DKHlyCJSVUXqD25RjrXnnN5(_(V2&;=Gv?82!utT&b0#5Az^xj^y%w7!{
z<ph4o|Mzb*XR}G-1T~&ZEslN36CO)Ev0$_8!^S*$L}8|cig0sE(gYu#Nu7>Hh8}8c
z5JC3ll;jCHJd=7IHyL`Ev7J1oa8p7>8X{Q4);#B+Lb|~TNuDCM<|hdgWOybuI~Eyu
z@UcnuILaMUIBj?$gU3j!*`~|!li`WO5-Re|Pm(9p@J#A={AB21$9D2RKZspq0Ae3k
z_z6-Vb6DZH!3jg2BA#X>CaN~5Qi$OBckaK<gIpt)aCD0#PE^tfYB6<7>TQ*HT-akM
zkj!&LY^Bo7E8>%WIR(XgyyEt(Ra~jB^0g{xy*h-rHFNodE#i~DIbDkLxW(;Rt(d8=
z^0sx!Ua;Vy`rqq$m2W!dLp!}o4%B(Hns~I|u8*GKYqiPK-R$KFHQAd>lxLTuOzz9M
zG!ZT+dUJ_`8mp1!1kXkvu9P5!Vk6T6Fq+U&tnx^v)52Zp+(c|l9+gEsE>k9U7zqWs
zDV_2-9C@i=n#mkh-gM8yk(U-sVw-BRVu|C@qSGtybceii)%vb9wR+;Iy&g~FmK5m+
z?G%R!Z=ZbX?UEwvm3REKwog8#yBwsxNNf9?Q@YE4Wv$pJwQ7CatJMp!Ge4bLYMa$8
z!fS{!5Xkz?S!;=-RmuUzAM7$M{tpFY+I&tlDNo4#ySaw>_lM7K4xiu5Z-3tIkInB7
zpF`4FuSPnSh6T(O4M}hP%5uN7>VHU-&;3u!@+&WI-}5s1-WT2cU(?KMPtV@>)E6Oa
zyyC&+kPn_(KU73(CUMz$vd&-9<R5fUeI-n|He0$jTYBmoZ`J2PCwGPv>0x0y{oeh*
z`~b5}qMc5|{C~S|_RcwAez1Cj<h}NS9}L?Lw0{uHQTCj;N?!AWGHczE1N|aDCNkMq
z&6p>*Y<c_3mx)z4nNL_I&2g9{>`}zz>8D`p<IjKj^5HLE3~X^Tf49he<HRkEtbg()
zhaf2rFJ{k71x;R+rHxBWCQM<Qgb)OqGWnVVlIt!>yH`E-$d`H9tGu^xiFx0bX_N02
zU5fUr^7hQve5tFtcj=PtQ@%`_bT8;qv=>}Z-Q&IErRoV^<W%;ud%k!46=}n%r+RRy
z%8n^4(<eO$68a<g@NW-Gy<3z0;`ywX&o{kHKlo*H!mmh!zdAGO#C+_zm%)XN{eR6=
z|9fU~-7`=7&r9Z4UOI2{GJW0`uy9yJyJ*eECjGDvN4fSz92D37k;EFm=0P_|aJ@;;
z-ykYXBNbHDv8Ekb{XyzXQr+f6zB8?rAErh5pO@9#yLjG$_kGLW?{mH{>wLd<>b~DR
zwdR4J4hnf!=849yZ*$;iG8N#-PMrIy_3xey^Toe?K2#TX<2?88%0zqpH_u^$i@vKR
z9Vq>B&!s9~X|MUjd$T>>_b&MEcA;AN#a_WL_c*HZS@xPY-IG?Vb=rTg*>bTWTaqH*
zBSl6bMb1fy^02~!$Ku2OGk2?N=9JDf`=D;DIAx)ztE<5Mqg~w{MM41rto+(cdRn{Y
zuv7+y|J{%s%gPwb>Zq-BK`BgIuS0#&0jKVOHA}rUFMOG>Ox1U`vvID|ypt-EPs-df
z`K*$=@ci$&FAuP9EG_+i<NWXAu9KeqlzsPl*Sp{4_LI}uDg>S#tf}Cr<L5uDyn#V(
z>wNnIPCt}&nvN$J{t>s~^M1e?acZ*vqraLJQqvr{b&ju|6OuST0EP<03#aey*nP+K
z&QrZddVd`j*FDH87mU9kyeG>4LzV5p*LPiO!bSI~N*;UsP9<vcPK(!hk6xtM>9L;G
zDt1j>x8jWG)SZir!b6^Qor(#ZsSOhht&9kj3!B;=`ZN*DymxxHMA523Khtw7k6B)|
zST6NE<nf%WIl;ZfAi;HZ-MegeaII_0e(?Ik`wzZ9#A3LwAADOlo$L0}LuD&B#A@Y$
zm{Dabr^T*Hot|}bX;j%uW4}x3bCxufu1tv4ikQxIZ7FtUQRzw#>(C{0wJ!OIYOYs$
z8oFdp*Oc&ypR|JFTu-g`sDulCS<^Kocw&)Oke}<Rl^&K?HI_>~4Ou)VYf5l$(JKEX
zzg%z;J*({=uR6cumGQb?=uCgluaW_^Y$5X*uckYoGgFE@)uyKutz7u4=ay?h<_9gw
znkhW{V%YY3v(<aB?T>sWr)h1x$ygaDVeBolci!S^%U#nU#On7uJ&TKH&AxnR&a-DG
z+vN_gJzntY*8?7}bd9+SOWH0;f*D@~mbPoyy1Z2M;t%{~;U(|>Qf6uKlyiYr*cfw+
zGpD1VmA|(4SzA8v<J&Qr`I5|pXALIoODq-6GG_956g$j<37vV~@KeTMKJ&BU12udz
z;%n#4=FWT8G<)ZRG`$@&x%2$yJ?{IzC*l7u>t4Hc*;P7~o;8J^E*E-#3bJ3l^5p41
ze<bbW1?}bMtWrMt(xb>~(wsh(<>*X_Gl>T62W8lbAq*R~&k|>n4f+rM`TrunaCYzO
z=DG?oHib1$9psoFOGq3)V8M3G&>*gwt!8&$7W<o)=MO3?eilER&-cx@j&0R@2FsW0
zYcB<{Ojep9a&QTUnyZ0klc%6hR|2X~1j|N_B*7y}9j*eG>rCH<U#{DlajAM|dY<^%
ztcz>JV1$TEuz;_l$yId+;}Y3LnO`d}FHG5b-$rf5+kel$?dZ3w{ql0LzkKbl7nirY
z*NU;S7yfWubf()#|I{9h&)693GZjR6oWzb<R2$vPcy9f+X8GLrTRzV%+xJ=Zz1a?x
zO3w*P4sZFjn@`U(?%DJ6ESH;<Urt=;-X<qmmGT0ap*F*JuWMNSnqAE0{>>9w?}`@r
zzn>JD94`GfYjJGumesvwTLtG^);#+#^Kkk(z3A8PrA|C7kyvgyhfm#Jy8Yz&qlpF6
zWY29qytB;WI^XkK4`Zz7WVaW;Em#K;{Gq_hmTBP8>?p-^DPaOzvx&xq1rE(jyj&(4
zdwxh2u09dwEWM_2>j$1Khpk>TeBHokwUGVWw<)h9_DD+qz479>o4whujThsq|CU*|
zziXKLLB@uE_anocp2TDx>Es(0($eV{bM1G@x^Az1X*M_S_r<pwyF!aIt;)_FJ9pEn
zG4*76({@(&?tQ=J9f)0YU-cK1SbuFF*IunJtFFWw-wHPS{{E%uV)0Gp9zXKB-Y>iI
zk89R4k6B8YT}w14Au(>v`}WW7(B1Q1d;iF)c)QNucF8X6miv^MDPL<P)1wWyBxM}E
z(6vz1S-UNaXRSn(;g+PYJ6qFuOp+H!GM|;mIObsdclOKsKL68xnP1)?$>%q<IT+5J
z`S0wP{AKmXDrWvWyGW~RmBy+?E4o087b%hjn|LfD+2-gl`%Pn1Kix1n^}tD^2QXoc
ziA!DdRjV{FdUwWoeYxg8&Ccsf;G%w^+9@v{ch*)s;+W@=_`+n~jdu0E2c06@{DR}F
zo9lV@Ny~_xX?cIJ_e1Rt&N>G3!@339XZY^*uibhhsvA!1p8oE2tFdM8T9a*;Zg?eY
zV=~UxfB$^{@1OGj_bcpwWb@qZUAWt@#Jug@u?u%^?BujIPkgTS=1$Ap*>iRVUzu=u
z?)LDN%EvA8_b;0^=iQ#YUbdFUDt~W%vi;HV$=8qdtKDwiu6mudetL}jo=}(jPcO~<
zV7o(bAHVrQ{s(D0So2zMUft!p`FPgP{oD1DcX~|kF4=jP|90)Ycc07VZ~wjL?(>(s
z|E#ykymqp!@mFwDu*=qE|CT%u5nMY__GZdg$@y7jXT%QX2x22@x}T}enw}B2sIn8p
z_*Ub!@?pQ@YMWTz+zo8k4jEtId%b}9+F`aAEpj*3Ec@bUZ^O;}ppMl!m1nA9$gv9&
zZEA)loeMpAe3Mp0Nnet<)wVDfPVlrDNt{a1XkOTC_=Rm|Aw!$r6w%)&yO<417WLfV
zcV3?GLL~H)^`^zUt8TGgPCZ_7(=fKoXSysp^P^v1z47t=KmFs*N=)8<JLF>F3I`Tp
z14)^T<B`_qZWUhZ+gvv1>8XB|^V?_pU;H>}$NW0xEwBCS!tT}a?GriUQ)g|VQ^{Oo
zZee24J1sIQEpz75)M+S;mlj^f1FiZl6;A0}Tq3jdv4*TWOelX!-Qq9OOYdv^b$e;<
zwLkDz?<FLm|A(|UE8mbfc+BJP-|*@xCG8_F9i0NgifT@`dN1eADSNy{dinLbt#Ysa
z|B8CM&`-QF@QLe0ao0Ez6o#IhaBbX|%8Sok=Zk|G;V$ulwXR=8FNW`^nAEMlG2oyR
zE4Qdl$ObHopWKykN1Oz?U3GGf9+D6{w!xsS)ljFW@Z;ucn?QTf=b<Y-<4&yhn>@!d
zth=u7#q$nq#J}oA@mjx@A`?o#R2RiV3EoBb6@H0b+}^Rz^^5MJe8Jl87tt>Fm5_!0
z7B8yz`*ObXpXEh+^<S@ydDGR-KYzk~<r;VG|CJ8}s^S9dXWFT;^DlhO`gQWl<WC>O
zDl58ea>U-QwVKASYW=8vvh<_aljk06KDgRtzvq|PSc&;{4_|WaezCQx|7P{sd(o%o
zvZh5QOv6UJF4!U2KD!V>+~__WC-d#m2J!a2VKF&JkN!XGSE$Zc{-^*-tiJm*z3@ik
z;jfD-<oUiIeHdwB!_YqcVL`miyw=0a1r;+j>NQTuKPoWe3xDt-M<(yUeb=qkCn}ZZ
ztAD~I!rxE)UZ%dUJ>7clq5gya-w3OGdm&dD__kPIpmzBS^NxRSs=laq*V$i;5A6S!
za`C<TFKw6q#uxvu`DXLsWBu3SpWBb~cYjHoXs2_j-SyW74|%bdH51Q?Lx?}qZI12=
zSi<d!n<&V?yP)Hq#-du6FRmB&1e#pk_pN);kJt~4foFt{>R=;g)z+<luk$Z=kCTeF
z%O)_<ly?5Y8_9`Vx|W2htX0Ys^<3={<$6hLQW%O*Sw~8{2aGsAKlJ_QlCbB;vtM3!
z-5>mV?@P-?wk})DuUB6#cB$#;$X|B<?3dj$tLqhhweR@OeCPJ5y~kPA6Owp@lV?aA
zJ|dxZ%)qd%)6l0UF^Na`>Z<#_t$8{n$qS{q??$}1=e^&mbzbm>3&?`UoXo{`ZA21U
z^|K|*Zs9Ed70-lM{X8-+?xn!TkBe+0mmKf@lrk}w$L?N%O5Z&$_k*_|ye%-1VLpDS
zu)t;yvtNVoLzN2kJ=}h6!4K{hXzgLY$G!aE%MW%H_B9N49RC^Qn~WbEE>N4pnts^*
zf&4?69~w10|CII2?r@eLy!(Oshw2}$I^O+_)e9u+xc4_#KeXE+|4&%1fjv>~Ondu-
z?;i|on79}G3V)}5_qrXc|6!wy#;0}LmEPq>aIRh;8n*i3{G#XOD}Vj-m(WSv&~i|S
z&70bc)$d)`By4Cp$i=2DK{|t@S&&Vc$4#QgKq9e#q4~DK4qhlBb?c5Ls4deYys7GW
zK&|~pRSDhXEj<^F+)h)S!D}ya_3a1c8O-)=^AE)Q(EQ_W)A*6I$3LNl>9MfH`~yE&
zj;R~i5i8WW|3HQLG36e2iGBmQM4LlD6ppbQ+I4(97?oe1`L%ORTg!?`7dU=92*2SD
zPO$el_|JfMUF+)yw+n3VFx+Q+9@AXB?x5xM2XnFu&Y6as-x+e4@n9nF{3iW_JU`5T
zaMg&eYgq62HSd4g?-v{U<**Z(6{&mnJq#^S*drCkyuP*hL1}@34Ac7laPvR0dzL*k
zs8IH4H$V9BL)wpO3#NNa|M%Bxojd+GmG}7}^#_wb_!rFkaju>Ffzu9-b-mV^S3DQ{
zNtIq&G1+ad$*U!S>b+J_A+tM4XZRoMgs1PcI(;>A-MOODX{$HK%*~CE^2x3+%E+qV
zn%9<kfk|6qk5HJS_L{co&%af^%hd1LANPK5`jzT;lIIqLZv8Iv*Qg@4sIVaDlV|z-
z#DWSV;Tj`L37HvZ*w*{={k9a}qh|R?<lOJ=7auHnFnNyA8O_5a6UuWYJ)dH;{E4ON
zdCf|{lf_>1f<J+UuDNfpYx*j<raz&U<u&UX@eOeYsu-~_u6{q5cBQK)YGR<aQI@OQ
z+7l~8CATUq4oe|LkmuR=<A2%>_uD_S@A;{2SQk*_`C-`urkrm{o5g4Ez47K~n!Z`}
z#+%(|<Df$IhvS*MZ|Ed%?m25@b{d6o=flSbR}s<m@%dra0>v1X>sAxjH|HPzTEJYx
z{v}01?(heRw&MmiZ4V83#Q$%f7vMGT_~G66MSq<9wVTO)=AWQ~un8aZuRj07&n5M@
z&g<>ImzQo;zdOejx6sTlRC@WU-r%dpR%Sg8*;=^jmPKgpoK;|9sh?uX_K8oTd;YlO
zK3V7{mxYzc?)kH6;(EhRr?*bL+%qTbiHY)ZNz1b*GTr=)i)KND1h=mH7!+UHTYovP
zf5qNoTdSXRn)3Cn`sb@)G5@;R=UZuUx6fqHuFN%FpZjd<**)84!Uf;%xppoa8=+m9
z%eh|n;a1f>+gh$q`*2GrF8WZmcLi8*_0*cJlh%iQy6Uwr>STEL&n&}u-Dj(h)@+@z
zUhMPLq<v9mkOhPG>a3dX`gPNaII*jz7ga@u=y$(Ly;?4K-?c{kW9$)<8NB_+oHzZP
z_#pIGBj?`(OX?DW><w1R&$z<x^NPLd3$y572Uq)mi~J#9m_<XaR(qv~zFea<H+1Rc
zgLXxRs^Y;=LUfMzR=riFfor?7VnbdpiW0xNYsEEJn2_RCr&X;X+$+U`beBYVY@Lt=
z65tKe_1>y;byLV`6vmp#`4>)_zjz{D@`=~#C!40F$4N&ozM!HBlbWZzS)O9A`djm+
z|H(S9Z^4`9Px^}_bnySX$?bD$)|Y*H`~J!8`zN>WpPXN>e*a&!)z5+-A8!e7oX>Ud
zz-RH(4dx&I9u<iS+a0d)O26w@_o9D`R_v!a^VLnkd9n{FA+9v;Em`-|)^_f}m8yQa
zg;|}!-d5LhHvQ6j^w~fv$>c~z$3=m~if+z5Z4$hOlnbn_+m%X|i2<S-$)<N6f7Uzw
z_qW`<iAP@vgtc$5YPqVoW?S-B+aD`)_*1JjZad$UJM}GKTl*&4DQ_1-gbwdtxO>&U
z%R3crb8p&<N$|R#TDSdB;0Ln`YZ>0-2R0VS$nd{!5Psld!FiAKebeNJA{FLyxZXE@
zKa^QuwTJ&6zkCD#A^QXE4|skU%;8Kwc=Lnc4|fZ8J1+TV+wjHq|7*5nKfO}=A$Nyd
zUc>tX<%w!F{CO?!5BqNTU3@_;WHIN}3@6iB0ljc$#t;6f&-`|9ziW#>p#L!ZL-r5e
zJIrT4ME{Vz!~Ol>-w*RYFxYT>PO!6K+27v&P%whQd+t;JL%|<RbegBx)@vP_Z~1c1
z593u2TEFfu-Mjo>`MU2bnqFtUlX|#L5EsEzF1lm&fmqgeS_R>aySeU!K3K<8F8b>H
zys0}@ABk0cr&So<x!dbb=%aN)<zOM-J6Dgy(wIP4d+YJ%qWaytz5f4I4`=PYbM-_l
z`9wtdb&+?o4#fuV$mS~dz1h9{)Sb|0>x{~$zD|F$wYnfYy+E;i=}zslv6=6@io<8^
zzI12mvvnpgp;r&q@x8+&`hM-!joP_->TXP;RR8^&2-lUNQ=)JXTg$`#T(G@@)cnf)
zIyKO5r|`R`-4De-c>fUnBUQ)z-NE>eSRMQKL$w9=f7ERl_z&64;O9U1{$XMTi`aq1
zSI;|h_#ODbDN(m-+J0sUxdR^<+Sm<j8Xhw8@F!F-9EJ+D8`!iwROI1Ltl&88EFpL3
zgFqWtNT#jb(5B~MA`gFZg~Z{*5^~2r7=VOy>VrR-tJ0cifAW69AK6L!oj;X#Xcxsy
zeB31y{$z*JaZ$^4CkkEra0vZ=|K93fxPQCt)A#e@c&jS^)kXfRTRd<7@~fY}Z@IO3
zd-&hp`JF$m?_;}hFjn@?Rcyq<#XTicCiWR!3UsqN<>4;*QbSobbqNgwkHn_F(<%<1
z2}x|oDJbfE?CYJ`w&iP|ulssu>%869imz9_LlWeBcd9si-tJF#raoV1Q~q?P_W9V#
ztqPY?r+xeJa=G@O-(C@{Yd7rrrV{Y=-E-c9TaN60?DMF(Ag#vp(V8FHo&87RJ?9DA
z&$T&kd%1P1zsuTx^?c8+|F>uVT)9x<&3p^JbLxIA<p*CDr0qHP;;P$vzd6GB50=;|
zn@euhtY}@$y-sh3)uy=pf~?u!)X#nW>h!;C<NN=TX$SZpl{|W8kvsRHLTbv<6J3Fk
zi?!TRV+|j4F&fI~wk?j`xog|83EJ&zF1|gbXq~lrv1!>BwZLxmxX8aOt-qdo`LC{D
z_hm~$*UtB*@AsA&p4WSJ^QcX>&emg>Ze1>5pY^+_I6m)P&rW^w?=3rzpS8_<_iA2s
z%-zX0`PVBx9g3a$Yqjt3Yw@{O+x|Vdu<4f1^qDV>vey}1PQ4a8)x!9PecF!|l6Fz`
z@1N;@O;_q$Rj+iE^Q-?7i-rF>MZ{Uxn_Lb*`z5qm%KWz1=Gv<{+GoG88rL552|io0
zd*(W`%Z+K4XL#CYKD0895q^_>#YlOY<i%8%>DqiHM;q&`)h!sLZ*SPBTUhyL_mTZa
z?EU^|*KnpCxgGbcKmXJ5$3On4)!XEKvABEgX(#u?qJ2Na=lux(AyjkI>iN<0`(E_2
zU4Q=eY0RxSpWF3qlJ6At*X^|{ZMk3e;l<8>Uk_C*zIp4+wX|(!o43w<dvf~AUtPP_
ztzU8Wj(%V9WA`53-nj<fER*LOf3r;f-8(nw&A$l0tM}3iR<6JLUFyxh-=99+dh!0&
zb+6x1Gk4fjH1Az&@~U{o-M*VAUd(jczwTewo!43QhyMosx%?`AdG_yrtF|7GpOg6g
z#pK?)W&h^=GtN>j@1K=C<@4RE*)e;MUCsXUZEM}{sQo`Vm&c{v4?lie`1*(MXA<Tg
zS+irxk4~9g%6e*bYWl);yOj-%`<mGP-}P(HPPu;F^&jsH$#S(klhfbN7G=-zKC|_(
z^`p6N@4l=LpYhsj$0?rcAAWBAxZx+euzlZY&T{iT)vU+Xx2*p2`g-h7-XCRm=0U2+
zGY__QN<aSDc{}F&;U71TfJ?^mBi(DZYGiCVZ5O__{HjAz-kz)b(vKy7Gf6xieq?gk
z%q@rbv_lq4KDf}~tQ_u=Hq+$v6506N=~sWOGyP_@d(KL(J1_3%E&g_Ahs>UPG2Umk
z9_cGy7n6Ce$I`g7{`=>xA3Fk*l{7jQC^R*3a9yjuSLMBC`;n?>;mwalm0pT@Zui*b
zdZ~A^*&hAv)BUPn^6+g9y5<$Box6Gc@-<=GoYsrFtqs`ZbdpO|d&-;QRke0GQ=3A$
zIPcmoEB^L(!PKI#Q<0kKOXp1O3cIB>@A%ql`CI=b*spdC>(09PeqQdKoanRLuKG-z
zdF<+o^_PE28(fw$Px>Yne(%+(TcZ2sbC-WOdj8d`XJ=*_uSy6xxbAb=-0iRT#6Hh{
zy=O!6=l?hT-WQxb|D-7NwC>h$o!Mt14bmM&SOZgHgA05YE{lEY|2_R!be47h5vi3N
z;nMb(=a@%*7rTG|6#MqV>vt5E{@Q!sK<JfSV(Ym13cnVY?KsM}eMeQ$oahzic~=a}
z1a2Pu(fw{^)rMCa*OqO#dO}qH*|~}dYyRe`-O(`S+Yq*TYgBA(N$JI?t8ZRy-CVoI
zJZJAisqNc;{ybjvSba`ud;Ra3!a9+suiq8)V^ddqcJaf-2Mdlo{%G8(`avb!E;Zl(
z_;vMZNB4VeIlz^E@zsy$&aEHMxU^?m)xK>qnzsFbS#ijt+d_eVB9fT4o!<TY@qBgW
z(&dKdRKI^M<?{Lb*RfFbr<H|7U(5DG7e7{fictUg@#CZ?)(==L0?*psTv?s9N8#n1
z+K>NBO6oqGdcu0}%CFxO`hs7|2PO7{$jL>1>#C2K@y|Q-@A5~sz@F};7?In;+O@H7
zZQ@tY$`wdmzCL!s<A;J;VNc?Z{1x7yd{3(>{q4WV-SuXb9bDBpb2gsNE!%lkZ@X$~
zahU`g`}Od*NAE8Q-MuzyOV-6z=Oarmtg;PzyX}?P>aysqx3eZ*J+{UyZK<JlZ)D~f
zt=nsZHhLY^64e%IuHSq}T<H7p`&&+>Ji7Q};Su@A*}~lq3QH3?Z8-f`&eMK$UoEWI
zzkR;>iEs0MeD3W1Sg%^8$U8g1_{-6FpD(|qcIgT0`|$j-<32ord!1L$k^LS|YVEmN
zf4p+JcwJ~pDQ9%T>i5SJqHF4sVwQHeSTNpxe7Rt|&Bn{`=QTfnY_C%GQ!01^qtJw&
z>4nEqPuAAl7dh{@><i29-*v0%>Z9(=v{Cq%^=aw{EenA-VgKiIge{-DoU@!LHeEel
zzFxO-#r?gEeBApc%z5{E_Ja>UraYPb@crL^9QONJ`+E4FZ#g{K{pY{81tou$Ju&>q
zZtz#yC%*Y*wm~iL^|_9httY=PIlKG8lONZfXztr5?bj>sz3=$-?}sw0rd@vfxOQKC
zeNExtmB;JSU+B+W`2P`0-QvsNdrzLu{(F4#!P_fL9F{U_@qRdd!28d}ndWU3i`$c!
z_gp+IZ5ttX=#xNM`;R63yJv6QEx9|gC+){l{$^*J%g2ptBcu;r5aY=`ctK1sU+|;Y
z#5}=NjZ-}u#*5B$Y|_~@sl%+>DVN7@YWVx9{<TFb^((mNyZ)K_c>SEY<+m!A&t1Ry
zbC%rJt9S3D9-sTw=GCUxdi#D_Tfg7>InMh1hTEZK)+x*PmRWclUlUt)BegxY>_TpR
z74OCD6MfZhb{y|Bzw$X}v26a9$Gv5H7S2j9yDcb_>7M;2qgQtArp1cZznpDX8<%Z4
zmS<EpdE@Nx+h<qY?YVW9LGJfQi<aXHt9oA@Ox}LC_t8e_{<|_3k?Vsccb~bDdQ5Nm
zt=MDljLNR(mDiSSKlkq1&AV2+tHtKeepApYn>Hus`-xAl&P_XcRV+gDbolLqQBxC|
zh1XrazOEu*+Ov|5_R#<KtB>_OtQC4McuzUG?88;Hx>K*Z-yQt(*ML86$D@}&y2P`;
zc-bC%^<!OD?ZU^lC41cW7xwdguj@JUc+Sr|-&WZEy?DO+K_-vRVGr&#NA6`UzkKUQ
z=Mk%|`P-NI-*_zi$~|)JiPem$l~KzcTFv@;Y0dS2yWXz1wz%W9J@RFhcIv++R<>_V
zqMylRH%_hFZq>KeC~kf8<1mTshitTM7CqV$ow_r0TJ+P;^@|QZ{5UmiPf%F@C8Z^<
z9^D6}zFSOhy_)Xcw|(~G!k;R7;R!0w`BXdRFMs#>O0C@G_eIyjch*F;oOZdxv~xk{
zyy%xZr_PJc-ujL0;u+DCK@<OYsMtT+RkkkM{Cn3CBlR@yH68WJi{{2$*IT4GF=p%Z
zsNa99*8bJsTK4jE)>~es`X{Pezx|qi<(Br&@293;xpn&Lt#8w>-1>a=)>i$MTl?QH
zy%ra_e(U~&@4kMGvR)jQoxWnL@s(SWS#NpH%<uYXY*?@M?0iUeen|HEK(Jgv#l$FU
z=e2Vkry8#)Vhh!Sh^{DRD?JwgR<PoW<JND+o1Qu9+;4a)y`hHr>AAq{^p#*!jb2!1
zz2(_j*5>nT8`zYE*Xm{+N?*0rcty<Lo+F=M`@gjJc$<CYR`XR5O22Z8y-7dl{pTyY
zo2vFNzc=;D?nzbBE4D8TJ34Ptr}iVUQ@ufX%um}iznh-g8n~{vD0fQs;uz_td5dGD
zug+T#C4KeQife9L{e#~IuG$*7wl}LhU~O+!Zpd%utN$FfnyuOzm}_@6Y^A+um#yPQ
zo};%kuDPu>%i0>ax;HBKN|gIr`+(KGQERX4YL3diQZ*;)^~$XsQQa%R#8<_vyKZZ5
zuPBw?I&Z->t}NX}*Oaniz1F&3iE>%ny|UDB>$Bi&!L4F}ui3BsV%#bgm@T+9EpT;f
z)Zr_)T-N%6i1`88wjhbXwdU4Gua_ULez3P-*1oqT)fMyK-<LNJew92W%4_AT-}3i8
z=cYF)uPBx;l?%|cy0T<#NR;=|-z!SwQ@xBnGtRuJYP>t7XK9GmDvAD8-mYG~E2R2Y
zN%aT4k$bh}#7aT0HA@c|@q9ng8<5u$Avf)}^oEFO|D~V&XUow$e4}|rg@7>st<<lw
z-1Aq=yLs^b=Mz?Pk;j#D|9o`U=KpluDyqI=+3bv6ozqsY{j?_Z*4j&c=UY2p?UrCJ
zztmfC>-u#~gV4FNo`qO*q_1yoez@Vm+a2={RO+9rF5D}4KGJ6W!Ov1Q>kk&I=b4{s
zkc(M&ef{$}c2|o(9r<Co_y3-#`k(71b}>7bC%n-7y+@Aw_S@InzkThfwN?66v)6w{
zy8q`lne(ihmOqYk(=#rb$)VmeC-=%@{jztv{g3Pu-^HbT>eUyq8)^HzYW8bS-(9qG
z$M2ZG4XfXaem7HoXZk3vw&caDE<M#nr&-=yNMupU?)tng>hUU5zY_s^A&+|3o!X`K
zdexktt7;2&Yafrj`R-JidIf*{7e~fZHXB*D?c~16XC3nC`P^&0h0_CPzo?eC6)%i6
zzaDyiS?gBym8<*%L+^gqGVYn3c!%fl*SZDwfBj86ecftmL$*}*YyRl^9sm5cC*RHA
zb9m>imoabGY@B57eNX57tklVoTxps!o<?q-a`w}V$W<Th(xx5X5cKV~?uOm-Z$~~|
zf9<om)%I7l_NCQ-ww;Q<DH@&dUGI3@rL7`I?xd#NIx#otURKGi7bOz}GQXDY6u#sA
z&EhK8vzv*}LiXrZ9PM6Sp>deYRQLMKt>@R&uJf8**m%o0?s;9Kq`1oJ|MfRsoe)$0
zpYdeI#C}Q3FNb2iw@%u7Mc>V)?SJvdf0o~uT>XCGZTg?E<ZV*MS!Xi-?pu|!RPgbs
zV^gyy>Tf$$q`jubb6u{$$7VN|t#`bx#;yGo7kjriZ0DYDRWYSsoVP{=6oiL{sc$=A
z7Ft_<R@yZ?wDN`7FYT|_cg-{WwdmG;K|YgR=U=oc#VkHoKJzK3^}PR+Vxl6>_soC1
zA}VlI?f3I<|2$8tJ+x-~jNCZir(3pO-g<Al(*AA7{iQ><v~Lk~RqncTxq0V=``Vw(
zi~M{J@O@P%xb!aVsayEH6Z!L>Za;r%bCUZ+OZ5Yi>*Fn5$}4na{MVNs;4BE*6Faw}
z_f>tz*0>iJ`;LD9_^6(J&WHaqtoc8zT2=CXfA-qB^8{K1I22s6G`yxB<Zuz>R&v>(
zc!^U%MW7|YvDvsm>4imvTi}|-3R;XRTtTiEnspbd7I_o}C@egduyFdD-?z2h+pQnR
zoIbPn{`V(8_iI<bzk2<5{ppjI>JNf`NA6|5XD;NSvQ>LU?W9|xSJo|f#+fy5!L!bU
zvT6?PpKDD5ZrxqNQ{ceC!J4Qb<I><Ez?vjsKa0ogTrK14atSb+Avn$8kdRIStJntx
z5Gt@Q%axz@&R}uKhRN$UPF{br{D0N^KVL1Pxvi_N965NfA}mz;3Zv(TWvn|Swk%v;
zmJw8afwAPty`@6kvR{jy8&&;hlM^=eunybTJoWv7Wyb_<)dXD4-128PEc+JPG5P<L
z`}_%c&36yK2{qaJ_~y=A3;2Fi`xTt%tF+u2eB&y|FT138{S2Qumsqwu_N>0Z7;{SE
z-v6CE%a46Oc-_|QbBVFPIlFsJli>Ub2J^!HY#09K_t;(gN$(_o`Qs9)?2F%6*tac}
z&$mlmG~=$}%FLu6y60+V{tP$x&-E<care_L(dSO}&n;KFzhT<pHH({sKiUcZG*ka%
zrXJKR{4uWk`)SrMU(VUjd23Y_<?e5P;c{S=m6yNz%a`pBZq8e@{QS$8pXIAJsc)G5
z^ZoL#eo^n2eEpd4tbCu}^o@O&zZCSycB|i7&-<!D<pNWT&%M~GtTnmcRUGOWe{o;9
zFZfG)!Tz^jw$J^yZLx6sn`$5F*@~AU)=f0|ZYjy>*68_8+o-j6zq}2@rh_3HuFut8
zx`3x9fB)v(zBz2^2O<m3&0Rd{j_xYf49=*=YYj1hu}rrbwk?p&;J0e%dk}Pi^ABSQ
z+w{hi0?QXnyPEP8SYsI1vD`fvx`2I$R1EVv*6WS)9#mc6zQa(}Y^NaFGx1i|-rtSC
zF2pW0Yv_HT{K4?XlXao<8~hKZKPcAm5nlQ5nYVAlG*4Xt{;cL_3Y=RQbRD(fy6<rO
zYN~snR-nB@cF9it4UZuxSoL&mpjz|pgSHRi3|c)N)qP+%!4~XjT-j9d!1IGhh14HW
z8)mTv^8-#F)GD}Z*zDNj8*C=<n>FhuXe%U7e!GA{gvtKKYrV&FrWc+&-E@D)&y@n(
zPa77<%wbr5M|I9$p>uVd>HAwY$1BZzbb?ig$;nZIgI!QT$fYqufO%D8O6T;`j<c%m
ze;0s}!OU8T({??n^2avuC*N$}SR`-jQ+Rx%_~RShg>Q~pd`p_+Gd*G^qZ|`|^UMc=
z2Ha=Z`kRg)@XAzJeITx!OMCXAQ_D7NS{`}RDQw$>sk$kt+>tk(EKm0M@4UH2Z}!#H
z&AW2Krmvk>&VAM915*X(9-cVH^-cR5uOE1wU>Ct~kAeH(><79Z%pzEd4kT@0(P4ex
zkg6cQ=e5|YZ9hJiJ-H&Q8GNAh-QQj6Go$q{On+_o<Vo^fp1FKRcX}S&Z`|Be&wkD*
zGR1rH$$8s6I&NwertOYN;p#Nsf28QWs+I21dDA>6-E`l1|96<>slzuEbIpRQ_0=E!
zeO9|@$u^nCE{iQMX84)R67GHGviRowjC0DfgnPHy8!nJq@lfpG6r~wKEWup~UV=WF
zO`5I-OF5Q_fCZ1dy#C}%_P=HC*ZCE@FV<XqamvLab;GL?24YK^c?|e^*k>j%?cnxd
znS94E<0{LRET$+^#<jB=!h9VTS1ky%y|6+qBZS{%6}yyZr<?1dz=;_lDrn5g|INEt
z_@*5=C}a`A#P0ndfm24Ov01fX14M9(KI2>OhHlY<jZAuB2aa;>h+q`gevrf(vj$o4
z#ozaLc3-#wLUoVJ-R--}^c{AKFSyHn;T>zncP5kHcE~7aoBZsz$J2gqyje#FX6fQ1
ztM@IC-@$o@=imB${6%|bcdw6VMnNZzhCg|vUG!0O=Z~(KudOaxMOIV!&8pu|R5+H)
zZpHNeu8iiC(DyGY1l+ziUaZww{9a+UCv$SbkIFOG9=}Pq*?s8U#tpl*-^h92`6zDO
z*;Bi9_rW!jvz|HY97s!=zSc$f_EIw+dzQ<+Hyw3?kA4%laqq~#?|Yr^*!P&;QRu7Q
z+|m#rz;?)yrGq6<LF!0Dmcq5YGHlZiJP?wIVQThHDCksK>^r^r{*i>8&TdVC36n~u
z>C7;Zyu<sB@q1NST-3?G4;Ux#E^B)E?y3>94T~I`@j>MTu^GH_to@D0@9O<Ooc^-@
zS$)v1^(VDHNd7$k`~mj__D=`XHn8Tf-ab$kz`)fg|7L1k5Z9>#-!H}09k7#QJ$|6D
zfN9R8WkphR7}F10W_tab;ExxrU$uMvDsBhf0O2EzQ3`Tb*h(FkR=nP~Oln8|sx}3|
z7#69<V+%MlxMnpzd*D{S@fG*4#@PqXHq<!Z<;r7zBKxY$AfjsZ!lKDiYTs8qEZQoi
z7#lL{&azE+L$kCh1pWyA;q+m?e30jZK!wB^mi`9!m)U*0Lv0!7vG_MGKNx?|_(7!6
zhi&h4cPV?6mA@7_wOV8S<bS)CZ@IMBA%45P&P{IbZ?6oCR?BI7TFIs~6yD+9r{8d6
zm-WW4Q`4sIKCq^^dbaJm<v%uB1bd0>@6UO}V0qJVWjfzOdH&tULz^t7s;jcJG#Lo+
zDLJTgFkMt&3t`?k_4bFtY&4YMp~rKwRdJ_*ig??TLlagSq-Y`YV<aYVI~OG)DLQg!
zLWG16w{TK|6OT_vBd4K(BAeQS`3IaIBpL|YFr_u#d=U6SqGC_c;xmQY54M%un7}7}
zDbd*~$D^J1<tLr<&zdS9uzpZNFXtRozOhAc++)da+`e-^hYp+ffuIk35o|>VcR#S*
zAhU+yee=|JB@yPaVV{3XZ4g_-EZ^`of%yi99g{q>{0$a6#`#U>CB7GbU_HV7Gr{-<
z)3&DE1Zxe3)(76V-Z0eF-S>=S>2l=c*rA;w{)4NAx2)Orfyl&jnFVZfSf8uNJX?17
zPRWefe8ra&^Q_MJw(optU@i+6G)~B4J9D;Sr=)>7^Ru)AcX(#ZW-NvXw(Oi~U@rVD
z?a&>c8M8TyjT7_K&YXn``ZevGobXO%hBfCizb0gLE7=UMAH1ad!(P<t;JvU7+eP2(
zb?PnJzS=P3U&<+Pl~*7?gGr9z=9z44=_vBs-U%~b8J@ClK7KI%fK0j7n)!UMmmmK1
zazh=Q`O5Z{4!ib&-wCP_tYOWj3Az#Nb_}oY8vQAdtlPn3AJZnUcbI>=ro7mb=k_Z%
z$3JbX*>Ll2e{1KVLoSJlVTp;0HW;klV6bsl{!>n!(>WmIt#U2J?AnvCH7D0bOio$j
z8NTLZ%I0ISx!0OXr#?;F`&+KAy#3~bx*W4z{mH3m35kBQjEa8LZn13Wx9eDM`($6s
z)Q|rTKP@q5y|(PYEs==XOxeK+xm;^}8@Fn1Farr*+q$7tHz$@m`uZU-^Gr17=deS2
zrW)j{o{8q{Haob;cY`9k*^>ipGB+kLOBW?L^W~gq<h4W+<Sx4KD`?9;k+u4+ue~pV
zm{*?cUO!v+hKG^!=CiVi+jeXFGOqr8Nmp$V$Ajg|!{sJRK2ZE%FoRQ$ar1$k4;mFb
zX9{cAEYn~8@^sd(O|$lancZ(cCRW$nkdxnbyd4*FBXjMIM!Po-@?{J7tuL_Oeth`b
zj}5kVIsN>&n90{K-Pme^M*)%v$=ic(z6~j}o_g0W6)W>7*tRlTQG{*%!849&`aBj{
zR>*bPqBV2QA(NzkPmlaL-T8C6@bUBNediUC5NF-|T*i$xaMT#GOTYW|zBMcw-&6g*
zls!6J<M%bv?`z%WwVNgd*G>(7>$&EKoO(6C`tLn8-pi&tK+uy(4QIU-E_*8|fyw>e
z2mY%}c&Ykew$&rf(;r$=D-IdiBudWPz~dj$rmnJ^Mc2Xm0+))n?WVm|6^EQ`5*6od
z5b%%aP}eykEcS?#`(sNhOn5@hd#_D<wNHLqr*fNn!duo8-<VRW88_`^xEa@wqwlay
zTmc~*KIv_*+HGmyZRWFb@=b2ud-0&YH`npl^`@TntdjBEM*GB4YQCQQ@oMtNtLl$e
z`yUIR-?QFMGQQSm-!F*7>BpDYdhhkRy?0w&zWCzqi!bhGe0f*@QTMv+iC<O=4C_pe
z^&k6jQNmv8v3v5Lj2`*kkBbq4vmUuKw=H0FzR;kUQoH-aud<0>-zvSn?Rsr{_nLh1
z$oqPm_Qk>_oT951>Mp)8EimJ>#+Fo(TSi`flQQQQSufC)y)cb0!<&7}(&kG-tI&E}
zd(KBZ3<bBD9j-ZuO>?InYX5rv*st{DzneGyyBYC6XHC7?w0bTibn1LcB4<jX_@q|V
zguj1N5;-I4?IR=nH*Gk5;*j3uy(iE7@=}_2pkMvN<j!72VQ*D1I;#ESYlY!2-IZ&_
zyRW?uUdJMR_u(()@|pi6a*Ce6I)ArfueaXS<0tO*316Sb@cfRWnqQKybosu_=XyqO
z9oaA3jLo^`VG<c5z2~I$hLXuQo37tbOEmZ#yJ?5OjL6P%O@+z3?Pr{v`QWt~oBrne
zGDi-}Jo=aTUAjn<eZ2sBt3IOK^kb&s$4tX}nVNXe&8x@c_Zz-5uS;7qBVq+kWU*of
zKBVCwBci~^CBV+w(ady2hcRgygQ0iB3{{6SLJDb|0-ISnB2k2MHch^fqQ3E@U()2c
zN7Sr4eanPqzfm!}>A7dal!`>njfa9Z^?&c=?CRj`I-!;K(B;&}@97`EdRw*@)zoV3
z`?tn2uJXVf1!l{aZ8L+Xs-JmzDyjGwuW7pW_u0jHT`QmLd#z@nIF)@)!1mq3&)O^>
zPF0`NaVkmu5^w1ut?$+s^SXo&|IO0d$!S-iIqla3%_-hJ-~Y3(KiqT{88zQ@HQ3FO
zCVudZ(u~+I|NoZfRL<}Gc=Nwb0AKUz!~#nmz4n7oHx%iunZwPz{qTXe1_it8?%F2Y
z7YzKm{nK58Z1bK^hv!tLZ8kZwzm_*!PWbFeohI?kiFdSio>?=^@fq{WjBDPquhtnz
zpZI6yRXkb0Hskv7oL1Z0OJ?8HGxcfQvb=wNLL4)vdG(In;ZcXS+kIF&(^BF3h4*a_
zUN2oM@zVKw?koG$<1wc;Z`@F{HRSQV<uSS2%s$WGC+XBXQN*uo^OnaUyA2NUzVP=y
zwtClPzPDBf@4m~pp0(xmgui0*4=<8PU4P~Is@b)*+ssO58_oNE-~ao`qgQsctUf#G
zP}ZZ0YYnB9^S{1)|7@m?XWBaHIqNDM&d&AU@oUbl?7Ivb-w3W_ib?h0317bRmrIra
z?-H!&LNM1w2d;|_T{~T~W-=ZTYIbDHj`H2Jao&#~&N;3--j+|Tp0b<K?M}K~Li_c@
zOZe|Tb-B<!GhOU+ysLcn%A;pyr1xA2h+eYsmR4@$(S&C;QzaeNu6p0T<3^pmOWW^-
z-y;Qzx9>h~qdfP_=1=U$Rz6^vb?DO3bE%i^c~0B5<_%w_LpNK`<%x68PjYelbxitx
zpU7d3)Se9|d6s-tc*Va|#%<=&llg_^LgrJ2jpuH9{%dK=Wv=<2-0RD1Odqe5bUe$I
zC6nm>?NG=Y=6k=_d|#=v`~Q=uBS}x^1n8`}m-SmaVLNxG>->33m!FTm!+h_zOy)%)
zUf#`Hx$iDM68-$UrNCZ!u49JZb!<+geYbYAKV+kA@i*#AZBLl|<$RI9^IYy7lKaXY
znNewHy>F&e^o+A%Wi`^p`b*kZMb2@p&wrR#|9!{beRc15|5E>?;w_XRd9cSRvvSU~
z^i0Xa5mWE2%B(#0`*&9iXslz-q-QA?&YoN_d$OasdUKxN`R$jBqm2c`_$Dc)X*@MJ
zRro|!c;@-L@3NmUp8G2K@=Rq};_+<;Nt^E8&VAQiwuR}t_ZREF6JJX{^xWRezTKex
z-<y{X1}A>2)t*Y65*akTvic2I`o4*0O84JXy!v+K`h`c?qNZG0q^IkZ88}^R?#kG?
zhTm^azW;1q;+@G`bhfVLdQ*NQympnQ;g6NeT#O~NH@ZtDa`qiK?xEwxB=(r;%>k*B
zby@$rSETMJZmHeVdjD7S-7WV^Qq&4xeNVXj&G0>QPsN3`8-9H-ee0De?)m=Vmo=3^
zNB&&C^S+~Rzp~Z8zK-wKS@ZsWlonelo0k3l>6GsqgMZJw?3nb=`Ag9aUHAIz+rjse
z_Q#hqe3s%-GkkpV#!lNeALIOXh`imReNav|;V=7L{XN&uyt$Ds@tY@kKIghMe~y3m
zx!k>M`m~<-xp96MyjAyB-1ijo<KI2A+0Fmb6E@HwljbGockKKPIR>Fs7qWHsZsV(a
zpK<@e_ug-<pYt~apT4nj>x+|WUzVs>6*X6$u5GHU?=#H_GgbO_L;7PwbW5MgV&#*5
z;g4PwRN2YdSj*a2=YBsO{nGLM<lZY0XKrveZGF_d^^xT6rde-um(^eR{r-~L;v(gJ
z|D<bvU;ptb|HIvQYtN~vbIRRPS<Cwio_9=sQnvVd&#BmF7QYMIuBAV`ZfSm>v(W#+
zcYmwEcY#^Yf<H^${^mR{@9DX)cP_WKi9R!VJU21*`5mXE4zKnXbGA*rqNNhHVo4g;
zopUSh9M_oYqUb&|a;K$hWn19+MY5r~=Z&&dFCGs}i+R@)>}J%h@h<#p$uv<JXKSO5
zXupm{)0MvjdFrqGcrWo;udG(rHTR5I&+O^b*qe$o9=;8JD)VeZ`?cQ8SfAIA+jOp;
z`=|4(jPLA<BkOm*vwXIx{hrk2Xv4j-<w|#$cCXU7{@%sARB55}mzqAyrxo*#T>Vlp
zsglKKX-3rCls65+hu?d?bB*ggb@s}Q^A-2}L<5uUYpZsLxX3@*@xLN&PThw&8GpH-
zC%?W`yzrg=9QN!#=I0q_f0O<$zwCee_qnG3y8mwTuPd9sbe6EXpr7uuaCfD-yS{|=
zn|=K_Tl`Zs^E}fhk;?N-AMVmTKkMTf%d(?|k0ck$`3q~#E>gSbClkK)4%c$C$JbL^
zs(PM$z1r}bcW1re_t^#eHNU@X5B`u<t$dyP+6T8!zg8XGW8!~$PQ|+`Y^6&WKd*K?
zYxFDUz#o&(m$zsY3su$$W*qseb|v%F-n2jW=4=gLJe{HVYuJjpEYG6CotpMmtYtoP
zKYC%A)aNyv=T}8#Uz29fT3G$@%uc?)*HU%ATKxUhQ@U`w-aPXsl}hKOKkniDKI_vS
z$@8-}+l3vxd1cZ4ig(x8O7G~;bXMKH`S{B7k#Q$xNe3)fECpNaGWXb(OsBbNS2Fv`
zKc3UP^)6esGg<Cl-`o_r!ZXTUl`gmU<{l{(-rcM|(^;mt<CC9jPi*zw2X^6S@7=ad
zz8-t^kw?L`sHFP!eg|%GeS0teg=yRNi8Jo6lHQV~o%r9&zT#F$*1zQ?E%%}}zq-Ft
zeT&~D?tihd3#XsnBl<V}OY7txXXZVAe@XJSbW+{wdl9SWxy029cw32d2g|R%Hha%6
zj<B~`pI$jf%r{vRr4*(+bI&gYu~Lm|E9}D7npb`mTyyK{ldJ6;d@>`px~z%XBphBj
zM|S57+027|TMAwk%zdye&3%>O>asUp#$`)aUT*l!yK=h6+-?Wub<)A>Ils;dS}*x^
z)?!n^6#a`&WHnP}8m3G)?X-B@VK!SJv_viJ$BYhbF)<#c)w?2GCY_ueb!zILEmPx)
zCU2P>{nYH;JwKZ(uJ5KCe^ON$Bj&kGXPW4rZC=+-#zdY!-@Pet-<0V`{9E?=d|Ms0
zDeh|U*C!oW3-qStU*%o3U1;j6ys#+VfaZ`LQj0EyY>_(b&pUPDvDLG(HqBc7=<4S`
zDyzkR?2Ora#9#dDvMTS=(AQVfrY^eu>YG+*`IY*Bza^Xe!nVK4vvR$=Z2cwMD{p^E
z)%Nakj$dBAvT@h;cWc{T?fa!>>T`e9@6{%??faa2uQ`7aC|&M%S^27jZB&2Q%c>r^
z^+sP@YPZi?@&2muRokj*|2EHB`G3*;!2Xvze_4LrQWv{_@w|&We<gq2b#KZ35bZ7T
z??Y#QVXTeFz3%>Hdsh3uxcLFrUo~spYL~_;XZ2q^wjxM4E$ND#aCX*;e4ja;!S`oY
z1c%q=OU-I~)w1)1Nszj)@a2%XW@ml5ORsG)6W6}J#V~h^(OaMDwZ86`J+0Ml#;iN+
z6Mos(eTMcKQL9rW=66fCyiBZmA#wTkl2=*J(k{oxC$P;BoK<nW=W=J-qMh#MM*K6_
zOD4_CTJ}opndIj+d6{CfkM7!9d411neKYMdT(zB%nP#ud)b78za5Amma!vJ&$H%VL
z&JkEX>)rb!mY!8RE?<4Q>b+yINJq%Yh4VWl3-2G{>6ErDOxe|QUSgVQ+&p#haPzOP
z=Xv~7UYC78R$S}r6Qxbxr)7k>o4nHUoErUN@$x&0hf_*6#PLYh)@G`hE*0HXzB0z|
zO0BZhiVM3NjbwOBGJ-?5OW8el%G4>mG^@~R;rwv#_${G}cQ&WA^c>88UAJ<t@Y2&~
z|5mA<inzT_?U$V6oOt(H9=av}_%DU7n~=R^{)EpHxbG=6pJZJ1D(Pv2r?cmTWkUMX
zJ=kCB+<kCttHI;4v`H#^Q#o!rRc%OrKewebD16q$qgy7Peh^f?(=Sh~h&5BOHbq0{
z)PzFiTmDiDpGW-MGj)CR&Ksw`uf1cC6yY}Q-=R}X+TLq)wr;v}YO!*guhh!(RhKff
z53gO5mO5u@se6xv`9YPan`cg43){AR)8?snFBu){F|%E>=iVvl%g56DjJHQwUO4qI
z>|W;63hm8qzA|Qqd^Q%fP3@1iynbqb<j#(BZ8M*St=m}SeC)@`$7j^To<&C{q)wa~
zAH7pwx!9#mbNi=iZU5>^f^vQ(PHTI%ZEBlZx+W(fb+QlF@}*OA*S<+f71!P!T^alA
z$d-?O^4j^^iVm>6{}-U`9yv4dsf+getwpa?zTKIb_%ug*{+6P3Q}rWvCS02Faq%42
zFul#6YPGLN{+u{<zOR&dQq$(6r((mVMOWUMtoShOnEx!BnjjBh?dYhR*G~C`m2KSg
zd&x;*wbq#QRIoJ-Q=Qk!Og(zW*=Wt2jHi3U{I(XgP2Ie3a^v)^iAUc5^sS!X^OtvN
z6Zd|dx$%mx|4;7u<(j!cQn29H_dm-vB>dM{{hw>)+gGNxmEl?$*0z%Wv{T-!pHTYW
zGwiqMCnjtCWbe{>U!GO}+xsGZisFrZ7Hcx6y8WpR|9Eh9yz#n2M*lbU{A9h!@%lcy
zys^Y<o49w=R(>*=c-Huc5qC$?G~tIoROa7EoBn1pm!;lRt&mV<zsv=*R(gl1U-gY$
z{3~Sc>Q!<&uh~u?Nw~@R_WLQl(CbzkUqzkgjLToC<$HJ4Z?%Z~cO>@Mt47!f>wI4A
zwdm3+qaSxFwIjqrrz*;>KDFWc+m)+2CarpX!tdaxu2qFf>-po(^G!=%ed@&$t#z)`
zL#A$A82UZ=J<qiHtf!k2BxTIMSv+=a5`49O8sp)smroRgS)G5}VD;?jsz)<cpWXV*
z>hk5s?duk1FQ_TBy0>k?x|Pqani{@X@u)<^Y<ZXUk*7jy_l4dss_fY}#cHizci6h3
zqb~$xmHPTF1qv-%{rZ*As_d6hLd#xfZ4$ZbVLpjt?vlwWm%gMt(fGCM?5ky!m%}!G
zTCi%h-W2;)DpOUAJ3`n`IlC->{6ui-N~6?myS!6RF3#FEOSfJzs@CtBz{GnR{;zaw
zBa6P;9&vmBQnRW{=lad6RckI7f8mK-nf_|#CNKN7^QT??75R6~8pU~c6tjJKvj6nG
zShx6(gU)s5KBL*!f`a$w<Qc3?n<ANeY*vZ!NguQCGk*JQt2}bXX!F^{&kR4Oe_phm
z`<LopA-7f2Umo@QYFO(s+r&7iXXoXfi2_OcJB89V`Aln>z5DFlC(PexRYzK0T;L+e
z>!)r#BmLRN&Bt!_?SEg${9feC(_7ZF4et7Ff1G2L`Nb`Mnf_x>@w=^i-z}`(aQ*u0
z*Ee5F-)s-ax}I2n`;~WTdQ|+<>Q^CmL%%<&JF@=0tN-Q85??j{ic~E)ditc41@By!
z=Ss^bUcQm}$fR`E%{Q?#LsLwX(&L}+xoN&-*5rp*3-+wpzRK<I=PZ?Z-+ij<lNW8X
zh}*Vej*9xpSFPrGbAnHImS<U)&S6=;F8KV)_o=P+y{kKwlIKeK`6fLHP(Q<2t~AF(
z{ZwaJ(wr>6HNkgxHdygl|5XV7a4SRUMPAC{aI5e`48C`wj_Vk3pH<p?q$b7A%x?3^
znj|~Z`7_U-6<0eyWp=(#t7XzY)B7{upXGnH!ZI!X@vQu3mmf<%<9+sNTjlIx^?B*C
z_ayqn_x``~yC!Sz*~_76TO*UN%_@Dyy!l>DhS`kXE4Q<~d}rQF|2CWX*#b)!>-FDR
z(-`;an{dCZofzrz-usMD)&CPuE>>F>f2i8u67%VK)!&(=H*9Y^TXSyvJ#*s!qfvYJ
zp4<FZ%G0#8dzbIsb-z|eU!9vZd)}JmuiU@HpZ)yIck`Lemap7OjoEFYdZ!6&b<K60
zzNtiP*OaxJ_r5o5ZWo-^J~3_GOm6l)vOQ++XOw?niISZ@*(f&cg!7MvnV&k&OuG3=
zBl7+Hj~w+AEkCu`X!@VL{3-m;;ms-g&QE-OX0rH+y7)=cpNdw7{!?3j^0krt{f})r
zQ_P?0R?e=mWcT0XGVPT0lVdwSt=rQcAF25Mw3pF~tDD@eJxaAx=>8XAHo?7KMgDQI
z*-7<JD{Iu|pBA6g&VEZLI%Rdv<hMZztv?paKDlMR)T3*u3sc4N^-r>I>Q<+$pE9ZW
z{p7zz4t%E+Ep?uL;+^-pqelDw$?u<-!=6dhy<y3=RbBqHXU^2(AkB5@Gfqzb{c`q~
zv%kcOp4~2~uiY)@aL*=y|5EeGIqk0!t9HmeOg&#Ea`W@tC+Ct&cb&WN_)EpymFh2c
zpXe@sr4+lyyTsxBrTCZYzvk_Ae}8r9E}!?8f1jMe|H}E-20inMzocUm7wvfyS?~Vs
zPqW>s{+Ew`wb*%z)ke*~nEur=_T|${Zk0Q?6#8^<s?O&#7hJafWqO{{ec24QnG4fq
zNT$CtGCt${EYbL~P3k;j{TWN=yf&Kb-S^vWXYRh6IooEeO`Cl)kIQG_&r5F#^vZWF
zFx|T9&Hk-V_@hq$>DnpR9p&J6*L|PL?0wFE(l$scxnA>|GJ`X%i6!Cd{FLdHmuxhv
z*O<NCx^2sqqRnTruGxM0<a;w;vg&}*mj#h|VJ8$%UoLuXq&{=<g)G_hANv=V|BrqB
zZ+nT}2l<P;>aXpVH+}!S^!@u=&tKlZZ~8%Wb@PAos2_8d+k35!ikQ3W2v6ZPCev*b
zohM1Har4s7?zO5|U*hRL)la8TbK?<_muut{tX?gg7p#9O;p@CxI?7*M-dql`^|n{{
zk3MgA-(|McrUTViJ&JtxWNLQ%W?yzQn^oq*J$ubH(Z}Z}ecWUEp@Daa<VR=sXD0LI
z{T~UxdEfo^>a7P?qt-F~sd&FBduf#6cke5zGA`*?C3E+L#hwnTUK#gD;PDw%qxD_S
z#6CNREMQw1c+mRv`Q4xU1&_FzHA$>Eev4z#{CDh!^Db|H_?!I&qmASe_J_aSUrqe+
zuVilD`~BYcQ<Xd1?v-!;x1D2=epI1#?b5<~!h3FfG(RGA??htRlLG6a7Fo+neKM);
zecP0)>#eJz)`i{<ZPW^hUnP5Lec39d&^2Bm4sV0vSFXRBx7Gb^=+ad_Z-akdWh@Pl
z4QdbFnJjZ$#$5f3XYr{yX6a`li_e8feZRl+`G%i;)6K8B?%vYtx4L>J>&{li?->V@
z_1$<K??<TqGIKa&!Tw(M+q`A20$bA_@b6t=>g5|&E^L^-I>+XPj;VLj)y1z2SFU@u
z!ZPS^_0iC*MUC$l?tOi={l#Yg+)1}yaer-9xp8CZx~~Vnu4T{9R-Pee*0i(jr>gPc
z`y108@BOilk(_n;(lH+9gtPjo4e<%Ae<St;<=ozWW8>yCwsUL@`YP2Yac&EHo9J(T
z)j4*3)TTa_u+ojX><2X0%Pi5`{4`-|&S}M0MbUh!+Fwp3u3D|zzB+H4%)+3Yncspd
zm+HE&l-nk=c-_WSHk+@fe6BL79XphEHZ=QVT>AbaMVonxHe_|nEV`xGzUteF#8u2i
zI}Sw|Tw8j=<WtC6w^jBE?knG&FnpzzvTK*r%*N0QJw>ubO-lL-;=AN51MfD}%#(>&
zUAfBq6RXjxZI>d~O?dsp?WMl+Q@@!C-%rVZ%;`V8@%hIH?hk&aKe)aAU^9Q^_K1U@
z&-}`b<_qf1v5a_nqo^Y)=k&r?veA6O-Z_>rx?7)eY&|nAQ|tOP<*U25$t;cARQ++&
z-PZ6odV8|UALf^dKf4`UarWJz*Ja{jH)1OezdPi#n>)WMd$XC|$!WD6qN_Y7ZJDn3
zZR^6UjIcd-U*9V0f5r0JTI=ER`|rM#UE0Sawszje>eQvvC0D$9v2R7x5B}8BnCP>n
z-}Y);d}Uo4Gxs1z%d3pq#=h%cOOo#%dUpE%$v@)WdBt1yr`J4;6Z;a(_tpN1qkU>X
zoP2ZXF@LlBpBe6Dn|%DH8GbI{=f|nmocsQLy}UZ{>#pEqp?B9!zf%^q*Kgtf(6v(=
zoNw;^d-F}o^u3CTuZ?+}zo}*_9*c@hlIkf<nxHz<bDP-IwiOaC+g7-6EfiQZC5Yqe
z_OMNAOMc9Ad|JEu{onZerF-vJ@BJLJdCu>7#qWMwKL7XkT<v^Gv7H&0Uqte02=}-N
zPGoeIP7KiK;!Q|QnGnz3&S~txAnq1c>88Qtb@0Ffj#;7!oEmE;cBFN=cQtjp>@RbU
zQDhXb?=WZKS8Vi;{l)6BMv~{?^84?Fy$+{(<ht#RDSsGKae4D@V?h(HdU=P&>y7@d
zQZg#q64$q7DQ4aGT+?|mXM4XU`zxaZAMb{0FuxG_`D4@M0%;ay{halTUGfi>n$M`b
z`St^&%AWoDmrk^HxPN4{DKQk*pIx|M|LX31frGcD`ya8mGcR4Ur{|iS-a!=`FCKw~
z+&3zIhOu}k@3HTE;C5i=1dh6WD|j0uVtJp7MubKS*EneF*|{{Wx4v|OK_LD-<BCNg
z3?>`?+}J&j*)@OFsuim;S7p9qU31MMJGnKA|HJwl@#)>))guJ&)QV2HU0dj-QJL_$
zOYvlWS8A}w>ilhMKKyfJk+EyYo5D0T##%dojbjee)0T#!FbP(!)+eU-cig$urIThW
z6D}caQFys#)B0(fZ{1z0^|~P={AkVQEJqQ6bos(Xw^zH{_HO=l^2NfH59V;#zkPKi
zsn1$Ye(!nH@I+B=pVG8b^Q^794_va>uI`MVch>8yU|!2!%T3(3_vigzu`lCDZeQG9
zcJtp!tL8Y{26}xEG0J~u_Cz^^p?z-BYsD>EQ`K9am#uFv`WNtj?+@Xk@BQ9Kc7)1q
z-Ts+-&9!sW`wDZOJ-Y7KUzHwv`c?Gyi2aM7n+cb1N~zes?u_t9=fy8qEIX;_x$xbt
zNx5z-51ljlc$wMHIQik^cJ7#koW^N6dvhmk+j-^Mq8keqZM2rT%$zoN3oCz=;QTO8
zpIlZRKDIisoze>XSuXUPNjPF;VBqL@fbmkpmF;E>y<%S!CU!(mnfkYY(PgPZ!9C^!
zmEnhe{?s|%C!sI0t0jR=;-I;N2$RHxRB3@|2407`ZOc}=Ft5H_`0rl*i?w@%w6mR$
zo^as&bFFAeSFY0r<~8^CG#E3#e&OV|OP8gC!R><chO@m4%AYq0Z1@*lbGY*6+O<3f
z94-gAXs%lMk5jb3NOIHR?0<9r+9n5v#CUYo1eq=sxTUyj_1CC9d-LT#Khs%$?3v5G
zM3!mEHM4t+Tpr(Y2wqhA%GfjfU!-l%kvt`>qE9>Ad`_P5FiQEj(Rb3$E0=8~KVMiB
zt;cq`sK0Ht)!ZtrC;cy{#c92*N#0)aJ+1c0ndEO<I-j`yEYn@n(b0Bh%{@MW!`=+6
zW_!Al`?h})J|CCYCmNENQ0T?m_1C!XzgWs29(RXiU75H4yceHpc+?g6a=($+^@o4|
z3r#ZDN%5_|W$Uz<rS~qAtn#Z<mkTd>Te*oJ-f6nS>?TVI+bMy4v+lcDZP|S8vda^@
z8#lam>=Ah{w<6?gmBGEqtq11|d8X)Z7Aof`4=zsYxW7vx<zBkzOi#Bst*+7&Df47m
zo*h>)+|3gy|J5{S#p?}~-q*B`rfEKLc3y7u*?*PpGJeY{qb08^zJ{w`)!FuD{&o4Z
zMUwl~qkpBH_MLjP_+*_&#Ziy$Z63V051wJ{FfCqMd3N7ceWxccm*1Hn>nWgd<=ysA
zw{Na1TY2SuLxkrfr`B@?C#vUPsBBbxx%%j1&9LoXL{~gj{Mmhe1M6&0!M4S-9?hJ`
z<Xo+_#3s&3sdq<`(%vw|n>-Wb|Hvzz{3koffPrbnx`sf;3Ct;(mrPb>oV?#SQAA)t
zM{#7^`~yaRUO4~J=SW%ebG<;vKVznst7VEiZlw0LDt+I}m$`_cG(MkOHFR#{o%LC{
zxj%NidwOY4WbZ2N1F`nbLX~CPuK!e;^u6lGwcTQC-P@I~%kNd1{Nh~prVBB3_ZaRK
z9W0VR{84#l-DM>)r68~1mdW=fZ5BPtbcO%T5~=<N=e}#MGu+C!{P`n~h0@%c&b6z?
z&-cAibHPV5;K-E)*^8zyXWkX`@m}_TBR*2@xIatShL{&~o^PAzR~ooenrpY1SgrZz
ze}$f{&i+@Lw9d0xoVhP|>*)Di8&e;=G~RNlthO%q+~0*kyf^b6d-iv}FKxFka@kWQ
zG*7f-LO^xlcQXgyM^$MXH>}=P^L%BE<+2Uan^gG{|L>ggcKZt1a?u3}6%JfK_Bb)l
znGkiNF!yc5JM~@j3l`V@%1-BDG-CKDz3pa&YVV&8#eXd2{6axu+a)_MT{)s~mcycc
zKZCuw(4`aS=dWlHVs{DOcjmu)@BII#;&d5vA|lle%2%zKFVC4N;PL6hXY~nAFTO13
zWDL+?II!kYGgm`UpzB(*|BU_rinQB9uL`wqS$4)X<?>{HOUCy`pZ)TR=0z`gcWT$x
z3Qgga(s?s06^#@3cU>1g%&eH)>gandHu$~1TesR0_nlL(RJZQRdn0i9-P4wNvYx9}
zhn0Byex2Z#d3#a7*|;qI*leRSt5#23GC_UyOzT~LS0vVpq`R)#-s`QXYLmP_>BGA1
zn&$i&OQSj#%~<;5(&x7GC%E}u&N=?^?e_Eo%exad7;X+fcK)E0%dOS9+om0H4a=9@
zYL_1O<*U~U{*!wmHmG*GhA}0TSJ^WLZ=BrjdAlt0{-IR!uxE3Yr$q1mXr!yoSY)v1
z_2s*ZJYGH8dQDk2yydU#mf70sGd8O<3LQ)KRXve#FS&O0o{8KOHZvBf$xaVou@qHM
zcQ1OIt=uR4=dxLp+lRXb)?2?A9RB~m{;x*8;N#P49Apz$TUyT5S@CV5jMi798P&HE
z_j^@I-FA*`Gv3JQ8{MX|Ozn-3s8{A~so3ND_hekWbZhqVJl}{ZpDt!+oqV6l@!oOn
z70>5NRbe`x-iWDOsmU~c_55D<oxkTy*I2}_2$b9G`BBfVS-nnJT`&7uR7u>TmCf~1
z(J!)>9QrbKQ(fMLyR#2}3cjlH&GBl1><8A)q)ySrd17YOdTgiX_0;h0-}(OW*LiNc
z4gY*&k9fUlc0uI4rI%%e&u|JpJ^7VYqP6it<DCcp6r`4%4PO6kW!0Z-=6Nxu{(|T8
zwwj-J5oF#OE!bNfYFcyF#WE&;W7@oo`n<L2m$b4bJHL5$Q)sfpjJl_qyeX}}6N&=%
z%#x_swDiro#tzYf@~a1p?xeh{(H1)LPt%Lx%E21O-a`v6YM9tIvTMe<{*_jpQ2cL(
z(FdkG+E3Y5&-HF#pTRZ3!8+!2G)F{^LE=aDnm;xCHJ^LFme2e9&MeenvHjg=ZVpLL
z&04N!@jaM6nZL>`X=99tLVcPLpVedoedCjV#h#ozwNEv+d*g-b^GnQXxvEq)UeQX=
zzE|^6>}gw6htd+g=|3&ky$t)deEZg|ve*4pQjKb#=`2nNz8@^LYR9YM>|=Wt`9*ey
zMAX<Z^sW}IaQoQsLf&ZJ!;1#-2O{_VTT@&uP`sD__?E!e3+$?HyRTQ8EIE^*@ML?N
z)1zsrH?DkJV|I^Cac^^vU2q6za{6I@Q(sN?2~W4a(4TqCInn&cl+(pk_Gw>YCp?JR
z;x2h3!$ssaKY!0V&YK|y+RM+ZU0&#M{lf{-{zeYZ{;$r~=dQ^b9m_j?LsoQp#lmB@
zZ)8t9nf&>%d`k1JPvLjYZU3VA&s|RKOsCn=^BJE-{Eu~Xc_#mjI&h;oJ#azMgBp+j
zTKw(*tzWdZPfXp)@SOc8D_gs>z-iT0H>_G1n({Bt`Qvxot^W1u=J^>#uUW;ip07R8
zaN)aNjRDJU3+*FZLLAdxy9qEi<XV1=TxadWaPB>)7&8O={c8`3W*#f}yMDRksr7r4
zlb!7sE+}~%v)wLzpV9lK{E(*lYX+tjF;=R@TlVh1cTH=1$cw<!7gTcZZ9DVjj@inC
zdwAD7&94>Wc=~dlovzWTHxWf|zPuIwCb~%XO4%#RtNrO!)06Zq-rmVusJWL_GpYAy
z(Tzs?kN>nU1`F#&ymeg0pZ8dCF=zjqf{IlS%Azvl|AoyjxtOHvAL*Rt-Tb-mQAu$*
z<I(9aMdMzSy<7gGTBq%~`ciJrh1av6u8%3cJt0=+@SCY;qU(HZUFRrvhbymMCU9Y|
z@<*l<nPpD}b+=htT1cL%J?=SM)_7(_wb?b9jnfZ4Jovb8&pGq<^D>hncf6cE_rQv*
z`n#TevxOHJtY`{R+vJqIMo%r1e|mrP2m84Jf1))WvwzQA6ngR1mn=@^XKo3>z4ur=
z>QC3MdG&Dr#s8^ZSG@c#X%wB9v+C{ZT<rz(-dxzX<>8Oo;~A>QJ751ZW^LU#Z)xmx
z)x$TWq&Jt(E1dMC*4lpa$Do()_ZKYsxbgHY{#RMwEMACCVOinze8;3%C!-kqU&n%O
z*Hp_bvEQ3>QuawvyF~wa5223Tk38~>%cS3I^Szw^?~|5?*GY*6o-!G}#YOhp#ZOD!
zJbO*#x7OyvT1R(FUZ3-5X4SRK>5|_&ihl2_^*eWC4a3nlT`ShgsJHxRmNP0}`b^-b
z`x!URc-j04)tVbQofj?cC2X4ef6mdL+48n}`(LD5zVP$nwo@!Sqy6*lhR@fgU3X@;
zocBPXGjYY|<u~#^g-zYk>-){K=jq#W$-@#a@5Fm{YFya-pl8mnm1RF2*^=kRRW^pL
z-F@8UOsmAv&3a-scHh66pPBAHJ<nx=F+)+*6a7e)=8~WDAMBq$xpl5~>wLomju)3p
zGH+dsz9v#<cmG)Ax<4IpEW1KxzIb1*AmGjwu#CAu?tj9Y)jHxWyRU~Va%*5*@O`gP
ztLy4@ebO>Ae^wWM{AbVa@hjAK#YIcMt2-VP%sYSa*7OVP*)n>O8T-@ALU%ssFm<2q
zb#u;hf#Xdr1sn3Vxxetua@liuO5oj#+&>O)6r1)?WZ%rijQU3JtxOJg^e@?aJv`~>
zrpH-%yeV5!SmLaT1KgJ!6HAJ=5?8(Zbjhv@8#S+JZq-hI_;^ZV!NT5?p_jwcO)B0-
zZu9qBoMaZF<oEXR!Nd1AMQ%&oaC~`4>9uFu3_s^j($L-9EnK@vKT3D^&+NK08FFs#
zr%epEFDlATb-8%kbGEePvZ+6IhrKwrOwdiH>End;M<-<-Z7p}JPTsYCliRsBE5juu
zY&PW|U*L6O#*>Yk-*l;p{g!(7^7d_Uo7}hI>vCnkdLD0CpwXc=!R&QnfQEzK-|G_|
z%X9oYZfMqP!}6i_en9F%4K<6ypXB{t-hT7y(&ht!Z?gT*IbN^dawFh%!`7&}gvb4T
z93maJ#a{UEmxXVQYiZfHYg5?FlMk~mS2XNc#%+B{^oD<Mze{uV4(=n;P7LM6^&dnz
z4I6(r)+nlYF#NbF*2KP)alsrtXQu!GRSt&0lN0);{K`$4?9@^B?w_7Z{{;KzlQ_6U
zCQVL^(qGP15Pe7g-s?9y-f^JAju#p3yRmcY-)Bv^6QsXb6vf>$-1(t_EmQj3ozEwF
z-d8W)d1TY!<sJ+hgZaZgeu|sUu<2;di(N;={+$oud{`&eyyM;SDt_OyizR-pTGZY*
z(dX0m&pSQizJAMaST8Ru|HtWy;H6zr*9`<BGY#i_NISRc>xny;%hQ=Q+rBY<&l|M!
z#->%K)n?As*3;uGKdxm?c~siFcxwEt<6k-S`#8*H_SaUkT{in$spQo^ccYU0acQ0W
z<Ri5^)ep$<y3beLcVhjNw@v(0yRL?Doq6@btdslL{+w&;<#tr0dogU@y2a~S`60&S
z9m~BpeP)q=axdlNwrEKa1I<Ma;&p4pmAjZ^SzVRCJSh7g-Dgr?IN{W}6MG&p@H~;Y
zCFf9(`()$aABpT-Z1>7}nY)TBw_kTz7%)pibjz){3ANW*<oKJkT|0I;Zhd$x=hjZM
zyRq-rp8v1J!cs1=@=A9=YLeM~qbKEE8*gkdwf>m#;K1EAJqeSm-W;4ebM5lfN1G2X
zU(3B@{%-lg=X2^mdwSge5_;UJ>fz_)OA~W$C>?)ZY<aEl{MWU?+&i)&^KNV{@fEc{
zlmE$1O014OV~_ZC?WA8TGQ=&jT1qzEj<b4ca?|*{>RR_VFCK|Y>+O><l`T!aS+tnl
z|At;(WzRe&k>;Z=zOUrGx9rMfJk+*wd6%2nKH1Wne!UB8=8DbvHgoe;4f$Is?~N~X
zB<)@jn!ESFow`>CO|^Hjem8z)og6nk{J>?mGfXT;?`Y3FylPdRRY})MuHyJp)z=Ht
z68-8tuZ0!GMBlpmcIxfwtU_tGSFg8faXhJKnA^!+!IheqQe0A$nwSe><tJrv85&wD
z7$|^PHa1-PA(aKG3i`gOC5b7CC5c@6!KFzhV4(<KA1-~L)V%bP3<X0oV{<M$J1(d}
zHue<-iOJciB??KY>6v-9O7C~?S5nAKu~iB;^)>J<a8Aw0^r$LI4X*MFNv_IHwoFm7
zx3j6Rs>m(KO)W`OsL0L9E4HezRZ2|BPfE4QE4Bg&>nkaMm6T-LDjDk;>Y5uED%o+_
z6s4qD1-ZCEH5H|#*(zm}loVL$>z9|8>y;bp<rk&v8(Lag>Khp88yV>qrKIT=SLT%@
zR_NvxE5l51Ni9w;$}A|!%+FH*nV6WAUs__Tq@(~fw<5OyZf;(&9@t@e$@#hZ6^RA<
zhI$72AcHD$3#>viOL9`}oD*|0lZrBJ^btZf`XF<W?18!+Nd%Y8L7C|pCB^vdF9NH9
zIRm1@$~nKF5-edCnwOoIU!Dhc5Qd~pMQ#C9&^NItJ2k~Fq^L9%SuIo;NuhsvUTP6G
zV<8eqDnpAC(^ErIi*k#xDMymU5<&`e09<siLt)esl0tbjxJGJlK?;E&7dJZ_eQ<FP
zD*EjZHA-q;img()lD!?Mx`Ng>sd*`&>dMg25K?g|fGRGx{Jatc8yf|EHwy(rV+8|+
zAO(FlV@m}S11Q_jP{Ggy%(k=R(vR>@%1TX!=<v)nR4_Dv=mE(E6y+xer<N#0E9eKf
zxGCs|q*jzD#B$l$DZp$tGD5N$Rw<eq7(-%_OW!RsrzEvVLEkMWu_V<cH90>e6{)_g
zxV3fG>Au@$A`ajGaV^xA?2y>!St_}mb&{FuWS@(!lUk20_G~#ZO<8;HlKA`HlS9@#
zzp<bxa>fLWdDZ$alRIano3CEJ|D}fO$|Xj-cJ^yDoAtM-X|$f7z57LO&E{)5=kiY1
z%r!Wc^z*aT!#T%iU(a6k$oJ3++qww#kmHrL@mF`}>_2<`eSX}Uy1kLLaT7TX%Xe~I
z_ec`rTsm=@%B^={`S%~c;PczpVUV=4PtGs4Tu@miQEx%4TYlL3s^$#i4v`KaD|3#L
zbPl$S&Ni=~d$G8$3^JJHrsbQv>HPP0{a)V}5r51lv8W1ZsfaxY=2Bj|>Gbp(mXo4U
zD#=`u+^)M^w4QJTF$U>QS}NvIcrA6({dSKwQKcG2C1s|tj(0*oB_?XRY>Z(#DVa3u
z+oUPUKAb*VkE9r}rtf^EKi@EIl|Zuhlaq$dO&bm}Ni`O^#d<a^l-bpNuV&J8We?9-
z*L5y^8eDA$CS=T5#Nz1lNmV4(j&<Y8{U=|wo31d+e)dJ=%(5wpPMOnnC#qa-;!5XA
z$TCg1B<bAhZ0a1sBNSS3EAXHXTe_sA+NyLNQNFL!UO8UvS$1e)T(IqmIUhp|rX+V7
zq)kt`Ri!0!%0x&>c8#)O@~Z5G%99$OP88bMl49Y=w0p<=sW-2AJiFYJ)O2!f(z%mN
zTE=T<6f6t(>9;Hw7UBEa_0sX`mZYYcYm=(ZSRQS0-kYT7aYb8A=9TE@A5*q<akg#i
zs<gQrX815*{S3X34U$J=xMc%*o(7z86>&B_^ucz+cf-_;y5Ho}ScK2yvKF6P+R>4D
zu*G<9LY0q=@{EEN;y&VCmopEt7)KwBIq;>4v%TuzmjzXB1`h-DXK*iwGdOr5%%I;n
z`e2Lm-UPY$J!=!zwf1qe3H*4ct0YmOF?q(X>KU)LsHf(q_?`C&t^Gdbtc1G7gliVh
z8v`QRFCXJfuX<cEv*o;my3DKI%gtSxk6DbPAAgyVbIjslK>i%=1^2*ovBsZg-I9-4
zoTDF?EYz86=x1?7dO5qQ@v)s^RwjJyi#Ro>8}O-ZcoBO?fBzKUi(PI0-D-30cRicq
z?>66TZiZMw)y0yTCUeEkG6m?*(wp+a^J0r}^u;eTilR)o9rk8aU6`4^oOMB*iFnBM
zPBocZUC#<vh=bK~FYq%7cW#$HnZ_|=ZMNB@_Em{Ink$vpnFJXyE<f@A&nDw}J4^HL
zUgKPDvhLm6=g-#f&rSZF8~x1vwq41td$U&WH?@pX?|N`!&r#*VqTOnR7k4<GnRtEK
z?PGEk?X351Fmo=R{W);;r`!8(iAHkPo)G@s6!7VZ*s-QpPFb85)}n`w)oE-#wnwd{
zFJ#HSWGBnc*>ASBNE98m<2(0w$GOeB7r)IqbaH>*=Vt5F??<QJ6gLlaNSd?ZN9xA4
ztCLILAG`l2(OQ^MTcFWk&7NO^d8_X()c7oQGvuG;UZ%C>-;O?ry_VwdGx>O#^1b;6
z2cNq?5f9ldmhjKSXQ`p&#O2?G=7&oZo_(<3WzjvmxnIK7o?Uf6rD#_1ApA|q%gfKL
zrTzvTbgKNicfPwyde3F6q?ae076~mmd-wI-@|MD2D~;R!YM<_HXPd_?V&E6seRtuR
z@}Kuq?#kq{&gy@+w;-%;#j8a>Uvy8A-(LD~+Vi=#VQ=1=9<RAAa`m2E%lz7uopU3E
zz2BYb;=G#UQzykKVsd87zk?HBUG$Kx5?FQnfy8PpSEZ@;7B@=vtP!&fx}K%$vFGoX
zfUC<G&wDC2dT%cFU&hpK%G!8){rb%LNBw>plog*jl4p1O#@W(4HU;ze><?Vsb~I-H
zGQBw``j+eGJ#yN_X=y3NKTApAV~b|y>c_3+Tb37X-oN%yf3oYL!=G+gTgOY;g-PxB
z?s4?VoJUvAYMPvTF7o=}9H;4*=N#JkzL<-Bq27^ge5N5cZSOuizWAowX4@Fw9G$s3
zJzMYCo0%kBoEx3d8m-^H=G-YG{oUTHHgG;EoteJu>-$}?<u><HfA0-k;wUtOZ7q+`
z7B2g`cZMtXmj9HmcP}ZxQd1cr*Hn-$RzPBUDwn=<eqKpxUP-Znp%JJ`3F6WZN-fSW
zElN%W34yCFE`8tBl*~k@{0fC=kbs$?k%GCUQ7o5!Kw?p9UWtOCAxJm~xqdPLRdo4D
zS>T!xVjr}^L+a7F<rn30>4QkH3PUdafDqRRJ-5u9RKLXBR0Rz;D}9%u%(B#?VtsdK
zXZ_sb%3}SD{M=N1$GnuH)N=jgqGbKN)N(^({gnJ<edi!&V<X+P(wrQ<f|N8(sA(W?
z`jzG;r4}i`Ebz=r%Xi64E>SQv0@t}*`c81qnOhnum>GgRhX@DM+TBpW&<NzaAe=R|
zzGrS?da9EGgm#9~p5PiB-i0+XH8ZmySW(Y;Q+v8Eb!XAtJ&pg`ji;Delz$dgVRU4U
zJ=w;}v0*B2MM6c$g{g@tk`vVa)fy+Q<tR!|4OQNql_D<n;*>)3of?+MzVnXH|9ARv
z{=aAb|Gzx{|L1%E>-_)UK9<-2f9_uO=k@yiTfTUt+GW?C*fVdZotI{R{r~Cl^*>L?
z|NnJb;`~f`%h>bt<V&yiyRUmY(>)=^zw(d#-{nug{qW!aZ<E#Ec>Y}TBLTl3fBxk*
z|GXW?{(rBoCYMH^uM%N#^7QRCXW}+<+CA^{n?_dY#4XSFd~IlQSYc_qzD8j~g0e|v
zT#?d(1jRjnes!Nu(VZZ1Y3;<vPres$yl(%LyYbxC+gmq=ZQt7cYj4Q*rMJIs4B9^R
z_ScO8+grPT?e*JUdi(1}pZDty%ntqZw@>xQub^kEh18dR@p<g<p{Y0U)aJPy4du1j
z=O_BJh~@Oy&09H7LWiTLCiZ+4-(_wyw{ypz*u8J+-T2K6q;Bt*blc-ES*4SG?*3zL
zW^D`%y2g7$B5s4BSM9XoIdK~duc>_#X8f=&zT5bG)q%kH^<U0Bx7m}B{A8;$m|nAW
z=fqa=93IK?T_2iyH%eUh6mMC)Z|%~Z7hA=1dM>>ydB`fg_^Wkn#ld4c1pgLtF(uD!
zs=r;bUrYS7@A-v2!Sh^up8wmvzwXcbt#{9_ZhHIdXT+E7eV-n&cNhLQj`(12_h=5^
z+>>^?Tfd~Q{JrJMtoc7}WZfAv;<=A`{@%(JA<P+F?(#`3r#0A?W9K!mG#8_*O=0{-
zSDT6imL9t9*t}J2llFxh>(o76*;N!|ldWDXzqW4k{U?i9C74z?KCBdQ&YgPtz}jm}
zXC_%!i|j~Q5wl|J#Q&k@%a?4`&E*Z5Sz7hy_x_~v*S})&&a>6s{_^@J%iGuM^!ITa
z+h4X3__zG@-SV=3zpM9`H>{L+y5{G)wL2$GymU3UbIO#c4Qa7YTyF`pW;b7MJQ(<Y
z!oGL41wGv}RtJ5b#qmq`y0K_LadFXlg==kf-7I_WAOFGpYuERKhU=KGJ-?ZM`uweP
zVMlKK-S*P`!&!-XhxqSy7H+nmcijl~Z|6KvTE^;=z!L6Jc3{&)AE}f3d3q!s^S^j~
zkNsFij)t_qhQOuG_UjYxHl)ZTYg&doI#zzGOZXvC?*cX@wKw8T((lQaFKs-imHoj_
zSK`X%qByC`HU>!@_wQfb%iULSRqA=H&@xAE&+~roZ0F9FK2~9Nrsi)be~ZM!@8zZM
zo0MZNEiTbsEt?f^)ixl`K4y=^p@PcGi7PCecs}f|-u3;!N8LoV%cqLkgw(X6eRs9a
zN|TtPTPgNmM<A&IY(-CjXSg=QYTfGru7_Px7k}8w=Xfm3Xi8bg?+5$VPhV`xzEsIh
zy7@h8)$^q-*+zTYg&O>_ogBaCGby)ygM^aaT4${mfnT|<tm|GXE}Smmw*1ki9jj|^
z2*NxO@O433p!4^*cH6`#RT0$}rmUZ1rbStTTyXdDT6UiES2op6I{Rp~v3!Z3gr8;T
z*9Twt{{HO%$I&V+K91Q;j}OZzEVKR=peCBUiY<xt)10RVIt>3cfK_zsH-))1eVsg?
zw|e5N*V`{I2|juz{Qpil4#Pw5-@UxX+`fHEX4ZYlW!E1~zrpdL(mi4?pU)=s)Cg(i
zW8eSA-re<pA#|tuY!lffeR)#vvsic!8_xQCc9+F#33j)h5A0t`-!mthbT7VnWLf9=
zZ8`hdxKn1UL|v%-7cKO=AmN8Vy+inSJqst(#v{){xz5~w;x_3<9Luo>KeN17hpe?V
zNb0a(u)bPeW^q(1b9R57_^zzCujjXg^<7-~-fZWe({JsL$zQm>m%p!2vP&cDOH|j&
z-B}h=l@^B-{%#4p^KH-NN8i7fyngt#-%|e9uO(88vYMZn{@#AC-N@JY-o17s^|J+4
z@?z1;%$x4Dd-s04{<bE9!{E=|p9PXzcLeQDD@gr&EW1K}9gpFwbM36jZSQIdSialp
zNF*0McUCy?eZ%XA)f_i!`FA&*Yfn||xm>;U(Tcl!_`{3;v+m*NKBjW#?}mSkYOmh4
zPkH&F^!s70jC~V#@ijiU*S=4p_m@IR`KhT7>jLT>B5Sg1V?z#a{hyouuiE-oubY12
zf$5pQzo*W>?^3a_Fjijea(npci+^5!)i<d=nk9azI{rV~A#UHGrKcB4e~J5@udwGp
zj89nf{pbt%SNC6-bh=FI-rfFur9BtUt-AKNru^G|r;3G=D%WZ&(_ik7`|HG=TJ!q$
zeTRxh*^BqD$ld=}wRNU|SZzmC<>#0ASN1zF>PJkOct88^*I(kRju*ZEE%QBmb^MAQ
zee1XX&HBnM;`LbOl>WY$_3Oj;2VAe75W9DC==~M-3)QC0{k-q<%k|gy2Y51FubqEv
zf9nS(-eW)hT`2zH_d8#4kHcOAL&K?3_p|@=wupDtt*)Jaux9bU)*{R3uhqN1eSKxG
z)OXv&zc@@RZkpNmFq!AB5gbZYFL;Cuk8G5Sbopvyv~3HUl7WDkmMB+$HEUb@&N9YB
zQHve?Dh09+e&%6gX>wn|lxCB4@WW=~e_Ild%x3!bA*koTV$a<T2N#=iuaK3~mQq|G
zD9v@l*)e;~_JRX}2OQ4NFt3!^(4D-KE%s}6`Lxbb7v`=kfnE9q$DgZet<F?Xt2CF`
z_y2p@uf=okUWoVi-~V&kgV473cO!P1E;6{!nlJNPKC>$SQ`N7Jr5_zu6s*w?Z8<0T
z>rweZ>GglvqwYoRnWy(_%`Uz#VHRgi@0@$U{O8T?2fgn9lzrd(#`&}FnWos}JblNu
zrlpShzw{~|=l}P(Ts`^v<-PM3zOUtL-`*>|%ev;t?gzc*e<3=a@0_-@iDQ@LmaU<z
z`i9~^+V1~2Wq;w*y+>b5dbO7x3TMjSYPP6c;@{iY566W6HBS33wto5J=;JM(2PD__
zwk+%2d9UoCwEK66%j$Bah3@?PV0wFj;E&ewD)BuZlk1nf+<P+n$J*~wmzM6i-lO+I
zfBOH$Z~6XQzihrX)%fuIJ9|Cdge_*2ACwON;y&x%>^<}5rE6ywh@a13)fV~pIQGM_
z%YP;=`>wWrdHT;6$L{QPSGMT5FL|In`d;*&dFvjZ^>}&aZq4L>_w_43$Y+4U&8n?G
z@4+hDsDrzIpX0E*_vPM`uLZxeCN2>Fk<?olJkjv|TfH5-EA20Ry7uU6$?L3}4##+6
z)>d+g9C`g>?p@aWJ3FAkpSv|jDfPI_%3B@tLVv`SAC%UA3-P4hO`F`ccI~rG^kuu=
z83*4q|8tD_HzZ&Vho0WhThf@NEhAFpTYgab|0{@>-i7Eo|5N!hyDCU{bAr|tP5p|;
zHh&#XM|WR89K7py!}m`aO!d#L<Ns$I-hA-2{N~-O(jHA&r?pcj?o+Gy7bELu2D_J~
zhg^IU#WEvCQO1JvOnbrV)jRnwuhlcZa_H40=Y<FIE^EI^3tt?4W$n7M&rNwZ)~+kF
za@=fEH^FUsh1YcH*xaDS#f!af-|bl!>##Umbc;m;+o_k#XS)kt>{)hJRs5{k_MK&n
zy?Ps;R^AN@k6s+-5&U1j`{AmqTc_23jb7)GY5M=!Q=SP6u3K#jpPk6eyg^pdr_xQR
zTiUAc0GqU<uW*ji*}@+dp^>YWbe}%CEkE1Mug5HLhuEh`E32u~7M!X+*x0BhoxIV(
zmh0KRZ+~Ro7B>j8$#CQxsJi+tGs#os{F38ly|UkaWjx?mHSe~K@#g6-Kkz)ZeBkgw
ztS^8)?Pc<k)4}W~=Q!)%kjN2|Sf%RhqToKO&;RI$o)|HfHgnFNt;R218oqya_|SA9
zf!jTx^y;!#90iSX94(9QNwYW^O4%AbV7E1l*kE`=#ULd8%HnBCFR$-eSULBmkXOpi
z<PDw)Jl^^tJTCPwL_&Gem2^0G@*hd?%+v@zV7R2%q`Td6kAlG-&x9H8whD0F)URD4
znf38?;0D7BN&+F(r_`G&z5H1Y?5?viS8?)x(5BXIvyPYNSO-MU878)<l3tq+G3VD;
zI3`pGA2%>%S<RZ~usw6yqj`E_IXq@JC02P#Fue~sP`rxcu4uPi9>+C>S1UQ+RDGWN
zuBu`8tRI2?iTA8zV!q7F`g`M$tvpAL0LO=UdzIJMpK6(J^l-V)4^82^Q!W4BryP>s
zReIU<lhP$quFL!Plr5gPt!(oTy}Dkp`?t<n`c3w~Bl}n_KKuOKSUKt1h#K9?$$s7I
zRl69s|4`yS>$@*>g5Tu)gVxO7-b^&R-<J59RmLn{WXD-?*1XTIjkjxlmc4a*_*-?&
z*O%1`*6vJw?RNjzf{WK%e2(?nJz3w88x&tuCtWM`?@%XKXW!>1%c_(X{<ixSx{PDq
z!mnZC87Fo#32YR<&ag_|#!@vze2!f6*Bjn1I4-tpb6#Xu{TJo^qbx=}V$J70S6qJ-
zAIK=s5On8%QS{xRcfnDO6~-L-5v)hUj!4Ml{q3Dp_@zN_G5ZQ0g;wX|8K3Ju_pr|I
zXIeflL#TGc`3p)b!gTIg^P8&F@D#3T;eN<^E#bB1y?eiJ%Lcq$!JK({-PA1wdwy8v
zPDzhT(B-pLt4iqK&90?drTs7@S<L&*^MmVi_%CeWmrdX9mVa^9E3Z=jwb~|UlkXq&
z&@#Woy{bBE@5y(~bKlu5xR}GT%7%O4y>*)wJ@~A5Lq2ixUG`r+dND5}g>{xs+amC+
z^7I7O`Q?mJIks8f59pPPhji6!j>+yi%cb_}_FL9{ckd;AZ;&hJzcQ1l(d%j>!#0_C
z1{ryUe|i1?%Br<O8XbDGl_#7(&dzY0y+i)(&G;?lx!M9TvbQ-zWd5=0cld8;{Vt#t
z|Aiq}=T&U<?XOc@KC+7a5Z`n3o#VGT{9pB6tvvg-%4^#X2JT1985?e&Pd?TDEnNLa
z`im-&ABvjN%n~iU|1a<^-n+W(-n^{1E4$@h=skX$x3rJP;+J~emh!C^Z@1r?VR#@w
z=(+TNT`oI$)|urwdt1Lhuyy0VqILHWx9+9loEY;3ma+xQev0vy@i%{3c=yV=N9XMW
z&i4rJ*d$o|q3O}-17a7O%OzuXWJyV^>#DjIs$uZ?th2;#<$Ef>KKSkBk7KKISNyy3
z)1Q#ax>Yvzq4VZzo%f&meEF%*!B2nIyFIP^`E~kn`#+cG%lAL_-F(FS?7z3+^%vKi
zth;z--sBs7d-nf+dp-W&7kTkpLYH*y>wce}RNJ5Zce>mpok)epP1o{Yf1bW?QrXMf
zY5)JOU-$omz1;r4kJs=2b2$H5=C34?pX~jM;$|)VR3`GW+%2%~gN7J?%#vSaB0tOB
z0_)#sc<uUfchdI78vBjAzBRjVw21eN?^*QkoW>LOex{d~^W87jrHlMM-nVGgp@97o
zt$)sG9OIX3jf?nSr2FfAPtv<UpF0Z;awWRHTK!qAklAzT%c*@wZa*qs^-aBM-qeRn
zL+yHZ-``!awZz2dz%i3)x6*E0t=Qib8}Q-6Y_+8l0h=6cCAUm_Jo(|Pqk_5~v8$IZ
zu##-ZTmNiDXyD|&Qwx|*>{E*5kuv@@S0m%w%|OOPfnBEDuiDn=L`|Ho*Rxu9wZq=m
zVIKk(lrX1gTv1y!&9v)SZmul1$gWF_p|VSE9OiY<d;DU@lQ;8YF9@AzkTFjT$bP}4
zqqg*d4_9nxG@o;f*4)1Q7gw2CgN!rYK5cSym%SFvz3O20Tv3I*jnf`)@++O(c>B1^
z!7H!$7MMN|bGZE5H;Fa-@*8bV0jspjTfgtJ^j@QO*V;cndfELMyQ1e#><cZ3-IX}?
z<m<gQ>COkEJX^&AC6*k>INXrdvWQhP($VzJxmQ^yj5te`yl2L3Sa6N|m(c?!`|RX~
zXybyV8KsfFXYzcxbZdE)&$;+9Up4CpF=F_A%5>}FWrF4pZk1fQb$P$B*5uyrms;Zj
zwr#y^Y{|m9y2`OuV#)87r3@+sn?*ye_?5KIjN>d_TflQUir>yCsrtg21<%`^y!yCI
zo3$8n_DlA1@h{-}vc+xJf+^jO#)9UiA^xv5Z?i1_d-IF%Wc51H7hm&qJ)*MR-5FnB
zy;k??HM2wRn%FyT<{bfBr^Q~#7gg#{yMN_O;@!zT>rJH3%Ww*Cq~r!kYD6T*2voC8
zF`CFe(a`+yuVoPetN3ppdK3RQ#lJgltEBv)!^Tzp`ptho7GD0Oq8#gdX~{Hho<fo4
zSr%VT7CgTi7_ha<i!0^so);W%KE8VJ;ckWI3gg%Jv`iZBbk1h%3Z2GNxA$44(LaAR
z(P>NVryhKqbuGPvZ|+yEh}m5>bCz5${_=jGNF3{=xidlySWj>5yMBeOL5x>piH!fs
z%ga`??u<T|q$*WE@2bQJp&0H-TpFt1V%9{3JbEe7d%MF-)=jjE?|`p(O{vV}P0v;@
zZ(MGu86w2@)5Po2oT?)Jy9@V~&6Qbbqr)#>diU9K^Fptpwv7w4m{w>{Iq{*u%PsmE
z!@1{C=4Zpg#8#Pvi0*n5vx5Dys&dxG`bv@6_pBy+ajcXMF@AaE#}tj;l`j+j9G=&I
zWqV%l!&1FZ0o&#I{#q@b<$I;z)%AOQE=)3dMbj^ydc3>uK~vYpmQ0al3oGxw)X`&@
zBFbAmIqN|zo9aZ@zh2V30qS{^({7!5WY1;#O7Ct#sL5-SJ&)H(FDXxZeb{dC{ZO%#
z<bY3?u0E<*9n`rlZTm}sEVIzp+ckF|b23>fwB+h-(bHKMW}R<RTWGZNkZ0(;&<!HZ
ztW)ps2w89Q^<SB`^XJB^qH<-kFY}eMndH7!`!%!m_Z+TWv&w#Ks$G_Ry8SQbmZac~
zT}I5y#XcUJzhW7$NQb8D52GuZYc^S!u4_7($anor!BXGG#z40Gmy+_YzTLcM_$<$A
zt}J6LkNVxp!nHX9lWp~@%8cY4cV%rUT6%Pq`o3Th4^G+VZg-|^yl`@tm*iuA-V-f<
zHZ0|4_2N49c%#_#uQe|P!=nnW7V!zS`_{jj8F)f1TlZ}Jk;$41w6x}Faed9Xosw%G
zwc)18#kCE|@x~_#PcmM+`lP*LL7|zG=CQEZhFe_gw&iGD_t<l4YEE$PCf2RoC;3GA
z1VlondTt9iDseVwU8s+O=*3qBLUXNSPEGmp;>N_2+uol1v8<>sPkoN|#$7uCHuzoB
zxT3pEXh!dRrd@?qrsC6C%F-Af_H5ylEP86;n4l)<{=%tr>$1&G$2x9HuVH=pj47=6
zX5AH*i&JaeH=OX)HMo1b^VLz;DOyIe`W%I_%xYt0md@dB@bY~6MRaw9CP&(_O|J~!
z-?4qF%$3=2`jtT!qiT`^X9QO{yNcS}G}fY}Z?wd-rk=U}YOBca;>l;GTwAq%qM`q>
z6SG$RIhD4%b9dX(OZzXgHoQ4p^Zn$GRee!<AGcnXoVakh&mHfxeTlR9ELw%TKKQ6i
z=Y7pG{q9GrFjYJ2H>zpE(&q%u?0Z!3_G#VipS2J4wK}S#tWF*)ySJludyVtshy`vR
z=ZbT!&(b;bQs4Qxr^CKE{nLCLIoA1X)M!|tab5C^pi<e5nn^34#JaMlZ*Mq#@`+LN
z^|+)^Eu&V4l_#%#Xquqk>OF^rRdQB`XHmg^zQ;bVo0i?U(Xm3TW|?H;SEi>c%CEPt
z@LBsgE%S`T{)r)tSJgUK=sM1xu`F#X-*3g}!)d(juMWAai!ob#^;UQG_gjUwB4vM9
zX$yx{i^{y(8c;697W@Bc?Q)M@+rm|*W`!4T4|jRo^z%d4k}IW}+rw32zis(Y)_v#q
zk3+hfp72k*8Q1u?hiSXSbtBys&QCAjObJyLU!v9Er<|G>WEiS)TWc1Z|A~f6%+v4j
zZM@Z8)*5kqmwNb@+Y1@u{zY!StsWJn6QX!RQuo5;om?SOPru205PxBRlgHEellp|K
zb*A$h%5uCmSn?lP!1UeWsYb}ok4&vC?^;p<mgzU1kP0>U->5g6wL^4PL&#oHbC&70
zX?I+gFHjCsJ->kO#i1ybvNgXJiQXvRsKOoO<nh_^=vre}KegU7xhi3A*R4vt&?-BT
zCuQ@j((fU!bWfP=n=xstLb61wRIAv9xeK$Wep$3GlIdy#<L|{ub*mQ~*4yAHBy`un
z*(|~5xT$!{&d^8N33s@)3{HE0bo^kE<u7o2mE+o#7bDufyKz?)-CKEqVbi<kQHQv5
z%thl9pC3-TTDn7Mfj}vXOtG#+!Z)vlH|2~?Z_efQS~2;Z^x1i(CYF-=hu*i{*k<0|
zap&BvYj=JbX#7%K*RZ!_wP@6u!wdKrpG@IQx{=J1$NbL0T=$qkMDEs*C@saFg*?lD
zaQ_v%P*KKuTr+NZgpB#(Tjy4|7VtV<=CME7(`UTB`)UK*xuCYAwpj{`O|w^jPH1Kj
zabFrD@?cUt_qFOpOOH5R5WJMsDtahw!K!10dM{2^L~hzS+30htu+{m;J^VNC=zlRi
zaBH3VUsff*W6bOh(;ZgY?2g%XSeNbR%4Xwjvp=Q;6n16`^vOQiCYCbmd5Va^IeimR
z3yJR<3PM5_0Zi!|N*}Xy)y@8FJl&)7F>^}vG46dz#gek^D{mX0-WK+U@4Dcm^dpf?
z8d=8YCRv$oP?kO1|M=p=HD@f!g#%P`4>4<=Jn6I{Z=3Q{Pg|F}zB?W63+_q^^@zDr
zzNxdPEh|-sdsalz`<s7^x3OPM32bk6cVCxj9#FT+dt;ZS#LVu^A#-o|dN|i!xc5S3
z-voiF($8YvTA1A~i`8+MnKwt`25b2GPe*g!$?DBN%h~Xw$5WHDDF536kytsNrl2Iz
z3(hH1!+%T@x-`M3uI0cKi99pG8)qMM3&+1WxJh^Q0%_|V3-+}aYk#dgzRkI%@U~}l
z_$`x1?_3}67k(sgRrJutCQq>+!u*}RJNgvU-(+vf{Wvp{Pe@$RIVoIVio?8QU$q6=
zFIGCto*Cf5GV2^m>CLG4ed*h@#KZP&yw0P`ZmKJy)WiO2lCRE8^BTwAtndkQ3zAm6
z<B2eJh?smwcIL#5Y+Pb4XBi$Sq#xG_QFC~8!~gDF>4%eMcvtVroHkKDV~OAD@P#~u
zi%ti9iDVJ3U0~VT&Alh~HbcOhkesuZ+D^`?T)5dbk>^C)VfSo-ErO|;M{U&DME@Ib
zPnl2_teV<7X|<`#GV#p|p7Sl%N}kd5eu+a~No7=SD`zpI)&u{7>YFkLQ`lAs&*=Gf
zzLd58(VukwZ=rAIXjMzGT~O`zm?ZW^?#}9v>yM@^p2D?B@Yv=x3#zi4&-F#uTrMz9
zdHcZn>}jsHguGLdkp+%&GymBOp4`YVDT;4$-m{l&M_o$WZW<orZBm=nt{iM6vRbsR
zE#On2!1jfYxw>2ZDw3Zu-@XtNl71rN$M(Y_S=*Ln{c6Z8I=^Y}&oox%Z35F?FG_8x
zE%>^{UXtsC!NEg5W*thZJj*>RU7xhCW{}Kk&U5CFDL$Wgl=YSdhuSNjmBAhBcE9v(
zoL#s}`cC_{j$41rn551y6?FQso3+X)aQ-t2ykNMK+m~G@(0Jj|=aDZgTN`g2+PG>$
zb;4@pas_GoV^#<1v%Ooa<g)UPF}zJX&0rS4A$p6lSb@#Uy{@q*(~YeTt_+{v^h(=k
z(aT8Rn(XR>qW9EowU;LOPL@|t%<G+OdE*A3VN-aj-McwgLRn9L*tWo_TzbAE+fLc-
z=k7ngAYA2Y^YQEKe_hJ2yA6*WjyJUI{}7(>?aeLCzjI~m7&8A|QF(T%viA1z>HoMk
z25<P+FaOAJN3>&F<;MDw>nu(lM_SiDi128R<)0)Tv65+$czJj9!3|A*DNava+#Jqv
zX>mo&<;g1MUu?O4N=ivreOzEdr|`*V)81V0Y`T0nX%btb-PdWaTpH_`lmdOi#WF6h
zP|Dl?aMc$viIqw3(tf8YnAcp8k>1dBRD`va%WBalwQr}hqAmo?y*T}>+^Rm6>t;_6
zm8tYRt6KE*K)PN{TG;W>UsH1q`JJg<CeX-~z>>F(Nx8AX%YI_ELVAvZ{?A7bl@{Ba
z6PT&%rYOE;(>t}52V5J@Olk?Ac;@kupO+Lv^B)^Yhpt!T$w=RI{KNv2y8_xb-}I>N
z5n37Gdabjla&NeU?Plvwthv6=Z?tJI-Nl*faMxFF;;n|D-qiep<Eq9_qssRS?loAw
zK>4o6NzciCAMa*1{C>M(uCGG!B-vKAf03!7yi@qM%S{yK68bYG%`+}Sl2?1?Ew4Ll
z`g~=pOd~2H&ak}=pPO=bqA-`#<wF~uu+HDP!0qz|lNn}Az6&EW?!>gPPOyGw*XYW7
zWtBqyH0@-8f~g;wl#14;Z{46@;}&sUcIU#c8*a7ru@`9XnRYplJ0R4`)Oga7B0mv@
zj~5qTShd@I>z;#N;TcjT2funm-q6Yjo1d`NV`l@Sd9~23X~Go-AuRv+TW2{kG4Q57
zUUdGSMPr?r%wOOAb8fJDYd)38*)K6^<IV>gOhTTEmG!RUJn@O^3EOSe<Vw#AyxDG(
zWGz>)FYD#9Q#HNOrnOai>&G)Kl8X~>SSE?wOXyAu_}`N0Y`VWx=0TJ3&Aa;*EgHYH
z9$^%f@;u7-oAr*DTf_Pk`=2FqV;=aQS^P4=ed*4(UTiF{O&e`{-#owmg!5V}A1{aO
ztW8e4#m{)?tjKu2(JJq;V#^YN3)3pMn~FD8RvdZjp)I4wJ>|OJ&7wob;u_(TX57u$
zv(xcc$Nz#wT>c!HjSTq$Z=4pMw&GG3J{_j8{DhcCb(rY!t(WucW;=^#Oc9-MUw8ME
z{S7f6f4UrfSa{icMcKovzE<vbiw}JMwQTm)XHOkA3B7D9VtkSw!md2~<~onGtTQ6A
zeXl*EzC<MmyK_hHi$6Cp)Zxg)Esuld%KzBMe_vvk!HIiTPk$VU^Wooe;oAgG)+CoL
z%zGyMImS|%zUTg~lxG@`4L#z&R-9?xx#mbJpBA%$Pn@gsH}C1Q9p-<}n&He;9Jk=7
zclv_4m8-)P99PL6x$OAZc8Y|DhoeJ|`OBQo3He8I=jeuTr5#O5IAgW6+SlrefP@tH
zsRzI36dvoze8rWrktaNC#`&nmGj|Jn+2foy%Ga21RNp?<=`%a#*W}D?bHWd09-H9I
zBxGtnJ=^TxGbdm5zWs~CZyvOWf9Kd(ebO^~Mryz*218%@YYZWCu4sJH^4PgZ_2)%~
zqZg|?0%mPA6ezs=aLd>J2l86xwmVXtejbr5l9wvpG+TZtH~YIofl2R@@9NslSL#dt
z_+j3Jo8tC!zU2R!@NnN=g(>XK8~E*0Z})2n3knwR3`l(OMVYT=DO<Wshup5TPYG^D
z=UZwQ9amc{mDBq#qF@)-^6c5?L|@+1Hd$`4nMLlt;)*|a%+s@Fdul!#XUf?v(-F0p
zc~XNlD%xGebN%AP+E_D3;nyAY-nB+sw=k@dXf^)yB_+@CM*JE3mI|-VKB4W$cKxtB
zBxGD3JtL>&?8S&zb5AZZ+xu#ze0$91J3-N1LWP!kJaMh%nqfA&Cl<WCx@`@Q$ufat
z%|lg}l)BoN2`^r;F_9-KjKgi2wCIU#Ef-?=X76-);3u&Ag|SAXrN8EygtjXR@-z24
zC7xA~^xXJh%Z&b+*^>n)djtkJyfnEZwMtv;z)JIs*7TM`_kuqgzT%0$D|*d}Sx({a
znFHQ@`|clg_S`Ye;l1=ab_s^IV(&;pz9U&yKQ9`!9z8x|hcQb}SJDj5y#ZO<pFOz6
z@?_<&ng>4}9z{CcTJ?_Og=5m@5Bv7laaF2cQ&QS-EitFMpQY0=Rp_SFtw}exWf(pD
zkaoQGR~5&eSFGtrH-C88vGmRb13Q}~qMl~rlcx#(6W<ZF^6ct#8E=CPN17L^RL$M&
z+@|Bd%%(Wn+PQg;7emVR%ooD>Jo<}RAI)XuT`~WAN9j!M{TG(c6{uGVy%KPcE#icN
z`)1En22P(QZ=dd%aE95jf?uAt%6I$SI?AjrtYf=2@!`Z~kJWb$Pl!8XoaA!qlH|*a
z8-MJ2s?+{J!XtPY+X<0<a+fX#=`=@8ond<Vv*7%d5~~fxb_sXheren0IBkOXEraN1
zLh(n%lP^r>j`M%7J^Am<X?vzVx^?JuS4n;G0jK$Ced~i+nd(oln>Dt)_mK!Y^D*_o
zCh>|r*5`B{UH#!Ia{K2Kfr+l?UY*P0*e53|SjoV4cgAVyF8jY1{ARHB-H}i<Zr9x|
z@0THUag}(&Bj%Fsl_hNFXP$bqVy53~nLQ;J+E@?v`yTmV#q&`)_~MkD9ZWkd^tLM*
z>vjm_n<gIc`G2EV*qV*=!3?9Pzq1TE&a{iq&iTVThdubNjmR-!XO?|C9z2oV`0}Dt
zv~$|!29;1QjoCWfm%?YwKDuh-gJ6@js!9rZt0O0Ez5L+`=K;YqKKl~4-x-!AZrr?6
z)aQy?H0}8nK4Z7cGO0xj@18jydR6vHQR&pjIMtM0uWVC4zm~bFeRAT==11)8KXsbf
z)QwBu9p{L%d{r8t*2C-cfQ8ff@{EKTybC#s&hQl;jnTWi`$-_Lzn-M#CtkzwU9Hwv
zY;}6s-<YgnSa`7H@dP$W$M()0D;7-K{#{S!hmKylPRSHoZr-i3LR~j6`TRX}R4#eO
zig^##ozcDh=%%Y#v%6ZL{o`cgR-x;=mrpZ15wp?moVkwF8IQiB)yY3&9%zXavn{>C
zAuGkg`MUD#N!EnPcMXf2-HLiUcO~&pdvG#&p3sq$9TuOb9}i1h(9_*y>Uejy#Ydl|
z@2fvMF6iZ4y5PVe6aIj7E<UXQ&l$C+R#(oQBgGk_d*e8(YE9As-e2CihSuDxi&eQ=
z%#sg<{GD;x`RM$M5BzqsGcMPYFv?h4-oI<Q!fLKZtAFhI&f|H$;Qfs*!7Hn{g_GaR
z?}}W`B<6C$q`7n70?(8!Pv#!$^^&=et-dhnV9TqDvXo^3d?Ch5Wp&ME>wl%0e5j~Z
z%zhMLwWx9DfnbS?2Wk>^KhD<9R68GbG=Kel>mN!YGcGTP7VCd5aVIu2K%-fBol|o_
z`OUm6M*C&!A6G0|`STPHQ~%u^ADGrmwa@z6{#fYIKHH0SJ$+YYv*xFk@hW~%KB8N|
z_ES16>Ol6LU%wqVmArHwx-8@=7b-i$m9YOs{%MUTTe&XGzVgWXx`p+=P4(vL23{Yf
zOQQ^yRUa~n3tX5u<)iTNXQwjzbR;(YI~H{6;WTeH(;X9Qt}5$WEnLs`q-WWOFAcLb
zVqU&p)z7?&J!|bnU8_}}3u~5ay#4T>iu1a6KRs*iihCZNYcDi!{XZUYuEeUqF9&C@
zwr~Ef`QV(y>))^Dm4!EW*+mK|Fx)Kk7SWipo7=AWLT=F=mb`6Ogj-Ln{u(}4uW`=m
zGm9=XG2Y%`zIxfD73YuWoXB1L^28abISy%$w&l%t>YvNGV#9$&-YZHy{4|!EpO|^|
z%$A25Gct{9>P#A6?PPr>YStjb?Z7JFeJ}HXP`TChGZnYaDHJ|oe3H1;K{n!}=9A^~
z9Yn-i_gv#U-@c(#a-K^WuX|e1rhV!qy&KjaRk+8be{!O9N}}UdhcBTF8IhYG2Z@A*
zd@pnonRVj-R;H2|LyuRgsZu7B>#z7RP7ZwB`09!+<D~swGd%Wwv)backX>5fg8BoY
z(x|m3I#17W6g<AvJD~oX-{t?3_Zb*kx0oJZ%EY~`hH>k(<GsI~)n0m+ZT;2vDbsq^
zHLu^2lJ<B1T${<+{qCxng!H<_eYdtsxSQ|DtFQ5}%wHCK=Eg)vkp+)V?A+D!EW5g7
z{SE(QrkPWwC_fIkA8>g}9LN7ao~+ALIhDeH`7H|-cRIU(CuN?nZb3w2Npr=^M>iHd
zYe}1Av9r2@g(ol7n{&3@zU|CPg-@RR`4YBzk^1t4wMPpxmxq<yvAUUk>}$tad*i9G
z-u_`7cS3ds`n~g3d7Wgm^X3)H$NshPcI_*TEE-Pty3fA()N9#U9&w$7_rj5fE`_W(
z$(!Wfclx#IshOWxxw`tYKlKMK@SR~W#j*2QhS^%B-H(@Dmlkolrl0Ke@8Y2)E81C&
zor?~g7xp^1;kE;tZ*x#FuhK<jm(-Rpof7`I!sUB{j<T&?Im^W9vV!r6Qwv$Y`dy#I
z)Lf@lb8OjLake!LJFMouayAR);jii0+qFfL+eBPN_(A&$Ua3DTiVdVx9;eiQu&rdQ
z_5WGulu$HvWy96otDEyAlBa*U;9+q7;j8_k2UN{Y*aq4*=1i}&x|<qiu+|~9AW3iW
zD(++Q58JiYb<UE^5Ofc=(_XN4Ti;p*KIMZKH@Y()-tHRManB&L&!>GxXWPSj23kA+
z^5z{cXFXM%ZhEX`{g#J2nB}u(oIenv9p!gU&+6D_#&3@oo@6OKl+VGg@?}v}qqSDt
zLEcK;=TaZnX+_*)4LsOwQ9MUy?s7G5l|8(g)op(n+$~!#Z0}wAc;b$plqH8Fm;&XG
z1?|?6<~|Z3aQWu8OKbm5-!|#M#T1@D#tFNAghX^~4*TbuZsFJFVxV+=vlZi_*jmA#
zNw>I4vrh(u3fJdf=aP88VSdX(_L!O97#k12Z{prB|2QzrEOkaG(@eo=Y4P=uJUx>n
zE1oDd#mvb26Qg)pUthV_*RS%za^D!WgCbYNmT4??U$bhz<RnSHJvl`@B5^ZhoR5mn
zm5Nk)f3mJ($z6qOqVd6MXFsw_u&b>rTkFLC>#^u|-|daU980$<Pdvjt<8k1dpXYeE
zb01h<Iy1*a=EOA{{)YbkWhGAH&Yy4m4*R?7&4J+ElkXqw-sU4V^YFy#?-}*qj#zr%
z*qmO&sJLymZTPvk+>`UP&Ht{w^GcK9h^|IPMUVJJo`c~M91H*4TUk<LJ43RSdHpw|
zUe<X|+6VMvE7)f2UcEo}+!E_26;ej;r|^oa_uAcPoaka&_qg?)+o`o}5<E7xY^~z%
ziuX9?T%Ne{dHjp)L$^F?Ot<V-O*(N@clx3Gn;nBgw~0M@c<befgo(2LjhBQ1%{DJ+
ztb0&*j`yEp{LCkODbbIP*V&&;IHtDo1gqYKBiCnkJMVknu<_U)!P$>?zSx|cqV?^R
zjFGJrubO(~o(Ed%_tvMXFVFuR+OzXkbY$Ix^>2EOgO>?9@A()MCD;4!?7``WjW6r`
zPUzY$zq@Xy+w~U~TED;F{;J-&u1?Cp_Tv9#-@KPA%YNfF{<e*AF{>%hjM%k8Hoq1!
zKJL^uNU&MY%I35GPZ=NYjJloDfxHq=7uoX6=zG(Wd*I9I+)17Lyf~Scxf|?sKd<>_
zdR^;BC1D+d9`R>iF2r5@e9O<{Sms`jvfs0>alhwi`Kt6tdIfjq9NX=2Et~Ath{tIz
z__=A~TlKR?CZ}ZV>-ZsiwQJtxlFzP6-&}vUo@~(zFK_VXNit)8E3RgEsUh*0a<0U)
zi8<13nd(~-m;4O1nJw>hH}R0i;f};D9-l+x+FvCe@>ndmRIFzUN8O^^tLKRI*d4y_
z&%La4Ki8#?9`$_O%UpTd#Lnm$qzRvB-Y=lAob&PuJLcf583t!E@2mMNe#axcEU>(d
z^K!w-tl0*+J3cOOU!thkujbR-Uq0J_cO|buqLhuDNut!BSGQX-53f}ew(_{Ri1TuR
zV(x4M-kH-)5^r&Muaqi@GB~v5{DuUU=@r{poq4;&&a8X3{`1FDP5YvsCy%e%b#<AL
zSWgQ7QtN}M{6?$A4*r(dl5oVvq@8tfxKU7q0n>F|9f^}18+NiTwwKgMJm_&O+ipXG
z%I-t{+-;n$TN0Ke{MeAta`68KFP4|Lw<L&2B_8xByq%#uT~4h>;TR{k+k^w#eI;}y
z5)W}WpEF2g@qBo@MbOP7@sP%q!z~BT|CUwjnNq=gsNUmX{GvPd({CPb30!A;xaDKX
z5rf1Pg+819OMN@-%T{~4&T`&#y_28RxBU$=+7z_?uhE&r@bBxZ#r7{z{o}c3bGN?l
z3`@af8y+nCdxvTL&4_i=9nahpYYzJ6vcuoO@5IjNS^FLLoNZmU?1!n^iws67{acn<
z*Xty%*p|P)_i>R|^MrX}mRt-Ao_9v9{*gQ@Y=Uj!g}UddOkMYT3^giWKiR;vM?5Xy
zt9N2+{Gni$dxfT)eeb1G80MatTpppr@2SYR&aF!=^dm>4@2W>>#+pZZJpUZ?IclD1
zd*;>lV`{rLu{gWjQB(Sp;M5nh)?wxUhG(5~lB?cmKR*0zZcpiBgH7`{b+U+Q{@LsP
zSJh+L>G+S2dwLm{im`IoivISEzIXQIkJf0lg2zT{#6H|y!1Cl!)}IA>QIDMFi5b*e
zFPx=$^UuqeTfsM`H6Cw1qBQ+SVZ7RH?FK0owHyA=j4n&tZ`58P_HTl&@!odj<Q;!3
z<J?|+SiD1b)7H*g7v9&*akzb9kK!#6o+i#|1`Ow)yxYgoBR8c;uYUUzzUB(abf&H;
z(%aI~@>w@k?3>Hz^EtO~_kC@HjzDgm?+GzV-wGA3T?jl|E&k(Wz`i*y!R3!;+`fD)
zZ0^E8FWx*C?b`eJl4_GzRb%fu{p)v%9vDe`noc>nq?>nP=DEH*3;R=7FI_%sf9a{)
zP9e2wQ&ct{xTn2C^ZnUR;q_{q*SD}XAIRxd_lYZ9ImhnaVpp{tPP%h<`0kNc`dro5
zmiz3>Zp&S}g|{mnU7wYG&>>#(D)WhN%2CT18d9{xH#dEq>&wBq?_>gBYf<NM-><2^
zy=&4JbY(Kue#zDqQA+)q7|<PU)z=eI$8Mw_o_4VOMPio2vifuPo^J>|l$_{WDOq?)
zNF)3x*G%8_0mmBO-rDjb*M)DVi;T?HCkn3C&q@up-`Ub|ZvLe;v!*L#Z;}^$e6{D8
zqWb;~$^t2ycNn`X+8_QpWy0n1!XJO_m-p7~d};Jtc%9(aYiD+NnlKn{RGPejjZf;6
zs@kFh%VugFXpWn+DEO9pz@M^K!I?kacD)o@aO^GH?}O#H-t%5)*7p^d?r+TV<;ZRZ
zwX~!05mJ4#XIdG^eH2yk^7*);w6E_upYQp1Grw>e&+T~X)z#`ydfZ>qc%KdL16d}m
zE5$!P$8+vr)|=XM_k;PaM=#Ri*aYlv9KJDO?wuWLAE-|c7b^Jk!(!>C^Ok>~8r)Pb
zpLcchy#+5io*d3`&G4)#y(+46FC}AP!ol~Ki!zc=*qa!om?bHEUOI!zw12&x#9!t2
zwsMJAnEVr%J0I^}$#Rf?d6Mpi3CB}QnZj?hd^+K>N^q}Hhy4Y?g?%550{0!SxVbBN
z508`QafumQ<yWO~^Uv*<<KKS!iNyY{R)+)o->JGyJ2+<|w?MS}{kVHPcQl2Y7W}UM
zUN+}tgN|G7yy$DZLc69O@tk}zjnjQbp6u2dbz{q_7i%ig*v+$foSNo-?0u(SbFpq_
z&vjFdx$jP%7gj$~FRbXsICH_jlPCXlGqILeFwD^OnryzpYmWRUQJLv19#3q1W%q}g
zE>HK0PigtTeVcyfUe%NDZkvB8-*H;2*-NtcNLYe2%e{!L#&IU8ic)*i9hDcae_vg9
z_~f3iSpmu}2Uq_;+0i2{d3YxKB1ub=xjw6}`NyfVC?t4`d<gt>;qzy%^J$A0XJ7UV
z{o-Z%Y+q3!Q_!c9D_v6}Q%+q~lPme9-`Do+@Ux8$ej*19yH@rFO>4YW(ry=eX{BFE
zMd@Ti_AN32J74|%sd8EE?%k@D%9VZ>?_GFs%-_5G8l%O8wQ7=2#PWj<KD^rPAGGF#
zr`C$aMH_df=I~B)Uv=>D)+^g`bW-pCyV=kcvqeZ<qq6Sl)2WN69tr%(^=9hy>1XDg
z$W~tLeq@QqgRprT`Ht<4r@i-mz4CiS$Ww8)M`s_HIp~LOIw<*g_EOu6%5yI<PvXCD
z_1*d1DjE&W40mo+op_kRd-D98r>b!&nPxjDb)P-Z(EI7)$<4m(4V62Xb=jW@PIg@@
zF0Zxp_zdB*Mt2@AIX!o~#(XOa?OM5=>zvY<OvBoLwr<+IS%q6JeDjY#lB}#1Lf#P!
zy<P<tH^15)wYr&lL-no5^wKHex2l&j-MaM3-09M*&n(jtx&2?Ly?bV1_T52=^SeK9
zpN_riA6rYFqkk$EEIHr%SZi}(YPxEaXnnZIw5=D*E{10u=h;>G<JyL~!BKPccq<tN
zFWi4+X~d_cQ0&d{WcQYm{oz7uoS$Au<=L5TCm=39_2iO+{XfN$|1Ztg^egMQpL+X^
zM*6aZNUirD9QvlNDO0mQrLfSo&+(kQB)`%9BnIQP{){(0;_ie$`__GSk~3d=VDQZK
z=TyJ`WQ;s7w|Re@|Iep4l;yJ4Jl2qK4!Xx*9%pk!z^Sj_WWv{tm5#fsLXX=SSPApL
zu-u|1;4ro6AM=Z!pS)*2mS4MLQ`d{En-jI(bbs<(yl(e|g3?zvirwbcYS$MB2<shm
z*K@V~DEM&Wq+@~6_t%xZKGV2zN&a*b)3x3F9$NqBR(Nl|tKzw~-XSa7bHSG~*W&*Y
zJD;!j+G3Nk=|#09|CEh6Q|8+*_^|WRU5*L0y(YJ|t&?jA`8;)k$#?7eoe`&bJT_)G
zJ{6z&MRk!Z|B@Z?8B5coKfQl+ZLLagQGZm5{q(PQ5<*j#MjDwMZ@#*wfZt=+58sA-
zy>i<>H$yL0ed7(RxZ`)TfxXDbD#tGD6MM+2(qFH1gbyYZPqh|lELjqC|J3^IKX*^f
z*Zd>tp`cwI^emz|BYVl}g3ru9+2fBq2zxczEZ~wy%>SSpf(#oU9(iVd^k?qUzl)`k
zr44S|P5I_+CZhdzu|&cjpRBjD_mt<a{d-*Ee#YDA^<i##MU}A|*%x>-YOZ*=cOs)^
zDBE1iM~#yTk2JnHyWf^2Q1*yNuFZmXwF^X}D*rr{VX(~DXl3ziI|naAz&mqJ>$Q`m
z=R~wNteDK#ws5+S`7!DHo=h|5=_tIou2dYEJ!QwT#r}^DzNot(B5wR}%Vnv}v(IN4
zZZ-V>$E9k1gPzvzX7$`J{By4P9Annp?c9@l#qxresK6JWvuoTI|4S<S_aWg1`ynnS
zsiRWPC34$lx=i#?J;_uqG@+#Ki*YCWCB3$Y+cTbazVwR9{$tlZ`v~*P^A|N@t6wlh
zZR)#Tblq$DoP!g!EUziZueCJ(ccO6a*2Vk2Xdjd+;tF}%S)cpqtz(6uojXtYL8lm%
z)mzj})MJiL%*@Q@j}E-ty7liiOU)b(<BfO1z4aEHJyZVR>;z`x-M3!mF->|fF?Oy%
zO2OpamXohto9vl+I`a3;XH#x<JMb;qR}{{{w$boAPrZl$`?rNLWi1C-X0o&$+|^(a
za5C~si4=>=KCbq9%YTz6{?`bIn`E7JI_kac=N-yRqH4o`nX#xGn=}8p#sish?V5nI
zl6F5bUR!Rs_ij#0ggWD$f78OxF&>riy1YK7@c7AZG22ZTo+z2?pE+tKU;Z@qA?J$k
z6GPTG)yAcqGWzl5<(q_ES8F!^bTOM-D;MGIv*-Ay?PszVrnF98JNaB&>vWe+CKWw1
zE~bZDk561-$9L+^rQQwCR78Gkvv6G+c4$)Jx6AifKQ7p!!qlty>`aSDfbtdj=^Q_2
zZ1CcVdAuU1{Pzss>s)Jf-wQaODiHQqoEFFX@|g3!+%rWiSGD?>uRA(r+}3k%+IwSK
z&tV;1pYvbrlvpPJ`mn?8?<tlF)(Mx_^9D<Jo|67@{N(}9SyQfb7w&dEHKp0eY+JbU
zB>{iCj7=%m;^wG!StdPZe7K`^uSI0=hPuB+m)1=ao-Aru;`MhEr^u7<n<9&UcE@Iv
zCOA%E6@320;{H_6!{4^CJic*h%1yNe$IgXcI%!mNs+Z69%!Q|~`<g%Q*zEJYllSTD
zsTnS;h3o$vDJ`!0uD#Im-QuKTalJxiU6DMs)IAkS{F$$O*G@gVtVrk5{jKlLzn*sg
zcAA?}hIrv5wv0-SPG2>P-K9sHef`opBn2lQ4mLZ%*75aiiDut+?Qge~C!c-!WZn|V
z7dmSNK09eon#E|`P|H;Ci6^X9HhS*y=K_o5TempHcFqns!|r_XleqMK?eiD5v`FsP
zRyh!<p=LVepS*hH@@kE<;yb3TuUTNj{C=y9=B?wOc#b|UkDT){VfHuMS=<X%x7)r8
zvR@WZQjx#-#<8nHYLj}U?dP0Te38avGKD!!qwqt~_wM{MmJ24ui_i7Wcv29v(QRYr
z;k=jDzfV<Kny@auG1ZRmi^uokoAGRuIgINC!zKkhK6SD`cFxIwE5aXd228np^nCEW
zh2BDccf1jj{*e<iukhgkuWN4l-4zPl+U`Ye=8ivS-)Nr8DW<vjONsveC_4qUMxF_k
zk<J|NZ2!s}xl!(=DzJ`WtNN9WpMIt3Tg$ebnj)<feconmIA6`l*RpFjafy35xtk@O
z)-l?+t(e=X;11i7eYZB=i*Zc~Ix;IK?Y`sP)e=|ky;&`o)pM`IozH%q<@$S`Cs%eq
zoR=ealK+cOs=Czu)qA_t^P8GduD!k}qSY1mR(tPz^OtM3b!x7gT$F!a%1-QJ%#-C?
zju@UPWLV|CLbdN@QH8kV5?LRWqKj`**F@w_j=eKM`)rMXqUD6Z*k|SY!`8LtbjJEM
z_#J;Lo48ix^bYCBFx{(p&ts0Bo1Xr8-udvS-ur7mlzZ{Ucl5?c?s(2@wToTZKyP~F
z1>2&)_jAR!{LGC>Yi-_sUER%;-_ic$)~R#uE-JUFh}+G2T+}9lpI=;y|JEM4gQ4+1
z4}1)Lzjbc-v2ar-uE$RW=T856tMS&ma|;<~O*iiE+`FSbs~|=5AUlJokI2u^u;P{H
zpFee$Y^j!E@9*~Ddl_YZE95rwj0jHupjtb>G>(@Uc})ygzU}(@{Bc0SVykSKPhD?z
z&ApqZ+E#8^`09N7C%t9=YI^P*xbZvjw#qXbnRnWvzy31V&z<Z1*P=~G$)nS*&Gq`h
z#;JmeB8|yQl-<g<9q0;sK1Zja%OkrmeyJ^oWx^Mq$yXUq{&(&=d+{x!=<$><J$Gzd
z?EW;kl|Om+C}OeA!gbpop0ibMnJrX$U)kK(`AI@rf!@~_wN?`a1LkWbIP~9}x$@z)
z#rAS@(&HzHWfsk@_Btv%Yl7X}J-Q+<W3ytkFIjKhF~#3{>yD7c-&41jt-QFqNGLGn
z-RXI6Hol!}SsFa`-sRhNKYq<y_idxj+{_L6p;hto-aiYNrLWMsahcZM&1wrmUe+!@
z^^Za8>q;+qE=m7TtC_2!C+nGc&H5re>q*P5+Iwdku7)h_e>CB~ZrWR$(3j0M%R^o|
zi~iQw(l?3oai6vK(^!k{yFoMUx@>PR^^yN{Ww}x91k-6owI^=cO?}zCEmHHc`_}p@
zgBQ(T^tZlTY_-8$;(udP4F3ZAsV}(_CL7g;99M0hVEv+^O#8BXX@Y+A*U~u?=Kd&-
zX*Dqaw<f8MyZ-4Ct=bUv^OLk{m&kXAymUJivh@6yhMgW75o!j4^}h3x()i9eU#Yu1
z|Ngb5=cA|J%VgSL`f{(v-tbqKLLaYAzPMjt@`1zR_CKCJPp(<*ec#5FxoqG1nublx
zC3?5CzBt4yg@y2W9P!J1!dAL`w$K%ZMurg1&~mq>EEQX97N*CqR5d&8;_!ZRXgt%U
zm&tsS`ox6yZ&-0i+^!?pE$42CLDqsRA;EVSHT*Hs5<TF!_u^t!f%`c}b6>?=tz2yR
zMNfx|p~K;uYbU1)Pj1O#$CC|A8Ufb}k}g#=9AYa_&p2~Ws)f7WzijDYez^@h4miA4
zxbjnZ1;4?YOy~T0PDXcU%q-)nlg?J>RW~})d^Sl+#_K|6`SUNQB7MFH-99Ip&h$s)
z*3CJe#adU-{`BJF=lknVEjs8wcS~!5-vs4b#ZJP0mW-xa0%H4j2W3xuT^?93aOumd
z%;Jm&F>8I^Grt^#x9nT{j^{FKgOZI(zQggpB?mvQKD+b(##?7g>t7h$mneO?fcI%t
z$c45|U4H87S>AD5nvK`}yPME8b#F--cX#&}cd3b?L7l-2qBEnf{M=NjCgOccKyNN@
zZ6|Zq-MQ-WEw^ekFB|jN_qy@FIa~PLZ*tI#Q&ZH-4lUiMdHctj{)w|^Y0uJj&tuue
zP?~!FRO6|NFH5ejO7)-mj+1B6lg&MUvy9&+CYelmSaWFi_MQ7!d}F%a&nc_O3g&xy
zp>F%iFPB8KE&9csvQ(e9xz7`J*wPm(vorX8=~ELc)8y98Z?4P|-TN!3lk02lo!zIx
z94GL7@?AOMUE|l<xu<qoD9<a}%q_Kgjn6E1i8XQok9*AZ&!5=W{@q>O<M^(E>!o?o
za$KqG>`@E%OPLn<a=w2aa>OB+FH3BHMz__uqudL+V$*-rX~f1H49(uYHs3Vv#Z>iu
z(bLasuQ|ZDVE#KV8SRV9v#KOjgVx{b$TnZUCPY|k-f;=Ng#T}??@W7D+H<6H6%W(f
z`9_vfiYEmota-JFwb!wcQFPw=3B1#|3_`S(ubtvpck~(S7p^DAt}K46k+5-NOY(xO
zX?EGO9jiVE8J629Y|>M?q-7rJd0&6qRh63^;>}EI3tnB@ws~22S#Az*tnlWJRbJr^
zb0-U|-Zk^!G}f&QAGP@;n`bLe6myu_CmHc!D!<j%goUQJPM0Pga?jVFFFUb)ZIj&O
znv>@i>=PB3xa9`lDFK(gx%!j)0$#j-%B`_gX0dNB2YWOBoDB>jkHp`eo+c}kk=xvM
zI$(eM>Uo^IbABE3)mU(Q*=&W?Pgq<W^4NFpeic3E<XS5qR{KQ?{Us@PK2>WxSUHP(
zbL*N7v)iT`WtzL+P1JwcE^<NfifPZUP1#R3nAUGGyllSU?LMv7!rNBdjhV7;<L9H{
zM~~$5N#F7~wR{!N^(o=yV$q3;uU5$g+`c-oePO9XhQ%TF_T7GUuU2Nvo#R;1`|efl
z%Xij0(q*n4s3@7LR;lfp`qXw|u|e`Q>BCp$_lbM4`fO@D$$e?MUvQ{?q^HvIqi%Dg
z%GTD(Y)ZSAB{r`uOG-T8cfqS0cl)HpXY(5dJ!M?G#O4#*{g5{oPBXX9{NoY9YnE+$
z=F0vYMXycT(WTrkrS}TwYWZcJUci+qu;6#rE8pw(UF>hSO?sR8s>nn=i1jA__ky4D
zJT@tnJl*^AZ)}r3b*?MhF`+E$@kX(`Ww&Rs$0<&^GeJ*znco-hV@~f)dOZ|7H7=SI
zuXZ{lsg`x9GuULpi>;Fbd>6gE)pPJlq=v4E-fyFs+6>D+%nnoXE^E<BiGLQoaq6bk
ze3te(?wajZN%tR~cZ_@~VYPhXk69@z`>xh!-}+GFd1Y6xzR=;k)#qlF9pV$7u;O{s
zMe!$-k1c*2dGh;WRo=<*rw^Gt-J0E{*8e|7)AGvVz_`DQ5{@ojv05fbCBy2s{C4lE
zLm~kScdC^Je>KaU^EqQlkIveMDy5Ty0^1$@9_lVHxO7EbGh&|1?i;l(b5y6CGU$_8
z-z9T9&F+TP*T+*^=3j}NI?JoB_sr|5-YZU|`bB)*ohFy{Qz^zJq9`=u_pu+xyP~g^
z1x$E!?u+~E>p7d=`$?_b)nrlQ%qQsZ>hLn{`Tt)EJ)b(m$yA7cXXETh0p`M8mkZ-V
zisw8`7Hs;z^Yoz*hwZPvsh3Tw_WSTOeTUp}A(wcGNUr{vkBOK0JhooYUO3M!s5ES6
z_W@J)r3(D<Z}k=(Y%aN_d_UA-ZrCA<=Jpxs)pz~Bu4BzFTJ<`Ub*b%9#|M+H`V}@k
z6)^EDY^Y>7^TR=(=gZzVF^#3WV{~;?j@7<dt9<oL+S5S!zQ<g%ESjT3?R|2$=bn{~
zei4(+I$=@D)+5!am$HSJT0`TlxVc{KS;;2<pkRd)%T=y^C4OtpxjF33=@Z;KeOKKu
zPV$;7&42Y-L~o(*tJ5o%Pi4NG)cko>{KD0j<jyS)oUC?jOZK~$KlUEltQ(xVuEpt#
z*!0{Bdn6dQCB=WAT2nBMi=pl|UssRw-tEO1GwZY-^L%MzTv;G;VOr6#9jCHv0vg*-
z);>F+nDzd#htF%CnF|~E8P=vhe^q!Te5=BNzj9ZZB>qfYcH+{zeOyP6i1eSnQ8Mq$
zxxy+xr-?IrnYE3K^%^!YrtH+Rxv{O&to6_P?h?k0fxo?WEfC;*p~j$jVp{z2Em_v=
z)3#M^j=b<_is+iz#@9|yHomt>hu?|o>)Gz*TXdV9cZRv2?vFLsv-P`lZMXPL&3PNG
zbFwtOWF-$*woLiA{{si_HrsVu_MFx}Fa35|x06)vTxC^#$=K8T`hPwO^7;3o%Aj|)
zVB74o-3L3LD46q}3z~P7*-fDA-x{XM1BvT&Og0ybxrf;PHQtzUJ9G8AxB0?zpINQw
z>wMRBru_3`E!|a5%!*AXPR;Pzys=7d+m`L+56@Vi^H^z@^sVwqrrmST5RUZAJD*tb
zJbt^Zbmf8D-G$Q*9+~&(P_Pl7Y+Cp-|39-UR`9vT><*UYwDQT|``vWm!p>Q%CN+pn
zTreltZ+pH&&gx04bXIxTYiwC*_ILHch+0*h(|H9|%Tt+tcXevI6jvo}GtUolSTD1$
zL%++}?#d25A@{d_G82MBj(9(Lm~tcB;C%a1UvaN5CQqNd@C;r5<!D-bYTE8wwO6B0
zEsg9de|6|o@QieaZI7$+cRO=7DoM^g$?O!T^0E7oaHmR$*CxSM`CrC&x6D$R8q056
zv3{0(*-f4zkttlf`h5JhOPwTaj_z|%@1MkFoo}Qx_3UhQ?@xzMZdUPM*!uSBfmWWr
zIR{iE=0A({`Q+ty*UN5I!9P>}xW~sghUVod@@r}b=o~q-FGW4+V?UQmuwl)v*L<;-
z+}E?7b(Vx~|M|;eug!(Oug+cHFfnS0wTsAfxe0#)xD<abOnCUwp-$uL%|G|1A9pzO
z?Zc0i-)rCUWxLL6Z<tcMarb&BhiKQ;LY@1<^%X>CJap`2{~}>2<9So-8<R@@q_^w1
zKF1geWly|#T}9#QoSCog7%@L~+Z>_dy#99fQ=f|~^rWAs?%A<h{>8gQMg8=EnAgmg
z*khM5eO_D{=A>U)xN7~Qt?cY&Z#VLtC=|5vJic{iBX7T82<wAWS?^9o_?u`>Kal9Y
zv#TTB;`q6LJDhX`RgX_Be)CIz^}UJt7JCc&FE~1N@odm3it*#?DEOU{obqf}+{#0C
zMWHLs$goEooI6F)>aW+eIwzq{{>yKIC$e|E({BI4VmR|^UV-}Rxv?^lj<Z^)c%PJ9
z+F^ZEPI;=bal@q~{^Kt_cZJj$Y&oV>JloOSec{Tp6FHV&lI-WRQBsfY4wmhlS$kY|
zd8N^s5Q&0m%Wt1rSS6s(d|^k+oD~~?-w`j0n7r(racp0JUZmE0cCWMc&1>yU+}_WO
zKfGe0?N8IotU~4teLFs{6SdmSu-VTo<CDHsXUzAdOUm6n#M5tiF8L%bvgYO|?<YSm
z-i+jY!Cs$y`maj*YJs2}-?j-(Or?KTgt)dp6W+0yWkJX30HrxkIZp4+w|#k{=$f*t
zvO?*)cWW3fcV6>b@!9ukWsc<rAv3do?>x54Fs>8ijF8iCiv1*Ftrf}rgy+YsBX^#B
zS^w+EV|BrIfh@}>)P1@?f6Mdb_rEws^2<-*<NW-vnMwNC+ons}#bp;3%L?0-l`V6B
z_FUlpjs+#hZ#(?^yNW%;YR}Cr4LPq~wyb!PG$VGuauHuts7mc;-`0dRyY)>syq{@1
z>%RDhk6Pw`3_tvqcvPMlA~nl(Rnf(r5wp+b)PGFS@cOj(Tkp@{3D1NZ{#{$WNq&2?
zTjWfZlW!M3e}9E%AB&4|{`>}!%qo8^WfP_yH_DIAp8oZ(Qd2J@=axVwuiu3Z-S%F~
z`1mu7j!la(oBYxD=Cspy#S7N1XWuX{Hu_xR#mx&>Mmj1!o#z~0yYAkShfMDdS<Xq@
z*Twhj#ERy3?6aem-k5AP=lkPY3+AXR?ty%VnOzw+e4b+TTR^MrN@Y)avHwyzg|c-w
zBORB%-^=UKI=8ufMNvTM5*E2VA&blz3U_KZT#v0&$XjTdb}_JmVK&!_8J1<~hjQ+A
zF=onND2un%keYEo@j${2E8CmFIuk3ok0^W$4z)L&altAk+2{DyKA*XQbDzGK-apxJ
zUGV4m=QaqRNt~;fBcD?^_t}MOW$B-rc+dJ>IW|$+(qwMV)eNS^ybX`C9?o9pTXv^B
zaC3n5tWc?4MSio_KkMOV&zrN@<{9I}1$S$w2kT#L4m<U>FjY(W@Q=wmSl7JZzR$iu
zc2{8gKC_2Ci(d0}E%CWf@nmyXY<R@;me*Dba`-$BPG7ux^Oh6MJH7<1QJ%Q8%j(OK
zrCisJoSny)s5oig#{EZ@?3+53;oL6<&#Ot{zn0BuSaG^#l3YpKmW^TR3Z5#n1!5n*
z^pfRY)A97gXR!dQ;+}OX9DIyQoG(_{@bRfFIMukqu9v+vKfJF-P|L7)s_J>uPen^_
zd_Tslbb;XobH?f(_Q{fG`PyfF<<z__xs%)G!0nvszFVK!FHTg9xa}xgu_1od_Fne8
z*H^r&Q8*jgGb13Ojs3{wqW!fie=c1U7OUv9dS>U#yF0U*a$nwE_(@Um`#jb4H@AO`
zQ;e`y2tCNxbx-<op6SPlv4MshoA@0v1Fi2*>06q5|D30ZnfW=xbxVYN4Cc<Z@_xtV
zb3uCNmt(D&|D;|iJvvxAZ|+o{bwxqpm3?<+B|C|&jLFt}v8&|p=A7SmemY#ctZ>eK
zMct?O=@R!oJ64vweUlyaa$VT3f-AG5n0_g=zqL?X9%91pB)-t^^xc*3?&N&sUT}*+
z%weHj#<Lw<4#$?~uAZjWuvdPXyUhg6q6Lu`bK8E*K2~%4V9kTC+nDF4D^9V`YV&=O
zIrF-56;qM2|F&&A^+anIN&SCU&2`h-aytK~Rxaz=X@xK1<<^`Rw|fy%bL4Es)u&#1
zPTRi8>|eWKosjUtrz%!v;rG@aP51ekqBXm^u-KuzQKWR<@oW7JQ#K0sESQq$UUhX{
zLrhl1{tt~?F8uwm!Rgz3`zM)gg6vuv4zd@XO>Aj+_D0dlvibuv@0RrQb@MkivNu0p
z#XO^izieHipV#rJetNM7zew-l^s_p;T{?f&hg-WorcKq6J@DxMT!vzew{OeMkG`|u
z{(I_EQsdVy){?uE&N=D6<MFq-=JulN*8RSeKK9(_GF{o{bo*BS^b5WnFU<7anZss9
zZ7Fx-<5?lgmWZ4<a))0tU}<lj=7;2-{G|s<>pV=pP2Es%;&;%O(lfpL_pi}cl`0l%
z-X|n~bmgAe`c7RjOT+z^_l4{fOG^7)bTPT}&MI&FKpX1?Ja^3}h<s~fmr|VT+SMy#
zy1iB0=iG|g)9b}9a?f?$xLiB6B<)e_{8vZRPken=8^Ro9mu=Nsa*KuA`%=lWB3&Jk
z#i?iiT&tC}4vmdD;by+*$2QmCLvxHI9y3}k_EqKNa}RA}iggX^xv;uc_V~5zi0dH_
z4)W`Du2FVg{#!|R+3}6?0YW{VTFt^&w|npFjI}zq@5ww4_W$R4H2FPFc7&CuZ}r<E
z##_n|dwH_M{Ve+zJ0==zaQU?Shj-nfr2Ao|lU6v)Ty5o}P|>P-{=mf9uFO)eUw#Rl
zE13Dg{E4i4c#h42*J9rqUcQdlzWlx-%kCY;!T*+=P1`5c(S6cdRd?~`*i|hvV{a`k
zR?6col4v*+qkMnq6EXMlrN2eP4DYVrwr{(JeL&2F&=XR;ay?F$ubw#Ud1R|V{l)N!
zI@fNL^Gz1|I<>KQ(boWx=sS!vCAW(&3(C5sK0S%|Tu1h<H(z>XD>a#Q8H}!oU#~B7
zzW3u(PTc38TKB$m#y?pW5x(^Dk;P}Y>I%FcdY}6Kh?|Ace0|i}B|Np7_6Cn^>?W*8
zSs6Na#SB$HtL&TFdyjnHq*$#lcgFoGYtpN_S&MILOul)^d*+*zDP=ML4@*~`PU&ZV
z`_5<Pn=LxeLpK+9rL>zSs!ozEyrwxxw(7W-iuKuN%LGpH>AlgNIM=JNLFnenbst29
zZm!g8UZY*RYU$F}YjMG4R$kv`3*BsV3Q@Xo@zuS6O0JaUUOFz(KPA3e`FG~<e>RwO
z;>DpV?v!fl#OW-XZWk-$o#$nhykTwJ({bQQv-eqDRioXdOI)^X|9hWF_*8K>(@d|%
zB@Suo0$eGx^}41UKg9b;v#)i2%hHW!?{rK$_HEmlE1Om?Su)|6S+I$h)NSopwXH>3
zC;S+*tsBFi&NkZYEpc1>b?k=qrxSUc{#t&BiVO*y{;keo*Vf&p^+LzCZTTs3%<OVQ
zfYfeA&*a_Feq5P3<<fhst-pU3I9^shujg1{wO8`)+Y|jR-FSD+pv^>0-N!R|cG>4>
zsoTA4*p3>`+Mv__cG}CGeb(paeUfnArP}}Y%&&)c^VV&!v<RtZI;Emom}6dD&h|Gk
zV&~C~zC8uq$=OjZ(=4{N^(rX#>uT0&_D^K9d9rbL@rSG3-%L1DvTyzNJam56x06=)
z{%0?-*>;WpWgffSa{Hqjx5gwXE}6R2que895#M%~ZPSVhS{$}X>{V*);S1t#%*jpX
z)XbT-SeoN_nVAr0iuKh=O25C&^=Zs0-}O3D;kJ*Wa$`>LU5&;ZbFmbU#+=KC^gG|Q
zNi}{HIk|0BUa(5=hNhHFzV-{F)ox!A^i;dtIL&9<?xl03i&ss#<8>x-_fy5kp<Joe
z7FO|2H|6*a_J3ZWz{Ht4=dQEH?Vjen*6*hU-CXwS_q0>r&S?5vKgvBZ$KU^Zx$CCl
z?v%wFkKNOq#M@aWcCyXu@|Sf*or;Z`9+PMPwLE67bW_9H`J%&@_E)vWRcr#xm+#G&
z4M;x1_nn7dWLfczGv_9+*P5sPyNu1T*F9PO{PzsTYM$T!<P}&QGWledZPc$_ay;mf
zj?IgjfVc*Z2k#?hZ)`FBxZuM<x8k#D4po7%&R2M6D7R{uB;>Lk**8nbn}=_MDr4@q
zw^Icg0`G_~{4p^>ui@miot%a5rZjzEF!<J#^V&f{Mq%6BH`3~<3jdyRp549qbobK;
z3+{h2|2pq|{(z@v@rBR~na;w;NpJa19B!EUV*6?@ak&dD62A*4{_!hV)}XO^;_W_m
zuI7C=A|;>S+vDJ1v}jW5LFPm3Yq@6bv)IsbNc*=KS5<xqzejOagWkEOdECyGTO~y#
zCM2Ext+*uM*28nNlYPtLxO$>mRAz^jPdiw=a%SSI-E|Jy*4kZr_sXqLGMsU$n$J=-
zdFIPy@u!cwJ+NaA^0>^j<ORci?ZpAf;YSrr*8NJmA9pvBb(gif)t{S!^EVjlIM3f8
z`F`V0i`%~zS={&PKikvyYK=hK_xJ2ertE89Z?*eYS$cMb)U3HHa~Y#jY&~W?X585w
zbYa(V_AT|-zE3dRX>s!Kxx!*SvC5MnInJh%YAV?Y@|zfXSgtf5T(C#%d#2?po3LFv
z?n}(?M&0G>kY`+*!?xtduV?3GZ*1gU%VpR5SNF7Ho2lU{Cf35k#^PUGx71E%5LzBM
z`*p7DlCLsbt&hHtE@inA^izI9is!Ao$Bi>id@o~Pa@mx1@4F2uUzT1zDt(c~B=xn5
z%h{{8c@vju*KPZFgn!@44Jxzq+*5x^#4T@_(*Mae%%LkiMX52cdyZJr<gB##j@iMH
zj!iq5YW1@>F;#}7$)rg9&^VqrId-<oU70!D%o=+xbnkwkJ!iJcU4PY^yI0(iobB#f
zShe#v*OVjgwf@*JO<|tE-E(b+&pAP*k~xv82W^BWbe$-j|03+O(6pZGUB=5is?`~L
z*n_QZ^`)J3T+I|DmMiagQinA-WyPyiOSZ<E-b(Act$E?$ma_2F*?&YWC1zCc?#`F1
z;|;aFe!ywUlbWppn|u>AteMvECQQn;J6ijF<0|!Ozm-BN#I<c7Wq;2rS;Zoy|9FX4
zL%vmsqQ0d&S5eT6yt0FWoYi(bFFmHDX9s30W<N`;+a<Z3^|_|Qm8?=ZQ_+l18}F1o
zdY^Xen#uO7tWQNk)~_tObMTp0T24mjq?5BR^=~xZaH96cW`S^<8$mZdhKnBD_%rj%
z)%p)JCuL5X#p&C(XJx<~%f!957VT#{)*bXuy+1KLZ|Nz+bo&#lUIx#-z^Z*vvs-X#
zTJY<n^}UmJpV`>OcW~GFr$wuFA5UGjjBWn@H$`iLUlkeMWe<+LxW07$$74q&zCB!9
zX)Tt_AU0e4?>%k((~H=Ot}jWG<)8I|<*Q)zz8>d{xgSkLPI<CCxw6P~e*>q_*Tz(J
zSB*#K`trL&ndPTvDm~EkRAY(JS@PzB@yZ1@YYX~37H?5r5}~c{p}fs%NmcVffje1i
zU98=1hk6G$Y~NTtQI&xs{@{YcUlNS07B`oPY->vio_Rah@`}BjOq*20g)2SY3Y|#~
z%&O-XWSrV4w<aam@0IkK1MIbCXV>+ez9I57>nr>5)HOP1&b@du<HWO9U*_CgqQ|vA
zY{mYgj~*`mq4o66j}%LlBloVK4t!7;pv9a0+Gy&E>047HJn{tol||iGnJSqgbYSh4
zPrc7OKkR)QrvC8WK9Q!Znxic{{4<NH?`un5Q@!Ud=U3^W_iL${S@-<4=D}O%f0?D`
z@-=kk&EQY3GwxizzSC(f-$m~>={56vtST4r%@)5o@l;w~PtnH<UwNe~e|$QkcACXS
zuU&YRwWX3@;)KLWC-WxH)XJ2<`f_sZmd!ggPdh3fNuBs1aJK9oss2@$H|F>KNx744
z${$;)CF*Z;?Dc1k*Ad&_u9)7m$Dm??!J+SGZk65rX<^3S(SC}5fgjtHzGTZ!laewt
zzFWT)X?QX1tC}F=$$D=eFPjCiNsB_`(j8~r-n7z@i+B1uhVy1Irx~@n8?vG_uk2j1
zkV(M(*mqCqojL}qgHAU+t=h4K{SB{ks=~DLl`C)P#<7LGZ(Odce(Qf(pe9G1RM(R3
z3u;$n%ybRo<5bR+{cEvW=)SLwUFOOH%{SUL-OL3O``_)0E$ck{Y<iCfqsb(@yVBxi
zj$D%)x)w!SY>3&U;<M$|gXtEPYqfZt4g4R5Exxhm&1$Wiy=RRSS!U*3ZM8mPu=Ul0
zd2L}k>tq>h6-(cq53^kG(YAKB+uAo=vmZ_8pOFyO5pkBk<s7rK{PCNPEV~uu&d+-0
z#!>!-V?i$yv#@V>?b<GJw<&QB;xk(mo`ybj4Zq~3<f_KOnX$anMB!mUa@&_fw{oVH
zHa2YHStGOKq)y=loi?WX+n*++ZJgM+*F=wH$(xsLDOoGtt*Ln>AToVoXhC@CP3f~!
z&Kj0(ExPzp^2nR>2VQsGQ$8hc<UQw!^o^eraxU@r#G2P0ICAvrqfc>{c7=uoCvfb_
zJmBZFUg@OR#?_DCub$C&hBINO1@ptkrqme%Re9&ntrLu$<QllGajFSRot^^coJj!*
z8yA0l5T!XMiFc{#(aH&tkLnmKZXEEsS9AEhtbp#)L(NlPEwKI3YvU=cY0q%6?c)1p
zx7{q!;`d`@DlV#*J+HiBk|o2Z!@ur=QP@-44bOdTCU7=fTU=3)GL1u}*mBBih70%4
za%{hFOwh(L*zuL;mhy|+b7#%Z6L(&}>GOog5$q;^wO?7EFXmhK>v*H-!!K$-L=U^{
zm22Z%cC}JMt&c}0bB4qhdC$W~Ht1JMso5R-am~O`KRb41!>prK)4p$=!?(Uuf6-UQ
zhbA#|BG+(p+Zc7%TYR{>MEs=AvY)}0vmQ)q3SW9Y`p-<x7jlwp%sItAfs(l&wJxji
zU9XpDwiI(WSk8E48PAEkjG-&9R$8+eE*AOHtn)_UvXMp<-|i@$D3%WjR-3b~F`O0_
z$Pv8#>0-jQr9U2qGw{~8ziONr&n)C8>%6OW%gfXE%99kHiD@>PHu_zB|H%KF{Eie`
zhSa=0d-g59xkLCzO2D$20ZhGFy=t;zj~b^eS3J=B>csMd+%_&@%TJm)iL)2_M=W`C
zrAP4uf8oi#fAXhx`S$BL1T70KTgJNh`H9Krj1=$wC_k_zQ7R<7>$$|I6HRTb^Hp9p
z#YcN)NqiUJS20drlP3Q}Vawu3UEAH^kxMjlSe1=gk1mwE`z2sYaY?&&?3<kUlYAa}
z4;~q`A3CL2#rkBGMzeMNJe8W150hp^|7>^`+}3S!w1qn=^w`o59w+k;sTbe)y|6&c
zS&oO{h<Zx6rWEtrzJ)Ep7XQ4=YFgeN+hBe8nZu=b?7SB{=YMw;3sTZINV~RAs^y8p
zyY3}#4+!p3WV$nZ+H}A7j{?q!l(T&`{v1(gVf0$m-ltgq@yD4#C96c5b7Z3Kbh_9$
zs|rMPxy@bLc(JfB($vZCyJ>AjTT)v^j7eDX^X~Q2_FQl_Z&3du*66<Z^ox_+x-%s>
z+&SYl=kChAF~RIbd}ZMcrQE;Th8|fp?vMYvbna{5TNof#{VDY4^T&)5M`wL+i*UK_
z^6luZdD}A{%}Sd4#k!{S@}C{Gmn<~zDJac%^LWOrSr~e{>EEgwVNUHA7EX)TIg+rg
zNYC4${q!d5z`Y-?8LHk0`Tcla{_k&MlXxq6ycbCyKPjR=N#Wm_gZEdR@_c{ZP(S>^
zD}|ior`K#=Zc_PDc;bZfs^6#BwY0^GzF6qoWGxZ9pjz!|{BrWqE#haYo;-Tk{bSXe
z&O@(me1GZ@By`a4bl1wmpQe@Edo$N;PD2~d@zdGs9xb1t|LDHD=&F6s*L~>VRo;AX
z?UQO(kL(9a=2qX&ToAqIj@L5VTeTjSW|>FGmV_lczgXJE-??eUx+7AP{|UF=5B6wG
z-@pId#uXOMCO75hE_|8uKf*=m*T%ilA95^~EWT2~|8UP-&4-^|jy_^ZZs`4bp!*MB
z<Z|uba&{b##ezAMkA75mt+For*Pqf_`JXyP8FTZ?*7Y1&F;nw&vhXw46vpZI7iQU*
zo6T4=(N22fvy(k5_OO08ymoQkrXYtk|4y+BWi-1kRFpVWsO+-osP0@%>GqP6?QE}R
zdTlD*_}nOQ(f+)Wu(V*SJ-sKN-1AVj^;j>ku7D%d>G1y7>`$MXPmEVQKG!WNShQ8}
zrq!}d^PFeeKdXGA9-7`NbcA)z@q_%$>vt_kJi9)e!};m=eIa)*tUmRjb^eZ3-7?~K
z`mtUgDsOM(yIz$3(<okM^?Uvm(#Ka8e?Oh<B`ot&pTXp@UrB0N`U>_9PfUefrKde-
zpHZ)-vh4M-HQ&zOuu2d8_9Vc?*XrV(2^(&dT@U=5=ddZ*dCSVaY70xf!nlsw&9|P^
z7CPw}Y`F7Xsf+*S-6Vlel6*>H3O{BUO+F-~!Md?DfGg_B+@mx6rWP%!s?w@_@!<N!
z33i{<rf-QZ@5;IrxzEyd@24`YrYWxFZP^=3{8VN;n;O5DvHxk*o7G*ra^9UK30{9S
z&%C*maQH+j@4T(A*>AoP+MY7SOhaB&Oy-l$YU3{pH<|jcTd?SnSonlCmy<lfX$z|Z
zMT!D;G?bX`-}HIe+i#Qpa4nc3l6HM>gI1?Id#9&<`_adGpU>OAOM0#P{PPZhR<Yl!
ze>6Tg``YQZ@O!`Iy7!xxn!Ziito3i+r(Z`F9$S4h_2{XM75bA`h@9D%+j0JQ^Ta&s
zAn~5H3B4w~IhkphQa7%8u6x8hL+#Ht9*$)_Z`YadXf*%Gl?Zs3FUeL`dZj{U!CM2S
zlOoZKb2f12ME=MSzriKyvHO7A)8Lt`OM3ZRcdmMK$Ba>(ZJBSvbRLQO4I<AJ<~;v$
zWD93b=(a_^4v|0e7a!0w^JNjb>GQaxe~nUcl49nhItkVpPOlTiBW_>4o+2J`d#BVR
zzLQ%c%NpIK+s{vT{ug<>^%yr}64OoAYh_uhZ|vVHYb+=9H)`g|F8PyMRc1VEbS}y2
zTsU>>L6G?A{OGpEqpwmo@vKSZtvi3t>+01TI!kNW1AYg$o_{-~sa|*a%++%)O?}As
zs(S10$}}!3rq7n|Vj?+$#miHVS-x`&UYC25?b_UMeYSkbSUWp~c^7{>O0b7*-f7EM
z!l!ea!MO9L*@h^#5;KP~u~X-~#O2;hRANY#j*!$-_{+A~e9gazvr@H8*CuB?$WoM^
zAD(M{?0KlT%h$YcYrPgOhl_FMCRfAmRzADk5Vwt2N2zrS@0o{-CT`;OsakQ`%wVd>
ztZj{&OTBNgMcll(t<iE0<BZygx_Z6L!6*GMSsYjqD9s+xdGuJLXX%4nnHitkd3fZf
z+*$ihymdz|bFpP<{tF{D)z00YD`v4hD>6$o*k2O2B-7!}yIkpnzDw=74xu~pZZk~Q
zx65JX5#Cgopt)!6F-F&xd&d}M<s{kjR(y20{?&x<!>N-N2Uh1iJ`i-LMvA>8BUL8i
z>_isvh5WY<yy~-x=(IlWvv*IRb`G;vMyWLW3(1t){j1_nT5O2mduPUHu+_J0S(X1W
z#$&Pfjy0CHd+}`9HQ}LJ$-mlTjY^LhF1`JGTmC=8L*p9nU)me|s{fw<|F3TCo`3(o
zwnqk>SrmAnF8Hlv=PI84;?LwCeKmKiSv=!=y33_4pMIUT-}^iC+HZzz@%I<yU)LF0
zGyHwXxH>nr|3}k*p~L5AJb8Vn=HKJPbvy_4f0T8;%C+zOSI8oLC){k$^Q`9eKjQyg
zOq;O(_s9PFAGiO1yVrYx?b`MJ_e<;7pZvZ5(=6VZ!qTl@<@cXTE82Un`_KM;zuWEq
zKK;F4^8Vl3-<Q^ZU;f_v@4NWN^XvcotKVPu=ePa8hx`Bi(2l;b@8+Se$6jrmxUv0f
z?W6s74?jEf;@073MjLM&{;D=-<K&NZ)%vn#fvdY&GCBGV+JC%x|J|AO-~S#JeYbzx
zp)*-wFIWEyUt8c>^lAS35BF<-UiSb0r~0+!zR2^11#`03ysCZ@A90>r=-}RYEqmvE
z-g|S8ub@zco!-&XlB!ZOebu*Lq@@0>mHzNv_VMEX>t(<H%$~hapv>*g-_Y5G3;8~q
zAOCxLe*Le{|Nkz(f4lGN*|IMO0&<VeJ7doIBhCC(lX%s;wuJY`D(1g<Q2glr&uJ@n
zN=NM6HDTHdH#JkEYxdJVU3ARfaacd+Tz$!j_&f9dX5S7z6r1mm@GskJxt>SK{d-gD
zf4-c5f5wX1@A~zf_5aV`XUodkzdiDKbkU|q*Up$*i`BL6cks_@cR#T=x@B+lktE^8
zYYuGgzxzsILI2WTt=;|2em`FGer`Q}>%MY^NB@V_w|~z6F?;`(`)_}p{ku-!_rFzt
z-xYNJ`dRnC|Nr;D_piL)_viKe{rM^m=X2lh-~4v1O$^V3340Vd(&ergC(G@ro-{G4
z=$z)AU&mIxmpoFfex&Eej_=(MLZoB&x|sht{a;=wWkVpg+hB|p5EpJbmX>7X7b$2!
z?o`p_(swROO$6Ob>5^EIs-WRwWn^GzU|<O%j0}uSHM#VC^HXrj1r+6{lqRPZDcGc?
zrllDen4}mOm{}Sam>C-wm>U@wn57vQm>WZAGcyANa}xuD#8d+VBLf2ilQaVZkQf+4
z^_ZDL<xC9>%q<}1fW*v_5&Ddc3=E77pxE3F>Vy0Nb%P!FzPNnQ^`=Ik+hRa0&^<EX
zn{M<$cf}!Hgaf+$5+uQ;55D(C-_4Lq-zl*;6{Ji--_gn0#nn|Cdc`M~zH44`eoAIu
zx`KXqW}ahSaVAUvbeB$E3G9B){2~QIBU8|QbD&#hii%5|GZKpwOw76TeG;J@Lqkh0
z{qW3`l8j;nLnAY=T4aZVbYnUkVFAQKh?~(}>6Vk2UaVkj#HH_9l9-d3?3kCHld53A
zrSDjr47xPP+|+<eA7m7WqiY1>IVTo)q=K#$RRBvmmZgK;reJDd%%$&}SOMV~npqk^
zEDnb#HZd^Z(vN`Z1RE4wlA0T)05TF3f{@F76m(6@%@jZuDHs|Vnt-f`g%|_6Z^%f&
z(8wIa|DX^7`9E60*uqS~)W94s23>-Lj!jKKk&iBFpkQGN3R{@Ci7Ds?To@0XHZcdu
zniv@?m>QWXm{?jU7$}&S8!8wm7#V}qnwXkGSs-~+us;kGj7>ngjEzmfx(pP|4NYS~
zMFGe^5Wj+0pd<;qYgfV02xN2+D7j$X9;ojFxq8>k(8A0Jc8igrf}x>_v4I5_;x68b
zId5v%V?x4j{j>b;m)zDUIis<WF|DnUk#)(+gw!QnHw4@caxpb++@8^+Yk09G<J7Y6
zDVNPIsvKUysdn>-%ChUen`Y0;nB;rYCD=FghyC|`#Uj3s>Tdq6+kO9Eef7hg=Zo(J
zzgzjfmfi7~WOCUZlboc=*wU+aPeuz%?$?}cnC|SFSy_Ae?DlB}-#*zL>v<`<H2L%r
z%}cC3doMI_Jr9{09%3{<jqjBEqN!6>bqc?7d;9g8@wdLljc?zFUS;*#Uv=@y(TeBk
zJ(hQbUlnmbE7y6O*0aCuldmrKEb;jN7v#3cTTe86d3##$^xg0G{kSJDp&fl@#x;xd
z!rx8#`(@j=J$5q|n|R~io*YB(q&OS-%(Tq;^|$6MzaP74?#7GR64t4u?$O1st0l{}
z9AB<nU%<}uY`0I;5`9OjwaEuRg|2_Ox$C3O0V(tKxi1fWH~O~!@QuIx4=N`=)6dGR
zd;P|_qV7fYF`jC1ll4(^K05z$xZ*y4W_9A{CbRhLw~oi;wi$?tZm+nw>FHj-ZJd8k
zhI|s&&yBwGdpo~j__{Egb4RA^d>VCKnSX!j^EEFXwns26W4-=&{<_Mrhwa90;WFpm
zM~W5p|Fcq2o^j-bldbIQ#G3VmHlMb;+*!Qs%JWNK!gXe)ZJU>QQ%h~}veu`Y%#Q8h
zvk7-vx8~w!?upqK;#TUqOx8T|sXJ%#5gwneYhII<OjJF~>+|c*`8&(Iw;jK_^Da-@
ze3L8ee@iEwKYQb=*SwnbW?qt-QT<8(zbu`3YTN(MYyaHeQL_GD_A#aVCs+LwJ^xd8
z`XAo1`}uoJq{<fm;femxU77pl*yCIG3u=BXc{}gqv-vvn>&rfEn~-mNQO(}9bV=?0
znDFJv=2?2bp4yz1%{g~+Uil_(yMjYDJ_%R%N30W!+xXsi`=!jk^W%0+T=Qc4cfCJv
z>^HysAF%gk&a3s`p68l{9@mUFo?t2){$Abev3%vd|69H9oo1VxVO_XJJ?@YGn>Y18
zD$O@)|K3vkbp2Fk`8wP6KdxVY^FH>{<^A{GdA`1T)W-hx@vix|>sI!dO*{26?*H$n
zQ;j5ktL|T#f9u`+^$+cfJa0$tJoPwo=a+D^s8?$8`myJJX`hLXD7LVje_rLkTJ4Ev
z%%Y2U|LNZR`TLA^ty9#$IjR5izr449dT3wTpP%*R`v0o`e*g9U>-}!Mmsxp#uI^DQ
zdk}w>-*R5z%h+eX!foIGpYC1EIa}5C@SacUIc5Q?IX8s-4E>O>&5uvE`v2q4A2J^3
zC1_sY+tFy2Aa|i?ON?ap^lh71e)5>b#vPM-`u2=^`G&NgaoYmc9ZUaFzpZ}e|HuEH
z{tfz{!Y_SxzdMg$is_}fIa9u<c~8$v6}@47c}aJ~!IQr}oxd`5UFy+40;i{|ZG0GH
zdV1n9gV`Y`xt2stQy1NQ<$lb%)!UzKKlk+iCDrzcF7{gw{+u2<^@zzEg&p?A&XR(Y
z#Wn_+^<7omm7V-HM{m(K*Bs60gJGLwbGGlkv-if{OM7>27caHBA-O20JE}}Bx?|Jn
zKr<1&-FNox+aCVzc*J||z4r|#|GN26_*?I-c9(>n7|s5g|IOdc_wMgpX`h@l)BX1x
z@qOCaC4a0I_SnS#^RZKqpJG3K|AhTh_D|aXOl;nX;2$;nI_96c{%Q3Oy?y?Ruf8y;
z>U9)eXqe?Q%VXK$^vtKfJ{_4Kr>NUne@%7c<oJiPKFyfy^Zk6)_wJ*0-&V%$J@xy=
zO!b#+zdV!K{8>IohDh4Jlh_}X#NAMN;P1o9yf5sZUP}4**Qi#%KJ@jPna0cfXWzOZ
zuwwn}5bMH2KMIqxkA?KFTeU_*Ut9L6zNBT+j|~f*ySmx<PsvW0Jolxy|L0}9WXx8p
z-pVm@llWq_)@_=_>2)8%%yu^KTejfXb6Hy}chBnCi5c&bGq`pouCm$ZbK&k1v10l7
zOZ}6I{WM-KpY(6B>dvFKb9m36EDNu=d+_<Gz3=kuwr*pr%HFyCqO8q=SB0yt{kYO1
z$=T0tdPlUcuc&;2`A+Sosmses!c3+v-m5ox<C*AdX=hHR#kvVE;nbS(GWO0<WA~y^
zkC~#*yH(N*wEKBay%asW_F(5$UeTw1{mTQlZZz7ucELKG72&sw&WHXwbFR2N_5I5`
zmvR#~&)%dIy?5=|%hF9n##*JPMCZ<(-F$6Lf_;AFhWoGhWh9EC4Q@xr37+}1XyYtT
zcliU&w@SLN->vLe`1v05eA)a=zUY#d)0}-Ko)YNy6aLhi_CmU<<71_bSNyrx-!|X$
zU@^a97I5oqnzi$p`LnM|Oqn%hj;+#hxqu?Gjya33&fX)Jx>9S_q5I3rESjX#b{B6l
z{QaujYTv~7e5dv;yQwS7Wxl<%>h$T%d#|LM{uOc57gwwijji0NasN(><C)N93%4oG
zcpWRVrP6yP15aKm@3U*BD?$%lZQ8a;Av=rnI@hzXDcXOF!b{Ai2D4Aywr4Bv?#RUV
z`_?t)J@0cen_#N-m*d#f#K0QSxx8zOo7SnNYkzw#Q{H@8_=|bcFR8t}xxJ^fDs>Om
z{r+Il|I1~o*s(IF%)kiAopyI0<V~1Uw0KjL!4B=h&(rwa+gML8RhufREBh|*fuCB}
zL(PXmT~_O4Ri1p=bkS?tnh;&-w_i-EURZffpYzZz^Kx^WU2bH8#Vz%!bL-1`y|iUt
zJztlh{r>X7$5L0@tR?c^PXDc`Su9v*kR>tYsf_NXCna-YZm5_no;4-3WJhz(qTL5?
zKg<1+#Q#&>Od~n?Syb%(SyuVJZ?CYGZautv$-f;UPsM|^PS~6f<6Oy8y}{_T=Cn}X
z@RctYpS-A^65gFtzWiWx@b#4@?|98m+_7+!*m5rXZcSX_83&oOUKQr~shh9o7KWFZ
zm4DBharfra@8x>yGG0ln+VXI1-rFzNOnJ&z)y}=L;o8oq$`GE_4^6)=wY>Skc4=%}
zonP+s`SXL#w<d0HHT-V*l~=LTJJok-Z*1m?>>F>}io@4VN($}qI<!`0$}}~_#DLS*
z<-a9wFL;&}(mX5g<ujkHk}bWPr{#6#h$T)=xIE$P`dd@DyPv!`AaeL_*pBF_Pa`ki
zxOnr*3K>1I_N7P6`HS9rh)vm}ynDxzZXT(<xl0`<Zx7ixUE`b3rq?37<)oXB7y9%)
znrt<D&xha}0la5UW@?}En*8qFy?ejd&KI9!?v=~g`trb)wgeZkn*C<AJf}i6Gn#g4
z?O3=p@+CXBiAL$ymsfRrZ){uSD6*2zZ9!{C0k=lr%4>n!l(n`d<Zful`pfIVVs64F
zy?IKz*_qss?VD9kxK+0&-CXIr*1s|!FFCzuyMyg)3$9~d&T_df$X~OrQO8f^;|8}`
zDzz$A_a3>1c~6$!yf#s{^v0_v-o1XCwj5N=s>#*rIai<-+@`vG_L*Y|M;J^x@?B@M
zX}AZ?UYDP<<lO3&XCE?EY*Wo}>aVF?W)#D?xp__2QvDzIde&*V%7@Kb`8I9xp4AT`
zr}(YbeK}FqWO=yx;h({^!aDbo0&gz(!4bTpcW=s7ZRP$WdrrUndUx;kO8?Jab{1{g
zd+M~~%^7EQN=wf+Et{9Y;dlDfNwYZ_rmLTw^K1S&UHd|f<Qex!!(G}Rt|jP*DDK|9
zbaR=T#Se*&UZ**lM<ktc1d{d&yl#omJ|d;)C!VxbU^(YTua2osbF_|dDNf_w=+mL<
zq$8FzQGmNOLg7e_;xo>|E`j3K7Xpi7J1m{Ha9-4M=@!`BnjyBxvm?^!j7U<Oz~$B%
zYDYp8rCKutlDY&Yw{ma<>buMpnB1~LG-;85aEpZg5evm*T!G3*BotS*O6a;w6`1N2
z!V#$FGE-owQ;*OgeV0xF<yHyBBL#|WoQ5GCicTWjfhtE56xlcp13H`(xmr$$EBSZC
zD6(-(RCd`W5b5+qe9?S?nNBGj4~3OtJ4_V!I4$9ND0oP>#k)g9aZ;;?&>>BiMFN~o
z7A+m(N`4%>1<VwaS~~;}X|=d^WGF6bG2j-|Z1Ln+EFkD4(Q<)%p|F#7iyKEIhbM;~
z3pe*YZI^xl_ZADCBmPc*G>-5))#x87cdF4oqNun}@KLtnKA}h6iu(i}6)W;_6*_dB
zZ}}0@v7hr}r+_^7$B6>+Tpz;~?F1gxD&7-L+Ar|Cr6Rneyrm+#V|z<QaEEzIMQq3Q
zmWt4h{Tv_D72^aSr7Fe=J@R+jqj7}W$wvQ3v6GGV5o0GC-6O$HHkwC-oow`uBs;wk
zeH5rDC-^8)@f*j-2?G3FAKew@1Rm8Xz7tN`E^ycBj`k5-r#C`L%LS}kI5;n=x&(CW
zZr$PCVcmK|?}(Y=JAp@KivJXj<T~BaI-=`zN9TyI)1SBw>DC>N9j{w=_;qBr?r`f^
z-MYi8L%Vf{Q^)Dn9X=i2tvg&gx?6wD6%gkvTqq#UQMgYay7h+AkxHi$uEKQ!&p9?m
zcKABY(QV<V-a$J05v1ty=ddeH(T&5d5VYm6D-LwJOoJ(~SR-`_w_&lyQ9i55LFp|)
zZB1qYS+*B<1$e1s=q|k`FxPL(tQT7XK51N76;LFZp?Yzpi?&9-<<e<_x~h*S1r%v!
z7+zFb)Ebh)c(G<t<-#Rg7c^apJFPlybv|pEbjmSzN|tJt;w;}QK37~!x--<S&URe+
z(&ci;G9gnTQvqMaSw12PtJGI1&vFUzHkp{gbg^Plp-XaSR>!fHIae2CExM@qTp~a;
zF!e+v^C}L@<4vbJPjz@{=8IhYEIc(}??e~nj<(>Fi7w77e+eu~TBNk-piA?Ljg2m?
zSG*Vl?E>XYr+J$+ym~5-Dx50#RsEIw6wfJ+zP~#ztvqX@q#vkd`c|<h*j7A{E6^xV
zXyRlI!zmVWQyiXfsQNJ+6+SxgqF;(~vQ8k+#HpWjTrQ^cC>aU62F>d{;UVH!$);pG
zQE!TY;1XWdD@`UYMv|&tg-XkW-mAU}?EauU#meW4@WuWq-<g;0Q~%ZXB6^XtqPy*j
z*%KD?eKB3SPwCgB7u=_Q&k17h<P)fMtDG<Nx3_1$K&{Ug!Hex7Pu5TQ)e!VP_?7LV
zzb?Nu-p4K~Kk>utVzf)X&|XK^xaC)}UDmffTHf$asB1pYFXM~aDK#@+s4lV>-0R^Q
zr%*Mo=e(e;_ZOavmqVUtE>b`FgXQ95mwv&ws#R0G?3`A%cYYJFb*bbR`a7|QU*N8P
ziTuU9MR{74`b*y_-g4bCIm2CJ9g7IpQD5d#LDtT9YP-5$_$_+ta=YUl$I*lFpKq_6
zYA<ltt#Z52U8fS`i@q-V)pt#N!M5o2%8jpAOwI0Gw{Xwu&UH$=CcWTVRbaVPPkGmr
z7ec3Y&xradd(m}Dx#C4um*>K{s<)g}&o2&9zqr%oxj?SkEs;&;&FA=TrZ=Bcx+Ssc
zJmXx?61Nj_47nUPANKtGHKEoZL-u0Ss(o#*=K5{1O37!P>vlC<aIK2f)C|^(MT=6e
zd<j~$uO*}K#66}cmtNf^lejyc37=KAYR%BQ`dT4t`Mk3WU*)>24cXM1VHRi{D11?8
z(M*#Ul2<mrbh(^yA$a9Wx2gc<iz2VyrBnqpM6HCRN9j#J9fh6Eo^lF1nWa|u^WQXU
zI@X$FxnN_+lC}(=6Ky*h!h^F+0!1aYowt=P=$epgyuv0WnqQ0irdflRv*FYQfi886
zgceO)D6!}MPYy3${zz%Z!yRpHYffF0a0-#x6xP_~bdBx8g9)Wt83IpvRkU~_H#@S1
z7}=+UvP~1;q?K+wJ%b_i{6h5<;ncw7zn#AVlV`d}y4WrHG9h&4QWGWptuwuHt5z7A
zZ+)cXwXo`>i>Hg<B9}!i6H?hu2yQyVa<pA%vqPavnUZv%P9RU{h9FjM$;F+EI?lLE
z47uc@+MCj&U?lLevm_+QTh%mWN~emF-;qCiFK&+Is#+8s<Gv_5wtZneQyoiP!`tc`
z`<VB!@-f~&@Xz#v=%;-yzqlV1KTs%O_;$X*f8uxZCH9PVY<5g`Jz3>{O;;WM%J{+V
zgWLxBZM6@|8_OHEPpsqqqxOOAgVl#wmGfSQ7Vmql|G<9s^WAZVzhm^7^&S78ob$9w
zu!6Bd?&tY~-_}$%zLtEkeBu12x=S@(uQ@-*Tz~wG?|SmHvg>hIYDM1KGTHF_sQ&)o
zpTGx&564fau47l4zUy6o%(GqkMLV<2FYw;s{%w0e@5x)2dwe&X9K;1!-kHsPw(Ink
zTcyi0d$V_EuFamEIrlZ+gR%$w2XYUrJ)pZx=K9$Ovm5R&KG*v|+UIl3b?12YTHONP
zFIO{OYi%i2y|s&J+v&#B4c?934c(3R7v6Ktc<=PM;yUXw&UK%A->zGGEIKB-XZy}`
z(=NxRpFFy*ch8N|v;^k|J-O0MubH!%UvFE>JL6i><*4VkW^G-*{_eJKXSe<<w0b=2
zz^el<Z-=q_aj)T7b8DMX!K-bejAyxScRkg9k{|XVSG(dT*Szgb-Z`zQt<|kEJ8d?Y
zY{<ENi6Ppm@MYW5gG*;69$fl+npcjddD-`OH#c6H8N~T*ePq_Q5Is&EE}eVZG&U5R
zYdWC$;@X`@-yDu_`*vW?qiYVgw_S7a{`khBxG*>&>|@V?Gr7i0m%Ep<Ez6xPm7$Zz
z;p6!8<k7E<2e$okh%L-bxU}uoftE)f8$WL7*Ivijb2m&_BG|?%U~g{8f>k?=0vZ)J
zt9Vbc_S~i+D>1)io`Jgl+2UVwf6s}xFg+t#@~-fd;l<8%E-T|pnDl2)I3TXN#(#%`
zV_(^x2NVAE)!m$W@uU8c{nGy{_o!Wyzn|}*+P(S6&c`XcjkfJ5{5n-@`V`^k{6WX9
z^v=Cr-Lvg;#_rR4p*!BpiTob9f5WM7?K=7qOI~Ei$=;RL{kb^M#_E))s^<248aL&q
z#)nAemd#XsdM$g}<3DK;Q^bsw)USoR&5lvi3`m-lFzL^-Nt?X(YpSoGbn?#Gou6LY
z<mpKVl&Nput@V_B$EVY7QOAC^#(pi0j5NK=X0}o-V}^z9iSwMxu4|UpzrC{H-5dpO
zpSjmA9R2yTH#SCVHUF(C^(#Uzr{~{2HOV`>>0~Ld;?FkeN#4@gP0}K7zpvgEev!vj
zYIB-i^hO=+?4Le&()6O|Ev-{N8m_TY=je(W{ph|epSC*rZeBAvE`-M<TXNmg#M_@H
zhyU7N_p!d5{om*HddvRQ9b6IjQs<ghF3UNVa|~t-uNzAbL?!SRSZ$E9;EiBi!{Wyp
z#&EhZ^?*=<;RcQf4jqPP%%2;A8+JOdU*J2#c&j070qYE26K3B7Itgk9%rp3Wn3pm2
zIxris&fsBbs9L}`gXId7a3kk|iUb)0u@#KR7_J`3SirS{MXRA`0gnc&8)Mx9775NC
zhBoHI4GRwlERfJ(Vq<P@Xmn5vV0gk@>7Zx8aDs7Dqs{{R3;ZWoj2Pr6@GW7CQxN^Y
zkavJ}3BySTp$9BNjVuQkk1!WD$ZlZV=)jY}s^efHz&fMR;{c09BgX-T7mTtCSWOmJ
z6;5a5e87;rR>tfevkW62vpu6dlRd+I=KGBInc5rj8`d|jZ_sblZ#duBe1P$R@q^$8
z`3KYw96#WGp#4C6BY(s9#_tV(57<43eIWZF_kr#M-v_)8N*|a$2z{V`V18qG!}P}K
z4fc%sO!^Gxna?wxXFAW|&+O0W&*ab0&)m;g-RR!v-q7A?d%*cX^8xur_J-e$zZ>p4
zm>1|5@NeM0!TE*(QmnAOV|vH3jrn$ib;IpOdxq_d+nKgAm@}I*?q|<q$zxc@zK(ev
z>pI4DZ0nfTv8-dzW7lKWW7T8SW2<A2VTs|0VVJ|8!@7;(Ipf>|I}cbMNJ|hdFw2(R
z+W7cS@tpd;&*uyOS)Q{${`0xTf0^g=aSQGfY2bhGfl<b;;V^r_4+cK@0}q)kY8cun
z6NKCQrg%<m-{$j$-z?AB9l!b9;<rrt{Ks#K=lreTF8_~zztsP`vOoCu%WR$!Zy5e>
zefzxb{@+hucD@nW){}eSy4tp>v1jCx@;BYgQNA+u4O^M^?zyZt55Lj;_R9W4_nrM!
zU*{}~J)rcodS>5IqiesD-#5;SZp_OKkw1OZ<7n2M<2rk%-D_6A!S^lZPWH=}*Nz%2
zj=HY1m*w^KKOXP<D-J5%wT|%gp1pAKRjK$_>tFBO{d}A7vjx+9Q!n2rF>5y6nAWp@
zYUzfZGiFxi*hL=@TeY(FME3DozM#!l_P1t)e%%<<eIx1XdW~tDMc;(f=(fd)`Ds>q
zU)l1>Tul3>R+&`vS-<q`8@E2xF3pN;o^v&;N_0ct+T*9@96T2?HDOauO8Uml8?$EL
zw0v`C^0ITbtE_HT=5Sy8SyOg!{j0Udm+Bq4?)s+u2LJR8-ZxX<aJ}hXebZDuLO=X%
z_{P^azTPnQy0>&g%z7==?~LCpZXbP@RKB_T%FdjFYcBS5RL)#{?qSlIgHk;O$@Aqd
z|5<Be75&<vEH!8D!-?yf{+_Wj_2WIiIH*Y3D@c0_pO<#F|BOy<L$*uD-CS0BU;QY*
z`P<y7lOvDT#9U5KTNf7GWp(ja_AjF{UB3stJG3{iT5;cb@~*h6wQsM>>Q*<;+Shsa
zOy0q$JIk~VrtB2`W%iAI&RgpnX4_=rkC()|)`;&8j@_y7I!SR`^V=g{_YS{Hy}Rmf
zO6C5P`-0or`=ZJ=|Gx3}h9dta+YcuF54<D(aol!Jd>wby?WOyT#U9#AHNIL@Gs(Tm
z{Kiu~ZSMg&=U0_q|EUD&Z<>DN^qbJUwqL@(S-vYbe9D~tRcCU1)Ab26=kX>!zENTJ
zmND(vZ`(fJr@PB;o<7ZM`HTJIyJ<6|^Xr-I=1u>(*mTm*dq<84z2Dnh5}le|YJUD^
z<f8jsJGMPJVeLNeyzQrRjWZN?vRAyj{rmpS{GXpHUr)Gm=<oVB=g&V5>kn<!^}6&r
z*DC)NLuNo*enDd5L66J}4)e`Ty@GO?*~NROaB~N#+*H$1R#iRwbUL5^RCSq)p0D?)
zPUhaK*?G}yv!AxAWl~Yw^5|E~mh#I_STp^rRb=*sbg`++uAN!$QR|%VyY0B@aS0y7
zlZD?>R{uLO`_>Bi{g>SShAf-;|FY_)yc=I8nf&Bh?0D%#$z9F9mVbwBu1;Q@tSc3~
z=BQNqh2s&*#;2Fd-%Rljy5+Iy_R6)&j}7u~OI|KGlfZR4>F68J`bDP`A3lzmmhm+0
z*jd5O*|%Gwx0@W8KQrUI^8I)2`|jqQ3gb%GZrwcf&`qz0IZF$^)&5v;xa#|xrnG&B
z-regjU!d}%TlQk2+3G)U`#h%F-%AXN*!1J9`HXKfRDzR^ng9Ix%jE0wHCvf??_B8}
zf8L94%8G2`mgnbgtluZX9d}ZRu{i9Sz@-SS=qbludw%8J#3vK;;^3LvQ%$`m{ye}q
z>3Vjkn9jEuR|>*EwoFsKYFmEv`)l#@wWswnH9JmAU9G?HrR&T*<<6tQ$6LNl^Oc%o
zV7E6b?(JuLzHE)pA5)cYsrSCgFHg-lccviq`g%F@1^ZT69J9!{<kb1RPj<=`<HOcD
zhbC@sH{&V)Dxxmxn=~i){olaptvlt;ZTqe3t1R9><xFMe$DKQmG4i=5Rdfj*4xS=0
zZ_$wtBC2i6H8w_X`W1ZXld^K}sXNkBcbaPz=bJ2=a<NhA*zXUF{KfD61Jvwu3)Y?#
z%s*H9g#W@$qwLtm84YF!yb6vU;om4W?L&-VGwU^{(}Ah7MoQZ^T!@-6-&{F1Cu#L`
z_mf?x9>l#4eC&|=f4RrUJrj~IYhPM-+UQ0M=f`;w%~ygoX1_UUR^4@0<!eY`^Vzu%
z3XZ?pJXiMJ9us$#_?1s*`*iBXA8N`-&q-ON7_|QCD`nnU-{$LGl>WNOE&od5<oL=f
zb=m*7oH*k1{GsNjwVHp0eFQh2EIX4E`kry8>+8g;Zx-Lp33-3qda-WJn-w2KR^@OO
zFFExpr0><VO@AX<|3yg4M?cv9sW6i@lXaqBd(icjJ}WOL1?H`I6!Pq9rM%sa<hXJR
z!?maS<%JLBDDP9h)#WcVk@?+o$u%94JJ08D+SOe#@xI8(<55%RYe|WQrs!@u#{2%+
z#NBR|TmQa#w5xKz-rJPa?BhI=MF*@>JoL;y@tkHn&6t{5(D`?5+LxOTPW{PlNmmp%
zaS-=={pR7<z?w;Sr!ATseJbppMe>zJnuj0xN;xl4TvhOBlHpO~Q<u2Z&c@y_Tv>4A
zPWP+L%X*~cR$unmbZ&|H(`n}=tSTNIIMTE$SZrQU_=)Gf*7EI#=DzYMKPdh(*m$p|
zt1x%>G5*u~GLidJoZkLAX?c-zUBu+8g3^;kq$fV{^*g8SD{oU*;rOs)m+Gni2G@Qs
z{?mBu_@xN7)i<AZobUKDbGPcd{*LcE6ODiN+`VM5zxC&($-mQU<Rv91-x0gK@NK}h
zRYgzM8ah`vt$RH6?~H{r6g#JF_k8kv>G7j4L&E1we0Wj&_vPo(F-JoGukO5Fo!bAW
zEpFQnn|UR(9p_zoJb#Jdv1O{N)r(b_=dbQ8Nm-&&A#14CyeDke?Ct#h-aVI2>^jlG
zJm1YlDkV2$Qf%EBk)_iuV~Um}I`;?ue0@iH>VH9YL!HXAg0cG!{Z^ehbB1@<?S(sz
z=4G<DG0A_EtBLs4KJD5e=U?CU-FrRtufT8J-`sU~Lr?C1vFgd}NnF}Yx{Isiwk}<I
zv*OvB(#e~XFSAu|KE~_$_s+av!$03*o!wGzwOe+-IwfC|9#ENRq%UK!bCJT;NpB|R
ze^XgLZF|ot4f$EZsW0NM9a#T~?`+TO$`dn<_bgXiUDB}l`Li8sCR+G&SM8r*p7rU5
zf|<^f1j)OXJoXzJy<2|g$)prb%dNAICuE<WxUc;A^QYcFZ{Dp5m|mxMZ{GSd77OlG
zy!#jaEh%-%MA_=!nSM7WznT|%f08tBC-drbk+b}3*RQ#?A-V3|6vM+p$^~D(s>Pq=
zseiiZ)|)#gwO70QNKVYWCb{L4=*f95{y{lcclyt*Jhu6H|3;Ncp}q5FxU4=nbz0Ds
zx|=;Wr*9QoRuNosP35V6%hat_JzKjH^``w|=$_i9P~tHq=U)fMasI%y=j69+G4fje
zy`6vB_VYzAe*64;`0AYc_J2#x?b-VIVeiv}XAV63DIRN)9-O@G$*oUsmIa!e6iv6?
zl6Ps^w}tKe&$h>|`y;yPQoF_%#o15GRg<i8>!Mq%ugRWP659XyX9?&1+0n-PuFKw5
zwE1rNbjRx7&ZYa+-|??MUe)CCyK3^g6YgHmmq_gOT<;il|MHRBUvJ#r#Q4jrPTFtV
zGMV6|%llsGo|`eFCBymr<|^-`HKqp_z2E7Y@9EJ0{JY!~{w%H;^QXS?@a!zp*l&Eq
zXz}i)N&5>Yd=F?6i?4KhD(~BVZeyZz$<wpE-{W4Izh#(n;m+cDtIn_D*V`m_S8QIB
z#qO)iE?@3;eIxR7L74o)&U5m+6W%;I_pH%X_xUxxjB`JHdb-Yc6-Td`*ZFnw@3r+=
z-d|g|=UeT~$y{(EZOZl|R=RCZzC3xjJm!|g?@iwv3(Mv;F={qnQQut^m2>jfj3W`3
zZ|L@~kNf|pRrrlw_!{rX`S;{2d21%mJ^Jq0yp3;7qHcv;Z!T;JZ@5>wCGqVZx7vx7
zIc*%XZ%=%%P4bcJ{U_^7mz3<?d#0;wdG`5fH61e~FMHZ)FJ68!`s0?QXZO$U3A%i4
z&YT^O4zVv4)R{U{MY<_`@s&sBn|GYq7Bbm%<=Lt$ynKOi*E>A9zdhIb_c-FZ(T=a_
zbGJ+qR;fQ^X>%&fd5yWErtZBpZzI*&5;jy`Vf^5_>xIR3WkXXlrhoQ}o}29pO22TD
zuXahC^5e7Gk^MD!KW<7?vwd8iI8}7@IgwP;uR5<g4P0jSK8)4h+gE5c#lE!b=o+KF
zJ9%fTuJT@-SNf)?lw;S2Z(@JLwr&2hOLf=rRB!8Rwol*2PkeUpSZ$ci-w%>itBq|I
z-!hxCJ}GRg@$Gq&AHI0D_g_ay@j63w_0k1_o{^ES7F?TSF?r6LY~ObqT9$`!HeIpQ
z?QlHM%z13$;p(ODXH{4J_*%4Sf%>_1xtEXcdMtd$uxjOVn_hF_gJmsuikB|wFH~3A
zk@Usxcun{=c0qr8Ui}WA4_~}zO`cGebA63XO<2m3HQg6ZX7kOjzVgduRdi=rAJ3F|
zJ}>8I6fJKnKQBJxYGRJVbal6%SJ$cd#+lc%NvmZR%wAc)XSeA-=e+m36S)rcxh%KX
z#`ErTYDMlTm;X5y8w(3RwlY6S&Q`3SIBUn5r<=dj%&}B#F7AB2*0ZoLCDkH(jo<96
z7bc6oP%n(xHDgJI`=-$FS+B|}Rf5lkCI=tC(&K6SDdGM>iAA#0=54tpt)9xpG}-v4
z;+{ZLFOx+-URv&DH+}lSVxvxT>L2@a`&jm^eRbyhyYTSuad&-x@6(^AdNV5L^z0|K
z+aFtWKR$A^gPGGaXR?DriwM)wC0k^-Im|S2&a|HLDX#I2U*p34_qmtm-}<t(cFN4M
zhWME;wRL-LUy6*%P}*O-Ze33L;*v!X&*MC&o&UM*|Nr0T%9n-<C|_fVImY|$YX`4r
zANOtM;uQrwcM4rM#7&D|xv@%em%!ZI`Bg6uG#YO=-+uq+rN-I*vO03#zuvd9tGn%R
zz?$J0bF<x<+8_UIEbjcAS-<1^g`ezg*6;tGi|@7HvwEk+-w!W-xtE)7Juee#$a3Nj
zXF|NB0Dts3rtc<m*N8q25;L3CHd{sF0&9BAuhihls{i8y{-wTNwcxLHX2<uR=F_Zm
zR65!9Ojo4d$lo~Q?CB5k^-k$rma=w}<>HlDvTtp=9==DMVPfs)<=3z8C~Dr?=W;@Q
z-Q~;w(^g4p$o+MCU2tpJg#!x;jve^7Z<TSXey`4}N7Z)WJAVH%JHg{}Ej+mA->tmE
z_xMbX=PrGovr_5H%6+Z(6T}<r*d{b?_OMo)&y{{SvYET=j1pTyLCwUI+v{GuQh0p3
zvDtI^Ua#IJ%>$n+LOr!48M^oV_*FCW9YajSC5f+|mD*(sGk=R8Gn&m-tmK;{alpvz
z;@+i}h7s>O%l&=)zJ#Qj%e+||bu%zKV19ar+O<ta!kS^xtE<(_{Jw-Np7^g;`Rb;_
znwu7Rn(XT7(SBfbeAc0j(?V8gUEaEM?T*FvYO`{g9;{o$l+kiG)x6bcT}8H$kZ*Y&
z%ccURzuTGqRtugtY+-n1mng;|=(0(;FSlyNtDh#btiB&yT~MnqOLyhf?JdO&i=tVb
zU&^|DyZJ_L@wzX5tTQ&oJMMk(U*=P+#hw)lovk<%Hajm$>~Nl_9%{qKyic-*^J5a%
z2VUbeo2C5zoxy#o$2DT!Nq7f_7I&uZ`#XD@ZT;@j%fgp?56oIqHeoI6F0-efrLAkN
zj%Jruib(x^UEBXQ<AjgwUlFt5&Yj}(Zx~&D$!=04Gkcv4+p}=~qG+iz>m?(DQ-Z4a
zGS{tqc&Yfs`>tPU=aQZ}H!?h*fB1~+$x~PTLw&EZMATRwW>4G^@a%ihy=hHn?rBZy
zPc7hK-ZZW15#ydoEli8z!}+2mm-3WORh}Sp;fOxxJ-O1~kHf_NTmG|3_!Zc1p7*@t
zlKsUMGT(O9a`paa|CYbQ@7vBfbu*9s@A#*^F8Gh$^z#jYdDj@WDi_^w7x(mQIL^jb
zfA!4+MVVLnHr@RjZEB{Z>;38fWSCeGk+9_k!={T&|M;`ER4jZUddv3h%Cb4BI+1)&
zCPmJON=tN_DVn%y=3M9h0VWC)I~o?qFnz9E5_md9I&s;lY~^UVt5>!a@?93~o%A$R
zMLTWdvi$TwmF~37C%3J#yb>r<_rm>e-J!2>oAy8T&FgRol3G8fB{C$dsBE#<#YCk_
zy?up7^R<@$%~W{Wt8lx$K%DP+QR<E0wdRvAGp+u{u~14Nwk*gvrKG~K#OjTl^X2Bn
zw$<*!Yk$wXS$HAFdQSe$OW~(qS{!&L`!;)9`u029wf<~9U!Ir!eNFU5v%5)8ExI1<
z=yWPyQC)reflvJk>)lGv8TeKS=Qf>9<=-*o)z$W}xtmqEHon{V%`YKS*kM=PpZexI
zPfi#vpH<(T_3v-7h9-*_$241|C|lJ<SA!4ykk+`=q2^_<kG-C8LgBU(%XwBD{I+iS
zis#j~2Q5XcSAKc?{`#S3a&7NhIr&O^B%2I%?bhGZoi_iR<Ia_VbEDdv6}keSD!9c?
zdR}2TX`3m3&+=_HR#UTQ*Ve?=Y%xwx)$n=N>hby2vA^>_iK@^3oXu6pCuYA->88p(
zv7(blZ~Nc*^D>;zq_b@Q)ddkxJC2Kgom-jr_U_}42{sFYV>}}Du4sM=OR+Dy-)VaI
zXz7Pnp8h*B?tT9r!7|gy;)}C`&i3Tpe&=T#%#HZ3WX9Fxp&PL;y`oDs|IOy}`EN9j
zxFtpS25;o-Ha$A))ujEOdcR(4d^-P?^dz>Ej-pq%W)@9ND%upYIl$R(=6C0;U&SBa
zUU!_P_k8_1zr%^TTZF^KC%qI3oTYm}=(N+(>4H&QA0i(-UY@b|{6mfi-jJ7ab5HFP
zk(CyRx@KnaM>BLyjfVZK{Xg|W*R19aT@|rVXcpVGRbCqJejVDdGHRnl_V)i@`y#^U
z&UX*Lyy<NI)}Ovr%>lo}tj@lCJ7L)alk*Gq>wmNo3lb~%p3L+4%GYC3Vas_Y#dcNP
zarBQ=WeinSn^0P?Z9;J9JzM?zvzBM3yO;j<U7h7Q%k+czJ*WJOpLzN&>l|hb`m#32
z!)WSOk9|&l%Iy=Z{gr-~_dE#b-TPIUjbV+v*i9erG?qKxqz?;UC^-9@TiZP>$@F&D
z?G00JhvnVg^6l=w=Do8U4t1UJb(Va+XW`Q8mhD2zg`8zS@5-BM#rSpUbnQUjt07+x
z{)&(K!{=de&eNg##iAF6lRYO}FVT6Hx=P8U?+t&vl)Bx<x{Xzv4R`+gaN~xo_T&96
zg-$~Ck@s^st$eM7mdI~8DCuckwN882cW$GDAHLK@FR~TO^}lt;l&ABgjC_{F+4yJX
zr}y$`R2&gG?r&xF`0Zuw$tO+A*WUB+E>nG>yEEO~u&T`@B6a)x=aE(>8_KnRO*H4w
zV7PmK&$fFHeagd4dzSHT%H3IYS}r~2-E4=wydph+W;^CoHQniLnP^i~e=#`2Dbii;
z*l(LP=bk0n8uBaG$hH0d(|tfyP$jf4MpHLo>6V76mkbn^vaY!zvrPY$XuSFCehUs~
z(Hz5V-<Urr_(`;doNqCVJDYZD;mgvs(`LuV9g3B^(paop*yy@FL^QPDp0Q(}V4lPm
zn|=RwonPC#Y`fi#%qQ=Za=$c`_@vEyw`1{UgSdR-)azS*Ms?j4oZZ(P({TB%e3Ws?
z_l;|R$L(3Zd^K}&rkq$_<*%gcH*P&!%icY=eR<TAReez!Ydsa#9%uABHc{tO%to!y
z@D;Py9TwG}(DsN`DL^FNbj`jn=gg_*5+O%eKK?iyJon@JqZ=&*E@^%^RWa=XL&Jqf
zd#cW@N|rR@)Ucnw{?}IPPIitrw^@EUGpTZ<zdBp6|LfkfZIaAs3HOTmGLMA1p1wI-
z%V1`mb{yZ2S9;6>E4)6h%e?x)CTKa=lw<P!H}vGn%g^_SZU4H|!eLqg&ySkBvu-~6
zay>sQXWrjWrPlp<em1@Lx9v}LUM+ukLr4CDYo?x)@486m7_H}!$=<BBmi-yu8|&)u
z@aOmRd$rr;J^B2u9=1wZ_r;)&<-gvgE*|CC6XeBwix#op3h(FZSa4ih>qUb9GK1|O
z+%+aOr9~$E`I-46q*0Es-8F8)#e;(EidP;;&T1=aPR);4|LmZnlC!l;iJGHBhi;nU
zw!XvmhVMiVuI~+R?b4BOcH-?d|MI^_`uEh6TXr)3FD=fWy8Z8R-oLNwU&&tNa%P=c
zduBi5S`pu)#?KXNq8#otmgaKWXw2(x{{Qh*>`Wi_GtY|r1o{FLCd|+kYhXEjX<wDZ
z(pRsvH=fG*xb$p>*&Ywygs&ztoe~9adF&T)l(WuxdD6Q5_4?uy)3)vUZk-mUw%Ody
zcK7d(Yp*U^e=T~pSG&!@H*LGwl5OQerYs4{%-Xa}J#}VO{O#GBdUB=yZZ%I!eYZ0;
zVb#^f_uLgt*};dm_l530Q*=qzBdO}l^-b$mmZp{FuGpdXIy?8ojhyDIy0Z^2Jo#-Q
z^J<}<bK$=d4u8GZw(rHRxAT78>z0=0o^ftkhpTU{?7CTDrjr=X+A-EFW{qt8BJaOD
z{J?on2OhR1(zgudOBJ=He_dLueaB@1Z(RI@7xD~;R~}gKwRV%vha!^+Mv@7KpDP^q
z)>r(r^kw+FNspw{PR3emU3p)X75=s~xztUzPf*0!uydd6+@rd0??u%6`!5mFNV1K!
zHJr=C+~E>0sO7X<{(j8aQ)+Pny>kTjIBnGYHf`m>l@WFtJa_;8xwiNIuHEijrbo++
zpR#mn{&nP)Yh8Ev_N=E89C8w$UbgmM2sCP)At3*0r*Z26j|8iR*{1t)u9=;^QtT=l
zy4WmRF5z0zs-LboVueb}KG{w5{H;6rn~p^N@;1K9GQW;ruHwJ*xkdceoGqQTSqEy9
z?baP-*S&U3|EBJ0kHAI?j$V-n^;@eZpSDie!o=Oa$!}#|R?lJi=+?*w-!DAf#L;`r
zB<$#?2kf7AA9v)dnlOiT<EM;?+E*5CjM}nIW3h9?vVQ?{)7FYHWh-uddL@vzajQNP
z(+hWtT+=z*bdP18e!AspQNmQ$-Ify_9ym=@s^BvG9cgsy`I~hG`;G20FA=|SnLR7v
zPi5-e$@ABUM5g8aaGa2Sld)J>p?J5C(hIG*#|}uy8Evq&sSagxGYdK8E?!q-Y7{z6
z@)lQ0np0Og*EGS?TUgz<JXOB+Nig@PhwE*QKMF#7Z>(Jxaru4d*Q%v@x#50m7wyz%
zj`vgU7h#QLsrP9tZ`Fxfno&KuD{W?%nYHWexr@&FHJ&Qm5qUx(qN7Ep=b%oCsE&)f
zm`(k%HOAXHUe33>7@x}h?WW1mgD<+9ETXps=gt;4Vpfrh-)1y*?Zxm{=R^Fq`2LuF
zaMIPKQIl&;*Roq{3pHG|-|W4FU0!<Dj@k>`H8^}EZrzZSiLd?mPxUn$U+?1sTfeWD
z%e+~aV%$?^u)JE@gX7x2d74(-h9+8z4LNx~XUuRuY-QrJIMhPwaKLuA$#-TQxHIeG
zZqqyE*-XWU4PN@a4BRXDZnE^k9X%5wB~m|VDNmXCF?xpFyXW%+CoGg)peDV?$omC<
z!=LvOmP@8es+&#>6|&2Cd27FYc+HXfd3S!FoxSXTo_}oJ`~P>ikNtWsv)0<(;lLM5
zE^GIy^0KOn|F=JXvzPg8yWc&QV|4~{Z>;y2&c9nyvEu)SX*Fe!A8z`Z5Ffsp^ZML5
zCl@9<8uL0vuM9AZaojA+c&n>NMD)c`p&iYq-QN7NGzm$0^f&R~lefl>s~es^th_q+
zboZInN77dQD>HQt_&ej!zP`X7zw|;@-)*yEk{=Wqb8Izz7Q09P#Ul=xquXcQ6*_ES
zm0Yyp-y`mDsY7>5=L#}jfBCh?aqY9;Vs+hb)%JCoC`tPr6VRM+p=9m_u^AUsCS1r-
zT<EF9D1I*T$B~)^*N>i$uF7V#wsV^vS}CVzy14Ms=jWGBZ&RPXTwi|r`-I)4i_E8O
zDaqH~#m8y1@^NW-NX-A(8M{v$+Wpm5q1^D5N1MvE-G3G}E_8@8?2$Z`c~sh@LiAw4
zg9US%U#M@DVTp`rczvwid)WqqUpzTqjyOsDiPI02`!U-=F4yDq$B@|^kAv^L?c+93
ze)1t^&)V>w^X5;hdJQBwcnzPXJh1Wjd?DnQ?vBem2jt%!Sy`Riz4WC0^pl}3jrNbt
z!Z*DR%DTz4UYGYz&*8d<8(n>8PrIhMyXKN<Yfzl_N99NJCupV^N33Rydn+$5*RK8b
z!`nT=cP7Nth#K9weeL#@CvVrjJX&>}_v6o)^*s99czAOomVG)@V^y1HG`}hFPmI=P
zo#UZLH!k^q+Ql(8SY)57%kEi?0``|Y-$k6dvw7_Uy{)>FMHc*NvaTwPT)6%~k@g3<
zxwHPCYAb(Tbw+V{=dzLuZ8eJ=*LP;m6j5D#<ny1cPdXM&t($r2(9^cCZN^zXTQ^Tm
zwN~EPH8(KV;hXiuxyNnSDzB=1>+{~^&73)RG7rce{va%ID_hY{j^FZF!-DQ<xz2l=
z*Y4fA_v4Q33zsowOE}7WUKq!ubuc8%$(6Nr(|^b65X=3mI5MWpzrs^{+MMJ69>vAM
zr*%U=#T*WrzNEi&ht7i=X&<Ft24&6Un^w}LK3)3L@rv(7tTDHRr|o5&@K1R|S;Kyo
zh(pe<{14c2SRU1|IMukYYfsC1CoOpOk?OC9FN<=%XBb{weALC@U!W^<MS)Z9?aL1w
zYnT3FxS+jQ<(HC9=4<YA3!elrF5Hv2V&YA&_#2_z9Mj)wU%9G3RcPLV)afT5O<J+g
zJ=DlS`ZUwFB~{r``R^C?$~A}@Z9XCRZM|IHzJDje&cq*V?*4DMX{EBsKB?V1KXGh1
zcju7%6I%zn*b}$YC(2EjyN$skqoFfz4ddGOWR1?Y+Ke0BZMGRVdfQ?%j&!<lnzSwM
z_00%YzBR>R_QUkj*%uT8y*VF5Tw!MHiu=H~Xn`%yaV7SHB6d1kzOG!~?AqC6q2$*+
zUx;&~#_Z~&KJhEoe{9U!B4roOJ2@@T@OxbR-u+UqnfjyHu4eq1eDY*P&8L`!1$K6l
z>_TlVi_WMCO!d?$;`&e`)2gy_(`~_p({syp(lWZ1))gL4{y1SzyMlN9flBWyZ&z+A
z{Bc_1o6Wh~$$9=PbEev{OygO!<1+uD&;EvQOnW9aD%ot}`|ZwC%bYAS|L&_v8Gk%)
zX~g_syYp9}gw6I_W!ugj+l$)Pi}sitz9jMFk@#Dl=D(93X3BhHkJ%D-&S0)w(JsF?
zp=&&>Ca@g%*!XzMO2N7q5g`tRo0cW97gbyOs`m0-Zoa1yHCab(V@l9_3#qwl>m&B_
z-(MZNIe|AVF6ejSw4jJBbNphHtCLoy?5rtgV!m@To!{3ijQ>jIBIeyzVISxDSX`M?
z@VesWg)M8B78~X7FHhZ~sk40bYHr6j@s@p0vz-i!OBZV0oNB->6Y3Xd=E=A`sU$kK
z)On?~<>u=$oh-^1%pOLqUBbK4anbR$9vOUpa{@2SmMi|bU*pW9{&4sC3%(ybBy`7S
zg^Byh-1zRxvD@BzPJO;cDDO;{;FkJDFYlc{#-5j9dTenbxA#MfrOPvGw>)?)Df6O#
zdu!w@Hjc?pQ{(c#+Wz`EaWAuD*Ho3gj%FL&BK?2p%-)_8_nymOlIV-2;%B}xs46<D
zv@hv5-gc+^g$2id&MzK;Q*3tU^2pU5w3+=+XuA*p&rkavE&5@fsVeC4ui>ovOjfO}
zOLx}R-g}pOJ7h(y<Wkn%7c<0H{$6BzG2xnW!MhTR8`F=}9sIaq)rD!Re0$$yyt`*D
z#NU2Vg|o;$p)Ms;XXckQYo>$m=IGCBHoL}rZ4>*A2o6uBx5p>3{L!#%SFt=){NmOk
z)<TVb2_BzMj`})ZBa`_n(`PQeRy$R1_06MZ?~R-<ndOVGu1dSCsui{BWn%Rkua}ON
z*W#r0mef}5J@=sh`nBqQx!y1LZ`|Z9cx3Dno~|GrV!*WVwvujWTG#`T-IvoINPJqj
z`0nPzp%>rvmIi%qP@PqJ*eXu+7kduZ4S!>!jy3LmdzyL{&GitOcyX$S%uA=^=dK((
zsQV<NQQp=`*;#*4wjlc^uGrw7whs4CmoHv)?^-6RcIL|O1rwHhv=Z22aW1-ML*BLB
zVzIvyE_PQvOq<sC_UpYSkw=q1Z%*Z8(3n@BTx7T2G-S^|wL9B2^PlYbe9e0P5{B?{
z*T1}fE`(pZui<5Vcv(f7gV~R$>rZTWH_hX(miOaJo7=eWW#hfKx$j<eT$bK2JNMtU
zt&-`dN@k_T=dCF}B2$xmO|tyM$(UEhjISNi_ZTV&{LeAgF3jF!p8MQ#uj`bx60I{2
z@&3zjzn04Pe9uKQ^ZA?DXX!kvvAH_CFks2ole4N$iW*)^aSh+F<ub3vY~>`r3f9%)
z5tqf@RBO2X^IWUR8s~WC#rX%~$xMN-1^Kh=GlkPVUI^xg@A99beQEKp)TQ(OtFZ3o
zl(JO4)vLDK;nTlaOU}<<^D%KhgPEU$^YJxP`VJWslrKB=wlB2ufq09;?hWq~qcvDh
zD*5K>1a;rz|9$9y$r%p@Th>P_<>ofuP26B+{P>RU+tBo-SJN7VuKwGwRIGucZfcd!
z-yqwzurp~n+`86h)0Q8ZV6S#`Q-09Xi8h`uQa3QP`xv*aujOCzrF*lx@Y4U$mdEC*
zyxGrCuKM3!)3)`n>&u=`+)KZwF5IK`<o>}~r)0}s+?rffxZNs$>*04^p8tM7y&Umt
zvv<AM<g0HLm_n30lN~vKwF;le+LPfhr%haGvtxJpu|=FKVwf2pRjSu}HoN@TG>bjt
zUeZzK-LifTg&ZZZ&I{DJ{6s9YqYtEe=btlKyT(+1vb%G<zgA#Xisx>bAJ^x3vPFlP
zG5mhTbn%s@K{)FX?f>2#g0@W7a~$rZe%a>Udh>wz$=dmQcCO^B)-o#!et*JezP(Y!
z=Ys$9_FZ`18sNQYm1<VY;}2PX_+^c?g(n`oYb$$s@zsrucWW=sn{#{S+m-8Ho!e!W
zHLdNR$I%xbIQPp6Cfs=P=2!8=$o&aL=VyG=3+1%4P=BtU`)p58+S6s(U)&kCc*ttc
zP+_##ymOIfv_ithuvX@-gXzm0UH)xMF}<MTy6M`A)nCpmb$b2LMc2y7T~a4u8snSL
zFO{D(5A>||S77vKITsYda?Mz_^2{;2Wj@E{m!F<wz1~c8-tPxj=j%8}cov`Z-c<cL
z=-o0csoHs$X5Y0-{Jbi0TIx<kFXt7%4@y?=-+oGN8AsQVf{Qt+r6L;>m8G`rnsd$C
zV}gRfgLizZFQ@AMU1p{$ux5?dx6n5NnJhb|SR7+HCGfhbOp{f@#w>Z}$9)?(HgwN^
z5#D$`)#i2$=h<U?H<>oIs%I}V@?E?&&8tMB*KFdd^S`T-MJLA|xx6K->4m}<xf>}F
zzw-R!wHn{8n&TY3;@H0a|M~`x`BJ`0u3vv`j+dlx@rzp5Yw1&F_gL*(dNiWpjPIh}
zQsb3k%I`YPS$z9cJ#pqzw^K*i<hEumzjQG8-DUTKYaDkRT%WS7!6;_(jYsVbVi|LO
zNUdXLx%$x9@P?eo>_d{uHpZ_$t{1TIDC`wm?vlJc@rJI3?kyj+*^P(ZAK5TFVD1xz
zUInp@O$$>PJSFe=UsxC{6aMScqnqz}l~yzFYHhlCr0_*>>c$r<E~%`ZdoX|2q4O)O
z`E(8`y4_H<sh*TnuufcaPpzEq-pw99r%UTfwgg?*xAmWM{nU@8$scMt^sOA~s$SN9
zTm63XTdDWP0dw<LbUl}Tv@|$ng`M2$e1`YMd<O&m9;#oMKS|orrB{*d!<=M~H*B*i
zUbCN8Vwa1%)4b!2)0XL(6^b*0m#K!Nb6LnTPCj?w#v(a?o(~n-XC8OnlKAq>OH}&5
zn0m3wQO`T`KkeJmoGM#5Uq3N9GMZ^kMqQ#@?YtXH&K>zJlyq#HV%(9Ir~aFhL}y&*
zWAX8_DUS^4esDAU>{|_83!k)hkA*@@S?2QXcQWp=d{NY<%ahD$9qVY^{Op0BJ>R<x
ztbSJ}t1O5R-?Oe`YU*0S>DpPBU*`rUT+MhH8{_}acE;>?Gdz@5hUE4x%_+NOswDB3
z=b&_~+H8L{jhsmjM7N)OHkI=ebKC_%ll332yxnu4LFD*}=I@_%QZ@=7@wa>TcVF-3
z2Y=VZbso5QUvSMMmiM|3pKPv*YY*OYWTNti4i+KSO}Dog_&@156LdX$`>n6H)|Ty^
z)z2->RJ`J+#Lk!cud2?P-v9S#;o<bWmF<sXi??5q=jXd;WwxbUMM~z5z1fz0l`hTQ
z@xLD(In^G&yHZ?6zUpmow)|{Ov->|T+}hfIuIXc<gdh{Qe4>aTYtD({Gl$M4eiQCE
zvavYhH|O)Jgo@TfM?YtkfBck}Icw3WkPUWA0(p8a&E6xn`TCK%B@sL-IePA^Is7)A
z+Ms*un1lY3NZWny1gAZ?8+KBy@QSuX=fZ%U31ZQW&t(~fvRrSSXS#i>&`OxeT!nwX
zQ1jQS&wZ9A@hMU&#(t{i9X~C%e3UTdJTkRSku$B|A?wyvk#6zejOgPDUDHjs1$Og(
z-g0YWWy=-rGe>Rm&0cW0JqQdw@8Y)c8edA(_OI7Bh;SPT2dSH`-Mg~(tL^LHZ|C+t
zexJP6%F+MZDZZHtRkvS#vQ_g;_1W3sB|nvpF1aiHF=)}{9E0vX5?`W~n=jwJxz;-G
zWnF9Fm0RC4R<_({3$t!qW7(auVV~0eq|y@C>XM^f8P<He^ULQr@_2P$O3Iz#yw>&a
zfmctO?)&rQY&f@YTk?}>pGs3!{@fGs?tNf&{%KZoOZ|Pty|M{guT~h&UT0Hex^c!G
zi@NB`zUTeQ-^SiPa8ZTtW9!*<bKYg`Uw1j)w(Rx;M!y6GC9XF<zx(!e*lt(4zGbWZ
z+T{`xmIzq|Uw(DBwez={(7kJ4ds}UjS2{2Le*Z$ww~B~+Pt3H<8b7t}{ddiD=B|%T
z^Tpn(u{K04*sxCTTKIF$BTP$P7;vYZOyFVFIT>nRzWq(a%>#)kRZrz+@c$D3;xdav
zIh3LN^YO`cf^|zBTNEZ7k#U=6c--~=uO-YM*iUN~2JN3YBjoqZO9z5Jt(th?SIW}B
zI>VzUb!T~}3I{heS~mRZ*rHS~|Lt5<Emv(}-_%Mj7H_t{%9&qOZ5pGtKm6UavxGU!
zYk~dCkL~vsSju`bU8!V_XgK<!(8_gBZ{tD-bpvrb@dM7{UKg0e1ZvbDvVOZ)B(~E1
z|Hlv$S>Iy5AB-nCp3iljDBRndBKs%j_$$uOlP+ydDO-8js^qISi}-65Z{6n`l6U%)
zf1DdzUi10apKllE1o|IZ&EWht_;0JUyU@SJ=<5|h6Bj(%QWY~}w&8{)ftsejtC}yz
z-<)V!`Z#>KG|S|x5+6IwCT_ISy?0Kww)JF~xu4KC0kx{VR!3K|EMB^pC2spuy9Fzq
zxj+9n@1g&o<gUl#jS<{`mI<B9du~)5ab2>-ThGK~g5!o8k5BFTW_cx~v%$N2P0E|@
zZWX=#M|!S3+PE!k*CyTXoA1n9e}0{fMI?u}SJsnl%fGv@-42?>x75N-{v3b0*}dIr
zeYbD7AI~nc+hX^rX=~ylTaz2X8-91q?#i7VefP!m@c(Dm)?WM<JOA&kV;j@|fBW}(
zwq&!;&NrK4uSmKazA*QEj=-HTMf=kK&!+jlWxV%j;`^Gs^hISyr$imS^0>XB%+}+L
zj#85OoCO-)ChcG6JLoJiX*Zj{!GFW-t!+hH4Hh2#UE~_Dcgx0{{?w-r+Y5v?Op7{|
zz-v*HD7f@Oe5}nW4xY>@8}Cc`=(O%v-2JBP@ceVm+n4Zi`G0vWx?F}caFcLYbAw!5
zbf0~!*1wXKKaw>c_dnG?BL8RWt=RiECD+Zj9nC7M|9oNY{TW?*6LN1F-l}(=efrj#
zzC53MOCO$p_uk>p&vy$y9$&`YYb`H#-A#gfKJ&!?o=R*rJD=$Y9e(5LSmdp<Lov*i
zZ%sdArKI-8f4U5=&$Xm&rXT&;^ImJilDr2G{DZ3I?c34#ETW5PU5Aw3L5-VQ(R+=)
z$}Mn9S<Y0UvB%4An>Ww5eOzH;C$%<S*{+>X`cOgn=D|JrOrPtRPHYi8>3n3@#}X}u
zJP*FQ!$R49fo2U6>Z{B;cBV#{#-C%f<6Chk+$2H&;T2((3qOy}IjC}BN8E#e?Efxn
zcRbxS?KRsao0CRM?#0Zw5gqaUW$D#z=W2yNM~EGHe%f%=hE&(`f{a7bUtg*$Px?Ny
znK8N~A-wwUm2;{!yW}2Rc23BBEHFQ7<3A;P8!<V(w)XbJu6Gy~UGZ!1_YInyvM%`J
z%KSA|2VblHHk<K3sb<yh{6m+W*Z!WjcVlkZp1=!%I~voAk}uDFd)w;o$Bnn!^4MRu
ziLWx;tYwkvUfdhacDbtJAgkY{wqv2y)@tvf`440+TA5ts`e@!q_I2ycciwGcG}yJ^
zu<*AZ(c$T@uIV~X-oIm=-L>fFADJ_RWYSJ56}Kf^*vR5rQuf8|$4B7<@Bh0xFKaV0
ziZn@a`Y)_7`QCQBM;=V^)}9U-Oo9rZ@3X7@iSPO3tPmd*ZK_{4pS6c;xun!w^`3hz
z$HN~B$_bras=s(?+Lx=R8&2jL?s^+0C(qJ<aMJ#Fhb9^sFy8fNOsNWSUA9g&rD@KR
z?;;OWy0*S^-NL!jO)Bt-$O4tC!qWqVHu@Y}=deP1WykzoY7VxyYM*b6J-a*XsmqMs
z*AY?iS2r)-o}6YPDQUZ7S*pz%rV#EW32r-|aDBPzV{bdxzV2}F<=#zaPko*gJ4trZ
zxo6udZ{@$pzZ>$QU^<gX=hJO9Vnv<Ojwv;g3L#=IUFGb%zv$QO&Jf(N@a*4=KhKzU
z?QJL%xsb!iD|X?K%(Xz1B0u$Vh4y!67BX9IF>F6ptnuMT-(_QtSFDGcrM;bY-hIJS
zA-$x{dFRg7{;sNmL#BFHu1t7nbf+|qvHau7>yJO4JXwB4R!Q{d73Bnh$sbQMO!%e3
z@S~{g`sK}w+0D1KxL8_l`v1~);lZS>j2Dcjq)D2^m`|Cxr@WMB`*z;7EAM_hu<Jwd
zG%JS2zp)HV+|t}fd)MlHS-pDxp0`09A}Q0vMVh&qCMAA2m!F|fky8A4**682gS+S5
zp14ACZqu|9*$-{c8&!8s3%I}%@ZpzmN9Pnpt|)s(t~PPU50#=Ulb0lL-uj!!x%k3&
zJ-am;3{3U)yc|7jhqV}(Y~%UA{CQTyvL;+`L!7IF^Uqz*hvO^mD*j883wUxj{_fQ5
zIhAE>edk@Px0#jsmHtq+jh_9WBl7*PgUrpj-)r6%m;ZgRo~`?P&HstD^_wkk?f86=
zH=)P$ZH>sOliNNB{!$Z+Jab@*u$?J$w)I1u`1v&-tpgmcpE#i98u!K5R$--Bzvp-E
zi$@qwt-D@(LQAYY=c~t-P~B#S{QEW2<sQe1om473GCgBij6mb&8w?+G{FY2iTf*=$
z=X4NT*^Wt#ss8C_LW-<?_7@$$!hQ4dt>ck3KEFc$e|$Mz@=u`b`rQ@t4;~3#68EhB
zj^#YVC?VOCXI44QS(vcge&OU-ZQGw*yR*?KE&ulRf3IK6-gHIxW@;PL!5dGuMgEX4
z_4DWX^~d*WSo?jx*|#beAL-7UzOpJI+HQC5`-xls&)=)x-@kar=eMttmo0z(%F;wC
zcJVdaNoy`fTuY7IbbMRR6K-yK327cFZ{^Ajdfv*>Y|<^s9g`;<O;qGQr{3vlmZJF3
z<3J~8PFP>(WOs$x%>r_k1!clTHXLdKIyD*hwy&yQGBLMjvhTOO_S?LF`IdfNziQvt
z-=WvnzcP=tov-aIZN5l+ioxz{es7~5vzF-!eO$_OyV@Y@zh`gM_V>1X<6|x@n)rW{
zt9IrqTZ!BqbvJX=^MYnyjoO$|?0xyzGlsOA-t8}*xP-hZ%75F&+B&bx^=k3D$e`3^
z)!P+iw=!PZS@b;gY2&V`p=V{gyF6WQ_nC%frER<X?BvI+NC}S3tHoKhr?qVI>C;(n
zeOfWKefpGa-lzZG9LhO4@o8b&in4Tt>(N^(PXC$pwR^RQ<En@)6Yp6rJ-PYN+a$xb
zKL%mZ51G{evhFbQe6*^6Lc5Y*e5BuxDG{LyR(U!0yq(lC<4*C)Sa0*JC(XT44e4QT
z%eH^MoR+_@-)_61CHG~S&U3p?xcl7ubIKu6BjLZvu8o<WHvf52`^3#?{elnSn(`Od
ztC*gDf9`9#)sNL{_+0-Vs#+d-_R;P0a~r-bK55Qse{8X9iTl5pPY<S~W?#~kzIH3?
zh*|c(`~_blWB-|~jZe6ux9{NAFNZ?KtBadI&eHfl>0xtt`}(+;)b#c7j`#Iu-?mE+
zbXWO*&U#a`>(8uZ=GL?K=-s~gS#{dUx8KgZvH4!gZuR=aRq4F_>u$aJq!kvv&HZf2
zj99zr*LLh$l{{I2^Iy%Uki5P#X=~+9KY8t<u%zg#Ldo^{e->{L{a(U*{nXZ)r8RPY
zpE@T0ecD@L5&buN;RN?n=lezGe=2dmXWC}J<?7dP-Gg4~5)0Ov&MlAKp7Z<GGNr4b
zJ5B1Y^ES5nPF;0own(JrjJ+!!oodwX`q9&N^z`X<J4=0U9=<ql&$P;|l8tSvv$EH(
z`8c^$`}^Gs0UHu7Kaf4W{zv=X=Iq01tAo#e3jV%5DR|bR?OSfu=q;`CUG#UCT=(hc
zFZTRhb?8uKxYPNoCojLTm1(;hnQ>#TSXTLlSu3g!-A}z+#ko7!`tmyqmdQH4eI0!9
zfnkm_y_MoE%1=ElTK$J{_GvB7^*f3;8|9|UZ!{{OpC$Te>CvNCnkRnx?a4Z4I(O02
z^97PMrfdA{;{S&Fom^&b@F1r9>iVQT5*>C+ey)DiePeD9cWga(-p}i{yZPT|<m`Mp
zGy403&#OgO3!h#u85<XH&u&lB;TK&@|F%`%|M`hG+`i;h<8MFPvcp&T=Ub&%f4GzT
zIjr_c{C4U2!Tanrg{P^1*Id_7?y56WZ}r((yW95KbgkPKH{<i_{f&>$rwLBKmn@po
z=wn{|XW?a`iz%kXn&;(Hjy#)f_wQEbZsTvIt5+AU%d2ua^JUG_W$HgfFYhY3Tzt}W
z>T{zx^(BE<XB7RLyHD-jgHx{RIj=HShcU!I@)ZleeD&|=_5Xi7oAAD?wpRbc)son)
zbM`TuT*Fp#&mnEuT#f5@ZFeo*R1_MVm?$|dtWvViXS%bl=DBsd-z`)9TrOWx^4nXi
zobU6WJ&JFfs(ZJFzGXGb2)=de)TwJ>`N766_Z3s;R<&Qbe^u!1tlfXTZ;SKg&3HXY
z_29b=*S3Av_qF_2w)9#Ub8z4O7oRN44hvPjGUL(N^G*43pMBBeQ2DnrpYvw$?KXd)
zedy6EoBi`I$4Km4*7)l$*J<t--wVI_Y`+{EFeiAgUZJb^pH(}<;#Nhb|M=_Iz355m
z>eXqrrK$dF*PXL@n5?bM;j<>?SVr%rf0K^AIP~_n_^y90>wjDRy{nS<^G<f~y8X{p
z@*On-OswyJoO9ecw*LAg{Ykf*eokJ$?A!5)Op|9#e|hr!*}{+Y#~RjE|NmFc`2W&Q
zQ8)P=fkg*|beBzgar3a~R?#<WxlMzoWrQ6On)Tl-EMnp6KgOc<GmpLaThq{Hm}GZ=
z)qLH$W0M>f#5t($uqZpKx~E}X&DtaWe;b~BzHMi35PtT|mRmME<4nD$8W;a<?aq&}
z`~PcN&BUEdb6IB{JsTD^|4F6Ot8H(V``bz1bGWC{Q+#Z5-67oxO%GM0^D9oiS}~pH
zb@M9qP3t$U`yX9(@<{sKO3TPT<NMoJe({#t<+35cF(PW#Gu6X$Up~~@Y45V>-0e95
zlWxrkaGn2Odtvtxtx4P79&q0-d*Qjo-Y-`>;(kqXd4IV^G-}mL{tem3nBUFXs2OW4
z_w2~?_xsw;C;j@v7caU|Luy%+pkKfQ#iWJ1U8Y{;>NkDLe`DsNOH);=FU$05%n35p
zcHge1ntAQWQ?*~GpJ<tf=N(Hjs`cl%`yimQQ<g7j)>gsR_aWbH>u&qTzgfrg-OjGe
z*iOFuNr>5cuJ!vj9u<#}$j*+rFZ3n)NB_Ow@4^>J%UPAam>2x!^XZGt*4NBaw%-5g
z^Im<Q`L&QeKYlH|9sJMk#vFm~vpot68$_N@d=wKj#kp&<XQ7zp*U6WBg3hJ9zoxLw
z;PzsVqq1r;qPpREZ#Xo}S)%f6WTW#qw%n=E*fwXM>qWs2mwoEAmxfK>=y3dbxBmj4
z=^xV?w|ps#YU%Ejv*g>^ak}~3jt8BKOrO3IO!AYI|Fw38-sMx`TJzV=Ic(+?S~uHs
z+UhxV*NQ*izv-#Dr)K>kYt7KC2-k@h%1h_$?6%Sjj`K>3ecyTG^lQ)5hAGc4K2KA2
z4_ep9@$q8Zo8a8CO_$t{K5;gmV{~}en&)-R`=@Sxb!g+I<tb}R(l4dXPT%$Y$c77U
z?;qdzyrF*OM!WOORcX#O>#Vo0+dFM<L({&{*6At#_w?R=_VU=TzDDsMmeb9y9dx=W
zd!pc1h`U?i#QBo1XTPt?>5$BR#d&l_f%(>JE>&H(StdRWnwYD!Ih7;TZ12Z(<DF-h
z70vEFsJ$qlxNhlv=P<`3`@5$!EuCU#W|R6b_1ivA_3D=@Mb9qGv2>f>`g6V2nUi6U
zWyQbzE0c)5ocN`TJ#-FxR>7IY(LbJDWS<cpc3yeSYpGa^MHi0jPY?<`Dd)K^?R@j{
zIM<WUM5dNpeivi9)qdTl{dPNlXv=Qj<N3{Gt$fE4>%5Z}j_uwhZS?7r?3v=(tEVOu
zZQQr);Vh3^Pm+?IC)BN!NSPO{u9hnI!g5RAkr^>FUf){z+>9ssOLB5vq1q)Ed8748
zshd3tB{lU_Rd+5iX&2eZxax?%myzen{wZk_g7h2bHg<KZ2I)*XC3DD4d%Im!=+8eL
zKTNLPn7!(~r|rkmUFoLgB0>Es=iNRXSa|8S|5970rL!4BvRp!TF+0@GDlbf(v!Xv#
ziN_)9a<$9C-S>_bd|j$;dxb4PRLXkM3+?#$6<6ZZChcNAZ>?9JrSfNn)%@P?d*=Oa
z_T8F1uP60azlwiC*n)&IhrPF_8vbmsGnLZOm}@ih7KcN~WT_9;E3Ug0Twd;{@~dd>
zW7j|L&zrvd_uRb2KPk*$zO~fG>82AlRc$j3NKn3Z{R`vjgA!AvUTkC6-c`k1E1f5>
zh+oOn<9+vn<kGVaXV;oK`O1mrgV64WpI-1z|IS;-cYLA9;c0SdyAy5QU${9=U9+Sv
z&x(EX*{mw}#qV!UOq*-Ydwb3K!&;rcCKVpH+5OY?@3V`o-b;V~Gv3Vqt@gV0f1&&4
zmRr6SGyAU7*?;)isj}TGK3nTYXTP0UROj!1vgEn>v*fn-(w{dzx40W$9aYhD_ITYd
zk>`hQEZxC%!fX1f+sE%qHgg+qeG{{NvhW&xHG|+H!LJ@#(^tK^trwwp^~6!V=$Eex
z-9xG#&*(X;#j1H$Y{HiCzkANaeVm*a@np;2TWfr3=2`UE<apXAuUauXWm)T~v%5OY
z?6mZs#ro~t_PX}Y=}C_^yx@EG^5){pNoVAmXQ))`%&>KumHTJ&AMH!|m76sVKC9!>
zbp7-FM8}uxB{O=ai2mXKDR(T{EJ#f0y4y4*X-(BX-+vswwAy2%gr@g_&3;v^nq3o%
zbc6Ud#e^v@W!q^b(ciml!_6Ga|6KbgRqnZ2yuyFO^ML(c^PO#<-3cx6xi$CQ8@-<l
z>E{2vZqBj|U%!9nUXu#ZzcI1j`fpxcyE$uGNJY`1wNp*kPJNfYZuj$JJ4<c9-`nu=
zp7iWj)$e-O%0|oyzqYMZ(XQD0_O@4Y?FNz$rw7J=4~}81{Nnknz{1JK|4E;hxwOBu
z;qvAZ&G_#fZ_X|B&ztqWbcbl?be(7U9AOfL`O{);lD2smh>ID|&oKYYRoio9od>ha
zlTL+Ms$EI0o94Z5%z3pl(%;eOz05kT6<QCT$vhNy74d#{`e5v~Tgiufe}!+;ywB8}
zVs(D~-+lM5{rVv{J9*O~FI$&Qu{-xKTN==LMtf%X(vyphs?4|}`uSE9cixQo`TV&N
zWy(7*J=>$LuW+kI@9OiyNPEeBMnUh_=Y9LNM=gEXtJ8()sTNy~X|L{@w&wmVspRwh
z`Ym<li+IC>;>$#T1|Hd068Z7cu}4e2yQNv(uL*uCQ<+_?v%cfUrrTO_za1aAH1M-5
z`Eapycg=mHkn?RDPwkZd^ET)2PqTe?XKz}jKJdM=@3XXaIKTedxSI<C`x}ysGflfs
zhp+p1K976*Nv>E~?Psdl>ofB-;|z8)OpcD5khA&O)~V<2-<eeYbk&1Nx9;>D%bsOA
z`*i9yE91NSVzytudS^oT+LdbTYMF7fGcWE5*sFf|@%hcW--<;qyFM|x+BG$L`YG<p
z&B|B&119l&ZvT00%k$<F(}U`o_FhST%P(vC=IM%}&%Z4>_1<SkB=XhYNV~7NdX4og
zHTgzE=X#Ub9&%Fx=1i47v+3;yE4BE?{`1eCIk(sTtIoT>N)xO%8|~rxx$9()i80&!
z1#Whxp4UCR7u+uW!*t_-)i2pMxtji_KNF9fwB*|FIiL4e=2gG{7c*Vs-mF}3dXx1r
z;}3s!t=f9nyIbtq)LSkS_r-V`rBBsgp%*RjsakvejNqu*Z_BD`QY75sN^YpvKjZv4
zJuf!M!g^C`;lwuunq1GGNC=<x+kQAQLjKC3pL{ppDz7%$yGi--#O1apC;zE@y>M>!
z#cj<mwk!U+_Hg|aQyIm6`;|ZbdVLlA6rmz~I`Y@1-IKR2`F633Yh}Tmt*d|DzZA8z
zvU*pzRqlmd7qr)IKb^DZoq}nPtWMm$+uPRJPfF&#vQ92$Vr1;Xn<-XNCnAqN+;i+|
z@gJAlCiyRU&)zJz+;Z#Es!&G%LTAs&*oDSd3J!}NY&-Y&?Zb$YzlVf8x81CfT*tFp
z<@B>jt<q`LpSzT$qq$yp+0?zC<ok7|ozDCPr=`9e<9lH=U%R?1_~iVOe3MG`q=!Z<
z-~Bh2N9FJ1iQkgA^ar2ggrg^gnQ9wM!;868Onw&b_BGH{`=q8b^+<Og&-U9@@8+j;
za~@t4`%L)fP6>(BljrV5-I!6+-T!g^m9<Vs-acjOn&rAluK3=pc$Y4@$={qV-Tvsl
zs()X_m*)LUPm^1{w{O+Gy-Q>Ng3{ZYuHII<S-y((tE%f()>X?_tTV7szwfs$qV)8!
zSr^)D-<~eZU$u7sw`Hll(z8AlNnbbH78gBTaK?5qqgiupeC>|h=UqL)eeI!S!Pc3r
zn|E&a+P?I5i+A1spNco9PJVc@&~Ubb(47?jZn5gNSrea5i77eH=wF`i6O$>X6DNL2
zbmROFEgu#g$#F71GMV?}mEx~g)b{)^%@SU<B2YkimFroRnf<K!Tc0mZwo~f~)Vyk7
zxYT;yf2P+Ha>LcEb7vg>sJ8m+w@I@a_S%I+giq_OY*6v&+qA3IbwWVj>YB*Iyej7t
z*PlMyRQkcf_>SLcU)QY*BO_BySGD(b>a7p|x+~YxbnR1CZn5>NveK_D<f;n0IBWHe
z*DFgal#=qJL+@M*xpOV-j>?S$**c+%7SXY>JEhbfwu?WXKKWDq$#Sc`KYw0&6#aSc
zk>9F|wKr_s7*(5W{V%BQc=rvik3!sse$AXTBaZJ-)QW@K-u-Ol&hnn4*6n(3ZN@r{
zS##f)Og}q+YsWtgmfP10j()nevvTXxN;N^XR*p$QG5dFHDfD&jTb|*ka3knl^{TAO
z+<8YI25sI{e8+FP^I5HeM6vYgIdScmlSQA0h=#6~Tb}XRVvXPIH5D=6)|{F)Y0s=r
zHj!ueu07oMLCycO?w{i`&t_cAJtnI;yD<C6TkX>)`6pgD+;($^>(1O;IXU}nc0cso
zEX}l4TG#9~m+>36ug`q`v452jzL--LTaY65v-tF;DWY9}OaEE_f9+BBuIyFp@@Ua*
z-DdmUzwQiey`wQ}rs_mB;h8BXpY-4G_$>DRq5T=tBJTN*(k4gqi=Wq;mwMWg>FsYz
z>9;%MkMKCO^2zJopZs2VU;FaBa;q(Q{~tW}@=li!xX<(Zp=P{be~1px(?@EPebl_u
zGJ`|wa#ya;jm*efcKYSVNu^=C&zk+5w>&EM-kuE~+P7xU{-j&Bd(zA0{r7LrF{}1-
zjq_dm=F6m<{?qfPPycM_wCPZ8PU%0f_||(i+~qG1t)FscAzSRnpCTI1y)$MzS$}Lk
zxL`?^%WtK&O>UQdTsV5GtnuoO2jbkz*0^Qvy0}6sro_28+ub`Z;im8PDsAu2IbTlm
zS>4w>KX31jL(ZSpugQuuR{xxQ_3TgX;<=5h?(8`wbKHN`H9d`$IsQ7)rN5``oOCnm
zXwa!_;j?MM3(7oK-ku%5y{7DLO#kMz%F<=gt6SK(FLKYlkRTWCnR~RKH~M4Hkz=VI
zt7h+z|N4I8rFHFo<@5Fm1pOAiv~QP7<Q|>5LTluHEt!9++hx|DzN>lLCmqh={vNga
z`qMDA+>!zjU9*`gn?Ezv9h~L3_iOJT4f)BRHZ1y(l=8<QDDCt1iTs|C9w!ZgX8q*<
ze6#0x`jQaE>8FB>dPVf>rSB_MPJCn@ly%_o#D>T-MnQ)>RwnJ-)H}uLNs-Y!nOTP>
zKIwXLzO`;;-#h!tuFopRZ@%Vx(KJ_2*!GM0EdJ!X8k^rrMX+o#|8e%uQh{Il9ypzR
zc=qeBqBTuAZzjt~T1rY<nmJC>6*GSJQf_w2#I;{qr^K!P*ImqC6QCgd&zed9pXkG-
z`$Gk0-8Zj^ELq-K>Q?b2$x+Krf6ILFb#uA?>;2vB>BDV4Gj2BDvs>P6?q3zIFKZQ4
zuKE4w;HF2D9)9`F{<QB)LhtQc0&!QHYu~(=m#GbYc<0Q6JB2G3ygGhM^5OND2Te;(
zeyG1^zoUBDp%1JNzt8hmtoiuo!P{^9sy|Nn_?Mq=Usy}?%$T(BwCVeK5~UCM8?050
zl-|U*@k80Q+c#Hll0Q>tu>9Zuz#CJFPycWE&spDGpkw=F*S}Q;=H|ct=T_)^_pkie
zAhW~pL-(KFpZps>EZgQ(y(*#h;B{{2R(pM|l*A1$Iv-7XRIjb6_p@Z>{*uqX+uXhG
z>%8XdI#}`H`oZg`vm<}x9!=MJety-=(p9fchx)f&+f)#%A@+*@El+Q&ozO1pFDpME
z%D(#asyz4a!@CddpIdwQ4f}cS{HteHT3RemJ7+s1wf~CU*+ZMR>R;Ix@;mG8`>gw`
zY-80oT=;Zfc1HUA$uEiv)meVYZQyvW#6Ed_@%71zPnvIJu$xiC{3YX)zl*9(P{<~B
zlZG$$&2ql`yl+kX$F*Ws4ZDf-pSLOu^U5xrt91CTkZ=8?-t|^%T%P1h*8lnrSD)}Z
zY@U3dl~-jy=Pvc1CNCVP-1O#Ck5{&icxxT;w%S4c#M~3Vg;vb^!++t;ll6|wC+|0G
z+x%nRlhq5{EwwE<&fRZX)sv=P&oAZikFmu6Q|X1~lmAuR4}Pu=5Y==)_}Tpe!{WC+
z?;PK{pLFzNu|0K?$@QOcqtbGd0~yty#F<?AwDws4w7w90(shBbr}2yG$;%!5{hNX<
zCYv<QoBK!i#m*;83&W>q?9W*AXVJ`0-9}Hvb*IFKXzb5e`ezaEpZ8pQCm(lEpOoJ)
z&wHN0Jy*RWg;S3;Pu?#$q54z*g6EU+xt34x%QUczpW*OJ-|@chJSN-8a~N!A*RX$y
z`Sklxi^j#0D;*^ly)I9jzKngcckA~F-!)$Be8S)Q9i(j~$MVS7<*k?JaDMSA68aMJ
zN&QgfMW^5Zsh|V?!A%G1+5W6=+}HiZc)}&?1;Qt<JKj(JXndf6ZN<5!OGW1xL@gBM
zV_dxtYM#<r7vT4RMP2(p&#iyy57%7a?wl*?SIAPrlxyETN!{_h%H##lC+!zL*QHh^
zy7Zxz*Wu79ZL2lf<9O9hw-z6$WcYITNqxh-M_mr;3tks%@D_>tsmHS{eQV3UMZbC8
z<B*3k7n<asHbYSSmVi37-r@s1br+BQXrA2PA#_zuV~eI&$m|6dmSrrGI&wu!O5|)v
z_JRvi8e7=7)^?_?G7V^57QD96DSMHRsp_ea;6<%j>>?SCilG;swlc4}Afja(xKN6*
z)y-j{;DzrIGGJzATx%A~6_@ovy$xXRtr84~S~fL{Q6!3?Rm@=_Ye0tMmLT1RSuaCZ
zu?DopEsYY$4f(WSf{lg>KiA1-r%wyE=$dI&26)762|U?6OT&Ju%?h8NE1x)KdV|&N
zkvLNOtNKFlNxlo6DS9uePlhg7u701zc5)0;RoN&01<xnNCJB7k{Bbes!{QncdThsP
ze~R7yUGN9ydhuxSu#c@WwabNVzlb#UZs99)du;Puz(rZFAn{=Ck)tMZou9e8dv<8*
z-aRu{%uKRy=4yeugd@6h)Ych4;;PT+x_>HGSFLA9?`nbh#*fPW*?p8%e)pj2Y<W=h
zfj+6vErRNEBG(x_vPs`|C*=t1x%{1HJGwJ%gwi+P$v@(o`7$l9|0%ay%rhe$^`0HA
z!Bd@-*G>4QS*IPo@`^;E^z?-}W{=7?1xXq`;#+s`m#>22m)!x2x0<Xw9ohf7=-T65
zbH47FacuGF$o|=vE|proE{r`_6*GOa-1Vnxj-zn@2)LKqwhO)zj6PcDS=%A~pzY)R
zv#Jxe&G^f-_n-Bbz$HfnUq5%+v1!6<*9$vLJzhWD_UM*@b@xMKws*1%Vjslx)a-q5
zvuTTk#iJhmuK#vZt{$!UU1-*`rLN5PygWM-@BhFLM*|P(&3Wsh)40pz+wSkt0`FPZ
zA2aAzC>LM%otalR^?-&cW1rn(zf%hr_A;;Wi#lzPecI^SwY()RH{b8#-x!wh#`si}
z=j*GtFLr8gjyPGXvvm4YiPoMkUqW<iHI`5J%(>ujvww<R*y=d7+;k;g#<hhLwz^I)
z_qt_O7Im3HWx>YyJ?|5PIyT?m(ZA>)i}hk%KcAP*(`UwYAKUO<`mI#Lrn`qMmJ2T5
z-r<!y<>}?<y}ZvAugPE98hOm?b+YQ4q#_AJllgl2s|@%4HEf%|E&lpxf!DlWg4a)c
z73D119K80T;Wr7J!xp<wYS=c0y^y+PxOAz;YvsTt-_B-)uQD%Z@|<$@e&!YVB-?H6
zFT3J)evr%9wcx66aJjE+`PPfwkKF2K`<8b+es#3E_RNd@RoRQ!{>hbv9v3!NaWgF2
zIL|vUH`&Vj>CPWl-|c_FH}9S9uDolHb<P=F_;r2Ly?HYh9?xPv=n%zi)%#oTV3cHX
zZKZ0E)lP-Wg_ae&B7TM&gjC&QIi#>8qIbjOR)O8e)0Ox)Uiy7tvcvsFKdK|R*#Zyg
zEeYZ++q~_9b$Z&$l_geHFQjgmh2C>(i+sOzcSOE)8i(+keNt(U8|FnP=Pvl3((`qN
z#cJp27sRHStL{~uaNnz^qw3zmE!w~S-Z`3LRNMb9rL=TY^^c^lubxlYF1$CR<>ZF!
zRp-k$zHVM~{GHe9=gn)D{&n-ee!9!h>;0Y2w|&>YR(28Cc`EY#8|U3g!QbDsuK1;|
z@$*xvNo-ZtlxsbOVef6{8Xw!uecSGCeEOqV)72Pn3GLPWwPOCOug<|@OS*d({>{<p
z-IwoOYU!SS!X)j>zt8U(wL))wc8fTtXC`;?+L2|a7S7q5<Fk88+rO~yN59wxp1p9P
z+F`qk;<D9_d0!OQs>!Uo9(L5aovn?1m+-AejSCMpF3eD}yC8o_?Ay1j>_@iI!iR6o
zx>1mm;l4(Di^VPJ`$i(yA03Vgc`f~-i}!2x;fwzgd9Odd8&$qV|K4uz+mik{SKHjT
zsZ=H3x^TdwK77yq^ayE&Y^7`MbN<FgJwFgopOay+MAtjx?#7Iy6b-XAyhj)9jk0O9
zvT9GyJX{;7@S=xL$#3(Q-Y;s8nl(1nFVQz+IrlK4Nz`BsFCQ<1d28>b>T33~tZ2rV
z?(e*A*1}PH;=M1FF-UI8*!!{Wis^;5xt-rPG=1$7+IW%0==k=dPO~na*_60e|JHu*
z*D{WeOYd~9U17g1Sh{PGu5+P@wB+L2TPGCOvZ;PkNVTXFz9Gz<ae?pFk`>#Gt*$J;
z?t1jjPE#wEgpCU?%!)YgkzbPG#q7Is)$A2nuhzA7T+qlZ(}<a@_DkYPch(|}{px;&
zM;LN6Zi&9`=F7dz_G0Rm%kR3iXLPczjl3`Kukinti^;<68>LuzHgH)j+<hd##!M#4
z@{(i^-}LNQ!?#@v8Do4^*k-R<UH<Nl<STDcxmPkTR{On?l6fK7#g}(C^zO_TaxeUO
zq}Q0-lXYd@7PzmMSy|w%UT%s7n?Q!p-ZicZPu>WKw{c|5y?OM3Zsh(V#dUleg<tH<
zcDerI+}e-l)@D|IlzjjGjqJ-sn<OsmdUUvX?}~;~H3b@cZGHtue+et<hJJUjw{kIv
zTX*!=whKO&UB51$q2JZ9@v<K8M}B9UxmEjTubO-Esz$aPvp~;cv65P?Uy4=DCA@Fm
zyqE1*7S44hP*#)0eraRl#3K(pn3C=bzV8W~w|3*bgP)~JEO#Z$TJf%{)V)x+b<yGG
z#lf!~^<F-I_du^qpdi8ZV5LQ|(Mijf)l4_Fx|AJj<Sx{fPPd3jx{#*)K+#=q`u)7+
ze`;<&{bW72=l|2wPs2k`>F4Z?shi&Y(LY9S|8eHJ=??YI{>NtZeYzZ4+ECoMt*Go>
zmEP<RF_M8hr6!%-I)P#PoGrz#Pp0K@H|i=e-^tt5{F~$E;k(Z7p4fTw74c6#eCPU!
zz;`P)%=ta>!s)$Qd(Q3E+;ecQ=sypgL$i;l&rxwb6s@B3r*jKO{^X~JG&ecUP>?-T
zt-^Q0+4$pvFEcB+8kb8|%xXyI{IG^~-s{G6=?^_j=Veb6@_(oitB_-xclf|(-3OJ7
z6?L38>zU6-KIBdKsk~tir;d8#Q{9B0!W;JR>MZvV|L}#Gze@I|wJ^W^#J1y%HmV1V
z*(<~t&T~Du$zpT&fH9MeJkz}0jn5e$RI*geW15%Ge7?W&dFX?mlP`F8e6ae+;LrFW
zgxR0_!y1Npy$3Ec+bAFStoY!k#fLw_A8ZVS`zz|D<kUZ~G%jbX5Mw@{^<XDs#Wu$C
zz6UnTSG;4MSI;<4y)j*;Vjlav@P_B64=VX9bPh~rwh=vGEM9S|A)Wa{3G;c54{w;~
z)w9ey&vbrz!}Hh1A7|XU{9(m`U{0IQ4a<2et}*+Yf8b$0-`?;%@4-)-4>p`O?v2lX
zANXwi;3xBkIYQHfr9V7j^p~hmI&hiKM)rU)hfVT<VulJn#`BL4eCGL3BVG|Vr_)`}
z@9<-$c>*7F80Li@DAxV(h4K8^1I6keYS=2|*yrUlp673PKK;OFs}FNj-8-3VSV7@5
zjq$wNgPUwNyBnWBKJeM#gAK3EdFJ!_4bQ(H_?-Sl-08Stq|&CJM;e*czrVj<A2h9V
zjg0j-R+;bj^}AinN@XOvGhQ|FO?L5lHu=+we}5ONO`NghprK5&&SszBOsiDMJNAZV
zW?dzdGrt^Y?Az!l;?<$kSD5@Jp|!79*21Lj#RbN{U4<Lo^w&=pOP$h^d_hHEaz&Hj
z4A*lyZhmeBEt2f1JMvebJTz11_wjH2YmZM_D4@7DB=3w?p_u2i(9p|UJXpSZ&&f%0
zU0hIhsnBEb@s>i?Jy9vIQUa#&ZY$Wa_wRw0Rhxvje0*|c>ai0yPOiM977;qJ<3#Z$
z0ZDh42Pq$0#4H!OE8Y6x(;3~7V{27b@}`*MyTXNOF<zh4Vn2y>MkxH8^5SJ{AG3Pt
z)II$#bd@$bd}({5+Y+%X<$v9w<+JK)Vy;VHaMyGG_3~+)&!3FnTYeN8>DHC0s@DBI
zB4F>g>}dbw%#V*#qW*m8QmpHIE~56YL#3e0qHl|^8_&TcC9#=lvu<q9zu)4jD0bVT
zk6nr1<z3oCKNhuz2mgjFS#e57(Ad?a%k1)w&N#{2_A6#|D0MHIu|wGP?o5N(9g%W(
zx4(aL<3?VL(d_czjAReVtE|Z{l6)q1BrQ`7$d$RVUSN?=c5;ts@spdiUpz!RldtFq
zZC)s_LU@s>i4do;-Z2&duJmo&+@h34lTCIQ?9gZlU!u9T=cezRt14ZYU4~KF8EtbV
zXI)h5$?mZ>sy+6^$u;vEdvk8?@AIdOb}!3zH}h(&D*0=0Zu1(y5H8k8*H}lT^r?Oe
zo=kRI<7~TdMrTsushiu&-{0HZHC5x=$G(q!&K7nHYn^^;9I|6kb6wTRH&xS9eCm$b
zT#n%q!IQ4KyinWHoqe+Bhi=G@<lW!j-L(z&4(p6qIV~t_lTeax@a6k){$YorgR6G!
zSQOEIdG$h5O`-KCZcSO$vs$NJ%+k8ls_R(u%z3|-Z#n8$&K!E{YFfxasU`FMUTP<a
zS<KG3(me47o9o3VlUG)>ubQ`ER_D}}XD`gY>bK@x;r|`~13m<NaJb!Qc57$e^!(}H
zPx+`W{(bD2QsT@oz1baWR`WG2RDX6XOsn~t+w7S)bZq*TE!8M~e@X4wts7ojuixs>
zdYbw5?cKHaJv9IJ-t;-5wp_D7KJDVR65hU(8V8D=+}!&nLA`ga$*o%_+!CET-_)79
zDhc~^PjoxB;yI&&w)*Xi@))^DInT^XZWXgLSBWtc&9Iz3^Lg;8CA(5SU0R)Ny6JPl
zZ^p-(Ydy>CcJb#f-+xSOrd_*TW!?Q1p~rTfeXX09dv|&Z-_6q4g*LnW&X@N3O}Ec<
zU|@T3#cpkIlDY58kpAGgw^EXV&&k=>{kggMc)zT5*`GCM9dllF-VxrZKD*xF_0xOP
ztM~8z^z-@ry`Qbi<u=Q1HcT}w@9&>4akg}Z&-wnSGe?qc*4|0k_4LQb_wN^^8}02`
zy!)n}@NT6CGp-l+$k~3@G1@VEcfb668TtE{au%m=U-atn?&J9fzec~Y+1UN~v5fgV
zt2b#$+b^8>_&naO^3&7j^X>CKERo$3@bvk5*~|Q8*Y2EsboXpdN7c`kgP!^2!S2Uh
z+Urb=;*{kNSXy*9n{B#$zc~JS?bd$t`CrO^SiiB!H}}2HmZN9<++enk+3d6Lzqc1I
zSo5(^&0}#=n7Ma`Ozq8l8P91Oep|3Ko%vUAyrgO6&6X>Vcjt<!SQun}Df}9vdHt;J
z)4t-9hQjX5kN34Q-Onw!+`^D0pT5dC%V$x^WJX@|_0Cc?bCO)<Soo-G-1<0qWre#%
zO_On0HrMs@wx>Dg?ry8H%s(HHBQ5@}SMAr%v>3(g>pGV#^xfynU#rjUJNDwwq;)sH
z>}aqw-=FqXtM~Kz=*>=#O_XCz>{K6LJ~Gpqy`6n$<n1KqzcIXvdwb5MZ<%`WY0ozQ
zwJMyy_lP{bY2NTlazcWb-wuI)qE}>GJVjQYczbk@#hLBJ+dut3^M8u9N=?)clkZCI
za#eF4J#jyJS)BXX2Fo>fa;;5d-|)X`jI*@2__q7?@<ZnZ@0IR<z4Kgg?6bQjDfY#6
z2JOZBq<-Z6yIZAk!(5ij-r0HP|3wewwf<X*uA0Ak=ez%(iu5mpPEX%={Qt{qD@(V`
zz16pNbK07{J)(10U9L*JQkA`R)~bl;z%}9<!t}ZxFVqlm?5$WBVWH$9%Eaiz#KP^-
z5i=zxms!z;$xxBAQzhm7k=lp(WrsOAyEdIyU$ETP*6Q_*&DSFTf6Wb8P`&^C??3y_
ze}4AJ{ru0p?(?|oe%ITHi^WIOTwL?M|JUc@kK6lf{_g*L{ru6{`keMvdVAjq&zr4(
zx9a7!(^bFb|NmQFSMch%t+?2Kh03Fx;cF~E#q4}^{(OJjoBDNHKW{wu4_|IyRW!TK
z=Ktd7vzEHg%a;GM<N2=A>uY!ayD{JAPxtbj|L_0(T6{S0x_tHDjpi~}|CiU5rTs5{
ze58M#@_+y4+3e*!@AkfYGu!R%mLJQm9XxBU`g{KVy1k0i>+f9tFSpLV?8Fqs&;2&r
zOaA<PS-&>={OkYsrTbnz-**4r#D6b#eqI$nrRK|>+A|Z=D_(!NCK!M0>AX(mF84Pd
zUq2E&s%&rkY1YKe{Pw=e)$ZT=tkSQ%owwV~)+|d_PCC@?)!%Bp7xiwoW#|8X_xZY~
z;{56Fd#cXg{=TR7z2WzJ4|cx3_xoM#zr*Q=U*z}Jm3`TDG5>z~w&zX1>&osoe?Plx
z{lmlRmG}4k=lS<J>AdOp`8EI7{I32z-!QwbH2uG^nZ)jlH`4NUynpA<`@Zq{2m7x!
z1;3b=_t!pdjO4F-e9&8dPw^kk$NoP{f40m%zQ*#?^4d3+pO&kYeEq+Z^Syn^LFeyw
zCjS?9weR{hzf;_|=FNxAX-S`#toQrX)}O65_wmmBOP4&g)vnstG(G>-{`^O=xb2@?
zhu8aB9smFC_5Z7f*V`6dQC7DvI;+etSNHGBi>dANKlba*`V#uz`rk#}{$=uaANkLj
zQ|@zbX65rIw$E-(`hHKj{!{vPnV)ly|ND7Sw?FpZ4b#c*=hZy;m_C2czmw7P_GG_e
zy<BIp_{q(U^0jkH@2+`0?|-{^lKz)7wuSFBi}UCIesO1Iar)U<lkZn|nil^z`M&qh
z;!pl3>{b8o`Q!b0{ptOt`z`9d>t64<{A{lI`&E_v=d0`P&HjAo=koLWEB|d~JuVs(
zW3X+(k_T6tA`brM){8T!JJ{CxTt{Zlhl{PnV*7S%NK7oc$l0A2Yf^o2K9|3S&GHYY
z4!!0+F5;&%Cw@ozN6zl|QGY%>dM>_y=Z?iMjx5^TttPTo^Of$tEfr25yN|w9Jviy}
zv_Cl~7pYcHo42dv&84f}lTR;WyWAwa>F&YlA5#A)`yC1YkUOW1(Ly%;LDK{6gRMUb
z%|v6GvkPU}9#;KfF@LaJqDOIuwzbI*)py4_-por-aeF9tr~Bd#{{Nl7Ki)TB+kZ-r
z^H^FqEB^z>p2HPBC;GVL4!QUoIy__ITHbj_ea;*zp3$46b1+E9ne*CfHt7vl*RTG_
zwrwHX?TyS^D}+l|9QQL(oF^+@vOt*g_e2-2%r~wb<ri9c{<Y-2Iem`*pL<#Gh33C6
zT;=bbea8O&p~Ai6>^J|+vAk(s^h`<qb6^8&M2D-!ktC6Y65bm`P6sqStq|OQoNLVy
ztvxMQHI7Q{nU;HQ<r%YQIgX;+7Fpev*lG4V>&dYP+!JRvKUUhFQZMtfvaIw;nf&_?
zg+AM?gXHGOo3Og4UOss7hjoqE@dw2gV)gxx3vBHAg*SPMP76uIN=)7Ap87U0vO46N
z92REN?ahe=>}^RB?~dqy@YrTvAyQevV;u5u^Nh~O3ck&OJ*p91sTv2b<v4|^gt+1)
zly1zm71*+fxB5b##G|_P%yVx{&kbWV6cq@D5E~yf+^;s@9W44Lgw;CqpkL?)<LAaV
zug&4;JA~qykNh|L=IB3Sso{)2X8*{ghBf}E=a1z%YyMZq7w>Be{!m)OeE-Py59=*N
z?;p#&dA*43LCKuP`orY~YUd8!{83&be*dtgh4}M_H9SY^A27vqbbqLg>G3Ym)I0q2
z2V-4_c7bYL%jyEtqL0bYROFT|*)zMqxGiDQ_rC^m2N$0>oIIoF_(zs`M}lWGE&n^$
z^5&8)s!Me>b3HS?y`qC|O}aE~$~NMKa^26pKKF|MhqBfN&Z+<YiiIR<ui9+AWR39*
zoy3JLtwLg65gKTWqBnefcMoo~t}s40+w-2!r?g4tllRQzshhj@`8lt5Yo0)fOwOgM
zQ>Fz(9ZD!FtN&mz@4(~=uHX;SK1VPA(0z1M?&{seyQ)LVeM-w$zSFyUcj>O(A?4Fw
z^{ss8cJ=OxUDBcDi(lo1#4dcr6&k)`m(x|zRqFyuTUTjQQ|QfqyQ)yZRb2t0EvuA5
zL>I2&2z6bd<wU%YL3;7FXwjBc3L&fuwKzf@C3YI#KDb}@&TYXMv6_Q#U*9hKV#0Ia
zr3JG%%kh^dj(<!O&o9GHgcnS=zNlYlp7!AqEMd>deRNDMF9%FqvfRI@xUN-sw&kXo
zc!<)|J$W-P>KgA#b=!XC#WcygMvJ4<N}z&{|H~Wh&v@H?XA$#X8wsJEcaK{)DIRo~
z*>TdvM=i-naB}AipCc(sYQlz4p@ZT}UNGH#?sVtqoBc=b{+O!MbN1cj{@PC){q4S;
zJZ|?hV|st=r;XlrWham8{k)+npZU|{w0o4@rB55f?Y^Bl9{2NxwtV%|<n=XgruOdz
z3$nd_`=#x$<O@!|mrgfx^8Fg-<gC9M>Y6w0OZ1vA&mE6Qrmry&db9OVW|+lUuH}&r
zO|<8vwO(FRFiX^LGhEPV?^f^px0j-Kf4QayX8!sSb@JR6X=D4)wRh(AzTQ}9YqswA
zv9C9F$VqRH&a~cq|J<AH#=qa5sk7dE<DAYm<L<X-lF*ra^G@zt|8Cog-MX*xx_8}P
z1ZEz5|L5N48QnE!4%dhzFp4D!a&44w)%f;(T7u@Zg)FE4{ubZJq`i?#Khe}{BU@^P
zWcEhB*PBnzxv}Yi=>9rU>A*gXxWn=v+(QzC%@zwq2ehueskL*(q;4Dpm(-uRZYDp!
z>dDW(*tC7a?R(pyrPWQdYq`mH&1Q0?YE4-gu*?aKF=63jp1TJx$U=#QR@)6qnidN4
z%uRT~;;bI>rc88q?9sgNjknJ#hd!IA_1R-;<&sl2L8)>pjrv1oy01C|6~4NBhP%^e
zk25wx#{EamC>x?PFTZ#GYj*`g9G<iA;Pj$4R`Vx!B<D=|-2LFSWjSm7nVsyD|J2*}
zxPQ?2^g%-HaiLA4`bUvv4>JG9pHC@&e&zr)X@A`PCa=@hJxSkkPMBx!o!Px?%qknE
zM_27!3MGE+SlS;AAu3dlX&c6Me)Q@IPxAXztNwG}<eK|0_dGA*vzpuN_k6)+%NHel
zRx|nMoMHES#;pFiaq>@x^BuEQE~#~H@l?v4<S|?2(ytSCwJOW{k9?Up!%pb3`;JR?
zvgz~pWz6r}?0;Nt8{cCV^^Irqw%t5yw)<w9`RzApv+w3?o}F8^87jEeRPpQI&yE^T
z7fxvplJlxWV*LHP`f^|CQ<?LDt1Yuk-Pb-_aaCsPti@r)SG4+~js~u_$P#s5`)C<c
zp4I~##H&Zk^zz`u_A@)8)9&aRzndmme!6FO>an{<kMm|0!iBd)%?(?9Ijb~kt>5aY
zvrp|@IR`<cn|(UtHt*&MW9iDY#q)lo+I~E}DPHgQQ=EiRyx!yL)SC4@@27s;YqT%?
z*!NXEYqgSBpSq#-*gB=Az32UekFrMloR5{C_`xT6UlA%8;5ysx+qB9jeH%ShbAvo*
zhg?#dy5(i?J;PZkyF8c8#zNe-J1VQ3$mKJGNqE_T7EJ?MGg+Q*DfE+u5>M~Q{n>0&
z8$2&>%JTY&%kw{-+yCs&+`ETu<Ih(fIL>a!_xNMB&jFX3Tfa}{|Czh|cfH=F<C!!1
z{`aLX$zp@G!0spZ&HfwnB-xH@0|WO)j@F1CC6Q##X-Se^8)Wn!eUE6I8qqp^gVfT9
zW~28{Q`a1|T63IjPgD3t!KWRMw!VqE7Ih+uJ2G1_TQ_BGYtPm>8>bmxD>@c+F5>jv
z`l#l$YWKWnD4&(deCA>7KFjjbnTctAQO{PSLW#*AJk=gfmRQo~_zDNH+r99+#yh#A
zQeW2up2tqu*w3<DW^_E{*^E;%!84P!&htO~sc2*0^1S`S9|7~7lbc{Iiu(y#^N!^k
z9v1nala?el?{E&xpLQow=f+%HnKm~IA2HpjOfzM=Q(5O`?>VuL-Uy{nx7dB;rs_Gp
zLYUAe>9U*W^lslwwceeRKK<<(qqfLn2B#&`BoFH(t5~bv)I90uS?0AVc+%WSZ>FRy
zr>4-q{i;v4zR3#R?{{^5@YmNNf2}~w{YzfO2YuCF`D=Q}U+;<1&HAs-h`ZIzlU-{a
zFR}CR@y>UglQ(56KRw7gvEp0##J&e_Jkmeh^-!`<o^<M(+ogl)P48bn(u}oP+P%Ew
z;}pGlmyQPSs_+u`e+d`dQSGq2+F|*t^+A6_SM7gw_`KAT(2^+E<zS-p&-IYfsjJon
zT@78e%PTZ|=HJ<8|D8?ypSHPv^GbzetrIi2jFvU^U@$j28<(w6Z%sSXBWav`?92>9
zW3?Ic=9u4^ux%mRZT|aH%4R4fl`T8{rgYBSmqzun;yIgMO$@WWw8}l|tH)}&%&W?4
ztCocJZ-EO&td`5Zn!I+``BlHy?0WxU&$sN&XIZvSZ#NK}{J}tOV{pF`e}7_8S)1s&
z4TmJdEDm#}M?B=wo|D*Wyruvw$fdpJ!d>HC)o$hIU%ZpNYrA-Ndee^TICiU#nt4Ze
zmF~@pT_1h@^|h~9nbxJR=kEIIceiSJ-rnHt_f|%~zp}Rc)itni>FT_@E27O`UF+Rd
zx)`1LY))F0OvB|uwtu|$56-mUPJev=V{8ro^9M0=+CLi#{BPtgP}Dp0z0gqa;L;sD
z(;u_{P+WIl>JPznhpwJD+F!`K?r5n*i}c!5gS<m$C7L|%eLq~m0`{tr+;QOwA^$|K
zdEd(CU0j>?Ao9!+9h>%>KV+X(tlfFyIC6{Nn2^p<qbUiNaYx=GH3+8OXwu4Y-TG?3
z;qRFz&bITp<#F~+Z`-WA{dYxs|M#@?m$T}5_N~r-_Ns-s<Pf9Q-ms<DSADs~|M{-+
zecMkELikVAG_{obA%F8%{WA~!KYP`G-`MPib*2v2r50rKUf9a^B8s_WE#t0h3=m=U
zT`}srY%CsJZ=b-+_Jrlc!LJ8fE$t8T{?M#zn|N@+oU;e7-^fczDJYm2DwE85+~pnb
zG8Z{czrH7|%U#si)!Bvrcc0JMv-tad1bW_HRks2=k;gk175z2ic^j6o-D&sL#O=G@
zgiXKuYEyJ<+3MHH?+deB@84UT|Ni3k?=Nmwe|c;Bt8DkayX*3|zrOwUSK02nT{qTt
zAn|cA&xzK?Ts)4Qs46{vyw2`hY<4w2`$s!FiyG#7?|=6v{onrNzwS?T=2EuEtO>Y?
z3%~DO`+e)nKC`{+ecxwaMq_R}arWTGgHwC%oqcf^7xCV>N`CQo%bm4;dGjaVe*WZ}
z<<30y>u;aznj5oy^6Rvp{~vyFS}tz2_rl9ozxDsksynXoZ~UbgW`E>Wd&FOX)$&PS
zo!8WLT;-oRYnG3%@3LiTyLTUcXLj?h+V0ya<+I=9O`dlxr``O<L*BBAX4!iQ?dCT+
zuRQ#(b{f*y)Vgc9Z2?zw;9TDq#S1wT=G%$SV)*7+8h`F&S=x%Zl3D3(w`MMcGbO)Q
z%k-ar%zg9VrppS}yhy}m&oZ-<=hSZARI#4@Ch3ZvTWZE;p4@2*&l+usY%@E3Ax-j@
zj`M7|;1zA>y+&~2VC+GA_Weih&X^;ck<NbWW@A~|g1Kl+w(}|8sV~eVcloyEO<s6A
z1;o_-G53D8T=B&I${GDkItQF|oD{_ta~!?4pT&D4k7~rb`};dYBRWGXI9CUDnQ9z9
z9noDHF@NsT{_|XMA74W%T+=^{^)9StiN;zRSwnBU(piN*VDiJdH{;XmSUa=Dtoe!C
zy|P@Tzb%k8RM})~nW(0I=1I%UIR=x3(~1uH_{})U2@wq0s=xY{QE2qCtkWU6Ggs*b
zZ_N(LoxLhIcx&#eZN68x%{*5&8;<PTW)VPaGwtypx6l51|DSxqLOhF^FFW(I@STSF
zkJ5Ksye|(P8F=vRL5TU6(|0b&7d!u7DgA41-iz?v3!m>?82_qm-g69eyl|(?^wYSA
z*KPCC(<I&^=}K>t$is%-J)83!FFG#QeRFY(t=A0*ab!!(8HHA!pc7C+?S&y6rL`F=
zH*dbIY@Vt<W660_>p4FjzA1RrzWH#mj<HG5Jl(z{cXiJ!ow)t3b<n}{&Gm`%te&k*
z#zADJPF6F^ob)g6<@;$^h=1L`5BzT5|EP4cU-6dk*axBF6<1l~N*m$Kt6N$hf2^!g
ztbSi_sIBrt?_fFSzT)gdtT#jNCH_yBvi`Yl@_Q@nMEm=yAM0R5Q#|YZ&6hrgS>5wG
z9{sXHTQ+~`<FzGwruJ<I3I030zUs{Loj+~N=Rbe;`A*He+5gS!t|rT!Kl^xRrHy(2
z^Jjm1<G<c`!eaK<zUFGO<$2xbJD=KYpYwd$=Q~C7qR$nduFQi8{?Xs}YU7{eeXl-R
zo!@(|c>U))uWi1AnY}jGPZVP%v{v@*zV~!p`Oep|@2aNnURHd)<lU@uv6pvdTb27h
zU-$Bk>0G#=e!+F_J71Z~_a2BvXKwA;{jA`+%)42KV~clW^Oc`{xX$v9X*)#l)bn*U
z?_fmgovl5)rxji|dKYypHvMnw?sbpWvG07%^={R}b)R>xZrh!;1BLL~vASh9P9keZ
zwq*I$f^c34AzB=6SdK;@WYJk4F6Y(VI_tmtXQsLR+h@x~|7>ZRANJug*UJ5^^V2?F
zj(YiD&V24^@8_Q`<;2Z8?Yh3`;)6NoH##Y5i)=z6c9cJ?sF905VfQh<=9|G;uFNox
z%}%pKFRj@yMReLGFl$0utBLlKNJS*c3IC30uBg8@XU^P1T)`2ET-rW~t(t2LT1A&_
zI3yA_10<+;m}}{pfKy0>WY~!fPHmz_YbGSN@@S_-C?4iQ777Z}NNt4@coqITe|gUt
zF8$4T%z_$^<^VJ<*m6xIhxCXhtr19WmC!yCq4-U6|G$}re^q?!IWPMk`ZC$zugZ-@
zzl8VwyLnJSmgf?P*fh`an(>J$w#f4euO(A#o7bdI_{swpJgcx;GR3rcP1=O3Jey`Y
zh8ds8Vv7U|$~I3i^pM0#<fKkm%d=^!<2IucVQi7d6<$lE$TqJ@o>0p3iJ#|FF5Aw2
z$8$*&HcLF=VOyCnA>Y`8wK>E9i8y*cVFDLOqbN_%K?N|8Et#U*ye4(RR-R4M9IqLj
zh+>O84Uqv$qZ7;K|9d}iRocWXv6T>__j1Hzy<<Q0l56G}+MO5kZax|mulaQ<5+OhJ
z*NQ9dOYOA2{w<&9mAQV(H*CZy|37($CDUG{8wzj!Ad|KjI#_RCzjcF;)u|<maS@Ar
zxSTXOmMTnX3IH+g`mDYKMk-0OU2-OO<O*%{Rodox#H{m%n&54?V4$jCsZgLgl(_Vv
z&18=vZ@$N2X%I7IsiHP-Waf!gcdDlD_I~;<Xy@*bcY2u2TCMH=Prt3aV>k8o@}k$F
zd3#T-4d3}yYkS;R)7AUZu3lgBYgTCd=2zKawP#nYk3<rT`}^>}*-N7O+M5o~KfT_l
zJ>MJ&h0nDPeeQR4XK?Aekh#|U_aF4%xflNI&f5Im3)|gZL@R$;EBNagM{Rb?K2xXr
zQVS8nuR}k$iS7wx%?~*!jfHt-`@D<W=LMd8s<kslb^7WjMN?zeO*$P~w9`v394g5E
zH~#m2W@kg5@<-x7Uca9`_YK=W)M4*=6PHNd{Jr!+o#u{su6NU$KulYmRqd`{H>{8o
zyLxz0RYVAX_p8J}6v0WxenrPT&sm(5RJVNm1)oZ&_Vce3&%Z`91S*AUa*&mu*KyC6
z7Mil^OCK*OnKPwt@})wA;Bv6Tw)9;_IP9hFgnLX##M<fis$Q<0elP0f+Nn5*y9#@?
zmz1}DSvTRH=%w9G_R$Ilw+h8*!-zj!ANDC7T<`Hg``1mDzd22HW{&o=7tHs)a9-_2
zy6~6HoCsm*W%GG2pKp7ae)!Ag#9ucJ{^rc6GxM<r2`9IDt}&P;>bCh%MwrA|uEmjw
zCfYq|trx+9&*x10>wJ!3PM`6I{2zShjzn5W|L=SMsM>=4`6HV-{f$5PV;Z;%1^4xL
z7jo(yP2C}5e}KP`b={Hv0?~DDdUZY71-k1FE5yA2_6OGT`o;EG?M{#44&B}A%m44M
zDReJu-d8<sUv>Mw>b`xygKNJF)s_dI^O&~d_<P$2*ZGrVjy=9UqoH%g6xnlihi~Rv
z{N_#H|L~3ZoWE_G?-zWNh6!G;7B_sLvbTKVz1<$~W0!o_yHvgW<=)F*?qycJH`!Z0
z>z=jm`?<@$`<<?g+duE{oZ^Z7KQ#_8=^RlKNiysTfX;*!?diCm%o>&?8h0pbN)qp>
zJ@cn;6nnivPWl5^+)=kF%3as5JbC@?FJ#JR_S@AyMmbXw7xPG`-dGXsvJZ|bA833&
z(3~e&KAUr2irNo#<Ae4)U47CXE?3@|(?9#jH4mfPFU>yA^{~1vDq{G#F74j=Grwn6
z+8e)5fA;sxp7}Gs8$$&nEf1dJ4D;Ji)HGFi&72=C^OHO_6;A4%oHHlov5K_%O^cJq
zJk9(-LcjNmf4%#F(WawNqMx&ZL)eg$KiO?tW1_SKoVc;6QCAvD9Gp|Q&hl{#TXw<*
zHk`z>tb`@aJtY$+@)-rqns}*aO4<?=<)xCEXFW3Ayo_N&wmnl)mZ&JJN@||;@HF$<
z6ga7OQqGi=#VWtQZ1UH~PRRXRKe=8|{ekxnqkn?xkF<Yi`8oZsXZ@41_gA(BYy5HZ
z556_r|GR=e=H7X6p6{6Ni~n+46?fSFSi~}4@1U~kj~dQ>PEGq&cP{r#kFk1uNpkwR
z9VN$>8tct1eA(j-7fLBx`NB%{?wUojLrXSy<%M1RYhQeM(X8l@;_j@xz_YrmzWQ9P
zTIRKudtJ$;LUq}4BqHDX<@UK>Zu|YpRsXwfvfXXZ`EQp@_Op74hp4)wX!~-)yb=$8
zt0n5PmnQ$(f6XwQ^-L&Zai~K#S4JSCuGRuq)-5X<#6&MFVu}iZ2_`J%ide}MwyI&O
z7KnNC|KB^S5>{!=SjDw$Rny8<30Y5~%>PL@@BjZny?33tX>P}zS$`{^Y<sip#M^%}
zgO#2Cem3}TqxRdeU}2|9rjq9@k4b8imY_3l9b6*ogG_9Z^|^fzOnkZjW$TW+|KhZ7
zZD4=fA$!i@7T=c}jdIo(lG&@?IGlg@p0WPA%U3zRN3}H#`~U6xaJ%WeTie3_>JI1r
z?*HrOt!<IO%D(17gQ(1gCg!k$16+I&2N_WXCv0t6Bbu^SA)7T)`-Ii+tn~P|Z&t5e
z_Eh-Y8S6F6Ze^`n3nQFXbFNj}GV9-ahF<II+vjHf|2})4?92J)=XsXx{(t7gHmmtz
z&o95KiJI%b`g7*r8=oWP=d3v7zva}H&}D0la;Ijl_K8ltrFA)M<~AfD_Ky#4EMT5{
zWBDfjl=8~w?0Y{q-}~wK{?CH)x)1tww;o(OvDWd3rOf|_{<3$ZBwx*MXFblo+_Hbi
z=MHNu1pDQ=_o~+KTlimghi&NsVRxRNh4!kO&+fkUH1_SMb!C;|yZ5Y){brnLKN(Ei
zdwPw(K1(6fU-+9zroZq+>&+Wa=x^HiAnSd>wsMQx)^py<p8Lj^UfsTV@8O&G9_B!W
z|Liq>QNSj9Zoy&65{qWO^a~GpoYDoXnlDJUoKyG{KVSJ?R_fIX=Gy_yZ*Me4?di0-
zlB_=KgXjIHyYzS8&f9Xc*KGI2H1k_;+-^TSe}CU<r~8K;_w@4@XzV_p_hz&7?>EQn
zc2CSUUssklzc_EX_4e~t+t*ufKX1AH^4#e9Y5VfZi{ARJ^IV{`$<{*o$EvH}|NA^p
zTy3B7wSCRM30LJe{i^%^wmk0l-0T1N?bE*$X6F6gabB`^%Do51b)`M=vc*4EFVOW{
za<p@c#Y8dnOOITl=6G}qXBH}f1gn2NnXhc~X>U;dUtyK?k+t37R=2cebEkgv_<uh2
zN!8IA;XRd@#GC*7T9vE=QrNrRI82n)*u?C5ZvTm&;+FrFp2t7=)1C6cLel0Of<LEz
z;%EJ$f2fM))K3iEn;iN+;;MDn*FG@wh0a?m@7?Dvt=qiiH74_&iq%|~&66|AgwFac
zy6I_Be<Lz#uFLAl8KpvN{T7A#%B)rM3l%<oYhm}*BNwwCg_stuxw~sd{OsoJrjrM+
zqfZOi?l_Zo^~PGM-J!|bv)+XD-d**x<>l+e^X?>Vk9rf<eK%`kv~Jnzqj_6ztQFgR
z6-n^bdY8XbSL~nUUnw7x(*ErB!k=Xs`($V3w?Df*SF<d=>+Z~?@?|&XYF527lqu@0
z`_0flXXX9Ar<1(D+-Cpr#OH5WPD)Z)a!SxPolVL==AXG+Su^G9&hH<sjTH|tL<u@(
z&DVOAw^r%KuG>-BTf^2y32r@p`Ev5>X4AF1L%X$;RyT2HeZ3MEZN7y|ETAjYML|a~
zr*VQI%LGZGO=o#jW=cA|t-WX5W4GmK@vEPY_sk2ApRcC&J%8uE>)&_1yWbMY*T0Tq
zpG2&rjMk#vJ4<xl9kjU99sekN2mklSj6ND)axJSjNBo~(c4~(HrJqW3^S{r2v+wM?
z+fc%{?)m@8<+DUrB|5*1Y})Ixb;%c>gK<hxi>ziXYJL7gWL0t#hgwGh7UF?;(Y$G&
zx6E1o)JFGtrltS;UwTX1_jhKM?vgN#Xj&T4_B5g~YRwU?D~f$vt4>+1IsW?wLw~r&
zl!XCpPLf=uK^fYu+aSb>3)0sDR&+bXio9ABAl|x5W6F|%Nlu<zs+wEOTlXz6DqDVm
zBlKc)=o`O<f?A8rTl*GYDBSfVcGcp21>3pXR`e;ZO73_ivB(OY`B+<~p5eIs2lM)~
zFG9A*?#eLVbV9Lztz*4)-loTDP~y?4&5M-ZJ`<|^Q@11TpV^7Kzh3ZPeY^khs)U>`
z-xBV>n7hOJhPp+h-s~rvJh2gSx1Vl|#X+o({demrZsPC$AE$G)O`}#`jH>#3b=|y)
zQx~{232}O<XiS{2J8$RfX<%agy`#og_Wz2qaGtC5Y08OUCI3zvRTM_d9nD{67q@rr
z^Zk;$C||gC_KVGn&Ue{q|6226bIhKp-P?l{y<2reH-((Q#`qn7rLv1lQ)|hJ4Xs>r
zLtZR#QWv#adEw;I_wPUTRe9c6=AHYr)$DGjc6yoE;`tiCIu~Ih_Pc-C>}ns4Ot{#4
zf7uKn_IrI<?Gms0OY35I=RU75p^MfF)lPkZD)c|#i+tBV=Zp0kzxZ9_EBp>iUYt0m
zX5u}oQ{ShvG(Y{k=+fMmF{Ty~ar#<!XPygf|GxV0@2d|#FRDGz`E>ThTLoDqp+Bx?
z#C|xOz<<%aYhU1(-bMK$wToX!yWZFM<pvSTwyP^^jWvm|&HKi-*<2($eOKhN*{N8F
zr)E;?mOhL^BFrvqXl&y($yt!tEc!p`=>9+a{$27HJ}^twIUMHC_`%4_z5KKMr47^C
zv|T@%N_|`MaHh$fxo!3f68)v-c^<x-`GYyoPUTd4hDBo=cgBxgsdbC)A3b_}!em#w
z$S0V@&JwqOTihS*uE<-y`@`%X^Y=C%(Yw1?kL&rJZkKrVU!jZsmudb=cD*0{<@&Tm
z_F-T4y4J6KF<<2G<fG4-`F}5;KmC7!Md*@XS1SbJx+K`e3QVLfPv3Y>;3dyQ+{BM9
zmlt$=6At7Tj8&ZV*Cp8EdYodHcyq9;VVuZgY{b(y?(=`0dL({`RVh+o5`-w)=5uaZ
z=aMLut4b@yJhytRat+d*lr=G=8(C;mtjcXyIPrgBb^MDIQ==HI`qfY0w_LjUCFdfa
z*xTBrn_u2klGAzg`^kH|pS%03>s5bU-|;=<-P&jO7B@Yd@?wdLx~i4tMbAz@uacle
zlZEDjgciQO9=vcK*Vm90%bjdRU)ew1bIaSVIuJ={Wq^NcmDUwxRi&Tz<juQ&_VcdF
zIP>%GU+K##$*J8+cD3@Ea=h!!-Uqu=+b_HbkZC*oQB|f<|FMTmYodkJVMC_l543-1
z^&Ks=kW+u)GN)y7A=kdP^^Zepn3q4CZ6SOAkfeq1{bP|o_|6@(v=DFgH~hmp@6h`X
zCi4!y|Hy9B{rrPX+=1>HEz>_3{p$$-prw|~6?b^Pf#_ue+1C1}dNpB>WX>G52}#^{
zUzbDrlvtABs*Mr+`;RE^KmFzV`#=NVgC?w(MSOy(%@DWG{bXLjwg2$t3by^n<v-}m
zJN&soX<@>&rbw<d%^6E^FrIbI&$MJOHslYTA)mJ(L7a8B#tqkldR%2wuU0(Sz~a5}
zjO?ZlCl-FFdh|Zn#Q7qRtFg%00BSR)*s82*|Hz^CDA1<u_{Z!&?lYEG%zISX^;~lv
ziHv{y1NO{&WZCsxW8UJ5zDJf_`AdGdfrw*|Zob=e$aquNd_O5y%c=!Twimhg3OdVw
zaeip*lYjW_4(9SldOOZf-HC)m-xY7%bho+owBEtc6-Uk&n65jxb%$K5`|s~J-S5~v
z`X;!&e@E?+x5|0)g}*y)Lxl8y$L!dY!~f;@Jc)+A1_I3+%-J4)e)wpUew+8HZ%6AS
zn*JJ!us?8+X=(oW|M%`kHRf}|%jC`-XZ<0kCvx8-rX_HPMDigk%T<#X;~=zm-=EQb
zNNru-qgN<|)@<1?+STSOG-fyNoYAhOGvQ%tL`#;=vHRD*waQ)Y<EoFdst%ua?#|SA
zj@@1BEvwWdME-gg_<V`&w-Y{iA;V~g!Y;!X^0{1g@^_!?k8WbT7*_t!%s!jHk5f;h
z&M8;q>5E3LFE09D+<0m)@VB1dc$fL_Ms>CXeV!u<Z+Z`E)LhDaSe*AA#fOCpv)vyl
z^&C2?QDgNkcZY2G1HU`1yA8#@C&;`zs$W?Dv2=syUZs`cDqp*n#7(@SJ*mnyXuZcP
zQIZ5bf7(s?FZT3zz`y7z_0u0QFW%hrx4FA(zLN|}G#|GAzrJzhqjbsl-G2>OekW`2
z9cZ-RU>CQ0Z*gPu8=E=(+#hUXGX6kfp!K}-KHlw*`R;V?e&FNw(2uJ;XvgG3b4A`Q
zDR@=?TGHzxcV)%#)lB*td$m3^9ZEN27qr*3IbWX;@b3HGuKwA2+WVfpJCk6(cjNkd
zH^TGZtTz94Rr>d<-rBFn_EjavgN3i3XzsPS4<hzk6v-=pH^fRbOtd#GYM5xR+xI3t
z#a{Wh<jwOZ>fF8=Z<;^xZx2|AUu&L}{^zSJKN`RNw&2nI9c4W-fma@EIJBRWMY(%^
zf-FiPI6o|2_uZlXO()|GZe~M{>SP11`7N<OWZu+nly6I@=Q+w~A;A7HA?C%ci90wJ
z7Z`HQpI0lLcU*RdaQVZ$o};!B?bRQ>@8q9x-t*N!?x2fJ*YOV)b+KP!``#DTOn<yv
z=Kj+kddJHx_nrPoyilwE@36C%n{4N>e>&>_YaTf9o+;lR^Ppv$KzBgz(G?f3PEXLB
zCi?H+bDP`Fy2q|0`9O)L&t3Cn<<LARd<@-#j&VO&KB0P0#BT8)Xq0!re412;&8PLB
z&pE%VsTQ*rujPA|B)4iqx3xU){^%OFH>wB4EB*zEeqi0VKcwxMsJ!-)Ir>58#5JFH
zPx<V6>Zj7vnu$gGJS^jBCah7hZEAXSB?W|K>EY#bVs4jxeZ%ADTbwm3`0|`tWktDN
zVsWlDimt*Uz5ynV7g?yyIJ7%jO=H%AjHX4LU8FKDuo{K<zWMZ1@AKap@$(axW*LXh
zUU|#sYT7Ej<*z<HxW3AE;Voh8#79ZL@YZmv@)h6suHIXC%Q~dGJ?nkITiI26owt^+
z_|~_{Ipq363!e7J-WE*p$0k~E9WF3wOJ?ai82%wtru%V$jo*Pz3r_XNA~n46$5;Mf
z^E+%_Xtl4^xIk@R@8%D(b9##l^vdq`{`>g%;;|JgZx>j<J1}<#cX=|jkC$}(_kyRT
zi}&PBx!(I}S74m^sn>3mcQxX_$y=Sx{~%J=zWgIkUBCT<NSpTOADQBgsO)K({?UC;
zQ@EjI@CT`XEh}fVy`1qj?w{VX1ifbqv#!7I`oQnE%ixcBY(dD&`@8&f{#sw}-1VSq
z(e9|7tEb{3ns;06SdB?|owxNa4xhFA(w(W#)|r$q-Kl*xHuIeqNJwkP>ZaW^CJ@%{
zJ^lQ2ZCUx!|G&%Eah=+^dd_b0i9Ju&#of8uy}PO~T>ssxubS^p6@<6#Ho7xa^KSC-
zH-}<N4{E%NIvkt5Bb&E;?Zb7Zceb|ezE*Hu3NCoHC|tK3lgNE}RqX1W(6h0a#9z(z
zYa&#FyHm0z`shwt>1wpqW0}~=D@rq?V1iovHa$}8UnqA>c}9o(M+v#(>$&SCpH8{|
zK=Tiu|6|ENa`gu`SMZ&G%(|z;vw~CqaeoEt`Xr-e4^01X1{?BT{#f<!uRzm75jnqy
zmPdcxb$G}tat}L^#$_J7W9Ff=B6-USj9X`G-tl<|7HT~-TVqcr7Q*xIu`BsLv?k0}
z-%tB`drjT!tNF&^TMAsci6l<f|6lRA{_DF9tAE|S8sGeHUtRsGx_rH>?@uoMWxMmo
zo!ioOkE@mbZLVit^K@O*yH(hT(nV)11E0;&DE6CTseWpXaO$~EqvtL&i)kqQcpXo9
z>JIJ0v67(Fhn$+$K3O;Q&elo0!-}qZy^A^-tGzQ@wHzTBu3NsfFkBjym>oBv_>|B4
zPj~&rfBbaPaWWMXpU)Xm@#S;tg7_yt3?zTDo#WUqZ)v>8swk|Y^vj!qyf04uGu=e*
z3vT^j$sX)Azu2HvJjikWiNM6@6qbEm!3AzR4!t<)rr$S5cHN^TrEX?YS0&y&d&L)C
zzQZbg?^m~yh~nBOHu3I1Z!X=pUuNo$&>d<;@jH%L&2E}8F;aQ6o2lef(^V%$rDHZa
z^0;?A<OtW(TX*rzskH1XyEonJ%X*X1DXZHl@|aUx?4IMoFZ(Y2^?I*;SN}!oJI`lx
zQ^Y5~P1+Rev+Y<;_8C1p>2>>ey3elOvUBn?x!iYqcJ4lVH}~D4d5_oix$FPQE-$$f
zzj^6?Gug;r*_S6SP3JqSeeMgh@!tcpy3c%Jey!IvNAQol@towgVz2dg_w4^Nr{l2K
zdk@1sU;0E2d%yQ6Ec{?;9Gko>`_0PRIoxN<dT)x&dU-tU*T$K@X1z=_zMHY^U)s&<
zJili>G&8;<^2H=;p5W)6h}<Jt;a|#K>-W!<c;nZrmsR5G)~@fijz_-t4@>w$qc^{-
z>+hVB&%gXR>|e$07kQP|{pxOsCh;*Rh3yZ9{#aS6$8-Px5$V)*`J1PIe)277=U$nq
za?Wv4e|}$atcyOq`1#M5D?Zq6zB*&=u^iL1)rPls*H6EG*Q@gGT8qzBg>%IHjLi~r
z?%m+;{d?gCe{XDlj(+m*0L!qNxd&7CiN$4aczl2Qb8+|kx$)d@vlCNFKCo6tXI$AI
zTqd1b?AC8u74UL>VRP62w(8IyuMh3_6aQY@yLGqy%*5j_l6&LAs(k;yJUY?Z&DZ4A
z-@8}6WA+}o>iwrofB)Un`Erl1NWb}gtRVV{+CMqzFC9JnmnR;-azQvz>(i25JwM)l
zJ8{E6e9F)Nxt|IqzxuWFME<cG8}y9M>3pB{v~h##rya6(f^`W`*z2m+?p$}6H*H7f
z`Qt6K&+Iq+lrf{TqU7-I>p_34?mSp-U;gy$4%-;HouH0a5AV0G9`5BXawT`2AO4;Q
z?hAGnEZdsK_Oxv0xlrxct%{#2b{ySzylw8cDcc`sA6^@FGpqG&n1;*dM(1LgS;emB
zbfV90y4sh&<+M{xa?jqgddFWeJ^u5?@n)UP8J79x*L8}|Zh9;hu4j^dY0k+Ly8o(u
zZe)cl=dg0QpxDGGSQ7DG`SsaN_jF$8cKUFLcPxoh`Kq*1+|$-K>xJF@xL0qM>fJc*
z<r|i@DQJ4_*^N=hxOhR!Q*Uu)YA;zkVcYqA-z=|c$%eh`u=pFi>*&7ttwG&Wqt;wW
zS}LZ!bj=o5oBZh9y;rZX?_E1>bJRMCzkN4%o!xdcC;H43<KXRbe~T;kNhYr~?A!Ex
z_b0}1vGpJRKCWoepQn?${pcKBw^E6#iPv+>?xul=u$bqMWoQ4FFZ<P!Jul>RYfPTr
zzoVND&5?cfM!>aQV^+-NhqL;U-fgPiZEt)p{!XRe8cW%SZjX=8DxOpN{`+6%nhy%)
zwsJ>G_V<hKaNKt6!M21AtL?WOK3lfq=GEw<J0rjC>ixAz_Q{(CzlFbx*hGA|A!dCe
z=}D7+)^h6(v3hf{$05hwU0by+Z0qXab$*en17dm0t{twLy=ME$6>ppW{SMsvQ6k;;
zVY>gWX4meoyOa;DJ=k#~#j?g$LZZ?-Mr>wl`Oc!gy=Qsfcbws_mtT2^>HDIi5A~J2
z4{w|pb^XfET~d--`EJuKH$7~g81o}dr9b!8yTu>2Uv#*y$sfJQw)Smn-9CAVw8hOE
z%=r#3v`~7}C->6NPG^p&t<+&dr}MVgV!yW(R9&h4Hrd}wO0q_;D)7SgFIGzym;Ab3
zasxzuSt3@x?)ecj$>J6E<}s>Wd4VO}Nzo|_*LUANKmAqOYM038ud}v%C|IqNb~V25
z_vagOd4dOjm;K*&cfY*sn!|FEYHv54*4zDNllCi<^!Cn#_m@`jez~1>wQBXUHM2Io
zY7e`cadk)N>$SI1uU4(T7Ok7U)o*oa)XK|VbHiS3Ic2swW$mP`Ue~x*K1dJyQTXKP
zhp^Q-y?f;LiTy0LP%{$Ff6cx5gWj_j^SBR*D|PQ&eyx6e(A$q6+$VlNv|WieqS<ZD
z(On<9PE^GUuk&s*R+6s0-{PCWnb)zU&ENf2&HcW<563)CT{kiE<D9+m==ZrVxZK@#
zm3GbH_<Tcbp3m-|6Z!wVbFLBDC-`&q`h`5x6q_<E`i<)Z-ah=@Rp4au%;&=K@3nKk
z|86b4c=vGjqWOpAUi33Q6gVe&&{EkVy(Olnug-3d-LC%owT!>n?ECmWme%v|_IJxQ
zF#r9h@W0l8kF&k#)`b^|`~C~{aeVKuv$UCd>3q;HHLv?FFK6#~S7Q0s_lx$rpIUvq
z@*Q%|Uw^bvtTC=yv|jyTO8T_mH;=RT{jaLXd>PsQ`mXc*LjJv%WGn2;@Bdx2xchm3
zdGq1a%x0b32}^nZY)n+IU-Ps#?Ow;}8*KMFKD*61bv7h#S)TFyHH+Uxy;`?4PuO+x
zpG|#DXKgn3rC$qNJJo5n=9ZaGvt9Q@9+~aBD{=~FpqlGUk<_3mk`tG@ZV3~qN-k*H
zW#wtRHrV@hQ}a)q<MFzGt|mP%EsINkuKi|DfV-)x`TA{-cLm9=-S+xw&1YBZ{0*Pk
ztk-Y7?OJv_XE|@#jzGEDZ#G@i%YM5l?B1^v;hSqrZx`O_dtA0>RY>~#n;)yo{>+nI
zuXSbS-D_;^H!ccUM<uy;zgcm!@190z>7~ADH+(PUO)A^G{O*?9zPs<{EO=aHWp;Vv
z&MS)_m8{vmyUgm^<&E>0w@>>Oa!GG;*~~4c_mxfGvU|y0-R-+e%eEhS7k1+=*Y4{1
z^Lop69N?S$F6aEpPlwJuTX|JWC**1O+k};V8&1itJ9qu+L$}adk6L!*KP(RGeYxa!
z*skX<<{771$D4i%o?LvfcuKwG<c}Xkiw|epzr4sj*HEn8U-VbEjh%Y`dCPp8=PkdD
zT-A!tiR4w^o%ip}{`4e0)@OlBxVTqtzi~G+^M_wb>%HyD%irI4Z2imKZGFaNW}{ao
z%I(@u);OM%db9rCzgNu*!>TTLl}Bj)G{2j<Zud=_?;EvrzU)4lm@)NTko=o%PTNJ*
zq7!HJZN8)Rd9BfXE&E@yWq5ekZ+=v|YFDhDP|?H*-My}FGuLr(pO=+PGe4a1Q%_es
zV98PCDGGl)%IqiI?brAl`u$hav|?8a|0AIpoLWzcyKC|$p4UAZSG_z#PW)ufL>r|^
z?mO}<uj`tBZ#rR9env}&W4`D`_L%K4E@zc?J`ApUyLV~a?`d(?zu#BAovSo|Tk!h5
z$;;!aWxvO54_+_3_PXBvmDl^OWKVy0CHwxrDRI@YE3eym-?jGIyKU2zZ0)bNy!LJj
zTEBM5AI>TE&7aZ({_*TBn-f<(IWBtT^{`7HlEAW4re02cS`ztlA6WF%xtE)YcR`q!
z%)i{K4>nyN^wUr4zUNcx)OR_1%l3ffRxQ~51#G(N-F4T)UTvLP^>+V>50X{6OLfHW
zDHo=^jQq9!)HmO%xA(xvXz#bF54djrp7<tKySjeT-q$Jbt!_rER<G`g&FS-s5ePdO
zv-`~2NjrUw%J-hRdLpJ5M%-yO3Rlj4e<G@P%~cTbw|mWAy=>D>VanP5ApX@8x1=|H
zYlBGoPTcDH%RlVcy@?x_^jtj=(VKJiL>QD<J7KMP%4)Z5t5RQc-dr_t?e^5{r8#G(
ztev^ZG<aLuscYt`uN`kz1#FX>vbH=WyAdK)IulB-%!$>C4o=Bl2I9w`ytW?7{J1Gp
zHF|c+>cDMMsjCCG$xU866>Of^`LyFdt8Dy^cv{@t`BtR*$E^4J<?Qr>pP#ytGgE8N
zzmM9RHtSe;l*LV&8(z{CWt-WpqdRr!^puyXGd)+I2@iReHFamy@fo__nzD~eYc*Aa
z*X}y@de^bnM&IVV30b)^Y-WTO^Jfj2aB0r16Bm3^+q%E2OY-Y}ufOXTJ+tZB>(v>q
z`EgaOSlq^fx`*>*Wlkt-SER7^U-@u+{@Ohg?ZZxdU0HNXV|j1U&Kp|qqf>W=PCNa)
z$KzpWPow*#rzNjmX6t{sy8PG9)x1k?D!l2fZPveN=l_{)midKWwpQjBD>>&*zfj3J
z_jShad0ZWri<W+_>fY`D(9Tln&xM=yMIUQ^3Uk>yE>zbrId1oU!6CEXRR{MiyLsK@
z;`XWMI48f&++^$fts^1N;@*i$w{yaY_fBxS?frZ5WbJX;!n?<pb157B`jS>MQ(t=D
zn^Qm6&C!2Xx~}f%)yYThrXEpIR<m?hkC|KQb@HUQ-0isrOcO&}a@R#YTBZ7K0_WBV
zy!VSkC$F9rb2Vw-A<K%L+Ph<S-kEy(?!m`38~J2Ud^nO;QYo^D_jc*0{yS?=AHM2l
zdg{IRC(FsNU+r91kUuN1MlJMVWC-i`w~1|e#wD{C?k<sw$p8B_En9nD2-7-E{dN0K
z{+jKzzQp>{<KD%0!(ZPCf8Die%gm)`b>7cjdQnF<?WMu#-)SdjJoViy@~HN*PJWQ;
z<L$FIKDPPp=(zvU%>8$2SC_n-es{-xu`j20BpH{z*;Kqd*t>m3xb)6rC-{%-Ir_rX
zZ9S)wlJ1|_ydB3U6_#)1`<!E5tn-Ge?DrGBc>#&CM`P9*ytdlBuK22yvETLTUEa6+
z%^!csc=$PyTX}WQpUo5Jy6wwM`Fy-Tife98`hJOzYJbl!{=L82C#r%sHvjQ<iOol6
zlqKKt?q6*bmSw7!9J5T~XZ#wY`&``RtG0$J)m`m~*|;s~=>D*~!KdC;he^i%sg6nf
zl6^Gp!o$E&xA`}E^kQqHFG_1>i<Yb~|Mlw9{aw=}YYRW#7yKo?_uLCfrI<zM*PETT
zF0)Bp9yKd)RnPrPD=q|bJ%4xq*3bO2zxpEIo8NwtH0^psweQC_vqR%=AKK}*^i5)~
zpr&%r9pU9MP4_pyGJkG2@p#!^g@WaG7oM^R?|Zym{?l##r^eatmc`E=%DvxXbmQd*
z51z^E7aPhPZ@K-YlX2JogzVZHH|t6F4j-vEX?r~5QTEp;uJ;}SM`GrdeGLm=9y_-z
z_1@IV@MqrrdACbWo;@gjTIpfaCXG`UnMGf8#=Yp3__bjE*WXnv)(SOV-?Oj(y;Zuu
zOxtJUArV=FwanXIHLSIIpjNv!a(VW4uUV7M2YtHvXmdUH`9Hc>-o*XNC@*P{lF?Y@
zctg5<#cbz7mOhiq27XpjhYb&%@8c}H?#|smclMciLC5`g4;oCo-n}QzU-rQliyN9n
z8u#TIn7iv+Z~Wr#f3LrB`{_evQC~~HI-KG?bni!fKj*Ek?0FAf1+Tbu`_9Zq_qp4w
zmdi9G))kwyJ(kE8v3tI0y0(>f{r8Ax+fV-~i_ARQzV=7Kh0FPu>nA^SGP8T<)EYW%
zmU8ygs?}HC*R+}XC))cu&b*u2Y`gexjk!Y2t$&xl&ENKaOJTmm_qG$8ty5K0r<D~h
zNnP?`)(QJlC*)I??C%lzCnnGT&EWF<e|p<DpD{V@6PxzREO`6OZL?Oco^m@kEh=Z(
zQTg*BXAZFazMt}?+HHS&$+|Bm^3(mzJCk=yZW57xvBjRF`mumam$J>fdml9({9UA$
zeRlh`n(VXF4ex7xUTbpS>+{+to!cH2`?S0LH<gf@BNroQC;5lN{#fZl<Ab^-`$hL3
zkhs&9^223=pzjNved)KI50=$5@P7>a5pYxS;ipZ`g%W(nr$5-3baQ&4O5Y&^ncjyI
zjmaNGYebJfvXJQ)E>QA2bkc$~{_yoet$mG`Klsk+%YVo-r!)VtP7QndW0^VK7Y{Dj
zbn~Hg>iah1Q{b^oF789yPeZ0j+btDd$m{WbW0}rcov6U}FhQmXY+)pHF82P>N(*`M
z1QoqwPag)0)OS7d5B#(3!LJY75AyC1G=KPf$5GEmVSkvC3#9qD<jUkKScE@n$Q^!M
z!Kj}k6nE(KiepJv5<q*crzNx6Byoo&iM|qWH=3h$KKN;6)=OD)an^Hh9mOo4Y}B2j
z^gZ}VUDqA|iN7@uo^Se;(7%9P>w@s!3(|&P9OJ(n&a<$SkeJhO`f&8i0&Us6rH6S-
zc1+?6zx2?{D#o*2yLtB60`CaVZm+12ON%CnO+9$`;JbqncbW@#i0?nLzCixnapoD4
zHHH<!CqIZyysNY++U47d6Kb6~lb{4^^xKMP3%8PF7jrPN?2Y}QU7Ls<Bs{$9MBux}
zhi#V0J$$Wcp}fbmXqkIn`a_%lwzrZ$X&+v#WPdR9Vd&C&_I>-lygzW=ef{^0mu&s>
zrm@>D(r#kBIQ8I!jJcnmWzDsIS+Xn8K9`HH)9m-Il^@m>?c4U+dEyJBaP`zBA7USh
zsx~*R>G?MG;y$BW;cmZAWyJsbGPQr7(XH)2_SfCu{d<^g>ZJuiQXyW=UYP-!yjn{g
zmzu1Y0ufB9_rH1nv+>^YuTLL}&M9JD9wYcCK7G~29YXe?saF4w#xcF1wbI<~#aFM!
zl$wUeo(&BzzIs)rRLXtsvB2epS297&qZV4n0uB4R3PXApC&`FDULoOr)MC{K$t%5C
z8v=RFRvmORy|IE#`f9>rshp5zh+xtEgm=<w#4cwUuEkAo&!1b(dpz#&#_Ki5zW4nz
zE#H6Ou71IH?mK^(%J(0*X<q#8?3`NT^!sOSn!mnTXluPL{rJ~6JLbt=-~70$EarS4
zEd;06noC4L=ZgPrzsFxxW^s1!Bi-*^+wW-KD_UQ18qCRjCwlpg_OhMfKE>;2goOzo
zIc2j<JGv{i^|^<|W4^;2BJ<7`cCELbcd>AHmz}%o{NOb&ylrRglvy15!*8nWN}YYj
zKC4`<UHZz-vo!wYosS7$tom>K7dqE@j;pMD-)d%^;<CtxCL4_;mR!0WQe_hLUT5>-
zTh%MRF?Y@1cm3J(x4RzBSzz-g?gFBq*Z-Ah{zh)zf+p$Eg2h~UAqRW4b{JaBo9%ZX
zebs{pmmawPFkHvo$Ga}v)BJ(kotF9HziJ993bgAQ4R`RCx8LVE_DHVh@ZSF??^GUe
z4_%u0f6D9$UII=EDs2K)^BI&B1ZH)$wrF*15s30p@L*En@|u{Hs2jp6a)hnJ&B3aR
zuS;c1L!*R%$BK!IE+xMEzF&Ru>0R%l%D(@$d-i>g`uBU6&)=S>Xv`RV(8NIY48!?G
z@i))@Kim9e|3`Dpw?~s?Z}9#9DfNaSQbGC+%kBet8`$5lS|-S!U_I`V9>~CTkbhC*
z55fOGgm-Z0HJ*O3YK7Li#@7$nc4)3TB){n)|IH8WIX|4u{wPZSo4{LtqRl?#Fibe|
zRGsrZHm_zQ1(7MNi3?;j_zyX<R&VUtbbqR-qsa=EB!|=h))3aK4y6|^#wl7io?F2E
zg6o0wC&df02dtkQUeNzS;diH=QDD!szen#Hd74aTb}6^K7N>r^arr^x1e+NQYE7OG
zA`K*c7=sV;{F;^dep)@Ve&h6m+7ChvxX-jT?tYWEN-!f$KCo~~uIBA-xmR|9(Y6d$
zH*GgeN{%>bI8{e3sJ}}}i*-rU!aJY;#WCzGl`eXHt!nPxko-;7FBX3bKe90()<LXZ
z#;j1tuguHk#pNT%jlZc%>gk*peaKwn$oYW%k0S#Ii=%?X6c)vKwnujGqM-;6HL*#Z
zttm;0GeJxvK5of&I1fnzi7C|7+LEBC7~y0vO`u1WC7JUei0M$nbiV0i0@n<#WsNTr
z*edw;Jh-WqcB^_ro5&hP)@+Z1QbAy*>zQXaWenu^u*I=+A8^{hv4`;<OZP#c4`LBs
zYTwK%*!OVXV}4&;FB!pT$Dn<%{ekiXPCK^M2eLM>)i7PVCA@K0XOgXbK7;f@wGEOv
zjPo1UJ}CacTF{*P!25&fjdMHVn`ITaQ<~={h~MD-*05KB{SEW)%+I_ho<3)u!tN;d
zL+r`z>?4W=5;g374T~RW%{*sXAbW?wyj6bM?53y75_W1v<Z)qTYE7Hn^>kU%&Xo~)
z7|g_-nGtzX(`L6lU516(_jFnE&X*B+R?}wpp(r?c@66WzjF*3BbM<b#cPk=4cg^;x
zGAZw;p3L~?aVqdZp@EbQ<FSV22O^%C^4ajtV|;v&#X!&p9?UcExB5&zA85xP$DrRd
z^P9_>I;Ajs!PWCSuKFK&rJnRvc;m0mBGJ;YX44148^qQyzdp#eK`@7D_Cc}T6D(pp
zWb{<{#D&_qI}f*B>Sh1=*8kO<37`zN#s5Jf(?^5GiW#L9GaPKrSlRe=yn3>;Cw*og
z2yq^m?Q?v#O^bOYNB$+A{7X#vMnU--uD|Y0n7rI0e`B~{`TmRZZ^pk^`;EI|rf0<r
z?Og(V^>fVBJ1;Kp*t+~JYlY-<{TRP3k2l=1SYyVwy7zDvI<r*y+AhKDyB%BejzpO!
zt(D%mXKTd0D4l%WY1_q4M|X?n9`4$f$a{KY+tY}{MQai*uWgXYj_5PhIW9FV8A&*7
zgUniehu7Q}elcy?#{g!QY}@Pd{*e12p09G&p6|C_e<c&P{r)-S#V6GL{J+GAOg^wV
z!Dt54vZl-gs~L>*n2mGISHC=xWwmjZ-<oB@VCKW>J3r*i_Z{zjU-%do^NoXzwZM74
zBb%8&zHzX@uNG|B*>$`L*V!K6G7qc<ZsG2^2lCW6+~#~!#)O>-ws7-nP9$w}4zc(p
zGA%b~44!d7)8~PR+Jw*R)t<-up4&gm=AZ7TA5WirJbm)<^vTEd)%)Y${k6L-Q}h#o
z9&Qxpx*ey%I^mm>-<QNshjaW&&6fXKa_{lSf>rqitG-XvUiT<P{&~vt&d&yW3ueSw
z_~_3$qbf6BobNKXx-xhB%htp14|Uo<G}v2^6s)Y2s5o)M1dj+06&)2JF(FRw&Xx_{
z0m4_9wmKRMGT!c15PGMK7d5}#+6F~W4}bfVSp9Ru-kKY6b~*a;+otp1KHdHnE_`jn
z-h;^K-hQcQ;bY-QNSyO=cgsiDLqC)fYbF}(^N@&F>CqQD1`-z0@A#GRMbP9Ihg2;~
zuU(UyyyN2jKi&B|^Eh5-cN}}N$Z%(dkDk=zZtTouPZlxOUToNx;Se8jUlBjr@|1B)
zs=zHHj$Fx>Z9GoVY@ON$Z&#N&Z&|8%>ykijX2&*@DPBLkcy%5imFWl1rLXDGn(L5$
zf%Sk?LSp2G4LT7KVmdn9V$)c;PdBxu9z3*(9N|6xBhZk|e+eWs<9<To!wnm5Cni3u
z_#YDyVR6r1T&zr9XN{)Lnw75@j9;rP>SWpJ(iAfz!pKL5QEeK7u(yKNlU0dMtG~Ng
zZgtZ5%K0>E!_{}|?Y7$o#W&=Blli(;b{Su%^%d6}w^cvgI{jeT-RSl%f!O<X-p6m9
zE@8ePV6rj%1+Nl^Sor*mPl{o?eBUc&y%AL1aHc=8&@N(G`-@4;ldCVCezN6zt+ekH
z%Z2`eiGIcZd;Z$SoKn*I!4Mz7^n<ZpfPu+TfP+odv19MNKPLTuO!{AJnS>h&m2Lg{
zJiq7n<oS}PmBmltMEs|e@gjBpQwWrPQk@_&w{*xWYPj=+VdqK4qRGrp)Ywn>@=cg6
zqYxkAxo^Xym_*e#kA;hxnxC++CyL&+n5gvVFK^OcFTaHy5%V3^>|dx~>G$fi!36Cx
z&f2TRk@26OynMZF{l15m3-fOk-a1@+n{RuKjk<39?%vQtdWk<P^`igHv(Y~AZ7Y+l
z`Wgl6b6n5rJf-uTc;Y&j+pYcHS#|5@@8-836FwuOjc=MGzB%grR+v^RaN6$2|G(uq
zmh(FcXYbbuXkiskJm?xxASf2o5_;~S*7JnM>Wv5XMm&hydc-cXPI=Lf|EKyBBHcHv
zh|x*kcTZDG=>ERLS@VRuCP%i#`W%0Bt#et`-WO}lyWOg~HT>_I{xZICKP)gdy}RPp
z(bsn)&dXg4dM~=Pv@gR!zJ22!jfczoi@wiT(Yp6&a{kpXo`w8>>z>u_-(sd*o3-En
z@AR`Xv@5@9gzb!*^5kB4%v%$?&-3?5I;nMA_?0d1cp5U>_)znU^R+$UHR@t-cb&Ow
zmT|pm%j+#a#pWA38J#i|JQ?c!`CpFZtFTm?=j-RoiI=Vn>|Z@ssqbpbC!MZR%lThl
zCZ@mSx!AL_E^Vs<lh(VMlUJ`_xtH;L^67bxwdSu55j=C%blpCYr6<`Qoxp}(X!hkO
z^yMh{l?$hq`WJQDDNHq8tA786Q{5lUeTU9}*?sO`=kA|96*2i~?b{PP=igd=a>03n
z^E}V?_t}{Rb<Z?BpAZ=JPH5`WyoX7mwKIyN?@o?7dY?b=dX2rys=q5gM+(@UvRjqj
zd8}&Nj>(1RikLz-UJ?xpzIY%@EoRLdK|$AUjboWd&ZT!`xc#~(dA~>G3`c9v2H)?C
zO7mZRU+lBw%!4Q8H`!0j?m97Z-K^rf`hPN9&n#&Tw(gmgc;(CTXOUTRlHL0fSN>pM
z^qu#4aAey5hfz<GT;~LEgzdfkW%}W~_lreqt>(?M+kI1g?)~B=uDT{$T2}5o|F5&=
z^)<Wdh2Q@k2zWNnk>zG)e8QLFGoN*q$4}d*f9VzXFWx2hwNK=|3FM#9I4yniW9yY0
zyKlZpJO16^d+nD1n{MeB`R4DwZP1_j{&o4j)%7g?MlKe*e`ikA*VVuHiA}dz^7P|1
zv!-32`#)ardlypx$GWap1}_lk%O3;V-6i^KHf(>f`gfpO5MOI~PlDazH%EVIo-3V}
zaj4QP{dk#SlJVy4)o-q!&9MAd_r-e3nXj|H_egJGzdOU3|JxSv7jJ7O+odX{wyij@
zNA~rn<b8~1zP9{xn_{$lU!&Oki;Eh>L^A>%y1BMwIK2((sk}4ikKAvo$8if&8#AXS
z?>oHjN3ie3d;X@buP0V?FIHmnFW{@@Igs4)*f8%fe~!cRuJ8X9wwjcm+t`2i$IAAL
zzMp;Ft>y;T%gisEQ#n87NbtAF#r*d#u4^b`{PNEIe3v@=%>N9(nQne$-Sn6{WsmrZ
z%E!<1BbJnL2LF~=UNdK|)xkM_6F<*iHr=>P@K^M?IiK`C|J`LfGhBYcxgPgN&-*qV
zKW_1mY0Kp`EcGRmzRurNZt;HR%#G`fzm*=__bxW_;`#l?zWQBpS%!6*RXct3<*Ewz
zO+M2v*Jr@qI*&(yzpF7pKtlOer~1L*1RV+WTNkrA_Fnr~_dY}Y{rBFoL(lG~Ew@Wr
zZnjAM_Jzs6FHC0tTK(<*jPKVg4rd)ze$+o#(Ek?u#ffPzJd9VfR&JHIjsG-n?x%Tk
zjeb8}^JU8ClWtjS65cGm7nOJ~DzT?_+ALn4%l1$IlxEI-b<=Cj|9Ln5$!`2po%Fpt
zjMrcB`P^5Qr|%Zuu}r_ZA^KAGs^=5-9jS|1{+0L5>t%Cuf8Lnh`8#}#!*BJhwBXNj
zm%jzid-v>I-aD2V+tR<99@~BHRNk%MClqbOZd&HrUb*GI?!m$|nQe1lS)S97+caVR
zjL3=myej7g<}Z*vs+(`Hs{PGl^|Y9jpMh)!-45@>zn3(N#<*Aqos8Dw_SAp=;;6I!
zwz9gzXC!ZjdqmA&ytVzBnXZ4;^MK1Y)zAApE0}U^YUW(`*WOaoveN3AYj=01Rdi%;
ztDU@4X6g1*U#7X|PuHopKE6il!nv(YE}BLQFMp|-Y^htW)VcP>N3PE&uFEaVC~e*N
zd2K@7y2S9JtctRr$1IO6txG3JslT{<b7}Jz#^Zm#Ru=xcSG?%!`#Jq9v(L5e+FvZU
z=A*q0d(Ex+cj|Ti?%(r%&BypR+bciK{;lH`weZk=t<!%_bu+AH+Ut5jZPJcPYkT*P
zYn09>RfM&^US+fT*ydM1L{D=iw{XmJ3l4kg)3hdF-KksYYm0i~8wHglPQKLc`YpOM
zzVmnJj`*p+zZ}-I*gAKj@*dMU6X)#nGS)wO*-5*{`l&;u;L$%`!J8-8EuJwysje%m
zHO%C^cB90*@P&S%??N9xf3;?>%HAi&;pwfXxYE~&w)AfoUtVhWxjbyeno~Bb4{d&Q
zt?O%B)20`362*G{`$Z$XS(eM6jM#4d`cb9pJonEwZO=n@gin2bwIXir*Nt4~mg)R$
zE8H%lk^erOPp<6w3el61_s-2)ydrp_)kT~2EJ-VZXIh1>2=2AI+NpQWl67XSuD;XE
z_RY!RGu$;kbEL>QrsXH^SeI1xfvcD!m9O#KN{-xXaR+ywKf1ZR%zt*N_;!oubGHg9
z)`zNZxV8Ds{q<j%ve)Z3{a=%J;gqV^AML*nGD8EO?O&?=C9FO4zpL%SQr^Pb^{ceM
zT)Gl@vEDu2qVw%Dng5f{&A1`(C;jWOimy^1UIkZNs;ijeu_ubX;;ZGJTX#Rax?C}z
zv0`h+o+#srubMVl_Im<V;?^?n`6UzgHm~Aqrp;xBJy9lcYiEkS+Igh!N~(L-CS}vL
zpJLi?m)@8->5SI2*p<iDg=}54BYtAl#VadWl6I`~*{gMBwb$OPE35mi{Wu)g^gy<7
z!<mE|sgg$L0ydr1N)h!vA-YfDG1oz^s>7>ZaVgF^I6JHJ+Mbw4j2B&xbhW#bzq9kP
zyAs1Ac)s)ZQSPLf9>Us3r0Sy7%{ncUxYu7l8n!WBM_^~l4f#&tO>1r_DW|kps4q^5
zEsV3%u=Y?CP6=O`;(s&x*U5cF4Lp-h?(sSuV(Bw&qViK2Nww!6v((}rmrjp4uzF`r
z_&)XM6S_sqdxG_@I;gF1d*ydC(lq$&6X#V+yC&ZajlSw<x8_~o_Y>|R)n6OlEVWv}
zw`u;XCA&_ze4X%0k$r{x73HE0uU7v$rI^(qr7`(xf@#FE6)C1Z%T@_yO_5pXwp#O3
zp{cK}{_+*#S9N~QnYH-Ysqia8Ul-0<YIIe+sPopcZ>LSQ!euAlzT#Qx_Ad1KmCB#J
zzZ_$yv0n)-jg<@ACiZDXSk!5zSSR+=kF8v$PrLs*Kvqltg+Z+2zXjT_x;|}Mw<P(A
zXsm1a)axasvBCE)l$OM1zW%jq-z2Lr^8hdNOTAN<&VIQ&g!8V`_K<(OrsgeWDwV$L
z#`>~s*Ice^vL#JgD|f$=du4VvSY7jztZj(vYr$WIqKoHW@?R-cHAilF)~m>>ZL5}s
zzYty3_b;M;&8t_YRlTd0Uw^fB)xLAr?ypGuwZd-kt(V@n!ah#x4-NXd!D+43s{L0F
zWi6C*4_4uraJFVU_uMZ>Izj}kDvlfwG1M_NOr9}=U3_}1)%MP|{~Wi?_QyWgR&r6j
zQLSsTT2Sh0m`X?9m%{lKE-GCI?^PW%_~jv}e5&Kti+i$<^ftZgd$GXfeO2ebj0LW<
zAMH}@wA|i(N-5+@;+$hIp5I+0d~4N(JNJ}4RfM;PK5yZ>xTx~_IewRJci-JcFLv8k
z)>Q_&PH}zyUPRYLyRiR-&I6l*gY2&I77m56dt|g%Y8-M66;ylG*|w-NqcitTcdE@9
zpR5kPMfy34M{jTbJiF!MqNWvW-7EEHC3)w%R9_4|AnM{PsQ)X`b!AdUQ1cfR)5|9+
z-SiBLS|`qz_!$|Ll+|`CF{N+feW}QVl!+7VRaKYqhnUN(oI0`2ZJLSEl@nZ^p3d#B
zGn7|LMjk)G=4NKN>1o52CkJ=Uo%mh)X5oPiTNeIORIZl1dH;l>8=tXJ@`a8gDz?W?
zc)IONcp{^G-=s)#uIj6+Zg~cuHeX3pZhxiUd&bP@_=#q>y7VU>uWVTo5}Wdb-z~0q
ziE4$#p--kpCr(^)n`Ulw>V#INNSLm2tectHrkxXWdvfNRB^@x(zIS4s+c%kaciyKz
zQBV%<l}UV(p?rMl=I7T`l$T5YoHVhxCnn*^r7uqso7bee)ulX9cgr*SRII#xIlr$|
z-dm$j6DGQXEbE^?G4ZAH@8!Qk3^z@isHZF~ee=!<vzN;4%YSb%Hv(H?vT6RrW}_K9
z{Z~y??vcrTVxg=qX(?NL=|-xh&ZG5zmdx=#_OCN2iF?2PT6+cM|DJ6B)?N9*Q=ju|
z{U4Q&3Hzrl{nrqZ_O)x?9PO81=k|U1&2039{{+{674LtHm9u9~H(R>L)#~%!uW=XN
zd&$?tYuwusq5N<2YJ>Mz<t4)(&8&}S``_1d@b_`y<X;cwws!_5&6(koX51Z<rWtuI
z%SdMX3AOE(Dt+CXA5Hq;5g$3pM%629^4FB)n?d)KA9tS*o%U&(=$_Oq+jDxpS*Lz}
zlr0)tvo@`2eYxoLT}~fs->zM6UG={I<Fw6tQp*ZG!=hrU=10G;Jl%YBssG|fn~n$-
zue$XA_M_Jg$L?(k{b<4Xy?Xuf>eJFkQv-UFqPc%<+rjfucb~k`k?6ed(=6{@vd%l9
zdW@UF^HXRt<KL&+9`<2Y_ct<DUVOOf(53R%)uq+7^ONOQZPDue)Vj*xa?`F|OM=7M
z7cZW4dE$>bNw*dC#T`HGu{r<L_1C0Nv-YS>*|Jo3%cnrQLqUyN0Y6p*t(x*7G&M9b
z&?z)vgNW$jq?Y}w7G`xY)XFQfUkbMjGe0<U8;_v>X|7LYAA8m)W_Ng|tlE2IbINk(
zqaicZE*~lRIpd6g@skqE*gYQGtisQzD8JQ+3zE!Qaw4REvh>=Z<SP;zqk2OhACWTk
z^cBj!Dq`xoCV2gd@FP{G(Pzb^PpIz~lrA;M-s4bq-Q$mk-gUn}M{-_u7-cQ23s8UI
zShb-pWciB{+aUXO^DiWS4YBq0zi#}c_*doMU7NYH8lxH}S2@@p@H_gtV&NAC+kgyP
z7j<s=qWyx4TFzaNJmlYhY4HQ*#a}bR{LD0%PO_;V;(PY`=bJTV`yRiqmU%j-X_vQU
zda%>cRT1ZwZFI^H3BEc-{cLFQw_S6yj>p|!|1N#K^(Ov(SM<*R+jT{D73bR9tA2+x
zWi6C@u<yV8dsp88VTrG)UyZ63v>ZOUXiZnxme7-38?~ZC*Q^RNJ$!Fz9Q$g)v~N%I
zXV$tdwp{7QdpdFNQB$S-m4daWji3IJ7v9?Xbc1W=)eTt^dkc>7Zao#17-qS8k7!=#
z2BkF~?V|sT)+u%KZ1jpwJu$I%t<bdjPxDzL8p9@t=1kq<v?l0U?v;%<UM`>6blGj9
z<Mx)`ZQG)f8N2pu-4nO!{>9T@*nbuOZ7qA9`^)?9)O+jpU$ZWmrg!Q7>&?IB*sa%p
zA^)ZSmwN5RJ;%RJtLv7#e=Xm5`uDHD=UD%=d0lX9!<;vNr{BB3=-O|a*yYz>^Hwds
zx5WIl?yum#Gw*rrP2S}o{_63s7Q2=HFE4K?u8LnZ{nBsiU$Ry4%cfua&HjtI>VHi7
z#cILgf~xiG)BmiEt523qJKuN7uj2OKV<-M6tvwf)KC{el(ULc6yHB^L^8cJ5qx5~n
z#H=~9R>fWY{AKqq<>Sv!^lj2+w~62rvn!f@r&TX?1y4!l8mZSc{gP!b^4}OZoWEGS
zfia!E`AhpRXQjqT(~pQ62Koq{7h+!4u`+4a4861iRrA%A_GqMa?eCm^<n$xak6IrS
z&CZnT#iZ}6;QhASK}V$fi1Z`hjS)J6`GVH>#NKz5AFX~=`{PrQ(n<EDr9TAn=4jf9
zt?tmyKBAta%Tu-YhJu+;s@dU1_M-C-F18ns7bxD=sed#)Y4?w)Hv*9^3+5(GzoGlB
zW3Q6?8)dm#=IeF}d|fsl*Pc+fk`=q(sr+b#g&Nm`2gi?c76#1`T7FbAP-UNb(Olu@
zM_E5M{}9wKo@h}vb8DRF^&_Q)&UZxQ60Q3r_uYvs4U7#nw<s>Z>TJ8F>d@@!mG@Th
zpV>LzE97tJq{H*BD%|)iu;cS$E!U;17G}-x3O;-_`NJdTR|`%B-(OWz>LD9;f2H!P
z6;{i*LKa%B^E)uZf92&@JzAF-Usacev0J@~jBT*}zoITk{HkhcWNf2reDL+FyrsdF
zGJ0#59$vb2Y3&yMnp^(AU;FLa{Eq4V+ojd7>#PF#ulB$6{1s^%>3>oG_0C_WdnXnD
z^+-QdXy14{?e*NM>G#%tf3erf{r%<NU(K(@h81sFmb3A{`Mf`wk7tU%{QYr-Wx=b8
zjq+xHJ5F4!Er~C@@S`*TYk_UdljN(9k1GD1ROcyUdaLBjk4sF+vs>LZ_bs0OzDxL+
zlfM+V?b7hqrjNF4ysWf(<<*|a0Y$>;KlWeTU4LcQ|EcGm{tw^sZvNMI>1TiE-u=D%
zo8_<X<-9Q|B_ICxiJdF`;;t1bwm!IVj^dSy1*g=CS1A5I(YR>aM>pQN<-1&zXFBN>
zvhO@1anZ%jwd{)DxvA^B?TV(}(VTRJ<IiOaQ{S_q>t~$!H;wPo(xXAoW0g0?w7-l>
zYF)SZb@y7UX*r3rFYdB=6ltuKpQ)5EWrf?n3mukwkDi`*gyr*RuHvm1tG7;ET@!aM
z|K`<cTW40=M)o&nD9v8b`~6gP<SXV+jENH;pHVc{Kld!`gOc`yy-yY1&%L_+&d*Y|
zz>_Hgd#@~3YkslDDmn3PXn9h-|JBLrdqeY+{yUgXxG{fGP{-f?mB)S91RvL!zqU^i
zn0ukC{be@8bK5&7W&gYAJ?x1&)bl3Y?VGtW`;3XqXHPh$r9A)N7bp1r)LtX^cawiV
zH8%>Eo4}qr?@!pX)6SnZ{PB~U=>F6&Qi1zvVWrc&Da)T^R=SBr-rDp<wKg*TV)$3n
z+SvOS%(uGV{(sW8`|Ng^dl8IpgVd~bpBixQXl<)@`FP`GVC@C-u+Dv7MN}==pPRpt
z_5G}#?W-zh6`8$2M$>(wVgJ<R&IOmBm<TGRpLp(~X&HP@Wa-@U7*|P?0?}K$UF*8+
zc0V->^m{kK+GWSdSgjcnGMP#{PNx{W^<gXK|D1h{=l`L3m2aQ@e|YM`oG7*Q7oAuC
z$T8n(6hCwHvFL-_=N=!=Gbp#ONYMD)*T#8mBJYNI(>BfB6Mrp9)-)nCHu&3-Wpg%d
z&&fJvw`r#4?^C;dZt{n{n9{kaRrB}hY0G>j6)uzc;C=Jfl;#xcV71fLJ~O-KTBXif
z)2Z5)aJFl;)uGDyd*^LD`|E_=rPepv$rJykFsCfa>3F06QLLwwy@<gk^km~Fzb6Ve
z*=Fk8RtkP{_e98^rlcv~PCOKfV-VjZZ|P*$F^8Q!tZ3hxh8kYCr$W9i+85(WL~LE`
z4PAJ|7auit*(SbWW2MWQr7p|+JKSb>*xY_vy(U3!bKU(Zd!HHwf17yP_h$GygH-#U
z3pItGvM+n1A3n>-vo7TnqtWFl%ukOmlTi_$u{R>4EOFw^R`WA@dos%&>Tc%lKC7o=
zxO>BuH-~PgiQhBa{bAi^v&WCKW*E(jS-50{qEyGTXL}b;$_Sfr^L0^L|EcQN(MEr!
z&u_D^&b-ISJ!$iqILVg=%#mDo#W(4Ebe570cPrldGj@tXrDNQr>xE4Fv^?%EI~3Bg
zYE72ZzCZV$?5`*~eDUA8AAe-TzHqnyGPijl&i3@nMfauu9(|t6@nDa;aN4}0)UU$!
z`-|20ys!WJDKElB`qYI-w*}9}2rEhb{&juUow`p?6C#~-X9)z(jh;Gn%Em^$`uO>`
zRJX2rpd8b=k8x}5QdRXkE0=6t(Y<=|>T|l~O80xJ)FwF>#c?j$?;)P46v`taxnSw%
zqR?GSjkUL2-MBDWOm%PI(zKkslRwwnd<{LftoyN;uSWF^Q^$I~S9+H$v_oIrJNt0G
zT;0CUwz>Mxd2{7ub{`S_b2?-x|70oq!#+Xfn`=(5n720h^sZAD;&rJ_yZC+1OIRdD
zl-xe@kU7~ocIn*Ps;5}CNn0+ef3zX+<jR%I$<8l&cQdBe?B?^Vu}MyN^L8D_bGL+<
z7amDp%w_L8;UPC=&XgGw=a}hiTlBi@`9?kAXSH`sD>W9Y@X5}z$tftgeQn)}qJ!(&
zHuA>w#ypEZUvzNexzxjKyzeur+%L~tr?=f_TlDlBMe8;leLTG;<3Yz0y_3!DS3CFR
zM+EJ?ackYIqs&MD{5ilQdiUw`jk|bc47DsX6LuNDV390-z0N~^q527dgMS%J9lbuj
z`_@10&55pm3JGtvqz1dq`)~2@&_jP`Gk(82J1QKW9Q+!--MprLQg&2-;rXXapP0u9
zY^p53_(EPT-b!!n&u7!^IpWNpEWZ-IE&ol-_rKqC_14|HzB|7qs$y-O*Of`9yPxZ>
z{jk*P)0gJC{ZrqBU(qVMbL)X~;cYuRo7Cj{hW*E`T`oR8z4H0J7jJHSdGM}uvzvL=
zkF1wFmtL2X3i`kI@o~G^|6<mzHP-T#+)|j-|1MM6+`NAMttt0zdr!^XS8(a&y7_E8
zzwdlL`uAtH_Z>6qXDjziyIStvs~08l`)ccB!-tjg)9>9bi)-E2y(mrW%g%~#E4h>J
zzt@l7b3^gNg>^I9?^T*+AH5Q&eQq81zl{qHH@aSL*NGCW3V$}m|GIYXBYnB~&!y(S
z&U*5?{n)P`Qzl5vSv_m@sq@$MEO-8y(9`qq?5pek-d^%?`69pPo!fWa+e<pD<oP$F
zpj*@CpPugI`7rD4oz)qp#ioU(aaS?|n@{THe_kTE^8bZhbsN{+S*4X5eSPt?i&t*1
zj&fYrFh70a-x$@ovlY)ph>1No&9iggStsM^ExS+sU2}hzPr!A(wSimIN|RsTyZ9kI
zY~k^K@$buHZ0|naTsCpz<#{urtFJxdJpJU~3HHrle(w$6Y=}R5w07T}e?>Ee!=67V
z{vNhof7TkEAFrPNsI)ZvdpfRf_vWBOA8w@Uoyjm#{ru$Q%|n|v-(K@WtNPwrIs3Gu
zvyNP|zjn&*<JCsHpRcp+Zx>yCy_!$vWnTWTAKiuG<!rhZ_P2wp-^b2XR+<&EU#8sN
zEN8dc3gI|wKD*H0HGX+#S3Z^g@#FhU^Q>3v-~OmilKh|3w@z*QtmN<Z78$kScON;f
z{(Eo1xy_Brb=OtwUqvjg{dZ3>S#4^*c}B|n!uj=^3|7v%yXbAU|J`d#Laye$WOobm
z-zT}>Y}fUB4XeAAvTE<YUFg-hGq93XT54I2_4NHe&Nb@0?2*~B%R6NKa<;n{uc!aI
zJ1_8K`)-@h&wjkP9`5t@>$3Y#ovvTqY*=o0LrvlLhTV^z|K2@UN`CvQ&yTF$pER`J
z^Yh;4@(MAz_kUNMKP0Ak-0b|VM>j9N&sr_4Dz??yc;Dp>+q3>|sH$2ib$|blweJ_5
zlznbnxj%lx>u+zDiY<w;yPDkkHE;D!`KuN`lWuH!c6`?o+YR6Qu7@w>-C<iCHutNp
zpG{%fiy5mEkFVDK|KQFYz3ix~m0u^T-~0Teq;7xOu^ncvzKieGn7sLM`1NX@lcMLh
z=$byADYD)(ue|sEH*sI17vhsc^d4qK<n)xrY>hD$3yls*EjqK`=vdE}FS|TDkNr8+
z^V2f+k2Lp}yPw*1He6h<d%^Ol=Hhnwp7%P7<$u2GT(7pnZvRfRnrp}QcdnJ*yy=ep
z)H7Sxm)*FuVgKuG`g&<DPxh3oc%OYS)vo5%J73w&YV#_V-8r&-^?sWjXKb%;uQyu0
z^`7DW%gT1f^Xk;!9`EQA41M)?!k?O~Gf%(XJ{<SgP9ypBgyZ~kX5Owpwfv>=dY{u0
z!9V{VEuJ^$@586!*>=|!-aFCpZ7u)2cu|?VrT-syr}=w$?R&Yu_}9;gum3)m-%%C4
zJ?pcObdJ>GFgwf2%d?}?k6e-5`@1htI?n5TY3bXK?5Ej6?geg8Umm#kchuBexl8#z
zqTi#N&z-$x`N!w<|KPPVk2~-DTUcXo?cuG|{A1HR<|Rt}_S=;je|le!DG%Gi6t$aL
zla?(yG$D3cislgxMX%0HQ+`EG_P!?av07*9@6~bN*Z<zV{`dJabBdo?p0_;zbKdvw
zpDm3abNdK3`}?P`{;r<1URsvni9qU1)jj95Ce?DX3T=6)zw>nN;s3?TxAT2f--$Ui
zY-;5Av8R<GjYG01%vE*T*Oj*>oxU>R*g17JR?ddMyS693ak^D^;{t<!IloNIom739
zl`A^hq$_r@{9ygH^WlSAb&NOudN?-Jzdk*uKJO#<jZ;@S624zEDy+{p|N8mxLDS{}
zxjM#qJ1+3rXe?q>5n{M-yJ7<41fxwS-afK7ShU~g>6FrxH#0uXQJi1#YwF`~2U61h
zRR*>{HGTAO&8n@^GYhr~tIfP_BrKb{XMWbsHa~IJ?K8ih-@9M#?ED#WPs8rLk$t9f
zM|;7iSu-C!I`VW`mFD&<A^aPs=q;`N+9P@`DP?aVn`!Im-=B_(eqP2m@0wI!(mGGu
zw1*)s7LG+zxGewZJ?&dvw93$al3$CmZM}`>q-vk9tGL@2o0_V{GUQ5qHY|T8l*%1n
zzPB~6GA3p3r71sE4?oi1nP_KmSm<5f=`W8sI<B(1`<I+mG>Z~FT{?T}>^z<l%kv+m
zg&9vh^)2RyK*s+|e;;`~ipqSx@?Ok6hUlr^Zt<5yIyqRLow=>3g5&qhg}Hf87=Pq2
z%-^|DUvt5a5QciyNk^A)TR)bZpq3+au<*7*;$K0{2mkliwe0Ws=&L25p1}M3`TBy>
ze*=9LKN+=@-n$m4X3P7{qt{B)Y@=@`kKy-&T9xsx#~Q<)&%7!wd+L<?=ci|Fue;P-
zxoyQ27d*eB)n@&yb4_1YMJ5|R`j!*%_L5whEtmPM5<Y#+2boh{y1nimpK#-m>&)0q
zcC$X$J8k(|bZ)lT&#coI>J;BZ$(7n4OW71+p8ab>-X6|~R^^w;tR2;ryj3h3o70u=
z2i)BlsZo73%e2?>$Av3<KJiVpxc#g39)C%v;MMS1+!uel9di5R)YfdQ5F7XEN&2Uc
z`6f3%J=ybP58IP_cF)`Up1gF5?mwmVL+XREWw>F=yw~px!>_-7vi-zCz73j3RoIt4
zw>!<S@&khiyXx&j2e_vtU11Q^NO_yTNM+~So!_sjaQq4OV0hxVx4~&qpoU78^MU4$
z=@b8VvDBQKugYwFU{|WS#F{xwwho#N%<m6xn(5@Q*)hAT@axCVrGKrA+TwfPgkPS*
znE&grNh{-#YbF)t+jb<G9X;MAWq8ko^@F_Up)HO=yL>0vyl9xeUN$P+cphJNjh@mj
zkv|d}?`bAx-l*H#RS>Ng!gXni`}N0{!lv&1(&zI|*Sg$t@;BpR)q^HqZ5J->TWYyJ
z@s_pL!JhTUer(oum6`e4@*wk~!kF}lz6T4A9({5){p#+;FE%NPM<u4#^ImCWeV?@V
zsBL4DQ~#C<7GEvj;N6>d-H5KZ@;9^QSqFzK`&xUcTR|}ouclndT6QktM=s;bS97j&
zFIkw)@ys-P$+A`_m(H(0PF$H7aPd&T(4{r6xQ<`l;`g+w$AzQvjnwbINtX*{FEgtw
zUa{jzHt)NKlfP(R3{jsR^e0rM`0lzg9?!q-lO|1<T-qNQlBhki_o29e@z>W3$^Ba0
z4vLI+{2S-LELc^~9(N<-#dcl`^%LS=T3Q?>mltvUVSCzC)S>4sw<(*~V87|EDT*7r
zvs?e1<l+BNv%95P=#<6@2E%5S#<E!HMVtrBTF)<ge}Q?%eomdN2Ckah8}-c%pBep0
zo40FMi4dE!t*XM+M{`Q6UliF}CPsY^t_{0zy(Y+T`}30T1)G;f#<8A%+_&*&kN>o(
zzozqb^gMen$5XxUi0CmhgZjq&u5;`DoN3+td`<Qb>yEoeyf<-suD_nV{-(TD#u|-f
zEYFSI*U#JX)Thqi#QYBjPllvU`NqF}=7p6<j)&<<D1ATJvq914>V$}oQQFa|-f8aL
zha=zA{B}@0IK52ZaIty5=B|lxuV1Z+n3x_R8ELfrN^W_XC(qpPqTgNx{S<M0rBl|r
zrcKG=t=uEl376lUIToK(T32G$^L5@{F6An-nKg#j1gfUo`u1@0y+8Z5t55EGAG!1K
z?71Gw*|BN*2T$<`tVng7@-a8D=b)$l+l$W%xu3NQchz$n?c3}xsM<a0et~yJfOMnl
z&R(U4-_g%D-u3(1{cZmgm$^Sqa~<6_v-ruv>#?mzKJV2sFPmSRAinqhJLkv)Nr{1L
z!d>fU23V}wYWh21(q4hzyZyTlnQMvFG<T;j%U@-alVy>#Ixa#^Lwnleo^mc#OZ^|m
zgm%}&+xpa(U2ZYG@lwuA&Ux1v(dpUk?=KZf%Wm+woDna}BX)B=vx8f;f17Y*^%~Yq
zYCQ?L8=GhDP18JnEB03Ko*?~O@@5HhC%oIXabvl`S*|Ik)^%P=wK{%S@=wP)dsFt)
zmWc*We;$3et^AREweJP4^yn{qMR7*^qINwf{CqUKs=hoX>V##Z@x5@h<FX~z_j-OB
z+m<$}v@5SyJMeD9^{M5)=lK+ueU_cO?BcCe{M%Fn8y_kCa1pBepm#sf;O_Ie@+sFc
zP0psDa8{mCy7$A$rTY67;{Um=H4yP<`j9!%ekliM`RDl$?)N7>yfE$KWyUQGy*yia
zre-XaJ$C+iw*BmL{IB2c4Ak!B{ZPzXbdc36Kc}Jh2YYgS+GPQ$w*`xCHK;B4ceXRg
z?R4IEX(6Fco9hf2?aMlT&r}b2F<Vh9X7k=tiRtfNTe{q|iraVTZbpIkt`AczgZKM9
z-E>{zGFOwii|%dZH++Ul_saZszx-l)=43?jWMP)Rqn8`?jo#nh7MvvCEqgmO`_x3)
z>j9=tuM}ACdVC6hn!TYVB234<^Xu)?>%Mfg-CX|d`5K)wnV-ZWU);SU?-P`;eVM(5
zb$`#zSZ?19iH8IBHqR`XDDgP>)vptku_bdBb#!^Hw)nT)>|)W)xA9y_%RXIv6?*I5
z;SZ5_Z*@E>-z>J>^VilHztdLi+r}v+u5q?7{&DHwS=p0sxhJ#b8M^4nW!^J4syg-T
zd*I9qnG21@C6}J+&5e>WU9*;Zekq^#Wb5TMmo6^!VA{faB+Xcrm9=60kLw3M`ZxTq
z>zUgq&up<zHKdSBMOXCeGkJgWOK-kix*V)1Sw3%0v-AJBCdGQ@vTa37hwkgQC>^Z5
z?YQyBsV@b4t5}?z<Dzy3y-#^*!*<}^juyd}JQisu+!q~?dB<YO_K{_CCBqM{_7{$S
z6!r<os0jSY;XK%|wK3tZo2*Pz%bRuv0m(@bOHSx3ON)1XE#@ycRMqlt{j?S#4FyY;
zziFJ24Of3So(yDXFZ}as;;E<NYd@;;&AnS5rqg^^<J=*8&s(vYMWF{|3k<(lZGG`O
zuG(_vrxYf>1K(B#U)z)O=6O@OM9);kDHis^f_n~snN`Sq{)+rdX}607S6ut&9(*Zk
zQM7~euGO=PO}9*SEp~N<J`LP=^@@>DWVX$`A7wY!e7^E&^T{O(a`>~49t%|B)>$3*
z@oHSx_1f3X-(>bPRzJF0vS?|%)UmyfVrM_dwXFXBPH9*6zt8O&rEarkF^PW@@Z`?D
zHhVo2Z(zuZ?i=E)TOa)mNfu>#61A>>RaS1(osasrO<%dMyFdG})9bJ+oxkfgxMs_~
z6n|xXoH28bu6=;3Qp2JShmD_V_hw9B>C)Vgm887m?*D1ZXXnc-F}idim$yME#pjq{
zLv{L-gZut(aAst?w_Pkt<#XD$a2KVCT^^EC?gUQQXU){lduq}l=R3N$i+(5HTB^78
z@cXmt|EaL-sJ}if^O^Fy&YRIok7mjz?};|I{#kP2#9y7Dj=0S$|1Ugqj=TENX8$v@
z#k;=lm|v9s?@L*yyL0`9a@D;np7%tkoY`_?UApCQn|1DoZMIHm^{KzTYH|I#CxMQ)
zH(q|I{*G~NZ{hl%U*yH*kGcCkIL9B+9lNjL`>ArTYSn_O+^bEk%I<!laqfGfem@Mp
zQMy!pg{6a*OGEtnmz;|(`$|5z>gB63PoU2HX~_f$=O0GrZQpOsSs7rfmi5;7Qdi5}
zfOY2a3t#(HL}aOLd^As`UgMc>DR1bl7Dt8c4b{4_6|r|^Z`(0O#$A*CIeD+A_UTEl
zA5C*I)=GMp*PQphQ#CeYqW;oSffMzNjme*$ai!*^6qgjGCgy@z`AJz^hDH_&1_~gS
zjSZK6NM%8)g1&ERNn%Q3Ng|hiaA{HrSSZ5RhfCilH7~s+L&4C@*qqDGjtgp#jeSKy
zVsdtBi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?QANn
zDsl^QQ%e#RDspr3imfVal@e3(lTxknimgDx`br95B_-LmO2&GIy5<IkN_Jc}MJZ`k
zK`w4kO+_hbwn`Z#B?VUc`sL;2dgaD?`9<mahL)C=`UXb&Mn<|tDQUXJm3bwJ6}oxF
z$}kgLQj3#|G7CyF^YauyCMG83mzLNnDJekBt;j8ao10gx2X>fVa(=FUMPh-zp`L+0
z$e@bc0;`bBlAKgK=fs@Mq@qk4eT0yWKFC}od!TMd62WD2P-c2YNilx=i@<7N&VcB!
za?UTP1WVY3=4I#Qm*;^Ugdu5Dky`*2^i3?vPED~3DJo4xRtptIQs`fvms*6)Scn9Y
z%FyD(^wf~lqTFI^%8_KTgpdLq02dwXP#Cp@q);9Wu8|sCkU}8H#m&w}A6(pnihesp
zjgp#|VyjfHWN!zmuAuczYF-Mcx-v8}fK*%xpo+^aKd(f=#zsNk%|gM@SiwLcNI~Dt
z*iyj+q$o(i&W=kz!apf1H5sDHGuKGL(7*(&4kQ;)l%E`&TA~oGpdaAkrl22^T2Z19
z%VlS$0JF{55Xm-JMQCbh1c^B=eYeb<lGGvveYc#%l2n(}<ouLWq&l+V*4A0R`M1p^
z8s7gCJ>(}OVED*<>+MOU4!ct$uJc%LvDMgiiEFA(c-i#Q{dM}jL0j#To3)Azbc1T*
z_AQa~PRe^1etrK61=p1dN;~R#I9iRkcO24aJ^$PHgV~;b5#G)1M*T@%nHu#yNyj28
zey6*nR7i8D^}Sy-V}(J!-0Nkhw!OBgs{fz$^-<l|%GPF<e+3OQos<qTPUq5WY%bke
z_1liqEa0b>hk$SBhmxEqRuSVV27FJADmGW$eeLqnkHwv3@=m`6maZ2%Up`u9A9hC4
zYiY|okx7|ZY`=?k|1L6Mz9s&@m!~O#QSuS@2hPTMK^LDoo3(qWT~tz5Gf2`aobIth
z!qLm&l&jlHi%C6YGk;uHoTMg{xQ$_A5}&q9X=hH4hpJL%1k*{4MO|OmG>^?-no-nw
za*0sZ%s2Y;4b!v)mwNY1Ruw7qVdu_ZIi;~t^JAM)#<}Xxo$uWyG~MWl>5vH&DVcb{
z;jhS1!$nQH3pM_p+$i~L_L|Brhpjgg{rvCcIB6VeDY?nSX``!Aug1P?60_P&!zuP5
zfi6E178uPen_@oMN%!dC##NHuKb_|;tqQPQtXaR}atQyabepHVshtj<PV51Ok2UKx
zLOVW}Z0P&Zvr@0M&x386d)H5)Nr@64j~uHFPRrJv>2KWiQEhvdrE2ksGh34W%=9y~
zeRjupg8dcEW$aTgcYRFT)@9lJQsgmzX_qDQD+JA(EBe`HOK1;BA@|b~H^b>p?jp_-
zG4kCSZ5mS!lqS4OK9v-kV}FL@*zDU}&!%__h+S^_m~M5jWM=0q!5;f7oXgmKm$N=T
zo5On9JI_d2qJD+&na?+KSs(M4Hd!*iVtLG)%lg@7izrCxv!A6`xSj>Q=twYV%gz@(
zc))q4N5}5=mHqFRoasIDapuZAv+E_tEbcXKIcCY*a=>biS)cu7$>pby<Q%j37mz+j
zZi>J3@!2<}mLFeYeC%Vp)#Evgr4ZWbp}GBB!#?vZrhek5KJ*m+S$NJOR%7n&r8`Be
zO!%6Y6e><L@M}uEczehDeN);OiSo`C>$Tr6dR9}u-!3=mqRxSmMK6s!t#oIxF7Pvn
z)d-us=wte}MK2A1Zpjd9u)6qVf$@1iZil%U=T58>?X}+`diHaGI#_MG!`ckJHokb3
z*Ln%t^eQLXgzzr);1V@hIiZEq!tLMh>0Z^(4!+xUu-)VEufY0MAHMbPKhya2dg;vf
zzLEJCP8#$l$(Sv>+5GO|Yeo0KGaS6E-SS<{nQO|wFOdKIH1?2iwL+Vle%|}Ku8m6f
zcd_1|8oynT@3mKXyo09pL!FwXlev|<9dBwr&zpRxV8*0}>(2019si)!W%*D&RLSOr
z?eV`0oZ5Wn<$hbXLizOn*yq;KrJwR*9w#Pb9y+u;>F$-^zb=~X`kSkxbtchQDS+d}
zn;rkRuUj1(_^kIF-{Xh(CnhCc3)wZPb@rPHu`|oqUTFDTIib6%%=Unc)(pQ~W1YTg
z;rZd5NnM8=?>^a5v!*2dSk-UkQ~@2EFWyx)Uw@^#HqXzF&{@BKYjMYqmckfs6WK@~
zmxdiP?>?$+*Sx&4dCT7g%I{+>Kj<hl7Uo2S>^55eX|3Fs#QfubF23VUf7-rFlTTjz
zbLr&w*L@SGzc?nNz3thY+I@B+U$4ou%&$w?F*hRF`JK;XzR>-1{+I}9teBzob*^&g
z;)zjT6heMaO4eD;lK1>bIiH!V|7yqnCtLe0_^!{N_sUKDL1d;%!NT|@k5?W@^mTlo
z&~Rspf0BBR#BRG~$=B!SzWHUdEM7&1-~QmuWiGk9or7=uH@hLf{>hED6t)!Bm9Z-(
zH~bWxdMM>MXMX;wqQ8C7ZSuz_P2stm{O(;$){Tg)2mh3xPA;Ccq|9$&fz|R(sdJhp
zmgh9D)XomJ;HW&fY)kf*g0sST`|iIE&s^4ewzG4oF;}kc@AJIu8!}SGqY|&5*2~_s
z>CEYOleEq-d|GzKIQEx%)^%C#)j7Mbc3tt{xx8SBTa(8__6v4eTkSXeXO3T6ri-PT
zGB!Y}I3WG2fW-7vE`8_xypq(sl41ozaNQEbr5}`9oL^d$oLa14Xk-bho4E9SQ&Tb%
zo$@ObqCv)(85${=TN=f3=?5ehrRJ3=7#f0vgODpK15*t9pfw*-cg`)pD3?ngM1oyp
z$fX|;;u@jnmYI|4mzbNXpy6hv?^2XmmReM-@9ylZpIcm6te=seo2u`amr|5kuAf|#
zte=-!ZfLBZlAo;a9OP_fqFbDsn3JPdkdmeeH4fxYztY^K)FK6#4W4;v`7W8sB?^Yd
zMi3u5!F^|LX{2Cg2=W~wAW-XeLj^-)aOIA(&er$LO-xU9Qh?CTP}&n*m%}@-MkWSE
zmISNpIcsX8Pph6Ry8HXUpZ32R+<T^e=jO0|k(Atcph*5h^T*2xCuijIT<ZS6&-hxD
zVCdDmm!E%`nU?UY`^<?oYtEe5v8HFu-(Rc$|N8ZM|G(Aszjpus^nLvo^ZL)fZtwrU
zJG}1i>+|+s|C}n_|GT1h?!BdZv(~P!{~vGv|BHV8&(HprSIe{4Pr6(^EqwOl*lVk|
z{L4Ey>E7e7|KH4y`}NxX|DVe*zy9BIVT0VYdG~Ag*4g&Y{B67V!Q<x-ZalsFo@c@O
zU&gb_wawW??^vW&UoU%}aPa8GqWb67?Ob^>wR<k_DBkd(pyt=l<r1%FwlS_tH!ghp
zGgM7fM$PcZ92@nQNgp&TeF8(`jX%v<)UBxY#M1d-!P(=*O?quJ`quAzA%6K`ws`)p
zwVv85JGG~OzG2P$a`nF6?|ZIK-uLSGCh`4-D;_+uP?{?zqs7rT>2viR%RLVsSzM03
zJ=d94+&%yO-v<E)j~14l`}z9V!lv%z_2rcXD-<lU?!B*_@2|hZLW<=jSbWaH`;s2<
zUtjb5iSxI56)oj1vcBqKc&%mgzVpk(V`OsoUvGA16+dnR<?o)g<DNx`fQ;?-@4LVX
zO849bDR7Th`)tl98Y9EMasS)q2Nu5{+|O&O&*~Sljehf`DCOs$<ft$E|37{Gf8N)+
z<!-J~-?aDMo;ZJTNx$B|{E$`uf9xuI{o!vfZ}9fN_TRi?54XI(C13iqJZ}5jfN-Jq
zmcNfC<U~8}?cBC?hPmUq)i*r!c5Y?6;yCHlYH!Ykr5jJFwj7&~=Tv@CWL5TrNeiW!
zU5|0eDJ3ty^;%7_H1u50wEgoQ)kgo_H9O8ZJDc_CzHMO}YBc}f3|szev)<ni^CUBW
zetrLc)mPc{SgorvYLcr<B8^txn{&A4Uj8%b!~e^?e@&hG|L)xTw?6CoWcYA=n`t|1
zVbgw}o}l8rJbho+&1QYRzVh*fj(U&y^L8f3luuqe8@b<Z<*)P6A*ad;Bab(qTl4Yg
z?v&e>Nj>%p)~Cx$J-!)x?d;9--Py){GVgzv2_K*M{#^LnIddO$82)S6H?KCMCwuYi
z;A`f;Y}cFI$}P4${&IUk?Y6YzFau<iO9Gs4w%iWBG^y^y!o^ZmxpP^s-?_v7W4Cox
z*@BCq8moi182{3F&b#8hhIW$0+&-sYXT0_s9{EsL?%ywGVsrUCbE*mFGoQX5O?hjR
z9}e5^<S#7_o1=K_`|sUVWeWvo9ktkdCUuwOI{&TT8#z}d2EVb4<yzo#wx{@rK)nOV
zlWxXImruQ@G`;<8L!)iZog>xBvRRjoJXy~4|L)&Aw~7-CmOWLw^!3HpeR>m1+a|n>
zGEttN+jsx|<<0E9{@eaeF;rPus@P^ypJ=zHzWOrL)n$=|eG(7(U%bBAeyrk7@1a=R
z1^=_{-!;qh6?kxoI;WZ|KU1^KIoS_UaO3*E@6|V|_iq<Ee)avOH#LUG<S$&`%-<)N
z7rFoC|1z8I-Nr9@7XFLA^rR-wtIi?(yq<|uu}HrDJ+8g`Ds&BxRB!)v^UM*3dPrat
zN3)ywXY$mZvo84mS$580nWUVJ*DUqV2|WJ&H`aFd1&*`*+XC}9H(z`EQPb$_>w6C~
zFB>mv%MUhwEMs^CY;o_!nBSe7I8871`ES&!*?eTH!10&Uy%xMZ$ZqN0^O60_*Eh|{
zE;|Ar29!PWJH9!C`{VH>hDS2No9`Q^t6S9c*e?R5iN&oB+<E1zcp4;)V+|)3%e2Nv
z9=OTbC-E2>Du1|3Cj00KG|6AyDY-0hQ*-hu!}rdcAIm^J-}_O=ru{C9A)oPrYZ*nK
zj&5Mt_*Jync)s@E-PKiJK733+#Q)jmvQuEU(`nAl`;W-?J&w}<u~1fj+1(FT-EZs;
z%Wq5G*Joei&M#A6AS&?Vut0<WgNr>g_y69mTsy&z^9`G{Lw5b-%~4`mv@_kA;n5Ch
z^V^?RrEa+Ok)3;E^a?+*F9E^nJ?Xd4vi}ia?X#b<Qqhv3aF?HA)XP8x1|=?;h8cVJ
z@w9FDx^j6J2TNjO(@Obeo#%A!8vI(X`)YesZIXt)^ikfY2_N+K2mbX`+!iV}yW;Dg
zjK92WN3O|kE<Cbe%6i*B+h5yj8Z4Fde7f5IKigsTqrKiQ1g-Z!`?NjVUUOM;taN<!
zr|lAUhEJN7Fvb0j`kil3lVo$GV|%?T&%VIFo)5X2C$6{qX};RtaE3r%#Qr%O@2~l*
zqQ3vnw+Z_L|98IIp4o2YE4F{i<oql3lah0`{xx6nC7NgcldZSr>BiUpGJj<sYqwOf
zG`{xNb_u(SPqWvYd%ODW{(~Pp|J@K=dS}1g=ld)EyZC3;t^S&Sy?zmYvedSl!u#gz
zxWDe7%6+D(k5@;(k^VYA<Ew9Z^;hx!e{X;J8=ZU_&Htb6@ch)?-)xs+d}^-?bJspK
zQQ-SrBDLYqm&wn5{P=6KG_S8;@K$+tj>Cbw63<osAL=cfW#pLG6I?%!ZHb!B(cF)T
z8vU0Wk^|>2XI$=Y=d#VhcPER{F~`#q@mtn>3{}Xk;gY-dW5vsV8;%7&xMtx$m+#6A
zjo*b*1rnzYOFWm}z?y7xNhqRz+VZ#03lDrsj&c0-b8m&;V}*U<M;H%W5Bq)o#runo
z9{2s4z4=(c^S;BuHhCBR3OoG&x9q%{JipKW`H|{%I#c%Ep2^NSt)Nh(hVNm$`{ne>
z{p?BgNu_RQ`xZ`TxXQZQ{or$kzvU*iW<M()e3X3j<#p?X=fZxMT*X$%vCcpI{{F=;
zH=jIi+$O)wtn%L3!r1|Z{KBUEzltmV`se@5`B-@Ta(~}SD<Aa}wJOsbIuAbz{2*EP
zPgYl6*G{hD=f!=U=`1Z9f(84V?*)FawE4Gud(E~V6$>7k1>3L+*v;Lv_+QhO#Se-<
z{I;HDH@n7WL*C^!o5$i@wf`dLm_57}_`!0|Us>PzzIJj8zReU@lIk;=KQp>zUaPPB
z!RH#^AdWt8&D}^M%X&hMOZ$y&$>#$<SbD+qlpMQwa=o}uO_bp8q7+LmyW<P?FMhfC
z<Z<SreY+wJ^R^1*{dvl<Z$DTlpf6A6NpDzF>wbv?-$Ab2arkJs`q#~lyP5wz{k(to
z)5S-RGxMFZ*z?0w;MQXwRZFuYC5s;vfB6m$hK~%@{gdvo*t70$`~0jUSEQ!zZ5<@6
zr&O0J7ktf9wfS~hu%;dy`~lJDuBjAgzW6d@ji%02i3E|FzSB_EJk_VPJ}a>H%nMt5
z*;;hQ6V~~Q*Fj={anrm_e7hfQNdI==;KWNBKV*Xc_JQKLoa3vAVds&;vzI;o?U-;u
z;|Gt?-@a-6Vl{tW%l~`%K5l(<T~1itoBg%Q*3$}a-T(LS`TT#c>}BWuJ?H-G-v|BU
zFRPY*j;}lW@7~Q%w{$dqAC`>Xlyf^pbJPFF`j_f|%wKQ+=ka;_zlY@o+-nS*J}J8;
zWKR@~seAhK|HeN@cmJOlctzflf13B_qZXg!B^`e^eoiQSKk=Y``-kN|uKyc@1N-yl
z#Gi8csq8FaU!Zp;u5Uf>L;soGKbfB|n%l7Ux;|Ub{}Te&Oj~Mt?rgeqe#r)v^xF?B
zMdwPc`|0QY@cBJa&T~mGnSWZG<_eRy4cJ}qN8-}QgzuHDmscIWBvG3)S5!uKUw`p^
ztrd#{d!th9;$G^v|J+j<r?cVKoru{Njmia%yLE4!Y&vm!^#0>fz5%5Zv@X7PI~Y~*
zCU1#F$3)MGJNI@Q_Wzvc<6@q$cJl+CCjrloI;IAAmS)ZIGjY7tF=wuY)z!8Pmifug
zd&9T4uR1!vYK0}+3S-BVXU5`HQmKtr>kC)hTl;X+WQR@LSby2v?zrTcyZF_t1tt%#
zUSr&7US;*sVny3D)6Msv?MclSne+Va%F=YXe?_6^WhDwtA3hH|rg7s-L{;*;_M2h)
zn)VMYl+(}8ZOT;M*z|cyjyK!QWJhUH)^xMprjjk+HEpg0N-eNTIm+dg#yF#U)or$^
zM|AGp+4jPD$<gH{U%H=~WHo=+aZr69xyE^|o#m3WD>5>dUM0!RzPdZ=YexDZzcb18
zYOlB5mbA3|%`o@i4ejjnOj50PZ}`?u*gjJrl5y4Ts0CVW4dySWdB56IvCK8>T4++Z
zgtPt{tNv#uB|fKxR9Zz}=o~omWs|3Fz?w&VMpcv4UZ?qUU$)I+-8#GCc*0jVf8qDr
zeP{GK-MzLf{##31Q_ridt_z?0-aBNzA@*KiLCHZQxlgxt%P-sMnQM6c;PbMO?OxB6
z9o!t3$|@_|yZ2*>@@u!3hD+Q;^Tj?(OpeVB$)1qj#Pj+1lE(|T@$0;L72vujt|(=5
z5VO!qmbg8U1>asD+NrjJF^gw;9b@t7$*h-G`3Dpxze}xfPkFa`!-5FYrJHYjlFL#v
zI<NKYWFLE0_);ai^?w5X?>}HM<KTv$Q3Yl7Q&}}N3<Rz9=D#iV?q0LNXS=Lc^6iMm
z^WPjwpO@TPE$Mnt`tZzZXGgW-W}%I}8S_%vr%G4yTAmlySRlA;0bgs|*WR_ad}IGQ
zwd}}_*9|FNf8&k%8HsIQ)$$GHqgI{LSUEjY_WAcEY%{BN|5<mov`z8y>@(a)6y9HJ
z=s$m8?Yx8|*B-so+fX4Zy?FMbqR%I?);?HQvDf&j8dpS(#qXH&F26c%+FfRqHR_i%
zS>^QH*Z1SZi?%yI`_Il*mzwiovq!ZD%k<l^yV<wa@XML*&nZ*)Q{YQozkR}Sf8`54
z@{wgq72UdTnPhUp&Db<O7rZ>hw|(h?)hV|h1qkm+o3Fd=V_)~#vrHE{kKZVs-Pz2W
zq!)15`ktEO=|=+9@`AGOvpz36TY5(&_|kFz?Rh%WS2SAb7q3uTC2Gk3xk@ZxYOdt-
zHF7sPPrCdJxV$}=F>_z%+sq*8-9l2gHPU4(E=clhyLTjb*-Jm2pG93~R&S5~>R0|O
z*XVR#-NftLeyrdXKe=UZ;AFnZE1qqd7Bb;(V6^kPuzNC}itYtj=C9E0-sAp@KlJSV
zXp1g|^>+^+*peuaTXd_6voT)r@UozjF$Zmg<bxkt_Z^zo{oO`OeeZ(xftLUFoX|Pd
zZnKH&!=1CDh9Aw(o?Z2%FU|ODp-S4~)oHVjYxFEykZJC`qVn*B-M<%3y>dh@_RaI4
zot>;Av-%VR4f?07Shv%t{pIE(3z;f6`(`NFZrE#Bc%o!ULE5{9KG{8L+5G`>UHog`
zZJM|9xDTV-y|zA)oZYQwFKKU2S$i%=>Q&CI*1N_VKimw_*mB}X+Vz+j+Y%i&8(zBZ
zV8wJyKY8zw-Pxs+8+cv1tku+S^*`CQ)?=+m-ikA?+LrM~E6q%sAi6{|Dr8o#SG!lS
zbDNHKbN6(!`^%kmw5|%fvi!EbT{hv7-`VtIE6zn4|4rAb4=VND&T-@D(QP%)E;6iO
zOb(J*)4DQIRmXR!Y-{MT(3Ev<tMd+Ri7;b4e(&kS?9W>+<ZUgCODhh1{7dJnDSOh}
zoJCqI4zBdPdA#-QR9{x<soiOO`YMJT+&45;dADxeF+pOg#o9aD%py0(|9#Zr&~K`B
zx@L!y!=6^geCx}PPZ@DNZS(&mn!8xflXsi$m47T=e7&xTdy+z;4D+Hm<ClJZ{BGsy
zi=n9kD;K27sju|8eA9b{+pMTn7dgMn?ELw!tljJK@<o@^{KF1&%6|BfEB5ltm50SV
z>LoJ_TfGlueYO)`dTB=O+k}hk(-%}6pQ{w+v9_T5MQ|ifj=P1h$dNt!BoFo$Z2w|6
z``@%f+^;Wau<_Kg8K-9jPJ3#ad~<c~m(%6Pi(k6=hh_UmPv_TMmh%7fb;n7y%$~Q5
zq|2B+-D;gDT6;}e{c<I@%1Oyx-`ghH?E1l^dXks9>HD#}R|~Yo*4?kXu+Z$W-);A4
zm5~>IKH6iRH#zu1fcA`(<`p~wQ3ZM~BHdeC540QJbnY>C-Od@OakzlzqEf{hro(G<
z5|U3Ji)iG0rnzC`RbEl^9SNd=_Dp}Ao~8B)9%u@VQ!kmV$SobB9^~*enYFUgaover
z*UN0HIKu>tW1?(sTrj=iEghnix;wwZW5!pzWp&y%c6(%38hv~gc{iv^SU&3h+z%~p
zS*=w+DDbY~VlX<g{?>JNhJ;jsR&V1KZ?e)VSVE(Wr_Y)FB7jResPNvQ3k;iCv|BO~
zCMjuL_>%T=?FBh!pPDlb0by%DPYCb3_E@z<b)NCga~2hw=BnQf{28}RRQjIAWwCI9
zeIJvww!QY9t-k#T>y+cAhtqfHe*fPqmG`fALg_`m^}TE+id>tIE{c1vptXA0=2g+c
zPr25seLg09ZI7kuvyJbsZmwit%BprxiZe10y_)@Mr(4d=V^8-K97yVk7SvlB#Me0`
z_N`r@TI$x_vdv$<Z~v`*b0&B7x|DS{=Soj6pZ)mlnck~67SGjlJoGC31mB7mk&WNN
zwrce4G<*|h_-t7~-{A~XlY+Nb9HRw!xiZAme`_)Mr0rQ3Xqwi{(RHng)9&FC|7$yM
zm`g3_RiCBPBXI89H2%ulmt<Ju_HSDKbknVj{9|R$mgEL#yhxn6@o47P8j)77vY^)@
zTIsWV)=TH@$bJ}8y2Ey>#fAwtLn01o81h85o~dQ@Z>c_df59wHLE|_1Uu|9De3F++
zuHWXcUDmYlQQyu>$sVGsq^9pYrkETtqc}`om-FB$k=rT4od#=zI4AjZ&EsS$6t!es
zo{(9_Hl=#0fAacBM)w4{yE-CPhBtyI=i6`iFUI?%qb^f-jqd8!I+IzeoJwabkKS}J
z{D#3^nFp^k7e5sZXY$|tQ#`(cmucFrN1kg;@2}D03gzbAbgyZlZ}@D{o|%V#Pq^`K
zo6zJlw`}wbCGUvX`W*eBy7Bv(!`JhR&aqnWu6!Hv;;d;$!55qLvGKBJHi<rd*?&fR
zOTDY~OWn!arM&%{!&X$QHm-~<deop?vOd8%j6dp>TkFkKSLfyfj%QNDPE9w|{MY2^
zuKGdH!Ti*fC93*!iZxmn3)D`t-aE^8f67JY2Eo{vS1JswuXo<CC|-H><D&n{?F)AW
zgo^o8`CBD#y1rs|UD&p}3eT2aPyV{hdE?E^0#{$m;Jdd#hkNVML-{j|Xa9fj_LD(G
z?9RA1--J>)%NLvHeH05$mwuP0!DQwoc6izHi`9?Iz3LQ;_48Qruf~e-20lNs{pG5v
zkYA^{#HRG^vW?iV_uh*bsi~fUe?P5w6c-S;eOcPZs5wfR9npeZ_ZdFhY;4L6jA5+q
zihS53xni5fI$`HbtB(a7Jo+B3n<LiFIF%B2nJZNFo{iJQt*$2}Yj(QsHZD1mBD~c-
zW0Tq4jhjnzCnp(~oNH}*wbn6K*8ko9hwCz=P4+zBYw@(zZP)Mbhola+dCtuh`8u)C
zbP>m9?KMt~s{&^~o4a6j)aG^-BLOpa-Ti-$WKB3_$6@II?Y6{z9;F9!69d&%7vD89
z*D!eB(QP%yle=Zfll3P$rl}hnJbI(j>KViGbCvGrQub#DG}bNWXgx1DJN4&1*{e}^
z&jsk7Y?*3c%krwCTbR{l&g3g>tKT+GmAm{Z@x#vh;pL(#CKuzjToUK@5m?n!TdLLP
z`|MzWF=y2m2LtXIE~$ymvyPi5hHD;mlSw)_OR1@3&eaZ87qeY=pX4g5HCN~@>n*i?
zwnso(E@r{0eQv!P)2FQevm^X_P5!M`Y5(be=H0dY|6tq2Nayu&1{^kp(|rZ+xF1@-
zXFI3q*<&|uw;VciwL&8#d=t;z524(w|2X)fUf8|e{c`@wN1r}5e0&@&;O1w}ldL>%
zk3r8Qw$g$GiRQYdm5!?#{2~%1_I&<WDIT9BQO06&aNYZCUzODh<L8~)xY;LT`Gzj9
z1TF!Ia`S3~s<~I@9WE>qDG}?Kc}1rDnWSyBhsm$#2<aeIt20ac7wtZ@#o>+|Ps_(<
zR*&Z=u9WSF$`4s~_HN3ws0Wc+TopXlN6##CP}(GKKI>?mLAl{&&L-(erK{HGNQ!(o
zIJJ4z<-Ln+WY)MgopEwZFHMWL;`K|Jcd<BWs{^-jNArgXfi>rr<wQ5~F23+jXpcnD
z*PDMP1m1~ZJG;wu(OrquU%3r2`_G<t=hU&>v>^EDA(NSI;s(O^Ji}i<%v7(K?YqbQ
zr`?jMp8Aar??hG9E^<Gwo2R*KqE(7e@;np%CcjPljYQW^P;hX_IMDw6rJO?5{d3XE
zdpYhs>9I`wB9rNLVA-{;e6!<P#1!uZ@_m`Wd}{k9&Xpg-nv?t&@SnL7H2ISGGUnRu
zNLRa031U1ao-93-88~lpZo2f&&1#npd}z~mc$#MJoX?^7{qzIQR|~|`LR5>)lfHI7
z?yTH&tLLY~oOG5-_j0d2RoS8C=T1CHo>H}CPB@3syuQay0YRxpq{>UvQVat_6Q?VR
zvvzgo&su!@NT`-jp3&~O$1W!Xq8OisRP_blSg}&1S!2Qmrm{QXFAi+%j4NYLZMEi&
zc;o1=(BZzj_I;^ZnC6<7)A{`B?2KP1&MYZtE$-ZKY+1X}%%;djUh^$Wc4o6qZ4%!z
z`;@Nn`?Uf3Vav9a9y3*L|8ve;@o|<K(_BHJl){W}xkqMfJwJoz=o;fnv*iA_H#u8M
zync#pIQKV}W5tD<<noQBNnfYk3qPmSey8e1!OLW=M;mK@A1cboy2GcM>(6@O>m?Vb
z+DS#<46OD_EZ*z)Q0uz&@0mhz(wBFBxu#vVGB83ly=6sM?Ecexvb)!YE=oB5Z1aMy
z>KX%&tW}eZ=IZG=H^zQ@b!Ppa2B~v4JH^`@UQEw_X&Gz%<=vjydp?MK2v3$Nwp1?K
z8kQQsHs?vWm`>80j*!k(ksLnlJ;5r)2lT5QAF*Z4J{PLB@(o+ynV_pv_r*N>^)O)L
zu4mKrww+h{73VU`i!XM=6R{4#V<Az!@$m;PX$iMYIn;MF`SHOw6W_QQX(lXJdfsVo
z6Yt6T@!c|$5TofQ@<feI?k=%+T$19WclF!6*4>hFcivqM_APBV^}OfhnaS4i$A2r!
z=_EL`d7YWtl^9oHa5=e=-Mwth4C(57R&!d99iQJS=3y{f^nz8&(y15CI2N8;6Ffot
zMTO4s?ZWAMCR$Fsc~@p`dE%uH&rg(_wLT16a3u2U$>c338<%gWN(!5{_TJJK#n}dW
z3l=3WWz{!2|7MzRr>J6D=cPl-KX$}SJL_-#qRZo4%JV6P3xv(&z6a~R6}azmP=CsO
zC*#XAxi6M{yD=y7m*M89cPl4JEYW>l^vqX&He)Y?(OU(@B&)}fR!h2s@2tyRXUMv1
z<@R8vd5bJkUx%_aI30}6*{S_f!ePb=*>=m#JDp-qZoDtZu6ZipSkOkjlvr8uEVF~Z
zW;cc`?G$KHIBLFnzN5$G^m!k6qh`zA3iit7dcCOi)s=^yT7E({9JZp2s@=iwBE-^f
z=3Yu@Sn4XbPPg=1py;QTt*2WYe@yf|-myL{`oLAu=CcpEtt_SHE>`QEW47l)%9D!Q
zuQavu4wh)Cw;1%jFfqK+lXu|CH2)WeR~xQ%vYKt&FUnr?=gDHe9~+dK?7EHDdpI`P
zCZC_We2ta#nteNNwMIUCy|md^DDKh@xgW0t-aQR8D4KS0-L6Y4*~JnQ%kwzR9Nsiv
zySdpYXv(v7g5{i5e4oz-uU;v>i_h{6Ye|pb!=D{4p&nM6OG|hXi*!wd8+QaTd(S&u
z+%l<QyFtUD7c=~pn4dW_VO62kJFmvWOk0{CS2XqcFL&%aa&DgP(dsK<3v8BL{v&WI
zb@SZ)l0moYjxXN!$6ji8?42z)q~8iz+sx<|n{{RvYhqT$>C!p(4273hFl}QEG+3Ul
ze%v$F;>X&w)PJ|z`C4|03Czvcm#@p!lU%3p-1WV4rDpa{l^usf;(B|Ynku)aHXIU}
zoF9<<x?pz3Hid*{ZcC=0Pui@#v^rX|5;t!MP<-&P%2)CI<hVOLXSY@CvHW|Ax2R#K
zqS5qSLiw-G@cS((i<r66MOp3K#E3How6A<JJu`jM4RPM%X=$@k3QwkTA6D#NcOvJ~
z3E$KwfhwZK9+Pz0CqL6QjNW`<*42kM7DflA>htdtTzPQ2XwYe4`I4JSzjD{LT>Dm#
zczwst!+ZxWMZP=JG}kpkEvPEl)27nm@yE{oz%(7B@a6Mk^*9+DTaNlPxkfKps;-)L
zJ~6E{JpN3+?8S*Q8mAju=Q1jW95U9><~g_Xy|YN(Ud!r#M(0+uByd>r%TGMF#w6j4
zSLsS|K3|pFg6}HN{!%^OvvlT#H9keD#*gPupEUDm^v?x{j$0kAT=yozQ{iGn=FL|B
z^I3;>ZAm&%CAjd<oM(I2hwq(|(XaWy$UoKm^$f?!`;umUpSwDy>E@pQa@Mn6M^2q_
zW*%4N>J+Wr0{Xd)WhX6c)o<VD*;pemb*_fy1iwpKS7cUcZ#VG09sGO!#aAX~vV|gA
zX?g#b9lz}JUZOtc)5$+cJEd9P$+8A%7xjJGI(bR@him#j1#h^W3SDKlzctO>>Gq3F
zUg=s-%UX84KH<demF1=PbKaqb+J5nKPiwTxXIf`xFs+Vew!HZwaG_Rk=Cw~Q&u#CV
z3-M1gOWJfT<dUBps|Mp4yQ5sYHk4`Z-?eAnwwrHDlRW0X;oSczGMMkyfx}ajy5_#!
zd3&8%#hg7Q|5_rv3(rkjdg7gu{-ZVC$Nhgzmdeta7`fW6*7brm|I~1q#*?lw3%RGP
zFk2!dGUILbc6EFIs~2y3t=l+RsaW=w=e4Alq6G!dgT84UbzscmTe`yMfbYF)$`X-#
zBDemLakV-yH!@52^UCl&vga?FinfYXpUPYyf8EmX)3;KFJz-B+692XDnbX-CELXf&
zrR&|IJu;<dRKvM0?6Og+3Rc@VTcSheuC9CWu1H%}A2H{<d;YxE?a2G-_#})=cXLzO
zr;PJrwd&t1McH%bEdBI|i7g~qQeNoKX><O+dH3Tr&TQH#`)ljl-Q_RTb7uJ6{(EGn
zhT{D6Ncs8SKOS8fui3p%HRw-$>cKT~zZ!+4xSS4F9Lrkdusmq)RjYRi-u5l4&gmQ}
zxtATjb9+jFgsgHbgUCaRtu>n4+17|UWo;1N-|Tw)xI((L>(hyXOm+cBHt$H$P`DeQ
z?XtQ&z*+aP<Kv5k;ziRuQ{Ar~xijl<yjy5vVouZzW8tlV3N_u$XIkon*r#%O|C|$k
zeu5nzqefChtFJJlzLv0vK*OrfrHiBX8gH*SD3bB{t>r9B-e$jA&AHFRJ>_R;R{m~1
zv*^B<@SA7q4>cI>zAZmHtyw8|qEL!c;>pv-s@gLrPmuooboEK&-etzT+7Y+89X?wA
zU^H`kf33JUZNG0{l-<&NfhTj$-H<Tx{}y~RXXD&=m7iAdvo1Ng`h!m4j=J;3*6a1k
z(?YeU+$vvnq+qYZRj+LiHMk}xWb98mHGSX1UM4mV=FJhyvdsfpG`39KWYG5YSx>mu
zzMCE!pWZoldrIEvbtyh#*Eem>J0A7z;lvq%yJpS3vAO76@t#AA#B?REGFg25#uEN~
znrPdZy;Jmfnr_`(Vx7<K8C8DI$zz*u2zP9umv6hVx#C6Mt7|KtaAf@m-YD9}canR*
zO4OqQ@BMk<D*Fz&IC5?|y`ZSfYn4B{&*WJfpIC1e*tc=+&Q}S&t1hn33(n?}d2@QE
z_3u|}u1(zi_rvYOJQo~ps<VCnmU`5jT{7pRGsA){uT*v%`{EOzF!5x0-0!>lt!#Z=
z_Iy+bK0LMYR!f}LJel1!+q9F6rE-*~^aeS+ux6d4n%b9S*`sk}^PA-#UMU2b#x7bN
z6#n4F)LXXG3v>dSvbKa~l^?jeZ11<*mJ%ywZ*FugbZoZ0Hnn@1{Hje&k7jUlXwG%?
z((=p~VNJd>^DNuXw^N=SJ3G%L_HyXF(?N%&rpjq;VGD|TBfCjE<g(|~g)Opca?|B(
zPTpDbZjsRnH-~E8^mQy-#Iv~1YkjP``LSvqSEQrb`;_oq>Z)D`ESyzDTwXugo^+-7
z)0L+iHt<-aba}~0_(VC)_4bK6DV8o~9=-2D(A^p4y4Ar~gx$6ntNEJlVNsY=pdfMO
znZ(r;9j(WEJwk8&mHnVPqcn5brSOM|&kyZv4CI<{S2L?eOY8pny(hDSgE@Zd?YB-~
zmHK#U#kCG`Yq4uv=9If6FFw(gna#KF+=uU*gzkQd<rQj4I_N$9#ozOes_HjVTZ~s!
ze=1@t6|D)HxyjozI`N!T{tf5&eI>8&PJKR$>C6UW$=fq!^-e4AReGy&!T4U9K|)^2
zyd}S$?pt>{G-QJ5PAePMl!{!D!qp2k@A6cr_cHSv=-yMgX#ZHZ=1s!Z1=}uqtepSm
zOmA#r)As#w$(N7qTye2D`Ml^>t}M&A)cAJ^p-DfcFeRT-&)vb5;j624q1Argl%_?$
zuGOt{nk1OmxQOe1%08Y8+ZQjpZT|Sw75%AhSGH)gYAjlIaK)RhSyA=Bw}*b2y!E@?
zzMffWbJ#zLbFX!X*tzyh$c>KoJdKO~J@MNXd?{dSc&eJ}^C{UYjwr-&9ojMFu+aXl
z<wwjif&^^RP50I=UhyQKb>`JwM=r!)EWA{x&o#qr+s)!@jPF%MGo6$Ce6kEf-~KG&
zd}KelXmUwX*s??KS<182{O=fVb=PYVy**PpTHG%+^-80-kJl^ZBY`KDTv>kT_Wbg$
z^@rbVT~sZf6KgZ^d|#!*gmAwdM?Lga)12xm_PQQRG1>pI>YkKHCzI37%$nJZzBU4X
zqylHlzm#4Y)0Plw*O1$K(PpaSc@M9+)92=Fn*VdU<L!e!wu`3}9y=VXJ>!&n%GZEz
zQR+*-Y<YCXYqwH<`r8M|QqiYs_@k~i?moKUM9*|rEAdO5ZN}kx{YM!WA3G!#6vePN
z{@Y{so0Fm&dsQ?x3n*9L``C3XL`!YAv$({H0yg2SncEoCetIrj+I!)?v`dT9qa4AS
z9-#yQj)yMFR-r-1Q?|a_uYWExZH42Tod)ULomR6X9v%5P>++8|LSZeZEQ%*h{p=if
z_uyC0D>H?i$^u^BE1K$loT+Y>(21_}?Pb?LIh)TcSSniWCQ`m^zVP=Ov+hPGKYn!N
z)7L9YxNO+;#f?|~2^T$azMpr+AG`a_m*)ofuhQ?nrMO7^?#9qBn<mMN=?V3}NL|WN
z@p<npo*!4wAC*4Xz3!b>MdZoNPeu1cII`$#yS{kDsUo;b<DmOSZhM1g8@ZEjMZYl;
zJ!4dMF>y=Mbjb}pdo)vRHKS(!I&;hQY4wLkkyi!xKKNX;{lQWGe}a2_VxJ^`Fxssy
zrcv?m`U{(iovY5iG=3$x$46FJxnibmQK{Ant9J*v4^G^$BGy2dW#jMfyF_-M*>NSq
zZsECYqPuSdJhv^Ix$8>DjiVhL25Fydf?wJ(Mar#_2z@st@6}1uFs?~X(_gOadbOis
zM@y~6pXzx+Uj)^)m%Vb6F*|R)^h7F;9H()S<l*xx69Z=)sCLzB?wh3~u3Bzfv{B@8
zU4IOla)qm2^NQU{(+zDU0-qR7S$_D0t2v{{PJybuu6oYpr4l<I1kaY+S>cuJqIaq}
z^oh|kUHi)`YWriR6s|dux~3z#ZBci2q0!}ON_i7+mmJmoG)H7t%#{h@q3<uAexm+R
zWbcPbE8O)bm)~0V;i&NwiG4oHmKxLq-uo)L&&TZ{SA5#DApdff>wDVucX==T;5xIc
zC$8lFldib5j}Dm|cEw%fzI-xIvGdX*(S0AB8@b|pB<6qY>xk<Js{FF(wMqCFrz58q
zi>L0;tV%R{pj&k@R@P1b&z?o?`hKoI4*4tHJ2ZW#t;58`=#%!56EZaZ2v0L%{VBL#
zN7m-z+=!F9*Qee6arw~n+sBt>H+IB4^j_PnB>M2QTG-WT`;;Ta_A?yndEI~h_Yb9-
zjq%(;Qf1ftBR?41G0!($(P_@};j`Ku*~QwXQmn$P-TSp#oSX8vlS0%2=a_G1*gv@>
z@aMfr;w<^HkG;RKc(UttH6>kEOPf3K#pziKZhMEX(z4Gr{ot#mT$0+gz>q8CY`nqE
zKwhuXs(^=oc}r!=51p{CtncC2EXwn#>`K|)N00c6Hne#i%!uWf{bcQv*k8V)`?~!t
zKOZx$_wLf1$;=?Pf>DcIUvG_q_glAz?u&P<Z;wB`|7+;i%epGROgk3ortM$G5XT}V
z;57G1+TVTNH}@<$`~FWw<D^^X-M0AqZ@Sg9C2-B-r{UTfYtE&FeJK7mFYr|T^QYD#
z7P&2cTXiPfK2s#?J^k5Qhj{gMD`HPE#xIysdVUX!_66T1=hp2C+AFPj?d05>g~FMW
zBIjqu)$~1ca<8#or<ogCe4;w`$~DzH)s3qpL!Xv?-E-eC-#2pa<9$5BoN^0VK8Xjg
z{471Q@o}7=@_M_=7c5`Sy}8@U?#AWfCidM@R$UK@v>GdpZ79jJiQIeRbJBUQ@7LD6
zb~v)CL@VOwv(q0R#>@?tKXq!&x|W)=t@lpb-(0%j?!JHDFD+FP@bBW2-27=x!V5Mb
zcg339k5-&rAMaaU_r~4SYHQ%6Zx_Yawf(QCne^k+ceP0_)^(@WcKm2v6FOCL>)JaJ
zw?D-l>HaX={>HQ&4$b>_PM@*I_)pn3QJ=EV$hYQuZhT()KXc{>>rk$nTscnb`h0wU
zzZ9xXWP7(V(Dj}EwF_KQ(^oADODZ*!){wKlnsD`^z1C9KQ*5d}ZIW?6p7P8!`rK|R
z6K~;CIH5VPLG;Blk-F>aEfSjMuRFb`>_w++*oByI$%o<gKeSB?wOQ7jv@c7uubDNY
z(nulqN35#s%<RsB{O))!<IP)VIa|1yHkno0oq7C?RYc49u{dL6UrxN=-P@bvzj*A5
zZuRDJdwDOel=1F7{lp_3OL!NTB)mx5{`t=8N9@Ianw|edI@ji;gl}iy+AWn;dSi>&
ziZd-a;&!#N8$P!e&Z=i!yh-zNP1u*&l1*X%viy4=TwCENzRKlzbo-S*nr=&ve!j}G
ziAVC+!@4_9__u0y_wT=?){$!Qx<H4;{^2qmTY*#m^Y-!0tnj(aZ~DrNp?t}{6-INy
zRld*JbShovo7Y2uBU_n5Uw3CN+E)Jg^wTvT?=i2~v4+9F^WIwSlo+YQ`6g@2W8xSV
zhI8Iqv&H>a*`b9B-?f959NxLQX}VUcb%Un(*HTaY^~U-&Go1FfFYD%CFvVEXwwx`Y
zJ8yBY%;t4B&PZ&I^8b5kY2K=d3v622SFVn2wtYF-bnYInC+|(4IX&MN^L*_SM!%g(
zZB@Ekf|xW|ja!O-$@Ys_-MM^;eTnydhX?0d%Gmg8cZa;1t@l*z{sfVn>_Zl&W<|+H
zchgFfn`ExIexJ{G!`NrWy4(%g*VOFX?yveXQ{rRh!eeutRWDvQ{kQ6kib&3O=3CaA
zf61uDmU2y9_IhJ>`_v;B*`Eb)+FSa}_Y3KIzw~BI=&Mgx^AtZFlKQ=M)7-kZpJu+e
zJG0!UcjfzIt9=Y6PfR`WN9xZErT2Oz|K{CT6eYbu@l;dFy;Y(-aci@-gzXXv&731u
zsxUcZZGurUhy7YT4~f;EH=NE}U8>K$GJpRjhvz?kEVZsJTYmGj#M1j4C;U5M#rEiZ
zVd~t~pO5Dje_Cd}X8yiYlOx{F^!*ch(D%;S@^{yEDfHcZ|E&M$c?Y5P)e8kn)~_hI
z|LTCw+3eHT%RijjIyrRh9-V6|y}$5ou3EeAj_JRu_3<Xt?<=o233)kXvbL!2;|R}_
zhtDpw-;`GwJgM!`{KCEQK_v|59gat>dG<1L-E|eU`3e7vH0#w0PamBaa543UV#r)s
z)xUG@c*k3|`dqNjc*s}Cki58T)2$;m#;fN3Q%$o7t}^`<`OD$NqxI8O@3NkGH$`*q
z%HV0GxpJ36?und<*_&*6zIW@F)#-J%tr1PJ6={wpuKNpCzPGxy{`4n?WF<=xk%{8V
zBJXqY^z4}7o8c9@XhP1xuL|FmoIg3kW$LT_P78O$S;|e`|2w)QuXQuWA13vgPp?dU
z74Kx`9d2UDpxhgEMl0%-r2L<GlbQ9rWM<{u=nhWGZTu+xG)`#d*G|RG(!9DuSH3!5
zIbHhXR@?#=m0-hPMNy0Q%UzjL6qP3^z~Qp>r&{F9-F4LhtXEv-+HSta;}Dis$X&YY
z&jlI#r@LeP9ou#P*X8A%i^-m`P-fx7XBtMLNBZVT2L1AnJ<aF1+i!o)tBt3>=u6)+
zdh+sqVu4rb>6x<gw(mc_`2Io1j8fx`PWP;T2QWVTaWbCy?3t%=Umee8tUWFMEArE;
z4BHhC1NI)*ShCW&>q6DP7t4bhy*|8>>iv0pru;I~E%P?=H&#8LlT#IGt@QOmaA9xn
ztd~n?TW-)`JR-f+XQ`-_&jFj>$;V!aw7c2JEc5EMUiEtMV=?}zSM+~Ho!PyG>F*}i
z`afc<UM5v{Io-Bg4y-CQ+syoR0mq|cnOzr6obG(#wrE~`*+!OQ(yDxR|MH1O%6c(-
z4VAiYEa2K$)^EF8{i{hBceeR-)9($}7eBrzlW(5I)pdS}g<8G+-D52^&9}<4glEk^
zJJVdAhxfn^E(QCJR}1VaN>AtP`?>g2mF?v<Gd-u<v<R#(nt$fOvxn@0OYdk-|G4nI
z%jfS~eJ{VdeYLW}ap|?wS03rtK2i+XrJQr&2M6!UKTjtF?~Z4CaeKz!x6dVCH|X3o
z_`Q<<zhzpy_W2Cv&D-aDedpga;qk@e(`VG)=9{4RtA@9*$1Wmqirul2Yscz1?OrA^
zr!GET?%<<V{VBaXaPEWp;<Vb9wV%VEa$j86b^Jke*jekmf}b4R(ur?h%rvdtx3cQR
z;`9A{cY4<LDqdY6evw13@6kh_<Ym_O9%0g(8-A`eTHI2Y&C@eEA|U#C`=Ww1sUn~J
zx{j}1`#EJ{!L1c6YzwLvYq=kMd;Q1Ur;W2)-53j$?JkvME`GIPtC_5*iQRUAw+F8>
zEoL%g(GSjIU$kY_dD&0VfuZyLo;?3^V9uk-QR!QyJ}-T9rnLEysqjxz-M!4_=1%4|
zJW?xe$9ik&)-El3u>6dJV5YHf&`;NiGiB7W{=BiiShx7g@9w$%ijUsR30C<0==6k5
zFBYYm&#(&3u(ZpLHT3@Vp?R+O)<+VLKm809*>KWYuY7?hfAo{`ZI2dqzMK^HxB14h
z)aa|RyskWJf4TBATSa~K*!(o&^Xc@=Ao0MrGi!fX?-E=clyN3M$8_D&36&?mYAR-Z
z7ks6CMXYU`)cZw-9I?*l6f~alhz0C=cmDVPuz;cpueV<MHx%D*wi3HOOFcWeTPgZ1
z$G@|AZeO&IgwIj2+CFiUd=*bbuk>!AJpPC2Vsirj@86>Ra_3WzRn^{q<=<U$I~2kv
zICEz%=Y$D28p=DSI<6HvudvnO@AsX8&*!YzRd?gAZpzD_-KW;<iL^XobEQV}LZU{G
z$evSkJQf%%;hp2$BU>JMGHAm+o#O%0?xznO5X|_#(dAIbzda`>aEbFt@#xqrTC>Ew
z&F@2_bJ~mIk^_oL=eFE$-@IfO-wt&vsrOQ%S)Y}EPMm6IGq<uxC1b95TxyZ6)TbF!
z#6PAo8eWdqi<+L85dPe>OXR~di;j0^Uc|=p9F`K6mGwUMXt}h&>&90z8h<4D?Q-eR
zJ>AXVJ@fk61-^PIae1rL&%L$bFA2Y6CGaIart=*8T@L?+RX@rm34JM&=RMJQ`O_)g
z&KFV@nwf!<W-Q%PdC<_{s&<T|=bi_jI_KW?dMUB#6no|}73=Mv9yBV>@NVp=<ekpb
zyP$S+&!jmsCM8wX9bI|#bpE2)<QJ1?ekxcv({tUY1v83_x@=~AJGx<pj)3)s4?2&P
zHd%@Cd!9Mi6TACr>+zcxwz?Xh%sRYU_Qu0Uox9)XRvR{^%wu!l%b5DsM?ySoz2BFf
z$2E+Bmqg0BjGH1~T0|(E`2BB}=E^#$9rLc3A9I|g@T^XM(VX3n9Hn9>XZxhF#GE^M
zHamg&#D71Rw!<gQ6!>I<?%Xj5_0Qyfc1=aiV%eW<BDSB79CUuPN_oe}Lgus5by9s3
z%_BInx@P>B(UhGm-mGc(UDmVuj%xO~wI8mwJ!4#^bcW%4^O?=L-Ew8tca53DuAY7%
zo_N?LAk}Hfbc-gpuN9N#xfip$2n*kFYu{N?TTtFF=X13yCio}AtkpX{`UFUZ1lK3Y
zFdRI3bCt}7w_hdtE6zMHXS4s&V7B*>p>0A(Y^}IJ)e5d0P1RJH<mjON7X^~NMOoBl
zSudP^E%;_S(=y2|$$X#O`p*~DyjLx}H^Z7c;>;eNWegp>yML{#vQ(_*+cR(8_rou&
zZoXu+;kjgKbo~{hLGdXW-_m)9{EyCJYUBSd8^!2<QfpzI^Yl4peV$B=e%xo0#W@}R
z?TiUdaIac#-l3K8c0ywWPt%fHTB30`qE(q&kC!nWdAIwCszQZ(vHRyk>un}KQ{y@O
z`B+Zo)u+=ZzKBunFwFaP=zBrFblhI!H=Qr`ym<1j^}7h8A@_?Wztijtx}M*6Psy%U
z6#f>oVdCAQo6}@;w=~JHdp>9A3|}_yH-ov%tq@)z4er;R!a=Nc4u*cIbKY=XJf`)e
zETnklRVRhX3&TP*cW6w=le_KRy22`K!qdek6mKo{63toGIBor*Kc3re`LM=WO<D5n
z)Y7YAwhbFKPVC$HCT)-Xn$iUi-^oNC;1f^Us$XB55Man7aQ<4_uhPz2Cz!wQ$m7sE
z#UAVx&~oRvf#071sgiin_aD3-Tw7pm=$(0CZ_nh$3-6v?_;u&;gy}o#HQS0@6IiCd
z;oG<_<b~f6X3<?j$DLaHQa135T1~bHZhg1zj9g*foluLy>nFrxt`(n}x<f^;!|2TP
zOQ#*5t#tWrv~bgA!<`a^7s3u$Onq@qOLD2p_pTkhJMX@?xX0GvRa|#f_U7&RbDe*_
z5Eb^(-Br%HrfuR>*@r46QyXT@o$bZcDs^{u$lpS@hlxJ|7F%b%3&{JXX8z4#%eh&l
zOWoSJmtJ|{v0A@$`{q?{D=+RnS)QG^<{L}KucfQ5MSjq``l8PE>gT$Z+orC_X}uBD
zn^(RgZ^4DYPN(DSTVB15%PLtNa8E_&#Gabf7kLv81uT}H?C;o{=Un%4@2_>27TspB
z^48tO`|{XN#^7_G3O~>6<jpFXeJbIoaF$O8tM9I}%MaaFQ;VNf(wr_j^|_g8ywkrc
zOQKV+bZySMQhWWtYv;*%Q|+hEDlziiuJ*UCU~|ZoCAaHdU0l1UvUqdC^o4SFA28Rv
zzL=~1GBEGF9`6SqkCoGoT-N-vHU0ITuP?Sut?j5PxqYg@^x~dVk8KzHUFg1Dx3|`)
z$o<u?gj2j<-d|fR{W{sXIL}i+{y@#Di@YzpR=RC(Uh8MNYwo8_@vp4Cdh^^fzXU0E
z|Ck@$n^$h4UpH;xp1t-9SF7dtn_30uPZx`|+!x&aZe7nA@d-A(Ix^l7{~H(#PO=;P
z@olY(?akXRReNaq%do}g`>M8Xmy&&A+O<kzxxbt4%RkfS_kY|fHFu`A?#<o>{Th?x
z_#bI0>`_{9VQZejqcA-e>3i{Pb6>XIU#>dec!KxYDFrDB%u;4XiaeqoyM6_U7WQAc
zcq*Rr>IGX)F4r?zIi6+vJ~*Cd-za>>KT~rryU2`_%lLGHdyhBg@Cs#QYH**p5gywc
z8@<i1&svzvH_^wbmfhj}u|E+%rWmYWrKy@}!=aNflOf%uZ};4QI%}_|vtD^0ZC;Q*
z?IpADEY4OwxvQs`7F|B;rpWBv!^l_Z#4f<5H0`#48joL>dC8x5F>+SYOx?0#qNmuc
z`Q!35xSSi;@g7Y!=@hQ9=CIr^5%;@K|K66#J<s>pWL{0EN^Z&Kvv|F9@6jukS5pO+
zPyKD}c`)IW(|n$68J^OQYpkrrcs*twF<roU*7IwwLEw>H#>`Sm226{xnEF05&zaX`
zE>=?{v1g&k|5HIC{4%?`W*B`kv)=J!tAdxWXYZN=Zc{nB=T{0HI(VeO?&*TVE=BWN
zr!r?Po?_O`YTFhQBHlA+-n#5&&F;&eCOiD|oqWt`m$*Os<3^^`Oov0==QeaoiC0VS
zn4#D|@71H0T?*gk8iexlm>%E!Ibrr{<KAHA;*=-HkIa$k&3twHg86yIplz2<9OdxP
zS6@*vp+LdGU^8c~!-jc*YmW$c`hWIvx{wzuQQ;_hZI%9knZ0~#Bdz^cT;I`mZthv{
z*<WAyhz9Y_kq<9EA$*9Ff9H~e&X)X~``$4;dS`M+c75-=4QbDgEAQRJ?0a;dk<v=5
z;HP3YQZ03B*wrU*HI*<rQ1V)!l+9a2=|Rz&qAT{%(^no0oBdtL$o_4u&VdWB`p)fE
zo|NR|=k4Pl8~-ry>K6y&(sj%(PN4-=iN$wrJ_s>0`tyK|U(KSddcm>7)>1EcmiawW
zzSg8Qt#q-C?V?-Ehj#KPCYH<Azfv`G;ug%^n)tW4BI-Tgt73`GGxk>r#W(9F+zZ|x
zak17we*JR29D~*C(m%vG<tPWa=9>Duo=G_5XTm;Z*^HnAs{C^bPKU9JyvW)7;-cz2
z(VPOC9R?rRHVaOF*=)Qp=)sDVj#QrN13eL3Z!bz3{cgE_uW_QVQO%zllA>9cHcOiQ
z|Fik>uRT{c%PzcISfK9IUmtMnV7o|h`@*aZjmDN$0UMpA%dYpyJSkE#v-UXWCH!}1
zh+c2T(-@w@?&gAkeFiF5Z)h!<^i{3D`K*@&?{dKylf^%0yt#9FV_|;lch%y94Lt$e
z><1cm@6zj;BE2*8{@TUs%Xtr<<9UDDm~ngYpBx9_cy+P1D}sh?KD*xW@|+FZB0sb8
z*#cLQhi=a*t~7CX1omw?=(eluORU5Xr{}z7AzL4G9Z%W2yP);1x9MHI4SVm%-OY64
zIQZ}pW253yW45cOzTd8l4GZl%y?;5!9JNB1t6Bg4R{QMdzZhC4``1-%7Vmy3AJ$Jl
z?k&&VT;<Kh#rRcONL)az{>oR8vsTmhSR}n-H<hb7VQtf=YsJ3I?m|I@n<lHuZQskC
z^)vGQv_JF4#V%0o3G4duUqOz0?d<Z+jW<?)xR?;j5Oti-OGxpbor2isg-<^$$l~n!
z#G|(F>z%B-8+GMHo-J`zy0|B;p@_e~r|VEh=<a37`VnW=espM#Gu-9CE@)_ThNH)$
z-qTef-ToevWDt+aza!W67Gz%8vTFBxr%dJ((@gaEHNEC842v!^yLsA4vFXi;08YMT
zv)pf*eA|0^E9;S2Q#AL_(26g+IIH{Dzu-^TyH&pi{h77tK!Dh8U+di`?S#V=g3cL8
zs`^gmuB_Gh+ADI_^NQ2f??R4?pZ0KXe%7qjyOiDY&@pzGcA>AST77%&>0CA4xN}`k
z$f8qvy^mTKN-!L{YaJy1Y1`?A?T?J+x@bf@t6O--)LpzZy|?5MyUTw5N0$|iuQjBV
z%`ReCzi#TH^-Oji`?&s8%-Z?7nWt@KW9yRqqbj~>90d<urKV1DdlJ9-uEl?k=H1)9
z*xv2&yIhjg($E(&rTt&|Obe?8t>VnfHw$<?P1Y)zu+VM!)Vpu?*v(-5!2fxdNc;7m
z+k*TRI@h!r^vxGHys%^L{kli%;3MgoY*!>6d2?(#7+jl}T<dSwW+fUgAds^{YWmHc
zlXsueJj5sd>8+*KGB?4O6BZplR$*4*FQIWR%)?UrZ-V?})5uSKJX+P$ytsqBs$E)-
zJFI&YmDpzguVDX)a}(H=4fFo2z3`SLLT~b_nasXg{6`a;)-yL5gxr{C@~uZJ((1qz
z!zIPf;@)+2t3F=Zw7`1yOfj)3ZK9jkc(6I!eU31hI%Aeiz|@az%l&UoG5=w5!@z-0
z+$U=BiG|ANjGud)IQr0V=I?clkp;4A+ZnkRB(3TWzA~Xqecmha&3Q+s`?;0!>9Uke
zsAQTjf$^&tla+~<82g!qV{B}d7eY9m%`{!$W_YmYB+vY%#wq<gDWz&(uB}=r#cxq$
zv_JUZM8$;pk)<nR<}QE0^5$mwHH$Z=lh_Xak+Zn_pqx2rq1MM6!KK<3o-8RzcUlwE
z&NjZ>r*`aa$MG|d>!&Xbh!@+)<@X~(GC5uLXKkmPOx1??9Sc_E_T{8;8gAMA>rmC6
zo2O2kyS_N{>e9!%4|2+goQPmQet*XInKd5_Lp={L$+ML)CD~;vURc?4x%euR^48*a
zY|PfL?N;x*d`vUq`$?HqMPGNE_hC)GX;XMiyw&)})L`X`U56%H`Mpa?5zsS#cS>Vn
zcj)s%#Rv`Ujcha7CLelJGWEeM8Lio${TE03t(L41{A8T6$aufH{gm)0JWIE~+Wn62
zucd!w)UV^dQ5O!+RcwATHJc+QczZ^c-!9iJ6Xt2!FASa=nYHHOsob{GPa#Q?5?iWx
zerMg_K7M?uX5<YyFDW7Buob7XUH+>cpPS5Tw|?SwuV<<=6aN|;ELl^k_~!7MN8fBY
zqzhl#toPrg6FGmL_(`w7E$nr_-R7>Ha6{zGcAg`Lq+d%OE?rd;{=;kjQ4b%ZW9ct@
zVid}E+DE7}{}L}O$US*Xb&2w(<g<J4%-;I!dx@`I;=-2~Lgj_rN|P^d|KYQ#*M^n*
zw81aolZwj>^mXnOp5MXmIlc6;&r%0-lgnqz8SKmU{914=A!^g+#N>yM)~(;YPrt3v
zF0z?>ssmS3z~hjmXBNIO<#=SHVfKRErTFCQd0eLsGhEX)pSrkd=fU^EQg$aw`QL9k
zd`UxG#BBL1>D|9pg&5D0UE_Sh@p*_{$KrEe^79_-pD<h1{Lcl(Jy&I{-rGi<oW@@M
zzp&<Hoz^AO+6i@sn0L+JqtB>(IZP{6C@H$A^X)1wmTx(+>#Idns!q%=RJ`8uV8y3@
z3r^11z4hfK8U7hF>R2vE9~GZ0?z;E()=H;GjE5WV9nn>2{(REYL8E$wKC_9Tkgb0e
zQ*WH6Z|wSo?4NHPm1exf^Gqgb?fX@WG9Q{G9^3nhG5=+?;(D*8I~WaSOpXuXl)k=s
zb+nV$&WbD3&&_Nr3^fy4AM`-x>da3sGH$Nv=$<GL8z!|sQ)|hWu4kGjA4fQ?`A~Z$
zyl|><v@hcf&OLeCCpCy_^fgMPD|F<pJLjy=eqge1!VB@rpYNA+$Ny-UI7dJ}Vrn|G
ztPV?F5Z6BWIqC62YRgRaa6P;<@yVeB(tgssCEazZS9Z&KEVrJlJ7?(%Z!Vi&KF!w8
zFC&t6XUM#or`opYzk6`{;oCneIf~DQbTJy7{jGQCu%x<wdqmWaxhf^|<g|VMwrm%E
zbU^d=OYzEAk*SAy+xM)rlDo6<6Qh$EFVo7R6VeJ5(_S14opfyLrkS2n-x-b+ocopO
zR$R61(#}Ut@nJe^3T6Fda?`aZi<SL3)pq^Ziu|OgAChw?R#m81a&*+GoSV3NkGss-
zr#h1yT9Y^F|8>50B5hh^jIpA${p%cWK3&G0HL*eo2Fq8jza0E5#n{=4H{a;-lQoUv
zi!DFy_PKO}@xs*S@3<!>3%1L87M=a_pyB2|2W>r*_yufJj0$qq9?hS4#;oztVf)Mr
z{rg{aJ>m}+v9Pv}37lZ{y3BRvn)OMNoU;740=O)Gq}TO*oT`0l&h$fWRYo-*8#oW%
z-%)I|MgMZ7%7lQrcT2<_?k#Ir@cC{<_qsn<ude8xd;XgF$#aPd?4Fg~f4q-B(MjTl
zMYEo1UWr`7##)2>@pcWW-~L89F}N{ZX8rh-bMNop^^Cn=84qSyyq<1#{8LUI&taPe
zgA2B6x$Q;W%N9s1RbS-Y(J1@l0pm-7ZzmhX_Pr=^;JIt@YEQzg9$CpPUh2Ny9Mc|$
z&6PdYaAED;3-0#=H$MoN<MPu&#YLI9;6%Yq_I1sn`=@MO{V_)FsLle85Ics=62C9?
zCoOAZZt^$$wp4!OUfEj7OCOe5Fy0h8a;~Q^;q#J5(#-t-d`h43zs-3YQoFV#!jIul
zp-qA%<N1XL+V@ZIYc*Z<!NKmp>cStPp?d36oV<OEtc~BEJeub8uSH>^t^9_WzjpAg
zX!5J8S@Sc6?Z9*98ok#qSsuM{UzuN#@_XeJ?-w;1w-Q5DiytZ<Tl(O<!~MrW-{w6i
zJQlij-fXMWsW&&zyxRP!CO-7=n-!m1JY*%xLmtg<3)ieEe$QUyd>~m#amOKkAFoY6
z1D*$W9cg*PY$ZSUp*Cyz^p+cv2d?#}#XtGf!0vLdZSkDBVf-~7GiP6z)Muj*b@}9n
zKINzOzl<vM1U-*lza4b{aKJ8?H9v$iCaeBTOAKv0#K0V^%X_9anBkPqwbjc?r-_|p
zFKMqoe|VSBBNjy+je3uOYl1#6j{bUUy6Vrf&y21DJ*R|bDz29ZW*3d!u&(E`Bj=h)
z=a1anwyxy!;<Sqjze{?2{{NA?oUv-PE92=|lV&ZPs`~t~n-tHA?28FA`7eBTO81Kt
zu=#y5L1J@7bMEG4QQu`|E|ShWIp@TZwHEy~2Jvfl&*k4%w4gVPKf{T8QMI$Iz}qql
zt$y~LW%qI!n`B(W((*j79^7k?B=GT8@x9KRg79Z^PaoSnvuMg<<EI)$Q;Jv4==qwn
z?DhX6t95Rht~M^d#&2TGm;c}@-_F%(7q#@P6?yJ_T$Z#gcJ5Et7k?H76`ngKW?r&g
zw9d(^+@9g^!2^LRcP}yD3Qm6GCHLwv=fo3d0!xY(Nvf#t;9`9p|0w)fZqbnwuBOYG
z&UWi)r8^j{oLu-kbMlO?NnsoND=x%t+utzjq?nk%TJI-!(x>|x+ONOdGb8@`!4q?C
zz0osHO0YUwBYtFo<)ghP&s=4%i4R|~`FzWox{x)}rq`2xuc)1QbdIi)FLPc%Y_I$M
z=5vdcE*9Onv~Kd%M9$-9<C78s*2OuT(&X&8>KAqW_L&to{mkUqs##?d4_1o)=wx4W
zZT6j8tFBBlR$Se9<EAg$#0HU*+k~usEIAzfY}I|s!mj13Gt{5n=saan-Id}Svj66S
z4=2JJPd%)R2~$#g<Z|rc`<Sx1%W@a!X)JCEI{)TO*6X&%rXN;4zA94XJLjrP>3oB=
z`%9JtACU0s2|00DB|^B|h)E?Sd*QV!hU`a7yq3p>Jz6sJEW5M%tJz&z7h?^lUO#v4
zg2BQNCx^Xt?Q`Xo{+V=sIjH9QcuH)@_vtE!zE0q9=Km|e@iyt|TOkf{8Rh)O3oqV=
zGd(QsSpW3k-Oxo@2P5`p?)CK3QJCgYB|p98#EQoYa-U5(vU1OCeWwFf5i-+s-H)~E
zSIoT0sZpDs7JlwVbIXGasq{aLrGHIUv$y=%TW$HJC%iXCnt88;Z1D4UpPXZ7JU`?R
zH+OP;b6>i1@kBxGpL;n9=D)J~u=&T;b8{H~E^S>~a{c3jL%V;Lb}V=J*xX{EJfl#p
zw!%jCgmBfxV6%p!DJ;RYFHcKbWSUzV7bdKiKYMO^(gHz$Tk!(cJN-WwT$KO$_cHg%
zEk^SXy1ctkVs`kSzDR4s=KnEYI(8~DM1)Cv_<Zo>wWIMb8%)^0l^)}X*e3PoMv|eN
z+@)pbnB&44EhlF#pZ`Bb<WcW$)#+c4{1QGHW!%89e^HQN?A%D1LxzcB?GKI{K0kcz
zgud9C8K1tF{fX>U-gJBJ3-;*@ksT5xKQs7d?QpxQck8QJ#V(5--I6LhTb!qD{IxWc
zZO6_N(NEM_OLiSu^TtN?U&)zS%XU4m7SmnQwR?tug>;jEn#p&@r*oF6m>6}h_F2|w
zxKr-5fu_#ON$fvjOm;ke<Mhs(<MsXR3c0&&XWQRPQA%>ze&);)-^(|}V<cDcp1a6g
zwTor_zS%wDdz`zCey=#a^UF7t^V`0^7M>Zj#c2WapO<xynm#nv-r0WU{cQd|r@!lc
zdu;nPFZD9bI<rXNLZ7yuRRDwc)(?GLO$}vQC6;}!9Q*c0J6SKgv#`*U-{?!AleOs0
zH&-j~3f)?H;@N}?eV%5ETFQJr`5!;AczR2j&!d>t6C*Vx*Iw6kznJBEr+nEnX(q{9
zFS!ft6=M8eR@R?2zsugLSDE{kb#0|*dWqJ)rJFz4-uHj`W=l~)5996J>2)T77S%Qh
zpLOT3n#?;Sc{g8k&Rn(0K_Akd^YzQUTEmffX3<pr6o*eePfm!3@gI`>TcJ5;ZqUcG
zuih+gG5(q8Xkk6Q#<=ZQRA=<_RZ5Z-8yU)E<!h%_r>Y-WzdHNOugWRszU8jJdrM7}
zGxzHOFRRJj>Pt3DFDg0K;o+5DB-UD@=6-3?xhD!-FMZ;cYtGG`eqDB{@vjw57PtMB
zf3qI2Z`u4db*KAh9rvT2|8GTG++G)R_Gjt39>qS-EtA&Yn5ns*C;8$+3&jPKqpc<<
z8!y?MyQ*67QsfVddXMz%>G6UF62)(qmuxe;`=)8O)4I0yf^FMgEtmgNs{Jr$qf82C
zdSc%^|A#s{rP~X(C3r3`U@Lr~IOnamU$Wx1oEz^o=QKLp*(AB=w#w|>kP}ODjxk(_
zHoHCj$(|=o(x+u7lwFwKz3ApL%l$5!eOb#p(`HY*Ep%4F*u%v63BRlHF2VbYB>nka
zH%m)d2$aoRBsq7T<}AamjzyA-JMu2_EEk(3*;mYwR;_ty--l;<lhxnf-=}K4Fw`SW
zx@uXp(d}}Le`lW6d8b)>-@4x<$!z*=U-8t0ZIWH}pZ|ZDaY?5jMsvp7wVMAuPv+d8
zG_&=>-zjI-EdDiD#d!CGS(ScafpeB?zf~{$mE5sj#W<V2Y-7ov|D60h7aiZLa-0yf
z{Bp0oMc{4o+f(cuKPne@HAtjAshH||WQ~=+i^1OhJBxq*{oNm)C{f*G^Kti#%MWx6
z_^!OVrslL*JUH_y^YP{i={t*-Dyb}(uscUE`&n}%yYB4AYwQ<PO`WUmzAa}SLm3nE
z1>3cK@lqMbJcRYl9L%noKRy=RpUL}p%?!t96Z|t4tMAB)z9G0o+9hj!i^0#}xyFZV
z)*leIDo>v(cX}e@V$=Gx<ck*EOH)nKLbo|r>V>dPF*$#sx%=aaIDQ4DW6NTqAFj&(
zG*MuQ*@n9x6P(xWzA)42?(9g;j9kYzdlZiE-RR=LxBF4+#NPeEb9voPn1`B)m48fG
z&J=XyXHdG^S-+mEA6Gpr*Era;PWtt#idU^YqRfXSHUB+}I$)8#ibG<}qK$pM%XvOG
zWT~<ww@ne-DYV9<qL9md=80cxT+_D%pLx7t$DITBQ`bG*%^NoV;5r_$Oisg&16QWM
z6y@#RBG0&J>HVuyKZf;P<K(_{XoHqb_~-Q2ReLvA8nUsh&&w*CWhH;i|A_C7xQ^J3
zVTt0s<}xahsn2>OpXIOkzb2pk@Fjzg<r7L6WdA0Vv2A}g(^+4zKk551USkh~yuV=v
ziE9dOi#nV*y-T~{gUYnst1J~*R`ZKj<#eRVA6Po~EQ7?Rh!s;<`K6DgUVFhdrFL=s
z1l89fGlGM~1t$OAd$Gb{3&)YIZ<pydvR>ciTs!flEz_gUBB%2&mee@(_fAcgZEIs*
zw9Ql5cz(m{_VrzcTkMwZRP=fue6h#ysiN$K>J<$Qo&^(rPsq|VTT#BSZ-?$0TgE#R
z=B~77-t>Y;_I$yI1}RzD8$W}bx?;?iq&G)tDcrq%YmsYh(7TffUutC>OKjE|AL?27
zadGb9Ba>o6<{aY{7uPFrzUo}DljVxwnu<pfJ973+zQR>{z2d9X;XnN6#1DO)B6eYh
zN&VBe9#IaNCxoIdWWD&ISYE$k!tvD$dN!D*eL7!q<jrX=(aI3tw9Pl3J~R5*9k)})
zVejMS71g(XZoDEFc|FR)BI$UP!Q#7lJ9~6K)GZ6MthER_FDx*{u5g+3XA!HnUp^|R
zMzH5^TD?xF?32^&JGavLa(2`-3;bBRk!9oNJzp=L`Q^*j*U|Uym)(Y3?ZaM^T@Sr~
zbnNoPda+L*{?2)FC_tk8;n~2+H)cFOutWOR20php3)YIZAJ1rZnD;j*afSKa>oeCo
z#eQt~Wq+rG?R&fVKA(<T`xft$wcc{U=fp>?Z+F)oJ9@g$)8y6?F@+Mf`&VD4Bt@-k
zj`Ugc<Jjs8zE2(nB){BxY+38f5~Y>Wy&tByq`!UfcztY1!rA9*m)-t+q;heU*z)yL
z^NsvBeY*E>&h%HR>n)rk(*!kKICV_alioYX<z!zu^_1Cyi8p2<<KolDR=Y_Tt&U`H
zlu=mJEx0&L{(-xE`Q(;usYOq77e*bj)0@0}v)4M|`sQp7lj8YinSKS;7hc`r6IdI2
zz4_*8{g^$xD;}pL$);VOS)g~u=g7S1=`WdtUJBPv>|m@t>iX);qxp8L7&jWMX=`m1
zR^7pr^zQ3CmL64(zRm{Ki@6pLgEdSe8fV*d$MLh?b!rM;*w4Lvg6p-QcF_qX{&PaZ
z=a^~CyS{1WE2G#c`HvaJ|1><hsI1F(LfYxF*h-nDil<GFL>jFz?{p9Jdi}jdyE50H
z_OG9RbVT!+xgQTT)y_WRr~m9k?Wqawv(F{Gxcj>0$1>SvKNg+Y7H%VabpE4){3>2A
z>Du2*m3E}RdYy3Xv6soM*9EgKrHlSy-W-!JtGZ#{%J+OHF6=4Tc7XlBZ(V-jGak}9
zeHYEx#nQvo7&kgsBs`eL=F_H_SJEQ6bIPNS3?H8fujS)QvQ+r>_T4M(@9Uo&S`+cR
zuj26R==Z^AK06o(bKb72os%G!B{ntkr0%~X>;Vs1nJxN+R&G;w*!SmS!`TZb+F49D
zY&P&+VVol>&0MbW=Dw1rL+>)quc>|41TMQD-NoW57tI;9@{ok|86T@&c9;3<AIv<K
z=4v8$b>q|N)8e;>3hL$^anSh@CDeEPT8}=@)ze2N2>8g|S?u_KU5)j^{)w;MH|saE
zPn!7e5PQMg7rgw-vK9ock`KPOz%e*a!@g*h5XV;a@68KXzXZ6w@Nv?QQoj*yI7c^H
z+~ixM=&=yd?6|pxp<#u|Vs6(r&YW<ndWY5OQ%Y%$!EF!AqjvUf{2Y2O*(_qc%I0!a
zmi5L)-pzI4$~&JKPH|A0o_69A<NAj+A1=Q6{Zq@nV9K0LS_|Hse$M<N`k3mZ?J@iv
zVb12}3$olM+!cNlx!2`B^V&Y{SC6^be=nLXKJx}+B-_VoPQ$7T!ct$RtUI@cwQ1iH
zyUJgBJDs>)FT6Lod8#2oCb_>w?A8jc7a^i5-=!wR>@-{OPjR}Oq(x2I=N$izXMBbe
z+*7TDeB~dmRXOVJm&=jpJ?lr(j{oAPI(SYQKd4a9W&gw;rW9QCowsvMxd9`4k6XA5
zN94{03>`enkFDjOYQN9nnRV<=21CF2P2U0x>eN3w&fgI25Y|(Zl+5GmbM_B|>>7{i
zUDH)f9|pMkd~5YzF{3W%?8T?rxe;p|pB<j@$)x{CW9Xy03yD)BcK(tKHFeCK=vp)T
zgVNly+aD@(OWm-T74_CG$G}uYtNr!Qwg$sV%6HVxRVe7%tqHZdWL+v-`RL*4t1%v1
zE{X+uY`H8W7`~oq%Q=r1d?y~=meii=d+flXX#$u2th&ByckV26hPhI6v+K70KK^;j
zyOIDe24UT}Pt$#bo+nOnV7t=p`{=;d2irU)bV5@nZ%7RIHqG}@a?ko+p*qjsyD#w{
z+;g&4V?(l<K(gK$h8f3s+t1A2RL?5(aalZH%u`>@%O1ZIpC%kKb*|bN^8BH@O{0|g
zini1}&5lo}YZgX3F|R6lr}XLG(PoPnHs!9=GLz(YDYthyow?+*b&ulRzQ%IH9|6IK
za|HfQm~tzk?C_+woG)Gl-A_-CxHZAsYQaPY4LKf8r?p?!O?y;W<Ja*j&F7(XO?RW0
z`>lkMxn7bp_RkW1Z>!lP`TBND)V=S_Pn)xE&e@f%(bN;SXYM_&j}5C%OnC63`u$Ho
zhwH{7r+T7U-yN8hG{LEB`R_g2nhh5d<^Dx*Hg4=Yo#X3Tp4RKb8_i+)Yp#d!gv|}w
ziZ}V1?=MO}P+BKA_4<#fOS~)&62Y6=*GyVl;%(+|Y4J6s;Qn33y}y0Ma=o;auWnfx
zW1SItbH&sPu@0@jeI`l&k~Xf?ZTWl3r_p;apX>MZ&l&O)>{~62f7!K8Ne=rMWRY8J
z&sx4&=!XIKVlT;b{sW=4d*_^CPHJmpX6SZ_Nk7vyt;oe`cL}G>r?}%cPCcx7_I5{A
zr}D9uUG1HQpBU>j`7iK3OuBeD@yg!Ew<|UFq{tbEYQFg{bD+JX#xni>x5wTq-<SwD
zU(Twv^<~-VKf%vGSH|?MjY0aI<3(Bq9j_$QZn=N)pJ&=*dhzF>)qC|!jJL7*r!D46
z{@S9EI&aqn_PB+e#iydpKDvdwSuZqOv0plmZ|nCydC3K=QJo9dTuclwx}iC-X8W@B
zOC&!wY~#NxTjqCwq35|RmrQf&p?;l`RJm-HTT-I`Z8n_ow%s7UMIop&Tdnx<p~!TW
zCyYnVTuza_=bnCTmBi{b6>5)7XH0zWvh8ES<*((c3lkpQ<=f==J;tl7&4#x?&{XBr
z_dP<48aMT~G5w5>JZP*Cz13WP%FIQ(WL+mq%@q-_dD(e&(!GQKgm(GwUVA|Am3#KP
zIhKX1zn<=2^s=os-e~<MhpBuggZAZIY+o8XbH}~gUl%hj-I<Yfw*CI(vtE1nN>}Oa
z>au;-_V7r;<C&-TBtDj9+gY6dr@}BW{oaj#N!MOksivMYt`aCuJYurlWbPz3_s-A^
z<*Np~b2DANuW$Zkc68Y@MW$5#ZxcdKY)IbOrtsz77V(A0ToYN7A95;RbIw(@F5M(}
zGRxhD&;6L1ap;H8T7J0)E>E8?b&mPuH^ZKb?P&AK^URA`+0K4?-&wkl;py~AJ;%i?
zEDBXZO;aq+eVza6%#xR#CjGDOw|)6r*iyM>p~e!2zru1d+M=6-e==WVH+wjxsnPe(
ziTw5U(T|U=HA)xXtv6Ba$1ABX4<nNT3_^-{_b*Y}DREQqj6>=9#|LX(p6!WSkr*4n
zbBFzPI@=MQTQ95|&xC(ndd(nDeuq?*@ND_Sx?SuJuaAq|`FT)Z%<{@ArJ9HCYhE$!
zpBleC^pf%ZJZ;CE;CScz+|FnJGWsT3l&MvnIp+BKBZEnc<>uA({PFF_Sl=6cxis_W
zYK9`C|9`6$79Eh-@qqK=oKjcGFF9X-wsai&77+is>gJq6dEqAB&w>7ts<I39ew^*w
z(ZGE<vtidS!?p$UqnS=6v2zM;kM8t#c+Yk+Yw=Cth=kcEr&cX>=b!S7hr_TYDwyxq
z;(dO4)s7y?Ell@PCLRk5pL{buu=)6(pr4xcwo!8hwzR2y-1B0lh(_Uo?w`#<4%~&C
zlrJ)GY8KqOV4efRhG$=$bT@GGnHa5W6#1yL((uRH-fgKmh3>`-8WtLc6_b;fO=}gq
z)Tx?c<5+rc!x=NK^$cmAn_kBqIyLutfrFk@5<8#AZ;2hRjvjh{XU@W1FL#|~Z;;OC
zXSj3n<cikV>6gB&J9tw$*X8rqPUqI}*@wLEdHX(`$EXov^m<$6f=x96b!r{0{fP_m
zDkL~00$iC7uDkGQ8befu{EkGEU%7HO3K(~uWtLW4Y{LJhZ|5N!feWv<@fn=8U(3Av
z^aTMWxznt7t}%)TFDPsf<X>o#KH*xf)D2%o!Jo0drT3E3%P!yP{9^Wb@gb89(tGL>
zr4r80zHPEWGKS%D!=livCqEOVBSbCyZXZ}wwLXV=^`iZm(h=nuKYu@1!zJ2(e$VX;
z=^gj^KBng`_3vSp5xBtE%bcxk?(*h=Q&651`-X}9j}JJlQj=n5N_ug~r^BlvtLu8u
z5k~{{?1#G!S!|frb>i$R8?7qEh0}AGvsWImHvQ2Z_dh{ST$$rQozA`En|RkO{d45z
zo77T?hCh~{7JpLIf1i}nm%}{s_v=Kd2px64%Li8d_}~!F&%yq+PGDJMXyJ>(RoMx%
z*se|Zm6()pEtdE40jWt(s!O-&ie>f&32kXv5w~CxvmWoIMg`>_ALeWix#ecsMjH2)
zHC}z{I${3x)X)oU<vV3sloCo)E!CdLFKcYQB4on5=G?3`iaKl7b#Pr&J<O|hnZb!Y
zRjMGZwKemA@65kPZW*O2=P>g%Hg01yR~1;yc5$Zd-W=w4T%Y@XGjhgkV=Pa-wlw#^
z!(#r+3~O!#eV-gKC6i(6l~kz$58?9o>L|7VhuPB@ujEfpZIF4ND;c5JFBiooHh1qS
zqYVq#cIYzi;N8Td!`5=xXoFV7oQ#Rb+ov^3OIcjxvDyB6&D>2qI&EtX8*Pxd7`KdZ
zUi2)sYYt3CA1t{`MNS)Sm?5}Rhq=3yci|lIw${`J!@ljQ3@h`4o}YhVH;YYz)9W(B
zsSS&yzf_y>>a^^?yNod`_R{*tJ1&_qw6Cx~ZgxTc7TcxPFa7&}s`)!hC_mRWlJ323
z|M&0jt>1pNUpK!Okj_>1!2IGjkBQ1Z_A33CS--#kn)L2H_DZV`Zo4jD_x;^<<KMqL
zUVH4h9%QyRehuI3Cnv45q(l3EH0|$tXsh;fSCQTS|B3c(2gGaky1X@;@ABWGM)~j8
zuq=jOQ&nE`|JTz#kzfDgta<(C^7nT+CT`eYSE2v6+V|f7t<(F@Ofjt5wdBtSVPCcD
zulJt#|LLuL{m;Ms`~RQ6U;BOidij43&F}wt%fEj^>fhD6(fLzEq{XYR-CzFswe9Yp
z!t(c$32$#!O+I;JXGQ&<PX9cqaAToIdxIvNsefd=|6XVOyWjQeUi?@pn)|nE<CDkn
zTjqtk-T7N%TmSp%{<=T?_I1~fZU6tZ{m1wF|DNsMzb*gx{HXgsul~Aq^6{PIsrReD
zfBjW<rG52R)iqzgnoAwa<zoI_8P_#0^J4v~%{PtrzL*~Mzp4Hy+n<}sHDCTOeVn&{
zm*on-f75gP;%9b!dOrJe|NqZ-<G<(c|MUI*e(C%BzGu|Ex%elz`pb!q49RKcMrDWm
z!vdrpe|Bq=pS`=-`2Ou5^A4Iv-oE>x@bTZYBD3U_Rdw@X{(kw-<ZyN!54LmqLFdtf
zE|viuIqz6nl96AepaD7UUXx4TxhOTUBr`wHC9xz`LBqw$$iUFRz!F3l85tOBa_Rf#
zr{I(eD9TSMO-?ORut`fzOEWMqNii@mvotU;Gd3_VH!?6VOEWMqH-^w=W(Ef4CI$wH
zsRjl{1_lNuX$A%$F))VeF*AkAnHm_FTR_YKiJ2uM^cfo&7#JHsvAG@82l)f)20QRI
zKA<p$9ODmSfkGR62Z6p@eqITeesC%D#yQZXWFQGHeejJ0`fi3?`c8?(sUT$v`i@S{
zF0QWH(3{t|^j-6k^HVbO(iQZ>GxHqtiZfvXTwrry*RJIkDHs}qul)fX|6f#G;+&CK
zq+nvkrSFpn<ro@Ta_NU>rj%q9D;OGsE>j2sUE~A52MDAa)8PmUAQnR0jP6ReoW%5E
z1!E&Feb17_oXlj$y!4z@1p_X9$Kqtrbq?mH23-0eqd**8BM{FyvA`o0blaN(Skkd9
z9qcv*Qv+izec!|i2+z>W(g0#{I7G3DfdQ9(1XL&3px~0!+%N@@k)RNS+`6EkYhrGu
z0J2EI(8$mPWJN5*7`M!vR3imLV>1N<1yuioLImXhXayrvBL!m%GX+xvbF3J2H3c?o
zY61#FOc@JPkl8SC6I0L?7%(0-+Qi6M!PE$%$HW|TKa-I$NS%qPsRD!rk~K9lR{)6`
zn}EzSHa3OoF*h`g1r-Azzd-y6Vu6yQFZB9D1w&(y)*w()!MxlFb{nFpg{8SM>}m-^
z1w#W%BMSpiiYbQNvsf|bO$~cZNa(L`mf!tO`%IeYnKsE&?c|x1OA31#7@204IAthG
z`mEse^az+$GEq$<gXQSf^2pm-U6UD2Zg6M6e;pOhS{i#-^vycfN$+=lpUW)Ry7s^B
z{`~w;cb;3m*Ze-``<&1BCL1&s9-AR+&O1BgW<Ydt_@iqT$MkKc8>R<`R;E6FeY!YW
zvU*A9MuXtcpF6tDkISq`dc(-B^&?Ab^{U8OX?&;37fxL=%TrkT)VE4$$?9EmH(K9Y
zo%vyU{l`Ts+dqmXOBC-=H+v#>=5^Ga(-QTvPor-=+pc%(ZsE(cV~f-c)oO2St6BMb
zUHAK+eH**Pj%_(+*=_Z_{`1)%1;>)QKK}V}?wV?M1k>k7KiRHqFF9wOd@fgh|9|Ua
z$Ic|@ywZ-9UHkU^(%aq_|CK!9f7_&(wA{1%i>k-+lC$x<HvPUb#k4}~*5+e#u5GM1
zc&2;V+}3?r3Ds5i4s8qj9J(^M=kAN-GaK^jUY~M(d4H+cLc3pQ?r=vvFJH3tx_na3
z^X?wkV>(egQZn~X&P{sruYbxP*KTXEum3+D{@b(jL9>W(aLwth>!yA*)IV!9z2@wr
zDS5_a_veS%ul}I?GI<r>^Y6NxyQAx6CnfqMl`Nds_tkLUc?-s$(TCoJMN1WAvT2L?
zYDXX6lA}5~@baOeNcQA7_IcWh;n!aLG<zboB|MA!Vv5klKT5Y%44EgNiSnFevT4cA
zM$h@bX8iWK`0WSV_SpwNG`Ia)u;0(C*tl%(B=!4?dqdp1t|{NNugP4t$@<^Nuz$vS
zceDS`+IXUT)2#ZV#sAjp_qOFupP%@--fVqy?*HAl?;dzIS7&~G(Wh+_^KI{`*}Il5
z`D-5^zC8K1srcWTdC$tso~N9*zNsqzr*QTsm$2WPpUx5#Ww$HVetT{Iw@bZghyQ)M
z_cwXE&1_%Wz<KX-%|efB#s?pX`j<NQmw4PKJF_Phx8tR>>!;5BTyFo~t?X$-**cp*
z%P$X)R325Iw|Rewr~mvNcPC%FebUDM<?&7PZ`G~qF`ISj<-H%LpH4NB_^n#+eSgbd
z`?-hfpG;EQ;Pvu*&Y6o}p5|;gw5NA#+ojJxe7f>4wdcqMsGj<if8yNz^thMFmp(1m
zc|HH;{{LUNU(fpZ{Qup(Kkk3s|GNJAf4yBxR`2}SQmOmq0q5r}Z$8zh**}RmwzPca
z>-jgI{pX+lOvuc;s;%;=|BajlagWnae#&0+PyMOVO^F2c4H7R{?l>IxKNY&cFH^gF
z^7*98PgU1M?rUCpGWJW||K(rwAFqEGfA9QP|8E-%|3uGGWLo35Yw}dj{EZ<mrzJn{
znH>AyBlcxf*qQxlKQE<(DP7%^lc}@W^Xi%h@Aa-<j{kn$=KKE#lbk&`{$6`ly=2F%
zYa7ZBNS@(MJutI`Lp%L(By)E9+#J1gIovmsw)Lz{*nK0ed};N>>Y2ai{Hwe2VZ)q&
zlV)3=Wacn>>A9XvSn(w2`>ua=l>*6s^}qa|IWypS^0%p<3gq~ErmlW^@qPV=f6Km`
z8-CsHt)qM8y3E&kON-9+yG?9zG&%YCiT{)4Pl`W-e;WTR&U^T=MlSxu^v|Y$wDz^X
zzn)=g)f<<5p(V4&r+xn1sjojju8(frBJ%6*v?G3Xty!m%{a@U9{Hx^9w7O5hd#XbD
zE*SrJ3fJj+e_(QhB!gR@^|5tP+ZjGEzU!Z}XYT(#?!w3UyJ}3|ZcaNl!!9?gc=G;@
ziA8^xbP6BqUo9PNy=>X8Rht&=ITLPG6>{=~;Nk9eUfD^rC(oTaaoVg$zGap<VcnL8
zQh1DClt%UH6iy3$x;C$n{ZbUuER**$3~zefy3OVMn!(xo0B`Wu{?jaXbh8Y<_j~^e
zC^}cDS{rhye2dEV9o`Y1Wz%+_dd+7O{<8G@r<GrQFGOqaJ^Su}V`zW)RyAK=7lnr(
z7qsm@busiM-v_bs&;?bM;pL&;s<&PnN^0*Bl|A-G=UTFf<E#ZtlJ{I~ZIVsGTc-q?
zE^<$5<9ND}(Q@mmt+oa$_pMxY>E%b0)n;J}w~1Z|W%-g7{cfk%{F^`D&0EvHd;6ED
z8*iqa`B0W${rbzYhC5wecZ)*Hzdvg*H8waAEh(|(6*GI=9l;Zy!opaM_GYZf`*e~0
zLxb7XN2TTUXD?K~Kj>eVlgS%dvU1w`nMzX?<w}J=wWht0uIl($Y2y`t?)}$|H$7Oc
zT{jQBbvDhq`ONg$H)SS7O_|f~+IM&TlQrU&?yI*~*q#ar-P*EmdbuUj>-625H$SNT
zYAt&IL^=DDEz@r1#&T^hE2-AjKAGR^%NVcPvfk9>+NybbVy5Kh9#nXymA4|F>q(V3
zYtFqQEr#aknaw+SeY2(pY;9PpbRg=M(^jUPp;Nu~-wC~|JN1g=Qr-O8%W+{h_U~VQ
z;_aQ#6I~ITFZDb4u&Sx9UA22<t>1yGk8+Oxn)5iXsETP{+K%-%Z(q5%=FFt)LK0i#
z`#-Pn56Mo<IX+dab?U^|!MyL(PHLKKZ)R=YEoGix$!VlBL(g>OnT*QL-JRAmHQJW9
zcxk+Hf2*LlJgg^hQ_9k;qY}%P-*mq2x$6nfSI^l}20R(3nGRpHyIAaZ!&GZ+NydcT
zs}>hIu-9K%VRq$UK(_sTf6tGuFAlCq3|Lm&b7E5P#^S`u7kaXS(k?#a+u-?5Ex&#H
z&2G~tv#%`a@%^~fYJVy3y<NXn`o79(5A%H7A2cQ2XC=dDg=m!}Tx$-#@>xD3%rtiK
zvVOJWGSg$VH{HF<mLKc9{n8HeD+<NQ?1>k4ZMk*rbNAw|4W_FF@9w#}Hg5aT*t>Uc
z-QHhUR^EU9`rZ|*mS(qHYTLeT@9o<cLLP<uw%VE5TRipC3XQPiucc0J-Yigks(R0#
zJHO=Q?YAdpU5?{Uepf6#yGdxeR@AB4)j<=kZ@J$4U|p2z(Nz*tTcSNRbbZ|pEtppR
z?yKRpxU*MRu$kVyc6w%(F^6<|?p~prI)~H_E>oQCzg1IQ?c_yPapgN<J8w^Y8F}~4
z)w`G0<mibtuRLPTU+_LdY{H(!)jO7O^GocNeabj_d(6h^THk^;y%yOm$K8Cqz{0)L
z^R8~(5lx*HYR{f*5lLO@S)N~CpFH`w<@1AS{L^lgBxD6E=m>9&pKT@fG)rX5ff(V4
z``1=|Y5qBT%C28mZf#4`iN2`Nb%pKF1*eD=tW#Emz1BD_IQ5o+`3#4x|Eg4&Ue9Je
zJM)zD>}O`HPu~<uNZzAt@b=0wGvCU9yyEgH+a2!CzQJ|u%2}?~h52h1cIx=4eB6*$
zG|5iJHvhBI>a|CC^RpwOnWtGD4O%=|N0y^=))qcdw{(rknujL^`wAX&h~SetvVD=S
z<*8{`mc5!id*$b>tl||6^Kv<7Tv)t?aUD-+L-~Zz)n8ce&%PMC^o6pQ@z=dMo61#{
zx-VsJRkhv3EVy#(T8@7q_gT8PM}(MZ7#<SIN|ulOdg{dChvk-AH*WtQ_Fi%xV|dxL
z@JdS!?#Y(llM**Sd-s^PF>~h4$hOC81y}9deOut;XVDY!Z5@l(NZbvr$Tkq;nS6Ke
zrJK7C%hc!`aZ@zoD4Ztnx-~-mNR;9=j*U?r#;p;mM<kurh$OWNoNkR!I})TgjiYdv
zKzB=o#t|mPXWWMV9hX}yLOXUkm2h6vJR+lL)si8;$hYIB(-y9aN=I}Q)3^+sJ6<~Z
z2q&!)IO}A>S=c2I-133@qJ~Sez~t5y;z^SPgj;7Q9H~$|#u=!7BtkK(RYKXNSKz8s
z2xp+CORK<BrzxBdg%^c%Ty*LYTIA9((WyruX@|g3Cm!LX6#~vJ8bXT#I+zqcwVn`G
z3h$6n+|+tPNGZ7Epc9Xfl5<Ci;-wZ3Q6*Q7^#UiIDq0G-9||dXcDN`CwG?m(>buMl
z;8RR$?GQYq*W%lep}44J16QKpAsv?`0)kF0+=)VmG+br~uql3VdeL%$YoVZ%n3GTw
z_d%zo@7x#Fj|eLAaer(UxX=A@uE2e+kLim01RrH9?h|_Ct+-F%QL&<(@S|WwKF-2`
z4*!-PlLhKU9wjT<2|eO>s?j*|zV(Mg$M@C>{|;uSH{y?C74Hc?%2ljWKN9V<NArlZ
z(;mGe*-m@3j^wvixOUv<__#?xpY!7)0ey~-dj!sNeq1APp5x;d0e{YqO9cEmKJF0M
zFP1c4pr7;O3W0u(j~fK|IX^BC;O8jZFYukSaJ@iv>kH9Ga*FT7lKKU9x86{73Fweh
zWOBNrdc;rhoya3T#WIe<-2&S=KWZ!Hi9Qlj%oBU0rkE%4Xu4C5_#-yOb>fe#6xWG9
zl2TkJ_DD-{oya3DMLqFHMv8i(kAxKU#2$$|#i$%HQ`8fA#H6^5Yolw&=hhcuk8Bjr
zi6(6pnB8LG&QbX0;iDUek8W)5PUaUsE~nRL8zWP_!{S>30SR$##dG#CbLw|k{4Xf{
z_wdo5!$*I%cYo#=e=e^_MG1s+ZasXo<?zwW_U_Ak;>%_A{H$Z<l<ly1TTpoGq3CXr
z#^7Ru%q`sM&k`odZfOikXPxZUa4k4X_TsICAd3v%rD4KzJ-2kd=t)SD%t$rZ$h4&?
z!}6lhsc5g2sxI9pE2<1O%53S#P`t>bWi&rS?qcS_7Oe{_U5Yz*by#&iV-ePJl%0~L
zo~1m?_lnmQCzI|BwX3roSH5()+_6l^RM=E-u9HdY3I8h|R~$@cu9%l0bkSuIr_1Bc
zV}e%&dwH$09k;q9H=WzKKx)ye1)KRoL`(XZLxn;GrUu7JUi~aMHE8cem&F}kE1q~P
z5)7%e2sFHCuxO!+^NNj1i=48SHfYS(=$AUJdTL?SO_xZQnJ&$pY=Wr*OM@?Gx~#mC
z#x-%e#>`pY1a_{R*R9d1F;S!Ogr|sn&wPe1<sz2H>P<<VNhdPYH%&C0rO|c5t5QtK
zSW>xDspF95d6yIwuEjRY6X$t|_snLw#P;}=qm<Ij9-*Zcg2A2Ng}<(J{UPWjtM;q$
zMfIuQeL?qy{?2?My=Z-NpWB6SM|b8I-d?qiUo0=CPx-F7luuAr<yXt6e=c9#jp}^9
z2ws%$uv?<EfB6;mDOK}>-V4eq-14t{FSOVB*!Ipk_b*}>XNNrD_1f$ACCcEN$c5Dh
zZ)h&KFSOU`*nNS$K3{|`c85G+UG)6q51EUbUCs;G`nt|js+!c}FJSBUC3{h=OMl==
zcg?RH7Z1De2i|LT;h*raZqe_KcdEC%uXwAzUwGxNOLa$?@LR59Q<|C%&d6LKw}|0l
ztc!K$JC$9{8SEF|9+WteT_?TullG!$&G%x9W_RW(?V9*vy36g(JcV8Jq;~g3?VR>P
z>eTL8FSHhEcdlE&H9h#1(IW3oy@h+aS5A!=h;^yF-Jz$lt06=CqL@~t-O^p1=aj9c
zXBb~xwqUPliQfe~=@PSx#}?G`WiVfiblfe!#V*6$;Mwb@ZwnV}b;(}wD{ED`+Qn51
z_R5y9g~oeA662z!F5W9%9u4_hvdGo3S~^3~bX$YhIrUlYB~lkxx)iUB6Ax7Xn!^|R
zULkAwq+FNHol%`p9chARmpGnZFwa+gmRs{YFJJS^&9gfE7QXXa$o_NXRJTQJi%z<H
zb)3y_qL~pq&%iJvc-r@t1-Z%@H5aDwO1Znf>Nv)hYa#w2%Bxp#m11(~g>7OXqFZv=
zLfLX(JBT{ot_r9$SS1zW_C#4rRZ6z!(C@kZi$Xjv+~Se)G*QY3op!8X(W3=h*-UgY
za+!E}qn0<d1;hykCSI7us<mL!Psi0p8}=*+y*YcQi)D!I?0FMhr+D`As!6%@rV1<-
zUMjehZEe@|ppHFP(u}sgTzKrxm9B1$&R42Jssfgsk2)VUO_Nk`zhERRBE97d(@}w&
zojEQST>?W6dWq_!m<YQHxeBxfdkRlAnPk{=!eNQ}r9e;JsaGZhs!i&!5d8dgcKU9S
zFEek)xSx5u?(hYBhWpI-4}R0lsb|~AxQ}gL(_ilg+)rxzzN8;men9bo!khUF^-lNX
zC;pT8!SRFnLt@JE*WV|`uH$d`-uS(NdBa=w{oH$)_w;^we;}VRpDCYVz5ASJRk}*|
zziR#1F8DcSy~~oFb<BHs{sy@$d+qvw^+Dwmd-mI#1wY50cd+OEEAnNs;PPGbI%d4C
zvRQQc>+24`>vmUadEVM`*)aY1C4cO%;seJAjUO(@es9+=yDPr$NNN6$pzCo9#CNcN
z+udk;;&$(z*bS_WataK0Qmqbey}adA>GI62ulX)ZUFW+Tb^Yyu+ym<yq8p<dX8Yb;
zH~WA&(|(t^Zy!keEZ@1VeIMVis0UInR$sgpn(^9eODSv4bmr-d)0w6-h%@hZ*xP;K
zp4nrT>#fH+*KzmEUAOkw?AYj@?YquR4314deRN&#o*P>a?!Q-mt?%o<(toD^wpw5N
z;hVi9v$xpy?kwZ$Zz4Wlle%9qw{UCy)c<E>SN}=>5&k3mUBtuqeaSQ9H=o&-^U~<&
z>eQO!MsYiPp6fmqicX7s7N^#(|5g8+{>_ay&Wrg+?WrqF*qD}*@bTYKq3AQcd;jvk
zk9y;?itTrpe&2?W`S0Ri#BWJnSbuQN&ws%e*X}$z_uo3%x&JJWzWvuH`}W_qM>qdn
zdnERM%_GTwGp*BpEEo6x>VMnt>iw8IPwZKrE*CNX_19YJFYnQ>|4v%J`YYV6{zLtM
z-M$^??DO2`*5`bbsDImM_;1#uta{P5GeSC??^tdwDoJo+syZ}hkIng)#qY}No?S6W
zKk#!yaG%lf-H(<!KC_53H0;ywi54$UoRd?w=fQ-UKF7$b&u)k(-S7Qt5+?k%TXstD
z*(4pqcM><(_2{P6ByT;nbn20x&Q~_}^?zIzI{WRNobsDXwWiNCeqHxEJ?!Sc2~SzO
zQ_PAt@4T<`^NdDbUx};NskQb&-&~*ZuQqevp``Nkn!MuiA4&;<Q9k_huSDdU?ev+n
z|BA^)m7hLKMX%Zgm&KV*-Z{JY>0_HbJ?Vfl^X<D=J^j7&Q=+o&<C<vyWaqTB*!7LR
z>$oM<e7QdqGq2=5bvNAJbb+<`fj_~^O}`e@ITrIz*OFp3dn%uG^^0Zn_Dx4V?Q%$R
z4i4D&u<gjFXS)tmx&E$M^)B4RdE&D(Grgzjo;(v{CA@v6_q4QC_dPzQdT9k4YTfsq
zrnI(3H~6y7=OyBz%x9yTvNKO?`|@P!zsvgn-oHCg|NrXYDd)wfeDzM>T$ZW4fzg6H
zf`1M3HKy!_s|RKt(0ag=pt^x6f=`Ee8k2X!<wn;7P6><#@-x`yu+8B*!@8@%FM;m@
z;}+)J133#sGZ@ntjT<Eolq5(Qh-R?OY6x!7Y>>}jk!m>UU~9lRgTsg681v%>s|1|@
z?jFXhhO7l#D_FD|iWcyEU|f12BS9p9sfWdl;c#P8f`oyH1d|A3s{`W%{wIt(9rz~j
zrZCPtkdPoSfpH0Qri0c5ri#Xt1I#-Z#V4?+FmW~rcd$QVU>D#%!ccaA&4oFzL39H{
znu1UV!y!iD1eQY#%nR5{8pJM4`TAIoS?B=cv0Iiod-yGwWZ3E$_Ob6{-pBfnr-r$P
zw}!Qbvxc#TuZFFLONNP$X+A?e(?5<Ho*I@vj6Vc^*nVLAVD~|;fZ+!J9#HAS`-iWB
zyF$2vxk9#rw?g!X?gy?9(hpJ}s6GIfI1elzL_UywkoiFKf#(Cx2Zax=AFz91_#p6s
z;Df{mpaO>RLEQtp2XP7d7r5^*-{F13SjN1&LE!>3OT+Glxd-MRkUhZnpzML!gYW}u
z59l5^d%*WV?*aYBw+DC+d_7QlVCw<X16L1(9+-MS^uW^tsRx!GP(5(;fPO=FL+*jr
z1FQ$a61WTOF7VD_pTnKQX2$q@!?#UeWq!|3{$Kp2zVGk(jsGpb*&qM+{KkLWf}f8v
zBr&-2Jm_GQF>Fv~D>%Z?CviZK*@8krn7!5WliwG=sqNc)e&ct`Z+6G;J-_i=1|;}@
z_u~)sKd=4)CDETxXDqEb67zGv>@U547u%PsZw$UEv`sF4_KmPI!|IN`N7FX<283^t
zzM=cZOe~>)!}1&1^~c$F`d56NyKwILLr<$`^tl>e`(OM2;J)aFxZEcUr;mELX5Trk
z^LN@m=i@i|zQ*3kfBE{VtKs4(bEhiFYx+MY{(Jwi$#qx#ib>PVoM&H^n*VzJ>)os0
zUwd2=aDLgQ%p9xP2csgikKI4F>qbn)GZVA^v+3Mdt}s0*ePqYJGE$>8VbQDPrDB_0
zU)}fBNj-g|s7ALbPRL8Ma{21ar|Y%CHcWlPv#o3H$*|3)3x9K6-6UnX`pOrt1l{QN
znU>wT0aFt;<)ox<E;h)XeRJoVJ(HK6vtG69=Fc4NXFr+B9&&!YCckvs!`DjRxYx9M
z-&p#_sEqa6(W`G}Jzg_?^|#eGO5aqikyL#j6tOOR>ZEG>>N#%{t#8J@$-6o|_k&cW
z%a7E)SBG6c9L(w|c-$a2`G1(q*K1Kdv69i{8B4Si?;9*Q_GyCr)Jf8TlcE+@21G>`
z&r#o&$g`xsw<Bo!s>k+evM;7ij%>AGC;4FJ>Z?;0^=+T$5r1smQNBBUyB~$R{uP>a
z<?AZBjQ#I2Zc1PI()&iO%=p=(uux95)4CV7Z;DUMzkjZ5gY}0}AO4Ud);H(AI>Q>l
z&%G%&$2{#*UK#)E(6{QRe_Q@uH^H{z%BJaePrp0NRXM@7$K$iczLuwqH{`e?zppg&
zvOgu~9Hr^H^7u{RjsXA7={GjNVf~i9WM24tf2FTV)ieLL?LDTvATCM%aUDxQ-L14*
z?<dm*O;eVoAHG>(*66!?zUza(a);eM*jB%pI<+n5Z*xVt_nF@9`x))$h5tAsrTJ*y
zj~_wrZJkS^Q?qmR&)<t(b-$}P_vOU$KAZW~Pv$lU9xmqpbZ0yNp5g<aety38aAzxf
zoaKc1$JffO=89gj<ofNBdrxFCJ*sY9ICQA#;-v|TO!AACEV<Ry#wV>SE~etS$v48y
z+iTWoeffD>{x*vyU#s$7E|N9*(b;VrbHls}TvDemiIQ5jblMY@SE+mbu1S57JbY^M
z>t~^=`&VvPyOk`on5S*U5sB(Wq4iI6bDw;V&rq&kapBDGheDC&MOB$yHLVvFGD~*d
zQ*poZVB)-6n$I%2kBQ`NJSOoa@Y;u-Q!m}kZVFE^6M9pY_4-7`kGFisOl0JIl4h=%
zVf(VX+)}4z&*`MFJi#57hYE{l7rdTYR3rJZO#ahbyC=8bF4I|BFfGW!TXW7*k#j*@
z>36&3OCtUsu3iusm6-qEeRqJ+pPPEc9m*m9(!zI~l7DNYsS{ZvXg)*E%yZd~FY7;j
z{;K&ZKk{{V)y|df_fL57Pg_-NJm>j2iv{~cxZ_T$FczmhE4Va6D|*SX*PedTNxD)|
zFB+e}JvB%5<Q@(8PgQGAwYbVpmU^c(??zcw?)`H&9GjCWZ(Z`f#g$}qnvH*E+|-NZ
zD*Gy4-FUFC>!kBzwI$c)g#G{XU3s?Fr5}?5=T3I#-?sabsr04T$lle*o|{|~ahGiO
ziBtG^r_fpGS6YR;pUtOl9m|Bm;|mXMIN7t=`q%#JsfVtszTum{H1*4(i$N}NaXESG
z439tT;NPiX_hiwJ3EhvJ^}6_XYU~T&^lMVkr^APPyWT^Q+Y}?KfFl+9bqAW?*A{kt
z4sN?PTV|u+&b~h~bF~-Wd)ogg`|lc&@Q^nJ*@>FxMdfrhh(+~jz5Womv$gfwp+9>h
zS0)KY@3jdE3$gkh)i2dO<?DQvqo17mT-ST-*1McgeDrA5BHp0*g*ltlZ@uv}n|vkw
zFt1tpoWrtf&li>L{2U~cSkpQ!-{|P>OOKw-o_q1($F_pKVXOJgGpy=&xa40sEwwkW
z-L>v%;BVdL;6sm%=d}Az%=eU%N$2YJ+j4lb>0kDzW^3E8ZnA%qn)+A%ty%Ps9h)X_
zhi+@Jh)KOVHFa;$H2uv7#B(1%=Bf#^vs<dLRN>CcfLB(c)2(#Hp0;WE9bJE}`eU>8
zpIxUpw`=XM>*3zm`y+3&sJ&;)^E<~c-!w>jl4&>js%;Pd=b49oTCDyQ?YekTTV#7=
zvR75*k9kJR%L1Hz^yRNCp1Vlr?TUwo`J>wT&mVP~muQ(`xx$B6Z{xnJJ&fEjANRYt
zh;cbu?h1%X=ReyoH2KXomAQAqHYWY<+0?qcr^hst=V9B4L!Qg~b>{_63^J&E*R<|r
ztMc=>D>Euj{g{+7*KJa%+Fs4=MaMc8PVRcdE#((mkmamspL>h-hRC}V_f^~*J?77O
z=qqKmvfxI`#GkE;rTyne?9cPsW_eCDcaznk#X^e?3+?IbtbDrCS$&F#NMDwP?8LO)
zpY|VnaL0XOT8Mwt!`ew_e9ovIeG}y5x!&Yddg6`m?-TDYugl2P{}XlJvf%jsB8Eo|
zPaO_+Zr}cA^X=$;h6^{Gx*vA!`wU&xqsNTX*3O+II@jpRY|FZePs_i(SvBeQHy-`d
z8~RK5vRBl6n5#IowR6vg46jhfO{y1_??3VMS(l^jy<TRbY^Fra#UtxK^_}Q=S$$$=
z?4|JOk@FtE*sZBnY;x_vpMU3{^v<#|Yw6{&il|y|ax0yu|EHq)Mw37<pLb6KBlwD!
z<lp^S`7@|4Oke)e;`!a?=d_LaR+-PMelWH6XXVOMC;IjpnjAm7*y{YN*{O>a_pK;9
zwxRN1=~dI$<!4XZroK7x!yrd|ujbm4w)It>wPEk3h;Ci%CplGcp>f7jZ6Vu_^IBfa
z`aJJe!L`leJzG^O9_^jCqGI*Isgq3BeBLCvSwCCf=absYHJqp7uWA*SN)(G8jnVm8
zC#K7L{Iyx!rk{rn$=r9{X1)LNr863H?F6EF?lE3oDF5Kk;jMT5^Zq)1-Lv)g#NMfm
zJpZ3nis#PWywcLUD7UgKSkiLmt2gb}{O(<{eDq=ApT5&m_urX&z23uaiDrUb*e-3&
zlWzj-wjMG%vo~ntd5a^zOXrBiSGql&|JLoy#)ErpD~p|1vq~Rz`e)Nn{{7-!qXX^E
z?UDUfH-iO|x8EwM;>tbr{*&TbJD=op^5*q-ro6khC^7f>)#qE5)h{xCX)1N+#~O+4
zM_<jnVv%}b*Ya&w{O)|aGE=ns@8KM`O7AU~lRSKUbu7PLdUkVqDPQNt&nkOW^|Z9k
zt?@7Uy7i{e*T9b#mla0K#czH0GgtVnUicR7#dq)hw_SgEiJ^7(y>7`3Z_T2tw#0T^
zmT2Fl<+5ez%k7`7Os7=kv>D94E%<z!WRmOsC;FvJO8)*m(^a-S`~1X91!>7X>PsUf
zZGG=`Ef+PuANOo(R9SlZaS?Gljoze_XH;$$)EIf??&A=fd~ssVCbg1?-B<Q$2zpf}
zJ_rdZPzb--dwkclb8GEiE}44S(BtmhImz{TrY_Zwg@Tflx721IW#BREw_?~Aklt5l
z{b=&y!vc+me&s#YE@7Md=0f{xQ=_E)DYl<hK2%SBBYkLoTWHuCtKcP9uWVnUe?~wu
zG2}RB_`b$Mt10%|I@`i$+AU)4R^8;jSTAAT?>Sa1u^KZv>a?>XstzZ;E4~@jSL$E+
zKV)gehPe5n{`NJ~?!Drv47uGX8+<0KEdA!@%d&g-+!voFGco(jIX^ukElq82xl8k8
zlP3vZz9qa{M{&B=`oyctSpzGc9y-WTP{GMFr&#~`%YTou&5x~nd%=Bo^5Z*!RV&}u
z^qMmt-)pe*y_cu_)4uLv*O!-NKF37L?I~u@tZ=NDlOAwr&W<U`tJ97?+<f?OYU~WZ
zxY{3k7GG1JbobQnZypoBq+EJXG1=O3OO;)7xcjC#a{g03JzT`%8>e5-#;ul^(Vkhb
zX1DD&?{_jg61c8xSZg7bs5E!^(xuh8U5o3D=De6O<HjMGpEqJo%vU|GU$`{#m))ru
zGtTWi^7UGag!>|+IakA$pUrx4`V0Rg3%%G7r!~qKS84l~?Y5b;^4+S!lgY1-smWIs
zJV@Y4YhS9rwC?v4p8fS+Z2zU!JN16D3t4n;&Ohf_UM_Pork%SapJbM)vdu^6otxP4
zvyPu-^7YNXXFUI>@`cyp;p&O`4r{K3Ok2CV{_3jgb2^&w_5W9;R)_s=nzvDV_N;R&
zKJR*cVD+)eB};hqV@wtneZD;Vn%(wXr>Dz~>*wsMi0jOMc=YRKz1jAgYA!C#a%nri
z{@^by7aN(a;<qpFv%WtmQ#Z)&)eN&sx4LiS_?_5NXHk^$=0m>7|I4q0-k)P;J$1YI
z$7*KtoT|Pze?K-!eNgM|?d_EOU^aEV;f-M7IdZ!L=Oy`_)Yg6_vRgdScHh%EnU$T+
z$DUem4z`_^w)mfLb==(dm$=>hH9ESlB|Dx>oVZM%E&SQB@4hxx;^!-bF0ZmaJ>~nF
zqfbtLPOXuVSKs?s_hirO+mh2?2Y(C6{jd1a;MwB7t8Y`E23?uAWzm*JCtRKy&(;y*
z);lC_R`aF2Q}osu%Nq&TcHg~Nc`?YOEUv}M^VMq6X1h<P9Ib2~?EUaR<G0ukvsK3T
zEk9q#Fp<hkQ|Z0;etW9tw$#XJ@ssX<((Zd}Q8ve-)0sy_W#i|D4?HYR`kE!)n*En9
zac`-<eP~<jo{mc0z5AuT@^62+{w-+R-K8;`Zi{WZl6$jkx|8tFdB##VPjx$e&l7ol
z=7pi%^WXbE|NnQte4laL#Tl;_8>#=v`8>7Wc-k$K8P77gj%S9QJyx9-^{830d`)^*
z)vE2Q>JFc6U3KwX)Z9OI&c+w7T@0~^&t3U$?k$U}(Y%NL{%%|Cy1O~OQaHavN^<#q
zP1o7Z7q6vk(7I}SdEWhN@=sM)%WYD>$1r!(*-T^B;ByhtN-`^7-{MGp*zhaA`PcV^
zcghl+S8IJPO}25_l>BY2)RI?6ttQxfeRn#eM&NANl~=JJizk?Fd0BeYxaY;zTX)<_
zKk~@%I68bea^I~=@t@`k+v?w&+W1zm?$)@)D&;71KyK>aLXJ(_4{*<5H$Sjb@!>Jy
zSr>Hdv*Tw<?BrHI#<fZ-cu`W`|81q$>+f%RIdP|2hOd}(kNBUvvp3!Bjg8xSFu8CS
zugQ-;``WjeE=!Z&Av#|_`Q1+Uw6xtd6Q=k+Dt>xB;lGi=u0@Ieqc&`<R9ks5N!Qf$
z)-Ki$zxOP2&E8hvxIg}N^ns;&5-z5ttxn7SqoZh*esoiIv%wtZYfD%oyG&=E?TX}%
zw-S43$dsb`L-CJ`B@b7tl$6(osYX*`Vt;x}N=UDBE!x&`T72_{BeRdJUUE&SusX?1
zH}a1r?~w_|pPF7cBLDHeK-R_AB|ltd{Sf{k?v(q%a&DaLx}uF%OJw7^>kIlWy}G#3
z&wG!~P0J^Irs?xljz#e8J!P2we_e^st2b#T#mf?Go+$n^f3m2(-{Ofx>-6L)=7BaW
zx3~8%zF@HC$ecvgXDx5@0~<ubm{e~3ld5GbiZnZ~TI!HqdwTBm0#<XL(;pwV)jgUU
z6~b_^fYl`<)P07c$?K%<PnU~2>bP8|7`<DeH9_c{acJhOmFFIBm7B9@tuFKAlQY@V
zFTdR_A15yT(kog*RIlh)!Rd<2|DyN)d^zpStr(wfrX%{CVU3&F<|h4HmVEu*&r7{$
z_nb|?D5;Zl<85z+e_ipTzLOCO&%&kWbj5_IuXw%j?~T~w*Vdg{?`(bM&cZ!g-oO87
zVAh>^@b`pYF`e%#(&C!>LuWlNEP1{-%A)4`s>o@(mYv_WW23paY~Lf(vp>^pZpq~4
zdF**Bt8H@N;rtiULToD?CCiFe2C10a#&*4a;u)B<tixvS$^9Q+txjh#tj_!=!ln7Z
zIWEd$*=HBcna+x?D_mHg200#MUHgG0_sgxfb=`iUHcO`cY;-*P>+4$K-m>^0F>UcP
zeJSg0HM&b}!d1IPH5XPUIE6XY9lyWEC{+5)v0K{q`*m;Keen2zg>F=>*y{63F23wO
z-)On^SeuNdV=>Q<?MlnjCI+|q+aD_|cUHV*G4Beenc|x=);p?Gf22;Gp`d>)s+ljc
zvOR8(o%iLwbFcbrv$Hg3T`f$n=UaEVfXDHI&f?a*-#e2645n`J*z0mOk$uDMzU1HA
zd4)ZCThDCZbNc_g((LLiskZ*V$1aE%#bnm!l~jnVzd7rESAU-D-CdcF*8ZE#J$u2S
zPiN*WoRS)NJ*q&5;gd_visHb#%GTv8_U-agJ$0~UjolRGm5=xHYJSjU%;MMSmNTCz
zvQv4vR_KbZkcc_!zg!HdYE`N+`TI!n<cx^=-#2dPF5Vcwax0JKhyAC%%wXo5JgbRi
z<~7ShrQhype_HpqYGR5-)qc}^g1sdwYt~7%9dgwb&yhJ9XOORzE*bJ+gQlCz_VS}v
z&)kGNx3V8MztnVA;Dbo)ZgWGawo8#N)B7JsSXpc+=l*d(xWTXMUH;4yH)Km~Lwl7=
ztu98bymzU`IP9G7ihFLNNk+33&1{|C9&w5g+im^+oGJ6Qd9E*~>6}VP4LqmXy(ubk
zO7TfM{^crds@^B2hA?QaWC#m7`9ekXfS2BbS$mE>c$>I6(R$@-r_>qK{#C8Gle|l@
zGHub1fM>T=Gpa&QmZxf8j>)`QIXU}iw64E*WT50DK@Znnjg_~4fB2>SZf3`o+@EKb
zJ+%I`<svUL+r*z<&vj#Wp6t0AvVYs%+q2$tMqiD3vUba>zs}k1?<_W@-v8WQwcEOI
z+OvS7?#1Uz`+c|M?6kaJ`a5TJ#MQ{|cfY6V)lIYTsbSAP9F{nHgZwk!q&?!E%foq(
z-+ld%H(`VM)aZy`!jqi+CUWQ8uVLFeb#eQ{#Ceyy6AEtly~^$o@l`f&5Q^4NK6<dZ
zqHEjjmmzap_>|)NZ4Rsa5}hn3SC_j<Yessa^p)!uT$2CWXC1$1Hq*>p=>M&t6`xA}
ztl3!q_q@$vuLpCZMFj5G@Sc=VNnUxG<ImZGYYWayWr%;`fBeD!h@UH6!v0JOc@(p7
z1D7B3$(%NeFvr!#8GWWHr;L4#4tL02(cU$|Yv;TGi#5tqj2~@qtiSMn#q52#q0hK>
zXXNEqEHADz39LUGUiQAG!rS!y+OJpCUN^mS_}kXpd@;`a0qequIdj*&^qrM{{kqts
zXB&N$|G(;tn&Et%_sq7Nowar42}(O({o0tdTtzMBAIrLfd)L06b^F=z?B<`PU+--@
zHsz{S#NAz%B6HqJ>?-t~6Ik8-K5xgV%QwU$%a>XQTWsH`*}i)1$BZLa?!8=-Ir%x`
zl{d;q$~T7Pm|m;ja&D{C+m>S`R%_TJ4aEzS7WdYc=B|!ivR^h-;P`L$gyKW?8I|o?
zoO@DEJ87|={TU)wHEow@eUaT>-}%$;960;(^zD+g<BzSg)=Oj?tm2&0a#2C}{q1X0
z=fC{m^1HhFaH?_tx3ceUSCx$F8~2^K&}=P#FXn8Qn%{Zpt!_U!o3AEh&y}6io5uWW
zq4m65o4)U~u4+vvE>RCwTHy21_U4!3yW8_~1s7lVQuyZFQvL%RQ;+z}5a0bg<(&PS
z`JaV_X1x^PR8iH{n=kz&%q+`uCgY?gj!U0^<eh1p=`}N9@+aNNpY(F-^_O?~azF4t
zpK&K6lzHkU`R$)-jbip}lL%hm<k)qi^5=(5BD@?&Cr)&F&61n7amwSiix!6%w=UeZ
zQ?spZP3nFRnMK}->bzOARxOJB(R}0N;R%oL`@B8&Y9srnTQSTX*P3qa;b>Dh`D@{w
zvr(-FuPP-in|j;)qD9vH_Af`<GpAn6n0jP;nB=-J$#r6VM){K;74q<koIbqW;N<b3
ziFWS(Gj~oo!L=mk!n}J^H-0?(X~%N=s8!34Sa-};?BD8mZ=w61$4s3Krdh4_1~QNM
zcUyd$^rtaPr~P?)eT}A8z$D3xW+UUopOY;=Z>T)ylW^*TVd{?=Mm1~J<nr9jayb0`
zgmT!IYR|oKYrJ0{jn&S6XJ|3~^@iV{t0uPZKhrR;=<9-03)a|4h@3Xj*lP?y3Qupu
z>U^r#DQed_lpyxgMXb_EY+wDRCC1|YC%V<{#i#Oqi4;Am_=Qy<-Meg+&J%_GZAX(t
zl_&3HtKIm|XQ{(67aO*A9saA6UaZdCy>qn=<CNHmb8KvXT)1$>xA|VG<AYxddt)0<
zek?9uA7MV{g2A)&tG|!8N3XZpBe_tv%i~^ykkiho>z~T*)ad9?&}tB1cZw1SY8K#K
z#UXIC(Yx@Io@;{M(HF5^C69two;ex3^vY^D))987$0Np#|IdQJmib0XGbQIAHqAKt
zY>AxotoE!;i}s5Ds<ZEj>kDx9l1h&fjI@k#oVM=IZ|{?`k9wEwy??{_yM38y%J;fj
z{T$=_Tej!Qw>7-n`g|L|__p%O1N!B*zdIZIn2&!yuuXoO`S-i~RHOI5{I>Al?etAw
zrStV8`TvD#%oZs-`thd;$4k-67qpeHPUj6@f1^+CW>?2k-V8DB51hQxn={2649*|<
z<y<v+`T3SLOiS;JJ$)G?rLw90RL+m3JdX2@YyDZhqbqRr*>epiqbBEliqBv>_-)ym
z$)DNgL``BiB6d>MfM>Cp8k_O+dHZe%yvumO^_p|5+u;{aa#ohVEdSy6NjgG!+rtVG
z;Xj40*9%h{3SF5BkBU9&QhAi|Aj()g{)_mWJBxM(aPPb;xNFI&%NZ*)TQAPF3k}~m
zBgk`~eb3s*)>rqa&ocO)bJm*wg{#-umHC?ff42*K7W<l?TBZ2eY?Wr4(sk?FJ$-?W
zL3_BaPxbhiZSqItWX40sPRHzJqHMjox(f@1_b;AQ!BN9IwdkRv%-^MQk#a{~2gtpR
zczrR&y8nabv!bJ4H0E6tdKppO*sp80oZHPMwb|LH^VGaHM=p<Re`VHoJ3j9ZvwE_%
z=joO6@m<cR7Afp|HtE#HM8inK1E;;4Ei$*yt<8wMyliS=m*4t=$c0mmdHw77qsg<~
z{P4zC7wYcaSmkLFWPbgi<pXB#<JS^abG>bSmgc{3S%bJ*>BgfajxM)XHaSach0Kdy
zv)bBpuCJ1W{ZyY&myAsoVPEPSHA1F~ww51V9DB;)g#1d@a1+h1d1rTay%n8wh%@Sa
zS4>pc1Jx<#nl`)Zy5}!?x3(=#^M%1hEz?bk`s*)iJX$qjQG$p?-|jgwj2i1Z#HZ_-
zY?(B7<*^iN>$pwET>7_Xu97`fXT9z3iru*pX6xUU-Y&hpeEIg*9KW@;9N)EA?C0^t
zj=v>DO786`U14w|Y=!QTq<P0?x$P;G*sRaStrFC<a!Jc3uA-$s+usB}`?E=DLSS8p
z@s}{Y1AkJT*)~s|rnN&qd8PKH<JNQ2DsoJ#drAx=7dDH|73%bI{x{)f?8=7I=UckC
z9bVq=SBihcdP3-3b78)1!r>F=+b4GOuMXVT>#iXG?CBNhivKf(w(S=6Dbb$6aohgn
zJqB5s$=t;v-xcbE>KI>5H9YeBkWT7b?gJVXs(*BKPiUlUi}_i2^27J0J-N<lsseQ_
zVsq6t2M6%lYD{Ll6(O|2GIB-c?v>JP2QGwnoH260VZU$H(^ZF~3*v9e&-wlM!?JS^
zo><i7{uE7_`*JD&3g-a3yEmlIC+#(`%5BwKD9F0&qT2+=Tmwd@IDt<M6Qo;W6rQjo
zvUf~S@M>6=cHs`otj7yj@Ah72X{%6GambBhW<62;K(u1-C!?&-QBQm>p8oaC?q{)_
zi0$XYe`M;l{XbO(YJFI_FCqT&-m43w_J;R1rQK5yUAO99d~f;T@UzWEQvXw`ti)#9
zO+7ug&-eI(7QuxY8##T_gig<4+9%80p)!5*$;4esbN9$Blsq%@Y0sxmilrS(y50-U
zv3yh%9=Y{Mx5Yn^gEtrHl}pSMz282KC-Bb0<_~|2W$IbeT~=^xUvca|Bm4S?JqNQl
zTd>Zmm}2(oyj|m_(@Ub3AGAMe@ci4f^BtUfC#FS6xySsO)0_Aq-cZJO!Po1>(>_VA
zn-(6v`@{4??$o1M8%_jri^VX^Kl9pjS^J!Q=U<i!^M||3E&RT)#=whx`f2GWhj`;(
zJlZNYRc6n04~@Kop0~`e{^|5T#<nic_?VKS@oFWGscp+lC(hYkUa-Lanp{$*)S^6F
z^&+Y6?+5*P-^+5Wh;Y2{!bLV)#B|B^J(X#ntCr6f)R|B(mJpvG!WqHfom}cJnf<HM
zfK$<skMDWq!M&GH2~1qR^loYVg?Gx|v?>=}@~I5%Th$o!_WQ&lXI{xaZmYv5d|CCx
z$NTuNHD@pH(+szkTKLs$@x^1S-*tU)WBQu6_gbhp*B8|f@fnsPncLN~Cm+5YRrQVU
zxRc_91qn7Rp-!U5g*g3dm)l>M{O#B!4fPP#dxz5(-ihAem}6V^Lp6t`BvH_ZWpM=0
zYqn(d?BoxETedIiePv?y#b(BVH#ej<n8|Za`kww=N%{M8-_^c5R(_DIZBmnZz;YqW
z_UCz%H{X03I?q3`J<xpVSJt)%JNZr@T_#?B`gO-{#Wni-%=XR*6|;}8l}+8?t@+m2
z-u`poBuifLr$rC=YYX+<mj<2t5ZNawP<n6M*39z7D;_${JFmv}TK3<*osEa4zFqff
z!{Nu<J;UN}yPTS6VtaU#zFF#<K<n!v?>lbpbg}w*|If6>brF-}{r^o4H9Dfx=`^?Z
za@LtW83#jmXkK~IU2@HOX}~Sv%<@9d+52zmq$ZzqI<;<*PXDzOmh>AD!RM`+kG|D=
z@$YTo$@dqdZ7wWI`|zG|&acgL=6~4V;`u=S;(XucMb{GY60Gx{KG#g~%%2k8#Va28
z*2neMgZr9$&$je9AHCh9HhbQq8dJ{o`hky+)-&cdyRbDyhh&NN9bP^;R4;tXskf6}
zr+j$-&{&H(tlxC|<_O&#(pL)(<ax}HpL5{R3^ttwUVI|Y&s&#qRX>f>EVK(*6mxpx
zrWkQGJ;B@QVM*1u6g+?M=vt|qR5ZBKuemSf@~R+jS#?t-nTFUUl6UXd@wc^~-pl^+
z(SJ>OVLq<4Qx7d)^gdmyx67e9Nc!mV?)M$PF3s3rf533+s>A~<J=e-l{hhWtQE%E4
zdA&EsPOXpq8QQfbZ_%3wQ!#rXfeU*I93p+6mCkVfUQ$th;LS{PZ6>Xwmji6lH$B%)
zYt!qPKk?JF#p!?4t}r&o`kR~ls#gARq@gPHYxUaF*}-QQZw+d-k@{UV`QxL%+PAJA
zs+V2qvY>Q};H_|Tmo>)|<9Q<lt|mwxObqE|_}FzZLjKD8Z}ok*zF*`Pl=^Ud@!@K&
z!=G#SeR!~S^{?`;toBR!x2dg)Qg*wtPD=gW>pAkh?d;{>%FgwMxU-jibFI3p=U$s%
z8tT8dcyUtZ1NRN?g*qi?(hnz;7)`u>%VhbX-L+Mdv+r#wSAA6TeaZ~m{U2T>%{=Mm
z+9dC|VfmFc_f%dyOqq6S)|Ov?)4W4Z<X@;%oyGE`pS8PhS%^q>r$u+Xb$rI&cO8+w
zt3s`e-z=4{m$Y%U<%<maYIx>7-{QDWY__lGaoeY)${U?ID!0sglC`cl!`!OxPv?hJ
zs5#D@^xU=Ul9!Bvwv^4%OCEab>pss4)j6Hj9>TThKJWP(yKO_aP3Q^<v^eN37PeN&
zJcmWG`*PyW)~1xnE&kghWc<88Zr@s3HAyt}<h~yH1w9c=w^SeN?^ILY<bCkGz{SeX
zd!D~cJ-%hnoC?nEAqQ_R`K%#bci@%yS(#Ad*;#Tcr-tmgo3Z87DxYi79n*ZvZt`C}
zsm8%}@r@&^<I(qDzNtP=aQ`WD)5-K-?W6jGa^*>n)ot%ZY0fk`^x)4ro7bjYXWdNi
z-pV?o+fZ8BXl8asJ-WBW)+qn}>9<Fpg?G)HCVu-V>$gu?)=`!26W4IJ7dXe9nY3W_
zUL8**J_p?kEI+rmNKKO6ef`LT-3)f#25u#3R|MjfI3@HX&+;`M%Rlh(HN)9xU$xbK
zu6NoVS2sj$2zKjmT@x36#j&Zs=yI09>Z@Y=H`IK~x0)B~d{^mU&ZVq_k5xCW2tAq^
zX6al%y~RQ^eSM@)w`8E}{dbSG+AfG~xFfyXF{p6bY0G4TpmT!a^OgLyH6K0_ERns$
z%(lWheBI{wedn&7j!9o&bvr`zwAryP^%V(fVrNYby`FQZU_s<B{ts4L1(mWyE+72<
z#<_<7%8~Q+0gW;)8J6>F4{mD}&)kxGK=Be&!0bPKyYDZ#W_YdRwruO13qqy4mBZL#
zqR({*ozHaDU3!V@mVNqOL+jJGlH>C4oZ58FLgwP5OG*`8cT~O~`OKvDFxrqm?a=1)
z8)`(~TsPw>>#{FpT-Dn7>-5*Rj8XaKo@H^YEK?O9Z1~M%a@d1$xpGRHMDdA-JRUqA
zi%tER>>heY#W@GAiL1W$m?t{onoyaQa#-&%sm8Fs7cNyNh<{U?vh63wGAGl!24)SP
z+IZx>tiRcNtLB`3bZ=@-w&#NRbN8NfG5_Oe%q((W$>hrY!yi}ne-N40BDi5^$}UM&
zcfb1HCp~_XuWC=ys+skKM^Bh1#Pe0G-+Hyoa|c%DJ^I44<c=F(-1)sB{qoB7pAxVC
z7CU(8b)*fGXT$x;YYsB5*A=)jS<26Mg@vOx?_y=HEY?%?moF*JR14M)&9g0<8r>iB
zR8973{s(=AmmFJPCWr1^8l6}5@4#F2^`{qndvK_9=HkYKuaCEV<8x<f{(Zdd8?Sr8
z;d9}3=BB@HhOfKZc<XoE&eBH<f7YBf{qE~yvqO5@eAi8%^=lhepWsLdd8eFK#<*Sf
zFpKVP2CF{HYtE0)K0P;g+G<Yi)ykPuSGlMgJGL%+pw)Xad76#dH|FL@_k~G80j^oB
z-5sYC*7D3cX|h`J+THV$=A2fFU|su4b<QD1BY_*;x&`0l+Jv$WTg_|zw)5@G5COXl
zI=eWnUw=$_%dIdwU5d3cK-KKSP1Xw~E~dOkL)#N_15c<eyy7>#W8<ZZMS^0lk}7}3
zPh6h0(_z{)?Ja!4Qntl<r#-DqPrk5Bcs18cQfDjk%57`^ny%q;yTY<mY?k`Bk{<b}
z`CCfg&aGizANtxf#BobEkM0f~wf?II{_INq{3<WsV*ZB8Lvo_;CzJ@C|HwFB)yCp_
z@cz`>rMCKpY?k8IK{`U_2QK<0X3swwR1rTf+Ey;|u3+R|t4odxvUcaH8_r#L^+Hx=
z48ycNX$dwPpL`Bvme%1uP}MR^^KFcWUfR!~tt~Ox;a&`#k^j!5hN(QgbZC>S?*1ap
zjWc3c3Y|aCQ-8keyPru`W|xCq*IN0xuix!hbUNI&?C^u$C|l;etLDvpf8(0?wx!|A
zXK(*<Ju`%dN5FII%F3GbyjSa1?pU5%8=QAN;?sc>cf+@P<e8tI88hkNs_;r@x%k_+
zLJp^#bN_5MnbFFvJ}=gJ%ld<F`+sTP(|f7vn9lR-Y^Uk<Z(H)DbFVxKx%)zI%esfr
zmnM{^aI9|HXI*Xb@aaY0Er(S)kBS$(S|ajz?`z?*6OL!pe`KCbD~ejjx2k#Cq^Z3u
zPfwp}-FP}NsOo0SsqQQ$Cu#c+lS<h>{$3Gw?vd$*=VB2PgB=f~9+<DO*!<nM>$^(s
zU-v$``eTyJpC#ADYk1w>im=*V&%VHP#%=rIgTillnwYlEv#jo)&oNI|i96y@$J-_B
zx2j)nj$r$9xYHwciC?z+_9sWS%wuhk&CXgRb>Z%jRm+!%F4f-sBuq=YdHTJ{i&ktc
z+RU~pKqoLQsrtL_{T*7>Pd#p}Sa@OI<b>ln_3vgq+>!s_*VcC_76}Crcl_=geGzdg
zLt|S7cjHd|T<^I%o}Di4t(tsP;@hXNc^fUx%v+aRyYr=)xZ}ia3g@bAvYHPIbco0+
zbhgdh9l(~5Ik94?(Dz-bcV15`JRft&_Ve*0wvVRXlD%(H@S$_<#aVOjTNK<D-h6Sn
z?%LaKzt-oKM@2ok*4k|?a_9EX+?MM5mIgmB#H`EwovuDr?CimOrz4e9dYq(JRf=^#
z+O{XIfK#U?L9F>jyu7Gb!^R#%`*wkfRdZhKV~7vB=Y3$|oD*ttp_vxH?yyCjUKMhI
zrQw}Tj)?A}qspu5c<)+WO>L0j@?&Yv5SI8OE2(m}$u%MLzE<;-o3kYkvi;u6{_VG*
z#$`2~?g^h}rBAB+ap2O6e9sL*L8+}Cm20w?=dU|(;;2ylUxS7<H#~2;#WnQz2k;y@
zzUADK<($27+&X`QxBfXJx;C8WN}<T<04YuLt>)X`oh!Y1ZC!0}cZKbdR_=|4=9_n^
z8<;%pthm~AIN`Gw<9<`44U3hHch|CtuW#B>Aun@V<<QZnJ@)6<N^!3})gHE%>nW$~
z9NF87dS={bo31E4PP!lQb<%O?uelTK%=FCuOx;ise|w+$`po;bH<yI3=8!$U<oL5)
zR@=&cCMBEm++{i5Yvy9GJ2ha9yr=nDo@<!_iTaKgcP%rmwqE`&ir=wt)z0F)(mxlT
z><v%#(VHH}KGWsEJHDN@xsO-2m1<9TaeDn}7jE7>`4*SGu|j7Sg^6?A2v?Z6PJSm_
z?v~g~0{_=2BqehSp5;<%s&DUD@o^phZQ+7-vg(2=P7XeQzczUM*&Miszo>TSgI9OH
zN4_}8IcwoTrOYo!?%tEy{?9H>%Z{x}_rX(chKs3YyK=<(BwE%lyt4e)n}<RQPIu2c
zxzq%>9eF3};<9f;0n;z1=A{oSFZ6^a`!ZNF#wLEf!n$sP{=|mv2_KWhUj)aBNyxw1
z`SwKLG}-J+HeD)Lb=IzYbvNwA9C^<c_q@2<R+5t%H;V48TO3jH>vz_(eMZx5tG+%i
z_FZ)KP+^m=z}u!<uQu(nUiU8l_LSo6^XzV1{^x6ier{N;V6-o;vqw@=(%8u8mDg{%
z68Yl$%pa@7cD<P!e{W*mtokCkt@nGr<Ym5^_4Z3^^>&lRV%uf@9NgRdwtZju`GfK`
zRR;Ahet&=e`_VIx%iq||518HB^Ve|+=j%)C4@!;poZ;X-zQ;&8$Nrhd+kUI>xmyB%
z8})3Mvx8}U_JYeMyM159e^Aq1A|Unk_nLz_;<|Z_+fFQ$-PClJ-PGc_33r;KcU@ze
zm!sUPqih|;hMV}Z4;FDePYaWH_%_uo;=hkqkm@>@5`$Wo($G%6wEs-9XKE~Dr##RP
zEq+y8{?cbo*QJg-{kzqI-HP`ZPmG$}ZKxG;+;dfHTd48Nt=oIta^L>GRxi3okIS~n
zHzlNC(yW*;<L`^t?Of@&e*Ml{N#Ab<oK#8|vAFltB$Pkr?6v&6)fJDt6D^LFUf^mn
zy0_M?;(CSPy{DgpBtP71Px!9S@n+qWd-^wzwkyg0@K=uAka_%hx{>tntgjO;XGU&Y
zmAq?fW^6Zi)!%uxCo(4*9J(23Kk>8VDyvB=PrkG0{nqFB@`I$t+|b|di`IQf*ppi9
z&JZHHPP+GV+U&UO4brw@7LGY5`#eI+53RZs*}Evz{bts##q)fwBz?ZAG56{M^N(}x
zJvI1cy?x8o-tuFnETLC7@|~S?;Zo!yKO=^P3)nX8ms&6Pmv@Q*>*6h}A6(+}Ti=?#
zpIE4WK6}sRPkOu>YKGk()(O2i5YJ{U@my)k?%*r+6U}z1Zdn((rtMw7(>)29Fv+`y
z)Ab)d+Q)G=BD6+Czm6}5{cPO*nMHT1+aApoyO?PB`h#HDa!uVAZ<beT@B4LUcEE3A
z@BPX;0w1j|^c~RoamwhC=~My!qI$daYx91qUa9&T=G}TtpJ}&u{szw2GfWqK1g1!<
zM(p}tSC@PC);SCHe22Devgg+MmFAq={r+c*?xXV0X^YRY)h&MZ<ZJk{9kY#Z&w12V
zz22jFt8jUq$EK#h!(3*}`PVKssZ>a{Kc2muqie&CgPZwwN2M9FE&Czuz#t$!PyhJA
zDdNUSf;zvL(hf})_<E<}lg6@*3#0eEI?l8qa9i49rCG)&y&ueb`6$4m{K3)aJiEf!
z<kyYjd3#y6xvy^f{?$M3{`=l__pA*H|2Bx*|2QDOe_!TX;rF)xc7C6CYs<Hj-{mgf
z`+c|htaE$(owZv|Z!}14JMp|i?DHe1d4}9;rj_=by8T^{+h(rS=l_ZV*Njrm|J7Mo
zI@8rspv{R{CFN0srBIvEq`wPV*2f>*d)sf5Q}Q;JT29Gd#{|B(_N}-U;&i{g$o8;1
zN1NcyY#sK)@;-T|Ir`3c)Lwq(6vVvS|Dl#!M%3=rxsR7G6ApU6aPIPtDvzrFW^h}b
z-L10tbk4Jew8OR6^E;2W&8pdFu%yOs@;RLsKN1d1yH}80e*5hAy5jHIJsH!L7rH)T
zvxsZ`d^NtMF<5j?|5VHS@&Y`IV*kAPr1$TCkjfs#-M`<LZ9ngy!fNVTV70C8>$-VG
z3N_9%KcCfQKV<w@)6db#xhiR0?caw}9VBw(e?AF4>o(o}xMb`k`APe@A0^nnJ?)<s
zAoHfXDzI<1ad*{4=?&`F-@I-u^qbaN_(4jQ?_Yz8=HfHIqP*7hYj56XFF!fu7(1)m
zu@nQDt3CA^5^;NK-#!YMVbXP9_w8BHtIzAU%5c?-w;ke~zW>_V-|G%GI6eIOVD*E9
zBe8$>KYdmGAoQc(=7VoHaR1ov?4ap-*#7gQ^>d{IauTeUHhbLYobcgF=c->?mDdyR
z8VQ9xpXqX2Ug5KMPsF+KKkh7tPai$PC2`8IFz<Ikko#not}fGw=WgEP@9bjTuAbpo
zX!yg3r)Tq?n`g3k`ILEjucoyhy}onr{@mo%v!^&G@4bGw!-%;?;5eg4{!VUf_v05n
z@ka3cF1=UfSeUjUW{#x$SAIuZyDgS{TBr0>L&`c|MfALQrtelFE%Eqsg$&cG<sk>2
z2Xg(fIW^6wKj;k8?d^emrVZETe5{yvv0{Pt+2j_sI>qw~Y~^Mp^7iTK{0*?X{NY1+
z@~6Ef7aG|vA6flYbqinEf~^Wom);sBUEY}a?@URmua4G-o?4Gq^~lC&Dj&Uyo?m9q
z|MP0<##yrd_sfKH=3l#+tm|z0_;$2v`0t#Bg?mhs5<mFceUNugQ=3=ue&g@^lW(s-
zU-NI*$DY!!w)$^=ocW%Y%~g_jr#Rj6T>Ff92kK_>v&1MoU}0qcaNF?!8&jCTriKZU
zE~z)W<utZQRra$9mGd5$kg;(^kf3BJi&W^U=0#l&i@gE^MDD7)J>RrIKQiLW8Lkzd
zSnF7~t(R-QE;6OIQFMJhcdXL{SN{DUXE3ld?_el8{%3Ju9pi=60{6%plYEkwCofOZ
z+!<i=ZIe!<&bFY}Mt|ey%u%TO)v#>JoCgyhD|t42Yx?)|vW8{gIlmM4UjMTZ&t)(a
z@30EI8z9$twdcqzcA-s4o!5&J0-Ta2Es)gPy>rr<&F3F(Ps;JM&{-vv6qx$Wy{vx4
zx3G^5U0)N6Y%d%yZ4*zi`)9LJSKI2+>etcfzp}PwT-WnkseAVIx=cOG!~SRH9t)O#
z$D?ew^@Y(()wp!7AG({2_q@F9|90YB#ZwIqK0Ej;ogHkueH|xSPB^j5VXYL`QZe5@
zQIUCDJ@U44S6Hogd{;E}C_~$Vj{E1@AGkZM$jQ3dyy~g-s~1mizdDeA>!SJFu9HsR
zrR*D5My9rF&AM-O)TFd)>+1=RcmjBLrEO_lC@EUNt2VnaXIB^JbJG_``yVbzF7gZu
zTGy_9Kga#sO~Wmjny06KXFu}q^SR&aeQrF^+PW~aMlXKm2FB`ZwZBgFoP2rhq@;Aa
zI>+4a6|reX@elW0PyHuf9WN(-bn5$RzwobK<|f@aOw*)Iw7OX)9$Xu0vZL+dj?_&Z
z7aX*s7X+Ft^6*JA`ZdpR*6bC9_aCJQtv57IOD;GgQCOtzmnU}E#rXiI?Aiq%rH-gx
z`8_ZA=pw^oJLgw^z9+xEuEu}<Dy!0S-~XI@|J{1|s@Zw$)g5mi_~-oD@PhM*#qs;`
z>wNDWQ=Ivx(|1vk?+^dncl+M?B+GB=UToN$v0vhr{;Y5P3ohDb#>*}E)qd%pqKVZE
zx9<xsI-1<_Gd%M5%a-{b?BAByM6s^8sHJBiGBe@iy1)5-zw9k}_ox5gEG#IWZ@=bF
zf!m^%xjX02jcl1)D{<+ZnxOS>mL-34=h}BFE|Oa9;=^#}ugkwgyE$S<kF;3pYu%7J
z&=&C9#o~9+>i-fe{%IGrv)|iv_w6O;AO7Dic>Y#fEq^ZZt=SsqLg{Z4?F_O4Lf#(?
z{8swU_SW{*-u;vAU3@EUZO7sHmaRG@Lt(eJIMWU5rB&a~-#-59)xMvKzP0bZto>kf
zO-}iw;BwtGjb6`(|D_Z^bbPfoP2jz{=u*J9jsEg8eg%B1jpti&uW>QoGjYEAzbAD~
zo~F*}Inie?2;F(8H1n|QzNNd{1+FYQyEOm9e>N_gGyeh)`KfPy9-Y&hEIXwv@|E*V
z=5^82EcsWyp3`{c-^yo(?`^+qd}Xt$Xl7Y`)zi<P&+iHP^KW8$TuJo5zDFkiHw475
zuCHjYuYMsaskiibsoj@XQJ+@u?-glHd2#RZ)z`C2-2(d~lZ5-eT>U$9+UxU=IvlNy
zJimv>%IPOx>FYTbTKq$Ba@mso@6PWs{}TVGBhuQ4FZJE^>yJBHWglj*j)>ixXH>uM
znElDmR{vGbJAU(=x45qRx7=0zxBoKM{y%RMb@}RXpVf0LA8$O9aa{lA>srI}t?Eno
zy`;<)Hl!#0I<VwRBjbCU9d-Zo+n(fBJZa?pd^zZo*^Xu6{k=UWPssOP?|9Ku^Yx$6
z#A&b9HmGOs*uP}G+@tN&+cO`$78Lz;e9QN!pSsKb`T1Wv<;!S$Gd;dXx`tV&YVN(9
z8t)GWrwECp3G+*ztzyyN9QgdC$t#^Vz9zF><9%FZMO_xp+c;y%k{6#A%oZ_v;hXX7
zlXT(U$5oT7`CcEh(0w)`xbNt-CyNgWeeG@Tv-b2mS#Uad%lw-23K7%Ozvjw6c>I2`
zxR2TCZcpW35pxdz;_seZ;GZeL!^qs0YT;&Uv}w9--L;mVC9AH!uXlIryp~X3U9e#P
z`Olrfb2S%o9&T=G=BZQs_Fx`kqHWF6D=Q0YkDoo^U;femLGQ62=N#piZBkD!{Gz-(
z_fJdR<KW-D^7r*aKk!=n{68(}SEJ5Xz}BA5Q}H$>#CeLIme>4>lrN7S*k?JPpPThS
zzwV!H)0F7+IaBib!>pD|GtbT~DQ3GDZf2MGDWLQ2|Hw6LnwdFoo@6d;HWo7W5i8SA
zG3=XdSN)@-ZZX^UV?o~PFV;4<rMmRjWVk%JqS;q?QqVRioqzh8fB)R%_fKee(9xjq
z|Dm(8u*&X(;@)ivs}s*`_%Y?cgaa2mq8rZU@N$0Y_1IUQ;MNzb?!s5LX?NE@uSM^8
zW2?58yT8o0ddIc;=I4zUekezMS+~LFTk!Ul^6zO41^w@MSLZG~dG74R3;&{9!fq_S
z=%8%K@%NCDOyadxyM1rtU$48%!P#H2@$qFJ{jP*};@6Z<IMwGHJeqMaC!^e>B-lE7
zWB=hB_ts0dcG$G+72dGu@lJ`qt1tKe__i|feNUa(c8xC{*B$P?v%R>xtLfHqj?(YP
zef6d9mw%a%v07tO{gvy|hm+h@kM#8M^Ga2`x4n4sA!A+R!7V(&eJ`@J|3@d(y!i2_
zu$ImGdGFioPhYo3Y;fAbdaI|7abI0+kW5gLetfWl!CWDslux`Ld#CWd%vhgjY+$wW
zRJqmkca^4kmds5aQ;y2H9gh1PeQ&k?+uyVHN!eD3)SEm!aooM`-^BgruBQKK>f!vE
zT=ms2-r(Ur)^i`Oe!Hjn_qW>jZS3D<FC8!R*O%T~erl7Y=f}-j#_Bq?3YJg9z15bS
z^Xl&Lm^*LQztxJii`snKkFjfCfAM%%X@~bj9lgEJwtP5HqMWp|&h`6>lH<?+_Rs!P
z{f*<z%kzsTc^IC_?@o*6ukJUn-)sN-&Vs&Lrp>vl0u9)IKHlM~vuKCpwazNJscnZV
z4lkT3GU?EwOUL&o2Ws}Us$R@AzwMlHBD?SDwz!ifKTQ{QWomY=UirIuUA=-`>usI4
zH^a_kS~d5d7ydhWQI6)v+O{Jt$<r=!SKXhXxcIk|v+dtxb)MQ5w_mr~Tv`<ESbu%x
z_+YI6a<+`UhK|}vxf6RX*=wAT6G?bGbBf&U>MJ)i3uoHc9Zj6`_QhHKlZSQe_P*Pa
z>hp5?#B2J>i{ob{xYqnSqAB=#g5t(+F0*#j=d6#A+P!}I{P=+Nalba6u4cWs;C{xk
z1AC1R{(HOl$Lor7g|jnM?<F?QDcY>IYufRS@G^I|cPH!?Px}2^@=RLrk%ouNzxdug
z6&Elrx*+k*bitp^o!|X@{<)?U<t%Y@30T~8?~;CMPRXk+3vHQy-xGc+At?PP?aq-W
z9-G(ix7FE`-Y|dvdfPSI>pk`t%)Te}<hA$<<$J={%@4}GP>*7+t^Kn`&3nOq-JAy<
z|0a5FoTz4a$B?B?a7oPN-V19V24=TNZJqa~BkJ^A#)F2o)kiP?_#5>gDlPJ&=nlEP
zyHAMT&@JNBDeB$u%g0EmXyfkN-`u_};o825E%F2JOKB-V;k2148&B@~{+h4d-R9K1
zXB+#a?X;qtncp5{EaRT5FIA~?d3&|fiyhzk4W4;Qe0I1StTMHyZZglZ)AwJPueh(E
z{VpuNyiG`Z^PRmjn%_tq4o}vuX1)C2@7#CioNg?(|G%^E#cZdD559sr24$0OTPBp$
zu*~u4kN!2`#g-j$Codk96n<1M_~^a3gv<Ny8za}g4QCd9b68&L?(_90FJG>jnQP|l
zq4E32?5pRqURx>{Y2JJy?sAy<ud}jp^}kt{HXPwuvp%R))M~n&(CgI-6)%G=j3Tx-
z*{$P0JW=k}#D}|<mpt6#v!P6dFZ|}ui2`puCgio|wb*gEJ8f0=)DT|LuG^LPhGXF=
zm8aYbJ?vX*!#?^7t+?{3esdCc>bJk1jc=~czjxr*tt0l++O1EpZ2R{#UPV%N?jk?`
zH`NP%y{K(gYHF(f#i5qC^xk&&^K!OTQLK|s=9ne93T0fK?Q8cYJEp1ThWX9>|CS3k
z{}Wv#{9pRh%m1~4$GF#*OrB=l`C^yryuGew<sJ9<B(MA4Gdof;`IGf2*3h1(cb}B6
zn!#hQxcdL@B)+|#>!M%jezoiW_xi}Mg5_K8=xp0#-Kqa{Qr+a5OR;}8z1N8Uv*kv5
zx!1Y=CHLx0pR`7+CWJYBeyjR{zg*qXwn;AeQnJbtDJAxHr>>^@^D0M}PI6Y7Ke>BB
z^MC)7ix+tREB{yi&$9BpUSi+ult-~%nKzF8&p#?{XHesQ{-SNU8%w#DpG$5^&6Ca*
zj)B(JPj|<i-22VLFSGpp3Tv;x_sq32wg0Y^JKVo3dnv!He*eGquJ3zJmb;XBZBafr
z@s-5e882qkN#A_*L#r(3%}K^)_ME-FbEGXY9uzmT@kJTGh-yE=S$J)STw!3LVPWT7
zqyO=`e`d3FypssxU#rA6%j?feH&-?O%gU!%vzAZwFkTtEv&SUnr&y*Mr%Tkz7^hu<
zKfBVnSW}pE9cE7UI6U>ShxXL%6Z1l%Chl8U<14Q8U-y#oj#WaL(y_gtdOZ$L-Rxmp
z8MU&e^9#qvg{xa{dI{a_FgojTcxwKHFfF4?y<Wn$O^=N(6)a`VRP)yk{4cm`Vuwe+
zfUs?olveA_1nHiV#h(l>DW9@tdi>LT$;?xkjUQdKwrs1O7#Da<Avd_kWBs;x$Evlm
zs;#fP95n>KuIb50NOe)xR-P3hdGXAt4zVejqFlH7m2!jkiADvsE$#cZpIhVVJ*5~y
z*;5`1d4C#vL{HWBSg)PyG<!vQ<&^`U_)_;2h^F>&giqYgas9{E>n+(w8ounhq!%N6
zR;T}y&iep2&g+5CvX`v2D3aZ~qi2in#EEfFf4*Mv-zw^0<cH&e1&1Rq9{DU*ckSZ8
zy(`ksxY{P`Nl7{{Nzj0hvm}L=Bq%}1sEF4d7p;P}^nKAfzqs_`p(yvP1ow#79=<mH
z*Ie1Z{O7%-eJW;2t{2Ot)u%+3T)(BSuy<XLu<Ql<Qw!LpIPz*VO9im~a+kbf-1mP|
z$eeZjiT_K_Zj+hEb>~p+Pr1{tJJu^?RW_<{F-FC`33KyzYBh|ycj4`hi7~=*7e1*O
zIasWGde%kg{q;{`cekDUWS6q+#l=ryMh-R$pXTloKXN+i-gFU(aAWx=(UUg%o(@hj
z;l1$5D#=9u;wL6f)AbiVC2cpVN;2KQ;wkUlK55UTmD{J8Pn3Jcrkk%;<}I(Azi{T<
zr?n>>yeCcDK1ps``<6Yue%q#GRmM+x6wItP#n%0L)#*>G=3U*hD&2JbtH`t6cTcUT
z3j5racRbW~b!F)JthlS2XN7-V^9+Ui$7rI5kY~#h1@qSbMq!$oYN-x-A0OO^_}88E
z>U~%0!w%`4N<#g{i#-`#lr9(O^gnqVBYD60;nmhl+!LQIcoGp4-eB~(;7qSjUYs7c
zhD)sFo*cn%rwZ0|%nx2)-rUHNvT%;Hsm`%`N>6MuydUjPHsk-vG-ayA^P-r!hwIgK
z`>zMBx%$en(`l`5n3I!ycjauof7Kal^o1+piwjk{|NDh&zHdDezqvv`a(9;frouFV
z^*blXYd$bdb98_8u`i4((4X;oMCY+h9PV6|tFz{=nLjU&C!$+*kG|~w$IG&!pPq}-
zYGYIR$DLLg!=3kUcIun$4{U1szuvfPDYxp}l`xfadp%x<8(x2F6St|m@VlJh+RzWL
zuf*vesI%GL{%*14;cV?EraI56G_Jet+r95*$I8Fuh5y$4f3;&uQFg-mtnQpOs#gLp
z-ISi1JTGh+Pqp`!TedG+t(>^6-8H*!dx-Uk-Mg}$FZ&$ZWSx6;+pg8wY`<Y+7xv~%
zf33n>_q~3vzsyohS(fISclI9J=KswHZ{CjH>%BRCt9hi<f1A3nr;jh09J6><a5{C3
z*ayScJDz<@FaEE{|8A35X--<g`LmWAzAZ1#{(i@#k5j7oQJ(FIYk$riu73Gwn~kLV
zrq1U6LY-4jKKy$Bbj_7)+X+G$hK!p!yluXJoIUgS=Ud!?$Cz&?{rOzM?-g)3NhVc!
z#_8XOY@R=hvhI8SDLz=|>9^Z~_hrsSZoPH%&aG1x&ivn38_BU>S*?1H{n=!_yuiGB
zZL1bm{<+2Xwzv78nzGWW>(k1t7yl~eyY4x?U++>~tHFQuTcO`0Z{|b<T3%1|TYmQW
zhtH~alElk5e-^rTS?TPhtGi-sQs-4?@4s1T>SR$6s<Zu^)0fj%Uv9Qf3;nWq*84d3
z*sbL*nV#L7SA9*nFY><b&Ud})y)&<G$dgL24g9^x?JwVI{kL-*iz;|@A8j;wtzNzA
zmE~)-xw}kW@4w1EBW&i=sh_orD{PYX7M5N+>?QVLM%i+~U+F(xr~9iEn4Mw2GE-w-
ze<<h5ibyXnAD@ZKc5L?UKHXJpd+ElbOOqa5(&^v5LnBTqHbB9*`1#Z7Q%f?}8HK-e
z3itbSV-3^yJwe-_=uO_V<j^CT@XU!J(?Ubk9`3OYKXq2CL|kW@*iPG@L6JXg{2RTs
zboKO46^cKd>UmV-RiWskQ;TFYckkG8A~Z@&-}i&Z&UHHel`B{KXqBdldgSrnI-w`6
zGF3FK(XlLy^V6G2hdwd&?`8=Vn<~D`D{#}9rw>J^c&aWv`rvHF;%`k&k6eT7I=tT<
znzSaT|B2otn>F$YZQe_m$^~y}otye>=jV!}S<Z6dt?c5v#dkbXT|3(_H7GIcVv^==
znYrPW)t@fz%bplAt99R$T^Dm>W`t@?oxUM0AX%<&%FgKvb}W~WjXJSwimL7@E!~jY
zNm=L4o!4SD4A1;y5*}CS7?$~*V@avW++%HNCwx|L%$>w`TwSd+crW)aSL4VP_UF%5
z>~L6PqJ2DcM(8dFt+e!AZ=c<(YuFieVYZ}e9{;-e?@oSNQS0NtdUQ`?PS4!sSKexM
z&ySh+_JmgV)S{S6dzT)yc>Qt85>*wQs4W`%HZ1=1<IST(Eax9hdbH=#nn{0-a^9SG
z=aG{C%&;j>i#K0rWL<M-&ZD9gWgA1{o-uKjbk3c&$zamDOHSL{1!rxaaar0t`BTOm
z-KW+P&*v1Cx`;pBz4`O**zWN1z%s{5zRRu~r##lv)^uR@d9J!NPvnG~X81()xK|mw
zcW|&hEI979?oj2MMe9~|S#jN;Ca8bTN9vV+bJeEM-LG@zz7AcTEusFPV6o^7yWm>Q
z;t6vexw^6*jl3((`dnwKrpSFurlU{iO)BEQvhTv&w@Im=Vp&zUm%PY3*3|Ff)TeFE
z?I$unG%V<1rM<_LfKMtr@45vtm5ZoMkPvPCu`&PCgYv)@s}H+^YTb(3&&HQTtQARp
zp<Nz*FD?0LX=i!#z4QIk?Mt>leOne5=dt(pr+@$U{IM>NwlffT`j_=v?SHj9mp6WT
zvu>CANB3ENIZqOW{NAdxwM|x;<>_{@{X|NX!?S=RCA%g}x#+d2XPuh=<=zzA+UA_a
z?kDnFI-kfUnynP(I?>+bvrlB7>ZS`$>$t>MIPUOZZhgN(C1zovleDkkx=VozW)>Q=
zTm2N{t39B|D0At6BC||d!(p2O4aWA=2Omr<*08s)eei+H;*Xq6U-RMR4?eJ3oOn<W
zn&J3c{K7xiE&pY2?RUC-Kv7m^*`l*I&5JL*eRb@hxXiES!?q6$xMY?!9d>@Ofk9?k
z!{N&hHZaO;Yd)NR@L_I2g}ltGgAb((c4(XkQLpiS`#^w|ulax?uZ+=wL^X>utnEJ^
zJlHvtxqAAR$<6W>76%eFEP7bmUp_G4m+?BVkW1!T)8Vv&8|-}T2Ojo6_#j^JgG*)~
zbGuo=h6ZN|sB-pp$p;gd`BWcl5RnPHd&Y79T4{D`3m%sC#0L`?`HBx5<mD3uc`%2i
zeeZ(;4w=4&!=42eynNGJZiWbOUD)TNd{B{3#;xJ7NI?aM4A;ShLNfE%+Ib&r_?yOe
z?BZREAI;7-7ClVunh!p3SWIbfHU$NhEy$#Q9DM2r7c$C3wRDE?^C^P-cJhG%pG;bl
zvz$dp!(q098_ay{2N$x*_-*)+cqw@D#>BU`x>tv--IZY!IQi*|i+69t)m&5wnw<FV
zme%r=c<bv5LCyP?a7A<OKa{fS0PAY44ao)}YhtapuVR@VoF%l{L-hWSr=g+Q+pp%`
z-WF!NIF~IZ*`{Dl?D@^AI^jtID;#qku=Xe!cAe|?%jw+1qW!^X-$5UqXQ831SEVHc
z-e<qGHcW!UY~d+)|1(vSPv%WmIr)->+tyIBf;pq<{h7OJ8`t_;H*cD>xp?`JluKQz
zYH4ZfayQ@p=@%V()wRs+is0l2Yf7zL8)qD0J9%?K+MJ-bXRAztC!e3VN;%Y8;k9DV
z*Zwb=0bet(1si|)xtYtf`wCBMmXv95*1Ib&{8vulz10|1YI5LmrMT7GxcC0rqP1^>
zw90l(Id#57BlPaYDP42*mL@HCURfo(v0$mySEh{}TQe3ro_0LLmStwRblcjPotw_)
zEKJMR-S+m}+jFHcVa_|ayu%D1yR^F5no8Y>yShrKyD`dVkw#V6<4;%R-bnR&OTJyz
zHC0>t%DJpxYd5`EdGy4(B&oRFr<_(U^*$Wx7L#T5=bqQLk2S34!z5g@u1x7sY+7WZ
zYb{)<8JDs3c!r|e{F3xt#SWsv^%gr@U+Mhv^9}#V-xV5qljq2Bg|53>)|UDOo8P~D
zMR#lF^NP&$>vG}Dm**H>d3fSPMCsv_N6$m1uD1Fv7&^E6i2MD9)%saGcYb5*o)~o|
z=Dzmo)vNO(YE~Q#v)*3z&MfD=*Lkn=4q;9^4$WBf{Fe2XyenVcB`<h$`DJXExs&+m
z8T(dE3k%oZ8~M?$>eXS9`wJ`Oy=r%5{+qwPN`BSnmjQoeOV6Km&+RqMxcFK}ZDsK9
zTak6GPxf5g8Qoa7*x)wrTN#FZyG5Q{+3eOB;ks7sh_$v!zuR1K>rcgRzp=?He|`9P
z0dGrx@2?+M+pe|c73UPMIU6zipw1)C%fidDgs+z$J+(?JeNks<zR`ihL6;-{UkYC9
zmSy^S!_r=N)2oj!2W(uKZL(_ms%7^KWkSQ4x6aztd)#Y{<l4LJOHQ?LooT<n`kC~7
zPv7*LUqa-bZZUi)ms((T`^N%{;7Z4@vp#03$tP_x(w_BV&Wkq^653ZIdFQSz>FrrR
zF{0Nh_V|qr3m={ejDE`d`R|c4TgytbpZ^xszL@>3_4B!PwLJZP+czCL-cp+#5U~Ht
zm#JKBE%U>VyB|N7+>jH??2_Adjxp$SPQx0ttgUw}%HG_lHt&<Qt@?6<ceVc3ThdBW
zN_u?umM=mMu55Zd+5X3ay;t9_x6884dV1KvX8X2n3zZICPx!ImP>xGZGW&+7eA{QP
zIIEN(J*|97Zsp;Cy*KyBT$PWG+RfuW?PkdpwQJXef^KiT*>fc=ZDz9koLv<kudvI@
zTs~ED`^<`CpN?L4zuNnr_x#hJcOKg4%*ndoW#n#hX6|jX@Vh~kk#BeHNlc4R`j#qt
zlJ9J_;`7!g%!l>c&hgI8zWg$$ZQZp4y)$R++ji}~M@=tV^VKX~US8iLZCcscJI`(T
zX31Kou=P>Mifx*I4qQsUz@o?JJLh)k0fRdYi;qu>I&1O3dy$8Mr{YDG={@SlJAzUb
zd@5e1_WTdpY7%oQJie&G(BsI9pHfm1({FXl{@mHw$@^+<ORLDl?;R8N?%2}6@^tDh
zu?a_-bo>P+`;1F|Z7~$$RC*&We&zk%bjvQA-SY!JGhOT7mHFLwqQ{HBm(@1jzZ%lt
zeQR}GwW&aInP()Y<dy@WQ7)4zW}Uh`(Z=`rOP6_RW%r&2{Ht0Xa{T_>pzjA*R(pFr
zV&sl0TcCC<RORZMI=|_j(_WXov{Sy_GQDN`iQ_H%Y8pOX3GKL^r+&;Oc~R=z(&*_o
zzO6WP?vB>J)l5NFPq{s^9kL%ZH}bcwNf!EdZf%m!n@WRM73)h^eTloNTD#4llXLId
zKkFNJTd6#BxzsFcv?X-vmaF#D606(ZO75#W@<&hdroU*}voOiZoGEt{&#kmq+&ou(
zj=EcXTG8j38!v93oLGIV>NsnU^^#LR!goKp7d|89&HlA9a|+futIeCWWvR2;`{2}5
zhi;#|ayXbjJ*sZ!mf2S}CvQJxVt9E{=1jFs+3)((jgm9lSD2n%GrzJd?e&@?k)PAw
z&MHky`>UfrIr{c&<7Z`uEK;JLt(mpibt?P0GS2MR2Suj&2}{aF{XMahZ|3xgd-ppR
z`L230_oVe?d6u3=owN5R-*5Oc?~iTX-0DrgEA^J&S^MtV&y%0!+n$_RKd)Y5#k_dq
z|Hqn4)IP5kpQ2O2_UTm9ecg)mgV(wD=^2RnG(Qm$5#6)kWOVCauIr+5dVh9l2u=zs
zslRw=(O1{`S&wvgh4^&2JE=`~nYu<lGc~AcMUI>>|Hn5UY8ISa{^p`#oc`y%r=K#P
zVz02%h~K~AywmeTm7+ndTXv+Kd~?Y;D|1g=n73|b;?rq&Ds<j%Y&yQp=G(nwU7u-u
z@lj`=Ubyt@)P+-a6}BNWc{Equ3ICb(^!RBeg_)<#7Tx)fy7hFH_T-6iNjp=wo<90C
z@U*&q{E4SYS1a^HL#?%(Cx(T{uD1#=l~G+3HY4oFdXKn3Udw%tZhh+3sE)A>mJKZ3
zQ|0sZ$?;<O{OFzUPM%ShuP}N(bBpQA^Y7xHzpRM0Fa3K({EfcZzKY7=4{Dj056@m@
zX1h7_?=soh_ilcf?kjE{ds`=u?}kpU-_197Y)U^j&;Ficx9{f}@4o3lai=OWZ+h$R
z`Et?w(=^8DwEW2JS9g^@2|Iu7Z}k0}w|0Czwr%2Vt!;a^+E)HP^EULhd0u_$@8!4m
zS~Hc|?0EcBR=k|;jn6&Hy7Xt~F3t5W&%1eZgLXprxpk?#<8FMtxNh_A=5qCSahrZ$
zcz4bAoUQk_J)552iQ8nJ`u=Zq`J3Du;(O0;e*eJk{ps@)OjR6y_OUQII`At<a4;r;
zj#}hlU}MTuY2jg3)4V_7<N=WctpfQ8oPUI7u=%j3F%>t+r0Nwi?sV99$>Gj{ngqrG
z1`#G#2g3j+8?Gr#si)!|1@cWON>JRuv4UZm#^;mC2Z9y|MX=ed{xfwA^E~Ej%+d|d
z8*LB7CCGm;+8|#cy!l}C0nR7?d1@H`uzwJL;QT=4L-+&b2lkEqjs6Y64wE-^%whe<
zXW}d$_dxoAOo7~l#{5RH2TTQmKlpYm$x-~j^iO9D+dlTFM(qQksm43mV%YN->@{Y;
zbbHFYi}MCg4&yea+YN6I@Fl2k;J(58hVdKI?}q7(e-Gq0gg4x0TF<nek-edwosVff
zb9+P7(s}#V*SPgFmmc7JaQ;;KA(5xDiEJN*(}Y)lXfX2pF|{b5LSlXYgRLPy{Z=SC
zpVU;+dfp*tz~FX(Wd<Yn1Lg=u=?B~_8gUUb#KoSqwpJ!4Vlq=r4{VZ3h~(X{hAkqD
zS!Xrlw5trKvl?K+PZC|#`WcEFbrR$z@alv|d5UgeTERB2RdgL@;8`p*Ijl7+QS|JF
zuCxeO<28#U!!Giy&S(oo5w={rWuozc=?=^vL@#idJiHV6;QayBrE+2yIJh%fSWONw
zNhLD&F5!K?PHX-FF1tq28Yb-@EMXrwuWF{RVCZN-^4<-G-9^)WF*7<S2(Wx%XlfKt
z5aD1xG}TRN>7U+jOezb^FR;Jh{=)o=`Jw~QgMh3|9Rmgl4j!gQ4HXKE9xQCko(F6l
zj0{*j7~7au9?)+vNsus*kznj$abxsLFfm}0;9kP~xZ&f0y$);!j59cVnADhq8&)2u
zJ;3uNRn35V2Jab0t%KE)8)Q~6g)v+`@c4k&1I`DY4>S`*KV-*j4*YoN_MQ)B`g_iD
z=YOVvxoz?nj$^O-4+K82ec*rKw?&=I3T8is`Y^vkr~moMwYQ)AU?3@{cKC2g#S9+)
z$qy5aY<$|Fg38C{x%Aj}N>mFKZk8;(+`Z$a>zyx3c~yeuds8-kGE92@yJPNq<+6SK
zH-6eBJ^%edO!A)6;pmi#ZXdbued^kc>J93R%Ns%uTs~lYV146Nhsi~f*J{D&F30P<
z#?tKvc10)L)!pz;ETUX_&2Qs~@97)folm$s|KKkB=F*cJ^dzsT9^RD_F`ei2q{LXG
zHQsGB5KNoDwl(y`1}@1k#lu=D5v@F{CnSm*t#N82O>m}M@V;iz6C0Q$!xRp4r9?F9
zoC!Fm^lzT)8(VKTVf#C^M;#XPDTqlh@UUF!5H;Q;TDX}NFKT`AVBQJVCrsy+^wuJ>
z$|=nw$AUY0mkUVyE1JzabVjmirZJ1*COKlz=BKP@rimLw#~sM2WW>&CxEkZ|emw_&
z0^2XqnaVaj*WFLZOyZiK(c*7%NL}ioaPNmsw;wLbHH!r8E^@$xJLUIi@NPbDpuj%y
zF6$Gf)DNuvMV$W%k<drcKaY!l9Dn|y|NKMw`G@W8+Uw^uBcb;CIk=E|zSHIWLirs&
zw+y*8y|h&sLZdG3wn{X!`OEm_OSsDciFgNo)*?CEm}a?kj{Mgbv}a#9Z2ID%)RzL@
zsvT?y;oFAWw<YA|9=vm_Y3Ekf;%x3`*QVXR-StUk%f~zRDcbznzB7_%8yq)F?8`kQ
zbGyZI8|N)6_Omto2=t~Yt<2GQ_kx+R7tZKqq=}ns=ALzv^(;tu;?`5VH|`dqp-=f1
z-<dXW-r(88f?jGLEUj*=J#hL!-2-!re_S85K1dZX{3w5*@WHBpqk{Q|?1$<H1|ODv
zGID#9`pN9mdxrN+rU&F3q8`AqvEhT-2NnVBa{^vH5HJ1EZS})d_Rk`|x<K~*E1Ki4
z9Mne${}j1i!#2n1U-6!6%=OIs82p^Sr#I*~vOUmVAea%f&*jQrp}_CnKc?`^pY$-;
zsK%?!|KtZvNjufU%Tr*2N+rTdUm{&zZ0@*_F1YZ#lGFUwQaSgQJU1lNcC?P8`>%l5
zZ$+JN&THIXZID}exM~UC>xov_Iq&2n`cFjkn<Uv@>iFuRd`-C*8|P=-u^Rp4ebWu^
zpPunP)oMD+B^{&QbIOS(v%f5}JThO8K`ZdPQG#Uv>l%htjmI0O9uPh-`9Saitq0dv
zWUnonWyg)Eq3eVF4ku53xN-50?T3O}nV#~ih{@gPx^W2!6|ru7%9V6l^vE>r4&88p
za4A6~WH`y(0D`Qp8(3X8L`FvT2`P04PW)+@_>)ojGxM_^wKXc|5>*TNv^$F<Jm(zt
zdL;8~qW27UDZ_q~B)QBZHkUdoSvCq)ZF2JecVV(<)us<Cnme2i3FP`I-<spL#j-b}
zSnA?4lSOAUU1neIFk3DNm)K`^`1Q?S4sFv<e<+fS(>r`RwPGia{`7}WjrPQ}P2c?U
z_4^AE+*=jhWL<i!IwVR33|}cEU2#0JqPZiGU0^Yvf}5;Ek5z+2DZ|E0?WD_LN0zPa
z@QoIny-mq1*EQ!>*NrWrND{goz9?wN>6}BcX~OS}W*1Dq*|PhL+MQIhhkBbi%V+u`
zqzt0ck&(dcEOeB9&vj0vc;U0yBQwhd)9)RfBhg}M$gwY;`TqLG_ty`6&wlXR^uu4N
zA9cJn``M6%KbwB|_!$jt=n;mX4<G*@zO(nZd+hz6a`Q{Bt&LjodTCg8xVL`PmeAW-
z-r3R7<<*9JAMgr9>z0&vztOC=nX@h6TJ#Zar;`)iGF`hk*i^SHXqnQj+B{3ZQ$=91
zkCRi!NrC51X?6WBX>3Q0e$Sa=yL>r&)wOxYljWcHUsqQ6XSDzP@6SK?*w4>TQ`;Qf
z|Nh$J-Cuv?+3v$&h6esM^q*O8k$h$KlB%g8>nFVm4f=cACb{I*OF!GYE0<e;Em=PA
z-IdF8t9AwZmxBd=o1K#=j83>CCb6CMSZ*WDnU#L}=U+ax+-tLZ`tvW-?g&-wulqHj
zZq|bN|HABRJKonUdBWZrUU`1TB>CUJgwGtx`6E(XV14i1&nJ%8bu{+fK6SlS<M{sr
z&bzV%>-xBCdfYci>^~r+{`>d_k<%Y6rak6dbHK}{(`(J4;0meLfvu)LOzWDrMzp7Y
z(7Co)N;=?iTwQnXjh3@Fnx22K&T-XMx)D~<lWlu&>%0e1{sn8*cU%*e$>u#Cb$H{o
zf;FZx*}b37?+aMm``zo@#78okNW{fMmQfb&+|M%}%IKOs+?;zTy?8<x-=$NIQI;Os
z?3qs$*2*lI+PtL*Dp>j5{`0%~XLtXfF}=0JP5OGqW2xMj#l6{E3VY4gT|5R8{A_G-
zyyl$Y{NgjuWj<RTud%bAdEWoo=gB|+q}bWt^nCZ`!rmSH-ybucIov#>pY?~N*i9x_
zD6IY<GVfScNMiAdDX*s#%~e}>`AF%k9e%>sGap&`#w_oAZBmFLsHeU2wAZ^$lXf53
z;oXCSINf|FRlNM>(b%%W>9KcG#nWe=j7%$<Hgis@TKdeDn<raY)0p@<|C-`$uGgV|
z)k61sUd<2sIy>aATIl~ZtLnq9+OK{!KlJPQHuV-i)0yiz>X#cFF4?E_$2LB{+;7L?
z4Tdq&zhW%Hez;cDzqs_l;l<>K6)zSQY`P%i*LqLzSCi&ElcSTDRa_GBpY_Ny*e0_}
z-S^`XxM05}JC6lB&x(JttLocd-7oyIoJ~`7ZqP*tAzVLu)xCwQ%2&LST~*b->R#ga
z_nUr~-~7A#&A-@fO$WjRZg4S0J0@sz<ghlbRoEcP0ukKE{`N+5+NA}u#v78^%FZ0<
zlf03@H*L?GmMy|(Z<rPZ-OBBLvE1j_JJT*B$=}yk1ngb0yt`@_4&s;lqJI-t)T_MO
zv*PojbNz3!?YG`OQ&{yg{7#>Bf%>~eSMF*Yww)0jp>oJoDFzF%MmTZqOSu{E8sUVa
z#<Mxw<(Vs_mnU7`b#_ah@!H!yug$PB%P#M_yCu(j?QP%J=*)ZRQROqP$u28x&%B$6
z&Qz7(YTI|Tbq9z1;p2sddIy*OV6p4;e`plb=l|GPqW%1%;vG!$kBfhBjp@{XczOp{
zef$37;U7Y4c;k;>)i`SY!MBF{{;>)lfzvKNhk9r9Sl{_RcL#U*VxI2_dhd?b?vUqC
zkQ3YSOz|>G+0g%0Vp@`<-0>otM$w2)^}x>13NHU-(^VVT_8-gNAoltL&%C2mA<4{A
zAB4&l2>Pz7cX}xMP`Y1+@4krCT4_Dr`;T6Kulbw!FfsV^(F^LnXM-jetnsu6Te^M4
z7qO}Lini?MfAzlk*Y5@Y>{jgOZ>w81{h3Hy;NSHt{)LD9*IxBsG&p<BO4Dmsq_VSm
zO}8GK6_xC}cH^>Z5fEXOU8hubX_cIq-@iaWDq6^ia~)@FV3F>+!(VqWUUq)$y{-M+
z<Fd<#g`MY%AMI4KF#L1)!k!PY3yTk@F63`{-gb`n?!WZ9O%u(2UrwvP^~Qhp-%R8B
z3uoj_KC_?w<A{YhSBh;83hK(U@L21Z#T%4uzt!l<sQ_)~wLDvmj@ukxDO&tH6b0=*
zf9IX?_TOjT+7<8ak4nsHJquzX31VZ$O?)m|iJdTC{aya^^Nsl(Z+&HsMgRDFg0p7*
zzx%8Ie}DCV@2`3^=JZ8XnyYXTS>N`iefv7Ac5hnz`kU9Y(U}jWoz>g-ox0d=@k_v6
z{?Q9(nc9xU{Dof>`|OUu1@jBP*tnlReP_cNUMMl)4DZQ1U_xMeee5^3)cgPl(Y5@h
za?D?jaQj17`wPCJGCS6;ynO9SX7;Nk@A6)i1#O?aYwne|OY)Y_yyp5)SLB`(l$het
z_h(+4_y?s|0sU<0J<~TZ_hx7vIlI$Q`oIQD^9*K*Ygd0xD%Lb^H44^1A<li5=q-Od
z<&eu>;j7kxNJQ}Z@>gH|_TF20-TG@tPk`Z~_HC~hzOBmGEq7}jHs-093+Kqeh?p1h
z&hPpE3fDF4Y%QE3>wXiH5U*Mhu(mz#nzQ-qg|ok2I9v51&9<cYh4{a>(<^wqKWgh7
zejL%KzJW>mql(r>uRs0|GuOC@Ui<NW|FNhwhm9-5UI+H_t~i*#QE>K#ogX$>{wsK4
zS^rOV+afW+oWtA|f~6~tmzg|JedDk=#^hn@8yDlUMDwT*Tu~R>%3NYEH~Q7zdz>x4
zYooZWR;GN_N3CBM`YRSTsfT=M;hGn4P*|(NiPe9_15QyJs9@;t=+NlJS=k}Ey{py+
zZZ%z1*1YO%=+?cfwuN8)w(3^g?a2POYmS#)OSXQ!vEGLe>e*h82c3Cfzx2=YDgUQ@
znjiEp_*A{uPk+t-nomK3Tb|51^kq_Zq3pWjyfYsB>YULcZ78|D<y^Vb|4qWbZ2ewb
zw_aF(pYv~)`WGYhFZz}Xr(>dzJA&lGPd)akjM41Zep<NHX5EzIQ$N84R|;3noSWDt
zTs0GpWRqrLMU#tX;zg3*D<)Nk6!vSq3p{GOYKQyO+)7dQ$dis?MH8mVq^Pn-W;V}5
zp!6LUHX8%v=7r2ip1kkQyMkvI?>;=Uc=uuDm^7~)+cs#)6mQ!wy)C}@ok!a~;a}0`
zE}yE5vh>$}p83>f?VROPKW{0T7X}x+dED1(r|0r_@|XTP@2dCs&j0eC;$8bCzuQax
zPXG(nm&jFQKapH7?K?}@=2cPut~-nMzOOiK3ukWA?K!r)(CcA)eOh?O=iL_jyFXhm
zSF2g~p~qV1-;%<H`@A1^GuD|Oc+d9ZF2jE52j$Fv@}Pp{6Yk4CDQEwA*Rc-7<oWyk
zf~V44-AgyI5$^N9MjU%S?c>hWnmoz*(Z`-o``dcH>QC4Czi{+QzvkNFIJQ^+<>!5k
zIQ;zDhn=Q1dA#$Zu`tid+rHlTOyYc%&H3l^o)@40yz}|bJD+RbRoY!Y_}uD84Ey}o
z4~k`L)-|6m{jie{D%kFo^)xpB!#eYd>(YB(^WF<RxBFCOxaE7T=dn-ste#Uo_4B$S
zxM0<ka@$k8<(|g&e_H2Wd42Jo*MaxGYP^RChkahBx+k0Sebk}d(>`D_Pwk%eY2DI2
z*_!X8PVEl+yzc6rY}5BqXF*Kwe<ybDJGZ;;(C&SQcF(H3o?a1d{66bh?Abl5XO^3O
zUYB<7>Y3fED#AtIuX+?4x@UD)dFaP=TK7VaA`8weUyH0`YghT&N3p9bu4~;xVqQJ7
zdsZbD!$E@euO9l_{#n^>|MkOixqn-x*{^--pZ)W4RBXL)ebo&6+$(?QKk}XadFkn&
zmy-5<k<kAot3NBENGLqwq-a=C>(rP;RXFqDPVU7Y^X3HYcz^!S7lWgsK{1L@V%{?@
z|Ke7WaF0T)#FfJB3m&br+-}gXedaOO=N*S^)?qLi!&f}xx*D@^mUc*SYu37ev!YDv
z1PWRkv{_;lA8;{-bL?<BfFeY++J!%gXWcJqy<ddKFsS*fb~>42xC0>wcF2ln2-jRV
zFZyezlYRJ$=Ujhd7XHt*`!9K;?$NgSJKn12{qDS7_vp@|mlo&i-#u6OZF!=OZ`1td
zoM#HNEl;HJZJLRdIj?!mbA{KIC#v{1p)+S&c<{2Xe5hb5v!t#0O2GsvzM#X7Sx~`V
znI#jOO^PPC@m)IMXjVAES0+W6{pJx6bN@pH@q!8U4;7{tOz^fi;VQGFuQ}#`<0}gf
zS@xBW6-q(;D}@tw?FWgSP~!_a4wsX*JmJQ-X<~EE69ptDOotV+Qi$Nqx~}yTvmPn=
z#w_XVHYuE_w(eu#x{v)w?>ihfym!{{-dWvwe6}lJOPAC(ugkyim3P-Z$Lr=Ves!$t
zhZ2uwE_d8+{^A?k-FpjeOP5qP=jC5`%e!kYSg`H!zFP$oWq&<iao}(TOZP@DNDcb$
z`sP;CU5nkyue|7!x*NFII;+IJ_uYz%vT(uJz{T8br3V-2NnBxV-jxs_&SN$6U4hZv
zhbg<9-QQdhv@Sj3C%Z8iE7RG1%d3ts*^8@`qe@*?=T$_S?^z=qca2y7b=&k(XGe39
z5)cuRH~ZAx#YNv&+_BXv@5f~BIdyjR9Vn3-yfas8yYJI&EAN<Hy}tC<u8{cYuU-e$
z#;#iL{k3%EK0PGC%3S6BH$NEa95u4(ds@Myy+O!-kr1pO%UjobKSB4}LrI(NuPctR
zUFrFwQ{Qe|GaVVd$_bzQcGc$C(rv5HeVZu!N8a!KYp=S5yt`QhQ0(HS?W-QF)v8#{
zb#E0G=FYDZc7C1UwJ!AJR;`_3s@GRNiJBU-dQx_1(ORgWSxC*h|J5^^R{pU2$5{Vs
z*Ug=N557OLyVK8Zz|Ws#C-xw{!b4qG>&`OnyvwZHUpCz?Ihecaftj&RQk(0U4IPqV
zhKH5XB98EM&qx$R5wuF5c5dd<;<T4@BCXP=;Z_IN{APOE4gItDjD#tTwep^R?$XlD
zB`<ZbGr<lid94Gc!LGcxxBvCM<E8H(@A_VN_xFx>wK3nfy}W03_x7^t=#u>Icexk$
z>h9X^`hDArdt!HQFM<n3m%NX<yF2Xrx~qG$OW#L*&e_SAck!UE)ecwo?JpjP$^M!1
ztk#d+etGkJ<MYpEq!*vrZ29b_%;%iGO0(lOvy<nYHAD!9e9l=_X?E3ScGf&!)AP$_
zr3atgyz<%2kk2_<;X9hO&phBV-f@U$odE{Z%Py*7VTz945!W9Qc75H2oO(yqKX}$~
zO@CNaBQ^h^MUB|}!=gWI_BH4~@~YvCKNkAK`j73truC1qe^{+^)7;mX|0w#0*|En`
z%b!D=a0>e%O*nJ$I9<(u&)VLLZkw@t`i$N8jm!0o%h#KiuQw?VpW^de=>O6Ee{amM
zZ;G7JJ3omp@3?Gh=AC@0@3W8nT~@ds8*}DfZHou8Y45o<m$%;BedtYW;x|2$YVlcn
zxzFBfO?&UOxqRWx-51`(Mtt)AT*djkhR1s&Pk*xIyaQZoj!a&0M9Zdi`9`VGi01gm
z<`Lbc6>R5|Y*%e$G=2Ac`;89Y8$G%eeEScFT~TVv&H7ZiYkz}yV0%^0^40U6Y!Kv=
zeh4B8yCPnRY`mhGv@-Ze(C-8BH`(hRiF{<XKKQb%>HAI2d(TA-r*rFbd>7}l@-%4^
zZe?8F+20=A>a${!ak^#kH0;FAqB+{f5k&uIy*3tezk<iuh)3Ch_c{Jb*dNq6b4=!s
zcHVK>9m3sQfqc?WH^7N$fq9Zop+xnur{8)`TSiQ2cEwGEPf?bA=Fx6>DY0+LBM(hn
z#QLHoEbd+fP{Q1+U@;4fm@o7FWFc1K&WU_eJJID2OXf6wf8eu6JpEygNd5T_JJY^a
z{$M!vp!tV@T~GgmnwSR8fA>3Qv^>hbqV{;&g_Tx6oMdfc+3Vfd>s{IFBc9iVlpiZe
z_rXb|r-hWP?s^w=F;;7rw`=*z7mup*c7+yi&w3Yj_U@{k(OcuzMCpgET)S}nsS=-M
z$wso1U(WD3o?@kTdHu;R*+ze7`RoTXmm1Zs^ifZ-QoPJL)9*xy(=uVBxf5QtAPF7v
zu}V^tHJscx!_)oD66Lg@k30L0ha5=OdSEDeVJ*|HP>1bYFTxn_YAuLnEm_@=2N#T3
z&U9^ML#bB6TrLn(H2(Zru4k*8ey&Q`r!`|e*R%HhPmkCuep$Epy~(a)*S4tsxqGPm
zkh%D)!`pvY`}6vL{J!#^-R2L!FNm5=YUx!;RQ9~#A%xC!JjlW-EaDSj0A&OkxE>T?
z4HohF>w5m^*ByC~UZMRZW=$@cB?la#giIyx4{5Vi=7kdZ55NDoe7*I)OjUY?R@Zxm
zoqz0qd3g)U2pv?!M>smNunLN}1PFi_JM$;~R@<2`<omtw+?n03msMt|T{P)j=4s-)
zNK)kNf($m-;2PEppSbwRmmj_Mjpr8sezx2B={fsuuHR46=l^*#d4BDu&Hi=YWR2}-
zJEyPuVC*_mDAj9<X5caxEDWxrPU`L7k{J$b{SHX%x3+(Cj(_*(!|(oVu(to>{@(0I
z-jCf2H`w&p{aV-jzHRxB-&ZcYxZwU&Sxw&XXU9o*AG@Saf|L7a)Es%DtR}xPVCS3M
zZ!e;|${&2$BG3Gz*;(#&tdaHIt8(RAkH@|(46nX(Rjx|y#moiiP4hU*Z&rMXW#*i9
zEOXX^Oq)M{o$7zcbNyYo`tHM|@*Ov1^~&12F`56|_`aP!SZ8@dpZ)jKg#9varZ+oU
zN=$(e2mk*xe&jaM6s>Dt@~C2ck*waAfW_0L_Fj3h)J@;C%Dt}ccN<r&aQjEGx_;%>
z#4MiR<QY<juV^eicJ)))q&=}3`R}J}H-s{e#z{HP4SF@@7R#$cyPd>a&k5Cjv~6^E
zsdxDTCE~yATT_$zRJ;01y4&$r&+aAvJ@exJZu2jE^;Q?>`^i*_ZHac<mAV9zxO@5I
zefJ;j*S-F}wD#E6x$m~}+y@i=1X6WkYU15iy1)6}@mFr+edTY}N9y`-ychg!o3tM!
zc=Wn%NYH{wOjAWxEOAg})q1)==$|%>;P1QCy!Z*S2tp3Q3dsyy>N-^{Gz!G<on|+A
z>G_nG#*x2#FqxA(8E3wj)Tsw0tgIrxojhVU^M<<c@06tZvn(8a=d4%rTXsSG>JiSY
zM>VE}MqBrth~MpWpXV&^T=8Av-yhc5G*ngyeBQ`l?_Bxf^p&h-Va8i$t-R{9HZ99k
zKK=Kv?=$cCuFcCT4PHGv>h6_S%figJ?pk>jA@pj!*Wb{U`&VtRl#6j(m?{$G1|_b{
zbe~%ZCDNbGJK?;}B)|TQyPjEo{Sj|4+aJUh*|&FtX^s0rwLR7)fjd-7@^+Y-gt-)l
zzC@ksIMuyRH$B?z*Z+#>V`UTb#9x+`%a?!GET3NlC4S!hCqKtTch|!AFIKboi(Eao
zc)f^Cpo?|safcm0q~<4;Pw8F|!}3%~L)>vE$0^qUy`~~Tu+a9?m2T&Zi{?%I+%qTr
ziB0hv&7+66F9@7(hMrg#wJ(3;tRLqpKPOy6BtT<9fWyK>F4;vF6d{D@-i5QB)(5{R
z<=X4F@Ve#~tJWluu0Rd9g%Yjj7G3yVdQ4MfmrwYdCE9)qFQi&MQsJtd<~0B5r0*~K
z`W|iJ?!73RTyk9EuAy6b4?1&s=%4n`Kkfgw&rjodef#>(7mg_to#on{mhXJbSZ?#6
zkNwWa25Y&1srNbjOU%trJ}&3p`{}xR`QC@`U*E1j!0-IM?LF6AalONLE?6$qKlQXB
zhVKM6;xS{TjY2>BlaCEHaubd-f2weh<39lteBba#cEWz<Pvs8(_)gqs{AsOF&;A5i
z@XyToXVg|sT;lfW#qaffU%S@Sd3_09G+*fNlo!)?Hy4!$yyH7{*YT%SW=i|7dFzkL
zzVe#5+;yH<Wz>^Q6h_$5!;Abo?NonFc@Yd@ta-6{(fKYr?O$uO?3Q%#2P%5E>WFR%
zIT3_~@jLyOjc==o=%o;eMTZPT+g2L*v?glttbP>UZyA`cwPeQ?#jO(_`L%~U`{40K
zbkTZ&+SV7^F7b-LxGsiw>~jJO{jFVeU+q^e60u&icI}I7*Ldw;Q5Uy&?(_Zfb<uk9
z+PyDcyT<GPs=9c+dtV%i&~}&q(_Y*c`WwBd-uuhZ>n1g}Hi4@CkJg(1`s}-K^V8x>
z7f+hR@z2v;Ke^9u*~ec6jdn2$__bYs8%v)KKeS%tTKjD-_d{<NzHj#v{Tp}jJyxRj
z`~LmA4#k#Ke(}4%_jLJtsh4wk_nl_DpW6I>)4}qa4|eB#h&B76CtWigEd10@>f414
z?QOOuZx$x<^Hyiva6POiRd#VhcU!F7N6Y>ncj9+w$}M}CC<P@F3$6d#@y0JqT&=Os
z<#73>4_Q+4oDOT6)Tr~WU-nSbWRB9Qc9)+5yr(m7I2;a=+IBJj(+SC<wI{B3)nF2G
zcPI9j3)vsbw)TCf`{Q(7^AW?<?(rhu?|3fC7q6ZD!n@zi-tUWgXWg@lFOGNqQ@MCv
z<nQ7|^(9Zf9+>}wf4^RRVB%hn>)j;?Vy?&a&Jr+jSAK6->0%G_t`eNY<B!`M1#2B#
z)H^a}W!NdqdK72vE8^d}PUxspppFO@V#?-vt9RDj;i6J5mlP(kO*H9P;&`s?<W0Sa
zCS6McReF^&MLZXKNV#6pnB;~cbWh~uY^BOzmHe(Jz7zNStl#mSW%ku0PMiO@K7HS{
zc=yZgF4fyIp3C3$-LLv+v#U+~zh|fK*IfO*;KlsFz2PhGxm~T!d=WfFV%ZS`)izB-
zpUy-tp5UYzLWieFEOWW|)q2GR$5uYAl7NNHT(ZY+hWk%BFT4^-DCETgCw5UQWL0-;
z&Y%4ZCF<AAFX{Lpyhv94l7C0hoD<(#)@lCK=sotxDW;|W;o}_=(;o!YFwH-*yg*X#
z`0|gEJ%`gjTE;Y<f6V<uY2A_OA5vpl_aDChSo??8zP9y`v!*<f{-L(7H9y&=YkvDT
z;%3>p&KHT>m%e4)(_wWbd3SxbM#<DYEwULd!u<PBo_sI%ua243SmaEAf%8EgYBL^H
z3vL!U6J+3hP=}RthWkMo)?$$}fd(MPZ;c;TtnteqycVgM+q8cAo;Oc62%o)?>LljR
zcl5h({q#kQuFPF*BD@+>0VWGF94<CcL14iX#X#Ld=K~wtKXQmY7LN!z5p3iC(dOu9
zk@F-n{-=w)Ur^Ea$g=CX#=ON9eUE-??wb!H>QlDwUizbJ&7|@Ut)BgdIDcgC5mtYs
zGN-3J(WGmBNrn2mLw7X}+ZsIgI<r%#c-@gX+J?`)x{BXDnH22weCnMR`6RY~+IffT
z5BvP#IC}YC&G(Bh?X2#)FaQ0bM1JnO#g}VKcJ=!~1=CO77m4!rJDO=BoBqJoLiqjB
zNDJxr+9p%yMBj)klCx_t{Gnji!v9#=LSFpA|L^y^ihUQZdlD7X{<@G^ts`Ga?V+2`
zG1=BK%dF{(aS-~E4`#J<F|Vp}2<2b#iZRr7!7BEUuMMl@G;WGX#eS-JvEDoGK=%q~
zTd9;Es&5>WXMI?{*Y@DdZ^sV3S-ksu&tmKEJjNNvPgM6!YriL5r&m(>qjLHAe;3*h
zZM^XH;opUq4>2$N-un38JdU}7ezOi~{(tN6;?sq%TB_@U9$_c!KE0f={E^9=KI0E^
zb2`62(wWoy=z03QXpfasrg(W`5F%G6hxiBCdVW>8I$3%Co=Rx&&*-i$lz(@ec}6>{
z^84oAk6jY$JIE)V-go`EKJZ`cl>bss=P&;;^Wm)v?9P){+;lywmsJ+HxqDXZl{bsh
z#7%cYh4%KQGhe>KvqCb!ctM)O*@jt+rp#GvAc3Bmuvc4m@Lhk*=2P$&GDH7p`O15p
zy9>-u74W}F5s_Q=!JxHW)5hmvBG>Z&o8uOW%v;d*|HHZiulx6DfB5xCeP7$Xhx<k1
zpVz0oSpVmDr}Fb<(QfyO%S&I}-BT!%FLPAd{o}Dfbmr4j+%c7Nwe<_0mMVwOdwi-m
zrm|1_eBo2ebvDPRKHu?41}fO5{r~9H^c|n#-PXyxJ#`T)VN;)yz2|6n^yAyRZhv;K
zJNC6*TVML(gF}ysnHF|tt#x1fb;VY>t=AS`tGW`^AN4vg+ZHM~Z{qn=wrFDk_P*cm
zIIWFZ9h$v0Yi-!ttE;v~Z4Fy}E$eC&NHAP~<?88Iu6n<ErCR#+(uwCEU;*{)QQV#O
z-ya#CB{pWu1x0s%C=Pj$Xw!7`$5D^FPp`!KQ9!KwvGd@romM5QY8C81%{-|8!1c;P
zx!b;{*`#lI-)M9*d6>FxpYYimp?`kPul>fdw_;PAO{D(3HRAr)y4Bm)P2IX;jccl|
zR(4=y_o=9mYl}9CL4~Y7bsj}e*XdI8UvE5rnB9O){z&_W#2S|8kC{a5fBt~x-~@06
zcKf(_;`<}9JET*0uooBVzdQW5g5mRq1E&9{-?vHmG}rD^=4pr{kI$$v*^~A}bfbCe
zz4g!bFJ`{C{@s3M=ThbL)-8XPa`$`O*1z<vo7T)O)7c@LJ;@>dm_K`GWB2OUz3)Ht
zjSU|#1O+-q_1%hk9k!Zd+q;$5qHMz~wz&7pt=_u!>gh>~nyNQyb!5lBa_f)Ej_vYh
z=#3T-h-}m4oWR<aGmA5lLov})t>MIbyL5@YTeg0W`ES|(`@_egNhizy*4&$a{`+TM
zW8qnM9X3m6lrb+g`!o5}*0<epa~)U8PPqjp78d1pExYepBiOALX>xLrr<m`ij7hGO
zb!MepRH35Km*vrvn6JrQvMK8mcl>*y?|;PixJ?V49l3QTgb3gGYSjbHi}OU@dSWO3
z2we^RHTT@xMSEknZ14V7cJZFxt=q2EyEF2|-@aY6*Y>%_#Zr^LgByRC^&KuRu<<((
zFsCC?qHpqt*cyKI$0BpOE*DsxJ23Oa@$ZFV=Z^6g@YQt`e^j2+{`uqj9SruzS|u7M
z{&<x0rGI|^w13&Jw?8i5!Cd}G&*zxPo!*r@*uN*8f4<=B2{+qKf&DpGl%?U!$)Dqm
z&R(uyt3Ooy!+75D_zz5RN4zT}>yMV~X$t=+73Z#)mY|mQkatg~(w^3z=RWaoWZ>S&
z(Y^miu;4#OPx03M6Ik_6{)@i;@@D;Wt5~s^xq;W&Ufpttm0pp}T$;OJ9q*N`jl0YO
zpn^vA2kYv24lr5>uqP_8Jxt&^Ht+hp(tvRGQf$Q2z;L-z8WTwN);xUubl;v`R{wtc
zuj49OsXcuc`GooEb@#4ZoxQ6nI6VK=tH1tNu6oAK1rs-o%PxtpSgp0AWmndU)or+l
zIlE4+T#ZR=e!nfkFZT4xY|B#J<?Eha**a&}wBYMSucG{7Pyat@tv&7I6{C4k$AV8+
zWJ&t#K3<t>v$bbAT+rzKnu;T`uLA!t_CGANX;l9h^2>bjlust}4$l7|^RMUmNAW!k
z;va?Lj>Q|wu741^r|o)RhvbaT$O`8CMI8AL-+p<n$Z|NMLV{cW#F2bvZu1QVIEc*!
z#@yyui0zvSxVg7)z(RD~pYfx&lh#Dq$J;t}vybL){*k+^D{NK9QX+}J@AGB<FJ69F
z{OEh}zh*DqKmKn1==-#sKl5hx-ZwU0zjyCL?>e<d|6jjnIE^jVz+$0OG(}UrTxSLa
zE(@VObH(b(yR25i2$Zzcv`cHnYMjKJUAI=O?nNbh^*mM@S?~LB*?)RPo#wPe%dnI<
z&MEu;@^Jog_2ZRRwm(q$@VwIV_UmqX9P4}IB=maXo}4T3d?p-tx&C=V+PC*IXO^`3
zI?g}AnHZg7v9G;mj`+H3)vfommBiboP6=6`zBX>_!MdpJ*>~5Ko~n_5c`@%?ztUox
zxJNrr*VKw~6~spf@3dcI=<h9Xd2{snyuGu&yt=m9vztv<>dixoY74*9qBAXLZOt(|
z9;G{b?TRB^UTasFOuFg6!{jd~*Uj@&-%bA;^Rmt{KiS{>UCHVhiK519lG-ev%}%a+
zcC~=H$M)8Z#l3ek-dsHP&aiCy#@#)0<BFYLyL?%6H};};S$TT>?UI^r+kKCx$6IdE
zFupX^ZP%qar+Z44R!(<4$NldphjNdB((ij`**C54v{3uqDROwzd=EpN-<=}U+2Rc^
zmAdUZH)~hVwksLeC39C!TxWLas@tpVCGNc?izl*4JPlBm$!fXXTM&G~d%bIw&ZXpD
zx$G?x3yw0_*Xq1DFLgU2IXb1}$Mq94K72e8(c|p6<L&z|h0?WWQqSLhk-Y9+>>sl(
zHNArwyCj^2lMVUy8=iN4czk}gviondY{{eBr+<7Ks!`CsN9XhJmH9t2EqnVuy-|H=
zwRoz;+9MgNZrX;o+UuWR|GTN~uD<an_iu(;I+x5>=J)U0{pIe`_j<MVm$q-;R~unD
zt#bZBQMt?SO>caDfBK`(`;*tUUfDIx&5hl8P43FL{Yf`vb!K0x?z-2!X@9Tul%M8z
z3Lgf)te<;s&2OvX@>;t?^X{p?-fQ%G-oIjF+wWhheDt61zP2=KdRFYK<?KISI@Wz+
zS$Z$wu6dialKI8&QxfK%cz?L>gm6+u)DF#0?uC*cFVCH*nW%N*<A2#d1(RRwx_K`D
z;FJwoMpreyOFTWe!SvG-Q9o|`i=Tzh$K|i#+;Nb@{Nm3g8;<^Xt=!)}S8%)Zt-bS(
zsy|>me{aoG-5;?#w2Ii@9f_SGBqK6Y>RgY_n!Cymk56>}$Zpe?nYeLhS98qjHP=@;
zt!_Ip`JveBc|v(xm&s}Gv%8Zw?QPnP%(gFiQW_?%3pI6v+-~Mgc^g)<ICR-}bI<#?
z*A{i@7+fvp|NL!oV)}>B<g>=tY_#*P7Ogat?!76o^Xm7>hj^=Uw>FnqXKV)%=J%IB
zo1MO|^4V>nN{yH#_3XDPYv-=nI(chO(4lvQ*(*0qTlFA2Ez2l)^2}|K*O@k#&RTej
zNBZoA#5O+Tk{JsRTm6oDK07Vb+`HQ4>-kG-uf=98gAbG6N?E4+&G>qb{LHtD6XG{7
zJu~gpo4WHEv2M4Mw&=QfNv`zn+c$H5{y~vqpVXV|TWSJM`*6qGcV?D+Jiewpy7%U)
z@ZE85!|tYC%>@%PEA65;e*B-f^zxRUizEDg7ZpD<pH_J+$2@I!?3UZElg-}V+LB&#
z{qOeI#*dh1PF?=SR8{%TivJ?Xex~o4_tj0{lUue<y?Mr)?=xBR9<24;VJorbtDg3q
zoYvV}@8!*(UAf+S{rd>VQ(U|3!u_L~GkbG4HtAOB{j@3D)s*opJ=h>L<%{|CqGH|a
zRg<sHJ~Op%U6%Ik<2Aa^vQOUlmU!P@&urd;HJS5%FBaCB)p_04`i>k=|CtAew>LLV
z-1+d-37Z;^soZOF6D!<P0)Nz`7*4b34r|%pJEb*P>FKSI%9v)quzNkZ$6oNs_boYe
zbE4cEf%5rn=iQhq)y;EyzkRwP{kO)};7uRjp@SA&?vHnD(5~7uxhBIxze=esamSqM
zO~K!{d|11p_}l0GB_)L)roO0WsonhE*~)R*eAUDA6fU2iG&yQ+jQ*|LJUR(~TN9VY
zmfUom9{Z+4=j)C`m2qmbLvN){J#Lz@^daw_8@m63uH0{)`%ujK$BkF^+kW*gZce@N
z_^{jRJ84sIuPKTSF->nh`QX8uHCNwkzq=;;?5>k*W}n%0dd=&zvkYEGZO$`(9kqF#
zY4oX_=(F3d`b3}I0wOjY*14PZ(#(6iq#5huvjwG3u6{7voYTKY_FUH<albB+<aK)t
z_~nxt-|SSWvE0;Db*eUA^Oo?#^~$dgSx(HlvOuhK1^@cankR-UW0Qa6rR-fl`$E&T
z2W=<XKJ4_Ez21D0?H<ETCzIK&LOEw|JbFEPqwXGyORB+3-fUpEK4g4TPwwZD^JNb&
zf0%nBuV0b>nL<;>jt--BJ?|dB-t%E$hL7)s<JW7i{{DMtRmT4hyIzEEuxER4;KS=F
z#&e3=g3lG~laT$JWnuWs)Ly#Dxq0>C`0qb>W#r}w{Z;Gx@HzkIKMxsEIls(y_x_Jx
zw-?6z=zURsXmjK*)@l1Xm*ywEoW0^*j9snOuh`su?UN6)FJ4|@Bf7kG^Wx>zHq7a(
zB0sHt{Cl6B_8y(ztB&{2Sy*4z)>p_R|Llvcj+Iq#eT{_7X>Z;=R}Ogdez~||y4|ac
z#WT%>Y_2&-bKdgUP-LuazB$i$?v>4Xvahdg%oFZ5yX0-lZFbqm_Ux6-x7fsPopG8S
znXy?mf7|1;WxH<bO)k5cF})W=%q_c?=w4c;XwJ60bG7l2;Jp#6`1_V@7OCBODSY+R
z@W{%kQ`c|%R3bAq<?5beU8^@0ZaKE<`h~NKVR5-nuZG3tZ9Tna+fA?4YYS}c%_38G
zhE9u4wcP*p;rg_HS=%19h^nvIVI-aYdQHV#(e;}johq3VnOj*fMRaOZ;7U>5&5P2s
ztJI~h_J)OInf8WV&M;+<IP13hW`-&6n;(MKW}B0X&D>RQ6t2CRn{s^Xn;p}bwx@p%
zSsZE>mAW|e+tyuftFyQ43JnX-FI~MhZ|l{y+jjNe+<c8|dPL&l$!}c)=f&Mr+PF)?
z+w~`xw#H;mt+@rEa@Sj4yJoKD`gq~X{m857+Pm}9zl-c%{^h1;_|`91mgrSYd>Vh0
zr{-ExV#VL*mQ^dIl3joJSndDtxckqKMOBYoMc=K~F={SK3%Y&#+Lw9nyEjf?729|s
zNhfu$sNeEUADT~O?ac4@x8HD#|4F~!&PBd_FGQBlt=Tc_{HmX8ZvDCzb^q3b0%O~p
zW!7h|{4l?nx$tt%#Nr&oX}@lE8JKv7oAH;;TzHzt_)LJx<26R!cXSFj|M`_)Q&3@X
zut(VCtJ^-0Pp*^nuchalf40cr@2!ao!;Gis+NYdW)w%SlO{iu5r+3Tu{MPiYKOZ@N
z+fyg&n3Ut)7p0zjd@lCy&Y}6yMmxXx?XJA!_w4pb`8QAaL$-Il3X`n%OqnQLY&fk&
z|Hei2knN}XX1#sVRzE5G{mEyyEQ{X$*?)R#`K`)}aXY{D?JauC@@npe@O84f*Vo<B
zz8<G@ecIcp+0Xw?j<HspogJTW*Lu^=Z3?rqxu4u(+PTePoo>R<%Mt%<rrGyDJwG{n
z`KhhuC%3W|<uXdgX<ZjPv6XdCk>2__r?u@TgLT}qoL+uzDwrAft1;#`cVO^|Q{|gJ
z&0SNYem+*?`oFk!x)ZXwT`t5H<u=AdD@>|W2b)s#_Nh(HyqM?%r(d4;*kkcq>#x(j
zeV*%VBS0ut^ZGuyn8VfkpY45J`JVUQ>;u)p73(K`*D{XGY4nH@(tEbE*CzaAv968z
z#OGcW>snyMyTp0g54ZAHtZljO1tRpGZ{1!A=HyDPpZXz+bN$}K+3!L0)DO3O;-c05
zmwdj#ZgcHKvZ_tkp=i}Tp-^IV<!jk{S`XJg-DBFj-K!#7FF*7{m|?!?XE1S%zw&kB
zy{Z}8<({qOugK<vh{qm`KDsCLO!V}R*HZVGPTt;Cxq8O-caPWpu2?-|dspS_?|Zh+
z*dA4}dfN7^%GJ}h&wH?z>z>xLwU2yq%esyS7lOLxueQ}>|Jb+wJXidql@o1D=P$qX
zzW$Hi`!ziKj#{t(aPGB{>&`h_TBo0?cqtlJ)tYYQ^6a%zaqo#3<>WKZm--qVyZz~s
z+Pqr|*?V-e_nb}E|8y?NaBHLbsfq+aZuKK>K{+asJ6+#|Z%SJJW4*}#scUw29Oa5!
zG(nYXt<m4U*7-}$zj?qR73r(II&(>j-96*aRlg$6UQhp=sXPDLr>9(-YjUQArbQl|
z|K9D=`y`$_ONwu<oPPY?3vK_e#jAKzHal8Kw6on$`z>d-KJ9bXwz%WxeBZ>JI=2)=
zgy!t_V^O)W$!YJsS6@8mPd<D&HtWCS%wI)1+`h>RGj+BcuzH`+Dtqngrc%+!@QHV~
zr@n5Hyk>HER@x3h9iIC2&y{S&ZzlH7<9})T{qw2X^PLg@BSROuFSpq%dAsMj?7mg0
zF{gLbUeEr!>)PeF)wAU;f1R<e&oArlS})I!-uz{&44AA>bKl;gb#>Jh&Y2?IcOP1<
zowX(F(yFT!FRd!3PK%9Ncd2Nqu#Kbm*9>=c-<)G++b780(41WVYRfs^>n}o2?_d8R
z-SFz#rMte|{F3)<YRJp*z@=BW?-$(Fb0M{5U5@RCi9hX)qN0}tajsA^H?Hsg8NKO!
ziS@nO$1cyarWSA2N}g)Ac#GuI<i%H{mfqEP>-O`8#$30Vxl_K>rAw!ptuFcXGVRUE
z=XRdA^@Be@x7xm`)c(ENACuhue!6DK=e4%K3*EZq_Gc;E>@R<g%-jAVc5%6{z{bm8
z-al>I>8&;=>+P|dnNK2i=-zn$IoL+?&@JPAF}YW&7GKK_O+K>y$-H%I-rhHQ6n*i_
z{dV8)F>9VzSLIzT-Zt;-{JT+?X6EGYePKBJulvT|>+g78e!uW`_<!ABITzCx+evT!
zzRJ%y_rm(%{pZe{yKnA&hsXPS*H$lUy(`L7JJ&`$+a6k;zIXRIoyErc`@O%<n|hM<
zZC>cyPe;;nCSNU2*|PCuOs4gktG{o(dA}>{Rc+?8`+{sQV%LA)T^6Bre!bx-_Ar~`
z^$}I((vs&l1zIg$^7>u++CPzt>k_W8_n0X^ekxUbJtgaY-p8%VF)OaCWv{rHJXvn`
z3iX3Uo>lL~_G><O;V(PI-Z;6eKXh4^<<xt1p85NqoX^wtlHAOGuHx&dgsTrfN}P&U
zPm=KCDnB92e(GQI*{_kkWj59PTmK6i@~EfYTYY`jKbIzjWu@)cZf|{eVVCo1Io;|l
zZ%*FJyPb0K>_J7#i3Og1B0F!eSH5VycSGFpi=+ML@1@PQ1~qQqZfpF`o$}XgR^l?r
zv{MbTMi1B|3z~UuD6Ka=T_Sz<(!ojk8=i2_4FA6@{^#tzo6S!yu6xm#RInhH_s~HL
zuRAimj|=upYzw;7Dbe<Dp0(x+{r+X|&-uFDSLqAoJs4mepZz@h=@sVC{^rn$?U&!0
z7rH##E^zz*!@B?Tua&v(n7H;=mhFV6Y!4Iu%(r%oPCIvb%enNcwY_&|{;WOt@YR(3
zq!sh$bR=4wlzF+o_-1tX+MD;Q*L=A=wQiS@_2b29H6|~fE|;x;{BVo8-D#(nk*9ht
z=1$w17P-5eH+#;Ps##4kt6%f+b$t7Lweex`wfl*GWv|^|c;EWh-sI<Zt1D9`@6FlL
z&nM@(U;UG*TxG92+Xs(d<sUl}>Xr9?EZ;XbeMzO;t+XY2%B7N-yC-f-t=)atL%V0o
zqs<eI<T5t=6We?J<zBz{A>W>D-@a`2o8;w!yCQQIWYr7s9SgLOI=-{~{Z7`JIU7Ca
zetgvvp1#NLaj4Y#LlvUORxjw>b|%}0zyF_&g^h*z4y`}QAF^Y5IUmk%j=uTV?2p*w
z0&A(mnFp&(60@Hf-<IPndnEkk(DH}MmhP>qi~5ckT8Q0m+nsc-oV<}y30a;~Gv(_h
zd`|q4caBNth?35+Nd<Z5f^-fSt(lOxPm+h@bQ7~f>On_|4o3?i_lFrW&B=v~bv@jM
zOv)egC0ge{SiVDI`lD4JB*p66j?Pc~c)Pjt;pT(9I|R)irrlXJX$SBAqbhg$@>%;=
zvHxp0{=s72fyuBz)QvLQ0Zl<u5>>+zP4C=j;tE;B#c9%(|LODWKY!A`37b!6ef4dD
zwC0xtcZ<pI(?9+7**E{>cjM-dj(HpEH}HSDz`b{)e$tEPeJ|So7GxP1Sn!6oZr^w~
z_f3Jc^_>HJ$u|;tta}pM4c{23?KsM@y^S>|@PHVEIQV2iy#Z@^vevtUkcCS&9giMN
zNHCK+9R2o9nDy?f=j66;epzOA_uR7EH%qK%%jIl;B>PZh_w1DN$#3!|-Ss{7bNvRb
z=b1Lm_75%pNS=SJU%{yVNOe!o{v@logR3ie*Dn?@HW1$Yf$g4);61L@O6nHJ+jj-?
zf1lC+`Os~p=eu{tHU#dIf9q$bCL=D{UHEXvoBhoGXZ~4#IP$_}`%>vU^TJqvyM(i|
zyJ<JAcVB&Fc6Q1;x2rF!es0mU(7N?zqw3$4MRMk+oF~5US}R?t@;CICtZH*pp4{8h
zi)$;l==XnndU4;I%hT<Deag6hrvC2+dA63TN=u`bgmh2Ini!-Tw93_MtH(+)O^D#<
ze~f$T4^02{=GE#$*&0u!ymqSnh|gMeQKEUHL_5<Tw#S8_J+3nZ`j)NAUim6&)vjr)
z)-7F?t@%o(%c_0RxrHl=HD1Ydbp?j>EJ_j)UA#iV^{9rHTc9CG=vRKg^{#_ah7sCq
z*+&!BN~{rW-kP)_jOQ9y(7U#IW&VbUHv-+VNgJJY$~unnZM>l<W_={79a-?p{d0T!
zlGZQ2@p|8rba#8#yZXW3Pha_KRJz~iu72=0-6^%)srQ|3ZV&jTTU6$B&hNxcPD^XW
zboD21TIS51uvwTEf|mcqc+N<I(*KY0KmN6HPyTE;5ovfF1qD7?qfrzlVyWFVN7U6)
z)luj8T)pKy+LzZ)40z0Uv|vg6*@^E9&ud%NsV{Qxcp*5mW8azFXIedC5360vmMDCd
zJ8$grUE*SG+Y7nH?<y>;4)*^2Ti{p{w;}$Evt+{3Td7;K7AZ-nT)OR2WwI+wceDDf
z?}BgdpZW83ui5$hDZJt=J0I?6|E<8k_k#3qr8c`4-E}wk{~o^VQm~d|o#?@>N;|?>
zuCpx<x}5nVNKht5?2lA<vQt5kL7>Xr2I)fKJiq5ZAKZ8VDS_15?Rl0x$n!aByF(nj
z3X%O|K*g{BPxpR_|6s0pSiI?G#Jhi+nN&4gCBu?L!xqbku5b|*%HXLJTH`LfjZK~H
z_LJj!CCaUGZ#eomASKvA!FT+r_>pBi=lt_G<(Uf@_>O=JAc^LWS3k7QaXu7Y#CJ6D
zht<Bu!ykQR8uK4|{E4<uP8X?bn*Zqj!+jHr4gWE}leL`wsO!O@Ioi$hpZ!tVVflRe
zLH^=8(K+*qLqEt{PCj(g5@Rmt5o5Bg(7JP#BJ~H7D`fm1c-lN=t8=OdOtJ9el~(#G
zSO4JSo(Gdo{5-gEBDaCo9+xR5U6YQTc=6!Ti5U-8fJPx3pKn^v9S}W#?KV4YE9)9d
zEB!qNvv{Uk9_Q;>7k<=yx9^r+lXE%tiRBjC<?#etHaFk7d%L-ILVMhc-daIt`7f^a
zZ`%LuK0UXvcn&IZ@tDY=DWvGCw8W!Dq;tY;*As7{OeMh}6{jvVc_qP1@hxA(75}<A
z*-yOSukuBh^RJ7O{lo_~hwjeksxE-c-ts?Mc$d4`{ZP?GgD{gGQQl<N!x3O6@4Qc&
zGb^OdKZyLpdH&(~3c31&+!ccQ4^yY!fKGrs`+41v+1QXf|ADW_L)|^S<sbC!ITu<)
zUh(C-_x-EPnWHu}4L>6qS|eJHb|iC7OOl*6yPVZ4pv!2@5v?_DmRbRwT5B$*>k93Q
zd%jW1bcJi|kGz2X{tt#y6OQmrJ?B@`6#K*Eg>KRDt~(o*%GaEb)yB$HFFM|Nr%<VU
z&Iws`=0~OSJtt)Ki;j2S!NOGUxWlPb-gIKFLXmn0iUP~&(XT}h&b+yQ<%igd)oWhZ
zhJC5CfBtHNQo700`wu?4-D#O!$enjI-|*zFyyNc+zyqc|nmeR}3;Ew2t(|$@sqcK{
zg~#td3dkK(ewY$yA9=-J?CWILzi?*py=%{8_jG>`=($-TUu+=$`2*v#cHeUk)t(nj
zF5Yp{^3D^Pyi=X072^N+&7C$UXi8%04W+|hCMNzmVX!%MhMm!w9LZ(%DOcXf&3sx1
zLaJ)B@958t(E*`3TC?XU&b}isS9qWN-0sTVw-<jtynXKO?8V%Nj$Uki=)CESh-6yz
zmXoskBIk#te_>0{jsBq?srFY~Prd!;BD44_&$@5b1kTpa`s|v!Z^c>htsucI=S0^Q
zyS|ROXcZ1&#%(;IEmnC{X??^K(e6d6i!wShG(>n?7cC4h5$S4kx)`7##pUX}5J|Af
zX;r-c*VilSY_G0g{_AVVe!D2KeG;*%?z<%2P9KhU)jsqnW9i+soY^5FrRQFr+`YRQ
z9-=$s`5!pi2pxNyHsx;5rrCjI#;5Y!Zl2ZHsjm0^$kTZ{?g&q>epKWi^RDx>Z6S)F
zjzJTv+lB)iViE_Ll%L>J3D&;(R_L0tskn^;D+1eb?v`?7wMuq>%G-%+Y$t7X-}KGn
zn%qf*AXw$*Umgh8Ja64y@lY>rN4NO9M_{Juf9tG&<yZc^U-39T=(zZ*$J|#xw!Zq|
zR9chx?Q@Ry)lXBietK=KSsJy^=!UGFc+10LOU9x@&nvzJeNB{HZ+CR{cGuJ8@1I?L
zUir0V>!aH?)xzihg>Sg&o4;Z9y#({U2eqajEP^mL9n7n0zWbidx}I(KOWraw-f|%`
zOU~JIT73Nusi`MUp1k3t=Zmt=#f3b5M^_%ae&^f1XDVxogu*O2SI=n)^*f}co;Y>#
zhEtvqPhrA$zMU(&ZGAfTz0UT%R)o;zJKxq7-rjvI_r28iz1erZtvmVe>W#&BfAp0-
zw!YQ-KEr(9;=4cEc6{V5d@TLwnE8?3{0`~+0_OV^^J<*$fF(HPxcZjAVC%|T04IK^
z&o8n)vo>GisEUS~qakOPXMj&rl90&c1v6L>LS9Wwb$*QY%NyqJ{(2QZ3O>zxrO0$^
zjIVBZ@ad~pib^-!^{sZd=!t3zJZ+FA>85+QNXaqI52eqv|4a3nIa-T92>%hu<IPK4
zN=3Bkzsk+}NpI{uzs*<q?LX<S`pG}rPa&bYgSt5zqHpZq(aJmRuW(*sbL#(==o>%t
z5|{62oh!8S!r7dVf*F$)9;$fk=<F>MmVT*bcF8wqNwA{ePhWxFJyJYfXE>B5ezy@z
zPW*BD#G(&pPbBGZE_V%UVOIWn&~swm_U%)4ZDXI`Hr<_{=a+jwe|#4oZ+!o}jzkN~
zIf8SAzm#@c-^={erV%R?`}B$ie^uw1?ROr16P&qwuHMwVqV1{qMHk<^&t2p<bJ`0w
zb)VVK&D&<*Sz0ug3!^Ra{pxblSC^%hU)I5cwy$oTUz>Didd>NW-l!FBx*?0jRt0ij
zUD29##mO{lq14s@kg#mXV!l;@>{nMbXI*hLeYHTUG@#dNg&RzGW%H{mj-{^_Sd|9M
zowd~OY|!$wmBE{@tc-khMW-}tnw6<Him>msl~|E@+Dh@Xm7-}oYxgWyTM;H4vO6^9
zi1OQWzhlq+irjPI-5U9qYwnBszRm0XwxcnJzuL9@&AZNbcVdPAs+{S5ck8auUz0Qa
z@4nSY@SVGxUY?y7S5cO?enWWP`@6O~f4^IIvbVKzXKmT`C*OEK7yquT+kfHi5lI{G
zWqI9UtoJ*Y{r~r%(&)xzWTdn^DkZ%8P1eL%-A$|i@BiPk_DglrqnZ14F6cGgb}iV=
zktcre?V_StE9R&%X}ct}a;)jtBe5+lPH^M%`=_K`!kRn0I_4~2tljK9H($Pc7JD<t
z`8|4i@5Bo?HwQ0z&pzGVo}<nEIXipy@4S-6+xHJWIFS));Iv=x;?+gVZ7htV1bI5b
z*wm#SD^D!<xL`f&OHOh@PldGNy?vs&yyr~cHNAQ7-EVri{bBYk`)M<ar_Jvbocf;q
zcV*tp_hD&8&+KcAT+Y2vn4ccb=3M!;#Q4vQx^w3D=cTs=h4-hQU$*Z1%GJ7`HSMIE
zWj33zIoFh@J^Q}7d5i6#nwR_QZpp|jKU!Y1-RQ*j+01|62>kZifBpHS4JKBG7FVOh
zpUiv6(o>PP@_kr_t@)bZ(`CQbohyIbRJZT;%iT*4GF)}om!%MII$^!kiE!R0tJyw<
zGXGrFSfl(D!o1ks)V%2b%4s{89=~~6`}J7O*N^Q*uJ6z6*nC*;{I!`IEq^g`pBML(
zZ+pLDfqB$(m)G-idv-=e&Mf`L&Guvs7vK3v**OW~;Srzt7yVy(b>8`Q3%$=j1s)&b
zzx<xH^PYs-Vt=;#y>_BC=WS$d3R*PgPOSDSNP4&OAZJ-wWI=~q`;2sp)BZes#+R3U
z`7?9oubB%^@^~+@zx=!C?fNf2xch}G>q2+<-Mz9d?bgJPuV*dT9(T^i_R?DREX#n?
zwOij@STxyH%5~MB2Vd?@tqTu3_U~O(*2XfqSNf~M(~qrAd8@UzXXd#t$M$IC`0hU!
z*q^MiC45<F=#8cKZdIR|fAQ~BjSb&A{U%I(D7LvgDxLkke9D`=y<*ba`wO@K{_mPo
z!l@QiDcQaLO48J;YtlXzWv@3nG%xhcqWj%8)t)m>)x_2R+Wc$%_sN|H6Kub4U1Vb$
zT=nkK=J`9zmY1)6uKuz<p0iG5jk|Cei~BA|`Il_9OQgR{%)8(&^)pC$zQEs^8hdPh
zRDSX5-~S=v!M(!0U++ll6ZosU-%fJQnfc2%-_SCiH)~^V<&T`SZKn!&YvorI-JSXM
zV`ommMAMi<%j^$7ed&McJ1B^n*GH9G?W&5-KNA(bD7$%m${suSe%7ir*B`Hj5Odai
z4L@^p&c~X{ADxxkU+=WLyxQoq<hSa3S4$$k#rn3p=1<U_bkIDd$?v1YWJ9*o62DI~
z7iZ-4|6RSc>tFt>b<BFJR9==>Jdtso#H^&WXb+=^%Mpe&SC$YSg~$mSjv}J0%+Gqb
z)L0C=E#1#-nql0vt1H1lKv?Tk&DSco)bhK<`S0KDzJK@6z5UCBOG`^bORpABYo3-h
z;W5LHXQxXh|6Qs)i(&aZ9=o+NKkB%&?Iwp9)>d$QK9w-fC?K5W6iby?!+!x!UYFyh
z0<zZ~jzlvn+t>f)?ly>O?5*Qj9>X_j6~nxFj%WVMtk^Rlr0Jho((;;_e{1h59++-#
z!+D@k=*LcXg~!JW4y7)bo1^}qf8L>g^F6y-%hPh+T1D*UyS8rf+clqF=PzsIV$`~}
zVV_#SN>;6}4z53Dr*t_y41dtrFt25SorcIfgNmRD)>7=}D=O3uOzyhVxQZ=c>%_lz
zFaF!K-~5(*PMxhsmb%9)ju$5*FHD}dK)v>b+DWDdzr{baO}iv|P@Y@cZt9eVK8xl)
zi(*-Ybzv;0-lwL!r=+{j*wZrCPWazxH;F)o?Ddm-FHP^g)V_6f!V=ljU*>cEe}Bnj
z)jyRxU-cj6)pL~p^xm;sz9{Ug|ARe?U#(uSRVr$grFN%wK<}#k{`Z@0UL|}>->_bP
zQumxWOT^y&<)72_M7L)Thw|=?J6kVQvqr6R=r)=i?P`Cps&vC<{YlaS&R2>B<{rLN
zB~i+p)LJERQ!vMR)jpZ9mF*f&bPK{f?VTdoSJ$z<opA0C&+2Q=Up|Uita~D|FoaDn
zWI?RgOXD{WWHa1Fj_7XXV4j+_Ac#LiCFDoz%njRY4jJs0O1pkIhx1I0*5ie(3d?`}
zJaAZf#$A!L`>i+MYo@I1`F(yte!PS6tA}xuJ@zr^_cufZFDMgVvG@5DmFqXxg{W+|
z3|+!G@j~%}KdcqEwC<<~F^SkS$S>U@CphCP<2AjfS03!1dc;Q}u%6Q`<Um!^60Zao
z)(av_LYPbxj{p5zdGO`wbDU}apVZulDAP0erv99<`j7Z|#+qC9n)MsL)Nj6%*k7-d
zf9<ogrE;mCxMpG1f%%L<&v+VV37#=*tG>*#Z?;ps@C)O1JMI<c&34`|via&-AAd<?
zRemArc$4Rx%hb!Qv*s=7%4T^jeTd6#!z72(BDZEc?3UaT?NDu;!ERN+btoe-Rrw}I
zqH5zbvk$HdzH=_;*X?~^=&<a-e6yY!CKKOAd!|2vGrqP6JMNdXd3GU>F?p8bY}J~4
zzUpvxt)&N6Z*V?j$`;2vaZXQ{!ETWs;$<E?mR(3^ti5!T<=blRez_O(>^|f$l<+3%
zyA}L8wqaW52K^WLOn;SLn77w)XJoVeop#~A%s2Mk4Vy1A@A`G&7Ka@3N#6$x<(7Qz
zFmBsy(r7#T&<r&LH<rI?A7&h$vCQBY)3Jy{GoBUf=6Js3)RU}+l16^VB>4vZ*ayz6
zKLS!WnYQm@o&13PfundufS@01;I?w-nRAxj;l8vu=l&(ht48ZMFa6kU#TXXN`sw%F
zxQ4B_mA2N0nJ0+#i~RGkU$9;B($Dgj908jfWB>cwHr@>LcpZOLbipOR8yEMx$3IZ%
zx?%ZGcWz>N^DX<;=4Vz%JI4LxvB_kpkV*cKRjasu9ozbAqMu$pe^BdmV0Gt#)t1g6
z`7DMCWi<JjQ2F9rU*9__t#we+bx_i^U|wN9?M8#kl}2qtkE23MF7+6<ep55>V@W>q
zz_7h4SR$SA@vMUu-V)bkwzzR_5)VCLZRIp=CELxVd@gf#3FJmOggj)~cqp@Dhsgo1
zKMJd}S_O*Q_MDU|ZR78+QqEU#W4@@6A<Oe|0ymfY=0JTD@m$A^D;VB3=d)i7+`=Q<
ze%`A@=&sA^3%MN|$`^61Y41x`&S_b-Q8TYK?xEcdeYYL*-wv|yAFPWI<Ug($A?kj>
zUE2Mj#G2;GAB@)YZ+`f=C;Y&2+c;Kv@jZh1hh#q#)^L`q*laxfw}ZLxNZgT`7LOZ`
zOf5Om+#y|fyxG(I5--21tw+91&llC&LWY<AdkPgKJ!%R$B)!@m38q*`_8s=*;5;gr
z!XnwI?8(x3Fi>S)&#{jwJSPvFOktbZY<$9I6U%wE(;i}RKG!D6R&d^Q^?SVaiO$Z>
z?-Or7F|_lZH%a`5)JnDWA9O#>y7I{SiSo+B{2eVye>#M`3ME4qWbK%f6_ER9(yO4@
z80W7m73+LwUr^gIZB}6MpT?*QX+MN>{h}Y7ztXntkWiL)F6XkOEO(C51-YE=b2F<K
zIamjTFLJTI=;zW}wlKCst91E0m)>tn|8`h?UAWJsn{VMkmPfKuzAh&7)P#$z=JlzE
znM_?aNvwo3)@w~BqppHkiTPdMsEf5F@|nK;7bYK>7Pn-3hjFb-yg>P{d0rjt>c>|K
z$NNp+tmGKOzK+?G&G+C3jpX#7N-oXEkGU(}75unxqK2B5fgxL}vtHlcy}LRT{yPeB
z{w|$sW8{=JVQ+MEnq`CA&V_Xu3>RK>wk>inaWeDcHL6NZ=_?8FzOdJ9g{{loc?+5)
zzT`=8G4Vc0=qp)cb;nX|h2|w!vkiXH7tXI+VV|MRc=oIFK@FyNxsR@{U(d1gN5xmM
zg%fk;@x9nBbmS-738t5g=d2g;tq^|IwnyNJ%>?dmj{hbwdmL|?-aOaDu{Y3oNq>}b
z^^=yEgJ!#$Q+e3@)&#_x$ZTr$kW76zy+tXdLr1ZDqwCuP({?S8JHhU_t|3Z+UxXn{
zq;*mATcM_tHElO}t{dqj?3n+s^TB}?E<tBLSRJnBIV}-pR3j}jL%_?9+k?~Dwe1y8
zsiYJeyZiA#L1*taGoH5+R)!_Kom~=+cO}0iy^s_VmiA>gk~wD3k!W#PqOCLWW8*=S
z)`uc(#gcl-Gfo$93ve%~mXu4YP|{M<oHZ}GV&cQnHdP*ZBc1*(-o8asdE$-#s3^2A
zFrGI#eZ{GO*$Ww+gWJS51{7T5scg%Y+-30Q&<6LM8V{c52QRcgoM5rgwjojCutwWQ
zp5q2Sz6>*qgC)+T?3nP-sBN{xI`57S&d1vf?wl;JKfIX7-%!V^gRk$gp7EaZ8zwze
zXM8Fm`AS`dRrN%q!IrcW#yO`iv?fk(S+av=ryP&1#4iJxLk10r5lRJm;zteUJ(Or$
z$+O&G4(BtMgL=}9u7Bp{yZq2k{@*Fotoui1=l+Ic^$t_#E3wXB$YS=ld|%>+g#GSk
z_cye>oyVZMuq}08u*1>)4N~=ty#E_s)iZ9Dh@Ucb2P4-Xvz*|+nx`7yUuMnMy4q2{
zcA5U_zf(&ME1u0?e9QlW%%1)1cMShMn45edV@lUD$CS-1Ni$0Yp1x`2c+RtnW8>M{
zkiJzHszdspZnQe0x$K6}_G7slwcoYbE_vQ%n!0r18j+Kywk`PU^ipZ9@Wd^C&rZLZ
zzEst8%C_K}6|Xe2{U=WKPI>B@$r-qE%apIhvr|$#w@fLXFpVqw=E|g{)t7b^MMvKB
z+|^g4A6dI>%^w}z(6vjpEvxd6$~xhF+w@Rs>clmB^t4l7XYFbKI^`kfv6*L>nm!~s
zxZZeKbdc?XwPLud%v-PBm*uuBPmp(+ozeX1rBJOI^Rb}PM4eD(*`ozk5;c8S$`th6
zSN#yJW4&7L!2Q_&hp<valWK>MrBb`aBBziEG8a{5dCYquXuHILhciX<$ebC<s!6VE
zCK$ct)LzZ7)@{S?lE&OMjcQ5GIZbMb+BvPu9F|z|__n?<k@7vh(L(I(k;Mf{vs%+1
z&CHN<Ssj^S=dxs8hN7p6XNI_E+l>r<PesiP{h1Cy7wwE%eH__6*iJgIpG?{$A*<wl
zGN?r2(aGo+9HGs&*BnZoH{5g3dER%A$=uANea*7k40|az_X`tECaGOendNi*5@(6k
zT*vfFktJqxox{0;6jq<mDhS$}nLl9)`&WmSwhI9+nHIecMFPK%Dznb=5T2+c>+9}p
zXVBKyIM>;vBSb-J4$sYlMZ08Fyl1}up_d%|P{gBJX-+Sbps?W_-)N>P=UWrYE<ARM
zak%#Gh-}K;?k`M{)lD)_61Om(n694NA$+Dx+1AtkQsbAlvZed|T9-^Ni6|9}WT|qP
zFk$k{B3}!^^kXxNeJ#1yNv5CNRPMv?6xJ;9osD-#{vi`}FNuSkk?TuZ3Y!HNvDLc#
zFjtf4wNQ*cGDkH1=ohDm@adNyf7$6ahw=Ih<0m~9$%@*4w&^u$1T|lNR-)iG?YW4B
zt6yjEvk;3=zuw^ICKkSa+{X$OUUnX6GH7>TdCPS(BYmB51ViJFs}1WGOTQ4?)jMy|
z@|TiT)8;LHo+<dZRqQhNmPz}Tgl?I&Z;|O2(^}{Im&)JBhTENG?|S{R>OrdUU7qKB
zA8p<^M>GpB`ksH~bK;e>7q%Y!7Y~2ou=VP{_;|~Nc?;AN?<7aL&A(6-<v9OR`WMSH
z!YkG<e%<hkZ5QK;{DsjCzsz>=u9&|_yrD|<gF-+)@6IRvEB+<O`=s?J$W1!?`{1ei
zP2rB$#BbOXFX>}{;8<bs?I?4h#Xhe|9$GW~j55vcdX#h7u~#R_TRae~V3~Ay`p47@
zOI;>$>@sQe5%||9d1Il_X6MvhJ$lU20xB!K$}h+k2n+m?t96)sQN%>_T?3Da>{$on
zi#jK&o*(En;6LlmeZgr9hpyYq0(+g-Gv?eybDw6grtDvRA!|zWwFNO#+OI9D*<pQc
zF>i+Qtrj!qeS1XnCgo;W-(uYPQE!X%+s5it`CI*b4s5j?vTp7VrdhH@mMB^=R({be
zk$N|0^9vcP{;mu9D<onYq+bZ_>RGp7^$V$8eR&6JOSp^PTCZTa>-s%F^Nt_?1?Ml?
zRV{LhjZPdq9mrbMHE-eb7p$vX^dCN3<+eV6x2pGE!}Ln_?-9ChzAFD}d37QE3+q+o
z&IdCT<G(50JJQb6FsD-BqiXX>ffKXa1??a4&n#x(RB=>^I5E#tBIW$U3D*586IHrg
zCQAr;KRTgtqWk>>p`z(`l$SoSt8|c?6n|3r(~Kz-)tAf(aX9v;$3|V>Lp4-Q-%~VH
za8r5^^UcrFpQi0me($OKlOghpdXT%_Wc?*^Czfi86=j|ZwAAANxkV{-(chKgU)yTR
zCB80ZG@0ObIk1FluGjL5Ji9v5E{c{|&w1^)i@WH~-wC(lmP~(<TGbl2^!kg^s^)u3
zw(s~hhdZNp-j)Bx{&o{9pUK?fws}>0Vx{c`-xJH)7u~)xpU++OjQ^d*g(iGcn?jc_
z{9U3L+aYI|TXm);Q*!fJb)U_r9QDl?aiuNvpV?}+xca5tmpL~xRj>CIw@p^~p)u!S
zz1#b`)usP6=W74mo^e<H>$}y@{ziP?mpy+${e4q|_LmR-_lu=*{%YpD#=Jh6!?0QJ
zvx9HslZ4j4g&J8W_e|XTVHvmO1CI{XTMjxCo929|=;*ssC>GcG=c8N=C+p;j5B@7t
z*iJfi-#k0dKXj#8l=>c1r|6Y-TisZ%wB1@XIfUopp~z*W<qz$O+h&JL=Q#wYaDHrN
z{xF4Kp7Ehy!hP<Dw;gNBShALW5UfkRF0`HHUi9N@1p<CIIJa!He#aO6wzpcDFKJGy
zz)bJOJDGksgf#pun6V}`zj@kycY!pWCJ8sUO&o{1D;isQm6{*ClXq%!=$HT4yxV?C
z%b~mSo=Okj$-BC3<Tw=b<Mx{UoeIC2!+6-D6btSZI=%Vfe?;ieDXyGU*KM1Gq9bRn
zU2`ZbELEHPf7up^(&N`Zl-4lcKeGKpZVmhN2fKgB=^g$4k@=6n|1SB5$9M49AAGul
z$^Pj155<3&!i%Oneo-CeZGWNvi}2dT^IwWb`K$i-l4d{jyk*Ztfi2w|UW5dn&{5dF
zU_$i_r|klZPc`m4sONaUO@Y;d{h|1`re&IrSEN|KFBI6i>Vb-ll+rWK3Z^>?j6d)!
zX-t23(?j_D@y`>teK;oivVrX#<6GN4ZpZoOA8cMBsCVq>3d8PLo}02cXYvZ>xf;CF
zX?n@_$CA0d-Z{-^_fP$IJSN9y9p!O8kX1L0QLI^f53k&Mo|@a*ACl)cmb;!{E^W*g
zOldN^!MEnP=<dgHH>AELvhL10dP*@N*y&~a?Twe@tv450<efjoaDuDVNT56+RiG?2
z)!^NUQxo!2)5F>l%fs9r<gMvpvKBoRafeAKka^8ahqG*)?{7vM-`>Ld<+#m*0v$G<
z17!`3H{=XBnzuJ>y~WVxFwd(%ql|^;a4duJ2I&NqcU%&zag7JGY#AOKJYk){{gtWb
zcrC+bMRv6c%Xi#6n2faKEEoE%VE^Q@PlKU#v4shnZ`15ty&Dl`cOqUtD7(eE{bJyb
z%B~M;Hyq6h_RgGISHZ3Q_hVQX-*MJ8JO`{JBs;cmG~&olPc^uA@|3`y?x_na%(V}H
z&{FHZ>ceH}!<9Wlq-dtdr<o$3W{6xf(p-}q6mfpZhDOiC#T(3@Jzf*>l5t~`)h4I1
z6RmrtgV@hrO5c=sBqc>b`uxLV_xH7OPfE!@5b{w-O}ou0t-;jsyWq9v-^|9c>ORGq
zzjeE`)*XCbC~Lu3xyWlvhn=C4uP663{r}dV<3BvnasNH<qb676h3zu0<exa+H_~Wq
zv+w-%>~pKMLxua|^HmFvu`XDj|8ByYzt^{KPjri2aAm5QwB_fQZn;mVu37$dM%d~$
zQ4haefyEhFUIt>TKX`pA(!Hu_IK{bU!JZ=T$}<m3+?#gF<nOc3zr5h6#r2X&hBA{r
zylig@VCr%W)DTfU^jNE=Vl&$ji@SdPi-U`ru19PUxE~h3uj0?o*Y5Y1K3nqI_QB<s
zniWw`0}8@iHvisuY$pG+iqhiMd!_F>`|g<*{`;8LH0EWO(hSvJGWf-{^Sso#_PDgA
zYf;~;1s7V5T=*d|F*+e;Ma1;$VzWd`Lhej{)XbFZ=I-L!+GW}xwMFaoiQg^kYU*uW
zz7@&~9bMhSZz&XU_xks6baU|e^mOzJnm_by$y>Ep|Mj=dj<!&y#gCPe+&b=9eO}gk
zrJ{PH?E3?o|MO-pQ4?GBt?XOwt*x2nE#LDFykW>MRF3oCweQz~3qLsCcL*AqEt+R|
zaP3jupJJC<&+ISTu+-&V{Pj<Kz4EexGP4wPX7!zw_F_G)IIGW8V2k$TlAepl7R}A>
z*6-M+=|5wms`AULdHu84TcwV>vB;g|Hq^8HvhhUSXOX(L{8w*wPh6TCo+-0C$nsg~
zr(IVfrYCoATPe#^FTHigi;nQsXKk(a+^#;Hze6zc?@6;uCAqnA->eQ7Ke^snyGL#{
zdq|m)pY4LO{f}?n<u~f%@t4%h^WA)@#H>U-Rz!UTZ&qnyPjl_EvT5HMe?Qzd`;`3r
z8J4$yJ<-|Rvq5=sE&EY5+2WfiGarU8S^0cZ)v4n7PETh9e_dWZRW9H{RF>Vpb=jY_
zmnCb3cb~sLWw!ag>a6hc?Ky`ZS}yy1`p^B)-t{v#SaO`Nz8?PcU+U*ZX(N3RANkmT
z(tx+Vk@u}FOCMUY?s{9EDk7&OB4V%qR&RdU?D7fWEWJ}F2Omf%*rS^NaqGFqnQRX`
zI}6Wk+qUr_XW?4+<~za;@76XaFP`~s#)|}<ha#1g8XRsl=?m9#K0jmqF}GNz=*_Z^
zn_eFL7`T6CuJ+ZbZL1z#+iBX9G%M>;Pw>;J`->b!D@zv!I!AOfb5CIBTe$9MW7@jh
zGv>cm-4AiUdVIIB#;joN!qsNq_HX8zHLb16wXWt}^`W~FHpw|*r&W(%+Wuhnv0A;H
z`7fnEJ8X2F_kZUiS1Zvu)1ykiKihU9v-;*wSGk+l&o+O_vbLJ_wOiPK)y$_;Hoks&
zdFhIOml{;%#KO(ZzI$li5Wn%W_v_KF&*gu-`M1t_wJZJUJnQ{@lVtAJT7A8%dNp+Y
zv}@b<T)TJr#EF%axyR!Y4hz}M4LR{9;%(&V@ay^8XXGWQFMl%Mw(8gWw?FKYB<oGw
z@2y;D$@i<f`_`wmOS+@}<peI&H~F_*ZRh37tK461{V+w7?Omd0-OA<P*7I$fQc@6Y
z7<bxp^Ua19YtOUF`zmAvcy}-RV|e_;ucr--X^q=`-%pd>)^8IXJL|cG)%A>tuj2AA
zCq6!Wi)Z@mn_KI)9A|#-xifRoRMyMwPqnVuJ+u#-Y5ncxqMDBfXR0mF<Exl<t*}3Q
z-dVLdpRCF+&oTSD`t)D7Q)}M|{QPla(&Mj38Re}*HJ<F)@9|oGa{k|{_ddR>r+<ET
z^109FGji9x1AEOiFU5#P{yww4;r0#9?B!Q4SN@8Qk*hxbZQr%Dr}J(IOpf)=;VWGs
z@mtC2>EgPbPp{=(jlB2U>SoG2`Q0o3?YjO<taD|o*6o?k`mX59*PKxLV>au_vYCdO
zL1~j*Yi`}#pE+sOeV<7mI<`-jTFje&Hu`DAvj`vK|HjEaJ{}pOGAGXX&!0Kp;gNjA
zf<GVkr!?~I-|p~mit(`{Q!6SGFJ5R*KEM3)@_jNHd!C$ND*1Gxl{@|3s{7Mw-c;YQ
z>$q<9SMTDBUx$7l4(})_>v>;w<@2E@U7o#a>+|<zwD@h`wdn6@tILm`{%t>XcGeEX
zZ@m+jPjr2KU9fo3nQVU1m+AXLd~M|B)jW3%3vf$3^oQSAD0o)hxoESzmwmS?b=|(^
z&P}<pxcKC1+bpH|vrk%jUv5_3rx82rr`F2}mp)m`Z)J-}W4|Tqt9bjkul20zqG>zN
z&d|<vlaHHW@aA#jC%dXszTKzS#g%8=-8^|-x0^%P(V2fXyi%S1C~imCo>1?-<*7CI
zUIYrZYX2&IetX8-6L-@jo?QBL?vC#@uE%-OZ=}rLT|D*YM%8r5=$|Ei(lH0rS8`u)
zXw8_`eY#|=_PY1Y+VUk?8isr}4tK(Dhg~!*@9veBmN!(g2}}{a<D`;z{aoM`b0rHq
zGet9<z$aqT^4FtsPDy*Szy7;T-7KyueD+7*CC5`f?7gpTW)^tGQq$1J%ucCr%>%hx
zmY<Rg&s(3m(=4mMZL|34RsUK0>Z+zrR&FhP`Zm5=B64k<)v@{Y^L7{dZGI^K%J}z_
zx2xl4Y8T1gw=b`Jw})Z(3GG;?V_~_HwfB}k`Pwadx##)Xc|zM>m!x<FT%N6__ucfv
zq2=Cwve}~3=E~;HEWLU2*^F0m@uv^viJn^L=bd8~we@zu&Elfz$AeAyQr&qu?o6_)
z^L1GL#P0m2vi2?KznO?>N4;2gFJj|@rH+;DsRws4?kifj+E-?;QP%ZveYNzSb+XbI
zO0V~L9-pIKD^@L16FFaK?u(6Q7gTgknkp$}Vy|%MV?cf`>-5G+3rn*PPZ7Ny>nm-s
zqAI_-{_mEQbx;0YZ1SA>^|rpxo}Kp$>SlOfd>GzU`RtG0&y~;1J13Pcvzzd<m$xR$
zZvHgw8>-JPZTh)o>131kxW3hW9r0JU)USGXZeOwL{xzNd|J(2XGXI6eXRew4p?&8o
zH(yzB_VnKykIFV(o1Ms5wmN*}pGR8T6MpUaeC}!5`gq=`l+EhPfA3uI>iqVu+uP+g
zZCvZ`ve&ib_~)au-<|H&7d`)SLzHpelZ91p>(~U3+sBtxuQ7GG^1kxIj@;Q&^Rr*x
zSabE_1=Cx`vol$qU;QOfZ(>~^{J!`4GzoL-R{fW~b~ciNORxR^J5g%=W_K;WkMmuV
zmcCS*smt^Go`K>|)5&s|?mFLpr(tWpLTk(ONd5VHcdwkfE#=?Y@UG86-}P<x-n_U>
zXK9Y}r^gp9Uwk^z*BXBNT+NNhYUkM#-IU*N`}uX3VfeO%+U0p2dxL%AleaFYJ+*W5
z`nw-q-gw*ev7xlEeCu3eG1awk^``854ta9$Z9B=-JW(t1Z=dqyvr($cPt4lzjD5cv
zr`mtr=?AvARvdJE^WuR*nE+Eo!N;=P{kvMWl<w!1EUD1V+_lg~!$48SsnI3EeR8bg
zgdB~E);5>p$69Kh`usd^@q2Ubt%Hl|Z=?m^^V!9FxXo5^q0SG1MS}j*L^}Sx@Vvs}
zzvzU`$&*PJ=N#r&SvN0KQ+-{uNwxj2MKhl?eRb$xB>MYO`8LVhTyt+Ns8Ig#XWyUi
z=efA^-_6*o68>=Vv3n)!--y3V@5`8XuV9Z>(W#jH#m@8QJALSJ`uqCj!xfh$zL($f
zlPf*=SHA95!Gq4nee4Ihd~f%^dUD}!Zi?gf^0UG|XX{^Hy0PVd-1;}!mD5YlnY^>`
zvinuKZ07F|diwqI&vOaB)i3!m=XIQ2-tx}3|4P5#Ust)|j?dzI;dd$<f?t{4@7i?g
zVDjwTbz8Sxef7fR*w)iWzCKJ{`RrluscKyt(_?p6|DIJBoTd|1S94^?bFb3NFIv7w
zE{=&>#~&T`XTjCQ(~bljUg-Y9TKsLUspK)WX>l8mE~qxqmyK?=(Ww_{zx<!~`y$=-
zD&7aa9@sD7C3rk2M7Y#%{^i_n3sdv=7k{*ip1<e(#=Ir*;Xf`~_vZh}?b3S~;yZPs
zxmQ!kUEb1Xp%D)bf9lKIb8I_<ci-{=lMUX_jy1{K*C=nV|6MF9+OGXF>AIw2Y`(_2
z{}K{a>rDSXxw824Qrq>j{r7$Q@x|diZ?#msj^6r{KP?LK`;Xq$otKkSr2q6+^<R;<
zyYrt(hid(LJIm_-ft>r!$BxdtZX|wte{4a#QSHw9_w(kx)tT$+X4f}go#%3N$)|ZA
z?}RtT>G_MqwT1Stol{;IP>`|A@%)@A><fR(MTlLQfB9au+V&r3K13GgcfHH=>kr%^
ze(T49w(pnyG)g1Gl6R^qrMf4c{(AfHtS9-W1A1asZLY7rtrNV{Mt1q0$I%tno71-c
zD0Owbb?i3V*~*~Fi%KutcfGnXE%4!?mvVOmb|$9l-@Q}u{5mK1F_ZPTWhdMF-@8}d
zzJKd9w)uML{OitmygD|8dH331t$Xu0{~ng^`Y$^D<K6FDi#L>KXs3Ah2}nC`?G1P;
z{9pO^gs+$FU;fYZC{fJq3_iHw&h=LQck%b;SUz8N`jpyczhA!DZ@*``|Ji*udRhOS
z;7x~X=A7DD{By7PkJ+zne*aka@|10UvYU8F_}Ws->Q_G=B+8n<_u8;MMtq8xMVaq~
z+cRFyoSy7;e%-!Z+xB03aiF=-*!jB7#rYfW>A&4nePi-&=I~OjUp4t#T(isNY<F5F
z#w@$W8$Wr^^1mVH{P$0<zHF_%N@IsccFH%W|8})o=iQ2vwz^WkBRtM&^&jWpU8~OK
ztug;4est2C(!whL-(hYwA8$)qzEAD`*XOtST*>Q|+iw)#{I>mJcK+RPDO07w&`&v&
zS5EYvAI|eW>d%InDYvF3Y{{5YaWiJ>T`Tvp*mbKa6T-F{Dr`7)aqVHxOphsj;!Q5k
z{wbFKe8;ouolBn2r+pXJpE|L4<DSfWU1z6@)&CSezdbM`_tet04=;!L{#qy=IeEvo
z{SW{DlhFAxO|9--jrhLczU;o!CePVA<G+Mk>3r_)?h%N}ef%idc~X<Ga1JZ8z!&+F
z`+ce{f2C3u<<+F`d%WFeiqGch7k&Nw{t4c_@WWon=TD&Di<0G5motBENZnOuXDG;j
zVrN%u>2<#^ce8d^F6xi!ynByd`SjISXLu&Zem)#rmcHzq%(q)_uRM9WP<UDOH~IPN
ze&-b(T6<^l;VzFmuBTVHweKzYoGx=eeA}`L-%F=h7h6fl%6G86`)P1=(~<l8-lc68
z`Tu58X=#3Zx!E0~1-GxseHXKM`9tgLno8w!8AUT@TZdRru?v1#U)lTW%o^o#F7ueM
zE7@t=(%&zTJQm*OmpwWDOKPy&Q@7)Nzwao?cW3RA^V6*eGfsFuORn9yzsmZK<^K@7
z8I$FOA8WoW%=lTnT~V@pyOw{I`HwBWHz#*GSKDrsj!v~JU6{2xcAoS3IWL~P-u?4c
z>+x-^;#!Ntt@}im7e7CkJ5NpGb7u9w^f{07W&V7>e#0{J>7IAnxvz3{i>{FQ{cvT$
z*;9RSon4{Q`z+b7?Y|y!<W<e#INN<Mzjw}&c(YAnzxLNx#cPsRMK0gA?d|un*&F`)
zYRF$t=vrmb!G9vt`XuAK4-O)&N)OEX*+mxSX^0(N;4+2bKKr784Bv*bg}yCER+v7T
zcvtGQr&#@}o1MvzliZK6A8YOZTdQ+&Y4Vml-~P+jzU`Uz{A8|k8~=8%$vpRdKfJbc
z=Iyrl9ou&2J$PYY<Namh()*Wm75zHzHru-S)rfyS^!D(gy~5AbJ{6W*O>*AuKjlSt
z*Y9cX4T`V*o|2jNBVy&}p55Wr|1KR)?%MNiV&>Ce;oZ4h7kG{DONrJUTNpU?<>d2)
zvQpdcSH1GNx#aLX(a&{%AJis3YF~X`T;*x|?`_r}Rf2<6-$(4eB=+N<>`B}D*wTGJ
zeZs$IZrg5~Hbv^1y{V1y>jRDDebevPRGBVayz0+F--A{sb=h}huGRJZP_TfH`*B{b
zRZghW>F+Z{<gTrM`=ILHm4s(+7x^7O6(&=&_Wh00^Mb2qgddjK&7)_y-#A))?uwgN
zYwyo0;pn<lc=!9~N#e^Ndu3E<X?*Yae?t4L{2q_cso_(M91a|R!t;z*Dr?@U@AWqh
zE~vO)_2h`un{D~(V%@hp-^$$LVSInv;o}y|vulpc^nG*w&6?P)KQ?907q>fIw}6Rl
z@0~Y((y3<WGd8a8o>$+NK6%~GZZ-9(vS*_w-+8;``igry#h;napK1TE_k7xEX=Sy(
z3qO9m{(Wq2)t%ju+pA9ZuADYGWDnP$yqbvT#*f|9=f62StJTYzU3B`Md*4nk`y4p=
zc(475`PPPy_XYNMv({c(X5%}j`1<vtlYh2Mlx7Z}I?HF>e;bG3^4QsYxp&uo+dX&h
zqD_Z>PCA^uFLYC9;r8I^XY^XOKIh$?a$dLM)|bfCg!5;5zUb%k+;gdyc(G;wo|*Y2
zH!U}wI`!>%%`1`hXKi=iz5VMylQqMU|G(2Gnt8WB*s+^=-V5Ji3EA{L9MyaGZi%@m
zYb+%=cjc>V6Mz5E{;v_H^xj4-J?&1~>#6H6n5+EVu$O`1RXIZtS885LaY<2XVlIf4
zpOnRAXl$-vpa5do*l_8GR2HNv==-LYB&H;mBy#BomnM~fg(7@?xb%He^U_N)6b#Lb
z&AIICxS$5v*jE%JCTFLXC?ut(XXe=|z2CiGNg*@ERw>-n*TA>HIW;5GqpB!1xXLdi
zxhgx^GDXSW&ZfeuBDWwnwIorYA~z?m*s8)-DKRBKDb*^k*a{@9ucQE0Qj%?}WUObX
zYi?kuWXEMwl#*r@<l+X^RFslttCUevQedU8UtV6WS8lAAUzDzIXlZGwZ(yWvWTab^
zlBQc+nOBlnp_^B%3^TzcwK%ybv!En1KTiQ<Vq#K$X^E|pk^<D+irfOYxp~EUV29}?
z=jZBIBo^o!>KW*R464X2unNg6$w{?yPRz+nD$2CcM+n*IgUm&;2kLet5nMJ0Wu|A8
z6yvwQ2&@L?42TXZ=lp_7u!LP`UUpu7c^=q77?L&>xdl)`-^8Nq)D*jrqS91kwNPOs
zh5qGvsYTd~g-9T&3@uJfPYp>e$}PsG97z^S2r1A3aM8gIg;7gL3gyw@8mYkrDFlLC
z-0W=h!NonO=(j`ED5-fVwo2tn_I9A^3R>T!=B0qDD?=koNX4Z9s<_<p^GXzKY!vj}
zEEEil6$})D6!hJUEfq`*z-&7^F8v7qq^#6rh$_!qV+BJ4Q@C6}QGRl8YKcO$f_{LD
zn}U8wYDI}cESH^~0?anBLHS8pVB4S-p^<^P0VL+Q^xZOZN>Ymy^xbk2OHy4@lk-zj
zk?P2bTWe?g=HE7xXn6lq^pKxXz~w*xZseZcq<A|jC%a8{n`}&UF6)W1G;7^m@%yK%
zt?V>9dt||cX4URTho>va2d<x!FP|rN|Me*a<&|sX?uCnJw@h87QWKQ7s=f4U`d@>~
zYvT63o^^AMVc6^S>BZ+NYk%MFS@o;TZ$%lqTzc`U*J=Ojw%^y;zWUho>f2jam;F9C
ztx)~tud;975BHmw^PB&_GlA={{K}349L9VpeH;_7W)**aet$>Q;e+zpJu@y|eI9(#
z_b7*>%WdJ^uil<rzt~G7d8&a#;mV?^4ux$yK7`g-zvEC+dBmdih=cpxuZMNNf0UFg
zl)F_w`?G|GpvMHw4^y0cCmpXjDeS?=I&~hCri9X&BOY2QO)FU@)l4!lbuTbYR{Qx<
z=HvzkE`LEa<%SR=w@)II7=wHTRUflR8gd0Kn-HXMR;@EAu%%O?f4<0NjueCW4JQo^
zzTW)dX<&JHopaYjA7y8E@yUDq1XMr%EmZv!6R?d-t90RlDK3*{aI!32=%f?-WV^lo
zy?uKZOB#wMYpQz8lHjiOH%`+^=W3cFU^qq5*C<P?J*&yYmU~LdosctI9=l~1vWZGs
zPj%iqH%To~(srtG^E|hJxgUcKryM@zq+!$+R1+ES)MuH%!dE>fjk|V<&Dzl268%$T
zwY+BHqn}~-?enJx<xDs&!2Pt)P4DQ52h(QE+~u%0x@%^fu3^xMo+z)0dn4U^CL4Mi
zUhY<P^O`H@ZD>@Xnx-}DqnGC9>!&(2^|F^rNUjl54mLk>Pb=I=IOrjpRT0z51I28I
zPnrH|zkU1Y`|tU3MnRfK*;evw+*aeJb@YV7)EP6UdKq5!R&_I)InhgV)AUm-vP<2x
zj{4|NmC*ErC=r~Tz9i_>o25oct4;@Ly0NW1a$<^g^~#u&J|3-}E{f-hRvR>Lk%)LY
zbE%i1c}D7qr6;+sWG|f~xkt!3Sa{ucFUu?4sUjMuJC@G4Ia{@D)t#cHGOw-*8TX!A
zv2>2)9iygMJ<(kY_r}a?XWKc&xH-1Xr_JE>ji*r=O5x0*4{Ago$DG}n(BtOilrP8{
zt1?NmusGH0&)4Ac9Q)foKl1k1=^66<I>4l+@X+J*np{bX&I3#QpUhn#w834~z)|E+
z_@n41i`I?&%^v$r^!*GUwfQ?NH;`kU?p$T0&38SX!<aQ7Lt?vgoRuoy`R|juG#hRy
zWGN*XDf)eQ`7QWN@(~3#;i3cH%Q`K~w$Ce4n0{h|#eo!~n1`2Zm&>eR$Oy4X3yRF_
zx$C=p#)-GlCYExhCtWNo=K31yTBaA2cQpAtKggKz<m-W!{tZ`6^gjz;=b9IIgvIXB
zv3n~s{zU9dn4TKaw=CpPQ~!~S3ZC@ottN~j*LHWEG&Gsn_&sPA!z$HFKXii5=y$E0
zbCSd0Y2|_^o93uBR9W^e{IO`hT0)h*t4~DV%hO$2?L|2W4wu9o_byRuDC*+4rvLJ;
z!m8B^Ige`uB>xj<)i3P{@<@={n-ks9lhk!`Z&F)I--dG<%VeZPj9Y@HM1S{T;O**M
zI43sD$8dAF&zU7ki)R#N1f1cR73gDWtf7`BG&#`6a7*|Zj#<GzmL?j{e%^a4TC8ib
zP$IKF%%C%AN$vg9kHYgJkBcm>KF)KIhjUh;kEMx48pqO(jXlYy79KP-oRTIJeCCa;
zuyNrz!>1P>%n&qrJfkSB;LHTiOOZ<-%t*?3KSSK18LW2kJypr$G2FfuZHJwonw*xH
zaa3rtMfko6l2GF}+&Ln7e2Q~(a$A6ej3t<rv_fpUEX4fD>-R#8F%0QC-KUw(cD!eX
z&SMk{^c&cY$8g)8e_60&nbm*e#zMd6cZ_-zRTn-DIUIF9{nve)+?=Z4bN$=TKa)9K
z_5EI5*ROBW@81<)t-pGm<qm!M#f#p*xf$QbJL~LH71M=P|JK>=N>(hcvwEwq^Fe`o
z|Bn5;cT0!uc)c&De0JGQN5@a6%G6wp)W4nW=h*2O{#CQ~zHYx+>HkwtUsSKLE!*<)
z|6%RzpZ|OAxp&^<?wMyx;?^a;PS`%d`}hCCs_YH-cNAYc{rJ-Sx+>8J`~~sGUZ(G6
zuWL3CDY=^W`9|5<e-Fy+Z+FbDef+KO?86&t?tZ)c@XPJ$-IZ0UT+yrYwu@EV*?!x3
z_ovVs^P*dnHvKaZ7MgWMZ~L}aj}LyE&fCmYefq`93vZfN7vGdETdCH5?1n{c^0{A^
zwlDu#z;!~d?#}x+;qz~mT3qL4yzeX@D}Vd#1>tp5dX-ZC$4vfP^RnHF$DddE>b=_>
zc1!jD?`*t1C+)*hU86g8vOMXBG@51}P_*L9OI>bm*!`P#{l41=ZGL?HU&LrAZ{T;i
zW#$o^jqj&-e6xS_v)ka^|M*ARw?9o3d7yab#<aPow#`1i?xxAQ*EQR9ck}PAt^Om?
z7Ev7WHroF6wc7aI;ihL_-FUa{olPH4(Vi8(#r{2dD{>cCH*URso@M2A?s7H7X5&_0
z_stisn0M~tJ=E61)S1AWG$W>Ks<3g-)pxfd-o|XcoG-A+HpO|{{Mr*`$N$alls*5$
z<XQs9_0`V`q~<@r7{J-D7SeY}a@)0UN^2B6?u3?gIbU_U-u`%BWFBAM@omTJ?DW2$
zUYEV=$87`2Z?T)V6u-ZGrag&2Z`$qL&F*?F?ft#K%f46Sn0v?f&t+23-TrxD>GIq2
zK7MWIOkVDub!gYj`?f!SvQD#mFTl24>a6i!M~z2I_Sfvy$Z7R&PkZ~st;5MDyqHz{
z;0I%~Tl#nZGe2fBip0{WF-C6GKzic=iRr0a`p)@zC8>EO#R`VtmPinneo$(0erZv1
zYO#W$u?46l!=>+=nv$95lwY9`4Qlq785${=TN=f3=?5ehrRJ3=7#f0vgOHmw24+Z&
zD2RQ~b`nzO-z~o=mrEZ+f>juD=?8?kM(DX^=A`;1=B6rWxLN7D6lIpB78UEeJ3H&=
z7FQPQXXNLm>O1D86s4ByCl@8_=cSe#8tbRzC+j;0IU5>T=%$tC<meToq-jEp1Nqah
zG&d==NC9SpXI@&qOJ;J3f}x2a#D`9B-<ew)DVQ08e1`}K)Rv&3f}x2KNE@j2hqZ;L
z@0pvJp6a9kp`D?$C%EMYAMP-+FtxBG*ub0fruOu@RLj1*HjRJUjki=61ifbuSm7AD
zwKs1;L)m;58-uEni?MBmha0LN-QRv<t4HSj@U)a82PVpDggja5QdsOQ694Gh&c9#$
zx7+`DxP1S=pYs2Txa<Ese(PWV^Rw=~f8QSSo8CFT<7mkHwRdjud=JUn*;?(tz5f4o
z`T8H*_y7LbZupKndE3`~&bM;Mbida0ODo>F{r3N<`m9yk|NnZ--~H+Tu9q9iyiM<U
z@2>szvEAr&tx9&qzlj`?9`iVIZg6zZE^~BfR-O{^{-sO8VYiIWcE>v#+FC#S_{gsG
zl3Q!)X@$d{-{ayQ3QS|q{9kwT^y%vVb=ObteqUFA_4MlM|8<v7&wgK5f6@H@!=u$j
zM&G>m*h?029$U1(AnC>TDSRyX1wE?Xe_a&b{9StIv4!B8gN9L)uG<-`IcVs%=XkO0
zo`Z(Z_FNZk-0*ezjnpi&CUXn7yiFDCZKf7(y5B2{9`g2WH1o0(<f#7N^S$ojAt@f^
z;|kt;4EG!~ytL!gGII;J%8hCF9!RXc_xfbJxy3OJrB&>0rV?(PFXQ~}_8c?}+S5Ln
zKfj=-Cf2lh@BVM%MmfBF7jN6f@7Tb0d`HLMo%}q>Z=3&bR^5MZ`K!G<OTzUR{d0N$
z_xt|cf8TG7`5v&~SJ2w+1^SWya!v33ldSq6pTAG^c+}6m@m^tpAO8j=O@6l5-fPC4
zX;c0QojP>;P`uN#XYD!NMj0<ByqzSpm0xxHns0V|C#U|jXAO0G5^UfdHMzVaF>+6n
zH`h#)Gr=dmad-rH&eiH*3clu0;QCV|Gw5WX%#y^sOpVF_&!UY>73H&a4LAe#t}j$9
zRQ*4DonQYZtEI1BUAevgKkw^kmvphqGehU8y`FNW%%i@4iQVO>>4gb@{Eh4Lb^nDg
zs9)M}UGQTh_teLGgZ@7Iy+&Yp2A9?AIXcNYAEI`K@v#*B71fB<m|!cIHu30|i1u&s
zP7<Me9v2jf_iWuZ;rrG*>P?@&KV7m;<;25Vahk9C;<T4OQ(qBsvTpS@Mpk7#_4Gvx
z?_cN2=SlylePP!nh5l`i7ke~aSR4FLNc6%wE5`SpUmNV6zw2HR<33scqRq!?%X0!0
zZ%lW3dBNqj-se<@;@ql>HhmAz)LO3O<}}inwc&M>`h?ghyVMuQ-imV^doa(-oBM1<
zf<=3L<F%=56+YatTkcG{<#0avtmReHE9L?UdoFGGlJrjcpv9jeuW+s>{yj&PHf2m@
z+@H>wANJaC((K6#uPI;J=kw!k+e4W;)~Il)CxLImug%o|vS*smEUz@_9c%LCK0Yg5
zxpAZ5oWuIdN|rkOJ2J=5!>#qP_>s^6=GWiKw63}_-+5=7&+`0zw`Q#7g#D@a*gJf#
zuFbqTYt=Dp-p&7;w@I$v@MnPqA5Z#+)1I-O4bG(&8+dm8R0$D!t-^PrtY`Ty;nGEl
zt1F9m9)HlDuxo-s^CO1P)Loa}t}C~4d8ZIsn|tZR>F7Dq2XFokatdd9;<smGa$wQP
ztQj@ucn^xHUSCl5^6IZT%cb0`o3_t!Hq^^}slDdpCNs-dLM-L-tjenoU23Z=u`ZAI
zdg0Y@N7q|<nfl5(S!;x^Sade1d`@Le7HsXG=e~b>Rf0t`Bp5@U&pdr$>N_LT&esBW
z_f8Y{zw=!+WUF6aqD>tyD2Oip`Kea7&n3!x<?7m5lS-=YNu1VF+3_V?w#eFG&hhmQ
zuf3XW^olnhVk*q4b~|zNij(J+h5AVns`t9}+%-7^+Y&AM!4_4<6!u5VxN4@h=-#4@
zQ+GU*6X!m*h&z4d7LC^%3}FU&>8Pc=vVDAa`b|!rb05-<MCA88So39N+bM*Kiij;|
zg}Sn3mmTT0YPox~>48zZ)T)|`*W=xuTK)RDT~+#)QLs?ytNq?lajMeO{x)q(+otIM
znC)g;PtC*4>C#2|CEH(oe{TBp>fSe-9(YZ3-KMyHdYg4iiu1hK3uof9f1P;u@1l}{
zcA~E-N1f?o{h4hEkB)^j@BTV1bArQ@NtqneVz!1jE1aH|xuK;~RjO%klV;Q11|Mgi
z>o$|mBzx)kxk~TQ)VZ3&J1r~2cM{J^Z#{*rJt56*|6cDE%i6vD>;Jlw^Y(9?^S-}Q
zA!PcO4;KzNSL><RyHqGlI=5+A@V67ukL?{Q49>&`T`gt3akuZ``|tJ=ZR^e{Fnzvu
z`2PEPg8-4nsX3hK&uYHxzRT}YpmaJr>R#m+b`Jhy;hSb}vU%M5QC`tT;;+uDV72dS
z!MbPi+&-Pp`=8<A!4r;VVH5v;&3bn4ecgeT`k#`V&5pbl{lDP9V}Et&s=Kw#ANhaD
ze`q&0Idl8cKfyzXZNnbw?z8;!_aD2gSD>88@oz<6e*fjKs$RA#&j0rByZjZ2vpD=V
z>E#>#V?5L>7j*fZ#l4Cj?0@-x>A4DreqDR;eVP4(;4Mq$e(tsXRkz(r$aC`bB-TsO
z`F{luHDB9NYx0k|<$hAn(+j~ui+?UNe54({N2YPwxikNbyg!;8{Tin~&BAzgNko!M
zSYFrJ4;MxB6}y&e#_{{5-?Q&OcHwmH#-mbcJ=}jaqLTBDUX}_sK5uY*)6Gv7XFgtJ
zDAxI%x#Y0iZrAc^nIB1c{g3y`KeO-&GAWkPIc8G4NBWEmyHt+xantN`@y7qX&&C-2
zUutBWKlA(7h$Sx*YGl8-{Fl!D`}4{==6UD0)LpRrv!(d0k?RR*W9#?4`j>vpH~eJu
z=%>%^?k7AaR;67!>f0l^Y1Pi}cRwh3|Cdx=uRQPklA5?<*5N9bOnvqI82(hIT`ND_
zE%WC&&tAStyWn@1#6HOJI=?VeF5M>`r*gCY>kjRIpH<iHEAeq(Cb{z69X3<eNssyV
z`z-qZs_{DG`Sf!({W^`$)z2rTpHy}dRQ$MCI&R4c`}7y3CqB;<6kprY(UqBXQCirL
zS?Koehpt?IireDaZRT6P@A);|e_pGYnf4(Om38HZyG6c3Twr`_QM&S{Js!rV%^oW1
z30($h`VG~Tef6>M%rsvW?%6zdOg_K)&@J+Hy?ll2hnln{N8Nb#uxvW=$m?^0!{<}d
zbrT!@^-R1jcs_k!WUtt39TWCBp|e+uI^U`=-*ZC0{@jJv6P|lJSw`>*eBN`&-2Z~9
z;hu-nC7;CGf3kY?(?^os*T3$Q&AMM~97oRjZ)+3Rd~{x-Qu1SsCug^LmrL<%tp%)x
zwx4$GewfPk<9grjNA~eT`y7MY=i9KZ&JzgcI`t~AV&?t7JqxcZo}XTlx8Vq{@S08T
z1;5VCd6QQ$b1zgP<*k&=1PPa4At@r3f+{hxbu(xFy~@0vd7ge|#K{8+Pmdp25prUq
z3CGTm{EC^SP)#b?J~kPfw>+1c8d2Bev(kLenU!_Nz`o%!HG1CJ^Gs^e%g;)juXyz@
zFWp~ur}2Ny$?mROPENv--Ys_Ltq;HC)h}MSzwSxuk<a<vJG`c4&6}eVAC_GwTIA^=
zs{iu*EWM+hm7XU|`~!SiC7yVHE7rVF(z&zfK&F=SIw74SNoPXYG@?#~E>kpkvTCNI
zl+wDaS@)In@;7v>W}SC3`pDLplin+*CLHlTqFTB;eeG0@{oZRs^JW&xnkVLo{ZxE5
z>4wp)hE<nk)=LItzSuY6#K&ImBcUc%r(Bhm-df}qll0@-rWdoLR71j6|9LZ^RA~BK
zLCJub{>RLHa<92fpZ3A+0f)Os)SU@W|L*DYxVPj++LktEW@oduBO*-`BQp~v&zZK=
ztu@Wz;VbO9R&wle!kiN}>Dx}s`ta^~L+^&L&`&WdZyV2e6T_c+kx$x;t=*!n;)PM{
z&bxb8xIWokF{zQaErD6a(Kbgi&@y`3mzddSzOhJ|v9;&${5rAJFe~ZVX0>XL2aDyI
z&77txIYfSq+mpk*y6(rG$4v{B%?=4=+<X;!<UE)5hIECG*ER?mBq;k_HI{DlywH1q
z&HVv`dw{>8X7F8a;gac2vV!087QO$sX7<vo-Yd)JYUR#!ozY^>#8y%Nb#K#)yEdlR
zg|BTev`9%_^B_nx=6RN}veqh9vF``hNl0umJd)|P>d_+kN%vjWMzVQ6yvtkiK79Id
zkw@zObDv$SXiM3kc!S~F>eEK&{COuxpFKNC<=z7cvm=IFW~Z_m4j8&>9W<M20P=lK
zkJ!SSyK6Tzgse>XaHo@3y4l&R&4NMdQ@Rby&mhMcIuqRvH!f5*V_LIAVM^_xn_qY)
zOx=-VVPJ5?aDsmI>7aUZw)?#Y%acFcm8dai`=8izF#p#Awbd6TocUs|9olCV9^G?Y
z`IvTR(wX;}PJ7!bviHaJU!7I^J4x}L(2CO=qc%6Wc7Kd<(mj!VvG1(TiP`J)Oio2J
z1)YDN$+B?1<GjPx$5u}d-g@_dM80`MkGS6QtlxWWj(GFDlz7N05#0ZQN&T3zP5uqV
zdtU>1@9(~Hvn01*g`2nb(kEe6Pg)mkaX+|UAnW<^W|>WAzdJU&nDa^`?|Z%Nevwed
zH|f*%KbI~!*s1-H`O?*W@*){)3g1=T`2MinVv43o&8|6jFBL?wo>|7YXf_+~E{R2#
znIlfi=qE)je8$7}@0-B43ZW9FE#F@KlKJQ89rn_7r~BdM$;w+Ee|fRQq08^!9mW$+
z9y)9(J2_3`$4N)=MCb1x-7XxPy}sedv4?RctK~MYy_p%pyUnMAzkti_lEw_<i*H#t
z@40EuNx%Q5RXCSdV&mV*%}gG7LSM{Q)vI%rr}(DW?mwP<c)9b!5O3j`-kUQu&iWp*
znc=tknVwHtT9=mQ<*CVXtBl*9@ST(M=RbaIcJt*o-khHcjIQp{+?kfQKHIi@^BMLc
zsb?&by@xpuUAq-GLD9fAjlVGT)*8DDe^r8R^a*+HSUly@(Lke}X1Q;y4`1C}yQK0*
z&=SY^Q=U2LTCsCAk8jYKXMZGQpMA>i=$EhZEP0E!%N)L=yE%5A)R$kio0b2G6rV8b
zO*~|=o^R&voG&N1Oqb1G<g_%KSEBGo&TOW+X3CE8XSU9?&b*SAcXtIJZ&_&u^PHy2
zQnv=ZDA{NEGlj#~23&uWY8u|bD^c{Lc6Qs(TEFDqwI5%7e|lQ|T#LQsoi#PzK5#$2
zs$ar&TfZgO^3S1~Y3nyVyqtGn!s_Q9Qn!m$c&qyQHrTp5FWCKnKk;x~$IofA+kQ^_
z`6{~XzsT%;OMkC_)+D0kwx4-Xu;H%nJ2QD!XRz_sE&knR|MPC<&v#pD%A@vK>)xL`
z?Y-aW^5su=U;gxe;^j}#L21mHGZivtirjuZB~tc|ZXKuZ?klbx{D(y(YMHNZiIYfd
zeVA5$+2lS$nUUe*R5x8!W40|0MbXDI?H0wpcX}$P8<^f@aqD2W=GnUryyCN$_O0wK
zV-`K0_dqTFPVBZ9O|O4WTw!u1_}lem54R_YoW5${Ke4IEcAEXor!mvaq<^)B_daUs
zvVJvHusV^$Omo4kAi4SZN?%`BR&h)JuZx<rG0oFXIc<5^jAV)bVO{=puYCj-ZgliL
zYozh$eQQR)Gqc3O4U>;AUo7=cxAM1J{ELlu%ieSz?w@`>=D4n2xHZq;Jr>+Yc$Zw5
z{AR@}dFg2LBqnJu4^8{G6CC%2?Y((IDZWr5mQ_U9-*vg+lEZp$>||YU-v3u^Q`W%T
zTjFAqbT-ehR5xKtZtZRHjE8}mix2VCa?G*lYPeK$D>3wvbzV+Fkb7$gqlTVb=H3U#
z+~%E`m;G_={-eq4joxpU7P+;C?w{A|x>{@LKHqiwjCU`bU=y&f*>AVB;4)rbv7;(V
zn;j)LF0^nlJk=l~$-gbn=;%WA^Us_9_{BXd3}M+)ZS9=7(=y@h)u&6srYJm_EuGK!
zB=fc5;a?FI4S_5zPcG|uUHEaF?WB8*UjT#ZiRB9?_Y~YX_-v=peVyO^i+?0V>7|Az
zPdR#g!mpr0h9_<(pK7!wPOw><ed*Y)@~Li?3aWofLP~Y~zo#j0u8GPo5f$*UnNqvv
z%Y{JkwDYPzuHApMakBoaGP#p8j-I&G<f+Fi&{6JiXma+kt8aeIZTqU!cF?0;?dK*h
ziM?;mxh*=-UczX@$zP!*wdaJJd)yD(Ymdr5$o0=%-gLQMWnIvorK#ahR!e{VuWJ?H
zAg5ZUSE>HUM)ruk@LiXDjZbIS@p{i<`!Heg#f_WYH{Gr{c!7KMbFZ4)??2pFX_NZI
z<E?A#n<-!GJlkC4rfRC3k6yLqZJe*rEeD2gyBH>);&5*iT)Z=WM*o()4av&<Y3Eaa
z9E*SS@TOmy8t03<Q#`d+h$)CqsgQ};F!|Cay+iMM<o5UR@+t_;+7T{&xJ7aK%7#U+
zKHp$>vp5xDv;5!f$G<lQ?>`|gv-3ejYW>o_^-L4Puf{kVd(69{{E6X>Tineyp{y;n
z_Y6WTi!&|-3oYjHnD{Z_wOX)D)u$T0gYTcD%2`LtNv~J@+NM-h^eFn|(N{&AZJsWk
zV3Y6TSrut+{81va;Zp6b%3mv{Z~x)3SLpz!|7@jdz1=5;+Ttwi!k?CZ)atL@r7&~L
z=Pindj(2gk`NSG}?^6A7%JM{d&6~puS=|K%Ci&MbIM~0|(&I0;vPbMoe`j^cgBvEF
zO_tpk`%S*?1=H;<{E1@XpU#%?l^3l3XMA}!*U8P(gbj|pJ66c&E|p?-LHdC&&*zXi
ztM)R;bKd9Q({sD^bn&bGq3`5>t7IAH^FCPUBVq6%ePv4e{*a8wvd1${w+R(}Tbp>N
zM#fG?B{cc|yiVh132C2By|Vm&|C_bVH_y9u%-IamYY$In?q2J({ipO69)In~SO>c{
zp-<);*yg<7)&4BxE$^F|FI21_m!*D<Y0dvFEB9L`_`GA^=Cdop@0}9gvL$rW%{OOM
zj9s;-@08hF<(0+ESdwDM8>6#D+Fkd$<9ih*Ux%(P_o#AnW()p~l<&vC-~Z-q^XGv0
z!IO3jeWLR>Ot)4^7XL3$C3I!M{i}-)_DwRpq`36=7XMij?`&PzeSW7VbI_?@F|S$O
zWhypQuQ{^)zf^y%LEqy2kC)iIS}&J*Nv0?4&VSiSj-R%;TA96nw$i#?>PoL^_Kfl=
z^G|y47Wb@cb@&!iHc3&oEb)6xPyT;fx!o-c?Cafq8Q<-k_B+#9POV+cW=XG4?9?+;
zB&uh!Jk~wdGUdbNb#VuJuiAwKPjlN5T>d-xVzy4=lh((@j&<VeKiyyzFZy=(99Pej
zuVx2U-M`Mcy69-vox+Jcli0I-=Y2QgJT`Hj(Cj0r&2ciR%3qVLm#?1i=+nj*X44El
z9s0OaZGU%oWkqe*kJB$#gnJfA=DmE}H)U$fj-*zuPQlEVzb13t>pdjSrxGA(Uez4-
z<Hw1G;+9em4|ZIUJ017oa3lNX=UFw6^*`QFwaNT1B`dut=DEGJ&(uFn4dERwEK5_>
zz6#vvyrsaW9N_D)W})|$m&^y3O#B+Yp?%ZrKLsyNzS}7RDl6+wo6akZ7rFUd`e<;`
zk%}vRZ(r-amGl2CDq(#`SAYE#zt*XKVb-F5%?}iO+9czu&G77EQ|!8=n=cahxB9HS
z|LDZ4l?nSbGBOt(2y!|d&9eH}W{)a!gLT~hq~mqw-QxXH-YnWU^R(!iD|gq_ZTS5!
zqa<lx+|!d+P6XPCzRfd=uFbEw5jrn+zj;p4-ZK;C&;K*~|2f4vr8k$`-mWW%+k0}U
z^IiXK_X9Woju7r{uT5PYdXRO$<cy=w_V_(`dh7AAr~c7mZ<gP9W7hca{>RT|jn^+3
z^>Al@h>nZ&V5qdp5{u)GSYH2-cTeH@JYkJ8;f7fI4_-=d!(Z`ii@y1mMO>+Rj_Cd=
zi7y_;n#+IR`|+&YMg7vx>zCfE(>^TKbU*sUWaBs8k8|E#b?e-=VqbAiVC56x9N)KZ
zo?X4xbx@!CLEPu)qROU+)7O2ncyu*wP7HtZTd$gBcbfmotXO(3{(ap4NTuu#@o$p5
zEH-SrVYGMsx8EDq|6QwiOSQqHkZrZhwvwmWybo2@9P~8s-kz!O@mth#3(o8h@z#mc
zIK7^EWb6%d_B$*!hpkv;Hrr&m^`_$Wd1n%L|7I|(%h31Q8=tw$v{N8Iyw<I8V&(?^
zR*B?&LA{0%y<1*-?LKg@NmJvza$faP-`iXHq<v&dZv<?2U+^*N|E+_Q%y0CjJzMAY
zo9o1%bJw+Y@7Gw=_dDF;VTNOSe*L?xlgfpzZKz)+%y&r5(fPeeh3aSNvfsNSf8>en
zo89_8?cwgoAN(0&b>1J$5AB$#S^3&6@Tcy!id#+Z?9cI>jnm$*Z)iHV>;4zkxvys*
zE?M!mO5=!0d!}H9dETA1yD#xv=hshN{oQ%}l0^F_erpwYfBx}ZYI1Hqj}F)O&$}cu
zGoI&b$@1Qis^(CQl?&o`^gFz7&B@8Gf{*{?xk)|ysT(#cEqBL_O9J{6?`LiKu>M;O
zTV2q(y36t{SB1X)o$Zys_62*h-1MbWpH95;qV-ujN53wo>-YcCpwXY0CvGAaqz~IW
zRKy(7*=zfcx#hUxRIO#})4w>k9G{l-Gm}$D|LLE^rQdhSw;$PWUMjC>^Nme%m*#z`
z|BQzoZ<_z@%Dg-EEgvkl-@o1T+42A58*6rLyeIV!B)9!@^kMrK^)V&~Z@>R1c<AvW
zi+j^<_Y260+kQUxgI_>Se5=U)IeYsB<l4o8SO2N{!Tz`3`MK#;jrH#P@Bg<jO{vL#
zcK>}{%$Cf$;1_mI6*8y3-~A}BV8a)?c7Of%Yd`n}uKl=u|NqzX+i&~-FZq2~zV6rS
z`Trm4Z~t-J{@%YY)9vq1dmA@zUQKRWyh+}VsXTkR6=je8_P784<FNmK)q79QY+QEx
z{Qqqw7j)PBKRVk&Ex4zCit7K$nQsez&;GMH=fM9T{txZ{pMLwi{?Etu{r@A^p4N7|
z6rQd!wMzb{sPac~iIeejC(3Nmd#I}XQd~kae!k$x>2V(?);IS5y83g%@8Dmrr)us$
z;PLxc&x2dN(|fMOCoIW#`|v_zR@-rr(0#Kq%XkkI?LB>FdxTPbo7Xzi6M_3@cD-5<
zt6}rnk?TfypUS%UXWHu~Y|GShkXm-g+y2yhzNza1R&w>O64<9D`>8h6t@+C})mA1I
z*+}gdZpUL8Tg_BT_*<QhU*OQNPL$j$)3WmX)c%PqOyX;qE+sFq``Y{<!uao#s{!f{
zYJ?Z4IRq{=;63!<l9bev?MIkToJxA;KJ8QO<tI0k?rN4h#4g}CP}#L`fn&9^7+-gb
zT5R3Mz1kvQbHfi$$gc`JY_yVz(fsuNS~Z5bEA}#N)mS=jnUks3k~`v&nM&*m<`;}I
z7$kj4k{3PRD7#m5i5ru+gyj|u-$Tz;f-nEb_WxwOS;@61aShkpKeuA%{3?~J<5+z9
z5l_v!?G+PWx_=i+-s!vOaqzxno0NE0E>iR?-<-#qq{a}^$-HOtnxg>@C#P{}&0VpR
zVXJmtmLN}PV^VQlqfB#&d#usVwY|#%dbn7f7U&$G6DmDTfolq<Z|kD~j@H0S3<1{d
zYx0BT9TqZW2$h~$#~Zpko#Bdz$Ag78Z~M-jp(K1p)uZ8S?(!O!YhSj{WnI;vu}*23
zC~vmWv>9v@qCV+Os4?Crv#miqf_InPFK7MOy02_^Uw>rkl-PPI_rB}0i*vU`Z=Y}{
zP{~28RLMa-FY*1XoSnwa6ZY)!(B-)9`Q)C%4$afeK4wodeFEN1Jh8dy>Cv4IOZHSu
zeVy}}b?2|&r7wFK8{SC$yte43bE>+F<pZ(Umh5xWOVVB(kX*aanRngP*ns|kb=gxK
zF02iXukTpY*cNlkZ$aGJ>Jz_Q7c)Px{Gk%Mym43gOx-^M6PcFzD$jgzYc`kM=6l~)
z{VzPH_i@UFY1u1H>ebX#7ACHJ)zsCs@}JC%nBxk|iX1(cr*yqM;<fgA^o1uWY7UEj
zO-uRe_e67+eEEAHmLH4Ub~$A!i#?gLx$O1%eJ8F93&snsU-;?qF4=1KuGrvrH*{U!
zPsq5lse9U=Noj}Fc(i<yEw5ft+T`<Tt9Gcfutw11fZv{Wd{wELxhlyeDIy95o0Hdj
z%v%~1%Cqy6Qs>5LXV-HZ3Qw3Fy|?Y%!Z3ZmJ#QyT3bG3_>`Y!A#4xRVA@8RLODC0V
zPcJ<7H2uI)p)F@J<9I6*+}D3owAVS^zfoLTo9C_IZOg!A+}}T3dgpwp@r9UUw7%HJ
zZ<UusctX8qEs^?hHCu4X(%iN`K|Bgvk0#BryIL)%$2{LS<s{3_Q^jAtn>5}jnfRrs
zw)R}r(shCB>tg4KG<}WY&06!+@9~QDDmf*geL=UhpM}<0TNRmgt@w9U;n0L>8)tB>
z4Uf8T!GG@L2%|H_3C@>owZr#tTqz9~ySeeMo!XSQa;wZbmMbOgdA98Ja>q@{u2rnB
zV%{y_KX+)lPB~*yNV--h*Sncd?_LUMH$AbASACO)!G+32+{X{T((8P7Jel>?3$Cjv
zdTGxm#z_n9V(R?)^5hgh!QHDilx%C9De-DbX`sX1u7~XvEOX3U<z!Fj?tD<LTgLL~
zO-6*Uk|yJtbDOR)sR%4PubIYiSMn~aj_Td`SLvK7xAj%bUL^mt+Qi9~lW_fg%?XzI
z(qHbnAMs+F`+k}8;s_VN==MDqRnNY;wp7?xW&eUFufo4<{BvZI*9D)Wslhr<K_|AC
zh6dcL<&1VuztpJcxFXQe>dCIXt7b1)`9N)M($A??jbCPFf9AQZ5Ik4@FJ~{S<KfkF
zFWIqr8ODSL$DW<?Z_zx4MeeDRi}K3-TGnX13y#<wzVB22p6rDU|1YPlZ}ZXaovHDt
zsVnW`*&t<(qkE?>h&1Y1x@L)u`@+D)5{<m<u*}H<1}h$4-}uUs(Lj>zN=g0~h71Qg
zqb<Q5Q|2A24D_7MvuBc4?cQ@q9iRDU8yxwt{^iu%D;o=#N*iZIEy^rmujR5}?cNhO
zuj=N+s1u^~i4UK=t1RhmS^r~cWAaBXy|!7$qW}C@X54t$<LA_=4KrV7{gisH$t|KJ
zVq)6<XPu5%b?2?7RjdB#*?-m6Z%r57e={?wAoTS0%VLw;crWgn+4)R+k#voSo!Lv<
z07;#T`@&un8SJsq(_3?7@us_*PqJJ+<Kle9_qO&E?w|`sclOAxJv1rtt?w_cI}2Fu
zq*$4VM!9OF@6eqfT(Kwh_S<O>ZMoM~^u+e&pRL%vD!}BgsVd*JYT?aXlYX&#h6Shv
z&YyhbQ<AMyJO6}-(_iSknrpl%te~E&RZFDg(EXF5{+X}dZ{fO=xo_gE%)c+MC~nl=
z)4C`xl#k=-2gkEn8j_7J7v3pl?O%CTu%nQ9kw9j~hvzA*E;keUHZyoO_jR4{mCNpH
zEwJFeX0vLFoY5JjYukfWlb3rv5mK2sZ?3jx*2nTqF6&lnxvxv{5}Df<b8_mD)hV7m
z!99Jy^4AE={PgI{Kc#nEVjen`TuF0UEkc%>q?m-feY*JQ3yzj0-N{*V7T9v$<hyC4
znQ`Up?x<^@O<XSAmkoQS!ZzXb_AR><uVsA~aJ`y%Nnw}EzT~x1=ewIVpI<n^av;RR
zd7F)6&niukpoUDw7t)y>J`NmtTd%afn6V;J#+a*1=cZ%rst*cs%|$BSBBlow1)Ll+
zCseMCiW2^KdN&iNK6lbL#fjWs8<#qkBwx9*?@R=Ph^|xc9S*tOE)Rn~G<kTc*t|Nq
zoy~1Wh6Y<|Xx%?&eUr<XvmUW?E#YiDAk$}Jkg8~{{i-!Xh^>TmhF8OG<s^%ZmaT_*
zId2=jxX0~xwS-eI!ux`%@c9)VUV59StWXs^v|{_~j<U=9Guz!add|4`Wr<H<!$q;m
z*Z`&}v(DzteD;a^%7#G0oy=;to;d#X$`m*rFUEDQ>4o@8FNgaEF_%R3(;TM;9B&G5
z?znUQUY!1f%Zl$7I5uuEuoFG5YNUNBMq{(vhf4}E2J2cI*c@_qcs#Pyx;ty{<#73i
z3+*c$rG!i)+A1Ee+_`JRcHR9)-!1WS&^sHl(8;0CZ{}sSj~5slpF912ZX>=cVoA)3
zLeT~v6X#T^lm;PTSy>+!h3{{Q53V_JCphM)!mFwU{g3p#xuYVU--$K2%CPdP?7qn#
z6*8ymXHK2;FLH*(2ix;9p$D(MJ*l%HFI&RovBT!vtoIk@ZocW(Dv?(1tan1CWP;N&
zg~TTbY=+k27ydu`qvK(^!EMd4y&{iQouB2V-LX25dm~i%!j8Np3yjo1w;WHXJLufI
zuRo!*>eg?K8LQrSG#z>LsPB%7sv*;=Dc(<%tG0&9U0&vPrF>a&(8AX*6I_g0J5NeR
zbouGK>+%?z?nww*m)g4i(goXzCs!Ewoq1Ja9Lw7u$~k|T_wTn^eGk<*s$A^U7X2_R
z+f#TUGAh75%e~`RUeukC_IX*WAD!D!Yghfti{Z|<KtG`><y}_~g}v!`u{&&!-16v!
zNz5klXAE@OeSfD(9NUr^@%*-}L80i!%C%OKceYNjfAh_u@OCyo_q2`QH5xYVTHs-I
zacYM1s!fY$x0_GhC3W-In_bEe8kRLb<(jT)T5tO?YLTyN<JPcn*FD9IMrtv=ruo+b
z>XkKR9(3`1S@rC4$`Xf*tzOUA%G<eJb~&eZ{X1CJE+Y1^kNN#I#itbyR~7OUvft;O
zqUN`Usm;&FyR*&aVL(a8r-sAJSKGat^EYS5R6f?Kt50WtQ1RDXmZHvoz^G19w=`qx
zx^3>K8U>3wA6-b&;QjoKbs-Pa^NY7F1g<R?+&;5wTlA8dljpX)6H_?R{J@(_gwgS{
zlAML~r?(PX`SaMm6`A=?vnq26<DL9v`xVormLgIWeq~S2y(zf%&W$(z4O`gP#a)WV
z7PDTQ3$S3mzE!Oy;jpGL*Xso4%JAC#e5)5n>YlsGvhKy?D`%!Eo3v$GD)lEV7G-+4
z#Nqui+xY=yVudcvMTb~=byrzMG8f;F%5mU+sNlKagq@yd$P5#gw|p1;4)DHgl0M_o
z@p{vOLL0Re;;Jzz&S|&yW>qXYw=rdl;4XvjcWoK87MQlVJ8;ih;PX1kTkM@rg?E$&
zYxI(i=PLexg)I*SrGAiUj1h=-J!4hA#pJ@nycfr2iLkzDIcUCe&%{4<R&}l}QWF+-
zUy*$wc05Kwh4t*C*VEpAuv^r&aMtbQj<!AXS1)1o;+>Vuv|V`}&lwFj?mtRW5@klN
zQVfRnSyhFv@?LX_rD%CR30BTiyb_abp7PAY(!9|##!vfKPBD9R!Eu}P3$Jb}-FhcH
zQ$XbXy;<ibZjIvzf7=%PuV-%X!rxKb+S*El&7?MmdGV$#DqVhUL73IOMaf@x+dWzo
z;(IZxacfEt`>JNuSJM`^Ro<+Sx|89&^K-{$bv535C&SJtM_=61@b*O5mrDNhO!qU+
zf4=A(pIG77_SW+c=NazS>nFQb9e>#r_ks6#R={O9ebMNhYAlx-x0zo26!!C{Cu8cm
ztPSkhw-|mcjM9sdmXiAPwn4?>_K9TSbGI(s<W<O(Tcmk?(Z{wLhRHt{&kq${ZQ`-}
zSBPtIm!Q4Nnt<&GS$8aw;GV<RXkaA%TDeH6=;}L`1PuYk)Z<e#HU9QV&sU!@;ehwP
zi;R*nyA*ko^1ZJw)i`?3{oY=MgF(AopSpT~T<X~4aZ$xvC350Fql%&>yspwm%7rzw
zm%Lv#U5?vDHDrsGi_`)A#ww;S54{hrQW4%6^x&YvIdKkGUD3ttpDYby-Nfr7Qwo&g
z#RA@{hl_sa5pR)uw9d74%Yx;ymo*Z@j-Jz#^a~4@Uz4IT$tr)MUV)y;LuCiH1x1rf
z_bq7=TEY2FTHWU2<E!@Ep9;?$o>J02f4O-1<2@{UnM`e(<`p+ibX~a2p=Q|`w?@;i
zIU$a_Rs?x48&}K_zG3n=G2;<i#YU&NeaVY{M~hy%u<6sY*R19TlIF1lImCIL^4AV(
zJX^rny(-?papn0V4zbgc_U$%ND7I*rqsXWv%k6bW+3MkxHI54`{GN2!rCTIy$Y}4;
z=;u7elN_;@!BvWFQ)^&#YIo>bi$IQ~qdiV-d)HN6jy#et{2}W*Ylu@{^h~p}w_+V4
zrg<pX2z%D&GCXX1ZglXLrAW)J;IzX#O3vGEid|v0Z<eb`>E_!khvRr}FL`*i>e~Xf
z>MKI4{S8uL<7=I^EttM(+0pGR-Fp<eJR^9*{)&2~ZsR!aB9XZ4otw)J(VZ`t)(1LW
zNU2U<WD)p1dDDZ?t4e>~W`#%H&YQcfTzm5K8`qgH2CZABDC9BIEyeQ8o}EI{)A+O|
zd|kDD;|jwAw-5UzY@g-k(zd$nMtj%F1#+u4l$@P(jkR#qnon2cWjm(q;ox|5UL)Jo
z!)xWC72;}_o}P$nWO@BMMx*%OVjI@HsL=dZl4+&~W|iOg#^8NF@wW2sI|=R*)nAsS
z?BzO`>F~6}BxO?5TYVK#Mn=i20hbo6{9eK?%)3K0@8CDL7a5)^@w(ohIC)#YRtr4s
zJLB7OZ}AHQU!`C2heRhlNWVB)_5aEZhRsG&Z|?-kayD?TV9>feL3!JfyhMA?z^zWR
z*<9wN1{_{^F6ckA#^#`62_yg5fHhvxCz~#FSv3mJT<HC=TSWBxj_Wygw-REtc0R~T
zSyQ`fbI#Ue&4|CJuFTe9$hau3Gku{>=GLR`HlY&}*IP&)XclG4Kdia=oY*AE$p2gq
zldkH1z9f1xx-!wCdGcgIQ7Mbyq(y7ptivu@cA6DS_N5*_V_3EJqTgmNo6~KsD;&15
zcJ=XCUv`)|VUmlAT0n71kKBu;ibuG&R9gGQ_lEg$tDUg7z3(~uR*s(1?v0K{EP4k%
zF4}m{o0nI3<FUq|&YNcs=pJq9Sk}*En0VmBmorChnLNz7!MxM*{#n1fJN|lH`;z+T
zGQ&*G)@?F}3$%0Czx$r8?k{>_F(H#rC{2NBlUK?!%i7n5=jU!nll1&JDOWzzt@MV^
zm$b_2MxEEI9a6s4+!Emrk-jXd=W!&k`e@0sdzwAH>boyyF)}Ahzff;Gu#8E4i`u8%
zq6e#=8on>#bx?BF^;@{TJ*Hx2dCAOB*Oq>hB@V5jzs}~gIo+MGHmyF(e9N+1-x?Eg
zKUkUY9+(iOd6U`T$wjT?b(xj5ZOOVfi^SG$zMvAbXQpCm)4C5|6lM!+v7PM-;bU%>
z3f`P&v*huW2N4(FNM2^0@!eugwEDF6s-wKO&hq`#vdNSA^m5V@V_~gtJ`cHeiT3Ln
zOtD#5vdN~^Ct*f=A7jbe9akqt&bLW$Q-9sd$UDu`KquwZwYoz8>GJ6kC#Bi?ExycE
zSU88PBfbCMryJ_b#lhb*-M@y!6+QGbIKPTbX-#2EkHc^C^F{|n6PI?~(w{7S+1cZG
z;d`a0(;}@Ou-h$DDKx3mXmykAvUC#r^2+|g@(C^`lWk8_ZAtn$ucapIm{DoS#toM`
zJX1x~ULSf;Q23z2NZ4sD_iL38(<k|yxpL|;`>Xg<s?m2(-R(cj!#-=@!7JM{-0$9S
z)cJLN?J|dNF&W*@u9!y)Cu|UE_2v>>xa)|z;H`qqhnGC#%4%W=XV)`3zxCCZ5TmK4
zCyZT#kI$8Ni}2uSJuqu(ou$$g30bWqrCI6Q<}bA0+N#=BF)!kb)C<E}!^u}R7$nZ-
zTO-Z9<HX-*7gxW#lJ%&)*604(sLBOZyeHWB%)2G8R`fJ;^6ru_S}NBZk`fnCd~*4h
z1jSEprn#sb=FEI@WQ9;bd&K4vGqc%UJ%2Ku9h5BI*5PWUu(|X@$;_y=7FBOgu8K37
zwBJU|Y1$HJ*T?RQMV($)1USE0;U(^VQB>WM$v3{-L8P1G(1$~pJ7>+|2^5xhSv_^_
zhM8g9t!LD73yV7<c3$Ro+K{s??6vw=UqOzrGaCNSBaY?Fd%a<f#r_>He2V#}|Jc_m
zvHJexO0&yc(|;PaIr&wjY3n{eF3r^#|GGGa$IrS%RAZ<31>tUvsmC)t|25aUIlM69
zwbJ=4_h{aO3}N9yr$nZH=g!8E#(kEtk$)#TS<d^gwkPSyArt4#&HPgxczX6t-P&Ro
zaYb~eu|&$&${h{N)u%RTI)9&Cxh`_yqw0(eanp|}D6j8tSFz_+<u}cX?#o)REK_XW
zpI`2_uWoOO)B3qgFq$uAhp?ucHOJJhGtw6t1O6U2TAH&XSt@v2tCZ}^##7AN>rL6$
zZnW|j4qr6mg-DXx4E}XGEeZQF9zA7C>pvBDw0D_<?$<5O2Rc+cG?oT5TSO+W>x$j+
z;GtAlbNh^6MTZX+ie2wmbwn`Vv9a=i<U6xdX)6j>TnRC&=oXbVmHTqgaP|f};nou&
zQa|4G9ycpnbF+d;Ztb-lyWT$D629ZF?#?+Eiu3RGG+Vqss`>a{oLz)%`39T2A<JIb
z7_+Laen0!Jcf`-HQ@!}M>D+bia$0&|Yw*RbS>5v)KPKN{DL357)+=$gL-9aRPzckX
ziDrIBZ_Eg6_l|pBw=*YQX=+^Rp*I`93AhIH?wmXAjm(UFEY}TgUDSQu8Sx=zo6p6~
z2kT#WmIXa=tS!#xm>1HtIpynwjOODBOdj?+yTTRgBo?j{IO}{m?9H)9ta1-hLwJu=
ztzvdF_~GX$xri-6wZZ%2W%u-Y!#9Wbix|Y#{g|G#HQ%7(hk3%)E_s{NVNJHPc7(lg
zdi?d{{Sw9p|7IPnF_|gJRu!oqyy&mbj5#k~2F`4c%nWtemcCUdy5P<U<th7i7cMw7
zaUPGsu0O2KXKe5EMCw|fJ#(37+QSzXDRU1Bc_mF%FK&voohGSce{4tTBbMon#}hV{
zILn-xzbvIrn$@5CmB+FUZL?*mJiC-{KY#RMoBmnDEk=v2d1kh2Ds4H;AFOoafhSj;
zK!EfEO|=VNUo4~*s^;{~nIL*G{!59+wr_6h&aq{hmOP*P`BqNBy~S6<(x=Sisk*kS
zdCS6xzA}rRIUSd@#o9V#CFf0BI7`At%iZw60n7Ogp^9v)LyrFGD=lZ&$k|xPd~=Q1
zkGoUMcEm~DEVAI;@u#jvA}jeH`(B14@=`aw!kmm^xF@!kZEkQ)2~@Z>JM%=UyC1uW
zf5-6??##PCCe&W<Srfd4r{8y%-mT9|9k)D7h*ZdW#oib8S2;R2fuTF@7W<<l71;xf
znu(%68>W~%QFGsD_36Rsn+q+Ncm1?2KT@@E%5|1Gr^KEsE}k{*>h<*oO!Icjh@Oh+
zPiC9&L3M`%t8(s3?R(+pr->$gXE?I(?1boT7Yi#CR$8;CSN;mP%fl%hRoj@pBH)<8
z-bm)jnTt%+jIaE1T<u^P$?%co$sT2{pFdRM7i6|{ocV36A~CbouJz3SCya*;X4`Gl
z`_UFH`oDL1Y`8YV?<q{DKYf*+>!0J0mK@32y5pIk0FP$9{^tx2^-oE`3zLF=mQ;o?
zKjpYMdG&m!w%s8=X3tez{Ll4kXN>r%*W5-5&$54fUa5F+<%L7Rja)&To3&l6?Rd=(
zs>&)HU9Dy1w#iOVee0*kJA{Av#dD+!w#n#bzx;eInpNxlpT)Pu{!F`)xb>!z+~LpX
z-ZCAWIp?s*>UBHHyWh?FmwY|#p@i&-t>RoF!JC;3cL&ReCtrQXAG~VO)U@_`S)W#4
z7l}32^Y31|y~${E^uJmAZoYYD$+Z1ZjUR`PNX)fN!*6fG?prx@&3Ag~=g8^5wLf(0
z!W$W_dQ+5l8oa(1Xy#hoa*4f7bIWz!;}4~0<+)2Qn!%a8;ufF#Q|HZZezaYdYq?>P
z_FZ^Zopg)z3z34!)`H2YztlZ=PR_Y7IWum$ZRBkWQ(eQEla6KkO4!%1_&@2oD8%H)
zW;{nq#=zu%R{~pdWs_K>n#lpB=9wqwn1)TRbWyi?om=m_=GCiXJzp2HPi)=9w#@gR
zd~*DxT<=xN)>EyUBKSJ8Y}QK~{(on`$?2VX^3&fpZ!^t#%gPa|cGg}#Yx4E4KN5~!
zG{~L6sG96+cro_Zfu$}kd#v6yZ(I6YOt?1JdwTj^wP>OHXKV~oCeJQYm$el4TkoTx
z{Bp{)WucSa=uP~1>HoCKEDeY9bF-r!JUzM9-BxzfvovPbyAttD&vcDz=cUX(_wclF
z*5%OZ$~|urqyIhi+@^W$-plscb1Gjx%u0(plYV>8;eGqB1b^SX@`1rbo*DZ6K5RB(
z`NstL_MJU?;nwM^xwBX=>xXhr*;QI~#q-Pkt;_wDcG{Vh7ianhdo9|!e9gMK+}pM+
z|Hl&hcd6~)S&!py1<UhPE2#f(=PhD+=4mi*lPXWplSQlS*2Z>Dc;=rk?#kr+d#Uw5
zuY2znUku%+nxF1G`K8(GnBXriTW+_%`1P2}>@?HU_fvBxDm`4tfB2f5-|8EiPFL^Q
zvT$O5%HfGu*DS6McE3^c!`0e^dGUvqu6xPmhi6af|GCv~IseJFbrQ22wj0Rq*>rK8
z`?6WQ{KwNCoeq3hV9!7QeV`qyl<Nh9n$n=>Rgda=l>@&%uG2XxD1N8<#=jf0q}l$y
zn_05y_;L67Q*wUvm^wBm-PYSRHRH61%|kg&_J8M>?&bfby(8F4MCu;XF}~^pb<4c7
z!bReP_=>FMY%D_yHYDk)tCu~v^&#ONOS@Kw!t_e{x(mj(TeQz@SR8H0P_gCVinHn0
z6Y3V~MBZsXENQKu`zOx1Up+ibqeF@}aMIJ;b5&RFzVoh2j>Y%mhoUt?0uODyT4p=F
zN^2IKT=Vj-$1%o5rP`_zw{toBy7MA?#W?=myX(BvOXge9<O95=*4r~f&n~aexcg=H
zLg!V*q8ygDUeDz=zx{Js>ov)m-eb?c{rd3v_Suze^{4Z;?s;|ckVNpb+lM^Q?2<Oi
zJ#^1$$&S_*!HX%*c9k(bvAWZfet(`l-HZL@Cb7e^zx(4j?H5jZ^_`3J-mNLKFM4i>
zpOE~0!t?zhGb`34EzuI@VqKuMxZzg#)XwMY<7S<)HoG1j^m+BkJ^!~@eBA6kx%2tr
zV?3R8A<4)7{^*!|D_&R4Ip00gP|~m3yF1V#H`B0rVeh4+W4bp&<0`!}1y|cF-JVl2
z|C{Wd<ExLVyzl>bG3nQYce%Q3yuTXi9dfb_7o2nN{%P`He)flVOCBvgy1>!P=bu?a
zU4syVUe<~)(+V&AEy*^lJrW<Us+L)4C-+V3b3&JlvR8VfoXt|dC;6(W7SdB5?75P7
zAwg7))Ah|9w^xe~s@#1Q6|nzV?HaR0WxZJ{OAe~ot~ZqkI4;Gr;_t<TeZ0SAd3f1`
zxA${3w`Gc|t<>dRCS9M#yG(jD8?V|*>1zo^>UN(OA1qORw&0-3)$OJdIk&%FOxU%t
zq9Xk60hfKV{CYQ;%*eSQ8-H$Vz2N7?2NpQ~;;lNrzH;e;pTA9ZhpadlF-?p2*d<}p
z8T_rSK9;LZBusR&4Hm33nW6IQM}|ShjcW-7%7>+RzCChpWZb*<fQqVULcp)+?~4zl
z9DaE%VbZR<Qa<u~zet|F^LA6afP05|=!_-5eylLa*l{UpQh<}8;Pb_YQkqSS-qgFz
z4r*mAwb$}7JF|g{IV-x=Gpp7_;zFzzPe-CCTS!fagvpfWU-OO5o9@@@`Dqk7qfoa0
zYK7m4`-@*TH7#f9Qb?E}b!I*Di~ZRK^LegBZhkbKY4Wv}ub~M|>zW0<R5-6KIgr!$
z!|!AMU)Qkbohw$=-!PCkKjV?|#d%$)S&x2*kJ`IgF;bdk>AM8&1!mR@=j$(6t?ieo
zwEO1r-_M2X^{%d3-5H!4#U;m3wuO6_)m+u3=T$4Nr<C#-?P{33J$N^RspHc_T-AlU
zopx<jykPrI-)s6cdBzv4JmM>k{m)&%pmAgV?kbCljlVOGm6twU&RM;2)58yvpVrLb
z`OeL9NrhEphVzx(8<ZLC<HMIoE5>;~jq6{$p;_;S=YebA7Y3cGVDI0>dsg(#wf{$c
z-D~@HlcirZjp6;=O{QBtOawN!7l(XVc|$YcOSG)O?0c%6%Wpc!i??gFS<SpHBBJ%A
z-tF*@GVR#`&yRG;%9vJY@X74m>-2td)@AcG8~gtxzNr&=K6mzSt2CcaJ_gH$6TKIR
zoHKRM4Eig_Z?|0J@Qyakr|h+wFBRvrm43cdb8AP?za_H150CW;>HSt#=~=J6XUe?4
zc@0ljivG4(WxhQ!==i>-KRdX%7HKo`UY^Gm@X0GDfa~I=YxB=^9qP~sC<<WL;Pj8X
zck8WW!J0`?3VbV$Zv5hqd{)!!*P`D6RZ@GFE1N3V{0P$V_B{IVtN6C*D;KCAe^Hto
zQE0j%`L%b@+4`=Hhvu4wzlqdelp4m|ocQ@jRLq^qyocu15@y##bNigvXn$s}-o2^a
zxBWw@rLwxijk)JM6fJ*UQa4Q6t$io;(Ve%a?2Q(#{Ab6yq*C|b;@PXxOP6@Iu*|=n
zZ>{+0tL2XsM>cMqYoa2xYwM<U8hU#&<Z>!htB$%c9r=@*5cP>cA(lOF;_3fQ25TDU
z7jTxfo@myyzu&^Vd3~k@1GDX}q>`6B{$4&QO%*$;kN&)-q2t*n+vc?7;*lMKwF}|`
zChTdAV^gSW^iKA!KW}p@T#bKk*uk7y&X&Dvc4@r!mdh8uduVUkUe2dnvu^80Xjr!d
zlsK`A$X=PceW}yW-A$@n|MqQ}8WX>{#^L-5;Rh$?%xqz9=hryOmi_f??8p6cPFZqP
zuH4Lb?MT<hqn06@HhS+o0=?}vpHqJ!)$cs}Y(_<h`tn(If?hdOyB#D$#h93WPg(MO
z&!X6SI#I4-7xS|V9qqXsXUnbpP{5(l|MpS0bd2D?NvWc){yk3VKD!h+=f0eOe@*h-
znUAhs$V~jnBWHTCKJH?#K-;^7?WvsF8ZXzqKDdcvZMaObgOY}y$!jyQ_eDj|j=o!9
zv+Zk|*9GB2i3PIrQ;R2w|E;=in8<WS^SZ1n$K{0U@ln@wnD4m82i}RCbfn+>p8V2{
zuTM!gy_u(=aqj)o|KVPn&a&U%!np3UUAm;h)c;+TS+80B_fI*uZ~FaH2L)5^Zq*UZ
zn-q0q_e@c_jXSSANqv4Utfwt}!y=<&72*~R@9q}1E@la9<1*IMU3s|U<jJ{@?ldiD
zyKLkxmc-)tKlz`de%reylN7&G3e(@O`QT}_XgbsF^>NK}cHh$Aa=!chx?NR`+o8XW
zx=T9dSt*NNQT}?M^7>ENj9L}8JExfK{lkw*zGGX%woqi*^@tZs3wkx@lukT5IrZ$b
zV22kxISUGID3?jwcC5aB<nqs?f;|`JyWj9O?>N%=^pnct*u+fZu6olhhWpMp*}s~c
zaZh!=zJ*&Wb^6i?k_xrEnvBjG9y)PTBsiSI>C=ZR!HX7D-C1prAX9v<@R}pb+8tIB
z*FK0J+_HDlL*0PjgHhMt$83z>ar@nabs|6ZoSuJc_3k%W-XEV`?@su*qU+bYsP;b>
zqRRU<Iu{?c5VhTZWKyLHo2A(CeapWHu_b+C6TQCg_01RmE^R*PIBnMpsjigsdnaC5
zq@jHLtk660j465yLLYTvKSmc{-87FcZF<4unVNSv#B8%S{4I%a`t;X!iIu#AoZ`F!
zr$5b$zP}GTVwAMu>H`hcL{1T}gZDVLXWRNZewqHJ$SO4}%C%lMQTO%UT)TzIrSH4q
z{_RZ4zkT=f*Eg}(YWDrut1bBXU)l3RA6?kq{F*=M=(G3jpPvcmI`%s$reyqB9J0!D
zgK_Fb-;4)b`cwAG#9p_UtkfO+?e=P+E!Xz=ZYw*tG~>sUjOdR?4x63y&1RIIG^rxR
z>x0JHx8_cB)btoUH<;&N%sOFy^K{Go{Z}qJm(FK-9$tP*xk*;HnZtVW+tWS#UWW6;
zLms<qX0xB7H(6ba&)D+NHO{{kvWE8i{O8}5Su#_n+PkPy$Mnr5wT~qRvyC{Dg#0>R
zES&4ipZ@Bvx8@8Frek?ix6IsoKXYoHL)jhI=TbY)-d~d1*{-JKen)YA&C18!qQ^c@
zxXi`=dBXe?9QV53>)qNUogOyDU;Owo(V8m{7AGujd*?0QU?O*J^O>2mn!4{zeix*Y
z`mO1D!oC+m>LJJ7x$d9gvitFMRs6%>d*?)a*Z#Ns%8%`NN!PE=HC*-n$S21LUz>VO
z@88QLQx?vW==l=Jd-lb4{jHw7$q!BD=KTASbo}Mn0_B!9m%ZNqpJ!&IZaOP4JNCx`
z+c!6&S$(BnOr2W&AwNV!<<&y7wU4;>{yJ;FQ#7q*;h9O!hiig-+kWtQnb%}(_`|c(
zaqa63OH5p~405e2oy}VG-!;WwJhVS==7;U=Rvs%CMmu_Shu><6|LkX}`D1(c^uB*f
zqj;y~6&yLtu_P+kBYi_!(cY4&?^9Rqe>;8U^v2xxTt1H&Kb(4W-}%M<=(qMyr8d8_
zS+q8HoBT`v$J5GZmdQ<Be=~09|5G{ttNZG2zkRQ@XNA^5eQD3&UHe(1eBF=UZEboW
ze1Gj7CCRV{9o|+O-Yv7f+mLIr#{SfVi6P7H+WBui9d0Sl_;9nM#UByxcS*lYcKy~f
z@;V}FX83Z!R>@YcnJ1Jcq?mgDeRlcCMzf^}_L1xKlj3Ha;8AruEON}qPbuT!j*bl+
z3*0AnY-p8E);z$vW`V}m+m1`~>SlTwpE9W|%uq6B;x1C=m7Z1<G`BhRh=tLwOJ8%&
zu!rnl5*5i~IAh-Tn-RI+EHpjkq9WN`rrGqVS`}PsugEB$xyEphX8%<=n_n>;yM4Ua
z-rkw$9+|t$>CCxFx{~EPrrcb-al($KWnsSBK7K`}|2aRYskur9CcRzwv+Y8Z4G;e%
zchxgXW#(1!FK_u(TsuWA+AQwqbJH%bKND?NS*M6QZm#$lQng1-PA;?Iqw3O4O^k;u
z9S<d&7Tz*{mpoDFug!L+Z)s~eU3phj_s56$E;*<rAr@oQzJ1QA7p70{X@4%9*l}=o
zz^CU2OIK}R`{|vxIP%Ryt$fklcRf9qM#<^)8bsd7<qGrQjQ6g)rnPU{48C?Z*W~6$
zH)20)xdkTw+$xqI5xY7sLfoJC-BRh8W$vD*lG{tH{g%#n|G-xx$?2QJ)4EIH(*$>Y
z&i!2X>Z_K2#AT@&TXpiE>P@yPT=&^rew~SxwOIJ9l0_?O^}|mdKD*mH+U7_|+Kr{*
zzaQ+o^+q&Do~Jo8@&)&m1l4BgJC=UshrOTr+%DyR!rX4YCPw<_F^P3{+GiZ}Qf1k0
zSxjEY%;i7dd52E^;*%K-;@RatuT?#~wx_>>qc`+-M%&G$Hg%gyv?jzn><@or>XQ<|
zP$SN@eYc6$r>83X@*(+`J$>u!wRPU{x%X|Fvvtb5FCXp|95c||&y*!_b=s6uttN5-
ze3?0R`|rsJdv?xVl=JO-#Wbht=kcK?-{k+z)LLevlehj#K&H~3M3)7Y?2p?RHXr&Z
zURPP6R%!O?&*f_SH`AhpkLQ$g8Rg%4cfM(+_HM5ad+$HJ?EJoV{`YCA#S6b)l-}2J
zLEHHBhl^SZo;_$27uq~mfBS3=jrO_TS@+A=mRP6hUv@vAcg><w&Ma`pm($`i3p6#C
z&iHLJXJTW7n@F05X^xlnbp1Vn6DCU3FzWER>BU|X<osm&$}2F@XFA889X0<S-f>=e
zUh?HHi&<V047;{$JoHb4F<&TpQuy~9hZQ;>giIGY@@#62>iIPrr@UgjzRGCx!`c4N
z*X+98tiHW8efy-njvM~yB&~b>v87-5SXf%K^8aJ=mxQo>POojgRM`1-I`202zWnbB
zsvm^Df2wG^Y0_+8+@fV?{P9Y~vd#KEf6P<enGN21oBFA{7(cq;aFO@tVq+d=#yJwg
zyqji!w7l`V*i)#TZF_XGdF8pAFXEQeO=FRpai`1A$;No*xs>fi$vy&mn;w~N3yrA>
zD*DaK7q-CK^iNH6c=PARHWe#DzTEe6)w}flye9rmo;d5#0*Tc*=Z^~>{BH3ldZB#N
zG(!zp5!<;Bq}sJJtWHFF7`JYYxB4;T$X4$1Z<0FC4X<wAUCZZjwy^E`+k;-GIBXMV
z$2aeM?_Xre%XiN7rtZCSo$V_gZ=CyoidydC3ollga`|eOEv)$%8*{Jla-?hO>ZzjF
zn=3082FHsV-8Ea0cttN(^!vZ<QcpNV-zSvc(rNh>Y1hB!CFjMrhrR_c@4K9EH#{(y
zCno-AhFDVV=LM6W`^J6WJtsKxlZ;4QdEtiBR&xAdE6wL9tTA?+9v{^1wNIpT_ZzJ@
zU#+ew^-nV05y13IrHAvt_r=!>-&`uV{#$LO>E641Q=cy_>Y0^Z5+0Vg?&BTVq6=T%
zwz>X4dw$WuXM(0X-&@?cymC#5GI!8R4VTV;X=}ukro3SB39Z`ibLC0H*6-8a^ghlM
zX-GJ=P&IKyPE_Reiwa+^@>gd(-0*e&Z0S|Eg06k_ciyzU{KNV0QhM#FjEnzioqc^c
zbW6eyZ!c4(N|wcr7vlKBHZGh0-ZW;z3AS%J9A)O`RCg2>rHJ=zYP6LO34HP-MoYeR
zy<tewN}e}2H*A-l6y)X<eCV5>ypq!beOX774O3fXd4Ki&41Kz}b<gjG8Hw)AeCOlu
zR!?4ZYx`_=@BY|1k(yf1S-(!Xck1AK!_%LPw`@?~T6(7IpnSM?j_}=WEAs;a13yW<
zX)@uyyEx~eXDR#H>>S~S>A@%4^t>*<dtUJ&`L|8S`8~G}Mu!Kr7>Ue_`cky=@CiPz
zihCcst@cGtd}eWW>A!fp_n*UE5B;9s^6u#oql4c$vo6}$XKe`5aCP3U^G;^9N2P6}
z$qx~w$r+;D{k(r%uckHkzI($LdCFQd^4N0r*KPXg*LdUOvY2b`9$mG1@~!=8)7T%z
ztgq4gv)B8Zl)Un8RV}HT`==~f`$OX9MT6WF_R^db|5ac6C(81kb}PH%v3;WKmA?`<
zH#)aIcU^zxijcr_@&B`Uqs_kksh!pP#`A7}uk4qNy|p$vX0FoJLA&DZ?-&XE@F~&G
z`==B1J30A$TcB7~K(Jex!0+Ug^K3I8eC(PopZD>Ug}idLna}MTjwQEm*oRaf=ep~y
zcdf11|Kc&bd%tQm^>@!uYFYp2&9;sF*C%^(GPfMqYi0kh-|gEEiJO_4|0Hf+H()rX
zR-)x0>$p0J%WKEETORwL|Cm0pR^?Pm@}J8Y$Cq<R7R2!{@?lDJbJmzV<DZe!OoREk
zK|8-QmwGuC%4IsPiV{7*U$^q3tdI85^mPaG{`x;(dTOKg)Rmw2aIt*<ca}|r(^J)g
zljX?aAhxUtQu`_j-kf)1aAn&6yP&^qTfDRUS!++ze@oend9*8()ILp8c%$yH^qq)b
z+$>&>sP?=3A?&T~>8$S4E?r2NqLo=Qaf>I5TjQhu2D@dX*rbX+mwdV?|7yYm8>`-`
zV9y6n7AXm+eGyvg_DoaYa?Xa+s~HvxYq0&_?ssZO!~3Ha79UMYN^<OSF8sal>fhAa
zl|_&C&1JIEociQrc1_Ovjz9O^E&m1=yg0Qu-pM0ep!P8{SM^%{14qhxZXdh0?_2B>
z?ekheOxZaBUKPHVea&p%oU46ss9dsm+L0&sJrWXIk9YP@Y5BKpIfMH0rtCZE&684}
zf66{JwPUlD=F^++q<EgQIsce^<My^WOQu*_Z#(X1R#Ns_*uf|6n_6UnNCV5V#DJ2_
zvy7{_9SUuBoEA5|>D!ci+i2;=wY9tDOF!q&`}T3F>iyks&Q&gtNv#mR^5oM$o1)?;
zw_b=^rF?cO^E{V(Id9vO+Fr>!lXoq7qRGu4*7dRNp5l4==b`&PzFSx%RQC1KN;8jw
zX@TDjeiZJTyK(>Zvw!WEU0wWA%y0eexvGcFo-()X=J5B^I)BnEcjIl-AD5;sf4Z3U
z?pM*5J7@2m#=o{`y0>o5w8NWHIO^=Twz2X=ya@AbIsMc=qrAG$oc-*|o$9lTwmKim
zye@YzZg=Fph8inz5&0+fr!GG5+5bSgdD-<ionobc+dVxu-=01GU0zi0fMCJi#=@ux
zS+~`XToL0fIUUSXc4h9qe{JmXZx5#gcolIlaB93$Id(p+c|yb+n}luN;@j+3u`jFK
z$h=GDy>sY;B+cc{W&v&<8$BwnH7Hk?a4|>qIBjR^O_^&~R>sd5yEvyXmi1^x-Rlqg
z*>$X)4_uF!7XJI$#+E<Zn@uey|M(oOF!5(;i8Zs>+4YMVI9D$0d3be#(;JC(sRz;}
z4s%Qrkzf~3KWq^>S(34jyIoRG?dkE~fp<Q(FFDe~KKWgN@iX3ak64=~PkNk?qkN-x
zPOgc#s&}5YM~=+QjmIl^=A14ySdpjNlh+XR)NGf;=7pRRGuHdfj5AAJ<-Kgb_p+ov
zoZ81!m(D6^o}QH^nQJv!ao^oN>N*lyZ$er5c<1tR-+lX|-jOpgLYUix!?W>gLZ`XR
zTt~Z&x@XJX3Z64B{{CUwq`RfhCY&|jY*Y4GaKrb$c$p(N4!_@=ns$n9`oza)R!LpA
zh>$;ViBJ28?5Al;6^B<zsY`#ZetTh$)jy9p?;Edc&iov3_-*<8jJcg#52xyWn0Lkc
zC+n<p7B#zm=xtx86&N7YHfjHd38z_`nSWOOJhLJ=`@(dY55~!fMV{-QhT2pb#jZ=b
z?vb@XPxGXybIqhprvenkPh>k=yu6w7QT}eh^|O0bZ1R4`ys~-Z+>jGie=sh1Mt@${
zlqdZQFL-EeaQ@i$@%ZjFGCPw+7$*Prnd$IZyYDz_)fv&qlBN#tH@u9NKQlwty}kK$
zs(RkTN4r-|yST`%wBo_n>~$75|4ul_XZLa;-<1=)w|xI?6wh5$cr~MuVfP#Tnsw~n
zw_0<~FIakWhvl@#b88G%J`*d@UVQrXY2m&8yLHc=jC@eO?$Vx&-}yn?o+NA9_S9v{
zPpf|;{Oaz>6XyKa{`MLj7hI+y{=0hF(#rS!=ZxFBe(b%l|C#fftt{ViXD>AIZv8m>
zeeP`O(mYK;_vcH!*e<=QK3RF)V)`W!I~yI*nnLf$uu}(gRl_zaM{z2o-EH;y!z0)4
zp5YV3#QNgulziP?@x6DZyXLnV$n24uKIM_EJ*(<BMZE{}<vLeaewxSn_4ZK->Ag-T
zS$=K&ocS&3&yncax)*~>cP<zC<?q#}6{&qZd47b}`Ng3}4=|K^{1gyz_Yk?1u&U+D
z+`IPspR%14I{0J{_Z!{R&K18D?DN%UJ>FUTe81`MC5r9~i!W~yJA1%M@Cc_t12gZJ
zt#W0ncRhV@Ut^B*tqhJ+T(`yFP3-UYmai5rE#R5=ri7Dk=_y66>OD`DR8Q?TQo8hC
z^{bk<TynMUjQG6AXFhvK9T72@{z<}{(PCQGw8!RrRtxK&85*sAvxKiN^Li4Ort+Md
z+E=G6j9PIzeQof`119VfeHQo!eerwE%U|W7w#NDA#?aXtKi>)P?Fw!0S?!hhL0+`{
zVAZ2_xuxe$_8u@k9O=DNXl_b<Re|`k$=<;nnw(Y6GtS2?pJ*_@{#E{qwUSK&ZMuAm
zcR#B%s#j%?G-=>Xt((8?a$lnOlZ6axuKdY-HC@Kr<Ba<mRV}sq+XWYhPbuj8Y8s-H
zQM5)VYwbyY^^&Jw6MW|s9q(9`wDr~M@VTpEMEv*Mz5JBPW$P@D=Bc7OqT396gYT-8
z_}@<6ou~b;;;nAVe@VX+Th=)CzvM}Zcz9@y?z(@O+cWO6?A_S>eZ!O4y-}ZD#~wAY
zTI1T7E~WeH!^@ET!`yzX2O1iG2ECQFIjeCj#Axf{&Zjy1mazPpQ+oW>vk(?8{d+AB
zW~43h`eFZb>GIcFKL2`)_ElVM_q`uw@;i36*Z#K*tU8*N4|is?*jmM$SS7I4i&eNK
zBfvS>DJeH!(LUSxu-W;y8#&D8*f51;zg)R@%gImbu5OA-KgAEd_+hKSxWMm=;lEWs
z{O<qSbIRK2o=@2OYcsD~yGGW0U*Btz*`GX5_mtob_olk46$;N+@4fxvBYS?lgp%Eq
z1@mLtPo0#Dn%Y#?W?8mge6q;>NH5o<uPZhzZFXqY+HjSBzto;1&QI$(|6CU=Zu#?s
z^GfTVCofx;7c(wzWGQU$cz#eV&#LmwUiQtR|Gnp{XYKfRm~H;~=62cmCFjh_W@gK%
ztNCh{%QUC4%Xb)Z`ODTsUpU{m-SFqE!UI7nQEScKd@?_H#4GaKgtxk<JJJ@OmV50e
zwpil%wygEVp%ury9w;y`64>$MrKr8k*O#hnMR8?zfvZ#Gs&7wG>U+2+B8cm`=+WTf
zx=1DEyM^tdO3&JvPXwJ`rsbAtB`x}$`S7u6CHlN6Au_>P3eAz?YW-)EeO`Xn(>T`R
zc_7oNuBcM8^Ht4K#ecdbd%V|j6y>hdOrP-eRq_*|T#kcP4#Mlo0*;jRNohY(7hl~~
z`_#SvcwhBO$HN?j24}Jb=azq2m$>%zcCJU~h5s*Rll!j8fBv|lN~O|@ie<(%d`s6R
zzB}fhpLOe0h4Y2Y?2``{#Z7&CTGTXCJT@`=bWKH%qVb7<vq@bl&R=`OBUa63*{g4G
z@Zqbj55;^}W8w}=Ej41-t!j2Y!D=<>vbLdb=7*pRFX!z~Rrux|s>^!zZgSSe8=TsU
zib`f&OZyv{rRB2sfn-nWGyUKHmoKb6zARvo(-nrd*>9B1&Q`YW^$=T;b;H|p!el$v
z8ir6F#bp~sYb(|`1xoF<w@S5WUE<Dlrc>RReaDZrRU5BGFPr>Z#&7YVCz(QB1q(V$
z1x1f9oUH4_EiGfs<A1$fHbh|N{Ezu&JB-9cdlnjqY-&+_^8C|PXGhJqvNe@98+Y6Y
z&5+4pv|l+(gJsF*FSD5HzQrFG-=mRieMEU~`Qk~6=aT+<z2JNOaixT)oaQP2dav29
zn(8KX^D22Mt`>Z?fk#JDD}BAk<U*~iR^#)pK4&gneNyQ9`kCQB;<vt<t-5#rO1o7F
z_g-Cf*z$bQr<L!%RJj&!wawr0EUBh_*GtiF#?z-xR{d2k&uB0HYnDTI^OT19YqzPf
zFJB~h*HG?4!S2bHuV(Npx0oZdnnUzox52{Q&uot~DtX@RlI?tWrLS&F;*^Y8d`Tf^
zx>kJcP3T<ssOQGt!$&29xAi?_5c_yl;@AYeGVMQVlG!}Y3F*Ev=lnRG4*37;Eppkm
zD>*a2eVShQqt-=>+m5ckf8w(0SMzzIr`|1kc~59pKOY0<V=JpyBEQbp_j=8ozhcT_
zF2g>r&UR0~dn-h^x^fSEXnVS2uAf)Vqw6yN`@C-U%vgT%tGwxjppV6WRF(!kv)AUE
z;$T_vME2iik*{S_zIKP_MJC@rxM|wi{O>>GR_4F!l<e5jnzrzIW_x$y$$Jj-7}*8+
z7ai4-Y<y$3AnmBBf(qY}4@bL~{SZ-S;Y<52aLQs%p&0M|%I2_NQ&x)SUUpfYrBf|l
zZN2iWcI&GIuNOHLeX`RQJYhT?ZDsc3v#H+H(`^z4C*FtVONq=qX;dtH!&dR{ewQrn
z_W_!fJn1PPU!I?T=EuFJDL?<-nC&CCW7%WP-P2MN7e-iWNsAQBYg0IO)oIq*>xMiW
zS7%GlnS1VhXxqvyY#RROxV<A-)lV45MRKv2dUQ2+Hp!f-KX7V+^HrspkBV1B-S1v<
zf{knUoK>fLPV9fk8`qyR=S9&9E(M!CiK5FVPfy|vcS%^k<k`0UA?tsaGVf+}d#JmD
zWu8yT>Q~bYeIG;wratD6+u5>NWaHfChbwJEQZI<Hdo#RNSyGzYUm9SzJZMp$NJZGf
z(k-vUMYDFlnRe?>!86a$4=d9HlooW~JG*gi_$s@tEc|VgS2KN8NDuWrw{e;B{iO$W
zul{W^HC*|xTjJUi)3Bu*gIi*PPvv|l{~n(tU-Edm)#9z+3m)0KX1{&7>g-C^w+~(B
zofO%2ZEx<glQ-vxh~&Jx`97j<-*vS;%^VgEw<ia^yXab{xn}_rQ~8ZTvzxgV34eap
zGI(TK`T1O4X*@SI_WAQ(8AbICE&D|5e?(qe@#%r}>04o^=B9s?SmW?(bHoqMvgMms
zUAW4yHFMG})3Ax3ce<S4w8^M4vp|m1(yMcW#Ej}`#<O|vxjs(Nj7Z<PPhF0G|D}wA
zWu=;}CuEuK@A&TUu`amWZmOmGrvrhm(lNZRtUrE|fAo9ByP}15W^ZkFTiSdp$zPmt
zRiXUW`J|r#f4w!+p6|8Nl~{iJLz#mHdw>3JqaP1`TfXM2_j)fWcXQd*nM-)qpEr-=
z3{>@+_wC>#^{q>f=m*)@rSZmv%x=0ndEJ6L6OOOkamcw<$v^+R<_7b7Ud4O$-(J6*
zqZ3j-|GszV`)=X<zNLS^<eQ$5DEKo`PR@3DD08g0rr!Smn;N5eDf6ua*4yuteq?MW
z{@JcHjIY0z<<9BKa@py<SJpEZo?gg#q9|xx-ChS>xtLAY^JewE_;cHB<<h)OokdDK
zzRuRXp0mvr>s99YtyDP0yi>IISi#f1F<#Q2ZX3Puo3rNAI;U&VUvv{cH(Z)OPw0Be
zwrwli-x+%=OlD1sy}qiZRVQ(hM)FFh<h-U*?H_-l4sb@@S}*ZC_@?b=U)y!7?s&xR
zGE0fLakgMnjk#~%Jd=M~-d9#_&`+I`v}yB_kdx8Pp(k&bFI{BxYs=j_*^XyC%#o+d
zu6^F&x5DB?viIr<uCrbFexzhE)HJev@b!4yRxc64?kuGJ<kZRMKR^HL`zUL9-}KnK
zqorFNa?W+Faq(@M688Gpefd@AqMo=Ei|oJSRKDlWq^$2x({`)yajxpvr1?I(z;&0W
zS!&_So4=*J7fNi5<?J!B;E`cmxc{b{_4#Vy5FN7z37#+ewk!VmKbvVs9IJuV<I*_R
zfNirb{nsl>-}h=h*UD+XzE`)^udM$V)Aj8^;!pOquj2pe^eyrDqa!Pj;>=U*eAsC9
z&l2;XLt@3Y&+Jcz_x{f6XYN>$y|_`(a_;}FqR~4%0~u8qo?QNLxWIn;zYU%NJ+mK{
zJ2ErAnr^IJ{q13{pWB*uQZ}t=&(CyCh^ldDd+x)ZyT|OpPXnzN>3gqamvZHpOvrm-
z%VU13y?Tn#;?uc3Y?qk#?urfGW1V+6XU1*u=1WJ~ugo{E)0meVIpx5sibI^t83$dN
zx1O9`ulCbKcZb4_(l55EH<ixFi(EZ9|Ek=vih6c^*VjeszP`?1Fhz34EZ&0_57HOi
zp17aUOYvfDRY5w-)r9h3G3Ik?HU#sBUig1z`{kdV6V{1}EZ(*)PONr%&sM)z1qO24
zK3|kQ*2=c;)$+~J@r^C}X3Se>IjM6h&xL|D-L<>QnU`K#_xndyXIXpm)aVyw0R|;z
z{d0o0^8I@9>F}iNvddMKMv_{lvzM&9qP}m1n3czu4Ocq8Iizp+%(CKSriM})v+R^Q
z{a%sym#i1FUW77VzkFC*THHr^*`KTX_ja*focj0AtREKVT0<j>;!Cowo-aMTpm>#T
zj&!Q#)psE#6PE{jJbD(qqQ|=6^8THgJ8j|)ZZY`RFQqc~eEjZprz0jwe^p$c<8EVJ
zW%*&{<b{e$CO1Z0JGoEfy3_NxrG9K#QR>WB?X4osLfT3M4qHVAU5YO2jSV~L#QJ~5
zBvsRM?y9HRriw|wnI>dbA$<Plij>NnyV|^*E}K7zbiLDGt0Vnw>oZoZHB(i$uJUgV
zkL7)J{mkb*S&=3?`n|NhtM2!Qi7}~64Qp%L5XP1jrTzO$=H<QN-w(b^+p42kdB61j
z+JyT*IcG1t^~cgKE7Hv7bXMe+;I132rSIHzPqS$zWiP0X*7kPtoRHo-b-K-swH<q3
zEU~*4e95cbimxhuFLy|5Ojg1FZ>!p7t_ykMekJXnMyeuDg=Xr-3^A>xIx4Mi=2TfN
z_uRBD%(H*xq+01m))wK#+}g3h`IdGkXG{)SdOl;xFL(9RY?7La8m-yWpDoIMcxdUB
zlbaN0P2IF)O}lJB&>_FGZ*KVCYr8b}0psJvlUxs_w1;k567oZ}eBFa>VJ97a-%|Ou
z$&D?m#$;1P$RA&+$V(TOOlo~_EaaraRO`R?^EX~N+0>A<D#dfn$H0@5G_~#?mwh(r
zkjV4C9}7j4uX|X2%KPzZ_tHs;7pKg6`gvi=rT{*sS1F#B>Fn&*Qg5q1Z1kGe@|ypH
zNrrr{&a8P3Ami<&B&Qwvm5~y`bzMqwMP@J0l^+=?apnOh?OZy#`u*D4Qs?sgzrAKk
zqt*JLXHR!kvR^s>?~+#h`k-mj$GFa))@%Q&XmB}gEzgy|8L2lDOm(+=Fg`f=c3SW`
zyGeVlyZd^3aeSX*B;@w<;wdKu@B6HbGp?MPbV>Jr{nkx?FP>8S`D^vm++~qkTXn3u
z)qC7iUH1BO3jY6Hf9_-cULCn)PpP0)ElJBe<Ct7ME}jooQ?=mRAF*Lo0>e#SuLEjv
zH!Gg5+sN`=<#P4Pl&berztq>NUGs6_VSWFQRr=`-MTb`bWx6INW`AOAGg^2T>~-J`
zx*MKs)y3XyDF24fwM=#C{-j^!=hu8n|M57$MWc4F)E-NV8@*RHoN%9Z<;j_n?gfk`
zpDruLXsH+m)X3~D4VC5HVefp^n|WPeK=YNA2W5FR+xCda^G5_vSNZMp^>Fd4{3d<B
z@`oAE0v5RYJniNbjapjN({}t<n2veNo|a1eRje!@O;##?5L{kgvCe)^e&!L4+iYEO
zN5YzKmoaOs>gW|dee$O2;yC3~^+y&j;S)Xf<ltW^Cf5KXsTGdT(qEfwH7G2Q`1|2U
z%=_yB7tbCH-j%5=dM(;EV%N%Dt><F(pME%!-@L2yUFP4pJ2itWV;0&>d9lWhWsdQJ
zj+RH=p>nS8m#qpGm)ZS7V^+<3?+1-f51#tB<HGKzQjfClzqut>^<(|)y<W3BMg6u<
z2>G#4grOsmi+PX0y$K?zOfRJu@4VxZyuN5*slX~Oz11zJx;L@J1~sjlvB)su_>NWm
zLTr<#7;RcAWx>Kdv#Y*WQ9>c-V*TWm-!fwsNO#ElcAD+j*13|s)c0?D^W3*T7g@h6
z|1f8sM>BUYzmo`usMC}kf`3$QHr(6X)9|O3%VU0zY6jce(v3Oq{5iF^?d958xj5&C
zQC{oWzke5mduM(23N?AX{Me=KJ1rw(RLax;^{z>)in;lvI?HW`YaUCCRc?l0e!r)3
zm~;H|yxWzr1%`H7@zZ%Xo?SKRQJl{{xx*d#nu1(BLdQA2EzJ^IbJ=RHijnj#gC7>#
zMc4}~9{JwtPwBqgID<{KPUdEdRCq&=-EH|#6KxGFKX1MIae`D;{VhMy3zJ@l+}_$K
zaLgn9orRu6d+m1JmCp}JHFa8c=V+AltKC{+wOH{|gh|Kt*}MDBuB~V~yfUOj(EUvr
z$GerCv7Ij$MGIb9S=#gVmDlBD(aO0-k1eKENzb1;ZRygx=TA((YH@k%YulOccl6cO
zA8KZ`%aB>a6*AZQL*kd;E7mU*sOeC@bM}aC!tP7+OtSOWb8R`^Ct~_~b@)$JlR5d{
zW%sYhKeF%XHdbe5jajQy;%#@W3|;N}-P9|DIY@!i-mmv<&7TDm%zv0i{PiiEGvzp2
zyx((QAL$c&9$nwvbvu5~mxmWzlkY#Z)sgz`buMOgPrZB>3$tF?-F55k&I(_}&we^*
zhu66|uiWxK$f><|G?dun<x*_Wz9itDb3wb@I<vJEALGLI9oFiInz``ETR$dYy-hs@
zX=}`Grt)iC-8bvDcQ9Ys`ohSVkneT(Zk2lZFnjZ?us`)ZHum;1i=)fV`9^*X5IlbC
zzw-K?|8vqEv>YCXJv|=!eeUu_$5-_|O}~ETrLR)*p{nl!(&yHFo~S3g!QMzb^Uz0&
zTUpn{luk(OZVJB_$36F=cT}_UMxUsOHQYv9U6zL?7YlNIUn5-fr?PQDC7VXARoTyi
zpSQMrci-W6{f%9W*+MCc7_O6s4i9e5(Nc1Xc+<P}?3e6cTJt~OQ2$c$_Ja1^+*`}9
zS^Hb=+c9Iov~%wt-j+&r=F{S+Dy~q9t9pGQx~7<a_s2%FI<2+`zhqxkCxjhi`RqTr
zNa{fn<M%z^Z_5;^pDix@>!H^p^kT<<HeL70yZ02osj%PeV&eBFz-aHJQkBlWq|L3J
zTc?<;{N}>Bb*+V4y2Z;UXNvTe#hyHWeXW4Y_RIMjexGW+cCY*fi%8P~#$N#}l^Qo2
z9<$n)tWI5fA*3$#{Hd!~JzY;a>}uV5aqmmHBV6I8n~mCzCoSMCnxFjBG~mXR(~lZs
zl%2d6+{!W7-p%@JM(FRIKlN0M*mtXTI#2ntE@|zXr8Ckq7X9Dgs2LV~FUEhT%B|^>
zZ1!;pPmZ6@x%Xk~jU{g;U5Ie4kM(<FmBM~SXvI>t(|Pl=ehJmF&6IEY@oC$fZ3fpK
zXJsCI=a%(BuVq<cUsHl#z)#glLIy_PkA`%HS95Fd9-O}6;_7HI)#II04zA4F$h_*b
z&XZoXd0&@HocZ!m`k_z#>c&E0=W9z+pEGKg9<MoAXqg<SDORWPZp-&q=ib$w)-{~|
z*+?K&s@O6&CvW;r8S`0Z5_f6Lx7k@7dg<yO?x_K7r*)p09B@6=nRUp2fpe1I^MZ&y
zQ^L<lSwEefu>Mp%%lZ(W87iuu<RAV_@)NJ)j9az9EZ4{Cu3a<h`;$kToWB?s7QAWF
zevohaCZ9R>$SJ!AY#$%a*>^L3#-gS!SApQjE9D`28PB*T#y_&3733&2Curx5&mptB
zHm{!0t9g#Y`bUo5+Zn%0&61gq%BFqx{IVfB@|6DjMfLuTH|Lbap8tBnbHe$r7Jp91
z|0>-0>Wjvi;{~q4T|Z{Y?df07CVGG7cXJQjnOnJUUD_tvBNyR#%~RuKljLow<kUs$
z4*r~}=*^LHcB4~ML^l889irBPYrY-id2Gii7N6VF_#$lG;l3uvHhrIeJC+Jd^YXi$
zS$Ss3Rmp{G-aOse@p8wOz~daX3U*@GK6P4tWe~XXKkV>UpLJVTacn5P%b+3XY$uU2
z(dWg(rU{1^){CEalWOOmx@~g#n^jZQ{vWv(B2!cGa>;5Zr;TB6+d?FIZe;Wv;gdV_
z!BgaQOycYPk<0H0+$eIhSvs}MXk9Y@Yp2Zu{yP~Z>^8lOn8#Z1DNk};%kj8W-gAd@
z#k^ih%1Qs;%Q-FcPLF@mF{KI(oxp$jcAcL;dd9R_O!rSR6aB3>-(}tL>xzc6CqFo;
z_%XYw-dZKZe2Rkl51VPZ`%h|Yw$n^B$y|D4wSsxYy|W4*9kSL2wAw7Y!`0fgEV)_R
zedU#)hC4j`{70NyUVS=RmENi<^G)^61IAWu_1;pwuM>FrdtdB4Qf5#n-m>JZ2$Nvg
zMYH6&Oh%zOp)JlPu0bCra4?Df@mn&PgEw}89N*LM`={<m)g)iJ$jn&1F_dTBnYCON
zs{2edRhkyxZ1>zeQG13GFYoyySJYV7^V+4X@w&I{`f8<#KEmRw{3Jh2KX&Wfi<JVc
zTjz%9`dW5>Tf$&qqS-iY$yQ;H^n8ZkjstJX9Cf+Q6*a67GBw^UcGUK)j1tF|)iYTc
zPUpV*@3_PBo}2KwH$UcuZqV>QaP-SDVIMpBaHq9*RJ$Xe1kHP}`%xj&$&XhwL)S;9
z$Gi)Ew0lXh@W)@4)}qUMZb@%k=lCttCiUHy?NMHJG2(quf37UjTbb+CJXONsE|c!k
zgzYo8Oc2i8AmDeh<@;hA#>|Je`xgcrc7DFH`c6OdQETz#Ugx&#;{2EWcneovhQb=1
zYkRm%cElVHH+;5R>~BfvrW<FUapVMD-Iv;PDDPbI)-3Cf**@Q1-S&B>D^!>r7dKmL
z`=QNCzrJ}E@HNodUu@FB^y`1i_vIgT`m_Jlx~1-Yw>j>MU#NfaIIp2%_fMTT-4ji%
zD(xAyMnyqM&J8KdP0auQZg};(>q$o1CP@!V32q$+vy(5^Y3+Npn!R*x>35HqL;(xy
zNQv%D`Nu}3r};i+=AKIZ91>CN_W0fE`EfIfcnkb9>mEN=U3z9mxj^)@^k6T8y>B|c
ztP-_;8*TV7T5kIlCSUXXldd+mLk~DPy4t#x_89brXS};VV}_%dW8|6b{&LF7im$a7
z$wfEjuALC*p?+Co=FRL`b#tA#9!*`g;_cD<S!Wi@+Q?g^Nd_w~-k5MHbk>|zF-(^q
z3oer5+2yU7vtSa_`<VCc9MNkf()RBPHDFuiyW>UW@tT+&cMckbcuR&Iu>Q6@v-Z^6
z)6R_Ux9{$l^{Vz`O7=6~y=u$cbsvdw@z~tm@YwL!sw}(L2F%}5o1Zysb5W`2nq0yu
z_^<y>q;pWO-`6hNevh@MJYDY`yj$KOHAh|Y^MniDCX0-1Z$@wh&CuuZ4Qle6I$1Vo
zqtDG2Z|O6sK1&qXe|)fA&n+u-^cGiVkfyVjTF-LP8~i(s7H>)ZxM<~(I~xnbHg0Qg
zf3x<{{b^md6+(_&Ix_Rl5{(?5zxg6ZEZe4?nELY3rraeT9@{Ti?fGHm_KqW!99J9f
zU9>noQ8AH6#y@BEp?kUylLC$3m@=q@MM;Y6KNTL~6r$5CS+M+9Q3Ru#;vToFHizD+
z%{ju*D|J5e<%7lpTOU1`$<$w75T^fpwLtK?)C>pKW#&eormS2PIjK59vs7j0y{Q_z
z&a|YzzTD7P635W3(o?f-hn(l9KP`n*UjFW!uk|IaBfImJ+``8;Yy8r~O%=<g_ZC`T
z=<5B)9rfTOhp*&iX-Dxjhfa0f<2Jn`_VKnIzm!{(x6@+>=Lu6L^klA5XIIbuVBG0)
z-Q(7E*W*TSUoYCNa-qce(In%GUNItuMz^ajhwNED^^jGbP2ns7mHZQFUw#~1$CkHr
z|MEb`-#uyJoR5xYtqs(kEOfzRe^|L!#*VTpTOB%Pm~EN*FtPFP6{|H4N4zwDd2cW*
zj=Ig-xZrhT>Rzk5GiP@REi`wSX}*xhxq6w<`NLl4ZJ+YR2y#`hu$=w-gwKAik!R(x
zwL8W9GZXHIzeswdYg<rr)cC`Lg#Eo6b8GKQp5v5{U~G+ly2x?G_N1a{N4In>shx`s
zT)fgT<L<Y@d*@%QD_gShz!c`^=iekG$!Pnio@xKvzwV)A$|Cg&$?Hd$t9Wl)cO9<L
zQ0aNRT4rw-vshaH?X>kF3x0n)BXh2w>ETn+?GY+s`>!l=+4g>uo!YtV*wv5s*u;59
z94e?iutxDwNy>VTh9h4X6ijMY*!2oYo6j#kYJEF|ZPL=`J(Hha>E}DT_(^Hj=Vj-0
zu70$bSt|DTd|Z0^ru>%r3xQHSOl(0H1iYtvI3A8s2{Q0@;fi9dZxk`9U=`B5aA~6x
z>)Ks;dlOU6uTTqHq!sJ-_zGLdft0T;Tv4U$tZ~-SU-#s5_Dd=U_G|OntrgbFI6O7>
z`~Nh>n3WgukH!i$nd=&DXbk()8>uwS(eU${HU}=LoF&J1WR|A*`>5GAGHu*j%*Yj0
z^47MoNz8Uvv)|IlOR<TXiIH>mGRyPNS<w5T?+9nqmj>ZoTH9V2?h#SX;CN}@*u>^4
z-Pj~1BXwbE&&gu-fD76(QUcX;ULI^%H*?*S#fE<m8_T)xnzZ=!2cz`c2f8x+WjP)E
zcSQ<lWE?a;v(eBwY}N{v{`Nx?S$owD6cSS$Q(AW@3r=JbEY}P;+jGKPSVN$2etr_G
z_t8rssZmEBGAv>>V)~cL;~jD19LuAP2P#Fy3JauiR~l|u8*L+IW-6z&j{jirot4t}
z4sL8Td}FsqVp7O;&Kui9_vcT(9mK9M;f*1)QFW(<^S5JL_^<r+ST&o!=t<Ed>xXie
zm~{lK-wJCB%=y+S%JIcOSUVxQnJcCIj>3XWKJ5?%kEJFHnU3iwgeb75*}OcZQ^~9)
za7??6uieup^t<wx)5UWRIGaAO&}UpH$|mCRq2SOzuY-G47uilVX<(A8Q4hGlXMXCD
zV8hBC>H!Lm`Z!s*Sj^&CxLBk(nOK{?>|@qwxFeu0(R$_DwA8K$IfKT3uN*j8?s*8S
zF4!WZDo}Xl!Gbx@MO7!5nS3a|%j4|WukxLRlV#N`P9csr7Z&`OZYIDS`!(T-jbqa`
z{woLOwKWQEsa0URINMEf{e=Z5mEA6s)!$DyY;x;4@P%vt{vE+ztn*iGx&D8t{<Qk~
zyT4^`&wi^H&1Y4*_oe(238zCWZm!EuN58&*ox`+s?KS)S`E~Df7qey=#K*msd^^X!
zx~e((d8FO)yMJqr2%r4-MO}9Pi|oAJdoN7quQp<_d)VWVINzab+x1M5hPA4<vz?Y7
zT3&Cd@agU4?%l`V|Khn|oqc1T)k|yFU-vhr9*}r;RC@dJei#35YcKye{(E|TWzFvo
z&nx~v{Oi1{{`<e_^Q#x$wa>a5UH##e;=T6v`W*lKxI25RcAdFcFsE?Km#wisv;JGh
z+dbD%?(*r|bjUKQ>yuH))Q$_!IW4-5^sO?z@un-`{}e9q8zo!cx)!y+equIzRRZIz
zJjDtV-^<Ux{QLJ>z-FGH4f|}HTEXp+)o$-oDyzk+79V;!ckx--*^V1OC(d*fjC8l-
z^W4U<Tp&f@=IQ^b`~JLdo>R8N%=S`fUFk&b6+1hlPd@UkJGbt-e!SN1L#kzeKm5Hv
zZ{FizyT_Av8N4ucQ+Ip!e6F#ZqUpm!D;~rd9$S$j^X|%}f3?C!ZWEWV>wcKK<dx>$
zNfkEf)%A7fw&=@zP&$38blS|r4mWa_-957P@Fu=Hhqg+qMcUq9zG&mx`D~^du@=d3
z8ENwkW*+a_=zr60di2JBsi|=Sr!7o7?~4DJ%-Q(qc%)nV$=*~JzL&}|kKh0QY_8wc
z5F^~UK|R7VLhE+4i$aI&d;QJ>@&9wV-{!x!-dtaAap~{+`Eq>~|Ih2OOKvs~=Wwm@
z6FJwf!xZ-J)Ts;p1?h_d&b+J_WDVJ&(UIHxGaxW%W0Y&+%Trv=e~L_AvHVzQ?Hy3H
zT*TD=^G6AuPwRA8@11vR)hgS&TyDeh9bp@${Rp-BBEBh4ef{rur+)oE{(qVGBANB`
z&r1dWnYsIc@1mXzdGWpst&=Zjsr>G`c76AS>AR2r=`lF|`Et~`;_vI<HW?iEI9w>6
z7SeOsd8_E!7uQt&nr)mT*Hl%%&fDXTr115dTYGqK^>17+tF|xYO!t{Rb-%I=d|dM$
z&YmIprmOPhpYNqRE9*q2#F{;Sxm4NhhH>nUxwBVDcn9B@vvlV%;k0*c_Z+vcZrNG%
zZQs2gN<Y`jJ=>vcvRnDS)8EB2zn(t3`%sZph0giFI?nF36ZY*bssFy{R;RAmVV`H-
z+E#&HGnaq;=T<JZO6zfP^83ys#V6F9ihlb4XD_XYa^y<QODQfXN=?iKvGS9$xFGin
zf><^-T>6fsB^mie3L1{!+Y2?h^qq@R6H7Al^IQ^3QWZ2@tc(l{4Gb&|jEszojSNjR
zx%7SWQ*g=!6y>LsCZ`rD*rcVVr5PBQq!<{OSsECa85<aw8yOgwr5PBQ8$)O_GXn#2
z69a?9R09Je0|Nt-Gy?;W7#KtKn3+Q5ObraoEg<HA#LSWr`izYX42%t+*xU~4gZu$?
zgB|!1Z%`ORu4M$VK%ou3Q&Jyvfj82XlOaW=sUQh1eLv6*llpFkT>4Il#i<}=3i^&t
z&MvO5+RlkNnMp;NT>7qg$@wXndFcxJ;hA}kdBvG90nn|Lc_l8X#mPmP1ts}K3Wg@e
z3I+;6pz9oqic6d`5{nc}%(?V^5}_PJLrX6G@XVBwjA8{t6BDpnWQT)vV>%pR0mMRx
zo6%kAmXnxXtYB=!rSDmin3I|8n3tZDs$jsS?^v7+x}MYA)PPGLWE6;_YXsssCl+|5
zW~OJ9D1ap$%hJJaQ!q6!=F;~~tbp(g%`6Qd7KcL=n-~~y=|@0yf(;5TNzDyY02v7i
zLC7td3c4odW(pvS6by|FO+Z$}LX2_C%t<v;Ff;*QkPf=W9DWNrC`3U1k5(|YFjFu!
zFvp2OSB+xBrpBN!G_e3(S!!ksy4KUk6m(0cfr5#Vfr5ppse+k_nF36wiK(T6iG{g>
z8Tckom?%1JVq~mfY6Nnvfr5!S*i2)H8Y3_bk~1|j2b*ea0=i<=*w_@R!`#p`7Eug<
z%mDchlrVi$OA=EOOA-|f!43i^8q7=H^`V!+n;DoGn7}R#HB>M(G%_$T0fim3q^X$m
zriL>n<oeBjmfz1E<2iih01pq30kiUgCZz{W-YHXD1<hLm0|EsCdb017cdDr=&YE%T
z&F_0HI)`VtoXHBBoOXYfTJ9yaSxX{sWqdQ~KJ?%6``pK3TVGzUdwc!=dhvOc^FGge
zy6^ek=W~8L8T1$*i}`V3W2b89)5Y(+Z%#Y%<LcF($}BJUX(9Vf79Y<#HgE4F!_%Tm
zm5+<<|Lyxv?$|fGX1?`3TAI4aGk4w0xG%qWN#87sg;_`9?0@~+CZAls-+Yyp#i!HZ
zI<h_aMMlrQ`K~y1cK-cMOC}rsv)-~kKjy-QAE%n`ewOT>ePTvdR?NmT<@cBF-j}{+
z$5g|;mERs&a_{?F7Gsk9(X_`^^=xLut{JMv_V4-)XVjkib9M9Y-rBW28!tvnW}nE<
z%*&|KKONfgarxr91a6*d)w)$v$`{;OoO*CmXrlXhc8Opv$>JmDv*R{>Sb8d4%s|YJ
z{ky$MePD9)-)nJ+$KD;0@vRm&SrawqYc1QeV@Lnia7&Asq??7xrMz+cAuhbX;^L*$
zyK>uD|HWv&64%d+yYu%s|98V@v2C{_XLRUZufD#m{J!O7vp3SyGLjxu{m_3MC-BGR
z+KWrhm9gH7<xJxGlSG0gVqc^u#P+;5?RWosZ3X+*iG4du_O`lSKVW8L8+|n7%a+YC
z*Urqi-}_r@MQEwpKH05me?xyU@yzsEv+vM0jWb6?X2%7J%w6>&FXdD^<Fjb(<8t9o
zKO0KaU75&#?DbS1`DF7BtJ3LqZf8UmAKy@aYN>W2ul@45zYKT(e%`mTKkc$#`1%)h
z|03)^E`Il<mN$RX?yr0QKY#r1&F}k%-R55Tr?^=*`r7i%yZ>#k{pqg%wQ}2ol(Jak
z-7j~Ptvx>7zx<`y#-GbqKc7FZPUniXU+D5T)|K(ijdz#qe)6Pr*X|o{F5i7$GQH|S
zi-k|ZQ}x{N?%<C%s`D1#{Z*`gxWMei`|t1McVCIjdG+!Y@0?eqe<T0yKeDj?<I;Dj
z%zj(`uHE^`{Kn4zJ=Mu`R{Mpr%lpNKSNuvZ+vQ#P?#knN+wSkxd8=Nh^MB>rl-w_c
zSI&L-z5j09mV<Z7|Jd$(X<h$|=l?`+$@5-Q>^EL?KNY^=UQ^}ci{&cw9iPwsq&S;@
zirmI}@3Mb(pS9;t2(wSN{O|Ms-}?B7>plCwy#MxS|MmLy|KtAeeG#<o;j`dtS2r{N
z*RsFDa%^h(%<u7~`~S!5-Q_b2uAKMts{c)$1wrB|FJH}m(3o?$@NLqKj0bTEoCfS4
z7|$Nq^Z1tNX3JA%(^kwoyKJ?0<k~9p(;?9j&AYmF|1AG;{d4;7>+e(kt<20Z`OjzR
z(h;iheS_es+d9rW=T1#}JLg;atNJbLi)6K*+}~i6DkQyZ%4WM$63;?TMeGYY`Ri~0
zt<sY4KWnT1>BnZVoct0kJ+DXT`YEfk7pDK5(RWlqUG_xR#Dl$u{7WB4PB7hQnWJa4
z-8F|Z`drwixjEa{AK89m`=RYicT4}h6!C82x8z9C?4B+09p6r0u#?H$e`fo}-O+E4
zMtnbgH^1!t>wgB1uB*Sv=G$K(WZ<S7+`j++!QavM?jPE6-&}UG=Ci}=6$Nb#nih-S
zTKV~^|5fH!j$e(x7Judb>TNb>>Vfr=GaR|Me^%MowElVcXZ9a<bK}x4NS3O_PC2(`
z^Mm$X{#y<AS$zB+si8gbex2r<FX2m;TRk)3f8g@puk@(VvcFH}us+EWo7K5zi{#v6
zqPsg(E0hA3uXJTdTmNz`!=i@s>i>?-`KPQmN2mU{sKiy1Vz;|rGJ~_To34gV)>8MA
zu+PgmI^)yD#izWyyWIOYM0o9!Z(LAp=4R)WnQ(i%zu);YJ#zm_*57`);r1G_;wdLH
zF1!wD-8?6#K60=Alt}qYslVL&-zlH^$0i}wXLzN(#$c-KeYGd6uh06~moMpX`lk98
zo`BN_CQiHaPWo8e*OMQo{;FLl?)_(<pWW6?Y*o>n`>%;xEqGZt>so3St2S3==8K2g
zrQ4_caN2V(TuLkY;-#>t_@<9mI?s~o3peld=X-4st)LsQaNfV8vU{Evtm9mo{&E6e
z>&!Kewket}-m*~BWaFk~TaHYg7Pk6k#748Q69F<tS;;@2am~Nky034JZEm#n+nli4
zvXaUBS0+~ZdgMARH`}^p?b|&Ql&!Cvju(2h^%=AIvO6-TK2D#~w&}0Lnxsn;r9Vut
zJN)kZ*4o1l_WVDv{CKpKl9+SbUum@^GagMeSQwYZcK?Cmv+2{+YIbfgK9IIhAZzWK
zg`4`%erkzSFyC#q<VyD}+fBzrMNHRjdgk%Hs(w~Q$kMM9-;3(L3wW&)KVQZr{`a{9
z=C5iMO*hwtC3in)duCSe$$50`E;SL2Mh+8~XHmB<>WjaXer4FXQ;BD)>B5-*k0xBU
zpConQf$;f+ywKijs+V-1=<sd)b<AUZKwf6&htuJ=!s4Cyx;FlqYPvhp@%z5Me|G23
zF<qN~mCN4g<IxI@nM-p`eK$MbtMV7V_B<!PS6x?Rh3k*3zouumKGOX8c46G_g54%>
z`=a#EyluI*Y2%EYhKHZ54z$TyTM=dO<J5<T@|HZJWj1<iHRioIk+@IlUE(ImcS4zp
zR|+35Sdb>tFBZD$MU>60$zikIu4l%4a;dqL-r{q-C$;@yhkwcZ;9YKOTb=jTEIq4w
z+@j*nf?plY6EFI`TdtHOxYMv|#*xP|x~s47yotFX!n1hhk>HZwPC1L#AG`l%{nun(
zR<&y#J3Aw?&u?FJDn8J1t6TN0iJ?KYF`citSBfNMu9(KUR3dwW&TVD+)nRf=r}m4u
z&ku;zTV0#0R__`*TjGwq<b<Canhi3Y(<%?Qwr>2p(e!k|uAir+{@Cqazh>>i&AUs(
zqTLlPY}>JAUuuWM;rM%3o~>Uc`RroN+>p)pHoM)?nil$@>(#{CqJnQdZ$5nftZmKo
z=g+E@rn}$v{5-dQ9jA7T<~sSv+ZUNjO?TH?+%a9PwC0comtCNMvai#@C0oD0;WN0l
z>gp?#=CHgsPkc7dT++Mwm|ts7S!Qs;<%zlrZXRiEf0F0eQFv$CuUSVPM~2_N6c(>-
zCf<E~@ey<W!v6(gL4OWg??~$4oB8*wva{HKk3@Z;Z%Uh_TkdwW9(-)sq<n74wkrE`
znmQ|_o;}<m5^A_){pQ`fcd5N~J>PiCL}%;E16O7RgqWSHt34*MMOrn0|MQA~?BwPT
z&8*oj@yTwL$-2|l$_V(Lat@SG)G}g<nvz+2q{wBtn~k)M!`ganu7%fb1>|nqk$Lt`
zRIcT1=bSC|9CFsZE6<CVpIV#S{q=cvwQ%&oIfe5UX#6;~D(l1}M?v$|OBEy+Kdf9V
zAKLrX&L#S|)angaUh0@upSaYc960^vnuBjTLyQb{O%ErTwlDgX<WR$%`%-(`61&3@
z(cb5>mwr~_Ey%Av!PIZm&zZV}c~SGKqKDl3&Nr`K^inu!#wkCull!^Uy9=VEPj<YT
zV7hn@W4ry=?FSy|PnqlcsAq%Au^ZlDi)U1tJX)6)QeJldVf@^(GgsA*>&NjWB^sU2
z)5!_DUA9QkM0dA;-%FR(p~l;{&RnDZ-r=KBWd8<(UtS-tCFsa3{be<^_+5X|XG4M6
zOK+$gy&1H{Yhz#+Z_t|QNpnTAmqsWb&C(3>+!)j)8l*ElX{LzxQVZ{{qd_{8k`{_^
zFPWi#)JF5%l%#bcx<O|qCT$Zr8)V{nQRAqNrqq%Z)038o7%y2dIcb;3<s~z;T-S=2
z2Kh`(+9cwrxoYW(NlBALrUv;;Noo>#yi`K{XoRNL5(#D3og#~uN~pTd6j>TH#UoJX
zsE4MThv0-o9$gQE<|rOD&}{QEbm=-6B;sZ0(bX8lGhxww5!Rq5-V@bb?KO**zR-4+
z*DP9cV%nnZB72v-&~%+9GBYT}<DxUyevy|!OFSP=KBVosN<=eA#rxqzCC@Gw%{xIV
z9)kL<-dxK?3WJV#J)Cezuhq9pLUT=!i+AG0LprWgMAS5Uf+Ut)@Lo9CX{yu2Chvnv
zP37JfRgWfW@_Bw-EMo8Raj(dI&yV4n`=&mU*4#Jkk+$Z(DUY}{?WR96*5valbm;P5
z`lDN<e%d2pO}lB2lr`<9Jn|2!Q8@ZLXpj2QI?ZpMAJ>Vz_xR|p`A^~K?VvrXN8c~~
zF;^tt>tmb9{;7{jHS3g*W(V!jI;tJCN9U+_&>oGW+(9<_M~j1Ow2vAG{fX*YzO=%t
zYj4mWuP*ha6;55YK{k3vlY?xujw%P)=p1zpdNXZNa93=QjmA;tpga0U{WK2+m3RnF
zdSs{hZt5dB&3Drl#dhspvLm=F-m9=(WV?6aY?19=h20|N-i4Dz%)JVmMXq}n&K0@t
zRoE*M?p-)lB;2d8Rb;w%;Y<<hB|Ad8;ynsGMQ$(M5z*DX<c8YOFipKFi+sDdmsrGi
zeO_`y>FCa&6I<F(laBN!Iz6+Gp($Es8v{XU)-gEHo{HrHCuSX9d3f)MnTJ>ET~O1S
zE9)oAl(qDd+alhFS28YCX{}X`^4`*xQEHLOk`ZdLRAS4d4AzT9tD@bOE_LxfQ4wa5
zs*+)NQE5@@l@!K{HH#`AJ_))o)1|mGs^gi!Sw8jY4YO8Wak=7Q(!HW_#k>r)i#)Hw
z-Iu;}x!kc#=&I0F0bj*gJ|Zfs)K)3YatZM?nV7+Jv0_o7OLC`H$FUaMrwfV}T}(VL
zaY19zrVY!PLZrU+uuc^a74BWKOYn-mLx{`YHsQIBCOuJns!~pO*@Z=gc$K6)Od8l;
z`-eCzej@x-@ay7(MV-Hb_S?Bwy4-Zx+gT;}Rpr#8g~pvm8E52N>K2tqS@oW9|GUR!
zrHiJ^Nf)_AOA0Pk1Sn0ko@2r|#X-d1O?=|yo<f(6E_|yt3*S5;;hdt{wakip;!KUM
zS3WLoO3oIAN*?llYgk@(gcxasJaX|-zUO;osp-S^l_ec7+!x8Ocvr1e>;5HtQGVw>
z&fTjW<J<3sE?B?fi|R#jm-)eW(?hI0N*Z1Sulmh>asJ64oEML~$P3nb`2KTQ%D>`^
z-PC)^xBR#Czq+Sd)!tLD@{9T6ZI}GO$@ha_mb>J)2`_87$D!`S_IKKgQlo!uFH9GO
zcg8JL(-+?Ba!kB4PN8bv3(KreIv0&o{+M38?BXx@R`r+Y)|yFP{sM0mtLD6tQ?8oQ
z(=TA_^F`od-Xg!Oo!wsiLbeVi_7~3;)Cg+G^v!2`rNAY4*S$plqOD80@K)iwqJ76J
z&%R$0Sm#;7e)X<jiS)&_F53m}`jiM?>~%4}kZ}F7#&yA1@6zi6vA!ju7pGo%$fXtQ
zS0Z_lZ`JN8Za-Nss)lTz`yy#kcgHrt+@;gRgI4ywU|RIK^PKW6p)%8kbG*CL8qX=-
zk|{gOmaAlC{f4V4>ad>7v6|!?rUF|UGi*!a-Tz(_TFbe6mc#0mzqJ-kb<ysaCakL*
z<>jou@Ljr~F5hk`$L@>`tyhY`$<ZZU=<L!uU6<k$n{Qs(J99;6l$p?3r7VS2>a#pe
zn$=?6=lQD7a+^HQ%lZ1H-mH#g6LwF2>E<Z4bk>Tl457f(8<GsZJl02L)mr8zRrd2+
zn>Qb8om=aWywa2P;*1T#m5ln!FJ&wWOwr-CHgE7ceD1S@YT|RZfWjL$xuhifbeVe<
zxCBH6dHIh&`g`vDf=e4VEEY4FlHqYfaoVwjMTa&di(~}c2xOL$DDz?EU9jt)3u~e~
zpT_*CXRWeHNq-OVZ8R_L{1x=wuB2UNQI6Ca^FV#6HR^$4fog$nHxw6LX+GhfyzKIf
zOp_V?ZXbn~2JIJFl%m8RC={4<BaXeO{jISBXX0<40Go;3Cp<;mMZ9HYt{n7plMdvW
zI8|d-RMd*4GkXGE)RdGbHb%W#xwNlGYogPU&WHuK%}#4yNX`Btx6QPY-|;`kABGzK
z+vOYnivAG$!S+My+xiCm!0)W5<}=S{WN&2NP|x*;wY1*tr|^U12g(l)&#=5_e{@TQ
zJ;Ocrd(7VsZ{z=?_kr(&`;`9-b<!2wKWsl(zqWZl`<l&r=?C|to>#|jPphhD-oy5H
zmFex@Tpx@+2)&ALdCU5m>HX&m=N;|2|Mq<KdB1*b@m~Mv=so_C&nvz!dcWS_-sA(q
z4hyRJ?c~|znB{uyPXG4!BJ}?7Men`*uKJ(fu~{|7Zm{RDY1s8UaJ%p}gA0r;4Zn3(
z@BJQit>XR0HJ|V0M!wJ8p7Y@z>mANNLOYmu$nH3M>3FsF53vVnUv_fVEKZ&Go$bZz
zh3lEuweDj}j_uvJ?odSdp)%G2%L2&_%sWJWu>Oi|`nYZO@oIfD{||8~^B&(#+jn;N
z)tdJ2F{X#B`=ValJ;S|scGKE}n{P)qOE<r6mcDhJUHA3Q)V=AoM}KX7ef#?Uy><rY
z65_;Tgkx^+Q`=#+!)V8<+SCHq-=7xb?JWMe>FKNMrz?LK#ci7NJ^GyJwmbXoY>(-U
z6N?dwxwTK_#5A9nOS@FIxR{%4Nx3i7s{8QSxp%hK(<_2bA80J~Uh{3!=BDnZ?%U$5
z;^*Q7Y=ra9>dq0)$(%1dC-#O&PF_Bjnb<ilGm&fT>0;Md)3;n_T`um&>z6%WYK`t1
zPCv)rCtI%`OsFp1uxf*m#mc=#77Gh%3T)my=F)CTzOCJq%;nC0`nEf}yXZ7lZ^P7S
zIsV^NSC>6J@FS(-kWEdBz5jvD=RfasKW?LVUans%+xwH6=H8snJrzz$@l$pfethI|
z^;zA`wJdk`7M;rB)K}j#`$J@tp5BBDtMethw;%ugD0KRa=s!DN8TEF1b$n*aD3%p}
ze_m(v&K+l;mTE4I6Ho7}?K>~K>UH7o(`84~9-BpP_vO5C;f~nj-oPX7<vmgzC#6Hu
zHdn3f`tf4hs*jA?I!Q;?yy(1|YSw*y5lgp@u#VS(ppY1`4PRb{9}9W+IOdOGfB$N=
zEqmwh-jn)DIp)vGiSr8g?OnV}%X;^s%SY5gTYQ9<xBmFKut)2o<cc{`Mswto4z9eM
zWo5B{#kOYcqgNG||KQ&m_47{d?TAw+x&pjHeIxdMJT_(GR?&rF3z->x%el{9SYlRv
z?9x;3&6}s6J#f5d>FG^d^QZhM3Ops|_Hl2C<f%v5JHyg$F5kOCGUHiL%xR@<smtGg
zssH=ve;)h4&+GZr{_RU}*<Qq#9c0ElyJ2%<Sc38f#t8m3%-5K*8?GMEN>JUv6v3y%
zJdG)xvAfarfKvjaf&2{iIh<!$qZ%v^<SdZPV3KN#bYKqPKf{v7P<o&wLCQdM1#4D=
z=7AIiju7V111bxIW^nj09Akdmu+f3lfK7wljd^i{(E<?-#;(SR2RIZML>Lb@8aE^!
z2uR>CkkDXZV`Oe*bf{mzaDx3)L!E=(1@RZmPZ(}G<S!7vAbf(!sF7y@`vdk%jV1@!
zD;h%-SUuQm9E2ut>}X_BkSk#HQ{d}hm1&UOz-ZVY+QFvNAlbp>(;#TTP~~90NP523
z0tT6cHJyi#?QS@HK=Fb51NH~i53C=oKd}9P`GM;P!VgS8Ab#Naf%F584;VgZeh`0f
z{($;{;|JUiv>%w?z~At_@q5GH19lH$AILuFKOo<*y>WZPedhhl_gL;R)N$|O`@>ej
zTOnG(S|M4%Ss_@#SRq%zS0Prx_QUjp$p?`Q;y*+`sC;1Az+NF!!BZhp!BQbn!EuAP
zglTsJdn0?p@5Z?f5-%8>4%8mld%*U<T?gv|@dEV^-VgX5lszze5cWXqLD~bg2W}78
z9#lQBdJy$M>Os~6tp{EYxE>TeFiK!A(EPytKq$ewz_37Y1Mdy47>+HB;tbE3pEE``
z6h~g}2<!WMe&c`3Z}!LkJ-_i^=J)*M|HW_WaSQ$wVn}B=E_tAktzZtL3{{yhyZ4^o
z_}%iG-SK<RZ~T_2o}c`__)TpeNbvvN=O5~Sg#LbC_Q3v6(fK(CC4~RKZ(rx#|NHUF
z&Nn{Wrfhwb&3*frUTXj5?KgF{Nxsr5Q{FxI?n$RNoZob+Ki7Y0zq5SDuCUkQ8!}48
zjW<{v+g1O<?n0^cg_Zr5$BHz)3a#!3dT-zR`vK>+=Gf_Fw|86dZalN*>sGDx2Y-p$
z-}%cNw?U(vUnKRZO~&kNkGUUzjs0GFx6p}4>t={quWx$knt7%P{~qOke6D2l`9{sQ
z2Hh)O+=1ro^EU_1>I}2+F{#~hRcTwqZ*kGnH;T3~#dj~9?&h`Voz7aFe|wL5ZR=W_
zmVF~?Ti@FLnsrxnUI%P;(_YVHwxPGeD1Ec<tVur8&c2Z;)0=mz@=Z<I!Ax&)nZVpP
zPTNG!|5PgbsQGo<W3SsEOF4hDUOUWJCb@e~Y-ed9@9u9buSIA5%__6q&6w?WC6?_p
z?<}FM{Tr6wWPTG@CSM)UovOUZO>ko2%(X`g43jqS8Q-btIWDq)s{5j?jK$)`+1+PK
zMBmKrd%00b$o*oGanvP^FEU3oUi)_(DLd2n<)UQZOQYO>?rV>`JuL~7?9cA+JYyQ=
zxk7mD@=Mb<zuv%{e`tBfssMB6$-5jcAHTKU{?a$MwKd$kr`~N#FKl0?GWluQ3+o&D
z8@Intdiy4?M)vA)tw+^2ZEsEH-pD7GW_|N-#U%bsv1@`i&tLa0<=b4r>K`4c=G7gx
zJ))l^ZZ}VU=2_!;dhrHZxsC6x=7iKu`pcDivCGSUbNu6$sy^HEaS8gHmj_gN{;pwL
z8h#`Djrkkjyw<9zwN2*_H~h$)U8)-ze|Y6WBW39`$2NY<xutxj>wC40^db3*1EE1l
zuaawc-siRc{P4~E;qlLp8hn>Wl&h+W{w(J;$O)ExI(N_czplq}Ph@xV?JxeZ^v>b;
zG99vWsvDmFEBtT$`)&N5ClYg_H~jzlxAN}}<+BS9N-mb@^=r1@yWU7ayEwto@n1oz
z!+)Rps-8tRfAPzh#OR*z4-Hwqg(uu)=IZsbvsU?8<OG=g=vEVd5j;7^Z?)rkmEFm|
zc}{N#_dP9f&HU&JDc)80Qr=i*q*NXKbLq?Wo<5QA8m~1cMP>`V_bQa&-@ms1=R@z>
zGyO+*{j`4<!0WtR{A<8^li4D34_=u0%I}S>$=aGty64tyK5|p`qgwJB<z49~zZ{N^
zIhoXxGQInll}%sawF`fD>P5}(dU5vF%rk9i<z@AIE}uKzXn#NR@{h}N!+QDO^<4Y$
zc&^xo<R6J@Z96OVypw0zsLO;et)B5cjXA>p-gf0IBd4Fg7#Zj7j<2q~dH=@j>-vW!
zlP%O_*uqt8lnV6HS1CQxIJBfY?2B4@!n0eSc+bb%tb6q-++1v)<<>LFmsVR%J}NTV
z{^1(V$=gkNr7rBKy|rWM)W5lIn;q|_mLET6QJq@3D*x}JU9<V_n%{l;`fX>YcUP&}
zao5zRX;bqmlkVPfH}5-f=B$ZDkm2XulEK##-#*zOD(e|Ju`=ED+1ibvkMoc2*{t;W
z+^Z0o#uY0p;^*|cZd~G*#}yH6{BxeqKQFcOXG~PO;zgsiH#^9-WrdY2@L02S*XC&o
z0y{T0vp;`!OH=M=l!-`vRMj&E_y3KonKQPD^_d*!42oTD9PQh#@B8Aaw&Tp)O|!mK
z)s#q9+(_xY^m5UH<JxypOkcYltxEE}r*n6i&U(#jk9)pa_{65W-JJY5Y4V$6>ue?;
zR{m#uXUn_hU7=O-+DYc@L6auu=9xcxyY2Q7_Ov%<?%b_AcO8vc`{tw0yVG1LSJPKU
zZu6LuGg0HF((1!vk+LApqxDwBzd!$b=a;w7-nO>j-G}y_lE1H>scvNtx3sSGbAOj2
zD7!|0J$IW`*Xh@#rPZDXdvw1~7BwoE;C#eqje>3fUwY5G8Kz4wue~&LQSZf8V>AD`
z<=49wT{0~<<Bzsp@Vd0!SzJ{1==zOEj?YSN_nCinO8L*_+kMvU{(Rt@;p|!7lh5pu
zEYvJqc4ptq$G7F8x8$9-RMph1DXr?aV7Zv$-}ko5`;?Dox%>6Ie}DF^uIDgS`B|;H
zv^(_5U*`1}t!H-o-U*#zp!jef%T(7zN0b7SCT=~Vl-=pN=!o1Q{zuQ=+3t?1nRC<5
zQ$EGj)y8~w+WhP5^_=D8`cAxj_{dZ(J!+Bl-OR3{rK&2+EPXv^td7g?F?)G$QkUzs
zGS)p_NsG&k#dkjL+JQhq^@*nz<xGy5Yh%5sqViq$rMbyr*+-<K=88r%2DX1!`(k8y
z`R*are_TAfxR$Hyab<sudwH$j+|_cDr0bapy|v~&cV#zR=a09E+4$}C^a-=G-@PtV
zcXgUB^3hcDQFhRg>q|P;dnRQr`*xzc&#e1uw%F?HI$`T0*Tij>_C2GtYfZJkLSW0T
z;|ILDtq;z6eeQMkhi_}Xuq8J~?dk4H5@xgJGPrnMx$%6t$c=uD;}49BxVdClkK6Lv
z_XoC~dQ^A(qPxmHrj=ey`VTCAZT%s!$=5GG$th}%=S!^s-E|_%wXbFd?s6-fe0lnd
zZ$~AIZFKk5+1?4PSvoI&qe`W*u=ov|!i(<muja^?OPqBJZD;0l{~PN5X8ZSdf^)B2
zF3#wxs?K`v;vEvx)vdJp_JZ;a#y56aZ_Y7GSD7JoTPf%2k77Zebd?!?x-(Wj+gJP9
z)!_48vyY8!Kfh%xyr2?qvT^g3L!Qs}ZPSTOs!B}?SR<fYqf}wv8Jp*rax!3vk@4m~
zA3v^}d_+6cSL1|DTIfr&h*-~Sj-HWq`&X|%YOWL+C=xv9`rB{EW))3RTbfcCEK}og
z>cAfx^Wz)EpZoTFKRV0J@?+lSB~Q{df3vNZxBB(TuzjCVl<S5yZg*pCFQ4VyyQh8r
z%li@W)2$cQHhr357&T|kMYoM|?xpep(qA*z%&FZnyZ6PvA9b_m_R9)JR!H4emRY+|
zY_s58FFyrqdx7Uql0P%^*{yT0>;IF{AN}QPN9&7?w~w;#s&HYj<=3oCGJW?Y<9Ge}
zb4NI=JLR`n{)iB}`#o{qQMQLO&hSLY>~pLMI3RTPxYd#Ri3Z%JCk#&r+Vkj7XLqak
zvUk-Z>&o?fd&?#~x?6NW@t*$8o2B2FzcD8{KAz;hGE8xM(UX9yC)c!Gn!c|sc+WK6
ztmKcUX1{XNnPp^hu<7tskzj+5YYbaUkJ^4xKO1|)Xl25SJKn1{FYl2SOTVDG>R{5A
zC)2L*N?L5J530L5ll%M{tp}f%#a@{q|K7Viy<*~ViObc$g4um_Buwfu;tqazwOK7B
zZ_b_L(_Zv$wzyNcu_9XicW}_J-ZK&wbrE$3B}3C6O5WU6A8`N3%!%h_mG5MJr2AAL
zaCiKiRc$AX%w5j$I6t{4sg&NP_~``CBZq>L_mvE#e9k%Q?{^w6HHwm9V*gb5rfwnY
z^OZTj<0KbuS-jfRcVEI5<@dgCm+p3+cQjz)^i5TL-@NWgPk&?Zx8m=_yH=;4c=UBI
zUgEuG$L?MHFTx&|oJ$L54SMyvVE&CVyTZ1gM=pKrG(Mvq*83y+e?v3tho*!^i;s;{
zk3CWr?(6rlurqr2<3!72W#PVhkB!~mPy2nW6ZF>La-LzVep9`&Z=LkVW1TuZ*Ejd;
zO|<$qd3wL{qy@5@L&K+UE7O}Vek-7fS@+~zx%5*jqvGN=?lFqy_Kk`WsZT%p?%Kq|
z;r2U%zMd|S`Bn64+ATXv)7i^ba30^cS*)afUEZ~?&RmuzZ_+%rw6UML_|g8^GLfYk
znlI<th(#xD`!rX7ef+#h(=VT7FOhiOWwQBQ!?#A4&!t|5{od?;Q<GNB_VxUG`Ze2G
z{(K$jtGkNp-c2!dp1i2wf|Tw|*V4vKOQ%}yoE$!FzTwlJd11^#=e2_`O}aGcv0Lni
zH_JB1@5tz}wbVU1Uu^ahgUae9e6xxx@2)vLn=9z=O16)E!AJhL``a%0yfNZg>dXEO
z7O4hxF`hwlJY?_QKW<XF@A~<RMa~bu{5w(fS$;C7)bGQ|`<*RT%W36Tr`_&9Cuck7
z&c$y>o=plk|Df`-{!P1T@7%secYht4Ca9VDYHg<G(&sk&5-(k|bmo&ilfBRBNbnB<
zX8EFsc_;D<i_=9eU9%9I`Xzkg%DVL2Q@_p`xIbI*;i>B>|NnhgOx)79NbuFG%n45F
z6<f@gnjCIBKY7cHkgF`UqWhWEo7S-`G@7*7ZMV9a*~PS1RR=TtyNXqmO!uD6@NYT(
zc{l$m_R^m^2fE6ZExUE+(R-0df0fCtjGr0)n|D^#d^PU2zan8IZJCnezJI6S`_}tg
zn7&#2%{2SfpO^Ge%}C;<sa|+jRX~2vrJJ9Q=}B1cT)Xi9f@9oTzs*u=wbGBKAN&2L
zZ%gOZ$<?_vW!XPl-kx8l8z&_5#AJ2!W1F&IFSk=0jP+N~E&Vx%@uS|nF3wI*so*`a
zz2`)dbAslizPYyidQMH|Z<guTrJswQXP=qeswX@%`A*&%$>)F5syFX*J<a&tecpkO
zC*xbEnJFCZD*AP&({8z@<F94^>~HO3vFUr|wLLF1JTyGK{Q9Ne`|`6&w_oXwTDvy-
zw_c>sw3NtAPh9V9(B+gqlf+}zc2JQ!k+;*hB}I-gjj7^rQG??B?>;A#E#9Zv9paHZ
z)SYfL;cTQDcjLzB_xE1qt=ua(>HECa-K(OO{km6t?(hH4^Q-f}zF%=ja_bfr#dpdE
zp7(lxFZ4QY!1bN`XvTs2ZS&JyZu6ObxNHz*%H6xdPV08isV^6n2Zf*f_+fjc-unwx
z4_8dH6F;LElKp+x0_Xc0wVzs<OB~}5)J@!M@GfiPIpL|hJQ%VXmdZR1J1R1<!+NDd
zIMXw~+^!dqho0R}xqT{s>aM+$ypOofD05tXD4=CZSROb3f))0&t6r8q(OFw4<>NQ;
z*yryjZ5%afB$fV4_;veDKB;)A?lGVHQtoH5ijp1LzUwBGZa%p?>Fi!{KFz5tM+1)R
z<8GgRzxM1~7t8BMRsP9Vx6Ulx#a*jf$GkSG-?e|2%a${jv{py4+;81<GRpXLn8cjf
zJkg!HL5rqnmaVfmpkeZWyK~|;g=D?geQxW`RTdrT((kyx<LqwPI=lauA0#jwc+xJm
zrfM;7Y5M$xi%uKG<75vp{&DUMYrd!!pqsb+aO>v1@o$R1fBCjU|6g)t`ja^m&sVq4
zli*tyXDh{0-*80F`Ay%4Y~w2(xdkd&8yLhYST8^NYB1%^htS5E4COty-$b(92`suT
zst^|TdV;|kp3>CZv*mkAUawuAmz}Zm^U~;io1OaQXRa21{_#V1uUxvm&AnUC54~mo
z|NJ@ot$)wHR)3qnw|>FfdHMBue-6s>?%c`Ve$8&v=6$LE5;>z6p6x&I!^>e#hE1<#
z!QIX*I~|pai}LIDHZ=5YZfpJi>NW37d!^svi@Xo*;K|AUbGG<`c>dJhjSdQ46?(iY
zgf3h(ur+=0)kRWHe&Xwzux{_=3T~G9p~XesnGsG6X6Nth-F9l)tJT|FYV_)QoBl0b
zx61tchxFNOkJNa1nY$9Myr~b{a`ep4gQ@W~*Hb^2=VbczZ986hEp#gPzcV?9?te9D
z@%@?ZyHQ3e_^$W<L;4Q&Uy}AN-zXMi^V0v<<Sgl^y?rYa53DTmS@zO7T3hlS5BrP{
zO~JuS51JM{S*fD#slsWkdo_8<yW>gPa*ORU<vQY5-2ZcP;*pa0uH~LG?GoqRtge~6
z{JPXvaQw&>mvq;nqWJKm1=(Ape%U%3FFf|pMIk(M&6_z9<`*M5nQW`sv|YQWrdP_Y
z-<l~o`}i{ctG}Il4dY!G)z%j0Mf-PLpKURN`;(N%`n1`R&%JLP^1bL_aBmymtwUUY
z@3Z`Ue?-RJP_pEEp{@F3#YwW;bAobomldbi{nmOVU;0*MU1#v~^M;E~r<5HKc^A{U
z;lq5T{R01A6~|iac(d?t5o6Ib*9C${7~d3jF8^at|9M}FWg)MObX81s(8Kvp({;6(
zm8*Xq_%S1->qqG0b^Grc)TXTCbDMmT$8_=XTC2&C*Pl(wp5r##*|}N&U1dphZqm1h
z)*pTfJ&Uv1RJZNy+q~Nrednj%YkuqP-0FMyn`y#gOSNSINxY$<r+z5?@b$a6z(gX{
zuHXG-+>x)A2Uqx<4?7c98R4|$Y}e6=O$ip<K8DI&BEdS71&!VI73du*W;x-?=u^=#
zN#xt_>@2PgQ!j{Q&0lJ~SI+F2?aWg$TXr9IoA$%-<1(L29;-Qtn}eqP7nka&TYh)x
z!p{4T_p3ZvbULlH+vKDAhxaWpkGI{7$(plibJi2txX${Li6KQVV%Dm}U5ySgY6{cR
zvvKa(p!H>4*Uk^$TZ?DjN^($6XIf>g{?R@mtn$Z-(4d&sQ)l|SMQ6^R=kT;~^_2g0
zrI|PLUp{XwQaJZ4#LzTg_Pz2aBCGV;%LN~(o7f)FUo}xKF(g*QbZMW_-;67*=e_k$
zA6;vFx^@5QQwu^8X9P}9S>ZQli7)To#~Z))pIJ6bTrOHzF3Vd|l1n@^W<g@<-FwzC
zJ6E=y$uL{v;@Y&HOU*I$)6FAya*yZl`8_rIb>-&UE3Qc#Z8$7iGPkPi&AN{p%->AR
z&T-v6Vf}>S8+C8a3E#Mv+stw+=k`>&5a$a&434Ww2{(U8Uw_TMao3vrvt{LEj;%I(
zYWDE(>^5`X{=N4%ug{kHW^(+_h4}{a!p+Mf#T(zGEZP5c&mQMRtvQcsVydR5yu31H
z$~?~t&8t`n|J}}?_xL=A!K{QgQv^JgPmU9`<cg|2DYPrdPrssT>VB83)|ixV^ZD<D
zlwW_`5+@y7U6AtR+rtmlMH>HE|LrYlKbU>>q^G6pg{*9ayq9-oY<~aLMdSU8y~{kj
zHEsx*-drsqBtBIu{%ycBqweXy)we(1+`P-6@X#f(yqVH{ZtnbR;@r8@dauviuJ2>a
z)fOV{x;uJlQfB=7cf1djmx~{gzI)kV+O~+tvZ7m^3%6znG4bub9{5f>cV{^N-kM_F
zR*M2Qx37Xl>d%fF-Ke#6-zK+V8qcLZ$tAMJE51!|tTJj2NqOe_L9t~;gyOU0qXGS*
z&bDD|a*lK@l#4zhYT0`1>cKQ7v6;J=bW_c~sVpq+U;X=}UCa6j-b;PfYDjmB&iARD
zsN*_S`u>Kd;=1}uzX@u62UOg;)zqxyqj!J2oP6*{+j)Qfds7#0<(rY!b!PI~?b}n2
zUsj7P+H&*ijMp497NoRTET8iJt^C{luV1v;>dU>#$v=8CXzTN&-zOptx7F_4*1Wkl
z$u--wYFnJve}%#sKlrY-@FrZo@&DAzBOdCT{Fcjn+kN?DwnKcn((WB!)Kl7XF6w>w
z@mT!A`b}RHY|gH<5d6X$l@cR5aX}`F!iodUDO<Vbxd?4J>ZGn@#G<=X<<OMEFM^N#
z<o@M97TqVq-EX(9OD(IqZiURxm44>I-hb9CTz%-~r?TAhx3<r1cGaA$D{|z%lUds>
zn?kXJZH#?VAqNE?%>HxJ;E#SxmF5K*t#zK;zO!ps@O)uwo_k@cYD%Wbv8+o=CoVI0
z;ANTQ8t=jEJNXMcQ`VviSD9-C>^9eaT$#)KvRCZlg_zIX*M2_C`1DI%yv%Of!b#<!
z)~k~X=O3Ou$L50gs}hDdflohgu3U9)Mq*iRY4{lfBik>==_gLe>{?mA?WEJ2j~089
zH#W|8*UGIj%=+$9$oeiTCiuR|{$01GM^7#>y{hK3Y~QJ4lKb;lE&YG(wNlTWssG<T
z5lhc4FF2d#zU%d)UAuJj%w3%vV~ba>UF9joeqpnF$MubFIilB!b@Jj{=czTUyc)sY
zl@xlRjrV%l@!4TFQ|F~^;j+JUnVVnTw)R;31lDHpq(~2y1dI766~69Pve5JG37USw
z_0EJ{Wj@QxZ8k2hdhF2~=J&v8h4KuK@7uQB`6ZUVV)<s{0Itsg>DB2TdW$}YztCp7
zyZ!UVnO<R6R$9cZzH+F3p<(8k-p#d}7xqklz5n%2-rf5v!<Ro;&HpxqYbE#O{|;P#
zbABK6<xS#fv+KLdyY+#9WV6)e*4keo*Nk7x{4DS*N%qI2s)=q^|9))R6|}JLi_*S^
zNW;5Zm+?-kQ=aNm+Wo*^Uqi<7NByF=8tOhZ+gZf(=kkj$T+|^FKL7Rw1rc{guEoM8
zCyzR{%Dl2@VJ`Abt&NrVYkD$LB{*R^|3%h=PR*-!bp^2fbKUbz;!UCOPKN3^lb<C&
zTk><p>ht@jMD;Cn_t*Hrw{qvvZE>~#o_3Y#nzyfsz33mL-Ld|_j-F)xrxt>~%Q7!`
zn{jHH9PQe)EF;x-W9h7<*Ct1=WhN{x60`2!Fvs=6IVGD!!F`)Ku15a&9UQ^;_4qku
zr7)K&EuVXN!Sk>5>Np7rX#1**p8mwKcw@niHR(e6mkx=>UKPD$Df?0MM(WDd$1=)8
zFYntniFLxUE4M3ly}$Uc^Y*Wp(`^TK{wvMB_wlOu`{<7%Jbo)`B7WYx+T1&v|NMf9
z-Jdp<FKnG~s75ROY@0&>iz4HX&;#pP>MTE8UeLr4aQ;?zORB!qnK++&Z;r~GjWd}c
z%UfCP!zdCJ;(t}CICE~sK4+K7vM17R<v-#IX|+F^`1kV#U$rgb?XMe?#O%Gki64Cv
zaxrD;65d&BzC1tg8T07wuDkblB);4KcGbx@|Jv_<m{E7_(w15QzPjnEyK6UOSI-vy
zb9~+9?_ajPu`gt{`F7y(zIV;iMkil3|Fvbmo<8X{pV%Vy|5jUknQm7k*|GkKF*FHV
z7T(=>S~R)cd85*_sU3ma4UMNX?UNCH_p#V2eLJ5ktCrINy?L6URmQ1P<E~6x&Du2O
zZ19ikg<TU*^O~(c7czC#=NLJ*eb09F_&)t~Yl;z*fb^HL#zcvoX1AvA`|)RLV?nrY
zbc6B}F4o1<vfS1!jel&NdjG(y4JU;aeLlE!?dub<me7n+2<mC|xF{rerEsaEsO9^Y
zn^vBa-nA-mUeOf29iMbwWi6U9caE*FzBb=<^-1#6D<4@u-D50bT9R|>=C@*{RUhxi
zN&R}iSSRSoJ^%7UIzig%l0n<9J$rVQhgEnFV@#~ahkIJSrh7xru!#mA%@K%>a{8-Q
z=X<QczJg2l?crLBUuo(m<&IcikUJakcw>Zd{|C*S?d_IRW@~qb?AY1OKYzV{X=Y&5
zv)AcdnKvV66f{TtaSvFfsN`IFq2lM9*{{z(y`mZ{;D7UL(aNS}6Q3ui%I?`_+7T@F
zxz&BT?b_&<%QK2OubX%+T)*l4>3^)VkESKWU(Kj5uSk&jdSzi&VB|yoX<YH`yd|dP
zSFc;|UbXAPy28>QHLJW`ZojViJ2_Ra{g!=QnwGG$L7mz(jbQ0XmSKPDXKJp<o^@!e
z(yjGk3Y*@aX06s(_WsV4t<Ptl)@c<sN#~Ed8}>j{<<-L%6TQ7$LiWdBUim$;)I`<Y
z@X4dAU5j>}TBDJ{I@POG*P1C{me)!BSh<W=i^XnBEUW`NjD_@%N?zs3-7kB)?#x9K
zjn?bmew2OvwsPg$tV2c(-|lP=QLeLjwz<c_`8m(*U%P+J+O=x;p~UpuP~AA|j>vPr
zccq-*+|?xPrFTN?n0%MJX8lx|#->k`+ZL|g!}Iq!v*ej+?yDZ`a9gr2LOy@1<b$0j
zA6&WgGh!xxSdEv<Y385FZsj|f*Vzi4%41mjUm&RPh_``v1w+;jl?3LF=gb|Cn2SP6
z9|)dcuUN^zXjika;ccIinpM{fj{f>dHyGwB1e8p9;rMI%CFu+6d(<w;CU^#K7uVV)
zsu`}~EiSzIl2pfPubrn?g`2(<4J>aF%e89uUGPhO;v~kXXoC%k*FvwBL|cm#PtbNr
zvvj|)yJ|t=>4&^Kb{}CEueZ0j`${^#_kKhbyK8#ZOXW`jTl}rRy~|u9thLt7gLA9L
zmewpsDcRb<2jz_Wg@4E%$Y-yU=7?|%U~^(wv6}sB=>j_@sSB59mM)mDzij)98Nm+B
zpZqG==V|Zj?Xy%>3jSht{f_QmYxSU}KMMB8?;kw<W6p~AkA&~;d$;SiwxjB=SXH5h
zJ#P26E-lJey~lUo^owW4pXQY-3o2gum{ptEh)z?BJiO7#tkHAkks?3Fdf7IvK0RG6
zMW&L-z}(2(44#)ycisA=S?S^S%w8d+ZNc5Z#2_L4$3Kc&PRVStX8NG@U$G~p<58G-
z%k%Ape@y2HE>xCTB=bLAW>2fJ)byJf!WoYWqfW<GNL{^=QnZ!nKhNQqJF&Zzj#=oQ
z-C%OWShV=!8G|3yJzZ)X5--GimuknXbNH8aIR0qw63*3!nvVC($QP{9I<8sLf9p>C
z1F??dTFve+Y@fbnx>%w+!EOEjQ(eZYoEM#hx}*yw-_BdH|9SAkdux4f6<o+q&}>>D
zVzQPaEp~40UfYLh_THBTN+)XtE;ZOC_w&qycX9ehxtg4GS4FN}F<~c<@$2+!w`_V6
zT7IUB=e%A!rJ-`8h?xDc8A19@g&duN1s2D-`{t^(aoDYo@2L0O*?uE-O{Iw2so9g9
zSdLzuKYzu!z{$t*O?R@`x*xq}zGcnX8FSBGzWM5*!r7Tyqm2FUO26T$n#|{y+5da*
z-M~NUUZO$0XE(mO@nBn9-`(cK{qioJJ9`@R6hA9pTw#3k)yJ|WF%Lyn<%cxze~8TZ
z&bEd>x?8r6RhlU`LO}SSf!MKI2T!bgW$@=?q}0V`?u<46T@BhIH@rTOq4#34?Ub3^
ze6~|Auf6ne*Shn?fwNXLGCQm+d1e>C`GE{`^8E9bjl!blPjjY!R@0H5XSHA9>@ppP
z2>bunuKe^V<a%+o{2b>|)xJMF<>&rZY3-b){YvPAer;-O)1t2MA8Wc^ie6o}?BbNg
zVIeF2oMT^H>$!S)^}6lZ#hdpUC6rd3shYeyQzx<aWn99|>8~$Mo8THceM_6}stm1f
z=5opT(L2r^KKbwJlItzK7uW5GTpA)#aj_$K$GP~|eB0D=tLjfl=4@M?l;*$JaX#nq
zT|#1ACU$XC#c~*PLnm#o{CxZEgnzn>dyk)#oNKV?+T;7I7C+-BUHi7D>E%KGi_=*h
zg0&6U4V*1){1<stZ8wQuwo~b<-*nFh_7mnrwl_6DIvX{2rgG@JRVz-*t}S|K-?&lH
znXyS))3WvPho>Q}cjZ<U+_<Q5r?FoAx9n2QbK1>@D{{)c=Ifl*j{muGzw%EfiJ(^H
zou3$6rn(4Qepp%%|Htf7Q)tq}#c_;BCx|8=tnllNyn3EpY!BP>J&D`DIJ&<5sm9ZM
zM)k7%ztdaPUcK0K=}5ja?}Z49UCXXrmTVE1x}r7tcxu;ql~?VnziRU`Z@oKrqsPC6
zqTU)0=TCFFa@!(?yY?cV`*-0DYo*S#UyIK;m}pYZdE9KVf$bsPihU06em)7FZu&!b
z;X&zLY|nS!ZQLi#UR755+wSmBsl}qbj=ENSYt-yA=F0c6{3<Kkc8)i+t*X3?-8#4|
zd(-Aki<C2?!@qF-u*(T#`7B>P+i=Fo{-;yYj?O&LH2d<+=cT*DuiVT(-!apBx<O2)
zG3Wo(2fqa*JS|VZWZ`4mx9^GP<m1T(VLxo8wtD-YZg?}FW$`RE%}J(gxj&cdnMN&F
z&X{oe$&_0R(Jv3iv!0*mf1qc{CyQr=ECJe;yvMDcG4;>7;ci;|@c4_Sr{}!9+0Om>
zc2$1L!W{uT_q{`=)~TjXli{7WSfpxq_w1c{4XKf-_Mt8Ze?Jhdp1=9fo8>7Yox*$W
zoj9d=^NH01^IL0<-S(U@<K%<WZ{1d(o$)`kbk5|Bi&AcefBd^dtozW86dP8F?F)B^
z*zgF>GCyNIKc1~HCF$hz@Wv0D{<zh9RyDsjuXJhdS~JV{3V-Np&3lWk&Z^LwTUgra
zrMSE2W}zmFqr8-D2B+gc>$!I~a@+{q<+d@PbHC%C@*9uBa=vOVUmYdiow;zrUi0I-
zwj}Kh^D{Tg+T5Ms>$hO5>F14Zx`~|UqRUp7C4bgFtuk%-^Cg-)Fa433wc2^r`M$$F
zO*@PhH*6_6+tPG{f3Jh^rv1uK3=B8yDB;=1{a`c8V%P8}){mi*j7wXuC5UGH5tG@^
zd0~&|a^sbnkNjlzGoE1OUfG&(r0CTiDYe5Z)HK;Qd!_#KJ{|sl<+Di3FS<r&wghp`
z)0pAv_jLJ<N20&n#2-xw*_vXgy392@S<EkhXW^Seo8Hf3-Kext=Q`KHfR$!5>ix>L
zMR1*wcl|!m(ow(i`>EP*Uf*w)^#1-5mX@V`Xy&bge=0A%+nrxVRm?Y*;1lt#XL&#2
zwZft{1Jgfqm(G9RFz?63@24g-f6%{fsDJy@N2A_tF%hm&3`KK~XMKF}B<q++iG`Cv
zy-}M?--1p?^J%NvkC;zgG-=6{rce8g)@^7_)lHnPos<+A%<}EUpG%b==Hx_Wb$(X$
z>CZnjX9nN-JqJFCZiu~Ya6{wYnbZ|x3X`s9-9BuRe(|NQ4J(V+<E>G5q-G_4iJN^j
zKS84Te%9w#k`tVYV_9krPM@-;NhQ*+@?a*nMC3Jz4L6(AS`Ue|1oD1*FU<8xKJoSw
z_e!B|$EE2SEwNG}Oucnp%P!q2QJb!@_=Dz5ujK2Fj%v#Fs~<fvidq^NxP7Gs+p=j<
zqI>2iYj(;{|NG$ayYIS9t>2BUSS1<jl#@-vD)Ji@<_E5L!m?Co$`b`E<%O;b-!7Ye
z?sU+mBd2Cf<ID8*Zr`%ZwZ3Qe7agX*fknUcqb^U%+VS@2Uv~eyQ{0X-cbhNmul$`S
z_wv52#FuYxWnbPmmN;T+9sm2#kq^!5@9tohm9Kc)x6%E1G4FMI1G8@@m~8Ai1P*Tg
zBItLr$)LDE#&kpXj-M848aG`p6y4b+#ujH*{c+8fvK2MDBEEsGTQuKl&v0%J=9+tX
zLHVm2{U&Uto&h?{S}9%!H5R%0tFiSu%?cIBmP<<2+8t=X>Geu<&Jo5Uy_}<L7N7W>
zxlI#wmnY`rRx3ViwvS-5t(jM9WjxJw!b!ueP4gBknp~46ctv*UvIRRIaZEbLJyT*!
zR3Y!fPeO+teG$${$~?6#!(S^fD#_XVwISbRuD+c!0$*M&l03Y!VO_D(Lc_4{YO~C~
zhHMlG>0{9pe|0=BBeFIl_spGb)qlh*w$2Hj5WC1VCF5Y;6-!^KXU}<!SKo?ljJfiL
z$3pYos_@s9qVG$knQMz>Px9W*dsWeT(Zlrk!kT$ISihAqN!#|Set0)0>*}iqtEN3z
z6?#yNY3<sZWn978Ql`DfZn-9$(X0x0pMEEAQ~9MG96s(RzqW>6-}qT_pTS|>wQDp*
ztd8*1zmwYRami^>kc;mAV$;np-mnyU|K&Y@X6t*o)uESE8h^C<@}1whJtwC)yzkDX
z^3{`)6_ktK)STY-uEBDvR_OkP>gyIrXtbmh#r}OY_hx6cy3)C2TT5@oDsTMj{5?1K
zg0;*Vuk`ELJ~B@~S>N?t+&Syxn%U3JTJfrw`j`3ouGoF-A!nt>y+zNzG)2AsEV1bN
z-5VEo<n9RToc!@&?25YgaX}{@8QF(1R+<;<yn1x;@L^^nNwLTyCxd?(ypNLJdf?B&
zf=Tm(&YW1bL^YyNLQ_)HBOrFg7M{FFz9rKRFSR%jc-EKS=74H<_7U?7rz948JIBYQ
zxQenKoWxkKv~^v_;o#ix{Rdxuj{aD~@@K*2x7FOMf+w}C`7GAM(0na%>n9iE<^>Mt
z48`r<D%Oa9(qNiqkhJ>@=i|K}O{TH^uQ8I~KQ>kDi$;*o%NUj$A9q=8VzYH!TjaF=
z(U(VAH>Z|{>|4Elx&E%LHG;ZP{UILZop0Z6uTS<)`yAl4TH)fX%J|bc{@;Eb?AZPN
zS)jYlgR2p}eA0R8S9DfheIgwbdvE9ZJnuPs{$&?$opWvl?~V%L^Ac;>(r<5j_a<cW
zT!qv$`E%BDi+V#J^FEWGCTRNlee1ki`%C8iP<+{98Ot74ZgQn#pRhxwnYM6u#cxd?
z$=FqERrhY#eB2~EO002ROM~`Y9UV@++a?OTYZ6Ukk33GA|MF7F3I5>S`}P^^$=7-<
zZnE)U^t?NwFS7eMiySm1TkVY}M3kS;m|?J;rzbqOJ|Xu(W%65>?)B@9v&)_?D?V%N
zTlQh<)%blot#53899+LW@5#*ld-J`S7mKmZjx_mPWV-&{{?98t&*eQa+Wh^jiQo2$
z5VrP;=bLXUUtOIx@lgBUy0tRzZ>#RfpZ?)qz=7(+@g3ifWM8%3xAFgh%d?$At@m&I
ze{OlY^Lc6M?Yv)ea<@rJFIg-rUM}*n?)i4Xd-du6e=IJ(x$7-|pLjn<^}JS(-#c_z
zj{9BB)M=SrJSRas;zzTj>7w*pj|i4qLfigvIQ^d)r1;w?#&^d$C+47qvnu8Ut$5Kr
zdCR1w8WO)8YB|+A+%CQlSvmi3NK4M;1AF+_9u+&w)coH`iM=^NB;r-HYSE4j{eovU
z+%-Q?Cf{hb_OMZh;<|dpXN~p|T(#vKtNRze?VtHrbaKtA9_e%9Meq8R+cwSJ98@s%
z^C7`Wje8~py|$PYP~esDX6A}#*Yk7k+>j2RsN<~l<!0yIo2KRKSDI{nJJX_HT~RLX
z9OuoitF89@6+X9s`|S~f-CyGRHE--*tZKWvwv~UIgIxu~w_KTzj;8k}2lMv)U@!XD
z$XMSO;2d&;@8^QJ72;n^h2%^6L-Z`?rhH%WPybo-to@Vt<T7r3KJ)b~_v6wzbCj-V
zshJvGzqV=RSy{QAOaGhQ$e)#T^-Pls+sTC?cYp2M!K53n;t>^Fe)rwA&g$z<Ml)9A
z&y5zfG^zVPZOgg5=T{7xKSjyZweQX>U6gi~OLRwZ_N9gEq}ru}7}GCuvjwjFR;8;Q
z;-KEX&Ru%-bde+bMQ1M9c7UZ#Nw~q@K`mg%H8!0<i)(%-1VkN_JpO!jariSktcKy0
zaAx6!qvjDa4hon!H-9!-Yy7An)N%)VMeRRrh5HO~dwV$Eu&uqD6Czmq!8YX9lz596
z1*R9jBTumOd-z<~cZfxU{e=~0F+=ahXRZPLp-H6-)||l&r#epuG3=Z0C*~kWc+mdY
zyVMkIE)_n%D9dZT&ikXs-&2uMffskKU0qtIAtiCk{FcSL=^P6Mm)b-b=6@~;KWl3_
z-E!O4&Ye~lQ$kj<Y;Gv~GwY3-`{`@*mc3l#T&bxzp(5+=a)I)A{)rz`PjGmy;jVsT
za&7aMwR0K||4y%R_;F0<#vInQkrU1^<%^|=f4nv)EOV<?zHj4O%?q=cN;L)i7%d(}
z$Im$4AS}f%dV%|POnnvCJ+{?BOiv$Oa<^pN6L3v8G<4!WroCHY9rYisG(Y@s<;vn9
z)tDrympp7oLVg$>T4=}laL=4OAD<k$u<xXsyuKUzce|aZuTNhca=3)!g3jSz*}sH?
zzpvpFeD>_$#aFrC*MGFnUeP$^@?}0v_1${2qpznh$4CGDp*uZ@Pkob?-{NT=?g8KL
z{w$eT!gv0P@AeA8mogP)(Mz&2#BP>xZ+UC|bj{>x5$d`d`*v+8iu)_RZjSoBlLt%+
zo?kCp^6J_AneNBao99Zux|J4vxA7eB*B2eq{59|Y?R(~Y|L>Q^_qFTv%U|@if2*lf
zi`f2mqGtuq)%<!E*PWR!l|S_9Y*=Gtay)j@sSLY3-8VKnf8>6-(44)Z=aDjR$pcwd
zpCdecbN{IC@#DN4)cVIcEO|qRTf2j_>dJn%8)q0<*KLwyX<jg;wlj@uk^I&qp(2k6
zvEx!3bRJFks;%`n!827Q-s8o}7ilVnLGDX+y*@r-JKjH0;${DIiK-t9i>Cg0v^Q&R
zmy+nBSMzTj6OM9TVmfPwo^+bVmU+Qy;#q9hmb>N4^Ua+7ea&C13U?7Jmdz&u1Q<%o
zCOdxpyKQHu-Spl2E@c$XzIe%XYFNO>vf1l4l?SWs%>4dv<9fCP`RfNXK6u7#;wtof
zD;hKD^h@uQPl_s&>fK#7MgC7z)U%uBdf>ll_m5X)HHEcRvE`=h>}``$wWF3vy}o90
zBT?;UA+s09h0kndD#thF`MP@R7~YdxsCmNtf>n)FRC>bufD`jxb(@^oQsL-&-S@EI
zy@Y2|q`I$VHa$r0+sdMSYq6SF?xij@)68{Q{Fav$7vIcPyQ;>!{Bh`<yQ{u#$;;?k
zpVzCwv1w5%uaxD#rQApE8tJ#()LNmjDn{m)-9iS=ssEKKtd75Ap0<iVMNs^_cFg8W
zR`nTbhRr*c%<(udUtP#r&+z13rSGXxuP-dNd|0FEqw6u{Wy9eq*95oiUR-u{dZI+|
z&*LBeh#x2mcwaPM`>Nx)iF?j!MD?<n+8tRX+In)sUX%Po;jw=<e(~vz7j`?LrW^6j
zWE!Kt-e%9(M&AYVo)n)twd{XG-1<8yI-h@ux)goYmHMYWwRMa7`X3hrlYhU{?+feQ
z<`#0PEk@#Y<C#@1r+v<Sd|7?QvA@|o<80c8(}x}_Pw}a9Of|TD<m7MjWd~l|xI5V}
z?1EOr!8H$gv!X6=pSyMN#2FSxAvbo5+^r{;`UD<+QqRf3aH#q7h4S6g>RfYLldbx;
zCic2Je|=HCrc26s_T_|Av%W71<b7H2WRHA?+4Fx9E%rCUAFiJy`On*-KD*}ebG6;#
zZm(?i2)w)TZD(e6aqNugkEb}TD+t{l!gHpysvvgPR&|5A;{^|9evQuQ{pvZ_)^>^y
z-;v%2yY@L>&I~V0`ZsUhx$|;!<X0|=>@$}P><nKRa%JuP`^&Cycis3fFLZLWgyZ^q
z72hY^j<pY1r7=;@r<---1@9Sr?(tl24<sKqXqB{8nI+x0%Pa6sM)$PXx!tj>Z%f0)
zrf&KjzpwWG$=O-b-}jdsfBT_gO;UmX`5$L(*Iih3cW<)!_gx>D`TzfuU*<ml--Ay5
znh$rryfBupajpFSn*G&p{{4FbZ1lpXdN3cUew}%yRW2q;AVM`;*CvbUW!L7;;{W_!
zUS4k3J_>kiyk!g2(mWWzXtW}8V~{WBEss-czWlf)x@G@o5$!8!Tn+M58R}UW>o$CN
z(V2SSf5g`XKUq>$Rphh0Q<wH1+rE@lyQKE6Pq+``Z2w0h%2#^dWkr3TxpKw6&lk>Z
zuHez^klP|S_u1R3wRaN&7>_<-HqYm1|NZ*TI|dO!v$?kvR#eWvK4;dRt$Q=?|2?m_
z=V*u6%4G$hM)dX-N|VAB{=3ZVN>CO3XwC93L*IV)p6UPpYyZ1HDe}kf)@MIA_9&=x
zPMzhu?$*^nEzP?@L4w7nRhNFX<qQ@4Z@O~h&SzWO!@ax`eqUI=?Mn7rzpY-`*Q*!w
z>{zqt$i;VeDx^ZE+))&t^)gV>#jm7NcjN1CB~DN0Bo-Rg#co{mWulK;ma6Q<fD3}F
zCiVST|G3K2*`fL5At6>C?XY?s)|j1dU!Phu$wzx%+>Ogxr}X!2j|r)odu7+6GXJg4
ze|NbxcX?$Wyne88f%5<T-qrjK-H&qFdJks_ez13t(7iJCUfEyyZ~JTwx|Hs2U$y)B
z-xDg6k3YHl#M0Bls6`-2DB;lQ4<?HmR%EoLOyYTxYSh@k!se11TNWy|mutlymQveO
z>-wA5rTa%jme#%r4Ue66w>0va=#w7~{M`>XzWluU)w~p@jveLicYg1`9A9U8^=f?h
z-&d>GuimYF_3k0|`uPig9!Q!i`}e=fwg2)Jdizc0+pi5by79mN%dD<r|JC2AcC9Pp
z&Hr)QhPCGMi%Df%4;Fh1i^YfbbjMHZ)t`BH@}Kayq#8}D*mGqY1=V&HpFH<XTZWTU
zY_+lKwTUkb)RycpQq!Gh_itI@OCkA`E-A&?Nk43l{%vx2Im7k!%^0`bIi44~Yg<~5
z#}}wrcrseP^R>yZ$}g*^%2%B2IQeXzJy+(DBX=vz3a6iK>6&`;NUV7GUmp#ZbDOMK
zL#{3BICX1r<R&v&uKma79nTk=y;VV^$~R3?TqI6u*2d=RN9I)+#;1xEZ2x2yZ)|<T
zmb?BiTlb94odqeIZdIqdf4O(jFr>EA?ckxN)*Zf`b3)H9;}DNY>f0c4akuxQ)koJ>
zUte?Ma>Rqoo6@^P_gB9?$r`%ZrdYhc+kf@9>r>9lJ};ZuviqI&SK<4Aj_<#>?Pd1A
z-%Ij8U)q^0oNd16O3{1ig<Wer%}eje$$2`-$GiM{b@r6k;>eXI+O277m)EGwn(9#;
zW1`;ptnl{n69%)}?Kd7e^LAm&%xO<Di?cqPG(XGyeEJiJx_s)>4eNwAnR?qMpFZT|
zy`}7R`~C0p9OqrU^|@5=WvxzkMqbsMjk>ektdqZ8<UF5p?qu<s#cc)Y=l|_rcx%gp
zwN1>dix1~NPMD_3>b!ZW*uQwWe?t8C(!<*K%e-+>^PFNET=^}}?2oA2|3~SYedD6z
zBy~L&SFX%?HnTkbhuSUg$1}x`Tdy&*GM+b6Q!dY<;#P2O?a}T-SxJGt$%&uO=;Y-6
zPo2+q^Ud4sZ1HNxa*w1>sl7h=ab<FL`g8Vm9iEcG(N^cobEizT{j2q&XWc1QZ>_77
zAIrYY=Ul8`TU3%Rk$maVqDQjdcC7Icx3|1k_5JePKTl2^yKzB1Cneo|Rdr(w|Kz0x
zlVkneB@?FvzBwR&^sQOf&D<+?i9OfP_|4xO>u1HSX7}uDqZi-o3iAp#(@)>uxO|-c
zHsO5Aw)9QUHd)*ivvcned+X_6R&(3*`j+f_dFi~*U5syN-<+&HHHYiLnMYoyV#A9Q
z*Uwa~YoA=kIR8rcntj2p)vWyX?cy8UcdRRDnQx%^!`^=8|7Pc=rh6~e%((roS4L>b
zT<&*yGSbs$<vmYs(kwFbdsggyEbe))#Y}yP*J=Odiar}2)QDlRym-#_dRex5@!=U!
zW@;}2&vop-c<yQXUeTOcX^LlMJvSF+hVh;CTWERGWO8}HO}$xj9f}`i`pKN_Tx!YJ
zrFQPpMV(GDmEe2PM_23(P29shvEt@J+m%b~7MA>ozbWja>FU~7d&)9j%S7hQhhl^N
zf(<XX@RbP_Zm`_aH=pyO%5;ycc-4n22l(te{n?MEd43X!|E1JCmpMW>>%7Q@>#=*6
z?mewv!!mDs%)6x>KcvmptlTU5=Kb-teA4T@3ypuRJ2%tJDEG(;ljFx;>}Y)ZYN^NZ
zjya9O4_9uvvao!~&N(?bPCbdA*-PFiz6dvJ_5T;QurH@h?OuQO#E&WauTQg{_H5e6
z_H37X$+qjuB9gbpW$Mhf$Z1^NpSs?w=<t`kCA)4GKHL@`dMR$xE*Blo)Mvh_&wQV<
z$7oqU2#ObR6FwAYylkHL{O(8jI=7C?Z7sYoGlykr?B@vgusKtVHKd(v-)~A^Samnp
zK~_G){Y+!)`<3kdSutsM^Y;n;`WAR~(~9>-tGu?GzRy_S;a75V?L|++i#ZXdrk?Ze
zm{_c_D&bthxBAg9cj?fhU(dg8iRHh_!QSG$YjKm~rH5-avTDveB)uj2yI|0ls8c)-
zWfyk7me?{S>&@1N<q}(`<UHhkXnA-3grrMB%N(9Z-BnyNW9t;@37clVPfgVP^Ge&_
zLgmbp#}jJU?ikmw-SNN4vt#<=Y3cjcL`zz-%>1kCJmJv7JC=JtKf4z-`|-Y6f8(b9
zUcBVdNoDV4Ppl`~PUiMf6F;)2<ngkj;XRqV-amW&J~}4wTFLzXv%Yz*+-Z9D>JQ(O
zD>K91d)RJ?o^i}gq0rrHe$}-56W%R8mmXAAvOVjw%n#p{?}C&k+<o(PTF$mhwcjK*
z`(2pHqu(VqrzA-@_mW++XZyReDFRJf*$$rh*O+Vk`qoO7fIy=c65WzsGcT~*o-%Qw
z{sANP`Pwpp7EL|()P26p^5tZ|dwT6s{ci0m^>MB5Z7o&*Rxa+n|D%3&#ln+W@+Y>t
zM3*eOm{zwTC8q6W^vu{ujmLT+`md5dX=mRN&Xb#;r#;I)*Klrb?=EXo-%ZEdtsl+3
zIPJIX=Dn%w9<93ZBce8>N!iX)&G4Mw^z(XW<``|S+%*6Er!{WB^&Di=HVYne`nB%5
zS!vX@E1%Y^4BmXowfd3Wule^>lIG8Q-|N5XWc{zVTMlPBMa??5d4E;qAN?)Mp0~#y
z6utkie$}SW=RH#eodcTHRcx*0Ik~yky_yweQ@rNPJBhPldt;0=^PkCFUm@k+d-2S>
zd1u-*ug8R&>SZ5VA-F?A*kx{MN~-U<AFYpr($5$9Yx;I-?_cM&&COj}Cy>+dqo(1;
zi=oNE-Kp*O`ntO!R@Wt^2F^4-_|j|Z(HlP3S|X~wUQT5-<>hnqk$sx_UG`>|dxhT&
z8AId7e-<_JJE!$3@9O%N{kOXR=e7J@oqP7wdvq>teZFSfQaAQ;_rC}BFZkSQFZIPl
zw0FYP8ISz7=xx2hZYOqbj<<(brGX9i2S?5`i-jI1o&6I3m2HWn&o9R9KHGUVWdG94
zxSid~`C{|&4gcNNa`ww#D&G@$WZuVOGwp}lTTjRQZkPI$^jT1E_53So_qnc%#a%Wv
z-CX6<7dq)iH*ZPXkv*J8cV2Z}ccV$${rMENqb`<@GsXS9CfzmrP@O(8JL~h5p1^yq
zlZ|@6Wo(wbKEZ7HSpm`H{!<#or{|UIHdLE;&a1=pmhhXEpEfi3uAkF=Z6{;tZJzzQ
zN%=p2dA^JIwl#P2=~TUY?(@H?J@~fzN}$#pjipQdpFV$W^lQ=d@W0hAy5jeQEW;!&
zX2x2Ct+;l2f$amScgM`qee+lD+;(<$j<5FKRmpBnh5K?$H{CllW5!cY-Thfxx=&pX
z_uIQu>t){Vm|4LV+Gl5)npv0oxP@H2F?)SU|JwNY*B^gB3rm096P8^QQ!>Xl-9&2B
z>gWAkzGpw_NlZ6XyZo|iZc%Ndla1c@!23l{y$|Z&S^w?uy%`ac(#ljW9a+9OY<c>n
zGs{b}1Gh(iaPR)UfBXO2|3y`P7%$UXIrEy0VeOG8s+ZSAJ@UQvKq7G3+(@fK56{R<
zekeCLZ*lm!sI3c@WYp!q-7@w1^l5iDBt`xF({*Lar|eVe_YKta)_#(zxS{csXRq&#
zjyj8}Ul03NpWUNuH+@socC}67`=0!7%rkaVKW;gBaizXa;Eu27RVM466Pzxwv^(u{
zH>+9j?)q(xCP&?r@9Jy~Yz%U|^f7J+*E7$i)KeakuUqd|&-;3)b&d42J$#du8`W&y
z#^rjqYuo6y&6w)7W2RC&(|+grIVr~cSE382iGLA0{r0A6=C)0XdJK1ZTAY97GS{};
zr&LX6ip*T|+&5=UuI5Qkp49R0hNP&taB9@V$S4yd!|g{NrtA$U$yuXpc5GIRk!Ajo
z7SGLG*_HJ%9c5(;%)%$nj;R0Bb3M#hd-XD<)yvdYJ8fBHUw2<y`1K6KN<RLtHinwE
z{m*Qt$%%^2p0{rH7AxCn$NohWv)+>ywYJ;MTK{n3g6=QpE~(~8o@$FudeO%Cck|)c
z%NBOYPMKv>?xh$ldlLRMz0a$^>!hrGky7<Zo%x4ro_@Kc9pwEv=&O)bq1LN2k*Sl5
zPCf7OElcb3EABttUB9rPDs$CIxwjrZUVWWi+pLA$UDQ)lZ<bt(sGf3JsaNlePMO7G
zmDQK?IyXt3J(m%kba2O;E0gwwES~a2uKBT2n5A-$aNU9GmxWpSweCBn$Gz?CJn!qL
zzsS`;L-woI=UEH;eoZ_5dgWX}+pQ<6UKNI&=3%bND%)>g(9-+#;j_5^D>M90lq`Ls
zHY<Hb?tHHG|FYtPPU+_Cne6Mm&vnzTIekAQ+Gpxb<Jt568ZV3Riz$ue7oVwS6fZAO
z*Hpi%KOwN>YjLFVX1A!q|NnZfyRJD?{Qbe4*ACKlQ?JjK^M5>F!sbq7dfDmi=M_&&
zUQ0dB|9a!xN@J#be_kyTkx8-IdvD5w;J_JivxMV~*S_d#d7+W6v-euk<|uYQ>u%Xl
z?$yTkH1{r3x|_0jrf^Kos<o!4vb@jv>uQ?19lfNIzD3*A^ylv>YE@Z3{@$MMq`0S2
zrSH<K`6>Nr%L9sQ_DJ@APQG&X%$$ntx7QY*2)Wn1Zq1x&_H`R~#a{4_|KNA-V4aov
zrrCODW>gekeX^@?W#;9uI|9)YCTFD{KL3VGSwHj2k{Wg2`LPyx=U%kD7Y|<=zT9Q0
z=&~hZD!1?J?@4nibIdKcwdS^X>_X!Ror`?#YeJ1AzGN;9E=o$eeB4Lg^ch!r$jL8{
zS|oNdTtEBNssF+CrH^)5itW8P*F#cu&BE<3g(eCuUmC($&gB`S9_OujB#v+1qy<Zl
zaAmg??uuBlW6Knw7Z#-}=1*C%v|>WgiSJ%Xnk`z!Q|vo(cNylGedj*1^2^6|vzxxc
z)#_6x*G7M^ypt{Y^GSNtnR)UuPao>9J#$hsSl{Kw?yW{8-)>B~@gt=>L*)9)H-#q)
z3r~h!%rKeBv*TMyRH@qH*1Zojt}Uw5O#Qu`+jn<I&b}EOSD&A3^FFmuQSki~qkWs_
z$Ozr#omKPayx89}96uMTx$CR7%|17I_qoZx+fKfAPWmD>zh{E+bfMsY$;Qq}>#jWc
zEiUf;#a@S>SNyftYp*Zj|8tYnn~TmDbQ;CBosm(i?-4mZ$@`T1eVvP?&6kQAWjb%N
z+$`H?kzZC<SlC(n^^=O8={qyEkHL!Ng_U;yezIgAiqY#=wRt8KWA5<p@&8^GH`Ts>
z@;~K&s(YL_sC+6v>HOqJ|MyRATVi`M^W^_&ljdzQyt?jW@5<koiZ0bnoHuo!>%3(r
z|4-uYoniUtagU@VyODZ~)4Ovu>e*4(j^8xi6o2yHRxQiyqSM9vyY8RaZC;=CFUR-U
z^XpI9KUsgyKN~;&e>3-!1ji!B_a2{5s4CZoSA1pNwDrT`MVhYlI`ablEOEc4az6Oc
z$}c|O&U`xa`Ocb?&HwKnx*y|oq^_mf#fj&MMW^D<Q_nf1J7zAKAn{b<P>kHYB{g0_
zE1Z9FBu*+~NnHP_x@GpwuwC&#1-?J!J*7FR`$wUX-0w{W;g#%(&6^|=H-D0o<p1l;
z@m>4(315%@U3Xf3h->J({bWd7_sP4(TyZ{|2Un&;=bOiqJh^_aNnLx$E^TK>;`}pj
zLT|XMnSc0EY;$M5jib~Nv8Q&g4qVgE(EVoHY2f*jCsDUh=}qW9ryY?$jn|4spD@`a
z^6|XDJNGL6Lv_0tt7RQ$EU9VPFs*&>srdr$)Wu>}T25KaF?ou=z&EY=o3hQH>X+DG
zvUi=aq^1v~=tQOcT_2T}-<^RujpyDAUel^~xpCU*<CO!3E%DmIg5R{+T9&i#bE`;W
znDr>qwg1DN1A!Y|FB$rJo;OitzC5MJC)mi)_v9H9Rc;giPF-ew<u~DW!v2nvTi-SA
z@46uSBj!(3k@n-Gbw})7D!hJ5J&ar`|IqU3k{kLjBe;s3yHXx%=B2Kxkoxue=;e;t
zM~!Xf8$Xg<<X#abDRACHP3(A_&bu(Rj`W3}4G#r-Sa#o<>vCg#P1gsL{`sz&>4A?d
zKk9h3@V#m++0fdT@}$uCG9&x4$8tYrSMcescK>0zkmL7MeSvw$_T5;g@yOEi{H2M^
z5aeC1T{)>Q()p5Mwg+2ScFPJ=rz=rL8={m=Hj9L1pFEP)F0gg7&zdrhK<krdvRVX8
zojRlxZO%SkA?S3)!)UXV;+4%MVahFTa^}XeVag{DWi<+Hb?AsvaM4xaUd`&n?41tc
zdgT2$sm`%K?3KVbZA}h;?ac!7B!4hHj7;S^RLp!_)%*|3EDhONC)h#ggK&nDdB!3C
zzRlq!9Fi@2zc%Ue+K5#4Cp^zqnqQqHuBxji)Gx94=u!?@*}_iYtvl?L?mC?7xSn08
zd{X@WwMS}7-q*7VH*d%dxbO7L(@{51_2;G6QFqjA6y{!eRCX!p#(`ft`=&_z+G?T7
zmb_0)yyM^&r|#|}sZkIkH_no~^5|Db3G+)++f_$<RnC<}bkFWMJZIt2vs=mn?mKav
zQH{Fe_2>-u)*Zd)Ov<wgtu;6Qk@3;^y?%07v{?AtHOE4&R~KGAmle}>A@J>*V_yYd
zu9|ywM^?J&x?7RGtINV3qj2lyY)HRrGr{Oc+DHA+vPor^SWPA=TvGd}U$g4|&o7Fq
z4H43sho)s+Vw!kTW{K&<w4B$Evg`i*TDVsvk=aB&alhCL9j7P;DaLirnWH9#Ghfd=
z93_6~)(^AN{|pi*8u+UipKOrHJ}tn#NM~k!c!}U6-3wDKpXa@~dtiU`ts}*m*Nb?a
z7Kdt2&OEUq*;@bd`ThQ<UK#aX-zunS_wVi*zc}uh|9@5JM()hAeYG)F<^0a6%eQ=x
zsogMfmYm*F(Vtrix=S;3Zcn&$$~*LP%2ysYg9O#G54&3SuU-`u{q&qyRy%9TKi7+D
zd94ip+cbWgWlvbYQHq`Yw)57RQC(+tZqNLh^?Y0G5z}@F_iG)IYun#1zgES0t$T;P
z%eFMV^J}L*-!SL)!szUu9@U%0f?vOX{wMP9)v}jQ?j5MRDij%g`o!Yo4Q5)$)qIz8
zXKQb{)4ZbfmXkMo^vUD3N7}DkOZ>`JU2Hq!N5#*tQ9oVpB+ssh-l!`s$1Ey-WmnRN
z6_U=+GUG%p{K*xm_7jZOfA_WSZ2i?+KTQ7l)~r5te0^k3Va|hjrz3P9=8D~W{wP{{
z|7Ag&C%Rd;&m4_vC{B19e|WF0#TwaeQ?|E)rYo-Z?N(U7bpG#8K1;3$o992ad13P5
z&-y28uGBV9;EUKOv8l&f(EeDvvHqi-+nv-o?kD}3UBPQL;c(HCO=3AuN)z4BeTX^y
zviHyHV{`A+AO5NPU{2`z*mHZ=b{q42dc3OpJM*i1M(dfa)&AaD%(RE+s#EumeTlDq
z8~>&)au50bw&%tox%0et)SQpMFnYWCz}fo&>vo+hdHvA!?wvN?X1n_bwwD+5$I3l?
zF1u%0?yTjjD}Pp==)3dz_1SH!ZCj+PpBBE)aozi;`S_dGHMjIm{QQ(_GNpRQ^l4k`
z!oJS?mH78=YpMLF>ks#6DeD}_T6E3z?bpL`_bn^fG9T1tNWb^4y&n;L_1wNhv#;6r
z>i-!YSaZr|{p|NQ5BydRlm4Gz=d-!>d*<}4h4t484NH7Pip}0g1e|wq-Luxp<NV{I
z&f~#q=ee$wZ!6zw&i2&v?OfTnbN3}I*t^zaU0&wI=Pa{kHOGFEsh_^Tc;)_u8I#tl
zZdhTgz`iSG{+(O*9=y+)yt^hh)@U2M)Kj<k>;<Vi_vi@ZOxwLnoHhDSQF?WGwDW?s
zE4}mDvo754vb`<!<kz=zX7%ae6K!-g%zxD$eCJm`{m#qpTTe79oLcc-O0#_HuLBG2
zU2n9wy>#ntRf!i4({k^w{pXia_OschS#Rg!&9ZwWbD!M1bZMVY9$TU1g<B6-^Pg%o
zvpn&NG3|zH9_N;YYreTv1}^AKUn3^+<vYv9;)Krq9@kdQysf(Z*R5%%zusN3=alu0
zo=<;IKk<`)bxG1;>&C_FL*KniII3`5ZAl4hn1k(&J}%wV&`&2%*UVj;6?x{&*R%Wl
z1U{FGo&9KDy8VY0d-MXOm=f0PS%#kzltR4ZLZ4`M8tj$-=4xp7<i1FP%^!tpFS9>v
z|7A7(#M>P2BUz7+O3#?hx^?DlF^;7F*-iTvL>*5`xp0nqh5Kz*YvzCJ7R|i-H7`DV
z-kk^2*T2a*el20c;zc_uZf;6-UHkA%_p95{-OZ=1Z_T!<l|6g9`*m~g+uVbCzEh7%
z*RD7qv~2r=z0%8K^~%eCIx>YO%}$k%x^(}h6o-*h_q5`w;AiL79J}VXuc<8WMObu6
zWbuN1mPzq{*lxXw-X%Rl_tw)khj4dpt^~99FL)dl%0>O#mM~F9Z}(nazK48IPX4>*
znzMZ2np=lXiKia9I@9~`pI8I`y|2ofmlp5Nsthe+ddJ|^_}ch#`6lKi3u_~zy?5(x
z3Mlxt(kJo9L9vYYd}Sr<iQkqsR@q<9{I<PhPWZypncVk;j`IF<ljmEc6d&$>{=r{`
zz?dg|MH^e4n9D_uc=B{PExK`g;g496g?WGSLXS_;+jztyZ}n8CcDWrfwX=I)a+gkD
zEiZcX>-pGq`wk!ca+F;!+}>)|OYf!ASHCZDvUf|l&u92(Uf;{jyI%>m-1T2BAiZwN
z<O}l8Cw*Kp#pl@6Ln21A@3`bS@ZaTmxr}eqG_{HH7os-J)KjU>u&$h@r}{fnzjAV(
z!v3YRPYV8$`8nsE`tqYMujp*M!16J8mUf++_tEp2TYs?5)t$G%yd(Zn+DGkMx^=$S
zyZ(Op{U~!6=NEaYbG>>0#qvHMSSxquhUHT6JMWmb|2~kbzT++H_Il>+<_F#~7yLHf
zQOlLL{AHb1W3<eU)TY}R1)rO4>lEykyEE&6E=OMWfw%1szA@~0%P?KNy;wNiwP15|
zDA$gs&C!-Sd|9`*KG?=`XIk^^xev<ZcjU5f-}~U(`v>2|cKl_$)7N<0bJt9vUou-a
z7g`r+vuxKYn9ZAK-gG;u;5FlR>jSyMJKi#YG$`#jSpIT-d+}ve_kwPw?IuvQjCs5d
zuC*5E?zqdHcl*Fw&w^^sJNFp2-*3FF{@|PWuEwB(&5hAUJDxU0v+nR^-!6SHmvhHj
zhVAbgZ!<sG#(rlW`}X*z+tv@hxflFSu`qXDvfuK6FWYvng4v9D<_))l3U-U%+17m9
z|G-<{g5R<`WZAbHZ<#ymMbIpl>P)>IQ=6hqcU*0{?NsoZW&7;|Z|e$f^X8pzzODV>
z8{>{zp1kEp*0b)tq2DlZLfd1bdJFU5K$h(x1=>v8B_EV2@7UUOI~L@IZ;iLtA9$Nw
zko<U8)vgI@4bgHtLYr=z6wKz&t1EcTw*B^jT;m<KoO$~hw%>2K?f&4K`A3!?HJT}1
z@tjK^n6chj$F{xofmp)dnSt)Tzxuu^>b$n@5eoBbar(hM*WlI4ixGB~BDZ$s744iD
zv{>Yl*s^7pAF21aWtr^%^J#H}T+M{{#Sadwi=Azjd*eXy>fP#3rpkW5B3XK5#rx@3
zTUW0Qo-Vi7<?AlKY2ob3$p%u@*OFfz?25ZzeBQQnVc%EvE1x>U>Qp3cukcjIC-44{
z!QNf^!gbYjzGBuN&5obueMtIPz`N{&!{&P~UzUAc_;umV9jPZ9T%LG2iOCwi>~U*n
z&e<C$a`MIJH4`o4SKdCh`qKK`#&vIGV_q6anVR-5-}Y@@UAyyI`|Z=WExjXcb+BkM
zOOnXm+PL*9LW@fxzR86t$L;LDdGf$41raCVKgzwyi`-8CyYTM<-w8F2)gSC{c~otk
z=wp@Tq+FY=JyXM!chj$BX-T>JxBEZs^{UoiJXh)S-U#P|DbBpDQx~>9iax}<bX^9R
zedttx^G3D{QeNr;#`zlS{Z!Ic^0UfaOA?seIIAaA*m7-W=pB#0id(n-x@jhS``h8I
z*&B0bB+gi7x93v6QSjug{HM#_m%Vq>lU7huHl6uB|9;*3@B7Mszuo@v%uU17H)r!4
zNs%bX;MUJtyURz<{KX1K+g;boXMDYqGet#n2P5w;#g5SCMAg;dE7*D0Ou95nFJ;*k
z8yCZrhINJa8Q*c)+*@4L>bQt)?N28)PTqxE=U+d(b;qT)1qXe2rk%WZ^4=eT$r(bv
zXF?3x=Zd7>`f_B^^d%i>S5~dqsvLj$R^Yqq+X{2vUznA}V|y(ouiW?SuVT049ikVe
zx#^0VJWI%qQrT*%nsiatElzz)#N5XlZhD+u_VKFL;a4B;ls%7N-uSgRXZ6hdz13%>
za%A&#m*q&rSf_6b*t~ZAy7hU|)2g3VKi#eHTERyA+KQ~zvr2FDZVjE=ywOy;<EF)p
zHGJ##xJ9dlZEQ2m;LW}m{4M5uz-g(3-=S-2owTp7i?!U7syii0X~)0Mv#&X^dhf{8
zzqjqq4BOX-V!I>NXY_tbc%2pfQ*P7uI}ft>wK!6@y^_jF*tbh)jncNTg&c7U<(fU#
zOqynRjw#GU*P_C|<#8$B@x<<lQ9hY=`paK`U0RqtkDJ$Q>rofoX(d78pM<Wo-C6sp
z^_A1hCpE#FV%u-Y?!L7`b=CQ+&u=}u_iW$tXY-_<o!%~;Z@$j-Q_OFt+X~+uuC-rt
zyykT6Lrg%T$Roo|R*^hMgdVc<?aO}Av{Xu5@UWkF81vRyEIOjWk?{sw4<$L&+r1FW
z4qp`~{jFQzUGSQTTR9~c=HDuJc<c4U>u1W=@Q2TN&YC-&$^9CaZ(q)rZy6r)eP&eR
z7J<c6cm67QUy^^raZShuzOsrnHM<)lc$);i2|iPLkae-^vFfK%|F^cYc-ekbowvHu
zR~viGdJCVqAd5ur)>WovX4#*flyb#1=ZF7wd2svYu2&ja_L@SsCoB(`U3Ve)ip6J<
z)tymiUoKG&asQ>XgirHjOLTQZ>7C~h7t9k(gIAl{UU?Y0HU4ez^j-V<_I;TU+Q9is
zNo?D0!=%~+S<AzYKb&${Q+?GvxylVs6HaFv->><6pe@{dPfqR4Q=jeblrMV!c3<-Z
zbH()zbr-)E-LIQBb>*s!>)#jncg3!+-+VkvC2aB|si+_CYQ-aK7IM1S_L_eBdQ5Bf
z#9L>Srkz?g{pO{R%%d|;Z22Xsqy0NfF?Fi%0<)Ft`zIXC*)pZ0b^gA8A3mObb?Evk
zsmeWpw!v~XYciust}I%=`t|zY=|$^Szr7xkxk-5P+{gv@u6}Vi%)GREwcn0cF{NgX
z8(e1y`z+!;l6T?t+A!@`uMaluNk~<W3ecW0{jBh*YQ8qz#UEOxu3vEI#?7ZIrM)hM
zznu8%l-E1fvODjOOg5V2ELEufjVsWp>QGDe`lKV_S+{f)d6#~lTirUnW8Lv}uWy{z
zsC*Dp_BYXO-Fp{{xaS{b!rpH>yQEh}A?fd@b7Dfbue^+RveDg_ApLH`nU*-?^hG{N
zKZToLnO8>iD4ly(du2yQwS3~a(9J22c9osu`Svu~H1<+m>8<tiBwktXvN~}>_1`(O
zphJg?<ocdJOp)_@p7{0w2gB3-)45px&5thS^(kO?DctUSFwXtXiO#~Q1@#^*{Q=%#
z+`C)uPs)Ad{K)x<t&{xy(-mB{mu7Z%9!&l)!#rv`Z)fgyt(?<8lj7xr%{1y8=5$#;
z-E*-r`H-8Mr~X`hHvdolm*c$euQ=6F>OASA!Q`0hu20)pcOMG+Q+2X8QL@@=Y8S7#
z*VA{W?uO1jrYkq;W8|t0y3bGl2v@6-5_|t9f5PiM>#O6}+nr4LG0oFbeDbNglly!-
zXMS3v6+B;RlJ@+RpwCBKpB~xrIB{lO!Lh@MGk?y|+B_}JC++?0z3Z>ld_BcsdF0Z$
z>6SrjcV4q`Px>7beI(`GsSPVE&sv+jUtGETS@kphdHb{fwSVS2Yk%y?pHE^wduAB$
zZGFc2THI#Msju?9oZ7FC8Ht^nC?S@&<7Y*L*wricg45g<Yx&BX)!vZd_Gwv@bMJ1A
z#K*g5cQZRBq&=w9V`pB@v|Mbu-agJt8!FyDsy%S)sC|4*o+s<%quJ9-barxodNS$x
z^gUaiJXV$8E)o6AK`QE2l-z|UN3X59*1Pt1lzrZ32d!J{a-(l;TltpRw{L6hRli%u
zozu#el;*s$IJ)HX&2_FmO)5K-e=Jjz-%!8$!FQE->zi}$&y}y)Tz&ac&(eEKyQ`ka
zRsK959&`QYnpM5`C$GBJb$;f(uHx-scWxEEKD=FS$Jb&t?bTuHo_>0B%6ad)dpv*a
zZbx%vzOG&KedWFHVMiUZ!gJf=uCCe_TDx~C$Nr>^p|z`*Ud>#czAo<6Q<n^_>GLl1
z#fcx9cOiS><Av83Ox$*C$FdCHm$SA`xPEO;WG&OK^(&*VEo+I3wk~{o=C)M+>-g;-
z`)*mU+rRkXx-NO2ecwBK4}N&R?B?t=`v(;tPBg1;KaxLj`<*SSTb{1doxSbNjZc@R
z#phdYe0nA<Gy6<fW%kXm_t$Pl=ik{?{W?3^zUIW=fSb;y{A;UTG`8QXeQ~+{v;4ky
z4}1F~<R$-me3+;%SNU?Ha{rv$W_8i$w~23`o;QEH?Uvfl-_*C)Z}@woZ-%V-yB+n%
zJLei&dzbs&joiJt`1z^1{O@h{Xs3lAUKhGs?#9=5>-yz->#ux%(d9nB_RE#L_wPh^
z&%aY!!+$e)+w)tt*5736be?Z~kZfQ3=EmdliSiR9o_arGNourEkn><DVl<z?{)Cy;
zfz?xC>H(go!bZX~SkJJnW6Ek=-Dr8h^ngtQ<AnuR1nn<ym}s|qGDPs`Fh(_mE#S>y
zw`z!P@LS-0)4AzX+$CNe)@h8k2e?uVcZx=EeqmbOP(8K$gxdr618NWK9@Hh6Z(y(B
zsgS8)s$fiS7H_;RSkGJ`T*3Xr^uzwf?TzIP<&F0l-ZQ>uW^dfDar%V&f%wM78;%=3
z5Po3sLH@w<1L+5z9}qvl`M~>u_S3{q^H1rY^n8$iK=VQNgDsn;&S5;q^t@recJ#}%
zr@p&bZ*bZ0*f8ZVZ)3J@n0r9)K_J5NABG=PKIk6^K5+R!+ynIk{*CDk>5X<z1!_Zo
z>ell95dC2Fq3u(2;j~YaET+43UKd<lvDe6XkK@mk6~cA-$MTndTKc2dXqt@5q@p=5
z7;F<5dKx$ln8glo-C(djkhaUJF+zc_gI$Qh?E6*TCyYNG7!8<p?J>jiK-$@RJXaX)
z5(ESI*M#{^6xhHP!F`8Y{|?6=jvFj@*zfSaVf)6=&)CoG&#+$G{h=sfbW(n5-6zEl
z>JJP)q(9*JAfEG^<A?T#sYM)e1uRIY<xBGI%%`;#2Y-KP`u>ph{bBBV%bPwaiZXIu
zV5~a8Ai*e{z^2o{Tc9C-F++i^fN7(Hi~zq1gPww*M^N7dlc(QJWG6HVI<QUPOkup~
zz&C+=$5gvnpyYGFV}XDMQx_w@0hb1&8}rfw5({`FxTi3OGl)8<2C()pA7d6~&=27C
zVNqk8+^BgV<bl@$wi#?b>}d?fjgbd(9%v=#y)xpT!5_n}!%%gwT6BXH2V-`_)&sc*
ztR9p-;CtYgVEdu=&E`nUw#9EH`nDxo-0FLnVGZT{KYIIa`}NofnR5SA&sA~iov^a9
zICE~r-9i~I<poV)0fA{HDzB~tR)#7ZZM-CFeL8H*R%WY>d!{69y5cZ3=+``_U?1;G
z6Sm!$v&hp~Xx26r-%FF1WuD8l(Es^$&T7Twnp>W{d4A;FI_uk2yzffi%74GA<XklG
zcjdeHpZ`pn+_Por5?$3?%}j64Xs=sAm!?hHHU*E+?cf^u@{{XdT)*O@d*xMqednze
zbFH|lm*iMPC?qayX%!OliqJq~B)yUAx!b(4y1=+|w&oq5hiP2q!8>Mh)djpbb}sBq
z&QU0l$+=W@%Cvx}LkW(G@^}3CFEoD<&|T7=DQN3tztAP|OiBODcZQc`&F@BDo@)vt
zWX<pHUAFsr$@f|B;x6CK-sN;zbk@2HC9TV}O=1_m<nj&Apr(+PQ?THyt_vY8%alw+
z7p~;+b<H3}XhTZ+!xfqwzK$7OPQe1Rnhc6!9~%6VJ9h8z!RJk%ZE8j9s~$Mb@)Eyz
zv?R5lueXLTFRjqHdv@fVGmp~5%s20tdGxFfMCj(p`Sv@S-z_=1<4f?WMaN$hMmfFa
zs=aZey%$25J+IC^_dO|vM>$zS^6&`>w_^rIZ4(W9dJ>U@a!$|5ow-@Jcw6eZZD(#y
zv%GDT9{mg^==kyP^XsC=l+ABD+~>*by7TJ%?WWmHnMQ)sJ9qdTNmbGlE}YqM+9gKq
z5mc!8^O6@{x1VeMVo%xM{BFtnQ-^F@1Aj_P?S~PQ`u~2~7;pFO^zpi%H}vHtf1Wtu
z?q+B7$xumN85?mh%rAfTnFA39iQJ-G$Gw=eG-ZNgqo25W?vGr0pGT=`PH>`%L||eo
zmv%_R!b4o5VJkK`wTf!334jTOmStbdJ9}$w<ZjdK?P+hXy?L3wG~j6Os_iD)+r@;+
zat`(R-q^@#ZI*akZO7DyKJ$z#&pol6{QOMRxiwF*5WI4_b4<$hXYQVU=C1d%cdEtT
zC+)1({4ulsdvVpIX%~aH%n7^T73I1*lXvaXtf=Svt7pwy_%*~?`p^6GLAtq1e80$C
z4YbW&##S{?Dw8``cg^*UUk`Hs`{#Yj&sSur>=*4{rl!H%Z<mBsb>3RB_kx;uZqY>?
zgk%5zWz&ECsoig%e8rzVqv1Py<^;Zr0!K9iC0y=0UXh)$GGLk0Os-TdbcUc+<Arv?
zUj|O{ZZ8gV)ZQrB*K)zL#ZRe3XyIgzxh5NT`@YE&-hKPXyR!Z*JKb;HQO<og(d@g&
z?CK?FZ7)5O%PfWo=RcI=ysKRJ-Q$j}P<j6m4CX%mx4$ny3GY))<<rk_><cTZE^s`#
zy;)QBzrdc=Pvl?P$^UNuqWnu-Yq|Vord{*p7O=lmjPmIJ5z#Nk<|TI7e`S~4;^Uc|
zf7ci&Y@F`>=IZ3ksaH;vb6reW#UeNR&(1a0FZ_P#-3^vFKCLiE5<*P1Sa+mQwNJY+
zrt|d^&$%`$C##n}=e=vW&|1CZdCR*w7v>6EeO`8M&r0L`S7&BheO@+qqQ*aw8Qw~d
zC!N@#Vx-sEV{4Svf8_1N9kxQ--5-792>bL>#%^!7|ML$oWhY;8ob!Nbi=@MBM(jjD
zcF?Qt?~WQz7fxvplJlxWVjTTzdS+wJ$(<6R?SZ98#8%G5W{FqSdTzA@&fbv8YPR;k
zGSM4bm}ZA1T;|G&YV_5H3r;z@OvfyBqh_~nWX`FoQ$7`V(Ti)2cdb@LvzNYJkSBX&
znOaWPAp|k=t;J^9^lgvNl+C%Br@rsFUrqlT^OJRxaS~_DPyXoW=|2G{X7rRzzL;lp
zE48M-=l#TwwnqEhk9|M!Lr(I(^5g0hsNk{{Pq+Bb++TSt!_ZS#ZRJswtuvNP+y0~H
zqWa}pqq|rL+aF@{3@5ESuteM7C6~`GrpdHsCY@7w#sei1POd#T|J3FAr!SX&`jY<X
z%kv$d#Z}A2_!7@gne_hW=iesNpIzk7u)FJ>|MlmS#Q$fNkIwJ=lFk}>>Hh-vrCEl5
zr>uHmST$$bh4UFJ)qksJO6o2b-7+ccVpf!M_R3k;E?)k^vv#@EEr;`$^jAzXyQEgt
z_iDvFv*70IpKMGoiQV$L{etzEYVLBiu1kG~Ca>7awKZ(vHLWXAtx>B5vYC@|9oF!6
zY-QYNR`JhLV$1G|_4EE%UN65~{i6RxO_jcA{im<cdP8+ytZTehiK2&i6IR0a-<vnG
zCF-K}O=V(#!+*K|;yb&ne$juo^2_zhEx+77l=CE_MW%Z~vS5*pQ=h9vz3{pFEuYOF
z{_(Y_pRB%<yXp5!#;OT&i(0=J=q_@9p}ysY=m&TO^dhsW?OHHzF0WVMa*<N2faT11
zhzqH_yVf{PH+?b5VLHn$l?$qkdYmPm3%r?Pg<wKY6H9LP>g~RmYQF1@+w{99jMyWe
zDV&x`nc1vUtYWQuGxMaMcUjb?%ai6#d$T2FxhfTf{_j^!abLLZ$K@N#>bh6nPkOa|
z#xLDv|15+5&skZ2?uvc-tNGnA;(Jb~?bG^n_E664pQ}#f{@ZiC_)u-@F^}MaRF%LV
zkxvQ=B2z4WWT;5S$aso>b2B<9&oY18(aYN^Zi)Hdev}z)liR&K_v04bc?dzy^Nfe*
zF}L~F&wiP2{5N;`zN`s`7bS(~f{BeE%V)eY3%;AS>b6hm?3H=NzmMPfXSluo%v<?l
z(I+vimf?=)LMLD_&C6aK<9oa0LhsDt<Y#wgSemDuV>J%@v`KwQ>=n=5>hq_3+oAMm
z&dFVS&pq_H_P5mU!lGA^tL81mLF{wC`hCSOxzPUARWVl|PyT+3|Bl&b+r58`?|Of~
z$p6xP4x~J9I+P@;7xoYfk+_*_cJB8%Z|7~kTfD9MT-o`X?{+FYw0v*CdpWv7Yuno0
zxv%qX@4CJ19aiSO^yv4S*M7fw?RU=W+HGI$Zdc9E-Fto;M4129wY}R)*XQ2Nj{c6$
z%s<(>?)b_Q!C0SqSNUb$FM@XU*g45B?Z5c6gtc~#o#W*flS@=%UFR?IznuOe>z7V#
z-@1kSm+fD8{<8Rs{FmJ&x>GMre{uSY=r8M8e%Dt%t=iR?w`BGUyY<+suzb0#YmsWO
zo@u{g{4W_r`DtgUu3dC>OWU;|)3uA2zm$yfH{H@WZ)to0QUd|p0GMm#^S`v!zT=KX
zp;A$C!8(%|v7J}vZ~yt(y7hR@*?4yOt)||&hgO<B44J&|`jYpiFRT5ZR{QKb{scnk
z{AkoUtG_4dSG?ih^)vp3`~275b}b}2d(~RgtJh{_W&3X3y6jd|aPHcb5MkevUf&Ym
zf;;!sR|xp%a;|9EClwR=>H8PcUskovX{?vM%h=w#?~a`Ky4io_BOTE>qCfpM7<^j%
zpmyS?2h0;$5B_edu0I}b)_3Et`<s8tW&Z_t|L>S9f9vN$>_k<T#J4L3Z&oJW2tK@F
zd0V1Cud7ts9j=|CMXwFEZ@P1;Nc;3!o$Z^J*Y+7}fBU9b{d>aR+7tKeQu5_DZEt_`
zR<XMJ#67u9+uL`DJ`6hoW+4e;VIJx#TqAKDJF)xMhs^zQzjxibw?MdL(!Dt~O!f-@
z*`NGx_#;2zKl7)0hkyJh{xkjr38t)cpH_vFc(X73?LNod`4`?vZ~4uJ&NL`W{?PY;
zyQ5CzV!zU_Ko|S27w&?8H5SRcep!qV?0oUK!_MyKY`=F4tY7Xf>97B9`^)a^(#kK*
zhq8BxzlvK?z3^S@uJD>!a~-~NhRnw#!h`3pUU~lNmE(79@4S7SCtv=1$L-^H?W}c=
zJ<OH42P5Wqh}ZLTs~62VQK)phQ$~H#9FHQUlbtH+lfK2gV3OGS+)4bvije;4d-{!2
z=V(6mkxV~j5qxZ>(YYyw$3EN6^?twPGuL(hfBU8*RYA;WT1}?vE$V)G%4te>pyVx0
zXY16A<veevESzh!CAh8Z)CE7N;PWT%C+zG!mBDt`@BX|$dyVR)?l_iTYC2?c&hPOX
zOoCfZ_sZ!Dx<)14Ja?6xx1Rtpy+0WLfA{>0itgg&8J24oOx@BIc3CRQ`|1|Izy6nv
zx6I4RX#W2<a@Eq_EuHfgTdi7t_KL&#VCCF}Yg>=M`FOlZ{LkO%TjtKv@Ungp{v|tW
znb<AQwO@p`2JVh4xo~<*w^gS3+l70-aFqs{zg;Z%-&g<Z&);?R$5zbeyU^fi<<VTy
z(Wc>d(n(Y;BoQkyb!F|nD`qopu?62w$ddNSZC-gdCyU+p?ShrECR>}Am0c(`dtfD9
zFqe17Ikr3UsqgxYzPr!-z4*-Ez-Rw7itDHBv_AzCj{NwYYp4CP-8hhV{bzxHQy%$i
zVj(g=eixql$F{b2pWpojum60%ewnvK`L4@$Hu+C2|1AAq*neyJSL**_d$rU4Yr<7K
z)xVsta?;oTH%;09#nX8gPTMY=UhSm+y(KR0&t7+l@UFt8*ojx1d+(ez*!^SnBpaBH
zcWpCXVndOC=6cPWbK2H&dUcWB_a`y$PVT%jxp=4g^CJIqPazVEkKcNfAMeyJ^<{-4
zh$z%u?>xbjV-uU>HH8yWERm0!<{?np4wa(Xg+@iriTk{Nacw{Rb9r9-XaBo={fm7f
zm#o~NH|aypL%rTTuXZZS))@aVe)7_3o*piuIpb2hTJ5F!kYD{?{{vszYyEX!`hUe2
z`KkXFg9ZOx`+VT!$@dj^GcNBrn;!de^SUpQ;lI{s*It`y_u6ZI>C*GBZY?T)IkzP4
zq4oa9VIGfSh2Br9c)qf8oledtuI~6unPa;X_ef(W4EIPM-VGzT_esxLd#O@u?s6<d
z`K#S>rwj8e&*>iD`P5>&%=2mg=iUEW!S#IJp`FVM-f7OMe)av&I`?kAEr0B5t|v2}
z%RR7@*J3;4bF&9`*yh}BD3&hBg9$#|zVG$MhbH&GRtP?iJF-)}@SW?NYA`cy&g-K)
zu@aN7w8pMazW(~gSF5tUeX&z-gm&T}zOt0rHpcoVTo=B9!F;_jTeD2}=(?phwu<bY
zmUKPnO;lH`H&ih7##Wx)(-N;6y@_gzeZ4W;wruV3bzg66mD{cNSGTNIaQD9c*!joT
z`MvqYQdXK2u8vCZmR(H<$4RJz%<_Bl>c~1UQF>!5-|lOP*R9?}wa32RkS$xb_Ao>S
zER9aoNF7+t2q&UyRvld)RkLd9uh}188rEb@`PZL#S#(DUtDf$`rRp1BOphq3J$ZA*
z1~$=a3l2$zL^N|{2PE=pt#M>MA6ufgck(%Hn-A9es%AL0@@S<5C^mCRhE%YL&O_p!
zSm4AaYP4bkRH*ov_KJ#ZJq;a~*47mp1VqIa9dZhZ=-}cGOjOhY3r=uutqNJ;jzq|4
zJqb{3=duhrvCxT6v}nZy=T>APTdgaLouC9>g&$v=oL_wCGrE2PMj{M{u|OIE`VsCC
zaBsEHIufYZ$5j~8vH$4%`e!lrp4a^^eVttLS0&cobIS{h!{6=sl}{wHSoSEi3#Mo{
z<+x5*%dtt+ahuYKFqWHL3ej-Epmv2)4s66GR!1p;C5%{!TY^hu9ic=DcT<kz1YM3z
ztd83hPSiV1*zYo--f4oj;FBPhof3|-1fS>&E|GMcg-rbXuHaz|(w4@O={5mOxUpoq
zOh6;R5?G1r{vU0FWHl}|DnW=9g^F2!n3HNm4DWSHym#qNZ`vAkU+e2yBtm}buN7C^
zm)dE4J(@l*EHi)VH*CZ;<9)XaHcJ0m9^%@6@$r@xSSR$?{rkE(6Z+U*X5b)JW=v=b
z;BwOBSgJ4u#PDC1JJ08~&CG3{NAx;xs0!{@Nt*8RW>QD2&_-{iGPvL(U!`3ti@c%4
zl83386_HYL)7qvleVCf5;o<Bk#dRsbVCP-6^8F|8<`;dRedjMG^SJN39VcbYcRp4t
zzw@MQ_MN=Rw{wej`{r$b**$aL44lNt*Yp0wE+)E--F9;Q)9pJCm+wYGv(MEoE1v)I
zPP*0indfRJ`+wM9S#>|6X!+jK=>*W%P~kmyS@O*f-uC@ahK2cdt^3=x?!HBnJ@brC
z`l{_bsbW6!iQ42lDU)XVKm{E?R{!4~D0z0l?U%Q|<li^neL(of-!BZd9{d-bs%D5?
zRQ@7d6*5Uo{N1#s-Af<jY3_*T0x{oiSRpI6_3)yyh%0>Ew-N)bb+X!BQ3Sot#hjd}
zZCR|EzV68xyegsE|K8#Iy_0~UV5M41i<g$Hn{saIrJX@m;a<<ZUdCw7)kX+{-Q@K;
z2H~cu_e3x4cB%^Zc+d4RR&lTPlI_t|yO(Z{uKMovKJMjR?Y-4Y%h!K-H}&4$OS{A2
zg147!539;v3L&o9MQa|cR;^gi@_y=ry+V7!o8krTiL3lz<*YksH#>j++3n|_-A@1f
zcJt3~H*0?9?5j1qj}SI~vsv=nO`hL5ZM9~H?Pe#=KfB?4+KqIO@QMO?tut<|H&+-)
zi>56;loK+emuquiq8V6FRa~qt)Ck<TUH{^631_U=^o#B<7Jo6^HD}#|{>$naQni!T
zEm{2{_)F$5o><@cOV3|4{c`<_`IpLHOn-H2C$3u>^h>CA=02x-_scI=&ztvu-afbZ
z<@py%U+tckw?O)(+ODMqC(iBN@MPN|v+D0b)!)skzZX@1fBo&<)o<@!O^Vd`*#GbD
z_dkCTV^H5k(-z(L`7*n+&iG=!+OM-N`)9r|7yb(ue0%RIN5%ZRyKlXV&HcV^TXp#D
zy`p9Lt#_jnzlYsGFsJ;vvoEe|4$;|$ZT<7gtR=czrf$2){RKL3o%YFf-~X;U-?LYo
ztbb}v=8$&1p>fDf(Cn3F(#+)@sq>VkRdz)@ll#H{uJL_!*N)4+AM(r(&fmfL??~_w
zCXqT7A^o1pNg4f1xDL-#vy(X~vdPiZ==ns;{xg*+=ah@(W_~^~$NiZNR4Bx6QIXKp
z$t&i#JXO(BKmQ?^N7KY_VIfy<aK;>`$0Ab8FIco50}FlJyJ9{2{l)Ju$INp7{Br)w
zxLy5q9^Krw9JiY{z=>(L88@4u#Je8tJCflF5&TVGaTDSEN^>2S2zQh)O*HD5;<$uI
zDOEtT*+bIhltK_2Oi0#giHOot0nJtqO&70)fn2>o8B?4Vi%2cK@Lb}TjPv~D7sWia
zeGAVUez9z`I}Q_^yg&U<?3ea0c~$&>1?T#|UuwUMd&Q622k)nc@1Jky5d32Qh547+
zU+TYb{xZE}?*H4bU$SZKbAPM0%d}!TOT5a#%_={Hh5l4>{#)=QPGc_TOCOJPCoADg
zGbfyDDN$QutOysHG}H8AteREYqGSlM>xZ%V-(@@Rn|z=BtnTui{3w0HwbN%@S@(e3
zYVL)XEq>}HRtqn4&h>loWwq7cRet+dU0(m{%WA9InSSxhE^E&9ds*VOJlJaPrI%Cu
zmX}y9MH1RHS?$ddPV3A=ezP`!n2)|&%`;*2pVgr5>#(2mg*oG2wFUQCzRYf@6TXno
z^b0PSu$c2k29w#WhF&!gGor?RyJkcRm)OiE*JTM4H6uiRcB%h+-SofWm3r^KS6R2j
zeuh1qJu#X~cVhHk<7IBA{(R>7Z?pVETEWzAm8VLcJ3WH*CQU(S78)EqD8e2r;{#zB
z%bY1NIDC+Y-FW}??~mC2ltbrK)Qu-RJRre-%);PUqak09?>_cFrQ%nmOPc&H&Hj>q
zU%bxy!?zPWTK`y1i2lD<9<}Ph4z9k{_y{g7jTH+PG&ON?X=%KuZNFFkqP9Kj*ZB`;
z_PCqMu6h~Z+n!|=a(Usb0Mmt8PFF?lGtRnjJ^bsIA9a_*m5)|`p0wc7=kt#aIsUa=
zVbA{c`GS8kSLQb_e|!GggBszweOkt=&a5z6e5wZ<!%?Ziy<kRL=9LtA{WsrF`Bywu
z-}6a0?kDH^KS%QaZaKJJ={}dzuYz|g=Ue><TXM$!JjXd+y(|4Kbt+$!7s_+~^?2d#
zWH0n<;suaUlh@tbuQumv?_=`!Z_k`j=X~Pw-zjJG)@SVx-+F)bt@ojCzpwiC+4$&r
z5&PgjK9y77F0ac{IC@#dKiJ0CEl>Z5@_oG{&Dnbosm47NT3^r^zT=2?%p*~~k6hC$
zTD|u`gg=N^6-4m!y*`*|Yq5sC{p*7baxGN?uN+sfFO+Nf|2q4~Tdmg%re}(mUdp@W
zT>Vn?)uOyx?zJV$%6ImOvF$KC(d(GUQ<OYGx_NT^{@S}O`yAC@sO<F=ZVk-qDN3Fq
zz4(sC(_>qIm2KM>yCgsV`gTny^QeyRLqE-OuUMwD6Ym~8dQg7#z8}Vo!mH*7{B3!q
z9%8@nm(uS~zouSa|7YcT$+>!Go0tEdb#ebP^B>Ih)~D~EoApO8V}IY5*B+QewQu@A
z%R~3~gulA~kL4ua)$hN3@;}eKx9pV5k{`vAOYM^Hr1$*pDV%Tk&iGjEu^s0nzDqs^
z3F_?2UpR~Ts?3UK4yNp@ECbg5zxpd4Mi^D}@yuI{EP{|juvS?uTBVF2%uY`@Ym~B?
z=cbM`7Us(%8~l!xC@m8<oZIoz<;|5e%N4@xrH>Z)$z17dPJ5J__Q*Nyk*v(Go|zT1
zXa1Nlvx0rQUGw^l4^AI!dhqukTDxTxkKOULetD%ut0za#z4Pix*mKEs>+A2H{Cnrs
z^Dz7Ezjj_dzqT&#Yw_y&(FmdZe_3bZdw;I3>^|ST+H%Vr=hHC4ntSKw2~gtgoy`VM
zvVMQ7wkYbXt>&K=lY768-(PQI{`<~5(KqCFuD>8~Q#eNErt}{DOQJrZ7ny>q>}?(R
zFF9|SAh*o*3&-CUt?oP5Hs?<MX@7a@#^9yap}Q`x_OJRXx!&&a)$~2Tdcx;lyg&E<
zIp59UQf+>Fy+7!LzP0-5cW`sa7H_LI<)hz!h+Ga_+2kb}vT8vP>r|~3A&yJAv_b<w
zLU&d_kF-7isxs{S=BjyDKfigoU8F64ahc^?%oJ<Vpb05$D&rmo^f_DdJ+&}7weYcw
z)j0^EB>l_si&T5u;|tj`RlUyZ3pEZdWN8<Y@hW)HZ~0~Uq(ZrNz3E+>mp-!Li`5fM
zFMcsu=9h}szX+?U?%R4Zlw^aKBzKkgOzhLVWaw(O%;UJoOR(VM$7=tY)&4dAKOS!E
z_Vk;ni0on;*~Nuca(@<v+q@CwuReM>?&F4Vn;fnEB0KM`-We&sKUCt%e#O1gJ$LlB
z-(U8g<-2>G$R7J3KklagGBs}c?O%%`uo3d^UkY7t5cw|u-M-)^o|M<5nw{-6F~79D
z?%%7D_b0lFmCkiqs6U$1@%rwJd%Z8g#Pyq#&9CJC)43NAzWPtcss0sMh#8Lpucn90
z53F_jDhXl4eXYFuJam3|?L85B^P|UiPI&G#kGoRu2{y)mSxfsvt;#VLhguiMNIX5H
zA?~)*;8bg1aLtP?(qErBu`TVJ-O6JnYd&-F<g4K;_j!E{U9~=_cIvCuA@NIpX+ebe
zSJbt?Dn}yrd4Ba>l^;|)`PJ-@`)hyYUERK7pX*oMRr!In-LIlU?l1Z!h9cy@>fe%A
zP-5SYd2RY`>&#D@C%o?cS65unSa+`=%h-4NLGCYK+k$6j?vk-nYVSXhxHYT(QPR(v
zCsUnbm+UqWyeWQ1Zjbj@_K<o9ti<2{zus}JS9-Sj`_C7K^0sC(=bp7Yl_sCMxqs75
z_nU7P=X?t^`>ip%b_!VdX}gWggNF?K>=hOV4l~N}eK0t7Sb{&<rst!<Gvj>^jQ4%0
zj_XpdsAy`35)pgO<v)L@ZSyARXnN(3GP$_Zhd)<D96P-I^M@$8dB+bMh1#t;<z5+a
z@^F~kv`-sm*PHv=IbU0~C+z7~t@WXmYfoi|#;yJoHTC+cJ>RbM)+|&1czMtE%VPK3
z_TSH+VDa|L3D=M3_Bww34GPao!B_o*|K40Rzj)QJ%vJW$UyDQjx4fD^qsIP&`@g&I
zPshis2+o}A^*SVK`6a8V*H)G+_A*}uAs*-N?cN%=v{x%PBy+Ksbm*-Wm)xeBt=fVR
zI$y%O>IJh_)$FdcRnM4LY2Mpv9Qv`OpjS&PByeFDS7^wJMNXokt5yWKwt|Jy%jbMl
z@4hY?6?$paq_C-5RxJrVU-tTD-qbCtm&B^R)yfR_-0gKM^wPRXWhg@T0!~V6RXVHY
zuXw^cb<fB8i@&X=U;WzZ_xJV1{j2@%E{hL*%epGI<dxaqt}gw6k4k@|m(+Lryg$6^
zeoEDP!@X~pec$vTd5*->BO2;%mWHP~1O0l6lBNhRo+I(pW#X^BF)yAv>5EtGyl}ep
zp7EX4=`Wv0A_>LmeJNTvof}zIoQb^q=Rzo9e>dDJ<d5K0zu=edA(p<Wznj-ji#f5F
zO7m<-|Nn0#x^MERd}sInc%gdN{mas_7S8<_o2?l3NoZ@Jb!oznv-AGs9sQnPU~u}N
z4*O=AGeuNp=={@3n%7*(_snv}^8}I^a*rPv^1+CW|4-hTd)z&8ezpAmbTu~_p|u?f
zOZ{_SuiKh;<7n@#sMX8eHKVpawzRWde$9?UQ|p~rh(pZleOtGNuHKr#8}azkhLt*p
z#hg4mB%GU!oWqPHrx`GA|Gg(&qBbM@eC40#d*)4F-!DAr_x9TL?@RyIl^b!hUJowN
zX5AhHA+nbon|qk+O43qUqx$C)>TN&n4>Iw-sN=d><Sf-0Ztu3QV*j8Zcj#~hOaCLo
zKUQy+SJ)r@t$EM?V_nzx;63vn{S|pntkD1Zg+HXao@>loT+#Q)vg^6VzQ#w=V1g@s
zxA&*>C%RnLYPAWyX$yMO$9RLekjKUH(|lViPV>iNce+k)IPdzVSnzku5j*jX=UqSj
zj<MMkzM=j}yaAu6M89@{>bgT$PuzcdKUL22v&Ss=OE#09O*H9WQmJxQITIpe^l9e?
z#ZBgHiSj(h_DM7?yup9?!_R`sC*2RbPW<~Jw6ACV0|uFn<^lu0ga6;Z@A`bWATh<{
z+`*kc1kY{W_qmW!?}+OR3A3)i#S*62iR34Fx$pRI@7UG58immPlolXYsjbm_<~Wni
z5hWe5hpG`>sS$nq&%XV9=W?7xT)a(nxXAfCqTd!QZM`mIE6US*mangW@6&h2qA~*B
z?9Y#xu{0;;9(<lG`|qwKPhaWH*4?%F$ptk9ddo`+yx6f5B6gR{@_7!~N%YhjvN&&)
zZ&Uoga(g__Zp)>!gLh#PuVO>qFRBv1x_iaF&>ws5c<zwg{vgcfn268O+!<}R3)$c4
z?cp<98@A+X*OsV>VcM6nT%*={tQO7Oszj2Yru~FZ_m}^1I8{IYQ+{BLM^4;_sSlX4
z%z`)1oOSj}&ayOP)7dL;`kYOJ3eA7GzELtOZRO0RY13v!qA+x8sy=4SX)gY#JZJge
zpF0@DA1OVtzh5DgcT9JO=;Vh!ZVz=u?m5ATbASA8oi)qk_}|xrKG=CQoORyp|2)qW
zURnQq{*#~6>rait!+kF&9m;-pj^|s5^yw?djJ9s{$<+x)XX^4_{3HV+<~W^x7{zzJ
zXveg}TV>WgEzoVxwv2%YZJ1_%y=cQUd;Kjs*EhwSF48@{6_wG<z5JNBjg@KLvYT=-
zKV+|;o2JYqB{T2;Y=;87^;<thY2zYf*I)e@g@w2!6gT^L_UDRRx%FosZ>`*8)_?uk
z$6GdF!5>+i@wyLJtJZ97SwHQ=)tr5^&W3OPnPnD#_Sx#2HKw!Ir+r2e)D6@(ewFIB
z_sojvl3$G$$E964-BUI5du-qPqMGTCcgx&=`a|z{x#hmoABh*57=F0yW{l{Yw>B5z
zfAqZn8PU)h(b96aXru5gA)TW}I_|xz_AzaZnEC(j{LgRliVXF{A43Vb9<i-zf!RV>
ziDie>d*1gt-e7OusNa^L@$Im|6Z_^r-N)|9#~+&hQB<aZxln-bnBs~0pr6om(hkYS
zC+esDRJqd=U7)R&%(d*1na|<3JDAI}Ki}W;dBWWM`G=M-J`c{RHK)$GAC?!JC-__c
zpm@c<B*_n~`}Rk)h>5)uH999Q`MkU5v+J>+N{?$M7VbM?5uY+gpJu{OY;Pak9BV@X
zF=y95`8hGW?cd&%oOA2+%DrI1Z(Z)jKdU>=FV5&%q}jDhW7Z;SGwRDvi?{}h_y(G|
zUL=*V%3<27mHxH+ybpc1e`>iYBzJk1b?EJtxBRYJt-8kAfAZUu9DnS@m2`{Pr|~cE
zDBrG5sqW8tKk=>YroHalzMuFeck`a|?P{g=Q|k^FSo9qTFI3srwz$Bg@8CuYKIH<N
zeSP^4X8#cLJJ4ytss31`=g9U#t$oe!ADPtfFMs^of;s)s{1423jL#jqDbeb`-mU)s
zzYO80S1=Nj^?mlW@usiBdw+#4uDiMd#{73;edw(F4><qu`9IRM>AnA0(x%(~f#n~;
z%O7px4$S|cq-Dr#{88v%&-B37@DI!O{?P?j8H@bu!&~+jU#fh#e|3|%*#B##K_B18
zsIP2V&Gqipqjh??2)TE!9<IYAH0{2xnZCPf=W1-kl-*uCSJRk4*!w+rzW(={cd!1w
zzrQ#%;83jUolx=#*K*zm>lp8tHtc3AxZY6zV4Y5R>Q3#`u{R&dS$_<^b5$bdL~QoX
zY~Av;PuFd|vvu0;Yem<i-bI~;3s${b^?V&Bp}+4|l4QB=<8`Tbw)X6vR(Rd$UDUDI
z(>t;y%XNRVuU`|P73A%jwbDaZbmdZ|tszUMbzKRX7zGp5-LvUY-S+_g2aYx^?H@Vh
zjwb)S-&1rd{{u^1yZT3wdB@&=<e7I={)5cFj+Yg3`Vago1gFkuoLRwHf9&*%L)sOl
z|LZso7K+&Q9s11ubN9SMuQm5zC*F$WEibTcy{&o2?_n9&_TU|J4}pc$Tdg(jI6ma#
zDi7Gvd`MR0-GTykkdR{i<4@*#v?gvp&ENeecl!RfpSI7{w%WO9GLgjR{rg}4kiRQy
zr(19TcDrN!?EUuB_nV7+{yrt?-@KrTcW+JSf3y|+A79TNaX$9zoltDVdzYETi_TaE
zKAWRa>^H?y{nQ-c)N`Fi&uJ)pJT~&(siN>{yEomL`V=KCWj$EO_6{ep>iN37cdwqI
z5@Fm$elz#Z|MhNpcWpiAv?R%C;`2DC?En4KDL~Fv(Z_v%xACF+-g%O7f`1(=T;HrI
zaC~F)-A7#Po}lS}OLpV#`Nam4#f=UgcyTeYyo6<6<3tPPn5AEf)=qan&lO&L$x1hR
zOBUz1lG6Uw)iHC8?^#EEk@!6KMMl5)uX{)L?Gq8*VH_j9S34$qPM^ZMr)Ij_Gp{bY
zYPR-P%*K17uh%~G$hNpN^)z?#mff4~N@T~}%yTnM+j6KU%!T_k=kzD{9T)!Ccj@WT
z?^E^o*<Muds#`w$D9`2@iDJe*AD0>4)3K4xo3QWri|U?zmw(AEeqUGn{pD`|`#&w!
zW9RnF{T>+q=1~7O(fZpZAs@H<x{J=Y+_K@q<^Hc<l9TnWUhePRZBpg-VgHwcZF1-I
z_LY5p_o!HjPk*2C(ZZwUODxv?=o1lVoqzfA)T&*V=KT7y%_TqlRc_}zy~~$VtF$g(
zX0F;5=HL8f(|);c*AJ`M#)!XJchyN(EbHPD*U8#!JCi2Nw-b5e+Pn734JldSe}+|+
zKMG28jxAKW^UM6-j!ye$mp-fgo3Xld{*K;fo!o|P`g+ehH%he6mwvwI!(IP9f`zr)
zclL<g?mqf0C}c<bo*f^4uWbIiWuCkH?{}>aZ&$6p7~Oj>>r2?;?c4vUt*aJ$yeoa-
z^YS&xB@s(=y>8d#+F$s_3?gK6*)yysoceg^HILrM8TD%qp4+dl&b4;=jO#+5ql9FI
zYYyI-mhn~i)Vl>aey>+X@$3FG%gcC}zvJ<t<Dcs1>Ye%RmHfT-(&2O0?q8`&{b>4k
zxp>sOoUaqYzLkfsFZjw8zW&4I+P@|7_LVKc>kZ#$AC|rN`bTxvhUhQT6Z5|aT7IdR
z(fQ9S&h77)y)Uj9h`ao$Z?}k1-@R`8CusxIoF2c+r{7lXRDaWBm(|wa{yzKXzV~rU
z*K_W0<G=p#=aCK0|D_l4x8Gc`Tl(JKu1CTJz3=1RpOP*pju79=x;@Eg8QX8S<*mkx
zzwdna@59{}%oPIs4?k|W6>-(EGjd&VX!Gi8?()3mv%g;{=(hYi`(x<Cvc);(hpOF9
ztWUFTe`aCwylYO}w%4h<CF8TF{ru{CrEF59UnuLcpZ97P{mq!cYqx%V<*!-k$L6k!
zS#*Aj-Q|nYf2)&jEWIkG{bFO29GG}qo3W?z*zEK@XD?PCJ{q>^nAf$4lTzA|&Xc8f
zsh?STF-EHSp<9-5(CmrZW?ipYoZ5RKr={2Jg{jke!K&U1+4EAL{oE8-)pJR>^w;u|
z<(1)5D=&M@b$ewJw0xqG+pQei;@)q47w>U?Gl)8uvGdTY@^9CcZ$Ddgd(HAW^L|}<
z@%rdbHXqYtCa3PbJyjhOx#Q6F{zrxTeuNtCn)~a`l~wMm<u<=Fdz}X&-W{@#KOgbG
z-u&|M*w5NK=kz~ab|_!R`|Hic=jB$v*w|%u{mYJJ%LR7l*4x_K-iw`4c`mA0>(JI)
z{#T!yJihn#b@h)2cJHc8I#$=oYZvrp_#Ro3Fk`j7!C~LD9Vf5eURyl*#n;TQrp6~`
zI^I`*ce2{x{l>Ft8zN61o&UryUO@X#j@Gi1J$rk$o{2aeGq<qxSj5jaS!SE>_FPZg
z)7P}^`_J!(iyjM}tGe^OE|tAo^i%0`uI=o~i;RzaxSHTmlDEUiia)>bX-#poz&)W@
z2|L-?mZRSmJ$<OZXzRl(8GEy(Y|RwCpZeZd)t~#Y_F{~M_N{)|Pwx(Y*uK%>t|q5-
z^6qMxhN5_W&h1CrlI&%=4i}`{5Vt<%SLb7)U#8P{n8Wn@?6SMUhr^S;-SoG6`Qp!m
z;*H!*n;yNM&=>YHJ}9vtL{7GP8*@JDHqV*m|C$Q6hJJ~3ogez9L+|5`J9TlZXRY0K
z%B|n`#gm76fp^sY7u~tv|NYR}un+5Q?$7@A{#e_}4eqU(o9|>zi#}VFeJ1l9Pw>II
zqk*$uZoj)CyJwbR*0B}x5~a<7ligyIudD?Trf#PtbGt8YlgR9z2qFT@BvNMwZj(%%
zEogMGLODjPR&mcsjoXXYx9Pk77xL=~OJ29jfImNR->aP#HF~?|RKNOLy*0<b&AxY^
z?72>}WZkF>U8N7tFM40$vr|uYpWNLCugyvp81GQKC2A-6_S;vtFD=*IjOD5)mU`W2
zIlJ#()7pnWFWOC2N^kvpLvWtcZkI2$_P-hA+t$0<f0F1*U<o{OsCCZA$2ao!>G8hr
zJvx_@?bog|mHTaSdftl0N&c4kc1(eXZ~qxfWs7u{=RE@5h8xefhaYeIeN%ixeL>`#
z({lTpm=EP2<vZe7SGS>FzRCG8v&Gwn8xQyW)9T~dFZ4U=hpd;q^UK#7wX#dsKi+lu
z=oj;i>vuns{*hMU|0Y__|3K%%H8(uv{Eum#(@{SA`1U?K(>*(WtT|r(W}*L0XZ`KW
z^(Wu`UV3B3p`VY}KHvz9()W7pnrU0V=KfLnwR<j}llByhJ}>Qg&m(B(+*5C_<UXHV
zdL?&ho_6VNjakp8mx|;(pIK_Nxi2eL<d(}qUy)lWM`y38m^?La)2S(;%hnp@PR(3>
zCMt5h=+>y#TM~0L*85HKfBodrt_K2kr$2_P*O$(!Ts+f!)=w?t^Uni)FP`;HyAyF{
zvD)UmN3->3Rc@YXKD%=7O+C}wWyZN?hj|~}NSpRGEi!-F*GFandu|<FeYa<F+8mR|
zSC86M-|o3@_IUf*ic-7tXSUf{T<Hm$agob7D$DI{+LtK9)tA$@9Ll+rHrZ@;?U}U2
zH*-v8e=VtL?|WO4qknCMitP0ncipVkEqpA+cPDO5aOP&8*{Qd5PM^`sEz8`z+IV+q
z+V)d#!e-vp+FU(-o^INX8$6fGwxy?5)}?VjeWj!`@#*Qa3&K<*a@(`N+z`o|uyn3p
z$M5I%>7lcAOYZx9m$_SfYtQj;-9J~J#eC6u8h?PNrsinVhgJSrUxd<oo<0=*`Aezq
zeAna6=cLbDJ>2IoQF4y)<lAwk%lH2%Hx&y=P;?bb<or7A_S~$)=8INe**Dj)_OQ(T
z0Q*f@uG^(1OkEyn7^9kYHtAYUUG|xL--3pT?~E_$x_SK%EsaVrkIs;fZc(k<X2a8a
zDSS<Ht=kLZLp;hMD=kXhJS9{Ur_BEs%EQN@E>YOD=AMR_=0=asqis#!Os2Q~eBLLM
zY<B#@C*3H$Wgg3|rzrdhD6tp0%dh#Dx4Jg&G;7$73ti$1jWtBipMA75(#Bjo>+RaG
z&nu?x$yDW!I@uf(e!R5wSDZ|2#_^bzqYsV4zSv#A8X35IYRqT;thaBEMp?VBt^J%2
z(iFGVd+pxT=~32=)#`78vX8IWTDtqnt<P6)-HOe6d#64iTU{jkt?`w;OCz$iyS8p~
zTDvwNTl>l_u2b_pej01kvpqc@kiC56*6S;`ie}}q^6CeHWdki^L;S?2)`x<57cFB;
z{KCP^z+da4e!t(eY|^RiK|jN^?rRmLuiUyn1S}_M5(zdv<<i-#+}5b*h1dSg=9s_m
zT3AQXKU<;m`gY#?gSM;>&i)QY;j6alv)K#po!@mYbkX<pi?bD~gkAEtzF4alvhk-;
zVc`ysCuUuDvL?P3*tyzuo!gTv7Z~wQc&AigweyuMm$hzJvRvNYcX=BcxLR<lRA6-s
zL@-Wx>vf1^?y?oSq4nE3Z%8Xm6Wb^yxLR<n)Wua$B6QK$Ss7P5t{GjdirJFolD#g&
zv?FY5Mrb#fxc1%UwcW*C{#)J&uQhkc-UtzoRf@X0C{#B}y!+bGMW(@9R=KW@+VW0h
ztu=^V<@$R1qOBfVtXx*RZixaBa)N8wF0K+=`|8k5aEan+A-UXQd#_1*{_kH`KJY7<
zdM&vpvhvSs`TcrU+Re?b&nquh1}<F@KH020Xsw2=zSsF~pY>;I0@KV+o>3Eh>>GG$
zg~a+*-jWkv1)0W$n#PH4Om|J6IOmm6XOv)s$HOIeJWlqCOtpUUFH0-!>Hn;s`)AGK
z)(rFP^zsUsmHJPV`}vdaZyqSfMIKdNU9qIi{$J7)-ai|?*6dearkiw2Y1--DPwN6-
z^#rNUTkrmPeG<<d&*>L3%lnxFmibM+eYNdEj>fmc{|<&{-uM5UHp~3-uUxC`7b{uk
zhF_>;ohzOBdmE3(rA-Gb_g;QC`M$b)i@e3}^BQyXj|aUd<g)c!`14sMw`kdn>&4GP
zQ{zIz?#J4wpD|c2`OM_7?7^lF)1&mR6fG3}mR-3%tk~Xi=leT?*K2E5T~J!>mwzbi
zZ!ULyLF%EYoUh}azY>qNy}N6BmSJr7%X1es!}E*1PIh|R-zz@Ev1X0Qo3g81;cGWI
zFMD!m+lSontvgqp4W0Yz^!(=6F*l!|vI@U;^Wfx~jeNEzJ{?iZDHY$u{C?#V`CDtf
z52>w<I`X~p<C<r?Ok<|spB<-fGg<4u&Z<4Xzg=^lFZb)qg>W1GJ;{H{zg&y8SjiF-
z93-*-@DJIe;k#s?);*5+owc}j>&69M+v9e9{j@GF>dU3Y)8+Q=Sv`GCT-r<3{r4iP
zX1Y#YGe7UpxzBfgSN`Qn|0nc2?BgB%U7q%5Ur#SRs`h5i(`m7Oy0+KuEO{EGdw=`0
zvr+4>R^<w8z4Yh()4pQ;nOjzWeevAZ_W0qo2j|Uy^GH+jT5!ixt-b3mzqSfrd-bt)
zmVbQU@9-}_ymbEm-0*W+_m)51)1tS`S(^I$c)9LRuWhU2x6E+;f3f6$XZ58&*)P6b
zsM~Bdd+W^=XOBIq4ZY?Odn<M8X|XW7+Zvq8IyY6Xhea1I72D~Qca(eo+FffU?r!fj
zTK3`hj+)ogxwbAi9vd1q_eRUwRloY0%#DtndcDEzwRYG3*HJ6Ky0-3D=DAcg_uBgC
zhg_xmJoWQud^{6d^zv&`+Mj7|Kf5N`m;b+ZrhfHx^DkA~@1=<>+H>tjHh22{+)vr=
zI~-Q`SgyIMwAi(+deRi{kH5`+&fe_*<+1Hog$<YAg{02XUjFfR{fFE29nZ~-PrckM
z|E=Qr)I`5__lFW6t;CK${87+uWf<{QK5b3^`3(1qza?JVgG3Kyf3^Dj-b3I>?A_O|
z-mZIBTDo5QckIpgr~W;<o4Z|Wr{<3&6)C;GBLPi!1G?@SGE^({HENjG&9uI8@S*Uk
z`)*hB7r)wmk;AyxAei+{DC6#s1A3wxoMW@YUz$lRoj&P&z^9pqHrIbX|L5%UH~U^?
z#OG{~kx2@5-YCyE)x7<ohs@ID$rdjoWZDJymDg;TZZ&IvdEVt}H#uulmg5mWrL^N0
zFXJn#l6fXl$#7q;qnT@e>y3Zq-@pG)%A4LIof-P<mEsiXuD>7Z-*fKbPM-JT)x?my
z&i8K~de6;Q;Abgt{Kv_S7JSF0mH%5#XO7vp^hb67)Vf`l{KLiEYYueqv+Vwz`99v&
zLcX_ubwJ&esM;LkQ&Nl9-2BS3dj6l9TTLA|bGg5DPW_!#@MFo(@3ZRH|NNfyeOB4}
z$e-I{l_qVR)_d)uw$jh*F8@4T{;4Q6yQuu%{Uc?=_IdyQm~WiBe0gQntyRnIY`?zD
z+&yobSn_UX|I=T${CPZ&OE4n;pKR3rwO?;XJ?|>7+g-Kmtku2Cht0Zp3vbDH{VmYo
zJ3R5-?(%!Ad!jEa39VoIEBk7ESpDj+*B9((`)m5arTn4gGWH|?$_pF{stPiHtbVY3
z2aoWf<xSEr>xAnXJ7=_%{HWN#n0q6r;{3MX&EG%R*&S$q_;;f7;aw*ZEo9sutS(qD
z@l&er&_xTj<Bu$Q4t)G!wXZS%QM3i4`XiM&J;4S-_m8do!MCsb@(0^FeeWOh%;~H@
z#Q)*E1$TO~$T1dY<@~mMmwR0C{op}OB^|!!ZqpJprzP&>Do!xaSi}2`aXRboB#yR6
z0-&b8Mc)CK-nx#97VOU-)x@-TA6D1+$8vQ3f*(sBy!x>Hpy>{=>kq5$yih5G_@KF&
zeGa?a5$6ht{s)0J?e<Al^Nw>zv^`yMkn2j4>Z=W0?`|})t#MPH<k7C*{rU8xKSdv9
z&8M@SdwbCA$%TH|hdvwUYko66TDR=Rd7fkJst4~K%+omfPNKn9;JCw-g)-HTS`s`8
zl=OJ>7ajI3+0n^&{ldc{s~Erb(=Q7wW%c;;E*$PnWYyKm2z2b`iV9%~Zra<latH6_
z0_%4N=I-Dwe=HZm9?z4eD0?p>)jaBEZ`ijDQ+>B@dKqSR_tdiJn_m)kOTOn&kGku!
zdUi&s@Y=kjC)X2`pO{xL?LR!Zg3JH$_X@W2kN7M2>W`Gz^oxH`-_zlB=77(h7W>Dk
zArGf+Fs#~A`$yvY6=j>gBa#n&FB;$7`Ilkw-|C*~Pp1zTUfd`l-lzRf_Q$J7_Z!#u
z#lFpZDOK)YdN6Ne=)ngO&L5seEdHD}`PAGptGf&4ZDVaecFVTx$^FoCkKIZ&q@rKG
z+S2i4|Ec|pQZhF9x}0{|;sYgK1gpuVDn*6;ST9qZ6mUZ)cvh;{W}nPynrDrcMlLfs
zJtb}CC5YgQ_sYM1*DU+KZlB2?$>o1~g6qWo$fvI|+#!=}$S3;4^4Mdpn9kJ(iZX{o
z!was8#+0&##~us~FSwE^Q!3>?_gLWa!Yi3FqR&@YxF5CDIu}^j*Hs)cXYnJD(4X{x
z?I#Y3S>8}$kA9NSEt4~`S+{6|E8jM-;Gx>XJMw45yqVg)w`gOy-nUan<96QA7O#Gq
zv>sXTPx|w?lN-Z}-b|hUaqnXJ$M2r+_-*;Fu5b7J$M2q7{AN41uW@t!gE!I^zu8Q!
zSEi|7eY0fN+>p(av&w?b`mMU@Ndv)?C-|EcCxVl|`;Ylm_9x5_YgHeWK|!ul_bxgW
z7nr(!#isBO*Q}<BBet<i#I!%3pIC6rmQ8s=z1eY(e(U)c3pe-JMZ3+9J@KOZ?%9|w
zL!+AMXZpfK;vQFSdb2O4Y`)HJ{qlD^^vw>+{(e(XmlL-k{f(|@!qUyBwU&3bC9Lpy
zKkenl8&c^r=ib~mJI8**hnLlN_w5ffog+V`#h$CoS+ndo!<$A6wnaQoZwObns-Jow
zCV5AxIXb1Fn<tOc@4+(Rk28%dc3Aw-)H~erVD`bQMlYpex?dO6?mNfs&SL&hd`5@o
z452#x8C|yxc(*_1yVJS5!2I38y$?PAAI*Mg|I}FXaC%c@#It|tmRTE^wnlVXt#PuI
z+91{Ip(Hy;ILASH8_RLF=&Q%=a-8}8-Vl@#+0*|0BcmM;U(x@7*Z&q?`|G^+cYD-#
z{;luiv+mko*;T)y6ef}Tr1;_GiF*w>ekT}wJ1W3)v`(V!eEWHqeG+!^H&JI3e<WHc
z8%aHX5c7xQow?HU$4ookcf_=KH*Hq3=R4Q?r@El_iG9<1*E*p&B0EiXC>R;e5uMpG
zyO2BYXo}ClkUMReJ7mir<kjAlU)N>R!2VG{?wE3gNdHb|dn+4#D<<`p*Nc^H>#jeR
zJlJ~CxLJ9T{ec%BoFXSpQ+@ej#)CgEo*rCyaic^#*L`g}{R20DS)aSM{8(D+`J>NT
z(~kx{4ElZJ!40<MKg!C5=e|3+tLfp!yx)(H8Hh`YO{v*pdxLlB4O!+5?2jZmjHV>}
zzxf)t*EX*Y4e_j;q!?<n#H%gj<OD5ABhNM;WPXsU^Qsh&smO}<rksc~O3|MgpeKAP
z)oG`X#&pi7MhE}3pvIxRF2_6m*QtjiZW@G{^-SeW1~bhn&YYJ!4w?z+zW>nErgizp
zYMbWtkL)(jRld3V9RFOwSpVs-xFOP%m{#23*FU&d9oF2G=VfsFda;4{=MQZ6j@0NJ
zaME#N>fXrWz46SB(}B&RD~@_yNfdo`vEgcl%Ve|c317b6mYcm%OgDo!p8wiI**)D~
zJrdg|pR2Brmw#|Lq2Y|IcJc93cQzW8uffWkb4FIZ`1r{?g+}EV%+q&18kO%kBdcG0
z9FsX$p;-OI9ZsY2rZaODP!zcTI~$|V>8Dw@?9lbp_kx?gbKLy>_C#u;a|+M%_{Sfk
zV%lF9GUpx9H@LV*?P1!Trf5USU<1+ZiBfsTWp`};5Od<=#A=&=Lf;?R-I4d3_%%4?
zuSlf5>otEEQ}xrTY)EJsa&I<dFE-@Qe{gogS-U%F@_C#2x8H2P{pN7)#1^hkFV|mr
z*|Ek!H>^!o>x_eF+5#?P?^ekbht32ge(UP{w<11ur#A?7u2w5wsrGy|2&u17Q(vui
z{m8SH&B?`v?-$RzG5g`_Z+A^M{(QLTM$?D5(6m)tn{BT>liL?N+poH0`rd8Uf97gU
z{@-$1^Pxwib<nlGDO;6O-=Z<MotwJ0IQ4bRO{;JSGj8jd)zd1k8m*6d7J7Qo(M=f}
zb5=~@ow{jZkXgv7Hm{ojn$lXS&P$O5o4nTDKk!w0M;-I^{0F~yWA-bCN!v-U4pzP^
zdF<8U`A4J<y}FULI-BddRp6Fe%a_+|(M2n6{w5yEa*IBjv05_Mbn)7>EmwQOs)e%r
zo!)w`u;tvUzVMsMm3b|<CI=u3IyP?BEHGm|x9q@85sPSiD#6-WuIeqlwUmIF5S3fq
z1FJ=F5mUg<2$5fkaML1#ND;N}Ln(nXbhswFCT=qRpMCDnddtuIpUM1ZfBwS@37vZM
z`{uf`Y4LA$_TP%E+q(JBs|SleoK)bM-^0?;;@|bc^<4YbMZadOxF@pu{|n{7+NhB8
zC1Ew8DeHxA#<S19^OCoCx%rv7_YBmhCuZF<D6cv^=S17i%hJ#O<<0n;KErx%;<sgj
zWrxhH6KBueaMtfentIM=;cYiL@5Vkdkm*w{a5A`a_g;Z@;^Mg*F8bZbP|w*SY<7!N
z`fW>Z*&#QW@Qb|nA?4M}cipzWdN*$M?!95<)ob5<i@N)E>#p0`rQ5H+%3J@{e&uhz
z4J+1_z6~|o>m|%s=)mG~W#Nhr4zVP0(d;!Pj)EKs%2`t+vU}9Ze5c%q7O2+0VVdOH
ztZ+j>M<a=m``n%K^^&&preselK4<&?z0K?BH&;)G-z!gH+pyOOhOQ-4J0JYk*7TN_
z^|mzEHuI3*;mNO?KVD^jyqf=5xO~rgJBj(sc+k%_lQy^eO{nNsbN<e6jITd89(&@L
z{Aqz<<%JnG89s6*YWz}@*?UhmBMW=UnIv#PP(-{Sezaw&@fKCKTSCmaosHX$I7BC%
z@HTiGo+Y2r&A;U+`>jXJxgQtyya?)3QGBWJQt74QOJzv~NhL|enJ4CNbP9RdDAILB
zm~#!Ijt)B&(Y<<`J^w2z{(t=N@A1RG#}EJRZ-4IJjD&v6iiL6OtTBs-(5?7yvtdKj
zhkum`iLwU|&1!BnO^-czrb>WS$x%+pQEo<r%!~+ggN=C!Np}TAKSeM-%wb-6(ugy8
z_r&*(R;&6Fj$etsS-52KE7v#aTY0sWd~a}X*zWb<me!K(uN?1m&G>li)zv%RdpoO@
ze=7W3Y5cP;iAU_Z#KjcuHD6TrH>@b^d~widd-Ktk2aG~H^mZl`&Ci}GbA4a_VZl_d
zpS3PC*fr``)UoKPDr&tz2|h{XnF=$NX0H6sIA4rmzL<hlsv>UG7%N-*y|=Lbqj56p
z0VmwZk@WyR)Ox@X3F)*RAc)kiH~6k&oE^h#wv#QVi1)@5sSPJh6DDUL;En_#uE+%W
z-Hn`|8aY25)T(;yc1qy=YQfi=3%FA|zTOphy}EMgE4lSd%#|yzJzgIY`e*B^hW&xB
zKV^k#*01J!q%~#r)vYSBS8YAR@48(Ie(m{dmDWjzPzA|VrK-xID^u3+P4WrITg7JX
z$aAh~dEJ5a6Wn6{{ce_haB$k8X5CiyXfFP3B62yJI@a>j=JKCD*Pi<P@TSlI=l}21
z{b_8dek5K@qnUO3!KTv*2U9mZFp7Ap1VRr|Bfw~zSFQgax0YxBPvsxnly`8^rvyvy
zpOr!EAK$92d6s>sz<73oxN$;ZwP*3Zex66|9s2e@ITy>s?U}xnPucOYScT=U(+}5(
z^QuB8^o6<SdG9ei#v3tD`Qr2KfmQ7l2kto~<gfc9m)Ty}pK)J5w_)a{tI`+i*3B^H
zE<Kzu^>>HnDZj@r_k5VS|7RM9lzUUb=I5Q_d8Q1;C5`_|j?~N&($5GN^}6k_`<vr#
zxsLpgl^z;tJDp`dh-loKzqWJRSA+R~uKRm?IB&^lS^imtWA{d<xys*E>#r@JZ`HnB
zsD91Yjw?cf6Ba%ZnOEobn)#Je!p$NZ(MOu|W;}RlI?qp#dqJZDR@5WHVj{p|B5<Ty
zIQyP_M3O;}&9^Q56^{)*6q?nv?vp5A|I5;g+c25azD3xM$NN;+dzPlUj?!gGf2$3T
zF>X0@YJ;C}lB52FU0;*}lf;`hKHIj(J}Psc{Gx?F>N+Y)xBZC}u=A>&t*_ww)9Dh=
zXPaZZSDL4$d7bUt{=|REjhhUQI^_Ch92Zxg?<F$h<wTqPGfuJ?-#N;o{?p-$T+6q_
z6Ne`*fAma$#d=2bsf@;Zg}zr!eX&?PNv-O{+T075*mQX>d@_uh^4R6wfuM)-0()0K
z^-t~m%zm9oO#3kJ%!8}+yFL~b-U`3KoqTGZT=KWD`;+U>3)<Q&SXi~_tLWF_2W$C{
z%W&-Fcb010x?HJgPI!32x1u$l4fF0xCGU4w|5)NW$K!o1Z+eYiwNK&FwQm=;?-vu_
zFss|*qj$t_(Vhj7uBKnMn|u9UseSbO*VFf}&hMEO62xuGyFn@T%Nm#SSzk;J#%NVu
zfAQ1p-+$3d^F);Ix>mW~Ik4a^92tCCE)jW>{SX)XL`55(N{df|4`fe9oY(m3Wykk@
zSHq8ocFYAy;s%TNTio`3C4VGm=d0Bh^0gJNU%zGj?U>}3V^Y5!`mihUPTKD&Uup3v
zB&ogh^tGk^U!{`PF8w2(q?cD~UnS$%pY&yeGnnAF-(q%rj_RXl`YZ1z+?)O)Qm5)^
z*ZU3EYgTzK{2Ma4slR3W4&ONsIZq|_w|$V<`oJ*j0RNlzbD8Jt<=0wxoht0x`!U#l
z;p|7V`zpBdYE5dQIIq?68{Z4J7yDHp{I~1kd4a{RlT+Ge)vU4iie)T`0ih$&jnl5a
z-<K%3_N&Wl>m5&p=7eZoE0Le^pV6&yg<kW&Ya-ig9BcOH)vw7m2;vH}5vqG<cJ2pX
z-VTXdnq^G&CH%kluea0QpRV?-u6gJEgm>n*=1$%Fdv0dWA%iaVXXeK>LM2>V1E0KC
zxqO^s`vx{P+fJoe50fCCASq6@`O3Y{QvD{4EXg6pJ+D^&y?0UW)_du<jI-mrC*SIt
zY{g(}$!YtN!}jGN^A-D#?y7GyFS&Y#qh9BHh5uZB*^ljgKfHAtSAR7uTKetXjBoE|
zSm;+S|Nhk9Y>}(lv$(~%sf%+{n|I1DUb;Qu*Y~IU_0B#Hbr*asuej~Li%xyZjoRR%
z@ViHAkFS<nyhTR!>7?CO0*jBW?y68d_n5aT{P4betIm5`z0x}JclxA>zbvEXIiD_D
zly8=$zvzjQ7mw@x<9|$_RX5Mw8ye5p7U1dd{Kaag)!GNRw6^dx<sM({Wzfx~@x(GL
z>{z^FeRJgMg|f5eU7Zoi`sJgHw%+6~6Qz?x-88QEg!IbpX(&6wygfv)EAW(I7uVty
zJO4<heY&%&Wl_0h)#?k;z4N|r$zGv9e{vSzwF2qAuNRdwR)rUB2-)~6>&5Npj5e-9
z-?eq!TkjmpC^d{?bXz@z=gQ8caJN@BCuhuH=CnO<B7ftu`A<9+rAd5Ly%u;Pv}NIS
z?=!I)GasavZ=HO{sZ>ta%W!^8(9ev(F2kq6r;bZJ*s*_~{+)f_=3V%${9XB0SGD8q
z{yXg7e(2w0uDKO&Qy=kb|Ia%ckK0@12Y%lD+{Z^%J4qojxpv!;fK7)pzP)(dup?61
z-g?nGzE^VspEo_PT2bseSNczv%FP6}>ML3kt{<K&;T=}7Da?LaR#KhynS}nCPd3T~
z#<4&3(<pbWw4IVHbEoM})V!N<x1HvB%AIC<owQ=F_RR%L)F$Z`9{Htn;gjC6k|Vz)
zt{uPddfgI-y~2}>PsLtXCU+|4<7Vk^d0l~A8^bEweO9$@y(K97R-@>>)0+5uij!Y0
zI>%Z%>mJYVtxlWT-rY<%yG`OcU-ic0Z><y7-TJgIAfEjz*A?r<_gGWE2E6a8GJnIr
z`@r3Z<QVBG*IYJ*#vhdmv6y>%67#!FX5Zd)n3Y~|YphaNN#C-v+e|OxahF+Mhu$Y!
z$?oE<s$miBHA(s#`Lx#@=6G!&mj1dYUA(YKe<Pdrnu8wuL=PRk_jb$kHIaL3s$$+m
zUtS!uJIn3Nzjb~Gvg9BCsaq<(;oGqzPu9O;tJ3VeC;yT?>$TwN`ssZMCjM`J<-g*r
z+C5q7|EhHfQ=Wb5`)B*BX|{#(yN~%Vdpda4>O=Ee!pqs$@8kEEV(Wj*u>P9po?S9=
zZ-qa+V*g+l_#um{!nFRwtKT11Bz|z?`;ZlTaP{ejSM3<r*D;(IVO_thA^h|7H6c?i
zCbn5j{ADrm*CgF}*(+@em6k<J756(Tx;)6g$fZ(tOYnkT;Yr5xUN4%<ee0^Tb@-Oz
z=4%oSdnKC7SsGJkHN-|S6-F`U?qUf2!Kf|6{>Z3Vl!s|`mIud2_WVx@Yd;1}I=4jq
zqf)I${FFK_8xe=3lh>CB|7^=q>QtHh=8%8&NykkcGRI!C7fp##J?$YU@GUIJYwgLz
zEdRHjmZeL0PYT~^EnC`Bws^0`;=eByR{6JI(8%(6{9)6Ak0y;#mnN17Ze8g8;nVW_
zkFPfA9oBAGw_G~IyK2U~<&Hil_hgzsJ3Z@Sz_aszGUdfiG-bqJo5p(CKhpYIA76rO
zM7q_4($v^YiPs0KE)`sB|GGFZhe6t*eUoAiM{jDN&a7h_7v^Zlo_iF*)SG@XN5nTR
z`9_G<EZ_9aFG9>_>n@1j?3!aZ_juSw-4e#z$NDaZzERojRld=ttbJa}_Z!YtGpBA=
z|04cvO6bMxH=@<f`39!yU(C|yTuxed+&2TXL*|R%_D5k`nr;_Z|C)0BVQGeF`J;1R
zRLdWJeUbg{*z3z#?@mewndYC7Ha@j?hk5dy>E@|I-=FKwkjp>GJd-j1Xtbg7y|(R%
z$82V>8w=l?TAsXYkNErJSs(t{Ok#ZhLD1*m<ewSO&K&<(cxJBu1L26;eGU34ayFCG
zjr{k`%}?k3skg7&^ilPXz-u$+Ki+RpUpL!6<=~!4t0Oy>D9_wfH)-mVb4p951$moE
z&2pN^vvU7C$wSJ=)s73VUU>52VNa);iY%r`COyCEwrzn8{{^;2{VAKPw^7|M;l11i
zo%oE9=u5p{j!DR#WDxRe%ep<Y;i9!bdXlG<!}nPe#2oJ4UDzyAWj?{hfm!v-#Vw|;
zXIA>Y64HLuSvkwe-d@pm!CIbK)*UXBERN)g-CDc4iRBB|+cgS@UF^MI>}D+3r(39a
z?ZVHrC90XOw<ZQKonzL!(aOWdeql@N^uvCyCPXcf+o;&v!T(XYaYOI74L$xFg~~5Y
z<zbALSSK6#&)11{qw=~0!(Pwg8$r^S8oww#;96qGshGH7QH7DxC2Q45X9bHoC#-Hc
zBT}?|g1ge;$H6xv6^mQ<=%s9&km_XD&*R^jc6HMeACFo^-_|Wcm-LK^T!g|oUTQ5_
zKH;9zFHT7bQF-$z?A$j!PrM7{>{PChS7hgsR7_bjfzxT(F_m`rPbP}$+&_CKbhpGP
zK2hTlJ6F!NGya6~M^0t;55Z3JgpI;a)F|e2MGDQAkUW37rAF&XcBB`})RU9eO*rNh
z#gVDKWbp*O&J!y9ic_7;M2#Fym^qbs`1E;AaB6v@n(|*|r;X1E3B|{)K4L{Z6NG~b
zo?S{&Oy~GH7i6K@lUY-Cv`A!5o)F!7NB4=NVn1i4TB=LRq!PyyN{XjjYIMD2YZY^Y
z+}xJD*un8qaY@jLWln4yH`P*8g1Y?J6`es=)GHot>G3>zs`L@mj+Qw(Pk3esx5r*<
zas4xQ{)|5-Z|t8CeB;pZrC-#S9L`^I(OtFuyg`HS|GD!uY;LSy`g8sSpEvUoRepA6
z)h^fh`oG2GxA3KR=9j+spO8w5jd}8gS#$mO!$yz$y<~sbX;%dIy8X%aH@mgm-dMji
z{of9gpB*J_-}xPTBzfM?ad4Z+nZh;UEK|ZvQwK}y#sa?y#Rtq>m$cZZO?7cCU8z~n
zrChqSHzQce<Mu^?vwMSzbMuy;6}`1bb4&a=W|Q+i3oFx#x11L@vD|)nN^x%Wz1Zk^
z%g%~td@i0Pvm#`2_Uom*w`}4kzy6U`v^Vro*vf;YXE!GX=ic)&?oU*I`<W*<Ztcn5
zyQbUHYGNnPewlUZY|_@BlDYF%pWXU-R%nu)^AZoM_y`A<x$G<Z=ju((ZP+(qr`E(D
z>U(V8AFw|4?V!#K)+y(^Zg$9Joc4XX?GB5TSE03toqMwNfu~1i*e&$`@PjEi@Yk$;
zYCWq~&MH`TxTNDq&kVtfiO<f=d0~{D=KE!aEVFmwxid2*49cJR@l?8>$!Xb`l~n%n
z)25Y@Kbvk{yp^I<y8K;=(S%nHpF}Ub<S^=0yX0cjT;~>i(#NX#oWkbDF!9Nj4omKy
zEZ3RZt8)8BM#5rQo!+Gr=jPbVb|~9;GRNrV;bogvrs&T;{%m4xj$*XOH)j8TPJ9Kz
zZ#FW$I5*vfc^bFc`HfQkNhha$*4rc9|IqoTf!&<tA12nA$e%v`IkU!U{=xK5>woI}
zYp&tSk&I?jzdE!0m}lz;fkPD{{c3ZLf3jG_{ARk(mkKR^)n7Ft@~n0SZT$z&HL`UI
zUU)D)f!+IO&>S7{eUIhS-)P)t%0BpH_r>J6Gu-8ur#R+E6kn4uWz=Cvmp#)|cx`Tk
z`kd18In8=ew;$C^UBmg=`Te#v%CC<_Z91o6{^RrF4JFh1BA;*Cd4bt2#qXKM)rlgL
zCO^@+IyGiV)uh!4@29+HU9Fh(b({Q}eSH_^RP1b3*&OG~-OeASVYedr(|^N-rV~@P
zd8n43jD68+vwmud?oAI<)##PeQq*sH^BHN^*y}TQnM~GE@lHsI_4L0qokzv_q=(To
zAC=&fK1S2C7WB4E{>S7!;kSXp3x^FCuLWgCFfiwBeVYBlYF}smv*SMs>zd|2S^gul
zuI>Ms^Pgnmj>&&KzGsg8L(xB)^~dIa7Jp>B?rM#xTg>U}NxITM-R@X_u=%EVUh(9M
zzkgq>zL=$)_5D+AjlKN={!h+-49-7u{}H%l_u=lJv2lmIf7;f~w|B6w{9;<e>lT0f
zdg2$~8ezBlXUvnoB-^kro}S42=|%4W)%yG^_iwgaY`*=%eaqjv^k?=rR@Yp!Tr}U<
zaOvL6_+OfD-G5(*sOs!Z5x!w!HedhY>z`papI>;lMO?2!L)NS01#1=Kt|_O27J5Iv
zS@E;_OhP-`AwJ%pO8Yp>6y`55ynkrBf{;O!XWS(HlPRA>lMaL!_4=qApYYjmFS3JU
z^GTUcx<C8QsD3_CbELgBVPE&b(rJ_4AFP``@u^DlACIsJQ&U7Edv9!<wnq8&Nw!Ub
zH9yr|CY@F3&S5ma=eBLKY=`#l6M381d8*`Z`tvEAl40sTr{;cOasR}}9hT}RHH&7=
zQM8}DS%qEjh0RU}y-D6rj83YC3-s49Uf<{T$&+!XAD7_Vya}_Pi0$-!HzBFugHVvy
zyNSP_Fjjh;I-%^cuIN)s$b{ujB=?-*KC)5k%~#P%-+L3XK22NE5mk2P!Rdu-)L$R1
zYBv6!`uE22HTD&s9n3m-*^2p+AL=x@o_aI$XoKzXCTsrW!;v=92ZbV(yp!fPipMAa
zT+<Mn-nypaZi4wu-Llzt6OX>p(@tEPaOV3>=5G_G7CL|HuzlucRGlW8aQ^&_;%`l%
zo3y?O>HIRSKD_E?^s-4iO_m!?e<pPO;jRalf8A;L{$SxA^&jsX>^j;%7T7h_A5;Il
z{)dR&)bmffe}1>&{=RE!KJ)Rrym{4q^Ph|VaINc%f41`v*Zx!W6QevBFGywg{uiJ3
zhx_47;|lePD=`JH1d2p+su)f_ZvH7SN&nB0(s@TFdnm4{64HEh|Ks};xeI;ETl96s
zwpE5_gmHc;vegt7tMZR{QM+&QdnNvsxzjw)s@C6OS<GJ8{$FzM@AS35{a?mB-0%9j
zZgu&4llR|C-^<@pe|_KH#K8H*ga5r^degqP8)fmXPi8-pplTBk+bDDAWrCEi6i5CO
z<^7jkYhD&4bgCT?$~@BF$85#5totQ@iospS^OHTM@%%Sw^iA(RX(M<uyf`_}@!E;^
zQWNLz;Qg*J^Uh>*HTRw37Y=zYEM@IT|JSictfQgti0F@l;@MHX({%)ekDQ<R=w-vV
zmkjf`K2EAXy^b-rVXOI~-U7k8EBv=^%-eQ6%=+><7p7y8EGg?8i)U6aie7Luaf{yc
zxp`8&GKYGj0^6oUCdZad0TB`L*TgsOw}0I~%P~hFsotd9?T!4oHsx>i$LxeT4n_XU
zyH@WcV7owce$pC^JLQvlWdAcwn~;7@*!Xq#Ox`1B+LF?g4L5I`5&3Wb;>snqdwq&u
zidIei=k)o7=`4Tl7o|}i-7k2nCf{4M{iSS_&-+V4QC{ya{{F&P>v38|&vVbD@Q>5~
zh}NII{~_z&wADL)#cNJ3_%Z2>^xFloJ_~}2XGS(e7ZmWjhn$uOW&hO{>vaE@u<f1Z
zKhobeEt6!}dQ4gF)QYPeeM=TM%s77eW5<HaFH4f#(l4#=w4CewT!8zhY<LnU?;Xas
zwmzE|o>zb288ms`(sWPV#@IJ5JY@ocF`5EC8ypPYZm_Fg^C5rE%xii7x~-d^RdAfS
zARqSGkgY;2&VXNTy~Mt^oPQ!rudU;k%V;gtKEPtT(tM5j1h&h5SD1en9A78ZwZ}fk
z>m2*VXG-!ue_icbwh2^9L@b=setDWw|AI!P{w0n|{Z;d~i&gUQidD+ws(-4uv2u?3
zrC%Fdj3bN>Pgb9JKRsV1XS3mxgjFpvPJ0y&uP{%s_}bXB;DgwV)to6J6<UigZjnsk
z$z_&wzwN}ge7?i6!`cRCE-@N)Hi<WImp1t<i&dE3z-+v0N?Ge4xgIaiKOWkb8cWpw
zdPsDtdZzHq>^Sj_Hz$Wv>6(<w^0ggq?1Gi&F7VzsD72<(@d@^ezDn{w^+G=dW@&yh
z*yZ}<Vaetb${Ev6D8CGw=zcL*sejpRS2^eDotq={{1lz%9O{2064ntMq3f5p)S@-?
zk;t`<;0SHM#JLu&Uq9Vz=`R+q<k--pS*U(b#bJ+m3fI|9g6Xlrb0)6cw$~+l?|;oO
zJI{}NGYn%D&Utyvlnf|-VYl#FhkVEj3*lL(kG@|dahWU1^Zo(O7e>ip%{L9I!=_&q
zulafZWc|aFtnR<rA77pxd7+x`>;4Z5zVmp=B^z|tzyJJ{Lt(#rvU1i(mDY*n@9zk{
z{T=`QKJVuI<~v@&Iq%o|Y|men{lIYP;VD|etBxC8dV4n@WP0GM)Fmbtu4X2jnmLy*
zu<f;!*@dM-zWK*iOt~0*)A{93$IioC$2<9UsQkRz>oP%PlE))Y6HiyJDe+#*`Pn9~
ziMlH}ahl-I#oo2+Z7whUd~EJH+aF0zZo9tnrdrvzT`_1r9BKIZTYJ{o{f63GVsEc%
z5|s7X6Q=2VPk-vGguuyZU9O+*O<Je=`u?rcQJI?dFQTQs_xgGE`uPQH;q~wOwkas;
z#L=p0ZU>boD<2YeJ9_lEd-cpjlPOYBufBEh%FmU08ycOdFD?-omB}TNyLfW&<D^GQ
zhl3vr3GaEOk$w8=ol9=fceV3a(m3TOicB{MxwviXrH#uvFC9M}{c^R)|6kWlK2DOa
z-BUZuB>&Q${hOY%cfY-RdG)eOQO5f-=f8NeV_u=Nu#Kp!u#$A8X~4DXK2QFvbMjgG
z;%DBvc^6MEex$TG_=)G`m7m*}JC$<yFHd86+NLu%Xw$zl*Fw{aMP~CJ_rGsa`egE3
zMN#ujXZd(}?Kc>mQmntf+SpE7U3>ZW*&j*|emJ!3^clWb9qG>{UuJQ3GPXa<GrKAM
z+otZ`Oy-5W=4BZ_lb%m?bbfR5)AinV>vgN5cBb^+)hv76t+%k;=kTd0OP?FbK_VqZ
zzk64*w=LoQoOMLpe^bo$xWaSVN0;Ouo@2Pr?z65~^c&5t+&v4QoSP^aUoA8DrHSdY
z1JnQhQtPu3*>JG*)dJ&Z*BDQ$+rOBaJEOp-bWiX@xxG@{bB~L%?20Xs3Ep<+b%|?d
z@!F>3+qbsICYh@oF7*5OK)nBWXwQ8K$MpR#vO-D@?mWNir{&DcZmD+nvOlfa@p@~I
z`9{f^VY=IV&)z$3AyWTz3DeUhHcQv9voi^Ecke&+V9GkL>E-9Wtd5$QnVO#5U-<aQ
zi789m78ktJwD|5eu~WI_-IZ-iLUdnhmrgYFnzHukCaX#NFZtgzIc$Eox-00mt&!!w
z`BmoEUYu%Qb!l6v@)n_4QM>1*tTCzC&b4m6$yDyMPj;$AH0XtOJeLwODGt?5JzM_k
ztZr}h*BoBg&)F}oZs<I}eod4AEEg-@`mYP_PfTE6|1w$JJfc9OR(S8L3##hbZu?uL
ze|-(-vnx$om%36UE9l<6wT2&0YuVYFr+BU_ZYd27FkYVL87Hir_RIHf+53A=i>&Tf
zJ9eC2`ZZ56bLQ?t(e|G$!mEDWdT^+gcOTcCkB9rRxBptjpJ#9P@Mz`ZRDZEmQZadg
zS^4juhlyU{G+Pt4Y;(|B+1YpUKd6|m|7Q}NFWY?3+s*g)R@wjVI*+$MTk+-h1)1Of
zPI^jfOJ}K-{=KoJD7NI2yKhl;`FFn7>B*PXZnGWlkuiCA<K5GV>t0RE-7g=0`23!@
z_fxW!?>@TM_9l>LPtFgm!}lHszPIyxSlP#V^mlFBd>#Fmn>xRwfA2hIU2VlDBYruh
z<6Mt_$YQ6wFLQPzO?uRRCX+e*Mfly&eN}JntnrpUTx{-l#j<Sc_rIQw)=uG7c?&ZA
z!*ga_b=kTn<$}T7r@HO;Ew?<_@G9rV>ae9%k_Y+Kzj{Qx{aEsxr}(@3=Jl`Bd|vK*
z^4af~+NoRVXQuP6-*sO<IO=}Z$FT3!n{&-r@4TFO<7d%i`7#x^tM|4YD2_jUX(PY;
zlD(TW3;$*o|9muWcU0xM`?h7xTIMCmf3I-no|<L7P9iP%(@VSQH*AbHuKjtX^YB)+
zN;k`wPwty|KK`zDa*E5##fEPFOWQBm9yUFk+VxppGC9l3>+p$!#5%J>f1W7*6X(8S
z`)9e%h40tJH12=8V(9r(abbwzgJ(A`zdV(k|NTl-!Gq|cFAjd^I-f7Ad=(zc|Jy|)
zTc&<u*8JbG7bm<IofdtpwrE53x#>%Vv+H(V%Y7Gcx-9?Po46~p=EvSjZa8;F|C*}Z
z=J$E;FTKdTv!>$ts@n9NXZA*ZwldbgZXG@<7`!?7*`7J`W`&hMKIJ-J|4xwU?tkgA
z(!E>WU$FXrl26!m{p!WWV$0l*?KQQqe|+*pEt~iHy{j(XF7@2;{h-OTuRo_WYxkWi
z`6g4m@#KoX_m}e2Y+b&jdu!s|%}1vf)k>G<q{=3UO?y_9RO<7y>9Z$4v-kYjK0E3P
z@0<#pe>AoJ{@T5pIxkNXo&8pcNh;=dT66oo=at)Tv(?r8Zok^Os^O)*=4Dmx9Szr|
z#1q^$ojlXfkZG#N7UnkXZpPP#ot_^UJm2TsK5=PhZqlV2Pj)QaxRUGpiC<jnpPikp
zx$Bs#n)))8V@tGdsi~=(ekuyF%8-iwU+kN-NiED;^L56$li%dOF6``F*>z1hI9Yh|
z<DlcG-Yu*&UOIhx&`qD$a(kx6-Ls3kb^QOKE<34HHyht9nIz`#{O0a-eHr73p9x2Q
zMSgAD6LR+brlRSu+C{q#6xxRA#2Q+kss3@)EHGI<U#fIh_`l2T_x%fJ?5!y}v+eQW
z%Sx}}*2)H?xb5G){lSfeZHC^{j_lIg_uzfyi3)f7>u<`Iwl&sq+g#sm9v^<~<7u;U
zwb^f@h3;F|1pnG0e^{#TT~YnVZ!5&ScUf1w+#R7CAO9<t`Szq~-AZc@{d(!5zy7XH
zN!Ha{pDN$9{C(=Y*Z!ti?IXqio8mq@8Qov!D?L$a)6H*hn3&7eFO~a6#B8petNVrN
z*9!JMk)p{f_CLF{#IE*q`8J6h<IF8n;wue`AJv40of8kgeoK{~$71vU&VOF%PtESG
z_sb9N+4kpE+qL{P!G2L|=WKD>=B?!$wP?<kf<-?YxILd1o;>~P+l+**TVI>MnqTkp
zZ~y-NU;1C{_`vn~y`=2CuQ>~IC%f-n>3#2o)OohHO8xk>FU1SaZNHp0|C@ec)vqP*
zW6sM;zV&yV68^tvn``&K*R#KM1@G+Pu&OO{o_KDD)A~r=>9f^&Z!h2UB2Bt{$1kVb
z)~3I-ciDFQsQKI$wOq<%_4N-4U;4$2U(Iw~x8~K;52s#!34NWuaJJB`s@Hpc*Z=(V
z?n1?6xvA`0PX2Nlw#(LpRY>}*w%xxk_PX}go3FY$&3}GlJilFJ-mBjhyB?ps5NEx;
zxSadzoYnqc(*1Aj{qW;h+PtHgM_;?$mz?UT$HRSU-<6VMXRnF9p2f3SKJ3DiuyxHL
zd)^7Z45^pj-?ENRO>j3)cunn3uk{PcEcy0cR}qc);Xl{9=;tkO$q!uajC^L<jRy@D
zAHB;r`IdC{6ZvHOV>{l~x(j9f-yYMnN%KR~`f%g;c>Q?E1BZ`Ro7X-UQd|2o{Y1jb
zH47I?x78jFPGV#YGVI^Up{O8TweVt~vXJniduz{p=nwnme*4R@CHrrt#V(zkCS4|f
z&Bc}bgW}?e@0vt3>Rx;Lr1&q=w>f!nb64c={1wc*?ftALy$)Jmbj4D=w9kG11mpYf
zz3$&i$#E{qnfq_*iOajg!tb3ww{O?e*R0xK;%2|~;g9`f@b?Jg=f|)4?B(o!&Yt(}
z_pbeYi!N`@ExMfSx!UlczRn+~doJI0{M_|)-tM#8?sQyPef!bouzhdm^PkW8en|J|
z#h=g3w#rn$;fXD(e9C%Scx#j0W!aA<`+`4AFze@=A1AZ)#@x5jdzE%P`Mh?k^!vEr
zFMp0pd(S-+@^??v_iwW|?2OMWytzF2b?%x^88ONy@_iC!>t8!2=3mgaHuBQT-O0&K
z&bR;H$o=$Xr#C<U-#?89XKU8fJbiSYNoq}RWXU(T!?$^7%$=Fv{z9BlY_|3?t1D%^
zzBb%<A8TJ;$$swe*Y5=u|NkG}8}ULagL8-JAMVF<Jen3=Gn<;DvbsuNx<sx-Yv*<U
za&2RqtXq3d)?F>0wCUP!y)Yl6G7}ZslO7koZd<bTk_UtQLF-$ZXYVoV$f~-3YmDVG
z7pr{!%y{nINdBIl8vSL}tbYAJo^<`Y75?zza;cBk>tv(m-~V{!?dj9yecxa1%yVB`
zobIh<6!-P!&BVCs>APRQj`2Uec8lj`jS92l`+VvzY+L{A&Cgx;?b<hg);~Z0`R6~k
zmA-CS+H76^=H8vF@rn0WM}Ga$c&)fUuKdR{&x(u#v3uPOpC+G9oBvu`()RwgWVc(r
zFJjGOj6;{}l+BAM{B~r*OwaS@L~?xmFYK0!%|5^Dl%_k+EuB>bcSWXeQ{8>=)|wes
ztIhqd%I~{SR33KuXrGm~?%y!EdrNrky#CT%bao~Ocl+7e^t)?4R&OjXXeiv=we#kE
zU+#&&UjI3t)Hi?swolIv-|7^7wSW5)-M8t+eK#bQtDeZea3qUI=hPC#qY~kZZtuDL
z;Ni589>K1KK`9ES?7W4Og^dI9Ps-ddV=D4>jA<5{^@CaKe2??Igvl>*9-DNR8g|>s
z?x}x&=+(--*K?koDwprez1;nG!^Rh{Uzy5AM(5{-ta@fwn6&cy5ewCa)9v?boxl4_
zb$!m=-{sypee#w9lF9q4iZ^b&wQ0$*Bd1zD<3Cv~i#xHqy5`?f)yAgO&fQ$Qg2erV
zU&qMZt~jXr_T}3Rm3+(p-O&ubSZtV3QMGnk)v5<qIc^@+|FhG->`r8fZbjO;l~00=
zH>de_ef}s~v#{RM%1X~Jqj2N9OLukG?XjJ-D0R7I-r1-yg<prh`#!sW!}sRjd{gGL
zy1V*!R(APu&e-_S``Dz{-z~T=dq11{{lvC3|N5^s_r9KKPH){KK3P&NT>9LL$M=->
zlz(n5mw&IlFM8&LALs7e{ARGk^U4tmP6?%2iCS@&#1HS%zMZ=CVDrECOa7|dd?I!}
zvbOG2yo~C7uL&!RydOI?AFJez@SfPJ>dm(3&*2=M3TLZ2JvKi!KJGVSH?~A7mi{S9
zeAZB1$9i+7Lg3$~MSrGTdNL`gHh_&`X??;ibEa~RzZ0t#onz}``}Sd;M(}LID|bG9
zD$04bOe|3<qG_#vM&akbA>B6(ja`zQKN-C@o?Ef+=l7@1`?9}=UvK|#&*;`S<=2w$
z^IcaK?OrMw8olgV>Cu`ZyGu6KTem4IY*^;`B)j<ISJ&T3eukoRf=>(H7gpJ{<@14W
z>fGmbbmm%byb$)wLBjdQHF@2v?T>ou<Ac|B%`VNp`Cfm%%+hNuyVic)VSLfaqUrMI
z$LWX5e%k8PUUXV{Mt>)>zRr`Evvz)ec2HE@!X;F6dmi`uDLW<ZrtSK2<$mbf{IFTK
z^UKfGt@&`V)c@|T>GICzx?gTg-lc!z$+MH<IVW{;L@OEp+m@ZLdn$9au39(z@bwdm
zt^DU*bFa2FT~)LEidCn3d9lNnjm~_6f~)oC)~>1l@MiX%pU<YY`Rb@Q9(@+5=H}LX
zY_0RM0vF8(f`@N#OU;+;IG`QE>*idR7WUy#aDXXyZ<Sw~v)q%3#S1PA+T=OgF{eZZ
zGN-n<i8&|ivpxLdYu<$Ob-%4#*^O&o=jLsdwp%VGqLBH}(8tIlBH>yB)0)G=l0_0m
zjaw@PCxj#vB%eq>k*txZ!M5qJL{Q_RqYi}=W-v7?Hp?|LHeYnw$|gETbN7->3if+7
zHYzL@+N*o=(vcGzauyyB)J<kS*l_su;zy57rT)9;{Vx3La{bqj&C|F4;nVg`eiQa%
zrL1+WZ<lLl^``i+zt{I%KWDF&zxu7Vp~jBP^ILu&TNs_hm0mMHH)M;@U(?XQSBA@z
zpTG6~w%qnl)D4$!+ibIS3!|qhOj@?ZO#ShU&L7r0m)CRUsII*(XZdYOqW^)<|Jv=F
z&R_e#<4ac3%S$~Rr=9(ma~0^{%dZTd{PEt||K*Qde(+q`{U+wtm;4{4_on{(?({0+
z`?<OCXZ36TeO-8TUVHBMRVfdP-Ug%}R4woR>odbwO*AHctNUZI&zsk7V*lPzyM3#*
zruxOw$5RgfQ!g&76*4ZryDMDzy>rjb;3v9EXWJ_AwA<yC-QTx?^M*!N(x2WAeY3-A
z$IKlTiZ3`a*Ke|-uMYD{n;aPdb_2%KGgv3G37ydFmp0sZn8T-{Kr+m^t{^u*Gb1A-
zGb1HQidCm}qR>2n?gKt2SAIHn+^lxK`O~Jk=U-2djF{BWGJW&Kz?Umuy`6P?uFK<F
z%uiyc`{n7?Zp#07sA&6Q$JTq@=llZRM@4<MOxb$t>X%<7|K{`W_q3|Gv-4Z^zger-
zX7S!}e4VuZUxe7D%BzYg*RmR$=gdBI{?4y0|Guo6Y<c#o>24lBnOA$%-xlW0^-n(C
zJ?Y+U!K}+_CTVMZ=9GtT`+0wU0OQ2eW!uv9q^#%k$3K~uTzc=x<i@<6YkF=^{M?m(
zc@6K9IcZ<lRxkYX$#>E7E8mvwpRa27{2#~W8y|g4mA;?kbbhz<+HdE&;+S{V`xGNy
zm;Z7xe*cZ#y3F`|^}}c##o7DX7gxQ%r)y}Q+PjqH`MR3Y+(+-_Z~ZqtH09py6-$@j
z^{lon{mWWBb-(mCBLfD8mqOQ*xl;2|ic5-86LUeV{G=={LlZLv0|gMv#)eBjq_QAY
zLEksEBrzqiB#}!$xHPE*EEM7E!=>+&nwMUZp<rlcY|dq8#|1UW#=fE;F*!T6L?J0P
zJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b~Y7O6}bhusU?XD
z6}dTi#a0!zN{K1?NvT$O#a19;eI*63l9Fs&C1X89U2_9NB|9#gqLehNAQv~NrlOQI
zTcwPWk^(Dz{qpj1y>er{{GxPyLrY6beFGzXBO~3Slr-Jq%Dj@q3f;V7Wta&rsl~}f
znFS@8`FRQ;6BCp2OG|8(loX)mR^%4I&CM&;13OGFIX_pwBC$Z<P|rXgWKczJfmKLm
zNlvPrb7D?rQc<RjK0?SwA7n0)Jy5qJiQuw1C^J2yq!_>bMPM~BXFzmVIp-Htf+g%i
z^Rn~u%k#hv!jQD7$Sr^h`X&}-r>5A26qTkTtAz?9DfBPTOD)1?EJOlHWoU6?dTK~&
zQEo9d<w&wvLP&uQfQt@xD2!S{QYeoG*GLU6NFfm9;$~-~4=(OOMZX=QMoG;}u~jNp
zvbO_OSJ3(<H7^BJT^Sl%Kq@W;P{rkzpI4$_W22z&W}#qctYDxJq@eF+Y^h*k0A(8*
zDj1r8*>-kZ`Vsy~S*gho9iF)+3Wf%tS};ffBo|PWpB$W8q7bd1AK>DqpdXT2QKAsb
zWoM@Vv)RNPVl!8?sgbF|C?+WkVnI;}jzAM=1ad{2m>41nTf#!u%+OE|Nx~Eqmmr<d
z=B5@X5{57xhDHVkdL{_7OpRbN7Di@zCJLs;hI+;dU^bE>P<jEI3zkqYvNY8*geXGR
zfWn5T#7`O;m>KDrLbV~;3^f|RX8f{HqoEYCTBs0|g4hZnp+cw>L@TP8nTe&Iu>yod
zm4Wggnv5(g^o&3`2jod}0}DN41qf+rVxniN03kt9W@>4mXRH7rAu1paGB-2VGf{w$
z5F;TZ#AXW<OFdHsGfNXaa|Kf~BRw+(3nN1?+d$7k0h9ua70iqc6)X)*^o$ftEll-H
z70itcKrv?kHrLod&s@RK$PDBd3o}cQgo&Y^nS!~AF(?g~nd_M=SQ?n=St^*B7=zM=
zg&D}(W=47z3TCEeV85A~fHatbl8(87Dac+kV~_}vZy`QHCL!*JkS69vdPWMEBqRjD
zBvL{I6;P0bXlSfpZe#*-iLo)rT5}^k69o%HQ0g@?Hq^6JFf}pMGg7cHHdZh*1G&}G
z#2gd>7AAUz3g#xD$S^ZD1hLJ*0b^nc@|yw3F{b9mAU~U#Dwvvsg3{8+1Z*}ah)vBb
z^b8fu%nkI66pSrEvdE;Rxuu?w0)#X%Gyu86&_uz+5EO1EMuwm;G_cUKP%tqCx!J@5
zWTJ_g1xTHlv7Whtv9XDQi2*2cnHqqSn2{wYLM=?qK)J*M6i+7Rphz>Z1es-G4DySK
z3E0nOAm19Bf&$;v6y#GAb5NX_Sz3Zj2SpH4Fq*<Ly{RF@Yv!OJgd_n&2-^(g90L$(
zVgPa=gfs;eI11)wAaP@`tg$IbJ%kOBrG$i-gG@r~LN*g30!gIi2B4@iH#7yMIa5;w
zGjnjnnu3z3xj85>AnJ@QKq^2LkvTZH&5X=JiNg})4~PngsSy1Twz-idD8kG@NdjsE
zIAcK6TUvrb1;U1qW`>|_193YfTw!cbGJ~)oB*Zr+W(Eo%jNn0J5n>QNganBinSy*_
z0gfS1jyF<(=!K9V6`(|Bt^kQEV`GrZO^rc*1j(71f#TZ43>0D};P3#eLrNB)DjuA>
z3=NDxv1(!f3P)((1hdU74D`$tFi0db;5EOADJUwSq#@W55E560w*Up7DVT&>307%r
z3>F7_-P9c9EGTISib7K`X>M!=%E@5T6zp^;2{sL4CNgPmYM_9O4Gl~{VFRVi!MP4X
zBI`0U21Pk0X<-1477WtR2<%)a1uB~i!6lTTf`z#$7=ubCb8z{Do3yY1*-8uvF%4!m
zj0U$66d<GpI4lhf!MPX`$fn?cg$fx$QW9RC0ayd1@`4xvF%=hSXacV7AfbSiP~dGF
zb8sj@!V1DRH84;>XF>S*Nkanz0|k&~5XP^Rcv-NaU;<eWSO83b>;hph2SGp-BlwUA
zfRG4LFbks8$lO!`%!NcFghY;Za7zIk_>ee*r~p}QZUoBdP!b%P5F;VBnOj<b+6ks+
zdKL<%Mxd(1+#FPWK(dIrp#`YTU}>UfsbB$)DN`_M1~JFXNWsj)65LKO0M%y}Mh2i}
zge54ynOTC<Jvdien3#hs0p|gb0cHwjMxf?^nIWhMv9ti?TXS#$X=Vm07eIA4?lcea
z8pQb!5|oHc6fjAU_d(bgoJ$}iI4L2eG<b8_!qQ03Qo-05RJB6bpjMHw0wx<Gf}b=r
z1eXU8BOoMx4aCbrjfPUl`k+Ek3SujSgbJZj5Ur?U$SpBc87L2;$rxPyL50lCETJs~
z3k5?1LsLCV7zIj|W+tGt1tB3SAx^R|2BkA72@ZRR(GV9{8k&P^ZE!Qi2-KjmumHDc
z4MB;^!q7s`M8V7gly)u6L1`3ZzNvz_1t_gsn1dQdkRsa9*u)6bQZ)vpMoVxb)WQJV
z4l@S1)6&9F!5rMKGc$ptLI??J7a1BFgBn{PyDSyV!S$nskuj($LGmxeM<^sx>(<l=
z)Re<QT7VjqkZ>?DGtx6wfRNzShe(`epzs6NxnKz_NfBa%nIX90ZVGOtn;C-|FNUDz
zi6yuVXkiQrAW)t%RR9H|iGn3KG)xUZEl)FJBLz!SkbliBK&?ze0}HTL18|-Pw};G)
zKutyqOHfX?Fay=`<_3nK3~df-Vw;<TIx=SFptioDfjOwEv@{0y3(P@^K++~q??F5X
zA)#ppN|`_mF$7s*Y5;1jn;L@35>rSA#>7Yg)NVBdlb|*`xSb5{x`1jKa|JU4kQ0r~
zK&@Rv14EEU%nd*ddsA?W#uQutfa1YS!PM9Q)N(ThB?3@qz)Zo++!VRjYX<KR8ykU=
zpQ#xr;aM7k5*sqx!rWW|qQb-k)Ww025ETeHV+&9~LexRzC?O%{Ad?p6=12(!-eCt9
za|#d=Qr?3KLIevG3YO4j4#;EXhM=CJg^{_QrGmLJI7UstX&v0H1Laa<1ruXSJu?MU
zQ&3j})W0-_w)HH{!O73S7*zN}I)Eld3g(vJlwt}hPeH9;P%jgdILs_Sg+8R|1ZpUl
zC|DSQTwn@qJ%YMDkfIuy1Xq4w0@PtLS1>iQ&@)poF@nS**hFyUV`2u%=q45*mztQH
zE0~&tQh_nJ)-o|P1lMvPcNtlNN)QWk3k5R+Q0Zb~0rJ180m#pgh%_+;b(%mOFbf4x
z!ZK7aH3#+8Au2&_eoF;Ya1u8G_0W+b0Wlx~Zc#x39n=*!fwtzrtxHI?45>&l*pT3X
zROJv7xdjD@R%1wgiqxtBMKK72%!ky5U>=g`AigEIu@259me7_I#6SoMQUb9I!Gd@J
zB99y^AQdQbU=Ksof#itA5FN-Q#8gn`hV}m;A|S6pY6xhH2Asd4eGW*^4jhvpb<kKd
z1odeky3LGC6)eF`5|BJp44m#DY)DrD65vqtp`8I}rw6Rf)BxIIhBz4HNpu#14>1fH
z8{h^SgpCw?U{Qz;s3^FX0ug~m1y~KpCWv{E=9w|LFJf#7%2tqQL6(Jh0HP8?LTolQ
zFhEMI@Ie#gu8SqOdj=tm!BvT|DX6wKH3toQpkmPAkO{1>3GQ%N7=v<{1=v|29fk%b
zpbFX0&<s?wK*V9D8Yq~7lOx0~kZK4ES(S+is51v4K`M~tjKQ5ah-n}>VlhMqlr%L^
zfS73tF7qHHL<HhHP#eHd0qQRc&;XJ-I6};gK%)qdF*Hj90|gUECll;*O9N1dnSrCo
z&;U$<lvschthoia83SfpfX6u@!Ea$;pkM(`zz~ZK4Z$@RgaaW#%@qp;h|3{i2VsMJ
z4q-t^Q&UR?h@p^v8<cHiu4kx#h)swnL<dCF3_Pd@5rM=7L=DJ%2n(VDG=yXZ9;`A`
zfW!^5EF`QTDj_7;6-WsWKFkEllpt(r4C*C7NMl1#QEO}hs>nfu8K&StOl%~mA~J>a
z>&!tTUKU`Tp#CjHpP_*vsCF?lGyzplAaR)4po+%S!cYNXBSbZXjZkF*b`ykzs6faW
zo0}>?%!0^JLPE@ek|rRRf$RYda2kO}z>UBo0uaBNTY{R~P=A6OkDv<MM8VtulubaX
z$5_F_99#h!S}K5iXaOFJ1T}L&Epsza3V<j8_31!uTTlo=*cQg1MkFXYKy7Ig1q(A!
zyAEQpp`n?P0)z=6%`8AM25~jW9w-Z(o*`@qX=(y)4}xZU3=BYhKLt~8Zx1<sK~_Rk
zLq#n?aSsuJ#0p3SB#gl<u)K*WsBLCq0%~SMVhJG!2_aLkIw*-!^1%nRKmm$0>tO~T
zr2-9^n;|7x_^1TP`IZXMp;vJI0%3zqQZNFKrW=FX%McQx9z_-$$q<zgSxQKVImjf$
zF3?Dxu>ypIh?s+ih(RrSO9gWiP|w5M0yIwmDw#n8*A@yE29Qwz&``3mxgofvWvBqs
zZKPlZ)?o>1-9gN;1nUEnAQdJG=8)lNbI>q4*mQ_GFllH2o)>^R0W4%@1R61iI2;lH
zm~3PbQ*%QF6Ubl%m<3Al#)hEk2UN*}WFe}-VkV$|1cVQX9*{i57BCAeZ(?8s9#uC{
zfJPO_%U~Hu@R)+x5E5)NQhGoeJFqYT4}ySaJwQ_<W(wx!;IIT2W0ppsP8MXk0Mx=X
zRseO|EEFukLm}pdpy>ibLnF`}3q%ogc*np(0m`xfjgy+0f~IF69Z^dIP$L-9Z8kIl
zYlUziB&c>WR4_IIb^px3{b>l>6kHiW*bvgx+*Hp<0b;bN5vXGfWt$j-+rDNB5Iqo4
zh#pYu3N(-d>J30dEWwo;L=CcfGb4~16AMsOo0x${15C^e^o$SzX%6q_LM9JE<({#E
zg@q}&qXz2JLD-N9E{GZvLr^~#LPFJp=O`hv#-^ZYEeIPTO9=@v2bqMp#MA)Pu7Qvc
z5pzq>xR$x85qOvY98=)oR8U*YOu@_&)V%<;=u8zLDviOjJf<d~Stbi3kblj<Q)HIr
zpus4J8mP%e;93FfM{^5MDuGT3LZ$&B_JT=JV*_eD!~n=#8pQdKV8CP}i$Dy9w7rqp
z#zx>i5_l3AA`a076*mK=V2B7Lx*%#GHbU88H716jirT~wRMS8s5Y&TGFa^s(W;7ve
z2nluxQfh(s&yCED6pX<k0%AcseUPpnStQ657&bQpg)wNX0y265nra1!m>Zjb;}KTh
znuEuUKx2|d3TDQT%G6i^qzW|OW~5+hV5|T#%Lv?Ouu!l7H<3Z|AW<`LkI)FL!VEkC
zYo=go0yo>(1Z<L_fq@yA0n%m)?zw`T3Gpy03&8^!V`2=-*9ex8CAhx~4jhmuNHs*v
z)DV;}L3|5Ch!Y^DgH%D}U{jgk{xrBjfsg|?J&<AuJ`7=I1|G&UFau2t8G(lt48VEA
z2t4*=37WkzHUg<J0e7X%!JQ3Lb29}CP%jHC4-&Ib0M!&m3Q)EMcx(tfhYGO)l(US%
z@nWoC2_B$876A<c87df=fZIf-pfVGajVuBhdjc(f0gdV)vyIF_xf?WVWu^cThv<Te
zgWK&85p#2pFCl7>)k6jkK&2C?5e}+6A#A8hun7<!K~#cCq=1DEEr1v8K-QBQDi~Ut
zo5NO@8Yvi>SehEZxW)=_rh=iFp{X%=r4*OGTV_s4YLSAzTTWt0s!M8eeo89RlGKV@
zy+4=>mb|{k#&i7Hk$0WBx3{T>9p7fS(b!OJ+gqPEDM`1V`JB<0e*UKR-v9N#_Ptv5
z?s?R{YkRN#4Kcl$?kZ}fC~U2~V8`6G#<Ie;%H|F(ei4&91rMA!;dK7Q2_AR1Wmyk%
zc>nav^!doXc#)Ere)_LIx1jrig`eAfu3Y$eIN;nlF@?8Dya`E+1{;fw3k!^mm}W>y
z?);aW@%#j@fN9BA1I7~<nU}oHY4j^dQ7Zc;*C&?t?3{e%zt0>COqMYj6c!d<`1g`e
zU=yQNl!WvxrYAge&o-LLOZM`vWz;G=Cgzad|DV(GWcIr^Ip@zFc<}6*TYko4m;C1$
z$NXKn3pN*+v1>5TZRlI)Abdc63gf3Xvjh8AUOYUJG32c7oPR+pZp^gWEosHXD9@D5
zoxEV}<@WCGwVW3OKTMQeprpzjuz~&7zf_&y(;0Oiynn_p<HgK>((m%$+cQPp`1dj=
zBPS<4IX~ldVq!L%!PX6IOd>~8U(UTdH<Ph#n_9huRFw72+8@%pq@p6ErD`SqMD9{_
zi1FY|_;K(<ex2X3KCy4-{J!{!U8^rh`JsHqefH5DUzayIISt#+`4!Y(QO|nFVe;?A
zZuZ0X+p|-%pQpY4DxZ>-n4R>ComW`An$0wtn_Yatlo$8S<dt^Rr=&TgGe|2dE3;dx
zGrVA6*d;yN_|HU#tB2)&ET8m}|06rQyneNHb;C<`-Ua=wnjapspF4f>f+$BpSqbB>
zioekx_jB}hawa4tzTq)oniYBD&|l%d&O9c6x$EcbU)*Z#F#BWjpBW52^)>%~FZpel
zs8+V^n%w^x|0|F1D8;9kwz_8gTlOb@>4pt+tq*kf^~yRNKXZ&DAt@=HwV=l4$DjN;
z|H~fOzxh8!ODgJ5?A`rJUN>jmV%+gh>Ep${{{;&FRvT&jkCWCq@IP(B_TMwo6&gOx
z|9CwyCE4WPkECD!_psFO`tyJGU;9OW_V@k&zt-c<(ObX#ZJ)-o{kN}jmgdgx->+-;
z?B>y*$>vYq*qI&q_J39u!~dv^MC<Iy|5r~gGW&BwKr!0*_5W=b4|(1>B%84)<6%zD
zzv}{jpNrTvMMvLY5`8;I=iiP3h7zBip8xLOHx?fYlb_yo`FP~tl}vSOuKZsnve|T-
z@z3P%GwjdZy>Rj31?G2;U)T#sALxFW?CIO^uKt`^L*u<`=YAe${or_xJt6Bk$M@r%
zn~H0CF3T_4FQDGw_(lE*Yl6UU{YNP*1{(jGXE5@d`tKSeAIS6HQ9iKeABgzh{qMnv
zgirb>SP~fiiPr@r{8+vBzeJ6S(O>pWbqc}V^&jMK)hkG!mcQ^dp7H;M+dD1(Y2Rz_
zyt!XNy5V8`Lkatih`-!*1{?p0|5=dqng7oXTejQv2l=(i{<p4?-zNXQxqhX+*T(<u
ze-B>ym;C4LzpLH$C;qMuTGoGQ&cDP@>`c3u{(GMImiX>VVfmlO9|S+oKUe!ks(JHH
z<qz>^f2_EE^X$8LKKY#3f2{U5cKze7Gbs2SzTAG#|EWDcoBN*Im)OPFHulvY{WqV{
zw5+h?&yGF+_c+-t`)>c^yg94D3qF&!=(r8W&p0=&;eJ)ILhw-W;@k5d%vQa9-DByZ
z&rxN69)4<Jnd=hz_wVavkLLzl^3XqZYn{Z?wGX&1uD+g`&0LZZ-4yhD^Y`w5=1*V#
zE!(kF^UT4MO~DI)F)~HeScM*Bejm=B|CK@eL)Znq%uO=v;(jVeZMLv)ujBmwt8vrS
zj}uyJmo{gWN&c9=Npe@lR*kt0k1RLEEIw12lcbSu#U$~{Km6T^;_c;|=WkNK-??P}
z#REU*xNa7y%FH!9ZgZ}BUHA$k>(a*)9%Up7H{7q2ny>a<$j)opv8XRvnq9Y^M4x%Y
z(Jvdv`Ko{Z^uXha-$IX+@n|i5eEP%mw@%7$&y^XUE7%fdK5q*9gkXWIhbveoPxY9g
z7BaDC%8T?z(LZeWO%hmfB)e(Wg+DJ8-`MRAc)jRbU;oi(X<c@6HYo0S?0oy>nJ=mJ
zl`Tmc=5wY^X!S8-y{Qm6G5o-spDQQ5R$gZFNaSw7gQd0~=6T1L_@{H`Nxq7GlCya8
z!MptL&vh=f_?WZgM!}SV%70NeMAPjS-Hm9j>lU<VU3CAX=r-%8XZ{?Ubm2&$tc&*1
z9@U<bxOpcnb>{9mY0;nexMe-tGQ*``QWjNyldP|DV95Mty7}`SpM=ntk1k8TwhXWg
zGLnibH*2yxd(XfAmHNH|-y3Ytb?fBqPJWkW8Z({gB8zVBY!lnI#KXsKZe`xjdQD`8
z+iU4-4}VmisZEcJi!V~@{qlgzJknWjvwxR?E#I@-UjJSSTh6#UZC&W)kb~2A`EBJp
zb!2_;Rp)~$`h^F&^O~M5IUeqzD{1d~a&>;+BgsAAlP*=3o_}dm5q<f~r+v$p{(H6A
zl+R$(C6iy54W@18wJtc9A0LxC?Q=&RLupLHrIhtkWRfbbK3>`))>P;(x0A<u!B=yQ
z6aGhBXYW+;xN@6Yo;7x@lG~i<7e_zrwLQIi%O@S9icL?l1w~RiBrN6^bgWNU7U-qg
z8fIZ7&hn%4^yW{-8|R##<bJ1O#q#fm*W7%t`@zwpf~}_C=FMmd<*?t++aPKXY(DRy
z<JrF^2f80Uxz>}-{Udd4SReOYA(g4+$_w6x@wM$X&g1c3SDF#fV;no{?#{sG2PsON
zBKlqn59BN?v$AlSGm|U8^x-UFvpZTHE<dIAERr?O`_XH1b4}mMzehzRqn>MU&iW`Z
z?eUxo0hK}gQ;q(*ik%jkn(}6I?`^hXYtP+pXFN7rS^nhrmRHM*BVQb0xvROp=xkE+
zclB$GRh=s4Tb6b04b4Bwp7v09^H#R)_uazoJ~EB`@PYA@=+R}<Yz)<yR0^*hF?o~z
zlx1&P0{h0e{_QKS^h=9B*R;6&A!Cb{SGC6(*SD4DMW2YMZkuXh#a6n@YocT09d{4w
z*K7B_xn{Ag$1O(DY?o~K^)1VJv{hTJ;yrE_Zp~!6azx34Eqc+DBGGdig6gkdxW;cw
zU0r@^Luua1?X2=Pks4jyCzemT(cQFeM)0)-O1n-dWNJ*#yR`NX@2d^2=JzFDwH=(a
zM#H}M$nhglOBdY;SGJVC^HP@kyKQUI`!m;Hd9eMMSL1kjzqV|5e#PO2N;hM**KXgI
zy8Pe6r2cl-i<Xu*ldX<C-SD8yVC&PZvk%LCTA6hyQ;9KDPlNYcV@&6|^Z#Bex>{7a
z%#x{;b!X1f&f2v3+B4&pKIO*w=FyX43b~~V|AxOhm-R%iY4cR!d$U$_s$870qUu)J
z&HKxynRMPi=Vo1B(%X1%Zd!ke&~D>z_hwISn4Z5YgL~bN9C=+~eU?MLGdyaA7q=~C
zjVP0SA;+`h(szs9+Ycp7ITUv+y7Ozz#&fInJ{fW@UC!)vSpFLS-L505j=x1e3Qj%s
zCdsTzDe6|3w_x>x?6yaWYdXy;?I)B!Y5RIN>Z5#QO4%2^`3oBsEZ%wDWv<lLU0=8!
zh_?D%KgQ3Taar$b^jss`-IL?Kwe|@9y(Os1kuLa&t+IEmH@m+2Y!2H{7nRw*2eMNa
zd*4trntXgN`>xKC1J_EHn-sULJ^So{dws;w*L4e{8VX|ewLV$0Bj@q`JC7!uIhSe9
z@V3A4-G{|5@)tRkwq)PVoYlGV{4|Nk6>QpPn6H02D`4r<*d4OC-9e;VB=dgS$+j<%
z2JE-gzKg%_SXjII#~%rWPmA8#{ky#P)VA;=jY}rFTwT;F_w?8!$K;6*ZzavQ3UD}<
zkgB4+T|V`v==;0RZ}g-udL1oW<l2;QuwUaJ>&dMDUGpwKKYsdBsC4wY!ev|3cU}1X
zcTRdwQ0|lpg9}}s8IRbtIH!B_RY*)@+*#T$dw$UZ=3BXpYgeZoY*tS#aZTj@cfUG#
zdF%A_)$0;pJ^F0r^ek*^*-GEg3DFw&EfqT!9Jr*Qr@wOHE;i0XPnQ-<jp^PQanR=W
z{lk&s?{k?ZFm9U@!m?<l`fRsd&Zi?Uyx%k3{;I~=Z~4>Z%r&@qL}mmlMaOe*2)FHx
zP>?Ktcs%drhS00od#qL^%70PSf2{P?X{&W(#<fGv*47=GhAjGP0zX|p*s%BAa)UEr
zb^rA263Ps_gAR$rTCpxZ{^ePvW?31}$+aduYz=~G#kM^C&d)7>O#UnyeN~FjyF^Jo
z(C5Aj`?(-#mN3qu_f6Zk75ysHwU2HHF^LL@T$cP<x5>Jza_Y|G&ttW}8cuzv)fb@o
zgFW<fqVv_3=r5(aFHdavy+GoW77MSiy6H;xecpGM-!u`id>?t@OTOAAeyjLXQzo8L
zwfQq~cBHRHpxM*p@{iGbIt<s!mnt#r3OgJ+=T$)_|AOh^PSa~@CiC}gXZUJsyWjd%
zt@QV3uLrfP|MczV9=tf~e1E=W?IGVtw>kfU*Iu60!JS#O)YM*Tk(Rx#==+*Y4V(LK
zdi5@mD%zvtdg9~V==5K6`R?zQn9X<g^y74==(Xmj<96iF@?3o**FNx3ZD{J%g=cOa
zyIA3TBA-#7P4rp_H_MAs)~ogBr_4WjSUhLF;s25;nE`8cb>wdCbkz1XOJCgffA3?C
zwT==m?mPNMIj3Yl-*;At*<t6~zia(&t(?33uJBi>Ia#ZYH6Q*ZCK)@ubumlo&0p64
zG*|qKW|<OMtuZn3)UvzBq#mUkF`34EdB^wp!=X#xOi%6fVfg$u@O4sIZFp`%oS|;Q
z?nLdk?M&Ogg+%;m+1KaL)Am{7eSrb9f3}H}^2bJ_x}|5U@<YqmLa)YZR<%X+^gZ6d
zChT<nP060vq=zC>9mn4}{V<yPq2kC?zvU0QA`cW^S+b>p*Wt{;L`%aLZIeUu6RS$t
zcV<VK?B=}xp|zViar=U$)u&b$EwOkUyz|;~wpwPZ<D##hM!Y&*#(rVF<c-McAE$G@
z1$Um~5ZI)&AkDbo&NjD88xs9D<^JW{xTDj#uYFoh)!&#0sh>{0`g-X^`&1c+p0)9X
z+e%Z?Z%;POh-aG|(>7Q9&m_)p#X}n+*rS!oD`h)O=d_kq6t#NEDU`;4`mD(LI`5;;
zM)x~5HhWYr7Vq_Qx>93Uxpwz4-uqA1aVi80I#~S;)SnY39zA{Ags;o3f6Z5a_VcK^
z((hoUn8#C{+;t{yz8_F{@X`ELMmG&lZ0h-Y(37jJM*8uCV5MUsd<udG8xxEl-gnaE
znI1ahQoS#eGb8)nM<4V${Hnx`+&Hd&P>wgRa7$-z<Gu|_;jJI{S)XeD$R@j`V*Ruu
zjV7lLiyDPp?C{EoczEA^Dbs14<8eov*7b(0)SIw+VsXb}=T|?a@Ah4fo&S3KUeAp$
zBK?I{u%^#t345p`cS!B6qf`%DS&2;I;++#(PW|4tr9wV7^OW1dRjIDuZcSFp@Zt!w
zJeYKG@<(}FrI&YI)26X+KDoba<y4iQI<Gz6K5nxVO6{}jP4b-mP%)(}zgT`v7gxgL
zX?;wO7HS&TJzVtdg8F>H4X)W*$`S@^?EY$eY<gz2;?bQ$4t>3MUd9XlSMk#OU3w?F
z{$Fq15+(I}S3jh9r`or+JNM??>0+-57julb@!-(SRR`F^)|AWdycn<U6C_#qL49Mz
zt&=;|ynI)DpLP7n((d>BgjQAV44tmM+UiS=BcH~xkLr@W+d6&Dy`JQ<KTd3m#D(-L
zKlSyiyzjp__jI~uZ4hV8gXh98>gz9W&^T_OGlTQcW9CwB9kB!Y$G^({U&nebigCw|
zj6GA_f1Z4QZgZmvQ}`R{Z+B-Xx_`>pG^foVZH~{4XFEFklDQa-y;bM_{AAkltI9#A
z@Wi>s3Cp!}_SH^$$Y8px_pi%t7DutvhfGJ;EoEOHDf;lbluzcmii#vz`*`+KUxl8B
z2D4<wgl#)nr((&ed~wTN=S7>l%MP!(bpB(y;ns!cf81bBwsMg!^vlRgdcR*@Yt{7g
zH*TLY6<hq!`N9;7M8Wf~D+N#7S$mTCL)SyGJgq>zn%1-BKeio_{$$oUvoxwS^ZTE)
zY*yLEDXJdV9<^U#7L2!uo3=Q78V}cl?6;vTC!%!r99NQ`yVr3`;yc6M3i*!~PkzYl
zKVOhw+3R!D>`~oZr_5P;#mQ-R9U^(&nI#(R68L&`*{Zr0vt-?Ksg_l-(-qhgH%#Y$
zqw4IZ6!C23n*u)z2NvIlY`urJ*;_eUIM%=US~%JJxI-$#$0pr5Yd)M$Ut+H1dvoib
zHCv^XPe?}=H2nDb?(F5{gH?U6{!ZP&x1p+3dvdqgPU#za*QF(!PcCEJd?tn=iD%j)
z=cn^`R==3J;b`yS?x^be%H2{b|2$Y`Ctt5N73c_>wY6MDvHOkTs$GXZc8BMDEqcE8
zwqnfT@Fj}xFFxZwm%q>Xf!<!uo5F_}mH$@@o>z+s&nY&3d2j1ImIyxkx6|K$VR>{u
zyOVXn%bO_+I)!Q@a$iiFyXA?3_>8P4!djxKJtx#ND*~Uc)S7C4)~d8Dx@x}iCBN&-
z6*JCQzI485-!Ed$QB$4%wQ-50g#6BvzI#msCF4&#-D#~l<;D9oC%@}U$Xrko%<4FP
zPIvA8IgX509a}#sH<xOjo_4UV_Ve^eA(gLjVpmuAbkEtF7%*jh`=!}lNek1a?7Yiu
z@vc5rI%nCZnXKz4*-bN6o~M{v{b<j%_a@rng-K$WPZmr)dB$ztd7*}x8S`f>Ic4d=
zm3-Hs!YL|QiSg~$Y;FI%++&9(C|xo+7qTb*6K{SR(-Zl_690bfS{`n3;8&O7AwPrJ
z9;u!S0=6V|FupK%xw83lMenuKn)4N(JKgr-+}~;`qoscO^`obyw>2Mb7V?<G5MR4l
zWKF=AW7~Hf{*ruFyxy9-@YBL;HE*LQX>QW-`<<J!{`K?O$4=hX-64H_@~KNx@^9`s
zKS%P{R2|MK-OhE7x~^O{_glYRovG)(+cy8Oy6La)DgW8Bk6rx<4;xFu4i8pS&n4fS
zRK4^+6f>qYu2$ZBYf9+PzMXH3(xNtREtL^G*4rWw8Glol-!1!2>#4-*)7&3g%Gyh~
z4=3$gU9@dx;fjupty)%A0`K`;k8&DUU*n(bux-Mn-SW$qoVHHCZl7l*`f_)|tb@-#
z{B<|pRZ?Hs`XYVp)pM1SfqN!OKA!hm_*CsZ8{anzEpmRHQC_5Z@^P4pnCF=diW43L
zy}WTduE4dg{fEjV!$T3Nv&53OzAa)3y_y?vN=IwaGI2vm+sUDu+VUR7=W9*;V#J(!
z^T|CKzJ+<8h1OemOZrDHiGKC)@~541z4Nb`8NcB>V-=)W7p)nXo2_8K`y5xtVHV!V
z6~7)9J#c(#*|)^<Rj0zUZ8I&rzKf?w*{nQTvB6y4y*_EN)QyRjf{S`JxF<|bOsf2n
z&^k3UYsra~`qzJSO!-%%^2>5s=C#t0EH6LnHJi5-{H*Q{Z(sQTO#N0zWB$cK4Yv34
zJ}t_RcKV-t*#3Fy!Dm{H57uq_>vQjy@zXa&X`hyU`aI`Fjr%mcSdABd=RL{~*6K38
zE`F`!<R>}9%+mdwx$E?1JIQU>V0_#{#eKv1iw8E(Pq*QHS7j{TnEk17<>SobqW5(y
zO}hL%j9#TbT9~#_Sls=!d)uv+tEw7*x9NP_u;u%bF4L9@*66-6;~!Z!-m|Q_*mu?;
zV6lf_sJp6{zx`7-gHzTgH{I21_K~TdtorM%kfS*BseK8{-v44@Q?E`4*9g07G~>Cp
z>s5u%GhIJd9eR6Qy+R;z>F>Y(ao=rMo)bRcQnknWv7@ZjjHHD*3$Ms=35Z!f5j1)K
zb=Td}1jm(seb)-J&5~Qr6Z~p3`&LQkN2&EEx!jL-axpYsXNtXDWN~rF|Iovs%LK&I
zE4E&W4KAL*;&V!GhO&^|vfp{UrFGK#Ty9mgSGTyeZqVK!+a)xiC?!8)52s^|*_$Qa
z^Mdy7TKxO&tM8TTy_(-FJ$|$8-|VM{BUXJ%5`O<w@4@wo*ET)M&c&7dVQrEn=V!4W
zeAnh<r|TB8Ue;=Mmx@xSkD1XlGs{Cstltjyeq?as<9nhncaLXsn371xzFlYMIxbA@
zN|vhebL8h&of<qn@XF~Up1$X|>&$+fD)#;8>;mqY=Pyq6)0-IlQElSa(=~lJl(x=d
z+P~JCY4WkFe@%RBu7%%RGV$@N<^5}}`APaOmwym?>(<%OYpGG+7p;skQ25LFSA71d
zg2R)g)<*Yio4f8q*1bIr{yUfMk>WYQsP!%Xb1_Hhg36WmSMAH0A=>=8c<Md>zbp&Z
zSpGBlD|2G*{*H&+QoCKY9BRHZi^W1rq-s*5ued??%hn11p9vIAVminbbiC8)s{HDx
zAHrn^B$oWXT;;iHlh^AdXI}Wf3)a5&=l+XqErXMGr)_lhoLsHGxOb1bCWEM{?S{@1
z5!Sz@r?iy^Cz&}e^tiF7Ia`_ii*P{fpWS}FtXZY45l%b3o=;_snyPJFD^Yv*n9Q*U
z9jk<`Is?!CWIz8)S&H+0#f+HXzZLGWhMoDVXSeaKzMp*NQCDul^HS-jIiK$bC&XxG
zyS$c=$_q>BJr(%3Pg&fzOmF&B?aDA!BNi5(rN6I)PTYRq=1X6g_WjvsKjqeJzr_1$
z%Z$Z++m;{NqpY}m&$pH(y}?ta$a4wE<oIfsPYB;%z2tA!zRkjaGZ#du=?Zag{1$C=
zCHQ8++q8^n4j-4kGp#oiO#P@*bEWpf?v8}t(IHK9{<5qu%Q1Pp#NniNK?l2!_tz(C
z)6{l^L|UJJbucGklf^GtS>*yL?TZ3NJGytAVf0*oE#u*;WyQsn64R=_ALW1k_RPnB
zIX`dh?wY+@(p5Id&M#u2`&r@46yHlPP6aHA3K3fQYtEFpQ?5pCTP(OV>K4Zq!FA5B
zoZ`5mQy%ViUaYv+M@s8$f-2Mg{T_SR=adTZu)9v{&1ABvY`&{;`9PUw`G>}%w|xpU
zU+v>|lwIU|-YTH(lDvsEug`=|b_Jb3HEo3t7rV~1Zf{-QaqJTBseGw@?8yOT$&bIi
zVcZuIxc%zV*$<RYb39JiuDiFwj>Thl<i0zH67NQbiwlbJX-u`PDf@r&$&&b}M(34>
zZFa5RdVQs<{cbjO#e)6&n#Bv4j-2huD#*-wWaH+Nc5{<|-9s1A(gnT}Z&d0d+^?lg
zbl!2Ztm##GT!O=Fo!6Oxt`98tbkyfLi9I~%aYa;gZE0c*d-FN>8TtWL7oUCpQZKC=
za%Sl?!NB5<?WY($dG4srbP>1MlC`$ceaWQey>|7}4uq?%k-Rj)Nku8_-=V_LH6O3-
zGh;TY-eeF_ELAsi+i4GFi$MGJyY$vusT4GehHj`5Ot_&J`|jPt+ow8>-z43i@x1qj
z+JUmj=Ffhse4l>N%0D#QQz+PWYw4OWJ#+VymaQH$(p0W3Ez$a!DbICu=DzDw{tA50
zQQYp&TU*1Ks4=_B{(9~8e52@tNrvYZ+??om{6?NpOl$QV7AKPj^ZWyz`DM(v{2g3;
zG47h7lj@|II*m(u4;5uqM)nB`iT5PM_^IoaoHm{q`##{3NzA1aUKge??K=8uL5S!2
zJ)3_$VyNr3dfuPTrq3|7#{T&yL7~(aY1?m3$_r_J6#1W3$yUwPJiK^U+5x^BGrnEE
zIQjfsvn$IJ?8|<f&&XieyX24Z+OVn*ehKDh0$P?dd&QmfnG&$^VpXicbgOC&<EI*u
z3%w6=f6DjwYP$LN^L#dj>8EmTt4jxmrfIKP_t<^X8T+Eyx2C$9KdocZ&aZ8{dAQgk
z>cA9-6y0xY_6r|&pV5^&TQKmq`Trj|M|1ohZOUv5Ns1P-ENfNRKmD~vu^ww>oS5Rg
z^M#8xiFOJ8vhp@<Gpu_z!M3~8^1$-4tN$b<B=zUX^w^2Fzf1Uhbm^+|?PXV{d^@_t
zcH5pZIg#akSIe{5N{S4BJ<3i=?O%E-(s#!e_3fQiMN$6c1%H?H&Q<LGH+f3n6{*r3
z=0Nc?8y+#d*?n(iO~}G^w<Qmqc(dqd#mzMrcK&aa|NZ(h50{nUq2<bgB7!S_eeGQ#
z-+FcR61B#STV!p2&Z||>fBR$OoaychzQ4H8b7R_}D<`M?D7_+Z)Np_O+S*OK&tF`9
zsjuuM6VE3DVMjJwsY2_R%;*zVwY7X3FQ#34pU)HDyZ&(M`A53fxfIV`%GBfY({()^
zP~K@T`zAIj>w4%+#)rG#9p24dbLXj0?o}<h@A(bN2X1E^)0`fVdS-{~%8n^pd}Hp5
zyX&s{D7LG*^+o*5idVD3Y7O*u-{mYk)Yu{%X3N$4cUdv_<y(ur>a$IAIRA3lhk3hK
zCkS(<csB+Iykq^dX>Yxs@E@P5x#r%Rd%KN4u6EGOxS!u4ZOK)&Y{lv3Cnog~W^1kl
zty%qd$IHJ@ci(?saiV>9N!;@(8s<kYY(7!I)l{<k(b<}7dK>jpCW<nbChfi7^k99=
zy{r3<iR^o#^|g1$QO#$3Ny44q^VIK7zR`Adw`SnS3$|%_e~sO5*v0(QQe^qsc3H<|
z(S*JG6Pwdl=SuOXObFudxf&m2dUM9lX7NnjwMF_G>%YFP`S$s6#H5wG>L#B~E||DA
zHt+Si7va^OS+B19%$0IE-r+H&c>m$r?#zkLmehF5uI_99^6IHdpCymbRKCwE?q773
zi=AG|cxBP?^YJIc9iJ~dTYoh(#?+|YNb}|5ZU2k5Nd5G?bWUT=q?JvX>|54fJULTl
zqMWs9vSQocyLoS2`kVbeCdI@&33?jIXs7jT<44H{UOAD>N>38J<r5FfR?KI$JF#Mh
z&%2BBE!?9X9o#sVflbz-GH_m3?WD^2CmI)BV^!^T-P?2`<7!pS!FNon->u4i^E9^Z
zf5eOpfAY@yNKW^YN)@eLbg}Bvy&gjq<J=o2?@hBV#+!sL-C@B|vU5hw;_V9F%kKMh
zZM<(a`~BQwFRlvzt@(AfSS!6lIJ*0XbzgVsm%ldqL{fP3+C}H?mA`jbx^|Z$^YxoM
zvR!!jFRk2v)4BHKnS@r>eqHtzhwg37jqf}u^xUue&5dPRr<d<Z>DWA7`gQDy)V0cz
ztIb39r8zHheZRLdY}$<A`_4yQlYW%HoqO=($@l!F#dA20THa~zabK`&(HWDc%QkK(
z4pmXUzF0W6FSDzo=62I}$L64ND_4)VOWIP8CA-WE67!vs!#(?X>ghWdnlzZ*%uWkU
zi0{wX_`#yzLLoif_f_ozAD`5>>sFb~TexJ6z?t1Ak1ncTdS`)+lE`}QulMh$FlEIB
z3QozH$+RQB=tZk})clBvYd=ewEL+avv47IaINOuYkDM*o8hlMd!)%U<Tw(slj@oCt
zEaz-9I=R<b_kxV$t{ug5|NiSrnsE4H@ymlU%6o0@t1q<YUA0xa-9dhS-O1PY9ojEA
zT0QL9B>JCqrvd+zC(_1mi`^@?HkCfSse474&C6|v{Y_5|@!u<1Kko>;r*~lLPMr&D
zoH*rQYyC2LJ#kysjD=yf-Y>65#l~d?T*-6a)^q#iTg`QxEqtnhGpZj6h<28{GpW7E
z<#~8@O3u8mJ1><gZ>w&5c3OMm(e=XoOFw!WoqXf@P4BFt3{O%<%)!UI(--+XxgZ`}
z@<HXl*y{V&53jD`cn~UMUsIW(7biJYEPHE!S9nFyEc0hq+lu$RGch^1e!-Mj-%~t)
zzb~?gYvcYbd27F)%6HA(rc5?dwY5^XyBU{UoV(j{RruB&;uY;xY%YlrxjB>ktR^Mz
zRycNY`lg7qLl1b|4Gau@D+6`ePdmImGtckSL;HUzQ`uIQb9f}P*9!LU2$;+?|Luw8
zyWEvpD{GjWV|iw$G7HTXm5w>J>PbHfTd|$l-5+)R7Z)!2WmwW!w>?EqZ`KCQh5Mav
zSxdA^+sIDXcD4PQ>xqm@!oIJ2AKQL7qneWF;`c2(<>=jN?O(N*On3e*j__K4x@3ae
zpYqv{{4e*2Ts}~F{q)E9)mO`+eY`XFDgSb-%Sk?0K1bR1_UVHP2i#w`3ddfa5<PdH
z{4(8`uP5bp%udXSDDzq6zI{jUMB#}ANoQ(ayBrAD)DSMQ@O#zTY$Dda=AU3?kM)uu
z-RFVZriNF)^EtENZfDP)SF=BIe@J(o5IgyB^P`@v(``PTEPfWDw<*$H=5p){1;*c(
zPVuIki9dEeR`sW?X*WNsuJ$kOW#`^~6Bdo&o+o6JT-{jEyR@rO+ViM&xZx?c3HRGV
z9dg`6wY**{id39jRLi)le@RN^F{jk1z1i06O&_zpS^up0_90tzQ=$IU9f|ucXe^Yr
ze>&^?RI|4~`RwlR_<Zt1&yR=SV=E*(r(`Va-+0N%x$%;F@#;r!PaDW|FZ~~tKI4Cw
zLA+!A)j1V1`2v<r-<9PrwOx77QLHEO`ud**P0QU*oA+GZ@o1iV#$%pSOSnV#yfl7r
zmF?}~p05`B{3@8*DwC6^Hq3vgzw5@8`G0KBH=Z@V6|B4Z$N4?lmTrPJGRjM??O0;@
zmXGaW`ZvB8OkREO*i$xXW>q;IG>h1CEauvV$_G)_ekOMdzB%1nYW(o(xdjtMYaZQr
zU3f#FfYbV!3jc@V_8k$faz55RMwu-vWx=5?2hC4R`c~>=@#*D{nF|~{7L-@?#B<%d
z&9&wnH^au46ZVC!h}=I{u`1@qfgf|@W)|xUHh5}9gwIKO=I5p__35l+^|x?FmYv<#
zvNx6{ER1_Rw{bfE9iyPFOJ?5?e{^d43C5r)N;`bHliGiF1m^y3o#Z-o`SRv3rZ(qP
zUJFOR;H$mu_^0ytDlUet*7iH*FJf)UjjSm$NLDtR@mh3UO=0c@3-P*Yi{1CadqpmD
zDHvvOS@OA5e>l99XN&NR*&?0AOMmv%TF=^=(x+p%GyU759P99$cVDAw-RHLd+El2v
zPObNt?v!6CjItZdF1}LUu_D4OjQ5{$h|Lposq&Oh(~4~7WCgk{JiMc9@oA1%j(2X<
zHX8A@MVcPl*8gSKC$G<E_8ZlGlezS#txc*;Jn#7dt~Sf7s}mbIJ=WNyuZ#;)y?x>g
zcfR=!k<I*PI{rPq#(Jl6@ig0=8DCbOpEsBL_OH(T#||bwYgFHz)Mh#mw?;WND?M#O
zNt{DL)fW#JaeYTVrJm&L+^n<R^6h^HKDySj(1n}T^?~P!1IK6gt=#^#Pq6X`cW|fR
z#^^wqE2?h(?^!EE)jCh4<|%6lyi9c~)!iaozGSOuq7{3yznH_WAFsA;JEksBs;bA?
zwd>NPt}P9@@A(e!t>D%474zIKI_q~(y~dHtv58#kZuYXR>RP-<K;`vhYw!0bFV}ab
zb^K#_;L6){L?dbY?27EKm)G-&znY@<Os8AcsV~Ad_o{JsrIF^cX5DqqA}0H4&$u<Y
z(kke@`OOu3R&Hm$eB+mn*u9fE-lER!e@?_pd1~L8Qt+;&uG(=q$Fjh)XUc1mB%dh8
zxfr{PZ}K^<zItVt?%8K<N-sF~>1>NRspPsQU9{OUCd)E-%5|Gi)&z}%TTWd~u=(7#
z-u~1?kI8?G-h^K;Sg7y(_sIV|{q+*b&Rb`Dc+Sca{aLM4{o=(Ow(5*M>06APKKe{5
zijn7)u4Z3xbVEQ(q;G0^YTKUM%HdP^Z$I+j*_Fk5Hgw(HKTl^D7bb`2G97!Hpfu-H
zpznfd6Mmmk-S(0-I`D+Sa;}<bSJQ9uI&BM+QtvocKDW5K)uBdklG9R~XNQ>gtYLBL
zPi1NA`D<RCy1cYJ<VlT=$=_CadxcA~mvTdOHQGe9bkiSq#65qvXU#Oe*S_!b)<0I<
zeaSe=iLL((uVIJdI>VEzIwqJ+C{^jd@wv-Q{q&^YZti#8wVB=P_Gd4e`7?#L;*lFy
z!|hMHbLHQ*-fO-bD7bNQRbAM<#c{0*%%=YjJ@wdY*M+U#s}#016s_8^D0{d2MF-bk
zTzhh|J;FPr6dQidF|#<P{Y_Ub?!@|9#XRj3Yxl$~yJr1EbSmq4z9t#<sK>Xt@2p(S
z{B57_nSJf{a#~HVv(4X|{Zv0V(MlxF_S@CPkENGCh^i~Bo)*w3>vrXs<%5M!4=ueU
z=IQ=w^NH)Od}^!P`f@)$3q5bNpUJX4_fW0D7p@HnqA~vNCG*bkPUSSbQc=A6Mc1ii
z&!e7dPVtg!@!pwrLhO+FG<U@<h078)zEO6KVOsmA_Rs{O1&beExvg`|S%vrG&FSZF
z#<j=ozI`n`tEBOwfWo?Id{!Cf!nvgLsysrNEkAUuWs>YI*c<)sS61d}Aq5$3Q=dKe
z&;G61AT#l$|B^k27O+0^y?a6->{64$-amE9Uy3#hNjvRfe7*YCBJH(v=KL|9*`ik$
zR+wA*{;7)DD)|%PDLYSD{_=@DKlA;$WgBIhCPX}`I4&b(&i6Y<fA^J+0Do=Ob8cng
z=^1gC51(n1$v#+?e>cO#NH(-n^m_fO`=@URo?LdxI{uxEcK~}}?S)%xt%4Uk=3PD2
zIs1-R=N6X7w<o=LzDqh}o_N_gna?qf2K7xnQ<Cf3j@>C~<h7VoRl`wv`)sIE#yxqn
zgGpE3JlXrf+imYZL7|4JSIrhr^?JW@Wx3hDl?Qi3wLJT<Al{avQ2OR(-5p9CA9eLo
zZ?VU+{(BvyQC^#MEj1zZAk&NKHLrz#8LXVX=4;55!%lWh>q`$G5J}p&ZCTZ+q>9&q
zn{PFK+H^Q1Q?$3$$Yf?zL;mM4;pb)ctDHTWb<BK<y!zG;?h;E(Q*6IQL>07pi#V0W
zOJ-eL`|V5fR?|0Z3E6jy*B&W+bwi`&O}w)g!`*QI>nQ^K>N@4dky?@`Pb}i<yS;s8
z;sg_JfwOmi?Bw2W^Qwh|$3FhKY^48k&7AxvJzKYKyKl^tV66~)f~mL8x>+%08t=#7
ztS3_c1l<yv8zvE@R1<RLeMCCP!_ctTEZqE8A4^JJepXsgS2Lkwk<v|Rb#cRQStk$Q
z=YJa9y)-_1OUlMM!UnGxg&dM@akILcvbXE0_)65iJtL51(=@Mp;@y7}7d1VL<e8hW
z{%{||$Fmz0m^MjHxqkoMbG|34Atu-EX&x&txVQAgmv@DFu5K#?i>J?t>JHf5Q4ky{
zacp+JkL)(L=&SMdidWSi{+zPocrnY{Y4Zg{&qe1>p6>Q7MQ7=P^6Y~WH(D;&EsuS!
z_-W(1<)!|q^A<**Im>n6{VsJwi8&=}Ep4}_K4E<P|7D@b*LfQXBF!}`JLg|cI`Zmz
z(9;jsu9hV_Ebg0_Re8A9FH_J(|M}GmM?(ZQzSDYSy<*+#Vx^6KT!lMUU-6Q5Shis6
z*PRibUj+WO*edN<=QQ8=>`BHfy(!LKv*LIBOn)7Hb$7MN@#{x(YO;jat5~^oSzPYx
zGyJjkQ^AC6rp#LlcS+i4X81U7nQXp0oWUY6ZN7r(_439_Lusjv?JMgfwQcU)<!)aW
z?-g7#Y2k~`?R<ykPt{*`d%k&6(FTi+Mw+@2`<W(*T!<(WaN2iA$?(p;55Z!OD|R)+
zo9vrA$;*Y)s&$g^D_ON)k9>GNU)%1Uy+vi?EE#3z%QNq)GYTF*|3rda^|KlCyI_rF
zKUW$rUDf$TU#uwg;-aJRYpc#YNuBaFW8d;Q8-1S@|LOWDXOkdSVenHhiSc^3UIXXt
z{YPcRvmdku2cNr^X&v@r&1U_q9l6c2y$aRy%RT;G<5O&Xx>@;|lg7(qHrKpwX?|B#
z4$5<|(R92S==t%$y~<dLdfh4NKf9kboi@$&Szwc-RzKzAyboLzZ)FbkZ@X}F-jVkQ
z*8V$}w`Jei89pC4r&`WYH`&v*XU@UKu5UK0Cq+6aDqf4;Qm{kTSvO)u`X;m8Z`C6M
zD<%e(nX>roRgZmst<pblLeHan)={}L7cHC=bu4e;i_Q8ejT`y*t<9F%q~4a(xa?-i
z!OY*h&mS-ScJm8ggpP&%jJ4vI_kLktH@EPr)4gnuJ881XtU5st-Dlj|J#%B}_p|%g
z7e4uY!f&DElgo>^^VckYIXThACTq%s%-8#OdIijGzZcSTe5IPrCySR+lkf8B>=j(p
z^;W?8vtzc5Qt`Ta#reNOFYQm7yhb})?d6xXakm^!XfkLW+53rSaq^iJ4UAU}?ucY}
zve?SU+Up$Y@O)?xzN}kbZrhii9uDg97V%|we@%as++q}?96O7tvu@?ii%opZef%Eh
zxti-AxOmv9xOkol->`Sl^p)G@znFJ?n*S{3tNP1!WxjW)Q-1xjdtHbegP;D6?5lny
z7bMwN+)MVTG^lyF<w5jOvnC^z!^@2N`_*nswTEw7s(i3JG_hLDX2lafpU8GOmS6A7
z!o1usTsoy`q+|Oq()DW1rH?yz^zp3{c&C*)_jt>T`?(+EjPBa+HOp3K^V_66rQ%*U
z@8kLA!Ed>*O1|+sxM8K)l-DXA3)k0bNKW@&rq;gt58rBqiHj!1ZVtb?WA28R6SVv4
zP8%(H<aG1LmKx!{D6KtjU&Kb<`eD*}e?gDX+>_g{tnkzIimBa{YkDC};c|g<@uq8U
z`HcSe{{NWe)>5ng=E|$8-a9hsr@rYPjuN`u`D4oaAl;aSt+~f5mj6ExA)}JYy>(rz
zM}NY)hDBTbFMqIdpTF{#$$a6(E3>b~-cyO4qWv?sFZh@-_uGiJoL!UsK29`R{x<62
z3V#C!39&c{4)^%)57PgJUT92{z1DZVOY~LP#g6Qsb%jx`%0)X&Oale}eD;yLopn=v
zpUIsMHz&{FST_58pk4go=QCHgWgmF+bvBoapMB<!CnpcC@vBX~ulQs-3&(8Eu!tw?
zB-Q1E6PKTN%nH-_`iyUu$ZL)x3Q;doi&pMFRpy+&DE89X$=esP+;`e%-{fgOukM}T
zEm;``SDl|VhkhD$*zG^6VaHy^c<=1-$J;;u<yc^?x-}}K;Ei-qv#C;y%A4<Ilcq=J
zPmxSjs*im0{MttL`}Kcs=WOcKlRbCbSRg8O5zDL~Yk?ez?}5gzlFs+N(OZ0a`nMj1
zZ1Gik=X3P?|9J1Zaz`xa<C4;M=UHB>EMF>MX?*HtoK?<xlivoG+uyoI-sV-`x8$hF
zHP=UVnhz&0zUW>paKm}ChR3<830*55GIR?*k9*EgaqoCecU4Hx#LY9ZerA2xnSRwu
zZSj>~k;_>MxW1i^zaM;}DE9O#lTX{7Dgzc3uK3Qe@UfWAfrTg5CWUUB$+Lhh=<!+)
z9gmb(du~53Z(jDmde*Hwj}0~pdVD>#GvNb|tKzk`6;sXj_;Nl^SG9RLUnDSQpJ~ne
z!?#6TRBC@F{*lg3(0~54Ly2+L{EN-!3ZfjdUbTFF&fm|+FL%&RBSxn`@Xz{RmB)<r
zTXw2kTJ6MorRDi@%~vxY?T@_rN^4!&t8ks_iw&2TdcTcT_<3Wcq0>%Q8QD)0A6F}G
zI)9P%L+u)_?oQT&5&C6;d2`?RqzHI_FQ0KucjnB%nQGoT5xHqz@1NR8YkTuOZ}C%)
zX9z71oX3~Xr*tc=qrfKexa0~oV@dB94|Q%%(0h@x;f-6HK<37aoU@*FUU$89{^;B*
z940<?OJ4Z*e6%#;Q0t$VckG7io~LJbb_=xRc-&bPdhYz<J%vlxU0}W}?itLwOz2Kx
zymFOdyJ4$^d3fgfE9=g;&39s3t*<zbT{P#H5TC=1eJ5VdJb#gY`o5#m&&7(IuB99{
zEtg?=w(o&pTyOc~8MD87S02~hba}0Z|LJU&^vpY3M1DNFB*5=|j3Z^rU8Q?HTR0tW
zzt*p2H%ocUdRD+_&7Je7UR(eA{37!5PQRCRr_3+C&UI;&{Il<$={v1|wKc4zS1V^<
zJu4Et!`}RNt=NH0hpipA3Gn6RiKc&;?B%pdj(?7T{XLt6Rqqd(sLWImI+->%WzyXl
zE-6NZQ;k>MVC_m$6+3CSFwJ~XBKw`LlCQ@<-x1MZDoCj;>@D7@w6n+FX4`)@R;S7O
zi<lLf7vD9%e?Tri+|BvWo$kvAI&Ym{&r)^qi}I!R>AwQGp0nMWv|#ewV~Y2#sd2c?
zdUr0cdqcoA_UX!6+dH2~-Isg%_v6dFfLHe(c<rm6_u63@`>eGGE^N5?%UgJjvAfv&
zPNOL%hd=PdFgP6W5Ek8<AD$9_wbAAIY2_W)wNm%<2OC~Et^VSo!>&&nlQ*7S_~Mo2
z^|!CN|0isj*%&`@*4fECp0mXy10(NmpMUn)_f4BO<V=>h<alFG#TSqL^Y0kGxN>Vk
z#hgQ1k5o<ae6oDCLq}VtPRpYF>a=Mu1)U!12!(#TQPkU}b|@uajbq!l`r50r&CdVX
zn3P|$IpO`3&q{8FnbIO0F<L4gRz7{-85+Fl?DYwkDw<svRPb(m&pLOZpy4MC&iQA*
znOE3~XYY^gbLDaSB5`+mI9o`p$Tr{eB63#dRtwYZ)~35o{@UIx^oM7e&ZinR#~&`q
zylkSHw<5k(od3nl`s?0B?HaaQi5n7J^lKAa|D>rGsvenlPkH<Qyj+hU{e31$N@wIY
zZr<siEd8!T&+ONXUzw$gg94f7u8l|t{~~H$5Pzwn|77>|ub;YRtlzq5Mdowix)1+u
zmi}?IZl8TS_}cd!4bP?q+;V(5w`8Bhztw(G`CS=`xhdklg}slbrM<nri!+aRddG3z
zy?ixG9iO=Al;8aQr%+k-)I8=t4jXnz&8|o+dn~z=b@Hd*i=J0){N!%xEjd%|*ir6W
zH*=18j}qrOvsFLc#j4Kcdfz&8+QozKtqUjQtTo$u_<Hj(r^V08PyAW%Y?9!H{2T5U
zmc;E}%y7_MZ<VmRh0kWSI&r=m3bPuSn;0iY#r!VfIeNl?;lzPG#s>OkEK1%pIjYWW
zegEl6_}8R-#fw}UX0QCE^Tg^y^7eHp6PNL7J+>Fw=zZB}_i>qQv-@uOY5U!7YPOke
zxVG%@x1g~54jyZ+$vAV18w8t{)D$jsIn$GCak}Yu-s+%}7N=*KzcSqR%P1k$(8x_B
z#W!)o^leGGg^~i6_ZgF}Y%4k)z<FJ2LH_#4cM3n9?UwV02QS%Z@MeqL!Yv;HJ)IUR
z$9^#_`^8zwzU^9%v;N#CW$DtvW*o7W61i`uHzr8<+u3Paec#<J+O6Is%DwVPaqLn)
z(Uw&kb~Tn%om4v6zxd^i=TCCao|vxuk*z#3`SQOz!RullKa`rZd7}4(nHl?qobMjV
z+^{62wvDC0=$@B;QCIZxGYfV|q?%q)pS!e0Y0o)>JIYt0Qd=Y2q<wfMJ1NeVtG{W*
zx}<ul&9Q@lx=-(J^R5aspUI%H@-F*IO_q->opnhaMU!S|@EzWHd56qvUnhyVd<}=R
z=B6r$v8>o8yo;?xy}2m(kN>ANhUGsz4u5f&`S13kpMTeTeAp!S{%U&er#&+i4&Bg8
zv*qX6wsv!Y=>ab9pQg{Ju<@<`c0;K2ue|UtjT^_Gr??6yzrL1yg1ucrrRuNijo2#>
z-mIFf8@?ziSW4hT?;;03rLT|p&flL9vG4F({u@6Z?BQ9S_osCl*TKcF^_w0X%bvXX
zw5h$&o46~H{MW0spTC$9Qzw61Y?6Pv&54LTpZ+;LU-s~T!)IZpwS~!NYumFDt=BJW
zd+?Vj_3rnT%|8_qo1^U{3@1-qwL~d!zV_Qnp6_+j^1rY2dw%07N5qum@KCFpPWrF9
zT}+#AwimCsp!77zPfk`u;6~^wCa(oN+ASA4)+y}2<#I~Klh3)U%)LD1>Z7PfTWf6p
z-OHY6dRirW)|;~{GUdA7OzJXl@;DISbd{;mXV<cWth0BQ7H2#@#pQp~|4&|2z_+DU
zpI#p{@AF%;c9-gumEq>4y=AI;KLfblF9?h^`nb0{B)M;b`$Dekr#O$Lb>yb=wH=6m
z)Nr_xoBx(i=M8U#m#Z%9bDg)_irZ7Z@WgxWM~5w!e&G;)>GisD;=To5ehL#m?`w-z
z``oGb{?TERU)SfH4GJ=zvwT^X^-cG8;=dT?IqhvKe9=>Kp>9cs>=&sE{;y<heH&Q6
zgnsdKzq|I{_8cLjo6}ybT%ob=pTQy5f7|kR>%MkeYr|`w_xIB0<mdMCCrh+<hEC=@
z)PAsgL&cJVp=SiW)72{8s9du9rW7WW#QIIG(w9x={bZvXX4;m;B2nwkJDGjReAoJN
zdvkV`r0{_kYaU!#xY0q`=gILWhY!n}Sx!2B?~vq@wAl-HtIm=Cxj8|6-XdQH-8zj^
z^SBQ>>`B@oVK<#)OMpXBm&I9|#KZPXadR&$lze~EdQy4r>#CMRY)#2`79?-WThW|8
zrJsM|qM7}UJH6vit2IxJFYORvI&9qdF73f0Lj^&7pF8#v%T0OLM(WjF{gz^pZt_TK
zRiLoM%y)@LR|!vQuxIm#b)0qditU^t^*eUIbD!9*h)Z7lSUyQaH1hY|_Pb(>XMM4g
zi~9J?#;`)$s8iR<OuX`az=V7@;rh9z9~o{&q}_hl!v5C(ec;6^CpV9`X)h)m_;2Sh
zna|+;higfv8CVahe7qF&=2`A!xzMQ$FCGZ;m?iFBvTxPh$~w{In!G2k$!41Vk%<yD
zOG;X?A!5e)FON@0_j}Cj?X%$vE2)lky|nl9U0oB+N1?y>b=9qJ`fZ$h(z@^REX$8O
zOc^)sJDs}c__q@u(u-7P^GdZDZ9KGY@|?17FXXpr)yxfVyuN93A@@B?j<0;d5=Ft!
zg36o)>wGIX6Et^KtPlv^7cggX+G8soyAqp>nVVUUUP~^>TYpJLZQl{Co~xhYyq&q9
z&Tdiu8+gy~Jg-8B<o7+3c3RYWyj`w!ujZLoce6}s{OzN;8$I?0JC`v0tv1it>KMa%
z?yKjzs`=MmaIqYfcQ=<|+^$%4By4%vG1=?Z$9PuUd+N<Bx!}CFOi}J4y|co0OWx(5
zh+#i(`t-J%VbYA-C)wNYnMSSueCPRw)|nmROH?dA|8?1P^8V4(kJ;wR@s5p$MGMZS
zPg!=h_lD*carPGihZ{C7x-j|L>%|gmA3J7e3jH>Vh}}~6ZW}{+cl!3q+-kS!r}9N-
zL~mdA*4H=c{=u30>eBDo`?EaDKYU&`dHGb+oj$g;Jh40aq})th_Sjur5N5Myp_}7h
zzfN)aw|i%-d9q>Fu`4GQS^2Gs^m~1;Va?nfk%f&SAGhapM=#x>&{^o$=UP;GL5i<o
z$p?vB>!KC%XA28`es{Z}?on#g&oZZ7yXTs0Gx{L=Lv_uh552Qfnzpo0T4SA+c!o8(
zH-2r<;m$*4n#?I)N9#=<gnl}?rhIa+<DBw;2RV8Sp7UI4{C%t~L1U-#j;qFX49vTH
z)SPqwoH+S{(NHMD>Wf{(%uRc|k6xX8bXkF3%Yh4*rzmwiG*`NK>bvCyYbnbORR^c8
zN#nb=|5-@b#Ma0sQpXzpzf5g%XgXqMW_;uN@%=o93L~84lzZ)S&OB0@zt+v?_FKMt
zTva7k6dMKpY%Z1$=9n}gp5aZes?5wBF?ofBE-oKr_BMqHFnu+iet+qQubjG<x;Z)b
znlA~x^y4RIykq<_p;d|tm(0!C#>vNbQifrAR((|dR*(HEW|#P$2;Q<&=+in7<2Zlg
zBVPrXR+}|Ce5xm6GQ8V3CFC#LhhJM;rZ87!-j0liZ3~t&OCK;#kL5j{q$+B}nEGjL
zx7n(l#{x^kXL(FrbW=!M*8SoVuEq2I%G5_3dX}>F+|500TPkyonY1plv)jpcC{|%-
zyyvdTF+Dd}UtCVw^xMxepX1aY?%Pikb_#x+Frmz~eE#lfK2==P7}umMxuWr8tC{3K
z?TtUY{&t;vJSS}S*#(!*PnWl`{bec`!Y^05|H03{(rGo@^3pGPXilxMnHd_!um06O
zu*0_8t$b#uvb<`N*{9!}3)ib|%uBiWE#SwaLg8y$ooBzl(E9S@1XIVQ>y#h%FPfBf
zxa;(RL%D}UW4%9~d2%S{OM-#tHl@|MEGPf4)f!0O{C||=&K`+N8h?6BH)|ihXeIl(
z?UcJCo3rRUvB*8sXDXH&b&9V#P&|p{wg1*f`zrG<+Ih6K6x?y#eEoB=zhCtZ$L`K&
zw=Ub**IrSJQahdfbN2m;oE04tC!Km2R?i+iSN8T9{jXBrC$ci%P$}7)_9s6}-7L{5
z&*Zv92IKaiaGRH6*2lt|X6`N9E$Xbc?z``XB~M-_iW&dTvotY#A9kGQr?CH;>sPCG
z6lT8a={PFcoRkpvn?LDz($d<0CxRAytL2#SWxuN2Dyz!y14TMkzhxHA>A3d!sP48$
z0<3eEEH?Byy6?>zE2rD<g|1uvw||h>5DB__0qq(MbLjbL;2rrP;LDysmua}9Las>4
zFXGY%@%<8WQx)``BYh&AoVA^OogxekxInw_(~A{MAS#@k@+%agbxq9_bd5|66buc`
zK!@oV#B%977AL3Xm4MFj=hAmhEbvIpOwTA$Ftae@(g#@slG8P`G~v?sEJ@7COm@sm
z&q)RC`wuQj%?(p9G&JGTkAP}2F)`uNcg{#G0^QJ|q3^8kqVK97pdX~4sGp>tte>Kv
zst-0@KTSU^EmI$i%2M^y@=J^K)Acj;v-NZIbM^D|^Y!!dQuPb;3sQ?R^HcPT^o#Y2
zQ_E8G^ouhq^h@+hGKx}D^-Ie0^-J~3^vm@t^sDr%Qj796AzpRM%t=)+GzXn!5QKa&
zh`Ff(_%1DQSi(*>Ffy>TgdJx9I^Dp?7=GA+G02w?bqa>2CYFW@AizcVbc3&~0W!BP
zv2s1mJ2>~?-MJ6m$tnC`Xx_csxqwqhrQ*VacklQP>h9QW-Cw-!$({HASKrfK)fTC{
z`unT9d)p_4MD_+AIdYCeB{Ti?nG>gu9AXy;7Py*}%DiF22IGwzHYf%Jt%|mYZvL0-
zzTgUjrB&pOo1gwFJDm|^DXH7u$vpQyv*?=~#!Y(H7{baJw8iDM&E>hd8+uz?zuPyK
z_0=#GE?C{l>Cnijke$w5<g`F!^XBgbTMUfL>(+mszn(!VIf_ABU*G)j{g(`a(i0Z9
z8eR}vz))hwesfQ_30oBNl{Y=Q4(H_lJ3AiE2c2(l{LGtY&yKNdDNNc_Y$CiQm0?Gu
z#cbvfM?VGk@Clp`^iMLlF5rD}|I!Qr4aQf`#Qgpjt++YUYB!^-V?%lK)>gw4*IwEl
zJ$jAh2}i|xzJSRS*)?u9=lmDd`M;il?ZE!o%n7MUfA#O~-~3-`(}us+lHl_V__uuB
zu)&mhMpQ&IgV&@_KIh(@<6&5^_GEmcL$><v?==gwFC3D}_#*e=`^82EPeD<J53vvT
zf3=jfj=EuOZD<)8@qg*WpZc@Dn|a@u)p7IYjfR}La|Qlc&EL_geB#I6_i|_c?~Bon
zwl<Gm|6d`PJ6ibi{*)OzZWz~Z+FDS+c(UWa^|QMzAC9N76|og;+OVOZ_#=}8AH#&*
z8!bP_vtF@%<5+JU`QK=N_J@y~wr^&ivF|j)&xjdK_x>wZSTe>sGNikUPw2mHFZ;h+
zAR>}cP3+h?2IUDeTXhe~e=9dW@g@Gp-+!{YcNnd7-akIhmGJZR`~CO7+*3bu<lMDe
zkNtn#4?m-$tFHL%r}5wYs{gNRYGpm=`;hb`h23CN;U=bt$eWdncjo9Y%>V!NXFmJC
z#sBhG8(nyGe|hrH!y3uiS?mw~PVe~s?yq~t>;3A@&+cbCbN{%{)m8TXGY`{+Ka%ya
zVt!(ezw=-Ff8P5;`KkZ=Z~pIo`oHwg|M#6Lv1``;|91J0_JjY&`L}G`@a;$Wk>57E
zE%v`}Yr6Zp?Z&_R0lpXZi$z^Ick9XjUnz4M-%BecWvBhUZx&_Y8MUL?XNvBe-n0Kr
zUH<QEEicOEj-Ie-?&PEK{Co`)r?x)*|Kncyxf`$k1{PNBU%fwe!S|`Z?oSfhcC1XT
z{;iy}x;Vp&7aU(45-Q~l%>4Ws#9#lOG^^px|9QC##*^31{anrUAa)M_fh*?(AFh{v
z`iRY-`)}$m@kfjX-Txi;Fr;<<SIR46*nCF*%e>_u;*T6=N(lSce1qZ4s`?An^KQu>
zVN3}7um7kvo$;UJ`>VbG7JPqo?7wUM*S4Ea<R^$8;Q6IrGyUA3_1Qm#Kh$wtw*Rnq
z&B~QW<^N3o&R-Khv;4&`{zLo!l<D>Te^AYD_?x{(-Q>UilLs~Ka^If4&wnw$qx`l#
z*QPz*TYs_FT+jN;|3mNEGyarX@!#!TpKY&xtCjlqus%Hh`|@Aao9_PKao<1x|M9=~
zWPX45-Td4A_rF)i?T>8SH~;EO|GoPKPJES5vbcYE?!Ead?K$7ish{<C-?cO6p7kxL
z|MEVzVe{;}_Cohecl=@Ace?y9drkO*Z~dn$&;N5b+*V%IUw@#ybYA_Hy~dSIGXFzg
z)rTFvarENHzv++PAAen&|F8M~zh0)sJC4UVx{J$>$v5k+ZjOGh?aFaSqWl<ZUEsTn
zWfzR9bgj1Sv{`gO?P6FB|DU%N+LKJK^lsav>R7D2$K}(b(kmg{zn5A%E`56P_f3Vk
z(yZmIiHSnH>mMDT=;13bXrs7z*N1iAyPLPWHHfANSG4P-ZfoY|?<&$ewl{kHlxpAj
zlb<qP-03@&$2wi+QSnKW<S)xL?lv5fJSDTZCo;xJBHc~N!s<(L`IVWoZ^yrg6wX)K
z^zjRa-SLZWe#YH;ony$qdEV-!uX6n6R)|#G+Tk+6{Kewnkhn#^Pj0gK9Oufqanr(y
ztjk<}74tUbu5e)Q)4J5>`ft+2&R)Sg%*_lNg|4h!c_AWss;}3@h0NJo*ObM4c_a1i
z&`a^KW*Zjuso(aB=bS&WY3BPrN2kAG=hRQ-#0ORHixOtPe}UuRmiP5H{pUT8I&k{!
z`^R7BE?f8a*E4mQ{Rh&fJYIA8DQk(lU1s}(efvMmoH1cj>**^y!~WMOt+3;CvvA>)
zNi$VH`->yFV$w>>8}WVr(o{M80%UAi71J%FzD935Ec|q>yW!^(79JU%^XtDmN^mCC
z-gB%yu3B+$i3_`l=;XAM>bFz5O_jcjIG$TJEqdkTiYwC<vs&~_qE<1;Wr)X|jSXaB
z`RBoRe(ACNKS^b=70Z2&n8#U%+Q_z5Bm^mDeY#rhwJhb6iA&UdT_47+f1a~+#KipR
zF@3DQJIyIB-Qx0#C!y^+!e-ZNe)0&`cUjFlbipukZo&p-J>IyLNe>vp(u^*p2~_S%
zXx^53eQo8t0NL78%fq*KZSU4?c^=iZ<L$hYzIS<jUDY<$NcCpkH9mSb_RyPc@7%ue
zYg{l^a+-dPEyFMNDA&SMyydDLZw=*^Wy!fp7t6Z6mOoa-QyJUwCiz$XRCD&nTB5Ns
z&oiE~#+>O+PGerqe)PC_@vPlb(v`k)*A_@ic`mTFP8ZlF*?r8`{$j7L@aF07e%{OT
ze7^f3OXa&29~{r{9o#ly!I|71Lsh>-$=&AD6Q1vURHuD#xhJ>F^Xt$0A4GXPo)SIJ
zb2a0C*Y`jFIIhxdXPvX{^7)U&nNBSCYgnI6DAcpqrcqSLx4q|B&H?T(cl@?Jiw@qk
zO0MW``MtP|+_xo4()r0UyC3L>7BV_F8tpP$*p;ww-?o*V?bhlZ+izCr?5faT_Q~UA
zUjTP;fah99uf6&E3cOb*s~f&dox9?}1o?x_nQbelmw7VnE1em}s%UTgTspgsTgYFs
z;-K~;Mt-TfkhjY(y6SS}$sIq@`YLwLJCEvR8|;sJD9lw+j@tQXZD$ZGM?rS{FOmBA
z&dZDKKe4nv$U5+93E$zzhi_al+;;izy;m{MH4ZF^@VO#zJ#CH0J1zgY7h@)QZ(G0G
z!Rl=8n)4q+%Xgl(pC4?sD)DHSzG^Lp!WY(M!G*<tIBqrfSw+lz_o6vfAY+-l=EVs|
z4DY4BPhKx`Q2N2fSI#E(W({_Y8}km{65iO_{hQb4_Db%Y9ieYz9Ok`zV0~Wmisw>^
z(?$<xZ!tJF%X@2$V0BQ!Z8MptB|6jl_dYs(`0l!&hCg=1U9)?(`(M_aUc2=P9PwM^
z`W&-PWh<<xiFnAY{&Vq<Z9W23iRP@zEA3dz*!z?hPVG1@%<_@5FHY<`%P+?BubAb8
z_A4}R$=~_!yyFM|CeeNJ7p~W2F03e=v~-h%A#c-5^|XBlYLa*7_ipywe4|$4d;)9n
z8ZRxoeeZ;?{HwIurDh^%d~EZ|HN1J7<=LI{n1#ak&GXXcdYq-!;a~GWw?Ncj`U{f_
zi(Y>3;11p6-?;SQQT;oI4Ij>Vd_MN_BaOzqhes58ZQU;kdAF~eqA+c5@6Vg}8kX%g
zSiF2{bLZ_jJ~7er{_V-|y>4Obb>REV4Sj(VF4T4WHd`6E@8`<01V`&)hcnyL4*Yud
zaG43y-lHm0zaE#6FFv4rpl1qWF~h>#qv}@duBmhW$xNFbdzkyeyd^@pw&g0JapC(r
z&+xkan#jU*=Wt_P^7rSgpSI-WPMUv0(1hpDy4Q16H$Q&z=F)eCT%}Z#s6MaDmQ||N
zy3GdZ@eJvk{MM{8W8Gi5?Z&KVFX@v<h1)lAxGkE!Gq8RB7v|lqE&c@wbNRCNo!$66
zc9PaLTh@!~(>-K6bNKXoCd5_yho+rvXBKh$F|9#qK_kzXyx6ARN+-?}UncF^da>UB
zxZ>W00)3jvemzH9KLo#%y;vw6dh(o6^9hkX(#n#y?z~5%_B|-M+%LlTsc6CmnYn5%
zt6eHuji($GSez66h+&c7#fp2=_h{!%zVSKfv;N7#s}ncwZF<+GespK{x9E+26IdmE
zgFgN1_WJp(DLiujn?>vEWmCmdACx!go~*N(zV!N5M+tSsDMzax9g=;w?a<+lnVUHu
zs5S?>FiCXzm%rRHm-*Y-op<)Q1oZx7y>=?L_L6(x)PqMp)gSh~>{?;nd8XdlZ0hUf
z`}LAlc{RHAd;&Jt{<ygPskhwQ^bd`CA^jSg{jNWnBl6m@?98Lz8xDJP_3AjRV@tR-
zP4=1N@^1`%kBX)96qg=+%9g`${N{oUEBQ*Fx_`bBrg&lc{JY74HX)@RyH#VCJ(eq)
z7@j37ZtzL^vu&+e#MIV$LGCGnkDl*2(e4)F{;5Q3jqS(6iRM0G5g+t3)gPamlKsDx
zqq1uI^`f1!yG}h`$kOp;*Pfo=59hwk^6<WMRz=Rs<HWqpJ7%l6Pi$$Qxt)LhEv|%w
z@2ma1=f#!2Iw^2GGxGn^Ut;qn++W)l^WHuyhV}R4w-$CCMh|W}$AmBZ)-1LD%b}fK
zC9iYZ7QfsYvhd$#J@x0)RX(kC4cD1F;k@wHEfLi>if(89{ME8`-!|Wssa!vz{CR9b
zD(^TvsT1zHp1<0&<JY+}vtBTA%L&WY$?o0JS`fZerdO*dZc8^)a)RQlM{CuZbjyA$
zIIQ}%<o8jPn(hQQfmItmh5s~P9P$2AbWwGN(K^1J86uTJscR?RpXa8*8hLBsvCHLl
z`HbpYrdWL9E?VZ5vtspA#@VkKq>j$K<zFb;vvt9CGxz;#R(Ol6T%GSL7x*gd+Kr~O
zS6*Meq`rT`wTk6TlERttR`X(330TFxFkGAMo43vK6`z!Cckk1=`&1I{uReX~#Rtdf
zyZRp6x4&`Y%xu%X=dP7-(NsBH%PD%!+*7mTW_q175a&{S*4V3dYhiD{6vJ_k&EXTw
zUHRvJ&9h-Hy<Ko=q4#y6(3!!qmUS|3<rB4S#8i{dH!VHyz3V6Myhe+a$zSyTW^J{e
zdc5N;`@!UA&tG%PXt%IUecW)+dBx*ToL71#u+(x0AB&LpQVM@}V`<H&s|P=RTXA_>
zQBtn;N%pU-ib=~iKVPv~^0M^8KiB_+tGvH`S7geS$680`rUbi%aLme<-`%t);o*Fy
zTUV~%l3sW7l<9{@r$y)1`5(85UG!^fa2K2IO!rv5V1aYSIWe4RZ|e^3-()@E_cj-`
zxrTv_M$NN$Gya@3)9VWRlG!smYFpQ`e`{JZ6lz~>Ix{0QGR-vaao<U+=v1~lMIMtb
z8Ljr%Dc1OP%hAgnxhwW~U9R_Syyvz~amUK~15+AvT4&xhU%&m)<IA~5<$A{D;WH0(
z$UdH@wY2`oyIr|P3)f`WF5K`|?}zksj?<3YE7g~+Qpr!9_Dg0`xQwq}=qbyi?<ZK;
z@0*zYneWf;?Xx3V%}<}Ry|GAV32RgGDGN^yncfH6ml~`*>v+A*K|;~lbl+EHyT}Q9
zv;JrN6?nDxzFPh-{|zhNObq>ZzT9eC^Zi$+*RfwyNa}lFP``G2{u$PfGC?+F6DBu4
zP-DH2zP3Z4Q_ttRPjm64<i(rZ1WsS<X3m~C<t~THs|xOXH4TyIrs+S5<Gb!1I-#?5
zLG+e63h^Q`AI14pwX*t+)1J;h`OUNcrBC6@%bo}AJ6n$X^EfLQa%@~&p0~4DJ-%R~
zaLFD<&-F?yhqj$yH=GwI&_1ax=2M|kZ;|v&;X3cqD{Ce&FPZwjq`Q>2*KAvwW}YnT
zt<2*sk7jUxcwdqH<MLYr7yE^>a=Jy+jZ=%o@*j3x%U^klAt?J(Wn;<?sU;H8AujLa
zBhHp__j}0(t(n9!$+>^A1mmqWYZqP=UAy{{Rr=G++mjqlq?v|4d}-6&T(x~~CjTe#
z$y>}j-c8&bVB)p>;r)FtcTHH({^56gm5E`xH%E>2bcb!v<eh>gw6)_DZ(2tOMHbI2
zICQn<ujRF+{k47vV(0xmTDJ08W-rI(Y1udV*IH`7b^p28=)s>h-{poqPRq@!<R#bl
zZAe^Fb48=0@t#MybeYHJuVH#u((_(s=!@RBVLG6~AKY~PO?B4I4#U|(RkbNEu4NUv
z993hnZMigsr|rPPXv=*I?LX(Lg-Uw9NzH!2y7`)a_8fZ&LzaoP6E{yzF*NLAeq=8H
zcyDjo+L=WjFZ-uO)h_*b>$T+LXvYTcwbikglUYuh=}0_O@0DOb!<87CYTG}H|E}f5
z#r@BJx!Qb_zGAsF{oCr$$0=`w4H@Qk+vprvt+&igHh#87w!Z4kkMqu6__X=cb)}U>
zqBUaEy4h}SKC+hWEbrpd%`&k*EcNj<dp2hXDH>$h^B#BFFxg~=m+7`$fj;v)_o#0)
zJyTmU_xP-(sovgEet&oQI@UFv`D*a=YZcq~KgIc*_r!%?`ugnhMm52t_WfTqnU-2_
z>5F{JbIY?sb$Y(tE{R7x*SKz8U;iuYTGG{YxfN%%r?jkB*)n;`wy(1`Pr5&K#z6zo
z3qiK0{<ImSf2&!)MfR3o*K`k^lp<#)4X#Z`+^$@Hd8gUy*Oz%--zH_Q_te>R;NV=#
zEte;o9!UF=Q+9~iq^|L(zNW1z%a7^zw_KXl7`ewxF($~!=|tVD^Vba5hFpI%FEQ;9
zzu~_oSxJWPoLW5(&&~PW<E}V8`OyS{d&Tpo=Vxz8JN)VDv5Q~TVt-n-$wYq0Hk&hX
z|L@e((+<XZAMB{{PtF%xbo~5<Ni7Rbz2@}0q8XZ)rhi#kbR+lt`D%yf7Bqj}zK=V)
z&y;<M=mZ&E{m9@#bKSsYrz*>M)&I$I?SJugrDRZm-%g$x(@poD5kJ;;u5HHQ<(K%}
zb-!m_saY29pR&I~$<MOY?aZ}&_nb44j}C~hz51hS+39M_ju%ZU{bmPWaQjrLwd&-l
z^;H5<uhPG%@ztoVV(x#fuCi=y*!(YZr(A9mIan2v*4W3}GBNbnx21w#p59&Z>STQJ
z+gn%am7BSn@|NfRUUYP)yFvorN()(z5SQo`ddqs!TJOy%ZcU6eEEc`>`T2uY5BVnS
z>pgC#RJ(Uo@SeJto6g(~d8D9~bvP!+JgWBg&x<0w@8&31zAW4sy}7v9vGiH#(`AdC
z*UKvYHod-3uyJ3ev&6@o)5oSg+`hDFZOclYNxVrDSBV53RbR2`)_Dz4o4c9cyA&;4
zEAu6bG6ZW_s`lEuczXXT5NZ9Bx>4!ew-wJ_XXLH5+WTWF`|kamZvzaZpXLQht-i+A
zl6Pa<B&Un4xv|Then?9C<T7E6#-d#kE7E0_ZM>#DF<|Z`$L2bXSHYsYPE_2tVY$5j
z>_(C66BR!xHXWb&V8y|C)BnDCruF|x*<u$p!~aj*O)BduRTLy|AHMHDsn=?$v)H3^
zO`P8nU$Yv1b-R69+hEu8s@@h&3GtUL=_w7n;-vR&%Ra;4k(t)?=Jq4;^etQUms@`R
z{33W;`U}+`xp_}EB)Mh0({1KS5Gu)H+|Qn<8}WZn__oA7Q^jv_`kv3xon`y9oAae)
z(eWL#dvC1c_!}$C?R<I1QNuE!#|kPk>Ru<-M>iilA|EsTQL^Jo<AuAj)K!-;`A`3`
zG5+zAnrWBQ*B5+@D&jlxTcJ=tVdJ`|$Jw}U*O*LxsPk&0p(W>%l&s$^vMLYsAKeyZ
z-pFt9U`?@_hQ|5B=N&jXr-<@x>SL;#dw5}xd`4b<-l^7SS8VIG)68a8tuA=A$;sS9
z`Cs5gl`qln8~f**KNdV~y~bK~ub7v_hP?gnpM6$J2r%Ygi<B39mT7Il5iXU~{y3@2
zHEf>If`W&-mGO0lZm++VD6R2rSH8^Mn_qXCtx)W#kk5PF6E@dx*6b;wotM^5*zrDO
zYta%PopbD4mi{cvSoYj}vvK$xPXohi!P_#q@~or&+!x&2KEe83vDEqNcM5Kvh;IA2
z$6YOY=e43|mP_QdKBupd(XUBuI;fKLDR*7E-ldq+hqQYnc9mYb<ITiu#&*%Jox^;|
z8f&3bk4;K~>?dvL{~-CSyP*5%udIvGZ<cLYJ;^(_JL8MhYuAqTGZnU9pLFQ_#vl2Y
zSa<wsi~F|6?AEcBJU%N`EPlQGQTb}gf+)j9Myuz2%HlfD!}q30;QwT?sXrqm!tXQ%
z{l0hg@voj|7SU7x3B9Y8vFKVJa`dF}0Vl)isz1+9ceiKGZoDOZbI}9g$ul47?$ell
zMefk)2NN@dK7L-%c`Y+W_L;BG<Y_JZ5m&!Yo-iSHf?8Gg!MbT%w|W_}UFYs;jSVa~
z5bpVJmPO6CnOD+tPh7w1>+1E!R8*pNd*Pj{3r@(bFVX7Uq_HnXn~@>w2jf9ksf8JV
zq0K$zbwW<l-oFW|YF!z#v2|*-ox-;(n@=xWC)n_#`)}dKW7nS@;c_(XH@v?-@$^R5
zU9V1PR%+I~jNDzYd`k<b*ZZyB{OZ%^Z;?Aar%dF+<GFdOlzT&y_6nWaCu6YY^Y89-
zdoOuohGidgUVQdW^fo%Y@8lKnyQ}&1cE6Z1xoc+YxxZ>Poq2KwD<fsMWb%kyzU9Q9
zSf8gmH%DcQN5Ktd;S%4hbz+ed7pbq5j(le9!WD10NaE5h-}yODbn7)(cS^ZTWXs)m
zJ7>=~y(d2^tmV&KEb^Q>$8?{^R*g3;Y^lYj5pO=;RlUA!`WF96G1CV&_Jz~WW$pa(
z<-O4PRJZCVZ{enx0OuE%LVoV9i_g0@dG1F;N4cMU%kLcyoNC*ucWvci^`?`;8lSFt
z{N%d8eEfEU<(dA^3w2Gla^!Q!PB^^(o=m0p8EJL4@=mkQIk%T-3O=p*8SZu`*euqj
zq3emb)-em4$=movPFk_CHr`D=yFPE>!}%q<M0~#a^@ZFDj=%1ceK=A5^_?GK;V0b#
zR($y;I?I09Wz&MA_igfDX_xp{+j!12xqCubtY~6bu+ZtXH`gCGUXpwBR(YcE>EBsh
zm#eLLXJ>d7P7SZ#a7gO!k(R5E8m3J?wO;ML?bCU;lIN$E9C35*ey*_DRZiS<+TJJ^
z^#;#d3I~6kc)~5Gt!K_{w<$?{MXbS3!}DiP{9W~x!@A>(<&NmdH`P{F?^rzl!R#Yd
z+N(cHnk|#)TP?>_z2wjv%e{8j?;bibw=yl>I&<x;`Db?RsY+(_d!RhqU171M3|r1g
zAJ$;rkQws=cdmYXd>ik%53g69O*?<XqUjm)(zowRea$k~PIiA2$!GG#%O$77^?KmJ
zm7lL~aerAg!~db*iIWrOXa+o3vE`H7HO5S?Usl&5djBQIJ6AQ_zVS9d#h`Mp-I?8|
zqbxQ!=kZ^QK9jQO;ZwT{9VVS$v(}y4?K!>nmz0v3>hA-xr#>0)?NW1dvpqV&@yyQ6
zzbsOG<El5y*-HP+SvCFAE#VD+H2*svw)v~`&i{&J(!+1@OPFfj%bodqBa+|UtZr`b
z%BsZ^9P8dx-TpdHX{Sbs;>*$lJZ)F?77GOOXw3O`q*&y5m-V7OaW$8(HC%}9Ji~uR
zap8qi%Y4E*On9%R`W^lo<rcnJ>an=fi=<mJ4Z6+Qau3D-{CuKw&E0nL7xrx1wRiRy
z34fZffN9y;iy>W$twXfm9ZkD>*ExKH_|u;oyBXs&X4QVxnZhS1<rJ$emOgL2;%~v#
z3;w<reh@hG>EzD2zkVD@)VkVquZn%nnsX1bpRPK$Z~q4ecF~<G{YS<2*yUH*);oz*
zY`86=(_z=X@xrc!z9z??RPWM0HuJ%@48t6m*?-wK@=5Z26J7VzX2X7^rB#_sPf|p`
zoI1$V9H=JJQ5BnJVV^&JX1krJ{(5_EF8{v*T`NRPc5<wdFu2`3;cipt&Pj!rHtyTU
z`FR2-kMhTwc@f3$V?*>pFCDuVH04Ln<4*}~oXVeggtxx?<J(_Q#xL3R!dTw8{r2|N
z;r6UAE{LpHn;^YQN0FZ=?&y{W`U0|(UW&{S-t03cXxnQ4mAR|8e9w=4E;ifByYiB6
zwZ^}iVy2+h+x+IwFIi0dnRb$WuhP2w=HN=7**C(nx0a@CSbpoRUF7qO3z~C7W+}$}
zTG*{7nrf7=TDeVN;mj-jv)k-LA50hi+If4)PEl?-kA!D>>laQcJJBz=bpD0znZj2-
z{1(-#<EvY#qOsx8&iX(>R-X&opWAJJrMRlF?rNgvxtOD8%GY;Hn*77e<@_(^n5SvN
z4mXu7AN`)2=iS5kvS!Iv*VG?}Un@OwvemqGYkTwM4V{8AhAB>=fveYTxHDyQ^6dQ0
zGj4y=Qql>u&OLU7k*P9PKH4>sse!Xr?3}ce*hEtkpN7@#|0LMD&P~ZVyxGdB-S|r7
z2c1_<la;cS^`9<~ddOl}Vq89rH(2I$^y!>rx5*37=9#a#pJ=;a&iuupSC-u~EVPfV
zS3IGuxFPk%#f={KT_=fEM*sBJx>~hkX6jTG7n6nd?F*(as@_`v@mSsCWc?deI=k7u
z|3=zq{GIlH!R>Vx2YLLT^7iy@7rnHq%xZQ=VcF?qiPy3kc`FVJG(ONgr@VS%)AwIX
zub!Kgd@s1C^`lYF&l5h|r_VdPBl>gN>#X+B)327@<6E@mWwBvBquSc<|9IBUc1?89
z=-8~ZAs{?8U*R;{_K>-Wsq&HeX@0>D(xGZ{dK1-L_64TwwcF*J*S1>mlItl69*dLr
zC)m2Zxail!?A`jOVxKVIvg|)=zcp8~A5lsXOa8d;#t+|D=bl_kQl8^_YQnFSlBJOb
z)~!i4*;+SZzo}MS;PnYwAv;MhX;Y<7S>xM->@S|kF|0g&cDZ@M`4u7OlGZ)4?FjsM
zhe7r&`zyEehUzN6k8X{LPpIz@SZC$acWk!R!Lw%-*|Kdk%LF85pPwnKzv=k*<ka5F
z%O>=H$k<-XVb)}^zUb7&<rgYvybxkD>SgA<C-~IBXz|5!)pMG^+<jXnVHWUHpzFrl
z#2Tj@hDF)Sj!&)rS$Ssp^_q8i$4_&)U(fpMJ8kdB^Os-0w%mEh^2a-!;~p<w7MHtj
z|FzD2!sF*+KM&nad>Ol_>-D2miw|?%KV-Gt&BVus_gG@MvSo&RXL`TUjQZ=9v;KAz
zb8K<aU)C<8y|QbG<@|M7;oh4zt^cWcNhf9dUH!QyI6j}`TW;a8cwW8RlxLB9gNzNe
zT$PS}&))uG*6r>#(+yFvw;nv1IOT_sr_8>mi`Ph=6jNPjb~>Wz)fUrr+cSz*ZryX~
z=G`RwEFpt~*Y|5Rrrs_)IkP@}-_`{}%`P7{FZ-I6H#J>mMP=%2_iVOZDvh@eFAH4F
ze~jU>_$0M?(~5ICIrjGF_v!KWc5`2h3t3V+)!+E>>q~31o*j62(Z<ND{m7G}cP(P3
z?%m@Ttn19Vf?3Y%RnWDT(_49ZL{1s87=L(a^~oV#xF&t(_AbVvWYhVlwX9e?(z6na
zo-OmdpCD6nWt;4R`)khCu5n||5UTs3_l%kCX=L|@hpj<VJaV?IFljr;v51S;{_WwE
z>peXAY&O!r-=Ac8c<+F)QqPyvtdL6vcNX^NM1H=t=*De+$rF}3$x+o(>F$qC=H0p0
zVc4U{cK?|{c>Qj{qy|<Em1`5-WhRye+4Xu0luk3QHG9e5t{J@WiO#pY%@=n~-E-_r
z<9$w#S8LJ^hFobX>-j8Sp7V2#lWLZo!PCQP<!<j4KYUe;^;q_$nB#8^Us-|l|GnSs
zj<4z4#J0&zWtP?vCK<cOZ?d_z+B>&AF_X}<bNr@I9r1nkd)7to&W0{km#+O+`itxS
zcRQW$x0+8L5X~34&2;GWu{mmDlUE)H*^!y~ExkN8yX}E^(2TXFYX4TwsD1O2x!B|8
z0?p$1S-&5I1fP>JyCZjS1uMIR&`X&I(pL_NF0&51y86byTk97eJ$-JXTkpL0ech+}
zzbtvWZ9=6>$=l6qLR<Ho{--4O)}mwkSC0+PM9+07hy3H!X|}NlZWf<ZdGz1&WflD$
zOE3S5uoC03TvT~N{6d0XabwlBqsMjzzTWNAve|u><{XWcn)0fhXVY_4WO)`FFz9hi
zjenHBdd8e{XWQ*R3F}Tge=b2oULpD9F3H^FBVQjLei>wwR&}gr>aNQMj~1-=3Y^*Y
zU$6Jkq;GLo&qYix&gRV*Seaz7?Y8d!gI-hRZFEAfh2>jy%uPscvkk9ad!g=zZoKw_
zwXbI#eeqJUU5RmJ1TVKhX46^@8+*O1txt_#crCnM>bP3qu3_rw-(uTZUU~3ome>7z
z%xq#)7}<MMm$gP%_D^hE%91bFe;?oMv9NaA>tL(5%ff0Eg5w33S{tfNTWof|o2BT%
zA!orL2BjwxYi_+RzdEt|X=u*HqR@yhakr$FSQbCkjNavM(CcnKX-e(P%x~$8+>Vvs
z7O;E?y%cmVoUb_M_QoB)4_S0e?g<Jrdvm&|b^8X}Jhbb4Vi~b)62sJ$DLbt`7c}3k
zTWq7foTrR!yUCxjmf(H!73E8HtF7mJI}zjE=>5?@WBZff6?0CUxO851>ZVN+33u<i
zbDcT-B-Uzc(cBBWlFm%4cP&WN(P-N5BFNEc8Bu4v`OlO3`kbe!-m^dE^!LBm>)HEU
z#A*NAJ$@&cL>MOg*zG9ZS|+!pyID9RD$)Mp-RC;n`B(FKMf&7Ez9HJvyV_-aw0n%@
zy$zB}y14E&)jnOYkxNuIg*P&9|Js8>$%i{XTu3>wcSGUSE4$zSIVy12(Cgv3Ej^dl
zzdFi)^*-Z^!<%*H$mg?3hwHEV^5w(B{3oY<m(BTDcDeB5lW>-ho627gOj)_A{{H7b
zSCf2er~O`ACLDKoyYU_?iQxN^;@z(|SX^7bX*#Q(n4i#Dizn?f_X<7w=CduVV^!U+
zMWRY~oo___Y&ml25Wnc(4^tdAe~Vk*w^!|(@Se<9{b}3gapnppd!O__SNBabc?)~n
zsd@I_-l%8Zc+IECw=?6U?eWwVfl70=uSxc5ew_Wy>|w^kdq?in25~uf3mxxR_IG07
z`iV!noNtSAiEY|3$!39nuYA#bi^vqwurpe2at50;K5%~XFzOYGS+DsfC|IrR`0P*K
zMw>I`OPE*}w%2PIK0K$lUZB3Gt>Rt!4&{DZd-LbU0ohKHifQ$~T_?H(6s+8_CVcw*
zz3X)vYj}7Y6Ij_d>juBkYqC3ja_=>*j`kkMn>9CE)}8lU8ld)Z>h`2*)82gElT>JH
z<??5#S{Bz%!H0MH_TOCa{>)WNGjC<apowm794^^PPFHU@EqdMC5wXl`k6Ex_Kby>x
z1Bw3nrxN(QK6+ZbEOS~{xyWek#Esvcv;ArlzwTtb@bJy*ebd)eM_Y-{ve+Hq8}ar>
zis2TOqrKMbEG`>6@2}SRHtpJ(iTgi%x-oq&la%1P{DWNCOO9lIKF8GgxL2-lz3)W!
z<byqVj@EB}C_DX-<#1u!!Z9f-RsHsdGiiNwx2D{%zq{mlMNg&PPx<ej%+<%at}w5v
z-EOf|YscPzqt|B!EEfrwed^d%@e@ssE^E7;ZX{d#WO0Ulzv9~Qz%}1Ece2YK=Sc-u
zxAJT^c3iC{a3QwRuHf6MvtByAw+`sAY>ofi%e^H2?@?26op7UNo;yn%_Y0-JH1%a$
zYnR=e^m<?0O|>U6*Sb_aRPNax<uSY&)wMMKS?#*7VJbJRByvtWx>U7=eF@sAKP5WB
zOw(F-+Qkhw4XrzRt%AOE+q}7S_C|2g*QdJ`9|n1PFuk_CE~ENF?0L{RSqYa*W!tmb
z*bEdLH|ne}b^LScWqIPaeeq@az6$@2e0n<P_ZmLe7dAYHPwZ%`oYa^mdST%skNleF
zpI3ZeWP1H>{nyK;+gW{PPMEh;?>O7M!+$S2d|>;MG<n<0r*9G*XQ@V1-KZ-`-gNwt
zUDBt(#+MgM^5(2Osh^+0<)~8AY9SQYVfgdIn*-}J7&mI$w$J6%n4xh-`LxCySKSjE
z_)=%ji@r9!N6JvW+cU_}>5!}fzjd5(*3C_Ada}Faww{h^;;V~k-TUm=?`;Pr*l^r3
z(mK51)s&Dx(c9vcp0`vcg-)L%Ey{f;Ag#$|zR!EEw7}{`t>*97@3twDtliTXz4-0!
zj}^5oo7IF)DFp1^pCmlnCNt-Swer7b3_JK`{7S?Yr7C`#a^2B+Rp`~#c3!(5JP*B}
zH?P}HSk1}i>(1lOd!1#CHypgC)}^L&+QmeC_n}!mO3}Qhjzz!dIMX%Nr}&qR(IQLf
zHvudE?|%JwlH;F^TW2-$a_|1M_`GJ~#=j3m4g2?IPTyeqKYRPD17bp(n}6<$H9enp
z#YJetL-(_$YU}pyH%a_|w63S@<b~spn)b!LZ2Fe^=TY>BwVt}(TNj!=m7io{w4KM3
zDN)KwP*<FN;U0a>e50e~FH*PlF8-7#I_LX^V?Dbol<JbM&Wv*IT_#mGVa4nii*?6X
z(&PJG4c59;Xm~FDc5dyjz`GBZH(QFier9=eTjX?Hp`Xy7uEdml)eMQ5MwWN>zc&5k
zesQ_uY9+HvrxOYiOZs$*12`s}+WwS(<-^bQ>mDB7|0*|UnaxIl-xu17#pj0{wSDt%
z@+V8z^neLBmiE1{uIqQ2#ci@fhSjI7#O-(fPfO0tT`#XaeDeFC|23JGpobx84=;zz
zd2mSf?9#3^iO0|1^DVi0B*;QAQ}5jcz8k4?O#Kc^`$R;<JhK1%W`%Hc#nPCD(zdv#
z8_h53=o{SV$jfH3To&BlC$r~%(#_ip^Nl$xE*Kwvly)ZDmv!@|2F1L!Wmf6BZ42k?
z&bU+ABkvdcD=Y8&`}EH*rxbp^c#=)`c9mrC`LO+kdJ1s|WOpk(d(<C%yL@KvvfPNJ
z`#(<B<5^fd)oT6kXVP`n)33D%cO<^N5kF;vh+bM}?BxKj^$(;^Y}px`ays3R^US%w
zPq!3$-M>~U=dzY1p<e9DuR|~UIlMKmnZKwz{vtwm-J`ZVgXwP`8CFDm)O@*kgU`-?
zv--dMVD+`jK4dq^$ZdJWDc6W*p6wfdN38xByP4TNOZw+3zRLKgF3<E1=G$F*d-kyC
zlSjN;cP%-k8}`G>>C{Z-d){~DgHF%Wnd(@)xmf)6`RG>Rb87Y{4EC^YJz3kW@agGn
z#oFsq?UzL#PF%cuMw;oq!=blUdoO=`*S^B{&7H?Q4&UEB7eAE#YWDM5o2|R$Ww~DY
zIGdVP9aK{+mQYsWi<LZJV%}l*^~)7z11^`mbH^v$Tk?Tn!tpB)55?bP-XCrE{^5=Y
zzsK{ZJh8gLzC&Y{vh(rT4<6KS_UCbJ`R}K3?$+~nnbR&VGXLil#D8I9wve*g^<^Ji
zuOGc;Y8Rlx+CR;~uju%yyT6L6w&<+dQ$5}K)zLFbg`yfa8dk@?e7ZuKPw2B~!SqGl
ztzVQU&1EVp&8>)Qt+T(W^|?E-<0?b2%#8b4E<ctSt(fyDzU{DE!oJSH-M^>Cuddms
zazx>rT0&d{qq=^X-q#b=u4~-=)h6z~ZFe&F%fH>#aoLQaX=k)fd{I>BzEt(p$FT36
zVSD%C+oq>;`>(T}OMA$8Q{`>n439l$Estlf`dhbprGEa6@7{;EJ<`>EwC_nlxExos
z=kHx7CY3F(&Rl8m$93WY-<Z02+rO>JpS38Z>E)IUTQ#q2U3vSG#O#iwyo#6Km^?H$
z&Jy3KQnFHX+Wj8=$JrN5CUwV7UhZ!H>CM9PQvx#HWGgS0;jO)Akt)1iu%KJE@z|rZ
zwI9#@`8grTqJNUhwd)es%h!dk47GkElH+gt`VaTCy!T$K{hzykzyD8U$C~!Gt<l#W
zNQA^6uR45V^<(FbeVhk$gO2Rl;cPT{&$@T*DJ}NbxzA1Fcl{c$<lmHK)91HLI&J5X
zy!G)kv)PIKPfIJB_RqMbcp=Sw=avcjq8EQT1)EPk6BV(k)#u<%(HXn1_L^EO`J)(J
z7PvB0cOl>R^r9-plKp;H^A8CwT9{Pb-<luxu4MY85b-|`ANyt~b?(lyx!_QL@l=aN
z$O~_`*G!J<CeN*`>}ssr)}U}`dC)P#&^We3F1CpaRIZ)NQn_?`(=pLC%7sU2Ronc_
zbYyvc7W_SaOk&zjW4rDjj{Bt&(;j+RJ6)~0;#%gEH~U=Hhu_9gn>MFOsy>QQn;FRN
zq0ipL{OEV5NZ6b;E1suxC<=vp75LmY&7S0BcjR8UW#6PN=Rbze-MhxOaoe$!y~R&t
zSD*fS|H_ret0FG@2QJvQD$1aD>(&+h+;zNxyDg51Y=5nv6!mb+q6`6j_XodoH$P9+
z`#8V$;m;WLSzWG1QahK27W(zd+8O?H@Ve#v`4?M4+~i5#Uj^@7<nBIV8K=7FjP}K_
zP3()KpGB)qWNvLx&iJtSS@gj|;d^^Ed4;a(mx#4JIC?lkrLDG7Oj~e`(OTUa>)yz%
zZBZXYKAtEx=<|v(Kj%MR!}G_dx{tPtl@qsrJg&HT;+j+Ee`>1M2?>;YOFMc5TOBhw
zux{(VLk+7cN+wH9%Kl=b=4Ms#g!zT~>GO&_hU_O3EerNI?Wl^Jf9jn4mitrWmG5fu
z+4mWq_sf`Fyms|Vv;1Pmy!Xe~)ku`4?ss3=wQTi5H^2N~g}9$BD%r2*H%~a@Be!TK
zziJxWBbnnbqfXx|D}Nk&#Z_Zs@Kw{Vn?HR_Sj%UjyK7a#)u;X|9SW4f+h3NYEvocg
z^<;kN-8t)b*T^Q%pY5b1u{_v%-mzQ1yFP#IsGJl0wy1K??K7tTPh6g)qwlly-O05-
z%vx7owFp?XD`m4qa;y2vee;E9Xml?)@!^$Xh4A(_5kGF_?};u-Uco#0zV5ce+b+I3
zKck_Af5v@{gGT3#Zs;@0KlrfH?`Ar)l*)0QeR40SwAQvi;hnnay8MEq#b4FlJzIR^
zO*6yK*S&3KIpJS|%ls7hkMEq2A-FKW^7+C?AHMP%&Joyk<74-|Idhcqbx(8#tv)Yo
z&9k>=;!hpVg?&F7epj>TPCTyq;^Twat3#L6-WGh%v-|y}&F)j)+I}(ic$8VS=-Ppu
zTNtfRrLs@kc|u2}d}f-o%psld?&kLHdoR_#zWBUp?W~twR|L9O*iXLPFIK8>Sf_LM
z!`a$fKkoSVB5qs5f0v#4*R9r-eJf$Oll)Ar?YQ5TyN5qmTyAwdzfM@Jd149cvZBuc
zcN}_d|0p@1f7(r3Z$bBaA-_;P)}6{vH(e2bE%8LIF6!Gx*&v6#r7YS00{6OV`957f
z7<y}x>QcK9+gS~aPXv;0oLjcC&&)7L@#o!I%hak*N-a+Fm#?%qHfhHe&Jwlk?Vc0X
z2CcPM39r1LlDx6s=-74XyeC=@^xl2xpL@qzN_YF4g+~iNd^j8PWc{J%XX3Q4-Cn_{
zBK~M|+t<Vu#_3Fjm0MqU>qrJSrE5my+*;>4FHF_ylaP_}ioLHjj-4x+6j0_H+v2<M
zh4HTC_axf(A2qnb`>mBDzh>XRG^y){m>JXy=4?)w^C~yZ`(?=tsl9QNw3lgamON@}
z|1{!#<*Bqx(O%g;t`GIaQJ2r(d79%P(P1-1R$O%QkFz|U7v!5od9o+Daxf>a_Fc-<
z(<XoC#GT4@hCjY}zHccw!@zF0Fu(q!*?|m}T@|O@Hl56WZ+EBMn1i`Gn{{1)XqC^=
z6KB0XyD9~n9y)t_?T;_JeMJ5wMu^+Lk+DDBw)uKP5nsvs-u$^=n=YKXcXU~6mhm@_
z>YY!U?l<K-FZZ%)nbDK@aPAo)p5;c_EKBwt4b;3l@8+Gqh3@kH^UCFgmK|4Yyd9HK
z<KYz)S^D<b+g+x6Q{8U#yyf3KH&V2xKjBNSq{&|GCCy$l@7!E^<l`Lo{JFtmXHFch
z;;!4z^;Ks(&z5$*sUN4A$MpVPd2rn#j_0dZG;LK1oVtGF-=$SM<LuI(`75RzIO^)-
zZqOLFuKwBOH#vpw$Ks`2cPwqOYD;~bwaa$i^oJrXsqdoJe%m}>u|%g^{^ecX+)%4u
z4Qy}p9&Y_`!ZdAPl^FYn(-S|%GA}XRpA@gA^~BR?pWNpXl{ItbM=bgp@>IpL=k&X&
zTqdUNM>lb-%9xR>`%=SVm+;xvg2$Wuv#(t5h+MOVdve~dYnq!+7tQ)CJ>lgB7pnmM
zw$q#U-*av~C4S;+i|kJ|gC+kSafUrx`qc5=J>}<8Co=4Gk5!~hnlE;5cia`t*>CvG
z?cT)-DDQn^V}5I4X78VA|5gi>Zm<f<5q)>@<DYkCmw$dz{>mH?T4Zm$aED2uYF6n<
z*P!JIT*tKpyVKc4vM24`6ZZ7q>~#vi>m2vX2)b!~>|QQ8OJI^uQ_f{czoPO0-(_j{
z*UnFg6p`@1td`wqkv_Tb*?WHjMbnVTH6Qz;|H-t>*nIC$*ZtBXuaA9M?<WwgD6!w^
zmPL-<BipvK+pIQyP>eKQ_r2p^(6f)v(>-m@XRUiYHFZ|I%Wd!FO*}t#MC|x5kxS!!
z+WZ4k;$wsu|9%eWZpkriPF1;dsHJvZ=@ScuV<+UFzV+Z+sy^%1Q+5m6=JUpmw<03f
zK4kx3u_XWW*3R43)!$R33-9TOKEC;>$YsfA9_5Yezr0wz`uz8-W7ATmB#C~>y>n|x
zi7sb_-u_44m$?^|MI_nXjQ$hRQ@H$wj>$63+Pv@cuZB&ZXVzkQD*o=g;P&2I(s%b-
z?BiF8nDw=yZ~3R$`=+XHC_1OCC)k?xHfTHd`aA1hOzu9%!RyguQnh7C_Q4N+^1U(o
zcibB{p40a^y7f+;m5qIdhQrU)s>`O~k&AoxHE<p5o4xb<v!gHhjMhAJdz~SaBeHR-
zk*r8p!?Js>8P{)5&s%14U&G|bwCFl-m*8p(J06i-p~@9HXN_XJpVn;nd?#VLc1(ZX
z%Nqw3mUHzlo8qOpSUp^&o=bX_jjXKT?XaHBzy2uh<>X{{<hxZ_aAHn@`LVVF;cM$+
zGI9jN7d~fPAO5^z#>sGf{hjyrFWSynqi%kCo`|K3d*=-!vDrD#Odl^-U(&g3$FHr8
zNBgy7SF1j6$mY{q%aCB$pmD@;Jr{3eZkv<V-P5L)s!HAS&a*|7nl5b&o|?Qv|ME&3
zRbPckr(!~G<Rwq#FVK8w&QrLZiC_QY|Gc&5k0edL_GV@C9<Aw>)3+~vle<9X@Z~?P
z2`a}+7&aa5ob39h!}r%Jafi$!E@!W9sPoKllo7Q`h}JVa8!uM6{j+yU*3ZlAU*}He
zUbQ+kXl~2wKt;Crt4>FnGA88A_<r9z>ad9R){`oQvmG>w=VX-!gk0P5QsmL8kB;m2
z-1N>_`DN1-h4w!jkCvItw%2fP%@_6h{bN_~@;#IKl3u*oxLL)<rRhn;%5c{e7sS*H
zGW|I_FQ!;u`7aZu^ZNUwWxRJ4Yaa4GnRI2USj7D()tZNI<~^+ZR`-?twSs+Wx~BWW
zc~NNwE9x8@=L)P|qWC;)foqi+*Xf&#AN!1^OgO0L6j62HpXkQ$olL*7k6AKXoH|_o
ze^HC9_T}VksgBs3u&GOmZ4K7@Dlom(HP1@vIQ*`R?@{^Bw^t_~UG&jzQldxZg6N&=
z*#4}%@lH=MNnpFR?Wcv;&#X{2Tdw_6ILGMO({_ua@6)=|=bZgFxAl!?!Rh_!ZP%D`
zn-6=>S?zG~H2;&n=|1{vm!$j*5qGaO*!6Yh-sZE**@Ox%NbkGgf2UG@ZDu%k)T@v4
z|D2ujj_X}#J<qj6R+=1KY0ud2n6CQfxTJQ0rPzc+KWBa`4SfA)(zj^mSzq64sQuoO
zc6Bbtq@yP?_Wsnn<F)lp@yD>;)hwL3>7w)W<Ejz`Uj}|oY7BYT7S$BUr2gdF{4Gw?
zo+e54+$!=F_|<k{iX}(o!+6yh>q}ahJEVP<84BBbCtaQ{a4YyvN?6X;t1nM4$mE=E
z%3go3WzjTw<6eQoZAFm>Ha#-k9V*hsB4l|@?)P!&&9=FbK^uQ&P8C{f(K1u%$7kuw
zvjv`f>W^4lV$GNtUF)$gUDL&TZ|r;H$Nl{4v{je$oP5_h#c!3MVTY~L+$#~aDPL^Z
z9*U<F%&uwu?iM{i_{i3<_t!stihXuv$@}JMJ6=a~dj9z*+*%QKe4pqU<|jHE*u{fR
z#BRKkHm!Br69%K@eq9GWx~qRIl)vzKjYhu-$Ir{b(&ts=cT1e(d#2&syV0gTN^4EY
z-|7RoqScf4Sx@(P-1Il2x$=3r*3+cpCUc&@ZI&;NZ5FfVR%Ceo<nGmwu8Av563(`1
zuZYy}nO`R96zm;$_TjDEMIpv=Z_W1KeSODaT|-jit@(>rdTVNK`q(#9q4b-|J3D^X
zRrS~B9D0`%Dy7iUSA9YAYvF0xZ&?PD<oTBH>|t-8`Hk5;=JDb3L#th9n0;yEd$V0-
zs<o`0!q<%ds~)BX?-1>2u|0Qofv(%pTbwV-o73j{{ktP&&?S00YQ?nDqiIe{QjBif
zJyv|Mu+FZFyQuT{i-2=?R;xuj*9XlJo#@wg@Z#dmbBw=VWEsr7y!xhj9;?dE@|NK3
z`idWAV|K1SDZOh_Ts!0EzZH8gn@llg+<&!Ub7^4D&C2hSH}0{Y@ac~TPtx0S-d{H@
zbXuTU=w`?Db!qsKutL>Vy9Bww4e42VJ04#uje4MPH~g`SDfe{o?|-a6@pl~Dolw(I
z$gcDM(H_?0XKp*aJhqILjdRI7=gdoMVv9cNC_jm0*NNV57`W}-+&er$6Q4c3eCvf2
z*Sak)`n=tyon>QWXu7fUMq=0fI!&#p2DW~g)9jneo_2`tnZ~Q%x8(KhEoQEYYk%i)
zR|V}eo6(=pc+z>H*b9N=?bYI3<<q70Pu|;CQCl59VfvJk<+lTBdd_UPl*qhjv#R_l
zmr49feOMcVubO#nug})|!`{yC*&yT^#yj(^cvktrZ9n3F-~ME;k$alO?ZTtp%+pi0
zhPmY~yw*P7po8uFo}iuP;;TJ_7k~KLx>%jj{tEBHn(Ca2PVeZWy|EWF*ZpMV<9+yS
z%a(wxso^$Xmlf|f@o=9Ka#Uw#eYAwz68TvMC)xi5l;@q~pZnyE&oZ{QP%DMT$oh3Z
zxa@Tu4(G8RwV3wCZ=>tO$IGU-Hcp!Eo=~(`+JEcj<DCmVc=I=k-nO1#^f10OS!4RT
zeOlAp6&@?}d`(PRoIZ1Fq+s638ySbWRmA3~Px<=#8RtC5aF#uCHxG9=_-<^EU-A9&
zm&MEH+m(FXx5wwxLcW#7cg;?{Ja~J(_=K{A+fMG)OkSt-wO?^-7Zz(5ieIZSaEe{@
zCFRMP`*|s1tgkkO33na6V*K&GOU_h7^}iCAB(6O&`xRNp%)T=6bzAwGr~T}r>$(1#
zCGW_3nEx_WPFyRm#pC-cL+6xpGe6rs63As_HW3s)$$sN|UHepJ;W;eaB5N)^uIJs;
zZ>!ciedWsHq9*I3S}Tt8{B=uz@NLF)IfYNAzCX;YDkfZG-SfL#$Wn`W+x5@l7CN8w
zRbSuT<ie@-pI>06z;CY9ycG0(<Yq{Fp9$?F_waUgj*NutBR9gakK7ovkK9nf(9qaY
z!Q7Mz`^XI}3G5^H)b|DNB@fmQA#Oi;hJHq6K}KpG(#G<<%)C_nd{TFpSL$QiUk=($
zj=I0x94U+;`^F6w3{A`p5c|u`EG)5ZFE_U^HwSGlS5V+0yuG}f-6SUVw%Nrdm-QFj
zrU<0Ez2EEFD;3LQEOCryarvU{0xTD;FS@E%^(s_xENXM%UL?HFbKW<*_y5;_t$n@5
zG(Eoj_U~P%<I-=;*!s2NiGqjr3L~M1rw$+I7Gl@PI3?Z5=%BzDC(tp!q1RXb8CUy1
zO|^t-CfA(@CUAWGZxG<%cyL|DOr;y5xyw6U7_QuTz+lJ7Fn@!^{0<8amIv&ONB$YP
zEIPv2l~69hvfw0lfV0v9J(e6U4|RQ!GuO_E?mZjt&CqVD-r(=!)AD<}wZl2VuBOOl
zK?dIqt7WeU?p<su!FRzq>hOYfasRmvDrP=^^-6`0rK+OhLz8T5#YBzhOuxJa_A^)c
z7I2p~F1oW&;DG)i2Hg$HU-;AZu;eh*TF*EwUu3(acQv~NE9(N*f*GbF51YOfI6ExR
zV5ll?n74}U!A4<`kL??e$+O*QurFqQ@c8L(>pS!B?PoeDuz&8sYu7y7)eR1Dw{2j(
zao|C~f#g))xN!gQJO&BIpQ#*eyA>|}ODH$s;oIgU{m0HyVu8+bW`@O_|2)qhm0~R}
zDt%bmc(6W@<sVn`xlKY$iyBHwT9jg9IqK&63$`^yEx!DY_0Qr>d>l*I4?Xu!V0L!M
zshila!;+C#z#!dx#i~d1)iMMR+8af$(01TpVd~`QW>|2JVa4*TvLC`LYW3A$<g4D-
zH=NZtzhC$gXF{_Y<Jab!4j1*A<i$5wi#+HmYX0@}&+<q2I~w}=85$#ZGp$*$&4A^g
z{l$w(E6&PG#MX$M5l-N8`YtEW@a6T->eRkGeGVbU@4t@!DX(qxVr%O+HQDhm;m>xz
zIJuXcA07${v3~f#-N;Z=ljOu8_~p?1`-%Vj4#YpH_uhJNgFQd{FZD%QhuAm;em65)
zRn~tj_`g}#;-8G9-+}$*7n~MVOL9H<vHa^<2PcK>FZ}oaS2EP?{`3FWzwjyl*M9x~
z+u>AR!H;~?<N1I8FJ`ko^dPQYYC-hPv!b?Qvpl{ODEzy9Mc~(Qjnm2xC;Y#*a#z#E
z!;0-2TK~^=nbB=@Mwshj+s>%le=j=LUuBS$;d6G_I#F*!d^m4IJ3q@Wec7rzYh*86
z@8sSUv_CZ9i^<<=Z`Br4p-<UwezdkQCWvsoac$7Ek>X^m`ElVhXJggByc~uJ;*BM)
zyBRJ#`NLr5A#!ki6&E*SL(zVh{S#+!FmU{1?__ES`>$ZgaN$?}k>lzd42%9TFM7P=
z54#8(Lu~!w`nlI`@wPhge|(?k6#SF>|31S70sbpY58mOq6s2_JpYMs=o3kvf_~+>_
z4w{@3&l7A}S@SF)H&5K9Lf>+=(LCLSeox}|y;h5i2!3QS?eCE<m(zFe<kR1y8o2!H
zrSGp^a^L-^zm{cla>!qKu5C}VeoK6KS@|W^yr$mjw;gBEfvjV10+LS`mI<p~I;U*^
z`9<i*HE*@&%Ja?sxoC5s>Kea_P^*K&*#gO8AvQ;+Wly#AEtbDNwf*5Y=S{W#k5)dO
z?78U;zqwDA{tk{mWl5}DwLa5+&Y$mJtv~Jc=iMcjHeH%^!5~3)GH?Ip-zVyQ!xsO0
z5ga74TudxB<#2-GWsSRTJY`~Q65q|3tW*0x@u}_E?aLjxmLAD|oLG3xYIV-1_xlch
z-E=$iL{XM&mwMeN+q3Eg7c=kw@q8*9yGLCmRxnh<`D<2Od&y%5CBKlLd*iiR{g&zX
zSFvore@abk-j;1j2PbW~a3=K9-okosj=7Bn(^t;C@WVL$Q$lLx%buB0LVLnnx6c1@
zBHv0^<<$&%7W<2d=ccVWoi3`kN&VXS)c+>QA6S%MK4MO5ShTr*>e7jK8%_$ewL2a?
zboXqo^Crtg!LZ%xIqR-Ae@pQeUww!tRJP<_Y1x(Q&nIoX>0~+gkllB=={4F%PCazJ
z_kYD7!&WiAHbVn9Bmb<WOFdMWv=22GCVJXh2M9SC@hVPF+nx1{Y0cNqOm~7G+iLCc
z`<dyq{>#j37FE9gk1UdqiT64yZnrw^$S0<!iN+7*4b%&5)^F_TwVS@D{LhBgXy<<%
zC)wU-@IMSW5EOpQqpW(Lc_@4Tdc$wat@I~9@vEpjyKj4WQ{o|~<iy?I|0?Zj*>|b<
zXX6I<<~<tEx|Ko?-^}6)`ad(+HO}g9&|96Ccl=+;daQln`<}n*kV<<{s|^2vX_c;5
z_4B_R=ZsxYH9_g9`n}ImVy!n4Q(c+&u^;8#!N(XD6cYDsqNjT1?u4uImugq;t(B4I
zX4NfAol)><)jPX@`O2<2Z(SZl^l{c*@f79eRDH7dbKc|CPnCi-CNf+)S0B6c=+9Cs
zH<`3%mnGY!<_f$ldVR+>K<Vm2q0sYJ&*#29J(E%SQg8d;%)M6S`CQk6g4$&!NwS_j
zxOux;(Oi?GN@ou}To#$`yL+pe%bdKwp1;x*+O0A!L>>s&mbxls*{Qjp-_-8ps$0B2
zyM2z_<b5{%Do?kjXnSz<+_{1i3V$^-gxb1t?)=m#*C>8FshsJp(zgw%V%-}&CZEt)
zv9|3BPm@NA*k0QYljrMyyL?;SdgaM}BT0$h4w28M*c!y7L<eZE+_CCpm7mzL6Uvk2
z_kDf(+Udy6vYCHm`JX#YS#>Y?p7JE&CFVI3PTGHe8$C-!F7{fO#t~VI?>?!!zB35S
z2(c6M?^N}8;CG!j%YdVDLEG0R)|Yb}9qlA<{@eQf*bH5{tlf>Zjft<l4S#>&Q(rlc
zQ^;F{ztrDpi_&R<b5H8_OQhZmOK6BJdAwmop`D)SC(l)DF8%j>ZOgRy*B?diCPrqR
z@}#}9)8&K~m7Ekek((;lKd&e};>UN3=`#)28mL|6;F<aD;7!-5f3#F}wl{nF*i9`o
z+OtYE&!;BE>DS(=8LS>6Hx^c<uW@%e(0t&X$+k|>^Kvg_FKuGl@}Tb2i5Xv~Wp;%<
z3=M1lpSF39hfn|ES9^jVm!`~JCo8sbs+C-Aj-QOLpvLbPKUG$C^Ld%(Iv=udFpRyB
zE7<OCb2{_go5#1+Wozc|xv^f8U$uS9zSVwAnu#o*m7*uc-?kH;yZOl8j0-ECCyVs{
zH~ZN9-XSx7+qB^Qr-JHUo@rY<v6k=CLW?_1iyq&RN=}^i<cMF~op_hYCyH-426s+8
zAOF^(^zcW|nzITag73HF2E`YxkW%po5zIPiA-d%5|5vYVd0DQrY;#`PT(qw+MNDBy
z&9}KLg57pzgv`yb=-bpKXOL2Pi#65b$nq~9UcVeNV=Uk5cI%~V5G>66T(#K0TWq(-
z%KNw7nu8NME?u5x)%U-fLA^0}>m<XU>f6$E7k^o^#Js3FedpOtZB|zC>?hxqZIixx
zXTzd*PA++_QX-bmDic=ma~GF>5Ei|5>1^Zjs_$KOPxizp$F5s;^0Avqm+eNaU0fVf
zh5dh=(bTA#^!ecLpVgUH->|rMC0@Lmqs)3|X94fiXUz+z-B_x$NaM|OKKE_>IYt~m
z86D^6`&ON{aAr+8#UH+@;>OQ;E3O~pZhU#E>FRciW8a%sl&P(6T~s({m(mXNf~)s*
z+;tbV=q{F;J4v#9`6aexyV>0o<&({pi}QU<S}%1%M`6DF8P6&Er-|O()!LeRZo-yL
z25&XwMIz1boI7A(R1&}OlPg!W@X^3pbH6})oplp*q-P&jpEl`JXyfYV&g*%@jXW(q
zZQ15M(DzA}neFeqM!xiVcF5PSJ|Um>Z>Uxbm?+QJvu@hl`^W5-MK6-A)Rn6H=ki6O
z#j=L)Rq4+;?K72h^CX3*WF_reHc##7Zc_`zh4<rc?J_%_@g<9O`kNCQyG0gXo~Kol
zxUXBl@mJxVojx7^Y-Y|iU+8RkZNIql?K_JMy<8+$7K^;p`w(d}<9`_I&udCrUnj<y
zOyp24Zi*9o+!7GKI4kTIM=f_+_q^R)9!_0F=hO_=F=RYtxG&sXv*=vU&f*4z<nRia
zhHig0ec7G=1)@~D6U5}ca2sq~@4V~j29{rSPyb{F|C-RX@~?22;`T|b7c*=1f4r8|
zm1X~a>u$@DQxd&5Ob_iT*cr2X$?Jd1!&jFyFD)$HRS<n<q44AAvW=Nn9-RF5L*&z}
zzHQqL%!+DWtrkA_C(Zpd&)tj0N7tS#_;kEU=<UNLZtLG4yXrpi)HlwcHP@oP>)g_;
zIj{FfRx~Dj+qY1!hc6HOs@$d)QuKV|9b3P<9*qZr+xDdB?lO{3Nu95%X?x=agX(*s
z*@q9et3KHzz@A*4{ORC~*GFe9JaRmH!L8cu+ZX?SDdZmSVbr!!?UzVyXeWp5(YX7|
zoh$deUc612L;v#9{*^Lai%w<7d<x&*eY*e3-Axj=-U^E3$VV1-id;OiY=&pWJA=iB
z+kS8TZ?Q|+w7PbF*UI@lx##|F{5;1loWn@<TUfWXjAzoZ(mSuN>@0J6n_-ss+Aw^M
z*-YhWx945|W)f*4H*IUpA?Ali-q*&4276Wacey?+TcO6i@a`;)#lgOLHP;p%eEVDO
z$(}Zg?ejV=^E~BAS<`C2O|57DS*OYKHh7%cCc7hXV{=H|$4AE|$7t^T@%Yk4<~ao&
zg$6r*O?_fCaYOs`*e=cN)xO{N-JX3&=lO%l3fq<&b9HDqZJxRB;3e(lJ*m@zz8jxC
z^Xg>~$J-<7b&r1TzEZpG`@0K!>oV6{ryqJd^Wp{THmOjtt9=un1n}8y`g7-Lzj?xq
zjhrnxrdkSVY(X)>?pxdaU%arcW^&5Do#V#;ZvEwHwhkFbG#uCqueKbyv3Jok=LJ{9
z#a_ObUmt({vTy9RRoi$P&TN`J?OkNX^esGc(*sxPACL84DdJFf<<uwsse4Y%+<8j%
zzhJPi9AmzeoEb|J??NA^!pDy`EkE<;VNb6>r4yf+(USWol!e9n7cngh@1O9vf;*A<
zy~AAVoD;L=?3nAd^m-7d_iOp{8|E@yU!m}7`(_o>zfDRv-f?&c?%|4L(6mT%cYH1W
zddXu;<Bn5e+szby9$>q@`q%nn&AXPxY<Hc(IbZQrNd2P<6Tgl}a#J4hXCAwzVSivZ
z)4sUvBF`$N!}w2%X0J6W`McxE=7dgV-!E>~Z&lS_U)`R=pZR&|db|A9AI{HPwQ}yv
zU(dqp+3Wk&gKo=chfXN5>Ca|NnXWPKLG-)Ftmn$q*2y2M>Et_`!}C=@@$;_TMVw1_
z$#@6viI^xp$B+N*?TVL|lwX$5zSDMdgSE#FKL4|f+>XqFZ-PDde%^K6;>LcbmtW7$
zo)wz?^<-MTjsG)2d8^A0IYVFBygT;qS7P?7+a+NReG+R=eDl|uzSEZRQQl+sGggN(
zm3%ibPMqU4zg|YDaCy>|`i-20Qqx~&Br-*B)~$+aF$|pa|490$b16y2`nBP9F~0M&
zLgd>k>c3T<-fs4&ugv?_^@VNs1gGaO4p3DqcKrI(JhrdaXr9&Hdl#ebOLTcIpQ^&!
z&vcnXw=uP^SRsymZ=>7B*(dj`D6{Y1^6qqa*z4jaZPNVrjl%1#PIydw`EItmM_TEp
z^=l7GvBrs~-2MGUZ^sX5hqUOswpxvS@t=b90+j_89S)9`{FGoTc0+Q*ZKf?T>+WB5
zdZ$uZ6MRTQ^2F50l+-mXCI$1WYLAQTm?e4gVL(7)cW4r~B8$M)uszG>Eb7})u2lJb
zvi85_caMpBP32kg_lcA653PGrA=frUT-dICbhehY&cl66${rl?3sWe(zb5~vR}5$S
z_2n_EJ&oEsmH*GHt@;~s>fNemx2jjYpAp#p!v9mod?}d^zkUl>^Sd>_I$d*h+sOs`
zPb7Yon8tma?9=sU>J84R&#GEJ-V##L+P=6t=AQN)!`~W*e6AkLuDWt-OJm`#7^6KW
zXBx}x)7_i>!eCbV>W7<Zrt@bAOg{NV?7_hs?>BA{+Pk*T_sfr^?lm(wH=VV3V|8zK
z)Ri)g>c}bc^}lNT&}cgH<js*CbH7a6_)B1RV`59{<Di44G1XUvzPHy{zwGfjooi*M
zaX<F@(yqJw*QR}&>1Z!{cDt8a**QKH#&0^-Pu#1-=kh(@<bSf|roO&Y_50s^cWjrR
zQF|gRu<PWFeqL{-Ti@a%wjTGe(-HT2vz`5R(cMd778m2?rJag0E8JG8smh<2cR4=U
zz~t;>NtgH@J;lT4GdJb8N}7Fql-l0R7g;vFWqr`|nU^Ca4`<Hvn{%E|Z28%^sCW0c
zqa0&-C#L*3vfJn9jO9WP<iF{OJ-K`S{3PqbIW@dTznSMZT+Ds4Bz=v6qU}qSTTRuU
z&vi!$Sp-)*Z;Ic#?DFpAKcD!jhGeF;O}cu1-}${dwo+UoU)5%WiuCknXHJ$YiY`xU
zN)MHnee~x}P^WUaPW}5`!p@!!X+~kr|3ddZ(_w7CVH8@h=vsl_W4)Hkr&a75q%P$@
zv#?Q~xB0TfS&Jt^5^S?Jt7kOy?5U1pmMhr1RY}^?;AdCWFHgDPsK1=6t!^xRDAis3
zH!Jaw{VJ29{?IQII<ilnG12?;T=MyvT@qz^lDQ>@;rg?Ef>Um6dLnymImg|9i7gBH
z&Og|B@bKbC30&LRs+Qk-8r^g^aGC3djr-o$^)C_P*8R$}EI-q@p?21-GDm*35-oF{
zblp>jW4w2pdo6jn$h+bw-xi^Q48OR_!}oKerZY7KF-Mng+8FgsqxqZfQlb0pQ)hI`
z$-mFh5Gz;fxOaW!MFyV=hsUyK8a%IVof0D__GD3uniR+W6~T!cUoX5k>+|h3sY_y)
zq~`rvHZ>q&R#MOc+h5%8Pe*m!-Q$(t!!Tvh`3uk7=AUYdta|-8obk#t)<>GVo1+e!
zd`x-sNQ0?r`>Rb_$1YAd`%|eRY40aR-=F;)3(u^Sp3d3EJI6xk>aBCvqQq6MP7dF8
z;>X0bcUCp#uZ|I);&uA3?5<#?549HNVy9OnOnvgW?3{nxoy97bgM@AzcI+%uT`MTh
zH=}RsO3u5AN-rzl)V`iG&32x~|Eft<toNQJU4Qs;dQfUmbyL_Mw!Q<C1WbFk-;&u9
zed%UJ%D?<D-D8>&mb>?9U(l1~S@z_qS=7CZdhTy0FaCAhd$IiJoO298$0sR1w@s^`
zv`cz+(8S|Oi=zcr7jfETblqfm`QZK1wJ&;0Etj(M2uye0`H{!li$$0B<f>~wC0e83
z7fn2&Y}}gioxh@U_qqI^7lN0ts$BW7{LZ>_!i8Zg+jyV84xhAljsEMK{oDOxzWN<1
zx)mSd7#aDF<%IGX&X0w+TlBiFAKyK7(Y$Q-^5^z*&fIviF>#OT<f8157L)K7+niY^
z-M@ZvvFtt0yPnsNoo}e^$q%%><#+R#?MZ2Q&kqHhix0kA{B_!e&5~EQha9Pi6t?A^
zyI7gED|=Hx_FZ0$+w<>+oR}lAW5Qb_C*O0b`)0qDbZ7Ck;Z2cQWqskz-Id0*CcCyZ
z98Xq0@u;nG=N7h_PgVii*H8B>JtTZSWXI0k5gW316waDGOKW|%_?@LzhZoPVRhoKm
zWAAP;#r7w>Jt>zGbDu<(9n)Vb_@|(*Yg2OGqo4bj4j=pf<X*z(sWPtCvk!-rd}hwr
zC|UJenDII5WZ|pMCz?x+F7J!aQn|Y5^_5jC@6FSQIBI4;BcE-$g<n}-?B)7xXH2j0
z-IAWDks<J6YNgP;^RJ6jX8d|)J2OM_{zA2W-}rqW&wWhaoM)SL^>BrlXXkI#D5F)G
zj9F>ZpYbfT*Zs4>y;%D8o6g1=Nw>E?a(xoJ`}42#GhVMkL{k)}e(Sur@0exGZ`Z|F
zFKeIozv^QatlD?JhPTX+OIPBKM9&oAx0V^ZOw8B}_k4G`U#V7bM8m!3*v(DfS`+If
z3&SERWYqo_t-6zNTImKucT>UI->-8j-WASL;jG_$NKeh?!N<>X%wOy|quPYmODKuC
z{+?bgf8nLYR3`qYnycAIxP7@F&3o%Szl%d)S-XVDl>XpSJAJv1Cnel-IF9eKan-$<
z6y=t`V`|L)Gml~)zcJY-?BL)iYbAKma@+S<J%9Pb5o;HE*XmrDb44b!dR7c;Z<p(@
z)CaGY`ahf_n6zZ?jbA(R_pL2ZEBrp^S9O+%+#=({KHt|x%TJArKWp*x&%e!{nsXjH
z7OH<dTctS9@nTHp#>yA}lG*>s-8es6uY4-|WkqYrKb6NsV_3E_70=xG;Bz2v-@LOH
zotD$A;(jc4wC+1H`}+1OQ-*_|%Xgeu!(Ej;C;XJ!@jc>vTv`rmk`8RVxFgN!+y!;D
zBg#Ls)_R|eEPM1|j}1rWwo6|b+t!x4s96U6k(u!E3rBKOu+dW6Ig{M0jEo(n?rpPJ
z_~3q={Hw0oT3;5H&8rlOQ>!=HuhB~>l>NH?<W%*pl~K|$_ircbo!|e(d(IuNecO*l
zOq}{=iPxvFr**yS4nFzt@Eh0joV~Mho<4smy?xro4f*=lbT@BY++#mw+MO_qr6q@h
ze*Zi4VD;h`tJ@bX<g|Qw>C+9Cb$m6Rysev*EqPUrMOa#hzpW@Z{FVPOlfLit@>xrK
zTW3qP-w^L8-|%~m-VBkptK3{gzdvV-E9Hva*t*KW-urBC%B!!RU(8vw<-J7zoFgnO
z+l#CBX8zb0Id{6Cz1#s!kCXuG%&T3lJJb5h>+R1jJL7j!;8OPcS%1GQa50hjze_de
z)b%$Xw07ueoVAF{{=+6U$tKirvzy`;;fQ+{a=wa;0wN}S91V6M2@8X(?{O@fwej-(
zS$o$#%qo$WHvjc9S?$ct!#9h9%p0vX1a?{Oz0$4rI$>3feVDq)zMkap$4r%Rxd~Zk
zJht6ie(n1PSLT5D$K6~02435*9~ND4=bhqNowW)()E=MUxbv(uO-4##R%};JcgXi#
zC1Kl3Pm}GYy-VH0AtkX!Qt)`neUBSQ59eou*y|T*{NMBEn&kgedesvuHMZCXFSOdb
z@7v4=6PlmogdZvLXFc*WmGK8x)|69rc}feH-(LJu=uF9vS#`JltfD?mJ9;inZ2gUx
zb8QSxD;SNfru8c3RrF0bJ;U#C-18ahrn>ok_&E7P;LNfs+GbL{Pxef(IbZ(RlRvlG
z!K_ruBJ^9q{%M=0e70SD;L!Dgk5lbjFI=9NdoRne$Nb1c@wsxcHer2dBreaJWvHzm
zboQnti-^{`<Gm|pzENgxRxQeVbu;#?=kF?|H*+(e>+|`F@CF_B*zM`6(pdeXWU}Ry
z6=z?1mhkcC^=n-{tMTY0yGZb{yXorlmuY&p8r3^oEaZ^5)KfM`^n6g!3FG~ZIvcxs
z>%KKfI8WdG_=dsn^d|8Ye^eHGy>d8{bNg<Z%^8tR%ch&xeQH1UnYZZXDf{z2>>7n9
z4jj(>{j){3SN2G-x~x}j?a}~G4M(|GTBkNPF8x`Z?;uz2o>UectXyX9J@?3yue00k
zaqaScD0PreDXfNhm&K<l<&}x^=Nm2v_WzOG!&!f3=Aje*OK-9Jc?z{|I@hE2H}!#3
z&W}}>Z=al=mwHJh^vKz@B|fhwwVJBUc(kd*r^;H!`0??1{lbTpQdT;r%$(+27-72q
zSmElnANzSG?=T4Eny$3rVb;=K(QEb}o*dc6`)%_U%L_RvMtVO_H2i#0#uInJ=<b3E
zKQEfg=!)5;8cW4mUV5ieSbf^KY1xCDi`2rL_Q-CV$-*_~--_5BYRf~GU-vkwIJJzg
z_3e?gE^)oghwV4Rzh7rnS^FcRM$)Z>H`VX%ns)-5)vnDC$t<0fvZY(~Zva=thPt(P
zcPzeBn*QL+QN7CRjGRyJe(%rwKC!(|^<rG6{^EI&{cDAnO<c!z<mYP9%hFTaPVehE
z>f_h*ZN|=nGDj9YJE?uF#%0t0GncFtrtjJL>$pM9-t*4tSwVAO>{huc)e`pGukyR}
zJs!QHiY`5C#=qQ$S4#BAY+!x4F!0LF+paq!rSGYBX6fzk=wdqaeeUx3b^A5$3QT3c
zc_C!qhv<7+Kj+O|EvewH9e3DF&ftlY+JV3sHy^&^EDdRT&oilb!JohH3>I*#PEA`M
zVl``5&KoW!{;AWO?}Qu5wcOcf(;8Wjw<0hp<c7_pd-c!W&l8D%x%<Rcr@KArd(X^0
zb8Mqlac5(tAh+Oql{IO4Up`3c-VbRpvAw^g`tIjs@pcCLXq*1u&zY9%%odx*6n+0t
zVbAxo2GReH7F!?7SKhAtby-d2rs@|<?(fhvslFVV(U<6$!!b7}Bu2%`Am{r0rMAg)
z>^Cou|6#b`QksIbaDpJi<CA)MR!UDZy;go`WoqWUU%0Z{Y~6(Q%kHT&{yy>2EoSrM
zf^V1HDy`){=Kgm2xkHQJ+~d~tjVhH}_2bjH=Y3rkptvh$PU;5zohy9(3zzxjFJJB=
za_W%$C!=?t4i?MCthXsp4a_cgXj=5@{V(foDZ7(WKkH71?v4M)7U|8XKDQ#J(B|u|
zor?uBW^krYVKI`7?%H`M*mm0XU(9lvoqcb=y*OtacRct&%HG*u7d0l&F(`j2@+pt&
z&`$G4wuOgsl`l2s{n#QD^ls|vKoy~xKP3)U_dJ!+d>DC9X!7}=t{jb#NsDz>@h?fZ
zTABCR+)PYGcx%ay&8a-Qx3AIC=$!7R#MUgWKB+!#*Ns&+IWv=lU#NHFZ{FtfyP&&>
z^W51tJ%1yAzI1zB(f_&YyNB=AODkl%8st{@FMX)(zRPdP;oVj1d%QVM*{a=EHb|^l
zv2-%)WpSQ0g^%YpzLEUW8*x{z^GC+S-n~L0U);o#YN{Wlf0UN*D+$uSxhH!ud(%64
zv9e888J9$B_qcj{@TF{D-c#~5=eyMGV)<vk&)11Os+ds`|EYOi$c6rirZ1h!KW{wI
zaGsatVDd(}DAl5=YYVUbXa00V^f9&t3KmF{=Y$q0xQ2%N`}k-(`#MEf;#i+x0a~A6
zpkQcdX{tb#^$CXNIM*jQLf0dJ&Z#d!J%k>#Bmi}hfF+VY;fn;!OpFkV1k8=hOkh0Z
zGw3ah4NZw&B(RM&WXfwPGoR@VTN;iqT(T@F_bOLr<}olhbHJd)(_AUYYx|Ox1zV<Y
za9morq=f6z--Wkp&)s|e|N5_errCQx+kG!RUVL|JTpF8fZJwp|4&De!KIbCl${$A<
zxn_B(IoL7C&u8G5m$#QQ-pt6t$@*XSc(NIj@*Ty389(ezL<AB9KKU)<aJr|Nbttjn
zxLg2300V=F7<*U8=Z}m(e*QS}FRVrR2xFIme}}BYWcCjde9XHa8)_ejtrZYpcYhK)
zXMa3n&bBuU3uesVxSn6!Fo#=$aU<(NhFJ<rly5xMTcpdub)o&X(*ck9^*a+Lm$)d!
z9<8k0yJt^@gWfxvf|h0zYw-izO(iTZ8t)$D@ZTW&Ks>cU>;&tdb}4>2;{yi-AN><w
zz`xzSs!<@}z+48djjV_7y!Ww5C`({@pl9U}@5{X4Emzy$rE5M;XA*zlU&P=b_n`jH
z-;MvCaxneQ<=M2gb@z^@1UrEl%m?I{Seds>HLaL%&qI%aBkjAlAWLcc{hQ4;jshAd
zp7}lee$|m7)iRdhMc+gDx_8?+I<zm%Jub`i_vpm$(`WBC(LVS_<bj@Eg2W}+_t*c5
zC~|Cg8+)&|;=jmsNw)7zKmXQlYCrJiP5s3Up9`Lvwm9CgIgr&=U-HhS;{R03hKUS{
zc7}C=iHQt1cp1KJD}C};^uU4RqJN}W{t4YL<oHnBx|`|E`-}!=g>Mgb+uPWePf(X=
zaH(iu{_~IX&+is?7N$1}+dLY0Z!j_){=NRYwc(9_>p#c-6%@#Cu)H7pn~||*f8GDe
z&3j%OSX=PC`W*lDzUs57mjlg1O&<So{%OBpkIfzF2glFqb3Aw^F8qv{fwh%|QAz1f
zLqomwFMqCo%l=2NVs84g^PYXos)KJHGHl!*acAlKe6@M?QO$49-`T+YPu7vU?)rrU
zhTHYO?>G5(od5QY@lXA{ru%CD>(Bl_efs~_|Np<costW9kw53He(QgJzM@8l+J6~$
zOt-Lq%Cj(eSgy?UJ3ch|L%i@>&TY*VJO1deYGb*}+bMH~@z;D8r#n*>?<H8va$LIh
zalPHI-F)Tm779p2u)pK`xwV+#j)UF4{|Db4J9q78-ufN)LtmS-?3=x+zCEPr=ApNB
zz4H4f7%;RrG}L@}*HvFG#Poyl{j)24Z~pGy%ecqJz~a+6mI8Nuh6H~12Y**-+S@l=
zm*Z+zUXW0|g!jn7hvI+4l|Hclj6GcM=#a>;{`Fn2#=l0B+W&|PJos<^A-?6ke8X9L
zod%`)hWmm4o_as1pHMIHSNP|0^T3VPER5SfZ*aZkcqewD!u<bEix}d{`NgN-|NVFV
zgZ-B>UpMaf-2Lb7r}CZue*dZ7+Ia9@LiC=Qo;%jM%m~hnI32n5j<f!|tBNZPpM^dy
zDa+e0>9YDbt6~|~@7ZT2upa4*@rqZ!_-2#P?Tv53e`W7~du;oSiN5+Jv-SV3pJ#Jj
zIx_dzY`JAWek?7BUbn7YY<k;mhqAN(Z=JobaYJ&i;MTu}#p`CbYb^A$dpR?Fdslg^
z|IO{^1t+iGm7U*m^?mHr-lF5u$0Av#_ZUCFnc^E@l%%*bv(Uoh+ury6^7DHpKB?Kc
zwEoW=Vf_U4xCJN9=S;MJSaYa+-Jyp2f0?f;YZ-e*eMz2lURkH^ll01dd7qzq^=9cy
zq<d^A-y1s7(B6>4&8j+O6IWoy<JSxg_UvaXS3UXtB)II!!<v)LEc1IGSp3!!I>>6j
zw`iNZT)0NYt(D1_7r1YTm?8DUurf?w#}~$^4O3cNW`!_`fBInQ%yOo>>ri~>5za3u
zfgPJGGM+}BTK~X~P58dH%&w1n-lQo1lxtP{B;nc{5II}?^39%D#<e#rf3)WR^yZtW
zB+T!>KKw3Ap{lW9I-kzujiPPg)hTnjrXDMDwe9A9Tw1bwi}qe&tH^sotY@Zm=p@}d
z<Qnqkc8km-8__pYRvlfwdv)VC@qX6B+gz8Q|7$aOs%ihH^G)aW?N2_#u_ofU&#g~Y
zPa{9>Ew}m9CKIv0_VV7fZB0$@KixPoQ|h{;a$`=?W_J#cbu(n;P5pmftT`a@jw^Os
z((S*Bj&`p^H>qUStj#s@Zuvdy(ASkOwH+j`nRBh*b8n^UP4O4oGMBE&dZN7hr1)Ev
zpLXw?va4=9Uu%1XtK(^q+XmSO)@N=U-*Dw>y3d*LDQ~2#@>l)PTy*dD6q}n1xA-(m
z7WT%^nRKaTo7K$z$*ZsRU6*XlR<pd>A;z1<?#r&!fA&du{KmPt4%52c81Ia3dVRLE
zAe8H-^}KnWi8cp+3+{ih+WgYCW4HX@tEl^CEbK9@G+FShdX-dM)Z5P*y8i{4g#W)i
zEGc(SDu20SU?Y#xo5%Up-j^2cyL2Uc?f0X8TiuLockci9MJFO<zmb7Pz>@{JVV5~h
zWEL!5`S0Ja*}dPVe0j;amOarSJ4y8PvL6?=iCiga%6tBlBj(TD-P<Qdw|eO(X)E6M
zDmy#>WaQGiopy>HuT1?P@7=#@iMhtdmk#;HaY{2Md|Yf0?VmaKm$M{mn`0&?yZg6o
zoHe2WkNIN^XXI)Ay~BP|;3j+aZ^6i%C0{1R2QGeOEcdI}Z3DZ{iyD~@mB;CtYd0?T
zE-l`;H!2}2Ou1xD?u{2wp>~X`V~gBhUQfJ`cK$*8#lvCO?0^3jy?M#~=I@GQ+@C^Y
z%krYDvfNL}oH;scVom3}>q$YkS0}k{6`1|?)$TW3*H=1~*OpZ@-%Qzim22glg9*_O
z<u4ps;`DW^{;B^z)%?~i{l9bPna>M8|GV9=Wr3mK+Wa@RcTOaKb6Q=bYHGInri$<9
z-`ousuYJGG_HF&y+uLr-^ZhuN`|Ihsd(HxyKA*z3&X&7X7yd%?%~73KD;KPGvEClP
zx31uwCBtfy8^s0_%4clcl+SfpP1|JM4spLLY76Y1Z-`_6c;o(zI>u>r6-Dc=O3bsE
zTI3cK=u`jdo0P@c^Tq}<&;MN0`aZa1!jnsxovDY@&%asaDW0?W^4>*v?Edtaf0-V%
z_Ly7WvhR^!^8RQ^{%GEJc3aMdyllmm%->n_ZXS7VC2q&L^iP!4rk>4_waybiKXBIk
z`rwk;YxbKOS`XYmsWw*GAFB2Jy7S0#e?PtXXG&H#Jmb0b^g?dH?_{>0XW~x(UMuoU
z@P_ZYZAl;P?L5~;P29)Q@uK&k3;)XSjw8B>OZ;uUk4Vm}yO8Lh@^NKV^72WSV+;cS
zO<-<STPl0p*C4=2W&68#+$^?tBG`QYZ<(3urSSCYi9d}ykG*<V`SavH(be&Hrt<B+
z_<Va~<);`)2Rmc$sOHl@I9cnAHndE6GvkEKn@7C{^Xx;<ePp?-GhL{#An&g$M|!>S
z=h=tVTRyQk`zqzU`L3jQc<;%pt?_E{J4?%6#=W2H^!$i?$V0L3k-Oja{r=PNM8@u-
zUdCa8n<~H8tvq)@FXZgAeXg1MH`gC&zr5y^Y5q3dw;#4GsSXfb-Qgtev0haB*aj`d
zD*tb<4|#uF9<LR#ZO8nLnr)vx?!8^VH~;+_hi>0AxjDg8tzP?znjhDCDtj?eX34M3
zU*uE-&d=ST($?~4*CFjsHg@|K`0d{Cb>+pd&=3oi<UfTi$CRGlU@Z>fntH$Ge2mpB
zBd)8Wi!I`=np~*)w(Pb0wc28)8%wG!EUHgViY}b0{x!X7neL>go~xYBFMjh>$JG1i
z%P;*;Q`h`Fe`p^6UyHzy&MU`XU8^<ubw%`R;!T$b>unpJy!{nfs_@Nj@uRfehh5Aj
z<V<9;>pOT_vnoP#kBV*ftgBK@Zn=|AMt)7LSiS30ipd_`U2C21{BzvNxiRhd8@|Li
z4rxzM1tIMV*6XStpZI2)K6C4;x1UA*jgI-8ODt(KZGXyA5~U%ylx6ehV*$#H!5(+C
z&&#^qnehG0eG_kM!zYtk)RnjVX*y(YXudS!Sg=;ywJ7g3o~v`WUs)?!6H}UzaN<nx
zh4vhu@}-C0wpYu_9dXdKJ@Sxgr`^geZNH0u2LBdYAmh`;$9YEfnt1ocZ%;RQOX}M$
z-yeSD&Wzaog}auk#%D`LxokWC__JJ5j?RVBPVFb+qTgQ%Ds!zoa`>#~W$n|SSYF4l
zaeO%Ne$}>PI%}lL?*A89s&vL<{^`%XA9Bu@&x@OITKRu!+9t`D6ED8s{f5nv>+S26
zkI(h6o@ae=a@xbKn`Elmf@3%*9}3i-#6Oe8nzeAv<2|DG@5&b+IyzNt;{6wYOb)lq
zJfeJAX;oZg)!Osv^645Urlv06U={hyGd6A&w_Bpz#dn$~OFc!e@pSTMWc4@O^%Y6Y
z{4!Ht{C2_Fi@O@qETob(CbP93y>upNmF{ou+0l!f{@#zc{I!0f;^Ge1Dmjh(C)K|E
zia&1J^Ig8=e%bfax&r;h+11xL7Je5fKk<uY>an&CMxEI++VTUJyV=c^UsT2J_G96n
zgafh~AKp$jakgwz|Dcdt_4MuR72ivx#h5q$w*I_&rn~l+MSpZZJXL%p6Lscy<Lxai
zPwV{MB6HF<y%n5fqRp{of;+$Cx2jJ4s@?io`yU-mc$&JsoAJXt!;9*B@@<@WoO`#=
z587fP`8hB#&f8|~zBB742ligC`fx6PV|h96-H(aq+_!FtRMU9!wx4(YE^+>}0=c_N
z9^xwZl~x)hDX6Vju<p)X{gjA5mXofRuJn9xFMqw$JU%!3;Al>HMUB`wO8wo@TaPUI
z>lJzTVC%Y?3az-cv&`q3aGI(H_=R5Ozop!Mp{B}D_H(0`jce<flAkZE*1TNqCA;dq
zp4XQ78zsB!F4QdD&3L`#qiNxcgV*am{o*d%{q4Ic&jYu!Zzim~YyLOi#?*l4ooMjH
zC0n8e*4y|l`Sj5B<{aBQMn$t*q<_!4S;sHJm2jgX)8XQkh~=UE-HWG$Ofx7vf8uNE
zqi+*VKNS4V_3n~Go>$7B!&BM4CgvZ1taVgKT_daH=QQCL9!xtbK1)u{?n!T7Xr}w4
z)l%hKRmh^qzl%cL3XPty%@Px8^S25!z0_1y_Rcc$Q2HU+jL*9TBdX)wEV=%kzZE^F
zAl_2tF}wE@2aB6EZ^S*n%bXPn{1Eu<ZIg8H>>uAG%dgM+Xv?+f&5n7yU)R*;o`1JN
zU0Skf*`l@Ys^>I)FG+ptth}yn-_^QLA2Wo+_ugx%edKqzH)y%5+tpk-maVfcZoXoW
z>)=%LwSDKi#(Otb-7x7j?uv~*vh#ZTl)BTU9pW!lu9gc*E%19?$~!rB*R;FWe>L(O
zi7F|wUj6hhGdy~w{juLpd!nA$*w}ggmi(d-)n#%w@B7=^x^I8%wOD^da%q&A+ob<I
zS4&iTPqfzXrYWDbe!AsBmBWLqG|gY@_G<6nc<Hp*FPF}$^k1(I|6aIUE5nEX{PJVR
zv#hM7J+^7Zdq&Rcnoy9U=A-0Pn$N&<Y}e-G#EyB7Hwm*}akcg}+{K@4kkywqH|oG`
zvso-#&K#AP&Dyx(lkZQp{GQ(lN`HhS7tC9{P54=)1*_kWokuf&E!fk)Ry=W+zN^^7
z<8|r`f;;xr<@l6(sclT3{6sgeE0N1jVdm>+=}QG>{g&1~`ou=`oa5ds{Z(SQtg<TV
z=CkG3)J(pgWo3SQTZa2&_2t_9;zc|solIQrEDzE;!K=J|v(np-TCaN?XE$EiU(EQ#
zJ3;>Q<6xsxUveHsM%k}isA0++kktL^!osK=KH18p>6_Ruw{#hHKNYgKIJ1HKvN)gA
za-+`aoE;sHW6oWBVO;z7NB7izoez8Jn<vO^IQ#5HdW3haDbKp4MVj}Y20hyv?YX>H
za(QZq=)!3)OAehk;o`9Le0n^(`BCQn)>|7iXLs?f5{TEi@`fwy^A~}JubhPeS-SDw
z*RH5dym{hR?K|x$i`}1I>{oiRd3s-Sy~Rb1A2ZbF9JAhjZ{D4&&a2i&u}+KD>N)bl
zRw_wJsQgy+(Q56Y^)H$W{?<xep2~kXtZLqtj_tFJX5`Cf%=MM(UDbQ$2h;2By=ym>
zJTYrm%M)kPzIJZY)y*#qZ6|pC+J1iRSts$(FKb@%1j(?Jg;=vp-?S{k{lKd#mTRe-
z51xyh^ZwNHmD8SecFg@VUCK4>VfWcpQC1OoDi=GC^vkwwWN~jUGZ*Lnb58Q{wToK{
z_%=M3`~So0?B>dXj?TI*7C!5l%<VraeqB>}Zt=9G_Ycjyq3!1K&LrhW*x^3oRsUM|
zx)+^x2rOUFofp?@8#{gXsm5m$&KmrlHc#_^(Dst4{QG0Kh#dQUL2*^u;oq9<5|t0`
zzJ0lRey_$N!A&xgWQ@LQXY(9CFH~7pQ>0TWBP^HU%QwBB!P9=X?b}})+YD4oZ>(N>
z&8K4Z_1|;Nr%gy%&HVmFr|11I7rcsZn;mKn%{zFN+2@p{LvC)D?prZNgMXQeE-B@F
zSAMnSY>!6gg1-%m<_P#q*y$xz*)2S&rlw$G=7oxB_qYFk?3q%rd~&GH_gfsRE!PM<
zb6%Glrm${rk+EL#j0rJfA(L*XJ<wj*!=O7=FmVct$|pO;6A$8K!p<bNUN^dsvHr!T
zW8bc4@XS52?D2HJ&ju1z{Qr6O@LwyQWHd!eE2t!Tb)bHnN7Bh}0=M@ZktjJW5i~_4
zp5e;=PSv<e8#12?W?1gv<=Py(^I*!qSGkdPqPmTNp*Jt~_U-?_pj33r?Fs9i3r}?Z
zaQ4mWA1*cGUn-q$cZPnj%sDl^V?ttscwwqUc#m1&9`zIV9<TVT=P4Y0d0q8{6@|K*
zFVckSr8O%4OuPQX=+|896|*Mw7xFu=tJ%G1-*<_gik(*`u=qMmzrIU;a`y?rvr;ox
zo5k|G{OCApb?n=ToSRnXQkEOVv|POXXyVMIHOE`Cj|*<C+r2?o#d02R!S4HNEi)%i
z%eq)F@zk{^#s?ifzS(u-)$cQAR<qqa58E!7aG+;$`jYn(lh0_JJ+kb^v)xZt&Dgr7
zU1{=?wBuaM)FW1`{#fcSZJ%APGp)1OaF6#cGZpUeiX$JdUW`%QF<COypw8L)(Td*A
z%@>}#t}=MMVaq%@^Nkk4^E=s!cW0Va)+NnP+7er-I{l~3wNTg4&?QCt4u<6=7EC$Z
z(3yLpz_)sJg`#N88grwghw}B;6#d_JbmGn6H#0;%8*S4))cwQ0Z1dQz-m3b=>F2er
z>3d$>wwS)6@Xf2TsKY0>6+ISzI_JR`arqsk+*5m^+eD{k)w;Lb**vp?XM;$iOI1x`
zv7xBxqv`$6m@J$HWoA!3cGB^tr1}j1=c{>gZyD?AOpUAFmHfN>WQN7zY;NH#tGSNn
zE9^b>@uJ~9&E}j%7xx`lT3odI!aD9i{hXM2I<IPHFYlRo^~@`aFoA_1^fvOb{tx!P
zb^Nt<20zQ^n2CP2hOy^GCtbF8RbxNS_oy^HsDJf^X7feim6D7l5(j<kPZo%$NIE>3
z^+nLkernbaJ}qmb3vL^EQ}0DEOv~}%J|4AQ+5f5&ckHjreU%<nYxl0KEApG%w&y{)
zvGDPNsCAn6T%@vtwuP;p?pY&J`*~x8p78zJ_M>l4F}?e?OY`6f&S3EaJS&9?`23tI
zS*-1BmZhk^p41hb^ytMQV>6>e`Da6;uUr(pyR4>aOHHqy?LG;XgYyNJY$-hWRz<I*
zF@|mJzE}Cu4=-+9XZlQ9Ch@6#&x7dMb6h1q?fKI5DWWNPp?<q_Q(5Nu=NZ)!t9&kB
zsxelRWMAhzRea7@ws<oip0!1x`!<!uCH47+f8M|tdr&9u%RaZNfLnoQlZAM?l+#o1
zg}$F5_F6qA=GjN7*$$dp%;yV+MV9^8Tjq7-cR=#|X+mFBZe6vnEcHI+W4(C#TlVyu
zTfc78(u<oc;P_zm8Npp1g4XVH{4?H8emc$VenY<cvBPCXKR<W2i{5POIlH^!<OHpX
zV+|?Ws+wf)-;w!h++#lZqqOXiRHihZjax3cb4sah<USUx;Ph0ebCtmQnteY-Z-3jx
z8@2Pwt0y-n%sm*%n{@j@n(BljMW*{ylA`W&HGfcb)4caarQ`H2Jwe@Fvn_0$)?7$h
zzHoC-iEeY1jP7>Buv5kv9lzCIFI!|ZvAI`d%B#yu&CW`#3*W!~h_UC_yGg>@dmcI*
zdarZdC-i(}b>@pxl6gsac2yenH#MW*x!CTBmrn7szj3(EU-w`4ALBd|OR?E3_LblH
zZD!Bd{Q20#*tvD9B0t;xX>`#Qu2!8IZ<SW5c0N}4wp3oA|Gp3VUcB>pzP#1uA)A(r
zM#-BJP3@yq-`IGr*0ZqM_TR2nzmx7_w57Dkd*jD2l>-uy`>KM4^dA+K7(LEkAz}RA
zXh(&KfY6J$x-H@J1$DVL#cboNQGfR*!(MySP4$hf!jhSSPK=kB4j!9XsJcn?&r!8&
zA-X0aHrKD33C&Ud=2W@oc3IMcX;b<+wkB9|P1gIjMrzG#sW*8W*J!MMvG(<6_iaaR
zZocBQ>#Xq%4StQ+bN`&GnNqQRW{Nx0^P-N2DuUBriDV?~Y(H@Hj`OKw(<kO97cZJH
zYeDdf1GXZ<x1-<L&g6^MN*6k$D*JG{uH&L>U$)1y9NeXG=H~o+^PjJc@aH%G{!QZK
zhZnEk$-FVY;67>5o;dGyVcTj|UkYseTJflQsi5kkH#bkLSo-+o^`)#&ns)ac(7dzj
z$*+9{2lpH>4taNVQ&`hxtEzq1Uj92#DR@w<SNg1cW_O4KUuIu|>(r`+%U8LmE!L60
zd*6QfmtRK;3#Lt*e#LTw(#L}AqjT39&GU4xTgLl<<GP#CahtkpcUo_|zBFtqa<VwD
zTvu8!Me3`r$&?4vSoiFC<@fxb+sY4*S24UO<~n{_dhS}D^C^8w>E1F6g+-2fKipa|
zlk2@{qwD_sGw<8(Ysl_f*Di6l?!?~GUl!kf`6hdA@^jRfJ8k>V)sw63+q@Iq9gkQA
z$2V^AId<dlJXgu0MW5dusw~^5e=j}rjhsU0x15%eb({9=sMr)W-_X(|d20LdyFA+6
z=WA{_-xuE__FZABxz$wGiy7;eeGvb-ugS3F&gQb*GJ_9Htt-!T-BCI3DR?92SKiKk
ze(`N$%VwRLcHEq0!RMntI%7}1=d^$2FRec@rNi?^ZbaOhsb13}c$Qw_-*Q&!(zNKA
z#*r)bgk1brU@${2p(XH=ifhlKH=4FG+OhZi8HJ}TO88X&wnDbTZoblwVE)&gS7u+l
zdVa^1y2<*>OY%?l=!UU~h3>!CJ$03z;CrtmGnwi$+Y{HyJovxx)s966w@xcrdM(=j
z^*^=Qe%xt)C(kupas6^-?#Ynv<)@xnPqwUm{KRhlueN|!Z69wus<-;)sM#I7-{kAQ
z6(tY$oOGHcaxZ;_X^ri#g>he2^=Ad{Tw%xMXBlH$-*NHe;+bbQiF{dkN#mX1(Yxjr
zVn-ham9)t&OWap=ERx;gq}18@T+g2$6u#0Y{xQdUm*&fLpWdWzkv!(P^)8e4#%Pl^
zFSD*cjHb6FWuz2ey}y#x`Doe)c0IXM6?P>?;mM2V>1$l+F2B^b`fS5dzhxqp`wB~|
zKVG`2!N|9|ms?`3TtMq2o??3`dD%dj`Fp!WcYK(3?XTHl8->4rlRn>^7IW<3!nu6^
zF06fi($uvpTQw}a!r9z==9CE%S9hJLX}@`s*<<F5G@);)6Weso>j)Vt3w^y4BQ;S$
zV~K0n1gFY?e6^O|>7vq=e;@4CJf$=@a8-k_{vFAbFUGDDFV#3GSsF?i$=o+NGA(%%
zBip{N2?ll<JX7DE3ch*TyzWVrSifkq?X=oc^0i->q9(~bSK4xLQMYKz*HV*BC6XKc
zA6M9<#!Zvyck)iE(U$a{K8fG{a!-N5fe#X#Wp4I&>g4q^kG6a_w10YZ!UT=A&x$S_
zx-EMz=eYSdj#H+up7TtLouhJBSi=76-XeX`QhnpVr%rFw&imghEj=}Rhb7xyo`yva
ztGSOps+l-pxx?{I1wREZT-v7jr7qX|%tZ4EyUv(RysOta>x|tyM`p83`De`=Wmd5D
zrCfXEnQeRB^`o+{@zT2)YoBGgp4L$m?!B<9`|0xEnNOPDCt119KJ59ZXZ`8Lf=@nw
zO?}qRUB;0nqZm>6DJ0<yV_RLWmE6>i5_vY>nY*sU$T2@{Y1^vs&|CT2gO@LP=CZuq
z95!3)+0V#?w9P-gP2|?Ct11&=3SVZp=F!tnY<tz>c6Y4XI+I~nf~kJHG1vFbK#{6)
zR`!Sdi!Lj)DsKOnZFb6}?UFuwi{`5JYtq)-)8D;OMSrre=GHmiHhdCT7xm)AC6TyE
zz86*{6~<4EvsJcZ(AV1f<GaPB4i}48o&39dojQXjinYb8kKivqzG33^Z^u_&IQ%zq
z)_ayuH+vczRBO90Gi|&(v-|6F^EE1;n_tYIy=a>E>XV<t*Qq3`E#s706dZT_wdNDW
zr1-eGYze;)^Q_);N==^aVPjD?<I9lq+VNL)y)ylezy0;q;%wlWJxh*!;P{zx@rhv8
z)SlIXzDIpN?cKPVt9kL6&DJipr(>>W`JOyn@;-5<-|chSv7G-;8vYQRcGJ+E<;Ty3
z`$Sjo(Am@f>+iyJzOQ$_?p+bcZQU`O@9v={Kg$PfQ+7_d&fCNLsxL#z_)EXx-S;&a
zcjfNhjk}b+%k=Iee+Nx*7sJqF9FgBwgz)h5CRm;gc3pdA*3%`scfLJ!cwYOj^X$4l
zD(BvAyRI(tZOW^!b$@+=zefBBS~O+N<mQbB>JmDR>{Du<)4bboXXUA^>~&3Ds}?TG
zytTyNwav}rqnG>6`D<C+L}unXE(td6?$BE|$NDdi`I1Qv;hkZBO)j4(sCPQ9wECdW
ze&z4(FMe3R*ltqH`0A9<4E+Gz&Jw)`t-d9)r{f||`ldSEFwovFCi*oz*<{kE!;hlc
z-n+Nn<dR+xdp+{Z%dckV4sARA>+s*rw_WyovWeV&y4>Q+`h69WbzUh;U#@v2_3q)V
zdt&jss}_5GUJ}*1_L1GIa{H>De8-^9V}{F3&#tu9&Ak?o`SRcki!a)iZ#ge>a%rFc
zs=BSJia~v~y3TUP!#^)>lY71P;KMVQofhkV-x@q6*tOo~dh)%0v!3~Fs`wY<u;xsN
zO3~b9Uji>3;!;1FCC5HT&u(+gp)JYnL3cWCo9pFHHmpBd$2~D@`9_Xar{7t`C2TMK
z_98xJSwQ8VA6>0~o?8h%xX^GkJbsGg9kYVMs%v89yM&ju<?7FMO-NEZSt@0t7<wkP
z*dZ-*!;PoipK><McqdtC_I&#1U1mCFQhz>f%%6QfR_?9D+?q8yi3dLZbh8o<j1_v_
zIZN%)gS!(`7Ef7OCbmD%Z_BbpM<*C9>#|aOyT*?#)cOmj^}g%B_EcvJwO+FgoVcg3
z_4aSm%J-Ayxn4YZeW3JLzWZ~1_g%MVKQW1u4-KEyu$t>-o?dm6zUZWaWobuQ|M53%
zb;-lBw8O#xX~{!KWkITfzFU4?iA!p6a#3bMNq!L*nD3XEo2sDi7~mc05~c0z>l$Hb
zz@_h&lbBwtU;<I$<dk2b5Up!uqM&PJX=b2cXku!jU~X;{%cbvFoSd3hqF`dcrSF_r
z;E|e{o>8J;z@-ne1SFwrW?;aj?^%+VlbP(8m!6Xfk_;|M%?(p9F-Kb1VQk2y@0^iX
z6r5V3prN0Zlb>IdlbTkNl$o9m;T3^Q26GD%i&FDIl1`cF`p6t4UJ^_StPQRZ#)GN^
zbHPfB@>5EaOHwk63vv=G^@~e$a}!H4^Yfqrs7p&g3rSFxmRJ}fg)@9<iLs>xY%z(E
zf~ln;oQJ%$#LU9XjOe8$A*>-G*}K(LSf}R62rNl#dpBjuq&x|=1eUY}39F?`r%VuF
z;q+vj_)dh;)05GY(Q(N{frovC=XO5dU%s~b`kJlj_4#$@f7_jZmU7u#B%o>0o5U;)
z6*mSIjwx&_UaXkq$<W{+=%^4dW6I>q9F2u-e+?%W%{p-59fwHJul=km79=L{Tq|Sm
zIe6^lf(Z<|{OJrHEDS=^**ra%8yON60$#0m5Q&m1V1Luuz*NG*7^R_dX6}?=)~BzU
z-7GAUHst=RVl8m4U{KK1<op-^l0j8mLW+@5nb9htNBIovZ9%3oHi<<F91_Q#$E)s0
zl{J(I&s0>@*VlL4(7juM>#f51!~7qd5@Z<J49X>L3A3^OVd1&Jy8A$#varfi770tG
zJN37D0}Fb@C3u+=c+YWg@Vx9h`@z8}F@s^7<$-`;=>^ZZod5A%`zL#V|A(<OgNMME
z@}2fK?YR{v?4NW{faBCr(Vj1k3bG6ZEyg?xmM_!o_;~CC^8t?+=N&d|w&t46|BXd?
z&cSat8sg2_nXgQF$9N#3q5i>6=L;O+J-ZiJANr~8vT%OthTt$)r_caBJp+|vbH6<Q
z`%dA40Y}*zJE#5TuUlLy761N|dBC9}@=uuM%Hhxx5}gH~8#3?x6mBw|_%FG*A(0`;
zK{JuFP>|saFT>|H3$DL9`A;5m{eH^w*Cbhx<;TuNF^mN|91#pme24!{{I#>$Hj#nn
z7PHuc@AqZ@+f8h8V9;P{V!Ux!M!@4z{i@`%20z{#m;KCWF+U*G@l=k3;m^<Czt2i}
z>uYemeDm4=$NIlqE3@vJ8W}$O-TNbd{wAYS(ht-bgxEMZygM5=<cLmV@bF+@Wc<JG
z^LLhiPXAA@;&=PAQ})CBNwYjGxD>uhvy@fUGk*MYnERdmtcQ$$b~o#Bd8bJ<{FZ+g
z&3Lpy;0^Pa|6vE#Px;^b!+!Oj_&fj4bFZwlu>N0E{QuK`e)Aiw58r%NXE>e8&l4tY
zrLo3p!hgvuuHS1@WhF!&KKwL4&X-4GHNWbT=Fj(&U3RQi+>;nk%fj~P$84AST*l~o
zl8r4d7vB-I-*3jiC?N1d-fqn!1-~2mUDjpc`(q5&EckafNR-pjv0lqR!bgU|ZSg_7
zB@Q|VTaF%Ks8d+uve4jt{2ew9PNhJJ94-cKeFg^ig`V|!AwnDiMc)ewe||l9_`n`R
z`@2j2XEA<sSiJGkZ&#+A|NGDFpTgH%d01hIyjq~Z%niTSAD-nOr)gNpxrUFkd(!te
z?(#yj>w;20#OxPeq*Ps{FiG5a?G?LyV#T{We!A{>vFY5&9<diGn;*=VQ}+G6aMw(R
zy#0sX+dFBNe>)m`+qvRxUi9qNxg0{T9CioiUwB=*!s3|o@%P)dTTR@#P_KITzCSz8
z6t;J)F7uwildqxI))5yJ)WV~`##M9k(wLn=nK^qxCm*hjFMN?L)P3t%=C9f1hmua)
z8ms=<(Xq5-*;(JB>$}@$&i<4+-}<QJ`&+#X$1LniS52CrH!bVdLKC;wwnca5)o|2^
z%5FcKv0wC|){V%<;3wDP_dLDXbL)CbjmCD#D<7&l*Yy>!?VfV|jMUwzJ9YhB8&^1J
z%{9^Js5qS<mU_?JOZw*7M^oO$ZT#Bu>Ev#)nGr(8PZIC(TrmHYzm!MqS6ldUIbnkb
zzKiEt2kon@HjX|to9)8YJ$Lj!ne5Ve`qT37vf`!hBXbvB^KH3rwCkMjv8R@mr-MRM
za(>-Wm8vf(VYhg+EF<%M+4@smalx})q`&W6=5cEB2@cD1-*c0Vz8Bvuy!M*&b5?oS
zsXP5<(H!5k*7EU%RVnP5W6$@vl<m0njcu#c-f{Ej<Vx+^`KKgu=DCb#(!2@=OL%5(
zO#hcv-2G?U!wFZOzvx`|vvU2;X;zuqAA)QjcK<rCxM_QcDra#2r2S2|c#c19W_FWZ
zYv{(#dQ>u8)2X9%p{CHP>mRP3u2{c6SY<)QyHjU*zjn?17U*LrBYZxc=k;r*L(Xw2
z5$)o_CbeNZXIf2Np!_0P=eJFt%Eq6+x<n%1Tjgl|-d&S(@>XWx=f8QZ>-;5GNhLiL
zt<t~zkkNGWyjMpjo$qy@K98^Ro(KQ7@N>N;`pdKxe;8GF?_}u7{`4|$dimjl9n)Hx
zPMoTmG^gw<%jFvfmCaat8?Q~={9)cqTftk+4<|KTxo&M`(~&1q^~on>!CawLY@4Om
zy-Hlw>d`gVG<nu}$z6M7lvc%d-uTn3vgIg?^zW#2*##m~O+Tw`ukc@?<GpG{{`%6r
zY;3z`U23uVedojNe=IhWHq}3q_0g<Y{mQ#x#q_xQtEXR6zJ1IwJobmc*=t*JA02*g
zuc6t^X<<^=Y+E3Ac(Hk1w@2|2-zA+V_WzKQ{QoviMpiHM)`oj)KIE_^zu&1+y<9%4
zX<pW}8td?DInztk=Ty0*y}S9OOwaPF`@%`@`xdjlI-1CPUN=KmLyoP{rg+YB%@17*
z)w~xleBIl;(MC%6e&w&pQ}vcicYV4n`s-}{wzpOn_U(BPwCKC@+*7yj@Z5FnImNVd
z!CmPkf)lb=f1ewjB*i;_u8G~*lLoiTeHOj6?@KTH9e3oYY=q{TG$H4N_llZ=UQ^ym
z2&^tp<Vee`N!Q|S&pm!}--&G#6f*5=BlrKF^p-u<Bxbhl#aFpgx4&{|p6@&VYu3lJ
zD#DNT7m7@n@FK1InA?TpajL7XPhWGXrqOmzYVh_c+Ci_L2<@F-GkFnrbnlOO=N~-v
z-+b)dsZ-W@y=Bvcj(y(8qwFViwbVJ|T+cLP?YABe>q2H#?7r$1JliVvKFjti5fan7
zt{>m?{+ADb$YR6gyAS^5%gpUE`u!`C<x6aiznQ)AO25_DdsSaa$Gi@4O;()Wvg`M<
z{sk=Mhg;X4yJJ<fYOcuj)Fz8h0(Ejm@ds{+pS2Ht@+|Z2;<;i9|9{?MT>FEaebUy_
zTRZuTH=UT>W4OLjs?2p+hnoJTustq^mUbC)+j=a2<sPQ=Mws#Hr)&GpvV1wM*1Woe
zpLcC*Wmi1MtTgL;TFq(u9+;);N{d8A%J+z_-|}rmA?rf_7n_}vFE0PH?fvEK%5UPr
zQ?`H4U(MBNqnYuz;MU9+@6G42E`G)nb-8?V*D}{X@9MqcZz(3<yM3h9#zf(JdC>YY
zS?AW`Cl@C2&d6Q9d3H?nzP|-JYd2W$35u&*|1$1dQ~IeV99zFtUH-k3rTF~3j+bky
z#k&|1%HN3owEA?;g~Mds{c~oDsyj3^Q`4R=j@$j}rS!_{ZjtwoGkeMght2xjd&}<8
zo%IT$QCt3e((-Wg%@=;$<&#iuyCAk^SBS#mipYuEiUhihlP1i+{_Du~{1=aYm~hmk
zUVami`G;w}Tg&x|%Do2S*W7IO?KPKj+$OMpTG*Bg2aJ4noH{6~Z@{{xPW08^sU81j
z`@fI)XkE!{Dg4iQv+4bn>vdKM>$-ctT>s(n_Jo~+$?xX%^_5vK;&0iX;t^1<mCkvf
zH~MVwoG(w0&i$)lxYK>fjMTWid5iYACyHCGYK^$*|7p_Od{dJ<Zx*v~3+2y=C}lhv
z{{3@wjp@AXXq&wi(mS?nQeV9&ZpGy<o#(p(jdn(!S~L4p(vIvetTvn9>YWoSKh-y1
z=yAvHb6nkXnHrjORzHhnILupr>aUNN%qgYW-;G=E+)sDNop;k}N80ntUf<<6&y2C;
zC>5G~`_0a|iSstMCj5O+D)8~#{B<4wB3qVwx%SwdDR+JA^|a<r+uW!Zo5Uu{MOVLU
z&G$cdd!0?FqufcGr9M5f@vj83J|9jqDy)>OELfqx^{&+H|E>X&Gq%?V?8>Y8`cYI#
z&ap>r^Wx}3S6oH3^#%U#yj@n1oLbQOr)q}Y+34g+=1R8a)$+PtG4J`NT{?Uvs_Vz`
zw_OVxf3Wkev%M^Sf4OR>*t{9b40qqXSa<o7%zN|iSKpbI2I*hXo_Vrft0yM*^`-C?
zdY?D5g|B9Hzj2t~;^k#4=bw`be|CTDuhPlmaXI?<neb^ZogbkYyUzue$j<&y5EQ6a
zTlQ+cFemSAFLS4-^H(b{yF7iZqjz!d`aiQSl*k?vn;x`E_2%Tqubz6#aV`on{?uKj
z!M6RH<H8AlmLBNMzIR%)pXcyj<A*`!%j2}R%zn#R^+l`t@YT1W=UMmqr0#29zWB#&
z&lhnT+18eK*M3x<)Ff<eG3WDRtNb6+@8zX&)%n-^E*C#D+x*<ew~F4gpRe5+^;4Jg
zvF-`C3kl)6ftq~bvT~&=o8rFz^7tj7@$F?*<I5WVm#l#o+r1}SZhB-A%kN~j^7PEt
zi-bfB?Ot8q>29qrCU&A*ZbJDs_s!FPe$$V4epz};?f3qch!}(4TF=+FYF&$D(Z2iV
zM%Atr9Os%Vm#;CpscjQCJzaiLWmEM{_mq2b`!>(D^!#3Mc*Oz7owt5+U2V6}d@P?e
zJ4%%6&6H{DuFVZk=lB)dE|a|6dLI8)b+Nau5|2IE`2AIWK3j8sdzQOK2<!ZZsu$;a
zZ@$+%QPbY)wBg<-G6vp!*1HZF%4+(i-&cRSD`;&RbL}ddBUUR@5A<s1X(k-`9XdtV
zIPc1Fnd5!l%b&5E|GR4RsB8UStB|F?ytY?8;5_K|rr=q`H*KyBkFRiVK6Ja2ZSCDv
z`TJwG>Iq%ryVvvLnBab=ZOb2=P_C?QaPyF?VV3))tJ>MSPEaCrbN9}`<;uU+*zWUm
zyuQs8^+4eHf|cAq{v8M@V=So`-Ke9u?_cxc&@Do3zgO+z+7P#9@2U5eQ<9$)zBgXw
z`0Me$J8=x&y;)y(E4>pv{I9&(;oy>OT@@E>&WFAzzcu4RH2dFKEzL&02Y+2FnW9^3
zTFtwKZAY%S|2cd6%qvHp`=`ARJy9|3%Y)lpdyBq(2zdW<%98(g*8D2C_UE{)_DnZk
zqo9=YLW(XHSql&SUUpMJ@oTZb?4~bDXN6pyPrc%eI-`4Soof{9xweas)%g-Hw&fal
z-(P-ngX5eJ3=aRBl>J}boU3c}=QmUO!y}1zqpK1h&2!%;_p@L0t+Qv+y$K3?Rx8@d
zzrC<|%Jz$IU!Qq$-DJBNr>4B2&8*A~Q<p2$Iq(_XF=-K!d30g@tm2&Z+aI5lPm}E}
zyX@~N>~cA8yY0da`>K*0GHn+vi_ClSWbf?4`v>j3l{vk1PU!mH+PEip)=3=+>!#_a
zX1;%QEv!hxU;0bXy|lyEXV)J)uU06K)O#*M%zf&0*DEG6Prsboe<VXi^6bh#67!gB
zE>4y#jIK-2tvu!UHaLE{OzS1L$?U&R9=x3$UsS+&#qS==2f5awd7qBOEVj|MJnV3{
zIMX<!ptM$TtFJ%z{`QWQ?0js#<=4^=GR!_?sPp(jP@31B7oyqK<?-vb#l5_mxM5{b
zspqae8n*H;`S&mx_On{*hAsZPd6P=7hE&W+rO!*PqEc+Hp4f1|a_NEQ*Jst!k3`Nm
z{hjgG^XQW^@@Cy}(tW>5eNyn=WVSP#y_-tH>i(9=$?NN8E}D^dO+>CJ&!nTo#ny^{
z`im{I9F(1vO19=*%ZWR}^M3jNigjVnzI^(6RjcW5*xui{D|LIGavNvYTy<GyaI91C
zd(vFa$yX%iO`5!AN^_s<BB8am#gq4zOHR5P{dPg0e9MLCs9OqAtXgwl#j$FAGnf3<
z%KY7Go#Fc}W(O2Ym6LD2cr~qS^(MY^jfK`LIg_4=mbX8ZlUVmIvc7SWmfKVI+d`eb
z89VgbYV2n%etA>mR(xKMWPwrQzZV;yebChS>F#&t$+unxy};+{$|qNMEf>w*RyB*8
zSBOXQuv1-s?z$hpI2<lEf4TRhVA-5$jkD9I2t{!(o?NY-7@Yj}_|>-aUEw=6NzSbK
zD<QS-#`QfC%@!|j3$uT-IWSX=^;t++*<2BxUq)*)`lfDdohaRU?YP90f}W526L>Xm
z303`zlvJ<J{&_I>s)^IdzExkgKetkeJ9d0#^rDrQjqm=M+1=6PQM|jAE$+sat(Ng~
zZZGt6vdh1_`GDK9vim#TZdT4`KbEbf+$Fg3S*4)Q&GI$U_jPwv*mO$>{g+#?{on$v
zjFk9fN5hK(Kc*ZCQ@N$Gy=wMD%S6-3D-N>#Ru;SU=en}#?A_ki*G&{(th6QQv9ERB
z_KPMzW=9pwZ_Dk=$e8>^bDb-nr^DA>pRWBne8(qQ=>X?%9?{~|lE_Q%O6IuCTeIhl
z)h6baHJNtO!Kc43EiqloajELaBN=tOIPnc$U3Pz$oXxWLyL>SI;ez%jla{=+ey^*k
zoxV6ZM7ICIq{N*Z>=&7o!j+7EH}8<(J0NDu@VxZdqK(t<tN7h4ZhO<*dry1WhWp80
z--={+&3Bw^@-TzVYTcxVR$5YuE4FDC?AEhBv$t5F<eK8Ldv&HfYL$n-8CINlrghmj
zS|~$ne(_4d-SXN_f2OWgzvYrY&CI+>;=AD-gH&7VB}WWP4mxVw-L3h2>bn=$=NTp^
zw$`#w&3#qP@3k_2=Onfn*+O@>@>tdiAH8o?wr0w<<OTKxlRfTpDpu!Ywd|fX<^PPD
zkKM5%X&(Aof%~7Y{Cr?>zFXa%Fo(sfo7c?Qd&+qA`O^85_l7Ajs4d@R6jQhN!o9VA
zW~<k!%%5q$cQVg4)tIU5_6uChyZuysHH_vsMSBNXPr7caePqSz4`$NFM-xo$mOo&t
zDHX7+Wx2Ps`sJF)CY94iFMkvipFZQk^36u8QbljgzI$z^)W6g=&$;WhlwUJ!@2k4q
zaf_?m|K7$B@pbF=XXU@z8TV*U-P;$YmotBHE%?48!~RUbAE~#QUvBB?)bC#0>&s$3
zBjV<r6A#^Pi5`+Xbc!Krv5a!Tt$+}Zkg}Hsa&y#@?<nqGkohO+`kDjN_$Tw65_}do
zYtOUo0VSI@GjYzX`f9Uq%Zc#$-|y{y6mnRzIaK5Q+0yj8>q{>8zghY2yQ^66<I1fS
zH}+{BS)R_OccFXFhTP(plMajj+9Obs|9-<M=DHnoymuX6>ba;|b$e#y!v0fl>rTd5
z@n_cmnZ7)E{m)HV#Zxry_igG~P&|Eh*U|j!9+lM|zPlE1{@JZ^VZA2*6@Sa6%HOwM
z5Z}7#^PQ!9ugvD&y&BpmdheHXi`l{Q>CcZ#zOWKId;ZMf_j|mP>{t3fTM*W8-E+gT
zb2hOY3o<-Rs=sr7wakirVlz2==6Ma7XZnRAGv3xJExk6&!t=&_mI|l0j#e8cPwR<L
zEIXn&_0rJ*gAFQe-mNB;3JTfpn&)q6+Uubx_HV1~6&4w-z0(%2>3E@eBk#r4?{AJ<
z+>h7a_U(j0*AH#gAFFg{cGnrJ&N556_QL;il-8MB4><QMd3Hu;%l4eb7lL2hs#bQM
zoclm@=Y<bpTYYr=8*NXQT(yr#TND#qW6h_3lc)bQm(<^%?_MsfZYa=czHh54r|-7b
zmuKS5BpY6*Bg)qrf>_RL9QM^YcyGSxhtrXZ-n4!AUdG8*y|m#2`^}d<`diK(`+DU1
ze(t*u4sD*i&(db!^``K<VRHkH-0JY&to~A9b?52ACFlM>DRMY|PTiq)v%=(c@r~@0
zEZhz1Cw%%6l=SjlsF~-}f72?`@7Nu*G_tuO_}U=%Y>WF8^_O>d8928(E@;i+^!~iB
z&sWS#G(WRQeP+xx9WJi6yQ<qcYj#J7pK(7_wzf3zn(N+!#^;VRYN*CXoIS^NOXEjY
zD4TTE%1H0D7k(F)ugMG%w>EsY)Bh*qx1DOw)jAy~PhM`^UN8Bmg8Rj@UALX8&P%6@
z^hRB@*exD9_1(+e+vj~$D-jp_n&|&!V(i7+j1e3E7Dg?0TFDvCdZT)J+tf9a%QGiT
zdy>nS7o5;@ZdKQ*#CL~3JyCv8UG^nd?R$@+^VCnKHapLKxBHuNU-$U_{@W)uaf&op
z#C2w>pMM<?kim5#{(_%McHZL#rG?v#G`B9<mcKmP?hya}P)>=u#{&BUxF6;QEj#d3
zTWj&mU}IM&<r1bg-ZQqB-hTb~+Ub<d{B_PEIkF{lj_3s3UD1DK{*3NTtDWv2p6~vE
z{gQ4?==&-1_Vd^MG?F+vzxMIZ(_2K@m)m9AgnF*BV*Rt_O{R6hlywv4Y9~JY`gP$`
z-o!+fx{H#}WI4A_NZtOZYk!Z|L8d-a3Eh20iDfQwX;J6<udfjj?rmP|{`>92y=&W_
zmASqyi`sTdw0lio>*Ks?>5xe&IYzZjzYpinyj8LL_LkDV_<eUH&u_^0*1NFt^aQSN
zo89l8y%6KvC)K|2)yzF=G7;Zgg{;*c{SoGgx*H*)QRcn#T-W;b52fb$E;3Q~U9+n*
zZLQ#BH@>}wh10fii<xeV{;oXZ^k=<EM?YzI?I=;*yY971q0q;bUe(7YxqaW<{_uML
z)HfpRx~h%bdooko&Ypbqc2&%YKJE6Zgu>s})<@rbd)LijUimN2jXTBOJ3O%ML{z#?
zPD;aX*QL(qO<q+q`Wid*C7*t<<(<*)XG!m#N;<lliT~R)&E!d4r-vg)%#0B8jc!pc
zu1`1i-0Q9LFT1I5>z<Y>tLDyaA3X{lNz|^F|9W%gx!ucN+{)k1yyf}?x$|62FXB7S
zrOl4u)A_{t>{i?De6hlWeN*k&a=EUteevBV`?{fLUign%t*KMbez;>bZ*}|v*$;DV
zdZyU!w(8hC{gU;h?}F}G489ir@t+%PFWa#M&%QVR*u%|+K}Iu^H?eLo^IiCUPK~|Z
z{O^UV9rIlaMM{G0<1IIyn=<{V)6(_o%2E2+mp?cfoD@&E>h^)<hhS{-i3=&!$`4m1
zMl8K?VRCXKLub3<k;k@M<XNnYDqg-a4Lv3Qv$0BAY09F@VrL4I%eg*0309q_cY3<e
zefgcM+=`dq6RY}W`9k(y;pb)h(!=vyQ?{vY{8KvninUwMy7|fbB27GVH+{)$m~m;>
z1Tj^U>HW<fz1_thL}QcKYq&W6b|tU8%%o5lpB=MS$?}?s|9NG@us`itEM}YY{cg!l
zUioJGN~v4+a+emj?0Od?l)~4_{r;!CnpNeOpYdOXW?TO%n0NYw+Ql1=ub-cLw9sYM
zndxj+Av-TmJ9F_*RYc%9_werl=Bv%tH(fH)etB^6o5-E}%8q)S{c)g6G;~4o!|)&9
z#J2o@cUgAB15WAiThe=UE(Y$)IKT0w4Cl#(M<dEJY#vXavY@!T|4*QFl8L)s-1N<1
zKC|r$UbC8=>bvfGWZv282VqrNDsR@?I=e_mOO)KX_EK>6-77b?7Ao!Yyy<ji&Gyn+
zKGk1R++3eJzuqL|pL!vz=E<X3bAN5g%;diN^AgwIFuOl{o?m>@b|$0bvF=T4&Q7l)
z{jCd&YmUF-kzTjHI@wgHE!e*({^g?wn=G1lzfAdf(d$D4|B>`H?`6DrA1|F0P!*Cj
z?Yh4Zf6?OTh%NUIpX1-T`ib0U^YA5wU4O+5C&Z;<o3S)Pnn@!xW9jPU9TFA_p0PB?
zK4EES1e&lkHB>M(Gcs2&H%B@x-^7yi2}=tDoD-Jt8N-s)iV~FRLh$4u>U5zok|$x)
zg+>M@rikf6LlbjLI2U=o(9q1l7;<1e5$Dx^V-1MCeW{`Q(L1p@t-E*c-tAmaE+%&8
z?%lhJEal%H2-zIe-Lbp)=5LR0Kku*JwS7g@nf1HfPfOfQ_A5$K4XsKHUa)Z{%Y}Qb
z^JX@7vMXrm>z_Ttl8}^?nvj&#sH`5oxoD&5?|zxSn8RmI-sH+S|CygVP~BL0I{(ZW
z6Hm7<w7DRs@cF3NfiqkQ&mJT`dy<&Mw86lz@c(gv7e|-{jElA!v7RtyNNM<%cCO&b
zA_sPUb!~3%>HQY}D_H_&1~AXqxzqCHzc@aDZN|l$j0`uipOD@eG3#cni;3YT))h>?
zYtF>j{5#GnI)7<*H#5KT;@PvMn<vgSX1;LJsbLo1gS4kfoB@W#X2nIO#;kurjT{c1
zIQQoMQo{oinXl-qo%4Tb0PC#XJ0vY<GTO0h3sXz`c23@V-;LR`EE(+<F^4RD%FxA^
z_U*sXwBOSiWgpz1&76>y@NfO@`t|=#Pn`Pqes`~rPeU1>+c&weZ(<C^+R?@hi&|uw
zyLWTT9yoFDi@vjRboztiRm$PY+R@67`J49#n=^TEXfyZNY5gg$J*Vau#;13V=Umvf
z`l}~?OrPDKE4JNSl=arlnKyS^9R53X{*0-UXP!L1uiD_>?}FSnjd|bV{wo%1R|kLI
zf6CzRqXR4Q@}K@V>J#<mzL~tz4tpbRV{ry+VR3bBaq9zT1QVX+C7t{c&S1*VzIp%D
zGxeSJSsy+YF<3F2u|H+-d83i}?;q^XpXNNtVk;>8mGtcKSO25`g=CD44_rBQgf$^2
zEisk<`|;oHH_rTt|5NzSFYFzI?6UrE$!rFHzka{3zPF#xnDy4}sy~MRe|JbORZV$n
zvLxew?5FyvN=gpp4dS-i+zs<u=W-r6bL1H7gFh7?e#YDXzuWjf<p1`NlP6x?zxns@
z;w^hE1wMp#>|gcc#=id{kAA(sw&2(II|0o9%v+c~EM9n)A*B9S{PfPbC!aiS|M~y3
z$e+DW{>Oj*|Mcnqt^fb$y9veT<o>@F{P*;O|L*xI>8Y<j=6CnE{d@GuQ0CKte!-3Z
z_b;23_J3AJrE&0T{j&ez+HaG-7^)olCMMtOcmB+=14q8;@0_~1W$NykD<@6u?tHp`
z)=T^49|aFzJ9W>8^F_|r>qkFt?CN~^|Ak%J`6JIB7Zv`q*j&G|XO2DF#i#Ed|Ls0&
z=k~V#v%q$9###SNC+obCVNh0ASLWZ*KkbJ?S%diJ;~!?t+WG(PX9hR6>IJ8d3mtGj
zYsXN$K=@8P``Lqh2_pZzzvw?=FzEWD=*O`5h5REXgRZ~REoL(G2-SB;9?<yNZdY^a
z-$H)<PxUVjcOQ~}#AcxNZ~6|q8m+$z`RAXi?_fQ!;!}GBW6!Gk4&DPRzO~yu%KSHd
zhy95c{Iy4nf9h}i?<!w@PX2Ga`k{<p{C`dyd?Wv3V#`na56ax#_P;+b-16gf?8l1%
z^*(mn4!x59F|qfo{fA`Zoc|U-I&yzszxn@Sy-LP+c6+ud7yrrsm?-l>{)gcGhyJ<p
z>tyYg@%`w}vWv^>>HB}6Kliu$sx$H{|8<`I`0&onYbS1gl4p}Y`|uP0pA}C}+ka4A
z@Y?=^a_M&a6Q3sT`fdN=@b2UHf7qYR`E>N;%f+|<?`yTQ`fLB^`|V?A&fGo2^6t9Q
zg%<N0yX<y+UKl2EzW3jE5&0*TznaCk|AuU|>p5NiF|v8B%hfq=Qg3o~#y6i4`gP5g
zOR0~4=WFllal3h4dgXG;zqkmoi@6;8*!{kI!Dr97?>|(!Ppnm7owZV_#U|D7zT*^*
zMFCZbtiHPYR!>r{4!*|!$ERrV0gdSorf|LtdGT(o?)hnl4?VwTaWkwi(^xL>_u0B;
z-<jKU#l^P>ua%y-Y=WoK>Fa+vroRYl-ehTGwyDd?<AS)T!egl)zngTfu!hblXNm9O
z-Q||NRp6!S`ZHfGgwLLi5Q=?q<IC^uysxgbSG8)NzPmcvHfhz9I6v>hDW5Z*37>ao
z3TY4JnOL&?&!W8^m#5w_Q2H<}v2jUtdT%3-_R4=>SLHHE&)gso+5hxs<IJ<u^*3c+
zvbyYiFr?&D=b!wkyVdP{pTrujd$us)?Ub!6SL}YYCF154ce`hft<EXiELWF@D1M%$
zV-@pq+T1LrrK|58eETnI#hNu8>%v}MedW>P`}^<()m!Cp^K$ZAuiw3^ByzgXH1L~Y
z#>IKFc~{??d6d=v`I(-@y=s!B7Z=UTD~m3_XZkL>s_1ap0ipR?=l!g|T|TRN<wk}A
ze}l&N*Ma^i1w3ZX)hwP@Pn}Enp_`~0u}9Nmr_;af%V#sJIjNYS&Y?XgyVBvy<&Do@
z8%C%(FrHg@QFxOR=j8C@ZO5CEcYLt6nQ=gW*LUy6Zzitwl4jP4%R0kFuRS|zCe<Uj
zKJS*(ns2ctc~{m7tk&PZ{ORO!(bfsNwJ$D)uSgPPHk{(##3%fCk#(zi{;f}oRy=?8
z;hDdn)#;zi2@*T@ze|_Dzai?u!?^U%%7QOTqy_d$?`P&U(0BP@+GRekjp_Kp+3QU_
zJNya{l+7;Q^vk?=9be;o)j6WVE1D;FpFHmyx$f4TMWR-#o-JX?J6e;cpAc3gv@d(P
zLg_rSYlhMF>-aWlxHr8@G<%nKdfG~ZPiAkn^=KM@Tl}v0GM|<C#f1r*{PwN5&h+q0
z#fAoF|LsQtb2&AaG<^B&SX{AqzO7OG6?O?*eW?Sr$2X^bzGAV*ZbSIadv6pCIt+zZ
zWiDX+{Ke1L<KmX2jED0U^vRw(A;cNld$%BMZeRE2lglsnoB5sD^Fb!R*|15TKhapA
z@s_1iyGwMf+^ni3yXA8u-R3g8+Fi_9l`dJ#kk)ORUf<2|zD!)gIDS%A#U;f{!NU7r
zZ$1|y+4&`PNp0KxyGN~<QkE@VbF=7eRn}THt1I`Pq(1c!%)YapZHAe!`R~uOHi?R@
zoT~6Y>G{Ijl|@GtOegj(j*NY>^y{2sE!Vo%IevE8!dRmfHt%-9Z@q*k7Aa>w&bD;>
zwKCUBtX0Y7!kgoVYMJVPOstGHzTdj_jrSXwnZB#v-nH6!uvd1boEO`7zP||p|K9tX
zxfMOG+p)U;W!7b{GjaAz7YYsEd{#~pFH)Vhx993EHLJ4=owoabUcE=@Nm{?=q3Y^~
z$F>yhC_m<9KL6eMS!OIO%onDYOJDs|-^Xx1<c`tvZ50m=acn+w>)b<$^$E(i_&GlO
z-muYTo`3Yjnx@Z(W4=w>%GG?!)8g-Xnb;=tv-4}JE`Cd!v@+Xyr$R{Rvn@e3b_+kI
zTAOc*Sg!G^Jdbtj;tAiCj;wsXr9G#L^UQIBXW`dsM7J{M{YjgpwEl}`LB!9LUGGyn
zkE#iDigB)euNGFNn6j)Uxyyv3E+r*(mF?pFnpZBXa6E2EIC`o(US8qTUf&r9-u#?d
z@Z*^nV@=x<uWL^V&NJ}6b9<2b#g*6MaJ)}*|2-?Ke@_D6{O`WPDBGpuT+4NT#g+Z{
z?Av2!J~h_nFZ1KR$1#7~lOFNUhj(|jnfU2iuupBAY;)4N#k*tW{`w11t%nLVy61IH
zy?9Ob_E+owmIs#vyS1-A?$x{0&UgNlH|wqP@6MioOEB++?~YH$UDuSD_%=^m_r{J#
zRQ1l%`B|SmEPAY@11Fx@!f#yr=%D4kO+QYs8P1i=xRT^s>f*fK$6#9FmtTGE2C+9g
zRNDCW-kis|Lv>xY?8jX1%;Q)19Cz$qRJ!o@kM~{|CZ|qJkxUi{Hm$tXp}AUO_Xjf`
zW!Wh4?R?K}9C)ww;LgU-vyK~W)9&P$tl1aMeK|!k>P(wv_?4@NgQmXw+{b=JOL>(r
zYqynzybsq$JD!fFg4wb`9xno14~p(<u{mZxjmt0bxJ9GOyk+Ivr0;~ZJ1jmoOZ!m9
zy8jHfHP37R|8!zY*?fWI!!sg$0}t1A8(2mEyRqeiu-SsXI%mJ=$HlE5IcJBhJI8W)
zI%l>H<HyR`RsXA!*1q3c^zrUle%8aBuQIomM_M!dG`Ov9s`*Fo_f7NuHIBw#7cTrR
z{#+oj<LVoa1P<+sQ?|<qE^yONF6TeLSvSFV;VdOq^T;B{xsfY0r!-EK?kTTullqbo
zb;x+;nk~2E|Ee$6k=XHel4bku$7yzqYuID<&i0R8FhwMpnfK@AuEH+gptId&bJ;Ka
zb>Ce2HF8#U;NGlos~zjyg}44yKlm-Cx7lH4n#>`0ji^O}HqwhH)X3_bzsmXfi&g!W
zEvm(tvrJ`+W$FwnO?0kVW_>z$di_-m&py$sXS+fs*zWo=zjJXRM{$2D+k+)5KF*!;
z{?TlXDL3DD{kgKC_i2p;>#`fU7yLH7|2g$8m*{<qjW^;Cd48-2n)ZV0D({9TQ&@y&
zwH>$9><D|m^3;9Zh`IU-dfZDC7V`PtZ~yQ1qxPiN<`mymmJ^iAj+6?xmYF`Uo$7r@
zNpPp3nc&S|ZPhz;rXR_Ez@ENpj+V0TwL9~y7T7v{6_!5jcl0B}-+dl#?A8~r*9fxC
znXUI#+Wqi1b>?Tw7g@%eGt?aa7+w=<<>C0u;-G@WkJqjbf4-NN+ZNJjU9=$gvYzZu
zmj};ZeauK#XWy{b;{KbKw9F0j9$z)s@i_d*?E_vWqPj1p2aEq+G%<TApX|2{6ML2{
z;P6Z+vF(ok9Vn6hoTK^ZT2qC+MKhGw%~Wr?@+!#WNnH9(Ta(niwtv&tmtWG`GktdK
zg6_4hKK#xmKUUk;Z`Av~O83-{vUe}9l$-C>-5|AZ*R%bWH>_D#Dxb*C2urzZ_-1kT
z<=rwVOXRPGUEN&qOeaQ-WqL!)!H+A8b{Lr7<Xb0MCXxQmwdu*$W)Jz~vjP$U&uh-@
zm}hR_Ea)Co>ZlWFo@hT)<gQQ`7fW5byJXpP;n{Bl{rYphRsUTV;Pt_ol}$msbXKn2
zlYPgP+@?xdB+ifDzh}nYq^(lHhPIzgZ%GzD2v7I9@J+b+vXzgn#lx*T&V^TfICXv6
z<me^M3qCQNUw7qxq2JXBC){UmPEl17{ZN$9Gx6hZo3%<2+Z&F4RpqMp+;iuq<}-a6
zpQ>|hj0K(Mn)hbD^$aPE$f=Z04QUrw`nvwh3bVPgxjUU#nyE&cpO@X#a<wcl+vzpi
z(L+<Jz4y+){k-a8!iy6jXA<5%J6dvJby8KbOwDoqRr*Q~7H$cf+!DX@O^a>)-FNBE
zGs?6-OnQ^{Bgy%!%CvIpoRWJ>6SqC;@S3LdQ(g1ViPgQbcRoC0J>fLJaKRU@{5$9Q
zrKR4LMSnIp)LhH-^Nzst|NoZ7dHH=l(zyKh=UtI0`P!M5jrnh0Y!5P-$-JX<YW@2Q
z3vV}gbF2;hxhu4EqtDTrywj&`7I^P{^7}{Y=f<+?zS0hV#W{KVyQjPm{POdLaw41Z
zoEz8j9ga(^nLhRA13o9V3e|W=-nj1<zpO5|Zw{a3nLFbxb8t?eMX2PpP4hK;tlr*K
zsnh<q{`}f}z7&QoZ;{1DPuz??cDZn_l&}_f)$9NI=$Z*r^`y1-uicb$a>j|fxgGJY
z#ua~d@_*-D_QJX*r{-x|%Qt`R--5?gf3knwANkK_(YBQ*vo<$9HJayLAy9Pf|Ca}P
zKhI4N;A*bvSz94L>!;<bGrQ8<nVfUCer8vaoq4fRVBIONx05$l79|IM^pCZ!7nV*-
zkbOH(-si@Vdu%QB^M3@+_*f}2H)HGLuMDm)R*U`GSQ2>cLXA~R@bq_H#q|$f{QkDN
zOY*`6)56tvPkx!){NUu5no{3wKbu~NsD<3Ue$>qOgmwFcpV`tY4lP(I_^?JvWL13C
zr`;CbD^6_CkSJgM@fTyLF?W|{>9*|4_BKC0=AZg%d-LdG<^r3O_n40R`dy!SEH^}1
z_R+2u{R29u=gfKNyz3CJVyfEYdpV1&ZmX#r)qSqX$70y*#Nhg3_SK3uO-pO1JAp@D
zI>ajOR8ih)Vk;{CLpbI9JSnf3S^KI>?*&wSl)Q6a(enVG>EpLs<-XmWHErH>y=hPK
z8uQgRz3W@UtU7x!n_enQXk`0G`#tF<(@z|p*`@a5`w`)mtXq>M&qaPQpDX26@o5Fe
z5*DqqeAA|?U6XoNnf<PwPhXVf_l?Xn`AhL;C-XV|E3Krhq<<fI?)JY*wjfXRkby_h
zyA&4h(|0FwyytWa^AUOfe_C3#*w(z2+L;+VRp~A#Lg(Cca@$&Gx@i5muDHiDZd%k=
z?<>~j^8EDn?pF0xU$6b*6;*LFuzjCd8Z#qdU26Z_g?DBykIt9q5ARxPwPbbNg>B0>
z-eY0T{m$#M^2xup8$8Q0o_5@8wfv^8toOK}$uK^{>(Z;$XN@1{ujgHHcxFn%wGg|i
zf;&$Hew_2<oUUS-)p9uG`HPPM-G5Zi$DEq{H`{(@=c@mPa@K{eNqN@6UQfPl3g9Tr
z+WdZ<#2Xn+as8(FgQ1UqZ#8CdocAwKcYo^(*F>k}1G64HKKOBxx=DUdV_eYk$?IoY
zI%us_Yr6Q9weG>M2Inu@%a^$3ME`oMA;<q|F^9eRP2Dd~KNy-tiurQ8A9{PaW2x{b
z-9iDKiIJ-B4_Zw6zvfwaTT$@+>XYVbAHS^CjF|AKRPou}XOkq#SKspJ<#KOn>AW^8
z|755}H{Wluqg)H}<f^2*cimilPN%OdJ-=xukG*%w?D_91_U7eZy>){r(5d?Kug9lE
zxXwQhG+VeUx6hp2*Zl79CAvp{wl|+T<o!kH>l}ux&b@XWZ__U|o?jlRlWlQzNr!5p
zfMmY={nCW&%MZkaeE03C+Ol#r%Z;3-<MlNYO?q7))XwI4!O8pW-IbtO=dZu`<yZP*
zr(JQ%^QX5&trt9SnrvP;GqZ_FX<DFp<7|%n1Fw^e_xsJCT71OKAujA1k7nS%ig}IA
zA2yUl^>cISt(oB-D*MVNE6&|->#sKks@s%Y4>>W;^m{MBsbBprS~_u0@nNqs|6Tt?
z{WP%TZF?2b)4%=TuCjtPPct7+|MK2lES;z6(6iq3hi=^gCzp7#UVZ2>S#jFW>EBe<
zP1-JOl|9FLF`_nb;-9rEnxlCBnJ)h!dH9NUPfql4EiJLVTj%kx8t;+0*_^VBtx5Rc
zrbzZ@SAKg}{GIVdTZP9b#91}|YPnL~&8_8*ACKEc?pdSL#dhm;hmv}%kywP$+@%?A
z-(A_S<xO~;oBOrN>$t)RH7SF`HR=bhS10~hrBb?X;luX_Dx}!cS^l`Ye4Jz*J=-W*
zu{!nEYtFc-Eg8S>9N`e_e|bS_&4c)}b}h2(o7(MDO|LY0>@R$n=lXn^MaSoo-Mvqr
zoJ;7Oz2KnwQ{E8158n6X+@_r5k&f$8%MM(<WBz(|xns@zyAE$UZ=e%BZStWl-JTC+
zp8ideVl>YD^fvqOBu&Q~oVm9A8V?Iw4oFFD{4yanyJqr(r<d!_{}%l8$ofI;*R`q4
zWpbi_-Fh#se7<$cif1tu7k;cL-m&6i<@Ifo?p*uarg{0q^-6nBAJ33R->~hKZ?pUZ
z=6ne{TKCPa^-0F*wi4a<YJnc6|4&A<&HMG&%}bn#pX+eDUgfpW*npn?TlF?yW7b=|
z-ugpl>0_mhMb&=;J{>p6iWgGx@Lnc$vvJFxyVKl7Jk-R+q!-&Xmgjo&XUgqYWPc~1
zB9YR>t@KM|`dNvEp${2F=6_7~DvOiWxZ@{RW}&O7Z=WRA@}z72e06cI<*Oz$yJpx%
zww!(YZpj5cpWw`@DHHe9SJb~!=ee}8%J}{BFVc@^<sRaxU=iPGux_T+vMn16-oM<r
zIM3DT74LER{edb$F$uw<pAU5Xxcl1s)_!L<UFCl|rZ;|{`#-Pclh^Dp<JBkrT8G?7
zXWH!`UU%AAerDhOy9&GB&$dc&k9qIL*skO=W9x}eeA5#;5<dLPH$2fNF@dFK?hR@F
zjZfljFO<z%%C@BQSfJbcmG|<lthm%R`$Q;nn48-@H|KM)UwDixv-nijC?9eXsg`q!
zT^@0}xUnZ7KrvzON{3^+Ev8GxRFwai@;dq!r;gOQXT>Wso7q$MN#~@6r@Q{&reJ!Z
zO>{QvH<Mu9=gUJ@-q@uOEbYsF?tY(~*5;bSEz$2j{4xJ>bKOG${YjT4?6%&@O`oSG
z`Ptm`@|P=N3De7@x}`&=7R_8~JxeSw-tqpNWj`cePpH<Ip?am}$X7k<NN%%JAtyg-
zK8dzX>e}MkJvp&gzC6l1IU}+4u0d+|gLk_beuQ$~+~E31W;e^WS$>H%0Xg~npOV>j
zRAoJs+&AUrI#ZVOO{e4vuFY1oFY4Yt>F=)xm-oKR_I(nd(3CHARUzQ>Ih$JdfWU*B
z?tgqTufW;zx%VoSO#APB&pTbN=em58`MCYig#aIx6@_(=KYiuyR`;EMSLW45-<Qvo
z4&|t=`hV|gmgeU>LAR#&$9ts8e$M+do2~o)ZB?oMb17z>oNuis=bo<2eZ0hYzT0kT
zkEaHob3WBF3i1ZdVez{VDpmXQfY)K=RrA#+*k&wA`5N7vscO-+BmUB7iK7f|5Bygw
z-1Lauey16m<FaF>zgp*}hB^nbOmOgXH{N<CX^oNHW1$Lm_UXT-eZ3haZtClLIN;As
zZZkI5a-;7q-)pa&zQMjWY|fukh1`0Po;=OQ%h(<@xIXAjUzv8{=#d?w=MAQ$slOF<
znU&+5e*W|#sg~RS!qbl%Y(15C+JSHR)5Y35Rk-AQ-<~*lu7~A7pQ~%(<T)!HN?asn
z=#+>px?ude>D|m#O#I=Ff?`Wqk0ici>)G|d>g&5bU4}o;d^R%Jb=3Z^gTf@{!t{b0
z)2(E~3<clazMiOS{>{^E(nsC=**!&C#xh23Z%Sw8-<|Yf?QGAM!`o|j{_y#<-66=k
zU2?1Qr-Q5SFZiPMGlWUiB-nq$=BMh)I&U6Mo6G+E?Y&DpZ{mOPOr6^GPMmoqum1jJ
zn%ey4@<DqY?r&Dzn7rKN#dOxS?CeP=@~<!)=1jPun#see9;))>w4gcrpZj8JI%P@y
zGF4}%n;&>{@V>*Yo9#0u`f7LI7V=AF@4r~`<bh3;Y@)Pl)$EgOEgFS~j$80`n)aJN
zT=r=G5yRQ-OKzXDlzTC6>D6B+4kg`NX0xfTb*^fo*HWv9t#9{c&xm;TD)DyEnj8@i
zo;4r0d|j*|CO>InpUWYE?vGQNT^2UAObBjvOqNJ|pK@}y`rbaC$r2})+HyYnK6}wc
zn~yEJMsqj6DBKl1cgtqW1L4|*rI#KUJM7pb{KTqX`t#jmW-m@^wj0g8Y-4hI-ZGtw
z+c-F97+%n4)_(Sg@19HHs=^71LELSBa*qd`YfmewEey#pJQ>5@urf(i^0e4OX@h(@
z#(wvo>~1f#?|rNEyux&5CF|Cf`0fR~a(i`S7azIt+S6cajEClWr~2~kt_BTWVqNnO
zt~lkB-M8E)<bjp~mvha%d4*h+ckU_5vCi9;G*@Ku6V}YVUT63&*vAAucb@PvTRHb?
zW%N<TkbQid&KvfBUaS=*<J)yhy0G$6$R?lJdkaO@JH0;3E|g{+Gdp03OS9MM8=uP!
z#ZFZvo!jFtdDz!vlU@)T*WQZEo|OR+3=^Z4^lDwI438^MXRGUbmw(&4Tsp@wJ?+au
zWuGeL2|H)AiwJ$?E;T({CVs`{uaWAGi8gV2o|d$458MBEm1BV5+}DCSVtyZ+uReO$
zUm5vYt@Y(Aj-Y=pHZ|^4egEv<(Wtu_zB_iPvfLHh+n6+CM|%CXN;jRUJer#dW(SLx
zgfr^xja$?uooe-L?mNwuGftKNm&|i^NV0Kx`rhkkiDHSs3>_P;y<6^k&)evg+Vwi*
zO<WiA&Lf?_HxvpTd9eAMU}Ia~w)^t)_@$b6n7y4pH*0;>j%3H3m6x7hyJZowlp(&N
z&g7ulS~I(ZDJMgWq)v;8OxfC|o3DA;rseI_FJB}=FLL%d?+pI+_51TJ8gFy#mdiK9
zJ^lSUEm6Vk_Md(4xB1?2Nqms^qmko3XTm1EtJlw&mzE#=)3h_<EYrI^KeKEvTxS)0
z&FAU4BL7UA!alYWu@;=%w<c?QvmcHR@A{N;<cDuVwhI5Uo@GKh&5PF=X}%W~KYDBb
zyOSy=FQ)Pw;Mp?$K&bk*YmvfR6^<^t*DQLF{j$xIst+GmSg<&IS+-;fPG0Yvbv>u#
z94qe%pYF8d0Vmy>gex_y=Fi*rLvN3AnUtdX#y8#WcMH80kNnthb3%Y{#J&(8_2wO|
zE<r!;@W1U)=~^Y5B71&DBmaYYg1#9WLtd_&WmPku$8*JtYichKJhitszMOJWI_t)-
zsn(NKOuMq?mFn6|p0A{KiYxt(15fHi;r%;Yon{Jp?)&&Tm#MJP);&FRs=d}Db7uBS
zo9!-b37M3<B(i9^g4pWaCC$kTdoL^wi(+5QubNt{x^UOWrCySs!jr;JZ+`GEWy@lV
ze;&#cPN`nLb)od)(;2HLF!x=a&U*65SHqqkE=EF)@~?L-7UsI^H}U?Gx^qA881C7a
z&Ke%KVNQO(hkD`s>vm%D+iRE2`&}Ycety>aj1PyH_kWq`n)h{^6rb?3VpAF4C%XU7
zGI1+=dzNpKTH6{aQ?sY+72EENx0}~C%`$qz!H}~j`DXQDr^#N44q<()?I+cBDi}9^
z4^LmPw=CULv;K%#wP0}MoU$XH>TRVb6<&M{`F8gCK}UsI`fH}ic`i-Qdc^SfpW(6W
z*uIUXGTZO3a0`7eeUn+_g~r~;6P5F)Y<<<dz^`lWiXZo`EUaWrd$KV9R0G5Of~Z$(
z!ai2*Us7r5^HSw&e}gc~hnX|H@-KS5Gctcyo5Z1!60=CKwPxnrhT3obU)WfFJrn)M
z^GAzqj+=%==*Qc!(gMmi=0~pmw(z!xq2kQ-yLczgcx#!N{N&CB=ZiVcC9fRv<QHGh
zC{@0bRIB*KWUjO9`i|^yA@jvQy*1quA|q#L&w1svf&2FwBaQpwd3OW!^>e!Js3^Zb
ze|Oy-*4^cwla+p^H`F#RTN$-D=tAj|Z=391W~rw3>l)3u+CO)%{zB>G@-r$IWo)I+
z-aR!jH@WOkyjI!k`1^Br8j5tRHrV$}?(9P+k3)AhZ8^)IAN|OC#l9mho;8k}?95W-
zEz(+~q*6;H-^NO{me<aF#wc;<Wka(7^OpUYlVvu2t4!gZ7WB%~#V*m?MPj$$g>RJy
zj_=BN_jRkSYMqvVJX36e!NDIT9zV`899|IXu(hK^`CWG0)4Z3eEUZ<pDq6~}XKoaq
z;W^>B_Q85Jv$%WzPDDx@Jac*frS0pkkX?rFw_CJ%U6_5O_x_UoH&^`9a*_%^`haKt
z1dA1Z+94}7<iABr_dmSyFQRA50hTRg$NzfUNHohnZ57tpYksFvup#|{xviL+M*iBh
zt@<y1pSdeLaqrFBEz^FTY(6$`*$ao*EF*5I3x{Jk79QPvihI3;*Yu5dR1KVsR+y*<
z-}*22y(%GW`-I<LUY_8ZyV$sRVu3>Eu7}pXC;awJy?g%Z2L=}RI18g4mMhq29s8qy
z;->%ggvC<1qP_E#uE*uOO#NYY;(74=NkZ0pudb~>eeT$oyV*Vmy94L_l8H8ETkY`Q
zDNw#g=lQB9xBoUh;QQY8No?Z{jr4=Q--UMNTvGeS^J?8=yOx=U>;9MWpFHt7bm|L_
z()khn%JVV~7Yoeb`&#ksvsv1Orr3*hk3;vU*08N>oc3(aCb@fG-!}N{63A*O5U&ou
zuXj~EU$;x})gOlC^W?rRn)Szs&rxT~ir+1w&yUwNr|<LLv;42o?Lv0>2Yd2fl_)hj
zhs=3${mc{ddoM43+n&_q7#+avEz5pJ@wm=9r5(Mie9C>bEADUV=fC>6m!bOk_nyOV
zbGlZ)VwtJ&#EY*c!~d_<p=6_5+&>aez1)-f!{VWT>E%jgmDm$mE~-!G-&twrnBY8H
zO7MPj+CBdSn?ql+WG<}RbW73T($xh!IxgS;A7Cx-Y!GAhu`H|nrm)W`$rA>T_jBZ3
zdvWHW&ZY^~Vvk%qW4>Rz_Vvf#VwYtyr$pxH-c>uhZM*7=<rcNOgv38TPRVo+3~12l
zvpJt4EnYwSSR~8)t{+cRLuO{N`TV@tnyCG}Fz2~;p~LU59}|y>Z_K^$lJRe**};c<
z6TRMgpRsYb_HQv<9rVSzuQH`WGqUkja+mbc>RqR`<|UjAP2VA4eJ6wI*o`(fEpE9Z
zr`ng_x?FL6x8$m+m!zl8sFV*s_Ib~_50AVRMNdt2ohB*dXOZ^r*t8JG*D8Oj=bX5&
z%=|LTM5=3xY+%~AT|C?mW!}3OUZ1;b?GrE4>#2QLc0FSaVvwHYlH0U~(RnGeaORrm
z`a_8qUIeg5S8=JWJaE`&=C$hTrt@FF1Y}1&*dohT5bwR!WUBePE#~iI+A@BfPl(U5
zY&ycbOMc4wKbcbRCd!HVNKdnnG;TX{puD-?=k~$nJ=0#W>R3N~l|1Q;_<SSIV3SyB
z+l%MjD#V!`xH)>mHuFi$b-P*9n0`ayk$#6$EA!-8ze{*e>%X0ArXVHatdw}@#M~dJ
zvb3{uqg$@OP3%=KmwHk;<Iny>sTEl}XGc`a6uHEQI4wVU`nh@1!`(N(pR06_ct3A#
zpXsveZ@AxnEPZt0Wm{T};<r@=O`8Szbi5TN{4Vlh?^~?@Qupz`!{;mJa(<Rr{zE|U
z+OOjr;?L$D{qS1Bqb$^QZcNt8+F;WR<wph#?OWFF&twh_ZDZf{t?qZ7hWNkB0gZm*
z8mmgK8F1Ep+svcb|M^LhuzXzPvD2)V^3#4Fd~WhS?|Hdp-ZSspF6SE`R6Z(VpJr;(
zoLG@PXWH??$KmIEJw3z1FV19(+0Y_Cozs#(Auyrp{d~Eq-KGnjeYSq-PubkM^lbQ*
z2&3XzdwI?`T<LzCWOiHFDgMSqrEf=;u<%>{S$)bvMj}shS4~uM(zP8g+Ai3ie|c<+
z#?&JJo1P)pb{tEW*>WK(o$p3vWl~GU<Hr>S%KppO@r&=yGwxMicWK7H)Q2fEo*BPC
z#-o|;9=Wb?#-CTm_O)<No%!m@Wror#*1x&7+sQL{buO}XRA(tZezp9_#e9cXb%iTV
zSw&W^J#zTqA6uVgJ1;I;uchZ%QJ-}6j?^BvTodDeHjE6#F3a@-j@kRlC_HUA)FJ<9
zQ=Yt>?H8+}FoUz|lHWMa9{u`fwWH_xpu;=neKII8+dubD(m|$EwYT_XrhBcgIq_*l
zf5hI?N7h_0j|g7srTAO6Z@*hu;+`j>j7^()UbWw4c+_$6k?6y{_k(0oaziCd{>^=&
z&2{p-iyBLa_@U)h2Dc?1KA)-c-0VYc=e0eLKdx0$={pi0e7EuZzn!Y-OhI?QF-pA3
zcyD#@)7!oAd6Ml%Jy#!5J$^ee(6;OV-@+ZI>TbpQ#(z$|x0s=1UE0F~8_&wOM&v$B
z6*Q78sr#~|W1bx6k>Gc&HJ%4Nr^TE)ZzB3w?`-V(lb&A-UJ7lL_+!+QzB{IO^R-h~
zRy=o&SYWfsaSeY*FoWaUtv2;HPKBtrS{EKzZn<$qpKPJl6&J>+1Sj*)?`Q5_@p#|f
z&4;GHn&zutAv)1LzxQ8HL1z73-idp9!e-omx?8T}F}D=c%^RyX@T?D%<Nq2f^hN6q
z``mN78$u=T#^1~gUuMg|znAB|^wIDz$vb!E7eodhJlEbGY-;cM)YVhCL0agD^UCVm
z8}rNBIdTK{)Ew-&H!)03tEp%HA=4iriPtXveAMe_uWc<6cq?^6fnR>5u-A@)|0_>A
zWxiC+ax<B8B>nnJrwW0&M^yIysl9u$U!~6expkU)S!_1f9Oe@K#S_l-vQFjM(btk!
zH2Zk*{Xddb4h1<cl24~?pHeK!rSp>YVxjYw^xH8xyI&sO!?k-|nb}{H<3^1vsiCp=
zEO+OHyG?ViGLYFU{qW%hz7Id`Zi=5_=eb?=Y<ii(3UfJm|Gj^A)oGUP{8qkX?cwh{
zA}OL5<x})F^R0`IUY5G!$|JGMdS@mvE$|n!c<c~;{CbT!i`a>)Zh_a^^=r+pW=>-@
zu#)bx|D4o%&hgIG4W@Uk`;E*Wngu>K6#kx~A2{>S5jpP#e7PA9<gAXro#1_*`(yjv
zE)%D&r3YV6cxLpg^I>A)`#sZEhBMxsU7#dgrKFa1vMpr6>>!Qx*Vgw3T5r>Tf4E>>
z#nM~9w|jJ%Jb78?#`TXafBH0+*U?NjxAUEk_p7||U-glAtmBI594uROw_K8x59ZN3
zyf>mVIO)uhe_y6K{(q=7N#zf>zq}Mz?u91Dm)fx#H-~>&E?JUXuIbpa$b7TV-9wsX
z?tA*SK2n>s$7<$=^ryERPsPuaIUF_h>DHfXg1t{#_4o-3<Yro%W@#;6RIs-~R^s>5
z%sQvD8xMK>jkLM!?LMV+789rCao>`ui>Jn1oS}VP?Zo7No;Hi8P8YOSxw>ZF&dM9o
zKUPRzmC(qHy?o9??n;TLWM?N!K)$E(L+{Re?~cA%CoO#abg7NPuXW3G)Yi0C98WKo
zT^=ko@yR#OqdD18l8=_&x{;<YpmQ?OVp5Ra-9NK+UH5DjR0v4YJgJnqr-5yE`6{E(
z*|)Vtn0E?G{IS`)f-z+Ffd%Ia_dVgab;*3*5i;##n>h2%70Sgv;-TN}-02m4zUtc&
zrYqe-hh0;-1-bss4?D5*LdYiL7rTD>XIxX`&QN5Y`&_$R_3ib&%z@U<Ur#2*cbpDx
z75mwHg1dZYP1&4BliQ<}o?hY6)|$*x#?x<TY@cm$`?u2yiz?f~I=9G)Ctgkd5OK0_
zPvuEJM+Ut{mD7RpjGjz0bW;0_df5UtB=)YkRp+<zMt+&2l5mjm!nO=sRzH#Exyq51
zyI$+%y1c$ID^@1>T;24^KLq(US-drwzF1^?ro_98pO|WG>Mh^oRNQ;tn=E7S^O#|9
zz_k4iZ7i=&t*_2u%K3D1by<qLo7Os=|7^`Ve_2j<CwZ+2^;Ix`u)sKRXG?nEd==Bj
zMYmeE8kLK37KKR4+qKM>S+c-C<m7F=Ti<_MezY(P(dsh{DtlgLd2h<@k4LwLMr&(|
zPU$N4d9h{gg<Z_0wl?bP8)E*8?R(_f9<nj-%BBw)TV%}tM{Z*O_<-Ty7o#s;7TL=!
zTw8*TAA|_(kbc6OKC5MdSUA@nIhTv;{y2HgT-C4D*LbAu*!9i%IbV7=aU1vqM$C+z
zelCY8RpG_^H;-@rkA8dV+_mXf|KFImalP&5<NMz8+-2J7r?DpY&W_JAYCR9{9&j^0
zTRJ)TS@TRij?Z@G`|nh9JD=Plp<MlYwo^bt*xYKB+tY7JoQUw)Sh?HDxL1AK`^rrz
z8y&s0JuG&dy);iP{`cIvv$_=yZEp54t#TjM$Xl(6yQAlG)l_rh0?p%}{OvZGCw|sq
zwsW)#&%AY`*`TKQr{>%0r~iur<hb{*@BZc4wD#46IoXAu%nMZo)&%`rcj(+S$#<o<
z*GmP3*gANmT(=9pVY6!!|No4Ss+YETn77qFf5hc|J1f;`^|s{?lG1N@Xvwil-|JkS
zv|6|*=GT^221+Y8Pia{?e@Bpn%9HRw&wEx5$DS)i{wd0w=Bi}Jq2ByGo$vm1%a&Bx
zP0dw%7f+QB&7N<)bdrJP!`<%>nbp6Y)~6$Sm;2`Q#NsK^`ycO2>QX!8oHNyWxn}3D
z4tLMpX6;SM_0~%3Soa-ykn5=|p&VDK*U3KhZvTTjA-k748ZMk38mM|UiNj>&g->i=
z4??e<=iaqH`L6xRmy<t-OkefnuFI<J@p`)#w=O<CXU8O8mY6pmx4EQMJO8S=>|jwD
z^l+Qdl=xd>Rc^aI#IyJ~i@(YXOxz$A_u*wj;6(dt>^@&?zW>!&@q3k*Ruso9hnw?Q
zpNM=Ge;!|vp+13K_fCmPMz)Up_o=&|-`f3=<AzbT;_HQTYJ0itjTi0<Sa-s)d~)eA
z?iIT?ACWAxN@W#euv_WkyQH@>rTetj*$c-FV)EyQd)4bLc=In(Iq;e4q-Lc)hN<r-
z+LV3F6q@-;Zxz3?jnA!j9jrG_$=q|E<o?yjVd<4WPhKqCtYnh)^W>kulXt!hUurHt
z&Am20kd-IRiGBa?xN7}t3Rg~OF%<=P%Ii71RqZ^dW_<corlawrbyJ$tr%$}S=gjg`
z0T-9B2y}|fH}x;f@;v=qtKvkq?<q&6jeasR%qy!_{8?)A?t5&`BCdN2%vB46HpQMc
zOmdxnb>E+N&y)g-Lu}{reV;g0K9@1N*s0FbvUaX_iNwQY`O39?VIfN;kM3-qZNW0V
zU18<tXikxHUI8aPOqwbe^DuunziGyesiI=6HBW*saD7!1mvnd6$e2I-t#xO6tgr9+
zuAb!Rk|~>5`GY?xD0YX`oeqCDB|p`*X6H7Q=WPm|eFa~wm)8jdO}%wPiic<6L#b~H
zm(FchmP^j@O}aFB^>5LG>v*2~Cz<nJxRJE*p#`gT;VxBy1m)e~5$8iRI~MkwEc=@9
z<g0<`mD|i0`*jMhr;8qPYBv3IH}a2MB%jyRKYO>wo^E#8GGDUxKt6-gPF9zq6WXa9
z4*M_udHu3TZ1U3b)XtAq25UFp`1bnOTI=HVX<WjlaxJTLCVzH&o8@JH+RIYu&#f7I
z^g0U-X01Bv<Go?#;<uT0JECmY&ONjt{BM_3i}~djrRg<3dJkVrcy%STa`V32OW*T%
znZ9(JE&5^C`z{yLdDWs}9>V3d4t)<!Tj<?;Q)~NW_RT5Rwmf8)-eVDd`uC;qDf44@
zsr*%bbF*J-lF#jJiKjSz@8RGsekr-e_R)mNi&MN-O)!79dy@f+(eKQ*b1x<Cst0%N
zk1+9G^ua7yZ5cD`{_~%9B*d-wy*F{i@%}}MAqy4tUjOb~a(w@L*H7)2rpKDsUf-y^
z&H2u~pR1;wY`&PF$+6ziG->{hZPhQGl9&CLE-~#=p2NcyR~nMjF;V8Pn}u2Z{L3z>
zW}&OkvwmHB>thK+%Bzp9CEGtQvD#}Qztl_jXOz4YU+j+kKT5&`&s=&V_hFOgvwhj=
zY!10@0as!_&kvr{8h3uvL9OToi|^KbJbc8ceTrb_6z1G5-*>8WEZ;6F`B3@wlZMw4
zo66mfmcI^KJJD5UWkp@UmZK*!T;@!W2xzsJb+2YREuXoS@p(nxO3k+oGv((n+<rMZ
zxK-9Df8vHkoUiZ4P1#hcqjK|Ptmw&O`ve|#&Rn2eVESxlP5b|2n>-D5G+JLzn=b76
z@`&!9@KrAVb+$^1^~zp7S-_PYweZ!#2UUB{yZe2caOLOWmOJ)dp`WwXZx`Jay83_h
zTBV$zwRh_JKC73>U08HJLE?{J?H)Znx5j<zXUoWN>qI^NrFKO{;OR-uEz9p{pXoRv
zn<h0cYsaI@5$3<F|1>?fc;}jWFL}q24b^^feVkK;z5D0RI$nFGzclGf{BFUP_c_}>
zC~s1kdcrjGWQxeEm*-tMWxpKP^(eIXvAJgDo6MyO*%#aIMk^+r`6zO`pg!T^o5H!4
z^D_75Nthb1nCs@g{d)JrsBhty)ek>f!usaTYE8TBe8%Pt2J?%4GFN?lBkIQG;hY{`
z`ePPTK*YYYlliZf=d7Ee)$m}G$S*aUjghA#wq5*qRp)%8ZOy%;fC!hG4U01VM%7)}
zky|i(%4y$e*G&>u|G#NnGb>$vedWjL*V%s7y`3;wYRRU~xhk(dIG$lGC@s0%uTpex
z;o5`CRkR*`GrRkkbpzMs-%;w#uY=zkUFbgkzP{DChxaDS;_qrTYS+$r6y6Y;CSTw&
z@o3?uTlE{h+?jjJ(aX$ej^GVp$vnmiX$ILTsm0n12_7F}HgCMszwpB40~hz6Ia*g-
zFxmO}G5eFzaWiM{6^(QL+^CSB{d-B?^PD2~@2mA!f1aMOTyFCu1A$L}o8mMC_q}y}
z_}fb(DpKVE8^d{t)#t7*FrHZZ><(iP=YnHxGs@h%);FC|?p>p|v*c9NmTb<C%jOsu
z-9M=Ht0nu^ktJ{Hd(|^I+=N)(R0X|$uHZHMkD;Zx_?OlhmI~#pSEUVY!@7U(U27|m
z-EPdvGuME1@7>k2cKq6DdEhr+Mf=n*C7f{&d)p?hc6|LS_*kgRmX=aW{?!2trJGc3
zMFN+yPx&|TcgjnPfU_UiH?fI42)cXhWXF;iKhrt9Z7JQxX(!hzx-VFfXkz{SMAc4t
zxn*rPuQ|_kb=4@@diF?Ds1=9b>PMy@Zd(=Yn2~ywi#hzC=YuKM>57lSPu8(+7ThJ!
zF~R-mozMH;eZ9k@QTl!A8EbcS^@aLB9`xx)zFovO*;8Zdrz^%2s<S+IS<GF_n=2J<
zBXvS|UyopM>Z)m4f!?=$yJyD;sm>O>b=v6W(pfsW`@2>pl!t7afAvb`K^KmwD{Y->
z?mN#;udw*Tu|&?&`1Dk-mlwl+=$LDWIu)-!Y7xDCUbQLzuIxXNc{0bRSr*nF6jkJ!
zxkmF~Nnn+<|Hg}PJSvJaT(jTpQ*=x%?UecEP_?zCrA+1QQ=4@cZ-hI%So^EZp7pOm
z$>nKYlZ`4w{{LBNAam>aFEfMp8*&s^iNDpDV)BcrsA*rXk8G-<rK04+r1LA;CP_En
zW0cN%(IoRZ;bEe}-HZ>$X@WmyJx}MUZ9MmCnkL`vXNOvwudI$s689;yZI%E0^1g@T
z#oap}9@u<DJ9eS<4W}JiMYY@u;y*l3<g)s7@Up<kzbn^q$V~iPv4L;u2afV3+&v<%
zRi^LXHLH3<z{S5`ZrIm|olRe9=Du?G=O}m2%qR9o-<VGkyYP<t+wRvFJU4J(UE;J^
z{ff&<|L5v2&b(Q$Y2#XB!Snw9=UHp-JI-42dd2~vy3a-;CoN~Wemc%EHT&Chd3TO;
zzmHfJ$ed9!kk4`aCdqLx^?-$&v((}3&Ko}&7wy?#e>;CuiM79(P@l7F<L1)3k6$cq
zo`2wTasQdpqYM3t_IgY3ul!P%xj25YU0+81x0uG4AJ|vVO<i}ZLffd9HzI%4JFTQ9
z#q&qgrW$|nKDM}PdRKbZU1?F)3484H0wynZ7m6>Lc`%~ndS+4S{q<>@B|S`xdwc>;
zo_;4*t)#`j?AG@w3wtvs)ZCsEX?4-$aLDnTj(-_5zb|ClV}8nI=kCh<RELkJ*UdYA
znyc&NbGOHa5oaFH&*1h_xfd`YO1X0Jz12Ks_fPYO1bwkf@2@uhmG5&S{iM%y#hs@4
z*3V{t;5ys>@JRjMx_yeQLcb-ORgdnPp}i^i>Vx^Uo8{NPX3^Vl@7^B6^5&)6qnNj8
zpL*K!=jMtN>3=2m|7l9+`&1TT_ixePn$3rj&x$wAoAb?$-R_#%qhsOILp3)#GQItF
z*#C0$-`mzA-VCp|KeslNc^3bUHR<(rg-<Gm?Yp^sGr6?+%jA4R922I!?e>3s;a9@e
zD4#<!G7jH!iWFS1_Uf*u%ic;)J$Ci}VX+T)(j?}8c{!<8u}XA9^W`~@KRfVQ9-I<8
z<5!Nc<02CSf1bogSNA_zbU~AiLw~PQ*SQ<YyOgI*PTp~2ep-#v`^x!7C6nea3EkIn
zMqF?4->)awHI_)74Av=b{;S6~-SNTljfwLwE@W%me&}GBVt1s5)kmxC!mN1()7gH_
zY}i(JyC^B~^6T`FSo6%npV2d3yG?V*-}Q5WIhPhgc<<T{fodVa(g0=I=8j3a`V+5w
znc;7H=hvF%T$`pk(cqt(G`F_j-M2^k$LTUn^Ifr8eMfF2Kj)55us<$g@+;fOBy8=$
zoUSLD0gqf&Dz6*e(hQmq-D!08&cBts)o;{SF1nt{5usAFl=qvIzg<a~{foX`Z-b^?
z*_(GgHLY4+X0lfAoRcO0HU6lkt)ISCn(siwiFt)h<@?udvPe4W#4R|rQup_v>*j0^
ztvk$nJ#$yQ6u-G;)2lBB^}ZEN7MmToBIf3dEt6SiiN-xuPvB6gUt=tES#Sq)!q06V
zWjVL{bGyY<e#*_O{vapzGoozg+@(?no<EznU6mu#Xz}V7A$=S^hZP^)k_z~o$(8ff
zd)Zfm(gOY}&ItarN0Q1MaVm>)H7<RWk1fdf_3>w0>(2W(Bp+I;JZk9_oA`d+wEIu{
zGTxj^GJLvaVZnOCH!|tV_bJTVwoOg0HSCt<$%ce0Yvhl6p6`8idSaoK+xxani=&Jd
zy|-dcw_e>iGq{aUs%8F{wfu~Y0*Rda@@=gT&9HS-F}c6;R)SIa4Bom^svDk3I8R^o
z?4o0bzE&<%8`sS1zspk`J(fAn*}?f_!MWq^{JT6ie|QzT^|MSHx5dY*9j|rfIOjCa
z<eC3-Wt&Gnvu|YX%ZDeQ=`k01M9JkBa$oGd_Rn7?Z@!3%bLNVzhxIS{bB0A2=NJfw
zT-$lb>68E8NpHWa&RAc&t@dU?MCdHzExY(O%xLacN!62Bw)Qmlw(KX{Bqtp5)T{~E
zmBQcR6T0E^l)zq-#LO#;lGIz%|E+jbR9X9>xXj=^$D@uPJ5ra$zqI<B$)h$`azy}p
z#U(L@%LS>+ejjAzOI~{0YK=q8`d3Nb(!bQ#PdIMbEytQ*bbGf{jSusU#>^rH!7XwT
zn^c+&EGPAUF1TB}c9&?C`X;?~i~NqW)pc*v3ai{-sXSeOF|SU&yYH(Hc2^F&96MkB
zP3pVH>T@L}nJ+?iNe84meaYIslObhU`?(#NH_Z--w%>L-{CvK`7PfzPy`BVLs(T%q
z8SrYxeOp77t53{-FmE_0P;qX>2Pc(9J3e~P<lZ=wkKy}Ck(u$v`=4m;{_Uz@`21w$
z?(-s>vzrpOKNIUYm67}~DKV-vSMOHkg7v#kDDt<Suqowg&gbfQqx|i={>iwX*P>2+
zw7#SB>Djd_Vo!wbusY^keC+hsLBnRtivmtzuPnU_E7naBJhCc@{U?i@W%sM5^#ul(
zn}4jeyO#1QU3kOf9sP%k<0pSrRKC7)URT)Bn3q;Py6e_mU_JNj;v(zcLQ^Mf4Bk9#
z{qJ|RpGrA9OZIBc?V2aE^6x$WPsJw}-krRt>5)rK#~=R{-(RqA_X(Y__&rb2?K5>d
z`x&PyP8L2i_mzmyi@k@vJr28nEetzy_!;-do<`QUKa+PqY353{7dRu;KIMbLGmf1n
zyCl4nT6om&&q@8{cG4nu@#HzR{oyIAx<&V`xN4dIV3AtjZ#9|V|M$W_hh4O1HoVp3
z@8;T8Ipfo|zQTiki`>neH>u4qN!-`)C}PgE;~b{53YI5YB)_s)Txp(qu&Z15ZIHUR
z^PwGEf)89<<vumjYx5I9gQSp8J2?ed%&+`-k}u`cWxYX7#cD^;g7-=Pe=$qyzY?BY
z@;N<8*-CI_u85jpukhR-tLA@*IoTz;b~E3rE$3oi$s9~xBc}XJB(0@8X5x>{v5THw
zIVbXNmtjfR?G?v!?RE;RELJIumoF9KzbwQzvtqKNR>xZX<E_(uDv$i0uP3nT9qR;X
z1Bn!eJ^9mxA2=_WrOdGJzDm4_TG;L^zQ7AAK_R@;Zs^AHO}e(A)|L79yOT=%hU!Z1
z4=Q_FoRQp9_pR>d)Vv8&uZ}A4Oh3Hxb|-UL$C^K3%QKlab#ExRd2-6nlWy~;E1q1L
z@@~1xeir=;TWa4Q|2$PtPB!X>#rsveT2E`ra6g%BU;A&G-}bD)zNCH6zt2wi7nNl0
zzWkeBm%~*?^?#|?oNK)OOg3abecE?5XSVR4myORXSBCaJJbbb(_y4{Xlbo5|P8G`>
zdZx2BR7v4E15f_s|KYCj8$L#UeDHQr;{(gtyatE-FYU7OhzxvqdycS)n){vg&7XbG
zo~pfSd+_hG@@Y+5dJf%w<dviuR>8dQ$mLd3mpIu)?`E@p54x9B`EG@k?tbgD+w$h_
zJ8Q_%p1b9mb>rL<^>UHlr(FHNWKL8$PlcL~>jB}0xfxAUr0=Y|6?<>x|BYM*kLP;s
zJ-6ZNxvT5S`2WT|_9*W7U~_Hqlm#<CEn6-#wX@7+g?vcdo0f|LdUs@BugPV<u<=XN
z>qRL$Ze0tUF7WT+)c*!@ytA)LR!%WcF}}w-)l_r$_rr7E{J62h<;p_kzN!8y)kbR_
zmv5}w|6+&Z_7C?iZC}B(I4?Wr{_Uu<|Fx<ZuhrT8FwXj{&RZe0b@ko<>`PQ_j$=Cl
zzyxV`JfR~1Jl(u~!aTH{eSJL*aU5E13_1hA)Ih<|z{Enq+!W~u05eMy<TC)wER2zk
zEjI*7A|G3>YiPoy4>`Ep+=xp*0(#WBi80E-<&OGJ`p)_;`fmE}`ri7!`hNQU`T_cZ
z`a$}^`XTz^`ic6<`pNmZxrzEI`l<S9`sw=VMX8A;sYUvk`q}z9`Z=k^#rnDWdHVVK
z1^NZ4MVa|2`i1(S`|XQ!5{onROY}?i%k<0jEA%ThA!oC@W#*(R7+QeN6hJ*?z!WJQ
zeNyw%OEL@<3{8v;5T^{785v<cWWe0e(wOK&$xGQyq;r064^>^e_FKo*TSwxyW?i|r
zw9G|7Rk71I*R}iBmAHj&YcB<@zLK*tFe|t^KXmb*%XYQ*p8wx-zx>?yxpOApxxTON
z``6v?3O2r!=G3^U{ANKGheZ^FiiQsJp5==dGYT<sad&fZad$K9*wK@iA^zfi6~lFA
z4Ix(N1F8R}AGcKz={fc)<Uq!n#e7VBSH2W5Hn}t^a7s>C(zC%Jz$GH$SH3$-5Zel-
zZ!I^OOIaFcaaf43KG@Y>@Y(T@%-jn%tm@?(?+C~#ctk}_`d@Ala8k6Z#qmJF0zQei
zETu=oS{h;-+&DORy1xAk=gPBGH@W5O=5gZmX>WlyT|zDjvQI02G{zZh5xyYM)ud#*
z@Y{j-35~lF!e7W|G%@Hc*eJ~Nb^1Y$hYjDDlovXzImF7=cqs6O0RIkK5zZrF>{6K-
z%wO*;_^^M@*8fEh*#GU6QScD>GQXsLQN3!@!Fu*)MS+&p(h~2Oo2{8-6Z8TW%$v1M
z;g<ASewM>;>n)pN12}SQZV2-fGu}>=t=rDWwn|fy;b25d{fC7L9y6q+R6Ck>{yC)a
zMVt5Atk8$wz6-2d7hoa9`s3<+E*{R-g!gydUz{(HKPVViuz$ZQyTqM)55;+^`OOuD
zEzaC!UbXPkarV_re-;<FENXmoC}`56AR&hp)&j413x$4#9=LIw_t$NXUrUcAaeOFt
z-oYrl!C(QS0lUUG_6O}u)lQ8WOV~{gyswx3r_1P|u)vn5iS3r7Y+}Iy`<olHRveBu
zD*NX#!~BAigtxswz>n+C?bWq)4!;pB5T9Rvr@lYpM8xmLRqt%~*-!YN91`YM!TguS
z#nFLLurN`<Bf^DAqtlk<kM;Tbya)MT_HX@_aAW?vmj5SLFqS(ceE!qQR9#!I{PB-7
z?>qbI!_0rmIb&I-T?kP4ZvSVyh?sa=!hVPU_oF{pKl$(WFFx|${6GKS_g%4xiK)B2
z^MBC~`!@;UGrG^q^Xn|My>R2{1;>PNmVfuxExWMaEQ&pg|8v3L{MBqyJ+VTnJCvur
zU{Wx2Ox(Eti@_ABGtyb>`JJ8T{8PGo|MG!r1&s$6{^AgMbNz60uaMY3ed)6A3jG`U
zxw))2@ApX%DHFW7|M+k3wxsa4_iI-iQsnp@Z>_1M$H<~QF+rYTnoxwN%nSBIdh2bk
z{5F5y=+soeA|=gqB#Do~N?}4neDkykOk6Af1pS@npmfMV@%{Zr`&T*GOz_B&-v6>O
z_hJ6e@5T(RRnCeHorWwfW@mP)t$FD_RcP__1D_i1Y`wchK23><x%HaM3%{$0v-3IK
zB4<vHTAC#+?~rxv+}d5I-q~+T-!Jz|_v)s7-voc_9ay#P*@>+0HE&*7znku|Us&y%
z;il~tmCH0w=@=b7;U`o3Z26PiBV6D5=DNkC{43A0Iwrg~FL?S2&#X4{m)o|4PEE<W
zY~X2sBg(+V{Ki)a{cib-cTYwZ^m516q)AR)^}8w7d)-r!2@gU&?e5>bZtVN9@#o*m
z3BKniJheT?VbZ!PhktU{jjyNJFaKO3Zh3UxY<-QtZ?3F-cTwWylZ}#>7^~hrRX2Te
zDKf4g#=Q7kPmvc(&ZUW_&-X{@7CEsjo!8a1z1?f+vzo;EM-p$-_01QjNnE+~;j8C;
zgSRJ-Z2h@Ub-HwJ^ZOmfmVf4+^5$cbuMaV*dNt=8SCXDW#w>2x#ixEdoP5nHxUcZi
z0zR*)pU=J1vGK^}oNn02>#uUEXxrYEuM%RSnM_Qtzmw`|F0a`iaqXHE)BI-5Sh>>W
zOftUHMDH$6Wjm#Ef8mnJ>(o`%FY3KH@{>FAy0*$OOTqN?dkRuc7v29w+_acb^4(?f
z{g7{wbEBh7*G5apsT9tL-&Lx-=UBPG++RCVH!QZlmh{<uSBUb`j~j!Q%y53{Wf1CI
zmiXVGRzCLJ!70~*yLZp=KN8ZpRoZa7`8jvl%kI+;AIkIgy0c5Sz96!E*`dEp77C7C
zKNtRu;;*0g(sh%O)_>mLDVHZO)i~|)dV4S?g8BB#wT_#s_KTWjyZ`4pzc_M2yvOA2
z8BDHE+g+qZ&9AvJ%`95$6p=GcobO)uyE!F_yMJ#p<P$KcE<1fZ#js<mIP=6US+ZOe
zi@ee{S$dcVN(6Ua&)G7y>tc{-*6hV`_m^Jrn3}uYe4ecTMC}c`Y`#se*t({Q>(wlc
z3jtRSuW$UAkuYnj%Cbdr+B)oQF@6_4d6ye!27l~3um5|0DpS2e*qlbrS@-Xy`pkG!
zAI6Z}GK0gVn3t{3>t{FHhDh5mpJ{uePdw--TYWwFmsQ<-#&s134By2@9BVRKSN2`+
z@Qaom%<F{ruIrASu9ba<qnrIgU=qVQ{Yx?`*`+@lI73z1eU~hfP4(P(Rw~G?`H%nd
zu%fepx+0ldRvlYymHyt!^lQPROXfC<uYLOxt{y5e+1c7uV`g^{`}YFhG_@uB?k`Ar
zx;pps*3O5ogvE+pMW<!i&o49k<8k)i6dTD`{Hu(wOg4B}S5SM!AotI|4JQt|HF6a{
zy}G2B@qBPo;H%H`!p}+6wY^DLx%BC`uj`5n7`G=mIQC{s*=?vuSmK(K!RuUN&~Q3i
z+&jVkK}Xo~)0OpgJMLJ%elbJUw?xaxN=3+3D(#or$#bFU4f63?lUD~BoKc@^l~Lxg
z@KpH}SHZ)c7xmK1^b?b<zA&6fnGn=*#WXjNeYwtr3+pr12o~{)71`&$PdneWKxgHn
zohdtXX7>23-=w0kH!tVkCxgVo+=+(I_dHeF`SP2}p?z`pinsV|e53bw$2y<mX2<8f
zxx-re<m<=G-<>;3-pX^owOn$kC2HNlzenO;b$^LI7T+P|9cS=<<+~NaM&ArWKKQOq
zmlxnZ|6WFpDQ(Y(36llFPG0i*KmBTE?FHFu_w-I>Cq4Z>ZN`ItRc`{#W9;oCUY}kO
zxYKgwm&=yF*W}ObXieGwz=GLW_pZr3DVxYI8UODdwmrpVSEF<&s!~Pk8T0nTXTFs5
z?l<AwaO>o}>E2G6s}8EI;yrjYIB}hw&ul~a*i!wEhnIcsWn_EQu-Qn&x$X6_5QF<a
zHNGn;F?M-{n#ns|Q|o98*{sHx*Q2m$<&(}yYBKhhE$xJ=T$bEcs*As$<hkSi6<yx5
zA$7JHHw#X@?(#qM?rolRaQfA{g!=rl{jNJ5^uzaFja`25(X;bWIiWMceotEdHq)(m
z8S_^0ci~=wrp$}{g;r*SZtJu=)YU#$FJ#~3cQ4uBckh1aa^l3fZ*E(8qF&tT{II|^
zeg5khsUs{#u^w8R=k?~<Waq8Bz5B}d&npu}Lh7U47w0*9=l=N<yz=G3?dI+E7dTRv
z7oXl?bA_2jqhj_(Np-f$?4XFLg)f#|KHB}lZq_NIGdcG!Z4H=mQaCbnX)?#0)bG<{
zxOcl<+LV0tWl2Jth-t+--Ssu0hnCi?Q+hbVH22$!yWOSBmF~GE&xl*{`NxZrns@Cw
zu`6=UI%%rrMk(~2b?|k`e57;!bC2w+sgsX~P4WG@{QKv_*S>t4cI@gAvr{{y_zYU?
zpK+`^C|Ww%FjalpS5-Gzzq`5uAFh1*yQ%kk_oO~W`|rDRl(vPvvek6_K0T|KUudq8
z%)_1GrO`i`d(XreC-#>l{yF@x|AeCudwh<2XyG-!<xh;YZ>!b%-9O2H*Tn77<jzTV
zH=TX9<;@c9F6q~=SJ|z)d`F3w{{Z*fVwK|f9qWEPXpX(+w1usy{eSe-V@ccYOMY~A
z6|B7WDM56-`pXa3*T}Cv|F~a~e`(IUW7&5e&YfB6bK{rY<g9xMHwCVJ;oN)g^pa~w
zuie}}!^y+J+ul@hp=PL%MM$;Fd(&BOyv_^SEbR>YAp7;@{Gb!<&t!69`mTC!*8fwm
z`)AAJ_E$~)3-wn&yk2(F@|Mf7$3pWZ{;3$wdRq4Af?n{(y9YfbpHKhAdGA?dVUy2%
zVZW*3_d>Sr+$MD2S+eXA+nJf`?JXNGh&^`=G&ncQWa-=a{hF5&G%m*rt=d^5Y*pmD
z({rt_lAUYF^;1_38$9=@mYeK<xn^F`(zQ!ti(gfmd^J#b7MvT<dTXav?f)Bx+ZP{c
zmzVqS`!Ji{bT_A6z3PrT9eEOjJJK!H|Ea&f5c_>9%fZ~}Yg)ZC_$F`pJhkAHo6|d%
z%>mrS-<AHm=1TgMJ2|^vyKP-J!{G69PpK&T9Vfr+5%y4$RehIMA@Esvo!A^-mfW3E
z5?tD4x*E46vkk*`E-_!%QZG|Iv*zH7;+_?yN2cCf9dNf)NN)A4aMua0`JeN>zHJh{
zVe)B@(7b|~UsB8kJNIr>w5-n*_tLA-`TS#oyTkE)vX$F@$$YrCvEm0q{+VB9E9!Oz
zw4Q1Y`(4x0uO?L&aKu|-Ub3Zo&$-))m%VJ3NpYW!(mnIA|9O_?-R8a5q>~<X{;oVZ
zfB6cQ+^`VCPZQo4{*U>Uv!eU$G*PRr)a@IS&p2${r5Uu~)}?E#+a1zWYbIXi`~255
zq5r6S`29zF8_%d5j@x`;kwE84q1y7T6)~O>?qy4RW~`f4+WzWr;VS(Vi8EC8ehqrF
z!c(z3lqXI7#c5-{Tm4F<rEc$H3;$&I&w9MeP5ai`>1O?*E8ggB;W}EJX4!sulcMS&
z$?Pwmj{EJb(A~M>LYUCEHk%`x)3$YAJ<Tudaz-T0fPJdn-Y3~#-y9S=*2;C?P_-iM
zI<E-t{oNHe9%c#Nk(r{h|MrdQyZI95A72wXxrFiJ#|F{VoF}%^>ll7VIJh=0x%T21
zcY+&B`L3fG39p3DMNa<0Ve9)Vd6J>nB)k5#^Y6V7jrS7S@-nQT`rctH(=^*nd$~&5
zR_)n)=FgWLryBA1rR<0Aq*(g8adK_F6mDAjJ3T%A<ovJ3cb<Itqp7A>6s!H<F5msa
zpc|XYJ@aJa?=QI|QF+Ztk?-M;i!5p<XF7aeE}hvS)t=~nSY7v_-7iy)wt&p%887X4
zD=vw*-SfTLJ|io@ye3!5<49?c+>aMm?#g}Yn)K`+|9-if+vPJqUnyDCyx>pV^WCA(
zxbCG_gj~x0YhPcG-5)YpT{xhD_Z<V@nH{XjW|Q&`-sfFx@cHiEO$BN$Usvy)Rn4~W
zp<&!gSM%Geq$HWs_f>us%XIlTTmRzL?RtwZ8a&*+r9g7?!L3GR*4k@xuAk~Z{CRTV
zZfC7@;nP>|v3@xJINLgJTB+g!MG>2oi?4DXnfBo1jA)D9dT|;O@gL`uTW(Cazp487
ztnVBe#kV%iy;8n;Lg-iPl_d=q-sPo8c%BbV*`TOnv$E^J<HN_;Q%euqh0VIQaJ_5E
z`pn+#rzSd1Kj*yr_}uyObzg5A&F?uH`B}9mm3P`sW8WE#mMdpy6qhA`QU5DA`TU9#
zDTf^O{%%<OdnwcUcXB!pd@~y~#J^lt{pwO5z&hjcH_f?P?8m}R{Ve<a#;&{a-{k<-
z!|i*YNQMhV%3rrwmGpi8`p@sVPl~UqSKVl}P+)yu&XldP^S&!?Ut%*YZnCFFY`*=C
zqXl)Z#1}{e$k_JyK5$w0c3!A{jhDCfT)P{lH(%Y8Z#ui*>bYCl(Kk<C#2oQiBeGBT
zS&U6p+4+KZ&s{PtyEsyp7FzH1pPc{tl-7^B<_D>1-%ohQU7T<$t-Vn*`q<fRk*UY_
zoOqsfJEn1R$YO@x^~de+H|%z>;c5^H-M{qf$4IAk=R9$-`OB5uXKAfuU-!OEy|r8|
zRi?E%=E${MB@?W?H2R-!D>7djKh?;3&#IT*%e!V8?Ky9<Rw7d{BtP}*t>29K87?Q)
zCzUnje(T7XbU|`vZE0tKSo6Q1-s`so22T_;`n<a#YDGMoO7S+8{WrcpIufvbUBji5
z)2vvo&o@jAdvc6(-nYqzE-B~g+qzk;-?sgsr2QSA_Toc1*(;Tj4lSARM5Ui;-EFQH
z)8uxZi2q`*n^aSmJ2g$|>CVe3dzKYUeAf_{R{C7MCPq(s&V>*B(>-0Xe)gyP&pG~h
z`r7X&N;CPVHKywDrN?#qC3`AGUbi^<MbSF+xzs)GnJp%M;)b*K6dc&ftE#*@W%-6@
z4<iF-uiEtU%%gL?M<NQ>2cLRUy>D;w(?)HhHSeZpO?KwLUTGOQ|L>f#Jw@yI^_#Lo
zGY!=8BWGT7+MU^7+|_J3<A&X}rJpvc>#^=+vGUv()u~{6TXg%qMD0U!ccvTNafrz)
zUOU&eu~6o%;*-?vIxFXX%)Rz=vqgTv{_y)QvgM8Ig}m#FCjV^6x)->-Tz$sFb3)yx
z4&I8+JrU&TykX_-7zfRrrK^J;U!VA3^WHb&TP3QTf0{hX6{(uMRPvIU)9L8H*A6~E
z?frDop$&OTOTVVBe7?v_?2TsMInT9zj$efP<kf<?#o7D!em>~G<iV0gk!V-rheDH5
z^$spvFZ6Al@Vp}K11<Y*2Ha3)yi|PGwwvj+Q1rT{Rbs{e4u0(18{(FDuh*~i(fb~K
ziQlt3W@YFfHEMsl@8$8U_jZ(?J~{hs(F&zozc(K8FRLxh+N&cIS}%Y9c~tYMo6j{_
z*ly2RxzX+M=eikdoBdvP+!k5-Iq>KwA*uXg|B7|jzRo?rY?FC8C-34Z(iKiqERW4p
zW4}LH>6p^{sQ+`4&)s5g_9#1P@Jd^8X6Dl;Y~^Jh>5EJ?6OMk<=>269<i0zcNB{R8
z*%^MCPrhGp;<>Myvbf5(r*P4y7+)5(Upqgx$E*|Cf5E^d#l0<k|Miu%CvJoq+?mV6
zk$g=4?WKzCMKu#-lS58!nwcVaLU-$r7iCe4x&CuL)I6hSY+@nujB&F1rn8PqcCPm?
z-q-V3E8AA7zjKdDzj|WPoe51oR^J<qR__kZ-L|gx-sDX_D~%Xei7yYkw)J;-XUfTy
zJKg&oTvP8gE3jLfZsA=Pw$yyB_P1-MO<m!I-rMX#{V&U``z<`zs44J@s(DPi{Nh{M
zD%)ljewlOR*6o#>WBH;TA4hHdy4iNoZtk;7RdSneH#FUv{^@Pe^?4QfelxggYB!xc
z7#g~6Yv0NR>vfd%_VMk0yfZuJ#^N{6zsoI;xc^rAVz}(l5AL!m>1w*ai>l}SykGvY
z_FUP8^GTbx*Bp<F6W^nI;LvolqpsgvW0{Uk-feqSa9;mmzB1<-eADe`KEL2+(yNff
zY1wntLSWS!t8a(i?5ilhZB`Sc^mt9TnZl=)TNt|n^9}{YetmIMcysCGbL|!EzIzvZ
zuGnQU^Skkxzq_uA3X0ASjqeZovR?Y!IupC6>4J-k++Kgkymi*lEZ>XooORzS%OWXV
z%N-R<R>er`)b3TE;b(QL>2s2e#-~^l6^7|j$6vcV6R2Oh*6r_tJssIwA{$)8&LkX8
z`LIl-@Uqg<hJ8;@K8-n^z?=2;_1r+woB7J@`U!$p<(95K5jbZ)le)~pM424Ev+XTU
z3_n}k-#;zK{GtEbX<m#vcJ*pii#$wa9yxvNnRolt%!FfmI~FB(Kje~I<F)*Tbl-A?
zmlviPY|4_nzIDD&WAV|W?lY%GTl)W1VtjtGB}?TC?>hOF>;Z3ByJs%ceb{*67VpY8
z@1piixp?v9&qu%J^=j5_wwk+iwkWUe8b_X~&Ww9%$^xdoRCt&lXex7iUi_)`5=XxO
zy%%^&(r-o-zk!~qaGHa>fK1|^hyvz}W4;aNZ@pe9`Dm5qH|0?Kn^H@hXW7rbq;1#b
zv9j#9)QQbgw;kI1VaCn&+LWCca}<lu@8`aHDJ~%7RQ|7BsV7Zd&Z;~kz4d6hh@ak^
zNgQ1DcYgKVIJ7~v_Vuet7nV;>n^tqGyy#(E>>I|eA|^-Sk_`_3dM`Z<XSpZ1ernJ+
zm)&nGr!2e5ee07#wDMU-Ywcxgt(bz>&U&r?M{DgAJ5jfar%(7#vQAy9x5DXzrrIh!
zHwTfh?FNq)acW)**M9GCbIRxNWzi?avZW3ml$q$|`uf!M4L5u_(plaepYc^fZr!md
zEbDChSsC{WOxhV^5tsU+A%51oxhu=}ybTPjam%lAjZz5rJYk=E>a;<BMCRnbtD;2B
z75q-^>0WcJcFrfyn~a|yJ=~ab=d8Zk8;&DkaskIwT=r*oq^*8D#p&=Wuf|iclRmfD
zuFURUtM>EN=EMEMZB5H&>MJ&ND{;QG;CdaoHSPAw6W11934hsA!T)vXy-1n0v3G9H
zzH)(6yXTP3j&+ZUFK$y?8?@o~ikMp#H9Mbtj!dtMeQ~g6yWRJqT(<W=^134(Zg!SU
zsr~Y2M*OV!*}H4P52rV8nySdBw>qKQw=UfKiq|&x73-@TCVZc9B!MeEoKcqBQqaBI
ztlB7Jy5+6o3!P@4xfE{FC+N0+p7-~&IVIOhe|TI`uvr&na<y;m@kdE_-eg&;muqV-
znOoWZZZW6d9{GiLwaxPx^X{$tox|_9toiNho3ENv-X1ODHJJP?#<5m^^1FX6J0?s&
z<Ky`%ZU5VuJC&Tzv+qmaF=6xJy`^&JneU!jVNrY1ZI-vd#6=POySIOQvC-B3j>_C8
zVc~M=R#&50x{m$-T3316d7<2w%hPlhHg7jGV=d2=|6zardCr=PQzaMPxl_GZJalK(
z$CfLbe}1{WH1NL8Uir%pr!f4{_V@92uKN_^HN8Ij)RV^CoQ`))qHX$iGi`UC{Ji%~
z^5>V2ZvQ$m^Ql&jo6o|HFRKn6PLZEDx25sOx0;{EjLbbH$(s+pKlb=;@lvN0FMh#h
zrS-kNDVJ2XynTLENbj+nY2CcDm!B-SeRFfowwBlS)m8_j!>&h9EZ;6+Rou8SzkbrD
zWveEioo^ZDaoXv)@E+aV_pi6U&@=1we=@_|o-ajYO4)<AlD{NhJ&{zX?VTNG+u^pp
zXK&?;l~*JacP_b|S$8tBOZ(r^1Cu|MYTn$nQ>pwjtKjd|1zp!G0+jym`g_>;<~xbD
zxnFfkW#@cr%uSjb&c8%?V&P6HzVK`FI0GJ^7rS+E)7@J6n@b<{%Em27aA)&o(Z9Lz
zf58*KeX|3%R`6GJw8$L@l((`fe0RS>{(71I#3!4-RP1qDt08J{Vt3YL=Yx-KOZ{%B
zT{>!1yv`wf(bKhS*IwG@`(5`>Z-(p_lPC*gsmQ6H1^wE*Q|9geabruHH>1*)cecTq
zyan0IjV?%uuDlZVz<bW#XcwQzz6C}5x+iazytp9F;Y?K5xmA<zM=mqfT(CH3$CuEG
z^=kiovV*i@|9-7y-g$iC`WG$vX9ChS18?f(ytG{&6x%UlvARNtNYTL?`Db3mDtx>0
z>z+mXgwIzqjOzE;dQJNoSh=(8`?jNX`isBSHX0{N9bCL(r+Mep>a{KN4w~%x!ql=a
zOh3x!@NSbk*Y(3rM$MAFSuA23Dq@wDCKB<EC66huy;kJUl*Jch#A90<Z-3zWY2U`z
z*BP<@Ps)?-BHq;Q&=`e>xBJAaU91!*-E@@entjgsT*|$^%hG=rRBifNdHlt;MuvN}
z@0^S4idd(#&ADYQ{+r#W#QCq5Wa`b!Z@Qm+w*SEKZIumY%BhnsKZR01h}XTin=+|#
z^K(awZo`w8r8-huEAHo9pX2x<{_|bQzG{gzb;WDGN*pjN|2<(|uHpW(ZmH#h4Bt*p
z`hD}9+sve>hoPlMUR8NUFbG%GG;gha_BCN@z+?+sx!~2A-@o*3ViotfAQT;bNaAyB
zbRfTT$;L46_2woUQha%*$xF7pyB6$lXTiF*d+N`>T&lgN*}nbA(P@Xvy!jkH`5L>M
zcU6V7&w6T`KBY=z;pCsJa~JR4bd5La)5G+s=kuri+A47BY}pNuEobYBWEVM>g@~qZ
zytYraXg8Oh&}7Fyd$yc8$*Qx4i%EU+i)CAU7rVREu>GtK{<ybbw$gX!A4~jLp4i#$
z%RI30<+sjNHU5npMdoFSx8Bt=>{-dQ9^1sO8PbGg2!Y$ELwv$q{hT2ayGGa#cQ-av
z&@}>2>>8O-X=2yR6z9aQi+%;_gez!z6?MYZ9Law^sd>-|R|9jT30Ffy>=UjAW)?(G
zxR$VnOv%2jcXwq&P7%XPsa?BwI|i|(H3-g7Z1a2R$LZ=C#gggh5F+LIa>6^kPQ{k`
zp1*JF>z}VFJvVFXy~_7>>z?mhH+`z-{f=-(p6$&m4kdELG1@Iqaqx6^cV=N=;rhtf
z*u=7C&9Q(M?kD}T8?K5xddS&&Sml3s(<FA57Kfix963Vf@yW1V_)^5k!NJJlqRM(i
zrO}~5K|teUxzZhHp#?mj+L{=xY8ZSicpiBkSjAHQ`E!Gnm102hzdF`}8^ug4Dk?`R
z>ZUS_#3;%IR15GdV0N-_j0qHe>!`<|yu((c>BH}EZoW))mP5Xi=HEYlyq*8atCQ^C
z3#L4M!uZ2M(2v2nL;c8MX(l%C9nd?S>XaWVC$LIbJKEO&?tQ?=AwPkgrJ-nt!&^lI
z|BzO39-fa33)+}_Otvsq<q6z)pYrxTr%i)>IkUh6;UE6H?XTKPJ0|Y$a{TtKAlzKw
z3_n*fi-kk10)uU6u3d|M6FWmwW4&5ajLpLpRTIoPUNLQQR{djT$+2Kn0t3TBhJTIE
zGv70oI#+zEbc(HWdh-7!Tj^;ngAGD=u8J}_R|x&FnQwH3IjMhFnf<@}vrF3!)+R94
z^RR31y!jx^a^rOGeHOOT?@bvR|2-Xda{T*f=_J4)xM0VO2^Injh3pPBZ|DA~-)8=;
zxcLtk*PoKb0xYaM4&G(p(-4@Tu!5Q8tGmDh&QEO&0&;N^7Bu{q{juFuL4kq6`K=&>
zb%(Nu+Xw&hDbkNV+;-Ew&-{ve1IwZv>I@A3{``G@R?1c1K<3$_@BY8m|NS&Odsc?T
z>Vp4nf9B6vq;yAIKtYA=fv5=Mq8C~^i~`PkS^n-mUH{>K@89X+@+^Og%^ukEnkMiS
zG%$QHXS?$BZ|~vX{JIwZJlcdmycgV6ATnK%p|5^LKC1}ht;KRo|L-&X2>n$5`0shW
z|N5`~e{T%g8xvF4YFT&mf4{*A(N~YYt24T$>a%!>SrtsNNccZDi|wawsw{`ZtEa#2
z2lBFTsPePUQ0{uPhv`s_!^8V^E0$|r5ofyAuJmSZo$$-|u?y06I3x<x?oj{oT%0|W
zmE~VJ&r+-E^ef><g|}|JuQ);7tEnUY^xsV90HxpGEkhE%6@2hF<?8BSa*&f#uxAoc
z44B5D;J~07ZE)nf_<hDdH3k+;p-c{md`uPxY&q)IMKWlxJt+V8Qu#-Ce6>D5|CI;v
zB@VoQZ~s%R<TxUp<ZochxP5w8MTqc6#>k}(uMh7w)99_8&|9N$!a5?Ox&1|mWaW-2
zX<r`w?71d=^(7x;=xq1-C8BpH>OWWC&%WlG(Y2qP^FJD`%Cj=MwbbX%yoLQs+2>p~
z^q;WL{j~Avkdz5JA78j!Uf!?%yGNhB?2Sp1DsRgA%=up56Bk#k)mkR`)A9S`=c}%t
z-@5XJick4;Ucufn+hf^E>Q~<EJiYGZLv7Bmjgh;~&)B-eK2BiC&yY#FW#7M@nN)sZ
z`!V}#U-+V}_sF*@gin06Fj(x^T9dhF)pwrL{dljkO#Oi0+jW2Vc5KdRG!~9rT>WNC
z)t=<DN1opMxT$d$bN+UZXkFbOk#Rx!v;H__UHu-iy7N=U4V%{W2Og+fM%as8{%~UI
z29ck;_}n%$$|t_wKC#90Ve{u}hU@oi-gNSD?Md@x#mS#7HVO)Q@+MYgnaixJeR6V#
ze|9{#Xqea>w#mm+ce*DY?{#x7+irI6QRSH_y=!;K%sRPdhV82<p4tL-EF0(Ez3I1w
zTTrJm=t}D!sqky}{`n~$Zl3n}^r9PALmza^o;q_%(1Lr9q8I!xKd{EXmobm`-<_6+
z!hHps4?9^Nyt!)Xj~Nmft?MobM$UPinSY1l<F2~*+{LZtLQ-MBXDH6hv=3S#pOn05
z4zC$o{6ldW^-miGr)>>)EL*wR`si)Ve}{A}GQa3CW&Sbf(oHUz#PjLsk&KuX&z37@
zR((l)aycu^v;NOU)q~S^d9M|(Trg`|n0j2{t>+=n@AOuSM@-8}k@(&GF6V&k&-2gJ
zwVFe-B#z(B`dB6GzViLAtS7BX;W2EfpOkgpt+ZQuukPcIqX`j7Z#O@Pliaq!QH=2$
zcjWtP(N|r#XRsXV+t+t-t-vhhM^2a5TzK$*?Xrs7tCs|Ca*9)`-T(2y=fl@eGN&JF
zX4xVyQanj$nWw7fihZlz?7YC^8}{vrT7M?Dut0?MPKo)Rb040a{L9*=G~V%7;PiOW
zlU>5%Tod-c^4ajD=6~ZVuh}PAr!UNUrjp(m)_CPfdrjz)Z#Ry7371|uZ<@BEy-urd
zkkC|(+XkljWpn17YP4?F`WwILy7A&FaT)$k45n%=J)Pf5?JA;rmLIsWJGM!2vH6be
z+wVU57s0t@c3$h>`7@<M%vMY{UvK%r_sz4nA@lAzuUo@A^H}g}-dcerOS=|UP5Gwa
zG_~~qlQw_r3CHSA-(T~BuchZRyY{|#o4&I@UCa*62}o->5^`?-oCwp@1)F!iUAM_@
zldaQIr|3Ns7P|iK=yE>F_~Dw_MrWPgCZU9s{M>bK7MA(0U8}Iau{Trxw6(`_ZP%Xv
z541Vroz^do4ZpqBqowutiJB?K?$?el{c=h*>$}RL75`rUX7xM1<oNp!?i*4k>b5Y)
z_&+v@o^hu?JpUy37j5UyIrr!0=PbSLBA}VMAYM@a{1#pw*4%(*mwN_DA3w;Mo+<Y*
z{kvdq{FFr|mv7eH+!k-}G&Sw*x#f~w?;_4*W$kP^c0{E4UhvspO{Z?$TFB4qav)O3
zZCg>WiIWDyVeOv=D}Tu@$%$6=m2~_#bG}&f;^!M`qC`DcKkc2ZXtKsd!c?>_Szi36
z!&jpfkBa;!vEN<zYm?6p_Xs{?*DKkDi%x0!NPD%%ZV9`y@@kWn@%f(V{a-J!mGQ=v
ziCoVuXS(Pot+P8~s?L%m{_WlU_uPNCJaYN8XHwbGbM>cRw!VHLzAWR4?;OLgJZEjW
zy^Frzi#r;;_tRufW=^}?cS5c$wX@u|BVgNdZ>`7ixqGh8Haz;}jn0|5&sSDwv;0os
zIrDpR#PYtLI~66K-B#lBfB%qWn>NpTg6)&aha#dT^NtsNYg>9e$DgONY;)Y}+7jCn
z`)-&#xBPf+vF@IoC7-5!fA->#*;i&?mjwN6(^3W9r~Ti=SvSTct?6{m6FO&TH*d={
zu4DXqr7OFaJiAdfr@LYMqd8x)L)R~F?J-E2+U@ee^whFj65DnQnTIdRmHPbN_C3e@
zcTsP|mL7dPLHwG6vE!4|3F=oT&2l@Oyi;n^%qNHUABkG!y7b}9#dFs&gwEiMnEr6q
z&vZpz0Y<N?Co`I2xjpYc+Ii~t_9WSdKk|6oC6=mf?sq<Wu5_ct-^?A`&mX%v@7~$2
z$^`dCx37uZ&T7{AEAY$4#B%Mno!j=5AIj}pdA6_h{p7;Zl=GSstN4yv%(`^p<pBdb
zdmjGsyW9S4{M#<{@$Abd>uN2_89y*M%>J<T-r9K=JRN@9{<SKNmi(W8e%lZ4%(7YK
zo$NB3JQt`nm#(Sa@nqWfaL?YXqBxfantA0*ugzViBrA5q_dv%k533y)=d`<RlZxaE
zHQ(pr^0E4>f^Fe;OJ@72jZ;d$UVCPteqq+1uSb`pZkuNJZ+Bh(qW(E~UAdo%%ebEO
zwd6S&e)yU_>BhQU^HQ2y->)=sSsR{}XIp!_I4V$R(T(}9t>+x7_MKOuIr(}#x8a;!
zY<@i}V%L32bvktWl1iNN+ZJKV+|{+4w$3qbvQ2&Ew&#Lx@N&&5vsN#y^v>P<X>$u(
zmXgTC^UB^{Q(A=Ldd$k-NY71O6L|7ahTW{C(_|Nhrkh{8V5l4a>3V2hjLGM&`x|8?
z&b~kXFGXSIc2A>;v*j=BOh33Jr_$p_*~HLntF@IXYPU?ISSPKumpq}<w`b+|f(7qc
z8#a8uRb3cdu&4aT=_7tZKMxf|PYXFZ|BOd;(2*&|IlcQ<v;?h8R*nAMoqcqZa{7+&
zoSO@te_7~fa8!Vk`62KBn|hy?UD+P>Pa?_Z(l%!sO}A(91;!BuQ`ay3`g!N^Ek0Qr
zu3Y+3{MG-qMDH^FZG3O<*U9Ks@8X%1BzWm|Ou=eq#=h_8ioV+aI;pqP<euI4J>QdJ
z|INz&5G$^sVw$-BpkH;@!Gn{|N66afaIC3%AjiNl>D?R#c1g|J%Lh%4CVO_L?Wmob
z=`ZZV^R4nwF2BPRF*%k8{W~uPd74apnItypiNtgfrBJpv6AhWHr&qnds>CEcxz+dA
znX`T3@pEr=uBxfNp1Dd^$X|{nIexp+)LP%oatn4wHSfDv=qkXs&(JDVL(+%u`m>8d
zPY$d%)ry*)#r5N!fw%C^w{8|fcdsd3KdcyWb<M28xpGBS4aK&iCNFkPycf3Df7`mI
z%p0!`yZxLn^G3^uc|Rw)`o6A6o0P~echTd;HSU*nlP+v){^5Ul+l!w$=GF6_u$O*S
z?21zRcX3`_<+Q!W_APNy{=0s|1*z=#l*^X03;re?m0TydbYIOjJ6A>9pW!hs5%Zf)
zFNjT^RnQSIVPET>^}9p7U(K5MwBpi24(HPhk1A*PJ<G^D^zMnv`MWy7>P)$37F8%7
zNx0q|SaO@I^mo&j9TB(6&)X-NtiEtb?An#}$FE*~?-F;zWBHRK);i2m{fC@ZzPM3*
z^4!Oz=_fgQj*0T${mrQ};n3zUSLU6(CLE(SZ?>TKcI7+4DT#$Vt%`|P){50c*2ezG
zbY%T|XJJk2dbRR1Z<yZS@_0BSIldy*H}HA+x5KQD-E`U{yFDboTsyjnQ?P?`NvmS%
zt*P$cHgB5isuwqD_KZiy|F^}wKGM3^TzvvxXHMpGj*oXfC#k0H?&l44l;1kb;c4<w
z7q$0x`y-R*i!a~*@@et9IldwXSl(az7&5PTy4Pct56L{=*|@@4&aL|OYx0JS<N4Ey
zejHAHW_VQpIIDMZf~V4&_iNoRA55LG`_>WVYisNN)*rp3$Gy%ae^zNbw;!kVvNWBE
zMl3GoDZ9k3Y*3Nr)jz4LKKqTWm-fZ?X{x6@W6z!1lFV_Ap@TEX=bX*D&TS{kM7czt
z?<$RTDw12ZzOs3_^{MR=A<A7RBIbEyHJtW2t9C-AcO(C?wzl#v<#(rp9(ku*{bIdR
zd4KhG(|gBXB<y*)AuIP*O?H&4j>dKO^XqCjb}flwN_E#3`4gJEs{87Zmia5EcLyGr
z7O-uV{hNTK`cn%Nb5?nZUu6h<XQLY*F{kE(?y07CzaFV2{#ms5S!UD9tWOsDMfbO9
z-*sx6xp2|#*l@0j>wBx;g-(4^t2HepZ|ky)fBblMNn8)MT5;61zkbTJT_JCI7j~ST
zxAEg{nQP&}mG6JM`QH9=;PU&N6}LJsym#7XkkD4;Df*_iud7eeUe(9^*C`o;9bW>!
zWZFo7PG3KV^Lc2h>tFVr=f9iDER%X#+wtmtdP3gDYf%fozAdWgJCjxPXk*OJ?z^k&
z#kO1zx!C`B`NVVQHqP99KiX@5(9Gf&*M3OusGsSOa7lUIhc@}yMpw0}ZJ&g?6_=$6
zxL(akT`4<XPyXccyycp2PJCkRTe)c4uiAgT=IMXJHJ1l0QL}p%eEsmXLVm?|zKfxI
zQX=0S+cjZLM2_BfMeW`xEs?)w?%%R5NmDIc?YP=b4NvvF<qezkuX+8wd;js?e9LtK
zt=u)6zFiM-yT@pze|_dNW8L}1M`tVN$MqW>TNoMP=lwK`=j^F3{6*G}l5fuA+;n;8
z?5$g5qqZp)9e=yda?TEiexCN%dwa!eq?J_Sx7l(<-CO9@ckMuy_trB;mmXa`={jYW
z=dTOg&)L4r$eCxqaj|XnYPZ|^GH0r**er4n$4|WS@5qN+N!C%8YmWpM`n_QI@?rO$
z8!fqq@9J0VTc>&E#+JmkoMZeqxOcRzUZZIB^|kVXU1z;&7H;oZ;(V8ZZI(k+>vH#P
zZv*f7r2Z^+Z~m&bb$3%v_ti6z8{RHI`LB(uy)1jyVQ%5-oUHhHntN4l7%e;E_qCgA
z&SYg<^B;bN;{RJ%*6!G?>y+`;=kehmJ{z0PGYh@x>-pQT?_c};6D3-%owx41cXQOa
zspn?8Y|;1ZozKqliu!mSzije;<&)30PXE8nIsD8+wfOlok<Zp^(l#!!^?LvD^ygI`
z%xZpdyrp$(+|`)n-kHy6uW>c>d+>5)?6XHKVtb~GZf`fLe$cV9tW|?8<u8BcY1VEz
z!Fz{PJ=q>yxBGr{%G!m;jOLwMZ?7sdMdfJt^9L$-KGifV>(z<b`{}^7yZq}yi=!iC
zY-;l#3r6Ps(-AKS`gwJ8>0+U;*B(A8Un3d3>!SPG@N<8f_!Lji$g$xo`^Rp+IMeje
zf~~UCe(c)o_-E!)z0;?zy=i=Cm3_34J95>t4Hw%JdGt*SnvCURuT7C$rmF7OVbgmc
zHRrp&*&eRzN8+<Rr|*ej3Y?&@t4Bg4W%BIxqV~CBP0|vpmRET%ZBet|627wZeSCjj
zto&j9DKD2tUlXpqS0zzXmREPIrSq#%+urXVZv1q3ab}A}>(Q$H-AnI3xS4vx=DN@x
z!|T&ain=E6m|$=`?6boc+2{OOuARMwITy59j(bcxXe}IC%rxum#<s_=HnE%*d3MeF
zjOfmkpL2e%G<k2&d(ba#eb6S)-_MRcI<c$XPc`pwNU$$|?vAt@opRE1Y&03x9&O%t
zA!fR0L}J_zvpC6FTZ3o5UHv+{J0f@4eUI53O1nh%l`eQ08SQ5O{*JV5S`SyDt;xQ}
z&n)C!=Xz(%yY6B2IWbXwiAI;b=;r^ARs65aHJ;qL=5#{T+`RYEO`@yIFK)K|aP9De
z^<AQ(e-8Ga?tC)&OzN%9>f5c~w|%?0oK<@A#*XxMV>J!m!siT+B2{=3eU{#8)2&i@
zI$?44rmZuBURLK62x?`#mx|eFcTlu8Q+o3um*aI8s=3}C|8gNDFJs@KZwG(gTiP@~
zZ{Jn7ux`8dRea}XEDhW-?V01B#K&&e-_`ug^C>9tT3G*UX0YbIvxjXyxtCXX=m?%Z
zqbDHS_+s6{l>z&!6C-qtH?94gZ{YE*-?C%MXP%GWe?E<>owKKb^Y-G2@1*A^6<Icg
z&P%!2a{HEmmc#K+spdgEJdt9H-Y364=aW4DS75ww*~?U^jLf;`pH12GWm?+5N5!l`
zYt_<rpUl?EwAxqw+-73eR+X1_`c60g-ey+&xub2x)k$x~m9$kRx?NIue}j87d$>)b
zP)*!<%lI$rEsj|2)GIr)ZbN29$1C%{OEcTA?~HvP_Ezoq<8Pf$3Z5$0hkD-n8-4d6
z<MXJGEa7uB>V>3dx@AVyh2~BRm1R8GYiKiLO6AuLbB^`RI{wG$(wcc|AJ~fRZ0lcp
zN#?<lbk{F#?mh2~4;OFNdY05;FX9=Vcp=BoFZbpL#dzC;(``(1x17J)KY4k`nxdp#
zwHreg6@6Z_x%_}y=NXNuP9JA&y6$nJ``P89>w7Og*%PVwZnp4Q(-&)OV}Gst$ReFu
zQFtuVF>1>Go0)t~535qXEn9zi*1{JN2c-X=K6LHghi$85Z{})#%U<%dqUKxht+(vl
zhncIxEGyP^{e9hJY%Eg8wUY7TN}=wM&|+)BRlYA2ZGVd?X*mh^g+An8YuI$_m~-@8
z=j{DawGR(AebM_>@kA)#+L@T+=lZg)D81aca+lAIvNb2dbRQ|Hul(k^Zr;@e|2cYU
zcYiZG`)D3h30nc{t)h=-f}>7cVY8{IT;plA<=^y+dmnozrS+Z<el7L(a(@1Mu8&XG
z*GUS@4Vw1WGG+a8Yme7jc@Jc@^It8Gda9#qVO!^?s^F#6k@HvS=J6ht>i4HObpzEy
z+ixpgef)j**2;{&B~m-BYt7jk<h$)vuBiJm`EUJxK{i)@n$4`78$KWI7kC-@`@Jp5
zZxqqY+u5{wdw<dEzKAIwtb{766MSAiNxi?tabxW97iEnB7q47j7w_!1w!uE@e59Pd
z-FDu;f-|I^on79)&nat$|JEA^793uETAy{thJW*p|LC25`_n_|c0TKEACKmlvp>`^
zXO0cl7rylAi+cDQW}82eRXvY6BUpKsPb%DM$}lf(S96kepK2*nOpU7eQ?Z5ntvV(c
zimuAMcJ}=a&2|;uNpGEGX1aVTT_c@c#<!s=N4qUTVwUa_zu4c$&3}Zyer{oIyzq*j
z>SwNo?G{hdik4NppIUsx{6*Z`h_febcgk;j`~0QDyS63oJx%6q_7R>E?8>D(WyVC-
z{Wgz-USHpTX0^YRcxHUeAyL7aRAa4+#-18edHH&?r4lM9Z~VGA;Mk7W6CWQA?>M^X
zyPe~u9TQo8R46W*c*l+H{@TaZ&(?9T>6_ob{><d#iV~+wzqu$o{iuk^`yg}aqHV?e
zj)T1)4;wiNO1nS0^l4^WdVHM7lRUvLW8;e2gcsiW)~l656%>q2e=HMt8KCB5Rjj|Q
zNK0o`&?^6phBmMMFt>^w`}14<NW-HjnK~ucr*HXxWjbkERDF^7_wni5&stLqg3qe&
z*>cfcR`uKwE58?_bvApoGc1q0`EA|Of9&c5-JtD}&)8ROS}yIG!aM&!#<UoD&!l&0
z0uP?Hy17kPTWDB2_wypj<#$s2mmM^{zoqYRuwUjnC#C~}`7TEvpM2Mp%CgDzLt*lj
zD6J1>4_xP`sM_9+Wc!%<OLNi^!&}cJZ|r*!apHa3<F{cS=buk}J1Oz`{#mX)YhC39
zPt;w%@x<b^Z12{`>P|i9ue{q?v$No^w!BMCpVpz8Nfi#kKOb1tUH7fJQYJDX_REUf
zyLYkrOD4>SuXrFdx7O}LSD+{Jf%XcC>f(pX=G#x6F}LD&$QJ3qP3hiu_Z-}3_Don?
zxG<${b?N?4v%tTF-<|HfxjQ#JI8uxKC9gun@(#@?W5eyXj*$limS;WXcgo|xd-(B(
zFYiCwpAnaDdw=tz>{5%%cl4`n&HVD`@3*izi|mVYWDlDM9?hO}+iI1z!t>h;x1JPi
z+@kmQ^~uC1^Zv(~i}t+Lzh!;G)Pm1Y|DHti#2<IB3-6ky_-6`_t@LT9Nz4WJKV6St
zUN|#EeyT|K2Bt!Dk(X^+-mA{M@{eC^yz!M*dq}iO(u9<qZdz65Zkt-z%(woISJ|U|
zZ};QXiTgKYd{#N#bw=swiA(K~b1K$ea?%WCy%DsAV_t|ty88UN?4eV3n>`oXv4Hc)
zrp)@X`DT?lXD2XKh2JXQ^eA?9;ic<Wq(y98)t7zJ+ELN)_2kO;C%HA}Z~Nn7^~$m9
z_m6KGlMm0n{PN~>k%f``HO?L>bM<CkT{b;KX!|s~NXaU(L@$>jtqmG}4dP`<4fFmK
z<aPQl|5fljbWz$prw^~s{+*I^zDsuXZ${-vw}+FSmkU_%8U{VwY-bX+LERx|_qj9d
zyT2S<e_@W5y#DDg<-R&$^3C(+m+;^H7P)cD%qpIET@QWRrzY<h1!R*$YjdY2I5<gN
z`26*?YMW#pql-nnG1K8w9TG?RCVyLgHRWj(_p<w+{&YO)YHm;5oUOU@jN*R5B?o1G
zzJK@K#zaY^?tmxnnYb^p`<kk%^J|muJ-EKCqLssNs##lqQknQ3mwk#U3-7U(Kd-zi
zvgqssPdC1=z01R1tFIKQ?ai&abi^aw=jqq$$N4W!`q342a?2fah49kbSJy{%Ra)H?
zDSD|MY_lhJ?<C`nTmKm|8IEairRJp+mlUNY=7L!HNm*Qm78VKy3i(M{3N|)e`h?~@
zBfUaBLtMdgo~Br*JdMqvGoHpKmQ<SYw8VX-bvEjJCunvPb-vRQ$#3xaPE*9a)kX@I
zMg|tJ*-w;PtPPCJAUjNnxW#%4Ysi)C>t=qMO-xF$MkU8DD8ycxJL#~&0RiJ97gX;m
zdU$FIUAlXh_mZZnqN=8>eAT()bHDfe{~vXKdqnn+*xm1b-}-&aTz2X#wb?C}cX*Vz
z+ZAs#yqV*~pqZLlS;wHRZf>ovF0Lj!S4<?4`{(T*&*jX8B~6DCo&GC3oDyVmvbnLu
zv7_B0)q-cigB)&#BIbq~Cx<#kKR*U>_2m!hnI85zF=S5Qz9O^W3|~OQVFkY#B|!z%
z<?bt%iavTc<9`j4#6cg11q&4HU(YXTXpuc4$i;S$;gmv)=#h61T?|f$E#PE#R^<5p
zU+bVoPOHNW?!tl{yLN4AelzFB!@g;YeAY08YaHTQz*yL1vCH8M<9<%&5Qnk}`)6!S
zzQnj?%>uvro2C!NIKn3=vwTR{(AuPEu)LioeTL-`!4Cx%4#9Dp3$pkd|B9~p63(Fg
z;Qc*@hBpW5PyL<ycejAZH+4xCw!?4VI2x2|oDoW3+}g?zk~;N<U>-*p14r6FYk`#4
zEcGYYcQ!28rm(ra!QPymF-7$X;{x`k`pd;k)=qB){oeQm+`cbjSvS4%#U`FJF<g1+
z?2U?Z4C?RuOTFS?wBK@f?&I|*Zyk8B&fxt1MpluuypOY6c5b$9H{*HrfM??Lf7VY9
zw)|XwR;Y>LLlM`9V(tP)1wMuj=^I^-%PV!ut53+Qf7t%Bv2puy+dFazA03z;@osIf
z`E&S73DZso1`hZ1j_uF?m;5n5#KOe*EWm&%fo)^UA%p*G|0T3V{ArbMd(TnIEKy*W
z!O!vF&)@Ior(bN|bLOEz^!NJ1|IbW++}pKi$|{r7@jd@PdU_qY%P=p;fk9eaU!8&D
z2|LpddAmLTcb~HV^Z)SQ{!m_)zrXY5{1=<j9(jP#;oN=;8<Y3;HZlLEu|B@9eVFCP
zd*zS^{84QT691>}Q&iVi|M8Ih$NxPH^+Essm;B#->c8)=|G%9!o!hpp{!UN*pa1ga
zC-|~n|0_SxJY}vRfA&J2`Ut)o|M{-A{@Hr!ltA%{&3FHQJEiQv|5}l8bIk+`=?U#~
zCqLJ>zTzqNip?;*S?NGnJ?BgN%@r1h#kiVR9GtsgfBc+w9lvw`pH|<n+Hm&p>PKG;
zHtvs6Sl%w`@<;MrK2K%DrvLled3bot|L^UM*;B(XVX^WF+0Tvw{2k&CIBO!Ji#u-1
z?`5{QkyvoVnd?F0X7d9~?>c@~pQ))~;5&JL*?s~02Ip7tDhv-M{A2%E%xLlCpX(k5
zzN7UQokf>|h^HW8YW)NT^9JY7@m~a1{^oxq%2HrsqhGe5UdQ2FJHzbyhs_R_3ICbx
zD(3z_@c$L(jhh!gF3hZ7^5?>a{}1fXi?TdoV@y8hd-&jbrnTBkv-M7?oQSz;=GG!F
zs}ldBaAR+Zw7p}=>7LnZj%6-eepXxT#JN(&)ZVqxp(?U^M$^*#Y_4l-uD(-w?uJHc
zeMHc#qki}2EBYU+o;Nwz|M3;Y+DpDuYBZ-jztOwIP4MF$UgtA+Hbqb7JKnu;QL)**
zsdE3jb@n?2O!o4QzB%1Q)v3sF?p{+~m%Wkmud%(?G<1G8E7s@0caOsxRHpJ@={lr4
zeMaHBrRT$|*nf!??$)@a{6{3_k2zmvv)~S+^}kLmt-Rn}Dz<q;zR~BHGW$IrOsad;
zHIJtloD=!4TBf`;x?KFM`I3?YdB$0ne|}!wxBc2~R`X1u`%J4feiXd9>~pof%B(JI
z+Wa57T62Q#@e3^eWt-Qf`Or?}e8tY`wK~_2c*bSj4(;H*5T`7DaZeLttDk+snSiQ{
zV%K2NvpiFh@_4QWe^Gk==HVw@xeM=K2hQAYuJNJs#g?A`VP<tRh3BR0{Qb=D^c;^h
zr)JNz@cDEs?UA?q+!wbES2`A45QtvkGHuhR9OrEZk|%5Ysp4~V-0J>PYU>pL+<qOq
z>6_=ylKz>TEOJ**{B%b7<hx}vdjx+*)GYS7pSo|8-EsYWHSJ#w&m7;<c=6fX$v^my
zsmmvQeVSGGB)olFMc(u7ZI-_0>Q0^$SrcO=?;Dg};eUN%uFTI8ll@jb3x6DCTjks)
z#&~SWCH<4-C61{t7G6+}jc#gw7QV*zrq`j^EH#Eho`Q2eOkaBN@N~&JO&0{#zxyNq
zw(8H6EUBALJi@UR)hvfj%O(~ob*{a!Db4-HYFC??{z0KtwolhjJis8!e5i50RNMKA
zjxWmIPsEiYPJP_FVH#tP!%2=(-l~eg*ahn=0~-^)9KLQ^UNUzwJHyXnv1>vW+>dYS
zi*~0?UGrG&SkC|R%}xGhf%!Ael-RDAn|E&x$Fy%Bk6)U<dhvCE36~b%$?e-UA^uLm
zj3dPhE8->>pWlD>zWkpsX|bNu=PqPQv5Rv^9^<-^zt=oP$S$f@@LlMETAg0CBb%2M
z$6kBswfn(@b<<w5tb2Roo*)0o(@Q4*49f6a_v-8A=F=agTYr7|)smwA<CIZljEeHR
zc`ko;KkUx%PCoFLV<*pf&P&;jk9^nhe?D<KL`e8^dZ@rp7nQo)l<+w1PmW@_!BbN&
zz5cT};^B0@d7EF`PS5ZEyy)*YOCjfz@d68uvOQAQh`axet7Iqtn=?V@zh~6%I-KD7
z)^~=uRvzD%vqlHRop&Ad{rqZswd$TVXAJFgIjgppH?VH^I_x8OsZ?^+tN11R^j957
z+~oJqWZk_jvZa&lUq=0XC@i|fPUlgm>aR6xr0nL$v>H`Sx%=9@>U+~GJ&k94<<WnF
z*nZm7W=igIyAql9@xTX@4X1o}{Ly8Xy?vhNQ|glJz&EFUh5S0WdDgNvljes%vO|{c
z;l85v_u)UYRbeu!-^6lehIV*P3vrvT{KI8l)x5Ur_snL9?ath5+v4_p*<^#1@83$6
z?N;$_m+Ut=JL7HdoT-6tp60G7TK-d`cIIkUn}of;e3y1cd-Z08eLZqCdxzg2E!h&c
z1BXqR<9C?v(3J2mZe8*H!sLrpQ(^<1?LURT=4I?H{&2qKSKs^h#gh}Hl!Gt7ciufk
z!8C98+TiG!<^D|ew%3=cWIqdfS+Of3-MxbULk#zY=S6oUH%-5qqrLS+bz9Lq(~})@
z!+*72?@@mt8s2RFR?t$gkX=u0l}IDAV&lga%}ZC5=W3Y?Z*#5R@>Hez@VlRLey@13
zdcpd3v6|Xov(gL;VWX#kyH<bRtx?H)Kydrs;2WwsPdP%@f8Sgxu`WU~qG(~p*W^#@
z+n7ThIm?M&&v>*fw2p;;_U-CWSN*a}e5^ZFc0ClaD|`J}!BQjY;M<4lfzhYue<?3s
zm%5XEq2uJZgL{H@rT9cn^!#U87k+%<VdEN2y?e`l?6irQv~bZ4jl1#3+Wlm@Ui8)M
z;}#d+&HH%<pT_}fce|U@wy9;DS!FZNQ(ft2;9bq~(@r=1j!%=8pL3;R*<`zS9kLVu
zdrrS8!#l0tW42b@T@}@7+xVE)1uR%*_TK8Apni>DW8zft<p=g{di+e=+(gmdQ)6jw
z*ae@H{h=FAMeWr*`pR(r>%R??O0F$eKPq+1v0L2Pvogc^&Yzr+fNAARy8C>R7Uv$V
z*IaUSy8Zfv^{Jb--I1$y{&P7ik>k-n&C@9*aU~H8{a<r_D^HeN;}*8)iQp@TSt$~s
zrJvW&anxo1DW)0qtcWq^U-WVAQwOUqMLF3$Qka|b(JKF`w6)*E*e==72Bnl{MgFKa
zvV{(-91gBsHfzN!#gn}19`A2nG%end{_tqo@3u$ld@Y`<Xf^I%bE+>XELdF4Gj*NM
zg_~<uSTz6YT;-Mg>yp81%iA*_=q0|=?pjduB(Bs)=6cot09C8kK@UT@uM}FdXl8#p
zqy5R*v)*)K<DKiylWm0Nc<)HO^C>@Q%g2D_dPly+>CY10x!|1fwu!TSt=jgi-LcB3
z?+~~6o)yhMwBH-HUb?gPh{*mI5%X>CC2DRdz9ph{gU99Jp9O1uTW;Nvb~zU(FaB<;
zLgF0;Wge$zt)cs*-xP68Vb*>9{YcWT!aVN9y;^Dg?4|E7YAYT5z~-C9o_G4w^TpR^
zcl^<`%5wd-`;A8EGn4L%t*=VtIm`XHS|4*9T>q${pY_o4sgv#FoF!H23(Y?(O4+;m
z%vg8j-VK9p$?RF3R~8--Ok4Z(&jHobnR_-TrV5>?a<sf?ZSXH=^{J~atG)?#di7lR
zv235e#9T{;PRCC?&)-yj_~Rxex5234{evY>oC-V^=Q!!)=ASxx@Tca!=`L@5_PRT-
zKeenx(oUaors2QouQw<Dtg4@KUEV(Dtn;tV`6Xd%S!SqBJEzhwwEVln`@?@*i!}UZ
zi`)DNI9wThKi}<{y`<icDD9f2q~@uXiyJSOYizkM@t=7~f^Lws$s{}N)@*aPw0Tx4
z%fF>;I>sk6VRdoc>VJPv{1+A3$&hvQ*3%y{6R&OAptDBxz!uv%5gjpA&s2UDs_gsw
zrkj6;O;YXj&u8!H_%4q0Ix@9(r*fxi`GT+BQ<qHVsrzwg?RufDm!4nW_2?v%(T!tY
ziUhasySyo6qNA?I=NU;7&5>*|Q*7_)<Yf74uCLF1uc^y%DsSH#$Josmeu~x3yL;&J
z<@z(s7e43q>L#!HQ+1>%?_`^qg}aSK_&J%h?XS*CEbo>5y(2Yb|LeKiK3444Q1g!N
zJLDbtx#Cgau4$(}ICU-5Rh+m_ewxuK!Pg#7&wYPY_|2-W<=dA(Y)yRJJ6;w1oWI@t
zs#Rx(;i(w61?y&bJ6J0VrG7m7>UQ+{qHfDR)0+~<n@+30FElBM$-5^xf8GMwX$cDR
zc`HkwZr;0nerfgI`s#+L4&kYN@3fCK>=RAA`O45cBl@GN-IGTJ?Oz|W-SklPjeXZ%
z)hVTU^U)NS+TA@0kC#_Jn)s$-=Vrglyc^jUrHF;NJ=tu`wL|{6`jUD3_vsd^<=vPU
zq~0S}KD{eb>tg9F<v)E_Be%K9hdoqZ@7ktq{U<DOKdVti(`V(bd25-RR(~$M($=?v
zX>s<%0{e?cr#<Uwe6R5}(`D%a*BX{-cZ#}O{_E7gN?&aB!bd~T+~xntJ+~iR_~oY2
zZr#~>QSn*d3)W4|AKNnTY`h=p$}aS78NYMtF7s6{Ils$B{r>h*<?%DC4Fy$=mzF2r
zP7XR8b?ED%oh&L2%>j}c#Xm|uWbjy@x1asZ@>7r#!#``^t6SEuVu`eV^u8-vd6o3Z
zYj+DZZ5n@Xy4&jfqH`{z&%<Mzy6W=xir&!Q*A>k3q2htgdFJSQ_0yj%bKR(z`1P^P
z8PyE`wbR&rxfj%Gsc`PsQB|)O&sqP?_wL51Rm@RSE}3U1KT&w;>^Wb!K|ZQz_Q!i0
z!hF52UzokHQG9p$bIS$gaaxy^ZP}D+4n+L#UGP?L=VafoZ~Q+5tEMW1J~+BYVqf%w
zh)c74zW#po{3zSn6LYf*CDTi}7Jbpak~ry~yTp-M5BQBAE?3cK-&0$;^sm{QC0m7O
zuTk4BTHAQa$IP~Uv;T}M=jL75Sa{=6m13FvRn_~Av)6alJPzMFZ)U_+-RP;x@~$^!
z)LXZh>F!&+g7f9{ReIZ5=d5d3knzQgXU<vnlUF^f&nNMniuvOF(5&eT^X5D0Q-7%L
ziP>DWm#NSE@V?t_HPH@fl1futuAEn_GHX14Pxs3#d$ZKyOMm0Oo-2_)TVT_)@OfT!
z!Ty<9zT2|0bdD~HaoCi1D@kufwqgH7&Xt=?TBB^UTF>S9%-M0fQT1HJ+G+leUhgta
zb)5d4D{8^43)ya4+^;cyE;_??Pa!L~_owINGg&NU_2q}Nmjr*>az}mlyi=!{rd&EB
zDz!%ZbxBTZx#|w7%ifpwsV$DolDqrL*-ZL$24BDW)R`p$Obud>bq~!gUc==aeRRed
zjVVd>EcU$@f8~W8<Tjtm!YP|+n(fk2wbdn(XWg|q2UK1dd^vnVcny<h(#)5?7Vrue
zoK)_8@qA^Bo|b-9PU`fat(uaruHD^h#-1|4ZvMlwg_G|FOnH6!ko~MOiJR7mZON^w
z7fk1V%dgP!NZ$HEu|36K<g5DowR`HDFQvVRytqO8Y})!;`ZBiH1Vp}^wSKx<>1XYH
ztG(Ygzxle)?$B|W^RJf2?Mzp%+4okec|z3*E!EwZ_uAj>3bER;MJI5kfBqT8U2V2X
zY7VD!!&K}R-^|q9V>8z*Q}ht`(YoB2b6+xig}=8t#9uxjJ?oDar}nZ>vWb_34rean
znB;r-{FlPdowM|K)5}Xzx;$T5Kg{N7ID3BI(-+&9*fa%hIU5|vQslqnx8>KnYiCHX
zZ;O+a+~f6UQcS#AnQ`atr{}ab7nSTZT3USf?^geV<~-Fu_WWk~n-x1XcOt7-{%?to
zLR}pT=dP95$$dyc`Jao$NvT(RD?=3b6r~#M@_X%fakl0B^FjxYNPItWwlVnQ^<DSN
zuD^YB!^e1$#T#WMQ#-Tmoxd#El_ogf)ZbU}>*#{)$A8v)`*_&1+IL$@?bKW9e@)-m
zZQsRv0UIqhoa`vQCc5mR)8=zirgB72vwz&{xxUa*W$A>K&o@N8+ncibo9QnetG~<H
zo*b9%UY<U=T%x$CD3<S5%<<_tw>=K16ui5w_SyO6tmQXVf~0e$#P{fR%{B@Tn5(*K
z^{%z2f35ly&c|s{s9!iQM=2>k<mHc2+eiMBzOAi2WzDxm_p9tICi8FGlNOoYJ}JC<
z8h>f~$5!2C+ZL?yb^g7`va0K%7kkW=yNjBZZb^J8;&h*{JHGaN?Hne9-mM3xJUlu{
zH``rJecG07zDK`K`Zjx~kY2&MtiU<y)(STli|uq26G%vWuC^;T$6(&k)ca3=R{5pO
za@+JX?v(Pmbe){HhM7N}xL#x`XJ4hBYd^27`TW=EA}@}KSo5DP_~7{7gLf~-%2=Ia
zE5eTcWO}`L?co!K6Cd{Jx5~$PEESeYUmKYmo4@YFy2vn@tCg?#V{U~xFN?K^nf`Wn
zvu(X>-<w%|W>x0P)IJx42cOy&UQ%T2w`gON|D%&nR=RT?HL~w+;5#bby!uQvTgr*O
z!HcgPx-!#rMrOL&L09v)pNk`Q$bM4XeEvq#?x6ec=CA1G4YYR(*v@@EMNQ+%ZuOk6
z8>F?>ljCOTO_}G{bzEno!`V&Rp0ZNPIyrX)y;Q5y{HmT>%(rOv+4Pj7?^nd4_+vu$
z-amu7FMGQ$5ZU;o^y{UA*G$!ofBX}DxY1Zz`|gM9XWU!1rCfPcpk{w<)n>C*ix$n9
zKY!vSF@u8ncTd%J$gQyt6#sQ+zGLJ6H|)>9oR4~``ry{AMFHkk-6wb-zsz~zx8UB-
z;x&g>6}@}EIj1ckF6;K4O?nr6{8XkKbl#~Pn)CnUQs3>0%O`*0*5{g$edNxAB|S54
zxNdDo_tE;ieZjc`+cjNZV*V`oK6{Bn{k7EAzQ=z8u4?zLS~PjZtvSn-&c)nW?{xgh
zjU&gMZs^K0F1vZVf9=H59sBE7UEFTHsBqaz{&1t%HKDHOCTj@TwsIr}@p#|3vzq6F
zz}xFjR`UqU37Ow$2$j`ST6y>{>xoY<W<Ggd{^-c#E<3kp3AYTpY78GdEL`!mwBqxn
z%7o_Nvn`MB#@t(X!)9x7&EL8J-{NoDA5UmGygYH`O<Gz-lEhX?`Ndve_HN(FXZxim
zXX=!`nSI*@{u^umJ~l1?$aKfK7CVkc3e5N$TK4<;{L+X1CmpBD2rm6rQX9Q*TfE&p
z{R9K+U}0_k$k<P+o7dfcGO6|9=TiNrE4rhi=VU#2_E+g@*8i1Tw%(s>-XGg){_^J$
z&e@x!RnJ?ob#AOR-fu8(MO$~??}p8{=g)mIS98y$;G^=rFMC*uUgUI!e{MEVi<^|#
z`{GoO)&x%rLxUEtJ^hga1ygO0&uZyBe5_ivC+?Nxi-$L+ZAf*JIpJ|Xz4gzvQi&fP
z6<33jKBngv{%>+v+{ss8BlwV^rLz6mmlrW_FYLR~<EwX1<<j}L6&qGP<%>UH|7F5d
zwW}X~l%BkxGeO)qB{{IAjkkLBk^Pf9v)`3oU;Nfe$5|r4>cQuq8#bJ5V$amraV=9<
zP37TXS>e)O5qUpXhqFkhSA2}SQ_h;z_~u&vYP0i=^X&7V7&Gihzxd7M$w!NXz!kTe
zv}WxKQd+mMmUW5B?iU}YExBDWb%(X~c@807<KoG)?8My;Mpb!v-oHK3_`B)pNZpHv
zE_2`FZhmw`yz1k;O9ygU4lbOL)OlKWLCuBFdfCeo?^J2(KFyo0(6VcO`?=t(>%vcu
zY})P6yF<?E@2l2p>Zw`6i6Ui|qPaJp-25?N@x=@4)?H|E^_wc9D#myFm-zjw?BBa&
zqrQAdH_+w_iuFI<)>~R0yE~7M`^wVZj$rHBBdj$N_k-{6mE3>TPyIpe{{<esHs`e0
zmX<eh`g)bAl`i4hHZ^storvDotIA>93nu@%H)VnPmoF;4d56B`I@K>eoN)Kf-5YXm
zE`P4@*)(_BuCNOmH&kX%|M+4av#u4VpYvSNPRH_+BBT1I>yx!r4(-aY`nyKHI6u6&
z?C$)zEAD;SclDsNq~$krX?>P==NC$GR@Lw0t1Nl)+hoS;o`OvVVctyZe-!&&K5^jb
z=IJvt4EPO~x|Eb&e2|{c<aFC)>h|kVj`sR`th-L`UYQ%Dvvi7DvVnTq`jz{8j@9>6
zT4r_oPu@1URnJ30|7Y0EU6JS4pDk~%-czw}&HEg2HRnqYvR7?={pIL_U2ORkcAvF>
zPUf0=>FG+9j;~U?zw{pzKUW#yzcb`2v%7=J%;nb-&ZZR4(hr?pz`VHj)wjd3?{{SF
zKUd!0Qr65j<2&ca)psp7mPPNaS9|}?e&6ZoW=XXta(?Zbl%k`&Wqr=_<tP2`b+;_>
zjd$wX{?SZdw6uTyt*pO`4l5~`z1cJ~<j%U?mn4${u64??eM!Bpz4Z=<sQsTEUmth(
z?z*#sYo6cbdA~xlRXnl}_%KvD?_3vg@b<hz_qKnpe5}XKUCAd{5?#DE^ztvSm;$S#
zA7-om<NWV5$?3(_#up|R*#nKHJTQ;A-mLKQ#*^lopI)8JDD02i64LIuZvE!zPbYS+
zo$T2(&+56^+n8lJ>C98V?d7<;PqlW!?Z~P{dvm{j(pW2X_;S?b67DRnGZR0?w+DUg
zKi<XpvgwhwOWvw?Zk~sVtri(rF@*~~7kwvd@_Ci|(!*>rT8kEi+`98>?~cVGrzUUk
zm~VL_qrPMR3H4vo%C{|<+i3pxmf><!SzV@;MGI2*EX=Gq@uT|6`6oqhicC{AgtXSp
z^IrT(HR{RF_V6RSDp_K~-t}zCJz=|}XO8DKUa1U**^ktWYq>5?y_cAEqP@vP&8+6m
z)MX9cVim#LTXyYR&{6Lz(_h{FK=beJ*LQov`3`<j2%c9gc<!i|mHfKrE!S&|g!G)2
zvfN*MH+;<m@m~^lp65P_Z%B&#tj(s8*RxaCC(0|yEs4#A<ALX%RcDef|37fyTk)-a
z<twozr$0?Uce3-*DsL~x**3d5v~sL9%D1XL(Z0_8dUeD{v$JRK^ha-O{FSQUc`kR;
zpQK5x-?*A|bQ>lJPP}#E*<7p63Hx8Ey<~fPUg2T5O3%&{xlu>5+!t4sgoMA}$uTFq
zuBk<-tUczt{QiuS4<gsT@?U1OynNPUOE<1VMTUD1@G;b`DqU`U>-j;}Z;ioasjjJp
z(musae<GK&sOV&ewB=;pY4)vJBok^dL&!epu4skI>E^_K?wPY&UoQK#nc?svVb#>P
z$vN|L*Za=U+%kXD4-unlkK8IhUavE`H2tETQ9$FrMai~8_JM-;s$y2eUetP|zeiU4
z-7Wp26JDKunR+I7kBiURg9)>5FVfuhqbPs!s}-+K-c{IUeIa`FgVHM}PAlq%$lT+5
zEC1_W@549tiZ{=_UsrQ@_o{?hy=TtPZac;|Wu~g^{fnWeUX*h<&6qd&`ujE`4;$fI
z$Ie}@4K7X&{mwJ<W`5^aPJ89IzKi4Qs{6wPau(F^C`;w^vGy!amAVr*{g2e_e=oI@
zFM94~-MHr3!NmvCBX4xEJ}viVo%pg+a;s71G9#;3Em0DCZ%nJXqaSKfDx>Z!?EJ%S
z*`bS(N}`b~iW*LTPq({c@%D+#Q<gLL4`d}iW2m<aPdYli+J2Mr_R80+6H8Qmu4!9a
zW*s}OI^*b?n?LPYZA8~@<V)TcmvC=$u%MBbYDY>>L0S4zUWe5OeMMg+^?zU0FT$rU
zW}r1`O|eHr#FG;*+zZz4-RBmh5u%o$a%<A{DxvM~C*)WZ9&CRWyr!Qyj>GCv-v5NV
zf7czZ{Alg9Z&p$D!u^MnIxKE?%{lea<7M(c0sk}U)(hD-R6dHnw{>DuoSIuflR$8r
z%2uV#&$2We4ru*|DcrcsOhh-~^~MILt66QK2h&a`UecR>&6NG(&Y)B7C#`u`bYwPv
zFx(Yv7ww_by2xyos+Y(9c#X9YD_pysJUb`*nt$tj>Ft^SUCqDhxrKV-EiYy!$@VV`
z=SAfhuS%_csUtO6)}lG)d#C8Wn9z8O&Y(C$m&ZnbU!9%HDDixyrn~mKNtfpC-?`(e
zbwyr`#OcoSt@8F4D)$$=zhF4ds`Ig;HD6Nu&p!PmjRdX98cS~+(qLO(<huW&-hyww
zGnISnlVYCToU;EUgYEtqx)FURc$b_x-*oK$0-<e2lD#t=jANCiJYBdbv^JC3UUTcz
zDQRpeITe%M-rP}ocaH4x1)C0?{q}Z}sO~Q@=BBTa{NGY`?szxx(YgI?cS5fC&U2h{
zf$P(W!u@T^?Y}Oql`?ABJm=Vn(2xBxbM|)lPZN0jRyaKS=FzfkzXdryC#+jE_aR?P
ziz(OZBeU%eA6ox-%Qsia#4kUq`?jq3Jv~^2`IXfB-*rX{&xuy}*&P4C9`5*!GmS?#
zXz5kIYW46h?pr4@NA92ZF2-%@`SVec8#64MpC8D`=QX~&cgoML=ft|CKW|lzVRBDd
z6?bey@OE*_-wGSK#CQT)-hJIOpPTKq>PDw?$$i>ZkLN`{w`sKw`!bdB=Kc4wcCFSt
z7a|^Q5b7(n-KZ)2;X~Kgy$3FZ3ZAg$jIurx?J#}g%Kwt~Ien)*ORxHrY&X;LTFB1o
zUNAZJh1Kz>{Q92{4qj@rdw473(dk+}0hdYrdGB|+{<&v+)cjt;wcPKUdxDkRW%JoO
z=B%FkLieCw`{U~oM|R&^5vKl5`Q*drs{}Ll<}6FOZWOVv+bjPb_d@~p;3psQAFS)E
zpJXpozH!<d8*a-38}?2)T$wm^$+Mdq{_Aeq#Cg?Ya@Ds6t7qPhMgKz!UVk^ad0BCf
z-m>*Qt7b-D<IL2NsFbVVSuJM9+rQ`>ziZviiCeh-RQ<kJ)pcO|*;nkfKYCv`JiGJe
zW4ZaML&dLGELeU(JM-oeo%MNl@&$eFRxs~aYAM?KI)0UC>YkY|YECv>{<rL{D%ZZA
z)Fl}g`ugWBmQ~Z=;3x4{!Zo0>vQhtTh)h}Csg)hCp9iI}EZ#ozndN1>o68^gAFTPZ
z(A{Fu;V1XLOt>NvyZEnJ%&wrt_gSCZ^z2~oyXeEQZEm^9IkWkZAMKmZTh6W!*qgnx
zzV}|o^9kCSlkVm4#u|E`sl0O5=-7`p$+MXbJA?_ZefPotW757aC0zIA_f1UK7Cxq{
zGVlG`ocKp}W`}0<PO>$5mlD9<?b84I2Iut)ze+yr*4g{t!G4{Vw$|F+Htr_LY+dIn
zz5i~q{vFM)=`0y?D){^KSq_D7f;HuO=KIe5T5Z<EV{!b@o}*Q@pFYGqEQnbjzw*?S
z)Cg|DTaIf&pMT5CSSP-1>dvU|Dk@Ey>3$P)tTwp^6_myQzV02KKifEX)}g+49cA}K
zlOKik+lzl*{b|Fa@XuyH<JyjAYFC8KeI}9K_iVn1QsLxGm!c~XPX#6}HfU<fU7h*A
z%c0K9Gb*4xZ^N;<1~;{w5}2~j9Wu=6zghcRRVQ`6)05fPltP5fx9Zww-}ajRe}dU7
zw`$!PZqoZd1g`wwANI!G!eUikZD*j6`Qn?W?MrNDB%fW+6a6v#Z2bw-?U`Fbj%V$5
z==<0^yQ1eCOP{`?$|UXBXBLi6OZTqeRQ&c#ux<XO`wZ@TMeQ?{?Zqav%vl~eHPo1A
zw)~ML`*O|nR!@=k5uSE{A$|?-!rrsopPXWEAM0KuaW^~bV*7#bo%*X<TY_h*U*Ef}
zVS32p4?jv0rcSm=n>g40t4i1%&n1Cdzc1U?zUA7#t~(7ES9#i0&VKg!QFd3Mtw34a
zvFblYfhqTw&)vv)PHfZSIPGuQf<M>pugVX($6-B-d(K~pFqeSZH|xF{2&l5DTs!b_
z#rdh(uOfB2e*4>neqY_Ur}S!DLy+2rxjf#tN`*47dYO6c>HKuOu5gvPFq`>&l{KEJ
zYM!z0_GG_Y(yO;F<Xr8)n@bdSL`OH*+qkVuzNnt(6v(4IC7i!0@JEl<lUI9x_1+A=
zRj7MWF!5Z-*^l{hSGs=AT=3(e>ejqjfv3H@kM>`<7t*HkrNcqR=AfnevBxZ%*7I#p
zd2`fym&W{Xr%5SsC0k?NZti*Ot17!fX<eg#!@a`!!JF@0{k7)U>#|LTO_S?hT<u+X
zC9sD-`-IN32`n*v;Vgwd8>837RCvCdQ58^Nvg2RXk?x%PZckQn8oyP(Hz)R$_t~B}
zE&B%Rh*fG0+x}Q`8MHaNI{MGl;_--AQurF7e#6dgNk-|;uRd$e?sxjj<#H{b`(C${
zug^mkZjJDXmpWhDtS+oB%ebEXzOUkUT2j`hIrB~y1+O`I?f1*)Mym@-SD#=sjQdvC
z_Ua1Lnt=CmxoOGw9-Lf1a}ndRi_11PUgNU4c$n$i>!WAhO?u4PGyDFlZDDm0e#r)}
zIp;31kr$d1ZG87`{-K*Mg8$rXvXl<5&e2g!j!>OyWfd<Fc<Srwjz3de^e61^S;Hq2
z-RscTcTf3{LeHz`UrzJ;sC{#r8&@0Cpnb@5)ydp)ce!H~Qc<&Z+<IrqqdN2d!M4-a
zrn|2{x#x=VL!krfKl?;wm`#trvSgEB)&slG%|{DkKSePc9-kiTuqgi_^L8Ij$#V|_
zno4g=nVNPScYWxsUlW&nYyGR^i}hnRd+l5!y6g;R?XEqiHH|V(8@koUYuvxMSyezu
z`A1k-viRyO3GJRsf=lmRb~yY`!1`jq+>5mndH>HAYcO^xUh`*3#Fig5Q$rW<OyGPV
zdtS|U%F`W_*HkwZWz71nmj3FRn#}qcO6SinaxeewIxkz}$&CfcN8}p%|82=V^WILT
z@Wk!)e_!<NdGz@1sZxtKR>yZ2>#03!e&Tj6x<&DN`5z(w{QbA`bh-Z<JhJ(B=SBGy
zF@L78;MWX#*OqhJPvhtQet&Lh$z$K|OK0n?S-Wd(+76HVpLWi8_2%-A$^Ts@+~An?
zndMpY-#a{0cG&%&q%UFHc{xj9aZ93P$JwIq@?W%sjOJ?Zf46Vq)O~M^_8SI1pEDsb
zPvvGke@A7C)byf5t8Nz0GhNUspL2A6$}?Wq>6b;4%`?nRZvWEco?AW7;ozyyUwH%c
zUi{wBdi2?4qc7`kvYic@c=E&KyjLy~*OGr4uDvGRI#Y9|-bwz=5-9>whR?Upn-R3$
zQLvY*|F-<^Ns~U8-pagZBqU#Ye0t5g?H<{2t+9ePy;wZ`wudfv*fwYV#=VL1>bBic
z#~oK6-s`2}Gj(ay3Sr)7_CnvayZqATiQlm2&tuyb^=_Wq>kXGV%9mZft=Ma{Ch*vz
zO(_ea<aBnVi(Knsk)4`7)m-RkoWzwS7vCJ8R_Eojm$z@)efAs;)43XpHBXg=9sId(
z&WDZ9ywb92?s#6@ao%aoFIJU?r`y#9VoP%LxKGcSRUupL%*S~!Lg7kE%_-Bj67M#2
zbgHCD2kYNks3h)jc#dW<n^FIad{x63bDl`Wg#oKB)%rPKH2UbW;W^Kisq<s%GS+F@
zJGQNtDt>;*B=xP|?An%uzW3MtxkY&jrOT!--DJM$!Oxec3&hU<eK_@Y_cO^;OF!Ms
znkx3sLyqfB=#o84ABiL$n$uKxX<^>GUAvD8SRQ8T-ST`to5c}_o0^`J>&z#%?@(=C
zbu(TpPt+p*@~a(N78oTiIALz+#yNdg)vLeqK5;juffiVzEw!{XKw6GSXsKnCpSQEW
z3wWueIo73?y0F7#49yLxwA9kV5a;1CPT)I3JoLTweZY5y1nY<ECxdSZ$=1))FGXF5
z30iiEvJlhK5XtB8g_x)}eHfS;ap^<kkQZW_8yK08dhkq>henWBvp&yU<0&QWCFPa}
z7?=<97&w<JD=wJQP{OIj!J*~h*<QlM#o^IW()?%fyT5M{$IramxBmIQckR8A*Bkur
z$)$1!J1QF12-Iz0S+HX1QZ=@QgHC@EHYgZM&sLOaZuq-YEzP*Ca=}B5B}e`j1$=36
zG>n)lB+~r#vXdfXsXq&YAd|u(p$WT%5)2eL*t-9}?f5i-VakHIf@+6u`2cst#Ec{}
z*D15tv){SM*{u8dyWoQ@kC_x6Ju0uPZ)g6r&VYZ1tO#d@qoJQcc#f;J29trq&4Y;&
z_v@EFm{N2o;f@Lm%bvY^e=b~?Q8%T1F^{<Z1K#5njK2&_&K%}W<Nw3Nli?hjSU=&T
z@Mgv~zk)CFdl^qLKIZ+}z!<^Gl*jJ8XrtgfkLnrh4Z3_1D>9j^@(iBHr=PXw+jAhk
zoY~=r;(yQY;a}Ff6g+vKuwt(4sjIwQUs{!A8QCqE*j}v2_>^2@u!lh;^Z#kVE{DY%
zJ_hJ($S`g_YW3%x4A+ViuNeb$4(xxh@U6{*JP8wfslFeqfe*r^-soy8zZDH!x6VL?
z&G*l0d(|E6XZWh$?qjM~d)?$xsr>i9kjw**>h^erH@0_KdL|T<`_GtlDPAu^^rO9%
zy9Ap6WA|NAAz`M3cMNBapYwbWUgaEbej{J`$#ki1g$wt2pR!pbI38en$Y=0IextqA
zD^_L$xp^BL{{PSYvE7BIk>Oi`HBSO}af@>2|C4>8hh_eqxbd+1KrI8e!L(`thCi>r
z&z~$hE$*9!%AxP_-|v4GHMoA=B<S+<pUpq)%~)Bd@IN@OuEFzxv#WuTgN2FhT@rue
zf4|T3xqnFi$zQ7{@-MvjLA}u`McDubv(xzkH*Wuy?zkSm=fR)s^c@ZL(=WIsp5$S+
z`2TR9Y6MG8`(KBD`^_JepZMSVWB;Z<`*-}m&%3fhNnrokIs4!KZ<l<<<^JQ}(}t&;
z)Y*26M`^q%Q}}=TD$BR@>01-N75HEOzin0Gf*XG)xLYMzo?{n$#?Jl!;^B*01@bfY
z>d7QO|I+SRf1W9tnbG}FNnpm0_3G@>tZe_M^X@Jy)4P$*+B^4#ys${`UB@%;AO4$^
zctiJhx%?>)>nVTNmx_o8vM!L53y4qBQQR<z;{pG{cWZ6WJU4&H$XKVs)y&JdVFoiJ
z`xN$%>kYfPn3($Z-!pq-n!sCMlHkDbadl^WSAFQ_&tE<q*!Fq0%8jsp)9UxL7|h^5
z(^pZ&l&UWIFh=%bMU1Nd`?K5s1aj4DKfVz%;eGN%Q^jS@l}FMZPCR(|jbv}p)R$!)
zU0aJcZ)^Hpc<%X0+y6^vS#RBUsJ*5<Buw`G4K?2wxj4z{H}yvj7&-o8Q@^j`+vvII
z%3@~s>4tr4T0O4a+jzL4*Q8<buftc8^S?!>YL#DAmfku$YSpPtrYj|m^zPSxm3;43
znY3Q_o67}H^meJW)%R|%nXqo|$wi7+OPv0k*gYv{-|Fqv)Ar2WXsQ=-S39S2wkenM
zI-Q$m7pV9IWZFa*e74zsC0lv&q5EM|gC?GG(4HSTzimhKMun$u#d@Dwb{x23`MdFQ
z@*`fUOW#>%-tU?lp!ibVNh$YX(#xI6Iv4vk{`(eGto2LLH(z~mwfl<xWgnkcPZziz
z-6mzR*^$xj{OPjh=3h^EAI&k2yEXIk$JtK~s%d<_t+`|G+XL78@2zsWw6vzks;kU+
zmXd1EoCamX%)Q2eXTQYW|Lt>+C-u6J=g$|mS7X9XJl$IqEo>vq^GKZSLEz6tyHa^t
zj`<bxY~SzpetNKh?TjB@+6UL!oHSHCA1S447W^!JrR;2(D}~8D4<4{y*8OPxV)mu)
zMQ<eU{>>GC`mScF0r$zHFWD;(Jd@WJR+GD*`1G4|-)GzZ7Yv>rbZ=vsdLqN$%`UdK
zq3_`j!Bc(tTHCH4=y3MiT>p=A`>J07FJkN5en~ezd-i+1$jQkq@7_r(M^rhdU7N(`
zpY!qb@s(Q>cl8uW@v<B%v-~BP<mH$2=&5u%J8NZLUHoSw)9sr==CMWh>Zh8R?TWfE
zd#?Pm_49hJN7Z^*GJWGq&MlkU^WJ}zquEvd>3VF-PJ8cIdh2e{-@PgQc@ah?E6kQh
z%dTIWdRl|gWy_4l*KVo{=0_(nUwODkKmA<7d+xB%pA73bJ02}H$Ox?|+~cRHvDYRw
zRMYS5v=7e@n$CW`Xb=BV)%3>!dz^2vXGPsS=V|sl?wH1$)NOf1%l}-;v;86ZAa`2F
z$}7*$eR|$;{DF_}uMZt%i}pExDxbey?rzkP=}mT3)yuRehE}I(Pj7zBb?BkRvVXhG
zUmHY7e{W*lR-$m|%vSE@3w;&`Pd{-_>{FWR?=uxqHNvuUcWv7A@2y(2L*R+Jb01!-
zKYp4sT_w^gMQ7^$y}f%^AAIFsXSY>l%gmKQc`*yt|9-eZ`l9D5Z@(>UudW{6vHeQ*
zsT+-z5!G*tRLzdJI{tO~W#i`<UbCK~b5B*}Mh%@6f*;rD?fG`0w6gZxk^cGn4iwJ3
zY3cY+E4J>yiv`!6KbA=R4E=t1-%h`HQSR^CGB2ImRua=vtn%^J!y?UdkKc&4x#&Hg
zsIHn}Bk7VUS{pelp>*ft?GJfs%nwgZvvksBtnX&KEiWaIJ9$p`_nt4yuT7RXC9pK;
znA|o0-IKWAe%!N1e4_rf*CJ=WxU?9pW8L=RZm!d7X5L!HLp>M1Z7)psnQC|`Y4Ul6
zm6d7HiCY<tuTx2K;yChR*~bPw?)(|&<XnF$2nwWp$-nw`%G?>HmM`~uRQN7?cr))v
zn|1MSogI!Y=h6ZgXC2(zYX2<%%L+q7?Kw^BU!Rp(m*p73x+HY+zs8QhZmx>AIVw(R
zvEK849h>TTNs(jv-s*FLQ^K>1-t^T)z4Dmtv@-I;7T>zksJOqkHzs$aG=AJHH~IGR
zJ7LStr=0gl>F0<nFgbJoNQ?VJi_<SV3tJA`nJ0+(O2@UY+c$C6(p{FNpYoKirna8>
zzk&U1df)8X?_a%>dwFr4+e0h!XMN3r0`1S-GVgcoewLBG&((C9(Ay7_0yP-|x2>C*
zQg&(8gPJEl9+_;?T5a;7?rGVL>u<Ew!(N>cy>`asaJ6iWh)j^YOm2wJUzM2YeZTt8
z&2sD%^UqX$)!eaE_w*G0>3nY5IlDPNcygL8J1xE^^Ldv1uXj)5H}Kjfek<4D=X&~O
znK9RuS3Lr@>Ptd)d}isf4&Jcy;>Vp`dl{}S4_(R-cI@M^g>~<W-!J6lo!yZ0_ei^i
z^~BY-cDr9KuQ<${<=iGd$x(CCn<vwjpPb_ob^T9TERRL<x;c9~L-l3aBBU+#Z>~FZ
z$d&c5M5UH$%KbMJL&~@}#_N5|)!uJ@S9C+h9*r+qXFsi;e)&dbS2@F4^B5N4H|IYs
z2%V(zoB3d>RMpO@(@f58W_^}&^UImPU5={{<+v-(-xo8<@XYE7vGZ2$lTf>CCmyrh
zxQn+|MQ+(NlVu-tTLN85#J_xf^D}+I&vd~uvAz|DXP$ESbRz8dbFusTSnu-0uE>no
z(|%lZN2Y<4-Nv1kZtqXWURcTLu~q5|PpL6W!Cn5B4lDF#_|5&I6Dt4i+OtpW+qiyQ
zjuch(Rmh0DCK$*+ebVNDjjt*-`+KDJr_XqAa(e3P+c}5-ik&!cSgp>eD$#}S-qN>!
zKK%?j-S^^fQnmAu>W;6jPkTK-8UE&CGoHoJ_u;tuL(!n;ztf)V3^|oz<r?&<W=;6&
z$re@59z~xl(OG%QZ<fdvk@b45tl_K`$Gdf}NTl{|d-7KF<>|eX9*3Xc)!7{-qaP(8
zC#7~HIzwV%@U@SV?RvJ=wI9iPI&ov!^glwoZ$<21V3+bf=T+6AGjn1hxgF;_>FJ(+
zQhwCkEb-=*zRKcxT@Pc``hDiUD?MU&{mK296yq(QIg%X8qczf2z5IUp%JFO8ihO4H
z-K-a>JvlLLueNae?3x*C?C(Fyw0X&V>+H0TrM=bW6OY=}zdi8$?$$eNcZmF1lC!MV
z>HZ##>63RYJ8dXFzgoGxHRqApGP$1p+t{AZZdaA$*>ra4*$|KA*72VO4NVP$Pw7Rd
zCiGcWC?A!qVwzp>OJUZB1s}Es*T&sl;&gYW%)#7SFZPH!&iyL)_x7AK*(OrkcdSm+
zo+%fXvd8ma&5N!7+zd*K(<i%5l04&k-@AsFeQ{K=+no~6-W4Lj=E}ZY6(+^)KVn-u
z+A3mPlpbHRIQr(?x@@z?n=dx6t9zpBu=KY_oBy=ceM@(LiQ2oP(CfNsTj0A%Ecxk^
z3{Tk|f4pyI$gM3EA={o6Y0r)nShq9mzN@x^W6+%7*<Y6ZcXNKeT}(!ysNnaD+PXh$
z=UjD5i+#4t(S?cS&H77Sk<Sfc^-p=`{aDs`d)=B=b4{~N8+t5fyy$*tbNu90;a!iD
z;>zY~C_gK{R<*C7^qs&Rw>eo8I`3{bV7uErLH@O`_@lnaBU3*YKAd`(_d{mnEYTC)
zGvwsn`p$lGY377U{W*(O&F`AanfLA25|nJ+P?RU^_F{LyoJqf0cBwxViCh;uL9s&Z
zaOn$a|J2Z+Gf@Q#)tK$y?QFA;J->dN%M%}gyHht-AFEx)60DcTrBGzC{?zV8uS$cb
zToSTZs(O*Odg2YX)4#thclKE~p*i7&){jFkg>?e=-E-VnJ%`=AdbNUQ%D?LP=^T!7
zS#O)mf@hf@Z77}NUACCzsd(rlV@+n}3%2iT^e^f?+Nam_s(dSh$}EE~Re!>gn_hjD
zy&;pKkkc$4u={e_<@tY#&uk0YB07Ir^UFgiLeo{2pEL`4eE97f)#+WA|9+?qD0!02
z^=Py9jLEJ4)=vHT+ca3*-Dmlf7wx4>`Tp>0-Qt*Vf9{)k-(#nVDtw>fDs-k**l`WZ
z^F}8bUDdDpx3=1uO=EF=EB45$PxhAW*$dISt7A7mi1(QEAbnx2+{J+4H_m4SUMJn#
z@;|GttCzR^lG{<=y&>VdWZvhRFKRNWGApTTPF^<on%&Gf&%0fHQ(n4O?r3=;=jT3u
z%{goPiBqH9Q>>h0UR0aRHUH9fXT`Mjf4A6Wt#_}xvL^AE=DF?5GruNJ@Dkj0`CGxM
zcX>a`E}L(geWZ&`jK6G|_Jl27(k{CT)0@hd-(a1;`G;f|yT$%XZ&v?)=9XHz%KmfK
z1hx3k&!4sbS!`4c|9t$mnfS#|UmI)cHt$yHH2xMnX_DQIsr8Sh-P@|o$>N*h(aTep
zo*mco>BGbMSwi{`XBzXY-J$b4&gilJ{Z3_{>L=3=OwFForOVfMiDk}Bm3t3Ay4^lK
z?cstSYQ`U~POvSnIT~^1&O~9I=`HbXef_UrPHj^Q>X+W~<=EVOGq?D%OBSE)eXP&g
zO*!r7%Xj7Wzne!N&stsNUK5jPv;Y0gZ>Lq2Cb6*8IU0+8-aIqaxOrB$#uBr*k3kWC
zP9;fkJUV+yKWg=}$*z6Z^Q+aD#4qw+nVx0wXlBV{tK&=Mu0H#&VSR`*&slnU!a@BR
zUsp*+h(<eX_`J76N$h^g4U-w>ktsKpOnK6=KmYxa75`smCY5aoX?l8Ai1*>uKDn)T
zqr-c2<t0TQv9pHGI2IKDuETJ<9GB`A@vSm@HF|`@zocYyU*h|DA@=yn?WZ0cuX(kh
zU`NECX)>~Ft}MFdV*N>kVXwa5T|ou?`R`;+^&R@Pg>K)sW7uo^QS$84-)l_2Y<+21
zza!;u@;n8l>C!3trq-RddMoc~U-zks^&eNEg`xcOV98Av=U&&SyRdjA<B8UdQd?t#
zYgeDMnZCI7deM{(MT=jgX@0GF*{FVecmKMl>EY943(sar{<v;a&9(K#9*MJ$z4wV*
zf7zTp|Lixn71v~bKYDO#?b%aWbKgp^i`p$sbq?Jn{?|izncMfeI-^z7%XZnQJimHH
z^!Te|Hs6|VDfsY|T1`3?rmeyK_mRyh^NkJCDi5c8Qu)kc<PfR9=3@AXbzjaJKe;UN
zSjkaKZ>{5+n>IIXR!;t(;`c-$`tv&fO`$u&jkbqyo$<IByH0st?c3E#|0UTkEzy{h
zcRk|Rq+dKdtPd|dpK!$F_@#dwTRvIxf4)?{;`t$wNurBP?bnITJ*&BBzS@l$Cs><r
zg~va?-}-uqsp<Dw)BMgaPq^`y(<$enGAl1{n#bd?@2m3<{rdcDrtjfQVcme)%;DU7
z&*#=L=!h15_C7o%?C_GxSBEMuzE+lFJGGuI@56&VPilP`{iFrz<0dUj`4qf#ma10N
z$07$lyWL5K)BIH0w@a#s&2lP#(frZtl;-pPr6mTd5><ERy}kVI{jRp)V*6K#Z(hn?
z$XfApdFs8!x!ij<&;NC`QlBmT)w;4tHXNObwVXDo+^Jm#FSgxg(KlHkCbH(k`JQzi
zb(8FVP23cxTGsLHZpOODH;lI{P5!>}<yW)$5#`ImYv(Rrd`+^{d|S)*_!P;lML*tn
ze_n02Qc!%SklB`5Pyhb@ly$IWeaMfX_qh-1mZogj`@bfUS<<LRi)~qk*1g2vOTL>O
zyrrAHVe?&Mp4_QH$qI8+1DySB=f1eP#$!X+X7w||<+}f-HCA@~-gf)%!|7XEZ!g@)
zv2^-pO=bTBhiZP^+q~vMNGEsK%CFmQE89CZ*WF&bagWKWS<JIqTJEttSN=Iu>YDH^
zXMX+Dx#dASpUoBy|7sMla<9_W-|@Xo^Y8IS|E%)7CVtpfV||p`9k!1iMYTK1JU3ZR
z(5<b15xis86*<Z6AGtHn*==k}7C3Kse$)HArjbkD2+W>T!?7#k>(S>to(t#P=C*hJ
zux97n-J9R%&XG9k#8EK8N0v!4CG_47)9<{mHpy8|JAKi4e(?f#iFcKzzXUYb*JRAu
z_{^*Jxma1LN@0n9_3obTuO@q!HBYQMdq+Fo_2JxSzE?{O^$&KX34|P(^5b^G^bbBR
z=l1>BxVNl-PQbLKJ2=(U4L27Z3i#Y%Q!(2&skk#sr8{j^LB<&o|33|L&TCzqfA?7m
zt5bTl`GtPlRZJ>5PaVovxBInh=2HCn=Ga!oM`EgFcG{;_X;&_uw0=^lmC+a1^4W6y
z@0PFEUa&}oTRxTHVJ81gjUNlcTUe!{e(L-wyPNaoa<&-nu4ydO_wR7H|Ju%_@TVj5
z;*_TJeXc1xR^<7zYNmFWyzl5)m{Ra`&6BIMVshPH$=R#l%KCpWATnfKT!?7fFS+d6
zt<NWB|4k4P)>^0OcPh7AA>^*hySJz7WVZEv*|}3jT;__d|KSx&Z(eK>sQS~)@#9S|
zS8C(CTQ|&4v+K9cop{=?>g<ef--E5Ro*O9y7R4(6)Ye&c`E_Leuk%T1tRidtqbxrP
zJq~`FrxfY9QF+Og=<iYX=huoYZQ$I0&CFtpU&RMMotuvhbXDGbJHKg9*Nq!R_4Q{a
zH`-0#+oz+oxI$j!e(j<!9X8I!`--NYct7!x$p<CtcR3#~9<I1=<oa~qeCt>7T+7;O
zwA{3euU>SIJhOE7>gRKudsZe(8g(1@WvpJ@pVaeRb+g90-n|Qqj!mpHp8n!VknGPd
zg^Ls$e|=oIQjE2HRmA?UTkf~XzVT#o{aUcZD12w#tKPI{B^OuA-Yd2KIkDTi{Ke*D
zEtgK*FD~fVw4i!c%=JT(SKoOzzr7*TUgLLIcH7Fytd_Ehvs3IphJU%SGQasmecG<0
zFOFP)`>=B6$)|T0@0Ho?%V#IuAGp=xR+8+wEmuTd>U!+{`my9$j*NQSjfE273wlGQ
z#616S!CbZShvSZi*Xus^G_)9N&*l8H?ziSS{cFpz6;f;rFV0lke%SJj_ZH**e)SJ}
z^j&LSHcZ(c@?vJ-qK(_4G;+Qu-+7vORb*Y$5_i#n7q*6r3e@}3wd{8+o%J)Kv2EqY
zNh#kpZnSa#$KTw1srY-~rz_Iu;!Yo5`!I%oWtK)ueaPE8GJ7pWu6tC=iW!_^c%QM%
z{myq4e({cI&x7u!6{l|aT$OlK6e<0H|Ffa1(q3l$iuK25WbY5$XS<{#b^oUqyKa7E
zsjaz@y?@)r!?_EOC6~x9jy`cAll^tCym-?@=3n1aR{m_P*?wYDOn`R3S)_F7ua`1D
zZsprAG(WpMFUowj{@G)lcS7f+d+h64^=SIrZni_~m)(AK?9Xd^KNXSLxzQH_>M#6!
zC=$5l&l_$VyYjP>=1iOIbnrRjx<^MY2w&J-cW!~;gpzday9q`o4?gCfyKLIhyTbcE
zSINJ2xwdcm?U)@KUw3b@H3*o$fz8NXulH*8o8`02)>rslIwofG$7j;t7q2fft&{0G
zCvu`VuJzJxdyi1%xR*WJr4zN7Ps_*7vilZ!?aOPIvgz+;T|9PL)>_dxNOecKS9n(P
z(=RE;!H45tYhBi8m3R{wc5JR)H2bq<pQaUcuU66$&Cc-quJnD&oG)MGp7;I8;9X`P
z_-WRrsP6m|vu$i@ErWtKE{Hq#_gcY529wj9%pZN}v@0rN&r4Evy7^mWY9HGw!-R-1
zzwO7ZIJ=H@)}8L(|BspDt<U{^d2Q@R%m0dfa+EU9ypVW3MevHB>&zW(FH6$CJG-np
zJNwkdq)krN`}WLS@6EZ4d+j5;yT3llO?Q5_&wX}-rf{;_&FtiJzBVSSWb}hf7y0g&
zP%m2ES|D>Q@b<QfS>Z=!PkyNPOF*q~t{018{kP(X@5g^{`#1Z|%5wQR9Czww`bN*K
z{4qD;=SKeRkz%X|FNR6JzETu@JjV01)1eGU&wFX-?)5+Tv_jXT>qM%#@3y69-cGvc
zyj<%7S4zZE`-4W$_x<4(Z_;Cqd~W_-?D8^|3Z6WTtKJbG?`WI75m>nIs@U@a>zkJ>
z0uODv{_!Z|j_TJ>H@hmh<}Q&E_V}|<Z0VPSttH~Mnum?AIUl{U&ZJb)tXk`ns)6W6
zf&G$c2eh|`CY-!ql`-pk<+|$Fq}+f>N@|<)9{hUlATTk0*OI+!zPy^%zLF_3%yId;
z^mTJLzZHLZZt2W`Yb`y}r}mU>oZ000Z?33xY>oC;fv9^E>wLBe?)zM<nD`|v^+@T7
z8jdHEC$GNOJ@c{b!)JY)BAUzO&o0+>eln{t>ta>r-6-*yEq;P?^)=@APgh+&`;t_e
zJ7*!+UYAfGx1&wfT=Mp+S(>+M-6MUzCbZpoBide4<+$l__Cd{A38%Ja7H6r=dKlwY
zIG;(V{p`2q6w5g~I?M8=RWtt8W65088vAqRdq1ns%ezBUHHvlHzc8CHe^b2s_)D=6
z`%_>2Dc|kp2yWD{iFEmuuekE%@}n<au}tahv<iMZ^RnGSy~{Q1O`aOZn%4vhF`H*3
zueg1{VCKUw7s{W!^4ebVIVwSTLz~~ekX?RzmK3ZvkIOyL>o>FU`<qm`rzfu}Z%<oP
zAj$iCzkk}I*}54|PS4+*GiO=7kU{vf%QdEF=C6BGsq*`5?O(}NwM(acVSi{f^VNl`
zHdAx^1d=EHePiX!^f3RW!F7q^N0PQ$)gN}nAIp2?G^s$PQPoKGUWMj^Icq$&ge_Ek
zocP#AT`*?qf(6e!G;g;!T|2rg+Bnnk)+6cu`e>oehg%meJF{6unzyQQ<=gK0Cb1Pu
zMa8z?+jb~)`%=Sc>0v9+n5%W1@8r{&^R#Q<ySizXu`(-s*7sG0Ob$O=a7Of_{hH|u
z&S9J3G*Te`Fqx<zpHR;r@C>H~_8Cqi69rxH{TYUa1`6h;2C-cFj>XBTc_j*FmL^>K
z&WQycshQ~+B?@L1#$5U?sSr6`Ly)9rNn%cBvSVI)PO5^gp$V6Ma7k)zn1Z<l&MD6H
zqSVBa)FS<y)Z${4`AqQaWe}I0okD6}3i!|*OJgK|Lgp+D6%0*KF48bCGr>NeX-ND<
z8X>G9A=$f^sj{#zGBUP{ENPoG;T<2RXQBj~L=u}C2V<tIL(t2R0IyxU9aWYr%@z<?
z5@PjE;`yBFf7RD_m7k5O{&xHR=e_4QTSk86{VDq9!8U<V3!bC;DhyMYG+w^Q@L+0i
z5M)#cm@#GYWsa_*#y^FVi)J|pcxcF|eZ4O<ML<A+>vb^O!VQ&H1riRzZ<z#y7&-1v
z6%v}x#Kd^WVZoF5&Vm*Z2gxUlTbW;QFqk|v;FvTenDgDU-Ucg+MH`a;Rk0Q{S28$F
zn)Ik<|0zbUbpk9RJWY%x4jS$q+GR=-PnZl^nimR8`My7@z}tFJKweN&)4X}}m=wa7
zFvvVqIDMG?L(3u=#_x(A9EX^b*ne<JEZ{C`{o|(QaEjBQs70y%H}Au58vX)IOb4uD
z79?=+bgp$c{6>L;q0HhyfV1?1=WLCC{jU9+dw~5%u{nbx<HG&7|E~OZlY{GbC=XNf
z!*zKIGt5PvF>Gkx<-kz2>K2oRzKA>n%jVxRIf@()ZTzahFK~r5rQ7#MX_0_K=s^aC
zLri~|`8nMj?gn@;s$6-h?s9N`?uPAam^KGD?cU{-prP{e{AW#PK>>qrxAwBu=U<a#
z``+^NkKvnz2G+mlE4;ao*L2Kag|*b8g@4ppUn~7R{+z*)@koQvBPF3l3?0@Ck66n@
z{@lEG;x_LmZH+INdtDzqf6P|Sd?VS>;m?9^0&nD3@(Vp-WLzMS(J}vgJ^!EEN}@tc
zHyjUYH0T~-<Wl~--1-{t#{ap=)B78$7<C#V-f=QE*w@$Zk4$`-%HF=S;{W7-+54N0
z&0<rFnzd)Y;D6cRkd|u3njfvIjDHR#IW!0a#PBHe)qeb4K6}6Z1N{&C_xw_LG5;{*
z|CcKmH@7GM{=?R|cklj&ia!rozssNf!0^x3NxV<hnB~A<{_nbtNe%|z6u<lrJFtGz
z|K1<=yZ^-B`G1~y<)YY_y4IcbNB_G^JmD(+_-}H<QzNO?tF3%8tNCu!FSBd-b8Qpf
z5x%anzvox5akX4+XF9`py0A_$knzF%+pS8W3*!W=Yc;su{Fv=o|CY)6Fe_K{i^CHy
z%%3llBP#Gi-f+#E1Ltm>=Mvhz@xG#f&}zpk>!1GHq8Kst?{66`1A{y7mdmsreaGa$
z!E$1@h&RU?Rkja;hhAOdd-S#Y1A`-@giNb0V}jvt#y1Z+F3ryto6f-T>R-vkf2(yR
zdL0s;|4U*ndlvsq|D>}*oPfd0D=acK`bSpUEcv)1<l!>)|F0I9JoLLXaizikgmcbG
zA=6KFd<~kDSaoYlSmUdZ<r7{xFBgk-{l2*8=gEA#8C}s+?=52gvpwXxY~IadJ~46+
z`i}mVG1}-GaP3iwy+=UG#H#KWhc2e~?YQQpl>Yoe>Iu)6)w}mR4&I|K?mKVQj<k%$
zdBxe8akI>1Coeg9?Ne>Y+}!mSSKTQ8b$jONbr%n6Pn>pMs5JP-mL;?MJs;b6uhaeZ
z<?FeiQlsszELl}7Yu^>wI0mk~^Ex$1Y;RDK(eJKDI-l1bPvhF!zxGz?Pv70^4zbQ_
zSzL6t*8R-CWumWTzn|-o`sMd%ZA|Xg9mh3q2G$mSV&1s)ev+<w*Stf|GWWEwML(Id
znR$<w#IN2%i~Ht3`PQn{mBDG6)UbSMiOg*8;G?%aHeT7zq8GFD(C@g|y9Zr$m+_T9
zm!14=mn@HNWr+RHqOUf44pe8XIDGi<bWuSQCFi7y8G>u{&BAT$_Am6E)aZOfL~!x?
z53N`3Z#ywBL+5`RSKqyVc4{B}{v~})xuCgFW4)}=o7dH8vQ|G7lhhQ7?ms{Ld}*(|
z!$XVv>pm4voD{SutD}E?=d?vJyCcOz%tOz`Z=Wh;+bw-U=@#2EhcKHL3Pv;2dMY_$
z4oohdW+`W|Q0}XFM5|gD`{qOEe=S_{+UHJ4mFc#P6X!7t?pV9Agp>X9EM?0@5+|AX
z?(<&`IMgJ$@`L2p=vC`eetZ|48|iY0%{1@ao=WS-ky^3-lh;jk3qGdfa4&x2nSd|-
zoV#0k)+lN2$X~IlJZ{3>m9=XGW^2{TJp3vnET0)=`gpGVve2gELjQ^a7ruDb_NVGN
z-&gDWQ@4*_-SwpC(;Ta3r7usu++zOx_gWU|lgqoA3##~c{4veDv3eTEtlpQ)d%QmF
z5O}*}-OCeejej_uvAZ)*ykgFORikF!J>2geFXLOl<T@qZFK6k+iUy;Z&U+Rr|7Mjw
zVmI-X*x$Zgj52c=ex=MTyeyOF_mQ)8_2j#)HTK7vzHZ;j#dYAsivGQi?#z&?bJzT(
zB)GZj@$AHFa`U$fyMJEyzWJK%I^%D57yPW5dFd--$>Tep8D1Rt`^fXYL&*MpcRL@u
z$8Af!v*GocUFXFV7kw<=`t)l2Q*|ZY->1I?FLo75U32{BDz?*MHhHG8L5v@~n6~I-
z{#;@-vp9@<_mu<Z#qIN-OK5S=U1lCKt2>0}^Q*#BZ_Tx%ZDQt^%ZBW7TzW-)!!FaR
zRaPxg8Q=E5)~s6IaoFsv^7?rH!#a+q6ywaM<Sl>Pbuc8$cklO%+doYsoOjGhxxabQ
z*4fM6Sl*u><#t;2&MVEj>5DoKU-8@X{l<^Jqe0GLSDM|YHGBX3BPwB7vitLH!vmkK
z<Uet5oBL#*_teDelD_s`Y243DX1H1TR)6z*Zy0zzM#gL32G2$>!SL*W;LZ=uZ||lo
zdbduW#l>#(p*1;|%fb(y^xAXCsB6aZ)~%n^dP=vqTPfviyT;P@=0l#u#L4&ai|an~
z)c-z|`}BmVTWQ|j&Pj`VA6TZ?ec5Ufo^prznxEB^dl4Qd)BjY(<O?q5Dy<c}{5o&t
z$Af=j=XTmSh$p%8IypYPYmxl=(<;Mt>M76bv>u(cHaKQ_C*sb{B?)4h%s;Nh@k^iE
zYBBl8Sz(i1o!XsFQX<~^2J-~!-i5x~E*g6`%~pPE^{hOTe~<q*nIF|)Ug%}J-7Eaz
z(><@bA5TuZ_w~Y-8Pm-C4BrP#=T7>zDv$fx%djbGTN79OTM_tpI>Wo8pYHNplX3hR
zI+tHIY}egCOdRPo8jI)Z9Gz_Gzl+PmPW3DEUz=5qk(Vd*I9}mVjg0)Kp3w2L$VhwL
zj+4A=S1kN)E5u;>`*#O_>qRDsg^m56H!k^dt$&Uf?`7GWRpusdjVB&&;}d$3r!KZU
zxBaH&)Vk-DH+yon*hJ}RiCs5Z^g^(PwSRx;>fejBUa{xwaoOOoHTbYW;)NGl2fw9U
zvA%pz=cCeof!A9-JQSWDwX2%AIap6^rN9}}i$6AO@9uwH%A;3uy87pYuCnt!^P)qZ
zeO`DqG}0-*F(PxTRfAbh?3PED_AgAI`YYg3h{Lg2e~#qe(s%cM{3v%>w3@d6?5GD*
z<E%fMiM4(gZrPc0-y!2aYwp!3_00~STX`#H9Sq)hD$+<e%zYXEyJP1yzfR`*FmL9P
z=)G#UI5i@5<BOx3xz0|jl)2rrG*jnqfd0=9Uy2ugIW}u$-TvjLci&jL<@ueRzosVJ
zKiC!BD7WXMjKZC=)*$KcAJ!fE`IO~r!Td9gymM^@PdY5!5afF1%hm~;KOZgpcI-x5
z@zM#^tl{gQe6aqNBFB2|+l|MU>rN<JR_283OU&AL=q6*#A0=slJwFu``KOnL&rUmj
z`pT_?){j>&X^DTg>%b?EXOj;z)G)sb&}y6=Jt<~M^}CrWrbSm&f-Md@O7p#ZBX;`A
z>Y(1;-{y2Htm^#y;KmNmrGmnT3{J7}$JR`e=Gk*lo8=u7qvz+OQ<XC^j|S+r_y1w7
zXnoB2a>h2kXz_H`e{W`+#VByEb5=3rV&V4gkT@&xN6kuy;hDAc;o74<Kc6o9KBr5w
z<K4fTHD|90GINLSt66(|yG$%++Uzxxo4eJ8`{i%eIUk<fcwDLdXb_WZ;P+2UP3|!;
zzuf;rt9^yv?N7IV{M!4vXXf^RC#&S^>X(}>bXybDTlsS5s^q2I`%4;BJ<D|?zHF^@
zC{9RwvAnW<>L;#K7n`oLJ+$a|Q4H78-Sji-x$oXA8JlRYnR4+nxWfCm-*XkIT-N*)
zJn8Op^MVD|cjmqPa6^r=s*CUOZAF=a*T>ZDdRSv#*~yDX@8hfuOIWauy{s$tXI+VL
z@}`wfj!(6@biw)OFX=;*;wlav<OuM0ofPs)SIcU#0^cIvxtG`T|J`|MR?S!bNvnSM
z_i?1m<dASXC&%h`&@*PjZoT+5Rd?6bO?U5I<9ToTqpi>0CiI-#qqOx&^QB3eJ0zkz
zHPn6{NL`$7s=L-@`JRuiJ9PG(yd^h%ZB{vFyT!@XZ?lTb^iBK=BG1KZX89$0795qD
z+q>!F?OmD++sh9|ul#s!(YuRhpA^a^PHJe4<K#aq82^%uOYG&(h1$2>dIIw$W_>vB
zAhTqu)293F>6a_wxE1HGQ%;HDH;-ev7_+zMX>8W+hAS>tH5Mk{(O7!o?EKoNk6x~r
zy=d=g>z`kv|ME+(J)_&jQ2kQpxy(k^2A`OpkG~r+i!mu3IPxd)p}uMH#`h1uu&R1q
z6L_k`-Zjl3wP9n9w8j1U`L$POO`HEsrqbc)Y;BJ#i)a4+v&E+&PxoHCg8Ew#4X+c2
z{&;x5Iwe&b{P3-gy3J&{4%;^6Rf2yOEZ4hrP~=aZSN3bis}c8}=x$`|v~Yg)t6^&5
z`<K)Gc+QI4<&(60Wht0)Kfh3cHM*qqxck$4AC?^RJSqOg_`<X^!LqxvZS5B_8o#-*
zJSgPdaswT?#>YE<yjtb9V*jb*7UHqTI)vW6&`V!;_w<HsYK^n@+u4=W*r@GSDs8&=
z`(KRlnOcJ=uL%>vZU3=f4Zm7<&fxf+TPJpN_r7{&8~devjR)JD)bo>OS-!c-ClDnQ
zeo5;7)=Ms;o7p$Bw|aTkp0d68E_{XkZo|iNZl^=E<^~imFl);+zHue@s{OG>Pae&>
zu3U`{i_hj}{8sO|wtu%2T(SAe434@`#R6$b-wS3Fe2oJ-lpTU34r%#r^Occ$yU@w{
z_qR^=yvwVuhCaXf?;5Aeggu!d91ACZyb#<w@lA_C^t->aW^Iu;{P$Rs-&9lOA4Y9v
zSLg3fJE#%5YnkqAi|DB*-~8KpdTaO`R?B^JCVgHhzB5%+C6&e5Eq|W1YTgvrt(%Qh
zb!-KFf2Js<$X0qh^5<yWUE8@aI-t|{?gnMCHQ{<2zJBdooH}Fv%xVS4@YXP1_j_}7
zMI}|Psnwo+_UEN?gZH((<r^28>6|SrGP<7Kl%oAfCE?^`qYY=$rYgNLDqJdd^1c3Z
z%^Y48`^Pr_zVHbJUtN+`|7B}Lw9C&D#Ur;)yy*L?)V}b+iZv>?8GoDhdd8n&((iLT
zQqlN2(ZJ{EvCC6)YJ!XJYj3@79&J;v8{AcVZDykBlt(RP_l`TPJf>-}S4rW@g69e1
zX3uYV<@&8X<@Bb^L_u|~#k6g~(jDTPZ`M4l_N*7T&6+!1Ds0Id?O3Jv(^7XmshR72
z|M$8d?V|gHw#=Q__VL1#+3vIagY){!ZnoXFPV#I2D1JI)ib&g=$(}Lat}vILcy#04
z+(^;=d5c1|cBmffx4(R|?#ji<3M@DNX$enZnD@Nn=aR&;QQ8qoO~<cHp1OR-4B>{r
z>W=l@(=^Rr?3f;u_~Oq49Y?=Cjb715x5~M?D1VjRY2Npd`*N*|P}(BCQ!xuT&lEnB
zv=6pi{Zr<H^Uja1rRzGHeg^)V?X+9&YVKV3#z|!&Z_VQ!yPB5dg{sSMZ8TjyiL-b8
zZ25$sxILRbpETZaYlEkNcDVm$(UN~txP&z=6CC5WX@^Ym|2wnq|3h;N{xzzREo}}p
zB}`kwERV$KUG}|N>pvsZ>)AWY<nUvW44k(&G`Agmezs6xp2dFF-cwu8U;XrxKQosl
zT*M%1mXu|G^;0>Ug}G^3ffw8^)TrBitYo~~nO65tsN|8y>ac0tsT`l)*z3fVuwI<u
zy1Pokh4)}o7=P^L(4u)!rn_fbowYykIqp@w0*C)hnXTJH4@n-nY-&2WZ(hr+JBfF#
zzcJ@_d)LX_c>C%!zvxr{6j|E^%ZvDT*IzQ_t7j`v{qOPYj%wUd`3tw$RYJ_`{ww`=
zT2j5KQlaYMl(xr~TOP1(YQEqxVg5<Jn<Y*Q=3hAULycALx>@+-;;W~1E1$nTx&8Ie
zsnNnghqNWVT&Fy#sO8wUE&R+)x5MhP$HiK0Cq^#l;Apek`uTv&t7AXDeeM)I`Q^wY
zF2kQ|WnTvH_da#WykuRl@jZ(<cWCoT#r5C1Rz|FPIr+sQL!S95LQEb{Pq#k4slDT~
z(v@k^MZ%gVm}U7D7Z>}^`mE8_w*CCgGmJ+yeh1}C&&g;yIN`ud*Ga|Ui{I@umHF_~
z_xfF{raKS1Hfy!dwFy6}mw5bZ%CW0KODm-1PCa=4_FT49XI=cA-Ornr?H4&|Xwjdx
z`0Y#vv67F|?w>B&dPFN>s>l@;iEBoi9SgG#@k}f9y&$1g@}Tt&|KZ~SFR#y7?009E
zn^~>zJ&VAf%C{vR3ybZsxxcU6aqr5X2RZKq3vXpeoNgODw=~Q4Uq!;FsoqsyZ5-)~
zrKiPTU~Cr`*~A#+`LOcsmZ&*e$B$gF?0uVlJ?+Z(p!>d=eEXyf?M;s5)EtnvKeg*J
zd*uw_pK}*%ja+wo>fKeXo}1otUd^c8QSg32kJI9f4^Nvp-P8{M7`6A!!7b*0R*7^K
z?$A<B@Obj$lDE(9o?X9dW}oKqe{%ZKR$r}ux?g_2YM$`xIalf@ajQ$mZuK;BwxopI
zcU#Y~X`io6dCIFK&C<Y^^?M4cwI<9c-+w^6v+4bh-WM)Po)`9ThuT|Mdj`GnU{-ju
z|NpDM!q)LjH$nsNKARN0D_mbquqLZ6=;YF0%OwNUW=-mmnK5(zjs%(AKWC)eeY?Bh
zd%kAJ&L0Pks<A~Jz4k3?Z%FEoWtCrMe}C4Uve;zP{6AaWoG<@aHPiXz`-BsBSM8ZA
zaK82F-)iI7lVQqRddv=eV0q*sXkvBBraaL-j^)<;UF{s{e)jKvzDN#Y(7NuszIUZy
zWU1Qh+d2NcZWAxg@e+7r`BdnejqJZi=gmb9&yD|67n$0z+VNW5zilTf@9+I`q%S7S
zD0Ht>uO-(_{qX#rjNP`8^IGN_e_oKw)GPm{>4DOs<x7}<tVvIrblYF{cK^xg;XEFk
zlP%|;mgBGL&ERU6$P7RGcKVb<&gtsgm(F{5_38e1lWjvD+2o#nv+YGm?!TJvbJdz(
zU3pOYwO?#i*Sp6l1;v-x(~r++?p$$cTj8HvPR0Fc)4r@esy+SE)t`r^zyDx*%loR~
zyA=gat51mMhh*G8bFnx|jrC?~K~09I&ts7XJWkK0oz@$Q+}oA8qUrX3<ys>a4c@Th
zr#p8ph-uZH^IO3=iC?g-u4{?pYjduEZ-th3R!L75%PU+g*gMBlZ~noXGqj4Hd|k-G
zsmt`|x@7C0%iC6laXk}SZ5ll*XIk3wT+Q9*i%-A#b2^TLF=*!28cqd$ceYv0>FGY7
zU(L1r70t0^@?T|M7lW*XZyx@colOdJ*H_))jVbEb=cle~B!1M8q2&)-R*i|sua7m_
ztp9V`Iz`^C_T3ix?bFPAN%yL5{(Wd6`>-K<`Vu#RSyxjweC=L!T6}h{+u!paf;FN~
zl${C4cX!!uzAU2e;>|1bY?_bi)unvpyji(zTf@S>PeEIlv~u6OZn(yo_T^_q$aj0b
zrG9#;i%<IpYz#kXzhzZzaO9$$YQ}Tk^{IGGboI{2<=rc}=gzu~&;A@LUZ9((v)?4{
z#Ns`ErmkCz{w_Ry_*a5{_i6{<od<VMGT&bQt;hD_Z>`DC@9xNJo{?}tDg4zlUauc7
z4lUkU&Bk8ba<FXWou~cPbFQvQQrUfTip=%Ji{~b(Xvs@f1XZln*424y&#>!zWLd$=
z<%;VsN1Nq`eEdG^mG<LzwtvISt?!=t>by_ln$cN7o0tTnz{ncMQ?;c}q|XOUy?!!x
z`qxhjc3N+Ge_Z&~(-Je!xV<Z~XK+ti_fzHN559^6Dq{LOm;dDqp5?!7#%J5bpY{bw
ze3TVek~~rwqNgWrEy{gDr*ooMhE2s!woNj>PxN0r8Yc7fip%0c&9e!1%J#REf;|_s
z>*ulhSNJ@ss+?H;u=TTI=gBRh0p1zAwnT~wmP?!GaU4@f?f-A5-2YJX=9+I#H&T<2
z`#f5E>{!^h+u8^3OZNLp1Vzqawff9b9pu9j<zRZnbl>Ff&knpu$Xix@<t}4Y{uaBh
z8oTe+J~^#Y#$~>FX=spKm}S_>$O&>*JAy?->%#3%o7p%<?*9Gz?ZU|Gv&A?+MOS6_
zET3n**(C4bQEpw|_2peNei<w&oEp0J`t-{6F%=0`3*>}^7#_`YxoKV!wZ!Vq`E!!I
z&+dN<tgR6h*4=qKKQlAwyW&@qtq&emT@A3?Z}M;2ij0o-JCmomUwpQXF`m_6=~C@U
zA0EC9+x_=i*17ZQF572m=o`jgm#*(9O_`YOznAyto$n0w&NnYFH`;5v+R-{;&a!L5
z>4v^R4~lm#@|>IceS=V(%JdIG9#(qBp;v?N>I7>ZeRM7|qww{~&Yt!b@4%<a*F{&o
z`FgYV=F3j0ecq0RpOV8b1+SAl87vuUZnE8d<_7b){rl?`&hS}odg^QU`P|}@C6Ct1
zRT*vzdQtax7XMPS)0fM?tCwHT+SXxN<79R#KJDH#9__FiOPjgx19g0UWM00xh#~V)
z@bc|#;%mY_u2}m)BdFMHowMnIU$d<IR<1O=w^#ejwSNz`q=sL-)PH+VK95Jk!{E$!
z@l0QxO5JM1=03f*+D&TGs_kEMebctzj+0C-$dWJd+8P-B?Ur&-hRS;*&3*Ddi+y*N
zKV!U-aEJZTyOx!Hr``1Hug*<M`Mmf}+}umczn^}x{&(QTo3}I9JeLgq@Z{Fb-*@kc
z{F~W#UH<pB@>}9T%T|~*E7eE%>*@%|UCGXuzURNo)b5+z@79ulQjcfGpXM1mnjPq_
zdl&O^nM>)aq@BH|mDWXP>~Z2fJm)&c=7pEazu(GzR~gIFvs+Whd&BYciMvmP2Q5_b
zU%>2oEGOrZuA=4hgkK(&CEDu_D=;}{xqZ}(Pc^(%XTtNZVCBO#MGm{8{=F>iE%(ma
zGch&i6esJOFSSY09lnNFPCGu(Y<xAjVx7j^$F6T@^kg!2oj>~i-W@KRACG>$+RJld
zUfnAF$j2qgJ1UnyVygGlKD2R$|H9dIQLh)yZh4^@kg)mQn}AsXbGpwhh<<x==ZcGS
zcO9<T$oa+Z>Z)rM0dsF`ycWKE&+b`I_c==4P3w_nUCJ87FM6f?d7R>pU;B@}opwj~
z#geTm0b(g^i(i(#-+0+WYwqjtkX)GuTR*%JDZg*wTCd|9pR`Th>eba7#lK@@Ob-@@
zM^|v|v)L<YcKN}gjTw`xq?hK+XM0l1qj=!z*37E;Ion@+yu_EgdCPgF3yW2}1+LZ3
z>wY8kGvcvgVcFG&MGb4)b?*gFTci4-`R1<Ay6shp5lvBvHw(+o9zM|D>v+!6T+QX`
z+2i|98*IBQr5hKdS$5la<<DDd?&KU*sG4(YkC|}%+o;tWq$j3b<w&b=ZBJ7WZEt?O
zC4CkDmM60Ibu)O*M4X<Q5pKBSk3QG-B^=mhGEI<X_z3OQ4D|{O^Y#MIWLn~w$+U#d
zWEz;8QfnsD1m{eqAL{faXtEM@`qC81bFk@4BXeUjF6ahKBLyR4QzKIt7kNLXk*R?x
zWJ4z5i!pk>vj)U;-eT=?n(%<7J)w8EHA{JUdFGwFckec_aQGE)zRTm}J9zhQZ2tK(
zmg+PA?_E{ht@YyT%U?O~+j=}4XZl?@a*jhIE&a96ahLNacm<|~CMB^L7;U;>Y-DtJ
z;>48^7SYWAmD`kqnXRlMZ`>^UpQ!ML!=!}mqzlhn$Ffaj+ZZ&(vl)cB8#?FC?rfet
zQSiW-6DPjLJ6pTwHFPXo-OA}OO->;-ox7w-S$Ny#?*&^7jLX@U{(SGwu+&hrp|iWY
z`CEQ@!vfw57Z2UIAf}N0B8P7aW2%YS7B-FBlF<xvZU2cjeVV*;^JZIf=H}V6rS~rE
z72Z2{v824H?t!z1ZptiRDPgkO#pKISFUm8)cnjmdU`bmUNr$6%4!xA$xoPgo&9fIO
z3or;pL`yK|&UKK}+otB=&Y)rG5E;a#kk7y6@9~Id^2|{O>Z_O&7N!4+-|@fVzvziW
z-}2L)lasBbtDU3yxucC6R<@c7DCny>zkl=2hudI_>Ce*_F5EiF_ay&CRz_lO28+>;
z**g^-d;$a$IJ7?4Ked#!j=EuOebG8H;(w^p;rK*{Sh209g4;H4WV~f%eemy5|09P4
zGkCIgvmdsfymiyo;>}-w@f&R2U~2exHHWZxHCt#jH@o<PB`4~A9F%t4H!@ye+|WC5
z;>6}|R)!J=hP%CICI4})f0W4oC;H@<=@KE0{nPi(wLKsb!gAsGArX#W%+H^uyx?N7
zu-?T`yXRlXAL)aJhKxQsJ#!h|9E`c6cig||n6%)fy@W}PJ9l}5nR3SW84Nx3fB(Fn
zte3IZ=S|L9+q&8RZR6QA6$LX@BWKlX{hROSapIip1J~oHI2I(QC9@d(-I^k^fZy&v
z-{<{of42YFzm%&@?7!l7cNfp-U~7i!_NEQ9zTdZs`M+6g%705qtpodwPuy%QljK<N
zXYVhoo}8Xz3*vqL&*y)TKmC7w_5biG|F>WLzrW>3%$l|T!-D^<{r^8u`c_0l^`GMm
zTTbbnTd;Y;R%Y4uxBpE;+5Z)v+T<Y2Ek67I>Zv7WEOXlzteyGw|E-LNDrpb-OaeC)
zn3?@gZ~te_8c>nV9lfAw?&PEK{L&1v843U0*{v*+wJ$Iq<uqBnKh)uZ?O*GqE7oqD
zdosTL_?csT1|=mXUmBQu<yvkq#Q7}XHf7xPfA1{@wyJ3B^a<PyA@leTTsbHBZhhyb
z&5RN(|AqcG-(ci%+Aql7;P}J*5sN{`AAZ9|h6}fDe%L;X`+&kP`y&TA5(IwtI$V3S
zU(mS0@sW8Fqk+diw>1l%{_AykvZP*Fz;fn&4i~>~=1dbO|L%2&dGf#A!ZAjqPFX<w
z=zWeOt}o4*3IqT3I>dy4gsy^w-hzbw_d3Lw{A=IgaC2*&@`R`F=M^^U^wud07%RIw
zCu=Lb_?q(SPxQG@_CM{9f3as>;q&-Dhs*UFhc4bYdhCjn$>;xFHytc{-mY={{WYHR
zb$r``=P&c+>UHIsPs$4%VfkUrv?A=mej#JSW{t+Mix*D*`Tpnsr@{h8*$?jx7Cf8v
zuT6pZvc1CV_zREvXDIxU-n8)#Yi#}IgkRnttSxTGKP%Jgt50E;obi{@@nikwWLDqv
zcMji^$@tyQ>haCJ&Mjc(w0egNOV<2rSYY-qQfkFlv-&A)ukOD;k)seEec|iBh3r@J
zzR%`4ar0e#R)FER{Z|(xd|ME{_3i#`4O3s*U#fr4z^yUe_JZISuYZT9{LP=)diVXr
zO--|s^WQ%D;_f%$$iwfS8YC=s+^}T!?OF4G>a^Cc+aLW;dG@RS+5Mzt``LaUkC@>Q
z`)}?v-X~93wru?I-EGs~ROXVu$rd>a6#T^YZ=WF=vTX9#`M-}HVOjO5JnF*i)`K_i
z2>v*JtLfH@H)-G7nKjx@%L|wUUbk21n0Z_NHpi#3|IAH?s{b%LzWwyamrvxR@QWY*
ztLkm%_QuLM3K#$T{g-ps^#70c?^kAQeCLq7qczexd0xWl_Xl&oUv1ivS7M#K=W>em
ztIUv+IPSi;di@^n?Sn&8+16R!<EoQ;_jAJ@Rj*3r4IV!pm0pSYZns9&bK}>Oza#A(
zGmDms=G8G3C+vCPv0<CMyjZ`VYr^&4M-N8p9^hIexhJ?w=lH=^VNXT=xA)fi-`Tru
ze@UiFNtt`$_O4i|e>+RM^xRCN)F0gDiCh<WO+P0oBi*V-BI`<V`IDKmZ)aY4^U>UC
zC5x2B{Kpd0ob=b0KD*H#KTrFq))~K8izOCOH+~41uTY-+B+lu#W>7?N+|kz4%%9(#
zozKO&Suitr`b)bD?~T(#A~jrZnti*rqfe*AAoqC<8%yv5z6H7JSEraPdTlLqIyq$P
zEBA$#*Ed8ke*A9j(;9Xw@9HjJ-QbU6JC|kMXE5%V_00XB@7*~6Qa<g&_G~ZSIR!_*
zYnQIiDgC{o{_*?g$Bm1V7m1l(?~93hbnbwEt5&I8?e(R6Q(XQ#?0)fU=4Z)M22Uo3
zKWM%1*nQbqCO0=-zZG#G1os4QlX>4AF~93q@y@=ll2a_R%|q@k*sf5v(|qx{E1y3z
z$rOtPHlGPNb%*ETyN)|oEx26gy+814=7ONM&tJKGswN8YJIy@eyX|MU<0Yps&yV-!
z?mYF-W3B`LY4&wBzk;`NUA<PZt;TiH+s7KaF8=-1ptx|s1iN+7lmDK*y~#+?wujkz
zYx`%e?F9=T-ryDOdvK?NPxb#BJ@ua@g$GxZyOu}quS)Fo@C#{)>CBOOJmG3+h5UB6
z-CgtUW_YW*p3vYDPx-x+->$V%|HZj(k#CPeesd?d-7)!PT%SLE|8f@R6Mr@cc~9H9
zo5gX_eY-m=%0B)I<Oq*^YS(|HSawZ$URFu>i|0?oR!%Q%J!gJxpBe*ybct0<DU;>J
zJJbG8Uu_z9>cxrh%O{qFhMFJT<+^89&rHS#w?1CrSR!!pcbS-5$-a%roDPnhuFqEa
zDDwWgopUMtwC{PHM)yNI)b4qy&wao8h53A^Qx&DVOb&WpclmKRls{3uZ2nFAbpM^*
z&$VvxO?z0^dF1A{6-u*x|9P31bE+TaX$xKa_bd0QuVD-2MFY2FcDO0@e6;ft;kj{b
zdA!IA=lhR?^rl=8iEt_IY<jsPJ3u4gTD&^T#3d6}zgQ^tYah3FZ=<K>^rng5s|p>C
zZ@zwDBFhTjFMcJme`iho(K@?C^k~2*X3v~+XL=)gbS=-lb+VjuW%n!H1AZSb-?$f{
zW%FlAWB%dgI!tQEgz{&6+3vrV-7LMdm;dw3)rX%wUu}6XTa^8u!Pl=>uS)(oY{B*?
zTt?G<#)n_ZmI1fsTd%XYD{8mV=<lKZk4okCPiKgBaeI>JpP%=sa7tOCRYK*jMOr*;
zsUKN4`yJZ(==YN?=hw2E9elHTy&>bwbF&W5-0$aoT5q+@YVC<-ZU5$`c*lK>%)M%S
z?7+IhEAGck|7`M(T*-bj$M@K$i5B7d-%Q^;iJbd8?tu02oc4$MM|3Rqlnb1U)C!(;
z>C5R$H`)(}+}#rK$bQLQp2MwMTaN7Cc3AL1wN9Xtt5<N#H>1<Weyf*;ZSvNdFe%Dj
z)@GXdMb*T$+2x7yXBphv7r$e-KlH$(|I9?=$um`@Lo3_vdiFk8a(UN{pQol7e^0Dl
zw@YQ&^Omz4g6lJv>N&l6@2E4o=J6{T?YPJ9PfzzdX0q(iKg+u93ybrny^V1^7r#l=
z`d<0p6z;V}Pp-||a@%cIveI(pJ5vG;wrSK`Tk8d^IQPbH$N85ID#=EnJ6p5MpX@%n
z<d}f1$`S2=;=dJ6M`qkuJ2U(FPlu{c28HG?{I7*yw6yGbxNYOEgKM(GZ|!DVai#v@
zbd&#`Z#K=>PAS%6>pdEKzJ<kjeiBo#(UXI9;y1SL;5s1gtiyL~+Q!u2eI?5J3$16Z
zTlY)rU1j{4(vGv%E)#e7T7J5u_A^KCdxZJxt-AeO4qnMk6ADfLr8YCB2F71;wR6#_
zuF1HpeqqHw?JZ2Z7aU5v+0j#|$lLYn;)Bx{fA71qWUC6><=OXiUY8lM20n|)V={Hr
zN>!9>yX(Jn#`2turHA5KKVN^hX-%cp-nz1b!IQR}$#%He<)|)n*rjo4BWrP$=Goh-
zi%Pz)ObE<-y?XwBW1*U_lfP}7+<M)8_FTVE_sHs_-Wl#+ZcMvdpZs0_^va9b`;ANf
zd2uK!oG+PjdIGCjnd6K*2Oc>(Oxl;)qoZwYu6S?#*G-Ff6NCR<dt@o6`;48pJ1h2A
zfZHAAqv4z_bHatYg2fMgz8So@t34)6E^5<(g=cNKBmR~xYw5b#5_#jEmY6X|;H`BN
zT=(DCW43(xzK%b#W$k*~WedgnnoKK7*UkuTU9spx*<-0GpBdQyIL^-azw3wLiHqlL
zUT)Mp$@*Ez&f-?Xv0JZ|&&URR%rlFNKOoXQ_vzvzvzivZUZURjN~5i=^qa=7hA>HC
z#?qJH5_qyg=jfbWFmZ3aM*nrMmmE0`txDX__RW$yUz2w`<A;fmQr1$Ny??Hka^EuZ
zJGUvaX~E-r7X&uv#L3<(WlY-m)je}#_0*Wf%eS=fZEc9i_R8LT>fIXG#VfmJh%Q?8
z_fov({<>E=du${&X&EJk_WxiywZlyI3fJs?y&_CPbHA+d`!vTV$v9`Cjqt9-d*M&s
zix!-Jbh75_k&C^qminbF{W@o~d5fkBzwDSK`uu^?)F~S)RQ-kKm><5oVQboV2L8!S
zy~2~%@BgF1ySsRaL6m~LwnoR_!=@%D^Gi=z_1CQb7gwCVt}iK($EUV1Nxfr_cE6#6
z)Q7I-kF5upt|cX&V!ig_^>MjGi*pC<{2e<F#oyF<P$2hZ`Yp?MXJ>1l^J&r(T^h;p
zt?BWXTWfxv`h3PM@1)5whUb%-f-N7o=M>vaocLb*!`~w>U0C+rPPH+S`DVqM_s(L)
ztl5tWs<d+!O<jEYx2MF4ikrVqpVfTywOsl+`@bnHO&r&HGbS(hVLLrX?@PFz$?|CK
zBmLnuHqW=z%{yE=Ii;X%ZD_XTI|1jOOut5r&CV7pUil=wd%WEE_sVRB&Ed0KW>l4%
z_Rs$1I_0EJQml}F{F^KJ-_}jP+Y$L=A?M5OpZ^~H(&rQ-xI|)`@2o?jhkW{L&n;DB
zQYk+=CqX!@DA73Z($xo+mu-H=wi|n1V@&Fwa^b`0i$&oRT_4!ImTpyB|J2rB{XwUw
z{JiTcZY$aIiaf2m_sX5yO}n+=mDZzQA^LLd8ai15i^?XX@4IJr$GvUg3=_4mjO7>Z
zZMW<cdg2}>b>GkC<e^Jt%MX|yFI^-0_=qT*U*d*P$A*eGJ68NVpgTRL!sdxdt?`UI
z9vTd}QY{l!wy)nO<aF-LtG1}5x19UEtq!lLYx{OLS2g89#JtllbnDwA_Gw7JJ-(t!
zf2+i*cU;aB8{IRvB=P3_DA?5Z=(${s;j2rj+@fc?XVltS9$4F1w{MMOfa40InO<vS
zx=q|;M0t9He!bbaEjjVn=Lyez?QeB1W4^F_ZJHeaLW5U%amGFmKT75K@Wh0gy#Mja
z^jA%k)r!~Rn_Nteey_4C&~<GzOgY(Fn!f4J+wD`%=)FzS>a+XQ_gv<);ccB3sX5HP
zT{Be=&tsc<kDH6vegDj@C2Y~Px6ca%8SR|$!C;CeQ^Ec3MRk5PjjLBoKm2`?*y{Lb
ztLvLj8AQF^X#3@;jp2lqr>?g~8tDX_WzB#0y^7Dh^sde1$mqPAXOn$*rFkiTbuQi_
zSYuuKtLL6^L22gdt!$2S@12S+`hNK3vpagscRdbhA50dLYx9VhVQ`B3v_xCnUH{b&
zfAl0w7d$OiclU(dku#o(XIrM^1wG%Em7~@i^K5dhx=NPtCR3@V^3C~fvd{l1|1F63
zV(xu;W5IIwjoAVZ+y0d+o<Aj@cyr<PGk?|@=Nepi&$s?o-m^nhrU!UGcUlzIiQYJ{
zRHrp@_D)@az3t6ApWhH{zAEw|;M&){94G6h$9+u5RX3>)n8)HhW71QvBR@9Wm(ZLh
z)3IUGw~8pGU1=+1<ua<)KREYFUvN_M!`dHle|Pq!d(KG^``fH0W!Qbe^!A~vpWpp$
zYvKD?GSlpfZSbjxU!8`t@7RW~w3Rn*4_STTbm(4T<|COY&5}<`JFVN4bSD|lFMF!?
zJY&+1;QC+&^Myj1)Ag*aDt|2QbyuD0YU{V;^@qmP^J}XLr})gDG(m3PqzMa4pHHk_
zTX$|wn%MVpvzz&$6S8+N_kNK+@%_c5XzdBF3;%Y_m(byMy7pVVsIw-Fcand<%ZaNW
z|FnB;PZu?v<+)Jx+P=4n{TAM0AzKdq;{CfQ{=$*n0yDNB)hPD)xuCu_XSd7+=H?rU
z|MxuA(O`E~Z_b!4H1!n!(*0d4m&<QTX`2`E{<mncLZAAvh6PoRmPABp<b0hYd*k|r
zy*?3BFR&b+z9;|g%8dB}zc%We&!4qQdyC@hh5J5CQfzy^*NBg`Deg1x_ie^YLVA}T
zP~24=nL9y4b@31Wc^k!gR9)N4H>x(D4AT-h`#j$ML(N~2_YK+B``-#Z$kA0kGiAv|
z_5|s_Gq|2lFu4BQAXMVOep%CpCso$?TyCAd{=k*j-V8Ez%g@+woexr*s<iuu@{i4?
zPmh+^YVtU87eo}cA3PS<=R1oz<}a(nOW&)zP4;I=Xif~;xbCV=?9o?3i(g&7d4K!$
z>R6uMbzC!4e$8C;^XCtNH;ox=F+yo>#mg(Kq}^xb+}{zfW!1|W4>X&@GZI~b#IMIo
z&U(q`P-J?yDXGt7(OL<u<hWIy+l61Oe)Hp1;t941p%+B-f0`b2KENv3yqr7IsB<Z2
zo201HfoJn~Y%=rwDfrILxRKv(wfTy|2$w@fI`0op6K+#>TkyMx>yBP6|NTctazaDj
z?Fh|!x~Np1ztT(e<np~o^{-ApP@#4CWUk?Pp5|i*-Tv*-^-MNkOy&GE#XmnFw{!Uf
zhwx|vzby?q8y#%s>TaDCH0_`EVJ=4{{{C&c@47RkzN|my^7GyE0L@0X$D7t~7L?{$
zW~Y;_Dd}$C&9=ScsCQ6+);A5G)VXT+&kJO&SiSFu&HZcUW|`lv9)EH0_xUpuBm4M-
zJWJ-dp7h>xkf;Bc&?|crmyd7SYvp%;@xC!7tLUujFS!M~eVE*Leb^^b+39p+j(vmf
z-{1{K-?-~upFIES9e3jrt~WY2^xK}6{wsO$vZ?Oa#D(nF%3eJv-85x-;f210-uoWY
zc%G@{nC{h?&J(d`?fspP!lkwZctkzl^JDFGfwxy|pWpM*{_@A-o7cH!v9(^-k7YNT
z-?`q*Kf~O9()K2U6InKAZ*1CM@3P`S$;Sw_(mg(rJAb`lN`IC7=7RU(Yi}QVf7!I?
zxAtqn@B3a$cuw8MwCAv8d)D=)=toA&o$Z$7cWw%j*N`u0&|h}#<0}Kk-jm_)HtoOX
zu6|B-U*W~)l3z?!oSnSeb^N{_Dc#52!%%pr*qgul@A7~i_L=+VoJtF3=GHG;dhDWA
z{cPS{A&+d;?wWXikllCm+MJdHMKujCD=u`0P8Rwbc<gMqcI*EIytZ0LS9}WV_jrAx
zY3p%gMKgDyG`Xf{XV(<uy6!*gxHryu>JIMN`znt8{{4$}*&_9n^tKn0KdyhBG4X8i
zj?!x#Qp>n*7yMNhw3DySm=$|D$XKs9=+E&-bp^4F#y8oUEBCHUD|{I(x6SAU)Aoal
z!%pOSy0;r2OcDz|c)-+GgnN3?|9Mm2-aGy6<mShkA->1?*?%aRZ@*J$*saF$ekzw@
z7=vfiISmf?lBFNFya<`C+qRVTu<o<jk7I5b-;cSMFy;G(olArZn*x7@Eb-<s_1J#*
zOxt9sC(T>T@9%VfXvM?!wA#TdXxW~vk#z}^e}-w@OpST}IM?rj>#PTwn>v?S-4lL)
zZIz_+<$pozj@p)OyKWwLVgAW0m67>xw==vsB+Fu6uv5I^`$g$Ze`W|Ims!^Ae|Ng!
zo|5%D&BNjSC)Jq`e~!7bNb!ir+f^G+@UsQWDldxvTz$u`%vn}i=z-Fcs&`Q_rzF^t
z7ygR)x8k0(SjDOSJ0D+uFLu9Y8=T)zHGf~S^fQs!$1=QopR|Ugo?RdMs8aOnPxdU4
z_{(z7ITzZ_J)`n7;Ggi3nOhj;4=h+WW6f~|)%PV!i*Kx)vj6DU^w$mZ&K0wiDjj>%
z{iwe;$x`{Uz^tX)`mR1$Uv^}JA@}`|#M?IN>(B6=b>rQh{5ba2ks`Ir_Fore+ElGE
znL5pXPxX?#YV(w`-^Wg^Ke*<$@cAg6kEtg5$?raO$9->U=DF~$I&IdglT-B%#U>^_
zVqw2;c-7%x=&qLBKiA83kBT<Q9AS@BTIe-jV#eI~l;7;@<>!=j{h7aJhl=SsVc*Z*
zM(T=Y_m9QT%eWxcW#ZDme`$@xBKtcEuV%eaT{bN$=$XT-s4FTfnhxG>x7r-zbVPlA
zl)#<oP75?|^S;l?YjuoudAiqg;_17JspWsy{RwmxR&7e*+#RI$wYT)m?U!=(Y&R^9
zzWo^czIndHw9Z*O&gkf#m0Kq4w)02!!Ci9B!JW>r`cFRS?x-xWFZy}7S<G=~`Ua2A
z%?wPZWd*)^yM5dDW)H)B)vM~I#m%`lw-xN$zH`q*^ZUFHes#|3xT635$}}<Fl=&y~
z5A{uSj$qbuZgT$pVc8A+_m@5iPZq7ISfJFo{PvRk<(|icLW-m&9(gBM`ps_NotI}-
z93RxTG(7igfBVTUgsJ1j7gi;&9cMP|*Zj8MXGvg+<|ZD=k2@xt92MFWBdFD1Fg;3Y
z;T)Zbrk38Sd(t2Lo~Zr5Y*y#{72BjPG(TP!eV6C%G54*N)9%Kuf1N+~E5pIG>mMDf
z^~;@lo-?nNsWfDr<?6Y_uXj$;_9sh^oO$t;B~g4o*Z0l?du~Wxn|DY0PjzbVJJDma
z{GW!befIj*<_nB(*DO1mq}2PY(EH2hty=F_e3`OP?Inj(&fS{0jE9G}KAGiWsMd0D
z{pxoQOdlpsS<vuxo~`lr=Q_E;Rt3DD&#A9pKTA4?tuP{K-!I8`cMTl{R>kjKtYISb
zn*DIoQPv5e>Gm7E54{#x#{ORS{wLdF{?#w-_ewwe9eTu7_vDLa%h>hKZ%q3ci;peZ
z^}@2i@XaROX_;Jxn*s!i7H<gq)9htpH%Hj=L*!P2&lh`FeY(S=`$@g+Fwgg0ovNOR
z#aE5ocKobvcl>eajG4N%%dWIW7mG}e!oD54kGS%Wc5W!&y|mw&VXe2n`uhnE^Z(e*
zj4wTvF|qZ|zhz7J=iJ)&m1EPKqi5%7A2$B}@sY}ztn0H(&Z*mar@qp;o+K3VAT~)#
zUO(x#y}d%U^Z$}}8&YP;oDjHET+@4G#hY1cYK}@yEPA_es@fN}_PuMkCI7G4CM7?g
zbNaVA3ngNf@7?pub8B?7G`~?nVdwoB&!*+<W&7r`t~AnPX0P@ayA`{|Y?gh|E_|O8
zpSJeqzEh63Pi>nQ*jZ)I^F`=sc~+3a7U`0of9*uwQc5m`b;#|KnV9Ulep&j%<%a@_
zbdHC}ISP9w#xS>iV34=4@@BBuz5Ja2Ywsr$r=Rf2yw-nZG2^8Yi(>6pt*5NH0vAth
zTKY)Dv35r7>HdhV!okXm($9Pr7UGh*8xhK)KI`_Y!zK5RwgtMT3O_5^&%^1OlQwx#
z)5|!6$+bZ__wIhV+iGzAw!#f73CnfgPRpxA%6u`>+*CfB=NS9uiY*o@Tbdsh`ACI+
z-SqX(%fsu|R3BZvV1H?oq(I<$ri|c_jo~^|f-n6Ot5nYq|FB5!e4JOl(T2c}fejh?
zdZqCJ?~_%p%`>Tax~V{!f9B^;CvrTrnXjxf@||2|zNkz%N{`_q$H6Qgr;Z~TvjqDt
zg#TfTo1(sLN`i)LkY1_R8s5dPt8O28_wV4I_>_ChF*^dATrZXtv*#VDpIydsGDbRh
zhK%60h4#{Cly3k2`jx99;Q1ag5ywMb;;uoG`y2yA_eEN1i!836rFnIhh{B%!`9i*3
z>WP)p%Il*3XQzA;tE}26ZpCWumFj(9)5?Z(2cit48iV%=%SRPlFx_SNc5ayNSC8uI
zTEXJ1ubNR$56s)3Hi5h7lYqJR>aSmCl{oI5cZavtXoI1Hg4M!YP9D!yACE0|cCb1>
zt#_NTc6-guVm1ZaOOtvl%6|(48|~Vwq>@tqPULX;l{Lp*n*<tvM5fxTE>>A8=X_i>
zw~UXq_EJIfPX6%7sn27Tcbs1kU2y8jcK(idp^}x4`D|xKdiT7~V^59n)Sof^NY;YW
zeRu56O6Q2JFAh+gI{oE$Jq3ej3%vbe=AO-F-5NF9Y<cL~4W)C|zJ4>`V*amHAC>-P
zD90b`Jzej5|IfKa(>}HtuKuZ)bvm?U`sp7Hhil(*emVOs=e+XA!%|MN^Uq)3=ax`i
zQXPL(?&q6LZ+|A+ZkT&@b?W;kiYosXKYLQbcS`Ze#k+sDuPE!TDSLG@#`vM%R&#GZ
zwZrizY#)gpzIB!JMs}CRss@GL<2!vzxnk}|@zwREX8sIw;5(q3v8Btl=J?SgCwHCj
zl`L*lbI{oNw*APC?u+Yhp1IcK?bG~KXl=rurWHE^=cptYEu39b!h0lj1)I_l<;uXF
zTk~yBC%%%k`}M^qxF_?X`^Q;_I#O2qe);sl@5_88TX`$j3m;`xazq&#)_&V(A|q&f
zD?|C82JiOk)#W=JWmsH(JLy`*#e^?jy?EulWy!6RUx?^k@vc@{+3};+=k*NFqFU9+
ziA?5q{hnsaW^Yi;n$7s;h})TsQ4iKiyitF>+S=Z@lTD6AI(1t~(k6G#zk-R`XBSvK
zdO4{uiGS&lUjYjz?bNw_XoL8xlrKrA<63sM#O}*j^-0<J_k5#!5^^2Nf0w_hd97!4
zWJ&0hS5CRw)2BD3KDo!;cK<=@@(c^<7oR1T&5~K0=W}ZN3coF<_N<)$<>!5$t(8}{
z3ns6-@M-U%FDtelSQEKps;$|bJqqDg<@XllZLzFf(l>=&?M~e7uJ=CsVy5j~_{pAE
z({1gP178;U-Ksx(gkxbMYl7c5wj2S$yP8YF-XFQj#obf&)uyof5QoaCvvYn-y(3(=
zV^ezHZH~IHpMS}D>us5Hz@uz#5*OS5s~;DOC<M95t}dH$!A(A(<xZ{F*Mmn*mws<*
z{rP*XOM3dcw5{*gCni3XouTsm<H?NJw6mdoyJhd@?L4^l#kyq$Vp*F_%r^5#dUoWm
zx8GIB;Wzc_hb?Yb-7UV&+{AzR`%-n*=WAI$ca}bOdTPVbm19(Yz|Y8TkI@H}M7z(k
z_kL?!&F#I#!A15_+=QzK-)yMMx{>{?aMD5TN9IA()R^9TwKdIA;+mYMV!GZknRWJ_
z$Gr`wYT}(E-_7q(xHc=ArS|&FMPVnSiUc;PYj~9VYB(=^;PuZq-Es%_Jg=IswyHlB
zl^jD&u4rFxdbK*CaMFbAnK5g2ZR4yoJj`BWf3*MNESapyKX0+Bs0Tb>5g@7dn|VW=
zS0S6oy|+ux=~kJfK9Sp1Jiq&urNW<Tp)@_-vKN;n#P;sD)4#oS?>eu2qTS3-uRgJp
zJ9X*%nnbC<$rXR+bm;0FXN<|OwfnRs;@*ZmpCc|k^#5R~c-Q6P(Lej%p0-{ha_`LL
z1K+HQ_k3G5+1B=2iph-0tjUh4DJ`Ydf3^0jHMdLL+|#1I{aL&4iaB?!)^84ea$`}>
z(aM#de1E;2l+W|)=!u9rJ>L^ue!O35UM|>rz=+9u1J}v$B_(s^6c^kwUNk$aMzKC4
zc*DmzmI<rH_e6#$3T`xPtNCB_jVV$$RD0Ue4c~kxHZoiL3)dAT{VQJQ|6J_RN>4?*
zsV?Vwu2t;ZutNOyrs7%YZT4%<moYC?EK~V%YrXSq-_2WRHE7u^HLq{V=RMJTlQCoU
z=egTb3wL<QuJ{yseXnnEQc0E9w!HZbe`=2FsAtRNo!hJ*c6ZY1A3Ma>v&%lN3awq2
zDj+XkSf3#`-Ox8f-R`&l#=Wy`{&l>ccXs;89^UnFS8sLy4%)S+)7beyz*WcX9&_uj
zzHFbd#$LlN;BQFH#Cc|&*Lli|?H<Hv9y_EjqjB`J*wozG^+&JxC2jM%6_wiZ@!q=U
zqSfyuT%#8l`cB~YoHCVBmF@oqpQU20WshBCbv8Tiv^sR<%?<ry4^=n*XgcNdNxC`Q
zDF61265|b-u}kdtddyA{QmdKQb+GPP^L6q1CY_n`$4aX0R{G06`@R3czEb<ST6N*6
zzH{|>o-B>N7ra-8W1Y5Xfybk~DFPqY-xuF-BkS#wM?0QPZ(OITbnTDAhKPF`t|x}>
zSN&7<X;+MM-X-l#IbkYokEe9jluz7PlN$3RF89&zvSaKzjYp3*S+CjE_(pAM?#;C`
zPk2UuobdljR|(_7XVbrhXjpPAv-#`2btiu|$25VTt`X+E^FNEsU7wU(qkimDvHF`A
zJ^FJhPc`>$^4Y<uwJGlB^f@e@ucf9i@IUtuS3V-mx#jVqe#0j_?({Et=X^!=PEljb
zk6w1Y9@Cy{r8-wQCi(7WsDFDf^+ndTPUEu&>ki!#tiAF$e}iObQI%wuSeAUrnqLZu
z_pDNvUocMOEZlnL{+%n?1#`FLbN;&2|4wxmcZ~bbttICyRHgdY#4>iJaMkslnwh|F
z`Jsu$X8Kn*m9UGSQdX?w|CnUxY5n^=N9|4*p{3Khf?a+*ur)l?VVR$vH$9@f^u2ZV
zrMbG#e%LJRT-n{W<e1pCm;3tUVy?JG#oTS*vy3-iLasRMM8x;|^D6V4>dwx$`oz?J
zFXXw5eYQ3KhUlg{+FfV=Se}rOsEXj6Cd~8tkb_Ltu_=iuCFze2D3$%(vtr%!jMQ6u
zQez$+%VRBXHsO1@KC$DE5aT<w)iy~n@1M`THbY_8UH@AtC&f*^_}q2AAy>V<U2Bzd
zCtLm}-ZVBJsrT&p+IKxAw<K4#yv**jU3~8$yO`kRwcmF#3tjo0(ERiGMd#HMCj>B;
zgclc0KBaiE<X@uh?Wgn8BI3<v82fBGeN1e=Ud-fWeNLC6SLis41+`V5S=n>6CvyFP
zKfF%`_sV8mJd^My?sU?`ElHkAdP;gzjs=;_eED|iy4g#+W<2w|*Crpv<R0+z;JhEH
zPV2+d_}e~Nf6Vz{_nuAaN38X_z3CbgTmB#N2omkRYWIBe#?x;f=QGS-lb<dTYb>?W
zeT}#2;+ShwpYz*1x8A$seuIDiyvygxN<#ErDu>LTK5u9L!U>03XTOg0d$TxNT_XDF
zg`#C1I-f%C{CTyYPdntqlIOY7Ct{Dy-FZKIQboc{v9=5uIi0(m*OpE?{lvxQRFcjk
z<zLzCx0dXfek-oHKG$UW`4)4_`(23vQIW+8sdk%IE;ZNk+J7g?i1ih_<YT5AU3Gg;
zJlW1UsnJ=7KUwRfdQ<OJ_rr`cwMrJfy;~4F=lbf9I}49!-U<>t-SJe@{nLXNpJTok
zT<<#1q;40w^-V*`?v#TLe-;$}*`ui;yhm%E$oAL$t0$<&FHqGKy2Dpr_95uON3Bw`
zfK`n<S6;S#`qW!Kz&Uf`^R|PNo=r8*_;q>hyE>a%4%KB=-~A@FuepCDN9r}_b=h96
z<_H(z3-h1dlI1=BuJ`hm%%<sGzb>v;OS)sBsM>bxc#8Bjr#RmOI+;g0vpCP6Ntf>1
zc;Zzr%NvWZiAf6QTeAGPOadBpMI!b;Y2b{o*je;6Ngzq|n$&^a_j6@8eAho;9=^i$
z$kc;Z=f76IVkV->v)rPxq+<Cs*_pEzElVtXYBX^k=TBopRvuf`WW9IcQx1Ndap8mY
z^~+0C=U8qsQGL~!|Kfqu^3HqKyEo*nPM_nlF)ZabQ|rk^@BZ4m=}$I1c**&?_{@;l
zrUyQ24%qB}bH%UsjJv36vv9|Z!sTW^G%I|r3J9%X_`=my!aSwjtH-u2^n3G+`&J1e
zmu>w#Gz!f9I@|-!9p4b?^u{D;<=ZP)naaD*3f*^U{ATPpmw##U`%B-SCW>ave(ZT%
zVbZa0Kblt066RU0`K~8-VYTO_uR=RE?VKEYyOTeeGa&BXO;_tJ;oaeWrulg<4rF9;
zJ~R+L@qqED!Pm^3yDZE9Zv5&#U2wY0;fIUuU!^R~nk$s`I^NVwk7LW3V_HA=@bN^?
zKmM5IQjqn2=|b%UBb8U%Z(i(raP9nuM>`ZRhZn8cFunUn#JY?<ri<1s{(WlI1Eurl
z-+XJHS-10`zR|CzImiAb*Lv_g-m7<3KP1spXU0=KSD!BS*9Q*Q6!^_wI6YC9bMCE&
zT&ZQ#@2qpz&PWQHU(2+AL+8GmmzG4`2|VkYu5vYpr~cOVt%CL2xmK){*?Bx@_Eg7)
z;OC3xFmF6qT>rp2EOh1jc*D+Lza}uBShV|5kL1hRlOl1V`mXP<$9zzTyc_m@N(oo$
zYEF46J;(ooqN^X>c;yzoaB_O}pFQV-bh=+HiwyN?>2Qqd*lTY5lZ!3%)t4A`g|r=0
z=LGwCa!p&Y&w{_NAiwA7!-v_`s~?5Uv<!N{cvEin&!20mLmsqgIGtV=bEflR#NRh}
zH^(g2b?%)d>fgVyg(18A<gCLJibRfBlvzyW^S=GF<hSEp;W=K4na{r!7IGdwR(<c-
zyAI>W$zplG&z+eQm0fyw_LV=Jm#ms^bq78v2wT#y^3{Cb{B6ZLOy*NB?|Uj<#hGnl
zd;k3xmly80+PAXn@J;F1q&4--FNTDK-sn^5qBYjJ9f@}@#pUJ;)yaR|Y!Vo%_0;wC
z0>u=)IZje8TP}qMFBXUo;neF?^lr^OEPJc%I2Y5bjW_aNpS(14$6RZvS<~xEmGAHG
z>(K1GKfT%c^tbdQD<-^o);BkN^SkV#(@UQhY+ibqb!*Bxg9DSEifF1mOPk&)RkOVM
zTRiLZo@p%SWbFFhcKcmOIkMo+;Tn}2z2cis1nobz_(RRT+Fqa7ET5xmxi;BouTnfE
zo8YkL(d)XG31Jzt7qPHg+s}U!9QgaB-wAc@iOcj#7T4@K(K7i(S)viA=I%tvho5vN
zPg8N1b&V-r^=~eR<EkEkJfCISXJ$Qoc%$s;X5p$^+~vQzR(<)Pvx|u*glUa!rkZB&
zuXEi8w$E|1;Z}T^oA%@Er`hQjBUUX?P|$Kbdf@WgE|cmbvX>ZF3984Ge=@i_`x1M<
zPp4V)vq|rsPndiri@P>X-|h13%9dS~`(xdh;*uBL=H9-LU)z4!N1hKw4L>hmoO7^*
zan?j*PJv1BM^&b_U3*c#=yQ#qanRfBoPQ=+%KpFhDeZh|l)n4N#-3E}0t3hHI$K*6
zyLnT&+LPR`FI2qW#r)9c=oN*HEGaW<Zd4hF{(a=x6PXtqcYO6G`{|Q|?q8E^ESGVO
z6nS-XU5@2Rfgfjm*es*{<6rG$37g^Pd}sQRwiluY7x`Y;X3YMvWMdG^zq4j<A`crL
zntSK-zU4~_|1v6Hxajb-oyAO{N6%KTe&g!B-IfQA-QUpUBrUqC-g`#9y=(BvmZiRj
zT05PTH<)I;RN30To7MAQ46pPunMB^%=epP3t}nHG@3(T#|J5@X3Z&;>OG*#>df`{m
z`<0PD|N3j+SQ~a_ZL!kM0M&IJpAWM6c$5|=%Ij6nIMEn&<@28>HTzeW7JRqsKh~q!
zs$;uY-@1ac>iy#Yx$`2{`fbaDzDZ7yG~IWj{L<q`dvX#oIk*ZQ%}+Z0xagrr@S>#l
z6-iHY%5Fs)1Z8jX{P^RD;wh!)H^bUq|8m%+v~jvrXVJ5V8FzPxMpd1N_PC`iy<)$3
zT+f$u%fAv?XTFC_kFxz~!p*8yQ8Oj~+V8XXejYAbz)@w>Y|wdJ_3Pp%rs;3rR9t-b
z+;rc2qs?Ylv*v#ge=B`@&33EpqGk0<v`zaiRjyun!t`{u$?h<TXeEz`h@!s%mzPTk
zuWYQ^uenezcg1hZ`KnF9r_XR@=D&C-uzEh5hWDZ9xjuDDIT?jA?vfS`3v&W%^CrAl
z!gp@5sPgA07QA)M`;UBUNIA=Ver1`zc;MZNdnaD|tXrGz;_4hVwS4XcZL{v&|DoH(
z66eJmi7sCta{FeW<h(O+Azx3~-_Ck?v@q~p)3Tqjjr;1|-7OwioapIs6INo%d%<GW
zzk9;3Ck^im?%k|gu=U&L_7ztW_Vqvb!gDJ7(Av`%4z4@m)OG8P%CcMAMOtq)RI9A-
zt9yIE?kr=F<s$*N$DJp&f}B1EoDEXZQjbwS^j`V?PdV}R>1&q#+Nz?jH>u}Fo^d1F
zwE*5zCQTpBBVG!;k-cj=>%`}nx$6X0NniN3bAmuqym45!?DW7y-MWyKJ#lLPJf;?v
zs??_^Oq+H8*!j0>s=YrS4Prg{)+Qy`<o;X1+yBKEWqPJ^EZJu|O=04iYYoRl>)uAs
zm%TG9J5Fv}ZVHbxhnVnxj$Qoozl3DEZ?$&45G~p-{OL%8kFNa>g;ep7RRT@t8b9iY
zrENUuq|y5E-?ASmzukAoNpz))8GPCu&%aDitohgJ^Y20;_gzicv+85U<FDd!^X>Pn
zZgTT5Q{u^eQGcCr|Aa*Ehg$=ut~bfgtrER5SLB%Qrt@EpGHKhTJ+=P-RP<Zq-K?jx
zWu0R7?fq@}Rqr3)1>4>Uo*{QPGyYeQ75e>U@&xJI$|1>m@g8~`ixx6i`@ZdpTwN8h
zQe;!Yhh$yTi_14`^8G8s+`RYHk|(iK8D%Yx&$s&MCi!PeJ2TVA>c-539XIx$vV7F{
z^uzn0ZL&}1iFOt$d#K!DKeD7x*gLD=-S*4$_V)z}p_49eT5Yi+=Jw(%{gY~Y9yagZ
zSiRA<>(w*Q2fiI)5@MIOE%Z9{>(GW+rjN0T>u<%GGkgAI{BFVN^q}KWCFd>?d7CX6
zc1uN$slL>8U1IwuMm$}^--?+hVn_b%2XhK!AIL2`a5u#9s7-~#lZn67e;t;tyt{SX
zw^vVIFJ}+i8zHnq?BZVMPaVHh^^$}(T>5f#F=O$jrxBX<wFyaTd;b0QXIXjYXaBS#
zJH*XRcP@K(O)&P0#)mxNPXEZv=A7EZw8blqUVFw9dg0HRKlfL4GM@{T@HbMeT%&)>
zQ0D9`R;x+9O6||D9<j}DzG!&xtIGK!{Jaxbid<Gke0sC$Zv1AIhkrTL4rj8s?b#Ty
zNN!rO+Xb)321?U)qb}`RDN<l|##L~$<&1mETPwaB&t151jk>wE7^~_bE`#fBhcD!B
zd=}4tui^t|9FtWI^DO%pdtD9KuB}>V7kKJ&z=bF0w*Cq5o&Rf9@E6+!aW`lD-6uY4
z&Y`XyWr~?zkrSTme&DqtsQOlO;iu)VGWWN4x^eMy&VBQ=B<Wu1N|qN}+x?HexDes;
z=jNKoeaw48f1ZDMr$CQmRjkzE^o=p=FPXmSh~~O+_+Omc!N-{!ZSV6l%*|lcv%J4*
zIn!q2sQ$HVt~Y~<^#udB-!tWKbg#G+>M3-@E8=6lu<Vwp=RUgV?78f!v}oQZX5smE
zo^9oi4z2t0ScP@o`l=j-b!)bqOG?;P=CHWZ=IPONnUvULk2e{4hi|>v*uT71`=!i}
zWsX~?1q6!++J$U2NxYfuX8i9nXHgHUS~TyU6GszPB!14jKQZn`ddG_N7wyh3wz1pH
zopznyclo1;_D!C;htFPI8NxQ_{ls8N`74LMYbVFtHC$%2bM>UK^+G@GwNJd0W7xp{
zrLx9!YXYOj#lzp1?RGj8`tr`wv)81!j`6alCsnkR^#p}1>$UvwI4NhAQu(Yo5?on=
zUwGe&X+*DD?pcz&R^zl(|DM>#w?t33b7rK)Cfwa-qpA9k?RwDiL+ed%e_{)c&c33h
z_-RdW-LzuvH=ETe?SF|_WSth_)Yu$<_2AE0E-4z;+pbBydHws?&Uj6hYoc~@&gF3I
zHUHiuyW?EuZ^yr1&Z(8Z6qh=q-@0Kz=W6+5T?a*3m3Ji@eY|t>)SD8a9FwCm@5`Pl
z1O;?iJ>pz9ZG~{h=~_;P6puTpch4)&FpDhv=WDrrNp_ITlg#;@hF)403A%NG={tq=
zwzGvT6L7g6YWZXSx=tOTH;mPspI?5sx;}J%m}S8n&*kFhW_&I2(wbjpdck_F*qjY6
z6K_1+x_7JY+w^%+^(VLe*7;F&^Xjv%!qYt|t9=slylx16-yN!J=N9(BD1>Kj4R@-a
ztrPF{roR4P6Ep1%4;|E>Fvp<$$)m@!w7++7ta&iY!&4?~e_g>Bi5Qb@bEh9+ZPV_a
z7AbP{+w^m0UiqsPqxd|vvk#v*uy)6h*yVQxj=%7#D4BS}-QuFwqq=ExqL`YGc^p41
zH)qG=6HTs$8`IB=ZeDh4KIhGb9aoe^s*<~N6}CC)u@pq6p1!c=+voGF(w}ea-hQt3
z{1+X|YWC*!0{qtv52$`_*`)kWPR7?X;OC@5l|>eFPo2GWX~q02=eMwSDICq}+mL*1
z!wlUXpVZE9Q}1|pMMsk#Pi`NO;uEi*9Tc=zTB>I4=i|n|k54UAZo3vA=DE{ZgKN3*
z<<Iw~=GnV%GOO6r(OaH%;I5%muSNhf=Zh!T^EEC%>|^b%pVTFi?H~W&WX7(2p4)m2
z9qi_|F+|N+vn@dG{z=Z)k+y<-8;;fcJk4~p_$;uhDLYBzX4+x)6BCw*?9<QkwDgSE
z)eG@-<yd*^R?x|Z`|L9{U%#AZmzOYQcX86DlkZh7_f`9=94WqdPQLQ%KPF2PKh+-w
zw^Md3O|@9`k~KR~uZsKaXQrS_h3Z@h&OHfswK^w^oHKu_o4<bkmH+Z%v4<vJHz)57
zN|are6&5SMY8Fd0_pLgC%G}PT^*##{S)Xs+<rx+hCse%4!Rcm7xZ)dS&d`j7DxHPw
zZtV&yjz8J4?wO<BqX*{6Nw2Mr{Zfd#pzi-wYTs+|7k>OQ3zMF<AN$4gMsd5B_Eh1P
z{nOtqRcdr(TqPm>Y0^sDv*F(pFNX4kvzpCaaQeRNL$}NdA&tj>zjUuJc)oPQD~nm`
zTX^cu?7J!9_TZ*t^Y#BBtil?n@AQ7DnlUBjb+>BTRv+W-{R_SZ$!yxK-LC&>YP!z5
zKr!C+U7MGli7pA>@vP;}tW))0wI`mc5{tUz_}C+8-=d3q1le=EU)DVAWsqia_S~M+
zqWmN5+MXn~Y_7>!x_1Iv7RBhvKJdHpYL$@muEUx6h4+fREZc87{?%P+f9kJoS=+P@
zC+7uOTK0k6FPmmHFS$H3Aghn-jir74ij1FpKdl8<Y~B6%@GM&wt|unZ@?1r~Sdwo%
zduOw{((&Rso@<@Tf}M-kDlh-c^Yo+1(k!XW=8tRtJes4ko$H<VLz5y-iG0RMPxaql
zd^%D1==Lg&Wp*W!bGv)j9<sM~oX+|!uW?^o?TQaC?7T%LPFxf6v**HcNAKOi(+@N&
z2p#uH_9^Y{c^z@HtJXliD=XD~{?YO;u~B6=;)2Q^{yp}t=xN8#gk_weS2j7nu{2!j
zvoh$t(XRD}4R4%`D_s%(ZvC&&|FsH97mkEY*()1Yuk}mi<N4f&vtBjJDeEt`-C)`G
za-)Hr<&9|X?+;`ztxf$EaaArkxj}l~kxAzq+do&RyT-~DI?uoPz17?N?|HZQ312s?
z+WmC(-$JJHH4kQW_UXKOp0VvV`<ZE4i*3#xzg77&aW}g=pX{-=dEH{EB_5`Br}=%1
zjvc#n{O<NYXZ$5Esjl7aBYAAj*@?}sf~{8_d@85mz2wVU>pwf#TOao=yUBm+)|>Z5
z1zV;c|L*H6va@cnj>VL-@-Z*2truA0oL6%^j9<q6(Vlyqc86_Vp12gnwL;7zjc0-3
zwqNfK-YGKw*K^iIJz!tm=831L?knLA-YL=|;A?&Tif4SGS?^pskDl=8Yqk1vw>4&N
z5c?BwY@6wy$GcYjEfagjoLlH|xwks^+OJn;GeUA$veVh-_xZgxnN)R6y0!9(*n2Ln
zU&|ZLZr^$Ny@8+HmeBVX4A+^KoBl1Hp|W09;)<^Lq+au5X%A-ZuC$$aC~m<mBL%&<
zW3Mb(1diobs?Ym1CwqUZMpb*{rMJ0T4Ib{_cItB41@5#Nm1{NyebWk_#B_hEgc);%
zX`3Ls-nZqgFXQZ{#6NkuGWO(_jccynjyZa!Wc&XqGxp_{f03**wEOwu%R;ZyFa9*B
z)b&KkD^D@I5&Y`vx9V_KhXoJKSU9<hL@y@z8Wvh5-P)AhurYPpw#}d2T^gAfwM9Jl
zO%Y@`_NUwYYv&9ly-oMS&rII#mg{)%K<Ksy{fa){PVM1iGU+;Mn^GfH?(QRA!Oc+L
zm3sSQ=PIxNWy`0YH#_e!am7F7<$Je=99PK~yu3tfbD8)N@w>)dUac<5Yn8Y9dTFfX
z_@@2lz1^gn5{Kt(yZPziKb1*gZdPV*?dK~cx^Ztad1Dw6TBx|Qb$-U5)b)F%CjabU
zVB4CUIFYa6xc17Yz07=E2C=hjB6ciO)Dg>Bz#N`BJx6CfU+|jF;u`LW(~b(2^>lss
zsM-AB+>OJPW{NYt_)d1~f5@7zzG=lVe~WjC)9y#4Es)=@UAuJM_Z+QjWh;f={l4|+
zsMl*g&b{-LW8_k1cxfD2_wa|4&+$tSn)lXrSZ;m1v9!Xe_sY=;lXFk?=1oi87Vvmu
z^_rrMt@~qpyejj*q-Gf(Q<^eArl<VS>_5DxnJ)DoC^=dqr#@Hvg7J*fwEj~kIl>QS
zUGzB@+K@MC<<&by)1IFSXJTW%{G0RQ?Br#)RxC3&59<7U$WCQz-zJBSQ;U=5WN0id
ztZ!M__I8Qo4zGppzQy$)QoOoJxx;mNgoDjD=eu*##JLPsToV%fd^$2IqF!f1)BSaI
zJ736Jc*gDM>*HShcxm088C$i#I>@;N?A8okuB6hO?wsIusdZoO`MJ-Pdom-JYft9W
z%e`i~yjk=~KoEP@eo010y-uw(A;Htn>m+xybZwYmI^E=Z<eGivDH5D5OQ!Bs%CWJJ
z5G-@)>o@nm`srSDVp>Xe!P!X(R;mFn+Kej=xUHjKhq`M$5l(-Yy^!_Jnd}mi_xF=`
zEV}Kxt}U0{nfddIy|PovU#xb1W-h$+;^bRuPJh>PSM{8Yjn^ymxm>h$bMu~OjdO%_
z4L5##x%JIWv$Rys`F4xk^4~wZETwRMrbvh4`j9&jirmWUPON5Ld2v<Ma&}wMYi%iB
zHx0VP=IW~4f1;e>Y9e-|ZkJcX>tkQ+-u4{*GQ%(S-<14CqF;nd{N67tb-bTk)ljzG
z)1rOT{C!7bJEyz47|aq*c^I%#cIk&VA5<q)xXAo#vio=Svaxxr?QW)1%P$v}F^dWC
zwyX^-|0%gf+{0o~ev!i5BUX<u-Vw~&aKSqF<Bq8(Hodf~U!YO{v#kE&IpccS)dr1X
zQ5{W8-7C)iTzsNJz3kvMuh#mubxE0Or**s6_er14X_%+-z0XT2y<SJ<?Cq<fwb#=k
z_x9{D*|%|u?u*WIkF121x)f65pH8rSHdRB@<!E-{Hj902x3jupmHAJ_`-dc-`75Wi
zWkKDdXW|kuSr1hDrq7E%TNjeNTP$a$^S00rQL~Rl$-H(odm3}e!sqtV6_Z~~;km4M
zEppkXeTVMyRsHi(dT=+XhFfM*nc3=Wztu`MO*7WiXn!(vtz*^{wtf2C;i)jsD)af@
z_tlgIB(r?7=DV9II%8i(>vjE$A+I0A%rY?T=;k`~+b^+a@?(#p8KE74;r4-r7MI^A
z#V?ClbMZ&;h4*3N-~5jJSm*u2Ug0c5;1_oj4at4Qvwm(Wy7+MOA1U+8DJx$F=<GOF
zd|3Lk8%Oo$$u^qd7s`?fIVv}uo7d*8liU}%A$wt9$AtL0r1-MAbH#2h%T_&F;8h~N
zI@2TJwoG%3{2GOqbI&+-c_qp9O*i^4m~TFD&5ZAz*KHye3hmL>w$E1jwk5xSKc{Mm
zu%$qy=jZBexvSrO5uB9dxhSy4!@n!?<KF0ihG}wKj4CMyf8{NY-?RCh7=wH0&V{i*
zr&~#%K7RExkNhh)-WM_({Fk+!%v`LKng3;a%8W;=;ysMN>uKJ+Xx~}m63mgfLuXb0
znuQAN9AC0!qb0Vaul;<YqA^`&mDHQ5^#ZbKOT@QYOG-_3?%@3JZq>E-2MQM-*io#r
zM0oADe=)py1!l89uRgkBk9<H~*?!LLk=bXjxy)X9ZO+HV7j|8DpQ<jUn6f8-=l9pn
zyvqu7yFO*V_wcW3IPfg`Z868`FSSz9m2VAnS+XiNEL}b8V_&_Wb$rbwpCuuG%I8(=
zEIqeLOFVhQyd!76v2WZcQGTuFVA9SzbNZ4Wh_`x4Y%rbgS?0O=`qX`CAO1}2b$N5*
z_Lp7Sa`(&D-)YhQqS+eFEn{NVu;+JT=ucK3@ycMM$p^f@1iNm35^y6YFZ*>m(<xqE
zC4;4P?<(FE%}?D{`rIt9&#TRD<DQ?43)W04iF-a{wRmmRW6#95Ka&Nomwq$9`*B_J
z;Xsv1*JPbMJAT(qIql<r@37KG=56sUuW}p?u98^CmwxbePFFyO!eKVE$i41jmwNpY
z*EQb0wR$e6nd7<zU!^8}Ye|?Dn94mv!Y;+QRD?a`xV-X)bv?_Utx)+eH?#P+Xt~zm
zNjoccZhk1i78Yy1aKdGQ53kQxM9KQbvsX<%|6uV{6ZV?uJ9&-0QPSU^Iytic=3ml(
zHn#BX;heWV?z5UZWOG7-8$X_V&md8fyL#FUz0)eL)8%DWUVH8@k}&_zW#@S@Kcw2q
zM1*Hf7ghT<r}dDL>$-b7hxh5dW4gE7Dcx3YQOA<9yiTX;Ln}|1%l7?DjE!GYVc<}H
z=i6D^7zwu4^T*c~ooy{PDX)*5_a$PLQ@fdGY{!G-7#X9>$9&H3xuBn~8T0qvqV;nM
zr{^8tzvbne8|?M#?;P81{9@%HQ?-41br1JF*|cJ*!uPs8Pgc%TvS{`2>%HtHfBbID
zr<Uy3+*${pEf>^GzZWZae!=-kW`;_v(;li?-uu~=H6bu~n#Zav-ydt1y<GRkU413b
z(WcMaZmHh=H0|P)$KRP;yMDzy2#;OU$vw%bS8mB7u^pFZwm9lAu93fSGt%@=(>tx%
zvrm?u<*rd^S|XdhL*~xUt+GE_xhxqcw7w|tb$FPxK5z34{v&*qa;7tc=2S>ru-!9@
ze}37{RT~$qWY+${{6w#5i=xnt8)=zNniZ1A|NL$;a9gbY=lGXsYj+8Wgr13|99DlG
z?JGS~yY5dt(@%M}2a{IEcQN=+oP7IjS?c!(l5)S|ldC3ks!x=SUD)tl-pv11tkt>~
zTACcGr9nQQ{+Wjga<@&b->dpY_rvcO{{&it3N7qRqug(o?z2lMZ%p04HL&V8^O|dO
z4~W>RyQ=l3oMzrQKP{|S*1eonu$X6y?+wmR`$`%wCHqHRTfe(d>ESse9#*DkJxzmS
zjOYKIH+e6)U`q2by=9a4&JkJdo5|~Ld28F+(?)_dc7Il|nk+I+4?LrHGSkcXsQ3H*
zG4G5GL*CElESbbJ^QB<rT+uf*x8G0x&$LO=o^xB&^;zkHEb}kxR2VOi%}v%lzDDNK
z?dDw-Eq9K85IPoeY1=;Dou345a$b`toYP`!&o_Jjw<l{q&O8)v<sUv{?u{=Sm5zAk
zG6yJ$^z55rw0UZl#%+fGhw8JI>Q}bj^Ii7QeX7vypzd4ZDQ8v&{|~a;lI-nwu2FKz
zkCTd$j0=-z{(HvKw|K{=CE}|K=kZPuJZN>ga0Yv1(GknsFG^P;TE1OLcgrxkWwSoQ
zX<bNKR!ZOp`K@w7(ublS?^^Gs!yNS|oBy4o$UXs?8&4<Sv)uP);_40g$JyS`h^pZ#
zy!EH5j{l^<Lb(NZi&mCSiQk>l=wPP4@bZkae1{&|{%q1r%<VsvsO6bhyvW9IhuoJ%
z=T$WRmv{VU@|h_t^dRi!{OQwoop?VfuPbKtZ2qGOY!+WVj-6nT?NN!GA5~o~y7$EL
zUpv|+SoJ&k`8!3}73Q4!6tF@-XNsj4=ReT^!${v#-jVID2kd4UtXySsW}36l$yB%U
zc|kKutM`9?WjyWNzP%@JWzGzC*{89{l25|j=Xp%@<azp8c57;`h_Es5UaWs6VaCcm
z>%{M~%bfc-t8Ld**~tF*8*{GyoanR0`dFdNE~DK?m$hD=`@p@vpwxHEzBLceyzSQ%
zYCT}4e}DVQbj6$8Z@oXi)V#0Jx959I-i$MHD^?!4#=pO6&NY#%v)!-lnAn{6TBSMv
zRYz%n^M)_w?CRfBuD>{2TCBPLdE;#PydQ5x?mOo3+_}H~wYDqAy0d-<&h|S$k)HV6
zdc(~t)@HM0cWZNUoO*Kq(wDQ3giha^x6ar?Hp;6_tK`KQE+&gw>%$>cr<l*Y>Ycqk
zaoWL!U5u@!%a8CIi88I8&U*Ot#k~*ChxQze-W=cjG?d48g~Q=AvHE7NC1=bR{_#G4
zG><Q1mS<$nfzx_B<{sB@&x&(Caj3*9vGOU)ZjHPzIpUwbr5(ECVH3w;ryMPG?EPCm
zHvJ6;s#ye?L|Z>j-fgPduxCPZWZB6h22RgpbpOq{a7A1_??`aG!+qiNi!6d;GU~R>
zc;hRSYcWYnF#Mpz%c(7kc{mJj8SItfI^f@XwW4;Z<Wb{wsrOm6EG*YKm+jq|J!j3c
zLOafI1;d`rkB$ZuPRd(4yXjaF^J2Rdi4S?AOy_*?mnwCUoU5PtaDKmZPht6i`IkR`
z4PCHLeVMS<<Aj1s6?rkoFFQRho?{YpX35+KD+LztW_H}-?2j*EQCsu!W@DaFQchFM
ztjhgKTUpQVdR3XQcE;vzo+*<*)p*QQc+DRybnClu>cjkn5sY@xv)2ApTp!T7N9>6I
z{Ow1+bElptDr`x<d_d>@eYq6JSGNK#-#N5?O=a(y)#Y{fzPMJbm9*)~nJ@Q1u2JjH
zS>YAOg18p{UEEb+y1RSs?L{jD9URXpT@k*!d1BDf`H@Q*bZ0OLSv+>1nz8fGvf3W&
zCjmLZH@+z>G>ND>oV#<+i?7f2NkuOD|K!aUuT-@To(KDdmUX`uw(+u5mtx*!a$@rC
zdmDFF7B7=mH|^T;q0Py0``QDO4E?5+giqbEZDRJOO)Wfszp$+2{vwy{7c}A7eP^b%
z4Z<>)Z}d1NJWD$n`pw(#ROxmHcJ_?7OW&08do)Nf)&6EOn7sMtFALeVQ!KAf*y*mh
z-=J~zGa<nO9{!`8PQ@WFcFK1cbgi5^@2$`zSBu<JM(^Vn&f8^kOJcVA#K^A?)GlxF
z%rn^cZ=TVL*5A?0+a#i|<=s2Z!ELrW&gRqY^S7d&&)#jOEEFGgBJVjnJL3_JO*^)q
z(NZ!x*<LXz?%q5Wui#*55jU%o7EO~E?vq*@R{dXg;e4Ke9eP|h?ndebt!KPc|Frej
zt;FANAMdF;Fk_wYZr`@EulpTS#Q(lssyk~^Vcs-`%Gk}1CMXo7&eT32baBTmb8T50
zb5Xr{Q<HfoWvuv6`0B|<>E5o)4htSJg;%9f>*iZeJ2Pqa;+Zw=y@B1GVcVpVd+bhJ
z;rn<mwZcDRsomH6{7D_+au+Xd^WN4v>G?yh1&XyQO80|V)y|j|2PVuG^4s-R?X{2@
zhqsB|HcO4VxWCV&zyIfmDO?t9sH*e3QZh~QwgPiX^SX_k^JKO^5k0rsxY~_@=dexD
ztUJvYqEhG2@cE>(PAN}-JMMZ)yZoHugxa^$TBbZ?<?=S$(ky#>Lg#OuR~0g`Cpq($
zf7~#o>+$WS>5cy;T@*W9|BZQvg!z#LZyPGsMfx63`tM<R^URjN3lAu>Z3_RzQYCF%
z^XKpGo9pfD*rk+Hns%*Ow$r~S=uOP}#*NRml}qw`H;w4z%-MIleA_YRjO3SY=WHMN
zEW9fFd`JJ(cXPN4_Hb$`+?wlfv14LsRG{bEP)*rOPx6K3uS9LnUpV!v$x^j5+>R5h
z4$k~n$n|XU<Y2kHJ$H^tJ-MBnBo}j5*+b1gsC>`QxXeA?_uj2fnf&wfmn|3ePBy->
zYX@I8UspcE&i_uIKkuFXqu9Kx_lpbnR~@yxhqbR|U(oQESf^Yh$05(&==fb^mHLV9
z?OTO^aGPwliQ-DG>$cc@W^KuK_jmQ1`q~`@N_;e2cUE#`l&v`$<`oxg5Z)76I4fzb
ziD20r%e6L96~$R=t*-Qb`2K{Q%c#ikyiS=#)WWoquOFuC`hEEnKi9V7>6VBbdlT{E
z?)b|5R`>aQ{f`<~RPX0msWfS+%WSn1-bb~yE(-sj$q~(bWrALO_o8XctYRt^Q7N%o
z_TE<h?f7&<>yk;g6>?N3o&WVWsQ&$4f1bXSx=UIUMXoN{YrctBp=V{;2IrWmCXJlQ
zyB4faKGVG1YgWgtlVUTUMfV4tVoJ_D!&l^Ld(2$KegD_e;~KkuKU>-$XSadVI`IKZ
zgZ07>#$r}4Ua5xem~+8A*kH<od$){t1qpQPJiE79T_Q2xHnneo%sG``JTrW@X@5W6
zwdPbxgK1C7A>Dpfo7tu10*`rGl^$LxpHy7PVa&uj#Yw#9h2boZ-qo7?A8)6>y?pKL
zzb%Q=_6CS{9@|`W|De))t)GF)``lKoblTfAm!)c=e{*Z#Jkg^wTbA!&cs)7Vb6S6J
z(yIu8)mOE$yY8)UKC##0zCnY;J-3Klfvet6<(BQR-SXt`hOMt_pOl?te$~Iz`^JSM
z=`-xV2+ry4|MB4Q!jB<e{66M~I2$P$7T!AG>m%ghc-13j|6Y?VQG7ezo=JbX;+Idk
zzFvH|d&7z84PTAFP2954AY4gg_X?S#zZUR+u6uEY$D-{AS4?bM`}r@fg<pR?yg5mE
z<s)_b>A!531iluQTQcMF2JzXySNwk6#w?iL!qorMTD<MNy#Cew3Loy&skyILo-gDZ
zu;icT@(|s;y=NvYI_K-M_xVizcy2Zp*$T1R0_C(n@5Mw7WfE5w{=9tiM3_sv-BWw1
z-S+Lm>-n+-do=c1-&ynMYIog!;~DQglCss?PB?73_3fOhc~_@zcTmaEeAm_G|6X=2
z`Wv5FQE+%y(ww0G2~0&gW=3=F-g=e#=wd*dopROn?d(Dvo4S1e=6+bFd%|aqgL?L-
zvnzI$OH7wLa!2sm@2h|0H_rF0^4@-YTH29qN(&2o-7U47UIm*zaGh~z|L=>d|7pt|
z_-Vd~ZN)B=TO7TnW!yzSEi_JTk#qjvytm%-jud;S-uGM1LPu*oJIn=Cqh32!R&Z)N
z=1)lRum1Yy->uEr8fWM5E_~y~_RY>@9eaq8{u{<Ezr7mMxpv3Ald9=Tcm2uPdt}Ki
z-8XCBKib#*WunBglhZsDnr3s$oj8@psj;`xP<Xn)lj0dmPHIl?+57g9-Die{l@B>*
zn^rPUpZ7HGd*#=zg%blFF5&5O;>cBd^=%j1j_aML7vGiA(aJxc%BO1d{j-?u!TC~a
zSN?2m7oNUFqH$rc(8b5!%7p)~oys^xw!_Wsu*UKF_ZzPzG2Q#iwMC_BZmePY8tu}k
zcMVkxFP<{AG)`KRH6>`P;C<GbfcdXPmoe^pk*8k#bJrK<H&4`f%6a79e44YT(O$PF
zQR3y&g7la7(*o7Pm0g-*-E(hOzCE*lW4!q06Ggd;*WHc3DWY<rJi|2Vb@pR3B{9eC
zF%OQOVDp@;sTFkL0MGWL2RVfPO3ljUb$WSlzu(QN&cBqoEqyL$Yd3tpr(J*J;rYcq
zhjSOrS6_SLZIGk&+_g)#&YNPC^y%6AP4^e>DxLLLS$C4yXNIy_|Bbv>$$mc}Jt?W8
zS4`;j&b0@(dKQ<+lsfM0pLg+QdX;}~Yv1Y>Vuc&7xS!9;HjLV*?sxXsO&|Bg6T4o#
ze)eC<S@I9B;T^BYXERM@1O+m`GSs!ttmRn6XI{(1uz1a~_TQVoXm!6f{ZdzIrv5c9
zy8l$#0-gLjXP#yAt-KO9H;}=jUgvS4>;>I3EHVz3^8%Kf-eS4%&%cs*$wjHZIISa{
zIs)f}?>RZ|+arN@+`Yz3g&jrC>(XLGwiK|(T_`!fRhWIB3ge;HyJC_JoOeBc3Tr=T
zT$k8)`smjcHX`gR7e<Ax{`kUwep`T`i$Qrq4P*KzgB|BjEqqZKbxdA!*4mB78?<KH
z@Lc?%b6)(|Et_km4BrCwa{K;E+kWBKE(KGjb}LJve_ay2hwiVeOs`ug7MN!y^s-)F
zQgr#ENB`_{>$8^eRrnZJ&hKIIE%MVi%A@y=Gw%P!2Ru*zmv^~pZ$6Z)uyM`&NAKUT
zelZ9Vt-g0pJ}$FUB}d&QY<Xmny~&N7TMwWA&FS_&kXp9Ovy1ukJx6KR<SREO7)r~V
zPqn@EDaXvXGV$@hE$vYSbK6+bN-v+2+LK<ycDPd@>$04c<)L*iSWHdt_4YHYJu*l0
z^<S$WwZ-A4U2>vkQ?Gt^`Bk}S!i;^%{uisY^qm(}8^~+yDOsDGR>-yQe2DY4Sv_}W
z=UJZ1=gQ~gNS4)z-MFHuCB-6+fBKDrhyvSNRX*WCTJ~4xKW9F*ASl(W?##;P(nmTc
zE}77=#G6H9-_-Rv(!VP_QahQi``3HE6a8%=cvq&pU|LaTgmors*jwdwzwB>|zpJ|T
zto7X7c#RMnw|V88+2);`^y@iqjPrp<`@+l~&o_MhYLTLGUSN~LS!c~6=fwfaS`Ti!
zWd5GD!cE|aoX;^2zSjZ=G_$5K|5@7|T^wN8JlW@JOp})V+<@OAvzgEQOcuyX6jWzC
zu{=w1xu4q?Wpn)xEo=YW)4sRp?fJO&-o`hptbX~P(6-vgqmh4WUWqN+W8*1IA@_8q
zGAA^gJZXJKXwjA$D@neeAAh}hG|NgrUoon)<R|aVC%$U)UTvKpA@Jl_<}SA53*%P>
zMM%DFS{V0p!JpW(;>k+pMm2I%XD#}2@<-pc1CJ{93ap)Q&pF)HBqQ~Kebu&1o(AuX
zgV*z4xy_yXWp0MAlj#$W*ZylOrZ2CqcbcB68ppph`@{4#`{Qn3|M7BF?MH6uzry8_
z{+2O4bLY)IZLhwxCvN4oFyB(P@_$t#O9hsTG{1<E3ORIf)&h<Bg6>Z*$n)@=k(i(5
z=9FDj_<Z|oE#b{RUv*+N>jku#X6l~pyLH^IcKywO6~$)!D{8z|II?&6)?Lo#-#Ec(
z`W*elH(RFfN{TIVcy_b6NOi8Cijim_b4Ak2pJB@rg&tLJIB>6QhKJbwPq*LMZ}0HQ
zG?BfawPfP?rMvqUL@Fjf$eKL+Z0<&V#^*sVW}5c|&N8e2p;|J>F>8|iReOWU1)+N@
z%(ewF7qhTi^{wcA`^zM-Jm9F=)yvX_2dABo3D#10aQ040z|!Si4IFx!S6{EI`t163
zhwGnTMc4msIlRHY`CLrSR)&ZEuZ(V*|KGOWv#R04=@wO!Z;oauHJ$1v+OE5o@k!3t
ze90f0Rd{%E*&flzsjI9M4^QSfyx_~lZp+E*8WX2v`j_`<MZ5DqWSsot{?8fP7gYVr
ze$O117u|bu<<uTAS9!_kmm5U51inwuo6i2De@|NHfkki5R&gZAJBst(DBNkiOSJH{
z8<TIP7SkiOuxaw)529CWxuIE~-t>2qdiZ~*BUhhPE6Q;k>UqJ^T<3ZCid25U(QkjR
zm#>=lH+5&zE`b%EfeV%-6)Qg#=a&=hSt{JV=h`pJwG2$$uO}`#rsA^Uh3LdLjeque
zM8CGYdWvuBg{5AX+P3&Vf9JP-@idm2tx?xL+?#xBySlai<VSr0=YHfpS*v+VIN)B<
zs<K+P4W`@Pe)O1Cp2qiWwOT^>8*Zxy2HR_^e~Eup47ne6Ep`5x1<jr=S+TqCwJE;%
zp6KBzsi>H9?bWX?(TLmKAAhv{Hq<J+xapUy$(@NcJ-083o%djPJn5Osg0K+v&Plfp
z+_7JAO76*T!>J6D7cJy{RQp4mZA#SIaNp$U+kSywRXdi;&C^eG+2^=tPtWZ)8+ESD
zk1L$`W`#<9{h_lzH42k07G)IP4o{R}p2Mckr6hLN{Ib?F-;EME0?V@x9y=0q`ZBL|
zGLPo^MQlDbM%E9vYRUv}ewe@HWwDd=XTuG9O#&`@JQqGW@A*f&Hy+E3{q%Ni-gaQA
zY~q~14^q!+ZEyJ$SId>C$hENJ%zFpT*H-^u#``Vu-lch9`Td=pk6!9^i%;46sGfPQ
zxg)EpP(XLWH71U^#s9*ue-6%BI8koa&JrEb8LO<1z5kV0a6|aqqqc_+Hhb4@J1oS|
zQ^0b4$<>V_JlR{MZl>DwpYJwQ>s)=Wq4nm;-!->BU64Pk@NDVD{dSFfn>W_Quf8R+
zW=hn?i$4+_p4UmOzwhLgXBK_<K&KzSQP2H}EBbkA&21NFJ15QiBN2aSiF#1&w&New
zdlGI)MhLaOdA`cSd)AIC8)TgL{e++1FK;)I5K}zQBW8R(KVjX!@*lyCp-vUOS1$hM
zc0BuH+oi7WI|9l?ei}}9oNcAUmoojpg}9J2tK8*^Ro_qQF1{mtdEcJC5NQYAS@uo)
z+2%iCVJg`__tN5bz2S>@InI7z!uIgg(XctZH!7zu+;%VI%hL0|93J?K6liwFI7m+}
zTCP?Z81=pNVfEajEE*MBfogk?X|E2y!23_?ZaYKiznNBNi?{t_c$%C2qs{KA-pxl}
zyK`hNi!XhbYBA+*lIpp?Ci9x=zV9eCzvsj8Fx2@xi|&>R;rgiaKi-;VTKJXDvEJ`^
z#KE(q=m5*K=l8-UP0@MP<k`NQH)G+;in%ZSU!BQd{4m=?ep&F1r@sZ$rk`7`6<=i=
z*L&ou>Xm7y*;)?E_C&1ob$NbkKS!$*!`w(lcShNGYhQ-t$<H1xo?Mu$UbItcb>96W
z^V2W=5=bbtmpjqTyq?A7M9xdSuH+|)MGaeBdgR^(9u&TnqIjC4@4%0Y$>z__Z#m>)
z{aZbE(v$AseIiVZIf|+$-fOPu6hE;|EBzqjb}^?z>k_&jPTeL^ARjKxxp5os6Ww{i
znOujZSnh>1t(kvfiI`*ThIOW@lBYU0btR{@Bm{eX%sKdx<7-9e+;|VKeJquC%C#RH
zU(wd^b>))-eV=B9axKjH-uA9;8mD!H=);~rPd2I^pUd*>anq`!jNgMeR|J@=*k0MZ
z>40qSfvdBR^*9{L``LA*Bf4aY+Wg-e7e^L+o%2_8*RE-wYr;c3{Fx(pBJ?+R85R6s
zOxtm&G2qh9<EFxs{Z=&c`y9D*aNWv|uw@_Lo!GbOs{ajv#gBA$pFLw~akf?N%!#bt
z$F8TtB2%w!%$g!%8OF4h?c<I8&(~X;9v3)&Eavx<>c1CcO@xo0k@#KJGKniB<Dg~S
z@`w7z?*_c)kH`rZW-?RBRTHU`X37gV9;7f`zUsvSSI<57OQOE6zQh(iZ+RGBxSZL6
ziC^E|^_Rb2wDQqMZKmfdGOBI8J3}tW-s!kuJ3*Bprg1rQW~cvjuBS4lxBf`UeRv|J
zn)2S_#qyI6Qk^$U{qtLyZC~uF(9Y`2EegE+zu#0my2Nne^jpoldzMOWGOag%qI;}*
z-&ea8kJ+zlUl-ozVSVa#;J^B&X{KC)sm$7^_*s}^lU_Qye%$o^oaB<AlRJfF%`Y$*
z$xXk0eqP*fOW!#ey=zX{onIXPy3Sc8{i1K!%~g9Y<lUGjQg&+U@2N4Xmh7(Fw0EDW
zVw%H!>(*;Cq($=r(z9+WevG)3-uZMvD9@_9!h!{p4@(L~Efl-BmF?z~?}vR`%Hu6s
zCcpHwUb`{3{%u<Ica>LZyF^z8e=WZ1GAWF8&4~kx7%m>OD!18FJ8$U^uA-#M7lq>M
zv&9c@U=;9<Ok_U5Va9IkGSf3GciC&cCp$UROmzRB%KNawQ>7_U;Lh8J^GrQzJHE~S
zpRMj{xiN>~?UbA8%j+YB?kSmSM9$^Nd2+DEd+VjmJ=JH6r%7C1zQn3SKrUWKVzYG4
z9mZc>jW-q^T{iWoK*Lh6z(;xW=Du1eIYVj7@5Dy=ZTgq)%Wa!!RNcDW*6xP1%7x5d
z^Hl9FMJipmxj$x$s_BVXnM`gcUB#_$5@ij3clxTxG2guVMDXb;&EH&ypX+?}*my+L
zYtM_uh4OBX&z3ZQWso|uY0jG?+Yii{o|^ukH#u~ru<o=77M961LG%6u-w@JZ-F$eZ
zn0&^c=~~}UNX}FK`+(uJDU;$>h2Ms?f7ri73j7be5T?}Jy4yHwFB|v!;uE{7noAyD
z7pmS>lJO&azPgO_qlgsW-+7P2cIDSJG=3I1Tf6Fr0o%J-|Cjo<rb`Ik%hHfxiazyu
za)4t?&g&$$izN?(e0(*2r^O`f`?KKl*^?bjJnj!?sm@8gwZ@`d%aQHpM?rIqlba2k
zD`%eQHc?u??4ROqYYmrc5w4xybJePDu>RJS@nwoRelzmty+tQ0u3eq*CH9EO^D`=r
zoss%F{~QYnJeMsoiCt}fcM9vNlGG;}-&TL#A#B8A?P$DjvD-D5x^})k%aG%XVs&P{
zNPA+bEbD&Y;%|*pzC8VWxtC5=Byk=#6Ps)GuP<r#4vSkthaz_^eepbg+Z^X9+xaXj
zuY1S&eQB7{#k}Fq?}iC$%9_J^V}vH|x40lFpPCyogE_oz-o2ppbKlPopS<2(z5f1&
zc@b+Y6sC*12dD;YYE~(JzwM{~+*+U3?|G`0+*zR-tDC3)ko{3K^V{v_eUdfoB8Btk
zXw~l&(4HlI=i{3eRznN<j;VfIt9&^2?-M$4a^CiZ^JdJkDU|G-*PEWbLg`e+ZO<3d
zXXo#!n*U~o+S$U12_^Fj8=0>CJk)2x`0=mtor~LC7FNDmR`h)0jpikBZcc()(^6TE
zJ!(1dFj6Avh2&P{`HCA#I91G*dd^(hKBMvKh1bO?lTsykJq<N7>y|JVsdfE2&9UFf
zvwrfS|FibLbX>k`>gT$^ODi@NKW^H(MxcI@F6)Uj&*g$`zqTiB`K4-;%JLwc(d{{#
zcKV(R(*>lidiGtFXl@j_JoRIjQ>UR`NzNk%=iZy9bI(jUUUrw;jOEj3hRT;!+@ARt
ziq(3S%*!gvVmRle<Z8~j>e7qMKb_Z<rr(md<URA;WltUDrZc@eg#R!JOupzYZoZP`
z{G&YCCvmpI5l`N{So+>Yc%k8@hx!FG3?B)}*!*AR)4e$~XJSVEzDxhz#0{QaoTebH
z`9bt!1Jg#~z}VkqIZRtLpN8h&W<TL(ach_4)ANFknW|^9zprn(e{2)W%DL-eOm@7y
z$@+YK(Ep{A(wG^97F<6eHsh{OYO3dIng0I|tGV9Ys=2Lx;mg-MRuA9I)!5F`b=Jsf
zmt9Oj*Y4U!;wA};zjJ;1op;ar-}Mc%em2itdggA?NB*-D*{UQ>&gHGynG&qI>dNW(
z?LO+S_AD(r!jtdWd?>NZ_X*dNO!>4o9GQE%t8YDdFY@ylpT|q{sY}0x{=279cE9Xy
z{Xx#qIkPg9e<W0x@vM2Z;;P=^U7`<vtzNY7I?H~EcOTw8y^z(RJ}1o8{YI#j=26X-
z%cVKyE9`f<{xd&)tVp5C>(1GTCZ?w`KfCYzzQtUUa5lSs6IamQ=Uewl^R2k;+&O98
zPvIq%+uju_ZaJR%Jp5h_zbgOgTcT+(`A(^+ajOK`8n3=_R(lq2E+v0S=u*0Iz_P?i
zZ%*u7kgQ(&a>8xpq%Bh>n*Mj#ExxgL_9TIymbZ_vyRI+ox}3nxtkTn+`NN+xl-XP&
z{-t)``p5^tEQtZ0&;J>7WIeS^Hkqk(hIwn>_Z#6}6T+rsu<d$Wws-LZ{um=3#~J0<
zmgt>n+}pTc*du#RzSAMO&dimwt|)8WEi}B~+~<(5t$2<tw%y?8S3a)5FLhnha@UAA
z?d4vnk#z0FUzZ;*S6qy0J0*X{D*PgASy)rjCXLy?F%x6+6Lls9AB^2<H~YT%_5C4{
z*$38ezUE?IY_Rld-KIO;TCdy7K9#JS(essK2aC@VL%ticIT!V@yo~RYGhwy(wc|su
z_Wb0snuxh`<eyx6e|Gn)YXSY*$NnT+2Y0cGn(Jp;{#~DT%xT8i3GMMGdCs~gu6$g`
zz^d!BbLYbPtr<GEWH-;ebE`yz|9<pKHubyTvsQZ?2ogxXR`@F9qFwZYy?UOqe;Ty~
zySLu3TbLI1K;gEH($(_!yG3G_#xeYU^<mwv=}W#|zfj-m^2Al`)Z!J#tL6k&>d&72
z<BGn1g<kFEn!l$@H}7#`oAc~ixcfnqpfnL9<8}P=|9qdU;j6PX)x4m7zDUco|DUX0
z99nV1=MYz{?a|wIzCMNPPg)%mxUeNG!AMR@SLld%_YwB5v0M9C=KM)h$mTQ?a-SJC
z@95zPkw<S%KmYJ`xq?NBOx?-%ue=s87AvtF<;|&6JHOzwU3KFpe-nwH+s@1~tqNb5
z)%-&wsx<h}<%Ns&{_p%5!g>2n>1K<^87w;kMOb8JKCnDem$pRqd4lZ)zK)(Pb8_}R
zZJ3g<;&QqDVMoIcwqYjHJ-?lm3Rj43&b2&iC-X4zx^%@1jYFw5c_u&RT#}cF2{u{x
zT}^w*YM0s+Taz%xvO`nnJ`B@z!ggndnSy~reo~f#jSZJRp*u6YoLszve6^i@gA5J0
z^xbk2(~A{Mxb)rf^GckY@+%agbxjOlcV-w^DwvxZ#B%977AL3Xl_;25nsDhmCl+|5
zW~OJ9D41CobLqRJLgaJ}L6V*&i8-0cj(O=hsR{;M`oSfsxnT-smN;+BaMX9wch+~&
zcS+4DNz`}Mchh&*_t5v$_tN*)_tE#&_tW>+56}<P57H0T577_R57Q6VkI;|OPt;G+
zPbx}G&Q2}KNlhz(v5P?N(ofb;&MZnU%}vWmt<X=-&&kizPtMQHP1H}(Pt^xIT|YH1
zC9ya|KeezlF-Jd5KMjO3_0vG8ELA@(M?WpUv`9Z)KSMvGvLGWhPd`&XOFvsbM?Y6T
zPd_g+FI7KZKR+*3zd*kru_!eU>;^Ck;(~(IB2a+o7o-+t=BMZv<dhcc7wQ+5=9i?V
zB;|lr!#EHPU><~7q+hIGoSK^nad>fRS!$ksab|^naSq7ECHf^9MX9O!CFS}0rTS(1
z<@y!+mHJisRjEb!nviI8%gjktFth~SHG+Ekh&fU+f!#i0XklRlyKclt!O+Oi41O7j
zF(?Kh>J$u(jg2i7K!8i%Ei<PiwMYS!c1luRQj_yjQn~ExxQa`PQWJBzDsJ_DWet(O
zb&Zwlu}Jy$0GY1cyR$z!O=MtfV&QoAj_>H*uHD|<-kL#oV!2$qoi%Ox?o^-q`>(#|
zyW25^ncmOuRIlZg-P$I$dP!@uq{lhNM~6<GJf_GpA?)gtCrkwe1)B>C3Km|vnAsfr
z#-V<8;L8%nfb<Q_E-&I4F9ir(czRTgxumi)xU_*`O3Yh^Id>TR>=ga#6#4iV#M#>)
z)HBI0aAJ^LAbo>r!6~+YqK1Y!fiIWH%GfSU(9WJd-R%EQ&IFTmrUEXmPy2rw%PM5@
zH#MDY6ll=8a8xSg|D}sE8SEE|4A`4vZ2m82S=_O;yL+*K_3quft)(yAn|YQoOZC_n
zwg-G=8`(0N<~RnJPhfq(e~`g+f$a<Z)SMM147u4GKF62ovU`h{D~PaE7~W_+>nQMi
zI!|~9D+gCaCf|ji5XKeOO$zm_tN)08VEgd>CWFOIi~rH@-oLTuYE-OOV?KLU_Kj?#
zfWN^Jt_03)%#2r_hTMp;iMhwnAkb~k)L3?oPyeTbxxx*;jBi38)Qc4y{66V2{80Lk
zUwQ6Xz=p-$#<PuYyyNeDQ$MBBGBvWJbxZSJTaHJMdVaCnOB#rz{407h?@j&PHM&O*
z%0BvQzJbMAN9Vsl;=@-b)-f|$?`#rD{l`~nxbR={W~QAC6_yqjKUgan6x10`9KJK_
zZ~v!T^ZFLp&z)00BVOc3m9>=xlTN%#L(Rcy3#RLb<fku?=6JwV%KEeF|Lu?aIi^k)
zPGB@EXPnWv=77MJ`c?a9I8Lj7IQ?{clPyD=jQ-~1oDY6H{(L{)P5*J~Lxzo?|ET{t
z|2y@1=#@#KCJ8^iKi1a<1@Xx-<cH<SF=&hHt2+cZFdR64n(@Qm`&$36{+EASA7$F`
zVE@j-KfwWlNiP`${&*icee<t-+wJ?o2Y-A&X2AGwd-JTrr!|@xdj9+TtLBU2`#jx#
z&j0z(|DT`ozdrfD`_%v2PyXNE@+9W%n|~$7|6cz8U&#FSVA;HS_B}qER-Zl{w!&)9
z8@4C^+g>&PyOk0;f%V4KfB&mQV;l5uD{^k!^!vSG)7+;A<P^AhH+1j(8n66iesqOq
zK6_h(iOigX^?OVi!u<I9{y(n1X<mGL`u8J0pRW5?(inH`WqtH1r!%rT|87|8#n~|k
zaIsb`D%#T{F0QYCVD{%!M_mWGdOx#<xx9}ae44~mG4VO~hLVOw{|Xn^>|rQ7Y4207
zXveVoihYOt0lmNRN6vF5O#jbb$b3WezoQL9+0yz8-o8)kFL;Yy{jbzG-Dd57rGw(~
zALLaS63l<Ib28mH`@g#)&T5a1(YOCD{|lqui2ZNU|Ksq#DTbl!bp65U`@;S==|5fb
zpEX{h`9EuX#?61+`#x;?EncIT_MiVr%|gbX;x!8&e&ByQ{l@fqj{imbFBJVb{<r8}
zpT75l5Bjom^sg-V-=u$K&VSZ;qnLl(@!vY{9+l$ywfx}eIU9EGu>Pa{u(k2GJ#YMy
zipB-?KmVssI1{_@!gTg;=R@mfZu<YgKE7Ds1anH?E|d2OdNN6u1um6_t9w2>x6547
z%6a?p>F18T+RO6y$*+daIfp`K%Wh%ZJJILorS`qMluuXaZuI$j`}c~yoR)i(f95{d
zpYJ}|<?PD6epim>w>VEe>OQHrSw!Q>np;A@?e@>DDPhiicsp_T)EA%T#;_Wga(#Sv
zhy97I6uWlVu|v<k-+OocljdUEFrUrGULD!PuQPY4w!!I{%5}X@4tag-lKg&$Is4nM
zG&b}6PcywVC$e7sZZU25k=qHAwcpj9%U<g>`}EHCmT5;CW-$GeD$nV<7yU{hv@_%2
z?lmdQR@2Pfe`MC2{>QxhF5}|s^JYDh{qo_^jCpxM9TQt-$jZeVTBR*^Ry?_HiWO(4
z`tzF5%)`zfoA%#5^Ru@~=ttz;zWo!!g?$Uwe^*?8@ioKDi3=R(TgF_TrLc4&*QN8)
zevGrPd-O{NZb>)&BjLT}U)_zG+!EgXJADN%hfG`aH~7G|(6Z+02M=eNeVrcKFL?Ck
ze6P66f_d%MXUcv&4}TWP=Y03~<8xx)RE}-XEIE7DaS?l|tY)QAhEB@GmR?Jdb>>ZP
zQ#zJxG|{{{^XJ<;XQeU@tGV%3yJz@BZe^d_{BA|LV6%PM2kjEAd8*l~KeKKs><Sc_
z@c8k&=!b{4AB*LDx<8lm<eJBA`I@drYz^B)<6eb+kL|19XJf3D^i&{m^@dB64mpKy
z{@sv1VfDNPMP|VQ$Gy{ZZd~dAuM)EA&cU7+#aiuBBA?#emFJA$<6kjjdhKS%Nxx68
z<nHr$Gnu!&aMtm_ti!hts<Zw5cUbuU;R`493^;#@CkpvD>q}kN%jK|cEoezP|FwH{
z-+fI>=B*{K6KWr~x7vMM6V9NoYq5r1Y|r1nu5Ttj+i}PL*ry=*LmW<PE871&Xby5e
zmk{v2`Q%BKr_F1alm4jr>!r_h*|Bw5hoO`1F71a?ekDHZ4AGc7WAXakFHbm?yWEkq
z_&k?czxQg&ovx^)qK%txK4G7=MIly>Eq(b>&z3mj$o)5pwk(<)x_-rsLt!rawj7(Y
z>+iK08~GLpJ`7nBXnwOePWzpV#KhfOi`KrrZ>eZ<drM?up(EGsYCk_Mi~p??)7J-{
zd~)!^24Vm6N1x}u%COAu74<B!{@Kwh!|nDX_v>V*two<|mrE60Rek1vs;cnrnN68W
z{V#QDFRZkjsr=*d3Ztrgwrhz}|Fh=*xLs0pNJnl5V{>EVvMtM##4dUK-p<TZ(Nq)N
z-Sx+#)uGXrZD!7nmDfXl$++6P-!^(5S?3eAM$%Ju*(3kt4u18>sZ6%f=Tz*?d?ep*
z3!9;IG@e^1?b9aNrr?OCWIJuesw<1QzlyzG?>BGn=c|A0GEMiWzX<>R_QKN(e$N{Z
zbniOUp(vyE&wI|zNm-B2sVBZm>)IIb&1+xzifE>d!m{j1v!6aMWw46ulhO&=FZeqC
ze&DIz%qeG*PtEmM&top*;P`6Iq4P^FbiNV)+xwzY%==8W?}Hx?_xKw7Ki~G2slRT<
z;?;|J^c6c4r<NM8-s8xipL)vmW8|gg$~7Hj-Bnk+yoBdPC^~Sr?Fow594`LMCEfTz
z#GG62lGnTnx+*eVbl$InT+($bzA@AreRS^rowCV(a)otG=a<#Je?nr7Yw8~7-d=O(
zQ?}|utzw>#t@HTLOqcN9`00tQe7E`ZnoX0^erqb1bj?3|Jll+m-(dfgn`eLJtA6&4
zPXDARwWvTh*QEZm_ktxxH%cz=JauQ=>q{RNCSQ`xJG{mIeZ-103lAI>UHYDBQQdl_
zJwaWs%l-Hb7ivgldz^Ck((^f9>FdX9JX$?Zr87>+`cC%he!e|$kE$!53KzeG=W{RR
zzjrx~^w;Ptb*}fD{@}Ue<cc=M9|sT5aJhF>jjNhVV!6@Tx!ckT*37z>_|c<K`uca?
zY=M5c!xQH}KQ?ipfETw>UT41EjFa98%krQ9e7S?;?zfKGJC9fo20uG49i5zd)9cR_
zBgyXDizjU}Hgl8u9GjO|Dm3NAj9U!0>lb@mDYvV2IhX&nvnaf`Np1FH?z{{EgLlum
zZg7<-UFTXJ@_}D_gSz<EPfIfOv<1pP)vcSy=`id5<xI7R3T5|q#^?4($p|y`hl{c<
zxmDbAM1?QxveW-G58wFSj_D5j%spPeH!jciXIEeLH}lfAyw_J1ub6ImH@8JgW!2SE
zr}I<%=7_vr%W!n+Zkz3*t_LO;h|hB647$DQ?h58p7Ma%9^S`9bU3)tFy4=3EB`<$w
zSY0|;e(O5VtZ>7_OUy1CRPueEBeF_VAb#rd3b7fVQxv~0Py1$gIlA+~d*e#u!fF-+
zmiUTWk7j924KQ?Ga$)gtw+!w3jL%<*a0I9b|6OarA$q?~VW&u>xSQASr_Yp&4z=58
z@86>RQ0Vm%c`@Z}Usdk~PFyi-UEjo@|EF|QOXlC7zS&dY+Pa`kVU;`87^ZctXL%l)
zwJNYk-^}~j;k3Q6kEU|UA5?YLI(gCjU1)H0TJ9IIW3!4D->K8Fi#zKYb~w)M=Bs2+
z)vUa9MHhk1DG&RvE;1}}X<ptX82Man>q?2=YM=8(?Qh-)dw2B0;onMWdYg{kD{H^J
zeezPi>ML(#d$(3QUNYRRd?;t>=~p^)zeG$As$>6b>1w55yxe-zhPx3rZ%96I)?6EV
z;*t81ovk~(Vy4yURbHBWGBsd#_Z^GCxry_xl%CqS@?1id@brAnbgv=@xigcpj@)JY
zaBrpW292e>Z?8P!{dDp9Wx4dfUILDvkNkCf+)-*B$<D9HyKmFV<jePb9h-OZsoO1B
ze}q%~#_Y47SIM85Sl%J<Msjv-u1`p<{DRKdp67z^k{xnwI=<eF72A;zX<z$msc6ps
zIkKk@J0HsnTl}r&jKi!#=Jk6n9pC$%^ZE0miM0t!cYR$l=}CcGTJrQ6g_`RYMBnpi
zQa6?~YF@P0`?gQ-gjT7ukx>B`*{4cws$H<mz0SV$#bVa4>b@p7_#^)b&OCd@{_{kp
z-Q}#`KX-1)VoTNekR$%vbMl#t*K#HGeC?qUyO(_W5%sxA=(^|?r3K7fSG!d6uS8G$
zDPiXAu}!V;4VU!FLz@De=N-OsrCvb)as@+TfZNrr#qlrSZ7eg|7Nl*uU8?5WmHQ4q
zL)>yhUT@u?wei3;p@2I7hI7?IoW>`m=IboJbR?T8Ht2@+nzBt?T5D66x76wL9<tjY
zwf^b?@4jygA(4Mx_`UsjV*b=WxpgKp>~0xG2K@MOE~(eBB~s)2ImK&-Ocrej2>R-H
zSVu*zM>J@TL|w$|rU@x7mt%x1Q_@}kr?Q1i3+pYNkaaA((fsHdz3xM^8v@ra&i(7K
zDed_+-5Z{1hghoZy^Y*nYs{T$S>n=o*67%cWm4@%*SD_u=xuK0d3R$%$&I5ix3(nf
z)z4Pe&Rd|kz^!5XtGOzV6%Ho`u`CZ#lM=Sd)V<d(c`>kK$C~7rJ7O0&mm9pQefyW6
zZP|J?8*h>MwNvklUfE<4eWqJ-_WIXupLrh^osi<$xkvJ6Z@>GY5Y~N->_3^Wtdv@v
z{;5LILjL3drl39kXMQ^?X3EW;;4c)ichmj{DJJudT77cd@}ujz_VHu66PC&;+}h1$
z*tEOJDSFmfsq&9;$N#Ne_Wa|MfA^#H&RVvJXxm;<o71pvCL?!7bNR`|tW}rJ&3=;E
z$*nx?=(HpLftR!+;@(~tkjZax<~y4_cUIoh`G!yOUp!};&VO>nt9z6ALe<y2tJ8iG
zGI7=FIY*WT-pXyrwR^v_=GFh3ZVx?NjyM|d9cZ6<fj{)nQO}TP<^dBcd3C&YZn_ix
zL`PYC{?@{m=|7Ydj+~QNJVQHv!uFmX7UNrI#7%n~gy!`r3Y`hM5Wu&W@lI;>6TMq3
zb)vl)pVq$>d2{dctMETQy&no!uy!#|3V(eqym(5F&r`=sg=R*=+q_zq_N0ai{*o&`
z?H8~$#`swWdyG$QtLm1|y_X-?{WyH|#JWtSNqPRK{Hr1(ckFTaC{~=4bmpgZP07ot
zTORV%{bLKe{7^Nj<yKbccHSrQBK91$QqC{uvL~rs$o}zVCHtBT1+mEw+fKf-*sa(o
za7>_k=?;_jNcL5?gC<{i%+D7y!&)hOuBb+V;MXUICH6)XOnE4`inHtPu@&>zt>Vqp
zP1#Z}aVGixV*l^AdA8)SsW#VMxw-E&*RI)_2TLvZy%eiebIzvsnFN}r7e&rJEPCGl
z(dVg&`RjUSE6#Slyz-WQn9x@bOT)ja@%av4xR2KrnH?_s)Z!$>JXN#m>e5Kgt173r
zyRdeysc`lG(qnt<xP+iB(`>eR(~DF8YQC<T9?R0Pq4w&hb<ac}r?@%WsVsFb3s0LC
zP#VmxCQ#oP?aot?`-J<pQu}?|8<TgatnNK-nzWu%%<<<9_NQz@MLhDnLBUaZ>b&v_
zWp0_NmtPB3yq<LS@D+u%Gi;JW67u+_m~CF3`eNo{wxl<OYWkm^RjP5BOxn1({EYI;
zvNu<z#pzDn_C213?P-Fs^y#0If-ZI}&Ytl0_*T{pO1ATUE}eAi`|q1`>QDGpsXljG
zXU(#pE5t57<*-}b`48(pq-nf6rJ$k3uRl%6DCu6heE0-8%iot3p6ybdBA>ll^+E1*
z`6W|D7aWrQDOUcz<*otOJ7LR>iA4boyOwFMnDQbp$G<K?Xzda1XA7^nJ<fhBExq@B
zqdbS{^z4|Qv*#G}S-;PD^ETk{BBPz3SA?JUWLfB`=)PoQ!W8G6;OmTxuh`<EF1Z!A
zY^s)>+vEN<Fwy@0RHHR!bF8^HPFNv$DSYva<dxqgLc(O{PZUgiTOucW$E(i$>Ba{p
z`|7-(t6DikFJoqYt#!$3!I9;f^UI8HZLt!2m$rZ3Z4a07+WYrsUbpDY4^dsE_*VMU
zj;uplt!%P?|CW;P|ChnR_clNxMF0H$2`v$eW>krP?tHv9RlnN(5wF)3eXU8oo7cn$
zY`wOPKRjmB9rK4bezI^lGHk!Fb&s#p58cW0bG@G3n55O5Qu4BE*$k7)<87-pzHbhk
z(b_d7TY7QzuM-Nk34U>%lCN{VZ4T3E=l|EZ<@f~Wa?S`{HHSziUnSdT9QJ>&Z7NGB
ze`_}*d+)j({5Jf$59T}ZELPS(^0{M{)N{>;{dR&sZdC~h1<2b4oydM|uKwkVru(tG
zA4`{RID6j8v!y+23TLqH+3&jV1q@!_Tz2=WS!bR1b@f~CDj$XZTDx28f{YPYg5Ro-
z=1g}snB5TV)VR2&g@2M|h_2^e@yT^33xgM^9B0eksqG+BoBGPqZ-RW^I-B+7jnj@E
zWK6v|>CU4~=7l-4Zd3-%*dX0e-I&?&Y_gTzEAdpFw^kxsd@pETT>9Zei<FVaq4&$)
z?^%|t>6&l0{YLuv-i3$uJX+GUxchlTQvT+vVo!JvoH!UNz5QlqSY~41qI-$PY7xqk
zGMl*`C-ub7j`?bLc1p$1l+1q9w=c9-y}J@+lrPfy;j5rR|IGUJk!E6^r>{McEl)08
zpLj3$XjD)Cj{QDQc`oVx>EPoNzpu*^G-(shS@n~ai!S`(Xy^HMFLXiXqm6FKJgsNd
zH%ona?Iil+jFtTM56WLITkJa`yZC*f*vI52b_>hQCYjC3iYn`HE3KXIa^~Y4m&TRh
zJ>P|$!^&FNtDZ<QdZ!7!3RjvKEI7SY#c}JIrS~@STD!7#{V{z$r|zP0x<J_78{Z_D
zF80<NF2CgBYFYfoDYkrPSEAc%hc(8VcV69kWYPS+YnMjP+;ZU73xhZh3AVNc+ZH#v
z>@oEFa6_Ob)5C7Y{f%2EtyWcivDPb9x!!qWGQXSl!qy|@YQBr_rDuOkb^aaTUN|ec
zf00R_Imf%-kNDzx#Ut0QUN5pe_UaOm4HA8c(&ry{u$6w*;z(NY^=F#n%wKb-zxlWC
zT=~4mmNV6RwD&d5nW#SBqN;4}^h?TY6Y^pOmA|j=*mvEMU;Jcph1(u|wMqK|nog#3
zExG?<V|ecpW#=0w<zKs<tLay`dG~kjo2L7LyR`OuEEU=A;<;+><6msgt-LS4-*@8Q
zOn(cDby7!tlV@}K@B3Dm?%zCvZ}q`T9eQzhRWI1@tIcn}ac-0MC9%rg4B>B1*TlUD
zGoG5??b32GCHwF><D{QU<?Q}`H&Sz%^}DmRVb_@%KjU>+UADvv?f7<3P4a1wWn3Od
z`m!f(m)Z}zJ=0-lYz#J(RrKvRb8zwZv!>OnQe@u7CT?ftet+D3-UOMp6=8ah_1;>S
z1fIS>B}2L_R!LO%EVJ`D3ATlWr{_<PQg?~`bdxXEXV&uj1}rsiE+<6o`x7>cJ9XZ{
zn~yGXm&PnO>#ltL<FbU_OwHL`le$!PvphN4GSN!+dAi6VCf}>aYvz<G>0T1#zP4R$
z2fydT^k3E)+v_&O|MFR#Ww&M1tYZ^$uPvI+{rT-`yB|EyzDECyWx2DDc}JMUwcD`<
zRwcT&%4gZ4CZ^punIyYgefzer=h`>09Qk1#7pY_Z>h{Cqr(f(2dMN(v)Z(qdvkF%p
zYFuUbO=+ehH+Q*o!dcN;{>HMC%_fl@VtJ>keVdq;)SNfDIa7Ddfi-qNdiEt4%|7X#
z>*)8$xc5m=M(*iLQzvdae_)EXd)xJ8^RlK~E5Ep_CFO@VhvXZn%nw^~uhm|=?C?hW
zLe87n%{Ll%T5FwLRJn7G>ut5N&EKzEv-9S4WpDo-{~+q(1MYi|);*4UcHq>N^Z$1I
zNv(c9Cn`ht+N4aWSu@ysbg!>S{<3-D<rSRS(m$2jT5svBPoKU>$U>EG`b6P<w`=PD
ze`HJ4-8g5T`Keo9rP}@pFICBr&@J-`c%yUIdCr2L)x2M>f9hF({UZBz?RWL@=Iyz%
z%5^Va9`&DjtnDM0t3v-t@8rt4d!!w%we7zn7PD~oT7jt(OZNI)k~yupe@^-82ZCGw
z@~wUyusgA4*C*~Z#Z1}z7l-i#rLHeYcHTExAWLA+f(7g+WKMb%AG__nOU`bO^PS+m
z&e`*F=cfkGKKA9}m#<0+0;wm=3~x{KHuBEtpJ#JpN8;NCm&@5+SA^6*8BBe7?vz`R
z?#zSAcYM4KJ1r?&ex$<c-B}*fu=>W^cjo<7nk7`4WV_kJ*LHUp^BoWQIV)bxSg_u%
z^<kIV_iN26;@wdjj$VA7Yc64FCvx+(%3))(HBFt8%%)ovB#pY}?t33{?FfsZt6j*B
z=cn!;tysSJW`*R`?Q$GxM<OO1Zi=k1vVE>{isPDK@uPj7XXi@oTb%X!S3z%(>%pvF
z9m11^eky)^UZGU#skz$!=hkKGw5ISMZ4x`K_HEmxy=*SCt_R9iAM!Y!cB-tn@!_S(
zJy~9VijUYUeSfe_Q|{2tblw9^6~1d5Op48zGZemm+x_G9tI`60@5CeTYTvzDcP8s_
z`HXD_a?b)SCC~42-MqIcl&jW{sWc|OOTBPMy_jE2jLwhqsj;GLn_06`l{WSWcwR`Z
z?eeOzH%PrQIeFRkK!?~B+u|PWaAA03|I}ks&-+c?@y#XY7MwbDWRbb0lDvm=Yu&Zj
zpa*Zx%I!buCZKz()zjv{eYw*Yv(=i_MLsO^*)siFWR7TF?dwl2+a@PR2&ZlcZ0t@p
zo^tcaXTE>B{8vxx+rrVvm{Ig`%8A7C_l{~;R6UG;&pmMFV%W>##n1fa>b2H<@HY~E
z<RR2&xO{GK(B}T@E*W_#g~9hbMHh8)d9;))yQBM^dBFyw+f1*{{N6ERzSyKYhxXlB
z`a9=>v-z342hp)x&&o!h-)9zic#`N++ghD_ne#hOZn^jDv9>{G_2$kag>UC=sWH@^
zRalWSPb6u6ynERco;!Mv-%od`ahYxJ$YHqk`Xrf)61%%j3$F6=Ue8h0+NL%szPy@e
z`-kX9Z#(sOcplw&swn8o^7SWbx4gKx=f}d(D;l0pKks<Bdr^a7=LFB6efxAzrAR;E
zKewv?)zNQvKO|3G=auKLw)}7Fy(871*2a})GdxVPKRtI_N?Y;m^S?O0?V8xR)%I`P
zC9UH}51n6nF7heQ{awGqXY0*g5*OGS=)`r@=SljdnJ2GaoMftaB8E$J`(^FiJKT|n
z3<Y;>JS=#zbN>wG8E<(LCQT|1^Ozk}_TcvZB$L*cmn->r(w|)v)ZZR#zk_F2R^N?f
zKkQe(e8*5HU2n%d&p&mOVY2p~-sV*E-LK!ApZ~gHjrIxlGbPg&KW{F4IOS#Xd)3dE
zHXUtwW-DA-_e18pM|$Vpr8!@ER_zsjQgTRHq`&@+%gb9Lt$%%HuZ!ei?>*45XH)Z%
zz6s%H^QM1Z$6KnjU8wd?+~kb!Wg)X4n66sLoq1Nj^@_w~C-ePBObqV?FF3;UYemN$
z&ZCd?*DZUo?SMx}MPB5p+Pjl_>ozaEK5yFG6a#Mi;%(Qt^dGT$IA-c-S%uv$b@=`$
z@Z2F~yLZ`gA+^0nep%)Htg5TL5_jB}QR{!l!fEO+_DIcnIW>}b6T`yAV)junk;NN~
zOgCDq@AUI3EMrSCa^#Iu|6y>_?W+#w$D0nPg`&j&$2e?Lbu+r@Ygp1%{^h2H*Mm82
zS#~F%&Q*N*Rro$%pg!04jiqbK4kQbGQ1;xh?)3RO&L7wOB;Rwtxbi;R>fMbW$!A~Y
zE@{u#HLBY1_xr0dDft=eYa$x&&obBB9d9am!}^4f(SAd_iGN?od}_Q@`d4C4gg95W
zi~r2jmDg@5E=b$IVXJ6eRYcL;)F*d~-M_wSJT=$gx88!IJ~64@<tHPHmwpRzm5p4Y
z@<8_9OT+vlLU&h~B)xbVH*s6YgYcV4rtP`vM{AEwIKy-6z1o`1Cnkn&|Go2V)blw}
zQ+mTDXMd1+6uvXLFl6giTUCpN9umP^e!)VU8MjDygfA`m$oWf3OVCLr?x6jfPyJj9
zCvrCb*3+C<y}nN%R;c&E2JRg@Sc>?<bo_l!_x7Bg?NsKy#8QyyYOv6myIsPPe>`&8
z3NJpJ8g;Cl<6MhV;8vGsSJ%!;<v8PW{&%6JP>D>}Gj@*i{CZb=&hSkZWxnX88n|y`
z{d6Zm&#B9{x=#8d_qb}p`>2X(KdSfdS5|&AA>PG6B<g>a&-;ZHjxUc1+%wgY(fw-V
zXZJ8<me99dmn~iYU3cWl3n*N^W(A+W&|2=<=gvIkonXC>zir1}&djq7596k@t^4uC
zBEra6SGahOyM6orMad78l=eNU5Ke9QbF;{~*uU0%%7nKoE-w3d{Ph)gnYDs9Syo^F
zR8?+ouxx4f<r~76xil-CawKNUaz$V2FaAAmZAaFL7fokRec%*m>1hq)TDRd7cg{}c
zGp*uFyOIrrx`Gb=OuZKWLH$YMq!$gxlFFB}IeSPs+)A5K%;@BMcTdjIZ@<=fdooX#
zmYMf2;FBeX58Krf{p)ARoeaM0aCq7g=C@OJ-w<(RTk`!9<Jt`=?qWrvU*A9B37N2B
z@q<Sq?Jt#|PTIHf;7hK>b8nwr_a)ea{iv1n>NdZk?pxB*k6leRe_?r5-`BrlmxIOa
z=;<~B2NUkdZkk=O;op=k7t@!`aB_IRGA)<qh1Y(kw{t2_wN7rCaa-rl4r}3<n6vGd
zb?cV~KGOeZeWxNQ+}C7F$GY`DZu9iluj#+r!@KMeLtxbHXUQw88Z~40h{r4m)>8TT
z_vO{~b93f6-d()ugIL>L(b~kq-*>ldF{qvHdExy7{}8LMr(ZU=KRMZYXgY(NzFuz7
z&&wvOo|?>gVWY4t;s4x5#YHT3d;a}cP{mU6arNKtCXH@a^EX>({h1-Je7D7-<Uy*%
zff*mzOIA)<sOiYYGD)+RTXMNb|DJ`P(%yYPvgFF4-$&Kj4~GO7-9E9q%xPjI|9y#a
zo_&#py(Z>z?>Q&dILsG*wf<3SSE1P4rQ6=G30gA0`>S1Rz0a}*`WD^tCs^IG?AXup
z?KsqZZT}~Z)!ucF+SW3hTM}^Ox!)b<xwZMc87=JIQ)e`o8~1EKwb|yN_N$~H4sZ3B
z^sYM`zfUQt-=sk6*Qb5^by=Gt)V}PG`I!Di+~583qs7c+GhJsN=H$FxDPh;@pj_YU
zWcPZ(qHoeg5_Pfs>umm>QA&!C?T+)5(-5oBGuJk%@D@;e)45-H8NbK5Ng>PGY`J!-
ztW@0hO6pe4q~BlG-cLB1km2)LYL*eB*Y4So7yGst+ZUYt-D}ia6Enr|*STg!DXr^=
zPCWJPs%L4>Uealqt+VZbMDmvnHPSyH{&+r{?_g^IlgO$vsppAWg@wCU>RZ3v7TmUK
zaReL3#J)|PM`M<pZc3cJ|B<-2YXfVox@?D@-`PX!xdcm}{F(8Xweq<1!qs~>FaFo2
zoOmRE{)e{JnT@OOXN&h*K03$uM)LgX_o1e5)>=QQ_g&D<;@KUf)T^mhlgz>qqP^Ov
z?Z1St()6yai682t_lb4L$F$Wy&b=>|l=NeRUWDq2xmwe=uWD8fQuK41kd>XZ(DA~V
zu2Zw7PmsHrdFZI^o6XZ7{XKYPf8B$ag!CC_esWAHD3tsBuKC4#6%*Hwy%{|_7~Zh?
ze_ixOF860rx|8|FCf=;S{k>ctY#k5J`82QOsqgG8#<`!a7E10dUR{@W;5WOhQ%di`
zpy<TODSJd_FT6OpUHYuD)X(oxt5~_#E9^OUnn%PbW&OSTSKX@a3kGd8YRlRj*lChn
zzSy(B>|!U=>Gj&VuNTGM3~`=pUifaWlat%Y4h!4en-%i4xcg<_YwOO++<r14CDPw8
zc7J95&9^SQdL^#=luQ;2T-7sq*^ilfTep-1atiNgW?N$~IbS9=RVsO-?61UEGNEoK
zPue`Q6WmkpT{64&O7El%A~82NGyK}*xUP5h6OF?+KUoO)wakrTX<gU6I(DtLz~hJ2
z_rqd@awdyto%63q=j)n!=L^f8(l66?RNk4t>9b(<txdbzeqPnAmTf!qYlrH)RsMfh
z2W;2VT^&0+^RwvEu9ck~_wL?gh%gAaoo@POu`XB6nh*XDXTR8YujT0V(69MP>#PH{
zzI}7cw!bmA<#v|LyG*(N{|fdg*`KS;sZY_bewhC|(K#(5aHHq3^`-A$XKw$NCHL<7
z+WwnIxcb**oLJ4CyMAMl1z+~mZkL{bpSNvKMZFd+>Yx4TMp<jX!|zi>T^{p^teVO5
z*PN|B?PiS1wU4i)CU@5v3O;;r$?JrRx9YmgFfP9Z|IJt*sKw;XIq~Iq%Q^SdEk|Y^
zoSx2~?t1U+_n6l1OV#hVUMt(i?N@YcDf0JvcW=tn;KipGI@*Q{sTZ&|T;F%Ad-;yA
z#S=cp)!*vPIrYai_LuonziXVy^L>T)3%|>8ev*=Y;oiP5u@dfCbESS}On(!5>eY#v
zZHen;6gA4GRZc8i>~U?TiPePJo7_L-Drh|vK6N2`@%Q-S4cjFS_)YSeJ}33q#0h_8
zdT#hU{cdn2f2Pc&x(nThPW`r6xT*g(7yp_1xMOu^V%D!couBuh_Sou8eP$l@vU`@5
znx;C<HQDSGTW9!O<J(HJx2KOV@b<UgSl~4w%vE9G9*J*NXOdPb{1L7-2}^Fgvy1J`
zq)Yr#Ynk4?lUNt^OYURXoFku?6*Y1m3(#@yI&(qw-H$Js3O)Wo_GcWkC#}24zDjbD
z=d_*D|L(l_@?O0)<JYz~p1Gwq)6b?FFKrf?)Vb%n(aykqDi&|2%d=nM%dwfeILE2J
zWxnS08%vK~`Fl>#{%q>wBRk5>iw)m!rUhM9;NiDbkb1f5bi$>54>tapy8lwt`=Gi9
zTIFkwtvT^LJ7G~v?}CrLyJfD(w#IW_T$yd{xNX&{h^O%nEqgz^{+lDXyg{tyf7|R`
z|9;+nI_Ht{`Sr)Y?&Q7j(0RiB;&cA0>t=~HE&f}6&}(VdYuliMN>^W$g#N9)8<nIv
z@tLyF^xUr>{^~L|FJUVd+~T);g?oIlXSR2X>2XW@y~$fUOLRO_6r#TFdw6bwSJD?j
zclN_~G{4Q=owY9Q=BXnKB^K>DnX$OAcBy<`eZ~30dFold0^5@`6c(Oeofi{Qb*Wsg
zrMD<|?UlmP&IigNzm_E#zY8y2V76L!qkU=B#@IFGZUQfQqjpVO61(uI>yFxHi9<FM
zn5RCK&3-ZK*!dr;TX;72ocL1rujFx(OmW(goZk&%&vpfVU8B80IMzcr<&^F*pMxfG
zHIpB1o|ydhS%O~36Y(UA%}ZMa*;Xjq)M+2BXG%S~UUPOE*OWDD-MU{29nN*pQuB(6
z_W0-#B(-R#u+Y(ecmA~*Uoi{Z!0qPp>-DY+yFG%KulnRp>6f~x=$330@%EBmMZlNt
zjoH7yUrD^N>7cO6+W!5APcmQ1l9_dQ;fX&C*&C$U`nD~5k#%3@<_U(`Y_3LPud}W^
zdeE~<<>(Igw<mNawtnj<J-guC<LYnKr+VeLuBeq+UD|VG>m%!{W;XG?zVFu@?~Xis
z*EvbiF>d2KnZSvYc#O(CBlf$VclLR+>_LcA=n3r=ISY@^n!{yP+gP$=(G{ojeo4-)
zo)xDibn~tYy^_I~TzcZ@C6E7KQ{D3=&X>gbt92#>-xDZ|;5z;AUtr<J-7kyIPV0&Z
z&QLyLvv5)DB%c`-U#7|UuzuNb>TqPS`Kx4Q=Nqr$3cvdOQRMIZkx^-vc8_h!ouqp;
z{44H6)aoAnbmzwH>gV=Lj|#Iff0HVGZ(qY>`SaHq+vmywRh^F~i%-A()x+|<e`C5p
zwvp2BiwFPxE}efbL{Kl=+1NI1;|=ZgJP*#LpS5kOjNbDv`U1yYmN?1Vg?;}DPr6(c
z`8DNU^~D3T*Z=e5^1s1-F51JOk(phv#Jh=U_xgwxPfsqr7n+ooUEi1V>h6s$>B_H-
zW@kfdZ|kQoJt+|X)+n>~bl%Yh_GSEQWWOjbddtJUhC#JES;T+0!NFXaMfayyN35_~
z=C(FXtt0Ak6K~mqj}c+N&1!4b^e#E|bWXMC&o|*_ZBHbo--}(CDtCR`emTzdUiX&^
zq{RE5SidA=($Cm4U(z-?R7|M+x4dVbhV;70sv#?~Ce$z8yvpt8)|G#!_O1HvSU4rz
z)~%JV%h6=jCXu?Nq<>%kyv(+m88%g*fAfp=QoIY!J4{~cVKc2|uHd(rN1v|;rBzj0
zq~?8Avse_g&cCcEieaM7hrczE_pfXa_uo77`LC{|rIqaMO_i4#b00n|ns;U;lW)iW
z!nBQdw$FI2YQDn$$0=`P>BX&{w%-p*s5)Jgy2^FC%YLW$hc^G+tY;4-Fdh5IG({<q
zo4dM<DKmGS<wwy!8M~IR{lA!b*5UcL*7t6XY&)!X{@@JOa<QKl>}C77pQaq%l&)?i
zwavri-nCa5?!v9*sSlg~eahpX`gOVQ)U^(qXTFmCz@PYM&Exb_Or1NWE}PX{4c{Z4
zxRT>#jL~G_n(Zn!NgOM$xF-4B|G7^xbkp%EX@|r&Z?WFqdt1%LU;Dc438u&K$=ngI
zz0)%vo+y2O=|Gk=|Fs1^PrcXwzq493=<nLPQ<LVax|sJct#4CXwjsOd=BDr8g6<pM
zNn2M@^^4nJqh8OuK*qqsP3o(aE-YxSYgtwOE3lPYEO`56>6c%B|GxA{eYdS?&&MZu
ze#%k3EVpHMzkk;#*0%rIDak%<?dNY2r*Cr*D>X^=Sg|?lq(JWN3(j%Y-a8r&FE0<>
zbaHvxZR5;Yzt#ONa>^QQUjOCWX}{Ii@*d5zeDQJlM3MQk^8KnkS8tr?zbHlGRf6ua
zl}y!h?sy*9*6=w@V(!YP8nUmsM8vmyvF%-a_0Zexa?F0s3ss&>IrQt_;jbnhx9sH8
zow{uk-X4qXyXR%8*SsX%^(=4Yv@Uj8*#dWw=XMLf)&H})@;4^*oA!<r`<`vhR{y6f
z{`L4iG0G=;_NHs4PWiR$$#r_pchm29KI?vG+!C<u*W@)>_9Z(QxAw2xz_@v<+JrCF
zXOv%BRF)iAA#LF;Q}g_5hi=MGHoJ(^b3T6j9=O@|`-Vj)Pqv;ewYoKd#o1}K+^!E7
zv-`OY_b@(Py!@b5YyYg34|(rwu|KWzYl#VmeA0e7tBV!dGiGelnwS=^$)@l7JDlZP
zam!zhe{1C~+Rg7i`SG#A>GP_mS8DG!4@--j6ULnEdh1o4z;5$zlb=+7pJ?^-PPkjr
z@m=W~f7$py`)VzmE23N>%ai@0;NmRSmCWrOD*LC3t`|!zc)odR-Q8(#56qsnVVAaP
zfzWx0q)A<xc|o67|FsaC-nZC5c3Swiz~>Y1PFwHf{6>`Vx?!fFn8OsctL{2EBD0c~
zYNc)xh@O$?$EDpIS6XH!YC1FG(LTFhc~?zk-9PPGeST8^R`-v;UtZo^>#;J5qg62c
zj8yTVjs;oSE5lVTFR`0{sHf|MMY%;>R%IZItn%g%w$lf#@A662bIMp<+c+aYyzb1J
z-XF8u*f&0VI_28+JZ^)hM_=&GOu8yKovm0Ruk`dDo38g(W&2;foo$l$VdAfe2H8hq
zvxF7m*4QjRCdGD)_1xo`LH;=`^7Bktx&nQK)Nh{h>-=@P_Q&4DaQB>6$K3u;h3xMq
zDT(X8yjk_VPj2D5sPDz?m;SzZkoGN$Q?-A_{B`vOM_I2K9Xi*b=o`uBG5y3v{pe-2
z`-|K5Cx*UezFoUw=@NC7ZS`B2FHS0Un^M=O^~y<KO>43Bs!ic3s~4od>7KhF=j`Mc
z_u_K*e?HLuIU}s@`)>EITk{+FD;J!*cJ-HjWs#iZiOKUP?hh-jUn%=(_Jm_Uer*<Z
zJCT-D%CD$>OMlI*Nx#mn^4Zg|?WCY#Q&3lJ(EDVA%4_UmJvQAs7ZXaXqvQVA+~v7x
zTE*~_u_$+~?qmbG(=!)c-NI~bb)V^c?u?mLUH8iV_e&nVTl={EH%nge`tw<L9y0Fv
zd85+!rNPyB-aetd8?Ij~VPjtZnE#V*+qC<J>v&}&mHJolKD>In@Qe%pH9w!VFPYCr
zEIX0#*j!-Vqpdts53UjmYA#e^GIHUa+*`PM1^32hr+=Ac<)3F;m{qX*X2kR*Tm4kp
ze!exUUFS2Kaq8l`leV?_3EI3*o^Z%;dZ>ucz9|WH0je=#uWQPFvCMJ)TWa=mF7w5u
zPETujZ_H<`KGwJFY0T%fk39FU^^RJ2b6s@P<hdQ0f=km16!sK08Qv|5WR1)J6SwW@
zT-P<R3R@R^-(^$to6X?qok!dEy$pXoW&NoKZYw``CvP|*#~}Zg<^SLF7N#D4p7lPS
z`{O_HE&ulXPi6G7)5SI0UOS!buPQ0hQn6ZpOJ?roqg(Y2a=295P3&*I)|0iI_d9m-
zPd~QY91dxNctQTVXEixBrhiLv3E3L9E5cN^Trl*y=%e7$?+RNZf=#a#o)nNb+g*G}
zndSKQ8Ee%}{QRO^ba`sRqwKIl!E0)iL^^AVCTVx7ift`ew83El`_|20Rb2EK*33BF
zq-&(y?s@&jZ><ew`p@q#5~=taEqnc(plENsD`)YUMLq$C(^`+Y?D)C%Q=85?DWR#4
zjkqrSSyeaXW1zI>_noiyop7r0-tgt;<+roj`X)_zzv$b%<PDo=yq64ib3T5>aLv+)
z6Ndv!?!_)s{{3vq+SH%knijKdS+54l?3gYldU3(VtutP^+@JoZD&+FA!y#AFR&-iD
zypt}q`iuFD{0qWwR!p3EzmNIeW{K<TTy3o@_Dp^~<IZ)npD7C#-t1p|?L*`4qbGhd
z-MD<QVuJ<awv(Jot5ufN$OyWaufI2K>NW>g>*qY~o>INmDW^9s%VhJ>ag(`c_*OL8
zYtFpuY!BHM1+}-He9C9^ys~BC$J!2i`GVgs&xxPvx-oG*_iBITT>h`y6L!rF-Wh-D
zV~0ki`^g->Miq{*qr5_&`)rQL2>2ZP=5tH_?)Gy_977tHwi-^^pFC|-;a~aULS@ta
z+jBoFpS`Eha{YU(`_n%+c6uBXe7*Ng%#Vf&X;stH{W{`)jj5K=i(aQZU}WZ$nV{DH
zV`IqTGq-ga)>PMiY`vM-F5Tukso~Y$TQ$x({KpdK<^`SF)Rna8^!EH>9=CZb&hFAw
zTX$||QsY+7eHN9s=1=-%*17OGU&o4r-_GmUz3SYoYGqw6#`06(^v0S+%XzX`UbuJ!
z&t{t)ywtqoym|Ory}#nK?^)LF)Y0pUTCE+!B59+u%O@j`!T*)e<=RihzvjKW()#n)
z7prTY7xYeKKlxa@dg9~T;e2UawU+D8&bs5VHzVnl@^{&YIj)?W=LuQ~s2s9W_Senn
zJCIuE`G#q0?icrTo4Gd+AD(!pt!zuJaNV^xh8LWq+QLdJ7hckwzM%fU;x4rW8<kI-
z7f*)NeeyUz&E{g(t&%k*OCmI{r!9XMJG=Ml>|^>m2I@OgCiO(^Y%k~Cu>Y>j`qQzo
z7Ymv<Y^_#ZzHgq(>aQC`U%nJBc(H6dlNEDmMnTpy)os78Za8j#eD~~EK05iI`ww3H
zr;uy?H9gK<$>8}6mC|>&VwQxue0sh2cv#tTb&=d(43)W^ZZBlIq-Ncop>b5h?Z?uZ
zr_Xv#bQfRgIQ3q!<?MWBYlTazb?W&S`fPVO_xt4c?SG#z2fUB2)6>{zw3XTAyj-xN
z&2sbYDYF(uf7-Xu?d<oCTPdFZc^Rjc<-`fPyl!7;;q|x4aN>)JZR<Z5d9`%RZkzO|
z#_x-w^OKcgYg}Z%tv}Dtdhl$b)wxByJC`oJl;SLLEn2ppdGn31N{wgxBT`OA9q^D>
zbidet)^cv(!s<ia#<464#}^$xT0S{yL*U7+JA5m@zuLBCeeAZT!Wr!C!q#bdtY&{z
zPp@L<IMu_}v-5;+PPaYJ0<#zc%}3%tO`qh=|7V~5>xCRwYF<h)WRp;8UP^va7MG!=
zg#z(A*TOu5T|J|~JJ*b`?_4uB0qtBfRIs$Lpw7lMQvw^;+@V|5eD#CDThfw|Hkze@
zw~uA&XG3?5!8eRS_JkGb7waQ$<|@asg$uM{3v~;ZB~o}nwq_YB7@C3H3E>$jSelv|
zbLm5PC_A_e%nVII8@LpR*uk}pH6Z4um|o9r>w{9f??8ap<WjG9!F87Mb`}nyJ98Ht
zZ1OJPR?H}<Pf2@s=Fac`q3=V(=i1$$l>avW{nj$sD6djoG0yA`)c`T3vh;@usp2di
zD>I5dFy6SiGvek=%fO7xt&Z>d4(vapv1OM-xVZp}&X4sBn&Aste|P)dI`mi7kCll{
zqsoHGVh4lFo+g=^rZ;aG{L0E2|Fby7urgi}o2QW7z@_aV$i%j5;RP?pIkhp4+sfYQ
zr~doQwP1S^LjecJ2gCmp`6d)F?P^-1bAUmVyWD!gWp7t)ZubVUBU~&c-+$_JRV7-N
zm!~_Lnd$56hjFW$hjpx8tHEr1fcr@v`vsO=jIp+j*Bb6OF|HExJ77O`<Dv^pTi!b4
z)!*8xVD>IfY@Ne_?t_9UtSr0trc^YnZCuwd{SkvMYih$RV}U>E8$QivJkzlM8{2_{
zr#_nBjla3S)8T>rB;7S@6#UMKCCCfh5KCY#Vqv<HGBxt<-n%my#S&iMZxrjxn=rkG
z+n;;F;?}3$2jsQ4Go0|sV9<$U`KNmR>?zSFZ{8hy#a8r3cj8;~v#0e=H>_Q%;OFPC
zVYl?D_g_7mV;aNsZ@)YI?fFTo2F199`}-SsIdXD8N4IQkH=fNW@#GO>$b^5|PmZ>H
z>OU*?g6~0MdirzW2aF7{3=a9)*4yrXxn+0mfc+eq{b%*L{?yJ@JjXCwT+pF@0`G^X
z{70{!JtWLgQ2v$S*YAI~Ki=nPZDvm3-BiRL!IbNmFs1%R{27PY_8(6_+}*T?(d~`?
z-s6l3|Ns8}efG)Hy=xQ`+~?OH`fm|$=F6Fy=^DGtUiAOl$x~V?m}??;>|oHDWAlcA
zF;9*`emlc~|NA5VT?1|4inyxlP`|eKue=lM23{7056fGo@BQ7+bAJD>rhn@@6B+)L
zvxc7V)@Ek>^1o!Cp*8>RtEZbE|KIulzsJx2*}w1W{NH}=|9#ezRTftN9xnTT`2YXH
zXp2Uf+J9UXFH`uxPhT0(xaSPpk9y~?4fTGTxGqRNdH7|29BX;^^p_JDZd?7^+pAz6
zIl=rwl<bqd)bHusf1iuQy^wWGSYUO8_sj2fj2j9zZ2sT>KK0%jnYeet+ox~-b(pnA
za`}HfP3CP)5&!2|`^m*Mw60#=%Fp%NySnhx2ZkEUIJPTNFaElxGvA0fDDZu{$boK~
z`Uc)3qEEkfe)`0CV@ciYe=bZ6W;6E-+CTSR{I{1SPD%Hl;~xgI)B7*JpSn5nKX(zs
zjfVeC`YvXmJy~YA>mBnLX5Zbfz~8|8MgK?8wTJR2J_d38(f<*|@k#%O)6-x2C%6-e
z|BKfw{PaV-X5xdN`ac%keJy|D=b<;B+5fEnyX{j!Y3<JTe=|C!AO6Ar@9`yOroD|}
z8s47;v=<uu-nF4`wiKt3{<OQC6D4oO?&V<<yRUlPuiu*INJ!hOITK2+Yj<9mXt!o+
zuH-N8kEvbm_vf$W?U<N*QtIvZI{viIS;4#CYIMhQvZ>$yKV^lyg0oucMX~#zt4ls!
z<}GW;ZG9KEM7QAMgX01EhxUGaHU0BCd5!;OVut%yZwx=Xy5(1Z-PuoJ>gOzWluX-p
z!Kl2igX`ejR-R75=U1eQzkSMLQ?LIt)5&lm=h6Qkbg#3=ALcz*zP&g<Ona;4-Kvhv
z4&Kfa3HpV{mc6J^{eD@5Q@rN1SJK9)2zSeFIniQYzQuuJqM9##%bV?f-}2Y^s^ldf
zmwV(wC9|@X`}cLte*`D^-9J(0VXAQS-OE<#6P4e)wpeCPa0+tU5V<yC1JC+hfAgN%
z^ocC@+RWiF&GAL@o7n8NhVMVbUj7*Hg0+<Q^C{s!Gi~>56}$hvZ0;?wlRPfF>z?IL
zF*#s%z#<}izM%KiXg#e1P5+n8J9)iz=d8QCr|V_OWw(7<y?Cy~^R)tP!5trb@9bH#
z?bNluOWw5`iB`_=eKogLQ{H*!Ig!<yExg`J{XP37yFQv-yfLOy=8$tq(-H6ctK7{v
z@2`-)IGf|_hsDu*w%F~;-Mh2d``v@T+HUW4cfaf_eRsmmh;_Y5`WJoALzS2Qd|u8L
zv#aIzyh!KZ`EsHsBIOUsE5wH{E_vk>l45UeXun3DXY0$-qpkA{v#*~IjNnt8xqf5a
z#chrX5BDBkwtb&+=mn7mA@MYg`SlugNqow0FLrtF<I74owSDW1h-)^>yu|EECvl%j
z<xrV>bItLZ(3|OMjIABk4`Owhm5kG-ZnXVldbi+@?QicbyKa{&MyTJu^{Q{q!N;lj
zl52mQnbIxyUrFjVOX2LW&<{#(-=?{83NDy>bAf)laF8&M>+Qr_){cueJdL-GS@5}&
zcRk0l$7$!kSywLqr6_wO*Jzun!jJHt6SMo(L_#;LF7A8Yd8~Owzx*WO+T<r~>-QhI
zlhjqAx3Qyd0r!K4Jhl&5I<_kui%LwL)iYaTUzEC3?e&`qO=o(83bwsqwTe}k?ykT0
z%p;Y6x4m0-Oxd{2va_dGvq<^W+{tmyhmOul`S{h)_iDyr@0(>xN0)GX@|tjX0_PnE
z;Wu~AyMC-zy^*}Dsb2H<F`t90ADmv~JK@LQdu{;<SDDuqRPBk|nzP)q#p&#mqYNi?
z^}mI@X_+nlG^NW%uup1n!>Q?+S~G4r`Fq~kaoV4G_97m$rI`uB^{-d{$T<1*SNMYE
zeg$^nr)<{k*&E<BXE*!GmaG}m?Em>yJUFhTbou**w-)>UycF9qd1{)MX_|M8kcZfZ
zqnDg4)ow4#|Gk*QRkrKi%PYS-WA^B`%s9%wwrWphu~X-c8=gHIr>f78zaeQ<HY35$
ztL<#0(vp7)ch5|%ReSebPoD38)~qk9cXQ5jUf)*{CpVvW`sR&YUkrtgE#YasxY?N_
ztx~u9VasKI%}TyPp-9ufkSoP+ud8i6d;Id7%*Cfq_cG1;ydxtzjeGCL&f+4Wx#7np
zW^^8vce@pQdXLvvo-Mzxu{m#V?z^j5|MRTh4PIkKBO`xXJ+6dTw|{;JVTmfdSa)FC
zX)C43$D7l`KF{mS*%x#2!ncmB$ag`%)-0U(>i@5pc*p0=A$y7$5+$nwF4bhcKYsk+
zOEZt(Q$L?l={)7QA^nu?j+)ehcLDlFmv$X)UBEam)ofkS%mVJqht+d5b{iF#{PY$u
zuB?ce>BM`puyp>KW`SE<)g;gV*;Mm%-^Tbuf-LXEKK^QW^*P{zUh>6+6>)sKFRdtP
zDNAF``dc*P&h?9*Mc?kcF!_sYyEMzb*7KWnT2=jRH~9BvncbYkvvq@2aFChNpEX}!
za8<q8mmTd~v|07|L(ShOdUs6Pdfo8x!$~`49XWTU?Colf8xrhyqrK8zPn>>NOFZ1W
z&gzn3_Ds>@jXjUudzihK@4fu$o?mRG>AENEKW1<IGdbs1{Fcs-Kdnp;tK78taA8m0
z7t7}L%wP7sIChQcmXq)Lw@Vz^_e)jnZnPA+<&^67`>0Iplj7S#T(MsA1*R6~vfe$s
z=A?7GR6o%@-Er1z_1<QG#-odqtv3`hoxif)Q=rFtw*9k2oyAuEG9hYOpFV_KQMj?M
z@u@e*wyBfXcg>ozh`(;TN%8(W0_RQzY3T29>@o4{kvw}}Z|#n4DH%H><TcD+`>t@i
zUdJOXWM`CMutRrKqwS9k3WW{tnr}F9{aKc+^?HktZcvSkn_x|Od9y(HtfvOYs!EIY
zYsWgBk8|5{N_U;Ukjc^1udDx7PTilkB~koj<Er<^!pin7xXZ<V{k5;U_vzwQAG2>H
z9XrCS5v!ze_MPs!-%Z|!uiM)^xR>=NfnUbOMq6;@mFE$QBl=RyzHwb~+FqgJzB^Oe
z=7y$7KFcKQ*4Yv3zj4+(JwA5$;M!kRk#&;t+Mh!1R84(;ah1K|B2LTsruwdb_D%ck
z`MvDjRrX@37_*D!zSC;FEBn{K-LEa6Y~X&mp-l1jo$tZ7Yh%}(Hcp=NUh>G-RbBC`
zUxnnfU*@Xqw2b%TN>37>n5dDS65t<iq_s`7FehQo^{7^>{j#54oiOxJ@+i7;VfNR=
z8WtmlO$#j?zsuY_wSn<j`l+t($L3C8(5zP7z4&UwnQe1kw(zPuJ=fn<{7U@Us%B1a
zQ=x*X2XFYa%Qy-hmFUl46l$KgFd&C{verx81|KEiU^4-ksdBC#SN^Tk<Wg}>uMC`#
zbS~@phuX($?IP9LXMgZrUVd3`*}u&pVRhZ73YYBrWER^0;&{(hrwFsi3pWac7j=pE
z&pa5?ar*ZZzpiL)j)zg@JNBl|eirh3Nu^^I>(!S1oPkWNWkC@=-+#-kz3x57?x%Xi
za_*9ie;=fti~Y`5{bNDA)Y7QW?(V$lTZGlSwgzpUA6~EdL;L#?_iV}1(7QJ^Q`f#%
zpI&%b`}<_s<uV~hmpy*Ad0JSI;HQnxt(V<??dP`D_d28KyP13Ue_8d3weH`t*$@9R
z7jIQnRjjeAxKSD^y7`*iBL;QBt5>eg@HFHVke(^B?`q0-^Qfn%=V_|&uDNHDm-~Tf
z+PCHNstbKH#dBWe6rFl_=qyVgpLWgifa0Ad9KNxuq73=n_X-}GajK|h>g1E(8?W~S
zySnsG@Y9@d?EULQ+0(v#T>2?FaD~j-s19p;vrn2Gm+nc<%Ur&5w&*(F9cJraPd(;8
z#r501ZVlgw=ego5PxVHX&f&8xKef*G@r^v;-Y=JvmFiNoDza44A8insX;zp1Ht~gr
znBlh2^Of;4FV#FdTyUeqwd2l_4l&iVE2+1Af1Cb{)(QQhf1rpVs^{^M?W@dB?T{31
z`kuEmY_7Ty$L^O(%yt@e0d42Aj`&E=KUOBOw81qp?Mme$xqp%cOxjFkv*lS$j0!%*
zz55{VQLuH{dLFf(5_1H%{=Rm$+ph0-VdCowyPAVJk3_FuO6pnvax%*?tF$^^P8+4$
zC6CK<nBKVkQr~%E(%ihK&Wr*_Uh5T>&0{^5ZYLyMS$DZJMEnq^Wt5`N{#vK6iFe<&
z9-Otca%r^9cdmu0&5K1?%`BE=be2uFiPyhq$#s1CUCE<WeQq}0ujVQ|Ziuq^&F}i4
zD6**7BYu6>I=0TkZbuzk>g<9hB;TIe*dOuE?dFT1>0UpX<u<CH{<bM|E7OO=CfuA#
zIR(YLW<)gW-HJZWWvRUCPNAmata%3x8MPFZ|8V~0*87s*Lc{a2jjv$#Ez#$;W|Oz;
zibsYeUz*6o^|oM=hq3E*x16BP>)$N0l1!%D6u5Kjm7Ilm{Ilg(ZH^~}%#UJvxqe<?
z?w=_pZ*5)8=3L&m`^V|FX?9Li-UQfjIag`Vn5CO<$ev!gA!)ty*>%sJ?cQb)?0Q_z
z*?)Rr#p~kD<$9+RHq;(>x^Y<lcCqh^SDlxGN)9t=sV}SMSrgt7`ZRb}^90+A#x|}m
z)mN8%$lxxV;SpR_{=0{5m;2A;rNR+q2d!j^e1D!=k#0EouzYH`T<B50Hn+Iw&WSS*
znn|9mTy#IGGLyS^|3>-i{aH*mjZO&$$h1E)f8U&ZTVRnxuIzG2zECUPM{Q>hiWE3o
zED%{^c5d5}#pPGey*+#OT(9=jnVX;8?0n)KYVZ1B*_3VO(JF=KCa*fc!KC%qxH|H<
z{F;f+e^>hQ>vEPg{{Cf}YR9zwisgmi-+mW4R7$5Bc{yy}b%|-E*Ma9X)3T~o9JoG7
zJNx|x#hq>Wmu*%&|9MC5&Qv>b<AZ$5@ADa*kTc{sH2MDWr=9vo6DqH_EWMQ0!&70|
zGr4yC;UoWd^i2+unwiA<edQ|7hfHFgiyXJq>&dzb@7FNVPKa1wZ0F>)I(F&uZErvA
zcDP}5%+6-dBAYm?dmpBJ(6%&{&8vRBs;?^hpJ3*t*yOLi0r|zO*QX`ystW$KAxkm-
zmnqNkT-TotQ`2Pq*Dm(Hwc4!f-{~Eb4L0t)*?QAgBL2h|wV&67Cndb@3RaQ*l;rj!
zyuaE1#gubtNtJuU=KXR!bK)`Mw~Gt5GIjAgA5sncyyHwu%3`&2tGb!uizbCGjBt-K
zS{V0QQR)7J%s2C|m-NMN{%ynh*5h!!UP(=NLVjF^lUu{W_iOLA7+tG-`{M#P``;W5
zu3bt$oYreO+4H@f`j}hvxM6W(U{Zk4tA%{4cpg}Kg!(P`_<HZtUH82{3r6mjc-Nyp
zr}~45&$Pg1*NkqtjdxqZ6n-^k3V(kbQ{PqmT6lK1!(`{fZg&+YwA{P3dRm~*VXZ|@
zyHrm+`ua0Wf0kI4h~n?oEWeu~O;aM0U$<p3L>cVmiOgBNb<Ktk3%njZ`?oZnU2Fcf
z<KoiZdpAjBuYP;!dE<i_mlo$6w!e6#yGAoUZT;%-r%SkgamsWD|1gP~DSI=tL|Hyy
z(N*`8oEta35SNlSe)r){pJw>Y1sAtfIhjs5fBeB(@g>oWl}S^Nz51Z-dGCJ0hmr|S
z52bf1@V*aOaN*LzqWVkB=l+zau8?{-p<c^jzHxB;nWGxnc^jrqaa(jlebYL#c`bL(
zF1D&a*Y`c{{-<>ps$M^7wM?uJ+2$*L!lpg-`V9`xm*QVD^9&64Fdo!OHqK8lt#vsp
zQ_e9p;HC4rSRT2C>I(%2_}sZg0{rAFZ%nS3eqYC~YUzv0lROm@-mRR!%y9PSyxQeo
z+j0xqk7X;wKFh7-nRigFZL!Ri2j^!mI`gGLclY*?jrS+N+Er?=*(!DR<qMA3X{$dM
zDdcY#J1$UNcmKzwGjp3fE<W{ny3nPcW7}t5wxrm!hf!K0Gv|wV1@d;YiRRva(*11N
z!wEV4*|Bq{f8L{~Jj3EF(-+f#CuuL!3fDFmr^#d;J3k@ktp1z3T7Bwo$~-crUNyNR
zJfXvsH(<TdzD8;32Oh=u^D8FYQd&_goxN;DfcRy$oWTDQ9j;A3SC&<Y1nK<zxcTAg
zZRL^6oW*V3Ry=#HP;~O?5$zKv&EkDDcA8b*Ot@5K(|dXY&#eb0hir@GnwL&Edgirv
z(xM$!|MWhr2-b<qi8g+G;&cC7<}8urrb(Ypi|%%*INg3GkA3a@H8-vEMHbAv>2m3o
zuWrnJlfCB0J(TO8=&pF+t1_3>d+wL@-vwrTUCLuL@mhCGwwaxhm0;PE{DiA>)eDd4
zFs#<nwQoK5<N5N2+o{TrMDNIbcj>p$%4WQ9YQwe%fqN@UHJd_1&wsu1z3-jfg-J~=
zt1f(e#Mk%o!KK9H9M%6T;#<3)`y}4Ge)W37lx^n6{#D-o=$hqb&AUHk|C#e!Um1QW
zH0SJQJu3WuJ>Lm`7Pl1w>Mv_jwk0Lp?@T%+KjD~sPuzY5y)#?~?yoraM^%PLO8(~8
zX=eEa7e8#$EcSanMfd-;qG&(g^*_S?n6CMM-ELyCXOY+EcH_3ikMw3gPcSv>2<}Y(
zV!5og#921tgZ2mad+n0TpFUotCSkm8!^{^6E8o20<e7gr!m!IxH>+o5+7ks`=7T#P
zF<dzR{nNL}yYksjaKC(AcURQ%lv|L&*Oyitc0HRvq;6gEMT|r83E#mDo^dm|uezq1
z-=ATfJFT*7LWD*7yBOZ7rxsjm&T0*5TrYHsOC|G5f08g0--DHbAv%Ry52^I6PfqRp
z5t$$M_=UxqBT6eab804sskjPc>Ca=^KFx<iUR;TF|AEsVo8L<<i4EFTr)0B2<ngrg
zSu$EtNxmtyMpw_x%XImjlmGd(cEQ<(XPdTsHa))4$n*fqsuh;E4P6)Q>3f=`R%N4K
z{_Ax4CV}^ds-1qW3qSKAwARIt=l$##{GWPFzBGxR+NC;2>c%VGcb4f(C(k)MzcHyt
z-F6=9eTg$y@1C#tQR;VH<vgcS7Ow@1UGlT@cPrVFe*LrzU32yBJ>OfA@g3`@#&gER
zOENj71#Vrs;pHN(OZHsHT&HlgsQ%0OboNf))E5pHiY~3b@6B)YaA8+%$<&WAw|W=t
zTdW?t&071+%j@q7uN(`ylAk4f;*Cmh51+^W$J2VOiY5P@nDX#(K#sG`o--0fA``;j
zI<0K1fAsE<{GxmJ9v8M%t=#d-xGrF>2~WZ~n>l=me=GhlZ2A#nrz|L}`>9xLuBLg)
zI)O9m8UJ?PcbDB){^uRf<YSfWa#z>oURZ1~^Or=)QsdLpr;0?iJY8Y5TP$;v%6x~*
zuPk0D#crP4WHm#*wS)c4y*Cd`pUUdjY5SIF`(Avr=F2>TzrxA}yBwGEE(&B;j&8G9
z)>cvS>1qf6vvcRfs<a<J+~UW5*Zjs3+tgy2<1q<4JRdbVMb25$G^<qUjljuA3)X5J
z@7g4?OM2ahDSK-g&F;>&pQvEoeCOvMMbFk(F9gH91+TZhm>%2}=j+yI@%2j5qsfUs
zq)Tl&i&S=W{JHBmc^O-S!~6_xkJGMac$vR7yt=vl-E+h4I7Z>pZXUHmTPI&+`WYQO
zW#`8gnYY?G5`8BJNqbd(R5m|)@?GJ|f2;Gl^eo=--=8<hmMcFs%~nrz*$MII(?4oX
zQJNRvr_`r5Nh?747N^_cU-z0TE=<;&a{SJI-_0upYjO<^G*+Fv_4teC<%e!jtRJM)
zcJmZ){QDR=(~C3QIYDwyI`5I1{1&ChzhbZP{Yc!ue_7DHcMf4yhHRzEXZM6nP2%n{
z{TI1PojL94DFdcRldB<|Ka&>6Yx`>oyGsamMC`1Q{k1X0yR>nQ|I+vn{jkF)g;y^w
zaeLoqWwOMB&t_h)an|~mB}U#^?&h18D`oSTPFrQ@ZNH#(W^6r^w{}<6E#oQA%09_l
zKEyun>?WzS-m+JXdo4H5|0ySa`P$}p#SL3)^)H|F_@LphG`lbTSaE9O!KnN!t^3bE
zhRnWt)xp2=N>IzGy$AaXdOsH?HZ<te21beHNv1xUd9ZTt3twJ^{B2<joA1B;QTu6=
zPm1qxrjt`+cz(6;DLZ^Cjks}MA#mQWcjY;3VsCVm4d#0tmMnVTYrEjR(>}L%cYj#0
z%)7($chTu^t@*axWmgY%JbqWdyw&7pk>wt(q^Q;BOy32`>UbONlIdTpRaE@i;o0>}
z8;3;YiWA%JZJ3dGs3g+T^!;obwT;bdCUu>(@$y(R-RQEjEALXXt`b-ONvoTg55DJ~
z+C9@~^46!f3o~;1iUhM8mCRP|VMv<l7$bE(s<YZGD8xV_M9zZ$iT3fY;<JOk9o_r<
z-u|swCKdeKKi&PsQuEx+&E(|Ox~cUA8!i~yFAIOO|3Fg52Lpiz?0dUS+bb;GdX9Le
zH~aXDb?w`-dx@{t<!=j0Kg}~-Xy9yD(OF{CVQiju++3}b({`CtXi;y=v$UTxCVog?
z%g<PSMb3OVv+sWIsnxq9EH+oa-6Fqs?xuiWl>*<7`9FCcoN}qOK68@!Z0^{eI}5+9
zHmG|&%k20KN$s60i!Yz@;#+^TB;us)>tDj6-mWY^l9n!Aw$Wq#r}eL#Qs-Van0q1V
z?z|Jqxrbh`x+bP~E!}cyH}|c33j+;nHonVLd3f!<>vc8(2aB_Z%1l|eZvA7iEk2X8
zR_SAd>Z7$1Rsp567kB;KA@6w2Krm=o<Qak3L;U$QX=fec_w2B;om+3F-x+jX{)n(u
zuhX=ysAmf=di>1}HGej}_l#&5Z<*5U$Cn%h^KRvYy{-F~k@54Jf68_zC8OZKHuo+t
zE?LR!s&~C7U2+M(8rvqO1zR$=Z`1PK*zNr2c(V7^1)1hwS*~gB4%@p)?ak|=TQPH<
zKP~@xNYmrg2?=3|YfIwJ_qr?g-M<&0_FY@mEK6@%g5;CA!iS!CPp_UK7}qg%=IT!i
zmnQw_JeMfYHD_zZofTV`9EjkSEq^>czk_#Dp_%MFgE=3bwECocXO&_qds-Yb%Pnm2
zG?%>wW#^}y-V|99eQ(o!mMMjk&)J1DM7?+4XurPCa*<HkS@m-pdF>9$mT*+wPml^<
zy5su=?q^Q~bq!dLJ=}XgSv7_4C)eM-rVk_MNu=i9ypnBtN-%JzhhuEwq@6PrYmPl-
zsPtWXWWjuk3+7e5j%$6tCtN)HQDLd7h2@UjR%c7Tv%6e<a3fF3$4^pBq4AII$7sHV
zts76wj{Ui7wswu*z1gjsYC^U6ZoXi3mFTif@A~j1RPhVr=^ti`r#`Y>8M!`Dhv#@u
z`|mSbUfKyIGo8^jHJtNtd*hZ6hi78BLh0cPn?4*nII;J8;8MRhui0{`f7j2k3=sMI
ztiHGWk?gwi=x-MkdcWQ4zGorFr5jnWfBskHEs=Yy6%t<sMlWA~yI?i*Z;tOG$v68|
z<=(zMe#1H7jCzOOx2`i=v<x!kPb|DW>->AU!Z)(nlQe9UAM`z!oByXHwrTQ(w`{zz
zKhJOE2%USUbxQJuyP3~hOmo8TUflIDvsdfK>9vfiGh!qITsM4Buk5URf9<{Y!=?pG
zz5lGyIOrX)KBDfMx@w=L^mD6}%rti~hp$(wQs?M?<?dY{sK?>dKV2m$XwlTts$#SK
zs<}3EcVGXy{_n#XHEkSKqUuQu3I4ZEOg+6X_TyWlUA<?%eEWX?x$Um3wdW2vPhN7n
z_H(A(CL14D;k;!_T0P1*W4DPt{bBWZ-Ga@}Lxq$1Ki)W#TYBns=DpB~J+oIYd|!C`
znZcAi1&hBCuYWB`N!j<@+)p(|zR-R4BW2l474KUMf3S8I8}r}Zo%{DzdC=*pRx6*n
zNAwzNRs1#G=d}HNNon6Mk!3$aI?6qFzt_LTcy>X%mU@hCw;0>zAf2`od;JgVI-fSm
za?5(wy^dwkk&1*JS&E&!{4(j648**(AH4eKddu;u(B@ed|9K7`_IVof^evO%0oGf`
zqUAr$4!?bv=QlIsD(83S+e}zLWTpPJ|CHqBJ0p#&ZdzCG?T*dgzV6rL5~+#^`njuF
zu-4h-`3BzJ*WwY!d$wq+M|s_H+IRk@<u(48qGc}Up0zx$x<2*S#@*KY4U82M-K1Y1
zcivWby}9Vqx+62T{VBU_s+jgfU+BI-1$WfW`70Er@m_Vd7xgL&)tU7;SW{H&PsW0C
zo3EP$wM^oSYE(_%)gNPPdNxv2>BfUY%N~0&$~oK$sq9Sr{b$?pzRU_v=iu}4{!BME
zOx@;g9oKlw_TsNt(;ruhK36V|sSUbblN*%enpp5z<=I-k9#d1FUm;fu&PksZyOdjP
z!Oy<FD`=9*@j3-B$4{GYuIdW#O7xdex@&ZIiLviVcJa^WXQ({c!0O*xx%1h}_T%Y~
zn+sn|yk>D)I;x-bQQ}4+pSGT<s|}P@Ywgm_e6m6vU%xD1zipawrQ)*cH>K9o#_ZqU
zCkZ?V`w{x>{ne}+hh~Ijc4`{e@3?$<q0C0rUH&$5nG9do*gXzE(f{kIHiPTTeLogi
z*<9Uv?N-LDB$Km71sizR?F!Vs6K1_a-M`ZD^dkGb^s<7JZI^fTZq~ifZ?W9#sPeQm
zr{|Y&7HzNJ?4|A>lrJTG#PrF{19eeR9reeg)+Vf}(9!x7b*N^Onc7N)*Qz0@r^S{W
zyt8xrhQ>FYZ#JdQ)RT4)ubO-^$^5cZO-Qx$%noKQ-fax7N?iOlCgo-e+H3BI^IG~i
z{HaJ=^|rce#-gV7zIiW{G(TVIV47(grdxQ|{+-X<wY>J919W?$LuP5Iy<FgU&|`vb
zgI%e2K$P~qAo0lo!YT^=-R*I0sTu`O`R(4U*kxpWLiI#->l7QAGPQ-LkKJ;5uyyW>
zX8l?33knXbb_kG@RZS`4^}WIqetq$jH_M&xsWh(YoN2F;B7gi<Wy<tG(WL%{XIq;h
z0~se5Z}7XjO8A@arW-L6ly6S*RDbd|&A6t7S>Skr!mp3p>J-!_TnbPM($my!-1GP!
zPuc`a21&mfX$M`oJ5e*&+kMe&OjCdQFS=#fmDehk|8{H7yL>=?hG6ZKkR_5@N_)iC
ziS5b#c75vpY1USWN|(IWX$ybfA5|B3Q2W)o6*4kwl%Fj!vhrS*uQ$mz{{Ok6@D=>W
z)>%2SU%zjp@<wBQ?!AW1SBvBVmhV}iF>%_&iF5N;yWClJu0YUt%YN&;1x8FP+^2rC
zoj#uW<CJLjAHA>`=coBzS8|?o&zk>Wk)Thpr~}8L9c{6>lF_SoFD}<;Uq1U-Ur+g~
zr%SXs*VoV8{ln|w%zDY74O*si-A^6gqIGG)U9&v}N89I3Z}+}!ZoGe0)0`a~UB91l
zoZ5QIWkyc@T)vnY2cu4&*;u0K{Hv+q;j5n;|HYQ1%S3Wo`rP0T%Dr}0%`vTf)x8DW
z>^v{_>YsRhr)giP<7t72LrbJ@ySYDElEHgY)8&q_rbJ!#H!&4f#`PN|z5aemUoW_t
zQ|H0&e5Hx0$A8~g-|l(H|L?goEuYt|S}wJwR6$cbWX~lPjh<wM>7jGBpNq0weJIDW
z_i-fai9NwvD&`6w-n_Z|d97~x9nV06>x>8gevR6vd`p8lFHgJj?cYf)D)CAV%<Cq1
zKa(;pP1Akk^s&l6N@T;;={F16=dRQ(dzdUbSzYQ|$1WG6s`ER$n8Iwo>g~9?P5P2c
ziuhK)TAnnHj16H*|8gy@PTW&_bULk>ae4oRMD1?RkdmET9&b3C)%5Rg)Vf~s(=Nkf
z+iCk1-2%a9^*)4uEQy__e8NXWx%jSecbdvALE(*4(s!NqZY$ybV^_Lom7mk!s(jIf
zszLua&s9Y(aQXCn!q>FyOG2q<S5*Al#41(D_3*?SFYA!mpJwf<I<Kjyb+`S*s~3`$
z*G)ct6_~1<({^g<mq_bJSNu&gjmzsSci0{JwelCUjP;N1t&MB{Hg~W1!T9>w>Z=#_
z_88s0zp0k%weO}Q*YZk!3xD~PXY*3I<dyr*BXd8xzF)w9N2Kk^<%PvBmOk94=+N(-
z*W9=LqCm~3o_PY{4yU<gt39VjT`VqRoXnQ*o|eX8AC)ul^ZKfo1x6Wmmo~3mAsAn-
z9~L2gsWBxb<i{7gV>6~?zqh-0ys+S2N_9bY!j{@C9qT0`=R8;0F1m2`tEq|ywES6v
zC$62~uvY7q?}fYHrfGiKncAD%B06ue*S%FT+4nD9HA<iT{EOg^&hCkG{>C)gnpxiF
zmfXT}>&(3wm(MKTf9<K#_ZQiZT^Fx&n>qLUxo6eJzuyK#Z}u{Yd*HKezDmrk?Ar|o
zL>(%>E}ZX>q%xb!?&6OG6OE~t-)46nRXg8yH<7c?t+yt6_pyg-wfS}~klp=2anhM8
zPt(I;IX??_z5Xj4AS&|WZO`q1jr`mf6>ca$xxMH8+UL83G&|Q6^TpQg5GvHP&P_id
zzhdRCdA5Jre2tH8HEFoLpt2xyeo?4a^z8HP%RI$jUtbfebH6WMOi9k-dtLPnBTL_>
z*E?@&Have}`MvMt{fBd-{@qYDdF{BtDgI7#hQ#F#^9+rc2F`tNw6v`?C7rF*yZnQ$
zU0ol$!~49|`<KoaZ-$-LfAH!{jM<c_4;K_ZI(O=8qy49;6YWo`n`HEI{&rZLm)heQ
zT(9@9nmhXS%tK*GeeymE_7WQTyv?)tcNv_xviA1X&WX{Ii}STwbP|qT=iKi3X(x|7
z=bIwd>|j~9g{dEFEpELi=6|ZUn#1bIukRIY3<_oe&Wo<c9o1hMHOZJ^adPadBTt+D
z^k;wN*H!n@eWHBxY+X%A|2`w$mEzA=<g7JbRLr|JAWZPNa`w@0ZXaeRe>`#H(X8dN
zD}ugvow{?+hVAHf_u9CE$Q>OuE7;thsuu0b-IU&{yf30Usr`O|wv&==uIhHn2`zU`
zG?$$8ajo26a{o<K$m{jptQsv#>v}J>pARe&w@BZf|2a?NV3uISaf7uAjek|&I+a#*
zPJAgS^gqD<P;*psP0)_Ai_1GCiepYs_PyNyPb0gy)9BJkaobP_YlW3d@9RI<>7!d6
z-5Dk?|3InZ(dxI4%Q&}8HnC4(vbuiXJLZwYtc&kNZl8_0aAWJlsS^tJd!A0#x9<!&
z_AaesLG4r3Bo6Vy`af4^8)u0BJ?XK!?l((mNlD*vc6qrSyZTn#+Lc_m#nbjk-A3D2
z1=h+B`bvJ)zOuTO^3?Z{dUkEyjK?STs4d(3<xJm(R5gh!i?>XAR2=?q{-R^;uBsK0
z@%gDNCk-n6Wq&{Ls^(xeU6QSLHTdni`#!E~#HDTJUpda+e1*@v^eeCSm*^?0PA&J3
zp4=s~dGV{l%UUyj?U?xJ@vC{0-ZCk5%<<6lcpPzmj=r(l9^WvPNxEXXr(P!I^aiu0
zzCH0{+Nn2J*esSZOgVprKf;XjZDZhBOJ(M(OaFzp-;OuA_iF7e>-N5wopbAUT{v_;
z<%s5Mt}}-(@^9ExQ*yXE#_h?~ZO7H#rmAI}Hkk0Eg_mQU=8f6eU#s4B|2}u}q552d
z@OGs&OH|DFKiMkvG|jh2%VK#>jK$@kC&`B1p&q;V71k`czcY|6F>kh2BS%NqyYtg3
z4j#AZ6Fatb?y@Y`suqj6t1e0Xv-(+iTcCGZ@|0hfufNTeEdGA|^wbF1qk(np%-&w}
zEfRCsqs*B1*L@0NEfTtUFMsyCgra)=qLs6X-+UE*-TlVytW#dQu4H!xpQJ~3$lVns
zq5-?a&U-zm*J=-R44wJ#q|6ta#M`d|3oMUak9@vx{%(!-iBGP2ct#2Fhj{CL<6c^9
z9KG|^78%Xd(7Eh${>f{$96ZC7ioQJ7$iM(;xo1daL8=1yo(9mB3q_d)CHX~=1ONRJ
zb5j-cgB*Qayu!fCW6g0ak2MA@k2O%RG%-~$H?fQ*_Fe~5E`6-`I+z+GFON0g(s#~C
zEDBC7QP9wL)_2tp0xyXL-MN5R3Y({&uV18Jq7S*cpc3`Q0!sx0g&;0FJB8Fd@bX|I
z14AVL`=sWjmt+_!7@8O&-B@5|WMGMHxvROMxiNUPs{#?rUCUTQM6#~y-M!R%fPqiZ
zw4_7mlA`P+J_7^iGXl=dON6>iJd|T6UFuz8a!Gbk%OVpVrvEFR&v|cue{c5P-DzuQ
zmVd9i_xDXX?*w1>`SJI}5_tpN4ov*x#H5gUz**PUkby%*iGhhzn6Z(~V2SXP{%IT;
zEQQ7GiVrURKmG3lFO%D%(yj!RTfW?k>?^7*7+YKzoE}|r61t=y;2^;=>DO(+hibe5
zEY*i{7^9dNN?Bwc`LWb=6nrdfzUe&ig;u>h;~g^_21QLx&VBbEGE}B_NS|TjVb5rs
z7|>z7YZ31a&ISD&8XYIt{r5Vk%j~KYyM&c>@18v@2hP1?;xPZsZd1dcFCoNrp?Qb%
z9UH}M4e<qx{RhrXxPO49qk(~0<ILawDEY+pFHE}~88TXh&#*C-yR%mu$W_c^D9LTu
zH%raoHY?Nr$7_BbZ{+`Q{VGEXOUpmc@8Mt8yBPd<pRl2q_s~sNp6`tZ-!hgNsB<_(
zM+P&z?0v%A@NnCHnS*}sI7)182=f#(MK6}EGv{N|IQ^RGKt@gd!s6|P%{vwDvffGb
z+b_WN&#QS~it3KH&MljbS^7%Ue_frgbcQ#nd0(mg!TZUjEy{Zy)YYFWGuW~Au0F>$
zIlZQ~f*GsXU3@?4^Ka>TVQ*E<A*8^@)TpAO$|w-daO5_d)(`ESjs4tDwg<kLE_JuQ
zVLtaE)`a#p2F`|?ju-4*>fR;zb1=Mo#>n~M_x-kdZx<&ghUgi*LJ7PZ+YfgBn=HGw
z?Z)4U7bllDS2CY*$auub=&;}J{~VnQcQ&~mm|OGj@xSUFO<7f|v}SSb+0XbtIVixP
zg89#nRtJW<L_>jDs}%wpSbhn7c(3#S!GG!B`D^(kzJ=#6_@5Hed|Qzrs9s^g`*-;g
z^Xdzmey=Zm$oOaXA!U|X#|0R^*JtGO2{GSXu)pQs{*(W$pZq`eGd}X4{FeXk>!#Sw
znNt_Nvwr4(e(f8Q&z^jqE_*hKU!_WUi@=M$4ga^VHhgkkDBCe7QSRLT+)(GHi?bE^
zx0nBVE|mE0ltF&ST0Wjk=D*Gh_NO=ay=Q55E)jUQA^toMgRR+x`kNPar#<ed^SX0!
z@~_;c1>rC6t4@7j#&J8|T3tttk74)D#@dbx&F<bw4EBm&if%dWssAjcpuym-a8Z%L
zWDi4w?4jNl*KJ&vGBmw7{%ZQCejO%(lEO~~|J@t)bUMB`{h9VZ^yaa{XL<Mb?w{G1
z_d5UQ_gBse_XMOD{giAuyVsz7)`n}JwJO#0|E<0FTfQ;+*!s#Jf1lmGWfQREho{X{
zNyXK9%RhNG-+kge+v|>c5%-$#x@zC|9}dqJE{WFrTOW1wrEktwfwR4rzx6(SfAab_
zBjJ0`%qRSQQ~&f;zQ~)7yDc{t@|`LCIzi>?$)#4`Uj=?#_f|Jnrp|8j(%(CSVw!)X
zzf`H;^3eP9gGHJTq+g%OtSYlnu{S;#drJOZO0fEJdCkqo^CGT3uIOai=hiLqW9B-}
z{kvv-i`6q1D0`o><8Xr4`JP%QOPhl)mv5N6#?Sn9c+7??=Fjh{1Rt1H+pVA4IX@;L
z+G4NJvhPgyKJ2?yT(K|qMX;ZcLQnU~{#U_HrJl@Nr%LZO^G)r(%B_{MwL`h3a`#=o
z#Kvne`E9-m|5R2dtk2mnmrL41Wc79F-$5Tj4}6bEKluFS&QIMN!j~#t?*6j-pQ!6O
z)_XJeWwr@c8NYw=Sb;lL#rE~LV(n)fVbKT7-W~Tnzw1-D)s#=C)Sufrgcv4z+MPRg
zeDUJbf&TZM|7;9o>56JGo3?*y$>-_~Aun7F7st9kom02ZZkyC;^~uIuD^{5O>HHLz
z@vd!$ee<`XJ35<p?BGb|H(Ipp%2U?otF^ipM=su{-y<|>NubP;PT79<H>GkVZ!W6-
zJ#s`ciu36%q4GSRM_~sSCY-r05z4{8LzaKn%nm8p1EObT&+LkQTDQA8@MQE?R+F_o
z(VQL$Iv?kLS~+3w%I)D<52ZtD8urK}u!q`kzwMfMCir85y@FO%{@eaXcckw{TE|Oe
z-gx{(C})|4mI;6I9HrygH4H3uUn5riS#f-ea@nB_k9m1+fs0B@zph)MY8UdjN8$Di
zN26oB=HFJ9dN$5Gu=pW^bD`j+EfX6=_*A`4T55@^{x=Vr{Ko%#+8^cz>L368Ugw{c
zVLeyu-E`BFuZ`x(+4so?nRM>kU1ry~YUXX7B?U$Q7RbzbA1k_9CVc+0lQRVq=9xI!
z2P-LyyF7bw@M`Mmz4IJ-tGoAa4;MKs{_6YB#}{PG;&(Q;&+UqM#=lik;n2R)&$1d*
zuN=9Uq4av+qkE=ptzRx|VLo@k*70G*>C8W_Pm{Ih_AJmoKI`{!ulTwrk=0Z5SIJ(t
z{qlru!M!C$->+P~Yk&BLqMU}R$W?2b4DGqoIz9V$wSOp*(f+kYhdt`@Bgw4F(Bz*k
zEH~VxCuRJ7BKT0M*)hU>c?<JYuMa=Btef^Wb?*(1FRz{`{y%P~6#UOo^4SdGuRM!)
z+`RRpQCV5o<>SFgPq%CS4l<gb^V{o<$e)cX+I<Y4NpD@KBpjGBOIdwS_K)H{F*lrZ
zwYIx(M_&HPy*}B?I%>D-V$V61&r7#k`Tq{PCGn{%|C>Ggo!9eXV;9B*RtN0Vs@$<R
z>(bQ9>~lsB{F+;@h!_8>&A48$_xbatzx?-CxV5Lny<@1_n)_&b73Vu^^`bcoO}@Un
zkeReny=i4h&Dq6KbzX}r((?>+UZ@<Dd>rU%pIG@%PC4n0^1rauC;xbZO#*&BQd`qF
z)yZ(_^EY?y|9E!e>(scT`%g(Q2tE$obNI)bK)KGJ%qwgoLh}swO}%)^?*88ke;=hz
zow@ncu}cA5N0%5MQN6dqpT~ZKUh}*+ZxyTiemq$F;O(s!bDzErUe;ss-0V(G4fD%`
zd-wcveEzsvv~^n7LK~h-Z_oZ%TQGlGM?ktz9`{yT-f4zXx<$ADl=lbpx!UO8dTM5!
z#rNim_Tr<L<|p0jvYB?{{;uttPdKkAHj~vg3A&fI?ApAT$A3dUpE`Y~VOm;aKo;xy
zhR2U}y7W38elyjazgF5}Ci`Z)!{T-6YrUsFUG-$q5x0qx9p1RUU1%$7qMzx#^s&y&
zKNE5%G<Ki)YT{M*UvQdsUHcTJhZ-_LckfmR`z?C@;*$A&W2669k9aVur}<{F|Glpf
z`QVV<{@0zavYXD_m}T}yRw?9%>1nl)mA4<iD|^HKes;0{q^C3VE@|g8*LLeX2(RKh
z>r>qKJnUlMq9eyRjNcmw8x^)M;VJU>o~Brr@#V(P6X%kSHnFuSpX@%QS8ji0q24|A
z>$7jxrHAgA$vW4XU;H%dZ|UTB{^94(>dsmzlz7*-&~=*80{v{;wKMNVxW&FNKallN
z`DD*VC*}jud@~|HUQW2rBr<KQg22huU5{dn%WvEl`IpeQdC&7pR|F36#x3LRId*Js
zMbiWOD>n8WVaZcX@A0R8%CkFXp?SUH#k9OR+A<x#?}RNqnVYO)vCfvQB*isp$+J(L
zR})KvTnucpg97)u?Y_?{GsV*&q*6aVcJ1`wHLn_*3d))-r(Y`)oe^R#^lZ}fqM1kJ
z=RaR~GJ@w$n##0(j>i=af$^P%ywPDdoHMeu^>*_c9NA?!=X%bDJ!SoQ>vF$bt?~>0
z{iellPs8UODyPM*-_*T0t=y@y&&~golK6^nk=Q1lZ_5qh52;Gc+H9hp8O(NV?<c#c
z?yB}vzNuNwPi^OZvZ!_D<JFz=<g33?=);f6SCrT9=>D`^gyYh7`%PkoQgM>zoqJXE
z`Am|v(+Zuf;wP-weATUIPmD#SrSim;hxdKnm3=Aq%fk9wx7C7*X7f0oI^Hk#fmLq4
zbK_U>F5xNflxJL7n{w%KvgyV<Pq$Z_nM7xENy^KWB}e^E7d`dr^6c7(9m084LjR*S
z?OVlJo#keeC4A}~yTZ&VosZ9MTjqU3c<-a1&lawJ==J5xp{xmif5Zq&I3L^_#J>E>
zg|(jHjxztYOcu0mNsyXqpLi|rU&oodSKd8Zv#R3X&zoCMFME0XL*}es&zGc4oHpZ`
z>pAu?@fiZkN{@F=(be*DVmdN=%GcCwUsEy)Dq`|pt1<__Wd9U8vBd6DbrbjfFoP4v
zEcS?f{+1UTFnju>ck8}&e^U)8epx3gSoH3H-RYz1Z^GF8lhlisKJ84ci#+UCuPT`P
z<NT+2;f}ACWLFk(amiZ8y!U^{Z*y|Nb9b(?W7akwOp`yK+Rhfm${@Vh%dq;;Da+{r
zVwQC+TwCuPo_fnZwZQrQV!rjt6|GJhSKrsYeR$DkmUrSxjU1nS-&>lx&779Br&US0
zzui_cW5xdfcE)n9GqV3GZXEsHx43F@+vZ0O9R2FMZ&pv^EGptmD>ZwO$)r(O|IGW+
z8^8Lb_uIcJ?n^$uNP5lNm5cc{H%?eECx#_6^6Z1%>~r76-_W$u`kTj5d%5TFQ<Irr
zciAiyweVjU_<hQ;RT&bKcuy)@i-kxC{i;@-WxmZI?3c$=*Zv)$={sg_m&%f<-{+&G
zvMs)3;ZC<MgN}(JclXU{-<A}y>f5)O`xa(w@Y7A7sqQ#8dviisrNyo4bCp`|HT$<^
zP4N*t{nc}##KZu$xqIF(ySaa1`OWKH=TF+0ovF%Hw)p8=^P&CnzGJ05udmN9ew<aS
z?h|^N=bZkJ_|tQ8-yijuc_(tuk?uJ`Tj%jr#=6OP@h;SV^1xz!VXfpz!IX~p@_q9j
z@A=^=(O)x1`%@BA>f<Z#fBs#TS6DQ2U5MuS*VjA`g<LWA;Zts(yP(VZ{_przwH}AG
zIR1F3XsFnG9W1WXpZjZf_FR+A#;O}nFKW2Ecx&@^v+vQ|ayx&^_xSpoJ{8%u&G+)<
zM78<b_TKkcvrXp9Es48VEAAY)u!u$B{GF-wCyrHTZq|K$H&fxSg^ET|^owSnd2(5H
z8*1i%ajslf?CIHLa;o5}#>7>&p37TL9GFs`f8Hq|^&#8kMS+u7uf5J5f7k5r_50Ue
z*42D$xHnl}CE7jm=f3m25#byQAK5!D`dYa2<;9a-)8Fh#xPDP)&4JjD*Nv3d?Vcx=
zyKjxFnYzX*kx=(VJeP}RM_hHy+P&b;SGHfhxBDg~Pw&=g)Ka@@ajNjgk9QyCE{jCW
z+jlGP5Z6zMT@NR-=2dVOvkCVz@TnbHQCTEB?{vo>)5^1Rr#Q~m>e!KA>>*lt^NP6`
z<KtIF6L%jys&vA*QGWAfL($#OSCxhAvyU=m-W%d{MXxLWSVBot#obo6bqBir3o7S1
zsqcL$@uo}r^jE2)6HarzI(4#-|9DgPHswuHCsue|DL>j2erVm@zkFR0-9K|<Z`5A8
zfAZes7gG+u(aD}JT3EYk_ZQu4yBXK3T|bw~wM=}rb)EQ)`>!lgX6}ho-1PG1h1AWJ
zrn@e59rul$5oQ1VW!i$3TN|J4%h5W&EZ^v3)A_geZeQ^g<NNqZ&EsF_pV((?<r|f^
zwaf}m{B*Oye4p8Nsc5m*C+Ftz`RHFxJ*2FY%Y6OEnaBQ_tqn!xoB!~<5SZq<YIe!l
z%WAhO{hx5nw=(bA^X-4)`-_ruN+qwhlvrk()iOM+H{K}9w8%{5(A$LyFK&87*PDCq
zT2i@f!|dw&msVAt&Z`yj<UH707yW+znQkNPBgc1N4fZ=F>-xpv`)?t3fjpH~@Bez?
zKhL<XPS+_*y#Goi-&5xL;rsIon*SDrD$Y-Q{p#sd?uZ4IOQZM8M@VO8*xh}7AXMe|
z6QRrNY66qz>z;_~Uq7M$NwVbgo82s@(lXX0KWbe6!^)qJv(CUzJ9tA+UG0J9IjxRi
z&5IYMg{A$Lc-C^=JWgQt-*%rjaRD;9@6FHDiOot2+H|qz?ytSAToLiU=~^DFSJ&^@
znELDczE#(ST%`Qpxjoyj7jC@lmOaO}e@mFs`t>L3+MaO<xMjOJR@`g@m-VLk%MNbu
zNdB`a*kg{)ZvF>~0zFGU7~60^Evq>B<nA;LcfVcv_e^=-2I{McN>A$zl99f@a<2E9
zMe+|1Z&<rte1&hxY^Jo8N5tMK^(?B|wPe2Y_55J-yz6DFEjvV?*sLs>&Q+O{vuol`
zwbTC(>iL?#J0?`1aI8Y^c1=n9ne1sC*UvfZ%h(wj+*Q>7uxepLLRry9jgWR{^@-(Y
zxi;*7aO6ntvtGj`K5KTLnQ+i`TeVX|LDjt*JA@tftzR|Y>9}pu-R?CDr>k+sA9-2(
z%y-8Fc}Y)~Rzvw1q2)7GW?9L3$J%9mKl}5Ujp5a*pP#KguTR;x=jHJ&>%=$xYI<7`
z$;QoNcfPdYPW0VMKck9#?%V0iA9pl4x$8DP=rWib^S7;OnK9=-zvE)hql#jLdZpd$
zCLUNm*UV~Dy5C3nX(IP0eBqi|5GeF|zwLdsxhKzkjb1BNc%y&91>c-mWlh&7Mwi!Z
zTNS40UY2K>`0eJdhkKXj+kDSeYk!iq@?-GV`^&<XCWf5Nn0vpp{nv$;esd$2=R7}B
zvo_#c)qL)qCO6qK&KtX5InMu9@6FVoE|YDwJEqp(DztL1langY_?M9|bJ{AEDF5HA
zVH0dVy3Kn(xl3JjmcZui#g`OxU$d+^BW?7@Z0nI_RzJQkU$S)d=gG`g{6eq3{oEp{
zcRc)c=G9+2WBQ6-bnVia{8T~C+F5z!<eR4r*jVk@E)+^zKQ6t$*-G5*w!j<Jr(gaR
ztjU+wnU^;CX0D51jQ!+GQfqYegI8bi`ms9d{m033=0(b{D`IQYUNOJy4y%`2dpN)A
z+4K3Yw(pgh@p9gynwJg&rmL%e?~q)@P*(Ja!B_LV(%G{*Y8v~(cJ7+D{pn`C6(_X!
ziX6Q6=GvS~{{znapR(~*j`-J!Ok3{EJ$ivj-ua@n(FxB@_N8;Z+lq?z8UFg{bVx90
zMZt{wFInr4eF$rAe7?$hSN`k7g`Gw!OM5*hIA5*1RQGPvmIrr3AI#<a*8AX;S<^AW
z)+`ooGyc9d|FyPq)f3xJCVh~s`*3~1%<$fehv&7iMJ<l5yP?8T_V{=8D*cU5H~YU1
z+9iG5a;ew;qb*m<m$~!Z*?cg)>ih>?p7OF62_9;DUj|=HWIt6EKV9Qpo|?mb{^PZ`
zzWBYAnfBV@(~0)#%Wv8@O{!JW^`4P`RmRCe^_OEz-evBI*IATH<F3X<&OWQRkUwwf
zUH+f5biUpDd(_3on)9de#G*QW_jPloT)3u^ymD*c@ks&;W#U*xWb}_bv3>XF#qvi#
zrfkjLDnE50XC|w^0+0M$e}^r`+>fn3+Wc*d*s?Ic|4y>0i^v&2zP#M4HNjV|oQiy(
zT->VrW8c=NvD|MeT+=^3Gn%qDcFWVZhkn~;ax-!_-woJhG4Zj{eS_aiUu$<d{ghg4
z%p<%%Z{_;p*zX_q>8HH7$0hH#NcwNVops0R{^#``n$%fsX!rcC#!Z3GOTM1iet%Nd
zz8|$O>U9ck_B7|usJj2^r`f-dUJu`|X=y&(c~h>}qzJs2QF&mMgZfhm&HZ1QR8B5<
zIdefoT>1MCSIu6weZ5^7{4nSK?#^`S>um?lU0pn*W>w!+y>$24Q+#9%R<W;>)_Zj=
zrKmtOG$bbW)G>+Tup+<vM?4m$$y|DHKfBuTZP;7cDyF{tw;pV(xcAI|y8dvj^PS@>
zpI(_1{de*|xwflwcjQQPUpANf<hJX^r45x~VfC}Urv7|nz5R>Mi)}mKaE5L&T6epH
zdD4-neNXtN>rD76Gp+PkO_W^D&4;N0i(*gl{`(d6h9N@WzJ-28y+rWJ%|hO+P6czm
zWi8ziXt!tmzQ&!djZ7)W{?%2xdwx&<5Smqg@Mc!n!kf+S>Yj*;ZgxMu)?Hf9Ir`9n
z-#heA$<C{HU8-|$=A8o)9a~e+d3;j~`Ss^tPgL#ux&){H#pg>d6;%H;+PcLg`qggp
z*=rQ`t~H*^QRDPNeRt#YpgZygeCuScq%eKS`n!eW-QE7rOPOtygNtK*?z3d<dcz;S
zNy4<QudhX*Vm;S<{%!B&dbf%0Ix|W1+O?C@bPAjwiES?bs5iGr$9kv0^~z$-W2@IM
z{hG4qS7MK-sGWh(@n1D(Iy3j2NUHdGT~FM+@L%Kcovg`C>ne@E#&n!2d#Y*Me0R-7
zIn4u(aci%8zrS+s)wk<xZ+C4Ke=Dr{WKIj8YoMd(;oR4HHTnLF7)<tTT6y7Ta1Gyb
zhrVa$7d4(}<2|Oo(2mVnXor=*Q}FSI-YI`;ISm=-=yV0xOWrk!%=xqDOjYN)5Nq9U
zH<R*B7uT$aN!0%o=^B~R@%cr^0a>=Y8$VU@YDG`sS$5rUoB8>J7wvkR>{yN$+V<{$
zYSO;T<WT>#+usk?lw9cB^&?}_>)D*W&CPM#G3Uf@C;7PNYuS6v+B5H(@w#1;_gd;6
zJHj=+I8fy7-!;4oJ?^Zoyu0tpPsOwPk6tOqg$CFZde~lWoqK|>?PXy=`T3_k*ZK7$
zwA^>HRBL^_+HX6leU7itqw|-1!y~NDYtC9z;(9*r{<q!M0Y_3Mx17Ci%lb=6dgIrt
zdGTV|*Xk{-*PFikC>Qp2^8|VRj&g%?TbmD$m`;8**1GzLZJE5~)aM@ppPY$NT6n5q
zX~Es&abm}(7Hwn+ef-e<?3(tU*^E4?Vtd0p{SGfXY9pTGJ-OFw$-yAa-nsKjXN8Bn
z;s12__J?^7p7*@w_}R-IY#4O7SSj8&T~q%@r1Tcv?YAD<-v2S}bL78(qn8U0sGLo>
z82fIs^4TfcYaV#sEZn+aUwiEB$F=oZ?@W&$Qr;Q+%2)T$tX`FVzo(sAk8U$<>DgkK
z*)sjOQ|*G2!V<ezTwI;{D&qMbu{nDED}NZ5_D#s=TAp29VkLBG%k;-`UaNPRCTJ@k
zR1G%s-*u3s;_9i$rr)-wt*6+8?&jY<L*>rBeG6KA=15r8KC-L58Six9bi`V-t)Fv(
zQe1DoxLhFae<X;r?PZPF<myEcH*zH7-l@dyKK$54Fr#zfvB{S_TF-Hbi2gprH1*c?
zd8djlPj=EzdzHU6$9j1i_lh9JJ97PNHNOk$?u_*~CVOZ>$G4c{la(HbJj=dg(fN1B
zq~Lc)ww^k5Wv};v9Vef}iEW==c)0tk(4QRT+?l&#UmtB)`K>(SwZ+D!yu@4H-7b#1
zrc8OP^LT}1@lrF@m^a<u7qZPN(P-89l+Kv+UW_f*c^20y8{YPVnffU;s>_ePbrExR
zo*mPEIQ+`&ReG11S9|pRns?h^tD8jI@^5$FIiJamm}>v`pTX+o-!^=mu_g4cOnr^@
z+}sco=Iw4heC-LjR(<+s_FnoedR=3i;fLdCeD4bKk4(Iu^(~LN@5yq*9H*NO$pr@{
zeixhf$wTyc@?W*{D<?B2?!UMGw%3Kqy=5IM&t)W}HQze*baR5U^QY%rIu{uC9`fF=
z{PyP4`4OGFD!xRme0)<QMuC@iipNjJ*C)5kvz(Z6OWHj4UP;pgKdBD|X2~vl;@mC<
znzYJ^&b#<ISlakvbZK(8cUp_)(|bObYd<P_-IOch&MjWI{dV20dQ1C~5~ae6@|MC0
zQb#hj=wxvD7)*atXIQ<eci{th?OoxgYOAGppINX}D~etF??i?h$r;`L9;w|c?zAU{
z2xQOK(XQ;tQnB)xWoXo&`?33#=%18hrRQgauAXzjHO@IpSNUB1>i2J!hn&9fd*%G|
zc1x$u<n^+<vj5Mgx$oKQ&l)<e7Q0`&X{NBcvd5mUi+8Vm+?700M6$omVhf|AU(k}6
z&)&HQI&yu}8mC%Ci{IVi!n*IY<|=_BDL;GzXZs%2n_VR;zx(Q=LoWLF%f;X3?RtN_
zou#zla$5d_{|ut1IqzVbd^JLvd?Yma>KWwW?&AcSd^N>B_iAVWnR_)fHZUP@Hjx3B
zK4^wFHLpZL*U-`g$K<PpCGzB}A@bxa_+t8;(qhmh@yIi*koi>98CGK?Pr_$djm_b6
zszwT?mL{gyW?0QEEDVXBVGU;u5q`6Kd9cHhz{DdjZoF{YwR?)dF$sf4-eV2Dd5%sF
zP7|h0;F~DK*(~sKn#l{X0Eb6@`*+>{f3NtRt#x|!{pI!NKUd!?W_w~_CLC7iWOc}7
zBF7ek2o@Fg0AquxObrf?loTdNunJ`Gx$i#wZ$c1*ZlXrMg^=R+`(Ls&Bv^VUuXMg(
zVa%+;wBYq)K89}Q13^UznU(?^3T#X#|D|@goMgPBxUWFHp^?KuytAP)nBnS#c@ZLa
zj*9l4{&ZdN0Q*z+hSb!ht#!MZLu?W>EJT_ZBpfcRGvJSL(>NlV(AIJ&G2_jCrw^Jt
z7G0cIv}jRXU7eBuf4-o~Dc8<;jtA`SyP13v?-@+dKg0QfTkn9tBgWsnJ}pcf2IZ~Q
z{}s)gtrq`P(2!tIFKBm8<j9}X%zucpjp;!V^O=$_jBfJ`j>sSTRWHH8_%DZ-L5Jy|
z^_}_m_A?z6+&@<_K;zP3;idzJ1oarwcUbczELo}FbZkK@gFwq=edmtd=0eZ;KeisY
ztJr7Je81J1VV0H}0|(#z`7ib?)YzeZEBc7^yMNpZU#vISp_Z*M=gI^*IRlnkvmb@m
zzA6ym>3VGy_T_uTT>%e!mjm+Y=@y4h{uF0Xm-i3kX1Q~kec9rF%US(gKK7qsZDaFj
za!|;WjAS^&&2ZQu*0rA1{CL%&I_-n|kL>u>%w#ih9z(heON783$+q7MIX<-gIK+@K
zg<nVG!G7(3wTl^=8T|@0q#ke-H!5rV>+BOgJm>$8$7=me$qZ%+G9M2xTv&hpzPh!{
z_Bj(c%HP;O+uyF8wKRFvx@G!5q(9u(3Jq0Z6Hw4$W8&!cY+^{*u*Skcs+{9j`IP-1
z|F{0#eno=m|7Nob_JXAX=R6wT$O{zg{mtF>e*T;Xzl&pkF#bQ6&~fCW1lxn(?ccU3
zcnXMoXZ=?{`TzFQpt;q+fBd)pr`yi5d-rbt)|&lS{yTGjY}lRr|H|WtH_gX#TNs75
zi+B7t+1m7X;}JFk^&S1k>$6HP2;50qp%8QDf1c8vXyLv_OUc6*1FqY1e7Vk3@bK<K
zjv0oRr2oC1$;i>{xZwYVhh@C4+N!<w6i)uNw&`Km%ln$90s%`dub(SCc?y$5fCk4j
zCi99rzCr>F$8?tq^L(Ctogq+=MX0x!@xcRD#yJx;y5c`inZVldNN#n!Q&&A}+ph%y
zJ5qn!R>WM}|8BpzG~3|=3q*`3d#tE=viH}CZI7d-zOFlTy16U)K<et_e-1GkuL!qW
zeq~AKAJdx;yH~u|%B)?#{#@<F2iCj3PW)?=uz6|Ym%7)=lc(D=pMNvi*L_-ikPp9c
z8NX=mDx3Q9$$#25{9HTrK=FEq(+1{;#QyNbChVKu&$G2q@$Sa^(Yj|omp|Pszes($
zZ&=onFB<1hxwi`IJjy-nb-a<a&r<lz9F>fRvs0L^e={(7?0*0Fx~IIcn_jDN2eIU;
zc8Ie_=y$5l^Z9W;d{%d5`KE%+5ytmbY<7K1Y*BY8)s3B=sr4Z8qtYwqV=RwXH~P!1
zO!#hU_dnJ7a`Kg5+jrX>P_(oYOAB<Wn!Dr2(Xh87{Xu;qLY;H=THbZ-IcNS-%spRm
zvB;056L*)`20o48Jl>`Jw^#Pq?%Cbi%Dl~oq@}#BJX)Gjse7rSHMR14?N0M2$B(+D
zWrlOx&*YTQ+&?k*w0zW@pIfFBMpWy*x0qM^r0v7e+DG$KRgTv&tl{3wGjHE_*)J)Z
z-L#fYFI%g=!eixsyVCPUM`umAe(Bho=4l~P>zCZhsQTo^AC+Bd{qp--UAMeLQQtmq
zn}7D#%dCx2H{E~jY=6Eo@}g(k8l&ZU{@afDcr-n^c3&hmmeVFwc<-6>=d*tt_*J||
z|K{IQCl+t#%&PvJ#5Z?g=P$cQ%%4rX^(C*ecb;U)P`grfO66u;Z;D=ZfBy^jhz&ao
zt24r5E`FJ1T3(lbc5m5^a8s!nmfJ7sd}Dn4Z{w{O`_79jvpwpX?Q0@1-zBg6xPaiM
z<7;m(Pu#Sr+crA3W5Ny_iEypYM?Tf13fIdNR`T2F8&#VfyA@nCdquq2kAu?>GP(;a
zJ@3`Gcu(3+p7|S}$u=F(tSU85;0pVwbc^+1qEOo0y80i5dAU0U|3vzH`95`3y5}vY
zi>n1P+ZTUn5v|T{t+kpyr}lN<=d+EC*}PBt6IHq^D-{)mD<8&X8ZJ7h^1UM0<iO`A
z*MI+sX{q|U$|;zC<wUv3UTj9ZpSG?rI>5a3_LmlO>6??@MPJ%wcwx5>ceh)ZT;7a(
zQmOMfOYWB+3Fa2gmHx!P{;GDuW_7LgY7N{U{hHc+z8NolZzq(0HN#R)`~F?7&fS`)
zeQ#v`?ae#Hnf<&k&D$mR?DEhv$>&a0trzikUoXz}$AD`mS6%Av!|ls{9@1EJ@Y(+h
zUHWa>cMg1TE?Ru$ctWEl@6VHcrxUm4O*<rYBK8CSnv|C{?CZ0+ugzR^ZuYlV?t(Kn
zEQ~t&%1>iXSa<ZM`>b15r@yOnd{Jpun(cP7@9CwVpLrUuzQ}sAX3I%u-P32UEcJ4^
zc=f?Q8&~T`rLR@mD{dW{>wb|*o8{o8DcN&&n*2=Rw?F0_zO4SoT^3Vufhl$t+c|bj
zZWgG_@4xuc;M{txy}?OI$6tL=+S#+>_JIk>GoA=O4!pkncHQfuYVGsBPZwVdjl6v3
zW<Sf@m`T~@FV-A?`FoMxigOe1)jjRM=A(1y$L857k5*MH^4qPx)B5FyR^l$<d*8C#
zx8GF0cb?^OYw9u9jc+!^pKCobbK&ND*-vdItlML>>iRJqS><c*<^(UDX3fi<X;{%v
zJLRzQ3^kRc%1dv}!tL$W6-w>6!ZY{tmm3R|bGPjXbAEhlj(ynt>qig04bO>Q{MtoJ
z`9|in^$R0zRa$=&x_BjjCXdYQP`R};&s?s`R~8if?^fGUUsnA^(X;4+TZ_{n?ti)q
zo~KT-y1@O^tm%(f<?Q};m7RN+3wnKNQ1pEGu3~jy%bsO?iGhxjS4KTsb#J9X<L8Te
zw=JIAWBK3l(sW-|<-<9}4R6k_HNLL@@m`ZRQ-6d`%jWDG;+Z-3=Y78WA}C~g;iLVf
z+Za@w+U1shF1DTR*=aiCWI&+JM3X0V$9T+67OY-WxHh7)TK9vS?+NX?*Ksf2$s7)e
zo|6<1bZbJ$^VlZ-I@di0^9$3H-b!it^YxraRM%W?e*EN;o5tr~R>eEpY`Vv@#wY4S
zc|zE`zbg{ms($D87naVP_e|nSRqp-b>lXIf^1s*V3kR*wm5>e=k=7K_t$vetXJv+1
zFx$4kkgfY}Kd4t&l|Jj1kPt`kotd%<dg?kIrAM~+@5y1Axz=@`|MZ+%0ad<v?>@XZ
zyhdYb{LG3w2~&!_P6ymRSvLFdGw&Z~O6&p`9rm2BKk@VS0}K3@E%$sPG^emf<=~$!
zDt0`#_l1j@?$FgTx}EztF5+bVvFDrmUNx>-=dt(6JRQB*PVZGlWx;jk4Yi$ndnR^d
zEe%%qXSaXD_4$vMu2^=I_eQc;{=TOsmqXp}h}2wI&SW-`GhC1_rl*v}`bYTHyN8)g
zRF<BfHYf6SoUX`A$G6jBPxAk}_4w|@lRpm?HlI8vGJEFClg+O}*<(wuo;RBP;Qop)
z(~Tkm|IBeLKX~$XQp%QTbr*YI+gCQsNRaw|b>ra$QLQVNPS?DDFWRzZy}e|;^F8);
z;ZN>*pAwrjr(C!Cv+kj_zaO4iHfyt6*^DPEm)&iCXpv)e$n?W8c6B4Qph<~=`}z{*
zbzk*+d@CvRrg+x$85b%dyC%2terk7k=5ODU^4a5KW_!<xFWZi7`#Mwpyx`A!3$BZG
zEf1IS?Xl|Fuc&f$g4Y4f75DDeG!$J8-=G{SI3?<0?b_c?Wu=wdlr!5EUEUnGW#tPj
z-`KTWa{d0i5|2$~%deL1iivu({L2JmUG52&^;1s2c=C$ZF_(Yy_MRK(i@X*epVZWJ
z=CXO6!I}R{CZFB8(C*asd;F>rlke(Qyy2al)OqUTZL_`l%C_eN?IXH<zWHS)mbomC
z;|$X^(J@N1e|PKhzPFdG9ZoI%C1Y{oz%-p=q1Y*G|L07<HECCA#j_wA@1;{`&C;2w
zRa+=JXJNuA%b5pW_pA^SJ8jnf(fsQgo6wD~_;`fFe-yfFn6Lfla`)q%^;Tvn8X-Dd
zC7C;o%~{uMUUzO$$exo?l?yLRUk!dxwyJE~UhQD%I`5Mz9cK-_HXmrqXnwcg%>Rb#
z#`BNA5uMlI%4~l7^UIQL%PTq`3b0=mls(!Rvpn~HNcFeO=xvd!=WLQ+<-OLu^jpb#
z6>0DLiaAE##Vhwk=FBm_*B1V^*3YaalKHFT8;7?)<1U}vu=z^mwg}nW>}{J5ubdp=
zyXld)?4;+uev=-R9ygwya^l9jAfpeH3<OfY7>e18$aBSpvl_~%yohA;dz$a&{U?H9
zrQ^HGI=!1;-c1gC8CN}X@<y+}sR@sdrXG}K;(WMvqwn9gr&qPlvuE9VCwM@!{CT;F
z?rWxoyAp?9OC9+ZzG@SzOxxGqdl5OZ0biE9Dh<ip`+oOJS&5)`3x9tx4VaX=Pc1cL
z`w`Eh)BPHs-U}+NuCU#>K{W8)wmV9_6O@`?&FwwK-QV<S>G5a-zbPuSc6BY=Ww0gx
z_m|jA+l#%rstZ;3OZN2HKH&Iv$9h}mx6AF4KD#uf)^AvNgGKDN+Z(NVPJwNSXRj6Q
zn`tH0dH#8TLcu2eUrT+L+a1XFXZm-8<IvB~pK=ea(~Z3s#BJd4BVxmYD+`^{{$1An
zY3_H8Rq^+ly*Vt`#n&Z&;#*TObNaWKkPnlm@8GPp-rLs5QqnIXnI9U!)U)x+x4NZ=
zUoU;Tkda?2+Gh8XP2%p`^j3W3<l?<_-gXktj&qtmnv1Tzx8cmpIK58dq1?IqtGMp=
z+NtciCmW%3b&}+XeRF1B`5o|Daj&1-<ipYF=IdWiSP=apEh&4R%)KYqyW&qC=~g~2
z+gaijn-}rKYm(~$r`1)v&z}y7yZWI1EdMUGlCWRB^-}}+&N*G<y<5C>TJigc^^&~%
z7cH2nYU`(>rBNJkIWc;}%~Z`#Hop}wU3*(5sL8Wm_rI^{#0OiK-(_ACRCjb$Z^2eQ
z|HbN4O0Q>_+%Hd+NV@Wt?UTrj8FAc`?r&uCO=dIB|CT3kcl$=Zc|88Qf2FR@d%3cv
z=D`gW)!8D;emQ@hDX=+gkx5GX%F~mcoO=>;>b&n4-c{FI4Da(g)hzT%>IsWEe?;4H
z^=u91cUl}jRj2YTZht@dVg7PA>9=#vw`jajdh+8_W7h1o+`CiRJ}isg&AiRs(yUaa
zU8LBZbK{FG7ggDgZe`(au5IaEW$U~?VwY_q(^uV=^U0}y0~OgywYh)si+_APBh5z4
zb^Zbqz5Zh+D`zK5h_0GFWA_oYYxb;-U!L%rC$lomXp{3XS;(;L))O<P@(q$}7o=AB
zi*h{jsHwXfv1<*#^-a0gFHb)U%lh~6@RXe^6+X;0xpz)dvih%#d(K_=wC9i6e5D$?
zuN@MK>nlv3Gh>tF1icLx1tWexePpw^;PeFcySmGdtV#UxuW#MEb$TCD1G`EeE&lY?
zJ2W?uZ%;zbZH?~dN7~sJPyG@9NjZ6%TK1f6D>MGOns@n$AMKv@&QL|1v*gp=D@V=i
zKK0GszHEip)73u<lP`b$SHzS4c(?QM<3b08%C@gmj|vaERez^OCt5dq-G?lj_kV@=
z@*Y|qxVLgskC_!?f3N>kr3ht}mA<tLY-+5Z_S`@2Q2cbC<(99%e^!2~W_<nVxx}Ic
z)4w@PEK@peGb8jLUvA|>i8DN#m-fl)9saiEkyVj)@!Q}7Z%&{4x@_wk1*1uP_AL{p
zevGrL-TGg+>C2CtpPr7FB}%3|J@EFgei!qUZHw(x*RIN3@_rk?&W|fKyE*?(*}DA1
z`-S?=AFq7wnqm0j?d6Rf*DkY59n&=1D<QR~%kW~$uM<ogmlgbbC3tXY+cKY7Hm@dr
zFRh)if?vqf*Z$Os$xBMM#AZ#Dn!M*b_j19necIRW-`W*kd%?f3RVZhkWmnMj*Q`5p
zBhq4ZR!si=B-p!<^V~Y)(@LJ5+U0Tl2j&~cJuW`zwQKg#xA*h^NnW_;?3MX9Yr<WX
zX<GX@r+hy2@`UlZQ?3#ACpTK0|9sqEY|Yy>_MG#(Ggpe-6w2A2zF~8a{==iKV!@q@
z*0kQJd3kC%$Fb+SSzDj0=CFGT-<mRi_k?+!8uupmyUa?PUE35Qw*J?z=R5kPtJ$Jo
zMrcIGJWW5*UiyK%$@4JV<?cgIZ%lY~e6QI0RWnSr{7hzV^r*aWy!*oJ>QmgC7jKq3
zcGzppoWC))nRl0O4f)dfY|<_nrZvYEPy48+`E2*%4O_A^r9y3ci?^5mr;Ujnm$z^7
z7vuAn>-93bn&o<JroK<lch{)43373Ze*{k4sGHFmo}P9%Ys*8$a}#pjJQUfj=Mt?r
zBTLNc%$?G>UHSV$1>TnR*zU?&b-?$e!G}`2DSsy4P;Kc+|59z79Cu?&(#BgA|GwY7
z<=@sEvZ?1%Z_LxL^PBINOCOPyO+7#Jda0KAieJVxvyEgWGfwK8EL{J6y~gZKyWO74
zhUe|uS#FV5bK1ga@+=!K?;Yuk30m0~1b4lO-&!NE>x{nN<SAQ|FMON3C1SVMbdln}
zUze)tXL@bqxId%(?aDtv^$!-=c22Ck=c4!W?b*Ocb~D{aC$!V=91Amc-C(_2@b_lr
zu5(fcJ}N1PO>^;A|N5x1-}!&sqfIBbm(7ooSoAvHM@;y4`MvAjqAG`87)0y}{4w#`
zNm)6mEt8&A_xN~znLqXZ#+>I`7C-OYnsYU&AZ$l^c#+P9V2iII-?(#m1b?+ePU3$0
z@uTtjV<J6LCv9hhM$9s^*LtDfED##vc1ODM+#Kse;jUI+x6SwOFkF2^!{<zYQLN)C
z2Vusu?8Q2(xBQ6TE@QU0?$n1c_0La_mF!)xGg^I;=eA!T*T|ernm_feXHWj56QN8w
zE4oyiUwM7co}OQEuI$wJB|r3c8~UHxxLKx+UzPiDOv|w+M~WV8N-8rEzLn9q+D=%C
z&-&`^isV(<GX(a_r__8lt-Tm&!+WKCGauWb;zKVV^LY2^v|oFbR@~hdQWd)L4of9R
z-2GRNWu+=*-u|^x+GTnxZr@as&6_&^HC`8-UwgB%xbIHc>=QjQ|NShKXP@P;Tx~S*
zG3&3n9S`F;Jrkbq_}JrKe&My>MTz;dRP{1N{kpr%|MX6Lwk`PD4BuQW5hD&wvuf-7
zC%N`6UyhXj51p}V$86VI3w@uzn4+-yLYnK}C(>qVX$$L|jFeC1az1!eo0nvjdv9}j
zX_m^CMc1YDq#jS|Tz6!?Xqhhym*_98ZEx7tx~FemeRN8Cda~@2cLCDeChKMFRBBqH
zUQAJBy~M7dx?tslsbR{SYp=TTsfz{~tvst`t-Zioz2v6N|LAW{amh1<FD{+r*b@<c
zI`(k2qV<(nvo_)Fmp-wsiLcqeQ|bKES60i__nuN!i(hPZKSJW)X1|_O{%>y`o^>SU
zoZ+{;*=%d7TJzQmTyID|@jBx52?=k;Ooq0yj~nlW|Gcx~$itAF{rMTQ)=c5s&!=u_
z?*8dE=f!k&{ghk%6Etg%wMJa-UB`BdgM0IGzAGkNZ`8lYFzWCZZSiW`osiq~P*A%j
z>*4v@kgWJ>!Hqn-*UxmW&AFu6fBBuSmfe*TN;l`9NEWmXo6PV{-lQeuno$R*)k2@L
zD0fNjm#$BDPx?IBPHjHR%D?}FtF%=<Ok$V%xh~n9@lWvb=?~fh1GM)&SuQKLs(_Dm
zO5@+fw`$9`PMoQ}+GOFH+9N!{Z6-0Qww|5mRaXR0t!ZW975jEjdiC6S^EQ5q&l1|c
z%Ava8@rCZjEnDvX_^|EN-`}2R^^U&1_FzVP(Zaxk+6DVWzW-p47rDD<m7?j?YNfde
zv)13d%)O`R)1S%QWkPSNon{C5*h#!t^{>ZERwe0~p8L&(cBXN)Ib7-c_>=X1Pd+bF
zd-Gt|QRl3~k0zSEWf0tO#`51C+qsj2ix+1KYjI8P@MimVC*+Mx{6@BBhv)uF`@HTQ
z{oO4%$uJ~mU5MhuX$vJk^EqX^@6#y!JiGH*GGq7j^+zOoZl#|uFMcB}EF@~iu6+E;
zc9xUg`X9w(B*h|<Umv~s;$Hh@&6=pT?wmJ2GdG{Q+Q(b8ePZXz&#k6&r)z|TybbBu
z_)<~3_|A^vs`XRLI8Gdw;^VhrDu~Ps`ZVFf=4pQ)Nd5g;(>rZufKsE?iVO0oYwsMt
za=i2a>s|X(`?uMDY1u2j!G|X@&a?CTA3>St6H8yr|C8k1zkXgMa~VfZ**wGOZ^c$0
zdCy$PJ<qv2h;8@(j(2A`R(`W8`R>D!(&X3lxbQf;Z(A{2(XKtFRf~ds6{E`I6*tEn
z-VxJKn>8{0=>5{Cn!dr)s%Gb%v1#_W^!>YFfLPd9xz~Tsi%is=e(l5RX6aIUG5Nj4
zXMfGiUwk0#9`9;?7MD67gXi*3c$C9#R+#?f%u!viRitCtmOI;0H=nMaHLdx6+?qc|
z#~&OMQhD}Dkn{G&^Pkw2=dZ}R88NN@XZ-c+=e735t~uG0^Md`e+MU^d?V@)SU-bRr
zvhu{`H#SdJsa{{KCvUkl{2ZV2l{w#5S$eo=wa-tiW_v0S7UKKqrNF7cpUU@~U(Rpd
zK2M9=Ez;|l?*`u7xcTeWX)Oro?VprY`@dGY^7+|);U{kI4xO~}+Pns}DHrBsab3Q9
zzNn?`eM#pFYiT+0_$Iz3p>1+H(-uuq_i8p#`Sklw=&EaCE7r;_va4aW^2s`15w-o_
zhmbeiC!E{%2)^Wrc=|}!zUp1F!|rJraofMV^}S`SG`nCr^V|k=zh7Eyns*hSIQF%e
zCq!RdH0xA|*4eT?JIl%YYGV^cUE@CYPs%wW+NQ!2a<*H-M$y+><8ZiH=z<kTjTZ-4
zao)bE)U<V0Mrca;=XU+bSyQL*&lh~~bk6yAnoGZY-ltr;$}Qm*kMX1(55hm+eG@7+
z&&1EBe}(RsXOr@OzqtOpRzXreeockM?B5eRJl%QMTzXk*C#JdV=?u*kGdJ$u@>7$y
zaR0B)$aLd-yyxGq<z07NS$MgxkmctWyLk+DKK}Ch+_SmM9Ogx@e$aEuxXbw5C$=fY
zFBD&gP2p1Jf6ErIJi6_Jq_EuE{;R+Bb$u?)D-Dfte4dqAC=tI@adSeIbjZ)7tO9<g
zT``;V6Q7q@%r(e6Z@0&3b<3<<j+LG+pXGR391onH{<&sLi=o=;Rcd=OChC1Z<+-VM
z>kQA>OCFP@ofb4S#W`L1+TvX_Z|}8;g>O5UPR#5O_w~v6xo6SKbc6Z{`aU%qW-p2`
z%v-l2@!iSXzXp0=KhB8={x>UZd6ntglee|FL`v6Oa-aBBn?1U`dRE$v{D0!pF5B<N
zHhXA-G_gi#_AuNt$i>-5+u1kB4EyY%5p4F*(9)Q|?4dDnvxg{KH_>MgQ6~*SQ-r9K
zhNeh<gHIZo86$1Wv@o<V#5QSYX=G|d^rT@KXwvYuovPt3X*I>OW>QObM{}-ZWM<1*
zEUhv{NI->k$&@e$0hJ}Y9i>>71O|BtOvwLr?fu`s|DV^~ziD~<b4+<$xlQ_<?O%IY
zMBW5$GYA#A<jtVOF^x&<r9>C=!GuIdg9wfTCo_4z7q$LvWU_dF*v96e#*!=bC#KpY
z1n8SA<N4~e`sIQN4!-%}3N8{Hf|Hv%yc-WXC>lh3(s!NGE)pR5ig`QxD-I^pK#v*f
z4Z)mGpS@=+FZtx;{_{1*lWmU~om5nh{;Z$PEGl5Yze84p^Gait<w1cL9c2OG3j|N`
z@qPaEe>!(wrn<hqxu(F0>(|2tx;}`wR9c++^ntndVVs|X^9=PfhuPEk|G0{;;C4Mw
zCoIfTz|=eU!MyqdZW`?R@hjMQI@n?!mKiKjzjZ)5lm9crqGaY?lP!%^c?M79Pu;55
z_`v*MhgU#}<LB+W^RMlfIXH2D@4~V&jTUK<m;CNlOtKHw87!E$YTJV8^Tq82y0-jZ
z%2E2&W#QX}b^$xIuZXSvU|pyY5PFb-!}as;$#a*_WxsRwbnpe?cfYz7Urd)SnHW0Z
zo0kR)Q`?tMEPqb<OTJ^=>>Peq{>$#QdLC2sjXv~mW|ql(|Dn5S?{?`IazgLk@m>!2
z7tGAd`0t=hVw^*ufrO48C)=SrjRyAC>KF8%AN!ZL;l9%eeTljC1q-B4@xEwS#=zZX
zec*z9gM<GHex4UkAM$eZ{qaAzKc9hvC4+zaXQo?+WFC4Pu)lZF;LO8*>s_Da3hW;+
z8&rKzaQLwP{C#!rFF7|CPgwWw|BC;4dLFU<SA85Ozc+ul-?ght!#-g_!vu=}2M-aR
z7KfIWhDR@)KkVQ8=j?y|cl!ftHU6BxbKrl)6$h&Y4U_5v9In69m$Iur$MSvt>qE?c
z%2{GXs`?Tg-qjzw$E3rx&AHz3-}%G;Z$J5O{(1kNKl;i4@Bds;wR_jUX+{5q{@Vv>
zFui;Af4Pk9(R*<(dM`LG{Lb|A{wlQ%_R}KR)A+x;{n;LJn7iv959^Y}ukX9IRIfVp
zH{si_0)6Y{_G~ZK%PqLO`_M##+9~RPt{XFpG&CIiuj>4M)?Dsinjc-tUv1}Ti(6XX
z9^!aw;hXxmb0(~i5P0>F@hkfR>HdA4Ow5Weo^EOX`FCEnf`>roC#TsA7r!($@@eoN
zSYNlO*P%YZ>F|C*Lk_9J?{428>bpcp^!~WH(@C)2c~Qm*#=d#~_cJP*G<^E@gI$2V
zX+j29J+smz2Z2}i?-LYG@cxxhj7{YG?;_s#r?cvhwx(c-jd^(f`T9HEOpfym<i8|;
zHCJkKyO90myX@POr%y6}leb)?T=jF&zd|iW7S;nc{}}#-hFa(ImvF`HUoIE>Y5%+Z
z^Gzkr@TalQnC*7+Ztatpzb_6~PGwrW{=l)0Gc3>BJlXmk9?Wsy{GDHDPsqGeZ$6~<
z8@FEh$G6EpTkFp9PoLLZZ?xup|6!5TWZqeN&Fj`o<~eRYi(zxJiS6R`Wg=O-W^&G8
z>3M42yzXxEyY`(4<_X)fik|JP_MY%UJYe4MvXwutmQ2^>arMiW$O-Gp6pWi%E7GxF
zJY6u%=H$%$-$`A4yw|-OB<D|mbfLfG)0dnkrSdOrp~jv30(+$OV<a;EMQS`u(n|Qa
zb>oC|X<PQama@j*G>=~RG1uYfTNB?~GY?EUv~>Dpv3stDhvwfh(7EcgES&Sm(!UQq
zh4P>N+K``bwXWuVuId_jmrtu*!_O?=duz`#{rZT9ZK}I=ma^KNeOv9ZP2S>cj9Xy%
z*=to_y<%Sexm)}ybmNQw-*2~hjEt7YXs&6O^M6(wk@`IHs^5#tT6ykG9g(~pp`Io8
zT1%`O1ax}#{QRJP$1-R8!=-O`GOP^<^om^cZhAP&x08Qng+1NcFZr_Y2fw@S;k8^0
zjL}=R@W@w6a`t8YTogOUOMSzfuQl6e+wXjzBq+1%&O`ruTc&Z>+I`t<f2*%mS5mV)
z%)}^FXzrQGljoRyZJD~MH?c)>cZb5grN+6&W>?en@BKOZdy3zMlflYdNrz1CCGNZu
zb*H_|vEsF+wA$Ui71NgdUGiG9t+6ZXcG->=;WMB2EIrjA^6znA{bG*(th!6AOa1>I
zh)i2yck%DvUZGhxkC>V7@DAGB`}yFNhr4{E!*X|f{j`-6`S<U7)MRI;bl2E+^|#!)
zUj={tJyy7RN3W~=!fP_@@h9#He6QBN9qf9JOI_l@{H5BLW=mWCsO}cXeLm$!X^mc1
zOr+fPy%YY;lxClq`e(<i{9TVGY57?%oOo5?^vQ~?vNj(D3{G#|kof0M+j5hZS<cPH
zPmcZlY+TFxO^Q*r>&eBpzw7jrRb=b#?*8O0uO_}p^XzofqjQ}2@2xp^+CuY8xNbks
zL$8TjH>oemSzaqOeZ_$dV%^!-gfIQEJ=6CmFRh^H|F^Zl)_=W@HXO)nV`Ar-`Si0@
zwa1(5u3LT99q>EhGkee9j-rnJE8V?U6}8T*OzQO7{~+U$`pmg0d48)WrA@f-cUx7|
zykBB%;_>!n-`5rE%fD0PlX@vD_3~q0pn;?sN8`(!X-W5_vz7fEW~9Gno5FePJll*z
zoy=R(N@ob>N49g{7fX|mJ1g`dvUcVCZ-Fa*GB~W{`4{pzS@(0|t-Hpx>mM#}xLTj{
zN$<O8-2Hyd$o-W|`!-#Zy;wM>W6I>_+xvbBhs96o)LW6Zn=8FGXvaqXW3E3~<Jt~e
z?W>)UQPru>ZqyTb+jqKmz`DZro!gg}PT1d}pMGe);ED6v2fqj3yv<%Tr|wk8a!;KH
zqHeVjD^GBk&wj$p{^=#xza8s%-%gY5?Rz%qBzN`w)e9?6Ug0d*Ak!6;^tr^jE&M5G
zt1|~vYyF88F=wsA-z0R-@tgIUkAu-b%YUm=MeSj!r*%p5F6_B=FWtX-x_GB@<gtS9
zEFbvXABy=e+h@<Yu%hIH`s%0_^Tn^~zU8dH(0}94l<T2&iX0pHVqX3Zi&}SMjWXl+
z`M>JdR~%gyq~W;At!&=@n|tql-M8A+@Yc?mDX*P#mIt=^E@~CkJnZ{SHGW|#AN!Wu
zQ@rC(TBgSF`ZFG5pJ4KM!S=m6t7l6}dY`pWP&_;LW@6C&k~xJtl-@p>tf~Cneh260
zTM{y-w)u$t`!xB(&%F-}ucYp)kvaI0S!k=P_x|a%izZ#2S$eQwd(sQed#U#-Ic_^>
z7tFh~Z+63-TSn<J)1)F2=48q4ePD3tNP=zAj1ZNw<!3`09v(>6efHMl)y_9nmYS<i
z$kuGlv+Q^3R@k^kXwviATQ&yw`;>Mq@t-T%RU<dKtFtVc+p_Xd|Lt0a$d~i;_gCw(
z@_ku$ooz#jSdZq02f7yQ?7O&UM`$KZDcT$HWZ$wS#@a_-6gxF7_ua*_eZJJ%6NweU
zF$rhN1!I%nE}LDxIqd3EH~Us~#rtc0c~6`%y?*}r*R&6BRM@Xog`LV#);V<eP;m6#
zld)^B%qjUDkzV*zzud0ac&U1o(C>#Pe+3r%%}cK8PX6tzuGQ1s^j*77R=g}SaQlt6
zJHL+cZ3<OfuV`Ss{FSA4{pDhhl7wleBEPJAuw|jVQ+Uh1i>Z~9XLB8%ZnXMfsKlCL
z$FR1$vvzOTnY6G;&^!Jy<Bprhs<!w1|8wPSRsN0a^Ys%O5+%2~YgIEI;L-WVxz%rd
zO@7I>YjJE93;yhhG04529n);n?3cQzQoeYC!7(G9dkcRbzxH>%Xz<CW-sc{DUwG}p
zzip3$%^DrP?d`O^bvDVZafAGo2IG~wYSDYYw6fo?IPv}J{h9-_Lky123cs1@^>UZy
zzq<2=;kTAv+biKbd*5cajWxwp4cC8uby40ad~%DMjJV+OwPHUjHCq-WsGP8!yZOvn
z(G?P0Nh;e4er$TUHuLzTdp?V%?k=41a*ELV$LXC1yaZKm-F}q%`G&oJ^?j-G>rRgx
zu2`qkKW-G!o<A#S#TC!3TJp2?BolI)9zOJ&Qpwh27kkkAUWQ4=_Z$=PjR(|&L(BGe
z2gzPn@vncg`9t6Z)v$Tek1S`bUAf`uyuCld?)q@o-f#ZB%#wX&lWW}BsjHZE56T6X
z{^Lzktkl1M(eli7vwq*gpzp48*f-3x3%mR?N5DvP@&fyc1vam`Hr6fj&3kh#``Y7W
zJImZ$<a2Ykr+jeAs+T-$`SWzt$xT<T@IUaV^o!%U`E5b#iYZH8?k!wUtTQd~+9u`Q
zPZ_6mR_A_etgQ9C6cwD2_FJJSNy(q{_t9^S_R)Sk|NOQZTgSi8%AbGq^UDKI9!_ch
zw=z0)<+S9pORAo`@^J6d+K`_2<GX&pesjZA$8f1>&%UkSzUkoBtt+Pa{{B5n=98!+
zyMM$i<;=$%mHVd|Y)Sd~TkcZK<cY$WPbc-=v(uWP#2B9Qo@0LU?%xlVaIXrBFrKZo
z<mqa*`L=?lfnT;CQsVA2o;Y`o0M`ZY()&j=_3B>4iGDQdo2bkF<Hz!Lw|bBN>S29J
zk>`E)EZuu~`i|`fLeoB}iucy4F0%L9e)1lBmWleAq?18>Kkwh-TJP4Yxi|VwZ$hZR
zq|D$w6K>c4TsZfv!K^)87v5#uJue?r{_}2ZfGS6a3vcf->F&F&r)M6!#n<VgGmoXZ
zw*BdrzekoGo;7EG<$7B#&YL?YugT4~lc`Y>$t;@Vs<%TqXpVs5j{7M`Ezd+-9E))_
zUST6%lAss9`MbxTz$VTo0-t#W^*3(X@=q$|!p%=g&x{ir(zu^iX5CYIcRhX6nfoiI
zNESW)vNoS@&#{1?hmS{XT-kYRV@z4<#^vv48v0G=urt(ke`@P^AyD$+si3Xgdpc&P
z@_TtH?D}1h^0iTsr8;@v1J6}wITwV*$%UFX*_0<){ZX*ESzBKfI5q!5_>3Y$^V+$`
zFHD&-cjvwriySsxFm`w{JCi5cboX1WmHOMt68dD_mSnAXC(Y9%nqISR&Ac5p%{NY}
ztZy@3#;tfv@^NL#iG2^^Dp@`RzE()i3Yb}H&iz#JZc)--|LKA6%vYInFckSVnLqD3
z$>aQ^$@hYw@{{fj6Cb^Kef#iB_rvqNh2%MYxLp%d?z|lIQ1WYW{FI~8zcQz+pQWeO
zchg+UU;I{p)^w|14>&hOYi`PU(b?r1aXsd!>V2Kf6}K8p6DJ=m|I@&6c%8(fK&u@_
zULPa3`2@ttO=6BdG3{4fdRRB->ywVUQy(t;p1AC4Uh`AyLd9<<%-06CuV<`#6e9h;
zHzZ@0%j&pgub!Uilf5H7VUqLSLiJUO#v2v>S~~pAZ8p7bE4I30T3Eeg@&WH(Q*Ln<
zuidt|yyEDD`^$s=aIWmqb*uQEws@z;RGz~tbJDN5THX76_}$B#RiCH7x#H{RCep@b
zx_gsTtoIJVA63Cc>z3ra^S-m>@u~Q)N{jvW#`<k^UDF&XUR8X<yVHOxw<LOTeM9N#
zkB3gqS~Jxw?!2bg`cqS^-(|d<=-^<#;OzGAdG5Yy#kVu~_RU;4U8LugX^myXBmRTM
z$FzSv>+-q2?q}ZT!w-|DsBO`i^X_cPiGrEs!E2sHr^i1HwCZ@0IDgvI&K=)))ym%<
z4-@~I%h~^~eamjI1s1d7VzU1ne;R-6dS0-QseM<AMVZwthWqtf{+6viXWhHtUD4Nl
zwx@O++!fQRyvahy!f#>jx-G(Kzo$MizIo!Zi`BfOviI{hOuyYd|KqmGrQ9b3cHBMK
zv%_5HprQW~`C0p``4uZ`i{@o%#!cVXcBigp?yj3&O3rFx#oLm_4;{+;%*MVnIe7iY
z%D*#b1?lXK{hr=iahNZUz35E2i$KuMt5@_l)l{TKRrGj03+cB!9b~hz;*MQkUHm6&
zo85ue7l)e7DXdyj+bJq6zSUu0RFoEbz|;R#YWqLf8E)QwIW%GF<^GmU*Pd+t9@cLb
zHoLGYE^3Q~Nq&UL21CF5-;IxjrHPi>&2tEjPZFOm%lwz~#+M7`#p|oj``mnZz+<kp
zb`5{nlw^fxe|XN%&ar=1rdt>^@%mw2<J`Kksq5`)mDrZAf35n&$@A&)CHp7bS9s#Z
zZzZ3)uIx&@|CU*AmtWr2=^uHQ+5KzX<&Bv$ji1hcZSS1ODv~NBp!*`qZQ7qdC7s@j
zQc5Boq*>cqT)b7De9>G=qV}S%`Vs!fy388)%O4z0{^mPq>R~x=FV{7rNirrCl4llG
z{(N!zRSUx_*4VIydmS?iXH9ylR<lX`%i`y+RRg;3t=gt>ib4F=@*_;=`FjrU?cVum
z)fA@p6MYM>+>33f>FvDq=t22(2}R?t=TkI0vt+Di6~`{0eDY=0)=g10iAQ{DR&gJ1
zYMB!?{~K3cn$I&&&u9B}X3n^;<n?u1vXO%JjyXm?3$(oM7}c?!Tv^K+GsX79jXsOh
zUbnk@cdxcOw#Y2@Pw(qpt&yvC?f$aV_N!iR<`oSikH?2sJ}o%uZC`#tOqRv|)vAla
zaZ64ozMdxb>*CwJUu<s&8&uZ^t=#qM+(TF1@b~II#<!MFtxf)OwE3t0?hLj=);--j
zRA&9U8x;SO!8W+tQ6h0ttkDjx>lTxKOpdwiwe6XL&B;ac4Nq9h=-quPa7y+3#~*8-
zoDj927b#X`zRK#wmE7*VX4edti=Ank{IEosU+ax)mWUx^<My9Te%yWiL0d}?`cEiS
z$?9=C;9~LNqVFxQ%(*`0zqh=f`5<CWdU^Z9E(fXNE%r-t*JNd0bgY`-eq{NLeJ!Si
zE4Rjqn&;`&e*bXrUSjuInFpIcO!2>6dFO7&fi1Cay9Bm9xBhVQeQ}w$_2H6NdVSiG
z_r+2inzc_I(YWov(`P*|Y|k}L@!O^g)cv@{x=q++wscrO^V^kJQT{RO)s6d_D>^k#
zUENsry-6c4A#D4~cOr@Lb3Yu7nEtMB+2k{tCdu1Yi*J1|ZLea>G^upuwHq?6=F7r%
zFh0Ml;TiEr^?vn7XYaRSU4K8O&0p%fS8qo7w^-(wjU1EW&+&HW3Gr2~6;Wt=ULMQ7
zeb4);H!1^<mT@)gVi$F_<(%2_^RnB$RX5M(`57&;E2+A8!9A{9t0&pOmUqG9)sLbZ
zR|N=vRdxQg!G6B%2~ACzTi1ewf6Od$OmI$G-MUbC65FllpW9;={#s>rigVh<ii4I{
zRzJHxc~xbc{nP?({VD<1N57ZW&6vJ>&f1p;=N7$ZT3HwOMqF;@z28iSSvDF;s&37Z
z^Xl^OKdyOfvwQo^!+pZf7oT`_$!KarW#;Wy6N@w+Zmd5Lb45#8-qrM%{W;$QFS<{%
zPFUqp^ypjN5})Q9*;j5)y1vC-eEl*Htr@av?Q16spDnv}aM`P+bCg1Bthis@h}&0P
za$w_*Z|cE6?i>_fxA1uEXZZz+UHa?S{&_R0WnyEEYNO<~#m84ZI5+7GSH_cIUau3o
ziZ9M$<&|XJ7R-EbZ((|qQ|Xz5>n<(Vl)Ckh?Q;0XpMEyC`Agm1yu>oDo!XMZd2nl-
z>$U77d(5hi{s>wm&yieGR%~>=X>!v!^E0Kh-+is~zp?Y|KA)Tq8)t^B)Y5fdEP6p;
zQ)kj2KMtN#2Rmb*UT6wXs&4+HvRQiZ_hl;aYaht6I(-$+&dtA=b+Jk2gy7>HC4U|)
zFAC?Il&8wk>B6{?VN<noZAo85{7EC0?N{D#Z}XhjvdKszBQLPHOTa_Fr*+B>KcC<z
zZr*oGXI!zGZhG_ei_&eI)+Hawlh9R2SlT0-GxzN2mc>S_9A}J9K8e_!++KHk!STSN
z(=O60OBsyQm}7o!<Ip+1=5qO$Urv6l3nVAcEs(pMZ^ym%WLm>N?Kg`p_icN!+hgsU
z)RR?jH<X>)!4<cvXtrBp1xKL9{pdH}7Jpg8yo>AkyNwH3zb;M|*6-f&{<m$idsgl&
zLB4fgc1!D8bDi&(@smkexagEuip<g^-qq{+I(4tFEZw8TzMv-V6wfkKzPaanp1Rr#
zuKp%dVR}+kM&yBo%#CMTR$GYtdbvtz){NPO_roo2Jvv>?eR+;)>%MDi+La>BoTp8#
z&U8F!H!)lAv(tpIdCOZYulE<foqe=`<!GpM>=ZM{`GyLcXD#{`IlE*-&en6=4eceA
z?i|*>B;^ztZcuZmS91F8X~iYg?%SK6=+3g-Sp7jM(d*joO>?KnEL$#A*5&>+hOg13
zb?1o~=4n~Qcjfq*4$oSC;?AOk!_Qn!2+d1k`1ox4^DWnsZx$NQjFydNS|a>IOW!|s
zj=6ieo#F(&obwXtF5Pp_J2(|8uD_l$-^Mm{Wra?q%-MVEX0;haYux4HycAkiJvr}8
zicZ?OpKptN<{s#Kv+DNgoo_T8EX=F#HA$VA?G(n$WNswtC1qrP;+3YryE#m?+kPt<
zna6IM-m-9ONoZ#1=LrR_H@-ClPjsBO*ys4Zyy?zO)yIv0cK&PVjGcJ%?7}GluXenf
zt6W|*=b^un<nm6LpAD0Kr`egx+P*5?!MnxnKtYu$zmwh0<xiI;{e8V@^}NRR@_XS^
zP6^Lun;^V4K5X;)-+?Puf7UEM_H#!2j2A~w-#sq=PVCq<)sR{n!D+gdZJpEED-O6F
zxfb%ev4Zz>pWpqH5<GL}{?S}>_LRcElGBF2UGsf^waYroNHgnpZeJtzy#4p*l?(Y2
zmS5hp{XoFWE@{qHe~usdC%D;`;p7X)ZvJ1V#dn{Y$QzblrFhGG!a{ekeoKQBtENPS
z<ns5$mhu=dKVprPW)J_&Zz`r`xJu=fY)!{0)@N>Z$%W^hi@a*})sVVh-{!nJZdZca
z>FdvyN#?Lbyj$<KV{67GZue<lX4~#-6RQx?eOC71$|otw8JXr<ucGZa!p#o`E_q>8
zP;!IimdrMTR)a~?Ro>Wrkd8V~$93r7r}AiKm7h-za=uR8%=F?fn?_o-`JUr!ch~HS
zdNO}=_3u8<?lm_jeZ24Vfo=NEy)P@)%oe%vq+rr=At~MW3ub@6IZ-8k!p&pz*6ucI
zYFhVXEBnJ&Y(I6Hm%A_S(5Rg=(c!u6syd^n?EOA#&YPP#uX>|$T6%3~qq2nm()YSk
z?`VH%v3-&%>%8~sE17r=p$5O8H@?1SF1)<L!Je-!xau6ox1_|QDZh7zMb*!qCvC{6
zXQy|4lijS=@auE8u*P0&zMZ`E=JMaK>zCMN_HVBL;rKbXy5e8L1^$5ZDsLWH_Zly)
z6Q8)bh<92l=l5r^i`|%>On17eEvf2rR^vrs^Yczu6Jfo767H+hEpu!wMI*MHpS*JW
z1f#yE9=fV-Q|4Zh+5BhOHCg*enVRs48~05*BK%Cnb?)b=I<40`n^#+2FA`qO^HBV|
z!Mz3!(MM+P+*A3?FaErveMU@Xp6ngVMSqJW*H(OAk~II_C3okUS8S@H6RoWRzV@;t
z6~(kXRu*Ghf5bi4OySfkVJ!xQAH@{{qVgNxvUyHyIoqCQdi%=alIV=}S3fOu`uywd
zgb)3b(}iA67x21veM$I@qqk=q7u)))<;)$&JGo!)9{<-8cx}e^U;9h8n!kRsZ_SaQ
zY0Iu|47)!=(SF0>1$L+Eo>oi}IDE5s{dTL#Z?;`CpRS%Zzev}a*P?j$rm$uA>ozxO
zEj@W_i@dmN%Y;+YqF7Ja@g7Lv>azcAtF|`0&e0(DOJMGqg-X>)H?H0}m~geGsA;yv
z?s+Q%yQCWC8YlP~8b|Z@nVtF4dv~stZi07e>~*zjr?&!6#WPJNWV7z_4%|^McIVOI
zPnxC-yW=*lGTLvZ{=?L7LFe&sA?AMNMmMoWgF45VkN(Zu`eU7et@<ht>*RXogR9be
z&&$7Emw#{V+g8S=5DD+rqpON_gFA06Pv!q|Y@ws+s?fGVe<}a;X;TU==TG`!+i-c&
z!xZr?9$7bL1V^@+UZ1kKaILQcTixrmQrF)a=uCK9R&_-C@6D>!yU+X#3|;YyJyk!W
zMP#1%+5*`(^K0q_db5vgIFj`>Znn#hwMwjy??_Df@boy7#ncBq3u3IqFS;HQpRJk`
z^YThp*%j8F0|MRIIt!l*$BXH&eX7}b?R7Y-(bS-=hx`ujGMV(K+h;BR8un#5f6Dyj
zCH2kP-{;g#pINv$xInM!=q!Ip-Svv=kH||G?U}VTP@p{GZrZLn_IEz8mXrtFeb^YZ
zboS020%jXRzuptDce~=Hku1vb{#D}or52fzcDD^vG9tV`eKc)n4gGY2>p-2te1R&v
zlxE*UU%#ZArd+q#`2FeQ>LbFttezcSoBN#eo~gR{y{9wRmRET=%+}4*S{Pk4-{<OH
zZo8A;U*26<|L`tvhtbNo8zslz_)ZTky}kL6X8D6mnQ!7V&pGMzKB`{1!?5J%p42(h
zYwBlDn51>&fm*ThiU%&=*ah?db+In@^ULdW-*fE%bE_j)^@?Tz#)V!{JOa(9+zqYX
zUr|rYJ`)waVEXA55v=DbRzz#vzA&Nl^U|Vlua#36O_h&$q<&XACmtcQ*+uQMKz{J0
z-~?}l>JGE|#Y)q+KK$d?dz#UI(fm(pTbYu58VdK9URtnc@*|nTXLBl^Dea8@H96~Q
z*Ea9>$+tW9%vzCjs(p8*v}5C$RK@b|hsDp%>r+l&di?Xk-;L#mJ2>ZG)~@`m&-2qg
zci-~LN4G!u8hFj}P)hbZE?hq0&KKL#oL|}xKM9(>_-g+2@aN{}eRErLKY#9ZI4ZHn
z=W*KgZEg|$D!0q{JzvSriN0}vZeo(w=6lQL#+WnTFZ#2xSn^X@<kvURMl(yU3Dvw<
z;Nm2CN^$*-kQpJHfAvmP5#7&!h0EId<wMUWF_xm=ZZ7Nmos}taX6oM=O84`fBPA;D
zUAk18D5g69T1eaXCgsNuN{!!FJmp&^xWHZQWbcOUvG#%!O|IxhuL-}nXv(6;ej&F%
zU3jvi%6k5>t?Ar9UI@L`iJcc;y0=i5Q9P}VbBEZ1<9Fv4@xAyeQ=*<)_doem_WZ3y
zZ}-k^mlZER-dN~RSbt@=+`)a1c;|2}UH_*f<k$4*R}+_Ygw+0-9k|uJTx(JWlfHey
zvx&al-q%h<M!P-EP_sE_QnoGe?@NtEe@bRP{nq>O(E{s4c`a4ukRk`u*&Xh`HH*8Z
zY~lUFc<W0achHB*tv!vMGaOI7o?Wx(Y~9qbJ>9DL`z}8;XJ1re%;nP7Ez*B8(Z|ox
zj(x4zy7M24CKW2gZhv>>_47aP`mHXl6}~I{+&tXefY0ja55rbDg?W-%Q{RM`?pI9O
z{dB8KMz!G2%d)Et@)sN2{50#=7TX>(^Zoh{l-`~8y`Zqe>CeQ-B}LV*50|r-?ReAJ
z#yTTtS;db#M>zK|e7hHYcfmP>ugANDq;6Y$*Y>@0(`}>2kDmU=Tl3fIZ?Y<g5%<~@
z!7q3uZl+7c#YWd(_H{4!C##))5-G~Bw?F!;@EhG2Kacebl=q&P`l@b+@z$lyi>H3@
znSO-FEMQq!?VWOmmZ>I3I}-vV<r+6_QQo;SG5z$^6F<Yl?<dIL_jcuTpZ0S?=jQi!
zV`6tX%Q<pRQ@hG1rMZ*OWM@R%(@eV;T<)!1&n7-Kd-0@bm%=Mfx%u<r;-CFmpWMA}
z^B$|(j7#j=?+nAOq^+ucEIbf-k6(jl{WZ(o(vi2%ZOrSAeVlM_EgS!vX{^&(Zbtsp
zyME-E$*(i-Eay-0ydK^E=!yONZ*`gf^UnP8_)&UVDmBu_U(K>9wp9Co!=^J^)s7aa
z_-@@7+8LhInz8=IBh|wNn@ZL-uB>0ju=3>(CH=#DPxXtjGj@M@@~Omc%VVc|O7a_v
z?TeP=8|aIrzuwo?tygVrP&}`+CE}Oo&&JCY(^(HKi!Kn_KcnPYNThmlg_PRbw^e5!
znZ3DFzp-t}S%Fo@LU%PwxXZDJJq~6HZ7O=Q>ddC~!F$VReOC=_-d8%uAn&np?U{wA
z<{xtLtJLRld>1|^K+MP6|3d_irK?F@sMPxj^Eby{=bQ6?*N=^kXM{@DO+Aq_y~@A#
z&Yd%}B8+#wtMi!mrf|)Rwx?Sa{^?qU<X_&s$*SD=jPJZ^rBjYQI+xEo3h$JwvUiZ0
zGQ-67{WCQ$SDqW~Yt7W-@5`Rd^k~_zL-n)E&0Qb&-mLj}_P6_$U*eB{6$#g!Srsw+
zZ*t$qvSl+8pDE7YInn3L?A94~HXPEl;Z@f0&tDn*St2JZ)B9|?@0IEI!>x5ocgRn_
zUgmo@@7dz+gI{)3eM+$X@hkTAWzKaU{>c1$ZF}rvba3#)<y9LNOq{~`DY&g;$@$ul
zVp(xLmW5K%TYhxaUihY{n~`IZ&z11T@zL##PoFtn>koZ@N#)2yliYPBcO=iVDsS)z
zvCFqvVZY7)XGu@H0@pmJA7bJ6w$?iycgiewe0Ju?MW5M^|Cy98?>%z)<8`B;b{Sq~
zSvKQcdc3K(H$B!`()Wfxw&C~5)*BBkL!Oy!Ih%hx$mPp(!${`Z{lB%iluxuPoxR!@
zl0P|Y|B;()=9LoHj)Z@$Hx4(Su2i=9%uLUnrJ4DLR-0mDHeTMQu$m#c{>=T9^%tMq
zUpT==$57|7=cK-bufCoVJ7!ki(VVFmUw!gY^2rJ>b)Kk?YkZ_X8&=%yRgAiG#Jy0Z
zr71A&l)%Ytl@imgxwjb2oH$3sZu5n*cQY-mxYooyezob@rO(km>p8pD?I=F|u~*Q?
z>Hfc?-hJ1M7lr4rcpaMYI*?zWE`75|`pj~P#wiS(uP)j}T-BbvqmXY=$JBBo&R>%Y
zf7HcFPW$kmF*obl4s7eL%#hY55n6ZU;qMmd=mlDLh2zA0BXj7f4TeTWR9SZgI#?mX
zBQ-NUqeQ{P7-iiRSWrK;urx78KeZw`Coxw)Ewe0DKP|tsNIx$#FI69Wu0vu`YF<ui
zT8VxEh*bnKNxuMe*h6t@S!$ksab|^nNk&m>D(LVB{i@WWeALBUpru==i@D5^0t~j8
z%gEFazI@9_!O+~o$OPMJE<;Nrb93-=E-rny%$$<cA_aZ7oWzn;m(=9^lvFM|JFeoA
zqSVA(u8Lbd-<eD1zP`oAbv!d?vGKOG$F@lqAKP~G#<r_7dUK_HrEdF5o7ohv-TFQ2
z`}hCJbBv!!%zR(^c-K#x_dKkfleC&QtlVoDaOmE-*2dO}GsP9O)*s?cNJ~pjNlR;8
zz93+8$wtP1%B{;UFj!ee-@5(r-$L<HCaIkbDM@a63dWVy)(t(Yc^g`J4;(sq`q0tS
zXLu4))1LiYzi_XxzQdUlXD^8;oadOZaXYis;oy#2))iKfv!Zu2Ec)|Z&>`1}IpN{M
zhl~E-mQ~2%F4<&axQY3M^v(!|Tt`9Qo*af%-_)i#h@bzzaKW?f1%-tVQj?0x%hOFZ
zm8NYeH~R13%wMp*WFx~0hPjP?c@Dt`;-4~!^yD<wiy!0gXAIc9q2!<Ynymb1kMf?d
zur#okO;dBQPM^@cdamXLPKGYtfT`1%HLMuk{xh8R`*?%ghxykSA|xXJE&bj9J>F$n
zS-rLN%o#UsTS?rkjJh?G`HW6(1A{B4rJFdvcvZv1xi90}+|15>Q>a%qSN4`xPM&b^
zey22}O3PG6w*|lc1<&2wIeBSwxAEf5OV7rO8vS);&f2tN?#dN=*Xmw4cU1D<`aef>
z<~FD;SXXWI*ETHMy1Lx@ef_+%I&Xc>{?j^m<!Ynn-E)^NifZV7ljokm@o)PXnHNkC
z64KJ1JxXL`kY#k>7v^5J|HM@r*@k-U|6<LbzJD#-P|h%;(Tm|%)GS8F_z(Bax#c-D
zbWhg4aQ(Oc(f>*nVqy&|mv(X=kjTi(WdA=~R)uZW-)6_j<(s}RyfA1M>t{Xi=lb*e
z>b4j1X5PAev*MrG|LPq+MYnDV&60olPwz+k)Q*n5><4By_6i?3aOxmWLgKR|wt_~v
zn*Y<E-v9MK`uF`HRprzFpB(!$JMh-IGjaz$`*SY1_jfzb_Wy5KzSj3~^FF9o*0|C9
zO@d>=zrEjfosl`Cw!mKJ|NQCy^QZr>xBf4F`v2)$|L@nR#N_7uyB73+>A(LMrEW&u
zs`%&5e=8|m{6go1?d)^8cmK~`#rfyCz-eY*-Pqj!>%(px<tQ;~d3z@JU+$u%n_HH$
zUkEvQ>FAM1^I3nr=W+OAHm%G-wL1Ou{&kWJ%-qJG|6go8H>=b1g;pV(@2h-Kfs!fz
z%$Mw#+qw5;e0ty1X5oY<Pg0(6@=Mup6f*3IbZEaU^5Wz7IOZ7=Z{Nf^=rIIT?qe{n
zR{yd8*~ycf2|_=;zwkd|GU)v0c85W2W4)lbbc5$F^G6H@C;z!Ai0!=3aYX6AbYp}_
zow6Lm<VX8EW=kGe@<n<h(~OWh<p7(j_d8?{EcqtgxM=l%w*@bx_6ut4dX~@9_3vZ+
z5#~#hf4gruSSd%dU(otr>ijpGd6LwBHywp1DJe<3EPHj%#MGU>`ETm~&G-LnIk3+9
z<F;Unug+YbnB22D4$VK-&-klv_`>Y>+|%)!(~bTzH$7td-@4$U5#xV#p6BsZ?%@|Q
ze{Powa9iMbTjJ)wgG{eh+{_o7&^mMJZTT(rE8oV>{a3&+bH;y0$I7Tb=cKNba{IG$
zUyy#Zoz)}lCp(MjjbHp6ua=&b7q~Lpep52z)IYPkn4e^^-}-6)Wr5V&dUtlq+yDEe
zrtCeOZ`yH&@k`$3-}4POZvNx`Yrk_6^HHX=vS0XqAD;3#f9BG^?=?3x?|PW<_|>24
zISVHAt^20u5S%>wf9K(2|Dr$EJAM4){&|0rnAn8l^1bPdUq6=1@J*O(eBs)qBlnK|
z>*xEM%3Sh$@n0DQq4d-C-?&1iZ|<GA`KbJn1)J*HS!4J6=!y9qurFh{VlH0(+g`>&
zW?j9*1&+J_8Wx<nQ|}x$Vf%4;0hjkb*;%%peqCOqpr*gzvi-t;&xMQ&OPP94Jbgc%
z=SACZ{eQp1Sp;4%nl#48ZZm)QJLT$!m7f>-%{VakVM0_w<0A*-xoroludY1(RZ!Bb
zb(xuU#_5-S7O89GOKbh-{0hr>`?vdhWVCQjMD?Vi<CD*Cc5FIz$C3Td^~g65XFf81
zcuY~r!imjvq4Rukclln2>=R}m<RrUl+{5!ymOAyYe|PlkKen(dfAYf9?5End&e_Cq
zUi34M;j4?g8dJMPSdUqH?^t4>$K&!o<KlXo0I~e{Vi!KA-Me>M<-)<=^Nw$rT9KW<
z`PjdxPq$VCC6~TCs(k$NG1aC$uJh+C{vu}SH}zoT$A2-Ko|??u)^gW$Yx3+fNyR>I
zOBXEo^q}NZ@cc<hZPTUrr*jGgTWM9Tj@7!jtw%+$&Gva#Y}#q(U+UqrHyZCvTJ&`G
zBHnQ3O$Q%r{TY*7HQiYKexld@peP5wsNn3a>$!Ki3)imSGTTSx_5!hpcRwqZ%AN85
zq2BnFdw<un?~)PjmO;Dy%xZ!P_DsGa$LZzcmF#~qzetkB-hEk8i2Rb3b9&7=t-8Yg
z{JG4LP&1`UK{jZEsE^3TsO(j(%TMLyzjl3P()OLrBlC)mkXQN_*NXu*3PFV{L%-Ps
zzo?#@`C`eoML)jf9Q>78$kK1;ky<{n%{NHnNXdu7V9EIPdndOX?6@fB@zU2w&hW0=
zrR_HA>+|+z?eE-v#N3JXo~rfp?L2w!SiCRX`0z_;|J6-z>s$OA+>|DjS2z6eQCwMY
zb+1v2vwi%nqfgQ;qznCLmGWsa_e!llaq8G!v3ySEj<gGtr|}rwd~fvlRy>c!+&?FG
z8MV&e5cXs>n?s$gl$(~kz^=B%Uk)5nIdm_}<@vUT|1Dcz<>p;E;<!Uq++foazo+b~
z3vQGtw`V8)Td*a%{?)Vt!TN?1pMLFdZIlZ6*zk?>#b=>)GmdRZsF9567QgoQ>&q`8
z%<GH-#4^nT_pdEAm{M)Hrg^^GzFp=jRwe!aWn12gg`7#>cXII+mP0O6vf^EX#cXr0
zW}Z<_ie8$qS@YYjqh(TyO5%TZ=q$aoF}e8KO*Uz<&ofTOcHVwD+2_go*{ysYnNkV5
z`|KC*oqhU8>4gm(mO7~-Tea+bbPF98)%Unuf2YQyV88!%%0rJo=UDf>z23%My=E>q
zn`6YjX-36?T|s9S$SGYjPuJ!+Xm+<G?qBDtyFc~!e0aBL+uidLQY(y0v{tkHo21XT
zb6%1~OOSD%+&w<V7ivW}0$RW8yqkOc?_KH7FMc#f2o|grQvbyD?8>SK6L&Wl9CVdh
z@wv=#pPyo7&&fsHf~{+{PQL5kUYImZWBE6a31uA~UZ$&8&HcMdet)Oq>xlVxU60S~
ze-X1Q<vVXo@|D%EA9Je3^!A^fxzTOgGrvC%cJ1$0;Qp{9fZbZ|#irc;x4TTYXc<aw
z&QmIXn%f$<@<0r4=N1wBpnUhY5n40c&OWw(e<wFC>B{v*YyAI<c}e8&_dM|U&q9fp
z*N-^3mplDttkK;bx?OzUmqXiyFPd=u?rVL1>V}W2bzakat!F7KYm(-!6lU4EdBqye
zD@G*;g|FMKF0OsAvU&2UzUg|K&KqoBTX{`tTC?H$#(AwjGW6%qbgO*vLbB)Po!b>A
zkL7nL)D(yL?Pr{DQSaQIX=PovIHJAdmW!SGc-1!kii})!Y}mZ0WaT;uo8=oe)!P|8
znp6I7jzn3DFVp4~GguX7Z;9ztyPtFAuGqe^0;T@)=N|vobQ?WP5S}N$F7^1Ms5c3#
ziY*Hhlkc+oCM_=7_x_u)LYM8W1IjFWKi_DWAtUeR{QS4D&!j2eyx;B3c{_RXy5G5u
z>5KMjA6@F`yo_a%os;zvhl_R*hYZtBC7sJyk+C8&+=}(^sqNF|xlQGtyL;lP2?Ccj
z^qkCvm7D+MCNA>xJ-_4j^f=e{-=0auiZ8E7lsnwN6&!b`{E=}&(<4U3yW5}L=wQmY
zUYmW~<yiTdC5oF%`?9(oR23QQV!Zod#-YiP{KcULpPN4gdv5=<QB(2T)c2olp4{5K
zSn1i{nByH^o2+@BJ-gO7;ecUfn&fe<7O|)fW6nixGv3G_XfIxRlCy;C`qmdqos=(n
z?`mIi-EKqLI;Bf<p4xApe*M9hDJHx>D_tvHioZ?ybz7}9;c(ra$rn0&_6duIf0@8p
z+p>Mq2Hn3Yj?Lc-*KluYD9AL^>Dp~s(V~&{R^@8-dC@WkO|2tKI=(f$|I89laP~(+
zHp>~e#jmbDuaoj!QBlyxxOT#YS3Wm#ra$-Ier)qcUq@vbEAy6Hm(4G;X~&dJ67D_s
z?MrRK;kCg_w%uN2W*e}$#7@L(f@GX@(qpG$k4+NKrr*A8K3k1v|K!sTuYRzS<x}5j
z5P!TpD?D#o*rL<yQ;&UWezE7-PHXX6=EU-XW~r|98PhJeyL)DfY8<(mVplwG+jpKf
z!8~7t?KcUYaZ-6_V<JB>d6(AieMc-Tw%4h2J}gP;_^s0KRNDD5$UtQKHrG=|Mn3g-
z-@P&X<{GtCgI6ot;5TFJ<KB?}hq_)j=tkGv@nu$1ZkAdV;QK%5Ti?P9Q3k(`-}ru}
z)#aG1U2y)arLyhiN@5o8U))&T_c-S2LxBuwt$xL_3i;g0UO#?xYRqYV<tg#NyX^Q5
z`!wH+mI0gYN2VsceQbJP^Huq#E7Mn4?l{`f`eOOfWInz_`})uQX)Af`IPc%nrgLYW
zrQKIHWL*DX!s_*53F7^(Q$I5woGN^6v5n&l@rK&!?#TDNnrky&CA)QGynJ@#S9Q;2
zJBu)z`WFw&n4g>Tg>TgQ>#lWhukH?U?FGu;4jbm&f1E36k`$|M%64w|x_EBS)u$e<
zOB0d%d;H3_CGQU$bQM_9J6C3_%*U96Uzcew?KtBe#(uD%TXx5%$y}=|UyFuKZQbZ|
z&|2SV`m`-Ubu4w^+m?MhIP0zXj_={RNm6rnJU8>Y^uyH4F?Ihlw^iq)yn{;P(tJ}6
zF4U1Ij}34vmYA93ry1-}_j4bQux>(OQ(g6w*;7}^i9NMAy|d-<8<n>&G~aID*gtd2
z#=>c$W{LKpXGJC%UfLtOmGfcNN`+RpZN3ZT-sE&d?Tz<HWj~t7b?|<h(ZgvsWB0Ah
zJi73~hm?J_UsAU-Xer<NB3Zzxx;RsK75}ty<Eb38w_HA#)G(F%`^!zjA2oF<%n$BK
zuivdv(e`M^+FS3Zu6`RWs&Mf^g3F6@A4{30->p<Sq*usuEBtK3lBGeFA}3t=9=w$+
zp2%SSfj8tz!hyX<xFcL^Pfqa=__0yi`-uDMxz`0hXKvQF7Ye;(Cso0(FSlFCP2Z=E
zZ^ll)_&=ppjZ9K!4+z}T^ZM_gR`kL8CBwYZd*6R<6*3mo{oy0h_GR0RslC&7K3~zk
z>h|t)ItiJd<a5?7H{*NUEw{CN`lk(v=XhgMinKP$xEuXSNX;wap0qaB-PK0=#0#xg
zry`e}d)jlZ=lIhk#*^%Vk~8g_^7-2YO?vNNe|b^k_=2?&GjAR|=4%nbvPf=6Ncsog
z*T>eo-!J?;?^1QUxe3P}hf@nW*f+n*xYn_?x|_FfZMne5FLwn4PO{`YyLVpBX5z*>
zXEsDE{dn%?#k)@4VwcwQoV~C-K{nyXZHxVzO7mDeJ@&8k%suWY*e0RYbT@TZYWeax
zQ{_1VbPS|qtC~)?9diw-KGpqalk&@;(yiZ0l%KBnul9^}f6O*NhogP=W&2Hezj@wd
z?=1RR{5#{lllN|}b)2(JpE^BX<x^*;wEL~erLE_#$IV?5$UQ&Pc2N#b-`};K6>>A5
zU7TU|=;H0APgyITWj$HC*XHy5-xalNA6nj(S=-)IpL^<%?uD`msZVn!J@dR2wDMxr
zhDRRzUrksq{N``FNzuJ1J|?T1l`9Y5^L_DdrD*ov_R?qXGtcDT^^*<A5Wdqk{k*j6
z9tW$1tE9~{(oTddZrLPywY2z#V%3TV8SBm(L>!y!=2V?rA{sX1z{~#R^)rhFtL*d&
z&+6EiT)7o>MDDGGc-?Kz9ow{}O75(D)w_D)oIi1AOr7IXZ!>IEk1M-%>f~p|)Q3Nf
zr-x|lE4U?;CtmPw*{$mQZEE&z0m+F@3p?&PzVy@0yqspmfAEaWbpKylvsdf8ZkS;5
zc=m}ypPFVo&tYD4XXhXGijTa%6w4-GdTKXcxT5Ah%aekX7tD>v7h9cqrpd39eAD~d
zbMKCGC)EEod)J<=)+kNnT_?q#YOf%6bLoyVOC*KacW`A(E(*Q&jHBrCqPYSsET@u|
znW#=%>0iwy`@+fi8oz9I_z$1Ci@72;yX`(}^QY_N{wDFCni4Cu7T5|0JheE^(tE3E
z?v9gcJA};Vyu8lLy|<?^(C2|n{B&c9<*(kao_N-E`j3`B6|yhPKKE7I=Nzs|-}{IC
zWCnlUy&tXX*&Q0Ze=pBB_~lV{*>l}I&#ae{CpS%vckNlAud24{<MBsd!j6l2f7CFO
z@!;uaxjp^mj(GoDbG(;6GLLEPUBq6pXA@`lazW3p*89!=sQ4@tIinqM&(m+ae9#?7
zwI<)SEOmbWivH!M71zIrHt2qyr+n@iqmOFZkCX+~(^v3*IhyDiTKjH^a<|L;O_6ro
zSH1<fhj8`ho%$ZU@ZY&Li@ytGvtMz3*mCyQ#hERSTmm-t>Wi%XdZi=HC{A#4^{*ow
zk-j0Cy}a)g)<sPSVenlOT)5C}zSTzeCT{($7bZ@3-WtuF7q^A8S^U`<XCL+lS1QG3
ze5>Kg6EjKMb%p1`MstmiCwVum+ThF*VKi@#!7|lwm2w-mKEas^N*>a)yt7r`<-c8M
zZ~p1>Wwj$$9@Xr1j#Q1l_$zV$q1~x2lKHB;8l^3wtV14EHCAiiPK^jOe|Srtd#@RL
zL&~nxWwj;dLgk$&-?B`&If3N|TkP?0r8j$?Y-@D4Z;z<u<vz=ITyOCr)>RQQ1`CcD
z2t_B<J?q}sFj0S_{J*HwAnA6aV)G{-J^ubXwMpFklI%j!*V7NBtbUz$Dtw7`($>?r
z%Re&BKX}{nE2EU;%k@W}@ETkUw`%E3`}q5^`03{>`<<-LoxYav@B5o;MzY~fKBlX>
zM2*X$jCL*Aw)hA8^tgLEti2al3{S?#E!@nXp}6pH>bz9_aN*hoD|U0g-F4U1a9T9u
z;y1}t1j5+v#!d>&nBB8AYU9=O$E?D0joR;|YVHV+*|KDcN&@5M%a)-p_zkB#vEQRw
zA3N<Br_`;Ih0l0HF0i<N4*a#F^_24CZHMi?@I85T@2S%2Rr`eXou+NxzsWAGhEsk{
z@Cnt9g(5~Q?sLP>_B`9kD&~8~Z0Wxh+_H0LcOLS~_A@+r?$iAZZ%(;NY;@k!$?~4<
z{kvT%s*Cp4{^fbu>bcfouC?ul5XPB_6*E11*)9hf=1=|QXkygc8djq7`SUcBD!)J0
zKFQP7mm6qvOg8a7{;qmDgQINb>F<B~mRWPVM!lO}zG9}Y@9PMi!v{;8M1LP_+qd*{
zS;@8L+=A!an<70nmz+QM_FTyo{|Aq*YA)6(S@_9QyslJ)J>=We!pS}N4r_IKZ22sb
zbhYBk<=(rmmj8aS+Usy_BFoY+gOfsgCihBzO#2Z~V0G>OUfyO?^?Bj9_$P2!^lGFp
zD%jwECMNE#hw6r@JNExhP`l(<^;46jtbVbuz{max$K7_9o9}Mi`~SelEuW>t&U$VM
zeW|}^nx?L>tLXEy3OSb@@(zB#J8ezW&Z#pV?_H^ByiZ#?_UP}_z{v-?qTjMU*}1}1
zewy4wN85eQQ=ZMOQQ2DXXxBH(`|not9yoV7JO9?~AA8b-B3%C(_6e)(yA*eB?Zcyv
zFFRXa@I<#I@-NKpXw83Ic<!^6?V5zSf&~}3S_&7fKDP2@iR-lXf3lISCCL~0r)HOB
ztlM|nvht#7_{HgAW^-qpJed^Fa*Riz`2J6~HQUx+-sG~0^WCQ@{g#Di;;*WGTwPUn
z(KJl{a-+@mkXLfo-i1E;(v=%{cK&oLE}LyVw_a(b?fbamV`uno=_An!v*rGZ?OkQ#
z7onZOP%u^VuJGT;Tc<LsQ-4f8oXRKhy<?%YyTheB!R7aVR$b;?F7v0Yb$Ldxs9c>v
zMvTr{i>PkH-HxBHN@b*;)j89e|5<kG>Die-g%9Z@dI_zG{kBW!|0jp}zKLIbMOME0
zIM*(_XHE5t+mG}U?OvY!8QS>FpZSM?!^!jew43igXbL~y`|N2@y2eFT;U;y77=fqX
z<2OkruDZ<4SZkJM=OMmZ(pu?>Wr9i7g_|z|j@w?f>b)9!oJmIhTj_D{SI+JSUAgXa
zC~u3ndE8^a_XN@WQ)%I+_jX?HnsZ~C@Vec~B6%||^k0p<@ciTCnWYs0doBs)pDf()
ze0hc4+%GE{_I4|F`|b`a&Fke|IJ<T4##IYmNXgxetc$XgD=4x#F?r=_&NrR;9IKpP
za^G>6+kf1;VefP+|J9r(G3}1QUp;p&H9Dm9@Y2rcYs+{NL<%QA<xKnjZT70ALjK1#
z-rTQ!_tp>9L(L~L@5yH_?{a!sZK$a@{piCZkA8o&SnfO_-z{rNS+|Gh#IQMY4<#gW
zX$9OgW@;7`@Hl>nRj$VL-EPT>)8?jYSI^2**47I#^=o7{4q4-~i(~ix%38;Tie<5K
zfuf?f=e3Gj)!%ql=_qvWcu#Cv>WPSd`&6G!`6cdu_}9D5nlhe|M#k|mF<O)Pek5G^
z%5LQTJN9zKUYVo(dkvW4cuc0|Pd&TLg@5U@S!Q-+jPIXJlX_71#`8$0_u2H9zitKy
z?om8n?=|N@&h4KcYkw)+`<mGwyjLc|>dTvY%}C`-xz~lR>ucLfPW-&a<BP~#&OMd)
z8qV=XaQIkAUl7=`A^hQoKPo#WKAdKMW7S_Rm#Zb7*Rx;GJhxHb<;?2|*8Qd>rJv4i
zbiR9`m}_3?@7RN@<>i)M2$|f(9bZuL?{zc7lM>lOp?7Yr{TmtIFBaSS=EL?i2X=UL
zHY!dRSns$@Okeah!~giIxGy`+m~C?YPVwdVwXtLB48#0+{>@X?hVJ^nn&_KX;+iM#
zZ+Po`jBBL4;?nF-6VE69`IPtJY_qY@Tvj=cm9l(OtWUrD<QY1p+W%CDY^05nn)l0o
zzlbx(4wb4j@A_(^ao>OGf}hdPmu@fau&-a{RP(KC>IUEHGZ$9(?TFeQD*a&|=cW@0
zALXy~`FJdsQ(Na+UwFDK@Xb;6XSy5a=^i<HI_dlN<GWu4SACAwaam)t?)>J5w|jTp
z&$v@DH$l=gXV1qeVyAj~R1J4$P2}FIDg0a~%JDJ(yk)m<6rVqLKE;SbXW{P^1+uFQ
zb;~cUR?}T!S~a8hdDhvVbvH6^|0&)bSR^5{t$XnS{VU3qjkm%Nx?fi=v**@R);_tt
zsQkmzD;FMhE?U~NOFa4Adb=2P=6}bRvq@;aXnt_W-hJN&t9pT51;4Uny*=~FH(1EJ
zC4}$2mHeYc()4nsmiDp)u}S~;mEE5|xzeIx?waOF#xJ)`oSVKnt?1#`vMlM^_lr|{
z7yX)@wbsqRzfvz$ZK;dN&8ff6^i6R4;u}6+_=^4lrnAeuBcJ^^-nG*6%IrIG2Kh>l
z=gzq8yxVQjoYseLpPZbQ|GxG^nafI%-uN%+DeDYnPH0EPl~o>&TzsMC?c9ys8|L^q
z9dFR*V85Z-oU^>~;akg;UGd)zetf|9RVLz;Sla4&%eSb`Js`F+XYFK`DCvsy?JvW_
zAGIH!khMKY-fEvRJ3}7Zxp1}noH49-UYzI3%|BB)lclb+wBucFYVySejgG&x9{Jk^
zo?UoZbW=`tN=)&CGgTW->uBlsO!Ycv_rS9=O6TlicROFf6$fO}UOo7BbJY(+2En9r
zf2SunTuA9V6_o3ww_`Q4r}Diw+OPkat$rfaGU2QtPnN&(f<iOLvgyj!jH$n-r#gm&
z^NH8V6xSyES#swX&op%U|JeVw^)oMnxQE8xzuq1G^LggOb8D|Ay|Xj;6`){jxvwD6
z_pe%}y--^2`>#LvHvP%t=UaFA_%~+lG`5Irn_1^}NAG&o&$q5u@V&5Q@noCjx4ow2
zT0b|hP@Lo6{`SP$x{$In#Ty^ZtG4m>SYnsIqwKQ9X`^h17wgimS7`q{Fxh7TU(K(B
zZ>Bxo)x-YL?BKp<+jcGqoZ+*rRG_sxV!wji@`Xm%FP_VtVQuxa@McKO>go4p&b!Mt
z;dg}m$A*ZLtIzrATsD#~o$blA<>-os6SjNq;Fdk#^;mJUEbk7*W5UPyO;kAr#N*kM
zCmpOdU+FgadB51*SeO4do7zfl9bPB1FG4_5^vqUCn`2%#UT%s%lXa_g!a>(o-yLU@
z*4MMD*SpM6`?mC{iHpMOyjR`4i=tP*p4}0#K4#(mC1<v%nFYtaGC7vn=<}wKEps}@
z_vgu5pY^*1e=1~k&EalX`{CTa_zk*camT%%{AT*2YI~zs+9}c8%6LM;jlC`tjeYWK
zCZ9VuUB^i2?%CBrZdzwl8xKtU6YnRUs(a<!k6j-cPg@+R+G(5hsE|*`IAvaG*wfMq
z>!iSEf6`;i)0-w1M_a5@Q`vXx$>J|b8~A0q{bM%r=dP->O3paBcxOS(9+}qJ4GQ0m
z=rzvD(QUl&At}hL-S0%>Q@KSe8U?p&?Vt8W#ORkfV`k3GwVyUkT=Jo9)-%WB33+Sf
z-p%llIeXgwS+Ve}uch+!=W>^PSzdbkF~`@?B|C!mZ`vy-5z=s7csEbN<iA?+bI<;J
zx8(Vb#R=LwCryvkF8P*v^QwK?pN1T!J;}`bnJz@T)JSJX2v2Ykj5s!h{qzL)E>{^N
z!{ucgT<<8Zp0;!K;_M4;PZC~E5n5*SbY)=bZO`V#nZ_r0WotVh&lFpK$mzp^kJ~yp
z_wS6{*(<Zb%5wMQiGg#uJQeq6oGtwLdcg~h{)J2@?WWJ*n#OYcRwUodJ^NX#4)Ss)
zU)U4w!s|M%=Dgg-#|2Xjzc!he_%B&|UFWxoa$xx--vtNMYYU6+PE!zH`|H}N*vrok
z%v(Esy_MUao5HgbXRn#dnRiCJV{6#^_P47X1Jn+5_fM<eQ5nLJyWn(bx%fN1n@4AJ
zsHvS^Ft>P_5r>Zk!^F3@yZ*boXk1ZfV!bix?<bMi_sJjZ#Er``>f~Qk#kL(f@$><M
z${W=!ZO7t5&oASy^xU|y$o$}p{?xl+_WaAHY?S3R=hb2||8e|^8Na>6vR%LZKThCo
z)slR*;z(*vvtys*+&hs~-9;xJe|UZS?%y4?**AA<9-L;i?DZk5L%b(eOxp8%m+oxq
zn`@-_{`KCuD{1WHvU;t|;+ZS?eLQ$NwB{_i-E4Dw?h9kN($-Sm5Bq*JhF^BsGMk4p
z^LQ59?xnR|`P;VTrtj&$81*hQ<D`e=tmcDxj*SbZt(h%$bZN<#yIRkr^Q9m29COfG
zo=~-~;QLJHV^LDgC7F}Abgw+vYnXPi+Q;PhkxQw&&vYnXHGMF<t>e%(vrxqwiuyaX
z=bvD|zlN7FB+yfM|L$4urK+qxgx>dJ{w1)4Z*R1?mPC~(|IZ~M40pJ#W+$=lc<nj=
zMAzJ`eT<t=v%lS3;v-XUnR#;QdD&;)3AX9C1ua<v-vzL%SE;I4-&^m&@?^WaYr@&7
zb;@(13`->!w<JDybZTCcp84gy=AUUArY%i=3mY;Yy(|)J){^@iDE+7Arbz7LTEXLi
zUJsc(Fa6?@5<2;FXHBQ*!<m2oZa%ww$)Q!9vm;`*7F6yEex5S>$e%i!#o>{&m9B^S
z-|KcNoOAQ9`uodo4_#|&+EW=}STn`oq4d3@aT?Ac+6N7q?fP}kU&t)--{c#)LAK=R
z`%|q-MjNb@1<br>9r$`UGP%O_iow~1QWK|rn6WKfYuWomaZ`2^<;7bVP5L;`b6xwu
zU+_gNbX%6Jx>N4s_Nd%b(ghb@ExCPUX^+S3w!qZ3O?hk7zqyF9ok-p!r#r!(ZE8`$
z)?P8aORkzrQ>J~ZI+9T_ZSQQW#lLHxoO^X8Uti`*%T~3jBrXnfiFV%Qe--avy|#E!
z{$%9`9~rmD9$n3IBTX+TYLDt~Q)j~@!7pws@gKyO_Al96kgT|D#ZBp#+FCv8uXjJr
zRF-g^m*KL+%l?W$X3oc)k8M*`FHHY3v7|#@?d&C1&os%Uu6}#tRZ9QQdL4HqKBw%>
zPZtqM?Mq6NuU|GbG!B+5TTped^2^sHT%l_PpEm_?q#2lca7g86xb4aK^;ye8;&6__
z)2}RoasrQ{?mC3<=yBd>HhY})5VY(eLy%XG+4uOfJ=xFB`1bLwOk-J+uds4|`1xlt
zuQ+NG&KJlPr?OexS+sr21NUp5?eUxwnC@3w-j2O_^i;|W&-zEH8!9uWSvgP0d6Lle
z`Hx9;==Ow+Y^{U;15bCXS*6;e67$d4y1{Z^_f&Ubw-a$8td-ruy<u(~lhU5|?6c9}
zmHc`@eRrf%#(5U8)U-(1Qzs{xr<+-EZdWXB)CuXIWPH6u^Hspa6CYjNm%Mu>bg@0$
z<oDwGoke}o&c-Jdm+n8KQ~$e{KP~w7@(1%g0=;Uo6}^w0v3!}Hc***|agd*j|3w>a
z?fJbWTk7ub>|qFLzis)pt9oXzlIFg}pU<^Ub9_`7-JJGFW&X5ZeG2?H_gx8K^HgSi
zn0tA}BCj)cf465fPv88mL}lr%T8~>de%;GBaj-=Ayk9Z1L8MB5?=4=dR|&P<><xjj
z7LT%;A9}H`i|o<8C-89ZuRqGiW0uakKfNhN_L2BOk=#Bpiw&2T-U*C7xY|VDO6Riv
zzx^?G25&-DKVSYEa5=gBNTZOg-LuO(_HC~Cwcx1i>uJ#wu9R<|)Hsnfc&Fm}^U*EV
zi?7|eytUv=dFW1gYft~}zbxGTuiEwU$fk;o3)gJ!=l$IE--7?>?)moO>Up~kCeNGd
z)_rsHg-UV#n|r&DZLj;L>~kReR_Fde&3?D%eP<LKOgBj@7WbX8W?8VHG`GPv+}1Ps
zNSb9vYDL-B<Inc}sD1LBTXy|L{Xi*$Ne!Df`0Ss(*QQ*m{^l8<igY<`)!95XYzI3E
z>y168*iO3fv{f%+h2qgi6P8YQK30A{+5W!awK*x1m(CSq-La4Pn}~uyTJNL}x69df
z_1rphZ3R<#+p|c`*k_q*nY=^pZqWY}9az0T=)=VSZyXCaU#ETjG>v<`z{D5UyNWz_
z7%>)HIl55%y^U@8&YJIYR&_~PW&5xTt8Y5fs4br=c4*_PBQldBU!86&wyB>Js9-Ex
z)$^|?Lpyy&<@dOX(}_p7q-WPoYps*_-s-*R!in`)Z5-dW&+gu%@|2_IIm_y!>2*hz
z9iRUG-{RAs9NBZ8I3Iqv^4!-eT00ztH+@@i<h0dZS@mDKsXzE{)L!?^nk>C|>+&xX
zD%rgySwt1h){4Cgc>ZzH+(%tG*SBAB<D1T&l%m9;RJ*rXkl9YFMW#->ReT~h*Y)7}
zXC+=`UK5*lN;ve>6ZU-$*{{2n{a>@dT=H_`vGs37Z+%pLWqDGYXO52Lz1)LhKQnec
zH!VD$t9Vi_G(}(FVt(bVtUJdiKke)KBlO2M(^Dui@6oTH(}R{yPny|z(!H+gu;;8b
zSFSM!S66O%x88O+@9xCI6Wfv_&*h7j+!Fi5GI^?y%O2Bc?Gwx0bUPmUUH?(w^Q!WN
z?&4e9k6afMQtpb{=cytVv-!jw)zFf7^QV@dCE9okJDWZ{V7dDHphD07C986q1P$)>
zZMl0)P3w)&x<{HV{(H{9k^Or}<kjw#Rv#iRT?(sN{5E;li$IR~ChuQ%2w&dOWu0>V
z_1ph*b~Y`y5AaIlthHD!xc}1QvUjR1_a0R&d&hs}{mD1pb-8ZeHy^e1-xu*WbZJ#f
znq=S`BfX?g8}H4|o4@4YapMgQuD+Z08U3AQm2hZo_T;A59DJu1u9p$a6Rx-3T(m*`
zI%iw)S?=GzxUYEK+U&P;bNDq0o<wfrFNb1|`@d^{eM`OJT0-cK-RC#>CAt2+w7m8N
zlUon_ks`;R|I`c~ZS>lBcfPpu+NJVxH&#B%j=ZlDZr72zZF-F0?I#;`J$>hLw<)M}
zJ^mq|w1WHaalyHV6g}%!v}^hQu#)^eO<KNS%@Zm6GnJ+j_PUrfm6tHPJKZ&U#bDk!
z>2>46g_+;FXXSj^5#q#{G=0&R)eYwu4oS}FS`~a<?=1gucE^i{16=0T1Yb{9?W;NS
zJNj`sW6sQl1-oJm?L^xexwd3I-8-q%?ZVG9S<kxecE8)v8DCVH>+#+F9qW|ob~E<h
zY;%iy7hoB+BweoO^yJm$IoUf~Jv6^CNu}*7tSz4$&64g}w5~n5ZtA7JS`Cl2ikzvB
ztYuXeO~_w8@uNqKuW0sy7qPqU-^+gY;ZIt=MvK7on}MGg3eVqUeRkb1@nfmja#y3`
zSVgrRwx2lFBZ~H4ZV^ykSglfP)j40LqJEQc$Qg&<X%bUUFTc1psa<ATP=SW2rl#s7
zSHsLRC%HB%TGg}9wBUVuw0dtlzv-lpe$lN}cRq5lO;nO*@LeOY?)e%|A^(c`B}-iP
zvc0x@&7uDC`aTU;rvnN0FB0o3gX4DZK7DvsNuWsE<PwL3qopr`H{E>s(ZM6$?BdaB
z{YxLuSYa^hpCUt1Vh?Y<-2Vr<S7aB89y?%u`<rh~8E>=k$sZTCsq5e0WfM7l&xhFx
zDW4}XPWi`|xG!brF$sw~*5A@6KT$J3|5)&6WNP%w%{rIXylR}f`0}x*{~r2Eo0opO
z8sxaNX?l3x8oSCi-}95g7YXJS&#;o0csiNs=Y(Sldu+;I6kY$Lqb(jQ_Wa_c?t@zl
ze|~H$YAAVn&R<4Nm2+a~vNyJh+ZI1icq;W?ye|9sx0z>-H9QgQf2`EAiR;7jZj(;E
z?!~#WiMlmzvZ0Hszn$7yBKq(_<=eM6`%gqY*v$9*Zo1deY3sh6EZyh#YqGiOx1xi0
z4xWl<7tG#QksBITpWyEBHQ8sOYD3mOwYtj3U9}~1w`EV-#Svb5sQvNoQ#uUWQdbpl
z@4J24a^2&-HU@#06ta_oR-I%hsXr_4=d4uUb7f0K{c1heO}`(0s+k$_c7l5Au6m}M
zf3$!8Q1Xm)3J+X<>fS=ep5u(WrU|{B&Mj-N`l9;ZHuekNzgDRi&Dbos{hG+4gCAZ9
z&0qV$m1EaD=jq?&{4U6Tjf`JZHhY%UhMN`<jeCEYx+PmKJU1aZF}D1gWlF)>_@6I>
zoeZDeZArGD%(KljXu6xcm7jp~nsN>H`?K%Mm_B&t`|sGki|kEW$NBb`O@5f_$F`Eq
zt>^Tl*n1i49&JqJS~}<7@!fM6^My_y^LQaUJ<{cc)PtAJjqS(Y#5slw7_)q7NH$>n
zQF;2g&6z;1jgo3b{oT)}iW+Ks$lLMU%qZB0iFuaYkFt3FrTT@Fe;oP4bl#BT`cf0Q
zs@I=%W8b+SJiF%WDv3jBHsaN<RPB|*Rd;LedpFn9Y8tENnd;Z8Oz&v>Y&YG}mc4iN
zi(Nabtfd6segFGM@X+Ff1;NXu`A=<s=F_;xtutZu)yj2SnGUS{x<GZq`s`b$8Twpx
z&;9RC+~qAhb=A}pj`N*+YgZ@o{=0TBwc~-?M`iE*7SoqcUDtHsq)z;WDT&8@pJtst
z+%ac!t(1c&w_QQik<M3VFEZJz{N3>)s%XWN(pqzm-=6P|My}Y;HRHgW#<ah#`&V(s
z?OeUOi)q>}MZ5lqTrs-g_TR5BsV;c*Ib4W)mD5|jijY-arzAtOE_K<R$vDya+t7Um
zpJsfz8&7G`*{WZGd~Z7Ub|{GM`qEkOxBazy?fvulZkE*yCa<SERH^^Z+E}~(%CFdG
zi4V64*~dDRWE9@ws`t7x<uBJ0ex_xKw{~|iEmP~QDQ4dulibtkn_2QWc$I|9l!%R9
zP1ZLZtZ!@jA8lCS_oQ&^xfz=`Nwe><yL9=c?arH0xAh;kUkS)Ivf0PAm5I53x&5al
zi;o^RYMvD)uhZo5h*e&8=a&1K4`kh5tNDeeWIvp{uw>DLna@AZ+#34O?9loTJr^&A
z{>gdXrR2Z9DQvlb)y^4?SK^+t?b>i_N+<t||1oDKaW33_r%zVTr0VR;Iqx?`MxHA=
zx3)Isjh@nz2{Y!+K31J#e|HYY`rEAj-Sw}h@f3IQX1&w=t>m`t5RdosIlH_=K60%P
zOk6hi!^vL0-zm5G{=NI{-O#rBb5~Pa#+^Ii3-7(Z=AW`R_EPA}#>M}B=FXTR=6ULz
z_TrWAHl0}}^7i#Q^}P?~nXS_MY`Sf#(bViT!D(G9C-?7M@`Hmlc0%;c=#&NZuZ5!|
z))mWMPte}CuI5mbm)h~ihaFa4tMCzxGykKL+)>mV*DyEW(-AJQ(iW+pDlTj8J*68z
zxy$$GaM<wuJd`e??sh2gRr*wYrM*X2aU5aH{l#Z_v3&ZR(7?>oH9q@SPF!&+>2yi>
za`zpU>u-Hr&wa;+i>+J#o?d1j%ltoUH9ziS?Rm~<=d(TVp-10==w63IA;)j-j`Xen
zbYSy}t)<yFxmtb~_V=59(q#U4*C46%bE|*fxoHwYY&!zp_%OR{J?4{|ToKg$^6#-l
z&cUlLKNBuHeb6)GN?GXX@2tLhi!!D$&M{2?z#Q4^dC*lWOx;LWTA}Ztu6D`O(~}vF
z1a-0OPn&#OZvC2-b51l{9Cmyc@Z>?)Y4=R+^}BxiJ@~Qw{dc3=HM?D2EWe)cvC(_e
z`7#dg-i;f)=Jc)meNWIPrR|9Os%@QTfBrGFIn0*N{pS1@rF9}N;xfBA9J^%#=ib<}
z@kIQg{f~u?Zq(glJ>js<{nv6#f7LEme|oF?Uv7)DS>J=7Vm`kZFI_fouq(RF*`O;^
zYSyi(yhCM1_LYa3U;Y-EG2{rXQGKe)+U2^_C0cj2%&%e<sc%tplV+NVeA53FvTa8O
z-`=d3vQ7F1>p1>)cKp?K+pn_HCyja6=^3AL7D^^1M9t6TQF<?GyL@^}$`cjc({a0d
zj8_G|FyDB^(>u;QRVhC>bwTiP^9g;w^ylB+GDpWvVxz^eg?Hm^_r`>A%)Bvo-;Bsd
z-13J0jvpS}b(o~^!`XXJzsd`y^rkHtORX&DPM@ot`C#eHu0}7d2?GCFcb_`+(&_!m
zmJ9(8Eq%R8(VFDKweuJ42+9dv_-o3N>)W%XWafG0Z$Bn<+-UdBxm%*09M6fJerl&5
zm1w}JemeGKE!(yT<zt`L?szLb#j5P(-%{NO+b^0^yDeSAzD^DFSGuA!|5{UC;ty`=
zgB?a+&;32;xA*RI+0A9ogOax`pR&1MrPWkNXfn$iQ6_%1JC*)2BI}<e_)crz5y)Kf
zTYvj5^L0Pf!lF-n&UW@YAUcV~_ujM{g;}2OclUa=e0X7$KI2;_fA5>a*-WB-Yi@^1
zCW!P~SA{?8Q|G8Y*u(cra@AhvkLo$i#);-E>m{Q$2p9i)b%}At?}(CrZh|xRc$bES
zXUtm4v1Z?lqtD&mFE-2(N_hTlwsmKmszTt}+lO*0m+$pSmX9pCefUYY0Gou4*FDbb
zH#drQeS12S(>XIWwbs-3+Qz7r$9_KBd-Sny?x)W3T|M7I?auvgdp14SKkB0KXW6pa
zV{0GiKDXL)PwnoXSYZ|k$F`6UN2}+*6te#{H~4AXjMP*m`I!^HI9y&~a`N5EeL0go
zDmop0l|IkxOkUk1!2Q-O`Qaz$OCHCqq>3c`ReJBqf15D3=0x(&r5tmZ?@eFgrq_2X
zY>$7A@;dPrxua{}@-nHpM6A`bx>KQLV<0j`ql`&_@7J^syDwjJVH0Ef@NVN4A)RI`
zL6ytDG?k9@R~DHY3g&)Ia$DhfvQKW(qVIy<Kbr1;k!G*@Cdzdq$~Z!)*j)X~+c)Q1
zMAkaZh`jgu!s1Q+4<ZxI947zB%$1A}`gnxtr}Y#Y#l90J4`g1k7QRUE^jKoWzA(P@
z-IL~4pRfB5yeykta3tu??(&OsPf0GROY6ED<Eb5XLtWhV|4&P6FO_{K`mD5n{M>2p
zGEMUH?`=NmzoIHuw&qSUzHz7e?!g?1hj&|L^>*xaUo^3yL)`4p@@31n7ZsJ)Px`r=
z^%YxB>)m^K&u$maKlymuj%(fhA)L!tJkPDFs0f?Jk>!0Y_t_HuZnaeg(|okbT3)=j
zG<Rq7dAN7k>o8&I={jZgHuIH_OnUbs{KGc8ue0mld&oO<Dy4DS|Gesy^iK5bjE4(S
zl-$?vciXh*WY~mfOoA1<U*4_`es{z<?O{ym!b>|N_fB=FJZh^{;@<p8^ZcIOM`u1c
zeKf$y;B;q8;>?ALjcXN;EnIUgqAJVE+okyAxqtWe&R8!$<HV+RJ|#Yf7e_wS2HPn~
zm$+OxuXt-ke(arX<~LHdpH|I}Z~I`Hu<!CwA>NS5tm#FnNvpWBoL2vinx(r}J!Sj7
z6<yVT=7n#wd)6oucyH0GKa)-!=gE8^#AB>#s@mnm)5oMIzU6xRt|>8YoZa85T6A6q
zyxzRueoD4>;~c%;F<1TL7gbF^XzTP^e=_sW;${0*rS<f$H2&WFuVmA=Rc~vXwj{p0
zw`2XXkNYN^b`ZU``n$}c5^HHuW%ETrEK`HlCAfdPvAuai=Hrmr`)c0ANFV1hZ%ShP
z`r}J&m!`Cr5HqusWn$2lUz_DWtn-T2<`3EV`PZs0_eHrUdp1paEU(1F=<{Ot(ty;Q
zS?@C+7pdFt-x9s>rZMBInu}+SI=#^`(*O2jZt@q!S2OPZ@z}8G??DL(b(;-2!8>={
zR`gmwy>;RJ#E%bmd_JRKaAAtZlaCzVS6jwCxtRW0rRq9Y#PR5}qH#Lu3MZ0Rt@1ul
zFrCHn$^FR><=06hiOpIY5_gAd-L|wBzxU2QSi7cHizn%Q%Z;U1?iM|J`S{_b$B%y$
zR;@Vt(r@`aC94%%f0ZdudUapq@p7Tyv{!p2qy8)qix#fSs@!&Ie!xk$+W3d(U(Qnb
z5t@CVHp|U4!*i*vI_FCnv%l?^RrQXqpC8|R>Cn<AYiHef&T`<%tjxbodDok?Wc>Rt
zY;r#xzo7J2;n|I)dY6BnVzJ-Sa)o*Bac0e5KRXiA3V&pumAdoD{=2hMt@+|w&ohUD
zUWxU6&HiC2@q6d~opPU?*+U}&cy9B2-nh}YUGsDK4DEY%t#cx^f|~MsB6H29PV((4
z*uF05S^wT6E4p1So!@%fX9jC`b<g}X{}A5Ofof;NZ)b`m&RF~L^Ot?8k0!F5m($kV
zW%pyza_d_;%F{WfJ-&7A$^MQ5ESi@kzL?I)^?m1<tezQoyn12*d(N}-49;`U>^^k<
z1>3D2&GlSASQ{)84xjccfBz=a|H|2<_WX%u$-EC_)_h-)wrTPArB4s^Us)bu6aJp}
zQCK_gRMv*9sO9{-OTVQp+G#R#YnF-8!wHskhi>eD!Ts?2Z;?QrKvV7y73Yh~(^pMB
zDpuhnz4V4D@7{dB);QK<zgJ71{?H=QsuyzkVfDkihSR2g_&rNyVa=-TzqlnlE}ZCz
z-g;7!YrEf)fGvkBxCPg)$`*WXxp+Qj+xlE--N$xbt3Rf;oz_2jIsMy;uXE2HDn9c>
z__M(jJ|V{MViQawPAoFN5vCsS;TWe3)At?Sif<S;{@xgSas}@)&#17X_>Zj$?Hc<I
zZ3&p*x%ZgkxnQ}cuUq7f{3}p5duh(Y%W*Z^uiRI~@#c%{&EfAjzErQD9;3NvxumJ8
zS@rWHANSR^?6YcVIH$Davr>>e>!l~v>09~o{cDS6MDhh47uBp=_sOYWhVPDr-RBP-
z^Pj9{2rEjq3BAOz`IZ~Q$~wn)YsJ!U{Q2$pVB$@#@>da0&#yMP-PCl{JpW7GWD9q_
zn{gtO=G{=*mU?sFL9-q29u)p7f2Jy6x#hvc_qUwlTp||CoxP&r@0yDIT)&9;>a+V^
z><g1ye0%ZwoY{4~mn{C6#!eRI+^d-yJlS*08L8vHowvqXM(h2Wbo1KXX&W1Bwlh3b
znQHx<-ARLQ{R#2-Q&zv$|J?RS*roib!QJoES{LiyowzH+RMRJ3ukF+UHD7U;&dcZR
ziVg~FFpb#3F^}_R8?R2wiCxuayCZW0U$vWb&-UNs5_50UZmBa<msQjq`=?N1yzb;*
zq24aDIfAX>-!_O|ZvGnjLb*NlAdlk5yW7sTPuUmkzFm0Vw!|Aw&zr>EK5%X^N&70l
z+H7sk;xBWKPI!Fwtn0pe^3kWeET#u&hMREQns`&~)`i7fzq;>AdgiRVZXNQe@%4-8
z`Nqo3x9!u5=W^!GD2fg?S+wk>jPriIo-1?q^XG`fIj2ouuh**k#>Y-c=fH*~6|byS
zDk@|1gUzli;W}r>A-Tfuwu?ub?2NP3>z2)Y9r=Xc^!)zo-?G%!O;~%tJk;|<=jE$0
zTxb4jp8VqFwdztp@BX&;o7VZ2w&p4Jh?PCNU2=B1%~ZpL^L@JKzLl!JIjoY(S|V|e
zbzZNV<I{<H0-ZK9S03O_eBv>?les}$`o59H++%f9kH7J|u<f#8!3oXnznK)+=Irjg
zakMQcbWdJOZ@f`)&ff_S5+-ZKzTAJz#ofO>Px+*PjPi3Uh7L7Z?rgK>+)KxVwoYkT
zlCyW~swLKo%T5`cny+unX&>r&Z?XAuiDQ8W_TIfBw{s?IWc`U;$5^4yX1;3gtD9C8
zpSjho8u)MK4~ZJL@XM2L$w}_vt=Tm<d$Oy}^*fJVG<!T2iS^aav7L780OyjYT=(ba
z94l))^;YWCg|l@6oGRP8L@qTNThFa`PWbbuw0ZX|f9FH&(FI<u)e;Yr;-hvN#1^$?
z>Pmk6Tr>GpZcdqum~q=Z{xF;6?~m?QKR0cA*~*hb$Ao@zXbW?GdvX8Tcg`L2oy(S<
z61=})iO0*EQViWen(s?*TydW9<fzF@`-_%-(>o8etIOW~V!Ghp0#P-QJtCX8rr&<P
zz-n)DW_FL6oc?*4sPcX#dG3P0GIouLwxxDcrq7Fg;#t8IyOoc3pBr<yi17#0gVSAS
z&O9=0_LY#6=Um>YYo=;P-&=myC~~Wly<aMe-RW1gtWTSg1s^)tbv3TiQ8im~f=^c8
zBy!gES$@++@;o;>^i8gMdTf!*?)16L|CxK<-?xhX<Gl5Bn%rEK&)((j&uz~vQ@Hgg
zBl7L_>EAqCQ+;>nE3WY@KCWI^nVkGnZ{sUD-3i+t)t}g)lT>xdf%&1;X0u{F>%w`D
zH8U^m`*dGVbGqH9&FM>b<Sp!+nYBD;^1?TXvb%IHpM7=B%(?LM%?ht*_xC@wd-l!Y
zXMds@*Z)l5!(qSNa^Djt6$>JDQrY)D|LD$HJw<TBVXxL4|L)>z*_RJlCy2IxJZAWX
zv*6j*o~K4zFZyiibMP%txV_bO{?r9o?`~<f^vpX_6JPj;dum*<L&luu({c}@1DEP3
z?fP@W>cy8EHEw4NB_k^}ua`GIk(xf``X>kHX>+3<KI>HbduZLkZwKN$`~rKYH@c)}
zsdRjMvA=lI&nX!RE4}AE@|<^lvax*HpOE^zHp@+uZret-OD&ify<tP%@^=brUggY^
zo%40(HmwjHcAxi~JwzfOom$?1*!<KCx3Dff){6Gsn&!JF#vcf)pBuCPN>S*tqD$Y4
zqOv{<-q`z@Lw<p!);5JZ8V|(JaoCnGe3IWKX3A3EA@g3S=c#2<-_8}90@4<fW@Y?8
zq3OIvQbpx?hs4e^%?j=3svo`jFE;t$;sa`y<psSTE%#|2VlEe(WqQz$DL#hrbMwYs
z*FSTKPG@TM=Y9~N{czqtz4n+lniT~GoBaa*hEIs<iMr%!*p=WoC)s=b9ql6iw!KqU
zh@ZY%xvy*WiHO~m%F|<~t~ywC^KOp4&Nm09-K}-5`cr+Xq80zHxx^mC&5@%cyL9I}
zud0;I7w5m(n3?vBGvd^mK&E?|kydF>kII^Pd*?ms`8sooV7tA)^bJ=@uH$d`E$s_~
zr^flVO;64-H<hhTKX$ZeMSfCI`KlOSE*pm%xd|6CRUYqJd{|<t&a(4QWOY+5BObVZ
z@%fhEGbdq1;}QRwOGkoO`QJ$WYWOfUjq|ug)aU7iQbO-$<t+IW(5ag0^WfC0Z`U{!
zHk@q{el=&^t*aN#1#WLRyumE*aq#(q?H2Cwx;qk%+;ltIr{`!~_P3+6D(B|ax_N3W
zEw`ijgwkbw`af=V|Hc@!=-SV=O-TYD6y{lN{q!Pb?-hATr~a!yFP+(t*Q?zsv{8R;
zMTmu6-e#k}N2C84x1OtXE<4l^{`uac^rCM*yp5%s{I&PE>nQn!+D(tW{_&MauFU<1
zJW?5kfjui88OPi(kh6cvZW1q2HeYJ0+~Vw?F1`H9t}Kb3Nv4ygYPts)mGT}cuiKzy
z*pxIaM4>z?s-$^MM9GTg$?`^P^mj9ESy)$It>Jxq`po$28&a*-c<226m^#D0=0%Y3
ztV1dp|2j3cJd0Shv(u!%R7~|T_mtyX6;7V)>ex89Htf?}zTFpY1%Gs`@ZBS~mDOz0
z#**2B&z4u+IlZ8()IUr^+TojS&7Dt?lLOlHeOn`1{a(*Fyd=8&cx~Ig$zN;>%9JKL
zRQ>*9k+ysZ=S(~En#jMNM}s|YhwESTlzPc{j-!2+>uINsTdUQkzR;F-ZFV&_E9_f*
z=}=%j&nDZx)SnOKHoW<et2p)d>j}|^y1YLyr1RLQ2!%dR*Z(w^NB88xb*!aDvo{MY
zo0+jFVEKWI4x#gG9;>!Ib#IxYoO)>P3_a=Z=W43nykd(xwBG7^>W9?=*%F7Y3o@Jd
z&bzAkQg*gs`SgI8>An`HcYj_sb8TUz$nDM5ozeCkcT?Cd)ToB6)7o%MFLR|5_n!&2
z(-l8%7s~%({O8(_X1*77Vmx}Y9h_1ER~|lhsa1^ONqBcxkyY~6H8W1Xo71w*WaZu~
zs*^pY7@1s@>;4*^zUt?VcGn3E2`57LZStSNW+C+X$f8t(Ytx>v)SR7eP;7JS!`=t_
zF17c!6dPBDb-on-TdjKMCA-c((HcwfGRcl5Efp;t?OxAHw}c+}<aIo*t1s!aopB^X
z%I9lQmsS{N#WZY;y}D^h-SoSL&!v-`E-{N7?6Tr}=%pAVcH+}c#g6mmt0K-C-+o_L
zv1rYS{WUYb*~&=nVEUcHIrXLbE7LibH>Aq@N&QYqJ+WI~|F7=Vs3q#1)jdvK=eAw+
z;NR%<v^qx1=)B#{cW3>le2;9H*}%Q|l~?xckGC1aICO;Ek6MaHZCcpkX6fk^CKBxS
z?}q*dR~@&5_O+o*leZbS7!}@|(iOO7(drk=xBr{Z(8XE$&3xvB4>FIRYk%MQ?LZgH
zq|F+>IakWW6t)LGdi$V6bM0o!_>Di>OWj}H_Wt?(L5`+-qCDr#vm3dac|Tki*c8J0
zcW>Y3H)pm+Y2ALw?dtvI_~9Ufu9rCr_FsHp7SOC=<z{#8qU7{f=G=E}zTApoK6&`*
z!`IBWE#|s!I(M>NeeuD!FSn`P?3}i%*Xh>JB{h%gMV5V>J8eTz7fYcVcT{Ee!q$n7
zS2;e|i2e+Ep+A)=BcN?z!_?~6#Rjk6-M=Y)u4IMQY;Wtjx5qygFA$$|@nc7;*6+PO
zEqkO^E4iLMakxuqk->(5NB?e4oSF6X-1SGikA9W~huPlRd?{+l2i|2m>*h@OFJ&1u
zvA#aR_STIp^S&)+<*J*Wl7DmR@=2!-%|5mN%Ny%6Gku(k-mv;jNq^HGxHR&Avu*6h
znwi_PBY)3w-*|Vy6x$nev)Ha)nl;01b0?Eo=#;KTm!<FIn~$nF=iU9AxOwWCz`Bza
zJKi}yTKW9T%B!dNPF%B^`g{hDQh7|f{o?P<60dJIOt1-6y)%jLz_+<qp3UhCy45f#
zN3fP>R_)m{E6!|fc$LbyI$d$SMAg6VKTl6^eRd%EjQffCGAx2e?YckAO)v1U4KZbV
z^E){Dh|{&oJtrp5FNpdR{ZR2%FQ44kW%Fw)9aVQ~9eFUZo{i;Kg>CVn>@1eM^Rg~{
zJCHQtiNe(zGfvxxeme8i`DIA#Lu1=QF}8Qv>G{p>TtDPzZ)t9HKUO6D_NsBv=E=(c
zm=BtNsgH`%Fy54$DiiS1(tf+dM^1B<npN7hZnG5A*GyZsP^8h!=ZgRN_oAtvyu7w^
zaaEltFS~RsoqO`7-3#8mTXd(MYm#$&*Yq1c^)n>S{>$-rp%Z!8dEVFkQ>QDib>xXU
zJ+o6-+Ofm*?`#95UHkZqYbEx2{`#mB6!N{{-`z5+^y7g^SC!k+FBC0UsG+p&*{*E6
zO>-~%t`+C$G`$>nEF#(6{pO^A_0Nv_*gk%(WA^sw?<>yNJA0ZJv`C&j74<dhP|IV+
zDUGx51uhGoaobPjtxVg3CHk}Wd;HD3q!D!B_FNIAV>^STZYsD<mu8pI6Bn(^e3ZNW
zl(Jr`-0VIFV-DG}X@8T}tqpxOsbHCbP1nI~o^!2(R<&$ty1QXn-8VD6zeOQlKcuF1
z#b4wOek#Nq+O+IH?}x-)?<cPPyY+*T<=4G@$GP0auHEy{n0mK-&9<wX>u28kUzDGc
z;dMoH<=(8_&gG{w-bjglysoO4=E53~_RsB=(~D;e8iHFj^KM@H9JhV0{x9L{`xnYB
zo3Z!85-+Y@(-^PKo3}mPVa=!5YiajSroGTm@Ue+kW@&t)VtPzrnXK)Lz3iu_ORp67
zyS>pi)O5=0&l4qCg?27ETsiq}(B(_)tA9lN{SlJ4SjNuFY{tHq0T=3f+HY__lGxA9
z@jga;j^VYUDs9FbkAizvAupZ3H!c5kX@R`aL593d*>k2o<JCQ~f3EaIHO@B|cDILA
zUOnxupU0_F5q9qVsV#~BnuGrHwq5R4)tH#J#_ZL6?}@J~Z>Td`xFx42AMIfCT=X^U
z`otaaS2@fbDp#k4U)G-edvEuxM+^B+#B4n<ZOK%DsyD(>DLbtAOU%V*1zN=KdpDok
ze}|)H)PHB&sTYNA{xP<?cqg6z!{zT^Kb4C9+*+&se^GMe(hUXPSyooMk4=s33{GyY
zd#d~S2cOj&??0K#+%Em;&Rb}qd0|?3;nz!x55D%(|NL%F_Xe*3btO}V><KHs&iMQK
z(!~98n<G0We$#Z7$o{@bp-16&gw9Qo7yi`~xb~^|OxynXAMXY(>C=0UB<yv(6}z=y
z+4i?pDpQOlD%@S}Huzq5|GIm&FNf>?h~2`kcgM3cba*GuWm&o_pd+5GJzQ;Z`p*z$
z&WgRtdxQ16P89Y!>{F<S$}rqAO(^=x$^K*9jlAOd!8yD}8y4T0J5N>a=Ucy{Mn3v~
zEMISPJHPVUQ>NVkqP2}De!X12UR3wNyIj+=?N4NazityQd1<p&H+s_3h_<bkoJ^@v
zSAX>SUg2kUy#4mo&Wvl}>UP?Z91>F>N_Zzn3p;;X@nL^R73Z4Cmkm0<sPLKnim`qY
zxqEZauBvm5UK`hO-oLhZ+9t!KbJOcT-HA(2_VD+r(Mq_+P+r-*WzoKd`nTWiU%6TM
zV`o3>R-xEEiBIx3U-y~pe)i*qTa&}PjUTV}<ms<oFL-YErR@6?Jf)uM^SfG{J#caD
zgB#MtQ4R`R2dnnvSlKr2oGzg~y>wRCv?zhgPY)|yF;iVP%kv=j&xDx0_Fw;MiJebb
zYI9mVTr;{)`Q!6yK5?OcUr(`IS+v+Ab&vIT#`Ytvg6t_AAAKfsv)6|!=k+IkW!?Vb
z><8wz6}-OdI=@TXo!gSoy0#+vZD?U%dTPNonS%L^U;I8<Yp^VQpDa|&`n<(wri5;)
z*e9pHbGBP|NzMM}+NN2Z_xb(o_pbgN-|AX*m*)4LlHwHU{e11d=tiB43+H!i3Rt&T
zUWij~X7huN@Bbb3H*YyvpcT8bs7!2PP^j^o?++($nxkvlAGooWd6r#@ysG&V*%e6~
zd)cndX|<bWv)kq9>XO@h)4r<SVzrk2|3=jN3ctES@GZrso0|L2-R1nItbF0Yx`kn4
zpS9XOx9%?y6tK{^xGLH4hWXaW^S5;`a+l;7JXkc*`TloqxfQcaOnol@D_;_OnPbyZ
z0e`mk(B8hx^mc#wr(4RVu36t3zfI=7;h!13oqJu1#9k^f>VLX3qafnu`=og+yWIKn
zHY^SP_M`Zs`uiCNE(^G5e)>D9*X3(z#Ql5s-tW4~_k7=)uU^Y1B(0CW9Q2AOLtL{c
zi~Ed6|Fh&Ru9iC9Gd3@)ndbZayW)@Re+t%1Uhm8QaWv$7%eEFi=|h(mH99Z+xx+w)
z*P-6DtZmJsyyh34j~;v3Z$GOm;(RO5_-51}t#v&Q6lR_IpvU1EW2&?Cemq-O?cC{C
z?7E$vgxpE|p31<yZhl_{^Mo&|Q@2(>xbJdtrvC)5SuE$yZ<%gzY@deX<HHx&bt^8+
z6MFT;c*FXvh!sv;x7Mzn<>jbgu*LIC!Zl72=Tj@(wn%yYZ97?TK2vh`+nI}}s=k=;
z#wn>h<$bWg!4*-{>n^!UZa7-8S~*VR?M|7+J2S%%udUdfep5szOh>%x!h(?NR}5H<
z%O9)8Wt<N0IJ6<)<-+<sv9_z0exLqo(dGE1`=!_XbiC&_bKbETntJiytbW9#ube4#
zKH%Hmm@QdSFT^driL3bZmOo5cDqU9+e{|EYhxYXXUwCVHH4{sd#ENyAIs#SlXKU)Z
zKfbr??_1gF?Cu95ofglT-2GO+`oZ6i-?1HgW`T5y7olU%e4?V<!XrS(o>^eOZqnEc
zdhD5jxdC;KJu~CdkHCKHnUlV=zKg!6zPG-QzOTNYzQ2Beevp2!eu#dkewco^euRFa
zeqwGxYEf}wUW$H_eo|3la&~G-4(JFpD7y%J2wJj!a%NF-X>M9hYK4Aser|4}eu{po
zKDJ}k^brTErR!(tXH*tsq~_^o>Sycc=;!L^K~GzQoVTVAK4%SV9he2NtRS^0IW@0D
zzaX_JGd~4#09#>ceo1OdQVv)xi~~^)=0TW6`o;RiskxcS`8oM{`o*bb&_mmba}tX)
z^h=NqZ!6U=(=XSr(67|5!g7!s=-4*YgWN2Uk^uZ5H$zhcE`12kNWsw5)C_*Eo3R31
zM#0d`!puYg1c*4u?Hg;zob2;#T+W5%+YjCa0m(aeHG{f>HNxgF>Ar)2q8q=bzWe_B
z|JHMno3EWIR^2%{X6IxZXTLQ|y!3OPB`{4X*igPSJuTr8W5=o01<W&ML`cq<5s`56
z<kdAXxsCrP9h#KQFgJFM%$rKkQEqHfyX#II>4~*J^F;Oyqfy>AhO{sSV|IRHb$(&t
zhStu`-}Y^M=WG}ZlgqV@8*G>zjvbVH!Q`#?>cNYrIjM;+e+fRd?`O~o&SEe&H&?%V
z|2X5JGKX~S;N<FtJsVf6UU;XxXyry-hpPv#aJ_i-)n0GK51rUp*-8mXTN@jRp0_a)
zGIMlUR=i}83tKmhL39E4g`2V&Y(Kj791h;#`(bX#7E#nNYw6U}`;V;Rd$vyQ*g1y-
z?FX)%63KY~sqnzrdps|Aesu6c&T?aV`#)9ZyFRnkf&Jdh326!c*6*&L|L^p~sekXc
z_xk$EzLDvDyLZhSU5002+Z-Aewa7HDUal>B;Ksc-`p(JG;_dyPkG(q<w(XdjJX^hb
z9?t}UFgA($55LW=#e>te-NVJ%#I<klmoWPG^x5JQkG`cX;wvk2s16suvHz3s<|4LP
zbs=}VKfcf2y0QGjhVMVGZ{9g|@64a^B4_T%NM3!rcFvuKOG*E?{SY|#Z(<}vEaMv=
zAD=mQbQl&0GrY*mI{9OIv8lfMgZp03_8*b|`TM7Zl?Brodku!aYtA&v+i$SbJNC|@
zVfAL|3+JED@A~h$;mjEZW9{JZ2F?qIPRV`i|ITlC;ZOXJ$Is@jwPD=lBj0<RC*jxY
z&-c~;_TMuq-mv}aujGH<pBkNdx#GkMk4yi2f9%&16lC{r;J4K_Z<yCQm-E1xBc~W2
z{HgfxJ6`|))Bp1C>b<A-to=7v`m%igrEkyp7~a(f{#bFhK4ZuK-Rdj;+3H<s_}{zW
z!H0{-9T=|8-*!DYDc$JrkEDP9@BFEk|M~y==laT@^_jo_&+c!Tz4q<>s8#!~{I`!v
zw$_ebU;o;E*NwAZla-#x+C4k;@BgeUrvIi#J~<d`oA3U=dTN>JzZpD<)!euLi(NeB
zdgzpJ#<G;BSy?~Vv;8_RTeD;P)=lhMmOCQ;ZcStOa>mE!zx#K?>}6*1tB*W=yzE~X
zqrKb9dgrd&v#n<QH7(Y8Bg2rKo}R3KqrdyV!y5+qXZ;UNn5+KXz0TmqR?U9BU%7$5
zs*a(UJ^jZ1caxiC4`}?E{vy6Z_<+VQ_CiL9qyM@sA{l!w)n8~|`lnt{T(}|dC4Um5
z!Ky!wISg)F?O!O*`&BRay<Pk<h<Q@}2ycSPU;U)tA3kkNc=Ipff2gk8=6Z)T2IUX?
zKP;B$`M+zGJ)3;y%>RZzxGi^B{&)WGc;S)!2jxXi=l_tejIOebs>?ZUFD7ray8Zya
zk=g$S`J9~pjP@^X{B1lVfAas~tH-A$l>88WbNJh1-cS5r-8c2sUy)CjwZFDwukM9E
z{Pt$g>b>XwZ#TQ`t|()_?94;?rN1iL4XyraerYdOH)juDFthXR|B95<-;005FF$ie
zepUUHzMqSQ^y<BSi!<%|zc}QL{4+gy?RWb<Yp0w#dhN#1Px5+ppZ*9xNcJ_@6=lWz
zzi^@al2}`re}xYYx8JsZ;J)+je@1(+7a!R-)y(<!hy72%`>*^z0vX@$fB65*w3V|z
zyIaQozgH{Y{9XRf_tU%_Usz@x(mQ84<5OEic<UCM5RS){7vA@M^q>4bYgxeM-#S*?
zciAdBsRm77&c4?AKBqcgnd17K?%=yzx`KOu$(UbrsLlPg?#`b#zmp`E8|}Q!v)iEY
zrun>botV4c49))Q)wVqU{p!hT!3^eW9JlnG=e>P$taZf~;kO4DyI<P8YkNkeN=aUL
z<@!0!V(*q_blFAOdg*`o&Qsavc}&NQbBVSsqY3Y;R`p9~-rhCIy7t3*qK}O3n){w6
z+57s>v3Z|)yykmWr&PB$JD+49pBdu~-B%}6TKi8pPU5+?$KUav*Zrn+<#@Y5F{ap0
zT((As8NH)+PW4(+TU);L_lYFw&wgb}3N1qG`E#FFrzYC&T4>y<<W{*kQDs)P>T2Ez
z4;Gw_N!j|;Z}H_jR+9Cd)vJEV8l3k0vsXyb_)c<3X!mmFd8X>x{>L8In7lX9bBz+a
zT=n^;jQeNS*P&A1TMizJEvaz1TrhR7(XZ`CH!VAtyXo27N8SIs>^ACjK6fbp@APBI
z=G&cTeCnnwIPya1_{YUQY}0}*Iv67EE$wi8x5QFORo**#j^`aen|)cDOU%>Qb}%F_
zKKpB4;p=M&vx77{zov#K{NdX6x^2GRD<Ms{P3s=V-C3tNNm1s?%cuS(3!QUUTz36p
z{pjGa^y!>a43*6PPpvFCW}sK8Fj0eht^b`l>SjWczGpl0|9$pa!CUH9+j`@&=YIv8
z)h|L^oLZ`aw59Bp%sBqx@zICn$MWxXP8R&Ax^qrK9_K2Z_vY`;u1;=L|L`xdI&NM0
z;Z12O&byx-v66fo&m!6P>euhj=iTzIzR9ZZ+H>oj=iMdg{N1Zxx4rOS2^E#nyk8M0
zz1BBrtxd!X#zK`PlRwYB`to<mpZgz`Z1Z*fZaSrIJ?ABuRBI*9?6vCs{^e>)EpH0t
zChfiYCT^Jq*GYTvr(Ca=@;V1SJh`yFIbZbH5~u3P>5b<fozgn7r^fu1=DFFQW?z1i
z@#E&?UR@s9wJq&u78XcMbrU+6dF9TgPj_>}7|p`J`gp(SI+nGo{oUE%D$BWU6DO*y
zWL_tCZR*VFXUsAZp3Ie5C@wJB`1>1=S;|hoFXz|2EdKnNnJqOw^{T#TX!DzzGnq>t
z-jY8SubRiNy<o+yKgO#zWWN*e6qL5+a&`*4=soSWbC;OQ3bmylH5at(3fS~*n|pc3
zpF=OrgDYyv_O>{lka|-gccA%@X8WHy-~Vo#%`RA1z0VZ7QC4}EU5z*5OJ0?;z~!}9
z))}eoh`sXoa&yu3oj;F0XMUWubg#lO+2yZePH-fh`NqliOmvE*`m&wgKR#?0Sl)Ba
zT9BvLsqV%{y^T9-jm?g-eJ{~d&5LiHCfq3gHsj|rx27MWtkGd_G~76EDrRmv`sL#6
z^KNIi*+vPd*9Oo3QTg@wpG^+6k8gd8wom-x6x-qI;q>l{cy=9Q&9hStESc8t)RPvc
z%XZ0pl@Z|yeOvN0kzL``I|tD-HNP2cCO^?<Jdm9_OW{1{;iqwW4+0LZ(Ra7!T>RJ3
zcHZ7SJ39XB^rv&xOxq`rUwUlzgbrp+J!a`UNvu<yDt9}%M{S?xZ+y{XL*JU;%bV?I
z$$sn$(tmN|<4TG84__lpk~aOm?PY)R-nqA7{?CQdlAn4wDoD2-YMkBYH#dQ8(wwfv
zpI(M~uY2kosc>(C>HBvZU-sHf$XZ(Vh5KBd<eAUvDU(Cz=pQ?KVM~&->!<bIY<on!
zzvYQZNwcor$)E5?FVf^`rA$>QqkX?a^J(LcitEqLzh1AhHKqI(Z(hR67nLV=9PU|d
zaW6FHUC__=dCWN#4~h;gx;nAXhvBPeXtYiC;@KZ9Ppb7vKkDAH{DqIk(glZ>rA6g0
zkUW}Ml<}->lli97<>}n(4UKpfY`b`|E<H9*#k(w3_DI_j@BOyE%ihV}6fL=*5wa&{
zlJJSXN*@XT)vXM->|5GX<{!9NbB0^&`rlxS)5|*FCCV){XT7x2ntP>~gZqPx7pGPy
z9<t`K;E+;vJ@$Hq>&CN}f9D*w){*+5Uc~RXC~kE%lh>!&3BP4MFCN*vU*`A~)1zvZ
z6QU#cs%~3V_|Un0=jDmPKMHgvcudyV$+_b8A^*Rd{6AZtw>fj`)qTBFwoS9jt()vN
zw4I3jc*<pxkpagkpWkXfW~$8c-m%GA#6)dXuJ1SAtCuz`b1F_dnwh^PyVYy+hZ9<&
zTNtP7avxH?R<Krg@r)%cA2Tkr<W(23ZssWZeZboEb4B@jU*#32m9B65#+W|y^aeqv
zO$TmO-3bnHTDwF&eDadko3i%JN<VkAO`9;EBfRO^`}_8@*<v><?l`+pS0_&4{q=1N
zW1c03rE<RENP76krZoR|r(}tXZdmJPx#`{=Zg~gue(bn=ob%`kwX-@qkH6$lmQ7K=
zsb<H$Et`?|LON5DA!qfG^VTefgkLGVT{C6*#&%Ytr}wxoUFL}QOFYcJp8G)UO1^`W
zB3aBnbYw1KX8x#AsC<H7sYrzB;YNYy79Z`;{wWc0aNKdJ#4S6$ElZZAG5Ev8=qC%;
z3cRR0yMGz$YdK%9UAYee`z7}^FS6UVN9x({y{~p{dGKHJ{w&Ej%gsIWuD*9q(!1Ct
zrL$|5^j<qNi?gh&Ci2JTGE8;5>+-qI?BXx|U8>(_eS0UMlyqyRrR?8$^N{5#QQzX%
z?mBV0S-39yd%X6C?n={5QYRC4I=XFmbk3Y_zmDmBw>Q&g>wVb3&bx|{X?xmvjTO5d
zxUJYCDX}rH^p<IjvT~+nt9tXF8(j-t*&Vi9FK>1zKcr%-$s%3<jdno+`Z=5RCupp)
zUiORcR_OB+A+<~Db5_k!*p+kac&-88;`r{5yFT$|@n-jCU(0{>=7sE@A9m}nYOX)%
zYpIm2m349E#i+bLn^e2vb|kG03D8K<xtjTA+at%tTc^Le@I$O+%Z$_6&dk&MeY>LO
zE{Oi6IdAp3WoZ`M(nFs9yf*!N+8OCdVOqH=3i0Cp=E4p+rRSB54!xZ1%bxZ_nN@$a
zmchK2g_Gtv+MTMqXzSO<XT@CFSE7(v;}UxBJj>rYvCq>FEv~uv_De^h=j+dV-ux50
zwETekhp+M1PdUv_D1G15zv7*jPgPK3w(hqX|18sewnzR8&6!diyjpe=uk5o83O{e;
ztPi_$R5fZE-_f-zcRbGVx*U4X*y@aMcU1cAWbp=lpZTlVY_)#v7G1>J9VuzYdwxcV
z*VJ#9>J|mxFm|!|cj!&`Ezyrhm##9(nAz!=Td=l%@?|dPm0zD}ndzKNyZ=+y{BBl-
zey-I|-t2keYbq{!Twy4^l6BzCwPnnW^WrXQpK36bRrgjralmoUKH--;10-)IoSgi5
zn(2zrfcdH}6^m4R*-xctoL|{fZut4C*_Tzj@9v%Nq5LNMh~JxR--BvQ$G-o)SX}1)
z<z?oF9HZPPOCJYc?R7Z$)BhlY_|^3K7{e`pjE*G)&HOc0<7eFYl3Q_IzJHXAx1Q&*
zESx4;YiL$^Z^wt#a<;u&Zf;2K+|Y3+KyJqydzsnWS!$X^LZmfKxbDaQl;U)C^p~g;
z{iEVztCi`=%VV+faz}04-_W$@hF_zNW^gW^%pB}$E&DH^tLe6q4a=+L2OcYZ?ht*r
zAg!`!`<8_GB9Hv92lU1ETv&I6J2!6qO9gKBGslnK_nmtF?EE!{FRuM2{pGW_>HMju
zckSW1ZCQ}AdFF4PR)ZxqJvPkWCnnpj*G}NoU8VD-YU%6P!{<9LX(cNizVWu|#O8({
z-}m_}m;LdehjC3-*gZM*2M4W}3;5MJd;a9wUfsX{zS*k#4#ppswl+@s&hcl8Vbr4e
z3TlGKcW^E0lU?+MH9elGYf-~)xs&!Q-ej<pRLiOC<j>MNXXPvDV{uebY=6xs?Obiw
z@V$$K&d-*e`f<Jhw?l~G&qtieDM|7H-o=7p6C-$o^*f7vCcIH_ik;dj*LI@QQD(hV
zjmhWiH@SCDFvbaV{obhaXZzCg`&_p0Zs*`yBU60yZ{f=6%u|iFrN~HL?*GYEdoAeF
zV*ipZqy0N-{+gfnSak0Ad8zc@yG2*a=&Y!kWy`<K<+`q)@GQlff2MFW7I=v8ZPUHs
z^U?YH6j_e1PZ)18`6o-A<>FIs{L4L2(R^F&>W&N7X8zeT?|ERp?Nakh=h!tKyRS^>
zJ~HY0y3n)S&y0Rq#IIP8-yTsDwqos^nTvNyOg?jIYc>0pnXS4%uE;+ZcGKa%djC(}
zwz<-;4)DBqnwz0~EX>ho+iKarxziup+>jKwt-Z5%;?<~y$*s>;eD2!K8MwLg_5|Lu
z8aoryR$FZB75u_vao_W2<&neZckUCK9=4DBi?yj2>+YRX&aww=`c(FHeqDFB{JD^u
z!39e<{a0h?b_r_XuxIIB-SOpKN{iMUnU@WZGL0(q`U;Gv&RXW7D!lntLGV*64%L|w
zm+~`nvYhfuYk6J;E<R-&w|u^rsz=m)u0kKHsG^Syhb(u=bg7wTd%C;N>f@euWkaNq
zMg5|q`)gWtMN)s+cCC1GTH;Q*nWK8+T#rYSW6zm*1x_vep*1hS-N|-UcDiS;SLTO>
zQQp@sKDhtX<4kAU!R{ND{2SuaZ!dSwW1Dg~*5}Ub#MqCA)OJT#onYB>?nnR2?KR((
zy^h@K3|r#Tb$^x{$Ln@U$=zjP<;@B@YHy#(9b^ry-k>5U`f<Wh>$jH6tFQZAxt^?a
zWxxDP{dNE5<O{mH%=%EHyY+PbyFBjLS%!ZExjshg_#gctQU5RTuH5qCp0sKIA6{O*
zw&?rUBc;=>|Cs!*x%YPb=XLHZi+?+;*z56PTB+{+2=mtmBp7~2aQW^%|NV(~`1xOq
zD#ATG&uQNFzprWX>=WaWy{Go`E!Nw+dYvI_$IAMOSIeHSTe~SZr+km#i-}x{QvbL8
zVEg9OcFN8zjZ@U-oV9z(_sF}OC*1n({(jvlefMGssoc(oE}AA=_{3deekDXG&06qx
zTU^~P79%r`_m5*;W(x?<=B_C}Xdr1?n7^!4*O@zXlIhl~WgoZAe82eF>K1)d&08l6
zeyp02?sn(piId(}EA{3tP!g26FYoiSs+~)W<)|8Sdfu1Q^6!Jn6U%NJ2H$u6rOIl!
zdWT1r2NPG!@*PLzLpH8t4_IF1T4qxz(_`MhZ-%_XboZ`673oJG_Xa8!+}pQYQ{`l!
z*+hS7Bm3>E8*`@>7Bp8{dbyayeC5bdh<~v*xT~t^=V?uoVE?c4vfnr!S*Lm@Y`(CT
z(b`Ei;ZK&_Yw>@~!Td$2np=MY6I+!{(0w=ly?J{@JtFqAAAfp5Dto^7<Ov5}w280U
zUb(@u>}<X7BB|SV&a8>kIKD6ScgnHlH@WgcA7?NKp8ChMrKHO3%aKL-UmEl!HRBEU
z?c5>QP!h*g>#iN8rC{W@dl9FzOSt25Q|lKCK6{*bcmL9l-088xukRP>+Wa(guKo2u
zd++0^^W+2Ocd56q{{DP>w?Soz*5tjW0>83l<9Sv~%(Dv;REkrvZ+vsqXJViH){d)s
zE3fa>+`)5n<Jo1m?@aVQF#Bke+7YdFJM<=UF-~Kb(0b2PDtB%2td?(84<ZWGCriu9
zOpB4267}g;!5PmpwvOf-b=#G1SX@19E-J~j?Ze9ZyOZPh9$oQnXTz-R_xXg6N{cXh
zPFUU>q87w;XSsXjic1Q~<`;GRnm=uvsgh_kqwjmg>#Hkt!<0A17JZ&~=lGeBf@_L)
z^VqzcE^Pn&+&DODwb&|?AIpQHJin{OI&^h7iG28z?JetkwCS!5Z|bEp%98iy3C&sL
z7!a1C-p3lb)*<!tp@o7orYBZDVcK_U`IPC-Dofcmcgmf%O_>?+=h}jZhO2r))6N{2
zG+|pa&%NtR77XX!DWzOnQu#e-!-nfSX19sH{P9)M?z*+K>rM&(y)%_qGum0^8*N_r
zIDGcKS9W$2*Vl?jFY+$@<d%_t^vgk?-MgP|v=H0l#(%MFYr%nu`TK4&DQ)rD_^IQE
z;Pk4CfdX&TlD6&2p2d6O?8|HIOh&u&riX0Q(q@$wKDjr3_tW|3FI6^QRn=1SyPnN0
zKFiW4wtB@n>o!j7Rf<#J^8H=$Rwr@R#Vo#yv!d3%nlaZr%<=7Gd%?iv+UfJyTNdkF
z*-{?Tzg4!{K<$T&Y5en}dvijPT0A#@>f3xYBIn+Y3!#2*-nJ#Dm;8GXV`my%)_6aA
zBd4;(&!iPz(r-jLrQ$!nKE1TzJkveai4k_YbhIP%ZTFc=EqyUPe|cg_q1urjtsOzn
zZWSGx{BOPA!QaIZKFd$@JX>j~^KJVwzLJTlVyoXgJ=eTsA#eG<cEz%%K5w!E4(|@;
zGcxb94GNsT$n+~;o?XFmmKBxxUT5lN6dQ!y5Xs^&n`_^xpHtGHtL*$OOwgx){`#H!
zByL->D(Kx<W+vpWv@z#O%$}nUzyG`D=j`jsomJNO$$OnZ|FJ2;+S6simo5|wdcc*w
zT<mT1GVjCRcGRwz>y`RAf9^wtiQmh5PhN=^o3`-U^xyONUdjl#D(B7*nWvhyVZD#e
z-L7BK+`*B`c6%Q^azBzc#qTQjs!W#Cm)@9{KDn?b@}6PF#1&7<TsS9tci#MT#A4lS
z2AzWHwQFvrWHwb4Bw98&Udfg54G)OwU_P8U>E7g5H=oJAd#6;fX4{tAo#NZ3d9PHE
zl6lBctmf$c`>TtN|2!3!nUO#D31=MaWt!RJDtKh_-Z`iH`a33no3PK+FKO-1+1pM`
z`dsL9B=f}EsiD%}KA2WdU7RJ7Qn);$G<2IVe~y5J`F8aSB0=$~w~j||5qgt7dBOCg
z$**J%%e`%rT6wXX$JbZD*Ky{e&o6BFWsGY>yO$Umb+%0N<QDPvTEB=zS3Y63gXT5C
zz45(K(k-VfJRZl2O%qVrzbR6^&L~~wSEPnc&Q{-v>Wj0E@4Tdt*6;pLe7m>cpWD;d
zc&aZHklOe|{jG@elZH$?flOh>i{1;~Mfxnha3sI>lR{HG^Zbt<sg}x}MrnQX_}D_$
zJie40(Q=ukO!GrC@2W8Vf{;DxKhFjp;-9=iUS~~f`2OIkI#a<wqsQ9!&zaBYS~y$H
z?bW%$`FFQQH%wOSTfO9=_Ue?7wZBX*eC>>{Yq{;;?NA=sTKd^@Mr)YjjW;t=PRqJ9
zF}wXSi~Bx@Q8PU!%H2`XgQq`XclP`fLek1w*QaxQbt;Q*sMVU(IM=J}GiP#CgP4}d
zjA?6cW{0g{Naj^iPIF56<`X`9#X{AGV#`_@?!91D)iShEd{<=BXYt>BZ~nuzU2S`e
z*?S}<yGp;*ZgiIvFkijW<kyt0IR`r)zT-N$^|AFD!Ea9;93q|_jP+e(`+1!z!^wNq
zMUpEfZTvX%%D;<w?6tldA6>qkq_NF?dix^jUZ?-ei+DShXSy8gFYmoG)9;<oN<H;;
zT+<HjDHOSOdVX?v_-Dq=ndbJ*l1!n&ika*iS~Mm^DL?vBrS{d@$j9V*aYwz@ny1!!
zNfPDr4Uf(~zU{`bb+^p@4|jFD9=>kjB->&2IVLPdc)^=<b2OBjKR<uha71=Nes4;~
zwMUJKMLz|O-RxYYf93Nv?cMtx=BB@x=K5ld_`*dI-<Mwdk=3lZS&;Wl=cmLM49CUK
zZICG|n}399=etCXmp7Mcuu7F5J2i=SSDbz9eO2X|PDS5z-u_!sq;_`8RGnm(IH}{@
zlR5k?x;INPNIRvgpV`;1`fKh>LkpqJ#@}9U)oSA9de@kDT*B?j4UTOy<ilFN>NGA>
zON+Q1@!|Vv5BXht`$f*b58UG9wDr(J8Migf?_WO%*z#+7L8wTu_vPc0&hMGCtZUzk
zJ8gYmw*2ebKgs^HV5h1@hg?D76Zu<vm)OtWC39XmXH%zLPnL|2wlas)7M@Q`&t_&>
zJThC_dTHYHg$5BHGgNjyj-Ai$V9mLA(K+|6TRQipuao@O^MY}C()1bpQ)0hu*k|zX
zYLMIaea`LkmHdvD79Lnr{pjh--X!)$S8Xn#u-BRITX%l2TKLN<Rr=4O6rZ>YTH*^<
z+H98L5UO_B`25yUi|f{D%(FxdzsY{By&hF-%%(TXpY?sn?4)10osX8sm|H)7Y><4q
zG4*JhfYYCh^A%Ej9j9HA4OitRwO8yh53@QSQ})g-aN380l;?t4bMDz{ML*Ct>??EE
zWNqGk%(i9ilh>)cKlxr(Sh+-W7enik$;FpFk|fgjqkNtAPxcL|{Jyp1;Q1Mx>1s7I
zj-9jozUSZUUHqpV50yRhR9*Ne(qulrL*|Mo&R0T*JgaZq^Q*t?+Hx^AQmpLyjxY11
zMV5(8vU&PBz2U2u)3tfL!37;QFYl+ZeYi7if9?586-SonX5?{~UYOav-?Xi``p)~+
zCwDu47kF{=?6y08-=-EjE_&$Gd5%Fk>5{Ffz#m^nj~eNvRxMv+S$58D+pG7AZ+gb;
zf;a2JS@!evip`Uiw*Ob!$CF`rwk2gzYFq5{Mv;4wf{jyJPw_|J-rHmoI;H0DwzZ22
z{Poi}Y&`eJ^3@Wv%0GMe9i42x<d4=C2^A5REi1B1FMnv7D^PY+_3@MyRh(9K2V)EM
z`t~+Nx?gNu@nqWJmm-QRtU?=E-6Xi(m>z3>vU9p|f7->^Wtkib54!Cm<DC9>J@~aE
zDfL)jztHRd6SiEvusmXk`J+W$$v^kp5W9Nv0!vzOHlMVAW9z9oCJW~;6V<)@>D7CF
z?_2hv>cJ_Y%5}ouB^0z1yezsKx6f2?x@39%mb&$dnI~R}E9TX97e8D6=jdU9DJjS1
z3E0%x>W6f%nR<6$!O!pJlgh&Q6~6SQa-23(J(af8<H?oX0Y{%tKXL8H#==|9$M?>g
zI<H6f%x2anJ?rn9{{1%l?6jH+y(#9?9-n@)_v`JQzd5G)b*-Q1UorDRikXIv?zQHb
zdfuT^v^wosnD*QH9BtN@Gr!Z+eal4T!<^$kLbhyoEk3yI<l1|Cymn6KjCTC)R$RKY
zZ~lwl;*s+{WNzGWY?qbOdGAma?_aiGN}roPxXZBln&E}>wx){(*qtZLn7P+e*r`6~
z*o$X^=ZrrlzuEXKIX^%6`vKdFFE?dz6zOaBwJeeUta0k(!wGS@OXnK2`pX;hK6CMI
zO51a=B}|^Vdee2E85{iq9!@w}w(@>`d;TR!^LZEj&ndJjD3lc%t=F?Zc&IVy&Hcvb
zs|#~kL=PQt+7Y_>Oj7D$KL%;91s{6*mKU$%RbJntV5piXR+w;S(S~o1=dM{jTIW7*
z-Ri8R%Pcl`yx3@&<J2s0;Dv6znC^n(@mjfpGLlm6oQD?KDV<Ha{@$acIhki+^ul?^
zBUAaRRnGmkjS)2!DyhDr+I!=O`m}qtk{cF$?l}`I&)t&0R`RwS?~_B#Va<i1d;0s%
zem)<;8sIAZbN*Agbk*%sT`$k`&UY}rq%!Z4Q^|vk7Ab2}i(20uTjspmkIVefmTAGo
zDKmMhlWxmQ5<e>)=y2%7q2n)oXYp81nwMZ^n)B#-=~<D3;bLJK9EMva3Wok()}ea1
z%jBwtOk8KilMIVD^G*mHIC3F+&H0(#USGwhY|DG}W_r#Owh0$o<hC~R^(nb0Kjq(>
zBeSn{#R@%x`oP8iUH`BK1$>llzkj4c@I_GVKIx?==IuKk{qXsZ`BIO6M%*o!x;t>g
zO^*b{&Rw@Y#QC<dUD~|A<U^77Db3h*`@Xa$>+6?ay!lEiG+B$+_}zqEX%9qCvG0|W
zn3%t!%CykdBsAsG@-6E&%`^EfHOD_->Un!5?G<gZ-xt5Xuxm-`zIEx{r?rbEE&uJ}
zU(mRVD>>#+!=IU3E`NXXFHE=2?yKblsk@waniq@J?&p2{{jjM1_Oz<!i_YZCiriQ8
zaJI~gbA>OPC*-t5m1^!=GHWXD%7tQ^o9aH@ljWBGq5JmbgWQ+0SNslp#$RVX&$rTS
z(ptU0M(1ZOefQ_&HkYZAQ|2k|+VJb~MM3FBd#k2DXmEchGXHB*o}^cN@Q(i$w<erO
z|Gqcw;11c#=TE$Tv1*%y*GJ3m7E71k_sJ8?`S?fe&g@G+bZxm#`-yCj+Huunl855l
zD;pZqzTVy1<0Z>9Tlq&R`+b?k-R}<uUepNul<OzG!-P+oPnwx~l1Ojx4Gxc&cOE^y
zxS?vUn2+oBqj%~u_8eXCFllDu?6P7zlUKdDi!8i$*ITW!d25q;aeDldxV0R;CwVS<
z=QxEw5#KleK-Rt7wgz|kIk#5V?>)X%VTDUUY>3jtJIrD3FQ<#2)wen5s`o&(xy(cT
z!`<WU7oz0z5=tbhIgelEo3!cfhxp{)88Y+3R5yIh%YLxd{zzfL)2@aCE*BCNV~<a{
z_@HrZ-Zs~XZ{}xsZeFo--qoEB{jcu%b^dL58nea!Q@*AP|8wW<p&PdGe&TlgWWo4(
z^TuyH*VFm$9V<1FnwDslXcu(r`TyQr`Rc5^*Y_>j%=Rd-aF}UdpD)v4%kgG@ZADiD
z&;Gn4+j~Ch=%w_OGCqxzS-C!_vDEDFi?kM&_A5_ceC#P`m>QkqZ&@t(WyXrlzdr5W
zwCTo^3f+!<?mm-w_(Fx{-l~7GTUze;sjDdB{n3-Ta(lhC>-YS#c%PKIBJlmh4Q>XR
zjham|?8=i162v^x>!m(davx7J%nrEp@#n6OPEHf$IA?o2x>KWeX_N229_CXQ)+fCB
zwxO<@aW<3D*Cxx`0U`E*dp^GX%+%y&HFJS7BXhEpLwJ~X4Od+KJ<+Tr#emfXt%_Iq
zI=$~cS$+4_x!*@tT#wn-sVJl%|Il{diT!<wszQqDY>OX-CGUM5I8D@?cc<U|<ufIY
zTI$by(O$At=tEP@{*|UVPi?M8HB`J|IrB{}d!4N-chcfZ8czl4Ud~>{y|qhDXX`zQ
z<H!HMWe7c{A#$Z~ra<tSSBqyaniF)~qV(B5(F_5REne?=Bwh%yh*pc;+<h~y_sYY|
z<^LQ+H^rF0=({L*-|pS5j|#!xIMX%Pcle2Xa;s0;uMzWTrBGbTFEu8e6UW!vFZnvV
z@|y><OZDk1oqdnqmU>PRa9ZEJ>;u!8XSq{3-n1O<JKi1OWm1>yx;$r2>v`k!oyYzD
z9$>Fk>R;K<x%zwX;=t>>7c-|XZhBPEpBEmeVPj>+(BFT&Yk7tHKU<UgetS+obY9=&
zul*#xHd*c1&f+^O{8^e_&)KOrv)-rl;?zl-ja|3MS=aL(IB(yW`1#|!xg5!#_a3`w
zVz}_6@JxNS@PA+K?Kv5~+%I%lY<1J)&gS0?N%<SX?|#3evdpt_tJ&<P*-Q2LZkc2p
z{C!U4$oU!To}}Dlv~pHHu)<&|x4iha8`IbxDK@)qQdulecyUT$jH=|FMQ^_BY6@{b
z$Q5_!-O_A#VVSQ{_a;tKDM~9#n7?qMK~aGBm4nX$0<Wf(Z1xv)yOm#SI?b`C=hT5y
zJ%ZsYi?+?MxU=L4b4iAX;SsOWf?d0hf7w3g`x4gOr3Ei{oIWYfEm7B}dOtTX{)gGF
z+j8Ri%R*gWr@g#taAao7W5sg^qZVcSb=kl8v{`URRJ?=RRL{TPnqSP++qP|%m-mhR
zFMK+GPd)KgaDC^tHkl8`3{S3es-#=H`xWzjwh){BZ2?!y@~uLf<jQxXt3T%1S?T)O
zWNq7T%eEa^JLcwI{N43Tv2e!^o$ux5X)|k7YcD2OGOXMF=-{EFvX+alean2jiS@0W
z=D`IXz16qp9WOtqQ@73W$;ppref+LJPid<2FzH;q_QdODZ;vkX%s5@MGJnPH1v$p?
zVb)^2fy^#NQqJ#^m-A`t4L7`fMzuL=kJ*Owj9{;z>AF(xqF0ZszhRPJGUfZ!_aFTd
zS13<kapGpwWXt+X-VQm36sP$(K9*z)In2bStMWOteTQ>i!%8zIw+<I;ZL>-dt)#it
z{#$$B#@j^PJ9Mknkp0l5`1$fLx!w6sA5+y<DalK*Sol(B?S}Zh_mqS~I3`DEG#T95
z^4tHyr>@$WPVYb7e&MriUb5rg%qZJu$DcT<@I3XX-RqaXIa0x-_T1{}{W{#LO09dn
zHok~T<l6Z6-ekEwb(5P|IYRWKl7A?uXcuia6b#$4cee5Toief8Cz@W)G&)&X=hSbr
zd*7sRtGmrkx{<T9(|K#ZO8q>k_|x+Fnu6{-E^d}AKaNP+a_tlRQ!rEEoY2j;bJKRY
zZd@AYaG}^h{KG2t&r(ZQ$^4k~{?fUufHYIb>J+;VkG0aw!Y`&t9oUv&-O;6K8!6<a
zwEW1ziiP$8dsUz2H$QYcCz!J|f6AZOnGM!Se`8;7zxs@={@S~*eUC5v^w3_Bz4GxN
z%jB<OLW>u!6*D_~@7v8^OYSkX9h@d9G1YW_X}GKS5~uH%YVMevo73@S`U~-t6|qa?
z{mqk<|EBGo6L~RKjP2u!2aKPec~(9;cC){0TP(+!KTgKIis4~fek^u<k|_SP^>A8i
z(oGxZh_|6j-k#EX-t^1z$a=9oE|$D(3Y%wLT|IwS$5Bltj{S}kZm7*lcHz&RVpr6e
zC+@c(W$7-H#HEk6q#W^)cQ`N6yl`t@WpK|1qojh&mgQn=79ROfGdJB}<IjV_{BgyB
z>GvacBpxuGdMct==<eHuD-(nM-}`>LsQvfslH5Y`_uE!8U$uI#&&@X9^DPI<)2vN<
ztG{R%ox9)F_i?$@DzRxV3})139=tolTB1n2YhKPjj!k<f7zTPB{T0J&IOpz<-iyXz
z8z0J8v!=&7?}@#?vQTvz@1;Gz(p}@r9pX+2S@zk9n(VDp+;00qMK-y!(95KSah7Cv
z+QJ8FkF}OBKC5Q)!f$70Ud?IK8zM(uT^8IUrE4&C_00ENJU0!Ce=-HutQ9=A$Rg6u
zJZI<LUng1b9xnghW%K_n=hlX-^Xng)#-wB{RWWsMw>)voxT=Tu1@~N0gQM)nsues!
zJ#H|bpUJ&$`?k4i(h+LGFTG#8SzrB}`XDe|?7ZD4?InrJW3GSoXEhP^61%fANJQo7
zyjLBk7r8x230)U2;TjdZtZQfC>Lc3Pzud3%t>YJ(Qz^mBy=a56yVlK{kDm&zl8Jg)
zA-p1j`>n!+_G<p(Os}i)7xViaD~`TCZoM<|p6BK?Gmk=(!_`hAFSWR@WS?5O{J@&;
z2_iyA4!8ec3em6ckJ-1qI@Et#_7-P5<zk-C({??67r$vm#A7ub{#ka9pZ-zmujWh0
zbu|h1<U9I6Gd60e)A4}#Knvw?!HJ?ZdtS8HyWU8>u}HY@<F5anQ{0<$TV<t^{+KFi
zTV&TJ-9KR?`eIM`--ho?ee-%>KAH8k+>zsKaaAf`^%Sp?{SiN+?#{D+%W^_QICIsv
z4Tt>vv&y+Xs?Lw?cUz+^XOQ^t?}ZaDBNHqt&ma4vS1kA?rm|P)yWjSMI+^UZ-b`_t
zV_f1Q>{78u|Ll?vC)BLIPfE0MnxA~)l{xEei<8}-ce$7{dcV1@tN%Ub^1OAPlEGK_
zR=Y)>+_PRxRo0Z_vtHz$pLNDFg?UsqZ~AdmS=e*wbkpPef>xiOUln?$RhY-KDOhTn
zlklyBj<t`s?+WK$xy!TmKzP@Vycw&nZV4=EzS&y1TIBc#0lB>7=0}IFESo#k;KLs$
zb<2FIuk~9qvM$<v>KEFuT-f-XoKd8`$;Ekl^1gUFNB(mv4f$2~l1F{U>fb^E8*~c4
zN-UPxCF1CqUr_UZb9<!ok|$p^?3doMc(K__o%e5c<z9wOIq8hg+1lb4eA+FSvBT%2
zmZ;(HV>5S^dd_=QvSi6x|K+M`I`aM+1t&gDShs$U@>j!O3~i>HGN;Eq{A&H-&8d!-
zXFIOX?T9>o`q-N{Dj&FOjpn%@V&VDeDt>#ZiCN9u+@D6Se*XIZXZo+5^OV`}>GT`Z
zTz?in^EqkqKE7hLXlq-v2ItKtj?5*Dr#g50p7^wV$D~!U6BjJL{OzA;fK^)4h9`Z0
zxT9XE2YqglN!k{EcqL!5fWeXz<u*Ego7PvX{3jIjrft6RH1i|8S<1&BS%uboPzd{S
zTs~x{<MLYy39fIxWSx7FA5c|ttSq_M_o|BWb(eQj_6V;FxunlDmybPvuIf#DRqh(q
zWnz2#=13O^Hay~EIa)5eO+M#E#pKKL1>C-Fv5wulNYT8<<<onf`Qi0h&4*03y-nD1
z_4f45=d0y+&$;*O>xt0z<8fk(EoUvgon5})V0Nw9I@cCwkKd-o(_{|s48Qzesp`3!
zndS0nn-%V~8AWkPE)1E;Q+INXn$)?n)g?~_a$BD~%zV1-bJ<j1{nL8|PUkdqvi~Vf
zD|~cq-t(68g17eAm@-sbY8+dvXXBwNwmRtjXaDlnXFKK9SQDh212*!iN<Ds1uxh?`
zzRZET!bh9?zOV93xVR@t@ZuRx37_@;uf-Neekgty-nMkgetT<i(`Nsx!MC(3eQOHi
zC7y`57ar0&-~TP=*TNh3dA}Mxc)fK$>+Z7~r1DgCy`A%o{;ln8IWp7g^PSr>fBxOt
zwvq4N>UhO2ZQ*wTtNK^vywuC)TKli~fr9%~m-pY+WVR<+JdcQBX^eQH`Te8qqeZ_|
zOF#J>eWSkJf700}zB5=BJ)RmmQ|7!$UXYucNAQg3I>)QZ6*Au)Cbb6Jm`%R8`FHh-
zv%m7cesG?n@KA1%&$FvdE3a(u&zttu+A>39{>AN6l#9H~)zwv+RAep&YL_p5o~{)?
z*|Moih2@<IpPtY5Eo_TcPQJsY=&+#uL&0C`VvFk~CxWI*)H6wNR~^~n#{9GXt;GK2
zKNXr>7c<Uz%gB2)yX5Wk+gyiUXO`vP|MS)NUB~Gc)-h@qo;{A8GrQvSao2YJbE-4T
zW3RY+lm>pS@V{{NZfuvn=64H4fzWW#HQWJ5mn`CZTN0&dp0zUPJ-gS0ZPO~ZZ8&?G
zd!p#8GyTi<bv|v4;Qz8WXT`Q6heGY|X`BZVSUzMNow#rJ+a;&(Dy8@}{*X<zRCBF6
z_&R(_Sg}r{oU?IM*9vv^DBkyXr5?|AOWf7HYo=hs9A(WL!eSZXuezAOF&%ObO3pC!
zmbz7Z?%;eGWB#d@oQ8_4!&0Mq)#TrW)m(e8w0QFS$)|*u#7@y&ap~Q|TWr6W;_d_;
zxs$K_$g{TZy=TU!th^q_m3up%zg;ZTS$uC_=(;O<j?Zr0XYrh}v{cn+)=$L*IsfHf
zE8=e)e|q$G)@q)N<lFOeBrRtMK0Cy|_@>o|zV)?=T#>x{guf(cT6rol^;FLckx$)o
zW8bTpy3gywIoNXdZ!0;?<1t4e+2+W+@YiSkXX+c>Q48cZxv#Q$<H|d$BDf}NubN}6
zZ5bu2`TE^o!{nvePToti!ltYUwYxg`r|g-QhXLOgvbyPY#YLR=%XufN{Ld!Z&TfHo
zz^R|7Y%_jMt5sjQtlIjqcx33E8NG)uhD?&!J>^=u{f50Y9G85=LyK0KSt&d@-j*yr
zw?p=gN#G0j4F5M8P6xSkf)~%e)8ulve0|3*TXC)*t){1QLWK3@SxRre*(kZM|LOJl
zGaju7(flqEpvvnvxo+<^=gArmf5vT9ZL>d-aen43mzYKJUY&ctCQngbacH8oU`6-W
z;{NSh&#U&GjXb|f=P>7y8Y8cnS6kBrYW}CLSh$jJr8ZOUm7ZrywL_-3u$(i|FH|+n
zT7JcYk$cr%Hh)`|=im97{xnWK7#C-+c`eVX?9NkG_T|cxR>v$5&ol4rsq1+b8npf1
zbBi5o&i|+ikMBHkajTo?+hv#TZ+W7(fBNN!_G&(VucLvR{gih)K1wNL=Ul9NMe9cC
zoygPgVz%83zC1mn&Q!*~;douyjGxoCMcqkVo&SGrm+W)H{V)Gao;;y_@1d)c#JBYB
zKRG4WY2khT1H6Z~=tP=_-};f0;?9wNmv^ng(m4%+$IdTd@+<CbTzINNQ-<5u;OYXl
z%H`Dx3-_q~GIR5sC)1_0Sv(`GdyUxC^%^`Ek7`C6M^0Xv8&aV4GAO+zt7d1HqoS?-
zudYMtO|xp$>x*owrNjCEPHV0Gk)8kYz)SsWRUZ{D%(2sOHz?k&zrbwI6&Bw%4~zH8
zuHA3v1~|QvG__@9{OI1I_-l17>vZ$Ear)o#F3+9&=kN0a#})T#oXYtt96SF(_RbUR
zGhg-!S{bcd>E<iK8<BS5<P!g;7ex<k-@kdT5^;m+ri0(5_cOoEH_324;(Km;4(HT)
z@tU?v9%OH<TQvDq?e?a&1u^y0Ck4*nUHu?xK@7i2PW1joH<z%N8E5X5J0iO0^R?Si
z)0hLYZ!wtvUMGFt$*5iCUyuUprX2QEm54pB541IOZg_v_#^KMRr4otGlXtsM+-#fI
zQFv5;^N)T*k*@8|3pZRbR=xbTGcn_lWRBxmw}RZa@ym}hF<HE?dh^z71;4bC?_V=@
zh5Y!6<@dM0*!yjtl&4q9Blbmm*v)3?bK0rCjOPk@vR_(TcVqX*u6zgHDOuX8B}Q#A
z?Ylx)`h|-xy<EiqK{8M$)#+oNH-oe3Nv_x`!`bs^1zz8BPsF+51k3bAH&#nDFz{9<
zJI>;r;h*~ZV2XlBxvA<V<qMNH-sUhZt6orW!`tz`!~2l5uTK~?gDo!yNY49fwRPj+
z%(5AecII3XQs>D|dB3Sfe6QXSr_WO+%!!lz{7(4Kuj>chboy7>`WR}jzr8j|<)zRe
zotxQwF8fMz!Vj&HT)nS)@suyct%pUJmNVbfT5hrI+``DLB%R);-{)klSYxrWXo;nu
z)rR$%XI?(aS##x3pw6qcdRN~Yos6$O>BKQ@M`eVGm{E7Qv!L>iFK;$!G@WSS^w~RK
z`?YMT%k(9NQWLp+U&{x@e=)u~i*tQ}s7|Eb7S)TaS-<Ao-k9(0%{}M0Z<+kx$nAfh
z@_s1gE^$))rD=9<9oNKNXSbz4di3UxtjyiB6NIA^XYuIt3ff49)qJgbU@6+&SDbuT
zhW*dH`iNyFXFqUfs;F)izu((x9&Xf<HeI|%s!=-fN&5kx;8h<Y=0_Yo`Ss<**t3mF
zj~E?}x@g$s9{AG!)wyhbkM7n}2267H&($X!-@*I-t?;E&tDA0VY?L@4^Lo?NvQ>LL
zI!^RC?f&}QXTsN8T7e4s>>3*)!$NN-T>Si`Ri4i`s?_(g<Em}}fz6LSS_J-_n&kWG
z%H(-dCs|0#8)z6VlZjGiF})XNRT0P{$-2Q`hR4k3s>rVPm%Nkw8x+2o^*q@SnECqj
ztiLWwY>)qL_5FUYQChWZo3MjzSAfa&Yp1=_PW=5jZC=7^<@F{Ur~jWW`=69xaB#xW
zX@#G%K7F}r$(DX2p;mN}0H@TM&1a9Or~jC=<*vrN&L!&<Zf;zh)LMSKXv<>b>Ss!y
zukLO3-}3lH^)80ff{NRm*T%0&=u4b`L+DU!_`UkGu`A_d)3fHwEjn{S;zE6!nKs8{
zm)}_v=CE|jzYz(XZFcpCZrz9FR<(07Qr|7f`oTN7y8XxEoTfrWpO0I-vVN{w!Ms)4
z{!@iVZ&W;&g6u=yh5na*>{<PWTf-$(Au3ll@tw|=z0%Az8s$d8X~!1UF)d%e`?<@n
zwQH_!Fi$dkFm+R`L+$sI%vtx|yZ`K;WahAft)lLl|4Sj;lMUu?n|FPz^t^O_)wj4u
z94<y@*Q=+o*`4$0OJn)c+_mzQb?k@JFD`rNeR(6Nf9*<8@8<o-pZ@;Sy>3b8%sojl
z7j|#&37wKKhwpd7JF`crzZ5?2kU4rZG1WQpjA`rCO3wEl7cE!53%h@g?bM@vFXz9V
z<uEPplUi}_>bGC7DwIrZ`7`6Kj(B&pzrz9rPEUrndOx!kM|*!(TfS?TbzV`o_vzbw
zX6_p|=`Z;^IV!gNc7pMlD9bWmo|CU?=Sep2WD#MNsrH?(>2bIIv0kxJu<kDoXFY=>
zrx&e0c5|(U!L`}dX*0icb|2Z{`*rtXc3+9dG4HP3l}S5wCOmQX6iHFX(&NdMQS5tW
z&O4nqFT6%OnUU#$UX<sXj8kDkQ?+vLKjEzIW}n4%U-Oc{lD~cl!L=M>PA=(l7f9a?
zh-7`F>{_E9VmrxGa3-JRuf|?e$@!0>h3l3*5Y??wz325#bVc=ns`t;&m0frCJpCm4
z#pyNYm}Hj=6!qp^@;#?%xq{(eMc!WLm}^fB_GuqBIrb=k;pX~^%in6AfBKfhl*?qX
zIL1wF55snbMK(<vQf7+mi@WlEwQ$O#vQxiv6wYM{v@Xkf&vH#@+L!r-f=}YJd`rZp
zRwjq`K2yAS+DS`vmSODE6>-YqL1#p)@0o9Xupw>1&O*f)i*y@3&FuQEO|IF`?=Fr@
zsP+1s8nbhy-jq+z+vY@kXBF-aaZQ-1#2xHb`_IX-Gx$}&a=nymbDVD+o+-Qj{E2r5
z-v&tU6$<w~@vKXe{qW1&%%&(`maxbfB8$0-`k48>uUES|)z(ak`|GUK8f$UjY+huV
zj;6r(_WuW#oE1MjCwK9p=SGhF0%EcMbPxUI<IMh|YGxRbFT-CgJB8t0_=VVBrK%kw
zThkY(MOJ>9P$N6>*Zj#6Y-fI6tmNBweOvusZQD4f5|8V5bWTUzJsgpEAVJA=!PBKz
z{@rtaW7)mhI;zp<-0z<=%j`|;Uav`6$dYETPhq#(?Hl*>&F-x)T3MRxZPg}n+94&%
zQ+ImKt^AYAVzZX5ZZeycu=M=FGrOjHobo+kSAKAIv2<|6B4*v=E*qw@-r|_Q>dXuk
zQ@Oy~$6lIPU2Zlt_{{##vAE@-cu?|;$F%}e?kE4V^E965rvA|C(1dr%YnPwuvAHqr
z+x_WvKi+M7_iSlZ@qDJX@aVUK`mKCB3gW*Xl{(i|e`LmFwl^^WC4ba3lOlQAybE==
z9{V1-+vQiD36sRdLsJ#YBGtnxvyR8cypgQfl<phG;;cK<WS8k8O}k&;db0v6Y!^=c
zlD;rCsB-3gsqD$eeU%?iuDRNK@3Y$Ttn2S)W`x-`Uw_DOR`KMMe_F4$`<6dDv~uB#
z1tCYz*NVT_yu~Yak>$=@Rm)TS0jodxEfJZr*k`rLss~H#g<sh&xp0Ed@XaSNgDVQ3
zEB4!Qx!Wv1H{q@Q+Ov-*z0EF+-mo~@Fl=9O-jZ!=i=T%YKNP>FKFeaxQU8^%JUB1D
zeZ1z>w&%|8L_0)E%#y!a?q6ebVRojWTpy3fuW7p!C8snPaJ-VPbJeZ+{>r+<!rkbP
z)g}#f#f>{6Ixco3YMLz5Dex=U^{UOtJ-bZxVc@*D?Li{@&L-AWEPQd#<>9WvqtUxB
z)HZah{%u;Gb+RyU_t&FpTAJAkb===NS)Q5Af9UJ`Y59KF<=b=H^nT=@`TAmsjbYpm
z?`u<P3KC02B$rH_{)myo@S*;yom+i4?0>zAznPi+(>Pl|H$dBJwdwM*xw8~9RKF(n
zB`)(cKN@)G$``)c&u(#{44>~7ESmUo%|Yw1-+%c&uX(_GJ;H4JjsUI5^q;kl-Qy2^
z&{REjPWCj{9|l8pWwD2`6+d(Ax4nqpyUiit!{aM0sr!}INr;)eo4hIZ_&LcA?H}vs
z*{09?V7TO|fBJ)UsaYP|>$f)FxKOxQ_u;Im+-Z*9clYgfII(yBO&d8Y?msrqH*C;c
zx?|y&nc=gx39Wh_k#W#_g7Mq!XC~Wa#@Jo$T^CqrTqbzY!tHNW@1mE=J0=IsZ=c?;
z63=a2Ewxnb$#16#`~IgtoT_^11IMYm@t#G>9QqTy<||(k-_dvR)*sIO#Xbw9S6q70
z&6yweu+qd-;Mg^(N9}KPIeWYKBXxy!`ZiWPX*t`HtY*RxX|85}^;^oX`Q`=R5_X81
zB~J*yrX;Y?;;791weJ1-v3|+ReWI7-yXJ?OvHIP$>9^xLxast{Ey0gAJgeCyeE30#
zyP*J2(|3D~SGg}#X3ENJC=T8s%6dHK{<Z?!jR~KBF`2uFNF_zFtvp?>ZhuE-dhqMz
z?@}d;oWjp6?YOe>$AdQA8NRoaD=w&gk1hSkGEeXPsl)r~@)l>k{d`{QOUdUAPEJbq
zRRfmXbXI@v8lo*3nYBr8cSQC7-~W1Vf4y>di&FoT8>fF-aB9u9vA<jK<x<b&dtCza
zcShcO!&=%Q?krO7Shyi}dh)XMce=Jkb<R?|``o;$_;#w~%x2L!^Et0~Z{9ksFEi|&
z{712#O`aPM>(`#Xoh8G<%0DAz!(Hc3T&s^UJzFgD>b}pD{ipI`H@4q+6~B4q+KHcj
zHw&k)KE&vna{pb|{>E#un>7>m%*y3|7Lk}cC8>dBx{_RjRqXLKZO!Y{79ZI;ZO6I$
z&+a_Q*foFQiSW5>mG3qen15G1bN)tR&YQcOTPqEw?-0Ip_?eF7@9k?oI$jY!8u6rd
z?}xb;bqjZMJ^SVr{Z;4pGnr4P_X!-~whUm<JsYkaaH{f;i(Q~KckKr;k@Pq1Og9yC
zDtLZPjQnIYY5%37&1;j~x5l21WP3ZObyvB3TVKnu-~0OFr=O}jd`n8XGM4vn?;kGz
zRk~*Tc9}2!^5LD6FYmcjRr`3Im{(`x=B8Zhd6ON`?9aY}t3&bpq^@IUgZ6*4J(<@3
zd&<Qdr*yjwSj9fgx}|k%-(rrPn}vn9Y0tm9)39lt=hbZ2zPFzDlRS5L<hA?mthY)2
z@>A~i27?&S8TU003fT*9eElj!e4^cvYqmEZX}-VO=5Sr%V`==t%lTV3Fu$+!Q)f83
z$!OD!k2jxJOquJY9vFJ;*{6;Tt2bRa#eFsB*tWatf9u<|$Y%O2tB_gjd)xNf`XHt0
z&8uhGaXm7Pc>B;rd&Nar$Ap9_efF%p^1a;4bK7_v;+4alS;T~NJm1PKO`0qArDgrH
z(5{+QQ;k+X^8R^t)BXqZbWhFkTmHJ~&6B604;f#zPYF^ydSgA`w<8yQ_U~Kb6?9yP
zW6sJtt<IZQ6*j5y6sFDnWK$!zCH!*5j@n%tWHUpiH^hX0@huAOe#an{5H#h>iA{HU
zLVrEn#&+Nw=Yz~mpFZl|Uvg~H9p`nXUy?fa?KkfG=qEI(=<tQxwNq0ruH6vFuwqhH
z*HNDb7lpqU%BjDw|G^qGcV^JW@K0^YC%K{}uD#4Way4sh=QNF52N!%*eRwLWtUGKa
z%hp|GYlE|mB5yJ3F1xpAqk2^2M$we!$&d8+E39I^v}FI|=Q+a44<BDT-z;4#_wh>p
zts7rMc0T(kohmH3p<}`}USCy@=XZb3lRR(#^08A`t#aqlg5$ib@=CJ|7qI_*TPk+E
zGO=>ijhty4<3;@xT9+?eI(h3(_tk5Dy;ZcX+UGTgui@zaZ@+{kH?IiReEGX=LYsKw
zJGNJepLbP;6rD-c`F&JbviF$n@3@`2pPieK_4u>-e2%NjyI5WxKBHXq@6gmMtM*;J
zpnfC4v-j--kJVHDtA{eI`fnr`d--<jjAGdi3AwWjz86pZ%bvuh(~_XZ^v84G>u%Zp
zlW*2Ct(m28Xp7UN5dK`Tw04W*bIU`n$2Fgo|5NM6lX6t4YJ-n~*@L!g{`xwTjs*nz
zIt9K}_??R7Y!O2Pq=O|0pDhyP732;&Tf`E_*&>#(vqg-}sB^Z62^X%jMI51Li}-@i
z6ak$mlBl1gpNw%jNSc0Herb_D*0VtJ_4D&m^$YaDhkt;N_5iaWhj~Dc|0vW4AMlZa
z_3V!#@PQvh9rK~drSF!XSK^kLld52306NbD<%ADIL!^j+oatexU}$atKhncU!Q9l?
z7<S$V@&O+fX2y{7JroEZ@X@=2J!JB2A+w%_1`pARe2gz`Ll|G~6@Tf$%gCh2C{*=+
z?{_5*uW&}qOB3~6tvI|U-s^7o^2xRT`JL)_|JQ%5)y`IZUzhf5=HE9nZ=U25-h0hh
zFEe|GXapmla}ndtN>|2Bug>>0>|uzDtILavvx`wvi{%jF`X_xn^%DDT1%-kcFX}5#
z>}t@RsNr)?sIw@f{V;>px&Vd=@(dzEtX$onJ~92MsC4~T*0Q^U>50x=g=-9@c@11L
zY;F&XP9B<T6RWVT%p+vpetE_<3T6xeE-o`Zms>d85`4qN7<q`{)ie+54a!=|Cxo~v
z*w`Hpc$}{f++erWS!u3IWyPJlcX#T_3f?IYkLEP<Yp`a?WWT_ud_XTRA^U*-Nd{hT
z_Yd-!cXs$N#9DJa(m!mxgZI+iORPK&i~$@RJkAT8ViK<<h%;zeKbW~m%Hc96&+pTb
zZ}r*z4$MEy$gs2V|AoJu|6Exb|MG2PX?)P<H_gDG<BV7Wb7K?ZEUv6O9{eim2ZYl8
zp1vs5)v)-H?p+<l0B`Lnhu^P_W)fMlm2sLzYyB5R2R#9Gl_qJ%#($SieC}o|J@d&R
zJ95WjWr;SI2mfx(mpQ`9<1}}-`uX{ftPVVQXYhW1xS7C=t!MQmudVa5sWRx;tQ`^g
zuAiUl&|m&EZZ{^DO4pVamPUpR#td&5H$DD2)#3VO&Of(*NV{cz_*&Lv&6pElbYP!=
zw81Op>(YrY+1M0fV-D`S_doZ?cP?=bmI!ADj|R~jVoZns@>_GU-Tt%H?dpBjM~ns!
zUAM{$9QghE>-ou=s}8SuXt3gW{hj*hGu*FwcsfRRKkk20-(zG{z~5jlKA)q(+oeOC
zfrY7+;n1NbhWquO{}eOTum0bg73uWv&Aa^)QxnY!8cxJ31uXx*U0}QY+=IW;b8ayF
zKevF<{j0IWfnW2#)t}Qo!R@q{@&Ekx2jwUJ$G`ud^mG5V|Nq~492DjHo16ak^uzzj
z+e=y;Z2wm*_;pjXa~5x@MV3>-|JPXz|FRccJ$OwZ{P_Q^TFSbC#!9@KUB6n22Q<tM
zf1oeZ6wpx7uy(70$Ar7_d%u($23Rf-kci;!YxuLPJRoq-p8v_ty>cfQOSdZosQ%7n
zTCDc^e&y3dg&kkl3qBDRVT#zbBckfjA}fZiLM#=`ft#~<zx}xTh(Rt-LZ*|8ae>J%
zrkn?QJN9#NKM`g65D~fSkJEpK8jS--g;?5}awq&}{rtc2|EkyZ1#t}g96XM1uYId$
zYWOelPqt~&p=PE3rZ@j5DETwkm<3qec^WUHq*Q;QUiibp8M*bbhZ4j$Y}Q^?{LgT~
zjD;&M|1$4ll2tSaKT>a|!0@24F}MEyH;xsmhu+!GX8T~Vkmb<Y!0C7O%U;*(tOzb@
z+NJc*`OA8(hM3rx0KxsoSwk1?zrH`;)!+s*&!M?9o0^X}y}93RGC$NScxUn2x?@oh
zIlVpxulfXBjOr_2<}PoWyVT;DPIBVkX*CM5*}F_~N=~(R)xOU;@wl?u??KJ1AUPr5
zebtfA8npMn|Fhz*m`^tE@-4Dre*H0O_x!IcQ`};3&?M2*Y{o7w(RUBx>$iXVwM%qk
zp3WxT0v3_E0vDGDDkd*2j^2K8aqkOB@ri%k&UZeN+c6_$$1APZyzz_Oogew7&Pvue
zXFJ{Zk<stx&+MLlDOvtmUTj5K7{^{-<%Jb5mO9P1o^Zw6an_8*pBNjD=_pqyMbDab
zz#;I3#4(%xL`9o=%eV`dr`$OGJ}P^)qI5<4<@^ojwo2()sLs1>SnrX$Z_?W8bIty7
z^F=a`N6tK_aX2Kgx9rmVjqwNh&%QoV<HCJlRo>sS)pmUPdX}a^&i|vto8O9`$=_z?
zRF@_=dn(5hV_(sByO)3edAWITd%ZSENdEBkRi;)$%cM>hZ%OCodvzB}9~i2CKOcT~
zLXq>Xlp7!2{w{y^ukQo1#bY_%mk|j~iQd=Bu7^EhPdzx9GpV+$QZZ%fEAfiimeDnN
ze|GHmi_=>c7QA}VjEz%HeBp53V`rbZPw%66?AFpPJiXO!ixysDeC)!a!dJc2<o&*V
zf>Je_av}QjeyKEEe}DVLL0QYUb1N3Ddiwj8?DO)oLTh69Dt;843Hcn=`&OsRG$LdI
z6X%3oZ(COLN-o}bfcfFdpEfh4ZR?9C3GIJgX|{2Cq5bv#?C+m>mabOrSvXNMH~HV`
zXY1KAqk5_ztuVIhdsDJ)!;*E?8du}yB*;yO_^RFY&8S7h>GbPItkS8^t2~sy`c&y$
zoz?%kFvf~4_f_Bdj}2<elbEy{{nDhjO8xemo_fxxsDZsj=kh|OKd1ArGS6_`WB5_&
z%ipIT>g_5U@-2g;kC?MQcH6vp<>A;yuT^!mAsccJNyN&##?&r+QBrWp)7Je`gzMSG
zmtM149o66oswjH7?5O?kxyJ*7Urb(ZvS)49`TXj;R}Red((~BMsC~#IVc`#rHS=~H
z(5Nfga3H|@pTpZ(`8VgRfB5fqThNZ6RpxpV&LsCdO1v-T9lcq*)n8cV|C=X=9Gd&w
z)V=MVZpbj-tXL=W_s1m5R7+;B<psZA?A$M9xT{b0gX~(TbyxcrZ9lwE=3zk1P2*sP
zz=zxU!sZBMna}pDFlaw(P}%qEn_leJ_nIM-q>k9hAKdW$+L`$0XJ=*3OuoT&k!6X6
z%T}Mw`8s`ZKkLr?{`h_R>nHZ59r<S_K4wdrncHk{R2924LVmj9P4;fjWA9(@J@fHf
z<iDT6x35pC4_(O8HSt!}mm|!dc}2gyHcXi`sj<ZK_-)mVS-;l*`mAjJV^i;6{^qX_
zufDv0N2<7dl8W`J;1@@NidG$APgAvUuA0_;I(okGl=;_}rcLa9_2ypb<%zy?^^Tmm
zIBoOcr3w<$jh>%*TWd1G`NpFU4+7Ur<t>Sg`ss6;XYU%T%e89VOHM@X^gnsJQMBZg
z{F}m=4$@b}cYIzG@9(|y*0Jc)6<>^-j70L^Zw_=V{-<}oFS`2A2G6>~Pfc?7N=;7N
zccpAuP(j3}=H;KGbPBcBv+eu2Th*`Vo53}M8!tsyd&`CAd+VuLZ}e~F*ezJ2DExmJ
ztIH2PZ6P)9z1KX1OspUH_g;xzTbFcMf^ET<D|%e~c^6W+S01cCtZlQ;?3jx{mA;GM
z`>(E(`mSqFTC6<V_x%S!<0Q-7Hy<z8X1zCarnk{b=IG#k;_}sLMS?YEI-A_*efFOE
zZ14MH_dRDeWz1IzKd8|<H?m3d+Pf8QF`O0|U6bG5o8s;Jl5vt(+QK=-Q3XF=RBke5
z|I+DG#*`?N&NF%amk8_S;__|F%#Y1KJiF=4K7+c1zDQdu6V*B<-`@D24H*f1oSDx(
zBchCwPcOP2`<83N5qqcjn$70ML3@8_Y<Mc^yf5O9+pDRoC2wu^h{-&7*hf*a@KHW%
z-iG{{yG~o=8$Vv%He1rk-QU~Or*eZ`@z38??mgeWcs}i2Ug#2>?#S^jW_puO`<#T@
z`_r<I?f0*m{xEwA+rqcE4HeIwHsdd1%;1d|GmW$7ii)gV{J%7Hh53%Nn@moBsc<fu
zB+Os?{Q}oae&2H&l!d(ZT<s}%ZJ>Yb(oLB)VxARj28S=)T6(?AYVY-V4yCsqD3#p0
zqZbyDJ7?R)YnvaL`D#CEc<w3leMOk&$;+NSLF?Y1Hd44bFG+lcu~O9n;iO+_dbdw`
z2Zl{*)I7m%6aK<)f8f+_ks4(S0^GBk3*S07zsNn!5*_b7=g;Gpy-wNF%;&Do4T<3`
zt(gDgLdA+*j6U{{Y7VF0T9LFY{p1H3b|>wg^%}dmu5irbskfQe$;vBpmG7|pxdr<>
zPlW|*&B+LvYiqaabn59Jop0xy{`ge-#0lfAzl(zt<G#tp2o--lI3t@|Z)H}_J@#J_
z*F$uUTOJNoR$qD|UA1;S=UUb0t9U#OJtLZXo1Az1$(rzF_1eAD^0B`=;p1Ar+a)Xh
zUF+PtVDsr;rA0S-@@I8+h{yhVRdw8O38!vaM}hFG#}Yj9|F;BdIV{|J%j1`s%Kgu*
zo&H6C!p(QF|CXuaT>m*^chHk;$3o%v=?0UoRBzk=VUO*?$}PQf_>S%fVoGm4n{o15
z&aTWiYmGIyem)X?``~@z^QW_}F@0WoQpoPul7b&=!Z)omdEx&rq9aJBl3A25XzN0w
ziWjEuC#CPxu3LHH!Py`+1A(*^d>To)%I|&Fa@}73;nB>s>t=tH3Vv<E_c60$%5LY|
z$_HF4_MOn)|2jn6HS^D#MgKf@l^g!y^>g{U+_mdv)yt_<+P;aYY}uOS@zUx(i?8_w
zX2T_M4#KNMPsV)~;?e8X-=vx4T3r4^%FnNQ8B2=rG0o0)gCl(<@7N7LUGllla&1ca
zD{rS;ayA`btfJ~KU4DBxOe3*2`~Aw<qS7}aSHHipd)hvahcPx8+PD2DR!rGp|97L|
z>%NZbcbA3U<+xc{KTmH-d~#B`+l{+P7QDanc6s>ppZ>6<sKoBhKBxTfuPsLo+wGtD
zTTcDjb7Ma3gr`@2%U8@jbu++nYi({a&%Xngt#tJy{_Oa<q4nv@j=<AQVl%SYPZYZe
zOjehXIIO4t!{V;hpX1pTF|)R>%$dpZn78eat$y^ci5%a;Ke%oAxcgh6aE#RS#@+L|
z?f19J+jYJVE4{vLZg=UaMD|$|1y~CGU0wG`yt=XOQ1IpcFV_D`s!N}B{1?cwY{@_M
zrJ#NG!V^jhS6=xu_ZvIMR{N)2myb_=XK|}8C&xu-*8=tJi3K)nUvE4w&#}L@g1h8%
z`Nb~3HI1t(S^1tmZ4Ufa{O>8NMTkM1{wAZN<tE)F=O)TO+OF%(yTyFw9;ag`L+_dU
zNbg&w^WuTKR`sW{t@|Dwlc|@vnLFvv4^!U_cand0E>KZl&c*ue)1>*KpC$8t>&<$6
z&DkLF#^38lk|oTP4!#i$v2I&rAAMc5YW8NAoA&2dU%auPzEAb7h-cC^pH1SA7kpI9
zeZ;%}xY?&rtCQO{2TiTjz7VjL`S0vH+3xE-A1^L2IUByMdc)qy4}V{syz8vyk-0ND
z?_X&X;|SUIo!|WI69v`lYOd^yI+p9Fz5Z$SqTXiCb?*HiPP%zl_mt|bkl&PRyh?oQ
z(>0<ms;f+&Dc4C)ZvAC@S#ib7#aBDGHl7gr8R#SZeD|hVXZpMkC%#sZJrH^Frrx{c
z_;czWI=97D=KL)d($BPCyU46|)~plrt0%iJZ0TCHKCxlD0`JPnn{P<8o;&OCmhaf+
z#Y-}jFK|_G#?34$vAPq?*?!$4G)#9X>%Cd>IiCGLKa1;UPR`qQ^1>_m--dD>C&W$c
zyf%m*?=_psG9`b{hqC?AiGCU<>Z4X{NVmQhru)H3tvFe=+I`oOKL?Y#KmUH%%;>bM
zwg2;CrmZ&uw>(@g?DnnU{g#{)>hJbiKAKZ?ZLWIBo;x+ue=R-zI%)Eeon_|T?<>x3
z4V}I*<#_Htx#e9w+bcs9TcZ!(+4qyz`8#{C-INJu`L=7-obzD}4NFyJ>zuqlcl$#1
z-Ok7DE(9IxJ-Yc_-&N6-pO;Jw%}P_VI?XK~a$o7{%7bg(%$R5W-RsbVf0L87ez@<y
zBJf49@u2SE8T-~;I(D;LU6?Ora%cJcs(DW{c07t+mXI$xZA(e9_}4d!l})p_b}KEY
zdEfa;cF9!V!#7V{InVL;^*qrvccqq|J&>i@oV0O+(PQ<Q-Z#!Z%BT{KT;~v!(c=9i
z{EYmsnt6IWrThKtbC=34y|cEaV7F=Tv58Dd719CUP41tce6*1Lqe*bSalnzzdwWFp
zM(qCi`n>2grQV#Qv;H34Eh)tE;;!m^`&+ZG*)+(0l=fQjq}ub`iMMPW*>hU&Wo~SG
zc=<?`_2fv&ja~+4Y!dHx<h}j<Cg9P@dbap3E9cp)EHbWIy5$d!pWdl&I%noSz603{
zy%g?lt9z+C-{n^P4av817S0=Ic%C`yv1<R0JonBsmLH1}N(vH8L~pE9IBLUi^UCx1
z5CPMZNm5HZW%*=cKkc{hEML@|6~4#kTHNWLBU_?$6rUDa?Fz2`GAYXZ=FZT>FPzJM
zo?T*67$luD+ohW6_qGFprsrng^nUX)C0Z|R!Q+RUI9)0VegvK^JGWY1=S}~*xxCCJ
z?+@@z^k1o#EW=k>pyK^gM)O7yds}Xwv{qTL_;jvwHu9VG!Xpf7zv?Yk(pr{(ZQ0p}
z4^!QADokW<uQ@%Xc+bp|&U@42Z<ssw)or~Rvb67N-O-AJKjQu<KK;Hx-*Qs)wV*!=
zW=g^Tj82&}t@V86X`)tE8n61w@6?&IhhhvPUx#-~mj8~K6Q!Zm$p3czXORxg&Ra?j
z3pu1xUaeC){c_Tq&s*Ho&CYDkQI9aUd{z>9gf%C0@)}<8o2^^FU%e__n7!Kh!`$jS
zGhS=`@=p~H`)PXN)s-H>tM7J2t-IIRFL1W^@YM9Eofl<d^zTi3_S$uMxaOZL)|Znq
zf@Hb4A8X{x8E3I_PxkmUZS%5u4;<F4T(Rj&){z|94X(H3H%Ms~s~&OCz4!Ny@a7pR
zvGJ4T4h9OXt^8he(WCPi*Nm9mSC(9P9s6GH&g$eelUc5g2ReUG3S5|?<m;LDEMR`n
zrI!M?i%s@ETzJi9a#KZcfO~$wkHxi<XFT^UdbMR*?AG~iy`HwqiuV5ub7{~y*Z59(
z{ZGT$)vv$L>s!9`NDS+}jRFp}+NYV9heXU;FaBIYx2E)6q99vh{nz?9A%{In4n9u^
zPN-xl4;6e?|ImL+Xz`0}JFb?!S^w+o0c-c#ntAb`ylZk+{#y8Q=L*Kw8_r4QyIKMk
z_3Uo*PAYd!c`@motC;kpBgNUeTHT({F23H^$53$pe?!HV=E6nkyFTezc-CAoc=haG
z>7<0S$5${+XDD6Lvb@4o;&;)4sXA_}=S$XcZ<_6OYpIs}si5*}u~Vu_OP>Gy__8EU
zeruG%ud;%DVMdz`ggiUy9<6$zx-3ik!`BRxX<=`gwWSZIZM|{y&E_jx__j}LY+gNo
zQ{B}`xmpK(Z9KVnoT~0j-6Qlm;>B^9&8u!bR@@`P^Y`)7#gA?`+6&D7y!)VBf#~I<
z`l(-<--SEPD!#Mt;!egBZyD<yA2l=mUD|jltIzyMtNgt^e=A&-WkT1sbDXL&554tx
z=e}F_r}nI!Ev~FxvGhgK?j`M4T~#bjNXXBVJNzbCGXAz$>*MKG%OkcK{Z%oq<+k6?
z<b5}{wDIaZo=BNJdl(M<H;iHUy>WJ~Rm!cky>=N6a;q%odPqL>I3W93>)qRfwz8AM
zHcjN&aV+@v@oWoo9mm(PXAf*wxy&MewB{uTztjBHzxOlvZtU`Fe!N=6-|6r)&mLpe
zj8NsA!-n3w&Ev|atP`H(arDWHeV&Xyn<C~J7<^svD<Wg{uR8r7TWVftiBFp><N2Wa
zh)luVuP!aWt5)sEyxVojm+i<y{rkrhJFlxph#ce*wKU7QFiE2ErriDDun6&~Zyc8S
zs3+K7zAVG^Rp7?wlUB1t>h!OROyejq*ioRNqmk<<Z?GnTvu?k8@E48t30oeojQjXo
zU+Vt66$jV8-LJS$;Dd0h_k&csWsCkyH0w$+^x3K=`f!5yI;#s22M?Xx(pUNDZf=#t
z;~O8E)aN{^JI}x9&NBVNC9T({<cVB#dyyF7mZ@%D@~%LA(&Mu}zkGh`trb7SHL2j!
zL%nKUr-@4sZ|AxBcH2p#K>eh)UFloCJ?cA}a%Rh8Q}4+?&)>e0`tEZ$`|d-t3?%Gz
zG`<Vu+<i7PJE<{WN3Gzck%YZo1k2B&&IwtcOGMYL3U6jEQeA$#`uDbDTG{U}2)(_r
zHerUFXr%0xySwk@+|n|?|ESuk>YL@-cIL?$?4EZ6!!nKL1dBQ@oKzpYO7rV1PuoDt
zj5=ZY$PnwdZK5(}Kj&;}Jf2m#<#Rx6eB+k+;UCI64m(y(J@4RhNbT(QFU$=YPu8q{
zH$z@BF1+scjQn`9uq!VQ2gGbH+cVvub@uh!=}uPb#8RiX%cXy5*fJ|uN>AgB!>)qK
ze`cJNkJfx?DfL{sUvYl23+tie?E#wKS2k&V{N(lH%iZ(4%Z`4R?rC*9;e1iX^11ul
zd4-Y^_8sa6B!U#ve+E?E(vRC@^m^UKUyE)DMX5=htXQVGW5HITNB1)Agf!1fyRNr7
zFK=mdAYq$TRo?3w<wMb_%J&azJv*XMcR8Q=*P*#@7j)d1J4N;eUrgVw<(2=EZ$EOh
z_uCj8)K>o2sdJOS%$!-Tw(79;S3l)G-hSih=D+9FB<^R%U+O!xN>*G(^_u;s69xOf
z@7>y=7P7F;?zf)tK6&R8T{WAIJU5tcWytMwD9>iQ_cG&M>qU2|?Ovd%bNR1=L6t~z
z(k{8BwQrm(!#dKhFkU*F9CYPsl=a7nt2ZwHdHDOTYdj}Y*RQd-cH8u@&+>($a`z)!
z?(k1<<+*=aXzR(9m$H(Ax3u3**?h}u=j>Y|FVp!-X5{?*oqL=?^qhI-S&pSY@7}xf
zI`-0;GU?R|);-?+xUKzl>Bd#j_VtDbtc|~4c=gfqo9yHq{qql(c)Ix*d^l^~?s>2z
zTlS?a_qBHcn(tXY?w-dcl*=xtEhOG4`g&ea_TBBgRo&ti`~L^M2oZYCTDe@-=IfM=
zLVB&2jH{2B%iWo(#XJ9o|Ivq=&K>`A?a{7HUuD)lHvT2$-1c9y`*qxYe$Bl{%>Q}c
zn-#I?+_Uhs$?t<s+*C8(xyL@^n0ZK+U+f3Lms3iv2vpVFx^Zk__l0-IEX$^El=Y0s
z+E-V0cgpOuAC~gW$}KH;q<Sr2>cTgcKV$x#zWc3lt%v$_A@<Te{6P^xvI)=n^?wE%
zFPQsx;)(R-*|9z*jk|NCZTzhErhhh;KP_?MXI5;X@sop|P3bbR##1|z9y^P9&1nzi
zJ!)^fZ+*0D#{T6tb}MSwYA2-MuVwOBu;9y~vc(R{v-l%EB|lON{93i{qk+9v%HOP?
zUnc$$Gkb0nF+aa2B4#d+-=S|4v;$bLtp5LZ>kEmc_jvAS>~)bhcyxMs3fm#G+~#A`
z56-%7?=H-G!*s8n^iIdG?%x(nDN=s6y7lJEmx+^p%+>vv`;cAJ?a542_4N6C+bou{
zCjLFe%@w%P#&S}4bKuPGAIqk3yp!UcCw=pzS_zZN%{N<vRxDCj->yI7m=}xsUrE-_
zmFJ}AoOQStI{n)Fr&>q1crkXCGxuLKy=Rv{*+e+u=INUowBBY*E&F{!X_Zyl!*?uF
z*Hk^bm(Ty3R@Ys=Xo_QKrPx&gYjM$O6(!D(=U)5!V)gsppxKKJh30*-O|0|Yv42mg
zqM^U__V3QGdqiE5%#KHVE;W36dcum7*KXOZC(Q&nrcYdG^LXER#!lI_UE8Glc(|W_
z7MHj>U*3q9t8~qt=l53xBp#l|w@J17{KDIX5|Q5u*Z<&IYq`e$8tXQP9c#8tUNiIN
zx``8%Lbcy-UH9ZrMAq3?mn&|?o$h-oYS`VPu_ft2qQ6^;xzTk0yHk!=^mFfeF)L)#
z#S`-$bt@m9Cw72Icd=&{lfn0&;g?shJ*6r0{%0ch1aXg0*Q=EY);3-H`J8s_(x{uB
zZ}|UTP~WGGF|MkU3m?60<@?$GK%`}JXwFURIXmS7UAFVQ-M(k?0v*YPCxhx%?^I3<
zJSul9|GVtwT{jM&U3Tw_6hn%fchT1Q5i^n^-e=ud*VO&H<NZ>d&U(Jm?oMwt@7<YZ
zmPs0KEM`0I_WeF(nzg`;#6?EtA}{CIGBBT<d6C15=exvCZr66M2oI%m$2On&rDwf!
z%TtbYiI6CrzV{JElVp-Oy5^N%x3*WW)Yu`OxWMLY!D?Pp!L76H7e`tDInwy=#Ll-%
zUn<Rc*%-#$&6ne+e=#KGkheZl^ipSm0?QSNd)y7A?mTvUp;`IW=>5F>NppWB{#p9u
zjoM^^FT8>J>R;6p7kivqV!h|-jjk;2?m2~;(+jK>zc}+qZ{nYrB=h}l2e;Vz(-QOY
z)6VVXzdI*xipyd3r+)0eZ>(ZXbN5d<U~t^yR(fxm#p@Z<J%6b``21GvZvWkN?#w&)
zwlhghz2YZY;AWK<l&fVrS%K%_WM21wJ2!at&(Zl=eC=6Mx>9LFoM6<t(|;dE{qYOi
zd}NNE>y|<p&kes<?h<;azU#sj#>Fp!wv}A(7u-5St2s5U^Vx|I_xU;hT6g7#CATg3
zz$Y7dzS&y%QR@BT&J@opQ#^VXy<E;$oHKO}Q)PLR(%;t}+4JxHeYxw>%<eUF^v*fG
zKd`EE&DP$fg<Si)!XlSFJ94t;Q~uQ57V?KgTzq(@iTt=>c&%WaUV%XTk}0nZujQ<$
zx9{LPy4P^A^)bWUh6gTpF6lQlx&5%oHh4#Mk*IFkZwrw*QD4?cd(Do2{rzt2>kf6U
zJ^9u-Madp1tMjVb_6EqG)S8}<vj5GxHS$r<?3N@gzJC6g{x8cJD!*T+9e3)Qu;yDW
zufd`_JJ)EW>xGmw>P2op##QjeS>#d%XVE*p-NzQa<_i;h_+TrSZv31BvB4SbdOKqq
zPqv*ml%9E4=}%bok3Zo`vL)Qh<AgnCobY@ewx?!QUMYk1JZ0U)>ea~$w!E=jFw<sb
z(bTwaHUCaNikS7x#O8_OOrhTY#~!%zX5MyXp83W9vMt+{vdW~jM;#k?a=kd*8twh~
z$l{{LV5t@fakbFRSzoF*Z&8=|vd_zDz1o6}TV;~>-kka4<9p5160B!VtZjHI;JN3j
zL*RUscaKjk^}cgxj%lpw0>=GKjjUqxJAKby<Y&q^T*m48e*HnqN-LTEvr)ITj9j<!
zFn{E+e(9!n#KY@pQ`VRFE5wr|<MjT7Jii>O*?2GgM5?T5w_jXme%@CzH}(8z=iRSA
zEV$m&;vw+Lw*S}D%&W`)?E3MMLGtJAvxn9g|I>S~|JhZyeD>+Mq^_T#7R~m>b-}Vm
z3pI|uD9Ov8vtM|@k0`eb&CY-3I<H=M|AvcnNRrOXn|sbYh^g*c7J1?5iB}!JVy_<e
zY4pCvy*rCvwYuipdCN<t2e%w4dvo-*)>L_;=Zn^~J?q?hbG63z#<DenuX=0O$34Fq
zKUb`(ZvGnclN~a1t{7g^2?=|=XXz~G)utx{3qSro=T>>i_W#o@GxtY*&DcHjcTK76
zsr`4nZ_h1RaJZr_QKkFbR14W#E9V;>dnWfl&FcBQf;z=@DqprlZ_VUS(-1J6x@qBN
zOBM0@H7(W4Z(cIVbL09E<No0C<Hg($r=Dn$4L%jh7N)$QD|+sQWQ&)5s+WJw%g%W+
zVZx+s!WUf6h|c`MdH8W2Ux4m<&Ob-pXJztEW>ESx@qB+t)~UbC_TF4*^6`?2_omv3
zyk?<WE$>__FFK&Q-tX+<+fTH&8BR5Ms$9)p-kPBJvu077#*XaypBhh0id`GI!npGY
zm(to-4|mD7UHH21)7MQmb{~Bs&ULYU#%HF&=GpO&nhfN#s$y;gdF?)-Z<75jci~1~
zg-3HWCznVqu$*1@?}+P?^=+1MnzxUe%`wZq<n%$@U`x>xLnZk;%Y=TUf8IL#4$I_1
zred*IZ)fn`n_hlv&7pHkw*}?Q%KyNebAM$et9*Up+lk6ySt+0GA8JS+tziB%<GtqN
zi<|2A2=A)MJn>xipRxF(r`c2GXJo#U)n#9j^fmcbjAv)YXRhPzN8OA(bXHl|O^IAB
zxBh8XTyWhn4lOf1)wnmIxi6xGD}|;UE7jiCXC0p-Dzq|rPo3SC<G*?AthRQ%_I>4i
ztN+}zZ%@{)Fj8M^6ZSPW?A5kgC%^n=mHeUW^4eZZhh<AI*WAu+Qg1iEm)L*(A!Cm>
zOYleT3C@$A$V?YMKKIz{tf+S>rHOy!JHs!Y#<q0F2x-L#p`|<CksfY=0ou;K!I6dr
z*ca~@St{sSni(h<8XB4@n46o%a_Ku3gD%1Wt>od-cTOyTUh-pRVa%oPk_wU2HMBJ0
z()TP$%*jl4%uCNnRnRpw;nEK-NzDyYFfqWnd?zWf2z=d7DtOrq=(3+w$g-Q{)Xbbr
zkU?oB`cO7RA~h#97j!L8T26j`5m*<P1(8fIN=+<DElMpcP0Z2HNi8mhuyQl=N{jXL
zQqvPlGV}8w*YH5r^?*E<T9ldszTO9{3}t~1csWiGmz|wLYF<iyQWlqyp)pc$!x!in
zTf&#*7%7-q8kuqFL*$Sb=$KiUTY~Q2Q6Of4P8oYhaQ0<A4}JyNB`#(`EIo=}l)Ts(
zS315_ZDClbGUY;b@T`!PN(vkv`HQ}2xi0YtpP=XJz`CUQle_J6>;FIB#lF5bb!*u-
z>(6J-{ND5V%)Qyuy~XQd53*(V1|3Z*xZb+ZK+?gJJ5Pu2K*FK`2_Kdtr?VT5SuXr%
z)Lij?;hj4dBYMvKXVTcYP{3l3uVmxl$6Gc?I2=CADImt$qMFj8nwntXz`{29pL9p*
zWX36i^D?9zxVbVC3^mFH)(c%bdYm^mz5np^pTET(xN|Wax^!vMg!>O0nv75J_PQi6
z=(3!Xd)l+U!^MKJKu4(e(9b{Gtozs4@;z5lR(bODDXXi+Zs(18W!qU48pNg2`Clx)
z6PPzoL;8VuqJ#9qo?nM~xE`_cyt(+U{!PIe-E-Uz+n7GEshbG379Mx6NXQAuW7ucG
z5Wb)J#f}9A^#{uTF(@2}PiN+EZv8*`-TD{tofl@@KggjX^!iQHfgcMD%NlfVak9Qx
zaj)^wo<aeJ#*IH&T`YDcfBeYd&vJ`1v6ubNJxiv5&<o506;1UQi`{oEj4gN<P`>4|
zewWk!OAq`bS(6vHl$N<A7Q9;!|2x=i_reK3lD`Z7x*X}wbB+7)_v?qmdN*$T>w4(e
zVb>RWY;RvR28I9QZZdEDxAEq}f(8qpC?_W$CWoC&8u?51UReKy%}#H{eZPnCX*SIa
z_Tp=}6S~zKxg2gU`cSW6U*4k5bzo=Z0;WIzwm-hFJz;}ELbKZ=hU_V_Qp~^9t?%`0
z`n&m<`F-BEyfY4cxFyV%u)psAPUGXJPqTFwe)`G&Z})yDEw^2-*rcxiGx*o<A1L^m
z_eUoO^Yx`ik1!+}8frQOMM-e{D4+KK!~fa8^H=LJ{k?uK;lE1A@f%5uFYQG>q<=T(
zJ-<KX;Q#AKI2it~ThM#dTaxv||HU=NGc0&I_jCNOfBnDw#DCv!`#1gBKjr^@>7cI#
zMZexY`~UX8{T+_<EtAj3GwhjUTkvD$g+q_hnLpnTaK19%^P1Dm1-5hk-(KD4{9w5=
zV{&`=kJ3a#4WBptvTxUQeRI3{Vo{;TZ+oj>yG4IU`DO5UiNEgq_w~R*_k#)lpC0Cy
zy(IWQpzyf)o9*1K^H<hi4?U=`(QJR4ze^00!;YPbH4X-Qj=3B;%4nbXXUeSwd+JY1
z3p6Edu&Ci^crL+kBk8Wg{##wwJ12BYOZm&^v;EaJy>$32uYLJ`(T4TEzyJC^VR67c
z4V4#%Rm3Wl?<`c?^K*q)<K5T4PAR<nlaw9OR9L>mqAy?T`uTr+k;`taSiNYf@6V;%
zGk3l3e&6r&YcqG9t<)#8*C)7UdheavtQ_z%F6_>}e_zgi{LW{6B~@By_T3FBQCE!a
zZg;UY=$)#$@#WQ&!zVX$ob<c6wd-oSebn9SK1<9Q(-(Ybn5I2d_IrTh?$XarJ%-}v
zmDb(A(PP$k@2tt)!w!Gnedy;le6hp%=(C7x$@5b$@96n=^X9%a^WK?UylZoIomc0l
z-#lx2_DRLu%%5BpIa6q}N!(8151L)_8luZpViI)=_MJC(Pf@ijx0-hS@{}9euL9GT
zuN84xDQxlK(qmR>&b@Ufr_T^N$B~x9zDJ8i*W>az@nilKQp%a07xzqmu&SoNEPBfH
zP$$jp_jn&UYb&m)6<Zb%<ZvO{bForTQq7b(;eNk$#iCx#o~{^^DsNbx=~5M9+;}Xw
z^ZUG@zPEq>uH_GpuCjT+=QVljj2mX+VjSJqx&O)Ee=*_Gp3HNbmy0+q<>uYEditx#
z4RM<CKO)#F-&mAXUD>@^HCMIGWxchU+m+pJ>})U7wsjlFm4+=Wl715TEX(Fv$jgV#
z9>RO&R=(OA)Ad_zdX?I>{P{QH9W>6T9klMLDKWcPVSYKm=!@*aJkBql*36u+K-{K3
z)oY*4lH06Vu8TH@_@(|&x%}nJ^M`syI}YsrY8F{<VC%k(d-3+E8S8fYIWf&Y8uldd
zfB*FR`9AxuhcAzsy3ymM`%SYweHj|73_YFm0$=RZ*O#~wUp!~VKgRh+E3d3J6yGvq
zX{fo$8o#@<^vb<1Jm33r)1MjpJU@vYJ>#mP=_`7kZR5#<hxhEAvh(&`o9BJsT%Jr+
zn?6bU=Hn?hPwwCPn&rZ&qIvsVHfG&h!f-`J_FB;<mL|^aey<fwZ)@&++RAiPjqm7j
z=k4OkcaE`W9`d}`H~&a)XYoIS>}>OSpHAMH8#co)Ao{nKzExcCT6H<yRkL$nmpy*h
zvv6MBoe!HOR;XB9k1u-j@cP^L*?Syo3(|fwXIz(jdfHfCr}YM(t&XjFPQ&sUKARWL
zdhas-|8lAO*Q2WMR!z_7j=Agipz+}8{>a8N@0j@So#NZGA}aUIry8Ygbz0IFZ~Z=G
zv$^9};fv|A2g~?(B?g_H#=fe@KJ{|Suf6)SCRFw%>^E_-+g*8g+3Qtn&)z=G?{SU!
zD1X7k-#olNDXFnLA0B^w-?a1dz8xuQL3+}yn|@puP4?pp30Sh7IeKk>d$Xl&(*ngs
zdM%yDmRd!2`(G+GnjUQN<K51zg9(kI^Z2tCd6j<(S<k(%WnJ%|8RDHeOIF6n?<v20
zD&A}9<u@OXPK?Xmk-P4Y$CP)IKZo_%X|7e$_Ig&NowBfiuVwk#D;Lb3Ft+ZGotmlq
zxNp71^Y2$qO>>h9?2h!}vVZ&b?H_Y{-9K_X1}k6Od$va5an;@0JrdLY+c9stAL;+q
zsQcXo0fy*KFXl@A(r0T$q(cpNO)l{lTD<D(d+*vFuQcY{+g;0k=3bb`@bocLwytpe
zgLZ|~j$60+nV%kc+Eb&_-FQT+d{+k3pDkzfr|l21^o|#}_vfC;d4E+##t8X_s_Qb3
zB^~F-Y+w20^F6PaRpv`(K95nn^VlF~>RUzmX>}P)i9E;R{w|sG@y7|f@Zu#If2W3&
z?@VY|w|(!QyrX?W3ue3hzoWu+{qDTT^QD(r|INI8-&)OlS*(2Qb!DNQ;b&ej?<()t
zsM=O~^UKm%2R`PuhKu~(xSPLx#xz!Wwa_~mj(ZbVEN+UQWB1?(*YxB)hh5HPypiin
zmENG}V)R=k{6y&$H_s#QORD&Mwx0}>s#$9$ShDkz)2Ug#XJ+3}zWrjQz1Zi6#SLeK
z&oxwU^4e{7|NPsnS9e+`FW{foy+U<o_?6zNxi7oBThFhxdz7&?`e^6PxcS#R)-Buc
zW}VyjLWZ+Z_Q#yph0MOQE<{k0bMM8~3*8<+(7Bl_G_gv#&&%3)@tsD!!Y?m6*5(G^
zUb!=OMzr%^?)ug5b8d1>5I=rFsrBV6jh{ctE-c(R!-L`Mx?j!fR22gldIBZ|OW7&p
z)`_o_Ut#Za{M97Y>hh+$-Bm4X{dQH|a+vV)oRs+NwC^5VuIdMUjQ#!|XIIw$a%avn
z)0Ho-8~yx!c+PS@{^X}?m#lmjA`!4+)l|!`v0haZ&C}-n?RfU5cY@x-%EKRm6eAj{
zk2%cAuZik=XjuKJ$>@=wi9+F@t&jFDST*4}hj-~Du5TY4f2*^Uo>XcID_{J>#g0Se
z{Luq#T*rcP4{c-?IMrozQtCc86I1suM*+7BhxV;pmFLrzJJZvx{=!n_j+XTwKWANR
zsCy_D`cfu+wnP)lxr%qZ;md=TW<>CH*Vo;eWU~Eld-i+N>Y5qLm2N63MTJbz4Cw7n
zKA3CpGw%Q2e{;f$xPM=7DM?wt?o-@uuJY-;tM8hukj-bNJQea;!hbyF!q;m_i=4w^
zLg!li5r6Y`{`W9DPwTiB?{C-EEsBuXyk`F0laKapDm-9u;crc?iHhgLoqXbFbv$oA
zQ<+kD<k<D2*Dhba&~wn(KeEr;Przp9qJ)TR5C89o)_?Pub>88smqA-Z?kH9L+I;hs
z?*gM&7f(+)*Cq4!tjyQD?|GyT#^;xYYP>5l^pP!!3--5Lpd@eWrCecRy*}Z`O5de(
z+uF8;)c<E*$>?+>#J}Kb;#8SGYkS#SZ>IgcGvoW$l6O0gOV*!W#j|+x7LN$ErBg3_
z_B-{VdvT1`?q6X(2ijsb9`6pm&?#d)*SGs>$cDLj4+^TS-miP=-)pn~U&n3c=WnkD
z9I8EPu9s6BzxQy#pI2`#mcE~B^*d~Z(U%j=!8`iS?|iak-t$eTjuj_yOgdJ5l%@LE
zca95ZeAxbNW4!cYN&Ecgev59X$~o+q&a-Hjg5hKt(}~ybt46cFTxEaq8h>~38cy-~
zeY_Jd-`|}sxJd4;bls#`t*4{Kxx_cVJYQ9QZlB@zl;;<e8q0*vDH_{;UdV7)?f<Oq
zR~xEk{5-7P#Q*4m^+G=1%b&wdwkp35waJQ!toZGxzw%(>fltBxCpkVp+Z{gl+aX1{
zOGQ`OyBBWwcb+@>y$}<Z$EWXy${W)k74Oiy`g%d$WOk)vqRNX`DlhKL;$41(b=uR(
zH?GM@O^VH39#;GAn6PT}vS01b<;8WA-S%$^R{LJ$_5G1Y^%^~+@=L!wU9MVmmaKWE
zHgoHth^_beLT>mOnW$7pRV^~@i#??H)^l~4+f(-6n`W_3e`TJs;gTEk%lPv<*B-LU
z=h|Ltm$rayea<0;1i|ixBJEAfuP&_&oic~}t;<fX+ODnfTe!Nyq*$K_A6^|8cKG@#
z(`QUsTdeP2*>=Hohur0FWiCtFH}D>JpC30n`0e|i%h#?N-N=lYQU2tj@|ymsC9fq)
z>OQ?{Ip34H?{dkWe5IZF<~j4HetC6M;C}D%3B{s86HlE;Jyh5jSQ}kxd~DsXGwm(<
zljB+<;;ho<*5xqkEt0+ap|DJ>J|X0J#`7Q>1+{4(pKf`-ILP4RIis@|7C9UU+}Nr2
z;nt2K-;J;0jvwy{e}9GP<*XC@(`PYE+%iY(^Nc&Yzpm=iIj?!`xo6AcO~y{1ZBOg{
zSPg4G&D}T4RWxdr_2#b+I~HUsde|N`j0#Bd)bj{t`ZRN!@}*cI+4KIJCoeeX_w^^k
z;oi6FtCGJQ)z7|S<om2EcAA>IpYxx|e-2FZkNl)I;pCZZ3PtY?Wc8F@&GvIWp!=Zo
zY3I3DG6&mEtk`zw70dOvo%7hTynQ1cyT6aIV~jjF>Cm^C?R!qN$(%c#q9FTW-8{wr
zJ&zP5<(FQsn$|e~aBJpgwbP|OFEsRTisx2+J$EzvdE&A6pN_03{vLb#?g87XZ@(_c
zRC=TcM7OJU9BwTtXEGO!@7*h$>G9a+#|$NjWloRW$_`v9n{)cIf4cY1q$1mJ9fLTj
zk15RA@5^Jdqmw^uJJ_>le&Gb>;>~ZvK3@^gJZ=7UgS7Kjd1*tZ4(9LWO?(HZ2C-Sk
zy!-k@j>r6_@-L1_CGYJse=S;*6IQhOr2EhIup6cp2kSWeqwU(0e;?uOb@{xl#OSVM
zR%ZO=&)G{4U)}eh=4-Uz_CN9YKW|3e-M{&F1#j?Hufm{+T-VCGGH1^ndCe!8clyOT
zrufculLt4t`-@K`@9&)>Wh|nw;;xrVuI_~Fbq*zNYKx>9HFckI94#<jso1k5jMw+a
z55sp```feXEuU|ld2huEA=6JLYc(1lTYRuFE4dS0AfREgVV|jD(oc&Me;B%ys_I?}
zPF)z3XnD%s#bc$a*5R}jD_nPZPS9VsY-?<l|8$#bpRlbesk%!}M#QjL&3qvGXU+Qe
zf;YA}U-c>|ZZC384Vbq>=0;fNWxh9!4X278w|Mb=_g1`C^=?zPWX2<@=I15C2gO!h
zc{a1-SD4S%bnblJ+Xh7sa^pWP`!5+NEX(?L$)f+PvhPZk{#}&ta^h6pN?8^4J0I(&
zyjsrkalTdgj{LQuF+sMMcg4(n)pxfd=SJ5uX}_y-K~85^8`&6s`6%*bLr&6`+0pe`
zxi|Onf4INr#0j(6+&60%a+*F1(eW(UYa{#p^RCQI8DBmtSsA|8mdtRvcGBGI`S;7h
zv(-PXEtcy!`guaR@%^=R`z2bdOkF&t3qH@<5ctwZp^(%41-n%04E9MoH(O=C5bk^P
zZSlMADi-x1_KjI@i*~+my7cDm^eU#wHcQtXRa?h@K+hw>X>sqL-ot7xCpra<8Dn?J
zojqswz;pH`tJZ@_^Nv<;>~4Pi_03_fFLyT_|997Uwh)hz_kFv$cPp1WxoxoU6~FAX
zR46;(eURv)Aj1s(M8n3D=M!E!#P7bhWnuY?l^c(RuD|lj<iV|9GhZ+IcJ#%}&mB|e
zGrwW&XSP&Xaox7TP5EsK<Hl!FyR33u(!-ga`srs+`M!sF=FjwBf3$7+f}ImCPcwUd
z;8uCwgM+uu=G)q6*!s;)QjtCC>HPBWv-I8ROW5yfbKU!JkI%~Q*zzfP+Bf&v>4ufJ
ztvQo+c+Yv|>A#sn|GJfWy*!cKb#%pMZ*?03ony<7?|%R0t;y3hUaZHLDJ?#8z@Tk@
zF~_=~x%qKNyeG%zTQ$zO({J>6Qfa|dKEu=VKU_DJTyC{@nfS}lG`$!7jT0Hmm0oXo
zC2(x@jy=0dmhOFi`jzwYU3Xm`KVgbd+gze(EZo}iF87IGm9Fmo`+t4vA~Uc2?B$x(
zw|UR*2Rf5IE-%X6Epawnej4jVx1fSm7yK`#A6dIOwS(LC?5A&UCoSINBvYF3>y7M1
z-QQM`Tc-&>D@)qm|4DTUXIc95n3~Vq<mMk-!OOb-g0}seveKxye``uUK9Rp*b#ZG-
zlg;IIpMPZ>@ek14`)k^UjgP1Lom~0P==Z4|v(D~}Zhj<aeAaNW_0?z6+YTQ4Eo-NI
z{m6W7V_6?9za#rDFOlw&{PiSlOW~FLE71#8<itweGd^}*obx5^;e$D0o8vx+9KQTJ
zv?X?dq4x!G_1zrdiCY)xJ)HRdzSN%8Os|9f8a=wYt7d-=f0N0kBJC&d4Y)6qh;}W>
z(3{15C?dvFRzb)%k#CZjOx68H)+1-9&-M1dx44hhhNbAygV%uxw^ns8sjOaT8UD+^
zaaEhC(!8@@tR6hJGSS-`v9bTivY%<MsxCA=^epQ8ak;y17q{xCGryK8ZsED}cDXEf
z>C5B7>GQ7F`Uscq(h9O^Kez2n&jhKi+)w$__ddLG?RfL~dwUXMyF)7_B+kCo{68_R
z;+yJ@%S%=ntT0-$M10Pr(C?bvOs4*}$wsL{|LiK3^XJrVUH`GCqKVI7wau2<%NAM9
z<J}neL-W#}Qy~-Fb#Ij^PH8U_5^(sf+C6{io#K68c4exqUYPG@)u*;sMC!(q{rA=@
zTL!IuCK|jz^!>AC#o-3~AAXwMbvWm4(a9;^wf@F`kIU+ZO{iXX<VV1}Tb|ypdDh(1
z^?s*!`$9}Bi`m^74GX-U^h|nu^o7)U_kI4;s-LY9*=o}(6~Z34hv9pD1&egqh6&}1
zbSzz#aZhS2ozAlSQ2UFm;)hH+gJ#XsWV~>qX5I`wi#eI*+Ir`{hnNS<+;`XJ&7-VS
z$DVj*wH#*MEOGVIp=rN(zO4x<?%&)!v2DJrZ;kNMcWY$MyJa`NeZFz7mH9ri?WYAJ
ztX`h$iGF%j#Ppc#)2fZz<MzEd>2Yc8qh}L*a`)^w7jG4O<?ZTo+bja=-Ufcs)>WTB
zU5~GDO8)wyZK7A*E9&=&Y8JiN|McFMiR_Cz?i}(m(VCPgc5eO64AwbUTZK8=oFla*
zPW7E!{`%*X6W_Y7_#VyD%nl5)U9XaNV%c>zi5{KLTO^l@ZLsDRuV8&#^LK&nE57%c
zE6(otZR@PWyt%~kP`d-)-UP3xeO$_ioKJ?YvA*rwdLy-cg`8pSdGG$@?6v%+Q}g_`
z_1-aEI7K=)_nWEkU5i6{JJM?E&n%5CbJ;s%+WtrBH)mW|FJC@W-RR`(FKV^#!_OU>
zaDIN4-P`Z0XI+u%)ZO1L_Rmj7a)po52cPna)PmJV^|R7$EY+N~SnA!!#y;C$hgbK_
zm6tIKvR?gjcgDF@>|R%L_J*bz^ri=TeXv~rx2V15V3);j#$LgTye7?476z`!Uv>O<
z=iH7PS3Q>Pa$CRS#PS_B0Re}L&N<!KVzl+x9IGCyOOChw7hKzuxcN%w><6y|y+0nA
zW_tg({88)6r|$He5_&r4PWjU%o&nKwHmaC*`#$$BEmAEup1<m8HEWvQ{FYrea^@~_
z=6ro)g>;_l8XfPchhN!OU(Pej2~k=fJE3Ohv$^|^IHjEMQ<^P%=wD4(p=jQweSa@4
zZn(DX*nFp(JvI8en(g=R6n4$Of8RPmdTHUsmvdJ67e$8^h+JA<csS$2O|R|ix1=X(
zmG9go=&>bQ-Z*g2SK&`g)Anqaw3m%G{Jm;RxqN7mh)Ky(uG2N%Gcy0Vt<i4%b<*oR
zYjN%N)=QFJ`X^>y)L@+cKg)gDKR?OSJ}0G^T+fAt%`02HqIRic+NEzRa>AbMK55?h
z-evt+YhKTME0v3t$Fi#K`<EyGanW40cAjef>Tjz5j+pK8yBBQ}8~QPL^3S#dOG{mU
zlv-&iYp3t%jB9c|c$ICxf1~nDW9FM%5*1>bCihNG|I_9zd+TyP+fPdq?xQj7x14po
zO=9x{G?x7K7ISHuf1+TCVW9dqpJ&QuT*W=t78a%N)>$qXA9DV_O5OQe!ri=U+~g1b
zynl4L1>fD%|E=EHL^fQhkNgp~J8tR1SATVxrq*_^_^9ZR@Xamn(dN>u%@IzE7?mGM
z97{dmp*2m})BUV<cgMkfHf~DCE_|uT@Q7Ymd&N5O^gjt1hm`)ei{j<?xtb>>md<>@
zTJQDqMrhFU@9x}3_G%xMb$R*CxKeDMWLL?W`(ZPi=l|;BsO{XKyh7`t@ag)HnFpo?
zggyF_*6{H5lo?IDFFszGadvNK+>39Uw`wlDvzu%F`fDNnOKMi{zxvg(>(9$c->+@0
zaAn-I%=g^ZbkCA|a@xL}vbxVMnDw`IUArJ9wCVlai!K(s1rD{}GG!{Xny@;xy~uTY
z)YNT~vw3_^eVx;BGHcV!hm)!vMX%p-&tOMx^8EVAZ#G@Ysa^PP!?uJCVnq%dbBup{
zZEA8|k>z2YTOIl!IA-N4ma5Cgk~LS%@!V-~|5Ues>pkmGyMU^*;=+A}7u5xluZt|@
zKl7$rwCP*qd^ej=qZsXT{+r?~^EORWin*A&Z|XCj9oq5Xv%0yD%B(XhJ(X&i`Du;Z
zoO>}m>RNwl{vFWU|GZ*f-<7YMDkr;f_P#%)v-P5Oncywy-O;9fjRGl~TV;fUTlwZB
zta{{?{Xp*E_DPeL_5@sy{eH$tx9U>R<9G79r_QjMZ8~}Q>h8OLp68yNop3)#z)kCO
ztZ$>ou_V>r#|;egS8VBd6`YdC_;=gJ<D9iw*MEm?bd}WVjJ4di_mXzg)_)&%3sipg
zR`TwX|8#oJwFO6aay|80us1PT_tmpx?)Aqn{uVcpi@ep8zqz+rSN~~RNnlljIrsUO
z$DiNdneD%iZ_RY;Ul&!_GS&$mu9@;c#+Q#b{+*xbv#WU*wX&3QmlyEJPk#65$?eap
zHwG~7cKj(b)p^O^sJ8#iT^&vru+3tcAWf@<R2HNvfVatmrWcDc3rg~fxWIhB#N1Q`
zeb<Np&k!&0ET$>eNlYU{1zk%M69q#P6AJ}%OG7HmVVauZoWm?A%FIngoi+qb5~5BU
znj-lRGBs$ZU}$1$0-Go_QZO?#GKKMs6%1fZ1#{3uEO_3Kh<*JftRYjfZ|mLF=v~sx
zBy`B&07H;hxw5VW4>OM;^Wh73JvcRDl~!I-=qNGw;J9?Rx1ovY|BCAO@9*EY%$~bB
zZEg9z=eu6-eD`}-JfB&vt(~Oy5>+3;PKVEpKUj}27D-hdTg1S~s949y=qSX;S8H*L
z@te5Mp+pAfod+gzeEk1Zp}ooRf`pG;)3G0!3W5xw;p_|^91KE&?44cQ91JY1EOLL|
zcDQshKT*sp&~9L}cM$Dt*g2u#gyLMAzyj%LlVxY_uV>KHFlYGkpz+1u`wtl;-6gpA
zS``?i1h(j&5eydODr9(}xUfLt*5`Q59V)pOGt>(eF5JC4SN_q9L;Wr{J&NzM?>KyM
z8$;|2Zl0%Xo0<M7@my%JIP}lpvHC-X7q<_^{(Dg6k-f#5g_Svhf!#u+t>B=`4y82-
z8Vt)U9Q<8n7d&Ng{!<wC|8ar*hwyv`g}Mv&FaLG@o66DmLzbt}X=0zBK#RIeBJ+ke
z>jMl?U9bLR@PDagU`hOXTJX_>rXxq3?<f?occ>nF`2DORgR7)01B>$q{VKfxkvp7k
z54~q9|KTe5Lz{QmX)X?J%O#7Ic^b<Uf0o);T5z!)-Evp>NBX93980VZ{a)W}DwCM{
zx4UKPYT*xtOz+-s1yB5cnw5FtANI|S3mFp{*_D(IB{9q}W_ZT9mGz(3`u8tce&@3M
zZ8GGk**kZFA44_|=M4QjQf)t#KbAG_ILMGOMf=S4-}Tb}YLyrp8Nv!Qq!KtcH!6Gl
zn=H$Gc+LMghKJn`+A=I-l6c$5z_h>a{~p_eCr)#97JT^A|NH$<Cf_N%rKM9U{u}%|
zuBP4ng`whe;{k?!><I!4Djk&_U7Soc|K~oN&-TanpZO}@#{Z?3jsH_Z93zw&`TrFh
zFnOOZmsfwX>Gk@l583|gZc-CkoGQ`q+WwNcFax)PA^(N{-<kgK{oMcZU--2D)4%-x
z?bNl7k8l6knEh}6w@W_aDF5*1G^28AxJjC>$%GkC9sX=zt@!4=R`!8457zbl&kc2S
zHh8Vryy2k79DbEE`U-#8+jnamvP}rPRbX=ETmOWAa;(eRm}M9*yX`tqUt4Gp$i(zN
z^>B{t6}iu$g$H@wZ0Br?TvdNP)WKn5*#2$)0y<0$3jzfEg&2EIupCTiFz493EX<()
z{x3F$pMoAHYAg*8UvO`5TjWvKE2^Tv#1Q2au>ZpS1_p)~9PT@I{b6oka8N(9VM5r9
zyT?t~FMryvEAf|MZa{(0>pI2%yTq=DwjSE?KaBs`x%&C_^@<4w{1Q`AvY0rha%^19
zlldb~@9>jz+s!;SY`F48=iClsrk-bWYM$n<_M5TH<dx3vE32M_)o=PX-8@lQ*v`l1
z_x*O8Gf~D&&nHjWd@+J+uJ)$(8q2-U<D+vE)`WSu%}%`dBwc$7`$sDs^ZBzL&AeBg
zXz|fFWQ%Xc;u72Un@*-4esYlSfM7s@+reo^TKXoQ%(`{3(<m)D-s!vK?7$;I3w?rP
zzJ|*2$3Jp8n7sd_nTzq9>UA@YE&F!%?AMf%QZ;Vb{bAYq!kV0m(-wRTN<IC`|3%t@
z-tz%#OAkJp!aD!tUeBK0hbO$3IA+=ZI>M4KDJ`x4ZGu1ni-^(fucr?vZx9ZMG7oKE
z{aV_Mjm5HB<z`(~rO=*76QuTBY`ElqrRjk~mCHlbm<zh+5AFN0?CY|{>0Vc}xhHq#
zIWt-dB!4^OvG?8K=)cvuF-12&y9J(WKV@#RRZmIWJSzC{oL5U9IQ!?lp3?Nx-Dla?
zv@6;tYf4<6C0wkWpSyqE?30Ez%NOlZEkFM7L`JQV@5_vIX6pi{Ys?NmCrzk4ZXmn=
zjoh?DZ7(Oa9c|rotk9)?_X+7ZjjxlQZVA5D)S23QNc~jWf1f|ib;VECe8~EGE#SWP
zri`UUdtDnNH)|I^cyrzVc$ZJl`m4r&CO8~2;B-`b;r@~%@ZVS4$kS?fGv;u;|G9NL
zBiD_oOR7v{|6JvN@$t{fU(Xs0Ti(g{%~YD=rXu<NT23mX@A074{a3_qRhm{=>i2E9
zw>((U<IMV({Ikw2{d`OBbHpyCW7~Wl{$9B9&z!D*tg-hQMVEX~Tq@&VCvtR-{k8L*
zN)~=!T^{{iU48rMI?dxRuk&;7EGx2Ix#F>Xh;GkZ=9_cNoQ-3x(gP0*ZvXn^+{8KZ
z8OL|Aolf=r6}dZ!Q%O8jI&22dC;$8+?eAf=_N8qqMoVpS4(3jtp|Vd_Iy~V!<ML0X
zoU?Ci4mq{$R&`9AMkeDH`Q#tUGLaWAo?i2665Gp9b|(LJAHGzlY`(Jd*BM3=f37Jj
zwlz=vw4%DQbHT2cueQGZ+dApOmBjNu^!jE`TYvubo$34PH?^>F{F;1XLH~iB*{jd>
zm2W)~`j+FFkkMi51<TduxBbap=6|Dgs`Qq-MV&wRczt$Cm?<v0`#B*yV$!dQGd`|+
z7qqsYWivUm$K&tj^Ltn~uFxsjZYVHi^M%6mA8o!}s|a|W{wPSydD0v$6@>#qzPo>(
z?J1RC-E%GHPp~AvnvLW7jdkpsu0>7^->fLNZ`NkfyOGwHnLPu{FY|uhusGn~V{41&
z;Q==0FWA5R+`aPpOJR1QOaZU5h26(4JI$BSdYICG^m41)rq^|AwyU%%PRZZFl@t``
zB<J|Oggs3_$!}ZyB_D}3d-wFoyRG_aIPsE?Vax`1iTT%8C^b$zcf6Ka<g7mbp%06$
zvv>A=|GB?uP5-R@wLFUFeFBzFTq;w%U;WR++6RZdx#E8&Cul9VkM!v8oZ?s%lyvaZ
zgWIAPqgd-bXKe3(=`OJ5FVlt1G7C%>ZMKR3aPLj7i^Re1J5#h$HxwM-@<C1CRN>g}
znk228oa^{be1DwoX?ybLyMQ^%yjQX5YS{Z+6?%3`?ft!~KNkh<*S#}7&l{+eZkllX
zwgl%T=RG=J>niMK85k-S<_LOvCV04K&Hngy&F9l@AHAyftdgxfvQjDPk6vAT#PjA|
zKIf+8xZM=|7*}p2^!Ls#kHa@?kLmp}f8N5C5ct(~_fwP87sH>~X@6+HrW`G!f78n$
zdG&qqp7*k+o?pD%mtJA9uVyjZpSXSeH@|B3d^o<9dwTN(za{^*7P_yUxK$&mDo``y
z$F~K-XBD(qSY{b6SRpdItK>{f#>4sMU#I@rrc~u=7b~yqe_*kl{;Tu}&nL}|)#qJN
z5qeKrIQE&e!Tsru_1|3oJ==V5@0-oMHDAn^y}o+j-F9nZmxa-?XPI~B2)psSh`jU6
z+o+be-BPHq=>73kW`R7fc3$S(%*h-2{+*~kZ(T~=_8Fn3E#?L>qEgdx0=BQ6wdGlj
zy~Ve}PS5HSb24|mdhRA`%J%4mj@;LjjhmicShX>x&7H~csi*B0`*q9Gb2w_NPKj#I
zd!@hjro2j!y}yvpNg3bu^Lt)$+3W0-uB>h_-CTb9@TSk18wwvNKPulF$+4vT+7F4?
z>sn7{-{x1Yh;dzETb;%qYB@(BzU#xhJExb*SKQ*N)-yM@>|FAG-SSKxiOwk+JR1U!
zY0q!y+-8xwaL@gpGh-dtW8{S;w3SNaCuGhRd8xa?rT>J>ghyAkFUu9QS6APYk6i1s
z+q61)^)pAW%vz@6UlA8)UpyP`s5!emB6%a@ui}y`s(Lpo_;V(nJ2O+CN1=Rry+g(W
zk;!-86oz+x*&(B1@O;{C8y(@CrtsoJ?>Br2y8ccixcWt=jJU?vXv3%TShjw0^D(<q
z@$+EUM0+=esp}F8yvuHd9e*7x+}HBr<uAEu7X=RMy{q<KntqqjAn{4-@s|s=e^0L5
z^P*aHL+5eD1f%WcHw!i$?+7@!g=2Hstxsv16P*`7VEnbz;;1d(|IF35XTJ<R+Ld#-
zUyM(Jv$nQdX|CvtJU$~;vFfO2t&Tk6Hy?<{>G@`*$8I`cl$ZN!b=9+Z47+&rBDUXp
z{cuy`=_!uWRFqBTuV?(dEMV=f^m|);4?Z_se5d%%F~g{bJ3AAnT-ud+<;%fS;r53Y
z?<+KN%Td%mS=M!_;Af15?X5FPYi$1C(%&KZL(ST#Zh=DCf44HnS^E`Qv}b=f;83v3
zaWaRFZvCQvcf0o8H}wrR5%Is%zxemg{tr_{ChC3o+;q{#-1^(HQ_r8I+6AfX^=#T3
zuhz~~x#vf}qa@cVcMI0lhh=i+?7pd->bbDf=~~iFVLtKbu!HudC6|A0d&j*e(8m42
zh6`y4ca80Wi{x(>-pyCv@St<&wwTnlMu+rE^(Rg;ESt8^Wb%Zwb6?3USkb5aT=H7k
zO@aU0eDBN(x&7tbWxKq`Q!ie2+OzJ7hw`+xQ#N_;Q_{V|R~M)JGF{lqk$XVnZcw_$
z_Ky>`oKW8;tNiJzx*c0>UwX@rX-DTN7(1?<T{!#b`&)CG9@`u4t1dAr%#Ib4R9kwX
z;P%M}W);(%*BvrgyYuhmUS+Po<{cfc*4vy*X*%@v)f~=!l`9jP84svh^R4h!sP*NP
zpFQ>4k(%QvHZT8Wl`c%5^Ll$*%iH7WKOYx$efpXG(EQaxz8iLev*M0Kz7pQOCa`Qx
zP3T+UcV{n2NBO_M^SWop;}X58zEaM6H$^>vdGuSB4*P7MU2`jiGwajV^G}vEd3@Wx
z!bjBG|G|Cl>eEw${8Ww_ZQPXi@>}C!hts+z%ya$}Ebr$@eR8(@<Px2nss2j-!CDRW
z4@<w@K9}1+c|B|R=l0@nb|&Q(^)D87X><o^ae0MiF$F*HK6Pd8JD*j1E|<*tZoDRj
zvnp4thI?ssyQ|vrFIj&%En_#{^gj}_SD|N8@8=!qleLnTKa)JJZoH%BZ|Z^TD;EFT
zT=L#f<agDXk7p;%T)|V2aOCj6PG7gs$0;p7a_^iMJ>Qey?|10c3ssv`!3*wXOlj+{
z2Z}rB7yh=|w>et$Nr}>>Yi$fuLmh1k!d7@Fe=Zf<S?lcZXVss#$rJV0UtaPefNMef
zi+kJNdNu}gmo}xFw;FG()Tme=QF17?<lA=E87zghX_Jy(&%AfdCUBu~6xXcE?H?_>
za_pMhf21yFo%in0=9px@Ia$61?~8VvcsJu{UT|ZnQeL6OsVN6N{UuFyAGS6zaLRcQ
z^i6Mp^7^OIC)MWiZMZD_OvFa+pf#Jp%wFc>95b%yvCZw!+jT=&<U&$)v(`aj!ONT}
zVjuk?Vz1teJAOp|Meg?g8QoSUC%rbs1?cxq*nYeJ^wKjM#a71|hv!V3l)LJ-fqoWW
zR%}+zY|b##6e9us+Z(=p_EP&%W)rjVv!=qNh;tV{?K*oWDEHr`ZJV=qs%n|q*9E-r
zw%zT~6|rQ|{Iky7Q5!dNzn>f&ep_EoX7Qnqr|lTewyfDy{Q99fi?`8-u-*L0GFC~;
z=88|eZrZ#k#dM;X^{;!2A7rTSfBr2)b(ZA!j~uU(9oLpS9XZbPbN03ELOl}q_FuP%
zjridxuztbR_E;GQ$><PQDLeVKw$1+^#Rg0<+P3tFt-<N%hc9pHPrg$9IOTzvWbf+T
zZ@K3eoU(hF`1<BH-K9^$)I^x?EP6Hf=M%xhXVi8IWrtoiWz@dkem|?`STb)$MQTc+
zXW&YspqcBRPMOA^cd}7rV*AN=1tqnW0bi8ApWMcI+ve@`OwNYeOaHId@!IprVXH<W
zTdup)>A*SuB{IgWbMLX-(K(`b_2lVurKj}0{R$TssWiQf+tqvL)z^Ffx9xslyZNMe
z-ucyQTniiG_Z4JXL=?zYt}#_ur{YomKvFmMRm_=Id-M7q4S_Ql>Zi1x-p3jL?X~NY
zO5LFHFFE;j2Si?kAJloSZ{Z$Rxu<jY@kIYMfx>%U$VNXF`NR5Jtk~mY`hVUJ$}_5S
zO+Ftkp4OKCGC0akUQ0EMdG@5JU5CYNMbpc+JGSSa<Tq`c>~nk@t6Q0)HQ%;(`VwDF
zv!-R=K9d<~6#V<l?)`GshYF^|Z(Z^rC&}4qzfDm^P5O+pPrUnUt2<2O=ZXkF)Seob
zb+yzkR#NV*`_`OwXV3Fxf7|gp?UwqT5AzPhJ=wQ^Ps;aSiGs5($%Jbq{xFsgol__p
zr}}g5w)n=L9l<fNr>5q`&#Q<{eHgMpbEDFS=hN=IUDp%3{^h%8XUl~b9X|f=;^ntY
zdD^>rmifP46}h;+ZuYw;eGk`)f8Sa0kL{q$j25+3DMg)MWsb3m{@OX|$BWdbHpcH1
zo9yq-`sAd!t@^g6<_u{q_r0RLPfl(A*n3%GuGDhl2di}+|E$Y<>SG*|xJ&kCo}G`J
zp`_!+TMevpJ}p`PzC(Tf&gJt181<){=s7W*T|RRj-!+5N?R#!Me4A+<@R4Kxk4>MH
z9!3V6Ouu%J$vSV1&y0zyHvDTV{B_%U&Yv>}b&lOjKexhQ_pwcaJ74bBIG1+psdVc?
z`KuGHwT}Amev*<@cVOc!H{Qpua^v&z0@w8xTd%nmbFfr>l1=(`L~`vqQ5jifN9H88
zTYkDzg`O`@_<3w)VZ#B(e)D#l*)A;Noo>fWT>n1#U$(hns&x0c(@M5quJwn#Ty#w9
z<NSG?ucmy+opGxAnB~!Ie)YMRkNh?*;61x&aj*7^)h4qZ*QrS#UL~5fmBsU#cGu!#
z*RS91xAxi+pffwWW@62K{<y`Sn-;{%oM+}OES2xddL6)OzJ@b?*}m&X`<1R)h;yFG
zo|7c|{Sen)(HPUbzT;mvl>XeS)~q$>mhGDd>5*?VKJ2~s>*b+Urgdr;KdQI}YM#_v
zdcW$=%e^^L^N-$g@%<qCirIdXT!R90?xEkwPY)PG&0G0-&eR*GN(wXOKit~ny^1&D
zKnDAyZ;KTtY?plas=jP>{Q;Z*nr|+gZS9%bCtIts)L_=nUnTEmv*@Ix&DnqYje5L%
zSnH(+f-`HmrTO)4^d^1I785*sd}UhJ**!LI{U&>v{+|Er-H!Btng@3#y{Xf^ee|cu
zTN@MRnT|#?)AYYPxGY}#B)Bx=wW7v?E8UIz*S=MH^>XDM*KeV-+xBif$IRAc<sDz@
z_i~Ry&HWe64*dzmZ`xKloG$Xnc`trvVn|~wvu^6g6;Yovtgp_w=CLU)@VDUiA4?3H
z7syIguI&7L==PHv_iu&#y8o+$ueBuL$~V8Z6J<Z<$hX%2x!5`P|D;E(mA^e5BaL#R
zOUoAbO}8s<cQjEup?FTkJ^4%azmlmddJ0zm<9^Gt{8Nuk??Utb(&$r@tvHz1lq++j
zSG*Q}JbRI2cIVl<HecU4zi;|wo6ob$KkEKb?KLu7kK>d+Uv*zHC2iws>9r-<zmv@+
z_a8Vbv|Co^!H*}x@hURYXUmDLQ<vz~@mX(NRx$To)~jM?hV$pvWQJ{0dFY<jvLsX0
zF6`Ai<)ZJ&@Ax);JK&t+_E{&D;bV!h`1g56+k3C1t^R)K`^4`zOa0}ve!TpBU8Hz!
zoUE^;Yrx&reKo7<FYeiMWqQn%>g98HxIYtQcF}R@kIhf+%zs)K=WNY>@|>~7?X1(T
z>&iAXrf=fp<$Wr)?=(wkllIbgLEcN=KRx(UMBJ3y>Yei8vV(`0aO^nxOs8exsx#_F
zOIp5c&gHFr(eu3|_T|b~z3Zpe#IGuwzwg5eg9-m5&vZ`yb>(Hll$qbPAH44E>q>RA
z*0u93_-JXj&9QY+&}FZ*<fPB<LKBlz`uE>D)8BWeU~}H@(0`xy27gi&YqwdfW&5Iw
z|JAFVFNM1fPWdZuHRs{cz?{nyuG_jTeKD!$@-gM$kXcfj^AhH^7Mu-P{!U|M`8)1y
zx93~5ta$d~$IIqgaSyehDZeY6*={`#ULPL!??sb;Jlm#U+ke;ct($yBpjO^M^xESO
zn{xAOBK%IIik^0@IbeQz`$p%ChTFo9A7cKmol#(Gn)h+l{D9^AI9vl0ANsa$?%62a
zbYhm(ww!xLlk~WsXZW4^7NyHI`^&*|*Cy(|{gCxYJ55b#Q%+c9^P`???A>LYCFXi@
zEC*aA@4sn`Jj#@DDR9$j*-ka%N%O8={TltSGvrcd__k(-|Fv5m^UnL7?r?jRR_^Yv
zYVWTu?>V^S?5862cVbtzeNmThc<Se5kh;LD?ab}CydR0P|K63Cmz!*Nur}&Y=bq9N
zrV092G<+E(%QHHT`6u4}Yp3*8$AfqM#1zII`d?PKJ)7(=+9&jW&%T^1VawkAdYEFc
zbHcSF6VG(LVQ=3i_`X!U-TI2N`-1#M4O10=?+bM6uDJ1vL;h;%9KRW98yERi9Y|+;
zQ!;7#Z_jo^n-9zQR<4bj^B~f7W9+<BGP7LyG<${A+~;f%yL{;29CeFDTTeM2Jg|17
zTvPd(4bxQ*9Er;K!`&(>(l^r}%CTxvnCphPoONFF@BBJ_<a$BrrTilOcYQaOP26$1
zPIcGKpXanhP5&HyUcI$kEv)~al!ZIHrTUF6*SAdm8L+$Hu%OsSO_l7n`RnU<RJ`qU
zP7N=9U)ULOZfk**nC{uBPbO%c<C`D!(BrtW{-S4#+ZO(NbU64kgNn)Pi$wxP9haW$
z*tM%ltnj$-)~mZRjag<#oyyhTCX@XBsooNyGg{}aXNt@|nQ}F?C(8QAE#-XGbdy<r
zL2Ga9T>HlKN1IxH{lpA|@>YX8|F2jrYI2SaZQoR(Hsj~f;%#}8CEuh!f6~L$GdFIt
zkyy|129>1m>m$soB|UjGQ{O#{=*<tAv38dCbH}5%r5}CuJJ#7%TDW7|y1ozJwk`U;
z@<#H-eeRRisGRyC-q6vc$aFp`IWzm;lEZmjEsM=}-95eVsEK_3?Y)ZMYQ0Z;3oehX
zN?CqjzH~r9sKvj#FPIOnepDxIXsRmJUE8R&?EvSK&hW;>5B_ow)#Y+^cFX3QZ-`#q
zQNFB2reDf6uAX^;+1sL5Y{6zRckg*wuaMsL+&DYiDt(>i+2cF7<_W~_y|ce;(v0rU
zuM~n;ZaRB@@~zO!z_m)LiZg$&`fa>eHTf>b{CV5kI{CCWPf>0Q+L-JlUh*i^$H~D&
z>%MZI^ZuM*$<jBmc{OjeMM`{CYd7i_8EkiSyR~#$&5GpeR}Nu6mVW-_%9y<@GqKiP
z;_&9PId#RwEA(}Z_j^CwT{F$~b0?4L%h&Dqwbp(6%^S)d=GU8`zC_t`amB@ZHpi_y
z^!RTDuK%mFeVWRzu7zK(AF`ci{QiQ~fuoPJ`<MSd`|Z$q^MYlYs_xFYsx!?v`kd-d
zG4HfD_7&`F*`Ii^e0W>(Ky1&(dFPT2r&;DcN#dN{QI)f=$TWPtm#El!od6HV2wTfd
z;tune;=;W*TFhfzC35ZEtb!vd;vK&mmnkH9cwUmdl>Bs$v!~^owxcV)ZQ(dP(bO^0
z`||fM<x?&Bquxu|?Z5Xaa`oZ=Z|3wj8|U6nX@0MDc30eHmK8iP1(h`-&-r;gHqJ_V
z`zt0-;G0#W(`E;y7|-ZOpFU2E3ph2Cf5yG?sEX%P7DuPeeU*BY_x|S##(R(HaTR(u
zH_W{rS7AT<X5ZS$v9+QLxLv2`mdIN+Kib$KFWK_slGVXweUf!f+pClBh`&0QcQ1V2
zf@_`myu7y!w-mJ&ue4eb_}aSo=(epVE`FIBx5{p&eYMHP+bU+Uo!6`8%@iu1Eqb6#
z|67`GNo>Y1KV=n*;<m?i`8^YqSAGjTB5PN0BiqkZ<nX1Qg&)dG-`tV@*8apK@60UK
zS8_^=AD-!);<d8zq~rT~0Zri_`#vqLS}hm1k4O6aNr9)Ho(b<y)@JTC4N+O-_I28g
zoQ)Hwz4^D~PU;fl<~y~LTb9*muX#PqbY1G3BMJS!nTbJDT_YEKancDDj1B5O^q*m2
z&ABdYbEIZSbBKiINTWQ$g91T^v<F9;W1S<_H8fSwwKO$UFf=kXR4}(NqQWGpi6zcS
z(xk*9eenKD{esk@%={F@#!JlEQ_x%~>g=gGlFxlo^U_N)K(nW2$g`)WhVV1eQD#p~
z4Gh7Pr^IZ!EM<+joO|0&*Uw6Iir}T5yd~C49D|Na7$i04ns}HqDaCqeD9S4FtMXn_
z)Lf{bsBrh8`Qys_-z)$BfBa)#^6`y--+eyydEdF$+pEu1wbgKK<B(pV#nksqn1$1W
zacT+AS(OGRrb7yhjEV>LR=XK&G5*5Ovm>3!bx{Jxjw|&R8j1@OOxS|i78}-CaaaUg
zzALGr!6PCvSx98MkN^W0Cx^$sw;c{%j8hNF8ALDO<5<zz;2hXc?ZpwEuX5%dW3T4t
z@5&Q|53!0&nIiK1uP9$gL8DTlfPu^kW;bhxSOZbTg!Bc9Oiay-_WqyP6nu=aw`}U8
z=ik44VQGvFP+++fH?3Rz1*fw$1MdP2jZ4f~+<!bJelWaY`g@j#We2-SQNzNz$88+e
zTht{uS(6yjC0MxJ6P4~f+!mlB5G<3iVj=I9($+)u*4h8d9<ct~DZN0!<3s$*e=h%h
zSepNHu{kSnh=&{8k!IV@e(T_zg$}WyxdOMi&vLUI&aJm<nj6UBV{?O<r<m<_f=pd0
zAKNOe7t9AGn(ALHRPdOgEye0|a87;Dlm9c>icf15M60%RbBpx3G1h%s&g1N)I3xS}
zv;Ve{>K2ED-~E1`z}|fO)?byx*Y8f{^R(~W>1;aX|BeKO1N#lDHKa7O6g1V;lsH><
zF)oY~VE;G&W$&KYh5LJ&>=SvI>*K>)v@h^EGri*9+?-U$uuo$HyGV!IF6Y0s|1W<y
zFYFK?kip%&pwTR#T0-W-`!^C2S>J#6NZJWKW8ETfAj4lk<HP6A>(#Y;_T&f_q`$A<
z{ePDJ{>GgXH||tBpMUKCCQU7+Jq`P64ly~{c?Je9Sg@c)BOoS5=*9o@CjWOe>_7S6
z>Fa?F_GdZ&STAO~!^b$~&soOe%KFbAekgOFv)4Y%`X{}Woug;kLWgtp-uHtXLKvEU
z3jMLyKd^qn|M~Cg(|+Dx^8Y^X%3aph|BZ_OZTfGYwt@T1&ENgZZl~U5oQZm&U~ro8
ze|~uIi}#_|8gCuC6Z`M>sz$ctYtD>${Sz(bFW~TScw)}yyz<bV1>33&OpZL<4w*YO
z=Ha{Qydc5;zQqg;#>W4f61VX^YN=ekz<~L8YE#m*SMy6l9|*L(J^xl%NR+v0qQ?ev
z2L@#$#U8F2R>SNp?ytX=<}289^f@FuHAwXRbFgL+`cS;)kVBmT*I~)FqC-9hA1?nW
zuBV~E@?^VXlVU*n3fW)w2@mZ*ynpzwmz&{dY(hc#75xYDyiRu}dYt+7?~>rM-}}$+
zzb6{7LR^Gt#!MH7CC;*|ooD-Li%Qu1+{Y)RQ<vB2W$?O7#C5a(-Y=yW_Dx)9_H5aY
z8{6KL)vvl&QuyP=5_#tD-!CibpWe1+L957D@eG}*>r#)#?z^*ZbF*3Xi`ZzEy?-}U
zWL+`(dCvH+^^$(w4>}g}X8Xmpb#CWgKXtuW%+>|h&ZwF<>K(X#Jmrig&x_?;mb$Yo
z4Aai!%)cmqM(5-sjR|6z@7$!09S*lJ+^|FV=(31i#_v<RcYNXh{CRKW-Po0fepg1x
ziYBE#oKg~EH|vb$-%i_-E9W<vybg?b)3xZh*U^)lIwk944&4+lI2bEyEH;Vvz4?WN
zU2CNM%je0iy0+Tr@k!%|Ek6C3pKkuT{iZDR{OfxqT#E#9ZuOmMRhf7GeMVlvHNl#x
z>{~jH{`}hcLga|4tWM{RnFe-~-v%nFs+?OoeV%N_hpe1plZ>zp+k2-xPv+H_Samu4
zo2H&|*G2b*kB=N){i>s3%OoQkw{s5^uW0O1>Yp=r;YZ~Pt*s@?u5Qd~=xaC<{p*Cx
zmj@SCzvHd!@@(1GvwAl7W5FZFWqX-d^*=xRNp;oZJ^mHNeVo~*eE!$tMb2eOWZcyA
z5Z)gBX3d)${`wL{F%h?>-Pn8Y%)d{s6UrAp{d<G0zw-E*@WQXv+x&w6-v6Dy^v?Td
z|834C#hsoyU8icUS8@3^&g=V|uT>Rj&eV5!H~YND@h@vHJpb)6zw4~5`5X5?e<oN;
zK5APTJg+r;<C5lnn*-NBr5So}cG@F->^;**>s5Q0-`p0};EGnV5arw?x1e_3qY!&-
z8@(4|60E;!IL`*>mrLwXKXv3^?Rx7KCJIvaHxwOLc!#+?vbOh|dEw%X_Wf7l<utyA
z>wdFMT4i}NVFl;^s2{Rl4({k@&*zA<kUKW3Q>}ltW%RPX<AFDqXlyIE-@5-)>-*U~
z78#E`x>5vx$G1LS@_3ipCiPW?c{^R!ccq_w5Y4jNAo{+4*VMZ$SKOE*n%-}|Gwbh*
zTe1;$dzaOH|K!D|$-bp-lECCYCl)oW+d0+7*5#)9=CjNbZszRBJ(ChD&7*Gq@aY00
z#_vzLTHaWyh?Q_gdzxEasgR33ZhUi{xxH=iNrB!^nmr|#q?H!y3rzeq$Hlu&$4*AC
zj75p(UZ6<!vTO4@mPqfKbC7$|&Vt`(Zn%k^6)bo9c~f<P)rH7A(Ff+OeHJ}o%dSHG
z7iV_%&-oqK)o?<>f7t@o_C?Dj`&#xIOq}}lG3TO%A)gNLe`#6wswn54qN)3@s>Zp8
ze7;TJc4E$jwJdvg2PH{b*&9XWd$iStyfR7T3Wze{?+|9NRLHl^>IhPrBg!1V<V(=w
z-%OtU&GXB5`J}A*@$}*}x32szyBcfv<}Q4!e2q`tYLR+@smPLPS66({ePMYwdp|Sx
zE|I-In<s2_6W;nXFQ@B)&DqFLT9W6tF0kE^BDQ_8p90r;r?w~G-uh{4e__*-HxIx6
z_l$Y;<^4}AA5M<xx->KA*&@^H=GhCaR9O}sYks#UVpHG-z8vn~3dxo2jDZ>_HYIX?
z@OjPSz5jv(Pvz-9!6vU${r@lX|GqQuxZ-9XmhI-fQy-PQi(cPd*SM&?e0IUz8)u@~
z{AU&^w6_$ux^89tIKSIAZxwqQN73=eTT~VH$GPgX6tUDF+nOgfTgL3Ie3tLB8*1B3
zif<YlPpE!+cgDdrY$99tPM__uZ>ec{it*3IA6Bfp#S|{<p5@WI?;GcZSDS>@H<&W4
z_L;5s_*x>T%JYL2v2Ua{Rt7Yl=a{(QXy=v_UK3V-t-9MRd%au8+%;8!Rr7esm6tN6
z$1iuZ9z4VFsl79OuK(Puzg%HgH+=XqdH2^WX7jZ5TGpWwE=tjBAA8QeF70+XY1+I0
zA9kDP+nxJr5hZp>F!aInWjpVk`Fi4}ansqRm#_WSoitYd)D^tZdScm>hVt0&_Ipnp
z+kGT9?pfdePg6ObMJ-#~#8M)4f_424)yf64-OJ{y-F1?hG$%zuc0-$qU*ME^rrc{(
z_%FoY6u<H+qIU1|>f`e^E!8;thV}084?-J0h~M$?y1b_RuWk45Q~KS@D{iiqov}OJ
zscUi4a`zY8@76^yul~TuQyL|HgzNPB5A!=_fARMzS*oE{Jy(FO|Len-8r+?|MsaII
zE>wprUApi2w1wBu{m7)v8v4vjHDe>b^Bdi=+#q$?cPhh{Y4<d~Su6W7|9hs&$d$!@
z+HebR-~4k;VcWu{9SY{{Yo4KXs{H=WH=B-!hnGj^y6tJ3-NthNUE`DWdxTQ+l?0P_
z{xbZU^Eje%)t?_u55AuKk}>t>J#MaT?_TcP`DspVs#N58$>!4w<~e-k_z-Uy60d4C
z{q~mt*W#d<<r{VMLyxc>jksUAP5h?0t>xLo&+~<MUvV%L5!_wkDY5rD*V`232VOB!
z+58Xp>`UF&{a*9`(#5Vf4lcTEv2ypqpK93^uM=Mw1~&1k?3Fuk^$<_guFD?#{}o;_
zS@ZAX^NgSq0*>*k4mnjDNUuv@c<1f=sevY3Jq<P6K0mr-@yY0JS(DXI(~dV0O<e*f
z?<{d!b~U<r>b$Ud_geVgnpm%#UD>o^HqS2IMFznOzSYRT6P-G@$1?L$Wm}ezoQb#X
zoW92q^WSV+yd-t^^4nLs#XmpMck2u9ySrdsXJXIl2Vdq!xL)8ndN)-}Nw1mD?BI9H
z(@OIf$4zP9tK~m6tNulu>9$YHioX7}o^KT@c5J7c*sO4w#cGFY?#Cpysjscs^HTZx
zo@&#ug$H>wCpOPHU9qW2uB!ZI>l|*0#ouEyTTC+EWyC(!DmqiSs<q^@yUjXxwM>=u
zazRJ?BVuawEiaV)IkEHKUFr4%ZBkM57G1Y{b?NNR;JY)lcymu}bMj7EYb3qdHOFOJ
zqo9{bow%aMp8`wwi)rlQ3llkGzfZKfZLTL5+8^}2D?^-R_x)=Pp_f*#%vqKfy0Buk
zzrrKWhxaa5eVKAuo%7{`c5mHZn!EHZ-XHrCKlxde>~V{&J8v4j=$`Lr^Nqpvd<H+~
z+F3RCRi~X?!zcXv?#B4#x35%L6p05uk=kY}IyYX@fbrwWIUkq4Fi=(4G@(i~C*Z`K
zH8aaKF7!U;5<JtKqFpvC<KZlWbRns!Ti08)m$c2?TkE^5(Ya1g_~oB(v(3w=TsZr2
z`{G%S^A|ka<~uvdOPPC4=hJ8E&*yJdJuZK8^5vO3PwwMc@cGq|-G}E--ZO9ds^6YU
zs~0`dW9-g3HvRMA1DAxHt@mZ!b>KU7`;FC>w3%$v<#T-XPiObdkSyBf_N4#k{$K<5
zM>a3Zst-kd+0ecIXsqt;hc6|nJ|5-E;qTwhd#tauB0_uTapq~Rkz8`G+nJM#g^$Uf
z$*&iF$s^sQ#=YWtt)*-FH@)1WD%<RqMFq1zI4bWQ&SU>?VrZDuI;PI_eIBaXu{CPT
z-1k`)+jy)!95qkdasI!Q8(VlIZ~vP2>B_yi$6`H?ZcE<rXSd+<jx}DlEIo2kFF$mX
zIotH1W~Euv)uzRbSv$`@%lz}VG{^a-(Dj!IQ=c}y*!@JQbF;8-f5cARC7buJdAo|g
z>umh3>9PCFtn_!h-fy%^_Mz>B7kiF$bW~2Aq3~IC**;0{WX<|_b-V16GBg(5IKR!~
z>7Lqd<+7R98?T)DSGa%wA8%X6KR*r#EuJ9lax&Fb=o@FaMbLr8J0?!ubu!EDY30W~
zn>RYnStY5<C-f|Ta{qVc=<_8($~xCyeO48aUg-bw=k0Z~-(2aFSvD<NNqAM!7v|!}
z9h#3mu2^sXQ{+V4xBaqQq4~aNG%U6?unXJdA2D6~^5AUk)Adb3Oub7_hfB>j4}ED7
z$XD~EGP8bzMB$r=%~|XFm$rmH=Q5w)y&*>D)5<Mw4|uM3_nng1Ub9eES9<DB@0^6W
z={-LW?|#)TJ4G;i<=m^PwI6(YQ*LgM2(&!qv#IRB!@K*gG(0=LDcIm}=FO&cd_E~_
zZOWtbA~sLa-CX`e^Y;^1f9vT!aT{B2I^D3cTyVFWvC(m9f@!{S>+igYNBKF6k8JHx
zdTLi3d4A8w%eD_=1O=03HQAR;D!CiHa^HIH=tt{6i#?qfaa!oI(bhhZ&l)#F9cm+&
z&X@6gSbzEAh3FY!rxPAr6<_vT<$rACtCQ}!HOJf?Hp;vWc;R!!#b%{l;krfs^0UiQ
zHqPEZtFUC%U!y(Wg+A>3m-IIy@MuPK+VcC4AMJa@{o{+`rVH~~8-(|*Qg{Aw-Ral!
z$vWjbFZ|rctY`ZwdG)`q*Ue_WKQ;T|eC7R@?p2DKm$jVTU~%<oXpu+qk{4F{SOvJ8
z7VP0Y;`(yRN%#IOC93C6zt4RgajQgsjrrNKtsl~^%y+t;Z@9a9kK@uG(*hRx%?L_5
zm3~I9Y`f^^6>Hg&p5C5pt+AZ%?&{Tn0Y|-R^p1R*=>EV@HuT!sX`2IXerZ}6?9{wf
zR5IxN#%1DlI&!uVY~gOV4>!D)UpYnZdarp#X#SFY84@`w0@8QPu{pV>(re+GKP#7c
zzl)7ZeCy3`w(MBy9lu-3-G^RIb^U6%S+L4mey{vPg@{@YrS#fQt_9y*4zcXebe^;7
zRpRw)(_J6RiysQz=`X6$qjpe5^xD0ZL1i5I$#UoUFD+j3arOHA*6oUidz*C6Nndtd
z;jbYne{s{HbL(x+h`hI%GVe~+gBg!6K6OzMP1|B~J-)&DQ?pu>*Zob`^ZP0+i>_I?
z>_}4Zmv4LPF0*fm<jn1B7F`TxKNh(m{{XKvYw^}e!FO&yv5)w>%IA~Ux%wM2|I^-X
z%n9$Rez*96+Q#y4d(5XxOO^D*?*8@i=PHNIt%-U+h4g-2z3wzANc_S3eUC$zGPch<
zY@POM=Tz^+t(^zCHFt6zTC=G4)<O;~_2jV2I}$lkg-VMz?0IKwCi8^5$v^a_=-S$v
zHS4VJGDkmMIZHLfq03Y>?a(alc`xOa(lR$6mZ?#icCF~f=Q7QW(nr+$TGpJOBsJHz
zc5?UEHcel_QoG2ViaTxwd{h3JcdsUC+PBB6HI$6H5}%kg-20}#ge_?GNA1|4@AC})
zAHA?yiTm5rv_#GTDZSlZ<zA_mg+IS`IP4HG!S_O#^VMxO4uLs`yp>+m$(~NlOL|oD
zpke-!mX4G0vcGTT&vO%1*)h?mb?5xpEAqBNMmzSssprX_Gnq{<mgB_s+w+UK3d;Lj
zF73aUakjctPPVEvr_)GuBcI_v1yfg{^X^mE2{3f>y<g#T^Us{c4*y$1xb;6W?o%xB
zC}(z>Dw}gqcm6iPpi^6)#J^5_JG)Stf5QE%_hwCw{V!qjYO9+Tck8Uy+_YBV-`nn9
zHVw3l<nxaxw|(S#;lNR)->K0aWhei9{CF=QT7JjY3A<<Q*=v-xgel<5ou1b(O+zGK
z9(UWP{^#FWfxtd*5xrRpZ<d~Do$IuqR7*}+f91jJvB%%m+&nogJw&FOcb()iSL==M
zWGCIV7AOt8vT>=@EKj@s={lm#1xse-czph=G5dw5-Q(tqCnC15zd7OMs_!9e`j^$8
z?BD!C(kw>T=)cfTPksJ!t&L~vm+sQPUU^cX>FOk#smiJQ-797(NW1>~Tlci|*tF9@
za>4%`>K}dIv|%5E-A40ACEK_|#ov65da%Z?Tkmf5qSp`koFA^8%*=M%W>%2GBg@s3
ze@Ns-Po1>%#DjacToQ}^>8Sorj{j9*ss1JN<>sG9X2>?Jf3fZGbKlK5N$=DA&y**L
z%vL>{ARNrzw0%pvN5GrOkKeyu9~HJld5^l?ktoAUd(D%%p6}4CyK>t7<GsV7-`oCi
zavu<S^Ea(5WB2i_zdMs|I;`4~bwzaUqfdpYr{nv5?A@MsMr_X2yQ7!3^42+>;G7_n
z1i5yB%gZi0HeFA<a_3jEzs)D-jQj{+o0TtX)}6Ce;PlAc`bsgN>(#6?kG=nvlrOrG
zaN^>l$GOWDmaAV`ddBmQ&JStf&gD0nCa&Xg*|;&hJ@Dr4TD9*RzMs6$aBf+Y+)FOu
zH8Q@OD~h%4mHz}){9sgZdv(~Wq3DU+%;aZpWIyY7^X4Rl=I{E@!EN{9WB=*{%O%dQ
z4>|8=CTX*WFXph-VfXU8KMhWCCp{~icg{%S?Ozra#UH&YOu^<#U+QBVQfqZ)=+3wI
zi=I|s6jU`=Vn^!VC!#AhuT=Y9@p_2>=c*Q$4Qtiib+ez`d%gF}Je{IFK`%Pa8r<{E
zOF5lB?fF;p1WqO0@40iAe|uW`itq9}fvh!mFWQ)0G!#9ge(YLIV8`~)yOqC2EuQQ&
zv8v(sH<Nu)>|FNK{VH?jiBCWIi8I6AqsZ%LYOAZdYAn|i-P_e}HFEDZGk^1ZAbg%N
z?~uDfZu#f$qBoMI9`D(ie9G2D^-5&4@5F^h+zk^}p4nCQXAa|y8;7s&R9-D8`u0y)
zy7%9@;9o1=R;^=jnN<JFYn|SCb${(mRZ*vAM!yqXs^6XU^D~3dCr68COZR@h&DC|-
zdR6mQW(||zgR>4zuvhebzkQm@Nv4&TSs%%7<5m@YK4WR-exsZ7Z%zCz(p1uL?B1*l
zNu!F1_A*B6R_(TAx{&wh;Y~~Dy)XWY&&aZV%>3waU)U}7_U~Jk?|IHEe9LXNOOp8-
z_No6~SwD$sZu`3A_J&213+><JiJUIn@r1R|;o`X;T8HMvuDz9M_~?-0wp(kX{AAv7
zvQM^%Ut#-A>Ig?S-}$X;H)I!1o})7V#Ks@ycav9$uqTAecxyGdZg}D5U-)@>^WVMi
z<7eE{k1bmM`{UO+5AyDb{JhDq`ft=V8QtpD)n=<s_%Mq~-k19jB62eG$K0v%NhQ-A
zGI!>@)4g19|F3eV*&DCB?h{w0#VJ0P+p@?rr`4rBlcBuT<KJoCn~jUs6&VP*F>kvT
zXK=o{V1;9tdUVF!Sg9Qoj|qF0`AWpOmK^DRAO68@T6e+L+!M!^{9S)5U+UJ}cUjRv
zZ#(ZTun~-uJMhFb^}752Gb%dscfI$$wfp;e&c*wy)dX2zoqeBkXG36y)e3Eu177=8
z<v(qh$@(xlH2UwqMbS3`&X;8V^0;(lW9_^%NuEz97_M#GV#A>G@!p#~kAGgi7`;B<
zJK*6}_KZ_+er}t8|DD*my}MINjw<aE<x-q|FZ737rh8J<^-AWY&*x5$xRGY;Z#T()
zUB-FWQ!`eWvT#ki6d}F!Qoru>XB<Dfq>@jjuhl8P^|ea*^S9Kycc#2se6#<~XSw{`
z?Cs(9HS%vXZ*cs&^x3wnZ?<oMgUt8F{ihxqyXsV$ZS=hS_+$CP{QYa*DTXdRyWdN4
z#f0g1zitq%nf!eHM?d{J7f!D?KmU*CZP49)7cX2*PWW^3NA2Be{t0FeUv~+=>Wm32
zKKgw7+k(DtowI){Efc)|s^ezF)@Ql-T90-dJGOV-%4)HeWjQm|IbCBXKiM(Y&#@!%
zi1`b#OP@qymt?vufAHvQ3ctVfpBIaR1m=D|{nGDw`-JQ7PNiJ=b?!!a-z-aCr*F)!
z+n6ovUfQa2S#gKThF)LxalgcdkOk_c^_yoqXej4OZaY1_^5x;wXt9^ZVV)7o+zvi{
zYC8L~&b1qhny25gR?AS?GN<wIqMu1em#*HQxK3#Msr-)%=XtfP_f>Sd?``p<HtGDH
zn;S39y}V~@?V`WGlic*;*<*5#1(#lFF5Y`c>+d(y(=yWY`qsZs-u`UL`iH{nqeJFQ
z71}AkC$T2UHtfJ2H>v#^u74aJe7JRSPR{iIe(!Y|=WfyT4i`~h_l8Y!>d{Lb_Zkv+
zW?lZ6ZOYy1a`)PGC3gEgH++&Cth84>T>dTI>&XeLWqC3MuI5XQRPjxJVHj9gyeCg(
z4#Ot1jA-F&B8gwm%ncIT%~9<&)i0rN%e&XwCH7m*vu?)bh{&!?Sfckm;4!1<9KHE#
z&8?1zUElWVH>=<|!QV++-?E)tuUFR*X7-T(lFNCe-zzI;Z9n>czvf?#W5G`(&mKSB
zkT`jB8DAXltj+x${emrf7Fz~?%CtXr>qX%FTYJvlP&O+&eJ#{nd$;cMhld#Vzv*^f
zdgqn&i=QsytL7Y;ll*E^$)@xS-{ax2*SE{L##~63boy}m=Fe8o<PApGIUV(R($-$v
zeDy-yymdLp&kH0?|K7~&?tc9KG}9LX>f!F}(MIj<Q?6f+{;W}Krkn55ap%J7z^X@w
z(h@SBA4+knYI!A}z~+@w*CBQ0qjgc^jrO;b%$=0YHqLT3S{C<2$viLnq1B55Wji4g
zj(2hzD;18d4qWIhqjioYR8^`mV&`ftV=1+=)$+Zei<4L93S9G?95O}!geS|~JyQ8+
z_M0w?zLT_L-$`ZPib|7pdF?B_6t0<h#NWBzG<ni{t+(ghLm!l7uBz*du0HT`a+an1
z>R_+>JNM?T{@|Qbxq2n*#&DhKbN@^|XsP=|>`=+)w;XepbNv0YYtr$Esdv<mo&G!_
zS|c~5VZwsr^S+(i-H~+CaqGh;&*$g8kbZ2(mHYfMn`Q6)n~Xwfr&vGaFKEB~x?IZS
za^9+T$5lE{MQT+SZeGQ%F@LRW^J?Wdt4TSvi;QJlljgt3EwV58)js{A<>g05lN%D8
zPL?lq^$c5Jrf;0EkZaq{Clidm^^3&@$Gn{0(qeS)FXQ#|Dq;&8yZ8QNe4$}!cxj{O
z`Rn{UuCM>vU$RVWPSlz1d$E_LXFIN!Uy#PR@s-`OjZbTrR>k=Wom}%X^xsE`q(5pW
z*SuL%cqpnn!Fjq!=Z|@f1zw+*#z`IhCY8?|?2~iOC`^=pLmP|s<K&+nZ9keH-c#GL
zh+E8mhWts!t8Yb;-d*KP|MHW0=ALaS@?z`mtUmKs`F!^C<5H3)9dWOP@(o`VXumn8
z^vONHOLx<D{Rc-+aNfM+@!<33bz4F*&0jTIJ?zYv&Abx8`j(OZ-ZUmX%S_9g-yaG~
zarwG3T2+3j_DtKE6Ra)&)@<gShde5?R!XK^{Hi4TMDlAZe_wmr^?X~EBIhgIVTQNP
zdS;)fP5gf>Ztvoci)K!l^tqlPxV0}C+w`>s(j+dS>Fc1VkkBZ|7GDc4eYc#%^kM}Q
z$R1!Pr~C?qXkB9i1zk&1Qw2jq3sVJib4zMWU*q26n^;_uT9jFwots#af&IW@@Z>h?
zE@05CHR?RJB~lQ;=dq0~Enu5{LA!u0aqI#%F;f5oE`7JmoRZWc1yHb*q`IUg=clA{
z+1YUwmlUNY=5kfs>Mdan3CX>^Zb^%W=XC`|EyEJ?CWW~{rwoh_7#u!h;MlCtRbuW{
z-rnNj+0pQ2b%(~<lIAV{lK0&Iy&t>{_*+!<`{(DLSG{{(#Zu9G*5!(#hWiRLu1;Y=
zaaJt`6W%jxo-#TtSfU}I;i#&Rz;{@2LH(H!rfC5@Vr@=Zf7Ubj@`$u3-`L_{;WUSl
zi}S)^WrjzS7z!m>3nN(-1QZxqPW_kdIHbX_#X-)1<A8(6f_5jTjUi04G`5(tJ$uun
zyyfR_aRrurd;-&_PZ#|+l`o*YIVmAQKq!IX&`yWD9I^)$SPt;8wmBBw`>&<A<Vn-v
zg`!7}*x1^-I_5<LiX4l4y362za9c6s45y6&J?tV(KR6{4IEtG8xv6=nG8mLMCf46R
z8{lW*FTlp7AR%C2AkwLt@?fHX2Ae|$pTXs;>=FwXp16PT*M8;}#`<$?3VK@q<`>m(
zsuycgtXFM5kT6ABs^v?Y;#@{Q0~V2lC2RG&J|E&_cJMfH-a&w=Tj@!&je`NpiHQOq
zvY#t7Y}>`j;KJ~OT~4g0abaOZpbpPR;YByj8?^-QYi-F`bmz_j51DDNp8wmDAfYj%
z;LW|H{p#HAi)<$Ds~7V#P&x8aor6P8H?6T{=i`ODqUxPE)K=B!oC}a~kkZgsR_0}K
zxXT!zzoGla`A^U8WxUW|{=?sxv2nk?R4bc>po7ETM8AMT?We@KKQ%BFNZ4Gt|GnP&
z-`+(+;_MCy2{H!+U-38x{SBU*&}Q{FPPnbVv63;Tk>y<{bA$c-|9@@@zhHG#6ukGp
z<^QbpGgkKQ+&b^x+4~*;A78%UP{~;1s`7+U>C>emhQdNk$%Zv+bPoK#pZc$up}zTl
zswvySe>r?V{9R+02y-d?mu7zW;oq@`AKS&8>Q#zmKfLE_(_osukYQo{ihTAdY)zc{
zAOGhw{_*;`|Kq>(ssF{l{;zhvRl)LTdi0Cw|Nj>>-$~$jZ_mi0^|+8FQepweBZq(G
zD@4C+pTfI9K;qup{d;#=2sp~U@<?Yo>Uw0UOJmUfw+3s>&Tw-Xwmm$cx4-ktcMT3(
z0RxpQ60NO&_Y`tOIy|WV$+3$0Fz0qIu@C8C0Zl9Z-Tf{m)YJ4QWPZyQ9)^~K4SQBL
zuuSsw@Mf+#%4yW<u($4`w1Qff%R>%L1}3-q24ODeuf=PG92z8=E-<|6Q|D=Tu;^EK
zrGZ?tV#j-NZjQbG<NgO(iM(QE4ffsV-Y6=+^O{|j<*KmfA4Gl{dDt0W7Zc0AE3DNk
zJm<u>(u@0NtTTSL?jgg<1X&Nme*r>9zwY%vKKAV5gz0xzFL%6ra{J~2@w~4(89Cig
zzR14cThvzM9PsAc;Z2%}++U&#)nc~rZCkSKy3m??^KGZSof5O^&#d};ZLyms#xw6=
z<l2AnqgwHUMOTb(U+Yj_Q~C3G!QX3TB^P-lZinpIx$fu(%R&~NUjd6%C%wH<ebCHm
z?f=iu&HdxQFY$Qy?B2^&lU8yhrtE&S`1ou~f%~VAiF^-PFIepu;QVWLnrG0P&}~fH
z1rBBkvEO`o`Qx4I`j4wrKYl&eHp}sf8)LrohtiG@Jd%O+Q=-gP3-~L0KCifII`_z>
zl>Xy)cl-2;WpBKt6l(v=B>neWCQ*a*E!`i(R^~8SGylo_6&ZNF_4A@0Ci@b$jyBmd
zRulVbPtRIETaZ~cv_fl(h5Q-W^MMjxxz~?vPZOW!Z}TE-$JwhAdaL7qG^yCl^j>%I
ztMkQs&sKU|pX$GG&8>^sQr*3UPS&eezOmc)iO+MXl=zBulcXnghIC&xIL>oB`pg&p
zUh|6n`-|0Ab-j4AFn!j{oGbEiA)7U1e}w&>bo|9ytGn-(O<5A1HR=A@^ZM1YPg#z{
z&aW&!{loTwOb(CQs&)5tug}z6xPM)jZ&&Kc2`BI0pYuv6{%EtynY?%_J>B_|8TVh9
zR(;sB{Ay;J{QhrBFLV72Hdz_XjFON2eIr|JVful!*W#`|nVs->b4sbA{|1+dr!F5i
zx%|N3mFz`155)uRx=Kq=Gpd_=2K~HYsrBZ~kM6#5|KEDgS)YB|w&3WSJ#E4>62*S)
zJOA+DRh4~ftc>sVOuVu-sr?amQ>LKOsyFlg`keb4XI*SuZt;E3pAU|It>?`2T$8PQ
zT1HU#=t*Pin(#{=Ztpj^am;NF`R#p9J4!OnDkkjdwI=Q>>$$>??sBW!C3JT=)BSwo
zZ^`#o%#)~2`n~X9!Q$i@a~b;sZml%4S<tsL=-0|cm#kW@>|x`rw9{AO{`qjm1tAle
zu!JvPn{>bDTK})MO3u#uw~r}_PlV^mQ%MfL-$!}=3B(B=_MGN-N1S_$eD~z}HNA5U
z#G;Z`&t6^`__kYF_Q!>{-jf>snE&6u$@5Ouk+|7BEl>7@W?hOY+Y<9)o2BsVpnN&+
z9ZNqina@`5y~BC^{=IT1<}6vn-?}R1W*r~rzBvWGUNg?sO6yyf{*PeOZ}sbtkKLDG
zQ&qVA^}T?Ff9E`4(TMuu-IsT4R$$LF?h7ibr^Gon75eI(-}~vAZp-lvXW~<NS5=)k
z_{!C$I!jfsH|@C%+oR2rst*{x>OW}ts62U%499{f2mK=J*2X}qg=I0*gg;kw=4(_}
z-%5>H*txuOYlM)Em27ZsWXa59+a}dD{onfc*2N?0UjJWDO7rW>$ZwXP%pI1mbZ&+4
z@s>{|Dmvn`v+@-*x9NJ_G+HeDg>9Eo<ZU~nY5a5JJ@zwQexxTEz0uI}eN{#N)cjLN
z{<wG@o~659OXJZ@SLHP~8n*=Qnl`<0hoi;5!v~&keV$=-HD#x8YGK0lcJ{Sr+3KF|
z_%MS%{@Le}so%v~|L#~@>BQ{m^Ek*{ZnN3VjT^WvGfX(o>@tz!e!c$lM3F%6557Hy
zVV|_B)4$mT7yL407ZFSI$?cx9E&tX+z7tNF*A=*OU)(ue?K(lnZsE~Sq4RuRHk|hO
z_Wmc2*+y}bs=eG(_lNt*Pmp%odd})s$-PF2Pj%-FHU!ip{ku8ubA^dE=Q*_;UB!U&
zT#ID>bGg}Nx_!)F%lB!*^R~K~e;)nYs-|nb=z+q;yx$*K^MmagYy)myU$SxPPRC&0
ziTbzmL>0xO5+tjYFJ&;lo@QyjJL2WxNna2AHn_Myp~vZBH2W<@_Un8BA06JgJ>B#1
zhmLT2S@@dm9}nBTe767m)R@UCw~yAotBKF+EzQ4BckI4!nPKg3{mWCIU4L_pQCnh{
zM(nK0zPn8h{I6ebR(L7<K5+M=yE7yAfAtILS~55LxYG8WUluR_y(lTF^6#>vhiB|8
zeZTFRc_8x<W8?7qe5}6n1FlBD=nskB{M|${qxIu6ksHr4zVEJ#+xK4GSXWvmX62@T
zW#1RxyYy*x!>8We<;}V)Oie1}_G;u9Z(C%u>+*u|oT=X;ewp3hw{B0d@B6DfTVg)8
zd&tk%Z|vE1_~`HITfTj2g6|i{sOf(BEwsG(d{DpFmZuBrymRDx=ND=!Ufi%Ky4F^6
zf#pYUdx_v%fy|<1+Y97PH)X6exe~YaW8L1emyw@!+s;p4wJPQN?8~3-MO43TG`8+?
znm^I@%;o6a>v{~lb&GBELd?766TC$4uuhiJj-G$NEi%kPb}PT}xpf-$C9dyJ+<)ui
zBenbDQZA*krdtL#g#A6f{aY%nx<1T5z2?YAt%F-a&hLCIH|GUk+4gC#Ud^gxNGdY7
zt^I#;xp4Zo>{72dN69aL++21ZeA`<kKi%l*I_Et90?)40fazYZHPy<E?k;+K=w3pW
z*^d6b-qt^yYCZj*%rn{CVINvK^QzAVmUE7;Y_}Mfp1v$-TE1weTeO|ZGF!U_&U4%|
zEIZy-%6qBptM{Dz{?wzZGYanS+rHy%X>9uO?inAJoW7}g_-Wqq^9%R(x~yAxy=w0Z
zqm{}t`Z`0q+TW}T|8RbXhVVNzl@CAv>``M2o>?Y0kH_!bs*k6Nqy4(&EfT(6QvG%!
z@cEXw>=jp*tobC~%($_#R`^$GUeK1gyY6%^<qEjnH_gN@x5{%fZ`P%=i7SsyuAY%}
z^TjlW@@G3&ACqUex9Wbo)vTwdCmhhz%G`NtTIbEX2bs6;Ibv?QtVc}jd|~qOhv#a!
z&Zeo&F?Y(ylRoq`WhLv97nknu(9&7O@cC?Je{f$}`OEe{muDaT{wcGM$$M|BQ^6J1
zZHslA?<p-+(VO>B<VT{>`Q^bicJEu93!PodwAz{2QxD7bOuMNmwt3=*t4VKpj{N?%
zV6NuEL%)6BdCgrm>7QNH*DS8@A3Lvl7ji$0IsWIzv%eo_HON}cYv7qEf9HDkeVYh=
zNvS>0RS$E$zqxReqw*Wm>6%QFg3R4hY?fN>U2E~kU+figrkHr)iRm*lISn4aH?_>;
z_^cyPpkhCt<JBLNY0mY6r^MbpDs20@@xw_!qe`QI_pC*|d?9v4M@6IcY~G*nn;kdd
z(&7UXIKK#oZ(HWn<}__)sp$%n)vKgW>l--SGCyN(dCp_+5j*xvQZ;wpUB2~{&%N7A
zwsgPhIjwyrMb{6#of@}0c-PZIanTo;8`6$1y(;8oG%ak)8OIma#b>u(IzGMZ{g2=k
z3csGcTV8nMQ2i0@s~h!q=-1U2si!2)Jl@&Y*&P4v#`NPaBNd-~yZUnXI<0?~BrghI
ztuDEK<zVT_X!S(S;FlaN&dIfQ_nQ?&+#)_DxL*3Ru!D2=;m<#(OBV;GUUr|B=6{Uo
zs~%hG%HtO}7MTCY&|DGcD|dhY?5`ihesj!Mmwr8Kiqf?1+>DrR6*u)KiSaj@%Kyy%
z=dSZj!?P<{=Hl|UE5}dsFL`b`|7u3;+uofM{r^6^(RF@RsHJ0h!(ZR*8e8rvGih6+
zcR@2G%d<DHc%`i@dQ>$ui|5PL^zui?Wo143p3EzdYhQahvNdvErDUqy-+uFm)SJ7v
z@!z=7VqdGX(bxR!WE+p!y(+wqT6dJ&ncB~d&oL_VX|4abqwbr=^jRF&*PCq#65CO6
z{!?`J|5(3^t^(bC=dyMNnYCrizoj3(SNF%hyGi|)A<K)hk_uGIDprOpKQy@~-SGa+
zt-ULS_Bz#{-q~;OzWp0V=#H>=#yvM39e=zIzF+p#_T<_vS}LbDCN>(}H2AnI>Y6m`
zgy{8G42}Fgipb308g}W<>IJ@`CK=C4I`?E1FL?a_>g!7xT<p6Xx;10<ef_4-xU#83
z{$F9~oQ_%ZR;_-Nuw{0sQ=`tDrLMErmHfOkM^>yU;q2bi#YVQvtzJeoZ~Pm!fwwwy
zZ=Y|@{)M})UVD<hba~p=12b)BMu$!CUM{?Lr|<0ZE^{vA9z4AA@a^S~9M^7fdjI;z
zub-jqc7K<iR&&~U{Li{A_kVpkx~I%{wLHsnYY96pj*bV9Cx0=pEUBt^cqd~?k<z<k
z2P1zLe40?M-g?wqRA&2z6yvO0E9|z}3vugeyr~hX;N0^f!g{^Hg|~4t%9L^#rbP2`
zbtkTTw_9SzVykuEt+HRI8eA{`;CO24=5=Zoe{~AvUoSPXdVN#<;ffp24ovzGyYACo
z^?8TPe3zV<ek)COYD8#Z;jAOGHEniJcsoU2^7p)oh?&+`xG(OKJof8T(Z6)A%WDlc
z&&o@`w(@R7j?F2h(9Ev5nDj31_>+a(a-;fEY$sIfANqIbg7ZDEj%+bM-aRsL+PiAY
z|J9T_y*<l*y~5W@?8m8!-mlK}_vY-}G;yNfk)pd7GM)Dc%?pis_Dfc!ZR7svi8e2P
zte@<7x7>HWg!_&MVc~DK?(@IYf9GFOk-+CzpZ=yluPeOdv@AqcckH^NddYY3liy2E
zB~SVBFiK6z_tI>8se4V+C$3#rE@<58{px<5&0?=hOWRhg_4(~`Dk;Eb+r4*kt0kij
z6i7ZwNb|LhtqPBR`KPZxgHyoBX!7LNZTn`|oKQTVURhvsIMVeK^SYfyjj!~ay3|4v
z!XNHgyf*w%_vbfEe!=H6bWVS3|MbE3!`{XP2X;>Gepm17DY^5S5&!u`KjePYFq=k1
zi|t7`P^l*#XXkV;UGe`4{*Du>FRwB`{UCkpsO64~AO_>RpVk$Ii^UvL6=!{uwV<!6
zV0%AXgjevBw;Ozo%D=DNuv2tqrHjaHFDGqD&X0+V+I{+`4((BT-Z|;qpHGr6M1P27
z=-0TskXR?ba@q1!lfDz{e>nMBs!daUcJE2O)AKp|s<c%W|N8UWYUQ81t0p9d&HH-O
zTk*z+)*8#znYK#<V;&y7zP{T)$W?Fkfr~S~1Rb5ITeHSELr3dhUEd4#iZ22icNW(z
zswx+lsIvIh#gHp*pF~m~y{TiXNn04dc%GVB&b(I%U2h_KFSn{(IpXti8Q1sO*(KuI
z@%&6Dc|REOtJPRK3Qt)wr*_Iu){0{bi<J&;YW`Zik82&*#<0rB^RZT<BG;!KKfh1!
zPv~^B#}OqHIgbVu%bbnNWQ+4Y!h5oA`knhhu>}V&^i8VS&tUfS=0C?{C-$7$@-(_!
z#P0YhogcaaYs?ch*X0HrcKr6V>{H~~v$bsXmyYYMI<o0}=;cjQZ(RH=A8|uC^{1R|
zR?4qN=kv9@!veQ!7)KjjoM^k^oM-F242?fw`ioC*{yt?_xcaQjJ1<tP-?F#=)k@dA
zHH#1T7oWQA^gdtS^?N+$(e=OP+n(z<>7`@1>RwOB()y(fly_EKF5z07nCh3(-#)*$
z&C)Z+(8&7p?2A8c?W$Q)|DEaGWyPNX|4jJBej4t7<MMQN)gh~ZeCf}gYMJtnUjGbw
zKlRw{6*W_@DcqBlUF~-3nPlsw^%b+HX8*n-`A%{DCd29H<NFLE3VJ`+f0H|T@#OTt
z$=9PgRM$^0T>iTHti!XfV()Lh`getS&%1B?EJ8eLKR^0$>f*;@(b!#Vv&BDFny2&&
z%Qg1o3hT|QS>CdZt-LM5WoBh%o-gyI84=5L@2%|bIuO3AB1CN8Td_+oW_5_@+RIwA
zC2uzsezITb(~;!)=ebqpaH?))k=$k=ac}dSjEgmi`;@=_sxtp1ux;-{p;J3NFRpHy
z!vE!3Z}jB@wuw{Jr)}JF$s+precsgk1NqhUoYN*v3fR6RFWhkYV)f-ya)Wk#wo?y&
zRD3Mq2<zO`-8%)e!+yPB?0s{QU#MK<b$OuZ5pyNC%pyJgdznE@zVmK`e_hM_dq!=l
z-gJ)o&;seDkM6WS;=i=wtBUYW&9!d-^u)5l^xg(6`LtGN>Zza2_E%CBj$W8l{cM&?
z`jRy>_LOy8w7IxBfN|np&i9L#@4GW?%H+!J+6&?zM-<*YH^0rl*ZI1Mv3FEa<Tuut
zx&_Sr)p~vAUDqcr*=De9qxOU}%l@zYE4$`x&g;9i`&``gg0R@g++#VuKHu9;vIZRG
zu*-fUA}&=c?)_`huHSqab8}jMt##kC?vw8PWfilXQ-7}Boh=v6$NVnx>Z9;OZM)W9
zZ(ea-IWcCv#iOS>a;FUXKJ=_9+jFk-+-fCzA@K|A{=WH~6>oB}BeeTj%iB}kZ!bRI
z?q$84J;UtE(KD;3Dci~(EIsnBXGT)XqCYb~2yJBjv0;L0lwS0wnCFd`D??ryyULgN
zNX~Z9x_ihw+Dqyj+l&kGpYyd}E9f`<w3LdsZ;y{z)wjf^BH)L_Cykf?%oS_-#6F1J
z{4L+_WjoFPmC>32R(-t<6Ltj@wKqn5^?bKzckc3gvX|e?mbqrMOi(^0W%jSBSD&$c
zc`y1&PSM25=hVss9iJj&>CENtzidsL^=Q_@M-7W-N6(7PU0io;_m+%Cxdocpp7Dn(
zBMkZ<R!rN$%}}$Ua;|aUs;5(Wb8p1ju6?#Bf#s|5V^zJsVOQJcDzCE+PrP1t!|IRf
zzY1FuQ=1?2a{rV){@&lIQ@GjdoX6x>vGEsTqj`L99^1Ot=)K*V{5u6sRncqBCf^k5
z5;`pQ&h{_os<PAbjeYVz?0N7v<jrX<_fNvtRzI+Oe|yq|FOSP^v95jf-E+(8n38Gt
zH194FXWH>#j$6+1m9~%iC%u2kwns)KxNz4r`DK}_UbXHOKHG80y~0xH<7fS&B^TMJ
zO<cHSM#@^zeY%{neJZ*;>vywBv@H^l;0YCF>e{n=lG0jFttU&Z^mfK>%xN!tubpZ(
z>Dq0+?GZ;k8(jYh)o6OXPI36=Y^itrbBKo4`4#SyoL5&nC#{^Y%tLiX9xtEIs&&_v
z*vITG`Q^4w`NiiMZw~)>DCRLWVPePJq?<XSDQgp6uS>e&Tl)IYg-$ar|Li*t#FB2Z
zskx`9yXGl{Ez!BWkK?~a#Fw|q%F%a~IF=b?C4TyFQ|)WTvYcQ&_Y~HTcN8+#HvRqh
z>x0B9mI-m`XHsrm5;bh&`p(h6#$fwvofY}b(XRGNRx`4r-PzYghRjI!XPI(==N(I1
z%lcf6OTX`P`bRxv(z{!J)JW;m+|;DJQez?US{tJ*|72hP_dBlh>ui{5l5_S#uKkXs
zXRd7*UoDgG<yxB8Z@sJHME8q0FUM@QKNjnsR0JHne_i}NyXBU;w1+VV-qct1P8IT-
zenyD@q10{tzgm-;@87uh{cYfahL1rX@_)SjGWTL^T(A5tj^6IIW%hS69%?>F@BAT=
z!%%-?#`lRwAKkh>=g}VN^ct0J$C*4kvwY?kcukB~+OOKAtz>#9?)|~+jV1Esdj4N)
zD?S?h&c3@RN&j=^oI?Wn=Yy3Lf3S3JW1B10%lzlat7m7XOp#uB<>3_dH(w`+6e)*$
zo!VCOwAtIgxz_x0$EAN_E5qMLHAsCdiIpiTwKn+LK3gOGXM<DqMxDhw1T7~mUi3%q
z_k{w+mwB8k?;9U@rWktf*yd{yuf#5f{9J#;K;-Y6S2um`M5pm(9r@Z~b%#HB;f!ZX
zPo`#@ebnSiVs)r&k^HS=`aJ31H}y7+h7t>T<)m+G1&&Uyob|Ntlu7-xDbxBc#$A7*
zvdLs`QP;ggdqYBRzFK)e?ArsM>pUl%&a`MZtG~Rt+v@ph{<vGNuRLVU%KYku*J%8l
zr}5*>v$ZLD-&j{hGV(qC9eK^x`Oo<jrz_f*C*JTqb=f-d*;#p}&q{n#Rl1(*r3Y_q
zcvAX&DbuXG<rBn>=RQ#lTc0DdXYapXx2EqrAZ;h-`u5}e*(FY!N}bkN@AcZZnJeV2
z+5e@g^}gPjWp-*e_~m%_Z(NtOP))(|+7=P94?CyKzI4$xC3Sw9{=)j|-6l3GdLm*q
zr!~(I&R1SnXT9U|O7H0kGfOtaIyU@G_f^YHT|WEcj*UNA+CE+CiExwp?f7NIt<P7|
z&I&Azp4{dqHQ$qcnf&MZ!3Q&yH~$UsII5=FH}U+N_uoHHu<q+y_vLJXXzPxuE-!b#
z>2sdt8-}ZhMcA(DsBJN`tYHs7YT@~&!s^xUxVdw?y)T~m+P_5I>XxE^RaCLty<aO<
zNSCGFJF>n1#aHEy<^wA)mLz{Qu6XgS(>W{t!l@FMy(hm)Y_h%jN=K+<>iOBt6&Cx>
z_umTsb@||vNImQIIiI!D;&sI1=6XF&TlHh#vao8UdhfRzW^LN;`TVemJ*NY6U(JhY
zKVo*cZU29Q(>#^0F3ITDtRj`DGf@FNbIqgEn%s3X=1+;TzGlhzTE!*LUA0h^GfXz;
zT_(pOkF2@3%Pv2d9jwN5S$EqK?uCjM_t`J%T51*?*K%|DY_6Evq=&a0{$4w_{ZE@{
z5vyFN`>pIYwI=tQvv$Z8-0S#qyWp(9T%m68@e8{HW>jp+e!pK!>j3BZX{POJ^4nD<
zCY@>7zSqpnTl;$6jfW=N6jofi;m9~k>h_LVub(BIKbgb2V^70;RjE6^vxAfE7+Qnx
zrr3V}&z_(4;2@SsRwDzX8Ac)|StGq5ldP85Ct1Ol!J1kq7#f<GDVUp^Q)80V80Q}0
z9N2}esMDyRNmG<*R3k$qPr{~AjSS6=5YwoJW+oQ!Syklyz=r1Lmc~TRqxO7f4Y>XK
z8ynZ-cOvaVckbT3E88W)?bozhRQJ}ScL8_qY977Yz5DW`b<=Cl*)9M5XMg^)dnbK9
zRZp|=zPI(BN=V8oDW9Zg3Be0YB%T~Pa_r10{s{q>rX(k`ZrD_0uzAxa<-owqsNFXh
z|0}yMy2NH>8Qtvo=l_NY1x&Mc>^Z688*`6m>H&p@J*#CKdYKO#JA3}v;q#}s64Fzj
z{_a=2(J8Nx`6w-yFCdBSM6;tqx{4O(hUVpyw=SJ}I(p838>Wo2FBo!aYHWJ`7qNHT
zWS+a`td9eOs<62Bg1^x&#=_POY&XtGy?FG~USvyCn4TWrA03@{@7|qJ`*!Y3g1UF2
zm0QE^t=*yyvM+c_ikN3H|I?COkdws!XSYe3idMt2sarqq7nMrj7B3f8S9su?ke<uN
zV!40kj;1q>ehu4SFz{NsHgquye92EfS}$$D^e>OEp?Bun{U!C)|6Nmfe@)-qIaBh+
zy@M=IGI=+#L`2+XWYoIUbw*E4uZKZ+!q50NwX$;$%<F~Cg|n@NFPk^lFU@0`AQsF#
zV^8Rh^4fE0e%JW)&Yd}Tt*rj)iBIBZqh~L5cqWukU9E89sN~D_e^l1aZAi<n{hspk
zcR{XWLivR6^%Gi6PuzL5-snuMY{V9aYklh+EKlywz31XlpEAusoIzY$TU*~+pWy`u
zL)DDPjekTPE?;K+p|5&7{?T@+n!U0I_!zpk8#U~^CU#&uze;|(u(`s4qbEgQy#DKd
z^uLmdnOVcmtuwg~h-75)I{iBQPmL|=kM#bz`zLQ@cbNY*_s<Q6HT8S{{Z9E|miR1T
z!rbTbpX+4}yQeMMvTK{k;rpup!!`BzzA;o77ZxzixUn;WF(>EE9EN$@+3){<`ZJ&X
zU+~}kOIE2}t55&V?`AoHRpP++_e%G6eV^}i=ifY@Tl=rK@qO4YIOSmeXC9Ud|0L^~
z!}P*7Z#Uoe|Gf7H{ptVfH~$wu{r~lk|Mz>A#J+v=Z|U;C+YkQlzjx%`t#hCAySG=C
zl~&&7RsC?gt>NGLm3$xWbFXDF*<QBw|NbaT@yXj|1(_rFowXE}RyWpuzW?d9bC<5k
zITVLxiyN=5KYyv7@3C&%TvLt}TxHw-y}noZIVtt8{jTj-jW^fsj-GSB?@hecgWG9;
z^J6q8NZ$CfUNq(TBeoe9mNP4q_WB->e#BI<dGFg*mKPq!EAu5JvNguui($w&{l%nn
zz|W&zR>xet!S#*)#r=Zj4X%IqA2Dw5_~Tf^Ahz<qlAIYs_Zj&kd<hf(Hd`?06xCml
z?!F}d<=CQ6@kdT`B?SI$z87)j{{nNdUi%K=1B-sfANhVP^Ar2t!dZXC3qS5t+;BJA
z`M>hd)$4Vh{cp(M$^4)3{-LNph4tLoiEqETpZ_{t>dmV!{O#t#r|S=Fzp~~Zx8;4Q
ztfwy%SpTH|F`xO>{z3G&ZT}ncIdA`E-WQtupMBq3%hUEN?&XPzeVCt+zb*g1?f-!N
zs;@t||9$rQL)qWvHw|KX^-FT<z5nlB_+NDY+`Wfy$2I*g>3ZLL_M+$;CKL0mzva33
z&e?bUPks2{cl77|NoL#3`|Gz%c)M2lT)oqN(<3*}9l7~Ro-P08pThdxb`dda<~00Y
z^X2UEuks((cIN$W$j{vIzwu4}zj^-~@=GiKcK&<zinZiddHDbIoo8a^-n;eW)B5NS
zxu5?v|NolG&Qis2c7oXRgK10$&9)wVTYfdk<(<#&$8YAW_$w|L&S7O8#FF<rt5K-w
z`*fL~6S<S_ZmypAT{`0Uo1^P}x9!@oW}Dk<yOk6F?CAdbc7xcm+dX!ZBb@k;pX*xp
zrkX1@R=&s5;n}nu%g?@Qeiy#TxTK<|@A>Xx$#$crD`%%}7Y$qf!K8QpjKBrQ7Arse
zSXpTqu%OBMh>?}n(d;8>Y1U6Q=IXl~uRlK7L;l|KZ@n9ebHD0OHFAo|UnV3gyU<D_
zCRK)Wxy+XWVJ!)NrnD7hRZBj|@4v(rx0Stqk!h*iRe^;9C#Kw<xo5)O8=cdFx93cg
zz0vT_yKUNyA6|9a8a1Z9P4wEFs^V~8HS&(s#u+OjUmQK?8hk4_Os!d0rMKhG?gkCp
zui87NSxN^Vbl;ekp>@vVvZZ0M+SUn$Dzdu+LmyxIt$uro<Rg!i3Bf(4i!0bqZrfia
z;1XuC=dAzk{?(1bdZtmVZ|yInPF#87g7P`}`|`moS>gh}3;gHwoca*?{E<q(-KH&<
zH*DcaI=WHD`N|vto<9clCm7Ffj{WxiRgX*El%IF3`>zPk3r%i%w9MmO0@K=$6OM$$
zw9HT6d0*n$>!OR>G++5T%#AQwX<j@xQ%0{{<jLka&wDIWa}7V=+2m^@l=ed^MxEoU
z<o(wxpH2UoT{S88*-XDr*&Ll=XIHr9uoTUF@3Jm=%S6fKj*QAh-=FUid?&a6a_K~l
z%HDOiF5R=*o_(rim-cI`qEnxvrfMwNV{$3yt?Sl^iOC&TnOVv@x;GW^y$ia|bmGy(
z!sPfhQQ`al+$!r>`(5<*PtTg`vAgZFG>%Pa>3XO;!*`=z8r$h@oPTczq~1Hfz(jWX
zpIbktSbMK?nC0KH^~;3VSzHDay-fqwEq-rf5qvuGpD+JkzXjoKlLh!5%Zf3+W{*1c
z@vvpAxl`3#jpr|tLuX8P4NzS)^<DQghD62U`J9^l?+%!VPuVWNCur66eL40;)1RqT
zJ=%J9yURp|J@?!voi(vgUSjFGy6aSaf05pfeG)1MG=ID;zcTlCPtvO1@)xhJr|+L)
z%gV@D<2C#C<lpQ<ViJN`a!=Bl0zZ1ct~(VbDj2e6`7!UrNus-@c@ho#)Sr7Rh%`n_
z`z(F8ZO$Ve)s8R@k?;J^u3nQ_ZhLFu%IYUPQ?|quXV{(Le6?NO@EEtzuT%>;VeTVd
zHRrDMGTZ#<3*q?UWG}sb#iRL~FADB?^y#VPlA|m7T=(C4cEo3LUX0)D%`6U6CDS6~
zzSVK1$nTW=p_cJM!f&e_|EvoOd8>{;)oS1EXS+9To_>2o!ouLY?}E~1)Z}yAt~_$k
zuZlOdsxV>_>*`*%s|HISiZ3XN4Z7J-<uEtlPff<wg|Bs#-Qu?UZta)5Z9mP&F17TM
z+K*cTi_acz4$X9(IN8H-3fFo|L&1r!o0t}BF#fz}RJ<)T_U}yP{F~t?&s^W}TuF1=
zgP*~xd_1Qzc3%}aakAjv;=X<+qsvm~kC~Tk>i=X{y<A+fbiwOmds2d`FK^hiQ6+wT
z#E+hR8d`nDHnLeqPR+PK$>Xfi+JyTo_gpKLGbi-#X<Z}`H0j@*q6J%QnX^w{zN{b~
zaArAEphD}zx1Rq@gMH8Z?Rr}CYIZ4~;^Ug4>?k`IWpi`!`koFqhBjf=>dU4qDI7{^
zJcpM)e1C3VqWPUq7jCWi`ndJpd;MEZZ5mM-6?^IyKenEI@jb(7@$xx|Pc|^d{AN;_
zz9Uwb$&CB<Cr5pra&FxRKATSby`*Gy-XcxeF{fqa;y2eLmAzA~bN_u_oDlhBD*LUb
za{eX3W>e0@zfaz%I_+ay%kuYU=9U@k{#vxR%0lRv3TN*L&rJDnZ`;RSE?%pr$<H~h
z;51jY`D3h><^5v8!`cG(@1C`@oF)29G*f(;iR|xnykA!7^`E%7XN7m<+AVwz_WRWH
zxEoj|TF!a$J8FBW>rKm3mqd<mx;t#Nk6El*s(3}ObEVIXqwJffGp^#&cqIQI;LGg}
zw@Y(&dmgOR=nz=jKS@u#zg^9mONH_AzmtFVbxX+B=y-LviS57rphWzwj^3x4a!Zca
ziZR%KVK|YLBmQGy*5A$-S9RX#?_uDbb9l?$ZIhJ67C(_J&Mg#SshzBNhN*J>uC$vh
z*YwxTw6<V0oh;>h`hkX+ZE}T_x7E7x!%N%$uw88odvUXh)6YmYrBinv!@gOT%jLr+
zq|Idis>VAlZt2w52~C|MUKh`|?Kx5T^yaJIy+Prt!oNPZ3j4ZOfIC?>uI-Y9MG^PT
z*tpZB?A2Y5?Vbn)U46IjQMF{PY-{_}HB)7-@J-KCoRjru9W$5aJK1m^h0aL(?dxV&
ziW|6u#VXWq@|0Cxm9DUo(WX((?!9Nb(t*nD-+tdb;v%|Ee%?<H^Rj^Ioc_b+iWfF;
z%u#u3>Gh^>Lc#X`52w^tFg#flzRu|S<#ZRFLrfxDUV0xB^ePkkbYI}bdp+Gh-J5n6
zd#-$OWo4Uhc%^u*S5ecBhmSqp`WIf3mJxJYa%F~!N8s@}lSO8w#jDzf#+XP<Vdq*|
z{DAkN%?$3zFLnEm%Y5FdSsS*xRoXx0;ymN^x7W0|M7&L`5WFAXcxdIW>xv8bCRy9_
z#wbqPU3Nlbx89*`i}E!Y|0G;#T>G!E!Ly|Bv*6wZQo*OUMYPw(wN;tlI{HnzdFnQW
z)RXSMr<IOAZgsn!K117B-)>^?;$M>ImrF%8ev0`vYwCUX@Wnpd<#jfq6}4>=*XJMW
zo1@jW;;K;nrdQ?5{5v%z(<0BjeAj7GC9$u6OWscJyVlH^oc43-PDL-2%Bx#8_tiC#
zPE`&s+2p$RtV7E<4#&K|XOWdFB(+H`I`CUjg}0*M*_0ejmk##$%#B{{OC;m9RfS*u
zmuO@6nO;1#N}NS(qS_{xc@Mq*zB>~x^?RvYug-(4Ah+``-4&kJypwxi@;j(-`R@1c
zV%hWei2mQm+i9BA_GF!8p~QM!!_Rj+@4jCpS0ZmM?{g+%$|S34n|4n%VVo5bRTk>(
zc*OU@Tc5LUWGBsaTz}-U(*d^nx<_dtY`y%Kdx{sNbDXmgS1G7=*`(1Z((zM6)Xp&M
z^u{SYVLx>HEk3TBZrZOc=yEGc=s}p`pVoP2WE!~Ge?GZz;sBrNtL=qW7oVEAs4M7S
zm}K^~(s|zAhZ(mnPnh{uE>XIPZHBn(;a&Ur69Z~mmR@;y$p6pN$*JF~>i;*IG}k_u
z7|e9sCNG!sueG>%EUQv@X@=`1nH!Zoj}J_Ibja>wq~D3y88ZSyt9#DGtu9z__ni0i
zx>n8m1)p#2-Bi^XTp-OPx|-?Xv6l>=%c{@l2j7c3yC;P6J%?MU%=P;<Ck#TKc+CC#
zGAAN=FZbFR;ckswQ8S88$LSuu*=;TMefHLKzjp}4ny9Y4bnTtdl{bf%wX#fV+7*9c
zy?W~L{M`%grlm9KPiQTjZ0W53q4QVTO7oMkJa?_OTIjXO6h~L>W6CwRJ2G=$`u^|s
z*&C;C<xKxvT9c>!d&Q}~*PF8r{a#&g;{E3nD{|Mqdd92%<KOM$kN+C<#2<-va@sw^
z;$p}2m92R%H*ZXweo<n2s`Km9$$QG9Vt(n$r(fusu;2fpY#igmmN)I@@@>pN<LA%5
znYP%_XZC^s)%_oBAOGz0kZyN8Umm*Q-mJIgZyP>c32)l<G|$fZN_A9rM^9CuCDY^A
zCTC>z;~K-S39es}HS^Q0JBG7aR~|~3uCAB$?epiyHg~=)<F^u?q95y(^=Fmv+r@X;
z)bBoicR%k|gx+13+*z&1;?3=})VkWl?oHeEKVV*78~3-Vafa7L9Wpv)`z#9kWo}r@
zF3&Oz)H3@$@p1i`N##y8d0D^i#Wyml+s?gPxc1B;reIwIHHpW&4Rv@dg<d?EtMtp?
zz}rQmxB82nk<(7Wy?kYHO`f@hiN~H76g>W!d_;{iDv4>=T~2GpSX)zp-;C-Vi3{zX
zY`gqP)&8&Xr_b3R0@WkerrKsP^d99GJZ|-UTfy}Cl3bPY&*WnB)~`%lzMx2gRa0T!
z%WYqRB=!cq`@Kg=efOfohu`;w25y|FD(1lR#3bx`>#GUYJN#@Ih2E_9xia@g*Y)jl
z=gnKS(N*<O#>8Hu*#WUq=J8j1Blfqt^=a-%m|JzebYXPYb=yhj*NWer=M{BlV(uF5
zpDxFyuK4THbnjWcRsZt0PFMPWJPg-qmVEo>+r4A<r55+L`H0?}R5AN0&wf9SJh{K0
zp1pQ=*6sLi*?V7jZ=c8GKofsS&8^<cei-B)^P6VB#yqCB@~A@P*W=G_y^6`#D&m|c
z9at>0_RroKR=UaAW_6n@AH`1Sd=b3lUKRh>H5{FdH4WGEf1LAmI`gVwll<Ii+Se!h
z&-fnEGhMu<<(yejctcpMm4w{9)rM<~I+UKNDGAM-Ghy>RGxn`_g;wXj)=7Duw##fH
zKj%^FC&AV~4lj7DJoWp{lES$Lrd!1~%GmfFD>a>UuDPuJSo79t5noo8*&Wt8;v@5P
z!IFF#uisnGe7)?b7I4DpBKuzX10QDRG4}}0%v4FOxg2t<WQWpovG%RbC5MWo5*k-t
zh&%q^&NS_pQxCtZxyK&;=TgOylOO(G*uUAhW_o-C&y)8b7MwKNf5T_(Zz*HzkR7vj
zuaP{gu}V@z=|NoEpQ30Z?+LX*v9C;T*adHCv@U$YI%l_QL)_M0W8qIy7Q4-E?woEq
z&v@Ap?_Cey9IbJ1pVe{az@*qIhNlu17CK(2yjnR=s_vG2x$3h;=5L$Zjz6ysx+m4t
zw{H2owVz_M7M)n)9^p9ac_oMFE&k+>l^GK>uB4vlm?3-d;9Ip~aqoYwDb^M)i&v^>
ztTGgpkcqvSxcXGKW56{fouIOUNI@g68&_Kr_yZC$Z`^qw^uowNG)}#9na{jfnXVr@
zKkRl3be5dD+C3_xS8vb!o=58XDi_i-5_RgXZBi3_x47u(9;p!HZ(q6W6Y~nw1asW}
zY-*f#BRHIA&CUfc-1j{Eb@i0-65qE8j7#TiE!5MWF0P^a`|=XD*Z-#T{XB0kp2gFD
zckSE#@_zzkG*9ilY4Us76_csS+A`|e;fxJ>MQZ;dLO*}}=<%MXY3YNzU2i0(zF}!{
zt=O~hzq^jerwP6%D%Y*&sR^2VIpWQ%y&o2zZLSvjnr^72`)gro@r|j*<txN53rzd&
zl-QKMNV@b**POp@u@~kRyDDfb&bZfGE~9uiJykQ>{635AY@5Eb<?~HuA1cbUoi}$b
z!zr_~?ayW#mYb|jE3mIU^z1_E=DKam`(znI_x<Pbc_kt=@!mZJ@AwCfLG_v~2A^(M
zR5aRW*0ZcysrgA}ev<yS*bZiyX^KU>>f9HTA3w8xpHly)>Wlbdt3OxIyc9Z`+4eKm
zC0wgu^DW*#+F#pc|N5M(sQ<Fj>W9J~+xN94S0~G~eYLHwJ%8zERqhENi|zBbc+Pod
z7b!RAM!EY>#Tl!X%DP?94fLt5dzar7H2?41f4XzB=gJrD*d<|XBOFyHD|%gi|KU~h
zFY!plJFNAXy8G0(=O^cBee<8O|BxP|iS?rc2jm}Io6No3`+rz+oAU?u0)9K0mLC0f
z@u&TrOK+T*Wukeu-86N5_@9u)8yy8B_MV?M<&d`D2Z_d{<K>SO<D`5iTyxhxsW|Vt
z<Ax}$4*9C$6c?kn3zwe~W%rBwUO(^f&6T&pYY*kLSjXy>3a}bh{rWCYeC~0drMM&C
z=kJvo%gs|B$+Bs_n6)9;MnUn2!|q)>E}PluG6Yo~`n4hZ^>%k|{<^${oZG+Zw<g^;
z^jhDjXUnUbVs9tSsj;~7RMydho7MzPxV(3Mb!ldsb*i2ur^ZXQ*&f@=_`jd<Qc(E#
z&EDzblpRs76Aiw0&UtfWy~DALEN{^jH~pR*-1b*)e!zywKUWp3Iaqda;wI(%L)RZ{
zU3K~G9Q#QIiF%Q|-3zpTH%v`T*f&Qq{qjry;}17Fu~seH$m~$^=!f<S5!;ZPtM?m6
zOnqFm;aK3u$3pYAh+K_+cFQwGVa}_E)%UXg-4r=*6%x;$d|JEfn@F5#i%?PU*^Xy3
zRLrgj?`Kl2l(|=QVx>;ptFD5Jd*8lnvU{2OBH*4;#1w}(iOENFE*VRihnk+=l(c<O
z{&ugq8~^tSXvf@r-`%&{BJyA8owv#-Hq4*y*mpYie84r{>ZRM99lC22TEA#zD0|Ih
z`2U+rC+xK3bJwaDN3{NG#k}7-;d}d;_^3Pa2Y9+dl2<#Ozgpg)^J<&b_Js;Q;rET)
zpT9crF3D}{+N_saf?xe4t0(i^ShrjBHSeLjI)eTp=a(m6R_OQS*0njhKEA}@Y96=C
zMdz(yGj?b<o^J2fUCUFnqx5g5UV4g^7|XlA>b~ESPAz`R*fl%+w(f=V^3T336PX@*
zZolZAs#DWfAH6JCzS_xYvvUB~E50q!7d;eK?OES8Q^n!5g<|d6!=lVD5Bs)$DnDNL
zka3RK4YjDG=5G#t@B1ew+D})E>@1#tP4eaz89l*jm$MwRyI8KBntFU?OF>iMwRPJ<
zo^+qj<IZ~(_igdqN$Ke-3lINvX0Nz^d)uB3-7OEZmmQj8V7H?7@@@Ai*_Adt>x8FU
zwM>1#q%7-yLRW`%%-Tg4^$lJ>*EpMQ=27^4?U^$=GZ&QFZM_^*xZuE)t@fEqxQ&f+
z&#roZ`26OmuM5gQxiT{({)(I#l=4!)o8|UBCLt3CYfIzUY6i9BV@?v~_iD7hhRvH&
z`$@HfL2XuKY})TqA03g1Xel1U3*iMP=B;vm)VxGtLJV`f5$g&U(Y9|tqW*i7^-mTz
zZfNRSW1?0z*GfB}bhm-P!|t?SyUsS=ntA-tzCTYl8_UiWEc?iHruVC_=cT9=HtD{q
z`-e;$%9!@+uiRhM@WVUjGvi8C^_L;K%Vkf0w~H;!X!De}<i4EnK4x{H$jUqC8{1+W
ze<>U*k&iq4JygiDr{e9S;t98$pL{vh*eahko2_k<uJEdBFM40Q&YQOXP`cQvHa8Ci
zZ<g(;u`!o4&v|<4C4O1sGhZkxqsO^{Gd9HMu%I{Zr3a?15n}S|<(TKNFaNdf_byN6
ze5u$|E-L%3u8i_{EP8iIufjTm*?;^NO;w1FXrE&8x31U0W)`1%=p)A+8O~pKS9-lK
zk3YY%>0GhQZP%(VQJ3oUy63I!&PeAoo^OBs=-%BA_)QsDj3&=y+p_<>ch&-ZYc7|m
ztFIl`Uz~Pyue}zB#)=mYQuoJmP5CT8*XzdVWkM!q1s>a`J{SCY<M{qXz8CBco%5>t
zu6I?S=8*ZUrW+?e9T#z%JlAs4JCoP3LDP;*w1}SFzDdotq;I~}ZN5C8BkTY2m<E1j
z><;g-R&;#WJV`Wg(%vg;dz$mE<(xZPcFw)g?2v4@kd4^%{wuL3-fo@BcDwPU<;+8p
z>*xM>`B7hN={uKYZHMfRt@l5Yx!C#Ax!*?Hdnb8so_WtYZnEW$w@rNU&pLjb|FiSM
zvIA*uEqsBpOSC7NNAp^kozl2|Y*{p)%6fypW`d5-Wvr_2zN#?jKNPMXWSOx{Q7prm
zt>oUZT;5q?787b$|1+PT@it-81LsX@hhm$K6#BWm>SH^ydl_pn_rv))x8>ya1?>s;
z(yiLB^MXg9&`<V$QDVQ4L5|;)WaBx%EM9Ey?4IX;fF(5EQZ32g-_#=W>BdzHcHYU&
zh@PGCS8v+vaz%}=G8)I9Xz8wc(d-;@b)MBcrI>_WcP9Ug=s7l9W>)d70*&u4EzW&t
z)n(_lV*R}0w&QYE<6oW`f3~cZc_W%=zu45T@O5qfE`e8HW*6)}Zo==Esh<#~F!kj9
z&`ZTV)-xN<@rLWXE$<V#t7uqKJIm?`+p{@OeC0(Vw{125<$5sdmjA`(Lf*QFTX}E(
ztm80UTljy``l7GfPVIEa*|~XzHrxEe*A*taWpMJQz2`riRXv$;ar<kf^_s_jo%bx;
zVljK?Yvo@pr90IwDn{kb7w#7K%a(JpaoN7;66f2Du3A1{v#`_q9-f-IFZ{&P57nCX
zi(T^H1d43BSs;*5`7uFo%G{Dyf@^-R`}HS5J|Lt(VcmxEWb3+%bHA>8o09TzIb-PA
zD2b}(Gk>Cw);wPMlHKgl+CQ~hFIo#ZuG_EOx>M)*!QD$IpIt0icJxX7i*MgqpUAuv
z%xJuC*En<gEsZ$sjkT3={BtU9-@U<}^yucL&WP#_?Q_5Xe)D}p>COG3qUK4fo_;vV
zwoiPn(Z5T3T9)6hKeYJuDkJ+JI$i%Qjnz!fm9^!}e^xT{$8B@L%#zw|mpGG}<dPCY
zU&-EXTXw!r>8yaHaCJ|G^aN+I80lMg_3SDa91!U!{Mj{S_QZ|HT~nk(9r^Aw-uM1f
zeDu@f2O6fk)&y+Pb6LeI>DIL&)mbZOdVb7qmb@k&wacdaySK8bPr0j=d1cR~pU3@=
z=o@;dZhrl$yy)7j*kf5G4}NA9ecrHg=F}(FR-Pj4`4e~lnAEv@g8f7hKd+AtpE&K*
z->VgVHlH6TJ}XZ$NJ&8X_3j__Ya^TY)fHu{E6rt9xmWLQ?!Dh{UExcsAA4C}db_$$
zTJq=ItHTi)b^q(uUSIq0?7oDxfzNpvCaM{>J2fU$8J$_uc1~_XoL$I|dCObB?pV3x
z+ntPScPIUqG``jvz*ML#TQtoydSd<i)any^mT9f8Wr>;|<|ii?d*-&{l&nun{pIE!
z7dj)&yrzEHjI~mVtrB}@m#%F)@Zi(ks}%wPHb06UxQO03FtP2_-zh7j+-HA(>Neq8
zhi9$b-yO9zYm;2}yUomzSm9!`vi`VBS}Fg&{X((-k7xy#8f@GnAW&Cc)cnEnYwA%a
zpVE7JCT~MDX9xrb)qTuUxEh>c_DV$5ZVi`U?vc{e{rSCjr=Dni6#8g~L%LIWMme8j
z<HnGp%}S5L8-JFpFt##$)#;n(DN<UNDSaq}tEVvJfBR;i@_z!KKKMFr-Yk0QiDwT7
z%S?-XGxD9e&(u~Lx@N>L-4(fP-J)&#3MT*NkGkRb%H!vg1^3EdzKvF%r@x)in8o%=
zvdw1&&ubFDt5hV|Zc2acxBIck^+n&Md9M<eC+1}Mrc~?}uD@FT(E8@an;Q?ZN2H$@
z+h+Ch*H)fWN2?DjUbcRm81u=c+Uk&?>hYBi=d38dEbz<M_P?5@(3iwN8r`w#$`?N5
zG`@&gw~_hPwPl5`mVelAUhV%gJ;qmVjpx7Y@9W;Ra?YCB-E05v6^#zr9^3wkfp=Ty
zj>g?91Ev*~XPOJWZC`Rkd83K<thIAy<-eG^QA5A#k>0CL-4C18RxI#)V;pE65pBWN
zGa>Jy+v*U$izjO5L^B8;63}_IWKEj?pDk}id^0C=POmxn;=En^!TgigF3;PTwf}BV
z)}4!C7mcRA%{&x+G;l>+z}n@q&mH_b1GxTMUa~Za6h1IDwLB=hNmop!as9%-S)W#R
z-}>^x_*C&W_wQdCTGr{eHNWfL<sdVS=XW-jzTWGZHo=Ddry2qdc(B>AI6qkYVST{-
zRhgf5NnR`KKIPC*A0%<?*2}x!TOP=q<=DTt=k@DG-H#eSh29ICn8V;ZnRDqwZH+Li
zi_z;dH(jj~a?;;$&+7=c@I_Td-TDV*#u70nth0|VTc~>H-b-FCx0#~L7-Lw{HO(|1
z8a&#}<+Em$Cyz6~`RTT{f(51BsvCok{&2`nTa+&7?mP2S%dx5N`)eo9?vz?19I*bi
z+fsvrLL7;y-dW8DUVCl4rgC~gk-x;pmRo|`wdGdN@zyN&`WG_yc1cz7u4x&ZXA+7x
zMJooiYBQ?D{P?=S_8=P<i;oiHlSd*mwc5^>39`R`zT)=eznfMHu+E$8o|Exn$(olt
zD*4|pPMr55cV5Tt$1xpU^JM2AGrTkD-uDtOr{v7HrgNPf>_u%pJ^ZJ%^+*Iq=GVqP
z*4k^bHBOrYem+~Nd$M$%QJnm3tL6WCf||Y>PnZ0$b*A>kdqqBS;)m1Qu1X|rHcd=a
zR=H=FdZRw@!Ng4S7H2lUwa?2dAI(b_-!s$p#w>}KVfibyZ=G_Vx$Ue-Zo;qZ_z>pZ
zrkk8jGyaMxW&1fr$v-pf=j*BAPJRB#*Zc$%Jol;1h~@bEc;3YiO5)+&7XOV7`96vB
zInQ)pVd-z4wSK4O{7<S;on?1?qEA5HDjV5wN3#aS{a<hMO_c7PqjQ(D>fcX&wIk=J
z>i;{-Gj;JU-c;!`WoHihK4Mul!7x<r(3LlH-?BaYBH&fm+}wSOc`I*UWzj9ADgB&}
zE^;0`F){wqYL7Lsm(Q-;D!%nfS(SM1-g$yE-syeltO$3D6K{H>JjJUoBFy~+zt-Y8
zyY#;NF!ugZ*C~CQMNKnT^sdADn$~t<v&E~{<%yqLCUEPNfX1R)ivZ=k>(hO!1z#P_
zeWvZdV9~Z!CI^m)y_VmTx@!5Zr*$f=l^Z5)J>7m&NuvCCo=vpdr8_6h8`!Ue*8Qo_
zm0?>s;d0uB#d1A|CePJ3J1WxlZC>-LZ|`y%*j)JcoL+s(@964xQgc#YZa6dj{v6Y`
zXJQ+bIK(&3Z7z&n;?!bz?WEdIiLwy0kJ<mXJ^EAi?U3zdn<IY$e;<19>QntALu{f(
zpst2?jk}eJ*KD2iT<uc}RvZe-Sr+cEaC@ajbpHz1LyE^=e167o?zVh+M~~={<YOBR
zP19~3jS4*F_fOYe=8wU{`Bou27#F{Z|4}OParTb#eZS4s`NREdJ5QCbm|(#k`cNn#
zuvoUh_kT#v<-1#MKK+uuqDvu0|6*bML-C``AG~HW@3?OFI)6^R<juQYA6WXQoz`3B
zuKv7#=cJ=A9_V^1axbs(dy}&9oAR|jC8KB8`qfo_#&vqxIOIe#c74j)scrPKv0ZY<
zr~BUb_nw(^Qh3|^YX>_1g(RoWvpTlAb=St~^xoYm&*$ybkq&ECd()L7dcm}Ay8YwZ
z(>@7*3q8pcv1+cy(@%Z#FKQNE{rbB5vNf~xD)}hk)81h-Zk^6b+aHyCcH#W+1rPNi
zdkj9g&6<Af&Guamy+OSmC6`uZO1LoXW2@Sny8jQWv8cVmZPkd?jJz2VePR2=);FzM
zoNJq2cjxHdy1U2rOTGNyxch3=s-kmd3qHS84D5=v`FLun{tWqahAZ!cRhn!SGfR7W
zGWXw&ule?W%03y_+b=UcC7!u3?tjHse)JmG#&f40ab}i1$vh@&9?+<=<*#zlHc^pp
z2KSBAEuMR<TfOMjW6e*drk^4ecYQfFU1;IV8*3$WSD!0Y-tb0ev%s&#k*2ZBI$TUE
z@*Y{MB%duRnRHyx;OogsvzT1te;K{CLQhMN`5&0M#bEcFHQN#{ZLfFrt9Ebhnq`q|
zB+2Em@1fUEN&mO4f3HlvsC&NR)44W|o|C->LQjKyUi@!#;EUb%PGzd*%LS99cjl-1
zeG+@D;NTXe<;a!yzWUSdIr_#nwO=<U@UN-qowwp;K=V5BZqYQyBPLrHrp(baeI@NH
z<}&yAg;k;wk=ljQm-jfFXuo~diSd%_eqQDaC;5!$f7ulF#(E)--g2I*Ki0Ba1w`)}
zy5CJ}n<c{e>B#r;=Hq`qH-ybsUmX%MTmHw9&ue*&=H+A<?hv&38W;2?e9Hc%s#e!F
zXWuxvz0UE$A*<Wpf5oK;XPfclu8Yb{-um%U`Zv+_(cCxcf|GAtb&UNxF@DieolQX@
zo3iCLeEfX;=e6I<U#RCD%vYarB|bm;=&vV_Grp~PChlypKgz~+rAkZtBBrS6u3Cye
zgnsQ4aQ3ubv%^Hs@8_jrb4`gGX8*b(#n1Kq`@8Rq+x?c+Hv=BA_!PzH7zEua%+9+b
z<5qh%@z96Q+$_t()X%Sf^SMb`>+t$pCrajAIcV#&<3;DZ2(BIOvo0D<kP4Y)^Gzb_
zzW*1qLl^a~pHj@9ntJxh!zTy!>pBWPb*)jEdiUwxiwpHu?d@N)Jbk*P{Mm0eMI^dd
zIs`VKX%XA7VBSJo`^<NBg==zsYde?B{qpITD4*lx$+wE9e^8R(zjx(gmt|F>$t%BQ
z`qJ<F-*;U2cJIw9b+O4lOAMRVUfMLb?1U13${xPR;@GII_Y}$=>z(?Q`)tweYuER`
z=~$QSANQ4EVffo7#>*cv`4=ty^5oxXgE{-Z%vupr{+DaBskO^yyRT=e*|$b*T$ojB
zmH6lL9NxspRc&YAI-UD8M^7(i*|W?UxBM)N*T2daGzj}qe0Pn(717LP4o%K4?O6PU
zcNbjOSYCONd){Wv&eP|PbLwnLYJT)rIQQ)nsWaMZ<xfk_Tl+%p$}(;dsn=?^zswbC
zD*2^0W5q7{&IiU%FS{@Ladg{~icN=4@`(KG_$<J&yC`gbV`ktVf&Pb=Pl+clw|;M=
zn&&a!VPf8lr=I_w6rSmMzj?n%h?c#!*LRa(mOD+CIhWqmT584}Ex)t7cHXT0+hx+#
zmN-h~m5O=ndED0VwCe9dm6P?XGT#;i|2e7oV*i!9Pc|iF87x#kn)BE8K=)D?tB#+o
zvE4E<*$#UwCN49cx#sbV_6%bo;V$(#YkGbf9Gi4>^EYLW82kOEtt{>zgkIe^rIfL5
z!e_pfzN@~?5Vm6duMod=suW*-ncn91*M&lS=Pxzp>@_!hCG>Pn^h@{Koa=R1>o~t|
zv3Zq$x4QS~jAxHNJS>0M7Na7v?tQtZ*yO-d3KDkJ?dwvn?$T|}dKq|C_d;q*?ww$z
zle%fnm-^eU9De$D({8;RUelAJ&ldACdi5UK7%gAfx@`X3dajd+dwfpq>6^UScmZ4L
z*Ptbnj;n2F-WB~>b?XEVi&N8Y`p%zZ&dKz5_14CA8FOE4?%;WAb0el~*?e-oY2yU>
zNofof^6#IUGpQ$-zn|%|W#g-jk7j7SHg1}o^Hza<X2Iv0ln=A5ei=&zWJ@K;efFMm
z<Ojno^|;+qx-IrIPd!R_mV8C*(8_w<%vpV`qWjw<qVISo$x8_8mhM&9;k4`ZEXim8
zRQy!<=li@D-NQ3)Mq$FE!$HRzn3srpou8t6_gr<+*5&)^Uc4|=-)z4vSK*jmW{|M{
z4(5vjQ>1zSPdZ@JslRn2%iIf7<CYy3S+%i9f9qZQy0+!NcRkIT|E^KkBmSXQlVlv*
z#w({SF003^`jxUm?23NP;=^zMeclm!rDez6lV>(r2Y%gCBjT}T6_4zt`=_32-+$C7
z@%^2RnvUYvf377Hf44`O<`rKozP+&g)fVN0%e5tv*8H&gdX6twDMN3UJMWpxLNc2^
zAANPeS)Z}uOVr2AwMRKGSccur3a+WyI?dYf5u0PQ`tH)$XPh(Kmvb*EV_IKX$?@pM
zmkHa1F7UUx=v_7n-ISO1_RFNN>p2(g)4P@7{whhR-}3UDr<Z;C{>u70aduvgOSr0}
z_M&26-t_kW|Jp7(e0#-EqbuL+clM}%U!v;vrs+GjiXZg1U%=O5RNOJuMECNH$=m*R
z-EEnhwRoXx%?dWt)QoGDv6poB{)^i%^Ki>CJ-)cjerL~me+i6}SGn%Vqt|#Nqh(^8
zGyi9v7D-#T^O}pZ3T0*9+AdOlYPc--{?p=xyKXsVYaaYIZNW9W6G!u`m;IeG_ij|=
z&7gU=R%_h2<G}Gx?9wjzE?#c-<4b$xuFV&DVB>p3<nLDZT|vLUe{_4PF-QGd#TNcu
zJGWhRf4*=M^Sq@hJML$u#dKH+%`AAQb?mXFGJ9fymDss0{|;MzEq&6`b>(Lb<AL+9
z!qVAyY>8WRonI-LWg5rEZLVjNm^YUmmvykIJ@lq+fzhVSV`l6RrdxRasOs3vc)L#K
z=&!dIpFPX{tGlr=so}fNYM-$1<L9DwJ0BLkmp<eB#fZKAs+ZGmELr_n#qUdVV8!Qt
z*7)+^hdO3+d$0L(X~?Wl?7iQ4kw>u0)p`o|Q{(K5lRCNrvW2<D4ol>H-~Zks_v$Q8
zvuO=0BtwfiH}2f^ocDM;*Ye4JF1rp(ye?SK&s%Jz&C$8*7=x1XlOE|Ui9ZhtN!GHb
z$JcqJJY#;x+Icj$<-=v(lmq^Mwi$;98>KbRH*ZxwmGnKeYq?y=86Wfg=K2TE^WSi_
zcDfpN#q>hqSGO~#xMw8Q?Wl8_5$Bwnr}`^Qc9}=V*8Y8>P5<hS+|SYW4SOySX?*sQ
z8IP-MwX$_?+xnaz=@ndCvX%Zv?YJ^M{g?Y0s|_!FnlJBqD#5-sdR@8Gi6Za#j}{AG
z1*aQ+`*rE-svY-^`_*g}kN0l;!W(p~hdZSClVri`zdx>c-3r>Zz;#92{G~=kZb?GT
zOEhQkYd&#UbYT5e1>?}o8gtI7N}V?Jy>-F#`!x+2Hn!hyB{>T$a?}^y;JZ?j#w_<i
zJa_KoAI{u6jXtfLGo#w7?vClFggZYNGb>Iw-u=a_^-=3gnCsciVRueEm9%F$`Kh_3
zuy*}iv#&3vuui;i_)}lx!P?alV*4MjDqr&OJF|~_Rdy(!9;?mAcT1$%mtWI97I^&M
z<S56#-{a?`xL!%->i1ANvw4D9@4}U{w@wPP$nUJ2vAW;<1^=>_*|9D$Ph_f+FKoPi
z#{PNwgUb;i(m~Ac>k0!Sn<8QxKXA*IewS4!6WuCN{co8|{K4{Aea^a!u7fhC&dh$7
zz0=42?8UELhu^=ES{i9`r`>L=qQG^9Cv)s}Rerp&bBfQ83nI^cz4JO={N{Xr#*&pA
zEMvESsJp*e=HtmO#dl>f+h6^uj1<hZQRP0!rP4bg=JD4F+wQ&kx_?GG$K+K!Gb)4P
zFNmM?Vk*?|Sa#5R!JDfli#JX0$_c&hGABy4fN5b9o71khF5geYoV46sy{Kxhl#sZ;
z`P|qGOK0YYpF6*0+3cymJY9}nD{2V-lJR}oGKSzCy|VsE{!SbbxhAIqCd%0T>RIqO
zVo#B<PpW!R%J*r_hT0E)nxEctxSwqrf1|RsslsF96XjVpIy;2sbMMo6uU<cUzxb};
z6NWQu&kEoDa-nsW*9LR;y1!5S3r#Bust;sLdJ;QZ_4&lZM=cAS)=21{C{Iq&dds^k
z`fFq1eBM8gKK`&0*x`D*U~Aa9f>yS@?^!nH89B|IwOmw*k>^=<zwFf4uJwWY8TnE@
z(z!woF750++;?m7<F^qRx)W-ACuVP0r0rL|soio%NE^fZ6Mz2|Z4@i@&b+lR#KHdm
zA+^(29!y|UP*33zwZ74+v!`_DA*-&U&UlN&KR-okdE%QR&6j*xT-x+PxbL<d>$9xN
zGZXcyTn}W_bj`cCy!PS>_owY`&UFWuFI|1R<ecuWnfj;C&H4G=$$7r+@$H@yV%fj(
z-=0>#*)#U`0n?|KtBu80R`FIG=b34xn(_OJLI8{C^;vy+dmDlpm^UofwF#Waly$`K
z>@3s%$f>`c3S`}XCam{m^2so-koulU;Yo*7<NID0AD`hqz2T<pykx8GS`qIrUh=cp
zVCTNiUf1W|8F6m&MUwnc*@5nh9qjFEzb1R%+$_QIg0HzC%WAb@OJr*A^n%ncX~|6|
zXB{%F^4VeKV&}T~%Hm^%e>{Y5g+xz0)Uep${q`{VZwswv>)0=Lb|^WPE<DpRsvz2(
zKX`N8@tH1*Z+&>clsLov&_Q-4k%#s7BjUCHe-K$Y;pAV7>-RinHhz^da<<`Mb+UC*
zWGxGw_KjiQll+pk9#=TEg!bj`&VI7H%XMy6zDP>+^dxI9&FMdMe;irdp8DbV^LBQg
zvNN>@Ce4)6+V;kxcE|j0TRIhTSHD^?OY6q+2bnot%`@kI|2<{N@3;Rtyq6xh=_hq6
zB<te(W3mOpn&;C*ZkU;U?PXL*Igu8xbHDh)j9s7oRtMcZx9m&WeJ?Lduj}g#Lh6L2
z)=QbsyOMV6=Jfkt3pf5*Y8`m_k8SL|-?jhF$JbBfUC7?Od3)#gpg-&Wb4;BVwegA3
zr*|(I`uzIr7thkX#Im*9a(6}eNui_?aref?nv;>Acki0h+;{!jvA(YSsgwAUPkyi5
zol^IGhe^bNcDcm&MgN)o4a+hajhFstw<!5DRbp*N!pT1dXJ!8K7R1YIS>7$!{yeO%
zNq6(XRJEy(Tf|C>`#wijv;3Xr-lHZcEw#+?KCjf8EeC2(I6G~9xaV};;we`5Hsw#1
zk7m}G?DuyO%gbXoE8ib~&^~W(yoFI)<C^c0?irq;vu62nS`}<?@YZz>?cG{hHP81R
zck;sH-o0y5nkQa5!ogjd|5TAR#H6Q@^S1HBrJEkQw^X_>(tq3YQ9V<j$?MtsCapRF
z_8C0xF-q-CHK|$~y<SHwyW3~2W%SX+t;zk#3_-KaXTPQ1o4oY+&q?}G-wl^t+r8+=
z+H)z1GT-=X6a5R`z1+pP_;OwUUtI%E#ZI+{2KSRgr|M~MEHTrtTe!Sq?<Gx-wGyxA
ziVJa<&aa#&zOQNzpIO<l3vcD*?B=ICe?O97y!{+c-^E)J6+A}yi_8V?<rnrY|NZZr
zGk0|pyEa?eqv<Jf(vO4GUa7Av&iKy1iD&;>+glp9=BAf_i)sl}bf5DyWZ&DTx%v*D
zuBdJQFSRO6_Onm1)oq2G$Kkst%09|ea9b9;(U$k>)3+(f{Ni>qw^#n3Y><EOQU#ll
z@T&mR$rn5)K3T1i_P3d@C9c}+b=>6F-Gw|qpI=$_i{~2GlUB!9tEU}1Y~=g=M2ouU
z?j0OVPb|V;)vi7svYaKLw4!O@#OycwY=5!au>YA65UX@<YK)ss@{^72%~{{FcIHh|
z-7L0mLZ;Mb_Ua!wKXz`4@RwMdxoqQ#8pp{$+zZ82tSXJt_gHvzy>?ABT6^M-_=(&%
z42h9<_*dWCCaNze#q9l4M%={vrqrpZl(hTaw_enhb=2vkOuAiZKk0nMXXQ0aJTc)b
z)-L&aWgDlrjXm!@0h4zn2fhVJbe)`g{_hvz^$(skyD%Cv%|CL(E9B&#6Bb#oWkmlU
zY~OYM;nrz0*}^{bT1hUi^<=eu;l#UJ_*_o#@ynba=djJXA7Lyg5#(*~{?7Bb4^gq@
zPIsI4&vZ^|mfd`2lcfB6VV;m3&0cS|X6QV9Z&f7mN@mmCM%zXDjXV17w#RNcd7<b;
z(Ug}hvupc;pH4YczEnV7wueVfM0!QQ-mk94FH`p<*{m|*Tj;hh)Am<E;}iR1-)#NQ
z+pX06b>h8y>z<kehk|WYCZvf9)E|F-(dOHYs%P3~?KKYX6t>OI`mS*7OU&&}hb`0!
z+>FFym;QYBcgewDvCq=<S8wZxT(5pJ|Nk=6KqeEbqd`+&eA#_U=CUng@Z0K_w-PO;
z=H`8HxqHYhal4f2ANOr{G(XM%rN#ZI^>3AyyVI2C^9~=?jMv<|)y;5I=#|e?W5YTY
z%jnw*3o;!|`?C4)dk((MhRM7auI9(`?7SM28NbMmC8m_aXw}nR(OYW!JI)BzcyeAV
z>=4SgRXeq8?}tx6r#^ZT(sGL_+4<I@7@hx}I<6Nd`kuZWCo5Nd`P4o&6>izf?@ImC
zu9%)WW~RY=URw6^nrm$W%yri`1UYfcaM&GwD=?<&`FXC@>;Fg078d`pZ<o~c6@8bF
zWW6yzI4x%7x3oPk_Bl?g{MY`=L9r}{?{T@$g}&#?JpG08TYuRsGPz$@CtJ}s?bhEj
zt@8WoX7z@gJyNxEz1bUwC6hBY8Z2GXAvfRsy?^rVjtJGSCLwQpT5>KQnw$_5=V6k`
zBd!qZ9>Bis2J5#y?=rrW%s9uT%Vk;f!Rpqdw%ortx$9(YcxFvj_@4FSWoyr@C&}kC
zSCqL(K1tgAPA*4!#)QUp*3d=uQx@NFzU_8&@~7XEPrqR~_~KK=JZI+O6(<{?ox1QU
za^>tPho{8}w_55;<|WoNvV1sWse9MOV3B+F=?Q+C{@uxcLT{PtPtIhtihD7|!E;ac
z_Lip06Vq7DHs|hlF86Hm<(htD^+yfe0H&kIBeu;n`H;Rpz;r`)cIrz1s-i<l1%*d1
zJTlt8(K}$_xk=SR>TMezhHvk9ej>ltz~*w|A+=*4->v_voW|NIS9mUvU+4G78zS1b
zmzwO|$uDVrDlbi_H)(A_XODl(r$1kn{(kh((^J{GEx3fMRQLP#seJbCfyw#n6x#Wv
zPo2q0JE`Zb84%5`xcWq8+RE8^3k56<y7bQ+SKZ^JE~l*`Y<N<5znhSU``;r%S0dJ}
zwTqkdroTb9Vafdyhw8eNTdTdoIbLwOEDmyWx%R(k@6V5a9&BLD^fi7Tx|H$esZWeo
zR`_k{e9YH7`BUeCy1JDUzWozEcBP^!vaHo4<<z;r$@lN(_P+`^&tNp~sq*Jr3vaYU
z9DDcFuKD?vqhG_9ID0?(>fv*=J4tZWH_NQ=AJ?^XK2<(D@!O>5{$&&XGJ9m^$ya>;
z#sB^||8J2+KNc-!%R6hSeqi<2*kwl=Z;04-_pH$p=D2=&z2m#}mh%^>uFN+I<#b__
z;j29=p1wVh;r#8QRMtrLJGVRXcrHJE^F#hop01;L$EWtFi(6JJ=DK{))Ud2@Z1d8c
zc)q1?7SqqFBh&JJ@<q&IQ9u56<p!Cl%3Ot8nHRp}k$k^zzw&C^=6mNj=KSH3|K50T
z4(IISTUDn8o{{&M6db-N;;Z6^67yxptPGFE1_dYGGX4Iu<bKp<nb=(IIeQ-`vofVV
z-@2wS>*w{nsLrQ<7@Nu$@h{%`($F)a_VqbVb<VuJtrhID$7jz7ZDwNRNzQU+jgaH!
zT~sTuSGTnxAvU<ec9zy%Rgv_>-?RHNd{*eKn<QFQyoDkD#I79Izsu5-Zy%G(a5G7;
z+`h4DiD&rB4TpbEs>w2{d2!59BSx4f&uPV8x9Vi~6RHhyZ)bkuwUSsE-4~si(6Mx4
z@n3cQmw)wkRV^z!6}MtnUd73?!keTv^)N^G@(8spoG$I9GcQNr?;-ub$*25n?pasP
z6}a>5MD-pEg<0+&6n`u2m*8vbni#<8xk2LI+Z9p2%u)j$n7>&0U2BPJ8Q1-0i<4S&
z=Pn2_bWq58?r(fzM$8`84|fah25)v)wPCYT*VJ|S)w7JYb^MvvX?at;%!$$C$*T94
zF3AM?E$)7Htz(D&)@|B$Rd#w;ZXB*%SDEzX!fMsPdZC_*j^oOO66!ab`F)Cy$py<;
z{a5(i`1qXkt<bFg^KT{`PoBFV%jLp}!g;#)POZDrbz=&nkivwRRKFz??-+B$)V#Xk
z@I`0&krIuRc9+NOZzLb?m3eKjJudG4@*gKMo4M+)&iwM<uJ+~0#P=&6n(W}7A@<;l
z-G-~xk`r$l&-tIVyQ4lxqetdv>gr7nRk>o3jo%m-|K_Scv19czsVhQ;oSPr%KHPug
z>^TqB3m=Tu-JRr~bl}4V{i;_pJZlnvraUMM`zUdw%jWDH-c}ypqibX@AN;uIIFF~~
zhg79IQ-e>x)lNJ)jaU6y;;zjPpK>!6EGsk+bG|cq_A);o!M)s#3%4H?o11bf;M~pM
z+|yI%FFog6aw@bnB#Du~P#`)?Nc6~@`?bc~W;{xZ{gb|9S=VgQi$zPnT3zc~Shgbf
z@3SrY1b$Z8vaRp;j<^5*`BTKnd2YvaCVi;vJNIcq+x+9HI+cg#U%#Qg`oaG$pPvET
z_nxGNT>ZhdSoLuIzAptH=6`}&XUlHhA7^pyaDDv@r6ZdoO}f5Jx*1!W#IZlaME~AY
zJ4Y*%(iwtv1&;R~ZTh<WM5hA3%Bq0#jC{6l1U^4f58poFNoC>Vo@pJq+1(z~8`GMW
zC}|3w`hM=3FSo?ih`5!uEJ?2?{0yDs{&Y>+RhjcYTPLtSwRPg!>B6GrRwf?fem&ZL
z-qQVI2K*H<rt24`cI3^vGkweIs2ep4ciWv=bCNms=EGSk$%&8rIZPEiAB4B9dA;(`
za%sOuD_gk!K2qBu^T#&!#W{IC=BW|=Z|x@8n#CW|*fS|S{Lh{&v7YMzjosSsn9eId
zh+(rZ@Z45cI<tHKp<rLd(obDM_it@Y@q8UNMZ+-b-2U5d^xmF$DjUA$_FU1mocjO!
zKHn%_Q2kA=)3mUx*ZAAXT{|8X{+`RXGpA-!VotB|3yCw0OjiZ&Mf|=pPrzYH(<S~@
zSvT((#oo-nrn4u?OQZ2@`?HrUiy9w%H&smk`JLH5%qoCcc5U81#YwMZJ{noJe5~K}
zS--cS`|ITY|86arwpVQau4g6Y6$&yt<~)+qmShNjeJr4BqHG1bN$2iMovwm&gHj8Y
z&O2heKwRA?GSosspgCpR$!@uwIkp$Ldgq@O+WC|_Wrp!<hs*1}#!owMcDm2&zPfEY
zM@2<wS%pYNZ<$-hDzixeOwZYso_=5X!auRa)9viKg+dRl*?cbFoav+BUC5_kFLvkq
zk8b&#V|Q2F7GHjiUvq^H-}G#62jc^WKCPO+)1xN-IZxG<6MmDdMPz=3{&@Oqo~G!b
zXMS0t-1>K2)+8J#*gnx9&F6fJ=t<*E4lTV(UW>Rloju%NWmlcA`sd3WAvvd;li$|n
zt^2(xN!mO~r!cxJ*lB`zgoS~n>Y|gr7f$HxFchD3@N!`4q;Ikw6AwK}7TjWBV0)FR
zB47X9%|6u@hfk^>)WQq}ecKDJ{hj>sUAsWvL4W?&{!^pY?EJv~=dU2++ov5ttDJM2
z=j5J#(D^Uxq4vh){_~e>r!0vxz53(_)1JLaBGa1w+$&XEn_I)lveK#L=xtxKQ}$aI
zPYz!6{_pf!ZX>xhy64q9<!5@XsQucZy7Eb!{N0nzbB=y||4uOL;gS7wMKntMt@hg8
zt&sMMmxwv@QMzvZQK#OA>$=5O+TX9~Qq-MP?|wk^7b6?@;(wM2afZoidwzSkhRC0{
zliL)bvT;pB(OW_FdWpy;UL%$3GnehkiF$2!Jan$iUatL)SJ&))tES3n)c--HXUc-q
z7ss!r+18(0?zZ5Z`0gv}3x$4iR6pFgtswq}-LLSf3Evdsbaft=@6WIei%;CwAJn+2
zyRYtuyTQbQX5+=VPq+4oemNb;CAL&yX<2eo+G6?SiGCG7EN@>fyLH^#d+Oht(|I#E
z#eVefT{ypH-r|Q&&Kr9*)-66ge@@=+H)S^FPA6xv%iUti%}{r>o$~(Ce0Fv3&blWV
z4^&+r=ZIQvYqdDRc;(BkB?<8gk5*;WJj)huI=d>c<k*TSb0R)X->&U8ZC4(<ZuiZP
z8O2S(OhUdwd-7KXxLg+qKeqRpO&gz%!k0205xc^&muwQ+bxk(=j~wf6ob|Fw>&zSG
z&eE`w?|ZUde_%~m8Q@ku>1@p8bJ4RDZcMA(Tx|R;QY}wF_l=heyEEI-?~~3QSzv8_
zwSIoN{pGz|Zms@yXstxkmM;}q@|QlZU+zA!Y+9N4`;|8qJvlbv&#M`eHY|w!`Jd$<
zGvlA_(afISeTNob7W;8vFU#RwH?03{?!V_;rpoFz^NZ&G`3j6ISL$Z-B{Ls?^T_r5
z&#PJouW!{(%)IrlpD(uKC+i2MTR*}iK1YUmGE_cZ`)3!AQ<{Q7o5#{@g&m=x&Pyat
z8AoTHPOuT#r!C;%EPVJ@%8spP3vNeRNi6McS*8EzQoG-_L&yHP-Mdx9wpQ=lZ1MSK
zPDSj$x$iEi{d&9RmiYP?D`qf>g>L?{S|htJSw>q^m}}Y51m0)g;-!7xuSx5?vWWRx
z25+g9)sttHse89nv|Rf&Z+=T+&B3#Rs>f?fGUvPLKNnT{dF8Ht!PXjyFO9vbPn8;t
zZc5}_JRrSw+Go}^?YtlV#qK^^Fm2C`Pt*Iw-kkd$&?l?taz|}<{<nKMAuBQqJocFd
z>D*YO7p*fn>ZEk{*XMN~>K;mJYRzg5Q>x+)xv}w3(Ffm!yp1P6{ois(?w09;q^Wr#
zCptSHC@$|_vVLx%g2Q!*S*_1sb8QtidDx+I&Sl@r>WRV^>Q#D;>Q+7!J9u`{S#=dL
z;n>r^%Png@*7<ssvD|BZ@OG0xDzAlrjC7$;8r!THPKi?f*Z%)I7sPSr?WCMCC*D&l
zr@#3q|Jg!o+MTnU?d_KzCVONA*u0xC`;2|ws=IqLCfi(>`yFw?ENahMD;@SVJO1$T
zimcDLGrhd=N|;YwawO9f|8+v98C<(wtrh)qfIIanZ^w1b8F6J*TQ<d+-Mq@{tP!WI
zo95^AXW?8&yIG&T1+5|uA5>$n7qMpYnWPmT@^o9-LQB^ZdX_oTSC5NTx*xuKqT>3m
zb24df4zf4h=P@bJOWL{e7^4JptKzl?N)nCT0seDt8WlZEdbZo(N$iY;C!*rQpJ;Aa
zX>I7uvmt$oCEHauNr{%*r%#4&Uira%{;{YTbCy0$In}LTc)!SSJ;zdEDbKo{Z#a~y
z9&RbLyLb8Of5Go*qGDpx&g^`7jdhv)|8wi+Nlj0?5qQO{<wA-{_))dKkhd<i%Wuq6
z>aou`>Ts?3EZfJc-@ezp{Tj9L@MO=-@I#lpt@d-?ym{lWaF@8b)s#D{kGO2x)UD4^
zKVyBD&7WM~Ehhv!=K87{*uA^+Rz34dO^)*)#i{NmxkEi)ccvP@{Vb@kF~_2{W0z)}
zT~b}kmic~HWH=ixrp>*m!T+|rKJFf~a%lVe=Lt`;0=W|nJASBsEJ+tS^pvqlY<jNM
z(S^$$7UZAr;+?>=ev$AK$!%8le7B^{B_5sSo^@Lz(cAYpgV^GdbGup2MV9<i>A7nt
z_r~+(e!YaQgjIa^UhmsJZ*A%s&vTWpjWb<qyG1I3{|eb1_AK6_dz?G5+@L1mjgiHZ
zYm)m<oIIYlKqp<XUzVk^N$^CcgMt*}S+o4rOddDforNur9L%4P(e=0q+wnF=NGHF9
zR2HNv=)2|TmAIr9Cl_TFl;jsdt_bl<%uQ9$5A|^i3UkwT_6_kgG{Anojj^eMu92yM
zf}x?2iGsPQ0pffcGfNXLedojikJQZcj1mPi3u7*QkTt1!B?`KRAW6@X#GK4z$Gr5M
zR0Ul_6E6MWlGNNV1v3kr=i4~yJLx;?yXw2^d+2-W`|A7a2j~as2kVFEC+a8bC+Fwn
z=jo^Dr|PHar)8F<>Zj$G7U`$!XXs~C7G$L6>1XO^>*wg_>gVa_>*wdC>KEu2Bo?LS
z<)o&SKv+c}r|K7^7G>tA=ogmem!zg7<$$GO9Eb`q55g?cFV-*4Ni5FLFVQc_C`wJ$
zFV!#8FW0ZsuhOqdEy_nZi3fb{4(drf#z^r2JBi28(g=R^j*)_)k%@^3>|h?0lX#5H
zj4g;fiKll9Yk*9Km~M}-$qr|!^78U>&w}NJ85t%!tPkF8-p$Ufckr(24(o%8A7<RV
zIrrw@|Es>QTD|LcjQ#iB--9NtT4CHZtI?++NTE92Elf?!u3^WbHa2bUhSt`(ovp3B
z6DI{7K6O*<N4}-fQ+0(KC%ID2f9K~eG`Mi%r>|P#n?GqQI5x4L*m;8~;wIyon3^?r
zYIJlM%*4d*)k`-WsA1qt4%aqrP!e|FOW`kZS|Y-3S;H0`8DX{m>Cf-+485AV4O6F2
zpZ(CkykUi`Ku&5_4u612**2D2ds9tJx3R8h_F3C-ZvKC5mfnV?n>RDd8*iRHTYB=w
zxx&I6If^c)845NRZDU!%IJY4oe1YTx{!<L9$<`0zugnn8WR#i~=J!8nMe~`tcY6*x
z9GHFJ+9{EY_g|hpO3G(rVZOJC`AVuN!zn(8-}RE(e@-_reh4pSSmU$iKj-)9-{l+E
zy!l^ZW@gHI(^BGg{kBcp8D>P^WMVuO#N~7D-8mkH<m%1#JiWPd9rFJjTX!sM+cC9#
zw)$y#JQIXMSta%x{^_1SS@XuJgEu=*o;>x9zwb<aOJ(-vC3|ODoH)mq@%~NA5BFN3
zu!IFKqwm`r|Npwf?3;pl_4#_`V(n_<&-NKJc3K$JZ`oc{!g$K-PwHnir$5nYj3sOZ
zn>K9tuwgS}Lm$I}-78f;%X6C8Su^|(+4N7b?(u`SFBys$X6(PnP!&Cs`F@>%?cAQ&
zMuzka+!t<tp5OJ~tz*p^24n5u^ajoghfc|TeE%XpX~EC^A8!9{UVDdemrnlU<6H?p
zAAg=-|0`cOjcwERzkjy>obP`|=l```{*S)Y2mb31^5J>H_aWs8gTbbao0%<c?qrPF
z6T|TSf8QthfB&ETTOM-s#;f(W{t5bDyC=i);IDY=_IrP4x4n)pcKm$((gmh}*3CjM
za%VL%%-Y``-`_g<=$E(MU;kIK{ww+UfA$~yMStSk|JQ3zD%!a9Z?OMo{pSDu_img!
z_3d-KSpMZVkN#|v>{_t>?}q>J!M+dnUyBsXNPC*}eScJB`s3}qf?Kz5`0KB{cFvMD
zcN){Q!p<$5R_}La|NMu#yVg#%4Pbqe^7Z&$MuSb8HvH*-m;2Nw_g-Gt<=e@BS2FF(
zy;7e(Ws5oM%)c9}a^}P^BpclLVXSoecFo4ZA|{*2`(;;nUi^EW!8~K;8^?3`dJX1f
z_ZW%=BtG`5KYhez(EVTWm+;383^PLix#cjVZT+us&)oa*enI|*n@{qOa3`4k<$qLj
zd1h12eT~1-pV*DlHrG3ZF&KZ4|DZeZ=lyqY@=u)lns57DK5GK^4|%?PHL?E<G7M>_
z|2y!VGyih)pwN%=fAWo1*B>y~GyC6=&wBeG^S+H6e@pMnmH2G$wD+xv@r(B<`P=ft
z|I5GHo+SG(ta$Ij?S|}sn{8f4Z~gz^(66vrm+$lCPqn-$WgYqN@B`hp&-c$(c)!o#
zWc#<+Hvg;T?#6!)KZqTE`hI(5_y6ZB%Z*qY|3|)vewtVBylwlA`TzAEuT_?F_^`j}
z-}M7CcQqW$-~QwL><?zW|Buzn)hS$%&FI=;!f*7Hf73edUv=@yUN4UAu-3D1-nn|F
z*Xb8KS@Oy&U0VGYtv$yR!G6C>jrZ$<wRzr`?sVwX|9D$@=Msbbtyv3heS7jXM`F3z
z*4u46EIN%10t<Aa?)&#R99f~b>G{{&7hg}_&s)NsvRo#0-C}P3Rj0zwRByM-{Qm3T
zrl}Vv{EWT2H%qT_$@5K_$6oXYR{cA=c}k^PWN}4G!MUCz?_U_`-MN4M-koy^Pki>&
zP3T_i{>82{P5;Z4n+d-^89d(@w(#JyE3N*G>zmzqYMTwMT%T%|P0(rI{U9<(WUJne
z31^*7vuw1x_5Wb@lF47D_=h`+F;71#w&#ept=Gf5VdvkhzuMh1Vdv_+Cl2Ay3wm}n
zxaYrnrl$Hgbmz_$=M(Y`L>}t#_~b8pA;rA@%gy5aV$Nr7zkj&>`>`d@>3VX+^%`!*
zLhkCVo;kjc%2zBlpQa>p@vEHw^zg<~H%-^I>Fd89={(%?d*1G<-wr#U%;eTms&Ndu
zRc&&n=}Z2dDb9uFTW82raa`S#t0urvb$81y=O3qo<ilsk=zov1@cZmm8dUjYzRjIG
z9a8qU)%-+G7R^d9soh}KYkl?Lx&|lT?gWnq=QL-?YfWDNbho<r#Aw6SLNl`_TQ$lA
z^W5G4+DzwkwUM*>_66&!ZNze{1g!cRW?ntXW%?~Q&+DQ}SHP}=T@xN&NsGHDc44Ko
zhK0rn?zjF8M-->XXkU?)Tz;x|n(M2F7BhD5cI~{?=v~*J{xTu?p2)H#(K9_emA~1T
z)P(9@RnA#BO)WlZy}X^6_5!=bLKp6Q{bjdoQNV{~Io{<{R+uMx?r*!JUK*0VEIR$;
z=MBFTN<(5Z-tyP`YH{A(G1Iw&N2}-9-D{S0MsbU_C5XOff8V#`>$!WHk7rkAs~x`o
z_~Opf%0}{1*WY|!#M}3d{Z3L_n#k<57kA#ydS38t%j%#FZmoV{fin*5o*}xC@7X*Z
zq1d<>rKi6w+av${azArbc3Pb9WS{RxvlbcHw`V;`U-;H2H=j3brAheT0_E#<6_ZSA
z_x{LLzv{lBEY5Gv)d`n8ci2ofJ0hp8`d+zPIOv3K)8d1=yH@>JvZhJu;F15Sx@KN!
zGwx}*tTvl{f4AO0JL&B6yW*o?yA>T=`seWXnsf5GeA*k6Hr?+w`>b?@(c=8lop<<F
zy}c--vuuJ<=H_A<alKvY8hN+g?mhYP=I+Rx`=xW$m$$b~p8k2Ulu@hh`pZhQe2vWG
zUrg&*sPRYOEE`v^k_Lm;!4n51AJ+WKNMYPLed(5Xuf2ADbNQ#pxzBuj$aYGymx-9g
z{l#ZzE&U?$oGUCPrKs=kuXo=5Kh{1tGi&$kPdB`tn6jpG7Yoc4lP}WBacP!Jx@6e%
z;PI;^R}$aG=5S{(+Wf@jK*{A>;eu0EuCLp%=EvTjr9o_2hfelHdPauZy7pN(eqfuq
z#6K{gWQ|x}`R|<AN|`gRJ1x(?nXB|Py2|v9oc1v}_uw@y?OPuD`bcMr@BgE$dY5_2
z%4qh}@A@nbFY&2meY@8B#<p9}A3XEj$d`0CV&dZY@7?)t{PihH`RZ(}yvyGF`o~(y
zyN-tQ&uhopcKO_}-KA5dWw_m9;hT~Z)j}I~{aN7S<oq^L$~fG-=~dXjMf;ZXomuc~
zV#QvWnM!w7rO%dlf9tc_&dIC32+!7LJnORk*xV$k11x3B=e!hodO%TDe{Ycb(Xh4!
zPFmG|o=e-lOXa6!@cpvC>;Iv6U8>lM8=dF)E<LY{lK2)OeXjq!!O@=rUFk>i7BqIv
zSp2BV!!;my^WEAI!R7VKmrV;)i__ps4mkUB_VhndUrHv&{b;{oc=X>Z{#(iue^~8H
zlJb3J%l0CmLwsZ1OQVz;w}L+_+~Pbg$@FcTDu3p;f+5>%ofng8wM_1REb`pMGyU{7
z)wjLJgBBMne$ixB7V2P|wd9m!mc{NZ?nx?@ufBhZHrBY}Wcgy|Bxx-#o|-Q9d4jLr
zT*}E>p%hbPDSfC%yqL`*>f)6;ZFcj0K^8uJ(^l@?P=2e$GTeU~<FQoLyv5#Lq4KiF
zx_Y&=*KfZhTABT@jA!E$on^jvJhlf-aNlqJ^(TL}kGfNcSBc|n7M_opR+C=+j^cf?
zbE~SvUOAB|hYq+0zW*kX8zFVzt3r0hkrUHypKf8!E#Ft`nlInI|5wrV+1V`{%dGdm
zo&TzQ_Xf5FdWwY{(e6tHTQsky<=)(_%YXjw4a?BLLp6*3aI9|h$aE=ndLrr4tbYIe
zah19xQ?>KIw_c82Hec{^srRSKX@~Dln5>dxu2#PCtEJN3{)bk(Z{(bwHu+Y{k(9F&
z6(gTb<6JN&p!mS${hbSzq|`6JtX|8?{r-iK+odmy%i;_LS3TZ!`_apSYdw-uU7T_y
zubi)6pVzbT=B<x)JA^x)7T90vI8hb$oVV(|I)9<l<eGPyUIs6h?C{M|;c;+3mnZY_
znEU5LJ5C*GIG|xTBTjEwWmMYRlCyy=SE}Mfw)Uz1W%;aqp)L4BMuV2K_4^}TDJS2C
zpXd<J<BSXISY1)NgzG|bG}p3k>0cI340$k3W{**3_|NX+4)^-+)p)8!&8xZSldk-0
zO5ufzmjWN{UgagS-+^Cev2D<L@%vuMyH*)){@d@d(cr@tpL3gBru7wa>nEy|=v>&@
zmtMDaYu#0+-;Q24?Cq4kZ04_#=(+iz?*8-RtKa<boqkvQSCjA=roXF?CMJA*nmLiZ
z&eqd->WM(7h5P^h7C(PAc(K)*7DwalE>7!P6+|+3hVwsLc7|E<6`yR^f)A=4TU?KR
zWSaM)saM~S*(zgkV!Q(PJ<fvl)nVEee_Y=0{q5r2*}1VY!FbOpIf;@<%NVsP#I}Eb
zCXjWhl9m5j#kR)6-S)5ceDa$1^vrp$@Z4QT3P0#^=SnnwkhMNGgPF^$mM`$`_DRWC
zn)e!=t+dw(;V93HHQLG3wR5)jY!5r*otdBPS(i6T>=G#8J}Q!v^F-SAVddHTkr6h=
z4!7j0rUuulf0=#EIaJ1E+3ER9ckrseD^ZRAt5$O8@5duwE|jnNE?r~EQYtJGwxV|P
zrQavF6kc2L<*(A&`OHuCKd5@IpC2~SJ9ui$gBO+Y)9)7-EOxJ(R_AYg_4B5EeL;`<
zFI^UO40~y~r<E({ouSW{RR&ip6+a1R-{2O>y!27{?}lq1Hz+2};V<#Or)nbDcUN3V
z`nX?Hjcn8PcU*S%r{^5!wZEdVNg#Ve>%o|=XMcZ0zw%fYHG{|by5oNKOv$nviFb^$
zHd>eO(cbsO=!vpO|NSE|P44&po#$&6cv!XHeFe*%bUUG+9{*O&K5lb1{8ZrDBMYP@
zx{e0e#Y|R=Yk$k8$-KE_W8tJqOH(Niy;wKiUBP^p&b(N8{+58-m9F0XnF}Ur-4C75
zr=2uyb;l(B8OMKSPM9g|I`JR}^ZTH<EnO=gUA6k9QZJ+Ya{30%AF{1q919LA#B)Vo
z`V`QcWZW&ecqaQjHT4OPwry%Ljk8#6s>$`m-6?ycL)Dhe>w*gc6U-~^e`a&7*&Ovg
zDz~us?f+#j9;{$>x@K~P`J1<BnPklI&n7V;{0_P`+2Kvo?;Yu##H*}oa{JX`<zyWn
z&be3PBkC_H&9r^!!Zzu@)U;OV$N8UwFCIUdA)mD;=U`y-n;Oq5JCCfXt!W-A(jw<h
zczxJ^*G%yAObPj#xCbAjVkgc!@o#6@y5sk?ntL+rH*lt(65AH{_Mc<644?M&sUb7+
znX85Os#c2g9-ld9NjbCoj7_Pp^iC>iIPDc)@p|GsW|?M=Z)`m4qc1J9@tULH9BpjJ
zwx9czbs*oPqP-srG&@8MIbAy5xNj)RH;|1mW?G*R(75|sXFx!zf8PUxqz}o{qIp^`
z-2b_F!z%fevk%5OKX{uJJcm{KqS%*^dp=(u>V7!r_Fzt_+QQe$cULFA@b@|ymU&}G
zd`d+0jFi(VGxjDgdg%P-o|XQ2m87m&EnW+C3JTun>=rxpajk%n#g~Hgh;Jqx^2S%$
z({l<NSIu&giq8AQRv%_@S|wvm*Z+AD3@VzR{jKtTzW!_zkWibKC&bOH*%0{0hV|_3
zeW3vX%uC+=-up6-NmKrXQlO#SX}P&)=j?lw(&4OCIioJyTfdI$!IW>3pJU%-o?~O`
zyP?#Xe)d$Sfr9e3ufB6^R#>zDEK~0>b(KDKsm0>M3&DD4(ZXG8xKB;Yh_MY*JJFKp
z{Ao%?zS+YY=E;736?WH+e(nEX_y339?VqK$qM!a$xww=6clO3P)wM$B4?XCSx_C-W
zc-_3`8z!E<wOX%C;$i!-N7<(ii+y{yVaD@>cXE3zH`F?GOuEy4Z1MCHovXLp-x)O3
zOtjSF>xOXIQ`hEdzGVr0eY*M!?}u3qO*=i82OZt%uQ_o`>i3l=_wO=)aQcbfR{Pk#
zln*9zN;a1LZ!=b&9-MGg@K{KWgvc?K*XIp1<wD=Osan0yFf`AdHRmLw`Ic~H&WIbo
zT;?x7QkWHf+Mnas>i2Q4<Yy~(wTS+ZJXCz{q(v@^&D}Lg{4$2|xm(@(Zq+D772n)^
z<D>7Nx#E`fZO?qqCeAjQxkLL?z}?IhI=k;3>YZ<R@Qq|P!{d)LFY?&5J?~5Mn{nOl
z*F(YP=)Bsjf1m6!5|_PR=V-gSWVTg%!-d1b`=8!eva#UU6}O{L=ALh`Kcb}M9hd9>
zzV_k__J`Zv_^4(Ibh#xIFNu;o%Hyo)>2Q*>_+6uf%fXY=?5Cz^$@rJo-s(?xW!c_e
zK2u#rv-@-{&rIns*M+y-Uh9?|aIMY#m2o`#=nke`%XH?49n$N+8rC>}{$Kldo&H@d
zOER9f3q139vAu82?VTyDJ;k<_+VYRQjWTDLyjpO6>yIUir8l|P{JK@pHlO>t!-<7u
z9%9Zt!2#wsD@rzYc69}DaZU98x#*_v)y}(*macUEEKp*ixwyeVWs|tox!h%UX74wb
zd9p%MGD)VqHGXeY=j^l3Tf8~ndpWr;(=gz2pY-czLE`CI;htgqW~B|rw~F%K+AfZB
zI&!#=sq>^xnYr`U)=jpi{NFBoPKZnu)zoWzlEYzY|Iyn(n@^#{TBZ2LbgBQ-H=biS
zP&R)>%Cbk(emCmm-#Ox+9HlbTXR5))vx#@Cn5`4f1$BR2H*fy0Whp}24lX$Haqj_^
zvp@CkAJ6l9skcNyfqz!wnvXjeg&wjyvuqZrx?RL;<S(SXPRcp_gZfj^IqMbQD<q$N
zIO%&a(<vS1>$)>8-?{xMYsxY|_B6Xqobizz^AlJ8nw~t-TA?cY^r6$Q*=)YF8<w28
z)46Qk>Xkip4dEL%3hlUjrQwdRMu+Q73p1`_xp2Pja7mBtvb{U6epqrj`J#iA@<JJr
z=zC{FPr0rWZcFv_DLhbbTN}6|!{bWU3fIVgKNTistYO)%o${ui@!z?P6AaXw{wG`u
zoOWsMj`vY#J45+Pugp5hdF0(>gYd=qMxr4bo2p8+;xBeRR;=@!KX=RK?l0c)52vqL
z6K3)1^7$zrSB3b$Sh<onmubR%p0Y#bV)1wS1<Xa>zq?+tm3NQ+=DY5DS1Q+d+-Bps
zH#LTJW%0sCHZE^s8Mx2wvi7{G`1f9CW_HAarH2ma9==-jIO9pC#PYs&)|RJJ{2gW{
zr=N*>BC_@DzL*SA$xGJio1SgF*mZ7k)w=0-=I765)4THI*wpD2D=w_;o3d<${))G=
zF4o@I9%^+ow#V?`7CA26qfJHG<%Vzc+m0zGMIKMqH+i$=wP;J4UBvg$y?fS`8}7gN
ztE<9Ow|fE0=dHQk6&#l@?s{X?D^~d9bm1=_+1hX0Z327bgO5ypus%9>X-tUG<jzNX
zK9?m#tdGkpkUggVlHF_H1#Qa@r_CGZn>-b}#AaK|`_=C1JFWHtwz^Nz_URuBcbjjK
z-`cF|CUoN6Y+=m}EoW!%@C=%E`TE|A(T}#el{v5{{(f_Q=9TC#QU@LM-$~Dx`Cc8j
zvhPRbj)yD`Lesb(y{ODuboHCHH-}4{YI;e{qaO+P8qCDCFWWBPC~IkN?h-7!KL2jS
z29Zb2yMk511i24%J1oiEWZkiRS8pF<9aEY9MGO9wzPWwTzCT<`m1aH+*?IQS8|SF`
z;X0?zBnjX3D@lEL?{r<=8yVB>7rsuDpEPyO&qFCUXYG!w`%@gcDJK15Kxb6Im8vvB
z_D}rR{qE%i{+PFF(Uv@xBKLD2qNL+Dti2Jt=!(IOg(gNamXCe*c+~XCKW62-Id9jF
zkG?K@oBtMH;@}e9k~VecxA`+Ju2|Uf!_MbS+%{*^60;*yCv0&_ivJYha?&a2j)$?z
z-aaj<+HceBv`!t76<cQ78{hi(r?%zasnx-9om1R%cKq$ueIjsK%Shx!TME<i!gH!;
zL<9F}dc;=rxVkUs`SE+|B1bb1p{(M6HiE7W+Goy4X!IvN_?*1>WWQXa$kt@%1Ae=X
zn*Q3%%Dq0IkXe%Rb>hX9ajFG-oW4nK+9mvJ!i+U;!B_6Ac`bTO=)(fT_smUEvwK(T
zwuUdgdY7|%@nKi%MXRijh)8VF{k%ddZ2q%Xg*)e8l&@gqiQe_3!%*v|A(xKnPVZb%
zz5gz;xo_$keVgt$Z?|k~{-Dgi>8yHCVR+1+U)dF*k9bd;NLtLjpqU&KyC;j^YeV|4
z&jz0+zk73eO(TP5vY@sr?{cR{{;nk@k!}mc=j?R3Y0Pmg!1$97kL5k%RVFtjUL<^q
zI^eSZ==87o%Sv*SUQGC+I`zitpjqG26ua&TXWi1vRMWcP%Q$u2%iqfmwTX3^&9Pcw
zcR}hJU!bR7?Sn0qc^q5#-~C!y(tqL2=cLCUBP5*pqVil{ZEHO{!ETBQf7)b&lB{!!
zCKk>R+B}gt=Hu_bAJ;mYnQ6b6<o;ZcMJnyC-Nan|x{r%WIck#)u78_zjn`{Jnlba0
z@{cDtI5<-0+%C8}xgdA(q*`T5=Z&v;g-$<;Jbv2QM=mAkpW?FBo$@VnOKRtGb(M?S
zpZjj?V<p@z^7LbHkFBr6C&^9K--6|v9nQAo6^k7SfAjHf@x{2pEZM#zhhB(3z0$w*
z{da|{^3NSNeV+g2*MsmcYoD3wuqiJt<-J}i#p}PuxntF*cp*#fRo*M6R@}L#-4=N0
zviGN*Zi;R^lUW_j&rg{<{a2ovg!s<KAN(_v>kU_Jciy*JR-VBve(wC~lV)1vMp$wg
zei3|egJ1ajw3H3+zq&B0yJvD`>#~VC`n%q^&)6iQp2hFG-m+JJwP^o_tCm+TL>JX8
zyO#RKmGN0lhu6p6nm3OgZTxd8<M6r^rhOL8Ul$$P(=>PU!ebweE1Ks;^!Ilu=L+7>
zTe(N{+nd-;T{R!MEW?WIUiRf(Fs?P_F|*WKSg=pGKh-wr*E3s_|H;d4m%Q3}t9W^g
zgTmpjPx7`_%BEjQ{$~~PKroZ%kx^xVQ9W-{xd_j9;q@2i>s(ej@H6^Wf!5LIhfi+$
zxyN6fq4sRbo_RlCMlSrbHCOCK&KK$X{93F@AAM()9I<-j%q%H*>Zbdve{~$kb-uRO
z6(2L)v6k`i=h(FcyI(nOo%7hUyyxDXhm7yj*bAmf>^6Q;Fgx|=>Li;;_Gl*;<)G`O
zzh0L=SpDJPsX~)W?<a7)2{zoZ%|4;F|L3Xft!H=UHR*kfe!1=)Gw0UXPW)V4PxP4G
z=9)%cQfyh4{Wtw+p>Xl_o@q_&N?L6@1tfp0n&7ZyW&Zu8rOaoV{eN#*DdZKp>&|TH
z6)A=vE?ti6=T2I~l6kLx$rHJX53Db$m@jGe$+bR9T=qr!)3?;z*wuEcWAtrjyPkb9
z$${Ns@%Ad8oo_$*M>@?A`=k~wpQX6^^PGf=w4)2prDleoD7=wiy)`BvxZ$PooXhp?
z?+P!oU0ioN&{Zp=Z`HX)Iobv47s9SZ-}z<wvt8#;mvr}Uw__sLzW%)`BhaQc^W*G1
z?vJ&+>mGf`Wso-y{Mu{U80)5GQY4wFTq@|JE>_)b9VWl9K~JJ!TQFa-*u3ug9Qoa8
z6P{hMIx;<Z!lD;9PixP-aKFXWmBsXw@m95MZ*?}T@vMtk|8h&y0lD{go1g7}zSw@D
z%CG8EbGLB(ykhgQ=~JrJ+V{t6d!x?_33lE0yixex!}f5}@>hS#LYmX^T~j2Vc<|-q
z>|_!16xGsOSZtzoyHY>oZ$?imGaJv;0Is&*ooec0`b%9oC$F_>_pRKX{x!=YBH86y
z#?^Co%3k?77?_@KE1P^aq_3s<e{xBdWZ9Cr_p2_<$;x~%PpNae!X}qy*X7@rPMP7?
z&ZK`njqB9(KN~0d%??miT#}|)AOE@FWNqK70~5|X*_#vClo@wy!w;_6&FUt-4_f4Z
zSuI~Y$%DzOU{3DaWB#qb*$?Tr9X;a`!MXR^s+xB{?LS|>QyHTWXy5g;U0(FhtMDto
zcZeNb_VWbS*_b8u-BP`J;i{#}Uzu*4@gzFXP-R&uOXk|tzOvKvUi^-DbzsTv;&&4L
zeBIZ4Jl4ntMyf2E*s}ThcJ)6S9bX5Z-K>38XR`W+L&>3BN>-i;f|F{_=dJt`*y+5l
zr#Qv=?3VuHRc?%%o<y3SX`iII>cA9cwXz#?7H@vB%rj+=%YE~*TeXa{BdWz(+59D$
zqTX%lO`o<rjCrArS%AVxW0_N57oT|`7To8u&Ccb;k26I=*AIT%`hh>Q`W9PL<^8F9
zZ(nWybMNC%1vWo#-CWkom&0z&<<<VYZ~dV|o6cQ0z-+}I6(`3jlJ&r0N4WMb-%{b&
zvxOQqa_Z{4pDL}>I_=lOskByIQ!wA?#<aS1I%ivNu5F4`af!8=cICsBEg>&CBGpP>
zCQrVuz93?EUij<_-`D=FtF}o|7r(u6m6zbO&HG|!*Z58NDYDaJ#|5uVM?4ZY>$erl
z&JFnTTW>*p?~ziyc+>Xv=UX36t$(!c+TE_a>I7x>$BFX}F<kuqd0m-O?U^Yn_K4p$
zoAo7^t@7WO8KPz1@;iAo4ej?`n(UwL6>#pH#nS%WFB`W6-I+D{ncOs<xy`S#c-&K*
z?S4GTs$17Ew^ZTv`m4?>4(^#|S!!RtQvX5L{kvx(3jY-;SO0xw8@8iN@AIX!oq4}M
zx@y>l2wbZ>Jd@SJc>3{ezn)yW=M$I{I6r00$?!!l9pV=V9-1`4aPO;-O*Lr?^@I76
z&EiFbAD>;m+of9McJbR^#;#3u8Y(qL4vV;U_nq=wY^b#Ba7_4Ht#~c(om~Yfhby`E
ze&O8ydUE#>-_NHl3+Fp`hs*6+;qcRA?Q4dM8)UX{?(zL_?({2n%^x=u9m95Jh1UMI
z`0^uW`=+ByWN$a@+I7N1>`c<j;y*s6y$(y?zUtqg9T<~oa;3XYd;Ye41?JChZs7V9
zu6R3U^2%FDxg5u5du8&<OB!kyC<kBUX>(<bQP?QV&TW+OCQozew<EuItTgG4WRz>I
zSKOFad-|Qe^eMiw`L8WG<a#)h7yWG&f5QIjjl|=n`_?W9in*UZ^}mvhr^v6EWBePe
ze$SM(kjqnjvTx1QmTk|bUu+b3;`4zqJ%xqOI&#L|W93i1Cw?(G(-vbryR}8_*}@&B
zk{@cT^UobK*mL={mbbLd+_&p<!ffA|H0wTMXPH)T?dptXu|Lh61sVsm{EertK0LE&
zwNvPX2G{OCxAZdSh?u@#F)P(Z;Hism)V3A-UvpjCc>k?P)x6d;hdX~SISBgdPB`fo
zyWk2t$B)qeIzI1=gpb(H(ouSIUv~!o^iM3-QeS#zBt1Eu&42m)>xof4`#6%hcd>sK
zzIW7U%O5AhV_v33p^10XY(4f#2-@*0-j6uD`Jix;qDp6a*4dDCj$eHqW|xaP80vjE
zI9o%W>0%J)F^|5SZGtzHwg2-yF1Agcct7uO(~V1yk8&J7m3?V`@t$4t)vx@|*;Ov|
z-15Vw3&(h#7c?BJzRtK+?{3wCi8f6#{_~a!rL;7yKe>JS-IvKT7WE&To3*UaUbkdU
z`~0xE_u`HIo|99Gc+&Rl1fOHio{G6ShQ24(op-5R)$;z`%&C69o6UY6=Sk-|dDWpQ
zqCk0<@UiJLb2&OL%RJt-erbVfVa2+SoxAofcj|O&wvRgVIMQyb{C$z-y^cbA-}P)L
z-Zm$`C~Wse#q`Ig+xap@_$rjG{uHQ0&zO+(YWEL0`4i<f8`>jE^N$%k&infJZfZz$
z{QIo4j6Cdn569g;{;}nDxaafD>$mRv7oyGMvUTMTTgGJ%P3Mc0SHC)MxmM=My2|Re
z#S-qa+7;`aH<jqJ%s<a}WJ135o%by}dEJ794Ht&z_I@thyLejE))bpfd1^XKxAFg3
z)Eg^u%BOr~kf5W4=iRDv-p{VLuV8=kdiJNaud<j{Z8Q?&escV&-|P5;Mcd{pEqYg$
z@?+A6q_x|O6emjPP5-rD&_Fnz!E;+^RMKx5qo|PABJXvt-}0$D^y_86jO~5?-CjSA
zuNT_?c;Cf#kq?g_&A3o<<ehuh^ti|xolBn`<;0JACq2rW;a$3T=O4q^??wN!^nz{Q
z?o6|B`BVCIg>;!lUU7V7ePV}h$0tS3Jz<sm4UTgi&pTUlq^je}BPN0Wp_@7@Uv2zc
z`EBc?rhitI3`rr^<9=1UZ@Si770dtH!Md^f^R9}&S+N_~g11`5cgQW-)cyX8&{6Ac
zDNaXRIzHWtkye_U>X<#}d*Yj&e)`XKvgTJ_^2*t09PfIEcVS^?efET(0o(je>{zJU
zw=BG<u2EDVUD^I&_!`HvLKpq_FEL#Gxz@kxv#nKD+N7DEYfRS8da?U7o74$|jj@Jl
zH$}W`UEdUR`luJ)bCYfSt++K(xZ#WB;@PVYvL~Nc<#S)){M~%l_dVP0^JmAe)4zXl
z_k(=HvIpPzSiV=y*{}Q2#VzaT(Hho_<=ejo-tG#y-v4&G>rwYpd-P@Ie)zv^Vt3Fl
zmZ*kf$uBjZFtzGMiPs)wkT`QcX~F?7<tHyPm~$@eEw9@#YwE3H(_q$;kI&1kSL~Nq
z$noUW@ta%H)P4r<uIKdeKJZ&LVb9;&$DEu(C4R5?6JX$UBgAO;61N|7<dau&J>6t7
zLA^v|##fPYmg#B}f4}Cs$uVhbgCom@r!13&&)wNKXMgCm^TAsme9`7&uY6Q@XWtgf
zrSf45BU*D#Pn&++;gX-u$<XzpZ7OflpEmm6=a}?9b9?#piMfZ@`aTexW;So~&P96;
zB`>*qwps0XlE~jmmOAgV+(+~8PG9rUZc0PdOQ&hA)7qR(ZhUVws`33N$h~j7@7p~r
z)$4lOzRgVy*SdG@5+nciK<O4S>v@ulJbhD3#TAvA7U`*N%JtBwUiVDSK(}w!?E{<A
zneS}iTD4kH`R?R~DQueBSE}0CCtlON$IE}Q?~TsRz}G>m?%$OL?c)6|`)mFhIpIqI
z>y^UqG4gJky;i|o`aIL$B?mJ*IvyHapLtmPa3lAFH7C}D9cKJ<l+!W(m(vsHOQz5H
zw7%zj)xWV#Ytp;x2J3ov2=@M{nQ-sY!KhO!8Aat5e%3yyo%kSAZHt~VN6s%X*3L$U
zon1@(idJi#E$R$?QP_BX@s&JvF2(Sixi9W!u1&Y}ywW&pozjGBo8!*&e%~EoBG2D+
z`b5~xm1(X|d&(sDO}y`S;E=oIhsUO@nICl2++CJUtA3>NBJ@Yyl+elgs|p16a~4(q
zD>Ccb_G$M5uZV*!U%yXs-}dl3TdciECHrKB?4piGOBY$BJ9djT${ljO`PJpKZu-gh
zOy_2lmM_Q@xy5~0%y-X8(|LcF#m+5I<Ui?sIDO;d^j@RO;rWK&1GBj1rA*uG#}-iW
zy{<R0!L1@EE4+fAp{QJD#VgH!k&ja%muIP;?SEMj@U^|Y=fB)etMhO6wUq4$4RrZf
z-dGSfTS9f4+SW6NcOHu4O!=g>aM1w)E8TM)8T`5ve;YBVUC|X)GL*R(<#TY0l@OQu
zy#576rrlqk8LwZ>b<^ohKFi|!i$j+!|Feqi@AcZ+g@t_!^%~BX#<1;+-o&aUJnhGg
z6plP0S?;DfTSJ*18>vh37Y{^h?08pV8@2z@is+3~ru)S*H%fcPR~$BP<1ctzUm%rq
zW#dOb>xZJ6`9hLW+dsPZZmW|lJ*+wF*M!P5%_kY3fBMi=aMkn>^R;-U!?VB2CCY`I
zc1u3Su}=2dB!S9>7v8+*iSMbqxKVX7=R&oI6ASPEoaVO1=Scw1WT}W&X8SX@s^1>V
z`rBLIu*AFlOG(w2!%=17r6*c@pQ}xZ4SiVm@?g-{?wqZ$Ztrdy@vjW|@pZ!0<oUYW
z#Xef@GKt#cUfBQc%?j4{UGjG)$Z6M2Y&)=CRCIs)u@aS*D}0ZvcHfcuWBhdT+r(d+
zCoo@33`#h#TWFH{jyl8Amy7OAKB~Oq>6O136`#x=T-}|aZ~pjY$<^&1Nn#VXhgP33
z*^_R*!63fyhVAspDFv2lPPcwlDO@aj{9E@Nvq~h({fSaSny07RZIEHDeLKZx{jCQ{
zS$->Sf0c9bT9&`UByMTky~7WkLSMd3QuN>V<L}04-L*Pa*J^&eNqhSuWMiIh&m0BO
zum1|?ok`3(cQ3QqQG6TQn;c6sJBJS+DvsM<n3l4uxa0dlYpXAgm(L$I{U8~?L@aT$
zV@ueZMQWuvcM5!5V!!e*N^7r~9=P-H*42Sx#dQZ{Qs=L_@s7zLgS8>G%kF84<)Z$r
z>N)eZH|c(pJQ~rTVX^Y-w2RZ8*IX)5`M>74(d4_mF2+fA=F+)NBGV<@EKBWz=ACU*
ztP}rf!=)U;@^t5)r#*d<hRPec<v;69xO8Pjn#^Q}jzf3(SXucSRlQF&N3A%Y;U1VD
z$p7?dS9G#K_lw`t4A-yXbiT&2<cH%ES=kHrX=fL0lzyjrB5u#Fwb>WvRa{hl_bKGA
z%<g+}-kB-32S2^;|9EG<an}7890!&?igPO!{i)Jb_Uqt<ij&3hSH5zukf^b$+{j!a
z68&B7YRjFbh|MbRw$6LMO-o#4otkl~^|?D&i+tCu|Gu+NZnJ3c$&2Z4-={>#t&U%z
z_5H&wxA;ZxLV}s@Y<j`R`mpt5dhGVM(my1cjvL*2D`a!TZt2%K&-j9wIVbTbpPM3B
zW%+aOpOeY)v-c`7SgAfOZA^Sw<#WJDx?RbNb;q`4(ZL_SJN)x_+}QJd`SL5}m((*K
z9jU6Ad|q<@oYreekFUx<I-~bu%Zw)u6PjAY+^=$N-@EtH)bI^UGCMuj+%F1On-%@!
zz$trigWbOlluf8xQ)Rk<KXRpMr0UeXzv8B+WsEnm>9O_fTGuD^#%B70d-17Vs;Q1i
zJ3KFM_;@AzxP_`3-;*y%EMA6sWoJe9R9(Lkd3zsA$3dkfYY$n=TJx!HuFSLD{nhko
zsjjaH*VKbmxq0UfRTte``0_n(XXFBnRZqW21=ZZ_FFx$ewOnfFoMazi<6xaV?(S>D
z#cxH2-#A~-{%jpz-lA9YlePxj3Ts+rQy8IR8ZP}oqdWI_m%sMWEa&qtf2xHChA+S4
zda`tLo!W&1{@QKMn;zC3o+4k6&S#}<?PL7?Ufld6&iS9h8pIS8{#P!X=(RS{deJnS
zf0rjm`Z+Hy=CKMt({0$r-XG~yc`3NBZ9)1?yLIPc6gwST_niED`_XcKp4*dEvp%di
z$vrQ3*1=V`zFlzMXW+VD#pd9=&V>~*3P&Be*-IRo|3=wrS{>sl4S#;UVrQS*P6i)O
z={GOa->msDX`V<|&Ft^$lE1%w`;uCil*Hj@@Z4gu#3awU*Ku2xue*M3LP<_P`^!sC
zKRHi4TM+%fsoYg(QAzLC<<%FzZ?1aJr+2UU_x4Ns80#PQh1%`y;pNLbJvlD?<kl}a
z4exq9gu|b6H+}uqCG_Xji6xu8C%U$%7iD%Fj9PJVcG~5evkgRh@Ab63mi@44O6rYw
zt2majv@V`FrT^x&TJEjU3Lj7Zsr{W(d*`NKovd$S_STAd{Ei>n^%i-xZG9W_fLTfD
z|NNP^LW)|uZJtkb<=|uXQIRV->UH^u;*GDVb~m;<E~=P*DSdUAndwii?mRC;&W{-u
z)~Vlv4+UJFu}`}1<W;%58<JgDtMxq&`yHqsf7RW-B`-C%Ppo;zv`tTUN<VrS@G)_7
zV5QA0{kNC*20YoHGWF~2_<GK;f;YS;W^VehKK0Q5HKL(crwZSg!Xn+j<oi~`C=Tb2
z+zVwNd>DPz5>9TYUv3k<@U8XwN_&yX`zrM(vGvPtoLs{{kM-h-olEaeh&r`wkH$%Z
z43mW0H{QH?v;5<#Pj~#^%A8l&9K8E@$Gbo4`fgR_o7SdC6qwFiHtGK1^^0C+Pws0!
z-hR-%$lpmi>ASC%b=ms61~%5o+^!D3cQ;**Y&87;*DJi!)A3Ww6%p6tzXgniS#K7W
ztuJt#J#XfZW!3JntJT_X9SMIpuh;9(<#X$JG^g?%zu5Bq#mpb>b*%yWCi?3?T7R7X
z{bScXo~;Yk7OpN^5xcX@X|L>-%NyNTi@oCCoNl$AySX*;cKYi2-LsdOi*`PocDQkM
z($V+#7<aAL-x{|+OmOC`w<UZN!rn)^OrLvV(#N2Ek6O>$=~l1)kv@A7_lzpuEXO5k
z!UuUSd+70|+U9)n)_y%@iPX6n70SPI*Ib+=<ELhPwbtOMjb=>bw#6=U|5l3l3+z#H
z+omfPW}K5?xYC`YS#Mu)ig}jHjkFKhMu|U#Plkv6KjLI)ti38hWwPk1z`gzj=}+F?
z__Ii_YqRkUAHUak7fbDBk9}Qwcm9;Ck-a&8SFle_ik-CLYS_(uo&B}1@3B7N+Y{sd
zgkNLU>3#-hA#OoAW(Q#oeVG@1O?md#qAcI_&u)KxVE?3*ukDO>FBZCTeqyCjz?Lu9
zzhB7~P~S4KmMg2KUuA!j-=!rBKV1klSlxWeVsVuF+(RE;1s`T{-peoh-N{*O%g%1k
zMSou3_;>DBp{L{S?1+<JyfOndGB*^+t=PYB$A+K{Gb+6tEB4p!@n{GLx@F-$HFH7!
zlhTL6y-&B;miT|;dY?Y))-QvH?3&#N)1vw&KQWh;biS#?eO~WvZH4!zH>wHEYtAmq
z%e=kUJxcoLCTZK}hBdlfp)2a%=-=1Yp1d(LOyaKmqxCG&6V}c*El;YS>{+whzKuP)
z%YEJE_{>QyN(qYm8-9Ms^Gkih?XYx#{AS6`?QdRvpX(yRE!P@qc`^Sp|AE%4AK&(u
zZg{`#G`Cj5&V6aWWH<Aeu*dUdynU%`ogbUrC4bCRzxR5$$?nhpwiKs&f0?v;ecp2I
zt(kIOZfE{>BqUDy!CmQnjIZw3r;s06ZF62n^PE$QOthDkTYOfLZG~iLyTY5(KCQ1a
zJ}kVnj6*wczR44wc?$Z^uS<F}O)~tXZ=&+<u5}2D(Y@ObUP_Df>TN8UsH%7A<eeF7
zayz2}RpaBP9h<sGyCp6oNNh@=aQDKtTd~Uz`Bn;XO*NP(vGUT!OOIZQblFT7^IW%9
zL%>M*_=8(Vb1!g~O<btxXgTZLrfe^#faBLzp0wV6*Je&Y{QHpb<W7a{54p0AMOjYR
zZRo;K_om+`U($uy`r0eeulMhXvDkGt*d4fBJ+asK_Qi`_|JV0_75ukrxw`f;J1&Vl
ze}4ZK&92{Xx^34?xZky0*0-W2{!N6aZ>QKvnRwyg2M@oSZ@9&`cAdKE>HLj{pP49@
zzWpqHrl<2s-Oh|?kK=Qe9e#NFoZH<Mme<P9<S-rX6=`bwSbD)DX!lIL8qQX=&D#~C
zouuuL3CgthxXsv*`t1L@{iWCMpE&F=;i=~$zZa(xPwL-kU%tf8FzdAHuZb@V7d(qy
z`Q6&~r{gK<ua`tjwVs7Cnm!6+`@DfkvN)@E^O`3D`pvo5FLc~f%RQd@(e_aT_vO9Q
zettZ)J8{oc9*Hv&R+`h3Lw-Jubzz>JeVC2s?uC~rr`Oj;mA`(+d-B9l{w3y-Ki=A(
z7j@ayXZJs++Q;{x&CJc*50mHCT`gf+cCK#w4@ZM=k2Z-%UFUXhU&8-m(VVDI@r6yl
z{=E>HCuSLb^hfHUz7-3X)bGD~dgGRSA*Qm=HD$}Ld}olT*K*7}K10$VXwu{3OAZ{G
zq+y!Y9e*L$adp`4R`x$xi`)Vl9Q`+SuKx0iFH2NpS3r~bL~)@dk9br$o|-P&?aJkO
zUS_7rUbmD5$J->Q%v~`5rsFD>HwkO|`<U7nt&TLgBc$H&X})FV@db-F_wJlqeN%ew
z;s<)`Z=DR>oc`y<n@a+*58q$<$h-J%PqbAYJD=#K<u_I@bh}-;hOxEoifB&c?WOi&
zbuwwcmn<%Bn71vZi~F67SJG3N@Jv@m`Tl&_4nMW*Yp&0nT0UhSTQFTpvUb1cwUDRv
z%LBF^?w0+N62<>FvDZfZzFExjZk<ncg)TY&pDG<(uD>X*X!DjyA;xD|{)_)Qul}ns
zrhHm?$_j>S&E6Yc|N2&H8X9mVtIlZQ^Y{0*$sf3QT`GQFV*5uK!(%Ux*EaVXY*T*y
z;HVq>5rG5G3|I|M=HECJbbrp8lJ1+&g3TT&Epn@Bd#7XBvSIEf*_%&hT6~pv{cE=G
zUhwLIb!JC1XJx$H=%{y4{)2?`vY)}VleM<Z+K}q1!_L$3=V+Pr(W=64K^gm&uz&1y
zWoh-={_XIurI80sG`bYb48MuJ^m!UqW;rMO#1yT`Z2KfGJFlFjeKAP$ugcw}!Ah&k
zEuuMAw+Ofz?=Sv)#do{PkvlK{o_;3Wv&2WJW%A1cmi2Q|F8@6%$n(Sbmk!I@1y0l2
zPKqA-e&sR$#3%2?7*y*bqPu!`9Cz7d)b!`}MN8gUp0!KsIF=u~*U6*lqrGL*^Ml13
zZk^b0KdE(gValFZZL<|uXTANys=9dnl`oD$Jc-suKLj#7xYXC*(k?h&=2sbE=gP3c
z(`Ngt4fAd;yBB$`EWfh<WeeN)s9VaD4o!S_{_dXj{Sv$zfA3$mAx?I&GrM=&ra!UL
zmpc~}`t)8_yw&Svloq*t!Kb%Mo7_)lMRJFWZ#%gD?V1`XzR0aFb!9zDUvHL;EwShM
ztzoQn^t#eY!<xi|NzB~)qdw>C%v$r;Z}Ep0rtJcI4p`1l@R3_l&C#d$ci!vZ;#FDR
z_7%sXFZ)-z<*#*L>1?$3^@etxJ;I(22W93rP0aR@x%jJ|VQ2Loer((6Opvy3g%H?I
z=k4Yg80M_)>>Cn-Ydf8Zg07LVv4W|wxq_Lc8PaAtLqn9!bRaH#Go6u<5tqIv(q=jX
zF8$z=RM1vBOPpKjoWWb?67`eF+&Bl>BUhx4zWc4DJYT<5zceo;wWv5bzbF;56%Jz~
z9BA7c@<upA?E4bA^n**2O2FX?3SC1keW%3YRM3t^1%2m8p9m*Va5_bRgA-*Nqk^G1
zC~AVZ^xZOxic6d`5{ncJjkxrE65$*pF8%P#l#+~M1w%84T01+1)V!4Zq%1B&L#*+N
z&p966uFjE>+RnaC5g>~|ZUn^;WLKqvp}CoYfdaA4F$JqdILDl1*SLm;`}_ESU1JH^
z(uv|23$O)9VPj^B95#k#NMU0MR*P_q5h(8Rld=?SY`FA6u>#pbiZ5&&1H2<$qO_fT
zU9m=$g#p+KB<C0)xyHg0;TTg;NFb*h6Od0xbBwE(cSu+$*fHjqL1O_*h$!)7f#Mhg
zB*%af39@4hLCJ_T$9TGV`-FLDJNx=Vw%DR2VhfOoD6TOD?F>aEVnc*;%pfjDM3f20
zeWW=j#3#(v50s~TJ+UQX3yeez+N_I|r;tMj;&deEfD#gE&WZF2^$c+ZhmI+hr~<`3
zO5hk8m?I?|Fb|f+O(AIv;T$870BO#N^7D4~cL6&GOUkhX8HnN>Q%hvm7@8x+6+|t<
zH71~hO`>apd_p~gz^<{t3>-^HYCy_UX2|K-45{=pg(yWhhV+OE^$HC0_5!;FOL1cf
zNeW1AF-K0tAPy{=%s}CQlBY;7ZM>XZyn}qToqdC_)eDvwY1j}smW+&%VhLn7vSUEy
zGHH<%<{9kj2`c%5u;nL9j1&ys=?%}`hDb%9IVd+HI|dY}q&X(Y(Z|Ir3>+|+>DR~r
zk|vR2$qXeo86lN5=IBYr7^Imr*LVhbxcfMPT!WdnjSL_bAUVdw7%7@ekqa6~gd&o!
z8R^j!?iu9b45}`J%rLT&kpU>AQ8Km(a>fR6V9D16ly#6J$q*z!TDW-lyG1&J@=_4C
zNP>74DO`+^!^I3Kj?B;#3`i?!PVtF~atn_DMG<BRV`PAlcu|~U2x^tW!o?hvJdnc$
zq?c5;1bGFygWQ5y!WbDs%tsCu6QtyV;ubTI-N<e+0;M(59OE77;T9O6?d%&IiKUD&
z0=H&SQVeq0YiNMfyfQ_1jRol`#x)|qGX#`kf+MkHC2*?*#W5zxr7wsBizaYu3MFVj
zX^6C-iSh^!3IxSda3q%WYY0k&D2~A$GN6D!c8m!~FKLbmiV6vhf`kl~6l@3yd!$r@
z>KLS|z!beI0H-*T9TVvVaSWCu3~rC0gp3igYd{=WG?{?{0wrWX$)7aGpr7r6+VC_2
z=Lr<o7~{-Prl9f`**S*b(wj8*pm&bZ-Gf;Mqx4viD<^PU3dKDj2ckMBATd3)m`mR|
zzcjBz!Hi2k0CW&ciGq<4NNEt4zISFyu|hPcU<gt$1h+{PAW{lO;6$Tf43RSitB>VE
z)IKI4334nmh8S!D_Njs?DCY$!m_m6FCzyfaISAP{a8e-0HZyR7R)7?S3XsNy0;JEZ
zU=Fbj(k(-_%>v|Ga%{7J*k%DS*b?G5NV8DE5+Y~_X@4MFXNV<}p+uZ1u81>)R8F8{
zi9lUT1w+WmI|_#2c1n<fp)t5{LADGM^>{pIWC=?ahM-^wQUJ$vkODXgf)v1E6Qlrf
zGfEs88G-UEs>#lYC5but=^*!~rxwH09U>VS8G(WYrYWE(KczG|wMaq3H`6;LHA0~v
zB`qX1Lf25w#6Zu`K$A<~xhOTUB)>>OBP2Bf#?8#nb4e^oRnTy;GBPkUFt9W*Hn21`
zFf`LOFjqG)P}k(r_svfsq$H#$v7jI|MM2*!F{e0{OFtmQHA2s=G$$u1F)t6~q>zlv
zVuj3N1&GshAx={;(zDPrHZ?O=(11Bo6DgNe6s4wd87LSTS#TM^fr6Q-sj;a-ngUeJ
z&;pbIK++0%a4~ZOQw5Na0Yc2c02Cu2L714inS~iBO{0mKf}$T)%+d&ylTpRY4MBA#
zs+grQsLhKiW?=+s@1cm98yJ9c4~m$XnI)!M%q&0!3932^V^HOfDrOEE3j_(l{cCP+
zV2T+ACMG7v=;2~w3@V;LnqlE$U|?to>KP)7nVVS}V2YVrg3>jbI&(|3us1ieGzB$w
zP}P|mfvN;#F#`j06HujqCT0XG0#L<F%nZ!X{9$Nd49dPJ>I@Bx3^Dv`ZVIZVk=2=-
zSy-UE&%n^w$jlPm4r4=5dl^};fuVs3sN6yoGcy2H)Tm;nmRRgCF*ZcE!@?3YB!jBg
z!onEcABJXzpn@J*ow>Pz5va9-B4%c81}dUa#LNxM(9^Dgk&y{#90^&Sfsv6hXhaf4
z%+S&h)I38LGdHueG)9XLb2AHY@rtU>+!)lcMia9DjTIt`85o(GV}zBFsTrt?g{scT
z%o06Zj4aGB!pg|P6jU#x>NT~*h$CYoV^FgIMV+yc5vUqK5i_zdN6+U5#-^s|elsvO
zHL<Wji(g|SQw;YRTUcWF&Dg>mi+Seg?lU*DumlawAiK}p+`!z(1kGL(Lo@U;%)rFZ
z6hob{rGYuRn@vp2L47l1I}A)r%s^v_sA7iZ=;^?~#2hnROw2LE#l*w{)UZG`&(Z=^
z-=m3{p_fAjCg$d*=y}!D$OJS@gre8f$QVPNiKQh*{F<5?ff^yGdQA<@G3_wJ$ZzHb
z7RKmdZ)#zJk=9Htj4{%<si_I5eTQtXxtXOIsCkDhW?*Jyh@Phn%!~{$(xj<{DSDk^
zU}j<onzukT&&0w2Js+7F8DW$MX6BgjYi4eSUPl?2nHpfEXLC@cf|e%D4GhrhG6OSn
z3-t2O+}ywzquez&u|#*Dp@o?xdf9GdZfT01hK$WD3^3A~xsf@j#fcIw=0;{1ac*v4
zj8XoX8(5m4)p>>%riK{xs=0{;MjV+NVU$CLMiv<UH8ip?2Q~JP-DhZIff1L6MwW)?
z>E6)D(#Qg>o-wpAHbJigjLgl=Kn+wBJ1opF;=>SBoSLJ?rIDeLCAz&vhQ`L|Wu1|s
zu_=0<F)}nZM~@F9Lt~6Kh!LnLF+sK0*v!=20L^bk=9b3j<*t#rIYzt0*udBVy?!$`
zFfjr(*^$G**ucaDJ?xDQOw7>hePaU?3s64=MX#B$C3;>pF*7j2u-DAo61_Y%HZ!$A
z&#T6k<_75PU1LjgjC$JG(%ck1&lp>pTY$Q$DDJbgFhI|5CZ-mq=xs9-GXrDLKs2&m
z6Eg#I^m-K}1{xqjS7(k^zJSzWG0y_MJ~A;gut4{RiJ74(dKj3P8Cn>lrAZSrBaHUA
ziJ6g!i2-UFGBGo<L~lo!m>HX)hrNlJi4kU8nqZXACT1oWdB()d)Cj#_VPa-#iQXqM
zF*7s83_o*2^m5X~%-je)|ANHO>oOBFb93~3X<}w!fZnz+F|)wp4@-<X#l+0g1U(Iz
zSeTljmz^dSW(Mf(I#8z)y-YL(RSSlw@nLFUX^EbHO$`l<(CbiBLklzXbZTm7iP6t9
zH8L|mFC$Ei%rN4^)Wis*+%PpUGDk1(O-&69jL_Nwrltl)=yi{&sksSy-ZC{cH$zX)
zre+ofpaC7^JY#BRfzj_VHOFipn3|iKp|{OUEsQKcLmMdOSr}uu+04KKJZ*uj&dk8V
z96e0UjEpeSnwgOiMmcU~3~Jn>#-*9Dv8e%CSecm^SfKaw%uEao(ECDWpk|2?nt3J`
zM(FKbGgEUj^m4<@)Z7w1jzG;9^m5$H+}r}ayf?EnvA|GgX^N5l%ngh!(d#X90~2HP
zI5#&mG)6CT%nc1qK?_Qd!`|G`0;9caZfI!$nw3UTXJm#sZUO2Fp_Oaq#wLd7`P|&t
z#00&}Ha9ggMlUzaO^wVk#LUc0(93Ldb3+64_Nh5&XaudE28kipjU`2inK`LNTsAfe
z`oWo1so+5#{h<7O(C{i~BrJ$a-!m^QUjZ`21>(6VMBBKznwS_lnmU^~8k$*}xELEc
xn;AHnTUr`88=1K|ni|+C5LObaU}wiwT#{H+0v=y7H#amfGT>5Gb@g}S0ssfad_MpH

literal 0
HcmV?d00001

diff --git a/libs/zlib/doc/txtvsbin.txt b/libs/zlib/doc/txtvsbin.txt
index 3d0f0634f7..2a901eaa68 100644
--- a/libs/zlib/doc/txtvsbin.txt
+++ b/libs/zlib/doc/txtvsbin.txt
@@ -38,15 +38,15 @@ The Algorithm
 
 The algorithm works by dividing the set of bytecodes [0..255] into three
 categories:
-- The white list of textual bytecodes:
+- The allow list of textual bytecodes:
   9 (TAB), 10 (LF), 13 (CR), 32 (SPACE) to 255.
 - The gray list of tolerated bytecodes:
   7 (BEL), 8 (BS), 11 (VT), 12 (FF), 26 (SUB), 27 (ESC).
-- The black list of undesired, non-textual bytecodes:
+- The block list of undesired, non-textual bytecodes:
   0 (NUL) to 6, 14 to 31.
 
-If a file contains at least one byte that belongs to the white list and
-no byte that belongs to the black list, then the file is categorized as
+If a file contains at least one byte that belongs to the allow list and
+no byte that belongs to the block list, then the file is categorized as
 plain text; otherwise, it is categorized as binary.  (The boundary case,
 when the file is empty, automatically falls into the latter category.)
 
@@ -84,9 +84,9 @@ consistent results, regardless what alphabet encoding is being used.
 results on a text encoded, say, using ISO-8859-16 versus UTF-8.)
 
 There is an extra category of plain text files that are "polluted" with
-one or more black-listed codes, either by mistake or by peculiar design
+one or more block-listed codes, either by mistake or by peculiar design
 considerations.  In such cases, a scheme that tolerates a small fraction
-of black-listed codes would provide an increased recall (i.e. more true
+of block-listed codes would provide an increased recall (i.e. more true
 positives).  This, however, incurs a reduced precision overall, since
 false positives are more likely to appear in binary files that contain
 large chunks of textual data.  Furthermore, "polluted" plain text should
diff --git a/libs/zlib/examples/README.examples b/libs/zlib/examples/README.examples
index 56a31714e5..e3a4b88bbb 100644
--- a/libs/zlib/examples/README.examples
+++ b/libs/zlib/examples/README.examples
@@ -34,6 +34,10 @@ gzlog.h
       and deflateSetDictionary()
     - illustrates use of a gzip header extra field
 
+gznorm.c
+    normalize a gzip file by combining members into a single member
+    - demonstrates how to concatenate deflate streams using Z_BLOCK
+
 zlib_how.html
     painfully comprehensive description of zpipe.c (see below)
     - describes in excruciating detail the use of deflate() and inflate()
@@ -44,6 +48,7 @@ zpipe.c
     - deeply commented in zlib_how.html (see above)
 
 zran.c
+zran.h
     index a zlib or gzip stream and randomly access it
     - illustrates the use of Z_BLOCK, inflatePrime(), and
       inflateSetDictionary() to provide random access
diff --git a/libs/zlib/examples/enough.c b/libs/zlib/examples/enough.c
index b991144305..8a3cade492 100644
--- a/libs/zlib/examples/enough.c
+++ b/libs/zlib/examples/enough.c
@@ -1,7 +1,7 @@
 /* enough.c -- determine the maximum size of inflate's Huffman code tables over
- * all possible valid and complete Huffman codes, subject to a length limit.
- * Copyright (C) 2007, 2008, 2012 Mark Adler
- * Version 1.4  18 August 2012  Mark Adler
+ * all possible valid and complete prefix codes, subject to a length limit.
+ * Copyright (C) 2007, 2008, 2012, 2018 Mark Adler
+ * Version 1.5  5 August 2018  Mark Adler
  */
 
 /* Version history:
@@ -17,101 +17,107 @@
    1.4  18 Aug 2012  Avoid shifts more than bits in type (caused endless loop!)
                      Clean up comparisons of different types
                      Clean up code indentation
+   1.5   5 Aug 2018  Clean up code style, formatting, and comments
+                     Show all the codes for the maximum, and only the maximum
  */
 
 /*
-   Examine all possible Huffman codes for a given number of symbols and a
-   maximum code length in bits to determine the maximum table size for zilb's
-   inflate.  Only complete Huffman codes are counted.
+   Examine all possible prefix codes for a given number of symbols and a
+   maximum code length in bits to determine the maximum table size for zlib's
+   inflate. Only complete prefix codes are counted.
 
    Two codes are considered distinct if the vectors of the number of codes per
-   length are not identical.  So permutations of the symbol assignments result
+   length are not identical. So permutations of the symbol assignments result
    in the same code for the counting, as do permutations of the assignments of
    the bit values to the codes (i.e. only canonical codes are counted).
 
    We build a code from shorter to longer lengths, determining how many symbols
-   are coded at each length.  At each step, we have how many symbols remain to
+   are coded at each length. At each step, we have how many symbols remain to
    be coded, what the last code length used was, and how many bit patterns of
    that length remain unused. Then we add one to the code length and double the
-   number of unused patterns to graduate to the next code length.  We then
+   number of unused patterns to graduate to the next code length. We then
    assign all portions of the remaining symbols to that code length that
-   preserve the properties of a correct and eventually complete code.  Those
+   preserve the properties of a correct and eventually complete code. Those
    properties are: we cannot use more bit patterns than are available; and when
-   all the symbols are used, there are exactly zero possible bit patterns
-   remaining.
+   all the symbols are used, there are exactly zero possible bit patterns left
+   unused.
 
    The inflate Huffman decoding algorithm uses two-level lookup tables for
-   speed.  There is a single first-level table to decode codes up to root bits
-   in length (root == 9 in the current inflate implementation).  The table
-   has 1 << root entries and is indexed by the next root bits of input.  Codes
-   shorter than root bits have replicated table entries, so that the correct
-   entry is pointed to regardless of the bits that follow the short code.  If
-   the code is longer than root bits, then the table entry points to a second-
-   level table.  The size of that table is determined by the longest code with
-   that root-bit prefix.  If that longest code has length len, then the table
-   has size 1 << (len - root), to index the remaining bits in that set of
-   codes.  Each subsequent root-bit prefix then has its own sub-table.  The
-   total number of table entries required by the code is calculated
-   incrementally as the number of codes at each bit length is populated.  When
-   all of the codes are shorter than root bits, then root is reduced to the
-   longest code length, resulting in a single, smaller, one-level table.
+   speed. There is a single first-level table to decode codes up to root bits
+   in length (root == 9 for literal/length codes and root == 6 for distance
+   codes, in the current inflate implementation). The base table has 1 << root
+   entries and is indexed by the next root bits of input. Codes shorter than
+   root bits have replicated table entries, so that the correct entry is
+   pointed to regardless of the bits that follow the short code. If the code is
+   longer than root bits, then the table entry points to a second-level table.
+   The size of that table is determined by the longest code with that root-bit
+   prefix. If that longest code has length len, then the table has size 1 <<
+   (len - root), to index the remaining bits in that set of codes. Each
+   subsequent root-bit prefix then has its own sub-table. The total number of
+   table entries required by the code is calculated incrementally as the number
+   of codes at each bit length is populated. When all of the codes are shorter
+   than root bits, then root is reduced to the longest code length, resulting
+   in a single, smaller, one-level table.
 
    The inflate algorithm also provides for small values of root (relative to
    the log2 of the number of symbols), where the shortest code has more bits
-   than root.  In that case, root is increased to the length of the shortest
-   code.  This program, by design, does not handle that case, so it is verified
-   that the number of symbols is less than 2^(root + 1).
+   than root. In that case, root is increased to the length of the shortest
+   code. This program, by design, does not handle that case, so it is verified
+   that the number of symbols is less than 1 << (root + 1).
 
    In order to speed up the examination (by about ten orders of magnitude for
    the default arguments), the intermediate states in the build-up of a code
-   are remembered and previously visited branches are pruned.  The memory
+   are remembered and previously visited branches are pruned. The memory
    required for this will increase rapidly with the total number of symbols and
-   the maximum code length in bits.  However this is a very small price to pay
+   the maximum code length in bits. However this is a very small price to pay
    for the vast speedup.
 
-   First, all of the possible Huffman codes are counted, and reachable
+   First, all of the possible prefix codes are counted, and reachable
    intermediate states are noted by a non-zero count in a saved-results array.
    Second, the intermediate states that lead to (root + 1) bit or longer codes
    are used to look at all sub-codes from those junctures for their inflate
-   memory usage.  (The amount of memory used is not affected by the number of
+   memory usage. (The amount of memory used is not affected by the number of
    codes of root bits or less in length.)  Third, the visited states in the
    construction of those sub-codes and the associated calculation of the table
    size is recalled in order to avoid recalculating from the same juncture.
    Beginning the code examination at (root + 1) bit codes, which is enabled by
    identifying the reachable nodes, accounts for about six of the orders of
-   magnitude of improvement for the default arguments.  About another four
-   orders of magnitude come from not revisiting previous states.  Out of
-   approximately 2x10^16 possible Huffman codes, only about 2x10^6 sub-codes
+   magnitude of improvement for the default arguments. About another four
+   orders of magnitude come from not revisiting previous states. Out of
+   approximately 2x10^16 possible prefix codes, only about 2x10^6 sub-codes
    need to be examined to cover all of the possible table memory usage cases
    for the default arguments of 286 symbols limited to 15-bit codes.
 
-   Note that an unsigned long long type is used for counting.  It is quite easy
-   to exceed the capacity of an eight-byte integer with a large number of
-   symbols and a large maximum code length, so multiple-precision arithmetic
-   would need to replace the unsigned long long arithmetic in that case.  This
-   program will abort if an overflow occurs.  The big_t type identifies where
-   the counting takes place.
-
-   An unsigned long long type is also used for calculating the number of
-   possible codes remaining at the maximum length.  This limits the maximum
-   code length to the number of bits in a long long minus the number of bits
-   needed to represent the symbols in a flat code.  The code_t type identifies
-   where the bit pattern counting takes place.
+   Note that the uintmax_t type is used for counting. It is quite easy to
+   exceed the capacity of an eight-byte integer with a large number of symbols
+   and a large maximum code length, so multiple-precision arithmetic would need
+   to replace the integer arithmetic in that case. This program will abort if
+   an overflow occurs. The big_t type identifies where the counting takes
+   place.
+
+   The uintmax_t type is also used for calculating the number of possible codes
+   remaining at the maximum length. This limits the maximum code length to the
+   number of bits in a long long minus the number of bits needed to represent
+   the symbols in a flat code. The code_t type identifies where the bit-pattern
+   counting takes place.
  */
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
+#include <stdint.h>
 #include <assert.h>
 
 #define local static
 
-/* special data types */
-typedef unsigned long long big_t;   /* type for code counting */
-typedef unsigned long long code_t;  /* type for bit pattern counting */
-struct tab {                        /* type for been here check */
-    size_t len;         /* length of bit vector in char's */
-    char *vec;          /* allocated bit vector */
+// Special data types.
+typedef uintmax_t big_t;    // type for code counting
+#define PRIbig "ju"         // printf format for big_t
+typedef uintmax_t code_t;   // type for bit pattern counting
+struct tab {                // type for been-here check
+    size_t len;             // allocated length of bit vector in octets
+    char *vec;              // allocated bit vector
 };
 
 /* The array for saving results, num[], is indexed with this triplet:
@@ -126,447 +132,466 @@ struct tab {                        /* type for been here check */
       left: 2..syms - 1, but only the evens (so syms == 8 -> 2, 4, 6)
       len: 1..max - 1 (max == maximum code length in bits)
 
-   syms == 2 is not saved since that immediately leads to a single code.  left
+   syms == 2 is not saved since that immediately leads to a single code. left
    must be even, since it represents the number of available bit patterns at
-   the current length, which is double the number at the previous length.
-   left ends at syms-1 since left == syms immediately results in a single code.
+   the current length, which is double the number at the previous length. left
+   ends at syms-1 since left == syms immediately results in a single code.
    (left > sym is not allowed since that would result in an incomplete code.)
    len is less than max, since the code completes immediately when len == max.
 
-   The offset into the array is calculated for the three indices with the
-   first one (syms) being outermost, and the last one (len) being innermost.
-   We build the array with length max-1 lists for the len index, with syms-3
-   of those for each symbol.  There are totsym-2 of those, with each one
-   varying in length as a function of sym.  See the calculation of index in
-   count() for the index, and the calculation of size in main() for the size
-   of the array.
+   The offset into the array is calculated for the three indices with the first
+   one (syms) being outermost, and the last one (len) being innermost. We build
+   the array with length max-1 lists for the len index, with syms-3 of those
+   for each symbol. There are totsym-2 of those, with each one varying in
+   length as a function of sym. See the calculation of index in map() for the
+   index, and the calculation of size in main() for the size of the array.
 
    For the deflate example of 286 symbols limited to 15-bit codes, the array
-   has 284,284 entries, taking up 2.17 MB for an 8-byte big_t.  More than
-   half of the space allocated for saved results is actually used -- not all
-   possible triplets are reached in the generation of valid Huffman codes.
+   has 284,284 entries, taking up 2.17 MB for an 8-byte big_t. More than half
+   of the space allocated for saved results is actually used -- not all
+   possible triplets are reached in the generation of valid prefix codes.
  */
 
 /* The array for tracking visited states, done[], is itself indexed identically
    to the num[] array as described above for the (syms, left, len) triplet.
    Each element in the array is further indexed by the (mem, rem) doublet,
    where mem is the amount of inflate table space used so far, and rem is the
-   remaining unused entries in the current inflate sub-table.  Each indexed
+   remaining unused entries in the current inflate sub-table. Each indexed
    element is simply one bit indicating whether the state has been visited or
-   not.  Since the ranges for mem and rem are not known a priori, each bit
+   not. Since the ranges for mem and rem are not known a priori, each bit
    vector is of a variable size, and grows as needed to accommodate the visited
-   states.  mem and rem are used to calculate a single index in a triangular
-   array.  Since the range of mem is expected in the default case to be about
+   states. mem and rem are used to calculate a single index in a triangular
+   array. Since the range of mem is expected in the default case to be about
    ten times larger than the range of rem, the array is skewed to reduce the
-   memory usage, with eight times the range for mem than for rem.  See the
-   calculations for offset and bit in beenhere() for the details.
+   memory usage, with eight times the range for mem than for rem. See the
+   calculations for offset and bit in been_here() for the details.
 
    For the deflate example of 286 symbols limited to 15-bit codes, the bit
-   vectors grow to total approximately 21 MB, in addition to the 4.3 MB done[]
-   array itself.
+   vectors grow to total 5.5 MB, in addition to the 4.3 MB done array itself.
  */
 
-/* Globals to avoid propagating constants or constant pointers recursively */
-local int max;          /* maximum allowed bit length for the codes */
-local int root;         /* size of base code table in bits */
-local int large;        /* largest code table so far */
-local size_t size;      /* number of elements in num and done */
-local int *code;        /* number of symbols assigned to each bit length */
-local big_t *num;       /* saved results array for code counting */
-local struct tab *done; /* states already evaluated array */
-
-/* Index function for num[] and done[] */
-#define INDEX(i,j,k) (((size_t)((i-1)>>1)*((i-2)>>1)+(j>>1)-1)*(max-1)+k-1)
-
-/* Free allocated space.  Uses globals code, num, and done. */
-local void cleanup(void)
-{
-    size_t n;
-
-    if (done != NULL) {
-        for (n = 0; n < size; n++)
-            if (done[n].len)
-                free(done[n].vec);
-        free(done);
+// Type for a variable-length, allocated string.
+typedef struct {
+    char *str;          // pointer to allocated string
+    size_t size;        // size of allocation
+    size_t len;         // length of string, not including terminating zero
+} string_t;
+
+// Clear a string_t.
+local void string_clear(string_t *s) {
+    s->str[0] = 0;
+    s->len = 0;
+}
+
+// Initialize a string_t.
+local void string_init(string_t *s) {
+    s->size = 16;
+    s->str = malloc(s->size);
+    assert(s->str != NULL && "out of memory");
+    string_clear(s);
+}
+
+// Release the allocation of a string_t.
+local void string_free(string_t *s) {
+    free(s->str);
+    s->str = NULL;
+    s->size = 0;
+    s->len = 0;
+}
+
+// Save the results of printf with fmt and the subsequent argument list to s.
+// Each call appends to s. The allocated space for s is increased as needed.
+local void string_printf(string_t *s, char *fmt, ...) {
+    va_list ap;
+    va_start(ap, fmt);
+    size_t len = s->len;
+    int ret = vsnprintf(s->str + len, s->size - len, fmt, ap);
+    assert(ret >= 0 && "out of memory");
+    s->len += ret;
+    if (s->size < s->len + 1) {
+        do {
+            s->size <<= 1;
+            assert(s->size != 0 && "overflow");
+        } while (s->size < s->len + 1);
+        s->str = realloc(s->str, s->size);
+        assert(s->str != NULL && "out of memory");
+        vsnprintf(s->str + len, s->size - len, fmt, ap);
     }
-    if (num != NULL)
-        free(num);
-    if (code != NULL)
-        free(code);
+    va_end(ap);
 }
 
-/* Return the number of possible Huffman codes using bit patterns of lengths
-   len through max inclusive, coding syms symbols, with left bit patterns of
-   length len unused -- return -1 if there is an overflow in the counting.
-   Keep a record of previous results in num to prevent repeating the same
-   calculation.  Uses the globals max and num. */
-local big_t count(int syms, int len, int left)
-{
-    big_t sum;          /* number of possible codes from this juncture */
-    big_t got;          /* value returned from count() */
-    int least;          /* least number of syms to use at this juncture */
-    int most;           /* most number of syms to use at this juncture */
-    int use;            /* number of bit patterns to use in next call */
-    size_t index;       /* index of this case in *num */
-
-    /* see if only one possible code */
+// Globals to avoid propagating constants or constant pointers recursively.
+struct {
+    int max;            // maximum allowed bit length for the codes
+    int root;           // size of base code table in bits
+    int large;          // largest code table so far
+    size_t size;        // number of elements in num and done
+    big_t tot;          // total number of codes with maximum tables size
+    string_t out;       // display of subcodes for maximum tables size
+    int *code;          // number of symbols assigned to each bit length
+    big_t *num;         // saved results array for code counting
+    struct tab *done;   // states already evaluated array
+} g;
+
+// Index function for num[] and done[].
+local inline size_t map(int syms, int left, int len) {
+    return ((size_t)((syms - 1) >> 1) * ((syms - 2) >> 1) +
+            (left >> 1) - 1) * (g.max - 1) +
+           len - 1;
+}
+
+// Free allocated space in globals.
+local void cleanup(void) {
+    if (g.done != NULL) {
+        for (size_t n = 0; n < g.size; n++)
+            if (g.done[n].len)
+                free(g.done[n].vec);
+        g.size = 0;
+        free(g.done);   g.done = NULL;
+    }
+    free(g.num);    g.num = NULL;
+    free(g.code);   g.code = NULL;
+    string_free(&g.out);
+}
+
+// Return the number of possible prefix codes using bit patterns of lengths len
+// through max inclusive, coding syms symbols, with left bit patterns of length
+// len unused -- return -1 if there is an overflow in the counting. Keep a
+// record of previous results in num to prevent repeating the same calculation.
+local big_t count(int syms, int left, int len) {
+    // see if only one possible code
     if (syms == left)
         return 1;
 
-    /* note and verify the expected state */
-    assert(syms > left && left > 0 && len < max);
+    // note and verify the expected state
+    assert(syms > left && left > 0 && len < g.max);
 
-    /* see if we've done this one already */
-    index = INDEX(syms, left, len);
-    got = num[index];
+    // see if we've done this one already
+    size_t index = map(syms, left, len);
+    big_t got = g.num[index];
     if (got)
-        return got;         /* we have -- return the saved result */
+        return got;         // we have -- return the saved result
 
-    /* we need to use at least this many bit patterns so that the code won't be
-       incomplete at the next length (more bit patterns than symbols) */
-    least = (left << 1) - syms;
+    // we need to use at least this many bit patterns so that the code won't be
+    // incomplete at the next length (more bit patterns than symbols)
+    int least = (left << 1) - syms;
     if (least < 0)
         least = 0;
 
-    /* we can use at most this many bit patterns, lest there not be enough
-       available for the remaining symbols at the maximum length (if there were
-       no limit to the code length, this would become: most = left - 1) */
-    most = (((code_t)left << (max - len)) - syms) /
-            (((code_t)1 << (max - len)) - 1);
+    // we can use at most this many bit patterns, lest there not be enough
+    // available for the remaining symbols at the maximum length (if there were
+    // no limit to the code length, this would become: most = left - 1)
+    int most = (((code_t)left << (g.max - len)) - syms) /
+               (((code_t)1 << (g.max - len)) - 1);
 
-    /* count all possible codes from this juncture and add them up */
-    sum = 0;
-    for (use = least; use <= most; use++) {
-        got = count(syms - use, len + 1, (left - use) << 1);
+    // count all possible codes from this juncture and add them up
+    big_t sum = 0;
+    for (int use = least; use <= most; use++) {
+        got = count(syms - use, (left - use) << 1, len + 1);
         sum += got;
-        if (got == (big_t)0 - 1 || sum < got)   /* overflow */
-            return (big_t)0 - 1;
+        if (got == (big_t)-1 || sum < got)      // overflow
+            return (big_t)-1;
     }
 
-    /* verify that all recursive calls are productive */
+    // verify that all recursive calls are productive
     assert(sum != 0);
 
-    /* save the result and return it */
-    num[index] = sum;
+    // save the result and return it
+    g.num[index] = sum;
     return sum;
 }
 
-/* Return true if we've been here before, set to true if not.  Set a bit in a
-   bit vector to indicate visiting this state.  Each (syms,len,left) state
-   has a variable size bit vector indexed by (mem,rem).  The bit vector is
-   lengthened if needed to allow setting the (mem,rem) bit. */
-local int beenhere(int syms, int len, int left, int mem, int rem)
-{
-    size_t index;       /* index for this state's bit vector */
-    size_t offset;      /* offset in this state's bit vector */
-    int bit;            /* mask for this state's bit */
-    size_t length;      /* length of the bit vector in bytes */
-    char *vector;       /* new or enlarged bit vector */
-
-    /* point to vector for (syms,left,len), bit in vector for (mem,rem) */
-    index = INDEX(syms, left, len);
-    mem -= 1 << root;
-    offset = (mem >> 3) + rem;
+// Return true if we've been here before, set to true if not. Set a bit in a
+// bit vector to indicate visiting this state. Each (syms,len,left) state has a
+// variable size bit vector indexed by (mem,rem). The bit vector is lengthened
+// as needed to allow setting the (mem,rem) bit.
+local int been_here(int syms, int left, int len, int mem, int rem) {
+    // point to vector for (syms,left,len), bit in vector for (mem,rem)
+    size_t index = map(syms, left, len);
+    mem -= 1 << g.root;             // mem always includes the root table
+    mem >>= 1;                      // mem and rem are always even
+    rem >>= 1;
+    size_t offset = (mem >> 3) + rem;
     offset = ((offset * (offset + 1)) >> 1) + rem;
-    bit = 1 << (mem & 7);
+    int bit = 1 << (mem & 7);
 
-    /* see if we've been here */
-    length = done[index].len;
-    if (offset < length && (done[index].vec[offset] & bit) != 0)
-        return 1;       /* done this! */
+    // see if we've been here
+    size_t length = g.done[index].len;
+    if (offset < length && (g.done[index].vec[offset] & bit) != 0)
+        return 1;       // done this!
 
-    /* we haven't been here before -- set the bit to show we have now */
+    // we haven't been here before -- set the bit to show we have now
 
-    /* see if we need to lengthen the vector in order to set the bit */
+    // see if we need to lengthen the vector in order to set the bit
     if (length <= offset) {
-        /* if we have one already, enlarge it, zero out the appended space */
+        // if we have one already, enlarge it, zero out the appended space
+        char *vector;
         if (length) {
             do {
                 length <<= 1;
             } while (length <= offset);
-            vector = realloc(done[index].vec, length);
-            if (vector != NULL)
-                memset(vector + done[index].len, 0, length - done[index].len);
+            vector = realloc(g.done[index].vec, length);
+            assert(vector != NULL && "out of memory");
+            memset(vector + g.done[index].len, 0, length - g.done[index].len);
         }
 
-        /* otherwise we need to make a new vector and zero it out */
+        // otherwise we need to make a new vector and zero it out
         else {
-            length = 1 << (len - root);
+            length = 16;
             while (length <= offset)
                 length <<= 1;
-            vector = calloc(length, sizeof(char));
-        }
-
-        /* in either case, bail if we can't get the memory */
-        if (vector == NULL) {
-            fputs("abort: unable to allocate enough memory\n", stderr);
-            cleanup();
-            exit(1);
+            vector = calloc(length, 1);
+            assert(vector != NULL && "out of memory");
         }
 
-        /* install the new vector */
-        done[index].len = length;
-        done[index].vec = vector;
+        // install the new vector
+        g.done[index].len = length;
+        g.done[index].vec = vector;
     }
 
-    /* set the bit */
-    done[index].vec[offset] |= bit;
+    // set the bit
+    g.done[index].vec[offset] |= bit;
     return 0;
 }
 
-/* Examine all possible codes from the given node (syms, len, left).  Compute
-   the amount of memory required to build inflate's decoding tables, where the
-   number of code structures used so far is mem, and the number remaining in
-   the current sub-table is rem.  Uses the globals max, code, root, large, and
-   done. */
-local void examine(int syms, int len, int left, int mem, int rem)
-{
-    int least;          /* least number of syms to use at this juncture */
-    int most;           /* most number of syms to use at this juncture */
-    int use;            /* number of bit patterns to use in next call */
-
-    /* see if we have a complete code */
+// Examine all possible codes from the given node (syms, len, left). Compute
+// the amount of memory required to build inflate's decoding tables, where the
+// number of code structures used so far is mem, and the number remaining in
+// the current sub-table is rem.
+local void examine(int syms, int left, int len, int mem, int rem) {
+    // see if we have a complete code
     if (syms == left) {
-        /* set the last code entry */
-        code[len] = left;
+        // set the last code entry
+        g.code[len] = left;
 
-        /* complete computation of memory used by this code */
+        // complete computation of memory used by this code
         while (rem < left) {
             left -= rem;
-            rem = 1 << (len - root);
+            rem = 1 << (len - g.root);
             mem += rem;
         }
         assert(rem == left);
 
-        /* if this is a new maximum, show the entries used and the sub-code */
-        if (mem > large) {
-            large = mem;
-            printf("max %d: ", mem);
-            for (use = root + 1; use <= max; use++)
-                if (code[use])
-                    printf("%d[%d] ", code[use], use);
-            putchar('\n');
-            fflush(stdout);
+        // if this is at the maximum, show the sub-code
+        if (mem >= g.large) {
+            // if this is a new maximum, update the maximum and clear out the
+            // printed sub-codes from the previous maximum
+            if (mem > g.large) {
+                g.large = mem;
+                string_clear(&g.out);
+            }
+
+            // compute the starting state for this sub-code
+            syms = 0;
+            left = 1 << g.max;
+            for (int bits = g.max; bits > g.root; bits--) {
+                syms += g.code[bits];
+                left -= g.code[bits];
+                assert((left & 1) == 0);
+                left >>= 1;
+            }
+
+            // print the starting state and the resulting sub-code to g.out
+            string_printf(&g.out, "<%u, %u, %u>:",
+                          syms, g.root + 1, ((1 << g.root) - left) << 1);
+            for (int bits = g.root + 1; bits <= g.max; bits++)
+                if (g.code[bits])
+                    string_printf(&g.out, " %d[%d]", g.code[bits], bits);
+            string_printf(&g.out, "\n");
         }
 
-        /* remove entries as we drop back down in the recursion */
-        code[len] = 0;
+        // remove entries as we drop back down in the recursion
+        g.code[len] = 0;
         return;
     }
 
-    /* prune the tree if we can */
-    if (beenhere(syms, len, left, mem, rem))
+    // prune the tree if we can
+    if (been_here(syms, left, len, mem, rem))
         return;
 
-    /* we need to use at least this many bit patterns so that the code won't be
-       incomplete at the next length (more bit patterns than symbols) */
-    least = (left << 1) - syms;
+    // we need to use at least this many bit patterns so that the code won't be
+    // incomplete at the next length (more bit patterns than symbols)
+    int least = (left << 1) - syms;
     if (least < 0)
         least = 0;
 
-    /* we can use at most this many bit patterns, lest there not be enough
-       available for the remaining symbols at the maximum length (if there were
-       no limit to the code length, this would become: most = left - 1) */
-    most = (((code_t)left << (max - len)) - syms) /
-            (((code_t)1 << (max - len)) - 1);
+    // we can use at most this many bit patterns, lest there not be enough
+    // available for the remaining symbols at the maximum length (if there were
+    // no limit to the code length, this would become: most = left - 1)
+    int most = (((code_t)left << (g.max - len)) - syms) /
+               (((code_t)1 << (g.max - len)) - 1);
 
-    /* occupy least table spaces, creating new sub-tables as needed */
-    use = least;
+    // occupy least table spaces, creating new sub-tables as needed
+    int use = least;
     while (rem < use) {
         use -= rem;
-        rem = 1 << (len - root);
+        rem = 1 << (len - g.root);
         mem += rem;
     }
     rem -= use;
 
-    /* examine codes from here, updating table space as we go */
+    // examine codes from here, updating table space as we go
     for (use = least; use <= most; use++) {
-        code[len] = use;
-        examine(syms - use, len + 1, (left - use) << 1,
-                mem + (rem ? 1 << (len - root) : 0), rem << 1);
+        g.code[len] = use;
+        examine(syms - use, (left - use) << 1, len + 1,
+                mem + (rem ? 1 << (len - g.root) : 0), rem << 1);
         if (rem == 0) {
-            rem = 1 << (len - root);
+            rem = 1 << (len - g.root);
             mem += rem;
         }
         rem--;
     }
 
-    /* remove entries as we drop back down in the recursion */
-    code[len] = 0;
+    // remove entries as we drop back down in the recursion
+    g.code[len] = 0;
 }
 
-/* Look at all sub-codes starting with root + 1 bits.  Look at only the valid
-   intermediate code states (syms, left, len).  For each completed code,
-   calculate the amount of memory required by inflate to build the decoding
-   tables. Find the maximum amount of memory required and show the code that
-   requires that maximum.  Uses the globals max, root, and num. */
-local void enough(int syms)
-{
-    int n;              /* number of remaing symbols for this node */
-    int left;           /* number of unused bit patterns at this length */
-    size_t index;       /* index of this case in *num */
-
-    /* clear code */
-    for (n = 0; n <= max; n++)
-        code[n] = 0;
-
-    /* look at all (root + 1) bit and longer codes */
-    large = 1 << root;              /* base table */
-    if (root < max)                 /* otherwise, there's only a base table */
-        for (n = 3; n <= syms; n++)
-            for (left = 2; left < n; left += 2)
-            {
-                /* look at all reachable (root + 1) bit nodes, and the
-                   resulting codes (complete at root + 2 or more) */
-                index = INDEX(n, left, root + 1);
-                if (root + 1 < max && num[index])       /* reachable node */
-                    examine(n, root + 1, left, 1 << root, 0);
-
-                /* also look at root bit codes with completions at root + 1
-                   bits (not saved in num, since complete), just in case */
-                if (num[index - 1] && n <= left << 1)
-                    examine((n - left) << 1, root + 1, (n - left) << 1,
-                            1 << root, 0);
+// Look at all sub-codes starting with root + 1 bits. Look at only the valid
+// intermediate code states (syms, left, len). For each completed code,
+// calculate the amount of memory required by inflate to build the decoding
+// tables. Find the maximum amount of memory required and show the codes that
+// require that maximum.
+local void enough(int syms) {
+    // clear code
+    for (int n = 0; n <= g.max; n++)
+        g.code[n] = 0;
+
+    // look at all (root + 1) bit and longer codes
+    string_clear(&g.out);           // empty saved results
+    g.large = 1 << g.root;          // base table
+    if (g.root < g.max)             // otherwise, there's only a base table
+        for (int n = 3; n <= syms; n++)
+            for (int left = 2; left < n; left += 2) {
+                // look at all reachable (root + 1) bit nodes, and the
+                // resulting codes (complete at root + 2 or more)
+                size_t index = map(n, left, g.root + 1);
+                if (g.root + 1 < g.max && g.num[index]) // reachable node
+                    examine(n, left, g.root + 1, 1 << g.root, 0);
+
+                // also look at root bit codes with completions at root + 1
+                // bits (not saved in num, since complete), just in case
+                if (g.num[index - 1] && n <= left << 1)
+                    examine((n - left) << 1, (n - left) << 1, g.root + 1,
+                            1 << g.root, 0);
             }
 
-    /* done */
-    printf("done: maximum of %d table entries\n", large);
+    // done
+    printf("maximum of %d table entries for root = %d\n", g.large, g.root);
+    fputs(g.out.str, stdout);
 }
 
-/*
-   Examine and show the total number of possible Huffman codes for a given
-   maximum number of symbols, initial root table size, and maximum code length
-   in bits -- those are the command arguments in that order.  The default
-   values are 286, 9, and 15 respectively, for the deflate literal/length code.
-   The possible codes are counted for each number of coded symbols from two to
-   the maximum.  The counts for each of those and the total number of codes are
-   shown.  The maximum number of inflate table entires is then calculated
-   across all possible codes.  Each new maximum number of table entries and the
-   associated sub-code (starting at root + 1 == 10 bits) is shown.
-
-   To count and examine Huffman codes that are not length-limited, provide a
-   maximum length equal to the number of symbols minus one.
-
-   For the deflate literal/length code, use "enough".  For the deflate distance
-   code, use "enough 30 6".
-
-   This uses the %llu printf format to print big_t numbers, which assumes that
-   big_t is an unsigned long long.  If the big_t type is changed (for example
-   to a multiple precision type), the method of printing will also need to be
-   updated.
- */
-int main(int argc, char **argv)
-{
-    int syms;           /* total number of symbols to code */
-    int n;              /* number of symbols to code for this run */
-    big_t got;          /* return value of count() */
-    big_t sum;          /* accumulated number of codes over n */
-    code_t word;        /* for counting bits in code_t */
-
-    /* set up globals for cleanup() */
-    code = NULL;
-    num = NULL;
-    done = NULL;
-
-    /* get arguments -- default to the deflate literal/length code */
-    syms = 286;
-    root = 9;
-    max = 15;
+// Examine and show the total number of possible prefix codes for a given
+// maximum number of symbols, initial root table size, and maximum code length
+// in bits -- those are the command arguments in that order. The default values
+// are 286, 9, and 15 respectively, for the deflate literal/length code. The
+// possible codes are counted for each number of coded symbols from two to the
+// maximum. The counts for each of those and the total number of codes are
+// shown. The maximum number of inflate table entries is then calculated across
+// all possible codes. Each new maximum number of table entries and the
+// associated sub-code (starting at root + 1 == 10 bits) is shown.
+//
+// To count and examine prefix codes that are not length-limited, provide a
+// maximum length equal to the number of symbols minus one.
+//
+// For the deflate literal/length code, use "enough". For the deflate distance
+// code, use "enough 30 6".
+int main(int argc, char **argv) {
+    // set up globals for cleanup()
+    g.code = NULL;
+    g.num = NULL;
+    g.done = NULL;
+    string_init(&g.out);
+
+    // get arguments -- default to the deflate literal/length code
+    int syms = 286;
+    g.root = 9;
+    g.max = 15;
     if (argc > 1) {
         syms = atoi(argv[1]);
         if (argc > 2) {
-            root = atoi(argv[2]);
+            g.root = atoi(argv[2]);
             if (argc > 3)
-                max = atoi(argv[3]);
+                g.max = atoi(argv[3]);
         }
     }
-    if (argc > 4 || syms < 2 || root < 1 || max < 1) {
+    if (argc > 4 || syms < 2 || g.root < 1 || g.max < 1) {
         fputs("invalid arguments, need: [sym >= 2 [root >= 1 [max >= 1]]]\n",
               stderr);
         return 1;
     }
 
-    /* if not restricting the code length, the longest is syms - 1 */
-    if (max > syms - 1)
-        max = syms - 1;
+    // if not restricting the code length, the longest is syms - 1
+    if (g.max > syms - 1)
+        g.max = syms - 1;
 
-    /* determine the number of bits in a code_t */
-    for (n = 0, word = 1; word; n++, word <<= 1)
-        ;
+    // determine the number of bits in a code_t
+    int bits = 0;
+    for (code_t word = 1; word; word <<= 1)
+        bits++;
 
-    /* make sure that the calculation of most will not overflow */
-    if (max > n || (code_t)(syms - 2) >= (((code_t)0 - 1) >> (max - 1))) {
+    // make sure that the calculation of most will not overflow
+    if (g.max > bits || (code_t)(syms - 2) >= ((code_t)-1 >> (g.max - 1))) {
         fputs("abort: code length too long for internal types\n", stderr);
         return 1;
     }
 
-    /* reject impossible code requests */
-    if ((code_t)(syms - 1) > ((code_t)1 << max) - 1) {
+    // reject impossible code requests
+    if ((code_t)(syms - 1) > ((code_t)1 << g.max) - 1) {
         fprintf(stderr, "%d symbols cannot be coded in %d bits\n",
-                syms, max);
+                syms, g.max);
         return 1;
     }
 
-    /* allocate code vector */
-    code = calloc(max + 1, sizeof(int));
-    if (code == NULL) {
-        fputs("abort: unable to allocate enough memory\n", stderr);
-        return 1;
-    }
+    // allocate code vector
+    g.code = calloc(g.max + 1, sizeof(int));
+    assert(g.code != NULL && "out of memory");
 
-    /* determine size of saved results array, checking for overflows,
-       allocate and clear the array (set all to zero with calloc()) */
-    if (syms == 2)              /* iff max == 1 */
-        num = NULL;             /* won't be saving any results */
+    // determine size of saved results array, checking for overflows,
+    // allocate and clear the array (set all to zero with calloc())
+    if (syms == 2)              // iff max == 1
+        g.num = NULL;           // won't be saving any results
     else {
-        size = syms >> 1;
-        if (size > ((size_t)0 - 1) / (n = (syms - 1) >> 1) ||
-                (size *= n, size > ((size_t)0 - 1) / (n = max - 1)) ||
-                (size *= n, size > ((size_t)0 - 1) / sizeof(big_t)) ||
-                (num = calloc(size, sizeof(big_t))) == NULL) {
-            fputs("abort: unable to allocate enough memory\n", stderr);
-            cleanup();
-            return 1;
-        }
+        g.size = syms >> 1;
+        int n = (syms - 1) >> 1;
+        assert(g.size <= (size_t)-1 / n && "overflow");
+        g.size *= n;
+        n = g.max - 1;
+        assert(g.size <= (size_t)-1 / n && "overflow");
+        g.size *= n;
+        g.num = calloc(g.size, sizeof(big_t));
+        assert(g.num != NULL && "out of memory");
     }
 
-    /* count possible codes for all numbers of symbols, add up counts */
-    sum = 0;
-    for (n = 2; n <= syms; n++) {
-        got = count(n, 1, 2);
+    // count possible codes for all numbers of symbols, add up counts
+    big_t sum = 0;
+    for (int n = 2; n <= syms; n++) {
+        big_t got = count(n, 2, 1);
         sum += got;
-        if (got == (big_t)0 - 1 || sum < got) {     /* overflow */
-            fputs("abort: can't count that high!\n", stderr);
-            cleanup();
-            return 1;
-        }
-        printf("%llu %d-codes\n", got, n);
+        assert(got != (big_t)-1 && sum >= got && "overflow");
     }
-    printf("%llu total codes for 2 to %d symbols", sum, syms);
-    if (max < syms - 1)
-        printf(" (%d-bit length limit)\n", max);
+    printf("%"PRIbig" total codes for 2 to %d symbols", sum, syms);
+    if (g.max < syms - 1)
+        printf(" (%d-bit length limit)\n", g.max);
     else
         puts(" (no length limit)");
 
-    /* allocate and clear done array for beenhere() */
+    // allocate and clear done array for been_here()
     if (syms == 2)
-        done = NULL;
-    else if (size > ((size_t)0 - 1) / sizeof(struct tab) ||
-             (done = calloc(size, sizeof(struct tab))) == NULL) {
-        fputs("abort: unable to allocate enough memory\n", stderr);
-        cleanup();
-        return 1;
+        g.done = NULL;
+    else {
+        g.done = calloc(g.size, sizeof(struct tab));
+        assert(g.done != NULL && "out of memory");
     }
 
-    /* find and show maximum inflate table usage */
-    if (root > max)                 /* reduce root to max length */
-        root = max;
-    if ((code_t)syms < ((code_t)1 << (root + 1)))
+    // find and show maximum inflate table usage
+    if (g.root > g.max)             // reduce root to max length
+        g.root = g.max;
+    if ((code_t)syms < ((code_t)1 << (g.root + 1)))
         enough(syms);
     else
-        puts("cannot handle minimum code lengths > root");
+        fputs("cannot handle minimum code lengths > root", stderr);
 
-    /* done */
+    // done
     cleanup();
     return 0;
 }
diff --git a/libs/zlib/examples/fitblk.c b/libs/zlib/examples/fitblk.c
index c61de5c996..723dc00281 100644
--- a/libs/zlib/examples/fitblk.c
+++ b/libs/zlib/examples/fitblk.c
@@ -17,7 +17,7 @@
    data in order to determine how much of that input will compress to
    nearly the requested output block size.  The first pass generates
    enough deflate blocks to produce output to fill the requested
-   output size plus a specfied excess amount (see the EXCESS define
+   output size plus a specified excess amount (see the EXCESS define
    below).  The last deflate block may go quite a bit past that, but
    is discarded.  The second pass decompresses and recompresses just
    the compressed data that fit in the requested plus excess sized
@@ -109,7 +109,7 @@ local int recompress(z_streamp inf, z_streamp def)
         if (ret == Z_MEM_ERROR)
             return ret;
 
-        /* compress what was decompresed until done or no room */
+        /* compress what was decompressed until done or no room */
         def->avail_in = RAWLEN - inf->avail_out;
         def->next_in = raw;
         if (inf->avail_out != 0)
@@ -198,7 +198,7 @@ int main(int argc, char **argv)
     if (ret == Z_MEM_ERROR)
         quit("out of memory");
 
-    /* set up for next reocmpression */
+    /* set up for next recompression */
     ret = inflateReset(&inf);
     assert(ret != Z_STREAM_ERROR);
     ret = deflateReset(&def);
diff --git a/libs/zlib/examples/gun.c b/libs/zlib/examples/gun.c
index be44fa51ff..bea5497e5c 100644
--- a/libs/zlib/examples/gun.c
+++ b/libs/zlib/examples/gun.c
@@ -43,7 +43,7 @@
    gun will also decompress files made by Unix compress, which uses LZW
    compression.  These files are automatically detected by virtue of their
    magic header bytes.  Since the end of Unix compress stream is marked by the
-   end-of-file, they cannot be concantenated.  If a Unix compress stream is
+   end-of-file, they cannot be concatenated.  If a Unix compress stream is
    encountered in an input file, it is the last stream in that file.
 
    Like gunzip and uncompress, the file attributes of the original compressed
diff --git a/libs/zlib/examples/gzappend.c b/libs/zlib/examples/gzappend.c
index 662dec3794..23e93cf689 100644
--- a/libs/zlib/examples/gzappend.c
+++ b/libs/zlib/examples/gzappend.c
@@ -33,7 +33,7 @@
  *                      - Add L to constants in lseek() calls
  *                      - Remove some debugging information in error messages
  *                      - Use new data_type definition for zlib 1.2.1
- *                      - Simplfy and unify file operations
+ *                      - Simplify and unify file operations
  *                      - Finish off gzip file in gztack()
  *                      - Use deflatePrime() instead of adding empty blocks
  *                      - Keep gzip file clean on appended file read errors
@@ -54,7 +54,7 @@
    block boundary to facilitate locating and modifying the last block bit at
    the start of the final deflate block.  Also whether using Z_BLOCK or not,
    another required feature of zlib 1.2.x is that inflate() now provides the
-   number of unusued bits in the last input byte used.  gzappend will not work
+   number of unused bits in the last input byte used.  gzappend will not work
    with versions of zlib earlier than 1.2.1.
 
    gzappend first decompresses the gzip file internally, discarding all but
@@ -137,7 +137,7 @@ local void rotate(unsigned char *list, unsigned len, unsigned rot)
     /* do simple left shift by one */
     if (rot == 1) {
         tmp = *list;
-        memcpy(list, list + 1, len - 1);
+        memmove(list, list + 1, len - 1);
         *last = tmp;
         return;
     }
diff --git a/libs/zlib/examples/gzlog.c b/libs/zlib/examples/gzlog.c
index b8c29274e8..da1b02e733 100644
--- a/libs/zlib/examples/gzlog.c
+++ b/libs/zlib/examples/gzlog.c
@@ -1,8 +1,8 @@
 /*
  * gzlog.c
- * Copyright (C) 2004, 2008, 2012, 2016 Mark Adler, all rights reserved
+ * Copyright (C) 2004, 2008, 2012, 2016, 2019 Mark Adler, all rights reserved
  * For conditions of distribution and use, see copyright notice in gzlog.h
- * version 2.2, 14 Aug 2012
+ * version 2.3, 25 May 2019
  */
 
 /*
@@ -212,8 +212,8 @@
      to the appropriate recovery below.  If there is no foo.add file, provide
      a zero data length to the recovery.  In that case, the append recovery
      restores the foo.gz to the previous compressed + uncompressed data state.
-     For the the compress recovery, a missing foo.add file results in foo.gz
-     being restored to the previous compressed-only data state.
+     For the compress recovery, a missing foo.add file results in foo.gz being
+     restored to the previous compressed-only data state.
    - Append recovery:
      - Pick up append at + step above
    - Compress recovery:
@@ -756,12 +756,14 @@ local int log_recover(struct log *log, int op)
                 return -2;
             }
             if ((fd = open(log->path, O_RDONLY, 0)) < 0) {
+                free(data);
                 log_log(log, op, ".add file read failure");
                 return -1;
             }
             ret = (size_t)read(fd, data, len) != len;
             close(fd);
             if (ret) {
+                free(data);
                 log_log(log, op, ".add file read failure");
                 return -1;
             }
diff --git a/libs/zlib/examples/gzlog.h b/libs/zlib/examples/gzlog.h
index 86f0cecba5..4f05109556 100644
--- a/libs/zlib/examples/gzlog.h
+++ b/libs/zlib/examples/gzlog.h
@@ -40,7 +40,7 @@
    its new size at that time.  After each write operation, the log file is a
    valid gzip file that can decompressed to recover what was written.
 
-   The gzlog operations can be interupted at any point due to an application or
+   The gzlog operations can be interrupted at any point due to an application or
    system crash, and the log file will be recovered the next time the log is
    opened with gzlog_open().
  */
diff --git a/libs/zlib/examples/gznorm.c b/libs/zlib/examples/gznorm.c
new file mode 100644
index 0000000000..68e0a0f29b
--- /dev/null
+++ b/libs/zlib/examples/gznorm.c
@@ -0,0 +1,470 @@
+/* gznorm.c -- normalize a gzip stream
+ * Copyright (C) 2018 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ * Version 1.0  7 Oct 2018  Mark Adler */
+
+// gznorm takes a gzip stream, potentially containing multiple members, and
+// converts it to a gzip stream with a single member. In addition the gzip
+// header is normalized, removing the file name and time stamp, and setting the
+// other header contents (XFL, OS) to fixed values. gznorm does not recompress
+// the data, so it is fast, but no advantage is gained from the history that
+// could be available across member boundaries.
+
+#include <stdio.h>      // fread, fwrite, putc, fflush, ferror, fprintf,
+                        // vsnprintf, stdout, stderr, NULL, FILE
+#include <stdlib.h>     // malloc, free
+#include <string.h>     // strerror
+#include <errno.h>      // errno
+#include <stdarg.h>     // va_list, va_start, va_end
+#include "zlib.h"       // inflateInit2, inflate, inflateReset, inflateEnd,
+                        // z_stream, z_off_t, crc32_combine, Z_NULL, Z_BLOCK,
+                        // Z_OK, Z_STREAM_END, Z_BUF_ERROR, Z_DATA_ERROR,
+                        // Z_MEM_ERROR
+
+#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
+#  include <fcntl.h>
+#  include <io.h>
+#  define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
+#else
+#  define SET_BINARY_MODE(file)
+#endif
+
+#define local static
+
+// printf to an allocated string. Return the string, or NULL if the printf or
+// allocation fails.
+local char *aprintf(char *fmt, ...) {
+    // Get the length of the result of the printf.
+    va_list args;
+    va_start(args, fmt);
+    int len = vsnprintf(NULL, 0, fmt, args);
+    va_end(args);
+    if (len < 0)
+        return NULL;
+
+    // Allocate the required space and printf to it.
+    char *str = malloc(len + 1);
+    if (str == NULL)
+        return NULL;
+    va_start(args, fmt);
+    vsnprintf(str, len + 1, fmt, args);
+    va_end(args);
+    return str;
+}
+
+// Return with an error, putting an allocated error message in *err. Doing an
+// inflateEnd() on an already ended state, or one with state set to Z_NULL, is
+// permitted.
+#define BYE(...) \
+    do { \
+        inflateEnd(&strm); \
+        *err = aprintf(__VA_ARGS__); \
+        return 1; \
+    } while (0)
+
+// Chunk size for buffered reads and for decompression. Twice this many bytes
+// will be allocated on the stack by gzip_normalize(). Must fit in an unsigned.
+#define CHUNK 16384
+
+// Read a gzip stream from in and write an equivalent normalized gzip stream to
+// out. If given no input, an empty gzip stream will be written. If successful,
+// 0 is returned, and *err is set to NULL. On error, 1 is returned, where the
+// details of the error are returned in *err, a pointer to an allocated string.
+//
+// The input may be a stream with multiple gzip members, which is converted to
+// a single gzip member on the output. Each gzip member is decompressed at the
+// level of deflate blocks. This enables clearing the last-block bit, shifting
+// the compressed data to concatenate to the previous member's compressed data,
+// which can end at an arbitrary bit boundary, and identifying stored blocks in
+// order to resynchronize those to byte boundaries. The deflate compressed data
+// is terminated with a 10-bit empty fixed block. If any members on the input
+// end with a 10-bit empty fixed block, then that block is excised from the
+// stream. This avoids appending empty fixed blocks for every normalization,
+// and assures that gzip_normalize applied a second time will not change the
+// input. The pad bits after stored block headers and after the final deflate
+// block are all forced to zeros.
+local int gzip_normalize(FILE *in, FILE *out, char **err) {
+    // initialize the inflate engine to process a gzip member
+    z_stream strm;
+    strm.zalloc = Z_NULL;
+    strm.zfree = Z_NULL;
+    strm.opaque = Z_NULL;
+    strm.avail_in = 0;
+    strm.next_in = Z_NULL;
+    if (inflateInit2(&strm, 15 + 16) != Z_OK)
+        BYE("out of memory");
+
+    // State while processing the input gzip stream.
+    enum {              // BETWEEN -> HEAD -> BLOCK -> TAIL -> BETWEEN -> ...
+        BETWEEN,        // between gzip members (must end in this state)
+        HEAD,           // reading a gzip header
+        BLOCK,          // reading deflate blocks
+        TAIL            // reading a gzip trailer
+    } state = BETWEEN;              // current component being processed
+    unsigned long crc = 0;          // accumulated CRC of uncompressed data
+    unsigned long len = 0;          // accumulated length of uncompressed data
+    unsigned long buf = 0;          // deflate stream bit buffer of num bits
+    int num = 0;                    // number of bits in buf (at bottom)
+
+    // Write a canonical gzip header (no mod time, file name, comment, extra
+    // block, or extra flags, and OS is marked as unknown).
+    fwrite("\x1f\x8b\x08\0\0\0\0\0\0\xff", 1, 10, out);
+
+    // Process the gzip stream from in until reaching the end of the input,
+    // encountering invalid input, or experiencing an i/o error.
+    int more;                       // true if not at the end of the input
+    do {
+        // State inside this loop.
+        unsigned char *put;         // next input buffer location to process
+        int prev;                   // number of bits from previous block in
+                                    // the bit buffer, or -1 if not at the
+                                    // start of a block
+        unsigned long long memb;    // uncompressed length of member
+        size_t tail;                // number of trailer bytes read (0..8)
+        unsigned long part;         // accumulated trailer component
+
+        // Get the next chunk of input from in.
+        unsigned char dat[CHUNK];
+        strm.avail_in = fread(dat, 1, CHUNK, in);
+        if (strm.avail_in == 0)
+            break;
+        more = strm.avail_in == CHUNK;
+        strm.next_in = put = dat;
+
+        // Run that chunk of input through the inflate engine to exhaustion.
+        do {
+            // At this point it is assured that strm.avail_in > 0.
+
+            // Inflate until the end of a gzip component (header, deflate
+            // block, trailer) is reached, or until all of the chunk is
+            // consumed. The resulting decompressed data is discarded, though
+            // the total size of the decompressed data in each member is
+            // tracked, for the calculation of the total CRC.
+            do {
+                // inflate and handle any errors
+                unsigned char scrap[CHUNK];
+                strm.avail_out = CHUNK;
+                strm.next_out = scrap;
+                int ret = inflate(&strm, Z_BLOCK);
+                if (ret == Z_MEM_ERROR)
+                    BYE("out of memory");
+                if (ret == Z_DATA_ERROR)
+                    BYE("input invalid: %s", strm.msg);
+                if (ret != Z_OK && ret != Z_BUF_ERROR && ret != Z_STREAM_END)
+                    BYE("internal error");
+
+                // Update the number of uncompressed bytes generated in this
+                // member. The actual count (not modulo 2^32) is required to
+                // correctly compute the total CRC.
+                unsigned got = CHUNK - strm.avail_out;
+                memb += got;
+                if (memb < got)
+                    BYE("overflow error");
+
+                // Continue to process this chunk until it is consumed, or
+                // until the end of a component (header, deflate block, or
+                // trailer) is reached.
+            } while (strm.avail_out == 0 && (strm.data_type & 0x80) == 0);
+
+            // Since strm.avail_in was > 0 for the inflate call, some input was
+            // just consumed. It is therefore assured that put < strm.next_in.
+
+            // Disposition the consumed component or part of a component.
+            switch (state) {
+                case BETWEEN:
+                    state = HEAD;
+                    // Fall through to HEAD when some or all of the header is
+                    // processed.
+
+                case HEAD:
+                    // Discard the header.
+                    if (strm.data_type & 0x80) {
+                        // End of header reached -- deflate blocks follow.
+                        put = strm.next_in;
+                        prev = num;
+                        memb = 0;
+                        state = BLOCK;
+                    }
+                    break;
+
+                case BLOCK:
+                    // Copy the deflate stream to the output, but with the
+                    // last-block-bit cleared. Re-synchronize stored block
+                    // headers to the output byte boundaries. The bytes at
+                    // put..strm.next_in-1 is the compressed data that has been
+                    // processed and is ready to be copied to the output.
+
+                    // At this point, it is assured that new compressed data is
+                    // available, i.e., put < strm.next_in. If prev is -1, then
+                    // that compressed data starts in the middle of a deflate
+                    // block. If prev is not -1, then the bits in the bit
+                    // buffer, possibly combined with the bits in *put, contain
+                    // the three-bit header of the new deflate block. In that
+                    // case, prev is the number of bits from the previous block
+                    // that remain in the bit buffer. Since num is the number
+                    // of bits in the bit buffer, we have that num - prev is
+                    // the number of bits from the new block currently in the
+                    // bit buffer.
+
+                    // If strm.data_type & 0xc0 is 0x80, then the last byte of
+                    // the available compressed data includes the last bits of
+                    // the end of a deflate block. In that case, that last byte
+                    // also has strm.data_type & 0x1f bits of the next deflate
+                    // block, in the range 0..7. If strm.data_type & 0xc0 is
+                    // 0xc0, then the last byte of the compressed data is the
+                    // end of the deflate stream, followed by strm.data_type &
+                    // 0x1f pad bits, also in the range 0..7.
+
+                    // Set bits to the number of bits not yet consumed from the
+                    // last byte. If we are at the end of the block, bits is
+                    // either the number of bits in the last byte belonging to
+                    // the next block, or the number of pad bits after the
+                    // final block. In either of those cases, bits is in the
+                    // range 0..7.
+                    ;                   // (required due to C syntax oddity)
+                    int bits = strm.data_type & 0x1f;
+
+                    if (prev != -1) {
+                        // We are at the start of a new block. Clear the last
+                        // block bit, and check for special cases. If it is a
+                        // stored block, then emit the header and pad to the
+                        // next byte boundary. If it is a final, empty fixed
+                        // block, then excise it.
+
+                        // Some or all of the three header bits for this block
+                        // may already be in the bit buffer. Load any remaining
+                        // header bits into the bit buffer.
+                        if (num - prev < 3) {
+                            buf += (unsigned long)*put++ << num;
+                            num += 8;
+                        }
+
+                        // Set last to have a 1 in the position of the last
+                        // block bit in the bit buffer.
+                        unsigned long last = (unsigned long)1 << prev;
+
+                        if (((buf >> prev) & 7) == 3) {
+                            // This is a final fixed block. Load at least ten
+                            // bits from this block, including the header, into
+                            // the bit buffer. We already have at least three,
+                            // so at most one more byte needs to be loaded.
+                            if (num - prev < 10) {
+                                if (put == strm.next_in)
+                                    // Need to go get and process more input.
+                                    // We'll end up back here to finish this.
+                                    break;
+                                buf += (unsigned long)*put++ << num;
+                                num += 8;
+                            }
+                            if (((buf >> prev) & 0x3ff) == 3) {
+                                // That final fixed block is empty. Delete it
+                                // to avoid adding an empty block every time a
+                                // gzip stream is normalized.
+                                num = prev;
+                                buf &= last - 1;    // zero the pad bits
+                            }
+                        }
+                        else if (((buf >> prev) & 6) == 0) {
+                            // This is a stored block. Flush to the next
+                            // byte boundary after the three-bit header.
+                            num = (prev + 10) & ~7;
+                            buf &= last - 1;        // zero the pad bits
+                        }
+
+                        // Clear the last block bit.
+                        buf &= ~last;
+
+                        // Write out complete bytes in the bit buffer.
+                        while (num >= 8) {
+                            putc(buf, out);
+                            buf >>= 8;
+                            num -= 8;
+                        }
+
+                        // If no more bytes left to process, then we have
+                        // consumed the byte that had bits from the next block.
+                        if (put == strm.next_in)
+                            bits = 0;
+                    }
+
+                    // We are done handling the deflate block header. Now copy
+                    // all or almost all of the remaining compressed data that
+                    // has been processed so far. Don't copy one byte at the
+                    // end if it contains bits from the next deflate block or
+                    // pad bits at the end of a deflate block.
+
+                    // mix is 1 if we are at the end of a deflate block, and if
+                    // some of the bits in the last byte follow this block. mix
+                    // is 0 if we are in the middle of a deflate block, if the
+                    // deflate block ended on a byte boundary, or if all of the
+                    // compressed data processed so far has been consumed.
+                    int mix = (strm.data_type & 0x80) && bits;
+
+                    // Copy all of the processed compressed data to the output,
+                    // except for the last byte if it contains bits from the
+                    // next deflate block or pad bits at the end of the deflate
+                    // stream. Copy the data after shifting in num bits from
+                    // buf in front of it, leaving num bits from the end of the
+                    // compressed data in buf when done.
+                    unsigned char *end = strm.next_in - mix;
+                    if (put < end) {
+                        if (num)
+                            // Insert num bits from buf before the data being
+                            // copied.
+                            do {
+                                buf += (unsigned)(*put++) << num;
+                                putc(buf, out);
+                                buf >>= 8;
+                            } while (put < end);
+                        else {
+                            // No shifting needed -- write directly.
+                            fwrite(put, 1, end - put, out);
+                            put = end;
+                        }
+                    }
+
+                    // Process the last processed byte if it wasn't written.
+                    if (mix) {
+                        // Load the last byte into the bit buffer.
+                        buf += (unsigned)(*put++) << num;
+                        num += 8;
+
+                        if (strm.data_type & 0x40) {
+                            // We are at the end of the deflate stream and
+                            // there are bits pad bits. Discard the pad bits
+                            // and write a byte to the output, if available.
+                            // Leave the num bits left over in buf to prepend
+                            // to the next deflate stream.
+                            num -= bits;
+                            if (num >= 8) {
+                                putc(buf, out);
+                                num -= 8;
+                                buf >>= 8;
+                            }
+
+                            // Force the pad bits in the bit buffer to zeros.
+                            buf &= ((unsigned long)1 << num) - 1;
+
+                            // Don't need to set prev here since going to TAIL.
+                        }
+                        else
+                            // At the end of an internal deflate block. Leave
+                            // the last byte in the bit buffer to examine on
+                            // the next entry to BLOCK, when more bits from the
+                            // next block will be available.
+                            prev = num - bits;      // number of bits in buffer
+                                                    // from current block
+                    }
+
+                    // Don't have a byte left over, so we are in the middle of
+                    // a deflate block, or the deflate block ended on a byte
+                    // boundary. Set prev appropriately for the next entry into
+                    // BLOCK.
+                    else if (strm.data_type & 0x80)
+                        // The block ended on a byte boundary, so no header
+                        // bits are in the bit buffer.
+                        prev = num;
+                    else
+                        // In the middle of a deflate block, so no header here.
+                        prev = -1;
+
+                    // Check for the end of the deflate stream.
+                    if ((strm.data_type & 0xc0) == 0xc0) {
+                        // That ends the deflate stream on the input side, the
+                        // pad bits were discarded, and any remaining bits from
+                        // the last block in the stream are saved in the bit
+                        // buffer to prepend to the next stream. Process the
+                        // gzip trailer next.
+                        tail = 0;
+                        part = 0;
+                        state = TAIL;
+                    }
+                    break;
+
+                case TAIL:
+                    // Accumulate available trailer bytes to update the total
+                    // CRC and the total uncompressed length.
+                    do {
+                        part = (part >> 8) + ((unsigned long)(*put++) << 24);
+                        tail++;
+                        if (tail == 4) {
+                            // Update the total CRC.
+                            z_off_t len2 = memb;
+                            if (len2 < 0 || (unsigned long long)len2 != memb)
+                                BYE("overflow error");
+                            crc = crc ? crc32_combine(crc, part, len2) : part;
+                            part = 0;
+                        }
+                        else if (tail == 8) {
+                            // Update the total uncompressed length. (It's ok
+                            // if this sum is done modulo 2^32.)
+                            len += part;
+
+                            // At the end of a member. Set up to inflate an
+                            // immediately following gzip member. (If we made
+                            // it this far, then the trailer was valid.)
+                            if (inflateReset(&strm) != Z_OK)
+                                BYE("internal error");
+                            state = BETWEEN;
+                            break;
+                        }
+                    } while (put < strm.next_in);
+                    break;
+            }
+
+            // Process the input buffer until completely consumed.
+        } while (strm.avail_in > 0);
+
+        // Process input until end of file, invalid input, or i/o error.
+    } while (more);
+
+    // Done with the inflate engine.
+    inflateEnd(&strm);
+
+    // Verify the validity of the input.
+    if (state != BETWEEN)
+        BYE("input invalid: incomplete gzip stream");
+
+    // Write the remaining deflate stream bits, followed by a terminating
+    // deflate fixed block.
+    buf += (unsigned long)3 << num;
+    putc(buf, out);
+    putc(buf >> 8, out);
+    if (num > 6)
+        putc(0, out);
+
+    // Write the gzip trailer, which is the CRC and the uncompressed length
+    // modulo 2^32, both in little-endian order.
+    putc(crc, out);
+    putc(crc >> 8, out);
+    putc(crc >> 16, out);
+    putc(crc >> 24, out);
+    putc(len, out);
+    putc(len >> 8, out);
+    putc(len >> 16, out);
+    putc(len >> 24, out);
+    fflush(out);
+
+    // Check for any i/o errors.
+    if (ferror(in) || ferror(out))
+        BYE("i/o error: %s", strerror(errno));
+
+    // All good!
+    *err = NULL;
+    return 0;
+}
+
+// Normalize the gzip stream on stdin, writing the result to stdout.
+int main(void) {
+    // Avoid end-of-line conversions on evil operating systems.
+    SET_BINARY_MODE(stdin);
+    SET_BINARY_MODE(stdout);
+
+    // Normalize from stdin to stdout, returning 1 on error, 0 if ok.
+    char *err;
+    int ret = gzip_normalize(stdin, stdout, &err);
+    if (ret)
+        fprintf(stderr, "gznorm error: %s\n", err);
+    free(err);
+    return ret;
+}
diff --git a/libs/zlib/examples/zlib_how.html b/libs/zlib/examples/zlib_how.html
index 444ff1c9a3..43271b988a 100644
--- a/libs/zlib/examples/zlib_how.html
+++ b/libs/zlib/examples/zlib_how.html
@@ -1,10 +1,10 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
-  "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>zlib Usage Example</title>
-<!--  Copyright (c) 2004, 2005 Mark Adler.  -->
+<!--  Copyright (c) 2004-2023 Mark Adler.  -->
 </head>
 <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#00A000">
 <h2 align="center"> zlib Usage Example </h2>
@@ -17,7 +17,7 @@ from an input file to an output file using <tt>deflate()</tt> and <tt>inflate()<
 annotations are interspersed between lines of the code.  So please read between the lines.
 We hope this helps explain some of the intricacies of <em>zlib</em>.
 <p>
-Without further adieu, here is the program <a href="zpipe.c"><tt>zpipe.c</tt></a>:
+Without further ado, here is the program <a href="zpipe.c"><tt>zpipe.c</tt></a>:
 <pre><b>
 /* zpipe.c: example of proper use of zlib's inflate() and deflate()
    Not copyrighted -- provided to the public domain
@@ -155,13 +155,11 @@ before we fall out of the loop at the bottom.
 </b></pre>
 We start off by reading data from the input file.  The number of bytes read is put directly
 into <tt>avail_in</tt>, and a pointer to those bytes is put into <tt>next_in</tt>.  We also
-check to see if end-of-file on the input has been reached.  If we are at the end of file, then <tt>flush</tt> is set to the
+check to see if end-of-file on the input has been reached using feof().
+If we are at the end of file, then <tt>flush</tt> is set to the
 <em>zlib</em> constant <tt>Z_FINISH</tt>, which is later passed to <tt>deflate()</tt> to
-indicate that this is the last chunk of input data to compress.  We need to use <tt>feof()</tt>
-to check for end-of-file as opposed to seeing if fewer than <tt>CHUNK</tt> bytes have been read.  The
-reason is that if the input file length is an exact multiple of <tt>CHUNK</tt>, we will miss
-the fact that we got to the end-of-file, and not know to tell <tt>deflate()</tt> to finish
-up the compressed stream.  If we are not yet at the end of the input, then the <em>zlib</em>
+indicate that this is the last chunk of input data to compress.
+If we are not yet at the end of the input, then the <em>zlib</em>
 constant <tt>Z_NO_FLUSH</tt> will be passed to <tt>deflate</tt> to indicate that we are still
 in the middle of the uncompressed data.
 <p>
@@ -540,6 +538,12 @@ int main(int argc, char **argv)
 }
 </b></pre>
 <hr>
-<i>Copyright (c) 2004, 2005 by Mark Adler<br>Last modified 11 December 2005</i>
+<i>Last modified 24 January 2023<br>
+Copyright &#169; 2004-2023 Mark Adler</i><br>
+<a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">
+<img alt="Creative Commons License" style="border-width:0"
+src="https://i.creativecommons.org/l/by-nd/4.0/88x31.png"></a>
+<a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">
+Creative Commons Attribution-NoDerivatives 4.0 International License</a>.
 </body>
 </html>
diff --git a/libs/zlib/examples/zran.c b/libs/zlib/examples/zran.c
index 4fec6594a6..d3135955b0 100644
--- a/libs/zlib/examples/zran.c
+++ b/libs/zlib/examples/zran.c
@@ -1,383 +1,503 @@
-/* zran.c -- example of zlib/gzip stream indexing and random access
- * Copyright (C) 2005, 2012 Mark Adler
+/* zran.c -- example of deflate stream indexing and random access
+ * Copyright (C) 2005, 2012, 2018, 2023 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
-   Version 1.1  29 Sep 2012  Mark Adler */
+ * Version 1.4  13 Apr 2023  Mark Adler */
 
 /* Version History:
  1.0  29 May 2005  First version
  1.1  29 Sep 2012  Fix memory reallocation error
+ 1.2  14 Oct 2018  Handle gzip streams with multiple members
+                   Add a header file to facilitate usage in applications
+ 1.3  18 Feb 2023  Permit raw deflate streams as well as zlib and gzip
+                   Permit crossing gzip member boundaries when extracting
+                   Support a size_t size when extracting (was an int)
+                   Do a binary search over the index for an access point
+                   Expose the access point type to enable save and load
+ 1.4  13 Apr 2023  Add a NOPRIME define to not use inflatePrime()
  */
 
-/* Illustrate the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary()
-   for random access of a compressed file.  A file containing a zlib or gzip
-   stream is provided on the command line.  The compressed stream is decoded in
-   its entirety, and an index built with access points about every SPAN bytes
-   in the uncompressed output.  The compressed file is left open, and can then
-   be read randomly, having to decompress on the average SPAN/2 uncompressed
-   bytes before getting to the desired block of data.
-
-   An access point can be created at the start of any deflate block, by saving
-   the starting file offset and bit of that block, and the 32K bytes of
-   uncompressed data that precede that block.  Also the uncompressed offset of
-   that block is saved to provide a referece for locating a desired starting
-   point in the uncompressed stream.  build_index() works by decompressing the
-   input zlib or gzip stream a block at a time, and at the end of each block
-   deciding if enough uncompressed data has gone by to justify the creation of
-   a new access point.  If so, that point is saved in a data structure that
-   grows as needed to accommodate the points.
-
-   To use the index, an offset in the uncompressed data is provided, for which
-   the latest access point at or preceding that offset is located in the index.
-   The input file is positioned to the specified location in the index, and if
-   necessary the first few bits of the compressed data is read from the file.
-   inflate is initialized with those bits and the 32K of uncompressed data, and
-   the decompression then proceeds until the desired offset in the file is
-   reached.  Then the decompression continues to read the desired uncompressed
-   data from the file.
-
-   Another approach would be to generate the index on demand.  In that case,
-   requests for random access reads from the compressed data would try to use
-   the index, but if a read far enough past the end of the index is required,
-   then further index entries would be generated and added.
-
-   There is some fair bit of overhead to starting inflation for the random
-   access, mainly copying the 32K byte dictionary.  So if small pieces of the
-   file are being accessed, it would make sense to implement a cache to hold
-   some lookahead and avoid many calls to extract() for small lengths.
-
-   Another way to build an index would be to use inflateCopy().  That would
-   not be constrained to have access points at block boundaries, but requires
-   more memory per access point, and also cannot be saved to file due to the
-   use of pointers in the state.  The approach here allows for storage of the
-   index in a file.
- */
+// Illustrate the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary()
+// for random access of a compressed file. A file containing a raw deflate
+// stream is provided on the command line. The compressed stream is decoded in
+// its entirety, and an index built with access points about every SPAN bytes
+// in the uncompressed output. The compressed file is left open, and can then
+// be read randomly, having to decompress on the average SPAN/2 uncompressed
+// bytes before getting to the desired block of data.
+//
+// An access point can be created at the start of any deflate block, by saving
+// the starting file offset and bit of that block, and the 32K bytes of
+// uncompressed data that precede that block. Also the uncompressed offset of
+// that block is saved to provide a reference for locating a desired starting
+// point in the uncompressed stream. deflate_index_build() decompresses the
+// input raw deflate stream a block at a time, and at the end of each block
+// decides if enough uncompressed data has gone by to justify the creation of a
+// new access point. If so, that point is saved in a data structure that grows
+// as needed to accommodate the points.
+//
+// To use the index, an offset in the uncompressed data is provided, for which
+// the latest access point at or preceding that offset is located in the index.
+// The input file is positioned to the specified location in the index, and if
+// necessary the first few bits of the compressed data is read from the file.
+// inflate is initialized with those bits and the 32K of uncompressed data, and
+// decompression then proceeds until the desired offset in the file is reached.
+// Then decompression continues to read the requested uncompressed data from
+// the file.
+//
+// There is some fair bit of overhead to starting inflation for the random
+// access, mainly copying the 32K byte dictionary. If small pieces of the file
+// are being accessed, it would make sense to implement a cache to hold some
+// lookahead to avoid many calls to deflate_index_extract() for small lengths.
+//
+// Another way to build an index would be to use inflateCopy(). That would not
+// be constrained to have access points at block boundaries, but would require
+// more memory per access point, and could not be saved to a file due to the
+// use of pointers in the state. The approach here allows for storage of the
+// index in a file.
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <limits.h>
 #include "zlib.h"
+#include "zran.h"
+
+#define WINSIZE 32768U      // sliding window size
+#define CHUNK 16384         // file input buffer size
 
-#define local static
-
-#define SPAN 1048576L       /* desired distance between access points */
-#define WINSIZE 32768U      /* sliding window size */
-#define CHUNK 16384         /* file input buffer size */
-
-/* access point entry */
-struct point {
-    off_t out;          /* corresponding offset in uncompressed data */
-    off_t in;           /* offset in input file of first full byte */
-    int bits;           /* number of bits (1-7) from byte at in - 1, or 0 */
-    unsigned char window[WINSIZE];  /* preceding 32K of uncompressed data */
-};
-
-/* access point list */
-struct access {
-    int have;           /* number of list entries filled in */
-    int size;           /* number of list entries allocated */
-    struct point *list; /* allocated list */
-};
-
-/* Deallocate an index built by build_index() */
-local void free_index(struct access *index)
-{
+// See comments in zran.h.
+void deflate_index_free(struct deflate_index *index) {
     if (index != NULL) {
         free(index->list);
         free(index);
     }
 }
 
-/* Add an entry to the access point list.  If out of memory, deallocate the
-   existing list and return NULL. */
-local struct access *addpoint(struct access *index, int bits,
-    off_t in, off_t out, unsigned left, unsigned char *window)
-{
-    struct point *next;
-
-    /* if list is empty, create it (start with eight points) */
+// Add an access point to the list. If out of memory, deallocate the existing
+// list and return NULL. index->mode is temporarily the allocated number of
+// access points, until it is time for deflate_index_build() to return. Then
+// index->mode is set to the mode of inflation.
+static struct deflate_index *add_point(struct deflate_index *index, int bits,
+                                       off_t in, off_t out, unsigned left,
+                                       unsigned char *window) {
     if (index == NULL) {
-        index = malloc(sizeof(struct access));
-        if (index == NULL) return NULL;
-        index->list = malloc(sizeof(struct point) << 3);
+        // The list is empty. Create it, starting with eight access points.
+        index = malloc(sizeof(struct deflate_index));
+        if (index == NULL)
+            return NULL;
+        index->have = 0;
+        index->mode = 8;
+        index->list = malloc(sizeof(point_t) * index->mode);
         if (index->list == NULL) {
             free(index);
             return NULL;
         }
-        index->size = 8;
-        index->have = 0;
     }
 
-    /* if list is full, make it bigger */
-    else if (index->have == index->size) {
-        index->size <<= 1;
-        next = realloc(index->list, sizeof(struct point) * index->size);
+    else if (index->have == index->mode) {
+        // The list is full. Make it bigger.
+        index->mode <<= 1;
+        point_t *next = realloc(index->list, sizeof(point_t) * index->mode);
         if (next == NULL) {
-            free_index(index);
+            deflate_index_free(index);
             return NULL;
         }
         index->list = next;
     }
 
-    /* fill in entry and increment how many we have */
-    next = index->list + index->have;
-    next->bits = bits;
-    next->in = in;
+    // Fill in the access point and increment how many we have.
+    point_t *next = (point_t *)(index->list) + index->have++;
+    if (index->have < 0) {
+        // Overflowed the int!
+        deflate_index_free(index);
+        return NULL;
+    }
     next->out = out;
+    next->in = in;
+    next->bits = bits;
     if (left)
         memcpy(next->window, window + WINSIZE - left, left);
     if (left < WINSIZE)
         memcpy(next->window + left, window, WINSIZE - left);
-    index->have++;
 
-    /* return list, possibly reallocated */
+    // Return the index, which may have been newly allocated or destroyed.
     return index;
 }
 
-/* Make one entire pass through the compressed stream and build an index, with
-   access points about every span bytes of uncompressed output -- span is
-   chosen to balance the speed of random access against the memory requirements
-   of the list, about 32K bytes per access point.  Note that data after the end
-   of the first zlib or gzip stream in the file is ignored.  build_index()
-   returns the number of access points on success (>= 1), Z_MEM_ERROR for out
-   of memory, Z_DATA_ERROR for an error in the input file, or Z_ERRNO for a
-   file read error.  On success, *built points to the resulting index. */
-local int build_index(FILE *in, off_t span, struct access **built)
-{
-    int ret;
-    off_t totin, totout;        /* our own total counters to avoid 4GB limit */
-    off_t last;                 /* totout value of last access point */
-    struct access *index;       /* access points being generated */
-    z_stream strm;
-    unsigned char input[CHUNK];
-    unsigned char window[WINSIZE];
-
-    /* initialize inflate */
-    strm.zalloc = Z_NULL;
-    strm.zfree = Z_NULL;
-    strm.opaque = Z_NULL;
-    strm.avail_in = 0;
-    strm.next_in = Z_NULL;
-    ret = inflateInit2(&strm, 47);      /* automatic zlib or gzip decoding */
-    if (ret != Z_OK)
-        return ret;
-
-    /* inflate the input, maintain a sliding window, and build an index -- this
-       also validates the integrity of the compressed data using the check
-       information at the end of the gzip or zlib stream */
-    totin = totout = last = 0;
-    index = NULL;               /* will be allocated by first addpoint() */
-    strm.avail_out = 0;
+// Decompression modes. These are the inflateInit2() windowBits parameter.
+#define RAW -15
+#define ZLIB 15
+#define GZIP 31
+
+// See comments in zran.h.
+int deflate_index_build(FILE *in, off_t span, struct deflate_index **built) {
+    // Set up inflation state.
+    z_stream strm = {0};        // inflate engine (gets fired up later)
+    unsigned char buf[CHUNK];   // input buffer
+    unsigned char win[WINSIZE] = {0};   // output sliding window
+    off_t totin = 0;            // total bytes read from input
+    off_t totout = 0;           // total bytes uncompressed
+    int mode = 0;               // mode: RAW, ZLIB, or GZIP (0 => not set yet)
+
+    // Decompress from in, generating access points along the way.
+    int ret;                    // the return value from zlib, or Z_ERRNO
+    off_t last;                 // last access point uncompressed offset
+    struct deflate_index *index = NULL;     // list of access points
     do {
-        /* get some compressed data from input file */
-        strm.avail_in = fread(input, 1, CHUNK, in);
-        if (ferror(in)) {
-            ret = Z_ERRNO;
-            goto build_index_error;
-        }
+        // Assure available input, at least until reaching EOF.
         if (strm.avail_in == 0) {
-            ret = Z_DATA_ERROR;
-            goto build_index_error;
-        }
-        strm.next_in = input;
-
-        /* process all of that, or until end of stream */
-        do {
-            /* reset sliding window if necessary */
-            if (strm.avail_out == 0) {
-                strm.avail_out = WINSIZE;
-                strm.next_out = window;
-            }
-
-            /* inflate until out of input, output, or at end of block --
-               update the total input and output counters */
+            strm.avail_in = fread(buf, 1, sizeof(buf), in);
             totin += strm.avail_in;
-            totout += strm.avail_out;
-            ret = inflate(&strm, Z_BLOCK);      /* return at end of block */
-            totin -= strm.avail_in;
-            totout -= strm.avail_out;
-            if (ret == Z_NEED_DICT)
-                ret = Z_DATA_ERROR;
-            if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR)
-                goto build_index_error;
-            if (ret == Z_STREAM_END)
+            strm.next_in = buf;
+            if (strm.avail_in < sizeof(buf) && ferror(in)) {
+                ret = Z_ERRNO;
                 break;
+            }
 
-            /* if at end of block, consider adding an index entry (note that if
-               data_type indicates an end-of-block, then all of the
-               uncompressed data from that block has been delivered, and none
-               of the compressed data after that block has been consumed,
-               except for up to seven bits) -- the totout == 0 provides an
-               entry point after the zlib or gzip header, and assures that the
-               index always has at least one access point; we avoid creating an
-               access point after the last block by checking bit 6 of data_type
-             */
-            if ((strm.data_type & 128) && !(strm.data_type & 64) &&
-                (totout == 0 || totout - last > span)) {
-                index = addpoint(index, strm.data_type & 7, totin,
-                                 totout, strm.avail_out, window);
-                if (index == NULL) {
-                    ret = Z_MEM_ERROR;
-                    goto build_index_error;
-                }
-                last = totout;
+            if (mode == 0) {
+                // At the start of the input -- determine the type. Assume raw
+                // if it is neither zlib nor gzip. This could in theory result
+                // in a false positive for zlib, but in practice the fill bits
+                // after a stored block are always zeros, so a raw stream won't
+                // start with an 8 in the low nybble.
+                mode = strm.avail_in == 0 ? RAW :       // empty -- will fail
+                       (strm.next_in[0] & 0xf) == 8 ? ZLIB :
+                       strm.next_in[0] == 0x1f ? GZIP :
+                       /* else */ RAW;
+                ret = inflateInit2(&strm, mode);
+                if (ret != Z_OK)
+                    break;
             }
-        } while (strm.avail_in != 0);
-    } while (ret != Z_STREAM_END);
+        }
 
-    /* clean up and return index (release unused entries in list) */
-    (void)inflateEnd(&strm);
-    index->list = realloc(index->list, sizeof(struct point) * index->have);
-    index->size = index->have;
+        // Assure available output. This rotates the output through, for use as
+        // a sliding window on the uncompressed data.
+        if (strm.avail_out == 0) {
+            strm.avail_out = sizeof(win);
+            strm.next_out = win;
+        }
+
+        if (mode == RAW && index == NULL)
+            // We skip the inflate() call at the start of raw deflate data in
+            // order generate an access point there. Set data_type to imitate
+            // the end of a header.
+            strm.data_type = 0x80;
+        else {
+            // Inflate and update the number of uncompressed bytes.
+            unsigned before = strm.avail_out;
+            ret = inflate(&strm, Z_BLOCK);
+            totout += before - strm.avail_out;
+        }
+
+        if ((strm.data_type & 0xc0) == 0x80 &&
+            (index == NULL || totout - last >= span)) {
+            // We are at the end of a header or a non-last deflate block, so we
+            // can add an access point here. Furthermore, we are either at the
+            // very start for the first access point, or there has been span or
+            // more uncompressed bytes since the last access point, so we want
+            // to add an access point here.
+            index = add_point(index, strm.data_type & 7, totin - strm.avail_in,
+                              totout, strm.avail_out, win);
+            if (index == NULL) {
+                ret = Z_MEM_ERROR;
+                break;
+            }
+            last = totout;
+        }
+
+        if (ret == Z_STREAM_END && mode == GZIP &&
+            (strm.avail_in || ungetc(getc(in), in) != EOF))
+            // There is more input after the end of a gzip member. Reset the
+            // inflate state to read another gzip member. On success, this will
+            // set ret to Z_OK to continue decompressing.
+            ret = inflateReset2(&strm, GZIP);
+
+        // Keep going until Z_STREAM_END or error. If the compressed data ends
+        // prematurely without a file read error, Z_BUF_ERROR is returned.
+    } while (ret == Z_OK);
+    inflateEnd(&strm);
+
+    if (ret != Z_STREAM_END) {
+        // An error was encountered. Discard the index and return a negative
+        // error code.
+        deflate_index_free(index);
+        return ret == Z_NEED_DICT ? Z_DATA_ERROR : ret;
+    }
+
+    // Shrink the index to only the occupied access points and return it.
+    index->mode = mode;
+    index->length = totout;
+    point_t *list = realloc(index->list, sizeof(point_t) * index->have);
+    if (list == NULL) {
+        // Seems like a realloc() to make something smaller should always work,
+        // but just in case.
+        deflate_index_free(index);
+        return Z_MEM_ERROR;
+    }
+    index->list = list;
     *built = index;
-    return index->size;
-
-    /* return error */
-  build_index_error:
-    (void)inflateEnd(&strm);
-    if (index != NULL)
-        free_index(index);
-    return ret;
+    return index->have;
 }
 
-/* Use the index to read len bytes from offset into buf, return bytes read or
-   negative for error (Z_DATA_ERROR or Z_MEM_ERROR).  If data is requested past
-   the end of the uncompressed data, then extract() will return a value less
-   than len, indicating how much as actually read into buf.  This function
-   should not return a data error unless the file was modified since the index
-   was generated.  extract() may also return Z_ERRNO if there is an error on
-   reading or seeking the input file. */
-local int extract(FILE *in, struct access *index, off_t offset,
-                  unsigned char *buf, int len)
-{
-    int ret, skip;
-    z_stream strm;
-    struct point *here;
-    unsigned char input[CHUNK];
-    unsigned char discard[WINSIZE];
+#ifdef NOPRIME
+// Support zlib versions before 1.2.3 (July 2005), or incomplete zlib clones
+// that do not have inflatePrime().
+
+#  define INFLATEPRIME inflatePreface
+
+// Append the low bits bits of value to in[] at bit position *have, updating
+// *have. value must be zero above its low bits bits. bits must be positive.
+// This assumes that any bits above the *have bits in the last byte are zeros.
+// That assumption is preserved on return, as any bits above *have + bits in
+// the last byte written will be set to zeros.
+static inline void append_bits(unsigned value, int bits,
+                               unsigned char *in, int *have) {
+    in += *have >> 3;           // where the first bits from value will go
+    int k = *have & 7;          // the number of bits already there
+    *have += bits;
+    if (k)
+        *in |= value << k;      // write value above the low k bits
+    else
+        *in = value;
+    k = 8 - k;                  // the number of bits just appended
+    while (bits > k) {
+        value >>= k;            // drop the bits appended
+        bits -= k;
+        k = 8;                  // now at a byte boundary
+        *++in = value;
+    }
+}
+
+// Insert enough bits in the form of empty deflate blocks in front of the
+// low bits bits of value, in order to bring the sequence to a byte boundary.
+// Then feed that to inflate(). This does what inflatePrime() does, except that
+// a negative value of bits is not supported. bits must be in 0..16. If the
+// arguments are invalid, Z_STREAM_ERROR is returned. Otherwise the return
+// value from inflate() is returned.
+static int inflatePreface(z_stream *strm, int bits, int value) {
+    // Check input.
+    if (strm == Z_NULL || bits < 0 || bits > 16)
+        return Z_STREAM_ERROR;
+    if (bits == 0)
+        return Z_OK;
+    value &= (2 << (bits - 1)) - 1;
+
+    // An empty dynamic block with an odd number of bits (95). The high bit of
+    // the last byte is unused.
+    static const unsigned char dyn[] = {
+        4, 0xe0, 0x81, 8, 0, 0, 0, 0, 0x20, 0xa8, 0xab, 0x1f
+    };
+    const int dynlen = 95;          // number of bits in the block
+
+    // Build an input buffer for inflate that is a multiple of eight bits in
+    // length, and that ends with the low bits bits of value.
+    unsigned char in[(dynlen + 3 * 10 + 16 + 7) / 8];
+    int have = 0;
+    if (bits & 1) {
+        // Insert an empty dynamic block to get to an odd number of bits, so
+        // when bits bits from value are appended, we are at an even number of
+        // bits.
+        memcpy(in, dyn, sizeof(dyn));
+        have = dynlen;
+    }
+    while ((have + bits) & 7)
+        // Insert empty fixed blocks until appending bits bits would put us on
+        // a byte boundary. This will insert at most three fixed blocks.
+        append_bits(2, 10, in, &have);
+
+    // Append the bits bits from value, which takes us to a byte boundary.
+    append_bits(value, bits, in, &have);
+
+    // Deliver the input to inflate(). There is no output space provided, but
+    // inflate() can't get stuck waiting on output not ingesting all of the
+    // provided input. The reason is that there will be at most 16 bits of
+    // input from value after the empty deflate blocks (which themselves
+    // generate no output). At least ten bits are needed to generate the first
+    // output byte from a fixed block. The last two bytes of the buffer have to
+    // be ingested in order to get ten bits, which is the most that value can
+    // occupy.
+    strm->avail_in = have >> 3;
+    strm->next_in = in;
+    strm->avail_out = 0;
+    strm->next_out = in;                // not used, but can't be NULL
+    return inflate(strm, Z_NO_FLUSH);
+}
 
-    /* proceed only if something reasonable to do */
-    if (len < 0)
+#else
+#  define INFLATEPRIME inflatePrime
+#endif
+
+// See comments in zran.h.
+ptrdiff_t deflate_index_extract(FILE *in, struct deflate_index *index,
+                                off_t offset, unsigned char *buf, size_t len) {
+    // Do a quick sanity check on the index.
+    if (index == NULL || index->have < 1 || index->list[0].out != 0)
+        return Z_STREAM_ERROR;
+
+    // If nothing to extract, return zero bytes extracted.
+    if (len == 0 || offset < 0 || offset >= index->length)
         return 0;
 
-    /* find where in stream to start */
-    here = index->list;
-    ret = index->have;
-    while (--ret && here[1].out <= offset)
-        here++;
-
-    /* initialize file and inflate state to start there */
-    strm.zalloc = Z_NULL;
-    strm.zfree = Z_NULL;
-    strm.opaque = Z_NULL;
-    strm.avail_in = 0;
-    strm.next_in = Z_NULL;
-    ret = inflateInit2(&strm, -15);         /* raw inflate */
+    // Find the access point closest to but not after offset.
+    int lo = -1, hi = index->have;
+    point_t *point = index->list;
+    while (hi - lo > 1) {
+        int mid = (lo + hi) >> 1;
+        if (offset < point[mid].out)
+            hi = mid;
+        else
+            lo = mid;
+    }
+    point += lo;
+
+    // Initialize the input file and prime the inflate engine to start there.
+    int ret = fseeko(in, point->in - (point->bits ? 1 : 0), SEEK_SET);
+    if (ret == -1)
+        return Z_ERRNO;
+    int ch = 0;
+    if (point->bits && (ch = getc(in)) == EOF)
+        return ferror(in) ? Z_ERRNO : Z_BUF_ERROR;
+    z_stream strm = {0};
+    ret = inflateInit2(&strm, RAW);
     if (ret != Z_OK)
         return ret;
-    ret = fseeko(in, here->in - (here->bits ? 1 : 0), SEEK_SET);
-    if (ret == -1)
-        goto extract_ret;
-    if (here->bits) {
-        ret = getc(in);
-        if (ret == -1) {
-            ret = ferror(in) ? Z_ERRNO : Z_DATA_ERROR;
-            goto extract_ret;
-        }
-        (void)inflatePrime(&strm, here->bits, ret >> (8 - here->bits));
-    }
-    (void)inflateSetDictionary(&strm, here->window, WINSIZE);
+    if (point->bits)
+        INFLATEPRIME(&strm, point->bits, ch >> (8 - point->bits));
+    inflateSetDictionary(&strm, point->window, WINSIZE);
 
-    /* skip uncompressed bytes until offset reached, then satisfy request */
-    offset -= here->out;
-    strm.avail_in = 0;
-    skip = 1;                               /* while skipping to offset */
+    // Skip uncompressed bytes until offset reached, then satisfy request.
+    unsigned char input[CHUNK];
+    unsigned char discard[WINSIZE];
+    offset -= point->out;       // number of bytes to skip to get to offset
+    size_t left = len;          // number of bytes left to read after offset
     do {
-        /* define where to put uncompressed data, and how much */
-        if (offset == 0 && skip) {          /* at offset now */
-            strm.avail_out = len;
-            strm.next_out = buf;
-            skip = 0;                       /* only do this once */
-        }
-        if (offset > WINSIZE) {             /* skip WINSIZE bytes */
-            strm.avail_out = WINSIZE;
+        if (offset) {
+            // Discard up to offset uncompressed bytes.
+            strm.avail_out = offset < WINSIZE ? (unsigned)offset : WINSIZE;
             strm.next_out = discard;
-            offset -= WINSIZE;
         }
-        else if (offset != 0) {             /* last skip */
-            strm.avail_out = (unsigned)offset;
-            strm.next_out = discard;
-            offset = 0;
+        else {
+            // Uncompress up to left bytes into buf.
+            strm.avail_out = left < UINT_MAX ? (unsigned)left : UINT_MAX;
+            strm.next_out = buf + len - left;
         }
 
-        /* uncompress until avail_out filled, or end of stream */
-        do {
-            if (strm.avail_in == 0) {
-                strm.avail_in = fread(input, 1, CHUNK, in);
-                if (ferror(in)) {
-                    ret = Z_ERRNO;
-                    goto extract_ret;
-                }
-                if (strm.avail_in == 0) {
-                    ret = Z_DATA_ERROR;
-                    goto extract_ret;
-                }
-                strm.next_in = input;
-            }
-            ret = inflate(&strm, Z_NO_FLUSH);       /* normal inflate */
-            if (ret == Z_NEED_DICT)
-                ret = Z_DATA_ERROR;
-            if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR)
-                goto extract_ret;
-            if (ret == Z_STREAM_END)
+        // Uncompress, setting got to the number of bytes uncompressed.
+        if (strm.avail_in == 0) {
+            // Assure available input.
+            strm.avail_in = fread(input, 1, CHUNK, in);
+            if (strm.avail_in < CHUNK && ferror(in)) {
+                ret = Z_ERRNO;
                 break;
-        } while (strm.avail_out != 0);
-
-        /* if reach end of stream, then don't keep trying to get more */
-        if (ret == Z_STREAM_END)
-            break;
+            }
+            strm.next_in = input;
+        }
+        unsigned got = strm.avail_out;
+        ret = inflate(&strm, Z_NO_FLUSH);
+        got -= strm.avail_out;
+
+        // Update the appropriate count.
+        if (offset)
+            offset -= got;
+        else
+            left -= got;
+
+        // If we're at the end of a gzip member and there's more to read,
+        // continue to the next gzip member.
+        if (ret == Z_STREAM_END && index->mode == GZIP) {
+            // Discard the gzip trailer.
+            unsigned drop = 8;              // length of gzip trailer
+            if (strm.avail_in >= drop) {
+                strm.avail_in -= drop;
+                strm.next_in += drop;
+            }
+            else {
+                // Read and discard the remainder of the gzip trailer.
+                drop -= strm.avail_in;
+                strm.avail_in = 0;
+                do {
+                    if (getc(in) == EOF)
+                        // The input does not have a complete trailer.
+                        return ferror(in) ? Z_ERRNO : Z_BUF_ERROR;
+                } while (--drop);
+            }
 
-        /* do until offset reached and requested data read, or stream ends */
-    } while (skip);
+            if (strm.avail_in || ungetc(getc(in), in) != EOF) {
+                // There's more after the gzip trailer. Use inflate to skip the
+                // gzip header and resume the raw inflate there.
+                inflateReset2(&strm, GZIP);
+                do {
+                    if (strm.avail_in == 0) {
+                        strm.avail_in = fread(input, 1, CHUNK, in);
+                        if (strm.avail_in < CHUNK && ferror(in)) {
+                            ret = Z_ERRNO;
+                            break;
+                        }
+                        strm.next_in = input;
+                    }
+                    strm.avail_out = WINSIZE;
+                    strm.next_out = discard;
+                    ret = inflate(&strm, Z_BLOCK);  // stop at end of header
+                } while (ret == Z_OK && (strm.data_type & 0x80) == 0);
+                if (ret != Z_OK)
+                    break;
+                inflateReset2(&strm, RAW);
+            }
+        }
 
-    /* compute number of uncompressed bytes read after offset */
-    ret = skip ? 0 : len - strm.avail_out;
+        // Continue until we have the requested data, the deflate data has
+        // ended, or an error is encountered.
+    } while (ret == Z_OK && left);
+    inflateEnd(&strm);
 
-    /* clean up and return bytes read or error */
-  extract_ret:
-    (void)inflateEnd(&strm);
-    return ret;
+    // Return the number of uncompressed bytes read into buf, or the error.
+    return ret == Z_OK || ret == Z_STREAM_END ? len - left : ret;
 }
 
-/* Demonstrate the use of build_index() and extract() by processing the file
-   provided on the command line, and the extracting 16K from about 2/3rds of
-   the way through the uncompressed output, and writing that to stdout. */
-int main(int argc, char **argv)
-{
-    int len;
-    off_t offset;
-    FILE *in;
-    struct access *index = NULL;
-    unsigned char buf[CHUNK];
-
-    /* open input file */
-    if (argc != 2) {
-        fprintf(stderr, "usage: zran file.gz\n");
+#ifdef TEST
+
+#define SPAN 1048576L       // desired distance between access points
+#define LEN 16384           // number of bytes to extract
+
+// Demonstrate the use of deflate_index_build() and deflate_index_extract() by
+// processing the file provided on the command line, and extracting LEN bytes
+// from 2/3rds of the way through the uncompressed output, writing that to
+// stdout. An offset can be provided as the second argument, in which case the
+// data is extracted from there instead.
+int main(int argc, char **argv) {
+    // Open the input file.
+    if (argc < 2 || argc > 3) {
+        fprintf(stderr, "usage: zran file.raw [offset]\n");
         return 1;
     }
-    in = fopen(argv[1], "rb");
+    FILE *in = fopen(argv[1], "rb");
     if (in == NULL) {
         fprintf(stderr, "zran: could not open %s for reading\n", argv[1]);
         return 1;
     }
 
-    /* build index */
-    len = build_index(in, SPAN, &index);
+    // Get optional offset.
+    off_t offset = -1;
+    if (argc == 3) {
+        char *end;
+        offset = strtoll(argv[2], &end, 10);
+        if (*end || offset < 0) {
+            fprintf(stderr, "zran: %s is not a valid offset\n", argv[2]);
+            return 1;
+        }
+    }
+
+    // Build index.
+    struct deflate_index *index = NULL;
+    int len = deflate_index_build(in, SPAN, &index);
     if (len < 0) {
         fclose(in);
         switch (len) {
         case Z_MEM_ERROR:
             fprintf(stderr, "zran: out of memory\n");
             break;
+        case Z_BUF_ERROR:
+            fprintf(stderr, "zran: %s ended prematurely\n", argv[1]);
+            break;
         case Z_DATA_ERROR:
             fprintf(stderr, "zran: compressed data error in %s\n", argv[1]);
             break;
@@ -391,19 +511,23 @@ int main(int argc, char **argv)
     }
     fprintf(stderr, "zran: built index with %d access points\n", len);
 
-    /* use index by reading some bytes from an arbitrary offset */
-    offset = (index->list[index->have - 1].out << 1) / 3;
-    len = extract(in, index, offset, buf, CHUNK);
-    if (len < 0)
+    // Use index by reading some bytes from an arbitrary offset.
+    unsigned char buf[LEN];
+    if (offset == -1)
+        offset = ((index->length + 1) << 1) / 3;
+    ptrdiff_t got = deflate_index_extract(in, index, offset, buf, LEN);
+    if (got < 0)
         fprintf(stderr, "zran: extraction failed: %s error\n",
-                len == Z_MEM_ERROR ? "out of memory" : "input corrupted");
+                got == Z_MEM_ERROR ? "out of memory" : "input corrupted");
     else {
-        fwrite(buf, 1, len, stdout);
-        fprintf(stderr, "zran: extracted %d bytes at %llu\n", len, offset);
+        fwrite(buf, 1, got, stdout);
+        fprintf(stderr, "zran: extracted %ld bytes at %lld\n", got, offset);
     }
 
-    /* clean up and exit */
-    free_index(index);
+    // Clean up and exit.
+    deflate_index_free(index);
     fclose(in);
     return 0;
 }
+
+#endif
diff --git a/libs/zlib/examples/zran.h b/libs/zlib/examples/zran.h
new file mode 100644
index 0000000000..ebf780d0c1
--- /dev/null
+++ b/libs/zlib/examples/zran.h
@@ -0,0 +1,51 @@
+/* zran.h -- example of deflated stream indexing and random access
+ * Copyright (C) 2005, 2012, 2018, 2023 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ * Version 1.3  18 Feb 2023  Mark Adler */
+
+#include <stdio.h>
+#include "zlib.h"
+
+// Access point.
+typedef struct point {
+    off_t out;          // offset in uncompressed data
+    off_t in;           // offset in compressed file of first full byte
+    int bits;           // 0, or number of bits (1-7) from byte at in-1
+    unsigned char window[32768];    // preceding 32K of uncompressed data
+} point_t;
+
+// Access point list.
+struct deflate_index {
+    int have;           // number of access points in list
+    int mode;           // -15 for raw, 15 for zlib, or 31 for gzip
+    off_t length;       // total length of uncompressed data
+    point_t *list;      // allocated list of access points
+};
+
+// Make one pass through a zlib, gzip, or raw deflate compressed stream and
+// build an index, with access points about every span bytes of uncompressed
+// output. gzip files with multiple members are fully indexed. span should be
+// chosen to balance the speed of random access against the memory requirements
+// of the list, which is about 32K bytes per access point. The return value is
+// the number of access points on success (>= 1), Z_MEM_ERROR for out of
+// memory, Z_BUF_ERROR for a premature end of input, Z_DATA_ERROR for a format
+// or verification error in the input file, or Z_ERRNO for a file read error.
+// On success, *built points to the resulting index.
+int deflate_index_build(FILE *in, off_t span, struct deflate_index **built);
+
+// Use the index to read len bytes from offset into buf. Return the number of
+// bytes read or a negative error code. If data is requested past the end of
+// the uncompressed data, then deflate_index_extract() will return a value less
+// than len, indicating how much was actually read into buf. If given a valid
+// index, this function should not return an error unless the file was modified
+// somehow since the index was generated, given that deflate_index_build() had
+// validated all of the input. If nevertheless there is a failure, Z_BUF_ERROR
+// is returned if the compressed data ends prematurely, Z_DATA_ERROR if the
+// deflate compressed data is not valid, Z_MEM_ERROR if out of memory,
+// Z_STREAM_ERROR if the index is not valid, or Z_ERRNO if there is an error
+// reading or seeking on the input file.
+ptrdiff_t deflate_index_extract(FILE *in, struct deflate_index *index,
+                                off_t offset, unsigned char *buf, size_t len);
+
+// Deallocate an index built by deflate_index_build().
+void deflate_index_free(struct deflate_index *index);
diff --git a/libs/zlib/gzclose.c b/libs/zlib/gzclose.c
index caeb99a317..48d6a86f04 100644
--- a/libs/zlib/gzclose.c
+++ b/libs/zlib/gzclose.c
@@ -8,9 +8,7 @@
 /* gzclose() is in a separate file so that it is linked in only if it is used.
    That way the other gzclose functions can be used instead to avoid linking in
    unneeded compression or decompression routines. */
-int ZEXPORT gzclose(file)
-    gzFile file;
-{
+int ZEXPORT gzclose(gzFile file) {
 #ifndef NO_GZCOMPRESS
     gz_statep state;
 
diff --git a/libs/zlib/gzguts.h b/libs/zlib/gzguts.h
index 990a4d2514..eba72085bb 100644
--- a/libs/zlib/gzguts.h
+++ b/libs/zlib/gzguts.h
@@ -1,5 +1,5 @@
 /* gzguts.h -- zlib internal header definitions for gz* operations
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2024 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -7,9 +7,8 @@
 #  ifndef _LARGEFILE_SOURCE
 #    define _LARGEFILE_SOURCE 1
 #  endif
-#  ifdef _FILE_OFFSET_BITS
-#    undef _FILE_OFFSET_BITS
-#  endif
+#  undef _FILE_OFFSET_BITS
+#  undef _TIME_BITS
 #endif
 
 #ifdef HAVE_HIDDEN
@@ -39,7 +38,7 @@
 #  include <io.h>
 #endif
 
-#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(_WIN32)
 #  define WIDECHAR
 #endif
 
@@ -119,8 +118,8 @@
 
 /* gz* functions always use library allocation functions */
 #ifndef STDC
-  extern voidp  malloc OF((uInt size));
-  extern void   free   OF((voidpf ptr));
+  extern voidp  malloc(uInt size);
+  extern void   free(voidpf ptr);
 #endif
 
 /* get errno and strerror definition */
@@ -138,10 +137,10 @@
 
 /* provide prototypes for these when building zlib without LFS */
 #if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
-    ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-    ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
-    ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
-    ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
+    ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
+    ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int);
+    ZEXTERN z_off64_t ZEXPORT gztell64(gzFile);
+    ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile);
 #endif
 
 /* default memLevel */
@@ -190,6 +189,7 @@ typedef struct {
         /* just for writing */
     int level;              /* compression level */
     int strategy;           /* compression strategy */
+    int reset;              /* true if a reset is pending after a Z_FINISH */
         /* seek request */
     z_off64_t skip;         /* amount to skip (already rewound if backwards) */
     int seek;               /* true if seek request pending */
@@ -202,17 +202,13 @@ typedef struct {
 typedef gz_state FAR *gz_statep;
 
 /* shared functions */
-void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *));
+void ZLIB_INTERNAL gz_error(gz_statep, int, const char *);
 #if defined UNDER_CE
-char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error));
+char ZLIB_INTERNAL *gz_strwinerror(DWORD error);
 #endif
 
 /* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
    value -- needed when comparing unsigned to z_off64_t, which is signed
    (possible z_off64_t types off_t, off64_t, and long are all signed) */
-#ifdef INT_MAX
-#  define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
-#else
-unsigned ZLIB_INTERNAL gz_intmax OF((void));
-#  define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
-#endif
+unsigned ZLIB_INTERNAL gz_intmax(void);
+#define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
diff --git a/libs/zlib/gzlib.c b/libs/zlib/gzlib.c
index 4105e6aff9..983153cc8e 100644
--- a/libs/zlib/gzlib.c
+++ b/libs/zlib/gzlib.c
@@ -1,11 +1,11 @@
 /* gzlib.c -- zlib functions common to reading and writing gzip files
- * Copyright (C) 2004-2017 Mark Adler
+ * Copyright (C) 2004-2024 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
 #include "gzguts.h"
 
-#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__)
+#if defined(_WIN32) && !defined(__BORLANDC__)
 #  define LSEEK _lseeki64
 #else
 #if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
@@ -15,10 +15,6 @@
 #endif
 #endif
 
-/* Local functions */
-local void gz_reset OF((gz_statep));
-local gzFile gz_open OF((const void *, int, const char *));
-
 #if defined UNDER_CE
 
 /* Map the Windows error number in ERROR to a locale-dependent error message
@@ -30,9 +26,7 @@ local gzFile gz_open OF((const void *, int, const char *));
 
    The gz_strwinerror function does not change the current setting of
    GetLastError. */
-char ZLIB_INTERNAL *gz_strwinerror (error)
-     DWORD error;
-{
+char ZLIB_INTERNAL *gz_strwinerror(DWORD error) {
     static char buf[1024];
 
     wchar_t *msgbuf;
@@ -72,15 +66,15 @@ char ZLIB_INTERNAL *gz_strwinerror (error)
 #endif /* UNDER_CE */
 
 /* Reset gzip file state */
-local void gz_reset(state)
-    gz_statep state;
-{
+local void gz_reset(gz_statep state) {
     state->x.have = 0;              /* no output data available */
     if (state->mode == GZ_READ) {   /* for reading ... */
         state->eof = 0;             /* not at end of file */
         state->past = 0;            /* have not read past end yet */
         state->how = LOOK;          /* look for gzip header */
     }
+    else                            /* for writing ... */
+        state->reset = 0;           /* no deflateReset pending */
     state->seek = 0;                /* no seek request pending */
     gz_error(state, Z_OK, NULL);    /* clear error */
     state->x.pos = 0;               /* no uncompressed data yet */
@@ -88,11 +82,7 @@ local void gz_reset(state)
 }
 
 /* Open a gzip file either by name or file descriptor. */
-local gzFile gz_open(path, fd, mode)
-    const void *path;
-    int fd;
-    const char *mode;
-{
+local gzFile gz_open(const void *path, int fd, const char *mode) {
     gz_statep state;
     z_size_t len;
     int oflag;
@@ -267,26 +257,17 @@ local gzFile gz_open(path, fd, mode)
 }
 
 /* -- see zlib.h -- */
-gzFile ZEXPORT gzopen(path, mode)
-    const char *path;
-    const char *mode;
-{
+gzFile ZEXPORT gzopen(const char *path, const char *mode) {
     return gz_open(path, -1, mode);
 }
 
 /* -- see zlib.h -- */
-gzFile ZEXPORT gzopen64(path, mode)
-    const char *path;
-    const char *mode;
-{
+gzFile ZEXPORT gzopen64(const char *path, const char *mode) {
     return gz_open(path, -1, mode);
 }
 
 /* -- see zlib.h -- */
-gzFile ZEXPORT gzdopen(fd, mode)
-    int fd;
-    const char *mode;
-{
+gzFile ZEXPORT gzdopen(int fd, const char *mode) {
     char *path;         /* identifier for error messages */
     gzFile gz;
 
@@ -304,19 +285,13 @@ gzFile ZEXPORT gzdopen(fd, mode)
 
 /* -- see zlib.h -- */
 #ifdef WIDECHAR
-gzFile ZEXPORT gzopen_w(path, mode)
-    const wchar_t *path;
-    const char *mode;
-{
+gzFile ZEXPORT gzopen_w(const wchar_t *path, const char *mode) {
     return gz_open(path, -2, mode);
 }
 #endif
 
 /* -- see zlib.h -- */
-int ZEXPORT gzbuffer(file, size)
-    gzFile file;
-    unsigned size;
-{
+int ZEXPORT gzbuffer(gzFile file, unsigned size) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -333,16 +308,14 @@ int ZEXPORT gzbuffer(file, size)
     /* check and set requested size */
     if ((size << 1) < size)
         return -1;              /* need to be able to double it */
-    if (size < 2)
-        size = 2;               /* need two bytes to check magic header */
+    if (size < 8)
+        size = 8;               /* needed to behave well with flushing */
     state->want = size;
     return 0;
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzrewind(file)
-    gzFile file;
-{
+int ZEXPORT gzrewind(gzFile file) {
     gz_statep state;
 
     /* get internal structure */
@@ -363,11 +336,7 @@ int ZEXPORT gzrewind(file)
 }
 
 /* -- see zlib.h -- */
-z_off64_t ZEXPORT gzseek64(file, offset, whence)
-    gzFile file;
-    z_off64_t offset;
-    int whence;
-{
+z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) {
     unsigned n;
     z_off64_t ret;
     gz_statep state;
@@ -397,7 +366,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
     /* if within raw area while reading, just go there */
     if (state->mode == GZ_READ && state->how == COPY &&
             state->x.pos + offset >= 0) {
-        ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR);
+        ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
         if (ret == -1)
             return -1;
         state->x.have = 0;
@@ -440,11 +409,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
 }
 
 /* -- see zlib.h -- */
-z_off_t ZEXPORT gzseek(file, offset, whence)
-    gzFile file;
-    z_off_t offset;
-    int whence;
-{
+z_off_t ZEXPORT gzseek(gzFile file, z_off_t offset, int whence) {
     z_off64_t ret;
 
     ret = gzseek64(file, (z_off64_t)offset, whence);
@@ -452,9 +417,7 @@ z_off_t ZEXPORT gzseek(file, offset, whence)
 }
 
 /* -- see zlib.h -- */
-z_off64_t ZEXPORT gztell64(file)
-    gzFile file;
-{
+z_off64_t ZEXPORT gztell64(gzFile file) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -469,9 +432,7 @@ z_off64_t ZEXPORT gztell64(file)
 }
 
 /* -- see zlib.h -- */
-z_off_t ZEXPORT gztell(file)
-    gzFile file;
-{
+z_off_t ZEXPORT gztell(gzFile file) {
     z_off64_t ret;
 
     ret = gztell64(file);
@@ -479,9 +440,7 @@ z_off_t ZEXPORT gztell(file)
 }
 
 /* -- see zlib.h -- */
-z_off64_t ZEXPORT gzoffset64(file)
-    gzFile file;
-{
+z_off64_t ZEXPORT gzoffset64(gzFile file) {
     z_off64_t offset;
     gz_statep state;
 
@@ -502,9 +461,7 @@ z_off64_t ZEXPORT gzoffset64(file)
 }
 
 /* -- see zlib.h -- */
-z_off_t ZEXPORT gzoffset(file)
-    gzFile file;
-{
+z_off_t ZEXPORT gzoffset(gzFile file) {
     z_off64_t ret;
 
     ret = gzoffset64(file);
@@ -512,9 +469,7 @@ z_off_t ZEXPORT gzoffset(file)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzeof(file)
-    gzFile file;
-{
+int ZEXPORT gzeof(gzFile file) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -529,10 +484,7 @@ int ZEXPORT gzeof(file)
 }
 
 /* -- see zlib.h -- */
-const char * ZEXPORT gzerror(file, errnum)
-    gzFile file;
-    int *errnum;
-{
+const char * ZEXPORT gzerror(gzFile file, int *errnum) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -550,9 +502,7 @@ const char * ZEXPORT gzerror(file, errnum)
 }
 
 /* -- see zlib.h -- */
-void ZEXPORT gzclearerr(file)
-    gzFile file;
-{
+void ZEXPORT gzclearerr(gzFile file) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -576,11 +526,7 @@ void ZEXPORT gzclearerr(file)
    memory).  Simply save the error message as a static string.  If there is an
    allocation failure constructing the error message, then convert the error to
    out of memory. */
-void ZLIB_INTERNAL gz_error(state, err, msg)
-    gz_statep state;
-    int err;
-    const char *msg;
-{
+void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) {
     /* free previously allocated message and clear */
     if (state->msg != NULL) {
         if (state->err != Z_MEM_ERROR)
@@ -617,21 +563,20 @@ void ZLIB_INTERNAL gz_error(state, err, msg)
 #endif
 }
 
-#ifndef INT_MAX
 /* portably return maximum value for an int (when limits.h presumed not
    available) -- we need to do this to cover cases where 2's complement not
    used, since C standard permits 1's complement and sign-bit representations,
    otherwise we could just use ((unsigned)-1) >> 1 */
-unsigned ZLIB_INTERNAL gz_intmax()
-{
-    unsigned p, q;
-
-    p = 1;
+unsigned ZLIB_INTERNAL gz_intmax(void) {
+#ifdef INT_MAX
+    return INT_MAX;
+#else
+    unsigned p = 1, q;
     do {
         q = p;
         p <<= 1;
         p++;
     } while (p > q);
     return q >> 1;
-}
 #endif
+}
diff --git a/libs/zlib/gzread.c b/libs/zlib/gzread.c
index 956b91ea7d..4168cbc887 100644
--- a/libs/zlib/gzread.c
+++ b/libs/zlib/gzread.c
@@ -1,29 +1,16 @@
 /* gzread.c -- zlib functions for reading gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2017 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
 #include "gzguts.h"
 
-/* Local functions */
-local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *));
-local int gz_avail OF((gz_statep));
-local int gz_look OF((gz_statep));
-local int gz_decomp OF((gz_statep));
-local int gz_fetch OF((gz_statep));
-local int gz_skip OF((gz_statep, z_off64_t));
-local z_size_t gz_read OF((gz_statep, voidp, z_size_t));
-
 /* Use read() to load a buffer -- return -1 on error, otherwise 0.  Read from
    state->fd, and update state->eof, state->err, and state->msg as appropriate.
    This function needs to loop on read(), since read() is not guaranteed to
    read the number of bytes requested, depending on the type of descriptor. */
-local int gz_load(state, buf, len, have)
-    gz_statep state;
-    unsigned char *buf;
-    unsigned len;
-    unsigned *have;
-{
+local int gz_load(gz_statep state, unsigned char *buf, unsigned len,
+                  unsigned *have) {
     int ret;
     unsigned get, max = ((unsigned)-1 >> 2) + 1;
 
@@ -53,9 +40,7 @@ local int gz_load(state, buf, len, have)
    If strm->avail_in != 0, then the current data is moved to the beginning of
    the input buffer, and then the remainder of the buffer is loaded with the
    available data from the input file. */
-local int gz_avail(state)
-    gz_statep state;
-{
+local int gz_avail(gz_statep state) {
     unsigned got;
     z_streamp strm = &(state->strm);
 
@@ -88,9 +73,7 @@ local int gz_avail(state)
    case, all further file reads will be directly to either the output buffer or
    a user buffer.  If decompressing, the inflate state will be initialized.
    gz_look() will return 0 on success or -1 on failure. */
-local int gz_look(state)
-    gz_statep state;
-{
+local int gz_look(gz_statep state) {
     z_streamp strm = &(state->strm);
 
     /* allocate read buffers and inflate memory */
@@ -157,11 +140,9 @@ local int gz_look(state)
        the output buffer is larger than the input buffer, which also assures
        space for gzungetc() */
     state->x.next = state->out;
-    if (strm->avail_in) {
-        memcpy(state->x.next, strm->next_in, strm->avail_in);
-        state->x.have = strm->avail_in;
-        strm->avail_in = 0;
-    }
+    memcpy(state->x.next, strm->next_in, strm->avail_in);
+    state->x.have = strm->avail_in;
+    strm->avail_in = 0;
     state->how = COPY;
     state->direct = 1;
     return 0;
@@ -172,9 +153,7 @@ local int gz_look(state)
    data.  If the gzip stream completes, state->how is reset to LOOK to look for
    the next gzip stream or raw data, once state->x.have is depleted.  Returns 0
    on success, -1 on failure. */
-local int gz_decomp(state)
-    gz_statep state;
-{
+local int gz_decomp(gz_statep state) {
     int ret = Z_OK;
     unsigned had;
     z_streamp strm = &(state->strm);
@@ -226,9 +205,7 @@ local int gz_decomp(state)
    looked for to determine whether to copy or decompress.  Returns -1 on error,
    otherwise 0.  gz_fetch() will leave state->how as COPY or GZIP unless the
    end of the input file has been reached and all data has been processed.  */
-local int gz_fetch(state)
-    gz_statep state;
-{
+local int gz_fetch(gz_statep state) {
     z_streamp strm = &(state->strm);
 
     do {
@@ -256,10 +233,7 @@ local int gz_fetch(state)
 }
 
 /* Skip len uncompressed bytes of output.  Return -1 on error, 0 on success. */
-local int gz_skip(state, len)
-    gz_statep state;
-    z_off64_t len;
-{
+local int gz_skip(gz_statep state, z_off64_t len) {
     unsigned n;
 
     /* skip over len bytes or reach end-of-file, whichever comes first */
@@ -291,11 +265,7 @@ local int gz_skip(state, len)
    input.  Return the number of bytes read.  If zero is returned, either the
    end of file was reached, or there was an error.  state->err must be
    consulted in that case to determine which. */
-local z_size_t gz_read(state, buf, len)
-    gz_statep state;
-    voidp buf;
-    z_size_t len;
-{
+local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) {
     z_size_t got;
     unsigned n;
 
@@ -314,9 +284,9 @@ local z_size_t gz_read(state, buf, len)
     got = 0;
     do {
         /* set n to the maximum amount of len that fits in an unsigned int */
-        n = -1;
+        n = (unsigned)-1;
         if (n > len)
-            n = len;
+            n = (unsigned)len;
 
         /* first just try copying data from the output buffer */
         if (state->x.have) {
@@ -372,11 +342,7 @@ local z_size_t gz_read(state, buf, len)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzread(file, buf, len)
-    gzFile file;
-    voidp buf;
-    unsigned len;
-{
+int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) {
     gz_statep state;
 
     /* get internal structure */
@@ -397,7 +363,7 @@ int ZEXPORT gzread(file, buf, len)
     }
 
     /* read len or fewer bytes to buf */
-    len = gz_read(state, buf, len);
+    len = (unsigned)gz_read(state, buf, len);
 
     /* check for an error */
     if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR)
@@ -408,12 +374,7 @@ int ZEXPORT gzread(file, buf, len)
 }
 
 /* -- see zlib.h -- */
-z_size_t ZEXPORT gzfread(buf, size, nitems, file)
-    voidp buf;
-    z_size_t size;
-    z_size_t nitems;
-    gzFile file;
-{
+z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) {
     z_size_t len;
     gz_statep state;
 
@@ -444,10 +405,7 @@ z_size_t ZEXPORT gzfread(buf, size, nitems, file)
 #else
 #  undef gzgetc
 #endif
-int ZEXPORT gzgetc(file)
-    gzFile file;
-{
-    int ret;
+int ZEXPORT gzgetc(gzFile file) {
     unsigned char buf[1];
     gz_statep state;
 
@@ -469,21 +427,15 @@ int ZEXPORT gzgetc(file)
     }
 
     /* nothing there -- try gz_read() */
-    ret = gz_read(state, buf, 1);
-    return ret < 1 ? -1 : buf[0];
+    return gz_read(state, buf, 1) < 1 ? -1 : buf[0];
 }
 
-int ZEXPORT gzgetc_(file)
-gzFile file;
-{
+int ZEXPORT gzgetc_(gzFile file) {
     return gzgetc(file);
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzungetc(c, file)
-    int c;
-    gzFile file;
-{
+int ZEXPORT gzungetc(int c, gzFile file) {
     gz_statep state;
 
     /* get internal structure */
@@ -491,6 +443,10 @@ int ZEXPORT gzungetc(c, file)
         return -1;
     state = (gz_statep)file;
 
+    /* in case this was just opened, set up the input buffer */
+    if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0)
+        (void)gz_look(state);
+
     /* check that we're reading and that there's no (serious) error */
     if (state->mode != GZ_READ ||
         (state->err != Z_OK && state->err != Z_BUF_ERROR))
@@ -540,11 +496,7 @@ int ZEXPORT gzungetc(c, file)
 }
 
 /* -- see zlib.h -- */
-char * ZEXPORT gzgets(file, buf, len)
-    gzFile file;
-    char *buf;
-    int len;
-{
+char * ZEXPORT gzgets(gzFile file, char *buf, int len) {
     unsigned left, n;
     char *str;
     unsigned char *eol;
@@ -604,9 +556,7 @@ char * ZEXPORT gzgets(file, buf, len)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzdirect(file)
-    gzFile file;
-{
+int ZEXPORT gzdirect(gzFile file) {
     gz_statep state;
 
     /* get internal structure */
@@ -624,9 +574,7 @@ int ZEXPORT gzdirect(file)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzclose_r(file)
-    gzFile file;
-{
+int ZEXPORT gzclose_r(gzFile file) {
     int ret, err;
     gz_statep state;
 
diff --git a/libs/zlib/gzwrite.c b/libs/zlib/gzwrite.c
index c7b5651d70..435b4621b5 100644
--- a/libs/zlib/gzwrite.c
+++ b/libs/zlib/gzwrite.c
@@ -1,22 +1,14 @@
 /* gzwrite.c -- zlib functions for writing gzip files
- * Copyright (C) 2004-2017 Mark Adler
+ * Copyright (C) 2004-2019 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
 #include "gzguts.h"
 
-/* Local functions */
-local int gz_init OF((gz_statep));
-local int gz_comp OF((gz_statep, int));
-local int gz_zero OF((gz_statep, z_off64_t));
-local z_size_t gz_write OF((gz_statep, voidpc, z_size_t));
-
 /* Initialize state for writing a gzip file.  Mark initialization by setting
    state->size to non-zero.  Return -1 on a memory allocation failure, or 0 on
    success. */
-local int gz_init(state)
-    gz_statep state;
-{
+local int gz_init(gz_statep state) {
     int ret;
     z_streamp strm = &(state->strm);
 
@@ -70,10 +62,7 @@ local int gz_init(state)
    deflate() flush value.  If flush is Z_FINISH, then the deflate() state is
    reset to start a new gzip stream.  If gz->direct is true, then simply write
    to the output file without compressing, and ignore flush. */
-local int gz_comp(state, flush)
-    gz_statep state;
-    int flush;
-{
+local int gz_comp(gz_statep state, int flush) {
     int ret, writ;
     unsigned have, put, max = ((unsigned)-1 >> 2) + 1;
     z_streamp strm = &(state->strm);
@@ -97,6 +86,15 @@ local int gz_comp(state, flush)
         return 0;
     }
 
+    /* check for a pending reset */
+    if (state->reset) {
+        /* don't start a new gzip member unless there is data to write */
+        if (strm->avail_in == 0)
+            return 0;
+        deflateReset(strm);
+        state->reset = 0;
+    }
+
     /* run deflate() on provided input until it produces no more output */
     ret = Z_OK;
     do {
@@ -134,7 +132,7 @@ local int gz_comp(state, flush)
 
     /* if that completed a deflate stream, allow another to start */
     if (flush == Z_FINISH)
-        deflateReset(strm);
+        state->reset = 1;
 
     /* all done, no errors */
     return 0;
@@ -142,10 +140,7 @@ local int gz_comp(state, flush)
 
 /* Compress len zeros to output.  Return -1 on a write error or memory
    allocation failure by gz_comp(), or 0 on success. */
-local int gz_zero(state, len)
-    gz_statep state;
-    z_off64_t len;
-{
+local int gz_zero(gz_statep state, z_off64_t len) {
     int first;
     unsigned n;
     z_streamp strm = &(state->strm);
@@ -175,11 +170,7 @@ local int gz_zero(state, len)
 
 /* Write len bytes from buf to file.  Return the number of bytes written.  If
    the returned value is less than len, then there was an error. */
-local z_size_t gz_write(state, buf, len)
-    gz_statep state;
-    voidpc buf;
-    z_size_t len;
-{
+local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) {
     z_size_t put = len;
 
     /* if len is zero, avoid unnecessary operations */
@@ -209,7 +200,7 @@ local z_size_t gz_write(state, buf, len)
                               state->in);
             copy = state->size - have;
             if (copy > len)
-                copy = len;
+                copy = (unsigned)len;
             memcpy(state->in + have, buf, copy);
             state->strm.avail_in += copy;
             state->x.pos += copy;
@@ -229,7 +220,7 @@ local z_size_t gz_write(state, buf, len)
         do {
             unsigned n = (unsigned)-1;
             if (n > len)
-                n = len;
+                n = (unsigned)len;
             state->strm.avail_in = n;
             state->x.pos += n;
             if (gz_comp(state, Z_NO_FLUSH) == -1)
@@ -243,11 +234,7 @@ local z_size_t gz_write(state, buf, len)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzwrite(file, buf, len)
-    gzFile file;
-    voidpc buf;
-    unsigned len;
-{
+int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) {
     gz_statep state;
 
     /* get internal structure */
@@ -271,12 +258,8 @@ int ZEXPORT gzwrite(file, buf, len)
 }
 
 /* -- see zlib.h -- */
-z_size_t ZEXPORT gzfwrite(buf, size, nitems, file)
-    voidpc buf;
-    z_size_t size;
-    z_size_t nitems;
-    gzFile file;
-{
+z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, z_size_t nitems,
+                          gzFile file) {
     z_size_t len;
     gz_statep state;
 
@@ -301,10 +284,7 @@ z_size_t ZEXPORT gzfwrite(buf, size, nitems, file)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzputc(file, c)
-    gzFile file;
-    int c;
-{
+int ZEXPORT gzputc(gzFile file, int c) {
     unsigned have;
     unsigned char buf[1];
     gz_statep state;
@@ -349,12 +329,8 @@ int ZEXPORT gzputc(file, c)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzputs(file, str)
-    gzFile file;
-    const char *str;
-{
-    int ret;
-    z_size_t len;
+int ZEXPORT gzputs(gzFile file, const char *s) {
+    z_size_t len, put;
     gz_statep state;
 
     /* get internal structure */
@@ -367,17 +343,20 @@ int ZEXPORT gzputs(file, str)
         return -1;
 
     /* write string */
-    len = strlen(str);
-    ret = gz_write(state, str, len);
-    return ret == 0 && len != 0 ? -1 : ret;
+    len = strlen(s);
+    if ((int)len < 0 || (unsigned)len != len) {
+        gz_error(state, Z_STREAM_ERROR, "string length does not fit in int");
+        return -1;
+    }
+    put = gz_write(state, s, len);
+    return put < len ? -1 : (int)len;
 }
 
 #if defined(STDC) || defined(Z_HAVE_STDARG_H)
 #include <stdarg.h>
 
 /* -- see zlib.h -- */
-int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
-{
+int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) {
     int len;
     unsigned left;
     char *next;
@@ -441,15 +420,14 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
         strm->avail_in = state->size;
         if (gz_comp(state, Z_NO_FLUSH) == -1)
             return state->err;
-        memcpy(state->in, state->in + state->size, left);
+        memmove(state->in, state->in + state->size, left);
         strm->next_in = state->in;
         strm->avail_in = left;
     }
     return len;
 }
 
-int ZEXPORTVA gzprintf(gzFile file, const char *format, ...)
-{
+int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) {
     va_list va;
     int ret;
 
@@ -462,13 +440,10 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...)
 #else /* !STDC && !Z_HAVE_STDARG_H */
 
 /* -- see zlib.h -- */
-int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
-                       a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
-    gzFile file;
-    const char *format;
-    int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
-        a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
-{
+int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3,
+                       int a4, int a5, int a6, int a7, int a8, int a9, int a10,
+                       int a11, int a12, int a13, int a14, int a15, int a16,
+                       int a17, int a18, int a19, int a20) {
     unsigned len, left;
     char *next;
     gz_statep state;
@@ -540,7 +515,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
         strm->avail_in = state->size;
         if (gz_comp(state, Z_NO_FLUSH) == -1)
             return state->err;
-        memcpy(state->in, state->in + state->size, left);
+        memmove(state->in, state->in + state->size, left);
         strm->next_in = state->in;
         strm->avail_in = left;
     }
@@ -550,10 +525,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
 #endif
 
 /* -- see zlib.h -- */
-int ZEXPORT gzflush(file, flush)
-    gzFile file;
-    int flush;
-{
+int ZEXPORT gzflush(gzFile file, int flush) {
     gz_statep state;
 
     /* get internal structure */
@@ -582,11 +554,7 @@ int ZEXPORT gzflush(file, flush)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzsetparams(file, level, strategy)
-    gzFile file;
-    int level;
-    int strategy;
-{
+int ZEXPORT gzsetparams(gzFile file, int level, int strategy) {
     gz_statep state;
     z_streamp strm;
 
@@ -597,7 +565,7 @@ int ZEXPORT gzsetparams(file, level, strategy)
     strm = &(state->strm);
 
     /* check that we're writing and that there's no error */
-    if (state->mode != GZ_WRITE || state->err != Z_OK)
+    if (state->mode != GZ_WRITE || state->err != Z_OK || state->direct)
         return Z_STREAM_ERROR;
 
     /* if no change is requested, then do nothing */
@@ -624,9 +592,7 @@ int ZEXPORT gzsetparams(file, level, strategy)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzclose_w(file)
-    gzFile file;
-{
+int ZEXPORT gzclose_w(gzFile file) {
     int ret = Z_OK;
     gz_statep state;
 
diff --git a/libs/zlib/infback.c b/libs/zlib/infback.c
index 59679ecbfc..e7b25b307a 100644
--- a/libs/zlib/infback.c
+++ b/libs/zlib/infback.c
@@ -1,5 +1,5 @@
 /* infback.c -- inflate using a call-back interface
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -15,9 +15,6 @@
 #include "inflate.h"
 #include "inffast.h"
 
-/* function prototypes */
-local void fixedtables OF((struct inflate_state FAR *state));
-
 /*
    strm provides memory allocation functions in zalloc and zfree, or
    Z_NULL to use the library memory allocation functions.
@@ -25,13 +22,9 @@ local void fixedtables OF((struct inflate_state FAR *state));
    windowBits is in the range 8..15, and window is a user-supplied
    window and output buffer that is 2**windowBits bytes.
  */
-int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)
-z_streamp strm;
-int windowBits;
-unsigned char FAR *window;
-const char *version;
-int stream_size;
-{
+int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits,
+                             unsigned char FAR *window, const char *version,
+                             int stream_size) {
     struct inflate_state FAR *state;
 
     if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
@@ -66,6 +59,7 @@ int stream_size;
     state->window = window;
     state->wnext = 0;
     state->whave = 0;
+    state->sane = 1;
     return Z_OK;
 }
 
@@ -79,9 +73,7 @@ int stream_size;
    used for threaded applications, since the rewriting of the tables and virgin
    may not be thread-safe.
  */
-local void fixedtables(state)
-struct inflate_state FAR *state;
-{
+local void fixedtables(struct inflate_state FAR *state) {
 #ifdef BUILDFIXED
     static int virgin = 1;
     static code *lenfix, *distfix;
@@ -247,13 +239,8 @@ struct inflate_state FAR *state;
    inflateBack() can also return Z_STREAM_ERROR if the input parameters
    are not correct, i.e. strm is Z_NULL or the state was not initialized.
  */
-int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)
-z_streamp strm;
-in_func in;
-void FAR *in_desc;
-out_func out;
-void FAR *out_desc;
-{
+int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc,
+                        out_func out, void FAR *out_desc) {
     struct inflate_state FAR *state;
     z_const unsigned char FAR *next;    /* next input */
     unsigned char FAR *put;     /* next output */
@@ -477,6 +464,7 @@ void FAR *out_desc;
             }
             Tracev((stderr, "inflate:       codes ok\n"));
             state->mode = LEN;
+                /* fallthrough */
 
         case LEN:
             /* use inflate_fast() if we have enough input and output */
@@ -604,33 +592,33 @@ void FAR *out_desc;
             break;
 
         case DONE:
-            /* inflate stream terminated properly -- write leftover output */
+            /* inflate stream terminated properly */
             ret = Z_STREAM_END;
-            if (left < state->wsize) {
-                if (out(out_desc, state->window, state->wsize - left))
-                    ret = Z_BUF_ERROR;
-            }
             goto inf_leave;
 
         case BAD:
             ret = Z_DATA_ERROR;
             goto inf_leave;
 
-        default:                /* can't happen, but makes compilers happy */
+        default:
+            /* can't happen, but makes compilers happy */
             ret = Z_STREAM_ERROR;
             goto inf_leave;
         }
 
-    /* Return unused input */
+    /* Write leftover output and return unused input */
   inf_leave:
+    if (left < state->wsize) {
+        if (out(out_desc, state->window, state->wsize - left) &&
+            ret == Z_STREAM_END)
+            ret = Z_BUF_ERROR;
+    }
     strm->next_in = next;
     strm->avail_in = have;
     return ret;
 }
 
-int ZEXPORT inflateBackEnd(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateBackEnd(z_streamp strm) {
     if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
         return Z_STREAM_ERROR;
     ZFREE(strm, strm->state);
diff --git a/libs/zlib/inffast.c b/libs/zlib/inffast.c
index 0dbd1dbc09..9354676e78 100644
--- a/libs/zlib/inffast.c
+++ b/libs/zlib/inffast.c
@@ -47,10 +47,7 @@
       requires strm->avail_out >= 258 for each loop to avoid checking for
       output space.
  */
-void ZLIB_INTERNAL inflate_fast(strm, start)
-z_streamp strm;
-unsigned start;         /* inflate()'s starting value for strm->avail_out */
-{
+void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) {
     struct inflate_state FAR *state;
     z_const unsigned char FAR *in;      /* local strm->next_in */
     z_const unsigned char FAR *last;    /* have enough input while in < last */
@@ -70,7 +67,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
     code const FAR *dcode;      /* local strm->distcode */
     unsigned lmask;             /* mask for first level of length codes */
     unsigned dmask;             /* mask for first level of distance codes */
-    code here;                  /* retrieved table entry */
+    code const *here;           /* retrieved table entry */
     unsigned op;                /* code bits, operation, extra bits, or */
                                 /*  window position, window bytes to copy */
     unsigned len;               /* match length, unused bytes */
@@ -107,20 +104,20 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
             hold += (unsigned long)(*in++) << bits;
             bits += 8;
         }
-        here = lcode[hold & lmask];
+        here = lcode + (hold & lmask);
       dolen:
-        op = (unsigned)(here.bits);
+        op = (unsigned)(here->bits);
         hold >>= op;
         bits -= op;
-        op = (unsigned)(here.op);
+        op = (unsigned)(here->op);
         if (op == 0) {                          /* literal */
-            Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+            Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ?
                     "inflate:         literal '%c'\n" :
-                    "inflate:         literal 0x%02x\n", here.val));
-            *out++ = (unsigned char)(here.val);
+                    "inflate:         literal 0x%02x\n", here->val));
+            *out++ = (unsigned char)(here->val);
         }
         else if (op & 16) {                     /* length base */
-            len = (unsigned)(here.val);
+            len = (unsigned)(here->val);
             op &= 15;                           /* number of extra bits */
             if (op) {
                 if (bits < op) {
@@ -138,14 +135,14 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
                 hold += (unsigned long)(*in++) << bits;
                 bits += 8;
             }
-            here = dcode[hold & dmask];
+            here = dcode + (hold & dmask);
           dodist:
-            op = (unsigned)(here.bits);
+            op = (unsigned)(here->bits);
             hold >>= op;
             bits -= op;
-            op = (unsigned)(here.op);
+            op = (unsigned)(here->op);
             if (op & 16) {                      /* distance base */
-                dist = (unsigned)(here.val);
+                dist = (unsigned)(here->val);
                 op &= 15;                       /* number of extra bits */
                 if (bits < op) {
                     hold += (unsigned long)(*in++) << bits;
@@ -264,7 +261,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
                 }
             }
             else if ((op & 64) == 0) {          /* 2nd level distance code */
-                here = dcode[here.val + (hold & ((1U << op) - 1))];
+                here = dcode + here->val + (hold & ((1U << op) - 1));
                 goto dodist;
             }
             else {
@@ -274,7 +271,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
             }
         }
         else if ((op & 64) == 0) {              /* 2nd level length code */
-            here = lcode[here.val + (hold & ((1U << op) - 1))];
+            here = lcode + here->val + (hold & ((1U << op) - 1));
             goto dolen;
         }
         else if (op & 32) {                     /* end-of-block */
diff --git a/libs/zlib/inffast.h b/libs/zlib/inffast.h
index e5c1aa4ca8..49c6d156c5 100644
--- a/libs/zlib/inffast.h
+++ b/libs/zlib/inffast.h
@@ -8,4 +8,4 @@
    subject to change. Applications should only use zlib.h.
  */
 
-void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start));
+void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start);
diff --git a/libs/zlib/inflate.c b/libs/zlib/inflate.c
index ac333e8c2e..94ecff015a 100644
--- a/libs/zlib/inflate.c
+++ b/libs/zlib/inflate.c
@@ -1,5 +1,5 @@
 /* inflate.c -- zlib decompression
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -91,20 +91,7 @@
 #  endif
 #endif
 
-/* function prototypes */
-local int inflateStateCheck OF((z_streamp strm));
-local void fixedtables OF((struct inflate_state FAR *state));
-local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
-                           unsigned copy));
-#ifdef BUILDFIXED
-   void makefixed OF((void));
-#endif
-local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf,
-                              unsigned len));
-
-local int inflateStateCheck(strm)
-z_streamp strm;
-{
+local int inflateStateCheck(z_streamp strm) {
     struct inflate_state FAR *state;
     if (strm == Z_NULL ||
         strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0)
@@ -116,9 +103,7 @@ z_streamp strm;
     return 0;
 }
 
-int ZEXPORT inflateResetKeep(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateResetKeep(z_streamp strm) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -130,6 +115,7 @@ z_streamp strm;
     state->mode = HEAD;
     state->last = 0;
     state->havedict = 0;
+    state->flags = -1;
     state->dmax = 32768U;
     state->head = Z_NULL;
     state->hold = 0;
@@ -141,9 +127,7 @@ z_streamp strm;
     return Z_OK;
 }
 
-int ZEXPORT inflateReset(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateReset(z_streamp strm) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -154,10 +138,7 @@ z_streamp strm;
     return inflateResetKeep(strm);
 }
 
-int ZEXPORT inflateReset2(strm, windowBits)
-z_streamp strm;
-int windowBits;
-{
+int ZEXPORT inflateReset2(z_streamp strm, int windowBits) {
     int wrap;
     struct inflate_state FAR *state;
 
@@ -167,6 +148,8 @@ int windowBits;
 
     /* extract wrap request from windowBits parameter */
     if (windowBits < 0) {
+        if (windowBits < -15)
+            return Z_STREAM_ERROR;
         wrap = 0;
         windowBits = -windowBits;
     }
@@ -192,12 +175,8 @@ int windowBits;
     return inflateReset(strm);
 }
 
-int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
-z_streamp strm;
-int windowBits;
-const char *version;
-int stream_size;
-{
+int ZEXPORT inflateInit2_(z_streamp strm, int windowBits,
+                          const char *version, int stream_size) {
     int ret;
     struct inflate_state FAR *state;
 
@@ -236,22 +215,17 @@ int stream_size;
     return ret;
 }
 
-int ZEXPORT inflateInit_(strm, version, stream_size)
-z_streamp strm;
-const char *version;
-int stream_size;
-{
+int ZEXPORT inflateInit_(z_streamp strm, const char *version,
+                         int stream_size) {
     return inflateInit2_(strm, DEF_WBITS, version, stream_size);
 }
 
-int ZEXPORT inflatePrime(strm, bits, value)
-z_streamp strm;
-int bits;
-int value;
-{
+int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
+    if (bits == 0)
+        return Z_OK;
     state = (struct inflate_state FAR *)strm->state;
     if (bits < 0) {
         state->hold = 0;
@@ -275,9 +249,7 @@ int value;
    used for threaded applications, since the rewriting of the tables and virgin
    may not be thread-safe.
  */
-local void fixedtables(state)
-struct inflate_state FAR *state;
-{
+local void fixedtables(struct inflate_state FAR *state) {
 #ifdef BUILDFIXED
     static int virgin = 1;
     static code *lenfix, *distfix;
@@ -339,7 +311,7 @@ struct inflate_state FAR *state;
 
     a.out > inffixed.h
  */
-void makefixed()
+void makefixed(void)
 {
     unsigned low, size;
     struct inflate_state state;
@@ -393,11 +365,7 @@ void makefixed()
    output will fall in the output data, making match copies simpler and faster.
    The advantage may be dependent on the size of the processor's data caches.
  */
-local int updatewindow(strm, end, copy)
-z_streamp strm;
-const Bytef *end;
-unsigned copy;
-{
+local int updatewindow(z_streamp strm, const Bytef *end, unsigned copy) {
     struct inflate_state FAR *state;
     unsigned dist;
 
@@ -447,10 +415,10 @@ unsigned copy;
 
 /* check function to use adler32() for zlib or crc32() for gzip */
 #ifdef GUNZIP
-#  define UPDATE(check, buf, len) \
+#  define UPDATE_CHECK(check, buf, len) \
     (state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
 #else
-#  define UPDATE(check, buf, len) adler32(check, buf, len)
+#  define UPDATE_CHECK(check, buf, len) adler32(check, buf, len)
 #endif
 
 /* check macros for header crc */
@@ -619,10 +587,7 @@ unsigned copy;
    will return Z_BUF_ERROR if it has not reached the end of the stream.
  */
 
-int ZEXPORT inflate(strm, flush)
-z_streamp strm;
-int flush;
-{
+int ZEXPORT inflate(z_streamp strm, int flush) {
     struct inflate_state FAR *state;
     z_const unsigned char FAR *next;    /* next input */
     unsigned char FAR *put;     /* next output */
@@ -670,7 +635,6 @@ int flush;
                 state->mode = FLAGS;
                 break;
             }
-            state->flags = 0;           /* expect zlib header */
             if (state->head != Z_NULL)
                 state->head->done = -1;
             if (!(state->wrap & 1) ||   /* check if zlib header allowed */
@@ -697,6 +661,7 @@ int flush;
                 break;
             }
             state->dmax = 1U << len;
+            state->flags = 0;               /* indicate zlib header */
             Tracev((stderr, "inflate:   zlib header ok\n"));
             strm->adler = state->check = adler32(0L, Z_NULL, 0);
             state->mode = hold & 0x200 ? DICTID : TYPE;
@@ -722,6 +687,7 @@ int flush;
                 CRC2(state->check, hold);
             INITBITS();
             state->mode = TIME;
+                /* fallthrough */
         case TIME:
             NEEDBITS(32);
             if (state->head != Z_NULL)
@@ -730,6 +696,7 @@ int flush;
                 CRC4(state->check, hold);
             INITBITS();
             state->mode = OS;
+                /* fallthrough */
         case OS:
             NEEDBITS(16);
             if (state->head != Z_NULL) {
@@ -740,6 +707,7 @@ int flush;
                 CRC2(state->check, hold);
             INITBITS();
             state->mode = EXLEN;
+                /* fallthrough */
         case EXLEN:
             if (state->flags & 0x0400) {
                 NEEDBITS(16);
@@ -753,14 +721,16 @@ int flush;
             else if (state->head != Z_NULL)
                 state->head->extra = Z_NULL;
             state->mode = EXTRA;
+                /* fallthrough */
         case EXTRA:
             if (state->flags & 0x0400) {
                 copy = state->length;
                 if (copy > have) copy = have;
                 if (copy) {
                     if (state->head != Z_NULL &&
-                        state->head->extra != Z_NULL) {
-                        len = state->head->extra_len - state->length;
+                        state->head->extra != Z_NULL &&
+                        (len = state->head->extra_len - state->length) <
+                            state->head->extra_max) {
                         zmemcpy(state->head->extra + len, next,
                                 len + copy > state->head->extra_max ?
                                 state->head->extra_max - len : copy);
@@ -775,6 +745,7 @@ int flush;
             }
             state->length = 0;
             state->mode = NAME;
+                /* fallthrough */
         case NAME:
             if (state->flags & 0x0800) {
                 if (have == 0) goto inf_leave;
@@ -796,6 +767,7 @@ int flush;
                 state->head->name = Z_NULL;
             state->length = 0;
             state->mode = COMMENT;
+                /* fallthrough */
         case COMMENT:
             if (state->flags & 0x1000) {
                 if (have == 0) goto inf_leave;
@@ -816,6 +788,7 @@ int flush;
             else if (state->head != Z_NULL)
                 state->head->comment = Z_NULL;
             state->mode = HCRC;
+                /* fallthrough */
         case HCRC:
             if (state->flags & 0x0200) {
                 NEEDBITS(16);
@@ -839,6 +812,7 @@ int flush;
             strm->adler = state->check = ZSWAP32(hold);
             INITBITS();
             state->mode = DICT;
+                /* fallthrough */
         case DICT:
             if (state->havedict == 0) {
                 RESTORE();
@@ -846,8 +820,10 @@ int flush;
             }
             strm->adler = state->check = adler32(0L, Z_NULL, 0);
             state->mode = TYPE;
+                /* fallthrough */
         case TYPE:
             if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave;
+                /* fallthrough */
         case TYPEDO:
             if (state->last) {
                 BYTEBITS();
@@ -898,8 +874,10 @@ int flush;
             INITBITS();
             state->mode = COPY_;
             if (flush == Z_TREES) goto inf_leave;
+                /* fallthrough */
         case COPY_:
             state->mode = COPY;
+                /* fallthrough */
         case COPY:
             copy = state->length;
             if (copy) {
@@ -935,6 +913,7 @@ int flush;
             Tracev((stderr, "inflate:       table sizes ok\n"));
             state->have = 0;
             state->mode = LENLENS;
+                /* fallthrough */
         case LENLENS:
             while (state->have < state->ncode) {
                 NEEDBITS(3);
@@ -956,6 +935,7 @@ int flush;
             Tracev((stderr, "inflate:       code lengths ok\n"));
             state->have = 0;
             state->mode = CODELENS;
+                /* fallthrough */
         case CODELENS:
             while (state->have < state->nlen + state->ndist) {
                 for (;;) {
@@ -1039,8 +1019,10 @@ int flush;
             Tracev((stderr, "inflate:       codes ok\n"));
             state->mode = LEN_;
             if (flush == Z_TREES) goto inf_leave;
+                /* fallthrough */
         case LEN_:
             state->mode = LEN;
+                /* fallthrough */
         case LEN:
             if (have >= 6 && left >= 258) {
                 RESTORE();
@@ -1090,6 +1072,7 @@ int flush;
             }
             state->extra = (unsigned)(here.op) & 15;
             state->mode = LENEXT;
+                /* fallthrough */
         case LENEXT:
             if (state->extra) {
                 NEEDBITS(state->extra);
@@ -1100,6 +1083,7 @@ int flush;
             Tracevv((stderr, "inflate:         length %u\n", state->length));
             state->was = state->length;
             state->mode = DIST;
+                /* fallthrough */
         case DIST:
             for (;;) {
                 here = state->distcode[BITS(state->distbits)];
@@ -1127,6 +1111,7 @@ int flush;
             state->offset = (unsigned)here.val;
             state->extra = (unsigned)(here.op) & 15;
             state->mode = DISTEXT;
+                /* fallthrough */
         case DISTEXT:
             if (state->extra) {
                 NEEDBITS(state->extra);
@@ -1143,6 +1128,7 @@ int flush;
 #endif
             Tracevv((stderr, "inflate:         distance %u\n", state->offset));
             state->mode = MATCH;
+                /* fallthrough */
         case MATCH:
             if (left == 0) goto inf_leave;
             copy = out - left;
@@ -1202,7 +1188,7 @@ int flush;
                 state->total += out;
                 if ((state->wrap & 4) && out)
                     strm->adler = state->check =
-                        UPDATE(state->check, put - out, out);
+                        UPDATE_CHECK(state->check, put - out, out);
                 out = left;
                 if ((state->wrap & 4) && (
 #ifdef GUNZIP
@@ -1218,10 +1204,11 @@ int flush;
             }
 #ifdef GUNZIP
             state->mode = LENGTH;
+                /* fallthrough */
         case LENGTH:
             if (state->wrap && state->flags) {
                 NEEDBITS(32);
-                if (hold != (state->total & 0xffffffffUL)) {
+                if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) {
                     strm->msg = (char *)"incorrect length check";
                     state->mode = BAD;
                     break;
@@ -1231,6 +1218,7 @@ int flush;
             }
 #endif
             state->mode = DONE;
+                /* fallthrough */
         case DONE:
             ret = Z_STREAM_END;
             goto inf_leave;
@@ -1240,6 +1228,7 @@ int flush;
         case MEM:
             return Z_MEM_ERROR;
         case SYNC:
+                /* fallthrough */
         default:
             return Z_STREAM_ERROR;
         }
@@ -1265,7 +1254,7 @@ int flush;
     state->total += out;
     if ((state->wrap & 4) && out)
         strm->adler = state->check =
-            UPDATE(state->check, strm->next_out - out, out);
+            UPDATE_CHECK(state->check, strm->next_out - out, out);
     strm->data_type = (int)state->bits + (state->last ? 64 : 0) +
                       (state->mode == TYPE ? 128 : 0) +
                       (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
@@ -1274,9 +1263,7 @@ int flush;
     return ret;
 }
 
-int ZEXPORT inflateEnd(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateEnd(z_streamp strm) {
     struct inflate_state FAR *state;
     if (inflateStateCheck(strm))
         return Z_STREAM_ERROR;
@@ -1288,11 +1275,8 @@ z_streamp strm;
     return Z_OK;
 }
 
-int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength)
-z_streamp strm;
-Bytef *dictionary;
-uInt *dictLength;
-{
+int ZEXPORT inflateGetDictionary(z_streamp strm, Bytef *dictionary,
+                                 uInt *dictLength) {
     struct inflate_state FAR *state;
 
     /* check state */
@@ -1311,11 +1295,8 @@ uInt *dictLength;
     return Z_OK;
 }
 
-int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
-z_streamp strm;
-const Bytef *dictionary;
-uInt dictLength;
-{
+int ZEXPORT inflateSetDictionary(z_streamp strm, const Bytef *dictionary,
+                                 uInt dictLength) {
     struct inflate_state FAR *state;
     unsigned long dictid;
     int ret;
@@ -1346,10 +1327,7 @@ uInt dictLength;
     return Z_OK;
 }
 
-int ZEXPORT inflateGetHeader(strm, head)
-z_streamp strm;
-gz_headerp head;
-{
+int ZEXPORT inflateGetHeader(z_streamp strm, gz_headerp head) {
     struct inflate_state FAR *state;
 
     /* check state */
@@ -1374,11 +1352,8 @@ gz_headerp head;
    called again with more data and the *have state.  *have is initialized to
    zero for the first call.
  */
-local unsigned syncsearch(have, buf, len)
-unsigned FAR *have;
-const unsigned char FAR *buf;
-unsigned len;
-{
+local unsigned syncsearch(unsigned FAR *have, const unsigned char FAR *buf,
+                          unsigned len) {
     unsigned got;
     unsigned next;
 
@@ -1397,10 +1372,9 @@ unsigned len;
     return next;
 }
 
-int ZEXPORT inflateSync(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateSync(z_streamp strm) {
     unsigned len;               /* number of bytes to look at or looked at */
+    int flags;                  /* temporary to save header status */
     unsigned long in, out;      /* temporary to save total_in and total_out */
     unsigned char buf[4];       /* to restore bit buffer to byte string */
     struct inflate_state FAR *state;
@@ -1413,7 +1387,7 @@ z_streamp strm;
     /* if first time, start search in bit buffer */
     if (state->mode != SYNC) {
         state->mode = SYNC;
-        state->hold <<= state->bits & 7;
+        state->hold >>= state->bits & 7;
         state->bits -= state->bits & 7;
         len = 0;
         while (state->bits >= 8) {
@@ -1433,9 +1407,15 @@ z_streamp strm;
 
     /* return no joy or set up to restart inflate() on a new block */
     if (state->have != 4) return Z_DATA_ERROR;
+    if (state->flags == -1)
+        state->wrap = 0;    /* if no header yet, treat as raw */
+    else
+        state->wrap &= ~4;  /* no point in computing a check value now */
+    flags = state->flags;
     in = strm->total_in;  out = strm->total_out;
     inflateReset(strm);
     strm->total_in = in;  strm->total_out = out;
+    state->flags = flags;
     state->mode = TYPE;
     return Z_OK;
 }
@@ -1448,9 +1428,7 @@ z_streamp strm;
    block. When decompressing, PPP checks that at the end of input packet,
    inflate is waiting for these length bytes.
  */
-int ZEXPORT inflateSyncPoint(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateSyncPoint(z_streamp strm) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -1458,10 +1436,7 @@ z_streamp strm;
     return state->mode == STORED && state->bits == 0;
 }
 
-int ZEXPORT inflateCopy(dest, source)
-z_streamp dest;
-z_streamp source;
-{
+int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) {
     struct inflate_state FAR *state;
     struct inflate_state FAR *copy;
     unsigned char FAR *window;
@@ -1505,10 +1480,7 @@ z_streamp source;
     return Z_OK;
 }
 
-int ZEXPORT inflateUndermine(strm, subvert)
-z_streamp strm;
-int subvert;
-{
+int ZEXPORT inflateUndermine(z_streamp strm, int subvert) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -1523,24 +1495,19 @@ int subvert;
 #endif
 }
 
-int ZEXPORT inflateValidate(strm, check)
-z_streamp strm;
-int check;
-{
+int ZEXPORT inflateValidate(z_streamp strm, int check) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
     state = (struct inflate_state FAR *)strm->state;
-    if (check)
+    if (check && state->wrap)
         state->wrap |= 4;
     else
         state->wrap &= ~4;
     return Z_OK;
 }
 
-long ZEXPORT inflateMark(strm)
-z_streamp strm;
-{
+long ZEXPORT inflateMark(z_streamp strm) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm))
@@ -1551,9 +1518,7 @@ z_streamp strm;
             (state->mode == MATCH ? state->was - state->length : 0));
 }
 
-unsigned long ZEXPORT inflateCodesUsed(strm)
-z_streamp strm;
-{
+unsigned long ZEXPORT inflateCodesUsed(z_streamp strm) {
     struct inflate_state FAR *state;
     if (inflateStateCheck(strm)) return (unsigned long)-1;
     state = (struct inflate_state FAR *)strm->state;
diff --git a/libs/zlib/inflate.h b/libs/zlib/inflate.h
index a46cce6b6d..f127b6b1fa 100644
--- a/libs/zlib/inflate.h
+++ b/libs/zlib/inflate.h
@@ -1,5 +1,5 @@
 /* inflate.h -- internal inflate state definition
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2019 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -86,7 +86,8 @@ struct inflate_state {
     int wrap;                   /* bit 0 true for zlib, bit 1 true for gzip,
                                    bit 2 true to validate check value */
     int havedict;               /* true if dictionary provided */
-    int flags;                  /* gzip header method and flags (0 if zlib) */
+    int flags;                  /* gzip header method and flags, 0 if zlib, or
+                                   -1 if raw or no header yet */
     unsigned dmax;              /* zlib header max distance (INFLATE_STRICT) */
     unsigned long check;        /* protected copy of check value */
     unsigned long total;        /* protected copy of output count */
diff --git a/libs/zlib/inftrees.c b/libs/zlib/inftrees.c
index 2ea08fc13e..98cfe16445 100644
--- a/libs/zlib/inftrees.c
+++ b/libs/zlib/inftrees.c
@@ -1,5 +1,5 @@
 /* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2017 Mark Adler
+ * Copyright (C) 1995-2024 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -9,7 +9,7 @@
 #define MAXBITS 15
 
 const char inflate_copyright[] =
-   " inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
+   " inflate 1.3.1 Copyright 1995-2024 Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -29,14 +29,9 @@ const char inflate_copyright[] =
    table index bits.  It will differ if the request is greater than the
    longest code or if it is less than the shortest code.
  */
-int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work)
-codetype type;
-unsigned short FAR *lens;
-unsigned codes;
-code FAR * FAR *table;
-unsigned FAR *bits;
-unsigned short FAR *work;
-{
+int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens,
+                                unsigned codes, code FAR * FAR *table,
+                                unsigned FAR *bits, unsigned short FAR *work) {
     unsigned len;               /* a code's length in bits */
     unsigned sym;               /* index of code symbols */
     unsigned min, max;          /* minimum and maximum code lengths */
@@ -62,7 +57,7 @@ unsigned short FAR *work;
         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
     static const unsigned short lext[31] = { /* Length codes 257..285 extra */
         16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
-        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
+        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 203, 77};
     static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
diff --git a/libs/zlib/inftrees.h b/libs/zlib/inftrees.h
index baa53a0b1a..396f74b5da 100644
--- a/libs/zlib/inftrees.h
+++ b/libs/zlib/inftrees.h
@@ -38,11 +38,11 @@ typedef struct {
 /* Maximum size of the dynamic table.  The maximum number of code structures is
    1444, which is the sum of 852 for literal/length codes and 592 for distance
    codes.  These values were found by exhaustive searches using the program
-   examples/enough.c found in the zlib distribtution.  The arguments to that
+   examples/enough.c found in the zlib distribution.  The arguments to that
    program are the number of symbols, the initial root table size, and the
    maximum bit length of a code.  "enough 286 9 15" for literal/length codes
-   returns returns 852, and "enough 30 6 15" for distance codes returns 592.
-   The initial root table size (9 or 6) is found in the fifth argument of the
+   returns 852, and "enough 30 6 15" for distance codes returns 592. The
+   initial root table size (9 or 6) is found in the fifth argument of the
    inflate_table() calls in inflate.c and infback.c.  If the root table size is
    changed, then these maximum sizes would be need to be recalculated and
    updated. */
@@ -57,6 +57,6 @@ typedef enum {
     DISTS
 } codetype;
 
-int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,
-                             unsigned codes, code FAR * FAR *table,
-                             unsigned FAR *bits, unsigned short FAR *work));
+int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens,
+                                unsigned codes, code FAR * FAR *table,
+                                unsigned FAR *bits, unsigned short FAR *work);
diff --git a/libs/zlib/make_vms.com b/libs/zlib/make_vms.com
index 65e9d0cbc8..4dc8a89135 100644
--- a/libs/zlib/make_vms.com
+++ b/libs/zlib/make_vms.com
@@ -14,9 +14,9 @@ $! 0.02 20061008 Adapt to new Makefile.in
 $! 0.03 20091224 Add support for large file check
 $! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite
 $! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in
-$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples
+$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new examples
 $!               subdir path, update module search in makefile.in
-$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned
+$! 0.07 20120115 Triggered by work done by Alexey Chupahin completely redesigned
 $!               shared image creation
 $! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared
 $!               image
diff --git a/libs/zlib/old/as400/bndsrc b/libs/zlib/old/as400/bndsrc
deleted file mode 100644
index 9cf94bb356..0000000000
--- a/libs/zlib/old/as400/bndsrc
+++ /dev/null
@@ -1,132 +0,0 @@
-STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB')
-
-/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-/*   Version 1.1.3 entry points.                                    */
-/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-
-/********************************************************************/
-/*   *MODULE      ADLER32      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("adler32")
-
-/********************************************************************/
-/*   *MODULE      COMPRESS     ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("compress")
-  EXPORT SYMBOL("compress2")
-
-/********************************************************************/
-/*   *MODULE      CRC32        ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("crc32")
-  EXPORT SYMBOL("get_crc_table")
-
-/********************************************************************/
-/*   *MODULE      DEFLATE      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("deflate")
-  EXPORT SYMBOL("deflateEnd")
-  EXPORT SYMBOL("deflateSetDictionary")
-  EXPORT SYMBOL("deflateCopy")
-  EXPORT SYMBOL("deflateReset")
-  EXPORT SYMBOL("deflateParams")
-  EXPORT SYMBOL("deflatePrime")
-  EXPORT SYMBOL("deflateInit_")
-  EXPORT SYMBOL("deflateInit2_")
-
-/********************************************************************/
-/*   *MODULE      GZIO         ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("gzopen")
-  EXPORT SYMBOL("gzdopen")
-  EXPORT SYMBOL("gzsetparams")
-  EXPORT SYMBOL("gzread")
-  EXPORT SYMBOL("gzwrite")
-  EXPORT SYMBOL("gzprintf")
-  EXPORT SYMBOL("gzputs")
-  EXPORT SYMBOL("gzgets")
-  EXPORT SYMBOL("gzputc")
-  EXPORT SYMBOL("gzgetc")
-  EXPORT SYMBOL("gzflush")
-  EXPORT SYMBOL("gzseek")
-  EXPORT SYMBOL("gzrewind")
-  EXPORT SYMBOL("gztell")
-  EXPORT SYMBOL("gzeof")
-  EXPORT SYMBOL("gzclose")
-  EXPORT SYMBOL("gzerror")
-
-/********************************************************************/
-/*   *MODULE      INFLATE      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("inflate")
-  EXPORT SYMBOL("inflateEnd")
-  EXPORT SYMBOL("inflateSetDictionary")
-  EXPORT SYMBOL("inflateSync")
-  EXPORT SYMBOL("inflateReset")
-  EXPORT SYMBOL("inflateInit_")
-  EXPORT SYMBOL("inflateInit2_")
-  EXPORT SYMBOL("inflateSyncPoint")
-
-/********************************************************************/
-/*   *MODULE      UNCOMPR      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("uncompress")
-
-/********************************************************************/
-/*   *MODULE      ZUTIL        ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("zlibVersion")
-  EXPORT SYMBOL("zError")
-
-/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-/*   Version 1.2.1 additional entry points.                         */
-/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-
-/********************************************************************/
-/*   *MODULE      COMPRESS     ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("compressBound")
-
-/********************************************************************/
-/*   *MODULE      DEFLATE      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("deflateBound")
-
-/********************************************************************/
-/*   *MODULE      GZIO         ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("gzungetc")
-  EXPORT SYMBOL("gzclearerr")
-
-/********************************************************************/
-/*   *MODULE      INFBACK      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("inflateBack")
-  EXPORT SYMBOL("inflateBackEnd")
-  EXPORT SYMBOL("inflateBackInit_")
-
-/********************************************************************/
-/*   *MODULE      INFLATE      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("inflateCopy")
-
-/********************************************************************/
-/*   *MODULE      ZUTIL        ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("zlibCompileFlags")
-
-ENDPGMEXP
diff --git a/libs/zlib/old/as400/compile.clp b/libs/zlib/old/as400/compile.clp
deleted file mode 100644
index 8554951500..0000000000
--- a/libs/zlib/old/as400/compile.clp
+++ /dev/null
@@ -1,123 +0,0 @@
-/******************************************************************************/
-/*                                                                            */
-/*  ZLIB                                                                      */
-/*                                                                            */
-/*    Compile sources into modules and link them into a service program.      */
-/*                                                                            */
-/******************************************************************************/
-
-             PGM
-
-/*      Configuration adjustable parameters.                                  */
-
-             DCL        VAR(&SRCLIB) TYPE(*CHAR) LEN(10) +
-                          VALUE('ZLIB')                         /* Source library. */
-             DCL        VAR(&SRCFILE) TYPE(*CHAR) LEN(10) +
-                          VALUE('SOURCES')                      /* Source member file. */
-             DCL        VAR(&CTLFILE) TYPE(*CHAR) LEN(10) +
-                          VALUE('TOOLS')                        /* Control member file. */
-
-             DCL        VAR(&MODLIB) TYPE(*CHAR) LEN(10) +
-                          VALUE('ZLIB')                         /* Module library. */
-
-             DCL        VAR(&SRVLIB) TYPE(*CHAR) LEN(10) +
-                          VALUE('LGPL')                         /* Service program library. */
-
-             DCL        VAR(&CFLAGS) TYPE(*CHAR) +
-                          VALUE('OPTIMIZE(40)')                 /* Compile options. */
-
-
-/*      Working storage.                                                      */
-
-             DCL        VAR(&CMDLEN) TYPE(*DEC) LEN(15 5) VALUE(300)    /* Command length. */
-             DCL        VAR(&CMD) TYPE(*CHAR) LEN(512)
-
-
-/*      Compile sources into modules.                                         */
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/ADLER32)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/COMPRESS)              SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/CRC32)                 SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/DEFLATE)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/GZIO)                  SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/INFBACK)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/INFFAST)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/INFLATE)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/INFTREES)              SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/TREES)                 SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/UNCOMPR)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/ZUTIL)                 SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-
-/*      Link modules into a service program.                                  */
-
-             CRTSRVPGM  SRVPGM(&SRVLIB/ZLIB) +
-                          MODULE(&MODLIB/ADLER32     &MODLIB/COMPRESS    +
-                                 &MODLIB/CRC32       &MODLIB/DEFLATE     +
-                                 &MODLIB/GZIO        &MODLIB/INFBACK     +
-                                 &MODLIB/INFFAST     &MODLIB/INFLATE     +
-                                 &MODLIB/INFTREES    &MODLIB/TREES       +
-                                 &MODLIB/UNCOMPR     &MODLIB/ZUTIL)      +
-                          SRCFILE(&SRCLIB/&CTLFILE) SRCMBR(BNDSRC) +
-                          TEXT('ZLIB 1.2.3') TGTRLS(V4R4M0)
-
-             ENDPGM
diff --git a/libs/zlib/old/as400/readme.txt b/libs/zlib/old/as400/readme.txt
deleted file mode 100644
index beae13f565..0000000000
--- a/libs/zlib/old/as400/readme.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-        ZLIB version 1.2.3 for AS400 installation instructions
-
-I) From an AS400 *SAVF file:
-
-1)      Unpacking archive to an AS400 save file
-
-On the AS400:
-
-_       Create the ZLIB AS400 library:
-
-        CRTLIB LIB(ZLIB) TYPE(PROD) TEXT('ZLIB compression API library')
-
-_       Create a work save file, for example:
-
-                CRTSAVF FILE(ZLIB/ZLIBSAVF)
-
-On a PC connected to the target AS400:
-
-_       Unpack the save file image to a PC file "ZLIBSAVF"
-_       Upload this file into the save file on the AS400, for example
-                using ftp in BINARY mode.
-
-
-2)      Populating the ZLIB AS400 source library
-
-On the AS400:
-
-_       Extract the saved objects into the ZLIB AS400 library using:
-
-RSTOBJ OBJ(*ALL) SAVLIB(ZLIB) DEV(*SAVF) SAVF(ZLIB/ZLIBSAVF) RSTLIB(ZLIB)
-
-
-3)      Customize installation:
-
-_       Edit CL member ZLIB/TOOLS(COMPILE) and change parameters if needed,
-                according to the comments.
-
-_       Compile this member with:
-
-        CRTCLPGM PGM(ZLIB/COMPILE) SRCFILE(ZLIB/TOOLS) SRCMBR(COMPILE)
-
-
-4)      Compile and generate the service program:
-
-_       This can now be done by executing:
-
-        CALL PGM(ZLIB/COMPILE)
-
-
-
-II) From the original source distribution:
-
-1)      On the AS400, create the source library:
-
-        CRTLIB LIB(ZLIB) TYPE(PROD) TEXT('ZLIB compression API library')
-
-2)      Create the source files:
-
-        CRTSRCPF FILE(ZLIB/SOURCES) RCDLEN(112) TEXT('ZLIB library modules')
-        CRTSRCPF FILE(ZLIB/H)       RCDLEN(112) TEXT('ZLIB library includes')
-        CRTSRCPF FILE(ZLIB/TOOLS)   RCDLEN(112) TEXT('ZLIB library control utilities')
-
-3)      From the machine hosting the distribution files, upload them (with
-                FTP in text mode, for example) according to the following table:
-
-    Original    AS400   AS400    AS400 AS400
-    file        file    member   type  description
-                SOURCES                Original ZLIB C subprogram sources
-    adler32.c           ADLER32  C     ZLIB - Compute the Adler-32 checksum of a dta strm
-    compress.c          COMPRESS C     ZLIB - Compress a memory buffer
-    crc32.c             CRC32    C     ZLIB - Compute the CRC-32 of a data stream
-    deflate.c           DEFLATE  C     ZLIB - Compress data using the deflation algorithm
-    gzio.c              GZIO     C     ZLIB - IO on .gz files
-    infback.c           INFBACK  C     ZLIB - Inflate using a callback interface
-    inffast.c           INFFAST  C     ZLIB - Fast proc. literals & length/distance pairs
-    inflate.c           INFLATE  C     ZLIB - Interface to inflate modules
-    inftrees.c          INFTREES C     ZLIB - Generate Huffman trees for efficient decode
-    trees.c             TREES    C     ZLIB - Output deflated data using Huffman coding
-    uncompr.c           UNCOMPR  C     ZLIB - Decompress a memory buffer
-    zutil.c             ZUTIL    C     ZLIB - Target dependent utility functions
-                H                      Original ZLIB C and ILE/RPG include files
-    crc32.h             CRC32    C     ZLIB - CRC32 tables
-    deflate.h           DEFLATE  C     ZLIB - Internal compression state
-    inffast.h           INFFAST  C     ZLIB - Header to use inffast.c
-    inffixed.h          INFFIXED C     ZLIB - Table for decoding fixed codes
-    inflate.h           INFLATE  C     ZLIB - Internal inflate state definitions
-    inftrees.h          INFTREES C     ZLIB - Header to use inftrees.c
-    trees.h             TREES    C     ZLIB - Created automatically with -DGEN_TREES_H
-    zconf.h             ZCONF    C     ZLIB - Compression library configuration
-    zlib.h              ZLIB     C     ZLIB - Compression library C user interface
-    as400/zlib.inc      ZLIB.INC RPGLE ZLIB - Compression library ILE RPG user interface
-    zutil.h             ZUTIL    C     ZLIB - Internal interface and configuration
-                TOOLS                  Building source software & AS/400 README
-    as400/bndsrc        BNDSRC         Entry point exportation list
-    as400/compile.clp   COMPILE  CLP   Compile sources & generate service program
-    as400/readme.txt    README   TXT   Installation instructions
-
-4)      Continue as in I)3).
-
-
-
-
-Notes:  For AS400 ILE RPG programmers, a /copy member defining the ZLIB
-                API prototypes for ILE RPG can be found in ZLIB/H(ZLIB.INC).
-                Please read comments in this member for more information.
-
-        Remember that most foreign textual data are ASCII coded: this
-                implementation does not handle conversion from/to ASCII, so
-                text data code conversions must be done explicitely.
-
-        Always open zipped files in binary mode.
diff --git a/libs/zlib/old/as400/zlib.inc b/libs/zlib/old/as400/zlib.inc
deleted file mode 100644
index a9a4f5cf4f..0000000000
--- a/libs/zlib/old/as400/zlib.inc
+++ /dev/null
@@ -1,331 +0,0 @@
-      *  ZLIB.INC - Interface to the general purpose compression library
-      *
-      *  ILE RPG400 version by Patrick Monnerat, DATASPHERE.
-      *  Version 1.2.3.9
-      *
-      *
-      *  WARNING:
-      *     Procedures inflateInit(), inflateInit2(), deflateInit(),
-      *         deflateInit2() and inflateBackInit() need to be called with
-      *         two additional arguments:
-      *         the package version string and the stream control structure.
-      *         size. This is needed because RPG lacks some macro feature.
-      *         Call these procedures as:
-      *             inflateInit(...: ZLIB_VERSION: %size(z_stream))
-      *
-      /if not defined(ZLIB_H_)
-      /define ZLIB_H_
-      *
-      **************************************************************************
-      *                               Constants
-      **************************************************************************
-      *
-      *  Versioning information.
-      *
-     D ZLIB_VERSION    C                   '1.2.3.9'
-     D ZLIB_VERNUM     C                   X'1239'
-      *
-      *  Other equates.
-      *
-     D Z_NO_FLUSH      C                   0
-     D Z_SYNC_FLUSH    C                   2
-     D Z_FULL_FLUSH    C                   3
-     D Z_FINISH        C                   4
-     D Z_BLOCK         C                   5
-      *
-     D Z_OK            C                   0
-     D Z_STREAM_END    C                   1
-     D Z_NEED_DICT     C                   2
-     D Z_ERRNO         C                   -1
-     D Z_STREAM_ERROR  C                   -2
-     D Z_DATA_ERROR    C                   -3
-     D Z_MEM_ERROR     C                   -4
-     D Z_BUF_ERROR     C                   -5
-     DZ_VERSION_ERROR  C                   -6
-      *
-     D Z_NO_COMPRESSION...
-     D                 C                   0
-     D Z_BEST_SPEED    C                   1
-     D Z_BEST_COMPRESSION...
-     D                 C                   9
-     D Z_DEFAULT_COMPRESSION...
-     D                 C                   -1
-      *
-     D Z_FILTERED      C                   1
-     D Z_HUFFMAN_ONLY  C                   2
-     D Z_RLE           C                   3
-     D Z_DEFAULT_STRATEGY...
-     D                 C                   0
-      *
-     D Z_BINARY        C                   0
-     D Z_ASCII         C                   1
-     D Z_UNKNOWN       C                   2
-      *
-     D Z_DEFLATED      C                   8
-      *
-     D Z_NULL          C                   0
-      *
-      **************************************************************************
-      *                                 Types
-      **************************************************************************
-      *
-     D z_streamp       S               *                                        Stream struct ptr
-     D gzFile          S               *                                        File pointer
-     D z_off_t         S             10i 0                                      Stream offsets
-      *
-      **************************************************************************
-      *                               Structures
-      **************************************************************************
-      *
-      *  The GZIP encode/decode stream support structure.
-      *
-     D z_stream        DS                  align based(z_streamp)
-     D  zs_next_in                     *                                        Next input byte
-     D  zs_avail_in                  10U 0                                      Byte cnt at next_in
-     D  zs_total_in                  10U 0                                      Total bytes read
-     D  zs_next_out                    *                                        Output buffer ptr
-     D  zs_avail_out                 10U 0                                      Room left @ next_out
-     D  zs_total_out                 10U 0                                      Total bytes written
-     D  zs_msg                         *                                        Last errmsg or null
-     D  zs_state                       *                                        Internal state
-     D  zs_zalloc                      *   procptr                              Int. state allocator
-     D  zs_free                        *   procptr                              Int. state dealloc.
-     D  zs_opaque                      *                                        Private alloc. data
-     D  zs_data_type                 10i 0                                      ASC/BIN best guess
-     D  zs_adler                     10u 0                                      Uncompr. adler32 val
-     D                               10U 0                                      Reserved
-     D                               10U 0                                      Ptr. alignment
-      *
-      **************************************************************************
-      *                     Utility function prototypes
-      **************************************************************************
-      *
-     D compress        PR            10I 0 extproc('compress')
-     D  dest                      32767    options(*varsize)                    Destination buffer
-     D  destLen                      10U 0                                      Destination length
-     D  source                    32767    const options(*varsize)              Source buffer
-     D  sourceLen                    10u 0 value                                Source length
-      *
-     D compress2       PR            10I 0 extproc('compress2')
-     D  dest                      32767    options(*varsize)                    Destination buffer
-     D  destLen                      10U 0                                      Destination length
-     D  source                    32767    const options(*varsize)              Source buffer
-     D  sourceLen                    10U 0 value                                Source length
-     D  level                        10I 0 value                                Compression level
-      *
-     D compressBound   PR            10U 0 extproc('compressBound')
-     D  sourceLen                    10U 0 value
-      *
-     D uncompress      PR            10I 0 extproc('uncompress')
-     D  dest                      32767    options(*varsize)                    Destination buffer
-     D  destLen                      10U 0                                      Destination length
-     D  source                    32767    const options(*varsize)              Source buffer
-     D  sourceLen                    10U 0 value                                Source length
-      *
-     D gzopen          PR                  extproc('gzopen')
-     D                                     like(gzFile)
-     D  path                           *   value options(*string)               File pathname
-     D  mode                           *   value options(*string)               Open mode
-      *
-     D gzdopen         PR                  extproc('gzdopen')
-     D                                     like(gzFile)
-     D  fd                           10i 0 value                                File descriptor
-     D  mode                           *   value options(*string)               Open mode
-      *
-     D gzsetparams     PR            10I 0 extproc('gzsetparams')
-     D  file                               value like(gzFile)                   File pointer
-     D  level                        10I 0 value
-     D  strategy                     10i 0 value
-      *
-     D gzread          PR            10I 0 extproc('gzread')
-     D  file                               value like(gzFile)                   File pointer
-     D  buf                       32767    options(*varsize)                    Buffer
-     D  len                          10u 0 value                                Buffer length
-      *
-     D gzwrite         PR            10I 0 extproc('gzwrite')
-     D  file                               value like(gzFile)                   File pointer
-     D  buf                       32767    const options(*varsize)              Buffer
-     D  len                          10u 0 value                                Buffer length
-      *
-     D gzputs          PR            10I 0 extproc('gzputs')
-     D  file                               value like(gzFile)                   File pointer
-     D  s                              *   value options(*string)               String to output
-      *
-     D gzgets          PR              *   extproc('gzgets')
-     D  file                               value like(gzFile)                   File pointer
-     D  buf                       32767    options(*varsize)                    Read buffer
-     D  len                          10i 0 value                                Buffer length
-      *
-     D gzflush         PR            10i 0 extproc('gzflush')
-     D  file                               value like(gzFile)                   File pointer
-     D  flush                        10I 0 value                                Type of flush
-      *
-     D gzseek          PR                  extproc('gzseek')
-     D                                     like(z_off_t)
-     D  file                               value like(gzFile)                   File pointer
-     D  offset                             value like(z_off_t)                  Offset
-     D  whence                       10i 0 value                                Origin
-      *
-     D gzrewind        PR            10i 0 extproc('gzrewind')
-     D  file                               value like(gzFile)                   File pointer
-      *
-     D gztell          PR                  extproc('gztell')
-     D                                     like(z_off_t)
-     D  file                               value like(gzFile)                   File pointer
-      *
-     D gzeof           PR            10i 0 extproc('gzeof')
-     D  file                               value like(gzFile)                   File pointer
-      *
-     D gzclose         PR            10i 0 extproc('gzclose')
-     D  file                               value like(gzFile)                   File pointer
-      *
-     D gzerror         PR              *   extproc('gzerror')                   Error string
-     D  file                               value like(gzFile)                   File pointer
-     D  errnum                       10I 0                                      Error code
-      *
-     D gzclearerr      PR                  extproc('gzclearerr')
-     D  file                               value like(gzFile)                   File pointer
-      *
-      **************************************************************************
-      *                        Basic function prototypes
-      **************************************************************************
-      *
-     D zlibVersion     PR              *   extproc('zlibVersion')               Version string
-      *
-     D deflateInit     PR            10I 0 extproc('deflateInit_')              Init. compression
-     D  strm                               like(z_stream)                       Compression stream
-     D  level                        10I 0 value                                Compression level
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D deflate         PR            10I 0 extproc('deflate')                   Compress data
-     D  strm                               like(z_stream)                       Compression stream
-     D  flush                        10I 0 value                                Flush type required
-      *
-     D deflateEnd      PR            10I 0 extproc('deflateEnd')                Termin. compression
-     D  strm                               like(z_stream)                       Compression stream
-      *
-     D inflateInit     PR            10I 0 extproc('inflateInit_')              Init. expansion
-     D  strm                               like(z_stream)                       Expansion stream
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D inflate         PR            10I 0 extproc('inflate')                   Expand data
-     D  strm                               like(z_stream)                       Expansion stream
-     D  flush                        10I 0 value                                Flush type required
-      *
-     D inflateEnd      PR            10I 0 extproc('inflateEnd')                Termin. expansion
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-      **************************************************************************
-      *                        Advanced function prototypes
-      **************************************************************************
-      *
-     D deflateInit2    PR            10I 0 extproc('deflateInit2_')             Init. compression
-     D  strm                               like(z_stream)                       Compression stream
-     D  level                        10I 0 value                                Compression level
-     D  method                       10I 0 value                                Compression method
-     D  windowBits                   10I 0 value                                log2(window size)
-     D  memLevel                     10I 0 value                                Mem/cmpress tradeoff
-     D  strategy                     10I 0 value                                Compression stategy
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D deflateSetDictionary...
-     D                 PR            10I 0 extproc('deflateSetDictionary')      Init. dictionary
-     D  strm                               like(z_stream)                       Compression stream
-     D  dictionary                32767    const options(*varsize)              Dictionary bytes
-     D  dictLength                   10U 0 value                                Dictionary length
-      *
-     D deflateCopy     PR            10I 0 extproc('deflateCopy')               Compress strm 2 strm
-     D  dest                               like(z_stream)                       Destination stream
-     D  source                             like(z_stream)                       Source stream
-      *
-     D deflateReset    PR            10I 0 extproc('deflateReset')              End and init. stream
-     D  strm                               like(z_stream)                       Compression stream
-      *
-     D deflateParams   PR            10I 0 extproc('deflateParams')             Change level & strat
-     D  strm                               like(z_stream)                       Compression stream
-     D  level                        10I 0 value                                Compression level
-     D  strategy                     10I 0 value                                Compression stategy
-      *
-     D deflateBound    PR            10U 0 extproc('deflateBound')              Change level & strat
-     D  strm                               like(z_stream)                       Compression stream
-     D  sourcelen                    10U 0 value                                Compression level
-      *
-     D deflatePrime    PR            10I 0 extproc('deflatePrime')              Change level & strat
-     D  strm                               like(z_stream)                       Compression stream
-     D  bits                         10I 0 value                                Number of bits to insert
-     D  value                        10I 0 value                                Bits to insert
-      *
-     D inflateInit2    PR            10I 0 extproc('inflateInit2_')             Init. expansion
-     D  strm                               like(z_stream)                       Expansion stream
-     D  windowBits                   10I 0 value                                log2(window size)
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D inflateSetDictionary...
-     D                 PR            10I 0 extproc('inflateSetDictionary')      Init. dictionary
-     D  strm                               like(z_stream)                       Expansion stream
-     D  dictionary                32767    const options(*varsize)              Dictionary bytes
-     D  dictLength                   10U 0 value                                Dictionary length
-      *
-     D inflateSync     PR            10I 0 extproc('inflateSync')               Sync. expansion
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-     D inflateCopy     PR            10I 0 extproc('inflateCopy')
-     D  dest                               like(z_stream)                       Destination stream
-     D  source                             like(z_stream)                       Source stream
-      *
-     D inflateReset    PR            10I 0 extproc('inflateReset')              End and init. stream
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-     D inflateBackInit...
-     D                 PR            10I 0 extproc('inflateBackInit_')
-     D  strm                               like(z_stream)                       Expansion stream
-     D  windowBits                   10I 0 value                                Log2(buffer size)
-     D  window                    32767    options(*varsize)                    Buffer
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D inflateBack     PR            10I 0 extproc('inflateBack')
-     D  strm                               like(z_stream)                       Expansion stream
-     D  in                             *   value procptr                        Input function
-     D  in_desc                        *   value                                Input descriptor
-     D  out                            *   value procptr                        Output function
-     D  out_desc                       *   value                                Output descriptor
-      *
-     D inflateBackEnd  PR            10I 0 extproc('inflateBackEnd')
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-     D zlibCompileFlags...
-     D                 PR            10U 0 extproc('zlibCompileFlags')
-      *
-      **************************************************************************
-      *                        Checksum function prototypes
-      **************************************************************************
-      *
-     D adler32         PR            10U 0 extproc('adler32')                   New checksum
-     D  adler                        10U 0 value                                Old checksum
-     D  buf                       32767    const options(*varsize)              Bytes to accumulate
-     D  len                          10U 0 value                                Buffer length
-      *
-     D crc32           PR            10U 0 extproc('crc32')                     New checksum
-     D  crc                          10U 0 value                                Old checksum
-     D  buf                       32767    const options(*varsize)              Bytes to accumulate
-     D  len                          10U 0 value                                Buffer length
-      *
-      **************************************************************************
-      *                     Miscellaneous function prototypes
-      **************************************************************************
-      *
-     D zError          PR              *   extproc('zError')                    Error string
-     D  err                          10I 0 value                                Error code
-      *
-     D inflateSyncPoint...
-     D                 PR            10I 0 extproc('inflateSyncPoint')
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-     D get_crc_table   PR              *   extproc('get_crc_table')             Ptr to ulongs
-      *
-      /endif
diff --git a/libs/zlib/old/visual-basic.txt b/libs/zlib/old/visual-basic.txt
index 57efe58124..3c8d2a42df 100644
--- a/libs/zlib/old/visual-basic.txt
+++ b/libs/zlib/old/visual-basic.txt
@@ -115,7 +115,7 @@ SUCCESS Then
         ReDim Preserve bytaryCpr(lngCprSiz - 1)
         Open strCprPth For Binary Access Write As #1
             Put #1, , bytaryCpr()
-            Put #1, , lngOriSiz 'Add the the original size value to the end
+            Put #1, , lngOriSiz 'Add the original size value to the end
 (last 4 bytes)
         Close #1
     Else
diff --git a/libs/zlib/old/visualc6/README.txt b/libs/zlib/old/visualc6/README.txt
deleted file mode 100644
index 3d0aef0a12..0000000000
--- a/libs/zlib/old/visualc6/README.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Microsoft Developer Studio Project Files, Format Version 6.00 for zlib.
-
-Copyright (C) 2000-2004 Simon-Pierre Cadieux.
-Copyright (C) 2004 Cosmin Truta.
-For conditions of distribution and use, see copyright notice in zlib.h.
-
-
-This project builds the zlib binaries as follows:
-
-* Win32_DLL_Release\zlib1.dll       DLL build
-* Win32_DLL_Debug\zlib1d.dll        DLL build (debug version)
-* Win32_DLL_ASM_Release\zlib1.dll   DLL build using ASM code
-* Win32_DLL_ASM_Debug\zlib1d.dll    DLL build using ASM code (debug version)
-* Win32_LIB_Release\zlib.lib        static build
-* Win32_LIB_Debug\zlibd.lib         static build (debug version)
-* Win32_LIB_ASM_Release\zlib.lib    static build using ASM code
-* Win32_LIB_ASM_Debug\zlibd.lib     static build using ASM code (debug version)
-
-
-For more information regarding the DLL builds, please see the DLL FAQ
-in ..\..\win32\DLL_FAQ.txt.
-
-
-To build and test:
-
-1) On the main menu, select "File | Open Workspace".
-   Open "zlib.dsw".
-
-2) Select "Build | Set Active Configuration".
-   Choose the configuration you wish to build.
-
-3) Select "Build | Clean".
-
-4) Select "Build | Build ... (F7)".  Ignore warning messages about
-   not being able to find certain include files (e.g. alloc.h).
-
-5) If you built one of the sample programs (example or minigzip),
-   select "Build | Execute ... (Ctrl+F5)".
-
-
-To use:
-
-1) Select "Project | Settings (Alt+F7)".
-   Make note of the configuration names used in your project.
-   Usually, these names are "Win32 Release" and "Win32 Debug".
-
-2) In the Workspace window, select the "FileView" tab.
-   Right-click on the root item "Workspace '...'".
-   Select "Insert Project into Workspace".
-   Switch on the checkbox "Dependency of:", and select the name
-   of your project.  Open "zlib.dsp".
-
-3) Select "Build | Configurations".
-   For each configuration of your project:
-   3.1) Choose the zlib configuration you wish to use.
-   3.2) Click on "Add".
-   3.3) Set the new zlib configuration name to the name used by
-        the configuration from the current iteration.
-
-4) Select "Build | Set Active Configuration".
-   Choose the configuration you wish to build.
-
-5) Select "Build | Build ... (F7)".
-
-6) If you built an executable program, select
-   "Build | Execute ... (Ctrl+F5)".
-
-
-Note:
-
-To build the ASM-enabled code, you need Microsoft Assembler
-(ML.EXE).  You can get it by downloading and installing the
-latest Processor Pack for Visual C++ 6.0.
diff --git a/libs/zlib/old/visualc6/example.dsp b/libs/zlib/old/visualc6/example.dsp
deleted file mode 100644
index d3580525bd..0000000000
--- a/libs/zlib/old/visualc6/example.dsp
+++ /dev/null
@@ -1,278 +0,0 @@
-# Microsoft Developer Studio Project File - Name="example" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=example - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "example.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "example.mak" CFG="example - Win32 LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "example - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "example - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "example - Win32 DLL ASM Release"
-# Name "example - Win32 DLL ASM Debug"
-# Name "example - Win32 DLL Release"
-# Name "example - Win32 DLL Debug"
-# Name "example - Win32 LIB ASM Release"
-# Name "example - Win32 LIB ASM Debug"
-# Name "example - Win32 LIB Release"
-# Name "example - Win32 LIB Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\example.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/libs/zlib/old/visualc6/minigzip.dsp b/libs/zlib/old/visualc6/minigzip.dsp
deleted file mode 100644
index 71034684d8..0000000000
--- a/libs/zlib/old/visualc6/minigzip.dsp
+++ /dev/null
@@ -1,278 +0,0 @@
-# Microsoft Developer Studio Project File - Name="minigzip" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=minigzip - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "minigzip.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "minigzip.mak" CFG="minigzip - Win32 LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "minigzip - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "minigzip - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "minigzip - Win32 DLL ASM Release"
-# Name "minigzip - Win32 DLL ASM Debug"
-# Name "minigzip - Win32 DLL Release"
-# Name "minigzip - Win32 DLL Debug"
-# Name "minigzip - Win32 LIB ASM Release"
-# Name "minigzip - Win32 LIB ASM Debug"
-# Name "minigzip - Win32 LIB Release"
-# Name "minigzip - Win32 LIB Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\minigzip.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/libs/zlib/old/visualc6/zlib.dsp b/libs/zlib/old/visualc6/zlib.dsp
deleted file mode 100644
index 00f54ea422..0000000000
--- a/libs/zlib/old/visualc6/zlib.dsp
+++ /dev/null
@@ -1,621 +0,0 @@
-# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=zlib - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "zlib.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "zlib.mak" CFG="zlib - Win32 LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "zlib - Win32 DLL ASM Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "zlib - Win32 DLL ASM Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "zlib - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "zlib - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "zlib - Win32 LIB ASM Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "zlib - Win32 LIB ASM Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "zlib - Win32 LIB Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "zlib - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /D "ASMV" /D "ASMINF" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 /nologo /dll /machine:I386 /out:"Win32_DLL_ASM_Release\zlib1.dll"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /D "ASMV" /D "ASMINF" /FR /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /dll /debug /machine:I386 /out:"Win32_DLL_ASM_Debug\zlib1d.dll" /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 /nologo /dll /machine:I386 /out:"Win32_DLL_Release\zlib1.dll"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /dll /debug /machine:I386 /out:"Win32_DLL_Debug\zlib1d.dll" /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /D "ASMV" /D "ASMINF" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /D "ASMV" /D "ASMINF" /FR /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"Win32_LIB_ASM_Debug\zlibd.lib"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"Win32_LIB_Debug\zlibd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "zlib - Win32 DLL ASM Release"
-# Name "zlib - Win32 DLL ASM Debug"
-# Name "zlib - Win32 DLL Release"
-# Name "zlib - Win32 DLL Debug"
-# Name "zlib - Win32 LIB ASM Release"
-# Name "zlib - Win32 LIB ASM Debug"
-# Name "zlib - Win32 LIB Release"
-# Name "zlib - Win32 LIB Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\adler32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\compress.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\crc32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\deflate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzclose.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzlib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzread.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzwrite.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\infback.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffast.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inflate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inftrees.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\trees.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\uncompr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\win32\zlib.def
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zutil.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\crc32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\deflate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffast.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffixed.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inflate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inftrees.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\trees.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zutil.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\win32\zlib1.rc
-# End Source File
-# End Group
-# Begin Group "Assembler Files (Unsupported)"
-
-# PROP Default_Filter "asm;obj;c;cpp;cxx;h;hpp;hxx"
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\gvmat32.asm
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_DLL_ASM_Release
-InputPath=..\..\contrib\masmx86\gvmat32.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_DLL_ASM_Debug
-InputPath=..\..\contrib\masmx86\gvmat32.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Release
-InputPath=..\..\contrib\masmx86\gvmat32.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Debug
-InputPath=..\..\contrib\masmx86\gvmat32.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\gvmat32c.c
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-# PROP Exclude_From_Build 1
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-# PROP Exclude_From_Build 1
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP Exclude_From_Build 1
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP Exclude_From_Build 1
-# ADD CPP /I "..\.."
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\inffas32.asm
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_DLL_ASM_Release
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_DLL_ASM_Debug
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Release
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Debug
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\README.txt
-# End Source File
-# End Target
-# End Project
diff --git a/libs/zlib/old/visualc6/zlib.dsw b/libs/zlib/old/visualc6/zlib.dsw
deleted file mode 100644
index 3a771fce07..0000000000
--- a/libs/zlib/old/visualc6/zlib.dsw
+++ /dev/null
@@ -1,59 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "example"=.\example.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "minigzip"=.\minigzip.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "zlib"=.\zlib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/libs/zlib/os400/README400 b/libs/zlib/os400/README400
index 4f98334f5a..30ed5a12c6 100644
--- a/libs/zlib/os400/README400
+++ b/libs/zlib/os400/README400
@@ -1,9 +1,9 @@
-        ZLIB version 1.2.11 for OS/400 installation instructions
+        ZLIB version 1.3.1 for OS/400 installation instructions
 
 1) Download and unpack the zlib tarball to some IFS directory.
    (i.e.: /path/to/the/zlib/ifs/source/directory)
 
-   If the installed IFS command suppors gzip format, this is straightforward,
+   If the installed IFS command supports gzip format, this is straightforward,
 else you have to unpack first to some directory on a system supporting it,
 then move the whole directory to the IFS via the network (via SMB or FTP).
 
@@ -43,6 +43,6 @@ Notes:  For OS/400 ILE RPG programmers, a /copy member defining the ZLIB
 
         Remember that most foreign textual data are ASCII coded: this
                 implementation does not handle conversion from/to ASCII, so
-                text data code conversions must be done explicitely.
+                text data code conversions must be done explicitly.
 
         Mainly for the reason above, always open zipped files in binary mode.
diff --git a/libs/zlib/os400/bndsrc b/libs/zlib/os400/bndsrc
index 5e6e0a2f0a..9f92bb10cf 100644
--- a/libs/zlib/os400/bndsrc
+++ b/libs/zlib/os400/bndsrc
@@ -116,4 +116,12 @@ STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB')
   EXPORT SYMBOL("inflateValidate")
   EXPORT SYMBOL("uncompress2")
 
+/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
+/*   Version 1.2.12 additional entry points.                        */
+/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
+
+  EXPORT SYMBOL("crc32_combine_gen64")
+  EXPORT SYMBOL("crc32_combine_gen")
+  EXPORT SYMBOL("crc32_combine_op")
+
 ENDPGMEXP
diff --git a/libs/zlib/os400/zlib.inc b/libs/zlib/os400/zlib.inc
index c6aca2cbd6..744729ab9d 100644
--- a/libs/zlib/os400/zlib.inc
+++ b/libs/zlib/os400/zlib.inc
@@ -1,7 +1,7 @@
       *  ZLIB.INC - Interface to the general purpose compression library
       *
       *  ILE RPG400 version by Patrick Monnerat, DATASPHERE.
-      *  Version 1.2.11
+      *  Version 1.3.1
       *
       *
       *  WARNING:
@@ -22,12 +22,12 @@
       *
       *  Versioning information.
       *
-     D ZLIB_VERSION    C                   '1.2.11'
+     D ZLIB_VERSION    C                   '1.3.1'
      D ZLIB_VERNUM     C                   X'12a0'
      D ZLIB_VER_MAJOR  C                   1
-     D ZLIB_VER_MINOR  C                   2
+     D ZLIB_VER_MINOR  C                   3
      D ZLIB_VER_REVISION...
-     D                 C                   11
+     D                 C                   1
      D ZLIB_VER_SUBREVISION...
      D                 C                   0
       *
diff --git a/libs/zlib/projects/README.projects b/libs/zlib/projects/README.projects
deleted file mode 100644
index 1c029e4a34..0000000000
--- a/libs/zlib/projects/README.projects
+++ /dev/null
@@ -1,41 +0,0 @@
-This directory contains project files for building zlib under various
-Integrated Development Environments (IDE).
-
-If you wish to submit a new project to this directory, you should comply
-to the following requirements.  Otherwise (e.g. if you wish to integrate
-a custom piece of code that changes the zlib interface or its behavior),
-please consider submitting the project to the contrib directory.
-
-
-Requirements
-============
-
-- The project must build zlib using the source files from the official
-  zlib source distribution, exclusively.
-
-- If the project produces redistributable builds (e.g. shared objects
-  or DLL files), these builds must be compatible to those produced by
-  makefiles, if such makefiles exist in the zlib distribution.
-  In particular, if the project produces a DLL build for the Win32
-  platform, this build must comply to the officially-ammended Win32 DLL
-  Application Binary Interface (ABI), described in win32/DLL_FAQ.txt.
-
-- The project may provide additional build targets, which depend on
-  3rd-party (unofficially-supported) software, present in the contrib
-  directory.  For example, it is possible to provide an "ASM build",
-  besides the officially-supported build, and have ASM source files
-  among its dependencies.
-
-- If there are significant differences between the project files created
-  by different versions of an IDE (e.g. Visual C++ 6.0 vs. 7.0), the name
-  of the project directory should contain the version number of the IDE
-  for which the project is intended (e.g. "visualc6" for Visual C++ 6.0,
-  or "visualc7" for Visual C++ 7.0 and 7.1).
-
-
-Current projects
-================
-
-visualc6/   by Simon-Pierre Cadieux <methodex@methodex.ca>
-            and Cosmin Truta <cosmint@cs.ubbcluj.ro>
-        Project for Microsoft Visual C++ 6.0
diff --git a/libs/zlib/projects/visualc10/.gitignore b/libs/zlib/projects/visualc10/.gitignore
deleted file mode 100644
index 1c5340cd4b..0000000000
--- a/libs/zlib/projects/visualc10/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/Win32
-/x64
-/zlib.vcproj.*.*.user
-/ARM
-/ARM64
diff --git a/libs/zlib/projects/visualc10/zlib.vcxproj b/libs/zlib/projects/visualc10/zlib.vcxproj
deleted file mode 100644
index 5c00ea4a94..0000000000
--- a/libs/zlib/projects/visualc10/zlib.vcxproj
+++ /dev/null
@@ -1,619 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|ARM">
-      <Configuration>Debug</Configuration>
-      <Platform>ARM</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ARM64">
-      <Configuration>Debug</Configuration>
-      <Platform>ARM64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ARM">
-      <Configuration>Release</Configuration>
-      <Platform>ARM</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ARM64">
-      <Configuration>Release</Configuration>
-      <Platform>ARM64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{73A5729C-7323-41D4-AB48-8A03C9F81603}</ProjectGuid>
-    <RootNamespace>zlib</RootNamespace>
-    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-    <WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-    <WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-    <WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-    <WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>false</MinimalRebuild>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;ASMV;ASMINF;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>false</MultiProcessorCompilation>
-      <UndefinePreprocessorDefinitions>ASMV;ASMINF</UndefinePreprocessorDefinitions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineARM</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>false</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
-    <Midl />
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>false</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineARM64</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;ASMV;ASMINF;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <UndefinePreprocessorDefinitions>ASMV;ASMINF</UndefinePreprocessorDefinitions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineARM</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
-    <Midl />
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineARM64</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\adler32.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\compress.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\crc32.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\deflate.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\gzclose.c" />
-    <ClCompile Include="..\..\gzlib.c" />
-    <ClCompile Include="..\..\gzread.c" />
-    <ClCompile Include="..\..\gzwrite.c" />
-    <ClCompile Include="..\..\infback.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\inffast.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\inflate.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\inftrees.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\trees.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\uncompr.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\zutil.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\contrib\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuildStep Include="..\..\win32\zlib.def">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-    </CustomBuildStep>
-    <None Include="README.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\crc32.h" />
-    <ClInclude Include="..\..\deflate.h" />
-    <ClInclude Include="..\..\gzguts.h" />
-    <ClInclude Include="..\..\inffast.h" />
-    <ClInclude Include="..\..\inffixed.h" />
-    <ClInclude Include="..\..\inflate.h" />
-    <ClInclude Include="..\..\inftrees.h" />
-    <ClInclude Include="..\..\trees.h" />
-    <ClInclude Include="..\..\zconf.h" />
-    <ClInclude Include="..\..\zlib.h" />
-    <ClInclude Include="..\..\zutil.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\win32\zlib1.rc">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <MASM Include="..\..\contrib\masmx86\inffas32.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </MASM>
-    <MASM Include="..\..\contrib\masmx86\match686.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </MASM>
-    <MASM Include="..\..\contrib\masmx64\gvmat64.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</EnableMASM51Compatibility>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</EnableMASM51Compatibility>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</EnableMASM51Compatibility>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</EnableMASM51Compatibility>
-    </MASM>
-    <MASM Include="..\..\contrib\masmx64\inffasx64.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</EnableMASM51Compatibility>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</EnableMASM51Compatibility>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</EnableMASM51Compatibility>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</EnableMASM51Compatibility>
-    </MASM>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/projects/visualc6/README.txt b/libs/zlib/projects/visualc6/README.txt
deleted file mode 100644
index 3d0aef0a12..0000000000
--- a/libs/zlib/projects/visualc6/README.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Microsoft Developer Studio Project Files, Format Version 6.00 for zlib.
-
-Copyright (C) 2000-2004 Simon-Pierre Cadieux.
-Copyright (C) 2004 Cosmin Truta.
-For conditions of distribution and use, see copyright notice in zlib.h.
-
-
-This project builds the zlib binaries as follows:
-
-* Win32_DLL_Release\zlib1.dll       DLL build
-* Win32_DLL_Debug\zlib1d.dll        DLL build (debug version)
-* Win32_DLL_ASM_Release\zlib1.dll   DLL build using ASM code
-* Win32_DLL_ASM_Debug\zlib1d.dll    DLL build using ASM code (debug version)
-* Win32_LIB_Release\zlib.lib        static build
-* Win32_LIB_Debug\zlibd.lib         static build (debug version)
-* Win32_LIB_ASM_Release\zlib.lib    static build using ASM code
-* Win32_LIB_ASM_Debug\zlibd.lib     static build using ASM code (debug version)
-
-
-For more information regarding the DLL builds, please see the DLL FAQ
-in ..\..\win32\DLL_FAQ.txt.
-
-
-To build and test:
-
-1) On the main menu, select "File | Open Workspace".
-   Open "zlib.dsw".
-
-2) Select "Build | Set Active Configuration".
-   Choose the configuration you wish to build.
-
-3) Select "Build | Clean".
-
-4) Select "Build | Build ... (F7)".  Ignore warning messages about
-   not being able to find certain include files (e.g. alloc.h).
-
-5) If you built one of the sample programs (example or minigzip),
-   select "Build | Execute ... (Ctrl+F5)".
-
-
-To use:
-
-1) Select "Project | Settings (Alt+F7)".
-   Make note of the configuration names used in your project.
-   Usually, these names are "Win32 Release" and "Win32 Debug".
-
-2) In the Workspace window, select the "FileView" tab.
-   Right-click on the root item "Workspace '...'".
-   Select "Insert Project into Workspace".
-   Switch on the checkbox "Dependency of:", and select the name
-   of your project.  Open "zlib.dsp".
-
-3) Select "Build | Configurations".
-   For each configuration of your project:
-   3.1) Choose the zlib configuration you wish to use.
-   3.2) Click on "Add".
-   3.3) Set the new zlib configuration name to the name used by
-        the configuration from the current iteration.
-
-4) Select "Build | Set Active Configuration".
-   Choose the configuration you wish to build.
-
-5) Select "Build | Build ... (F7)".
-
-6) If you built an executable program, select
-   "Build | Execute ... (Ctrl+F5)".
-
-
-Note:
-
-To build the ASM-enabled code, you need Microsoft Assembler
-(ML.EXE).  You can get it by downloading and installing the
-latest Processor Pack for Visual C++ 6.0.
diff --git a/libs/zlib/projects/visualc6/example.dsp b/libs/zlib/projects/visualc6/example.dsp
deleted file mode 100644
index e072a37ff0..0000000000
--- a/libs/zlib/projects/visualc6/example.dsp
+++ /dev/null
@@ -1,278 +0,0 @@
-# Microsoft Developer Studio Project File - Name="example" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=example - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "example.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "example.mak" CFG="example - Win32 LIB Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "example - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "example - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "example - Win32 DLL Release"
-# Name "example - Win32 DLL Debug"
-# Name "example - Win32 DLL ASM Release"
-# Name "example - Win32 DLL ASM Debug"
-# Name "example - Win32 LIB Release"
-# Name "example - Win32 LIB Debug"
-# Name "example - Win32 LIB ASM Release"
-# Name "example - Win32 LIB ASM Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\example.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/libs/zlib/projects/visualc6/minigzip.dsp b/libs/zlib/projects/visualc6/minigzip.dsp
deleted file mode 100644
index f32024eaf5..0000000000
--- a/libs/zlib/projects/visualc6/minigzip.dsp
+++ /dev/null
@@ -1,278 +0,0 @@
-# Microsoft Developer Studio Project File - Name="minigzip" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=minigzip - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "minigzip.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "minigzip.mak" CFG="minigzip - Win32 LIB Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "minigzip - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "minigzip - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "minigzip - Win32 DLL Release"
-# Name "minigzip - Win32 DLL Debug"
-# Name "minigzip - Win32 DLL ASM Release"
-# Name "minigzip - Win32 DLL ASM Debug"
-# Name "minigzip - Win32 LIB Release"
-# Name "minigzip - Win32 LIB Debug"
-# Name "minigzip - Win32 LIB ASM Release"
-# Name "minigzip - Win32 LIB ASM Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\minigzip.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/libs/zlib/projects/visualc6/zlib.dsp b/libs/zlib/projects/visualc6/zlib.dsp
deleted file mode 100644
index ec69eae839..0000000000
--- a/libs/zlib/projects/visualc6/zlib.dsp
+++ /dev/null
@@ -1,283 +0,0 @@
-# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=zlib - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "zlib.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "zlib.mak" CFG="zlib - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "zlib - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "zlib - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "zlib - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "ASMV" /D "ASMINF" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "ASMV" /D "ASMINF" /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF 
-
-# Begin Target
-
-# Name "zlib - Win32 Release"
-# Name "zlib - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\adler32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\compress.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\crc32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\deflate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzclose.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzlib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzread.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzwrite.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\infback.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffast.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inflate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inftrees.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\trees.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\uncompr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\win32\zlib.def
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zutil.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\crc32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\deflate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzguts.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffast.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffixed.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inflate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inftrees.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\trees.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zutil.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\win32\zlib1.rc
-# End Source File
-# End Group
-# Begin Group "Assembler Files (Unsupported)"
-
-# PROP Default_Filter "asm;obj;c;cpp;cxx;h;hpp;hxx"
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\match686.asm
-
-!IF  "$(CFG)" == "zlib - Win32 Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Release
-InputPath=..\..\contrib\masmx86\match686.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Debug
-InputPath=..\..\contrib\masmx86\match686.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ENDIF 
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\inffas32.asm
-
-!IF  "$(CFG)" == "zlib - Win32 Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Release
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Debug
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ENDIF 
-
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\README.txt
-# End Source File
-# End Target
-# End Project
diff --git a/libs/zlib/projects/visualc6/zlib.dsw b/libs/zlib/projects/visualc6/zlib.dsw
deleted file mode 100644
index 3a771fce07..0000000000
--- a/libs/zlib/projects/visualc6/zlib.dsw
+++ /dev/null
@@ -1,59 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "example"=.\example.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "minigzip"=.\minigzip.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "zlib"=.\zlib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/libs/zlib/projects/visualc9/.gitignore b/libs/zlib/projects/visualc9/.gitignore
deleted file mode 100644
index 488a5428bc..0000000000
--- a/libs/zlib/projects/visualc9/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/Win32
-/x64
-/zlib.vcproj.*.*.user
diff --git a/libs/zlib/projects/visualc9/zlib.vcproj b/libs/zlib/projects/visualc9/zlib.vcproj
deleted file mode 100644
index cb1cb119db..0000000000
--- a/libs/zlib/projects/visualc9/zlib.vcproj
+++ /dev/null
@@ -1,1056 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="zlib"
-	ProjectGUID="{73A5729C-7323-41D4-AB48-8A03C9F81603}"
-	RootNamespace="zlib"
-	TargetFrameworkVersion="0"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-		<DefaultToolFile
-			FileName="masm.rules"
-		/>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;ASMV;ASMINF;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				AssemblerListingLocation="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ObjectFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ProgramDataBaseFileName="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-				CompileAs="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				AssemblerListingLocation="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ObjectFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ProgramDataBaseFileName="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-				CompileAs="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="/MP"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				PreprocessorDefinitions="WIN32;NDEBUG;ASMV;ASMINF;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				AssemblerListingLocation="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ObjectFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ProgramDataBaseFileName="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				CompileAs="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="/MP"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				AssemblerListingLocation="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ObjectFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ProgramDataBaseFileName="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				CompileAs="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			>
-			<File
-				RelativePath="..\..\adler32.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\compress.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\crc32.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\deflate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\gzclose.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\gzlib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\gzread.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\gzwrite.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\infback.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\inffast.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\inflate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\inftrees.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\trees.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\uncompr.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\win32\zlib.def"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\zutil.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			>
-			<File
-				RelativePath="..\..\crc32.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\deflate.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\gzguts.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\inffast.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\inffixed.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\inflate.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\inftrees.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\trees.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\zconf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\zlib.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\zutil.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-			<File
-				RelativePath="..\..\win32\zlib1.rc"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						PreprocessorDefinitions=""
-						AdditionalIncludeDirectories="\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						PreprocessorDefinitions=""
-						AdditionalIncludeDirectories="\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						PreprocessorDefinitions=""
-						AdditionalIncludeDirectories="\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						PreprocessorDefinitions=""
-						AdditionalIncludeDirectories="\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Assembler Files (Unsupported)"
-			Filter="asm;obj;c;cpp;cxx;h;hpp;hxx"
-			>
-			<Filter
-				Name="x86"
-				>
-				<File
-					RelativePath="..\..\contrib\masmx86\inffas32.asm"
-					>
-					<FileConfiguration
-						Name="Debug|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-				</File>
-				<File
-					RelativePath="..\..\contrib\masmx86\match686.asm"
-					>
-					<FileConfiguration
-						Name="Debug|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-				</File>
-			</Filter>
-			<Filter
-				Name="x64"
-				>
-				<File
-					RelativePath="..\..\contrib\masmx64\gvmat64.asm"
-					>
-					<FileConfiguration
-						Name="Debug|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Debug|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-							EnableMASM51Compatibility="true"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-							EnableMASM51Compatibility="true"
-						/>
-					</FileConfiguration>
-				</File>
-				<File
-					RelativePath="..\..\contrib\masmx64\inffas8664.c"
-					>
-					<FileConfiguration
-						Name="Debug|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-							AdditionalIncludeDirectories="../"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Debug|x64"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-							AdditionalIncludeDirectories="../.."
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-							AdditionalIncludeDirectories="../.."
-						/>
-					</FileConfiguration>
-				</File>
-				<File
-					RelativePath="..\..\contrib\masmx64\inffasx64.asm"
-					>
-					<FileConfiguration
-						Name="Debug|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Debug|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-							EnableMASM51Compatibility="true"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-							EnableMASM51Compatibility="true"
-						/>
-					</FileConfiguration>
-				</File>
-			</Filter>
-		</Filter>
-		<File
-			RelativePath="README.txt"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/qnx/package.qpg b/libs/zlib/qnx/package.qpg
index 31e8e90db4..4877e0ef01 100644
--- a/libs/zlib/qnx/package.qpg
+++ b/libs/zlib/qnx/package.qpg
@@ -25,10 +25,10 @@
       <QPG:Files>
          <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/>
          <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/>
-         <QPG:Add file="../libz.so.1.2.11" install="/opt/lib/" user="root:bin" permission="644"/>
-         <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.11"/>
-         <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.11"/>
-         <QPG:Add file="../libz.so.1.2.11" install="/opt/lib/" component="slib"/>
+         <QPG:Add file="../libz.so.1.3.1" install="/opt/lib/" user="root:bin" permission="644"/>
+         <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.3.1"/>
+         <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.3.1"/>
+         <QPG:Add file="../libz.so.1.3.1" install="/opt/lib/" component="slib"/>
       </QPG:Files>
 
       <QPG:PackageFilter>
@@ -63,7 +63,7 @@
             </QPM:ProductDescription>
 
             <QPM:ReleaseDescription>
-               <QPM:ReleaseVersion>1.2.11</QPM:ReleaseVersion>
+               <QPM:ReleaseVersion>1.3.1</QPM:ReleaseVersion>
                <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency>
                <QPM:ReleaseStability>Stable</QPM:ReleaseStability>
                <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor>
diff --git a/libs/zlib/test/example.c b/libs/zlib/test/example.c
index eee17ce7c1..c3521dd593 100644
--- a/libs/zlib/test/example.c
+++ b/libs/zlib/test/example.c
@@ -34,37 +34,14 @@ static z_const char hello[] = "hello, hello!";
 static const char dictionary[] = "hello";
 static uLong dictId;    /* Adler32 value of the dictionary */
 
-void test_deflate       OF((Byte *compr, uLong comprLen));
-void test_inflate       OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_large_deflate OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_large_inflate OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_flush         OF((Byte *compr, uLong *comprLen));
-void test_sync          OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_dict_deflate  OF((Byte *compr, uLong comprLen));
-void test_dict_inflate  OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-int  main               OF((int argc, char *argv[]));
-
-
 #ifdef Z_SOLO
 
-void *myalloc OF((void *, unsigned, unsigned));
-void myfree OF((void *, void *));
-
-void *myalloc(q, n, m)
-    void *q;
-    unsigned n, m;
-{
+static void *myalloc(void *q, unsigned n, unsigned m) {
     (void)q;
     return calloc(n, m);
 }
 
-void myfree(void *q, void *p)
-{
+static void myfree(void *q, void *p) {
     (void)q;
     free(p);
 }
@@ -77,18 +54,11 @@ static free_func zfree = myfree;
 static alloc_func zalloc = (alloc_func)0;
 static free_func zfree = (free_func)0;
 
-void test_compress      OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_gzio          OF((const char *fname,
-                            Byte *uncompr, uLong uncomprLen));
-
 /* ===========================================================================
  * Test compress() and uncompress()
  */
-void test_compress(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_compress(Byte *compr, uLong comprLen, Byte *uncompr,
+                   uLong uncomprLen) {
     int err;
     uLong len = (uLong)strlen(hello)+1;
 
@@ -111,11 +81,7 @@ void test_compress(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test read/write of .gz files
  */
-void test_gzio(fname, uncompr, uncomprLen)
-    const char *fname; /* compressed file name */
-    Byte *uncompr;
-    uLong uncomprLen;
-{
+static void test_gzio(const char *fname, Byte *uncompr, uLong uncomprLen) {
 #ifdef NO_GZCOMPRESS
     fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n");
 #else
@@ -197,10 +163,7 @@ void test_gzio(fname, uncompr, uncomprLen)
 /* ===========================================================================
  * Test deflate() with small buffers
  */
-void test_deflate(compr, comprLen)
-    Byte *compr;
-    uLong comprLen;
-{
+static void test_deflate(Byte *compr, uLong comprLen) {
     z_stream c_stream; /* compression stream */
     int err;
     uLong len = (uLong)strlen(hello)+1;
@@ -235,10 +198,8 @@ void test_deflate(compr, comprLen)
 /* ===========================================================================
  * Test inflate() with small buffers
  */
-void test_inflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_inflate(Byte *compr, uLong comprLen, Byte *uncompr,
+                  uLong uncomprLen) {
     int err;
     z_stream d_stream; /* decompression stream */
 
@@ -276,10 +237,8 @@ void test_inflate(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test deflate() with large buffers and dynamic change of compression level
  */
-void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_large_deflate(Byte *compr, uLong comprLen, Byte *uncompr,
+                        uLong uncomprLen) {
     z_stream c_stream; /* compression stream */
     int err;
 
@@ -308,7 +267,7 @@ void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
     /* Feed in already compressed data and switch to no compression: */
     deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY);
     c_stream.next_in = compr;
-    c_stream.avail_in = (uInt)comprLen/2;
+    c_stream.avail_in = (uInt)uncomprLen/2;
     err = deflate(&c_stream, Z_NO_FLUSH);
     CHECK_ERR(err, "deflate");
 
@@ -331,10 +290,8 @@ void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test inflate() with large buffers
  */
-void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_large_inflate(Byte *compr, uLong comprLen, Byte *uncompr,
+                        uLong uncomprLen) {
     int err;
     z_stream d_stream; /* decompression stream */
 
@@ -361,7 +318,7 @@ void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
     err = inflateEnd(&d_stream);
     CHECK_ERR(err, "inflateEnd");
 
-    if (d_stream.total_out != 2*uncomprLen + comprLen/2) {
+    if (d_stream.total_out != 2*uncomprLen + uncomprLen/2) {
         fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out);
         exit(1);
     } else {
@@ -372,10 +329,7 @@ void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test deflate() with full flush
  */
-void test_flush(compr, comprLen)
-    Byte *compr;
-    uLong *comprLen;
-{
+static void test_flush(Byte *compr, uLong *comprLen) {
     z_stream c_stream; /* compression stream */
     int err;
     uInt len = (uInt)strlen(hello)+1;
@@ -410,10 +364,8 @@ void test_flush(compr, comprLen)
 /* ===========================================================================
  * Test inflateSync()
  */
-void test_sync(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_sync(Byte *compr, uLong comprLen, Byte *uncompr,
+                      uLong uncomprLen) {
     int err;
     z_stream d_stream; /* decompression stream */
 
@@ -440,9 +392,8 @@ void test_sync(compr, comprLen, uncompr, uncomprLen)
     CHECK_ERR(err, "inflateSync");
 
     err = inflate(&d_stream, Z_FINISH);
-    if (err != Z_DATA_ERROR) {
-        fprintf(stderr, "inflate should report DATA_ERROR\n");
-        /* Because of incorrect adler32 */
+    if (err != Z_STREAM_END) {
+        fprintf(stderr, "inflate should report Z_STREAM_END\n");
         exit(1);
     }
     err = inflateEnd(&d_stream);
@@ -454,10 +405,7 @@ void test_sync(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test deflate() with preset dictionary
  */
-void test_dict_deflate(compr, comprLen)
-    Byte *compr;
-    uLong comprLen;
-{
+static void test_dict_deflate(Byte *compr, uLong comprLen) {
     z_stream c_stream; /* compression stream */
     int err;
 
@@ -491,10 +439,8 @@ void test_dict_deflate(compr, comprLen)
 /* ===========================================================================
  * Test inflate() with a preset dictionary
  */
-void test_dict_inflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_dict_inflate(Byte *compr, uLong comprLen, Byte *uncompr,
+                       uLong uncomprLen) {
     int err;
     z_stream d_stream; /* decompression stream */
 
@@ -542,13 +488,10 @@ void test_dict_inflate(compr, comprLen, uncompr, uncomprLen)
  * Usage:  example [output.gz  [input.gz]]
  */
 
-int main(argc, argv)
-    int argc;
-    char *argv[];
-{
+int main(int argc, char *argv[]) {
     Byte *compr, *uncompr;
-    uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */
-    uLong uncomprLen = comprLen;
+    uLong uncomprLen = 20000;
+    uLong comprLen = 3 * uncomprLen;
     static const char* myVersion = ZLIB_VERSION;
 
     if (zlibVersion()[0] != myVersion[0]) {
@@ -556,7 +499,8 @@ int main(argc, argv)
         exit(1);
 
     } else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) {
-        fprintf(stderr, "warning: different zlib version\n");
+        fprintf(stderr, "warning: different zlib version linked: %s\n",
+                zlibVersion());
     }
 
     printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n",
@@ -590,7 +534,7 @@ int main(argc, argv)
 
     test_flush(compr, &comprLen);
     test_sync(compr, comprLen, uncompr, uncomprLen);
-    comprLen = uncomprLen;
+    comprLen = 3 * uncomprLen;
 
     test_dict_deflate(compr, comprLen);
     test_dict_inflate(compr, comprLen, uncompr, uncomprLen);
diff --git a/libs/zlib/test/infcover.c b/libs/zlib/test/infcover.c
index 2be01646ce..8912c403dd 100644
--- a/libs/zlib/test/infcover.c
+++ b/libs/zlib/test/infcover.c
@@ -373,7 +373,7 @@ local void cover_support(void)
     mem_setup(&strm);
     strm.avail_in = 0;
     strm.next_in = Z_NULL;
-    ret = inflateInit_(&strm, ZLIB_VERSION - 1, (int)sizeof(z_stream));
+    ret = inflateInit_(&strm, "!", (int)sizeof(z_stream));
                                                 assert(ret == Z_VERSION_ERROR);
     mem_done(&strm, "wrong version");
 
@@ -462,7 +462,8 @@ local unsigned pull(void *desc, unsigned char **buf)
 
 local int push(void *desc, unsigned char *buf, unsigned len)
 {
-    buf += len;
+    (void)buf;
+    (void)len;
     return desc != Z_NULL;      /* force error if desc not null */
 }
 
diff --git a/libs/zlib/test/minigzip.c b/libs/zlib/test/minigzip.c
index e22fb08c0a..134e10e6c3 100644
--- a/libs/zlib/test/minigzip.c
+++ b/libs/zlib/test/minigzip.c
@@ -59,7 +59,7 @@
 
 #if !defined(Z_HAVE_UNISTD_H) && !defined(_LARGEFILE64_SOURCE)
 #ifndef WIN32 /* unlink already in stdio.h for WIN32 */
-  extern int unlink OF((const char *));
+  extern int unlink(const char *);
 #endif
 #endif
 
@@ -149,20 +149,12 @@ static void pwinerror (s)
 #  include <unistd.h>       /* for unlink() */
 #endif
 
-void *myalloc OF((void *, unsigned, unsigned));
-void myfree OF((void *, void *));
-
-void *myalloc(q, n, m)
-    void *q;
-    unsigned n, m;
-{
+static void *myalloc(void *q, unsigned n, unsigned m) {
     (void)q;
     return calloc(n, m);
 }
 
-void myfree(q, p)
-    void *q, *p;
-{
+static void myfree(void *q, void *p) {
     (void)q;
     free(p);
 }
@@ -175,29 +167,7 @@ typedef struct gzFile_s {
     z_stream strm;
 } *gzFile;
 
-gzFile gzopen OF((const char *, const char *));
-gzFile gzdopen OF((int, const char *));
-gzFile gz_open OF((const char *, int, const char *));
-
-gzFile gzopen(path, mode)
-const char *path;
-const char *mode;
-{
-    return gz_open(path, -1, mode);
-}
-
-gzFile gzdopen(fd, mode)
-int fd;
-const char *mode;
-{
-    return gz_open(NULL, fd, mode);
-}
-
-gzFile gz_open(path, fd, mode)
-    const char *path;
-    int fd;
-    const char *mode;
-{
+static gzFile gz_open(const char *path, int fd, const char *mode) {
     gzFile gz;
     int ret;
 
@@ -231,13 +201,15 @@ gzFile gz_open(path, fd, mode)
     return gz;
 }
 
-int gzwrite OF((gzFile, const void *, unsigned));
+static gzFile gzopen(const char *path, const char *mode) {
+    return gz_open(path, -1, mode);
+}
 
-int gzwrite(gz, buf, len)
-    gzFile gz;
-    const void *buf;
-    unsigned len;
-{
+static gzFile gzdopen(int fd, const char *mode) {
+    return gz_open(NULL, fd, mode);
+}
+
+static int gzwrite(gzFile gz, const void *buf, unsigned len) {
     z_stream *strm;
     unsigned char out[BUFLEN];
 
@@ -255,13 +227,7 @@ int gzwrite(gz, buf, len)
     return len;
 }
 
-int gzread OF((gzFile, void *, unsigned));
-
-int gzread(gz, buf, len)
-    gzFile gz;
-    void *buf;
-    unsigned len;
-{
+static int gzread(gzFile gz, void *buf, unsigned len) {
     int ret;
     unsigned got;
     unsigned char in[1];
@@ -292,11 +258,7 @@ int gzread(gz, buf, len)
     return len - strm->avail_out;
 }
 
-int gzclose OF((gzFile));
-
-int gzclose(gz)
-    gzFile gz;
-{
+static int gzclose(gzFile gz) {
     z_stream *strm;
     unsigned char out[BUFLEN];
 
@@ -321,12 +283,7 @@ int gzclose(gz)
     return Z_OK;
 }
 
-const char *gzerror OF((gzFile, int *));
-
-const char *gzerror(gz, err)
-    gzFile gz;
-    int *err;
-{
+static const char *gzerror(gzFile gz, int *err) {
     *err = gz->err;
     return gz->msg;
 }
@@ -335,67 +292,20 @@ const char *gzerror(gz, err)
 
 static char *prog;
 
-void error            OF((const char *msg));
-void gz_compress      OF((FILE   *in, gzFile out));
-#ifdef USE_MMAP
-int  gz_compress_mmap OF((FILE   *in, gzFile out));
-#endif
-void gz_uncompress    OF((gzFile in, FILE   *out));
-void file_compress    OF((char  *file, char *mode));
-void file_uncompress  OF((char  *file));
-int  main             OF((int argc, char *argv[]));
-
 /* ===========================================================================
  * Display error message and exit
  */
-void error(msg)
-    const char *msg;
-{
+static void error(const char *msg) {
     fprintf(stderr, "%s: %s\n", prog, msg);
     exit(1);
 }
 
-/* ===========================================================================
- * Compress input to output then close both files.
- */
-
-void gz_compress(in, out)
-    FILE   *in;
-    gzFile out;
-{
-    local char buf[BUFLEN];
-    int len;
-    int err;
-
-#ifdef USE_MMAP
-    /* Try first compressing with mmap. If mmap fails (minigzip used in a
-     * pipe), use the normal fread loop.
-     */
-    if (gz_compress_mmap(in, out) == Z_OK) return;
-#endif
-    for (;;) {
-        len = (int)fread(buf, 1, sizeof(buf), in);
-        if (ferror(in)) {
-            perror("fread");
-            exit(1);
-        }
-        if (len == 0) break;
-
-        if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err));
-    }
-    fclose(in);
-    if (gzclose(out) != Z_OK) error("failed gzclose");
-}
-
 #ifdef USE_MMAP /* MMAP version, Miguel Albrecht <malbrech@eso.org> */
 
 /* Try compressing the input file at once using mmap. Return Z_OK if
- * if success, Z_ERRNO otherwise.
+ * success, Z_ERRNO otherwise.
  */
-int gz_compress_mmap(in, out)
-    FILE   *in;
-    gzFile out;
-{
+static int gz_compress_mmap(FILE *in, gzFile out) {
     int len;
     int err;
     int ifd = fileno(in);
@@ -424,13 +334,39 @@ int gz_compress_mmap(in, out)
 }
 #endif /* USE_MMAP */
 
+/* ===========================================================================
+ * Compress input to output then close both files.
+ */
+
+static void gz_compress(FILE *in, gzFile out) {
+    local char buf[BUFLEN];
+    int len;
+    int err;
+
+#ifdef USE_MMAP
+    /* Try first compressing with mmap. If mmap fails (minigzip used in a
+     * pipe), use the normal fread loop.
+     */
+    if (gz_compress_mmap(in, out) == Z_OK) return;
+#endif
+    for (;;) {
+        len = (int)fread(buf, 1, sizeof(buf), in);
+        if (ferror(in)) {
+            perror("fread");
+            exit(1);
+        }
+        if (len == 0) break;
+
+        if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err));
+    }
+    fclose(in);
+    if (gzclose(out) != Z_OK) error("failed gzclose");
+}
+
 /* ===========================================================================
  * Uncompress input to output then close both files.
  */
-void gz_uncompress(in, out)
-    gzFile in;
-    FILE   *out;
-{
+static void gz_uncompress(gzFile in, FILE *out) {
     local char buf[BUFLEN];
     int len;
     int err;
@@ -454,10 +390,7 @@ void gz_uncompress(in, out)
  * Compress the given file: create a corresponding .gz file and remove the
  * original.
  */
-void file_compress(file, mode)
-    char  *file;
-    char  *mode;
-{
+static void file_compress(char *file, char *mode) {
     local char outfile[MAX_NAME_LEN];
     FILE  *in;
     gzFile out;
@@ -493,14 +426,12 @@ void file_compress(file, mode)
 /* ===========================================================================
  * Uncompress the given file and remove the original.
  */
-void file_uncompress(file)
-    char  *file;
-{
+static void file_uncompress(char *file) {
     local char buf[MAX_NAME_LEN];
     char *infile, *outfile;
     FILE  *out;
     gzFile in;
-    unsigned len = strlen(file);
+    z_size_t len = strlen(file);
 
     if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) {
         fprintf(stderr, "%s: filename too long\n", prog);
@@ -553,10 +484,7 @@ void file_uncompress(file)
  *   -1 to -9 : compression level
  */
 
-int main(argc, argv)
-    int argc;
-    char *argv[];
-{
+int main(int argc, char *argv[]) {
     int copyout = 0;
     int uncompr = 0;
     gzFile file;
diff --git a/libs/zlib/treebuild.xml b/libs/zlib/treebuild.xml
index fd75525f99..930b00be4a 100644
--- a/libs/zlib/treebuild.xml
+++ b/libs/zlib/treebuild.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" ?>
-<package name="zlib" version="1.2.11">
-    <library name="zlib" dlversion="1.2.11" dlname="z">
+<package name="zlib" version="1.3.1">
+    <library name="zlib" dlversion="1.3.1" dlname="z">
 	<property name="description"> zip compression library </property>
 	<property name="include-target-dir" value="$(@PACKAGE/install-includedir)" />
 
diff --git a/libs/zlib/trees.c b/libs/zlib/trees.c
index 50cf4b4571..6a523ef34e 100644
--- a/libs/zlib/trees.c
+++ b/libs/zlib/trees.c
@@ -1,5 +1,5 @@
 /* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-2017 Jean-loup Gailly
+ * Copyright (C) 1995-2024 Jean-loup Gailly
  * detect_data_type() function provided freely by Cosmin Truta, 2006
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
@@ -122,39 +122,116 @@ struct static_tree_desc_s {
     int     max_length;          /* max bit length for the codes */
 };
 
-local const static_tree_desc  static_l_desc =
+#ifdef NO_INIT_GLOBAL_POINTERS
+#  define TCONST
+#else
+#  define TCONST const
+#endif
+
+local TCONST static_tree_desc static_l_desc =
 {static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS};
 
-local const static_tree_desc  static_d_desc =
+local TCONST static_tree_desc static_d_desc =
 {static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS};
 
-local const static_tree_desc  static_bl_desc =
+local TCONST static_tree_desc static_bl_desc =
 {(const ct_data *)0, extra_blbits, 0,   BL_CODES, MAX_BL_BITS};
 
 /* ===========================================================================
- * Local (static) routines in this file.
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+#define put_short(s, w) { \
+    put_byte(s, (uch)((w) & 0xff)); \
+    put_byte(s, (uch)((ush)(w) >> 8)); \
+}
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
  */
+local unsigned bi_reverse(unsigned code, int len) {
+    register unsigned res = 0;
+    do {
+        res |= code & 1;
+        code >>= 1, res <<= 1;
+    } while (--len > 0);
+    return res >> 1;
+}
 
-local void tr_static_init OF((void));
-local void init_block     OF((deflate_state *s));
-local void pqdownheap     OF((deflate_state *s, ct_data *tree, int k));
-local void gen_bitlen     OF((deflate_state *s, tree_desc *desc));
-local void gen_codes      OF((ct_data *tree, int max_code, ushf *bl_count));
-local void build_tree     OF((deflate_state *s, tree_desc *desc));
-local void scan_tree      OF((deflate_state *s, ct_data *tree, int max_code));
-local void send_tree      OF((deflate_state *s, ct_data *tree, int max_code));
-local int  build_bl_tree  OF((deflate_state *s));
-local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
-                              int blcodes));
-local void compress_block OF((deflate_state *s, const ct_data *ltree,
-                              const ct_data *dtree));
-local int  detect_data_type OF((deflate_state *s));
-local unsigned bi_reverse OF((unsigned value, int length));
-local void bi_windup      OF((deflate_state *s));
-local void bi_flush       OF((deflate_state *s));
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+local void bi_flush(deflate_state *s) {
+    if (s->bi_valid == 16) {
+        put_short(s, s->bi_buf);
+        s->bi_buf = 0;
+        s->bi_valid = 0;
+    } else if (s->bi_valid >= 8) {
+        put_byte(s, (Byte)s->bi_buf);
+        s->bi_buf >>= 8;
+        s->bi_valid -= 8;
+    }
+}
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+local void bi_windup(deflate_state *s) {
+    if (s->bi_valid > 8) {
+        put_short(s, s->bi_buf);
+    } else if (s->bi_valid > 0) {
+        put_byte(s, (Byte)s->bi_buf);
+    }
+    s->bi_buf = 0;
+    s->bi_valid = 0;
+#ifdef ZLIB_DEBUG
+    s->bits_sent = (s->bits_sent + 7) & ~7;
+#endif
+}
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ *     zero code length.
+ */
+local void gen_codes(ct_data *tree, int max_code, ushf *bl_count) {
+    ush next_code[MAX_BITS+1]; /* next code value for each bit length */
+    unsigned code = 0;         /* running code value */
+    int bits;                  /* bit index */
+    int n;                     /* code index */
+
+    /* The distribution counts are first used to generate the code values
+     * without bit reversal.
+     */
+    for (bits = 1; bits <= MAX_BITS; bits++) {
+        code = (code + bl_count[bits - 1]) << 1;
+        next_code[bits] = (ush)code;
+    }
+    /* Check that the bit counts in bl_count are consistent. The last code
+     * must be all ones.
+     */
+    Assert (code + bl_count[MAX_BITS] - 1 == (1 << MAX_BITS) - 1,
+            "inconsistent bit counts");
+    Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
+
+    for (n = 0;  n <= max_code; n++) {
+        int len = tree[n].Len;
+        if (len == 0) continue;
+        /* Now reverse the bits */
+        tree[n].Code = (ush)bi_reverse(next_code[len]++, len);
+
+        Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
+            n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len] - 1));
+    }
+}
 
 #ifdef GEN_TREES_H
-local void gen_trees_header OF((void));
+local void gen_trees_header(void);
 #endif
 
 #ifndef ZLIB_DEBUG
@@ -167,33 +244,18 @@ local void gen_trees_header OF((void));
        send_bits(s, tree[c].Code, tree[c].Len); }
 #endif
 
-/* ===========================================================================
- * Output a short LSB first on the stream.
- * IN assertion: there is enough room in pendingBuf.
- */
-#define put_short(s, w) { \
-    put_byte(s, (uch)((w) & 0xff)); \
-    put_byte(s, (uch)((ush)(w) >> 8)); \
-}
-
 /* ===========================================================================
  * Send a value on a given number of bits.
  * IN assertion: length <= 16 and value fits in length bits.
  */
 #ifdef ZLIB_DEBUG
-local void send_bits      OF((deflate_state *s, int value, int length));
-
-local void send_bits(s, value, length)
-    deflate_state *s;
-    int value;  /* value to send */
-    int length; /* number of bits */
-{
+local void send_bits(deflate_state *s, int value, int length) {
     Tracevv((stderr," l %2d v %4x ", length, value));
     Assert(length > 0 && length <= 15, "invalid length");
     s->bits_sent += (ulg)length;
 
     /* If not enough room in bi_buf, use (valid) bits from bi_buf and
-     * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid))
+     * (16 - bi_valid) bits from value, leaving (width - (16 - bi_valid))
      * unused bits in value.
      */
     if (s->bi_valid > (int)Buf_size - length) {
@@ -229,8 +291,7 @@ local void send_bits(s, value, length)
 /* ===========================================================================
  * Initialize the various 'constant' tables.
  */
-local void tr_static_init()
-{
+local void tr_static_init(void) {
 #if defined(GEN_TREES_H) || !defined(STDC)
     static int static_init_done = 0;
     int n;        /* iterates over tree elements */
@@ -256,7 +317,7 @@ local void tr_static_init()
     length = 0;
     for (code = 0; code < LENGTH_CODES-1; code++) {
         base_length[code] = length;
-        for (n = 0; n < (1<<extra_lbits[code]); n++) {
+        for (n = 0; n < (1 << extra_lbits[code]); n++) {
             _length_code[length++] = (uch)code;
         }
     }
@@ -265,13 +326,13 @@ local void tr_static_init()
      * in two different ways: code 284 + 5 bits or code 285, so we
      * overwrite length_code[255] to use the best encoding:
      */
-    _length_code[length-1] = (uch)code;
+    _length_code[length - 1] = (uch)code;
 
     /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
     dist = 0;
     for (code = 0 ; code < 16; code++) {
         base_dist[code] = dist;
-        for (n = 0; n < (1<<extra_dbits[code]); n++) {
+        for (n = 0; n < (1 << extra_dbits[code]); n++) {
             _dist_code[dist++] = (uch)code;
         }
     }
@@ -279,11 +340,11 @@ local void tr_static_init()
     dist >>= 7; /* from now on, all distances are divided by 128 */
     for ( ; code < D_CODES; code++) {
         base_dist[code] = dist << 7;
-        for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
+        for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
             _dist_code[256 + dist++] = (uch)code;
         }
     }
-    Assert (dist == 256, "tr_static_init: 256+dist != 512");
+    Assert (dist == 256, "tr_static_init: 256 + dist != 512");
 
     /* Construct the codes of the static literal tree */
     for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
@@ -312,7 +373,7 @@ local void tr_static_init()
 }
 
 /* ===========================================================================
- * Genererate the file trees.h describing the static trees.
+ * Generate the file trees.h describing the static trees.
  */
 #ifdef GEN_TREES_H
 #  ifndef ZLIB_DEBUG
@@ -321,10 +382,9 @@ local void tr_static_init()
 
 #  define SEPARATOR(i, last, width) \
       ((i) == (last)? "\n};\n\n" :    \
-       ((i) % (width) == (width)-1 ? ",\n" : ", "))
+       ((i) % (width) == (width) - 1 ? ",\n" : ", "))
 
-void gen_trees_header()
-{
+void gen_trees_header(void) {
     FILE *header = fopen("trees.h", "w");
     int i;
 
@@ -373,12 +433,26 @@ void gen_trees_header()
 }
 #endif /* GEN_TREES_H */
 
+/* ===========================================================================
+ * Initialize a new block.
+ */
+local void init_block(deflate_state *s) {
+    int n; /* iterates over tree elements */
+
+    /* Initialize the trees. */
+    for (n = 0; n < L_CODES;  n++) s->dyn_ltree[n].Freq = 0;
+    for (n = 0; n < D_CODES;  n++) s->dyn_dtree[n].Freq = 0;
+    for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
+
+    s->dyn_ltree[END_BLOCK].Freq = 1;
+    s->opt_len = s->static_len = 0L;
+    s->sym_next = s->matches = 0;
+}
+
 /* ===========================================================================
  * Initialize the tree data structures for a new zlib stream.
  */
-void ZLIB_INTERNAL _tr_init(s)
-    deflate_state *s;
-{
+void ZLIB_INTERNAL _tr_init(deflate_state *s) {
     tr_static_init();
 
     s->l_desc.dyn_tree = s->dyn_ltree;
@@ -401,24 +475,6 @@ void ZLIB_INTERNAL _tr_init(s)
     init_block(s);
 }
 
-/* ===========================================================================
- * Initialize a new block.
- */
-local void init_block(s)
-    deflate_state *s;
-{
-    int n; /* iterates over tree elements */
-
-    /* Initialize the trees. */
-    for (n = 0; n < L_CODES;  n++) s->dyn_ltree[n].Freq = 0;
-    for (n = 0; n < D_CODES;  n++) s->dyn_dtree[n].Freq = 0;
-    for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
-
-    s->dyn_ltree[END_BLOCK].Freq = 1;
-    s->opt_len = s->static_len = 0L;
-    s->last_lit = s->matches = 0;
-}
-
 #define SMALLEST 1
 /* Index within the heap array of least frequent node in the Huffman tree */
 
@@ -448,17 +504,13 @@ local void init_block(s)
  * when the heap property is re-established (each father smaller than its
  * two sons).
  */
-local void pqdownheap(s, tree, k)
-    deflate_state *s;
-    ct_data *tree;  /* the tree to restore */
-    int k;               /* node to move down */
-{
+local void pqdownheap(deflate_state *s, ct_data *tree, int k) {
     int v = s->heap[k];
     int j = k << 1;  /* left son of k */
     while (j <= s->heap_len) {
         /* Set j to the smallest of the two sons: */
         if (j < s->heap_len &&
-            smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {
+            smaller(tree, s->heap[j + 1], s->heap[j], s->depth)) {
             j++;
         }
         /* Exit if v is smaller than both sons */
@@ -483,10 +535,7 @@ local void pqdownheap(s, tree, k)
  *     The length opt_len is updated; static_len is also updated if stree is
  *     not null.
  */
-local void gen_bitlen(s, desc)
-    deflate_state *s;
-    tree_desc *desc;    /* the tree descriptor */
-{
+local void gen_bitlen(deflate_state *s, tree_desc *desc) {
     ct_data *tree        = desc->dyn_tree;
     int max_code         = desc->max_code;
     const ct_data *stree = desc->stat_desc->static_tree;
@@ -507,7 +556,7 @@ local void gen_bitlen(s, desc)
      */
     tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */
 
-    for (h = s->heap_max+1; h < HEAP_SIZE; h++) {
+    for (h = s->heap_max + 1; h < HEAP_SIZE; h++) {
         n = s->heap[h];
         bits = tree[tree[n].Dad].Len + 1;
         if (bits > max_length) bits = max_length, overflow++;
@@ -518,7 +567,7 @@ local void gen_bitlen(s, desc)
 
         s->bl_count[bits]++;
         xbits = 0;
-        if (n >= base) xbits = extra[n-base];
+        if (n >= base) xbits = extra[n - base];
         f = tree[n].Freq;
         s->opt_len += (ulg)f * (unsigned)(bits + xbits);
         if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits);
@@ -530,10 +579,10 @@ local void gen_bitlen(s, desc)
 
     /* Find the first bit length which could increase: */
     do {
-        bits = max_length-1;
+        bits = max_length - 1;
         while (s->bl_count[bits] == 0) bits--;
-        s->bl_count[bits]--;      /* move one leaf down the tree */
-        s->bl_count[bits+1] += 2; /* move one overflow item as its brother */
+        s->bl_count[bits]--;        /* move one leaf down the tree */
+        s->bl_count[bits + 1] += 2; /* move one overflow item as its brother */
         s->bl_count[max_length]--;
         /* The brother of the overflow item also moves one step up,
          * but this does not affect bl_count[max_length]
@@ -561,48 +610,9 @@ local void gen_bitlen(s, desc)
     }
 }
 
-/* ===========================================================================
- * Generate the codes for a given tree and bit counts (which need not be
- * optimal).
- * IN assertion: the array bl_count contains the bit length statistics for
- * the given tree and the field len is set for all tree elements.
- * OUT assertion: the field code is set for all tree elements of non
- *     zero code length.
- */
-local void gen_codes (tree, max_code, bl_count)
-    ct_data *tree;             /* the tree to decorate */
-    int max_code;              /* largest code with non zero frequency */
-    ushf *bl_count;            /* number of codes at each bit length */
-{
-    ush next_code[MAX_BITS+1]; /* next code value for each bit length */
-    unsigned code = 0;         /* running code value */
-    int bits;                  /* bit index */
-    int n;                     /* code index */
-
-    /* The distribution counts are first used to generate the code values
-     * without bit reversal.
-     */
-    for (bits = 1; bits <= MAX_BITS; bits++) {
-        code = (code + bl_count[bits-1]) << 1;
-        next_code[bits] = (ush)code;
-    }
-    /* Check that the bit counts in bl_count are consistent. The last code
-     * must be all ones.
-     */
-    Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
-            "inconsistent bit counts");
-    Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
-
-    for (n = 0;  n <= max_code; n++) {
-        int len = tree[n].Len;
-        if (len == 0) continue;
-        /* Now reverse the bits */
-        tree[n].Code = (ush)bi_reverse(next_code[len]++, len);
-
-        Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
-             n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
-    }
-}
+#ifdef DUMP_BL_TREE
+#  include <stdio.h>
+#endif
 
 /* ===========================================================================
  * Construct one Huffman tree and assigns the code bit strings and lengths.
@@ -612,10 +622,7 @@ local void gen_codes (tree, max_code, bl_count)
  *     and corresponding code. The length opt_len is updated; static_len is
  *     also updated if stree is not null. The field max_code is set.
  */
-local void build_tree(s, desc)
-    deflate_state *s;
-    tree_desc *desc; /* the tree descriptor */
-{
+local void build_tree(deflate_state *s, tree_desc *desc) {
     ct_data *tree         = desc->dyn_tree;
     const ct_data *stree  = desc->stat_desc->static_tree;
     int elems             = desc->stat_desc->elems;
@@ -624,7 +631,7 @@ local void build_tree(s, desc)
     int node;          /* new node being created */
 
     /* Construct the initial heap, with least frequent element in
-     * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+     * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n + 1].
      * heap[0] is not used.
      */
     s->heap_len = 0, s->heap_max = HEAP_SIZE;
@@ -652,7 +659,7 @@ local void build_tree(s, desc)
     }
     desc->max_code = max_code;
 
-    /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+    /* The elements heap[heap_len/2 + 1 .. heap_len] are leaves of the tree,
      * establish sub-heaps of increasing lengths:
      */
     for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);
@@ -700,11 +707,7 @@ local void build_tree(s, desc)
  * Scan a literal or distance tree to determine the frequencies of the codes
  * in the bit length tree.
  */
-local void scan_tree (s, tree, max_code)
-    deflate_state *s;
-    ct_data *tree;   /* the tree to be scanned */
-    int max_code;    /* and its largest code of non zero frequency */
-{
+local void scan_tree(deflate_state *s, ct_data *tree, int max_code) {
     int n;                     /* iterates over all tree elements */
     int prevlen = -1;          /* last emitted length */
     int curlen;                /* length of current code */
@@ -714,10 +717,10 @@ local void scan_tree (s, tree, max_code)
     int min_count = 4;         /* min repeat count */
 
     if (nextlen == 0) max_count = 138, min_count = 3;
-    tree[max_code+1].Len = (ush)0xffff; /* guard */
+    tree[max_code + 1].Len = (ush)0xffff; /* guard */
 
     for (n = 0; n <= max_code; n++) {
-        curlen = nextlen; nextlen = tree[n+1].Len;
+        curlen = nextlen; nextlen = tree[n + 1].Len;
         if (++count < max_count && curlen == nextlen) {
             continue;
         } else if (count < min_count) {
@@ -745,11 +748,7 @@ local void scan_tree (s, tree, max_code)
  * Send a literal or distance tree in compressed form, using the codes in
  * bl_tree.
  */
-local void send_tree (s, tree, max_code)
-    deflate_state *s;
-    ct_data *tree; /* the tree to be scanned */
-    int max_code;       /* and its largest code of non zero frequency */
-{
+local void send_tree(deflate_state *s, ct_data *tree, int max_code) {
     int n;                     /* iterates over all tree elements */
     int prevlen = -1;          /* last emitted length */
     int curlen;                /* length of current code */
@@ -758,11 +757,11 @@ local void send_tree (s, tree, max_code)
     int max_count = 7;         /* max repeat count */
     int min_count = 4;         /* min repeat count */
 
-    /* tree[max_code+1].Len = -1; */  /* guard already set */
+    /* tree[max_code + 1].Len = -1; */  /* guard already set */
     if (nextlen == 0) max_count = 138, min_count = 3;
 
     for (n = 0; n <= max_code; n++) {
-        curlen = nextlen; nextlen = tree[n+1].Len;
+        curlen = nextlen; nextlen = tree[n + 1].Len;
         if (++count < max_count && curlen == nextlen) {
             continue;
         } else if (count < min_count) {
@@ -773,13 +772,13 @@ local void send_tree (s, tree, max_code)
                 send_code(s, curlen, s->bl_tree); count--;
             }
             Assert(count >= 3 && count <= 6, " 3_6?");
-            send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);
+            send_code(s, REP_3_6, s->bl_tree); send_bits(s, count - 3, 2);
 
         } else if (count <= 10) {
-            send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);
+            send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count - 3, 3);
 
         } else {
-            send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
+            send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count - 11, 7);
         }
         count = 0; prevlen = curlen;
         if (nextlen == 0) {
@@ -796,9 +795,7 @@ local void send_tree (s, tree, max_code)
  * Construct the Huffman tree for the bit lengths and return the index in
  * bl_order of the last bit length code to send.
  */
-local int build_bl_tree(s)
-    deflate_state *s;
-{
+local int build_bl_tree(deflate_state *s) {
     int max_blindex;  /* index of last bit length code of non zero freq */
 
     /* Determine the bit length frequencies for literal and distance trees */
@@ -807,8 +804,8 @@ local int build_bl_tree(s)
 
     /* Build the bit length tree: */
     build_tree(s, (tree_desc *)(&(s->bl_desc)));
-    /* opt_len now includes the length of the tree representations, except
-     * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+    /* opt_len now includes the length of the tree representations, except the
+     * lengths of the bit lengths codes and the 5 + 5 + 4 bits for the counts.
      */
 
     /* Determine the number of bit length codes to send. The pkzip format
@@ -819,7 +816,7 @@ local int build_bl_tree(s)
         if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
     }
     /* Update opt_len to include the bit length tree and counts */
-    s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4;
+    s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4;
     Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
             s->opt_len, s->static_len));
 
@@ -831,61 +828,54 @@ local int build_bl_tree(s)
  * lengths of the bit length codes, the literal tree and the distance tree.
  * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
  */
-local void send_all_trees(s, lcodes, dcodes, blcodes)
-    deflate_state *s;
-    int lcodes, dcodes, blcodes; /* number of codes for each tree */
-{
+local void send_all_trees(deflate_state *s, int lcodes, int dcodes,
+                          int blcodes) {
     int rank;                    /* index in bl_order */
 
     Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
     Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
             "too many codes");
     Tracev((stderr, "\nbl counts: "));
-    send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
-    send_bits(s, dcodes-1,   5);
-    send_bits(s, blcodes-4,  4); /* not -3 as stated in appnote.txt */
+    send_bits(s, lcodes - 257, 5);  /* not +255 as stated in appnote.txt */
+    send_bits(s, dcodes - 1,   5);
+    send_bits(s, blcodes - 4,  4);  /* not -3 as stated in appnote.txt */
     for (rank = 0; rank < blcodes; rank++) {
         Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
         send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);
     }
     Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
 
-    send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */
+    send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1);  /* literal tree */
     Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
 
-    send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */
+    send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1);  /* distance tree */
     Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
 }
 
 /* ===========================================================================
  * Send a stored block
  */
-void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
-    deflate_state *s;
-    charf *buf;       /* input block */
-    ulg stored_len;   /* length of input block */
-    int last;         /* one if this is the last block for a file */
-{
-    send_bits(s, (STORED_BLOCK<<1)+last, 3);    /* send block type */
+void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf,
+                                    ulg stored_len, int last) {
+    send_bits(s, (STORED_BLOCK<<1) + last, 3);  /* send block type */
     bi_windup(s);        /* align on byte boundary */
     put_short(s, (ush)stored_len);
     put_short(s, (ush)~stored_len);
-    zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
+    if (stored_len)
+        zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
     s->pending += stored_len;
 #ifdef ZLIB_DEBUG
     s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
     s->compressed_len += (stored_len + 4) << 3;
     s->bits_sent += 2*16;
-    s->bits_sent += stored_len<<3;
+    s->bits_sent += stored_len << 3;
 #endif
 }
 
 /* ===========================================================================
  * Flush the bits in the bit buffer to pending output (leaves at most 7 bits)
  */
-void ZLIB_INTERNAL _tr_flush_bits(s)
-    deflate_state *s;
-{
+void ZLIB_INTERNAL _tr_flush_bits(deflate_state *s) {
     bi_flush(s);
 }
 
@@ -893,9 +883,7 @@ void ZLIB_INTERNAL _tr_flush_bits(s)
  * Send one empty static block to give enough lookahead for inflate.
  * This takes 10 bits, of which 7 may remain in the bit buffer.
  */
-void ZLIB_INTERNAL _tr_align(s)
-    deflate_state *s;
-{
+void ZLIB_INTERNAL _tr_align(deflate_state *s) {
     send_bits(s, STATIC_TREES<<1, 3);
     send_code(s, END_BLOCK, static_ltree);
 #ifdef ZLIB_DEBUG
@@ -904,16 +892,108 @@ void ZLIB_INTERNAL _tr_align(s)
     bi_flush(s);
 }
 
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+local void compress_block(deflate_state *s, const ct_data *ltree,
+                          const ct_data *dtree) {
+    unsigned dist;      /* distance of matched string */
+    int lc;             /* match length or unmatched char (if dist == 0) */
+    unsigned sx = 0;    /* running index in symbol buffers */
+    unsigned code;      /* the code to send */
+    int extra;          /* number of extra bits to send */
+
+    if (s->sym_next != 0) do {
+#ifdef LIT_MEM
+        dist = s->d_buf[sx];
+        lc = s->l_buf[sx++];
+#else
+        dist = s->sym_buf[sx++] & 0xff;
+        dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8;
+        lc = s->sym_buf[sx++];
+#endif
+        if (dist == 0) {
+            send_code(s, lc, ltree); /* send a literal byte */
+            Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+        } else {
+            /* Here, lc is the match length - MIN_MATCH */
+            code = _length_code[lc];
+            send_code(s, code + LITERALS + 1, ltree);   /* send length code */
+            extra = extra_lbits[code];
+            if (extra != 0) {
+                lc -= base_length[code];
+                send_bits(s, lc, extra);       /* send the extra length bits */
+            }
+            dist--; /* dist is now the match distance - 1 */
+            code = d_code(dist);
+            Assert (code < D_CODES, "bad d_code");
+
+            send_code(s, code, dtree);       /* send the distance code */
+            extra = extra_dbits[code];
+            if (extra != 0) {
+                dist -= (unsigned)base_dist[code];
+                send_bits(s, dist, extra);   /* send the extra distance bits */
+            }
+        } /* literal or match pair ? */
+
+        /* Check for no overlay of pending_buf on needed symbols */
+#ifdef LIT_MEM
+        Assert(s->pending < 2 * (s->lit_bufsize + sx), "pendingBuf overflow");
+#else
+        Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
+#endif
+
+    } while (sx < s->sym_next);
+
+    send_code(s, END_BLOCK, ltree);
+}
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ *    a) There are no non-portable control characters belonging to the
+ *       "block list" (0..6, 14..25, 28..31).
+ *    b) There is at least one printable character belonging to the
+ *       "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ *   "gray list" that is ignored in this detection algorithm:
+ *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+local int detect_data_type(deflate_state *s) {
+    /* block_mask is the bit mask of block-listed bytes
+     * set bits 0..6, 14..25, and 28..31
+     * 0xf3ffc07f = binary 11110011111111111100000001111111
+     */
+    unsigned long block_mask = 0xf3ffc07fUL;
+    int n;
+
+    /* Check for non-textual ("block-listed") bytes. */
+    for (n = 0; n <= 31; n++, block_mask >>= 1)
+        if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0))
+            return Z_BINARY;
+
+    /* Check for textual ("allow-listed") bytes. */
+    if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0
+            || s->dyn_ltree[13].Freq != 0)
+        return Z_TEXT;
+    for (n = 32; n < LITERALS; n++)
+        if (s->dyn_ltree[n].Freq != 0)
+            return Z_TEXT;
+
+    /* There are no "block-listed" or "allow-listed" bytes:
+     * this stream either is empty or has tolerated ("gray-listed") bytes only.
+     */
+    return Z_BINARY;
+}
+
 /* ===========================================================================
  * Determine the best encoding for the current block: dynamic trees, static
  * trees or store, and write out the encoded block.
  */
-void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
-    deflate_state *s;
-    charf *buf;       /* input block, or NULL if too old */
-    ulg stored_len;   /* length of input block */
-    int last;         /* one if this is the last block for a file */
-{
+void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf,
+                                   ulg stored_len, int last) {
     ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
     int max_blindex = 0;  /* index of last bit length code of non zero freq */
 
@@ -942,14 +1022,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
         max_blindex = build_bl_tree(s);
 
         /* Determine the best encoding. Compute the block lengths in bytes. */
-        opt_lenb = (s->opt_len+3+7)>>3;
-        static_lenb = (s->static_len+3+7)>>3;
+        opt_lenb = (s->opt_len + 3 + 7) >> 3;
+        static_lenb = (s->static_len + 3 + 7) >> 3;
 
         Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
                 opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
-                s->last_lit));
+                s->sym_next / 3));
 
-        if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
+#ifndef FORCE_STATIC
+        if (static_lenb <= opt_lenb || s->strategy == Z_FIXED)
+#endif
+            opt_lenb = static_lenb;
 
     } else {
         Assert(buf != (char*)0, "lost buf");
@@ -959,7 +1042,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
 #ifdef FORCE_STORED
     if (buf != (char*)0) { /* force stored block */
 #else
-    if (stored_len+4 <= opt_lenb && buf != (char*)0) {
+    if (stored_len + 4 <= opt_lenb && buf != (char*)0) {
                        /* 4: two words for the lengths */
 #endif
         /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
@@ -970,21 +1053,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
          */
         _tr_stored_block(s, buf, stored_len, last);
 
-#ifdef FORCE_STATIC
-    } else if (static_lenb >= 0) { /* force static trees */
-#else
-    } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
-#endif
-        send_bits(s, (STATIC_TREES<<1)+last, 3);
+    } else if (static_lenb == opt_lenb) {
+        send_bits(s, (STATIC_TREES<<1) + last, 3);
         compress_block(s, (const ct_data *)static_ltree,
                        (const ct_data *)static_dtree);
 #ifdef ZLIB_DEBUG
         s->compressed_len += 3 + s->static_len;
 #endif
     } else {
-        send_bits(s, (DYN_TREES<<1)+last, 3);
-        send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
-                       max_blindex+1);
+        send_bits(s, (DYN_TREES<<1) + last, 3);
+        send_all_trees(s, s->l_desc.max_code + 1, s->d_desc.max_code + 1,
+                       max_blindex + 1);
         compress_block(s, (const ct_data *)s->dyn_ltree,
                        (const ct_data *)s->dyn_dtree);
 #ifdef ZLIB_DEBUG
@@ -1003,21 +1082,23 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
         s->compressed_len += 7;  /* align on byte boundary */
 #endif
     }
-    Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
-           s->compressed_len-7*last));
+    Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3,
+           s->compressed_len - 7*last));
 }
 
 /* ===========================================================================
  * Save the match info and tally the frequency counts. Return true if
  * the current block must be flushed.
  */
-int ZLIB_INTERNAL _tr_tally (s, dist, lc)
-    deflate_state *s;
-    unsigned dist;  /* distance of matched string */
-    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
-{
-    s->d_buf[s->last_lit] = (ush)dist;
-    s->l_buf[s->last_lit++] = (uch)lc;
+int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc) {
+#ifdef LIT_MEM
+    s->d_buf[s->sym_next] = (ush)dist;
+    s->l_buf[s->sym_next++] = (uch)lc;
+#else
+    s->sym_buf[s->sym_next++] = (uch)dist;
+    s->sym_buf[s->sym_next++] = (uch)(dist >> 8);
+    s->sym_buf[s->sym_next++] = (uch)lc;
+#endif
     if (dist == 0) {
         /* lc is the unmatched char */
         s->dyn_ltree[lc].Freq++;
@@ -1029,175 +1110,8 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
                (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
                (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
 
-        s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
+        s->dyn_ltree[_length_code[lc] + LITERALS + 1].Freq++;
         s->dyn_dtree[d_code(dist)].Freq++;
     }
-
-#ifdef TRUNCATE_BLOCK
-    /* Try to guess if it is profitable to stop the current block here */
-    if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
-        /* Compute an upper bound for the compressed length */
-        ulg out_length = (ulg)s->last_lit*8L;
-        ulg in_length = (ulg)((long)s->strstart - s->block_start);
-        int dcode;
-        for (dcode = 0; dcode < D_CODES; dcode++) {
-            out_length += (ulg)s->dyn_dtree[dcode].Freq *
-                (5L+extra_dbits[dcode]);
-        }
-        out_length >>= 3;
-        Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
-               s->last_lit, in_length, out_length,
-               100L - out_length*100L/in_length));
-        if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
-    }
-#endif
-    return (s->last_lit == s->lit_bufsize-1);
-    /* We avoid equality with lit_bufsize because of wraparound at 64K
-     * on 16 bit machines and because stored blocks are restricted to
-     * 64K-1 bytes.
-     */
-}
-
-/* ===========================================================================
- * Send the block data compressed using the given Huffman trees
- */
-local void compress_block(s, ltree, dtree)
-    deflate_state *s;
-    const ct_data *ltree; /* literal tree */
-    const ct_data *dtree; /* distance tree */
-{
-    unsigned dist;      /* distance of matched string */
-    int lc;             /* match length or unmatched char (if dist == 0) */
-    unsigned lx = 0;    /* running index in l_buf */
-    unsigned code;      /* the code to send */
-    int extra;          /* number of extra bits to send */
-
-    if (s->last_lit != 0) do {
-        dist = s->d_buf[lx];
-        lc = s->l_buf[lx++];
-        if (dist == 0) {
-            send_code(s, lc, ltree); /* send a literal byte */
-            Tracecv(isgraph(lc), (stderr," '%c' ", lc));
-        } else {
-            /* Here, lc is the match length - MIN_MATCH */
-            code = _length_code[lc];
-            send_code(s, code+LITERALS+1, ltree); /* send the length code */
-            extra = extra_lbits[code];
-            if (extra != 0) {
-                lc -= base_length[code];
-                send_bits(s, lc, extra);       /* send the extra length bits */
-            }
-            dist--; /* dist is now the match distance - 1 */
-            code = d_code(dist);
-            Assert (code < D_CODES, "bad d_code");
-
-            send_code(s, code, dtree);       /* send the distance code */
-            extra = extra_dbits[code];
-            if (extra != 0) {
-                dist -= (unsigned)base_dist[code];
-                send_bits(s, dist, extra);   /* send the extra distance bits */
-            }
-        } /* literal or match pair ? */
-
-        /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
-        Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
-               "pendingBuf overflow");
-
-    } while (lx < s->last_lit);
-
-    send_code(s, END_BLOCK, ltree);
-}
-
-/* ===========================================================================
- * Check if the data type is TEXT or BINARY, using the following algorithm:
- * - TEXT if the two conditions below are satisfied:
- *    a) There are no non-portable control characters belonging to the
- *       "black list" (0..6, 14..25, 28..31).
- *    b) There is at least one printable character belonging to the
- *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
- * - BINARY otherwise.
- * - The following partially-portable control characters form a
- *   "gray list" that is ignored in this detection algorithm:
- *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
- * IN assertion: the fields Freq of dyn_ltree are set.
- */
-local int detect_data_type(s)
-    deflate_state *s;
-{
-    /* black_mask is the bit mask of black-listed bytes
-     * set bits 0..6, 14..25, and 28..31
-     * 0xf3ffc07f = binary 11110011111111111100000001111111
-     */
-    unsigned long black_mask = 0xf3ffc07fUL;
-    int n;
-
-    /* Check for non-textual ("black-listed") bytes. */
-    for (n = 0; n <= 31; n++, black_mask >>= 1)
-        if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0))
-            return Z_BINARY;
-
-    /* Check for textual ("white-listed") bytes. */
-    if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0
-            || s->dyn_ltree[13].Freq != 0)
-        return Z_TEXT;
-    for (n = 32; n < LITERALS; n++)
-        if (s->dyn_ltree[n].Freq != 0)
-            return Z_TEXT;
-
-    /* There are no "black-listed" or "white-listed" bytes:
-     * this stream either is empty or has tolerated ("gray-listed") bytes only.
-     */
-    return Z_BINARY;
-}
-
-/* ===========================================================================
- * Reverse the first len bits of a code, using straightforward code (a faster
- * method would use a table)
- * IN assertion: 1 <= len <= 15
- */
-local unsigned bi_reverse(code, len)
-    unsigned code; /* the value to invert */
-    int len;       /* its bit length */
-{
-    register unsigned res = 0;
-    do {
-        res |= code & 1;
-        code >>= 1, res <<= 1;
-    } while (--len > 0);
-    return res >> 1;
-}
-
-/* ===========================================================================
- * Flush the bit buffer, keeping at most 7 bits in it.
- */
-local void bi_flush(s)
-    deflate_state *s;
-{
-    if (s->bi_valid == 16) {
-        put_short(s, s->bi_buf);
-        s->bi_buf = 0;
-        s->bi_valid = 0;
-    } else if (s->bi_valid >= 8) {
-        put_byte(s, (Byte)s->bi_buf);
-        s->bi_buf >>= 8;
-        s->bi_valid -= 8;
-    }
-}
-
-/* ===========================================================================
- * Flush the bit buffer and align the output on a byte boundary
- */
-local void bi_windup(s)
-    deflate_state *s;
-{
-    if (s->bi_valid > 8) {
-        put_short(s, s->bi_buf);
-    } else if (s->bi_valid > 0) {
-        put_byte(s, (Byte)s->bi_buf);
-    }
-    s->bi_buf = 0;
-    s->bi_valid = 0;
-#ifdef ZLIB_DEBUG
-    s->bits_sent = (s->bits_sent+7) & ~7;
-#endif
+    return (s->sym_next == s->sym_end);
 }
diff --git a/libs/zlib/uncompr.c b/libs/zlib/uncompr.c
index f03a1a865e..5e256663b4 100644
--- a/libs/zlib/uncompr.c
+++ b/libs/zlib/uncompr.c
@@ -24,12 +24,8 @@
    Z_DATA_ERROR if the input data was corrupted, including if the input data is
    an incomplete zlib stream.
 */
-int ZEXPORT uncompress2 (dest, destLen, source, sourceLen)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong *sourceLen;
-{
+int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source,
+                        uLong *sourceLen) {
     z_stream stream;
     int err;
     const uInt max = (uInt)-1;
@@ -83,11 +79,7 @@ int ZEXPORT uncompress2 (dest, destLen, source, sourceLen)
            err;
 }
 
-int ZEXPORT uncompress (dest, destLen, source, sourceLen)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong sourceLen;
-{
+int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source,
+                       uLong sourceLen) {
     return uncompress2(dest, destLen, source, &sourceLen);
 }
diff --git a/libs/zlib/win32/DLL_FAQ.txt b/libs/zlib/win32/DLL_FAQ.txt
index 12c009018c..d8cf5f31e3 100644
--- a/libs/zlib/win32/DLL_FAQ.txt
+++ b/libs/zlib/win32/DLL_FAQ.txt
@@ -3,7 +3,7 @@
 
 
 This document describes the design, the rationale, and the usage
-of the official DLL build of zlib, named ZLIB1.DLL.  If you have
+of the common DLL build of zlib, named ZLIB1.DLL.  If you have
 general questions about zlib, you should see the file "FAQ" found
 in the zlib distribution, or at the following location:
   http://www.gzip.org/zlib/zlib_faq.html
@@ -11,13 +11,9 @@ in the zlib distribution, or at the following location:
 
  1. What is ZLIB1.DLL, and how can I get it?
 
-  - ZLIB1.DLL is the official build of zlib as a DLL.
+  - ZLIB1.DLL is the common build of zlib as a DLL.
     (Please remark the character '1' in the name.)
 
-    Pointers to a precompiled ZLIB1.DLL can be found in the zlib
-    web site at:
-      http://www.zlib.net/
-
     Applications that link to ZLIB1.DLL can rely on the following
     specification:
 
@@ -379,18 +375,6 @@ in the zlib distribution, or at the following location:
     code.  But you can make your own private DLL build, under a
     different file name, as suggested in the previous answer.
 
-
-17. I made my own ZLIB1.DLL build.  Can I test it for compliance?
-
-  - We prefer that you download the official DLL from the zlib
-    web site.  If you need something peculiar from this DLL, you
-    can send your suggestion to the zlib mailing list.
-
-    However, in case you do rebuild the DLL yourself, you can run
-    it with the test programs found in the DLL distribution.
-    Running these test programs is not a guarantee of compliance,
-    but a failure can imply a detected problem.
-
 **
 
 This document is written and maintained by
diff --git a/libs/zlib/win32/Makefile.bor b/libs/zlib/win32/Makefile.bor
index d152bbb7ff..4495353f3f 100644
--- a/libs/zlib/win32/Makefile.bor
+++ b/libs/zlib/win32/Makefile.bor
@@ -3,7 +3,6 @@
 #
 # Usage:
 #  make -f win32/Makefile.bor
-#  make -f win32/Makefile.bor LOCAL_ZLIB=-DASMV OBJA=match.obj OBJPA=+match.obj
 
 # ------------ Borland C++ ------------
 
diff --git a/libs/zlib/win32/Makefile.emx b/libs/zlib/win32/Makefile.emx
deleted file mode 100644
index 4d6ab0efa6..0000000000
--- a/libs/zlib/win32/Makefile.emx
+++ /dev/null
@@ -1,69 +0,0 @@
-# Makefile for zlib.  Modified for emx/rsxnt by Chr. Spieler, 6/16/98.
-# Copyright (C) 1995-1998 Jean-loup Gailly.
-# For conditions of distribution and use, see copyright notice in zlib.h
-
-# To compile, or to compile and test, type:
-#
-#   make -fmakefile.emx;  make test -fmakefile.emx
-#
-
-CC=gcc -Zwin32
-
-#CFLAGS=-MMD -O
-#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
-#CFLAGS=-MMD -g -DDEBUG
-CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
-             -Wstrict-prototypes -Wmissing-prototypes
-
-# If cp.exe is available, replace "copy /Y" with "cp -fp" .
-CP=copy /Y
-# If gnu install.exe is available, replace $(CP) with ginstall.
-INSTALL=$(CP)
-# The default value of RM is "rm -f."  If "rm.exe" is found, comment out:
-RM=del
-LDLIBS=-L. -lzlib
-LD=$(CC) -s -o
-LDSHARED=$(CC)
-
-INCL=zlib.h zconf.h
-LIBS=zlib.a
-
-AR=ar rcs
-
-prefix=/usr/local
-exec_prefix = $(prefix)
-
-OBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \
-       gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o
-
-TEST_OBJS = example.o minigzip.o
-
-all: example.exe minigzip.exe
-
-test: all
-	./example
-	echo hello world | .\minigzip | .\minigzip -d
-
-%.o : %.c
-	$(CC) $(CFLAGS) -c $< -o $@
-
-zlib.a: $(OBJS)
-	$(AR) $@ $(OBJS)
-
-%.exe : %.o $(LIBS)
-	$(LD) $@ $< $(LDLIBS)
-
-
-.PHONY : clean
-
-clean:
-	$(RM) *.d
-	$(RM) *.o
-	$(RM) *.exe
-	$(RM) zlib.a
-	$(RM) foo.gz
-
-DEPS := $(wildcard *.d)
-ifneq ($(DEPS),)
-include $(DEPS)
-endif
diff --git a/libs/zlib/win32/Makefile.gcc b/libs/zlib/win32/Makefile.gcc
index 305be50afe..081e391eb2 100644
--- a/libs/zlib/win32/Makefile.gcc
+++ b/libs/zlib/win32/Makefile.gcc
@@ -11,10 +11,6 @@
 #
 #   make -fwin32/Makefile.gcc;  make test testdll -fwin32/Makefile.gcc
 #
-# To use the asm code, type:
-#   cp contrib/asm?86/match.S ./match.S
-#   make LOC=-DASMV OBJA=match.o -fwin32/Makefile.gcc
-#
 # To install libz.a, zconf.h and zlib.h in the system directories, type:
 #
 #   make install -fwin32/Makefile.gcc
@@ -38,7 +34,6 @@ IMPLIB    = libz.dll.a
 #
 SHARED_MODE=0
 
-#LOC = -DASMV
 #LOC = -DZLIB_DEBUG -g
 
 PREFIX =
diff --git a/libs/zlib/win32/Makefile.msc b/libs/zlib/win32/Makefile.msc
index 6831882de4..9c6515360e 100644
--- a/libs/zlib/win32/Makefile.msc
+++ b/libs/zlib/win32/Makefile.msc
@@ -4,10 +4,6 @@
 # Usage:
 #   nmake -f win32/Makefile.msc                          (standard build)
 #   nmake -f win32/Makefile.msc LOC=-DFOO                (nonstandard build)
-#   nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \
-#         OBJA="inffas32.obj match686.obj"               (use ASM code, x86)
-#   nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." \
-#         OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"  (use ASM code, x64)
 
 # The toplevel directory of the source tree.
 #
diff --git a/libs/zlib/win32/README-WIN32.txt b/libs/zlib/win32/README-WIN32.txt
index df7ab7f4b3..14e6398ef3 100644
--- a/libs/zlib/win32/README-WIN32.txt
+++ b/libs/zlib/win32/README-WIN32.txt
@@ -1,6 +1,6 @@
 ZLIB DATA COMPRESSION LIBRARY
 
-zlib 1.2.11 is a general purpose data compression library.  All the code is
+zlib 1.3.1 is a general purpose data compression library.  All the code is
 thread safe.  The data format used by the zlib library is described by RFCs
 (Request for Comments) 1950 to 1952 in the files
 http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
@@ -16,13 +16,13 @@ is http://zlib.net/ .  Before reporting a problem, please check this site to
 verify that you have the latest version of zlib; otherwise get the latest
 version and check whether the problem still exists or not.
 
-PLEASE read DLL_FAQ.txt, and the the zlib FAQ http://zlib.net/zlib_faq.html
-before asking for help.
+PLEASE read DLL_FAQ.txt, and the zlib FAQ http://zlib.net/zlib_faq.html before
+asking for help.
 
 
 Manifest:
 
-The package zlib-1.2.11-win32-x86.zip will contain the following files:
+The package zlib-1.3.1-win32-x86.zip will contain the following files:
 
   README-WIN32.txt This document
   ChangeLog        Changes since previous zlib packages
diff --git a/libs/zlib/win32/libz32.a b/libs/zlib/win32/libz32.a
deleted file mode 100644
index 40195965248309e20a09d57b8b3b506ef3392a5d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 117602
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
C`V$lY

diff --git a/libs/zlib/win32/libz64.a b/libs/zlib/win32/libz64.a
deleted file mode 100644
index 87eed1aaf3eb11853716e6cb330a3f8c463531e9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 130026
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%0Da17sBh
zL<}_017U$yK|o|dgDwy;5Ff$<#R`bW3|?sl5d(!ggr&p4zyOg2t%87vfmT64SfEu9
z5LwVF2#6Rc_8~0LpcF(F)VG9)frhUjEYRo`L>4sX1`z`d|3FxvRS*zaP<tIB23iFH
zVS&bxAhMuU5D+oYd@+Otnht}=f||?_G0-Xq2n%%6BSaRo3IZYqS_J`NfmT64WI?MS
zAY!0Z5D*q<6$C^Uv<d<u23iFHVS!dbKx9FyARuCEKr__f*aEGBfXIT%HHa*zGX-IR
zR?<OaK_wkT473UY!U7GsL1aN?A4Ci^XANP2RzW~yL8T!?473UY!UC;=fXKqq3uyf*
z0|Q8w1-$AI!h)q276wpyfr!D<3kx_6K*T`l1;PT2Q$tv=^uodbN-q#GSbAY$fTb4}
z22gr|$imVKWG(?B21+jw7A(E6Fu>9a3j-*<KxAR*g@pl@URW4F=>;MSOD`-8u=K*h
z07@?qSy*~u0k1EBh=I}zgau14EZ|i$5HV1Cfv{ldg@pl@URc1ZW+1Y#^uodbOD`-8
zp!5Qfg{2o323UGwVF0BUh%79<uz*+1K*T`l1;T=*7Z&iD(hxCFdV#QD>4k*>mR?xE
zYcV0Ru=K*h081|{;MJKBSy*~u0k4{Yh=I}zgasN)hp<2mF$fE^f)m05t(t+bK;y&^
z7HHKBgaukP17U$y%|KY7IXegov}y*z0<D^Xuml)kX%e(*1|kMpH3MOR)<{5Dpj9&v
z7HHKBgauj)0bzkw%|KY7RWlG4Xw?ja1zI%&VPTt@0?nKt=A{@Iit`GJGV@B(KqW4C
z<pZc^1>zv#^s4wG&@?lsjRjW2kX{v^Uyz!|0BT{uM8E<Jpmr8Wgoz=&3M67?0%~o+
zL{dOP;I<b`1SAk&4r+P9M3PF=(o%~+?Jt-}QEGW+UJ9rc1`{bxP0cnl0ky@DMHm=B
zEi#x$Nor1xnF**}hAhIs0BW5<L_l5y&0c}pXb_R~s{FLH;?xpQOARKHnhy#bP<st7
zQdE>*!~kx!foHEk=746nKy5de8qo5H{31{b4kCg)#{>#uW=2rU4z|_^WC8;N?Pm8t
zX&Yh(j6|MO0uAsoGlFsgXnikC1#FE2gb$hB1D&N0nni+$!AMX$2*d_;-f+zTf=Wt|
z8W08z{6SV%f_R|XpNSzCd0_}RRFT((K-82c7nkJcCPC-5K{JWPB}F-@c@R?|YC!1;
z#)pXHfD#K_2&4;C-l9w~LL%MF1U$!>npl)tRD`^sAU-}bw;(>g9Bg)cd~R`k89dvh
zSAo_tAtoaU&qbOUqt8WNkzioZ1-p=i0Xdz3gboNYFo5!V3Um$+)RLpeTqLMGeuFV5
zXyAaHZb0q>saqh-z#t?J;z9g@Z7vd2;)Z}KU5GL;37TWXHWz6E^($Brbj}hwmJJ#U
z0FR`*bh;||boy#QCT&0yQX24Xy+$`fcc=nlsK?s%2k6jL(6N3V-L4wl;F%3q3FtAH
z-3~I{;4?{~-F(RCCPO{bYtXojMz;X$utN>-NQwq%NKm0@257dWQp=+olzABbU+89l
zYDbwf0QmqsPW)O7q#isCA#mIQv`i6P&w*wp5!XC}H*kZ8m6{I}cz~u@LEEvx1KXex
z6any9$8WU3PS8Qmpwlq+f=4((cf5e^y#>vEfX?s+-Ifg6JN5v4bQAQ}InYVJpaWVU
zlTn?aKR}m&cz{l1>-7D=zfGt^pgH#qV{`2rhSHlL=RmHa2i*nRc~KK~Ryb%V1}p?R
ze!`<S^p0oeMetdXkTY(4{z1lBp#yS|>jpsw@!kOskUr=P0F94=&f^0c<bk-%9&JY;
z$N?UZ@Bn!PbYw2byP=?Q5ODD5bRGZ=e}IA-GB*dhy%=PuK(~Vq;{j~4pg93Z=(HXv
z0gcdrI2InQ2TDN`7!VFLI>FY1?k9utp)+v1K;t>!0Yi|z;3$6i4d$c((Bz~5<nBEI
z56F!MAZ1{)j)Tt(LgIqjKrk+109?QWcC!I!|9bO*0>_=8hM-R`D`<hhE_qOFL!H!m
zpae7;j@Q{BtD!U2czghAL_h}aIGTSjmg|B&7>_z)4r;<c)qt;`2RZ%aZ;*39qxPU%
z02#}CKngs%89)=-@};2r{C<GaU-JRby#Y4erJ(QuPqu(GL!9OUsuUnhQ0EGgJ6?iT
zx`G6|9UNK@l!6k`kK+!Yjv#2P9F~zl3LtqO)YV{kT?i8J=muTP=n6^;poI1Vd^~K4
zHOOJz4jkYESARe*7XgJE2kODMKe{2Q6P)2uZ3K;yLM;bRErYFu4p>5lE5YjvkWR*g
zCSK5$jvu-mBtS<Sbh~~4yQfqF9KwHpL-GoAP6E{U^MEUn^66y-m4~}Pw@!nVg97d4
zR!E3{fX|_TL?NT#|3DX+{b4GV_vvK?RlB?3^L-#SkhBVFS~u7J`2$u262_LGL5HF>
z*Z%oiY6fx+cs3V0*#x@jMgcrn9L~VN04nl8S0ce(2e#ui=rU7~k3o8xYyU9vw=#nd
zE&zF6qC4~r^t=Ml&@Jo=9D#1oahHe#mpcPEKssUNCaCiSNf{_}wvb8znoqz}s^EeF
zG|yGy3_6aY1vJ+TDm6BPL(Ny<#Vphy2lYKcsixb(1(B#hieEN@b%cT(2`YLZ_wj;~
zj0I|W7xNPmhtTq_3S=5`8U&}4*U2DZ(B<&p>mm?GY=hG(XwnFLJ=Tj&&@2ZvOc$(+
z0dyn>nC0LDI#5F#5}1&b&EE<-!4Yf;N@4^DO=qaY%Y|TnxC(%#wjjrHgIM56E&))D
zCQ%2U<N`$k<X#5QBp2*bcW?-JfX`C@1FbndpoMt1g8*of3vrY!c;*Up2%4+JYv^U{
zKCK5zKr?Cr-3}G42TJ6@X~hP$lHdm|L*Q=(O~K&s31|)-v~I_vxmJMzwju|5*Q@|!
zE)-O@2q0!a1-cz#KqK?M0xw=dZG*1!Sq>_$A<YMd<E~#o6Rq8@UpfzXSi35ev4h6m
zp(nC}0;(hd9P*&HfaRfL&=d|hl)iv;z-mNLIfHpq5va}snF_A<V8xLDxK#nm055OD
zA_o++CE#=G!NF7t4)o&=phepZFF(OmxwIZA0ZmwgQ=|w3=-}c*WwPKPefbBH4xyer
z#K6Gt5`Nqvc<Q%Q2XqfYuP^8bG6_$V<B6w#gJ|{x2meb@t^uh9pCt|&4giG#=+Y#Q
z&IzCq1F(f`(3}L_gd74=)6D=4I!Lh$3Zw%bnyv~E2BWJ4i~+6D!O7<fbdFR2G~Ek|
zU;frq$PV!zm`NIx5I{{p$V?)%;Dnta0WAW+^HJa_H~cFE(z;z0S`So$ZchK<)5{7P
zV}lf#(E1fpnmKg)DuDgo?fL^+TO@%eTopiWEd^aK2b#;rz6gQ2+f@O(CqStg)Q<H4
zO;W*9G-#*<)KVqhBcLMubqOfZdhoAzl>kqtf^rl1cywqb@x4?6l(s>6&lTiR&|nU#
zN5Q7(d4Nw_R{}Q*!JfSUS~CS|V-^1S{~uD}d@q$i%wHl}u;AhbB~F$@6D{#x0cFJ3
z#o&q>bmO@VgatYE06N#+?H~YI7zLV72g!SMJ8*bF4nh9m(doqjIc@T_u19Yu=<L@Y
zkmU;?FRc3wnwAEiNLI%QI>wcM+kw}t;3!6kAjqN_&_uQ(sGLP!B;x>G%mbckg)M@3
z3@S}POQAsP1-l{3uHb3!1!Q#!s1XlhHvfP(;@3d5y?~Tmpo0DdqU?In9ROMh0AAas
z^9zzSp-H_2ydp$^0k*y&1!fMYmWTx{lR6F>lLEC=UO=m%7u^mT;N~#+dMD7riWkrV
z9JJ<)qdQapd^g1laNvT@!FU16h~VXopkYadZdZYqe<88?0(>hQ#6ZhKrJ&jN7e2k<
z3lVpL8v@8V=Owgq1-S!MM1pLy@UT2o3Ywh;34&VVFTfQ)Bj^|?P?>-bhPoLn^Wn9)
zM|186MvvxP@SQY2__u)y$PW;AdvrTkcv!psC<2{}^8%cDA@$RXZU#tdc>!+Ef$Zn-
zfTSmqLja}S0dDD`ltd-G;6wpxfGIH4L(AY*khlR&n!_4_kVWmFV(9}SX@HoJqyfr@
zFN-1CJ|L3D2Sn2N07)7jKuKEg2P|oT^;tvofy#gv-L49t69OT(aqzc*1}8yHIZ%xT
zz8(dve;c&ahdLM9mj3`&1P)(V1#}b=`yW7+*B|JC{69dKh=A6;bUSc>uG0ani3d3f
z<P>lhwz>8J186Z6^tdWeMg?EO1v=K*^+&faD7rz-KTy&@t35w}+8;kawYTdBaMXd-
zb-Vt6v_C+1B7$^%fVMwi*N}YZ1hqdvcaVUUf)?8RVJPAD0J(&}<qxDz0TqQWV5{yx
z4HJoD&=tJRM-WG<A(dy)`VG{X0mUT9*@y}TytK0$+;{|Ka_|Bo$YL!}Sm;8oRsPZK
z;DA!bAeqj!1Jp==c?uH37#6_pTwMi`{{dNI2kPX4)}|JKECB~N$itv)0L_2Uq7kuV
z0o+9ct&S^Y-vR1RK+AAQZT$mnEe4W_h=mGZ6J(&~Ll*78dvc(9qm;GV^$SXYin%`n
zyjKIui4kCN<aG(S))SB_j=XjO*?eR+7BfKsa2G@{Fff4Vx6l(TK=fkhx&ja_$_AN<
z1<?lVkaYzh`WHK7T>*$@23?#9nj_<4U^u}ASyup}=R;4h0MVJy6D&Y<3lC&n0f_G9
zgRCn6(fI<9bp;^$tN>(P0f^oOJ;4HXirWx;+zUf#UTQ@_YH~?xib85$3TO&EEi(tQ
z=`J&`B(*3nF-IX4G^lN*keQd3lUS0fP+U@!nwYDQoL^K_T2R7}oS$1zlv-SznxX*O
zF9cBy3YwzS!qU{@5`~of)MACa{1Sz<%o2snJcYzOh0MGX1_qq+3dNaKsqvs`DUdO+
zsrjP({9J{Se1(G2;tYl4jKreE<dW1P=!h>!A*u89ps{<<-e496Q0ovhugAi$l!1Xk
z2|ObXS_BCigJ)p?-75u}>tkWCXM)5g3quJL0|RJmn}wkT&gy1@%oVdR%w&S>6=ngi
zbpXvivM`9l=kB$cVS26MEMI1r-e_i+-fQqV{xlZY9RFVym^yA&m^wvP*u1(qD@@iE
zE*k?E%Yuu|fQzk!i>>E?*^$KsGo_phW=AkLOe}#LCbonZCbp3mCboeew%*_^Kg>Ku
zLD>2LLqV9&9pS8EL73iVxY$I{$Tm0@7Qn?oF$@}XhU~P0ut38-pgCH|ygx(?G>;2m
zfrgYJvLF&728s&^3l!fVac1zmKST^Pj|*Xe=5ZmipkWe-7-$|B!UE0XLS#YnxDYYW
z&=iCP8j66(g644{VxV~i2n*C;g2;mAaUo)$;X4QmG>;3B1<m6^#6a`75Ef`27a|Lq
z$AyT2`Xmq*D8oQxLG!o}G0?m}gazuAL1aPmxDYW=#|^>)&HF=SK}~;%7-$|B!UE0X
zLS#YnxDYYWJT8O<n#YC6f;uM<u{8{k{fo@t^Ku}v*ybF;GbBipj_FnLIr)hoA4B%1
zW80yYUKO8MmYA6XDtAFMXw0BF$DI89Yz9#23lRaO7SQ}1s0@aPq*ukKrIsXTfJ$Px
zNO5*%0RyN!hKqn4!~iOlVIp7w22dFd5&_L!rh$b(B{WPVJ+&m6fdN!bBa6f{fJ$qa
zNNFBO6{yUHiKM5N6f-b@N^Y1)N@h`NatWyXhKPWCA<4kN04l{HBFJ+<khwxo=?<Ft
z0jY&x+RYV$W^^ESz)0jdAJB9MGb2b1WX1}v25IjZWUlZ!ObUetm9`)Od~=1M-GCr9
zAk4%7jtCGFj6w5vpt=cETY&|@bA{>P?dbVM2oYlD6G5s$=Qe<7$Xp?a1v<9@L_<U{
zcbY?MNQe@!?I1N7P`e?zK$2k~0*pa!2JaRI^FRbhB#{9&!wTL-o?aE7k_xJ3!IO~r
z#i{Yw<{(pxit_RqpiTg7DL0CT@gN(&p;Dl&*j(vV<wcn#SoSF6*e7XbZVB164Bn#*
ziXjGuePRp@kodryn=BB3%uP-KZBk)?)Cn}1n?y=mpwI)AUUNWOb3q&^2F)cRpNIew
z29;wvprQ)IfnxC7WC5rR0~KI^w4qK2F)&zw#@QJlE7?Hmu+2@TK>Z5S4YC(HH;F!d
z2kIi=o`V84-a+HY2B2vt&`>?dL~Nt*xsd*x0C*0Bzf}m%#X9i?>P&--1<z)|?mjnw
zbrA5({eW()2KN_^JAi6K(8$3LkK+!YS`fwt)qWthK(|K(c$hB$G}`y$xQmJfsB(kO
zP5E@Xs2FtmsAwE_QBeR@-i|v#vsI4ZeP=L-KqpyCK%+Yl=R&&_Aagy4ns0j@4sk9h
z+#s$(nRf#RSE(MzJjnbd_R)6G<-X9nDLVr=z~i1C%|{S(kl;RkXQ%{ZpcpjIEPynj
z0~&w@U7!LU3H=HkwTBMT1VHxsK;x|i)OC9as)4~BaL}mm4`>$}G!^>+Iu`|=jDCZ-
zl)lpye1B!7F0m8MFK<H9#|Q98{R{9A^9RT{2*?i5y|>USLO*yw`qbc=DE`*e|ImF;
zFQ+qtc6x#qH-Uon19(qni4<rwk-r6$`atJ^gYMS@&FFwOvcFsn>6L;eg#=(zu#kQ}
zs6RTx!}3r)XiOW6yhrB+&<4UEkV!GnY%r)pFF<)HT!uIaY$B4MVdL+hfdtUd1}N!q
zcz`ZIu>p<pfhXNS7aAcYn-B0SN5PXcpg{+yPB0&CB6w==31s&acvuCLE};{0r7}Lf
ztf2N0WVjVHstA$=k2-=UNI-$C>H4I(_6Y-jYddJ3qE><hJb(Z<3YIhxgA=f%2}<Hf
zX%aHESRxA<s0G<&h?+1#bAQKO|A1N+h-o1Qjn)Gdpgp>vBn{v5#11mM+d-q#^$qBl
z<`SjuP*7?G1)BkAv<Ku1Se8aid4A{)eFI5ypzsG3bkMXW03E4$gEZ8SaAp^D>H<3J
zB>~<j^`;Xvej~wvIxU122%s@I&_FtP{2MeV0UnZvj%U4tWC)PI;91oRKAH;h!AsC`
zZHP}nyXkPxAT@(x<_Bow8(16Y)EtO54al?+e;a7&AVjF5^#El0#-lp`6a=7zQUH?j
zfL#~vPyxD%>jEOj7(fnlhh~Ou2Mul4H;`+PLF4wYIjKM0p`hJNpj*8Rx?SIRFoNcv
zBtUzKI}d@^d4VkH4yfpM{R5eE>I|p=3t^k3`{MzgjrjwbodHj(A*Y+4sG$VvHiOmh
zw@Uv1|NkZY&Li-Qo)jV?4?^`phs>b94wdle3@AA6`U5n;4=Nat=Gh=sCFss!WT(Og
z^guI02-A~MO&0<gr3so|0Zj=m0F|yNgS3!AHk7TKP<MgGpHW8IKpUyRQ_awc9H=@Q
z)cGM$Er>eG4N45J#W3fGB0*OXBX7lny9Jb3F=l;0%@y=n9~@31ai#~<rGykc&{`H;
zn7qa_(=(6IOb@*9LEa2&4$W$?$sVLq2|QMc?i*-L37V+@)#ZqhZsfh9kdbciAR{w$
zt`VvaI<Wv54drj?f|U7?@~@O1WFj>0L5m+y1qezXpame{RZHNZWzY^dl$-}L&)W4(
znJvr&a4tL4?J5Dj`5R<DWIh2}uYxvtLIgn5QQfW*peZGNkaE}89=)NUTX~Qspj<#(
zwwr%2!uBV#K{TMGS#aQj3N^@78ni&n1m$8_&~`gW*rEp~RGlMe*B`7@2G0a`gKnsW
z?HxY>lG^tRG!6C!yvB<iJmCi#xP5~dxW!e%LZcfzTCECg;lSKPIJ&{wpan80m|G8k
z@7M)L?zS(GX$(*$1j>Lfk3musbdNKrEsG;ryn#-Dz;*UObb?~4^#Hb%0NSk!DwIEf
zmL<U!134IYXdd+F1ceV$DmekUCIobeHps=G=@iJ^8RG@Wi~&fr^N<f{hPT@nwCnqY
zZ|6bC3^BaX)(NTGOEkJepMX+Tw}Xb|p<*d06WL7uZ4503N}yF2Xt6ukDWK-!6L4t`
zPjjF-4u}va)j?H34YWMO-vpYxM-_!Ehy<Mg@&nQ$hM5H^TRRWF;P?uO0?_&fP!zm&
z>-Gh!hvp-&S3!5tg6sjc(jnf2)jEh!g|;k1LCgHQU7w&NZg3$8F91P%U3*;>Ajvco
zG(QHd%D_$PO7ILj#+GKV5g?t&sSz~JML36mQsC<ZP-C`&4b+gWgC08t+7k^;X`uQa
zM@nmgPL;s}NDR{811DhUefFS$!<^<psequfJ<xMs;B^p@`3KZ~14Tf$Lx{Dj1Y~n<
zw?l-rs{(BO0BEQiq5{^Q!Qr1x=n)QDpahEL)&nJ=rI3&u1X(e#3pDftDmxy1LQ5rj
z-M$KtaQFaT0eTRgAi6<EJAgZh-JuGd0TJMO2QzSBO-JPD<b&j4P~d=41*nA#F7RMe
zVejCjJ;;xsnR6V|qvxRI3TW#uXo|HHyte7XF3?UPkavWk-a(UxOtFC$41R!gB|)2Z
zKR}`g?m<wO#sXvrs0jedZJ<nn%*Q^Z2GWK+r3Tv54y~C%XA`g=cLgmk1<k?3oB!}#
z{Szikz&gjnz`%e$mjgWr4}C5NHYbysq5wG;4`cEMJaa?*+zoi%4tYKgd0q_{8_Rqf
z*c@Eyk;QT8#Uc)hn5&?!4g&)Nh%R7(><tFdrO;F8LG(0s$gB^DR^oun;eqJ49FRFY
z5bXt>!voRRp>ud3TAdfNHyA``@j~_ngJ=mp$Q&MsHie!-52ACSb9kiAWr0pw2hC`(
zFt|Z?+_8X9!iUUn)qzjK1f6HL3_icL7OrkL^mJer1}^v>Bz;EMtPJP`UC4|W=u9UF
zD;};6Gy(;&BOE?Amd?b$AP1hk0qsDB%#t-TLCy(gVTfghgeD6^E@<B`SX~8t9;}lY
zrcR6nwlh?X1-3KFgasy>2;alX#0r~d>Slw@gS}&i>G;hK)3J~PCbo_PCN_f$GBU}+
zAj8AJ02+#7VPJ&sJ{97J&0Bruhnxt<!oVy5n;#U0v$O<Y=2^kTJOm*79atC=;9{Wk
z2AZ9M%wR!Spg}ND?;kRQ1rY<0Aj}Nji3pJekq|M^3>Jh1if@oOWCjZ&2AaWwuux~P
zAYz~yEC>rUb_dZ5n!$pIfqE|x7U~QZL<}^81!1AiU_rz{gM1Jc>I@b{3^bnuVS&0E
z5PLy0SP(JL3>JiiI)eof1I=JTSg12t5HV2A4q<`D&mbm)#(*JWpcyO(3o(O*Z59eL
z7LJ&PO0Pm34-1-i!7&R39+C%@9AGt|S*WViqI?EW`2iOJ8x1N&U?N}v22fc75&_RA
zfrUUN3QVM+6f~a%Dp!z1iWwL{r3*v^l$JpATc9!qB9dMO*{ugEX<#DYV@Vl6<qbpx
zqzg2k1S)k9BA^@!DtjOzm@`bEG6}SY9Hbk9sW!ueG<pxJbD0@CAr>H!$RqclW(G4O
zs56YD05n&EG-?l-VFIZEm5He8^r2kP`~|MvXrS9Gpvs^p7rVo_pmVda>_)?!VM;?f
zw-_<&1Ii;1qd;>!;7EsX!KE`31LoWnw3ddd0_g%VLF*PkG{j_LPC&-o3kTAVSULeS
z8MLAuBm*%Sb6yIR$53|1l|j-RLwZ$lYDod)kYL!coaI>d$wB6*pqu6pJLRDMgicyP
zd5}pfC?^17Hk1dN!h+6b!ME4JcGsC2U_a^8(9*&Ta?~f{q|aF%kozD&H6wDm2Zg~0
zW5^6vg%gMesp)AlgN1b7D##|#LOdDJQL`Wp6oY1*kY`#!!k|6G3T6xp7eIwI0|Nud
znP7EDc?zUXft!Ir!<>O31)7XOwVVS(f&;c0EDw+&AWcw=G=l{>ehAbGF9G#U!Na_u
zlXg(HNU`q#HK$&~c9>~^d;g#_>`F92eGX8M+S*m16tsB`v^T-l*dBT_IhYp=;z5l7
zFBk=Ffx~uwRObKx|3N!PAPeJIVZDKF2Z)8B^Tr%N3wA(r6hFEHR6t$7&H#|D0^Ja*
zGXOLo0NO|eszf2`90U*xv;~?UFoH*b1Udu2JC=?+aG2PGR{{Pw?!W^I9*~EQJAl@h
zfVCfYkYQ+mDDZ&prh=#dtpS0m09B!2rbq9D0MKDFpz%rgMVmi7x?#6+g0_2PfV6vb
zgO3aX@j<%`ejIOjAPrg=0kP<K!xL!+2GE!(j?NRfqip>T99q!MENH(DDDsek3e+k9
zI}2$_@3;e~UBCb~pa!%o5@W0q)W-(RAl&&2HXhn<h0gcDZ1@1`O;_?jJ8|D*C0>hl
zyGk7V!P0zy6+8hVp<mC^oGJm{-ccglTr0s|2kLwC!}{KF(4Lb6D6N@*INbpT-L4Xr
zhe|-_NP_IK0I%om4srlF)}!0g;Xmj&)DIrV9Y75lkjFlBhyDRA`~(kkedq*@x%&#d
zxQxqNpaBS%PG1f1fHwFDQ3d{O0y{uQyI345Woxe0h$!LO@e4H0{R`C71Z9d+sQ+Jr
z1VG!3jyu3o7RZg@nOx9Bmw-nvcqZ8c><U*<3WT{5qz*ha3mTq8QU{y1H2^QQ@Ah(V
z-0?x0fngUYtNn+piUwt|QuZC7o+0!|M$pn*$Sy<B4o(5cd>&}h7G@i0>l!FUce_e}
z61uOz3;BPbaX;|#_Y%;uZHRk7r%85uIe2u3{s4z7$i<*WCTM2~N^c#qDjqtP(H#ov
z5=%ICUIc9b12t4Yk@I3QB*+y|&vAt60jucyjhvc5wKypAdO))_I5o+FGRAQS^n3-*
z0<UwMYb6BgK^tIxbO-o=4w$^q{6nD(n)v;@T_wQb)_L&qqs|M>FBlbFK@R=V9pK>t
z9;E}FXz0^<(DCvEm(By=QMDhP&;ueN#(@U-esl)-fUQFc0MNpJP`vkwCV+-MI|D%Z
zRp7Wo0Vga)^ok~cI*E`&zyyvvlz>_@s38Fw*9C7~0ht8xGkAc*1GGH2^+2gVG%!F(
z;X`+j0c7ujYv;kvi;kBcBGLyaX}ENr0!3Kp2airC(A+d=U;&hiO1Z#=^vixovH79f
z!KC#-DR_{i+ra=HI-so9834|4@Up=51EPcg>9clKC=UQB>~=5#kCcK0I}dn#zX6%J
zl7KD7?sjlM9S;0}WM((Smd*f+m){^^^#Ll>?O+2Lm;{aTfu@Amx?L4OvtGV`K#_%R
zjSnc4!1J^=od<jv4<K3D?fOU46}%g#1hiQPn{H4TBk2Hp3p6lg17^Y9_&OBAw}H)}
zedr8;DuGZACYFc5GexL=1m$8-@K_!y2AxFup*z3=$pj1Z<ka{Ew7w30Yqzh!i;^Fp
zoKXs{%sjds1V9BMXqSKhs8($~PzpNpPXIh&4;u#CsRXVjK=~L{+8^-fc0JJTz+r1|
z4>>j8^}ull4hKlB22unYPZI#oSA#~i!Dd5FcLf;@nSDIa?cmYr3L2|E(Cq*^?YkQ^
z6}hL|^+l)ao#U>cnHNx@3$jWVRKhg>kmGOXQD6XV-|Q6ujXi^opuWP$zyLpj8pMGe
zL4BYbR1t&cM`7-Jc|)Fo;k6-nMuPR_1$hPr&?a<HF#tX?xij<!cvH`XZr2BpjLqo!
zq}lZWM|151{<4!0ZwoX(U;=H8Y-eC#XsmrA-_5{KS_hFbXgvUqumi^(3_wK{(!d<j
zY0%xF2RfY;x?P`ixK8MHeRA*xM~CY~hye;7y`d8zhZ94G>O3H-kGq0S&R{t13OeEd
z94N;fI85ys7+$i;gX87^;vnz?;6kqTKnbY$2Xl@)IDqPQh#jC7N$Y_UbCA^!IQX|8
z=nj2y@D)cdkHD^00Vj^m6W<?op3uB-@de|BgD+S*4|QHR_<&XOg66@_Q>~Z4qqIm>
z3aHEj1#Te7DWJ>jx?P_%Kj3fv!2wqZI<vu}6MT?0TxFmf1H-}GCoIjm4_Kf&4sdk3
zo`JX!6pWyO(gWS0XF3B6nrqMSmxEea2f7^$tX<C(gErBD+yJ`11>NNDvJ4E}u4j--
zp97r%&=YyVa}XFY0k#zEK2RI2+x3YmsJqsBpoD#gtv&cKYfw6eL<9$FM7->fWnh4&
zrX~<G_YLU8arl`B_)-&OmgWFt<;Q_;2hfZjp>UIwg+z9@gM=#RK1j$WS65JAfJW=k
z1LKtpL^&)$fXWMSf`CMM^CL#^916&Cn4dvK4=Cd_KVWG+P@+eLRB8qaLs*sr-G)eX
zmXn8MIhgA~m(#;s-x<IHjy6y@Ffo9(@cBXb0uYBgpgA0r*k1^AxK08yBsyFtLzF`^
z9B9aZhzw_r?3GE<q?aBruYg)bFt6}$y98Os0uwm+iUZQCpl!TZK+0=~B`lyY<Zl6G
z5P0#pQHpdAc85Oc3;@;SV9$VR7Svb+O<h84gv1&ZliO=ha}I7TX!#U`bKC(ma0e?h
zEwT7o0MdXt(CrY=>3XBv^#*8So()_X-Ds}8!NA`Fy2K2WU|{hFS{eZ{9a?{arnJBU
z-2qT920$7dXS!W)bcdb+Hvl0D9AqpHl?lO2>voXQc0JR10JK8w2B?hj=nm5G==Kum
z4n5<+coEcE_Ut?Wo9jXjI#5FkkyAls;(=}lg>GMvDL)X4`#@%btD75|u5Y?sZ+I|*
zRwIJy?*MJr8=w}u>j7w#bvp#K9w=dbxkCa{Y#@%+1{K^^$RWo8NiU$I%b>+yvjk{C
zALtx3hHlpzy#b7!p%Bx5cz~}x=ihb!TEN2s5!40+2MO%Z2hg^+1Ko(^1DU`EoxlrL
z<^wt=7u@m)fb7CO(CHP>dBC$5v^o7u2UBzH8HN%bNc8bHl|$CrQ7Od0W-Gm%Ck_c2
zm=};!8LXFf05#aGk%LVDBiMYzDG4@EZ?FV2*eom$6(a{5XcYn|bq`dqrHkPXHrP5~
zP!h924l8g0!Qavhy0HLOeaMNCQ6xD)>jcnxOHdZ!-+sW_^$EOv5)bMsptVmnih^PV
zy~zcOb<hzp;1mhUTirnt2Y+#bs#0+49V`yL5d>fJ50wAA;f)Ru@3;d8sGafBR21H%
z&<8PzZBodWorF|worl0QhbqH=1_nkD2h2M7fCJ1q_&@?u8bSSxa0P1H2I?j|c$|o|
z9w_yM^cz8aLCAvU?$8&I7K{L>sDg|R2*8(Sg4&jlUhjc!&^isD9iS6<US^6hAYZIQ
zphX6C2q<uxYb99uTO>q4Atb@Z-@+#XNm$(uJfNmfx9fxE2ke~(FXujKPJIAc?*~d%
ze)bFuFYgN@HT<s&laP#<z~KrT#yij%z;iM8NptQ4MsUNG8MMkuuK5RJ5l{0ErV@wd
zAIv2luR&dQkkyW$2178&10J0RU&wv{-vt7aaJPqep_KPv?h~fw+y_iAoj@)GC#~ZS
z94;V@km1o@QPA)@TGI}$i(MGh-bL{?yaN9qM1nUV$p_XQ5NQ1L|33qR<pp>)X~U9D
zx`aTMKjGgF8YctQB3M(96U?uyFXMzD@pasR!x^5gK$R}2nk~tPl-;0X)ZV}<;uj#^
zi%wT?MO@1IQU+utq>cl1pOO06-L6PA9GLS0Qr&?DK0u`(a&`Ceydc~qpoH~uzaS_=
z-Y}H1zT6375}WIIp{YZ@cLMY>oCBQ!H3xH_ur}vDU<D@;dC0oG1CaAfP^9>KA??`C
zfC^Z52$Wd59cpal7#SGK!9BR{2GD$E^AEW)P$ds)>w|X3p(Tiy{{)~OY5?uZgN`eM
zlA0?h`GY#k@N{uQfP{3x1ZjkKgN=n%AYC9kz!yP*df*SZ7#R4svoP^*zX0|yJ9r4^
zfJgErkLE)jX`MU)2Xmh=H|IWJe$6-m?7s;h{a}_u1!x^v;{X5u!N>U@AkrR?UYPmE
zSppzlhv;qoAyl>%EDs+WKi~l$8$W;;8$aLy8CyGW+@Sz8j|b7yApp61>wrgZ0BBM1
z0iWIm(A+RsmK8K3>;c+$0y-*R!MF3E;||bX9gogKh(fH>^+a>+2?lu10i7I+9$NwY
z5GNl82P;x+xq)H}bjCT@zHac~-+^w20>}UzY&@~~1*5X-lg<Mk2OltbFoMnnblt$e
z&2=OHwgc9#56XEb@NakBl-B%%zr6CbF|>j9h>zG<f87i<3tW;y*_y7PMS9rchkv{8
zCQwb-dBCIj04TbhUfMB%QUuru0{pF@yTss$FPdm)KrL=Qzy$Ks0Vo%zn_3T)!t%#c
zEM?UNSR)@C;*gU$4s?Q3DF1er0RHWu<|#P&GB+P!?sUBYFJeJQB0<Abu(TBJkx9J7
zh9}hJ%?FtAc;vV%D4j5XUBC`^0VLNH!!4C1-BNZUEv;`pzzy*>dvops(58$7-Qau*
zYR>a8fzo4lKn<7z7f6g3EDx4}r@}mXMX`kV>%`ZfYc{c^7|^&5sA~f{HxZg-K$Zmj
z?+m@sdZ6?qW-;M`Z1D+Dk#PrdH5q7d&=xfMRLc7DH#a0x@o#UK0J^~dDMf%+e?uEQ
z#~nC88eX1(Do4zr5iTd7WALCt0Z~qPK+A~^SUCX=Cl7FO0otmj0V*>T9Kp91?gWjg
zgFAHS1qJA8Z}fsf9p*^*lpd(q0!`^1IPOpaTA~1o5ue@$B<Fy8r#`(1=RgnA0(JUo
zAi3117koI}0UyQ-814f#(XhJD5tN0{0<j%56VVMG0EV||SYMVQL_NT@{~K2RHc&Cp
zSo;E0P4c&G0%cL~<OJDm$!^y>pzbU5%2r6j)PdZgXHY11!-llM<79|A(U*%j85my9
z<%Fazh&Zgs_8_x}=AXd7&2>Y|0sa<sMg|6WA#KY^Y@zbH5o7@Wwgal5PB`e?LC_#Y
zx9f&Z*99QYfE>oZ-F1-*|8`K(xsZR`3I1)a3;4GkU_9XnPJ^Jz<e^LF2}ot)*m;nD
zo9jYQH~paF<(Dp<CtSb>Iic1t3;DNQfEH(r7eEDz8OR?HU6*s8Kuv(v6%#<S%1|+A
zp93uP+6-DJ`Ed~I-Ip5w|Nn>DjI9a)n+ugkwhB~mBig5+AZvkanF2M9d_k4%QFaCf
zkU0Og1I-T<S`U<fPFXtuiRJ&$K?GReY$mc=(6x}T8Ydh}*2qCt%nwScpph2PrdE*M
zp78c>1ZXw^baW!Tls9K5HdsJ04PKW0pd55>5N!0M+aUs5g8>>akP(({hX`;$LXCjM
z8F(cC#IfBD5zsw!2Rgyw3swrz-8tcfG&DaraCkxe0$pTqpxdDYoAo%`E8?I;v;jFS
zi-9r)ER|@m5gQyY%l`lWkCF#627MmzVkO#l<mQ2Gpw{7m<_E|r7JTv-T44@au8xvn
zLf{z#BmH_q<GkAeGyRsc5bGsyiUMsbfTv&3LjD5;(l1O6IqCPf1BVZ|N_qk6>z!o=
z^<ZCghu(n<*WQ3QD8$<J27epq=n*I%)OU1+N?KUE-YABQzJeFgfJPp`wNI~TCzfI$
z722QZcCZ0y1o!Yk^U)CFJh}rwbLt1W9ZW!WKz59|UU&^!;&A{WX@e{YaZ>=uG}y>q
zr|XT^pb6ar-3}p0^X4BQ`-;HbbEMI2c&8fDO@^8WvI4Xy0o0KP^{t^(q8~iELoYxN
z?!Ev$xcdepsKX9ExEs{7hVDWI6>FgC{$&vp1H;Q)@GX<zPzJ5zMl<n1cTfQ62=Eu6
z`7*dhOVEl3@DQ&6s8GxVl>)G_KP8ZP#CFT&LEZ8fnyz<15z`$Y)9ng55?lbXdh0-U
zfC^0LKqq)z7h)*Apt<%ALkZ}PM$q7K>wyxrZr3~Tr3fD&OA!u$$J*~8#@Szk3?!%u
z+)r`>&zd5}-5?X*kXV3@Rf4vSLToS90gvWM5HYF;-sb)UWJPz70@Bb8_z+sOtPZ+V
z1M6swKRjQ9R<VJO7>2l`Bp+TqftEm%I*HfqpaL3nh4mNqU}lup_E_B$U=JFKJppPo
zzg9Z#dIEIx<7-Lq3Z<8z^RysK_ryUd?!tZW_!?*=6261Jo3!ysNF;#Pv4BR4LF*T+
zUGJ2D){cQY8X(7j7pj1HpyopvXptEU<cNuG2MKUN0!nkBg%yzYK6o`!!X40>3-E=L
zpu`?z&%gljLL4X{z$Zy_Xu9qJ>FjopfTvrYZr45FN?V{4vd)miq+A3}%Agx<p^*qG
zeZVU;x<l`He7}V&EvteY0`dZ0WuTPSiJq7tA?O2ZL4d|(*>`}}ib0P71bYV@e4uf+
zQuZC7!7U6qP+y`1Jaq_al!HbPLB}Y9iUY`cPOvEgodF)rwR;#qE9veqfX>5|U@7GV
zjlGnzA9p<gI(x9&^@K;`5zq=4wDnP-1&7&J!I1)8(gliSP|$!@xPXR^L0fh~%beh=
zR6)xFe|VrT4+Loe$p}Cu?tBH{3kTr~+|ZZgG`|7wEd;I60<91PCy@JBz;1yq{sSF^
z1&so@bGjWYS`U<zK+gWm1+7_uoId{pRGA#=yZ|0_1MQ9k)h8f9(8hmId5(7AB}mG#
z6SRg0;=}IHAKgI~ouK~skM1Cw&PyJeAhrZ(_7S$(A9U0K_zr^~5IYqRHz}Z>%Zt1Q
zj|;_9(93~A0fyu$P$>hNG6gT(1x+@<79D{Oh6nr7fx{LgUh0H(KBd$33v^R_x9b-~
zaST0evfDwy+Vx8b`wnoi;SOC*2pTdAg?7imp?~lOXvN|O(AknDps88VnnrjYeGQuB
z`*GX>bej_VV0bLv2Ad>)861z$GzHq-jqYFY@}W|w0#JDfT2~1=wg5C^Cjnh+ikV~}
z%ckL>3p!-I)AbMJ#2ALxp`c}&pp${2bFCLZC)$@o&lX_a@t=W#!4kCM)b$VJYgH7r
zEeA?Cp{r_NbMF8xgaDtZ{-@dX2V=ME4{KM2Vz%bmKg?xwK?xGH{#5|9*ckchR>)3r
zP>zzk1ok~N6|aVtZQyw`(1{t4a<26NcsuEbZU>*{AME8^;6p-R)<G15HiO!N)^GE-
zfX@E{wHl5)aDW6r%x>@sO0Z7wJkKMLAY_6GA_zOkHNXevC#!DPKj7KuKcLmU-9a9m
z2RcGnL1UR8x*a?YzTg0tR38wA^ag-({|Cr&ZLq07*vof;EJ7Kq{ov8t0UE^y9hA}Q
z`T$bazwigGO9gooa<>C$MIC5geB(ioQm7hj@bXyj@fzI@9H7t!<x&C2A`k%&@WHo`
zf*HEnR-ik82e!lyS`mDJjdioY(l%&AzCgDF4`gW_=yV(KA<@19FH9~$szvau91kQG
zUqISHAD|suSaL&b$cL0rpg48C0FF~=f;9x`hejwUoWR)@G|g2C&Ntnl!{tlSm);{X
z3nZz4SA2sG5I^|h`FW7(rJ&;h1VD%F|NH;{|4TJUGf)C*4`>1h#0D)^mGHo_Zux~r
zbL|U|ZqT~rmoGpm37RoL(FR(N30jE)x+(%@4AwQTP_scz4ak~T(1JzqifB-S4Wt!R
z(1TTZbceq9e*sd3SAgsTU6Q>6v@Zv|U==<l1>S7_0<z8;GzAD9HUga-4UJsTYT5))
z()4IN1YXK-d4azPJk0<(@E9g{2h`oRyig80y9A;Kl5jm(!Mec59eW)7!Q{aj0&)**
zeI)2yB5-B-0y^6P(whNxr0WM#^n!*QKX`OEfX6sVwi>b@0Th-cpfeUeATJQ^ywK_T
zq}vy?4it1`61e(8n%4uJGY*+s2KSUetvirkG;pL@aN6<}c+qzjl(0&m$rdtB16c?S
zPPT~s58$c+Y5g^{c7~bbhGLFAa`Fc)A_q6=K!<ZQpI`xp3h1DO*PsDJu;7E=a6y=R
z5t#vz#~z-6Iu^7E<26Q0q#HaabMS!xq>cwQi9pk*rO*=s0>A_9;G78R+LnSA^Zw|D
z4bc4Pb^xzMg0-<uVEPqYbH&2k@E<f82X6jC^B*|CP@?_^M#=&2>VTZW3?soit+Cy#
z47wQ_%PwlLdSr3r6P01&EKIB{%+Q;rVPf1YtlW$u3>f0X+Jo#yTsy#ViNoB0!!A&M
zZvqhv3=AN81N3xfFwF$HHJXQsf#ET9&ohWtWMN<ct%?EBVJwjSVjx-xw9yB&>zb8;
zA%PWgx-*C_WM=^1+6kf?v>3p5bb@FWZ3YI=K3EWaQ=0*_sfYnYU(jIy-?j;&&2<^T
zcWZ*^OS%l;n>0c6GJOW{d8;7$uRa3<=r{-v9c9G809uy~q8Ax4fN#JA(Okw1p!KK>
zAiB?(fdO<x6^MRh%)kJ;%Q7<$bjWjRa*0AlYGO)ikwS7tYH~J1X<l|-etDh(X#Xqd
z<mb%%JcZoUl8pQmhRnRO#GK3&1<<XG`Q_k)oZ-r$W~AjLrWY#|r<O241(J)B6>>9+
za}!IFGvEd!<>V)4E0k0gq{4-YOY)0SQxqUFkmCtJYb+QT7)tW<6><~vDq)8f<QFNV
zWEPhs<|U^p6j$aZ<>wT`O-asANrkF|xB}+nq|6eixI$5CL26<N=+p#=Z@_wVbwREy
z&df^(os_McpQa0T3EbeE%#zfi#2kI7%fLQ_nGJIds*R{R6hOAXO@rycAqw(wT4Iqx
zQetv810tG0hgU))2_Xn^5LB3<kb{9ikeh+Qiid%Llb3;EIWGglLOuqD`}_<HQi2Q&
zUP25EEy4^8&x9EmibWV0x<wcmCW<mJIEyhb1c@;)h>0^W_)0J^RLC$e*vm06_{lLa
zWGON*SSc|u7^yHYd{kjzh*o1@n5@RYAf>^;uug-4VYdbY!wK-NA!w$8QVF05e2xGH
z1`YuR5sqR8A$EBN295#-1`Y!T2F?Qv0_<E23>*mz3>*p!44exX7(m<QIT{!kI2;%l
zI3F+wu(L5Ra6~XLa7ZvPa86(lX18Ww;HY3=;ILp|;Jm;f$S%mhz>&egz@fpwz`22e
zfrEpAfun<gfy0A=f%5}{06Pl<14jr01BVEMD92+4VRmf>296R21`ZPj2F?=<g6zBu
z3>+y83>+#944f+%7(f?mbF?rpaJVoqaK2y=U<a8O!@$5H!@$5fgF%Enn1O+#hJk^@
zhJk_e27?g0I0FMm4g&*+4g&+{4h9Ae9tH-E9tH*u9|i`_9}EKQ%nS@1K@1EWLJXoD
ziy4I3l^GZ~iWnF;j2IX=k1z<bb2Bh-Brz~>C^0Z_E@5EcU}9k4XkuXCaAIKKe8M2W
z&d$KV5yim3A;rMJIfX%l-I;-bql$rn!-|1{^9q9yXq^#976Su^76Sw476t|mP<VDR
zFmQM=FmQfh5MXCzVBiR2VBipA0NtG?%x=uUz){A)z+uL~z<Gv2ke#1_fg_E9fkTaf
zfpZN50|zL)+ZY%)+!z=*-!KTUb22b+#4#{%$T2W*&S4N?PiA1?sAFK@uw!80yu%>G
zF3rHek;lNmp~t|$xrc#)gO7oMqmO}s!;gW1^A7_g{sS2pI0P9)IhvvIU&z3~VaUM1
zc?cT+i3|)JiVO^#ix?O{n_f8@85lSm85lSpLE}G?fq_Gkfq`=pH2y0Y7&t5$7&tFM
z<3E#ufkTslfpZfB0|&^xoeT^do(v3}pP=y{%D})O${@hO#0ZK1QU(SNQw9dkQ_%QN
zWnkb?Wnkc3#lXM;3a?fM1`byS2F_Q|_>W~^;E-it;G6}G|5^qH4qFBW&Rfv<&t+iX
z&}CrY+{M7a0ZLE33=AB;3=EvVpz#k%Gr|m_9EYLtU(CS3Va&k5c?=r=pfFWtVBlQF
zz`y}YFU<@L9L@|3oX?=~AI-qPA<e+RISm^B)eH<A)(i}s*P!vA&A`B+&A`C9je&s!
zl%Bd77&yEc7&yN{<3F5%fkPZA{>vE{ILsLsIL|@jKb?VrL!E(va~%T%2PnO@Gca(t
zGca(zgT{Y60|SRV0|VzgX#CeRFmTv2FmT?3#(zEo1BX5X1Lr;l1`beq>Sti!@MmD)
z{0EJHT>1YXH2z`ve<51_e+Z3#SpJ^~jel7FzX*+gSpMILmj6FO;~!W4KM9S0SpHv$
zmj7Qu;~$p)XF}s2mj7=;;~$p)ccSJ0pV0WnmH&@I;~$p)m!jqWr_lI^<^QSB_=n~H
ztI+s|<^Qc{`Tr|4{&D61v(Wg5<^Q#4`Ts36{$crlE;RmO`Ts67{$crlFIxWp3yptV
z`TsC9{$crlF<SnA42^$S{+|que^~y%42^$S{@;w2|35?HA6NcA4UK<T{$Guj|6fDn
zAC~`TL*pNo|8GO%AC~`jqvikK(D=ud|BplCAC~`@qvikS(D;Yt|LM^9hvon4(D;Yt
z|Lth`|2s7PapnK>(D;Yt|Mh73|2;JRVflYPH2z`v|2{PSVflYQTK@mfAi&DVAkNCj
zD9kFzAkE4sAjrzfAj!(eBFgH>Aj`_=Ai&DZAi>JWB*Lo5Aj8V2AjHbaAjQhaA;#Ls
z;K0hjAi&DRAkNyzD9kDe(k~&%$_~=cCd!%!(w`u}$^z2QEW&CC(r+Nd$_vuZBgT3V
zqMt#K0dxpB2Ln3;Cj%P;7XvE;Hv<a;4+Ap;F9Q<;9|I!;Xh$Hlxq?BtJ3Ct`XcVQE
z8R;lEm1gFYC?r)X_-5w0hwFx$nJ5$#<!7ZPmuM=O=vnB2wvPuf!_FJ3Vuqb9WXK9T
z=g1q*@?(RYH*^rr`V41<bHH?@z*)?ku=9ot;jFWqFm>PItUxZ9ST7gk^mY~oeQuao
z9GrEX8)n`j9vCa17shhqgRyMjCnFW{!^D;dz*x5hVXWywFguupVPf(kFc(;g!esZs
zS<zy!Fz^zG$=-ys93^04Pb3%^K<B!!F#LdvWl6zgLE|rK;4`LbWME>vvM?QrvM{l=
zaIu4Mu_!r6kB)`mjsi?wpE8W~SOvzqr3Uj6gF4JdmFh5A9t{|4nI=r#SxuO_25p!x
zx4~IKIxyKxIP0AOOdX3MjAd*DV}TMT=v*ks$x;v&sHqG(tqXFp6hsWPr3%6Vom&Bs
z1)Z4$5d)DR%*+7V6a$e39isse12x|vEYQhP5Lr-v7b0fD0J#f>nE`aN6hszuf&@es
zG?4^hfetHy$b$CoL&QMGVnA4+lcgZCpu15ZVxZAE2n%$w6hszuHwr`ybg~qL1v*&@
zA`3cM3L*wNSqj1e^{64Tpu15ZVxW_yAS}>i7DN^_;0qB0jhI1Lpi^%kvY-Jzh#2T(
zDF_QRtqPF^omK!51I=7PSfD8(h%9LJH$)7yKmo!6-R}&M1&x|R#6Sa15EiKS4v{?o
z4_(l)pAcD4e;y(WT7e1?y8u^r1vKISx>Je)w6_Z)dj~H204@vKECZ1RtsR80K%)Q<
zlR<0LAYxzOdO_m?5LwVM@DN$hI!y=*bb1X$7PO}uB*wyUgAtN8SQzfWSr6c>CvX;M
z1Q?>@4P5L4ob?6H`T=Kw4l0M}0PX#Suvp-?Fo8Nt5HZkL4TL2Cmlc7tB;YI=I7<P}
zQh~EH;4B?D%K*+YfwL^&EE_n>0nP&5W({$R2VBet&cZyM40g^D;&d`lZim%MpfkI$
zolXW)13H%vG<pS616m!*zyR8M4I0Bjh}bhQFn~e_A>zvb8P`IHM1#%;WC0yJ13M=Q
zl-EFGTL?9!pcKUlQNs+foB?!}6zC`n&|+7JNG}5e1Lz10gb3&`QqWi!$Q)+aWhD%t
z5iyVm#Lb{vLP1*<5V}B%P(dSQ2sNM!?m^>a2$4$+4B$~SgvfIS1_sdB8A1e<l0hSA
zAQ6ZQK_LkmM+1pKZ0BcWU;vG#Aw)n|aD&Fw5F$E^3=E)=HH3&QBLl-CBS>gK%<*Mp
z0FSaE)I>5eFo4F|AR@@8Pl0AKm>EH1aG(+t9GGB&YNxItoj3)WIb>!8<yx>6a02<X
zDbP73%#5I}H|p_Fkdwe5TEMZx$i@vhMG+zfBeOsrVqjnZ4fbF=b*(BnF()S<mcBu0
ztSTA#1T~Nd=pLPdN|=ctk>sLePz4AT0*NH1<fInC#Xuq;$x^88kTcCdBF!iw6BtqM
z+JR=b;F83WRObxPXeU%8D784X#5*;$0G3X{0w^3K7|$~=vjlPb4u}W8iYK5bGdGnX
zEwdsur6e&aC$*R%Cp9lEvqI0r$ikEXH0lTCm@$-sPPI!d&&*57FK5UvN=Yr!Gch(a
zfmwod2%39piA!d3NoIatVo@bbJ{X&zduoXXcqo^lxH2!fI5n{dJmw0%*e|#;FBz`6
zGA}tGA9UC&)cel)1#pu?^HNfaax?QlL$hF=VW2VJ#1c5)H?asbDhZZz&QD1#4lPbi
zK|T%+YG^z-2w--`rzIAbfH<H*P2$gWGcYhUQ~&|Qxo#^|7#L(hQO$sPGf@MmUCGG6
zPywo@7#J8p=ONPLTsKgwX$|O94Y0c)1o*r*P%MKke1Zsp=MZj)GcXiEufqZzHU?IQ
zcCMQPXedvDf#DTY9cV)n&U4+MeuY}WfOM`Kcs8puR06c51%B-S_|Pj2)I+Zf;D=uQ
z18o8T9ePzF3^^i;2kG1{=puq!AT^+k0t0pq7HHlWH0uaDI}Nl(;|KJFHppqzKRUt3
zi0uLu1)wuyKucC2#~p#zbtrgrf@dv%AdV^e0X_N%)I0;7O9z_|M4bE70Ghys>`g;E
z_o)H22LbE3PmOOtO-j%)Kd@y*&^Qoa059ButU_r$06ShR7_xH~BHZbE0z9vY2;vja
zg#jMjt|t)3)SZAj9jv&U!K2d^w2bHgXmTAi6$v`o2Rh5x>H6ikE2#O$aNHHt9t0h~
zZ~{CL51Lc&c0B<)=*bl{v45i5fkPLx6s-A&5P$nLVYJhI43JOv0dZib`<#I9`F#Q1
z^ZTYb^#y3E66AK!LcNzkpdGd0&9z?`O0_+DLl1a>7Yeyb{J#Lb8LCvo<G3rRNz8EE
z^#W+Q*h>}g&fqWLMXAvBuLod<xV!*GZ|4O@*Eh|sFF2ZOUoe#|?sk0x+ZlWUyfgSs
zbM6a9uqfKjU|rD8VAI#2Bj7;}1TC3(4Vvl(-30LBH|P=%a8PrA7SO&1Ez<+3LfHlk
z%5%`|K_EHM9;So2Z<v~MUogE)2W^XWMG1-5r1@M6yjhq?pUZ=N4&E&M=HM&L&BCA}
z1kI^0j|hU6TEBs8#yHU#5P+IMUP2GNI{{v&{Dh=f%LDD$t^L4I>I6!!IFecDht2>C
zmu^s^3;p5I?F(8ut?~at>wyv;SnR8To%qDs^$Td%@fXmt1lK3lt{*_W4<H_Bkpd_k
zx&A;}pwR95MAP*PXfb5B>l4U=>jPl14`4p{xDAl6v|XQo7XyI&4ss{>xDEbR4#*x8
zP?UnQ!OJ<I-MOTsS<nr6&ACLz94|QLnjawcE1v-GSAN6Vocn?moN%H0l~2I-D<erk
z_bZ<O?^k}q(wzGObPUf4l>N#lF!w8idiUtbVJl<@><Pr8s+TK4M?H|1YD@S*I}M2R
zJ5$+WaJWNufO;@`bcdek>;iSv;aiy*khe0w0T(PFEwHV|;H}JWn45E7FoT34`y;_D
z$UbH}(9#JTumEwEfRw@vhwWoN0bAPz*~fgs1HO;>1Y#fa3B*3;6VR1CCyvASF`w}0
zh3#WL0o})Z0<n+z1Y~0(XiuVsM`wr%&V9@mnrkm0_A!G-QqW`ZJui3@5OORog6wxV
z0os5D@*eih%WrUO26|C02;aQS-@XWxB4S7?3zEP)WQj=;FT+r`l)d4H?4Z_k1)W$2
zjRnY#cW5$!?sPr@*+ZGu$>a2L3(8Js&^A~S%iT>p#HL`V^T7L|UzE>+azT4wu(}*+
z_iHYw4F%Z%04iocHOEWPxCA(QAPF@9bP>b}wEfUmz~upCKlBrLUE|6K-`p+8-#QNz
zMWkig{oEvbnc3PEr<aerg2t#Az;1=?oCdiSoJn8KB;9q2q`QutNY_EOSc6>0-kkda
zw8i=aqzLJDebNiwVtoR#br@QPqHM9o5{a+lz$?G7CDrcGE8r#FNNE*h322M;6VMiG
zaMXjhcY|5r{napA!TYN%A^WRA%`@2kY9`38-V<2%SA)hl(aVO*pvG#qD@o-SbbmFd
zu!3%AKH<>|-d}wJv7s3jNRVO-WB)R!B@S+LcDkY#V4#aC&>g7<b0mC!HK;fREp|MC
z*k6t29MJx16z9P9SA!}-NZA10UwwkW{%TbBoy3w&`#7KltOK}Z*j)RCmA~yc_~^+G
zke$?^Gut2y@=#C@1+-XQpc~ZKkpMMGz%t-d{sg*1zd+U)p8&4}2A!>a0=zv2bT0J?
z$ijY5yBvD3D2S=;`T^Et0UbLE5(4qz%UfMR{RaW?;oP7_&khpMRo<X=&ydams80Y{
zi+=)q+9&8{#}nYwK3}}t#18Qrxitl14>f2A>@{iigcW#?Em8GE1f-ro*`Nv<1cYxi
z1=n>XY&3mC)@JJ$<&qPio2g-iK4{~$rt1q5y>1WQPfL{7<sn`N9V`N~6U5eZeSz2~
z3Tn@S_KCI}C@lo-prEuBz5uk&vD+1Xh$g6+2Hh?A0n{-ARbilB(#s-Nw4K|av=5R6
zx1&RlWs!Hj-p7*7)R7fK_PU<v3;^xbJ^|g}3cBxx#H#%|cpEG+;S4T=LEB(ol!LZe
zoPZpH2eKN=KI%7&p#1`%P={&*#|)GWZM;BtVxPdi6B~Eq3v(wnsJ16Decfj!wtjyZ
zfV^KDl#NK)uRXxo=m&U1DlyUf5>Gb5wm17XmK53wZD_*#&**!zDNnEJM0*ID*g(x5
zXnGBS3gJtyFf~}xYd83o?-Sh~pmV}cxO6+fsvAek1I4V}t{<S|N}2~dPgou*gDmIo
z6%~Yxl!3Nqfbu=KVH?8;I?0Rj!2n5+*`Sds@QK|gx*b9wTg0DqgU1AlWg!Rnf{wTJ
z0H0R&q&xHjRLN_wi%|DsBNT#$5+K19VD0*(7<AMzXnX*26gG&3JW>D|NdS#1LdT;(
z!-_Yc`>}68_hUa{Y_5I60N#%c(hoWf<mbQt|6d0mcLkk$1Rj0sb}#`AWq>Xo1l8l(
zt{)(~071D9bmIYHJcJWE9`ai9wfJ$@3*fDDe8*ic`~&rFSzo%p0qrLO4}(DWut1v@
z-L4lr8jpa+A>o@XA!qr6hj<~U*@3oTv>t#DNrJB_fbP-I2DeqfQ6EagZc2sN!;qZ@
zDEkIr`vbsx0)!BI0-$>dKx1f5pavr7o)bm}2GCF|Xj~jbi;6LT@5utuRbrr79>ltB
z@B(cj7LkKiQ;*>F;|%3Y3=Ho?85pK8GcbG;WnlOv%D`}lm4SgtjDdkojDdkmjDcYa
zF9U-RX#KYs1A~+p0|V$#PbD!11~oAT1}!lLh9{y744Pt~m|}pg>%+CKb97zz=(=vu
z<P~gP=jgg_hS7E13=Hsn9i!{IQTKI>uIq;E>lt0w4cXT*x~_Y$t?LG@vIDK7Wnowa
zT~Wfq5XcB=m$EQq!&$LRFtIE+D}xy(Cd>k3{b6BXkOHq-R$_yRoq@9q*<oT=*clk4
z!RlVX#TIeGWYf7}EEXOZYbp;+$4a=EDKAXSlNYA$D=%!#<^}<n7-(W1v~HM%p;`nc
z25Rqdf!CRWR+2$jpq0m<mBx^j#}F|PAHo8e0OBz-fI<u+23ijZVS!d2Lu5fKk0D~9
zmB$bkXblZS7PO`SB*wyE0$N!I4g(7~%LdMJfU{iSEYOX{5WPNdu>d#=v=1L53%c(Z
z!UA<pA*=+rx)eAo1J25UvkKs>5;zNV;sC@HtgAf1tDa!1;6UNZ0N;B6ULy$Y|3G9A
zBq+o{eIt+>$SOuqD1mxL;5B(*g`hRrphYMM5myFCFAAg!vO+Nsq>_t)0ig!8-Wt@a
zf~dh<p$O`2fmTm}G(s@#Rw#n}1hE4~Vy;jG%~ykZg)kMcb$t*%*k6olTnr4LWeyNA
z7?}-aP<MqQ$j~wn0miWPh@gpUumA%{WFqMHTJXv)m8z;L(Bik8#FA8}#N=$qszIy^
z1x?J577Ch}BkO{#6ErfjKo$nA6@)C;M79Ro@;k1~ytI;{)YM|w0zCM=s)h;*2B2kj
zP}0!Az|71{LBYt<0CKIW0%HAL6ej}%WT_kG`nv?sJ{C}k2%0nk=UY&pJs<%&?Lfi@
zlXPGRIG~qQ4BhpODGw8A0I36qDolid0aOz7fFc+n!~j|^r-!r}79<5qL1#ck7>EPK
z;PrQC>-0eCZh&rphx!AQ_dx2f-K+Wp!@K~8P>;^19*}F^Kx@dLM+AYEf5Fbc;p=w&
zlXl$2wSj@5+4T=&bL}7gvNzBZQeJC;huXo%0ZV|cYT3@fzx{wm@&*3wA)yV;hZsF(
zq;-b4HXzOeDmv%U?P}1?(CPZ-xa$Yd`tjGo-L4<_x4XDDq_rL>VS3Hgocn<hJQeV~
z+w~1-)QPRz^+TuY8?acwG1mnS$6OaOrX6=(1fBuX0L>Tmda!tOhiZ6qa&?C;0MA(A
z5H>gt+9d!viRoo1E9iJQ(2{-zkSo3*xq_$J^$TOS>lbU+4@FPG?)Xy7*6sQQ>~7Gu
z0fytQpmqNYuT?LmKInG+1J=vG{eY(HgXY=?43%6vKu2M``~(`thXvbJkW8Hzctne>
zx%LBN2~^b?76yj2<E=^mLH8!W4Aul4KIFj&HhYR|0(h_+Vh!V=&J$^!5HV<+@RePJ
z#Yr?qoPYw>5knL-7@T~Fe|rnqY|vVT<V$ItJ)t0*K(Pop<=Mi6@ldzxkF-uEq)43G
z?Fu@2iyd@-h4gFCaI1w!r|SlfZr2SSovu5MyRHG%udi)9dRal6Za`uly{w@9Eg)sb
zUDtqSA79IQ^s<5$&_Sg^5d)P5CHUj6pgkiDP+x(A9(3#xI9@wl4}fo2dI3N6?+hrk
zyItSFmr{ZbhPl)2dZ+mXW2fti=2`*9QqIQOJ0Z-Vn-Q981(-^O8*A?bFflNcL9e28
zXJ%mNcKy={y7UAz6x-pt5D{h;@YLOWfYI7@O|kSb*98n1@@bu}i(Xe@2!n5pSyL2_
zO+wps4Ri$&DD)UF@NZ}6a9u!1<qn8@!1i$+b6t=C$q(JGPr5_@fLxCf5LdcgU!VwF
z=ynCIW9)XlqUj2{ccDA<M(4rHuex0?FkS$=26X2GXyo?*IQkcKGJ#g}l%DT){nPw{
z5yhx0ubD6AUg>td(j9t3@j~l?(vQuxR~SkJyIrq<Z#KQr?RtgL^~P&<XoNzN5hNk^
z2K)z=E}$X;oXjDGK&eBw>mO^^52XSVKqrOrx3n`dFuV)`E#?GG?14)gM0|Ka(kY_&
z0bR`r(*K6P4Kxhj?YaW&GHcf}{4JpE1K`naHgNiR((U>Mat#6~LBWEq)Aa><cs&4}
z(D|f0^aUt*(6V|x(`%7t*B6Z7asZ+RRBD_@HG|Rh4l#-F5CbR?LR<{F@(PsTLHBtb
ze8dEfix(ZB<Mh!*-*h;ErZ-WAJ-U5CYivP+9-0R|I!}PkcuMPZVtOg^_y7Nw{D1%d
z2NkDii5`}cZg?Qhfr2Lkk8W3xaiF6eAr1lyfJ<Bh(8>S-$jW5cv56BDplj?E4E2ok
z3=I`P3;2sN(=$pG3@t59b&U)R%@siF^c5UI+a^G*NKoEKV9;JdRt7c(b_NaxP6jRp
zZU$Zkeg;7XVFqyqX$E-)Wd>~qV+LymXNF*gWQJmfW`@NKhZ!C-FhSd?0t~27kO2aP
z7$8uX0RlxBAW)P60tFa+8BQ^P_RcUdK->V@o6E}}$RNp}$Y99e$dJg;$Z(K>k+G4H
zk%<wsd4-LUgOP_(fKh@`fzg1`ff2Ml5N<ojR*;P#+dwvfY!PD+V-RN$XOLi!V31^x
zWRPNzVvuH#W{_c!VUT5zWpH3{U|<B#ML^Cc0)<LEr~%2qz(DGr-$W(`20m~*CkM`I
zfU~;cERY?bW&+61kb@4G!N;9I`a4*A43KsjN|ymtuY*hix7ndF0pcTL(9Q@@<pAoj
zfm$sL44@tssE$C0fOd+3Y6yggEyxH)1_p=-W^Vu#J|H=eG6+U)(SiCHpxspv83c*k
zngh87s~V)19LNS{Mo?Q0VFrkW+=_$jR|2)qKr#r7++zSmCNm>Q4aio68W77JMBv%4
z1d<K{5#U&5U|?bZ?Lx)byv|8VEKb!kF|;&b$Vsgz0kI4jQec8c3@K1SV{98_lJg5H
z!MPUHng{KVfi=q&2(`<NVcTMm+T{&g4B-9lpjbqXL6Bz}I2af}JK0=7T~u(7o<8mJ
z00stzHPALR$Q>XI+Mj|PqaZO*T>ZgNXW)Pwt1xw-V{Vd={DG@oE&^2p(g(sId%^AU
z<|7TDO&Q?R<Xl0kr9elYg3jYcyAiqh1uJM}l`C|X7_uJ&bh#vSMO8QGY+(sds{r$O
zZ%_pRI;vO~)FcC&0zLP8hex;T1@KObEfAIkq=k2(+rg&Obqz=ix>z1`WyA&e0<8;>
z1zJ$~1dmSF8BlhHN2luq5WCx<0I3N9ZlU!+#7oe{JDO`>@RhqDPhn%<QbAZnw`)&#
z=o>}U_RS0r$PGvh{M%d`LHAd<f~M%fiwwY%=P&rTxi&z=!R-dn@pvDglj$G$w}&=$
z2)w+&3aYc8G(P~JI}SRMpMSe+6Zle~2hFKZ_(2*={JULWfF|rgx3|JqCt>$Wx9bzs
zU{H2_!|3{;+w}>OyQmp19hl)Vf%tF%-#P^L`fFzJ;$Dc?TR>iidK$Dykf5h23!WC#
z-~k_s+3kA31AMk6X#0h0i?!<${<eB1aAb9dwt({kIJ&J}H<amu6CnDT{GjXzUG;eZ
zcJ<Fs$QtzppoJUFwQCqklfbR+EnxEwcrb!)fqi1_`hdSV7Tjcg0=XRno@zY0Lvby^
z=yq*EJ_Y^)$cmSsp}TI^H6YhFgSP5-yRPXD-NJYQw9o@;-5O1(KOXQmgI2GClP>s}
zT3AxWW2r~CE7&h!J09>igSI+%yRHF;8KrIqwFbeVvj#nMik(SvB({)w9s3%zy$*N4
zf)8*7U7*(qI!YBS)bUD!?wf0_eZW*cAJk>%Z+Qz@&x6~l=Gq60{B6ewDSNpDoFp(~
z8Lw-|mqhmm_?9TpHYQx50`UiUZzVouFF~g`fHS^B>w!{hNO=e9NMc>Wg<9moi<XxQ
zeuEYRfo~v}L#$eZXEe}aATsTM7wa!oet|A^c>=kehZmH|p}P}bgI0@yE<^+!8iJO`
zUxN=7_po+7Q4Bgq{)30L>kj^=!k-|cUL1VE+zBd;AAqtdqw9}u*9Qk5Fl(ZB8o`}k
z(28Z~_D|6IQV<h%yTA{y@xq`5s^Gc{Tu?P1V0|qPKCl+F_8ly=3)GMV<sOgjP=QV-
z4sc?ycHL1d>d_qvs-!<a$~aa~1rF8>+8Mb6BDf1Ah|mo3)&)>E4SW>#h3?Q7odG@*
zJeuD$z}7=SRz*#ikO@6O6SNf^e1IiraT3x|kB}27;j$=)Mq)cq61>jp6X=vxP?5^O
zPz35^kkOB6XJ!CxvtnRj_`n8ZWwXOrAhW@3b8!Cv!U9<YYPB&lVC}ttTeB#g7lQL0
z$Zb|o=Z2XP<Qvo$JnecN0U%GJVB|I`D6v3#6evm<klUyDdL5uSFpy5r5H+?_64bHI
z6hQXOBlSJFAf3Yeq%3{#U_GLrV1#4*-q64hegFI^9|i_c=ET-daIl8-6H+`uu7%8|
z&}9ESQm+qW6X*<(92*7(B`*+<fdLfW*v9Wc+n0UZA!=YGsQr%|4<K>S=`|J}3=APq
z^XwTI7(nW<jo+I<{R+|t!mxe<>VnA^FClwE1w48ufX?m#FO2M*;J^(YEe92Np#GOf
z=Y#;b$b=1$jVuBlof9J9qM{2xTXs4pWWYrxECGpt_S1JxD1eKK9sr4UPH2FNq#bV%
z5C^#rWb^R`5ilEMxvv0dewbl`NAnQ{xSPRO6Ts#gBtcq0hvI{8f7MAl?lJ+i!_D;%
zV`J?fSw;qix_dCCpgWEPph_DLfd)0wj<ZaF&r!(M-G`|JU6X)NxdL>#<8hY>h;ezL
zx_cmN(~dXn0Us{|;v8>afjiq(pnC#{2NLg`0Gd$(v5q%zpr`=xK;oSfzJM+)N50|!
z>_yPddY4XD(Ar)B&`lD_mpmE|y#O^vT_$jJf@%>3#si(Me_o10&aW5fZkQv&z+mnA
zhrf>#+-LyZL;$h@wB-|_)nf+IFdbwN6kOAE`~LArKIzeT5MoCM2S_0gY*<&qgYg9a
zc7`<2Wtfom9&Jo74FpYM1b~Jn1<>5x9V*~4gMV8O(-P=u0`SO$xOf5wsKNs&X#p#-
zI9SdCn(P3Lj8p9A!{A}oAD}Q1K?;)#{M$(iyi(Aa{@^PuNb^aV8z>@CJsbk^u&V&*
zm;rdab%u0sfJSFs6)vWNCO?o8MehyBwtrY+>g@stTj&pv9uMT?7XTVV03|;U&>bJ(
zlNUf;1Bq@2j!xG*5J3m%hyrME0d!XZXt06919G$jnBVOn(CK;vrnnolS?d6N4?gHv
zE{508eD(zr&j(mRQ(7(opi3HEzc4n}e&L7Yv+fBCpb-vH2zIv11aSI<$HfB=#tUi3
zLB~~r1F8X}rTG9OD1U(Op6hlMKn*=uCPIx;kTLw*9he}~S+Iyk5(S(21w7ApppL8C
z^#JH_2iG@@=!xtBc<B8LXzUz(ugRS{)|byfO;)f&ki5*l-6ennG?#`hk=E%Gz;WCa
zbe0)t+Q{1VNR2|b>yhrzAK>O0a*93y?R$T~;tJ68P+F(!K5(#r3nTvRzWcgeKe%+e
zesN(uz`y<=c!!Sww4?$}+mwJW9)J{L5Y<0CX8827z{2B#590w)D1mPK1et_l3aI1*
zWxK}OKcI8O`1>0E{r?ZWf%7c5Tsi<A!1?l;1$vHvKzAs5fPf|-AA+5XA=T>v+B}S^
z2OL%)|MWV5=3qg66;P!EE;2#s3L40uc@P25<O?2+hd`oWT@Xva*M~zyp=zO)AW49g
zH-pZ=sC~o0-){n*Uj@bgOHkbnF$dir;4z&aFF^-=HRt{Tmugs&;f`+C9oDX(Bmz30
zuiJG8N-={-eHXf2zgQkB$phO3j>~S}FJR?Jk@El=IiRWKgV-fObM9#I4pxX%F(9Si
z=G-5Qpu05qTP^?p{||~Y&=z_ARxVJpq4`Ka?BUR0kLEWK9=&T+K%?;<oxUGBLx1>m
zx-vkonLh3cxlzpw)JK`&!3etT{GUg+D+6Rs5`2^U8O95s>g-In>lx65>Iuj~fCbI2
zCm5S+Pw>|rIqnKNM3CWidbjHll<)x!KY~&tIIIse*B)RfWqNIksj63o2{gVl12h}A
zpx1-3I}{YTX`Mcy3&3ZK9OyjwLfU|VA+3|S+4Trxx9bsW*B^BgJ(`b1M8jJjSjtAw
z{(W$f2U=Iq3BI@-%<Xm%>2$qw-1P@&rWq7v$H5geqM-vSqimT#D+)l3I);~>;5z0H
zisxQHf(Vo!{6S_wDtTxE@0<Xt@xj7i7P#aG9ZCbPI#CPw?ofel*FPRJjzKC%hSySH
zE>e_(tb!DwpzI5tQN6?8ll}ky|CiTbB^THSIBajO{lQqz37M_^0o_3by6eLy`H*Mh
z0Z^&!)alX)>W+e)hiH+2F4c1Vg5m8n(8>!?l@6M7g}WQ<+Xhgh3UaGDqTG7GPy)U$
z2vTl=HF@;H8!!*R4H$6At_j-FD9{OSqd~&7`3EC^pExK@ce_e-hyH-<UWQhnorey-
zl4rbd@kgiYpVv~LEZpt-0&>F=$crzWzkzZFc(DsZ{R7Zl(V#P0Tm`xt)^Ia0bh;wd
z#o+QQRG_m95_h0RjRz|zbh<;Dz=6{_0i?$RWWf$lZ_xuZ$nGof;{I32;0Mf1&;_9a
z-Qb!I9u%M?1r8yUIun)>{(!4`P(?$Et{Wg-(BOpEx1huV3WnrM9=$wMA!$1Fg$Ls)
z{_R|#;mYJoKD{h(aUaG*{M&^XPo;t8eW3{v(UJoR+(2%(6^TKj{SQL0`2gc<5r`;~
z(&ht<px}qp9~~`%pq3$KvhL+!>UO<>k-oY^zoc~rFoBAWv`$B+Zr3m1o4Y_~>j-o<
zVUL68FR(ZO#U3ch^oznS;ldH79f&xAnkj&2XM=(k+(v@Nan(17`5wI;9o!5Ikh{}f
zK#%{K`s@FHP+tgC;(ByG^=N(r+3*HkgM}z*BtU)w7l&V<4T$5eZ$KUN<E}42V;rFJ
zyOi&^>zghHQ0emmG!oJ6s^Brh0~DZ$NqkW608}FU{}1gNy^IG};E=P5Km`@1dW6-@
zt{)h?T|Zd6zNzH}?_&H?%KB0YY`_O=*B7<s;Dj3b1k$Plb+h=lhfHAUcKrZ3ok9S#
z<q=$kgXGdWeI~HHoWuayZux|vBnWKc5Agj?s0#VFyG&q#H>i+I2b%!0lYe`|6D|e@
zXfc-7IRV6bZPi@+fvX<eOXT0)@B&2vi1!-Y*W};c@CHQ+#DfMhXhOmD2RLvAPy_e1
z8rZpCN<reF(Ujw^;6Q&3iUj0{as2~YzGdyIz~46&l&+9Fz6r2qIjC1iS!Bba(~So-
zw?RR4f~KOuar}b6cOhgf8#6Z8z)2C*g%IeT0P5ZE04)yCc70%Zh`;YUtZG3`2rd&?
zz`8))4FUe`-~j?qyWkF}%?XOcZtyq(=vMg$E}aKBFMu+Tt3X=k1kg|dNP!P%J`+^d
zIcR`WL#RNfmqzCSPsr*Yn3>?UF#^P?O*{C4ql2m2^$!1bP`5__;)I<b&wzFccOJa_
zs}s{55LMlw51L;Iz*^d%KzN-9awXhrAP(qSGH_Q8l;HWdyL7M+?ORB|cDp`6wgR>=
zlD{?O-~azFxw#;jhrcD01r+a3tX+Tbw@ktxZID_9IofUz5p7pM-hunA+w}_39w9C&
z$ceTqWJTKzx<uOz^k{>I-!t$DVFx;0AqfsS8ZLmM0oL<?7HQxta|Wsxlo3E#=FA`n
z`!i&P{RQ-}4@2=9lmjZgiS{BapIkr=@Z+v0Kns09=0W741r+FLqCUvkD<7IclQ^L9
z3|Pql3fdz?+e^D-eT1x_J%JXqFW*7VK|%H%$j?N35E5|Rt|yQK_T>y#P?7V2i@*Og
zbd-{Rd&4VOqJ}IbK~B^M&=NJM;sqya@MYCV1<D?x9Y(v5-$Pc&A3zKF*H{xZ$m2wN
z5f=6bki-7C>kd%64kJ<T00l8}q6V$jL5}t<MB7Wdpxr`N(C$DB+Lw}$l^4jqBP&tw
zKn~cKhY?Bn9V{t>ma?O^ZZ?3z8L4~*H59=~8MG1#*+pvxL3pnrE4(+Lg*W!34DvY9
zUW6s(4agyW+;s)0k&Ka)SAc>TbQMIm>xbqS+?}pVKuVBGi6unaOS`1Jgsh-lfgZGh
zXkG((m}uX@LUjdds6xk<pL9~M*Rt;O|NkD%M-t!zX5fRmL2mD!-~pZQ^I!!{Ga`+i
z=zWCrdb=kiz?Fbz7?G54LzQ^2g69!It$kmC7wK=nT~p9qNUx1R9slGD9=)ufO_BWD
zSeW>?fm=<;{Y#e#Y@neu@TMW~Xbn?6c=2O*2WUhIGWFDXf$;$21;!J-0idNE(D5aZ
z;ow_mA?qyPfX4x$9dDOTUyb9gKR`3P5RZbI_s}N94^R>X4g7bzN<dajLI#GA66qJB
zqmg!r^b1*u^apw(4FdTe$!ij6x{QoOdk>aMf1ssOtO5H06tIxIuK=D;0I!@uvil9u
z_R=m`q32JN*i-y~9<1njALL=8eFqEG52&FE9tZ+O7epSKTwfqURipU@3*?X}<jU#^
z(e~0VRG*NQSYHqdRgi~?_8lbDx?NwOhALzre;y-fSnUDU<`;O-1GK9MRH6`3T!EVm
z!*~>=5R?X?+19c10MVfWF4`euE0B}&T{sVbY6X-rAXqG+j*7qr*);fj!v29)=t)4w
z&oL^drZ*sI1-LX?rIh>zeLxmc+o9A8f3PNlKcI~E5Io_d0lB0AIhXw)Ivvt3m;E3s
zm;FJ{WqwHU3+gg!5bZTs<o!X;VxZyv7mGzftAkwe4cm3QDi9na>ULFt4C#TKh$A3<
z7!P!ZDty1x0bb^TLlJ09vD;PQ`vr(`pw&8{>E~__u%>PYjm`rej0ZvE{GOc`JUS17
zR$PPjN(yubXmq<OK>Zh>;ep)3fQ;>T`wG0+BFuoc1`3?aj=SPXT93dZ`=CQ3!4^R?
z7$^dUQQ87sZ-K}*pjd<y2#z~I!#Q}yhOs8C9iTo2xVZfSHVS!M;tMFdf|_xl_35DL
zbLd7Hq;UN}bi&4yia-`a%_Nw7k<>!d9cWuTQn^U%$n+QVJR5*ybmt+kmx=ZqENH(#
zQ#Cjg!MXOW03;cMuAl)e81O(^Fz~>mGxUW^r|SooPTwELT|w6hg3|4S?gr4UgRKYn
z`#@{EJ-R`&>kQov9?d_PN`)a@36E~y2QOywGca^IgHD-#;K2%Bx(KQad>_1Uc>wNP
zJn&!zFI0qz>VZXlAG`?r{QrNaD`*JhK{t3-x%mJWc)d1g!0ACZcvT-v2(nCLPq}!v
z>yA#>J+Jve-OdB7ovt8>PS-tPE{nD6o^lP3=GqqwC5qj?Ke|CX2|#njC*i%B2QSY3
z{Qv)@1!QpIL3aaalScComJ%NDI*>j5twrDl#0qH5@c<I0&?XvEr}szm0VYVN_W?A~
zfHF9&)B6CD8PKx91H=@`1872g&<&d+d4N1c0y7hw5Q$U^ONh`;FVqRx5+brYAP(&g
zg?D-%bb^!3Yf!@%<_wV6KpuvsM5xhtd<O}&ZdXXB7iy$WFKBZxgGa9@=%^WR($QsR
zV0gJ29O4_WhB$a62h!E}(R_dfvX>3nS+Eft!fv8nh(kwkpiUq*#Ni`2(BQ!q;;>05
zsL@1(IArh!YGk+T7V!L=>x1qFQ1>1(?fRg*0W=)Ye1Orh6O=Qc`EuR|Xm0I=Eirxo
zX_P@KPH=qHf+wteAG~;d8MLtM2SW)LSiF}PQoeY=R_k>73P4+8pz_S4d%_RULR-+3
zU;}8$EvQn4Y*Uv=>jW<i^XYDQfuaQLaL`%}h<a!}-@(*eE5T3-x}6KWn6mkh4rtPu
z2do;j&QQUl`H&81x|!$Ydf4<Pc=a#D?*g3@K#PByb0ru-O@&@o&>mLEfW-murVP+J
z2an_v9?b`J__v32@$`CuZjTWF&(DL*ZQ^OHmH5xVz)&s>x)!XLwSf(EHaTd-<G^d_
zZdZweFW6Z@r(<*;0-d6Pkc1iBco4MynSZ-T7s6;(kWgADPZKDxx*>~_!D015jDex~
z1*7F5{wW9ew;h0w?0|<rK+8lycd$Wcl)-wzq1$?ZzoiRuoq&KxcLONsLF+{rFF_VG
zf$LewQl;(=P@qG{UPAwXqU8j5pCf2(9c1CzEbyuU)Fnco#R>4m2A~}*sKc+|@d41$
z*61r&Ao?J6`0yPwc=?+R(ndzA7{K8NUl0Xd(G4w5p+gjCnHzaN9afy8j3d09!Umd2
z{^9}d$s(m=$dMS})QoaG2qg5u%dnt>3lMXmmD>|gJL@mFTl4~#W=Pb5mlGg)?g7yr
zftJAn@LG>*3j-dI)n$5u-uy}j<su}nAwq)U$a{j^D(iNA0bl;t3mRl&=w@N+1RXna
zhk?H(9h~QoRe+9S>t<onbo~Ne;D%#m0Hjm<rPFm7uK_^s)Dl003rX$Wu4ohfKNuTp
zf51xgAE<>ks6_vPt3-$7Gk7$DR&jw&1cGKTNM``tmV#z5@T!4tkPL>Q3zD;j@%n)T
z^qhsXKvV&|K$L;#VgweGC@Tq2vlM7GH2y3F+L{Q?Qa`|13Njag9ADri2#_rGqZ7QJ
z0@2~^b{#(J4_>2ZDdLAIU=e|`@&FXk-Qb1@XhT$c*>`ZeQo@53w9ymZY{0Pq;T@#W
z23HNq7oZ*?a^Mf6B?zFaXAoWk4OGDbiuC+|vIxNgvOfT_S{1yl?YQfo`UC$zLr-aY
zZ2&qT>;YrzffDd78=wWRkga^+7By(DjvYMy@VXAPu>4}~pXS;h@^z;`(aXQR;Q<2!
zLt5*BQt&1@&>AQxA3W~Hzr6u8!3i+~w2=C>)p6G!pcA8BD}(f7wF|6H2xJ$uK(4z2
zwja7dD%hj*X{WD5XQ;w%(3<CNSBd5ajGTur=1MT$Zq8L;Y_3&csDIgc<KhdXP6*gC
z@N&iG9|EP7ATF)iARx1GY^Qt;*){@o2YX#SNG&PufVN0LU3^e)4RxR$Y;11;xJ3`?
zyhHm5phF_T-3ZX6X!8$_x;RqpCC-f?XLT^WwgQ<B8Bb_EP^Sap5vLzK${~Ow?2tCQ
zgQ6WD1|=Y53>t|<#-I@fWDHu5jf_F<Fl3C+E|46|E|?uKvtee!%mS@C24T=3CkTUf
zxq~q1Xd(~>9VrCD+zbp1APm|855l|*3=AL)vWprR<W7(qL2dw<Cm<-qz`@SR#>L9b
z!o$qV#K#Cb3k)QSiFp_}7<w2u7<?Ew7|t+oFz7IFFsxzVV8~(MV0gp8!63uH!7zt`
zgCT~2gW(PX2ZId*2g4o)4u%>A4u(Gr91Khh91Kki91Knj91MpTI2e=|I2aZ&a4;k>
za4<Y#;9wA9;9!`<z`+p2z`<~dfrG(_frDWa0|!G90|&z=1`Y-;1`dWU1`Y-<1`dW(
z3>*wv3>*xr7&sWR7&sVSF>o+QF>o-<V&GtiV&Gu7#lXQ}#lXR^i-Cioih+aS7Xt?a
z8v_SJ8v_S}8v_T!F$N9>H3klbWegk)X$%|;&loru#27djrZI3ZgfVb1Tw~y1Fk|3g
z*v7!YP{zQ)@Qs0kfscWMp^t%s!H<E1;T!`8gB}A1!#V~IhCBuihIb4c3~~${4D%Q`
z7~&W>816A}FxWA0FzjRCV5no@VED(t!NADC!O+OS!QjZi!Elg)gF%sjgJB^92SXwQ
z2g5@K4hBI64u**g91MXB91Is3I2a5WI2blEa4-}ya4>vi0G+AF!O+RT!Qjcj!Elm+
zgF%ylgJC5D2SX+U2g6GS4hBgE4u+Ww91M{R91J%ZI2bG$I2d*^a4=Lda4`I2;9y{7
z;9zKF;9ziN;9xk)z`>x(z`?MTfrBBHfrH^G0|$dB0|&!Y1`dW$1`dX+3>*xm3>*ww
z88{e988{feGH@{PGH@{TGH@{XGH@`QW#C}YW#C{~%fP{q%fP|#mVtvomVtv|E&~Tc
zECUC_T?P&YTLun>y$l=-wG12#e;GI!gc&#)gc&&*CNpp{OlIU{2xj192xjDDxXi%G
zaG8;l!I*)Q!I+VgVKW0K!)8WKhGGUzhGIrehR+O~44)Y}8MqlZ8Mqla8M+xb8M+xc
z8N3-d8N3-e8BQ~BGMr}QWYA{dWYA{hWLV9>$*`J{lOdadlOdatli@W3C&Oz-P6lZP
zP6la4PKMbGoD8!WIT@lEI2ocDIT>y<a5CIx<YcgB;AF67<Yd^*z{#+ik&~gCfs>({
zk(1#!11H08MotFMse<f`oDA&@oDA)ZoDA*^oDA-aoD9bqI2n#Jax$nha5AVfaxyGu
z;AB|N$jOk-z{!x#$jR`Wfs^4mBPWA611EzxBPYXj22O_QjGPSN44e$%jGPSD88{iP
zGjcMRGjKAPGjcL)XW(Sm&dAA7&cMk~&dAB|oq?0#J0m9pKLaNNKO-kYKLaO2KO-lD
zKLaO&KO-l@c?M2~^NgGf`V5>5`iz_m>lrv1)-!T4<TG$G<TG+Iyl3EKc+bemAkV<b
zAkWCjFrR^wVLl@#Lp%c~Lp&oV!+i!$hWm`14E7A14EBti4Eq^48TK=BGSoA0GSoA2
zGW=)YWcberDyi5R92nRc6d2eU5*XMS1Q^&E0vOmC3>erM3c#m6vNL!vurp{durp*Z
zuro+7urow3urpXNurpLJurshQurs(YursJIurs7Eurr7-urq`(urru2urrh}urq*8
zFKlMuU~p#OU^vXc!Jy2*!LXQtgCUuLgW)mwWJ6X40dOj2WsqP1H78jaL>O2Zco<k2
zWEfZ(m>5_Ygcw*ExENR&q!>Vh&8!S!46F=%46F=t44_dtRt7-^Rt8Q6Rt8B1RxlK0
zU}fNCU}cbHU}a!tU}X?yU}fNDU}cbIU}a!uU}X>opBe!z3mKW1Sy)(E+1S|F*xA|H
zIiP?O3b@b!HyYp}0C))iJ_-Rpg@A!UKu}0XSXe|vL_}0nR8$NK#Gya}4M?H^DFQ&6
z0Fa>&$WjOxK=IGY#?HaP$;rjV%?*l9P?Uk91r)RbP#_2eLQo(K1)y+4#-K1n#?at|
zQ_x_AQ)t19!9@#h3@(A-mm(DWpj-fI^T65>pmq+ZjRR}jfZ8;mb_@>#<or?r2FRTc
zpj#V2XVrk({~8Po44_l@LH7%QP80>5kdwf`z)%3XU4VgsVF3dJ1Lzb{Q1=34A38?2
zA7nSkUXYz2`#^Sq>;c&UG9P3%Xe<C^CTLh5H1))Q>;Ym7fI0%K7s>`vp!1sK7!h|a
zfG<LT`U4~n!l1LVFj`e0Pk<yDAZOvg+GC8cJMB1_SvjEh*n!Vt5`vt?gu$K!73X7V
z<zr@B#ALu209FGNM>l5^R6R&M2#JlX9$6gO4KQ(tT}@!Skll-H2F$&z%&e@;Ae9UZ
zaKAzIfV>Y1dKeA5+!z#(AbKw7tbYau1`sX70y<NafdNE^fX*9bU|;~z7Mu(Wpfm)c
zkMS}vxG*p<fauNq3=E(&1)?)$7#Kh|Qh;a&Sq6p-(0M(w3=HAQ3=Aa<5PFd+0|O|1
zfaray3=BOC3=AN;RfB<H1_J{Fh<>KSz_5gYfdNE2>oG8Z=8Qpfi3J1raC#7JYstWH
zgn@wpL}yzvFkE0@U;xqCRtyZF^VdMMxitd=XfBh~^MFC;DrtgGjs^J!!UEk10bxCs
zVPJr;CMm*LE0kcYR#gTDW3XN(ZI~D*oHa!kCUzCh`UGdi7{FvDjbJQmIBU5vOza4p
zm17DM>w~jECm4a;$H>sZ1(9WB0G(C@5nBNlI{{~b(u6Vt0|Vq-V+aeBHnhQFpqvg7
z1Lb!JON4=e0U`^^{}3@yi34GQ$^(cj=!O`G7^obAut4{OKx9E>21E=L;t&=njX`8>
z7#J8JVxV#b!UCl_h^z-()(6f4r9+5p2wW@z&H}|HL>5#=LCgc43JhU^(ketY2d)ED
zMnYsksTU$!0hg_Tvq0$?A`40-5FMa<+aWAa3Wvyo)^$L{Kxbb-SfDfyk(~oK4^$>Y
zWI?$ABD(@E3tA-tkp<-oh%9Ik2}BGuf&*cJ7M??7L1i&S43uLatP}7UJOeiwl!qX)
zSKzXsdj=q4pj-uEf$9o~$)MZ?5d*FBg0MjQKp?W9At{I$=nxzT>j&Iq%oFDz=c1vW
zH-{+gLA4*KHx0Q72^8iC5zxtNpxOo^l9UslUzCzs1X>&q5do!eP#Oc(C<qZpkT4tQ
z1T|3F2XXvBwFxJ(NEAqz3t0q|W<YriVNMaK9z{_DavkX8FNB(YkU8Kp(-j!7ouD0G
zQWT$=mstWTqroSGgVoPtU|;~1&>#_r-&aD*X@m$U?m?wBLS#R*%tnZuWME(bmD~ss
zPz;00Z-mG_1_lODDUJ{U#VM#PM~HxCQ$Qs<LWGqOQm%tUK-D}0gBT+N1E_RIh=2~(
z1eNg!5q(BTNskb*XM~jZ2oX<41_n^64-$d+9dz3hsO(3GWHLf(0EkFZW_(&sX>kUq
z9)O5|0<naVfdNz-KtwRlCj`|JsP_%g?tDVf33;Fv9LQY|jCnpGDE~m@U?lRnc%byb
z%m`Y04LS`ErUF9OLEAZ?_6@f42|=nlL3i^)(>x@;rhr5^ASs-QAvZNQxu6oH5`;nb
zAA$C|Bb{EDT2WGz7@w1rSyIdZVW%LmlOPhsC5a`O$?-X$9L)gbq<}e~L)GJRQuESF
zG8n*Y&@q`XB{}gasl~}KUJ42?2`X7q6c05JlwBA=L_GKsVTOXjl>G9%jMT&ehV<0D
z_@vB|oYXup6LbP+F+);mW=={x*cHXeiFr^~Y93S!BAt|jB%YW9;T1E0vS)Egeo<-)
z)H09&II)53fygK3WTxkVRYE0l@{_Z{{F20+oJxk|{M>?~)Z${O2`Q;1smUerDTyVC
z@g<c7sSHV(@kOa+sYS(LW_e~_N@)S|f%Ea8po$0ig#j9Z5Dr&q9@uEibLVlKCuwM6
zVhTBV5^*2Y1!e{Y$ko7@_d$Vfx(1y)p99H;plKxr1qRyR2L)<x{DCA=P+|mQ2ZjI#
z<U9is1hqkUpl$>4K^SySByzq1iGkFqFhlN82Ju0838W6&d6G65<^>?%2L(Hy0<<0o
zav{_g=+Q?S-Ow{|B)S<|50r?4W|%-ipy>jM;~;ApUh^M!{Q=6W9=)#p9-XeBDI5jR
z`R~VFLCpaMkK?YODjP(Ds%a1ns+t)*dR-?t?f|uDJbFbzCV6xo1eMVYovt517eJM8
zbi00d396kza{(Tmt_zO4g4zuX-L5NI50nanj?{Af!SCk!qtkUox9bW`(8-E3;4**s
z-CX~4y3Xi!ouTRa2V@zj>R~{)WE1FClWvA?-x=MZe;7|`LXLsZ=oA3^#?n=wgu6Qw
zwDD7-Q{c5ox9b|vt>n$MAAXmzBfLEUW-9omC++6i4@@O;U`0ILp)0ywe=ve>%Yoic
z556azX9t*K1vPLOJYaXIK)0wt7La#_N`T@6v`5XO*H^;>wBoGWRl>9LBz#GozzcKu
zStAn+!Pl;U0uq85xmj4b86o$HfctgO{uoGhGAO<n7#KkGc}4~XP^*~Kenl^IzJY}S
zbXpLo&S7Er1?{u5Fo0SspjZX986an;LfYe?`T{gk2br6I+}H>a1LY403)CLx1-I5Q
zTUD^q0kvHP>m!3|Mc92XAb%ob(7lx)|AN&pVAh<VaDccLri*qpC#X(?*#e=FO95~w
zFoN<oL=HwGmjIyL&J0!qV!>2EXf+7M0I~&F&1nc#1L_|$f$sVMT>}Ue1J#otrX7d?
zV~_~wNLr+t6B-ez#l=Pp2sUyF54{fva<3qi1G*QGtE#jlGY4M2D<Dn`HpYHpu%VeL
zMhRcX!oUEz3lg)02lXUCC43CD)C0vTJxX{`S#^hzfuRLzFK9Fi+lj%Tw)-B8ngH`=
z5m2A;0}}%S_{1RwNZ$ch39kdS6C7QjkqQQA3E#^KDs7>2y3KC{pzA$BC&f)@cKyQw
zA{0P`!vxS4F8FbxoxTF#%^2FQpyjK*B1b_cgVr~Jmsqec!A%60R?y|T-L4Y+>s=K(
z55NjUlmmdlDnaW`LA3}>1?XHXh1kQO)5!BuQ&SXDGLuU(^YapmDjAAPic%AE6;kt3
z7#Pwrb5a#ji;D7#;KE=IsKEgh&&(?>O-sv6&P>fKQOHfr%`d8CNGeTBOD%#c0JSU<
zOEQykQWZc=lg#`)kgw1&s3Zc3fl3Sz4H^po(cpd=1MH+~1_oH0H5eqxz`y|NiG!Fh
zeHbM&bo2^b8pB4pkj0=SG*}+W2AKyc3t_Y+1LUqI5FHOKZ9z2X2ttrMK{TjO4H}^!
zwL}M%7m%ByLZM@@EDZGwkefAG7#1=xfN#)cVF2|9LFyP8K;r@s7HBj8!U9$L5EiKC
z4`G4oZ3qjLHz6!g)dyjLng<XTsDS`sf&2>^wSm+c5Eh68#SNs^0P&a^Kzs-bRBM2E
z%wShS#6TeeVSz?*AhMuQ9Ecbwj36w~C=NsxG>QWe1LaZ(3p9!Yk;SZ!AY~b9Z3M}w
zARmD18faY$;v-{FDgnhTSPes!D>ykbfZ`P@lAM^6lb_50id~pUT2X2$0|O|IAtIQy
z7%1*R<sHH%+SOv$86c<eBiV&?w<)9+1BD_&9>l_|#X#j8tOf_EfM8IZfLNeZiLDl^
zicc*n$}LU@rACmCnHX{*0S3~<0IAm?;RO`{-+yb)0K26Zd@*fRPG(YAYEdz$Bml9U
T^K%O_b5h-M64Q&3>oP6?>9@{J

diff --git a/libs/zlib/win32/zlib.def b/libs/zlib/win32/zlib.def
index a2188b0006..666bc6fbbb 100644
--- a/libs/zlib/win32/zlib.def
+++ b/libs/zlib/win32/zlib.def
@@ -69,6 +69,7 @@ EXPORTS
     gzoffset64
     adler32_combine64
     crc32_combine64
+    crc32_combine_gen64
 ; checksum functions
     adler32
     adler32_z
@@ -76,6 +77,8 @@ EXPORTS
     crc32_z
     adler32_combine
     crc32_combine
+    crc32_combine_gen
+    crc32_combine_op
 ; various hacks, don't look :)
     deflateInit_
     deflateInit2_
diff --git a/libs/zlib/win32/zlib1.rc b/libs/zlib/win32/zlib1.rc
index 234e641c32..ceb4ee5c69 100644
--- a/libs/zlib/win32/zlib1.rc
+++ b/libs/zlib/win32/zlib1.rc
@@ -26,7 +26,7 @@ BEGIN
       VALUE "FileDescription",	"zlib data compression library\0"
       VALUE "FileVersion",	ZLIB_VERSION "\0"
       VALUE "InternalName",	"zlib1.dll\0"
-      VALUE "LegalCopyright",	"(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright",	"(C) 1995-2022 Jean-loup Gailly & Mark Adler\0"
       VALUE "OriginalFilename",	"zlib1.dll\0"
       VALUE "ProductName",	"zlib\0"
       VALUE "ProductVersion",	ZLIB_VERSION "\0"
diff --git a/libs/zlib/zconf.h b/libs/zlib/zconf.h
index 1f7cfed46a..62adc8d843 100644
--- a/libs/zlib/zconf.h
+++ b/libs/zlib/zconf.h
@@ -1,5 +1,5 @@
 /* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -38,6 +38,9 @@
 #  define crc32                 z_crc32
 #  define crc32_combine         z_crc32_combine
 #  define crc32_combine64       z_crc32_combine64
+#  define crc32_combine_gen     z_crc32_combine_gen
+#  define crc32_combine_gen64   z_crc32_combine_gen64
+#  define crc32_combine_op      z_crc32_combine_op
 #  define crc32_z               z_crc32_z
 #  define deflate               z_deflate
 #  define deflateBound          z_deflateBound
@@ -238,7 +241,11 @@
 #endif
 
 #ifdef Z_SOLO
-   typedef unsigned long z_size_t;
+#  ifdef _WIN64
+     typedef unsigned long long z_size_t;
+#  else
+     typedef unsigned long z_size_t;
+#  endif
 #else
 #  define z_longlong long long
 #  if defined(NO_SIZE_T)
@@ -293,14 +300,6 @@
 #  endif
 #endif
 
-#ifndef Z_ARG /* function prototypes for stdarg */
-#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
-#    define Z_ARG(args)  args
-#  else
-#    define Z_ARG(args)  ()
-#  endif
-#endif
-
 /* The following definitions for FAR are needed only for MSDOS mixed
  * model programming (small or medium model with some far allocations).
  * This was tested only with MSC; for other MSDOS compilers you may have
@@ -349,6 +348,9 @@
 #    ifdef FAR
 #      undef FAR
 #    endif
+#    ifndef WIN32_LEAN_AND_MEAN
+#      define WIN32_LEAN_AND_MEAN
+#    endif
 #    include <windows.h>
      /* No need for _export, use ZLIB.DEF instead. */
      /* For complete Windows compatibility, use WINAPI, not __stdcall. */
@@ -467,14 +469,19 @@ typedef uLong FAR uLongf;
 #  undef _LARGEFILE64_SOURCE
 #endif
 
-#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
-#  define Z_HAVE_UNISTD_H
+#ifndef Z_HAVE_UNISTD_H
+#  ifdef __WATCOMC__
+#    define Z_HAVE_UNISTD_H
+#  endif
+#endif
+#ifndef Z_HAVE_UNISTD_H
+#  if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
+#    define Z_HAVE_UNISTD_H
+#  endif
 #endif
 #ifndef Z_SOLO
-#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
-#ifndef _MSC_VER
+#  if defined(Z_HAVE_UNISTD_H)
 #    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
-#endif
 #    ifdef VMS
 #      include <unixio.h>       /* for off_t */
 #    endif
@@ -509,7 +516,7 @@ typedef uLong FAR uLongf;
 #if !defined(_WIN32) && defined(Z_LARGE64)
 #  define z_off64_t off64_t
 #else
-#  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
+#  if defined(_WIN32) && !defined(__GNUC__)
 #    define z_off64_t __int64
 #  else
 #    define z_off64_t z_off_t
diff --git a/libs/zlib/zconf.h.cmakein b/libs/zlib/zconf.h.cmakein
index a7f24cce60..0abe3bc9d8 100644
--- a/libs/zlib/zconf.h.cmakein
+++ b/libs/zlib/zconf.h.cmakein
@@ -1,5 +1,5 @@
 /* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -40,6 +40,9 @@
 #  define crc32                 z_crc32
 #  define crc32_combine         z_crc32_combine
 #  define crc32_combine64       z_crc32_combine64
+#  define crc32_combine_gen     z_crc32_combine_gen
+#  define crc32_combine_gen64   z_crc32_combine_gen64
+#  define crc32_combine_op      z_crc32_combine_op
 #  define crc32_z               z_crc32_z
 #  define deflate               z_deflate
 #  define deflateBound          z_deflateBound
@@ -240,7 +243,11 @@
 #endif
 
 #ifdef Z_SOLO
-   typedef unsigned long z_size_t;
+#  ifdef _WIN64
+     typedef unsigned long long z_size_t;
+#  else
+     typedef unsigned long z_size_t;
+#  endif
 #else
 #  define z_longlong long long
 #  if defined(NO_SIZE_T)
@@ -295,14 +302,6 @@
 #  endif
 #endif
 
-#ifndef Z_ARG /* function prototypes for stdarg */
-#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
-#    define Z_ARG(args)  args
-#  else
-#    define Z_ARG(args)  ()
-#  endif
-#endif
-
 /* The following definitions for FAR are needed only for MSDOS mixed
  * model programming (small or medium model with some far allocations).
  * This was tested only with MSC; for other MSDOS compilers you may have
@@ -351,6 +350,9 @@
 #    ifdef FAR
 #      undef FAR
 #    endif
+#    ifndef WIN32_LEAN_AND_MEAN
+#      define WIN32_LEAN_AND_MEAN
+#    endif
 #    include <windows.h>
      /* No need for _export, use ZLIB.DEF instead. */
      /* For complete Windows compatibility, use WINAPI, not __stdcall. */
@@ -469,11 +471,18 @@ typedef uLong FAR uLongf;
 #  undef _LARGEFILE64_SOURCE
 #endif
 
-#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
-#  define Z_HAVE_UNISTD_H
+#ifndef Z_HAVE_UNISTD_H
+#  ifdef __WATCOMC__
+#    define Z_HAVE_UNISTD_H
+#  endif
+#endif
+#ifndef Z_HAVE_UNISTD_H
+#  if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
+#    define Z_HAVE_UNISTD_H
+#  endif
 #endif
 #ifndef Z_SOLO
-#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
+#  if defined(Z_HAVE_UNISTD_H)
 #    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
 #    ifdef VMS
 #      include <unixio.h>       /* for off_t */
@@ -509,7 +518,7 @@ typedef uLong FAR uLongf;
 #if !defined(_WIN32) && defined(Z_LARGE64)
 #  define z_off64_t off64_t
 #else
-#  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
+#  if defined(_WIN32) && !defined(__GNUC__)
 #    define z_off64_t __int64
 #  else
 #    define z_off64_t z_off_t
diff --git a/libs/zlib/zconf.h.in b/libs/zlib/zconf.h.in
index 5e1d68a004..62adc8d843 100644
--- a/libs/zlib/zconf.h.in
+++ b/libs/zlib/zconf.h.in
@@ -1,5 +1,5 @@
 /* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -38,6 +38,9 @@
 #  define crc32                 z_crc32
 #  define crc32_combine         z_crc32_combine
 #  define crc32_combine64       z_crc32_combine64
+#  define crc32_combine_gen     z_crc32_combine_gen
+#  define crc32_combine_gen64   z_crc32_combine_gen64
+#  define crc32_combine_op      z_crc32_combine_op
 #  define crc32_z               z_crc32_z
 #  define deflate               z_deflate
 #  define deflateBound          z_deflateBound
@@ -238,7 +241,11 @@
 #endif
 
 #ifdef Z_SOLO
-   typedef unsigned long z_size_t;
+#  ifdef _WIN64
+     typedef unsigned long long z_size_t;
+#  else
+     typedef unsigned long z_size_t;
+#  endif
 #else
 #  define z_longlong long long
 #  if defined(NO_SIZE_T)
@@ -293,14 +300,6 @@
 #  endif
 #endif
 
-#ifndef Z_ARG /* function prototypes for stdarg */
-#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
-#    define Z_ARG(args)  args
-#  else
-#    define Z_ARG(args)  ()
-#  endif
-#endif
-
 /* The following definitions for FAR are needed only for MSDOS mixed
  * model programming (small or medium model with some far allocations).
  * This was tested only with MSC; for other MSDOS compilers you may have
@@ -349,6 +348,9 @@
 #    ifdef FAR
 #      undef FAR
 #    endif
+#    ifndef WIN32_LEAN_AND_MEAN
+#      define WIN32_LEAN_AND_MEAN
+#    endif
 #    include <windows.h>
      /* No need for _export, use ZLIB.DEF instead. */
      /* For complete Windows compatibility, use WINAPI, not __stdcall. */
@@ -467,11 +469,18 @@ typedef uLong FAR uLongf;
 #  undef _LARGEFILE64_SOURCE
 #endif
 
-#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
-#  define Z_HAVE_UNISTD_H
+#ifndef Z_HAVE_UNISTD_H
+#  ifdef __WATCOMC__
+#    define Z_HAVE_UNISTD_H
+#  endif
+#endif
+#ifndef Z_HAVE_UNISTD_H
+#  if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
+#    define Z_HAVE_UNISTD_H
+#  endif
 #endif
 #ifndef Z_SOLO
-#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
+#  if defined(Z_HAVE_UNISTD_H)
 #    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
 #    ifdef VMS
 #      include <unixio.h>       /* for off_t */
@@ -507,7 +516,7 @@ typedef uLong FAR uLongf;
 #if !defined(_WIN32) && defined(Z_LARGE64)
 #  define z_off64_t off64_t
 #else
-#  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
+#  if defined(_WIN32) && !defined(__GNUC__)
 #    define z_off64_t __int64
 #  else
 #    define z_off64_t z_off_t
diff --git a/libs/zlib/zlib.3 b/libs/zlib/zlib.3
index bda4eb0737..c716020ea9 100644
--- a/libs/zlib/zlib.3
+++ b/libs/zlib/zlib.3
@@ -1,4 +1,4 @@
-.TH ZLIB 3 "15 Jan 2017"
+.TH ZLIB 3 "22 Jan 2024"
 .SH NAME
 zlib \- compression/decompression library
 .SH SYNOPSIS
@@ -105,9 +105,9 @@ before asking for help.
 Send questions and/or comments to zlib@gzip.org,
 or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
 .SH AUTHORS AND LICENSE
-Version 1.2.11
+Version 1.3.1
 .LP
-Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler
 .LP
 This software is provided 'as-is', without any express or implied
 warranty.  In no event will the authors be held liable for any damages
diff --git a/libs/zlib/zlib.3.pdf b/libs/zlib/zlib.3.pdf
index 6fa519c5bdf5df33b2f17549e1df142c619c916c..b224532bdd8eed1939b7dd04a7a0dd46be649c00 100644
GIT binary patch
delta 21996
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
NSaPYVy863u0RR~l$PEAh

delta 16238
zcmdmdoblT<Mn2U57dKr)Jrgd~<8S&GP26fxzclK0(H%3P+UwyDbZ2Psx-hWlpY*N?
z+*GEyEy*`E`?^<dVVVZ-b(tcYClPY>hu<xKW1nZ9$Fg#w)=k~zr#5*o^}f5j+~54u
zOqZU?9RF|Z55K*+n_qM1`*TV~_1}K>yly}8Z|ki|)43}Y56A1gJ9ox>&XT4jg+5}p
zjc2C&9Q3c}Pyg~hJU{MUP^Go<zvVX{&HrF}{A<Lz0@j%mj$W0l{r+hB>6_&TPks1p
zDW0;C&AMP?e(6?~|B9>2cHf>J8@~1I(Oo?MTp#?DoBrJM+$51TP5#fDj?VnI=f>p6
zkIz0=3i|PBj=Iia{ugKO-`l%?UuALfz1kd}zc;2XjrF*(ylJye{mJ6ZPu+80>hx*c
zK2sOJ$9A^6&!nST5xy!uX_aaBmY3`5sYlFu7%ka-pm}5Mw*80GCss~K{nuD_(!FX$
z_9ngESL@84cew^?Wo~_aP;&q4x$5ap1=DR#Hy_@&Z%^gdhiAV&I{Ulae_r{<%91-B
zoG;H_UoKmF#(3I|b~`m8yUri=!Hy3#yDL=Q+>8*J{Ww%s^F-~<DZeG>C_O54>Ynw6
zuOLS9V(jgyDY0KzD_fXsY|a}^TeZBbWyRv)gL-x@O}cxwSMtQ~U_Ym{OEYnOspo+W
zb({6OO<!`!Ds~u#|A^I#5UNo>TmIBivu&yHGMlK3>$2NIi`R=!tUPn+%HerWJ?q!m
zzc+W~m!7udb$43qo9l9~ceYFq`q&d+JhM2xH~Rg%3u^>aWi3md&Jy|kY31Vr%^8!-
zX3gQ;%`j&<_xa+i$%nI?yZUlY=dSjhD#2S}8|ag|()!;<j#xcrfhQ~DmaV%T+IVbI
zZS{-Q%dSW_bC>!p?Mgl6`u^;ODG3(^uEoh~){9vR+kD?~?``S5hwJiAhiLA7KAme)
zSIAi#gE-IR+H(qC_kLa7u(a-Ils~hB(~%Q1R_yuhuKigjv9qMza(&a0cJm#lSEPl?
zUt^FkSg&uI6SGF>;F6#_hQ~KFB&}S$?4L*2>>|_0mZyzHFZ;`8z88pUTbUxXQDRO)
zEeoT01yghV+P@6qK9<W4vU47jo$xU>?^4;u#y>xdgbm*)7Dc`Ly7H`@W1Sm=?(uZ>
z1+xto{%FX_lq+w)yYBAfxZiqWI*%`2VYp@Xb>bFZ%SWxbH}h|q?p*r%)BU3{%1#T8
zPb!?rD1PvEz{Y9DjZ+pERlV@!p7!1|@c#A_TME|2EZOqPJo-R=`9lB4FJ?1ue|~7^
zZ;sVVB=wxVKhNXq@L*>8>v28%LssmU4M&-EvW)iLNZREblvlcBp@4^b<LaViH|@@A
z7#BX)O0$vdm}{)+^J@=R%myu~O)RHeu7@!ATw?6Yy0h%g#8WNq!8<1ycI%|Qc<2|*
zBv2s665V;k;NZT?e*(pS|E`}j#kYFLeF2Vu9oH`%2{w@1ImPDI6qfWxd7Fotc{A(d
z-+2|Bkh-=qyFIW-tMf+AJQq!sRImFcY>BS@>taObI+{+IXJeMvo~$|D<9TgFROo?(
zF70Giov=4$rKy}5uUB7K_?q(*yA$JO4$fwV&>JQ~1z{0+J*!vUWSrE%t9PN^cEaEG
z+?8)xqYkTYzp}RDL6fNA$wJ@nPTQMLC>x#LEm<(Lj#qv<tAXyXlMM$G9&nwXC}9=7
zW6SS%K3>yYU+uKAnJ^>%fpW;*b*gG#(>_}mc`bg=agE1B*z#TC6saG#>#xpoohu?3
zC#P}D_Tt_8)n&pzCm6q*=$5b9ZhSwe?0-G)ziR<Kl?wBpIZbEs`E9GRm`|&s-Pxf%
zIU?lc8>R#{PSK;5Y9dPxZDZnzmSTx1n(5!UP<598v&8PY*saFTIUaxSPz@|Qb-(c2
zoZXktJU&;uKks0^@9pNf0UsP6iT17(DahgtKj@-Wt5urF+Z5jP)kk&RJLw6&(i}mt
z?|i@3Kk1C~bbO@o{AIvjhP@i=(;r$y9Jn?kWL?FRuH=sfkvB_33p_Skv2|K)U&)}q
zT0_?R=Y~lQlQP;5E$C!>_26=snq%Wbr);l7%WSV?Uz!rOlOvWl`Q)M_D>;8H<uNr|
z@^OL5i@K*O{dH_omK9+vDiisBNt>xY{>yan_n9>L%;0)QPlm{8p0~a@dOlbnJ=fuy
zp8G$i`gOPVp4Ca2b(k+Qu(<PSo#66-&Ft^mx$>4?=59Er@YSziMfuLAKF!J?ZDyZj
zeWUiL6Te-5%ayUl(Cp<`#h2=DncAJSTB{aWdog6bTw*&(N7Bha>}lm3i#<v@jOA|g
zJ;hF6$&|l5!J#O%e&TuycHf7w)i>7rJWz2_oW$(C*{A6El@%Km*uBqgUXi#@?6&MC
zNsEsOhm5WnEtq{trSe##K=gZu-GZ_<*L-8do?l@1(7$zR-Tn>R7+89A_XTa3sv7Zp
zAIpRp9M8E={1Sc}t#>4&G{aHr?2${H-BWKW2z{y9W%uGm1j};4Z5}1{PZHbA+zP$C
zm#jT^DYLD}cJ76h7ekinr=B}{OndUVo6`KVj6YR6onFsu_8`Q0-|Ve=YQDLvf-9t!
zmTuJ#ugy+o)mL>cUS0ZbPWq)Usd`7xaK<q%z1MtnmjTZt^Jjja?B*&?o}}@>`QbN{
z({WqBC%+c`;#(tO^dcx^jltaRWm@&TqR|z~wTpccFV{X(YV~=3kmW(j_jR9gUeqkr
zRhoOXkZViWj~itip?6<1ZwqLVK3p$(on=MC`C8Lu$E|oGRf6l4EWR#us9!WIqdZ_$
z5wC+Mx32mwWs#Y==}))C&SC!j@yN!a3#N{zKAL>*?a!axv##HzXO~=e4)0X?#mv+8
z*O#skb~}}9{F>pbs)_Xqfq(<+`Y%M8JZ}p%deheW-stA;)2<P`4bQJO-2eP~L#nKr
z$`}3Xi-nA`(hv7rcpu*ArL<N<{p-%P)0#7u%kz0Nr$?{faeU{wgen_#^Tcrb8^V@<
zORmp<{o&7@b4!*gUvF|*u;}Otp2(j+7a1-Ux-+w?zR*(Qx2Te@md`{dXXXOAojZA1
zPi8w#|6TlJs{JMZ263J_^I}_+M0lH5SaGhJ+|0PYvEfP$?_38Vo_05`plZJ&g>A==
z*)^=Z5G!HJrqJ_vW#EO{CRb|>!C=33JC)DOOw-Hxa+H5c@66(SlNBB-ck;ZQ858S<
z_*JWN85_5n)W<wC+@bI_SM={%UPfX6#ZlK?o8P)$ow1LJbIsq6j9Q1p?pROY3^@Dt
zjZAuc>v>^ol~WOKriKZsd9A2%h}Zx7fbrJ3MgQ+Px%cc2pI~3R|M$N~j~+fuT$WRr
z(ClcoFXO_|?W?nX?pjyMc=%W9qS=moyZlT~`7S?Y_IKMgg^PE4>UE7DOFUg5x#y_!
z6~~9)1b!^NpXxFrApf$k?bRJ?jxf!Ro_>f;#z8C~M=d$e<<+(ovoxy|o;a(`PkWp4
zVXG!fm^|<1#K-j|&kue%w|v<Vj=wr{I^yFdiHDoN|No@rhv9{vEH4(G{IYP4!99ic
zmqm9Tu`CuoQ)r#F;jfI$X4`}b^|HHIxW0GHZ<rpsXj^CYsegxj4<7RLnxeXI_2tWH
zmz$Z+vO8E_ZBom8WjI6f<eKAay)U0h?VPqZq2yh<?s2;_S5&U-3J&D8-4gv@MCQ|n
z*Y;Me=eLN--(Iu)!$Vo-j>B0i`xD!=zsYd^Ig%{C@p1cx2?v7qZT|UEG~jIer_YQj
z_39g&d0wa<EM9+0H>{EGR?WQC91&O83>r5d%bKJ1p^bwj^!whjSDHdEZ*P0Y)4g)e
zrd4m)mux7juW#H_uyKF%OW*v=hQ)j1;^J*`7aV%PAu!=;cH$(>l^KDK?z!1r9*Nz5
zOq9;-y?$q((Y1sBn`i!+GSlMvoA!U_wp~BB!zcb!y>0fK%BTO${N@<(Rd;vtSDF;c
ziwOQ)(<-E&`b6MS<AQodj`~ZP%Okp+>!NK#v!ZvEs}|HTe_FsQF1q4Oda-VTlI!oR
z)~gve<$k#@*6Mt{@_2}v{M8)2*bi@8<picaQqTL+CUV}<*rihD%b$E+d*{ocCOn%M
zzGPo5WzVsATYpBz=tlSA>%TABX)OO6d*ZcV@-IiLEwSFVM~|4q)ujjD(4DYzwZN^t
zwts5{W*(kr;`;aS2^P*)o2UD}%G~XHQWxZZ`|gzw4ol^3tMA)oUD}&m*d<YHc=S_R
z(yxeBDlzvL{o`EAl%#P*ODN@|Cd)0Cn@R%Gyk=!D^bDHB1&{x)7qI!fY3KS`m$ofk
zylQrr``f4Or(b`U_u0Pa#iO&k=bzmA|M~Cf;nVlu@sawxKxMzq`!`R+q+(X8_FXE>
z*`wc{xz45kp^W(QTi>23A8pP*&uMbWqVv*Zd*<mk4D9@cLbhC+KHqJrw@vu250i?c
zcKMxXwuw1<qB-%s`d3GuS2uP0>R&PJV!peJQL%Nquk-SdyDuN9x6BLnvt4@o&Ek(7
z9S^=am<fAm?lGGDFRA5r(0|r#eAx?vE+1XFbM*nMA4k2qOg_~X?KGbrVt70<z%J&b
z>o>ofajSgia7$_|E~zr_-&*MvdFq7H=STdGmpEnS?Pj-FQn_MR(UvZs!-{8q3g2H;
zzw%N=;Z5<W`{x+4i-jHC9mpxtx=!b=>6EsGkDVG6Ush!lcSz3R@NhDJx-8!D(Jt+W
zG12VvdCL!7PvlVwPgrr#WLs}o$MFNJ>zrKW%h_hkKB@fot<^epm$!4QJHKA${`C67
zzRnN-=R0Iw{3^~O|L%i(iPpbo@)0SSA0xk;_P5q+$3}5Y(2;zk*!D+%m;a1U+d`Zz
z8=`h=zMebx)T)^8OCQWIky^)*ckEqButSv7k1b0sFHWmJnaU#jOd;ye;@z(W1w}sn
z5%dc1ob&kULUDn@cPvNZSEt>*CB?Di<?XZWc_$|21c}7O$0}aP`JCLq_DE>W&&cm*
zo@|fIx_!|srzvx9S>-CuZQ{9_L0mJ{H+GAM2OMN&S*pmyait+t)1hzcw8a~zcW;h=
zc)p%7Z*5h6YF<ilNl|KIE>~(^N`6unmzjcr0*E#?GcbjT8Ja@{ZEW;?QuESFG87Cg
zCg<^})R#uw-gIS`VD0?%7o^KX7e`E5Z>j(0@Is*zb}a`cc(HzZ@b=<7!yiUJ4yF8P
zn_Pb`>*OX|<|}m)$=++<U0of%{l_6Dy$FZ;%lU!%|Gt<dw$}-7IQ;Ci+l>C4Uz%Cp
zUh{DWRc)-kbHlbtb&_i0iL$S5sha&CO72zs-&g<hwYz_9{g<16p1ilq-Nq=kBq#hp
zpTcRI?i16xZoaE~e0T5n`44hx!~~~r^eQ-z=bxWY^!@t&{k6y6#r;3_F5a&G<FC8j
zCm*Do+o{StZ$-q$wG*~n|Gj)!>9rLP7IL+izACM~Y35UKvejVOo#$&iPHIfE$@l-_
zy2QpIr|f=MQG|NCo~$;1{qe@I6D_N+L~eUm_hp`P)x^|`VQfl?>r3wCtS+<Jxc^CN
zXl%s2H#gr`rf>Uv#6?kvLBjW6?Y?Lk{>m3|@3nKk<t+88)DX{S-6r+HzG8Rs&CUC2
zWzN}cOPhIW&z{RX`u?%6nQuFAywBcwz51KV`|YX!pJ-Z7KfF<veaF-P>EE;Jg^QL>
zv6S{a8)7lH?qc@xMLsvbmuzEwx_`OfciZen-`Z7Pa|)KpMjmKZIs4`n|A%FtC;m}5
z5u~5r)@^CzsB~r`S3JX=5|w&SHnIAK`bBdVF8k=bbcav!`m4vdBor5)^pZJJwCPjn
z(~1LAIqtNlIlKrx+O{}yV`%1~r5!T$Ox^Vvc1&~ErSs2{E!~<PI@A8gBqfh2;hEoF
zNH2HZanX|F`5G^qonK<Vb<1-ZT1GwWu(E$KuTe1CD@v+0?&kEfjkaaEzV9|}yuPOP
z$m2<OJA}OL@37`4-RBbh%ut~pQ<uy*;{fCJ$)TE8UQ3-!E7%Y<Yt6L1nqqURXRPwO
z@W|jvQGMTm*Pm{BbzRtOGDne(w{2R%#@SD|Sav?wiNCe_&yjPiOCm1Eb=B@zxYdVe
zt$gjwoAtUk{6kLeD5%^w=h^}H&x|Y5gH%{7%idi1#-`?eIA!6(%SD~<*yb)<am+S#
zRmSV6a@U#RI`)l!qfcwhQBSwk`otLU?e(T`jrppQ{+~;Y>W{oRc;v`2r$}BYRWk|E
zmtXe1Y40>|asK(Bn{!g(g)MJ3Uf#7U=CYC3gsk$6{cZM92kq@@E**797h(;!S-<L9
zxr=S^7mYuOzV{BX{7U!s@!ZJ3s#)RFChD*Is%i6FU0czGa!Qrjn^jcXH_c2j<5W`L
z93wcLbF#cB>*~KfGJ*9I&A%~c-)ijIuJ_w-vP-7YQ~fta;)T|?WM}qVu5=H4s(Llf
zZpTysoi#S)Zx{5Y%y{5r(qS;8_|M$;l}{fPudwoOOiejb>E)Z|<*fSP$s(Qrhnbv3
zXREhZZs}|?(D!Zc_WbkkUhc*Shf{4&uP}T|Hnd?ajEIv+R^k+|{dH$Xy;Dp2&7e8Y
zz25ViDkw|4G@s<Uy}kA64xd1`o4px*TaI3k^>sL7;cPdNQ^aF=pw<%J?kS5H59T)Q
zyBvQ^=*+y9vl^e4q#Bp2q?d<q-0H|;k<RGi>(`ja@bdOXZIj=xPM=T<n0@WO^8Iz}
zf%_g_=6soVVODm>hS#cWFK4u|v`?s4)eblLQnNhl_nmOAvs&GI_Qe;mK3nFfC4T=3
zOJHG5R@RLo{(t}HtkrqHJW5GTw`BH(x(gvKQ|3-vRj_E<()(VfD^1o{ALCyb8ZvEZ
zAnTS%7W;w}`TtFA*mCZ=k(id;ncQ_h3uk}MNtnAX`Z~9dJ(sYYd-&R_X)8;&v+Y}}
zKe>KN)!C+87Mt{SQFb?$WlHyL7MXnJTwhFBm%Db1Vj!bn?3^WT(`NVuF?04c*$S5l
zEjfKn`SIHs>230@oTqNaA7MN!|2s#fXGg)o`)5DPPLbEGc_%&p#EZ>`w_p0Q(co~+
zn*hbQ+kQuGziU`Cp*OwK^qTKU?kv%x6JP($IJ0Z+>-wFBy>DB1-@W<zKVZ^@N-YhZ
z85?8%^rZ!^E;jzQNW9}nZ$!833I3}lx(7UDU5fjchfDl<YO*SQhE!(%-(PFB<nI&+
z)|y{l{PaxL6o2N#IXfB)Ue5cQwU6m`>L!cn63@TL_kPYZV{A(=H1g-l7ZaYbD8$J4
zaYWdg{GT6sf8S=QzxFtXS8~;jf+W!e4%@p^N`xPrfAq@#!eRTc&yCWXw-qq9S_eN|
zbNxzhxUIqln;#Dx-<@A4zBuMo;sxHOvcLEF5+wOuE!fL<E<g21NmQ=BI5gH#$STLA
zS9br)!WWL3pOlWJt6o0J_;8&<<>#H-7ki~vx8?cIm~#HO*wcEYUaorP{uJJ`Em91}
zUhFcDy3x<>bLdBj?S;i+s?(n}r4|0jQeWDscRjgwdr!9D{$1|dlKsmkzjJH2a*4UV
zDttj*+u5_c{f85D9rVunm4%r<%UEiBPyhLRP62^Mb+%h{v!CtjOuIGlwZj$-_FZi;
z-8)YGShXV9*fT)s-u}9u`d3z)*1O0ix>#F0TxEE%F^{Qn!(}y}GtS4KuGM#GvX#8(
zsPSsu%H#8YJF$KH_||EX$ulj^Sk>*nnWNT7DyKc3&{bgSvwwcFd*^~G*+YNse%;n{
z{^{ZP_1{%K%W++uaL#yY^NV+<*_9Vc6cnC3nfJWr#Jki<cdzgs=oUOPX@BxOy;Ets
zlKF$)wibV^J#cj2W=6a0RkO^WPLyBfXmMoeuf^w=FXUQsV4Z<SxUG~=t!v2f53c_;
z6J8rO$@5uxrtiCv`>%2Te`cQ>`B@lk07DCCeQ#)KZZ`RyP_CqFMTvWGNn%N=f}x3m
zfkF_MzFU4?iGrc&<RoEbMzhJ^g;J2!SR$!0GMM~PSeVg#GOLIgquFE|5$}3au(X{W
ztbKvhya=f*NY#hi#-;Bc;HzM0X9sPZfGr2LPHb%SgUq==`hpO~7=p}&$r>7Q85)7?
z(GM~-;4(CTFfF(&6bx7tg6!-j2l9y6VVYqCQb>duU?U!Sitsxn7N>&3LO;wuz{}Np
zvZJUHlcDisYcZ+G`BFU0hDJt{H%d!SULeKJr(k3b3Rn<nWNtCpP)3;@WShB>(c~p!
zb|I!_3Z@`z01^bT3?O_{GX*0fkXH=Aw1u%TOq>g%$`~YKU;s59tQ%s6fx%>XX=7Ee
z=b?UrJ2xuW$ulBC+aoonEVU#vIdQU`lo+ES)ZG%3cS{R`+&p=L7{_Ez8Q#fuGGgrJ
zMn(!C$6k~Yu`)7(TW4lyr~q;lSlZlz%ghWEFCZR>1(F4^LC!KzFf%g;Icf3*8E&MI
ziwt!2be)_dEyZXFbpX%g6XLv+cT4lvgS-y%AP9rZ0EHfi4Wf<AEx<tl3I-U41R634
zRjB~dZJ+>33x=j3hk!B2X&?-Ds<{Qok6_Q48W<?lgCsy^!+dA}_MbUa8Aul9LlE22
z!~|@tfdWVrWHT&UOij(WAg%(L1~M8<gCf`50v4g*2nP8WBoCr3OhIuAN)@JNaIb>A
z4^{xvXkY+#Ge``AC;yX{n5-ws%W7btU}`XVqo@=#GFhOJ$tP%PVG_%w@0ypKpOTrE
zu3%&`d7`B3<dwSIlXps{PR<hNo_t$ImJOb$#YLT*@++cs4UH6ZjSMXmEKH3Q%uNg@
z2L_7>niz8FJ0})+q-LgPlz>I8b<`M*CKt+zPTmwOHo05DShBbvF*#MgM8876N)udm
zxMk*~8Y>tXPQEB2HTkuIcD;dtv7KEpq%Tr2Cp0uWKsZzEty;<Dz7D;cQ(We#Y)y`Q
z-H{)jQlrqs!Er)bvBzl!!$ARNwkHb}7JS-a$i&3N*t|$Vf<;zT<j@1*kSC%70Wot}
z!`BwBow#=G`jy94<pyMzt^Qw9`+fEAxyA2R78jnm!g9Fq&LvkZ{|T$=QywO2mw7+g
zbfe<snU_Jgq?U`%zHq<jlEl#~w^yn#ov}>Fi`qLQC}L5Q{lX7FPvkNlJ6PB*zgU)E
zWAdYviGf-d<Nww&P1lXj`+WT5t*hDBx>Y>mwUyLgIz}#W+A`&@=Y&)I8p%tzrY_fU
z6RHn*BE8H)qe%Rxhw|g6iG@nxp)=}Z#QxQr@*Eb^;<M0t%(v>0km|dKCoi4Qm}zq?
z?WvYv+uLJ%HmJ@pf7bmo@!yRy9ggB7VF`XSB#Mv47=)kU{d~Y?W95yS9LBcfFrCUX
zBHTxA6-e(9cyBs!wuFV(Io4q9%e>3BE^BUK{@4}c`fK9vli$<C(wvN~H=kW`t|^aQ
zw*GB)&!xyqCm(a~>^(7c-4nw(FTIj_-nf`^<mnr&eD%6AH#ei_*T;%;6W63HWd1x+
zci)1urmC-u0}jb^W!%kpzlw)Lq#%5HiC~WRRfAmPp8XQ;%#US$oiAa|SH02tw(!Po
z?OBG6ydsAsx4AFd&l@YfPkqPNi2i~f>|5lsx>rrFfB8LYZ==`UQ__1Rlb%m~RHope
zQTnaFgzZ#j{OcFZpVnnHZ&>)e?s4z}on=ZPi@&r7&Ut%erq;5?>3<FWW+m-ilJCBl
z*P!^p?+LovX17_4?=vNHT9>@*RouQuUR(Wv{fB2!;s3YJp8oz?f6(a@7W1dfShB-F
z|98h(huY^hUC;K`ul#$#Oyy0DZNX>WKYVQuF7vq6s+umo%o(=)9+TTKX=Uqx+PSyC
z-l%)fe_(UlHuv&fuhkzix1Nce*SRf+>uczyNg+Lg_7m3h{I;z)KkM6?@80*8@(8)T
z;pr-4K9#usp{sjk_*?x$$MT&2Do+#rHFd80qIWIlCf)9f`8VSzbIHScrA;s1yQoF}
z=?Z5FFEKI=uDx<g`rFZ6)`53&pXx_G+?;M0Rkm+x|Kf(i{?67rjJsxRd+;=L75BoH
zSH-!J&z{WuFxf>wa4A=dz=u7HW`yvmMZGjW)h8~ubVok7(I@_Nou(s)4NtBt<XpIN
zp~Kq=VbY(jw!Tt&81<<|%bYi8g>U`dBolVsYWtpNWp43t<$ekE(;o2sn5I=CF5dX=
zOl#MtRiC%I`a0NNIo>Yce&&wPLe^Eml9{vf{`_4pbE{?P)@f^;y*Z+T&gm%5IialQ
zV!yL;))~+9wp=g&Joq(Z_tfbo%TKY~YJ71<#)Gx)&%~s)ZgZEP6YskqlhiavvSVVL
zaeYsD@8XHqWp-`toj!3gYox=`WumW43cS_|+BuegTFtni<No72f5hEVULP$GVogp-
z^mWY4e7W<pxmP~Z)k1H{iBqe4j?S1nMbXn{*I$YGkyFH`$?5R-^l>ueXI+;4=<@hH
zt7>o4uB6<HU)f&Gh@2J~arWReW2qDCh32&Unfx=WzU$xwWBseiu?MUc)O-uSdtv_7
z>tP(LPwCAy6WOC}xi(KL*>;Mpb+nAHk}SWhqwA6HDw{h$Mz{azn5y!tO*6?zQud?1
zP_Db;`k4Zc?&_RPte1Uj*|TlawbN;9x3haLPpUYx%HQya@ur%V2WHlB`xZ)UdDr&u
z*0X8v{;9bfQfaOCd3$`C*SDprM>!^44!->4B7Z>d)oi!p(ivQTW|wc;?W8m14bPm9
z56%S~{_HMlYpQ!F+yD0Zk^?>0A3mKT+5K7d_XVz^Z<<y!Qgn~`OpcFj<L_Pk`;9^L
zh4(h4lD|cp+xUMinV-D+>2%dpyA5o06WA=;D^5wsgf&KJuj^dJpIh(srfK?x>X+B%
zc5l5^_15;(w4RNhZ$CfrOJ_^z6VIm;{)s=l+P-${TnF2IVo!@@`ktn7q_-Gf;_k7i
zZ7)6dCF#=!<;J|pmk(ujtFSk1Q$O9q@_Eh@@ynm>mh%@GF1mX7$BpL<uN+qHxg_W-
z8nf(PzD&x7uhOb|)hvqd1bG<C9@NJ_EjNACwMO%)okH;pnKjN5+*+3`6)v%^I9nYZ
zKQ~x>o|bT!M5XwB9y>|aRr@3N=qj5VtG6D#dQPLKBYnyA^DKuItYx%+$#5H1o=&W-
z%G@*Ud~LN^S^dT{RoXcd*{Xl+b}^8N@HDL0|M&QD{#CbcvqW}sr4=^p=lEfLc=hc1
z)}Lw1bI%q{F1oBZ`_?V#mJQ;yq2{w$+orubmvv<6j<Ecfu`K3YCqFzWjTO)T>~ZUy
zTFRE?(@V?)^b*(VTW#^bp_5rrwf*7A=a%PEtY6E_@tgHv!H@O(X7+y5O1X6Xv;Twb
zS5JRi!YC8YwcU9CU;hpBAKLTp+M77r;$Zgl2X<EV{t*jyME<Uub0kpH`_i;OLcSTI
zx35p@i9hu3eB7*C2dkDRfBSH{SS+|X{`#4adv9hH{#L&A>w<ULS)R;lxzgzEucjut
z7Y7vwwMNhMpPzke;ypg)5Bc#y9sJBGCtCW>Sa16@XWnAXYcCeg;J=z_+J5e6_))Re
z2JIims(voH^Lu6eEzvoN?-$1IUU}Y|^D1Mv^!z6q4df@ezY&^}bYe=B?OC%e)AsM`
zcotQ=Q*ri_T65>8_jRW3a^AI4A#C?govE3x{a+r5owRM9*Zj=1g;xII(-h|$*F8VE
zzuwsJ`=Oh`QofFkadGo@TDJWazo^VB3Tpa8D|<-Wo|((gaPmbN^+fcBsjgFgP71im
z0B(U8DCim)E0~*`ff^dI`ffRi>BS0Wrlw{VT>6g1$*FnZ76@8{giGHg6(Xl=WIQ?F
zOG3oZj7#4)v$!}jFFianr6dE?;F~<#%W?8zS=V|)V+#}Hwn%WbPjI+|{q%45%+_5K
z-C=d~=Bj`N9;_l0+fN4wmNYQ!Iy<BDL51d0CefA2!JUmS6b}is{?yuFXk608w5ZY7
zY@%h``;`j}j0)>dBptcF@A8~UZ(?30eRIG3%zFR(kJVG0i^Pu<-dQqZ%bO+>?`y~E
zMgAXs_QrqdB=L_APLzm$TE`Rp#{Es0-0GAF)%@9dJ9axQWD`<zJaXIPSm8uZ>1i{z
zM||F7WTa~~-?UTy=dYh<D}y<?IOeSP-umzRqUc%E=1-lt`0{3X*36sFbeC<B@vfPs
zS(?31Pg7MrUVQary&v(ciciFLR=l0GH1ML~>Ey@tkHXh^`9$q?YrmjlBHgO!|D^TH
z3HF~#%%9xdOvG6iIGFICbw8NF_-KOl;*KX7f>zyaI}P&q%kLdMt$K6mg{KQn>rOX}
z-1WwK=k`5r_s$jXk&(Lktt5xp{KAB%W_@oM^Eb||`kWw=(R%mDWrN1B{+SgY#H|{p
zb~`9va!F)4_n|&W*&z0Yx`@fT=7a{T4@)K=DDJv_`rt_e1)hiA?YC#$n$;J7@a~VY
zsOyKymP+reeOU2&{pAn+mEytv`5C`{d{A1m<S&!N3bz)4htD!U&$=r4OhcDfaD^M+
z#irY*@1M`<>-E09C&GI%>(*MmZ8sO^$lOkyFi~KI_(S7KXD)LzX4SupeZ^f~DW&Jo
z*?jfY!37E7Q3s}mG+AFiX7%R%M5c{Po_9ZcGi`}=qwbXC+rcZXzb><W$yczr%A-wm
zK^5o2(5O}7Ws<^nCPp1bzYNbbKZveB+|n+q>1eigvdu|$-s{IZ$~RuDo&2ze!Kh~Q
z!}fRUUibPNa7g@kquyzLtxW%SecP#<65sL)db-w}b!Pmtltaqrxw>mWoc6`4#j54=
zdzrOkgda*~yfEfa6?T05qw0)H)XnYFRu-ILdbgqBV6o)Ju+AG+MzKqtuVg#aa_LHJ
zWpuIeq{&6XH-kz)XqP2E*eh7D|3=u9;-Khk+Z}t=d^wF-wSNSDP2M$S;iZ>3R@3YA
z7VkWBC?VqalUFMbdf!@H_b0x|SYiLh*!Wv9>o*7Lt~t%nrkU68Vad~3;_=Y!K!SOo
z{Vj*+1&vb2e0a=MRxG@j8P<P9{dAttT>qw74NLAd^j0hE&8h$E<fXbT=b>!+?N9@O
z#VjY(_A2=le)+UU+~v|~>#F18Vj3%UFYe#xT>q;gtI%&+-_)w5&iWpLH|;BBvI^da
zWoX|#8@!lBC3U^4im1<lw6F`_4>HSEzi4&d^e8FJWodPy82>5L%5QqFJLT?tVcLJ7
zS-pDQ_ZaKnT=wbjmf6P_K5mwNsGgRTDp@L?7_{G<cTt-`{;EZ<I+iD}JpQ|Uft>ku
zw%s!u(w^17wJp2B*crljrDH=-LuP$n1OE$gy9LD&O~)ez0?%!*I@-MK%!%)pjSp}2
z<9~Id!^NzrlkM!|LyoIC-gECgUL2m~+qJj#MpyZx)TgZO##06UtW8*{Y1iUE<<PTB
z%*UP`6xO}_LvY`owZ@;nEPHQnDbqfckN^2L1xxAOF@=2cn)S9}C0kZ#@uxpLleBqj
z#_#8?s?r-K32tcUy3*8T&A<7f`iChK#h1j~;ja5-pP}P@UZ_@MuItZrS05x_v%CFm
z%Z8IZ;l928Ui=@tY_7)}HUFKuD&v4Xw}PB@qUZ^^CVdT|x`lGQQCe4CW^K+ce12vA
zZU3+RC3!t-W+*;A?8YWhA9_RarqZN9!A%ig*dz88%P#g?toq$8_i>Y%*9s#sW%rFq
z_kM}g|Npx7u(5|>@!p6==hs43ldP|QeaiPZ@y_)NH}72xE0^Tg^4!>@8j`zG-8WPq
zc<;tIhU=UQYF~S$x*nbQ>C~yNqN%HvKe`b9^!Mu3-`@uN>IAP8{3ZT&iokVYjLLz_
z5>z$#g@FeO5MvgIT0z$c+Ap;<HAJo$Oz>0+ldW~sL`;mZ)B~kDmW)x8*XlS-{-m>f
z@&yIgdJ|Jq<lbp-1b0Ml<n6ln-QN{tGpbcLmUpSl4N)#pm^z7Tu8-yt<y%vih|DaU
zQ5Z2XSmN@HbBQvS40v4m4l7*ZXpPl8o6|1IcK`dH>TB=*|NHvx%**}j{_onCT^?J#
zw|(!m&F`Mqy?Y*aaY`V6*RssV6Rw>3bESUI&Xb;(rtZz~?Pjj-Xin)axb}W>X)BM>
zL`C7ns~T(hqdJ&>AIK{H@Xq&S#w~j@O9kuY2IYBGZu5GbeV%-IsO)C(xAgek+$GD;
z&N*a1?*_{<y*abzr6&8c{aiWorsb+DYxZ>PTxHoUcFRRIRd);L=1w2q_$f1|{O+GE
z;@bKvy}s5)(ON;>uD~(i-I3OVm5SYJPus;*eB*4?*BDst(NI+~&CU9?rRT)Xz|V`G
zA5S^9Y8ijAg;~v?9--x5JJ0EDj=Af$tGXuTv1!^GbJv?e!7B`>$eK=-a`IigXXU~W
zl~jM%z{4vtPBnHdYzy8vMcH(&lw+-r?}9liEVLSmmOZLp>2RubmLqH6x+^YPGo(CQ
z1KwRxIn~Uy)Mn+$EAAl@rd?di_pIQ^GC3M-yRvzTq3MiI3qz)8PIdhmm^Q`Iblxl9
zuM2fFEU!*~<$f`wK8qpMmv@QUWRn25D-o+YtX%t-e155Jd+f`Mn~V1x&o|PJoU+E@
zTAs<xjHwq37spFTCfA==F}@waZZ`4mp?wc}cAUIZwyy7YFaLA#&tGk;zxBNMxp?FD
zk3x^X#l@_@6nDM4bXLU7BQsNG=a^L{Tir1^Q?fL3X6D?R;c3s$`ktM8w);%^40-eY
z8TS(YZTkM>p6A~6-#)(n>^lFGoqa?_q)X(QCgn7%@Fi`MXBW+$CAL{1x}v^e^UQLc
zd#i#CZ?qh>-W76YeU5O7@rI?52fQN<8qJRRtZ~gU++^sSd-1}P>s-=NI#1oDkKApl
zE7zX$>`CeWeV0Cb`S$XO0qZ~i?u^4*+v7HdpSW8SI7h3H>Ha~<u&b;SRoA*EGhSmf
zh&c9W<qj_YMlCjDoti$z{L9kD4#zkP>P6EYtmY|L^TnHYN>;+kV~-|^$z>{UnfB>>
z|F6cjz1@0mR$0|PTJlS2SC`eK>{!1KMIX;iOy0`Rw!oY9{!%$_OS%840*?w!S062B
ziQrPa<64q&_1{r;u6+RuQ>MhMi3*so+amjF$)_NWIxPoHk%CX(XT4&PzyG7f&}-A%
zJ!%*0S9aQ6<lFkz=!X70fep>=x_n0*Wy=g?WajN{|0wY5V)UCOIv<7S#eY2fx8Qwd
z-8#LAz6$I=ud1!R<THKRa>4k_7oVeMo(ptw606u{mh5jL^E2g`&rFdCdF>kv52;Oc
ze#N}rZ};@iOb1=Q{CX<a@z8yP_Ty>iV`nX$C1iJfI*Vof710WgR?W8u8sBa`?HbuW
zmA$xp)i&49K`YKKN;W=uK~>XP{Fd(1(&+`$E^x8mFgCo({aTQp*}8!(pW_clRl?Gs
zcVZn%&zHA+?zh-ESzdd6^CE+X&tE4O%HPpWS~I))NwNX^=hgl51!WjAk4Q^J<y>3I
z@^_x$BJS1vSMMhr>!=qu{T1NHBe>o;W&T}#+sj?dTQ{ZueIUV|c%XraOF>?`k*Qt#
zqhZ+XRNW5q1RHi|Ijct;GIr+#`2+vy{$qYyF!4k7mK~E?)@y&_fAqw6dhjy2c^SQ;
z%7)GA3H!~W1I(_;?1)-=#N8ri{b#Xxv0o1s<rtm4ec1F7=Zwai{Qh<IVP%uko7uWd
zOO}VRO<w3Lz@Gi3d0|A!<rmk>SGsI<vu`wQUfy!A`|AAFy6=QO=sdN*^Y_5pzcHK<
zF?*QqNbT#LynC&FT;!%ZR%~Zy+8>@i-M{vr=ZO^y-^ptqkmjv(4%=|?MfdKIsB1nk
zm(MOLe!F2&tXf-F+M!+B58h7>o)lPbJm28B;qu@G+r4h?`SJVF-k%z0we;%lwai>;
z{q2eNw6}k9o<E<uhdsK>_x19F3X=~1TU(kxE4?;*d;H72+CNUOv0ZU#)vw!!zn1%@
zxULVM@v`h`W<oC;U)Brbmb}763J+E%D{OB#`q#}OS^NKl=I3eJX)$NA+~?Y`{AWA%
zfN4|x@rmcMj&heVS|ltsd((R-&>=46(24~tXB2WyKDLo)xvTK*`m<B+-$klrXJ)f(
zRIcn@lx%zVno{#wmNoqeCo*hQ41T!p<&`d0TAg=3{Iz+QhSU!KYc;#paeRDv`n1;6
zhWSN8-aHL+!!PSbZJZvaHcx%VL$kGhPn%wU-MipkYePL-?wlhX$1F5;#Y%MpZW;Y+
zTw1en#(n=gwo=y%K5aG&beuPN(!QN51$JJnVn4T8@0EG0%?8d;`8E4a`#<n#xjX6e
zubn(eoVjy%hn!y;BVpuw_+;G#jdy8tBHt|de$;G{zNFKPI&<Zvt0U7_FFPH7fN9dD
z<w8$STbR7vT<N;A^=5r>_ay=ODMjmiE6-&bwfD|G?kqpSzKTVR>!Z*2Z%ck2<^Fr%
zsKNfZ_cA+P9N|fAe>pej#DS@->YL6Kf9rkmOMkC+@{Q#$uDQ(5YnRnE`uI94@#w9q
zFN%+(>)xz%;IuEe^*~DJhpUd4XSmLp$aPWHbMsTp?^{)_ko?H+pL$$VyuR@DCGP30
z>kl0B<_<p}FSb#^SdjIz-}dEyUYEVS=Y3sdb`sx{Sf}`fxv#a&KHrdQVx6*glZJVI
z-m^KXA3OMcZG)<Ry0|{)d%F4U)1{);KkTpm61@4Z;)arg{wK}JM|QGzXCHM~(J1A-
z{YU@2L>D(NiSOc@(i7)1G;Z)bbdAZqK8d>{WljXgfm92b)icF)A{><>9=SXd&DQvx
zu~p(8Po2xos0T_H*S2`GeA2txY&~a>)uY+B*0^N{ln5!#WT;zwFFEzVam(P~DFq$O
z)qA2ZlyQgs_%FC7YRSdItY3yV8|`QIwrCv7+z_Y4aPHEJUz2#gs&6^!{ME05;bfOJ
zw`2XUy`SC1my3#}E38iXa`M-qpgNoIeT!<o%9RMn-rDv2H1qDVcRxRwh`c`Y>wn~B
zcMr$&?dFGGanG02wU`noTb9AJGAr6V$ED=d_RDNJ3(qfRzp&ls<x#QfvwmDId$PYU
zzu=uVeO7&zg>kx*WZ=r*cMI%a2$+|jIMP!$L4|2?dp+M=E^e7~FN}`Qv?^v3_OWtF
zP>kdk@(x^_am}MUSY_p=c?{{1HPQKpdc^-q6&kZ|cL{zr|3%$}t67Drj43Afj;CF5
z3-$P0xWIbZMsvQZuFMU4!;3e(TNAXe<WVi3c&De6x?mXh(mxtze|K;Dx5U68w(D17
z`-&G6Ub0Q_wEa>a6?WhKiqW^AC9-QWR=rQSCq3y7i{jS@H(k0@H~2X8+gtD7lJze5
zefQy$pT3=oX#2adez~qigQvIchTWVImBPZ8oC9=b?bQG6bMRqk`}No-*RONWj*s1a
zv+KvU?8$ScwsDD{+;XkAgni<|Tow+0-s+m`;i0q57nJT6Dc^Z?>HPX>0$)FR&oPaA
zDJODgfq#ae@U7i%Ip$nD5XSp=ve>-6lP0>AIyX3d)3S<=EB$lEeD}G9);2s+w_DmZ
zKB#&gb<I}3!L{+u=3A2Y?rk)_quTdy4ciOliwz}fAHOZwb27*-phO|D=kb&Ed1|U*
zKAVme@#pl^+LZa*Nv~exwdUmBmioL!n?=*}K3mFc^PHI{J|nEKc4?Bx?xPzunIf*V
z<h`{o`!)O3+)|D+l}51|>gSJeA8zfFs?TYCD*wB>PUJfS%ZupGA68yk@O{#Di<P3~
zLVM#k_!Z>s`u$;s7-K#w>kY9vg;IXUn>QNk9qCRqC~N$3EIVFq|FVkrCm*P2hzl*Q
zf7gEg-2ClXVw(=FbMCm!-8f<UlheF0_Y;L>-b|4e5MKD_FoTfXMPA(_|4&NsnBH=_
zGyln7Ext7|tHR!B>zsDYtl7@~hGVzQmHM=MPbyet{we%^uA=Uqy>*eGqYYDsdi2q4
zA!_|0>$qKwx1YJSa1&FS{_KtUR~xskzt(v2k+5C;ag*hJVT;4$bZXvvt*l7%Xzdj&
z%<Ar#X}zZ?|KPtrvY#*H+$#?2YCgnM#H;k>*WROVuU%|;6IGz{Qey4>yN6EQe-Yvq
zw{7jDr78>dW-gQ7qU8IlKkSa)f?1~VI+oM!SiRygQ=jssM56ik?)lwSGgr5G8gJqD
zU%Jpkd&;Ewb9UBiXxkV540+O<RGvEL+|OT=AFHN&R_k%zG<+RUboR(Ko(T)fzAXNA
zr}Nb+<x-Waa|5@_@;y3v^{?%>v+EtgfBY`Jx}PE5yw;^tMCV-A6<(!_LO!W%)_=QZ
z?^}}bD?K~l<nk_ubvbX3m0An@-?Qt}yrA?`j*~8C+!nj`z_MgcTU)(;$F9H8>ADBJ
zdjGwXh`5@%_V4Dyjyq=kn-_94VdagbE@#u`+q5afoZOT8(Wb&P=ZVU(wxc^OrW;0t
z%yshJp6Qz0<gxY2r)@=tnU_D9XSliS&G~>O;Ub}nPVd=qwe`+%zW+t6^%Cs1^P2ZM
z-8m(hFn!B{eW7fAPmagMYB8Ua_o@GXpl(Cw9DSJxo8bGc&pTt!7>Jckn%w62>tETr
z6BGaGJU#y3A}Yh;=iK(`^(*!l+L*dD?p`8&=_$W@kecW8M+)yM&m4W|==n4FvFOb3
zN#9tN<KBt22#KBHdi=gPZ9jV%`-13O{D(Xl%5>xw)VCe)I`6?yAtK4A<ZLarY(hj`
zeeyx?8cw@k(|K<8_f@)I&rB^%F)n+)b5iC}OUe14SKj%0Y4P(5$^Uq7ehQAAGb^t~
zsoDRe_2CVv5`3-|Du>>g7rw}TG)r%@T!J{i9fyrzMM!f#`wgMl|5zSLWqcG_!CLD%
zA>vTo3=XDwC$?BPSMW|VR}?wu!SXIqz=}ubXGZ-t=G&pk@-F9iZYazBu1YYv_@3jo
zS!1O03*C&}tlNCWj^9eiSiWQC7k~Y^n|Fjom}q|gy~O$Ak~QoJ#dqZSw`PC1c&%>t
z@@Ljd_k4Z4b}DyXq`kv+{@5LLKd((Z{z8y{b0N=<2T6ChqmNWqYqah5Kgi7UO<z3i
zQRjx2{}#_>m#!DRS?>1Sb$y4@<z>nG5^RAJ)B-s#DN5OF<o$N=PsW*^QzwJp-;Vlq
zb=uxjeio-5Ji2*Ev?S}?tQT7gE#r1(?zxlgS9a@=$?F%9;`z;im-E+7n)SG+de`Ld
zFQQwvN^>l;cvSyK@zFhjyC=8HN5}^K|5Y2XxOExpvPrk<n56$_AFXfS@QYu|;l<5Z
z*Co|^7T><lS$3V<(xfob@le#H`?s@KpIdAu=d;5;Oy#bsf9}P5OpYlh!vns>>uc((
zn-(1isD2Yao4H%;X56IojvsgB-C6d$wX$?s#IR<Udp)~$N&sgmQ=A}!_CKBgwm=n+
z-Q_{jM;lGI{9uR{SlA&P@43ESWCiaV%_$$E?roj3^UR^5yPx=%ZQ42W-!@?_>(qdS
z-NI@MH6t@Wc0R21Yg@Cf%4g0@VT-I2j$0)}y6gOQEcIADGfJ?jB7U*>^Em|~em*5~
z?<RfVKH~Idr?~#E*$lk5ty4C{#^}GeUjE|Ivcj1&^dh?0#XcrZN_BtxDD%?O<0bW{
zj_|&1+NZwz>+kj2xAphzyYm0Kx42ZNSzL65<w~uUpB}Goy67P?X{OM`*}q<{*~(bM
zzWd>yWzM(1zx(@bH}lqx`WoA!m@9iE6JL5=e|h6zcG(H9H)*PAWzudR>n69Zcr)il
zrsjTb?gf!Ij)hG#Sf7>FTh!lIDm$^@-`jMrqO|%h9dGUV^-4PwAB$R=-?YzfXPhf(
zx|mP%Y3_D@xwZca8D{k69=UcSZ;rm)Mz@Oxr`1I7%D*jFdUa;)biw;IdCzw2a0)#o
z^z_ivnX3<9FP*<(;a<s@+nE<<ztL|`SoQwku~)wh{ci+cJ$`Dv!oQ<i18y%2KJ5NO
zHN^Iux?#@zuxa&ss}GtRem9bzEb%68KePLW!pcteW2*YWX9L3=Y?z-fwJ9^d5r6W^
z(@R?-=PjCZbl;E7oi`N4#6O?EsijfDcKM+2v$_tIO_F&g7uBsFKJkv!?GZX<_`g6Y
z;Dun;3Y*&3XJSjOnHU|{A8PkB4_?<MKk;9E!dnX-?ZW?l;xDR~*H_(t`hLpm4fR(z
zszv(J!bPutz7Re~JtL20ca=})2N}`ox315(TJ;`G-`l+VeZ~vN6Bg@d_dLo|W>)`S
zqo#cR+2ltP-rah%`+t7q)3>7K?^{m1y;yxyEID`m<)yQ?=iJ+{u;j6r@Z{j7(Pk45
zKI@hC_0fD)&&ar~Y7Jy4iVt~(w2|p#pJ-iXV-vH@HPPmb+UljHnJHEVDQ3wQCMJox
zhQ?+_x`u{nM!E(D1_rto1}5gI25AN<i6+VFleflruvzLETB_?$=8cmjNvmqCji8~q
zu7RPhp=pSLrIn$9m66HhqF5~~qHAL<Sqv@pj3&Q|bs)(Soj5l&qI^QK`!{coTgvDL
z^1CLNzH?D(Vo7Fxo=aj$s)mb|k%6JPfuW(Pfu*5=k%_K>g}Q-(x+a&tZ+;3^6_b}H
zD2aporwLyfR#B9i#$}*jWH$L;f^@x^A!rQ}DEt-j6u3aNfuV(orGWyN2^TXkGc+(n
z7c(_Cw?r2+FaWJB18GL+H8#Uyo{_PUf`LK3fq?-+p}C<6x+R8&mL?dMm{}NEpjm8a
z09tDUvKPrbGZSNTG<62%7RE@P1KDq2U|?osZj7$b%-8@!%+%5t!!gF@pjBfan-Lx{
zH8(|fpn;jOsVRmX>Bbfqf)<9zE(95DU}#`sf#hn4n30JQhGWdlK`RnL@^Hr(nj4sz
zPnJxUVKkd;mMkCV;^bsz>FDa@>S*k0VPxv+<mzl<Wa(__Y;NFW;^ORNXG2g$ESH@f
ZS8+*VQ3*IP8CsZ`m~g48y863u0RaBL6NCT&

diff --git a/libs/zlib/zlib.h b/libs/zlib/zlib.h
index f09cdaf1e0..8d4b932eaf 100644
--- a/libs/zlib/zlib.h
+++ b/libs/zlib/zlib.h
@@ -1,7 +1,7 @@
 /* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.11, January 15th, 2017
+  version 1.3.1, January 22nd, 2024
 
-  Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+  Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler
 
   This software is provided 'as-is', without any express or implied
   warranty.  In no event will the authors be held liable for any damages
@@ -37,11 +37,11 @@
 extern "C" {
 #endif
 
-#define ZLIB_VERSION "1.2.11"
-#define ZLIB_VERNUM 0x12b0
+#define ZLIB_VERSION "1.3.1"
+#define ZLIB_VERNUM 0x1310
 #define ZLIB_VER_MAJOR 1
-#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 11
+#define ZLIB_VER_MINOR 3
+#define ZLIB_VER_REVISION 1
 #define ZLIB_VER_SUBREVISION 0
 
 /*
@@ -78,8 +78,8 @@ extern "C" {
   even in the case of corrupted input.
 */
 
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
+typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size);
+typedef void   (*free_func)(voidpf opaque, voidpf address);
 
 struct internal_state;
 
@@ -217,7 +217,7 @@ typedef gz_header FAR *gz_headerp;
 
                         /* basic functions */
 
-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
+ZEXTERN const char * ZEXPORT zlibVersion(void);
 /* The application can compare zlibVersion and ZLIB_VERSION for consistency.
    If the first character differs, the library code actually used is not
    compatible with the zlib.h header file used by the application.  This check
@@ -225,12 +225,12 @@ ZEXTERN const char * ZEXPORT zlibVersion OF((void));
  */
 
 /*
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
+ZEXTERN int ZEXPORT deflateInit(z_streamp strm, int level);
 
      Initializes the internal stream state for compression.  The fields
    zalloc, zfree and opaque must be initialized before by the caller.  If
    zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
-   allocation functions.
+   allocation functions.  total_in, total_out, adler, and msg are initialized.
 
      The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
    1 gives best speed, 9 gives best compression, 0 gives no compression at all
@@ -247,7 +247,7 @@ ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
 */
 
 
-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
+ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush);
 /*
     deflate compresses as much data as possible, and stops when the input
   buffer becomes empty or the output buffer becomes full.  It may introduce
@@ -276,7 +276,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
   == 0), or after each call of deflate().  If deflate returns Z_OK and with
   zero avail_out, it must be called again after making room in the output
   buffer because there might be more output pending. See deflatePending(),
-  which can be used if desired to determine whether or not there is more ouput
+  which can be used if desired to determine whether or not there is more output
   in that case.
 
     Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
@@ -320,8 +320,8 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
   with the same value of the flush parameter and more output space (updated
   avail_out), until the flush is complete (deflate returns with non-zero
   avail_out).  In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
-  avail_out is greater than six to avoid repeated flush markers due to
-  avail_out == 0 on return.
+  avail_out is greater than six when the flush marker begins, in order to avoid
+  repeated flush markers upon calling deflate() again when avail_out == 0.
 
     If the parameter flush is set to Z_FINISH, pending input is processed,
   pending output is flushed and deflate returns with Z_STREAM_END if there was
@@ -360,7 +360,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
 */
 
 
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
+ZEXTERN int ZEXPORT deflateEnd(z_streamp strm);
 /*
      All dynamically allocated data structures for this stream are freed.
    This function discards any unprocessed input and does not flush any pending
@@ -375,7 +375,7 @@ ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
 
 
 /*
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateInit(z_streamp strm);
 
      Initializes the internal stream state for decompression.  The fields
    next_in, avail_in, zalloc, zfree and opaque must be initialized before by
@@ -383,7 +383,8 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
    read or consumed.  The allocation of a sliding window will be deferred to
    the first call of inflate (if the decompression does not complete on the
    first call).  If zalloc and zfree are set to Z_NULL, inflateInit updates
-   them to use default allocation functions.
+   them to use default allocation functions.  total_in, total_out, adler, and
+   msg are initialized.
 
      inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
    memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
@@ -397,7 +398,7 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
 */
 
 
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
+ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush);
 /*
     inflate decompresses as much data as possible, and stops when the input
   buffer becomes empty or the output buffer becomes full.  It may introduce
@@ -517,7 +518,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
 */
 
 
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateEnd(z_streamp strm);
 /*
      All dynamically allocated data structures for this stream are freed.
    This function discards any unprocessed input and does not flush any pending
@@ -535,16 +536,15 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
 */
 
 /*
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
-                                     int  level,
-                                     int  method,
-                                     int  windowBits,
-                                     int  memLevel,
-                                     int  strategy));
+ZEXTERN int ZEXPORT deflateInit2(z_streamp strm,
+                                 int level,
+                                 int method,
+                                 int windowBits,
+                                 int memLevel,
+                                 int strategy);
 
      This is another version of deflateInit with more compression options.  The
-   fields next_in, zalloc, zfree and opaque must be initialized before by the
-   caller.
+   fields zalloc, zfree and opaque must be initialized before by the caller.
 
      The method parameter is the compression method.  It must be Z_DEFLATED in
    this version of the library.
@@ -608,9 +608,9 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
    compression: this will be done by deflate().
 */
 
-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
+ZEXTERN int ZEXPORT deflateSetDictionary(z_streamp strm,
+                                         const Bytef *dictionary,
+                                         uInt  dictLength);
 /*
      Initializes the compression dictionary from the given byte sequence
    without producing any compressed output.  When using the zlib format, this
@@ -652,16 +652,16 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
    not perform any compression: this will be done by deflate().
 */
 
-ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm,
-                                             Bytef *dictionary,
-                                             uInt  *dictLength));
+ZEXTERN int ZEXPORT deflateGetDictionary(z_streamp strm,
+                                         Bytef *dictionary,
+                                         uInt  *dictLength);
 /*
      Returns the sliding dictionary being maintained by deflate.  dictLength is
    set to the number of bytes in the dictionary, and that many bytes are copied
    to dictionary.  dictionary must have enough space, where 32768 bytes is
    always enough.  If deflateGetDictionary() is called with dictionary equal to
    Z_NULL, then only the dictionary length is returned, and nothing is copied.
-   Similary, if dictLength is Z_NULL, then it is not set.
+   Similarly, if dictLength is Z_NULL, then it is not set.
 
      deflateGetDictionary() may return a length less than the window size, even
    when more than the window size in input has been provided. It may return up
@@ -674,8 +674,8 @@ ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm,
    stream state is inconsistent.
 */
 
-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
-                                    z_streamp source));
+ZEXTERN int ZEXPORT deflateCopy(z_streamp dest,
+                                z_streamp source);
 /*
      Sets the destination stream as a complete copy of the source stream.
 
@@ -692,31 +692,32 @@ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
    destination.
 */
 
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
+ZEXTERN int ZEXPORT deflateReset(z_streamp strm);
 /*
      This function is equivalent to deflateEnd followed by deflateInit, but
    does not free and reallocate the internal compression state.  The stream
    will leave the compression level and any other attributes that may have been
-   set unchanged.
+   set unchanged.  total_in, total_out, adler, and msg are initialized.
 
      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent (such as zalloc or state being Z_NULL).
 */
 
-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
-                                      int level,
-                                      int strategy));
+ZEXTERN int ZEXPORT deflateParams(z_streamp strm,
+                                  int level,
+                                  int strategy);
 /*
      Dynamically update the compression level and compression strategy.  The
    interpretation of level and strategy is as in deflateInit2().  This can be
    used to switch between compression and straight copy of the input data, or
    to switch to a different kind of input data requiring a different strategy.
    If the compression approach (which is a function of the level) or the
-   strategy is changed, and if any input has been consumed in a previous
-   deflate() call, then the input available so far is compressed with the old
-   level and strategy using deflate(strm, Z_BLOCK).  There are three approaches
-   for the compression levels 0, 1..3, and 4..9 respectively.  The new level
-   and strategy will take effect at the next call of deflate().
+   strategy is changed, and if there have been any deflate() calls since the
+   state was initialized or reset, then the input available so far is
+   compressed with the old level and strategy using deflate(strm, Z_BLOCK).
+   There are three approaches for the compression levels 0, 1..3, and 4..9
+   respectively.  The new level and strategy will take effect at the next call
+   of deflate().
 
      If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
    not have enough output space to complete, then the parameter change will not
@@ -729,7 +730,7 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
    Then no more input data should be provided before the deflateParams() call.
    If this is done, the old level and strategy will be applied to the data
    compressed before deflateParams(), and the new level and strategy will be
-   applied to the the data compressed after deflateParams().
+   applied to the data compressed after deflateParams().
 
      deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream
    state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if
@@ -740,11 +741,11 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
    retried with more output space.
 */
 
-ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
-                                    int good_length,
-                                    int max_lazy,
-                                    int nice_length,
-                                    int max_chain));
+ZEXTERN int ZEXPORT deflateTune(z_streamp strm,
+                                int good_length,
+                                int max_lazy,
+                                int nice_length,
+                                int max_chain);
 /*
      Fine tune deflate's internal compression parameters.  This should only be
    used by someone who understands the algorithm used by zlib's deflate for
@@ -757,8 +758,8 @@ ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
    returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
  */
 
-ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
-                                       uLong sourceLen));
+ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm,
+                                   uLong sourceLen);
 /*
      deflateBound() returns an upper bound on the compressed size after
    deflation of sourceLen bytes.  It must be called after deflateInit() or
@@ -772,9 +773,9 @@ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
    than Z_FINISH or Z_NO_FLUSH are used.
 */
 
-ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
-                                       unsigned *pending,
-                                       int *bits));
+ZEXTERN int ZEXPORT deflatePending(z_streamp strm,
+                                   unsigned *pending,
+                                   int *bits);
 /*
      deflatePending() returns the number of bytes and bits of output that have
    been generated, but not yet provided in the available output.  The bytes not
@@ -787,9 +788,9 @@ ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
    stream state was inconsistent.
  */
 
-ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
+ZEXTERN int ZEXPORT deflatePrime(z_streamp strm,
+                                 int bits,
+                                 int value);
 /*
      deflatePrime() inserts bits in the deflate output stream.  The intent
    is that this function is used to start off the deflate output with the bits
@@ -804,8 +805,8 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
    source stream state was inconsistent.
 */
 
-ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
-                                         gz_headerp head));
+ZEXTERN int ZEXPORT deflateSetHeader(z_streamp strm,
+                                     gz_headerp head);
 /*
      deflateSetHeader() provides gzip header information for when a gzip
    stream is requested by deflateInit2().  deflateSetHeader() may be called
@@ -821,16 +822,17 @@ ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
    gzip file" and give up.
 
      If deflateSetHeader is not used, the default gzip header has text false,
-   the time set to zero, and os set to 255, with no extra, name, or comment
-   fields.  The gzip header is returned to the default state by deflateReset().
+   the time set to zero, and os set to the current operating system, with no
+   extra, name, or comment fields.  The gzip header is returned to the default
+   state by deflateReset().
 
      deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent.
 */
 
 /*
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
-                                     int  windowBits));
+ZEXTERN int ZEXPORT inflateInit2(z_streamp strm,
+                                 int windowBits);
 
      This is another version of inflateInit with an extra parameter.  The
    fields next_in, avail_in, zalloc, zfree and opaque must be initialized
@@ -865,9 +867,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
    detection, or add 16 to decode only the gzip format (the zlib format will
    return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is a
    CRC-32 instead of an Adler-32.  Unlike the gunzip utility and gzread() (see
-   below), inflate() will not automatically decode concatenated gzip streams.
-   inflate() will return Z_STREAM_END at the end of the gzip stream.  The state
-   would need to be reset to continue decoding a subsequent gzip stream.
+   below), inflate() will *not* automatically decode concatenated gzip members.
+   inflate() will return Z_STREAM_END at the end of the gzip member.  The state
+   would need to be reset to continue decoding a subsequent gzip member.  This
+   *must* be done if there is more data after a gzip member, in order for the
+   decompression to be compliant with the gzip standard (RFC 1952).
 
      inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
    memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
@@ -881,9 +885,9 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
    deferred until inflate() is called.
 */
 
-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
+ZEXTERN int ZEXPORT inflateSetDictionary(z_streamp strm,
+                                         const Bytef *dictionary,
+                                         uInt  dictLength);
 /*
      Initializes the decompression dictionary from the given uncompressed byte
    sequence.  This function must be called immediately after a call of inflate,
@@ -904,22 +908,22 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
    inflate().
 */
 
-ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
-                                             Bytef *dictionary,
-                                             uInt  *dictLength));
+ZEXTERN int ZEXPORT inflateGetDictionary(z_streamp strm,
+                                         Bytef *dictionary,
+                                         uInt  *dictLength);
 /*
      Returns the sliding dictionary being maintained by inflate.  dictLength is
    set to the number of bytes in the dictionary, and that many bytes are copied
    to dictionary.  dictionary must have enough space, where 32768 bytes is
    always enough.  If inflateGetDictionary() is called with dictionary equal to
    Z_NULL, then only the dictionary length is returned, and nothing is copied.
-   Similary, if dictLength is Z_NULL, then it is not set.
+   Similarly, if dictLength is Z_NULL, then it is not set.
 
      inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
    stream state is inconsistent.
 */
 
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateSync(z_streamp strm);
 /*
      Skips invalid compressed data until a possible full flush point (see above
    for the description of deflate with Z_FULL_FLUSH) can be found, or until all
@@ -932,14 +936,14 @@ ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
      inflateSync returns Z_OK if a possible full flush point has been found,
    Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point
    has been found, or Z_STREAM_ERROR if the stream structure was inconsistent.
-   In the success case, the application may save the current current value of
-   total_in which indicates where valid compressed data was found.  In the
-   error case, the application may repeatedly call inflateSync, providing more
-   input each time, until success or end of the input data.
+   In the success case, the application may save the current value of total_in
+   which indicates where valid compressed data was found.  In the error case,
+   the application may repeatedly call inflateSync, providing more input each
+   time, until success or end of the input data.
 */
 
-ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
-                                    z_streamp source));
+ZEXTERN int ZEXPORT inflateCopy(z_streamp dest,
+                                z_streamp source);
 /*
      Sets the destination stream as a complete copy of the source stream.
 
@@ -954,18 +958,19 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
    destination.
 */
 
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateReset(z_streamp strm);
 /*
      This function is equivalent to inflateEnd followed by inflateInit,
    but does not free and reallocate the internal decompression state.  The
    stream will keep attributes that may have been set by inflateInit2.
+   total_in, total_out, adler, and msg are initialized.
 
      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent (such as zalloc or state being Z_NULL).
 */
 
-ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
-                                      int windowBits));
+ZEXTERN int ZEXPORT inflateReset2(z_streamp strm,
+                                  int windowBits);
 /*
      This function is the same as inflateReset, but it also permits changing
    the wrap and window size requests.  The windowBits parameter is interpreted
@@ -978,9 +983,9 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
    the windowBits parameter is invalid.
 */
 
-ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
+ZEXTERN int ZEXPORT inflatePrime(z_streamp strm,
+                                 int bits,
+                                 int value);
 /*
      This function inserts bits in the inflate input stream.  The intent is
    that this function is used to start inflating at a bit position in the
@@ -999,7 +1004,7 @@ ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
    stream state was inconsistent.
 */
 
-ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
+ZEXTERN long ZEXPORT inflateMark(z_streamp strm);
 /*
      This function returns two values, one in the lower 16 bits of the return
    value, and the other in the remaining upper bits, obtained by shifting the
@@ -1027,8 +1032,8 @@ ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
    source stream state was inconsistent.
 */
 
-ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
-                                         gz_headerp head));
+ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm,
+                                     gz_headerp head);
 /*
      inflateGetHeader() requests that gzip header information be stored in the
    provided gz_header structure.  inflateGetHeader() may be called after
@@ -1068,8 +1073,8 @@ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
 */
 
 /*
-ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
-                                        unsigned char FAR *window));
+ZEXTERN int ZEXPORT inflateBackInit(z_streamp strm, int windowBits,
+                                    unsigned char FAR *window);
 
      Initialize the internal stream state for decompression using inflateBack()
    calls.  The fields zalloc, zfree and opaque in strm must be initialized
@@ -1089,13 +1094,13 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
    the version of the header file.
 */
 
-typedef unsigned (*in_func) OF((void FAR *,
-                                z_const unsigned char FAR * FAR *));
-typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
+typedef unsigned (*in_func)(void FAR *,
+                            z_const unsigned char FAR * FAR *);
+typedef int (*out_func)(void FAR *, unsigned char FAR *, unsigned);
 
-ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
-                                    in_func in, void FAR *in_desc,
-                                    out_func out, void FAR *out_desc));
+ZEXTERN int ZEXPORT inflateBack(z_streamp strm,
+                                in_func in, void FAR *in_desc,
+                                out_func out, void FAR *out_desc);
 /*
      inflateBack() does a raw inflate with a single call using a call-back
    interface for input and output.  This is potentially more efficient than
@@ -1163,7 +1168,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
    cannot return Z_OK.
 */
 
-ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateBackEnd(z_streamp strm);
 /*
      All memory allocated by inflateBackInit() is freed.
 
@@ -1171,7 +1176,7 @@ ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
    state was inconsistent.
 */
 
-ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
+ZEXTERN uLong ZEXPORT zlibCompileFlags(void);
 /* Return flags indicating compile-time options.
 
     Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
@@ -1224,8 +1229,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
    you need special options.
 */
 
-ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
-                                 const Bytef *source, uLong sourceLen));
+ZEXTERN int ZEXPORT compress(Bytef *dest,   uLongf *destLen,
+                             const Bytef *source, uLong sourceLen);
 /*
      Compresses the source buffer into the destination buffer.  sourceLen is
    the byte length of the source buffer.  Upon entry, destLen is the total size
@@ -1239,9 +1244,9 @@ ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
    buffer.
 */
 
-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
-                                  const Bytef *source, uLong sourceLen,
-                                  int level));
+ZEXTERN int ZEXPORT compress2(Bytef *dest,   uLongf *destLen,
+                              const Bytef *source, uLong sourceLen,
+                              int level);
 /*
      Compresses the source buffer into the destination buffer.  The level
    parameter has the same meaning as in deflateInit.  sourceLen is the byte
@@ -1255,15 +1260,15 @@ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
    Z_STREAM_ERROR if the level parameter is invalid.
 */
 
-ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
+ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen);
 /*
      compressBound() returns an upper bound on the compressed size after
    compress() or compress2() on sourceLen bytes.  It would be used before a
    compress() or compress2() call to allocate the destination buffer.
 */
 
-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
-                                   const Bytef *source, uLong sourceLen));
+ZEXTERN int ZEXPORT uncompress(Bytef *dest,   uLongf *destLen,
+                               const Bytef *source, uLong sourceLen);
 /*
      Decompresses the source buffer into the destination buffer.  sourceLen is
    the byte length of the source buffer.  Upon entry, destLen is the total size
@@ -1280,8 +1285,8 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
    buffer with the uncompressed data up to that point.
 */
 
-ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest,   uLongf *destLen,
-                                    const Bytef *source, uLong *sourceLen));
+ZEXTERN int ZEXPORT uncompress2(Bytef *dest,   uLongf *destLen,
+                                const Bytef *source, uLong *sourceLen);
 /*
      Same as uncompress, except that sourceLen is a pointer, where the
    length of the source is *sourceLen.  On return, *sourceLen is the number of
@@ -1300,16 +1305,16 @@ ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest,   uLongf *destLen,
 typedef struct gzFile_s *gzFile;    /* semi-opaque gzip file descriptor */
 
 /*
-ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
+ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode);
 
-     Opens a gzip (.gz) file for reading or writing.  The mode parameter is as
-   in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
-   a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
-   compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
-   for fixed code compression as in "wb9F".  (See the description of
-   deflateInit2 for more information about the strategy parameter.)  'T' will
-   request transparent writing or appending with no compression and not using
-   the gzip format.
+     Open the gzip (.gz) file at path for reading and decompressing, or
+   compressing and writing.  The mode parameter is as in fopen ("rb" or "wb")
+   but can also include a compression level ("wb9") or a strategy: 'f' for
+   filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h",
+   'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression
+   as in "wb9F".  (See the description of deflateInit2 for more information
+   about the strategy parameter.)  'T' will request transparent writing or
+   appending with no compression and not using the gzip format.
 
      "a" can be used instead of "w" to request that the gzip stream that will
    be written be appended to the file.  "+" will result in an error, since
@@ -1337,11 +1342,11 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
    file could not be opened.
 */
 
-ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
+ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode);
 /*
-     gzdopen associates a gzFile with the file descriptor fd.  File descriptors
-   are obtained from calls like open, dup, creat, pipe or fileno (if the file
-   has been previously opened with fopen).  The mode parameter is as in gzopen.
+     Associate a gzFile with the file descriptor fd.  File descriptors are
+   obtained from calls like open, dup, creat, pipe or fileno (if the file has
+   been previously opened with fopen).  The mode parameter is as in gzopen.
 
      The next call of gzclose on the returned gzFile will also close the file
    descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
@@ -1360,15 +1365,15 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
    will not detect if fd is invalid (unless fd is -1).
 */
 
-ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
+ZEXTERN int ZEXPORT gzbuffer(gzFile file, unsigned size);
 /*
-     Set the internal buffer size used by this library's functions.  The
-   default buffer size is 8192 bytes.  This function must be called after
-   gzopen() or gzdopen(), and before any other calls that read or write the
-   file.  The buffer memory allocation is always deferred to the first read or
-   write.  Three times that size in buffer space is allocated.  A larger buffer
-   size of, for example, 64K or 128K bytes will noticeably increase the speed
-   of decompression (reading).
+     Set the internal buffer size used by this library's functions for file to
+   size.  The default buffer size is 8192 bytes.  This function must be called
+   after gzopen() or gzdopen(), and before any other calls that read or write
+   the file.  The buffer memory allocation is always deferred to the first read
+   or write.  Three times that size in buffer space is allocated.  A larger
+   buffer size of, for example, 64K or 128K bytes will noticeably increase the
+   speed of decompression (reading).
 
      The new buffer size also affects the maximum length for gzprintf().
 
@@ -1376,20 +1381,20 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
    too late.
 */
 
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
+ZEXTERN int ZEXPORT gzsetparams(gzFile file, int level, int strategy);
 /*
-     Dynamically update the compression level or strategy.  See the description
-   of deflateInit2 for the meaning of these parameters.  Previously provided
-   data is flushed before the parameter change.
+     Dynamically update the compression level and strategy for file.  See the
+   description of deflateInit2 for the meaning of these parameters. Previously
+   provided data is flushed before applying the parameter changes.
 
      gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not
    opened for writing, Z_ERRNO if there is an error writing the flushed data,
    or Z_MEM_ERROR if there is a memory allocation error.
 */
 
-ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
+ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len);
 /*
-     Reads the given number of uncompressed bytes from the compressed file.  If
+     Read and decompress up to len uncompressed bytes from file into buf.  If
    the input file is not in gzip format, gzread copies the given number of
    bytes into the buffer directly from the file.
 
@@ -1417,14 +1422,14 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
    Z_STREAM_ERROR.
 */
 
-ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
-                                     gzFile file));
+ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems,
+                                 gzFile file);
 /*
-     Read up to nitems items of size size from file to buf, otherwise operating
-   as gzread() does.  This duplicates the interface of stdio's fread(), with
-   size_t request and return types.  If the library defines size_t, then
-   z_size_t is identical to size_t.  If not, then z_size_t is an unsigned
-   integer type that can contain a pointer.
+     Read and decompress up to nitems items of size size from file into buf,
+   otherwise operating as gzread() does.  This duplicates the interface of
+   stdio's fread(), with size_t request and return types.  If the library
+   defines size_t, then z_size_t is identical to size_t.  If not, then z_size_t
+   is an unsigned integer type that can contain a pointer.
 
      gzfread() returns the number of full items read of size size, or zero if
    the end of the file was reached and a full item could not be read, or if
@@ -1435,26 +1440,24 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
 
      In the event that the end of file is reached and only a partial item is
    available at the end, i.e. the remaining uncompressed data length is not a
-   multiple of size, then the final partial item is nevetheless read into buf
+   multiple of size, then the final partial item is nevertheless read into buf
    and the end-of-file flag is set.  The length of the partial item read is not
    provided, but could be inferred from the result of gztell().  This behavior
    is the same as the behavior of fread() implementations in common libraries,
    but it prevents the direct use of gzfread() to read a concurrently written
-   file, reseting and retrying on end-of-file, when size is not 1.
+   file, resetting and retrying on end-of-file, when size is not 1.
 */
 
-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
-                                voidpc buf, unsigned len));
+ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len);
 /*
-     Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of uncompressed bytes written or 0 in case of
-   error.
+     Compress and write the len uncompressed bytes at buf to file. gzwrite
+   returns the number of uncompressed bytes written or 0 in case of error.
 */
 
-ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
-                                      z_size_t nitems, gzFile file));
+ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size,
+                                  z_size_t nitems, gzFile file);
 /*
-     gzfwrite() writes nitems items of size size from buf to file, duplicating
+     Compress and write nitems items of size size from buf to file, duplicating
    the interface of stdio's fwrite(), with size_t request and return types.  If
    the library defines size_t, then z_size_t is identical to size_t.  If not,
    then z_size_t is an unsigned integer type that can contain a pointer.
@@ -1465,61 +1468,62 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
    is returned, and the error state is set to Z_STREAM_ERROR.
 */
 
-ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
+ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...);
 /*
-     Converts, formats, and writes the arguments to the compressed file under
-   control of the format string, as in fprintf.  gzprintf returns the number of
+     Convert, format, compress, and write the arguments (...) to file under
+   control of the string format, as in fprintf.  gzprintf returns the number of
    uncompressed bytes actually written, or a negative zlib error code in case
    of error.  The number of uncompressed bytes written is limited to 8191, or
    one less than the buffer size given to gzbuffer().  The caller should assure
    that this limit is not exceeded.  If it is exceeded, then gzprintf() will
    return an error (0) with nothing written.  In this case, there may also be a
    buffer overflow with unpredictable consequences, which is possible only if
-   zlib was compiled with the insecure functions sprintf() or vsprintf()
+   zlib was compiled with the insecure functions sprintf() or vsprintf(),
    because the secure snprintf() or vsnprintf() functions were not available.
    This can be determined using zlibCompileFlags().
 */
 
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
+ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s);
 /*
-     Writes the given null-terminated string to the compressed file, excluding
+     Compress and write the given null-terminated string s to file, excluding
    the terminating null character.
 
      gzputs returns the number of characters written, or -1 in case of error.
 */
 
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
+ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len);
 /*
-     Reads bytes from the compressed file until len-1 characters are read, or a
-   newline character is read and transferred to buf, or an end-of-file
-   condition is encountered.  If any characters are read or if len == 1, the
-   string is terminated with a null character.  If no characters are read due
-   to an end-of-file or len < 1, then the buffer is left untouched.
+     Read and decompress bytes from file into buf, until len-1 characters are
+   read, or until a newline character is read and transferred to buf, or an
+   end-of-file condition is encountered.  If any characters are read or if len
+   is one, the string is terminated with a null character.  If no characters
+   are read due to an end-of-file or len is less than one, then the buffer is
+   left untouched.
 
      gzgets returns buf which is a null-terminated string, or it returns NULL
    for end-of-file or in case of error.  If there was an error, the contents at
    buf are indeterminate.
 */
 
-ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
+ZEXTERN int ZEXPORT gzputc(gzFile file, int c);
 /*
-     Writes c, converted to an unsigned char, into the compressed file.  gzputc
+     Compress and write c, converted to an unsigned char, into file.  gzputc
    returns the value that was written, or -1 in case of error.
 */
 
-ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
+ZEXTERN int ZEXPORT gzgetc(gzFile file);
 /*
-     Reads one byte from the compressed file.  gzgetc returns this byte or -1
+     Read and decompress one byte from file.  gzgetc returns this byte or -1
    in case of end of file or error.  This is implemented as a macro for speed.
    As such, it does not do all of the checking the other functions do.  I.e.
    it does not check to see if file is NULL, nor whether the structure file
    points to has been clobbered or not.
 */
 
-ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
+ZEXTERN int ZEXPORT gzungetc(int c, gzFile file);
 /*
-     Push one character back onto the stream to be read as the first character
-   on the next read.  At least one character of push-back is allowed.
+     Push c back onto the stream for file to be read as the first character on
+   the next read.  At least one character of push-back is always allowed.
    gzungetc() returns the character pushed, or -1 on failure.  gzungetc() will
    fail if c is -1, and may fail if a character has been pushed but not read
    yet.  If gzungetc is used immediately after gzopen or gzdopen, at least the
@@ -1528,11 +1532,11 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
    gzseek() or gzrewind().
 */
 
-ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
+ZEXTERN int ZEXPORT gzflush(gzFile file, int flush);
 /*
-     Flushes all pending output into the compressed file.  The parameter flush
-   is as in the deflate() function.  The return value is the zlib error number
-   (see function gzerror below).  gzflush is only permitted when writing.
+     Flush all pending output to file.  The parameter flush is as in the
+   deflate() function.  The return value is the zlib error number (see function
+   gzerror below).  gzflush is only permitted when writing.
 
      If the flush parameter is Z_FINISH, the remaining data is written and the
    gzip stream is completed in the output.  If gzwrite() is called again, a new
@@ -1544,11 +1548,11 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
 */
 
 /*
-ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
-                                   z_off_t offset, int whence));
+ZEXTERN z_off_t ZEXPORT gzseek(gzFile file,
+                               z_off_t offset, int whence);
 
-     Sets the starting position for the next gzread or gzwrite on the given
-   compressed file.  The offset represents a number of bytes in the
+     Set the starting position to offset relative to whence for the next gzread
+   or gzwrite on file.  The offset represents a number of bytes in the
    uncompressed data stream.  The whence parameter is defined as in lseek(2);
    the value SEEK_END is not supported.
 
@@ -1563,52 +1567,52 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
    would be before the current position.
 */
 
-ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
+ZEXTERN int ZEXPORT    gzrewind(gzFile file);
 /*
-     Rewinds the given file. This function is supported only for reading.
+     Rewind file. This function is supported only for reading.
 
-     gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+     gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET).
 */
 
 /*
-ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
+ZEXTERN z_off_t ZEXPORT    gztell(gzFile file);
 
-     Returns the starting position for the next gzread or gzwrite on the given
-   compressed file.  This position represents a number of bytes in the
-   uncompressed data stream, and is zero when starting, even if appending or
-   reading a gzip stream from the middle of a file using gzdopen().
+     Return the starting position for the next gzread or gzwrite on file.
+   This position represents a number of bytes in the uncompressed data stream,
+   and is zero when starting, even if appending or reading a gzip stream from
+   the middle of a file using gzdopen().
 
      gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
 */
 
 /*
-ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
+ZEXTERN z_off_t ZEXPORT gzoffset(gzFile file);
 
-     Returns the current offset in the file being read or written.  This offset
-   includes the count of bytes that precede the gzip stream, for example when
-   appending or when using gzdopen() for reading.  When reading, the offset
-   does not include as yet unused buffered input.  This information can be used
-   for a progress indicator.  On error, gzoffset() returns -1.
+     Return the current compressed (actual) read or write offset of file.  This
+   offset includes the count of bytes that precede the gzip stream, for example
+   when appending or when using gzdopen() for reading.  When reading, the
+   offset does not include as yet unused buffered input.  This information can
+   be used for a progress indicator.  On error, gzoffset() returns -1.
 */
 
-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
+ZEXTERN int ZEXPORT gzeof(gzFile file);
 /*
-     Returns true (1) if the end-of-file indicator has been set while reading,
-   false (0) otherwise.  Note that the end-of-file indicator is set only if the
-   read tried to go past the end of the input, but came up short.  Therefore,
-   just like feof(), gzeof() may return false even if there is no more data to
-   read, in the event that the last read request was for the exact number of
-   bytes remaining in the input file.  This will happen if the input file size
-   is an exact multiple of the buffer size.
+     Return true (1) if the end-of-file indicator for file has been set while
+   reading, false (0) otherwise.  Note that the end-of-file indicator is set
+   only if the read tried to go past the end of the input, but came up short.
+   Therefore, just like feof(), gzeof() may return false even if there is no
+   more data to read, in the event that the last read request was for the exact
+   number of bytes remaining in the input file.  This will happen if the input
+   file size is an exact multiple of the buffer size.
 
      If gzeof() returns true, then the read functions will return no more data,
    unless the end-of-file indicator is reset by gzclearerr() and the input file
    has grown since the previous end of file was detected.
 */
 
-ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
+ZEXTERN int ZEXPORT gzdirect(gzFile file);
 /*
-     Returns true (1) if file is being copied directly while reading, or false
+     Return true (1) if file is being copied directly while reading, or false
    (0) if file is a gzip stream being decompressed.
 
      If the input file is empty, gzdirect() will return true, since the input
@@ -1627,10 +1631,10 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
    gzip file reading and decompression, which may not be desired.)
 */
 
-ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
+ZEXTERN int ZEXPORT    gzclose(gzFile file);
 /*
-     Flushes all pending output if necessary, closes the compressed file and
-   deallocates the (de)compression state.  Note that once file is closed, you
+     Flush all pending output for file, if necessary, close file and
+   deallocate the (de)compression state.  Note that once file is closed, you
    cannot call gzerror with file, since its structures have been deallocated.
    gzclose must not be called more than once on the same file, just as free
    must not be called more than once on the same allocation.
@@ -1640,8 +1644,8 @@ ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
    last read ended in the middle of a gzip stream, or Z_OK on success.
 */
 
-ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
-ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
+ZEXTERN int ZEXPORT gzclose_r(gzFile file);
+ZEXTERN int ZEXPORT gzclose_w(gzFile file);
 /*
      Same as gzclose(), but gzclose_r() is only for use when reading, and
    gzclose_w() is only for use when writing or appending.  The advantage to
@@ -1652,12 +1656,12 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
    zlib library.
 */
 
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum);
 /*
-     Returns the error message for the last error which occurred on the given
-   compressed file.  errnum is set to zlib error number.  If an error occurred
-   in the file system and not in the compression library, errnum is set to
-   Z_ERRNO and the application may consult errno to get the exact error code.
+     Return the error message for the last error which occurred on file.
+   errnum is set to zlib error number.  If an error occurred in the file system
+   and not in the compression library, errnum is set to Z_ERRNO and the
+   application may consult errno to get the exact error code.
 
      The application must not modify the returned string.  Future calls to
    this function may invalidate the previously returned string.  If file is
@@ -1668,9 +1672,9 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
    functions above that do not distinguish those cases in their return values.
 */
 
-ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
+ZEXTERN void ZEXPORT gzclearerr(gzFile file);
 /*
-     Clears the error and end-of-file flags for file.  This is analogous to the
+     Clear the error and end-of-file flags for file.  This is analogous to the
    clearerr() function in stdio.  This is useful for continuing to read a gzip
    file that is being written concurrently.
 */
@@ -1685,11 +1689,12 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
    library.
 */
 
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
+ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len);
 /*
      Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-   return the updated checksum.  If buf is Z_NULL, this function returns the
-   required initial value for the checksum.
+   return the updated checksum. An Adler-32 value is in the range of a 32-bit
+   unsigned integer. If buf is Z_NULL, this function returns the required
+   initial value for the checksum.
 
      An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
    much faster.
@@ -1704,15 +1709,15 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
      if (adler != original_adler) error();
 */
 
-ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf,
-                                    z_size_t len));
+ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf,
+                                z_size_t len);
 /*
      Same as adler32(), but with a size_t length.
 */
 
 /*
-ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
-                                          z_off_t len2));
+ZEXTERN uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2,
+                                      z_off_t len2);
 
      Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
    and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
@@ -1722,12 +1727,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
    negative, the result has no meaning or utility.
 */
 
-ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
+ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len);
 /*
      Update a running CRC-32 with the bytes buf[0..len-1] and return the
-   updated CRC-32.  If buf is Z_NULL, this function returns the required
-   initial value for the crc.  Pre- and post-conditioning (one's complement) is
-   performed within this function so it shouldn't be done by the application.
+   updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer.
+   If buf is Z_NULL, this function returns the required initial value for the
+   crc. Pre- and post-conditioning (one's complement) is performed within this
+   function so it shouldn't be done by the application.
 
    Usage example:
 
@@ -1739,20 +1745,34 @@ ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
      if (crc != original_crc) error();
 */
 
-ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
-                                  z_size_t len));
+ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf,
+                              z_size_t len);
 /*
      Same as crc32(), but with a size_t length.
 */
 
 /*
-ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
+ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2);
 
      Combine two CRC-32 check values into one.  For two sequences of bytes,
    seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
    calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
    check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
-   len2.
+   len2. len2 must be non-negative.
+*/
+
+/*
+ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2);
+
+     Return the operator corresponding to length len2, to be used with
+   crc32_combine_op(). len2 must be non-negative.
+*/
+
+ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op);
+/*
+     Give the same result as crc32_combine(), using op in place of len2. op is
+   is generated from len2 by crc32_combine_gen(). This will be faster than
+   crc32_combine() if the generated op is used more than once.
 */
 
 
@@ -1761,20 +1781,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
 /* deflateInit and inflateInit are macros to allow checking the zlib version
  * and the compiler's view of z_stream:
  */
-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
-                                      int windowBits, int memLevel,
-                                      int strategy, const char *version,
-                                      int stream_size));
-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
-                                      const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
-                                         unsigned char FAR *window,
-                                         const char *version,
-                                         int stream_size));
+ZEXTERN int ZEXPORT deflateInit_(z_streamp strm, int level,
+                                 const char *version, int stream_size);
+ZEXTERN int ZEXPORT inflateInit_(z_streamp strm,
+                                 const char *version, int stream_size);
+ZEXTERN int ZEXPORT deflateInit2_(z_streamp strm, int  level, int  method,
+                                  int windowBits, int memLevel,
+                                  int strategy, const char *version,
+                                  int stream_size);
+ZEXTERN int ZEXPORT inflateInit2_(z_streamp strm, int  windowBits,
+                                  const char *version, int stream_size);
+ZEXTERN int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits,
+                                     unsigned char FAR *window,
+                                     const char *version,
+                                     int stream_size);
 #ifdef Z_PREFIX_SET
 #  define z_deflateInit(strm, level) \
           deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
@@ -1819,7 +1839,7 @@ struct gzFile_s {
     unsigned char *next;
     z_off64_t pos;
 };
-ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
+ZEXTERN int ZEXPORT gzgetc_(gzFile file);       /* backward compatibility */
 #ifdef Z_PREFIX_SET
 #  undef z_gzgetc
 #  define z_gzgetc(g) \
@@ -1836,12 +1856,13 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
  * without large file support, _LFS64_LARGEFILE must also be true
  */
 #ifdef Z_LARGE64
-   ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-   ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
-   ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
-   ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
-   ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
-   ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
+   ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
+   ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int);
+   ZEXTERN z_off64_t ZEXPORT gztell64(gzFile);
+   ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile);
+   ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t);
+   ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t);
+   ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t);
 #endif
 
 #if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
@@ -1852,6 +1873,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
 #    define z_gzoffset z_gzoffset64
 #    define z_adler32_combine z_adler32_combine64
 #    define z_crc32_combine z_crc32_combine64
+#    define z_crc32_combine_gen z_crc32_combine_gen64
 #  else
 #    define gzopen gzopen64
 #    define gzseek gzseek64
@@ -1859,49 +1881,53 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
 #    define gzoffset gzoffset64
 #    define adler32_combine adler32_combine64
 #    define crc32_combine crc32_combine64
+#    define crc32_combine_gen crc32_combine_gen64
 #  endif
 #  ifndef Z_LARGE64
-     ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-     ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
-     ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
-     ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
-     ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
-     ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+     ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
+     ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int);
+     ZEXTERN z_off_t ZEXPORT gztell64(gzFile);
+     ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile);
+     ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t);
+     ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t);
+     ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t);
 #  endif
 #else
-   ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
-   ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));
-   ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));
-   ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
-   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
-   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+   ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *);
+   ZEXTERN z_off_t ZEXPORT gzseek(gzFile, z_off_t, int);
+   ZEXTERN z_off_t ZEXPORT gztell(gzFile);
+   ZEXTERN z_off_t ZEXPORT gzoffset(gzFile);
+   ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t);
+   ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t);
+   ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t);
 #endif
 
 #else /* Z_SOLO */
 
-   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
-   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+   ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t);
+   ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t);
+   ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t);
 
 #endif /* !Z_SOLO */
 
 /* undocumented functions */
-ZEXTERN const char   * ZEXPORT zError           OF((int));
-ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp));
-ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table    OF((void));
-ZEXTERN int            ZEXPORT inflateUndermine OF((z_streamp, int));
-ZEXTERN int            ZEXPORT inflateValidate OF((z_streamp, int));
-ZEXTERN unsigned long  ZEXPORT inflateCodesUsed OF ((z_streamp));
-ZEXTERN int            ZEXPORT inflateResetKeep OF((z_streamp));
-ZEXTERN int            ZEXPORT deflateResetKeep OF((z_streamp));
-#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO)
-ZEXTERN gzFile         ZEXPORT gzopen_w OF((const wchar_t *path,
-                                            const char *mode));
+ZEXTERN const char   * ZEXPORT zError(int);
+ZEXTERN int            ZEXPORT inflateSyncPoint(z_streamp);
+ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table(void);
+ZEXTERN int            ZEXPORT inflateUndermine(z_streamp, int);
+ZEXTERN int            ZEXPORT inflateValidate(z_streamp, int);
+ZEXTERN unsigned long  ZEXPORT inflateCodesUsed(z_streamp);
+ZEXTERN int            ZEXPORT inflateResetKeep(z_streamp);
+ZEXTERN int            ZEXPORT deflateResetKeep(z_streamp);
+#if defined(_WIN32) && !defined(Z_SOLO)
+ZEXTERN gzFile         ZEXPORT gzopen_w(const wchar_t *path,
+                                        const char *mode);
 #endif
 #if defined(STDC) || defined(Z_HAVE_STDARG_H)
 #  ifndef Z_SOLO
-ZEXTERN int            ZEXPORTVA gzvprintf Z_ARG((gzFile file,
-                                                  const char *format,
-                                                  va_list va));
+ZEXTERN int            ZEXPORTVA gzvprintf(gzFile file,
+                                           const char *format,
+                                           va_list va);
 #  endif
 #endif
 
diff --git a/libs/zlib/zlib.map b/libs/zlib/zlib.map
index 82ce98cf7d..31544f2e93 100644
--- a/libs/zlib/zlib.map
+++ b/libs/zlib/zlib.map
@@ -92,3 +92,9 @@ ZLIB_1.2.9 {
     adler32_z;
     crc32_z;
 } ZLIB_1.2.7.1;
+
+ZLIB_1.2.12 {
+	crc32_combine_gen;
+	crc32_combine_gen64;
+	crc32_combine_op;
+} ZLIB_1.2.9;
diff --git a/libs/zlib/zlib2ansi b/libs/zlib/zlib2ansi
deleted file mode 100755
index 15e3e165f3..0000000000
--- a/libs/zlib/zlib2ansi
+++ /dev/null
@@ -1,152 +0,0 @@
-#!/usr/bin/perl
-
-# Transform K&R C function definitions into ANSI equivalent.
-#
-# Author: Paul Marquess
-# Version: 1.0
-# Date: 3 October 2006
-
-# TODO
-#
-# Asumes no function pointer parameters. unless they are typedefed.
-# Assumes no literal strings that look like function definitions
-# Assumes functions start at the beginning of a line
-
-use strict;
-use warnings;
-
-local $/;
-$_ = <>;
-
-my $sp = qr{ \s* (?: /\* .*? \*/ )? \s* }x; # assume no nested comments
-
-my $d1    = qr{ $sp (?: [\w\*\s]+ $sp)* $sp \w+ $sp [\[\]\s]* $sp }x ;
-my $decl  = qr{ $sp (?: \w+ $sp )+ $d1 }xo ;
-my $dList = qr{ $sp $decl (?: $sp , $d1 )* $sp ; $sp }xo ;
-
-
-while (s/^
-            (                  # Start $1
-                (              #   Start $2
-                    .*?        #     Minimal eat content
-                    ( ^ \w [\w\s\*]+ )    #     $3 -- function name
-                    \s*        #     optional whitespace
-                )              # $2 - Matched up to before parameter list
-
-                \( \s*         # Literal "(" + optional whitespace
-                ( [^\)]+ )     # $4 - one or more anythings except ")"
-                \s* \)         # optional whitespace surrounding a Literal ")"
-
-                ( (?: $dList )+ ) # $5
-
-                $sp ^ {        # literal "{" at start of line
-            )                  # Remember to $1
-        //xsom
-      )
-{
-    my $all = $1 ;
-    my $prefix = $2;
-    my $param_list = $4 ;
-    my $params = $5;
-
-    StripComments($params);
-    StripComments($param_list);
-    $param_list =~ s/^\s+//;
-    $param_list =~ s/\s+$//;
-
-    my $i = 0 ;
-    my %pList = map { $_ => $i++ }
-                split /\s*,\s*/, $param_list;
-    my $pMatch = '(\b' . join('|', keys %pList) . '\b)\W*$' ;
-
-    my @params = split /\s*;\s*/, $params;
-    my @outParams = ();
-    foreach my $p (@params)
-    {
-        if ($p =~ /,/)
-        {
-            my @bits = split /\s*,\s*/, $p;
-            my $first = shift @bits;
-            $first =~ s/^\s*//;
-            push @outParams, $first;
-            $first =~ /^(\w+\s*)/;
-            my $type = $1 ;
-            push @outParams, map { $type . $_ } @bits;
-        }
-        else
-        {
-            $p =~ s/^\s+//;
-            push @outParams, $p;
-        }
-    }
-
-
-    my %tmp = map { /$pMatch/;  $_ => $pList{$1}  }
-              @outParams ;
-
-    @outParams = map  { "    $_" }
-                 sort { $tmp{$a} <=> $tmp{$b} }
-                 @outParams ;
-
-    print $prefix ;
-    print "(\n" . join(",\n", @outParams) . ")\n";
-    print "{" ;
-
-}
-
-# Output any trailing code.
-print ;
-exit 0;
-
-
-sub StripComments
-{
-
-  no warnings;
-
-  # Strip C & C++ coments
-  # From the perlfaq
-  $_[0] =~
-
-    s{
-       /\*         ##  Start of /* ... */ comment
-       [^*]*\*+    ##  Non-* followed by 1-or-more *'s
-       (
-         [^/*][^*]*\*+
-       )*          ##  0-or-more things which don't start with /
-                   ##    but do end with '*'
-       /           ##  End of /* ... */ comment
-
-     |         ##     OR  C++ Comment
-       //          ## Start of C++ comment //
-       [^\n]*      ## followed by 0-or-more non end of line characters
-
-     |         ##     OR  various things which aren't comments:
-
-       (
-         "           ##  Start of " ... " string
-         (
-           \\.           ##  Escaped char
-         |               ##    OR
-           [^"\\]        ##  Non "\
-         )*
-         "           ##  End of " ... " string
-
-       |         ##     OR
-
-         '           ##  Start of ' ... ' string
-         (
-           \\.           ##  Escaped char
-         |               ##    OR
-           [^'\\]        ##  Non '\
-         )*
-         '           ##  End of ' ... ' string
-
-       |         ##     OR
-
-         .           ##  Anything other char
-         [^/"'\\]*   ##  Chars which doesn't start a comment, string or escape
-       )
-     }{$2}gxs;
-
-}
diff --git a/libs/zlib/zutil.c b/libs/zlib/zutil.c
index a76c6b0c7e..b1c5d2d3c6 100644
--- a/libs/zlib/zutil.c
+++ b/libs/zlib/zutil.c
@@ -24,13 +24,11 @@ z_const char * const z_errmsg[10] = {
 };
 
 
-const char * ZEXPORT zlibVersion()
-{
+const char * ZEXPORT zlibVersion(void) {
     return ZLIB_VERSION;
 }
 
-uLong ZEXPORT zlibCompileFlags()
-{
+uLong ZEXPORT zlibCompileFlags(void) {
     uLong flags;
 
     flags = 0;
@@ -61,9 +59,11 @@ uLong ZEXPORT zlibCompileFlags()
 #ifdef ZLIB_DEBUG
     flags += 1 << 8;
 #endif
+    /*
 #if defined(ASMV) || defined(ASMINF)
     flags += 1 << 9;
 #endif
+     */
 #ifdef ZLIB_WINAPI
     flags += 1 << 10;
 #endif
@@ -119,9 +119,7 @@ uLong ZEXPORT zlibCompileFlags()
 #  endif
 int ZLIB_INTERNAL z_verbose = verbose;
 
-void ZLIB_INTERNAL z_error (m)
-    char *m;
-{
+void ZLIB_INTERNAL z_error(char *m) {
     fprintf(stderr, "%s\n", m);
     exit(1);
 }
@@ -130,14 +128,12 @@ void ZLIB_INTERNAL z_error (m)
 /* exported to allow conversion of error code to string for compress() and
  * uncompress()
  */
-const char * ZEXPORT zError(err)
-    int err;
-{
+const char * ZEXPORT zError(int err) {
     return ERR_MSG(err);
 }
 
-#if defined(_WIN32_WCE)
-    /* The Microsoft C Run-Time Library for Windows CE doesn't have
+#if defined(_WIN32_WCE) && _WIN32_WCE < 0x800
+    /* The older Microsoft C Run-Time Library for Windows CE doesn't have
      * errno.  We define it as a global variable to simplify porting.
      * Its value is always 0 and should not be used.
      */
@@ -146,22 +142,14 @@ const char * ZEXPORT zError(err)
 
 #ifndef HAVE_MEMCPY
 
-void ZLIB_INTERNAL zmemcpy(dest, source, len)
-    Bytef* dest;
-    const Bytef* source;
-    uInt  len;
-{
+void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) {
     if (len == 0) return;
     do {
         *dest++ = *source++; /* ??? to be unrolled */
     } while (--len != 0);
 }
 
-int ZLIB_INTERNAL zmemcmp(s1, s2, len)
-    const Bytef* s1;
-    const Bytef* s2;
-    uInt  len;
-{
+int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) {
     uInt j;
 
     for (j = 0; j < len; j++) {
@@ -170,10 +158,7 @@ int ZLIB_INTERNAL zmemcmp(s1, s2, len)
     return 0;
 }
 
-void ZLIB_INTERNAL zmemzero(dest, len)
-    Bytef* dest;
-    uInt  len;
-{
+void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) {
     if (len == 0) return;
     do {
         *dest++ = 0;  /* ??? to be unrolled */
@@ -214,8 +199,7 @@ local ptr_table table[MAX_PTR];
  * a protected system like OS/2. Use Microsoft C instead.
  */
 
-voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
-{
+voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) {
     voidpf buf;
     ulg bsize = (ulg)items*size;
 
@@ -240,8 +224,7 @@ voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
     return buf;
 }
 
-void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
-{
+void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) {
     int n;
 
     (void)opaque;
@@ -277,14 +260,12 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
 #  define _hfree   hfree
 #endif
 
-voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size)
-{
+voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, uInt items, uInt size) {
     (void)opaque;
     return _halloc((long)items, size);
 }
 
-void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
-{
+void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) {
     (void)opaque;
     _hfree(ptr);
 }
@@ -297,25 +278,18 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
 #ifndef MY_ZCALLOC /* Any system without a special alloc function */
 
 #ifndef STDC
-extern voidp  malloc OF((uInt size));
-extern voidp  calloc OF((uInt items, uInt size));
-extern void   free   OF((voidpf ptr));
+extern voidp malloc(uInt size);
+extern voidp calloc(uInt items, uInt size);
+extern void free(voidpf ptr);
 #endif
 
-voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
-    voidpf opaque;
-    unsigned items;
-    unsigned size;
-{
+voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) {
     (void)opaque;
     return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
                               (voidpf)calloc(items, size);
 }
 
-void ZLIB_INTERNAL zcfree (opaque, ptr)
-    voidpf opaque;
-    voidpf ptr;
-{
+void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) {
     (void)opaque;
     free(ptr);
 }
diff --git a/libs/zlib/zutil.h b/libs/zlib/zutil.h
index b079ea6a80..48dd7febae 100644
--- a/libs/zlib/zutil.h
+++ b/libs/zlib/zutil.h
@@ -1,5 +1,5 @@
 /* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -29,10 +29,6 @@
 #  include <stdlib.h>
 #endif
 
-#ifdef Z_SOLO
-   typedef long ptrdiff_t;  /* guess -- will be caught if guess is wrong */
-#endif
-
 #ifndef local
 #  define local static
 #endif
@@ -46,10 +42,21 @@ typedef unsigned short ush;
 typedef ush FAR ushf;
 typedef unsigned long  ulg;
 
+#if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC)
+#  include <limits.h>
+#  if (ULONG_MAX == 0xffffffffffffffff)
+#    define Z_U8 unsigned long
+#  elif (ULLONG_MAX == 0xffffffffffffffff)
+#    define Z_U8 unsigned long long
+#  elif (UINT_MAX == 0xffffffffffffffff)
+#    define Z_U8 unsigned
+#  endif
+#endif
+
 extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 /* (size given to avoid silly warnings with Visual C++) */
 
-#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
+#define ERR_MSG(err) z_errmsg[(err) < -6 || (err) > 2 ? 9 : 2 - (err)]
 
 #define ERR_RETURN(strm,err) \
   return (strm->msg = ERR_MSG(err), (err))
@@ -130,17 +137,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #  endif
 #endif
 
-#if defined(MACOS) || defined(TARGET_OS_MAC)
+#if defined(MACOS)
 #  define OS_CODE  7
-#  ifndef Z_SOLO
-#    if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
-#      include <unix.h> /* for fdopen */
-#    else
-#      ifndef fdopen
-#        define fdopen(fd,mode) NULL /* No fdopen() */
-#      endif
-#    endif
-#  endif
 #endif
 
 #ifdef __acorn
@@ -163,22 +161,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #  define OS_CODE 19
 #endif
 
-#if defined(_BEOS_) || defined(RISCOS)
-#  define fdopen(fd,mode) NULL /* No fdopen() */
-#endif
-
-#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
-#  if defined(_WIN32_WCE)
-#    define fdopen(fd,mode) NULL /* No fdopen() */
-#    ifndef _PTRDIFF_T_DEFINED
-       typedef int ptrdiff_t;
-#      define _PTRDIFF_T_DEFINED
-#    endif
-#  else
-#    define fdopen(fd,type)  _fdopen(fd,type)
-#  endif
-#endif
-
 #if defined(__BORLANDC__) && !defined(MSDOS)
   #pragma warn -8004
   #pragma warn -8008
@@ -188,8 +170,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 /* provide prototypes for these when building zlib without LFS */
 #if !defined(_WIN32) && \
     (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
-    ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
-    ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+    ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t);
+    ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t);
+    ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t);
 #endif
 
         /* common defaults */
@@ -228,16 +211,16 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #    define zmemzero(dest, len) memset(dest, 0, len)
 #  endif
 #else
-   void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
-   int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
-   void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
+   void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len);
+   int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len);
+   void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len);
 #endif
 
 /* Diagnostic functions */
 #ifdef ZLIB_DEBUG
 #  include <stdio.h>
    extern int ZLIB_INTERNAL z_verbose;
-   extern void ZLIB_INTERNAL z_error OF((char *m));
+   extern void ZLIB_INTERNAL z_error(char *m);
 #  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
 #  define Trace(x) {if (z_verbose>=0) fprintf x ;}
 #  define Tracev(x) {if (z_verbose>0) fprintf x ;}
@@ -254,9 +237,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #endif
 
 #ifndef Z_SOLO
-   voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
-                                    unsigned size));
-   void ZLIB_INTERNAL zcfree  OF((voidpf opaque, voidpf ptr));
+   voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items,
+                                unsigned size);
+   void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr);
 #endif
 
 #define ZALLOC(strm, items, size) \
diff --git a/thirdparty/cpm-zlib.cmake b/thirdparty/cpm-zlib.cmake
index 5368366fd1..95e379193f 100644
--- a/thirdparty/cpm-zlib.cmake
+++ b/thirdparty/cpm-zlib.cmake
@@ -1,53 +1,18 @@
 CPMAddPackage(
-	NAME ZLIB
-	VERSION 1.2.13
-	URL "https://github.com/madler/zlib/archive/refs/tags/v1.2.13.zip"
+	NAME zlib
+	VERSION 1.3.1
+	GITHUB_REPOSITORY madler/zlib
+	GIT_TAG v1.3.1
 	EXCLUDE_FROM_ALL
-	DOWNLOAD_ONLY YES
+	OPTIONS
+		"ZLIB_BUILD_EXAMPLES OFF"
 )
 
-if(ZLIB_ADDED)
-	set(ZLIB_SRCS
-		crc32.h
-		deflate.h
-		gzguts.h
-		inffast.h
-		inffixed.h
-		inflate.h
-		inftrees.h
-		trees.h
-		zutil.h
-		adler32.c
-		compress.c
-		crc32.c
-		deflate.c
-		gzclose.c
-		gzlib.c
-		gzread.c
-		gzwrite.c
-		inflate.c
-		infback.c
-		inftrees.c
-		inffast.c
-		trees.c
-		uncompr.c
-		zutil.c
-	)
-	list(TRANSFORM ZLIB_SRCS PREPEND "${ZLIB_SOURCE_DIR}/")
-
-	configure_file("${ZLIB_SOURCE_DIR}/zlib.pc.cmakein" "${ZLIB_BINARY_DIR}/zlib.pc" @ONLY)
-	configure_file("${ZLIB_SOURCE_DIR}/zconf.h.cmakein" "${ZLIB_BINARY_DIR}/include/zconf.h" @ONLY)
-	configure_file("${ZLIB_SOURCE_DIR}/zlib.h" "${ZLIB_BINARY_DIR}/include/zlib.h" @ONLY)
-
-	add_library(ZLIB ${SRB2_INTERNAL_LIBRARY_TYPE} ${ZLIB_SRCS})
-	set_target_properties(ZLIB PROPERTIES
-		VERSION 1.2.13
-		OUTPUT_NAME "z"
-	)
-	target_include_directories(ZLIB PRIVATE "${ZLIB_SOURCE_DIR}")
-	target_include_directories(ZLIB PUBLIC "${ZLIB_BINARY_DIR}/include")
-	if(MSVC)
-		target_compile_definitions(ZLIB PRIVATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
+if(zlib_ADDED)
+	if(SRB2_CONFIG_SHARED_INTERNAL_LIBRARIES)
+		add_library(ZLIB::ZLIB ALIAS zlib)
+	endif()
+	if(NOT_SRB2_CONFIG_SHARED_INTERNAL_LIBRARIES)
+		add_library(ZLIB::ZLIB ALIAS zlibstatic)
 	endif()
-	add_library(ZLIB::ZLIB ALIAS ZLIB)
 endif()
-- 
GitLab