From 7246d67175db7c37a3100ff3182f611ed0300bf4 Mon Sep 17 00:00:00 2001 From: gitlost Date: Thu, 27 Jun 2024 23:00:13 +0100 Subject: [PATCH] gs1/gs1_lint: update to latest gs1-syntax-dictionary, removing `iso3166list` linter and adjusting all others to allow for multiple optional linters (by checking `data_len` vs `offset`) library: change invalid `input_mode` reset to return warning; split func table into 2 - func declarations without prototype will be error in C23; make invalid symbology check a separate function using a table and call near beginning of `ZBarcode_Encode_Segs()`; in `ZBarcode_BarcodeName()` save some bytes by simplifying name table and removing "BARCODE_" prefix from entries output: fix pack logic to use pragma by default (actually more portable than `__attribute__`) common.h: remove C99 detection which was artifice of specifying "-std=", and rejig layout to be more logical BWIPP: update to latest version general: change `ZINT_VERSION_BUILD` tests to `#if`s general: further fiddling with some tables to save a few bytes CLI: change function arg `optarg` -> `arg` so doesn't shadow global general: library now compilable with Comp Cert C (though as it doesn't support `alloca()` will have multiple memory leaks) --- ChangeLog | 10 + backend/2of5.c | 8 +- backend/aztec.c | 41 +- backend/bmp.h | 4 +- backend/common.c | 2 +- backend/common.h | 207 ++-- backend/dmatrix.c | 2 +- backend/emf.h | 4 +- backend/gs1.c | 104 +- backend/gs1_lint.h | 298 +++--- backend/library.c | 507 ++++------ backend/output.h | 10 +- backend/pcx.h | 6 +- backend/pdf417.c | 2 +- backend/ps.c | 13 +- backend/qr.c | 2 +- backend/tests/test_aztec.c | 2 +- backend/tests/test_library.c | 422 ++++++-- backend/tests/test_qr.c | 41 +- backend/tests/testcommon.c | 54 +- backend/tests/testcommon.h | 7 +- backend/tests/tools/bwipp_dump.ps.tar.xz | Bin 134464 -> 135208 bytes backend/tif.h | 4 +- backend/tools/gen_gs1_lint.php | 11 +- backend/zint.h | 2 +- docs/README | 12 +- docs/manual.html | 1168 +++++++++++----------- docs/manual.pmd | 4 +- docs/manual.txt | 6 +- docs/templates/styles.html | 2 +- docs/zint.1 | 2 +- docs/zint.1.pmd | 2 +- frontend/main.c | 54 +- 33 files changed, 1579 insertions(+), 1434 deletions(-) diff --git a/ChangeLog b/ChangeLog index cc3768b3..2ab27ae0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ Version 2.13.0.9 (dev) not released yet ------------------------ - New `memfile` & `memfile_size` fields in `symbol` for use with new output option `BARCODE_MEMORY_FILE` +- Invalid `input_mode` now returns warning Changes ------- @@ -14,6 +15,12 @@ Changes in-memory buffer `symbol->memfile` instead of to file `symbol->outfile`, ticket #301 - CODE128: improve encodation on A/B shifting, props Daniel Gredler (Okapi) +- library: return warning on invalid `input_mode` reset +- GS1: new AIs 7250-7259 (GSCN 22-246), new linters `yyyymmdd()`, `iso5218()`, + `posinseqslash()`; remove old linter `iso3166list`; + iso4217: new ISO 4217 currency code 924 +- AZTEC: workaround MSVC 2022 optimizer bug in `az_populate_map()` loops, + ticket #317, props Andre Maute Bugs ---- @@ -26,6 +33,9 @@ Bugs written as little-endian - simplifies testing) - ITF14/DPLEIT/DPIDENT: ignore `option_2` (check digit options) - GUI: scalewindow: fix cropping of initial resolution and bound X-dim <= 10 +- GUI: factory reset: reset preview background colour also +- QZint: fix legacy width and security level getters/setters, MR #158, props + Philip Ye Version 2.13.0 (2023-12-18) diff --git a/backend/2of5.c b/backend/2of5.c index 7879dd94..3f1429ed 100644 --- a/backend/2of5.c +++ b/backend/2of5.c @@ -49,9 +49,9 @@ static const char C25IndustTable[10][10] = { }; /* Note `c25_common()` assumes Stop string length one less than Start */ -static const char *C25MatrixStartStop[2] = { "411111", "41111" }; -static const char *C25IndustStartStop[2] = { "313111", "31113" }; -static const char *C25IataLogicStartStop[2] = { "1111", "311" }; +static const char C25MatrixStartStop[2][6] = { {'4', '1', '1', '1', '1', '1'}, {'4', '1', '1', '1', '1'} }; +static const char C25IndustStartStop[2][6] = { {'3', '1', '3', '1', '1', '1'}, {'3', '1', '1', '1', '3'} }; +static const char C25IataLogicStartStop[2][6] = { {'1', '1', '1', '1'}, {'3', '1', '1'} }; static const char C25InterTable[10][5] = { {'1','1','3','3','1'}, {'3','1','1','1','3'}, {'1','3','1','1','3'}, {'3','3','1','1','1'}, {'1','1','3','1','3'}, @@ -64,7 +64,7 @@ static char c25_check_digit(const unsigned int count) { /* Common to Standard (Matrix), Industrial, IATA, and Data Logic */ static int c25_common(struct zint_symbol *symbol, const unsigned char source[], int length, const int max, - const int is_matrix, const char *start_stop[2], const int start_length, const int error_base) { + const int is_matrix, const char start_stop[2][6], const int start_length, const int error_base) { int i; char dest[818]; /* Largest destination 4 + (80 + 1) * 10 + 3 + 1 = 818 */ diff --git a/backend/aztec.c b/backend/aztec.c index 41073184..d98292bf 100644 --- a/backend/aztec.c +++ b/backend/aztec.c @@ -185,32 +185,25 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp, i = 0; j = 0; while (i < src_len) { + reduced_encode_mode[j] = encode_mode[i]; if (i + 1 < src_len) { if ((source[i] == 13) && (source[i + 1] == 10)) { /* CR LF */ reduced_source[j] = 'a'; - reduced_encode_mode[j] = encode_mode[i]; i += 2; } else if ((source[i] == '.') && (source[i + 1] == ' ') && (encode_mode[i] == 'P')) { reduced_source[j] = 'b'; - reduced_encode_mode[j] = encode_mode[i]; i += 2; } else if ((source[i] == ',') && (source[i + 1] == ' ') && (encode_mode[i] == 'P')) { reduced_source[j] = 'c'; - reduced_encode_mode[j] = encode_mode[i]; i += 2; } else if ((source[i] == ':') && (source[i + 1] == ' ')) { reduced_source[j] = 'd'; - reduced_encode_mode[j] = encode_mode[i]; i += 2; } else { - reduced_source[j] = source[i]; - reduced_encode_mode[j] = encode_mode[i]; - i++; + reduced_source[j] = source[i++]; } } else { - reduced_source[j] = source[i]; - reduced_encode_mode[j] = encode_mode[i]; - i++; + reduced_source[j] = source[i++]; } j++; } @@ -950,10 +943,10 @@ INTERNAL int aztec(struct zint_symbol *symbol, struct zint_seg segs[], const int data_maxsize = 0; /* Keep compiler happy! */ adjustment_size = 0; if (symbol->option_2 == 0) { /* The size of the symbol can be determined by Zint */ - static const short *full_sizes[5] = { + static const short *const full_sizes[5] = { NULL, Aztec10DataSizes, Aztec23DataSizes, Aztec36DataSizes, Aztec50DataSizes }; - static const short *comp_sizes[5] = { + static const short *const comp_sizes[5] = { NULL, AztecCompact10DataSizes, AztecCompact23DataSizes, AztecCompact36DataSizes, AztecCompact50DataSizes }; int ecc_level = symbol->option_1; @@ -1230,15 +1223,13 @@ INTERNAL int aztec(struct zint_symbol *symbol, struct zint_seg segs[], const int /* Plot all of the data into the symbol in pre-defined spiral pattern */ if (compact) { - int offset = AztecCompactOffset[layers - 1]; - int end_offset = 27 - offset; + const int offset = AztecCompactOffset[layers - 1]; + const int end_offset = 27 - offset; for (y = offset; y < end_offset; y++) { - int y_map = y * 27; + const int y_map = y * 27; for (x = offset; x < end_offset; x++) { - int map = AztecCompactMap[y_map + x]; - if (map == 1) { - set_module(symbol, y - offset, x - offset); - } else if (map >= 2 && bit_pattern[map - 2] == '1') { + const int map = AztecCompactMap[y_map + x]; + if (map == 1 || (map >= 2 && bit_pattern[map - 2] == '1')) { set_module(symbol, y - offset, x - offset); } } @@ -1248,16 +1239,14 @@ INTERNAL int aztec(struct zint_symbol *symbol, struct zint_seg segs[], const int symbol->rows = 27 - (2 * offset); symbol->width = 27 - (2 * offset); } else { - int offset = AztecOffset[layers - 1]; - int end_offset = 151 - offset; + const int offset = AztecOffset[layers - 1]; + const int end_offset = 151 - offset; az_populate_map(AztecMap, layers); for (y = offset; y < end_offset; y++) { - int y_map = y * 151; + const int y_map = y * 151; for (x = offset; x < end_offset; x++) { - int map = AztecMap[y_map + x]; - if (map == 1) { - set_module(symbol, y - offset, x - offset); - } else if (map >= 2 && bit_pattern[map - 2] == '1') { + const int map = AztecMap[y_map + x]; + if (map == 1 || (map >= 2 && bit_pattern[map - 2] == '1')) { set_module(symbol, y - offset, x - offset); } } diff --git a/backend/bmp.h b/backend/bmp.h index 6de4c911..4f1f3843 100644 --- a/backend/bmp.h +++ b/backend/bmp.h @@ -37,7 +37,7 @@ extern "C" { #endif -#ifdef _MSC_VER +#ifdef OUT_USE_PRAGMA_PACK #pragma pack(1) #endif @@ -69,7 +69,7 @@ extern "C" { uint8_t reserved; } OUT_PACK color_ref_t; -#ifdef _MSC_VER +#ifdef OUT_USE_PRAGMA_PACK #pragma pack() #endif diff --git a/backend/common.c b/backend/common.c index a0b87ab8..9267db49 100644 --- a/backend/common.c +++ b/backend/common.c @@ -204,12 +204,12 @@ INTERNAL int module_colour_is_set(const struct zint_symbol *symbol, const int y_ INTERNAL void set_module_colour(struct zint_symbol *symbol, const int y_coord, const int x_coord, const int colour) { symbol->encoded_data[y_coord][x_coord] = colour; } -#endif /* Sets a dark/black module to white (i.e. unsets) */ INTERNAL void unset_module(struct zint_symbol *symbol, const int y_coord, const int x_coord) { symbol->encoded_data[y_coord][x_coord >> 3] &= ~(1 << (x_coord & 0x07)); } +#endif /* Expands from a width pattern to a bit pattern */ INTERNAL void expand(struct zint_symbol *symbol, const char data[], const int length) { diff --git a/backend/common.h b/backend/common.h index 3c0ad7c2..2225fa48 100644 --- a/backend/common.h +++ b/backend/common.h @@ -37,29 +37,68 @@ extern "C" { #endif /* __cplusplus */ -#ifndef ARRAY_SIZE -#define ARRAY_SIZE(x) ((int) (sizeof(x) / sizeof((x)[0]))) +#include "zint.h" +#include "zintconfig.h" +#include +#include + +#ifdef _MSC_VER +typedef unsigned __int8 uint8_t; +typedef unsigned __int16 uint16_t; +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; +#else +#include #endif -/* Determine if C89 or C99 (excluding MSVC, which doesn't define __STDC_VERSION__) */ -#ifndef _MSC_VER -# if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199000L -# define ZINT_IS_C89 -# elif __STDC_VERSION__ <= 199901L /* Actually includes pseudo-standards "C94/C95" as well */ -# define ZINT_IS_C99 -# endif -#endif +/* Note if change following must also change "frontend/main.c" copy */ +#define ARRAY_SIZE(x) ((int) (sizeof(x) / sizeof((x)[0]))) #ifdef _MSC_VER # include # define z_alloca(nmemb) _alloca(nmemb) +#elif defined(__COMPCERT__) +# define z_alloca(nmemb) malloc(nmemb) /* So links - leads to loads of leaks obs */ #else -# if defined(ZINT_IS_C89) || defined(ZINT_IS_C99) || defined(__NuttX__) || defined(_AIX) \ +# if (defined(__GNUC__) && !defined(alloca) && !defined(__NetBSD__)) || defined(__NuttX__) || defined(_AIX) \ || (defined(__sun) && defined(__SVR4) /*Solaris*/) # include # endif # define z_alloca(nmemb) alloca(nmemb) #endif +/* End of "frontend/main.c" copy */ + +#ifdef _MSC_VER +# pragma warning(disable: 4125) /* decimal digit terminates octal escape sequence */ +# pragma warning(disable: 4244) /* conversion from int to float */ +# if _MSC_VER > 1200 /* VC6 */ +# pragma warning(disable: 4996) /* function or variable may be unsafe */ +# endif +#endif + +#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(ZINT_TEST) && !defined(__MINGW32__) +# define INTERNAL __attribute__((__visibility__("hidden"))) +#elif defined(ZINT_TEST) +# define INTERNAL ZINT_EXTERN /* The test suite references INTERNAL functions, so they need to be exported */ +#else +# define INTERNAL +#endif + +#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__) +# define INTERNAL_DATA_EXTERN __attribute__((__visibility__("hidden"))) extern +# define INTERNAL_DATA __attribute__((__visibility__("hidden"))) +#else +# define INTERNAL_DATA_EXTERN extern +# define INTERNAL_DATA +#endif + +/* Determine if C89 (excluding MSVC, which doesn't define __STDC_VERSION__) */ +#ifndef _MSC_VER +# if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199000L +# define ZINT_IS_C89 +# endif +#endif #ifdef _MSC_VER # if _MSC_VER >= 1400 /* MSVC 2005 (C++ 8.0) */ @@ -73,17 +112,47 @@ extern "C" { # endif #endif -#ifdef _MSC_VER -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int64 uint64_t; -#else -#include +#if (defined(_MSC_VER) && _MSC_VER <= 1200) || defined(ZINT_IS_C89) /* VC6 or C89 */ +# define ceilf (float) ceil +# define floorf (float) floor +# define fmodf (float) fmod +#endif +/* `round()` (C99) not before MSVC 2013 (C++ 12.0) */ +#if (defined(_MSC_VER) && _MSC_VER < 1800) || defined(ZINT_IS_C89) +# define round(arg) floor((arg) + 0.5) +# define roundf(arg) floorf((arg) + 0.5f) #endif -/* `is_sane()` flags */ +/* Is float integral value? (https://stackoverflow.com/a/40404149) */ +#define isfintf(arg) (fmodf(arg, 1.0f) == 0.0f) + +/* Simple versions of functions with no dependence on locale */ +#define z_isdigit(c) ((c) <= '9' && (c) >= '0') +#define z_isupper(c) ((c) >= 'A' && (c) <= 'Z') +#define z_islower(c) ((c) >= 'a' && (c) <= 'z') + +/* Helpers to cast away char pointer signedness */ +#define ustrlen(source) strlen((const char *) (source)) +#define ustrcpy(target, source) strcpy((char *) (target), (const char *) (source)) +#define ustrcat(target, source) strcat((char *) (target), (const char *) (source)) +#define ustrncat(target, source, count) strncat((char *) (target), (const char *) (source), (count)) + +/* Converts a character 0-9, A-F to its equivalent integer value */ +INTERNAL int ctoi(const char source); + +/* Converts an integer value to its hexadecimal character */ +INTERNAL char itoc(const int source); + +/* Converts decimal string of length <= 9 to integer value. Returns -1 if not numeric */ +INTERNAL int to_int(const unsigned char source[], const int length); + +/* Converts lower case characters to upper case in string `source` */ +INTERNAL void to_upper(unsigned char source[], const int length); + +/* Returns the number of times a character occurs in `source` */ +INTERNAL int chr_cnt(const unsigned char source[], const int length, const unsigned char c); + +/* `is_chr()` & `is_sane()` flags */ #define IS_SPC_F 0x0001 /* Space */ #define IS_HSH_F 0x0002 /* Hash sign # */ #define IS_AST_F 0x0004 /* Asterisk sign * */ @@ -107,91 +176,6 @@ typedef unsigned __int64 uint64_t; /* The most commonly used set */ #define NEON_F IS_NUM_F /* NEON "0123456789" */ -/* Simple versions of functions with no dependence on locale */ -#define z_isdigit(c) ((c) <= '9' && (c) >= '0') -#define z_isupper(c) ((c) >= 'A' && (c) <= 'Z') -#define z_islower(c) ((c) >= 'a' && (c) <= 'z') - -#include "zint.h" -#include "zintconfig.h" -#include -#include - -/* Helpers to cast away char pointer signedness */ -#define ustrlen(source) strlen((const char *) (source)) -#define ustrcpy(target, source) strcpy((char *) (target), (const char *) (source)) -#define ustrcat(target, source) strcat((char *) (target), (const char *) (source)) -#define ustrncat(target, source, count) strncat((char *) (target), (const char *) (source), (count)) - -#if (defined(_MSC_VER) && _MSC_VER <= 1200) || defined(ZINT_IS_C89) /* VC6 or C89 */ -# define ceilf (float) ceil -# define floorf (float) floor -# define fmodf (float) fmod -#endif -/* `round()` (C99) not before MSVC 2013 (C++ 12.0) */ -#if (defined(_MSC_VER) && _MSC_VER < 1800) || defined(ZINT_IS_C89) -# define round(arg) floor((arg) + 0.5) -# define roundf(arg) floorf((arg) + 0.5f) -#endif - -#ifdef _MSC_VER -# pragma warning(disable: 4244) /* conversion from int to float */ -# if _MSC_VER > 1200 /* VC6 */ -# pragma warning(disable: 4996) /* function or variable may be unsafe */ -# endif -#endif - -/* Is float integral value? (https://stackoverflow.com/a/40404149) */ -#define isfintf(arg) (fmodf(arg, 1.0f) == 0.0f) - -#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(ZINT_TEST) && !defined(__MINGW32__) -# define INTERNAL __attribute__((__visibility__("hidden"))) -#elif defined(ZINT_TEST) -# define INTERNAL ZINT_EXTERN /* The test suite references INTERNAL functions, so they need to be exported */ -#else -# define INTERNAL -#endif - -#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__) -# define INTERNAL_DATA_EXTERN __attribute__((__visibility__("hidden"))) extern -# define INTERNAL_DATA __attribute__((__visibility__("hidden"))) -#else -# define INTERNAL_DATA_EXTERN extern -# define INTERNAL_DATA -#endif - -#define Z_COMMON_INLINE 1 - -#ifdef Z_COMMON_INLINE -/* Returns true (1) if a module is dark/black, otherwise false (0) */ -# define module_is_set(s, y, x) (((s)->encoded_data[(y)][(x) >> 3] >> ((x) & 0x07)) & 1) - -/* Sets a module to dark/black */ -# define set_module(s, y, x) do { (s)->encoded_data[(y)][(x) >> 3] |= 1 << ((x) & 0x07); } while (0) - -/* Returns true (1-8) if a module is colour, otherwise false (0) */ -# define module_colour_is_set(s, y, x) ((s)->encoded_data[(y)][(x)]) - -/* Sets a module to a colour */ -# define set_module_colour(s, y, x, c) do { (s)->encoded_data[(y)][(x)] = (c); } while (0) -#endif - -/* Converts a character 0-9, A-F to its equivalent integer value */ -INTERNAL int ctoi(const char source); - -/* Converts an integer value to its hexadecimal character */ -INTERNAL char itoc(const int source); - -/* Converts decimal string of length <= 9 to integer value. Returns -1 if not numeric */ -INTERNAL int to_int(const unsigned char source[], const int length); - -/* Converts lower case characters to upper case in string `source` */ -INTERNAL void to_upper(unsigned char source[], const int length); - -/* Returns the number of times a character occurs in `source` */ -INTERNAL int chr_cnt(const unsigned char source[], const int length, const unsigned char c); - - /* Whether a character matches `flg` */ INTERNAL int is_chr(const unsigned int flg, const unsigned int c); @@ -211,7 +195,15 @@ INTERNAL int posn(const char set_string[], const char data); INTERNAL int bin_append_posn(const int arg, const int length, char *binary, const int bin_posn); -#ifndef Z_COMMON_INLINE +#define Z_COMMON_INLINE 1 + +#ifdef Z_COMMON_INLINE +# define module_is_set(s, y, x) (((s)->encoded_data[y][(x) >> 3] >> ((x) & 0x07)) & 1) +# define set_module(s, y, x) do { (s)->encoded_data[y][(x) >> 3] |= 1 << ((x) & 0x07); } while (0) +# define module_colour_is_set(s, y, x) ((s)->encoded_data[y][x]) +# define set_module_colour(s, y, x, c) do { (s)->encoded_data[y][x] = (c); } while (0) +# define unset_module(s, y, x) do { (s)->encoded_data[y][(x) >> 3] &= ~(1 << ((x) & 0x07)); } while (0) +#else /* Returns true (1) if a module is dark/black, otherwise false (0) */ INTERNAL int module_is_set(const struct zint_symbol *symbol, const int y_coord, const int x_coord); @@ -224,9 +216,10 @@ INTERNAL int module_colour_is_set(const struct zint_symbol *symbol, const int y_ /* Sets a module to a colour */ INTERNAL void set_module_colour(struct zint_symbol *symbol, const int y_coord, const int x_coord, const int colour); -#endif + /* Sets a dark/black module to white (i.e. unsets) */ INTERNAL void unset_module(struct zint_symbol *symbol, const int y_coord, const int x_coord); +#endif /* Z_COMMON_INLINE */ /* Expands from a width pattern to a bit pattern */ INTERNAL void expand(struct zint_symbol *symbol, const char data[], const int length); diff --git a/backend/dmatrix.c b/backend/dmatrix.c index ee80b8a3..ec942445 100644 --- a/backend/dmatrix.c +++ b/backend/dmatrix.c @@ -683,7 +683,7 @@ static int dm_switch_mode(const int next_mode, unsigned char target[], int tp, i #define DM_NUM_MODES 6 -static const char *dm_smodes[] = { "?", "ASCII", "C40", "TEXT", "X12", "EDF", "B256" }; +static const char dm_smodes[DM_NUM_MODES + 1][6] = { "?", "ASCII", "C40", "TEXT", "X12", "EDF", "B256" }; /* The size of this structure could be significantly reduced using techniques pointed out by Alex Geller, but not done currently to avoid the processing overhead */ diff --git a/backend/emf.h b/backend/emf.h index 599cdb93..ca197e7c 100644 --- a/backend/emf.h +++ b/backend/emf.h @@ -37,7 +37,7 @@ extern "C" { #endif -#ifdef _MSC_VER +#ifdef OUT_USE_PRAGMA_PACK #pragma pack(1) #endif @@ -237,7 +237,7 @@ extern "C" { emr_rectangle_t right; } OUT_PACK box_t; -#ifdef _MSC_VER +#ifdef OUT_USE_PRAGMA_PACK #pragma pack() #endif diff --git a/backend/gs1.c b/backend/gs1.c index bfd053fe..29d25079 100644 --- a/backend/gs1.c +++ b/backend/gs1.c @@ -40,7 +40,7 @@ static int numeric(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50]) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -78,7 +78,7 @@ static const char c82[] = { static int cset82(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50]) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -105,7 +105,7 @@ static int cset82(const unsigned char *data, int data_len, int offset, int min, static int cset39(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50]) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -133,7 +133,7 @@ static int cset39(const unsigned char *data, int data_len, int offset, int min, static int cset64(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50]) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -166,7 +166,7 @@ static int cset64(const unsigned char *data, int data_len, int offset, int min, static int csum(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -201,7 +201,7 @@ static int csum(const unsigned char *data, int data_len, int offset, int min, in static int csumalpha(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -249,7 +249,7 @@ static int key(const unsigned char *data, int data_len, int offset, int min, int int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -284,7 +284,7 @@ static int yyyymmd0(const unsigned char *data, int data_len, int offset, int min (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 8)) { return 0; @@ -331,7 +331,7 @@ static int yyyymmdd(const unsigned char *data, int data_len, int offset, int min return 0; } - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (!length_only && data_len) { const int day = to_int(data + offset + 6, 2); @@ -350,7 +350,7 @@ static int yyyymmdd(const unsigned char *data, int data_len, int offset, int min static int yymmd0(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 6)) { return 0; @@ -379,7 +379,7 @@ static int yymmdd(const unsigned char *data, int data_len, int offset, int min, return 0; } - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (!length_only && data_len) { const int day = to_int(data + offset + 4, 2); @@ -406,7 +406,7 @@ static int yymmddhh(const unsigned char *data, int data_len, int offset, int min return 0; } - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (!length_only && data_len) { const int hour = to_int(data + offset + 6, 2); @@ -426,7 +426,7 @@ static int hhmm(const unsigned char *data, int data_len, int offset, int min, in int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 4)) { return 0; @@ -459,7 +459,7 @@ static int mmoptss(const unsigned char *data, int data_len, int offset, int min, int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 2) || (data_len > 2 && data_len < 4)) { @@ -496,9 +496,13 @@ static int iso3166(const unsigned char *data, int data_len, int offset, int min, int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 3)) { + if (offset) { + /* For backward compatibility only warn if not first */ + *p_err_no = 4; + } return 0; } @@ -514,42 +518,12 @@ static int iso3166(const unsigned char *data, int data_len, int offset, int min, return 1; } -/* Check for a list of ISO 3166-1 numeric country codes */ -static int iso3166list(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, - int *p_err_posn, char err_msg[50], const int length_only) { - - int data_len_max; - - data_len -= offset; - data_len_max = data_len > max ? max : data_len; - - if (data_len < min || (data_len && data_len < 3)) { - return 0; - } - /* Do this check separately for backward compatibility */ - if (data_len && data_len_max % 3) { - *p_err_no = 4; - return 0; - } - - if (!length_only && data_len) { - int i; - for (i = 0; i < data_len_max; i += 3) { - if (!iso3166(data, offset + data_len, offset + i, 3, 3, p_err_no, p_err_posn, err_msg, length_only)) { - return 0; - } - } - } - - return 1; -} - /* Check for an ISO 3166-1 numeric country code allowing "999" */ static int iso3166999(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 3)) { return 0; @@ -573,7 +547,7 @@ static int iso3166alpha2(const unsigned char *data, int data_len, int offset, in int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 2)) { return 0; @@ -599,7 +573,7 @@ static int iso4217(const unsigned char *data, int data_len, int offset, int min, int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 3)) { return 0; @@ -623,7 +597,7 @@ static int pcenc(const unsigned char *data, int data_len, int offset, int min, i static const char hex_chars[] = "0123456789ABCDEFabcdef"; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -659,7 +633,7 @@ static int yesno(const unsigned char *data, int data_len, int offset, int min, i int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -682,7 +656,7 @@ static int importeridx(const unsigned char *data, int data_len, int offset, int int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -707,7 +681,7 @@ static int importeridx(const unsigned char *data, int data_len, int offset, int static int nonzero(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -732,7 +706,7 @@ static int winding(const unsigned char *data, int data_len, int offset, int min, int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -755,7 +729,7 @@ static int zero(const unsigned char *data, int data_len, int offset, int min, in int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -778,7 +752,7 @@ static int pieceoftotal(const unsigned char *data, int data_len, int offset, int int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 4)) { return 0; @@ -816,7 +790,7 @@ static int pieceoftotal(const unsigned char *data, int data_len, int offset, int static int iban(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -897,7 +871,7 @@ static int nozeroprefix(const unsigned char *data, int data_len, int offset, int int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -1004,7 +978,7 @@ static int couponcode(const unsigned char *data, int data_len, int offset, int m (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -1222,7 +1196,7 @@ static int couponposoffer(const unsigned char *data, int data_len, int offset, i (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -1274,7 +1248,7 @@ static int couponposoffer(const unsigned char *data, int data_len, int offset, i static int latitude(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 10)) { return 0; @@ -1304,7 +1278,7 @@ static int latitude(const unsigned char *data, int data_len, int offset, int min static int longitude(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 10)) { return 0; @@ -1334,7 +1308,7 @@ static int longitude(const unsigned char *data, int data_len, int offset, int mi static int mediatype(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min || (data_len && data_len < 2)) { return 0; @@ -1364,7 +1338,7 @@ static int mediatype(const unsigned char *data, int data_len, int offset, int mi static int hyphen(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -1392,7 +1366,7 @@ static int iso5218(const unsigned char *data, int data_len, int offset, int min, int *p_err_posn, char err_msg[50], const int length_only) { (void)max; - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; @@ -1415,7 +1389,7 @@ static int iso5218(const unsigned char *data, int data_len, int offset, int min, static int posinseqslash(const unsigned char *data, int data_len, int offset, int min, int max, int *p_err_no, int *p_err_posn, char err_msg[50], const int length_only) { - data_len -= offset; + data_len = data_len < offset ? 0 : data_len - offset; if (data_len < min) { return 0; diff --git a/backend/gs1_lint.h b/backend/gs1_lint.h index e9b0d908..6bf59700 100644 --- a/backend/gs1_lint.h +++ b/backend/gs1_lint.h @@ -37,8 +37,8 @@ #define Z_GS1_LINT_H /* N18,csum,key (Used by SSCC, GSRN - PROVIDER, GSRN - RECIPIENT) */ -static int n18_csum_key(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n18_csum_key(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 18 && csum(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && key(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -48,8 +48,8 @@ static int n18_csum_key(const unsigned char *data, const int data_len, } /* N14,csum,key (Used by GTIN, CONTENT) */ -static int n14_csum_key(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n14_csum_key(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 14 && csum(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && key(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -58,16 +58,16 @@ static int n14_csum_key(const unsigned char *data, const int data_len, && key(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 0); } -/* X..20 (Used by BATCH/LOT, SERIAL, CPV, PCN...) */ -static int x__20(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +/* X..20 (Used by BATCH/LOT, SERIAL, CPV, PCN, GLN EXTENSION COMPONENT, SHIP TO POST, RTN TO POST, REFURB LOT, ...) */ +static int x__20(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 20 && cset82(data, data_len, 0, 1, 20, p_err_no, p_err_posn, err_msg); } -/* N6,yymmd0 (Used by PROD DATE, DUE DATE, PACK DATE, BEST BEFORE or BEST BY...) */ -static int n6_yymmd0(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +/* N6,yymmd0 (Used by PROD DATE, DUE DATE, PACK DATE, BEST BEFORE or BEST BY, SELL BY, USE BY or EXPIRY) */ +static int n6_yymmd0(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 6 && yymmd0(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg) @@ -75,36 +75,36 @@ static int n6_yymmd0(const unsigned char *data, const int data_len, } /* N2 (Used by VARIANT) */ -static int n2(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n2(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 2 && numeric(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg); } /* X..28 (Used by TPX) */ -static int x__28(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__28(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 28 && cset82(data, data_len, 0, 1, 28, p_err_no, p_err_posn, err_msg); } -/* X..30 (Used by ADDITIONAL ID, CUST. PART No., SECONDARY SERIAL, REF. TO SOURCE...) */ -static int x__30(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +/* X..30 (Used by ADDITIONAL ID, CUST. PART No., SECONDARY SERIAL, REF. TO SOURCE, ORDER NUMBER, ROUTE, SHIP TO...) */ +static int x__30(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 30 && cset82(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg); } /* N..6 (Used by MTO VARIANT) */ -static int n__6(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n__6(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 6 && numeric(data, data_len, 0, 1, 6, p_err_no, p_err_posn, err_msg); } /* N13,csum,key [X..17] (Used by GDTI) */ -static int n13_csum_key__x__17_(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n13_csum_key__x__17_(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 13 && data_len <= 30 && csum(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && key(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -115,8 +115,8 @@ static int n13_csum_key__x__17_(const unsigned char *data, const int data_len, } /* N13,csum,key [N..12] (Used by GCN) */ -static int n13_csum_key__n__12_(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n13_csum_key__n__12_(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 13 && data_len <= 25 && csum(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && key(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -127,29 +127,29 @@ static int n13_csum_key__n__12_(const unsigned char *data, const int data_len, } /* N..8 (Used by VAR. COUNT, COUNT) */ -static int n__8(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n__8(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 8 && numeric(data, data_len, 0, 1, 8, p_err_no, p_err_posn, err_msg); } -/* N6 (Used by NET WEIGHT (kg), LENGTH (m), WIDTH (m), HEIGHT (m)...) */ -static int n6(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +/* N6 (Used by NET WEIGHT (kg), LENGTH (m), WIDTH (m), HEIGHT (m), AREA (m²), NET VOLUME (l), NET VOLUME (m³)...) */ +static int n6(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 6 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg); } /* N..15 (Used by AMOUNT, PRICE) */ -static int n__15(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n__15(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 15 && numeric(data, data_len, 0, 1, 15, p_err_no, p_err_posn, err_msg); } /* N3,iso4217 N..15 (Used by AMOUNT, PRICE) */ -static int n3_iso4217_n__15(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n3_iso4217_n__15(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 4 && data_len <= 18 && iso4217(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg) @@ -158,15 +158,15 @@ static int n3_iso4217_n__15(const unsigned char *data, const int data_len, } /* N4 (Used by PRCNT OFF, POINTS) */ -static int n4(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n4(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 4 && numeric(data, data_len, 0, 4, 4, p_err_no, p_err_posn, err_msg); } /* X..30,key (Used by GINC, GIAI - ASSEMBLY, GIAI) */ -static int x__30_key(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__30_key(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 30 && key(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg) @@ -174,8 +174,8 @@ static int x__30_key(const unsigned char *data, const int data_len, } /* N17,csum,key (Used by GSIN) */ -static int n17_csum_key(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n17_csum_key(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 17 && csum(data, data_len, 0, 17, 17, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && key(data, data_len, 0, 17, 17, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -184,9 +184,9 @@ static int n17_csum_key(const unsigned char *data, const int data_len, && key(data, data_len, 0, 17, 17, p_err_no, p_err_posn, err_msg, 0); } -/* N13,csum,key (Used by SHIP TO LOC, BILL TO, PURCHASE FROM, SHIP FOR LOC...) */ -static int n13_csum_key(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +/* N13,csum,key (Used by SHIP TO LOC, BILL TO, PURCHASE FROM, SHIP FOR LOC, LOC No., PAY TO, PROD/SERV LOC, PARTY) */ +static int n13_csum_key(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 13 && csum(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && key(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -196,8 +196,8 @@ static int n13_csum_key(const unsigned char *data, const int data_len, } /* N3,iso3166 X..9 (Used by SHIP TO POST) */ -static int n3_iso3166_x__9(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n3_iso3166_x__9(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 4 && data_len <= 12 && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg) @@ -206,42 +206,54 @@ static int n3_iso3166_x__9(const unsigned char *data, const int data_len, } /* N3,iso3166 (Used by ORIGIN, COUNTRY - PROCESS, COUNTRY - FULL PROCESS) */ -static int n3_iso3166(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n3_iso3166(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 3 && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg) && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 0); } -/* N..15,iso3166list (Used by COUNTRY - INITIAL PROCESS, COUNTRY - DISASSEMBLY) */ -static int n__15_iso3166list(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { - return data_len >= 1 && data_len <= 15 - && iso3166list(data, data_len, 0, 1, 15, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) - && numeric(data, data_len, 0, 1, 15, p_err_no, p_err_posn, err_msg) - && iso3166list(data, data_len, 0, 1, 15, p_err_no, p_err_posn, err_msg, 0); +/* N3,iso3166 [N3],iso3166 [N3],iso3166 [N3],iso3166 [N3],iso3166 (Used by COUNTRY - INITIAL PROCESS, COUNTRY -...) */ +static int n3_iso3166__n3__iso3166__n3__iso3166__n3__iso3166__n3__iso3166(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { + return data_len >= 3 && data_len <= 15 + && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) + && iso3166(data, data_len, 3, 0, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) + && iso3166(data, data_len, 6, 0, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) + && iso3166(data, data_len, 9, 0, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) + && iso3166(data, data_len, 12, 0, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) + && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg) + && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 0) + && numeric(data, data_len, 3, 0, 3, p_err_no, p_err_posn, err_msg) + && iso3166(data, data_len, 3, 0, 3, p_err_no, p_err_posn, err_msg, 0) + && numeric(data, data_len, 6, 0, 3, p_err_no, p_err_posn, err_msg) + && iso3166(data, data_len, 6, 0, 3, p_err_no, p_err_posn, err_msg, 0) + && numeric(data, data_len, 9, 0, 3, p_err_no, p_err_posn, err_msg) + && iso3166(data, data_len, 9, 0, 3, p_err_no, p_err_posn, err_msg, 0) + && numeric(data, data_len, 12, 0, 3, p_err_no, p_err_posn, err_msg) + && iso3166(data, data_len, 12, 0, 3, p_err_no, p_err_posn, err_msg, 0); } /* X..3 (Used by ORIGIN SUBDIVISION, AQUATIC SPECIES) */ -static int x__3(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__3(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 3 && cset82(data, data_len, 0, 1, 3, p_err_no, p_err_posn, err_msg); } -/* X..35,pcenc (Used by SHIP TO COMP, SHIP TO NAME, RTN TO COMP, RTN TO NAME...) */ -static int x__35_pcenc(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +/* X..35,pcenc (Used by SHIP TO COMP, SHIP TO NAME, RTN TO COMP, RTN TO NAME, SRV DESCRIPTION) */ +static int x__35_pcenc(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 35 && pcenc(data, data_len, 0, 1, 35, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 1, 35, p_err_no, p_err_posn, err_msg) && pcenc(data, data_len, 0, 1, 35, p_err_no, p_err_posn, err_msg, 0); } -/* X..70,pcenc (Used by SHIP TO ADD1, SHIP TO ADD2, SHIP TO SUB, SHIP TO LOC...) */ -static int x__70_pcenc(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +/* X..70,pcenc (Used by SHIP TO ADD1, SHIP TO ADD2, SHIP TO SUB, SHIP TO LOC, SHIP TO REG, RTN TO ADD1, RTN TO ...) */ +static int x__70_pcenc(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 70 && pcenc(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg) @@ -249,8 +261,8 @@ static int x__70_pcenc(const unsigned char *data, const int data_len, } /* X2,iso3166alpha2 (Used by SHIP TO COUNTRY, RTN TO COUNTRY) */ -static int x2_iso3166alpha2(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x2_iso3166alpha2(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 2 && iso3166alpha2(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg) @@ -258,8 +270,8 @@ static int x2_iso3166alpha2(const unsigned char *data, const int data_len, } /* N10,latitude N10,longitude (Used by SHIP TO GEO) */ -static int n10_latitude_n10_longitude(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n10_latitude_n10_longitude(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 20 && latitude(data, data_len, 0, 10, 10, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && longitude(data, data_len, 10, 10, 10, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -270,8 +282,8 @@ static int n10_latitude_n10_longitude(const unsigned char *data, const int data_ } /* N1,yesno (Used by DANGEROUS GOODS, AUTH TO LEAVE, SIG REQUIRED) */ -static int n1_yesno(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n1_yesno(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 1 && yesno(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg) @@ -279,8 +291,8 @@ static int n1_yesno(const unsigned char *data, const int data_len, } /* N6,yymmd0 N4,hhmm (Used by NOT BEF DEL DT, NOT AFT DEL DT) */ -static int n6_yymmd0_n4_hhmm(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n6_yymmd0_n4_hhmm(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 10 && yymmd0(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && hhmm(data, data_len, 6, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -291,8 +303,8 @@ static int n6_yymmd0_n4_hhmm(const unsigned char *data, const int data_len, } /* N6,yymmdd (Used by REL DATE, FIRST FREEZE DATE) */ -static int n6_yymmdd(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n6_yymmdd(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 6 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg) @@ -300,8 +312,8 @@ static int n6_yymmdd(const unsigned char *data, const int data_len, } /* N6 [X1],hyphen (Used by MAX TEMP F., MAX TEMP C., MIN TEMP F., MIN TEMP C.) */ -static int n6__x1__hyphen(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n6__x1__hyphen(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 6 && data_len <= 7 && hyphen(data, data_len, 6, 0, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg) @@ -310,15 +322,15 @@ static int n6__x1__hyphen(const unsigned char *data, const int data_len, } /* N13 (Used by NSN) */ -static int n13(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n13(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 13 && numeric(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg); } /* N6,yymmdd N4,hhmm (Used by EXPIRY TIME) */ -static int n6_yymmdd_n4_hhmm(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n6_yymmdd_n4_hhmm(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 10 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && hhmm(data, data_len, 6, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -329,22 +341,22 @@ static int n6_yymmdd_n4_hhmm(const unsigned char *data, const int data_len, } /* N..4 (Used by ACTIVE POTENCY) */ -static int n__4(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n__4(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 4 && numeric(data, data_len, 0, 1, 4, p_err_no, p_err_posn, err_msg); } /* X..12 (Used by CATCH AREA) */ -static int x__12(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__12(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 12 && cset82(data, data_len, 0, 1, 12, p_err_no, p_err_posn, err_msg); } /* N6,yymmdd [N6],yymmdd (Used by HARVEST DATE) */ -static int n6_yymmdd__n6__yymmdd(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n6_yymmdd__n6__yymmdd(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 6 && data_len <= 12 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && yymmdd(data, data_len, 6, 0, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -355,22 +367,22 @@ static int n6_yymmdd__n6__yymmdd(const unsigned char *data, const int data_len, } /* X..10 (Used by FISHING GEAR TYPE, SUFFIX) */ -static int x__10(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__10(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 10 && cset82(data, data_len, 0, 1, 10, p_err_no, p_err_posn, err_msg); } /* X..2 (Used by PROD METHOD) */ -static int x__2(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__2(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 2 && cset82(data, data_len, 0, 1, 2, p_err_no, p_err_posn, err_msg); } /* N6,yymmdd [N4],hhmm (Used by TEST BY DATE) */ -static int n6_yymmdd__n4__hhmm(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n6_yymmdd__n4__hhmm(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 6 && data_len <= 10 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && hhmm(data, data_len, 6, 0, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -380,9 +392,9 @@ static int n6_yymmdd__n4__hhmm(const unsigned char *data, const int data_len, && hhmm(data, data_len, 6, 0, 4, p_err_no, p_err_posn, err_msg, 0); } -/* N3,iso3166999 X..27 (Used by PROCESSOR # 0, PROCESSOR # 1, PROCESSOR # 2, PROCESSOR # 3...) */ -static int n3_iso3166999_x__27(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +/* N3,iso3166999 X..27 (Used by PROCESSOR # 0, PROCESSOR # 1, PROCESSOR # 2, PROCESSOR # 3, PROCESSOR # 4, PROC...) */ +static int n3_iso3166999_x__27(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 4 && data_len <= 30 && iso3166999(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg) @@ -391,8 +403,8 @@ static int n3_iso3166999_x__27(const unsigned char *data, const int data_len, } /* N1 X1 X1 X1,importeridx (Used by UIC+EXT) */ -static int n1_x1_x1_x1_importeridx(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n1_x1_x1_x1_importeridx(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 4 && importeridx(data, data_len, 3, 1, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg) @@ -402,17 +414,17 @@ static int n1_x1_x1_x1_importeridx(const unsigned char *data, const int data_len && importeridx(data, data_len, 3, 1, 1, p_err_no, p_err_posn, err_msg, 0); } -/* X2 X..28 (Used by CERT # 1, CERT # 2, CERT # 3, CERT # 4...) */ -static int x2_x__28(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +/* X2 X..28 (Used by CERT # 1, CERT # 2, CERT # 3, CERT # 4, CERT # 5, CERT # 6, CERT # 7, CERT # 8, CERT # 9, ...) */ +static int x2_x__28(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 3 && data_len <= 30 && cset82(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg) && cset82(data, data_len, 2, 1, 28, p_err_no, p_err_posn, err_msg); } /* N2,mediatype (Used by AIDC MEDIA TYPE) */ -static int n2_mediatype(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n2_mediatype(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 2 && mediatype(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg) @@ -420,15 +432,15 @@ static int n2_mediatype(const unsigned char *data, const int data_len, } /* X..25 (Used by VCN, REF No.) */ -static int x__25(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__25(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 25 && cset82(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg); } /* N8,yyyymmdd (Used by DOB) */ -static int n8_yyyymmdd(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n8_yyyymmdd(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 8 && yyyymmdd(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg) @@ -436,8 +448,8 @@ static int n8_yyyymmdd(const unsigned char *data, const int data_len, } /* N8,yyyymmdd N4,hhmm (Used by DOB TIME) */ -static int n8_yyyymmdd_n4_hhmm(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n8_yyyymmdd_n4_hhmm(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 12 && yyyymmdd(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && hhmm(data, data_len, 8, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -448,8 +460,8 @@ static int n8_yyyymmdd_n4_hhmm(const unsigned char *data, const int data_len, } /* N1,iso5218 (Used by BIO SEX) */ -static int n1_iso5218(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n1_iso5218(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 1 && iso5218(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg) @@ -457,8 +469,8 @@ static int n1_iso5218(const unsigned char *data, const int data_len, } /* X..40,pcenc (Used by FAMILY NAME, GIVEN NAME, BABY) */ -static int x__40_pcenc(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__40_pcenc(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 40 && pcenc(data, data_len, 0, 1, 40, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 1, 40, p_err_no, p_err_posn, err_msg) @@ -466,8 +478,8 @@ static int x__40_pcenc(const unsigned char *data, const int data_len, } /* X..90,pcenc (Used by FULL NAME) */ -static int x__90_pcenc(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__90_pcenc(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 90 && pcenc(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg) @@ -475,8 +487,8 @@ static int x__90_pcenc(const unsigned char *data, const int data_len, } /* X3,posinseqslash (Used by BIRTH SEQUENCE) */ -static int x3_posinseqslash(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x3_posinseqslash(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 3 && posinseqslash(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg) @@ -484,8 +496,8 @@ static int x3_posinseqslash(const unsigned char *data, const int data_len, } /* N4,nonzero N5,nonzero N3,nonzero N1,winding N1 (Used by DIMENSIONS) */ -static int n4_nonzero_n5_nonzero_n3_nonzero_n1_winding_n1(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n4_nonzero_n5_nonzero_n3_nonzero_n1_winding_n1(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 14 && nonzero(data, data_len, 0, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && nonzero(data, data_len, 4, 5, 5, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -503,8 +515,8 @@ static int n4_nonzero_n5_nonzero_n3_nonzero_n1_winding_n1(const unsigned char *d } /* N1,zero N13,csum,key [X..16] (Used by GRAI) */ -static int n1_zero_n13_csum_key__x__16_(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n1_zero_n13_csum_key__x__16_(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 14 && data_len <= 30 && zero(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && csum(data, data_len, 1, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -518,8 +530,8 @@ static int n1_zero_n13_csum_key__x__16_(const unsigned char *data, const int dat } /* N14,csum N4,pieceoftotal (Used by ITIP, ITIP CONTENT) */ -static int n14_csum_n4_pieceoftotal(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n14_csum_n4_pieceoftotal(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len == 18 && csum(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && pieceoftotal(data, data_len, 14, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -530,8 +542,8 @@ static int n14_csum_n4_pieceoftotal(const unsigned char *data, const int data_le } /* X..34,iban (Used by IBAN) */ -static int x__34_iban(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__34_iban(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 34 && iban(data, data_len, 0, 1, 34, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 1, 34, p_err_no, p_err_posn, err_msg) @@ -539,8 +551,8 @@ static int x__34_iban(const unsigned char *data, const int data_len, } /* N8,yymmddhh [N..4],mmoptss (Used by PROD TIME) */ -static int n8_yymmddhh__n__4__mmoptss(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n8_yymmddhh__n__4__mmoptss(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 8 && data_len <= 12 && yymmddhh(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && mmoptss(data, data_len, 8, 0, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -551,15 +563,15 @@ static int n8_yymmddhh__n__4__mmoptss(const unsigned char *data, const int data_ } /* X..50 (Used by OPTSEN) */ -static int x__50(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__50(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 50 && cset82(data, data_len, 0, 1, 50, p_err_no, p_err_posn, err_msg); } /* Y..30,key (Used by CPID) */ -static int y__30_key(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int y__30_key(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 30 && key(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset39(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg) @@ -567,8 +579,8 @@ static int y__30_key(const unsigned char *data, const int data_len, } /* N..12,nozeroprefix (Used by CPID SERIAL) */ -static int n__12_nozeroprefix(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n__12_nozeroprefix(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 12 && nozeroprefix(data, data_len, 0, 1, 12, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && numeric(data, data_len, 0, 1, 12, p_err_no, p_err_posn, err_msg) @@ -576,8 +588,8 @@ static int n__12_nozeroprefix(const unsigned char *data, const int data_len, } /* X..25,csumalpha,key (Used by GMN) */ -static int x__25_csumalpha_key(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__25_csumalpha_key(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 25 && csumalpha(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && key(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) @@ -587,22 +599,22 @@ static int x__25_csumalpha_key(const unsigned char *data, const int data_len, } /* N..10 (Used by SRIN) */ -static int n__10(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int n__10(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 10 && numeric(data, data_len, 0, 1, 10, p_err_no, p_err_posn, err_msg); } /* Z..90 (Used by DIGSIG) */ -static int z__90(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int z__90(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 90 && cset64(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg); } /* X..70,couponcode */ -static int x__70_couponcode(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__70_couponcode(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 70 && couponcode(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg) @@ -610,8 +622,8 @@ static int x__70_couponcode(const unsigned char *data, const int data_len, } /* X..70,couponposoffer */ -static int x__70_couponposoffer(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__70_couponposoffer(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 70 && couponposoffer(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg, 1 /*length_only*/) && cset82(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg) @@ -619,15 +631,15 @@ static int x__70_couponposoffer(const unsigned char *data, const int data_len, } /* X..70 (Used by PRODUCT URL) */ -static int x__70(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__70(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 70 && cset82(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg); } /* X..90 (Used by INTERNAL) */ -static int x__90(const unsigned char *data, const int data_len, - int *p_err_no, int *p_err_posn, char err_msg[50]) { +static int x__90(const unsigned char *data, + const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) { return data_len >= 1 && data_len <= 90 && cset82(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg); } @@ -711,7 +723,7 @@ static int gs1_lint(const int ai, const unsigned char *data, const int data_len, return n3_iso3166(data, data_len, p_err_no, p_err_posn, err_msg); } if (ai == 423 || ai == 425) { - return n__15_iso3166list(data, data_len, p_err_no, p_err_posn, err_msg); + return n3_iso3166__n3__iso3166__n3__iso3166__n3__iso3166__n3__iso3166(data, data_len, p_err_no, p_err_posn, err_msg); } if (ai == 427) { return x__3(data, data_len, p_err_no, p_err_posn, err_msg); diff --git a/backend/library.c b/backend/library.c index 93298d9c..288cc8d8 100644 --- a/backend/library.c +++ b/backend/library.c @@ -498,25 +498,6 @@ static int supports_eci(const int symbology) { return 0; } -/* Returns 1 if symbology is Health Industry Bar Code */ -static int is_hibc(const int symbology) { - - switch (symbology) { - case BARCODE_HIBC_128: - case BARCODE_HIBC_39: - case BARCODE_HIBC_DM: - case BARCODE_HIBC_QR: - case BARCODE_HIBC_PDF: - case BARCODE_HIBC_MICPDF: - case BARCODE_HIBC_BLOCKF: - case BARCODE_HIBC_AZTEC: - return 1; - break; - } - - return 0; -} - /* Returns 1 if symbology supports HRT */ static int has_hrt(const int symbology) { @@ -565,15 +546,12 @@ static int has_hrt(const int symbology) { return 1; } -/* Suppress clang warning: a function declaration without a prototype is deprecated in all versions of C - (not included in gcc's "-wpedantic") */ -#if defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wstrict-prototypes" -#endif +typedef int (*barcode_src_func_t)(struct zint_symbol *, unsigned char[], int); +typedef int (*barcode_seg_func_t)(struct zint_symbol *, struct zint_seg[], const int); -/* Used for dispatching barcodes and for whether symbol id valid */ -static int (*const barcode_funcs[BARCODE_LAST + 1])() = { +/* Used for dispatching `barcode_src_func_t` barcodes */ +/* Also used, with `barcode_seg_funcs` below, for testing whether symbol id valid in `ZBarcode_ValidID()` */ +static const barcode_src_func_t barcode_src_funcs[BARCODE_LAST + 1] = { NULL, code11, c25standard, c25inter, c25iata, /*0-4*/ NULL, c25logic, c25ind, code39, excode39, /*5-9*/ NULL, NULL, NULL, eanx, eanx, /*10-14*/ @@ -585,33 +563,52 @@ static int (*const barcode_funcs[BARCODE_LAST + 1])() = { postnet, NULL, NULL, NULL, NULL, /*40-44*/ NULL, NULL, msi_plessey, NULL, fim, /*45-49*/ code39, pharma, pzn, pharma_two, postnet, /*50-54*/ - pdf417, pdf417, maxicode, qrcode, NULL, /*55-59*/ + NULL, NULL, NULL, NULL, NULL, /*55-59*/ code128, NULL, NULL, auspost, NULL, /*60-64*/ NULL, auspost, auspost, auspost, eanx, /*65-69*/ - rm4scc, datamatrix, ean14, vin, codablockf, /*70-74*/ + rm4scc, NULL, ean14, vin, codablockf, /*70-74*/ nve18, japanpost, koreapost, NULL, dbar_omn, /*75-79*/ - dbar_omn, dbar_exp, planet, NULL, micropdf417, /*80-84*/ + dbar_omn, dbar_exp, planet, NULL, NULL, /*80-84*/ usps_imail, plessey, telepen_num, NULL, itf14, /*85-89*/ - kix, NULL, aztec, daft, NULL, /*90-94*/ - NULL, dpd, microqr, hibc, hibc, /*95-99*/ - NULL, NULL, hibc, NULL, hibc, /*100-104*/ - NULL, hibc, NULL, hibc, NULL, /*105-109*/ - hibc, NULL, hibc, NULL, NULL, /*110-114*/ - dotcode, hanxin, NULL, NULL, mailmark_2d, /*115-119*/ + kix, NULL, NULL, daft, NULL, /*90-94*/ + NULL, dpd, microqr, NULL, NULL, /*95-99*/ + NULL, NULL, NULL, NULL, NULL, /*100-104*/ + NULL, NULL, NULL, NULL, NULL, /*105-109*/ + NULL, NULL, NULL, NULL, NULL, /*110-114*/ + NULL, NULL, NULL, NULL, mailmark_2d, /*115-119*/ upu_s10, mailmark_4s, NULL, NULL, NULL, /*120-124*/ NULL, NULL, NULL, azrune, code32, /*125-129*/ composite, composite, composite, composite, composite, /*130-134*/ composite, composite, composite, composite, composite, /*135-139*/ - channel, codeone, gridmatrix, upnqr, ultra, /*140-144*/ - rmqr, bc412, + channel, NULL, NULL, upnqr, NULL, /*140-144*/ + NULL, bc412, /*145-146*/ }; -#if defined(__clang__) -#pragma GCC diagnostic pop -#endif +#define LIB_SEG_FUNCS_START 55 + +/* Used for dispatching `barcode_seg_func_t` barcodes */ +static const barcode_seg_func_t barcode_seg_funcs[BARCODE_LAST + 1 - LIB_SEG_FUNCS_START] = { + pdf417, pdf417, maxicode, qrcode, NULL, /*55-59*/ + NULL, NULL, NULL, NULL, NULL, /*60-64*/ + NULL, NULL, NULL, NULL, NULL, /*65-69*/ + NULL, datamatrix, NULL, NULL, NULL, /*70-74*/ + NULL, NULL, NULL, NULL, NULL, /*75-79*/ + NULL, NULL, NULL, NULL, micropdf417, /*80-84*/ + NULL, NULL, NULL, NULL, NULL, /*85-89*/ + NULL, NULL, aztec, NULL, NULL, /*90-94*/ + NULL, NULL, NULL, hibc, hibc, /*95-99*/ + NULL, NULL, hibc, NULL, hibc, /*100-104*/ + NULL, hibc, NULL, hibc, NULL, /*105-109*/ + hibc, NULL, hibc, NULL, NULL, /*110-114*/ + dotcode, hanxin, NULL, NULL, NULL, /*115-119*/ + NULL, NULL, NULL, NULL, NULL, /*120-124*/ + NULL, NULL, NULL, NULL, NULL, /*125-129*/ + NULL, NULL, NULL, NULL, NULL, /*130-134*/ + NULL, NULL, NULL, NULL, NULL, /*135-139*/ + NULL, codeone, gridmatrix, NULL, ultra, /*140-144*/ + rmqr, NULL, /*145-146*/ +}; -typedef int (*barcode_segs_func_t)(struct zint_symbol *, struct zint_seg[], const int); -typedef int (*barcode_func_t)(struct zint_symbol *, unsigned char[], int); static int reduced_charset(struct zint_symbol *symbol, struct zint_seg segs[], const int seg_count); /* Main dispatch, checking for barcodes which handle ECIs/character sets themselves, otherwise calling @@ -625,13 +622,12 @@ static int extended_or_reduced_charset(struct zint_symbol *symbol, struct zint_s case BARCODE_GRIDMATRIX: case BARCODE_HANXIN: case BARCODE_RMQR: - error_number = (*(barcode_segs_func_t)barcode_funcs[symbol->symbology])(symbol, segs, seg_count); + error_number = barcode_seg_funcs[symbol->symbology - LIB_SEG_FUNCS_START](symbol, segs, seg_count); break; /* These are the standards which have support for specific character sets but not ECI */ case BARCODE_MICROQR: case BARCODE_UPNQR: - error_number = (*(barcode_func_t)barcode_funcs[symbol->symbology])(symbol, segs[0].source, - segs[0].length); + error_number = barcode_src_funcs[symbol->symbology](symbol, segs[0].source, segs[0].length); break; default: error_number = reduced_charset(symbol, segs, seg_count); break; @@ -671,19 +667,19 @@ static int reduced_charset(struct zint_symbol *symbol, struct zint_seg segs[], c preprocessed += local_segs[i].length + 1; } } - if (supports_eci(symbol->symbology) || is_hibc(symbol->symbology)) { - error_number = (*(barcode_segs_func_t)barcode_funcs[symbol->symbology])(symbol, local_segs, seg_count); + if (barcode_src_funcs[symbol->symbology]) { + error_number = barcode_src_funcs[symbol->symbology](symbol, local_segs[0].source, local_segs[0].length); } else { - error_number = (*(barcode_func_t)barcode_funcs[symbol->symbology])(symbol, local_segs[0].source, - local_segs[0].length); + error_number = barcode_seg_funcs[symbol->symbology - LIB_SEG_FUNCS_START](symbol, local_segs, seg_count); } } else { - if (supports_eci(symbol->symbology) || is_hibc(symbol->symbology)) { - segs_cpy(symbol, segs, seg_count, local_segs); /* Shallow copy (needed to set default ECIs) */ - error_number = (*(barcode_segs_func_t)barcode_funcs[symbol->symbology])(symbol, local_segs, seg_count); + if (barcode_src_funcs[symbol->symbology]) { + error_number = barcode_src_funcs[symbol->symbology](symbol, segs[0].source, segs[0].length); } else { - error_number = (*(barcode_func_t)barcode_funcs[symbol->symbology])(symbol, segs[0].source, - segs[0].length); + assert(symbol->symbology >= LIB_SEG_FUNCS_START); /* Suppress clang-tidy-19 warning */ + assert(barcode_seg_funcs[symbol->symbology - LIB_SEG_FUNCS_START]); /* Suppress clang-tidy-19 warning */ + segs_cpy(symbol, segs, seg_count, local_segs); /* Shallow copy (needed to set default ECIs) */ + error_number = barcode_seg_funcs[symbol->symbology - LIB_SEG_FUNCS_START](symbol, local_segs, seg_count); } } @@ -893,6 +889,72 @@ INTERNAL int escape_char_process_test(struct zint_symbol *symbol, const unsigned } #endif +/* For backward-compatibility, map certain invalid symbol ids to zint equivalents, some silently, some with warning */ +static int map_invalid_symbology(struct zint_symbol *symbol) { + + /* Symbol ids 1 to 126 are defined by tbarcode */ + /* 26 allowed: UPC-A up to tbarcode 9, ISSN for tbarcode 10+, mapped to UPC-A */ + /* 27 error: UPCD1 up to tbarcode 9, ISSN + 2 digit add-on for tbarcode 10+ */ + /* 91 warning: BC412 up to tbarcode 9, Code 32 for tbarcode 10+, mapped to Code 128 */ + /* Note: non-zero table entries map silently, i.e. do not produce a warning */ + #define LIB_ID_MAP_LAST 111 + static const unsigned char id_map[LIB_ID_MAP_LAST + 1] = { + 0, 0, 0, 0, 0, /*0-4*/ + BARCODE_C25STANDARD, 0, 0, 0, 0, /*5-9*/ + BARCODE_EANX, BARCODE_EANX, BARCODE_EANX, 0, 0, /*10-14*/ + BARCODE_EANX, 0, BARCODE_UPCA, 0, BARCODE_CODABAR, /*15-19*/ + 0, 0, 0, 0, 0, /*20-24*/ + 0, BARCODE_UPCA, 0, 0, 0, /*25-29*/ + 0, 0, 0, BARCODE_GS1_128, 0, /*30-34*/ + 0, BARCODE_UPCA, 0, 0, BARCODE_UPCE, /*35-39*/ + 0, BARCODE_POSTNET, BARCODE_POSTNET, BARCODE_POSTNET, BARCODE_POSTNET, /*40-44*/ + BARCODE_POSTNET, BARCODE_PLESSEY, 0, BARCODE_NVE18, 0, /*45-49*/ + 0, 0, 0, 0, 0, /*50-54*/ + 0, 0, 0, 0, BARCODE_CODE128, /*55-59*/ + 0, BARCODE_CODE128, BARCODE_CODE93, 0, BARCODE_AUSPOST, /*60-64*/ + BARCODE_AUSPOST, 0, 0, 0, 0, /*65-69*/ + 0, 0, 0, 0, 0, /*70-74*/ + 0, 0, 0, BARCODE_DBAR_OMN, 0, /*75-79*/ + 0, 0, 0, BARCODE_PLANET, 0, /*80-84*/ + 0, 0, 0, BARCODE_GS1_128, 0, /*85-89*/ + 0, 0, 0, 0, 0, /*90-94*/ + 0, 0, 0, 0, 0, /*95-99*/ + BARCODE_HIBC_128, BARCODE_HIBC_39, 0, BARCODE_HIBC_DM, 0, /*100-104*/ + BARCODE_HIBC_QR, 0, BARCODE_HIBC_PDF, 0, BARCODE_HIBC_MICPDF, /*105-109*/ + 0, BARCODE_HIBC_BLOCKF, /*110-111*/ + }; + const int orig_symbology = symbol->symbology; /* For self-check */ + int warn_number = 0; + + if (symbol->symbology == 19) { + /* Has specific error message */ + warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "207: Codabar 18 not supported"); + if (warn_number >= ZINT_ERROR) { + return warn_number; + } + symbol->symbology = BARCODE_CODABAR; + } else if (symbol->symbology == 27) { + /* Not mapped */ + return error_tag(symbol, ZINT_ERROR_INVALID_OPTION, "208: UPCD1 not supported"); + + } else if (symbol->symbology <= 0 || symbol->symbology > LIB_ID_MAP_LAST || id_map[symbol->symbology] == 0) { + warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "206: Symbology out of range"); + if (warn_number >= ZINT_ERROR) { + return warn_number; + } + symbol->symbology = BARCODE_CODE128; + } else { + symbol->symbology = id_map[symbol->symbology]; + } + + if (symbol->symbology == orig_symbology) { /* Should never happen */ + assert(0); /* Not reached */ + return error_tag(symbol, ZINT_ERROR_ENCODING_PROBLEM, "000: Internal error"); + } + + return warn_number; +} + /* Encode a barcode. If `length` is 0, `source` must be NUL-terminated */ int ZBarcode_Encode(struct zint_symbol *symbol, const unsigned char *source, int length) { struct zint_seg segs[1]; @@ -925,12 +987,25 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[ if (seg_count > ZINT_MAX_SEG_COUNT) { return error_tag(symbol, ZINT_ERROR_INVALID_DATA, "771: Too many input segments (max 256)"); } - local_segs = (struct zint_seg *) z_alloca(sizeof(struct zint_seg) * (seg_count > 0 ? seg_count : 1)); if ((symbol->input_mode & 0x07) > 2) { - symbol->input_mode = DATA_MODE; /* Reset completely TODO: in future, warn/error */ + symbol->input_mode = DATA_MODE; /* Reset completely */ + warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "212: Invalid input mode - reset to DATA_MODE"); + if (warn_number >= ZINT_ERROR) { + return warn_number; + } } + /* Check the symbology field */ + if (!ZBarcode_ValidID(symbol->symbology)) { + warn_number = map_invalid_symbology(symbol); + if (warn_number >= ZINT_ERROR) { + return warn_number; + } + } + + local_segs = (struct zint_seg *) z_alloca(sizeof(struct zint_seg) * (seg_count > 0 ? seg_count : 1)); + /* Check segment lengths */ for (i = 0; i < seg_count; i++) { local_segs[i] = segs[i]; @@ -943,9 +1018,8 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[ } if (local_segs[i].length <= 0) { if (i == 0) { - /* Note: should really be referencing the symbology only after the symbology check switch below */ - if (is_composite(symbol->symbology) && - ((symbol->input_mode & 0x07) == GS1_MODE || check_force_gs1(symbol->symbology))) { + if (is_composite(symbol->symbology) + && ((symbol->input_mode & 0x07) == GS1_MODE || check_force_gs1(symbol->symbology))) { strcpy(symbol->errtxt, "779: No composite data in 2D component"); } else { sprintf(symbol->errtxt, "778: No input data%s", @@ -1015,111 +1089,6 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[ } } - /* Check the symbology field */ - if (!ZBarcode_ValidID(symbol->symbology)) { - int orig_symbology = symbol->symbology; /* For self-check */ - if (symbol->symbology < 1) { - warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "206: Symbology out of range"); - if (warn_number >= ZINT_ERROR) { - return warn_number; - } - symbol->symbology = BARCODE_CODE128; - /* symbol->symbologys 1 to 126 are defined by tbarcode */ - } else if (symbol->symbology == 5) { - symbol->symbology = BARCODE_C25STANDARD; - } else if ((symbol->symbology >= 10) && (symbol->symbology <= 12)) { - symbol->symbology = BARCODE_EANX; - } else if (symbol->symbology == 15) { - symbol->symbology = BARCODE_EANX; - } else if (symbol->symbology == 17) { - symbol->symbology = BARCODE_UPCA; - } else if (symbol->symbology == 19) { - warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "207: Codabar 18 not supported"); - if (warn_number >= ZINT_ERROR) { - return warn_number; - } - symbol->symbology = BARCODE_CODABAR; - } else if (symbol->symbology == 26) { /* UPC-A up to tbarcode 9, ISSN for tbarcode 10+ */ - symbol->symbology = BARCODE_UPCA; - } else if (symbol->symbology == 27) { /* UPCD1 up to tbarcode 9, ISSN + 2 digit add-on for tbarcode 10+ */ - return error_tag(symbol, ZINT_ERROR_INVALID_OPTION, "208: UPCD1 not supported"); - } else if (symbol->symbology == 33) { - symbol->symbology = BARCODE_GS1_128; - } else if (symbol->symbology == 36) { - symbol->symbology = BARCODE_UPCA; - } else if (symbol->symbology == 39) { - symbol->symbology = BARCODE_UPCE; - } else if ((symbol->symbology >= 41) && (symbol->symbology <= 45)) { - symbol->symbology = BARCODE_POSTNET; - } else if (symbol->symbology == 46) { - symbol->symbology = BARCODE_PLESSEY; - } else if (symbol->symbology == 48) { - symbol->symbology = BARCODE_NVE18; - } else if ((symbol->symbology == 59) || (symbol->symbology == 61)) { - symbol->symbology = BARCODE_CODE128; - } else if (symbol->symbology == 62) { - symbol->symbology = BARCODE_CODE93; - } else if ((symbol->symbology == 64) || (symbol->symbology == 65)) { - symbol->symbology = BARCODE_AUSPOST; - } else if (symbol->symbology == 78) { - symbol->symbology = BARCODE_DBAR_OMN; - } else if (symbol->symbology == 83) { - symbol->symbology = BARCODE_PLANET; - } else if (symbol->symbology == 88) { - symbol->symbology = BARCODE_GS1_128; - } else if (symbol->symbology == 91) { /* BC412 up to tbarcode 9, Code 32 for tbarcode 10+ */ - warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "212: Symbology out of range"); - if (warn_number >= ZINT_ERROR) { - return warn_number; - } - symbol->symbology = BARCODE_CODE128; - } else if ((symbol->symbology >= 94) && (symbol->symbology <= 95)) { - warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "213: Symbology out of range"); - if (warn_number >= ZINT_ERROR) { - return warn_number; - } - symbol->symbology = BARCODE_CODE128; - } else if (symbol->symbology == 100) { - symbol->symbology = BARCODE_HIBC_128; - } else if (symbol->symbology == 101) { - symbol->symbology = BARCODE_HIBC_39; - } else if (symbol->symbology == 103) { - symbol->symbology = BARCODE_HIBC_DM; - } else if (symbol->symbology == 105) { - symbol->symbology = BARCODE_HIBC_QR; - } else if (symbol->symbology == 107) { - symbol->symbology = BARCODE_HIBC_PDF; - } else if (symbol->symbology == 109) { - symbol->symbology = BARCODE_HIBC_MICPDF; - } else if (symbol->symbology == 111) { - symbol->symbology = BARCODE_HIBC_BLOCKF; - } else if ((symbol->symbology == 113) || (symbol->symbology == 114)) { - warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "214: Symbology out of range"); - if (warn_number >= ZINT_ERROR) { - return warn_number; - } - symbol->symbology = BARCODE_CODE128; - } else if ((symbol->symbology >= 117) && (symbol->symbology <= 127)) { - if (symbol->symbology < 119 || symbol->symbology > 121) { /* BARCODE_MAILMARK_2D/4S/UPU_S10 */ - warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "215: Symbology out of range"); - if (warn_number >= ZINT_ERROR) { - return warn_number; - } - symbol->symbology = BARCODE_CODE128; - } - /* Everything from 128 up is Zint-specific */ - } else if (symbol->symbology > BARCODE_LAST) { - warn_number = error_tag(symbol, ZINT_WARN_INVALID_OPTION, "216: Symbology out of range"); - if (warn_number >= ZINT_ERROR) { - return warn_number; - } - symbol->symbology = BARCODE_CODE128; - } - if (symbol->symbology == orig_symbology) { /* Should never happen */ - return error_tag(symbol, ZINT_ERROR_ENCODING_PROBLEM, "000: Internal error"); /* Not reached */ - } - } - if (seg_count > 1 && !supports_eci(symbol->symbology)) { return error_tag(symbol, ZINT_ERROR_INVALID_OPTION, "775: Symbology does not support multiple segments"); } @@ -1624,165 +1593,44 @@ int ZBarcode_ValidID(int symbol_id) { return 0; } - return barcode_funcs[symbol_id] != NULL; + return barcode_src_funcs[symbol_id] != NULL + || (symbol_id >= LIB_SEG_FUNCS_START && barcode_seg_funcs[symbol_id - LIB_SEG_FUNCS_START] != NULL); } /* Copy BARCODE_XXX name of `symbol_id` into `name` buffer, NUL-terminated. - Returns 0 if valid, non-zero (1 or -1) if not valid */ + Returns 0 if valid, 1 if not valid */ int ZBarcode_BarcodeName(int symbol_id, char name[32]) { - struct item { - const char *name; - int define; - int val; - }; - static const struct item data[] = { - { "", -1, 0 }, - { "BARCODE_CODE11", BARCODE_CODE11, 1 }, - { "BARCODE_C25STANDARD", BARCODE_C25STANDARD, 2 }, - { "BARCODE_C25INTER", BARCODE_C25INTER, 3 }, - { "BARCODE_C25IATA", BARCODE_C25IATA, 4 }, - { "", -1, 5 }, - { "BARCODE_C25LOGIC", BARCODE_C25LOGIC, 6 }, - { "BARCODE_C25IND", BARCODE_C25IND, 7 }, - { "BARCODE_CODE39", BARCODE_CODE39, 8 }, - { "BARCODE_EXCODE39", BARCODE_EXCODE39, 9 }, - { "", -1, 10 }, - { "", -1, 11 }, - { "", -1, 12 }, - { "BARCODE_EANX", BARCODE_EANX, 13 }, - { "BARCODE_EANX_CHK", BARCODE_EANX_CHK, 14 }, - { "", -1, 15 }, - { "BARCODE_GS1_128", BARCODE_GS1_128, 16 }, - { "", -1, 17 }, - { "BARCODE_CODABAR", BARCODE_CODABAR, 18 }, - { "", -1, 19 }, - { "BARCODE_CODE128", BARCODE_CODE128, 20 }, - { "BARCODE_DPLEIT", BARCODE_DPLEIT, 21 }, - { "BARCODE_DPIDENT", BARCODE_DPIDENT, 22 }, - { "BARCODE_CODE16K", BARCODE_CODE16K, 23 }, - { "BARCODE_CODE49", BARCODE_CODE49, 24 }, - { "BARCODE_CODE93", BARCODE_CODE93, 25 }, - { "", -1, 26 }, - { "", -1, 27 }, - { "BARCODE_FLAT", BARCODE_FLAT, 28 }, - { "BARCODE_DBAR_OMN", BARCODE_DBAR_OMN, 29 }, - { "BARCODE_DBAR_LTD", BARCODE_DBAR_LTD, 30 }, - { "BARCODE_DBAR_EXP", BARCODE_DBAR_EXP, 31 }, - { "BARCODE_TELEPEN", BARCODE_TELEPEN, 32 }, - { "", -1, 33 }, - { "BARCODE_UPCA", BARCODE_UPCA, 34 }, - { "BARCODE_UPCA_CHK", BARCODE_UPCA_CHK, 35 }, - { "", -1, 36 }, - { "BARCODE_UPCE", BARCODE_UPCE, 37 }, - { "BARCODE_UPCE_CHK", BARCODE_UPCE_CHK, 38 }, - { "", -1, 39 }, - { "BARCODE_POSTNET", BARCODE_POSTNET, 40 }, - { "", -1, 41 }, - { "", -1, 42 }, - { "", -1, 43 }, - { "", -1, 44 }, - { "", -1, 45 }, - { "", -1, 46 }, - { "BARCODE_MSI_PLESSEY", BARCODE_MSI_PLESSEY, 47 }, - { "", -1, 48 }, - { "BARCODE_FIM", BARCODE_FIM, 49 }, - { "BARCODE_LOGMARS", BARCODE_LOGMARS, 50 }, - { "BARCODE_PHARMA", BARCODE_PHARMA, 51 }, - { "BARCODE_PZN", BARCODE_PZN, 52 }, - { "BARCODE_PHARMA_TWO", BARCODE_PHARMA_TWO, 53 }, - { "BARCODE_CEPNET", BARCODE_CEPNET, 54 }, - { "BARCODE_PDF417", BARCODE_PDF417, 55 }, - { "BARCODE_PDF417COMP", BARCODE_PDF417COMP, 56 }, - { "BARCODE_MAXICODE", BARCODE_MAXICODE, 57 }, - { "BARCODE_QRCODE", BARCODE_QRCODE, 58 }, - { "", -1, 59 }, - { "BARCODE_CODE128AB", BARCODE_CODE128AB, 60 }, - { "", -1, 61 }, - { "", -1, 62 }, - { "BARCODE_AUSPOST", BARCODE_AUSPOST, 63 }, - { "", -1, 64 }, - { "", -1, 65 }, - { "BARCODE_AUSREPLY", BARCODE_AUSREPLY, 66 }, - { "BARCODE_AUSROUTE", BARCODE_AUSROUTE, 67 }, - { "BARCODE_AUSREDIRECT", BARCODE_AUSREDIRECT, 68 }, - { "BARCODE_ISBNX", BARCODE_ISBNX, 69 }, - { "BARCODE_RM4SCC", BARCODE_RM4SCC, 70 }, - { "BARCODE_DATAMATRIX", BARCODE_DATAMATRIX, 71 }, - { "BARCODE_EAN14", BARCODE_EAN14, 72 }, - { "BARCODE_VIN", BARCODE_VIN, 73 }, - { "BARCODE_CODABLOCKF", BARCODE_CODABLOCKF, 74 }, - { "BARCODE_NVE18", BARCODE_NVE18, 75 }, - { "BARCODE_JAPANPOST", BARCODE_JAPANPOST, 76 }, - { "BARCODE_KOREAPOST", BARCODE_KOREAPOST, 77 }, - { "", -1, 78 }, - { "BARCODE_DBAR_STK", BARCODE_DBAR_STK, 79 }, - { "BARCODE_DBAR_OMNSTK", BARCODE_DBAR_OMNSTK, 80 }, - { "BARCODE_DBAR_EXPSTK", BARCODE_DBAR_EXPSTK, 81 }, - { "BARCODE_PLANET", BARCODE_PLANET, 82 }, - { "", -1, 83 }, - { "BARCODE_MICROPDF417", BARCODE_MICROPDF417, 84 }, - { "BARCODE_USPS_IMAIL", BARCODE_USPS_IMAIL, 85 }, - { "BARCODE_PLESSEY", BARCODE_PLESSEY, 86 }, - { "BARCODE_TELEPEN_NUM", BARCODE_TELEPEN_NUM, 87 }, - { "", -1, 88 }, - { "BARCODE_ITF14", BARCODE_ITF14, 89 }, - { "BARCODE_KIX", BARCODE_KIX, 90 }, - { "", -1, 91 }, - { "BARCODE_AZTEC", BARCODE_AZTEC, 92 }, - { "BARCODE_DAFT", BARCODE_DAFT, 93 }, - { "", -1, 94 }, - { "", -1, 95 }, - { "BARCODE_DPD", BARCODE_DPD, 96 }, - { "BARCODE_MICROQR", BARCODE_MICROQR, 97 }, - { "BARCODE_HIBC_128", BARCODE_HIBC_128, 98 }, - { "BARCODE_HIBC_39", BARCODE_HIBC_39, 99 }, - { "", -1, 100 }, - { "", -1, 101 }, - { "BARCODE_HIBC_DM", BARCODE_HIBC_DM, 102 }, - { "", -1, 103 }, - { "BARCODE_HIBC_QR", BARCODE_HIBC_QR, 104 }, - { "", -1, 105 }, - { "BARCODE_HIBC_PDF", BARCODE_HIBC_PDF, 106 }, - { "", -1, 107 }, - { "BARCODE_HIBC_MICPDF", BARCODE_HIBC_MICPDF, 108 }, - { "", -1, 109 }, - { "BARCODE_HIBC_BLOCKF", BARCODE_HIBC_BLOCKF, 110 }, - { "", -1, 111 }, - { "BARCODE_HIBC_AZTEC", BARCODE_HIBC_AZTEC, 112 }, - { "", -1, 113 }, - { "", -1, 114 }, - { "BARCODE_DOTCODE", BARCODE_DOTCODE, 115 }, - { "BARCODE_HANXIN", BARCODE_HANXIN, 116 }, - { "", -1, 117 }, - { "", -1, 118 }, - { "BARCODE_MAILMARK_2D", BARCODE_MAILMARK_2D, 119 }, - { "BARCODE_UPU_S10", BARCODE_UPU_S10, 120 }, - { "BARCODE_MAILMARK_4S", BARCODE_MAILMARK_4S, 121 }, - { "", -1, 122 }, - { "", -1, 123 }, - { "", -1, 124 }, - { "", -1, 125 }, - { "", -1, 126 }, - { "", -1, 127 }, - { "BARCODE_AZRUNE", BARCODE_AZRUNE, 128 }, - { "BARCODE_CODE32", BARCODE_CODE32, 129 }, - { "BARCODE_EANX_CC", BARCODE_EANX_CC, 130 }, - { "BARCODE_GS1_128_CC", BARCODE_GS1_128_CC, 131 }, - { "BARCODE_DBAR_OMN_CC", BARCODE_DBAR_OMN_CC, 132 }, - { "BARCODE_DBAR_LTD_CC", BARCODE_DBAR_LTD_CC, 133 }, - { "BARCODE_DBAR_EXP_CC", BARCODE_DBAR_EXP_CC, 134 }, - { "BARCODE_UPCA_CC", BARCODE_UPCA_CC, 135 }, - { "BARCODE_UPCE_CC", BARCODE_UPCE_CC, 136 }, - { "BARCODE_DBAR_STK_CC", BARCODE_DBAR_STK_CC, 137 }, - { "BARCODE_DBAR_OMNSTK_CC", BARCODE_DBAR_OMNSTK_CC, 138 }, - { "BARCODE_DBAR_EXPSTK_CC", BARCODE_DBAR_EXPSTK_CC, 139 }, - { "BARCODE_CHANNEL", BARCODE_CHANNEL, 140 }, - { "BARCODE_CODEONE", BARCODE_CODEONE, 141 }, - { "BARCODE_GRIDMATRIX", BARCODE_GRIDMATRIX, 142 }, - { "BARCODE_UPNQR", BARCODE_UPNQR, 143 }, - { "BARCODE_ULTRA", BARCODE_ULTRA, 144 }, - { "BARCODE_RMQR", BARCODE_RMQR, 145 }, - { "BARCODE_BC412", BARCODE_BC412, 146 }, + static const char *const names[] = { + "", "CODE11", "C25STANDARD", "C25INTER", "C25IATA", /*0-4*/ + "", "C25LOGIC", "C25IND", "CODE39", "EXCODE39", /*5-9*/ + "", "", "", "EANX", "EANX_CHK", /*10-14*/ + "", "GS1_128", "", "CODABAR", "", /*15-19*/ + "CODE128", "DPLEIT", "DPIDENT", "CODE16K", "CODE49", /*20-24*/ + "CODE93", "", "", "FLAT", "DBAR_OMN", /*25-29*/ + "DBAR_LTD", "DBAR_EXP", "TELEPEN", "", "UPCA", /*30-34*/ + "UPCA_CHK", "", "UPCE", "UPCE_CHK", "", /*35-39*/ + "POSTNET", "", "", "", "", /*40-44*/ + "", "", "MSI_PLESSEY", "", "FIM", /*45-49*/ + "LOGMARS", "PHARMA", "PZN", "PHARMA_TWO", "CEPNET", /*50-54*/ + "PDF417", "PDF417COMP", "MAXICODE", "QRCODE", "", /*55-59*/ + "CODE128AB", "", "", "AUSPOST", "", /*60-64*/ + "", "AUSREPLY", "AUSROUTE", "AUSREDIRECT", "ISBNX", /*65-69*/ + "RM4SCC", "DATAMATRIX", "EAN14", "VIN", "CODABLOCKF", /*70-74*/ + "NVE18", "JAPANPOST", "KOREAPOST", "", "DBAR_STK", /*75-79*/ + "DBAR_OMNSTK", "DBAR_EXPSTK", "PLANET", "", "MICROPDF417", /*80-84*/ + "USPS_IMAIL", "PLESSEY", "TELEPEN_NUM", "", "ITF14", /*85-89*/ + "KIX", "", "AZTEC", "DAFT", "", /*90-94*/ + "", "DPD", "MICROQR", "HIBC_128", "HIBC_39", /*95-99*/ + "", "", "HIBC_DM", "", "HIBC_QR", /*100-104*/ + "", "HIBC_PDF", "", "HIBC_MICPDF", "", /*105-109*/ + "HIBC_BLOCKF", "", "HIBC_AZTEC", "", "", /*110-114*/ + "DOTCODE", "HANXIN", "", "", "MAILMARK_2D", /*115-119*/ + "UPU_S10", "MAILMARK_4S", "", "", "", /*120-124*/ + "", "", "", "AZRUNE", "CODE32", /*125-129*/ + "EANX_CC", "GS1_128_CC", "DBAR_OMN_CC", "DBAR_LTD_CC", "DBAR_EXP_CC", /*130-134*/ + "UPCA_CC", "UPCE_CC", "DBAR_STK_CC", "DBAR_OMNSTK_CC", "DBAR_EXPSTK_CC", /*135-139*/ + "CHANNEL", "CODEONE", "GRIDMATRIX", "UPNQR", "ULTRA", /*140-144*/ + "RMQR", "BC412", /*145-146*/ }; name[0] = '\0'; @@ -1790,15 +1638,10 @@ int ZBarcode_BarcodeName(int symbol_id, char name[32]) { if (!ZBarcode_ValidID(symbol_id)) { return 1; } - assert(symbol_id >= 0 && symbol_id < ARRAY_SIZE(data) && data[symbol_id].name[0]); + assert(symbol_id >= 0 && symbol_id < ARRAY_SIZE(names) && names[symbol_id][0]); - /* Self-check, shouldn't happen */ - if (data[symbol_id].val != symbol_id || (data[symbol_id].define != -1 && data[symbol_id].define != symbol_id)) { - assert(0); /* Not reached */ - return -1; - } - - strcpy(name, data[symbol_id].name); + memcpy(name, "BARCODE_", 8); + strcpy(name + 8, names[symbol_id]); return 0; } @@ -2210,11 +2053,11 @@ int ZBarcode_NoPng(void) { /* Return the version of Zint linked to */ int ZBarcode_Version(void) { - if (ZINT_VERSION_BUILD) { - return (ZINT_VERSION_MAJOR * 10000) + (ZINT_VERSION_MINOR * 100) + ZINT_VERSION_RELEASE * 10 - + ZINT_VERSION_BUILD; - } +#if ZINT_VERSION_BUILD + return (ZINT_VERSION_MAJOR * 10000) + (ZINT_VERSION_MINOR * 100) + ZINT_VERSION_RELEASE * 10 + ZINT_VERSION_BUILD; +#else return (ZINT_VERSION_MAJOR * 10000) + (ZINT_VERSION_MINOR * 100) + ZINT_VERSION_RELEASE; +#endif } /* vim: set ts=4 sw=4 et : */ diff --git a/backend/output.h b/backend/output.h index 3dc18f59..a995eb00 100644 --- a/backend/output.h +++ b/backend/output.h @@ -113,11 +113,13 @@ INTERNAL FILE *out_win_fopen(const char *filename, const char *mode); bp[3] = (unsigned char) ((*p_u32 >> 24) & 0xFF); \ } while (0) -/* For more portability, use `#pragma pack()` pair for MSCV, per-type packed attribute otherwise */ -#ifdef _MSC_VER -# define OUT_PACK +/* If `#pragma pack()` not supported, try per-type packed attribute */ +#ifdef __COMPCERT__ +/* Can't use `__attribute__` as may be defined to be no-op by libc if not GNU C or Clang (e.g. glibc does this) */ +# define OUT_PACK __attribute((__packed__)) /* CompCert C workaround extension `__attribute` */ #else -# define OUT_PACK __attribute__((__packed__)) +# define OUT_USE_PRAGMA_PACK +# define OUT_PACK #endif #ifdef __cplusplus diff --git a/backend/pcx.h b/backend/pcx.h index 3debb3db..39b001ce 100644 --- a/backend/pcx.h +++ b/backend/pcx.h @@ -1,7 +1,7 @@ /* pcx.h - header structure for ZSoft PCX files */ /* libzint - the open source barcode library - Copyright (C) 2016-2022 Robin Stuart + Copyright (C) 2016-2024 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,7 +37,7 @@ extern "C" { #endif -#ifdef _MSC_VER +#ifdef OUT_USE_PRAGMA_PACK #pragma pack(1) #endif @@ -62,7 +62,7 @@ extern "C" { uint8_t filler[54]; } OUT_PACK pcx_header_t; -#ifdef _MSC_VER +#ifdef OUT_USE_PRAGMA_PACK #pragma pack() #endif diff --git a/backend/pdf417.c b/backend/pdf417.c index 285c4aa6..6742f6c0 100644 --- a/backend/pdf417.c +++ b/backend/pdf417.c @@ -68,7 +68,7 @@ static const char pdf_smodes[] = { '?', 'A', 'L', 'M', 'P', 'B', 'N' }; /* Return (real) mode text */ static const char *pdf_mode_str(const int mode) { - static const char *modes[3] = { "Text", "Byte", "Number" }; + static const char modes[3][7] = { "Text", "Byte", "Number" }; return mode >= PDF_TEX && mode <= PDF_NUM ? modes[mode - PDF_TEX] : "ERROR"; } diff --git a/backend/ps.c b/backend/ps.c index 21ffd71c..16ca75c7 100644 --- a/backend/ps.c +++ b/backend/ps.c @@ -1,7 +1,7 @@ /* ps.c - Post Script output */ /* libzint - the open source barcode library - Copyright (C) 2009-2023 Robin Stuart + Copyright (C) 2009-2024 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -265,12 +265,11 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { /* Start writing the header */ fm_puts("%!PS-Adobe-3.0 EPSF-3.0\n" "%%Creator: Zint ", fmp); - if (ZINT_VERSION_BUILD) { - fm_printf(fmp, "%d.%d.%d.%d\n", - ZINT_VERSION_MAJOR, ZINT_VERSION_MINOR, ZINT_VERSION_RELEASE, ZINT_VERSION_BUILD); - } else { - fm_printf(fmp, "%d.%d.%d\n", ZINT_VERSION_MAJOR, ZINT_VERSION_MINOR, ZINT_VERSION_RELEASE); - } +#if ZINT_VERSION_BUILD + fm_printf(fmp, "%d.%d.%d.%d\n", ZINT_VERSION_MAJOR, ZINT_VERSION_MINOR, ZINT_VERSION_RELEASE, ZINT_VERSION_BUILD); +#else + fm_printf(fmp, "%d.%d.%d\n", ZINT_VERSION_MAJOR, ZINT_VERSION_MINOR, ZINT_VERSION_RELEASE); +#endif fm_puts("%%Title: Zint Generated Symbol\n" "%%Pages: 0\n" "%%BoundingBox: 0 0 ", fmp); diff --git a/backend/qr.c b/backend/qr.c index e0ee8cc3..9c03ddea 100644 --- a/backend/qr.c +++ b/backend/qr.c @@ -383,7 +383,7 @@ static int qr_cci_bits(const int version, const int mode) { { 5, 4, 4, 3, }, { 6, 5, 5, 4, } }; - static const unsigned char *rmqr_ccis[QR_NUM_MODES] = { + static const unsigned char *const rmqr_ccis[QR_NUM_MODES] = { rmqr_numeric_cci, rmqr_alphanum_cci, rmqr_byte_cci, rmqr_kanji_cci, }; int mode_index = posn(qr_mode_types, (const char) mode); diff --git a/backend/tests/test_aztec.c b/backend/tests/test_aztec.c index dc3ffc6a..08ddabb0 100644 --- a/backend/tests/test_aztec.c +++ b/backend/tests/test_aztec.c @@ -257,7 +257,7 @@ static void test_options(const testCtx *const p_ctx) { /* 15*/ { BARCODE_AZRUNE, -1, -1, -1, -1, { 0, 0, "" }, "A", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 508: Invalid character in data (digits only)" }, /* 16*/ { BARCODE_AZRUNE, -1, -1, -1, -1, { 0, 0, "" }, "256", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 509: Input out of range (0 to 255)" }, /* 17*/ { BARCODE_AZTEC, -1, -1, -1, -1, { 1, 2, "" }, "1234567890", 0, 15, 15, "" }, - /* 18*/ { BARCODE_AZTEC, -1, -1, -1, -1, { 1, 2, "12345678901234567890123456789012" }, "1234567890", 0, 23, 23, "" }, + /* 18*/ { BARCODE_AZTEC, -1, -1, -1, -1, { 1, 2, {'1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2'} }, "1234567890", 0, 23, 23, "" }, /* 19*/ { BARCODE_AZTEC, -1, -1, -1, -1, { 1, 1, "" }, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 701: Structured Append count out of range (2-26)" }, /* 20*/ { BARCODE_AZTEC, -1, -1, -1, -1, { 0, 2, "" }, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 702: Structured Append index out of range (1-2)" }, /* 21*/ { BARCODE_AZTEC, -1, -1, -1, -1, { 3, 2, "" }, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 702: Structured Append index out of range (1-2)" }, diff --git a/backend/tests/test_library.c b/backend/tests/test_library.c index 7a4fe08e..c8adf11b 100644 --- a/backend/tests/test_library.c +++ b/backend/tests/test_library.c @@ -151,12 +151,12 @@ static void test_checks(const testCtx *const p_ctx) { /* 87*/ { 88, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI", BARCODE_GS1_128 }, /* 88*/ { 88, -1, "[10]12", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_GS1_128 }, /* 89*/ { 88, -1, "[10]12", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_GS1_128 }, - /* 90*/ { 91, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 212: Symbology out of range", BARCODE_CODE128 }, - /* 91*/ { 91, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 212: Symbology out of range", -1 }, - /* 92*/ { 94, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 213: Symbology out of range", BARCODE_CODE128 }, - /* 93*/ { 94, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 213: Symbology out of range", -1 }, - /* 94*/ { 95, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 213: Symbology out of range", BARCODE_CODE128 }, - /* 95*/ { 95, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 213: Symbology out of range", -1 }, + /* 90*/ { 91, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /* 91*/ { 91, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /* 92*/ { 94, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /* 93*/ { 94, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /* 94*/ { 95, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /* 95*/ { 95, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, /* 96*/ { 100, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_128 }, /* 97*/ { 100, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_128 }, /* 98*/ { 101, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_39 }, @@ -171,30 +171,30 @@ static void test_checks(const testCtx *const p_ctx) { /*107*/ { 109, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_MICPDF }, /*108*/ { 111, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_BLOCKF }, /*109*/ { 111, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_BLOCKF }, - /*110*/ { 113, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 214: Symbology out of range", BARCODE_CODE128 }, - /*111*/ { 113, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 214: Symbology out of range", -1 }, - /*112*/ { 114, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 214: Symbology out of range", BARCODE_CODE128 }, - /*113*/ { 114, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 214: Symbology out of range", -1 }, - /*114*/ { 117, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*115*/ { 117, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*116*/ { 118, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*117*/ { 118, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*118*/ { 122, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*119*/ { 122, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*120*/ { 123, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*121*/ { 123, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*122*/ { 124, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*123*/ { 124, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*124*/ { 125, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*125*/ { 125, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*126*/ { 126, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*127*/ { 126, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*128*/ { 127, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*129*/ { 127, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*130*/ { 147, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 216: Symbology out of range", BARCODE_CODE128 }, - /*131*/ { 147, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 216: Symbology out of range", -1 }, - /*132*/ { BARCODE_LAST + 1, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 216: Symbology out of range", BARCODE_CODE128 }, - /*133*/ { BARCODE_LAST + 1, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 216: Symbology out of range", -1 }, + /*110*/ { 113, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*111*/ { 113, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*112*/ { 114, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*113*/ { 114, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*114*/ { 117, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*115*/ { 117, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*116*/ { 118, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*117*/ { 118, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*118*/ { 122, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*119*/ { 122, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*120*/ { 123, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*121*/ { 123, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*122*/ { 124, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*123*/ { 124, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*124*/ { 125, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*125*/ { 125, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*126*/ { 126, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*127*/ { 126, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*128*/ { 127, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*129*/ { 127, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*130*/ { 147, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*131*/ { 147, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /*132*/ { BARCODE_LAST + 1, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /*133*/ { BARCODE_LAST + 1, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, /*134*/ { BARCODE_CODE128, -1, "\200", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 245: Invalid UTF-8 in input data", -1 }, /*135*/ { BARCODE_GS1_128, -1, "[01]12345678901234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) position 14: Bad checksum '4', expected '1'", -1 }, /*136*/ { BARCODE_GS1_128, -1, "[01]12345678901234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_NONCOMPLIANT, "Error 261: AI (01) position 14: Bad checksum '4', expected '1'", -1 }, @@ -394,6 +394,95 @@ static void test_input_data(const testCtx *const p_ctx) { testFinish(); } +static int test_prev_map_invalid_symbology(int *p_symbology) { + int symbology = *p_symbology; + int warn_number = 0; + + if (symbology < 1) { + warn_number = ZINT_WARN_INVALID_OPTION; + symbology = BARCODE_CODE128; + /* symbol->symbologys 1 to 126 are defined by tbarcode */ + } else if (symbology == 5) { + symbology = BARCODE_C25STANDARD; + } else if ((symbology >= 10) && (symbology <= 12)) { + symbology = BARCODE_EANX; + } else if (symbology == 15) { + symbology = BARCODE_EANX; + } else if (symbology == 17) { + symbology = BARCODE_UPCA; + } else if (symbology == 19) { + warn_number = ZINT_WARN_INVALID_OPTION; + symbology = BARCODE_CODABAR; + } else if (symbology == 26) { /* UPC-A up to tbarcode 9, ISSN for tbarcode 10+ */ + symbology = BARCODE_UPCA; + } else if (symbology == 27) { /* UPCD1 up to tbarcode 9, ISSN + 2 digit add-on for tbarcode 10+ */ + return ZINT_ERROR_INVALID_OPTION; + } else if (symbology == 33) { + symbology = BARCODE_GS1_128; + } else if (symbology == 36) { + symbology = BARCODE_UPCA; + } else if (symbology == 39) { + symbology = BARCODE_UPCE; + } else if ((symbology >= 41) && (symbology <= 45)) { + symbology = BARCODE_POSTNET; + } else if (symbology == 46) { + symbology = BARCODE_PLESSEY; + } else if (symbology == 48) { + symbology = BARCODE_NVE18; + } else if ((symbology == 59) || (symbology == 61)) { + symbology = BARCODE_CODE128; + } else if (symbology == 62) { + symbology = BARCODE_CODE93; + } else if ((symbology == 64) || (symbology == 65)) { + symbology = BARCODE_AUSPOST; + } else if (symbology == 78) { + symbology = BARCODE_DBAR_OMN; + } else if (symbology == 83) { + symbology = BARCODE_PLANET; + } else if (symbology == 88) { + symbology = BARCODE_GS1_128; + } else if (symbology == 91) { /* BC412 up to tbarcode 9, Code 32 for tbarcode 10+ */ + warn_number = ZINT_WARN_INVALID_OPTION; + symbology = BARCODE_CODE128; + } else if ((symbology >= 94) && (symbology <= 95)) { + warn_number = ZINT_WARN_INVALID_OPTION; + symbology = BARCODE_CODE128; + } else if (symbology == 100) { + symbology = BARCODE_HIBC_128; + } else if (symbology == 101) { + symbology = BARCODE_HIBC_39; + } else if (symbology == 103) { + symbology = BARCODE_HIBC_DM; + } else if (symbology == 105) { + symbology = BARCODE_HIBC_QR; + } else if (symbology == 107) { + symbology = BARCODE_HIBC_PDF; + } else if (symbology == 109) { + symbology = BARCODE_HIBC_MICPDF; + } else if (symbology == 111) { + symbology = BARCODE_HIBC_BLOCKF; + } else if ((symbology == 113) || (symbology == 114)) { + warn_number = ZINT_WARN_INVALID_OPTION; + symbology = BARCODE_CODE128; + } else if ((symbology >= 117) && (symbology <= 127)) { + if (symbology < 119 || symbology > 121) { /* BARCODE_MAILMARK_2D/4S/UPU_S10 */ + warn_number = ZINT_WARN_INVALID_OPTION; + symbology = BARCODE_CODE128; + } + /* Everything from 128 up is Zint-specific */ + } else if (symbology > BARCODE_LAST) { + warn_number = ZINT_WARN_INVALID_OPTION; + symbology = BARCODE_CODE128; + } + if (symbology == *p_symbology) { /* Should never happen */ + return ZINT_ERROR_ENCODING_PROBLEM; + } + + *p_symbology = symbology; + + return warn_number; +} + static void test_symbologies(const testCtx *const p_ctx) { int i, ret; struct zint_symbol symbol = {0}; @@ -404,8 +493,21 @@ static void test_symbologies(const testCtx *const p_ctx) { if (testContinue(p_ctx, i)) continue; symbol.symbology = i; - ret = ZBarcode_Encode(&symbol, TU("1"), 0); + ret = ZBarcode_Encode(&symbol, TU(""), 0); assert_notequal(ret, ZINT_ERROR_ENCODING_PROBLEM, "i:%d Encoding problem (%s)\n", i, symbol.errtxt); + + if (!ZBarcode_ValidID(i)) { + int prev_symbology = i; + int prev_ret = test_prev_map_invalid_symbology(&prev_symbology); + if (ret != ZINT_ERROR_INVALID_DATA) { + assert_equal(prev_ret, ret, "i:%d prev_ret (%d) != ret (%d)\n", i, prev_ret, ret); + } + assert_equal(prev_symbology, symbol.symbology, "i:%d prev_symbology (%d) != symbol.symbology (%d)\n", + i, prev_symbology, symbol.symbology); + } else { + /* No input data */ + assert_equal(ret, ZINT_ERROR_INVALID_DATA, "i:%d ret (%d) != ZINT_ERROR_INVALID_DATA\n", i, ret); + } } testFinish(); @@ -420,20 +522,21 @@ static void test_input_mode(const testCtx *const p_ctx) { int ret; int expected_input_mode; + char *expected_errtxt; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { "1234", DATA_MODE, 0, DATA_MODE }, - /* 1*/ { "1234", DATA_MODE | ESCAPE_MODE, 0, DATA_MODE | ESCAPE_MODE }, - /* 2*/ { "1234", UNICODE_MODE, 0, UNICODE_MODE }, - /* 3*/ { "1234", UNICODE_MODE | ESCAPE_MODE, 0, UNICODE_MODE | ESCAPE_MODE }, - /* 4*/ { "[01]12345678901231", GS1_MODE, 0, GS1_MODE }, - /* 5*/ { "[01]12345678901231", GS1_MODE | ESCAPE_MODE, 0, GS1_MODE | ESCAPE_MODE }, - /* 6*/ { "1234", 4 | ESCAPE_MODE, 0, DATA_MODE }, /* Unknown mode reset to bare DATA_MODE */ - /* 7*/ { "1234", -1, 0, DATA_MODE }, - /* 8*/ { "1234", DATA_MODE | 0x10, 0, DATA_MODE | 0x10 }, /* Unknown flags kept (but ignored) */ - /* 9*/ { "1234", UNICODE_MODE | 0x10, 0, UNICODE_MODE | 0x10 }, - /* 10*/ { "[01]12345678901231", GS1_MODE | 0x20, 0, GS1_MODE | 0x20 }, + /* 0*/ { "1234", DATA_MODE, 0, DATA_MODE, "" }, + /* 1*/ { "1234", DATA_MODE | ESCAPE_MODE, 0, DATA_MODE | ESCAPE_MODE, "" }, + /* 2*/ { "1234", UNICODE_MODE, 0, UNICODE_MODE, "" }, + /* 3*/ { "1234", UNICODE_MODE | ESCAPE_MODE, 0, UNICODE_MODE | ESCAPE_MODE, "" }, + /* 4*/ { "[01]12345678901231", GS1_MODE, 0, GS1_MODE, "" }, + /* 5*/ { "[01]12345678901231", GS1_MODE | ESCAPE_MODE, 0, GS1_MODE | ESCAPE_MODE, "" }, + /* 6*/ { "1234", 4 | ESCAPE_MODE, ZINT_WARN_INVALID_OPTION, DATA_MODE, "Warning 212: Invalid input mode - reset to DATA_MODE" }, /* Unknown mode reset to bare DATA_MODE. Note: now warns */ + /* 7*/ { "1234", -1, 0, DATA_MODE, "" }, + /* 8*/ { "1234", DATA_MODE | 0x10, 0, DATA_MODE | 0x10, "" }, /* Unknown flags kept (but ignored) */ + /* 9*/ { "1234", UNICODE_MODE | 0x10, 0, UNICODE_MODE | 0x10, "" }, + /* 10*/ { "[01]12345678901231", GS1_MODE | 0x20, 0, GS1_MODE | 0x20, "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -453,6 +556,7 @@ static void test_input_mode(const testCtx *const p_ctx) { ret = ZBarcode_Encode(symbol, TU(data[i].data), length); assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); assert_equal(symbol->input_mode, data[i].expected_input_mode, "i:%d symbol->input_mode %d != %d\n", i, symbol->input_mode, data[i].expected_input_mode); + assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d ZBarcode_Encode strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected_errtxt); ZBarcode_Delete(symbol); } @@ -725,7 +829,7 @@ static void test_cap(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i; - unsigned int ret; + unsigned int uret; testStart("test_cap"); @@ -733,8 +837,8 @@ static void test_cap(const testCtx *const p_ctx) { if (testContinue(p_ctx, i)) continue; - ret = ZBarcode_Cap(data[i].symbology, data[i].cap_flag); - assert_equal(ret, data[i].expected, "i:%d ZBarcode_Cap(%s, 0x%X) 0x%X != 0x%X\n", i, testUtilBarcodeName(data[i].symbology), data[i].cap_flag, ret, data[i].expected); + uret = ZBarcode_Cap(data[i].symbology, data[i].cap_flag); + assert_equal(uret, data[i].expected, "i:%d ZBarcode_Cap(%s, 0x%X) 0x%X != 0x%X\n", i, testUtilBarcodeName(data[i].symbology), data[i].cap_flag, uret, data[i].expected); } testFinish(); @@ -742,7 +846,7 @@ static void test_cap(const testCtx *const p_ctx) { static void test_cap_compliant_height(const testCtx *const p_ctx) { int symbol_id; - int ret; + unsigned int uret; testStart("test_cap_compliant_height"); @@ -750,7 +854,7 @@ static void test_cap_compliant_height(const testCtx *const p_ctx) { if (!ZBarcode_ValidID(symbol_id)) continue; if (testContinue(p_ctx, symbol_id)) continue; - ret = ZBarcode_Cap(symbol_id, ZINT_CAP_COMPLIANT_HEIGHT); + uret = ZBarcode_Cap(symbol_id, ZINT_CAP_COMPLIANT_HEIGHT); switch (symbol_id) { /*case BARCODE_CODE11: TODO: Find doc */ @@ -822,10 +926,10 @@ static void test_cap_compliant_height(const testCtx *const p_ctx) { case BARCODE_DBAR_EXPSTK_CC: case BARCODE_CHANNEL: case BARCODE_BC412: - assert_equal(ret, ZINT_CAP_COMPLIANT_HEIGHT, "symbol_id %d (%s) ret 0x%X != ZINT_CAP_COMPLIANT_HEIGHT\n", symbol_id, testUtilBarcodeName(symbol_id), ret); + assert_equal(uret, ZINT_CAP_COMPLIANT_HEIGHT, "symbol_id %d (%s) uret 0x%X != ZINT_CAP_COMPLIANT_HEIGHT\n", symbol_id, testUtilBarcodeName(symbol_id), uret); break; default: - assert_zero(ret, "symbol_id %d (%s) ret 0x%X non-zero\n", symbol_id, testUtilBarcodeName(symbol_id), ret); + assert_zero(uret, "symbol_id %d (%s) uret 0x%X non-zero\n", symbol_id, testUtilBarcodeName(symbol_id), uret); break; } } @@ -849,7 +953,7 @@ static void test_encode_file_empty(const testCtx *const p_ctx) { (void) testUtilRemove(filename); /* In case junk hanging around */ fstream = testUtilOpen(filename, "w+"); - assert_nonnull(fstream, "testUtilOpen(%s) failed (%d)\n", filename, ferror(fstream)); + assert_nonnull(fstream, "testUtilOpen(%s) failed (%d)\n", filename, errno); ret = fclose(fstream); assert_zero(ret, "fclose(%s) %d != 0\n", filename, ret); @@ -881,7 +985,7 @@ static void test_encode_file_too_large(const testCtx *const p_ctx) { (void) testUtilRemove(filename); /* In case junk hanging around */ fstream = testUtilOpen(filename, "w+"); - assert_nonnull(fstream, "testUtilOpen(%s) failed (%d)\n", filename, ferror(fstream)); + assert_nonnull(fstream, "testUtilOpen(%s) failed (%d)\n", filename, errno); ret = (int) fwrite(buf, 1, sizeof(buf), fstream); assert_equal(ret, sizeof(buf), "fwrite return value: %d != %d\n", ret, (int)sizeof(buf)); ret = fclose(fstream); @@ -994,7 +1098,7 @@ static void test_encode_file(const testCtx *const p_ctx) { (void) testUtilRemove(outfile); /* In case junk hanging around */ fp = testUtilOpen(filename, "w+"); - assert_nonnull(fp, "testUtilOpen(%s) failed (%d)\n", filename, ferror(fp)); + assert_nonnull(fp, "testUtilOpen(%s) failed (%d)\n", filename, errno); assert_notequal(fputs(data, fp), EOF, "fputs(%s) failed == EOF (%d)\n", data, ferror(fp)); ret = fclose(fp); assert_zero(ret, "fclose(%s) %d != 0\n", filename, ret); @@ -1073,6 +1177,7 @@ static void test_encode_print_outfile_directory(const testCtx *const p_ctx) { static void test_bad_args(const testCtx *const p_ctx) { int ret; + unsigned int uret; struct zint_symbol *symbol; char *data = "1"; char *filename = "1.png"; @@ -1096,10 +1201,10 @@ static void test_bad_args(const testCtx *const p_ctx) { assert_zero(ZBarcode_ValidID(0), "ZBarcode_ValidID(0) non-zero\n"); assert_zero(ZBarcode_ValidID(10), "ZBarcode_ValidID(10) non-zero\n"); /* Note 10 remapped to BARCODE_EANX in ZBarcode_Encode() for tbarcode compat but not counted as valid */ - ret = ZBarcode_Cap(0, ~0); - assert_zero(ret, "ZBarcode_Cap(0, ~0) ret 0x%X != 0\n", ret); - ret = ZBarcode_Cap(10, ~0); - assert_zero(ret, "ZBarcode_Cap(10, ~0) ret 0x%X != 0\n", ret); + uret = ZBarcode_Cap(0, ~0); + assert_zero(uret, "ZBarcode_Cap(0, ~0) uret 0x%X != 0\n", uret); + uret = ZBarcode_Cap(10, ~0); + assert_zero(uret, "ZBarcode_Cap(10, ~0) uret 0x%X != 0\n", uret); /* NULL symbol */ assert_equal(ZBarcode_Encode(NULL, TU(data), 1), ZINT_ERROR_INVALID_DATA, "ZBarcode_Encode(NULL, data, 1) != ZINT_ERROR_INVALID_DATA\n"); @@ -1240,6 +1345,210 @@ static void test_valid_id(const testCtx *const p_ctx) { testFinish(); } +static int test_prev_ZBarcode_BarcodeName(int symbol_id, char name[32]) { + struct item { + const char *name; + int define; + int val; + }; + static const struct item data[] = { + { "", -1, 0 }, + { "BARCODE_CODE11", BARCODE_CODE11, 1 }, + { "BARCODE_C25STANDARD", BARCODE_C25STANDARD, 2 }, + { "BARCODE_C25INTER", BARCODE_C25INTER, 3 }, + { "BARCODE_C25IATA", BARCODE_C25IATA, 4 }, + { "", -1, 5 }, + { "BARCODE_C25LOGIC", BARCODE_C25LOGIC, 6 }, + { "BARCODE_C25IND", BARCODE_C25IND, 7 }, + { "BARCODE_CODE39", BARCODE_CODE39, 8 }, + { "BARCODE_EXCODE39", BARCODE_EXCODE39, 9 }, + { "", -1, 10 }, + { "", -1, 11 }, + { "", -1, 12 }, + { "BARCODE_EANX", BARCODE_EANX, 13 }, + { "BARCODE_EANX_CHK", BARCODE_EANX_CHK, 14 }, + { "", -1, 15 }, + { "BARCODE_GS1_128", BARCODE_GS1_128, 16 }, + { "", -1, 17 }, + { "BARCODE_CODABAR", BARCODE_CODABAR, 18 }, + { "", -1, 19 }, + { "BARCODE_CODE128", BARCODE_CODE128, 20 }, + { "BARCODE_DPLEIT", BARCODE_DPLEIT, 21 }, + { "BARCODE_DPIDENT", BARCODE_DPIDENT, 22 }, + { "BARCODE_CODE16K", BARCODE_CODE16K, 23 }, + { "BARCODE_CODE49", BARCODE_CODE49, 24 }, + { "BARCODE_CODE93", BARCODE_CODE93, 25 }, + { "", -1, 26 }, + { "", -1, 27 }, + { "BARCODE_FLAT", BARCODE_FLAT, 28 }, + { "BARCODE_DBAR_OMN", BARCODE_DBAR_OMN, 29 }, + { "BARCODE_DBAR_LTD", BARCODE_DBAR_LTD, 30 }, + { "BARCODE_DBAR_EXP", BARCODE_DBAR_EXP, 31 }, + { "BARCODE_TELEPEN", BARCODE_TELEPEN, 32 }, + { "", -1, 33 }, + { "BARCODE_UPCA", BARCODE_UPCA, 34 }, + { "BARCODE_UPCA_CHK", BARCODE_UPCA_CHK, 35 }, + { "", -1, 36 }, + { "BARCODE_UPCE", BARCODE_UPCE, 37 }, + { "BARCODE_UPCE_CHK", BARCODE_UPCE_CHK, 38 }, + { "", -1, 39 }, + { "BARCODE_POSTNET", BARCODE_POSTNET, 40 }, + { "", -1, 41 }, + { "", -1, 42 }, + { "", -1, 43 }, + { "", -1, 44 }, + { "", -1, 45 }, + { "", -1, 46 }, + { "BARCODE_MSI_PLESSEY", BARCODE_MSI_PLESSEY, 47 }, + { "", -1, 48 }, + { "BARCODE_FIM", BARCODE_FIM, 49 }, + { "BARCODE_LOGMARS", BARCODE_LOGMARS, 50 }, + { "BARCODE_PHARMA", BARCODE_PHARMA, 51 }, + { "BARCODE_PZN", BARCODE_PZN, 52 }, + { "BARCODE_PHARMA_TWO", BARCODE_PHARMA_TWO, 53 }, + { "BARCODE_CEPNET", BARCODE_CEPNET, 54 }, + { "BARCODE_PDF417", BARCODE_PDF417, 55 }, + { "BARCODE_PDF417COMP", BARCODE_PDF417COMP, 56 }, + { "BARCODE_MAXICODE", BARCODE_MAXICODE, 57 }, + { "BARCODE_QRCODE", BARCODE_QRCODE, 58 }, + { "", -1, 59 }, + { "BARCODE_CODE128AB", BARCODE_CODE128AB, 60 }, + { "", -1, 61 }, + { "", -1, 62 }, + { "BARCODE_AUSPOST", BARCODE_AUSPOST, 63 }, + { "", -1, 64 }, + { "", -1, 65 }, + { "BARCODE_AUSREPLY", BARCODE_AUSREPLY, 66 }, + { "BARCODE_AUSROUTE", BARCODE_AUSROUTE, 67 }, + { "BARCODE_AUSREDIRECT", BARCODE_AUSREDIRECT, 68 }, + { "BARCODE_ISBNX", BARCODE_ISBNX, 69 }, + { "BARCODE_RM4SCC", BARCODE_RM4SCC, 70 }, + { "BARCODE_DATAMATRIX", BARCODE_DATAMATRIX, 71 }, + { "BARCODE_EAN14", BARCODE_EAN14, 72 }, + { "BARCODE_VIN", BARCODE_VIN, 73 }, + { "BARCODE_CODABLOCKF", BARCODE_CODABLOCKF, 74 }, + { "BARCODE_NVE18", BARCODE_NVE18, 75 }, + { "BARCODE_JAPANPOST", BARCODE_JAPANPOST, 76 }, + { "BARCODE_KOREAPOST", BARCODE_KOREAPOST, 77 }, + { "", -1, 78 }, + { "BARCODE_DBAR_STK", BARCODE_DBAR_STK, 79 }, + { "BARCODE_DBAR_OMNSTK", BARCODE_DBAR_OMNSTK, 80 }, + { "BARCODE_DBAR_EXPSTK", BARCODE_DBAR_EXPSTK, 81 }, + { "BARCODE_PLANET", BARCODE_PLANET, 82 }, + { "", -1, 83 }, + { "BARCODE_MICROPDF417", BARCODE_MICROPDF417, 84 }, + { "BARCODE_USPS_IMAIL", BARCODE_USPS_IMAIL, 85 }, + { "BARCODE_PLESSEY", BARCODE_PLESSEY, 86 }, + { "BARCODE_TELEPEN_NUM", BARCODE_TELEPEN_NUM, 87 }, + { "", -1, 88 }, + { "BARCODE_ITF14", BARCODE_ITF14, 89 }, + { "BARCODE_KIX", BARCODE_KIX, 90 }, + { "", -1, 91 }, + { "BARCODE_AZTEC", BARCODE_AZTEC, 92 }, + { "BARCODE_DAFT", BARCODE_DAFT, 93 }, + { "", -1, 94 }, + { "", -1, 95 }, + { "BARCODE_DPD", BARCODE_DPD, 96 }, + { "BARCODE_MICROQR", BARCODE_MICROQR, 97 }, + { "BARCODE_HIBC_128", BARCODE_HIBC_128, 98 }, + { "BARCODE_HIBC_39", BARCODE_HIBC_39, 99 }, + { "", -1, 100 }, + { "", -1, 101 }, + { "BARCODE_HIBC_DM", BARCODE_HIBC_DM, 102 }, + { "", -1, 103 }, + { "BARCODE_HIBC_QR", BARCODE_HIBC_QR, 104 }, + { "", -1, 105 }, + { "BARCODE_HIBC_PDF", BARCODE_HIBC_PDF, 106 }, + { "", -1, 107 }, + { "BARCODE_HIBC_MICPDF", BARCODE_HIBC_MICPDF, 108 }, + { "", -1, 109 }, + { "BARCODE_HIBC_BLOCKF", BARCODE_HIBC_BLOCKF, 110 }, + { "", -1, 111 }, + { "BARCODE_HIBC_AZTEC", BARCODE_HIBC_AZTEC, 112 }, + { "", -1, 113 }, + { "", -1, 114 }, + { "BARCODE_DOTCODE", BARCODE_DOTCODE, 115 }, + { "BARCODE_HANXIN", BARCODE_HANXIN, 116 }, + { "", -1, 117 }, + { "", -1, 118 }, + { "BARCODE_MAILMARK_2D", BARCODE_MAILMARK_2D, 119 }, + { "BARCODE_UPU_S10", BARCODE_UPU_S10, 120 }, + { "BARCODE_MAILMARK_4S", BARCODE_MAILMARK_4S, 121 }, + { "", -1, 122 }, + { "", -1, 123 }, + { "", -1, 124 }, + { "", -1, 125 }, + { "", -1, 126 }, + { "", -1, 127 }, + { "BARCODE_AZRUNE", BARCODE_AZRUNE, 128 }, + { "BARCODE_CODE32", BARCODE_CODE32, 129 }, + { "BARCODE_EANX_CC", BARCODE_EANX_CC, 130 }, + { "BARCODE_GS1_128_CC", BARCODE_GS1_128_CC, 131 }, + { "BARCODE_DBAR_OMN_CC", BARCODE_DBAR_OMN_CC, 132 }, + { "BARCODE_DBAR_LTD_CC", BARCODE_DBAR_LTD_CC, 133 }, + { "BARCODE_DBAR_EXP_CC", BARCODE_DBAR_EXP_CC, 134 }, + { "BARCODE_UPCA_CC", BARCODE_UPCA_CC, 135 }, + { "BARCODE_UPCE_CC", BARCODE_UPCE_CC, 136 }, + { "BARCODE_DBAR_STK_CC", BARCODE_DBAR_STK_CC, 137 }, + { "BARCODE_DBAR_OMNSTK_CC", BARCODE_DBAR_OMNSTK_CC, 138 }, + { "BARCODE_DBAR_EXPSTK_CC", BARCODE_DBAR_EXPSTK_CC, 139 }, + { "BARCODE_CHANNEL", BARCODE_CHANNEL, 140 }, + { "BARCODE_CODEONE", BARCODE_CODEONE, 141 }, + { "BARCODE_GRIDMATRIX", BARCODE_GRIDMATRIX, 142 }, + { "BARCODE_UPNQR", BARCODE_UPNQR, 143 }, + { "BARCODE_ULTRA", BARCODE_ULTRA, 144 }, + { "BARCODE_RMQR", BARCODE_RMQR, 145 }, + { "BARCODE_BC412", BARCODE_BC412, 146 }, + }; + + name[0] = '\0'; + + if (!ZBarcode_ValidID(symbol_id)) { + return 1; + } + if (!(symbol_id >= 0 && symbol_id < ARRAY_SIZE(data) && data[symbol_id].name[0])) { + return -1; /* Shouldn't happen */ + } + + /* Self-check, shouldn't happen */ + if (data[symbol_id].val != symbol_id || (data[symbol_id].define != -1 && data[symbol_id].define != symbol_id)) { + return -1; + } + + strcpy(name, data[symbol_id].name); + + return 0; +} + +static void test_barcode_name(const testCtx *const p_ctx) { + + int ret; + char name[32]; + int symbol_id; + + (void)p_ctx; + + testStart("test_barcode_name"); + + for (symbol_id = -1; symbol_id < 160; symbol_id++) { + int prev_ret; + char prev_name[32]; + ret = ZBarcode_BarcodeName(symbol_id, name); + if (ZBarcode_ValidID(symbol_id)) { + assert_equal(ret, 0, "ZBarcode_BarcodeName(%d) != 0\n", symbol_id); + assert_nonzero(*name != '\0', "ZBarcode_BarcodeName(%d) empty when ZBarcode_Valid() true\n", symbol_id); + } else { + assert_equal(ret, 1, "ZBarcode_BarcodeName(%d) != 1\n", symbol_id); + assert_zero(*name, "ZBarcode_BarcodeName(%d) non-empty when ZBarcode_Valid() false\n", symbol_id); + } + prev_ret = test_prev_ZBarcode_BarcodeName(symbol_id, prev_name); + assert_equal(ret, prev_ret, "ZBarcode_BarcodeName(%d) ret %d != prev_ret %d\n", symbol_id, ret, prev_ret); + assert_zero(strcmp(name, prev_name), "ZBarcode_BarcodeName(%d) strcmp(%s, %s) != 0\n", symbol_id, name, prev_name); + } + + testFinish(); +} + INTERNAL int error_tag_test(struct zint_symbol *symbol, int error_number, const char *error_string); static void test_error_tag(const testCtx *const p_ctx) { @@ -1826,6 +2135,7 @@ int main(int argc, char *argv[]) { { "test_encode_print_outfile_directory", test_encode_print_outfile_directory }, { "test_bad_args", test_bad_args }, { "test_valid_id", test_valid_id }, + { "test_barcode_name", test_barcode_name }, { "test_error_tag", test_error_tag }, { "test_strip_bom", test_strip_bom }, { "test_zero_outfile", test_zero_outfile }, diff --git a/backend/tests/test_qr.c b/backend/tests/test_qr.c index 9cb97360..dbeef22d 100644 --- a/backend/tests/test_qr.c +++ b/backend/tests/test_qr.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2019-2023 Robin Stuart + Copyright (C) 2019-2024 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -406,21 +406,21 @@ static void test_qr_input(const testCtx *const p_ctx) { /*126*/ { UNICODE_MODE, 16384, 4, 8 << 8, "é", 0, 16384, "7C 04 00 04 02 C3 A9 00 EC", 1, 1, "ECI-16384 B2 (no conversion)" }, /*127*/ { UNICODE_MODE, 3, 4, -1, "product:Google Pixel 4a - 128 GB of Storage - Black;price:$439.97", 0, 3, "(86) 70 34 39 70 72 6F 64 75 63 74 3A 47 6F 6F 67 6C 65 20 50 69 78 65 6C 20 34 61 20 2D", 0, 1, "ECI-3 B57 A8; BWIPP different encodation (B65)" }, /*128*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\176", 0, 0, "80 10 1F 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x817E)" }, - /*129*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\177", 0, 0, "40 28 17 F0 EC 11 EC 11 EC", 0, 1, "B2 (0x817F previously used Kanji mode, now excludes trailing 0x7F); BWIPP TODO: exclude also" }, + /*129*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\177", 0, 0, "40 28 17 F0 EC 11 EC 11 EC", 1, 1, "B2 (0x817F previously used Kanji mode, now excludes trailing 0x7F)" }, /*130*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\200", 0, 0, "80 10 20 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x8180)" }, /*131*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\237\176", 0, 0, "80 1B 5F 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x9F7E)" }, - /*132*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\237\177", 0, 0, "40 29 F7 F0 EC 11 EC 11 EC", 0, 1, "B2 (0x9F7F previously used Kanji mode, now excludes trailing 0x7F); BWIPP TODO: exclude also" }, + /*132*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (1 << 8), "\237\177", 0, 0, "40 29 F7 F0 EC 11 EC 11 EC", 1, 1, "B2 (0x9F7F previously used Kanji mode, now excludes trailing 0x7F)" }, /*133*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (5 << 8), "\340\176", 0, 0, "80 1B BF 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0xE07E)" }, - /*134*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\340\177", 0, 0, "40 2E 07 F0 EC 11 EC 11 EC", 0, 1, "B2 (0xE07F previously used Kanji mode, now excludes trailing 0x7F); BWIPP TODO: exclude also" }, + /*134*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\340\177", 0, 0, "40 2E 07 F0 EC 11 EC 11 EC", 1, 1, "B2 (0xE07F previously used Kanji mode, now excludes trailing 0x7F)" }, /*135*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (4 << 8), "\352\244", 0, 0, "80 1F 92 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0xEAA4, last valid codepoint)" }, - /*136*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\353\277", 0, 0, "80 1F FF 80 EC 11 EC 11 EC", 0, 1, "K1 (0xEBBF undefined in Shift JIS but not checked and uses Kanji mode); BWIPP TODO: exclude also" }, + /*136*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (6 << 8), "\353\277", 0, 0, "80 1F FF 80 EC 11 EC 11 EC", 1, 1, "K1 (0xEBBF undefined in Shift JIS but not checked and uses Kanji mode)" }, /*137*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\353\300", 0, 0, "40 2E BC 00 EC 11 EC 11 EC", 1, 1, "B2 (0xEBC0 was always excluded)" }, /*138*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\300", 0, 0, "80 10 40 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x81C0)" }, /*139*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (2 << 8), "\201\374", 0, 0, "80 10 5E 00 EC 11 EC 11 EC", 1, 1, "K1 (Shift JIS 0x81FC)" }, - /*140*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\375", 0, 0, "40 28 1F D0 EC 11 EC 11 EC", 0, 1, "B2 (0x81FD previously used Kanji mode, now excludes trailing 0xFD); BWIPP TODO: exclude also" }, - /*141*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\376", 0, 0, "40 28 1F E0 EC 11 EC 11 EC", 0, 1, "B2 (0x81FE previously used Kanji mode, now excludes trailing 0xFE); BWIPP TODO: exclude also" }, - /*142*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\377", 0, 0, "40 28 1F F0 EC 11 EC 11 EC", 0, 1, "B2 (0x81FF previously used Kanji mode, now excludes trailing 0xFF); BWIPP TODO: exclude also" }, - /*143*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE, "\201\377", 0, 0, "40 28 1F F0 EC 11 EC 11 EC", 0, 1, "B2 (0x81FF previously used Kanji mode, now excludes trailing 0xFF); BWIPP TODO: exclude also" }, + /*140*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (8 << 8), "\201\375", 0, 0, "40 28 1F D0 EC 11 EC 11 EC", 1, 1, "B2 (0x81FD previously used Kanji mode, now excludes trailing 0xFD)" }, + /*141*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (4 << 8), "\201\376", 0, 0, "40 28 1F E0 EC 11 EC 11 EC", 1, 1, "B2 (0x81FE previously used Kanji mode, now excludes trailing 0xFE)" }, + /*142*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (6 << 8), "\201\377", 0, 0, "40 28 1F F0 EC 11 EC 11 EC", 1, 1, "B2 (0x81FF previously used Kanji mode, now excludes trailing 0xFF)" }, + /*143*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (6 << 8), "\201\377", 0, 0, "40 28 1F F0 EC 11 EC 11 EC", 1, 1, "B2 (0x81FF previously used Kanji mode, now excludes trailing 0xFF)" }, /*144*/ { DATA_MODE, 0, 4, ZINT_FULL_MULTIBYTE | (7 << 8), "\201\255", 0, 0, "80 10 36 80 EC 11 EC 11 EC", 1, 1, "K1 (0x81AD undefined in Shift JIS but not checked and uses Kanji mode)" }, }; int data_size = ARRAY_SIZE(data); @@ -4251,6 +4251,29 @@ static void test_qr_encode(const testCtx *const p_ctx) { "100000100100010011101" "111111100011110001100" }, + /*128*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, 1 << 8, { 0, 0, "" }, "202404110011看看16", -1, ZINT_WARN_NONCOMPLIANT, 21, 21, 1, "Shift-JIS range (BWIPP via bwip-js issue #335)", + "111111100000101111111" + "100000101111101000001" + "101110100111001011101" + "101110100100001011101" + "101110101110101011101" + "100000100100101000001" + "111111101010101111111" + "000000000111100000000" + "101010100001000010010" + "110111010011011110011" + "000000111000101100000" + "010100000001011100010" + "111100101000100001110" + "000000001101000101010" + "111111100110010010101" + "100000100001000100001" + "101110101010001010001" + "101110100011000110110" + "101110101100111100001" + "100000100011010111000" + "111111101110111010101" + }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index d2ba6b4f..a30e206a 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.c @@ -3263,36 +3263,36 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int /* Hack in various adjustments */ if (symbology == BARCODE_DBAR_OMN || symbology == BARCODE_DBAR_LTD || symbology == BARCODE_DBAR_EXP) { /* Begin with space */ - char adj[5] = " -sbs"; - memmove(cmd + GS_INITIAL_LEN + sizeof(adj), cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); - memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj)); + char adj[] = " -sbs"; + memmove(cmd + GS_INITIAL_LEN + sizeof(adj) - 1, cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); + memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj) - 1); } if (symbology == BARCODE_CODE11 || symbology == BARCODE_CODE39 || symbology == BARCODE_EXCODE39 || symbology == BARCODE_CODABAR || symbology == BARCODE_PHARMA || symbology == BARCODE_PZN || symbology == BARCODE_CODE32 || symbology == BARCODE_VIN) { /* Ratio 3 width bar/space -> 2 width */ - char adj[8] = " -sr=0.6"; - memmove(cmd + GS_INITIAL_LEN + sizeof(adj), cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); - memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj)); + char adj[] = " -sr=0.6"; + memmove(cmd + GS_INITIAL_LEN + sizeof(adj) - 1, cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); + memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj) - 1); } if (symbology == BARCODE_C25INTER || symbology == BARCODE_DPLEIT || symbology == BARCODE_DPIDENT || symbology == BARCODE_ITF14) { /* Ratio 2 width bar/space -> 3 width */ - char adj[8] = " -sr=1.3"; - memmove(cmd + GS_INITIAL_LEN + sizeof(adj), cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); - memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj)); + char adj[] = " -sr=1.3"; + memmove(cmd + GS_INITIAL_LEN + sizeof(adj) - 1, cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); + memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj) - 1); } if (symbology == BARCODE_FIM) { /* Ratio 2.25 width bar/space -> 1 width */ - char adj[10] = " -sr=0.444"; - memmove(cmd + GS_INITIAL_LEN + sizeof(adj), cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); - memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj)); + char adj[] = " -sr=0.444"; + memmove(cmd + GS_INITIAL_LEN + sizeof(adj) - 1, cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); + memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj) - 1); } if (symbology == BARCODE_PLESSEY) { /* Ceiling ratio 3/4/5 width bar/space -> 2 width then round ratio 2 width bar/space -> 3 width */ - char adj[16] = " -sc=0.4 -sr=1.3"; - memmove(cmd + GS_INITIAL_LEN + sizeof(adj), cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); - memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj)); + char adj[] = " -sc=0.4 -sr=1.3"; + memmove(cmd + GS_INITIAL_LEN + sizeof(adj) - 1, cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); + memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj) - 1); } if (symbology == BARCODE_CODE11 || symbology == BARCODE_CODE39 || symbology == BARCODE_EXCODE39 || symbology == BARCODE_HIBC_39 || symbology == BARCODE_LOGMARS || symbology == BARCODE_PHARMA @@ -3300,28 +3300,28 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int || symbology == BARCODE_C25INTER || symbology == BARCODE_DPLEIT || symbology == BARCODE_DPIDENT || symbology == BARCODE_ITF14 || symbology == BARCODE_PHARMA_TWO) { /* End sbs loop on bar */ - char adj[6] = " -selb"; - memmove(cmd + GS_INITIAL_LEN + sizeof(adj), cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); - memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj)); + char adj[] = " -selb"; + memmove(cmd + GS_INITIAL_LEN + sizeof(adj) - 1, cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); + memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj) - 1); } if (symbology == BARCODE_C25STANDARD) { /* Zint uses 4X start/stop wides while BWIPP uses 3X - convert */ - char adj[91] = " -sp='i 0 eq i limit 4 sub eq or sbs i get 3 eq and { (1111) print true } { false } ifelse'"; - memmove(cmd + GS_INITIAL_LEN + sizeof(adj), cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); - memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj)); + char adj[] = " -sp='i 0 eq i limit 4 sub eq or sbs i get 3 eq and { (1111) print true } { false } ifelse'"; + memmove(cmd + GS_INITIAL_LEN + sizeof(adj) - 1, cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); + memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj) - 1); } if (symbology == BARCODE_POSTNET || symbology == BARCODE_PLANET || symbology == BARCODE_RM4SCC || symbology == BARCODE_JAPANPOST || symbology == BARCODE_KIX || symbology == BARCODE_DAFT || symbology == BARCODE_USPS_IMAIL || symbology == BARCODE_AUSPOST || symbology == BARCODE_PHARMA_TWO) { /* Emulate rows with BWIPP heights. */ - char adj[5] = " -shs"; - memmove(cmd + GS_INITIAL_LEN + sizeof(adj), cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); - memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj)); + char adj[] = " -shs"; + memmove(cmd + GS_INITIAL_LEN + sizeof(adj) - 1, cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); + memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj) - 1); } if (symbology == BARCODE_CODE16K || symbology == BARCODE_CODE49) { - char adj[15] = " -sxs=10 -sxe=1"; /* Strip first 10 and last zero */ - memmove(cmd + GS_INITIAL_LEN + sizeof(adj), cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); - memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj)); + char adj[] = " -sxs=10 -sxe=1"; /* Strip first 10 and last zero */ + memmove(cmd + GS_INITIAL_LEN + sizeof(adj) - 1, cmd + GS_INITIAL_LEN, strlen(cmd) + 1 - GS_INITIAL_LEN); + memcpy(cmd + GS_INITIAL_LEN, adj, sizeof(adj) - 1); } if (symbol->debug & ZINT_DEBUG_TEST_PRINT) { diff --git a/backend/tests/testcommon.h b/backend/tests/testcommon.h index 81515080..59d6d97c 100644 --- a/backend/tests/testcommon.h +++ b/backend/tests/testcommon.h @@ -57,10 +57,8 @@ extern "C" { #define testutil_pclose(stream) _pclose(stream) #else #include -# if defined(ZINT_IS_C89) || defined(ZINT_IS_C99) - extern FILE *popen(const char *command, const char *type); - extern int pclose(FILE *stream); -# endif +extern FILE *popen(const char *command, const char *type); +extern int pclose(FILE *stream); #define testutil_popen(command, mode) popen(command, mode) #define testutil_pclose(stream) pclose(stream) #endif @@ -70,6 +68,7 @@ extern "C" { # pragma GCC diagnostic ignored "-Woverlength-strings" #elif defined(_MSC_VER) # pragma warning(disable: 4305) /* truncation from 'double' to 'float' */ +# pragma warning(disable: 4702) /* unreachable code */ #endif extern int assertionFailed; diff --git a/backend/tests/tools/bwipp_dump.ps.tar.xz b/backend/tests/tools/bwipp_dump.ps.tar.xz index c5b0a3006f08c145f28340a1c6e1539d865f0f9e..2b6babb910b329b027dbe3560e0b80889595dd5a 100644 GIT binary patch literal 135208 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 G1X)^*?1c3I literal 134464 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,ARbqT;xWinZ=Xu_Yb-xyeb>3rI?oD$P z9P1e_GIzwOQzZXvg3E`o^Q_!C-Ew3v04+e$zXm`c61gJ_YkyifmqhwND^y-dKQrtb z$qd2O(tINBzkyKCiZ6_HC4cG)@l5FA$iwQZx%Af)cule zC`|ZBnrX;QIxF|3tZtH^MuXAuNqR!BF|t9q1v$E{j&mB|?5+|QWAQEEyCD!?j{9xa zd*fZ(uO-8jBkz*VHH%)JS51=R@AZ(=*TBdW>UVKbY*>*%b0|1C0WZZb(UluUu0KqW ze6K1q56Yhk`d|;OZc*`0?ZuO(&GAM`3uUI-y~LFpv5HS`t(<~g3YOuSZXy5y z`)rl#J1lO|;}VY`ofHOu1T$FliE4uwYdCnrwd3%eiF+)r7~(<<*1N zGt}mk!^d{hcrAytKemLo6>^qwplbNOm*4ZK-qYK+Lr;%F+g9g8)P~E6`75>j$QbWZ zIAuOPrU{Oxv>8x1s)t}-ARle?x$$dpRWTdrp(I%^*geJPGCN}JE(=a%o{-AjN|{NbL|gZJa6wgCD|)rM0S#&cc5}`8c5j zjUPdc04mgl+*_h zV!HGn8@v$+)RPTjQ<5-(-fU?S_E)rrFGW@lU`%wS%gk&3*J|KDCh<|dOH>h(>`ck2 z1gc>#{Ge-cXr}0a+wL@UF3~v*S3cdFW?RR9nUD&mh?b_3wk^@snQ@da5P$Y3wu|6X z3b)wJO62_(cC971JI|ucH`>Q!7uquk|VKMLXY{|d%2cBxWx8)pWc)m^^w{Y zg^&dPCTpbYbX1c+9ym2VhGskDj$&mXu2d(?YioC@FqN9ZLXsNyj1{}>v?NP{)Fmh6 z@MmPmXUh#Q+z7H#5F!>dxTR+9_=x`C*LOQ1c&!W?+-4R#xaeG#tc^Pl2;R#^A$H0R zlJU)ilmy+E(IM0%aWI*+=^~EDHF!3VA-~n}tz{^J$4h5X?t=9)G?DO&kb6J0;p3gZ zLPx`r9=vjk&T@g@nf zAKIy^Y-T3Z=9b2WqYAaBHPrn9ZYQBul@R|3+t(g z#0x+6lkC!%GPsu(@Od2c;C7H9n)9wat%*ng%`PrDlN`lWL-%LQUMqMO zKGtJHx-`0#?KDmh0yTWaxKu1}rcnV!`6O&}-h9WRe30J`-46T~G9bDTc_L!OMwf#b zuV?+=QV46LOgI&$mQ_}Bsr?R&6w%7AG)PPCeUJSs?3cHm=Rwm3Ls>=)wqdqgK#gf& z6H+){SLh1ne~;P1;xwq*PUO?bedxn_dD{kIug(!jRVg|~Jeh|om8W*6xKdX(7K}v1|2M}E-B~BC%!=7d~`mf)2=zY;~|Q9 zMj~SYno95yx~&yu!S^_6{PpskX#PL@S79ht;#tZI(w?>HeMM_eGfP})9{F!J?VSWY zBwekaecn-yaLC3eGNf|UsW|$r!WpQ5&O!8)ZV~jq_O?ZR>z#hT5aUjQz>O1*Q$|Xc zCh}*kcAHIjUwvI9oIs;i=QDMkkh%*P`4|0YfxT^nK_=)*0ehH`i^jbcJCaE{RK8*F z2k}~6Dh5meRwB%=pJpRh)nsWdFwWLke9=dO5dwlS>Nd>8oZml{achq$EbOXBX|kVm zb%$721VbJTBZ)oGdC!@-DUCU%j!^hXBY^CQnwY1W(qvmCZOFa!evZF-Z?9M}MWyp&g36>-0!icq;T}4OHZCYl*HwRpm z&pb07Db{(J)P#pcrA2y2dAwVtM_^{BvQaW5N#{oJB27mxkJ3zJKIu658qBwn$DfDL z<=OFtA-$=}YbRv6TQWOXGqKh!tq{rvd56TlZ_oUj7jtY2X!-_<&PPt+WCMx8XNj@+ zi~z$tl>bL$FwmVIo;1+1$)lMqQ`_R8gP!u$Tc6Nv88M|TESXbZX_5#<_BpJhwi zqn5ZHl~oN-d_?^PXe4tn)i%J6!js0@4g(bys|SU_gy)v;k71IiIm#Ah(P#Z@X=@qt zI_TWN&mdS{(_ALET|fmVvK#o(2LF^WdwQQPA|glT-`Zix?sJU)W~RqJ8juE&8Pcq9 z{h~gaEobhT3QQ^ub(mHF5Fb3nQxGyBD9*T|wAWorO{AX1R~s6=Xgp3^n}5So7Rla} z+~O@uhhiY8pMm2Ykyz56Mo;l4YTS1nqQ9`L6dT8RfWbNuI4!bqpo&fPaG3o8&;hJ7G=uX9G42 z(!DIhp#9UWQKS`R2BCB1Gex|>Gqdh;tX2ap_WuKaRf;QpYZuz8VtJ^(qTx(> z38~hRo@(8Bdk*37TY1CPJOA*KNK&Z;ex{Zb471bwKj5aqz7-d?m<45^up8M)4as#yT;Jo8X>2u@2|2}YO` z?ctLrPw9rW0A@*iVZ~Fs`?2HV+WYNJt8~dA{A0ZAIVK&1`A{=T3u{NL}vpy+zu403NcKrQ0+JP8a>J($?Dj$G%w9E=j#RD zD-hn)qOp(VjafSijM+!d6heJo;M^$;!300*g8!B9B^PZulT{z#n0|uedrST#zuEZU zE$dQ$r&JdSI6Fd3&#v9^3b&FC{P--*$IE#O7#E6H>wOYDqJ%^S41P3mwrv|jTfnY+7kO8+7ZTD#37Ne4WgV1N#) z>Kc5+2(>htUg9(1{LX!=0G6>qKSyfYmusom4XcrRaiR3g649CpKP92hET5>HtXQ5D zVRN3dr@>2{j1v9@RP#>hH?g+r{*dvPn+RBz(H|Fky*7neN{gZ*g<^Pino+K~i*Fvp z2BPk3FWj*^^~`&Fbl%-)oGgvSaOIu=E^0$1>k1Zd9?fc;xWjXv8_ST#tQnW>BHRpt zNMpQpq_RQ_H*=9cRH%h_Wx>Kb=onLR)k3?o;k&LxT#06fd?}ev@|A6^ z372jAIpSI zE}oG#-r6uJ`5{MTWDSo(CDj_@s{6GN5R4fk3!Ff5LUcnm6SiVmQ2v?0P&`$#8$qkP z57a<^3S`W9aANOF04O-vh^_%D!rWZW1V(_yh4~sNF0oC(VV%R%QHWxtE|hm zl^+Umg+$BBVBsK!`H60ABIBJ{iBQawBnHFk76x&uUs0Ci?@zZl5Tmf(X2wP46I>cU z0g>0WWF`~d_gqee_dKWlX%!fVLuMsbPNVHN+@U5a#xV%wZtYrHX&Y zFP(YI2Uuty*ONm~@=D7^>Bgl$aEHQuyUV$$Bl6htkvD_hVecOXTyi}Ljard&Wp+=) zJF;y~G23l_5#)xx`_^~i%wrL7YOOgdi(X@>HRO9sh~>5fN)+DP$pX;gFC1mwgvd1- z@@KzgFZBC?kC|az-#-1Ly9zyN8#+9*jO#ze^Jur7pXX>oQdU|{BVdX05eh|hz{5~@ z1sT3Z7SEbRfE4b5s6lrum|8`!hmwQt#-{Ay9;swy&#=JPO^kOl4cjK@42ay*NYW2u(J(8fg;e9zf21Y}CBkIZb{eTIj>aY8X|AEh-O` z@-W=C9bwlf2z-iD!TsfN2oA&Fz&2s8{{f7YCc_NRw7lO4E!e30Gr~N4wRI<^UfoPr zn!Utueg#)UgHinq?_VWnu`$Zf)KPs_>k4agwlH0Kv`>bFY7H?YzZTG@=`2^Ll*$*t z)~$-e^MO~eG=&CVu7{62FjBDFMsU5Ba=XHVA`xuTev66zzkcw3&dp> z|07^UYH527Jf@VnS9J>|e#``#F`!4t?9r=UB9StRYO+^&Zpj;q4OZw|g`_U{%^}WB z1R&?p@*+Rv{I?Sei zh&YRDZAy1%^N!!>3d1Pw-;wqxL+XQdEDDowbig7TtvOd6R#H)s?I#JS-t>imSK(`- zu|%iyArT?ukZ#Nj2iTJcl5noiMv#<^`!{t;l46$(XF~Ukl^;yg#1YLpJ^*)Jkv;w= zj@eb!{b&<7wf`boSL!|6(w2fj>!a5Z+f-r6rUN#t&UwwVb>E_QExEOgW0}5gNGS*2 z-|#cZN!kCBc&PoNTQe(dB^`*f;z2x7hC0hLKH9e>)bd~okj$K*C9Xp=y#yGIp15_S za-P%Xgnm3dwQ^=aQ77KQ<8YXtL4y7v|K=8cHtRDz4K2HyfiNACkZ2>xQS zLVUzGd`zjp_{ZPK$OmyK4TFVE;m5_%#P%FeFhRMM#DzV}j#bQyDskBDjJ0gkIu(JY z4e^jjUmJFoE{6zj2C|g}Ck(_UA|1dDQo-q9Od#?^P@wnp&)}7<-np-yY`)Q#DcX6u z!b8V?f$GxI>N7t~1QfJPD1mhsl`iF8+W}83`K>#oMX0gS+L_>?c33N}8FlF%O6G}a z7zC1Ob}bIQ4+PhRV8V+3kHZ@+Wo+2sV%k8-42Ou_O_QS!Gpd$LQT7vqP28&UXBD2) z7(v`E)SRj$v9rX{k~^nN4-06CwH-vFNO&|89bIFBqUy!L@~e-8^FF&fkjU z&6t_UOXuf;?mz~QE=3rOOzV~y1DC{D;<~XlN^-IN=UDlozMBb}3Ic$sbe{Kt>ER82fIKAEbG1i%Q!5paUHCF&J zpCPa!YM<7pK(zyU9E)%bLhfGrcjFx{{g584G8gXf646SJwm%I9)BH9@+8%dCx|{Yc7ff&ArVmAZAily6pAK094RPC+cr6sDNAXcDE%5@nLKlf2Vmk$YGNi6S&2ne8Bz!foULz5mXqoGKCkHi+olH~2c^7IJy{)(t9u&=jkAj6!s9r! zx4M-nfF&%gs<}O%YZ7fEvX9sOttHvBD6_eaUK1Uag2~RTh_IdlqK%?qF>y5jvfHJ_ z-=@mk`GT8HkDePuJ`5J}wgmxD=kk4pJyPQ*GJVnGnpG)LJQg9cd|`2FRAaB!kosvs zqOErx;%!8WO*!IpxU9S@$z_nj2dQsA#_a`nVG(ecE}1G}qfan|YsoutCC{IoH*DCi z!R|TNKMw-T!2W>f7x+8IiKiFTYd#TC-T8OuFgPj}Qf!sxQ|mR%*?I4sN-yR6&8c(A z^%-Phw?XS2SNV(hIXm_68FRL^6nV=xT4hrWfd~(&a09VcK~UI*jiA8l7(aHV60tYt zI6F1rMz?=!{MSWwxjur6VBm`e!k-CSCdwhI0KLw5tSI=6iaLt{$96nNmZt~!enQ|6 z{h4-Jo~Xo^SBMnnp4NjrvB730A7`#fd6@gW3uY~P8T*jpA66zRFxx{tZC(?{6--Tg zE@?>nH;=p9`*3_}=@{LW+g%@pfoMns3Ah8Nsf|JdCx{)_huuB^j*#VJ?&1puZedrF zwtB2%_pmgMkMH!d_$LGp4hJD{m-}a#cW~fb%L|6@x2J+62Rt7wK_L`MH~ct+nJl~$ z0X(C$gPBMdg#-$~4;=&R4DmM<<^oNH_yxhdu0fi|8&Y!o#3<$IDYy-1Onpy)mF$&) z=)5*Fp6&uUz-~p3^(}^w_FXHCu6A(PG~PK(-zZ-mUFT3izt;;_V#x;m3u5N>_m?J+K4>3+a9c}3=^>A% zQhevR^YLkSy0ZWXREOp>1c;_+gHQm>%|cG^0Th@{d>kl4gy<{q-MO*It{~@%C4+B; zh%zn39LerGnm5=ICRw|Kc$woL8%u$YZC?VAU$w1toez#pd{wr3(i&L32vlqt7aif} z=L2CM9clN#Sde3v>JG$&`a$l?N2)iVo9({rffifH;i+nbpGM4&G&xr*OstdvwB1+K=|lVPDCAJBCZaDLxXquGuo=ME~Snw2EV; zG^;5_oA5ObiO$L#gEBBn)Q~RdtjEz?9S%|yV(xbZ&v~jGKfd}z4J&HxE!{~&2x=-> zL|j7)o7rmxW_}uqF_v!f1LPo4iQ~OjimFmr6<4b8Oca*Zw;A=lxJ5G77%X*3K{$$ zw&w(aH|zSsFv^of##2m-PVBN>$&G+eO2r&(R8SxYaz_MGI@lgOU~HVd1p0M9(p`y~ z&ycX;qMv3%;CMFEbb}J-QgLcj7`=AqN2 z91BORDW3%+5smPXg?i%d49T6LBe~zdpKFOFW2g~(+B(TG1sS4lSw?fN$L8S@CF~!U zoO;X{tix?sj!Y7Rphs5DQmmfN0Xa+y(pbK zE|k^9ND$@8$6p^ES~TjDY8o>16&#bPRBnHczpaMKD+{d4qg?U`0&Y}Oq=Y$3uk$XB zL0vLvy-ner5yD6$mHPB=b&^S##JUym0jw49RR~-di8|wRF`P0;tezc*tFOMMKC7p2 ztV^ROBJDCZ4Xx%$-jPtxu@=zwnqPHX6cyRuohBrk^B(I?Rv)(ys1yA;!$|HpMHqYZ22XBeloBTq zly-LKNsuQcq5r0$P|`r;WzbiXzdE!&)hjfc*sdcxU$24i1C?nMoQYR(N{sP)M+L1E zE#h!mBDSJmfypCnt9wd~6*Jv zZ){sz%hfb|#66Rb3aE`p4_ZaJu7&VB4o^kUyMMD1c|vih!gpeL(&Gu()D=XNeabInfbfAS_T55>}`Lte3ST_O}3U zMM!F}M0EwwT*xklxeiy0V@HC_teBP_Jpr&1Fx(O-#Aqp>;qK2JH99-z!tce38mIzr zr}>q+y~s8gpi2bwMe<%8W?RWR8(XPRSqexHOe=ObB*e{P+T17XDx;^E02Uu}5(H)% z^ruB8Kwx=4Sn>MU!rU?eG4>EQcChf7HPp^`>^s4TjidZHM?_RU%Filcs@Ey$+?j!j zicPcGqr)RtR z7r)irT)!p`vGcvdcQa_~AxUmZlw&$}|7XdzT!r3<_>xfr+|I>f-^@LtH%0N9l zdM+ZR&R$-$>N5k60{iZvmF;i(*ifkbe;dB5qKl@@J7=_ki%VSyX6yi2tL zh2G=Q(Dv#b*u*(%N>(4nlC_*6=yrWdnoHJgXx#c@(8=K4 zNe-!1A}Sol@#M3+TIYw^tlZ-z3;?(y(ls*|Gx-s*p^|n-rIDO~wQ)kzc-S<{4mqRM%$!LR&qi&SVSl!9=eDE)5Y^OqDjcXspg93%o~yY zGaH`J8|TO$=^mk%Y!$)) zC#SFtvFrkn!p4`0VJA&^{;g{LhMBcL(cq+`a1&}{`hXg1Qm5 zmMg2n;ybGE2N9$uB@_u`tL1mo0vDSXAMa83(FkgF^p%f5wG>wvzU)0t4wL7&!>qA) z!TC+o-$06LGJdCxQ6uWW+fn6k~%lf}=kj*R)#NWo=!)Ii7K-Vu}Eiub#BxjY) zmllMWXAW0!uUyy9G8uoUEl)|kizxp@cE*!6L;aNU+&;1ZM`(WC6bPmb#jIB!oVHa{ znh87T3Ytt=gd3@};3C4KL=H8oo&_zUF9rS}c}B!bOA(*N{jrlJ`qFKN1ycvir9Yly zycgpzmI~PAB%Af_Jq(u+h*oDFJ%J6i7?YQ}QXW;N+^9h9yswVgzxfU$7bF7q&ZB8@ zbKUuzJK1p)L%T1HF0OA8l#d$0yoh6P87+zYY zFLSK}3#6>kaOhOn<6x0c^>RJ74WP%+LpP~D98sQ3hXOS4v9C$nw*k^n!hSqQhV$y@ z?dBcma%(urDD0gWF1SAgdL9eqU>J_51NXIM{5JDy>osa@Lpah>v#=$c9Ea8Z3$KT@ zJh(IURYN$}1EdR9q*x+*!l`a=R*|3+C&S!YeY_0`Fo_g;8lRnPzP2>g8#r4~Y80mn z>}tv+=stl5O2-yje|2+VLr`Em>APCn$LaqT9T|;j{W%r@g3Ag6*qFd6bMZHSnLP=< zLU@v0)CCVuI$Buax~ctg4kd}L*Mj%j6{!|d#mQFx@w;O97+{9J&hEg z?yyPUT4>;(R%!&|#?-$A%6GJP<+6ft(Np3rdb`E-YtL-^+A!FFe2_fkf&8=LultY7 zEHxK{qADl(v8uum8Z#=tjLG;{RF^Zo>M&X0Z7X3f(e7or;$@O;_g~Co5!M+$Advww z%p&&@QKL?^7RAF%&{SeE`$R0xlR{Hqx5?>1JGfXQt;PKPUv0)G$geP_PEQ1N@I)d0 z$m@Fz^&Sxynyzz(1|tx!)i&gPoxuRGB$l0KR@Opsxs!2kX&2pRe88YUVHnNug>4AP zvP=BdSl8ooezPsYoj@t&lV@t1ipf$3)h;O-B5%%lU;yNI;f~<=X@J_qaOyZhPAcl8 zNT!9FV=a&!2B!5RLCA``Zh)&P4wEGGFT+|Xp;?{&+#v$?C3T(Avn zB-zGVzj0;2*%qcA?l3e`Wr*8`A5NfKr~yR^^!6(R6@t9gpQy_|&jev;ZUyf^=+$oo z(-#t0$G2b3qXovNVo5)B#LiCPOTojS32t~deoGDhE4*1NvEC!FslvkXoVW0f&98io zU8!(Cl?%(l+r(6^yO0c`CiUZu$7qGeV?|aI;B!4I72V*t^Q1;ccW)vv6+3xIrxDnN zO^;fpiW)Qve-qUipBXe8Mh9veW0Ii&fGQ_PApE19^12X|c-DT)CNcPw))nK$EMqef z+f&lYBsgoZGcKgc0gwJl8{_h|Z;HaAH7DUHJ;h0v#WUc8%BTywHV?%FuW-m3taS+B zyv$im+g6{;Yt688Oqy5@b1?R;SD-gWVkkL z*=im+qUr#IN?rAB2ddI2*I&>il|{v?fJ(R@IjSlnTg-G#UPh~l#SWe z!sNmyY1b9t%{w0qCFjyV(ddr)YtH zxM(rP=u+Sd2&SC(_bSjA5wUah0t7~R?3X<6+s}3`ld9)<*ao!W)>E?1OQGpuLj*w= z)*ql<6N_Fk8MxnR%Gt@-=*$~=GQBzO{a;sB!Q%=QCHYxL!A?I5bC#^iwcw6|+P@QP z9>YD??X4fQYqt~Z=8yZF?~78g4@Kdx!J??3d% zUlH`Qg(%&Qyx+sN%HS?JuDKefNJT9kY}g{q6@1AE3=xOI{vk){gZ+iOr2`I)n<>TG zCCBb?NA@3K=OAl6?AM0FQ!n-1ziKKc{+Gvw$x<;*>_LVfe{iL28=K+0GRe_$h78MKY#qO3DHB-?k^0HSpA_yxnl`Amj*0PnwTQJUAJ3JfJ@aBt-8bnSx?}T7u zTT}D87s2|1*g5njZDH@*6v-?h`&Et`o@Zf-IEOCGzFj?3rG5wDYQ6ZQ0RL3;kfdQs zo8WFdyAhHb@)ypkC*Itn(l?OeH#irJ=F+?Hdzs^3+rkok{|akJ^1?j0&N{Q7^^ECd zL(bVrDi~{A?mdY<0Cy`}!qXW{2uctXkjf0=CFS^soD=lM3KKVYqX%4(cF#3kzMbu3 z9Gf*S^=}{cMi5+mQ8fHp4^238mlRM=8g|gR#@5G{%MFyKFXQ9p;)57QS9N@M)^v4j zw8bmX(lv%I(~Rn)hp&E4#O=xE0tnaz4>j5M3wzl zJ}h@xkVQL%$=A|jwd85N8+a~nA8{Q7!cRXK4UzV*yOAx-|4}*7nhYddY3K`2I7$~u z4K72T-9li`r%%W`yyG$4cVf7q%%ifQny0vRm7!0 zOF)wQo?t?=eE2W#QMqlg1tcKFkaD&0(UrGZ^i}!?j0sNF{4~_7=IOO1b*St(BU*YL zH^C9Uq!68nqm6Ii7DhgY;d@N&ViTF#U)V1|ayZqvRSdIO=Z&yNw5t$&ey%zI-a^VY` z3RLEqoy;~LJK@8$FAqwS(!2j8r0Bb>F;k^x{BW{(>N#wW?BYO8DZWu5%q4Dx3-@>d z6Zx-7<7LE`t6_rb?F(dcAyU)V3Llq^KFw<*;%Oyp*%ziwL|Z<&0>ks~oVjGqK^teK zB~qb+Kca}CLT{%1uwPgVLhtqoIQWpp{&2x#M|7dSPSa}I)<{td|2u*#l2*NBEinR%KvXxFTcNKRmZ2EuW zJx%OQL}d@^Fn+0$UKo#St>%dyXV*kiBG9m^rqFzYD)-)E7%1 z`o0jJpz4t{29;@qS$9C~3rCG4i)bsaJMCkS0`fzVZN|VyB#25#S)o)~S)|2z+QANO z<*E}RmR0kNkJiumIp`4JeL4TNEFLmOwv z``p3B1zD4L+n{Ya%+HptUo3dQ1^MB?WYT5Tksj$D_VZQXi|2{-*se8hw{tLpwA?Bp zV9)3M<(9wo6%E0hJa|&H?g9p(#zN8;dXLwk2Ky5FB>q!7Ztc_GmFI?Xcdz^9}Qmh{kZv?`ZG)@H4agems0n5A?Y8isj)U=?2IvuXIypr|n5 zxQj2iGpuu9x)i`!rb#ICJ+iqM8qlcUefoxt*3AirRGJwJh&_&?y~aCMzcp7`$_~mp zNFl5E)MvAW5te=Fo{Z<;v;5gT>E&kaq^M-)&3Ix z=FqhE_A5}+afA7Kv4H)go)WP`jV|r^z*}CI(#YS!0B5{B;HC3J6J*PQw0=U=tU{#A^w_Wg8kr zVI2?EoQYdSeFZWBTT$(eAH867o|Meg(Bfi?-MvD!jo!7L7G3q3V*hjQ(;qhd8_?5#+8m(?s)v%wd%M@1QzJ%T_+`Bj(9AHYp-MAHxkQNyUilzn&fKbc z5pmB9drsR)%q#gbHN7Md%#k04ZTEu^^C{F{p*%6)tGAsJS8z4xHZn*4zVcdyov|5! zdR?2=RBSCxrhJDLm`GP=9lEQJSa_c7?%~2&(*kz4AI?~#uYv<)AJ}^NKzzd4T%N@l zhZ|fRlQZuGo_|RDTX;ivpcTkFVg0oJ2*luwoo z+5Nin{CaAD2IQg#*;UB7p{H}*u#zrfLc4zv)I1S^b@P(~Hc!DUa@fu5;lPeHXCc(2 z=t?T!F_gdLIyms9);vhC&)!vBn;yF-`>2+9(tD%TY!araUkCfbwA)7j@A^^E!&Uav zLg`xQw+>&LOgO~hDO+Rv;T&E3FNiTp#Cbi*No(FGEO{eQ)0~3A_OhLg$g%HfR_#v= zT~7H=sZ6}s5a#HDXif};q*Jtp-0B)XP7}9)jpiwEhO%`aIzX4^<-H(jk`d0Juy5^t zo}@M#xwGZzAn_-u9sF*9m{m(sLPKfrvd9C;D>Qmy#+sV$#{ zhc4TJ6Wv~mMI08Bzg-#);x2L9tVQjfY6#6{jb61))V0AlNk2jB{1fkAwo8OveAlVfm%Hso5D zsv2w##DKNCER7EO1PYHr7z|;gun6sMvWiu*g2Y3o612JyI4&Ape4|qzenma($SU)f zLkarC)&2QA>W1G-91Vj5t=m|`)M znVvX!$%dbL_n%}ZCH^-)_d48n5_)z zqA?RLPWST|5?T}Z`Zu`K2D2$I^Ej@&Wf#95P$z{pPtEd6aCklMgrSG(sylv=DVyt) zKGvxQi9o9(sTNiuJbHcMZpn5M=6@%}Dhncb3~3wL?TCby5IJK(xPX^uSUh?TQIjL9`79=;FL2srMik zC9<#QRSAoBY$UezzP#|6f(#je@bxD_T6qA-#0VSsTccD6d)pGYQfV$2*xLV;A4skl zzl!AhgopGbkICAy8LvH>n%w8?0{}|CXZ&U)T-=~Dp6e<9(ErYEyZx+NMuk~p>gAFa z`g8BB1Pu3;S(CCHYHiJ+hxhkHWR(^qKSWF)U%p^ZVE?U=Sx}0iR~ohf*vw}$YqU7x z>{+a`VNS2$!sXs_fSA^e?;8$?r(<()s|mm>g0(&;0bozzgWi@ks-0P;L)oRRS~wo; zMQnr)hvrq%wrR;9bt0+_j3-uuU);1EnbWE@xR}L_?9EYdO7F1EsAIrvFx$Y~&!sid zj`VHw(5F=zXOn&uFepAfT_cn4of--ZqFe~hPr(l`@_$MJ2|Sz*&R}A_+qSE41r@Yal`u4KENAh4sTL>jhsdw zu1rGKKDP<D}Hnfwg;H)XG3AhYGF<$d~;h_ z@+&6vYd0T{X7Q0XLi2Oi@!#7u@ok!GRy+nT00F0}y10#XA3YwRNQB8jy_<1r{xV|A zXwJvOu_%#g`iBZmifY*qKQddup;3NSbGE$vT!_d!aLaB(Qf7w%UH=mV)RCdUO)(9r zYgzuB(l_%eHr^Q@ci(Da|6XzU zNB5i=4rxE1~=l(5=eO}%?+(W zAcAq<@8^`};@?Tr!$$4fuksu0Kay_9Q5^N-Jr1r5MoS;}qLE)c%})Ixly_uK(HaJR z#yRD+>R%I7A?!sybMU%mfZf0==+O-1Q!}Az1A|G!!hw*GzteOs6j{(UJD;kXXq(OW zulQ*6`UpP324^3nzqZX*FV~>pYAkG+iXA5j(sq^4kc`{8GcW)LAL%Ta3GOial z(kAxVEh|rc@@jXYH#`<=CA>L36CfWNW>8RKCQU0oh~_G10|M4o z)zD~(T`@eKL+fH6?S@O(AF2Wn`)CVtk^Bdkn_18AkXyiI{KG5n%pc3fvUlpw=V65j zRFCOUO$E>_NN-1gM`5vq8^G}7hCYLJguP!7m;-J%&I9BSBJ{akLdf#vcm z#2C=?+R0HWOZyN9G65a~H=VCemse)q0UE9(^fhRwY;J#~WaR1Bj`Bv^2!`<+V*SyI z{k$t(Rc^9+6qEG8C-D%KuYkWOOy~U~G1OFc?ysTfw&V355>B2A0;2tc*OO+j4XOq0 zPB?ssT*Yry|Ib^8{X%Kh$>@9cX_$re5&g0TL)3ZiZtZ_2T{iKJ^MgWZ#BT1`w+Yrj!pz5KgEs zJm9odwps4VD#h5_byf))t8}63`wGPx*slH~V=7^xgKJW>+%zEoRkL|Q&*9_1MZOu( z-6A+?S45C1DT1Q(B;2*}0N@iJM?`kt;v3yqa^TP2{t%3QSL2Tj4DKI3Rxh8 zLg&=uMhEi9Fs|s1Yfm&5!!{DBZL-U8OA49cSS57>#$9ump0)A$sPaK4C|J5(K|Q(W z+UTM9Cd<$rA+~fTQkE8hQ?1Fx2GQEk=KkkS0#5KGBqXxt?#-xUwLc4=aovMdmE0=757vV~e zG@9e*EKwV9M74NO_@YtP>S)=;G2Dvi?=W6l&b|459<2}P+7>k9neoIQgxt%OXb9?l zFPKx+cE1RC!RL)g&Ozn^G(Dr#H4%9FdL@#^iY z=UbcQ4iyv6zI$136=YrgWe3w8FLDqc4~j7+HIMnosb?W6nlRD{jN1Yv{1=4DTBZgR zlRm&UJQG81R6{@r8S)^xiQ?5E?F-QylQ*%m-PCxWcb<08m>%%am07*Iux&w(t0|i7lwwJMH-X+ZqfE zMj6U7Pt)FGN?RY(x}D~a=|ykb4?9clqd@1l+n__mtSfWKO&ucU3)iop37IUbnMMq0#)cm7({|+pu0vb>rr*TH03AWKV~Ow_-&($a;DQY1jqQ6BDMaR1frsg?e%H{) zNOwR-(_3XN`}Wyt44mg9>-Ymhi0@P0g-nz6yc?*md7L243PNkp=3slTG*lTbbm;b( zZne@KR2B_+=0n9Z8jve{?U8C&_#!4I&kAowd@er&HgVV{OtZWh6M}+cBhk$r?`BR#ufgd<5Gft7a~<%lfi4EU;IXkeRYoOeo+K5!kg87^JK5450|3Qt1K zk{KNMCW=xS?QY^C1nd5=&j2|;1~6tH!htxmeJQKXzNZWhz824*9*Z3u8mFKgtV1jS z3oXH--4Mo{*BtlJ>VM4871%|<|J|{v6!&d{u2xo?wwQv^0%_e3Vl)uQm=9fE!q?)x z;7R-VJGz{`1EG~!DRpP%DX$`4bM^NMWc{yu_pJtbv#)yQ(03xt=elMQTHyMx=GBMXUiud();lB-<>p8XB(J8y?&jHX7Nv?==aOoYHda z#pv$1^{(lG1=8(BQMm_;8aGzsx{=i8`Lb$~dK>-@kG3E6kU6#ma4?K=NtpT8wD^+( zTQ43|u>F8EcwD^-i6t#LstF;jIdLiC(QAUW0~=@U%eSf~1mf&3q){ zUSlMgXbC>6FSo20umW?3F&C1L7^vq=x#SN~exEL!8z!iI!0HZC03?PGx88A|m~`B4 z5>SayNpvD{#vwqqeK%s`iSgxPeFJ@&#c*@~<)oOJEwW89(4n1n$0JPpqev#%$bMD# ztl{dhFz2{{V1SnVeik0gBZ%71b==R#ZK( zGNLI*{@^$O?`^T0Sf;9R7Uzvhn(w$sp1O%#>W{Cu5le)8$Itl$xcpssKU?+J1kxhI zE~k2N*)O-ftIu8PqA`meztfs2QI14QWYlpF6V?{TG)!B+7@1@N_<}s%HZrFi+=^Rv zKK;ay-rlI{Es@$hurHdHFjB69JIYj*wniWuKuXxuWr=+)Y;2QhTZnK4u&16MVj(jE zEj4JjlIXc5idJPWO(dx$Vz(f8$0y|Ol_Df9fvdM+?!HU3Y;wwyqoWoHFObk|%MFW} zJ3x9wz4BkI^CJL1yququM*l|qUD|nw>!}%Mv3xW>-wwV$rknFRU;+&dl!r_fM$WhRJ87%W22ymoj$ z!^Rq;9(qF1_wnK(CYAmsAo&TVOT8vf&jB>D^s57R3S7Iv+tUnC{?o(MY7rWBj6mXo zgt|M~TbGfm56)YieaR;v&uK*dcSAyZ$VGcKT$~Rr@9bECvP2!sU%5U;GJw<|zXyRD z)}zrl8#AWr^_0P1Pm2RNk{ZBKr1@$9WMU@RBcVi7Fs^u{on6(hEg8IzyYhiNk7C_< z+QWB;0yCk24E$)opve$Xf2Kn;-Wcw z2bw1UCNOEG^tl#|AS*IJ_L$20)}H=4;T6!Y$TWMP398-V@H;GF_B`) z|7pF`(CMt7S1-ubt->Wg)_o&vAfgEBgo5Q+7%+mW{B`x|qjSvN`jm8UJ;!Q@o$*{XRrBC&kiG-rp z>AFqgBKAt{dqKYlJv%@hBU=B>fC8<#M+pz=@NeVxq1NWw2_zi{&16*NfA^s(wvvHS z9Ln_b+VaT{0a9hBV+n!Ow9tZ@@*ct{C2R9b%^%<7_~xhtv~{~cYknp)2K2~DtrW#7 znKDw&k`$ut>W_?X&T&0VnX#x$L1$Z?b04mUh4T@&z@~u!S#)@ZG~3htNdYvdj(87I z>ljt#srLdY%)QN5qL#@<*ADCAXNcf_5Rwxetw1Z59+dHql_2;V**uABl_=ig5GpE88*zKi|U--BE;WI>23HaUEt!-u|nhJs&6S)~V0$PRsx-~m4@e;@ z+|@s9+}0MyV5^n3OG&kCVl^J7bkN*Bn?Tk;0|H_krxJlaG3Z zNI~%S)yCkLM0Bq6Py_kF|G5T=R=NsGDAoyoq-@^4M*q}kaBq44`fS6Jrkd@oZD-Bh z_7X&)hhhp}LIMjcM4MUJF~Aaslj6V=Oerkyq>DE#qH- zs+?h2_CW!x`XU31rO#AY2!0lYn%aUfW|L|%&{BZNn6uFqJ7Am0@xOWl@@bfD{%6Du z@)ScH+0so5!iE2nyws~>n^O6Ty5_kZ{w4}|;7=@irnTmiDAqhHO^Ru*j^cDr4hg(G z4D6gKl*(|!A--4ZN=!LG@-0BDF%X)KAwT~JF$i=~8#Qv#gkc@RCI-}NLOmSs>MBQih$(M^ZrI}> zM44A}N;~NKl%D`?XIuyHxD-kG@9}DcE-{t?+8!7;1Y|-zicQ9wsF1F)xv{(r5{l&8Db}O^b*E(A5ZaM^P@)oVg@Nc~ z&{z)|TtFUfmWr1qhzkM4RMqXB4R35jYp7BzZWEDXT~l zKj9uz#Yrg>)IV7|DmZr;yI<2bqoinXG#XA$#BfFbp#NT>-$~$zZ}>IVOv9D+ju-p| z0O+WV=Xa7nQA0ks?dTrK>SflJq4qu0;ucDM6Aa2}*FUqE4U3ELZPm=>bS(~FdVd70 z4ANV~tgNmn=v--UH4uKg(c$fIB#QbBk~P-26E}0*GmMwBG5}Bt&@GsjGH9dF`!j(0 zDsi0@{FZ^YeSp-udZi1UxFnfMKKc2+B-2yg#!{j-H`F&OW@)AAACRkL>_9>ZK-i_Q zqB|juHuVAbppGP<@c#xO4FLH;pKocGIXxdBwy&O1Nt!c3(a50mb27{oK>&Z;Nun0@ z!L*kt%ayHZR|)Y`4L;NOdgUs%6GK8X$SZo~!s7n|8+8j>4~jos2pc+jX*8rlH>D-0 zD)V1S>iZ7JP5lyOpa8~~klRy{7r>#{GaP6PV6h8We4u5xF9nznWAXw2ezd_)tHJoel!LR@Jx&?>9~z`y%Oh9kQ^3D+B6HY(C z^-Z?$IhYcSP zVzU}PPVM_82Q#M1bX%)VKW)V?R%c%DbGiN^$nuQQv0>#|!t`P%PtMuXuq+T9mLvn0C~Qb*WZ<=<_~-ECxHAm++`Vqkjf4~*^#I~^9=kf%n#|BFfW0M-6MeROfxpn^@7Uhpnv9$PHnqyMDX4^tU$hVnGYSI4-44kk` z)y{Ep6J(Uiz=Vu&$;M^>H1ji`wzR-rB{WYb47PG|`x9xeRN>`!)V=`J+!nTLSbURo zrEa`{{hzlcAHCcj+nO{X3f~wS6f$^qQ^MCi+V1Mof_%NL#O@UIG-(gIqp$mU04_l% zA6VMXba(`umptG}c9cA?+#3fxWbP21TW3&D8LVo%~qXEYBET* zB5><$;E1o)=q@x)79#cpM2h%sY0j{5I04w7J4^p^4@)iprZ`mwfi?}#;U4->mmvsU zQD3(sWhfUGlz^w}yEU+l$iU2R?c)geP`wz7)ioFdwnfIxj=Sm!xk7gF7f zF_dm*epn*#KTvpnmwq`D6Fh)-T89PSRX8cF5uYI3qr^2BlahIux->5CkHY4<4~KJ3 zoOPx><#J+gMOOQEu{O&SE}rJFO@KQ@2&wJs{hz9Wju@IzWS!m3_r!=MA9f8wJKa*4 zF#2=mJ=B{a0?4RxMG`nNgcqfq59T()9xxRJWA?bLG`X{NvRS4pWK&b9k+bBpLNQ%i zw&lB?>8|unMq_^7j0wtMuWKC`UPm(>3)`;)U9~&gIUwKHk~Uz${xsz9m9&V7EN;(A zDhBYldty{e*Yh;jKX|CVh6*p!idV#rtYTY4f%M|!sDeqgoFQgpZqB2Ds&@8`e8e37e|^*ABIx4|?Kg5g5kqF`AXizIlP#;Q=eK zVwZ0^f09plMrA9ucdNe)I?4+Mun_k^JVuZu_>?u-lnGx-y{1&)#akBSoEi`^9v6%I zGusS0W~79;4eN6p6>5TQz|7Upm#}x%vOj7OmE(8IzGWXCfiswc+1-WE+dNs`=`WVy z5KlrHp@$`*JCiH1sv|-RqV-5XGbilmjq5bo#8Z&(qCKbQ!4vHgDG?rls?`B_sY6F>8m z%S;`!9RDkyw8w#>K2{Zp-$5}PO)@xUD{U;RY3~e2T$lUoE_TScV|9_=;Xfj#ha`kT zPaZkqlOx@jBXqiNN_RIH_*a2dRExV)-pIdQm8Hxw1@3US!_8i2)fHN>Z$WHsqR<%z zqucqNX*(HO&uLk2U-?z$Oiyy~_rX`{P`-vzK~LUGP7WL21%4smPG_^`-+l2>rxrG!g&E<++`Q3Q;jMhNU|8lYnoaW<)7IFT;CT6Q^fHtD? zsO1VN+r3`%{;&ljxJl#qmw7eE#66ZNQ0~yJ`uuDQ-qzX(9n5p9!9T#r^ik*~nd(xw zk(35=!%>lBzAvbj!+*rpDcJy{upD@n>oUGHZK8ll$|lRI&kg@TD|RHi%2Z=vAia09YUuV9>E_80Fm@ezO+aEMg(;x7X#81?d zJAp6NCECCv6;Zfo1kRROxR!yRMuC2Zb!oJxPXkYfTL*J|`!RR9gXw7F7m+>0P3P(w z<3c;PA$k^>#02iCdL{Ci*V*EHFieENbNJvCK!WeI@21msgB>ENU2#xkqS=N5coKP zAQUZW8Q2eU63ovKbkP93&OGD*l;Ow+k?7aydLSQ$l{a$S>Q)pzZfegfP0Sw>YER}G zvJ8)D0HhWMJ!F+79IM)0P8mjKAA60^oepO!2^-+*X9n@8s+qGDAP&(LuR|sEhKToU z3`tWzkXK8XQblpTi4{BD)Jy^3K8QI@g^J}AVA#6|AzeL3huO|;N-D;+m#GzGyPu{J zOV^<4`$Ha<_m5ZEcI4tK3@|Z1l3DaP2_bpRKc`AkPL%^~jX4r2=!P^H(mI^N>$}ui zpSVE5cATl9XK+@t=$rNLXP?6ent5XG!J?@{5aX>N_jRE_#_s9Mh8@=_9JV!4MmH_M zFcIl^7*Ye%3qK;i9?3eTuypo@`7`Q8pGQVU@z3tfY#GYr`4WrjU@ z&Zx@vjt?U(hWFuKdtxh{FquH)W|rI zpP7p@eLMQWJ5_Tiy{2Dt8OwWz5ph$(`?1CfcC$VV!K?W9tczjIi}sl}F+nnyTcqQk zw6Kv9%O8J5;LGOIr9@KsjPuYn%m|KHO4pS>xORHM0;2uc1-_-INbx>E34_>hprSOhwVsbap-AV&W7h>nQq&;Ei3yvOX8xePoC3J`OvY;6Nw~5{K3_3|N zZQwcR$hq*277-7dLy|YZ7L^upQ4X&x>8~N@4Y*i#=J zkILeE01|n>1pf<#d6+D}arT4GCbjP-8nShE1-JabT~WR|_F}D(o=wd9JJ9i!BzvAY zn)7Ka^J7vY+~psVYc)U7b#HK}Y&Emi>ta-Z`&!f|9;VC|X#OF(TKK>x#3!Z*RV}JT zbV^Ioa_2VKvAvTXGx0D1mm@>rev!;6?E#*f(s0(&$~M;*7`m6rws3kQ2R#pRi6bz?QW=otBO1skclVJIeMO=Ut?}LEPo-!)(p-YiR${rBz&lXlb@3Z z{lTFmqDP?544pZhKAwi;fMI;sEnL*{8YKV1f@+UT)D&~TOwhQciu%+;WWH69qV=N> zM~#iPB28`LJFaN!QqCSSI~Di;n<2=oMvGPRV6ge^VfFOdj%r-;d8dzp{bGXuS!?zJ z3fVV~Pn(^&78Q<7a{VwFop<@8L;>fR>e`}kdvfbiG|p90LyP2#*wsKUzT}uQcb8Sx z&?^io5{R%q+M#1R)OT!H34(Fo-toP1+|NH|H_VrVceU~WT-r+wZmw;cKi8CLB6KIs zqvAnn*H}NUlJS=UL%@7{qa1Xe+WE2`gqJ`dANSQ9_bJ&#o3WkM?YcJ~eF(N>E-%S- zUm(dWU@J3;;qU_Ba3;ZoA1q z5P%^-Tn%emxWw@$laj-QoJ^rfY~lIAD7a8*M?xYtqYNFx+E+3nPu<{ZwykWF9L=#@ z=}?if^EgKzeuS$UI{68?7bD3S*v$Ft|8n&+`(l9Xpx?ZwW~K%MBM*<0*Y_?cGy zOL~f0iXtyM#q+^76+13XG3r{M@WI>ruLwC?&Va~zW;(*_Y+(bzo2zdJPnq`bwd-S} zjx|x{Gbeln*ir}+AwY8yWA|G7T#oaiL^z0Y6AuDcBw)k8LK&a`8)T70mhvJr`}y~G z47Caz!nag!Qz@WQsH0wu%=Oz)s&fpB!7TByxzw#1Pr6QnsXu6 z1oK;E?{ij$vxKZk8%=zGqrZPdN{doJKlXn#VRJ$Aee*S#gc@IleMD~F8mF32@TP1H zar=13j|;y)Q15fBo><(mV+1^ODouh>C9{h|a3SV`5DUJHi=?mP+weX^K>y2GGO){+ z5zPKsMRe06ZRA$TweeJ+el)xVmO2TsGQV3C7d4TkKOiYTD_lp3a+<0&QK7C#c`jpr4I)62dEqr8OUr)4!@;u1sDKK8OQFRnp`2qAe@q z-(6_#{%EcZ?3CMN5d9yY#T@FtcC2h-sxyGCkj}@6BS~fpczFs*#^doZLmggsnDavH za(p)s{QQQ0ejsMLQd#xJMU4n29ru!B#smi)(9L&BEQ><);=`O7hQ&}&40kO|KhDS- zT5|ntm>t6YJ1+$TJEFZ|Bu`(=PuyHpOexh9x%?#(X=y~`PSUcXY%)W2b^D9q6U4h2 z7$uD9L_`<+Fl?HYh0;elBhrWjzKIne`Ux(WLr6ZCera2OC0#q^Cc*hf?Z5)$f}QpQ zgAJBb&b$I8*~jjIVL;|j@?t7_7*VEqS9d^#f|5x6h*MAxYsS|V>ze;ZYwLhAWn0BqMOpc1>^}TC!#BdY(OKgv=CXzo|C`mNqz`Qg6eg2_8gnNC>LG_1K!T5-MTcQ38r2M!L&_n$a`T- z0}iO5%`8h_Bq~95a*x_LJjT|;_H9!V?ZNT7O~TDeFwxtVmP|Rh^B25%W*S4V?&zI* zyWt`6CKH|rgT^^?3@ht}Ef%Si8&O57Wcq{ACPZlz=`kKX!4iU0Sp~dEpv-*XYlQy$ zJS9GSRN_*^c}%z`-KNrMrE{2RbTfz7EEVW_e_qz@1$}5QDuNx|W+C~fH>3me>_{Dw zJU4CwVJyZ9e2Z{E6{!Aa0AV2kt}Wt)bwbh@4nIKT=K8%4QJHSR(jAsGsexG zBnsdEqWDK*_yqBcaU95a0^XhwCT_H}V>MCQ!birLX42@CE3EP1&7lIsY;AI$Qb62P zWY=F=gj>xFk*{M1&O%%z@8ebx&WbLhuccbMgoZr6daSAjds)R0UOQndQk#tGnv~^D zk$7s#6XNDH=_+4@gEs0~~5TrwRbikG_H5;LZWxIix@ zrS%N7RlUKAJkMADNt1E^z9Uo?3dOeIj{2kCC%ed*Hn~`qn*gH1caih*$Rfu=1FYPE zJ9oDoq2e!XUC?y#y3Xt7Ex?&&kW^P-J&4UKTuTlNIcNhf%l_7C5=X~3JWQ|v+fqx# z8Xgz3#5v5`lFjV$=QvUlmT$2;PG5YCRbdMuoJ8N~b0^!Bc@VAEhTGKX0U+#fshM-x2l!rw}My{4>>@po1`tSyNZ{GBYwLahK#^hqrDBY zlO_+U=IvRyZX5MtwOS8bB@PGoWrGK3-oVx51tEsZxEX>4En1>b$<;l?S1SINcgX*0 zn5uR?kIuPWXubr~a0@62vZ05;HGV^2Gy73sZUGume1-bLR3#)UV7_d0=peQ?hXTfb zjf!HqSJv_SYujx5zMco`NF7vl50AAw)o4Hn9dcWd+c3h%R`~wp9&|3KU)W;;d$U#v zB@l5cH?7>Cyz!n!6Z#2ZP=R|{`Q&VV+*zV+uKUiLDw5$3JUXkRQ6OH@sHY#}9?Y zPykDMv+y*knekgy2`Jk5Q)D}36%Kl4hL|Y@M1I?XQMK3f5qy%Z)(%Y#qHjlQYiF5T ziH9P1w9UCH3Sie2(=BN>q#J6uxB*y{-EzUo6udlCdE~bVFd}#o1w_Wy&ciKHgdSzk zEO7{cju(&aBt-~sQMI2ih^=PdibF0)F%i$tlXn3oyls)o?Ru}@`3x@q(OVkfYn3MqCwnPcRl03=T;h{#Bl zLgC4M?U~VSog}S>YzwTEFjDHLB~t z_;OtY)H^|T$Wx;~!(w60*yQ^grqY=PS&|2|L+{gcGY+>R#G2J|hGuqgc7X$YmbQwf zCzFylr8nEAmsuEHO`%WDCa&jb^<+aDfghR{#j<|{yIMCwHpb{=jaKMV;{V=2g`4XJ z>AP`XOjFL=K+@#pNSxvhG5|np@Tk^N=$za!r1uh#YB8w+Lp6QrYaOu&w5C zL1DI*khdIeF|hk^=^t7Jq1386*7|5MoC8>Lk>mpYxMQQL--RBn6Z ze!0n+v*VX>>-t?!ouIe&1<6aZIbq^3U`!w>ac^1jugjyKTRccT0^3k367f8m!T4;88`%h^y9kiMH9neJK^|&RM`uJ;qHPY}B1$?#5?lqDs zZ_jU8*$UDJdSOXXrB0>e{>2whEv<-)n_C_*0V31hY4`vPulvsS32Zy0PCxlsOth;ZJO* zjG~Y4^&?H*|Ss8 zh0+~kJ+uk=!a_kh@&eGYbat=VB9Yjamd0Tl2lQO<#n^o}Tq6&Mc%SONp(jFMGW%VZ zJ&L+Gq4-EGpJflsOYC4qznPn@TvXtA*?jwXrpaSjDdx&KZb|S85qD7hCGN$wRYkmC zvD_~eUEs&=>_twJJs?c#Tr<>Pf}XLTxls6``CgI3&z92uc5wXcvZBs1h#>WQGemTv zIDHW|yP6qR6xa2LJLS2a)xt)WGxl?t+XGyq=)waoAluF#PhJ%*374Qt(wtI_iS=qx z7zye*kJ0fPys1`SNtVH?5s6k|b#b69nBL~Q&(i*7q2ANsD28GW2Aq$&;9%OU9%e+Q z><+%o+%WwMSJDESj20;BNqJi|(f32xa>7|nEYJ+886>cOmGu6%xs!%&Nb-epMi|}z zr^yKdj!gr9%WZQlG%Yo7?5ulpR3H~~wvIl-9{b>C?gEyl!=s8h=aR@}!>8y*THHj` zy2aM0tUaI2J{XivzVle4(A(~z3kVvVJMpy=d@g7l4HDX!sh= zL+*KVgsRo6;D~lT21&Fm3;+v=Sk`|}0KA>|J}?3U^5N(LId5gzAghWmXTpwIhHjj* z+g`i|v(soWmN|9Y(cy%WAqh|2VhIXc^1&@)?g&Bvg#=U$*iw!dU@;f;^(%JJW7L)^ zY=b6jPKLj+Dx#F^Q*C&C(rrPqZ$IR19GEx&O~v?cQsA=eD$x{0g6Wil?lvI2{sM`T z^wtsIP~LO~eXJkm%TZ$|cIM2uW@+d0<>*U@9cZ$`ym^BxIwiALl-CamMUy&V^| zNhCHR<4F|_jrdQtE67NnllXxwY9`poEqBx4B%ftlAR4tHGpklh>}<7F1c%d57hj*8 zHq*@>S&%17$j7sQsH?oCtV z=%FXs-`>+?+8t>#rs{G|DldseY1 z$2~dxr27@t45Oxa{ZOa(Ga1-Qy7XFrmipSl=~WB^qFL1eMiRwtoH1ax;4YGJFB5+W zQqnGeZVbc9>CIcgT+sjFnuVFr&)HXxVbx*e>Hpie&vl!}G3kp; ze^FFx!l0P_8{np`XR-s(aS8#S1;8u=!eJi)>eI?ySR2H8~JhiXa*-`->a`-pWsyRR6cZ$W;v^MBxx|^KN`Ca(uPKHR^3p0iK1YGCj zr8(l?A%;iI4yj6fFhg8qs@E=MX2glIsg@+#Q!ubh-l##mna~JruHav4#-B;r&jnoG zO{?e63pb8URqWWyskZPUEk^;!=f(n2`Oxc(>rwTSxkD{Q&a zJNN~c+*5k!GM#R>^l-< zGtOxhDN9(hkdD7#q~gYbg(Hb|kwc822d2^PP7^$wEQ>{{@@JLwTANg6 z8A>ZB`=3rdgg^5`1&N||1Zcj3rtfqa7-#X+#4>H&Va@Od(J_8xMVO%>G&VLLF4xUp zxKb>f?YN*Crf*LtBOzaU^LsnYaMPW?+$dr{;Cl=Xy@y$%e^lMNXvDlCk_rJNVNt#O zn9h`Id5x9z9ZENG^QSG#7lMBgIp~wSablD+P1nfGa0mm3SzyT-gT+2Ny?NK-9;m!G zofQp^&+ol|d~Wl97MBvs1IMnt$KEw7W$}zsNUf-MJxzV%vdCWHCboIr?D$q{H_z61(7tU&$u8YtuNPtKUUFEjh21Xypv+ zGO0YnLK8Qs&zMO9a+rScQtx-II7nr7Ax7a`*`qXU3j^4yk6#E_Z{ht z_BMeKDUWWuYzC~?sj_x_I$s0m+qrDPLhv&9!C-R}*>3cE5ban|U2=2WPiu)s*!+Awpa@jLH)6%n)BeK8Nw2pefg8#hPG_j6Fh`2<8bKCV=+ ze`XH5EkYh&-s3)Iob(vI#KLQYQRN{mX#Eg1nLnY?I#Tp2yTIqg0UY%}f8OPlg_9Sd67KVkq4iSZn_2 znH2FGKR4i*fHw{NBETECvPCb$Uu!p#fs7iQ_~Fg# zsAL+1kGtDVvP~>g$kNhT>>TRsOly*m4AxDIV%9Smu#RdM0y#nQoVl8=z zdodj}07LphR(*i?V-NTQYlXy#ep|3NQNe@qjs@^u@Yf#n=<8u7U#>cLbNudZFW62G zN;Mw|oAs8~UGcUYfKgTcLjFK08r~JZckiSn!G0ye9&rC~BjOH^I=Xu)^E7^_7}FX) z;8czd=agL8xxQ)})q~{8KM>({)DzZK-cRJ24nu+?m%|JGJ0D9pgSdElF)>x7la+V| zPLdWHsD1tyMhO>gkLK!e&%VJzQSw@~(pc3>(6ye}ykq4S_0awLKaANnRPwk#^gvdz zexjU5nBpW63M+T&d?yR8q;9EdQW@7=>w7Mf<3& z;y)vuwT83PY?K0U!GZ`fc$K<5@^^ALx7Q9d%-5>XwB&KeWyE?RYOaX954l0iiSOtU z=l|^z8OdJliPu+Dvt>?XWFeYMUW^c`suL?B0usW)NTS&%&bvW8`d#biF&<0x)sO~S zTMLd<54f+%+~#k@_KepXM^^>RxYr*6DmBJ5t1-HSiS;FjERl=aUnW3K-t-Z+NzETa z`@h)S5mwxbQtk^-k#nC(gz-$~$GL97!wl|Z4sqt0r&pEuD3`k>Af%FgqTf$IprFV* z1?IC0eD%;=Kv0jf;}2Rw5_EUsGFkex^{)2ts$4zM!(}rTI%ZfB!5^rF5;$**fn5sN*$d3u+Bd z9OHRv#EWStL!KR*SYdMmN{o1IiT)kB6BuLTE^8A)*TiuzOMX;z1G^LLan|}`;Zz@l z23@*adn>d}J-jwOwE|||JBnoaxioxwjRTlcu%ly^53&<8FwguS!$9#~a_sJ&$iGpD zAA6vN+L=ECmD=~M_6WzN4?k-;nU&{OVxq@T58$thH=O0@b4kr}5kO=;sKMFLRNe`? zBbqNVUWTO4M!j#)CxZ=V;|L8*3HR6tWI(q5Rn9GIHttH~v-0}M1PtTg7Udy)7d`6C zsM!vqu`YXkf^mkG0ml74l0u_U&aZKGngd6hQK3)Px?=&rsx88hHPp$?JDI@ha!}OH z8aX3V@42{JhO%WMA>d~h6LVg(Awy)sv;y{YJb45Ge6eS@Gz$Ykjvf?bOtK2(Ey6{d zrI>s~lH1K&1Ax_qVQmbFB*n*Cv)ta0LOmH|GW>wwfQSNkc6m3re^a){b+#EQ*8|aRILlC z8uJk~f)FV_R|#DQ1v6DAh$5WEGPq zl}7c&utu&37QL_PixTc=;MOJq^~h`Wzx#=JRcSuGnq)LFth+9Q{aZ}6*cpfBi>vgqld|jJ2XcsmP^Gw9U?l|g`yBWl8a@T_}7y5 zK*O1%Usc{e&;3$Pro2j5aexOH&&%&E7EMBclok5DT6fS@Og9x-cSkAzormdBk|Dx6AM-+ zurO4cgNPr%WL(Be*_aR`dLHCJT3XDf^?Hm>edYL$nn*#9a9h|L7vQaWbXunt?>l7F z^g}B7D|)5ZLKAZwlqgzlGO{JG7*doKwxI-5BA#cvdE<0<@2+bcY@1WdcZ>dbz}AnOE$#0;rFQzZQjFrIv-i zz-exPJ1BYW9&P^aC%bz;K;|1f(((e7lUa;Q4}{%Ogj<(KipB1VnDxv*W61%X(bO^= zRz(28Jsrsk)yXSh<98j=3tF)nW#er#}us z)>6D{(tJOGFsUTxEla{tPP}&2-u3Y@u8gpv=sCFHit*=`pP$bG5JDENCQTq|30Q4| zav``Jw?B>&FrCd9PkuB9Uk2KD#18^OwbqlFrFdc&^kp<&$qO|~y3bU@Qdf1%%{(hn za5CWKEqQ>{nkFU;6Ocs|u=ozhwmLV9$(wH=*%7^kqDC=y%%++jj2x&(z+O|i6~Ze&Xsp%bSn}Pn(rp|0Vc|tx}>~!H(FZ}w&|Lrq~Tx;MMQ%2 zY)^*2>4Vx9pDiz2Sx^E^*t<5VmWj~Z%rCk{i&Zj&FAQMfYxCsKZM9C&`q6)MJTkM% zY|2j46zaeY`{@aXtP`kNH6Q@x{02QO3YCwsUH08M1&_xtfW$wWw#3Ap!;7H1RKg)o z21x3mBBGF4{et#P4Ugzf57%FpEzwVv=};WjE0h3zi*vhuVycR*){E-D(D2m1m`4I@$g`?oFfU-C;o z(bdJ~|HKltuk7+Vz(4c^3c6Wl)(qw;@P8P;=NFJ8&}y#xWk`6-M#vF}Y(&D$!02Lu z;g2n40`0?c#=QZNTh(TIb8^pBt+O|NU$e*p{g3A?6$dMp84d&iV^ZeqK0T9jg{nSi zVOM`fW2ogxF^7Ql*S{DCv|Ue2U7H^;DEbuI+7&Bf#JFJn5N*12%pQu+kr75y$JL{2 zEVj9+fdQYiTD`6hkpY1X85x@VRZ=)|1(V=|&h&EPUB!C3u~Z6=7}+u*+16Nv9wP`B z2X#VI)5FI?+P!=QGMIvMv`{AofbsuG6Z_uJUvJ-VwRW0NPYzcbI}TnO|H|~WcE&pL z9LX%TJhM^vU$-^Ul9dInY93BA|JRMs);%M*zgx=+KC76lHC8v7|6ENjl9tG1h1Lv? zbhcM*JZ&+w8AffDZeZ@y-{Sy@I;Wv|70NG++Kv7cdj5~NItf##g z<#n5z?_;1zemZho&85m~aZNZaYy9-NuIkLjn5aPcRqcs;!%>xBTZwI_@($ zv0LupVsIm~l%pcI{Y;gfN4(u`g@2?sRXEGH8~ZV?_ddvwa%>TjP8aiNWgyk@G30mQ zYf4ftKTb@n?uhni{`A6dfTI|~2Z-P(5EUU1F$=@FW^UphF1RmdhbZHo#x}`(i*x2p zpF5y2QvNvxFOx*Z zExDgL{_$T8Fp!rCJeqk7mU9au&MpHEi^El0X385~6+U=js8cT?)`f8Y$>)6Pu7mA| zPB47(j__VrITHw%uQ&PF%}s@vJ@|^F82rcb`6AM^3IPQLsa-sn!6t2&`$j!!4k6>b zYZd2=Qr90e4%3J0C_u@KDy2P0+zCx()B(-9@o=r3!K{zSe8%*31dl;73VlNs35prB z<}UV(nFOM3_RaN1q`kMGpXAu~#H*gD$SgofshQ$zzgPptx-Gwti{J{=2=UmM>?j$g zB^YhBiTm*4fkG}6<}Fp+Cna?mjUt+fQp8NiN4u36VE$8eepPCY1)i>r1T*(uHOJ3A$SYN@Rvr?sf@{YSB6ixE zz9<9EQ;Drs5>56Xtn%A8(f%^z`c>B&Mk-3h!&0}g+r&adMje{UXm`VG;{vSh^a|Lw zSofBEbV=!Tl5&RC9wV#cuP$qTvG%dHj!p<>|FKdg|4UP)Tgum_j&0yVtqUc&LM;Ak zZj#vSYy%gX{$tbIz;YJ4TfylL<1BWj2yg5saawyL>;L>LbFve)|Kpxs_gS@O%BSoe;;Px-~v5N8&_YWZB?K5 zR|}Z)F*-5!r%!#H&dvSsX!GrQPWVPT3l|=YIAR23s^o&GCI^4|7estM&5A7~{%XXk z3bmF)3`R|bU?&U~WD*G-R&lDdd=S1=53V}z)J&Kex?PPN*m*eMRWG?H`NbdStp9_Y zY0N5oNN~K~!cVl1_Mf7r@%m#Y#acp<kKI#xtH8N&O zQ;7kuW*1_sdiL5_S^mmdd3QnEUi%68`k?1)d;zJ9EfV04AAoL2km}R@De5lIP4;cI z{?h(5Cste(%3-!9KTu1hWqI=eC248pfWP!}9F(3;;FTEdQ`u)7=tRCXK+|J^(E-xg z<_pu~I_JCTk|HR@(8p`bJRLjfxrtAl^h!fs2F`W9SYCzUCZ{h2qu(tlXz5^v5dnnQ%mGCxrP`0j@15q%T{W^JTbM1HqRlH?^YQ3B} z_p!1~I_EeZ1$%<%;7TBXha2)9Ph=whNnlL3kuj9rLu? z^v2~Xb4I1SJBq?}*T?t_ICHNAxi6)&sldzb_rv)FZ7NS!W8XelqY*V+TF3YVk4&MG zLYjJPf#ML2*N<^`Im{`gtkCBxOVH#|ug5Vc%mUo3JBpz2`N%N%Kv1!XA=nv!^pZ6c70_;5kS$v1mp66$TVwz0OvyA6mIeOE;Zj%adQ;?+yUk7=;eg?B;1OHB_|&DW zG(jER@Tta1NmTlQA4uRS7*6M3+(WpF2lUjoCJUe?15o^~V)-etbt6Aub0Y=;6o%Hh zr*XW_=GSE!6;Cymaz&6&VWiu3u!1k1INyYo2ql&F)P^++R#g=RiDy?+kT&RH-xZEx zyTYM0Ra}VloV!_)d}LPz^0uEpQm8T@YPgrZ_dV2&JN~q|lir+QIPNj?kOmR&u6#mD zYw_U5!T+7>htpLSLaZ*XfI*DizM*Nt-Y<&^hd(1kPhhfHyfJjy530*29ELJ>EG`#P zT|LO=VonTiT#5%)rabXf8f#VCfkZ*e&8WeAIz?<}ico%E2HNJ;aIiF6o_F*$a2KvG z>@NZp+dA@$<6RW85X#q6=wf-C^`#obRC{o@6HdIPsVS7^6R#x*YCoK9mrckqW6%D^ z!gsNk)J*?nkJs$5Yi5}Q#!5+ykOMV?+i{1u&|zzOW-EQ(aKGRv)&%fn^jCuc`;hH6 zOP#s1DJe*V)u@uOrrr9+dDT-NwLRJXm{>N<_)vZE4GtcBicY93FYr*j2c!B44I!(5e1mv1+^P6 zDQ;m{tnz~bj?JDLmP%FzLY7b?&M2oj3(kYf)sYwP@FV|Vij0n-GW;WxsMGMdPqk=} z#5{sEDMqLrrm;VuV0J!%EXZ2nO%C@vap0HlwN@+};1W#g{O2z@-^pYRCN9Y|pUXqq zp!jeG1k48RvMOA5o$EWHFbNP~5q9*jgi!WSwumli#uQtMdYnVCys5MYTn@liMG1I7 zzwxMJcle}G?s>mV`Q6oEi^E_DJ-E~>R3Sv!WJB_c(QI0Jrq%2Ma3Ad5^mwSPfmds} zRsSH({eua5a+_s#8J0;Qla$VG9Str}or9 z_O?Ly_Mq>%SI4K?RW^V{+1-O35UTv^n&?Te{9dOA@tZrLobSS6+WWb->?$b|CL--c zP7tG%%OVnm(0CoR(lEy#;xKG&3;eemFvk)jpb&0GOPn5C=$#GUgz)jn`d&y&QE~YP0H}C5nlrL)gJh-!?>h&*;opvZSwcUmJ1@t^S*5{>9)jEP`gqyPX?bP@KI!v+vd;b#}0h@{3R zvyf-uFWN1DG6*(|%)1qURhnVb+)j*{;pGUY;Ls9=ZH#vg;|C8dO6CTklQY()4#GO$ zt1OOr_Q!#>Qo)U)98y}wJQ4UtXkI$41sY<6iL0YK+gc41@gIc)v1Q9!yJCDQ^-Jyn3|hc1Q-4BYysB;8CoH?rwvi3?-X<} zL{z~+Z(l z7i)(~RGKQ5>Mm^Z$AHzG+*-6&5&AS^V`(f~skAn`wiLZW&R%15E*t|Q4`$kDlB`?d z+Uqg?P3xRFG}iLn1MG+yzFp8p3AE-DAzcpPuJ5rdx;=lRpN;4^lXsKT;2$VvI4Qc| zRPf~&>DiduIBzhEU3(UN470mw%xZND2eJ+^VKV0eA_VGSdSC9fmXVK&FLWL3&CMr` zk&6n51o+1eoLF!v`6pE;G89Y`p&5OE^hl}^q9nDIHD-MH6H?R%gGmB>BX%Dbkf(&| z7DM^J9&v5%6ksXbgt7~z@_O~&G0@XDSRe1QzZWXCzke`^>si9{WjVCU75ROOO5$B` z79-5=vBf_UZYaoEZN=SQ$Rx3$IF~Fx+p<-H{QV>a+{6Rx@UE9NE~;{yGKykZMu1Cj zYAXx`+he4~5Ahu`ObbKl1hp``W&`SjtcO)6SZtT@h{T1u_fHqCxvnHNLCNio6A%Zi z3D@9iW<2_!ze$Ds9HdUw&IKzi^rykEsZE_)Kx-a#5P|FkYrAd z1WKXk4b9cZCGL-oJ>uF2+Fq+kdJN%)!in^3TPzlrQtoW|GHst{Jcxpq{5@V|I@aki zAv-{xxiGsvRlQhxjkK(?W57sh{kdYWVRff0EhU$i0stXm6!#J_<)>LB??4J<08rRZ zPJFZfE-6S99eq@s3LpnX(zA zGzY8$?KReZ5X|`d7^sr6{x5mn|I7pnZ0f@HTCa9Rp=VO6PP2hxy4>{=6EK80ojx?C z@HIMu+hZU&4!Ao9dXFRuiIg~0b1q=?s03hbNZ%@9P0v~sWS z5Oj`pP902Jmg+AVs79_{;$iJ4T}zk_TEagx`XaNRR$|+E62GWoGndcs+6+p9G7NFH z>Dph!Ob7)yzrDDf$jvn=0Udy&$cPy*0h-(7X(jv(=>KVnEmiPez<$1uku1r+pA{`ZczwgbWs19;)g4;S-i6e}?r zj)cNHI#{a&CPuzZi7uBiI44LG7zxUQvcGO`1cq&eoEovg)?H;IbAmVAnp!G=Ob@Nt zKG!o84cx=jtFP`*(z)rbvolY-Y7-SsH<{#i(0rx$%XV4?%UO&-6NjcBzX}mU>yGC{ zEuK;ZrQ5iN6 zdLWqb2Wxve0y6}{>mt`A#D0##bsLD8p_G@yyt#Vsv)&^38>_KPj=XCjAzsP#;{>Gd z%!6XDmP7uPZf8@iSs+XS#Ssac26X#DZ>iQZc-5G=Q7N_WKdLw3EVMKaf<{F@qFD73 zX48j&q{euJs}_N-0$CRF{Me_w#d_1Y!p1tQTkJSin>!cFkd_gt&l>$>j@X({zdrpM z(gRs@rEOM-?fMv170h&19Fm3cZ2$TilabbuiXp#|>B+?nx0e2$>Vx*6MNg^7&RU!q zA2f|Gq6bw69jnAo!*|<7fv3a)pf%tP_3yMJiRx*gd7~Tvb-dQ5&s9?8-MRCW4+IMA zBFH6q*LsN$sI1G~6jsFdG6$(Q?cJSG++@MN#ls`5oEqqt zTIaiW9C$zzm){XFz-bI5!fUS!A**MFp9^hZPn4oD=4g>}0r#QucpT1#^Qf2W(FF1& ze)jV?{27KIy2ruh1@MU)@MTQD6_KX%Gb@ta7VvY>4Mq}9p*`Z`2)nSgDQ7M@@fyrf8Hy36tx8wp<~wD zv;$9r0 zID_gi_ZG5jPh(kQbkWFMQ)=s^Y%w#NoOsDBVLyYx#6`@UX#G;u@gSSQ&9f%JMFx!} zT>lZD4la^)r>7b}jtqfeN|$fY;yBEsT?a)QfL)$ELv37Y<-X=2tnOsNSR3t6ucQ=M z9qUMg;FthZ#sTWYeb3yB?p@KEuFF&06Pk|SIF6wTm&|eFT-T~5Fy>^QpCKAri9Boou-EU?W@LS zOil?jXqlRI+|#Z4*Pt*2hE32DGsu6%K8T3qE{&9Nz@N=rX8?NEvROPk6nL|iv1)c( z3X+ogA4q;C1ArntIVyeg9S&G|De5Yqc$Fe8SSNm@W=ODEp&v8ykWkLxYpI6@A83j! z_akZYCtnHtL4^xh$IP<;v1_!3lLS!Xx*#NP%HVrD;Yq6Igc(mZm@7?IBI*Up)j*|q zZ;K0*Co7PVvytg~RET{B+ny!^1W$KwtbA6Yp7dy>^mL`vqEO9VJHFz3 z0nkQZh^e!}cK7$2yvT;jb1It)_^6)y`0G}!ekPH$pt7km02dvXN~L0)kVIfPh?!RI z^$RZ+L0joi(bHPfl4LwlemNC1$kz-D5!cBzt*T%_xy%GLg4x&T$CP0Ef0uobgQt;} z-YoW;F%anI1m_J7Z+O3U@LeCxiA}@_yq_Jq4JhVgJc2U}Y8?%Pvbq#kH4mEISG4Xq z#v63UMzXzzqMWIwJ<4uXZBLT6?+bZZt~4-pmenK&MiwyIF_M!D?4=7p7p!%tqJmtp z??BO#OL@GKnQrcZm{PlDVM|t^t;!)rr3Vrqd#Z{X^!R?XA)KA&Fk~=@KcH2n%^A93nZXexG&_$ zDoSh@lHH~Eb*x%#+wPa*`iryGC7y{L&@SXDXe!Sju-SVo#MwMCGX;bk`-ho)ZIyiM zBK8k1P<^3PeLWoJVStx0Flcc#CH#3C5fdX}88)^S$|+9V%obU%SWu+pR~kK*oe(l{ zdCU}JH~berw{ia{C<+k%#5Pu39^#K!hI}I+zNrvt?r#L`!ajl)Wa>pnrG?E5u8yQ| zXPYk9k@lkHTB8UQ<8IjLCzM!ASX+0%Y9A8B0@^L3?oQRi>l+~0_i|I+8{8wK8#{InJLWp0>!#> zh41RJkP%l~kS0W5K;W|BxqMu?W?XEII2Y_1VtOMdv&nni3PdXAYSSNwe$?H>(A+#0 z{-U>k9$JDSo&*mv0~EZ`?Jj?9sMe)0<&~^aqipb=@*AjrYS4u3OV~0uhi=2K={HyE zGQvzGL8$NkVYZgegSyKNb@pFG??=niAKx_L*kHMzxUQ}hMRkCF8RJ%=PMk9m?%fY} zACKMeK%8sZh7_dsaCTkFal_E~z1mXnOer+pc=c8LVwp!ee;7WZbZ)Ac zR|7MT*4?P>9sm8FBfUlQ!~H;YyH9NKgAtC)kzGyJd?po|8c3WBMKgM@q(j(6@j2 zO`vJlx3@32XP(N?RWKGcYvwRPh6&>=xsk^yu&Z!W-l;Fmr6(m=8782qi(Y_5;Ejj{ z-QQ?CA;Lh04*$k)w+$7gL2YZp=AUzh@lz#-r!I2kQO@R+vd=G487^r`eF|n>#TpYa z?{!r=pU_Oh3Mdy{0L(=O!84puCQqQ;U-FSOaruRn1sb-=#rImqvH0 z1|o|u*~qO}=~x7|$W$cl2m&k4=Z|BP59lv~yq`~s=nCa6EO;ud3U;P9P23rX`S6BG z56)}KWV3#a9z<+kk9*%(w*Bg5b&#{=-+ed-bdMy(7945}SVBYxF~c|{&=bA!2@ zBYI!bHQZkohZo3cw4I`wX~;6aaF074{&|gSf%-<0vQ~rRF+Rm8GA^Dp!z5(oKM zny&Mf>zEuQkGN{}OK0EQ%SJyXkl2Wm*bZ&_(S)2BlVT}5{^!R8`lR)@3R{s}5XD4O_##F# zPU_^*F%1xyg4**m4#u3y6js zlGUZZHF#Gp^+;0qE3zoT1eBM(BqYm`KLK<~yWC4K)&z_GnxdkcZv(=CY2y=8YvF}^ z+OCC`lLzXjv^W+u?;GIt-~8t4?JlYgVP`RDS6DV)(UjaKfv7qZSe=^7Vj z`vS7m^TLJpB(qPEs`Z2dqXEKQ25H+n9wxdhopD`pBK&7Lgss^)@wD@w<2C(8$E~`( zno9mg%3z;uc`)uvYg*Yj?1~|WD|($Q$6|k5jX>zh?+=Y%`kyd@b->JKi@%fU7d>bJ zsMJ_Yun{0lx4NNM$()zRJd^45cDoGjSMZI$vw$7zgk}w zuewuBiR~*>@tDQj9@BRqJ}nJY^jpq@hS}9GQdSD&I*j=m&2^%ZKJ%LB}wp`Y#P*2Ld0%>K@SEqaQ^mceNi%P*wC z8)Ox#H1~?2iC;rOSh@(*(JvIeEKr%`oe>j)P(qV0p>fS?jZ|DF24gyso9JglRQNEj zdPO1DNkg2^^}bxN-GInS(PFMgKXyr(oF@Q_vHbdxH!=-@$GbQ9$Ly%;vj%4cY&GE7 z``l0V+CZv5^wEWdq8TOetphA0>?nINOV0jB!>{mI?w`3znr?ZZ7g6z_Bad&cFw6<0rggO>&h==_r@|EY2lXt_l#XdxC&jNVZAVF|J!aqVDaze zX8Ghe&P}p26DH)&pix~4QzueWnH%Q~&CYPAoYibKURjXG_JPX-aHove`E6X?6Z7vp z9l;cB+#Sj{lKWF#39=IF&0JHmaGJo2z~-RGfPRDqeblo zHff>9$U(T(U{x+4cn<{I*{w-kRO3c6s`VdV;lIlEcp8zPO=AHe~E(T(6 zyT0U63hJZUJj6mJtPlKkupy4k-^vtFF0&(yU`e(4Jc%r`-}$98mH9Dw!v%Oea&Vn) zw!eG92OVZ-=(+k{>S}QkFD}UF?(WDS_wg`61fK_rDzQlGWIQ&aapk8PL<*KAeqygl zV$I8Tyd=*Qk;Wkl-9$AU^N1`5e2(ehr8(|Ewsg(>N}r_h%G!z1>nfehec~~O7+AA5 z==GNvahq*JFN}BBsAKSiszhP#5rUY7oEQLxk!mNHVXHOCULb>=`8?j?!HUEG8_d}` z^Yo)y2eI(@zes{^z9f_KcO$}m4SW_`0sS4G-{|q+irG4PXhU2@p#(qk?5|Y^XI>Wo3Qma?D0_Es~5WfT*&BXk$_b&KrxTj%Qcw* z<1&f$(A2o5tsz?m^0y{6K;`p~4r>fumm|DX6@s&-y_G>q;}w!Y3yN7mH{cm+Shch| zvY7=%U&WqlMwF;>Q3#Uj$(jLa3r+N!Mu3cGwsE-e*}j`g_w#l~BQOnn<2i zC7^SGyM72cPc2sr4CHVeAYrN?Lh?i(XgzDx{M1v7)i=l`{VPMguk)#x6%K%fp`mey?|GSksCE??zeb2;QLW= zV2`Dn#p7dSY(+u`hHpQe+s+}?dGT7)x21kA&WbDVGm1Gp$#ftm^pU4xEdVC8Q>(>L zPDO}c)Hm8o3DFG6ks{gNTjUoB#&%s!IeICJVFBSTDlyyoWM!X}?LeRi)waE*2Bg$6 z1CgzkhpA@kDjtE@X>r+{CkNJ3W*D!#bOo~H1nGgKeac}qGItXPi~e|oYJULylsl4V zY7FGbD1u%GU1X-FZ+Rw+sLFH$k2Si==LkIz=cpL`^IJ2 zzLFIm;wekvW z%9#s4(4@n~eZUy*hBCQ4X*U8RJmcCJ?-Ta4seAq~%N8{XqO;$H1F8B!@KyQ#&p8|3 zS5xsDAdIK6`A~-D_9~r9=(}#ML2mH2eb!G4-a$=BSdDefL;?G#sNb56P)uy`*XpDX zWbKrXGV-D?#WV}>2p(PHHK_nU3Dmy-{5W)uOP1Xm;n-oi^@yzynpf(1N#&ru=82K< zVSyrm=3dP!m3t)UogxY`%)5tIgx(28sl+Em=WvhqvLmVI@X{TV%9UK90Qt5mOipi8 zy9#{{A8X7>IK4uZKw`BLA+E+1CX#H*$!G4bbLKrpfmm=XRKkSj%pyQ3_%gH1R5r6S zSc!!EzgFxryOdz93QJZf!iLaFwH9YLLbOChmPIgz$dT!1%oA2fcmw0B60YSgB5rnd zz+~|ABvUq}J*?p@k?FHS)q;6U6xa&`KI2`xXf8B~v(S8nI=M~Dz4Qp!vG8?oUh z&B82ZZ(0w{Jd;0h9}Vbf&9f@W_V_68PtRw@bdBm`6BTKIqwgjaQDbzD)*=2@*SrNPVC$!d}6boaE}Hu7+nnb(=Quvp&@hWxQ%TXz#h}lmr_mqPV@e zPw$&YlRtvK;hi6F_{Psg$u0Pc;tTolan@c%HWJ_Xy{H0Xf7HD*#qV2EHFpR074@<5 zKNG?(l!G`El?7zOfs1QSs7Tt}u-*j@eB#Gv*RfiNB!9`- zzEjIqDW@&Fr0OpfvHex?;BgIag?J*&QjK{*U6@canrXu~qEQ!i-N`D0AFdzp4_GqdaYb@Dm8B0lpfQ|xCqYE{my zGAa_Ye0sK5E=CMXUQ0mFeh{ES;~YMGsOpEzH^GbP@l`IRbR9`!JWGmS>|r}JgU2{9 z<6}b5haCmrb$b%FqNrH@(}5&IcpHWgQ7Fn(3omKIL(38cl*p~Bw~*0idcFbo{PKd1 zS*hQ7k4?c>DQM3vUF#jHZ}F#1BU)fr`MA!`8|IsFRYNK@adi8{pL_0-_BB&6N`m4r0{t%^Ax&L4-2p+xHx&lf1 z2qbZ27R5r6`uj)8M`q5XaXc98vm}!ffP|C^GKDWJKL9Asi$kS;tTiL}%ZSo={+jX7 z?{AD(TEH7_nM~$;UM533;cf1LG545hpU!SFWTw+au`y)55-TFoypS@PvMbYl&T72w^@G0y@JoyTrw~u>Aes93vsT@04BKsf+l~n`c6j3 zQ8QpZ#jNV+nd3&Umq9=+eO6V1<&-7Ku;JSBrp#X&i;pJMwXLCJ58<19OLR&%x!xJX)plBnWRroESi|%h;^@;ToGl zBXV$m9kHOTAsSUI5^0W3mY{D6&}lj4VTLE{Eh;%^Dj_Ui!K;UxCtoT2_vFU%8xZb1 zN5kLsG-TjLV3%WURB0k{F;;bP4=YvB??==cRga|lN;_}#HC@DpKz5bNV*!Q9wrDG% zuTv;_o)l>E>FXDh3w+=q9+8f7{Zg#Yt2x@D`4IfJBPtm#AJ)g!`w*l@dHp8vM$B#N zWQV{*cxaaolGN~A5~$L8$!H)4+49$mnV`3dt%O%VgenoP2fsoI4m?=giPM$`VU{}S zq&V|RRxxOWOiyr~@+#sjQ2(97By7~gVjm7M9A57Ha2xoLjo_^go5g?URp*dO2s+F< zlRD%QG%e{oP?|&)t{)|4C&B6`U&SOoSV5QSno8rSdBMM|<_jnVL9qg4OI+G%Yr!2KZI*|zqhT=c-!ma8UEET7Hy}+Lls8Cmn^hJ&0kem(UVh_N9 zhcuSkxO&^Nv6)*Y{4jYD5bvOLq~FQmj@Pxr9fQxu+`2SK;g{Ki#+<5UZA`WkVLYaO z;bZk`K*ojVioWyXdus5^x> zCrfpdS-weM%gjwURgqAMUtua>7|Po9WHXWD^YREW)YTRScY2>hj0K#9JuoTLk`18I zlt63D@~(=ZVl9WOII2-)mbXT>T)Gb8KiSdHKc5x6-7>ppph;+sG^UF+n&|U-Ja0G8 zXIN+cL9gir9$BFu@9b|^j~Ed7R8m5@;?5Smrv##PEWkP&|Eb9E#>X2*jo z^TH8ev0eKR8@BO-r^B>WIC=(F~WKD4A2A(IV29BBzqg*OkU(rGf43#oCCU> zoRam{BL@Hqos)xWtzjxj6g>Tt`i^0h;K1Zu^iE;kI`-l5y{a-x$BA=$X|S~S1jkikHbNZif=jM6CEg&LBHgnA z!!ldL5-pjqw7uzFLPOJFC2W z!=cuJWD}Mnb#&8!r@X@qw3?Gz5^5DLc5aHvM~Yp3s&4eEz8_2o)Ucc!pGMCKFUrt(eaq9(+6r<_IG;!hdbfIFL_p`{6KO%KO5lNcVu&jFNxmblIu} z5!b%b4wzfZCYNp&D^Fmfm$z)=PCB7d%#F*n;na=-vN5-7;fx>a=`e$KJ<-m=XTgf( z=?JN+@Vv$zD9(l|chB%{u}v>vshmfv@=K4W$B_k-hd5fLRbTzq9+_swGd*ksCPTp{ z(EDq$GRp^f_|-~bZtAa>gMDjmvUd)el{H|CxZ2GaLnL4mXOb5-(2hy-k0M3sst|~y zPEcs`4;3-rLxB&Q+Byx2$FnFTBld4L&&JTp12%K*Elyjn^LK23z?p}?sSIAx2E6ua9a`$15{G8X^0Pd) z*t*|g?qnaGR+*JY4m8^1B9n%?hb(Z`5$T~>E{>Qw(Rgi@nukO^iu}2%A~e>V{0DxT z1*iz%2*X1q^Gg1bJPsAOKKbdXKs_3>M}1np;~eF^%_OHq1Fr$F5nh0~+Ar(>Z}Zr# zk`TzB|L#tiwzx7#HckK5d}O+Dgy%HA_CLnKhI^M@Ce?0me8VjX$GHwVL$c^uE_?gk z8OiR8K@Z!nYb}^pPMR{y#x9(B7dU{*^cLke4dlO0M>bfQ?a7!u9UpCV5^twRbHWF> zES4MP{%)EndoGSsKwf%UepwAnWA1GB(e;TW77X9^8H`Se)T>0XdHX}K#so8d3%>uu zBN?jDEK>amNWF7Nmswh96cD2NfeIR%qcvIJ>{I$>@sfT%UjqZuX!lg#_s_z3X9mo3 zC0CI&iU+@H`wkiKi8103oVfH?Fr%9Wmn*8wa1Tnt$~)Fv=?!1{%Hj3pzcx;}6r7_{CM^fO}PGix_hMz%x^zHs^|fQeBu#`ftkb4 z*-a-9KH$>o5br|(@?S9LA(*cxs(<_GKpeq*)2@M0YH<|gr`ij?GsS)ldtqB3J~6Z04LJ1PCha*4YYnQ>FG za(LHr?A|_1c2Y`+K1pwi`u~_wL^b^eLZ&yKjz1exD;<3>&?*ViH+at6tLI)o0NDWb zu4QgPw2K5Lp1AZ)pT5ojHLkA~tcIY?i{$zVx_#64Wqj^p@&bsn)r?iBl9u}xZ0luk z5%ZF`>CRSUiK2l?WTQh|eNu7Nd_F@6-<`b)iFzKBGGa?;{#oKd~-~%$A{4dfqSlf%`xx$Y_3OKv>YJ#fwF( zebVwSo7Oz?VYrVeeqPj?4SF)eiconDY-U_MF6v-A$f9Z_{n503uEi|zmqR(oIdi_( zCg@mLXH>h}vR@N?T$B6nh95(%3M&x(Du<&{#B!_yb-uyGAyWc%_S2LLMO=E@A2zJ; zt|FBsV?PmUSU0_QDh3@`^vk9P%N{$ zMiSZ3QvuF$_vh)H7|4Z@LshYtDdjN+;EduA=V2^9vPp@=qBKt@pm}LL7Is!4G(5lC z<5}o7FM|h5w@M}$r{DiGtWB2`p|2hs3dK7MbY@lw)4x0QT zE^MU8{-8En|JuPnOuYpDc{$lGY^}g#ELU4;Ef-OqFKc$%x1QKH^>dc+Q)OmR<-i>z z0I_tPv>sU_i^S~s!e5yw*$~7>%A>+K*put^pv{|3!srLu*I}+&a@PtgM^dsDyWjns zuNQ1Ay5V`F=tPEPe8PLcDq1Z62B?OV#>-cq_aXHPfA4DSe7bgbb5Ff#kQDJ|28K|; zfoWQpnDr2ka?-_7nITQyw@(uJq$1(KfmHMS54n1M zRk{byT&#T83Qk&(jVkmg7Yy>aV&*7Bu#z)nNoB+}e{w4I!OT&tvD4e=;}Arj4+-dT z3l-C{cD%kA$Vk#;4iajoW~VNGsJ(#zK|sF0M~n0#Xor!2Z=GuKe0eKgglGuEy(db5 zG*^oZPK;zclH0!x73&}(>F!0d4!h1E7+}{DNV>X;1yPWK9mgKZ~~j+7^KM3 zVFeh%NSKK_8QTfCx^*oPQ~&9lO?YC<$2NMMd?FM(CQ2trprWp=f?%7m1SHx8kZVxJJa&(Mf+GI0rC~4B{KEsiFlE_p3Vo{wy65jc zkJ)gHnB5}VwBY}oB^PQ9;}$BfdKum+GuT!8wc}nu-8k3F<;AwNLV-FVvGGmm74JHE z!|PhwEc!c(LRV=IR5NyYP_Q$qhHNm8^|1MNu&KjAYKp!MJ3X3IX@h#K3eixx(V-=k zx6=On4IA0vAG5&ufhrMcf-zA{luh-pCsmrm_1`IBre62%`jWdQV-VP17<1&D6c_;X zmP5gRCbNAUo~7T^o}9wZvr1m2m*^NG`<#xbKtTitZK#7HdTP8FcBwca%BGH*DoR8dOrA7X6J9UvuG!EP%bJY@Fjxc zo)1cBLzdkZBN#eA1DWdPHbk!pYlBA;VzP9;vkIPSazsW~cDVN|n89i{_i)Slc z)XzN8c~*zd*9mfNqG5fs*ZXhD6$$&4))f&$1s_e`YnlBh~BvLebZq|4=_ zDm#KQpw5c{X>U*|ZA}5c6hdb+p{APdp(2O&hy9E`W?th+hyupCyLP3svUDCULj*Qj z;|r%tt=r@fIfU7$H2FiJ{La~R7j1Ri6&H+E=vWPVWqMg)Y)A7o6UVnL6ia_4onEq( ze&HF*owXxYkQNkj1`k8N0pb?M-_(`d)F@``UD)nc&o)#UX|vm}ek`O8=~f#veuAbp zzY-paJr)AP=cbx6Vj0NsOVNUG-iAtu6+pg0Lcnzfse6NULER!)LZem~#yAVWyX`ds z;*^^*fubJw>A+_t;~@v0N@utZkO2B$`LNck;xrKqqPB~7qt-A48VSMzEK?mHVi!BM zlMx)r<-qq%Q~Oy~t$>xs-g))^_Ajj_d3V4X>Q$U;H%!CbDB>_phSJm?57;YT(Mf4P zY9=>e@E$<;EKCmSG4Y0MJ4Baxa~x#Jy_Gb@=w?1oI1cc^f*I_vdZE(n7+sh2EQBC- zO;loFzR0m@%)z@;$dqG{h+Ef<{9T1m+}>n$SeE~|qBf%NxIS7NFQm$2M&iFc`6JHH z*#CYy6SNNm7U9>EbBMLea92aOTc*<5m`#r+Q!Leadu5++VsK5QKeI5)IW`L)Z4X@| z3uD=f9?viUETeOV!HC8GRXazQ5Sa=h^Djdff^64iy7DqaP-2^L(cbReCf!m7F=FQq zY~kH-cA#Ks@{0iBk|bxmki|OslBdwA0X<;BeJcgmHy` zfzHqxIFP$aW^*WIL`GVhG3VC-eZaY*A~yphY{kZMKCV=o<~Ub^m8|DRERGLc_|#6w z-EaMsO@l-Ycw;sUmReAcsBnye1e=T6;U;oNziw~wXMP)WE4L>qEeJ<)(u^lFc0k>e z+%fS+rk5s6=?v5VvCbEy4PQrtJzcqf)`J0{bI5vb)b^vr%;jgWM*R&qdltq8t(<11 zK8Jlf6iK6Pu2T}dxN%Kla4(+5PYz!jJ?rInkV{X zC@mk2k+JE5^n_^aG=zCn11fWL)bV}qAuNs{FZ9N7y*Qw&h|3R{zRM{p)hL<~(No@j zk~wSXO}G%^ug%FQx#^k>XrB$O4yFmX(shhJw}YOfq(4yWaR9naJcFf;3%6s5-hY-5 zbdt$DTiYvRX$(Wx(ZYzSi7n=86$BBdYEVkDfvkKt+No+nOGZ5>EJ{tN8HUoVnYGAB zlvoq^b#e|s2GChS3WW>o*Rh0s6d zA8t;$?I){DN+b^q>c0q}T-c-bn1_(|h^f^S65`@A z+eN>vK2+H5K=pN_tB>f4U?_|AP1f!g7SEalNIJl42uR!@JN&f_x>F2pn`(122 zNg}xicodz-z`$t7GVWLdCZ#NU_=_FypByDJaIJj`0O}Bb;BxL-D zBcGK}@r)Uos^{Ylt(k{lzRZHjyqViKL zS-l{E|Gp0xJjwnO{A*|MEVLZ?rsZ)uo%3PEm&V=RMg==v@T3#%@<#*-mcGOHGY(KA z6Wb8yiXhB9*~D7^RtTYfW69|+C3ApqjC$o^9J|Y5+fS8KNuQ3NESdUO0Du_K?zZMc zYd@iDh;Vm*`0+j4(ABv|u-aP|zaH=bK^aEkdS5P|CSqfRMR0WujNV1fW=>;U^U=Aq z4m%1Bin_v7``XfUL?ddMaz>o|3LB_4bODnkFSuujH!WgIpF6}2VKP-hJtwIX)Sg;9 zN17ffIPI|X5{xjn$$$oaAqq+2!a?KMN}&wymMejPHUgkZ8~qvh2Bu3X4DdPt1%Q26 zc^@>wrc{`w2i>-Rstp(+LHy?-BCT)RhaDktK~70{9-o@LIjPC4xy0O}7mH~-!>5q@ zQ_)vI76Dr~;nb%5Zz_yt$b0JA=4f|U1jUira=Ol?D?W63GQNF^CjQlw#qGg>6bX*P z{QgaG&tamW7N}$}9pK+I(`ln#jPii#{mQ8}4-}rUr1@PPh*N<|30oJLT9V|k}|ZmtsNGQ0Bt)t z6hsY1@E#@lo^NQE;TsHyQ=_xhz;p_GXI?xVplKy%@{WF0Ar$XNp%jMe{|lKS8P1A3 zyy$MZEB~rAMLSN>&-SVul34;i772ZA{#cKYB@wSPO9nhM(ab=*<#8NQ0?%y!9T;Nj z+ks}HJ|nHj`Vi#CkV(sdy{^&COnaUn;2|}gApV^6LrI(3Z_hi9_3jhM)EkU?Zry0) z-{H|8XUvn${IbJ3_&zalbFZrIiTbed{G9DooqEEssZl6<=@<^%sszu-8fkQBwq&oO zSzYp2%eBXGBzCAUJ&EAJcXtUE6ug8+im6h%+l+c^bl`5GJ()s&k{RsE#^6*n4e6uk zve4I7Zeuj}I4fPo{2Koo9I53f65ysGkw$bOU@)Ygib$Q=5qw)WR2O$6QSNMQdAKpN zw2H|lK%QKaLd(Ye{!@|lyP*x&jx|gS&stly?2{xmVa8+N3^NKKvkXr@HO*4Q-bR~m z;RTVYrx^bizA0T}AMPC#lXi)H^d>l>K%)+K{5{y18}6IKK($kOF5!hGLfnE>s!+^> zQ$IaL+dd;*Otj47=7d<{6@Zy_EO!HkR)aq&;3tIy z6(!a`4790YR83CK-rbu_r;!)G41m1|3{W1J`r(#qH4vVy;--k|e4lXl ztz{KJx!*leWb!>IS*pKt;x4U?P=W9`X@x~r1Ah*JX64u{WiO~)b^3gUtLG5fA4;(j$N%Be$O>r?6Ritc`3vCJXb`flEU8|iJ$ zA@L+Wu;xhtxJ!XX;^Hq%A^;#;2z*0szQ#__NS)Hhx-4tqteAtV9!TjF9sE4cU&FU3 zOW~DUg2;iBkmzuV`Z9DKctwa|a#1Hqz#vs!JHD8bA8^gy+Uku)Z=$bzGZ@~MIb(_?%_)};yB@T7%-m znZx=tW;?7Hzfx=z=2Uq1CyMYV8R9yWY%sRadbvqYBSeW7(Q4DF+}Nqq;imb1$~d?n z2*>Q8kxcBfgmuE+h*X2{+sJOdiDytDFp8t2Dty0r1;xQ%o$!q+wjJ4UOKkm5wZY2I zmo5>Jg*L{+YS4t^R{qm?S4z`i8GZ!t%>mNU0RD=oP_$=V2qUQ~6@Ic916rgo$_DB* za>aj8mTIvW5+Z%GbH3rdJo};1=JpoW&`QS!;8-CaGVs&AgHmrRv;&bX&4@`F8uCF+>rr?o7NVkWN^B5c;^i(T1pKURZLlS3N5od4Ly)Xe9wRXGafX0L@+HWLtC zxy&$3K12?Ee2p0(xvEJ{Ytx_P(1aE9$=$P8GEw16JDVsPvz(%$#8m5opU`NkSD$g| z$@}EK{ZppnF(z#B`~S4#?g`x)!$(pqas}nami!=&yNf7U`O>u<)vD!kt}351DUg=+ zTiZvt%sqi;q0szK`a-B3-OZ|+Xq@xPd4Sw?H0++Gby@ZpShoIHHXjLM7K%No@O|xk zs3qNd#~o;;3S#D-5ok#-Fd*9E6aBK@tz)QRmFh2^9reB!MR##9b<6gXcKjeH%`F=xoF|D?f*)Tuhmx`z}44J}}5xw(+svhbjiPBeA4=O#* zq%ZK23pxlN%$xXw6ZL$^24q*$MC%-~T}dog3?@NyhGUB#7$ZoBwelv^NV#xJkHP7q zhX?LZ-KVmxHZNvpRt)TVwXz`H4^zPVKk;+-K%I8vPGCVFVHZ!cxn~hhA0rH$#i;*3 zH*^S)uzskvc-k-dzAK?=5)dHV2P)tMc`wp!SCjxd*@qpw$tFH5Y0>5oO6XPa7$;69u-7Lfe`v&GsK=}0LDTK2LKoz;?=W@0q4=PA0X3e$^8 zu$e)jP$1XqjheOk(r<9apb#>$MWgr5MI(kbWr&Hh(@C{S8g_-DE&jJMKnd_xUN65! zR2~7_vU428!@c2IM_ge4hhW=7DopYwq-qELLE2~1w+FFf>OJq7nE$R? zv$te&^XPS!srfj28>Ae`*1$VX6kW`z(@f0+VU|4+P}adX0|x(tF*jXU0vlr}!o}pX zICMyTdpLRYpWnuO9Jr?-v#MTX3ZEnA$wm`)Z7`$&K74$omYuvyfK zT1$Ts7ALay>_KYY8|Rrmr16Pemg^V?0`8ZJc^Kmer{9lhYDw)xIzF{reS0GiIa?OO zR-Ty1FUDUUSRiFx)zv}McL)kM4R4wDuxS-@=;32U8KuvXgMgjV2xT zwU9b#=O$jnHOI3+pvynM=vE2)Kn8(2YJX%v{H5rJT})1PpuW)=u{2W zezTY}Q;Jkp?tP0u$|(CpgS0P0v+vGcS7NM@zPh}r!@koQntv7%v3Qhi+!fx*rNAvw zaOfy2<@HGw_!9w(CmgUTR;(%%s=!q|Xlgz#JPsz=@nBN*$VQp$Dmooo#<5vdl2 zmd(X@s=Sg9MVq{0{Z3F%(lv$l>Bu??XH>(5v`PJAjl^unHK*wp-g@pPYO*Uty^Nt0 zRyhQhV9K&nqXs@TxdY7{FOm|0 zN7hJ@B~}4Zrki^HpW|58?-6`CH^4{B+Ah#AT?4BmFV%_us<)oIS6fB+DjFs1sl&Uh zKnhYVRPYq9g<-fKaE-A-Aq&?){P&Ohc1~UIeY&gTUN22Y-soL`YSd)d zb!akdj>*CI#MF$M_pewyMp89|w4_=EE)GcyF^sNEby6y!QJ$gSw%I*5qJe5-!_uAO z<`02M&fJ;IcMVW&PUdM>i$-@s^`xz&F&IY`b8;aNvQmVCsOb6llOLLQ2P9EbodNFAq~v_Cm$?T+o0l}OVKQp! zm}InifbP6hNj@CB-L#i|%W*0u`e2{xpIxC~)>EN|aBwLzS@tNR#JZ!*p`UGbbD^wx z(aQKd^iI7bhc&vO#x|qfAo78ESBjy!9^M3)jh$*=8u{Ls-3~=nYC%2=usuf%zEK9* ziXmEO+#;cM!pQCn40^vp)(Hl##=cJx(*pO7xc3}rsh4FaWFQTr(%~2W??AIBJdzM8uHQr`y==?fv{E#B`kC z^F{nibInfD8UN0Q8OMN@mlT}it?RO+Kx`}=pxTuqkq0OkI(~2^X11$tZVWRTSoUV- zAuI|vy`-n0f>dG#ZFIk3n8p~mlL%3ktd&?^9@A!zr0 znAAq`hQRzf^K{`ugN&7kMfF)vly)Uv3=!=Mdb*o6-S-*`Sy)r9p}aBati?CywTS;q z@jO&Vbkd@jSLk5=#~KndWI(dvFC!jg`<=xY!u!(Rc(f^uy;(Q6fmf)EY};n7nyq5X zs53|O9lxe_oDSzT`4~lSAwOAT+XTJk59VVb4B-!f*FT)#~v@Ei#PY z$F)Sh%TcQWYBVPj6!iTacp08QtCOB!kODdSD>h;%pt6K$BE#$Q97T@tf^W^=F*H87 zVlskS7;Za7+}e(&_j$WZG8_PRi!Q@ zao*-h4`Sh`fzRvN3LfqSge-qb?)l-^M^h;HV_qIfn{5n}F#^1|6`;t>F!9;J*!zCv zz^3ob-VuE8=5~l66gSSV^K7l{*+|j~qA@B+`Mk`Mm7mhCnl##7ZemYwf~N_-m%3mW z5kS?RzS^EAq#gC$VzyW~t$yT|>ZY7Ge2iDJ4bij#Tx?q(Lbfx-hY zkgyD(<&cewcX2vrQdO-{A!&a)xneo=9m*t)DX^;O)kzIsrLL2?$QsjZPsHP~b^*RH zs!WRwVe+owIcL8(K3=md-o@5KWC7{_mt)eX{#TFQR-$*L*S5KG(rMzZuI`6LnnFNO z_7S5Y;P^pK4P`P|wRve4stg{{H#V0nhKnz8}yB%%W_!~En1PEM# zoT4_U-xJiom)7j(CZ)^FTD8z@>HbPY=@4kg&t>PIh9K3|T3N5Z4*4totTJo*hV7lA znrkE7lE6&a7dfgHD`NhdvncE{1Fpl8U?8w~P?zviMyTovj)5aoCZAOrrSyb}&+tv^ zt;n9Gp|w47ec%VXKEQW2=UDo5cH%6;qqtyS@~{`tiEkpX1xsZT6kQ(&WOAu}$Vfkv!cfZOu-U<{b8{Ot%O~8<0wHKf*H-b+8j+gqkL6xh(|Fd~em9G|ATJ{jG&~B_s(N z1`!#y!UX$e!mKXFOFVa#fBAJlVSOOXsHiU0Uo#0~``~=o>E?WUiM=bjuP8$Vs|xjm zA|#t=iy3^e_|rN=2U4w^&11Y zRqssQ{kkC~cvs^zVyppY;shpVwCn>Is^ z9_GvKlA`n%1Rci2<<@-gm2wtA7$N_6dtx$Fmvm8%z-k$!JTu;A9DL2eQDiV)aLjUa zT`qeg0aF9zO8syq@Wre6=xp6CqJtYl_f7Ab2=_EeSluGv#cZA`Q@J$2Mfk>8p07-bY_VxTr~6$1g{ z1BopBtCSmRem6R_r2giF@oK3$-jo*(Dxgomtv40?dQ`<07cGy64ArL5*)ZiwV(OhTbHC<@va6EBJN%jl_}0(6$C%m^wZR0k{lFPR-*cw zWN)Z4R92hdv{E$;%ego1HQBq?z6R#VG4dbvK7BLrQ2CL6X5JIz zV~~)#l-@s37w!|`7E_FO1fFV1MjDg-+C*Z?=@=P%RU-N#spokbmd(zLYr6I|+19Uc zT|TcS(}wLZOXfYBCyLR9)BvMcn0XS4%{Za~t?5bD9Nk9B=p)5)gI^xVEFrUKR zBZwJGJG3YBSfkGUsu3_iaCXeWA zhClo!XWMxxq6wT*#d)qS-z&id+VT!nUe%l}Be_S@H?FbxSZgVBu^m&wdu#bO@Y#~d zjn?}%94O}FL_H8MZb!mZS!lgUhT6Mn?OTd^2uycn9tt5pII0Fxc1b?k9&vv7`hvaH zM3!@YGMDgG=S1H+z@U3m#Kt#+Pa!|7DVkQ3}QbdC=kTZ!@#vhdA&8MhRt{G?LcKKTO* zu*FU?n6AnO=o}C4D*nP10P>pZ2A(qt*zqmTVMTAYI6zz6hD_cpj$TIb)}*;f!7=RiIYyQ*0Y^s>WCvO)SIIPvuu2Q5@CKBRCmvi zm@*-%sSGzbzSp!AMEDL;IB3$Hw>c{+8-{zJhqGJ zyh>Q>+k@)6`s}rg4i0~SC`(%20GRxk)=GN)3;;S)HVVvwGTlxg=tJ*FuzGb&15wN! zwd5Be0Bul>E=s6 zzych*Y{+cj=5>KYMr?93iOfDeb5UENAcW0nKg{<8?ye)LfS)RS2vDS-$qKY@@;1G@VvVC`Ma#aDOC#-_6za0e`AX@L`89?z;(QRV zjLj$WF@dRb{rQn|_ilciWxX=1`E;tsfR0kPZQwe0e#QaaCQHG+ztwtW`!H-U`zopm z!<0MHP67ytnqkRD|7ym>B`CzyV(k_~WJA%0M#3RxdO&o_j!du@re1wKiQ|6wc^Mz0 zk=0L^GM)0T>c6vx8M_lS)W>AMDv+&NdSoSva0fpu;n~{2IaVB0siBB9u$mf7tqz68 zmT~}`$z}o`z$C5&F7@d_2L#R`Kjql}e{fSX)+xKN+K;KAIs3G+P#vqh8+Y241nZnm zpZNxDQ9~LR?~{yc(Wqw=)Yr!~Dm-@PD*i&E$j=KLI%~TXD||`ncCXI(7#t&TEI^_~ zKWoaIKlucbs=+jq5H$MoOQu|xjYywqgPnm1QlaCn7S!J!u$4V7T5Hd<6@Gnc!17r< zOZFDYGkK8M1v+O9Q2&*asVXrzKUqCf2$N89%=5+kB1oLES+A^(mdlrtYq)AAz7SAq z!p>3HGz+(zI<&C{8UwqACiIwVfUsiemK#!sc+MPjRQ6X@RLr^Z(Sl07B0{*}^oYAQrMEh+lI9q43qZ zMqX(Y>Tz>dC;x(sRjZu}6!FhazvZJ8N9WUGxfd7*H=5Yr&VSuRtuSJf@9atnI|~L+ z!w>%G?9)EaC$aSKNdrwr-ujNL!(ojfJjX0Q3j)cEVLUZ_`<+05x@J7=ald|VqI?&P ziV{}tQLL8plJMql&4VcFrJHh(r_=dh`_nHl#QWb;4H9A#Pud| zAa`bT{xo-P=~2-lw{=n+E2GoL!s34jEfc%ecozPXU@HARRl1EA`t6R*Ry^!?hu_9l zYH8Cg_$g_w*&TS+Rhj$Cj-rz2AHGR$Y{?~W>^N^Qd#WojIJxZHnA{skOyd|&|9RDl ztr%a7T-0eSaTTQ;l<;X~#An<_kOHHoli~8SJU-j2&TQiv!+e%W!Ee7g5Rjz#D2(jV zV&Arrq0W;p<2WQHofaYd2uIrILn=}C2~mAmq&llMeHvT@>&`=?h4m0v` zj6gRvh{}T4iq6D`ZhX14pi8_G1TPYuCJ^=1dLh7)xhK8Kl%h_iP19qn+dkp@&BYP5 zGv9Na=unk%K0velx)%Oe2SOtL{I%RlB*c;!R)Z1WQ>u5tK zS6)6r-Yq6ttk>CxCH1K}#ROOtv6lX$WO&R8H z4+K?I%#n?Kd>pYu-t$x>!J4RkI}l-;&0#lX{qzD@eM0wP*OfFm^4?C;i=w9q4RfUI+yxuly6AjKFA~Lu-YdP_cfr zxgisK7$%;XC{Hn?yVLouN=3gvA%x0ki(OU>N+BW*I3)L$9z!Q>lp{g3nMQF}IuM&H zWu4Xa9ZZpaCJZ&07>Tkze63DxM3KmTrmOjw2@~r|TD}{p&lMtSU^`EJn|8S1ZCa*3 zcZ1YF{_0kibgMcInjNEouhuvAN_VC!z(bmLpj=y$_uBG9(r;7Z!;KHw;L*apOgNWi z9{MVY%Vn#`=A`}t8<>o0$6DwmrqWk|Np@F86^K!CkFA7)Du$ZQqPJ?CH3`&uiTD!T zYX47Pnz_{7HL&ndtpnoFb+~=);JVKKE_*E*pv1cQqfCz)**}suarVsam=Ue!?bu@) zmks~X>&A?Eu@T-@aMdh5rYkdDUxixY%K?}~`LN5wg3k0^)nh#{?jxF7n%#;W$2s11 zZ)MNz$kSA^+Ryv-0`kIwda1QF1EA})2bOu4Ywgyn4v3fEhsu=_Es-X%0zcIzks;j8 z_8_yz{o~`^SLN~09Cp!K4%~EIsn%ym&>=GsFyXnVPIxHQIGjkxNDzrw187q4Q70ex zbh2zcf zSw9F_1ykt5>$pLlzWy?0tFm8#ki950Z#E=n!A~%|TOXeOwXvrF>p>nN5C=z`uX54j zx}1-hZT{9fOoar%eDkv#5-V_dq>W=}mMD?mUi!H@xF!ujzsmPB?c*2o#Zb8Nd~SqJ zl3#Ei=huZc5p3!l5zcBP6R=c&z@~G%`QnG}ngTj8UR3#cVc@@cvv446-NBb>qqtlr zC10GpO3+@9U8%S~LcD}>v;_Ck|rY6sb=W(_WBOCGt$ zQlr)2{mm5%hR+dkFW-yP^_^CJte^1}6mC0c{(*I)48xL6KnS?HJE)Lw}KccJ*{# z{qSZD1vj6f3$f9x7=MV;5#wI$#k#Mwd{MJm=ahef|LM;5zD%{D9^$|&%Ii5GZ+43g zS`njyCmp9R^-V*>JSnPNxDI0M{&TUHooMopK;nE&Odiv+puA+^ZYYSfRLil#pIPn* zM2`B%S6She54n>RAS0OOlZG4-EIO;fpak|rCi4Ut?NHta1yRa!#X!%QrjLgB0fFiG zt%$lOQrYW9a}EmRU>O3)RW;g+eSZ5?dvA>I(Lpmd`o1Y9-t$y2HnVjH1cc*eO~?T~ z&IgFS!aaeqBv7hdE&JLQJGdohELe}OqId~q>iCM?qB>=c_)p|{C&ZWbI{pu09uy`% zT$I2(GsqOa!Z0tU0TrRJFaTDs&qvt_KL!RE5cpCMiXe9%CYoLxmX8)r|epe11t;pa>NA7NkaFCBxmA#jN1ktdO0p}0)2dnbqr*@WxZ<7Ld zQXm6-@C7-oH>)msji4&*N(Je0*Tz>}Rla+;fI&1kvG4{4!_X}p!CR|p1wO;mR+YPZ zo|VdT?*QI8aIi1QPa|o`&Y<}nFNWzf0Yb|ZDMqI&9t@p)kfBTBy=m5SCeDV|iqj}p z+Udr#b_j%ZSi!k|?$c;c6R$7S{(44*M5zhHzA8duAklh^;0xb0STRtW2EV*eq)BgJ zSF(KW8S*k?7Zvw!@jvP}$}josM@rV`W7-FYQN621iOU{rh1O|Rkk*;qP8a7lfB7_) zIgLMs($0OOJGDuP3iQIbc7LeH6k$2-3`5**qw#bF!B)&^NZVpvyrPx0)$C(F)|Q8+ zsha+zgPY|Igjb3N;ds-QbH72XTE!S2LQpsMCZpkL!_P(DJzuoY#vg7o(gRWs(~tQ+ zr>TinV$U67e{j~|llz36`^E)ek04no3e6P~me6gX4trlUm&F9fzNaL1ILbm-0*F^y zim-v1xiEwK*Ms~5X-FB4#KLQe z8fA%cA&I*gn|%-#Ec#l&=okND6P=m#F_DbtKX9^Xw#bTst3Lk|6l-uTFUd*S2@z8u z?qp&W$8H{wskWDKwbYJfb}FstIOvw_3ag-#$p52dKHy@$W*&6VkqcpnP=08r5*#E) z?;TYOMtg1+2Vlj|eq<9(yK%%-(NZVeq5k8NSBjheb7SpCQr}u&0o1quf}c%Q_#fPt zs0(6-Gub3dq@Lo{F81jo=US6vpz~9$W=zSs{vQ*Lfua~tNVPe*Nim`astl2-WRhN?I=_YJ(3NG{T2JjCp*vB7`})Pdu!rh6Mbmtf zpqcsjA?9>EW&=^W<8jKjoz~=v2T2(er@E0?q}b_vlJWFi*l4Ks*=2Mh$e?B(3377n z=#<|LGYhFjIvvr4eARH&o|Uk?(}J`6u?6I7T+`nQo29JQq{+unj#qMJN{`9AV{KjY z^bnQpwDcwfCz~0)OtVW7OS;Dx)$;g-*zl=j*bgIkMuZD>^-f+CCQn=zFdpXpy{!_1 zM|Pj3mz4ve$-c}IC{_ds(FC2ju3RHj7xoDD4m`oUzw?PYOaiSr9tT#^g&sf>~WG9p6uXE_DbDs@gO@eoz1B;lp5goo>s`=3AMzF9<^jO>8Xxeu~ zjPQEF5`zAo5HmiBoYrksHP_~!-^F~<7yTZ#nspo5UM7Or5FBMuN+3i3amW&s4{p|o z?s}Jj?{VBMKq^rP?x<=xh+NJE5C3j24d2F~yfcMWh@_1~QH%S{OX}XM%&Tu_t;CGr zj{@_rd|`V+kos(^>Y@!@>d23FuzIefVQfoy@7GsQLyErkTeN#5u~wl;hzu~C-uJKc z_R!nMEGePdb;+hL>?ISF(0(-KS9ARnvMy3eP?3e;KpAh)mXn#q-v0H&yZ8`-4&AW( z)Q8+1`PD$W`g(f3u&0yM@P1aEyKJKEOeW!*6$LChdoG+&G=A8Ua~6LYt8C!t*NVLG zW%E7=zB(j23!8W5nY+{7@#}cpFL4#Q!(C z=pKZe7E$>30lhNSmC5Tyx2Rk9x3uL2_?HnRHks(lX~(Di-9@^G+V9 zr)-W3W_IXMoaSyLK~>u@aI4eRWPaM8uPk`o+DchC=0XUE=K@Fnw^VH7y3x-Uh740G zoejU6?l}5ahS@(r=;;C!DHy$+sLA|6j;;*DPZImq>)Vb9Q-L6yXShBp(Gmj&z6u%v zPYAsmNCMs*xZ^T;!7)ep&_nz@LO9coQ|zd0;>_WX15^rz$pj>a2{J2*;%>marx0=a zwYn%Bj-&k&w8smZm4(LT)$bJwS>n=1o{KvDJE}SF;k2BK@Mg0?y!x=rO-v-TS2B&` zFl(C6#t$4z=U>Cv9N|XCZ<6e3EO>j<)Uqe@%s6SjRnh~{;5*Pz#z}lYO!Ftkvn{10 zD=o^+CkkazAY@s1-6Du3e=t{F3rg%)shdg{EE4sr|<)Q zzJh7yGn8CI0St-%5uMao`mY80s*r?RYH@s1UaFpnd;Lb8<^lG|5oPmXKtvmiA)#B@ zbvRtN#%0^sg{in_bK~DGyZ#I;Xc>I}>Eg2v@0)uV-s=LB7wM1#Q6k|)t9PAT$5#F= zyF~+Q_*-!o(4Se=@44U_meig%&;TXe#}iuEU&G);1<07Ck*1FX?n>o-5kJvo-~68% zlFTwKoO!P~Cbj0Qs(_zTKWH(MI)??!qNoT8c*1q>kEEjZLUY6nKPJo5sn^&+B$g>P z$hzl7cR}8G{f0Xeu6*+rG`TBvGaxK~3cHCB%j6?xO}p0Wis3A#_79^q{(|H+j@Dit z-j6bXh?h=K5OjHPi$X_}fpht)Eik8#~=}~WKkRPZ^Ggdrl$T~oE z0f}_oI``o`_$n`z%3cK!aa%lIjoin_`DqcD8MLm~&f^NG80UM;m7ULAB8s&mYrj0r zf587kWceInY- zhy8>2iCX=QD}D2CXZPz= zGLg66kHJ8ifo)9-&84~mO_;9+&&~e{dDiU}*f!qC_XU+V`iU(mg~W8wB$|!ImEFf* zocP^xm6ps$i$Wf7e5p?lBjOkZk>^3NUk_kDwk>T_6F`w2oyN>l28f{V)df7>2(`W$dB|WexG{Vr1xD z7EK$~5Lu$4jGPFaTi5TyhzDCZ#R3Y4i`9xQJ?y8?8N2+WdKqeq&*rOx@4wgK&2|)O zb7*sV8gU+)pDShl;~pXQrE}kGh6{&D$=yq^ZpRNZIKX-7G3KTLlW(x-zl34Sx7hFY z_MYf0*=NMALzQ|{j#q@*o5NZccx!d9V43BPEU9#^<0<@ye2yHr5qB_^nOm>0HRIGx zdNPgr^X~5}k=X10D6_jaw0U8kz$jsH2j!ZQQP`L7TKHH8T83-{EQCTal%=wbT9w=> z$5jFCQ^=mo(YxbC(lcm973{p4cKZAE+= zU&PtGLsN5l>RVA!Ru9bMF_VI9%J&TCDGBC|bYeZKeGc)e=L^&+disjhQ?{+lZD{xd z-q~SP2Q|N$Og|nqbliJECw-wALqU(qL(yUzgVBQuER03zArV&uf8%I|oD!T!-E^Gz zb6CPsPyRV?xhSW)i4f{Py+!{N~Mp ztkQJEpD#9^=>fHx5TlIU0l13KBejjwhxTwp&Dbcl^?5-D$jaujJ)c9GIaFwa1x~n7 zt8(7plJn7#(7{Ct!8+&6WNwvG_wXD@j5{Ws7b(0(nov!Oh`$Zce@u~3Z|{3G?|`5U zU|HiI>-%ntKL9t2=V|A+Jul-Gc{@6t&r@klI8ws7Z`B$*@#4-B{_*vWth4J$YDD@X z>uaqnlt-Q0N{defrQaa_ZTC7 zD|!;LuommZHKGag&dTEK|1g)5TbYBGFcfLEFTXWZiSY9pbs;m@D-*l{72jH*&zeCK zd=kCcTm_FO^vKgeQ3CDG!P;KD+|biyWmnF~t%4w+5T|NWPDE|5F;C-851tzqC=?ol z0C~p09!;aYsd?`Yl6)VMeMA*XLE<7&FPcBGx&T7vO7@LNE>T|EXX~ak*!OvOuIMbZlJ6Qq5uO)N6SGl~RxSObhWB#;vC$?`5!3+-{ZfaDEu9SPz_wqSi#`Ec$IDKiv` zN}rnK_I9IYAb-xE3f<_CUD@lOhKGQUMs>blK;;EOSr~s0yU-NMok&(lnHth%PV-*B z)NRq7GxzT-kn?9(+Bx#NgfGx+|DDK8&th^Ue%0iMt<&!MFRP#(0G12HH$bXssfrQd z!a!w3h4bSS1A6oxEoMBf30wiUEPN$zj=aDCC5YPE>ZWXCtbX8i9Ib=`SW`JiaPuBW z@yjk5r6^DKZYrnpj{c}M$iLzb!pURG8&d3sNW)v{oZ#(C;3pyFBb|Be!h z#T~FZ>SLRh~@L}(WVFsN5f7NH-S{%v@& z)~zHOO8rYg0dw~DKwaZMypx!7zMQ^1(-}*_o#iRS%qeaXCqEu36$r#JKWZLMptmcF zCQuEmlzxIS?#YdX40w($Nh?SR!rVvQA->9h*$#KlrF7w>kDl^#pQ51jtay~BPO?#O ziJ<7h?u*_Gd~X|!&I5l91XrV5Eei!1w@EFQ72gtz^vvkM!0_JOR;@5pJ9+5+q>loZX+2( z7YM|Nnwbd&EI#>Vs+0bm=y|3_FGJ#*U|-qj-DGZoec=b%6g+m~0Reb4k$-IjN7`gm z4Z%MB%>_wpht?{)?t1_w1m?T+js$+_Evv0=y1p$unq%~fD&_Xd+y-gjE+a__Yb%K? z4^EaIGRH@Yz!~vD1Go*OHqn9XZ$4Gwl1-U0*`^4Zk=PqTwa~o9N~qM9>8ND1j%QqWll*YCb!faOPAlSPF z`CB``?N&U;)x>e5MY;Q4fnqjRQ?xZIsl0XWM~39~W(mn;bi*pG9bs_jag>pbh45tn zfq~60WdN56;YplSg28nAQ5@iU2Kpq91btE6@%pN=MQBkT&yaAI5hSHcSeA+Z>0$0B zk;(=Ta$5){P2c{@l;4x0T^!T5Kgj^HGt_R&6@)aTnCkM3n)8&z5Oc@HseOeH`uDi~ zC28jEKuXf>x0b|#WU(?{MK1$hlugP8vRcD8&sf2R6t5#Yl(WkYnL*C-Zgle`_`}6? zT^Fu&gUrD1PO#gv=F{!FncxdZX@|+=g;^Dde)zF85o7SW;5P7VpC5j@ri<((+CM#M zviM1ec2~}va7pn)j8zs+V=ZxzJL^0kt`!QK;>&!I2F6MvzGiKQ2`qAi2Yu{ye5`X2}81ZWE!;vcy*Ogq}&9+^*^6-hD8TZGjp4Yi+h zwK7xmb54tQ$xse(Eb*2kNRB~v)}NbN)&2&s#^lpcYLR_4pPw+V$ft&Y*2YxOU(hfyG~N91nhD5zB5vcbk@ zX<>mRk%H$q=pH_*rcBMpTKf(RDECM*8f{WJ-vX79!M|7ivL$FOQzoX(gSk;lPu0Xl z(+g{pHaV{-Vq}UtFQDky>hEGa%K%ui+Pu3^kyi}MH~+{|)0a+L59mJ+xj<;NdvmN+ zvZ#)cH}U${8T62=6AO>qN8?q{olf10nm&=)RnzVMNzgBZFXwh)-@+?97g-|0j%b_o zP@V%Wl4y>owJfd1P;Mo|6$fI4oI5-Y0?Nt+N~2alZcr=_)nvZ>cmT@LMx%4#Vmo>t zG8T;gjPoOFMT{?x__BfGXk%1Faw&lqqJmdYL)S-}Ezfl%kK?Uz@r2AHmKMjQ_FiR; zmd?-7t)AY}TiCR^#HY%p60!%sxc#@je`Z!y=YjAS!|q-R3`?osX|%pX_(0e3Z9@yS z?INWwGje0_8=Kq-kWH^fsO1=a0=I=u$WSErXfWhi|4qt2FSm(a#= z3;GN70`qQ}V?7AL2L_KV=1@X4_3aIkz-wu<^M(m2u=o^lWmaNJdrN#?_OXVL>c8_2 zHO7RwY+5l;%?-I#06Q)GM_Fl<3GFh_H7VwiB94LsM#l|`|DFLii=SknbS7%6eJyP2 z9f{vXZ`Md|;~sGeonm&s{Pd;L4{;ch*N?k74nq!eE+-PeJ#*oWr65pIB&n*5e;OMm z0Vu5~U9JLh7&q{*%{#MMebJ-2|6*iueaKp|VF1xUYLI}TzlvCz^}Zu&I+1uVaI~cr zwpn$P9`UW?ByvY}^Zfw!1wt;VJL!HmkFyNvQ+jRE+;QQxit+Qdq>Hyvz`_w57}i%D z|2`=35cM0X36GlQl|#T8uoa7J{6VJ9IZ*+%#*HEapyj@V`$nsa&|oJD({f*Ztl876 zz2k8wznsK`*!2L8GoDIfu(;$0G%ylt2s#g)7n+P83zgS42^LDWDPd9AeC(vl`>}6Q z-Nq*tE)DR5h;*#A)b)nwmRlsvN6s{8;`US(AvU!L7sSH)KzE@Mu-c7% z30#$7$L3^eSz8>Yq3??55rd0L6u!I3DlWLMLMB(kvnUeFT!0@eU!Nk$iTQ1} z7@b6|0;fpOd*08AdRBchGqg2QHa}gIHUjmzvo#!pvm3Bx$pNj^eJYw-Y#9A4sx8js z|0*rrRTh61nbqsDj0`&IcGv0BKF6^#Iuf#cSbw&@2*z>JL9^oqRP1@co%>5dSRQ;4 z67-+ouaj(bW5x^08+$%hVk>MPX(kYI0HJpmvO@f0&SUiKZ!Id_Xb(N6FZbtQmm0?4 zqtC-RBX0nYygWuDzWR~5q7aA;$(u#i%!4%SHEms6mwi@GPKEEf?!C> z0|9^y4wRsgtxszD}*i;C*(rqZBb6J`)?+-P{ZQFY0>a6woZ`_RHDD1+l} zqfH}rVh#4Eb%v_(Iuf{Tz+~`6LD9&cwm+v~1*oT+{8;I6m$uoT&Q*K01)Ay>8in~= z%n!xF1${yfE`%F(;>19Fg}~Z+ST?v72T)Lec4pno&VhO7e%pVQQUx0ueL zn-W8duQdodRF8`lbco|NcH^`%$2PRkG0dr(I@aG37GeK)uzGeH4>Am$oUN~9Bo)|X z<~E|7UuBpVDLM!u=rG{pK$5jU-4_pQE)F<9@jxBhtca=5X9afGNT zFs_a#_%EEnrd=+(-C#{|0&~+jC|DS)!}FR2pg_X$KzM82J4+S|CmIqlmsDBxgW?NuHDk`RiIpY9}5t zZqH}!b^|YODEUl38yA^7jjn?>$t8vy%2z(F&=i+|`dpijUapwSldof?64Lr@;0Yoi z<*-^Lc7d{0uFa=ds=(l>HR}siQm~fG<;DC`id>a(D+6D7GLSCSLk<3HHzDpVsETNX zLi}jN43VE!R*fO4AgwQ=bBj!Q<^J2Ws?%0bc0WrLuKbX?h+SsMP^!8SPG3|Cst7*<;a^~p$IV?=N zy<25VF3B==9Z~ZR&n~*=qyn2#A*!uH&yGwXNxJ?jGX1{R4`<<6N!fwF@+6FF5(@L} zd`|WvL-XCb%}qTm1FvZFbI^s^AczYnv@Hy*B;(Iu!Q2reuUV1%*pisi9 z(Y@l=U&dYs5W%}y6ccG|1}Au}$nBSRu!Fclvb#h}0tm#&%ZHUntG3S9h{#))|9 zq%6-XgR-mAc$u+P<2wGg=5;A3=H+mfA`OU~2~)kKb2b*%LRwlQ!iz#$rzR68WIf1o z4v)^cK=12X)`SWS7GY?U*{1DZ1jvnv-;U`vDVsZi17m&JTA4)by)TOgUPG~-T_CS%g2T0p z?7u1?IHMWh=7fO(wP_DQzuKi;&c)1Q)wCzttUK;sN(3;5eQP%q^wiYViUW+sw7$6( zWY&bB5v>#oYm`i$CiDb6;55dATe`NkXUnBG{;uh6*7r2M7;G8 z848YkP-KsKbG0XAi@4F2-so0}u2}i3 zYlBr?_++%9sB`zG$P1R77$R5k76zvnXcCP81x((rXRo{3dbSMPcWIvJ6uVjvFeL>Q z_8DWGBJI&>^|x9eS24Nf!V@rQZMr|*9$=EWSMALcWv zrh$AhG+p@{j{iXcSp>2_)RR4E;~=}TCm0if1wcAcx|Ub z1WK42Jg|hf?G9Z!(ik~&?&LbXctuTo2V2V_G1!7l(8rxZG3<`Bvl%R;I*#J05B~Macqx8>sJl zD0DLp#wVCqvH0l;<;|(K{U1s>xYvM#;?P-VemP77pz!*H<&amT2fo=T#=&*PuOAP| zmYTi)=LUi?={HV_en9uWk05xDL(mEyuv=w}!un440XfT)Uf#0E9Q;`X!+&S>ty(K; z-Cj?35Ay#p1>#dfUnWtNOh*0j#~$p{7@om<=_T<2ZAEc18cbi?Se^FPoI^$`-8@F* z8|8l*g4id0-``?k$A5boYPRr%So$IHk_U$U@AVwuh&@blKQnkAAM8bw;1vbFfRQU~`QmsK}$ufx@EXueJuBxLhz z0ycr{lE^4EYD773*3VyfR-F7#y59~sms%y1cxfc;;Yc+C(bbmdxhy>tmYi#petvjJ7&Z+`(X zHY(3R%=<}WgEVjj*=%yag(d<&g3_VXKu%ksy%$&h{}I9QIoTeMd(dbN$NXpcJ}UfH zxFfQJk;8X!uG>O;@%xI6D7l+!R5wyo=#QlAkRt~53Ne2iico+9bOZ2;=z@0BA@lJ! zHn!IJc3zz7%UFyax7Hc)Tn0!|cEIH7D{?-Y1rxAClP9JT+SFv0&*lw-RV^(&?tp?W zSrj5M{d)qPx8u)oGf!oHF65IHG)c##UWR!-pV^n3u^apZ9K&IeXj9=aKS`Hioz~f! z)svDCUTMkm2<))qd(=hCC2+I@w4U4DCcbNDGTyTB3x)x-mW}jw>92ms)H)hyCoz&< zWl`)hvJcTJ#Kq;ZtU&0`6ND_*8A}j^izAY7~_LpJWnFie39~ zOABy~EMFS)pZsHl?p8suiR(b>;Z{0>N@4dR!X$p!cSXek)3DYIY-|CKNq?n>PcL zhx1DGQM_Q)_%XMzI0&w}$?}<3SKW^R7HW#M8`}DuTqi;DOcj#$vGhDYF@bzhN~LJu z?Lo6aE;11oB1AF9H2-8=|BAu?-O31%O$?=?0zbxjA3#Xp0@KI%J{K=+yRw~S22OF9 zy0Kdb7oI3ssraa?7H7mW1veWBpdC}aiUtP#H2rVq~B%ukR&k%D{Lx_)^k|05+(az6VM4`B>>PQ zIw_-Szr0Ssz~?pAKkg!F6G$NPIjaV3CoA+St&bFiCc~t%vKr+4j{9i-aZBVHIC}vI z$(HP=a{M6#4gDk0%l^#<2jQlrgcoC;!>{opE00Q?wNoOm(t0n#8(b(|SoWh{3i*(LOTX0F0u;BR?Y)Fr6CWCS*kg7K zv>BOq;=u4UvM9?HC8|P@%QigpH4CPuYQtMnVwXWye)EhE%E)i$u5Qy4fEd{-#U#&< ze3SVVW(D&i=?z!9(#1PbG}H*HR1W3Oc?r^UgT)0iHD#0!HYh)Qr`9KBj%xx$q9WIzng*Y*doZgZ2$aRV zsg-cywM&k28x{iDu?tX$j10~r`vb?ZZt}y9MUh-TBdAJH@XeCdfUb&JJHk4m#PCPs z!N?bzRo#p+6=aW0e4|xjo}r4o{GmE$e~3@b>q@^YtFRuHiB{==~^L86puYU*?LAgO=6neCNEe zMgQ!A-GSxdf^NmbXz`&E&uYc9^#Uz9dDjA#;Es8!Lf+La zT|(lp(Y;@y;&$0gPH1nT#^_d9miew){A&7kM$#H&g3(63$qm1WQ(C=iTLIk98b5M2 zIgHJLbOH{rU*4+7RtM?0mHXnMh8S;x&b6f?-NiDIahfhR*$yGJ`CuqWRNwtmsNkuH zp_!TTKf3JIoSwH1z&FlQl>4!0KexB1{5N;I-c8KEVKhf>yu_8T1u0U$P)`ht^hSg( z(yTT-CPSt@UgylK{E{_)9nM)G9Sh}f1509ocT$sZu$snuj#zl&99T(MP>+KSL`F0> z{wny<%t+pD>+)bF54z|gfv(B*8M|q;%`-JAdr3aGevmbroG)T?pW>153a}4Lh{O^K z15a`=g<#bKo4Z4}C?2{v`xK!2Fq+z8H{x25L0ryMhh|?qx=nl3#bdc11pMEyqp2Qk z&_=6~Cn*dPpYL#0gVzbs{9jGMefrR~!Ik4}3GRyky1Y3W=GKB6NL5CMQ*WHI`;xNdug2k+VX5X(1{&qRuHLsRl+zQaFl-fI1f>moEe9>WN)&m0Iy4wBODXg?}s$#|lb&Hg1=6$?2AiAF!Yai4)%0YgS< zi-!7(LQhZ-y%7{Dr=?OJ@!Z>rFU%pS_lRA@wK+!(A;U<2>2i^ZbO1Y(s%%7YRp$2+ z)ooT9|IGsrkP%G#jDEGv*C7}*?d=?dQAAQJaqlds=LRRyz;q-D2Xo`VG^$lVgg4(A za&5)o%o661$iWlL$3)DvnVM6Xu8|kom6%1+U^%y>Vm!=L3mj-s#s4;;hYyToNXJa( z557j}emiLGiYcp7PdA$INW%DUp}y~mpdTE27Sn_KhFdXLlf*uVjbRKRAIt4>m<0q- zy*w_VOTCQ%n^dXFR|AeYYB#kjKKW;0F|1O7*c17St;-rw*|EjmGvv6lu;sZw<((FG z0Fx=&$z4Th>`Z*Rn!ujq$B+?xXupr@VJ$}SYR<;I(xqI0DppMOq7yj6bg@oG$lzko zB^Y4)xCPas^|BB5h1%uhzP6o9?l>;X00+(F8E zEpxGl-=9&-d0J>#YP5dDSANfm)ON-~1eM~N-1KIg-!1!&6qX31$4H27`p@2Up{IWB z8^gA^&xFA#E}b>#Zt?j`a6Xr3;2#J6XYnv45(Ys^X(=}J+QUV;sO5Ykb?h*oFzw|S z^XYOKRAi28LQ3Nl39DG(Coji-fP)Ck%EljeL8iTaqXZEZD-L0XL_aqELa|OpdD}s% zDT8l*C67s56#+fK+QiZVFbQ=Qsmi#2uBk`Z1$AN&>v&TjkWuegHN$+ zh=J+wG(14d%&N;YOhWj6>V5UT);BnjM$2*4XimpYeY? z7;hVEfZ_&;%&;Hg;SdL<;z+$H3FMDI^TxH)(SCzbZ3CusW+6$W!Mgq0a~@Myj#Jw# zPx{|~fz$X1reCE_`CExHBsJ!#;pGAc^*m+S8xFqvta%~pT#sty)-N}*pz?kDWqWx} z>x%>*FiOzcZqt9D&{`Og(WM09!yL!%_2+(n~J+Uv?^{ z>U3}{s zlpBK%v@7a;>eYa%ek>H_x-%d!guaK*=I zn(%?9rJs*+RO==tEy7h@$c{Q$5uFy=f2y5$_7r*m82pmopJcU|?ldiRz!3{x!>5CA zKaz7m6p=m$pipA44j7qCEY*ozj#fOL_XJx_SoQs;L29X7D_)Fn5j!#LB7X)NollDf zElFMY-xBv8w>+{OAEx*sKQD^X z)7t)~tRe3vUElKfkC9v>QpWr-Bv3gQXG4X{<%3Qn9!dwlmz&WxmvV7}{__Ky=D4-9 zY!R-DT=^5gpyJ<{q`N)$&DYmBn|CYpsqyM!Yv46zcVRKs7op3?`d2HYO+Wao%Irs+ z9eC>X9~V~c9Ry*j!I_s22Ur!mr)U7DDKVaZXl&|P?Q0aZIzxvXQd)f$YQGN{r|FS% zMD0Ftl@oiCwR0;1}Cx zm^!@z2x3p9rO*F_S;cQ@0;R+A33(eq6fT-Ik02&v{cJOSG!)%B1SE5Ay!$G%q7g4Y zCIfeA>rHj#!NX3X#mD8p{*$L7;3~E+*sD9qfMwB~+r_hApi5vnB`XsA1--(+b=zzB{5LZ_tjG& zE8<1r7a($XpD(hByh)>|1DTE+5x;1tgw*bY@-Uku9HxssR{@*xfR5ZKCbdfD(j}Lh zDm|9-4(gf#kC@^g)3j`Ysx_;2eD;K0=1A{sh>89>V2H&QR&E2)mYnKXnfyHco88c*P zyn5j7*D%Nvf=XJmznco&SIKt%JurfY;Djplxj^al|J!fV(6mHGt%K5o+EguA(hy0aqIc8d>(FW`m3&V7{p0i_&5@1Zy-cxQj_ zZFr_`qG@G4iDpyuRf5hHsrB68AAaw-R zT1l}ltg81m8)j-Q&$q#B-Hu_^8J*p!TeoG-;tRALt2;TRw?r%pLzgO7fM-r;F!&tW zik+cy*v&asiS6bm!A1n_)_rOdS^I*R<5gQc zc8v1`&Xq@hw2&rx&&wv{I7Y9v#T6g`=h<&eJ3>hIgCa$xU`m(x44=Z6ou=g|72v%N z+XLif$eO2;YjQeSGzrEPG_2lpgyuzcC9PmF@wVL`5uk$I^06>8`Q;9l1^^ZPn1UD^ z^;6{&VL)n>h=jEcr@&hds1b1*-7qtmhca4W~reeX=+_?0ld_+ z0i2h7@(kKD!DPX2bX-9BWjCEwL|eQ#R48;+_|>mz*loCf9F{7DFFVLCii!)56)1f2 z-|7|TvStuFk|`3TS9t5whSW}3pMLOJga8&;nMRK`E+oy(O>P)_Pb6w2!~@n6Sgv%+ zQ>PT*7b1evBrxFm<8wjaBd9k$+6RXUYfW;-QGaIfT#HqO)#YQ|r4K)o*0ASxq8=!Tw*Ecpupb9aBpeH%}*^zgGV7owE{tv^y8THl-=6(vx@plHE_mkgoEPaEfw)VNllWVxA2Ogu=q<_!9B~>yF=rl zEO$j74~2*2%KnVrayz|G6kAO+zah=g^;KU$;I;f6?gP`WlKx)kvL|dS9c#G6!_p_K=csvmDPWS|9tj4G4QP6@nA7aXzhS1r` zq@M_k5yTr9*m0kwtc0zPBTZNKnePud*Cr+&+L;vy%7QnfT1WH#oc-eQf+$X(wuJ|s zp&*K$ym$!9egC28WAg5$T+ob`B|!#X8Sno4G;lt#kIcodm?*9jjL)D4tBc-u+jeHG z;{?P%cNH|j*kuO4CA{GAeQQwGd(KxEP1LwRNfMTLyLcnn}! zYd(quA()<)h&;0^MCiJMciHVlWlneX&WdJX zUZbyHuOUO0>@N*`K93t%F4mmv?jkj^=9y|MrL0VMg;GIQlxfvt!~(SpVuU9nDXdKp z!&fq-pUZdrlke#Cl}wh{2#T%d%$Zuiy{9#}Hw8JR&XSeyYJ$+zo2sQsHz~`}!fE9EtU5^s zn4ao@#j|faq_##q-)`5)?Hw5Tm7E1UHFR1Xl~dyMj)S^RyuKW!NC!e4pzaIP*@KWy zLkNQrWZ^*;{gI%*VPoqc>A&ClWD!ZU$-);O9p)sZg!y9j zJj(}V9ymp_e(N*%kJZ61xZoPVov$h|Qfwdmh`xx(WjKL9)aXUAIzOem<&953yoT2i zNzwxyJ@oVnxnD#$#tEA1iI$c$VGXix=NQF?am(!?VSeCE0*i@SUcKKfOF>p;vHk@- zLp|AUpY-Ese9q&5=h^|$F5iYLYKpT)yF7{Cc?>PSLk{F9H0eNMnGeFz&ZH9zQ%*`c zuoKAmGkmX3u8)x^Hj=>tGB5L9D0*+)SHTFh%!;4hQ%I|N#lPMSm-vYo+6x**Tx z6aBnbOaKsTRALSCvP{+pWhf6;lv#s+3fEt*gxi^WRbq79w>_6JdoOsn5uC<}sKte` zRt`5CFZjHzD}Kbe2yksq#P6p8fcj|e4w*kQT8OTsbx>!{gBAvno)L{NfExwA(hJa% z;9y`wc^i_vz%3)Q zt26_#R1?=&zoK%AO|qnsmTnPK9}H!-*auwO!m-a3{`q46Ac5V|2@-lEIkNW>A?l`- zx4Rr#-}>iI5Y-5!AA8T@hGC!g7I@fY2#aSoaJim{LDgn7+{f|eLGT4mL4Hh$(Sbmw zp_c=+)J1$X9|78dQ*o=v5J|ua7_Ei>hF3*Qg6ZUpHWr#Jk?B|viA>6ODCNl^euP-_ z3WGDu(pqSR^z#dlD- z5CI8BR84xh`=92O1EpPlMK`z8J_Lr`@7H4xM2N;oW)Eo*JIx$VK`KTW1@hZHTVOem zxuZ=O)8yiu%Zu?>3~jE5^Fz?G-MjOY4hheTXzOL4;S9sNB)Oja*pWk$id50Tm|)D0 zdq$YXPFt2Zks~HDW3(N_-V4v(&-8dHLs|o>fhb2{bgvtJD5yN642=+ev28*Ux3xQJ zro5v)N*R9=_q7aR(D$G%V92aqWX_FYE{4AknY$toBhMVtpTS8Z9gLg)j^Gr#2$)nF zpT%xSq0vRNes~LMnFH}C(XR=reze=3G8IN=CcW^X+B>sm08D$_l1w&d84X$0aPbK_ z86ccNlL%cZZhQs$eqS8aK2e-_Q4It<*z2K)LLZhh$ImN-1+6K%J9ohF^H+s$ftF(D zFrBl3N@NZ?E?`<(KcZ`N)L3#8-~|-e6)-iiydIITOIHnM>$b(jQRgP7GRqr1Lx{H8 z@p!TIt`auKu>bO;e$r3adf{F%v~2xMxoU$;#148Kly#t_!OE!ycmBD9q@n02+}X) z$z=Js7}TDLXfz%60>zNm$(4p2GQJVC?|zG2G!USyO-b=Jih63x8Je+wX-M8BCN;Nt zMn_<|=|mky3LemYB3BzcuH1Di)6Nv%3_~gH0B2f@4j^u5r zuT`?4p&)av(-HM_6tBqcRhn{|y4Ey@`aN*30OX|a$PoVfSU2n;_xchUZ^(U<+IY}9 zGAe-34UA~6CFKnFk3ZPiZQ*tl&PLlqRRiP*ZLYIfzR+=OLq1qxDX)GsQ1pP4EF>7;C9V zX+Bb``PicUrRlVzi+y1)oI*ukDtGB+$cKa!*bi)Fik7Y&lB0D5NJQ*1;wYK$dpRwVaH@{ zR6lK!V+NS*3>EL@;Gc}J2$uqnVp|RGmhS#1!_aWzm5KI!WNB;SHBeOl%ABqD%fEr5?0&E8id+*?91UcHNo>XCJQKSOb|Ha9bcN@x zpuWPGt3aV^^hV~1_VMTta?N@EIo~tZxp($?{39~f!{I>ZOCIxwy^(T*@q^}890U2&WdpJCSNS_>26CXM zMs}Fq+sDgp^|<^+M_rckd;{m-XzoxXeWHBY z?fA<%+Tg1Id;vWU0xd50Fefp|e+H7)^oBjEbYSr$P}eU31H&k!1#)hER3!j4dz|bJ zC5A@;ULTL{Ed!k=?nMwnDF$k3qfV?Hznaq`lZt^|3YLW8m;<|2wTmM__>+7pKoy`T z@V~Rh1I!5W{9QJqf7M9YInK2GV9jOZHT}So;r#wup=xE(dBkx|h9jh))86&ci++`{ zsZx};S2RW+q9>z=SJ+-?O8?1|xuSXVJ0H1!bA+nh_CavY46H_Ou4X5qq2z~q>QnP= z61RLZ)RVXUm~NF-m&0W^c8Y(2556z-Eu*YgIIid&4A)|CFl_r8Jd9HT?vc#_{yl9J zJEhhp$X=&>%MJT7i;YB3s07q4ww!^mVLe+T=9RW}UVW3-+5P2WvcU~R;{^OJ!wDht zNjokh?sP(onmXVMPX3QxgI8DN_P;BV$AQ8QRpL$UUcS<}80d`ka&n`iH+(`G)%kTP z3QT$<2b)g`M1wrPZ7qo`b+CKw-7nvo;8;uQWHESj)b?*>iCyYUJ_(IcX6B*DatAmW zGV)Eg6Pe&G6PmiAtIbL5WZf`7g2E4Rk!plE3f8v&fy3MBmpxpn5k~L}V(l zmM}?D=e&Pfl96fTvh?0nhp+Ft8oTj>%h4*(9)@ddVca?~K+Y&v17%Wj zQS#qc@B)p&nEV^~k_a3Z)LE`0Nn0`}R)d)x*JKZ1#-QIy^MFE$`GS=0X`vu3>s?E= z$9qK1>?x}93MRYLaz=*3_-FB=r+*YIE6e^0!1Lyk^4E`#Jd5s_%1*c(gv71;+Ut-9 z=%ceBoaiQtlY^y?iNNDMYJZ61;Eft&~~IP~YPo zfL?6N9=hy+|0^AbsB@oh}L)jWjqJ!HoIFbcY_iw&%++rwy)?ZF2P)6QQnqym_lL?XiEogLB%U4Ak*y+aL} zd^MQZzgF-gzV6!#`YaRJ_ z)O`=);Q7h6uLnW7ZBpO%r2VBet^cIWS`GA`#LG8A5qt}^+4ytoomYVAK;=h>4_17t zcGABrV<@eS9M8$;s;bj8%{~Ekt#VdE1 z4@Wi6#ZR3RkA=!L;M*<39UBar?|p((z^g%5mDWWwBS_t*+(*TD+sB;FpIx54EXE3y zm|r!36-@q0y!$i+$(X>n#=S0u`%~>?5uPVG&&V0_=HP9_#>@Jcz6=f@Q%_g4zBwQU zW(4r?Zc)uY@Nj7Q*?l54Cg7BewiAUq)mYqHzeZY`)P~59wGiEFgh<%tAgZe?x`0on zvwV#I(t(!Fe=C4MWfLU>T^^SNv%O%Q;h+VeEf9naEvdAXxb^hOCES_!N!$r3QssU1geI2Rwmj3 zm-sldO8x?bF0IIyl#k!o1$r_k|3zw5@b)BCvHR5lGYM5^5y2os6H^$&7QbmFr$Y7K zUG6)ZBt~9wwyfAy*=PIs3hu81JeZ^|LpR`L>?7Mr7^8}#PZCm+x6Rr!3)=mV z2R-X%;oENf4tMdLTJB9(@e(6FAD{5-H*!|pZSHU1tmsBH{Pfz9w|+Ae?-Laxmbljx6a{-s!0!v3p$R#GqRl$# zJrQ_6f9j<}cV{TL)fP{h^LcJGG81^M0(4|o38%G*1Yj^7zb~@@)Hz{(uhfUbrZ0yL1L%1i+)knd{Qgn7esWNrA?U4-#11R@Pu4ZR9x58h- z)2ZD<5VKIlJu->zq(g@>6_9U^+weyDC_Iwwj zT{OpMsvC72l0`9n_oyJTi0X)pEpMC!pi)x}0f&XO&{rmGk5t<5PnTC(4*jKoWUcUyjk*2M6WjE^PPv=IOrP8&23v&mYsbSs>MRT%Il%L$ z`i3@CuSkH&RH4&nAAVQrBjOdk?15#3uV-QGD6Z_FN6eQPY?F7eWsT&tEC>(CK$F^7;Ca0y2R{R(yOhKzQwuz;u}q z-6Z+{S5f_;!Nr>Edc{r2`n#W`8zhRt%=nc+TK%EE%#0rkgV{j)dok`KFmEa2>vvJ3 zE&_&Dd2|+2b@ft)*e7QDy`ua=oO&(<*~@=aG?rDY{df zA6{!l5Jcc=ocIU#N#TV2oj))ip~`$4q4IujlAp9ie;M7vUHCgo;L}Q`*57Bb%Ne6i>LpA*lcjCa1lO+7$toDuPj7ZAhTWy zX1Ysl*VN*_@fc&p42&EXvDt0I>5YYZa-iZ5BtI{B>gWMaa_H3mwadR=0)sL5`BUWr zzedfmC3D22vD|pM&epxYI@*(Tz9_S#I1B}IB*8DD1l9x_d*udsHa1Sr5sEDES(UG= zS5qR_ccr!s2rWy#jjRYYy4ybf*@vuoeGEHS_Z6xIxXZ1W=L`>NCGfS}KaLt~g{>my zk|o`{q~4&=E(LyUNP?rJZM^9#X__$&vIY$l5!DD;6%#Gy{e;;mVYE_jI6)xXT+31} z40(r!^_K4;#wI~sh0`vM51^eJUXFB7fgk$z@%+gOBGoo#;`$CiO$^kpJ_SNyK>4I@^A2!rsRTBM5lop)GN%~F&@GFs~NSb8k!z}QGAil^5 zb%8~2XAWOW6QEMrfAOh7+-LPFT)Dyt!C*;?-1u2?sw};)ZeG+QIQ7X`Y^6uTKA46N zeG>h(0b;z3E&V1XPOs{Kzu271KJHlrS^==ZCy;PRY_68JVSUB9onJtzAtI?HczjoB z`|)e#VP!jcSZcK!pN2$wT-3pZ3u^=&Twg{fVl#gOMHi7h9QU><91r2QhcsI$WNT)W zmbOw*wIK>0fz(}aa^#R04?G)Ts9&KFax zZnPTP8V}%)CBK9nrTIYrDbguLrYrpBOWOEI=E_b?}IR|>iJ%qgC}NLX8;j6SeBWBG_39~atY zLzqNQFGfaSRIhXYmgl$!H})mNG?Ki~AMb7?s6*kZEWCf9$P)v$5RALXqT;Xy>Xie+V%Qa~XEHYE* zjZb(2vd(zLgcCKSCVy?*acl4Z%|Cv7%$UEE8t-0R8FZfW8r)St_RgERD7inYn50s` z5#np99>pH3oovSL<;fSBbvtI{AT^OQSAjC3;8)UuwEWBt()4NNX$4u~Qh>!ynn~;a z`A3}l@%VyMtcU+4EHA98Vzl8lwbLeZ)`7nob?KF`8nBGFNBA2KtgonKx9u{zI>j?G!dfTnZ1Q)}6%8-jw6;Aw}sf=sD_4iXJXEJRsHO z>LYQjur_t2OQ3#moY+}%e}&G2OO2D*xX3naOkT{q;Fdc{tAra|ljm3LiU5l4j*j@m zKPYvNo>I|@WiWO~{akh$RCn!+EJOL~UC3H4hz4@k>zg&t=HMf#`((ux_F5wN20sK= z;^K20&7dzae^*j| z;a6guvPlw6@BcY4|(aZG*I4_^u6;TswRTMp*QI;0z+q{}vK3ilo8^ znezFp_Vcwre#|pU_yrrnT!11DAfGSh?vm6jAFM_NMLRJk zrFzg&7ma_XyaJ2W_lsf>LWHGH4g-gYv9I;U9fK!Cx znU%E+jnIGfRmQ-Jn!;(MrwpZ3H|)tCgTF{~Ez2T~B)f692(@V&ee*|bwG?3PwYl&3 z$G6&lJoZ+V`PHS*NpnDxdY}D<%4kb1MGLRGK`wYmaNVQKxrW%6v2wM8n@s8;KE;RS z-i+ry8_CV7D!drP`*rI+6mo>U%^+cihm!fn!aGev}cg@3Q@i3vBIJv5p6HLd+Qu;aRUh%{rgLSMT+J-lb~yDOhmZWH`&3H`Yr|+EY;dDxlI| zC&UB*^97;mf8kzhsr_LAyR->JK_j?)x>iN{*`Yv~s04=mKl%kutm_#bT)-!XC_B6gk^FTBx+kAzM&Ylp# zUYn!??}&tL&?k?XTC`OW(or%+u}05#oZbdjX_4imZw|HESAy4k`xa90;5yuCG)Epo zJB@8EB0bsb6PCN&k~727k(E9{1AxLzT_2Q-#qN;|Pn>8(laXD3MVh>7a>w^hDz1id z2af>q38sTfJooFhNvZ+yC7a`)koUV@@hI?9>aU4Qg6hmt4@zObM>ISJI(oak_3Ux~ zPL7H?Ah+%>^SP-sevTBLvsSF3mmB+!3F!JjN^QSw$!|i}$JLvkG(<$ePdIw@PFQ1d zCqdH#1P@?Sq)Q|rJv4=M&}rQ)vt>2Y;*-@@nTDJ=S2DK9Hai_N70s(oV|Dg*n1rN= ztHsJSvmUP+vlntVuXNlc4W13^wE;hlRJ0e$pPi{9tn%jlTnblli39fVi{Tq1MWJ;A zy!xXBw5Y_36#)(^G=5u$mI4FQ0m5ve9F<*Fbh~gQninokO+ylT|X+{`wm>qK@9q2Q%4r_5iiJ zwr$xqX2N@U?8^IPJ`3enVZKFgADPTQJ*`n-0n$R!T`77&{azkO`KK_is4pCwuuh}O z)%q;Ui+t(I#dxf|h@BV&Xvy+Ovwf{q4Sitp)J9DP} zyExnu1WEhwugSP?P#d#x#y$g~BM`Z7Ap>+b;W$lE#Ev~0$$q`rQ-Gl;*>y55PUwZ2 zd6c`}`?Uos(#})G|6B)|3tTZl9-*A2&q$BW35@ac)SQbytp6Ur4|5xGR2b~;}A zfa9c?shX8UVv%-q-)idz#OUeW=!J+&p;g zQi3&u!?Fn(3h3hq=yFtiVaLyEFIrNR{qSAPZvms?xB25PJaOEyegnK^SNETfwM6)Z zp41f5qH9Vj?CyKtM5#U>F-j|sMA)>HCI(mYuOU(#O}raAvL>RxCnN+bw3^Q#WD(di zTi=(c)K9UXB_W9*LaP~EW3ji66N?zgN3tp;sg6%Z^acrSQP|5}`oUGt2%yC&yqOR& z6`35x04fU=ajg{fDBhNBfoAm*=ch2;-c^ocNdef*0^&f8jNbzy)_4Gd`{5U2`j2sA z6JJAP*vG3fU{fe`FR6N<&zRRA4RASkv-2I(21J76y+7tQ%EBlL)L*5Q$@xYEp~^gn ziGZcG`L0~P)v!bsD&nJvLf0WxA%nEx?LK0ku^l4CHK(8G@7@>ly&6%9dxBUW-_>K^ z^b7wLplF_*x?>cv{psMXZkmBqKt}`OU3(!ki{4ZvFq+UR()9)oSL|imTo;>#VH^K{ zX;z#)vF+uxqO~g=<4A?DxDz#UH=!xL-pod0$T-g2U?y7RFFIsoPKfSUorPdazB`B(}*mrmDh;CUYb0AEA0QmL?d zX}s0auD!99rU?aI3CEHh&+y|5w55x(4>QmOI01`-3U@e5(}~FKjD>jAVPwZTI-0_@bs1`vkAk%+%8g9tpTka>^2cW~FVCJM5!=O+SCyF3R zRO~m){T730CI3I1PTlJhzUCQvk6pJ&TX;jQOcK15VvBw=$eJzqXVL{JN5L5HEPt~a zT1H>aMJ+C*wJd3vc@7XqtN2c#2$!Y@b=uvhHEkzdBbphrR|92^+}lLA+p2Xn%bRC( zB&_h7IOjuO7|@$iX3;i}+-i~bRWerEZ2)}86N1v#Mn|8+-ucZJVR;BJRyI};79Alj zi>iUVQ?G$Yx$<=7>6=ofkWo3u@rU{QlYs=;3|m=@`}YPXg$j=A*IXjbDiFgJS0$If zFoutXvpkR8feEYgo%i;!__2m!cVf&WA9q)&XK4MUuvdye5Q_n!c=pKToEA}PBuCg0vX5+*M z11(vzvoVG^;EbLO41|sS4cXe_rIbd4v2UfB*DF(^5wKb=PwZsO)2=aK5mmlFWCUx@ zTaAPHFd}&rD5}PjU}ptpxA2&)>jf&Kn&|k`Pd-8=u*;nl6<;xh@1p3-{9uZ^cox7( zIiN8xgdes(_a%%`@IW!Vfyy44UJiU)dV8Ud_7u}x*_d3YF<8aK1+;7?Aw#`Z85kk^ z#J{4=<$_JbX#5~-ZfnlFWF22-`t(R2(hOPte`E;Um9?7?`VRcS!rz<*rwpM|`J@`W zo`yc*VF(qq3_v>`r#LKqb1P&xc zp9|Fa7ueUtkX@GHi(x}u&Ph7yR^h|OEUF_QFXno^M4E=z zakt+VdG|LA#|9f1SE`~;Mw!)}N;ek< zBwp|wD79pHizQ}#5*7?N~)megh!caOd0gMmZs~$8OyQ~|1PV5hE#n`XewOT5RpaYi zAL!7t`lfJdWW`kAgIs6RIHqE)wj3+m-o$titpFTPIRR3J8SRnJU}3l)kE#AG)ho_Z z7E+arvIcwU@<)K#DHksdQ`7W%YIc2$a56{H{9+@jVBF!yOn;JPg{gWc$X9kOdtGmM zOSnG5-p7#6j8G?>M!(Bc}&?|ej z708rx&U1B5l+jQZHDuS0`wyCUD}uI-n;(S%tc~LodIrT{m9#--j_PXM{1;HAj`fNO zxY4A5NnGDUtobbfBr3k?sr%ao5=n|O%jNk5MWnZXj8sQ$kQhc4xYyTvw=$X4TzJ+? z8=AwbY#CZNjUs-1p_!~^EA*KCmbLP6QdP66cTooDUO4?DsM5Er=OFJAeS&qNU{pE} zVHwMShGMTRc>Tto*0MeDXQO|u<6seSQxu6gPhy+P5HJ6ciX8gv5FZ-7Tl_E|I0)&J zR%3UKt#|*4I)jV9&4hH<;0xZLA3s}sLqg+vs$z)8*WJCh|0rDmv}wXnpbn##&q5qe z=(=B%OnF%bTJEPr&o!HTA#bOCiwp)Fe$_tw2-zuQvmL*Ja%p|pe{ZT$mCx{6`@rtus8Gurf7KP% zHnXIa+0Jz0&BjcHS@mfzI#79tBo4T%BCGY|{xv_R_YB!WhPLT}yZS2B;B|P3ZxH+H zqBA*OYQSZFtx;Jni=7)YwoU_H#D^k_!K(v}7tb_m#L&&qsUay@`cIzlO@v+9tFTgQo!p(M z@C5g)j;)7P)`#=H3E;AE5INgoWftPOQr!7`^*Ei+30k!$EV12V;>rB9uE*hDxQvrY z64qM0BYA2x=HhfSnk=^vv7AZb!1*v~^Wr90AC3(WK5coSoO~)N{Ow39Yam`uI-vK1 za!!mFvL1_56$4KmTWJ}-)i}`M3sNy7Yv)r%T5c)i`KNr&!m^~R#GlKGB>D!0RkjRp zqvfD|z#2QWgU`pzP^nuNOjyBGseSM?Ue}^GY)`wI#L4iq!pT*NY4GDC)d>)| zWQgRnD()xEMn6tT$Y=Ht_B0Fe{k2n$yeU5?c(N|ohRNfh!vX#lXd73UmpHufj=@|m zqN#}%u%vN+IAh9LfI@ci^A3#0Q`F1xmIaUCK4q^Rq`{{nns4HY)Yrksq{AJu%rrz$ z|I{jPEFheq&JCHfoG?g--)KpvnDR_!^0>FH+iCMNFw1HG`c3lWej?ys1|GaPR0TwL zS*qJX%Nn6F*KPotK0&TZB}@AP`j)HvMBGFgIAlea90j9A#>DX+;lyoZ!3cG;?ajaA z+$LaAcNLit<~MFAV_R$jU!lME5mn9LXYv3~AOGXn`3mr6^hhGzXldxulH%uU`y=7zw`|FFHjjGyBAsI$seY-^DVI`a((}$& z*`Ig-oGT~opUmxLxJRzjY+?{%;KovZnX{DvDZm?-sO-DKi*d$*kyR>nWWkQU2A!1R zY0x}8Ch)Q4)B-7>HL6+7ES_yK%3mvzm%e;serS?rzKXvoW0kz3ybZ=$q|oyf?XSt; z2BA^LN~;yiPQ5s;I#>}|_j;#OtUT*6V%}O#r`CzyjcUI(EU&HCS&GC-66L<=IhM|3 zx4&wa|2TFvxhN1Nb$Bqwh_yI8u?y-yIa(2@G7rJ7wihMc?4ef3S5CV)95DS^=v z0Xx|Q8$LU4b`MWZrJhgE{Pkn3Ejfq%maC%VjM-Z6wUQ#MXDkzAjOQ8C@@6b_i-N+n z@Q0c5$IBbdlwIlx8J&a*PSu8Xq9BZdDz^wC8R*|MXe;gS#H&31}O`5tb&E)y#p)7O6g>0BWqJtiJn#Yc0zxm8FdTs8c;`CNb9~DN5o>z zRY2l^@1LS=mu-fw6A9TC*hXG?N#{1}%1SjqJ9UF9;gHg!wsNRf6B+%H#7w8Uv2~qV zuZU(!j4cwBv&u@_WGHh0HOlWtt3bv&X7KRc-Tfy?{9kjR2H z=^yfqD1uAGkhkt)+a1nMGm*bby!EP)l@;Ka2BX0_4_!EBZ?~+P%bO5T+k2>zGtAqT ze}eK1pUe+(<`U7LV=ovjFO4TpLQBFjR6)2<830qJ1NiqOZ4?6qtXQub)H;n9K`jwG zNAuy>m9oPh;>co7;hx*X-08{vZ~+g|vy{fZks7^8p|kQ6KYDl09>W-%eLabcf{tXw z_iQMqen@H`Dr@_kiE!C>Oe?{4(_X!S8Bj~H70N0!%yg;AcxB~rmf~`(m_aQ{jS=S2 zH37xt(hdq&5E}(9mRj19VnTH_!C2;QY?lSuGMY0`npK;Y`+Zh95e^%b%S%|~vv^Ai z`WyO1dCLL~PIan2LMb$HL{>Ac>yby3>sAzj!Y{E^o2 z9*Kedb92WXxgpY%<$FeMKbc0O3z!l(_4_K%J#Ct_s1DM>AX~C!mpzWv8rq~3jV*I} z$upNaAd<7Lh6HFWNLteDsHpsbI{ayL7gJj0u39Hrt_~~|Y?AO#$)DR=<|fSJzVV;> zITN^Z(Sav#yoG6ta2nWpM=Y3sCqO!scx%)*5^#a*gwcVIyP_B6bcFqh{bLy zMJK?QS$(=G@FI9y1*Sp(zbx2pfT(~_OAZ;rl*2;qRdER5%FUhUDdBP~gE~U;s++e= z2CwdZrL`)nn#<)kOKHOgEB5P`^5LLrvv9`K*#AUw*~`b9H=Eu7Gw2s0yw1 zKqqHqswv5|)8&n;Sxh0KMVwpgYOS$gspwg3sr&BjPh&4|hi50Y6JsL|dO$Gaz9v7$ zrvFe1w^2$Z>Y4-#5n4fHLP$e!(y17$y2{@T6|ht!L$F3B$sSAncIw;ICj=AqGc%!1 zuURAas94K0kDSN7iU%XRnzH`?tA+(JY}mA?cZ4!Tqa7b@W#> zpFI1841eG{#T?lkuFdl0u95;a4$YT*L)4B(orfW3r5~|C5Vy~uF&`1~V%%g)3onb~ zQhO{hGQC@|0{^q*kDxk6VP1{Iv}`$6da!+DdG$Q_$#|7jKLMvq^z0;#kjlZ{OPe|7 z@W`K5;RLwY7j5+EXhF`~vAk1LF_LWTXTn2=ZJ8TFo4zDzUPy^GD@i>;QpZ7a~Mpkm!yYouy@) zpNu`cN@oe7hKis;=a%qagj54l%F+o#PscUm#axi>0;myV^kJaz$6i>7S2Sw7MbWLN zOz_$a$6;aLSe7D9thXLlSlj-??yhd#f~nJd@Mau3AF!g~4B0eQz!agj-#G+DJ-=-I7#@KTCmhS~wd^4|jq;&M!s)O?Cn+xgRvGke<+Cek( z`2s!U2su0I=No@yOmmeRE@9S5QY{KCYtLh`_8Y3t6f%f0ATe}I_lF!XWl8BqALxJM zCm%;Pb9-=d>Ktho=y@czUacfG!V)&?}{t~B-{u2=(6CGtWBll zRuIBS#bGEe19ITIz7MWnCybJ>ioB*f#%JYvhc`c82^d_w&Ar5jBF=7>6}^NMQ>TI^ z+bb@YK($Bw9QxRA5i@4=##;aqm$(4bA6P73pQ62k5w3lzg`N}{bNMf0!KpSF0x$PJ zr)iU@p%5gEnM_k+d8`h$ZNwBPvsGGoi;Lp>dzC`5tnkmY5i`boNi2#nqOX`+<-)93twF0I3RS;26y9b;Z%-t`*>`)h3PT zH?TG>On&wGh%pZmaNxRl6>DI$3;qBcb&_#sdsqYX1PPi5bV2LW2;mWT&fgR|Dr50) zG93H%5G}&6yQ|2h=z6y)2z-q+4;FkXVa%M1n^A%5oSWy>{)pag zE^*DXNq8%tj&{O;>IveWhHMj05_PEPApP9*ffH;M$u8Khv<^34Kf|(mglQ}IWMf8} zvvP2g&tt!xq&1{#-%c;Zkgf)F`W_y;(p5{A#lgp_$o&>4xFDCu!UEp%{{8H=svK{Z zS+W5XMR&4u#t({GHun~Vr`@#eP$rBm?@E6}n6GhL-qr0TwG+>=m@RwA8FOmLwX3<tv`oAOr!n6EGgw)w&|p&w)Ze$O zMLu9)nHKH{$>z*~vN1C-0Gj)oyFIk<>_WR{jS(IHrbD`A2>K}j#m0KdIFQf^WBWzIw>2JZO{rgPIm~4NU zDoYVVJ_j@Q&sN{D6yHd(5`Uk~Bgrg@?ZxW%cBr-ai0QZDc_9N8%qnNhFq=uPxNh5> zZ_hx)C2Axl{%En7*f7M{H+N{=01E^#m)Zgqt4S9Gf$k9P-c(W(lZPyLW*V< z<{<{Fj`ktMkfxOGO=H*il!mkT$6hUMNm+=XSr(kakEV zAnqybS6vPEXAiC}^p`%0uYNyk{k((th)K)4R*9!D{9Wme{(m?DEu`{%bn&n zh5)Fl5+a*~@~H@LoQ+q4uxjBpG&`vq8AzbD^>9uN{Jaz{IhuO+Z$Qq$EmBMEFTP!_ zG>QA&_#0BhL{4KOeEd|SgUD}>p1I9}ask?(uvb!-hCo|Q%F@2~$5jYuR`@W0QFLPW zL1})X4l9@*Axp;80!~wKoFR(9H~eTQ`Qo3WqbrSuZv-afzm_roH$X^$HAtOTY9%FzDNzCi*>ttB98qX<&?a#U#D!q)D9+)};>w&brf` zg1dl`7ph7)NAA(9|3gJAXoBL79_kWFbO|kfpFm^&0&FaPhklLV*|FAuGxq|3x8Pm} zs^m;LjFhebiV+pG^Oer_%z0WYbG$-;*09hl{!X4T<_!FZ>*d&*z{^hyFtDZ3=sc3! zGpKx(YSrxm@&0UQf@XO(e9|-h-V~wDk>LH(hXTx5w@m3rID2E2`HO4dX``FXerYo= zj|ddeif8bi(zyl{t`K2Dd1b4`ouzS# zYxL;@L?;d-sqacj1!%*Ru34y`cU916VD-PIg`kS@FQm)A!PvN_Tn?^>A^JmT?ha+Z zuT}WxADhq^-d|N?JXLAdJBMa>9{;&cc^|DjO7F zL>6PJh1lOIVR%8cx4vab7R2zj1_jNVn>@&yr)ZioN4@nGXi2QP%*UP)79@IKSJVa!%c?14oWGFg+oBpxVLY3oFQW9( zv`6ESjpCT7pSH(GdZxj$dhlT5_iR@Um{}Y{I921-;>DDHX&n1>H}f);VcYmWr{MwM zS&kA>_iSqoin?X)fHx&E=j;U+5%cE2)r#e(mG5UFRE-_DKGDp6c%)%-@+K|3nf!RYd69Y#7si88FYB9;SZJoHs*;zxk*zX>H$0Pi;RT=~%1?JdWiM z(E}D@NaW~zC%mv)70PD&h~$C39#G-YcGY0V;a35eG>qu}`KKBY8N9SutY1B!Gl^x9 zSA1F3)e8LW9$3&pn0qi{)2S|{E_Ysv2S+h*aNXtyY&b{tN~JfWJsjW6!dP2wDcAxX^B3=YMgFbEe)+-OcHwfAZP!6-6UK7o>qhV((D$YoKi@y&g~py8BiOjZ*8p z_JW2f|7Kf(0BA#dvQGaPvSWX7Lk-`rIU@$Z$crqV$3Z@=Y=a0tg5tM`otrb7p;}O# zOkp`fnWlUmN(;CwjICpQ4d?qY_E2Lmf)_F8w_u(pRjf?nIX>CuLVl(^V{QJTQ~kDW z^Z$%<9&l%zy>}A6hZ_DB97G~&vfnN)6cA*D(P7}j3Jsg8Q`j+QEZD5tB8--z7eDIS z1~_DQ7iWa)eZ6S(*Q2W_akCph#*A-lF-Sgsd}bO%FeSJDA_ez9F4kk%X(=IX7pjg5|F?1ZjRBH6?s^SLp#PQ*i8YqJd-qF-h3)&7`CD%>R_xALJEAwmh;f9r} zR2{}@&w6<06bUs&mgzt726D>ZS>amUMDktsyPfF_%n0qKcVQ88c)3Cg`Z#U}!J+1y z(lM*bH?5cSqp{YcryT#ZLjUeY3lbeZ8<&eab)7b;prP(L%=jPKh_h-w^nMUfX&JXi z7en(BxOvw)RP&H*-pgv@_IEp57o)(ao)GB>SRtFIiB5COGVFVEY0`e|iG}iignEc> z$>H|8;nsuztli)WGY!Jenpmu@D!Jkc$$v(K123{*0sMV;;^YCoz^qoBtEY3p8@l*y zio`Q4fw@m9^)kIalD;!CZ9YG*9+WSYgM}=^cHQ~!zeMm{tI?$_u)5K`gIjGdxgI`h z+3^EqA13>`dT5B;3+74`0E)fmwrgY1_nH;=9RQ$_q}I)AmkF0%y*Y?p4YK$sToH(d zWA#7Dsn~y<<}9X-8P*9H=2R;<;sH1m2&S-Q(Z9zH_{5W>wNX$DdXL`I%2*UxbEpWr zlX%YJ3JgMJ*y~vtT3F?^sR&6`ld3LY&F)f$@${4qpMvz!Zp}=X`t#CpZ(DS*9z^4! zen>r7@+3_tGk{fr-wiHs6tsDOkG1pAF2{l-lX)0^Et6aCOe0lF;4%%xl?r0Yr&qa@ zJ!=~*_G~^x#xN*t14j!F{j*=&Z{5vV##mgVRE@8sCYQoS*!V7o40`_fdEW(W!#OA z=jl=qw2l_9Z6u4v3i#YTUQ1{NPGM|tbUVLgYJ1$i@^?g(& zq;w7WGSW2K#Wf~Y@2hb=3j5eyh7vXz9!PvfDMrYY;-@S;?~i%2}O0^Mc%Z0 zj5q#9_2^e57gC>?xfOcSdL5=D_FTR_^|7?O*GG*EKC~@A#X?)4VGMVqa*fh7((11d zE+mdPAYbiZQ!R34YPYNSKouC8UKqJ!R4BRa0X7FQKC|?%!+UW-OWkcKhOV1PRfwBF zqjovgM?J+s4GxbhU_?isMXeJo%JhiGWy#|Ayrs8dR{{AIZzKr^PEeLz?>buHtP6aJ zWVcgEj?m3Dr1C@;@%>yZhNqCI*dK>dA! z-ww+Oa(%+(4xnFsj8=`^%e_HLnY(nn*^9|?-g0y5h1ejjeLj+@SQ$o2Y;kMHlrh$) zxRy~KLd`{w(=R^CyjmvF<9>MDb@SXj2PoVcfVZD&qZg00-V}yxN_7`3k0R)pc<8pF z__^p})o%!_2J*qEl)p{n9JFHe3!EAx!vQVFPYA!(@||O zT1TQ{`(Ek*kvNck#1b3zM;KbAR8|a=5&isr#6QlxN_CQjk7|E1j}K_`WKTZ_3W9lL z{06DwaTZrhwBYwwVO){ehwbRc43{5zx6tbCeI5^+lATD-zr*liZT8bcha&yUx7;S< zW2JnNinj6t5cN;O@{4v(_ zy%v`D&Q>7Re#~Y46yal7=;m>51e)xLF{u+7N+S9HpmtQA8)?Y+JN~C3-7%c5x_xEL zE770Dg5>a68_kk7_z|tQ0{er_mf+a;)vzlKI(r5$C_q%cqW03lbpgqvfZYK-?}q{% z;Ez;|BT>5{v1U6Q9gs=Qi&T4UnQQOH`3GpC$N%N(+%L@_taIfajiGw4Fn6Ly77 z<)p9XM`LnX4RPPq2o~i8PHEAOC$wwn6Ohu7Jqabj=)oJW{HSAYrjqR?8ExyMt3zW~ zJ~WNKuUgj#nE2&w16T*8xg*0tEZDx5eTEZ%P|fWNF}mBemed z9F@Ev`unLXphC!=a?@#!=R`EFwY(8g4Rhao9ANr#QJeY^`H+h|IB$(32MD?rBLdC3 zp?;f(=5WdbSisx_M{r?iq9yg|QI>anL3<%*Hd5V2zgow|WW)Su`R2@9huNj+1~+da ziA$(>YVYF!U`XXpcDe_gx2t6zsqz}L1?tqluIkFHs*cM4R1bB54m8N!W}}H;+Tit2 zvw?zm7@9Y?cc&jAl4O8n4x0lac+1ADPL=7I#oQm6ZdY8D$YTdTD{&^{`7h1j(50mF}eH`H?y_Q4Aw?;>8|xbQS6=q`~Dm zHmS}4kdGbWA0hV{)#ZllPKh;x7>e>cXD(au zf+Eq!zI`D+{#!^1^irb1)PvMXt5;MJSo!ZCB~Pl(Y>f)O_;q8T2n`(@9cfDTQiHcM z?#~lVmnNM@1yXiBkzfsr48N+4pu&zuTFfiUg##bXm^MvJpJgR+pr4Uv>a(Ocv$~>j ze(B@vI8I^2h#WbPsFW|zxYuAcU67<0#LeEnB-MDVw?xdGUxdZqnK;#?peO&ur%9A zOwobZvR`B844XVNoW~N$uT7w(3e`W?bkKgAV~4K4&yt1%r*SJbK@WOc^6|ZkK{Zed zIWt?sM82*pa_I>T%fSfQd-O~LYC{4FM!N*6*)na!KHN^v4kK*t0HqNNX6La{>gUSy z{KU!MTmHC*;D7P57G|`0E8xBZlTv=esHcOQE=nel(3lSf3!gv))eH!$9pUKzz6x-N>aq0)SNi_K=P z0{zt%-eaz?5=QC}^$2wb(6MJw?OXsLe(XJ9{y#+AG*Vzy;1c9~i?E2rC|Ai!@#rG#zW}A5twCj9AWJ=H^`aQwlb2qzP2~=kR);>C{9*B*NBytkS{%Pt%y2$aXq+LjDs8F36DUe^jbz^-W^!Bd_xwW&^R-M8a`u#hor zEsaBtpz2HVArApK@nk3I69T9=me$wi>=KnNuPw`LrX|*y;+b)48w+_Ug1pI54MgbtG7g3ZFKV4AWt_6y z--rbVOdEw8c;Qrbi*aEnVxtc*yfMf-+)2e!48@9}#T5#oDP4s$Kc)m`zAff~?CtPdkYVsucjQyb5W29u_nm(ADtF$w)@#|-^vY=tvaWurrYj@c z9@Z<2{OWOzt4iv;-ab1Fg93v#r|=B3ZPT^fsWwD^jZU0UCy{ZJ9PmYee1$l~6~mo_ z(d;$YhLPdLq%IrM_3E1&_I06l?|-sIgUVP!_9O|-&jzpD8yW76ppYsbAbpB{*$S=! ziGmrD#ploYjBj+>)g)=V1STu}Vzj%HkxjE61$Eu7eW`O(tR2wC0KbFZl74S2{NyjR z-{({XrLb{i_FAardTwj(Pt?C3$&ITF7elZ?iQHkmBzk2|wnjo!ut1~QFlPc2DvQ$p zEE~hc($CpXvKE)BjOmRh3d9p}K1KL!Vn)x#zKlNE-Ras#;6!!vY~$_e&D8s#gQSgU z@yLgPY-4=ILr5s}vK<1(&=^B{_IwBoV-oSwx!^)B*BPwS^Z+qH&cA_s$K1GIiE^V% zsNe)ln5o*8aAXWo5B|*2RJXxe_eJ_=tP8zga=Y1^VgB!brAtxW<&v=u6HZnlZ>+LV z(4+%dja50`x$FcE;UGCS$IL}{+0~&dqTa$4E!(D*wK&D>jpEw%Z>DPYKcID-tGxAq zu;m^`QrPcM3{j;{A#t;sDyN@j{qIGs7~`KA=pgHNQYy#EY$VO1zD*79I(i6eV3|Y6 zSE&S-m7=czoX9~)W}>7oIs>W{M4&D=KYm_E$H7%dWeOwbQz52LilRBnqkS=1aP7xK zjh`i>Hv=@o4ynMHLCWoTM42`hRn4@a>2r{;r$o`e=2#Tf;4}(BlYhOL_+<0VdF0I` zTbrJ2@7cks=Upge`Po4NBmNLcyUgbnW(4Qf?1ubj=O`sen%UCMG3e1#rBR zl2K|ZI0dwGT@l7sV-?nnTcZvW?dd#&Yy>&2iqX$&`s15ZRs6b`4)#;mmPEZe%hVX**CIow;xJB ztqbA2cu&+KVK<@pj&V{lIhGZz*GPVa8JxX~$btQLS2uxJxn;+mcy5=^gevqQP-_0O zrUxCu*VS(<^ZeFdycfXaIEY;~>{Jvq``w(Z$vOse6NXV!S<^}QnjF7(W7bl*faoM& zMCXyP;p5eu?Hu63NsaoC7KnykJh3of{@`Nn#DjnOz2NHlm_BfczDg>Lt{k}{Mg&Ht zK(w?nK&9&GJ*}7=YehXEF5BWrD5W-N#Qf3>DORI3PiU&Wbg`|0f23BoE7|7e>tFKi zpAT+nF7cBuzEo+u^fm*Y;dh;{U>64S#3wW0^IlBc0MWCfCXD&o$KlZh;B<8rEWuZK-XyubF3`2b{d^doWW9YhL zrdy%0lFhd%erwl4R8v~?*HH|_#1w2Q1U^4>Vh^tlj~Vm%fNi-1?$?$Khm8VAg4hdfiW_U;PW}<4LFu>6IcQg z_<}loj-fGUWSw)`n!W%Rj?ofS3NM;{ zUcTwe1(jLSrj1#24~1H@O*1&Vnc>Y#N2aZd%`x)Px*cg^O7Sdzgrw>g^1w+zDmxnT z1F!SX3gEJSR_dAXb8)48Qhp42_AXTLef!+I=a~&=wV~ZPjI``KlZ?K;bMPK|v15!9Pu}rcv zJdvK59@4w|`VZo#<7e{-NdL>DV=8=TXxfxb9yXl#NN7X8W0*}FUyfN{!53e&1!u*c zam6URSuuY9F8d&?UXh9&s1il^itgK+F_ZZ9n0;hn=xUp*x&BO2WH@cka!_6+`8`Q_>FzFIGh<)mvd#(6=^p{eT5J-#mES zGf#pP10s`g9`P48G;IM?6@HOScxpGXd1mOjyo0+xEz;%Odq)7`V$PJ%NiX0;xJ3+2 zq!J6TTPputFVI4)5ZNuhz^WB9l<6OZ7Q<#B{08q@J&xSx%SGqe3$|g8#*=)N78iqU zR{t(@gVFr{lSB97(YHlubC-DEUU1eH@Dl! z>Q{VUlws-F1rVeFpr;Hs-VUpNcM&jl2eg0KTz2=uH5-aW15wE%Ydc)0f+pI4r1332 zeZ*Ac=fV(qBh4i3G=|V==P+t1pUuknF{XN%z{Q(_!R}&emB4yb(jY`9fFMGAtfjYF zdEgRC6sT>YS##JCU>LY66?_PHESa)4CuXkPM$%R158b^%zJ^R}W;I_Uk;wNKZBQa9 zYb@0lRgJRnM3t|IA3UgSPAn0BSb1C(8T;+H*^%%LJW9Vim(mDz zGiNLZ8~`o7&!m4#H#yCeGw;Rk0%z!>j5}DN+eOf7C#B6oht|oRq~}HT#_C&PLy{xa zRIq~}Q8dS%aJx;Bas$tI2E`5$ zkSZo{%%}_xme6{Nfcm%PZW6w-MhZ_`bP*5!6X%tQh(2davB_zA>t|&yF1aDT<&-Yi zWhSH^rMWV@Ect?^i ze|o6`MgK(4ye&Ig7Nz0$c<4)>72urtAfA@jp&)DTO+}bcxihhhS@IwBVhuDA$1$U0 z2|L$4LzO$%?2OB=rK-ZTCKy(#Pk-8B$FRVhqK6p0AjQhNT*tRa4DH4^CtQEt&dBX^ zQVVA9mtmsG8?R{s^gz`o4SCPt_lunTSGe6uxXrP4%oH}w1&A(Dz9HhFTz{K>HD7$h zhyU|H(sh_MMoA50uzJF2XkTH6Y~D%Eg#NK=^o(f}+7z{1M!=R5;I~LV573Fea>ken z7xbR~ArU_Kt|>$7B;<`Lprq7mXm+2yacXduggr-t!s8dWVk{Pzua9im7?9dph^sUC z*)l7V%=3}s+arn1OU<9^;qDqRu^-$VdeP5(%X_+Gi?gSeN*&z$?^5MMdfgyMfv>}Z zm-d=7hhm*~A5=Po891$BCRvn)+OYs7^zJLON1I;W==m&P;kcE_V;BwVdXkQ+Lr-2Kq=rON)GUWKf^9^*7{}vL z9R#v;DI80O<5z=}8*0&KNo3#3_(E2_^!_Xv`{(H8P&sY3s^fvOA^!T)D>_4{6MJEP z<%6EL0&L7$ksn~atUj4j*Y#o8Y|d!rzD0qd+k=aqpk;mu;TJzn(l-GNV)$c_aaJ(X zLe-eF@~<2=noi0?Ic{wg`h^MZFM^_X1Pjq+_sWC727+eci%n70Ll!UIqwzDO+{biH z!38(N)Wca*lK;|{wp4Rom~f?1EN1&fdc~TTCYLwcynGohMp=uFsAhl)90y5RqW1ql zQom>lw!s4>A168wBkT<@`p1GAm4#A8<^M5k?FHH31v5T{tC6<4|3YmfhuF z%Ck=H#7o*6CDukxtY@IO$!d{t1_%Hh9AhrXISm!{Loa1?Bcg-T&{}j@o0yNYIOt%q zkqF5AXZyl0h}U0u$;YB85q6`?6-BDyJPgM_#vYmwcs>j(>7^8`1^?->>m%7a<4rjc zK=By&T|&+eWI*jNQ*CczywjB@kB#Dg&NfOm{~h4GbKSUqn0t2=@}7I@09Nv8r z+qJP~=1AWed+k>W_`GQsMgwzmmewaZbddKPs$0JyIAY~@@UK?8;*1r$42#%G_Aqei z=pms>b_+FNpCyto9bK2jZkrJ~m_*|xq~hqPuFEv=NYjkFLo8JQI`ZWv$C`pCBVhH$ zFCoF5LeCS`mNi@L$CofN7L7#s8q4QpV)kgGUxH&ej$U-4*dZv1oo$8}r!$6kiXW*? zZtwog6TXBQ`}J}?h`|;2QE0+5xcT7ShWRDrZS{)cF=}ZJ zSS;_xCJ?9bWjHbeyF?#7FHy*|#@A@6T0IZDj&7DguC*!7iwZX2ZAr5{Q&N)bhxOcb zG9L*AnoH8T{a{s%S4-9)k8dmK_$npUca}1RAbd7MYS-f(n7aKzWmw^d3JP2NOpM2; zSn(!vyGhiht|Uu zh32MOH3p?JJS+ecTZjP)hhdY>T?AA$!e|qYxYnGB2g?1EO&gQcyZLW}iQ%*8`~6aNg#MHzd%3{Sd0z4yXOd3`&!!_ko++Lv&QhX+tsJ5$Nf>e>`pJ{$3_@;9k zjAJqBnU-2lR##Y`f$&)CS5|H4l4|?US`L^83d;8GPpbBcu9#NF)0H-vN{Z}{0@g-u zX-;FS`o0v;;ZbIzH~UIQS8Yl2oj6<^9Nkyn;@8Gb^hY%xXF4K${P5>)iF;u^I^pt1(I^5hJr7Q|* z=0I>(J5^&b*lYicx%@hm+Kvo(kFtjOxO^Nw_+MhazZdyHeN(BQ5WA08=s-jck~o+l zG14!1$Pt7mQ^%xHp^KeC7*bik4Sa?ZQ$nytD8lqp0!6bkQlki2ps*~_O5EA* z=V5f@bEx<5*@GYO}Ria2yfl(>^8cut%3%gwk(M z)^D3v!`_7Ay-(4mJEHqOsVG=;kAp>D3wIJSIKnQ$Ne4-mW1#%(z~kSC-*soA@`C3` z8ZT%&GEb0;F~XCId|?i9g&{7y7`2`5>OvK&)9O|qziIzv=5uZeG9nRmAR^iU3Nc20 z+sXw#&Z@9EA&UYem?Nw+G8KYE0Ee?`j9$L3_m(+>vgqYgIDHvqz}t)?@WaL8#plP$ zP<;Z_jLSBkkma~hpUK#YAj!l~UJiN~X-Wga_Zv#iiE>N$IT9kwi>s8^i;>Wr;X~C5 zSyPRrY}nIWmE%0bhcE@Kk@2l3$joM#b~b(VABttEKs21pzOwGM#!$0@8?}h%63#r( z01CcX5!ZGkD;xN%E_4@;IU~>1xK|VD)4t~zKDrEHT6(-<5jB=RW_Q+GW3-MFycrpC zqhM%qMS!0zcFEYSzA}#!J1)z7$Q(o28`X(i8S1;$%?lNLaPI>nI3ib|J)`qomGx8= z4$TUIuS{j)7!)e{mPHjG@;aH#pg1|Hla896DSw+p?v~8FONyDB0S&x~^@w7mn0oiS z?{z#2MX(0dfL5+BkbH6m-Sap5&i?D>&+MehQI(4hPH}4+4~h-(+cPDJmJ-7xj$L6C zcvA)2xZy!yTsHQhsEEuX0OCwd;Zb}vDcA+gQ&j%(+&V8V+j)iY;Nu;~h_HMeJQE2= zXs}5g@UW1uZjH113ND7Mc&5H9z>2bh%V(7J9c8P)z&^ob$@F8# z0(>lb+6ve;iOMYNu=xoC4dv3!10?Q6aT4>mx6Lp#qB3GRj5ytOu(%XCdUap7*UROM zgJ7WwMg&0z{Ba_(tnZbrE;M9{hZqR@*9a(~rE$nM`1}9i-tQl(gf}9;mVRy7kmZ3R z{L@=m=nX__!}C9+mQ9$^x@9 zM7W!XH735kpk66zaREFoKW&yMi*;5SeN+)#W2TN0sOy9Aie0$ zMuD~y1V`dva~OIhLIGW}HCp7vOq+mTGE2Q4u~%|{jOUSb8tDLJm0Ngz?Ua{E@1f%q zX-buKlVtuS_V*tLIC7JMYx7T)6(4weP+Iyg4X;iI%Zwj~;ia*Vqz?5WRTL1JCg72H zH1-4U{E8EYmGd!wftbASOzmgnX%*SCg8*~=Pc-A-EWZCXJ7eV1QULW%eNOLoo9w=^ zDt3Y(X}|bco_;tDn%cNc>1|E4JQ2H z+T8lPlOjn|UJ>5h5GXUGbq~z8aq@YHIe<&e)(f%6pr;p3SHRNqeWm0HR>P#dyJ9kB z|FKL2a87__T||`3G#<7@7Pc8NLisymW@dr}+IcnVD@ZjGk^259&PeQpfT;Ta$i-|= zDR_5&LAQKiM8Nf_DJ70fo^btVnKZx62X$pBJ^vqTZXiXz8kZ2G{KJLwq+^LqcD!Pb z32R^yPWZbx_^9ySMs`TEo-vwKI+B!#?S+neUcya;6LgT8MioRl7Gld#0Pq2zw?}GL_KxV-(T$}DY0{6jApxEtA0Q5R z$=k|?rWDrhHZa@J8DzAAa#+zGcQj{|YNma_(o>wSX-`lobP5?@l)g;pwi*odlPtG> z4km*c{x%-yimWaeUj+0b<&ai#65+ig2OCFPK+6D>4B)cS@PRqwQ&>3@=aD>g;Zhk_ zO!I}jvA37Ih`0WhL|`}`Vgb*k#%tGfG@=PdEn3%~;IEojAJu(4p84}OV`s)q!1@as zR5s3*gH}TqlWCnZ6AfDO3Vjx@M5#-Jrr}$>n4j~%dy@sGi>D9oo3?a|7oM7}10`@P z?Xr&mG+l=Q^SD{|J?x#S3#np=V5y4-g*>9R($D=A$F-Yn7~T-lXgXJAsQWQ6k8G^wL_YrAPsuTfS@%@pCTEvZ|=4k&RE0 z;qzvTqh_j2)T%CR5y?{i$BkTk8UqUX#tlV_X#6TdO_*Cg>>A>gh_V!l8BRO0R^{_h z>_tXQ8*sQ`UMex3w!jHTg)K+2?v3)@4I6@!nH9w)W!cS^Vo7a7FHfl*T}L)z=^9I_ zl|nR8G>FEiwG&GdtU$7D{$YH5Fml%`JVv>w&a))Yy?WxXNL}0XzR{uaGSOh@`{SF z4x-`tf$4H-p_8j;oSBqbjTM(~3_$YfpE^@|WB!ba^vm0d3rX6I)(?x*GK zh{3XnChXz-(Vez__jiUgdJ%};OCV97O~Irch7%QB4h+L@7xAPL#OQx{J z%S#XD3S+|sYx_M-qXDY*=x+bSrSnvwZR=0cUWM{B@q?p zX&A^|pezWN)=WRrd20Zcr0sQTHCUM*OMH{2K>Es!I%;xtkH|1z5YwsZ=<^ zWJUD2vy?7$Y$s$~-m*E4j|;=UGP6SiEaXq8R}(;`xw5-iJ5%gWnAou4&lPF;SRgJo zkh!sLwbxDGO(w&t%&E6sbGjJUX3U<^tRe#1T0k^epNBDE-=}jM&;T6Y5zUxM84dNS z6h^8?SMSc^ca}*mj)n`*mv~KOs6)+$CKAax-YXLem1WmZpJ$~1YI6wIE=Hgl8Y3JF#$r|d|B7KxKDPxDr zr8pagE7kT5y-Xe8G-p27J!BL}3$Y~uluW(pOn*k^!?4ScKBh4XZV)D53Qwj4s@O7$ z%4BTzRT5tAKa&A+7h?rC$qT89CxHY)I{}qqkebT1Cn|XKYbsPv&-(({p$1(r_lT1h z4D`(E?C?;ho|AI(n$57fd9E+uFzT8HBoy@0FF|2mq0X$o{%VgFKDjt1i0=tczW}eO zp9V+5z;GC?K>L;4c-)fx0ZEDyKe8{T@fpDNbxtW_QyQ1mnDvB_DSJKZw6lbP&L|;u zQ`BB>wm@AShxpHpYZOlYaj;Zze*Sx~V1@zs6Gj_8%PI5DcV+Uz%(?9K7ez#c5 zGX_qMUJ19870w-_&8>lyAODVWHkhA|?SLU>|JbVf!#IP~n^ir;0PU1vnB~*S37|=`zN19X5Sc4Dq3KnkE)(6)mAZw^M z(q(UF9F8qz6-eR$7iy2LkJr-|5C0QY_?Z4B@U}2B>pz45Qe|e;%Q;scaPW8&IGb&g zl*A(6K8#ECBr)fa#JChm=a%6u2#i!tlVGiPvV}M`GJW07 zHM*c9V}X)DhQUTAup;p-sHs|g-Up`&niJ1fqr-FuQ5kUfJ2;QGEVVCR49OZ!NyLUD zEqsIbzx$3{f#g2Cwt+CNaDm)Uv-pQHh%i zH3laKMpcTk>&foqf8LMhWgFh7%5qIS`rAjVT*z0@1Iu@cAI|g;6Y@#YJ|bqb$FbqK z5K5wOmktPmk&RHJ&-m#SPP2$&^Se?h>eaP=xHev*t$4w}VdiyVE}pdm=*wLqd1(h| zbUT10Vt+}=nMo9GGwYpbWgr*QOrX+3b8S* z_Bsb3b@6iA8c2wj1Q{)uDzHXy#*hEJOd4pcs6^0!?QzoCMAmhrX?zSj zrt1#~Q}x{j6TWhu^y-QG?R%wK1v6==4W3L&vUrGZMuCI3l~yKF&kF^GyX%qBR&B8D z7hGh6a^OG_b9XPAzt6x;FX6)q`MSSB)bI+z^xZ<)f8aK#yc?FsA<_Y&-X}SpsPWIz zra8$?4x=mKk&6;TU%?6w(7o@DElJ8rRB5DS_Q>^%UI?6blk%hy?C4X4$E{Z4s3*QF z-^^K~%p8URYoRhM|#EwPWg4Gvs7~B$&;DH7j8n4e4a%r8e5;n8FaxIZos@`0u(hK69fP zz)SH|%WG#Cj2Oo_S)?AxkiuNedkM}Z>5OA{cgtT&T2D7)wv_a?b1 zeK5`>YElj!N#|<$lf(n zIgMS^vus|H+Wg`1KeD|ch5NuHyrwVzmbzTnG9#9Fn~sS~uF5<%mNl2*6n{yTRvL&^F`p$o#;NcH#f z24`oct^-|k?_J$O_{KhB_9G4u+b1z&EJDunoE86BkgvY!#&LKUOPf33T;`KrtPR0} z4e{D%1%`}#=0D3ex!#!R<$Co|u!Hs$ndx&cM3Ag3CVSBhES5FpKq}=>?lU|jIf~4P z$50TLBS4WdLz(;z3>E6!^QFo827)!wPpMuT?186!K3!J#B)mH?K-KC8T zAVDQdqa>dT;p~Y8O6DE$!X>>IA;TuEQm_vje;v5JEIykV->>xPXPBEzB>cn5iej7< zjlvaBpIpoPq3Bf}^ew3)X)18M#H!%eeU)BPVeefiG%zc^rEYmsGL62%o0!7TBT98+ zN{A4(ID!&7UPSSu5RnTykp{A1UGEOT9y{y==`zo97d%oc+X=ZWW4J~QRP~0YlyYNzlzR8gPDBySq)Yn)EhSRc+I@j$`oA7)PdYO6Rm&2g!7d!Zz^ zk!9!J=8u2DvhQQ&SOVg{w$8oG!;JtxGv;Q}A}kudeT;KHguPANc28OTO@@|JTv-=5-#7 zxq|bTarf58ju~qD?}j4E;?zCx__%+UfEI;qL><+9pQ5H2Bkh}dP?yHD?Ssj}s&<+M6$ z=eI=YC!SiLkVw4AtTg^+DRv(Wmm`S8+#~ttyud3w`5|}I6sHnh>3X5@JfxcCNGKNU zd&a8(-o2zUlz#hDKIy{v9Zk%l4&+$V!AGp0btLj?&P0bzaFcjTj6 zqt?fsBsoF>wn#>RM90Lily!MYD9-u&L_>Zu!-$@4UQ^^7qz;a$qSAucQK{XKqsBTe6632EO+x(7E z!6=%jT3|IsRi$61CHG$kvzQ6n(uQbP(U^wLQueNky}4b>%N4LopYD!~+A=H8N@y`y zH8Tl`uq>bZaF`4*Iv<|nebjUn+JoU}t=HH>vVo>nzw^^6AW@Tv<%YDD;K_31TeRoN zp4Qo<{25BDp!z@-w}&pVN@uK9(i)1SK2-t{nIunDj5-2|Q@A_jq>L-ZXO`u1#ryW$ zOK2`h<3n`>Wh?y%hsl!x{+JjJG@EM+tW-}2!2Us8?9&S@STSf;WS`YkCHG1js0wjg zuz0ouECun?;`&f-E?-S~=wa*zGol`{pE+Lq6fQO;ZdOlIgQ{rB&`*S(ya9NMK>HW2l^$qG^Bo*YVmZbN~KELv=b8ckk`U9uKPU@^G2Lc8C z2RqKDPBxymPG@$oUF26IZ}?Z`LgyB}cvZG*0qq6d%DS$rRl| zY8pJH+rh}4qSXx^I}^ctEVlehrMs=4M8mRp+9GWODp`6y_-u2XBzwPk8s85!^Z|n- zmdLJ0nF7&vm&7{~S(TANJS;xHwnJ7SY$AqoLU;z4r20ED+jz-p_fPsWVCAoKz4&xgiBd#?X z7hhGS4I(6JsnbLFT^YYeeE9m3$A5K#dHENjaWfez1jFHX?h=g0m=t7nMvnA?1eUKc zoY)4N3z1N$n-I&TmN8c~s8ZfEy*6w06MV*g*B4YdSakK^yjuMav4`htHi`&{ z%ZsO9MrC!_Yo@>%teEfL4$x2}#jyOiBKn_LIsXI$;)+{qV-tA;v>u<3rhK2_0#C4>t{JNG5ox@6>T+vKPt*LU* zZIDA<+V6luTL~`VH`R+4aEx+=S+Jl)!bAKV2&y z_0AXJVHuVyKT}@gDrbc91_qALD37dQ^OYVr-c2S;oW7hb0~%~ApH-}2cqEVUm<0`7 zOtK)uQd=NwYIaLRtP*lcS$xJ`U4K!Zs3h=(MJtH=9kj+4v|2myWX(QI_J(HQ76`2= zBlSp;}UV_y7svU3yP!Fv1(Ym^ebYw| zyKODJY5!}!)h&n{L2k2pC9! zJan)`2@w{ym2WAX#C6N-%aY>Bj80av88-e6Y*q;^>H1?}&k4dmB(;RG#+ex?r(aGr zUbUaio8pgnj#1#w6P2!4A{M#u#@dxO?j|6HuI-FItl?IS`dqJ(8)KLZOx;@WmZ#Zi z9~<(8K9hx&6h7c-+RU+L{-8_$QOUyjDqltk_j>VAIoAK$v;xAug6V78D{|QJ_e^mNBVP>Is3oq#RJU7o8imi<^~h=aJuFiNmj1+j zqvE!~5e6cRQ6wdwjZ7X=DHVJJ9(Y?efC+h*^IYD@2nthfECS>Eq9P9lGLPxGW8#Ip zEJI&sA=)~$dwi&U#SZ}P|hO-6#Ib6tox4PY}prv4Nnl8tD8c}3+w^`R&!d7DT@vHj~^ z=lc%sC@~b2s7g2efcKN+8hxW2(EFwHKKR2e9cNs%AC>1zeC3d;8sKLt($|Vln&$LC zu0Wp&{xQ?wSVu^`{EP?nVdF8`HGv>d#+$xyDquU5GP_0%6k-aw{vv@bEaRw-hk5Yj zo^m=wwttO#r7Y7gIpgzQoq}J4bsGk3Kd*Gpgj?)5;F(#bU{w!Cj|}yN%bajAsDkFx z@rYgqp)1UZsJlY%K<(>4H}!>6@~h41woN-3VOSOg@b|9FHVjFdbX>O z7d;v6o7W9Yat5W*8C~Ilp(5R^tyfX`*W>h8r);pTZ0)V7!16T*G>7?XD~kuuQBL4w z=|G+^Ap%k&3kDkHq6fwFamefKLve8Z;9MLYQ=qf2%0Rs*z%I|0dPS{LX0Gh>-?tg} z3ry?w4SPj2OnbH%PF#bO;*8&5#hLHYg*XNWv<&=JT|a zAb9B5$3x*Wlp>5(spp^ooh<7kSHy7DZqgVO2d$c)UfkOt=1vdU7OIa}wkR|?+ATr% zA$O{=o+~1W&wMlhrCDsS`F4kZEn&#%;ziy!&?gJkC-{wq7G;8U{bicPN)GI#V0tjo zr1_0`lrSnK^eb>zR;SxzUF>zF~Lh-yVF|4 zvv6;y|(NC86n>Tr2@(*(ghzGJG62&mhRvqIRob^r#tChzP(EK*-xVe?0 ziR>r=MJTb5^bk01B;$lVo{F+P1CSP!>2>;AqgN{bb>!MEW>Fz{gIs^~tHwZ7msvDl zY#%{GYf2T!0*4pB8t%{gY_JCnV&|XN@NQ5z$1?&$eOcysm%4UNNle8 z6AK*%09SP$*{F5b0dma+b!)JKs-EEb`NY7sIFtuh7Yj)SiHR&%0**X!Le%X{0C3lB zWRR2U9xid*UY1Wo={r}2(^bGqnI}5wyc90hW|-RX`poGz*SZOwkO}~m`{_VK3!E~TXdSp9E}~xCL+$2!h$`ESWO;-Z z=$0-&uOQI!@FkFt4AavaH^-u{*tkGE^y?~vsjn6!$UfZ-fU2|A#`5c40 z>8B^XGwg0UY74oxSA}3)b@3rfpdQd)BE0<+#&_hRZ0?H^onFSB8#nB_@dPWKl7~#x zkG@c7D1*1LtP-+n%XM)PW*QDSRYmDC7b3PJ=e1j3od+}W?iuNQMHcm5vQ=_zk3VQ4eLWL0jy1uu+x%mknMqiWwqsWAI7=K zMIIh^dcC<@yePPbp9nre&r9jVi9Gze1;*rGAfw^UPv&CrT`lrNj##2LWhbA1ClAZw zqyDHodC-t%D74`rgw~Ha_#U_Lcy#N?!ZT__c2M@fy9h_x9|gUf25!9nKAYq6_t-vw6I0WRx=*Rfjv14a6WT4hQFIRYYp(!j&}1;;1k{ z#hNJ<=tA-tp0r@bkO7ivCHjbQ2B_jcQHaZkaBsJJf-Fyb%P zJ(F@7Lkoo+lE?EHm@#-DjtGFbI#sDT(_9Ow&sUh`J#@G;m6*k}0SR$V3V*jh1v507zeYw<3Lef|wEY)=;e* zc@XnuyHE740T`SW&lV!=egd5V5@+JgqpX&$h4Abf$M|=5fmFS*t)JH636SFxgsMfg>(|h(DR5bx z4`2(fVJB3hE7l<;qL5!yuX=lUAfT2sZ55wC>)FQnF35JzV?XA;r0=c^t7Z$N87`DV zcQDdBO@=`6srip1LB84Xh=xM1tZhVxW>MxZT!?`g4Ab|1MTwTb3>h0Wkyf}`rH^g| z!$G22L9=JxMW_C3WgC{k?0oVv)-uXsq#8y3Uer}AH+4gl7V4&GKAAce77H`au&f`y zlLK#0SSRm@jg!=ZRR0QIHM_QZ(z|!-+9Hc_R&-ZaUM0?^qUMgscE!Q3rIDy~K7n{) zn*V%rTX|@X%l_SLKo0okP2e@Bt#-I1YV}H-nb_RvwqK?Dr`=yHKC*jKFWctkD=+%= zP_<4v32xP8@~#POBId!M;{wk&+T=phn9-EyBE9nNu^D#|}w`bh@%6rjZ5?KG&MZ;FA> zOwgAD+(2{t2t#N>PCXoY>TXBL??H{L`YRq695|%aLJOOslAQw;cAtC!iwku0TO@Oy zfgpSRhO)RO;&CUA1=cy~AY*^N<1-ezZFKtOyODnFz$w)Ap(XkmYPKw2)1Ze05`FRD#UZI=(g^B9m~W-284F4A`Rdrc~||Bwt_u4lYS=tk}I zXnxQYQe*E-+iVK<)xk0AEd~AJ^XXWPdmZ2~@W^l^lA1Vg1%rG)k6RR|&MJ#@d!TKl zqks^dpn>KB0S$+|NKfB4U-a9m^q!@90~dhT9?N4b0TmVoIOIVK>ImezoE zS_q=-SVO&o9ALwbm&~21a=YfP!(;K0!HO#gOKp^ci~w!2 z<$;%bikJzWar+nZQq1p~pZHN?x^zT` zR(pZ)AO)f7J6W507fqG5Po{~)*T;xiIL_8v1VzVWTvzD<%+$qhO1;$WdJWTUDzaZ;O%TE>RUCb*27Xt2kXccZOQ*$fFMDaw@%{C-u|YRRAQ40f>Qv*!Cs~l3z-TsB1g6^L{T*@}q%6 z>UJQA;I9T(yRs69`P(G6Saf3CEXy0oSbKTK#z%BhW6C((@oa!(-}%0ZN<20s_u6Gz z>%lNfi@X4AQQGYzjThHbTGMSiAaJE0ywW5+OmcA~B>(30x`5Y^H?4T}%UC zFfM8MtHN0}BykI`fVWK{!QjZqAb**6)U+}Y*(5OF<-X1;Ya`37@`Rw%=;ate?IusY zv_;^Rsz6h}apgVR-q@LIUs(uu&oey}>68*aRGp*%h&I;nD6xdd_TKO4MXTld0KQV% zw(FvxhOZt0MeOf2-k{AVXMSqcK&TrKDD@@XE-tOQ^^v@xx?v^O^$jnT1JqO*$b@%ORv2zgR%T2vG7Z4wq-4NV5%!Y#*HP_Ii5wE?MV1e6mR} z=O*w<$9l*6-9tyc?>Fu-91vFnIM#y@B_`2!rm=a&^1fCxnFDW%j=(>Jm z&7?Uwo01`aI)PmuCi9X7jTfUvYTh6FSF@W`RRf7;{u(EJe(haC8&!hs4jb|al^i;E za<)`#NOcKqLp~2W0yjQ2y(A}D3*=}GKQ(+Q`B5g^S8xN^KvsH|U8xmtt3o$ji|~Yv z@Mf8E2~7B}YfMzvPW13Ch_z(Hyv?>}^}Dz?Mmh2Nc!=NOz7# zk>9^&MRR(#rNU9|TCYvP*HrNE&RRDuXfZGZwY-%%Cj_$2U(|WsPK zc9P5e5pbFc#R*e!yGWXEvJ<>|)P8p z%?EUHRZ`aQq$_t{8I{oMa1o^YS+je2k^bX*nS5E6din*ZihKFbu%ijL8X21d+b|{z zI)Efo3dN{PQ*-1r3kiQoSsy&d(ClJ>0pP+c9#ldw-v|I{(}PB78HOOL%mRjr)&2m`^}&{k=XuO&%-&+|5jDmPDl zO@`^wYqaFMQH-tl6fELT1WcX`EC<|~H%YKj%(>={vGqprFt~gnw%-N+uKt8_Uq@=z z+ic5ZS6J!XW({)?H}%-&S{|7cl;ya>j@4-SOEL0l9n#QOA7XVqN>I@1uZYYzr@C>$ z1Sf*cLu;#Ntu(_8l%jtdyC6Hq4Yms()=JG=0QClD5n~!@U z4(AdefCXr&uilFVUqrzl22n#LK^yi-+-~DeTHe2C&zgkNZDx%zb7qx$gU#K6Bi<2x z$N++@s5aHRCa@Y$#RDjN1@6KcQpcgsP+m$k`pAuGQS33N&V6*<*P`#YahFy~Uc}8p z!>4Tl>gw-(V~uEG`ymy0jL7^$mPHo7rKfWrT5Tx1P!<B5@%bj zConlE!8O*S*0Bh8R_&NpKC(}fa)i4x*XnFc--7dKUuNnGQxGJ=kDVn>n@vp9MFXSe zVW;+m-ov!BAWwXQ*DS4#%i|>KM_!YSktEV(@@FyGI3xTbL37j>aj>D(nKln4I1oDT z(Gu|p*g=o;k|q%s@W&leUc99b<5#FMEF~BMeA*OHp{QPkUTKHJDE$ACI+DG0e zy0`(5P^k8GBi?wV5~yK1Az{ciVraa}=A6<(wQanx5SbDMf3e^N*ZawAl~&_@r5S>_ q>ZVEn0000|J7 $spec_part) { $comment = ' (Used by'; foreach ($spec_comments[$spec] as $i => $spec_comment) { if ($i) { - if ($i > 3) { - $comment .= '...'; - break; - } $comment .= ', '; } else { $comment .= ' '; } $comment .= $spec_comment; } + if (strlen($comment) > 118 - 3 /*start comment*/ - 4 /*)end comment*/ - strlen($spec)) { + $comment = substr($comment, 0, 118 - 3 - 4 - strlen($spec) - 3) . '...'; + } $comment .= ')'; } print << tr { margin-bottom: 4em; text-align: center; } @@ -332,7 +332,7 @@

Zint Barcode Generator and Zint Barcode Studio User Manual

Version 2.13.0.9

-

May 2024

+

June 2024