From 7fd699955bd443f7e49e71add10f1f0858698588 Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 23 Jan 2017 21:04:04 +0100 Subject: [PATCH 01/17] Syntax correction in French strings --- rtdata/languages/Francais | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index e45cee225..a777a07ad 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -36,7 +36,7 @@ CURVEEDITOR_TYPE;Type: DIRBROWSER_FOLDERS;Répertoires EDITWINDOW_TITLE;Édition d'image EDIT_OBJECT_TOOLTIP;Affiche des éléments dans la fenêtre de prévisualisation qui vous permettront d'ajuster cet outil. -EDIT_PIPETTE_TOOLTIP;Pour ajouter un point d'ajustement de la courbe, maintenez la touche Ctrl préssée et cliquez dans l'image avec le bouton gauche.\nPour ajuster le point, pressez la touche Ctrl lors du clic-gauche sur la zone correspondande dans l'apperçu, puis relachez Ctrl (sauf si vous désirez un control plus fin) et tout en gardant le bouton gauche appuyé, déplacez le curseur vers le haut ou le bas pour ajuster la position du point. +EDIT_PIPETTE_TOOLTIP;Pour ajouter un point d'ajustement de la courbe, maintenez la touche Ctrl pressée et cliquez dans l'image avec le bouton gauche.\nPour ajuster le point, pressez la touche Ctrl lors du clic-gauche sur la zone correspondante dans l'aperçu, puis relachez Ctrl (sauf si vous désirez un contrôle plus fin) et tout en gardant le bouton gauche appuyé, déplacez le curseur vers le haut ou le bas pour ajuster la position du point. EXIFFILTER_APERTURE;Ouverture EXIFFILTER_CAMERA;Appareil photo EXIFFILTER_EXPOSURECOMPENSATION;Compensation d'exposition (EV) @@ -79,7 +79,7 @@ EXPORT_BYPASS_SHARPENING;Ignorer la netteté EXPORT_BYPASS_SHARPENMICRO;Ignorer netteté des microcontrastes EXPORT_BYPASS_SH_HQ;Ignorer Ombres/Hautes lumières (HQ) EXPORT_FASTEXPORTOPTIONS;Options d'Export Rapide -EXPORT_INSTRUCTIONS;Les options d'Export Rapide permettent de forcer des paramètres afin d'éviter d'utiliser des outils très consommateur de temps et de ressources, et d'utiliser ces options dans la file de traitement. Cette méthode est recommandée pour la génération rapide d'images de basse résolution quand la vitesse est une priorité ou lorsqu'on désir une version redimensionnée d'une ou plusieurs images de sortie sans avoir à modifier leurs paramètres de développement. +EXPORT_INSTRUCTIONS;Les options d'Export Rapide permettent de forcer des paramètres afin d'éviter d'utiliser des outils très consommateurs de temps et de ressources, et d'utiliser ces options dans la file de traitement. Cette méthode est recommandée pour la génération rapide d'images de basse résolution quand la vitesse est une priorité ou lorsqu'on désire une version redimensionnée d'une ou plusieurs images de sortie sans avoir à modifier leurs paramètres de développement. EXPORT_MAXHEIGHT;Hauteur maximum: EXPORT_MAXWIDTH;Largeur maximum: EXPORT_PUTTOQUEUEFAST;Mettre dans la file de traitement\npour Export Rapide From e5c00f0a9d18ea9741f1ba4963178fc4adce9bc2 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 25 Jan 2017 00:18:52 +0100 Subject: [PATCH 02/17] Complete revision to how RawTherapee's version is handled in CMake and in other files, #3628 --- AboutThisBuild.cmake | 67 +++++++++++++---- AboutThisBuild.txt.in | 6 +- CMakeLists.txt | 1 - rtdata/CMakeLists.txt | 54 +++++--------- rtengine/imageio.cc | 2 +- rtengine/procparams.cc | 2 +- rtexif/rtexif.cc | 4 +- rtgui/cacheimagedata.cc | 2 +- rtgui/main.cc | 6 +- rtgui/options.cc | 5 +- rtgui/options.h | 1 - rtgui/rtwindow.cc | 66 +++-------------- rtgui/splash.cc | 5 -- rtgui/version.h.in | 4 +- tools/buildRT | 6 +- tools/compareRT | 4 +- tools/generateReleaseInfo | 82 ++++++++++++++++++--- tools/generateSourceTarball | 33 +++++---- tools/win/InnoSetup/WindowsInnoSetup.iss.in | 57 +++++++------- win.cmake | 3 - 20 files changed, 217 insertions(+), 193 deletions(-) diff --git a/AboutThisBuild.cmake b/AboutThisBuild.cmake index 2163ed0cb..bfb3d6eb5 100644 --- a/AboutThisBuild.cmake +++ b/AboutThisBuild.cmake @@ -22,31 +22,68 @@ if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) message(STATUS "git command found: ${GIT_CMD}") endif () + # Get version description. + # Depending on whether you checked out a branch (dev) or a tag (release), + # "git describe" will return "5.0-gtk2-2-g12345678" or "5.0-gtk2", respectively. + execute_process(COMMAND ${GIT_CMD} describe --tags --always OUTPUT_VARIABLE GIT_DESCRIBE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") + + # Get branch name. + # Will return empty if you checked out a commit or tag. Empty string handled later. execute_process(COMMAND ${GIT_CMD} symbolic-ref --short -q HEAD OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") - execute_process(COMMAND ${GIT_CMD} describe --tags --always OUTPUT_VARIABLE GIT_VERSION_WHOLE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") - string(REGEX REPLACE "-g.*" "" GIT_VERSION ${GIT_VERSION_WHOLE}) - string(REPLACE "-" "." GIT_VERSION ${GIT_VERSION}) - execute_process(COMMAND ${GIT_CMD} rev-parse --verify HEAD OUTPUT_VARIABLE GIT_CHANGESET OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") - string(REGEX REPLACE ".*-(.*)-g.*" "\\1" GIT_TAGDISTANCE ${GIT_VERSION_WHOLE}) + + # Get commit hash. + execute_process(COMMAND ${GIT_CMD} rev-parse --short --verify HEAD OUTPUT_VARIABLE GIT_COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") + + # Get commit date, YYYY-MM-DD. + execute_process(COMMAND ${GIT_CMD} show -s --format=%cd --date=format:%Y-%m-%d OUTPUT_VARIABLE GIT_COMMIT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") + + # Get number of commits since tagging. This is what "GIT_DESCRIBE" uses. + # Works when checking out branch, tag or commit. + # Get a list of all tags in repo: + execute_process(COMMAND ${GIT_CMD} tag --merged HEAD OUTPUT_VARIABLE GIT_TAG WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") + # Replace newlines with semicolons so that it can be split: + string(REPLACE "\n" ";" GIT_TAG_LIST "${GIT_TAG}") + execute_process(COMMAND ${GIT_CMD} rev-list --count HEAD --not ${GIT_TAG_LIST} OUTPUT_VARIABLE GIT_COMMITS_SINCE_TAG OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") + + # Get number of commits since branching. + # Works when checking out branch, tag or commit. + execute_process(COMMAND ${GIT_CMD} rev-list --count HEAD --not --tags OUTPUT_VARIABLE GIT_COMMITS_SINCE_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") + + # If user checked-out something which is not a branch, use the description as branch name. + if (GIT_BRANCH STREQUAL "") + set (GIT_BRANCH "${GIT_DESCRIBE}") + endif() + + # Create numeric version. + # This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion. + # Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS). + if (GIT_COMMITS_SINCE_TAG STREQUAL "") + set (GIT_NUMERIC_VERSION_BS "0.0.0") + else () + string(REGEX REPLACE "-.*" "" GIT_NUMERIC_VERSION_BS ${GIT_DESCRIBE}) + set(GIT_NUMERIC_VERSION_BS "${GIT_NUMERIC_VERSION_BS}.${GIT_COMMITS_SINCE_TAG}") + endif () + + message(STATUS "Git checkout information:") + message(STATUS " Commit description: ${GIT_DESCRIBE}") + message(STATUS " Branch: ${GIT_BRANCH}") + message(STATUS " Commit: ${GIT_COMMIT}") + message(STATUS " Commit date: ${GIT_COMMIT_DATE}") + message(STATUS " Commits since tag: ${GIT_COMMITS_SINCE_TAG}") + message(STATUS " Commits since branch: ${GIT_COMMITS_SINCE_BRANCH}") + message(STATUS " Version (unreliable): ${GIT_NUMERIC_VERSION_BS}") + if (NOT DEFINED CACHE_NAME_SUFFIX) - string(REGEX REPLACE "-.*" "" CACHE_NAME_SUFFIX ${GIT_VERSION_WHOLE}) + set(CACHE_NAME_SUFFIX "${GIT_DESCRIBE}") message(STATUS "CACHE_NAME_SUFFIX was not defined, it is now \"${CACHE_NAME_SUFFIX}\"") - elseif (CACHE_NAME_SUFFIX STREQUAL "latesttag") - string(REGEX REPLACE "-.*" "" CACHE_NAME_SUFFIX ${GIT_VERSION_WHOLE}) - message(STATUS "CACHE_NAME_SUFFIX was \"latesttag\", it is now \"${CACHE_NAME_SUFFIX}\"") else () message(STATUS "CACHE_NAME_SUFFIX is \"${CACHE_NAME_SUFFIX}\"") endif () + else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake") endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) -if (VERSION_SUFFIX STREQUAL "") - set (GIT_VERSION_SUFFIX "${GIT_VERSION}") -else () - set (GIT_VERSION_SUFFIX "${GIT_VERSION} ${VERSION_SUFFIX}") -endif () - # build version.h from template configure_file ("${PROJECT_SOURCE_DIR}/rtgui/version.h.in" "${CMAKE_BINARY_DIR}/rtgui/version.h") # build AboutThisBuild.txt from template diff --git a/AboutThisBuild.txt.in b/AboutThisBuild.txt.in index b8ae4be1a..ea3269c09 100644 --- a/AboutThisBuild.txt.in +++ b/AboutThisBuild.txt.in @@ -1,6 +1,7 @@ +Version: ${GIT_DESCRIBE} Branch: ${GIT_BRANCH} -Version: ${GIT_VERSION_SUFFIX} -Changeset: ${GIT_CHANGESET} +Commit: ${GIT_COMMIT} +Commit date: ${GIT_COMMIT_DATE} Compiler: ${COMPILER_INFO} Processor: ${PROC_LABEL} System: ${SYSTEM} @@ -11,4 +12,3 @@ Build flags: ${CXX_FLAGS} Link flags: ${LFLAGS} OpenMP support: ${OPTION_OMP} MMAP support: ${WITH_MYFILE_MMAP} - diff --git a/CMakeLists.txt b/CMakeLists.txt index 0173856b1..1ffce3a7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -359,7 +359,6 @@ set(ABOUT_COMMAND_WITH_ARGS ${CMAKE_COMMAND} -DPROC_LABEL:STRING="${PROC_LABEL}" -DPROC_BIT_DEPTH:STRING="${PROC_BIT_DEPTH}" -DBUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DVERSION_SUFFIX:STRING=${VERSION_SUFFIX} -DGTKMM_VERSION:STRING=${GTKMM_VERSION} -DOPTION_OMP:STRING=${OPTION_OMP} -DWITH_MYFILE_MMAP:STRING=${WITH_MYFILE_MMAP}) diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt index ad8fe3421..939584061 100644 --- a/rtdata/CMakeLists.txt +++ b/rtdata/CMakeLists.txt @@ -19,43 +19,23 @@ else (WIN32) endif (WIN32) if (WIN32) - if (CMAKE_SIZEOF_VOID_P EQUAL 4) - set(BUILD_BIT_DEPTH 32) - # 32 bits builds has to be installable on 64 bits system, to support WinXP/64. - set(ARCHITECTURE_ALLOWED "x86 x64 ia64") - # installing in 32 bits mode even on 64 bits OS and architecture - set(INSTALL_MODE "") - # set part of the output archive name - set(SYSTEM_NAME "WinXP") - elseif (CMAKE_SIZEOF_VOID_P EQUAL 8) - set(BUILD_BIT_DEPTH 64) - # Restricting the 64 bits builds to 64 bits systems only - set(ARCHITECTURE_ALLOWED "x64 ia64") - # installing in 64 bits mode for all 64 bits processors, even for itanium architecture - set(INSTALL_MODE "x64 ia64") - # set part of the output archive name - set(SYSTEM_NAME "WinVista") - endif (CMAKE_SIZEOF_VOID_P EQUAL 4) - - # If we find ReleaseInfo.cmake we use the info from there and don't need Git to be installed - find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH) - if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) - # we look for the git command in this paths by order of preference - find_file(GIT_CMD git.exe HINTS ENV Path PATH_SUFFIXES ../) - - # Fail if Git is not installed - if (GIT_CMD STREQUAL GIT_CMD-NOTFOUND) - message(FATAL_ERROR "git command not found!") - else () - message(STATUS "git command found: ${GIT_CMD}") - endif () - - execute_process(COMMAND ${GIT_CMD} describe --tags --always OUTPUT_VARIABLE GIT_VERSION_WHOLE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") - string(REGEX REPLACE "-.*" "" GIT_VERSION ${GIT_VERSION_WHOLE}) - string(REGEX REPLACE ".*-(.*)-g.*" "\\1" GIT_TAGDISTANCE ${GIT_VERSION_WHOLE}) - else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) - include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake") - endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) + if (CMAKE_SIZEOF_VOID_P EQUAL 4) + set(BUILD_BIT_DEPTH 32) + # 32 bits builds has to be installable on 64 bits system, to support WinXP/64. + set(ARCHITECTURE_ALLOWED "x86 x64 ia64") + # installing in 32 bits mode even on 64 bits OS and architecture + set(INSTALL_MODE "") + # set part of the output archive name + set(SYSTEM_NAME "WinXP") + elseif (CMAKE_SIZEOF_VOID_P EQUAL 8) + set(BUILD_BIT_DEPTH 64) + # Restricting the 64 bits builds to 64 bits systems only + set(ARCHITECTURE_ALLOWED "x64 ia64") + # installing in 64 bits mode for all 64 bits processors, even for itanium architecture + set(INSTALL_MODE "x64 ia64") + # set part of the output archive name + set(SYSTEM_NAME "WinVista") + endif (CMAKE_SIZEOF_VOID_P EQUAL 4) configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/../tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss") install (FILES "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss" DESTINATION ${BINDIR}) diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index 1f170de9a..05684aaa7 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -1351,7 +1351,7 @@ int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed) } - TIFFSetField (out, TIFFTAG_SOFTWARE, "RawTherapee " VERSION); + TIFFSetField (out, TIFFTAG_SOFTWARE, "RawTherapee " RTVERSION); TIFFSetField (out, TIFFTAG_IMAGEWIDTH, width); TIFFSetField (out, TIFFTAG_IMAGELENGTH, height); TIFFSetField (out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT); diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index e96d8ee2f..788c422d6 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -26,7 +26,7 @@ #include "../rtgui/paramsedited.h" #include "../rtgui/options.h" #include -#define APPVERSION VERSION +#define APPVERSION RTVERSION using namespace std; extern Options options; diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index 64ddd0ee3..58b60ee3f 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -278,7 +278,7 @@ bool TagDirectory::CPBDump (const Glib::ustring &commFName, const Glib::ustring try { kf->set_string ("RT General", "CachePath", options.cacheBaseDir); - kf->set_string ("RT General", "AppVersion", VERSION); + kf->set_string ("RT General", "AppVersion", RTVERSION); kf->set_integer("RT General", "ProcParamsVersion", PPVERSION); kf->set_string ("RT General", "ImageFileName", imageFName); kf->set_string ("RT General", "OutputProfileFileName", profileFName); @@ -2797,7 +2797,7 @@ std::vector ExifManager::getDefaultTIFFTags (TagDirectory* forthis) defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "XResolution"), 300, RATIONAL)); defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "YResolution"), 300, RATIONAL)); defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "ResolutionUnit"), 2, SHORT)); - defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "Software"), "RawTherapee " VERSION)); + defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "Software"), "RawTherapee " RTVERSION)); defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "Orientation"), 1, SHORT)); defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "SamplesPerPixel"), 3, SHORT)); defTags.push_back (new Tag (forthis, lookupAttrib(ifdAttribs, "BitsPerSample"), 8, SHORT)); diff --git a/rtgui/cacheimagedata.cc b/rtgui/cacheimagedata.cc index 220dcb2e8..34983d46a 100644 --- a/rtgui/cacheimagedata.cc +++ b/rtgui/cacheimagedata.cc @@ -203,7 +203,7 @@ int CacheImageData::save (const Glib::ustring& fname) } catch (Glib::Error&) {} keyFile.set_string ("General", "MD5", md5); - keyFile.set_string ("General", "Version", VERSION); // Application's version + keyFile.set_string ("General", "Version", RTVERSION); keyFile.set_boolean ("General", "Supported", supported); keyFile.set_integer ("General", "Format", format); keyFile.set_boolean ("General", "RecentlySaved", recentlySaved); diff --git a/rtgui/main.cc b/rtgui/main.cc index a3b4a60f2..a8ded72e5 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -214,7 +214,7 @@ int main(int argc, char **argv) SetConsoleCtrlHandler( NULL, true ); // Set title of console char consoletitle[128]; - sprintf(consoletitle, "RawTherapee %s Console", VERSION); + sprintf(consoletitle, "RawTherapee %s Console", RTVERSION); SetConsoleTitle(consoletitle); // increase size of screen buffer COORD c; @@ -240,7 +240,7 @@ int main(int argc, char **argv) consoleOpened = true; // printing RT's version in every case, particularly useful for the 'verbose' mode, but also for the batch processing - std::cout << "RawTherapee, version " << VERSION << std::endl; + std::cout << "RawTherapee, version " << RTVERSION << std::endl; std::cout << "WARNING: closing this window will close RawTherapee!" << std::endl << std::endl; } } @@ -263,7 +263,7 @@ int main(int argc, char **argv) if (argc > 1 || options.rtSettings.verbose) { // printing RT's version in all case, particularly useful for the 'verbose' mode, but also for the batch processing - std::cout << "RawTherapee, version " << VERSION << std::endl; + std::cout << "RawTherapee, version " << RTVERSION << std::endl; #ifdef WIN32 std::cout << "WARNING: closing this window will close RawTherapee!" << std::endl << std::endl; #endif diff --git a/rtgui/options.cc b/rtgui/options.cc index 397b5996a..7d3475ef6 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -46,8 +46,7 @@ Glib::ustring Options::rtdir; Glib::ustring Options::cacheBaseDir; Options options; -Glib::ustring versionString = VERSION; -Glib::ustring versionSuffixString = VERSION_SUFFIX; +Glib::ustring versionString = RTVERSION; Glib::ustring paramFileExtension = ".pp3"; Options::Options () @@ -1864,7 +1863,7 @@ int Options::saveToFile (Glib::ustring fname) keyFile.set_string ("General", "Theme", theme); keyFile.set_boolean ("General", "SlimUI", slimUI); keyFile.set_boolean ("General", "UseSystemTheme", useSystemTheme); - keyFile.set_string ("General", "Version", VERSION); + keyFile.set_string ("General", "Version", RTVERSION); keyFile.set_string ("General", "DarkFramesPath", rtSettings.darkFramesPath); keyFile.set_string ("General", "FlatFieldsPath", rtSettings.flatFieldsPath); keyFile.set_boolean ("General", "Verbose", rtSettings.verbose); diff --git a/rtgui/options.h b/rtgui/options.h index ab0726798..4a556a65c 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -343,7 +343,6 @@ extern Glib::ustring argv0; extern Glib::ustring argv1; extern bool simpleEditor; extern Glib::ustring versionString; -extern Glib::ustring versionSuffixString; extern Glib::ustring paramFileExtension; #endif diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 21bfb0886..e76604baa 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -119,10 +119,6 @@ RTWindow::RTWindow () #endif versionStr = "RawTherapee " + versionString; - if (!versionSuffixString.empty()) { - versionStr += " " + versionSuffixString; - } - set_title_decorated(""); property_allow_shrink() = true; set_default_size(options.windowWidth, options.windowHeight); @@ -309,30 +305,6 @@ RTWindow::~RTWindow() } } -void RTWindow::findVerNumbers(int* numbers, Glib::ustring versionStr) -{ - numbers[0] = numbers[1] = numbers[2] = numbers[3] = 0; - int n = 0; - - for (unsigned int i = 0; i < versionStr.length(); i++) { - char chr = (char)versionStr.at(i); - - if (chr >= '0' && chr <= '9') { - numbers[n] *= 10; - numbers[n] += (int)(chr - '0'); - } else { - n++; - - if (n > 4) { - printf("Error: malformed version string; \"%s\" must follow this format: xx.xx.xx.xx. Admitting it's a developer version...\n", versionStr.c_str()); - // Reseting the already found numbers - numbers[0] = numbers[1] = numbers[2] = numbers[3] = 100; - return; - } - } - } -} - void RTWindow::on_realize () { Gtk::Window::on_realize (); @@ -349,38 +321,20 @@ void RTWindow::on_realize () // Check if first run of this version, then display the Release Notes text if (options.version != versionString) { - int prevVerNbr[4]; - int currVerNbr[4]; - findVerNumbers(prevVerNbr, options.version); - findVerNumbers(currVerNbr, versionString); - // Now we can update the version parameter with the right value + // Update the version parameter with the right value options.version = versionString; - bool showReleaseNotes = false; + splash = new Splash (*this); + splash->set_transient_for (*this); + splash->signal_delete_event().connect( sigc::mem_fun(*this, &RTWindow::splashClosed) ); - // Check if the current version is newer - if (currVerNbr[0] > prevVerNbr[0]) { - showReleaseNotes = true; - } else if (currVerNbr[1] > prevVerNbr[1]) { - showReleaseNotes = true; - } else if (currVerNbr[2] > prevVerNbr[2]) { - showReleaseNotes = true; - } - - if (showReleaseNotes) { - // this is a first run! - splash = new Splash (*this); - splash->set_transient_for (*this); - splash->signal_delete_event().connect( sigc::mem_fun(*this, &RTWindow::splashClosed) ); - - if (splash->hasReleaseNotes()) { - splash->showReleaseNotes(); - splash->show (); - } else { - delete splash; - splash = nullptr; - } + if (splash->hasReleaseNotes()) { + splash->showReleaseNotes(); + splash->show (); + } else { + delete splash; + splash = nullptr; } } } diff --git a/rtgui/splash.cc b/rtgui/splash.cc index 87408598e..0295a9c9f 100644 --- a/rtgui/splash.cc +++ b/rtgui/splash.cc @@ -27,7 +27,6 @@ extern Glib::ustring argv0; extern Glib::ustring creditsPath; extern Glib::ustring licensePath; extern Glib::ustring versionString; -extern Glib::ustring versionSuffixString; SplashImage::SplashImage () { @@ -70,10 +69,6 @@ bool SplashImage::on_expose_event (GdkEventExpose* event) int w, h; Glib::ustring versionStr(versionString); - if (!versionSuffixString.empty()) { - versionStr += " " + versionSuffixString; - } - version = create_pango_layout (versionStr); version->set_markup("" + versionStr + ""); version->get_pixel_size (w, h); diff --git a/rtgui/version.h.in b/rtgui/version.h.in index 03630075b..39ecd6426 100644 --- a/rtgui/version.h.in +++ b/rtgui/version.h.in @@ -4,9 +4,7 @@ #ifndef _VERSION_ #define _VERSION_ -#define VERSION "${GIT_VERSION}" -#define VERSION_SUFFIX "${VERSION_SUFFIX}" -#define TAGDISTANCE ${GIT_TAGDISTANCE} +#define RTVERSION "${GIT_DESCRIBE}" #define CACHEFOLDERNAME "RawTherapee${CACHE_NAME_SUFFIX}" #endif diff --git a/tools/buildRT b/tools/buildRT index 66ed43894..71370e8df 100755 --- a/tools/buildRT +++ b/tools/buildRT @@ -83,7 +83,7 @@ while getopts "bc:fnp:s:t:uvh?-" opt; do " -s " \ "Suffix of destination build directory, so that if you have applied a patch, say \"dustremoval-1.patch\", and want to have RawTherapee compiled to a folder whose name ends with \"_dustremoval1\", you would set \"-s dustremoval1\" (the underscore is automated)." "" \ " -t \"\"" \ - "Suffix displayed next to the RawTherapee version in the window titlebar. It is recommended that you include the changeset of the newest public commit (the one you would see if you cloned the repository anew) so it is clear which commit you applied the patches to. E.g.:" "-t \": ee72ddbcfd4e + dustremoval-1.patch + mustafa ibrahim\"" "" \ + "Suffix displayed next to the RawTherapee version in the window titlebar. It is recommended that you include the commit of the newest public commit (the one you would see if you cloned the repository anew) so it is clear which commit you applied the patches to. E.g.:" "-t \": ee72ddbcfd4e + dustremoval-1.patch + mustafa ibrahim\"" "" \ " -u" \ "Check for an update of buildRT on GitHub." "" \ " -v" \ @@ -193,7 +193,7 @@ if [[ ! -d "${repo}" ]]; then currentBranch="$(git branch | grep "*" | sed -e 's/.* \+//')" rev="$(git rev-list --all --count)" node="$(git rev-parse --short HEAD)" - printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Changeset: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n" + printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Commit: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n" alert "Repository cloned succesfully. What would you like to do next?" printf "%b" "Repository cloned succesfully.\n" "Press 'q' to quit or any other key to continue... " read -r -n 1 @@ -239,7 +239,7 @@ verLatesttagdistance="$(git describe --tags | sed -e 's/.*-\([0-9]\+\)-.*/\1/')" currentBranch="$(git branch | grep "*" | sed -e 's/.* \+//')" rev="$(git rev-list --all --count)" node="$(git rev-parse --short HEAD)" -printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Changeset: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n" +printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Commit: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n" #--- Print the menu branches=() diff --git a/tools/compareRT b/tools/compareRT index cca18bee6..d701508f7 100755 --- a/tools/compareRT +++ b/tools/compareRT @@ -37,8 +37,8 @@ for rtDir in "${rtDirs[@]}"; do c=1 pp3name=${pp3%.*} pp3name=${pp3name#*/} - v+=("$(grep "Changeset:.*" "${rtDir}/AboutThisBuild.txt" | sed "s/Changeset: //")") - printf "%s\n" "Developing images using RawTherapee changeset ${v[$i]} - ${rtDir}" + v+=("$(grep "Commit:.*" "${rtDir}/AboutThisBuild.txt" | sed "s/Commit: //")") + printf "%s\n" "Developing images using RawTherapee commit ${v[$i]} - ${rtDir}" for img in "${imgs[@]}"; do printf "%s" "${c}/${#imgs[@]} - " "${rtDir}rawtherapee" -o "${outDir}${img%.*}_${v[i]}_${pp3%.*}.tif" -p "${pp3}" -t -Y -c "$img" | grep Processing diff --git a/tools/generateReleaseInfo b/tools/generateReleaseInfo index 79189ad44..b7480e875 100755 --- a/tools/generateReleaseInfo +++ b/tools/generateReleaseInfo @@ -1,12 +1,76 @@ #!/usr/bin/env bash -gitBranch="`git symbolic-ref --short -q HEAD`" -gitVersion="`git describe --tags --always`" -gitLatesttag="`echo $gitVersion | sed 's/-.*//'`" -gitLatesttagdistance="`echo $gitVersion | sed 's/.*-\(.*\)-g.*/\1/'`" -gitChangeset="`git rev-parse --verify HEAD`" +# This script is called from tools/generateSourceTarball +# It is used to generate a ReleaseInfo.cmake file with commit information which +# enables compilation without needing to have git installed. -echo "set(GIT_BRANCH $gitBranch) -set(GIT_VERSION $gitLatesttag.$gitLatesttagdistance) -set(GIT_CHANGESET $gitChangeset) -set(GIT_TAGDISTANCE $gitLatesttagdistance)" > ReleaseInfo.cmake +rm -f ReleaseInfo.cmake +# Get version description. +# Depending on whether you checked out a branch (dev) or a tag (release), +# "git describe" will return "5.0-gtk2-2-g12345678" or "5.0-gtk2", respectively. +gitDescribe="$(git describe --tags --always)" + +# Get branch name. +# Will return empty if you checked out a commit or tag. Empty string handled later. +gitBranch="$(git symbolic-ref --short -q HEAD)" + +# Get commit hash. +gitCommit="$(git rev-parse --short --verify HEAD)" + +# Get commit date, YYYY-MM-DD. +gitCommitDate="$(git show -s --format=%cd --date=format:%Y-%m-%d)" + +# Get number of commits since tagging. This is what gitDescribe uses. +# Works when checking out branch, tag or commit. +gitCommitsSinceTag="$(git rev-list --count HEAD --not $(git tag --merged HEAD))" + +# Get number of commits since branching. +# Works when checking out branch, tag or commit. +gitCommitsSinceBranch="$(git rev-list --count HEAD --not --tags)" + +if [[ -z $gitDescribe ]]; then + printf '%s\n' "Failed finding commit description, aborting." + exit 1 +fi +if [[ -z $gitBranch ]]; then + printf '%s\n' "No branch found. Using commit description as branch name." + gitBranch="$gitDescribe" +fi +if [[ -z $gitCommit ]]; then + printf '%s\n' "Failed finding commit hash, aborting." + exit 1 +fi +if [[ -z $gitCommitDate ]]; then + printf '%s\n' "Failed finding commit date, aborting." + exit 1 +fi + +# Create numeric version. +# This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion. +# Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS). +if [[ -z $gitCommitsSinceTag ]]; then + gitVersionNumericBS="0.0.0" +else + gitVersionNumericBS="${gitDescribe%%-*}" # Remove everything after first hyphen. + gitVersionNumericBS="${gitVersionNumericBS}.${gitCommitsSinceTag}" # Remove everything until after first hyphen: 5.0 +fi + +cat < ReleaseInfo.cmake +set(GIT_DESCRIBE $gitDescribe) +set(GIT_BRANCH $gitBranch) +set(GIT_COMMIT $gitCommit) +set(GIT_COMMIT_DATE $gitCommitDate) +set(GIT_COMMITS_SINCE_TAG $gitCommitsSinceTag) +set(GIT_COMMITS_SINCE_BRANCH $gitCommitsSinceBranch) +set(GIT_VERSION_NUMERIC_BS $gitVersionNumericBS) +EOF + +printf '%s\n' "Git information extracted:" \ + " Description: ${gitDescribe}" \ + " Branch: ${gitBranch}" \ + " Commit: ${gitCommit}" \ + " Commit date: ${gitCommitDate}" \ + " Commits since tag: ${gitCommitsSinceTag}" \ + " Commits since branch: ${gitCommitsSinceBranch}" \ + " Unreliable verison: ${gitVersionNumericBS}" \ + "" diff --git a/tools/generateSourceTarball b/tools/generateSourceTarball index 98173c00f..022e5646d 100755 --- a/tools/generateSourceTarball +++ b/tools/generateSourceTarball @@ -1,17 +1,24 @@ #!/usr/bin/env bash +# Run from the root of the cloned repository. +# This script is used to generate a source code tarball which includes commit +# metadata so that RawTherapee can be compiled without needing to install git. +# It is meant to be used every time a release is made after creating an +# annotated tag in git. +# It is your job to checkout the tag before running this script. -if [[ ! "$1" ]]; then - printf "%s\n" "Usage: $0 " "Example: $0 4.2" - exit +./tools/generateReleaseInfo +ret=$? +if [[ $ret -ne 0 ]]; then + printf '%s\n' "Something went wrong while running tools/generateReleaseInfo" "Aborting." + exit 1 fi +desc="$(grep GIT_DESCRIBE ReleaseInfo.cmake)" # Gets whole string: set(GIT_DESCRIBE 5.0-gtk2-1-g96bf9129) +desc="${desc#*GIT_DESCRIBE }" # Removes front: 5.0-gtk2-1-g96bf9129) +desc="${desc%)}" # Removes back: 5.0-gtk2-1-g96bf9129 -git checkout "$1" || exit 0 -tools/generateReleaseInfo -mkdir rawtherapee-"$1" -mv ReleaseInfo.cmake rawtherapee-"$1" -#hg archive -X ".hg*" -X "rtgui/config.h" -X "rtgui/version.h" -X "rtdata/rawtherapee.desktop" rawtherapee-"$1".tar -git archive --format=tar "$1" > rawtherapee-"$1".tar -tar --append --file=rawtherapee-"$1".tar rawtherapee-"$1"/ReleaseInfo.cmake -xz -z -9e rawtherapee-"$1".tar -rm -r rawtherapee-"$1" -git checkout +mkdir "rawtherapee-${desc}" || exit 1 +mv ReleaseInfo.cmake "rawtherapee-${desc}" || exit 1 +git archive --format=tar --prefix="rawtherapee-${desc}/" -o "rawtherapee-${desc}.tar" HEAD || exit 1 +tar --append --file="rawtherapee-${desc}.tar" "rawtherapee-${desc}/ReleaseInfo.cmake" || exit 1 +xz -z -9e "rawtherapee-${desc}.tar" || exit 1 +rm -r "rawtherapee-${desc}" diff --git a/tools/win/InnoSetup/WindowsInnoSetup.iss.in b/tools/win/InnoSetup/WindowsInnoSetup.iss.in index 1ba02590d..05fdffefe 100644 --- a/tools/win/InnoSetup/WindowsInnoSetup.iss.in +++ b/tools/win/InnoSetup/WindowsInnoSetup.iss.in @@ -1,30 +1,26 @@ -; Script initially generated by the Inno Setup Script Wizard -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - - - -; This script has to be used by "INNO Setup" (http://www.jrsoftware.org/) to create a setup executable. -; When the "make install" process ends, you can double click on this file to load it into -; INNO Setup, then execute it to create the archive. It expect to find all the dependency libs -; in the root destination folder (the one of the 'make install' process), and the usual 'lib' directory. -; Please note that all *.dll files will be added, so be carefull on which dll are present in the directory -; before compiling the INNO Setup script. +; Script initially generated by the Inno Setup Script Wizard. +; Documentation: http://www.jrsoftware.org/ishelp/ ; -; It also search for and bundles all "rawtherapee*.exe" files, which mean that you can bundle a Release and -; a Debug build at the same time (for conveniency), but official downloads must only contain the Release -; version. +; This script is used by "Inno Setup" (http://www.jrsoftware.org/) to create a +; setup executable. When the "make install" process ends, double-click on this +; file to load it into Inno Setup, then execute it to create the installer. It +; expects to find all the dependency libs in the root destination folder (the +; one from the 'make install' process), and the usual 'lib' directory. +; Note that all *.dll files will be added, so be careful which DLLs are present +; in the folder before running this script. ; -; In all cases, you have to bundle at least one file named "rawtherapee.exe", which INNO Setup will require -; as a default executable to run. +; This script searches for and bundles all "rawtherapee*.exe" files, allowing +; you to bundle a "release" as well as a "debug" version at the same time. +; At least one "rawtherapee.exe" file is required. ; -; This script is configured to check that the operating system's bit depth is the same than the executable file. -; Please note that the ia64 architecture is not supported (is it really necessary?) - - +; This script is configured to check that the operating system's bit depth is +; the same as that of the executable file. +; +; The IA-64 architecture is not supported. #define MyAppName "RawTherapee" -#define MyAppVersion "${GIT_VERSION}" -#define MyAppFullVersion "${GIT_VERSION}.${GIT_TAGDISTANCE}" +#define MyAppVersion "${GIT_DESCRIBE}" +#define MyAppVersionNumeric "${GIT_NUMERIC_VERSION_BS}" #define MyAppPublisher "rawtherapee.com" #define MyAppURL "http://www.rawtherapee.com/" #define MyAppExeName "rawtherapee.exe" @@ -42,18 +38,17 @@ AppId={{128459AB-59A7-430A-8BD0-3D8803D50400} AppName={#MyAppName} AppVersion={#MyAppVersion} -VersionInfoVersion={#MyAppFullVersion} -;AppVerName={#MyAppName} {#MyAppVersion} +VersionInfoVersion={#MyAppVersionNumeric} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} -DefaultDirName={pf}\{#MyAppName}-{#MyAppFullVersion} -DefaultGroupName={#MyAppName} {#MyAppFullVersion} +DefaultDirName={pf}\{#MyAppName}\{#MyAppVersion} +DefaultGroupName={#MyAppName} AllowNoIcons=yes LicenseFile={#MyBuildBasePath}\LICENSE.txt OutputDir={#MyBuildBasePath}\..\ -OutputBaseFilename={#MyAppName}_{#MySystemName}_{#MyBitDepth}_{#MyAppFullVersion} +OutputBaseFilename={#MyAppName}_{#MyAppVersion}_{#MySystemName}_{#MyBitDepth} SetupIconFile={#MySourceBasePath}\rtdata\icons\RT.ico WizardImageFile={#MySourceBasePath}\tools\win\InnoSetup\installerStrip.bmp WizardImageBackColor=$2A2A2A @@ -97,7 +92,7 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{ Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 [Files] -Source: "{#MyBuildBasePath}\rawtherapee.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "{#MyBuildBasePath}\rawtherapee*.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "{#MyBuildBasePath}\camconst.json"; DestDir: "{app}"; Flags: ignoreversion Source: "{#MyBuildBasePath}\dcpprofiles\*"; DestDir: "{app}\dcpprofiles\"; Flags: ignoreversion recursesubdirs createallsubdirs ;Source: "{#MyBuildBasePath}\etc\*"; DestDir: "{app}\etc\"; Flags: ignoreversion recursesubdirs createallsubdirs @@ -122,11 +117,11 @@ Source: "{#MyBuildBasePath}\fonts\DroidSansMonoSlashed.ttf"; DestDir: "{fonts}"; ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] -Name: "{group}\{#MyAppName} {#MyAppFullVersion}"; Filename: "{app}\{#MyAppExeName}" +Name: "{group}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}" Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}" Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" -Name: "{commondesktop}\{#MyAppName}{#MyAppFullVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon -Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName} {#MyAppFullVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon +Name: "{commondesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon +Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent diff --git a/win.cmake b/win.cmake index b4bbc66a2..2259c144f 100644 --- a/win.cmake +++ b/win.cmake @@ -22,9 +22,6 @@ set(CACHE_NAME_SUFFIX "" CACHE STRING "RawTherapee's cache folder suffix (leave # This line will let you chose the target number, and the associated processor set(PROC_TARGET_NUMBER 0 CACHE STRING "Target Processor") -# To add a version suffix (text) after the standard version number, e.g. for patched builds -set(VERSION_SUFFIX "" CACHE STRING "For patched builds, use this string to add a version suffix (text); KEEP EMPTY FOR RELEASE BULDS") - # If you want to force the target processor name when PROC_TARGET_NUMBER = 0 or 2, # uncomment the next line and replace labelWithoutQuotes by its value #set (PROC_LABEL labelWithoutQuotes CACHE STRING "Target Processor label") From 77d5f8779bf183080a837a709ad6d9c2b1e34569 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 28 Jan 2017 02:29:22 +0100 Subject: [PATCH 03/17] Cleaned up CMake logic thanks to Hombre, #3628 --- CMakeLists.txt | 6 +++--- AboutThisBuild.cmake => UpdateInfo.cmake | 22 ++++++++++++++++++++++ rtdata/CMakeLists.txt | 19 ------------------- rtengine/CMakeLists.txt | 2 +- rtexif/CMakeLists.txt | 2 +- rtgui/CMakeLists.txt | 2 +- 6 files changed, 28 insertions(+), 25 deletions(-) rename AboutThisBuild.cmake => UpdateInfo.cmake (82%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ffce3a7e..9c4e74def 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -331,7 +331,7 @@ if (OUT_OF_SOURCE_BUILD) endforeach(f) endif () -## BEGIN: Generating AboutThisBuild.txt +## BEGIN: Create AboutThisBuild.txt and other version-dependent files. # set the bit number information of the platform if (CMAKE_SIZEOF_VOID_P EQUAL 4) set(PROC_BIT_DEPTH 32 bits) @@ -382,9 +382,9 @@ endif (WIN32) list(APPEND ABOUT_COMMAND_WITH_ARGS -P "${PROJECT_SOURCE_DIR}/AboutThisBuild.cmake") -add_custom_target(AboutFile ALL +add_custom_target(UpdateInfo ALL COMMAND ${ABOUT_COMMAND_WITH_ARGS} - COMMENT "Creating the about file") + COMMENT "Creating AboutThisBuild.txt and other version-dependent files") ## END: Generating AboutThisBuild.txt diff --git a/AboutThisBuild.cmake b/UpdateInfo.cmake similarity index 82% rename from AboutThisBuild.cmake rename to UpdateInfo.cmake index bfb3d6eb5..40cdab6d6 100644 --- a/AboutThisBuild.cmake +++ b/UpdateInfo.cmake @@ -84,6 +84,28 @@ else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake") endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) +if (WIN32) + if (CMAKE_SIZEOF_VOID_P EQUAL 4) + set(BUILD_BIT_DEPTH 32) + # 32 bits builds has to be installable on 64 bits system, to support WinXP/64. + set(ARCHITECTURE_ALLOWED "x86 x64 ia64") + # installing in 32 bits mode even on 64 bits OS and architecture + set(INSTALL_MODE "") + # set part of the output archive name + set(SYSTEM_NAME "WinXP") + elseif (CMAKE_SIZEOF_VOID_P EQUAL 8) + set(BUILD_BIT_DEPTH 64) + # Restricting the 64 bits builds to 64 bits systems only + set(ARCHITECTURE_ALLOWED "x64 ia64") + # installing in 64 bits mode for all 64 bits processors, even for itanium architecture + set(INSTALL_MODE "x64 ia64") + # set part of the output archive name + set(SYSTEM_NAME "WinVista") + endif (CMAKE_SIZEOF_VOID_P EQUAL 4) + + configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/../tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss") +endif (WIN32) + # build version.h from template configure_file ("${PROJECT_SOURCE_DIR}/rtgui/version.h.in" "${CMAKE_BINARY_DIR}/rtgui/version.h") # build AboutThisBuild.txt from template diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt index 939584061..b3f44a68c 100644 --- a/rtdata/CMakeLists.txt +++ b/rtdata/CMakeLists.txt @@ -19,25 +19,6 @@ else (WIN32) endif (WIN32) if (WIN32) - if (CMAKE_SIZEOF_VOID_P EQUAL 4) - set(BUILD_BIT_DEPTH 32) - # 32 bits builds has to be installable on 64 bits system, to support WinXP/64. - set(ARCHITECTURE_ALLOWED "x86 x64 ia64") - # installing in 32 bits mode even on 64 bits OS and architecture - set(INSTALL_MODE "") - # set part of the output archive name - set(SYSTEM_NAME "WinXP") - elseif (CMAKE_SIZEOF_VOID_P EQUAL 8) - set(BUILD_BIT_DEPTH 64) - # Restricting the 64 bits builds to 64 bits systems only - set(ARCHITECTURE_ALLOWED "x64 ia64") - # installing in 64 bits mode for all 64 bits processors, even for itanium architecture - set(INSTALL_MODE "x64 ia64") - # set part of the output archive name - set(SYSTEM_NAME "WinVista") - endif (CMAKE_SIZEOF_VOID_P EQUAL 4) - - configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/../tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss") install (FILES "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss" DESTINATION ${BINDIR}) endif (WIN32) diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 477ccecae..dbab1dc2d 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -29,7 +29,7 @@ set (RTENGINESOURCEFILES colortemp.cc curves.cc flatcurves.cc diagonalcurves.cc include_directories (BEFORE "${CMAKE_CURRENT_BINARY_DIR}") add_library (rtengine ${RTENGINESOURCEFILES}) -add_dependencies (rtengine AboutFile) +add_dependencies (rtengine UpdateInfo) #It may be nice to store library version too IF (BUILD_SHARED_LIBS) diff --git a/rtexif/CMakeLists.txt b/rtexif/CMakeLists.txt index a2e713ed7..7dad67006 100644 --- a/rtexif/CMakeLists.txt +++ b/rtexif/CMakeLists.txt @@ -1,5 +1,5 @@ add_library (rtexif rtexif.cc stdattribs.cc nikonattribs.cc canonattribs.cc pentaxattribs.cc fujiattribs.cc sonyminoltaattribs.cc olympusattribs.cc kodakattribs.cc) -add_dependencies (rtexif AboutFile) +add_dependencies (rtexif UpdateInfo) IF (WIN32) set_target_properties (rtexif PROPERTIES COMPILE_FLAGS " -ffast-math -fexpensive-optimizations") diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index ad896041f..be2186e63 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -62,7 +62,7 @@ endif (WIN32) configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h") add_executable (rth ${EXTRA_SRC} ${BASESOURCEFILES}) -add_dependencies (rth AboutFile) +add_dependencies (rth UpdateInfo) set_target_properties (rth PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME rawtherapee) #target_link_libraries (rth rtengine ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${TIFF_LIBRARIES} ${EXTRA_LIB} ${GOBJECT_LIBRARIES} ${GTHREAD_LIBRARIES} From cded30dcbbdad0b7976b78a323395cabf3d28b5e Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 28 Jan 2017 02:32:31 +0100 Subject: [PATCH 04/17] Fix previous commit: Update old name. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c4e74def..71c628635 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -380,7 +380,7 @@ else (WIN32) -DCOMPILER_INFO:STRING=${COMPILER_INFO}) endif (WIN32) -list(APPEND ABOUT_COMMAND_WITH_ARGS -P "${PROJECT_SOURCE_DIR}/AboutThisBuild.cmake") +list(APPEND ABOUT_COMMAND_WITH_ARGS -P "${PROJECT_SOURCE_DIR}/UpdateInfo.cmake") add_custom_target(UpdateInfo ALL COMMAND ${ABOUT_COMMAND_WITH_ARGS} From 2356af62465b3b9fe99bd5a89b91e9fbb8c89a83 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sat, 28 Jan 2017 03:03:15 +0100 Subject: [PATCH 05/17] Bugfix of paths in UpdateInfo.cmake --- UpdateInfo.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UpdateInfo.cmake b/UpdateInfo.cmake index 40cdab6d6..1192294d1 100644 --- a/UpdateInfo.cmake +++ b/UpdateInfo.cmake @@ -103,7 +103,7 @@ if (WIN32) set(SYSTEM_NAME "WinVista") endif (CMAKE_SIZEOF_VOID_P EQUAL 4) - configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/../tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss") + configure_file ("${PROJECT_SOURCE_DIR}/tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_BINARY_DIR}/rtdata/WindowsInnoSetup.iss") endif (WIN32) # build version.h from template From 52dca96723965e6a8f954c29ef156a6cf5da23b1 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sat, 28 Jan 2017 22:39:50 +0100 Subject: [PATCH 06/17] Bigfix of InnoSetup parameters (#3628) --- CMakeLists.txt | 4 +++- UpdateInfo.cmake | 6 +++--- tools/win/InnoSetup/WindowsInnoSetup.iss.in | 1 - 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 71c628635..c412f591f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -367,7 +367,9 @@ if (WIN32) list(APPEND ABOUT_COMMAND_WITH_ARGS -DSYSTEM:STRING=Windows -DCXX_FLAGS:STRING="${CXX_FLAGS}" -DLFLAGS:STRING="${LFLAGS}" - -DCOMPILER_INFO:STRING="${COMPILER_INFO}") + -DCOMPILER_INFO:STRING="${COMPILER_INFO}" + -DCMAKE_INSTALL_PREFIX:STRING="${CMAKE_INSTALL_PREFIX}" + -DBIT_DEPTH:STRING="${CMAKE_SIZEOF_VOID_P}") elseif (APPLE) list(APPEND ABOUT_COMMAND_WITH_ARGS -DSYSTEM:STRING=Apple -DCXX_FLAGS:STRING=${CXX_FLAGS} diff --git a/UpdateInfo.cmake b/UpdateInfo.cmake index 1192294d1..ff0f12482 100644 --- a/UpdateInfo.cmake +++ b/UpdateInfo.cmake @@ -85,7 +85,7 @@ else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) if (WIN32) - if (CMAKE_SIZEOF_VOID_P EQUAL 4) + if (BIT_DEPTH EQUAL 4) set(BUILD_BIT_DEPTH 32) # 32 bits builds has to be installable on 64 bits system, to support WinXP/64. set(ARCHITECTURE_ALLOWED "x86 x64 ia64") @@ -93,7 +93,7 @@ if (WIN32) set(INSTALL_MODE "") # set part of the output archive name set(SYSTEM_NAME "WinXP") - elseif (CMAKE_SIZEOF_VOID_P EQUAL 8) + elseif (BIT_DEPTH EQUAL 8) set(BUILD_BIT_DEPTH 64) # Restricting the 64 bits builds to 64 bits systems only set(ARCHITECTURE_ALLOWED "x64 ia64") @@ -101,7 +101,7 @@ if (WIN32) set(INSTALL_MODE "x64 ia64") # set part of the output archive name set(SYSTEM_NAME "WinVista") - endif (CMAKE_SIZEOF_VOID_P EQUAL 4) + endif (BIT_DEPTH EQUAL 4) configure_file ("${PROJECT_SOURCE_DIR}/tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_BINARY_DIR}/rtdata/WindowsInnoSetup.iss") endif (WIN32) diff --git a/tools/win/InnoSetup/WindowsInnoSetup.iss.in b/tools/win/InnoSetup/WindowsInnoSetup.iss.in index 05fdffefe..82aa7a60d 100644 --- a/tools/win/InnoSetup/WindowsInnoSetup.iss.in +++ b/tools/win/InnoSetup/WindowsInnoSetup.iss.in @@ -74,7 +74,6 @@ Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl" Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl" Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl" Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl" -Name: "nepali"; MessagesFile: "compiler:Languages\Nepali.islu" Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl" Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl" Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl" From 3809a15d98836c91db66135562ffccf00ab26a7f Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 28 Jan 2017 22:52:56 +0100 Subject: [PATCH 07/17] Updated splash screen SVG + PNG. --- rtdata/images/rt_splash_5.svg | 204 +++++++++++++++++++++------------- rtdata/images/splash.png | Bin 78654 -> 75666 bytes 2 files changed, 129 insertions(+), 75 deletions(-) diff --git a/rtdata/images/rt_splash_5.svg b/rtdata/images/rt_splash_5.svg index 78620dd68..8f556f37e 100644 --- a/rtdata/images/rt_splash_5.svg +++ b/rtdata/images/rt_splash_5.svg @@ -21,7 +21,7 @@ inkscape:export-xdpi="90" inkscape:export-ydpi="90"> RawTherapee logo white font white glow + id="title5575">RawTherapee Splash Screen + inkscape:snap-global="true" + showguides="true" + inkscape:guide-bbox="true"> + + + + + + + + + + + @@ -1417,17 +1468,17 @@ image/svg+xml - RawTherapee logo white font white glow + RawTherapee Splash Screen - RawTherapee + Morgan Hardwood rawtherapee logo - white + splash www.rawtherapee.com @@ -1647,40 +1698,11 @@ y="152.4408" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:OxygenSans;-inkscape-font-specification:OxygenSans;text-align:justify;text-anchor:start;fill:#ffffff;fill-opacity:1" />Select the desired element and apply one of the effects in the Filter Editor. You might need to ungroup the element before applying. For example to set the RT ring to have a colorful glow, select it and enable the "ring glow". You can change the flood color of the "ring shadow" effect to make it white if you want to make the logo usable on a dark background.Apply glow effects using filters. You might need to ungroup the circle elements before applying. You can change the flood color of the "ring shadow" effect to make it white if you want to make the logo usable on a dark background.For logo specifics, refer to rt_logo.svg Raw - Therapee - For logo specifics, refer to rt_logo.svg "Raw" font Eras-UltraBlk, 69px, -3px spacing between characters, skewed 2° to the right."Raw": font ITC Eras Std Ultra, appears in Inkscape as"Therapee" font Eras-Medium, 68px, 4px spacing between characters, skewed 2° to the right. ITC Eras Standard - Ultra-Bold,Both have a dropshadow with an opacity of 0.40 and Gaussian blur standard deviation of 3.5. 60pt, -3px spacing between characters.Version number Eras bold 64 or less."Therapee": font ITC Eras Std Medium, appears in Inkscape asEras font from "freefonts-0.10": ITC Eras Standard - Medium,ftp://ftp.gimp.org/pub/gimp/fonts/ 60pt, +1px spacing between characters.Version: font ITC Eras Std Bold, appears in Inkscape as ITC Eras Standard - Bold, 64pt, skewed -3°. RawTherapee splash screen design version 1.0 from 2014-05-03 | www.rawtherapee.com - GNU GPLv3 + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6px;font-family:OxygenSans;-inkscape-font-specification:OxygenSans;letter-spacing:1px;fill:#ffcc00;fill-opacity:1">RawTherapee splash screen design version 1.1 from 2017-01-28 | www.rawtherapee.com 5 + Raw + Therapee + GNU GPLv3 + 5 ;S%ROr&gQrSE7)q-^M5Y;3b_Y1|ElVnT)rIy;%! zIzY*SE9l!0N$5Kmx!T$qeN}K?03&e!dq-yn!~fpTLEqKs|E@@HXluW1dncLcYQZ@rmD`;hIX-s71-^tv?7+k^H z*2WR?@C;VwhQ>CI#*PdI?w=g>8Cd8U8Fc->v_e4qwdb=m!tG2xqm$sOW zkfq98dlP#y6T`eF3)s#@h82a+L3Vc&`FxoZ1BZ;k`SB4|B`KfZev|KtDlcTiFrG5} z(1@5;^J|b1Me5;@j7i*rN78ZS{gdKT#q(^1XIaC3s^pI`Eg~B zGdshnh9sYTpqr%Wi>se7KcQYl3XtCH}HP)spHR`l?L?%?CRA-NCC33<=^($RtY zB7?h^L;P}UK$N8UTZh8fSS69aImrik&=oT9!+l1Mf+3Ypcwf!SQ@}j-5U#oGR6?Z7 zc*-}g81vL4>AcQ?K=srsDYTAR))C(ykQw}(EB_Y3cCE+od5__=_lt|ndk@HPJLUw< z>Q;yT{>1$++`FQ~&|qv%)wn5)=uG25GdkS^vn_wcI7s#Z+h+GO-6S98yzwl zL4TipL9%HTwI1g5aCc@c2igk`)FE<8TJ+$E+lvD>+1hBx{lDhq$is(mhHZ9}p(7CE zBQ3os8%l{3j-!ZYO-m^Ie|k{xr~i=dTadvWgNj6xtzzSz3cE&C%j_37swXO%rrO~c zr;q*SLnw@sj%$nwMkuo^TBt~8J45{Ke?A?<#4g209Ij9i68PY*sGyGVYwrmphPZeU zl68yjJ>i$|{84c2FEObkCBx_Ew8}3k>t}XcM%#*SxW{Hb(1fd8|KnAscE1n#{jWL7 zjn^i7%6XZB7P1D%SE)D!VDy%I$~Cn3E9%ZmL|y!`(OrDbS=)8l`SyOUV`X)~Vg1*f zZr5NUErAFXI>P$W>N7k4Rf&94<;nhjCwa2=Ybd0dz-MI0?syi-rlImG7?_EF7IAmy zg8KSzJU4~YK5w%@gDxm74Y&1Tl*jGis9|DZAyk1X06cy)?_CHBxa%90f;8^O$;n9{ zsZpjQXf@yY-;}~CXR8&-k7yRoCTqRot@^6Z&Y!-x-a$ zA)A@=-ihJkM9~<*J2>t)?{NbTsyaSK^WRhLjAn-C<&lVxpn~5IT-^&FeAupQoH^bM za^n+%&2cgQ zw2&i^&=pS{86dOoK-?)C+&&oZHMy`_dO4slDi_3R;_ss)nKVYnnW~_z9dY8d%hR}< z<@wWkiG7Zn`p&7SN#$!b%XXg+3K43Johoh04jMA@94)`V#)oW4F$J^hS;FU2INqnr zsei}EVyw8LuC5I#6C1Ur{i`$|Lf5c5ZUc`Vy6yjs6aV!*X#?vjq{jgKxAK>)$Or8& zU&3l?m=h8ca|;W5T-J7+N5XSLEV5Vk^@wpl3+%rWr#ByFldF0#>gJqcoE*WI#ww!w z)I>5>=k`PquE+k5)(DOVWl)nlH zMzToJZ>ZVwG!c^T8gwRT=rrogiAX;sdaDilw8P8KS`|{=`je%|)D~PAnQKyP2$Hpl zXysE~W_=2o=8%Y|z6&*TlLsXpwJ7nm&>YLGrmDAZ32QLRnzEbA27gx=WtPoW$DJyS zuB3MI+41*T8c8XmqNEjz!2WJo+4Lq_;JMLI2Yuzc!Yc&~j|HY+b=X+0Z4*NaC1)w! zd>n>A2{PoG6Q}pd`>85tC6n35O_M#O?JV|fcnI?KQnZwmpungxN=PbFMt;h7FXEqQi`**RQgGDtUL_DrLH{PS~E3o)TO$swx_xdP0{TG*(7BTBsd*@kZ>Rhy zU2~EPDEAHRs~L^#R4(-ID=sywNtAY<=k=Ol8Oo9tgTKXu=H;)B^XTcDN;+aW3nGh^ zn76l!&q`?!k@%;}4DC_zfEFosbkLX@TxC^G1IW|UMXzr2*;lHVP-hc(n$Qzko1yMM4fC3vGk3X`JYo2@^ze-g&&zkE(V7ax)(YiBIMw!2iR$u7 zllbJo&mCy!nz;fCjGot4<(jpXH&z&? z^}`3DvkQBQYf5EE(BY!xBf{IM`Lo1D;QJ#;EH#YA$c9+Hcty9DIGj73uX5hDkj11K zU==2n&RFP zh3ZBgQ)h}yU}s`5+B@AZZ{6pR$75J>$}W{NzJE-0dafCbpZqh_T@me|XZ!Bm=W#(P_PvDRPGEODv5n~-P_zWb0;wSLV$OdDG7#{CRh z6*umNHe)MfyRs!Cx)|T}A^c&@TYFzOuRlN(^~kBoCab(hgs6dlU`y8>U2dOq88aY> zPyEUPwy?OkZCfv-ia)2|5Dx z00ZIn`DKXty78A`v@`xe;gy{;UVs{^h1lBU&vX>HcCYBrUK0t;N-DNq9z&Tf?_NbU ztn1>L4=!S8;)-ri>=Z^oDSzQ=LgVq$>|0FU9=41rR8sD~Jgdo<%BQJPJ<%rXdrTi+ zB`aLbFna5Qnov|kfzRVIJj0osnE2|a+6z9vmz!YHEFrT|NLdcr4-~~>Nx8V@O2g?N zir5@B_`Q*M!Jy6>{B5+y=J(H;4QCLZBO3TGC!0 zF8K3#UVjC{%q%SY^szw)bSW+~Pjm8w$5}_?c^B(@9$k5m!fcFyNvGjkqFiinIA8sv zv{VQzDJLCqad9|qZtn4wl_;GSm)!b#%wNBLnORyo#!|`o?D2)TcTO?8oql~s$p4oq zuF#9m`bb~|Z33@gZ< zWHuWolF8!5Q7)4C14c4BY)OEt;cstmQ!y}zQ=toKYT`hiU}h#TE9;|^i_6CE@6hwV zEU{cpRw4mrY`MlqTg5mjH`)r=&uKg>t2_u1A&FwIEG)zMn*>dsHzh8_U3arS_}j`Cb_eJpla^lYPb_pfWwZcoX7`>r?;5^@AX1v z*LHwTuw?#3MIVfkhQ+9?rUEZ!HIT#gvx(mg#rDNKfM zOomgwPs#DTS1y+8*&2xV){CtxFCUKDO|z{0lPes2I@j@xVcT|7t;!8*t)gK?NLDtIfWL}$nhMnJzH}_V&6->?V*Mw)z~{x1xnpi6-wCK+S=;xf|FNk$N2G* zwH@AKe)_V-<%`Yh_S4(zeyT)(W_VJGXj;8eEXTZnsbLLkcEpw#0AR)-xGCCOef`{Cu3ytuP7 zo5@I8U@WP4k*YLQ;~Tzk%uhAZ>1k=Fipfi7G9UX!uXoF5Q)dJF{7^66Z9U>%G81XA1WMEf(r)M-id?QTo_s4 zGgfG*#Oq@D?5H7z4t(&bv-pUT^}9n*ug_qyw4r`mII30YMw(`OV>&xKyXaty{CyHt zx?hItVep#-V4nxmA?|g77~z>4KG;lI@~zJeX8QEdQQ*|>r5_)lD*^ZDuFh*z`C!+8b9c)c@lzS=N2p9%IWM*$!oyV>7- ze2`l`C{q133B@lpzq0i)}_b-s~)T5EFV>2rW#=T zV8g@d5@q{~5e~4*ak%;l54a(uqsei1!!i2-|D*S%;^E@2p^2Q>nojXpnChvu{Bt|b z2mqnAJ&%4hZiLY~te{EGIeSJ|SXQ-R3cTEnRRbKq?YT+thOn*lob6+DenA0Dk+}ij zV2yxxF`15L)a}vG)4P;JWT5XgM?sM1>f;WFqlXPc1UA#_IbF|BNep^Xt53(SZpTf# z_#NREALU7%(~OOcZ+^YA?-{mCt)kN~nlGrgS4@lV zmC{`it_u1G04O(RzM4XlP}NPl+1geebj>B*cDy_Y>`ksU`I-o$h}3o^P%C?dQmR7= z88ZJZ(J1HUJ5S_Xa2Zxs)-4PhXXjsSSh1W4xl(mbdrEp)`nRX+*aAMS*19N9vi+^` z$cu}Mr^hWPQsU7*!~}w8h^^3yCG2Nze|^-mpD&Bg*8GtnC22T~4H22|5@lyB`((Z$ zO!_53Ez87)q`*N1U;-Q#6A0mfeLh-!9%*=w2i|!=@JA2$IUU!`OtFbzNmi`$iSl=V zcY{KM&E-IL-0|`p(f>BaCz?`riqYrswmh2&4;>3@(^BsN*QVu&U0vsbM8595F!4ZW zh-5s4{`O!ZWEs-X&`c&Vow1+{;S^%{=4YHG{s<2Xv)e07-l*>T*wwU~bs()(XpWoo zNh?V2XQ|9)q0^9CLFsb-o_;M$TQD=G?U$%RH);a~b_p8*r3J0~N2d%U$T zbkwIpAM{i?fg2neI?H~!%Wix)Zn59$M>R_e`eiw{BbsG0mK6!OaPVG8^pD;sf^g8Z z?yuin?2h%VcLnRz+gW@a<$pMA?R?o4cnJk78|pa0^QbbBvz@*llb3 zWmVVY{HPch7;bCd;q3YdTsgh+ZX@34x^$zGvJCX}X1qyuP}+GBY##z0&4cZM({k&*y<-J~=Fq}AwporxxY!};dQE6_SvkM-rtm+{3#3kDSp zUEQcZ{&0rOTA z?fTU4*YD)p%LA0J^TF&oD9|IRZ&3I3 zkBl@=tLHL@$Tw`3YNPsiLEn@0d=}0=IxWv-_0?N1olb}o<~B9q9335vv%Uw=0-MPIrbs5$FAx#S0Mvu5F&zLRX>a|3nn#GI2dU?5KGr?#+1f#qhBisNGL<}Eizv|f`<81zv~S?rybPD z$Ou%q2P*(?kiETbr@>`8#Q07t7ov-;c;D!>zC1t7H#?UdO;<3#?=@fo0EU%~O&{oF zZkv%D5U}*uX-c+!EFgrz=PdjdEO>LCyz>R!ythJgR}s@eq~cLIMMZBwp8;s64=fGT zNHLu`^R%G2xDUfwe0Vc6GmUG0i1_^IBtT*I2RjWJe9mag9lRI2?c$j2Lx2xRZCcNI zBL;EgDN$9js(2$gmYw3`GQeZ34^U=z1DIjV(|%q901;%>w0YiaY$xmWKHgmv@_T|8 z0@=OQ20aL%5YCScX1?q-Ax0|q!ik!g5Qj`HJL&W_+HW!%^`q!*tbjIFrMoTgQ?JX2K*HZ-w*7_zl&bIUr&I+T?XNq~}s-f3*1P7U+gSnLMsi zp#eqa^G%MFvz0pG9go`#Kp!NrX=RV15!`uuRR$?)wCk-q)bz-t{*Pk|eEERzQdyhk)2FdfZr%BGvHRk?Uv4mEnW zBRccUPg-?0cX9waLmx_JNalaIzdAUZ%6>+#sHmvyA?W$e((?;+_P;>aY&>ay(Dwce zF#2)ph1_5JK7wl(f`nx4D;NZ6mHTe+niq+0MHTve#t?}bawqHoo(J8!vgMdtPwa+( zfMCAHINX8eAHcm{EQWW1U_UMfUV+asL|YD~p7ZhZKTp8PASBpJsydL#us5f)ba308 z5GmMxR?~DF;~G5VmPX?cL)>dlymJ|Jbb)nI1%3cMcqXR+X9*_s!4|mvgRG#XW%*!p zb$Ll80Q#Tj&2i67$BQ>aH_S3`0??IU2i1O@h=vMuM#y?CWI>Di$QRaf(!O-edOHjC zDBKbHfXDZIyQ$IP)5h8XSsioe%5wK^c%)s!sVoE*ouJvB0^osW+kQs@;eNc4JqFht zuE)urY9z`KSG{kR-2k$hn3>sbjDA=cIRBhPC=!z8w()kUM5P;`&;s|*cfTdW!JB-% z7&BaL_eK&B%)+Wcewtlc3J0_^S=Zz3>iukkf}UPg#BR+HeHW;VNA+3ps1qXU{SIQg z%+#h{dvA3G8r@Czr%M{Qle7xPS}kU1cyHJI&8)4R+ia`qD1c(y(69+7aQg}X4(;{P z3@$VP33HuvO4@}wxCTr*n`;GuggRX$;lgttfy43!i0nBpd8P8{^(ap_-?SW z4nYr4WnIfZ_5Ce>^;9gjE1j&{4%=uz)oSe zUfjaQ8AyN@SQAx{5LE0blL{~Wb4nrt8ZhT(1k2$IsEeln)?uBrUPR@0^r&rJq|mHX!sak3`_pr%#+-w?A2*SOYah z6>b|!KP97*Yo;nCvOIfV{!{e2X;}sBHj|b9`~u}Ig?z`n8b)5mnS9Z<44o}+WW$O_ znbS{2Ev;~ILhorspYBVyM7S+=YM6ct0sRLT+<2 zZoYVQ?|7~-6R3L-S_y$Jg~_^MEyvA>0?%jBOs>a&TQ_0K75}Y1Uvrcchy}7}QEE@I zPE1UE2bl73p%xBQ!}^LvhJ>V~MRO}_Yf<2(jOs_?vLS%3<-)oP{H z-MxbPVvx3~adzx%35O0%h~BchM$y(NGgwM+J^uyp@p(+fg zBhokimJ1I{C?H(}b9)P#qD2`2jYDT>XarIC?wt|T!VisBwe5I8cbL!Ies5x2zKi;l zD}{Lif5oBj{>Natm5GU|DW%VOe0HPDCWVT+I!}U*V(MC7AdM;SYBT}Qj^?P*-iH5A z2pt7dg5xq_bl=(P%hM`o$5H&^UaK$*Y?t_;Dpl6K%WzpVhnPLWqG+q0#1mE0%MaUR zOUujFwU2nVt*Aho7!~-AvzBU_^#}0ALn(?%)R?H8ah27lha1C}=O<3PHK-_XON0Ad z1$YQsCYgtn2w5&eW)fk z*O?O1)`J;?roEbMf^04J;R~(>c&P0JWU<*65H?gIb9QMz27gx;bIxu4|7{BRV^#9 zyn^6FH^9k{bOw#ri%6;D`R~Z02nCMgo_hX747!TcU0jH^w+`>5W?+q|7L3Kd1~dmIfW#~GyO1Cc;nR`$Jx zg+;<(2q&fPoHOXPXyQ@$XFcmlEH+T{jrOGNpjqx(#iarT3kYils~tdkS{>mD2t}jJ ztE-#-Sa{GJb$7A5i@&n?%koH01m7C-HBD!X1Q|YpR1t=*6@Jgl6ly|OF!CmVq%CD= ziLq=S;cT~9WoyN+fb;+mvEqjW0GH;>v@eC<1{c2HhW}p{pzC@tmqhp5lk;55`c z7;gnHQkFQt^z~@ueV2PvI{9Ln&mP+cOST=K*jj#wHTrts!B&&5bqltNk@fvG6;mk{ z%0<~3NiWVIMhovL&_Dl?Tj^d8+yK(HKZ}Y69;`Tya=}3) zLR5sn!|!NZ*$&LwKO87_WSbqtkZNG0HoHU7n1D>Ke*doPcUe{Yz64%$Ht7`W?97bh z+d&~xjk@&-L4l* z&sIE7a@*Tirm|=a8v+0qq!#B|@besp#4WgN45qvvS1KoKQE-ldkqkzK0)6K%#_kWrd`7QZJFqS0nbx3{YPk_L zM@25;)Vc83t+0^@`45S(E-TF>Jx~FH`g!9S7mFrWDsGtioVi%O> zmX(iHcMgDXh;_GhM?R#Ev%X<&Wow(LP-1TlaqAyO!{a?#hx0!g5(@b*R%o-8pBk@Uj_ zVr@ZK=KVp{SP2ml(ESn<6M=#a!EN5FFp4nL>`>YVvPS-ZPHHw^2V{>{2RMZVS%lfQ zo1fAMv$3)L+uwI^&M{axm4eghx)?1}MoT2o%r7Bn1mq3q=3!1IQ7LjOxu>?NQw0ch z*-;2Iev`AaI~uD(bXp52ia4S1zlcj;dPaZL)uBr#)As;+6ty>1TpXFbi16DJGqtG1 zTS3H6NFk8+;MUk^p79;nj}o$!zJ+;qiN5d%+dZGDOA<332i!epm+lou3bZWHA64=L+OmAgrk!<)%HkvZ;9$X{LIYV=?Y}vhpcYk(edfU9hm+VHG>g zxcfr>v9i3pF1cRdpuCpXwG~4!fI0rs0~P(FSiNyZ`gf6>P-E|Q`qPnsMKh54FSRHX;MyKRX5*qrZQ9&< zoYUC!ISL~mzsa@29KiB9vv{U@DKl}#hdBIgL#Pm^EISh0#Vjq$NacUTlm5u6Ei4q3 zyq=6jdmecU|H+QBlDX6zcW`jkZ8=*4LG>x66dlY$;t&In84WgadlwndkOwxm zL}mbmy1)0(Qw!IrGeZS>kO>yinW+7C09yRyq>{Gx)lB2{q9xorCSnx9+^E#7@3V#j zg`0!|K3=-dL<Zz<8Z+Hhq-{5(NcIGvrlBg7mR@s04=_7zo z5b+w3p%n#K7K0Wwf4)P*oq}p*I8&+$2}6mH3_j#f{FpoulIfrksIjk;h12{?^IF88 z0q4yZuJ~VkrEMF4&HXg&LlR%!*1wPCM;K##htKOaULCVdEv*1$DmvVYxev>Hb{bJu zQgRlUli@t83DM6ft?e3x(QP?{kO`w88X=c!PT-rPM;SsT1ppoZ>31Zd0>zSR!P-%^ z8F&Hd7gYa1@k&bDd&DOQA+Y6!?Wq#eW-Tj~;jQy($R3kD^QZ`3FU*2kIjD!opWx}E zjHg7Ww3|;=cbl^P2bq|)U;{fxf->w_s^=>My7Ym-xCxj^w{fx#1)F6*0A&j5>cPOA z`MTK~Ip5~lKx$RxAbIfKSc#pP?W{m~t(B-neI^>X+l^j4|CY)!fV|vMqyF;Ai3=^! zjekfvu@_+XO;dq~RKvWWMmpbpZ{svEeqW5IPlyw`rQ=mo5l_r#{RrdNM@#kquI>`J zfDH^Zk|0QloQWA{N_FX6X9T({q%D69GqMf-{(7PtT4M}Y>(w^P+}h4Fs$7Az=|ag! zRUOaV&sTacY?g`C>dH!nhNOTGoH!tjh=q;8(RBXyR&WTE2!r}{D3|{zgu=`q{?(60 zE>W2XO59NL`RgT8Tc=F2ZgX<9MAKe)C03WZGf}ILaTJ(!T2ceCeBAZ|R6_nbe+qy3J9?->-d?3Gbk7cu}JMrf{>_-+5^Ik^e*H$2r0W;jhI{uzFLUr{fx zO9{$q&r2rmwvstX&_^0KWDtLQPPEBfsF*C~vIm~jdxGp7RWdIn&^rNUePi2t_6F?R zoyGjX&s)J8GtN3CIl#y*BG*cAQS|{Nn0ry$M~{9xl2*34lGdBeOb1zW5l)CJAIObR zoP(JXKjF#A$&oHtSF<{i(IPakRD3MF1y$}<1M@1Nr0UV_mEEGbLv%O1BGL zl7TAmX?;s0u@_hr54aOB%J3h^@w)Gp)k?=HVMJLYZ;!}mk8NLRWFCPn;!R8ia9cMp zz#%Hi+>ZWVlgFkpZ~Bu)BgS{o058J&w$9+3yJ3-wO&}LCzz>2&iW=VY)APoLPP3+9 z?W_X4yS`{b*OBgh#9a*r<5za_EZ6xPo_ClEo5{#bsGB4OEQX1LCu`AqO39zk+#OkDX9i`PnoB+v!X%wON1ekbN%9 zdH0cbK9)a~S}cM#nRReqST7DOC;MgtvK>Z~bTxow&ae*syT*73l1AJsk^@{2Xe(FF zu{FoXHdagZ?;+&W+WJ%81XX40`C#kYFsm(@_o*O%(6VHMJnHD^)$@rKJ(oDz!r)AqaNTgbH{Wq8d@?4-8iU z0^#cIMHjBP00)!AhP0XD@=<0R=PN0S=m|`Si_h$2aoWF@m6b&@&g^7*2OW$|_>plt zVizuY7ep&2AEc$E7=aWFY2}^h51%!)n~D_GY#&|+E;u9!k_$XkQDI?dK!_0APojo%qn~d`sP0BL6k}l%{e)QXRo*Ms z+nWl7sUU=DTwkB8GPHFxH!n^ohOQZNB_kvEl@S-oDa{avKZ~SpmCU0C3lV30d%m08 z`w2|8Xx?*pkb~KD*inhas7j1eH3pG4i6?WFv3%w;5T}Iz+h0F3{y~-9hm<)u2ATsa zVUqIzqu2W+}(TTlCER&TOkOmqJ zE>`q6nN-+p2K&mdw^&IYVGo}+E>T8?*QdarLxTn*VyWRGlm(B3g2iwEp4l3P+5lKK z^-Z74gJ}#>K6UqMda=Le^6?0aje0EQHuIpE5wizMDiS26Boe?Q<-j6Op)9Nl6G$tV znt)pMY8qnE(5{yz<*CP_wOjXh1|nKJ28WEKbF^G1ZyaeiJE$otu7}j3Y|Dr~{__Sz zD7T_Q*5d`pWqbY76EI1(_f)cvTD-@Imv048RnhN3B5gSN)VRf1DX_ev;))yziW6*E z0z`@lv)}SHL@ia1KjlrSXtGQfD4-OZz#DQP$E?sD1P^@dz(41RyGT;lt=H z7qdbM_T^C_HYQ1xaIV4^N=-jPDJ5>D?h)7x4sW0mfObI9*74&9eD>3!DFI?q=umr^ zSX)iqpjgg^ef?N}Hmz33UTXO~tqBM^SJn$&at-v}@hI!z&O9aPGWZG6nqSl_i)pCr z(A!h)*m0I?i;=`id?1(_68RK(xI2NBp$>W(~2$scKQcy(ryrZe8TPtt0Dh}qH!Kt+d^2di8SFTNzrFEdisFtZoP8FNuR<>P#=_B#cb*K4I?nIbc zQ|NILDDnqBOy<7OR<<^&?)pH#$Gq3;64);XOLUPN8wMHP*9((=E*sr%^)^6c4jovF zVvuNd`~`NhFJNZY#{(BF}pWOfJ4_G^m1U8P!v}hGZ(Pmu#iGKt{4B({&{jh*#`a|utt%FG1_D4&?DLk(9?La$R$`l76?FkhR=&E-w zx{-}C1c`#GSdQdL%xofT7%m|9h{T-7oE$>x8Cx*!T13HxK@~lD*B?nJ@bTsOq*L*AoD4ROX7tByri*;{7KTNhcq)Dol8Pc@3x9{B^K4?+zN zzScC(0yec?H|VOoQ$?kS8@7+>$&`un<5>S#(4ub@eD1QLYzWb-8Sl+^QU$*8g8Me{585Q)A=&m2BUJ zyC$Wwl2V=uE~g4iAdik|dX+)ek2h){B2+!pO+;$IJQZMdd0gl=F!{qzN|4K8E5zID zZaaAsFgDjhd9UEd%!%Ui@^`L(?cqQQ#mbx)1mJH$jD?V#Yn`8aA)yw+v~ZGH&RWBU zL$)J`X8i$ygygcgwl(IQ%QdQB&*^<@W3`#7KI|Hjm6Qy1>YbrB+>i_wLP1xA&A~b< z&M&V#-~^Q&zdU)veLGRzD;!QD_Tv;QP=vjd6^uUcK$(kPFAdiM^Kb4_{N7ErYzP*l z6uX+8543A>@6!qtZWmC3WG1&}G*XK8N^<&5-rvO{>z=u|x_Zia7u*O3Tmg5qt@xhn z+p`ylDGK}nS-42RXq&k?R?I^P@7r2i@gcPg5@>-y(WxTYp&x>B#W_ZC$$P^(zzB(3 zaqY!1U5n3tERa<)$~Tz#r+erG#U{A^{DnEBhyg?J4tS-TL_F$x-fYKhH@cqQ=u%}^ zsTpjRm>)g<5!2~3tE6VD=-$?x{CyF*6efOsdb=6@pgY=qu{VfA!~hMVbIZ%iZd=mzVhjMRKBUx>MTcgXHhDFMpSo4i+WKVwA&0Paj7_1P2m1 zLkS4hWJ9_Mev9VCm8JS|UA*!i8N<(+vAJU|tEV=6}9|cwDkl=sV!j5EP{CwjKyc zcbPuifH2htm^@e6wj{1@%QTbZS`E6{s_kJ$B|K^eht~y|cKOy?&j%gPh^{N{#gk{= zkgN}|kRl-|8DRJegFVducq%+sIqLh1eFUgdj6iyn0Vo(mR6txcj^G-YT!#ZV3B91< zqM~Qr6`9}9hC-M0CSi%KEU>e)=T%oT?Go6D%4Bk5pi#*D2D&&t1_y5BMzFvm@kh6{ zS9$hJ4VhiM${cthP-bewD;g6JwnT;@tkIKyfOgBA><6x ze<};`1qXi)fgD??yw~gO+ipsz-!6WK|Ni+FY2w8r;j&6JJ5c53=Ki6NFEuTQE{$-w zVp3)c6cBLE0I(IHp<7^Shw~gab~#5EnKvHR4B4IaU>Snt0mLZ8>*M8cKso_DCHfGW z18NS$RR$BM0GbbI=_y5_v{kK>XAz};NLI=Dm&-YnOpV4MaRT65BSLKA!vtLwl`S{Z z2{UwH*0QILIqd~;thhmg^JYH`bGc`vnlohV1hSrKO!GWCr}|BUEYkk-{j{QWu*THs z!{DF*g6}!s9;)`bbAVDyUj_d3^|cG&<9V&Eyw=~8^z>G3qpI<}g%pe;e`O;ee6r}Z zj#3#gXH^4;08j8$dEp5JW*;DfhXtqcc+dMu8$q7=eBTTY53d@~$QHjlHuChMr9m-` zjCn;v96&CC2%-(rvhICPAUMV~%b$Duucf#cuEq5PlGHwrvK&cctFH>zV82Jm(>^eE z$aON2&Z0WGy-JON#VHwM9o-64Yc1NlP4Gx?FD>5qk&(;?71gUX1^5o@n!xj>fZdXH zgK?{=GRUfcpsCscn){vBnd{y!ir9ZKsqbH*Zvyb@2I?-O{f5YP8X*uC{?kb&M6rxd z14?k5R8HP?DeNc$(Wci(I+5^iD>$|Ii~)qy-|sp85~;odT4&9oE;wKD2tZ+PygWZ7 zqc}I(W#IjK&CMp3>|KDvn}U4?YChh`s)Zd?lG!%fJYJ%5{%fGdTbp% zEB`4IqU$m~UJ9;bNV1+Om^OlnvAO|Gw@W>d8tQ_e+vdThR<02{xBmlJRd#fGM_7Wn zazftPR(!WB*@)PZb98@Q)KKp!n)T|+< z!f)MFNo1?8>;So(+fmncfA5Fu?JN8im!r;xjwfs0vu?D1;G7N$dg@8UA>U+69(#S& zAdd5MO${*;^X=!@{Z5ej2>}clqvPf2#9M1cD5^K>Sp1%hapt#haiKq`6JQ zM@QxM(ui7P(NiC0E3_siC*!b6yq>P+K)jA1;5(L&>=ekuc@a}VRwalAX*<~FO1{mZ zzaV=l{mtWVHAU;`+Fa>rD>uJvjRwn8c}U2y8HEScoTpfJ7&>MK3xoDE%6ySh@~`BE z0oh!jMu!c7oL(aembTriQ4k7m9nJ>r58|)#1B0#n%df#$`buBB`0C1oEO3@rP!g_E zcamqTqYZ=(=3Cua=vxk%y+EX5cwwvAe2PN6xqnVL2(&eI?`_WcmQSf zwwJ>WWEM?+y(-n$pe<_$uK*l$i8O@j42`im62&fMPyP~grEl_qo& zJ%3Bogwv!Qw!XepiGCU*Rl6Jh+xEwAaqtC0c(S`~re*)j0!-yt;>JAI&&j|CqvqaV zB52N$ZK5AU$;QPaAXEvX)3><}vUq&#YbIQ0qyV0ZX03@n$5!*{=zVzg zJ7IvM2?sef0y#!wHO~l|JS4zdTRZg(Nqs?%&2)Sd0J2^%Fhk%b*3Je@D9%mSP9)}> z`-am&L}D{m{G&ae7Lb)}nzk|FQc)lt2=6HO0Ue~Lg4q`ZN2q~^-rU>_$v8n$G9cXx zSzwTqN$QwxyK_xzk%!b#J*Rj2+&V~#EcgZ#$2WX;(TSm}R09!PV0#+gU+!V^d9Z@> zAd%ouRW4xg;27I=rzZ&Kf}ENtxH}|!2R1zf-GDdhR1k^AuNyS=3)v@c3_gs4m9vK2 zZA#WO&RHz4V35a24%@AD!$5TJH^v8DuI^597n#z+pq^1R3ZCc(SQUbmp}8q?knar@OD#{wegJVpYj3pbIgLFguX+k`9Jn z%IuxXmFGNib>DQKpcYFgwQrwiv{oxc{y=#95iXMV--20@|Lt*)Q&}f8r>d_t?gUiI zVOuKHrBUOwdpZ>BRDgMn`H0v#v;*u!0KCze(o;>8?3AzhYqjYl5(DgGhjl9d0ViRF zZq|`J)-TL_L9xCzY4y#9``mRRuiutRHzQ@vAR@?n!N{q&^?fQsV^&ox-*t+NusZ+A z^2v4D8F69~LEE7%KJ^U+%=1QK$K_`E4CU271xWa0Ikhi&G zUJCG!fp!jY^uj%MJ%g0&M3;Cy3{g-uq0zy8o3W~Ha=hJsSpz@BXBr1IzESKYtJ2}ctwA92lz;ppr$n`iaF!8RZuY37$b0$h&VPRJ%8k7yH9={rj@ua;>K$5| zIcj`Bs&7)v7Dr=rpff|A3Ma4iwRe~)+p83>gb{Q+pQ?eOdT`_-isCLRQGlWlP9kOY zN<{Z7_PDbeW~@rg*Gxd7|IJzVpRHsjE@-|BK7qeUL2T^*ks-Dy?8QNzGe6tk!gS33Q`JPCLC#ZTN@yPt$?8;YkyiXgBMpH=xS+a?9txuRstul*x)fvX|HcU?j zxINbilj7D9Dbc#-GIL@>E8cqX3H&;6fuCg}#r7BCU=idWL(W3xlz0s&V{J1^ExUIw zXgEt>3wNAJ4R>5fHq5ao;I~eiq`Ouk5z7kh29PB?#11%KtHPq;VLe;byqQlFi&ufE zy8M9ZXS~A{FNN^#_jC-StQj{ggOK*t3vrRKV?d?XXC9gGzhtX8P_jy5-8Dsu1h15Q z7=*GEu$wEjw%+)fr;Ixh6qWp8{KxIOYvPAWuzu&}f!{rlZ*%H8aL~Y`_1E}QI`i%f zwPIULtgEKa&?Kp4OE=@>FJux{*(0dYk!kJ14uTyNU|?(de_qv%6sFi4qZrvZsX-vNl&Oj2nd;0M@szsB*ppBs&at?iEc)&f zzZ3tkaEHSqmy(p{YlQRRS}-4lZA#MjA1A3p=cFYXA@`24c*v9wyJSWYoty_n*Uz_b zl(tbG#>~NU2e*DM77SsRNv$jhyjucP$Bt|Bt4tjB2ZEx@eK&gcf&qclRK{3Y6jw zE$;5_1b26r;_mKRpcHqv;$QlF>;01-cV%T|&Y9VJ&&)YBYb8;wq?)qz}sdwcE@`OJZ)Cq$g~vZ#|r!j-Gh5JhK(oc9W#*swSwS>pLd7 zql3kBm=->?Sbu+URsT@@kz+$h@W!2xUL(yiv;5iQYP4E$dDWwcVeQsjT;t1DB#!vK zC-s$?hjsM@ovx0zZtGl}MKZ7W%Vg@4K0&f4RYy%bxoH={Zko%uQ#?^O07WKP~(2G0Y;>+Vi zlPxoFvei5V7-5xT{$20+@e(Z^8)sH9**g8@RM7N}D@E`@E|z2iq~3#&U~SlexIyvQLY`0y;ckRbrSHK$@??3 zdV9)`?22jz$#&}T;WxPg{ln%-7^OR2Qw8odPLv=Rm|I=`4`VlEV*88g;0%RvtQOk#}r8`0~krZ8m?Q)nJN08*@crp0}wa9}HO-zbd zSmS>l(Yp|~%)4KNTuBflr8F^Lwlu*36>7M$n} zqSK2ne#W&p1MRe*BKUyH9Zh{$B)Ym74jL-T*6|wb#keoa z7dXW)!wT8a{oK*Az8pn_q7A+{=X-^Nv!6Uub^c6zPO#F)NJ>H(9fKmHhlQty4=%=Y zEZY5YED8(w1TBVy(PM5`|HnJ}hJ^g1NxCxjhu$mot(0wQiu0D%w)_aC+wl=S(GW>! zVD>U+O6#~2p}ZMv8fZ>jPF@bvkPJxv^F~8{(D3!g9{8|^oQf3dLjfgM32T^}343H{ z^}!}IjN5-xmi`7+h9L=%V#mnN&cYk+dVFJa8uhL(Z&98mD7Jjq(A%earu}#)x!-q836~#>lwnP= zPVt>p$CAv*c(Ve@-V&cvjdjOu)l5M}-G1oY@(nX=tZa_U(MTLrTi)qr@!5EhzWje{ zW)l7q7A}B-pfaPnJm39^u5PLYh*ZEzP8MHEOFnAv^Ft0n+XlJbH{qV;8YDvrXnK@% zd}HR?DYR*P=Xq2&k|`-NdyPvMH)Dl-D+woIFrTg7#G{Pfq2wD&zC(E_U1lzBh(Dy$ zu(z-TNvnsaTAY0SpwdYHO~o=nOp73W)fH1%_#VE`TBU4$tRbfw6q50^0}%<19ekX+ zu?!tYPYY^@?{LJtkzRyvg-4!u&Q=i1%uO9t*z%#Kt`rJWH6td++z$9YdbFB857Q2o z=^)ENN@4`&KU>mWACSaeK%F#5f9KrmnSB&|WY+m;;8SJkxAu&;UCR zt7^WzD!5I5o{~N?s`m0ZK`l(mLAw}E*(#KBBrT1Mth3J zB96QqKrsug#%(_K8BVG^qls7^1}sHzzy{EFG65PxNCEE~*v?LTyHFHuZU89;X+9g? zq=fn|;OxL26Q?jO`;?zdh>Ns09DegG1u?>68`G6lBN&I&59J?p_>mFu#baXktn%?) z><&nBzGAR#36lY(28u#zZ)V_d1{?eB;&HU2^ESa-skQAYvWPUFOzJUt&tjEG`bCl$z(%#*3faRjDE+ zh)ewc@DaWrk>a|#<^a->up5C@d1WX4%$yT5?N&_sxzE0a1TNGilpZn)MGF0OpcR>585EZNukD3Qj#+=^YD}qGd8ZcxAsC_IJA0Ia&Q|dy(%}A+Tb{S&oLm8 z-)w9`1UcU*tKm9eLXdigDL=i>anD3uO|p-So(`G}DUJo=N`H(ISRBAv-?y{9C4}tc ziZ02ib(rd;A6S|4<5lIMHX28QL0f(b;zQKoG4V|_&62Jy5D9(hV45lEZgnp5R(2`eW zE-*&Ny#9+~3*WFRJ?^V)IZ}Eu`>3)TJ{;G;f>k#L(NdV6l1q@Js1p;Ad4e(z`qa*{ zUzGjiaP(c44rooA%85yp1SPN`o0g#3zQ!6%V>vYw1mYt4avaVyBRc|&=t$*;&VvLc znR93FIgLX;4PD?}x23?q_sq;5avJ>SO}$*jWh-@QrEH|0ssNHg-82FOxi;i1DUk=cZKw`0~o}WhcnO$W$XPl?--D`;iovB_~h@nI2~$Frkr9bt?jY0682w>hIwFfXi-jJcn&y-g*4FXtxj2USA(&j}Jk_pfrir3;KFxg>_G((Pb&w#@rV zBQjGhnl2E_XwoH^X06pwh)T}uV$@>lG-xWw!-mU(Wnx@-nj zReeO3x@IJHT!Y5N=wbG#zEFw;-<;W_bAC z%&{=_U=TJo0v?cf{(?-vik#C7oLdM;Sa4^5uhkMXJ6_4oMk(${g#s^2M)QJh@Bc_v zezv~SYaBKT!$-Qs|DZ6x^a%qRg9kMzp7XVboY)@95OThfuj+H{b=lWt6@278a;%{^ zSzL)oa@=n^LG^ZFZ7$kpq+D=TziQ(XU97hAiWHbLy;hKs6>udPCjgJEU{D=WVOT&> zH7ibVOzRO1kR62sXa=57h~907%-owuOk=flp!l@K`bfD5IN`TVh?QqTl7&Dr^gove zgal+-obrT!hl%6(evL9Yqr%%;`~};li|y>Fw=mU2T!9mc%pyv5hL86j1VY_U5SIjq z54Sm2Nk_I*EyfjMEqprZoz14jZ!fSoJrZB%#9+t5Ew;q{jBE@pHq1whV&jVP4^e50 zaZr;{`5O8OSxo+1j{xhM&ya-DU})zsoMtBP$RZ#_0_hK{(aQ3CBy4f`FG(0CR>MR5 zzP6b7qCwoG7Zm0g-b8?eJn;{@#R2ZUxF>(WEUN(>CAFG4mZWqX<%b!ogjg|m##GPB zgSy|%@n2FWcI&EgEsF0llG*1|PklYZy*>GDRI$c~cd;S7UBcSP=eQ4N%HKl=58~1} z;Gm{)QdHIbbCQy3MTAw@Mbt%ASf9G2K!C8tT7{;lgs*EdKsivooM1-uP#q0mo9Loh?e$as`)lKnD3KggI_)lS%o>)jb+5$|W_Cxx4m6mHK6by7^12w)O7c{~Z4N@VdB*9Rb z3U@^_8dCdJ+uS-i7qpjr+&U-DEr5+SgQ@7l|ILPK#e;P?;}>r_$XiuUi2Wf&TbQV= z$e~ac$$&C;G|@P<*f|C5 zqyj^XK2TDLLJ|B2LZo{_R#5WP-a7}r8%XjuFO5T6>hDn$w&=OM$ zyhaRiOIt*3`^;~h3JR)-%rpU87Bn#rPCIEx_)D(oD@&h3i;q&jX~m>b&@1E5CeX`8 z(9YB;ipPD?nMi!3F?4W-m&LWo-=?Gj;Yd+3rj^q*mNOmd;Dg0|7=!!@;dqn&iMtZG zj!~rN=&HYR50+6Kyo&s%gg0Duiu|fMST<9$cy+a5A=U9pVIMXYRJ$$H`)eo%&QYm! zaTx!}i-g_xjc~nF3xSBI80ti_sD{Ylt-k#5)EN38`Z4?bN+S7jVVJ&nm|d^U{-_6| z_bBc!>1Q+fXMan%{14D!Yj}oc<5}4X%3(NUG;%2k>&;)jnq^bYipntoF(LeFkAVY{ z?m>(kos^(+0F%?}h}jb-gpY{H3MvS{d|l5)S58RGHAJ_o|Bu8x05O?gZ9;YEpeZQh zN~w2IDkPNXNvCWx+-MQyM!K@YkTq3RBddEkRhC`gNScVm*_;?76?#hg)L5$vvG#MZ zqVU;KC_*OSZpoq8DARocl#hVJQg4r4}~F%8V|q~OK}ng4FHu-Z6&^Fth^UnAhR2$JKQMA3DqHn875#Qjna@p z(osmkp$8bPFoL9C|2reojs##cM0OK9zpAd3ZtlcnT2ID~9dM%~%S(ba&Cv(B&fULj z3`2Cq?B%u%g(exhbGxn5(qX}G7FzB%<}gu~9%c9FR!EJe20Ayezrnd+)lP?cTLN3yPGRv^lQs&9J zEj+^QH*4m8PEfq6d5bM_JoegdzwAd&A7KtKOv|e(3>fRr7YWu$-X0(dA77o%SYjrn zH%Ny%3!qYG{%eJrXn#R&J}k`xYwk7?Y*aiFnvhxuz&YUQW|mUEcP8#1O8$Vd7-8pr z<)p)TNSKI19MqeXl*;QxT!{nZrOPvptaLguR*CTz-t&AHC&_ZcMb^5Q(z}&}Wo-gT z3`HSq@7V8Wb5Gzd24pXN>X&bqD9+H zhYdAQR#u`<)ZvK@Dtc*I5d`EewJItmB^WifNDiO+7XRtq7V7k9wC_A1rgh*RV768w zM@ljJ{8wQg3K~QWhb#wyGWxRtI)8!Da5Dx5xdceBSS_fPqjD-N%#l0hd54lnfe488 z`QTmSuVL?iL`+@#uULbds}BljsJ(YoH_Ez#SmB1IrNmmOOghkfbak{iBDMo);uk)1 zme>4rhA^72xB#PLr1kF+;R_D+v$*LZ-=%@(9KyW619Q&cxrt&8-%@*1d0a|O-!K7* zylD;wd=o>X7jSeON|_aOy9wkfnzCZ{PZfoU0Dfw&V1apXx_Bg#Lx~oDQ_9kVs=~i5 zqm+cG{LCO)0AHTzu5(H^@cV&*7!wfR*=jE^9xXmM$U4AC7kkbrXrfRREch8z>~eA? zw6f}fC@)XF{V{KzwKyM(NBM6|Gx_F_GyALDJgNOLdp zcRdK;ZCHDUPD8;A26yyO(}&#YZiX}!8}rWn3ei7Bcys3rSuJ3&d-^NqSsW{?ye&QU zPT4ylWheiHRsInK*&_Kb3e#PTc zdCaJVSm-Xpc|=(P->$%I^K(E|Ms*BG`=~wQ^prK@v_n*dPLK3J0Nd2Q3T*VF+G~fh;9TV&c~yH72E}P9PhJN19M1`taQB z6@oj_mMK{xk|XhxF6qW*;^7)JOSgLi7PIK`o+E5}CaFQzg!y5}dhtHerm`>S~ocNXHy$*;dW3C=gb!6KN@C(c?ZUoyYp_6ZHAi6$?%2TR#>gVNJ zvPzH*$VXr@(1~@l;1*F8g(arI4pLQ*d!{%SSlp8$Jz^|ivm_`vu#lxf#W)vOYf}7* z;o0eZ<<}GV6)A-sYIL94J8C&nYyL8Tij6d1Rz5O{tfrDkowJM21T+F0fa+uLgrf?- z+V;7ljeraP!^a>?I$lMbG;Hy_u-2dNMfZliWi^)Jn zzVqj)X_kuLi>}kR>q0!Num*m3mrzInxwH{ri&3zJduNl^!1)uRCk5qTHQ^7L%Fd>} z4Ma=lmHLNT(@@jV9~WB^$+WZVbgJ7_SmcNpQ1+NSW*;1CGoiN{{I(4l8LO!)=iA^WSfN;F&7ylwGNw#YOinhcl`3 zva>(KKhW(BtRkM#2n)EqSb2NcQxs>j)Fxd27}c95Fp@@g!)>57$bVc&S+=NT#IC9& zZ6=UxvXF+;t!WTu7xye392j9WYYcx0CM%VPBFKv@sqMhy8uYEMuK&Aa$~--J)nFcM zJK^+rj;(e|`~wFncwsUD?t4Uz8Woa}YGt`NGl+`tY$ufYM^>x5oXoSEI#m#WJ@;zH zaL1-fVEO<-zjw5Xw5a|9r2-1_iP4V4OBTs?H72*(csIs`6N*+M5$4EDl!P91hCoGY zbnUM7?dwV9&0Yn|++0MCmEgo{fhTX*1!>jQPH(UE?iAfP`WRv6;S{0mx*JmGirDm9 z_jIP4Yjs?ucM{ba=8RudPj4Z6fCIwt_m$IFX|JagAfcJ}9x z@b!~e5}O_O=-n%3lh;J_EPY9s$%5V3bLKVDbv~jobbGi8IcdzeXc%P8dJVe`@dBD6=TlRtySkPdS>eM4h>Z?)1S2hha2_&_6FvfmL zh3jf+?NK>MfH9#>L&++fBxA?X8o`kUKzYq{7&g^4KXq z?VxWRk@G#%(CYvWT~Q=J(y(%H5~26_o^iA5O)$DO$gM6g_3~x)j)kV?Ci~vJdna4r zSI07bv!rtKM0dGf0p<)VBbp~^>56!skX7m1BhLiRgwiLNL;XI2Dz;e1KY= zKUlRq^^2UGscW4SZ-8^g4{QyY(Mc^@QYna!;AYCn#L}GC`An?Dhaeg`I?PZyp zgC|kd9`P*=G8!`Zu|oG-0#m8X;UwDdo~2gU)%UW;4GZkWAcKv?ZpS2^Nf;|VZy%jfj$aruf-jpIkp^2+-5 z704Ka`u2q}o1%2&euP_UiUEQM45m5VU6!yw+%!a=@i#S6%^7x8TYh$Qr2(g<%{Q* zTGRx%H7A9pU+Ul*o4>HAt3G9y$w`%+R{xX}D?4Rw{DZ`n!qiIOQ04%0PS%*CP2;#( zC=rfH&eQ6ZxE(&JMtjhwLYqKGslhiohe@nK9>x9gR#al?#M#Yz%R78e^5-@_Hg}tB z`QAajP*Z4Bcw_IT!{b~_V@fZ#YeuROp)pz=8|fGjM1@_);htuZQN485L`C|fJfXb7 zK!cT;Zq%l!g;`MMsxh-{TkGJS{Iv!sBuXwr`hezD=qx{deHPSeea!^a$Q&lEgj^uL0qwrGLKNmN+TN`<41=Kj|zARHaagrbBf)wsIv-d zqiayz5U(apUIOW!E??6c%BP(;72tWFZj8Rqgfq?_1N{`0fFgbXMnOf;Acq>&AU1mre8R1)$ zLe?$|7t7_yh_laiYh=g8Ur@{`aZ@+d$t-XYfWoaoMMeZhDKr9ZZ}9xSE7VDYDL@@# z`eCgpW?J#cL+0)Z;=RSa3N`eV2@EiE^lwg5cL}Y6f!IpU;2Cs+PJ`DXi;sd!PeUv^ zml%j$(-KriZFFrU6KdA2D3Pgt=OpT~gDn;OQN#Py9ygLcBgG;Yo}dWB!q& z7k@JHbNAQ`#8l_3rcOk>N8@!X{xuJEqCU!l^QTZVRL*-TEd^;jFF+nV^7x*q5!O%& z%dGd)hZ_mcmB&kBfi`KCFvTmtAF;VDKP(H{p-s=Y&}`dl?a7ZX!72N#oZUmlG_JpL zO?O<)cND$65RuY8%Y2^W$K5m5$*xyBXRzWA2I!x*j7b1zY8lOba{;%+G$2w}R@cBmZ ztHF<(e^~opYN}-T++TQQT!a;hqi!9KZugr%>+MwWo>4OxOjMRnrYVmj1k!Ju%WvXjE&@ z*&EA6K}*?W)ZZyyWUb>xGB2(d9py9EMT~U0#f7^hE5TrKasNDpT5aszy;KPYUo0)L z+QXEhxT)5VF$D*8b&XY`24rRW_K#MqnY-_;m;ZUd=@mWw7n==H*0sJHCitF_Ny)hTAI!aO3SQey_-?)SL&nIry3`VQ{3P- z`rF+>ViD4hn79@5>8ZQMqvSVP%xnHCePb6*DCgR<5!wgVitiMZ%e3%^Gk zBSlOuB)p7dE#Bkj2)wJm$(^A1dK`EQx=k09KEV+n^zNrj>%UV&Zd_yySq&?0CncpY zP(dEsNLz<1Poz1XvU99?(lxJ|DJ`$oiA2qk$=VVNI~D=BUy$M>Y>>uj3(vc8{^ld-e%n=Ji~R!!-}g_)Ea-X4MJ108D6jT?d%P5Nx9dxwp|D27UR}r2F0o3s-Eu1MG^eO zrllFY0Dz*5$~yZ}SiG{j`JQMuf1V(g#CpT2pgsix0fkJEVtTY~4rH{zqg0`>M=V*& z6a%@`$_j5*D8Bx1hn8ux&rbDOSX<9iD1KB-IcYPbm20<`h$_Zhg)Mf(%s5?VS0v&1 zfIFbAtY#$T_zs7liCXgQ$IHd^q@%?$MpX!XR6P>eAX6kDg!o`XfUL3bv3MqkU6zi} zVY=KKanI(}`pbPz=)e6TYQnmsJotsQ4E98RuICl}x^|&eDb^a!zT< zE&`|;?_+8mM=yKh)!()pZ%(tU*ykeFmACB(fDfAYYs39v1@SLl^vsyFOu;Int;L^i z`n$W3rRm$(D*u6CE^0`^TQ$-0>VAL`li%O#Y%Rkp+eOTh#NDld_sBrtYW>lPweso2 z7@?A$M??fV>6<;(~&uV*{JFS>QE@!7*YFDFME~gpjeR%DEJtAQIIS^nQn{pM$ zNFZl3A|HTj$O_AfIU5>dRMK}3@#VeV$mDm5<3JD=Z*@>bqbY75VyN*6k9TC4xy$M^ z)8*94>O87i*xI7}u^DmN{d3%nfQetnF-2E2JWE0{9+WJd&dl6?tI=Z;$WCVH@JRG2 z#|?H#;a73?8BQT84rxHv#ae&oGurjL;Fp8(Y5kq!7yLT*1tYQ;QdJB(34jCQtp6F0bJr(`iWAo>;>5${qMARnI^2*pfr6gQ`gx49J1ke3D?o+ z1E27;l4O!|SD~HJIw8$byAlkq3Kk!4odGxy+n&@2hH0?X9T4&OQ!2adn(+ef^`@i2 z7ajfV5#zPDP*V!H#C$U}?h83Vw?Tq0m$$tiXdpDQJ10GtX7SoBnbpB?ke~}IjV_62 z2Zs?SK0eteBa*uccZyOoU3)*NX<#jaiq$BR37Bs596Wqr&<~2{Dt*p@!-jg4xW(K2QvCuhx5lCWb&IpPY^{de6`Q z`KKRn6qO|~L2o&R0jUSJL-HI4TQm8?uvwNJzgUJ!*~xIyS6()sd~S3``|@1IpDFI! z+sp3nhdIXYz5SeMuj;}A&vG+n52@=k`zAK`Qd6BTg-Iz zW!{%4AtNJqN#6Me4{}=j`s6~tn)+eUg^`DmR}>GRDKM6Pg_nXymis_8boRT@R{dTM zc?$xzUJRSdW5+~y=Ki{1h&B7P}b{tZHgTiq`kB_Dq zL7&)=%q(Nl2rwm{LvKzntk5TP)6HLowJ``nVw#mT$%Siu(|j*i;bYDS@>OC_s|Uqh ze4L_dXd-`HiEhn`$DwRzr5SiRoGUTlvI5d;d*N(w8o#(8RH`b|d!|(Fa=S)W6TL?x zjSYMl3~|i)gM*zPU}U5#=%W=T+qfU@+BN1W{Vsoh$~Q$ZFA{|i8HRsQ{KnY5R!|6M zcRfYI>fnP4HBZy3L>;k?sXD?!}l@nHir*q zEV|t3ql1nUg6^Z-{OdK(Tg-aj47O=Pa+%A<&7VSD95(AVUef9XOVeT({Z`;| z>UwXJWtELBtA8Q0yA1-2mC^d>fVdMXr^ly>KI-#5OPv!u!G+#u?gz^Fq^^HNsBCHYH%Uzv;~RBX4~c5h3t8Y%3R87{sOnVJkNxKQm+iRDj%^Jj1C}5yM4kg+?_NTiHDx9Vx8vDgKh2~z8^Q=Uv0BUQ zx=khhCw_!ubVsY>ey_v7v2b?Vp^Q7ERA%nGfRq~F?42qhzx_R)?t#la7duLK#MMgv zdgq@~cP)or<#RPf2zjB}AGrR3@LtUpJhSAW+OZDM`x#_CWdhuOh(@Cc5p2;uB*d zc-8vvgcTPZ1DAI;NTTc2q${KwG>9$|rM=~198c;l>8oemyF7**7m)WGd=(nO%XPZ7 ze>C|n*JZ^}+i=9*94qY_{5bxj63_6IM!M1gEG~w`NsGHGG6w4rbMSlC>sdTh!c+SQ zKW{AlL$jQiSZ}+CH~zbM0+#FuRUl)OI^F;oM0efWXyF8^uC|+)9s}_*G1k8}fCN3o zU5KI`&rEKzzJ^`mw<3J5sFwVT3n0U-Gp>KYVF+(&^9tX);{u_)BbLO7h*J>Do!o7> zdw7C2l$PFJx8d~D&sH>lKfl@_2}bnP2a|rCuZhtUJwCYBO4=cCF}Mh^%ylVjdTfa& z_kuH++quSrWAbsYpa_6Tl7Y1yXBrwI9PpECGAJhJv5@w9F zFU!XKX)w4pj3|Uq%11JGbTZaxN2Ojxs1-NS=v#mqY3q{eCHYFcm40`EsU(Aby(+6Ji-&@0dbEZO*PiAQRrXNp@cCAdqt5VJ)S6Y&s_9fW zb6t_5gO||$b~b4AFaNTzHyYMv%q5~{uUzquQ$CN>_nTo9rB1=|Z3hAP1l~_PyS#xo zMTDtt%JyQ7#0H5ijRHO=^c;M+z(LB3VODOoJgJ2-I5|mN zv0Uz;lsfLTD|H%<5C?e{VZEd+ojepw<$%BU8nl9`f)Y@;xzPg7He(ot@Xid9!!z32 z)+`+#7I1BFJXE%l4+L82xQf0mnfrbVO8M3okM2^od}{0Xwc25?d9yA~9Qe9br77BJ zn_4C`|I+76=JiyOGW!i%hPov8>mD2e)e4?jRsfbeFOtli?2;EwTNiTZ-iDE(=gVd> z+&EtaA_O~n|54m;cm^mrB?GIOG|#hEM%JZPr!SY*?T0UwwX3&x@sSet^GgDDSC;Ru z6N5GOm5;bG_kt4$Xm85D>VLOjyCw|7%#&olDr(g1w)+Ne*Z-OjJ~|`Z=fdFPp~=E{@&-e3YH-JFXCLhv*U#Ff`7=`Ehqkou?*O1 z!=nZ8YeNRfOf5-#^hy4T9kYLRu@c_O`p&J0cW^lp>b9A8Q9zPe80~UI!}3O5kur)( z1!_(Vvt0sRX|ZYSU3^3~J$f0*ZglK~1Re5`&l=Tn*RB6M=qmv(|M8Z|M~u4QN04gD zG^DLyWDM%s_(J%Wn}->C@<()ywO5MScT7wl-LCcIq&YIkn`CoZ-%DXd$jI&S3|?T| zit*_7!G70R#qK7rWz~G6gErpvEU20olc&MT&?fPZokEOiy%}nhR9R*HniWp&mwRUI zoHZSMr}T}z2IkG*QqgMag0+PP;-45R`anX;>U~G&gNh4HzqGchRyBDSpHyN7tA zc_1Q*qJc>^hU*;ULyYE2rr8iTZf2M1XU-7VTH)vc`VBpm$*!( zP(II?ez?za#`NnaS^w_uzsWj$8Sp4anoYo!S@MoK0Gd#F*>V7Xz-E+EOq%PAzV^iR z)iZK~j*)C?+XZd+<#1ca-zPzalMRD7%5n9 z_>`NKM%Z)=klbO-0AisFLDla4UcJWxwwDjLu~jw2WUE*GUofXWdoXD<*OfgTbmgBU zoFH?SH|Ua3-ykB-;Z$O8R*OPSBaim$69!wyt5Yro@K63wDCiMMNkKJ%!2`(zgTsoL zL{SNMj8lWsBXm)MB5Q5x1>A=3$NS88+$-C#is`7E#%Ld+6qBqq6j#YlE&eQ06M8Ku zqwn)!_TANQa#L37d49av_s}r62m@Py>qE=WuiQVyfRV) z<|_~kgx=25{hHS>Hha#^+v1u!jP{hj&FEs9bqsrP21W15yT>IVpxi z5X=l>YF1&MhB&HwuhTgj3cgcM95t>il?9wpzNWwR(siBevXb!S{T+&Q zTqTIz7$G`2wnvWm7#E$dAaO)oL`A=|kZony zdc{wHLlXqiOq2!_6JXCdMP~KsSlX;o zJLQx2H~MG_Z)(cXAJ5fS;oN_VfOChh?!xn+C&F*C_0#OAaSbS&e;t6pO_~gdm8i4-KH|9 zyR6iQ+foiEpP`2iWF);RuAp)#MoCT8#A>PRxG}i7%PHV^?9W*QxZEw=Dq{tH_=WjjqEsOz zhkvC=R1Kf@U zVt<;>356$0gl{(5bb%&cx$EKdJ@FKPL^RCFkBx~c3Oz9-vn13IvXc4D$hf|6WRO~E zK3uK%=+WKT@ker;JP17g%gJpbNBxSj_X0e?zqdCKvpPJ$BpR7*wyJvr&ZE7N(B25| z*GV+3wzr;XD;z`TTgKH?uR9==%iFb_l6Jy;v8Aj~@SF56_}(ii+K+T|ObU^{&w&Px zapq&%f}e!?AgFlLv{Km_@Ylp^ zca^@qe09i{4R9jS6(|lKAOKQc-l%x z+)z{{A?0O)Hb)P!p<>rjvFh@8?bdDWdWPZeQA&UVk-X2sO^CS7FaqEHpce66_I~TF z3OuRo-$Z#;2Q=$`%Qowy)zo_H)2Y=Z!GY(!>{NTXLcrmg-+Eg2IR14-ACXhZgp&C) z^yonDie9cb{dOonaXM0b=Jrx?7$@!vM3X@Fs%bT%nTc*!&gbWP`$nL^3pKUr$3^V* z!<0(nd!ia9-^c5OO#CNkG=+gpQj0nf5z4(LYA_EM$Eg+t7 z($!mZ`3^r=Kgu4c*XEb@Q|%F6Wb?&^d?qUO7tiG8V?jELpu3Q_VeYF-=-%}}CoU_2 z5u<+ujGmMVvBJ|-q>+PNeV+P&>MHktyQO#2F{h(IeQ8p>^(Og6h)mIcun*73T}R zx2NG>f_K|G+zv9P_B5*&*$PtO;-8h!zEIw|-1W%SZpLjPGyM})->?2F$eLBztziKj z6}4K~;9`H+IK|wysCQ&giwq-`jh7rytgb~(Pj~b=oshYJPIqSx>BjV74h76-JhDDQ zuEkpSaUmLhSAGE5M501b3kj29Z51sArY@%Zg=5;zEg7@LTM{I-=Ke-gQNbvLbFquc zF&dOzWN|ZeSw5S&7y^$HIaCWb!JlTO8l)10>CYBKA;(J=QD-zmYxnr}2_5zEfKs10 z%DjlRX|YA~0iUiAArZBFKFJcc=Er0&qy$fquo$222e)>|bn|@M?PjlNH$K#Dx{Y#;glLcl1G~&Z+XFDBU?ukDZiT z5s21+pR{JK>qeDY1;jF?yv5Z)vn%&{75s+3DGv+f1%Q8@+WUWkLS1Ud7{7T``}c zQMJf<-YGqzV)ogme->#S1_v%Z?%ahI0NRz#_Dc5kw_@KLn9+X=fC^E?AVQMy$WZX1O>_5FRLeZNdKs(-CnV=`YS)CK3N zz_5ac1ApI*oxoQ-cPw<|xZP0+Pn8BHT0Q$)VmB4S>2b%OgD=~&4*q_5Cg}J+#hzyr z!|Cea;1=;P$d)T+iGnX_EZHt&^HBBD9BHcjLFGd@RNc{_O$tp7%gsAeW!>d75AWj= zxyX}0X4l0nt4ba0CW_YxRPHL23zoH8RR!O*MW9E}iQh9Vm8wM`U1M)aBq>#|10o;u z8cS>%L#n($e5cCj+yBw@jp1>%-`8o-*tU~N(y+0enb@{%r?G9@jT<{@Y&TZp#6LK0rse zDivwLT7^UKc)o~b!mPz>Fk@Z=nKs@s0WQUCvt@%m$vx5;s!de1q^yHr2b*l}J;1g! zTlag{6dAn(P;n9QJW9vNpYw0oKWyJ<+x;?Kr~t zhZfY5`bP~Ie*e-yz@cv|0Bys3(`}vt;KIrfm9y>7O;$)3nRFRje`{>s-lKL&^U2yH z%C>bbbKek!gAWTqS@T{eBjlEF%p6*_+~8pE%WEvZS1%rp493iffiTn5Rd~9eVZOfY z6`ZIjcKetg8R2pH*~6hRtsXF(N==}DN)Y#BbO0oB4wo7Yp)ReK0%0l+2_aHlRf1%? z(LAvsLR>586)KRw;h>fxZt<#aIv=KV=6h-HXY3TF@Ub8vpO4q-1XvT5!lJ`Cm%RNu zU<*kNBXVl{;xj`!Ttzp`K(!=bwyFHAlG)+^rcmL03$BK~fvumG6}FEh!Lz}j`!6X4 z{J2l_f(I7lPXEa44>gX)K}Xz9rit~elR^Qb2N)j^7MW<}c-a&KoSqg7yd z)hEnuF}v4vDp=g@8#A(G5WK&m=za5XVL$1IT8K6LqyEvFRtlSP5C2mx=E_>f<*fc| zEZ|dTDzJEr@!*sz^dQizuYvAt;BrAY7TdZxceEtgCCILy*G$#2ck^&6lL`0G@G&lI zkD)571nKBjSDO%038?Hgh}FZGnb6@X-5OS{Y zb-seSMV(hoY{#HW1Zdm{em!KGcT( zU7Jcy=UN7@c8Cby#_4h&O(9=z??}iu_kPgv5Eu*qn}ps$crsx; zae_C*I)HR2`$d!@Q}_*)M}q7al`Y8pf*vWKXrh9lg#}f9fIWkA`T2mk$?M_FXR=pL3NZPTGN}^aN9BpYOmWOhkMV%Q z<>fd7$E>e;bm@Qil~0mV{-UnDxB1E=y%aW`ngEfOlw|yGNq*7Jxbwu0vQUBur&by> zu7U>SFW8n?Y=i$sn?*}t5MCjcmU4I6dVVaC$dph=S$;vA5SLwd>Slwc)zDEOv@fMzU z#OG+W52CZ*R&uNjI@3RVKilW@r}Q6*m)q|UBU0tSfH=I@zFCn4bTJ(yVrr|7s*o1E zHDR5C;tTWtwC01 zYu&2WS-(zGLiPtqpkAlPwFZfd=SirScuejsRgx`^R%&-L?T=)qr`_MXF%2Xt&MrkE z;j#|;JCopnd5b1CmCmYN%bVRq+}8C4aZtGiD)WW?F(gH_bo68Fdb!A$zUR@6I-krR z(+oW^*fx*dL|qLMcNW3V`5T+2BLry>3*Df(hzZ$m=+mdTYJ={f>ACcw!7d)xu$gMV zXwq2~o->4X=~)bj*c}V?PXPmt?ZY`@TD%I5S*E{g(Zg{gta$01#=5#epot$58MKL0{z0JA!_wTT@nFcnu+aKd@g3boHz1Jh| zMT1x=p$%kOz^1Et<@Dru)OIiV(K?GC(RzDt=plV|K$eh+PyX8?E zlvyCr9o)d-=RxN!19v$aX7yL9`*`S_@PL-((bdv~~b&G8=$IVpBKB;q;O zR5hgzW3@z838xcK2hu9rEP7Q^h;*ceJTJEd^gpzp)M2WO$5FGav#g?o>GF$Mpyk_B zSELw}#b*=L%flDl!T7g+38ooZE!3>s{cklP(4JNm6TaIVIXybGZ+d0D>qMrY2ka$6 z^R%=?hR)36OFO+R24(}7=lAknTF8ZrU4?GcJTEVDMOn@#=vfMsynY^~F3aODQ!Xjc zc8||xq+viWce7NxrT?HH96L;p!aKV9HyVRGxA5HBPm7HwR6tVI7T?xyLs6Xj~qF5Okh+*R^D@q|^yXzJnss zB?UMaq}M^4eocvWgmMwU=YQ`8Jn#!nqvrk5?P)nI7*OzK zhGDrTNW9K2E2rNBB)_5HJ0`$}!>A8|Np z5@|Q3ADmNV+LPHUBa@|iL>uQLC!@RLe~cI{IyMx328g-w=Gzrhs2;zTT^x-va+sxO;E7hc^;LCTOFEGeHCbsS(3tVd+YpkYAp>_&!lW%7|QtpLQ?X&tQU;BO57?ExN#unDs zYR4^ZQD|^0cR{P1$xq0O+lp4k)f{RNFnXmG?Y*$-PZ%KS*hRRQy?M;_g(ZOEaCg?{ z3H3z!DoEt1YNB@-v6&$!(;JSGUQO1!2TDWX1soh(= z@dy=*jAjdfP6u>-9b$7ft5~O*LTJ4`2(4lY^&SY@AHSLXZd=<&pbk04A!ykEcsSb} z%lGn6cj)d203^HIic3&SQ2B@$#%I%VyK3~pn=4PYdx~+cc(gVLf-z2R zGo!%+kEYp0FW@nOZ5~uw?S%hlHzqp)E@-N?Xf*R zf}NAMY$8j+(JOJrT!Jl+8>5ZLOE~qzwd}9R{ch5RG^hk$Vn+XZyUenYU6dFQ!bC*0 z|KS}NN%zlNTcLs-Mp@|Vj|fkQ11S%cWYbg9XpVdxr%6>m>Tokr<3YO_d0h z$X>J2P{fd^6Zb8rBtIf#H0_nY;SEJ}8BkS8@es$gCs;iQOQlEQb z|6uZu8Q=aY2gZXG%ugDV&+CEcSHIEn#$LH>i6D{~cm7yC7En z4ZPjVWhLZUTj$u@)6`Wh5ozo3OdFU3uR*;Uu^muk({XNmPOkAa;l9UuVixRtmcEOi zvyax{{+amgeJh2NR}*L*XL?WY*I?!ia$)b0ji({L1q9~mLIM$JQDis1)$5^B>t8Dd z#ZkDHoJr9&Ma|Opiz8raJlfPgvUtlhU^wwk`ErF z8SWY@$sS%DTXOSrO#V@f&VO2!dH2g$kl=W5 zOvqF8mG}zo$(_lGMXQbT)DD^1J-D}Hfm7P5~HBQyumh!9OgJobKnY|Hw z$!7isHcW2icrR}6=6>_#pR_x=b#W>FdzoV|h{Z*httau^m!zxX8T~%>Y859AoL$8Q zH+X#oRx=i_q(4=WpkpC_Lyz!sUxfVV2A`$bD=K!5ZSKtUr-690T3kFyi3wzA$fWNA zjUt%!cw97>C?X{+XJjm5El(XuSwbQrAbEnWT&IOsv7F$2mS&gd`VqazL1{C6uB{EU9-Jy0a2#VHoVghTlIT`M5@T-fArKHq`CBsT;>Z!kN)ae(G zIH$MFPCN{TLPID*WK!(kO(GEn$tq;t(NSs~`p?LHw}1*(Riq8&P3`|P{Pb@uLSsu? z+K4I?Q%H=&OKk|1Yr29~1oOCYf~dT{{jc;!BSZlk(TN@NwuCEU+YNT&^9HFRf@1~D4MNTJ-YjuG=Hu_>jWEMw} zB(Yk2Bmr_!m_aQ%$LVVM+^_tyclFq>mHM>SoRI`m)m>Y%LY3y}YTY1J2QnpOY_5%R z6er@rif`i6=f$)8J5-@qcEB!%Q8>^EBnAl&YaglL`r%`5kM2iucW7HemrgnAK5*yd zF*xVU_)#?OwK9|X4v~SW*L0V&^(0TsLw+=k?0HlFpT- z4aJ=eo_p`2zymf=Rar;f8I4_)2XUw06J#HeWr?7DZ;pUK*;PK~RdE0M>(+Jxt2Wy|g_-WV~K>+OJ8amYk6r;sQt3`7igjP`|^GXTooQOU?Y zO%Lw1ib)$$Yux!@)PS;F)&1w%F#7CLZ5j)H@DRWcN5ty~ZM*tnn#}w(VwQ zeE|71W1(=9NXpf9xW|ph=NR^d(3au0s$-|iMf3*N^D%YWt|EJj@5}35t9?+z8PVay z+45rJ?U}%L(``gW-gkkYuwiYF9HAH19=T^;*J9BN4lvR(5VV}zB@_5ROTzye(Et13 zbcsmH<|~^?$Q!3${~xN%sKryZpN}y?WoshqoqYQ}1&hyGh&E-ohifn!K2P>2jj6tv zb7~ft8-XXiC+|2~bo?!pYnDP7>n|AujrY=VXx!D)Ymj8m(S?o%iXl}MHqz(g+04yW zg%k^gD~RQSnCC-}ClWq@Isj`>K1R}X8|PcSqQg?=8kfXI1UmK46}ckXVS&tb-bQ(@ zoRy6>Xa5zEk$sV&axv~}vb~#_`fH3~D$86$S5fe$&2y%WE1wOgBuGcIp+FRY&Yg{w zi!ignY7Xa@IN`45weRKnn8DLJ?(^NJQvx7|hGcuroQ$l^41VSbB4I2w^oZ=+Ei8#J zN(tH@C>|a-j1lNC8brf~(3+Wt@+tHG}xS zd$9L5uq?+rG7kkxCvzNkbk)@jHU9&xvJWgWzilCd@_T|}$a)L1_Akl=74E;ye9N`y z`e5;1DLBSZxeSC9>RxYNymi%h{SDN%L1%w~lD*(IWBDC&WTdzOs^2o+7_&J1gn12n zVAUlhCwDR|nxm;F?$RtB?0r+nhE6%(kPwcRr0Wwe*o`25EqmhoygR}pAl_OV>WM9L z>kn;oxQ-Tj-=5PtGi>^bRn&>6gk}Xx-IgDvqJXh%6D88531kf;HgS_D!rMLayXW=a zW4;)7-}lk({L7^DE61l$b!o5c>MZ?LL|(h*PBcy-El^fT!pV$7oduV7)OAXlO#3lN z1y+3#FMgwU)Iq4R|E`Bz{O!sZRNkV2faolss62@Y8?TjobGb^t>j&=U^8dr8YIIot zHf!d*3ZXJ(78!niem6sMa5$+yxS+3h!y};f&6P%&s6BJ*j!mCf7 zBLr_rW@;P%Qd!eE80@LxcIyL#DnTaBF2aiy4-8&!Ix(;eqe-AoEuo#}LaW9ssT<8n z7B>6x6gb(V)C)zbg04?M8l5-L;z+ddF*k$;J^lF~ly-3>KP~vqzC;*m1s!bg3qoy( zd>LI~YdFxw=XsPpWOJG*gLaNNyaC_D?7Z@qU$4bw30} z95EZ7aiL$@Fd0`H>VNGXB%a~wxGsV&6lIsX?i^oW#?{qVr&czdG%C-8v~Fv2*!3VV zvK5$yDWawNw(;$HPAlIB8t3%HIV?HDBdz%&tvdrSbs?tR(yf^NGOwpGq-^*+&&gju z|34StbJnUurURDiP0(eQ!Yg2mKo^oR$)F00U3wn+KCOzU`~G9S-G6k9xE$2APUCj! z=@I8XjdxzGq}&=2FQg<592~aD0RC(~!Sj7|rQhA~U&AYElPvF!14zs_YvURJvzDvI z!m|?~(ua2hFF5Whjd#GNvi>;h=6kZ~bxrkuj9%CwX@71@sK#tn+(Yozm5_jQ-u$H5 z5Ygg0a~}Bi`vfbuby-v2dSNAT_J=|4;TVCO^)ZbJrJVK@%BHxSlYqj=t4FoDJFTU9&Xla=R|2NFG&tA>`rOGdYif0|DyAZ&yJK2JKvWF*5i$_#i!q@HB_4^A zx<;+)&AnjjjYL*6PR$EkB$btJ1PT@=CDR8Laux@EQ=2e|G7N~{1gWON9;RJgSEEv8 zk-MJDX~Mo~AKo@6T34HZC(;?6uTNSNnZhmXB%HlsBCDHFt&Ag^Qvan8vzQ~RIb-`{ zo}WA&8-&xHe2du)mbbEhWe79UL$s-zG5=jY zxr`K=1*GG~+Quuo$;SbnQi&Tq4|LlY8Rl;W6qQ1gSEI9E&(*5y^iA{?Sjt0O#;=;R zEL780GO37`+#Xm&3Op96Y9fFkWsxDs}u*MR&Ty zb=L+Z9a`{4xqTKi2x}bh76RcV;bRMFa^-!3ZyztRmcr!A#kzSy619-fvzQ8mY2Bw$ z7@rEiQE*DCXa8=d#8DRSbZC9+Q`via_xB1V_52aSjWF}7zAFkCtPRnt!y*fBx(G}N z4rL53+zicBn{qBu63ZG3h98l{+#S`#>(~g}3wGFy9Y!PdcFZ&Q9481zLE;G=%ftO7 zR2047!zDWP3(=>(J}DPcQCCa6nmmyIqE=vQ_J91og{5c`FJCfLwxmlagj{F)3@P}W zyTKAXP5o{Wmp8P%WK`RgrJ>S^K>A{!X#@|xITOwnOIDVaQIeNCA$QiFl?wNgzGj}; zDUW$TE9v%^AVrG3j1N4x z8$b7`Oe-VFzr4YboI{%B`p^d8#-heG6UW}zz!f0Hn&(o{`B+WmelO%l(fv?0{n+wwbA{N7Als;z?<$zD)AK`(Y|K-&|Gj zyM26xk^7~lxlx5om0BY!fL>A7+0i(j@`w8`d*ZrEQ+>j>2GkVf&mI+PI$>?_Tq@+h z@Y88b)3sgB>jcLn9|^y7!!>G~EbFMRpDVKXFl%f3))ICwwEWK%foona+puKl2m9a; zsxEu>MEmd4W)GHA@Ono9Ya+4QC>m#F!F%#iN0h3HV6yo{{^3@4Jm0%dwKu z2DJ4W_hX!J5RLM9TBN``MnxxzB801P1tkbc&u%ud+fQFWrm5vzV<|Sdk`_|B(@Hd^ ztImy!1$-c zsWdN){g^ft8Zv;R46UT9Br z5`>?pI;y;?{=ZbUHU9FN*L8Ia-m}D)`o=lSbouh{8R#hE=2l(3NfsqPXKByhw*nrk zXS<5n^;1zqhGirgnWO1*!gF;0jx)`Dr^=b9l&v5JM1p54o-)i}A^-}@(R$r{rGl_& zu(-=O=m}me1x<5M{>50=0gtY#0Pw9O0;34H>6X;R8fM=by%bg}55zbfmXn*YnZE73sGLh`5y(%GFTOk&H%|?cGWWXY`Bco{-0xu)yW#D^x!Pc3Qc|4+%i_~ zJDaoR08U-AgGo%NxN8w>t$06npoMFCSx=w+!l7Xi&k(eUbxg!4sYHdc@>doEy%+Yq z>FxW$tR9=>>7hSyXzeS=9j|Q(;0jIf~F5qq0wQdpq0f_Iz`(J38Q|%7K z%PIg-`1u)scZU#NG0!3OzQhm~Qc|rA%|(dllG))z8$$&ZV`*0JV&DUF)-dn~-bcc~ zrc+r5q;Ji>?dJQz2Ek^ulTRgE#4gaYt`MUxT+Fthh-aDc6e*{ zoVOWldI0Y>s`oMZ;YT2RHg=k z$PHIW3u$(W{Gy9vFKG%-H8gb$q-f#S@M7F6!&@;>vr*w!(Rw-Cj-ol<)=w=OJ2G35Pe_;w>>rWxODRk zET+CG5!!!mr`@?qAivQcwo?Or)%ivU6?Ingy?bHycun#d7xEz#+j{|Re~-xo;hQZI zJs7!0{0~>VOoAbX=zdqTm&Xzv8tjXVKDwgxjS2KF4h6ETSEAz$;DgKpaW#6UHBTXULt=!<;lU!?>SJi>I6-c2+2MAu zX5s&m1UaezMeD~~cj&dXHP>LP)!Y4Kg@#{k!14w1WA{1j;$|D07pikT3jFw&M9Se6 z6JZ;SUF7Lv zwxOd>$4mu&P7Hlc=)wgK-F%1dtu3-O?Zf{(vweM#n*k~s_T|!SqbGC20gx;k)rD}9 zHz_C#)9)4N9W87yW-O5*(qnS)mZ@s$#{Xf}6Y3vHzu6d6)Vg?+JOWnA{Xq^tb{{E4 zTRX#kl4r$6oShFHES)noZuQ9IT~ZZQNw)XlaT)JeEf{gP58F5P&xw1k$geaID6O<^>e0*KH~%*p@F8o(rCyp1OAG zfr}SVQbF_A;#}v%K9Hx9KrI38q)k(7#T+Pz{EHoJ8Rk)C!w7|C@%gM#c~(Tr2>7)y ze{|s`m)0~G=QJ2cAQ1`t`OD?+9|%5_pe2^hKRau02%x6^e=7tk;p{$yrrnpskV!=n z4dwsD#0$KDNZ?WFFMGqgUet;EAg8s`vj4S4O zsV{Yyl{9EbtZ9awh8LI{ITWYoFh!oQ&1*E0SKqoie7}HqSt#7pcQ?Bj``3Tt-q9By zeuM3(>Z;j3^gP$c=r~53>4^dn#2Q1gI0;l3F2bJ`NgF{ZB7lWOUk*)N|9kpndSX!0 z?6K=VcRtrncO0D>Jsn>tNVY_F{UP4VriTL4MT{E8j3;~(%7Zl&abq>K^RO{`4Vl9W zr!P(81x@5P1F5k-@t8QyG{Y2vw@U;Hy>6L1*C?+K?%ZD7(6krRC`*=;t8V+2E`P1p z{;amTgg%F&sPGjFgOqsctkG59g7QI}Zr9M;L$|xFy@U!HX4{$n!=i_xnBgY_qb{9% zzWsnzXcN7stpef6KrL@YtKAHw|RX13CO)~{l0^_f1FU_VtXST9ob(}Zd^738S zE^i)uE9e)?=+D!thZ-1}SBCq``u-LW79opqamsaWqV++u4!W|lAPvk4bA8|ZF5D=$ z_m8y-{~!K_aHD5pz3oI2<5<$S)RxL5>*UIl^L0J8nM|Q+o=nKs$98wtuKe zRyOKSY4Y*bYxIg!A8O)uSb+rP9eCvf(doQI;F6Cqpw~NaI~C&;oR#Z5p9Tk%zq_E+P9f>!qWe^ zh+bCb*wml3wEftuRTV{<`aLiGCrL2pC(Yr2<=7c(ZkIt_0kIya#Vz&%2jB<;mVyl= z{*A4h`bO4jbJfq+W4?={r}KSHc$9qnU{20}CaSh~r1S74Ip#ruc7O0O7VH6np6KfM zJLK1_b+H^sxhy9Yyx>HuE&00NU6kh>cs@*j={1 z2fcM_?OKdqkS!kl`J+89w^y)6r{z|U;p!1pBBJ~^6GdH)CwYEXg0V&pE9Yh!g9qxM zQ*3|{{bHot3|SP_^nhcxa23z^flj2|gT$~&66(SJnxpto4WbII#M;a>azObUu&My) zbTC6FkB_d55oTm;nzl5WWqNB_9t0?v|0lefVmeDNuaeX(3}-djz{Gy=mPX;V!es=D(ss21} z=hC(m^^E=W8W>c7)y8)BLbX5Xns?bJWqy`B>BrO+}rVmwS)ke^zPT$YBr=1B*rl!B>KHd<2d2TyLFi@HstIwV~ zy`0k@omvEKx%xWE!BjW>c4N!n~A zeejTDzanw#i~W7K}LCt5@l5O zpp!TesH$Vo-9Sc}zbFw6!%l!B(%QI(@#6jYoGx(ezMfG9lbks(s_k+5bR>;d+~MAa z-YmOc!G|qKO8w@v2evd9X+Bw683=%>MS~Hc`vqewfxS9i->{yHSdhvE9%?W-4dnn6Fo>?<1yJ9bGLAz zW;Ks@y@%4ARI`L`l<`LpWdE~2`yYF0vmzNaeUEwp3zzq- zxRN+p*gC?sEiMz{PgQ!SvlUjsm$~?Bu*-3DU>~`3DTa}zXw>fvFPG2TH(zB3=c7N7 zcS&jr5d95?US{hK77FA6TX=1Es%0C0oPU$7fo}~Z7J_u34NhhjAi$yMAN63dYEARx z2M0>cvIt5Eg0u`Qr~kOyX2`Ohsl%8wo%Q|K(j>Yvu#&&1P*P+hyx`josi}!cu2k<0 zwT>9Isn`m~vQn`18l*=a-k)S0tXqFQPyd z!|60$?D^0a=MmsXn@JLY`s)_gl%M@Q@H@L>x37kHme^KvKD~7sRvVL(9X~JjlTU1y z^gL74jy)Zu%Yc($ls#O(;2P=qT4=&Mpg97g<mK^o!Q1J3B_^ z=H}d^pWZ+{pOi!eS<87?vTL?#4UJ$oB z4lEEh91dBXf7aIn@(7nO6;k6n8{NiYR#1_Xd9Ly@MZ<9UCDK$BoqU~8A)scj4~UKB z1zX!+-n{mH!dBPTVo1ncmR-KbHzCsglYNLKgmW}B3;^44r+W0<=5BZ$<=)-jXEv_T zfap@C`L9|$uKJ^Ce=gequrr;X;9LxFYU|{;stjzu;iqzu)9y>&EyC}_8c$u#-iw(c zdt?4?o{tQgztC8?*C<(M!U6oE{jYwqf%CeAu#1RlAEXJMu!AHI+(NL|$3*KRQ^G0^ zl>&wcmuNNfI2(^ev>1_|#<}TCIntX4-xdubK(m7LTr#Z!dWhsRT*>Cl)(8zbZOhRcl8jKJenAF5vh6f6prZ!K1-a^~KMgSoSF)KDnTt|kT$9@rFh zEx%aWL`5|e>J~D)+INX@Fvz4+geieuJfQKTQUj(#DyXPQ)N1ZxIW_mOUl^fZ*$`C; zEd^3XxYcn?U5t*meXQ)Y{5Gu^-sijg6m|(zQ&YI`9Y#@a8Cu8!JE4vFEdMz$ic=qo z(e~#s>Z$1wT?ldGXcFe6ldPv~p*Vz7$UKHwJOiT$dW)%FSb?xJt_ye(`#8iX0}1JA z#Uy^tmh(C9@|gsMi2IivcByua^V2N)bgpkGpfWoUh64?#Q>$Mp5efrOJ|<5<-gsWX zW+yWdCH7iZ$1F1gEkXC&Gd9G)yEW9vauhxD?SU~dDX0%?h33DTNnfzpsC(+JVJ-8d zq3VOGG{}fm4kK!x7U(ra4j?V+>97?2o)@%h-TO~miFI90a|G>cY4zA23>@YsvAid` znn}NLRZ9*oYbmF^Y`ffqtI~!a7)m7>Q2GivC?|c)# ze?!>VOaQI6EY?PTFhwdG_fpnS!6d8!totW1Zz$MtkBseky?uSPnl8?N5VE%XBHsec zY}J*EJ&hP#4szt&C_5%XcK%lYu29=bC>>)>kJ&a)5Rg+#bIeu7!Hw(15h~L64NJzC zJ0S~?e%bwLbyC0$SwszI)vql|mI$cUQjKWZZFlH!JQi5Fxw5xkM0Y7xrg5c;*->55 zB|YN%q7gYvin#K|F(|xN?gAyH3BKLjJ`dj*7#P+m02dj-!NIDPR+4F6n|O384j`J4 z5@+0N5&NM;zCUFX>xKB;!%mto)7QB608+OEURId zS|pvee^h$wqwlL|!dzxU0{Dm}-vaf^=h~W%ZPNQsuNg>+O1pEVjrs-b?N5vFZmUxF za@UMoZ4z7dnAbbo&>#=sN?zZH^ZS;oq3e|aHc5-x#Yu@lZb`;x^Rb(MY&o?Ibc*LJ zZC{fU*a~!+z)`$fd0rC#8W`SGGJuYXff^;h_CDt2B3*iV$yB*`IFtV3oV<)fmD+F( zMZHfUCfh_vwO#{RLN4Z@LnGd_YIAf5gJ6rjytml-+bx)AXSQOj;rzig&tO{rB}&#RZSoR!F6$kny2IPF`N1za z+C?>@6t;oi1E+k$2FYw1{2}==(G>jsh4%JLKpofa1t}C!vffU+tbNaN)kQSQ4)CU_ z7{|%UT@4gdt{iw*+DppK|PJ z(>kf*G%gwv>RMXD@JW>oRvcPZ*tk}3QQdrq={F3e&dSYi5--amVW8J1%AnY7uf%k*79VBmUh1fQ6A^}zytgf&(&7hs)L?

= z*kC#Uwrl9t3{*_ZC@B&5_AL!bu4DI_S+DDrF>3F6_UP1)=f35QiGyy*LypYItfZzG zOOV0Bj!!gootCGU7U4%YgG7KS{ayQ8jmd3d^KWu;NtKHbf>7PylcIDg`I0*Gd<-Y* zwkiYW@6ejwK!I?{W4C`gRCzI0UB7nJl2awSXEAC@Ii?YQ18B=O>4~+=5fJl0>Oich z-<7mRc#2G+Ax4JY0F#8~hqRLE7`mI%YTo3qe~_8x*U%!u6{Vb$w@r_))4Wz z=Qy`FbSsG4G@^TL{C_S$*3?(9)%_pqQ*cYhJ{~oQf$BQ!lN925wvm7pi_|a(T{x%Q z*hS*x-ZR*rWx5?=-qzbm;%O($!rjdyl2|mhD#Id}{U8U71p3kt;0}ZQW6wvWZ%#z1 z2IQzZ@BhisDHdq_S2}af60Ct>jOLnA6B5s+ygynJk}x#-iP=j}(3I}@m71Ox9SxuG zl=c7FslEt=Eg`#_g<5ujZo~XeT8YKuH|(*Jh29Xe<_JoiNiEIx6R8GGlzl=Oxom*Z zFf?i1n2h>FXQ3i=>W7ldV9wqrc zHrV7g=>|4(+V}VO4bQz;{--V2_ScI}d?KO^bky;e7v8#Fzr6cm)O4)Nq4yCx@G^ z$+zhoBMuCu;0(Cx83k&X642ZyVTxhRa&1QrWq1Mw=1PM59$Uix-k*{3ekpGURdR|_ zr{euH)*}_wb#oy`q>9D*(X2czxeHC9 zPC!yP9`8^~JvZes>JHK=m`#uxDN{?px#@gkS~1zl+>r`^C;}f*v{Fe4R)iuOFXwox z--J(QR*osS{JX_va=iINC!fnZ#9*OsW^bRTZ3l%t63GRVv#LrK9PsfW7)Qc0?)$ho zBH*z-u)j}bgm(eQW5s?lIi z+p9v<%;jVZ8X7}m3P_3~IHq0{3#L@G*nmWY7-W%Sf>Fshw?(!_IY3}#eH%h*RLLB) zE})!xa*vM2F75io72)$KSC`i(5OQ4vd|bM$yh@2ve5Jh6!TGDng89!F0lwZi({1G| zKbL1a0t=$?RYFv&6ssO@;@k-cOsOMG8|ug1$#-Y3hoO2Us^tmns{% z+NS6@w6Df27aLpO^CBW5PEJkLH#CUWsDqOf8T6gnYerU)W*y~Hpy!Cy| zYHDqbV5av983*S`k+(l)ibw~e>TD$aHVxVo4k%ciO#h9bo;Tir~7gGkE`a%yh2Jx>T#D=zFpOP$#*Ut%EpMgbkuwwA(%JZS;0Z(OwxfuA?g%r-E#F)~XYZ(_oWKzm@6wrW_s7q;wevgrPAhYqyb!ADA;UGp@_f;MH;^7XlZ+%}ok4S}SH*oC@<$EEq zlzJDZWn+%cOxLu0S0NsM2UG?vs>8y}s!G<-XTWsR1B!QM`|(8y_B zK4n}sU=!LnJJUpPMpl!yu7GQO`AqkThw;eI& zjRhDOFS=jE|3zP%dLH;|pEkBr#zC=BT^-o-w%l{9}XSKnd$V{$h z7PHU|n$0Q0Ag?6mx^2-48cLy@dz=(-?L{`}JZ><9pXQ5jMg&0aG@5M;+xgF*{o5)PHZ8eLX2l&wnHe8X#gu_U#iLr zUWd{55KQ_y_p^XihlZC0X7S7Xi9ud`3Dh$S)sT&bVc5a_mQMqZm#IYWxmdNpBTQIX z{9a6De;GDqF0O=*^1dkFF|m~4E5gEdA|_+Ok}X^7FUQ3c3{oc7lIGowc8%wEp*QYm z85i-&z$iihabc*MB2bL)90)R0!yxCN01gNQw!T+bs6XR={&=)6I$%2!f+k`MF|$Kv z%1dTXhc=?ZLxF+9uC;7B&tNM(p2Efg#p2HV?slj&W%DGHkyq}fs;X{tdoyb&dqPsU zp1nwB1jq!|6#aJ#kgXW8#3bK(zw(OlPRj4U(XNh}-K5Y54_ar&B2&J5Ozfi6sZsIV#;=h!8eFli9q`wKuigF>g;+bltdY*@vbT~gUyTTe=vdc=P8gFQ8Pnn9W- zYNQ&Zq^_;3MtodxH9Qg#F@ar7hAS2!3nj)-%&;w3X43C4Z(vMO*7ZCm>iy99%)31@ zppGKo?7}Q=o?5}M0*s(;LI=uFKEOrmpmuo~V$>V>wf70V)pq+hKtZuMx=5Gd9_}o< zU^LUyNd?U{m>0}vO)jD!bBLqDgXg2M(TFVUc%JzDd8pKxO*K`?sOz445k8Pnbsh*t zY=c)XSb$$D|267%eW8wQLs=bV1nZ6p6r`Q*{^`@u;1{&14E?C&v1#lS%^4b3(}c{w^8(==VPWp8t=huL@}U z3AQd)q{ZDWNN{&6q(G3M#ogV#NYN6CySqzqD^Ob8-MzTGQ{YSg_ulU<4|&-A?at23 znKNf1(84mqD}91k*DQW8qa3G-Ns_S9B30}ER4AA%tUf#39usnbWiwt6+uwXQJp;Z? zSN{ZYm*X-^LGZ9qLa}OjWh(&f35<+^v{ZdBxQJ9zG3_B`L6^t%6~5cuLeC4;@O^#8 zb}OYHR1n{}I$hd*(MwS`{jHUgKb41}t7cEJmWStUzyjj4m66LrUEP)vMs= z2bhnqJII7kD~$e{iR4`2BXK%tH+pD%qd`{?XwhJZt%D)>)6rl6-OMVItEY; zTy+cvcz0&x{hUXnNA2gEuD-Wd0llsa*(ToJag61-g5yw+KWz(h!nNg4X8ki?Mn1Q# zUC0O2OEftY!-q>W@fXt{do!CAfiA=tWRqk9IB+#T&@2s67g~sL=HypycPY5MY>s>n zhy~ngminkFR9KBE?pzx~2y{t)F=c;m=y-A$GA`<1%;&C$NBWNU@1bNKP$g>KZT3Nf zR>f^H(?gZ!xCd->6Ngt8@cn|-SPXmvZ*E$4@RM{b-A|Bgev@4&Q2x<91t}`jsU`q; z!9QYyU`4?;zd%K`@D5Xl(86&3_Lx4}oI(}dycK@gCS_ft{y(*C+BYDEh=|tKQ~>SP zZ)FMEXzgnL79R2OnI1$sT{w>ts2rD2-5f|IVRrTtr2U@7(EIqC?^bIG46n?cti#V*fGk4@tH4_Gd}Q`$Y`xJw9Eja(|tFVJ+Dtrgx(_mDHb+q zp|vRB3rERSSj0ooj$i;*J)fwB8+ebJ|B>^J7H>H#xXK_z00_W z;ah$eAQ#B|F95Y8UA<21VPqcp;$GYrR9(K`wB3Vw19QP$I0VEYR-Z~V45=O1lpR@= z_gJE^0|h+Z3;HqCsejOsCR0T}}ByBhSpd;T9;h`OAv;GCwS9wP%lURo%`>*x6d7v*c!(Gx_w8hx6dkx`R5(UIF; zhuOvzebZH$A~_K=Nn5W&=Iad-k*>qT0<3rtfQL&lb6P)J%wXrPz=8rQx za3o4d1^fn3@OAB1nq_uv_klhFp!YO`8hCQ+&NQ+wHWTG&anm^c{#4v#2~ai<(td?b zg#Gd=*1iK&av*ZfP0Xar%gg_L*b^VOqgWXdT&mWpf24HM8^oc>=KTy1b}+!seosuler;W?(U7P zu2r)~Ga2X_{BxO1N*Q6jX5#gCtO3^&r0;t|YlMRVXscU>!WFxIvWFN7vE3cBsI8+G|KNyGO zxV$Nups6%_AM+Y`L=v@2wNoQy6Z7>V4WHsUYW8&S_1qkIOo_`!sbtL z698`$$(4rhSKqm)8twg;)qH_~0CZGc=BM}g=Js0s_yn$bnb!yJac^shC3I{b!z|O< z&fgE)x?}Xj0l((6a#~XZL{;dBgA0^(09xUgqlZ&oL)L#)71WQF% zI8eZnL=@tSp?6xjUt<0_a7j0eJ-0P8KgP6C4Qp(NMQoyx(ec4IR`sXJ_Cr9N!r1+! z;TiVKT$c?D~ZGCjwNpljCBc< zSVb|uERBt3dr6Y`4Fh?b>C#5YT+}ytc(uyXoGQioxs^U9YYECE#+WSe4b<`mEVX#a zAPc2mx0nr1I7^d@=NMIa+1sASaY?X*-2V>@x+ZnG zVnaf^hIa)Ikuch~&@0I{c*X^f@M-=URl;y#J@r}S=dc_co`396b5d<-k}vXKi5_Ube~ z;dLK6XA-IZ-+)El%Jb9Z&AJ9+l2dqwI~g z*u;x&&orz)4RC}E9;n%`xo#!Ux3GFLYa|@=1&LSWX9or2EubT+si}#(HY(-+xs3YZg&~i+0Iy<0Rv&ONynpvo!mde5CfJUepev&d}dZ* zT6|nSZg=fD+JbZ;soLz&`xn!0 zO#Kxjs=Zy+;P~hm#}G-iZUFD8QFuOBl}Nbmxqzj0E(MK?Z@8O; zB>`@`3rDiQN4~n=`K2rb#f=77z~31aVJ0IxWN^&9bVAA-`^=8pd8DXZPUU}_vPeW> zv{O{VLX0|@hkmuN!(v=ZoujBc2iV#&=8!Epbd^{G6fftL-?`cdN z5MOkA;=dsC1NO(4k*$iE0uu3;ilAJ0+-Bg*IrF?YSfyOfJvZez3q9LQgeC&9D88W) zGJ>~!4%rlkBVDWY$4z=vZg_?(DWvlgaS~qzTyN3q-z%XVV?Oc=?WH{wBGb zEzKhi{q|V9MMh>IuD)m8Eyp>2$$yi4UBUN-CyIfxh)eJrin(p6j8Qw~gFBSk&tb9X zRZfAaMxStvPqPGY;P@2ri)ecqVvC4=Sxc`F>`B>#QQ+@ zZgT-8!a*<^iRmr=JJO}vJj$H};{HIt{P_5|xpT-%UZF%_)`vV;Js6kBfyRZEZDfnb ztW$?&!<)=Ep%Sb)3!arr8Rh114!8OPkY_&H-%T$u-b=)@P0ngRFpwOKE~PdheR9wS zL({|mxb~d2^V2biiCq@-yk48K_&(J0%qK60x&L*?4~GE_RSG~va^(BW6~H{$eQ)O7Mzr*ZVy&$=qh7XozgM{%*DH) z_~FW27>X1~phQ)^$JO@@oDI8$IN;6}s680~fzBbRUg$R%G7yl5=2wKT8>?p}FASZ* z@NxyTP?fndngg;5|H6~5yV2rnEX2}`eC zYXT1|b@J;o66iEp=R|uSY|tE}bd330NtS+si&V{%t0K7C&j_x2Ve@YF5b$^KP?W&6 za=qKXGZcm{@Mol~o7*eoCgpZR6pkl`=5peiQ}!0wIdP1GDT>M!G1BBo#%urRC&X-0W9CL3-j;(@he6%u6r) z^pnlsk+ZIIkOuGI$Vo`ZWmLM7n7=3x7@rq6nC(-3&y{me-g1{sy}6KTYFd)-b+tfC zw}gY)jPV^30T~FNOLk+}F1)c#ey(a>)XM$E_b+DujPSX3sPz2{t=4XwLR$r`mAtgb z7Rx;~g|0Uqx};h;2F)h=;nkkD_}$I*TgoRu?`nrh`E);V#U^&>N}}~qlybQ5YZevI z8Mk;3y6!=Uiat|qC_YX^P({c2anRhr+a-JG_13e}rU=Jbl=pXJcZa5N}y2AqQgDD{O<7{!r(YpNl^jztcyg1-Xbv4YN-i z3;)`GF$EY?XOWou<*Vbn@9q-1+T3__@e0y3Wz}H7yM<(HgT$Rmpefriv$v4gchB$N z{|=^<_=LQ0Kl3WX0@$gAOVCe9wP-{~D2x2_X<5>y0rdv(cHtLJR1e^2X!i5l#lljO za0$BJxhakqs1A}rAm4~_GrVhm`;XyCzh5fnqf(A7a~cO zsl=rCj~K5V_~CC?Ji8EYxzM166H*2k5cyL$b)T@Kf;fYT+CnZdF?vV=vl^TKy`cAS z)?y80H`Pr=-NiG?vy;;QNvUl8mC7~8KXJ#gJ!r}~Kf4rAn7}>o7DngZ$0?O4kX$uM zoCV*%b=!a3=P6X9G5vz?pW3gcny4|-(K5uHlfH%SIs4%G%HDpUs}ohDzh_Smzw!2d zwSR}VqOh_`F{t!*qJFTVn(gY?HC^iK(#3{p^HdY;)q_mWi&4+k4X09V>mvKttCj}mO>MN$;MS5Rzq-9N%gkn49 zQR(45l^x?S%a|vIIcYHVbqZa|9vefQ=WaW9bw~T8-j_YcM(++DsELl93 zx!IAI6l-zY>2&sN>xq{99~XcTIQE`dO40A<@4wv4Bd`ZBc%ArSG6#FbE#~34DL)yI z$;v;U8W13YI4;88vX!o;3P1EL!}%I=s+Ap(mGkrvUVHI@o}Q`6rm~ETRJWkAj3T2L zhcqTakyj%~%etc6E0Z*imMse^%iyD03PkdN|A#Y5VYT)`jI-?q7^brme>H=oe>lYe z{myXH0EJrvP#%-qrYDWJ3|b=3_=i%>T%4_#+NZ}in{ug`j{@%gj@ zHGw}~qvzB&qYDeWPx47s1pS$P_wMo?+OwAC4Rdc7>Ot;-$Akl7X@eUd7ABN(RpaBa zh>}>|iC>#?`@~nvKGOSph=$yE^mi-9`sb6(#sq8Gcp>3tE&f!{ zmp&@rtx#L$mHIj%`68husqs{K!tu+_m-gL^b#CLKMHxO<8F0QVX%|kyh-s1!Y<{Tf zh@yFqc)%|SP2`UZ!ymm$ei{5%iovp1Py9PN&%k&Zc0y=b@9KKsY9n{Z>-?;%j_0V2 zf~uPTNx}65M<wrPKDqY=BTM!XYeBuYDmNWjkDjh1yOJ`tB4^)&Uz zBjDo^PEsK4HIBETLCe7St7Nd8`G-m({Ha0lDRz+dT*<({H1KvJ4Q{V=0Tkx%Q z({8tY#OGE|xPl1@?HG^G(-@zz2Hon80b9MnvwQwv#hpirRQIOmV3^5I5*Nqy9Zu>o zMMeJp0*kG&FHp$BYkjoR_nEy_#2GU|evdJVjDufeh4YJ+4zFl24^Q{;n@nvFc8ez) z$HhiwYt0UiB89og&g!mINZf6fLtVA1Q_F|H#mmRGpL0}R>U;d7Pq|N;SYMT}*EpX^ zquy`WpM7XQ5k(w-rk{Mt0r;3f8)YCgY;Ok`B?e-h+9j<^6_n9XgTGLHp~6GKTZ)9p zRHlPQ!*}Hp`t(9nBLviYxJfQF;9haoyacyp)+sV#eysu)h2UCMr-DL~wD0e6;l#a^ zd_N%*>FKTYFM!xnw&~wpr92FGCi|X!4ePL}T}n50my>NzXYkjlt(PbZiCkch*^`2c zL>@`{IUZ{e#d@|9B&i7epAuG<%&9a`NMs`8=P5l9?8sZJzid&(TkOM zQiq9w;d|8j^*0=d$H>tO?sYy>^22=tK#vL2x*b2n%26x-C)7dlHW_{V_$fOKF1|_K z)r6$pZ-2Yklf1U{cM+oWg=$BKI1O+J<7>5rhGLVp>lb>+j>MQ{mlOCZvd!?5;gLKj z{=F5!1M9?X)lY=2W*M~fT~X;aj>lbV3#_)-8v2tOiocUDrF*TccV&N{|Jn7DMslf`BdHOs+ zlq1cb(%j$1%oIC-;|!N+B`fg1gm#n8jj$je`5acF=x4X7m>;(i@dE+AJ{foK75R z4sTkU@fIS7?*>7Tyy0e}ra@0+_tq5b3szsEwOYT$SnVG9V)nVLZ}kq}|5ZSm(mMaF z1N{=;1b^{nW^}<%cbRXAtl*i?`vLWOA;PnNDGQALOUe?&N1jTtcT#MBTtLU7*zI`Y zjCQ$n_&z*v?UBuJ!!m$v`{hXnrwG(*V9Y0MZO-L9^6QJxb2`1@$GbG!?vg?5q?K{r zyT=0v>;hmJhdtB4~;8upU93AOKM`!yS zNd-G1hKn4lHco0P`$XI-?Bsz|zTTc%{@)LsJI56z)aANe6KODCq((-@ZkZIFMGtgF zl;MRfTK0YI&-6(}^g+9$xtzJCQCS7DJbBDT;rmmi66OeLQ^J{eio4MS0#+k`G=J0i zB)kvYLbB|fH{QMSTYqadQjO5gp9 z$|n9AD?=odkXWnxGwlFwaksA%0YDc$$saWI)%{19l?d0Ay)J)#-N6N~$qtvzrV7ql z%kcDO&F1!zNk6o|=@#F~8UAI9jS0xi%&q?T_48qymv{8~Q+FyOMp`P%vJV508fs#1 zn`K2h_q&t&cISLBhZ z%$6~-X_kEY=&Y%=17z40&>_yxPm+`TfZKmcEA(p4rl(U}>tx{?55MBHyiCLbC41OU zQgDOi1R-Md%6BU^=(SnVQctFy%X87C*K$5~8L6)%?|VN>E0_KvWc$_u%QY4>b>lAs z{N4A!ax-K`R(6Il9T}BXoqg=D<(nBlty#!*8K&j{MLyEZx_vu6{GSl ze)!oqQ)J-82Ib)`82@9{u;mUXF?k7GBUh~5R*+n z4#N93J}Yq{j%4T=KuW5kMXv~EVOYZd+-dCNq$>Lxa0g8Jz~a@)e9CFr{L0GKq2>>T zYiRT&lZDsoXlW96d(`k$5E6#;c~il#XwCte44&O`cz!cg~!P&T-K|#du<^tytL8W|z%bKJ-3&S+NQ7({UJSt-@j6J|l+t zFsFkU+N(La)!DFzAD>Pq@Dq?mY%YHzukNtcv<^9DHY$Tx>SXaAK2A#MU0+BwvO1QC z=`bZARJu|U&-Whx%z!E%NdBIK)%HwD#Y|GzI_+~#OUs2Dh>2@=XsLuc`*iCRMm*8{ zM?BF7W#^_Q-ELjQCTBMKezeu(A0f^7n%IsKvj8{&XUM+A01)qJQDF_ZAk8l1w%!Ug zGMc&VG6Dy!WH@*RV*gx#HP~{Bi0$JF8ADqd#~B%>a9Q0mURVJIq)_YmIobnj!LUVo zwg8gimvY4t{jiX!_KobtHE@qX0s*X*1kN$*lP*1QboWhCV8Jz$UNu|x4ud}vO>s_v z4Dtw(a2)v?4jhe-wFrnl2=IMzkiHFP8#!1LX?1qXIpi}=U71f^V@#ezV75vKtU5`v zWcY)}OH=T5l686TF27|E&z}2fA44p$P*!*IZNndmq%dD;%+=`h0O)LM0!#aSthb_g zdqPKga0Dt-!HU;0!BC)t+fBAvx6tMs(T%4R#aPL%D9RSReY3y2HWi79Yaz96|HBAv^)iN zRt(Wofv5*gayQye*jCE3*(8?V<~Yv8Ah8@c=jO2H`pUM!K#Mr1qzJIm*$6UKS zn%r!brkIDiH5@@jdUYq(dDC+SGf+p~?0_izg+d%kPspCV`}HMsL$}jDohlZ_fHB*v ztwCB+y(zS}>bJNRaEY(_Tqk<-|LvPg2n)|iQ@naH%!1<&neRGk7Z$ob%2#^y=X*qk zHg=#fHqAwGi*gLgFrsnV?v7(k7tvO|3^vU|Vqs#x1C^fGpo^mU)8m;E^Y#e>=x)VW z8pVSlMMhVZW~rgoU*GqQK2)x4e&k6B@~bD{hs}?2G-DqX7bjn2*&e>TMLR}Gpc0mv+1}3+t+D$m>oNc~+OMiSkk@~SsUMi1?<^bzO zW&<_DPoF7&axSHJCu2=iEJz;M|MhZ9Sz4qeCELNd9*l>0#4`xjS6+P2Wy_4e=HA(A zymhmmDz9TpKu#iXJIWCY37@ytgE6+np9Dv$P~)AHxbC_|Bg%x=#$SvRpwl>~P}=RP zXP$L0VQ5;h=|b3Ob0hkd+j7(Fi$zAM-z1_kmFFrlJ!*Ko4m{=dvEkN`=38_Z7ozN;)t9maJ(lO^x zW>=F#8Zd3{G+|hZ!}qT%>5!)N@F1}VkO}DcEVvG>c_JE$*GRsxEoecj%Vi~2K?P$k zfJ>&Y?J=1Cu z>?B1nYSxqcQZZfxyMd^SNeQug4eg2Jod{&#O}qOT>Fuc0@kmgLmnwp{_B@M_b5#R!O^<_ zt;;pXtU^^(MJDI%5^UQH0|lGdD8*z5+2`T~t%g|Kb-*%P!?cUg(#x*f4};ua1_dw% zEMjoD0W+fxHT)<>P7tT9nNyq? zat2oT-SUY39OjGUL6xw6%*m&(#PzVRarSTq;9nK%no-EPNC9<)dAL|;RTP69M#xis zCxm#nPu(SFZb#L^R<0-tY-d3F{_h?cVNMoAz*mK7yM$@WsETy6IAoJaYDFhdOpk9* zM&B=Z3vfs_G)Xl0B+vSU)~0o%STiTPQv=~cTX+FNKH=z-gIGs#-?C-F%`duCOsh@a z{aC{}L2)uVl5C&F;9NdAt&gnX#+<|xpxcF*j_?CzvhjKTeu(KiT^cCzmZPT zUFQJJxVb}I3VXbj@@Eh$OpKoyC{&yeQHwhgI0<~~HnZZ`{w)|Ck0KF%9APejNjsp@OK{o?1!SAaOB=&iJwYv5y1weu}$4!0lqlDFz6{cv!} z!RvXm^Zhb~kq-YIKJnrY*-;oh@yG9X$9}&{>GJN4lGK_43XX%YNuPiD6*TM zo+4Cq9$&^(>$Lr1_|hk>wEnacdiA&Kb!|J%lJ2hEe1?{;>XV6n+S5W@oEF0nRGt;m zEqI{G%Q?6kS?k?(=x;D4G>eL4421b=JQ!XbnT2t)AO|GIrmsi^%&P(Gj49&KuUbx? zr@v~6J}{F0i2Po~Dd0CFEYr*=!KfiUHhCAkjsX`g!QnDZ?e&6Jk=635VVmr>yc^)Z z>OhilW7vrp-1(+M?D~w01a3tYH}btVPXov||iGKQXa) znDBu;plQI-Pw)KaStcj28@dM|uNAnBtQ)$osfUH7P7=6F7f@9HUad^zUSH^PsK+I- zC=xNyiT7Ve=jX^V#G)d^pVoHT1okMhbC&QyZob(Kh+;&+EWk2sdWFQ0uw%|A3(Q)d zO=_DRuvU(x5tEXtiH7vJ%JTqnB*p>THr)GFxA60agi0%R5tysMH)w-5p-ukz9yefe z*GLl;r~F&cmRc3as2bW216~jjqMlctFt~q4*Co6?(u{h5Dba{^r0?7#+|t2i4k+Z+sJU zK^3+nEpMiXJz3g&Up3EpeEYsO=ShsE^-MJ3eU!R#bS%$@2WpBVaTT_n zt+^zQ!k#dXC44ifcMUdD(r#jr>8JH&oF2NbqcC>j`;P=lffa~ZX%EaK?G;7h&GAs( zIcsz6`pnT?aQX03tF1hjx7{ag&6l2g;_@G_kVPtpi#Hk`lQq&wtgja1i=lLCog2lEA1cX7g}USe|~IJC~0 zP2gSl@yL*c-ne+{HlLXfPlaT>PL*^4gcS?!w9;DBHZE!W`W@_UNPfKYh8Sb}#ZP8n zsQCXe*Z3Gqf-k)G9+c74M5&Qty8XB(NJ%y4j~tfc==!B1#!Jd+JrO&|gIRC-NQ{cu z=6LValME1BS6~ybsf>5twMXFfyyKerfaEpZMo*kosfAk!?6YX8p`%oc|NTlP1My|x z1b5)7g^Ze?$C{m38HygL#*XF@n%V`zYrca)1Wrk{H_DhT*Cz7-?mP;4#U&gZSI#-U z5z`pvy0AsF)llDKmxXyHbKkI=&Ic(C%b4FQI0*dYwy#Y~*!VEuxPUZ1Y6pn~jIxUs zK7@ZWZeKA!ak-aUJ@+E2XFl_#Z8)f=&V92sp|GeBSwP@(X2vNA!jFVF-zV3cj*+50 z!>uI4sg>6?urvcxAIfrrbvIvSfytgY=QilG7+w}5Bj6`)z?)xoS-3EJ7gKfq#nw%z)ZOElZid`^}ky3nf)4XkxiAk>iq z>qbME>vyEm(X-rNsI@Dv#mu2vFb%Emjy&sxG05?3uayZpX@QIIwbu2DmDv(XfBpNv zYmy3m`GY@ryfB6p!&*VFGqIkzIo3>JZdbXI6nQ@>x+m&=TThtw`H`mjg{%FBQh`&z zMucGuFT)2?iOq*I_vR?g*wj#v`X&ozu1i^G0HE#JXVvxqr{>D6rq^KR=RFumkMN(m z!JCXwpG!cIUnzr%j9xf{iu%B5FfC9>k@Xh6fxw@-*(?AUyTj!7gi(8&CZ0bhE@?_< zv40*FF5$*AT#Vefr-S`|)g|O*+EV))k8`n_@a7*s4qZAX@+RnP=Z6^Ive7TT^Tn1$4*)AkA#`!a(HPI69~=9De9@*FycRtt`34FVn{5C?lrs z)hJ-96PNhn6aJSQ#?7?xj;|hq4Tf+-`=`6EfU- zsLtHnbY$ZDN$qvjJWdsIJ%h9U#&!nxdFE)_yp0j>SqE%&w4b~ zjvw67PVk1nfwuVnEF0apB9EdiF%~06c0q~=K7ZOjR!w!Kcd3ky4MCQ{21?I6YmtOE z-TAr^#WS8m<8$qpnjs)-?hto4DP`SKB9pHw#L;*EJ2(;Yv*!m&Z$|eRVur z3EnP0^n2BA`&|6FcrOV|&m9|rg+qn4NoW4hq7EbwQ+fA} zMP20eOKDL+xL1c$lDvxEh4Ximufa}nu7Cj*PLf0s6tl}z1+IiaH>JC^qnFxw*Sph$ zv^N&?mF%fTtI?nZYeKj!|MBDy}%EXWz!f3;f$h|?b^CpxLjj5!{*!t`O z)YimhUkuWSW>Ru#&}H7fCA<0L)6Aa<7RDrIzIR{ zeVlhAEqtI4@N(jB^A{hA&e$l_WHsJ-q~NyKDp!WU2G?W0TuBPlT8;67GYd75AvnNk zbAK!HrHem+5RV{&6!=_3R*A+z8E4X~OI5dux9_rez9A)F+v=ru^N=rVWA-9b?9IIO zkR^}(>HkAo!})$sJePohEcGB)#!XFc&Ne2)8CgUSL23qfvh4-*_FHgxhj3bQoc$QN z1n8)VrL>2W>*cNb?KZj9?=mq2(&R#{2h|WSs{9JEf%F@O+S3_0q5M)-nDVd3HS3zV zSof|>bM2mCvDZsLmo_2hB)@u-(`Javio0TAy3p}X3QwZz<}YX@`5tI5TVNWBo|#H4 zOaQq?=J?CRy1q4ogv4qFomLVT{hRidl>@e|LG&9GN@bV`n^8)AjJiL#a0s5}#xA?m zXsyVmL|JyZ0A962jZqSh`rQvb*y^&w@H9m6B zxZ(C2Xcwj|d2Gu%Ub|ph5Y<=>WGrMzj4iv@kYL+`Tw{8I8YQ5 zB+}Y9NHkzt(Jye=v&G~IfMo0Sp5z-mlcx#sMfGfSh{7qZOw zTw5#x6ZivYX@Pm)%KZ3l1%0Q~)OxS?#4?IJ5Nj$^neok`*dG9>L+-}#)U4c*_-nuI zHO6=P@@-`~VVRE-&Mh&4Y8v%Chea)CFm{$iyt{P!@1n*6)l{D#vq6MW^mm`I6X|I+ z-tW9Yt8b&n!K#y;A90!Mcm&OT*N1gyXHKKlEc$#o5ZJ|hZAw_}BsN_Z@4m2o)V^wd zjsO`3URh^an^tSLJnO$IB zjmI0Pik=Y!pY+L=5k0ErZqHM7^_EBXkdry(cKRvoD#IAj&O|ENICFg6`w}Nw_$G>l z(w^g%GNw+`Lz(w3x3x3CP+diAkw&4xsj-c1q~3Y=Fdfe zj}lliOEWfhQzhO)@CLq4KqgGoos@$JYL-HL>I&MqN&CmPu_5(sOO>L@=HwY_G+CbF z)=h$heL}20(y=o#^oPf}maEo09%Ay(>!-%~0jW|jr5zx;GSU9f>%#Yfc>dG@9+{%L z7f={P>*Lvi7^qQB5#)c@?nlb4+=8^o8y9ejRGy~gVuJ*dv26zE_XF~|DRPy*Z$!Fk zI{!r#wHP|r)BG|Dq0CM#uYZ`_TWqvuUv`LBk1&UP-r_xZ3-3Qb`+mWtVxQf51z^^moH1S4Lo3f#zNv#U?)&m%L`ef~FC zlSA%2Yi@Mi2+u4X_mZHpUdzd;=!lGz&7U$7@E2=ukzbxw`WT&L*&mbBbo2$1c;Xp(@V*^c`A!D+9AqiPxnQsF8jWYeF*=wEx zKxB`>X3t2&`-dm8t8t(&I(nn-%ChQf;LR2$5+OXgA_!D5gtry&V=XwrV$aOMsVg%x z;SIxwcb|TLK-ED^CszeERcBxwZs)YryEiNwPiuv2`SS<^Z$VQH-m?&tAr3eQx$-{C zWW9sv;BUVf%D?LhDL(`_(k4XpOH9qQ<#*G+6$E`L<V$Ka<7juWY`gFgCd}yFRy6rCxpfG=%(5%O`xfG-AQ3%(%rlK{&5J zY2AM>%IuGQ?x~g?!+saxL;Rmr(a4bshdASgSSQCvF6Ozhi;u?^KIrU$=t&@jp=s>^ ztxtV{xWJQjz7aTx&dS`s&1wJJ9KZ$vcuMHP=dIDZ(Xn^f0*RP71t;znqD*NEf`(YJ z%cN*%c#jxVA>fb+Zr{jy)tdT%$Y308%a2K<+`JfeK9N5nWnT{Dd^EF1&L1^Zgmzly za`R`$R3`lpv80|`NpL%#@Nv0J9yc`8#9m&7T6w-n!T+AfV`CHS$iP?}K6HKDKihw^ zyBFEus(5?y{bFUhAktB=Xa6LKhCK87PJW*SUtyq6fGVvH;==0=mEa@$3YZiG`bVSM zgldfo#-)|@9GYZofcUz>26Czu0jK}Gw>BKi{NmCpQ9IX0F-Em{`6yM7eHdVVJ1wZP zTf|^M#)<>mx^+WAiqAOv{QzEsEE4mNPQ0KrC_<$81(Asr(#^N^?q79VL}EvJLXdsO z0AW4l$+Id6q}b{B`wh}k%BAs{TVQdjNj%u5u4&`TN2-0iEOoO`G<+s`=0pg~#aiP> zA3VLEL_~w|qdjiHeDT6i6Xd0!u5k=xYTcU?cNp1|};#XQ}*ye>lhwIdVfu(OVF`Xiyab}?Df zfzJHLgPHgoX4*fW0xF$PiFXK*XdQCOq(|lqPmPZ^h@MWFoQ%}E%Ilwqb(ZZv^dMnj zN+%+0ZYRgK9HmbrI+}a|eYM3YVX=0BOtb zl;8&gWiqa`gmT@ap;N?ky7OPmX!33qqS8dUXDknA%G3zmNqAC?!%|a0^!u;r-xVbb zUvaUK(A=iLaWv#^6V$@{jP4VHGvI@592LXFSNlX_+2-iJOjl_!rxDA^#^)zXuNQt( zGLiNizdKN*DE#oer|X>XBi0msYjJFTPE7Dt*nS-*dmVnJz!;bsF**IC6q-!Qs0VqvKqO~?CmQg@O=~C^hLLjJxHcUYu7l@6- zdxQ*?&36lniNqU0G0ShF{cx7vcwMPI+>{p7AR6jUl)C*Qk&WPNAP{na*u zMP?@J)HM+MV5al@n5SU**2QQZ@yTC(V?&L@*9MIqW#l*$k7tU!2<$~is5N!)n?yZi zl#>%$GwNiL`>~at1f)9PPN?td0^tfUC??wg>=S)Lxjn%>wOL;BETQ#cNEFR1eJp&jhn?vqrV=iz zc=SEx3vkLyPUG5Zb)ibo;-@g3+|k3Kz9eU)u2ZiC=KakkJ8H;&w-k^7p8 za!t>jsC`FIslH7^KVQ|%E|oZ?j+i4e=Tg#5Ar7chyOCCJE{YL_q2Il!$vw$&v))ut ze?$O#6k|AOSrQ0vdNceu{sn!YaYSOMZ-9lWAS4M?ogN?T*iHKJcntW5*!+1p6{^kM zA}TUjXSi-;EKGHElPW=JyfQv?ekRP~+#Kx0prPyicM5-BJO{p`Wx7%iT2~izwq?*s zNvRvS7P~X+SUqaqslD`%H+vWod;?T^*`#*{=zFq7?*DjO^Vu?Kbv%+=OmytG;qRYM z)M+@C0&O{g`1%;L0^Zb%W^)Q%6+9kM^@kP69Ahu4JYSvN7Tx6<67oNQT7g}QVX*5~ zEfR{QG_k3vHq(!OXC%Y=M_nL~s-7+45q|zCPc|*g3=~2lI~5z_BP(}U4B*Pzp@pOQ ze;r+QSd-rur%MS*L7Krp1f)Z1qc)I9i8M$`H%Lj1=1Yw3?vgGE5k#az296SyW~8Lx z@8!4W**|;U-S^&e?m6dk&%O6^lu<_5BrK@d%P@%J&+*lRXabIV+tk-0P!P0}e*o#9 zQ#Zn-OmJqcg1y4)gO;LTT3 zw#g2q1e{9t1?>fcECW-J*%l-4dpO$62nLT6EF~ej1vvh_2`WWrth)35`pp|5GqQzTDS(L}rx=}yg z!DP8nTcBI5e5x$x#n8Pi-5j-kG}P9~uVzXLvLe;(%UM7C^}2kWuR4mdIZ%W6SO}$L z%&pB~xrP)ZLi^}Gp_>WhWKb82u9Vq!a-`xI!KJyu>AN4YU?_EQ?PtMRtC3=niz?^) z#AHzVHT*c2dKKWKqCQpE#Yru+f_X;J=5A@pmu3pq=Y*vwKC-y2nCs?XH z?{@?t90oX#(S!JO-m#~Fe3@?yl0nfhC@5LP*8g0-y#2t|HV{t+QX8G*NVD$!k}Qb) z@erAfcJb1z$~KZZujW}%$v3$`M($9?%tZ+$XS@G)ihzLqSx;8QqY^UQOjvBEh)q=% z4XXzztaIly58Q1;-`^v|<8`BQxDuS1-)@S$&pfQGq#>ATonADYQ>2uj%PIHtNI&!& z75=>VNTg@3$U>#XteoRZy54W$3Aljq$b3HK-Wlzk!Uf|}tB#cQW6P`4-+Mc)hG12NCDq_=5W6Glb3W0Z zWzjkCBQXc>ohFFseAVZdw$99XQs`zP#CSp|L+JVLzkqY6u1j!!DNf1_2#{sU*ZEOI>0a%J{L)o*$KDC^T3zVcT6i z5+B9A)t%lBM|!^Tft3RLz?6SSBYi%U-Yvcwv{+s$^3jqxEp;US_efHw0lnB{b5BQI zRaMoX+eg4PXxI2o=$m=ItgAOz-^FfUp$s$sDqMy-$A+HtKfCB=_n)c&&%z7&OAy*T z7$DgT@|~4-?cSH5V3QwHQ@EN=M|;n}!ADt>fsvk*av9?}lA;n4p8@{anpX`QRTcT` zJ2eeNYYES=7Qery?JYJFhotepY6|}MuD)yMaee?+y7%Zm*C`BUGz~a8(QvKvIIZL6 z471p1MeNS(xshep5!~*ia z4hbczV%4A~Rat2z*=6>8m!z@5ZN+*!2%X~Rt3aHY`?uO0>PoyD5@f|X%8fOOMKy|z z?TU8h#CbO=v1QP%M5-lm5yM-ZKRipfxF^B2hR*KWlG|Df4sY1Jig^J zP1B9{1<%jyw{f+MB=%;jAWB42&8PLY_G&UWYOnb1N=;FEsN1Zjr2C5B=F#P3aQ+=h zyjg&&tI&U{T{|{*cHnOgbbQg0^p5hIhtZwp$NOKJw= z-o>6n70nA#|J|a@Zq;L63Kb#KvkpU~a>Jjm#PnKoIA?)+REyNwqQ!)u|7~!hw%bA} zt8!DkjIG<8`@Gzq(2~&-b@K`cVC-k0)sA8e*4T=tk|PNyPMQp=iJGbamK=he!xyDQ zo<+OvN@5fJ`3vtl8k9d4dT8O~5Zpsh#7sPLf32J$K-CFvu&1tVfj1^REA}75W=ri$ zd6VoCFcP9cTXdBrM7*x=PI5Xg)`5E-vHTaa1-El^*e(#jtzK2dSKoK*-+MXkdfZ%a z6FBjva_&gdJXc_I6;6>a87#3jI2=B|MwBO{ZUpD%#{ z*vA$AT~6Moq|7-3$gjonHg67s6#~xoet;D&V_y9`N({~g+WkNZ1^CJ_ZO&HTs$X`Z zS?1LD*$DvvHxmsc!Hc$VMfU5?AGDc8x#bS6l&Xe*T^zz`Bqt@7QH z%1}M&`_#WnL8a)dEoX6c@YhZ%dRX+_WFYuHD83o>&ZTJSVUXikkEaRMBY(Fq<4ey( z33Bp~haE#Y5u#6XRE9ye7Kw9m-`v9Nn_n~Iv-uzTno#We82AoF0w>0z21yrrB~^Lk znHirZ&vP^;!2PG|OlX3XPSE0wn1M^rlY>{I?V3Rz+Z+&_!7l}VRhS_KsdQ!>js`(M!Xhq;%v{vhoccFE zA3oT1zNRLBxeB|UjxH*?lB8DV(*ASCJ*L6Av-2&f(2SEu0R7F!l#_{lXW`tSv_bVM zc1}Z#Qy0vHr_Hea{lxo^1CBQ?Ij(nTG*@Z8@6`y=6xH^+19{QcE>_+2a>}d>UACGo z0~UV7Zghkpw}gG=6ynKWFg^IKV}2(0eqJCgpLp(NTz6M*VWal5s8)C#p zq%!H=bIhsUyYokR2Z6&iyZigU+b}MonDZr1N`SncAulg)&Osc2d2fbMooc5^IZ#aD z=YNtqf*F3xyJo{mlyZaTz2|a;;)Q>IffarLE_$P77GZU=F^=XlLa4k2A!aQ-bz z0=a5t!6;BmoTiMsPG9oKNb5h&fZqI)=$ndoJ_|eD%U71>`D*w;##3)ge&(~XNIens4H&G&xHy-J zibwgEjL=mK(RS8c4BXDiyR|T@ji1`v+gonPH#_0 z>?Z8U&H3tNxn|DWeMj?AakR;&v9bF}UEAkeg55DzlHuv@Q6)Xfe zwBj^#B#z1@dt&ZlqLkDZ6$aD6fRz*0+0Fh?{JVfWF@czn-ei`)9C;xkD*7qUcSU;C zl-xmpLBgmdz&vSh#a~^8FZ2) zMut=)ZMX=t*qddc{r)5y+DT3Ak*1xBzEIR4VcIFX40>=bJevxbJWcgFn)zXwd!DhhX|V-*ucA z$t{h|jW>2m4VsqhD&OrtGgO ztE2=Yim!KL5$rkD0nnERrn{@_zE=lD?EI_VV>$r*c5Y-l$`Y%D4@Htc%1-bDW(LmT znCRrM{F9?$HoMi{puod$wlQa+jM0s3Ao}p8soR!o=lcf)^f1%CI$sS|0L1CE@II8k zzGDCxVPtP%VKMJXIIgyc+hQ7^jx*z^TcWd3CJou~t9-1c@&?QUpA(xW;INTl2g|5& z2TjG*=~BK+re?%^pewr0S)zSe;b9m}6V2W9pu)LP>|k)FWjEtZ<*VF{{8EhK^X$0d z6K%`q`O#ne7JYCV53jQQPw;-63O6jAB{%NJ$@F@8s725IrMA3Ak=q}uTXVwJ#q2=K zlH&rxle5~L-1faOWGBE?$CwPeVl>?S7-udd{Tj@Z6RR1V4uLd) zSj35c13H$!L#e(??!@gY{`@cG{?L|`l$@TPx&bvHXTE*2DJ*SoM|*1FP_W8=Vd%S1 zaq0X`U;V8bH?+>U{TQ=)n|_CA{d*=-UdWU71GO+G0XQ^ll_)n)tp!vODY)6QySzg8 zA)k<&Bvy_w++0!W{ zli-^_z~ij%E?&=WqBI0wkERRkEi{H>u`Yri4xuZT6TTiNINXe`$UM$eL640+ME-0E8F@KfANO7`Hl-Rh&)rpP_XAd8+RaxLz_~>C zW~AfEh4U4cKS#ly+$=?+CnfSE*b&?jMU@`_WX7yb34S1Ly}ZUocMo&voGhz<)`BL6 zJY=dR_8I0tciuE!NLUI;*^Gw5A#x0EEd@0U>rirytG77N6Z$O6oBoFI+;``XlxY5L4kfKv0YIe1gu_n z08`kY(UK5Ka_1y~7L|lZC0``Uojr67z+gI#zw%$sWb|4y=L1OT5GWgRRKj*c0>ic5 zoX8V6F}zyy@06nt|08+&P87rxe z06>|c_q0stt^~>05te9N6IhBjmDD>B9|I{5-tw=D?Dq*gXo;0&4TO^*L8rDquTgt9Wo;25J1^x2AB>Pn7=81_4_ttO** znGrscWouvOaG>TKf|vDM=of9=uIbJ@HAg-gPlEr1o=BKNA};q(K;+D;@moea}|1 z$k(W4ef=zfw5fANE?vG4SF=KH^Thu1eG6(@FKZbG3U#fifs|*}Ee?}id~2bx&$t)U ztPUJs4Oqmrhw zj)G44#1n)hn-nR~nO}T3>RMX*{!hRDrX5~6S5#SKA8>XhejF12416k{ZUjw-)6|E$Q*vC9S>@2ZwM5t_;!J+4t^d8+iBB_jB$e zYHH3+MNQRsmPT=9YqY9x0?c0o>G@=`=g@?1yOSF$PozG!P50O~V^XqUl$b`SjE7i1 z%#oV*bcXk?OZ6M;z!x8j3B44VfF z%~Bq%gL~RMG??{r6*7PQ8P%IKW2B`e0Cw2IY|*tYWQ8AbMcCKk_5BLh|9*AxP(7q^ zXbmquZ&v_VJf z&CyJ(?@5-2ytTbV>UU9Z4|FgH38!DoVPo>mVKLnb0zjUV_l-V~jUscXsWnE;QjFyn z%&_X6ma}2|-CyQvP!$&RJNi0F1e&0gx)6yioAl7^itCL?uO`A|$tH=_hd-8ygCJRm z8AFPRZc4$Hg=DiX>opnPE>k5q(VH$o@V>T-Ly^mMHAj4)(zUJ9`~Ua+wrI)ar6u+h@e;=dbP zb~|XF!7rRg>!?KH_RRvB{^1L&;G>`YNUs6Kw^&7gMtVVlx`#^ajgCjwx(de`?|m`Z z4c`Ahon)Q7C`Q(i3Nevc<|s#4yWBZD*PEl@XL8P2C!tsK0(m1)4X5+O_S z_f9?+wm$RQY_|lZU(iW-&;7PUR?R$rxj?w?Xik zcTN_J>}`d@&I;?VXXgL76)CrD?`G5)uZLLSq!bqRRo^w;!#hr>w=wfVH%jnlgwe68 z%spT$Ak^gZp^xV$RYWFS34ygo8hcq(ZeQ8mto5RthW5gP1*bscH%^Ptm|V(K>np={ zP}Ebv`4HZ`q{ZRp-Qu1Ogha%rp<4NuLJcK8M&=c#wAsC=%5ZSSqc@ev_rR)b=wAF0aJ-QsD^lPh=oWT3X5-r{_pj4V6x|D7z&=C4dTNm+KP zw6)u(KF`!FX$`*mpxfPVIgvyxaN+IJRL^j0Un9Y0_T4w@Re`ac{g7;kuxkN5rmpa} zN;kLjqwuh>1m!y;Fr)9}I*_#(iYe+4HT^rZ%Ix==-4|mPxtZFbh3DYkc=}1YUN_|u z)?CeJXOrNd!aLJPoL?h0tfg5azv9rKwv#?qrKF`bmHZem=Bd$o{nvSa>&+-)7X|L| zy9B>{lV^<4f&Np#7Ys3d6tU5^v~wB1p;?qR_8{@g>#QC@MYz_~y3XA!?JGBm^gh0l zv9Z&p3YN5+%LC{B%AbteBIy&@G}@^6%P6avFzgiN`fZ*9c6`;+;d~30&2yVtbLmQI&t7}tp{dvet?8-WynIPXmLRDSC|N%W?)eH>x|bwtUei7yG2q zJ=;s*K*~{yo;g0ng#ofRyt5XgCl0%*Elg{kJGS?@$BBeaW|sIA+v0{k&?-JC1l)!8 zozDhN<6vY{JFx|lH#WB!C#bD5f@mBrAjxZXr@jQjaq$+<(qW@5qj)qkEv;D1{|%(Z zpRdTKh&KeLHN~&`e>KCi51jH!if}j}5C{SAZZZ$LHFjR!H=$eq@C_CpzNDI=Qo;c~ Ma214dJ=7xXe^=8f%m4rY literal 78654 zcmZ_0cRZK<`#!D+$;!yyn<67*udM8uof(oXn-C&v~<|c|OncIFI8vg{i5?;b4(tp`f7PD9FobprBl5MM1fykBJUH z;lnE!g+I_-q!hF;;U6DNi#PE9Hy!2mT;TH)$iLU5Skpb=hh(mgp15i{Sh>2JI$NT+ zySsDR*gtnMH+8h+bZ~x_zAZuyAG(WtNXy36&Jsn#)LqNk(ix6h(%LyZbD(v%wsEzj zwQ{g`{oh}o**Uo1n#di2^9YdhB;8!C9i0EaC-R?$UcgcE|6bb7+5Ep3b~bf){ohw} znmfGURo3W-PiY{Zl6G+PbhdeB?TR8TO)Kf@>TF}?=4#_$e^1jIZd=mM=D8)UwX3V6 z5EqxZv!$u4%}Y!8h8GU@F33}G+1Z#|+Phe~aG81Db1~)O<-E^j9Hifffe zk+J1F5pUSzcIE!;35}k^Bt}J_ZW{C0a~WT6y}rm94)ipB=o;boIv@7!#~3+{vu0`GW7((*D%y z+4di?nd8It3f1iGADm^MtNwTPv{U8H@c;YXs32uEi(i z(wO1>DFbt5$!&E!YYpW+y{7Ic{3tG$)0pqt-JEMrf1SNR?(xQ^irVLE`NLuONs+G# zY}%iW3HMo2?2D^BxxF4as+XuzP@LU}{VD2KrKveXRXN%tX2xo#x-;K0S_)GY`Og@S zm^t{>PnV=coSSAX;9%cxvgk?2%sP0u$fNFt+eEzkxi;jKxN?Sp)#O1m!@d2+1ZPTI zHGFpO_Ipryd4~S!tncbe|4>hT!g77QcG}!}^Ao%${_C4kYFeE^#u*vA!<(jS+6;2` z%a%(tk+S!~!e8{Zq*U%77WE$KZ&oO!X?qnne6>Sq-O*jK{NKqG1VK_EnGs*c)+0_; z_zztjL>SHGwL`LI!y>+MkVj%k4+&q(O8TRGY8JG~uwHaw|440=thJc_8@p&?A=}WK z_|$TjsTWP3Ogp;0%!Y1;r#dn6EV>Gr&uTM_)do(j#bYY+krQ*B2@`}#jC~}H4*zrK z-=Y*Vc}7YvT6%eyT;0f{iXdqt=z;NdInAh(7j>2aEHfqaZe87yoY)!w&`SpI4(dOHwiJ&$>qU zr{@Na^D$05R*a7)nmXuMi5pvZL6@b3L|v86lR8o&FQ>e$#Khn~zv`A^<)|f%j56L{|y+cF611mgAy8GuEnfqZR43GR>qQmBPdfMBs`-quD;1C%gE?xAeZm@;}7NK{L=zrVo|q9ICDx$ZUsn4tW{9yT0$U3wufv5 zNl_Ce4+IYm4yHWZi@Yw-U0+{6+3YI}w->^a<#9ck)2MxYtZ-y%>So0R1)+(=`$t*7 z>h`(GM9fAQ*kr|0)jI?l1%%a>->)|kG& zzJag$B&%PQjlqIE5ij+Qxr@g+*xQSbwxSZKloTEwzB?a;XSVt^)8pUe@!sEG4(8U@ ztiKyzwNd(s#rl@(^chFP-g68e-TmdYl4#9RYLk}ovtCoeiBZDt7XwdXZ0zl^-)|;S zUX88uq0NjQyJjkDAWKjEiE#GfY~ z5sP3(^%$JVw{SyIb;}LaIggaAh_Y13;??0=NeA2mF82a6COEi=^voLpbU0+2Fvl)$lG{AV+?2CVj-NYa=n>>V?D|I zJe@fvDaEC}?teOcv5Kqdb}TPs+kM83L`Yb8Vb8;?k@Z!5058MMz1~1} zWo?Xs3SI_z9jXR))!Eo!Rn~B zC7Q*cL1;2^w1O)w;&}j0`XU|bN$8p+9Yleaj*eMR6cs5cY3u%e_2l=V2+B_Hz31B5 zo@vGC9Pawn*a=zMq2+6@D~>dN}4 zEpbDLs!i|l-s<3{^bZFWHC7ybvJO#Bkrzf2k0=!cDP>uS2+$sBvoMyFJ}-X4TJyJi zK%!G-`|gU6KoD^i5UZZ7t=OhtJBL?d;*k`)iLe)RKTHx^c& zE44ri?QeWIr>Ccr)t0x!E_S7rl$1zi``DLgRZ&wOnEACNN@|k%*SqNUy%Jw^t45dJ^4*~VCp*QZ%3KMyVD?qaKv!L7@@AF@ zyA>J}J|<>#*hO5ldCvK=kUAMr4O^BqAA6&aPqEw>pC(l`eGR+svM{$xeUW{c&`aYM zD@~ijx?-H7UarK%_!lL-5guOqyuas)ewIx=s}EB1)frdiv7jZRr=7T+97?ED)1W>@ zs7=*psn*A``ALzPcbG+0db~c(?E>Pquitv5tk!GWS+p4aN#BnpeRCsoH4CP3w@bXA zLDx$oyjbcM` zgzw&qFOJLxHdg&Hcllm0J^fT(u2R|%LvvS`b~bhN7|KL&a4;(;r>v6`H`GTpEv?rX z8I%^!o-r^mpz7)Ay<5UY4}!9glAhjic*w`h!on>i6kcEdP`amJU(mwR(iAq5wXH3I zO>u%Ax`X3K=c1C5$EBnT$LeG*&d!y-=Py6j*3tu?P|h47@(Fu#37RZ?l$m zcIE|W=G~`HceJ&&KNJ^B+1M1(-YV+N-{iO!6(1kJwz1LPL*pMYkj!OnYT9<62?Yhf zVQp>g$!~#{u*Jp2g#81rCXeG8cW!R(+=wr9s(+zkyQ2m;=PKw`W98B8>x2uMoXizk`lw>Z)@19Qf6Q1y~1xlnrhi)y#d3kvW;Wl#BFpVon{90(>ze`I?2v|Qn zbRBeM5oOu`+GiOi=V$3qo$B}C!2?qOlu2jfwFT$_(HenjT% zs$+OoZrchb(|XDr8-} zSz3DcqbxB)ZQ-a_7!s00wm{grd5praA3>XTOz|71$}=qQ}#yMiW()m9Jb@ zzb=gHnsj~p7DHPjVlpn7j+QtPt4d*IVUhFkBT=;287sBli76~$SMQ@8*bqyz<=E zww+K_BmmwdgRro{6m?)5?bl4<&~yO@a?J4QzJ3PVv>(eyT2G$5NlPQw($)_9tEr(8 zxV2@6aND`84e9SyjQDtmx%iN`@enr_6qj= z_wV0x%FA&fY*_Ez(~f&sb6XtN+zeX7WG<8LRNiNfM;qEzTG>KRRQ%SddE?9qOnfF* zs;hZK{!W^EtmTHP>FcM(`1x)c%(X8r($9Kr-fP_JrXZ!EA)!|1HK2*kDe0x@dtzi1 z8PB4+xHgi<%F22_u?jj9Bp_S-#a)ehU|*?Z3Iz+y`4B?XzvJ{2-DmrIl<||!?hQt8 zg8qbCeyqw3*js?!p^BQ_K%==-%RfFkTBu*m3YysLTIdKJlhSx&syWrGoRygwi9zFo zfByFmZ^l#{=P*v_7B1|(E(nY$R1DmC_m*=iv6FdJwCmSUIH+Ub?YwJjq=W>r-e}Ed z1TS@JN^j)kWJiW{e}7-cs2t+UZnlwZW@aYDlaK1e64gtuI)7Nc8QSr#sn1ixAot9* z-cZnUpE1j0@h07~#w`wVgX)%0|RHOAaYw}9hf=gp3%N=yi;MovzSv@9JDGDuyx!XSIv+jBye z2t=}{fIwbV)omOc99A|q^&drgzTbcRAa`ZP$DE(8ckx(B)J4uzC%G`nYH$_G6!bb| zy;@eiLOVJ->R&Zuk`@8nf&^GY19`N_KBkwK*Y1GH6#=yUTH9rRASQgn5*fv$-lD+dco|Vo)3b2UX490gy5-Vg%(r1JY(aHA>V za}(H&n-wilfB(MJ($XqTyKkMw+{nNGUEreNOGK0Mz1`c6S0Rqbi zH}K#Aoq&Kq{$Wv#_8l=kzIVq-b$ znwUhlTnx0xC@U*Vb#`LAs#;kwXL)U~ZB168{<|3d7g1HkZK-rEIn2G?2V)wpLMh~m zIrs1C7$>uG>tQ$xVSaXMYFLHO3ddy4Gd#bGC7QQm84m>|7pO3l<$AN^!e-Q89Ht5x)2U3OHu`YUTkx8>g3jaO%z zC#S>yQC(e+oXYGBiiR9uQyA3Q8zs(m#>fBkfBu}~>bJuc`cBg^_0`bu#+KL zBvAakMqJv@&o3fkPd+F^PDKT``5<%W>2Q|lNwWVbNknus2Zjs}-KmuF-Us|h*|E`p zYjron*>hqfaDd!1v$45(d3njo#bx3)3yA}=N(eDkf{CT&N<$nWZd}KomrGE-c0EKq z;C|u!|5832i%xOM6D!W9V+G2B{#PPUy|51wzOT7&O~zKs1$C^un!##^crc}Ue5$R@ z-@+MlqjGU^Ia!WZH8bq2KBhOyNuhkGY&5ZOe4cpp>E}h!l?9K)dsbm#ihK9&oy;CL zheEUmaSpiA)^XIta_^||JIqG3T>fh5iuOBXz{bVxcBRj7?aRdQ>}%eObeMl`a!y`d zQ-kB_RR3;-wV<$&o0k_gdl&=iY+M|{$eoq1#uIJ`2eosxy|WvieSs!mKm8{5ZMio|IfGO;XsC@9kvMcM?9{`U@DR=G%702@)NEFYm^C}OBoXiKo zo9=13+H5g1Govq<-oHE)(KTDteS4*|K~n-y%Ydcj4zRbv8adZTF4K*sq2^ zpPmJ{#glFKmbalaeos7FEXj(Z(=#$Ur>7||{KVnG)pc|b@Rc8tR)7Hflk=8;-WOxy zmxSo(==j*^%D*mYf-$-VhcdAYIg@Ew*^?V0K0 z0PyBLS z6_%H&`I) z1P5H;Luo0I%?J4q!$QvF$Jmw2n;i@HW##0!`S@PLJx4@DV7C80IK>Z>iAhg?3vUHl zsD<(`+wJgTV^dSv_7^L@Y&YDRyZT$V_txa%`mI~HLPRX1glYn&#{*wH=alU4x*O?Xs7uS2Q5@Cs!BSrFimWuuGzZ_9k_KMA+m21R22TduUnYNk613c_*&Nthj%EDgJrkB?SBKzFcg)CDNv z*6o=u$~e#2-^k`!J2;SVYS>fSggLQ$uAeD7ZhhHl<`BB=Nk(my{1v^=JWkO1Ms#@2 zd;RF|zgZ=89yqh;x+*Ay(a~fNhXUU{KO`_G^}&-&LP{>wP(e# z-VkBBx0}!HGakBht4&2GTC$;Ws>40(li?M$(iH@453FC5U7VZHMWglbN!AO9IBjxvd#c12yu>8=?ArF4% z&K+#cy$m&HE;&Fje|P4h<)}T;hK7bhJjBa&|NQymu~pTxyFbA7_G@Yu9*s!j0`FUDqW@a@_&3KK~LK|}a7e8M^ zOYugCrK8Eb2Uogz9Z_K%&kk**MV~>_QdXvHLrN&gN8SaQA-HP3lW_(o)*ZWe+>lZA zK52y0uL4x7Dm6Z5b}lZGBU0SZ5g@=5sHhh0XlG5GlRbe{l#{~<2?;?q(0oy0 zmXx}B>}Y%(AaDd|L$2CAzih`JpdzZDaffys8UXU7=*@;GP@poz{i%n=|A}<>^x!-e zS|?YG9tDPnl#Hy+|KG7c5DeFj=lsQ;ot--$0LuW2cQTsX{2G2n^Z4=O#dhuvGH}rjvK=!%7j9iM!nY&JJMLd?s&u0Z`Cj$>^8fw z))4jetI9=>{{=>t&%Oduz07Vtq=Srz;N;%kH@T?qg>u~#_%pf$oStpIQy3DlJ7Wc>0CFof#COs_Uq#9=I?S6i|33ZtWLgc;cBbHk& zbJ6gevs<%={KY#uV-`=+8K6+=v zK`}8h?cI=LleRkvy_C8M&~(<%pYyt=gar!KBhji}vL&eyYF})zRPKt4wflRnkUeOt zicy1cb=|pM&A@=;>hJlbp!+tZvCrNkY&^WTOrQ7r1?^LcW??JuLb;P3TO6<={y#4O zpUCNQe8@Vz@n28{6Oxk1r}r*|nl&WQt5<)OG24s9_WU*@d#xpWs z4e90Luu%MwiAlD#f8W~cV!z+3tB6*Y*U+Hvp|M7u*4^9Jce^ukPIXvGmXYB0UuGh# zuwZOws+8MA)S7#vkGV|!{HR$}vm!?BDI28fh`X-g!>!$a_>fJ=3%9vW0Z1yO`vba% zG>fYCTB2VOW@4%zF)^_zpj_@Vw>jVAFyFv8-<_f{VhI70g@mAIhr)VRZ`2970-=lPd{_T1aI6f-Q4jM8xii?c>N)ekskF0r9ap zv20a46(X$Q7>LjI_V(Awp3H&rjDZmm*b9o=YishJ^|b{y)^>I>FJFGb+!*NXmGJcy z-9I=OEAHhx12!cDBK-U{Lhe8hlg|fF0UQo2#p`P;Q~?_<4Nrd$(K0mO$;p4iUV-lT z>%Pfn$7@{8C-jhDWD42cuUu(ZSheI14h}v$E?h^N*4=r@jt|k>F7<|>F-!RSw>-J* zj%2H^#iJBNn2n$wHcH$)s1JoInFLkL8ESC>%)9Fnelrjiv)((R-zO$0Fw+KBq?DC$ z($dqpA*qj@4jA9(6+QM45%fL#Sc&Jl%dnGSlcxB0I`tl1VYLkXZ6#GzbLg2DqJm5c z_uu0;8gl_}1-RO5GNg6Ekrw!xdQ_gWMRjH6xU$&j7ctQe_Ze6lr=bBk+3mnXI!b6G zC*~FCxcdM8`L(zGWrtiPWz~7lhA`1DSc(pKMdWtF_e%GH6udQlttI3R)3+-vv_!wX zGsa7Ip-f^Ry*eGO9A&Zt3e&X#96|j=(z({l0;z zA3s7iHf*b+?@SO+N!RF1#*9Tg`t3yS@h)csi@O7IbxvjFeP)yL-jX5J2{$DbmBr(h zf1(iY!RP4`F6quoh2FrCeVdpFot-s?jcRUZr!<%z7YG$@d1WQHsfh|t^bj97B^_cB zHdPv6JR>3_O)V_YV81D-#(%?1UQ~OPxY7gsa{>3AqClb7NlAAO|NafXZ3vB>?epiF zX^VU3mnVl~s#TvqTR)W2zxB=8q&{l-Yhp~PNO41*{`S|%*^-K8+cm9~nfuyQH)8Yj76Nl`l>bl3;s>M5N z)=@C1JVncZfR3f(+EFbDBD0BDXrC~_>y1+-{;{8gtCU40E7pt zhcCfG-c0(+wYl%#iGZ*QN_jQ!@lxvQ9zJGHVIc-!HM9Flv^%a24i%GUuO^oC;|ZSz z;of@RvhuWW{1yK*3M#5cwD@WbNnfqS-qLzAvpj3YT{HDB| z(`owkhGoI?;?=JQ^Ldu3l+3*N@f9nbRgi_4Wuws_OwSA-ROvHyE0i}9zYaec{ZeX> zumkVB+@ysQ*LJ1l8DuQrtsz?IyMz91I|@QS`Rbm*r<}&d=@^XliPqLvlj{2A0~Ut^ zn@8^|D)0cUp#S>w@(b*CCc9*%-9FSgAbBUFZ=fV4B_V`aL{wC_om!72cf5Mi#OeW} zNB|icV*V6qc_Bpr-wmbSl58UFgPk=t)(fp#eYKujrCNVaP6QPnKi2%oG>*l%iKH>V z^B0Dn9owG1S|iujt8Q$Jc%00+Fq;4Pv)^SyoAmWgc79R2(_<(H&~}tIj7_*1eJ706 zfvnZg(BKHLf?3(`jm3}gaZ}K_Kwy9s1a4iQFfa~CBxo>+h=`uPe5pe@ni5_Yf<3af z#tM#`(a2k+S&Sc+-$|Ge_ofsws7^ULNzo#ZO}E1Mk*+QYJS7_2LY^P7q`F%SU;p1z zA5to+E?7NtOe~f|k$a<_n&k{e{P>+3cdLT*@vs@dJ& zzbE9zUaOm_ghurw)c*vdW10qUl82Y}5E7`Ao*o&(z51U2&24U;&0#H)cv(C8rDv&a ze*URqTQ$*RXvJ?CO{g0fyv@kS_=w(10CH-3V?hDBrluy?v>sVnT8ST87Cv?~qt57Q!@T!K3#^r8u?2&@plL8Bz8XhBjyS`?b)72Su%#RajV?|Xu)wdKn zaW$2dY999mVIcvogaKSfy~%9G*mLchL!)`YOL-whj4^eeJ19a?>h%67f84w{J>@EsQjaDYuA<6UiF!A5$n`zEI~ML zB}YE~;v5~9ns95|y7Uu=&ST-=6x-!(i2}uwRH+SU|B5sVcY#Q!5aPFenz0gR`pyXD z;TPtv9HwCaOGq`XfXoMA^6mVj>y2KGO7aJOah^_2w?P|V`_sJvJKorsQyoU_MC4%-|hes zq09ZE-l<;D!hygc8b~$R#Tq{-YK>++M+dgZM*FHjH&Ij#C^capWt}L)sy>#drW^22 zpUMFR7@?NsqNyKwdwUNO7#si7X;7dh@^q9sc8W72_U{-Na(gXgLf-}<4!D?3m3Lf<`x-37D1)8;HKIjyn4(1dUDGbK%PvUu^#eI#+B4pV% zGXZ%Mx?;dF@v~=hE6%w&IVkXM=$U0+;uI1>y8^7GoT+K<%ut7S~MeU#&R3JzvMuC-+Mv%`lhEOPj+ z<^OO)rR^q~?hJRAmK9|MPpP!F{$az>_WdBVY_SsGhY@>yn@asQ(FV57KrqD8)@&2S z`SE}3gTbp~#ndN?0%ZG#=xwFcTI=b)6%BJc#~n+1t*ZxJN~(kkeZ9T+Gg5pD*GU}2 z4+Sc#g#auGTD7jZ3aLZmoy4F|ka)W_ZSuWLrRhLK(UJ;=U`;gaOSo~U8-TKO-O@P! znD1_sR4hWx2LhCvh3NpJ8wWL08NMI@^pLGzb$AG*g575mGo>%RV#_qjBPtpRnmy=@ z&;iDQL=E>1Aqs8F`$&&siM;1&I*Kn96(@AR&a7{5-w9}1$BI%WO0#NGr#RMme@iA@ z%k%8g4|qq+ov`WKAB66BzPEarnL4smB7ix~8yg=_XioE^rb+Ef&Qnuk`!hS8Y>Uuk zV%chyt}$M1Ps{6Of8&}M!5w04Z7rdxNth-se)<_&Fr^^JIBWiW(Cl$}sg{JOR2@zn z5?Z!i#EH5(8{{_h4Gu;;G)yQ^1uSBY&c9h^;xkomSoj^?!ocy_))sPL?(S{D*@#&AHrJ_vF*{deX6PFF7|DaysE> zv(FrncBxOJ0GI9Q(UaO+OiWz$I3K&({dM+D#%vC04hcj^F#7V+bn{0UJ%2<`YoBo? zDf4B6xSw9G79biBNnW(*2Wp#c~~5!7f2E2W9sSzEUPpUVxr z_Sh4TUE&+We;}fJqG{y3y}ztU2!tm%ez<=0inu^TTs#^mWk5AZ939zN>(OMsNmtSv zl6`JPi-4c9lxHf;6=3KA@ckxeqtp!b2bRt(HqZ6v3zFOhZG^a?h&ffbWWcBP>Vik6EhV!|qOwXI%XlOwk9q%*C$BU&ahca$RRt1Wz zaKsZ*??^h?1DKm^^yCG0{7sYhF#z*+$FJdresQ6JD(7csyCZTmbf9szVbDZOJ?`)S z!ZProIC}geTcV1FQf8_Md%MaGd((TN&rVCSQfFO9hF=+s^#a>+^8NPM9^zI^yakHH z)y*x8P0yZJ%Yu`bOo0W#xKaF1@SJ5P9q|-}BpB|H*8(dIz2u#mnwk$KB?jXO(vp(b zHa0gAmsoBt-CmQeYZ|oLh>aG!(t-dB;`s5@8*(;c@QxIyLgED0>)Tjh{b!8FxbW!{6G?$ww1v2+RSIPgdaF(-C)V(w&tAiqSa##DE_ z`&rE;#nD=*Ekl^4wnB;_WNbWRTt5j{JMhFi*VaC;mNW*7(XT}8r?tjK`ck0 z~jLywPL)*Yudp$hq5zAXZIY`$E$|2P6 zn}i9Fu@bV@!P040(P$iUDVsQ0J3ldRS<=*XWNUmhY{L_iN z&ZhiuSO)W5qxjoKN+Ifzh{7?(Xj`o03ad)5km;az?Cv6t&TS?c8Th$#A8iPuXvCwy z;PagHFY=OHYadg93CBo8Rf8ndo%IxKzL4P30}=PLD{XdLCME$L+B0F zbu70XasU;5^}l!Y);qM+V)=_m{NQ?w`d_tF&zTAH`xvE!lIm4X9LX-#^LDDtti~0( zp2fC2)g;8kxgb&@Y&)b#HAb=aqO!8CtIP9|pFh)n@P@ovE|eT>-Bi%21nVS!^1g@2 z2cU{4I}*c{8k%{CCw~3nczKm5+~~S0Hzw@rH{iAH+kQJbV@&I@P}>rkAS;bna(21b z{Mc>hES+n~;1(Vn8dx8Z*Q8$A6ZIqTOe$8%5F0plskqtl!!|7q4^0PEJ0omhgsbNlh%uej~UYA1pWvz*7`;k@G4U&I@N8zp^7~lGNG$?XjCfrqs2Ahz&NcPdE z_*V3tAOeTYKQfYd2^7H~7Jcl@MZp(Nf=msReeY8bz898{=L-s$?WU?NwJqd137f_S zY;Qh&7gKk4HIk1Y>?xR`K^}o_pC@Ct{tkjwR8{flV=*BWH*Tz2+~D~RheMiFU)37T zIp}0rG?7U-GdPaB>rmO=C)Fa)mf8QfVXd|LPmTJcdu%ak?u_rsN7jPJ)C;MR`^!8j zec*mSQ?g_jzOKq*?1QsosI^|wD*V*b5;yaXA^3gHcUou=u^u5(x31??gvo#`fl%G^ z7pDhnP>ENs?cpkY4eCd0jq@malb;x>GWIcr${Os&qI;{IBqWX$YtHpR<`o_m$kN{i zPaae5I~42s10b2`L!y55)PCnOc5l4A5hPhvPk~W;t-0k^vgU)K_~M9a0Xe_lo01y* zeCS>M@+_$K_-g?n9j3@giI*2SxJ62Src00U0aDHbr33b&*)TEK3E2=$Vsvy=J2`09 z%_wwuRodTQ9ClYM$Q%GZfMd?j5PSA(x|I;-K)A`h|8D7x9Ypwu(R6orcgC)P(hia>^tRx;CVwQBCnqfZT{gU}`EOyn{@SNQ_ z>pb3i)ZDVVdX5YV^(*}$c~!S)c2Qm~Qn%jqHQeM7z-$l3 zOw++vVPsPRLuxwTy%|DC)O^5}!_1miaFf2|Y-kW%R$2<#eR=JDVf`KSgk;+a8ZVxM zUWyO3iZNMS_~*it?F-=ky882vzHza09p66|gvi0Epg8=2_Q&y0-) zfyRT-LGW^V2L?Kln-B9p#@z5E>LTVOk8IyOLIzR*(tao^(u)^W{*VD72_9N$aFu`_ ze?6cTP`9%~y7HgWXC0bUdaCy~(c%IWb*<69N_Hz{=_u;@rX*@IvmQDNQUYE~NlPR6 zlNy~e(BJ=BrGI~K)#gF}4Kul|YCE)=XYV%~R@T2+WrfJJ3OhAtO#XR^nD`JZpsk%4 zkOAB&Fn)_&Bqp68qlJJMb1Xi-KAE1psp(RP1&2LQs_n4Yvgy@n0>BYjKR+>0^aY8N zy`?_iOO!intcXe00S*%Esr<|@?-5~{0xf}0l$vnk`ZeGyu`+enlSPi`+|SlWxf+r% zdN&$4zrKmHd>_fKovvAo`4*aX=i**@dYiHvKN53#w*)gEM{1Yg-ytF4=Ha1_axqcH zKzuX6l7dT-tRTwz%NY`=?!OU=%J+;9l;^vD*HCDuqe_@y^~nr}8%M6y4W|Kp4hjK{ zzJbAnMH&ma(L+_Ur%zFUqeirWRg=;i;A23?z~BZN5Ky7{#~-}xRG(++i+Zo4IHfr? zn63;xc`K4P^1&txaI&O342q47jhQV8HoIfspu>sg7Qgcp72{h5cs~4$_qk_OsMs;+ zr#={5%n=PSlb#0VB4^y%Y0p546`CsLc|W%ILN2NkHie&2GSEEYiM0q0>s zL4n!V9=gk7s1mKM5`!PLgpS_Mb@birdpr=MfNsnJgah)xKcxD|&A+DU1 z{OAEwj3U`df$&Aw0Z{TCWd?O-QS7QDZ|(!{eoOcF$%%))2nLURqA@Tl ziyAOnkCLf|QOR{`ZJC+DA2G*mrIc33mjAJ=YImyi&f=@+XmR=B#pZy4eQUa&_xCg{ z{VyVShUC;MV|{&%4PBtTfByRQh^nI2uc$HUuo29#@M;Jc%#Dqy;XqfbHm-A0lco-j zer&p{$CmC}n4)O?6KGH`AAjRUUw^;+n8-S5=IZkDQ?Mzq-n~myt!b|CSA>+z)hpk& z=w7|Ju7R$MnwF-BmII%^Fod_fv=GofRSzH{+QC`_>kERU2z4~i_S4!oGW1}&=!O@K zwihqlade#~*wV@>E$+rXc4<zX z%pi_pTU*=CHyQ3`7cTU&sqrXNlLMBEmf(!CuQOQZo_CTdDUvb5GGG(6dzs`Z)zGa;jwlbS2Yiw_Sy$CcBHgv2YBjo4jgN#Xt@qEPE zp|%%PtjCXUAwu!iTni2O-MTWc2ec-;T7RqIX2>3#oZR)HirIT?|e5%<-510YL~0Y%_v`*9<7DsBIMv1P0vA4(^)qs zzy(?y84P=G=^M;y0)^1#XCv1=9wh|T5wTv0oNv{fwBh-^0#6SnJf=-a3AC=CXSP2t zzm_FMs#Z$M6YyA(A&%y!_epD}egLTfI`L>ya``6c7rdXnhXT#V6m$lsza+>3jS9Kz zdcdoNW;NE=&>$ovC-?Lc4omd59Q-ZVY?yo|%RIK+^e*p5d{L-}r;fHZ0Dm@S9Y$aw zp|WI<4>Y+OVqBXaOyv#vRAR$%ZUT<5rIWp-#S9LfLB8<9V~-HMqiW}gcuI&Dvxgre zKyw3Wv*)NdZM>$~n1h}D^>J*+>Ook3&;F%Vo(0gX6R^?WLAwM`%21mz|c ziwd@vOGxts69Ex^drvLOO$@WNT;IlDGu~;$X5{))?F$%6`k$09kbA;W)S}_QxCPmj zB#uP9w?q5EC!eI-JosDT_GoRm-0WVo1iA-cT9}k5Dx1_sxMUDUfs;n0DK%EcB;JXM zi3+b;{3cCooHBcb9wNN)c#$E=;ox{8`j;@LQzAy3wki&d{?(Nqq-zQt8=x~xZEe}_ zo&UhMo>0>7tIbNUE_!qGpYr&wg1h$iv5duo=MJrZh8DD(xO9Z=%Pk*jd-WDlfJ%}+s zpl~D;`ECB-sLzsthY?Q$!W6vy3`tp|1M9Bj`-uaL$pM6<^fuMl&aXrr3U$tIlzJpW z8Q%jd%Tu6q!Ba$Z+!G(!D+vzkzuPl!gD~*Iuh9=b1AvS4PKfC9UU^m}YdKmr56td8 zi5$9!0D%l|th1Gyq!lb2u8%=n5+3F0gBF?g#&0ALt>%-;M09lYQq8cKw1GkT!mcb7 zLtu;$qY_x45T6IsTWm(YtcVMTV!~n;uUQ{*MYmynbLnGA1rp&UbVSbgCxCaU zNQ3!Sxnw+S?5E(@2M7q$Aw&UB*I6}b@nNuo4?g+&ms>4upxHQ?Q{3X7$2VwsLAmNg z%gYZ$`rYX0x0v44Ogm7VMMdxFa1|ML^+`-b3iqVlt22CF-9EM=WK)|cXu`=gmmZ#> zLsb_3v7BGkSVj98G=KXC^O9+hJJokUi$pYea3HFgm^jex0b4HUw1~E`vEjJ!oz1Yt z&nU*T=E*HyPtavS)PqhFksm=-G`F?wuNKp`%-h!+FG{>?OEn%xsf)SIrKzJjc#~^xocJ z+f@UjA;Q?@hEhvG(NH=A{(EhGy{+pl31G21OShTzig02=1GkI7IRJ7Gy!G0L|FPUj}pj;D1EI3PvN4j0dpyKe|KlI4IL#vb_#j*{rMGc9gLz zSr{E9Br0HIc){^ajVI(7H6x>@jf*~SSZ{3f4D3~)Fu*wsmSo*ORdj*l(7>y3CZTdq zxG+l0XQofze4;GLl-`U5EaVU1BfB_&TS?Y+Te1aA{;!w?nZFBrI# z|FMz52o%@|(UGdw-X2(u>sbhJ?Jf9nKGxMCONLCpz^(fof0 zU~Oa52G4+)lO$ce0ijt!8W-)e(x+Ac7p8)X&T$gjq{v(sE|_u=u@(o%6#7mmbnR+mNhpYTR#t{6lY`XKU=fA5 zhUWjRlg+@6P9fO=?UamMl{0yx7yv_Pd7Q2;Jb@%mjrwb#ufGfP6i5J>ji+sGW9aBG z+W-25WAMqY4Xo8jPbQyfyAht1I>n7`rTG^I1ECB-&g}p-_}lmIuVHit^e7Clovf{` zwNBMM8yOj)LnrvJR|J{TLrkKe2j{^Dtzu*?$zc*3(E!2!3avBw9ixxxdH z9lq63>^pOV-`If6w*lSL3EC2PlVISUqadGfq+(=59a_=uPJ+FCd?&ig2|gUalt?~7 zu&n<-zaY7E3#5I3f*k>&db8pR-X&05kNglR>h4{Tx|l$vK{Uj6g5H-Wmwqs<*tT=* zUv)Dadsd!4R$l)m*4${SaRUFJyMo-@0U&&V&$yIbeEU&7@ZU&Xfa-g&I?Mnza%3V6 zps*&h^oaF$$0Ricg}!2QwGUrceASjoiRS-?ynxg_B?74%jK?P9D)pf6A#ab0Dl!Zs z_ZXrBszZgBxu{|Z*in>r9Gm3xJLHL-F;q@_(idZ!M2dQQ58m7GYKJOf#FsIv){A*& z6+4dxyeNK#S{jk#+4u;^9l!HmbM31K3sAo4TXnLszI{y8CIzYm+J?gX!3(jcmKbxu z`8%ahSD+GyRqy9~d&NfPKuYuIz~{5v0T}f`Zjps~++Fm8+vmtM9kgR+u!Z0kIIL}M zc7US)UqhQ3$X7pp=s58qVhmyjl@7I8kzBBRx7vBLGJF!`DzLOXwYSH`6Ti3*{Ys7v zNBTP|K}Qr2-$+)Mz`po-#(w$tZ*q~5#*7P3gs4c=HExrm@ny_Px7~=D5T4?{+5!gs zwVx3oxBqKp-?Vl?-f8mS5D?Lkr66@DLl(#fEN6;P7e(*gVbN z2>mns?<~XC%ohPRvL<6LDD<6A{qm6Cr}O`4y5^`#+i0KdnlRaJnkL(}J=wNx+xBGJ zHYZz??Wv~w_T78`YOPkS^FHV7XXA%`TfTGd0oEa3>42br14Sa&t(0SDUb z#zqvN2kDzHEiL_&i+y^|KD$A0?=E6ZE`_+KphsBPV8MzUq(YBUPDMx$`vGxLd*G-* zRWrz-OkP0&769nsL5|!W2|EKYc@Pk$hvQ*J07M16N)XVi)g@_cm05HV&xB`2vr;?o z;TuJ`+RT-`)T{fnS46Z@Bv77|lxL|z1h0du|;`*b}U06-ugX?oUmbB%e1e()-AP5*md;6ptaOZW=7e zbZ-VK#-f=YZXrO)b8aqT=Fq58P;p;<(pC=-0AyEOT+bpS1pF;v|D9W2rc4>};3hz= zbb5QX|C~a#-|)_Zcd*_Nc#y5f35`X$L0~K!RdzEzu)$E zQ}<}()Zqsb2a2pKUX8Y@eBpnn(Gi(|+j;wF(ab5Fq7OvJRp%Yjr$Zc2BVv7$|G+Cn zRjW6BZ>ayQGKh%bbEGxCr*GkmK?C{%OoxAgfjb0WM`@8|Jn}SjoSBQf93NLW6t zdUJrKCrm=3F_5H&V%t0uCZaO49y<6msssz#!^mY)ZFn!!wS1Zi^Z!YqBTJNSf-$xK5#$N z0GkAWS?$wu3iNacugIfM_GJj)oP7Y>H2Mvc6MeDB32>SBclrW>enf(bk3+8a7!nRD z@c8OVOiV1)F8;RI{!`-&aGv=>p|yaz8^8*OqMi>r{gU0sKLA~K|0l8u7|ntE`pKjN zZH8pq;r%4c?q{{q?W77&HZBl6nR6^S^agC=pZx`(0R_-+!iJEa)0q?egJwWr8CM@LA#ZR)kjGtv+`lISNe%s{Tk4+vP@Q>k6m6~ ze(Lc*JBMsn5+X8DJ?ueK{O7GM+ll zp=Ac~OiT;Wtd;L6~Q{Xz`nRUjaD0XxB- z=09$LAiV)}qJ|&;-l66{o!PG2-dMJsH&8&28*BsMaE8F=$?kHF?Q*`N-zF))Y+Ez` z^6C2lCSlZ(VF}n8Q-b@c2eoP~6#&6l1ccOuKUH%Mgzu${eT{W~B*tH<338=>ni~QB zp%2hW%&n}16%>$6#DM^oaa2;Wec+uKB!P0j?v*&vT$91El$8fqaoj_=k}0=m@SP}a z$gLB_p|MhzTR7#a(xV`87t?Z1t=?9d#?F)2O7(ihxe^Y5e*P3n11JSBmkw1&03*7#Rn@spLTd|G@dR`{--hISdg ztuQs$p0h7EStGlAG#lU?arW~pY-zyp5=)IXf^{pk<4~vrO8WAN(0@<64a9# ziqtZVUZj;yP5htN4H#L800JLa2>|T3f(ae?1p0wg479#LCQG*C%D6_EgR z@x4Pt3lZY@2jR0Z;64HVZ~JxYsTNS^g4Y2(bT453`uJ?;na}@7KL{MS14cWbFks%W z0A0%EJP=BsEE1d9EyK7=Fy9Z!pD9`lxfCa)m0cZB`Bn* zq@+JaQ3F+m$s&Uy<_quwek1#+3)}TkH%_TWI>?plGz5P$JF4BFhmO8gb>eX2uZB$^ zXZ}2M;vBkq^Vb4|zZ{^X3JN^z)$+_Aa*iz+`1F7WTLCf_?Lc;>vf9Yqm;$e+FeMlD zn=3mWYh1gVE@Fcz*)k3f>FQacnXZX(@?FxE4sF@(UQo)t?%_*9sq3??Dw9?-n+~)S zKB^3OjQ~E%0ns?u?97z}nVjBGVZna$rTh{4qO%zzny;+5k%Qn%ge55|aR))P;D?uF zu#@P5&4}r2QW3Cq4S@I@@<^9|S&1n>d^;M+4PE@9yc#Opn@f5)vGC_2=vXpoA4j%LBeMI?xCp?6|8{acbw03qPwk4>F#4q%l^adb5Z|FX6FR11wbcoqYj0Stgov0Hd7T&4Rq@`y6lVBejma{kc# zj(cwm*tFCz+;;_vB4qH~uxBjMSUo8kUmu@}tII8?Kw~V^JfMzfB-D%8u0ct%tOJ)` z-6>M&S0Vt70*WvbJArjq8HS>MP$iLjV$1Wl?MP$+1$5_`TP`Qz?akQ1fQToKx{ z5a`<>AHP8XqGTmTFrAhPTgppauRHw zaLC*ZWLrEJqG8HFj9XqXaj2XSwa#k#8iir8BXqG>_vm+kI`-M)!`fa zZbGuSif9AVuX)+xoY7v5Xr==%qk-`W3^}M5_lg|!o|IVZ#3?BiRTbSaCzKPv%2z*o zF7qD+<@4WY+gJ?2Xp4d_b;d9>v$*rODagNeDd8A6#$Wc(hgO5ml_AN1GxNad1QH>? z83?8GeoV)GOFeT8C=?@^<$WqB<3#bg#NYc%vaHSxUR6(89z%l4RI3Rt_i~M-)SO)( zT~}{jPf)zK`yKa_y*p%BLkcCO2wSvD>dttqx)oMW4*x0ig61A4k(P|F$m994DcOS- zzbq|UpQy@|(d>G{gYVpqsm_KRVO93aU<%v4;3UKO&%K6E+%FXL2Cu^z2+7QG`Xia; zQS))*z3qvUQj!{t5mT2gX~pLs+VsDalB18}Ep*GdtH#@xQbSOw>%bZQyW#X}y{n1068AgP0{)M8$)v37?H9eodm2S+-VI)=T5_tw{`0CVaQ{3>2=G+4 z%DG=06;Ts~?-aeaMxjJs%AK}PJ^oE|9S`OSEb~#4w#TbiO81J-WOkjkUU2xs*3~9( zh3IMWu!TE?AN^|+<}^Z8HPV#uJhavMc=JHtw<4$2BcoHb4%#+MNjc@Ja7m$>JWscn zg(O>MK({6=Z+v+Gq#5TK;{p&Oj~Qu@CnK~Sl3R<-H*Pa3)$2z0Qsjp9Od}P9?y7zV z+R;(rk3yEw&f5|xxEAT$v##MK$;Uk9ZwVL7lehIGDCOK}I2@VYwkCLJ$!r>dnK7ox zQ2|Qe@wp21?!T(H%K+D6>e&L^!BK7Z^jb&$87FgS^BzvVrPKb^yxM)Bd4|2fOjJBA z5i7d_dBti?$bC>Jr;QTLc&d(Qd%3uBtc2yE5B|-A=mWxj(}dGW4vvBXV%T1Byv3{h zNnLdf9r*OrRCN5*p#yAyU^X=+^?kNB679>p#6M+ohjr@|pL!Q=e5Q)i1KGsyo9a&s zQHR4x3?Z1yJG7kbPPj3&fVm%O0cz3Wq^tsvZvy zCO;##pGRdfs_RJjf64f4O*@ivOr1G?YV6(IsspwLXiJrun=rpsSCc2r_iUt> z$^(h}Ew^PWjHT>6l%)=|CDI-vv6qup8=l&n`VEOgT`BBQIB(Nd5)r`wbz2BZ+C5U6 zM2twI{X-kD!Y3mZY6S~PWYj9`zj$7d1J)V&jHCAqo!m=I<&t%C9_3#_hDdvVp=7ub znBL|A&K+WGgovtL*v8#dFP<)C|1^`8QQm>5A~KH;%|6Ltr$;f|U_??XU+LC`=QRnJ9pKkHi) zh;By5MM>jPA1rv{Z@~NkT^K4-s9`l}K)*z|SI^seb_ACW?+&uiu+e{OZN=LhqpaXa@rbl_G8zm7(#Owzx5t&0>8(Pj8oQjLW| z>bEV7!HsxG`=g)&oCTAcBn(Y}!JptdeW8%gO}pxbgQdt3Ka+}tUpvv8WffjpU{SxL z#jVKQjL9X~%Q$F8qyc1ln6g=%WBq9A(8##)msIT0h-uqMnau;}AA%1eA?eEiuJVIH zpiZ;jVju+WbFr^sbX;Q#Sx8c)muyy&d|bg_&Q)B8jm_i>WTdOCGOYj#j^$A%N)e>oyZ}F&Kcoz$ALje3iDj?z5Kb6(W?sJ!LG;?4g z8VxffPtl z8t!eQS;$G|%$2+m&8e!Jrj1<6m=gbaeXDLVU(rdfGI7nn{3pQLpSH*j!g@evkNXqv ze_xN7+Mu6z79*w_yUX(XM~zop&7AYTD^f6XMnKqg8s?9H0*z!k$mRkm3^Ik={%~;k zAE-(q!rTZ!B9UF|+_Nd@gn%>#TjOK2lLipDQ3GOS`Qa1*)D$jM*p;Z`{Fn$q#QE<% zOAZs0PIyW&i^ALZN0j*GlH7h!yGC3{K-jE)FzOAvX4!B|8qFI%mRezxK#1Q7{kDHx z6hhckSga!(j5)j7GzV2ia*i?CByQ(UW-lR1Et-svS#q}95)<5fRfd^Lu zYnKt$fceTAu}+^9l1y3}V=Eyo_rN@J<|ENin4KCm2XX9&fvEUk$JoPgqs(}Jk5s=W znx&BupQKg4$E2;tq^qz8!uHweneZCthi=B~T=CiJ(Yn@kg=C>$2K2jt;Fjbju)24_ z>C>-rdkgHWgJ@Z|4pRc0YydayzkS6f{ZQl}pC8S~yFvi0jZPS}2n+wdvyhfB{BM7| z3MF(#to%C=k00k(tQlUA?{dO@Z1F?PM99nNshaEAzG*l_^c)feNB zQ*31xQEl8d_=`rQTphm5NlA&*XfxhKCFw1T3X_|&>!WlX<7uwIxdDc1uHf)owQumq z2@1U;rL|2zJE4EK?>D8NI7TuW{8#s#9rwz~%bC6?^G;Ehb?3UEtW!H4E??Mv^!kBk zvNhcVBG?&G9S*lfkU-XLO=%M@53H&EIjKV#cnV3%2eKX+4NlEQo6qoLuKXhHL=uFU zdo(W97nFuO(htG$&>s*Um=d742iP3jOyW`u4XIEzJES-{fN@!mmNJk=?Xlb8hX&_KkawYeDZTqFUJ+V^Dth-eYi zW?Sc;Ta8R|(B=qQdU7=?$^s0ApVO!)0pY6($J2Amg_Fh$W66oon6StgkH_@A;*ew* z1CL2uylJX#?rQSiD~Nlm`!5`^%BlGwV$E<(fw=e9v#u(K&3$jekj`S-Q;8=@ zV|)mpn>^;k0~tkRc$5tHn|&`H7YIKYgLvzvFKXo`;g`5r+dYk*G93{u2_<&{Z5NQV zOOINMYv~U%gW=l#vKutME1XhBt@;4tCxQ$fK*Uc|Gt2I$05_i%6q<}zM&(xqUv?n& zUWlG0AL>bsUI>SN^rBa*A#`EH*)2!gIAB&Y+0_n*A*bn9|Rj{1E|9=PY|dGQK;bEz!3bG~?f?6*|D<=U2#Vj%THqdAa3kNJNsKtC+V(Y(Uu zEnQe#2zuWwog0~OoDG*FK>%KvnJiIh9u*{&0OubFU3?|u%Uqxx?+MI|6H$VK|0U4WZz?ig8@OW5B>U-)-P&LK*-Y8Loz3YpJdTfh<}g~02t`#Zz- z`A0J17lGrbi^t1m*Bw!uyZi=~*8VCltK+ZW-!I$rMsqu@e7F<|7r}%zT0u@cs@^07 z7+~?PV=Ip^94x}|k?^RqJ;%W(F!X*f zOm_JQvmn(vul@XIOQF6Fv4IGSJv> zt_$$|R{j!TdU=mEx7d*&FdaJ|f*D+pS-Y&%IYor!=E;D5HHjK0i5lM%15dvSMnqw` z@7*03qogXQeyp7Mos_K2i>g@QEl&p~*@zsqiI7!Ul(B+ThHYxV=~90~N??C`2B!MX zcnWJi6-ZZxZ7d9qus*zWNCU^6rCv5`mjs^`?23G{KRN)bCUqN!rYoS8(-L5z2uC>? zETq4-)N&fWxkN*vs!-S4zg!$&Srnk8oHY*yDT2ToMwGuRL<6bcH#i3oET07ag>QT` zNlRYeCbu)AKzrUxOx;S-U&na3ilg3mGgKLaj33NSz|eVWHC)>?sgb z#`}V_&%;#YsN|)B9EVmKw?#|6^(rref|c}8sAxKKYHWS_X!+VH{m`Mfmxw_@itYt! zAgF2EoEtTXA5ip?gd!Y|R{lbWmz28^fmYIrVvZ+8a@3ihTy}(@Dz@wBFIndyIfHzG zbz{6yn(=6ftskk`cq&QEK#RH8=$fF^Y<%hv;SYc8Zq8JY@xlpA?6oeu87jwZE`e7i zkEQ4ypuDOUKouQ5c;zg~@kiO!tTP|FRY4MD&l}Ct)zzPKZkz}cZ}T9KP4noV*WA0l z(y5Dqvl(xe*@b^UpQk1_35s@Hj@w@PMX4=Atsw7)Zw}JGl#Gd~uF0fszdYFwckdkc zC_eRGC(t&oO?skO^aYm}vXf^)rHuNY$Lix-G7UdmN0@>{_@hq?P*t{CT<+}liiNW*EdhgQ!7qIQnZ?crR&6Q3a$i0AI@FbQLCyfBZ3+dj6lv{ zIaE!yKZ3_Jv+R&UW^>WS@Oh6=Th3&9z0RilzKlq?S@^Usx{dwN7hOaQMTV&fLIqlq zQN}M)hce(VdgHJ^K1P>C#km zu#gC41^fdV_42vB#L+P_`vL=0)zTsi7B(IXiG*mtf0(${Gd~HAlu}($Ff*`8q54mZ zlu@_qx~9qr(1*tX=}HgC?Om}|;8`fNwBDgHh@vbUEG8KfP(3lrAhmUW;hEp&Zn>)jR!x)9g2(Kg; zt%wD6fvx1jaPhBDKzJncvwX=T1BIT9v@vYU){lW07HCZXRh#P%KBQov z4sOs0fu#}`5D)HM5=C5}G|f|mO~R0%kkMtaug0tJ=?x4CQWeKgGG&4%Wz++4U?4QF zv7g>7oDti$HOHVZo|hFME}j_eFvrkxRXXoTSBoZdp=HR0p`P0s5e3%kL~fs$UD58B zDUAMP$y(tQ)!DgArD8>feParvucL{aC$$FKk#845A3jlpqJXXV7Nu31rV5&Mj2tPZ zFn<`YXjZ|>@NIghzn@t&6%!;`zeU_mos32v? zY+Q+7Yx*_|npv}-3$9ty-1u6WElWJBmUzZQ?>v)9=0s}(#WNChR!D!QM#zLB7_7dQ z9ALBZthLOGQHEj54OdaJBG#ayXooI?t!cML-Z$8!hn*)`a$_;^n;2V1z!>rGihh!_Gdb> z*%h|=5rB*=V93GsE71&82k}Qk85PEeR>d@yg8uegy0NL8Q--2r(08|om70hYPfhV} zno8qw}G7u~QBt5(zYc29hLQ z8M|AZJ5wcLKm;_pc`t;Gr;>^PVB<;20b5W3Ns(~mpU*1s6#a4>@5QU?hmLD$@Fl^3 zh%QM@;Z`ppG?s~|j%bf)*bD6kv}iwwNGqoYj$kCytU+E7LK#0T#e@cW%}mVx#v3Bl zFFUf$ATi;HT$`VLc2!`j3-I@k1+I1=WlOBbvXu?=-}G%vFfHssPx`qjQd6%-JYi<0 zX*;*iw77PM+n!1n6buA8eYF{o^pkr{CkVbCU!EiDSpP5u4`jaD8(H$5n(v9enX$!! zBDysV28M^mfhe;_`GH36T@oWx5-7I@pp{fbQh_8eFc9W653IFi%)=_~1@f$I+5pkC z`Os`{S1^ForU(W_Mx`KQ#aQXb2q)g^v@-`PkEXUA0H>z-R%9s;XFIJuke*IkCb08s zoZv0`p5VM3S?FQ0&e{%L6e<>^04^`s>a9Wit82JHeLxc}ytr?H+IA&E?~sOctgHat zL-fYF8v186S8$5*~Be0goQDCQZ zxJag!!_d5VQ42lEQFL(*7%I_av8N&jVxr9a#4iFFYEAk~SGJg;IAR@U}mEE^%jjo=P(|a^b{_lG8yL2NA@)dr6w@jCZiF$*(kAz|@3Q1v79L!xX6G{RK z6YP&SY>?F#=cza&^Byf9n0jXOIG4E-9P{0Akk;L?wib9O!|+WM6D+0VK-30&!ZAGh zwM`=hfpC{pP09xrFAW09*f6ZZ-(!`colVH@ulPS z$Nba(&4#?Q6%V}|Jj0z7R4$=jGW+$zS^4XtR`=gS3dgg8#-%FF22+B?T)bIYJW;qf z0~&Vuc#oGQ1e4*K{k409e?uZWCv%vW>sztVF3276yzczwQiQ$<-(6#?2KE)LBEFLTUX^MPj3C3SV&4vYv3MGJ~DdrxMC3jb(ptix%t zb|+w>q%6hEd61SeoLWj5+tnZxw};mo_M2RHB;}dsbwjctHa6a1zO|?P)i!cXl#`MS zXR3_$E56mKminf#DxA6|u&ah~(;{$@80?d4GW3S zo3ue6Zf)U(>wj;0bM&jq#EnBpJyBp&BEVG0k!ih740Mu06DRw_$D?lrunYHOB{)RG zB|oQ%&jVxO)O|RT`#T6)MJ_@PI1tT|x}<4>?e0Q&6-DcnhdVF0kq`BSfu=!V_(gya zvsicWdgFYP$r&(==6PPdrwR#W+kLJs6t^J#BQ2OJ!{#dcogPFaE&H$Iy_znKZs#F+ z3y&b@<<>!KYKDDe_%4 zH4wZGrxI+bvF@oT7=C9`Y3`l~KN8ulW52<9xi^M?UO#Uxs7XenR#ZOgUvaK#uQ(WVn<>f|??$QJUkg^a0ehTbD zSY6wJ1zCg#Cl!%x4bo5u>{ud60zrijCCUS`j) z*r#W~r!|2-&Cq3Nfrys?Pg^4@Q%NAPbK0!Z4IU>SU9Lo6xK-<7y5YsDkHH2=@UEf% z1@VeZFRWKoxQgm{Nfnj}J)hGGA~BLSCkaB(1@N6N;;4UKnDu`(Mb$)S3kboz8C-yF zEcYNnyPgXeUK4S(C2w#Tzf?~4hFi((UI0+gbTbj<2mYlN-nyHyQCBofDKcB_2Pt^m zq7MQA0odQELC2Qzl4}pFqwlUKG`d-7Lws&Z`U+&vE4!%77GDslK$wR1fzX$ms7<_2zV4Lk|F?u2|&kMs=R(nv-f-9VFVK=gti!~rt-iJ{^)w3>#bv**P zc!77byyY%$uqL~+{>|jwZMe#qCu;jwc7s(3E_n*aBNM&%7NY*>n?c)r=wT!BKu4$_ zJ`dx`V#^uNxj(xDNV%Zw zES^x#GmBt7GQ5~jsFG|F&f}ba#l`(LFC+Rwqcam+Wx3k)bWSaiJ z3%jU#W%axkl2W_Fw1sA}QM~3BW>OFq5zg=GEXCH^>|2OIz3&Uu zX{>3Y+wE=+<^&Z6)+~~eCxN_zz(H0nn~#(mk&~Q5&@J;z4KC~ikz~*B9}bQLh%cw> zZYcW)VCl-pc&(F?f;yZ*xLw~7qoy`{x6iz>ksq!G=Qcxu2E$;a8!lBwBi+K#;FfNf zl0qTZqM)T}BfXAxZ~ncJP)WQF(sjAAe%Zr6{$FPTzbLVMS@V&+^%SwEJ%&`WfU*a) z0#CDq+#jfC>)XT*XC);F{ky<*|FePTsT?V{KYtN?4$rZhZ7+ukp;^tHrw~jjt9Ni9 z3+a;;BpN*gO?n`TV}(K@BD}|l^rn^mP&n;NMkq+>ii9~*hK)F>VL`SqVl64%jo5YHu+YqXQYbx$#k@L*63WhP0)QN6Z>xOYnEo(wgoNZI__+XK|d+|7*o$7>g!mxV%IHCrpZckKtRQb z)I@`n84S$+F|BRm3>jEszdu<)H!pef2u#WuRNK!>$S53h)j_7=4u7n)`o$to?ezHG zFv*_d^w;Tt|MfJ`^DCl}IUAEsl1fzcvwxB=NYz#VRZ=ce5vW`r7ewsA1WaTfQprg% zYBc4*5!L^@m9s0~28l8QpdEfWfTa=UXK!$BdGCjy1;(X~9ioR)a?0^zW5xK%>k`k6 zhs#mc)+X>v1ow3Q<+h*?_np5ZLpt9GPJGP`5ciy{ORXRgc^LFvyTiH}4#ujp`^QxN z!#b|fueshruu=w0UzU6&D_f*q*447m8j1hbEh48}MK(+)!>hflGA^O48I!1HySKkd zM0o*iAk21Vc{QK3QmeMCTDSxJvv=c~k315!x5sRCCk9{ zH=-=Wtqs9yr~fhoZ|Klnq4?3d$!~F8mR&{?&LZ#Zh-0CSceKBk3G7Kyq(N1bG@PQN z8oXT&IMl(CmZ+!0?0;%l6s(#3axjp1Z`aYcbAB;^9j|VM`mYiBv~q@ur0;Hba)!Ta zdCZlOBayWFVfFgcK3(q-i5w6G_l0qBHgxTs*Mk+=b=8qZ2@8h1glah52zTsTUD$y^ zQy$vj?=FyO6VY7_j!Em+EG7$&6tjEPIp&j1dmAbYm%^qV4d3)XEML=h#qJ!W@UVA> z#?ESJp;TJU>^w|-E8txcCf)b1q3v*V%TVuN)e(bS7*n;Hxr}MSHGNeog53zqt|!vq z2?};Nku`?niCm8FVhT?mh6#zah4xUY^k8RVF49v2_tuKpIXX+dvDe+)HY?m*%4&Gj-#c-T^wr8 zzQuyinMfTLO^4mchgk}U1s57&q5>45yBVm%*`aX}6TDtYHNWwU9$-yq}eg zF@1S9huOYO?v76LUepr@-H;b0V?e`lgeY3IL>xj+3iRa$ebcLO$#yvDWl=W4VE#hC zX8p-CUV@woO_k<52^98lSP;$d8LG_o2C&|+Ox-O2~?tM~z z-0L~x3x2)g3E%4WR<}f{wD`8O7&)W&vIj9(a1Mr>y}%8_DxGSpRtSZ;Ui#hd@S!XD z%u4N%0-HnE9^Vs3FR33IBzJ6?E0tUW-NFN{p^*MJ>jSt-{MpzY4=*V^iC$jB@GK*5 z%9KI-;&6|zGn|;qV}3%Ip6jKy6$oA3W*T$u_8{v_{=lN~h_FDu#>{uE7Z-9&Sn@Ue zPhfQuG{v{^l>7Di91{b#-Q|tTIe>VO<8YAE0xyl7MFbe-lgWQjDJAyWF6ak~y+!nnY}hboBAYxBe@Srtz!fwXRhM55G!eA4{8Og^CZvVJ9h(3F zx@OI4@X^5i^t*}UAGLMIn!yIFl2Ve2EPK&G2*!FVnz85w;~`m(lU)JCpA7itwL{x| zwZDV|Vq%Z`2mYn}1tHUV3AK$O7|HazP4L@-4)&P86^9&Q=JQDsLZg!xh<~rJmMoGq zkGEW{#FQcGz1)2L`wBTR)i?50o5NTrPHG)OV3d`SFF1V;^HdAk&k4~&l16@;BZwyw zZUk5A`RJRB;gvY@SC)8O;{oEKO7z1Jg3wERBzlIQhe-JdiVmgPWo!QOm%pz>8<9gk zr-sZbVIEj*u1?Hgd&=P5!ERDaqX4~Vu2A(!3F@p`v!o!j9|j|08AT@EChnNq?YDG3 zRUf2oc4s!+wO0~BAZP*N=>_u{-dI=N&R-Y9Rqbrlp`8ayMV2pMAi@Qd>rEB3QeS~P zq?wHUH|Hyj1OfLfBc@GpxfNk`VNHBm{-77G!z(SYqp?3MKi-b_OQN2nl#Q~3UD=D*zhx|avbAiJ&tMY; z?oPH2S4jh6fB}o&%58sTZLRGhabZ%Boxw-3l_D#jcNbDbwt8BBgIexD%@c3%tLyn7 zct>s!0ZeLWf&(L{pIWsS`ovX?0Ntv3;sZj!mkL`U)KlewD6cO<7W$i)#~y3P@o=Is zs;i5%H2C_QEd;&NK3zf@5}72H08T6YfPyT0;Q@CzF2Rvi_K2qIyI*nKQ47*&U0SP&6>Zy)rYnVuDf@Oq zKRd0}5shm$)*aDy0Rc1b7zWciHor6f;+&`ppH?X^I?BlH3)?W$iAYE7Djj?Qxr3Ah zLe~2S*><3d>v3m0r)uejFJ;IWd`_08Fqjh`FG+_>6yn zX}JnYQ41;r%r5e>E?mJLb#M3YIPNUBv|Xh?Vv#OKpHzR#R7B5GS)8q-RZe!;xNEna zUBM(C<>e+Nf-D3%lq_=^gq!_!^K7j`Z|G_DI;|` z)#^M;r}txxLZ+EZNQh$D=TrpGBmgV}319j*F&NL~z`IHg^4@`ljE4Y**SJCFtpop0n`MgwYyPNNy+xM6aeSKX`2u0jybtNG!_r)wK^#(RZ&i= zlo@ZZiZr4zYKpZX!(~`lChD8XV%xpGe;;`3&G>@@9lj8lbZE+U`V%udQjp}qePhM8 zc~^UAR9c8uPHMuO0y5pvd0l9(vN*p%f*|XjO0NEhY8VsxuG^W)!~9Nib~#?GAjUL- zHfr-34vAH?cQ|8jGPtJjYP>!-z*huj419PBvd@Ek*CyvyL6Dm#_AAtZ>s1<-;}nYg zyAkp!%j2tgF_G%}+$~cVv1PjClA6X6tR~3sb;mRU%ffEUQQH!j2DOs8k92}OL0ueX zrlH=2}>^^cms&dczwNoHZP{dU+t^2oyu9X&hx^SaKX++jFlx&WY z@2V^&2b85(bbv5xGGeiDLQH15WM^@NAQlZc0) zPag`+emk`v-qIJLs|c(RGmT$&y}4>q=hJMAuK&~+2u*;)y_j0$<;W8=F44kY-%#w7 zOYHR(2@BX;z`C;`hob9;VCLfUMYpd-kp}Vwi6Om%C@QdwkkdguS7*ZnVZeKr+P(i> zQ185_@u+E$0x>8I(9>uaLOG9+2d{#X8D*>0kg5Kl?}5#Hmj9B8tgIo6Ra_W2F;YRT zzpANcx@c@d*z^ciQbVsVfeOXDP@0Sm4M{#rN&8uLlX*b zQ=An5cJ{B)e1#8Jj3`U09Vb@hWSBT!p`c6cGpTfmsg~p<^}((LF1qgh!>T_qi?SS< zaV;S3w>ZGmZfsBJ9nM2p3By0!R->cpTX|EN{Pu0v?yA)8ZD*jYn5SB2J-cJ1!I97W zb$^xE%elVzr@QS_2gUU$_{7%$J(W_{2*2NBhYjM;YUjOM@QENaue24hxMKs*;E4ef zrMQhN4^1&J1~jn{*9wv+iW{)PL2XURI7{-Tv>-kQd*_ zBVzxJQT*kbj5$umQ*i?EytIIRFhi^icy_LTaIz0?%%8UVsfW$BLb9hGJ_-=|=g0Nj zk=qA|8Oo>qNLUW>6C_0AlW5ogohf^SFz7lv=zDJTU;WqBlCELu)~lZEZJ7|e(zXGf z1QU!|x+6gI2$If&77<-;f+Nx2p?U!<`H?g}J23XkF+RVuUnx`R@Xa zn0gTDjU2ugG)kaR?BB=QJyuRu2hJa@Ti>?#dBC;Z`Ql?@ur21ly*2fEtH#?@%`b2uW!$6%{~uRdZ4yvE=;bL|9D?q_p364@XeH@osQ)FXAv_=UTl9((%_+xuPzvdR( zfBkr$qRmkOiEygiEV&Xd?A9f_@|q^x)W4>;jgyHdpGwrja(1WxG}Itn5L$b9%=3If zXuUtFwVt<3lfi z4z2Ukx_hNp26%vFUYSNAa?bZ2?(a)!^STH34rQ#gVnET>j>Exx(|v)Gee{9LY(~~| z{dhkoszOsbAFuh=8A*FIlF#J(8x)K&P9kn6c-)>_1`P*;vz(NCR-OQ29p8czd{)xj zn@-38B++1EYV*{&cGb}Nw`KFlITCgSjaF4gz356j$W|G+CxKE~y}K+-XU>NWI1c8> zj6hez`T9W$mx+B*NRI!-^J0(0^PO!Jlsy%38H!?QLEJ7aVWNS6NbDbCLdLV+ATMdS zoBXlMApRX&%x^D|F+ph7|Dl+OEHoOlyay54R<)2fvdPYMgL*^MRN;>&T1~>M`op~9 zs`3FX)ja|D53jY3$Jhj052RMUpY~8;6zM0ke4x`3s?}SlS6mJ-JABRHc|D4-h;?{G1sH%C zB@WV3VM=;&@N+N{3lYZjg=ND9hb~47krWEAQ++1Wt{-<~TG1Z;AFCSWl@56=s06}0 z`*MDEgE83(ONeZ$V0ROat-Ndz1JQ(oWACw~S=6j}hK3&#al0M1zK~TM@RYr&8YN6IhVXx^<6ypZJqunt(qfNLL^Sy_PqF(buUR#4sO({d=cwekA zw{)=J>25c5xYfgM+Y^F zfa;q714R$XVJ>hOyEJqKO9If&v5)@qFvg-ER{zB$VRd^yTc;MtSLSyk!Rk^E^!_On z>o9Cwwxf^3^Hn82|4Yy?2d8t2RbaPR9xj3R27-E21Gw}3h`={b|N2*GlujL<(6R(i zfTk*v4Rp3^NKDH5?ymSSe(C)$g@NGJ=4EZ4iDrkYSSc+Cv`YWDCXgwZx+HaFQeb;k zG&g}vE6%gUpbc<)%nMutj35{EyAUq5w$_-bi|=hAUbpf9$Y%=9&r*V=q*g@YBj^0p zH51#LD%kW8*mQUuKBz68A1)Y{uq9csh-ehs|NbG&;Op*2REbx3zPG|WY)fmv7@!;N z84)(Q#bq4@jl7s4=|Co`O?7g(!-|>+d-wP#=FZ6cz5KYlvZoHV+-HQ$_7vZI!&epE zfv}cKLz53)nAhW_Tq`1Gru_2&bmD;S z--rl6Jy^a)g|aHj{zVS7*m({CHVXF#lL3S!F{NIjp3e;=9_YUjw*z&7x&F%QNdwQ{ zms{K>=xFSfw78)cr9BjZL8yK7sOpMXRr!Z^>j!_KNPcp+t^d#HtC?6_cNylK>v528 ze+nu`fe-p;XZ0MTEGLsTsRw7l^YW)?X5ZqQg0aySNc$IJ`hRD5?u9_S-&bjKxhEF8 z9nSP;wZ*#rIr<<4#3Ac#mbV=IQ0)G^s=kAuV?Vq`TefLFU*qF9^=j(Vbp5el zdpV*;&&E{F=kfZhw!PzbmyX7!=uQ6Cey(eXIb(zj)=3Deb3Co+d9VBdwcgJVK`6C_ zP)ZPh4<65c!x5l0WIi)&e`rd~C?$Rd82uS-lVpo?+kc+anL&}}etr6VKOUriFK`6) zMv-@|amgUi)1@x|5srU#hn#F+W{E;dv%2L0M7aL=X(n*Q0NhB|!~0}Pt9v3;e-T{H zBkbRTy*OtL4JNm8HIP;gZ7Kfj0upBzIjR+8(8f~+#mvno{ELzN&F(0+c1#>mg^@Ek z?;A|)MdLq%O_&P+$TkK_2SN4WCO2aa+xK+-pGc!-=OcR5(-ExWZ>vb#6(KR;x^qwkqSz;26h6@O8JH96eCr%+DtTK#qkp{U>=vR(gP^cIrjA**U~nh z5NM`MlQwMH-MYGf?unFKYxM$Qc^h({Y(7{zGOy)}I^Yus*X?l6C;3}4GScz-x(qL) zn`{0TUL(f)dFB>Iuv-p#(t=mYvD6JtU%V2CN^G^2jRR58#)xaKDF%l+efWz0*~6#W zwJMghZ)#wKd!!lwWS=xxGeW&xoz&5Dp|<+1!BpKKBQ&iWnz^X_T3>75ijS-yUuQaE z_c72zb*nz3=gt7PDDA989yb{U{E1|2L=9u0ie}hXe9%cr?Vp5Bha%nR+Wgaxu`kow zqb;K9k(KedMDx`nDlRMH9*N2u+JCP}u0Pz3Kk%$7ZGXN1mo zY|RXcQ3V?2Zg+ZV2iv0?uY0era6C^B{Aix`&cHRgkP?oEHdcRl)+i^7_W7iqz}))^ z-XZrah8%H!*!$Xo-sTiI*_YFqtrAQ>*_YLrrHx}dV`hLE_51IxOv|H0LF4B<=YQu> z%Uf#RfHwW`kASN*H>vksWXrtF059R`l!4sS(p+`5Y5DA-f^~{|_YYh3Y7w121!zH|*8r z4ZP5w-_&e7A)+tjo$CVV1?z{IAz4mA_#NzWTH+07ir7??Vez^z^E;01aNYB4HLo~( z$EAtN(hGe%?0@2v? zWbZji{9uMdwc7uUVAZVKMlcd4R85bh0zP$qhGpfuYV~%R4zZ}5Y4Up_U$(=T6nZ09 z!_YPa>(O1GBZ^-rf*V|*O7sVJL(={#oe-QduIJmxHuWIAt@rFrSQ7ACe@xE{zJmiteTt0uyx z*bQ$EhO|**oUv8*Ih@1=_NV4TJM@wYIXN-C%?n#(A}pZ7HW9y!=(L5CI=qPO!pjlY+3x)6-u&*=h@;v3yW#C#YPS$1S0nq|p!Z`3$%`HeF1A2>M{PE}{` z52s@W`=6Dh#lNuB8ZzVb<(%f4L%Te90;3id9W~OUJrWRYy--O31`HlTqilchyFkCU zt3&Q6zn1`^z6;v>{VuPFZRFemh$;+W$E>{Z5SaWqX}!gin;N+PJmvsNx_19vRUQ&R zCExL+%5igwz}Be?+~2txR=EcD#cX}R&;VB?Y9XATSiG9a&ZtnEpGl5n8CgN}P}cse zm5g1g3X#z?H_7bXz1Hth8DhpGqDp-Mbi*Wdb4wb+s|HF&0|dcv4us|FlVS?zR!rJS z#&Y4)85*fTz(^~&>Xxkg{GZNd`<=RiqFr8qJgK|)aa<9}iNg`B@#^cDZ6;nZ+{{XD zEYhl%H;=F7o9o9*kIg^(B|wG9014x`ic(|h8&O!GVyMxU`xDV+1Ib~N&gUC12!*Hj zz$qwPMT(P0G%Nla1^hB0COC~)!!n@kQjwaNb35bt#e+-hFE5cDIw$+Eyyx){$r*_U)c15_OL(>H4p_nnf(Q!>fshseGV?ag zs4nIQnW4Z@V3L7|a&m23ZZ94^KLl8$(_bfWIi2h<1fBqd{GJV%lHH*C@ZJiT`I^9P z%)f8Uw2i)v*;G)|5n6+kgxic2+KlVYcmc@TC-KG&mv8 zsQjMZ5DYy`F-c)RMhlebj4VV)`*bILykwM${Dx|vEnN~eO;wXsd`oS6^-{A&)+nq_ z`=Vj#dmVL)*X7lovA1D-u#*!kB7GqC=;+hR4qahVPEbM51Df}2ujd<>g>M|9E zp~U%nwN}aHUUUOU`bS&G_tK3}wDCE}6$nj@0IWMvc1;ri#~q*Xy433QgGMW@F<4mM zC=uKrckzv+NwPQeciYcRK;`7U3-?s`BggGbo+8AzHb(Be!HT-Ba<2Dtpi5ABS3WOq==yUA z%}TYuev6IWisqx{)g`R~0k|oHq;oEr^F|cDiS(leVz)f7sm>=w`&w&wS=ElvEf1#L z061mbY_=}Jd6m6W_AdqNj_rO<1UtPvur|jMoWAAKAXD}fi{T zQvG3*I}Ur3MPk|1r!_q%H2iL?qL_4(h4#e`|bp#G=M zt!bbnK?7d=J{dPAe>4!L_^keg}^Jd~(KL$Ve@5}w3evLGLQ@f zizHF;`C_)<8#q--z60XtXxo@aI0Y|hPEPy_5@K#6zmyN1S`gHaQ%Y3x8XP@wTfmx5U1bR~c!SuSafj6z_< zD-F^m^$+D_=m8Hu2y<(aIz4T6b{=0$eUx&|e`jD6CHV=~e`tD>8>8f0cZrX@Olioq zFdd;>p~%{8kf&j?ATj)J+K!!HhK9aTCt^%_>n#P`mfs8D3>qbInnVlXe;WpsN#dBt z1)@QS=ff3y2;R;b35t3E6h-C4>i_G*??h_jCLy-Du0Hs(_2G2(#QuJO<*55D(3g;- z`mB4f!;^QVmnvz&`3i^&OOlHWrGj04)uM<8u5O^ErBGHI0+~N1viJqAtC}ne;$jIr zqZe;c0VeW^UYZ*pihRWJ11>bOmE_1oAb%ULU=UZWmq_Dzz~e`kW6^5VZsJ6gYIJ3U zpa{|FHu?)L&@suNOTl#Rz4Cj#C97?jcQBr2g%CH-X>S-Cufh**qxq6i*BhDiMg6;f zsU^^Gh=8R3KnGgxE(gAzj>>|pYN=k=xgMq1qvHhZ3zd9IJAS}ZUd=AVK~rwG>{uYm zFQ|6+y@g<)?~85}s1b06h^7^9kszFerWL5uP6s8cWC3Dj`5)on)Vi4K>mNze^!!Gm`i9h~oQ^r#IAgtER}LIdo`;?f)kV zB`o(sEQW^SwM`|Sp$Nfrues0NKR$~hWb2pFk&v+)G1Ki;Ywl32Kp}MB!!wbA$vM>5 z6)JY_FH;;*sTt42_&hPS7x%jx4(xkO$Yb;5rgW6ah<t6Ws+L4j834FDf^&uB8+(63*lbHs&&8xK1hBQ`SF4o zY5|-CB|auea^NIGNiOzd0pCEnp4EQOtNP0A;vDtYSDalaQHnCgc%Vsu42oWk^}%Qo zpII(y@MAKck+Z`SoW~7KI6Sd9XBjk9&arU)^L+Jvo93pwQX8%RtOBaS^#u@q1&+d4 z)9)|?kzD%4nMk9)k~2|qDkp#+dHGAUI&b|Ed-`|5(Bcj<-W zA-!(dqqk$Dg>}=<_*Yxs_zFJ_-KDD=Q@KW&cm=y7ccz>~Ewg!7__$97LSs`JB&NdY zcDQm?-4DxWz!gcUr$=}*LaxX868&lSh_W8UV%7VOb5@tC9`Vhn1L|qLZ3{-JbHM{B z4|7HR_KKjNjVnfe<`bi4$^6FWKg2@4-?%@HDTX3T*$614YmA&Hua4wIA1bG?!@oHP z(kfO(sY%v2Dh4kK2eJtGO$H-JXNg)+;-5;wYB(<^ORPS#Y)O^hQx-|+V?a|QPxi8C zuiw{nHu;?YMe^QAWCHZhn5PoIwmMv2p67k+K}Sh?b}#QH=b6DwIaofs?4*qzE?UQ~ zc|ZA31ecn3DFom;9o#~x$Z5Q>8sh^f_$eaM>FDw`V@cdD*!5lek*H^4F>IUuRc&PD|3{MYBlIW?bUldWnzhZ+H_gZ|kwx*+MgodG#xpPcM>Dwb#vVM!UwoT(JA zdht;_XFxd3Q#uMZ4tjl>Xd6c>)%m3^mK7M|%kr9W-mn zSQ3A2HI#%K!tQ@z90z5-=4kpJp51@6C4kGynBghp7)nV-!FE>g47{hMLH{2MaPuq0 z8S;p@?BYk>>?y@xCar;g)4x5}HSa4IteKB1oRFKu(bjuRFf8XS_lMbmjl`70HErBE z8737^El?S{R!WlkCy=#Zk>Xxr&^m}dpI3h)`<2nNFb0G!Un{1rX{Xo%T@nob7h-zp&&u(9A%W#`wyHKML z3OpNk(;3?yHe5Q{9of8}VAc26U_7$~>Zs11&O|rRhKyvm}(V*~BA?@IX0hPAds$L*T43YOB3G z;nx655~p8R1V!8v*p9?+s4@y>yl(ftyrpt8cO`bP0B#jgRsuMx6E|bIFM_XNCw1k*rH$X#a3uK!GS)JavmxB6kc`|P+ zwx08!>hAa$!v+^wNwt6K;!XhJ%dA=_6U;~db(~c^lU)v`U8CbikvFBI9t4qF)C=Ee z8Zo7_9d6oC%b%mR4!JhB*8nh6;)jO{M+0ar5NL#4d}e5yjc#m#PX*kcsvi`E+Totm zlPqMkhp2A%*s#oQUEPL!sCQ^!ulNw<2Om`V&&l32B|ju@M4b`2AP`F%zI4rqL)=Gw zTZ=!3%4E~MKVdu8>;hFHWm7I&%})yqb}-~Q(K?yG*c#J(&Vcx6*g_BqaRZ^BkB{l-ZM6IJ z8uTA>ArYJ2Wmty^E6g342o4U`bKdO!;G$`8RA{4-)|rEon**m=dgs|+5x01PwWtd6sQ3(GU7qI`3RF$7|L{r=0Zgz&QnL4PS7OM{OLg zqY+x|4mN{Pp`~VJ_;vx+Bl8@Zr#4vs*BV?w5Bpgi@h?*C_*T&jbSI6tu?E+lxz|a=6X0VZG!Pzyl)^PsY#R_v zsx|6@pR~hnkcd2s;nmOfWeF>s_3%NSLDc19*=HcOVvX9?38d0{hYpDaPh|_<$gI1Z zOdNkoR**qeT>)4KCBfTXh{ONy^JUM^34A2C{Dj;P_PVU66U~IlNTUFbEdF3Gz=MW*3_hKx!v$llw9=Y=%EU|%(2FAb(| zsYdsAM2WP;^g84%wcx;)^QRC2E7G#@WubM)UdCwVF!U# z6{A-YSC7e(2atduz7ApmTND`&j6A=v*rJ;`OU|6XubLP=Di{@jM!Xqpji3kM^cXX^ zGY|l=MX~tv2p8OpBBOdsk6)ADXxpZ!xsGCC*2~A^b-VWtajXAbL=*pNSpT7RC`jb6 zp>Rc@y=$=1=7hjJ$PP7LE`kj*ddp+{4yG`|y0}!;+Ox^dBL{zApEG`Q{0a_FCdp|f zf%MAi{O*r$wmo&wZMXagUL-&H^-~r>W z!}wXFp7*$Xee>LE+WcOrYjMv~6V0ZPXmi;pZn7eoQh8zoGD=1*h$nL(geSt#cxZgK zqyF`bK)_;MMTAdE<1YgRN(NmVgeoi^@eYuh4Hbj{h7OQ{HUUKMlgz4(0>e6g1CFnl zdiQk%$;C}~QuS=kEO%LY9Gey}7j_ot@qMvJT^NjQkBA{XM-7jTv7{t`kOfB>-#*}z zmJIjVK`i9KJHo8X%U~uZ<~v-Yc_8gv5PMJ39+R3g#x@&ePzFnGM4HORH zh!VhB_W9L8jjk*7A0*?2PRB?NkxdJdyHc}X&F%}ge)d;Syb6Y6ogbnWwabDAdI@xG zZsVR%Q3zbd?D^X#rDkSm~dPDUiQa8KpYpat3xr^?Zsm^d4q52Ob?w8xvkHprbSRj!hH`x5S z5?x<#9{m4+JzUQ=S`)iMi-I8G{Q*6V^aLhvy4=lh^Sx1uGNYZ+6vQUb`6wXN{eDWo zQpyUMK$0M2!N6$uk|?@*l0udhz~qvGDKM1P>9)#A%Y>v}_?BWVk|0Rvlu`v%;~*?> znu!sTbG!Y<%6P?q5E;)DGG}_C{(-Qtn-vE3+q9irhVSuhVI9Ef@);0Ua>sWL(a6pP z$zi&f*pyIrgTb9NxgCpY%O!p<;?~MAPZ~zM+@jfc=VlhElf%B-<=yCYqLe{!px8?q z!4HZ~RxA52|GMnDRvvddzh8g>5YF_7?aF7Z1SCUUQW-2DK7xKu`46JHcwNgkSP*Kr zeiykQR!*xwFJ&@la0nCvj$szK#TnMjJT|LG7fA1+!SHg%6#4DLB;oF_7C)7qU__M2 zhrtJSx)fIB1!+p9Q56WNE_$kkoaj76UHu&}qWOibBmfZE6d+dgWI)cfb_-9}q;GX25{HT7b0 z^TpYae>{B#NtW|N3^(R$eU=4YYkro~$K+{Tr2{7-W#TN@&2>_6EHlujw)kQP6@@;I zJ!35X;qGDk$1Buga+HqpB}JQ5m!fnN=OAqBo;^N}Amb2earLcJ^f`w8W~Aov@P3@J$( z6NIom>aNGf&_FSi;;C73%5yEIy1FTWiGo9eRs6xucwun^iHKeOY*T@L5yqX#e7<{X zjELg6y{PxPdMMxsZst3J$AhUrlsqsiV}p??PzR9!laUd*02-At%^!}41aLEEEfaD4 z0o296dnp7uu?5}{Yj*Fy&k0DqGd)&gmxF-%s!)6Obp^>O4_5rs)?oXIARUlY{Ih`q zM;QZz@mc)W`{K5*<>Mh*REU4W@4if9>$EqA=WKXw0tlwx?VSJoKD@EGPH7XE2a4wL zxf5WO;%kS&hxwUB{V(a+VN5e;_~G<_z8PWD3Y2An$t!13z?`ExV=`&@05zx!6~>?~ zfuOCPZ4F~G6n3owi|bT+&Yr?C_IWC~`|qt3Xm3h(Z+UNyVU~Ua@p!rAx2%W3WdNi8 zCKfe~PqyT&X8>t*5T0cKAzc`Nf+hwNmC6qmq#~9Ci$@YIGQb%Jf|C?rFoirQTS!59J}=(fl3d+G;qyFQ(3(YCN~F3gyf(FjiT&h2iF#8-OB zt>(Rwh-&uz7t5-(`FGj$@jeIxqtwwJ{9v8}2;CmXhoGP+@0|pH`-hZBnhb>9UNwi^ zF86Dyq}CcBF5N0zGuc$wn2(U&91lj-2@4V++>NLZxTEA2O)&IILRP44RIu8-U6?PQ(_hhojc%tY85t3(;tLBP0X=>vFqz_@i` z1GjZJp-YSneZ#9*Rei8}Kz#r=?S`jnvL>&T_R2J^_T^2MonMaE_Ft{f;+x^mcSjQy zlT}jk-shW<;kX>j(U{M;J3CI24&CHNBDH@f@y4sCQ4%FUl z+h04qi6-rfR)Udesm(c2#myi&D~OuhWu;zo>Pd|8DyPeQG{6yY8MVEL;v97N7ER3f&gS1huk`~3^j!~D7_Gr-2oX@_u15Z*f9nlz%b}Jt zRhC%8VY35c6Z&0W300cy-MwxsRGi(~-cJ~EW9IVMU5Q~Ih?!O366N+Qu$W0=o)c_y zglo6NCgtibjB8eV&&4>EBc>iFUM zS%CgS`6|x`pZq2D&@9Jbx_%qTIEW*Xf}&4;C@jkgsiY1kQRTko*_Xoa9U4L+^YFsR*aMtZ@=DT}@ zvc$W`9!#?8-Qp%SHq+H|iw8l$j;SLz{MLljoCq|S&%hR{Jhax!B2%yCF;dv9;3Q-f ztS)dir8y^GEyr%zSWg*11qPF!C2rp}wK@Prj*!O2k}hy7jFvJi?C-8Fio8KLAx(ce zTYV!eZ8@#7HZ3VE&mw$<^DDrNAS1-l2$(GNOPVS=cNnVp#5;2WgX zO*cdZYs#nA*h@~z_h`{bcLdxyz671Gw_$BcdS~~nV&}qd40$7)D~B}ztC~x1@6(5H`Af~9Zf!+8-klF385iZX)_*Q6t<83tvb0{CPB(G`TgsuV$P%ISZhMnA z>h6_n(P;h#h zMZ>4%&{8qD;sTG9=b)w}MdLn#CCbykj;NV#&)>Y2z|>Z1=lLBHK_Lm(?{w1C>BTFe zhs%FX-@ssh?^haGj^aRS9@h0*E*Qwo98Wiq6(UoHtY=yrR=;N(RX!7~ulRrZIz9F{ z+1y1-+ld$C9*#rTBSun?*Ej6T3er1?Cs1BrWO9O+FpU4j5SbMOG0|WpA-~2+p&W#X zaJrWYrsbTlQrONm9?Wp7f?B4o!lyzsuorliJxlH0dsaBlaG?7VGP%))hL# z#F#KSFu5FsOYy5c%AD;Gj(SiI+%s6WwRl~zdD!kp>zvIFMeh;oOqxnfq|j7gC+$7> z2K_`orGkjUkjqwf-Uff|Zq)jGK#r!MjJ!2?KT(M{;lW~p?bv1*y0SG(vUEvB2*(Mf z9(yi)6fi`^-hJiE7NSJsVAxHl|IX0)_0nQQse;-EL>xHcC823Q9Wfg9$ORBicRURj z-Mh~T{^k2FXqm^AZe&&cqc@%dLS#@ib59(I{-cmLbx@|Iaz$E6YjHlwhq%QuH1j=N z>HXbdR(Si&+ZX;R%sv(ZqVjVizAQuq0>C@d)L_%Oel+Nmuo53v&djv`qS01N=KvGErFLhK6#UB*)dpHNHI3PypE8g zTb@L?5bZe+=S2N$hwSTxr)*2;fWR$&UGWx{>V%bQQYe;F!VGtlrMsP2XKOV67$PPj z8nlegy@jrQ@lTwa-}>0@WUJ3CDqgOxsU?}QP1T;af=h9F@@Pay?8`=9hHGGjl7=nR zM4ux2m(NL6iSWGDVk_`J+vE!FKl{|6j^G!m8x^YUfos|*K}}blugu2$*Ql+{qfkXJ zAW^ICnGg#XQqF{tO zl*3+u`8n7W>hfq7=L^B%ckWZNF|K0T9;cIF-)}3mKlfb5EImj)iArVKMv7+vk!B6>N+===LNzW5_tgcLw6<3r&N0&J?b-Zm4&CCRg7xKz z;l9f9ukXUI-}~MYuQRRt&dlMti^(O!Zi=YMI2^G;_}coqAFisMmxC-ACl>1LJ`d>V zT}q$)%j`9Yq=*Yv@;08CG*L5g7J)dx)P1A}I?AXzBDcv{IBpS|3wxZQVV9)$UKrJh zkxD2%^E6TsI5Gx$SNszi&Jc-%afQlHR0-jY$;l~#8Y-ju`(7d?eI>lo-u>+1_x;;H zHc8ZsVp@KU_i(bV=5!)qSEsLfG(Pog8WKMyxEurUKNgE2;lNK_1VHF}y9KRmt++uV zH27;9u;e9pb15lCBiGPjW3-*M2jJyO>M4C*zvH)j?su98~?Dj8>CJ+)OsFo^$5>$S=} z>NN+$5HPcjOLKIz=(p1YjeHJpj2GM)xjdaFShi2s={7bQRfHKbj+aDlD*|UWqMN(M z4bPm)>Uk&O7Q8ZpNp*$%^-~C!5eSf1%y>971P8dP0P%Kt zGvf(%WApXSD}o96Z#Q>kVP?u=ESLq^FXcxmrK{S**R|3#%-fEQOYF*eKZT#i(E-*p z=G}=`Nt$9Bmxu^6v@svq$1MKq0-;&B%(-Z#PM304mfa;PO`&tqKTa}?$~nR~(XrO@ z2Ix=YgNBd{HNwCi3|;8`6S!PUH@3*Jz2s11(t8HlbdIo)3`iR+GH*cfOA~*>hTc}z z+}ydTNrvO!a7T3_Jz(Ip^TEid#{^y_$SRI!4R2-vdGSUl=<%c+gR20Md#axIGlXFp z7Qvp#{cE0HFNxNMRYMUq3mF$Kk3ol()_5?QgV+kvfrN@`=t%DM!&t6@G;m1EB}}Ex z3{8qj5tX=ajZtV=ZPb*XdKTngJu4B;4K$A6F33dzQ*X3C7V&%nmB3FjYZFtTlHBZ# zL|U}ardlf>a>|tYz$s0ci#z~nk^|}#(jgPa!8oND_$_rv3+wIqnIsdJ(>qN1pAx`m z2&~GPRMnTCV=EZhcC1V-@SvP-c%^OZ>geQqs%P(?c%un+29w75lWq0Xl=K|k*!xF5 zgr+s}dGmyqF0*lVq!CLM+Qx>#`CM$XR&D0#uJt}Tn)OhI53R-JhemYBVEfI%U?8bo z%kwtdFr+~JIL{8VCYOX518NPeo93!U$=tTVU%@nEi4bw6a+;3ciEtt;Yd><#GL5(v zg@D`u!=aKqoO;Vj1%*(S1P!V-crN=GpUBMo#a2r=0#XMgh~Lyg_*A%pKU7xZ`rg!d z5>yQ~pd}-gEhv$5QIP*lsGYgkCtdTT#Q%s%Gfyq4+-jaN8PYpzEOXkT*~fb#oPt`g z>g#+%9o$nmove1>I&`Aibj#fEA>Z&*?Jg$ILWd|?P7LQ~^>Ea7-oec9J>zxh#nDcT zHo#fa4P(_pr~)GO5#|_Ti%qbs>xPMzTWK5iv_xl#QENEbGzhzjT$$|A!-vmB1Ax%) zANuo!rj}~Qy z3YFL*$W=FV8v+(cITlnTVN{N(Xeg0p)F*jWd17I%!K`rQW3q(*RjFX&uWIX^vQ?Ra zXhv0qmxY@YFWDqHS16L)=SofX0ZS$3?$bhUVFfBlO%IIbDf_fH9d0>Po(ZUH+~${> z)2vrR@khkDS=8iQbMfKnFS#mvITiusx~*L(Q#+K=OeUJ*wJZ0eC1DZC$qK^qWUni& z0_OGMu0`0|=SFtX&_#IK@--jn{x4v*df?E;knOJZZ6iFhRzlju^=L5C+sn)>IX3~A z>@OFvm>Hb22di@g&pYUL5u3~*Ceqt42JI;w{AH_l(Q)6U@v9QVbJL zfx?WBfW7}vRgn9ej=+Z77oU9jdEwSuggRI+W3$n%!Vv~Zk>b;f0Yc(;t|(VIzbFy# zkghnJ#uHvghdnl)8~VqG=#{mR&^IKC7W zD(v2WsT%j}v*Uym4R?IYFF0di|I4b{V|A zZq7N&k8>3LScLkH_E^~YUsWC^nPk_i3SBvmdk~`|^5u>(L}ubj&h# z(tG;h0gFLG+kNG$=Iii8cziXdiM+ekWJiYM_UQRcc-ylK3v&dYDfh_uRg_ zKzmezUPrK<`?-0?k`$LG7)IKk?wdUwwur*wiZ*$tyn?^p=wyVcIBaeZ|6&qoYe0*V z%^?DMf+xkYOutR}x#>A2pV%L+KSzcQHs3zmkIMw+Weu-1S;YHiW3@vsZ(Aj{J>?&{BoXq~3dmF#_d^e(%sGE0IbDN}?pPPDKEXR7m{d zyb0?I9i5*kWtHbyr{c<*rhOFfe*VfAZrq}ZJs!Ji*t4Us@EkN|JTHU!hu^;trACW7 zWdAGpaR^Jm385b4|FHleZLr{7+h6aE>f9UcQ{F+wkaSx$_h(c`wgd*AF_n?^jpMG= zcD#pk5x#Fc!ok)b--!Pni8R(zKVd$q1XKcuPo87#LUa?0{=Xlxth(Q1i2nu2%h46Eh=&mH6Sqf zFbx$TyOfNsv?Lj^OB!M330_LR#sN@uKNr`UlM_MHQLON#G+k=Yf1kwtrKCP?u3j`u zU+}MeW2$J*Z79q6Rf}<)<1b1E7tI(>jPYj%4Q;_ELfm*bh8->$4Vm=%H(Bsmg$A4A z;4#bCS(xariVA9uIKt04!mWm>*ZULC;|%kchcba7bN+km<>lp3FYJt~0xyF`aqKim zF-vdOxVzf{RdljDd8!Pb&4omY{HVXMAj*~p)(BH2ywAeJMYUT3cAioh3F}RndJ#s9 z*u*3>OGm4arnCRCBuXhs|9mOZKbynbNT9c6_@u0yF!XZjaUNa}1d_}ffA^ZCS#XeV z8u*5v;3IQIMM&=)N#|Y%=T{waDeS9(SIxjQZ2VIO9*HA7xwQA=v9`AMJ{2K6T=BhJ zY4v_Z(XD10K2ofQi3U~y+(1Zm^qBfelPstkLcp%5r8`rL*8&`=R8kZKSW<50UkT#6 z-B#>}VufN(wb7XwPDnXkGLzj?8M?}ZaO?66){k-y%Q?8xglt`L}%5s-uc|MGa~Ow?FWO6569a^sJKzKw3wQ|`|{Ed zS5s&dw{%)6zW!s7KQNYm0I#oKG%Q#2^AevBI9{D#@oU3zgG?*&Gi^SP5!*+QIzpuu zc%LO@I3Z9Hl&GL!gXLPQ(1YpeTqcPhp49e#)NKz4zx2Pu7u@p-)@5HfWq!hg!HNku2bfkQcjLz@{P+RE|NKCEwA6lf zPKI~cZu4&1y#q-TGzSAls;N%WM^q+XMh@zpI3r_5Vn4BXZDXHcYI^z(Rp7Se=Shjm zDb2GIOQLYt$uL#foh9{rPm;AGDs@BpXmkF-l(Jw)o2YF0;3lX^WPKMZay@1*Z`C)-CUiQ^cK@iCS-J$wTB(M9`M>Umqi z#>KsFQ_T)cEasj8RNgrxo?h1$T3(UjG3H+afg1|A?ea*`KJPuQyadJlt0n0a?%*kx zl)gxY+ty+WZLGJhq~Y8IG?=iA?O?&lb|*7_ zc|3P~Q(9&wl3Lc}`$wvvA+m9f=`X4G+a52Wbfx-S{e25(NNC>uyp2BJEtzL zrj-vwTW>n4sG<-eudR?T(i}m=Zb*qq&ND$=Up|G*A82&=tMZ?iBf-6Ciz~0Fedx3r zjoFu4qkgCadKIF*jt*$1-tI>+-1V>h$@bX;uhHuoz8hzznV_L%U`R6MTfbzF5fA!N zo{z=n8U7KA_V_&4pD7U0Hh&C-4Ez6Ell`M z35rCyQAdkko#ELdT|Tk|>$-hctgmv|XQ>u3`F0rKOt5dUjJ(-g^}l(bT(&IZV@ z7j!JK1M&p})ry9>Hwk9F0w?vvSv^&xYVgX1smGw9z{3=k;2J0cDkwR&W#-7EC5-FU z5==w$zC-j6eFQ#P!l5J!J4Gs{r>KaD^%(23`F^F6Iv%I7%6i`PLB393f5;K|Jj~&@ zL879fdY`y|GWlMa`>n^^8pCN>lQyUh8AU23>RV^q(Ap;@B{{$s^rU9rn2D$7t_z4R z8?plHR2{;M=j%_+>Ls# zMX8d}+{1HO@no9cc#bO{-kZP>q3pG?XhzBgAP^;)LPscvR0)@jMmD z0`E!~d?L(qJwsc%AFDrh5x{C%~U29pM|onvUp_ZNc1Rlw$l~W+}M6Wt9~V8#D9a3jb29Q zF*jK%VJ@k%kMWC*th*dXJO^-l`j8=c6~9gG&Hfd0UPO2Xt1QP4UsWOq{T&8rS{ zl|8SVE0{Efby(j-zy~F(T5?+ z0-P4oPRsXcMb!^yfPI7y#5T5C5E}b1EuSbjPB&$^H#RLV`CS+jZY2D2yjXQiRwLCq zimj)Y-07W&{!rS)r^@o`$FDouIE0R3bJLG8fs2=PJ{MQhxR&z0265W2hi=1KWY?=n zNyhmV@Gp2V*&LK4ao{6KDjOB9wspyeJT6&$&{#^N>63^n4IB?$fVQb{)%Yo=xio*FmiF7(Q3c$ z_&P+4g+CSlhZM()##K(90zzM}T~z<=rC6_>HFqc#7q!AxUFz&LJth{B4!|Pip#?!B zAF$9J6K!0or&+*ZYmWMSd8((RQwgP-?TJAg8jpJaJVlLo0L@0t8x))+%dtFql<;zR>Dr+_Z@|%54hzNCwLF zFSguUo&-5pDUHJ)pKP2Ck|{4}Io=)S@Hi1hGm#mQ3|2rL4vO-)l1^INw~yIJ(W_uq z3tHb!*tK_>aQeFVz2*Uh;|LLSraSIs8X56YL8v7&OHzrwsGz4%Ghx@&h{tRRUy^DY zL)N7P*>v(Z`_t^V=zMfK4Nvdkj)nxb7 z^|g3^e!Z))G_VP2YM$Qy4K%W$#TIW0Vu$_gMmu=jleV`8I{1?8gA#l_BcrG<-w zKUMm_C5sz4y-HI$VQ6}`D1SCuZrtG^77u& zWM{$qg;%ny8qfY-L}Vh8)x}ttg{XHJtr8_|TT)fNYasf8(#U_OgBjMoH!~kprDbI= zhZF)ssPewp^);ZF_Mk}TD%kG-N7GeCwb?b>(&AFwibEi{ySoH;m*QI7t;K^A+})i5 z#i6)MDK0JU?tatvuJ1=yR#txGIVb1rnc1^vCi2v=C^1B`+>b1#@n^l+(EY2(%}d9{ z4A1EziT5UWsD2)2Aq)u0NrNV?)Gmca6!`-p8z!p~lfXzI3?{~Eiw>9SpEsHl^?aXw z{8~u8d_~#3z3hStG~=|H`;KP{9F#yB8&;IC97@kN)5=&%b74kq>*en@@349rih{$(A@7eo#XoSn0qm3fY2qo{yEH`y__#-or*`uIGo zj&87ggJso@Z}(IC{rcG}GcWo7noyqZe@Z)^%&C&Td1Dz$4MFrjX6z!m%fQPOCVkrOGdRzK6Z=h7m-cRZLJXl5c zORw(Wk3+C{(UuP>hK%FSDEOaH}9g7sZhF|*T?lYwBb4Nxk;KIYXoZz;7(I(P=2n-BP zzwK;w*-S#sO`2G;i~pM|e$F!EJ(XBV`--CNtqB4mCtJH^IBjeWJjX*r6T!z}s(&x< zwZlVt?HVHsclYF*8~2PDc<7hJS=ko1e}5XbYm(jfI6k;N69(OY5}3q8sc->WQl?k2 z^8H%(86gFUK`nxBoBU_qaRMdttUL&=u7vRk7EU{wUJouG<`j9SgM!tkThLsN2yC8+ z>fosBh#0FxD~k_q-{l_HY52_=uo1E<|F-0~QeLG6JXNZ0S^o2ac%mo#6`E}|_8DQE z&6O|w@jCgFp>wx?I!`sMFNqdKnabL_C;$4=H>gFY?g1B6_lNL|!O)bG`} zj&P8pzT$N~il;hyKmEOuRp<42ADgoeBQ(FTF^7`T#DJt&301X>a07ny_!nCZg$dp8 zX>qq9%IWfnArhLQ6l@+6Q>stpox#yx{W7kuaQI)I?Uek@$0dP`a$PPltyZ?YKmGF< zp?RSpX0IG}yahkeo{e%Ap$~oau2Cm7TmorxtCHg&ghcT`&(Yd zgf@lcK4^0u2wuXEm8F!| zv$b4(K?%4YDW>*%NQV7hV3W`L7ir9BbtGqPxq~XTEvvo4nzMri((>o?NF(+zNCV-+ zF2h*y)^R`FTp8QDf4o5OqMkZo(g$ild<7OB{Cw-LPniSDS5=JNja*_jCz}!9Oj$=h zS&mK%WyP-v#ASD4Ly{=(BGmmZ8zrzN!hOKIFG6a@Z=_nn=TkO{liuuV`(bI%tH?_K)7uuyMSo%(G)jpc5gch~ z>CT-P*O-@jqm#fJ%E5j=-_h=y`(>E-ShK1|P ze^jNSy`uOg-VCd|>d$avR7!y4)l0u*M{6k;_t5es95?@%e$K`Awju4!^W?S(M(~`_ zxMcV`BlNI;j$MbdiBeOGbz(h|Fxxtc#7$KB++-XrJ4%9{Sj}SEkDdag=ee@Rs{7fI zXi}Z$N6>)$nb)XIdp%#n?=oIgDeJJ7H}GQ9K}_ZK2q7TK_@(Jhbp8mEo};bYfgaf` z+_A(D$=|;M67E|;YS96MitXt;%i@D}#@{*iYPg8`VZ%T2QLdi!CPz8Fx`_YMR49%t zzg2purTr+(+htLi+=SNUh8IixrPVpruRM$(HOrj(d9;AB7v%kG?49})%~|mBThZXh ze+KdvHkir{o*I0)3;)NU*N?VK(bqI(=g63J_mg&xXH`?l)Jje-!f_Ze(3iam!sjh?OrCz(v-MT z1xCY715f9)L(Up(b$PfO&jZ@tClcsu!xKxG5s2NlM`wGfZ@I>K3rF$kq=UCv!Bq_= zXq!}yS$u=L0CNmFxeic4V;-b;HBs`Y`@SDJ@D;(c7TbY)<6iD>5fx))rPD!H$&WHw zjsdrdG;3#xLIp z%IgjPQy=6Hhi(qbK6eKv$%d~)M83(jhREhf+hLid>KLDGY`;y2C??yo37719$oNVj z3)#DV;IKHD1>|_Bc-*}lFu&G{*>S2^pKhz z$Kg=?TrfvA&V^_wFn|a%7@@oK%RMbap#U*w7@eAB^XgDzf?EoHNjNZRTD;sgBMZvi zqyA&H)Dda2)EY|i^9R>g6UT<~h1bnpgRtOZQ2-^gh9xWB$(Bd=(^te~!J!j_b=bj* z0>hHho_PF2G<68EPev?h_9l6B@E)l}v~b2xKpnm(-b5KCnE+bJNaWb8vId_ZWhXq@ z0yUH5cxz=PSavh-2RsZMJEpjo_3-<d)-w2w9Q zrVs{NIdbyJ7oePIDWuGmR0c0C{%WlauPf-c=pLzivv?MfkIz)D|hc(TzNw zD#@`|>UvVKXNw{?56XnrhG+$C#Jd+sGZwi>pDQx67xnJm`;GSLHe)eoq43*~qD@Ak zh`hg)-*5%^$#!qPlkHaCAvv5$S9^0@DQd&n`oOo5s~H`tFP&L4lQF&hZi>a?Zx zL|W2dS`IRm<0DzcIgs3TJ|1WWyp4oVg=cr&j=+azoNSyy> zq2F<0_f+pDSM&%m-9;q0iE!TXt9uEFg#n14iPnK?PI9Lt^RGUZ0?+49I7vknc}3?V zaV%GDUgRl!rkquhQ@ub2PbFY6(6r{- zZ<7-dQyUI_ACSUD& zJ*>(LULC6o-i)i;+gJHwnbys>V3@KIWKztN3;zN4YF%cvl#vwoTlFw0@bTYJ^chK& zhhZZ0VvY8iq9@*XEs!l;vVUPvQ0nbOC-PdX>tX|g^4jZ__Tc0>G#gJ3rX;J(lS?Oi z$zE@p1M!0BXhN>>)g#7*l15}|@-Qas2SnhjYG2fCR}rCX;Z_Nog7OH7MRMM=wjb;M zcI`OKHh}v^Ls4)P8!x*k;-qdycksGq_Q0sLkHHO{_IEnReqXH=kDj%%Y>C=HldTdY zn})711S8yMCa2j!%&AxSZBe=I`jyP$6wOfvN*1!|$K!ZTVb#@0;Onn)?urh0DoWEtRz{)tZC>R9A9}Z}i~XEeIEmgZuZ^g4=jZ6@bO0) znCJDZl#tcyBe-;O+t$(ES+DvKe|F|mitff2FEEsKw!zsPW^3NQ&rqYG%1rYTzFfo- zx#M_hFFm%0s$SQh+D#1B<9sE zH}y89tSBHpQ()v@Iy7gteprpd!I*!+oX0x~zL#B%Vjb*Cx^HDIJcVT@uY{5c;zK0W zv(v=6p9^15S>hB~ALc#9e9*yK_o^3y;CIvGS$=3NA{QZKN@v{UbO9?^(8K1S^4T)> z^V#bsE#@4H%X>QQQaV4ysyh+YO+j7Zr|FvO4pOwWn3+H>0j-qZt;V&$+5@G%|$I4fi3b~RScCn;J>B$$9!>wShmSoD~Bvmjrkpp_4->4qPS50M3BNb3Mggcqf5jA z0g97Qs9%*ww`}+V?=rG}FY>MSinf0WbYk15rk-gWw!%t;oYUaYE%%qW|1d}kk%U%r z7A_{cGFE%^n3L1^5XoEx7-W2yxOXu0mbeS$#c`MNs*PEeT1j2M%_K3qZ?;WxP(9D- zp4vGUex^1D zHHa~`oAjS5FoL4C zR8d=w^HfPS^(kAD9=yf0jv9|maHKE0EeVcN(d`o7>z(a#{gYKhoF=rP)~h|zKMZS1 zkiJ9(VTbq0fBvR23DKG^!SAO0xeUJhD3d(||ygEQ>vFw60ZoqKMINMMB1XD-UCL1? zy1(jw_o&m`d{%z%Ojk+EMujO-+iRUGF)UY;H-B9G|6aTYD%J}bRS35HYQwWM00@L? zr!*5|y&#bAihJ%Y4xmbEuKC5>o@%Sepb3OMV1X#jx@-d6Yk5V588Hzd-*mbw7uj~l zl!onSveODA#+Y^7#WJw9;7<}a!-hL0i ztWq9!9f$9C9hV2f1LCHS6u*92X;|C5kqS8CQ9l(HO2JMfC)Z;LFnS!^p-cAw>{0la z!(R-D{x!*a+FA2CC@c56iLMZTCyTJvDE?ehRvJ z&dlgWaor(InQt@sz5$TJK?qK_64=eKHgZrCc@+LZ!$FmhJ z!}AT7jL1`w#&BU#*2DV9uZU0NnO2Dw*A5T2ojK*<(W^mtM3}K95^EAQ}c<( zZg|?)W^Ov9!?;)8Bl*gzY~ONawgkX8>9W~kwZ^$gAhl{jL&2&`K^^$2m1`N7s3ah} z62A&B8ZWvTO2i>TkO4u~Be>Wzcz*sW&{}({`1n-=Y>h-wg#veeY9R1)W)VznSA&?R zcXr@?V*5+<87@|d6?*J6^VV?`ky~4&2gAsS?B`9ecnrmz6jGeFY`>P8Mz4#cEPT3` z?MG;`C7zhyZQpVIFtM!OIG_Hz>fj>nnBJ>JvQ_+CSB~|PBK5J1o%m{m{I8Pp`cm%# zu8S*>O%<2<5elH1jV5+gJxg-99zv!dJBVKAaiPoIFxr%)+~qb|{CL>3-qT!2s_md= z+^Ajl)ctK87zo2PPnpe&Q86af4vE7#8Oe?Url@7pUL;IxQaJ>DGQHaAFyy4JLYHbU z;A|a{mN_`o+?=QOHdkU@Xel3ir;m|jvM$%*11X6Ih(jJBh%C8le@9rVE*ZMF*&ANP zdL9QEV|M3}M|o0shHhYR z!G#8!ej)TaYe5YhY*+^vkdy4vossz^@@89@7RQqGEKuzhniQ-;{&DQ;q%e^?Xyltw zIYu%Zt*&YsT3A$s_0@=)GAB?}Tw>|}G9z6`j&$6-lngPl5 z2T4hMqGPmC(bdpcWiM`1arz(!Y%y@oFOm`}-;P9*^EN7e{}YB=O$7p>xG4W zUTSykkH|(At&eZ*jfGHCQropip#$QANWv;BZsm}+W344yc3bDZ-(+9N&DIE!f&n7jOv`9miPFb z2fVJ7P6OYscVJ^3CHF;N+1KZzVXEenvwA1|<5N!axG#RU$l3ReV=qR%m$KibQ{el# ziVc6RE=(BNe=;390-W-#Rpl@KagOZqj5sTE#&k=lM8kepRs=TiPAQJHUpZE*(6%s} z%1QSHNRWBKUBx)M-D3Sw>O9eB-JAO5|E%7)8&{yV=6I-zW0~!>l=h{J^kHy^m+q;csB2PZtTfOw!S~Pf zmhwy5s5>`K<6fw8AlpWMp~s(HQC&SgXR)vY82C?c?X3NhvP|n z`Gw>y-;u~j(O!3a!1M$jfT!!IzAB?l|I813q}wg_`;( zzhvrj*TzgxR{#CC?vRJq?w*^tw~w83#ozv|n}%XrN9qvFb5c~HA)CzcXWRXLM+Kml z(ou$E4A5JsO^MgzQMAwfZtw1GQ9cwNc*TGA_&x0GHA=X+{moTR6h~pr>H$3$bXyFe zgt+|uOFJVVZe{i@E^yRoiqL9(q%W#iMJ-d1{VDF~iJ=L%xr_R<|}Nazw=yzupmLTQZpkjn^5g>ml1M;0C{5)NEJu zl$J=KEd@8Jz)0%I^#-6V{p{!TH6}T6m9F`im?+Cc-dpif9Fso_)hQBf49x{$$#ts6 z<+hwFV7qkVw}cVjMRrAufHvF#qu(pigoMnkHuqBU9982oLbLsk`nLYs=RE{}Hx=v=>Q>@!+#~!o>^@r7JQxDSD2bOy0>yI^o$9D(S)gM*VO{Jt#<*8_C z`L&hp#dCciPsOlY#S{;m+Nz&|iss8{(7^M!CmP#&cMHEEMHBAcA0Q=jGU2gWBe-VA?BI2Q^Wd7$2r4B1e}Qt?E3 z3&@R6YP!)?q3V|#R0k3BNQ~I`LPH&Yu*O~n-?alyOg5u<7{W&h% z=;(if*l^Zi1BwLQFvW2}9GYy_xFbIe^HU_ttU3oi7SJ$w6ZDI?)OSbM#|)Up7ZA3} z2na2-S4di}=$o@c!EJi99OuHN^x&{0!I2Fk))nn~ZJIPvTU+SK$uoUSPYd$wKv~H# zdEt4(mbS@202;U{o^mp*qngWqtlgZQ=IHs29hWX)>YAvWQzJZnL@B6KoQIVO)MpqM zoU~1rL|PVYxxPl83N%gjd{GX&d$kz2Z@gnmFr`Q3zUX(ij;Hf_CLFN)_-AsLRI$(> zIn~9JS1X12eBrfiBgeNSJ;OGha7R(F1(K{NxCxG8`-w00@cYiY$c+_dt{3vlFe8AV^UsO1VInGuq*0! zzi-8%c5by@7<9OJ3XAjGpwY$p@N^>W!b(DYdWst8=aSKJ#35Eg8Kthhz!G|QL%k4BOk`kv__Y%_4R~of6w@Vo&PY6?KYutoDa6exH#cno~ z6n@tP6?TQIXkmapiL0PoI_YZaP2zqOVKHLE!~tn*!v9bj7)9=?R%2FJvdWl9nKa9s zRUqpG3fIFxTNrkfx4PVbn0-?x+ufc=Z+cZii>e459QEztfm#W*-Z6=IMLxo)TFQW& zkGv^rPG`aAGTrEAoJVgb!EUwH`71~x=7*ZNQC>Gx+DgwImsetjs>^r>hgTll+FIhg z^_P=%Qm4kqU(nsUg zR!C+MX;Ls}Vkb=O%T<^BUi=RbK8k5t@^D-wDGC=q3c_^(+4<9a4Gy2uhPP?5MU@({ zKMXjoWMr9b90Ly&gnCw=+1y;K{9;47TO4&$rCsUHA-S8&~Fb_3# zrW<}=#HbK@k7ozI@12Cb--a%?@C!g!CVvRmMApqTc-sx&jfTE<*BmXiv(@nEU67kLxlJnC$ zlfhk`x6Ltozg;?h{O*YQqkS!+wRt7Y3jnp2mWvAnk=|LDfj@-Emolh%Uvj_Zy5;_o zo+ZFJ^fXnw)y_27GeCO~{kd#&;!K4&jZ8_jxiAHlifL1BbkTTQ>0Peo>Y;Rn~CWg{0=A+n{$>D?o14RT@Lj=x9%YuAJhhQ+Y?b^2eX~(L|g8`4W zrtR-VI{TAQ&B8%N(cZw;JWADYmH|#qHwhx&8^Hcp^S!wGrv*4V12<^*@ctHW)kzj9 z)Y+j^vj-HizoV;E<19Ia&VNIWbda8U(1tSK5qwgY;pK;6VF?X>X#ST>t$Z=naIB8X z0RL#>Emd#q{>9YXgm-#qx_+G};^7uoafcO1)+a>LT=OWSIwQOlD-AqP`BAuj=>aJX z$T+@_OYk>Mm{S&vYfH-e4qL4LYY8u=oJNj{S`iBZ3(?50iy+GWXy$9)8NKcjcRB|x zS)yr5qY8TDhkN7bcm<6b`&2srAa{e<=YCzKwGr#PRK0JV0zRk9j5Cp#IDI}KK-iP^ zroL+lI6)@6Kg+o5vf>}bV^}BDLKer`5rkH_1fwKPj6?)_QHtR7JbVrPeMkL^;r@Ek zzibYAZbJWs>)smtpr#RoPCFugImMZ|7N3hb%AhgQC?NH=Fc4$#=z`E{rY2Fc5J!Qe zHT-5QcXty7q2=mE<|jZxZZskM&(B^fkztoFhf5(UCSvsFuwS5+R)j8X;T;zgF5!#6 zURHzt9VpOU4tqTq9ErFe*GqgZBl?2r8OR8))t>g<&TaC;SPy;O`-bD#+LEM|FYnXd z$9^b%X15SJV340oP(R6w8)^QbTIVBqzcgj{dQ5ej5}#z`2nlvA+!4|>YU%&;f`Df9 z#_uVihzPt@<(o_eq?!9A#k!kQcjN2x4u$!`N%QHW9G^-qiN6JmI+pp4zCu(B*Y zU?34KxoFk9#R+Tg1dT)ry1JNR^nc@w+h13N=%~=Lgp3$|;+G^O;U+I?71t zr;pq>6!iIHV=OFC31#HjQ?yPVO`~*R7g8G|CGX<51Q@LYS(%iEM zE4{+OiGq(DHT6drw1JinQ*~+{i_f71Rp{ToM*MhO+)tbgMUB#--}=5g%W9wXzC?Ld z+2z5^!0&=@l~<5rl{e&SnKmJl)%g-LR>ArU^KY;FX8JFVs4f-Zf{)}H9Q}HuW1&1- z=k6bl2ESQi<-hsr$x1KC!UgSziO-cRrns2LOD19kS(mdue5#)U#HC@w&_ZF z8@5ydUBgpnBM`?M%NQfmJh`HreC@GXC+V= z0hIK$`dlJGku0~u)jruNA}QOC z!n~}AJi!EK_mox+$Dk{+-Q?6s@%f98&#q8oM7BA(WT|_wXag~2=Vcl$yh{}5AG950 zI9Weu*$yx*a+ND9Y50QPLfomy&U?9@Cd3;2#9 zs`lJ0kZMQ2+kM_D2yJBX5f_K(H#P$w+eo(QRdhWY9XQJj&Sg)h0#IZLfL1L0BLb{w zg*(j8eVOCqA|oN5`>h40g*(=NMcE<B6Zp+yY8e9QTEpH$?+{nWHkDhS8+H!cVo==L?%PW@xsSIJQ86l^`7wpOPuUlHal7&lxX5Vm*U_6xbq5C<+n$ z+jA6x%aT!%_DvpB?-z38q=rZ}jKsREO4@n6qy9`ECjhlWGgQ8T?0-;b;Po1H%HfIv zDOj0Zbsu6=8@R=ROdx(^bBY`6+V~bJ!Po~L^^hCSW2diYBl{!ZvN@){#H1k~rXcmR zSoa<%Agd;c_3PF!`ti}wkblbf=^|-CP*AZld3RJ!Z~_70x|m>w!1PZd7EBZdGy_T@Wd5t>6bcIbjy5h#x1yrzcO9pLA0|MXA=BX+%yZYm(<;_TeIKj z<<-pCG|+oYeIYrZ0%lN4I^5zrYpE64)(0(?~5+`HX33^^g=`RSr zITYm!Uw!eoWGol8Ua|DkKidDmUZK~q|C!oV@vvOTlY()nIfl_eC*yE95G3@UrEn3S z8Yi`J!htIDK7U(o*~L-R@w7g4#AF(+w)|L`04(h*r+)|3$agGb-I!_0bY-Iw_CGRHOGV&(a!?L&qAlz~~riOk}z z<%C4R-yOoSKTncvOs;WFil0tqqe;~|dJu$Ldd44Dt~1YRHx%qJy7 zT3{^z0aZ_Pi7ppSeTuwX641iQfAm^=^iO)wpW*Ic4IJVdS`C~L&%zF@d`c;m&lGEP2q@^bIBV{_&0{4+%Isf%Fl2Z`datpuvo4!)LZr%9d8pHT zG?oE!nb$Rb=@uW^eXlt|)cTO5-Jb%osX10QeJLx03qZV=Y1kzy^mfdkz7b8f_@puz z_xv>sk+1oZ7Sn8%uR!I#)$T5fwhG0K^Pt_yB@%K>p4JJi6?n+y{dXisB9I!+0{*F~ zy{Tn?J9!mjR}cDg{AO%>37=mP2_|+&E!fL74oD4Oh19BIK;SI9o${20N)D{|VfP{g z8KVSGHq$V2d0;kyO9z=HK#9M^jT^uE-lQrBJfvo4;ur8(vzBh37(99B7=DZ{<3kGY8q3sRFmY|3{{9L&Nq63_$4~o`-fYza9gDldaq^eFdhPFU zBWc`F&IRqPP?>0yYh!ruhlYshlt^k$YJHd{6(Y@K{hb`bi}h@g^|kdVe9UwyO$#mO z?kt%O&oh7dj^W5B@Y$K?nX8|}aaDs406igly4w5TlO*rR@kQXq{`WWxPeqenq1`#O zJIQOKds3~&Au4D3UZKzFCh8o;QOzb0n~E@pGUHUj-EvKyKex`=X|EQ<-{Mgk5f_VP zE{E0eYsz^#Uq*72kr#geHoJw5gjP9ROsNe!*OrnA`PsapYhMl1%|7rwPC4cqq$G_3 z#06=P=C?D;TH)qsb5ufIuNk33do8G=v!L^BS!!pQ&}ofO7_O>;O#K8j^_{7c0+_bB z1iHuL4X3NLKJdEn$kLP_=-xNUwll8z5pETWi%ANL99T_5U=caC|1RfN-caT$>*!ypJ2U@h;n@V?ikK(`BLz8KR7nO z6UMW1w?$L0`MbWBvU2c^Vk?vGk#)goceH0VfWo-2zf098nyz7CL1A5~229$Nc%L{R z9tD?tPp1DkCHW>%H2@&h=}`LN7cq2%YE#ondvIHhDZno^fb?fSURkPaD0&rI{yKtq zg9sxgsy+o8^c3mU`OI|^!-rhmx%i>DW&%l|>F!3IbiJ?NUhoZc8sm_}>|;heKl1oK z^-!njkbbnH?8}ozS((<_Z(7a(_{g14K*5)c_sp@diW6B47*jUr=tuq*q;2Q2L3Qa= z{SgVk{3kNIVxlaRHBWc=U~lpfJrZAYBnxnYh1fpGmC_ec^xy{W>JeaQ)c_yVSdY~uYxZ^ zr0g#d+_|w!!a2VK`dsA9_4Ru@y`xQlI*Eo(o9)9%Jt#L9_$O*#p2)^WPQOCz=$hls#i3Xf*nY z8yGRM;Th;S*T_CXA9;WxH+Zv&cH57Hzg8FN`(!iy?ChT*8-~#Zn%4u`!fiiVHAUaJ zQ4zUr=7a8tJkIg)i)>=Q-Gr8EEiEOGj%lMi*~CJ3Zqr$Jbg|3)t&!^_(TH{KBw@Lh z_DxIEp_+Va^te#lxl=)k1kCtkj=`4^yAgTsYCa~#9iwLBu9Wm@CcmBZa=w?fxQ}GJ zDQ`xb3sdm+-EQCy)XCrb4{c5*(5Uh`C&8q8_I-S}%5#8`5-hXXo{BebOrvi!|I-2- z{4Te>?AdfL*(QPh0afZGhpHUK0EM(7Gt(~R4+*GO5$0(!3p^}_efK%WtkgvDv)GNy zhGzzaM!4jZgZv+7uEV?G_%QgyhQhecdyNJw>)-tL7@>Q=-mRA{-Fcfhlz)Slb`yQ|S4pF_(qtOhjH9tE-vJA*XvV3t0UNB97UI(~oKLec3 z!xmZ}fuVpk(N{TB90$;^wh#rTP(PpYBq{5=_NJ}s7 zL{#`(TiXUx6z%9b&e_ej8MSPc3!lQzYkYjp^nC0->XhSl=hJ=y*B$2c57E^7|9E z3V6MN2^mb>$YRo?Lg1{=gLHTOBu$CQv?$4^a(G!@CKvp(mtQxVL@S`)k}VK}_uXdf zHYQ+xYgdj}EYuyqt5QHdFd-oq4IfESytp>he}&Gbr6U$Fz{vEraR*tb9+Bf;0ioIX z9OQ+Ld@~!TsS#PK5eK&=!e#1x2Dop7U#2gbT7~;gqv=ph2Fyi0hepKu%RS^*Z^VC( zdh1VG-DK>-Mu%u1B!j!&qrd#YW@I4yO9izO52K{Z{E?EMWI-6M6r{<4SO*w!>#>rk z)KKW37*`cHqfD^ayUXI3S6%A?fNAXhyBX%eA$#}zs zj|*p9x}jF*Av*^|W`e%5wA)kWy8q`3`*6Ie9fFYlA5hC%F7NcOVKA9c$}{-*RtXZ> zwmGQ8-LX~ehOOpmu1MKRp}FUColX@zOgmxlQr;17ny}&sCwzPpe49Gkr$S z`kT$G0~<%#cXCU*=yJUv#N&r0+PFB<&EPjJrx^hs>oZ2I6mV%h3+B|P$}DV8&=YIq z(Q%zAq9(gN4yeFw9gMT9m(csLPu(Og01gb*<=jLXu!H#rWN=Bt2G#h7BhX>F3UzZ= zxf;r4iYY6G>aob8lpEtjUFV_3jkFO0jBAzEh|{%rnH zOM?%qX_(j;j0Mw9M!35_7S8L0(yG+pcs^4s#Z zbQ|+?Z|jW70Cbcp8x#Fta^ox!uPl%?-7uaOi$E@#zQDI-RtR(8=>|+}_c{GjH*M?v znh@gw^B}m6n#*1%)V)AuFSp-`GFuSGh8Ra-9sKmJXIl`+?xE~-snpXGsns+cJ0*0X zr||FT5j9BEDq;?uvoSkK-jr~_H|EMYwnU3tt>4E7Q^Lb=th6!X9qkL850GidS`tTU zG?Qd#Y>v*9KXQ5Oybt2n3eXiWWYD6xJ+%npQ;0Ig1?|Fc6S|u|dz;^RR&X0yj}SM; z!7&~Qa{XmOx*PAX_7uM4}b?gZFqZUzlZu#daxDv zhjJ1ikFuc_D*k>mVqC~m9);9${=k>_)ewP%%q0;FShN^UCgZ+-iML@lSA_3o6b^P% z65En<=DNNr?$uIaD}(NwXV4N1T`ZbU7T>~M&2~}fH4ppm%WAYB_HZc0snb`x&8+4;rZnM|Xa{p!m4*D~m1aaGHlu&qUY~acyJ5~%Suo#=sYo!-iwVm@ERv&OkQZaA z=kskD!4lPxXr!9SOUiZ`X_fQVJ9!n_Ukx4~664m!#ut&4B$*mL8L6z90IOJeG-aG$ zbQC@Bko&)NDnKgj^o<7GwFBNd`B~85%4k`0RL(O*}Chsu+72#0LagDHI+HGW(DJ9EpGJphPiWQ?RQ}B zWc6R=^t&@>jRVj6!#z6i3jcfbIVaV3vhB2ON)od3Gxoj-J8fUL^1kL+aBp;oy42t# z$5FyYkjoskp`_k`G%s&N-K!Ox;6~DO(Kp+1 ze$`3*l#8i8g~XzBRq4P>*d;ntwS(s;j#mkffRSAGh<8!DPHpm#zeXgtS;Yb?Rw(k* zIX~?}C7}Ersh2DP{U&#|k-=1)HO6LrLePEh9aU=6sx7J8qo$Ekq84BeR4HHD=s$tx z;IWw=zE$g2MSV@FCm!?Nrt_4)wj)ProUAcDTG5(aT2sN7{#Aq2GZvR?^5^P_*NdSs zLYmo6MjMrIhmltmsXl?Ee5)56Eor(o!AH^HRFL~UF$5cqc$6gR@TwYjc?7Ztb$ZF6 z5nq(ToP?0;s0`bH2W%YFzY0z2uljC6lRY=outCaLgov*O>G{=YkNe>FEghk&&w3BE z-9yWCG%2y&L=<%36vO^id>f7_b76L^Iq2`OQOS6`xot3rCP~AQh2~76`HkJIbO6Xk z;`CFE&+)trfk}MZI$d{gP=3DN!(YEZy_V}Bqb8X5&-PMytjqR7?d52-(>f8qZd3Uj zDp3l3k~$1ZWu|p~n<2JP{cZ&D* z(D3+e@K6{p7Ft-t%XynQ$Us0@ixX86!_;<}}d+=}gn~86$U%OIszY z-$JrtDXh_~R~ln${O~vL#Y)UgDmer&R6Ci`=s!oGb|W(lHGFK`*T@J(5ipAo#HAob zw5E5j5194N>UKs7B`-svIxQpdj|va7@;<%rCw|(14L|+rpndaeeZ_jCA8DuMDnpjb zjW@wqO=}YT0m$x_g`MrYi3;R)GL=5o;hk~pIj?N=i&Nj-X-cDRwqM$OQ|QD?Kin=f z5A%`4Qc+lxHYxp%t`Q)YHxCDUxFjex*#Xj2X2xGY;4AW>P7Nm)-M#ilzsLzad^djWc3*Dl2yCL+ZIQt11< zU9LR}(5%AS`HDj09V?%pg#LnFPzoxje6I{~_^#>uc2JWWg2Oh#M>ZxGNgFG`Osj^c zh6{E#;LxwG!L*+K>!wc6=sK!sezP4V48;}a1oO@_PfcNWcV`pbl!G9M!Xl$SR~;l7Ga{8Vmozmbpr zb{uxwpaYGp(l2i^y}X%1vPcDHyerYrP>PIjo%%@*UW0Ql)XAi?{Z zH#jgabBEYn7tVx?9?#V4^$WjWs;qX<%#xVvXeJd>FEY{Ja> zM?uJ9RgQ}S+=0$78FZG7)mC`}MX+HH1Jx4+zXJ3E@aeR0pt_yIQ6vsKB1qgSF@lfc z5U!8NLS8=)kxABlF(Td51D7>>CUH`c_aY99A@)j#5Jk2j*EIbFD=LI=OwN(}dV-#I7_PO7+BpfQC1 z^36#pl$v4?9lC*ks48AWjP|By{pAu^K%B>`5t-&pw>X*^{>X%~jwo`Hj_22Q!{eF% z{LRZt@x%g228y7X`@3d`RUzFkCiJ&GbMEGboQ?^jw;}+=(Oqy^hEW@N^VzL_ccht4 zD$XoKw6vFcbcvp)D+cn2AUW8}^A-7RTzg3nw`^4OJsB|Pyb-Ah`ZqvZSGqxvI|QJ) zE1gqn0;QI7X`MwD;gM{oqadOIb%!4SV!YDF#UVD;D+42jkSkqSUvokAgdl|?28xV{ z^wp4;=Lf^_R4S$2BL)VrX!kyd4s;gSGX^7XLKjHbH*Dh2F3t~?T~U~S&t0?BV0ATQ z%VDu0%PR<|_{6X6R6r8i&#iv>SLadW@(BAj1iP!tWaU?)i+dD}_I@^WKl8}`0C>nx zWVb=v6wx{bOAyF|;_@3QH9FE_s>54D)_5>Qs@zQ^^L#n&{4fVkIkae@ZeNn;M_brl z7W&pFp2D%t3((!v;~3~Nn%^ajhEv+Swm%5I55RldR4^G0uf4lu#Mdj&h?dLW_#WYX?`g?mk4FYjTw_ ztjMPa_UgSuIm4RaW2Uzl4u)m$6jXBAX8Q;av%oLo$Hs2Y!xwZvoID>t5dL5u_9`VN zu&qALRLuyOY&*;d^Hf*n8%7tDd*3ITQdK-~V#U4<(eG2zSJrMzT0>$YR?pB{3zTdL z(!4%NFqthVM6G=m2qM>xqzbR?mw+WF%~%39LGlLTkR^~+T+R)aZ}CNhDB+NWS!Js1Kr?{uXvk6!m(K>trMt3TaH5I z8Qu}%w~mk-zbh{5j@s!0eAz0j(EGOU6qX_|lc1jAw_h<#^_s?Nd(BV50&Dfxl#6i} z^$zVvl5naw@5wQkU2<~oKfNFy=7a%q15&Z}!6Lm0_-9q2!(B=cOi{Zlr_-_U@9!XUz6>p9qFcH`i=e<3;KxhFJiYe|nOq%|7n<-6sd$Nm3ov zaR>OrPfz8_f3M}4)C6Y1)DC#B9mKxCc809@3>5mP3krXv)_rWiR#+Dz*-!435*^xx z$-KOn;%(-)y16Crf6V2K?R=3MO0*v;f?$SR^swmeII$9?M9ir1L z4-EK9rFq^sXjZA=?WkT548DGE?7=d`Z zVnK|2bow03Sgee()1Ygah!-}bXfQlNKGdoqZbe?awt6$g@$WYYKZ8)Qv-c=WH-Z)0|V^Bsl9I8YHJ&-z+`8h_x5&$qimI! zSveg7EnSfYi4r*R#HJs#9Rm#O7#lC@@UfpNuyT9YuD`*9@JI zRYXhUQYR)M4ALnXonS`7N+c?Hf{Fa1#y2tvk8}dd2HuV)v-S{dynM&s^=LHo?}8-3 z`TNw&SHV_^mb|j@%vtx})HTyk6I@+j>@BF;+ZcPF;Rx?t7aYdI7cHBmbBN3MDIt0O zqyX6ql&Z(VjpdZUVI8@2>(@^9`T86sA(VzYN2$ilPtJcq~{G zM|qS2JG5m=zRV0 zrlJR;AN0ame=FqDsi+qR>5LH>DD}|1_AW}b_sRy%C^hx%m93zEw<(CDEjc65Aa^tl zB5KHO)G9hb*Zw-d{zw^cOBG%=j=hB>o2cJ}Xn2qyNkK775b8p8BoDB}tl~%7*bDbb zGxF}e?7iNNnX)&z#ylliRIICa)1`P>FDcjfC%@iZCG--`byr2%=B`grn6i7F6Qis1{hy<({-BqEI%Td0Yldb;7V z(Lv%T!Z4vP`H2U1Vo0Fu zfT9JBov&jyiMZu9N-PUHdxuY>jcuBopt?C!EJrZo7u!d(-HC@!FDUIpSlRkT{5QOm zThmHpAPCmJ)tAVFS%cIc!ldQZhPcWk>Wgo;#(k`=vNCq&q&FD#hjJ-=1f#Jp7E=Zo z>2H$LSJYrO5@U*}=&|7Tb;eC4^xv%yvM0wkXoN(v2Rp2{wxO|+?go+AHw-tf_F-7) zlR-fOoF>YC?%_>`bk+~wx~WV&-jrtb7Owwb@)X=V>N#@WGib9>{AyQNIUyyg;&leO zDIR3vx4r#IX(#d8>Uy6K?G<{0B-*6PYs1HK?@!;a7F1GyUa(q;z&vzz=oGLv<_9dT+^yhZ>aSHxRz!(prPZ@7b^wH= zuc?o}x04~xKdSaL7yhRIORJS^Z8@JS>VL+7pU-~$4(pxC=eUD-p}{F-^lx+dhpHgK z#f(zO-%-V{v&B@2PvhX-1h<_L(uh}>cv6f+ZxhQ*jE#c4RQ~!w2GVNfvu$+GgDs^a zm3g%G`FK$kDJ$TaP9-ro_ED~QvDr3;PziAm28djMCiL5q{pkM_!?X8b>T)iW;zYI7 zr`f6@9*u)!h56@e8xi34k5f`jr$WN=hs{_JF3G~U#>ZnC3J|7z7B<h)bPVbGO?VUqEtys@Jp{gUK-ED-E7o z<$)P%lzwsM2`sT`r*eBaT!buPj8=(AUg|^%lH>P}+8jwmS$-S^L5XfIg(UxkF(vaKTydB5zIw5;S@Y~)BkmLvYd|DdEhMDwd4yrA7Y`m55!KJx@mDZYBpF`G7`&xUCK8OMdX4s1`-PR_kK}c36qdd&0iq$+DoVcEF!^eU z%1E75PfcV3>)rhS^5;w$F+gJJ_^joy)ADWL%u80+S*G9#xC?NDltLTzvP_5Nb%p@W|A6RWaI@fZ%;M;u0OuU@<>av4?04@*(bEP&3hy}w)flgZO zhK74<2&7~Ay!K;NjjqE;I2bRzC%?Hd&ybyvGCw3Za9I;{5f z%m4ViZ2~q7fZ)lsgbTKaQm=BG#rZnvY5BlgB-|sC7)P48yAvJN8i4A!m$+M$&4CNBPnt{)o|HK+ zwfEspXX(g`0{)@qaWa(pz>WSsi{KoXs{U-f>if^mw>T;tXJT(giUvHP_+UGtm~^Sd zNV#8&)lzq=D}I$nzwAatuA2up@<@;d#|*e>CbQ7XV@;4g@}^t9kOy1xHUfa?DX8QQ z-2 z!Zw7`bb)<*D;AjMu11_zONCXHw*|yipKIygSu$Y1+}blg%>K(`-Qb~nvh2zN2cFhO z0P@8aosO(}t9!g9%i?B=8K{VS6#c~$KsF?(L=b3IUgis%$~#!De+k44JJwy}= z*IgI@;bTGd@C+ejZzo0F`0w>Fog|&;M)l+rAGIFy7-P~<_dzlP*YmdJ%V^=Au!{?q zJ{}ua*W|~G?j-Ku-|_D^dvXFU5HS?yzF|%cy_woo=_~)7EFND!-u*npwYW#U+YI1- z_2!SFxJrCCptLuydMl-F{NWv~P-q3q(J$|4j0d zc*qF0)uHK<@LBL+QjHP4%?Gz=`aezhRE=o((tvQvEu zdGUhCO9>*Q`<4cczU#`zl;G6c&}T5(4#E~QfV~P9R!~q9;j;wP$yw2+-IvrLSRSJ7 zrk$)hqOJ}zdo1*XdwZsgI7NyAFVhP5;41 z^f+PSp7@~h`B(#vzyU>Q7b}kP0{1({YwqB;+sqf8c~#eP_7aYfc`N4+}%hZ zI<`V-}?c@?xW# z7|166zPKmX1)FWKh4f+ zy`T&HCF6bmeX!km?F2QBFkFQj2^v`h=j;wAh5ajGcxT5z zyN?WW{#MDAnx}iME?3mUsB>^JE>%U!(X3>bz1~#ZOirn6$LLE^d~R$mG^YrWJ56A_ z8IM~&>BLhKBV@}UPkq&UibXfV&m^(iDxcgV53EODcB=igc!L;?yDu`JO^vUw#Jt z+?_A{PXNhFpY!O93?vj5fwTRiJ^QzWdMCDyYo1N&(^M1=bGZx1ci5H910W~KcJR!MWhIDm*=L$cUVs&_>-j2lLe`mWuJxK0hO zHW5`~Mj|P+9+ruo_pYd#WG;njkxsqGoZDCv)AsT9JP^q?uaRD7(vf)D@MZIT$W`u^ z>cUpw)#Tr8OsVbZe}AX{tRKGdF|K!b_bwL6dd8|1yy3N+lRQ7p{bhpIXB}k#!B%)b z00L(yn+Dx1o^AH#eh7J7^AKC!@Y$NQcv`ghEgW(sJTWox;@7uV!O6(jJPfo(4cud* ze|vMX_ zv5A|i-I^Z?t66Dxrr!GZ-yO-hf}$c771i6Ho4p)nT??&u zVn&PZ+RZ052-b}F19a9pIpT=0lV7FKr-yn^T^mxCJcjNh|6lT};9n7ckv3)L>dG^Ff$XIrc$#JEj{Tf? zr2dR*AoKW7rTk@FM{!nl$pu#(PZ#AfjfM@viLFxCCB5PDRP)IZ%E;YTOAo!)Q$TI} z4!nB6HpRRHyT0ALo0ZLPDL*VTeO$I#{fm4+A&~4&Ra|09l5px@UH&$mEO4Dfn49?= zu)=!E`!)q)uGnX!wS{6Q9{e${gBq4{z=f4T2 zTL{kKr%HW`LA9pGw3D{xbH0t(Y{5&Pd3`PL9B(>Ls%wx3fNs`*2f|-Q2PrHj zCWW`&f32vgiJuO>ZMnX?yXyTJ)NtV@_3zJgF8We?yO7TE($Y{I8T-Kv9c~or`T04F zIjiLrm#F_WI7#xBvhdG@J)vx)^)P|X^6adPg+<}&)V}+=Yd=079$urQQ7_7R~`2`CIgt(qlLHzsgkz`+Z)0YW3 zyug~zrXR@SVJ_=_Ncgi1seE}4a&5@>iSa*vynQ~~wK95FF5N*bEIMFR`T-Q`~o>6K^6PD{8O zkG2cq*Op+}h`2Nh*-O2X-72Ct(L(4jF%KMk_Hs__`x%l3DoaK)`qdy3bfONG&t{Kp zDSv-hF7tbQTQ>pb->PF4zRZY3E51_kG(vr6I+9#v4fKE#i*i@(=8W_G9Ix_;*I9Np z7Vr7wVsJC=JsXG{;KxbF$tL~#(%7^5q&)j2S&>yVj==&5MZSSru?$uFtSg!dA5dbz4{(16aO6x9Xk~;Wy81Z&Skl|xed{EHjpzrIyik{tAMg8JZ2YcJ}DL8Jc;BR z$y0)6c~ypGn%?3pw7YVvbxF$tNNqG4>Y^7A{N}cR=+wBQyjeVqq3;Ee?a1n&3MO%i?zhX%MX!h_5|qJcA{OEgj!Tl6<6&!2$Y z;6!iND0uO)=`bW6%uy&=QocyFkXJ+-#yu5Vf{nIw=FUOC>kIxP9-1SP6@ zPOZv!%Y$n$T)yOOvq9EK9EiaHIIDe}T3I8s<}lN^)}$g>!IRj{ee(_2>+~$v2FL$T z_Ce`H;}WUJ)P(QAfPTkD*-L?23Mm3rC-7dwDDNJSU z^IDTs8Or~U8T&kDKJg@lF4TzCp}X%q+ZN;f3Zs}?&_nv%L{kAOd9Mps8?iB4qFlA3 zx`cLFjC!P9V{w&Zy|R8MOR1%LaqfcmLv|m&b$)`0cE{ZKxYL_wL3=3+8fY@^g1T2V z7pDT*E_m7fPxp>n)X!1lMdip_lQ~o-jCP_!PO7JJvu^e5GVC*rjCo&KPJFKz^A>#P zH|e6Zp^Q{o8nU_@`SA>(<1inyR)m+-2Oggj{APoQrBC{zy*D9JXGa#h^2Z<_)s$QQ zrv;Phs<^xi(dyU5BYTq2PGt|gMO~+~Y~6F4jZ{%Vq;|xNkmXF5V&~Q5OQSBIMr3%q z%iaz;H|SR%F6n2?{L=`-wLDZPZsuz7ebehF|Bl&fAkE#-G0P8(e5e}<)sCO4Ry!Jk zYU)}pRB=+*Cy%`ju|YY9DiBXdGuN*1LB$!71X-eDUB5w14JOdYxq7|buW)UA{Iqoh zEe=`vz{*ss(_7bKzT93pd$kmvi9l70UgN6>QrBB!yYUKxWK72MOQa(UU9z9m!r98# zFD8h^FwRtGRVn>81F=Je;Cmnn*qC zk3R2gwX(|(?6D!`bU*%=`!M}T7d0}5h`XW1{CRCt7?Xmn9?iqXXJXV1tK;J}<^MOj z8nKL-X2U(1f$>wX|F5Y5H0jeiB|9P)o0UcJ{9uo%p9oTG#=wVvB0kb}rYXBkFOWYa Md38v=tY!HB0BMX^EC2ui From f1e253b176139ed83db4348a018e665adb1206b5 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 29 Jan 2017 20:53:03 +0100 Subject: [PATCH 08/17] Git version fix for macOS files. --- tools/osx/Info.plist.in | 6 +++--- tools/osx/macosx_bundle.sh | 37 +++++++++++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/tools/osx/Info.plist.in b/tools/osx/Info.plist.in index 5b08d63a1..e78db0cc4 100644 --- a/tools/osx/Info.plist.in +++ b/tools/osx/Info.plist.in @@ -111,7 +111,7 @@ CFBundleExecutable rawtherapee CFBundleGetInfoString - @version@, Copyright © 2004-2010 Gábor Horváth, 2010-2016 RT dev team + @version@, Copyright © 2004-2010 Gábor Horváth, 2010-2017 RawTherapee Development Team CFBundleIconFile rawtherapee.icns CFBundleIdentifier @@ -127,7 +127,7 @@ CFBundleSignature ???? CFBundleVersion - @version@ + @shortVersion@ LSExecutableArchitectures @arch@ @@ -135,7 +135,7 @@ NSHighResolutionCapable NSHumanReadableCopyright - Copyright © 2004-2013 Gábor Horváth + Copyright © 2004-2010 Gábor Horváth, 2010-2017 RawTherapee Development Team UTExportedTypeDeclarations diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 2803396ba..89e0c23b0 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -33,12 +33,33 @@ fi # update project version if test -x "$(which git)" -a -d "${PROJECT_SOURCE_DIR}/.git"; then - # This is what the version ought to look like to be accurate in the git universe: - PROJECT_FULL_VERSION="$(git describe --tags --always | sed 's/-g.*//')_$(git symbolic-ref --short -q HEAD)" - # outputs: 4.2-677-g904467b_master - # but Apple requirements https://goo.gl/eWDQv6 state we should use this: - PROJECT_VERSION="$(git describe --tags --always | sed -e 's/-g.*//' -e 's/-/./')" - # outputs: 4.2.677 + ### This section is copied from tools/generateReleaseInfo + # Get version description. + # Depending on whether you checked out a branch (dev) or a tag (release), + # "git describe" will return "5.0-gtk2-2-g12345678" or "5.0-gtk2", respectively. + gitDescribe="$(git describe --tags --always)" + + # Apple requires a numeric version of the form n.n.n + # https://goo.gl/eWDQv6 + + # Get number of commits since tagging. This is what gitDescribe uses. + # Works when checking out branch, tag or commit. + gitCommitsSinceTag="$(git rev-list --count HEAD --not $(git tag --merged HEAD))" + + # Create numeric version. + # This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion. + # Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS). + if [[ -z $gitCommitsSinceTag ]]; then + gitVersionNumericBS="0.0.0" + else + gitVersionNumericBS="${gitDescribe%%-*}" # Remove everything after first hyphen. + gitVersionNumericBS="${gitVersionNumericBS}.${gitCommitsSinceTag}" # Remove everything until after first hyphen: 5.0 + fi + ### Copy end. + + PROJECT_FULL_VERSION="$gitDescribe" + PROJECT_VERSION="$gitVersionNumericBS" + fi # if not specify CMAKE_OSX_DEPLOYMENT_TARGET when compiling, @@ -85,7 +106,7 @@ ETC="${MACOS}"/etc EXECUTABLE="${MACOS}"/rawtherapee message "Removing old files" -rm -rf "${APP}" ${PROJECT_NAME}_*.dmg +rm -rf "${APP}" "${PROJECT_NAME}_*.dmg" message "Creating bundle container" install -d "${RESOURCES}" \ @@ -163,7 +184,7 @@ install -m 0755 "${PROJECT_SOURCE_DATA_DIR}"/executable_loader.in "${MACOS}"/raw cp "${PROJECT_SOURCE_DATA_DIR}"/{rawtherapee,profile}.icns "${RESOURCES}" cp "${PROJECT_SOURCE_DATA_DIR}"/PkgInfo "${CONTENTS}" install -m 0644 "${PROJECT_SOURCE_DATA_DIR}"/Info.plist.in "${CONTENTS}"/Info.plist -sed -i "" -e "s|@version@|${PROJECT_VERSION}| +sed -i "" -e "s|@version@|${PROJECT_FULL_VERSION}| s|@shortVersion@|${PROJECT_VERSION}| s|@arch@|${arch}|" \ "${CONTENTS}"/Info.plist From bc19897bc782cbee7994a1eaa3769de834a8f1e1 Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 30 Jan 2017 01:32:36 +0100 Subject: [PATCH 09/17] Changed AppId value for InnoSetup installer (#3628) --- tools/win/InnoSetup/WindowsInnoSetup.iss.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/win/InnoSetup/WindowsInnoSetup.iss.in b/tools/win/InnoSetup/WindowsInnoSetup.iss.in index 82aa7a60d..55305d5f0 100644 --- a/tools/win/InnoSetup/WindowsInnoSetup.iss.in +++ b/tools/win/InnoSetup/WindowsInnoSetup.iss.in @@ -35,7 +35,7 @@ ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppId={{128459AB-59A7-430A-8BD0-3D8803D50400} +AppId={#MyAppName}{#MyAppVersion} AppName={#MyAppName} AppVersion={#MyAppVersion} VersionInfoVersion={#MyAppVersionNumeric} From 139df58adeb46792500dc2f283731d334177a919 Mon Sep 17 00:00:00 2001 From: Beep6581 Date: Mon, 30 Jan 2017 22:47:27 +0100 Subject: [PATCH 10/17] Unimportant typo fixed --- tools/generateReleaseInfo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/generateReleaseInfo b/tools/generateReleaseInfo index b7480e875..fa71638bd 100755 --- a/tools/generateReleaseInfo +++ b/tools/generateReleaseInfo @@ -72,5 +72,5 @@ printf '%s\n' "Git information extracted:" \ " Commit date: ${gitCommitDate}" \ " Commits since tag: ${gitCommitsSinceTag}" \ " Commits since branch: ${gitCommitsSinceBranch}" \ - " Unreliable verison: ${gitVersionNumericBS}" \ + " Unreliable version: ${gitVersionNumericBS}" \ "" From 03919242b1407dbc36ba5587b85f90b5c2300734 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 30 Jan 2017 22:50:21 +0100 Subject: [PATCH 11/17] Consistency between generateReleaseInfo and UpdateInfo.cmake --- tools/generateReleaseInfo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/generateReleaseInfo b/tools/generateReleaseInfo index fa71638bd..ee3493e70 100755 --- a/tools/generateReleaseInfo +++ b/tools/generateReleaseInfo @@ -65,12 +65,12 @@ set(GIT_COMMITS_SINCE_BRANCH $gitCommitsSinceBranch) set(GIT_VERSION_NUMERIC_BS $gitVersionNumericBS) EOF -printf '%s\n' "Git information extracted:" \ - " Description: ${gitDescribe}" \ +printf '%s\n' "Git checkout information:" \ + " Commit description: ${gitDescribe}" \ " Branch: ${gitBranch}" \ " Commit: ${gitCommit}" \ " Commit date: ${gitCommitDate}" \ " Commits since tag: ${gitCommitsSinceTag}" \ " Commits since branch: ${gitCommitsSinceBranch}" \ - " Unreliable version: ${gitVersionNumericBS}" \ + " Version (unreliable): ${gitVersionNumericBS}" \ "" From 06c820ea8ab15a8d7e2254c6eaa5895d029fd0b2 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 30 Jan 2017 23:11:14 +0100 Subject: [PATCH 12/17] Release notes Package Maintainers section updated. --- RELEASE_NOTES.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index bfb32545d..38f8f82bc 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -37,9 +37,10 @@ New Features: News Relevant to Package Maintainers ------------------------------------ -- Branch "master" uses GTK2, branch "gtk3" requires GTK+ >=3.16. -- There are known bugs using GTK+ versions 3.20-3.22 where scrollbars may appear stuck (issue #3545) and where the Retinex tool's "Gain and Offset" panel may appear under the "Transmission" panel (issue #3525) until the user hovers the mouse cursor over a curve button. For this reason we recommend using GTK+ 3.16-3.18 if possible. +- Branch "master" uses GTK2, branch "gtk3" requires GTK+ >=3.16. There are known bugs using GTK+ versions 3.20-3.22 where scrollbars may appear stuck (issue #3545) and where the Retinex tool's "Gain and Offset" panel may appear under the "Transmission" panel (issue #3525) until the user hovers the mouse cursor over a curve button. For this reason we recommend using GTK+ 3.16-3.18 if possible. - RawTherapee 5 requires GCC-4.9 or higher, or Clang. +- Do not use -ffast-math +- Use -o3 - Use -DCMAKE_CXX_FLAGS="-std=c++11" - For stable builds (RT5) use -DCACHE_NAME_SUFFIX="" - For development builds use -DCACHE_NAME_SUFFIX="5-dev" From 9ce41d8e91958cc78fffdd81a095c4e1f4e65e68 Mon Sep 17 00:00:00 2001 From: Hombre Date: Tue, 31 Jan 2017 00:22:54 +0100 Subject: [PATCH 13/17] Fix deprecated Glib::RecMutex on Windows + remove useless GThreadEnter (no issue) --- rtgui/filebrowser.cc | 1 - rtgui/main.cc | 4 ---- 2 files changed, 5 deletions(-) diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index b11361db2..841c2082a 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -601,7 +601,6 @@ void FileBrowser::addEntry (FileBrowserEntry* entry) void FileBrowser::addEntry_ (FileBrowserEntry* entry) { - GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected entry->selected = false; entry->drawable = false; entry->framed = editedFiles.find (entry->filename) != editedFiles.end(); diff --git a/rtgui/main.cc b/rtgui/main.cc index a8ded72e5..d21904f23 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -89,11 +89,7 @@ Glib::ustring fname_to_utf8 (const char* fname) } // This recursive mutex will be used by gdk_threads_enter/leave instead of a simple mutex -#ifdef WIN32 -static Glib::RecMutex myGdkRecMutex; -#else static Glib::Threads::RecMutex myGdkRecMutex; -#endif static void myGdkLockEnter() { From 601a05a402e0a1d48d4ed514edb320d631437e48 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 31 Jan 2017 10:28:44 +0100 Subject: [PATCH 14/17] Removed "std=c++11" from release notes. --- RELEASE_NOTES.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index 38f8f82bc..725844203 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -41,7 +41,6 @@ News Relevant to Package Maintainers - RawTherapee 5 requires GCC-4.9 or higher, or Clang. - Do not use -ffast-math - Use -o3 -- Use -DCMAKE_CXX_FLAGS="-std=c++11" - For stable builds (RT5) use -DCACHE_NAME_SUFFIX="" - For development builds use -DCACHE_NAME_SUFFIX="5-dev" - Windows builders should compile on a drive letter which users are most unlikely to have, such as Y:, due to the "There is no disk in the drive" error (issue #3544). From 968d991d97fc2c7d57712d7cd860c077be712ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Tue, 31 Jan 2017 20:47:18 +0100 Subject: [PATCH 15/17] Fix call to `abs()` with `unsigned int` (fixes #3339, #3652) --- rtengine/dcraw.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 4a5e7f1c8..a3bd3e523 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -2011,7 +2011,7 @@ void CLASS hasselblad_correct() {bhu-1,0},{bhu-1,bwu/2},{bhu-1,bwu-1}}; for (col = 0; col < bw; col++) { for (i = 0; i < 9; i++) { - ushort dist = (ushort)sqrt(abs(corners[i][0] - row) * abs(corners[i][0] - row) + abs(corners[i][1] - col) * abs(corners[i][1] - col)); + ushort dist = (ushort)sqrt(abs((int)(corners[i][0] - row)) * abs((int)(corners[i][0] - row)) + abs((int)(corners[i][1] - col)) * abs((int)(corners[i][1] - col))); ushort weight = dist > maxdist ? 0 : maxdist - dist; corners_weight[9*(row*bw+col)+i] = weight; } From 79fc6552b8b6510e3ca61ac871ca617c663909ef Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 1 Feb 2017 16:12:49 +0100 Subject: [PATCH 16/17] Added newline into tooltip PREFERENCES_OUTDIRTEMPLATEHINT --- rtdata/languages/default | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 5acc40764..01f8a70b1 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1016,7 +1016,7 @@ PREFERENCES_OUTDIR;Output Directory PREFERENCES_OUTDIRFOLDER;Save to folder PREFERENCES_OUTDIRFOLDERHINT;Save images to the selected folder. PREFERENCES_OUTDIRTEMPLATE;Use template -PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ..., %r, %s1, %s2, ...\n\nThese formatting strings refer to the different parts of the photo's pathname, some attributes of the photo or an arbitrary sequence index in the batch job.\n\nFor example, if the photo being processed has the following pathname:\n/home/tom/photos/2010-10-31/dsc0042.nef\nthe meaning of the formatting strings are:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r will be replaced by the rank of the photo. If the photo is unranked, %r will be replaced by '0'. If the photo is in the trash bin, %r will be replaced by 'x'.\n\n%s1, %s2, etc. will be replaced by a sequence index which is padded to between 1 and 9 digits. The sequence index will start at one each time the queue processing is started and is incremented by one for each image processed.\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:\n%p1/converted/%f\n\nIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:\n%p2/converted/%d1/%f +PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ..., %r, %s1, %s2, ...\n\nThese formatting strings refer to the different parts of the photo's pathname, some attributes of the photo or an arbitrary sequence index in the batch job.\n\nFor example, if the photo being processed has the following pathname:\n/home/tom/photos/2010-10-31/dsc0042.nef\nthe meaning of the formatting strings are:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r will be replaced by the rank of the photo. If the photo is unranked, %r will be replaced by '0'. If the photo is in the trash bin, %r will be replaced by 'x'.\n\n%s1, %s2, etc. will be replaced by a sequence index which is padded to between 1 and 9 digits. The sequence index will start at one each time the queue processing is started and is incremented by one for each image processed.\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:\n%p1/converted/%f\n\nIf you want to save the output image in a directory named\n"/home/tom/photos/converted/2010-10-31", write:\n%p2/converted/%d1/%f PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files From 1077c4ba2e2dbe249884e6974c6050db8eb5e9c2 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 1 Feb 2017 16:14:26 +0100 Subject: [PATCH 17/17] Translation files updated. --- rtdata/languages/English (UK) | 2 +- rtdata/languages/English (US) | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index af9988062..bf4734453 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1082,7 +1082,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_OUTDIRFOLDER;Save to folder !PREFERENCES_OUTDIRFOLDERHINT;Save images to the selected folder. !PREFERENCES_OUTDIRTEMPLATE;Use template -!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ..., %r, %s1, %s2, ...\n\nThese formatting strings refer to the different parts of the photo's pathname, some attributes of the photo or an arbitrary sequence index in the batch job.\n\nFor example, if the photo being processed has the following pathname:\n/home/tom/photos/2010-10-31/dsc0042.nef\nthe meaning of the formatting strings are:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r will be replaced by the rank of the photo. If the photo is unranked, %r will be replaced by '0'. If the photo is in the trash bin, %r will be replaced by 'x'.\n\n%s1, %s2, etc. will be replaced by a sequence index which is padded to between 1 and 9 digits. The sequence index will start at one each time the queue processing is started and is incremented by one for each image processed.\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:\n%p1/converted/%f\n\nIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:\n%p2/converted/%d1/%f +!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ..., %r, %s1, %s2, ...\n\nThese formatting strings refer to the different parts of the photo's pathname, some attributes of the photo or an arbitrary sequence index in the batch job.\n\nFor example, if the photo being processed has the following pathname:\n/home/tom/photos/2010-10-31/dsc0042.nef\nthe meaning of the formatting strings are:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r will be replaced by the rank of the photo. If the photo is unranked, %r will be replaced by '0'. If the photo is in the trash bin, %r will be replaced by 'x'.\n\n%s1, %s2, etc. will be replaced by a sequence index which is padded to between 1 and 9 digits. The sequence index will start at one each time the queue processing is started and is incremented by one for each image processed.\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:\n%p1/converted/%f\n\nIf you want to save the output image in a directory named\n"/home/tom/photos/converted/2010-10-31", write:\n%p2/converted/%d1/%f !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 7a1d87a4a..d5a0e16f2 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1017,7 +1017,7 @@ !PREFERENCES_OUTDIRFOLDER;Save to folder !PREFERENCES_OUTDIRFOLDERHINT;Save images to the selected folder. !PREFERENCES_OUTDIRTEMPLATE;Use template -!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ..., %r, %s1, %s2, ...\n\nThese formatting strings refer to the different parts of the photo's pathname, some attributes of the photo or an arbitrary sequence index in the batch job.\n\nFor example, if the photo being processed has the following pathname:\n/home/tom/photos/2010-10-31/dsc0042.nef\nthe meaning of the formatting strings are:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r will be replaced by the rank of the photo. If the photo is unranked, %r will be replaced by '0'. If the photo is in the trash bin, %r will be replaced by 'x'.\n\n%s1, %s2, etc. will be replaced by a sequence index which is padded to between 1 and 9 digits. The sequence index will start at one each time the queue processing is started and is incremented by one for each image processed.\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:\n%p1/converted/%f\n\nIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:\n%p2/converted/%d1/%f +!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ..., %r, %s1, %s2, ...\n\nThese formatting strings refer to the different parts of the photo's pathname, some attributes of the photo or an arbitrary sequence index in the batch job.\n\nFor example, if the photo being processed has the following pathname:\n/home/tom/photos/2010-10-31/dsc0042.nef\nthe meaning of the formatting strings are:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r will be replaced by the rank of the photo. If the photo is unranked, %r will be replaced by '0'. If the photo is in the trash bin, %r will be replaced by 'x'.\n\n%s1, %s2, etc. will be replaced by a sequence index which is padded to between 1 and 9 digits. The sequence index will start at one each time the queue processing is started and is incremented by one for each image processed.\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:\n%p1/converted/%f\n\nIf you want to save the output image in a directory named\n"/home/tom/photos/converted/2010-10-31", write:\n%p2/converted/%d1/%f !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files