[llvm-commits] CVS: llvm/test/Programs/MultiSource/McCat-18-imp/L_canny.c V.h V_commands.h debug.h main.c pgm.c pgm.h sg01.imp sg01.pgm textloc.c textloc.h
Chris Lattner
lattner at cs.uiuc.edu
Mon May 12 13:07:01 PDT 2003
Changes in directory llvm/test/Programs/MultiSource/McCat-18-imp:
L_canny.c added (r1.1)
V.h added (r1.1)
V_commands.h added (r1.1)
debug.h added (r1.1)
main.c added (r1.1)
pgm.c added (r1.1)
pgm.h added (r1.1)
sg01.imp added (r1.1)
sg01.pgm added (r1.1)
textloc.c added (r1.1)
textloc.h added (r1.1)
---
Log message:
Initial checkin
---
Diffs of the changes:
Index: llvm/test/Programs/MultiSource/McCat-18-imp/L_canny.c
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/L_canny.c:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/L_canny.c Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,266 ----
+
+ /****
+ Copyright (C) 1996 McGill University.
+ Copyright (C) 1996 McCAT System Group.
+ Copyright (C) 1996 ACAPS Benchmark Administrator
+ benadmin at acaps.cs.mcgill.ca
+
+ This program is free software; you can redistribute it and/or modify
+ it provided this copyright notice is maintained.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ ****/
+
+ /* ------------------------------------------------------------------------
+ * L_canny.c Canny Edge Detection
+ *
+ * V
+ * University of Illinois at Urbana-Champaign
+ *
+ * Program written by A. Tabbone (CRIN/CNRS- Lorraine, FR)
+ * Modified for V by C. P. Hess (Univ. Illinois at Urbana, USA)
+ * Original copyright appears at EOF.
+ *
+ * $Id: L_canny.c,v 1.1 2003/05/12 18:06:07 lattner Exp $
+ * ------------------------------------------------------------------------ */
+ #include <math.h>
+ #include <ctype.h>
+ #include "V.h"
+
+ int GaussianMask();
+ int DGaussianMask();
+ int dfilter();
+ float *dnon_max();
+
+ int L_canny(sigma, image, nc, nr, edge, err)
+ float sigma;
+ float *image;
+ int nc;
+ int nr;
+ float **edge;
+ char *err;
+ {
+ float *Ix, *Iy, *gr, *gmask, *dgmask;
+ int tgauss, tdgauss, i;
+
+ if(GaussianMask (sigma, &tgauss, &gmask, err)) return(1);
+ if(DGaussianMask(sigma, &tdgauss, &dgmask, err)) return(1);
+
+ if(dfilter(image, gmask, dgmask, tgauss, tdgauss,
+ nc, nr, &Ix, err)) return(1);
+ if(dfilter(image, dgmask, gmask, tdgauss, tgauss,
+ nc, nr, &Iy, err)) return(1);
+
+ gr = (float *) calloc(nr*nc, FWS);
+ if (!gr) {
+ sprintf(err, "Out of memory");
+ return(1);
+ }
+ for (i=0; i<nr*nc; i++) gr[i] = MOD(Iy[i], Ix[i]);
+
+ *edge = dnon_max(gr, Ix, Iy, nc, nr);
+
+ return(0);
+ }
+
+
+ int GaussianMask(sigma, tg, mask, err)
+ float sigma;
+ int *tg;
+ float **mask;
+ char *err;
+ {
+ short i;
+ float *coeff_gauss;
+ float *p;
+
+ *tg = (short) (GAUSS_MASK*sigma);
+ if (*tg % 2 == 0) *tg += 1;
+
+ coeff_gauss = p = (float *)calloc(*tg, FWS);
+ if (!coeff_gauss) {
+ sprintf(err,"Out of memory");
+ return(1);
+ }
+
+ for (i=-(*tg/2); i<=*tg/2; i++) {
+ if ((i+(*tg/2)) == 0)
+ *coeff_gauss++ =
+ (float)((erf((double)(i+0.5)/(sqrt((double)2.0)*sigma))+1.0)/2.0);
+ else if ((i+(*tg/2)) == *tg-1)
+ *coeff_gauss++ =
+ (float)((-erf((double)(i-0.5)/(sqrt((double)2.0)*sigma))+1.0)/2.0);
+ else *coeff_gauss++ =
+ (float)0.5*(erf((double)(i+0.5)/(sqrt((double) 2.0)*sigma))-
+ erf((double)(i-0.5)/(sqrt((double) 2.0)*sigma)));
+ }
+ *mask = p;
+
+ return(0);
+ }
+
+
+ int DGaussianMask(sigma, tg, mask, err)
+ float sigma;
+ int *tg;
+ float **mask;
+ char *err;
+ {
+ short i;
+ float *coeff_dgauss;
+ float *p;
+
+ *tg = (short) (DGAUSS_MASK*sigma);
+ if (*tg % 2 == 0) *tg += 1;
+
+ coeff_dgauss = p = (float *)calloc(*tg, FWS);
+ if (!coeff_dgauss) {
+ sprintf(err,"Out of memory");
+ return(1);
+ }
+
+ for (i=-(*tg/2); i<=*tg/2; i++) {
+ if ((i+(*tg/2)) == 0)
+ *coeff_dgauss++ =
+ (float)(1.0/(sigma*sqrt((double)(2.0*M_PI))))*
+ exp(-(double)((i+0.5)*(i+0.5))/(double)(2.0*sigma*sigma));
+ else if ((i+(*tg/2)) == *tg-1)
+ *coeff_dgauss++ =
+ (float)-(1.0/(sigma*sqrt(2.0*M_PI)))*
+ exp(-(double)((i-0.5)*(i-0.5))/(double)(2.0*sigma*sigma));
+ else *coeff_dgauss++ =
+ (float)((exp(-(double)((i+0.5)*(i+0.5))/(double)(2.0*sigma*sigma))-
+ exp(-(double)((i-0.5)*(i-0.5))/(double)(2.0*sigma*sigma)))/
+ (sigma*sqrt((double) 2.0*M_PI)));
+ }
+ coeff_dgauss = p;
+ *mask = p;
+
+ return(0);
+ }
+
+
+ int dfilter(image, g, f, tm_g, tm_f, nc, nr, filt, err)
+ float *image, *g, *f;
+ int nc, nr, tm_g, tm_f;
+ float **filt;
+ char *err;
+ {
+ register short i, j, l, high = nr, larg = nc;
+ float nv, *d, *d1, *d2, *temp;
+
+ d = d1 = (float *) calloc(nc*nr, FWS);
+ if (!d) {
+ sprintf(err,"Out of memory");
+ return(1);
+ }
+
+ for (i=0; i<high; i++)
+ for (j=0; j<larg; j++) {
+ for (l=-(tm_g/2); l<=(tm_g/2); l++) {
+ if ((j+l) < 0) nv = (float) image[i*larg];
+ else if ((j+l) >= larg) nv = (float) image[((i+1)*larg)-1];
+ else nv = (float) image[(i*larg)+j+l];
+ *d = (nv * g[(tm_g/2)-l]) + *d;
+ }
+ d++;
+ }
+
+ d = d1;
+
+ d2 = (float *) calloc(nc*nr, FWS);
+ if (!d2) {
+ sprintf(err,"Out of memory");
+ return(1);
+ }
+
+ for (j=0; j<larg ; j++)
+ for (i=0; i<high; i++) {
+ for (l=-(tm_f/2); l<=(tm_f/2); l++) {
+ if ((i+l) < 0) nv = d[j];
+ else if ((i+l) >= high) nv = d[((high-1)*nc)+j];
+ else nv = d[((i+l)*larg)+j];
+ temp = (d2+(i*larg)+j);
+ *temp = (nv * f[(tm_f/2)-l]) + *temp;
+ }
+ }
+
+ *filt = d2;
+ return(0);
+ }
+
+ float *dnon_max(gr, Ix, Iy, nc, nr)
+ float *gr;
+ float *Ix;
+ float *Iy;
+ int nc;
+ int nr;
+ {
+ int i, j;
+ float *maxima;
+ float R, ampl1, ampl2;
+
+ maxima = (float *) calloc(nc*nr, FWS);
+
+ for (i=1;i<nr-2;i++)
+ for (j=1;j<nc-2;j++) {
+ if (ZERO(I(Ix,i,j,nc))) {
+ ampl1 = I(gr,i,j-1,nc); ampl2 = I(gr,i,j+1,nc);
+ } else {
+ R = I(Iy,i,j,nc) / I(Ix,i,j,nc);
+ if ((R >=0.) && (R < .4)) {
+ ampl1 = I(gr,i+1,j+1,nc) * R + (1.-R)* I(gr,i+1,j,nc);
+ ampl2 = I(gr,i-1,j-1,nc) * R + (1.-R)* I(gr,i-1,j,nc);
+ }
+ /*
+ else if ( R >= 1.) {
+ ampl1 = (I(gr,i+1,j+1,nc) + (R - 1.) * I(gr,i,j+1,nc)) / R;
+ ampl2 = (I(gr,i-1,j-1,nc) + (R - 1.) * I(gr,i,j-1,nc)) / R;
+ } */
+ else if ((R <= 0.) && (R > -.4)) {
+ ampl1 = - I(gr,i+1,j-1,nc) * R + ( 1. + R)* I(gr,i+1,j,nc);
+ ampl2 = - I(gr,i-1,j+1,nc) * R + ( 1. + R)* I(gr,i-1,j,nc);
+ }
+ /*
+ else if (R <= -1.) {
+ ampl1 = (- I(gr,i+1,j-1,nc) + (R + 1.) * I(gr,i,j-1,nc)) / R;
+ ampl2 = (- I(gr,i-1,j+1,nc) + (R + 1.) * I(gr,i,j+1,nc)) / R;
+ } */
+ else
+ {
+ I(maxima,i,j,nc) = 0;
+ continue;
+ }
+ }
+
+ if (GEPS(I(gr,i,j,nc), ampl1) && GEPS(I(gr,i,j,nc),ampl2))
+ I(maxima,i,j,nc) = NGMAX;
+ }
+
+ return(maxima);
+ }
+
+
+ /* ORIGINAL COPYRIGHT *****************************************************
+ * Copyright (C) 1994 CRIN *
+ * *
+ * This software was written by A. Tabbone at : *
+ * C.R.I.N/CNRS-INRIA lorraine *
+ * Boite Postale 239 *
+ * 54506 Vandoeuvre-les-Nancy Cedex *
+ * France *
+ * It may be distributed or copied, in whole or in part, within the *
+ * following restrictions: *
+ * (1) It may not be sold at a profit. *
+ * (2) This credit and notice must remain intact. *
+ * This software may be distributed with other software by a commercial *
+ * vendor, provided that it is included at no additional charge. *
+ * *
+ * Please report bugs to tabbone at loria.crin.fr *
+ ***************************************************************************/
+
+
+
+
Index: llvm/test/Programs/MultiSource/McCat-18-imp/V.h
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/V.h:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/V.h Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,248 ----
+ /*-----------------------------------------------------------------------------
+ * V.h V Includes
+ *
+ * V
+ * University of Illinois at Urbana-Champaign
+ *
+ * History:
+ * - Completed V1.0 August 1994
+ * - Modified for V2.0 October 1995
+ *
+ * Id: V.h,v 1.1 1994/07/08 05:55:20 develop Exp chess $
+ *---------------------------------------------------------------------------*/
+ #ifndef _V_h_
+ #define _V_h_
+ #endif
+
+ /* ----------------
+ * INCLUDES
+ * ---------------- */
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <limits.h>
+ #include <math.h>
+
+ /* ----------------
+ * TYPE DEFINITIONS
+ * ---------------- */
+ typedef struct V_struct{
+ char *label; /* label */
+ float *data; /* data */
+ int data_type; /* data type */
+ int ndim; /* number of dimensions */
+ int *dim; /* dimensions of data */
+ } V_struct;
+
+ typedef (*FUNC_PTR)();
+
+ typedef struct command {
+ char *name; /* name of the command */
+ FUNC_PTR func; /* C function corresponding to the command */
+ } COMMAND;
+
+ #include "V_commands.h"
+
+ /* ---------------------
+ * MISCELLANEOUS DEFINES
+ * --------------------- */
+
+ #ifndef M_PI
+ #define M_PI 3.14159265358979323846
+ #endif
+
+ #define VERSION "2.00"
+ #ifndef PI
+ #define PI 3.14159265358979323846
+ #endif
+ #define TWOPI 6.283185307179586476925286766559
+ #define REAL 0
+ #define COMPLEX 1
+ #define FALSE 0
+ #ifndef TRUE
+ #define TRUE 1
+ #endif
+ #define FFT_BACK 0
+ #define FFT_FWRD 1
+ #define NNEIGHBOR 1
+ #define LINEAR 2
+ #ifndef NULL
+ #define NULL 0
+ #endif
+ #define SYNTAX_ERROR 99
+ #define HDF_ERROR -1
+ #define USAGE 2
+ #define PLOT_DOT 0.0
+ #define PLOT_BACKGROUND 250.0
+ #define NGMAX 255
+ #define NGMIN 0
+ #define EPS 0.00000001
+ #define GAUSS_MASK 6
+ #define DGAUSS_MASK 8. * sqrt(2.)
+ #define POCS_ITMX 25
+
+ /* ---------------------------
+ * MANPATH DEFINES
+ * --------------------------- */
+ #if defined(SUN) || defined(SUN4) || defined(IRIS4) || defined(SGI) || defined(IBM) || defined(IBM6000)
+ #define HASDIRECTMANPATH
+ #endif
+
+ #if defined(HP) || defined(HP9000)
+ #define NODIRECTMANPATH
+ #endif
+
+ /* ---------------------------
+ * C FUNCTION DEFINES
+ * --------------------------- */
+ #if defined(IBM) || defined(IBM6000) || defined(HP) || defined(HP9000) || defined(IRIS4) ||defined(SGI)
+ #define log2(x) (3.321982810*log10(x))
+ #endif
+
+ /* ---------------------------
+ * FORTRAN SUBROUTINES DEFINES
+ * --------------------------- */
+
+ /* If F77 (instead of g77) is used for IBM and HP */
+ #if defined(IBMF77) || defined(HPF77)
+ #define SSCAL sscal
+ #define CCOPY ccopy
+ #define SCOPY scopy
+ #define L_CFT fourt
+ #define L_PISHFT1D pishft1d
+ #define L_PISHFT2D pishft2d
+ #define L_PISHFT3D pishft3d
+ #define L_PISHFT4D pishft4d
+ #define L_ABS getmag
+ #define L_PHASE getphs
+ #define L_AMPFIT ampfit
+ #define F_HSVD hsvd
+ #define F_LPSVD lpsvd
+ #define L_SYNFID synfid
+ #define L_RMDC rmdc
+ #define L_GS gs
+ #define L_TSLC1 tslc1
+ #define L_BXAMP bxamp
+ #define L_BXIMA bxima
+ #define L_ZUFALL zufall
+ #define L_ZUFALLI zufalli
+ #define L_NORMALEN normalen
+ #define F_CWK_SLIM cwk_slim
+ #define F_SLIM f_slim
+ #define F_SLIM_CSI csi_comp
+ #define F_GSCOEF gscoef
+ #define F_GMATRIX gmatrix
+ #define F_CSIVPNLS csivpnls
+ #define F_ZSVDC zsvdc
+ #define F_CSVDC csvdc
+ #define F_POLYFIT wpolyfit1d
+
+ #else
+
+ #define SSCAL sscal_
+ #define CCOPY ccopy_
+ #define SCOPY scopy_
+ #define L_CFT fourt_
+ #define L_PISHFT1D pishft1d_
+ #define L_PISHFT2D pishft2d_
+ #define L_PISHFT3D pishft3d_
+ #define L_PISHFT4D pishft4d_
+ #define L_ABS getmag_
+ #define L_PHASE getphs_
+ #define L_AMPFIT ampfit_
+ #define F_HSVD hsvd_
+ #define F_LPSVD lpsvd_
+ #define L_SYNFID synfid_
+ #define L_RMDC rmdc_
+ #define L_GS gs_
+ #define L_TSLC1 tslc1_
+ #define L_BXAMP bxamp_
+ #define L_BXIMA bxima_
+ #define L_ZUFALL zufall_
+ #define L_ZUFALLI zufalli_
+ #define L_NORMALEN normalen_
+ #define F_CWK_SLIM cwk_slim_
+ #define F_SLIM f_slim_
+ #define F_SLIM_CSI csi_comp_
+ #define F_GSCOEF gscoef_
+ #define F_GMATRIX gmatrix_
+ #define F_CSIVPNLS csivpnls_
+ #define F_ZSVDC zsvdc_
+ #define F_CSVDC csvdc_
+ #define F_POLYFIT wpolyfit1d_
+ #endif
+
+
+ /* ----------------------------------
+ * LIMITS
+ * ---------------------------------- */
+ #define HISTORY_SIZE 50
+ #define MAX_STRING 256
+ #define MAX_COMMAND 256
+ #define MAX_NDIM 10
+ #define MAX_REG 50
+ #define MAX_FLOAT ((float)3.40282346638528860e+38)
+ #define MIN_FLOAT ((float)1.40129846432481707e-45)
+
+ /* ----------------------------------
+ * MACHINE TYPE SIZES
+ * (MACHINE DEPENDENT)
+ * ---------------------------------- */
+
+ #define CWS 1
+ #define FWS 4
+ #define DWS 8
+ #define IWS 4
+
+ /* ----------------------------------
+ * FILE FORMATS
+ * ---------------------------------- */
+ #define FF_HDF 1
+ #define FF_ASCII 2
+ #define FF_UBYTE 3 /* RESERVED */
+ #define FF_BYTE 4 /* RESERVED */
+ #define FF_LONG 5 /* RESERVED */
+ #define FF_SHORT 6 /* RESERVED */
+ #define FF_INTEGER 7 /* RESERVED */
+ #define FF_INTEGER_MSB 8 /* RESERVED */
+ #define FF_FLOAT 9 /* RESERVED */
+ #define FF_DOUBLE 10 /* RESERVED */
+ #define FF_CFLOAT 11 /* RESERVED */
+ #define FF_CSHORT 12 /* RESERVED */
+ #define FF_CLONG 13 /* RESERVED */
+ #define FF_VAXSHORT 14 /* RESERVED */
+ #define FF_HDF_RASTER_8 15 /* RESERVED */
+ #define FF_HDF_RASTER_8_WLUT 16 /* RESERVED */
+ #define FF_HDF_RASTER_24 17 /* RESERVED */
+ #define FF_PGM 18
+ #define FF_SISCO 19
+
+ /* ----------------------------------
+ * WAVELET TRANSFORM DEFINES
+ * ---------------------------------- */
+ #define HAAR 1 /* HAAR wavelet basis */
+ #define DAUB4 2 /* DAUB4 wavelet basis */
+ #define DAUB6 3 /* DAUB6 wavelet basis */
+ #define DAUB8 4 /* DAUB8 wavelet basis */
+ #define DAUB10 5 /* DAUB10 wavelet basis */
+ #define DAUB12 6 /* DAUB12 wavelet basis */
+ #define DAUB14 7 /* DAUB14 wavelet basis */
+ #define DAUB16 8 /* DAUB16 wavelet basis */
+ #define DAUB18 9 /* DAUB18 wavelet basis */
+ #define DAUB20 10 /* DAUB20 wavelet basis */
+ #define BO79 20 /* 7-9 BIORHOGONAL basis */
+ #define DWT_FWRD 0 /* Forward transform */
+ #define DWT_BACK 1 /* Inverse transform */
+
+ /* ----------------------------------
+ * INLINE FUNCTIONS
+ * ---------------------------------- */
+
+ #define abs(x) ((x>0)?(x):(-(x)))
+ #define I(DD,x,y,width) DD[((x)*width)+y]
+ #define MOD(x, y) ( sqrt(x*x + y*y) )
+ #define ZERO(x) ( (x<= EPS) && (x>= -EPS) )
+ #define GEPS(x, y) ( (x > (y+EPS)) )
+
+ #define MAG2(x,y) (double)sqrt((double)((x)*(x)+(y)*(y)))
+
Index: llvm/test/Programs/MultiSource/McCat-18-imp/V_commands.h
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/V_commands.h:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/V_commands.h Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,360 ----
+ /*--------------------------------------------------------------------------
+ * commands.h V Includes file about the command table
+ *
+ * V
+ * University of Illinois at Urbana-Champaign
+ *
+ * History:
+ * - Completed V1.0 August 1994
+ * - Modified for V2.0 October 1995 (cph)
+ *
+ * Id: V.h,v 1.0 1994/07/08 05:55:20 hjiang Exp hjiang $
+ * (Included in V.h)
+ * only the file with COMMAND_HOME allocates memory for the COMMAND table
+ *-------------------------------------------------------------------------- */
+ #ifndef _commands_h_
+ #define _commands_h_
+
+ /* -----------------------------------------------------------------------
+ * TO THE V PROGRAMMER:
+ *
+ * In this file (commands.h) all new V routines should be recorded for
+ * incorporation into V. To do this:
+ * (1) Add routine prototypes for the desired platforms in Section 1,
+ * using existing functions as examples.
+ * (2) Add the new V commands to the command table in Section 2 below,
+ * using the existing commands as examples
+ * ----------------------------------------------------------------------- */
+
+ /* -----------------------------------------------------------------------
+ * SECTION 1: ROUTINE PROTOTYPES
+ *
+ * All new routines which are added to V should be prototyped to avoid
+ * argument inconsistency and to avoid compilation errors.
+ *
+ * ----------------------------------------------------------------------- */
+ /* -------------------------
+ * CALLING INTERFACES
+ * ------------------------- */
+ extern int V_about (int, char **, char *);
+ extern int V_abs (int, char **, char *);
+ extern int V_add (int, char **, char *);
+ extern int V_canny (int, char **, char *);
+ extern int V_center (int, char **, char *);
+ extern int V_chunk (int, char **, char *);
+ extern int V_conj (int, char **, char *);
+ extern int V_create (int, char **, char *);
+ extern int V_displ (int, char **, char *);
+ extern int V_div (int, char **, char *);
+ extern int V_dump2file(int, char **, char *);
+ extern int V_dump2term(int, char **, char *);
+ extern int V_ft (int, char **, char *);
+ extern int V_ft1d (int, char **, char *);
+ extern int V_ft2d (int, char **, char *);
+ extern int V_ft3d (int, char **, char *);
+ extern int V_ft4d (int, char **, char *);
+ extern int V_ftshift (int, char **, char *);
+ extern int V_ftshift1d(int, char **, char *);
+ extern int V_ftshift2d(int, char **, char *);
+ extern int V_glue (int, char **, char *);
+ extern int V_group (int, char **, char *);
+ extern int V_gplot (int, char **, char *);
+ extern int V_gplot2d (int, char **, char *);
+ extern int V_gslim (int, char **, char *);
+ extern int V_hftrec (int, char **, char *);
+ extern int V_history (int, char **, char *);
+ extern int V_help (int, char **, char *);
+ extern int V_hsvd (int, char **, char *);
+ extern int V_i (int, char **, char *);
+ extern int V_imag (int, char **, char *);
+ extern int V_label (int, char **, char *);
+ extern int V_linbrd (int, char **, char *);
+ extern int V_linscl (int, char **, char *);
+ extern int V_lpsvd (int, char **, char *);
+ extern int V_man (int, char **, char *);
+ extern int V_merge (int, char **, char *);
+ extern int V_mirror (int, char **, char *);
+ extern int V_movie (int, char **, char *);
+ extern int V_mult (int, char **, char *);
+ extern int V_o (int, char **, char *);
+ extern int V_pendpar (int, char **, char *);
+ extern int V_phase (int, char **, char *);
+ extern int V_pishft (int, char **, char *);
+ extern int V_pishft1d (int, char **, char *);
+ extern int V_pishft2d (int, char **, char *);
+ extern int V_pishft3d (int, char **, char *);
+ extern int V_pishft4d (int, char **, char *);
+ extern int V_pop (int, char **, char *);
+ extern int V_push (int, char **, char *);
+ extern int V_ramp (int, char **, char *);
+ extern int V_random (int, char **, char *);
+ extern int V_real (int, char **, char *);
+ extern int V_redim (int, char **, char *);
+ extern int V_reorder (int, char **, char *);
+ extern int V_replace (int, char **, char *);
+ extern int V_rigr (int, char **, char *);
+ extern int V_rmdc (int, char **, char *);
+ extern int V_scale (int, char **, char *);
+ extern int V_settype (int, char **, char *);
+ extern int V_show_reg (int, char **, char *);
+ extern int V_slim (int, char **, char *);
+ extern int V_slim_cond(int, char **, char *);
+ extern int V_slim_psf (int, char **, char *);
+ extern int V_split (int, char **, char *);
+ extern int V_stack (int, char **, char *);
+ extern int V_stats (int, char **, char *);
+ extern int V_stuff (int, char **, char *);
+ extern int V_sub (int, char **, char *);
+ extern int V_swap (int, char **, char *);
+ extern int V_synfid (int, char **, char *);
+ extern int V_thresh (int, char **, char *);
+ extern int V_trigr (int, char **, char *);
+ extern int V_trunc (int, char **, char *);
+ extern int V_uniffill (int, char **, char *);
+ extern int V_unstack (int, char **, char *);
+ extern int V_unwrap (int, char **, char *);
+ extern int V_vpnls (int, char **, char *);
+ extern int V_window1d (int, char **, char *);
+ extern int V_wt1d (int, char **, char *);
+ extern int V_wt2d (int, char **, char *);
+ extern int V_xchg (int, char **, char *);
+ extern int V_xtrp (int, char **, char *);
+ extern int V_zeropad (int, char **, char *);
+ extern int V_zphase (int, char **, char *);
+
+ /* -------------------------
+ * IO ROUTINES
+ * ------------------------- */
+ extern int L_dump_par(FILE *, char *, int, int *, float *, int);
+ extern int L_dump_data(FILE *, char *, int, int *, int, float *, int);
+ extern int L_gplot(V_struct *, V_struct *, int, int,
+ int, int, double, double, int *);
+ extern int zoom1d(float *, int, float *, int);
+ extern int L_gplot2d(float *, float **, int, int *, int *, int *,
+ int, int, float, float, int *);
+ extern int L_reorder(float *data, int data_type, int ndim, int *dim,
+ int *rdim, int *info);
+ extern int L_getsisco(char *filename, float **data, int *ndim,
+ int **dim, char *err);
+
+ /* -------------------------
+ * LP ROUTINES
+ * ------------------------- */
+ extern int L_hsvd(V_struct *, V_struct *, int, int, int,
+ float, float, char *);
+ extern int L_lpsvd(V_struct *, V_struct *, int, int, int,
+ float, float, char *);
+ extern int L_zphase(int, int *, float *);
+
+ /* -------------------------
+ * MAIN ROUTINES
+ * ------------------------- */
+ extern int title(void);
+ extern int init_path(char *);
+ extern void catchINT(void);
+ extern void catchFRE(void);
+ extern void catchBUS(void);
+ extern void catchSEGV(void);
+ extern void init_history(void);
+ extern void update_history(char *);
+ extern char *get_history(int);
+ extern int GetPath(char *, char *, char *);
+ extern int call_cmd(char *, int, char **, char *);
+ extern int display_allcom(void);
+ extern int valid_com(char *);
+ extern int indexa(int, int *, int *);
+ extern void indices(int, int *, int, int *);
+ extern int nelements(int, int *);
+ extern int parse_input(char *, int *, char **, char *);
+ extern int parse_cmd(char *, int *, char *, char **, char *);
+ extern int print_err(char *);
+ extern int reg_create(char *);
+ extern int reg_pop(char *);
+ extern int reg_init(int, int, int, int *, char *);
+ extern int reg_push(char *);
+ extern int reg_redim(int, int, int, int *, char *);
+ extern int reg_label(int, char *, char *);
+ extern int reg_settype(int, int, char *);
+ extern int reg_load(int, float *, char *);
+ extern int reg_unload(int, float **, char *);
+ extern int reg_swap(int *, char *);
+ extern int reg_swapn(int *, int, char *);
+ extern int reg_count(void);
+
+ /* -------------------------
+ * MATH ROUTINES
+ * ------------------------- */
+ extern int L_hamming_filter(float *, int, int);
+ extern int L_hanning_filter(float *, int, int);
+ extern int L_bartlett_filter(float *, int, int);
+ extern int L_ramp_filter(float *, int, int, float);
+ extern int L_scale(float *, int, int *, float **, float *, int, char *);
+ extern int L_unwrap(float *, int, int *, int, float, char *);
+
+ /* ------------------------------
+ * VARIABLE PROJECTION ROUTINES
+ * ------------------------------ */
+ extern int L_vpnls(V_struct *, V_struct *, V_struct *,
+ int, int, double, double, int, int, char *);
+ extern int is_1d_data(V_struct *);
+ extern int same_spatial_dim(V_struct *, V_struct *);
+
+ /* -------------------------
+ * RIGR ROUTINES
+ * ------------------------- */
+ extern int L_rigr(float *, int, float *, int, int, int, int, int, int,
+ float, int, int, float *, int *);
+ extern int L_hftrec(float **, float *, int, int *, int, int *, char *);
+
+ /* -------------------------
+ * SLIM ROUTINES
+ * ------------------------- */
+ extern int L_gslim(V_struct *, V_struct *, V_struct *,
+ int, int, float, int, char *);
+ extern int L_slim(V_struct *, V_struct *, int, int, int, int,
+ int *, int *, char *);
+ extern int L_slim_cond(V_struct *, V_struct *, int, int, char *);
+ extern int L_slim_psf(V_struct *, int, int*, char *);
+ extern int slim_csi (int,int*,int*,int,double*,int*,int*,double*,int,char*);
+ extern int slim_cond(int,int*,int*,int,int,int,double*,char*);
+ extern int slim_psf(int,int*,int*,int,int*,int*,double*,char*);
+ extern int Gmatrix (int,int*,int*,int,int*,int*,double*);
+ extern int Gmatrix1d(int,int*,int*,int,int*,int*,double*);
+ extern int Gmatrix2d(int,int*,int*,int,int*,int*,double*);
+ extern int Gmatrix3d(int,int*,int*,int,int*,int*,double*);
+ extern double sinc(double);
+ extern int chunkgmatrix(double*,double*,int,int,int,int);
+ extern int topbit(int);
+
+ /* -------------------------
+ * TRANSFORM ROUTINES
+ * ------------------------- */
+ extern int L_ft1d(float *, int, int, int, int *, int, int, int *);
+ extern int L_canny(float, float *, int, int, float **, char *);
+ extern int L_wt1d(int kernel, float *wt, int n, int order, int type);
+ extern int L_wt2d(int kernel, float *wt, int n, int order, int type);
+ extern int L_ftshift1d(float *data, int ndim, int *dim);
+ extern int L_ftshift2d(float *data, int ndim, int *dim);
+
+ #endif
+
+
+ /* -----------------------------------------------------------------------
+ * SECTION 2. COMMAND TABLE DEFINITION
+ *
+ * All new V routines should be added to this list of commands in order
+ * for them to be incorporated. Insert all new commands in the
+ * alphabetically correct positions, following the format of the other
+ * commands, i.e. "commandname", V_routine. The routine V_routine will
+ * be called when the user calls "commandname".
+ *
+ * ----------------------------------------------------------------------- */
+ #ifdef COMMAND_HOME
+
+ COMMAND cmdtable[] = {
+ "about", V_about,
+ "abs", V_abs,
+ "add", V_add,
+ "cabs", V_abs,
+ "canny", V_canny,
+ "center", V_center,
+ "cft1d", V_ft1d,
+ "cft2d", V_ft2d,
+ "cft3d", V_ft3d,
+ "cft4d", V_ft4d,
+ "chunk", V_chunk,
+ "conj", V_conj,
+ "create", V_create,
+ "displ", V_displ,
+ "div", V_div,
+ "dump2file", V_dump2file,
+ "dump2term", V_dump2term,
+ "ft", V_ft,
+ "ft1d", V_ft1d,
+ "ft2d", V_ft2d,
+ "ft3d", V_ft3d,
+ "ft4d", V_ft4d,
+ "ftshift", V_ftshift,
+ "ftshift1d", V_ftshift1d,
+ "ftshift2d", V_ftshift2d,
+ "glue", V_glue,
+ "gplot", V_gplot,
+ "gplot2d", V_gplot2d,
+ "group", V_group,
+ "gslim", V_gslim,
+ "h", V_history,
+ "help", V_help,
+ "hftrec", V_hftrec,
+ "history", V_history,
+ "hsvd", V_hsvd,
+ "i", V_i,
+ "imag", V_imag,
+ "label", V_label,
+ "linbrd", V_linbrd,
+ "linscl", V_linscl,
+ "lpsvd", V_lpsvd,
+ "man", V_man,
+ "merge", V_merge,
+ "mirror", V_mirror,
+ "movie", V_movie,
+ "mult", V_mult,
+ "o", V_o,
+ "pendpar", V_pendpar,
+ "phase", V_phase,
+ "pishft", V_pishft,
+ "pishft1d", V_pishft1d,
+ "pishft2d", V_pishft2d,
+ "pishft3d", V_pishft3d,
+ "pishft4d", V_pishft4d,
+ "pop", V_pop,
+ "print", V_dump2term,
+ "push", V_push,
+ "ramp", V_ramp,
+ "random", V_random,
+ "real", V_real,
+ "redim", V_redim,
+ "reorder", V_reorder,
+ "replace", V_replace,
+ "rigr", V_rigr,
+ "rmdc", V_rmdc,
+ "scale", V_scale,
+ "settype", V_settype,
+ "show_reg", V_show_reg,
+ "slim", V_slim,
+ "slim_cond", V_slim_cond,
+ "slim_psf", V_slim_psf,
+ "split", V_split,
+ "stack", V_stack,
+ "stats", V_stats,
+ "stuff", V_stuff,
+ "sub", V_sub,
+ "swap", V_swap,
+ "synfid", V_synfid,
+ "thresh", V_thresh,
+ "trigr", V_trigr,
+ "trunc", V_trunc,
+ "uniffill", V_uniffill,
+ "unstack", V_unstack,
+ "unwrap", V_unwrap,
+ "vpnls", V_vpnls,
+ "window1d", V_window1d,
+ "wt1d", V_wt1d,
+ "wt2d", V_wt2d,
+ "xchg", V_xchg,
+ "xtrp", V_xtrp,
+ "zeropad", V_zeropad,
+ "zphase", V_zphase,
+ NULL,
+ NULL };
+ #else
+ extern COMMAND *cmdtable;
+ #endif
+
+
+
+
+
+
+
+
+
Index: llvm/test/Programs/MultiSource/McCat-18-imp/debug.h
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/debug.h:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/debug.h Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,12 ----
+ #define TRACE1 0
+ #define TRACE2 0
+ #define TRACE3 0
+ #define TRACE4 1
+
+
+ #define TRACE_BUILDCOMP 0
+ #define TRACE_SPREAD 0
+ #define TRACE_MERGE 0
+ #define TRACE_ROWMERGE 0
+ #define TRACE_PAIR 0
+
Index: llvm/test/Programs/MultiSource/McCat-18-imp/main.c
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/main.c:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/main.c Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,293 ----
+
+ /****
+ Copyright (C) 1996 McGill University.
+ Copyright (C) 1996 McCAT System Group.
+ Copyright (C) 1996 ACAPS Benchmark Administrator
+ benadmin at acaps.cs.mcgill.ca
+
+ This program is free software; you can redistribute it and/or modify
+ it provided this copyright notice is maintained.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ ****/
+
+ /*
+ MODULE : main.c
+ DESCRIPTION: Main program module.
+ AUTHOR : Fady Habra, 8715030, fady at cs.mcgill.ca
+ */
+
+ #ifndef MAIN
+ #define MAIN
+ #endif
+
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include "pgm.h"
+ /*
+ #include "commands.h"
+ */
+ #include "textloc.h"
+ #ifdef DEBUG
+ #include "debug.h"
+ #endif
+
+ #define INT 0
+ #define STR 1
+ #define DBL 2
+
+ typedef struct
+ {
+ char parm[25];
+ char type;
+ void *var;
+ } ParmT;
+
+ char IMAGE[80];
+ double SIGMA;
+ int VAR_THRESHOLD = -1;
+ double VSPREAD_THRESHOLD = 0.02;
+ int SAME_ROW_THRESHOLD = 3;
+ int SAME_ROW_V = 3;
+ int SAME_ROW_H = 30;
+ int MAX_CHAR_SIZE = 50;
+ int MIN_CHAR_SIZE = 5;
+ int KILL_SMALL_COMP = 1;
+ int SMALL_THRESHOLD = 10;
+ int HVAR_WINDOW = 10;
+
+ int main(int, char *[]);
+ void DisplayUsage(char *);
+ void ParseInputFile(char *);
+
+ extern int L_canny(float, float *, int, int, float **, char *);
+
+ /*
+ FlgT done = FALSE;
+
+ #define NUM_COMMANDS 2
+
+ CmiT commands[NUM_COMMANDS] =
+ {
+ {"LOAD", P_1(P_STR, "<filename>"), (HdlT) LoadFile},
+ {"LIST", P_0, (HdlT) ListImages}
+ };
+ */
+
+ /*
+ FUNCTION : void DisplayUsage(char *prog)
+ DESCRIPTION: Displays program usage.
+ ARGUMENTS : prog, program name
+ RETURNS : nothing
+ */
+ void DisplayUsage(char *prog)
+ {
+ printf("Usage: %s <PGM image file> <sigma> <variance threshold>\n", prog);
+ }
+
+ /*
+ FUNCTION : void ParseInputFile(char *file)
+ DESCRIPTION: Parses input file and sets appropriate variables.
+ ARGUMENTS : file, input filename
+ RETURNS : nothing
+ */
+ void ParseInputFile(char *file)
+ {
+ FILE *fp;
+ char s[80];
+ int p;
+ ParmT parms[] = {
+ {"image", STR, &IMAGE},
+ {"sigma", DBL, &SIGMA},
+ {"var_thresh", INT, &VAR_THRESHOLD},
+ {"vspread_thresh", DBL, &VSPREAD_THRESHOLD},
+ {"same_row_thresh", INT, &SAME_ROW_THRESHOLD},
+ {"same_row_v", INT, &SAME_ROW_V},
+ {"same_row_h", INT, &SAME_ROW_H},
+ {"max_char_size", INT, &MAX_CHAR_SIZE},
+ {"min_char_size", INT, &MIN_CHAR_SIZE},
+ {"kill_small", INT, &KILL_SMALL_COMP},
+ {"small_thresh", INT, &SMALL_THRESHOLD},
+ {"hvar_window", INT, &HVAR_WINDOW},
+ {"", 0, NULL}
+ };
+ char read_parm[25];
+ char read_val[80];
+
+ if ((fp = fopen(file, "r")) == NULL)
+ {
+ printf("%s not found. Exiting.\n", file);
+ exit(1);
+ }
+
+ while ((fgets(s, 80, fp) != NULL) && (s[0] != '\n'))
+ {
+ p = 0;
+ strcpy(read_parm, strtok(s, " \t"));
+ strcpy(read_val, strtok(NULL, " \t"));
+
+ while((parms[p].var != NULL) && strcmp(read_parm, parms[p].parm))
+ p++;
+
+ if (parms[p].var == NULL)
+ continue;
+
+ switch(parms[p].type)
+ {
+ case INT:
+ *(int *)(parms[p].var) = atoi(read_val);
+ break;
+
+ case DBL:
+ *(double *)(parms[p].var) = strtod(read_val, NULL);
+ break;
+
+ case STR:
+ strcpy((char *) parms[p].var, read_val);
+ ((char *) (parms[p].var))[strlen((char *) (parms[p].var)) - 1] =
+ '\0';
+ break;
+ }
+ }
+ fclose(fp);
+ }
+
+ /*
+ FUNCTION : int main(int argc, char *argv[])
+ DESCRIPTION: Main program body.
+ ARGUMENTS : argc, argv
+ RETURNS : program exit code
+ */
+ int main(int argc, char *argv[])
+ {
+ int rc;
+ char err[80];
+ ImgT image;
+ double sigma;
+ int var_threshold;
+ CompP comp;
+
+ #ifdef BOGUS
+ /* 4 arguments needed: prog name, input file, sigma, variance threshold. */
+ if (argc != 4)
+ {
+ DisplayUsage(argv[0]);
+ return(-1);
+ }
+
+ sigma = strtod(argv[2], NULL);
+ var_threshold = atoi(argv[3]);
+ #else
+ ParseInputFile(argv[1]);
+ #endif
+
+ /* Initialize image information object. */
+ #ifdef BOGUS
+ PGM_InitImage(&image, argv[1]);
+ #else
+ PGM_InitImage(&image, IMAGE);
+ #endif
+
+ sigma = SIGMA;
+ var_threshold = VAR_THRESHOLD;
+
+ /* Load image data. */
+ if ((rc = PGM_LoadImage(&image)) != PGM_OK)
+ {
+ switch(rc)
+ {
+ case PGM_NOT_FOUND:
+ printf("Error: %s not found. Exiting.\n", image.filename);
+ break;
+
+ case PGM_NOT_PGM:
+ printf("Error: %s is not a PGM file. Exiting.\n", image.filename);
+ break;
+
+ case PGM_NO_DATA:
+ printf("Error: %s has 0 length. Exiting.\n", image.filename);
+ break;
+ }
+ free(image.filename);
+ free(image.imgname);
+ return(-2);
+ }
+
+ /* Print image info. */
+ PGM_PrintInfo(&image);
+
+ /* Compute horizontal intensity variance bitmap. */
+ HorzVariance(&image, var_threshold);
+
+ /* Convert image data to floating point. (L_canny requires this.) */
+ /* ConvertToFloat(&image); */
+
+ #ifdef INTERMEDIATE_OUTPUT
+ /* Write horizontal variance bitmap to PGM file. */
+ PGM_WriteImage(&image, PGM_IVAR);
+ #endif
+
+ /* Perform Canny edge detection on the variance bitmap. */
+ if (L_canny(sigma, image.var, image.width, image.height, &(image.cedge),
+ err))
+ {
+ printf("Error: '%s' in L_canny(). Exiting.\n", err);
+ return(-3);
+ }
+
+ #ifdef INTERMEDIATE_OUTPUT
+ /* Write horizontal variance Canny edge data to PGM file. */
+ PGM_WriteImage(&image, PGM_CEDGE);
+ #endif
+
+ /* Build connected components in edge image. */
+ comp = BuildConnectedComponents(&image, 0);
+
+ #if TRACE1
+ /* Print connected components. */
+ PrintConnectedComponents(comp);
+ #endif
+
+ #ifdef INTERMEDIATE_OUTPUT
+ WriteConnectedComponentsToPGM(comp, &image);
+ #endif
+
+ /* Eliminate connected components with large vertical spread. */
+ EliminateLargeSpreadComponents(&comp, &image);
+
+ #if TRACE2
+ PrintConnectedComponents(comp);
+ #endif
+
+ /* Merge same row components. */
+ MergeRowComponents(&comp, &image);
+
+ #ifdef INTERMEDIATE_OUTPUT
+ /* Write connected components to PGM file. */
+ WriteConnectedComponentsToPGM(comp, &image);
+ #endif
+
+ #if TRACE3
+ PrintConnectedComponents(comp);
+ #endif
+
+ /* Find opposing connected component pairs. */
+ PairComponents(&comp, &image);
+
+ #if TRACE4
+ PrintConnectedComponents(comp);
+ #endif
+
+ ComputeBoundingBoxes(comp, &image);
+
+ /* Free connected components list. */
+ FreeConnectedComponents(comp);
+
+ /* Free image information object. */
+ PGM_FreeImage(&image);
+
+ return(0);
+ }
Index: llvm/test/Programs/MultiSource/McCat-18-imp/pgm.c
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/pgm.c:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/pgm.c Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,388 ----
+
+ /****
+ Copyright (C) 1996 McGill University.
+ Copyright (C) 1996 McCAT System Group.
+ Copyright (C) 1996 ACAPS Benchmark Administrator
+ benadmin at acaps.cs.mcgill.ca
+
+ This program is free software; you can redistribute it and/or modify
+ it provided this copyright notice is maintained.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ ****/
+
+ /*
+ MODULE : pgm.c
+ DESCRIPTION: Routines for manipulating PGM files.
+ AUTHOR : Fady Habra, 8715030, fady at cs.mcgill.ca
+ */
+
+ #ifndef PGM
+ #define PGM
+ #endif
+
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <math.h>
+ #include "pgm.h"
+
+ /*
+ FUNCTION : void PGM_InitImage(ImgP img, char *filename)
+ DESCRIPTION: Initializes an image information object with the given filename
+ ARGUMENTS : img, pointer to image information object
+ RETURNS : nothing
+ */
+ void PGM_InitImage(ImgP img, char *filename)
+ {
+ char *p;
+
+ /* Allocate memory for the filename. */
+ img->filename = (char *) malloc((strlen(filename) + 1) * sizeof(char));
+ strcpy(img->filename, filename);
+
+ /* Determine base name of image file. */
+ img->imgname = strdup(img->filename);
+ p = img->filename;
+ while(*p++ != '\0')
+ if (*p == '/')
+ strcpy(img->imgname, p + 1);
+ p = img->imgname;
+ while(*p++ != '\0')
+ if (*p == '.')
+ *p = '\0';
+
+ /* Clear valid bit. */
+ img->valid = 0;
+ }
+
+ /*
+ FUNCTION : void PGM_FreeImage(ImgP img)
+ DESCRIPTION: Frees all memory allocated to an image information object.
+ ARGUMENTS : img, pointer to image information object
+ RETURNS : nothing
+ */
+ void PGM_FreeImage(ImgP img)
+ {
+ free(img->filename);
+ free(img->imgname);
+ free(img->data);
+ /* R and f not used */
+ /* free(img->R); */
+ /* free(img->f); */
+ free(img->cedge);
+ img->valid = 0;
+ }
+
+ /*
+ FUNCTION : void PGM_PrintInfo(ImgP img)
+ DESCRIPTION: Prints all available info in an image information object.
+ ARGUMENTS : img, pointer to image information object
+ RETURNS : nothing
+ */
+ void PGM_PrintInfo(ImgP img)
+ {
+ if (img->valid)
+ {
+ printf("filename:\t%s\n", img->filename);
+ printf("width :\t%d\n", img->width);
+ printf("height :\t%d\n", img->height);
+ printf("max gray:\t%d\n", img->maxgray);
+ }
+ }
+
+ /*
+ FUNCTION : int PGM_GetValue(ImgP img)
+ DESCRIPTION: Reads a single value from a PGM file, skipping whitespace and
+ comments.
+ ARGUMENTS : img, pointer to image information object
+ RETURNS : value read
+ */
+ int PGM_GetValue(ImgP img)
+ {
+ int n;
+ char c;
+
+ /* Loop until we can read an integer. */
+
+ while (fscanf(img->fp, "%d", &n) == 0)
+ {
+ /* Skip comments. */
+ fscanf(img->fp, "#%n", &n);
+
+ /* If we found a comment, skip all characters until EOL is reached. */
+ if (n > 0)
+ while((c = fgetc(img->fp)) != '\n');
+
+ /* Skip newline. */
+ fscanf(img->fp, "\n");
+ }
+ return(n);
+ }
+
+ /*
+ FUNCTION : int PGM_Open(ImgP img)
+ DESCRIPTION: Opens a PGM file for further processing.
+ ARGUMENTS : img, pointer to image information object
+ RETURNS : PGM_OK, if successful
+ PGM_NOT_FOUND, if file not found
+ PGM_NOT_PGM, if file is not a PGM file
+ */
+ int PGM_Open(ImgP img)
+ {
+ char magic[2];
+
+ /* Open the file for reading. */
+ if ((img->fp = fopen(img->filename, "r")) == NULL)
+ return(PGM_NOT_FOUND);
+
+ /* Extract the magic number. */
+ if ((fread(magic, 1, 2, img->fp) != 2) || (strncmp(magic, "P5", 2) != 0))
+ return(PGM_NOT_PGM);
+
+ /* Extract the image width. */
+ img->width = PGM_GetValue(img);
+ /* Extract the image height. */
+ img->height = PGM_GetValue(img);
+ /* Extract the maximum gray value. */
+ img->maxgray = PGM_GetValue(img);
+
+ /* Set valid bit. */
+ img->valid = 1;
+
+ return(PGM_OK);
+ }
+
+ /*
+ FUNCTION : void PGM_Close(ImgP img)
+ DESCRIPTION: Closes a PGM file.
+ ARGUMENTS : img, pointer to image information object
+ RETURNS : nothing
+ */
+ void PGM_Close(ImgP img)
+ {
+ fclose(img->fp);
+ }
+
+ /*
+ FUNCTION : int PGM_LoadImage(ImgP img)
+ DESCRIPTION: Loads a PGM file.
+ ARGUMENTS : img, pointer to image information object
+ RETURNS : PGM_OK, if successful
+ PGM_NOT_FOUND, if file not found
+ PGM_NOT_PGM, if file is not a PGM file
+ PGM_NO_DATA, if image has 0 length
+ */
+ int PGM_LoadImage(ImgP img)
+ {
+ int rc;
+ unsigned char byte;
+ int n, c, pixel;
+
+ /* Open the image file for processing. */
+ if ((rc = PGM_Open(img)) != PGM_OK)
+ return(rc);
+
+ /* Do nothing if either height or width is 0. */
+ if (img->width == 0 || img->height == 0)
+ {
+ PGM_Close(img);
+ return(PGM_NO_DATA);
+ }
+
+ /* Allocate memory for image and histogram. */
+ img->data = (char *) malloc((img->width * img->height) * sizeof(char));
+ img->hist = (int *) calloc(img->maxgray + 1, sizeof(int));
+ img->p = (double *) calloc(img->maxgray + 1, sizeof(double));
+
+ /* Skip comments. */
+ fscanf(img->fp, "#%n", &n);
+ /* If we found a comment, skip all characters until EOL is reached. */
+ if (n > 0)
+ while((c = fgetc(img->fp)) != '\n');
+ /* Skip newline. */
+ fscanf(img->fp, "\n");
+
+ /* Load the image. */
+ for (pixel = 0; pixel < (img->width * img->height); pixel++)
+ {
+ fread(&byte, 1, 1, img->fp);
+ img->data[pixel] = byte;
+ img->hist[byte]++;
+ }
+
+ /* Normalize the probability array. */
+ for (byte = 0; byte < img->maxgray; byte++)
+ img->p[byte] = (double) ((double) img->hist[byte] /
+ (double) (img->width * img->height));
+
+ PGM_Close(img);
+ return(PGM_OK);
+ }
+
+ /*
+ FUNCTION : int PGM_WriteBinary(ImgP img);
+ DESCRIPTION: Writes a binary image to a PGM file.
+ ARGUMENTS : img, pointer to an image information object
+ RETURNS : PGM_OK, if successful
+ PGM_NO_DATA, if no data
+ */
+ int PGM_WriteBinary(ImgP img)
+ {
+ char *s;
+ FILE *fp;
+ long pixel;
+ unsigned char val;
+
+ if ((!img->valid) || (img->width == 0) || (img->height == 0))
+ return PGM_NO_DATA;
+
+ s = (char *) malloc((strlen(img->imgname) + strlen(".jo.pgm") + 1) *
+ sizeof(char));
+ sprintf(s, "%s.jo.pgm", img->imgname);
+
+ fp = stdout;
+
+ fprintf(fp, "P5\n");
+ fprintf(fp, "%d %d\n", img->width, img->height);
+ fprintf(fp, "%d\n", img->maxgray);
+
+ for (pixel = 0; pixel < (img->width * img->height); pixel++)
+ {
+ val = (img->data[pixel] > (unsigned char) img->threshold) ?
+ (unsigned char) img->maxgray : 0;
+ fwrite(&val, sizeof(char), 1, fp);
+ /*
+ if (val == (unsigned char) img->maxgray)
+ printf("%d\n", (int) img->data[pixel]);
+ */
+ }
+
+ free(s);
+
+ return(PGM_OK);
+ }
+
+ /*
+ FUNCTION : int PGM_WriteImage(ImgP img, char itype)
+ DESCRIPTION: Writes given image data to PGM file.
+ ARGUMENTS : img , pointer to image information object
+ itype, image type
+ RETURNS : PGM_OK, if successful
+ PGM_NO_DATA, if image information object is empty
+ */
+ int PGM_WriteImage(ImgP img, char itype)
+ {
+ char *s;
+ FILE *fp;
+ long pixel;
+ unsigned char val;
+
+ if ((!img->valid) || (img->width == 0) || (img->height == 0))
+ return(PGM_NO_DATA);
+
+ switch(itype)
+ {
+ case PGM_IDATA:
+ if (img->data == NULL)
+ return(PGM_NO_DATA);
+
+ s = (char *) malloc((strlen(img->imgname) + strlen(".raw.pgm") + 1) *
+ sizeof(char));
+
+ sprintf(s, "%s.raw.pgm", img->imgname);
+
+ fp = stdout;
+
+ fprintf(fp, "P5\n");
+ fprintf(fp, "%d %d\n", img->width, img->height);
+ fprintf(fp, "%d\n", img->maxgray);
+
+ for (pixel = 0; pixel < (img->width * img->height); pixel++)
+ fwrite(&(img->data[pixel]), sizeof(char), 1, fp);
+
+ free(s);
+ break;
+
+ case PGM_IBLUR:
+ /* Not implemented yet. */
+ return(PGM_NO_DATA);
+ break;
+ /*
+ if (img->R == NULL)
+ return(PGM_NO_DATA);
+
+ s = (char *) malloc((strlen(img->imgname) + strlen(".blur.pgm") +
+ (int) log10(sigma) + 2) * sizeof(char));
+ sprintf(s, "%s.blur%d.pgm", img->imgname, sigma);
+
+ offset = (img->Rmin < 0) ? - img->Rmin : 0;
+ scale = 255 / (img->Rmax - img->Rmin);
+
+ fp = stdout;
+
+ fprintf(fp, "P5\n");
+ fprintf(fp, "%d %d\n", img->width, img->height);
+ fprintf(fp, "%d\n", 255);
+
+ for (i = 0; i < (img->width * img->height); i++)
+ {
+ val = (unsigned char) ((img->R[i] + offset) * scale);
+ fwrite(&val, sizeof(char), 1, fp);
+ }
+
+ free(s);
+ */
+ case PGM_CEDGE:
+ if (img->cedge == NULL)
+ return(PGM_NO_DATA);
+
+ s = (char *) malloc((strlen(img->imgname) + strlen(".cedge.pgm") + 1) *
+ sizeof(char));
+
+ sprintf(s, "%s.cedge.pgm", img->imgname);
+
+ fp = stdout;
+
+ fprintf(fp, "P5\n");
+ fprintf(fp, "%d %d\n", img->width, img->height);
+ fprintf(fp, "255\n");
+
+ for (pixel = 0; pixel < (img->width * img->height); pixel++)
+ {
+ val = (unsigned char) img->cedge[pixel];
+ fwrite(&val, sizeof(char), 1, fp);
+ }
+
+ free(s);
+ break;
+
+ case PGM_IVAR:
+ if (img->var == NULL)
+ return(PGM_NO_DATA);
+
+ s = (char *) malloc((strlen(img->imgname) + strlen(".hvar.pgm") + 1) *
+ sizeof(char));
+
+ sprintf(s, "%s.hvar.pgm", img->imgname);
+
+ fp = stdout;
+
+ fprintf(fp, "P5\n");
+ fprintf(fp, "%d %d\n", img->width, img->height);
+ fprintf(fp, "255\n");
+
+ for (pixel = 0; pixel < (img->width * img->height); pixel++)
+ {
+ val = (unsigned char) img->var[pixel];
+ fwrite(&val, sizeof(char), 1, fp);
+ }
+
+ free(s);
+ break;
+ }
+
+ return(PGM_OK);
+ }
Index: llvm/test/Programs/MultiSource/McCat-18-imp/pgm.h
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/pgm.h:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/pgm.h Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,64 ----
+ /*
+ MODULE : pgm.h
+ DESCRIPTION: Header file to be used with pgm.c.
+ AUTHOR : Fady Habra, 8715030, fady at cs.mcgill.ca
+ */
+
+ #ifdef PGM
+ #define EXT
+ #else
+ #define EXT extern
+ #endif
+
+ typedef struct /* image information object */
+ {
+ char valid; /* valid image info or not */
+ char *filename; /* image filename */
+ char *imgname; /* image name */
+ FILE *fp; /* file pointer */
+ int height; /* height */
+ int width; /* width */
+ int maxgray; /* maximum gray value */
+ int threshold; /* Otsu threshold */
+ unsigned char *data; /* image data */
+ double *R; /* blurred data */
+ float *f; /* fp data for L_canny() */
+ float *var; /* horiz. variance bitmap */
+ float *cedge; /* Canny edge data */
+ int *lmap; /* label map */
+ double Rmin; /* minimum R value */
+ double Rmax; /* maximum R value */
+ int *hist; /* histogram values (h*w) */
+ double *p; /* normalized histogram */
+ int *hsig; /* horizontal signature (w) */
+ int *vsig; /* vertical signature (h) */
+ } ImgT;
+
+ typedef ImgT *ImgP; /* ptr to image info object */
+
+ /* PGM return codes */
+ #define PGM_OK 0 /* success */
+ #define PGM_NOT_FOUND -1 /* file not found */
+ #define PGM_NOT_PGM -2 /* invalid PGM file */
+ #define PGM_NO_DATA -3 /* no data to process */
+
+ /* image types */
+ #define PGM_IDATA 0 /* raw image data */
+ #define PGM_IBLUR 1 /* blurred image */
+ #define PGM_CEDGE 2 /* Canny edges */
+ #define PGM_IVAR 3 /* horizontal variance */
+
+ EXT void PGM_InitImage(ImgP, char *);
+ EXT void PGM_FreeImage(ImgP);
+ EXT void PGM_PrintInfo(ImgP);
+ EXT int PGM_LoadImage(ImgP);
+ EXT int PGM_WriteBinary(ImgP);
+ EXT int PGM_WriteImage(ImgP, char);
+
+ #ifdef PGM
+ int PGM_Open(ImgP);
+ void PGM_Close(ImgP);
+ int PGM_GetValue(ImgP);
+ #endif
+
+ #undef EXT
Index: llvm/test/Programs/MultiSource/McCat-18-imp/sg01.imp
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/sg01.imp:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/sg01.imp Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,6 ----
+ image sg01.pgm
+ sigma 5.25
+ var_thresh -1
+ kill_small 1
+ small_thresh 40
+ max_char_size 80
Index: llvm/test/Programs/MultiSource/McCat-18-imp/sg01.pgm
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/sg01.pgm:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/sg01.pgm Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,5 ----
+ P5
+ # CREATOR: XV Version 3.00 Rev: 3/30/93
+ 304 300
+ 255
+ ¸¼¬±¤½³¦Ç ´¦²ª°Âµ¸
©¡£§}z£z}r {h¦ils|vtyoq|®bh q{{whtq£qr~
|
zy¥¡§¨ ¢¨³¾§®©®¹©É¹µ³¼³¡´ªÌ«Ç¯·®¸Á¢¾·²³¸¶¶³»³Â°±À±¸²µ²¶´²²¾¶À·ª½Á¼¹Â¸º¶NO^UiN[J<Q/]?NDYXQUVMXVSV<F\FU`MXiQOb3R[IWFM4C7OO;^.ML>UDO6P6JDR[/Z6I\3P\<8OD.NeBEcI9SID^ETU;F+KG?U?JZ at FAFHFO1X@V>GHOPI;Tc:E[ZN9Y:EE at aYBOHDSRFI<M5 at Z6SR-]QI_S8Wf3%@>SENBG9UET<?5J6Y5,LDIB at E=X<?0\ANA9K:](e5NSECY?QMAROUGbB?RU7PL1TJl>*ZLS+H8\PNMR&Q8BS?JW6=d,DOL88G7>N&@P5J1S*I2O.>IY9D=E0O.D8PT.Z89KK<JU at _SWZOVCD;75LJ4SHUNE8J00/"Q4%QI$0*%5(Z%'*5<6(--3P&bAD;F0OD<J312JGD7;H=I+DB1BD;>9 at CH= BEj%H659!3Q2[5J/C;@4DE.1G>=3 at 8C=1B5>3T&'KG;,I<@NV7?#'7,;A1:E0E.XYH>8.M/2.)<M+TQDCU.C at E.50GKD?7=;`%KD80>Y*C2D=*,KWT">B'M2-L,17"G-+752.%?;76E5+DaCH0O)Z'4H:DIB?3*V86I$N,\=Ic]IK>P/HUM-G9FC<H#Q,M,J*O3U at N5H7H(@3C.F4+R.GCN>@2.C;N-=R;-4K2K qDST+9X7>DTIP?[,QO_+UCQMGFF0E/H)1S(JD?QHL0?19*C6(c,5IA1K@!
%L6%2c<.bN!.BBHJ.X0D2G):L24J7F at 6KA?O6;Q7L5L4<1Rh?ERC8@#F77eY=RC6IE:M2N"*C,IW6DZLK378QQKU6G-Y3/V-W/E'4I>U-1<J/:A7"\/1H :T,QI/M5V,,8>GA3Z(BD<@MQL.HM>E54]ZP#K0&V.R.D<G&^F5TW,'IAJ/U+,64'541C;)^3,F<8J L?FK@=Y0K-;*,E8>>6 at K;H.ER$Q6>F*X&T8KF7<C:2PN0XC61,;GK-1L<2)@9 Q4*3@/,:F.7K8CKIE2[2 at B.356@LQLD*N#TJ/CQ'<JC&AI&0N/0SQ6:)D+T-V*BC;;QG:M'<F/@:&Q/?6C:K8DS$(/BMD0X5R?9=12B1>@*7I6X1ZU;L1*Z6,'A<F?E3'%N+F?OJ,52RC:R'.N/:W$<A=;P$N<>H>/MFJ#3I*3Ge"]-E>8S4,6?T2/DN0>@1K6 $`9:Q.S%D;RAI;U6T+*V1E<M<LI?Z:C7?H&ME+*d/?<,G97D0H/&@43^2Q0H2)?>)=/N>4`.IA>G5N*I'5K<&I5[5592L/:A8KU>0VK02aN4<4?MB at A4O)U/?7*S 7A1/;(W/B,>OAV1F`*1514H.+J!] 7A)1'[.M.%:1(B'.E:2'A;<CH,9I82K.M8>@/.H;669;R(R(4G6H+A81D at 1=7L'0B@?J(@B=Q6)D,-QA&\-I <,V,L'/0*L237$GH14H.9I(*N0%<*=M9160)+"U.@!) QJ,4%28 at 3C&V CX'K%=8+.6,:28D3.58'N3</, at +T34'4A21J @:B+?2IG37A$A47`'FD'H)9^@Z/O0O5$=J#H29G7Q([-ZF6=EJ,1!JCJE5F+T)J&V6 4K#U,C;?<.=U. at P"b)7=C:<F=KNBL6G7PT1=L%<(:/QGJK1<=&B/T/@<D;#I89G2DFF?9G1>V26K9&S*9A8E+E";:AB>:H8C
K'OV(S$B:CH at HL:K7SR:T3!
8\8=F*IX-a84EI(IM;CDD22:N7`'<]D:A8XO*7 at V)>K+^.?N%I(CZ3]Z*F>d>`@:8CR-
5=;S5)>,O3=6&96NJGF/,M8KV7M4=#j4:@'(R-N+.U`-f+N2G<7K1<8FMCO7*A4,]#G42DC)- at 9;OF=Q5GF9E3?9/8-M;J$ZRIAI/?O.W/W7eJ&%ZI+S-P<0W.SA1>:)N-5?7JKV3H(>C+'4:,U="CN,N3R861??SDRR28I78>PE;4G3V5$Q.>;MC;#]#$D/A><E<;C/C77 7-G/Z2FI6,H3PAA829=87=@:9/G<S)S?27P82A=?R85D-I7-8B=2,@#8W<6'G0+;=8+:K_3L$I,J8/H4:,(T/O#//8K%@2:HO7A-GM5A)3AX2a*A1->3V5T0(*T?AJ#DC=>Q/O,9@"*.1.S%Q/O.;;L4+/A/N#M7PBE.N)?3R2O<9>?4?BJJ5PJ(ELIH><CE=:?Y3K:.K"M:*:4PY"?E.<J=>E55LM:Y?:QYJ/V%b;C<NNRCO8)A:O1J&C4 at OC;:/1"0O>0GCK*8AI:LG5I7K:P368V!.L?SD>0K5 at 917Q?OL>C<2NO/-P3>?4BK:M9>J=I4QB981O++YB/-@=@7-:QN:N-U=<C at E=OI6?STM at OF3C,?H4Q+ at FQ.9;Z:/F?Z50R'V$<-&V%6<,5P0.5M5DGK+2417DE>G0A:/L7FE)%?G54G*=2:@ACA@?;H!@*;=89>(G"O/<S0G,8*G/MIH8D-'3V+*C372J3IL:hGbWSY\UU\RdnIWIdJbIpTJS_]aV^cURXNxRGfOWTPTNk]EOTWPUHTPWKYQPKUNR_Q[MQWMNUN]UNTFD\V[MPHEJSAJQPJQLGILJLR]N8GL`8UGBSHW=?82HQR[8]cG>WFMNF at VNB@G[NF1XeIR.M=5lEOMQKBFOK;H6F=/DBI;74 at OJHW9J>KUD94DAB?EAC>F097CL/+HG+P9J5S]Y]<A'OUQJ*?E==CA<<CB9G8?C,P4D4CIA=FNN5]+c8^2B1G.K>8SD?@AG:M2M9?G at OIRVD.5/.2=CF;!
09CV3P[,G98eÃÄÏÅÁÅÆÃÆËÔÀÃƺê·ÇÄ·àÉɵÕÂÂÆËÇÁÂÅÆÀÐÁ»´ÖȳȸìÈÓ»ÎÆÌ¿ÈÃɿ˾ɾĻÁÉÁÈÁÁÀ»ÃʸËÊËÈÃįÊÈÅǼÈƸÅÇÆÂÇÁÂÌ˹½ÀÇÄ®±À¾·À·ÌÀȵ«¿ÅÃɺ°Ã¬Æ®À×Ä¥Èƶ»Æʶ³¿½§¹Ñ¹É¢µÉÓµ½¼Â¶¹¼¹¹·´®ºÂÃͳƺµ³Ëê°¿´ª²ª³³À©£¦µ¥§¯¬§®ª½©¨·§{²¸nµ~|
~}|tb
cwntoRnt]Ufl_[Y^@qHc^aMnSW`K[JVUUUZNTWTJRIKFPMOQYWT4FD.S>2*O=/O1'H0½ÌÏÊÈËÍÊÍѺÍÇÐʦÎÏÑÍ·®Ú¹ÅÄÁÍËÃÇÊÊÎÄÁÌÉÙ¾Êß˼¸½½æÈÙ½ÈÀÊÄʾȽÌÑÅÜÇÒÄÉÍÏÌÌÒÐÅÎ×ÿÅÆÏÌȽ×ÌÑÈÑÇÒ¼ÔÁÓÁ×µÖÑѾ¹ÜÌѾÝÁÎоÂÑÅÊÿÈÄÉ¿ÑÖ³ÏÐÄÒÄÍÄÏÃÌÂÉâ¼ÂËÊ̼ÑØܺÔÊÇÔËÃÇÍÐÌÆÆ˺ÍÉÒÅËǹº»¹¿ÉÄÀÊÅÐÃÐÁº¾ËÊËÀÉÇÉÆÀÇÎÊͳÁÊÆÁÇÁÈıͷÊÅÇ¿ÎÂο¿ÐÍÁ¼ÄÃÆÆÃÅÈƿɼÂƵʺÀÈÉÇÄÅÈÆÁ¶ÃÆÁھǞÊÄÅ̽ÍȾÒËÅËÇÎÊÃÃÃÌÂÇÇʺËÄϾ7C6O)<7J-,DGNVM.Õ´ÅÄÄÈÈÇÇÊÈØ»ÃÚÂÁ{EZDhÃØÒÊÎÆ¿ÅÆÁÂÛ¶Ï;½×²obK at MË»ÈÔÊÐÉÒÈÒÇÕĵÑÀÈÎÀÊÊÅÉÌƼÅÇ»ËѾ¾ÃÔλɿĿÑÁ̷νθȽȼÃÁÄ×Á»ÌÄÅѶ־»¿ÏÌÌÍÁÊËÊÈÌÓ°ÅÒ½ÆÄмÆÃÌ®ÐØÁÏWv¢°ÆÀ»Ü¾ÄÉÊÍÎÈÁÃÌÃȸÇÅÔË×ÒËÏÒÅ¿ÏÆÈËÊË»ÊÄÅÅÆÅÅÄÅǸÃÀÇÎÎξÑ̸۷ÖÊÕÏÍÇÊ˰лÈÆÌÏʺÅÝËÌÍÍÎÐÍÉѸڶ׼ÔÄÌÃÁÊÎÉÈÎÌá½Ù²ÌÄÒÄ×ÄÊÈÃÆÌÁÓËÃÉÉÒÐÈÆÔÍÈÈÕÌÎÛÅÏÃ!7S6FR1P7C;? JI²ÑÆÈËÌÊÉÉʸ¿Å×SF$45HTÈ°ÓÊÆÊÌÌÊÉÃÙÌ¿½ê¸^V3F3RQ»ËÅÑÃļÇÁͼÅzphp!
oÉÏÈÂÉÊÆÈ»hlmq£ÌÆÄxl|ÅÎÐÊÑÌÇÆÜ¡¢¹¼Î½¹ ²®ÕÅÂáËͺÓÌÊÒ
ÊÑÑÊÞÈÁW6?P:v¦ÖÑȾÐÊÉËËÉÇËÐØÓØÇÜƺ°¼ÊźÆÒÊÀÏÂÀºÍÅԱʹܸÅÏ¿ÓÒÒ̽¿ÍÌÃÄ¿ÚºÅÂÙ±À¼ÉÄÌÇÃÊÆÎɹÏÒÌ»ÇÇÆÆž¹Æļ˸ÊÃÄÇÌÎÈÂÂÇÊÀ¾ÊÄÀ¾Ù¸ÆÀʼÆܳÒÅÍÇÇÇʹ¹Í¿ÍÌüȾÃÈ·Âħ,N4O3?>A'YIH1FK7ѳÄÆÈÆÄÃÅÈ×Ì¿ÎÆQS4F at D0)R«Ã̹ÀÏÆÃÌ̷ͶÈÕ²WBC23V@>R¿ÑÈÍÃÎÅÍÊÍkV@@EÉË¿½ÈÅÁÍxOSM\¡ÍËÁMDGRZ¦¿Ê¾ÁÁÂ÷O45JµÊÆÈSU(@:AJITQ7>U¤Ê¹ÍÁÅÊϼÁÂÂÄɸ·ÆF@@QH<S3ǾÓËÅÅÃÃÆÊÊÈúÇÀÃVHB5F½ÁÂØÇÉÉÌÌıtV9]1LEELGDUIOxÃѵÏÕÕ¹½£ZNTGLY4M at KOPÅÔÃÌÊÊÊÉÅÀ¾YOQLPJXMSVTLJOSRYk«ÑËĹ]a|gŽÔÇÌÅÃÍÄÆ|}ÌÉÎÐÑÏÍËÌÉ#DC:?@O=3MAI:CNºÙËÍËÈÅÇËιÆÖ´_4%S;AYFT%KÖºÉÚÅ»ÉÊÊÊÞÌ°iL:?AL%>G.U©ÃÅÐÊпÃÂÂxOP0HÇÊÀÄÒÉÁÓ¼zD8'EÎÖºOM4AWÈÇÒ·×ÌÚÇ«gBCA`»ÒÈo6E4E>4*?K=KT4ÐþÕÓÑÁÓÊÊÂÔÆÞXJK+G97A4[ןÒÓÍÇÉÌÆ»ÒÄÉ˺3.;@R
ÃÛÎÀÁÍÀÈ´ÌÆOFB'MK-:%;(">M
ËÄÙ¸ÀÉÕO8+3(>25EIB/a·ÚÄÃÅÊÌÉÅÄLM:L5ECAJ7/=NSSUQT¤ÂÏÇÇO:4SY½ÊÆÇØÇÆØÆÂXIO7TÅÂÏÀËÆÂËÊÇ+Q.>A3PR$]9<AKUPÁÁμËÅÊÄÒ¿Ãж[ M5<*?(/M=L¿ÕʹÉξÆÓ«ÆÍX1D.X2?P"T@]ÄÅÀÄÑÌÅÃÇtB&P.ÅÎÆÉÉÆÏÅ¥hA6OK«Â¿ÄI9XD2ªºÃÍÈÅ˸£dK5AP©Û¸ÆYV,P-MQB:B0SAIR¦ÎѾÂÀÑÇÄÈÁľOZ)0W<*I=F<{ÅÂؾ½ÆÎÊÁÅÑÇѼҸMHPL>ÂÁÃÉÈÊÎÑÄǹt?=CP3J;DQ5g=:7¶Û»ÄͽɣX!
V8E?>:I72DPN}ÂÃÈÊÐÆÈÈ¡UM*E+@C88L-^)#?NªÄÁ¹¸8M53RÅÂÅÇÉÂܳËWR4K]»ÆÉÅÒÎÄÈÖÈ¡C*X<2527K2MQ5;-TÍÊÆÆËÆËÊÆÒ¼ÄW2S7Ff+9MJK!SËÆÐÄÅÅÊÀÕܾ]==?N'DD)SX JØÄÄȾËÐÕM9S@§ÃÌÃÇÈÄÌÃÀyF0A?¢¿ÓÉ©PI7I?§ÃÈÉÆÄÍÂËs>F5U¡¾¾Åw0A1'O%H G2O?GSÁÆÇÑ»ÅÇÇÎÇп«N(VCJ=Q%BNU¿Æ¿ÑÖÇÂÍÎÂÍ;ѹzD-?.%wݻܽ¹½ÃËÆÒÍGDD,';I.1,<5EEIÈ·ÏÃ˽¢D+UU?19-<Z:3-o¸ÕȺ½·¿ÒÀL&C4RHQ>Be"'<9RNIa¥¹ÛÝÃ3H;GQuÌ×ÇϾæÁת[4KVL½ÉÃÍÁÌڿźU4R*V2LP7IU6Bg6?ß°ÅÐÃÏÄÐÂÌ¿ÊvQD7A=']3,S1VP½¿Û¿ÃÌÊ϶½KN-D0O-SH31LAºÇɱÒϺÂm97=BÃÌÃÇÈÄÌáf?=SS®ÉйR5<<9ÅÎÆÇÃÆÃÇs0R3a¢ÍÄÇGR)L;5B T$Z<37E{¹ÀÉÅÎÊÓÊÌ»Æ u5KW:IC48UHI2°ÃÌÈÉËÈÅÄÇÉÌÐÃHKRJEN¡»Ì°ÎÛØÒ;Á·s57>6<85$OI5HD*F=n¥ÃÎÇÒ½£9M&I2?K%IA27,VT»ÀËáÞ˧[=AU!88 at +@P4D`1Eª¾³ÃÇ$Z$EcV¶ÐÊÀÎÀ×®ÒWQO4T¼ÅÖÄÉÔ¼ÊÜØ)CKS5Q#Q/R.I,6K¼ÖÂÒÇÉÊ̿Ͻ¶^GJB1BFY3:Y,[N§¿ÍÂÍÏĽÐM6PZ.G6G(XL2>E©ÉÏܵÃÈÐ{DOAY«ÅÏÆÉÊÇÏÅÉ@1;C¦ÍѹyY6RE=c±ÈÅËÆÃĽ¡MP,TL¨¿ÑÆk7H2<F*T.P:9J7,J¼ÕÉǽÊÇʾÊPW$(>/2S<4+>@AËÐÀ¿ÍÐÅÄÏÊ»ÇÃUM6::+Ó»ÚÄ»¼¿ÆÄÓÐP>?0L5DM1(K2'PFBR}Ò»ÐÇãR[6/K9.P&R$S*MvÎÐÁ¾¼¿ÏÆL,2J$0:Y(_A_Z/I%hÀÆÕÑÊ^%^K%XÕ¶ËËÖÌ˶ÇUI6=CÒ͹ÛÅÇê¿ÄÄ!
N8?[%VAM3U(U,XML®»ÂÌÌ¿ÑÃÃͼÊQ:>@M8"5?1/0?;R
ɽÉÑÇÂÀÅ£P/V8@%M"g7DSAN[
ÁÁÆÎÅÀÃp3@*CÅÏÆÉÊÇÏÅ g<GQS¢ÁÏÀMF=J7J ÁÅÏÈÉÌÌb??APÃϾi7H/?,B<1D+5@<4I¼Ô¾Ê¿ÆÇÇ¿ÀU+Yd2DV'ZRBY,¦ÄÇÎÍÃÉÙØÊÒ¾ÇÄ¡VG(U0LmµÈ´¿ÎÌÊËÀƺu'377 at 6'_>:E\J+NoϸÈþ¡E*T#G;#@:%Z+OBf¿ËÊËÍȬIVD51Z9'J,-&I&+KSQ°Ì¹»À(?07O^ÅÈÕÂÈßÂ׺R4M0aÉÀ̽Éß¼¾ÈÉ"VG7?&L5HX<GA+S¼ÚÆÆξÑÁÈÈÅRB??:3S_1E6]F,B_È»ÏȾÇÂË]=@?;T"L7&aE-P=S²¬ÔÁáÈÅ{=J;K¦ÃÌÃÇÈÄÌÃÃ{875?ÁÅÅE?B8.X¡ÃÊÊÂÆÇÐw+X0aÚÆ¿HY.L at 2C?&Q#L)AAM«Æ¼ÔÑÇÍĽ¢dD,[!L$B4>L/5M
ËËÊÈËÐÎÉËÊÌ¿GDF4O7ÅØàÃÃÄÊÃÌÀzZK,E. at 9Q2K$TD0Vy¼Ï¼Ó¹¤:O JC"L96D.>:R>AÃÐÄÄÈǯU3NSL)`12nQ#JCS5PµÙÖÇU1NH=QÀÒ¾ºÎ¾Ñ¿ËCCRQEÅËÀÖÀ¸ÜÀÎÌS3?S7IA_%S.G90U:µÉËÄÈÈÉÈÌÅ¿z)WSR,H"<J8J'e9M§¿ÐÁ¾Ì½´qNC8'WA?D.\2(N0F;ÇØÆͽɿ|?EFEÃÌÃÇÈÄÌäg1FGR¢ÌÈÑ{QBU0BU¹ÌǽÆÀ¿TN3PQ«ÄÃÈ|6G5<=@B3R'T5M3.NÇԿ͸ÎÅÇWF9>Ek/GM?T1LC[<¬Í¾¾ÎÎÀ¾ÊÀƺÁ\:6W7KDÁÁµÈÆÆÊÃÌ¿xM+1OG6:D0a3d$G0IQq¥Õ¿×¼¢Y)J8:1P/3I at 6I2J8p¶ÍÉÉŵPQ`08F)._5O6*PK_ÀѽºÀ6J6=VGËÀÖÖÅÀÁµ>DGAV¸ÈÖÆÍãÅÂÈ¿FQ9BA8E)G0N5AZ'MÄÄÎÅÂÓÀÑÍÄÔHQ0/UNKMUT0F0M,?LÀÏÂÅÍ©¸Y8=84C="H5D!R*G>(ʾÌÁͽ|95<+ÅÏÆÉÊÇÏÅÃ~9D=JÍÂËFM+)R4j¢ÊÊÆÑÇÂe7B8U ͳÊUM$L.7=2H8*A#H4=Z¡¾¼!
ÂÚ¸ÑÀ¾q7B0L>0M/@4G78>;}ÀÈÊÄÅÌÊÂÃÞɼw:-T,;6QÀËÌÎÊÇÊÂ˾vG)S#E'U'.A$D/P)F=SÂÇÈ¿LT-6*J++;H&=F%<1IºÉÐÄÂÀT1(Y+M/.C*3Q)>I$,]¾ÇÈÎÏM(U:4Rs¼ÜÄÆ¿ÆÒÂJT*LZÃÌÄÃÆÍÍÄͽM)-;H/4N1T:L7O=M»ÅÍËÈÇÈÇÃÁÆL0 at P6Ny©´»Q@:G.C;bÊÄÈÀÆÊzGT'UI;EN=P4<N at J1Zr¦ÃÉζi^6EZÈÓ½ÏÃÉËÉm-6S?¢Æ¹ÈN;/F=8JÎÊÊÒ¶ÂVPDA^ÄÓ·o/F7AJ+AL%X/Q56I._¢ÌÑ¿ÍÌ¿O<A2VUHXQJDA3QV.WÊËÂÓÅÍÆÑÂÅÇ©t?S.FK;RÌÁÌÀÉÔÂÁÉÃoR7;D5Q6,Z+J3-XTABÔÆýµ3&7FG>;X3EDK?:Q4xÃÀÀÖ½§R%P P!`J7DG@>=HZSN¢¿ÐÇ·8AV.G,YÁÄÈÇÃÍ¿Â\7UPTƵÓ×ÈåʽÇÌV:ON31X2Z)Q0Q*FO²ÁÅÄÃÅÈÊÈÇQVS<0xÁÅÖ±Ãs^6GC;X¿»¿¶»ÈX[f5STµ§YVNG<3YÄÑ»´ãfAK5J¬Ñ¹Ú»ÉÏÀÍ´?L;;×ÁØULNU0EUµÐ¾ÁÎÖ¼qN3?T¥ÉÌÄm884M7?HMAFN*4G+RS¾ÐÈÃÃÎH=NT at 9]ÂÉWF66 at 3x¢ÅÉË¿ÕÊ¿ÍÃÁO>A8C.U1©±ÕÀÈÂÉÄÄÀ½yC>-8?*ZB/R4S2)M!GPÀ¾ÖÂGKM4.;-%B6N>D<==ÑξÊÃÃU2CQ57D'?@77AB;=)[ÃÌÈÁ»ED7<SPOÉÊÔÔÌÑ¿ºN)DQK½ÑŶÔɵۼÀ±C>.72P&J2Y2J*NHLÇ¿ÌËÉÈÊÉÇÆÄU5.6f²ÓÈÉ·Þ²V3<;6MºÅÒÐÕÐQ at C%OQG¥À»ÓÔp\;:AD¢Í¿ËÍÀf'CK@ÅÒÀÅÔ¶Ú¨hD;Z¤ÁÃÂ{J.6KH< »ÉÏÀºÉl<3WSÅÀËmC6=Å༩ÃrEL7A7OȱÌÎÆÉE[+:.tÄÈÇÂË¥UG8EDVÀÏÆ¿ÔɼÌÃÍ¥LN9??1G:¹Ï¿ÖÁÅË̾¾C+Lj¤« « ®°X8<=A2lÏ!
ÌÄ»µ=(5Rr¢uNF,E@;>k¯Á¾Ä¼¶O:>-OHa]ge\^ki]XKtµ·ÁÅÂUD9/X:U¼Õ¶¼ºÇÀÀX;E=
WËÍ
¾ÇÊÄÏÍÄÊ E3Y>LK=G)HF:[7K<´¿ÎÌÉÈÈÇÄÂ¥M at ENƽȾÒÂÒnO8JGJ°¼Â½¼ÁQ`DQ+QÃÏÒ¸»½qD&[3Kªµ×ɼÎxOD%b¢ÉÆÆË¿ÔÀ̽lUBU:¹ÃÔNKZQ%9A¡ÄÔÈË̹vI+>U³ÂÄÇn?<?·³Â»ÍÓÏ:@C>)ÊàÙÆÁ½}4+_VVÓÁ½ÍÍÉod;CG<¿ÑÉÅÈÅÌÅÄЧSJB at CD1QrÌÁÃÙÂÆÌÎÂÁ`9FuÓµÆѽÅÍU9D?GżƼABLP¾ÅºÁÃÐRO8BF^ÌÖÔɹb9:\Cž¾ÉÊÇÉÃÁÈÍÆÆÄÍÀ®G=@E.DG«ËÍÔËÔÎÉ^HC;bÄÂÄܾÜÝ·Ë×A;G(4&Y=N:I6N&@<¾ÎÂÁÁÃÇÈÇÆMKPR ÓÄÇÆÎÁÁ®QB4;9¨ÂÎÑÒ¢II)VO¦×²ÎÓǸT:@H9ÔÀÈÑ´w.MV>ÇÅÆË¿ÔÀËiO^¡×ϽL14Y1;g£À°ÌÃÔHADJ_ÅÓ¿o2E;º¿ÛÏǺ¹;?EL/¸´·ÊÍ]QW6ºÄÍÈËÅñ8T1EºÒÄÈÄÅÐÁÅÁK+L:E=>JxÁÉ¿ÎÂÇÅÈÄÀz0:(x¢ºÒÕÁÂÎĽ°K<LGs¾ÄÔ½46=DËÕÅÒÊÃU.O4GÅÇ»À·:=1:U´ÐÃÑÔÏÌÇËÚ¾ÅÆÐÔÉ¿\'\/P6fmÉÇξÁ»±C4<NU©ÐÉÈÉØÀÆÃǪ/T=E?<4;937L'JGOÌÅÈÇÆÇÊÊÉÇ¡V45F¨ÓÆÉÁÇÁÄÆMIJWH°ÇÇÅÁzMY[X§ÃÆÊÖÃÍÉc8H=@ªÎ¿¾¿sH1'UÁοÅÕ¶ÙÁÎrJ3PN¦µÄÅJHYG)IIJ¦×ÎٺɡWQ=.Y¬¼Ó·q1PCÂÒ´¶×ÉØs>:EQk¬Û¾¾ÆTG.UW§ÉÁÌÄÇÂÕÊHE>I]°ÕºÉÌÇÄÁÌÆT&O/=4GH|¹Î¼ËÆÌÃÇÉÂtLERyÀÀĸÀÃѽ¾5=I2hÌÏÉ»®Q8:V¾ÃɹԼШ3T(MM}ÄÌÃμ[-W at ZzÚÃÈÌÆÂÇÆÅÌÁÕËÉ»À¸92H4=IDSÌÄÐÁÉÌÃWPMBK¼ÐÅÈϺÇÌ˹;H,6J@,Z?SN9e>OLª¹ÐÍËÊËÊÇÆ{PAKT¡¿¿ÏÄѽà¿aS)C4£ÃÅÉÆ]E,4TZÇÕ·Ò˲ÊÝqV,!
[5U¨¼Ñã±|K1WTÊ´Ø»ÊпË^U0K:ÈÓ½P<34O.?OÁÁ¿ÁÔSD?GX¹É¿p;JH®ÄÌÚ¾³ÍÃ\PA\¤¼ÂÉÊBDL>QÂÓÎÈϼո¢Y2L7N£Î¹ÑËÅÆÃÊÍV;F/?4DBj¯Ë½ÒÊÎÆÊËÃvQ+CL§ÕÃÎÂà²×ÌnS9OõÈÀ4=CD~ÏØÀÇÓ¾»¤@[(H>g·Å¾ËLI3<DºÏÊËÃÀÉÈÃÇÐÓÁË¿ÓÔG?C+K&BGÉÂÒÂÊ̼IEP8Q×ÃÇÓÆÁؾܿJ5D;I2:=3..L;G%6¼ÝÃÂÂÃÇÉÇÇwH1Hc´ËϽɾµÐ±dN/M=ªÈÅÇÃKXCX8Í¿¿ÍËÁÊ»Çx-J0L©ÌʹÑm9AH.§¿Ì»ÐÃÈÉƸsN)NN¢ÏǺI>A0/I>@¹ÜÀÍÆkB0KT¬ÈÊÓm>5=}Ï»ºÕ¸àÁÐrNB6LL¢ÂÑÄÂF7FI©ÊÒϽÂÀн̣o\HCYÄÁÞÃÀ×ÇÀÂ8B:<M0M&fÒ½ÕÆÉÅÊľuIaI~ªÅ¾ÐÂÉÃÁÏr8 at 3jÅÉοªP>CW¼ÁÃدÛË«C2D:EÐ̾ÖÂN5@@UÑÆÄÌËÇÊÇÆÏÚÏÁß¾º»9A8SN/>[ª¾ÑÅÒØÆRN0QUÆÇѾÂæ¼¾ÚƳ;B5J-HL4VDU/CJQEÉÃÃÅÖÆÎÈǨg;GO5ÍÔ»ÉÊÍ×½ÂZG6O@¿ÛÀªXA90A¬ÈÏÊÃÁÇËÉÈÊr6:?Z©Â¶»ÎTND-LÇÄÉǺԽʦg>LO:°½Ç¿JL/SC=+@ÃѾÖÁR9RH^¢Áйp*R6¼ÌÄÔÀ̽Ê`%\4O¼ÅÌÇ3OI=ƼÉÁÖÓ¹Ðο;<%MÒËпËÍɽÈ{U at 3V7G;LK ¾ÉÃÊÈÉÃǹ}M0(£ÂÑÀ˾ʸà±K6NvÁÃô?60KǿӻνÀÅ|7?@8s¿Ò¸Ê¡U>H?VËÂÖÂ×ÒÙÁÈßÈ»ÀÉÌÏÈS"\;'LcKÅÐÁÀÑÀ5H:GXÀÁÈÑÒÇÇÆÏÈ5F at C+C#T-;N;A>ADÀ»Ë̾ӹϾ½}S?.Pƾ¿ÏÂÀÊÊÏmPKEB¦ÇIJ¢gRJ?M¬¿ÄÌÅÅÊÊÅÅÇbI5REÏÜÏÌzE*LWÌÀÖ½ËÊÈÈÎrBLL ½ÈÌf`*Q31,ULÈÕžÌD]L^Âƽ¬N`4Q¯Ë¿ÍÄÈÇÇOSD!
LÌÉ·:H1\³ÄÚÂͼ½ÀÔÁ×ZOW\ËÂËÂĺÔϦH6?NOSI=MH½ÑÇÌÈÈÂÈ»@ND|¥ÉÒÍÀÏʺ
ÀÉ=BJyÃÈÅ¿ R5DZ¾ÓÂÄÐÈÈÎDFH3{§¸ÈÔ¥PN6LPÐÂÅÊÉǹÔÃÉÎÐÏÀ¼É¿7D1)SL.JÕÀËØÃÂUAUCIÄÐÈÄÇÎÃÐϳ¡R5H-W;`6EF6GL=/=¼ÏÕÃÆÊÌÄÈÇS3:]OÎÊÅÜÊÉÁÊÃx[F5F£ÇÄɤK994Q¬ÁÉÉÈÈÊÇÃÅÈnX O+v²½³ÁlDFE+ËÂÔ¾ÌÈÉÇx?ZQ£ÓÅÄ¡OI&CDS!:`½¹Ö¿ KL,EU®ÍÈ×p;LF³ÐÂÇÁÂÆØ°VPAJ{¾¾¹¦}I[A~³ÄÁÎÆÐÐÇʵË8%6Aº¼ËÏÑÆÉÂWQ>TZwVD at BËÇÈËÅĿƺ~=I4cªÊ¿½ÎÊÃÈÃÇCM?wÁ˽Å8FNYËÅÀÇÇËÆΡK@%R`ßÆË¡MG9;`Ý»ÚËÄÓËÙÅÕ¼ÇÔÏÍй'aT:K5]r¾ÆÁÆÈÃMED=MÇʾÂÏÆÛ̺ŬC>:V8%;^.RI,3GdÀ½Ì½ÑÇÖÂ˺j at AX9¹ÍÅÄÀϽÌÁ¦«ª¾Ã¾ÁdZGIDl»ËÔÃÅÉÊÆÅÈÍ}U)P7y²ÅÔ¿YS1.]¨ÅÊÅ˽ÎÁųmaZ,ÂÆ¿G?;:C([4D´ÀÍȺ¤WBEAQ¬¹ÉºO053ÁÈÊÌ¿ËľÌm42C6£ÄÐÏ¡b3K9¨ÆѼϳÅÅÌÈÎÎPJOJËÈÄÂÀºÑÃWK4RI09EÀ»ÉÌÇÇÂȺ|W?2pºÍ¿ÂÖ»ÉÃÏ»BT7wÁζÅOV=5ÂÉáÈÀÊÁÈT5V&\·ÇÈÁIO,SKËÀÓ°¼»Î»»ÊÕ½¾¿ÄÄT%O'I+ANH¹×ÊÇÐÇLD3CZÃÂÅÍÎÄÞ¹צ-JD0/WDL 9ENEJAH²Í½ÈÃÒ»Ò¿±tZ<,\¹ÁÂÁÅÖ¾ÑÅÈËÃÂÌÄÅÏÙeF6AD~¾ÃÇÂÆÉÈÅÆÉËTQJ:d¦Ò¬ÞqLSOJÄÍÃÍ¿ËÃÃ{:C)NÙºÄËpW(P0YI2UHÎͺÎR])F]Ͼä^Z<VŲÌϽÚÄ«ÑQWEA ªºÃQ3TM¸¸ÕÌÓÊØÁÀȶWPJ[ÃÈÆÑÒÔÇɯD4<Hx³I2TXp±ÐÊÎËÍÉͼ{V4K¿ÉÉÆÄй¾Ã5R6xÆÔ¾ÉQ5C]ÁʸËÂËÄË¿q:(K>ç¾½²R8O>fÑÁËÇ×¹ÉÎÐÉžÉÔÔʶ9Q0Z;PB>P±ÆÎÔ¹»Y*G!
ITÀÍÒÏÂÊÆÈÎÄ>=+VL8"0USG:5AIO¹ÁÅËÊǾÏÊ·VN+NI¾ÀÓÎÎÏ»ÎÄÇÄÌÃÈÃÀ¿Ä[@3HT ÖÏÍÇËÌÇÅÆÆžTT.7L¾Ú¶w@GF¤ÈÊÎÄÐÀÏÀÆcQ4H2ÇÆÊM;7<qKP 7¡ÅÐÌN at 5Aa¤½É¾GN4CĬÉȻѻØÉQ@BÍÍËI-?2ÉËÎÊ¿¼Â½ËÊ×ÁÇÁ˵ÎËÇÁË¿¼À·£DBD>|YBE1Z¿ÅÉÆÉÆʶsG)LoÁͳÈÍÀѹÉBD8tÄÒÅÈW=7J
ÀÉÌÈÇÆÇÌÉBL.TrªÎѼK<<PK¡»ÆÁÅÄȷ̽ÉÍÎ̽ºÊÀ9Q10OK+YIÂÄÅÿT6H>KÈÏÃÅÏÁÑÎÄÁ£@<V88P[ 056MD;=ÂÇÏÂÓ½ÐÄÕÁsO1U®Ù»À¾ºÎËÎÊÊÇÆÏËÆÄhM6BGƸµÉÊÊÆÅÉÇÂÇVC.KU¯ÊÒ¼xKFL)¬ÇÍÍÅѾо«@@S%`ÆËÄuE4O._L>JE^ÄÛ¸ÂP+H>Y®ÃÕÆr#\2ÀÀÊ¿Å¿ÀÒ¯ZSI\pÅ¿ÂM;PI½ÍµÒ½ÔÏÅÈÂʹÉÂÍÈοÆÄÓÈÐÑ»@B3JªcQ1o§ÉÃÆÁÄÁƳpO3Oi®ÓνÐË·ßƹmK>DqÀÊÉÀ4HCN¡Ð¼ÆÅ;ÆÅä>2IH|ËÇϱM8@>YËÃÒÇÈÜÍÑÀÚ¼ÅÐËÉÒ¿2K#bLA>0a×ƽàÍNN>=SÊǹÄÙÊÛǽϧ9I:[LF&1BFVAN8 at Kʦƿ»ÒÃÍÃÄsAH#aJ¼¾ÏÌÉÌÄÄÂÃÍÇÍÆÉ»\Z;?C¡ÖÒÖÆÈÆÄÇÍÊÄÀjMDJ;¨ÄÈÌk at -?NÁÓ¾ÑÂÆǾ©sF-TRƾÊT2K/thK':LÅÅФMa$LR¾Í¹RODCµÔ̽ڻպß{&C(ÿÇG1HLÎÈÏÊѽÕÆÑÄÒÄÇÈÈÑÅÏÂǽϵӢQH1NÂz8M2QzÄËÌÅÆÄʹxF7Tp»ÀºÚ¿ËÆÀÄ«m4FVwÂÈνNJRS~ÅÔÀÉ×¼ÆÁ¼¬7P3J
½ÂÏÁPN3NW×ËÁ¿Ó¹ÇÊȾØÇÅÇÆÆ¿K9B/TO%Z]ÅÆÁĵE)SS[ÂÈÎÍÃè½¾ÙÇLJA7.5M<G4T45R:;ºÐÇÐÒÉÄÇûvYMGMAEÁÀнÍÃÄÀÅÐÁÌÂÄÌÄUE0BP¿ÉÄÁÆÒÃÎÍ!
ÀÍÁÏo:(@Iµ½¸Ìy/G<M¯ÄÅÇÈÉÉÈÇÀn0A7P¨ÄÆÆ@E-F`X at AR«ÈÈĨKP'Q\°ÒÃÂeH::¶È
¾ÓÂÍǺÒq=?H}Ñǧ{UYAO¡ÂÏÀÁÈÎÐÃÁÁÃÇÉÈÅͼÀ¼ÒÃĺ¿Á?=LeÌPATP¿ËÁ׻ɷ±tI<So¨Àл¿Û¶ØÂVJA>jÐÇÅÂ2#2^¸ÁÝ¿ÅÀÐÌÇ°R+ at O^ºÙŧG>F;T~È´ÀÈÏÂÉ¿ÎÆɽÙÆÇÅÁ<G1\UÅ-E8jÆÄл½YP6=UÉÍÈÐØÁÈÉÑDz23@@>E*91N(PJ3 at aºÂÁÇÇÄÆÌȽL<51<FE«ÂØÀ;ÞÌÁ»ÎÊÉÎÁU]G?S«É¿ÈÅÂÈÅÅÇÃÅÀm:C=B¡½ËÓv1K?BÉÉÊÉÈÆÄê`L6Q7¦¼Ë¾O5Y5v0CP×ÀÈZ+^#]±ÅÇÎX>;I Ê̾ǿÉÊÅƱDK,x¸ÕN9FH£ÉËÃÂËÃÇÌÈÅÅÇÈÇÅÊÑË×ÂÉÄÕÙoP/7s¨ÉB@@R~ÆÉÂÔÃÌÄ»HCKu¥ÄþÎÔÁ½ÍY4CFtÎÇÊÄDSUPÍ͹ËÌÂÌÁ¸=>L'zúŵXAN9hàÑÙ¸ÈÃÎÁÅäξÂÁÆÄ¿7C0=Z·L<1S¿ÏÅÇÌN<QFI¹ÅÉÌËÎֽĿ¡MJ=5H>O2DEV91GSEßÊÊÆÃÇÌĹÄLZTW+Q9YoÖÐÂÆ¿ÌÆÏÈÁȺYM2LJÆÀžʾÐÂÃÑÀν`O?P,¦ÅÈÍs6JABÊÊÊÉÇÅÄónT/Z:®ÌÅÉ}AQ&PZ©{@9CÇÌÌX^1Jo¨ÌÇ¿XOB@ÆÇÉÉÈÅÆƱ~?E3²¼®}>Q-dÊÂÅÅÕ¾ÊÏÌÈÈÈÈÈÇÀûÊÀÌÃË¿y^@K}¢ËQ,L?ÂÉÅÏÆÄŲ|594r¤É»Êȸܻ¼GUFTļÁ¶L54SÀÂÌÆÊÂÏËɳS76J
½â¦«RK(RD®½ÄÍÀÄ϶κÍÔÄÒÌÈÉB8 at HfN9T_¹ºÌ»:VEHZÌÏÊÌÏͽѽ¿ª?F%=P!=>R&KIU2aÈ´ÎÎÌÇÉËŽ©W:17]><?]¹¸ÈÍÉÎÊÊÆÀȱVT?-KÍÆÝËÃÎÅÆÎÅÏ»p:L4B¤Ô¹Çu>A;F¤ÈÇÈÇÇÇÇǦm+'=E¿ÊÀ|K5C-`¤}S=<´Î»©WA9IV¥¸ÏÔH=>O
¿ÀÎÈÎÄǽҦ~C8P{ÌFDGqÍ¿ÉÂ×»ÑÅÅÅÄÅÆÆÅÔÇÌÂÔÅÄ·¼¬l<ANyÄÅ FH7PvÂÈÅÈƽīwLLBx·ÌºË!
νÙÉTQ4VÁ½ÊÆRC at UÉÉÊÈÌÀÉÄëIAR8n¨È̳O;0<HQpjmcr½ҽ½ÆAN1YAÈ]K=,wÔÀËÓE,-8QÆż½ÁÃÑ¿ÍÓR'W;=OEF5WK-?P?S¹ÂÄÇÊÉÉËËÊÄA[ER(1XD9A5W
лÃÆÃËÈÏ«QH1VSÏÂɽÆÌÀÆÆÀÊÅÆgK'G7¸ÄÂÉtC:9D¡ÈÇÈÇÇÇÈÈ¢z3IH`ÃÉÁ}T;P9r£®UQ=X´ºÕHa*<^©Ì˹VZ>4ÌÂƾÇÅ̽طL>N[ÇuEAHu¦ÓÅξѺÐÃÇÉËËÊÈÇÅÄÒÃÍÁÏÎÇR=F=lÔÈ_/K9¿ÅÂÆÈÃ͵C;>f¸Á½ÊÀÜÃ:OAGu¾ÏÆÎÊ¥H at CVÅÈËÇÌÀÈÅǯJ68=ƿŨS?;<N7H;[O4DO&A9N¨¸Í¾ÆÉ:9><l¶24WQ¸Î¿²DSZORÄÒÒÏËâÂѾæF5U$1F.>X=M89GO¯ÉÄÇÉÇÆÅÆÉ×CP??S(GG>15^¤¬ÎÓÄËÃÍ©\SD<X¨ÍÀÑÆÒ¾ÊʼÏÂÊ~@C7Q«¾ËÅhC<DHËÉÉÆÆÆÆÆm:<9EÄÄËvML,Pj°½lR2M¤ÂÈ`(]4`º»ÎÊ¢IE6GÆÅÅÄÄÃÅÇÂÆz?H>^«¸¦^@L6~¬ÈÆϾÐÆнÁÄÅÄÂÀ¿ÄʿǹÌÇÎÁXN=G¼Á£LB.HyÈËÄÌÅÇɵ|C<H`¥©³¹®£Çz\A'-QÑÎÁ»<29QºÁÍÆÍÃÌÍÒºSM.MZ¢ÊÈÁLJ.H=?8;@%>/BF:GPªÇÏÒÖÆ2:3aLÎLH5VÆؽËN.D?K½ÇÅÄÃÓÖ´ÍÇ`,F6].8P<F@\16?>¶ÉÌÊÈÇÇÅÂÃÏ~-_)>8M*6(P6 at Ki½ÍÂ̾ơ`=-MWÉÇÇÁÇÊÈÌËÈËÈÒuQ8I9¾Ç¿eI=JMÉÈÇÆÆÆÈȪrF=8G¯ÓÉ¿zY!Q"x³³~M,UÍ´¤G=%KX«ÉɶOP7D¹ÈÄÑÅÇÂ˶½y>>Ew©Ô]O+Vz¹½ÇÏÂÌÌ¿ÅÇÊÉÇÇÉËÌÓÊÓÄϾ¸ÇX5)SÄÄe<E9|ºÑÄѾɿ°r:68=HGJL*V>H?bD<nÃÀÂÈÀªBXXF{ÊÏ·ÌÒÃÆÀÀ¡4.H;y±ÀÞ¤GA93H1@=7GC:F<J+TÊÄÎı3R<GFË¿QGHUÇ!
Á¹:Q9B[ÏÐÈÊÎÅÀÄØÀ£J,K*F)Q)=:=<(XA5ÉÁËÅÂÆÍÏÌÊdzH+]*E:?GD:H3A<}§¸×ÊÇRJ;
G[ºÍÅÌÄ»ÍÄÅÐÀÊÉm@<5-ÈÀÃrU9 at G¡ÅÃÅÄÆÊÌ΢f5C6S§¹ÃÉyW?;J§ÈjW7?¡¹À¦K7O<H¼Àɾ£FB4VÂ̼ÏÁÐÍÆ÷[.Uy¯¾¤JF5FÑÃÏÒÂástustx~uÇÇÏÁÐÑ´I8PTxÉÁ«mWIEn«Ì½ÒºÏ¸w:@=C'0/7Z-1C.X*LSÐÄÉɹ D00M»ÅØÄÍÁÈÇË®AN.7¬Å»ÃEX-Q1H2AM6=7C5=KKÍÁ˶°T0CPm¼Æ6D(\³ÆÆ2IWJN½ÉÊÉÆÂÑ¿ç¾T0QPG)S/[-BJG/9NÇÀÄÐÈÁËÇÁÐÌÀ`>Q07?9.9A 9JIKÖÉÀÈ¢GJ<OeºÄÍ»ÓÍÌɾּÄÙtS6OO°·ÆÄj@)=P¨ÄÈÁÌÀÌÁŲn at 8KH¦ÃÌÇH1I=l¬ÂL+UÍÐNA;Aa°ÄÅÇ^P2GÆÈÌÁÈÁÃÁÉÀ~<C/Yª¼J?EEÂÂÂÍÌÎÆNQDMRQML9ÉÊÅÉμÁtP::LÇ÷@9(]½ÖÆÎʾ³mC)\*5HQ=.2K,R%LNv½Ë¾ËÔÂ?LBbÂÍÁÅÃØÈÃɲO2H0qÄÁÜ¢R*S"BB?4(A>@K:O-LÒÆÌÅÀ9R<MQËÂO)S/QÅÊÇKT;3S¼ÐÈÍÍÃÚÇÒÀP-N1AB1K2J>1#R[.²ÅÂÎÉÅÍÈÁͺlU)&Lb%S.W=I"00u¾ÇÀ¸¢RI4Eb¿ÊÑÂýý¼Î½ÄºsX;./ÂÃÌl[/KCÅÃÇÄÈÄÅéeC0N?¦½ÄÌCX+My®ÀU<Zx³¿N>EDX¶ÀÇÆHC5VÂÈÉÉËÊÇÉÂ¥D/=}¨ÀN:HBÌÍÇÄ·¼Æ¤T,A"5*D8I¾ÌÇ¿ÈË£PY$R?ÅÂÃ_GCW©Á¶ÄÈƾ}E?7I=/.9>9E:TCÀÆÀÈÏÁT,[=
ϼØÎÊÁÀÇò37DPs±¸Ê½OI8 at AGL5M9>;0?/LV´È³ÇƦJA?<j·ÌbL8:ZÆËÆ@:LD\ÁÏÁÄÁÎÌÖ½ÒX*L-A >C@(BIO3&f½ÑÂËÊÈÎÉÃÉÍÕÈ~SC`=D*C*H6AFd§ÔͳKS7@`ÂÇÉÁÑËÔÆÍÑËÊÇ{LD0G¢ÉÎÂv@<6KÊÃÐÁÑÂÌÆ¢jB<GG£ÁÓ¯`S+w¡Å±c/3F¡ÅSK3=i®ÂÏÑTQ;!
OÂÌÄÏÆÉÁǾÊ}AP<|¤ÅR1L?·ÄÌÑÇÆÄOOOBXS3HH¾ÌÇ¿ÉÌVL<EZÌÊÁI$?FÇÖÆÉȾ®mP:&g%@B8>3P(3Z5o¶ÈÆÇÈËÄ0T[¯Õ¾¼ÒÇÏÉ·ÃHK2Ni´Ï½»Q7G$R*N%;0J8R/QWOÄÍÀÔ¾MH6L[λS=Z`´ÄÇOG>;S¿ÒÆÑÍÉÄÆÃŨO4Q67PKA>MB)d*HJ°ÁÅÉÉÈËÉÆȿǽÂQ-/2J(bNc`53^ÈÍǦWU:?_ÃÂÃÅÌÇÑ¿ÌÅÉÂÐt4?7^¤½Ð¼q5=3QÉÅÍÄÎÅÊÆq>F>N£Éº×}><@3mËÒ¼lNPI¾§N2?>Q¹ÁÇÃUV0/¾Ê¼ÑÂɽÓÄ¥b+A~£ÉR)O@Îɾ¾¼ÉÊZ*F-?'R88ÉÊÅËϽSO1I^¨ÉÅ»P5L?yÁËÃÈË˺C0D1S":?,P-7a)OÏËÅËÆÇÅZ4jIÑ¿ËÓ̸¿Ëĵ*M'@hÄÞ¼¯J(G-7C24['VTP0UÉÑ·À°.B at 3i¼Ó¥NDN£ÌÂ<*DCS¿Ï½ËÃÍÆÇ˽²F9,G:B'DC3>I(VN.ºÄËÇÇÈÇÉÊÈ̾о¨OQSF'=8<Y#O at F˾ÂHH6<\ÄÃÇÓ½¾Æ»ÊÁÍÄÊuAG9S¡ÃÄÈ_\/RCÄÆÂÉÂÈÂÄ¢eO+M9¯ÆǼV/DUl¾Ér;,;ÃQH.=i¥Ê˾LR26ºÅ»ÓÅÍÅ̽Æ^7UGy§ÊP)OC½ÆËÔÐÏ»{Ib"F:H2P8ÈÊÅÊоW,E.¢ÇÌ»¤NDKEwÎÐÉÆÄ¿¦qU%R[08-7F)T9!RuÇÆÄËÃÃÂ.:P{ÊÐÔ¼ÄÝ̼»¯Q<7IzÁÅĹG*O5=H=GR2O1,XXXͶÒÁ«J.=4h·Ù»VEL at yþPRDGPÀкÎÂÞÈâÀÐJ3]56EY0>9?c2D-OÐÌÎÅÆÈÄÉÍǷйÈÆÁg6S2K89L7T6:9ŽͪoD<@YÃÂÄÑÄÌÊÈÎÆÑÇÍsQDCE£ÂÉÇ`U-HC¢ÆËÂÏÂÎÃÈ.T$_ÏÍÁ{Q6Z·¿ÀyVDBe¢O;GFR¯ÄÎÎUR9IÄÈÃÐÅÈÄÔ¦{X/M|°ÇN1LCÆÍǾ±¾É£M89Q?8B.F½ËÈ¿ËÍGQ.\v»ÏÀ¤I?5H~µ¹¿ÂÅʵVN!
@/ID2@,V*(F6w§ÁÈËÇÈÄZNUQ¸È¶Ì»ÍÁÊØ·I<JM~½¶Í»M9Q-S"Q9XA0CBC:INÎÀÛÊÁR4
@Xe
ÇÅÉt='=fÌ´;1?ELÂÕ¾ÚÌÓÈÑÅÈI487>-/?C.D!\$Y?·¾ÎÂÇËÅÊÏÃÌÀÌÎä¿®³X<6Q$K,76D=§¸¹VFCBUÃÆÁÇÂÑÄÌÃÀŽÊ`K*G4¤¸Î»n<80M£ÉÉÉËÉÊÈÈ¥lP0NB±ÄÖ»|MLJc«ÃÍJ(<H¡WK3<d®¹ÂÆSH-CÉÅÉÉÅÂÆƸËuPGCu¹ÃP?H@¯ÁËËÁÊÉ\L8 at 3U'XF½ËÇÀËÏTECIÄǻθ~Y9EyËËÒËÄÂ¥~7-NP'2A5I6$J9FVz¸ÍÇÉÌà 0-;XÝÄËÆËÔĸ°¢6 at GDuÀÅϪND6A<9E=80;?](RNTËо¸®)FOF´Ó·a)RNƹPHLSRÄӶоÉ͵Ͻ¡I4G6=S1F7^PN7B4Q¸ÍÌÀÈÏÇËÏÀÓÅ¿½ºÍÌÍ·³FM2 at 4T5A>ÎȵY??<OÆÐÈɾÓÀÓÅÉÎÇÊa^+S0¶Ï¿¼nV>AG Ŀɽ˾ÆÀv6G2WÀË¿C;K8rÁÊÉ\@ZF Y>.3[¼×˼PK4L¾¹ÉÅÍÊÔÁ©«uQ(H¿ÁSIE=ÃÉÆÅÃÌÄVU;?Y&K7ÇÉÆÌÒÀ
D.52ÈÔ»Û³H*@¼¿ÎÊÆÉZ3>8I,K/K6[-H1(TªÇ½ÄȺPICOÀÊÀÂ˼ÉÔÌÍI39FsÁÏÇ¡U#N+UVXZ]TtVUVQc[¯ÄÇÈ˪QP09aÆƽ°UbJ;P:;FFÁÔ»ÜÊÝÓÅÄÕV'U0J+5A8<1=P1UR±ÅÒÆÊÇÊÎÂÈÂÌÒÎÉÉÆÁÍÌ´eNMQ)7I4_ÆÖªTN8;h¢Ç¾ÏÎŽ¿ÉÌĺÐcG6WN¯¾×Â[V&dCËÌÌÈÊÍÌÇ®i>S\;¦ÙÍÆxY9<>¬¾¿·oA&6T3LMu¬¾ÃÎPWB>¢ÀØÄʼÅÇÃÇ´zM4PÈÉY-5L̹ÉÂÙ°Á¤WNJ2N*JM/ÄÃÅǬ9ZER¾¸Í¼°£4a0¯ÆÌ¿Á¸¿u?*ND)?>2?0S1L9COJxÉÆÁÅħ3=EMÈÏËÍ¿ËÍÀÈ=E;BjîĪV6;?VÆÅÄÅÅÆÅÃÁÀ¼Ç·ÐÍƶPJ;Ls¾ÓÃV(QSÁ³VDLW_ÅÈÄÁÅÌÁÍÓƵ2O+FH*S6I at GM*]K'ÐËÁÉÆÇËÂËÂÈÊÆÅÇÇÄËϽ¹¤N4GC=?]ÀɺQP!
4MG·¾ÍÇÅÇÈÈÈÈÉÊÊrIF8B¿¼ÂjX@>§ËËÊÅÆÇÅÀ~@?)8Ä¿Ç{O2EE{©ÉÕÊ~K8T{VARO§Ñ¸ÎPT0G¿ËÊÇÌÉÍþ¦x*D,¼¹R9;n¤ÊÒɽÆÅ HG.BFA86MµÇ¿ÃÂÅ|V0S¡ÃÚÅËÒ4A4o½ÄÃÇ¿µpDI$2QR[PYOCNE.3RoŽ×ÏÈS<2E
½ÂÈË¿ËÍÃË£G;F;ÄÎ̾S9AAWÈÃÄÅÅÇÇÈÈÈÌÏÒ»Ó±´2;A?YÊÑǧO1ER¾A55<IºÊËÊÑÌÊǸ¸Á902+(9"b+:Z$AZ-L½½ËÂËÇÆÉÁËÊÊÈÅÇËÌÊÁÃÉê»oI7:H?@ʾ®ZXCW8½¼Ç·ÆÈÊÊÉÈÊ˼]2=Ic¶ÐÓ»];FESÊÊÈÄÅÆÄ¿¨{G&BK½½Ò½o]@60|®¾¾¶Q.6wqJU=5®¾ÕÁDKM0·¹Æ½ÐÂÈÍÌw2G9ÃÉe4>Qt ÍËÀ½ÓÁPL)D8?20K¼ÊÎÃÁ²k4SEH§½ÊÂÄR;CUÈÇÏÐεyLR at w¹ÆÎÁ¿¦ÃR7S?EsÜÄηÃ2KUL{ÃÎÆËÁÊÊÄË£O6M;yºÃ´¥P?IDV¡ËÁÈÇÇÇÈÊÊ̶ɿÂÇÍÃ>>>8cÚ½±Ã\>:I`Ì96PNTÆÒÈÂÆÖÎÐËij9GE_+LZ46N;ED-E`§ÏÓÈÍÈÉËÀÇÎËÇÇÊÍÍ˵ÛÁ½Ê¬LBF0DS±¹ÊQ99:C¶×ÍÕÏÈÁÃËÌƾ¿la at B+¯ÆÅvAM,YÈÈÈÅÈËÊÆoD9`¥¿ÂÒL0KBf¤ÇÖÅJ.DU_R]#KW¤×ÁQO+O¿ÆÌÇÒÈËÂÎ\N%]¹Ñ¬k3BLS¬ÁʺÕÄÁMMJVO at KG<ÍÂØÆÇW1-AVzÖ¶µ¹ÃU>TƸ¾¼À¡qAO©ÐÌÀÅÊË«R3-6VuĺÉÆÂT30Z£ÎÄÇÊÄÉÇÃÆQ+DHvÕÑÖÃPBMBR¡ÍÂËÊÈÆÅÆÇÇÂѾÏÁÓ¾:3UTW¾ÈÎÁ
C;9OÈDHABMÂÏÄÁÍËÃÊËÄ¡3H9#T)3/O6S$XE1NƲÕÆÊÆËÎÁÅÊÇÅÇÊÈÅÃÞ´ÄпÅqN7J=HÀɸdQP at VªÇ¬ÂÍÇÁÃÉËÅ¿Ò]1CSÂÒÄÔPT4LDÈÉÉÆÉÌËÇb=@J3ÀÏ»m]C;4~¿ÆÀ½¹F:@Pl)H-]»ÞÀP!
KZ3ºÏÄÌÅÈÇÆÉKW#eÅÇ®H64DÂÑËÓºÉÉÁÁÃÃgU9JÂÁÅÊÈ.FXL0E&N6LF%0K`/ÕÈ
ÌÈÍ°Z'P}ÂÈÇÆÊÄ´V;JMtµÁ¾Ñ¾<QVIwÀÐËÇÆÊÇÅÄU;PQ|ĸ¸¥QCJ>NÎÆËÉÇÅÅÆÇÇÒÅÎÅÕ¼Ã5U3:oÊ»ÊÈ:E/[©HK7 at QÅÎÄÆÕÄÍʸŷE+WG8 at TN/QC at J0\EÍÍÀÅÄÉÎÃÉÈÅÆËËÇÃÃÈÄÍÁÑÍn[B.=X¦ÄÏQ at 19H²ÆÇ×ÃÈÌËÆÄÈÍ©hTYOX§À¼Â5J K¢ÉÊÉÅÆÈÆÂ1W3UÈÀÑG*FBhÆÐùo?@8oF:G7v³Ò¸Ã¤WD,F²Í½Ë¿ÇÄÒÂLBGG£ËÊ~:;HVÏÁνÌÃÐÇǽÖ[>O¨ÙµË· YW,-A4R+M04PH"7Rw¿ÄÆÄïrMI3nµÃÓϸѺǦX(L4r¼Ò·Î»¦Y5-TÉÅÌÃÆËÉÈÁT1MK¤ÂÕÍÇS?D<NÍÉÈÈÈÈÉÊËÌźÀÍÌÄÉA=?Ti¸ÊÞ³¿4H2]}=AGUeÍÎÄÂÌÊÒÓÆЮF2T4`7$@82T&LY)ÌÆÆÀÊÇÆÉÃÐÆÅÇÌËÆÅÉÁ¿ÒȽȬE@:>>¶¾ÂSU7C;§¼ÊÃÃÉÎÍÇÅÉÏÀd0+1R¬ÆÍÏMG0_3ÈÈÇÃÅÇÆÁm,:AP©¼ÎÅuS377|ÀÉǾÍB.W=Z#?6\±¸Õ¼L8G0½ÎÊÒÑÎÌȹE(I+³Æ¸BJOBжÈÀÔ¼¿ÐÉÄÊgS4I°Û¾Ç¸; \2I(V'=?I'<RX,z¸ÐÌËžtCJ=y¾ÇʺÂÁ䪻&=;Jo®ÅÈßÀ2=JWÌÏÉÁÈÌÉÆ·F6HPµ¶¿·T8>>SËÉÇÆÇÊÊÌÌÊËÐÅܶʼ4D<IrÊ»ÇËÂ:?=C^1C1FX¾ÅÅÅÇÁÄÊÇÌ9; .T!)QFEC/MO'OÅÁÆÅÔÍÄÄÂÔÀ¿ÃÈÅÁÃËÎÓÀÆÓÆËYT4LA»ºÕPZ==7ÅлÎÊÆÇËËÇÃQTC[S»ÌÀ»},=08¥ÄÅÅÃÇÊÊÆr.V=LƺÄwI.HO¬ÃÍÁÌ}C;C1%F>9z½ÄÇÀ¤R<?F·ºÅÀϾ½ÄÉxK5@=Ë´M42;ÃÇÌØÃÂÒ½¹ßÆIP)Nп˿Õ5OH1P+E3I%H;J(:Fu«Ê¿¼´ºi9OÏÏ¿ËÇÎÀ§UYJQyÅÿƾN93JÁÁÅÃÌÍÇÁ«p68;e¾ÑÁÓ½T5<AY¡ÊÉÇÉÊÊÉÈÆÄËÌÝÉÄÁÎ/!
GJ6MÌÏÈÀÁI5E%P/S8N\¿ÉÏËÄÃÐÌ·Í®S1]=6RF3C6X.Y-4X¥×ÃÖ¹ÃÌÀϼ«¼ÀÂÑ»ÊƽԼīo.N8O¶ÁÖPDbNʻѽÃÆÅÅÈÉÇZH%<[ʽϸqJN;KÉÈÔÃÖµÑÈyE39P±¾ÓÍL;NbÉÅÅÌÀTA(4Q/E-mªÈ̼¤JV5M§ÃÆËȼÈÏÀ~.OVI£ÏÃÎ9N6N¯¶ÜÀÂÎÄÈÔÆÄQQ.PÄËÒ¿¶^A62VU#K8U(,I;=dÙÆÇÆ©qVDLqÀÃÄÊÄÁÄΣjG"=xªÄ³Ï¿=T;PÃÙÂÄ˽ÀÝX&RVy°½ÅϬD5?=Y£ÌλÄÌËÅÂÈÏÌÎÉξѿF59>qÅÀÇѼPU=PG.RG[¿Ð¿ÊÉÏÞÓ׸§>?5$R01S3N-F3[KT¼Â¿Ñ¾ÊÍ¿Ä VWSKx®ÌÒÊÆÃÐÂ˺yE2:I¼½ÅuX9D'`ÈÒÅÅÇËÍÎÍÈÃ_A9NAx¼À»Î\b)R9£ÆÆÈÁлÐÅ f9DFC Å׫qU2>N£¼Ì̺O.5J!M5D`¥ÈÆÇQB<K}·ÈÂÅÍÒ¾»¥YG19A¢ÅIJSJ1CÀÊиÊѷɼºâ\FKC˺ÂÈÀ~<@'Q:4L<B"._)R>WËÇÅʬ|E?7y¯Ì»ÌÂÖÄ·±d9=Mw¥ÌÎ˹®A(3NЮÕÒÔËÅ¿WV/.fÃ×ËÓÅVMVITÅÏÌÉÇÇÊÊÇÃã×ËÉÆи0DFEsÉÊÌÎÂ9?$I<GB;Q»ÏÂÎÍÄÂÀÁɯK84E-L#M3ESi?*,ÅÈÃËÁÍÈÃÂYF!,z³Õ°ËÈÊÈÇÎÅx6[3NÏÓtL-Y0Oι¿ÖËÀ¼¾ÂÆÊE.H4ÅݪÄbI%>5ÈÉÂÃÌÁÌÂVH(F6«¸»Ò~F9EPv°ÅúÁ¶}E;;E at B(`¶²ÇĪRJ.; ÂÈËȾÃÀÚ|O4CK\¯ÁÉÈW#KRnªÃÒÆÇÊÊҶ㱤FMDÀÄͽ°yT!Y0\DA5(28G!/?3UÁÌ¿È¢}A=8|´Ð¾ÏÓ¶ÍËRV6RLι¸Æ8D2WÛÇÒ¼ºÃÔÀ8;XMwÁÆ°¸°G.//W©ÑÍÊÆÄÆÌÐÏÌÍÀÿÌÎÁ8QQInÂźÞÂV =37?OI\ÃͿÿÎÔ¶Öº¹5*DS.\-V8N'18ETJ¿½ÌÇÁÉÁÊÌJ6bQmÏ»×ÊÉÏÁÆÉ¿fP^9!
ÄǼTG6AKÍ̹½ÈÓÕÈ·s43BL¼¸ºÖfX-M<®ÆÎÄÉÇÄÉÁ[P0BL¼ÈÊÏr^I7'ªÅÌËÖÂq#O?
'I*iO¶ÓÅÍqT&LK¥»¾ÉʾÉÔ¸BBAÄÈÁÉka56V½ÏÏÅÄյγÏ/Y6A¿Î׺¡iV:@,7)M;a6*e9W'R
»Ñ½ÇE9HtÆÇÆËÅÂÊ»´O=;Lk©½ÓÌÇ¡2N2QÑÍÂÖǻŮ{AH1tÃÔÌͬOIVHQÆÔÀÆÊÉÆÈÐØÈÁÑÂǺ¸8(23^¼ÍÑÈ¿¾JDCF2M at ASÄÎËÍËÄÄÑÆÍ G:E,@<5L)F\GJ5<E°ÅÏÄÃÇÀÍÏ QG I[ÊÇ·ÈÈοÆÈ·V?75Sÿϰl.;8E¯¹ÏÐÌÄÁÁÅÄÀh?32C«ËÌÎÀ{9O2K¼ËÆËÅÂËÄG-P7X¤ÔÀÁU
WJ±ÇȺ¸¨{R31e"M y¾¼Ë½WD<4½ÇÀÃËμÐw9C0a½¼½ÖÇ}A!TEÍÁÅÌÅÁ¸ÔħL.N;ÍÁÈæPQ0E+jII*33,^$)<DH}¸Ò¾Ì¢A5ErÄÅÃÇÉÃɺ´O;7QI¤É·ÂØL-EPѱҸÌÏÛ´K=6V[¹ÄÉÙÀF+*.X¨É¾ÈËÍÉÃÃÇÍËÄÔÆ̽½?NXVwÇËȽͼh312KZ7=MÃÈÌËɽѽޱ®9E@$E2A=.<9B-J?X¿ÏÊÂÇÊÇÌŨZD at J0ǦÉÇÆÉÅÇ̲RM*i(ÃÃиVH3HEzÈ»ÁÇÉËÐÏ·7M:TT¾ÀÈÄÃVQ!E*z¯ÁÆÅÈ¿ÎÄp.89?W»Ï³wa&G%¤½ËÐÖ½S1M%3G4
£ÎÈÄu_.S< ÅÉÇÉÆÊÂAQ4;¨ÆÈÊ´«:FAD|ÀÂËÇÂÅؼʧx$D3IƽƺP(C980"9HP+L#KZ&OE}ÀÏÂÊ£;:8·Ñ½ÌÖ·ÌÊQS1Ri ÉÚ;«BA?RÊÍÌÂÑÀÃ0C23<uÂ˺¼¤TLYMXÃËÍÆÀÂÊÍÉÃͽÃÃÎÌÁA*48d»ÃÇÅ·Ï¡b3K6#DKUÈÄÊÃÀÔËÎÈ΢D8<G6HE6C9EM2L<M¯ºÆÃÉËÌʾ¹XQ#TNÎÒÃËÉÂËÃÎTSB.dÅ®»Ër=G:%R¬ØÌÊ»±¿Ê«}4R"<W°¾ÑÉÆrR,J:[°¾ÉÀомt<T3Fq̼¼ÖD7E(vÈÍÁ·ÄºI*V&W(?d³·Ï¹YBD2£¶¹ÌÒÅÐÛ=:&=N¸â·ÚM3><O¢ÁÏ¿ÀÓ¼À·DK#PO¾ÆαO2L8NNK<:6H=J:>!
9A|ÉÊÅÆ¥vB?<¹Ó¿Î¹Ôȹ¬\7CFXʻĽ$Z!Q¸â´ÃÍÂÎHA+SdÏÊÀ̸I125\¬ÑËÊþÂÌÏËÅÚËÄÊÄı6LIDqÉÊËÌÐËÀ$68SJ=IQÊÆÕÏÎÅÉ·ÚƽFF1H-A41A8J6F7FS¶ÊÈÅÈÇÍÉÀÎMJ=N8¿ÆÑ̼ξͦT7=:^¿ÈÅË{63SH;¿Àž¼ÐÓN)G/P¨ÉÐÅÁÊ|Y"R<A¹Áоؿϲ~F&U!°ÐιyE4)T¥ÃÌÄÐÌcR*O1LIW®ÁѺN2NB¿ÉÆÆÁº¤yN3M;VÌËȺÀI"T)D®¼ÄËĻ߿5!U*8ÊÂÌÁ9C>E$S=PRQ:EE?K-S2rÈÃÊɯzI<JuÅÄÂƯ½ÎÓ\G39x¤¿¾Ù¾;M&eÈÉÌÐÏ·¦X3<Z-c§ÏÄÄËWDG=UÆÉÊËÎÌÇÄÃÄÆÆÅҿȼRH;0bÀÄÅǾص^=Z;ITVÊ¿ÌÁ¾ÉËÉÕÇ¢73:9G45CCK.W*U8¹ÈϾÈÃÆʳ¶k2C4KÇÄÀ¿Ý½ÉºlA7A1¹ÁÇÃDT2+ at M¨ÃÐÉ»ÏÈK997F,§¶È½ÌÆQX&KUÍ̫аÂm%2[*ÅÄÉÄyQ/J){ÀÇÅÆÇ·Åu#-J(-3g»ÀľO<-.ɹÔÁ˱QS+Q+L´ÊÊÊJA@'LyмÚÃÁÔÀ«|?J7?WÅËÁ²}I2E7ȩöÃÍ´¾SN&EÆÎÄãk)J+v¯«Ù½ÊÉÉȯJ1AQU¡ÈͼÂN4HUÃÇÇȺÞN X,Ci¾Ê¹ÐʱWD;BGõÍÃ×»ÊйÛÅæÀÙÂÊǺ<=EwÌÇÊɺÉÀ6;;>Q/5LÃÊÅÇÉ¿ÁéÂ˪7=B9.4I0U!N"X!KOÀÅ··ÍÉÂÅ¿ÓtUV5V+ªÇËܺÃÓ¼AB?4L¾ÛºÎ¨2@;@@ÅÖ½¼SK0;:K«ÐÉÄÈ˧YH)7.L°Ë¿½»Ëv;aCOÀͽ»sN2T3·¿¼ÇÇ¿Âu<M- at O@} Ê¿Ñx]<8PËÀʹ¼J7E"C7s¶È«Ò¿µµk+3M-K¿ÅÌÉÉ¡`/(a'HÆÕ´¯rY+JI½¿Ï±¹¾ËÚ¡(;P:k¢ºÃͯwB4T}¾âÄÇÓȺLCO at R¡ÄÈÁÈC6;XÄØùÍV1Z-*KpÀпʾª>1M/bÊÐÀ¼ÔƸà´ÁǼË!
½Ç×Á'NNR|¿ÃξÑÏÂTKN at CEFTÅÈÅÉÎÊٽïL>/O6@)MK;>:@@KÆÁÍÅÍÈÄùÂT-I*NSÆÊ
¶ÆÀÑ
\K3F:¯ÊÉƾÉJM34)EP¬Ãµ¿¦ULB3C>V¿ÃϼƹoCJH5Yh®ÍÄË|22=(2UÑÓÀÁxM.T2{¿ÆºÍÇËÄI?:7.2`²ÅÆ»H0L92T5BBK5>-K0 at CÉÆÁÊÑ¿mDI>1F¹ÑÄ¡ PJUHAÀŬQF-2IÈÉÑÐÎÊdz£NJ*Hj¡ÄËˬv/6Pw¤»½Î½ÊË©YH9<X¥ÄÁÅÇ2L9\~s{S?0,L5hIs¿ÔÅÊÀPM+IN¨¢¸«¼ÌÈŽÂÛľÂW3E4UÃÉÁξÈÊ~=7/=IIWÈÊÇÉίÊ×ÍÔF5#F>D=^PE+Z,DB¹ÀÉÂÂÄÇÈÄÆÉI:48F'|´¼½½r>/+1M/·Ê»Ê²ÉfS/G8!;4CQc\&>9J;4N´Ã̽¿¾ºx.A3$7>X¡]G.\!ETS²ÄÅËN)N/{ÉпÐÀÍÄu76*9Hf´¼ÊÉILD.?'21/)Y.Q>CNÇÂϱÉÕÈK$@+:5¬Ê¦½~&R-'?PÇ¿ÄM<O?g©Åº´ÄÕÃÀ»¢O=F)KÇÈ¿¥xPE3r½ÑÕÁÏÂÊÁVN7EZ ÇÂÇÆ1G=5B&B+*"KE<H85QÄÎÄÍÇ®EM at J(4JZ1N8S9E6*VHP»ÇÀ§+N:Kw¼ÎÖÀÛʦUX at 9;>QÈÎÊÈÈÏǵįË'4e5<3 at JFL@<7>L¾·½ÇÌÌÀ·ÃÒÇ\7J;,<I2nbUG?8QB5MÂվ±uL l[?G7I66/<;-;JÈÆÎÈÑÆÊ£IK99?-J3AC!E'([(ÃÖÊ¿ÇO&M7¾ÊÁνǽrI.?T1~£ÉÁÃM%Y83OE87 at 0=2B1AgªÈÅÈÓÏ»¸6V8U5=9¦s8I4C9?XC¼ÉêHC)8v¥¼ÒÔÕ½ÇÆÆqDU0CÇźn5/Q|²Ê¸ÆÌÂÌÃVK0PWÌÈÌÆ£E5B&AL--RT'6,C/Ak¨ÐȾÍÈ¥Z<,<4I/,C(A(E:KW#HkÍÃ̼C7KH^ÆǺÄÒÂ902H;>PÇÎÉÇÆÐÐíÍɬ@Y/K*F<>^9M09J(صÉÎÇËÄ·ÁýEO.I*R98=G;9B(@9^¯ÅÏËÇܱQ[,4#7!A%-O at D)MO°ºÇÁÕ¼²¼²\=1<ET&%H3>48V:0¸Å¿ÁÄ~Q(J6±ÀÆÌÄÅ!
½ºnC=?9%mªÃÈÑ~WJ&C>864=J;@D:(HÄÌÆÈÇÂÅÒ£H&&7C.>5EKQD@>14L+4±Õ¨¡3>HM»¿¼½¿ÁÕÇ»©²N,TOÃÇÁ£cP<6xÇÝнº¾Ðά\D,X^ÓÇɽ*L#0B5B0I/#UN9>I¼ÏÄÀĮ̀F at DS2G5H<D.\F9-2^T`½ÅѲ9C3SwºÔÙ×ÔËÅÇNH@@MJTÅÊÇÈǵʬÒ±5)AE at 0S-J-4;>O]¦ÐÅÄ´ÆÑËÒÇÓoG;&O*4Q3:L L5#;Iv¹Ë»Õ½¸Åc8CW._;3P91L&1JP2ªÀؽÐÌËÆu63A*23D946N@<VÐÊÑÈÂyT/H-»ÀËÃÊÆÅÊ?/:1^i«¿Ë¹£GC9%>"7D=8-4H>7W¡ÎÉÅÂÎͯ¢?WB#2HD*-E94$zG5JÀг<:F?zËÓ¾ÇÍÓÃÇÑÀ4E at 8t¶Ãʲn5;3rª±ÈÈËÊÈ» THKI_ÕÀȺ,N?=3?+B95I9%9SPÂÅÆÉÈȯL48,K4K,>@(8I&XM30nÏȹJ:@N`½Ë´Í¸ÄÈÄB2:HLITÅËÉÉÉÎÔÒÀÎRO@"QI R8IH5I5PPȼÌÕÉÒ˹ÅÁÍN+M'TH+H>F8(SI<¼Å˺À±ÔTN14;-)1C:-K2S%EZ¾Ê¹ÄÏ¿Áº¹v2BTXX%R.=N1;;YKÏ»ÈƸoU6L+
ÌÄʳÅÀÈÓnS]1Rv¦ÅÀÄySB>>=5R67KK2:F_ ÅÄɣݾ¨ËÇ?-2N3M9UG3I%YqEOR¿¨ÉN*<LÅÏÍپǽʵ»¢HH?DÉÊ˵tH"]y·å²ÔÃÌÍůV at H(QÓºÐÆ¢)W&A9C48&H*E5[y®ÉÃÍнºªB\&X-<I?L4K83M.H<@»¼Í±NC:WtÄÙÅÌÆÊÄÅ[OPQ;<MÅÏÌÉÇѺмͶ3651ON$@?N.?4H-´½·ÈÅͼÍÇÎͬ\T.6P11O-D,(NT.K¸³ÊËÔμÅF0WK,Y==P,=>3ZÈÏ»À»¾Ù¾ÊIG?$3Q+0K$G8=0ÀÌÁ¾¹ÂED6@Á¹µ¹ÆÏÈ»JF at J_ºÈÊÊI4<=6 at 32J5@*)^,ÍÁҧݷÀѺÈz<[,S(9H)LJVo{O>ÆÃÅJ4WHÇÁ¿ÄÁÔÊ!
ϹÐHCL r¾È¿¹f1G>t£ÇÉѿɼʵH@/RR{¾İ8O)A'9@@$_:5>I3sÄÃÐÀÅÄÇKV)N0B&)
F,C
0:N;N#aKÇÇ£Í%6FH[ÀÉÁÉÌײÒM8,2FOÉÎÂÌ»ÆÉÌæÄ©J1HN,B=NJ<K6<=C?¾ÊܾÂÊßÄÆÉÇÆg4K7/81O<87YIM ÃÐÄ»·ÔÁÌ}B.-G)/G3DH-FªÐÅÎÑÒàϻɾJ+4>@6H&N09ENÀÃÅÑÚËqa1;:®¾ÌÌÆÅÈÌ¡1C11¹½Ë»M-D64M'E8>5-D8PʾÅÄÏÅÒÆÍÌÆ
+"A1@)A%d7¯ÁuF*¿Å¢}FT9;ÈÀÀÈÎÀÇÈ»ÇZ<+S¸ÎÅ£oK=9{ÆýÀ¶Ò̾¬j`FKQ
ÂÄȺ>'5DFK)9 at 9f)BNËÇÑÁƦTF/H0?B70U0NMM-[S_²¬Ü®*UP>rÈÒ·ÍÇÁÊÁ·/HSHIGÁĹÏ×к޾Ƶ6H=2-F=@0>CG.S.Z»Ò¹ÂÖ¾¨¼Ä³¡S3&HG1K$I=%G:I¤ÊÇÁ޹ײ§ÉR8JG+?K#N)8N= ¶Ï¶ÐÂÁ®¸ÖΦo94D=4 at H^*=BY¨¾ÄÃÃËsT;/B{¹ÃÎÍÈÆÆÅ£sK&4<|¢É¾ÏLC5;>.P.7K%<K7¶Ì½ÌϽÉÇÀźÉ
N;D/AF(N*GOZ¤uUG±Ï©=9 at DÈÄÃÈÍÉÎÃÎÇ©rBJIy»ÃÁ¢t<0>}Ñ¿ÈÒÓÀ¹¾ÄM. at G
¸ÉÈÅ£B,A653,K0.J)T6¼Ã¾ÊÀÌÊË®GD;T-A?U7-C-i1YO/qË̳¶]?/>ZÒÄÈÓÂÆÂÇÁO9B8DVÕÖÄÇÂÂÏÁ¼Ë¬<HM'V9 at E/VG8N1K>ÈÀÁÐÆɺÎÅÂÃÎÀpLE?-+8J5';<JhĺÊϲÖÈÑÏËÂbP(0Z;*B>QF8Y»ÇÎÀÑÂÀÛÅÄÈÔÆz4>-68/=90G\ÄÆÑÌ¿ËÃE?4Jt¿ÄÇÄÄÇƼm`2OBt©¹ÏµX3T>0O8:Q&W<9k¦ÇʾؿÅËÀØÃƾ¥yB29*L)L/P&Õ60³Ìc/7QQÁÇÊÆÆÇ¿¦Ì¼¤y>S4R¬¿Ë¢sGGJxÀÃÈÈÇ»ÐϹy9<JB·ÒÅƦ+LEJ<0?2F;;=\NÎÏÆÎÃÍÆÁ£NC/Y+DC33*WCK'.?.F`ͪÛÁ<6MFw²×ÂÏ¿×ÀÈÃ@2?EJ²¹ÅÔҼܯÝø?@)_#Q+1K9>F;I2QµºÒǼØËÈ¿ÔļçÍI5G9!
7G-DK4Q:¸¾Øν½¹ÀÆúØg$U.-:R,%-CÍÊ¿ÅÇËѸËËÁ·´S88M6>S(<F~¿Û¼ÉÈÄ¥ÇyYBTA®¿ÍÊÁ¿Çζ2B4+v¥ÖÄÔG?,4$R D3,F<I½ÇÁÊŽÁÀÈÓÄÕ½Ä+C1A,Y+BV¯ÄPCÐÒO at JEQ¼ÅÊÇÊÏÏ»ÚÌÇN$IQÊÜrLF1t¾Úɾ½ÇÚÀ«SCB-l®Ì´¯6L'@4B;!Q-?BNwÀÁËÁÊÂÍÉƪGMB)X-56VI%+M%YA`/{¾Íä@/0P[ÇÄÒÅÀÑϽÌUCPLZÊÑÍÄÀοÌäµÏ5A29N6?<:/?;C>@F½¹À¿ÐÃë¾ËÄͱ½]#>S,B830Q¡ÅѲݺ·ÏÂÔÌƾË45DCF+b?W}±ÊÄÁÌ¿ÅÇÇÑÇ¿¸Å½w:BI(N/39eËԸʽ¹ÓÍsE648ºÄÍÍÉÅÁ¼³fPPQ¥¿Ê¯V6N3F<X:5R0S¶ÒÆÁÛ°Ó½·×¶ÁÇ»¹ªrZ`#Q:A3s«Å·19¿ÂRNDPjªÇÆÅÃϼÍÉúÆ@NKRÀФ{DA5ÀÐÀÌÑÄÂÁ¿T0R at zÂÜÌ«TA3@,Q2N:8OZÇӹɾÈÂÍÇɳWABG=7P:!0=U'O)TPgÁ¬Ø¶9[KAÀÒºÁÌǾÏÇ©=3Y:F½ÈÂÁ×зÎϹ«E6T=L0U/MCBA5I4MµÁÐÉDzËÏϳÍÈÂÑ¥mZ84QN,2V±ÐÎÃËÀ·Ë²ÇÌÄŦж}O at 4=>M¿ËÃ×ÐȽλÇÀ·ÎâhK5$>N\¨»ÊËÇڽý¼ÈÈÖ¸»ÈÍÉÆÃÅƾ´Ð´Ò¹±ÁÄÏÄ×Á¬À½¶³Â»§¿Ã¸ÂÃÒÉÆоËÌÊԿ̽¼¼¼¼r3F(-D5
ȬTI¤Æת ¡ ÃËÆÆÀÊÅËØÂÃʬzm|ª¹¼Á|¨Â¶³ÄÄÇÉØ¿jnpf»»Ã¿«JI\bLY?WWUqlѵÅÌÚÌÒÅÈ»º¦TRT8f=UP^WUEQNVNGVP·Ù¸Å[O5KnÈÁÑÔÑÅ·Õ»ÉXQ=9XÇÌÎÂËÅÊ¿ÅÅN6N81<W'ON3J,K1Á½ÌźÐÁû̾¹»ÂÅÁÈSH2DPÃȺÀÉÕ¤ÓÄÂÏƵ¾ÄÉͶ¬WQP"iÇÐÃʲϱÁ»¹Ì¤ÐÈ·ÐÀÉÉxNSCQº¿ÆÈüůÑÌÇÅÛ±Öк¿Çȼ!
±¶ÆԽϹÒÓÂÒ½ÅÂÂÅ¿ÊÒ´¾Ö¹Æ¼ÁËÐÈË¿ÆdzڤÉË®Ö˳³Éضª~-2O3^þθ¸Ç¾ß±ÆµÐÓºÓÄ
Ä¿ÅÏÃÅÅǼÌžÈÀÈÖÄÊÀÊļÊÀ´×ÏÕÇÀÒ¾»¶ÍÄÄÈÁÄÓ¶ÏÒ¿ÀÔÀº½¾Ð¸Ó¹ÁÀÍÏÇÁ¹ÅÁËÆÏÀ¿ÆµÓÀÇÁ½«¿ÊþŻº¿Íà¾Ê¿¹ÈÅÁ½ÐËÉÇÈ¿á´ÁÖÀ¾Âù׹ÑÍÆÅÌÔÊÈ»1M*9A+T/V#C8B%X,ÅÄÒÉͤÈÎÈ͸ÁºÌÄʹÀʼ̩Àн©Ð´Å²Ø´ÙļÊξÍƤÆÉΦÆÅÇÑÈÃÍÏ˹ºÅ×»Ô̼ÊÅ¿ÏŪµµÊ¿ÇÅÁÖÂϯÂÆÄʺ½´Ë¼³Î·ÄÇÄÌĽʽ°ÓÀ½Å¿·ÃÙÑÃÁ©Ï¸Ç¡×¿ÕµÇ¿ÄģѰ¿ÍÄÕÅ¡Í¿ÑÂÁÇ»h½ÁØÂÄÀÆÒȹլϰÛɷܹÁǾѫ¾Ç¹ÂÕÔÂ̺ʼÍÓźÔÁÕÎÃÁ¼ã¯ËÙ²ÎÂÈÀξ׹ÒÀÍÃƹÛÀÍÀÛ»ÇÈÂÇËÇÄÄÃÎÊÀÕ½ÆݲÚÃÏËǢظÈÆ°×ÀÀÆÑ˸¿Ö×ĵÉÁÒÃËÈÂÆÍÈÃÅÅÈÔÈËÁÕÒ»ÇÆÓÈÂÀ»5A8A?F4V(UA>+F52G?L:EI`O;Q9QSWGQHO6B8SM9JMOBX=LYT?BK>YPAeOOKKaLHUGNNJQPWVZTU at MUZFRMUO\AgbR`EQVF]tXlNebYrKnfbedu|n{tizjr}{flmyz£i¤¨» ¢¦¨ª¤ ¶Ä¹¨¡¨°½ªµÆµÑ°¸Å»Ë̤´°«Î±ÆÊ£Á¶±«°²Ä£Ï¿Âº»É¨´Á¨±ºÃÅÉÄ¿ÂÀÌɸ½Æ¹ªÑÁ©¿Â¥Â¯ÏѺ¿®¾Ø¹Ïŵ»Ádz½ÂÁÆʹÇÂÁÊÂÄÈÁ±ÅÇкÆÊÆÀ»¼Á»ËÊ»ÅÄŸÉݾ«O at .P3D&`P8 at .^+L/A*C"IV#;+D.4MK.C4D46JF(@!9=-? :F3<</1/)R5) 6>62,9(D(B.7;25<:+/@8H4IE?&J)XXU:E8D<@1G>5?FA1MI*-:>H/Q6 at 4N+86L1B9C"P7=J:T2M at S;2>-$Q+3..AT0??HAK:C[,I=<>J8 at Q[A:>4P=OA`7IOIJ@I9H<F#M])^>HQ(;>N+P'N>FK>>E0J1MQ03JM2HFI$97F/5@/*BA07J<:UV8FdAE#9GHK!
.N4RGdE,hIA<DW;H=V;OKMHAV7XL]KIQ_=GEQVS^[L\QOCMF at -O4-BF5H4N,IFDT2<ET,4P=%6K,(::U49 at 0+A4EW6QA946>/MT,N&;W6SA"GL)@a<N#M1=5L4B7@ 4L8/CF&F 1G6S*N%71"G(28,(OQ3KM'#VE0@>K7ABA3 at 9M2*,;],*F%7IL2,;<(M03)R7,%L17#6 :S";I!%0.4A=H8%@#.0)? 5Z9I2$>D;S!U$C"4)>@F)@1W'+<1%P#EQ'(QS')T,7P7OEE#P6 at L?IU?8A>8(+J"YN>G+/S.(G*8=%B8?U79.>EPLB4>EBE>'12F-2PVRKD?>7I4RU-BC57F=39N2E?ML,9'+*7Q!;/G!:XF 3G<)$4N"-SQEQ&/H?8%=W*2I,-/I'56G1<";N@,%7H13?6-)65,DC9('E4>>D5-:9>,.82,H3DC14/+3A#G:I$A6/-$9,?%*+'K;EL'C%E!2"C&@10$V31/D1>:90N'%A;I at 88A4=!*(L$J8FK5@#(("g$L,$L'8Y1K;<3(@(8-48?6C4S202P>*I"32/#(-86,>1)6&78?!7J-,:U@//<U17S+G2)Q(T(3AZ5%L1T6<D8:58N<*@*V',325>@B=<28808H';M1AK?3B2 at L0A>@>,S6>>HE7*Y)PK@/5K*3$=T67(J0M;4=8<MD6]T*9?1O>8+FE@&1J9G$@0>1#G1EA]2<,=": AHI;:<E6;>87,D;'W2L.4<8<:96E5M&F0V55%(J8=4&@1F8723?*S71)F&6*G7A+B-+C-5888*'8%I.P---9 J.A6RR)+1)/LG$C&64P+M:=41A5B9168%F8H+G,>2.69J<7$$N-2C9;@0$?-,(NG&K0M&C=94A3K.*C73+OG8<&J(@:B@::'9+ at R1=KEJA<>6<++RUH?K784<+Z16K7D9=51/L7:<174T7%+\!
?-`.@;887L3Y #*M94%V/F3&:&0I+:6 @<2<D#<#I($H?,?Q,'QF?8I)(@=@ Y60#2
4'1:70M5++AI2.'-08,M4K111)&C#C&= @7I?(2@GP0(U%<#&/<1A(J11*223,,@/=932)J)H&3"8C%=2)5.6!&@d?V'9F(F=5:2<7(+$9H0+<6)U GI/'B=,(?54,87B>B<2%1G<,8W..W>4)@/J@=595"F%$U6C#1,D/7.63C44GH3I6>J5?#03 at 3?<<@7H4U91'#H2<,P2C4CC42/;M)H.&#P>-1(RB#!bE!"S4-61D!/U2N1-21L=$0K87A+R at 5@E"J+3<3;?D;7?N3M/N0.'4*?@E1$M0(&Q4;-V(.=.;$;;%-%N*W2-07)1#.A(3I)88=5:&.$-Q*59U&4&/H5??+4F9%/?632=(&*A;C)E.4(5D7B!?)6;1K"I>2Q)$/'I27I,552*F/E;*..I;)J+*@;6D&B9J912139</28KO2,H1. > Q,J*G%*B731H(=0L6 R-V!B3NV0L)-T+5H4%5&%L%XBA.:867,C>LE:S-=(J<7G<2AD-KC<&<L:ET62PKK'2;K).:S,WE=9+AS)',8EF8(C,]H8+Z6N5+C,DD7Q8CHX;2T,,1/P,/,\.T7+2>AN?/@8"7=)><8?.21*K5U&?"0 ;/:<')Z'AH+Q7*< I-M1J&2C4/<$E-9004D(1:;?P7G3C/6D;43)(:"4T(?1>07A+KD9..+*30S-P?55/?/R.B?00;@B4738CBO(:H9F,,5A/EE&;"[,E90.VH,!,N<M;)9061?7P@,=(>)C!T".4)T6 at -.9D/K.[($R-MH4;-5IIFG6I499393(5)Y,+/P.)`.56"2F::0%+6H1E,A9T1,AJ,A3 at 5E2?=7AJQI4&/CI;/%<:71K(O/X/S51E81.CO)B6QH3B8S3>88P3J9:7 0@?F3@=@.(=;/U83 at +B/G7F9H28B:3.3.03<1C1<2*16 at R97W:&Z8-<242 at .GC6-5 2";+*.+-:D/I2;27!
7F4.4*5:/1I3H:@J73?52;:B'<*@G1B:94D7<79?9C,3:37++/,1N+5K?8-49/-/:=Q91.:3=::PA9'<=E:@6<5M5G&=*75BNE6172 at 3@+/G25M;I60B(1.6;FCG=ZN%F$NK.ST*PKMG;$1°ÀÛÂεÁºÇ¸¸±½Àɶ¬¼¯°Ê¨Ì»¢¬´¯¦«·Ç¶«¶´®¨°¥·«¾§²ªÉµ¢ºµ®®§±¡º¬¤¨¡«±¾ewbqRrj\upomocZVcp\rbdmdcekej^eRXc\a`a5YN7L_SgMcfc^f5Ma7B`B>BPCG=GCA@=APIVKSPHEC98D&;=5+C-;DFK4XG7F>/>KYcBPZOAFGUDWLVYDTOQKLBIFFH>DXUSXMSTSKH?SGREPUIODWJTPJCLPHRDAW225K<>-146<.>+-:8B?T$P7?-7IC:-H:JN.9B&=R=E5QVQEB$A5967G&@*4I.+A"DD.PAÁÉ¿Ó´ÔÄÓÿ¹ÍßÈÀÊÎÖÆÓÕÀÙÉÍÞÑÆÈÔÛÑÄ®ÖÊÈÜÖ¼ÕÎÕÀÔÅÔÀÏÈ·ÃÃØÊÓ¾àÂÑÅÖÕ˻¾Ȧw~wvywq`i|vh~}oriiyqt
ypvv~~ngs]`NoWgpuzmxhjovoxhmq`^]cooqjbe\^mcT[^WeRkli`tpyoykx}x³ÎÊÇϺÈÌÞÛÛ¾ÀÓÐоÌÈÎÇÖÌÕÔÖØÎÔÎÇÄÒ¸ÉËÈƯÅÈçÇÐÆÈÌÀÐÒθÍÉÊгÇÊËÐÈ»»~pvpuvyi^t{gyizf{plmw|Xv{tvpxsb}uh^mtk^aswfx[%P?@4K90Z>V3(D^¥×ÆαɷÙÅÁ²Ë¾¯Âµ²ÓÑÊؽÏƲ¿ÆÓÕÐÏ̶}¢©·Ø·ÚÐÓÅÝÊÍËÒÇØÕàÚßÓÔÆÛÑÚÖÛÓÚñhjf{h{kq^hqj`{{ivhnjwqwe}rrwz|nfroL~ckx|tow©|{irtn{utwjwilnulc_anotrlWXqqbct^RMaZtom_kwhxoqu
m¦ÃÆÊÓÉØÉÌÄÎÍÜÑËÕÏÚÏÐÂÐÅÎÌÏÓÊÒÕÔÕãÆÔ×Ö§ÏÅÛÎÐÖÃÁÕØÙÈÑÌÌÎÎÍáËÖɳ±¾!
¹®vtyuqsf~bnpwzoj}g~fp{vz|}sy~
vrxpujp4/)AM1U2 at 5'ZU4Õ
÷££°«¿ËÁ®ÏÏؾ寯¨¨ª«yovµÎ×ÄÙÇçÈÓÁ×ÍÉܽоÍÏÌØÑÍÌÖϧrus~n}t||vzzm}u
v{v
~}t}uvwYehtp~|q~v~pr}}w}ww~yd__b`skvrgXZkj[RleNgOTdmykvd{v±ÕÅÛ²×ÖäØÖÎÍØÉÕÑØÏØÌÝÒÙÖ×ÛÒÚÇÌÑ×ÇÊÌÎÇÙÚ¸×Ðí½ÛÚÐãÐÕÏáÒØÊ˽ÅÔÍÓ¯yx|b}v~{|ztxod
vkrszftvy}r{yj{hwqn{x{{xhtkt'W1DA3SM(OMG:Z*Qwx{qnm¢®²¸Â¿Í¬¯¥¹{ox~~
fuËÏÂÎ×ÑÏÔÈÁÛÚαðÜÎÞÛÒÔÉÑÒÇ̹¨|ylpzujvZdkwt{xy}oxmuuyws}xnt~viqWqtUupprux~~ttzgvvwmyloox{mzblc_bffkpi^TZeJ]SWpoug`vsqsiÌÓÕÀàÎÕËÒÙÛÙÆÒÐÓËÝÕÓÉÑÎÐÒÈÏÒ×ÚÕÝÔÔ×ÙÜ¿ÑÁÔÐÕÙÍÄÊÎÒÏЯÐÙÙÕ½À±¢zm{t|wrv{}k}rlobsxk~n~vvwgruspyvq~j~}vor`\!48,"CA%59,82&=+{}¡}|puv|k¿¢®ÀÓµ¢Ä¾zo}ytzq`z~q»ÜÇÜÝÕÒëàáÇÚÞÕÐÀËÕÝÐ׿ÍÓд¡yo{fr|ZgnyZo|jqohaxhoh}iolpw_aIfyvzWlv~x|f}wjygyw}}lq
|yjQYtzqFiEPl_VersG_c^e`nuz´æǵÚÍÚÔÖÕË˽×ÞßÏÙËÙÑÛÚÜßÓÙÐÒÒÄàÐÎеÃÐàÓÔÐÝÆÙéËÑÒàÒÕãξԸ¶syzrv`gq
tuo|{zrxywq
oy}
omr|
po{|wvup:TK<X/(XGCYA at 2<Xl¦¹wvxsqt~vs¡¦©²¶ozfr~}ilos}{ªÒÅÒÒÏÙÑÌÏÚÌÁØÊßÏÖÄÚÐËκ¥
}soy|yogiq!
vvr}wzylp
k[h{~wqqiw}huWjwsns{|o±¡ª¾¾ª·vvynkf|rylry{xusti~qpSMuog_kPU2kA5`br`P[H`y~¡¼ÂßÌϵäÓ̹ÆÞÓÛÎ×ÐÓÖÍ×ÜÕÖÉÑÞ±ÙÔÇãÚÍÏÑÓÔÔÔÔ×ä¼ÐÛÒËԸе®È¨}~uqzolyl|z{srs
gn}wovjmn|_umjwyty}yzrl}{rgTD&'F"2[#E*>=U(*fqbdoxy¿Æ«{qvx~{s}z|}trouÄÂÔǺÓÖÈÃÖÎÌÙÍÓÄßÄиÈÙÀ¼|rjsuwxvngjrxyvzwy{tlrijv|rpvu]jq`qvxyz~zµ³º·µµ§»¯ x
¥{yxwywwwy|~}mulecnd\?nDeCZ[ZUXQ_bjb_iv©¹ÊàÓÏÊØÛÕÑÉÕÙÜÓÔÒÃËÒÑ×ÌÂÅÏÖÎáÎ×ÒÛØËÆÍÐËÈÏÄâÙØÕȬ޽¥}vx}|wuwhe{oy|t|pywxz|{t~u}|yzxyqwfp}{YW4CS<0O690EWB' 6Zqsvmq~k~
}pn«»jl}|vl{}\otqy¤µÕ¸½ÛÖÈÝÏÒÑÔÔѽÃìÇËÀ¨ytnxlr\bn|
wl{}}yssx~{wutnn{xxrev|n{x}zx®ÂÏÉÜÐÕäÑÓÄ·±·¡yugnwqsuvukzs]oieHUn\aFF[O\b at P[bjOlTIZpxxyÂÜàÁÀÊÍÕÔÕÍÓÑÔ×ÖÇÎÔÒØÎÖÔãλڽ̵ÊÒÈÉØÚÌå͹ÑÇÛÛ³¿¼³w{x{unwjvq{}xrU
vr{||jxrntwovvtovtr}~pqqu~`n(F&I3I'e/P,Q9ML0nout{hlrt|jj~wwx´i¢u{sz{t|tgsts}{y¯|¬Ö×ÌàÑÖÌÚÔÚÞÃÏ˺qs~|x
|xyrjgltz~y~}spvzysps}|tqxsuuw
uv{{rs}¿ÏÈàÍßËËÛÜвryuqqu{tvhqko]n!
N``R]LN9[ZfKJV`WPVgminz¨ÃÌÛÔ˹ºÊÍÚÈÑËÔÎÖÐØ×ÏÓÊËÖËÐÅÕ×ÚËÓÓËÍ×ÕɳÏæñÈù
©°¡
p{r}stxy|sxpuywrt_dn|sxpl}eyqzst|wloqjy{rzns0=W%?XEC-V0/J<Bpqiq[r`gY~ep
zo¤s}w~|s|powutr{ut¢ÄÌÈÚÓÔÊØÈÏØÀηͪvwyq}|~nlr{~ug^u{xnkuvqxopwzyw|rus{{krzx}
}«ÉÑäÆÔ×ÖÔÐÊÓÚÚ¹³»¢x{||zz{|}rqzshOgjZdQSiPDRRdLVV\jqgYbv«ºÂÖʸÎɼÎÍàÖ׿ÎÎÔÏÄÏÍÊÍÈàÚÝÒÕäÕÈÉÑÖÙÚÓØÃÂÊÕ³«orrx}~yk}eivj{j|wng|t_
jd
m}{yxq}p~fy}mnhxtt\@A,P,2.POKX/K'JT}xtqrzxprxv
hx~{{v}}s|xpomvyr|t}xu¬ÓÔØÓÄÃÒÈÓ¶ÄæÓ½
|l|qtcsssrqsvyy|yssxxrov|sntwoqzsx|xµ±½ÚÖÖÄÖ²ÄÌÙÒÙÎÌÎÃÃÅf{zspqv}zqoukMohtZWh[fNY\X`NkZ]bb[V[eby³¸ÅÇÑÇÇÇÖ×ÛÓÓ¿ÌÊÎÉÄÖÛãÊÖØÏß»ÓÌ¿¾ÏÜØÓÔ·×ÛÙÒÂwwwhpfx{vywoeq
itwg
`}xz|w~uq~tymls|owynxkxp~]F:X8(hN%@K,>K=p|kwksopxnk|ux
sor¶»mzx~xoyws|zx|tgcu}zÑÉÈÒ¾ÌØÏÔØÒŪzrswvzyzyamz~yw~|zxz|xs~wnls{utr|w±¹µ¹ËÌßÇÀÃÏÖÝÎÒÌÝÕÝÌäÉÄÀª¢oruxz}{iy|xtqe^JZrG^NS[ok_W^`_^`c]Til¡¸µËÞ¹ÀÔÚÜÍÍÎÉÓÍÓÑÍÝÝÓÊÈÊÃÛÐãÈÉÏØÙÎÀ¹ØÎƳ®pr}swyxsqtz}|zwc|u{yyz`rq~r|ozrzs~}t~wtsto7?$8J#O=?:Z?9Q80j!
~x|g
}Yt|xvso}mpuim«srxq{x~t{
v`dsvtw{sk°ªÓËèãȽÆÕÈ®
u{|qshq}xrrw}ytruxvqnppsyyouv
xo}vlx|~ºÓÚÌâÌÝÒÔØËÈÒÃÏÍÚÄÄÚ´Ø×·¿¯{yxuqw
hzxiUjal;bKdj_]BbZjqspqqaLiZpk··ÎÀÆÆÝÓÙÓÐ×ÑÚÜÔÙпäÀØÉÂÜÄÌÓÓÌËÓØÖµ´ÖÖusow|ozysmzywvxmvyxq{yt{|lvvotwzqn}tkuwxtw}wyw|wqm%\0W&D="H>&4-D6Qlwt|mcpc{vy
wE{`fvpz¡zypv~yv{yprzzhijvu|~¥§ç´Ó¾ÚÝڽâwywwu|ssn}q|~o{
u{zvw}ys{|}yx{~wytjkv ª£¸ÌÅÍË´ÕÇéÈÔ¼¾ßÏÞÖÄÐÔÕÎÁ³¦xq|||hfUrmk|lc`YbzlBBTV[dQcx_uo~htnrcv}¥·µº¾ÄÁÍØ´»ÒÍÓËÀÓζÌÄâÔÕίܪÔÈØÉ˹ÞÌÄÁxuosrl|n}ymYtlpynvkmlxy}yz~|xv}t_k|}y~xb|yuqsy|}puh\2-2F5G6T9B?M<:!?gvwxuqqpxTmto|ju~yxwy~yujql|kyos
\pqmp©ª °ÍÌÒÖÎɺº§|g}vp}twjxxv}wqpx~{soyxwvvvuuxtx{x|¶¯¸ÏÍÝÚ·ÜÊàÛËßØËéÚßÄÛÍÈÎÓÓÔο°zpj{m
rwcn
x{tuqlp`[eiCH`h\ktov}u}uzftr~²ÊÑÑåÏÀÓÑ×ÒÈÖÏÏÕÓÚÃÁÔÛ×ÀÙÁÑÊдÁ¹¹µt
ymsjfcbjdyzwkwtv~}yk|tz~zztxszp{otlwvzsimpe}rfmz{sqJFE=/'S3E(7<-:?`sdx}wzmuzRusxrw}ny~y{xmzt{q~u`{mtjsrp|wy¶¼ÕÎÕÍÃÑ£©nvjvszywy!
pvZ~xyxwyzrh|yvx|}yuxy
~¸¹ØÇÒÞ¹ÖÀËÎÏÓÒÕȽÄÇÎÎ×ÔÐ×ØÓÎÕÞÔ¼¹{~k
{s}pp~ykpvsolL;[GUV]RWppUqssrtitgwpx¦ ±«ÐÐÁÐÐÖÓÌÓËÙ±®¯½ÅÊÌ·ÒäÂ÷ѽجirrwnluszuvzqywtzoxzkx|{sx|zyt~
|w~}xwrio{}z|szq{w}vxyoe89,=D3TI:=HD?*:m
}uvrwovxuij}uxq}rw}ttzwygulqvtxenQg]ffrrt¨¾Ô×ÅÐÁ¤}ws{nn}y}vawr{~}rsdhsx~|{}}z|}{syÀÈÏÜÇÔßÂØÀäËÚÏÕâÉÖåÒÜÓèÑÒÉÕÜÛÝÛ£®µ·£vu}jvpzstmxtikmmpVrh_4emi`gk[du~{yqynqukq¬Ì¥¨¸âÇÇÏÐÒÒÒÑËÙÄãÒØ××ÝÅÒÀ¸ßÛÚ¥½}vosvsl{mjxo~ztwm}t{xeymwozxjvvzuw}{xx{xzy}~wqx}vv~pmsyzy|n53+B0ED@:1Q=-5<Gq~rpjtqyx}clp]i|}wz}x{ur~igyuzu
~{z{{rtWgXhepvuj°×ÛË̸ st|tmy{tz^|yi
ljkY`r}wy{{yxy{t|{{¨½¸Ù×ÃÉÕÔÌÛÄÏÙÊܾãÊ×æÅÒ¿Îθ¬´ÌÜÝÓÛ¯¬}vwzwoululv|}mfq|w[lOg\eYzeO|c{up|vyvezÁÒ®¿×ÓÓÖÒÒØÕÓÙ¿ÔÁØâɧºÙÚÚáÉϹy{{x~m{p}okshv~syoys{jrw
|nwwzvx~}vuruuzxywrzwswu
z
pww<=1I6I"W"1)3FI>5nvwpxpwruliUaoyn~z}t|
rqrm{dx
gpY\lbiuswryÇÃÝÆ¿½£shjuozvz|xu~n|ykmwxmiqwtvy{yvuy~~|x¯±ÑÑÐàÖ½ÈÍÐÊÂÎÂÐÅÕÒÑÕÎÕÖÝØËÖÝÙÎÁ³§ÔßÉÁsxlzscz||~nk{mg^sQC at hEs`UyNpson_ol~|{z³ÅÀÖÒØÏÏØÒÖ¹ÐíѼÂÐÐÓÐÌ×ÞÌ»vz
!
~d|twvv{wxmzsxp|rl{xtx}ty{z|xyzyz|vz|ux{u}}~z~a(;2AO=J*PPG;(/<rwzx}swmqlwu]n}tpqz{v~zxzlu\xShaHXL\OXs{µ¹ÚÂÅtp{ei|rv{v~ozk|}opstsqv}{s|{zxxz}
~xz
¨µØ·ËäÔÈÑáÈåÅÔÒÑåÉá˲ϼ×ĶÆÉÐ××ÒÓØÐËÄ¢|yx~srv}tputqzn~iS[v`=UbZib[puyai`vt}az³ãÓÏÛÎÌÖÌÔÃÐÌÏÃÑÛÎÐÇ×ж¯¡vmz~sofqvt{zxk{vun{n~k}wpsu|sw~zy{ww}vqyptyvxvv
x|~tx³´¯h'?H.;+KMAK+=E,4G}tmihi|rh{rr~vt~nzz_tqxr[zu}s|ep at ae[iPTnvzxy|³¹Ñ̺·luc[yks}dylx{wtnrrpprwyzzttx|}~su
¹ÑÂ佦àßÅÓ»ËÓÙ×ÁÑÞ»ÉÍÒÍáÑÛÒÎÒÑÊÍص˾ά¦{|oz}pr{vrsf|rt~oA<^gA?c:egiqkvntwle}r½ÔÑáÓÏÙÍÖÍÙÉãÐÏÓÄè¿Ã·ª¾zvsv|ojx|ozorxupv}zy{rtrvru||r~{rzs|uuvsskx|¡µ²£
9A<-@=X)9IN>,74Boqxwkkjwo_tq|pkrz{y~jsl{~l}_aSbaMR at YW]fd}z}¼»ª§qo`iYkuts}opr|g{znmyyjqykfvsu{¢ÄËâÖÑÖÖÒÐ×ÌÔØÌÙÕÛàÌÓÐäÕÛÑÝÂÏáÚÎßçÎÕÉÝÚÃyuvrzpys}~r}qoy\ao]dfP\Yc]dm at kjsv`Cwkyv}¶ÎØÞ®ÝØÚÜÖÓÔÍÉÓãÑÜÈÉ´£|~{sz{zrgpkq}mnuiouo|u}rywz}}uyx
wttzx|u~{¸¯¿§À;2M?<I-?B822!
3C at Efq~
}nq~zkuhoftdmj|}|vuvqu{ryt
jr[Qb<GgM]HhF|t
}¶Ð·{xzcgbv}
ustrxvvsut{xwolxjjstusi
rmxzlrv
°ÄÈÍŵÊÇ×ÐÚÇÏÖÊÙÏÐÎÆÐÊÑÇ×ÏÏÒÑÞßÐÎÈ°Ú´ͼ¹||z~zpsx~nvuo`w\ig at UXgRT4J\Kgt}mV{xst®ÜÆÕ²ãĶÊÍÃÖîÜ®ÆËú|}v}|vz|o~t}w{}|svrtxnn{l{yryqv}zvuuy~}wxpy|~|ipsw¥¶°³¨«Ò¶Ö C8 at 6;(O;@4<??A?Hr{pzmcqwoqzw{t}zptz~}
z|ox}jrk>el?SPdndov{ps· zlux`_ey}zs{m|mvnwupvjs}ux~zz}yodv~fk~¶ÂÆÚÒ¹ÕÅÖÀÆÙéÅÛ¾åÌßÊÔÊÆÄÛÔɸ²ÀÓØÙØÏåÒÝÐÃu{zzsytuzw~wtrjun_OaSchXp`lDYSFcvwxo^jj|yz¦
©ËÚÃà¸ÒÓÔÓÍÈÊÏËĺ§x|
z}y}xlfyuxkij|xyo{nz|uzvy}xspptzzv|v|t|}uqxt¦°¬µº¾»ÍÍÇ¡9Q0/?H27?:DD>00<s~tpkwoxtvw|r}p~zt{lu]HFbdj7^E|x|y{jmk`biuv~y}szquqvqqny{ru|xwytkY[gm}|}|t¤ÒÙßÑÍÅÜ×ÛÊ̺¼Ã²Ë½¿¶ÒÔÍÉÎÝØËäÜÙ×ÑËÇÁÅ¿©×²Âvsz{vxz|xw~|xpxxbbsNcLwya[Mdd\_hqzuvlci|~vu¼£sÝÂÐÒÚÕÝ×ËÒàÓ¶ÚÌ®
||}rtsxzwz{pwxo~ryqx~xy{zwwwxxxxxw{~{w
nk}|±º¶µÖÙʶ¯۶G,%U<=== P<>D6<@uz}wp{pswkviujks}±oqvugce6KIdRjyxwzvvkclpsruvyt|t}zvwphzor{yyxpbidk
wunvx¸ÝÒÌÌÃÎÍØÇÌÌÏÙÄÍÈÞÑÚÒËÌÏØÕÒͼÈÉÂÅÎÑÑãÏáÓÙ!
±
hyyuwydq{vv{zUjXglRQZbpbndXD`_lt{nz}wyy¼°¯×ÚÓÏÈÇÆÆÎÖÔÌÀ¹oxwqvups|zsymvy\}szq{{rwtor{vtzvwy|}{zy~~q±°Ì¶ÄÓкÖÕÛ¡'>L4 at 2A8I6:7A5DAy~vtnxunvz}lzr|sp~wp~ ¥«¡© ¤¢ªuu:vSVLW<otr{y~fsibussksu|q~n}v}
qpwoi}rt|zzzs]wqi|yt´ÌµÔÅҾеÊÌÍÅÖ°ÞÄÞÕÎÇÑÔÞÏÑÑÎâãÖ×Û×Ö«»ÇÔ´³uzuxtztqfqu{wx_TUVeb\hguEVL[f_Xdeopufcmr|¦µ¸ÒØȽÞÌÍÛγÂè¼³}|}n{zw}|tz{~cz}y{x{tvtr~ys~w|{zz{}f
µ® ¸Ã²¢×²Ø¸ǯ¹Ô¶]M;G5(HA5G?/5(=5q{v~~|wu|jwr~u}swp ®¶£ldnOUCf^Y]z~uz~i\ilygkepz|yxrutx}owpssnwukorklsrzkWWr
w}x~¸ÐÙÏʾÊÅØËÜà²ÊÏÝÙÚÂÀÈËÜÒÛÎ×ÔÀËÆÂËÈÂÌÝÃÙ¹Ûµv{y}n}{tj~Vz]U\>XcyXdYR_QO]WbT]]Jaiyxp±±®½ÛÛáÛÒÚãЯ«xtloy
zx|zq}flelxl`rpxsrsjmz{t~uyywuuvzq§È¶ ¸«¶¤Ä§£®ÎÆØÑÄÔÓ×ÊÍ©."579T)BBBS at HBXD{rx~{x|tx|i{{Xtvxp~h¹£¤£³y{|uEgL?VLSszh`tq`fJnz|\efstr|p|rqusv_m~wzxln}uhorgum{ÊÖßÍØÑÒÛß×ÑÑÚáÎÆÀÏÑá¾ÍáÊÑÌÚÒ×ÒÂÆØÑÍãÑÉåÉÕ±}|ysytpvgwu{bXe at m^pY]bO\eN]@H\VeR`o`hZjzÑÀmt ²ÔÓÑÌÅÄÈÎÖÜÂnz}l}!
spvxsykvnxuxvuwx{r{qvpqstvxz|~ ®¤«¦·°¯±åÊޱϻËÂرÍI
D:0BAMBG4+<(J<>z~g}¡twwsT~{q|ywvwp{½¬}¡wwdL\]<ZS|S~moxquxhJgoqojnqi}n|wdl]\knmbto|{uvvv{~w³¼ÁÙÏ¿Ó½ÕÚÞÑÒ°ÎÜÏËØÞÖÍØÉÏßÏÎáÓ¾Æ×ÒÓÚÔÔ·Í°Æ®¤
vy~|u}y
pwxmpt\jXhBa8^OPaC_?XLXkSd[fPe|Zuty}º¸§²ËÌÕÅÐÐÌÀÔ°
}sw{v|qyt
x}jjnzrspnrrovwjzpzxz}l}fq~qy«»¿»· ¥¥µ°¶ÏéÀ»Ü¥É»©D&NK2F16><P!c+<Qsu¹¾vv~w}evtsn
r}z{uµÂ®¯¢vokrMBPsw
y|{cqnmqtn[qc^`teoy|~p|~sn]esyhZhz}uhpz}~|sjw¾ÇÅ㳸ËÚÛǹÔÚÈÇÊÂÙÞÛÅÜÑ×ßÚÖØßÎÎäÛÏÉÜÖ¿ÁÜØÒ˪z|w|uzvvlkhzqsYPIbLbYnJOIJTNeh_Ge?g,YfVomhv|½
Ùç·Þ×ÉÜÊwy}yju{mu~qzyzW{~|x}srjt~y~ux}y}vvwy£²¸¡¹ ±«ßÞ×ÎÏÓÍËÝÝÖ²7G3508C6EB4T!B=2§{xƨ²yvwrlczp}dw~pvezy}m=eY4Zavly\w{cboWxOU[vatvkums|{shUmuuujvv{sz~}}
~t°©«èÁÕåÒÁíÓÓØÎÈÐÌ×ËÐÍÖ¸ÖØÆÑÏÐØËÍÄÔÚضËÑÓàÉḤ|yx}tyx}ldljuo}xbhqQL+RNjHZNm>N2\dRhj[VI^lI|§Ãµ¹½ÇÄÊ»¼¬{wy{wn~}xr|sqvliyu{uwvpuypyszyz{pzwjzyvyzor}{¤r¡¹²Ñ£Î¶ÛÔÀµÏÞ³ÀJ6T>];ES%I5V%L=Q¶ ˵µ¦lzujc{ku~lru}spxuyl¥§l|hNTbMiiroi|iXpXh!
O[DaabuuveosjwzfeVsrrwv~pro{ruskju
n®ÜÛÕÇËÏÉÁÙÁäÄ°ÇÛÝɽԹÜÕÊÚÊÕÍÓÔÕÐØÔÌÑÀ±Ã´Ó±¨
vz}yvtrkownrvwrM__OLlY<HDg at R5sbZ)c?TLZ2e:]kkz ®´ÃÕäçËÅéƼ{{tu~xs{xxzrw]keu|vyzuyz~{xvqmv]~z
{mzp{»µ§µãµÅÓÃÃإյ̤)Q&B#2>=@PE7K/AL ı¥³²¾±}|nxyz}sspzov³yts]cGTWK_^t}ltgXmjQVOQYNaemiwrulxyfmc~uyvs
qxzsqyx¾ÝÂÓ»Û¹¾ÑɵÈÇÎÇà¿Ä¾ÛÏÉÜËÓܼØÛÍ®ÑÖìÊÂÝÄËÛÚÞÊÉxw{ywknrtpdp{w|a~sin5Ab]VUA^cJNLueXgfTbZ^`xr¥º»ÏËѹÚ×µ
sxvz|uz|ypsupuunsv~{txztv~{uxyy|{z}xi|{w¤ª~¢±ª£¦ËåÈé×ÈÒ׶áÏÍÓX.BFK/EB1J6J+<;-§º±¹Â¼¥ltvo{sxzy
r
¤§¤¯ªwvqQn7PbRuumsEYfA[MWSOaQ[_xc^nzumqpuzknasfro~««Èæ³ÓÑÏÃàË×ÖÅ×ÕÂÚÎâÎÑÎÕØÆÕÔ¸ÓÁÕÎáÃļàȶÒÑÔÉÊÒ±¢z|zvwivwkZTo_dwho\^fQY0DADS6^d>S+cHSE at _@WHi
ϵËàÆÌÇÚ϶xu}~~
z~owuso}}}t
t~poozrvyqouspxutzyw}s~{{{v
}¬§°£ªºÇßØ«ÉúÀºÑÀÍÙʦ'L?2,ZW8AD6P4S µ¬²ÂÇбgkjsh~syxvxo qo{JF]\iefmx]`=e7d7m>[U^TT`aTYm|qvorxpv{uyyvy´»Ð»ÕÅÜ´ßÙÕнÃÞÊØàÓÐÒØÕÙÝÝØÙÙÕÚÛÞÕÑàÚÓÛ!
ÓÉÜÍÏÖÚÖ¹§{~}tqm|ueYUlmx}bqujs9EaBTFT[oY/bm[fQXT\RgKdq|Å ÓÃͱÀÒµ
kw
~z}w|quzs||xWq{jyv|z{v{zx{t{up{ys|sy{z|w¬¾¶¨®¿¥²¸¾ÁÂÀǶØÚåÇÑÚºÐØÊÁº®EGFE[CH@:9A,C7>C¡»È¾Ö´Ð»Ô~ wv~qr¢µ»¥z{bsrZZ=JoGvvlccaVI[JHSNXcZkS^xosossqnj`xxplju|vq±¾ÃïÇÜâÐÒÐÌÉÜËÖÇÌÊÖ³ÖÒÛ·ÑËÑÛÌÐåÓÏÑÔ²ÞÎÕËÙÔÚÌÒéÚºµ¢~y~sus{nhkckIkzdo}hfkeZEc^U:HGYa18<V;dNESGi_rÈ«±Ú¿àÎÌØÜ{x}xrutpu{juzoqtq_tsiunv}vqvwz~wyssr~}±ÁÁ¹¹ÁÏÖÓ·ÑÚÝÊÛ¾ÄÙÆ̼ªÛ«Å´ÆÄ,F+70L V:MPW6K:N©Ð±¾Ã×ͽ´¨¡{
}r}¤}hoz¹¥»³¥vlnhMcfE^d^][i)R@]TRR?T??Wbjiytxvhgvtqrx{{|m{ts|ÂÐÌÚÉÑÍÙÇÂÔ¿ÖÛËæÕÚÌÀÙØÏãÐÔ³ÐÆÝáÉÒËÊÁÔÎÝÕÝÓØ´Óδwzym}t~qq|Nhxlv{lkuv|F]@JL:^][[GXR^^JNUXh2YBh¥¦¨ÑÒÇÒ¹ºµ¾lpu}{o}
dw{{o~hpyxfhya{o~czrtzfxylvwr¡z¤ÀÚ®ÙÒÏ»ÕÙÉèиÚÂÚÅÂÁÌÝáÉÔÜ°¨@0;CW*+R.503,MT¿¸¯Þ¿à˳~³µ¦¹² }
©¯m¬§± ¯£vvywL]W]Ty[dT`PcVE9EH]OOapMayyprvps|~{wuvupoqnwp|¥ºÀ½ÑÍÑÄǵëÍÑÛÒµ£¼ÒËÆÑÔÓÚÎÆÏÕÝ¿ÝÃÚÅÏÉÓÍÞÒ̾»¬¿|rz}vw~qz}{njnwSprz}krpuBhAWJW at +:YPGKRNi at 7QVlbu{¤Ò·çÉäÜÚw{xwr|rnrxq
|quky~xxzuz|xqxvjnk
|t_yv£¢¦ÆÃßËÊÊ渿ÌÐËÈ;̵ÈÜÛÐÖÃÛ¾Ö!
M9;B1-K:%^YUJY#K³¤Ê½ÑâÓ´·ª³t¹¿½© °¯ª½¨¹¡¹´|iqw;Z[a?XQxHG9MO_hVSNOig^pwutzy{|uwttwwttw~ut~¸ÙÏÖÒÕÔáÛ´ÀÑÈÍâÝÚÐÎÑËÓÖÊÐØËÞÈÜÃÑÌÏßÚ×ÏÚɹ´¡£rry}}pz|xfz|uivsmlZ\wrEhwPQG>WECt\GHjQK8V1]X;7r]u«³ÍÔ׿ά¬rtx}zyio~zynhintwszly}ov
s{ruzsas{tw¸l}´¬¹»À²µÈ»ã¿æºÖ¢ÐßÁºÛÓ¥··ÂÛ°F<9ZG;I>JX8&=[6ÈÖ±àõµpÆÒ°¸¨¹Ì¼©´¦¬¢¨« ³®«³¢²¥¶}hl]Q[@Zi`d\^XWCABDEL?dRsxlqrzzzxo|{vnlnowrªÏÌ̾ºÈÛÖÓÞÆáÜ»ÔÏÒËÐÅÎ̶ÓÜÒÁÝ×ÏÇËÎÒËĽ¼¯¢
}
ozwow|xq|ry
jwqxfZ
{|qnTojgb5[MTX8 at bKRafTa5TYeT[U³ÅØÌàÏ»ww}njiqy
kmsmvy}esnwyaxyhs}nv{wsvu|ln°©j½¹ÌÙÆÓÔ¶ÛËËÇÕɪÔã϶ÌÛ¾Ý˶</\CI;G#LT-M9X¬ÕÀ¿·êÚÔ¿³Î½«©µ·¾Ó¿¤§£±¡¨µº¸Ë´¸Ì¢Ã§¢ o{t[Q^G`dI at d7>?]dIQSIHe[]onsjowvwxsvuuwsootum~y|µÎÜÓÄÒÑ»ÄÒ¼ÕдÓÐÒ¿ÃÂÊÁ¯ØÄÔÎÞÑÒÐÎäÕ°¡{x|~~w|y}|y}nlx|r|rxqnond]|yfCUOON]TAX@/;AL^oSSjl`¢¡Ö¿²Ø¼Òµ¾syvrnz
zsym{twqywz
jyyp{q}|qq}rpyywv|qbzrr¤¢®ºwÃÖÉÇÍÖ®Ø͵ÒȾÑÖбÈÙ鸰¥U=B&\Y8+MI9#A/7?ί²ÒË¡È̪µµÉͪ¹ÐàÔº££¸½¿·Ä«±µ´ÓÓ®µÃª«¢
fD\V\=Q>X\K!
nWSG9nIPhQdMzl}uywuxurrtvtprxwz|
¦¸Ó×ÂÑ˹ÅÔàĺÌÉÅнÀËÑÆÂá¾Îã¹Ô×Û²
}{vtsz}~t|ot}~|hkzn}kstjyHku\c3Z9[;RWVD\RQ%DigT^J`r¦·½¸¹Íظx{|kljpm|{`sl{y|suzpwtxwo~~hzepmkw~zxµwt¥¯¼Ö¢Ô«ÝÐßÅÒ»èʨÞÙƺêËÐ߶µE,<=G8H@$G5HB;PÔºÑäÜǴĸÄç˨ºØáʶ¨´Ëν¬©¥©Í¸ÙԳ챤µ« ¯µlkZQ?gShaaYTUW\B^@\eOgd}kzz}wvzv{oc`cvun~±ÎãÉÕÚàɽÑÜ×ÌÌêÎÈÇÕÔÏÛ×ÌÖËÁ®Ü«q|mwxomtxw{~mywzef{m}mxovyRPoXwMWHLHna2=WS<OXmM at UnZc|d¬¡Ìί¦w\s^puzltgvt|kibsdmx[~m|vxs~{}hnn|v}n£|¸ì½åàÑÏÕÅæÓÉ¿ÏÚ̶ӺɵÍÛÀÇ65JDA8W+;CFF-=BP±ÒÌ×Ê«¾É³Òµ¾Í¼ÖƽÎÎÛÝdz²µÜĦÐÈ©Ï»Ñ̺Ż©»°²¨£¹p^dDXUKQUJb=RDVCO_d at tw~ctrefnqx~{mnqqmgjqvu}r{µ×·²µÈ³ÚÏÙÑÄáÍÇÏËÕÍÎãÃÝÆà»®zx¤º¶·
§§£q~||{wvy{|xxlgulbHZQ?[3UF78`RG<NPT]]bcVYaapyvcfst}lqmxkvu|suu|tnqxkb}qsltu}oroishqps||xuv}s¶Ï×ÏÖÓ¶ÜӮϽ²ÄÐÌÏëªÍ«á§Ú³@I+5?AF%`/Q.5IEKÎØÁש×ÕϲÀÆâÏ´Ù֣ɾ¶Â«ÝÄк¼ÄÄÂÈǷ²ÀÃÍÁ¸½¶±¢xr4fOAVYP^]AddSV^h:[cfeytpwrjYwzfnqmr|}vv|xu¯¸½ÑåÐãÓ¯ãÎÝεÂÆÕËÑÇÖÚÒ»ÆÒy
z¶Ó»Ö¸°¡~s{}yx|vw}~^yuk
i[TyAW_TEXUXMCcMf=K>HCWP]^xNkkDicXije!
{q}vxpqmr~{~qxtxtkxj}splmxx|wj|skqmw|¡»Ù¾ÌÅÆßרåÑÊÓèÆ´çÇÒÌ·äÓЧ:<V;;'MC1D5ER.EOŨ¿Ò»¼½ÎµÈÒ¹©ÖǸ³×ÓÔÒڿϳ©ÁÀØÐÙÏÓ»ÝÊÓÀѨ³«°£»
ms]eJ`WBU]SF\CJPL[X\Mokcrxvyejevwzpx|c\{~x}yy~zt«²²²¨±´Ð¹ºØáÌÌÖÌÕÈÐ˪Ãبª|e¯»ÎÓ¹¢ÆÚÖË~}wvxqXwzbyw\ozcmq;Z9\?CT:@I[We\5GKLU_`_e>aMadLaTUdmyq~uywlwlro}kptpwoppgd|udsbhllxkw~jxuy|}w£¨×ÐÍÉÍÐÚ¬êÉÕȾÅÛÍʶÌÇԱɡ@E2U:+?W$L2-i'G·ËËÀÓßäÏÛ¯ÐËѵÖÌÐ̶¬Âº®¾ËÏ¿Ì´Æ»ÖɾȵÐƾ¾Àª¢ÆtZMIQOaj2KXQjfVfhDc`Uq
e`m
~svosmknif|or{wx{{ws}ym¤À¬ÚÓØÎÚÌËÀÑá·É¥ s¥¼ÐÐÑÜÏÁÌÐÁк
x¡wc^vxt{|f
lJbUjWGLBaWEN?OjfmWG?^_Yawg\^aoneqyo{tsmqnfyr{y}x~w{pn]uhwvzsw{xqwv|thykpz}yz|z°¾ÌßÂÃÊÖ¯ÒÑàÉÍÑÀξ¸Ìݸᱼp9(5]=(AH']7>dS2Õ×ÈÕܱ¼ÈËÒ©ÃÐоÐÁÂÝÏËÝäÈãÛ¼ÐÏÖÈÍ¿ÀÂÇÀæ°×±µ¢µ«{aUk_AG2pLeJ4E\`ebaSixs{uyxv}xonvoYYktfjurqx|}t}rh~q|~y ºÛÔØÎÚÌÍÃÙ¹µÑ°¯¦yºØ×ȵÏ×Ì¿·zozzsyy}tpvq^tyu_OC:QHXr#lNJbB[<NF_HjZYFZd\[ZKJWjmg{wuzyotpv{vh{z{peqpxxclswnnwsr|royuyyyux~q«¿ÁݪÔÄϸÆ×ÒÈ×®ÍØÜȼÇ˵!
Äs^RJM"8U67B1U2&V/hͱüÅØ宵ºã¿ÆºÅ¼Åᶽ»±¿³Í§Ü˺ŸÊÐÚÍݸÖÎÉʱ¸²µ¤®
pm1>[HQn?^FmIr4rpi]Vfpf
}{juu
xzyhkwogmtmmyv
~
¦£®ÐÍÓÉÒÉÒÏÊåÏÄ°¦¥·¼¾ÏÙÓÌÝÞÓÁ³°ª ¡¡~os}pd{kukvjvlsbhjeRJVA`4GrATAcNViVA?HicaQS]`zYnhlsvkv{vu|jnkqumcc{Zszzk}k^x|r~{s|zqxqzy|
|¥ÓÝϲչÖÃÞÙ©áìÌÁ¿ÎÓÐÚt
6357E+W6B;&Y[5+OÉÌÐâѹü޾ŻäËæÙɽÚÅÉÐÛÇÞÛɸßÊÙÃÄÐÉǰ׻ܻº¾®¯¨wmI^ZKLNqGjPX at d^kNXeQit|ss}wrgrwg\klTpmstjp}vu ¨¨¢ªµÇÆÎÄÌÄÓÕÅٯѾ¨Äº¦¬Ååத¤Ä·¹ª¥±¼·¹¦¢¤y{twwtxlo`g1F3WR_IiB0SVM[Fb7NCsZRXbab[P]gtqyvzqwzt|psdor}ttx|}~pkxp]wnsz{|}|sy{}vo|xy
zo|x¸ÂͺӨëÉÖÅÒÈÕ«Ñ¢»âƶ®¯·~qf+EBM5H68=Zk"4.YNß¿ÍÂÇÍ˶¾¿ÛµÇ«»»ÀÝδÍÝÖµ±Ãä̹ÕÌÙÒ×ÍÓÉÃÂÊǾµÆ»u}SIa9PmZ1N:[UbLXMnYPhuZyw~s{|u}tqkqrunht{v|u£µÑ¸µ¥¹ÉÈÒÇÐÆÒÔõ²Ò۳ʷÞæÒ®¦´ÁÊÖÀ½¸£§¨°²°¢ª¡xudwkejrxryj}]nqHRUdG^TRCWpADPNnDQUl1Zg^SSU[b``sw|vnulvly}myrz~~}gte~{oysf^u{ot{{r~sn~xqŪ½ÌåÍÄÇÙȹçªÛÁÖÙDZÔàÙx{j8D/: g&;-</OQG2`˶ÒÅѺ®ÂÂ̽ÃäÈÁ×ÃÊÅÍß·§ËÒÕÔ¸¶ÍÔÐÇÁ»ÂÞÉÙÖÚÐÏسuzmdZeMRA<fXf3d5i;^qriXthqsuu~t|uoxznztJtuthfytz}x}so{mØ«¹ÑÏØÎ×ÍÔаÏÐÈ!
½Ñ¾»ÎÑÓÝäÒ»¹®ÓŬ·¶¾àáÏÁ§Æ¹d}gtYorrv]mnGbD\RbB79aQIG_Z99bSbb]>c_Z^bh[vepy\p[zrwqt{yq}yxvu~mohqnhjnnz|qqtbqy{
ri~³¿ÒʵԼâÓÔ¾ÔÎÙËá¶È¾ÐÞ®½ jk82+D5;D[:V%0 at TX¯¸ËçÉÕÛλÌ᮶¸Î×Ò±ÎÑÖÖÒßźÅÑÖ¯ÚÏéÇãÈÌ«ÕҼѧwwkfU8bKPQ=>YGl9TdYwalUiSwl
t`{ymqzueu|zlaeu|{¤ÂÄÕÐÞÄ஼ÄÜÑÜÎÔµÕÌÝËÔãÅÜÕ´Ó˼ֱبáÁÎÕ ¹Î¿Óմ۲تͻ½q|qPspiuqtsltpeCaU;:p?ig4gR56Y1X=Wh;]S7V at kf]afvhsfqjyzrygjoszqxtspfjilxrux
kxevr{{v}
°ÄºÙ³ÇÂÐÔÚ¸ÇÈÉÍæÒËÔ¶ÊÕ׫´qwÁELQ&POO,7M,Sa=)BÐÌÒϯ»¨¾Ï×¹ªËÅÐÏÙÔ¾½³½°ÊèÐÃÝ¥áÌÔÔ©ÔÍÐÅÔÈâ˱
si^EbUL9a\h]AE at h\PH[znVSoklpz}hukQy~~unqzo}|ĹÂéÑƾ¢ÝÞÌÖÇÊÌÔØÞÔÊÝËÎÓ¸ÅåÆÐÑÑÙÐÎÄÄÃÈàáÃÖØÛÔÄÞ»¯¡mssktZkugz\y}ydZ_fYDbEJ]1iF<ocR^h7Vf6MZI_dWoR\btmyrxszovw
svpm_lvm_|ebp}s|mcjwi|quxffrÀ«°½²´Ê¹µ¬ÊËËÛÜÍÔ·ÕÏÓÌÈÄ翵¥N'.CL8%TD5TC&9OSÖÁÓ¿ÍÒ¼½Ù«©¤½¥ÍÈÁ®ÁàÁÑÝäÁµÝÞ¼Ù¾ÝÔÎ×ÆÀØÓº»µ}sppvsyudREKT-A5a6U<Y2^`{dJ8t{gwj
pj}umqyyrrwxtrtvuvv}Õج»²¢¨Üà¾ÌØÏÆÉÊÑÖÞ³ÈÒ¾ÍßĹäÑÏÅ̽Ì×ÅÓοºØÎÙÌÏÖÕ´¶vrr~Vwges{}r{ie[XBSCTR\e*]COBJ>^;FRBOMgZhoPaP!
stylmbc\ngrnuys|lu|z}zv~{xmxpn}ruuwws|
¢¨ªµØ
Á©ÐÚºÍÊÜÁÕ®wA8H5)[19A3CFC<;¿¹Ñ¯Ç¬¹«Ü
¶ÝÂÓÓÙê«ÃÏã¬ÉØݼ´ÛÔ¾Ô»ÔѼÛÄqtw
~qq\DQ\QiYKDXVlhggIlokB[_ne|l
xxyz{}~zslruspqsrz
m ·°¼ÖÌÝÖÍÔÆÚÊáÁÐÌÇæЬÎáËܽÇÅâÐ×ÄËàÑ̽ÓæÙÌËÏÅÒ¹¾~
z{yuwqs
z~yq|xsaH\UUX26jZKaVLJd0eWAfSD`NEh/fjjgadhmlw[}V|j|vwbwtnik~yS|ue^||wxw{r{wzoxzqj|{r¡ÁÓÉìË·Þ¦ñ¶×º¢zµ»PF&>J?;02OP595GY¬ÑÑÜÒÜÄ¿ÁÁ¿ËÕ¤¥ÛèÁÞ³ÊÓÆÜÚâÒÙÓÖÂÓ¾¿xtxu~lpsusyKU;d@/L;^8J6<knomSOU`dci|{yw|trswpy}wpsx}m~«°¼ÒµÉÊÀÔÇÚÊàÁÓÒ¾ÌÔÚÔÒÔºÔݾϴÝÒÞβ×Ì×ÉθÎÐÁÄ»¯{ts{{dfXvxrwj]c][JM[7tOYAQJH_HZ=M7E8Fj-W\Dlnegcfissqhoyjqykrvpmbs}qtxxZwpc{lvrz}zvllmvyxkyrc~~~xr}¨y¸ÀÈÎÓËÐÅÞÏË»°£ÔÑ{%=L4%H_EN2KFHSµÉÎã¼Ç¯³½ÂÍÀÓ¹ã³ÂÑÜÁÚÕäڲκÊÉÊ×ÝÔʱrtw}rzwva>YDSSbFSPkqrekVPVgRtdmuonnmp|{rqt|wps{qxi®¢µ©ÝÊÏÙâÑÙÔÐÉÊÉÑÚåÒÔÀÀ¿½ÏÏÍ×ÕÕÔÜË»âÁæÚÛÎàÕÉÔÈÁ½¤zptxjpw~q|~
nwan\Y]9T2HWCAg:G at DaXmja@`EbYWutwoskn]S}Oimpuplt_pf{}yudw~ztvq
yuu{r{yxkrq{|qzsku{z{¤¼ÚÌÛäÞÊÍ¿ÜÔÕ¾±½»µ·DJ?4I:X:?7HU<7V×Ö°ÍÂÛº·££ÕʵÁÉؾÙËÚÉ·ÍÒÊȲØÜÓÙÃÚÍЧ¬rzuxy!
³À°
Y_aV5MLOLCaBDmlgPZ]`TSTfot{|ystqnxvyyspu{~twm¬¸ÞÃÈÜ×Ï׿ÊÑÙÙÚÏÇÎ×ÓÇÜÝÆÖÝÏʽÑÐÖÍÔÌÌÆÇ×ÑÚÍÛÀÀ½¦wqod~Zyyzl~htckvtU\]GDQYQA7LS.NtJBG=(7Y/]DWFG\mpgrkwf^|nqijmyxqMdUhPuWkk~~{^jjo~|z|oyypzy{|ov~ ¬¹ÇÓ±ÍÁß®ÖÏ㸽¶£· ,C;A0H68>;R6&FH-¸ÌÜÒϳ|§¬ÛÈÆÏ×ʺÕÕÎ˽ÖÚµ¸ÊÜßƵØȳ«u
£´¹wmxrE5Z9eRd at LeW]fmZe]N`@\ssjku}zv{ss~yyvsuz}{ww¬Â¾ÑÏÊÜÏÆÞÔÏÌÜ¿ØÃι߱ÓÀ²á×Î̼»ÌààÝÛ²á×ÛÓîÅáÜ⯹´¤
uvl
pqzf{h~pujplb;\;GS[8SWM<JFZ2WTSVAReXQ^lvvepj~tqdwssvmvSyZo1I^q{~ixz]tsrlwkm{p{t`yr|uyon~·°º{²Ë¶¸ÂÌ·ÌÜÖËÍÁÉ¿®³¬²ÄÇX7E/47D)Q>5FUG=NÒثЬ¥ºÃÈ°´ÉÏϯºÃδοËÜÀ¶ÙÌÀÐÙ᳿zp
|u{xy|}\YA]Z<NU`2]EjvnWcQ^OBWiZnzxhxwwtuqunws}{r³ÐÈÚ²ÚÔÈßÌÕÕÒÂÌÓÒÚÓÙËÅÚÑÔÑÙÓÙÍݳÖÏÊÝÓÃÛ²Ö˼ϾÖË·}wzrvmxqidvn]jrXo\]A]S8`U9V=#7UKPQK>6VGTUHBPXP}XilWlJ\nrstoniZlX_cihuliT
lkommxvxs_u_`|
N||ºÎи©ÀÝȶϯÃÙܯÏßÀÜç¿¿®Ñ¯¯?D#C at 6NJ1ECB-B,R¸Ãº¥o¥¢³·ÍÔѼÈÈÁÜÊÄÒÊÀªÌÂÓ£¢{tyzywx|^UDX(B];?W?dcdYEUXkR^_JEsh^vpwrqy~zoxqt~qwx{¨ÀÆÅÍÄÓÆËØÅÖÍÊÍÁ×ÅÞ!
ÐÌÐÙ¯ÇÂҼνÂÓÑÚØÅÀÍæÓÎÒáÅÚÇзt|ixw}vttrmus|{~pgl[XXT,hM?/WCRg9QM4Y
.X1
PNWPAUhXfhnligszmkaodqrJ?EShRYpLhqn~}ul~wztw{rv{rs
mm
swu¼·±·Ç׫¾·ëÆÅÔÍÔÀԺݴ°Õ°ªÊ<EC858'?FBJ3G2M<ÏÕµ¥´nzzy¤¶¼Î·ÝÝÕÝÕȯØÏëßû´ Y
spµ©qhmQIOaB\KPZXUji^\XMh^H8ajeq
Wr{}xpyumtrw}st|x¹ÙÁÌÊßÒÂÓÕËÙÃÎÎÈÑÊÝÒ®ÌÁÙÌÚ¼ÇäÊÜÊŬÐÔÚØÃýÚØÖÐÊÕ¾¨wv~plWtyvbit{oaTaN>Je2HDZ8UEA=[?B^\nCUN_^HT^CnsJoO}rff`mqxsmqWdlQov}c{q~pxmmuspy{w^
y~wyp{z¥|§¬µÀÊØپ°·æÆ×¾»ËéÏÑռཱུ#I/?3BLO/)B=BHDQËÖ¡§°©·z¦¶±¸®ÊÆÍ·åÉÁÝμÕÔÖ¨ÌÄÓx~~Â×{wt
voK>6^LFSY at kHaIEUYf~bER`Parsxuwrdikpywstwv¦Àä¿ÕÊèÔËÓÒÚÒ×íÏ޺˼·×ÛμÓÄÊä̲ÍÒêÖܾØÊ°×ÕڽοÄɵywb^l~tw|bmkq^dkmYNR[Z6QgHEEO<GPUO<=9]VNG>=QcenqnczfnVcanxoqNaLe^Ieznrwwnsmxgio~wr_t~qs~y¢²¢É°ÍͶµÔ²½Ó²ÓÈÙËÀ¹²Îƴ̤D;)QL:='1QB=4:>U²ªÁwryâºÖÌÀâǹÑɵá½Â¹³}|rvy°³Ò¾¤ouzbwcT\bM?iA9YZIe\MQWws-kOOXvpzwrnxtvlsrxwwsr{s ¹à½ÚÊÛÑÓÇËãÀ²Ê´ÕÄâÛÚ°ÙâÉâÜÏÅÔ×çÔ¶´ÎÎÌ»ÐÒëÀËÜÒÑÁ¥tbwsluqzp~tzsmonDYW\=Q_4VD^9Xt>A7v\YWAVTUg[CFl}f}oiY_\d\hscovu}hmuOvsu]{wbXvqyqelrywwzuzw~{x{£ ºÏÎÜĹ«!
èÐêß®ØÐÌԯηÂǾ°Ò)N`1)';7\/@<G6GH±~µÌ¡
}¯¹ÄÒË»°ÚÀ×ÄÈ®ÊÎâÐÕÆß¼
²§m¥¶Ò¤zoU?<LcKPOfDVFEImfhm`[<]lgkdtwwy}y~otzytx·ÕÆÝÎÒÐÖÅÌä»ØØÓÐÙÊÔÇÇÝÅÒÅÙÄÕ²µ½ÔÐêݾÖÌÑÆÑÇÕÕÎн±¤©|xsnvs~wlnoyry~zgfD^=LNFNN?`E=D/G?I[7eesoN<MNKanhu[~OplVjboiyynpV_mumw{vmx
t|ysyvz{ynuwzz|{t¬½¿ÕÒ·ÁÅåÉÅ®ÖÉɾݵäÊàֶʷը5L,2FGF"G08N5a,_§±¿¨À¹ ©ÄÈÉÁÖÆÅÎÔʽÞÜÔ»ÎÉßÅjoÂÆ»yolxko`rOb&_^L=KJNNtW=EeDlc>dfnm{ipqrurlw~zr}ºÈÑÛÕ×ÐÏÐÖÚÇÚÓÙÓãÄÛÖåÊÙ×ê³´·ÌÁ¾È¸ÍÖÐÎÈÊÞÍ×ȵ¸¼¬´®¯}jyn|{qpjbkimnuQsaiWO at T^UM<JJLEgG^SH]^cNIOQYcbetiylrtqgpxrvvk{hucucxogus}~{us~tjrzwyu}v«¾ÅκÚãÉܪռòÙÕÄÉáÓÞÇѰħ¬¬³S52I-=C/9;E:&I9S¦¦²³ºª¢¼¸°À£·®¯´ÒÜ®ÕĬ°®³ÅÒ«·¤¼Ïʺ®Ó³°s}ztKTF<c^EPQRKgQUTmi^f[fk|imqmgsu|t{m{r~}t}rº¼ÓÑÖÞÍÃÙÜÍÒÏÐËÚÔÃÑÝÒǻŽÎÒØÖ±«ÂÑÜÝÊÖµ×ÎÏ°ØØÖϯ¥£|rq{ur\pdjbqjzsvthx~]DXe.BQW?P>?3L6RBYsrFUfHLY9KdgvkqiKXP`Hiyuzku{TxvMq|`yg~j}pz{w{qpqwntwoyo¶±ºÍ×åÉÕËÕ½ÈÄê×ÒÝÅȸ·ÈÎÕá¯Æ°»´;AE@$W'6J3F<O57K~±´©²¯y¹¬¹ÎɳÚÄÙ©é×ÈÝéÈåz¡¦¬Í¬Ö³!
çsyyx}uf[EGZM[[Y4:?4Xis\[|lPJ_kozGocxp[}myv{{utz~zy¿ÒÑÒÜÙ×ÎÙÍÐ
ØÚßÇÉÆØËÎÄÇÕÌ×ÊʽÊÔҮïàÌÔÇȳÍÞǾÈÇų{tzldg\op|qURm~{nqnrq]RW@`P[@M8POYfX?h\bIcUPLeREcbIitymmdqtbvtX\yu~ku}yrz|jzxZ}|ql
}y|nnv¶É¸ÜÐÓÚÓ²ë×ÎÌÕ»ÑÁ×ß¼±Ü§ÑàÓ³ÔÄ´²¤µ*=P&C0&I9KC958LF²Ã°¼ v¢°Á«µËÊȹÐÙÐܺº¾ÉÑÙ}Ç·±«©§}·¨¡¨`OSa[6Z7CebNjZl|Znjyidvi\xjv`y}xotqquyzz}¸ÍÑÔÉØá½×ÕÞËÍÖÎÐÖÝÒÑÉÑÞÉÉÀÔÜȸ¯´¼ÉÊÒãØÞÕÔ̾ÖÓË´«¦vksvjiqgqxgRM`y|g
mkq at Z:\DL1_NW><,?GeY;dVIVREGk[pq_MP^h]PdNz{{}rUUprnsinsy|vz[pjgfmXxwp~
½ÍÏÜ׳ä»×Ë˻ʱҾۺÄÌΰÛØÙÙÁ³Â¯Ä7@ ER3R+R+=R(R \²§§Ñ©m¶°ÖÎÓÆÒ¼ÈéÈÄϾØÂÖħx¤¥·°|©¥¬»¯£UgjPKLZV\W at 5X9S_Yr}nv{g_ilkaPko|ljuwusvz{xq ½ÌÉÄÕɯÛÌιÞÖ×ÑÃÏÐ×ÞÚÖØÈÎÃÄ»ÊÐÕ±¬ÞÕØұ̧à¸Æ÷ƹº{vvlq{rp[Zahb[exi
eDcqWQ;^@XJ[Q`KYEE[NLJIOmjUAg]VuorvfKuboe|otsuixvq_rkwf~stq}woVm}xs|xz|s¡ÉÇÈÊÅÙÉÙ¸ÖØàßÈÉÈÐÄÊã·Æ´Å°ÓݳãÀÌ©¶K?Ac%T&/.W46EQ%³»È¨×{syuÇÙ±áÚ´Ö»Ù×Ë;ÑÃßËÕµ¡u
£¡¤Éµ´ÇÖÅÔË׸µwQ=DPa1ORAYl^S[Nji~jcvbNgi^czr
ouwtlnx{vy¼ÔßàÖÑÃØÏ×ܹÇÜ×èÑÊÂÖËÏËâÞØÂÔ²¾¯À²Ãß¿ÜÜ×ÄÕÒåàÒ¶³£onywvoqvlcq_SWZZaokue]h^scKJdPKEHLKBP!
JHYSBbd0>VjZ^[hif{n`kShUo}vlvPkdorrsdxttzr~zy_opjzq¤ÂÃÅÝÝ»ÎÙÍÈ·¡Ä»ãÆÞ½ÎƱàɸ×ã¿ÚÍ«Á¾¥8DBBc.5PW'XLX?Ʋ¦¾µ±Î»¯½ÈÀª¾Ú¿ÑÀ½ºåÄË×ÏÎêÂàÖÍ·¨¯ÜµÌ¥â§Óµ¾³Î½²¿ªlUmcYPULW@\BVX]tuet}`Z^FXOgumzeklg`fu}}p~£ÂÍÏÐݺÜÀàÄÚÐÍλÌÄÖâÓÍÒÃÎÆÌøµ§ÊìÏÝÓò×ÕÍ°«¸Âv|rwtroh`Ubdb^]agks^}lhLOHNbHFMX1NAWXUVPSPX_IXMTSdPUpqlmBZK`vwWoEecgW][QZ~twjnspxiw{efq|ijyy§ÈÜ°ØÈÖЪÔÒâàÞÁɸÄÍÁ©â¨ÙÍ»¼ÕÐδ½G/^9VGD/(H*-g%Dͨ¶´¨r¨iŲÞȾض¾×¾ÓÆ°ÑɶÛÀº³Ë¿®~¥£¾²ÎÑÝÂÊØÕÆÉÓÔ´¡¢BiBMJ^ERConekbqXkpvc^SO\jaz|r~plfadqy|~ut·ÑâȵÂÍ仾ÒÎÑÓÌÔÉÉÒØÔ×Ãį¦àäÞÎÇÏã·éÂÙÁÜǼ³{qetxryvecZVnwcNQbnnvqpC0gvOTcBJGW at VA\E=A at OnP:@dd]Z\W^b`Xo`lZRl]YcculWKBWXxms[~uzy[b~osnx|u
}~~y}½Í¶Í¥ØÌØàÔȧ޹ã±ÁáÅؾÎçÖáܵÐÂÔ4N0/=)0(EP3[A,IN¦¥À½»áÜƨ½¦Í¿ÑÑÛ¶½ÔàØÉÇÍîÎÌán»¿ªÎßÍàºÊËÉ»Á˿˽¦j^8`sJBfWa[^isrfx~ptb?QlY_^zlyhlirjccehntkv} ±ÀнÞÝÕÐã×ÏÝÚÇÅÄÉËÞÌÍÙÌ϶©°©À«ÓÖàÓͶÉÙÍÐ΢³¯w|
smatxeibtYDJboncB}wbmHO`ZQVTJIZbHH?WaiX/KYddbV[}hSOickRXaeei_McMT]bY[I_mx~ujt_vzp|~uow{bx{sr±ÖÂëÅÓ¶ØÌ!
Ø×ÆÇÉÏÄȹªÒ¯ÕÀ꯼°â¨ÝH66Q)F]E*=P61]-M¬£§´ËÒ«µÔß¿¬Ã«ÚÏϻ̺ÑèʯÎÑ«ÄÊ
¶Ö±»¸Ô»µÈºÐµÝ¯É³¯¯_^_;]6gPS_iRlStjsqjYQceI]jp{]vraWU^bbentz{ ¹×ÒÒÝËÜÄÑÙºÅÀ×ÖÜÍÚ¾Ïß¿§§¡¿ÆÍØÍáÊéÒʹ±º¶¬¹q~rti\Hep^fcZdottspltaimPK^YLaHVNdN]/EVTO3O:OVITHMOn>ZlchJ\^j4Z=MWmPa`g^YRKfDp{~v}rwite{X{z|p{~cr|s}x¬½Ú´ÒϳéÆÔÃÌÖÈѼ»½Âï¦ÓÏÐÍÔÆ˱ÞÎ:F at 0M*+0T1E8P;J9½Á©¶×»ºÜ˶¨¡±ÎáÍÊҮɿÒÒÛ²×ÊÒÞÉÅ·k·²µÕÅÇæÌÓµÖ©ÖÉ¿iH<c0V\K^XRh]kiggo|\Z`BQmpxa^Wpgd^haiQfts~{·ÌÐØËÍÑÄؾÏÚáÃÉÑ©ËÞ×ʲ¹{¹£¼ßÃżÉÀ¯ÄÂÌÐÙ©xypSDWUnrhd{xs}cWi`eKipnk_ks`_EFL]T3 at Yaa?Pm]6cvoZnVbiJd_H]tagn^efJEV?cr[L`]Ph~rzqwuxeokivkzn~z~º´Î̺ÙÒÛËÚÑÅÁ´²ÌÒµ¶¼ßÊÍÃÌËÙËļ§>;4[<"UR.:V6K1S<¡Ç±¤¶×¾£¢Ê»Ä¼»ÅÖÁµ¾Ý˳ϼ³××»ÌÌÓÙyÑÜà¹Ìα¿ÍÝËÚ¼®m_[Q\l9UXGXlIWovdnr]RX[Lert{p]c\Z\^cRbqx}|u¤ºÑÝËÞÅÝÊÏʯÐÙÐÚ³ØЧ©©±ØÕÄÇ»ÒÊëÜÉÛù¹¼« s}wfe\pxyjrYvrsaZ]\^iHLM_xWqhz\dM]9Ro_h<TAZ3]GfIaBa>hDbQgGiNR\YQj>bfcfadD>o;^|}Ksxzpslx{w|q
nvuq¡´²ÒпÃÉÁÎØÊÃÎŽ¯±¯ØÏÆɹ®ÒãÁÊ´Ó¿¯;M1-Z0'4Y*i1<9_Î¥q·¬¬¥°¼¹¨£á¾ÝØÍÈÆÕÃÁÉÖӵϮÐÒ伦«¨ÑÁÔ¾Ä˹ÈÍÈ·¯cHT[GHXgTbMZTa\iXKaabojzgnqqglkj\ZK[^Zhlz~v®ÞÊÎÄ!
ÍËÌÍÆÀбÙÅÚØÊĵ¸«µ½´áÈÊÍ×ÔÄÀѺͶ±¾°~|okynDQJjbiOY]nknPXaoek_nbNOsmvZpLK>cQE.K?ZIrR[^YOA[dZdbgsgbb]ipHD_PX_@^BURilaUovvrreouvtzsuixtuz¦¾ÔÉÉÑÓ¼ÓÕɺØÅÏÅ¿ÇйµºÌ¬¼¢ÁÎĪ='\H-==ZE)L8U:PL°½¾À¼ÚÒ͵¹áÍÑÝ×¼´ÈåÏÀÃÇÁáÇ×ÐÚÈÛŬuªÒÜ¿ÇÒäÞ¾ǰ¾«|yqRRP at FIMVXkScnogJWSXFhKmph}oxwyie[aMc`Y\lz}yչжÒÃÒÓÌÔÈÑÖǪØã¾ÜÖ¬¼ÙÊЯÜÂÄËè¸àµ§¿¬©¼ªxuuzeW]cp~uijkbq[nO\Y`\cXYTSn_[HQXbLH;PXm`_OJ^=Ug1_adPL_C`OLPHV<WWmYe>TBlLPQS9uziqgoszw{xtkozxv|t~|»±®Ç¸Å¯ÓºÚÂÝ·¿³©Ì»Î¹´´¾±½©¥1O,BD<51:ZB@'^=E¶ÎЬÅèÐÇÐÊ»ÊëÅÁÔ¥ÑÛʹÄÆËÞĶεÊÂÝ»Òį¡z¸°¹ÄɲÅÍÉж¿§xu^\4][Jy[LOj^rseQiJybWcaZRuitpbN]]lWkbRLmvwx~´ÃÒÔÇÛÈæÏäÒ°ëÈßÉÌÃƵÐãÁÀâÖÐÓäÇÞÌÑÓ¸ªµ¡|qK]\W\mkccq\gRiRcXx\JMajRX;UY]LNOgKYW^@OQl=[h?jYFbYgh]a\JblhSOXX=;a`KK at Fj`]YJ_kqqysix{hux||¢©ÈËÍÍÃÈãÓ·×ÃØӵƹu{³¬U4SB/@'<0)P"_-?_µÐºÈÏÎÔÁ¶ßÑÏÎʹܶçÏÙĽÇßͻǺØÌâ¿ÐºÓÃÈ·{t®©Ú×ͶÕâ»Éɾ§¡cem^OSV^5fGW^sfftz\L]R_?MjRnmpqhrppqV]dZ\dgpy{¡¾ÔÛÐÍËÔÆÈÎæÔÓÃÚؾåÒÔÜÑÚÎÐÚÐÒÜҮҺër¡¶uheIMZPnn}ceqesci\laUgsoXSFaiRQBs]P!
3[FIDTTHA_^icePX[OjPnCg;gT6gSXLlVHCXPYQiH^HT]ktqpjz{z{w~iwxwxx{
¨²Âϳâ¶Ì¿ÊÊÇɾÈƦ¹~¦¢x©¡ (=(F%J(\?W`E at SEC»ÏÄÖÒÎÐØÚÅÐÁì»ÔØÌÎÔÒÒÉÔÆÉÐÅÚÎʾÈßÈÕ©Þܬ±«µ¯¸ÔշмǤta3XD]T;_[^kK\szxtNc[M]KHBfgZhVgoyu_YiY`][nu~¥ÉÒÙ¹×ÀÄÕØÌÌÌÙÍÓÏÐÐÙÒÁÅÐÛ·ÇÅ»ÁÐÓ´£^s½ºµ¢|rkmU<MRfoxgiqo|vnmq]PRIIIcUf?\WfDRIf_R]UWXNXLcE\fW`oa]j\e^\lj=\RVX[9eAXEJDYJ^2_Mdxhu~yovgdx{{
y~tz~·¼Ö½àÈØÃÇÉÕ¾ÍÓàÆÝÀ©®£º®Á°¸¸¦±°S@>='OB2T'5Q/@QÙ°äÐÊÜõͱÚÓ¸ÅÄÖÔ¼¿ÅÕ³ÙËÔººÁÅÍѧÔÅ̸Է¾¥°ÝÎÙÌÌÜз¥ziUY\4TFWYMIjlwggtuwq_GAPLQ_z_>j\hHiyzjqF=a\qhtq~±âÎÒ×ÒÎÔÍÝÐ๹ӹÁÛºÛÛÜÑ¿ÙÆÀ¢}u¡¢§µ ½osyra8ZUbFj\x{pmtxoymIZeb`WfEG]OE<\_c_]VK_GjNid_miwD}?vomumyk{l~wxVe:Ya6__^WZXUWgPX_ys|s|pzwj~s}|vs~°ÏŦÃËÚŽܼÝØÚ±¼ÐÐÎÁܧåÆ»»¤¼¿¯3)G'X at 54b&QW%V:SºÍÑÍÖµÌÞÅá˼Û×ٳѰÃÚ¹ÁäÇÍÐÔÔ¹ÌØáÉÔεÕÔ°°µ²Ðµ¿¶µ·ÁÀ«|h`YPHM]V7YZd`isnvhUghr\THg^dfpQKeepnrn[eU;gn~vo{ªÀÅ×ÒÄÌÓÓÌÄÂÈÐÔÑÚ°Î×Ѧ·¤q
z£{¥tt»¶½µwxynV`?NB[obhd|vklXnkZc`4bO7PQPDd_sQXHW\^PkoriTpunqml}}wyzyq}ssw}|u]b>OK;@\AUAW]U~rp~~wwm{vjs~zu~j}~¡°Á¶×É×ÏÒµÊ×½ÎÍÙÕÙÅÑÉÌÛϳÒÏÆ¿²£XU at 40$81GD=<?Q5KÐÎ×´Õ¯ØÈ˸ÌÎÊÅÀÎçÏéÖÌÊĽ̲ʿ!
ºÔÒÐÅÐÒ˽ßËÀÈ|¹³ÂÍÚÑǹ¥©¯kZKMUNHPVRdnzu`cswyq{igY]V]KGNYXiTYkoxs\dhbjl~ugqw½Î½ÃϽ³ÔÖ½°¸Îȯµ´¹£¤xwp~
s¢Â¶¬£hV>>Pg_dtgkj{kdV^U[Yx[O]XgYii_LWD at JFT`[wvvl|raozro{~ket|v~}v
{_zsYf_\QRKL]cDsntenn
xigy|zt||~¢°µÍ¼Æ¿Ï¨ÁÝÃһžÅÃÚ¾·¶ÆÐÚ¯ä²ÍÐ?+.,8JGX/-SAD+OY¿©×ÏÙîÊÚØÓØÏ´ÞÏÐÍÝ¡ÓÖÎÞÔÞÖÞÅÚ¾ÝÌÖ¾Û¸ÉÍË»¬·º¼ÁÐÁØÆ´zuiC7HNIHGNAIWosaorrjzquc`FP^eq^X`X\mpwq[bTL[}lhiOrr´¿ÔØ·ßÓ¸ ª®£¤r{|ny¥¯µ¶s`e:_Ye?MZVnwexmwYlt^s\jYODY?ZLSWBXmgVetmzwnpzxv~tzz
~stbv[L?l<W0U1^RSd
kyfzoqt|u|z}xx¦¿ÁãÞÊÖÌÉ´ÕÊ˿ٹЦܺŻÔ׳Å>JBR/E6;MJA;X1PTÃÊÁ¿ÒÏÅÍËÂçËÑÂáÑÀÞιÎÇáÎâÅÚêÔÈÃ×ÌÄâ¼ÏÙ²©Å¿Åֽϰ© zjc_b[HHYbUKtUNbFumleyv~nl^ctjucloeeonuralClSx}]`brp¿ÖÉÉÁɾ¥£xus³¼||¨±³¬¡{YH./NXiYZa[l|gmw|]\TPSC^L9]=^[Oge]m_iqcqfhgxw~oo|x«|zi}jwzo5K at NpZGU`R[^qhu|r~~ur}st~xx~®ÖѼËÕ¸ÒàáÖÇÁÎؽܮé¸ÄÅűµºÌg>-A*F$2<2=T)\T:OÙÏÔÛÑÎÞËÍÏÚϺÐоÊæ¬ÖÍã¸Â»ÊÈÏÔØØ×ÑÌÓÛ¼ÈÓϼdz¶Æ¹¶Í¼®wv`B4;JXTB[TXGXkIAq}~stqps}eig{taamoyzlx_]Nvhh!
fEUllt±¾ÚÚÎÆ÷¯»ÐÒ̯§³¾ÝºÓ¶Èµ|¥··¸ruHXI]lf3OWIfa>vakbpjE_Ha_
Ab]
XVKqd]TmMt|tzxtvwz°®¤¡¥¥£{lioz_Jf@\meQJBagyw\t|suyy|qv}ywk¸¥È¾¹ÑÕÒ¬¼´ÖÊÜÓѼÌÀʧÆ}VD4>.7O6H!KY<,XU¤Ï¼ÞÃØËâ¹ÒÍÜÕº¿ÇäÔ³ë© ¶ÛÃÏÅÇÒ»ÍÆͺ߸ÁÒÆÈж
¦²±Ûɲ¡ ¤|j^LP]SGP^/\HONElhx{w|virxvz{b_aqu~{gplip}V[]Qbsy ÏÖÓ×ÙË ´ÀÓÌÒÊξ¾Äȳ·®u£µ¯»µªzjeKd?SH\c\hi\lPjenjkXgghZYTY7e_ipKsV_fipynsy|q}¦¬´·¨¬º³©® ´{yumsT|k_e\NY>ZYrasurwju~uw{||z}~zµ¦¾ÈΨÎÈÛ¸ÍÂÞӵΨËr¶¶£]1?@K?,L7L:(JP(;áÇÀÆáÁËÏÈËÜÈËÕмÓÍÅÒáå¿ÜÎÆÙÕضÍÍÞÊÚÏÓÃäÕǵ¥ÀÕ¾³Ä©aIESUOH?bcHQ]Ymrusj~|xx
zuwl}qehvw}xcj`brp}pWK`KTfn½¿ØÜØÉ»²ª¢¶È×ÊÃÜ·¹¤³Ë«
»»¦saCSLTPRG?QcpqTHFUhHYhfjJRdRNYo|grgf[ody|x{~
¦£¤½³®«¾Ä¸¶µ®»¡¢¦{
g\t:vk{]negXtzzr|zv|x|y~§{£¼ªìÊÉÓÁ¿ÄÚÒÑ«¼®Æv¯ØÖÏÒ©W!&E6@*1=<BTD/RNÒ»äÍÎǦ໮ÔÉÆÍÀÉßÆǹÃÊÚߤÝÑ°·ÈâÆÒâÒ¼Ô·ÒÇÁxv¯¸°Øª´ ¢wFS^VLUWFY9dTS\9wkuwwyq{|m~k|yshgqpz{lyajuVugK_Nc\Ufp®Ø´®ÔæÈ¢ ¬Õ·²Ûª¸¦rz£±´ÐÌÀ£Á¶jeDYb_^GXlKQnjja^^U`UdemoxvT^_qk]]^ktqmw|z}r
| {ªµ¬¬¸À´¯²²¹±·ºÂª³µ ¢|kwsykra\du|y{qwx|yv{oz!
y§ÖÆÕ·ÉÕÁÓÎʸÀt|Âδ¯Õ¶¤«//U9/;JM9,_/HUEÊà¾ÝÖ²àÜÁÔÛ¶ÈÅÊÒº××ÎãÒ´ÑÛÆÜÑÖÈÊç³ÒÈæËÃÝ· y¤µ²ÛÔ¼µ¬rr^b9LFKP[_X_JMhenuzt|{t}u{~}yw{WmmX~xsqnt}kujT_9aijsa¼ÓËÕË»Òϸ¥¶¸ l¤½ÊÅÒ¹ÍÔ¸¯kdUi6WaorI_NKtaI8d_ToCDpe\L_mvn`GvviZy{pzq¡¹£±±£º±»ºÄ¯»Ç¹ÅÏËÍʼ´ÂÍù¶¶¬Å¢lt{zu\^lzzzwm|wjirvpk¤i|ª°¦ÒԺ؞ܹ®wy¹µ¢Û¶j=S+(K5V(F:U'R],LØËɰϯÌÂÜÖÐÄÍØÝÖÌÔÎÎÜÈË×ÕÎâËÚÕ°ÃÒÒÖÀŽѮ°swy¢¶¸«º¯¶º£¦}RXHP^PWPgOOM]n_as|v~y
{styxl`lwwjniuXguisiYSZlDAw~z¦ÞÐÊÝË˳¨ ²¹ÃÉËá²Ì¯É¡n`IEKeR]tY_mE^ZKYG`JGi_uiVYqsvTepvifIupxdw|{¡«¤°·³«ª¹¯µ¨Àеµª¬¼ÂºÀÔÔʹ´²ª¢z{ffcsnmnxz{rrvyz{
jxunu£¶§à©ÓÒÀ¯Ê¢yvzrm)J6R:'E&_(DIR-OR¦ßÚ»ÞÔÙÍÝÕæàÇľ·ÈÉÁÂ϶ÖÌÄÉÉϼ¯²ÏÜÃÛðxo©ºµ´Ô»Ì½~{fo<S?^NV_NTX]_[litovuowpzzzzyuplqdc{hjkx~]\MBI]sohv~su~µÇÏÓÁÔÕâÑ͸ÁºÇÇ·×ËÊͶʺʷ¼rnPU[_:JTT^F[HUI]M[J<\va~kfsmNocaPTSk}xxn
¬Àª¡¢¬¤¯¼©¨Ä¦²ÃÂÛÌ«²Ã½¹»¹Í¶»¨¦~u|
wqttz{p
tkt{vty{n}y{uu}·²´ÐØ¥ÆÀ±Ç²©
~{ ¥<,/E1>K'U<BBC1K@ÀÒÇÒÎÔÌÔ´ÉÎÓÑÏÍÎÑÎÓÅÜÂÞÉÌÎ!
ÏÏ®¼³ÂÏÐËȢⴥ¯«Í¹³À¯cb`Rk[UBYV[\ZZduy~{{tx}}yy{~iU^xp
hqt~ima^xR>qj}yw³ÑÁÕØÀÜÐÓÉÔÆ×ÑØÂؾÒÇÔű®{jXJj;A\sBPlHPVQPyeVHWkz\cewqv>]hkEJen{|n{²°¥¼»²ª µ®ºÆ¦À·«º³»Åµ®½³«Â¶³½«¸½·rpwtvxqu|{|{nskjszywyruvpx
p»§²Ê׶»ÀÂ̳ª¬£³²«ÈÀ£¦-YQ2.=NI2-N,EB;@ØÇÎÝÐÈÂÝÈÚÈÂÙÉÈÙÆÏÛ»àÌοÕÌÔ«»´ÁÒæÖ¾Â×ᮼþ±¬¹´ ¸¬µª²º³¡r}ec1B.aLbZ]Y\gqsgjvprroypxnox}ypysimsp\Qisnwnr`_FVWrl^zsgrh²ÅáÕÁÙÎÎÐÝÏØ×ܾ͵ÑÉÕ½¡r{h\I]@]`c9Wd+IEZQB:SH_xObkYa`VRmUdAXjomq}~¦¼¢° ¤²²¿¡¿·Áµ³ÅÁÄ×ʼν¶ÎÓÓú¿ ~{rxxvouenuvy|kwtbpnq}tÀÅǸַ¨¶ÓÃÉ´²¡³»ªÎ±;@(@V<"4;RIAL,NX®ÚÊ·Ôµ¼ÅÖºÚÃÕ·´ËµÉÒ°ÕǺ¹ÔÈÜÌØÈÄÆÁÂغڼÕÃвÒϹ¿»±Ëº¶·¶´¡oul^aUlf^bOfinprvel{vz{{}|xroptwxs}siVa\Xo{pxoiIDPPE_tz}TnWddx°ÕÍ×ÓÄËÐÏÊÝÊÙ»ºË²»{ig`ZbZG at mTALneJT6QRo\\a=[e[rkNlWfPM^]mtm}
£w|
¸±À¶´Äθ´¿¬È¿£¬¿¼µÓÂı¾·Ä´³¬£¡p}szyuikxynz~tnttm`ppdnvn ²¤ÊÔ¥¥Ä
³É«Ö½~¥«-A<<6GFM4L;B?BU¼ÎÚÄãÂÝÍÖÀǾÐÑÖÝÌÑÖÇÙÎÈÑÙØ Æ¹ÃÖÒÐæ¼ÍÛÓØÝÌàÐÓ¾Öج¾ª |hY at P?X;]Sot{pbsr_rqttt{lmv|vkjw
wzjcMbggswzuY^c_X[Zg}zQSQYk{±»ÃÛÆÐÉÛÊÊÆÑ¿ÁDz¦npthYaT=O\V7^hL^<WpOkP6hJ<ReE_ntea!
SHmR`]|ury|jslyxvtuk ·¢ºÏɹ©ÃIJ«³·´ÁÚ»ÄÆÀȸ±¿Í³¬®{w|zojjbxwriddffemrsnwsurxi¦¼Âµº§´²ÂÀØǽª©
h|
z=GN at 2JP+2/=M$IFBÎÃÖÚÆÞѹÝ×ξÅÊÇÑÒÓØÕÈÒÞÏÙÊÚÁåËÃÝÁÒ«ÖÌËÐÒ¯Ò¶ÏÀԲýÑ°³j
j^NR]`^C^qrcttcssh|}~y{hutsqooqs}vhvhyhWn|jkc`L]CcwdUjwi`jOS_fn{²½±Ïº»Ù¨Å¢fw}pPi?]ZoK]TfBUJYDK`I`UI<ia3mI`C\TY\Pnvtxl~¢rv
u~r{~u¡²ÔªÐ»»µ¼µ¯¹¼ËáÐÏÆË·Áܾ±¾ m
||zqnj`te]ademy~rlo[hemw~¢¯¶¸®»ÇËԬ¨¼||yu8>8.O-1 at C\Q2NR;KÂÙʽÑËÔÉÈÑبé¾ÛÁÆàÜÄѨ¹ÑÁ½Ñ²ÒÊ¿ÃÏ·ÞÒÎÒǶÝÖÂÆèßÇÓÊ«²ÄÂwle[@_=uZjnjdlvmfo]^{zvxht~pnoc}pyxienjrntqgRZ`8n^t9~e^nSb7bC_bvny~}~q~styaTYh at gZfa>UfBlf|bcfFfRTI[diWhXiFa\s}q}~mw~µ°´²¡uzpjm}£¹³¸®¶Ë«Ä§¶ªµ¶µ·¹ÌÓÄÄ°·¹½·zwiW]]pvov_ylrX{Rfhtfyz
v¹Ã½¼Ù¸Ú¾Ô¼¦¹xrV2/3H2X<?'<I5L:JáÉßÈÐÇÙÏÀµ×ÞÒÒáÃÐÞÚÆë½ÜÔÒËÚÖÔºÕÎÉäÍÉÙ×ãË×¥ÚÐÚÇ·ÊÎÅܹ²±i[MkUaPSLeddp}ws|qowryoywntssqwujldhtnspxssh^IorQl4YPiy[BU`Z]6eiwvmr{zr}v}zwynZPUD[HOYfkIQa{ZdrFZhJQZqmcambmVhhybxxx¬ÎÕÒáÊÌÍ®¥u|
·ÌÜÅÏÇÖ¦ªµ¶ÀÁÉÐʶµÔ³®°±°È®~oqumgZqctdls!
qnrniya[Xm|t{À²¬»®µÒ²´Ê¼Å¶°¥Û£ÀÑÖ)7UM >C)RGI6Q(iÃÆÊÍçÐÐÊÓÝÚÔÈÙÉ
·Þ¿Ç½ãÇÓÇÅÌÅÊàÉÓÕÓÍÊßÈФÐÚÍÐÆÈ»ºÈÆ˵¥¹mylT[<LNanknmu}skruszmmnhrgtzmathkir}uy\ukwfdOYGg_g?h~tl]@?O6f]fqrminr|u{sz~v
vjkpj\RggFjY at MShTjzdKT9ZQTQ_mvdfefdjr|uh}x|ÄÚÖã×ÒÃæÓÙź¢¢®ÐÚÕ¶Ú°¼»ÁǶ¤²ÆǾ¯·Å´´²¬·¡yvvontYh\m_fa]i]Zmou|tq¤¤ Àа¡ÍÃÈË«ÔÏѶIJ¼PM-+N%LDF at Z(Y0XJÂÄâÓÙ¾ÌÓÑÊÊÑÖ´èÏÐÕÅÄÊҺȹÕâµÄÉÉ´ÆèÝÇ¿±ÈÜä³¼¯© }¸mmXMRPeqegw{y{}ncgQfxg~zj{}p~qupszr{qlTRpMa^WXCSi}teY]P<lFRXUcsomg|xvy}uozue_bfdNbMKaNd~rsdNHYigt`bkoj\f^eapl{}sy·½áÅí¨Ä¾ß¹ÜÞÄÔ¤~|¡¹ÜʶÃƽ´Ð²¯¯³ÌÆ£©ÉÀ³¤ µ»£©xog`cdqkyfhXMaK[lfewuh|xr|ª²ºÑÆ«ÛÓ¬ÄÜÕÓÞËجÉ.02J=I#]&:<F0MMHËÄÓÄ˶ÊÒÍÀåÈâÏÑÅÖ¯ÔÑÍÜÊ×Ìä´ÐÛÇêѳÌÄÑËê²Ó¶´Ãª~{ylzv¹»°nleT\?i`dhnwy{}tls}~rjjulxw
vtypikhvwzywrngbgO_9[Pr]zmpB_^A_P[Lazrtpts}t}q|z||xrol`Rf,Z8\fSpTia`R_<?NJVruxlsfof}q¥ÖËÓØÂÖ·æÆíÍÝÇ×Ç´³´ª£®¼¬³º®å¿Ú¸È³ß¸Ýϼ³²¿¶©»µ½ª¹¨Ò¤µª}hr:LHYQ`PPIf:NcfMMpqvzl~wxp¬¢£Éʱä³ÆßÆÐÉ·Ç¿¼°3UN-C2L*-J7DL2HIɹ¸½ÛÍÔÐÒÕ«Ò«ÈÛ×ØÔÌ¿ÏÆÝÈÔÒÆÖÝ°ÀÏÎÊã·Å¿ÍÁ¸ts|y|µ±¶l|gEYcaa^EYcoqqsoktozyzypwrkplzo~s!
yqhggzzpry
yiWBKSkS^apyTY6<eRSgQascqzzyuznxw|rkoxwdNk?XUo/TwySOC[;a_]v{tweqo~punr{{|·ËÉ»»±Ù£®¯¾¢º×ªÉ°³³ ¢±ÉÒÓÐÙܼÙÍâШÀË´ºµ°µ°Ô´Ä·¿·jzr=effkVaO^fE`POblxlw{|{y
~¢Í¶§Þʱ×Õ¨éµÞÏÄÜ®?0/*:8T7>BFHP5/c¯ÂÜËÙÐàÔÄ»äÞÊâÇÊʸƺ̷غͼޤÈÛË·Çɾ¶Ï×µ°}o}§s}mVRiOT;\Fzgrqjiccmrxo}|pw~kwuv{}qxvqqnyjgMDcTmLM.`sueXB[fIKUgCRgVjxysys_rl^cqChcP_>~eZURMXLfPgjcbtyi}pqrzquymª·ËÐݳ |{}{¥½Ñ»ÖÉÒ½µ²²½À½ÕÊϦã²Î¼§ÒÈÑ轨¢ª©¢°Ç´±wonR`clnRYD[2PXTSrh`ypv~z{~h~|˶¹¿ß¦±åÆÍÇ·°?@5Y8.-<D)NHD*[;ÓÊÄÀÚÊƳºÎ×µÔ¸ÊÒµÎÜÙÕÊÔÉÒÆÒÛÞ¬¹×àÏÒµÓ·¯°³y¡wxjP\eNj\Ocnzwmjefqqwnzbsz|}Zrnv~}zltwxxq~Zt{}ttcdNW>PCWFhbwEW=yyovDX|qyt|v|xtnw~uf[bbCNjUnIK[\gVJ_Wkz}p~iyppwztw~¹¸Ä³¤È²z¹¼Ç·ÓιÁÀÛØØÙÙÏÔÏÌÜÕÞÚ®ÁÒÀÌÀ¹«¼³«¹¹º´·uxxRGHteeRM]Xo=g_UItu{z[n|
l{mz§°Á«ÀÏ×µ¬¸¿Ûä¡ÕR8-S*8:9G)M76SL[ÉлÏоÁÜàÎîÔÈÉÊÒÖÙ¶Ó©ÚËçÓ¼²ÕµÉÕ¸ª¿®±ÒÜŶ¿Ìskyqzd]\g=^NHVQ|y^]hp|luvnxnk{~y}y]dzusf}lYrxutshZJdDWZZ6buZEIetqtuwcYtjspoys
{tquk
KcVlro;Ixm[/=hJgmuxxuw{!
xonaym²µÇͺ¼ÎÜÁݼ»¯z¿²¿ÛܶµÎÒ·ÞÐÕÌÛªÙÎßÍÙÀØÂÓлӴª´±¤»·£±º
v{BhKedF7Y4W8e[^d_j{mx~tzyȽ¸Í×Û˷̽©9%S(']8<@OR8F/V<¾¼ÉÖÞѽ¶ÈÜÄ¿ÇÆ¿ÞÓÕ¼ÏáÐÏÚ»¤ØÜÇØ¢¢°¼ÁÍÒªÞΰ½¸¿ªv~v
wwbaI\[F`XsKm}lzzhpXoZir~owtuq~ulpwf^rqh||ts}yrCbmELUnsJbuy8FdmhHswy~}vuwulor[{hYu`ILQqhWcRgyYnw}uppoow
}vlr{¢Àȵٯ¦{ßËÓÆÖÏÐÚ¾yw¢ãÞÚÒØÖÌÌÛ¸àÎÏÞ×µ¯×ßÁ²ÒÏ·æÃÏÁ£·ÉvesN<YLOORSM_K?TLlb}vwnvpa|t}}t¸À¾¥¸Ì¶Æ˹¼ÃN9F-S$G.Y1b-ZANBç½ÎÐÖÕÊÀËÜ»ÕÊѸâÉ×ÛÎÓÄ×ÉÍì»Ã¶¹ºËáÎÜ˾ÇØȺ˵ӿ|vznkBcALEkIhp|bsWPg\|uqx}nnysbi|fqpm_dhoi~xozm|vs|`?gEcYdaa2Ao5gV`Rvtqjx]ho{vtskhsy`\QWjBYd^thEb\usalu}ojomfs`z}±¸³É«{ÃÒ×ÇٰıàÕ¬º¹»®½ÀÑÏÄâßÈÈй̵ÉÊïÓòýΫۮÔ鵨¤¡«²i~kO^QG^MKT]-Sa`V]eurxnx{pv}zswrc§ÏÌ´¶«±2,>-I*K.,?C@:EVÊÍÇÏÓÏÔÛÙοÛÊÖÇßÁÎÜÒ־櫯ƥ·´¹Ý½ÛƵÆϪëÑ¿Óß¹p}wrtq^Y<Db\g`THjrnwrftyjm{iory^qnz}x|{owfj_ohkxnplGMYKSk
vimH=+gMJ[fUicuso}
txRcuqseffbqdEaq^uqx}}wqrzxpq{bx¤¸¹ÏÚ©¡ª¶ÛØÆ~|³ÝÞ®vÖÙßÅÌ×ÇÝÊÖÑÞí½ëÒäºÏãÆÈÙ²ÉĬÊų¸¦§±¦yg7N78NBGJUXb$LlRrkevzz||z||}z´£ª¿¦¸QQJP4?9LAUC2<V#TÏ·ÏØÙÐÍÐÎÅÒ!
ÑÁÉÜÔÆËäËÔ²Þ±¸ØÖʼÍãÏØÈÑåÉ᥾˺ȩºt}oovrMVR]DHIT[pOoNKiNuzdr{p{~yry|vpqqfhXbSZUf_n|txwYddLfnyqugc8p_MLTSVHp|vh}ywzwwkuljbxncI{ptfxpzvwy{~vk{|¬®ÛÕÕÆ~¡¯°ÕÈ»¹z¨¿à¶Ïç¿ÐÅѹвÆÓÃܼ¼ÛªÏ³ª®¤©¥}¤pds\BcMGjIZR<Gih<OFlkyuooo}wrs{t©¡ªzp%B)<<<9:19PD at KX¼ÏãÒÆÈÌÇÃÁÐÍÑÊÖ´ÑàËÜÚ¾ÍåÛÜËËѱÃÎÞÑÏÅ˾ÉâÂÖ¿¢||
cVXZBZUm4O]Vjhvwlteoanmsgtpuzae~dsrvqtke\ocszns{rZ3Xsobk:gM8k?WSMbh|j~hyy
mk}m{
mr\Xgydjustrmvuqmszrdt¡¯²´Ö¿À£dµàȲÀ¬àзiºÅ»»ÆÌØÌÓïáÍÀܳÐÊ̶ˣtw}n°§ª¸Ma9_A1e/HhY0XXPdlwpqzq{|{|r¨hjuff|J>/J-Q:S(;:;B at CLÆÍÖÊÁÄÏÒËÁÎÒàÓѬ×Ùҳе԰¿ÈÛµàÜÙÓ¯ÛÖµâÅÓд¦ª©yp}
hnigLZaU=OEp`Zbk\\pswtx
txyoupx}}v~{xicN>h\rsd~ivxeuGcX}cli at LCL@`OV\bVgZ~m~lisqvx{vxug[tprcMdri
{qvsxpijmoml¨«¿Ï¶»Ä{µ°·|©{mpÄÁا¢ÃÓÜ×ÒÜÓØоÛÄÊÓÉѸÖͪ¦}x{
£yyywdM4`P6hFTY:gS_]DpWlwzx~x~{¡¡y}b*:I?!;/:0Q>V??JS³Û®ÓäÐÅÐÔÆáÕÑÓÞÍÛ¯ÚÑâÔÒ×ÛÚÌÖÅÓÆÒÒÐÑÚÊ͸²¶ºy y{wdcSU[8i_Q\^CsvyluTn]oykvx`wxgm!
wUjtgi\qgdPJjqdk|>Egkr
pta\d\PbuOQb>Xkotn}jkzvyzzvpwu{snfycfh|]n
ilc
qmrnwxoq}»³¸µÇ¼ÒÊ¢¯¿³tyÏÂؽ¹¥Å§ÏÙÐËÖ¶ÎÎÐç¨Ê¯¼©³v}
{vyt{t¢ts{{v@[FS=AG<RgQ6M:Gb<Pw~vto~
wy} ´²©»¥|wz<G&D at QB^C6O*,Y&UºÚÖÎÞºÏÓÐØÅ¿ÝÏÅÌÊÕÖÕÌÌÓÏÈËÓÛãËѾÂÃãµÅ¶²°±µ±³¡wf_HK7dKWGP<hj}~nrddvsusz}a}|p|~krQ{JgVf_N`g`nkuo~\cIuFwSTA=5izsy\IdgMXkVqd|vpkYusntv|dibgZnrVluPq~|w{vn^|v~¦´²³·´Á³¹²¯·º¹³¸¯¶¢¶³Ã²¢±¾ËȻܻ̽ÈÖ¦ÕÊ´½§¬£unwmq~
tg|xvmjL*KO__A`j;RZY/YQ{h`tzm{ju§¯¿|i/<R3=7A()TT)KP:R×ÕØÒÅÇÑßÅÂéÜ¢ÑÃÂ×ؼڹã³ÛºÚ¹Ð¸Ò½ÞÈÙËÎÂÖÄÈ·¾±¨ªycYR^9f=YzW5okr}Rivnhv\itwofb^mt~|jniecIgRQoFyamuqkrZ=bfnoX?P]UaxeFnqaXf|rctgrs{wkt}zhywjheHgvypntekgs}z§³Á³¯³¶ÞÐØשÍÖµ´µ¥
¥
§¨¨µµµÐ·ÃÂжìÉ¿¤zuy~zxp~pdDE^S4NGg0P?X(gZ[aXo{^s
gp
s
°£z|sF?$.b&]/82^:0F[ ÚÐܵӽÖÊÞÐÇÝßÙ¾ÀÒÞË׶ëÌÙÆÔÚÍËÐØÑԹҺدËս̰¯¨¡¨¨³¡{sSO at WVN[K=b]zx}a~rwdrkrdl{x~sqmdsct^ZojiNMal}ckkySXnG[UO?_WgvoYq~wggojfpp}ptvttkpqjs[Q]wnjcumsklVjd}w ¢´µ¸Á µµ¿³ÍìÌ·Ò×Àz£¥²½¯¹Å¯¦º²±¡|
}}y}qx!
xyxhgeRE:@cLZDkD[]V+hWDgsprgzxut}y}r~o¡¢c.<:<0BC.6JAS<K6^ºÖ¬Ò¾òØÕ¿ÇØ×Ã̪æ·×ÃãËݯʸÙ×Ðմη¿¶ÔÏÊÏÏÙÞÇØǽ§³¯·WgEKJEP^qb1b=iZmpn{z|mvsxp~{}o|i_xflcJ`Vl_bGh{fjzz\PkkuePG_XL]wUnwpwzzuv}qv~ptdb~~nqjtooVmnkyqumuk~gbyqwx ¼´Á¶±¦®½·Û¾ÑÁª¾ÃÉ´ÊÐÖ¦ÃÀ£¬º®¯¢³³Åq~¦¡ª¦¨¡qtyty7W>is[J9kWI+>H^WFWZo
o{xqu}}x|£©ulvmwX[I;G86F.QJ4DAHKÜØØܳÎÌÈÄĨØØÉʨÒÓÙÍȳÖÐÖËÈÒÓËÒÑÒ×äÂÕËÑÜÉÕÏ×Êѳ ¸§p}=hORSl0_LQutz©~gm}{qvrlckZukjd}|`raakjyKO^fDrLrm^ioo;0GlXN^k\ocz}~qhy}ys}nyptlm}|xprlxuxdviWuevxmtesu ¸±ÈÉÊêÑ¢·¼Ç¼ÚÇ¿ÜÒ×Á±Ãª||ª«º¬¹µrtq¤£µÁ¾º²|xobulr_Y<Y7_Z>RfVEVRiXV6Sb]dsgnt|wwqv~{q.?+;BH=*OFD7:LKÇÐÎÖÏ×ÜËÿßÖ§¿ÌÜÏâÌÝæÍÏÇØ䵿μÎÁÐÕ×»Õͽӯ߼ÒÆÕ³±£TJSL\G<UlZc8cokky{lirsgy~vtp}zvpiik|\mhrdmonug{T\QRUOok]ThM`nydzzlWzntejomr}}fy{urdncacksaq^p^egbpw~¯±¯³ÎØÚ»·ÙÜÝÄà¸ÍßØÁØÞ÷ª£¤²´Áµ¶¤Å|xx~d¤µ¿»®£txtzn]RNJebXEXzvOZ`L6ffLaSk[xlsvyys~i|zi4T*U@(;5V.WB=_2YÞµÒÚÚÊÄÉÉ!
ÞͼêÄðÙÄÝÊÒÌÃÏÔÏÊÏÕâÅ×ÃÓÖÕÆÞÌËоÞÍÔÍΪ¾¤cO]Ff>P`5]<uwxka~ovysmk
f{rps~{^yrolnB^JvClAubZRtgqgWDO_Vplvo\{k~phqgx{wu
zo}tljy}lzcbv|[ym]]Rmsllx´·ÈÞæ¼Ä·ÕÈÖÀ¸²½ß°·ÐÆ®»ÃÄμ·¦¹¯¹²¼¼¾¶¯}mu¥b¨vymn{®¸¶·½µqdjqnO^aZ_EJS`Sakf0bg:dOZNgd~t{u{{d|inzwxy06W)H+K0-P0D<(RQϲËÑÕÐËÛµ¸ÍãΰØÅÞÖ¶ÆÛÄÛÏÝÙÍåÆݶÙÁÚÐÁÛÞ¿Ì¿ÏÁɽ£²tkKc?QhQFdh[c^Zmqox}xbujsmj}mrv
kyhuskk{o[smsZ_utEYP^i[i|ux~~mZrpWiqmt|ttqpszvuxnvtvEh\vqis¥·°ÖÚ±ÊÌÒÔÎÜ°«åÚÊÔ®¼ã˱´à×Øν²Á¹É¹»µº¼·¶°¡§n|oy®{z¡¬Ò±zjxwo?7\@j[Sk2YqrY]bXA\tQVr}ZoY~qsk|xtk
ryh(\.5A-[+N7LS?W1U°ÔÌãÌÚ³¹ÛÌ×ÎÇåÎÎÎÎßÑ®±µØÓϺÞÒËк޺ÏݺÆÊÔÎØßÐÔ´µ¬¡½iNU>\dMB[UYK`Pho~m|u}v{uour~}qo^pmwnqujwervppxkpkTncf`RLW__kk|Tx~uyk[gkinygvz}nfzrjwvewevmqs]qq]`hodUmn¡ ª¹Ñ׳ä©ÒÊÑàÏàÑÖÂÁÌÐÒÜÌÏÜËÚÝÆÐÙµÊÁ½·¹µ®´±¨¹
rm{z¡¯¬»}tskt¹uiIY\[^O_=:UcU{V\+IaXDZJQmgzwhQzvvsu~hs~2D<N%J-9C4EI*JI[ÏÕ½×ÀÛ·ÆÝÑ¿ÒÍÐÇ»¿ÛÅÙââÑÍ¿¸ÒÊϾÂÜËÉËѹÒͼ³ÉÒºκ¹ªmwtJUTLTXEXVP\ZVinxhslqoskvhplxoprjsw|tjlrbomvmkkygvn`pWhXGjZQi_vunn}gl{vtiwy{iv}t{l|u}pw`em~uz]xfuneY!
]dsvp~ ¦´ººâЯÎÑÝÝ»ÍÝÎÆØÌÈÐÉÈ¿ÖÚ̸ÉÔÔ´ÀÍ°Õ·ÛÙä¹¾²||s±ÍÅÑÐÒĽÍ}tª¡qxxWR<d2UdT[j=OAp^\QTVduX\sfr{z}plk|~yh|)94D8:;3K'F6H:9MÉÈÓ¹ÝÐØ̨ÙÞÄ´ÙϺÆÀÄÈ»ÀÆÓÓÆßËØÀÅÔÙ±×ÍÌÈÓ×Ó¿ÂÜ®®¥¢hkZAJb_YTsachQWlxzwz|{{q}t~zertvsyqjxjt~kut~iwofiz]a]YHRMNk~txx|mmpVlempzfq{ye{tqVamzPr_[`]kyxw¬·¶²·³°ÖŶ¾ÐÑÎÈɯ¼®ÃÇÕæÖÛÃÙÖÔÚȵ¢¥Í¯Ã²±²¢Å°}`t ´ÏäÀ¡¦|¬Ö·¥mo|bqdQ6]UAiELjA9]\k`<iibOIQX[dyNrh]rwkyxzoxvv|}wb$OF6,NL+=<3K:OPKÝà¶ÏÑν¶ØßÃÎÓ¹ÖÏÎßÒÍϾÏÎÖÊÔÙ±ÔÛÓÙ¼ÚÏÄÜÔ¹ÇäԺʾ®¤g|tiOeRQaM_T[dEbJbfioouuvqoerjuqzjytzn}mcly{jlws^wysmltjhrMYkL\sc7iSa|oonapaosmwgtzRrx}pkzwjwzwho_;St{
gbz¡³µ±·³ÑËǵÜÀÛÊÉÔÌÓÌçÇÄÈÀֵҷѺ¹µ¿´Á¬²ÁÈÔ´À¹q®Ü°zgvÈÎilxt^ZM`1eW>Od=kp=^Sb`R8RWY_jsc
[yignyhszrzx{vptww4=8GG-9<W-R=@:6\¥¹ÍÆÊ»ßÉØÃÊÁÜÆÌÍÑÐÌÑàÐÚÏÓÆŹãÍËʼÕÄÕͼ¸ÃÖÃÁ»Éº¯yhm[FeQTcvRjPaie~ggmpxz}{q~x}
zszlxe^supontnhos\qb}spapUZDVAKfsss}lis|jk||}spzxwwz{xj{xm{k]MgZfn_h}}«¼¯²´²Ü¼ËÃÓË䲸ÏÁÒÜÐÀÔÊÎÇغܽ¿¯×¹´¯Áµ×»¹¥´°¤qy
«¯ÂvÅÉǵve!
quxl?N\?Mg at Z[Jb][[XVUNLUdUDAWvy~nZ]xdq{u}zrr|woh5DB)?,O$F68K+I
HZ×ÔÏÓæÈ߸þá¿ÔÌÎÚʼÃÀ¿¸ÉÔÛÑڽ˼ÙÙÑÍϹ½ÕÚ¿ÒÖ׿¼ nraUPLMi`[ZFW_G`Ya^gepirsuvnzqys|uxpnffvphxx}w}ysZzi|wnDVM]Nm^]]ePoWvoi{y`zunpx~tzytl
gennvrpGVWZRf|uzu{¨¶¤´·¿³Ô¿ì©ÐÍ×ÍàÌÜÐõǿÑÇÀªÊ¿Ø¸¸è¾±±È¸½Ë«²°ji¯¶
É¿x~i
}a[Z[BkT[Y^XjtLq>vJ[GJEP\WNPdljxY_quwq}|qzzgiun26(E=;&RE(A=K87K¶ÊÞϽ®ÏÓÕÞ¿ÀÝØËÔÆêÐÑÊÏÑÛʺÏßÔÒË¿ÚØÐÒÚÑÐÄÔµ¸³ÀwwgyqS]Ynd_bOXVgg_fNWvq{vr}~}{xxy{ws^dqjg]roypui^uwir[nXaicnv^nYrdwy{yytvw|twqxxs{mxv}q~ZlQ`bfr}ooxt}~ ¤¸²¶ËâÖÃÒæ«×ÀÈËÍýÒè¿ÈÍÐÕж®ÚƾÝÉÞßÓ®±ª§q
°ª«wcÓ»u|~wxjGhL at MJE_Pkztnlk^P7QgIVc at Bh`YLyunvwkyy}qxuskoU4HD; Y*K.JKBA1RRÔɲÎÔÝÓÒ¼ÖÚÙÕÏÒ×¥ÔËàÝٺ¿ÈÝÐß̺ݸ̾±¾ÄÅǸtqsU`;hEWnk[nKcZ_Pdiktn{t~lwzouq|lohrs~wqO_urthyrqqoNVc}RlKUG<*qZ]kows|xqz~uscxszs]}uluwv}evfxpeaIZXKfqvw}x¾¬ºÕ½¾ÂÌÍÓÊØÞÜËãÓÚÓ³ÌϻƻµÒÐÅÌÉÖÁÐÊÓ·åµ¼°x|©y|¡~»¹Ì¸w}tqrz at kKXa<R3]t^u}W<9l9^;N>[SWa<CgWp|ru]s|w~~w{owl|lswG.T)8'?(CM6X1EMEѽÕÜÇÐËÑÕÐËÉâ轸àÍãÎÙÃÚÔÓÎÄÀÀÌÈÂÂÏ˳§ÄŲ§§~sweZA\WdT`brawaceZhxlt{{zhv!
ofsuq}vwr`jyn}cU~gnuVoca5cWcLIjkjrkuq{ox}tsw|y~|sovqz
itrpzVkcgEem}qt~|prvººÜÒÐÞÌÚäÅÜÈÞ¨ÊÞ½ÈÞ¼ÚÉÚÒå©ÎÛÈ̹¸Éß®ÔƼw¤¦ pø¤nyo~yuwYBKBf=JofusOlsefTbQJfXQGTYUcQZKelzvjrk~kdv
onv\u1,FU`G:/G5OBQYÚÓÍËÉÃ͹ÑÐÔã©ÛÒÖØ͸׸ÝÆÍÀÙÒÚéÜ»¹µ¨Á³³´©
xpslXV_RUWa`cYWXUWdkourgixypwgc~p
~{
puc]XsWoqknkk|sVrcyhK^gDa`crh[jwoojh^{vtxyyvppyztu{vuwfqp|VgHXBdoty~}s¢µ»ÆÛ·ÊÛÓ³³®ÄÖÎãÐÛ¾ÛϽÞÀÅÀÚÁÀãÔÌÒ¿×аÈr~·¯¢wª²©°k
{wt|cMb\]GOO^JS[yqyT]Wa/GbCLdYYZJ]PTJjc`hvxivptqsfin+O)k$Y0\(8Q-AGR¶ÒËÙËæÌÌÎÝ·é´ÚµãÁÕÕÙË߽ر¼ÒÈÊÎÓÈÉαàʼĿÓÂ¥vxsopYgJS^gRGNfPbYWolbuKozx}gt~i]nzrynqk|xxntzgfqonv~YUJDTLrCvov|tpjy}~ejgltkqwlY{qvmtcvWgSeCa^{yvz|pv{u´²ÄÛÈÖ¾ÛÑÐÝÍðÆϽÕÌÌÐØÕÌÁÒ××ËàËȾ¿Õ½ÑÖ³¦»±¬¡j{{pppy~{wo]g:?a:ZGLBa[sugi{b?>aQHVFQiGQMYO\D at M_zzp|txj{
zny.;Q*N+Q66[\9CKÁ˼ÁÚÆÞ²ÏÀË̽ÛÑÜÏ´ÇÂÐÊÒÚÙáÙί¾ÊÕÊÜ«ÙÑÄÓÈ´sv{qpiqb_QghoZ[[fddokdmnmt}{sv~f~{md|h
}sjdzd`oz~ym|m{x_nmIOO:hq|rfdrouzx~xdzjuahjjkov{|zmx
nvnshjefR!
`bdqwzkqz
±Ò͹ÊâÈØ»ÃßᶵÒéÜÀÝÒÄ´½ÂàáµÐÌ®ØéÈÏݾÄÞÁ³¤p¿±¥Á¬
tpnoyMwXAQf\FfNSKy`ij6UW`G]TVKUjH4R>bD_NL=Tb\6LMifkusul@#++9L27_05_!IOKÄÝÈÞÒÜÏÖÓÈÉÙÙÔѱÈàÖÊÜÃÎÃÇÊÝ»ÂÎÙ³¿×ÎÓ²¼ß®±¡}uqsl~rIfbdW`We^Vajelulmfhu{x{\rrdvr}t~oqmylpmbjyrir~hzfteONWV][|swYWdbskypqztrzyusz
{yuqui|sstrcXLUQjr
y{{isw~pz}£¬×ÂÍ·¾ÛÉßʨչêÇÚ¾¯Á²ÝÈsv¥ÏÚ¼±àμÖö·y{¡¿§¸¿¦®´²¥zzybywQpTPBEOLB`6DIh]h}ajRI)FTcRA]9LQ^AA?XXBRSK[MSJTMCKA971.YFM+/M#4I'N;FHÓÑÓÊÕ®×·ÞÃãIJÏÌÑØÅÂÆÉÖÉßÌÙ¦Óë·¼ÌäÉå¸à¾µ¸¶ot}qcwdafLLiz_PeSaofp~kRfqnw
jwt}{osetl_xyyqu|{uuyyxtdqnURkD at dXqIqamWXRWXmykmtvyu|tp{}{qn{tn[}faQqmxovygp~y~~Y~zk£·Ñ¨ÏÅÙÝÊÍÎâËãÓÜÈ»ÌÓٻ˿©¥wfÁÃÈäÓÎØƹ̢y«ý¾¾´±¹·¤|qjarqkzbb:^l]gEKB_^hBuP?DK>NhUP:KUsE7]R3JLMA6_FSAY6NUC_IBWO3O14$2T.9VBXBFGTÀÔÞÒÆÉÕÆÚÛÆÛÄÕ³é·ÞÑáÊÕÉÇÅÝÂÔÐÚª¿×Ç×ά§¶vytrgddq|qc{tmwgadmtzwms^^uxhpnsrwy~~s{u{wk{`ocXr|pib]ZcRcL_Wb`y{{oGJTT^_nwhsswmxw|uqupdw|x~u^cpkY_uywp}npyvzvpw£¯ÒáÏéȹÅÙÒ¯ØÐÛüÃÉÉâµz»ÑÄÙÌÝß«·®~²¹Ä¬Æ¶ÚæË·²zk
{stf>KYHHH2UXY<>>ZUVTeY=QA[AVAMJXIH:_^ZTVW>\@f4SO3V8EUN!1"B7I/+Q'!
A*T-2R®Åϱ¼½Ü«ÊÒ±ã͹ÚÖËÉÓÕ½Ô°Ú¼ÑÔÕß¼ÜÕڲкҷǶ¸yswlvxay}sbXkco\f]dpuUdv|~~~|jvqmqgV}pf~e{l\lmbiaH\uqYk2]\wz}moyvieLSQrxzkw{Wzog}wsn{qNlky\rlsXzg}uu||
~nz¬¸»ÐÎËÈÏßØÖÖÍÕÐÛÏÉ®ÅÞÇ»ËÏÜʸ¶®°Àºµ´¡r¢¿°»»±Þ¶¦½É³wpwbmtraHxO]gaV31ZE6ZCS]9=C_]9[:^DDJW<SN\HC=8<8UI^;C9:PIb:B:@X,*R V-=/a+TYYÐÚáÏÚÎêÊÙÖÉÕÜÏÐ×Ó¹ÆÆÓÇ®ÊÛÛÅ˵ÕÆÖÍ̾ÃØ»||wrx\pWpTlg_exk]xrrq}XhXfelraleswksu`l}vwntVWy\tmvlJ^jjuKNTblwyw}rTu}w[a<tars}xn|x{}syo{qPqpx^kDnX~y|gujnn{¶ÑÙÑÜÄÏÌijÀÓÇÓÄÐÙØÕÏËÑÕοÄÚű۲¾¯¼}yx·Ú¨ß²ÏÞÖÄ©¡xn
z}k^0Jkc.B8NEVS.c5WM=QUdKCY\JN at M=6QG!bQW-[UXNF:D7TSL9AG-;H3#S/7 6K=EL,2[´Ì¾ÌÒâÖº³Ú³Ö¹Ê¨ÐÔÅÌÚÑá×ÎÓÎËÙ¿ÛÇĶªÝ¼Íª«gv{uygftkpf]_iUja{uUlnip_e~qq
qwz
sqk{mmjKv]~UnaWkw^X}lBNprtl~zrlQ`Dqw||~{pw}
||fmtvrb{k_`fjlpzs~t{z|oz}{£¼ÌÂÑ»ÌÀÞÒÌÏ¿¿¼¯²±¶½À¿¸£ ªÒÉÕîz|¬Áß²ÐÔÉ´¯ÀÁ«¦
}jstkRZc5UO^@$cY.FHONK7JJaVCETI[SZP7aaHB at N=T+ at EN>M^<S.GMSL4"`/(F>?4e;7JW¬ÛËÑÎÎÐ×Ê¿ÙÕÓÀÉÀÈЪ¸ÏÁÎÅ»ÌÓÁÖ½ÛÏÞÇͳɶs{{mu}s{pmNDQk||xupsnytnrj!
mysvucwhiitfdl|{^c~nrpv~Jvgk|wrrekihbYpuxd[n|x~x
¡n~}r
tx
st]
srp_p^pPcgsyvwpv}{~}{¦³ÖÍÇÊÁÀ¬ ¦¸Ú¯°¦x±Ì¯®uuryu¦ÃÌâÅÄÂÔÖÊÁ·²¸{~{_DUbU;]DObN=:[g;IRGA`[b2MLVBH7=4LR675NaM]@N?@EH5B<c2HE(#Z#!?:DA<<AMP?JÖѯÖÞͱÖÛÍÒ¯Ö¯àÏÇçÊßÔçÅÓÅÎÁµäÅÎϺÃ̿²|ksrzvyp~m`Vcw}te^b|egdtxj`nrvntkxi{ususdborozves~iprb`lnqv|s`URTcy{xwxp|lu}]V{S\N\dOnonxrm{tyt¥®ÎÎÌÖ¯¯v
y}s¦¡~}}y~s°Ã¶¦¿±¦r®ÎÉØпÌ×ÕÑÕ͸¬y
esclEpsHdBKZ3;KQ2?`?dLR6 at VS?F=JBWV`RCSkJ:.9/^9-Jk5Q8O5Q7;.="5[*3..[>P3O4NÖ§Ú´±¹ÓÍÍ¿ØãÕÃÆÒ´²ÏÑÄںɽÙèÕë¶Ò¼Ù×¹Áº|yxq|wxtvxkeX^or\zpLsjahjWkxpty{xjxnijoxuq}jmnvpht~xaoxm}
my|uonpPYg`ty~¥ku|qtvsfmneYj`aWareqrmtt|ro|u¹ÔÄÛ°z~kv}ovm~wz~{yz|z{¯Ñ¶¡znw }}§¸Ï¿ËÒÆÎÚÓÃÀÁ¼½unsHBbO0O2^ALPFAXKO:H8[WXG0gdOUFO at CZ-b1HFY^d7Bk*LF5a1Z,PO0E,B'/X<@)V<&I5\Á´ÝºØÂä¢ÂлضÓßÆãÊàÍÁÓÆÔÄÝ©ÉÀÉݱڮ¹»~f{xtpzolx_QVl{q~bgkrb|zuckzq|wh}Kc~}v{ccnmjrsjp~]gh|vm
q|XyvjwjbW[Wr¨¥ ¶~v
xihVtw{rdhhdVPWfyguvqxt~mr}z¥¶Í©«}~t|zxtaqsw}}zwyt
ypzxyÀÈÔÃÍÒÖäÖ!
¹³ÏÞ˳º£xyzkuC]XI_JZZ<F-N=_1;TQ[B>/J^H at JH\LNCa=Z;RY?.DGBAMS?UJc<K8?5.D1.],)4I1G\A$]ÒÕÎÌÔ¾äÈÊÄÌÃÂÓÙ§ÎÍãÔÕÐÄDz½ÌÖÁ»È·ÒµÛ|s{}wo|b|~vgm|zsciSfn|mzpw|{^
V{tiY[dnqudxrwuumfdX}kyqf{Z]h|yajYZYo|^[\^s¥©¥±»µxuxi|
v^`[tZUBibgKuol|wkuor{|y| zn{qw}wxu{{{y|}wtnuu|k}±ÏÐÒÊÒÈܾØÞËÁ¿ÀÆ·rz~mtI`JC[=K(TYG^ghOPVE_CQUGEFBUUiWYR at N?J8DIfW^Q?>N5;5:O:C34C7N<'*X SN3/>S\ÐÊÉÀÓÃѸÖÑÇãܨڽ߷ÀßÒÊÐÆÐÐס¿Ê··µ
pr§r~v|]rq{eT`}UzPwrquxiz}mxq}}jaasZjx{]tvv^nZvd|hvuopwnVrWren[gxzumgyzª¶uwyr\}}Wqs}|kSidcI_aoju_xYt\o{up}~ulqwv
tt|
w~xv{}}o
e|fzvnz¦³·ÍËÈÉѶԹÏÊ·°³±³©¨s~px`;JJJ5RUX4 at P/e9R at 6<VC4eH]TZUfUWGO9bJHbE`?ZA+\6V8UUP0UU05 at -01PI.?B at NO=0VÔ®ÅÑÝ×ÉÄÄʹÂÇÜÃÓ°Ó×â®Ö¨ÎÔÝËßßÌáůĶszv
u£»tp~{dxx
u~qXjgzc}gmmz}hzua{we}u~mXcdowwrmq~}Ru}siwuSq~r^Y~vjuqechg_zs at npsr¦©±¶~v|qikrsuo_LsfBaMgVhp{k{hvkoy}rmwz
{t~jczu_{apzt\jfzruv~l{·¸²ÌÄÅÐÚȲ£Ú׹Ƶµ³µcpm{lAV^K5cM at O\J>VaSH at J@;WQE(B7_VkR;e at W,CO<LTCK<T=O:YS2AKZ=H"C$8=66,!
R-@,5/VE¨Ù¿Ü¸ÖÒ¿Ø»ËĹÏÉäÅહ¹åÓÜð¸É¶§¬×¬¥§¶yxxp~~
wuiquv
pzl~
Lr^quxds|worufoknwmxn|rrfuRszb\|sdex}\fn_MlqvRK{w¯«|rys{~|werSarycQTi\Wcmti}onjkx
r~nyynx~x|swm
~txy
t\j{xtyq~~¸ÜÝÌʽ¸Ï¦ÓÙÔ»µ®|
mwZihE2B2\4JX6;5O/Z=ZJ]b[4V|JW>`g_Y at SJ`Q7]qNK]<@;K6A:GXXP;N/8/LS7B&*KMJT=UñÂÄÊÛÕ½Ò¹ÍÕÛÏÒµ¿®ÒØÓÙÅ«±ÄØÃÔǬۻµz¸À¤m
vveyfr]lqlSrvp~|ylxzkwtk^wUsUnt_jpxhkzxvl{f~o[uwjnfus^mjrm|~v||~{jkc]pjjegz}bbIcQikesrZ]\r|rszyw{_ku}p}y|
wycyp
ºº¡{snqoq~mÄÓ¾ÅÎɹÍÙÉëÝú¾¬¤}~z^a2SSUeGHObSgZJF*L:R4PS^Y8;UfVdoa_GH6:J]Q=ULSUGOfc=o>-KXB#>9-"LE)c<H3:95P¢Ì´ÜËÝ¿½ÌËÏÉ·ÊÒâËÒÖ½ÐÎØäÏÅÀ´Ç»·¹|¥º°±ÓȲ¥n¤kxpvy~bhywhprplwu^jetew{
|xvxzzurfy`slptfwkr{w{{
rRprQ}~x~w ylw{£~~jzzkj]oTpRh`[|h|hy[cqvxz~|srx|kw|yqqj|yupdk|wªäàÑÓÒÅæú·µ¶wv~s[>^OQ/?9_<'41=A4a=QBvjQR2WREQUCUdD at SJdZ=GK at W=6S?41EAOXJ:).I'?< ,9.":MI(YAåŸѹÍÇÌÕ¾ÖÕ×Áº»Ò»±Å»«¾ÀÔÌغÐdz¼ÔÂÊÕÛ¸®¹²¯©µ©~xb~amunwdzles}_|{nLmgd^}X^|kStiinkZd|or
my~gmjzv{bhtx_
vx}¤´«¶ztp}!
udw{oYtffK[UopoeOqim`tttuy}ytxyz¡®²»¸±°¢}rtszyzkkivw}q¬Ò¹¯°Ê»Î¿¥¼ÏÒ¹º¦§qi~X^\Z-Wh:Z at LYQ_4\LJMB_0nqdWF;R[QcoYXgGAPF;FIM^cUU=XXVNUKAGC:/624KR>6ZM(2_"d½ÓÍÉÝÆÇ×ÄÅÄƱ½ÎÒÑÍãÉÉÎÙäӾպ߲ÐÑÄÔ¿Ê϶¡£ÃµµÕ»ØÈsl{yekkbrsy\|~ro
zi|mrt~novnkojlk{qa{kQt^vmo{x¦¢uaV
~|tr°®putiywzqy`^aUa`cVpUcoW{cnvrhgsz·É¾ÒÖÅÇ©zys}p
}xpldrtyÌÊÖÌ˺çŲ̂
i
jpC7]MN82jO5GL2M8FGCXIfdX;,\M6g?mtNkz1EgXbrlW?ByrhYhGNDTF+-C,H6L%(U3VVYH×¼ÊêÖÏְݸÝèÓÐÐÄÌ˽ÌÁμÙÌÌ׿ÜÉÕÀÂÌÎàÈÍÄ·£ªÎ³Ï|}vkngn[}PxTruk^r~Xxwxv}TsXxnzenkfg|qzqvµ´Ý£ wuvswi°³ÒÄòz
ns~vzynn`oekpGA?ftOfdCix]evkaeqwuon{º»ÑÙÔÝÛÈظ«³¸¶u|yk{xt|{tjpqu}¬µÓ½ÛÏË´µ¦v|Tjhq_O?X]6WHQ.SIa;_=XTZjW\ug7[N[}¨¡S_\<fs3Ulz}`crEHBRA+'422BO,]R.5XDM½ÔÐÅÓ²ÖÌÒ´Ê˲½ØÓÕÀÙËÙÁã²ÚµÖ´ÇÄɵ²ÐŲǸÊÁÃáÓ͹®©©ywa[ckTlboxxlljgotmokxrvojqsqz}pehz[}zkqµÔÝ×ÔÙ®¤
´µÖÓ³¨ª}|vxux|tlcrqneoQoaiLy>U]l[asrtvtnks|~¯¿ÝÌ¿ÓË¿³×¿Àָؽ¬s¡~tqyusf{¹ºÊº!
Öµ²¬¸}~n}zyoKJ7_LMER at SWcEJK@FXK;8KWhOle7b]w£³¹Â·r^^khT`o± d
}U=3N1C)9%7J.7B=Z']ÊбÝÄèÐÕ¨ÕÐÊÜÏÕ®±ÂÀٶҸܵÃÂÓÐÌËÎÅÅÍ»Ñڹس«ÂΩ¹ ¶¸tutz|li}rqx
ic|way^kqnqx}UhWxw~gx{t|sy}Sxzt¸ÙЪÇÃåÔݵ½Á»{±À¦upk|pcq{ZsbkfYeJpte`JhcfunZnAx^xxÞ»ÑãÕ¸ÊÅ°¿Ð˳®±|{prh}o|s_hzzp
²²·ÉÏ̲µrk|wu[FGK`>NMIJ^UBQnLOFRQAQh9hn?fZ
v£´»ÙË°Òpjerqw
{¸¢³hU?*-V20CR8@%MQG'RSÈÒÞ±ϳÒÕְմض¶Øá¼ÂÌÕÂÏÓÌÈÓâ¾Ì¶ÉʾÄÑÅÀ¤ÒÂÝб±¾²¤¹±qs|ugL{y}xuq{hk}ss{fjtf`{uu\jsjrfg_rstuvi}~ª²Ó×ÌâÒêžÁ³ÄÌ«{¹ºÚÐÀ
|ilqoSmuZhIKuriIpFneR^IAdm]Mqq}}´Ü¿ÃÍÂǾ·®ª¦«ÚÍÍ×µyob{spjzmown¤»Ä®È³kgH}pLR]UDX<DMbFOZ`HYEPZ>XHfVbdgmcv©¿Ëǯѻ¼qqiYv¯º
¹hCE(#E,-JA93-:>DPº¦¼½ÆÐÏÆÆÌÎت×ÁÕÓªÔ¬ÉÂÔË߬Åá¿Ò©Ñ¼ÕÐÈÑ¿ÐÏáƲ ȸ¿°²smvx[smz~uujyfxSyczwe~v
elpuinm~v~}~rzy^|£¾¸¹»¶ÒÁ·ÊàÕÙÑÒÙÉФ©Ê¾À§¥umzvhS|pypVfQ[PoYJxhupx^dYNUTInT^fnq½¿ÁÍÁݾ³¸ªÁÑÁ§z{so|rtwy~^p~¦¶·§z~|yw~t\d^D]2TWeDSBDM\Y<VZgQSLS\UcIk
¨ÂßÈÌÙã¼Í³wwvn¦»¢
yyd.4']<R-HTIL_7\ÑÈß±«×ÍǹͷßÖÒ×̲Á³âÉѮͱÎÉɱÒÌ×ε¿ÐɾĿÀ´Ôä®Ë¸°}u|}t!
cYyTw
s}xnsijo~{}u~tifqqqfiruko`lj
x°¶ÙÁ¿åÆÖ««Í»ÓÓ¬´«Ó©²§s~~l{|nm~lm_kWwwcuudOBdMTeocaSiiom}z¡·ÐÌÙË׺²m®®À·~sxxpmlbf|{¢}ywtf}lvDoI*mn`sNN>_G^boiUwbyms|p}a¾ÓϽÂÝ°Ù·¥vn´µµµÁ¶«£o3E5A7A-HL3*63-GSÆÝȳáãʶήæ®É¦¬¶ÎÓãɽ¬ÑÊÍÂÌÍɽÔÕÒÉÛϹØÑä²°¨Ô¹å給uuwxBm\ptRx`niu`~uxi_rsx}pnuvvvrz}}} ¥«´ØËÝËÙÑÒÖØìÅÙÇ̶¤±¼Á®¬q
x}{ss|j`dpVa?OdS^^l^bdIn7ONo^_qy²¿Ó¿ÄѶ¨¤vux}wv¢¹¨¨§|tbq^ndufwgyz~u}}whpzj>fd7h:NLjN^O_Vdyjoorx}uovzÃ̲âË͵ݯ¡sltºµ©È®±{ywa(C/G224I4-USAQBVªªÝÉÅÍÍÒнÐĸÝÐ˺«ÍÝçâÉ®µÂÎÔÀʾ¾·ÑÂݵ·¨ÎÔⱿ«»uzwkgrovesp\y}|ri
~|Ycj
n|tu^mu
xzweplqvUpud®´ÔÏÍÐÐÃȲµÒªÕ¯ÊÅÅâÇ®©»¥£oiX[Tp_epTKj{acCR?YO]aM_KLS\vppr~}¢³Ê½ÈÙ®yv|uywwx¤{ut|znnsf
|zm}z}ojnT3a_;af9Xm6;BdYy|¬¦¡
iÀÃìÒÓμ»±vev®±Â¥Â¶¸¢¦yk3GE+*Z+D"L5'Q$bÖÖªÝÏÞÚرÐÍäÅã´×ÏáÛθöÆÁȻ޺ڧ԰ÇÇÚ¼ÍÐÊÉͱ´ÔÙâÇÅ»¡«¡rp
qrTbme{slnxf}Vwnv}x~x}`u||{^yp_|yxlyxj¤¨ÊÕÏÂÍÁÔãÕËÏÔßÔ×¼ÊÇÊ»µ§©}zw!
wr|rzgqsDiCxn{fxXZkb^XPkQgbY_jc]]z||°¿¿Ñ½{~zmn~qnqzvr||ttts
ontnrnOvbdfyz{cxZslos\TPYlYnT at cegORl©¡±¶»²«|~ÀÀź´±´²wn¶ÁÓÑϹÁÌÇ£pl8@)#S!/V/K6<L:PA½ËÏճάØÈÚ»ÀÀÄ륵¶ÂÙ³ÃÑÏÎÈÕ°ÚÇÛξٿ·Ï³ÄÊÊ̸±µÀ³°¦
u}nDiuvo|wtuhvxrx{lgkhSunpuy}lx|px}®»¼×ÒêÃȺ³ÑÔâɼÎÎ߳о«©xpxt~~_ts}w`DidfeaqomuQcLKb@][NJQ;^`]d¬ Á¨|vng}u
}zz{{pxnz^|s
t|z~hn{~txXBaGZq?mZXVGCF`t
Å·Èõ»¢ux¢µç´ÏË¡s|{Ôµ½ÙÚ¥º£©enABE,;-J=-KQF2?:Rà´Ð¯È¼ÃÇǯÛÇѯݦÏÌݳһÕⶸͺÏÍÓ§ÌÊÇÕ¹ºÄ®µÇ¯ÉµÌÅ˧»±ªtuYhheXbor|t{ttrr{uqg{uWonenYx|ws~Ut»µËéÃÛ´Þé½ÝθÓÐåȸÍÐÕÄÖ¶»Åµh
xwlq[\gvMornLXBxiM`fOQHY>hgSR`Mlkpy{ww}vzmjstlwwy~{vou}}xipqVyeexnaeLcI[`S[N_kojy`̾ÈÜ´¯´¿®¢rxvz½«Ð¿hw¹ÆÂÐÔϨÎש¤¶z})-7.?32F(\:9N at Z^Í´»ÛÇÏÓÀÕ»®ÀÄÖØÀº¹ÇÉÕÎǧ½Î²ÔÄ°ÛÇßïÐÓºì»åÍÑØ´ÈÄϸ³¯ £}w{idrUUxQqigtevgwt
l
v}o{yej{~
xvz´ÕÁÛÏÑÊÊÊÓâÛÉ«ÔÇÕ·¿ÉÛܱÁÁ¥
k_xznmobkm`}usmynWUaDC`BKu_3^cC]{u{{vz|x¨r}vvu|uvpwlsj|ywxwrpkibv_xtu
oovop^U]T`fUvxyw{zx±È»¼£¾±»
tv¯so®¹kzÎݯä´áɽ!
¬Äº³_B1:>>A?Z0DFD'J%Gä¾ÀÌݼÉܲÍÐÙÐÇÐÂÔØҽʿÐÍÇÇÕÑЩѽ¬ÇÍËÌä¹ÑʽÈÔÄÉ«ÏÁ³¶°¥{{zwcs]\qj
yviclp_{zvxk~phrsgl[ks{qkyulv«ºÅÞÑÒß¿ÊËÒŽêÐ௯Í̹®¹°Ô³¢z~m{zzxiu^d_oloakffhbMl`NMNWUp<FL]QXcOYgt~}}y¥l{|~^jysq}v~q}w|pkyzwhuosp{sislstYuVW]kkw
}}|v¬³ÀßÌÂÖÙ³²¯nx{p~
qylÉÎÚսݹä¶Ëµ¾Âu5Q/2>A5:+@:].]Z»ÆÔÛÇÃÛÎÑȶٳ޹ػűÚÏÐѵßÂÔÄ·ÕÂÞÇÔ½äÇÆÖÍÊÆÍÖÚÜÍúªsw}reiUbnjogr}}qx~y{n{ywwzx{n~wzzn¡¢Ê´»Ò¶³Ú¯ÞàÖÄ¥ÄØã¬ÉÌÎÅßÀxdgvwfdX]a{wtcrg^W\K_wI:u?]Ym.cSo^icSXqyl
i}
p}ªªtx~ltp|zuxlysj|u|w}unecs^z|\xzj¯
}kzw´ÓàשÖËƶ¼ |~|yvïӽÒ×±Ò°µ -2)M2Q/D=AMJ/S.KÓµØÀÆËػӽÌÏÉ»ØÊÝÓٸپÏÙ³¶ßÀÚº¿Ð¼À¼È˶ÓÇÎɬÌÇÌÏ©À¯xr{
~iNkcR}_lyZ{pp`
zsns}mq^hexz^oilxz~r{®ÊÒÏÌÔØÌØܺ®ÞßμÅÐÉÔÁ¶Ú§«xxp|glolXegwuicyhcVlPbfHDihBSF at 5@fP+?N_n~}jb¥·tzuryp~y{|q}ulx|plcjf|y¡opzstvkx|q
sÁɼ㨿´¹º|uyux~«º¬Õ¤Ü³¹®Â¯Æ´3O'56EB&=2:3W*[V ´Ê£ÞÒÇļ¯ɼÜÓѶ®ÔÆÇÔÖ¬ÁÐÙ¶´ÜÒ°Ïß³ë«Íرʹ½íÏÕ¶Ù¹Îv!
}u{wqtlqp^lkr|vr_
p|gx{tyxcvs}ymutwmq||²ÂÁ°ÛÙ°ÌÇË äÐÒ¯Ó»×
ᇃ
Óµ~~kvxwhmnzguo~tsmswki[gwPISYPG[^HjTV at WckZVeojku|rp®§°~r~jmuy|so}yu}zyuwuqmhy{¤©«ÅÁª¢¢|yym
¡¤¿«ª²½¿Ú·»
¥§qxtq¢´Â¬¹Ü°Ã²¤Á³xC.LL$U0C at DRL?D6PÊÒ¸ÚÄäÎÉÜÊÖ×ÎÉÕ¼ÌÐݹ¼ÃßÔÌÌÂÆëÜÏÑ«»ÐÉÐÏÓÙÉÔÊÂä³Ä¯Ïª~wpvxhlz{zeGhWm~`osWvxqrc{smrlcit|sqhqmzbsxv¢«È¾ÇÚßÎÆÖ¶ÜÃæÀÓ××ÃÎÒÆÓÀÂp|sod{Wohx}rnwpusddjXMkYOM`V?d-k?A;e,b:BSepsuxr}o
§¸¼¯£zm
swyzy{rmpwfqbx_|{¡¿±¹É³´½¼Ö·¯¶°¿¸È²±¬¢¡~¦»½¯¶´Â¤ydz~{ ³²´Ä³±Â¬;EK/8#7$I5.2N8KRDzԶ¿¯ë½Ï±Ç½ßÎǾѦÛÓÑ̯áÅãϵ¶ÑË·åݽɾʬսԨÞØÍ´Ó}wz{gv~q}x\wrvazgyzpspyr~fy^t`xm|mwt~nqx¹ÓÊßáÐǾÔÀзÜʵشÂÙÇé»±{vx{wk{wrdVcelwcul{k\c_7YgOSVXm.fbg9[YFelUTo{oyipr¦n{nyl\u{rzy}zmo{we¾¸°ÒÚÖÔÒÖØÔÕÆÌ׸ÙÏÍÜȺѶ³¨Á¶¢u}t·«¿Ü¸¤·¥¢¢£}t|rk|ª´°±«Â ºD?/*Z;K1O0OGG*MA¢±·£ì×ϱå³ÍÚ̵ζËßÒÕʺßÉÎÀʹ·ÎÙÀºÒÈͬÍâ¨ÕÉÁÐΰx°~psxxtfa]Ujpvwr|inklqxXvall|{owXquczx~z¤ÒÎá¯âǹÞÖÓÏÝÜÍãÕÑÅãÁǹ·|outwRvmlHer|}z|~xqvbiYfiRZbNEb?[ZH?FlYXMT>HJpqp}y|~v|{tuqn]~|o|!
|ut{gn°ÔÛËäßÎÖØÎÎÓ½ÔÒ´à¹ÃÙÎÃÆßÈÖÔÉǴ̸¬~±Ê´³¸¯½µ§º°µ¨
{«¾¹¤A;=O&/B,>ANPL3GÍ×ÑÊÃÉÌÏʧÄÁÄßÉÂÀ«ÈÄÃÈ¿Çκ×Ï¿ÂÛͺܶâͯ¾ÓÓÈÌÀzu
ix{xiUk}jc\onotj|]vzf^qip}t{{n~
yf_qux}asÓÃÎÔÁÞÛÆÏáÆÍØÓ¿½ÀÅÈ̾µ{tz`zfAkgUcppmntx`iytke`dBcO`LNQ8PXI2J<W]WjOiakuyi{twj~vj
i_zjwu}usikkls}ksz¸ËÇÆØÍÓ«ÛÁ×ÕÐÆÔÒÑ×ÑÏÒÐÒÒ¯¾àËâÉÊÚʹÀ£¯Æ²Í޹;˺Ϋuvyy}®©´°®¦|J8'2(R?21.SGF/P]«Ï»Îé·±ÄÔºâÑȸ¶ÂÛÖÜÇÎÛ×ͽÏÒÀÔÌиÂÁ·Ü̱ÁÒ«¼®sv{x~z}}{aJbKesb_ruv|yjLgr
_gcquOxVb_PuRXxu´ÐÌÉÔ½Þ×ÃÌÆÍÏ¿ÑÐß½ÊÕ»}xnk]LfNPYm4lswwwz|{
zfsc\aCfebbMAr at cF]\_\F/=dKh``\oXnqytm|l{{niu|~vwwg°ÇÃÏÖÁÛÑÇÊÞÙÓÙÁÔ¶ÞÈÓÄгìÉÍßÛ·ÈãÛËÇêËĹ¡|w~¸´×¸®Ë±Ðºª¼·}|vg¨®¡r
i)*JB7R!AJO,6UA8IÀÄ«ÖÔ·ÐᩥǴÓÐÛº¨®Ñ°Ø«Ë¸ÅÊÚÃÒÁÖ¸ºÜÛ®¯ÇÉÙ¼mqwx{²}omr^drXmqclymp[qY{m[x_shosesco{{
oglQDiyµ¯Þڿֹޯ߮ÔÅÌܾÇÃÈ© }xu}hOXc_C\Vbn|wtwytklwoi~xjmvwdqOdZ9ODjJNDBnia\@O]]bqd~{nbsbpasdvjzwv\js
sq~}mv}y»ËÉáлÛÅÈ»ÒÌØÀÁÐÒÕÌéÀÍÓÛÙºËÏÍÎÜÍÄáåÀ¯Ûζ³¯¯¬²¶§ÙÏ̲ÙÔºÏØ´~h
w¶!
£¢³Z1`,8?D#G9/UQ at 0LP©¹ÅÉÐÔÍÓÍëÊÕ±ÊÑåÍÈä¼ß²àÊÂÕÀÐÁ×¾Ãƺ½×áϬ¨|
~tz±|n~xj|ttayhxqqfzp~qlKHzavvzr|PJdVv^k[=YH]pw}°èÒÄà²Ý°â¸ß°³ÑÓµµÂ|{oekVGMA:_VUh{womnm{rtoXSUzMgJS_\gV_oC^V6<CS[kR]al`e^np{nm{k~qeqz~}gtn|s}p¸°ÂÕÓÏÏÆÓÒßËÛÔßÍÑÙÍÞÍÕ¶Ú½ÌÔÛá¿ÆÍÔÕÁÝâÌÇÍ¿¸¦²º¸ÏªÏ´¥ªÊÒ¶¡«s¤p¥±¯¶¤hv80?C;-6E=L:3AG at J¬¸¬»æÀÈÁæ¼ÅªÑÄÓ¼®ÖخӰҽ±ÁʾÑÇÏÂÕÆ·¹ã¨
«£°¥w¶¢º©yOxR}ptyo`V[arxu^l]kJPcjmg]WrU\puXJO:J{z«Ê×æÌéÇÂÍÄÇ»ËÆÕ×ÕÚÑ©t{qapXjQLWv¬urkvuwnpjyskjJLRZdhX:QfV>V;Xaa]ZOXMgFbRhemwxtlzuplpnhyuwszk¯½½ÌÃÉáϼּÊÔÑÅÒÒÀÏÁ߾׺ÅÑÎîϪØÅÈÙÄÄÊäµÄÜÓÅÃÛàÚÛËÂÅξËϺÖÊ¡¨ °~
¡«£°a5K&+&5P5'>DR93T^¢
¬Ä«äÛ¥¶¾åÊÈËմüұÁÎ˶ØÓ½¸ÑÎƾ˸Üu¦uv¹®p
·±§µ»¬t|xjyYnEkvojxwwsuykr|?_luj[uXIZrkKEPZbMCdl¹²ÓÇáĽÎǵÌÔ¾ÙÒ̧ vtowxwoXScÅÁ¨¡¥yrw}uxpxgHdqb\J[6cfn?HOedW:C\J^ZUVNZWgWbNEeWtSoUr[fnpsfjPeYhd¯×ÕÊÅÛãËÊØÑÈ×ÏïÁâÍÊÒÙÕÚËÆØØÚÈËÔÍÖá¬ÂÓÆÉÉÅÌÑÔÅÓËÅÐÍÕÓÅÄÙÖÔÒ¸Á³º¾£¥µ²¤yº¢¢k3EEI+=:8IT@'R\!RÔ¬²Ô¨«ÔÞտΰ®Ã×ӼλڿàµÔÆÄÎɪ®ÑØǬly~ÐÏ|¢ª¥®ru{kmny}nn[prnXnd}oqJFVKbvjPrbORnojE at WL?qr©ÊÃÜÒ¬ÍÙ¶ÉÑÖ·°Ñn!
sylsho×µs¢¬¥ptw[w{cf`{JUh\\JStorG8=`Sf-d`nXaMW[J[iPmikd]ae[cd^cubufvi||ÀÏãÊÔÒÖÔÏÙÙÆäÎÍϾÁÐÏÍÙÓÐÍèÉÍйÑËÇÃÍÐÊÑËË¿ÙÆßÏà×ÍÕÌÔÓÙÛÃÔ¨ÓÒκٮÊþ£¤rxC9"L;W*AL!ZD40XVªÀ°²®ªÓÕÅ̪áËݼÆÑÎƽµÈÕ®µÅ¹ÂØÑ´§ yo·¦Þ·j°
klzqZwuksx[iafkjdzhZyik\^ENEpjnOkJgAFBN\GZg~y¶ÐÓÖÞÑ©×ØĶ±½¾Û¶vruwnr~¶Ï³{z »´©s~_n}dsFlhdWiCiHt`VYR[dbHKIdal`dFF`IWZ<dULTL=YBXNguxszKUjbrÚÑůÞÓ¹ÚͬÝÆÌÎÛ¾ÉÍ×ÞËÀµÕÍÎÊâÍÔâ×ÏÖÖ×ÖâÍÐÏÞÎÏÕÇÊÂ×É»ÔØß´ÔÚÃÏÑÅ˱ݴ˺±§¬}
¨gX1Q<5/FD*O#8UM77¤Äº
Å·ã¯Æ¥¾®æ¥Ì¼À¯Ø´¿°Ø·ÊÑÛÌãÄÒ¯¦Ñºh}w|µ¹Ô~|®°
u}|ulmtuPe_pKTd`giNYXRg at UOVeaN^tLh\/SAVkesµÐÒÏ¿À޴ͶãÖ¾¿¾vub
vr`hwo²²£}©¼ ×»f«gleh]nJb>NTVmRKapZTWFXghPJ[qwj]^kZZiNKhaZVe`CZZcler\rnsr«ÍÝÆÓÌÉÑÅÄÒÒÞÒ¿ØÓÍÃÛÌÓØÙÐÓÆÊ×ÞØÔÎÉÏÖÓÏÎËÃÎÔØÐȲ´ÚÁÒÏËÁËÒÃÌÏÆÄȮͻź¶¹Æ¾¶¼´ª=1<=+Z-#b6UW/0OW±¨{ª·Í½³ÒÌÈÞÆ·ÚZ?¼ÜͤÖ^±Í²´²×ÂƧ{zm
¡ÄTÂп_LÀ¤yvu}k]oWz{Y^dW`NUaXRf_h\fPaeUuhgxZS5E7=UIhi|©»Ç¾ZVÖ·ÍÇÚÚ¬ª{x|{pbFdb o|ªÊã˱¶·NhytsnLfmk`_bTWaao[Og[Qj3CYGUOUA>al/k0MXN>RLVVBB_HLd!
ciY`nuz¯Ç×ÊÜ×ÔÛÓÕÞÐÑÏÙÓÃéÑÈ×ÎÑËÖÝÝÏÔÉØϸ»ËÌÅÙÚÄÁÌϾÂÄãËÔÉäÈÌÈÒØÛÏÖ®ÔÁ²
µ¯¨¸¦¾Å¡ }QC/5W.4YR40Aa3(n~á¯Ã»µ·¼åɩܼÕSÅÈI¸ÃÍ\GÙÜÛ½ÊÈÉ·½l´ªv´ªTq}¢|wkrxa{fcdWvXrKQVcEtYzVIH:^]NcHPFIO\c^YSWqr µÃ½Î_ÍßÑÔ¿¯
xf{qqweW~fWpx ů¬ÆàÙ·¤§H}nnx}Xo[vay{uqhgS_isiaFiWWT`V`gXBP>AhFCZY3Pc5j\@4Hb`irwgd
£ÐÆÐÕݶÜä½ÏÚ±×ÌÈÞÉÔÏϲÏÖáËÉÅáÄÝÔÁÌÖÍɼ˸ÆÓÜÊâÊÒÒÚ ÔЫÇÉÑÈÀ˱θ±»®²®®¡·´·¥w¡°¶.23N3CG0T/Ab0:`x\ VDTÅÚ°`]×CÖRׯ_È×Æ°hЧ¤¦ÒÌI[wY¹diTw·¿^}q|q|b{wwysor]`[qhl^dbSL^NXCbcIWbUsYUYZH7:I\f|
¶ÒÖÂEVQÆÀXROR[^i
Xhk^eEr¾±¸VAƦºL¦\YWPm[RbPLQaWaK7mU at RRWZgQFDXSI~DIFJQ:?ZHVUPFdiwiJEcica¯ÖËÓÐÍÚÕÄÑÕÅÝÃÞ¾ÃÓÌ°ÜÕкÍÔÝÁ¿ÄÓÎÇÓÓÉÏÌãÑÖÐʵÐÎâÊÚÑÛÄßÖÑãÅÏØÉͲ¨·«¾µÅ¾»ÁÅΦzN;A1L.H=<?C*_Q2jw
V·¿RÉÎWÆÔYáÜXÝ«P´ÎÎÖRv~z}sjrl_n¸¢QÀ¼cUO^hxogpQp~cy~iHYGSGlJeJRNU_JZALYPa7\Qc^MhVZy|¢µ¶Âb¹®MuVp~]xpvRqp|`qaxnRya|lººJÝåFÓ»»\Bjw^zwovhWhcPFic_ESAYaNM;TV`Fm8HVb9EZfCDH>ndRY]X[Xn`fqÑÔÝÑÔÐÉÞ×ÆÐÑÎÒ¼ÒÐ˹ÒÐËÖÒÔÌÈÅØÉÊÆÈÎÊÉÒ¹ÑÏÒÑÐÉÛÓÂÌÚ·ÆоĽٶÄÈ·§² ¶£¶¶ §´°ÃÂÁ 7E=#K;4-NA5`U+?P|{|| H´Ñ¶½fºÛF¼ÁD°ÈeÏй¹Y|||~QN
!
¶dvm¦qV¦£tthtw^x}v}oi~c`gkmmY@^^YrNgZG^N]RKSUU9Y5;gF^Vv|«¸µÓH}c`yVpZiz{efvtPg[tHw¨N£Ëfᨾ¬Ë¶JWÀxQhneW]qYbr^hfnLX<WiGJIRZbP>NFb\X>bD=2OYVX3C`^RWr\\DhwÞÓÖÌÏ·ÆÒÇÉÅ°¼ÉÇÒÍÝÁÈ×ÒÏËÈ×ÑÒØÔÏÔØÓÓÔÑÓÖÖÈÍÌËÃÎÜÝÌÔÓÎÂÒÆßÏËΰ¥£®À¶°À»ÄÀÛ¢£JF"W4'C:6L=*.5Q>zp´º«YÌÉÎHØÖMè¡dºÖQÐ×´Nt{bnywR¹®[iÇ¢Z{O
hjlZ}pqz]pzzYTTgFRSV[mNQlZjZ]`G_WqLRCcWZTMi]rnjzyaxqVm{]Ugpfj|y}
vXySc
U¼ÉHÌâ×Þ¾\µO¡wt{\iIwQgZoZHl]\>UAmVUNV?MZXJgCeU0ARZRD?l_ZhodcvQhufn®Ñ×¼ÉÃнÖÖÀÑÚÎɼÄäÆÊÉÉÉÓâÎηÊßÂÁÐÕÉÊɶÐÅÊ»ÒÛãÉĪÅÕâÉ×ÔÚÉÕÛÁÉ¢§ª²µÃ¸¥Åµ©Æ·Ö±¡;6=?8@YJ1KB7VL9~
¿Sª»NÀÌWÕ³UÒZλQÁÒ¢«Is|yYP¢|dYη^}y²¶[~izllyjYyzzlyi||pXz|oa\^`]XSIGbIRPPK_gbT;<ZbWICJQL at Wcsn
eZtIvSs^pnylnqxWxg\xOwY¶³V×¾SÓ´É^®O }R{x[s_[cmuBScDP`dMQIWBCfS96IdfJDYT2Rb/g6GgnlVaQ]dskvÆÔÛÖÕÐ×ÊÌÃÙÏDZãÐÒÐâÎÎÇÜÂÕ¹×ÜÔËÚØÐÕÛÚÚÑÜÎØÒÜÇÎÌËÕÖÚÉÚÑÂÄÄÖÖ˽¥ª£ÊºÁ±µ×·ÎÆ<QG$0S7C(134Y 9Rh
Á¶T`TÀàÅÞTDbÒÑÑYE
~ÕZZKzTU·xp}TWObcUN`QnGXbxb~xguz`ulmz{uph`ZVTTUeNA[c]iCMcVZ_BUX\]WQRYspvve|yTdV{|[odzv!
ryl|by[_WrV[rSd²°¬âGmËÝÓB[ÀÕVveLZQWTlFYY\WqNTeSV3^UT[acM8PiNcbNLIYH
GY>eMadGJengmXgÊÑÌÑÎËÖÐËÖÞâ×ÏÌÛçÓÀµÇÖÒÑÅÇËÎȸÈØÃÒооÖÈÈËÃØ×´ÍÐÙÏÆÈÑÉÀÁãž©¡¤¥¨®¹°Î¸ÃÉ°80>7I&P04WPE4:ADpjh¶sµØã»Â¹ÇÙQ·½®x}p¾ÑÆÍjsÅË y±¼eri»µ®¾Âx||_{|~q
rTi|G|}{tkdbciAc8fa\fBa\SXC=hCdb<:bwitlezodkgknQ~qUboqkfhmrhf
ku~|ÂïÄËØÒÝÅ·®Ðª¨w«lutr|`Ybp{]bTZ\Ob^<;QONV@\POA?S-QS at 3neYb[m_aZFqw{ÏáÖäÙÓ¹ÈÊÚ¾Á¿ÖÃÏÐÓÔßÓÃÕØÙÌëÆãÂÙ´ÝÄÌî½ÔÍãÇÊÔæÉÎÕÌÌÛÛÞϹÜÃò¹®«¦¢ª¶Å¾ÏªÔÙð3>4<L2TV> ^ ZD`wrƳ°ÉÜÎUSH®½¸|kvÕ«Í¢nvz¸hR[Jm£¬~nd wywwl[tuRuz\oonlkje^ZBOr9c_lmaSUVGFQO^W_vunqhtw{wpoNYYyy{rsOZ`rxklvxn}andvG ¦·Î´×ÛØ¿Ø궬«t~ysvc|PuH[WDU>@Ya+4mG`Gmn^R;bF;UV2<_\mFZEg{il²ÓàÂ˸±æоÔÝäÑËÂÓÒÞÍÔ¾µÆØÁÝÈÓÈÄÉÉÊÌÐÒÖØÑÃÐæÂÂÎ×ҵѿèÃϬØØÆͦ»¯ ¨ £¥»¦¸¡»Â©Î»§«£7I=95,M?...P!BF5yt¡¡µÁÀÌÝÙÁÕ±dwf~¼Áѵm¾µ§¬ÞÊ}rn©svhwxyzyzuumuoqV{rmq{zm_G^XJ`Kba{[OSU_aQ{}n]e~}jwuzdmWeAttxeuowp[{mdwhsbpqyyfnkiÀ¾ÌÝÌÒÈ×ÛáÄצ¾amxqm~h{pjXm>ZEDg7;hN:N<iPD97U>a\?C_jWX<bhe\;qr½ÏØÄÖÜåÉÉØÓÒÂÏÜÑÏÅÖËÓËÔÞÎæÉÚÈÊɺÚÔßηÕÔ¾ØÕÇÛ´²åËÏÉÔ®»ÀÔÐÑÁË©Â!
¥³±¹¥ ¯¸Â¹º´Â¨½ÏØ©.?3M&J2D*ZT=E3J,g|qxmâ®´¥·¡¬´^fazqnvt¡²¡¡zYd̬©½
n{h^nqpmykgqpto^cgU
oV}xnfkuwjZtb9btOejhm^pien\f
f\nzeqfuKcR_lsmzrhdowpmwur|\rlo}q[kvyz£Ç·¹ÐÔà¾Ì½¶³Î̽·tpM{Vv]q_{VTcFOENSJ1;ZPT:HGNJ1V>8QV/7URmS[CQkgw¥ÐÓÐÁ¼ÃÉÑÉÒÅ×ÉÑÈ˾¸ÌÒÔÎÕÉÄÂÏ°Ó®ÉÆÆÕÖ×ØÉÈÌÊÚÈÌÁÓËÈÚÃâ¦Ì½Óʳ´¦¹½©©©¢©ª¯¡Á³¿»Ï³Àĸ~1Y)6R#7.Y((Q7N,>N'H#W4#C. 4KO'W_;+0;$.L3\.Y,4=1J()X _+*G;)+A+5H9:)@>505<3.:102>:757::62$?90%)K;=#09'5F,,42''4=>1(3;A$6+A656$5C=C,=G+5H382?B69 at 39G?/_=GPNRUHU\\JtFdJ5Yi'M7=I0cBcK8;JN+7J56D;>XH )K><FBF:<JJBRJHV0G at RU\ni««¬µ¤®¯ª½Ë»¯¬¶¼¶ÃÒɼ©¯¸ÈÁÇÈÌËÊѿʦÃÑÂÕ´»ÓÀ±ÑÇ·Íóױ׳ɤ·µÎ¯·©±²¶¨¢´°·Ì¸Ì¯¬»ÇÎI>%L'*R28\')B*46N3?T(J<;\@-7+@,&U39G:N.+)->&:Q*3;:&8P-*:9/*351;9=%.$C.2/-A+0+4$+10++294.,209&,6/*3/$(0.*(,0/+&1,+ '5&*3-8*4)**033/-.2).* )-/.H"L"//2;T8"=?3)E16A%D5GD9(X<-0,-0[62E1K451:572>?1,##D,%*&;33)*9?C.:+1NXC7K2DE1=3<9VH;G=<,IOT?2?$E3455M<S4(<1SAE4JJB4Y>HGI6F?1LCE;>J83>6>E93?K3 at 0G7EO:<UT93+&1*P<</1ER)>AF=04+5D(9396:5?4D*B,P#,?5(495A>=-+,#2$3!
<52&*9?0+6A>4/:,,23+%.0-5A,)=&3!"3!7,'07/2...&4$2.-1,+-'-2/35-*2)(5/(6
10,
2>2H.8?8+((501O&01A%A472+6FD7,,E,9"AH-6G27B2<,37":@:C.62,>-@&1+(-/.,,G-*2)-84(:#2*13"'2$3#,)/@)/&5*6)=C./3%23/H>%-):/8E/E1A,..?>H(41(1=41;104-8;BA+-)7#@3K>5F4M0N/(:C@*7*.=9(/D*>>B6)4K at N(OKE3,7BOGG:918 .91$1.?"38370'0741-0+4<5E+7941+-;>31792./C896663>8848(!0#329H2B8.+1./011+6(2.+2,-/)-0+,,$,2*)4/(4*1(6/-6#072++195%@1*:&7*++-5:2%K-3*N<976 at 346*=-4?+?3%.+61*8+;(>74562//E.+2,-3,(5#5,.0)15(6+402;.249..$:+D4;:8;,66,?%:/;/:<1=4A<:5<:F1D=;:A8/60N;H5932/K9I0 at 2792.7/:'@,TF02+?=I3:24D)50<4A4:6=5,"?+)9)2/52:H*GC405AD/9A1-21371 at 77165'40:52210:52251)+5,-7*%.)2/8+,-'36#29:&20%+-1,/00,7.0,)6,10)-/*++#11++2.)0(4,=*12&251--84-'=';-81/>64;@<4/*(F;A*?>;5541/'C'*>0D,%7+95*6-80=61340,+<**30-/,)1%:-*,476/50936760;24*-'/1)3*9),A(>=(A1;/=1735<;;861:.D2=29;/8<9,;-:9:;=(=%<*.,6:9C83C>5/)C>=+-+<=3 at -71:/M05;6?R1U0/U-M7<56D;&<.%5,;/0F6))@D;:.0*2298.C1;042:/5,*-1-)2A ,F2)5')':')919K-A9,!.:-3.:).+)':5.*);+4.)-1.03,51,-1,(+(/77.3=63301/A/)1?0F,5<)G2'.3,.7L2:37)9.15/3/41H*%<-E'/S.A:.647</)'*.,*),&+2.*.6!
+*&@/()?5252.508:>'7$8/B,H2-<'D#8F)L417181@*@+54.5=5/0%9&<*3=.=I2-<*:6//,,*B/E/C)5-I+16<1=6G427F+ at D*64FH91 at .FMC?
\ No newline at end of file
Index: llvm/test/Programs/MultiSource/McCat-18-imp/textloc.c
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/textloc.c:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/textloc.c Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,937 ----
+
+ /****
+ Copyright (C) 1996 McGill University.
+ Copyright (C) 1996 McCAT System Group.
+ Copyright (C) 1996 ACAPS Benchmark Administrator
+ benadmin at acaps.cs.mcgill.ca
+
+ This program is free software; you can redistribute it and/or modify
+ it provided this copyright notice is maintained.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ ****/
+
+ /*
+ MODULE : textloc.c
+ DESCRIPTION: Text locating algorithms.
+ AUTHOR : Fady Habra, 8715030, fady at cs.mcgill.ca
+ */
+
+ #ifndef TEXTLOC
+ #define TEXTLOC
+ #endif
+
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include "pgm.h"
+ #include "textloc.h"
+ #ifdef DEBUG
+ #include "debug.h"
+ #endif
+
+ extern double VSPREAD_THRESHOLD;
+ extern int SAME_ROW_THRESHOLD;
+ extern int SAME_ROW_V;
+ extern int SAME_ROW_H;
+ extern int MAX_CHAR_SIZE;
+ extern int MIN_CHAR_SIZE;
+ extern int KILL_SMALL_COMP;
+ extern int SMALL_THRESHOLD;
+ extern int HVAR_WINDOW;
+
+ /*
+ FUNCTION : void ConvertToFloat(ImgP img)
+ DESCRIPTION: Converts image data to floating point.
+ ARGUMENTS : img, pointer to image information object
+ RETURNS : nothing
+ */
+ void ConvertToFloat(ImgP img)
+ {
+ long i;
+
+ img->f = (float *) malloc((img->width * img->height) * sizeof(float));
+
+ for (i = 0; i < (img->width * img->height); i++)
+ img->f[i] = (float) img->data[i];
+ }
+
+ /*
+ FUNCTION : void HorzVariance(ImgP img, int threshold)
+ DESCRIPTION: Computes the horizontal variance bitmap of an image.
+ ARGUMENTS : img, pointer to image information object
+ threshold, variance threshold
+ RETURNS : nothing
+ */
+ void HorzVariance(ImgP img, int threshold)
+ {
+ int x, y, i, idx;
+ float mean;
+
+ img->var = (float *) calloc((img->width * img->height), sizeof(float));
+
+ for (y = 0; y < img->height; y++)
+ for (x = 10; x < img->width - 10; x++)
+ {
+ idx = (y * img->width) + x;
+
+ /* Compute mean of pixels in 1x21 window centered at current pixel. */
+ for (i = - HVAR_WINDOW, mean = 0; i <= HVAR_WINDOW; i++)
+ mean += (img->data[idx + i]); /* * img->p[img->data[idx + i]]); */
+ mean /= (HVAR_WINDOW * 2 + 1);
+
+ /* Compute horizontal variance. */
+ for (i = - HVAR_WINDOW; i <= HVAR_WINDOW; i++)
+ img->var[idx] += (img->data[idx + i] - mean) *
+ (img->data[idx + i] - mean); /* * img->p[img->data[idx + i]]; */
+ img->var[idx] /= (HVAR_WINDOW * 2 + 1);
+
+ if (threshold != -1)
+ if (img->var[idx] <= threshold)
+ img->var[idx] = 0;
+ else
+ img->var[idx] = 255;
+ }
+ }
+
+ /*
+ FUNCTION : CompP BuildConnectedComponents(ImgP img, int bg)
+ DESCRIPTION: Creates a linked list of connected components in the image.
+ ARGUMENTS : img, pointer to image information object
+ bg, background colour (if -1, all colours will be considered)
+ RETURNS : pointer to linked list of connected components
+ */
+ CompP BuildConnectedComponents(ImgP img, int bg)
+ {
+ int x, y, xm, ym;
+ int idx, midx;
+ CompP comp, cur_comp, last_comp = NULL, merge_comp, mprev_comp;
+ PixP pix;
+
+ /* Allocate label map. */
+ img->lmap = (int *) calloc(img->width * img->height, sizeof(int));
+
+ for (y = 0; y < img->height; y++)
+ for (x = 1; x < img->width - 1; x++)
+ {
+ idx = (y * img->width) + x;
+
+ /* If current pixel has background colour, skip it. */
+ if (bg >= 0 && img->cedge[idx] == bg)
+ continue;
+
+ /* Scan top and side neighbours for a connected component. */
+ for (ym = -1; ym <= 0; ym++)
+ {
+ for (xm = -1; xm <= 1; xm++)
+ {
+ midx = ((y + ym) * img->width) + (x + xm);
+ if (img->lmap[midx])
+ break;
+ }
+ if (img->lmap[midx])
+ break;
+ }
+
+ /* If a connected component was not found, create one. */
+ if (!img->lmap[midx])
+ {
+ /* Create, initialize and push new component on stack. */
+
+ comp = (CompP) malloc(sizeof(CompT));
+
+ comp->id = (last_comp == NULL) ? 1 : last_comp->id + 1;
+ comp->n = 0;
+ comp->avg_row = y;
+ comp->x_max = x;
+ comp->y_max = y;
+ comp->x_min = x;
+ comp->y_min = y;
+ comp->y_left = y;
+ comp->y_right = y;
+ comp->sv_above = 0;
+ comp->sv_below = 0;
+ comp->pixels = NULL;
+ comp->paired = NULL;
+ comp->extended = 0;
+ comp->prev = last_comp;
+
+ last_comp = comp;
+ cur_comp = comp;
+
+ #if TRACE_BUILDCOMP
+ printf("comp %d at (%d, %d)\n", comp->id, x, y);
+ #endif
+ }
+ else /* Look for neighboring connected component in list. */
+ {
+ #if TRACE_BUILDCOMP
+ printf("Found a neighbour for point (%d, %d)\t", x, y);
+ printf("img->lmap[midx] = %d\n", img->lmap[midx]);
+ #endif
+ cur_comp = comp;
+ while(cur_comp->id != img->lmap[midx])
+ cur_comp = cur_comp->prev;
+ }
+
+ /* Update label map. */
+ img->lmap[idx] = cur_comp->id;
+
+ /* Add current pixel to component. */
+ pix = (PixP) malloc(sizeof(PixT));
+ pix->x = x;
+ pix->y = y;
+ pix->prev = cur_comp->pixels;
+ cur_comp->pixels = pix;
+
+ /* Update component stats. */
+ cur_comp->n++;
+ cur_comp->avg_row = ((cur_comp->avg_row * (cur_comp->n - 1)) + y)
+ / cur_comp->n;
+ cur_comp->x_max = (x > cur_comp->x_max) ? x : cur_comp->x_max;
+ cur_comp->y_max = (y > cur_comp->y_max) ? y : cur_comp->y_max;
+ cur_comp->x_min = (x < cur_comp->x_min) ? x : cur_comp->x_min;
+ cur_comp->y_min = (y < cur_comp->y_min) ? y : cur_comp->y_min;
+ if (cur_comp->x_min == x)
+ cur_comp->y_left = y;
+ if (cur_comp->x_max == x)
+ cur_comp->y_right = y;
+ cur_comp->sv_above += img->var[(y - 1) * img->width + x];
+ cur_comp->sv_below += img->var[(y + 1) * img->width + x];
+
+ /* Scan all neighbours for components to merge. */
+ for (ym = -1; ym <= 1; ym++)
+ for (xm = -1; xm <= 1; xm++)
+ {
+ midx = ((y + ym) * img->width) + (x + xm);
+
+ /* Merge adjacent components with different component id's. */
+ if (img->lmap[midx] && img->lmap[midx] != cur_comp->id)
+ {
+ /* Scan component list for component to merge. */
+ merge_comp = comp;
+ mprev_comp = NULL;
+ while(merge_comp->id != img->lmap[midx])
+ {
+ mprev_comp = merge_comp;
+ merge_comp = merge_comp->prev;
+ }
+
+ /* Merge components. */
+ MergeComponents(cur_comp, merge_comp, mprev_comp, &comp,
+ img);
+ if (mprev_comp == NULL)
+ last_comp = comp;
+ }
+ }
+ }
+
+ return(comp);
+ }
+
+ /*
+ FUNCTION : void EliminateLargeSpreadComponents(CompI c, ImgP img)
+ DESCRIPTION: Eliminates components with large vertical spread. The components
+ that are not rejected are flagged as rising or falling edges.
+ ARGUMENTS : c, pointer to linked list of connected components
+ img, pointer to associated image information object
+ RETURNS : nothing
+ */
+ void EliminateLargeSpreadComponents(CompI c, ImgP img)
+ {
+ CompI ip = c;
+ CompP dp;
+ PixP p;
+ int idx;
+ char kill_it;
+ #if TRACE_SPREAD
+ int i = 1;
+ FILE *fp;
+ #endif
+
+ #if TRACE_SPREAD
+ fp = stdout;
+
+ for (i = 0; i < (img->width * img->height); i++)
+ {
+ fprintf(fp, "%d ", img->lmap[i]);
+ if (i % 15 == 0)
+ fprintf(fp, "\n");
+ }
+ i = 1;
+ #endif
+
+ while (*ip != NULL)
+ {
+ if (KILL_SMALL_COMP)
+ kill_it = ((((*ip)->y_max - (*ip)->y_min) >=
+ (float) img->height * VSPREAD_THRESHOLD) ||
+ (((*ip)->x_max - (*ip)->x_min) < SMALL_THRESHOLD));
+ else
+ kill_it = (((*ip)->y_max - (*ip)->y_min) >=
+ (float) img->height * VSPREAD_THRESHOLD);
+
+ if (kill_it)
+ {
+ #if TRACE_SPREAD
+ printf("Discarding component %d (spread = %d)\n", (*ip)->id,
+ ((*ip)->y_max - (*ip)->y_min));
+ #endif
+ /* Update label map. */
+ p = (*ip)->pixels;
+ while (p != NULL)
+ {
+ #if TRACE_SPREAD
+ printf("\tpixel %d of %d at (%d, %d)\n", i++, (*ip)->n, p->x,
+ p->y);
+ #endif
+ idx = (p->y * img->width) + p->x;
+ img->lmap[idx] = 0;
+ p = p->prev;
+ }
+
+ /* Remove component from list, preserving links. */
+ dp = *ip;
+ *ip = (*ip)->prev;
+ free(dp);
+ }
+ else
+ {
+ (*ip)->type = ((*ip)->sv_above >= (*ip)->sv_below) ?
+ E_FALLING : E_RISING;
+ ip = &((*ip)->prev);
+ }
+ }
+
+ #if TRACE_SPREAD
+ fp = stdout;
+
+ for (i = 0; i < (img->width * img->height); i++)
+ {
+ fprintf(fp, "%d ", img->lmap[i]);
+ if (i % 15 == 0)
+ fprintf(fp, "\n");
+ }
+ #endif
+ }
+
+ /*
+ FUNCTION : void PrintConnectedComponents(CompP c)
+ DESCRIPTION: Loops through list of connected components and prints out member
+ pixels.
+ ARGUMENTS : c, pointer to connected component list
+ RETURNS : nothing
+ */
+ void PrintConnectedComponents(CompP c)
+ {
+ CompP p = c;
+ int npoints = 0;
+
+ while (p != NULL)
+ {
+ printf("------------------------\n");
+ printf("component:\t %d\n", p->id);
+ printf("# points:\t %d\n", p->n);
+ printf("average row:\t %d\n", p->avg_row);
+ printf("x max:\t\t %d\n", p->x_max);
+ printf("y max:\t\t %d\n", p->y_max);
+ printf("x min:\t\t %d\n", p->x_min);
+ printf("y min:\t\t %d\n", p->y_min);
+ printf("type:\t\t %s\n", (p->type == E_FALLING) ? "falling" : "rising");
+
+ npoints += p->n;
+ p = p->prev;
+ }
+
+ if (c != NULL)
+ {
+ printf("------------------------\n\n");
+ printf("Total points: %d\n", npoints);
+ }
+ }
+
+ /*
+ FUNCTION : void WriteConnectedComponentsToPGM(CompP comp, ImgP img)
+ DESCRIPTION: Writes linked list of connected components to PGM file.
+ ARGUMENTS : comp, linked list of connected components
+ img, pointer to associated image information object
+ RETURNS : nothing
+ */
+ void WriteConnectedComponentsToPGM(CompP comp, ImgP img)
+ {
+ CompP c = comp;
+ PixP p;
+ int idx;
+ char *s;
+ static int index = 0;
+ unsigned char *data;
+ FILE *fp;
+
+ /* Bail out if no data. */
+ if ((c == NULL) || (!img->valid) || (img->width == 0) || (img->height == 0))
+ return;
+
+ if (index > 99)
+ return;
+
+ /* Allocate data buffer and fill it up with component pixels. */
+ data = (unsigned char *) calloc(img->width * img->height, sizeof(char));
+
+ while (c != NULL)
+ {
+ p = c->pixels;
+ while (p != NULL)
+ {
+ idx = (p->y * img->width) + p->x;
+ data[idx] = 255;
+ p = p->prev;
+ }
+ c = c->prev;
+ }
+
+ /* Open PGM file and write pixel data to it. */
+
+ s = (char *) malloc((strlen(img->imgname) + strlen(".compXX.pgm") + 1) *
+ sizeof(char));
+ sprintf(s, "%s.comp%d.pgm", img->imgname, index++);
+
+ fp = stdout;
+
+ fprintf(fp, "P5\n");
+ fprintf(fp, "%d %d\n", img->width, img->height);
+ fprintf(fp, "255\n");
+
+ for (idx = 0; idx < (img->width * img->height); idx++)
+ fwrite(&data[idx], sizeof(char), 1, fp);
+
+ free(s);
+ free(data);
+ }
+
+ /*
+ FUNCTION : void FreeConnectedComponents(CompP comp)
+ DESCRIPTION: Frees linked list of connected components.
+ ARGUMENTS : comp, linked list of connected components
+ RETURNS : nothing
+ */
+ void FreeConnectedComponents(CompP comp)
+ {
+ CompP c1 = comp, c2;
+ PixP p1, p2;
+
+ while (c1 != NULL)
+ {
+ c2 = c1->prev;
+ p1 = c1->pixels;
+ while (p1 != NULL)
+ {
+ p2 = p1->prev;
+ free(p1);
+ p1 = p2;
+ }
+ free(c1);
+ c1 = c2;
+ }
+ }
+
+ /*
+ FUNCTION : void MergeComponents(CompP c, CompP m, CompP p, CompI h, ImgP img)
+ DESCRIPTION: Merges two components into one, freeing the second.
+ ARGUMENTS : c, destination component
+ m, component to merge
+ p, component previous to m in list
+ h, pointer to component linked list head
+ img, associated image information object
+ RETURNS : nothing
+ */
+ void MergeComponents(CompP c, CompP m, CompP p, CompI h, ImgP img)
+ {
+ PixP pix, mpix;
+ int pidx;
+
+ #if TRACE_MERGE
+ printf("merging component %d with %d\n", m->id, c->id);
+ #endif
+
+ /* Update label map at each merged pixel. */
+ mpix = pix = m->pixels;
+
+ while(pix != NULL)
+ {
+ pidx = (pix->y * img->width) + pix->x;
+ img->lmap[pidx] = c->id;
+ mpix = pix;
+ pix = pix->prev;
+ }
+
+ /* Merge pixel lists. */
+ if (mpix != NULL)
+ {
+ mpix->prev = c->pixels;
+ c->pixels = m->pixels;
+
+ /* Update component stats. */
+ c->n += m->n;
+ c->avg_row = ((c->avg_row * (c->n - m->n)) + (m->avg_row * m->n))
+ / (c->n);
+ c->x_max = (m->x_max > c->x_max) ? m->x_max : c->x_max;
+ c->y_max = (m->y_max > c->y_max) ? m->y_max : c->y_max;
+ c->x_min = (m->x_min < c->x_min) ? m->x_min : c->x_min;
+ c->y_min = (m->y_min < c->y_min) ? m->y_min : c->y_min;
+
+ if (c->x_min == m->x_min)
+ c->y_left = m->y_left;
+ if (c->x_max == m->x_max)
+ c->y_right = m->y_right;
+ }
+
+ /* Get rid of merged component, preserving links. */
+ if (p != NULL)
+ p->prev = m->prev;
+ else
+ *h = m->prev;
+
+ free(m);
+ }
+
+ /*
+ FUNCTION : void MergeRowComponents(CompI head, ImgP img)
+ DESCRIPTION: Merges connected components with approximately same average row
+ coordinates.
+ ARGUMENTS : head, lpointer to inked list of connected components
+ img, pointer to associated image information object
+ RETURNS : nothing
+ */
+ void MergeRowComponents(CompI head, ImgP img)
+ {
+ CompP c = *head;
+
+ while (c != NULL)
+ {
+ MergeToLeft(c, head, img);
+ c = c->prev;
+ }
+ }
+
+ /*
+ FUNCTION : void MergeToLeft(CompP comp, CompI head, ImgP img)
+ DESCRIPTION: Recursively merges each neigbouring component to the left of the
+ given component.
+ ARGUMENTS : comp, pointer to connected component whose left neighbors are
+ sought
+ head, pointer to head of connected component linked list
+ img, pointer to associated image information object
+ RETURNS : nothing
+ */
+ void MergeToLeft(CompP comp, CompI head, ImgP img)
+ {
+ int xl, yl;
+ int xm, ym;
+ int idx, last_comp = 0;
+ CompP c = *head, p, pp;
+
+ #if TRACE_ROWMERGE
+ printf("MergeToLeft() called for component %d... ", comp->id);
+ if (comp->extended)
+ printf("already extended, exiting.\n");
+ else
+ printf("\n");
+ #endif
+ #ifdef BOGUS
+ if (comp->extended)
+ return;
+
+ comp->extended = 1;
+ #endif
+
+
+ xl = comp->x_min;
+ yl = comp->y_left;
+
+ /* Look for a component in left endpoint's adjacency zone. */
+ /* The adacency zone is approximately a half-circle of radius */
+ /* SAME_ROW_THRESHOLD pixels centered at the left endpoint. */
+
+ /*
+ for (ym = - SAME_ROW_THRESHOLD; ym <= SAME_ROW_THRESHOLD; ym++)
+ for (xm = - (SAME_ROW_THRESHOLD + 1) + abs(ym); xm <= 0; xm++)
+ */
+ for (ym = - SAME_ROW_V; ym <= SAME_ROW_V; ym++)
+ for (xm = - SAME_ROW_H; xm <= 0; xm++)
+ {
+ if ((yl + ym < 0) || (yl + ym > img->height - 1) ||
+ (xl + xm < 0) || (xl + xm > img->width - 1) ||
+ (idx = ((yl + ym) * img->width) + (xl + xm)) >
+ (img->width * img->height) || (idx < 0))
+ continue;
+
+ if ((img->lmap[idx]) && (img->lmap[idx] != comp->id) &&
+ (img->lmap[idx] != last_comp))
+ {
+ #if TRACE_ROWMERGE
+ printf("Found component %d in vicinity of component %d\n",
+ img->lmap[idx], comp->id);
+ #endif
+ /* Locate info object of component obtained from label map. */
+ p = pp = NULL;
+ c = *head;
+ while ((c != NULL) && (c->id != img->lmap[idx]))
+ {
+ pp = p;
+ p = c;
+ c = c->prev;
+ }
+
+ if (c == NULL)
+ {
+ printf("Unexpected error in MergeToLeft(), aborting.\n");
+ exit(1);
+ }
+
+ /* Perform merge only if components have same orientation. */
+ if (comp->type == c->type)
+ {
+ #if TRACE_ROWMERGE
+ printf("%d and %d have same orientation. Merging.\n",
+ comp->id, c->id);
+ #endif
+
+ #ifdef BOGUS
+ /* Recurse to build maximum left extent of component. */
+ MergeToLeft(c, head, img);
+
+ if (p == NULL)
+ {
+ printf("This shouldn't happen. Exiting.\n");
+ exit(1);
+ /* *head = c->prev; */
+ }
+
+ if (pp->prev == c) /* big hack */
+ p = pp;
+
+ /* Perform actual component merge operation. */
+ MergeComponents(comp, c, p, NULL, img);
+ #endif
+ MergeComponents(comp, c, p, head, img);
+ MergeToLeft(comp, head, img);
+ }
+
+ last_comp = c->id;
+ }
+ }
+ #if TRACE_ROWMERGE
+ printf("MergeToLeft() for component %d exiting.\n", comp->id);
+ #endif
+ }
+
+ /*
+ FUNCTION : void PairComponents(CompI head, ImgP img)
+ DESCRIPTION: Locates opposing connected component pairs.
+ ARGUMENTS : head, pointer to linked list of connected components
+ img, pointer to associated image information object
+ RETURNS : nothing
+ */
+ void PairComponents(CompI head, ImgP img)
+ {
+ CompP c = *head, p = NULL, o; /* current, previous, opposite */
+ int xm, ym, y, idx;
+ int last_comp = 0;
+ char discard = 0, found = 0, end_row = 0;
+ PixP cpix, ppix;
+
+ /* Loop through all connected components. */
+
+ while (c != NULL)
+ {
+ #if TRACE_PAIR
+ printf("Pairing component %d\n", c->id);
+ #endif
+
+ /* Process only components which have not been paired yet. */
+
+ if (c->paired == NULL)
+ {
+ /* Scan inside rectangular grid above or below current component. */
+
+ for (y = 1; (y <= MAX_CHAR_SIZE) && !(discard || found); y++)
+ for (xm = c->x_min; (xm <= c->x_max) && !(discard || found); xm++)
+ {
+ if (end_row && (xm == c->x_min))
+ {
+ discard = 1;
+ break;
+ }
+
+ ym = (c->type == E_FALLING) ? -y : y;
+ idx = ((c->avg_row + ym) * img->width) + xm;
+
+ /* Make sure current index is within image bounds. */
+ if ((c->avg_row + ym < 0) ||
+ (c->avg_row + ym > img->height - 1) ||
+ (idx > img->width * img->height) ||
+ (idx < 0))
+ continue;
+
+ /* Check if there's a different component at this position. */
+ if ((img->lmap[idx]) && (img->lmap[idx] != c->id) &&
+ (img->lmap[idx] != last_comp))
+ {
+ #if TRACE_PAIR
+ printf("Found component %d at (%d, %d), ym = %d\n",
+ img->lmap[idx], c->avg_row + ym, xm, ym);
+ #endif
+
+ /* If found component is too close, discontinue */
+ /* processing of current component. */
+ if (abs(ym) < MIN_CHAR_SIZE)
+ discard = 1;
+ else
+ {
+ /* Locate component info object. */
+ o = *head;
+ while ((o != NULL) && (o->id != img->lmap[idx]))
+ o = o->prev;
+
+ if (o == NULL)
+ {
+ printf("Unexpected error in PairComponents(). ");
+ printf("Exiting.\n");
+ exit(1);
+ }
+
+ /* Discontinue processing if component found */
+ /* has same orientation as current component. */
+ /* Otherwise, test for overlap, and if it */
+ /* fails, continue scan only until end of row. */
+
+ #if TRACE_PAIR
+ if (c->type == o->type)
+ printf("%d and %d have same orientation.\n",
+ c->id, o->id);
+ #endif
+ if (c->type == o->type)
+ discard = 1;
+ else
+ {
+ if (Overlap(c, o))
+ {
+ #if TRACE_PAIR
+ printf("%d and %d overlap. Pairing.\n",
+ c->id, o->id);
+ #endif
+ found = 1;
+ c->paired = o;
+ o->paired = c;
+ }
+ else
+ end_row = 1;
+ }
+ }
+ }
+
+ last_comp = img->lmap[idx];
+ } /* grid scan */
+
+ /* If scan was aborted or no opposite component */
+ /* was found, discard current component from list. */
+
+ if (discard || !found)
+ {
+ #if TRACE_PAIR
+ printf("Discarding component %d, discard = %d, found = %d\n",
+ c->id, discard, found);
+ #endif
+ cpix = c->pixels;
+ while (cpix != NULL)
+ {
+ img->lmap[(cpix->y * img->width) + cpix->x] = 0;
+ ppix = cpix;
+ cpix = cpix->prev;
+ free(ppix);
+ }
+
+ if (p != NULL)
+ p->prev = c->prev;
+ else
+ *head = c->prev;
+
+ free(c);
+ }
+ } /* paired check */
+ else
+ {
+ #if TRACE_PAIR
+ printf("Component %d already paired. Skipping.\n", c->id);
+ #endif
+ found = 1;
+ }
+
+ if (discard || !found)
+ {
+ if (p != NULL)
+ c = p->prev;
+ else
+ c = *head;
+ }
+ else
+ {
+ p = c;
+ c = c->prev;
+ }
+ last_comp = 0;
+ discard = found = end_row = 0;
+ } /* component loop */
+ }
+
+ /*
+ FUNCTION : char Overlap(CompP c1, Comp c2)
+ DESCRIPTION: Determines whether two connected components overlap sufficiently.
+ ARGUMENTS : c1, first component
+ c2, second component
+ RETURNS : 0, if overlap is insufficient
+ 1, if overlap is at least 50% of each component's length
+ */
+ char Overlap(CompP c1, CompP c2)
+ {
+ int r1l2, l2l1, r2r1, r2l1, r1l1, r2l2;
+ float overlap1, overlap2;
+
+ #if TRACE_PAIR
+ printf("Overlap() called for components %d and %d\n", c1->id, c2->id);
+ #endif
+
+ r1l2 = c1->x_max - c2->x_min;
+ l2l1 = c2->x_min - c1->x_min;
+ r2r1 = c2->x_max - c1->x_max;
+ r2l1 = c2->x_max - c1->x_min;
+
+ r1l1 = c1->x_max - c1->x_min;
+ r2l2 = c2->x_max - c2->x_min;
+
+ if ((r1l2 >= 0) && (l2l1 >= 0) && (r2r1 >= 0) && (r2l1 > 0))
+ {
+ overlap1 = (float) r1l2 / (float) r1l1;
+ overlap2 = (float) r1l2 / (float) r2l2;
+
+ return ((overlap1 >= .5) && (overlap2 >= .5));
+ }
+
+ if ((r1l2 > 0) && (l2l1 <= 0) && (r2r1 <= 0) && (r2l1 >= 0))
+ {
+ overlap1 = (float) r2l1 / (float) r1l1;
+ overlap2 = (float) r2l1 / (float) r2l2;
+
+ return ((overlap1 >= .5) && (overlap2 >= .5));
+ }
+
+ if ((r1l2 > 0) && (l2l1 <= 0) && (r2r1 >= 0) && (r2l1 > 0))
+ {
+ /* overlap1 = 1; */
+ overlap2 = (float) r1l1 / (float) r2l2;
+
+ return (overlap2 >= .5);
+ }
+
+ if ((r1l2 > 0) && (l2l1 >= 0) && (r2r1 <= 0) && (r2l1 > 0))
+ {
+ overlap1 = (float) r2l2 / (float) r1l1;
+ /* overlap2 = 1; */
+
+ return (overlap1 >= .5);
+ }
+
+ if ((r1l2 < 0) && (l2l1 > 0) && (r2r1 > 0) && (r2l1 > 0))
+ {
+ /* overlap1 = 0; */
+ /* overlap2 = 0; */
+
+ return (0);
+ }
+
+ if ((r1l2 > 0) && (l2l1 < 0) && (r2r1 < 0) && (r2l1 < 0))
+ {
+ /* overlap1 = 0; */
+ /* overlap2 = 0; */
+
+ return (0);
+ }
+
+ printf("Unexpected case or mathematical absurdity reached in Overlap(). ");
+ printf("Twink!\n");
+ exit(1);
+
+ return(0); /* To shut compiler up. */
+ }
+
+ /*
+ FUNCTION : void ComputeBoundingBoxes(CompP comp, ImgP img)
+ DESCRIPTION: Computes and draws text bounding boxes.
+ ARGUMENTS : comp, linked list of connected components
+ img, pointer to image information object
+ RETURNS : nothing
+ */
+ void ComputeBoundingBoxes(CompP comp, ImgP img)
+ {
+ CompP c = comp;
+ int x_min, x_max, y_min, y_max;
+ int x, y, idx, pixel;
+ FILE *fp;
+ char *s;
+ unsigned char val;
+
+ if (c == NULL)
+ return;
+
+ while (c != NULL)
+ {
+ if (c->type != E_FALLING)
+ {
+ c = c->prev;
+ continue;
+ }
+
+ x_min = (c->x_min < c->paired->x_min) ? c->x_min : c->paired->x_min;
+ x_max = (c->x_max > c->paired->x_max) ? c->x_max : c->paired->x_max;
+ y_min = (c->y_min < c->paired->y_min) ? c->y_min : c->paired->y_min;
+ y_max = (c->y_max > c->paired->y_max) ? c->y_max : c->paired->y_max;
+
+ for (x = x_min; x <= x_max; x++)
+ {
+ idx = (c->y_max * img->width) + x;
+ img->data[idx] = 255;
+ idx = (c->paired->y_min * img->width) + x;
+ img->data[idx] = 255;
+ }
+
+ for (y = y_min; y <= y_max; y++)
+ {
+ idx = (y * img->width) + x_min;
+ img->data[idx] = 255;
+ idx = (y * img->width) + x_max;
+ img->data[idx] = 255;
+ }
+
+ c = c->prev;
+ }
+
+ s = (char *) malloc((strlen(img->imgname) + strlen(".out.pgm") + 1) *
+ sizeof(char));
+ sprintf(s, "%s.out.pgm", img->imgname);
+
+ fp = stdout;
+
+ fprintf(fp, "P5\n");
+ fprintf(fp, "%d %d\n", img->width, img->height);
+ fprintf(fp, "255\n");
+
+ for (pixel = 0; pixel < (img->width * img->height); pixel++)
+ {
+ val = img->data[pixel];
+ fwrite(&val, sizeof(char), 1, fp);
+ }
+
+ free(s);
+ }
+
Index: llvm/test/Programs/MultiSource/McCat-18-imp/textloc.h
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-18-imp/textloc.h:1.1
*** /dev/null Mon May 12 13:06:17 2003
--- llvm/test/Programs/MultiSource/McCat-18-imp/textloc.h Mon May 12 13:06:07 2003
***************
*** 0 ****
--- 1,78 ----
+ /*
+ MODULE : textloc.h
+ DESCRIPTION: Header file to be used with textloc.c.
+ AUTHOR : Fady Habra, 8715030, fady at cs.mcgill.ca
+ */
+
+ #ifdef TEXTLOC
+ #define EXT
+ #else
+ #define EXT extern
+ #endif
+
+ #ifdef BOGUS
+ #define VSPREAD_THRESHOLD ((float) (2.0/100))
+ /* #define VAR_THRESHOLD 30 */
+ #define SAME_ROW_THRESHOLD 3
+ #define SAME_ROW_V 3
+ #define SAME_ROW_H 30
+ #define MAX_CHAR_SIZE 50
+ #define MIN_CHAR_SIZE 5
+
+ #define KILL_SMALL_COMP
+ #define SMALL_THRESHOLD 10
+ #endif
+
+ #define E_FALLING 0
+ #define E_RISING 1
+
+ typedef struct _PixT PixT, *PixP;
+
+ struct _PixT
+ {
+ int x;
+ int y;
+ PixP prev;
+ };
+
+ typedef struct _CompT CompT, *CompP, **CompI;
+
+ struct _CompT /* connected component type */
+ {
+ int id; /* component id */
+ int n; /* number of pixels in comp. */
+ int avg_row; /* average row of pixels */
+ int x_max; /* maximum x coordinate */
+ int y_max; /* maximum y coordinate */
+ int x_min; /* minimum x coordinate */
+ int y_min; /* minimum y coordinate */
+ int y_left; /* left endpoint y coord */
+ int y_right; /* right endpoint y coord */
+ float sv_above; /* sum of variances above */
+ float sv_below; /* sum of variances below */
+ char type; /* rising/falling edge */
+ PixP pixels; /* linked list of pixels */
+ CompP paired; /* paired opposite comp. */
+ char extended; /* extension checked flag */
+ CompP prev; /* previous connected comp */
+ };
+
+ /* External function prototypes. */
+
+ EXT void ConvertToFloat(ImgP);
+ EXT void HorzVariance(ImgP, int);
+ EXT CompP BuildConnectedComponents(ImgP, int);
+ EXT void PrintConnectedComponents(CompP);
+ EXT void WriteConnectedComponentsToPGM(CompP, ImgP);
+ EXT void FreeConnectedComponents(CompP);
+ EXT void EliminateLargeSpreadComponents(CompI, ImgP);
+ EXT void MergeRowComponents(CompI, ImgP);
+ EXT void PairComponents(CompI, ImgP);
+ EXT void ComputeBoundingBoxes(CompP, ImgP);
+
+ /* Internal function prototypes. */
+
+ void MergeComponents(CompP, CompP, CompP, CompI, ImgP);
+ void MergeToLeft(CompP, CompI, ImgP);
+ char Overlap(CompP, CompP);
+
More information about the llvm-commits
mailing list