[comp.os.minix] Curses

dono@killer.UUCP (09/08/87)

While looking through comp.sources.misc I ran across a version of curses
designed for the pc. It uses the bios for its moves but should be easily ported
for direct memory access, it looks like it would be perfect for minix.
Don O'Connell

allbery@ncoast.UUCP (Brandon Allbery) (09/10/87)

As quoted from <1497@killer.UUCP> by dono@killer.UUCP (Don OConnell):
+---------------
| While looking through comp.sources.misc I ran across a version of curses
| designed for the pc. It uses the bios for its moves but should be easily ported
| for direct memory access, it looks like it would be perfect for minix.
+---------------

This is on my "to-do" list.  However, the closest you're going to get to
direct memory access is to use /dev/mem (or, alternatively, create a
/dev/screen driver), which I consider gross.  I'll go for terminfo and
ability to use it on serial ports with terminals.
-- 
	    Brandon S. Allbery, moderator of comp.sources.misc
  {{harvard,mit-eddie}!necntc,well!hoptoad,sun!mandrill!hal}!ncoast!allbery
ARPA: necntc!ncoast!allbery@harvard.harvard.edu  Fido: 157/502  MCI: BALLBERY
   <<ncoast Public Access UNIX: +1 216 781 6201 24hrs. 300/1200/2400 baud>>
All opinions in this message are random characters produced when my cat jumped
(-:		      up onto the keyboard of my PC.			   :-)

wtoomey@gara.une.oz (Warren Toomey) (10/03/88)

	Here is a set of Curses routines, which I purloined from a Public
Domain spreadsheet a friend has. It doesn't have all the functions, however.
I have also hacked it to use Termcap, instead of hard-wired Ansi codes, and
the whole thing really needs rewriting, as some of the code is terrible!
However, some Curses is better than no Curses.

	I've also included a tic-tac-toe program which uses Curses, and
it compiles under 1.2 okay, except that the display is upside down; this
won't happen on 1.3, as it uses Ansi codes & the screen origin is in the
top-left corner.

	I must point out that I'll be busy doing my Honours thesis until
mid-November, so if you have any problems, post to the net for help. If
anybody has the desire to rewrite Curses fully & properly, go right ahead!
I'll try & finish it off in November if no one else has.

Cheers!

+--------------------------------------------------------------------------+
|Warren Toomey                                                             |
|Dept. of Computing Science  ACSNET: wtoomey@gara.une.oz                   |
|University of New England   UUCP: ...!uunet!munnari!gara.une.oz!wtoomey   |
|Armidale Australia 2351     ARPA: wtoomey%gara.une.oz@uunet.uu.net        |
+--------------------------------------------------------------------------+
|      "Life isn't as trivial as it seems, it only appears to be."         |
+--------------------------------------------------------------------------+


-----------cut, tear, mangle, rip, shred, tatter, score here----------------
echo x - MANIFEST
gres '^X' '' > MANIFEST << '/'
Xtotal 12
X-rwxr--r--  1    src    403 Oct  3 22:58 Makefile
X-rwxr--r--  1    src   4095 Oct  3 21:31 curses.c
X-rwxr--r--  1    src   6422 Oct  3 22:59 ttt.c
/
echo x - Makefile
gres '^X' '' > Makefile << '/'
X# To make ttt without libcurses.a, just make
X#
X# To make ttt AND the libcurses.c, make lib (you might need to make clr too)
X#
XLIB = /usr/lib/libcurses.a
XCFLAGS = -F -T.
X
X
Xttt : ttt.s curses.s
X	cc -o ttt $(CFLAGS) ttt.s curses.s -ltermcap
X
X
Xlib : libcurses ttt.s
X	ar r $(LIB) curses.s
X	cc -o ttt $(CFLAGS) ttt.s -lcurses -ltermcap
X
Xlibcurses : curses.c
X	cc -c $(CFLAGS) -LIB curses.c
X
Xclr : 
X	rm *.s ttt
/
echo x - curses.c
gres '^X' '' > curses.c << '/'
X/************************************************************************
X *									*
X *			 Tiny pseudo "curses" package			*
X *									*
X *		v1.0	870117	DBW - D. Wecker, initial hack		*
X *		v1.1    881003  W. Toomey, hacked to get it to use	*
X *				Termcap, and to not foul input.		*
X *				Borrowed a bit of code from Alistair	*
X *				Crooks' `show.c' posted on 870730.	*
X *									*
X ************************************************************************/
X
X/* #include <sys/ioctl.h>	- the ioctl calls seem to stop input */
X#include <sgtty.h>
X#include <signal.h>
X#include <stdio.h>
Xstruct sgttyb old_tty,new_tty;
X
Xextern char	*tgetstr();	/* termcap getstring capability */
Xextern char	*tgoto();	/* termcap goto (x, y) */
Xextern char	*getenv();	/* get an environment variable */
X
X
X#define ROWS	24
X#define COLS	80
X#define NORMAL	0x00
X#define BOLD	0x80
X
Xchar		termcap[1024];	/* termcap buffer */
Xchar		tc[100];	/* area to hold string capabilities */
Xchar		*ttytype;	/* terminal type from env */
Xchar		*arp;		/* pointer for use in tgetstr */
Xchar		*cp;		/* character pointer */
X
Xchar		*cl;		/* clear screen capability */
Xchar		*cm;		/* cursor motion capability */
Xchar		*so;		/* start standout capability */
Xchar		*se;		/* end standout capability */
X
X
Xchar	nscrn[ROWS][COLS],
X	cscrn[ROWS][COLS],
X	row,
X	col,
X	mode;
Xchar	str[256];
X
X
X/*
X *	fatal - report error and die. Never returns
X */
Xvoid
Xfatal(s)
Xchar	*s;
X{
X	(void) fprintf(stderr, "curses: %s\n", s);
X	exit(1);
X}
X
X
X/*
X *	outc - call putchar, necessary because putchar is a macro.
X */
Xint
Xoutc(c)
Xint	c;
X{
X	putchar(c);
X}
X
X
Xmove(y,x)
Xint y,x;
X    {
X    row = y;
X    col = x;
X    }
X
Xclrtoeol() {
X    int i;
X
X    for (i = col; i < COLS; i++) nscrn[row][i] = ' ' | mode;
X    }
X
Xprintw(fmt,a1,a2,a3,a4,a5)
Xchar	*fmt,*a1,*a2,*a3,*a4,*a5;
X    {
X    int i,j,k;
X
X    sprintf(str,fmt,a1,a2,a3,a4,a5);
X    j = 0; k=row;
X    for (i = col; i < COLS && k < ROWS && str[j] != '\000'; i++)
X	if (str[j] != '\n')
X	  nscrn[k][i] = str[j++] | mode;
X        else { i=0; j++; k++; }
X    col = i; row=k;
X    }
X
Xclrtobot() {
X    int i,j;
X
X    clrtoeol();
X    for (i = row+1; i < ROWS; i++)
X	for (j = 0; j < COLS; j++)
X	    nscrn[i][j] = ' ' | mode;
X    }
X
Xstandout() {
X    mode = BOLD;
X    }
X
Xstandend() {
X    mode = NORMAL;
X    }
X
Xaddstr(s)
Xchar	*s;
X    {
X    printw("%s",s);
X    }
X
Xinitscr() {
X    int	    i,j;
X/* 
X    ioctl(0,TIOCGETP,&old_tty);			I don't have a clue
X    ioctl(0,TIOCGETP,&new_tty);			why these are used,
X    new_tty.sg_flags |= RAW;			but I've commented them
X    new_tty.sg_flags &= ~ECHO;			out to get stdin working.
X    ioctl(0,TIOCSETP,&new_tty);
X*/
X   if ((ttytype = getenv("TERM")) == NULL)
X     fatal("No terminal type set in environment");
X
X   if (tgetent(termcap, ttytype) != 1)
X     fatal("No termcap entry for terminal");
X   arp = tc;
X   cl = tgetstr("cl", &arp);
X   so = tgetstr("so", &arp);
X   se = tgetstr("se", &arp);
X   cm = tgetstr("cm", &arp);
X
X    row	    = 0;
X    col	    = 0;
X    mode    = NORMAL;
X    for (i = 0; i < ROWS; i++)
X	for (j = 0; j < COLS; j++)
X	    nscrn[i][j] = cscrn[i][j] = ' ';
X    tputs(cl,1,outc);
X    }
X
Xclear() {
X    row = 0;
X    col = 0;
X    clrtobot();
X    }
X
Xendwin() {
X    move(ROWS-1,0);
X    refresh();
X/* 
X    ioctl(0,TIOCSETP,&old_tty);
X */
X    }
X
Xchar inch() {
X    return(nscrn[row][col] & 0x7F);
X    }
X
Xtouchwin() {
X    int i,j;
X
X    for (i=0; i<ROWS; i++)
X	for (j=0; j<COLS; j++)
X	    cscrn[i][j] = ' ';
X    tputs(cl,1,outc);
X    }
X
Xrefresh() {
X    int	i,j,mode;
X
X    mode = NORMAL;
X    for (i=0; i < ROWS; i++) {
X	for (j = 0; j < COLS; j++) {
X	    if (nscrn[i][j] != cscrn[i][j]) {
X		cp=tgoto(cm,j+1,i+1);
X		tputs(cp,1,outc);
X		while (nscrn[i][j] != cscrn[i][j]) {
X		    if (mode == NORMAL && (nscrn[i][j] & BOLD) == BOLD) {
X			tputs(so,1,outc);
X			mode = BOLD;
X			}
X		    else if (mode == BOLD && (nscrn[i][j] & BOLD) == NORMAL) {
X			tputs(se,1,outc);
X			mode = NORMAL;
X			}
X		    cscrn[i][j] = nscrn[i][j];
X		    fputc(nscrn[i][j] & 0x7F,stdout);
X		    j++;
X		    }
X		}
X	    }
X	}
X    cp=tgoto(cm,col+1,row+1);
X    tputs(cp,1,outc);
X    if (mode) tputs(se,1,outc);
X    fflush(stdout);
X    }
/
echo x - ttt.c
gres '^X' '' > ttt.c << '/'
X/***** Noughts and Crosses ****/
X
X/* Copyright (C) 1988 Warren Toomey.
X	You may use, copy, modify, or give this away provided you 
X		1. make the source available with every copy. 
X		2. include this notice. 
X		3. don't use this for military purposes.
X	(but you can take credit for improvements, etc.)
X*/
X
X/* Compile with cc -o tic tic.c -lcurses -ltermcap */
X
X#define CURSES
X#ifdef CURSES
X/*  #include <curses.h> 		Used by the real curses  */
X#endif
X
X#ifndef CURSES
X#define printw printf
X#endif
X
X
Xtypedef struct { int value;		/* The move returned by the    */
X		 int path;		/* alphabeta consists of a value */
X	       } MOVE;			/* and an actual move (path)   */
X
X
X	/* Static evaluator. Returns 100 if we have 3 in a row
X				    -100 if they have 3 in a row
X
X	  Game board is array of 9 ints, where 0=empty square
X					       1=our move
X					       4= their move
X
X	  and board is indices	0 1 2
X				3 4 5
X				6 7 8
X	*/
X
X
Xint stateval(board,whosemove)
X int board[];
X 
X {
X  static int row[8][3]= { {0,1,2}, {3,4,5}, {6,7,8}, /* Indices of 3in-a-rows */
X		   	  {0,3,6}, {1,4,7}, {2,5,8},
X		   	  {0,4,8}, {2,4,6} };
X
X int temp;					/* Temp row results */
X int i,j;					/* Loop counters */
X int side;					/* Depth multiplier */
X int win,lose;
X
X if (whosemove==1) {win=100; lose= -100; side= 1;}	/* Multiply by -1 if */
X else {win= -100; lose=100; side= -1;}			/* not out move */
X for (i=0;i<8;i++)				/* For every 3-in-a-row */
X    {
X     temp=0;
X     for (j=0;j<3;j++)				/* Add up the board values */
X	temp += board[row[i][j]];
X	
X     if (temp==3) return(win);			/* We've got 3 in a row */
X     if (temp==12) return(lose);		/* They've got 3 in a row */
X    }
X  return(0);					/* Finally return sum */
X }
X
X
XMOVE alphabeta(board,whosemove,alpha,beta)	/* Alphabeta: takes a board, */
X int board[];				/* whose move, alpha & beta cutoffs, */
X int whosemove;				/* and returns a move to make and */
X int alpha;				/* the value that the move has */
X int beta;
X {
X  MOVE result,successor;
X  int best_score,i,best_path,mademove;
X
X  result.value=stateval(board,whosemove);	/* Work out the board's */
X  						/* static value */
X  if ((result.value==100)||			/* If a win or loss already */
X      (result.value==-100)) return(result);	/* return the result */
X
X  best_score= beta;				/* Ok, set worst score */
X  mademove=0;					/* to the beta cutoff */
X  for (i=0;i<9;i++)
X   { if (board[i]==0)				/* For all valid moves */
X       { mademove=1;
X         board[i]=whosemove;			/* make the move on board */
X	 successor=alphabeta(board,5-whosemove,-best_score-1,-alpha-1);
X						/* Get value of the move */
X	 board[i]=0;				/* Take move back */
X	 if (-successor.value>best_score)	/* If a better score */
X	   { best_score= -successor.value;	/* update our score */
X	     best_path=i;			/* and move */
X             if (best_score>alpha) break;	/* If we've beaten alpha */
X	   }					/* return immediately */
X       }
X   }
X  if (mademove)
X    { result.value=best_score;		/* Finally return best score */
X      result.path=best_path;		/* and best move */
X    }
X  return(result);			/* If no move, return static result */
X }
X
X
Xdraw(board)				/* Draw the board */
X int board[];
X {
X  int i,j,row;
X  static char out[]=" X  O";		/* Lookup table for character */
X
X  row=6;
X#ifdef CURSES
X  move(row,0);
X#endif
X  for (j=0;j<9;j+=3)
X   {
X     printw(" %d | %d | %d     ",j,j+1,j+2);
X     for (i=0;i<3;i++)
X        { printw("%c ",out[board[j+i]]);
X          if (i<2) printw("| ");
X        }
X     if (j<4) 
X       {
X#ifdef CURSES
X         move(++row,0);
X#else
X         printw("\n");
X#endif
X         printw("---+---+---   ---+---+---");
X       }
X#ifdef CURSES
X     move(++row,0);
X#else
X     printw("\n");
X#endif
X   }
X#ifdef CURSES
X  refresh();
X#else
X  printw("\n");
X#endif
X }
X
X
Xgetmove(board)				/* Get a player's move */
X int board[];
X {
X  int Move;
X
X  do 
X   {
X    do {
X#ifdef CURSES
X        move(9,40);
X        printw("Your move: ");		/* Prompt for move */
X        refresh();
X#else
X        printw("Your move: ");		/* Prompt for move */
X#endif
X       }
X    while (scanf("%d",&Move)!=1);	/* Input the move */
X   }
X  while (board[Move]);
X  board[Move]=4;			/* If legal, add to board */
X  draw(board);				/* Draw the board */
X }
X
X
Xint endofgame(board)			/* Determine end of the game */
X int board[];
X {
X  int eval;
X  int count;
X
X  eval=stateval(board,1);
X#ifdef CURSES
X  move(20,25);
X#endif
X  if (eval==100) { printw("I have beaten you.\n"); return(1);}
X  if (eval==-100) { printw("Bus error (core dumped)\n"); return(1);}
X  count=0;
X  for (eval=0;eval<9;eval++) if (board[eval]!=0) count++;
X  if (count==9) { printw("A draw!\n"); return(1);}
X#ifdef CURSES
X  refresh();
X#endif
X  return(0);
X }
X
X
Xint randommove()			/* Make an initial random move */
X {
X  long time();				/* based on current time */
X  int i;
X
X  i=abs((int) time((long *)0));
X  return(i%9);
X }
X
X
Xmain()					/* The actual game */
X {
X  int i,board[9];
X  char ch;
X  MOVE ourmove;
X
X  for (i=0;i<9;i++) board[i]=0;		/* Initialise the board */
X#ifdef CURSES
X  initscr();
X  clear();
X  refresh();
X#endif
X  printw("                        NOUGHTS & CROSSES\n\n");
X  printw("                        Your moves are 'O'\n");
X  printw("                         My moves are 'X'\n\n");
X#ifdef CURSES
X  move(5,0);
X  printw("Do you wish to move first: ");
X  refresh();
X  while (scanf("%c",&ch)!=1);
X  move(5,0);
X  printw("                         .......");		/* Kludge to get rid */
X  refresh();
X  move(5,0);
X  printw("                                ");		/* of input letter */
X  refresh();
X#else
X  do printw("Do you wish to move first: ");
X  while (scanf("%c",&ch)!=1);
X#endif
X  if ((ch!='y')&& (ch!='Y'))
X    { i=randommove();				/* If we move first */
X      board[i]=1;				/* make it random */
X#ifdef CURSES
X      move(7,42);
X      printw("My move: %d\n",i);
X      refresh();
X#else
X      printw("My move: %d\n",i);
X#endif
X    }
X  draw(board);
X  getmove(board);
X
X  while (1)
X   { ourmove=alphabeta(board,1,99,-99);	/* Get a move for us; return wins */
X					/* immediately & ignore losses */
X     board[ourmove.path]=1;		/* and make it */
X#ifdef CURSES
X     move(7,42);
X     printw("My move: %d\n",ourmove.path);
X     refresh();
X#else
X     printw("My move: %d\n",ourmove.path);
X#endif
X     draw(board);
X     if (endofgame(board)) break;	/* If end of game, exit */
X     getmove(board);			/* Get opponent's move */
X     if (endofgame(board)) break;	/* If end of game, exit */
X   }
X#ifdef CURSES
X  endwin();
X#endif
X }
/

dec@nucleus.mi.org (Donald E. Cope) (09/19/90)

  Below is a turbo c rendition of Bjorn Larsson's PCCURSES
in 3 parts. It has been converted to run under MINIX and will
compile using either the ACK compiler or Bruce's compiler. 
I found that the newly posted tsort program worked wonders
on the library because of the circular dependencies.
It has been used while compiling Bob Glickstein's VCRAPS 
version 2.2 with out any changes. Remember that the 64 by 64
limitation is still in effect. One interesting point is 
Bruce's compiler ran out of stack space while compiling
VCRAPS.
 First unpack all three parts by uud'ing and unshar'ing them.
Then move or copy the file 'curses.h' to '/usr/include' 
replacing the old one. Next do a 'make' which will compile
and create the library 'libcurses.a'.  It will be copied to
it's final resting place '/usr/lib'. s files are then removed. 
After this a small demo program will be compiled and executed
to show a very limited set of curses functions.
 Bjorn Larsson has submitted his PCCURSES to be public domain
and I do the same with my conversion.

Don Cope   (dec@nucleus.mi.org)
Vickers Inc.
Troy, Michigan USA
----------------------------CUT HERE-------------------------
table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 curses_00.Z
M'YV-9<:@>0,"#X@6(%S4J5-&P9PR9$"<>.$%RXLY+S*> .$CX<(R('CPD/CBz
MA (L=,*(8=,0"X@0(D:0*&'B!(H4*E:P:.'B!8P8,F;0J&'C!HX<.G;PZ.'Cy
MQTD@080,(5+$R!$D290L8=+$R1,H4:1,H5+%RA4L6;1LX=+%RY>38LJ<2>,&x
MA T:-!+VI",GC!N,8^K(>3CG"PP9+K2<;'(BBY46.7CH .(#!HN86(#80.%"w
M" TB/5P8F9$#218<5:2PH#%#Q)$1(8C 2%$E"Q8H/U((F8+$R8L45$9@D;%"v
M"!0]B['P<($"1W H6%"<B!(%!I$2)TK<0'&$A)$I29A8V>%BHI(I+XB(R *$u
M28V;2GCH=&%B1@P@5W+TV$+#" P7(N2QF Q,$$'%#DRH  4(,F"G0@Q6()%#t
M#D)XP4(.+,!@GVPTH* #"TH@=@0*1;" !0Z2,2'"#:+-  (*-;Q@ PM&&$%"s
M$U?@L=@*14CQ@PM?O*#$%0A>L0437ABA0PA:B,#$"BU ,4,22!!)1 A,A#"#r
M">.5@ ,,[=E @A(W !%#AO@-P8,54KQD@@EW+,9"#=\! 043/_3PA(PK= '"q
M%3PTH0(/0,B@1 WV80%##U6L(%0.0> PA0E,(/%E$"71L((5*C3! A0]D !"p
MACA8084=BZF  A!*[- $"C"LD(03]06!Q0U)_&"""#*\*,(,/FCQA%(JP.#%o
M#$H<,4020&31 PI9^% $#TO@X,2L5LS@@FQ3K+"%$74LIL,5+BC10PPI[#"#n
M$"JHUP-4*7BA Q1",#D#$UDXL4(/)P!11 Q15(7$"SO48,*J.321!!4\H+""m
M##'$0$4-3/!@P@TFT+$8$"5XD419(.# 'PDVG!#"%#XPD0--,A@A Q=$Q% %l
M#52T0$41-4"1@@A*D$ "#R*0( 4)-/2 8A%*] L%$E$T,80)V,VQ6$U"$ U"k
M#C+@\"4(->! PA59" '$FU(< 4474;3P@PPB[)!"$580 404+H 0TPA($($"j
MUS'D0$,4-L20A,RW@C""'(N-,,(-1',&E*5)9$%$%3L]0<*;-AB! Q%'E2!"i
M#"3$? 44<^\+1 U5<%$%YQK*8(,(09@0 A0K@ ###S7$,;4,([# Q9)MXQ#"h
MV% $0?((*!XAA0@X>!$"#S7<@#,-5Q1Q A(\S( #$#E8,06#(=A00PU%8$%"g
M$3C0$,(/3-P0!!R+7>E%T"ZHNL,20(  A1)*,.$"$$F@P0UN,(,B@&!4+."*f
M$O:G!*>%+0E&N,$(1("0%M  !SMH@0RB< 0:*&%"/J"!"-XPM2%L@0I)<@(4e
MH*,$&)@@!E)(@A4PIB+8I" $:?F!"GI@!1S8( A!&,$+)*0#)*S@"%V 6 I&d
ML(2OU2 *$'R!?X8P S<LI@DUD%8*6(#!'5 !"E6(PA5J0(0DK.@$(W "K:J@c
M!2T$@0LL2(*WHA"5*Z2 "4]HPA,F)0(I9"$(5H#"$:@0@B6<A@DE>((2VK 8b
M%>[@!4+80DAPT(,IA( %)6AC::! ! /I0&Z4C(D*3  #*&AN!#480@QV( ,9a
MI. )*3A""63@MI?P( A,(-,7?" %-BQF>2*H60^<X!@MT.!"2@A!$8X0@K"(z
MX G.2D$*C  %SS6!!$S@8!2&@+$:Y, &0J%D"H:@)54)KPE(N($,#+:&J=E*y
M"S700@J28((C^* 'F>P"#GX  B6(P A!\,(0C@""+2K!"UH(01<^2 4BN( &x
MNR("%PH4JQ$HX0O"@T(1ND"$)W1A:6I8C!5,H((;7"$C%_("$U( A";X<P1=w
M$((53F""+TSD!S_0 >Y@X*H@/*&0,'R"%*R@@R?,X ="4$(0MM*")J"-"D"Pv
MP@BND(;%W" +*KC"$E80K"$PS D\\,+K;L %+5@A"UBYPA>&4 08J  +7W!!u
M"[P @RI\ 0M5F)0K=_"$(^S "$(P@1>\X 0 /:$*9YD"&AIY!"9L805+<!L+t
MIO"$$^1@?DL0@1/690,ND.E 1U#"$T3P(Q?XH 6C^T(6KB #Z WA:B_X4A9:s
M$ .>;($%(]A"%K9PAL5,(0M+.('>6)! U=[S"SHP01"(0 *&=2P&/U#"#&[@r
MA2TFX0:@&XH77G8"$1!A!%"(P0*C@(0=?($*.HB"%EPT$3,LIF](@$((9( "q
M+GP)"4"0Y[;6ZH,3+$%,>(J"$'@@!5Z*H+XFL M'0)"%#_G "T=8PA7FBP(Np
MPB (*#@P"FC0DB9D80@ZN,$3O@"%)SP,!%,H@=^.*00BF, (/@A"%WX 82!\o
M80L2?D$/D- "%8UM!.7)P@B>X ,KD& (* A!$&20!-:MP MD2$Y@B2"%%!SDn
M!3-X @Q"L 4GG  &6AC!1),\@R:4@ LF:((76.6S*(0@!TQPHQ5J0 (G8&$)m
M/\A!%E!0 B.HX M/4-L4<%"",2RF7RXH0EB>H"8B!($&24B""F8R!3KF@ LFl
MI $4:A"$',3 !V"=00F^8((I#/H*7, "$LZ4YB64X,/">Y$/@" "$8AA1U:(k
M@0EL( 4MP. (5T""#,93A!& @,HQ&,()9D"$'$@!AU(P%#ISL (J<*%>EWQ"j
M$?B\!0,6004BX,&,B!(#'B2A!6%8C!&2H)L2X%((;<3"1%XPA!),82I<6$$(i
M#H1#(VRA"BJH0@N(8 4;A,",1R4""X+@N2 \" 1!8 $/6. "?DI!>%E #A::h
M0(4D",$&(RC!0(O@KQ308 <J:!<E29 %&71A!<7BP0UTEH(:4*%8-UC!")IPg
M QU[0<A'R(*B54 #&Y 8P\:4KX V_H,;'/ $+/A"?%, 9BCPV04\D($4;J"$f
M)/C:""S0 @ER,(,76 X'4:#!%H(@ ME!P09*&($16A!?'FS!!$0P^9Y14#,=e
M;=P('!R"&T>0'=+"I CLZT()\#L#&^3@!5 0#5@IR 4;0&$*/,C"%(JP XVVd
MP J:%4(*6@ #T!-!!?:! 0RRP(0X;9P($"^!%5( ,6XR&P52P )0<K!"MJ@ c
M!Q"$01%6(+T4S& $*E "#7P@-P@1 0HO6!+%5%6#)2 !62]@ @VT@*J-RZ *b
M_Z5"$'2@!2>@0 DO^$'G@<":%Y@@!20 0@IR, 0C4(H' L:OA)H<6!9@98DFa
MT#Q$D 6;D3)HQUY+$"X;IP,GD%QI=A=B87FR405-0'@VL -:X 52,'=6UP)3z
M0% _T7))@ (_@U:,H0-3H%3*Q@,I(!DBUP->0 .VH3$;=Q,6@VE#L"<HX 51y
M0 (G\ 0\P')0< 71AG\O5P(R\@(J\(%^I (M4 (P, )"X%(A0 ))( ,FX *Wx
M=V$JX!EWY 12LW'?=@)7, 1Q- ))E@*Z%G]6N 1&0 0Z0#1-("TF<"%.P#8Fw
M<#IJ:&I2$#-. '$JD"'(MVTF\'E:D013@3@;MS-!H!LU,"?AE0(]X"G"MP)8v
M4 (IX 0]DDI)< 0P8$:E8@,\L!LNL%I"X05&E@)38 5=P'Z*QW*S5DWTH3L;u
M=V%4H'PX4 0Y$"-6H 4FT&(!Y 1,LP**I (U, )UE6& ) )#4"SU%00SL -5t
MX 3*YP54,&<^( )<H&(N  5=V 0Z #\;!P4\$#Y$@B<^('$DT (;!41%@'A8s
M0 ,E0 -#D 4T\"3]XD,LL ):( 1+P )>  )24#TSP )-$ 4CT%$I\ 51L#<Gr
M4'\H0$(;AP2K9P16P (5Y@1&T#LO #0O,0->0$HQP 5.T%0PT (\$%,#TUQ*q
M0$AH: 3B)0('E 5/X 6T)0()XP0Y8 )(\"165(O;@00F0'9?@'O_=EM1H&)7p
M, (Z, 1&- 4P<"AS]1-#4#<E0 5N)(FXMU([L',TP'Z;Y0+E)05;X'0LP$@;o
M1Q9.L -&YFJ\,P5+X (RT!\X( *6@68@4(=7$ ,N, 5A% *V(VE9<)+*Y00Pn
M0 )1Z (P(4)0($\R@)@M$ )8X$L;9WYC1P-%X%U4MP(EP)1#H(I%, ,JH#@Jm
M8 1V% (UH 1%@$5#8 ->P -H-P2F!'\_H 5)( 5DP@5+H 0KD#U 4 7)%@3Ml
MM'$@,#?,X0).\$JF60, D@-),$MHA#.XY01=8 ,6@00D< ,^('LB)@5 L 6Ck
M!P(MQ@(^(&PF$ 4JX'4P< )SEP-4$%(;]S%,P&<']I6_1@,19@,H:0-P^7@!j
M619,, 0R0 0W@ 75Q0/!E@)H)P3LF0100 ,;UVUX9@4>5P0VP#$F4%4;!P1)i
MY@17@@(Q\#P\H"0_('>_80-;H 0E$ -!H"7;=@2*&2NWPF<J0!:G$01?I@+&h
MYP-3H -<8$,Q( +W* 6+58-MU0).L'G&-R9_XP-6404CD 3XAP-&P%4VD 0Xg
M( 4H@ 0VT 1=60(K0$9=0 (Q\ 7F]0+GTUH^L 0\$ /Z:0,\(@*]M7%5P 1 f
ML"8CD )+,'Y>&FW7E38@(' ZH),H4!M>E052T 7]4B5.8#PN@ ,G@&DVP!PTe
MT 5#\)EPV 1"X 28A@/NM7%:, 52,*E=H 59T&<T (Y9@%4ZT#<C,"(]EP-:d
MT ,S< 1?8)A=P!5+$*16$ +&%@.!)@5!@ 2XR05%T#+=0@,J< )5T&%(4 )0c
M"I*#B1\YUXM.( 2/N1DXD 4FL +LP8Q1P )" *)#D -*L 5(H 5=9V]&( )(b
ML&U7H 54@*C&. .L%00M$&4;)P4\, *0$@,U< 5.8!A5800UJ0->@ )=((/_a
M!1-_\J!%\%!5L 5]I4,=-P6SFATC, 5J"%TDH ,V@ 1ML0578&@;1Y-6@$]#z
M^04\H 57HD+^]DC*!P1>A@)8T )2@*U%0 ,QL 7LHF(SDUDV<%B*N@1)D&^Ty
MUQI#Q6EO=FO[^@3QU055T ,\4 2=M@(B,(0T8*Q; %/SJ 0N0 4SL&=9(G9<x
MT )Z2@0O<P4^0 )"\"LMH (_( )5X)1!  0WL /N^@3IMG'G\A\E<*6T)1PFw
MHE9.4 55H 1<9'!%0 0T\$9=T*-?  18,&0U@![4R3V*$G\G( 4GL 48\JPPv
M *DWI'%-H&L@V0.;=A97XG0C@%@OH79;U@-?P 014S%2D0.*4E0\VQ]14 4Ru
ML*HBT 1&P 4AP 4^LV3@<18CL'0<EWM;E(4\P 4UL (8!@,YL -Y40,[@ .Ct
M8FTFP*:+!P/:-KI[J7!;  3U@CVVD@)0\'V?Z*Y7T 0< 05^UP1 , 0]<+9Is
M-P."Q*.>1@+-!+!H%0*E5P(AL*;%R0)7D"63VP4A$!I<  ) 0044#)@FH&H'r
MA! @$ 4]L *NIZDX^3T@T ,FP 4QL 1/@ 7C>@-4(#,+8@(U( 6'Z07IPTQ(q
M().CZ7$4LSQ)4)0_(7$B\,%,, (\X$\A$ ,PT'T'>01! "#9"4;<PSA14+TXp
M< 4_4*E@!QPHD ,'E(N2R2# 8@)*@*U;FC\HX#(Z3!I(H 1"B0))@ 4*2+\'o
M8014@ +^R 5(@"D+ CHP@ ),H!PHX 2"A\=%8'[4>3!.P)>#7,8H\!4H("4Dn
M<&!.T 1M(@-'8 3GEP(TV!4HD%E6\,DMH .X]P2D/ 5 @0)>B@1, \0UX"5<m
M4P)[@RAY,9=WBUK,860Q@ 1G)0): @2JL@5$$(;@B );@ /C.@4SH 4H(+ 'l
MLP6M:<SU\\@RX 0C@" Q 6B:_ 52D+!3<%DH, 4[H 3G!RE \ *@]R(A$( Wk
MIHA-$,I6IP.C.TJ28LE+A 7R) )1X -\1P)9\P6$964MH 0XP 7.A@-/L 4'j
MQC"H-P0 S7<W@),K8 ,ZN@)30(M-P!Q' ++2!$%X=P2?$P,S  -V<01BAYHDi
M?1<E  2?Q\Q/()!;6@4^D ,MD!Y;- 0VO 2TEP(G  4LQY?BB+];E('4U@4Zh
MD (.\T%GXG@R@+&TAUZJ' ,Z0-,KX *>AJ0YH (QM3-?8 0UQRLY<&$V@ -0g
ML ->X&E)()&",G^L!$)6+1UCW04[& ,]H'5^\P)2D .QI 4Y0-8$#02X.2':f
M8@-$D%,XH&JB,D3T1;PL,'H^\),*4W-&G0,]K00XH9$IX -9J!](HA\LC!0Je
M4&4]@)61D01634%\C0(FP-=!<'>1005"0"%<EP.TAI9-X'@]$%TXH 4E,-4Pd
M:00Y4",R\$TT<-9"L*GFN@(?!(<7YP5!8-E)T ,JD /OR-?2Y3I4$ 4KA9HKc
M-0-#0)ESB'L".0-;X'4*FQD)\04X&5Q=' 4R,!M2P 4S32#OAS)=D 1BA!6=b
M=-9+  )\#956D-5=X ,AFP7#V00K-48!3H$XN0-!D-=30 -6/04W$.!+X /3a
M/49>O04VX&LR@%XY4&1\C04U@)-?0&620@4^D*7BE@-?H 3P^<[-3*PYH%6Qz
M_1VN0V6-;293/018X (ZX%VQ70)7,-4D%F<CT&M9:E8YL-$FH ,C, 12H -<y
M<RU'\ ,:JF8N#J/N*0+EXC-7>JY#>0*Q8P.CYB$DD$;)E1J7=05"P(!*H *Dx
MC+/,HF98V@,BH ,O$ 5.H ,JP 1%VA4Y0&1372;3C05T8T91&;HL,"J3G04@w
M8 3HYP+U8Q\X22B2+C2X:2SJFF5/OC,FD 1-T -S:LDZ4 (S0,C[!'<U  ,^v
M<"CUIP,T$)6'C04W9U(ZH /5FU0W@"1+LGP?] .2#BG4:-8^H ,U3<8Q  6?u
MVA5)0"'7LHU /J)G702)&R(SD +*-P4BP"Q3 ,SNJ@1+(I1*!;;D[ *XB9B2t
MKJ,^D 1!$!9ES (=!MQ44)-*\ .G-QD8:-EL&1_BJ00*QS]$P.%>QYXAD@/4s
M* 3(%Q].X 5*!0)(<-17L&[M$>U6H*]-T.T0^NK2)>E((-])<$\VH";$975;r
M('Q:X )8< 4G@ ,'N7#X/0/?C,JC<@4HH )<0 ,Z(#9 @ ,O<&W"9;+TFUV.q
MIAFDTWEVNCU8$#1P]GS-85)^@IE4$(7X:01*=K2<YSI%$&)88)TXD"&6804@p
ML (YX+2O<CM-H'KF.CPI\ (<@P1' &Y'T&-E5YKOJ#,U^@(ND$BN"03=RS]4o
M$*E!X-5-\.0TK052D%98D )]JZDG0&H^< 0FT 7%M@.-%05+D-UL\P,+5QDPn
M8 ,RL 1@\@-#P'R/T8-4X 0DH )9  4LH *SNGVJ=B5>704OX@6F:SY P (@m
MMP514M;/M@4D@ 0*P@-E9 -"5\0X( -+Z(\XL 0H #1IIP1D67,P\(]8( 52l
ML 1-HP5Z3 50X@3.J]KAE9E$< 7G*I8ML 2A?V1W07(XX">C(DFQL4#$P2(Pk
M$#W4]/Q,  (J$!L+@@LD!KA2HX#&_6I366 'P)Z"U@-J1 N0:SG@!P !,H5Uj
M*%@)( $K0&18)" 0 AC0N?@BA(96#!@ETP)00-)Q#@;+7RV!%Q $0ACY@!91i
MP%'0@/47=:Q %" >CVN0K1VYX>IV3/I: C90"*PP!T<$4%3CD@WWA =  1R0h
M14C01ML"(4 *,+&QUR-@CP_8 3R%H 2!D.#+I@ 7P"4')0O@!&\D!-+&IU "g
MB$X&7(&'(>FF0.>Z*#S@1(" (W$$7AH)6 +K8HY]02T0=-R4@< +:$CPN)K.f
MI+: P _( D3#!-  LC,$7@ +D!D\  ;0 "OP!((4".A5%T78G(ZY%,MFPN/Ke
M9$Q@!N"L(&"JN( IJ0$B) 30@$BH.7Y %=I[MJL(O( $"/>6A(#),$@ ;Q2!d
M"+8+9PH,<&]/@ N(IDH1HH;9QM WR&_Y1 $ED#8XE/E0 7 J>(F *R ":HYPc
MV%0F!VF,O99A! C%*B$!'HPS/8$,T0-RCPEH4U\ ,,T =Z8XX(;JV0% 0!(*b
MG0J#ZF( $Q@[+D#XZ3F,Q -> !Q3/J%#!RP/(S(#;H+EH &*Q)(E@2O@-2Y/a
MD7E;&$UD')'M5^.8 )?P 2' "'P4X[4$-EK5F (H2@B<FR&P ]@'0*D!5F +z
M>)/@%06D'^)1"VU/+1B*'L $ODQ0&SZ?S#H=G$#R.@0B_D@?8B3?C+*MHA]6y
MP J@ :SL:NB<@@+PPM0(F$]-X 7T-T_S6(X8%L D5$"MY1N,D04:W0WX F&*x
M7XP ]S9L0I(^*R!.ZJ(X 3?'!42 ^9@5*. M^3+H$-KJ$$]Q4P&*!F@[*[ "w
M(%ON&0%#B8*!1!-H- R:SE.)62H*I  7L 9K +"*BVH$T[P +1"@V@03* )>v
M@/-]/ET12*)?7ZL8-J +V#:14P..P!&X$$O DJ2 )O ]@!74Z0$G9P2HA1VPu
M E( %M@!+V;A^+\7P/8F6$$) 4:D"OP EP P^*+1@#U! [P]'Q'PZM0+$-A_t
ME0($Z( 3MR#J6DAX/RI@/' !'O $;@ :>38C8@BTE#@29L+46GF$,&H%" X@s
M  2.XH$S%12J!^P AEB:"IL6N )E2 8LP0.3[63 $$A(0: *="DNH-ZL@"R1r
M32;@!]"4)W#"QIX&8C_?*0C5"YH1X^+,%^!]58E$Q( 6<P58P%2X( <D6%"!q
MD]>UL$#LJ $Z (A HUK#?D9 #+@!;E!H>#6C. 3*6 #A 0AA!&2Y9S,"J(#Vp
M.Q,K[06\,M-D!39(!-R.68"V\93$L(&^ ,\"5B-!W-Q&"X;'T@@Y+!Y2Y0C8o
M "H@) *=$K@V $T(T!A_ P+NX QX<:N%"Y TEP#W=L!^L$XBX'3X.#0TGWC-n
M-AI:+N('2"FCUIKV#15@ ?VBU-D.0G$"6D#ZN)#$2RG "*V6 X@ FZH"5XX%m
M/1*C40,X'PGP>90"F]R6ZP*8F,#<&R:QY:*H #?D IH=$TA\&0PWO@ G )X l
M"Q0H#:RH!O  R;<%S@L\3 %$8 <@GBM1!90#V6LL=H&!%1 J\ -(0!?H GI*k
M"1"R^8(#.HPJN5!1P A,QM486'H "SB')Z '$($D47GV2 M@CS-0W+E(RC@$j
M5@ 2: Y*H KL+,QD!99 1/M<].@&!H$D, 4PWNZC+64P*1:4&Y!>0( I=%LAi
MX :4PS##<GZ0B4 "Q*4'%)O9D$NZ@!=;(3]@U+2 *! <6( 4Z#%,X&,(O2* h
M)+@ 32$:@0A2"IQ[9$2BVVFD LK%4>B).+(T'$7(P1<31&I9L!+F/4C <[L!g
MF<<%6 $"F03,GLZ))$>@!P@!H]@#DL 3&!NPY M0L"=@QU( X'A?HZT+I!J7f
M!U!4B7_47E!@<3@!UY 3",4,\&<TH$YM 1_0^*@-(2$!7.!8- $B$ 7\!@_Xe
M E=@4IA&"-8#)AZR[$=I9ZKT !C !4!4 PM?(.E:L8"&P@586K;\,BD##YHNd
M$R"@WHR)? '_P@CTI()D8UI=CX0!.Z]P)A?[,GQVP UH8]8+MW1(%("D7((3c
MZ'5FP@MT ?&S U9)%'!>*4!>"8$1:01^@ ^@ CD@!#0!Z^,$&A((Z"M!8 @Lb
M@8A5>MY7#! N#X5A]!H20)Y<  M@$5+$"\B4_%'8NE>R.0'W2PH$#+TA'-@1a
M]XHJ&:@$9);K8KP>5V;  =WA9#R!<R'A*%)N*V%N)0=P$)MD.T# BIH"0>"%z
M=<40EG4J%P@P)"-(+DV!%N #A$!I! +)Y0H$@1H =2A&_ER@?*W;)8'+$ +>y
M"GG!8UX 73P!P]1<CL4JX3-'@(G5 -0T.OQ?%2 @62!7=0$7(/GB&PS(.1@Nx
M"- *+P9J5D /,@[L:31HM\P0251;5!D=&Q(H2) K, /F6 F81S\*]J1#->*Yw
MA #,V&=.8#CZ@)>61UY "Q!F2Z 'Y  7$ 5F !6P 3X "UPJNZ+BTHD1< &Zv
MP7VT !;04K# #^AD,6 $K-$FH 721@R0G"O =A$!R>?+:,3!06>];0K<MD*2u
M1QX&BD@F]T@([ #[TEKXS>#T <ZB"1R!*/ #B!D.T '69@K(@!"  H( %&A5t
M6RM"8H&Y]PCER E@$=Y(7H@6(= %UI^=<0+L<064/J/%RAH=3J-@+BQ.$@%Ws
MI@2LP.U$ 5%@/=P BU26DI2(:0(MH 68F!M0*>NF#0@V>:F@=84I\"FL@!,(r
M 55 "=: 575G> "/.@) 8&%U@=&"T?9%$<A.;?-[Z(PYZ 6^!_6B#2K !: 3q
M$/ ":( 0>(0WCZ )@;NB!3S%P (66>#:? \?4 5@P!2@'2#@@JB)H&:G\),.p
MZ ( "0;(",$AI0;-U5!=+V((5 $=T 32!4]1>$$ !LS*5%,HHT!!>7=1S@C8o
MJ1<@,U@ *6,<6$"MK2@4, 3PQ,0Q MFA@WE'@?ES& 5ST!.YQGI%C!;P:'33n
M:JD"5G1G>90MT 4RP_A@ 7AF"+ %5*@%()O3Y (H[,0YMRK@Q:#5,2I31: $m
MU( M$*XP4P^@#<OP":BX+. "$->YH Y.@":('.8Q0,XAIWFH86$%V#;'*-,4l
MC16  =I!!XC"&* %AD!IG&I90#LA+O+A^F0,,@4_6@ $X$Q $Z*F0#G4&^C3k
M!S2!(( SATC0_&Z+H5!)TB+ S9+8]G,!74#LV0 \]V>*P T@)U'@M<*&&W $j
M"N4-( )24P@H4QY@;UY $_@!IK& (-51.B(^1EXY<,_SP@6!\D0FWMRA8".Gi
M"Q51A5;D(HF0#PBC). )_(!SR?IRP!:@C'40"G2SNG5$J0#1\ ^CAF-Q@1BWh
M E" #1!((LUD&(8]^KY&P-A"/R'"7TXR##0#AD<,LC_2!0MXFA]1E7@ [_$:g
MR;2I]I.=,0/T6)9+ HWKVEB!(1 %7%[923M-H JDOM67 F#.$)"$4= *M!6*f
ME (2R7;8#/6D+@6,]X!3UX3VNE/0Z$(%NA. !59 J7%B! 0FS*W+<12::!'He
MBCKA>82 O2<%ZM!+2QO:9YCN/N^!4SQE00T"7X#;A5$K$"E*'7-,"+>EF:2 d
M'] <WBM"RG]GJP5X(A@@FZ '?=E5O$P&/,(3<)"XGP\J :1'_L  UKBLQB(+c
MZ!4^H-D9G)&$ U; SAM=36!X\!Z=EH>0 ))! =T+!>P@_E [8%_@.BP]"!-Eb
MS15P1DF0ZG%#'A('M*@<0 (ZC APAU3"9$S8:QD%I.85/0%=X B,A!70!'S:a
MSH "\H)#L<WV:#&1QY9H%LQ/7,4 1,@#)L)H02== ..%@!TP7V29HK R2: +z
M;($J0P*.P&H,-Z,+=WS+GD"@R$D*8!PM *#!GAY$:PJ+$A"#_,J01,&K.!6$y
M'F!S I=+K(B?&B!F&>?M^ )6P*4< 1GP!4XC"K@GNPT+^ !8&SQ)@!;H.3\'x
MUKH-P>.4G 5K$"W+[+R8O=U$^N()7]H"'Z*?&B@HD 7X48&H K8"U?X 2GK8w
M.@8)*H?T!<-UE"B@@;Y $@ !PLYZ_(#6\ 40TPIH?, UH'B<&_"'%@<JO'+6v
M;&!PAJ14(;" <BEO/$0)B1*9M[]>P $I ER @&0CEI8]Z@P1$ *0U'19L[L2u
M!"9>PH(H0^ '= %=J3I<"178(JL)"$R)WV,BBIB%V"BI1'I$@=B"!$! %Y )t
MFR+0UC4C\!)>IV])*.SQ!4B+U0F8UDJ2>31>(#--D.W1_X# ": "Z9""I2.7s
M0%JM#,Z#&%R@E1Q>0M:;W A&A 'W*WQH@1^P_$J $/0=4"+D#(%5> ,R1 (;r
M =NUYI!.,($_I2.8L $ZP'9M5!2C7&CLO+@5+H13:=00UJ4*B:J@.DP0"Q@0q
M'> 2$HP)Z $.C0E$)BIP3 J2EP@!"C1]K*.L&T(H2!"8 J^J!_@H6N/?SJ(2p
M8&) @'95 <FTJSQO"KA;*TT%)"P9L*E@ +M@@G'R_,B?5^48?]@-&#411(S$o
MN582C\"-,B$E/4J.+09V="*VCC7[*R.@<>T $$ %C(B7*!-B VV%WA @!$J n
M[TBH\O1!*8&"PCSX3+1\(S8@<- ?@G(0.IG[ @$5" 0@F9C1!>*D$7A$?J,%m
MK "V201FP)3  3(LHQ9!*:!VI@O$ZR1/HVY>#2E0Q/J?%% !A2*O$+,N@ 1Rl
M!B#A*:C!]@E6"0<J2$"P6!)90-=( <.P!([OU: ]D>HAM92>\ 5*K BX2#^ k
MCXR #P-L=NEB,'XA( 30';X#!.#("D!,%??W<(&S2H%[U1WA5S<@Y:P&MV(8j
MZ$T9E@$M -']GE5C!"3<IYDE_.0%8+30MHX^%JIC D=!;.B0*G "5$ .0U!&i
MI#2^'P9!CH:5_!0!4I'ZF(@@D 5&Z!*@$%Z@![A1+? "CM86"&H[@%G)LAB h
M!0SD;44"%>%MI9^3=!@,X4HK4:3CK)T-2'$^J,"((&/]0@8 $M'3!<K."9!7g
M6*/.J+47\';I+0YY<V)"/]8[8Y(]/D@/:IT$HSBTU:9!32R/\U1B5"X)U("\f
MY#R*I:,)-(Q#QKP R :;),JCZA/>A&0AKBG H++?\SP^9<H(&) R/!(4C\E5e
M,$B 2V;0$J!/0**?.(H9@IF<7"1@VZY Y @)(LV2Q5O2(15WH?\+=4ZLR56Id
M*+ ?L2!+VR S8%8F'Y\%?6&M#>@.)&!I")N$$B/ FU!Z C1@52ZK]GHB^B;Oc
MVVTH,@?(!"J@(HK<2>*\T$5*187'!&-@Q0G0%'!,P&2&TQB@K# 4.'!R*40!b
M#(Y!=90/%<A2/2]A%8%D-E(PT!&=&V3I69&?OT+0HF"1=0]+ ,1$WA8@:>3Pa
M"#"\,2[7N;WY5#.V@!:2' _.\H2F_QE#O&MN.'4Z*A!MP4G# W: $, 83V $z
MA,DZ931(Q+-I3-'B!62YK[O[D 03L$C.B<#=@'5&,;T1/[D<UN$)_)#!5Y9<y
MP UHFU8@;%:G$6 #+$,AH0^Z9TV0#YZ#?P*="1!;)"";YL*(URWF"\;U 3'@x
M"O09LL.4XA%-S8Y\,<R<F2NA)A(7-_,XWNL$%($; G%1KIH< :7.!R@FDC-!w
MA=_P,*\C88GT(>UQ5Y+&Q9ER5D!\OI_IJ&<RS^M[,U' ,)3 *K K3,CBV'T_v
M@ LTNZ$9&;+ 1NL/F^I># $2@ 4N"F@XE3K >9J *\ ]<@N!J#FS E'4SA\ u
M!8)&7%%4>8H$U(#9F3O]+!'H, ,'H56M*] "<HYL@G[24%$XT6D1$V: 8PP:t
M-6+ J-F,&8=9P.I+LQ3NGI(W=/'>9  OP0(83V%TDBL@+]!9 JRP(G$X"$/#s
M,0-6QPP@L8WGQQ4(:#$_?FOT<W-S(W3\0CWG!!C&>KI#6$#H_1J7>L1P0"1Cr
MJFB$;A&!$"(#>L"P>KM^>I^!/@01A21&B<)(27(*?+(K<!!$:OVH+%* X]A#q
M(6#V"(2\0<:D3^OHIT;4 XX P+I%J/@]Q#]'@[%R%B$Q 3[@_+H/F+36%E(6p
MQ@)&@%^9@"ISAUU XT.?)H#>MB@5<&SNQ65@#=N*9E1@ N->]9KKRQ!]+HZ6o
M*-O% J)+6#5:>>JB_ "1)@6 Q>9] J:KB9@I9(8$BM)RX9(NH 88%3EB+$_ n
MK*P-7:"DK >L"DM  &:T+$*D NT6(@!+&\4U8@$SX*F @"_@O$X51A$","!Km
MG1Q]:S(DH0@(2-LB"<R &/(>_BHTQ &12?$(P$:<$,C.@'*,.^1+7 'M.@+\l
M;%V[7U_ &,&^_OIR!))@P1#@I@K@1OF"8FK4.(0=4 "YV!0ND 1" %@$V!^Ck
M-UB!463!1L"Y\%$\> *&L-*'):R:%!"/'^P.3H&Z,3LRFPA((,B(N @KB#=1j
MG !3\&*A,>[1(Q# 2CBIU+$"M=B-. $=90.8V+;II3]!"-#=)E! GH#M2A]=i
M0&(< 3K#/W#)\8E*6\K[-0'GT(MMPA'=F\3/8J@R'% L8(!IM@)S3(F!GB?@h
MALP5$_ -6@6.^8S85A\ 2+R@.YSU/UP<RG8$;-AAO7[X0CH:"#FW^-C&;-"Mg
MG4P^3A!41H**)!I*>;B$"#PD'4,"^ PHA24NH)3HM%J3&K4?%8!)!BI*=1*+f
ML0-\%L0X$\.!F$F7RUB@FLA2::=*P$R\@&J3!'+R["$Q"8F:G@<:4&4^3&EDe
MJUR@.H2J<$4%KDDMOLRI3B3Z2W=V?+,'E(BC$<+X-0'>L;$MBA;@?H.EP#P?d
MJ>@%7$ &);D)9>_U#]6102%N"N@"'F:24K"O6;TQVFH@ E]@K.W.5_D[!(@&c
M^B)[B1O'#>/@G5I,&$6CZ^5M0>>#[4TN,YNXMEL@!CRR='("E H+"&J!=M+<b
M#"FDP@EW9X)X2."@,DC@->!: .S@U3J@O2H!PN:M=(#+H2LF10O$D<Q6)I^Ga
M\&M]*L )J+6O:P1< G[*3!33L\BRYI*9^AP) !*#C/E&$H'X9E04$_@"001Kz
M:)8<H,I@BH**U45@"N0$;0D"(%N:,0&(YT?0RQ)(=\4&<,,KY\/PSL)B(:Z1y
MFA&@%4$@CM8  \4#=DCK,ZRAK]-H20EXH>Q/#;!MKU5JL@!ZW8A&**L0=;IUx
MA#XJD6A/94")\@%2E9  /%W'(K *_>(\\YN VKI@(^5L4WL4 N M**0 M-*"w
M<] "*:@O9QI*A7W-*W++ D8]P!3%H( H=[2SA@<+0"A 6^3JZJ4">ML/81OLv
M\<!5(9F2!': J-L.G#4O/($G,A70[2,2->BIA+$(E>'[F("=RG9%@"2R)?24u
M:P7@)_71\32XQ#C75P22@&7)<T-B2L#92PH%AH#:=E) 8*J8)N_Z2/R9$%@Rt
M9J$)&+0=X)="SB4Y K=U9:P\ZL92@D"6>QI;J0=T. _II :6$4 G)N!LE LJs
MH+\434:\;_?[/""I-F(73@H*J%TK ,U4B71(V)*$#$CH@2YW)P'A8*YT@(T@r
M 6:J"Z>%UIF<!@:.*0)Q<P?(,BO !#8Y,QQ*4\"H,4@YLEQ70,"^P^<GBR:1q
M(5#JO, 5<#I/0&%;.R'0=GW?P*D*>X04VI$I 'OP"JCQ.CH 7;$ RP=/8D<'p
MA *&.V^D&=/&!$[HD4$"S4XU38&UL7FSP,'F.G%+UXE9)*2CD !2R1=(X^U o
M%14L^H*GDQ-;0[:[-$HKH 3NB8'8 J>T"'08)L!25;8+<)=W1:;H"C>X@%7>n
MP=D5*2B>8+)&53T DDR:@7%UH@DI','Z\I\(X$R38@<4#&$+M0:&=QE4M %"m
M1<QEMSIK3@T84%E8-!P12LN9DLTG<4+TLL0V%BA +,W(6=,"$J(WQ'.AYV=Tl
MP!( H$&A"^"H#HLKP%.<L8$OH$/.2MGL UK#0J0O]-J@.H\3@$U*KUMY-I;Ek
M@"]2&:(%S!Y&9Q7F>@:'[!B@.J'1%GB5EZ:,F9<A@[S2,-%( 0'("Q1!G!8"j
M&A77("M'B\IY(>+[Q])ZXY,!=(4M& LG,;\Y W.IQ8-JX.B 94(#\HRHD(![i
MC#C0T9T7D\>&# .')D<(N#TA=:5$3C\Q78U2!$PJD:A],Q&(P(BG1RV,2B?Vh
MNC30$D 4; %]'#N ]4&TEZB(Q<5FLWCB]E!]K$#!&0+.JS968"!07BP#O GQg
MYS0%", :8&5<0/=25E5R"DCG<T$R5C/X2WN6/>0@NN5Q<V9'$I@-ERM[@HUPf
M)G>P*6=PT"Z/"D A[5$%M,?_FS%%X(05A:YEL[9#>X0)QFH'(('1$Y?(U!,He
M11MR*UB!$+90&.2P  )P*4Y]3<?P",>S#\!K.$!Q-+DMH 1-6!7P CI-"=11d
MPC:]W?9UR<N*Q@N FL8TJ5) ]X$Y^>@*D "$(ATRGO\* 8C[)(  &E0&W$"4c
M>0$*(" ,A()P$%#P4JD*X2%BT8$Q8&@>0D28"!7A(F2$DK!@-NOP7#>7T07,b
M^S$0$D;"1# )E4MQ*/R%S_ ;OL-_^! _XD?\!G 21D "N/@'Y( 4=(TJ%N+Xa
MQ;_X(X#B^\\F$ ;60!DP VF )8Q[@G &RGT9Z MT "3,@< P&,K '' !;" -z
MB(%&1^\% V' ^3J_T;4!FO_S<_[.3P AO^*# #9 ]&T^T!<#(, ,O $Y,.X%y
M@Q@@"&.@;F3\K<_UN[[7__I;/^E7KH]/]I&^R#<V5  -I($Y  +:0,D_^2D?x
M)-R!E,\&0$#+=P,O/PS$?! P!^J &" #:4 .! 0Z,/73@,T' 7XA(HR!,, &w
MZGX:H ,/@0V8 ;.O] 4_T4\#=J ,L($\0.E<0-FG_/X3[(O^T4_Z2[_7%_O&v
MI@H\A'&/!D!"N1\#;. -V/NV__9! ,QO_52?#J !OU#UY<#5)_ANW^2#@*F/u
M@N\-[1?^8?_L2_SES_R;?_,_^Q0L=^N !" %-'\9" ,/8?J3?1QP _(?P +]t
MSC_\BW_Q+_*A?]H'"5*_\;^!N>\&S@#B%_RL'R0 ?LM/^.6 X6?[=P#W@X0\s
M\ 8$P]+7^8C?W(, N@#[ZP 90/]Q?PY _[G?^$% 7  !=&$.I(3&#Q'*_TG(r
MF,!("O0 ?UD'YH <X )&7^3/BJEPFWJ OZP#<T .< &Z /OK !DH R+_4I6Pq
M<4_OH7_?AP-P0/#/ ;:O^T$"% @#?:$-E(&83_7=(A;  E@ "RP]$+#VZW@9p
MR/Q4OP[,_CL0!N2 &Z +9T#DUQ\F$ 2.P/?H 0?A#K0 .! &Y$#Y5_I'P.7Wo
MA;I/!N"^&WC\:> -_ 4=4/Y/0@Y**I8U >A]OJ#S7< ;$ -J  3$A3( !US n
M&Q #:@ $7'T\X/3?@!A0 R! ((2!OD &R( +> -B0 WX2Y&?  1"&) #9$#Sm
MNX W( ;4  @0"&% #K1\.N "WH 84 ,@0""$ ?O_%US &Q #:@ $"(0P( ?@l
M0!H8 VO !;P!,: &_*7(3P"P7PX0_JM/!US &Q #:@ $P'XY0/C+P!M@ R[@k
M#8@!-0 "RCT98/\NX V( 34  NC"XY_Y<L %O $QH ;\I<A/ #D?[Y,!S>\"j
MWH 84 /_'^_3A9O_!L2 &ECZ;Z#]NX$PT ;*@ MX V) #;3]-Y#Y7< ;$ -Ji
MP%^*_ 30!NP T9_Z+N -B $U4,?+P!U@_R[@#8@!-3#\X0 =2 -OX"^X@#<@h
M!M3 \,_\<H -A '._P;$@!KPER(_ < !.> &(/_B=P,NX V( 35@^T^^X)\#g
M:, %O $QH ;X_AB0 X+_#+B -R &U #?+P-T(.;+@3;@ MZ &% #_E+D)X Yf
MP!?" !D@ R[@#8@!-<#W^4++IP,NX V( 34P[E]^&V@#:S_KOP$QH ;&O4J8e
M VE #Y0!%_ &Q( :\)<B/P'4 3<P!O@"&W !;T ,J $04 ?@ !G0^V7 !;P!d
M,: &0 #[A_W77PZX@#<@!M0 "&#_9$#SNX W( ;4@+\4^0F _>?]A^ "WH 8c
M4 ,@@/VW@3>0^5W &Q #:@ $L/^9+P?> !MP 6] #*@!$,#^"7\=$ @NX V(b
M 350_D_"]=4C2<6R@H"F/P?2P!MP 6] #*B!\G\2GD!2L:QEDJ8^@:3"L<IDa
M)Q6D3R"I<*SR7_''__@?_Q-?Z9\ QL\&-L+:1_R-G_7K?1"P^.L""DC\(* .z
M]'W&O_E!P-JW,F3@#>#]CX_ZQ__X'_\3_R2(?,;/!JC<''#[C1\$C($WT ;@y
M0!@8 W2@[4.$-% 'VL#2#P-RH.67_XH__L?_^)_X2O_\1_TWH/[9O_L? V\ x
M#MS_^ \"6G\8( ,O/^K'?;9/^.-_X <!<$ .O $X\/)! !Q@ V%@#)0!\#_^w
MQ__XG_@G0>2W_C! !E[^'*!RM7M63(7;I.>;_LU' V42CA&R,E)EN #1AP/Vv
MWPZX #10_D]"[9X54^$VZ?FF?_/1 )5K^C<?#8C\!# &W@ <R ,@H.G??#10u
M)N$8(2LC588+-/V;CP;*_TFHW;-B*MPF/4_TX8#]MP,N  U0.:(/!^R_'7 !t
M:$#D)X Q\ ;@0!X  40?#MA_.^ "T$"9A&.$K(Q4&2Y ].& _;<#+@ -E/^*s
M/_['__B?^$K__$?]-Z#^V;_[G_N-'P2, <&O]T%"&.#[?G_^#_ZIGP>B/O&_r
M_@*A[9>!-C#U\P#X;_MO@ QH_D:7^$$ 77C\:4#O@P3=#Q*"?QG0 73!_=,%q
M$'#]!<+PQ_N>'^0K__$__L<_Q"__%7_\C__Q/_&5_A@0_'I?[D_]-0 "YO_@p
MG_IY  2D 3-0Q]^ &V@!90 /K/V8[P;H0*,[ P2!\(. Q]_H$C_(A_YPX.5+o
M?3G0!N(_"% #;P#J(X0YX/8;?]M_ V1 \Y=]U#_^Q__XG_@G0>3/ ;??^*=_n
MZP\#9.#ELWTN(/(3P!QH V^ #&A^?RGR$\ <: -O@ QH?@4=!N0 W@\#<L %m
MT 6"SP5$?@*8 VW@#9 !S<\%YH#;9P-HH ZT?!= %\: R$\ 8R BS($V\ ;(l
M@.87^0F@!01_D- "S(!>X +!'^ZK_-KM[ZL"$P@"1X!CV0T]0A680 ^8 S*Ik
M=F=,8%1EN,#,]_E.W^B+_ 0P!B("I2O_)V$.M($W0 8TOPX0^0F@#:R!^<_Wj
MV\ ;( .:O_R?A#G0!MX &=#\"CH,R &\'P;D@ N@"V. RN']," '%G_C=P%Ti
M80R(_ 0P!MX ',@#=?SZRX'%W_A= %T@^'.@#;P!,J#Y%708D -X/PS( 1= h
M%\9 ^3\)<Z -O $RH/FYP!QP^VP #=2!EN\"Z,(8H')SP.VS 3*@]\. "Z +g
M8T#D)X Q\ ;@0![@^VZ?#9 !O1\&7 !=(/ASH V\ 3*@^;G ''#[;  -U(&6f
M[P+HPA@H_Q5__(__\3_QE?X8$/QZ7^Y/_34  N;_X)_Z>0 $I $S4,??@!MHe
M 64 #ZS]F.\&Z$"C.P,$@?"#@,??Z!(_R(?^<.#E2WTYT ;B/PA0 V\ ZB.$d
M,? &V@ <" -C@ ZT_3= !C0_V4?]XW_\C_^)?Q)$_AAX VT #H2!,4 'J%SKc
M#P-DX.6S?2X@\A/ &&@#;X ,:'Y_*?(3P!AH V^ #&A^!1T&Y #>#P-RP 70b
M!8+/!41^ A@#;> -D '-SP7F@-MG VB@#K1\%T 7QH#(3P!C0/&W@3= !C2_a
MR$\ +2#X@X068 ;T A<(_G!?Y==N?U\5F$ 0. (<RV[H$:K !'K &)!)M3MCz
M J,JPP5Z?LV_^49?Y"> ,1 1*%WY/PECH V\ 3*@^76 R$\ ;6 -S'\0, ;:y
MP!L@ YJ__)^$,= &W@ 9T/P*.@S( ;P?!N2 "Z +8X#*X?TP( <6?^-W 71Ax
M#(C\!# &W@ <R -U_/K+@<7?^%T 72#X8Z -O $RH/D5=!B0 W@_#,@!%T 7w
MQD#Y/PECH V\ 3*@^;G ''#[;  -U(&6[P+HPAB@<FB@#K1\,J#WPX +H MCv
M0.0G@#'P!N! '@ !:* .M'PRH/?#@ N@"P1_#+2!-T &-#\7F -NGPV@@3K0u
M\ET 71@#Y;_BC__Q/_XGOM(? X)?[\O]J;\&0,#\'_Q3/P^ @#1@!NKX&W #t
M+: ,X(&U'_/= !UH=&> (!!^$/#X&UWB!_G0'PZ\?*DO!]I _ <!:N -0'V$s
MT 8@0AJH VV@[;\!,J#YR3[J'__C?_Q/_),@\ML 1$@#=: -4+G6'P;(P,MGr
M^UQ Y"> -M &W@ 9T/S^4N0G@#;0!MX &=#\"CH,R &\'P;D@ N@"V,@ 7 !q
MD9\ VD ;> -D0/-S@3G@]MD &J@#+=\%T(4Q(/(3P!B("&V@#;P!,J#Y17X"p
M: '!'R2T #.@%[A \(?[*K]V^_NJP 2"P!'@6'9#CU %)M #VH!,JMT9$QA5o
M&2XP]'V^TS?Z(C\!C(&(0.G*_TEH VW@#9 !S:\#1'X": -K8/ZW_3;P!LB n
MYB__)Z$-M($W0 8TOX(. W( [X<!.> "Z,(8H')F( S(@<7?^%T 71@#(C\!m
MC($W  ?R0-0/ W)@\3=^%T 7@'\;> -D0/,KZ# @!_!^&) #+H NC('R?Q+:l
M0!MX V1 \W.!.>#VV0 :J ,MWP70A3% Y>: VV<#9$#OAP$70!?&@,A/ &/@k
M#<"!/,#WW3X;( -Z/PRX +H _-O &R #FI\+S &WSP;00!UH^2Z +HR!\E_Qj
MQ__X'_\37^F/ <&O]^7^U%\#(&#^#_ZIGP= 0!HP W7\#;B!%E &\,#:C_ENi
M@ XTNC- $ @_"'C\C2[Q@WSH#P=>OM27 VT@_H, -? &H#Y"8 -A0 ZT_+;_h
M!LB YB_[J'_\C__Q/_%/@LAG V% #K1\*M?ZPP 9>/ELGPN(_ 3 !MK &R #g
MFM]?BOP$P ;:P!L@ YI?08<!.8#WPX << %T80PD "X@\A, &V@#;X ,:'XNf
M, ?</AM  W6@Y;L NC &1'X"& ,1@0VT@3= !C2_R$\ +2#X@X068 ;T A<(e
M_G!?Y==N?U\5F$ 0. (<RV[H$:K !'H &Y!)M3MC J,JPP68OL]W^D9?Y"> d
M,1 1*%WY/PELH V\ 3*@^76 R$\ ;6 -S/^EWP;> !G0_.7_)+"!-O &R(#Fc
M5]!A0 [@_3 @!UP 71@#5,X,A $YL/@;OPN@"V- Y"> ,? &X$ >B/IA0 XLb
M_L;O N@"P6<#;> -D '-KZ##@!S ^V% #K@ NC &RO])8 -MX V0 <W/!>: a
MVV<#:* .M'P70!?& )5# W6@Y9,!O1\&7 !=& ,B/P&,@3< !_( "$ #=:#Ez
MDP&]'P9< %T@^&R@#;P!,J#YN< <</ML  W4@9;O NC"&"C_%7_\C__Q/_&5y
M/A2H W1@Y;=\W?_RX___%P-]00[D 1! %Z)^W!_W;0 .//U&I_O+/0@8 V\ x
M#N0!$/#X5S[XC_^('P[  3GP!N" _=?[(,$-A($V@/Z)O^X'"6V@#+2!J9\'w
MVOX;( .:'P30!1 0!QC"'* #:> -N(%&E_C!/P@@ ]9_[^M^D!#SVP <F/IAv
M0 [D@:@?]\L^ZA__XW_\3_R3(/)K=\8$1E4&>:FR)T 55DK3O_E&G\K5[B>0u
M5#B6R$\ 9$#SC_LV  >>OLA/ $:_.%$Z+M#T;_X8: -D0.0G@#'P!N! 'ACWt
M;0 .//TR"<@\3AFI,LA+E3T!JK!2FO[--_HB/P&0 <T_[ML ''CZY;_BC__Qs
M/_XGOM(? V^@#;A]<\_V$S\(( -E  Z4>S+P^N]_U"?^= 'PVX$T0 ;J .-Or
M^V^ #-0!EC '0+[R'__C?_Q#_/)_$O0^7]#Y+N -B $U0.4H'1?0^WQ!Y[L q
M@D_IN$#3O_EH0"]P :(/!^R_'7 !:$#D)X#:?:FL3.VN/TP@"!P!CG40VD#Mp
MUB-48:4<!(*O3 _"&]#[?$'GZP4NH/?Y@LYW 6.@_,.%,E &X( +> -B0 U0o
M.4K'!>)"&8 #+H#@4SHNT/1O/AK0"UR Z,,!^V\'7  :$/D)H'9?*BM3N^L/n
M$P@"1X!C'80V4+OU"%58*0>!X"O3@_ &XD(9@ -Z@0O$A3( !US &"C_<.$-m
MX &G_P;$@!J@<I2."UQ]/.#T"3ZEXP)-_^:C ;W !8@^'+#_=L %H &1GP!Jl
M]Z6R,K6[_C"!(' $.-9!: .U6X]0A95R$ B^,CT(;^#JXX'#3^FXP-7' TY_k
M#)3_DR 0PD!?( -DP 6\ 3&@!J@<I>," B$,] 4R0 9< ,&G=%R@Z=]\-* 7j
MN #1AP/VWPZX #0@\A- [;Y45J9VUQ\F$ 2. ,<Z"&V@=NL1JK!2#@+!5Z8'i
MX0T(A##0%\A 1*!T7$ @A(&^0 ;(@ L8 ^7_) B$," 'R(#F=P%O0 RH 2I'h
MZ;B 0 @#<H ,:'X70/ I'1=H^C<?#>@%+D#TX8#]MP,N  V(_ 10NR^5E:G=g
M]8<)!($CP+$.0ANHW7J$*JR4@T#PE>E!> ,"(0S( 3*@^?4"%Q (84 .D '-f
M[P+&0/D_"0(A#,B!ED\'7, ;$ -J@,I1.BX@$,* '&CY=, %$'Q*QP6:_LU'e
M WJ!"Q!].&#_[8 +0 ,B/P'4[DME96IW_6$"0> (<*R#T 9JMQZA"BOE(!!\d
M97H0WH! " -RH.73 ;W !01"&) #+9\.N( Q4/Y/@D ( _;_+[B -R &U "5c
MHW1<0""$ ?O_%UP P:=T7*#IWWPTH!>X -&' _;?#K@ -"#R$T#MOE16IG;7b
M'R80!(X QSH(;:!VZQ&JL%(. L%7I@?A#0B$,&#__X)>X ("(0S8_[_@ L9 a
M^3\) B$,R $XD ;&P!IP 6] #*@!*D?IN(! " -R  ZD@3&P!EP P:=T7*#Iz
MWWPTH!>X -&' _;?#K@ -"#R$T#MOE16IG;7'R80!(X QSH(;:!VZQ&JL%(.y
M L%7I@?A#0B$," 'X$ :& -K0"]P 8$0!N0 '$@#8V -N( Q4/Y/ NR7 X3_x
MZM,!%_ &Q( :H'*4C@O ?CE ^*\^'7 !!)_2<8&F?_/1@%[@ D0?#MA_.^ "w
MT(#(3P"U^U)9F=I=?YA $#@"'.L@M(':K4>HPDHY" 1?F1Z$-P#[Y0#AO_ITv
M0"]P =@O!PC_U:<#+F ,E/^3 /OE .$O V^ #;B -R &U "5HW1< /;+ <)?u
M!MX &W !!)_2<8&F?_/1@%[@ D0?#MA_.^ "T(#(3P"U^U)9F=I=?YA $#@"t
M'.L@M(':K4>HPDHY" 1?F1Z$-P#[Y0#A+P-OH.Y3.BX ^^4 X2\#;X -N( Qs
M4/Y/0KDG ^S?!;P!,: &J!REXP+EG@RP?Q= \"D=%VCZ-Q\-Z 4N0/3A@/VWr
M RX #8C\!%"[+Y65J=WUAPD$@2/ L0Y"&ZC=>H0JK)2#0/"5Z4%X ^6>#+!_q
MO< %RCT98/\N8 R4_Y- %Q[_S)<#+N -B $U0.4H'1>@"X]_YLL!%T#P*1T7p
M:/HW'PWH!2Y ].& _;<#+@ -B/P$4+LOE96IW?6'"02!(\"Q#D(;J-UZA"JLo
ME(- \)7I07@#=.'QSWRJ3^FX %UX_#-?#KB ,5#^3T+.Q_MD0/.[@#<@!M0 n
ME:-T7"#GXWTRH/E= ,&G=%R@Z=]\-* 7N #1AP/VWPZX #0@\A- [;Y45J9Vm
MUQ\F$ 2. ,<Z"&V@=NL1JK!2#@+!5Z8'X0WD?+Q/!C2_7N ".1_ODP'-[P+&l
M0/D_"3D?[].%F_\&Q( :H'*4C@OD?+Q/%VX^P:=T7*#IWWPTH!>X -&' _;?k
M#K@ -"#R$T#MOE16IG;7'R80!(X QSH(;:!VZQ&JL%(. L%7I@?A#>1\O$\7j
MV#ZEXP(Y'^_3A9L_!LK_28C][=\-A($V4 9<P!L0 VJ RE$Z+A#[V[\;" -Mi
MH RX ()/Z;A T[_Y:$ O< &B#P?LOQUP 6A Y"> VGVIK$SMKC],( @< 8YUh
M$-I [=8C5&&E' 2"KTP/PAN(_>W?#82!-@ 2*!T7B/WMWPV$@390!ES &"C_g
M)Z$-O(',[P+>@!A0 U2.TG&!-O &,K\+(/B4C@LT_9N/!O0"%R#Z<,#^VP$7f
M@ 9$?@*HW9?*RM3N^L,$@L 1X%@'H0W4;CU"%5;*02#XRO0@O($V\ 8ROU[@e
M FW@#61^%S &RO]): -V@.A/?1?P!L2 &J!RE(X+M $[0/2GO@L@^)2."S3]d
MFX\&] (7(/IPP/[; 1> !D1^ JC=E\K*U.[ZPP2"P!'@6 >A#=1N/4(55LI!c
M(/C*]""\@39@!X@^\:=T7* -V &B/_5=P!@H_R<![]\!]N\"WH 84 -4CM)Qb
M ;Q_!]B_"R#XE(X+-/V;CP;T A<@^G# _ML!%X &1'X"J-V7RLK4[OK#!(+ a
M$>!8!Z$-U&X]0A56RD$@^,KT(+P!O'\'V+]>X )X_PZP?Q<P!LK_27@#<( .z
MI($W\!=<P!L0 VJ RE$Z+O &X  =2 -OX"^X ()/Z;A T[_Y:$ O< &B#P?Ly
MOQUP 6A Y"> VGVIK$SMKC],( @< 8YU$-I [=8C5&&E' 2"KTP/PAMX W" x
M#J2!-_ 7] (7> -P@ ZD@3?P%US &"C_)^$-9'XYP ;" .=_ V) #5 Y2L<%w
MWD#FEP-L( QP?H)/Z;A T[_Y:$ O< &B#P?LOQUP 6A Y"> VGVIK$SMKC],v
M( @< 8YU$-I [=8C5&&E' 2"KTP/PAMX YE?#K"!,) '] (7> .97PZP@3# u
M^<= ^3\)<$ .N '(O_C=@ MX V) #5 Y2L<%X( << .0?_&[ 1= \"D=%VCZt
M-Q\-Z 4N0/3A@/VW RX #8C\!%"[+Y65J=WUAPD$@2/ L0Y"&ZC=>H0JK)2#s
M0/"5Z4%X W! #K@!R+_XZP*EXP)P0 ZX <B_^-V "Q@#Y?\D"'XS(/CG !IPr
M 6] #*@!*D?IN(#@-P."?PZ@ 1= \"D=%VCZ-Q\-Z 4N0/3A@/VW RX #8C\q
M!%"[+Y65J=WUAPD$@2/ L0Y"&ZC=>H0JK)2#0/"5Z4&8^B=?\,\!-* 7N(#@p
M-P."?PZ@ 1<P!LK_29CY<D#PGP$7\ ;$@!J@<I2."\Q\.2#XSX +(/B4C@LTo
M_9N/!O0"%R#Z<,#^VP$7@ 9$?@*HW9?*RM3N^L,$@L 1X%@'H0W4;CU"%5;*n
M02#XRO0@R/XQ( <$O_NG=%Q@YLL!P7\&7, 8*/\GX2'0@9@O!]J "W@#8D -m
M4#E*QP4> AV(^7*@#;@ @D_IN$#3O_EH0"]P :(/!^R_'7 !:$#D)X#:?:FLl
M3.VN/TP@"!P!CG40VD#MUB-48:4<!(*O3 ^"["\#="#FRX$VH!>XP$.@ S%?k
M#K0!%S &RO])F -\(0R0 3+@ MZ &% #5([2<8$YP!?" !D@ RZ X%,Z+M#Tj
M;SX:T M<@.C# ?MO!UP &A#Y":!V7RHK4[OK#Q,( D> 8QV$-E"[]0A56"D'i
M@> KTX,@^_E"&" #$8'2<8$YP!?" !D@ RY@#)3_DS '^$++IP,NX V( 35 h
MY2@=%Y@#?*'ETP$70/ I'1=H^C<?#>@%+D#TX8#]MP,N  V(_ 10NR^5E:G=g
M]8<)!($CP+$.0ANHW7J$*JR4@T#PE>E!D/U\H>73 ;W !>8 7VCY=, %C('Rf
M?Q)2@AB8 VE #Y0!%_ &Q( :H'*4C@ND!#$P!]* 'B@#+H#@4SHNT/1O/AK0e
M"UR Z,,!^V\'7  :$/D)H'9?*BM3N^L/$P@"1X!C'80V4+OU"%58*0>!X"O3d
M@_ &4H(8F -I0 ^ !$K'!5*"&)@#:4 /E $7, ;*_TF(^7*@#;2!M9_UWX 8c
M4 -4CM)Q@9@O!]I &UC[69_@4SHNT/1O/AK0"UR Z,,!^V\'7  :$/D)H'9?b
M*BM3N^L/$P@"1X!C'80V4+OU"%58*0>!X"O3@_ &8KX<: -M8.T3?$K'!6*^a
M'&@#;6#M9_TQ4/Y/0AUP V. +[ !%_ &Q( :H'*4C@O4 3<P!O@"&W !!)_2z
M<8&F?_/1@%[@ D0?#MA_.^ "T(#(3P"U^U)9F=I=?YA $#@"'.L@M(':K4>Hy
MPDHY" 1?F1Z$_N\&Q@!?J/N4C@O4 3<P!O@"&W !8Z#\GX0Z  ?(@-XO R[@x
M#8@!-4#E*!T7J -P@ SH_3+@ @@^I>,"3?_FHP&]P 6(/ARP_W; !: !D9\ w
M:O>ELC*UN_XP@2!P!#C606@#M5N/4(65<A (OC(]"/T?#I !O0\2*!T7J -Pv
M@ SH_3+@ L9 ^3\)[!_V7W\YX +>@!A0 U2.TG$!]@_[K[\<< $$G])Q@:9_u
M\]& 7N "1!\.V'\[X +0@,A/ +7[4EF9VEU_F$ 0. (<ZR"T@=JM1ZC"2CD(t
M!%^9'H3U3Q=@__6G^I2."[!_V'_]Y8 +& /E_R2P?S*@^5W &Q #:H#*43HNs
MP/[)@.9W 02?TG&!IG_ST8!>X )$'P[8?SO@ M" R$\ M?M269G:77^80! Xr
M ASK(+2!VJU'J,)*.0@$7YD>A/5/%\B YM<+7(#]DP'-[P+&0/D_">P_[S\$q
M%_ &Q( :H'*4C@NP_[S_$%P P:=T7*#IWWPTH!>X -&' _;?#K@ -"#R$T#Mp
MOE16IG;7'R80!(X QSH(;:!VZQ&JL%(. L%7I@=A_=.%O+_Z*1T78/]Y_R&Xo
M@#%0_D\"^V\#;R#SNX W( ;4 )6C=%R _;>!-Y#Y70#!IW1<H.G??#2@%[@ n
MT8<#]M\.N  T(/(30.V^5%:F=M<?)A $C@#'.@AMH';K$:JP4@X"P5>F!V']m
MTX4V\ 8ROU[@ NR_#;R!S.\"QD#Y/PGL?^;+@3? !ES &Q #:H#*43HNP/YGl
MOAQX VS !1!\2L<%FO[-1P-Z@0L0?3A@_^V "T #(C\!U.Y+965J=_UA D'@k
M"'"L@] &:K<>H0HKY2 0?&5Z$-8_79CY<N -U'U*QP78_\R7 V^ #;B ,5#^j
M3P+[)_QU0""X@#<@!M0 E:-T7(#]$_XZ(!!< ,&G=%R@Z=]\-* 7N #1AP/Vi
MWPZX #0@\A- [;Y45J9VUQ\F$ 2. ,<Z"&V@=NL1JK!2#@+!5Z8'8?W3!<)?h
M!P2"7N "[)_PUP&!X +&0/D_"4U_#J2!-^ "WH 84 -4CM)Q@:8_!]+ &[#5g
M<Z -B/P$X/;G0!O0"UR@Z<^!-/ &;/4<: ,OH W@ 1;0].= &G@#+N -B $Uf
MP +<0!U@ RS #=0!-K #RG_%'__C?_Q/?*4/!5Z^U)<#;0#Q@P Q$ ;&P!JHe
M W!@^)N!^!_UXS[;IPOQ'P3,_\$_]?, ",C_+Q\DZ/XR /XE0O '"6(@#(R!d
M-5 'X,!&& -OH VX?7,/ NX ]@<!:[_O0X1V/P;> !RX_XB_\4?]N,_V"7_\c
M!_\@8/X/_JF?!_PE'&CZ;/\-U 7=#Q+&3]2/_7  #N0!LH_ZQ__X'_\3_R2(b
M?#$0!L; &J@#<$ 'B/P$  34/4%(.2F'5XN!,# &UD =@ /#WPR @*;/]E-.a
MRE$!(C\!  %U3Q"2P%]X^70 !(B!,# &UD =@ ,@ /#/ 9-/!_8^70 !9,#^z
M9WZ(0^42/PA0^W0 \;N!/  "3'X>" $B/P$  3@0!NK 0Q#Y": -K('YC_A]y
M%!QH^G- Y"< ,J#Y$;^/@@--?PYP@7BJ D1^ A@#;P .Y '_5S\0OX^" TU_x
M#I3_BC_^Q__XG_A*O_JW@3>0^1%_XQ_W9: -P(&I'P;D0!Z(^G&?[2=^$' 'w
MIOX:  'S?_ 7_L.O^_4^"+@#+[\,@'\0, 8$O]Z'")\?_(__\3_^)_Y)$/FPv
M__J[ 1T@\A, &=#\?+\-O $RH/FY0#Q5 2(_ 9 !S0\"QD ;> -D0/-S@7BJu
M D1^ B #FK_MMX$W0 8T/Q>(IRI Y"< ,J#YEWX;> -D0/-S@7BJ D1^ I #t
M;6#^\_TV\ ;(@.87^0E #K2!^0\"QD ;> -D0/.+_ 0@!]K _&_[;> -D '-s
M+_(3@!QH _-_Z;>!-T &-#_%1_?JGB 8!(2P6:^%0AX+#@$BD(1\CQ$T0K^7r
MH1 DCELPD4 2$#[7EW*O9>L;@;@/ IQ &&@#9>#BO^B9;__A !U( V_@)R73q
M9)I,DVDR3:;)-)DFTV2:3)-I,DVFR329)M-DFDR3:3)-ILDTF2;39)I,DVDRp
M3:;)-)DFTV2:3)-I,CT)K$& N @*]A,6H;O_]_%>X-/[!!#\X;[*E_JYW^ICo
M_9-P&)8?23L@VL-OH."WC_)9PL4/_G!?Y4M]JM\&Z$(:\#OO#0< A8P_%'P(n
MXJ<#?$'GNX Q</&;/MLW W7 #8P!.I &WL!?. DT0 9T?R]V0  6Z ,!<:$,m
MP $7, 8N?M-G^V:@#KB!,4 'TL ;^ LG@08$!6::\4G##.@55Q\/./TQ</&;l
M/MLW W7 #8P!.I &WL!?. D"Q/'DA0-2=%H)"! (8: OD $RX +&P,5O^FS?k
M#-0!-S &Z$ :> -_X220!JWAQ0Z(?9AU($ @A $Y0 8TOPL8 Q>_Z;-],U 'j
MW, 8H -IX W\A9,P%$872?MB ^2]"H0P( =:/AUP 6/@XC=]MF\&ZH ;& -Ti
M( V\@;]P$GST=7^O!V2DH4(0(!#"@/W_"RY@#%S\IL_VS4 =< -C@ ZD@3?Ph
M%TZ"VCL*&7\NT8!>(1#"@!R  VE@#*P!%S &+G[39_MFH ZX@3% !]+ &_@+g
M)^&"_(08D/%G0-8@:;!?#A#^JT\'7, 8N/A-G^V;@3K@!L8 '4@#;^ OG(2(f
M,5U<Q &Q#XX1!,!^.4#XR\ ;8 ,N8 Q<_*;/]LU '7 #8X .I($W\!=.0M;(e
M 49AZ]\%DM;T;_X8: -DX.+3 :N/]:-^W#\)=V&DD30*1@."@HMH^C<?#5S\d
MIL_VT4#4C_LK'P3$!1 P!MX '##\$8'PT],Z, ?D@&AV ["_#I"!EG!!OHF+c
MH&"MQ <W_9OO]MW Q6_Z;-_MUP64SQ).0M=P4S$@XW^)700"FOX<2 -OP%;/b
M@3:0 .B U<?Z(( NQ'PY8 ;"P!@ "82_^'>4*7 2)*%@R_A#@>R @*8_!]+ a
M&W !8^#BMP&ZD 8, EV(^7+ #(2!,0 2"/_PAP-YGP[0!?<_!_+ '(CY:&ETz
MI0\O=D"TAP\! 40?#MA_.^ "T,#%;_IL'PU$_;@/ NK [!<#>0 $-'VV;P;Jy
M@!L8 W0@#;R!OW 2\,)U?Z\'A#40!1! !LI &W@#+F ,7/RFS_;G@-MO_"" x
M#)2!-O &_@)?T/MIX W4!3@@!][ &>@+:&DH[)Z,#[#Z!@@H]V2 _;N ,7#Qw
MFS[;-P-UP V, 3J0!M[ 7S@)K"%ZD+2M_R*C?AB0 XN_\;L NC &$@ =L/I8v
M'P30!=A?!\@ ^H_[)P%[\:SWNO5C@/=" W6@Y9,!O1\&7 !=& ,)@ Y8?:P/u
M N@"[*\#9 #]Q_V3<-T_GQ<[(!!C%X$ NO#X9[X<< %CX.(W?;9O!NJ &Q@#t
M=" -O(&_<!)^0JMS$0?$/HR/_X_WR8#F=P%CX.(W?;9O!NJ &Q@#=" -O(&_s
M<!)H0-9XD1E_N!6%_X_WZ<+-'P,7O^FS?3-0!]S &* #:> -_(63@+U$FA<[r
M($+TO<;^]N\&PD ;* ,N8 Q<_*;/]LU '7 #8X .I($W\!=.PNYY;QG?3=G@q
MMO\&,K\+& ,7O^FS?3-0!]S &* #:> -_(63@ J7WWL](#& !@2%MF\'B/[4p
M=P%CX.(W?;9O!NJ &Q@#=" -O(&_<!($"#B9QUO_1=;QZR\'%G_C=P%T80PDo
M #I@];$^"* +L+\.D 'T'_=/0N#H&S$@XT>/&^#%\/X=8/\N8 Q<_*;/]LU n
M'7 #8X .I($W\!=.@F-,'WGA@."%_#?\X0 =2 -OX"^X@#%P\9L^VS<#=< -m
MC $ZD ;>P%\X"=>=*,SC S)=L-?PS_QR@ V$ <X_!BY^TV?[9J .N($Q0 ?2l
MP!OX"R=ANGR37G% BD+^ P%P0 ZX <B_^-V "Q@#%[_ILWTS4 ?<P!B@ VG@k
M#?R%D[ (#X.+.""HT ;;_NM/!MI &7 !9$#V7WS!'P8B0AM _W$_ZA-_.F#Uj
ML?Y)L,'B(P9L_:)#T@1_&" #;: ,N  R(/MC0 +P"V] ][_\WG_U00#!%_QAi
M("*T ?0?]T\"P,H:[_6 M)+N;_NO/QEH V7 !;0!NI &\$ ": -T(0T8!,$?h
M!B)"&T#_<?\D: \"XB(.B(\&"K;_Y O^.8 &7, 8N/A-G^V;@3K@!L8 '4@#g
M;^ OG(2[@ .T1\:/ 5HC+\Q\.2#XSX +& ,7O^FS?3-0!]S &* #:> -_(63f
M0!2^R3P^(".M:_#],D '8KX<: ,N8 Q<_*;/]LU '7 #8X .I($W\!=.@DA#e
MA?-XZ\< [S4'W#X;( -Z/PRX +HP!A( ';#Z6!\$T 787P?( /J/^R<A:XPNd
MDG9 9 !V\6)S@"^$ 3) !ES &+CX39_MFX$ZX ;& !U( V_@+YP$;Q*"8T#&c
M)PK=G^_SA99/!US &+CX39_MFX$ZX ;& !U( V_@+YP$-X5=WNL!>9$B;=RKb
MA#F0!O1 &7 !8^#B-WVV;P;J@!L8 W0@#;R!OW 2?D)0<#H'9+CUYG'_\MM a
M&UC[67\,7/RFS_;-0!UP V. #J2!-_ 73@)K&!\D[8  K!S@=.J &Q@#?($-z
MN( Q</&;/MLW W7 #8P!.I &WL!?. E"(2AXL2]&&EQ$'8 #9$#OEP$7, 8Ny
M?M-G^V:@#KB!,4 'TL ;^ LG0:3-@%:2\=V4#' Z[!_V7W\YX +&P,5O^FS?x
M#-0!-S &Z$ :> -_X21$C[[V7@\(P!H@((#]DP'-[P+&P,5O^FS?#-0!-S &w
MZ$ :> -_X22,C^D2 S+^>^L;((#]Y_V'X +&P,5O^FS?#-0!-S &Z$ :> -_v
MX20 ++SP7@](#)AU+H+]MX$WD/E=P!BX^$V?[9N!.N &Q@ =2 -OX"^<!$F(u
MO9S. 8$8K00$L/^9+P?> !MP 6/@XC=]MF\&ZH ;& -T( V\@;]P$A9A#- :t
M&3\& &L0P/X)?QT0""Y@#%S\IL_VS4 =< -C@ ZD@3?P%Q0 NE?W!,$@( 22s
M;_)1/DMP"!"!).1[C* 1^OW;1_DJ7R20!(0__L?_^)?X%?_C;WV.OWFF -D?r
M 4J?Y)M\E*_R";_==_DP'R08_:9_\\. Z0?Y2E_J4WV%<2U<@A5X^7,@#;R!q
MNL"7:L#G'P$5__.#?*6?]M?^\8?[*G_N-WZ[[_)A/D@0_'&@#@1^B,#W_?[\p
M'_R%W^:#?*7_^4%^Q1__XW_\1WRESY<P)_6W_MB_#&C_C\_]O7\-0/H5?_R/o
M__$?\4_"2^L!"2$,H?W6'_7?@/IG_^X_#,!_W2__ __@+_R'/_^__/W?_ZF^n
MT4?\YAX$T 787P?( /J/^V'(V,S]Q@\"X@((H MS("4T?HB@]%\TRL?[\9_Om
M]W\Y, ;0?]P/0SDHJ7R/_742$H#>YPLZOW:WZP,2%\H '*C=[7KK7WT\8/-Kl
M=[O.^ (A#/0%,D &:G>[Y@(G(0$(A# @!\B YJ_=[1H$"(0P( =:/AVHW>T:k
M! B$,&#__T+M;M<@0""$ 3D !]+ &%@#M;M=<X&3D !@OQP@_%>?#M3N=@W[j
MY0#A+P-O@ W4[G9=[LD ^Z_=[?J T(7'/_/E0.UNUUS@)"2 G(_WR8#FK]WMi
M^O_C?;HP!VIWNU[Z;Z#]NX$PT ;*0.UNUVW@#63^VMVNN<!)2 !MP X0_:E?h
MN]LUWK\#[+]VM^L#\@;@ !U( V_@+]3N=CW\,[\<8 -A( _4[G;-!4Y" H #g
M<L -0/[%[P9J=[L6_&9 \,\!-%"[VS7?'P-R0/"?@=K=K@_(0Z #,5\.M(':f
MW:ZYP$E( '. +X0!,D &:G>[/B!S@"^T?#I0N]OU 8GY<J -M(&U/P9J=[M.e
M"6)@#J0!/5 &:G>[Y@(G(0'4 3<P!O@"&ZC=[?J U $X0 ;T?AFHW>WZ@+!_d
MV'_]Y4#M;M?LGPQH_MK=KKG 24@ [#_O/X3:W:[9?QMX YF_=K=K$,#^9[X<c
M> -LH':W:_9/^.N 0*C=L.0DG(3KJT>2BF5- $U_#J2!-U"[8<E). E/(*E8b
MUHM?NW-04N%89;*3"M(GD%0XUDE0^D/@#;2!-O &ZD(2< .POPZ0 ?0?]V_^a
M2<@;;:('T-,Z, ?D@&AV ["_#I"!,O "FO[-1P,@@.C# ?MO!UQ D5+Z+QKEz
MX_WXSX ?W!$H A;L#H"$, #_@S]=. .-+O&#@/S_\D&"[@<)3R"IQ',+AO)9y
M ML_ V_ !9R$)Y!4RDB;T $]8/B+ 34P^,.0^"D;16!F]H#_+P::_LWO6_6'x
M"02!(_ ]>L!!( (*XUJXA![C<4Z"TI\"98 .Q/^$0%E2 UL9]V% #K1\R,_Ww
M"8+NU_L@X Z A-C_!M9 U"?^NI\NG &V3Q?BO^U/ V< #= !$  'V$ 8& -Ev
MP 6<A+YT6(YVQ"+X""LA'"YW?A+ZTF$YVA$+#4A'A'VXW/E)Z$N'Y6B?TY>&u
ML,KD(TLJ9:3*G 2E?_YI/UT8]V% #K1\.B#T:W_?A_^Z'R2\ 3&@!@8_VY__t
M@W_JYP$04 ;PP-J'_%$_\,\!.N "E'Z!>'!'X'NL?1! !N ^WH\(= $$C($Ws
MX 90_AEP 6U@#43]N#_\S0 (N/X"X7>BASTB!3BFU=H\(& ,O($V( ;H@MY/r
M V_ #;B D\#XZSZ5J]WBIVP4@:\+ LA &6@#;V 'G(234+O%3]DH E]7.I;)q
M1Y94.-9)2  M(/;+ 3+P\LOD(TLJ'&O!O  ZT ;@P M@ RZ@_].@! #YISX=p
M" GTE ZT 3CP MB "^C_=&#!O  ZT ;@P N@ RZ@_].@!! &J+X<J -VH$SFo
M#S"P^.D /:4#;0 .O  ZX +Z/QT  R<A <B!-D!/Z4 ;@ -*R 7T?QJ4 ,8 n
M'/C_8J#IW_PP0$_KP!R0 R_ Z)^$!" 'VL!!, /^SP6$H9.@]_F"SJ_=L&3Zm
MZWV^H/-= ,%_ 75@#L@!T>P&8'\=( -EX 4T_9N/!D  T8<#]M\.N( B!1?*l
M0!F  [4;EDS_N% &X( +(/@OH [, 3D@FMT [*\#9* ,O("F?_/1  @@^G# k
M_ML!%U"DX,(;P ,VOW;#DNE_]?& TR?X+Z .S $Y()K= .RO V2@#+R IG_Sj
MT0 ((/IPP/[; 1=0I$Z"0 @#?8$,D(':#4NFOT ( WV!#) !%T#P7T =F -Ri
M0#2[ =A?!\A &7@!3?_FHP$00/3A@/VW RZ@2)T$@1 &Y  9T/RU&Y9,?X$0h
M!N0 &=#\+H#@OX Z, ?D@&AV ["_#I"!,O "FO[-1P,@@.C# ?MO!UQ D3H)g
M B$,R(&63P=J-RR9_@(A#,B!ED\'7 #!?P%U8 [( ='L!F!_'2 #9> %-/V;f
MCP9  -&' _;?#KB (G42!$(8L/]_H7;#DNDO$,* _?\++H#@OX Z, ?D@&AVe
M ["_#I"!,O "FO[-1P,@@.C# ?MO!UQ D3H) B$,R $XD ;&P!JHW;!D^@N$d
M," 'X$ :& -KP 40_!=0!^: '!#-;@#VUP$R4 9>0-._^6@ !!!].&#_[8 +c
M*%(G ?;+ <)_]>E [88ETQ_VRP'"?_7I@ L@^"^@#LP!.2":W0#LKP-DH R\b
M@*9_\]$ ""#Z<,#^VP$74*1. NR7 X2_#+P!-E"[8<GTA_UR@/"7@3? !EP a
MP7\!=6 .R '1[ 9@?QT@ V7@!33]FX\&0 #1AP/VWPZX@")U$LH]&6#_M1N6z
M3/]R3P;8OPL@^"^@#LP!.2":W0#LKP-DH R\@*9_\]$ ""#Z<,#^VP$74*1.y
M EUX_#-?#M1N6#+]Z<+CG_ERP 40_!=0!^: '!#-;@#VUP$R4 9>0-._^6@ x
M!!!].&#_[8 +*%(G(>?C?3*@^6LW+)G^.1_ODP'-[P((_@NH W- #HAF-P#[w
MZP 9* ,OH.G??#0  H@^'+#_=L %%*F3D//Q/EV8 [4;EDS_G(_WZ<+-)_@Ov
MH [, 3D@FMT [*\#9* ,O("F?_/1  @@^G# _ML!%U"D3D+L;_]N( RT@3)0u
MNV')](_][=\-A($V4 9< ,%_ 75@#L@!T>P&8'\=( -EX 4T_9N/!D  T8<#t
M]M\.N( B=1+:P!O(_+4;EDS_-O &,K\+(/@OH [, 3D@FMT [*\#9* ,O("Fs
M?_/1  @@^G# _ML!%U"D3D(;L -$?^K7;E@R_=N '2#Z4]\%$/P74 ?F@!P0r
MS6X ]M<!,E &7D#3O_EH  00?3A@_^V "RA2)P'OWP'V7[MAR?3'^W> _;L q
M@O\"ZL <D .BV0W _CI !LK "VCZ-Q\-@ "B#P?LOQUP 47J)+P!.$ 'TL ;p
M^ NU&Y9,_S< !^A &G@#?\$%$/P74 ?F@!P0S6X ]M<!,E &7D#3O_EH  00o
M?3A@_^V "RA2)^$-9'XYP ;"0!ZHW;!D^K^!S"\'V$ 8X/P$_P74@3D@!T2Sn
M&X#]=8 ,E($7T/1O/AH  40?#MA_.^ "BM1)@ -RP U _L7O!FHW+)G^<$ .m
MN '(O_C=@ L@^"^@#LP!.2":W0#LKP-DH R\@*9_\]$ ""#Z<,#^VP$74*1.l
M@N W X)_#J"!V@U+IK_@-P."?PZ@ 1= \%] '9@#<D TNP'87P?(0!EX 4W_k
MYJ,!$$#TX8#]MP,NH$B=A)DO!P3_&:C=L&3ZSWPY(/C/@ L@^"^@#LP!.2":j
MW0#LKP-DH R\@*9_\]$ ""#Z<,#^VP$74*1.PD.@ S%?#K2!V@U+IO]#H ,Qi
M7PZT 1= \%] '9@#<D TNP'87P?(0!EX 4W_YJ,!$$#TX8#]MP,NH$B=A#G h
M%\( &2 #M1N63/\YP!?" !D@ RZ X+^ .C 'Y(!H=@.POPZ0@3+P IK^S4<#g
M((#HPP'[;P=<0)$Z"7. +[1\.E"[8<GTGP-\H>73 1= \%] '9@#<D TNP'8f
M7P?(0!EX 4W_YJ,!$$#TX8#]MP,NH$B=A)0@!N9 &M #9:!VPY+IGQ+$P!Q(e
M WJ@#+@ @O\"ZL <D .BV0W _CI !LK "VCZ-Q\-@ "B#P?LOQUP 47J),1\d
M.= &VL#:'P.U&Y9,_Y@O!]I &UC[69_@OX Z, ?D@&AV ["_#I"!,O "FO[-c
M1P,@@.C# ?MO!UQ D3H)=< -C &^P 9J-RR9_G7 #8P!OL &7 #!?P%U8 [(b
M ='L!F!_'2 #9> %-/V;CP9  -&' _;?#KB (G42Z@ <( -ZOPS4;E@R_>L a
M'" #>K\,N ""_P+JP!R0 Z+9#<#^.D &RL +:/HW'PV  *(/!^R_'7 !1>HDz
ML'_8?_WE0.V&)=.?_</^ZR\'7 #!?P%U8 [( ='L!F!_'2 #9> %-/V;CP9 y
M -&' _;?#KB (G42V#\9T/RU&Y9,?_9/!C2_"R#X+Z .S $Y()K= .RO V2@x
M#+R IG_ST0 ((/IPP/[; 1=0I$X"^\_[#Z%VPY+IS_[S_D-P 03_!=2!.2 'w
M1+,;@/UU@ R4@1?0]&\^&@ !1!\.V'\[X **U$E@_VW@#63^V@U+IC_[;P-Ov
M(/.[ (+_ NK ') #HMD-P/XZ0 ;*P MH^C<?#8  H@\'[+\=< %%ZB2P_YDOu
M!]X &ZC=L&3ZL_^9+P?> !MP 03_!=2!.2 '1+,;@/UU@ R4@1?0]&\^&@ !t
M1!\.V'\[X **U$E@_X2_#@B$V@U+IC_[)_QU0""X (+_ NK ') #HMD-P/XZs
M0 ;*P MH^C<?#8  H@\'[+\=< %%ZB0T_3F0!MY [88ET[_ISX$T\ 9< ,%_r
M 75@#L@!T>P&8'\=( -EX 4T_9N/!D  T8<#]M\.N( B=1+(0!EH V^@=L.2q
MZ4\&RD ;> ,NP&2=!#)0!MK &]#^9* ,M($WX ),UL6OW9=*H!&$^ ,"R$ 9p
M: -OP 40_!; ]'V^S3\)%Y\,E($V0$+0O;HG" 8!(>A]OJ#S74"]AP@D(=]Co
M!(VP8/0^7]#Y+H#@BP22@/"54,I).2DGY:2<E)-R4D[*23DI)^6DG)23<E).n
MRDDY*2?EI)R4DW)23LI).2DGY:2<E)-R5 "ZMPB\>@CL_KXP!F(^U=?[?$'Gm
MUX&]+P?Z/QV@"X?_#9B!^*\_AD#39_MP( R,@340!EK^Q5<!Z-XBJ(#/?_%5l
M +JW""DGY:2<E)-R4D[*23DI)^6DG)23<E).RDDY*2?EI)R4DW)23LI).2DGk
MY:2<E)-R4D[*23GHWB+PZK2_]D% YA\,:> -U(4W8 9 0--G^VL?!(@![ \1j
MAG]=< --?PXTNC   IH^V\_\@R$-O $WD !4 +JW"+RZ\,\%-\#X-S\(N /Vi
MGP[$_+H@!O* _@@#F;_N#P'!0 ?6/N*G RIXZN/]QA^HW #F?_ESX/%S_@2@h
M M"]1>#5)W?W9W[:3P9DOM^? RG!#="!-,#X08! \ LMG^T3_N,/$AZ_[:\#g
M=>$-U 6/0[\*^@F8 RP@ :@ =&\1>'7BC_^"7^K#_S'P!OY"&B #+[_MYX'(f
M;P:BON '"<$?)#Q^$  '_'[.)_ADX VX?;K@^54 NK<(*N#B"P$U,/7K A,(e
M X-A#KR!NL 9*-W0MP-A  ^$ )<?!D( 79#Z=B ,X($0L!)20 )0 >C>(J2<d
ME)-R4D[*23DI)^6DG)23<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*c
M23DI)^6@>XO J_D2YJ3^UA_[EP'M__&YO_>O 0E !:![BY!R4D[*23DI)^6Db
MG)23<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*23DI)^6DG)2#[BT"a
MKVX";P#PHWR(L/)M?QVH"W7 W+_\^(^"9T4<&_YP(._3 ;K@_N= 'I@#,;\-z
M@  QD >.S1NH"T/@#< !D* "T+U%X-7G?_4+!+_0\ME^&(#_C'\.$ 3!SQ*Py
M/T0  72!\,=_$  '_'[.)_ADX VX?;J@];>^"D#W%H%7?_X$$-:PU^<[("H x
MW5N$E)-R4D[*23DI)^6DG)23<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-Rw
M4D[*23DI)^6D''2/!2H^78#]=8 ,@ 0>T/1O/AKP 16?+L#^.D &0((((/IPv
MP/[; 1> !D3 23@)2BCEI)R4DW)23LI).2DGY:2<E)-R4D[*23DI)^6DG)23u
M<E).RDDY*2?EI)R4DW)23LI).2H W5L$7GT%]#Y?> ATX";P_3( ^>,_XJ<#t
M?$'GUX&8S_:Q/]^' P$A#:!\B  "Z ((8/]D8/U+!/9_ CR_"D#W%B'EI)R4s
MDW)23LI).2DGY:2<E)-R4D[*23DI)^6DG)23<E).RDDY*2?EI)R4DW)23LI)r
M.2D'W6.!DV 'WD :B AW0._SA8= !U  ^V<!>I\OS($4(.[_Q*SH*%<@ :@ q
M]K\#Q#T(H MT ./K?;XP!W: N <!>T#<@P#V3T"_@-[G"VR_!R!^.L 7V'Z"p
MR9];F#5&%G$/ OH />75=T#O\X6'0 =VXTDX"4HHY:2<E)-R4D[*23DI)^6Do
MG)23<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*23DJ -U;!%Y]!?0^n
M7W@#;N F\/TR /GC/]^' P$A#:!\B(#XZ0!?T/EU(.:C@#E@9>@""&#_9&#]m
M2P3V?P(\OPI ]Q8AY:2<E)-R4D[*23DI)^6DG)23<E).RDDY*2?EI)R4DW)2l
M3LI).2DGY:2<E)-R4D[*23DI!]UC@9-@!]Y &B #"> .Z'V^\ ;<  I@_RQ k
M[_.%.9 "Q/V?F!4=Y0HD !7 _G> N <!=($.8'R]SQ?FP X0]R!@#XA[$)  j
MV#\!_0)ZGR^P?3[0 UZ$WN<+;#_!Y,\MS!IUV@X0]R"@#]!37GT']#Y?> -Ui
M006@>RQP$I10RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*23DI)^6DG)23h
M<E).RDDY*2?EI)R4DW)4 +JW"+SZ"NA]OO &S( 9N D@ /9?_\$0__D^' @(g
M:0#E0P3$3P?X@LZO S$?!<P!*T,70 #[)P/K/P&H '1O$7CU"6#_)\#S?WX5f
M@.XM0LI).2DGY:2<E)-R4D[*23DI)^6DG)23<E).RDDY*2?EI)R4DW)23LI)e
M.2DGY:2<E)-R4@ZZQP(GP0Z\@31 !A+ '=#[?.$-F $S@ +8/PO0^WQA#J0 d
M<?\G9D5'N0()0 6P_QT@[D$ 7: #&%_O\X4YL /$/0C8 ^(>!+!_ OH%]#Y?c
M8/M>& 7X ;W/%]A^@LF?6Y@UZK0=(.Y!0!^@I[SZ#NA]OO &S( 9V(TGX20Hb
MH923<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*23DI)^6DG)23<E).a
MRDDY*2?EJ !T;Q%X]168 RG!W/=_.G 3^'Y*D .0G^^G!'/?_^E VW\#9  Dz
MT 40P/[)P/J7".S_!'C^!* "T+U%2#DI)^6DG)23<E).RDDY*2?EI)R4DW)2y
M3LI).2DGY:2<E)-R4D[*23DI)^6DG)23<E).RD'W6. DV($WD ;(0 *X W,@x
M)9C[_D\'4 #[3P'B_D_,BHYR!1* "F#_.T#<@X ](.Y! /LGH%] [_,%ML\'w
M>@#$B;+BQT,=E@,A[D% 'Z"GO/H.S(&48.[[/QW8C2?A)"BAE)-R4D[*23DIv
M)^6DG)23<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*23DI)^6H '1Ou
M$7CU%9@#*<'<EWLR<!-  .R__H,!\3=^O@\' D(:8/R(GP[P!9U?!V(^VZ<+t
M((#]DX'U+Q'8_PGP_"H W5N$E)-R4D[*23DI)^6DG)23<E).RDDY*2?EI)R4s
MDW)23LI).2DGY:2<E)-R4D[*23DI)^6D''2/!4Z"'7@#:8 ,)( [, =2@KDOr
M]V0 !;#_%"#N_\2LZ"A7( &H /:_ \0]"-@#XAX$L'\"^@7T/E]@^U[8#T#9q
ML2!#.XJ&W0'B'@3T 7K*J^_ '$@)YK[<1P05@.ZQP$E00BDGY:2<E)-R4D[*p
M23DI)^6DG)23<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*40'HWB+Po
MZCLP!MY [!\,-X'OEP$Z$/^C_M0_ W*@_YM[Q&_N08 8" -C8 V< 3G0_\T]n
M"&#_9&#]@X Q\ 9B_V#@^BH W5N$E)-R4D[*23DI)^6DG)23<E).RDDY*2?Em
MI)R4DW)23LI).2DGY:2<E)-R4D[*23DI)^6D''2/!>S &T@#$0$$W(&',._?l
M0.P?#"B _3>ZF2_XRWT*$/=_8E9TE"N0 %0 ^]\!XAX$T 4ZD/$3P,P7_.5^k
M!XA[$+ 'Q#T(8/\$] N,@3<0^P=#"7L1*&#F"_YRGY=L!QXP ZIG-G"$C@ 4j
MK P?>!$S7_"7^[QD._" &5 ]Z0($B'L0P/X)Z!?0^WR![?.!'F [\,"7>(<Gi
M00D=D"_0].? 0YCW;R#VRP$4P/X)Z!<8 V\@]@^&=+$;Q3T(Z ,GX20HH923h
M<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*23DI)^6DG)23<E).RDDYg
M*2?EJ !T;Q%X=1"@ WSA(="!F\#WRP#DC_^(GP[P!9U?!V(^V\?^?!\.!(0Tf
M@/(A @B@"WR?#I"!F2\'/+\*0/<6(>6DG)23<E).RDDY*2?EI)R4DW)23LI)e
M.2DGY:2<E)-R4D[*23DI)^6DG)23<E).RDDY*0?=8X&38 ?>0!H@ PE [_.%d
MAT '4(#>YPMS( 6(>Q! %^@ XJ<#?&$.[ !Q#P+V@+CG^W2 #,Q\.4! OX#>c
MYPMLOP<@?CK %]A^@LF?6Y@U1A9Q#P+Z #WEU7J?+SP$.K ;3\))4$(I)^6Db
MG)23<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*23DI)^6DG)23<E).a
MRE$!Z-XB\.H@0 ?XPAMP S>![Y<!R!__^3X<" AI .5#!,1/!_B"SJ\#,1\%z
MS $K0Q?X/AT@ S-?#GC^!* "T+U%2#DI)^6DG)23<E).RDDY*2?EI)R4DW)2y
M3LI).2DGY:2<E)-R4D[*23DI)^6DG)23<E).RD'W6. DV($WD ;(0 +0^WSAx
M#;@!%*#W^<(<2 'B'@30!3J \?4^7Y@#.T#<@X ](.[Y/AT@ S-?#A#0+Z#Ww
M^0+;YP,]X$7H?;[ ]A-,_MS"K%&G[0!Q#P+Z #WEU7J?+[R!NJ "T#T6. E*v
M*.6DG)23<E).RDDY*2?EI)R4DW)23LI).2DGY:2<E)-R4D[*23DI!R  G)23u
M<E).RDDY*@(*'$CPA0(L+U2 "$*'CIPW9LR@2 %B#)LR8>3, 4$'31D0<^"4t
M&9/&3)HR9$"$:2@GC9@Z=,J@F$,QC1N0=,C,&2/'10(5!A$2'$JTJ-&C2(L&s
M/6CG31HR"58ZA"A1JL84!T& L$DG00*5+.?LR IB#]DY.7?*:>'CB]6-)GJ r
M0.'G+0@3"ZE(^=)DRI(48[%H[0,B(=BI$4$ /7@P8=+'D",;#6IX"ITP;LB\q
M@3D19T8Z&]%BU@P31)LW9#[:Q*F3IT^OBX5*GDT[Z5(L39\F$)UY,YV)9,T*p
M9JV6K=NP(.0&^3*%2A G1)Y4H1)X<&&%O$G347S;<>WOX -25FAY=)G,G2UBo
MU*B2#1N0(DF&>6_5)<PR&U>C;=T3]OCP -)V6VY097<>&< -)YQ6^Q77EEUQn
M@>#'<LT]%]UTU8% F&$&9L8=8[(%*.)CXX%4!AUCO,'&&QIU-L>)''D$@ADLm
MGO%0'1Z.!H(888RQAHV;>7B'39K=49&*+&ZD56R&:>7DDR! 1!Q/C8UH)5)!l
M$<C@B2FNV"*-<I3!PHX]KH'5<%PYF0"88I+I8X8+:G7'BR@BV6*#/(W)YI@\k
M^@@867TH8-!(:+P! AX@M+!C&67 X<(8"KR8T@DO>('0'"]D>@((/BS:Z*,@j
M\, #")2>4.65J XUGE>LLLJD0D(P"D=G.IK!1AASH-'9C738A%^49L3X$11#i
MC%&'1K_"46889Y3A7Y6MMOIJJM2*5R4(5*"1QD9VE*%1&F_<)*6QR.:W$8^2h
M1GF3&^2^.,>8851TK+L@=/MMN#^5R&(:9]@T'QMY@'!'2PV=MV/ 4(31[7M#g
M'-OK1BN!, 2+;I3A'@A5N)&&O7.D04<>/KT*0A(@H*'P1VV$D1I(=8C!6Z_Sf
M562R&\UN1(>A*:^AVG9RX*CNR$(T 0*Q)[R;[[4Z=N1M&6P>Z4;'J<EA6AXOe
MLA&L&6%^=+-I8>B\U79PM,Q&&F. H%G*-H6\:@)"J$$Q"$QD-,<<X<[EPMUMd
MC&%'&'B$<!Y&(=A$X]Y]B\%&"D>'6"VJ)<;@ @PZ)""%Q1B]&'FK.-P 0PTQc
MU)"X=XM?66(3J)5T4DI;]WP3CE$+"T(323B1A&!OB"3'2C:= 1+5,;5Q, A$b
MU#VQ2!\*A:U'+\J,6<TJA=D>W2"$>1&N*&WEQM9*@Q"VX62;_0;:;K@ 9?&&a
M1>M5#C# @+X-2_X7NN@@CF"3176LS$.[^+F A@\'R<\N&_7[B C:!8>6V$%_z
M(@ 1Z-XGHA+%JE$N"I).7!<3.;3!7^\1@\78\)IG*8Z! 1J04Z"B00B>22MQy
M^@+^0@*3,:#@!%Q(WPU.P (8_&DX&U)(">%0O%.!L('7,L*M<M496^$*>13Tx
MU@7=$#.U,"I\TG+?#P$D0MT8D8@G+ M9TI2&P"2$+"J<%W[4HB(VH  &-60!w
M$V)7A"FT( 8L&,(3F.!&.*(1!GC0W VU J:YI*$',-A!&G@0@_2E;P=9U$H:v
M5K""#(6Q7&1TSQG3N$8GM/&-<9QC'=.(1QMF:&!,"Q,1V\43P!3/.H:Y(AH^u
M-*@Q%.I0B=K1&_"0/TBEBU*6>@&F-,4I6=)R#J 2%:E>8*H/3O$[#ISEKGSCt
MJXU(*7O$6J'VEM4L5ZW-?-,Z9GA*E*UMU<M;':O;N,1H+C*EJV[L(B>\Y%6Ns
M;][+#9]3R+[ZQ43W!&Q@'HO)3<2 L),QS&'>C-C$Y%"QBV5L8^#T&,CB.;*2r
MG8QK*YM#RUZ6AIBY<GF_VEK.=A8]G]4M"4$;VA"*Q@*&)LTC86I:BI[V%&]-q
MK6I7RQI'<-8UCFYO;&4[6QC2%D^OM.UM<=,(W6Z"@KNY(&^$\UO%PA X-PR.p
M;R$P'.*RJ4UD7LMQD),<Y:AW.59E;G.=BV=5P3.ZTIFD>JGS&>M<FCW8R8YVo
MML,=S7:'EC+XCI_ $U[M/B*R;.'G(Q>EV:\R\I'Y0$]ZE:L>5PR5O9MV3Z=In
M&Y_(S)< ]*D/!NPCWUC)&K_Y =!^*]0?_[#@/_JM;(#S*N#&$*C S5K5>'<0m
M@S*'Y 86Y&&)+, #;F_+M]RF# \LL ,+T$ 1,MQN3BKQI?4$1J0WW(&A)Z Ml
M#4%P'HN\H6-SS1YAXZ5;F[1 MWQ3B8=NZUWPXD%\23 #0\TK7C*\@$4@X"VBk
MO(E&U]&V2%Q#U-X J)J-U$%2XCN!'38U&NBB@<#.RYZ]>C6&F.FH4"W10[@Nj
M\YZ+WFX,%;29H?Y;!O2J5V0")K"'3G#@Y@UK"""P41C@0+:-C*UB[Q*8;!$Ui
MI(MMU'4I(B@X&;J:>!7P1!\36!@6&BVJNC8RM^%* F([6YO8%K?=K:U\?=M;h
MX1*7+%>(772N\!/:9DC)7R&O&[Y\/:\<:HED[DJ8?YMF,YLW0Q8VLQW@;#(Yg
MF!D-<#K+91ALO:[4:PS#!70=V"!H.0#:/8<V] X28)@<5TQJ%MY(;!19YJ]Tf
M$42*#!8*Y)L<N=B0+%KAM%QH:YS?YN'+FF9O#SR=R#.'=]3>;<MO\1"8+6I:e
MS)R"M1M*S;> \8$/\?UM+TDMZUZ#X->@=E*4<\W<71<;#XCZM:L1U2EB?V'6d
MQ^9#LD.]1&9S6MK+]H%<S+OM5D?O1,=R PJ*( 4IW) L=BB;7.9,%C3(NV09c
MBO==/(V'B"R:589I%L^> BR0\&O79<"#/E.3DC1-NF1EBQ >_4V60=_[6/=&b
M=') P 9#;SS>_S9,:LP0AD%O9PYA:$-AN>4M!L<L-K:>B[Y7#0(\\@AQ7C',a
M@LD6,](8[B,\8L_#49CLDLS%WIVN.1[&0 :<,UHA$$Z#A*\7LYN]X0>GA%*<z
MGF3QC>-Q##GX]]-!P&'OB0WH&3F2CH4>E/%AW.MX$(,8,O0DC?-[##B@NY,Zy
M?F^;CT'OJ%2(T8=.73:\:-M:' [7"0UW,MA [(8I.X1;P'(YT*$%*7$T.+/.x
M=8_S6PPW #S'&<]O,LQ ]'R'NQC((/H<%CYYA'?]X&^3:9G+^_,S<+K.6\[Sw
M]V#W#!<A$]N3O?6M:!KI-/]ZTP$.]7U-G<)F_[GP)=UVK2.^ZZ6O@>C?_OF\v
M(][N2B<##5#O>:5KL/77,3[G7^\LYI,]>9.O_.7/);?U$UWQ3L)^^,.P_?+;u
MW RH1WI*-P:!]'W^AP=D$':(YWH6 WO5%WCJ]W!DT4<HD 8;%V4K$ ."%"KCt
M]EMO)$B,U&K%9VTO5@9;(&9=L 5IT 4;AW3 9FUOH7<DZ"LG^%LIN((M6#8Os
M&&O'X1!BD6R!,AP4:(%R(689N($\4(0>J(&+M (BF&PS6#$JF()1QH+SIH/-r
M9APQ"(4\6()3N 7F985_=FQ9^"!AH7=!*"==2(,H"(9+)(9=MX/.UH,:\4EKq
M*(5M&(8;]W9RJ(5G2!91:(+R185ON'$:UX=FZ(-V.(=>.(ANR#=BF'J(2(<_p
MB 43"%\5V -BM@-;P8'!%EZ<V(1/B']&AP+6MD2N1#-3F'1?X 1/\ 5#@ 3/o
M<01%8&Z)-SZG.#]HH(HXV($V(7JGR#>I> :KV(%\@WZ&,7O)UH!E@'C%IX9Sn
MB(J[2(R]:!HV88H\*(V\V 5C$F5[!"7!N'336(SYA8W1*(SCN(+=^%O?^"0,m
M:'A\]8 :DGY]]'!A0@?IA@)/\!<9XGHSUD/&=&2V<2TS9H[!-5S%=5P0HUP9l
M(4'-AE_WY5RD(ET!-F#M96 (IC4RLG,-1A\>$G7/9U%UUB,9-E/OUV%B)9!(k
M!B($D@ %25O!!6CVED59!AU/P&4JX&5D$6=? 7([66=W]G?! 8@OZ61WQ$DQj
M&6C?Z(^SQ$H*0"B&@BB*8F$J0P:/$BG5@TN7DBG$U$M4209663;"5"H^I)(Di
M<BU! ):NM$PPT4P%!TW%0D[3Y"/,TGX]15E&9I9'P4W:4GGA)"[!(DW>A"[5h
M@TXKM$[2Q#'@ D\B,T\8!# "0S#Z]#L)LS 2 U 0LQT#55#O<5"*^3%J<RTDg
M8S+= E$?(5$N<QG74U$5-C/,HU$U]34=)2XW 5)"0S1&(S(GM30J%2Y0XU)Mf
M0#46$U.,8I(WYC':(S:/]3T[!46OXE-N0U!P(S=#93=XHS=0]3=,)3AOD%12e
ME9)ZB257]3B1,SG38SG1\E6<XSEY&9Y$459D8#IH92BJ0W:9P58RXE:S$R5Qd
MU2MS-0>\8U>_$SPW,3SQ>"U^E3R!Q3R$]3STN57ILEBNXU@YQ9R1!26393Z6c
MM3[M4Y;NJ12=]3\!%"JAM3_]XUDCBEH:H5H'A 8)9(D!^:$#42).4 9W4(*=b
MH1F_4H(J009[PRZ%Y2'WF&XV(R,58R3M E\E&)K&DU[4)0</(0=C,J32^48=a
M9$T>*J,% 2*BP6"[ 6%=<:0X"I,<9Q,TJ64WV66_>!9@"@)?\6)YAB::QD@Oz
M-FP\&"9G(%L-\3VC6'?>U0)Z5XK6%DF'@WB$:H[MR'Z(1Z7J]D:)*GO!8H_Hy
M1E H\&)+F7YBZBL N4!:.J/7<@55N98U\30MMQ%4B6$N=0)C0&#;D3WD$B;7x
MPTYT(S5P<%UIT (,U2MULQH1:23191/3E30U!3%N$# DN9@0LQ'QB6$K43W\w
ME*LR<JH5=*4>Q*F=:BTPFB9W$*JZ0J9CD$5XNBT5! (UN65J.F8_F1&L4A%Qv
MRB!@F@"(HFO&02ZTQJ8LTA4!(Z]M02ZG9J^6EP!'6J]H4F:NM'%".;#;X::@u
ML7'6=ADN(W5E4&O#4; 2UV\ Z'YKD 87@QD!\WLMD' +EW6E&##5EHW&EFU:t
M06UE>&U\@R@H&U^A4G-:(6VP-"J?AG^,NF[M]HUS,"0HLDHHX$I]ZB0-ECPPs
M1 <G$#D4&+ ;AP(H@ <O !H4L0(@$ ,4H1"@P8F(,BH!J[4A>!!FEGAA*ZC<r
M:I"D0BH407/LYFY@^Q5.DK-K>T-CJVG61J])9T,Y)WC!XK F63$*5Z854SQAq
MJQ4YNX^ X7X)AYS9LR*U([ANZWKU&!1>4;C\F&Q%^Q$PY 9)FP"E^$ASL#<]p
M47(WPQ-W@1<A@ *>"[HN<%PI0!')&"Q6DRB=PA.Q&QMA&Z\U%QA>48J;MG&9o
M6C%FFP>M&[,W&[9PN[.ZZY)ATC5Z=[FDP@5RL+FX6X!8X!5BL+QKT+S4\[QBn
ML+FEV +?1;RZIQ!N8"A]L@918B\<QS3;D3)R0$^.F[)>E[S7BQ'9:[G;BT<Wm
M8 :10[9JV:U.=@)>< )I*Q=QV[:$.ZGJ%K?)F[/;^K\&>0(_0,").G(EQP9Tl
MT+^:5K"CLBD$['XS0P;!MU)3T9KU9[MN*QQS.Q</3 9K"9,"3,!)=\#5Z[8)k
MC(^4RL (?&XXK&XM_,).5C94>P) 0,')"X'*6,,%RP=R88Y^Z(-WD1=[T1>5j
M6\.">H>"2(4L& )R(;1C%RZ0:71DL!+QLJ '6L/WM\).+&NZJ(IY8(5RT8JOi
M&(NS6(L[#(VEUL;$^,8,:[+BZ,9B*+!ARXQWK'Y/&[.YR"[C^,9G,KA.DLC#h
M>(*!?,1.0LAH#"6EJ++A&,F,W+9+YL></,D[#*F.&XB2#(:,)(:NE+R9;*?Gg
M"&TX9Q@#LV+-XY Q@1;Q*[9N.[V4S+OY"@*_*Q-D*KP48;.-;,,\G(\Z?,FDf
MC,+UR[Q F'X]ZS$%^W!U>RRX*[!XO*_'\LO].AR4>ZFRS*V;>JWOB980/*HOe
M8GFF.I*H*C6JRJHX=BRPNAU)2JNVBJLBHZLWH1]ID2?MQ1'#*E[&BF'(JA+*d
M2C9[YJP!HS0,):W>0JW5:LZJ B)I4K;?FJYVQJY#"<X*S,)EBR=2^JWBK!#Dc
M#',QVJFCLS?I;!K=F5&&4JL=P\_+)=)CHC3]3*KLK#P7IL\E,J[Q#!8Q$C&Ub
MRA7PXB&7H3/$6M#\G*QFH]#-FA+/NL_1ZL[3BDU21-$HG29MP-(NK"MYD%LLa
MD-$(^Q7:W&=A1F?JRM$*$G.F>!K=,A/_+*5AC0<%# (T_"3'ZVX9PJ@@#<$Vz
M3=+]F'Y=?=+=H=6>:CQ-8 <_K"L4 =<PK3VV2M.\VER^*ETW[1$YO<Z@\=!6y
MG:JK*M0=0=1.$:NKD3V]>M2H,] <:U(&[9L(_=3,&A-2W=!5G1$D&=%8FM):x
MFF2QVM6-;9!U/=9G:I-7H!@Z6=8IVV:AIM8;S=;W5WMO_=+"G5MWG==OJ\ Zw
MR]=DX=>F6+8P*=B 0MB,;=B"\I2N%)6Q9&&IP4&VE)65LI6\-+MUUM[!U,'$v
ME*7F7")7T-ZB&CW,%+C/)"/1))?*0I?5--&4!9Y:S9?>I)CB%)AR.9C4DQ*&u
MJ4[)E9@)A2^-V1+T]"_W))D&@U>5:3&7:7D!I9D4LT$8HS&?N5 B,YH/E3(1t
M-5&J"3,F+%@:QC5>@YSU^5$AA9LEI9M(C5),PR* Y9LM)37!"5,S(E.PV>-@s
MHYP5"CY,FA#0"53463=%=9U)I9U-]52%<S@,3M&-0YY:=9YET%5>H9YAU9[7r
M"I_RB3KTJ5;W*35M%3O[N5>WXY^Z Z!U=5<!0Z 2LU>:=3Q_I3PZ;F(.>FYJq
MWG#7PU@R0J'>8^6252*4M:&8U:&\+:.W45J?]1'W0TZB=:(B>EH$9$"L!:/6p
M&N>?ZM^.;3:4<\LX]ME2$S&H;=FRRB*J+2R>C=OOO./9X^%HL!U2@IP-FBLEo
M0=OK:P9T,"8VP=FYHQ(,%1(]4EBM*B-#!#:3O9AOJ>V^TD%PKM(6769W .N(n
MBF5HBI/)'=UH_1.] P<:N$65I@+Q+@-M]A,'DB&Y<J]AUL=SR*_\_JZPI*^/m
M=-;]_J_YA;OA*+!D<2 ;9P*F_,9;,&M=D"'Q'@,1/_%:C/%V!0<RL'$9#P)4l
M.^_#<0?:$GPH,/*C<B"M9N\?'P.,M'$PWP8@ST@94O/ROG$>3(9K3(E1' 1Zk
MP1=^\8V;O,AB.&NHQL+9J,>2S(JN"(NRZ 2TB+*0C/2]9-=<&(U.S\?CUM?:j
M;;B#+<NP7LZ(C:V&0006\]_M?2(9==L7-JZX+B,BO>M2&M .+3(0S1[8(R/$i
M;NS!@NS.H^S.7CT7X>S0KM-^3NTB8^UC@.VNL^V2/=/>/N ?L:2[W>KDGJVQh
MBNY9%"<.C.XBW;ICKQ!EC]*:W]O7LMB>[]+=4J2G.==V;Y+Q<J23[S&+F=GGg
MP5!M3^NN:NNB3?>R?\^]_OO [M/74I)]_Q%_7W""?YK:4O@I<?C/;CW2/E?Qf
MXOC.HIO9?OFXPNV4'^&1'^Y1I-^NSOGM:P?H7M=9E";?3&G;<=9Q(JB0+=?\e
M85O6/<,[FVQ[_8VAO_:Z8O25--.@_@"@V3M[*^W< <#. -E@W^R3$KUJ(@$Kd
MV@?,;-3M0W[&@Y_IOIO0^]X>8 %^<R_V\0>[I]J@U0<$=LI/TC$_?E'LG-]Vc
M2';1C]E1O\2WSC"@85A\V>_ 0;[%]?UN'TVS?( +)96Y_5;NTI\")#0 3,I8b
M-W5GW)#;FD)8\27-'(IV9<CN0/V#2>Q/_[$MG*7=EMD-RT='$(BY =(WW@P#a
M<#M]!J&5O!*IQ-,$SE6Z)?%-EW"E34'?,H(;%$OXK9BD/D]W+8X EXAUO,(Mz
M <$"UTX.W!JH2YE/!2RX<:?ZC$<W\4N53\*U$PIW3M;%8<IP<@G",29]X>$>y
M4XC+)R.NGUBFAH'B,E.ATS$&Q<4E%-#$4&1<::)QI\G&808<I^A>$TV1<K/Ix
M9]@FD4)23$J1XTU(SFG\)B8GG&(7UBA.4<ZF4+E*UYRNG")D&]'I)@25N<'Ew
MC I2R4Y+)<QU)ZCRG1@A'S0>6*4\0:@UEYXTQWH:@N?/,)".^'16Z%PN7"MXv
M+C_I.;CB+>3*GPM0@BZO%"A#UU>0QPE<= W*L#RH1]=G5&!RXAY5KAE>NFN1u
MZ=('A](L9P^E@;H1->K*1:DC+2@*U:465>>BN-2>(1N<J\P<%X$CJD*.0A Xt
MT2,,(*DZ4R\J"@@0 DG@"4R!XM&E0**2 70DT;&9Q!0#(RQ,2\Q^^) F?L0Qs
M$!*[PGYY"A9F(NQ$G9$'E$5*P .W(B8$-)_H2D8"^D)I-9$H*IF7$!&\Q1;Xr
M K%#"%0!(S %DH 6N'AC9^_MB#K0%:5&;,B*13$!L)C[Q,OR5G(J&%*#2"0<q
MH8@[M&*9H2>I 7=I(+LH<,:57D04;W$H)H!R=9.0&^3!6@^*#-2!Q^<9?,3[p
MJ4M\T4LI&1P!&.>77;P#G/$/=H:PD2NL1V#,C#:QS'!&5[(%G$ 5H'I%@ K$o
M(K1H&#+"[0@84H(SOH&"<1,B33D3:-*GCS#%([$R' )FF -1,1+."!SQVFX"n
M4\P/SK$,-$65X=)61C],=/NE#@P6Y]%'T$)+P#! 0V@P1=F2$3+/]U 6O>+Gm
M.!,W )DD8DFX3\%"/\$HN*ADU@ <<%A;P IU-*V 1V: && !2Z (9($O8 10l
M@-4:$TIG!@": #D@"Z0,2 $(LC^2 0 I( DD"L@]$1(/S  QP2 M) V D&2Ak
M/YH!"MD@44 -@)#\$0_0 #32(0ND#4"12H<&P)$6B0)N (S$(S1 !I!("XD#j
M0.1PP)$S8$<6R!QP(U4D#1"2!M*&C D<>0-V)!)X DV@"&1(&H #=F05@ (Li
M($2JR!RP(Z$ % @"M&A)JLC_V"&90!$P E1@2D[(#BD%DL 10 )I,D:.R#+)h
M!++DC\0#-8!%5L@MXP0R).?8D4[@2X9)I5,#=&2'3 )# $&FR!H0)#LD$4B4g
M6K(&'$D:&0,.)*&L 4@R!CQ(,5D#;$"FQ)"$LDE2R@]I)Q=EE:24)Y)3<DE*f
M^2(Y91C(E#:24Y+)"ED@8T"/+)6$<D'22@-))#GEFMR5,D!)$DH."2PM)1ZIe
M 7,26&Y*+6D#]&2)E &@$H_8@!D)+$FETK$!AA)8ILIKV2B!9:MDEI,26,;*d
M:XDI::0,N)77TE.:RUYY+47EKIP!2E)+WH!N.2#-))K,D#<@7 [(-ODFXZ32c
MN0'ELD(R@3KI)/27NJR0@1),2DEYZ2X'Y).,DAD2!^C++^ E%6:&+"3U97PDb
MBA@ * +#"#@0):&U1$3^EA,1%4]<6&4,^&&-[Y%$+ @&27S C$6D##8PY$K$a
M&'AFZ N^')?JV"9J!S\#<=0EO4V[K1$!):#F<H8CLP@*C)))6XJ;N<I)3]#=z
MI0FF* 5OIAR06-*-,Q()IV,7C8YNY(T\C;K@ 7%%??B?=EN-:& +@"^MF1FZy
MP.&RBV$"L@4TOX:<4)IT0P$A('5EA-6E$BF""< +>%-O]@2K:;]:U]@Q.N7+x
M@KP<>52* .->'!5S,3".KX VQB[#<N&*9L"E$)XO2*DPIU=TG'@@E;V;DP?Pw
MQ(Y=S(HS KZ$!$:1$O"":+",#R=R[D5/8SK'SH]1%@G&?+'%S"DU*F>\>#B@v
M<WX!HI0G$ZQ6M# ,C(N']!&.M1;;XK0C/,6G<[4+U<6Z6D7 @1'Q8F>JQ<T)u
M H:C7!B)HC%1,:/C>1*Q)UWI'3PMM[E%>>3NGH35W#B>"S^<@9NI%-T/2O0"t
M0D *%($@L 0\ SXJF_A'*\3/N4$_]4(5J$6F\W7M".R5S*13 >%S]J=[2L>-s
M@Q/#I^@9H#M!# 2MZ_4VX29^N!G. U?(IFT%0,='&G(2@LHXE*_V-F1*UUSPr
MGG+!4<4RO14S6:BQ\A#E*VQRSYSEJ *5ID$!,/1Y12^_B1<$IPL076^ =/U-q
M$) WI^?>9%WIQS@^C:@(6-8GXO&>STMS^="Y8$2AD@L%HA/49N$!C&DXTZ)'p
ML(Q&QXMRSV<D9"#8'6 !3#%1R8F4(DJZE1S5$$5'TQC1G2EMC"CA[!J(0X'Fo
M4,_9$N;*#M5N<72+H@#9N;5  %AT F*1+)K%%O @W0_B-!0O30[8"N<R)K@Gn
M(=T"C#25;1RJZ7["QG;PG9=S=VI.QOE#@VCFDF'2!HSF*[D 0X;H#%4_=^ Cm
MG('=F%QXU"'M82C@DX).T8F&T@_*TUAG# +=@9QX !%;B1 B_T5;N(%901$Rl
MEGM8:MH#9,X5FV!*TV>P>PW>\$-5D91@*Z(I-TT0[NZ87@34M4*8(FCX#65Tk
M['R\(#,>WT!Y;)Z\<_T,4*:H%,G"&A #Y12+/$;J8O."#*#K'44#GVX>"30<j
M@J=<&(SNATZ81K(1V:QI!E&E5G0X,%+A.1S89DJ@G=93(:B'M(,VF\=MS#J0i
M"X HNVG:3!O<IPJ-/VLT1M-?<;Z^1D*U@W5 Y<2JNI$]N&EI\(X8H0UX&(:Rh
MCZ:4 ML(<"1** TY,"22!Z/:"##@2H53]^3;N@)H%"PQ56C1N^V0 %;9?C1Dg
M'I79N$;8*!N1P"TEC6B@IKY.]&4&!LU[(#PYRY-4')K!&CVJ*.UB>*:[:3>Kf
M5?H$!DS];Z@O(HJ,Q58R*8))T CMZZ4YP+IWSRB@[5L1#48#FD .^ 8&R](,e
MGS]#I$G5K&;FBF "Z&HED_UMU2@X6N4?(*I_-HW]?9*2.?KZ*FC]@RVULRHVd
MQE989T0:0*RNSP,^P& 1 7^5YG*L-HJA0%;<$2XVH/>PK,L4LZX&WWH"Q!UGc
M)8+HCP FUYB*!9?@<&",QPUJHBLH^/[ZS!3\JE:0NE57N[9:16/3=*VT%;8&b
MUJ1I/,!G3*4( F<AJ46?52A* _/D"M[BQWS$NK$23,K&$E)']6MX& DZ'5/"a
M:5@9 <6@E:8^DCU20\<X S:0?$6UA\1)ER.[H&G#48HB1^)Z$VI,!OD(M@-,z
MJ!RK1%27:E-M$VWUPGJ[Y\CH#@Z2LTI.:H5:C!9Z8/N+:^L5I>FTR8C4)BQNy
M@GO];T]U8ZJ?''I1(FQ*?&=; 6+L#8T5!GZ.1)NJX>DVH,XT\6,=VU=-$P?+x
MK=T!%8H:9FS 6*)-E)RX4[0P$5H-#^6KPQ.9&DB*X*9"*L=Y XUK:Z#$HYAYw
M6"+TS*-S(6A]G/F %.L,.Q6STK',4@1Q4W,:V?C(6=^JF,HRXHE2TT^5C:W0v
MM3)0C=H:7S,<\*.O,5-QO@<O, 7&A!>( IX6"@0T+S $>,SUR*_WB,/.S0#Ku
M,08L4W2*/#/)J@0%^Q' A F4=0^6B3 ['IMBFR.!Y0BW8XJJ6@^[*++I6F Ht
M(A8EB(\G8&*W!8IECAA6.D(,Y^%BPX15&AG!0L;>BCS 4&JLK#U6.?8FY+K>s
M\$9[+%VIK4'VC1@?AD)D@5] 6;*WPLD6F>>:#A7""%@KP2(GDD^!\1'*3E] r
M,;55@ZP((X$5AZ)WK:#O]<K&JBPKIU@8E[6A+C0$_%-M 4_-K';KH2?*#(R<q
MUS$/04W.VJ>!E@R2%DLF)XCGFB4^E@M^MM.0BS51Z ;CFH<SV_+2>-%KHVW p
M^*7Y*.(HG8C00<>.PA@AH>'@?"R%HTUU!^&Y-X55D>K9><-GOUI&T+/"I$<.o
M6E9#&&$$7JB*EM%OV3,[RSX;J+I)M-%LT2+3XO$Q,T/(Q"'2;-*JU\/&7@V#n
M%6BZ2?%;*0\?4:0B1E +*/6BZ7K3"E("18;1.2RLMOIAVIJ[8B>HADV._!4.m
MP(&QH5@^3(F(+IO"9&R$5TL=O2V=&+ ^T9O8!#IK5'O81K!2Z'#S'80I&ZOHl
M;-QM?P2+"CJ<G8 9X(#'+ D;5S[JU1XV%W3NQ#$#-^1CPB.W=GN4#@R EWCKk
M=,8'UE01J(>G!0(;QS4.S/435[]1*3I=MA</I(]X:A@2Y\S<NZO4; +3Z,MSj
MEQ[>-$7&@?(VG<DY!S*6\B2P^4'F;@?Q&VOAZL5%LQ.K:94-'] I>F04N[W\i
MKL&P5+E@'QW6)S&Y*H#ULM0D5!'([WHH6'TD.R93)[$']JU<JQWK$3@&G_/@h
M$ (&'B&CZZ<4!6#]"P=F'LTA:X=6NVW@UMM!4XD$Z;SI1C81'@'<@1L)$)J]g
M^:B'NMGRM1UH!.M(?'06()5==E@&%8+IY;HB$P%>BP$J$C(#D VP&L_H+-7^f
M0M"P[ZU;LD8VWEZ$7@<#U,\2EK7EJV*(CXZ@>3<"#4Z=M.HAJ)@VH'+LC,CXe
M+W6)3Y0&!BLCZ@ <J)P6,!#"F,UJ_D0O%I M*B(!$.$#(:JNK*;QJ%PS\M",d
MW3B9?*+[!:8&%(&ZM8W:*4#GY"2DU<,0RZ.<E8B=KQYUHCVA>L)-E1AK;]EVc
M.,3Y".3F@7=:9L$>,)VX'J,4NQ_K&S.\K2=NM(9A#QOA5;(8U*!ZFTIU)MJ]b
M0?B62W9)5ZJ#A128X,%AH@<%*W^+=D VP'V$01B7"B$UL4O/"2_1V\UG&!ZAa
M._E+!4<PT9]*",PN81G+A!MN$UX+QU1/(!,^ 9LDSI^<N(<AU#83B_-,JQ#&z
ME0A7B#)41BQ,3;.0^)JQ'7><>(9'J4U!;J3DIA*QFU)*,%PIP_"E#*<GAPQOy
MH3)$B,R0IT3CGR*=IF%UZG)'!3OU#3#'G;P3F8.R>NG,917SE%C87 )P<^QIx
M&C="=6A63H=)JD_PT'7(1_Y4#Q??0150>(70&:A#EZ#^(8,*H89G("862+?\w
M#B).B<CA8R$:CX9X63(+2#9+GRXCBKH2-5HFHD9<41SQ1=7AE:P0K@ RCG71v
MKE0Y85(1VD+@[)-IN&]7B6/8HNN8J_CP*[,OH/@HS/#X2.Q$8Z\'0<G0EIV0u
M!,<$""97Z^Y<.;>NJGKK7<;+=SH/WVU5V+#O%K-9 WCS"IOE.YAE\ 2>8UYXt
MD/G9.#PYY;3$TMF284MTZ=)2+O!;I4WOK:6;PC0GG:.5FH'-:>8"W:MU:5\Ps
M"-Z<3 '^1A!/+D@\+';*\,#%(PLC3S=SO(K7LG[S<+AW(B_FQ1*3EVF@[F>Fr
M"&[6Z P!O< $6H!/O#':#PR#@)!'>.X=^/J_8W?E*>=.X?*2C<Z+ >"+YGEGq
M0 6(0!G6DPM*SZW]/&VTQ^"8(XUZ= PV4H18>O4 6=:3S?BG/]?G"V2*:;,;p
MM<V"S2Z:A%\B,:BS=:XS&L90/!S7LY>K&=L5PDWJ:?RWL+S3U&)0,\N-%2U3o
MMK7,(>;:6XY6\P*^R.4?59?I<*<3ITKS*P>M+$(5J6"%#H!SC;CUU:\,:>OMn
MZ[ #,OJQ*5;7P5A3-)XS%+7/ HKHW-=C32UG:V<H$+3),U=EI'V@M_-G_.%$m
M;S^;6:57-%U6MEAM*W_#O/S;@+2&!FMB[2^G"=(*!;_KQ&*)!TMJTBW4FJ.Sl
MH-K:?UP0F'I!KVN.^++]4PO$;0!V-1Z]7C&T.F1L03JW.L#&"@';LG0!KD8"k
M+1M9#6AN.?3"\M!EN?N=Y6ZGEAE*;Z5(B"XN0XRY#*3L<NAMA&3:",KH\4K<j
MF."6<8+;%?XUM]'JIK5"C?;#+.P*.AD[;<#PM%[K@L@+!E.J&VV0Q!O:-8.(i
M^DP[)2_*!BT,B_$1NWA2Q$%?3 =YVK-> _>-&(MI&&T\O+(B8TO^:1GO+0+7h
MC.F%(42$"DX:;VNJBJ#ZTC56CMK8G!0F2XCAOG$[T80,A1P#S7,\F=+Q*,1,g
M[7C%I4*$\BU888QS**_0'K,,?+R:1!)&X<>QR<?]X_#("P<RTOB%!MEY(.0Ef
MIY"-(91SR+*)TD$6Y[0V*+(TW')$Q1IJ9*4".#HR-_S(*OD;&H9PF.9*<CD$e
M*REY74?9U=>2Y],[O',R>1[2Y#XW[6YR/M3)_) O);I]S.@$HJ,;R@5Q0BW#d
MD2T^,!2FTU .<=-!1 QMZDS+5"9U)@HCGCH!DNI62T=D=<;X4^DBDQEDC5_<c
M<RD@FIY18"O=J47&IP963S9F<^M4_<F^==-TU6E*NU+!G/7SO- UDP,4[W#[b
M9K^Y<W%O7Z4M%CH(.U/1]*TI0MN&>^HS^ $6N;UPJ_22YG E DNK!8EVJL<Ta
M%N BE?NK$FZ19AR\$.OF9H@[!;WN@^<V[Z_%&H"ZJ$=38X6PV-:VD'Y]1'KXz
M5>FMD:0C-:>N+4U:9%SN$_BV;UVV(VWA#XK<9:Y]NLOTVA:M;;J[KFG3VG"Gy
M6UQ+K?GO3F_!7ZVG@[5' Z9_FB>T;AHTN_F5[)YKD5D.+&[;W7U[, ',W85Zx
M<L]6R!WK&N \TPCPI5&36Z.Y*8AW!33>'6-2,VF<YG47-0A\WN O+4OOIZR2w
MJJIT7=OCU6DV1L%-J[5WK*K5MZ@*ZFHE:->TH,4MW]SM?.>CPDV##G?BYD'Tv
MJG;CA=LKJ)-UY+;%L&0J=9R;H:>B]3#IQ7/0*^WP-]##AS%9>M'LNEM;!,M#u
MQ'<CN-94S%B:G.L$=Y?"-!+?V8[076O";#SAMO&\[L;U6E;]"GS=X?B%)XQ,t
MH'"?B$(31PK9L4 1V)U)%19L>2R:$'8]KG$,FQ8R[60HFWX<0+Y- KEF7FS4s
M8>1Z$TMI'4UN(1]#K0&RD9/(ME D&UI 0RTG5*JAE\.&+=NI;,,Q-U7T=A*?r
MV6B.)'.5FWT.*;A DG/M\"7;N=:1Y][*T+:'YQ,G#SJ]0CRNHX)R3=NQL 3Eq
MIUWAHG9CF=J0O&H_B0P5+32=4_;D6+QKASH2!;:KLE0& 2HJ)&1ER>U2E?@0p
MUU-%1&,9'M?1_$Q&[ *"C95'001/[:B!5:_[%T'P7%@,B82<,*WAP QK )A,o
M;_W-M^_ $N?A3OQO7]? S,';FG+SX G+&KD!A&=PE8QGL#P$O2^B-15P'Z^Fn
MGE'H:WI)-.;A0'H#NF*(SQ2]H']P)_'.W<#]@E%:H:.C+UIZMH#-SX,04HSHm
M53$&<1D0>F8^>!F" OTR%\Z) @8!MC9X2D_=C#90T[\6_BD^2P1WR3&I5\?Tl
M3FZ^"\.YX1GG)T&!&OK&X\T43S0@](NG/1R")]IW55T.^/3QP48UL%/G8COBk
M5GCT1J;"L(U<:.BZJQ0%=:@WQZ8>+3*T AUW.75%P?%T%T.WZG)!I.NN9M9Uj
M(1=\(3QJW28@"K ^U//S6W=&B(=W">BGURF"^GX&-DR/ZRDR_TQS"KM;KT6-i
M;+%[O;@N>J[8*PME,0O;T'6H[C;!UM&C[)AYM#,B-K34H01?3S92G0[PLK"Kh
M$"*7L%8W8L]^V_-KSDOS=S4W#%?@GC=Q>&I;KRDW9X';P9L'"W!>I<6YX[T6g
M-BV@H?,2I,X'[@CU&*M$I,OS>5[-4W5%Z#C8_//==E,DW+&Y .RK2UQ/Z6ZNf
M_*/+NQ/_W;JUL1IPV_>Y<]J4,,,$V4.8!.,^[)"[0_GFXWIS W"I48+.^<6@e
M[@Q%X++S[>#.Q7H\IU:F_,A8\*[FWG\#]I;5 !V$S[\Y3=W =PD7WR=<F9EOd
MSNG#*GSZE@,B%P)1>-[^B2^T_C[4NYV)AW=%_;]G%:2FV_:]5T$7S!;0]OLVc
M[^]GH 4J]V\GX&U\@9?N[D&XNB4%;R3:.78/Z_!\NR="O%R]C:")S^" .[NVb
M.^^:X;FW= NO<2V#F_#9G,-&/)^.\?C\-S3-&H[FA_NR3F\Y_+LS\3*@(GRXa
M5I*#\TW.WPPZ[]Y"11[4V2'Y4PEW/O_$!5R %RE2_!DGPD6(S -]%G]PX9B+z
M3T(O;N'H=;E 3.#XG>3K3EB./R$Z7N/_I!0&;%08QPGV3*/C3<J.FZ:%35$<y
M]J+CXQ*;-E%L(><+"3DPU-A*#I$70^+$R'G<0S[*5/LNF>SI5,E3]B7?R-G0x
M97/RTLVM0?E('H<F&24S^T_.NWNV.X3)0+N5[[G^5+2#8DZFY6>L&OO#6IC+w
M&QUBZ>42ZI=#9*JME,L'UF[*G&X/[FVQ[;69N44,VU:9;&]$LZV5K[BC!^Z#v
M7D5D<_XN(X8\<Q_P0= D ?EBEZ\/?6.M; .<N3*7C@#E/;J4C_"NI:HNF8!Ou
M1O2YD\"N@EGAJAD5@-'A'VQ ZXY9!4QTE@[1RPR;9OE\QJ G])CO\H,ZO]/Ht
M7+7B?W2M0!9F.@SO9AF"X?U\^9TA1#K/*^F1_8FQ![P@]*98T6NY1WTWKW8\s
ME(*4>H98ZW$,/U_VJ]^RGOK4SV)@J+4W=;R^\#B14R? 6+VA;W4&C&=1P%V7r
M&F!=I-LB-FK6LWIGUS18/^NW]3K6R+!^5H\E=1WQO/V-H]<74/I)8NZ('OUUq
MVF/(UCIAU_I\'^62(KK5]";[@&[L@MWJ57[07MDAOWY&/)H]Z0EV17K:!_2Hp
M$.TKJQ&5]@"ZLGX+YT_MJ9^U*UH:*JF :6X_U@JAS?/Y]2ZS%<(0&.*$WK!Jo
M<P=H\!U^<]=41?GO-?P:KZ)O0MUK\%'>1<O[).[=.3XZ#>$.S/J?=_O-\7E_n
ML^?=\0;X"WSXOJB'-Y(^X#B^ILVU6E_<?[S?\^_%G_D3>$T%_2T^TJ3>7"W\m
M@U!"?^&YO!3T\B*\P]?I\-VKQW=V0^'^3[OI?H&__7$_ >S^OEVVPGCK3_[El
M_XVO[\M%QX,8'E\KAO]Q#_+)?3XL=^./\'D4?4WP#E[*ES]_#Y65)G"S_EA^k
MGS?!?H[A_[_JY?!A?E>'[UX]OK,;"O=_VDWW"_PUCUYUOXIX\VMPO9&Z,= &j
MR !6DM9 /,^'EC'0!E+"6,IO6( .V+P&<!#R0 ,X"/5!#+@ (JX&GH0):  'i
M807L$!= Q-4 E# !#> @K( 9DS^(N!IX$B:@ 1R$%?"5K!(15P-:P00T@(.Ph
M MB;Q7 !1%P-: 43T  .P@JP,&Z0B*L!K6 "&L!!6 $61A<3<36@%4Q  S@(g
M*\!9DPUL3<35P%UH  =A!51X%T#$U<!=:  '805P?!= Q-7 76@ !V$%K!!Pf
MX0*(N!JX"PW@(*R  T%;7  15P-.P@0T@(.P FR"QQC=1%P-: 43T  .P@HHe
M0?:-B*L!K6 "&L!!6 $E2!<3<36@%4Q  S@(*V!%T PFHG)< !%7 W>A 1R$d
M%0#97  15P-0P@0T@(.P BA\E7X2)J !'(05<*1HBPL@XFK 29B !G 05H#/c
M1%8N@(BK :U@ AK 05@!F73;N@ BK@:T@@EH  =A!120ZR& 70 15P-WH0$<b
MA!5 1_$#&G !1%P-: 43T  .P@I0"WC*!1!Q-> D3$ #. @K@$Y4$*%*Q-6 a
M5C !#> @K #O6)5< !%7 T["!#2 @[ "O*,;).)JP$F8@ 9P$%: P^H8>J##z
M$'$UH!5,0 ,X""N@@I#A;3$&7  15P-WH0$<A!4 ;>4 !R'B:L!)F( &<!!6y
M@!N&PRZ B*L!)V$"&L!!6 &0>WKT!"*N!NY" S@(*^"^6 P70,35@),P 0W@x
M(*P VE(/7X0+(.)JX"XT@(.P F@+9',!1%P-: 43T  .P@JHT ^!@Q!Q-7 7w
M&L!!6 &TY69,1C3@ HBX&F@ !\$-#)H&<-Z8=2PA.8;F7[B ^8&5I#40S_,Dv
MQ]#\"Q<P/_R\MJY>)$<.J!!T7@2B0!5( #&@ 9PW9AU+T$ =:!:^TP7,#ZPDu
MK8%XGD<#=:!9^$X7,#_\O+:N7FB@#C2++X!*BT 4J ()( 8T@//&K&/)BJ 9t
M3$3EV/EI'<0[Q8J@&4Q$Y63K(S[]L;AA8 +AX@PP$953Z,6UZR"$YEK1IVLKs
M/OVQN+B'].]$TM,+2OC%T\FEQX3W.AQO>C/>Z='XIQ\:ZKB-I[A3R)E:G*E7r
M*,ZPH9"F.WZ/6WV.LX6^OH]/[%U(ZXF<K<_82>Z0 Z==SY![?3\VRLO)R@G[q
M:$CLJ:&QS\A?+MEK<H_<R0$]5!Y/SU[-17MS^.8:/53FV>S0):>5U9'MY:$Kp
MYW.PW&@/*'#/D\<]TPZ(N_S<1ZA()[77?3!O]PJ!*3]$C+]9HO+8MO?NXB+Fo
M>VA>MEM4OY_^6-PP,(%P<0:8B,K9%0'6QY2V<67 O>.T<[ \P24,38_ 4#@,n
MGE,B&"1O WJH#"(,\8J@&4Q$Y5Q_X9!Q8V_'5>&42@3,9)DH G(OR>73NY!8m
MO,28. 5$0.X%F68 4"#/<'$&F(C*>?-K,)8L%4/S+US _,!*TAJ(Y_FE8FC^l
MA0N8'WY>6U<ODB,'5 @Z+P)1H HD !C0 ,X;LXXE<V!F^DX7,#^PDK0&XGE^k
A#LQ,W^D"YH>?U];5"PW4@6;Q!5!I$8@"52 !P( &<-X j
 i
end

-- 
Don Cope        dec@nucleus.mi.org |   Only the centipede can hear the
Vickers Inc.                       |   the 100 footsteps of his brother

evans@syd.dit.CSIRO.AU (Bruce.Evans) (09/25/90)

In article <1990Sep18.175937.6490@nucleus.mi.org> dec@nucleus.mi.org (Donald E. Cope) writes:
>
>  Below is a turbo c rendition of Bjorn Larsson's PCCURSES
>in 3 parts. It has been converted to run under MINIX and will
>compile using either the ACK compiler or Bruce's compiler. 

This version is based on PCCURSES 1.0, while Larsson's version is up to 1.4.
However, the 1.4 version doesn't have good support for color.  Strange.

The output was extremely slow. The main reason was that an escape sequence
to locate the cursor was generated for *every* character. This expanded output
by almost a factor of 9 (8 characters in ESC [ xx;yy H) as well as generating
lots of work to format and parse the sequence. I removed most of the escape
sequence by keeping track of the column. This assumes the buffer doesn't have
any non-printing characters. Now output is merely slow. It's still much faster
than under DOS because gotoxy remains necessary with the current method of
using the BIOS for output, and BIOS output is slow.

To make the output faster under Minix, the best method for the console driver
is essentially a copy, with escape sequences only for color changes and at the
beginnings of lines. Serial terminals need more escape sequences with things
like clear-to-end-of-line and clear-n-characters. The color support won't do
for any old terminal but it works well apart from speed when another Minix
system's console is the terminal. Minix's term program by default strips the
high bit so the box characters get messed up. Use "term -nostrip" to avoid
this.

My compiler fails with the doubles in prntscan.c. Don't write code like that
:-).

Notes on the diffs:

attrib.c:
Fixed formatting.

beep.c:
Fixed lint.

charget.c:
Fixed lint.

charins.c:
Fixed lint.

curspriv.h.
Fixed lint.
  
longname.c:
Fixed typo.

prntscan.c:
Kludged the kludged varargs functions some more. bcc is missing a library
function needed for the doubles.

refresh.c:
Flushed stdout. Argghh.

update.c
Fixed major typo bugs.
Fixed off-by-one error in avoiding printing to last spot on screen.
Improved performance by a factor of 8.

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  curses.cdif
# Wrapped by local@besplex on Tue Sep 25 22:23:53 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'curses.cdif' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'curses.cdif'\"
else
echo shar: Extracting \"'curses.cdif'\" \(4527 characters\)
sed "s/^X//" >'curses.cdif' <<'END_OF_FILE'
Xdiff -c1 orig/attrib.c ./attrib.c
X*** orig/attrib.c	Sat Sep 22 19:12:45 1990
X--- ./attrib.c	Sat Sep 22 21:37:19 1990
X***************
X*** 136,138 ****
X  /* setcolors() set the forground and background window colors   */
X! /*           of stdscr
X  /****************************************************************/
X--- 136,138 ----
X  /* setcolors() set the forground and background window colors   */
X! /*           of stdscr						*/
X  /****************************************************************/
Xdiff -c1 orig/beep.c ./beep.c
X*** orig/beep.c	Sat Sep 22 19:12:46 1990
X--- ./beep.c	Sat Sep 22 21:40:20 1990
X***************
X*** 36,39 ****
X    {
X    int i;
X- /*
X    _cursesscroll(0,0,LINES-1,COLS-1,0,0x70);
X--- 36,39 ----
X    {
X+ #if 0
X    int i;
X    _cursesscroll(0,0,LINES-1,COLS-1,0,0x70);
X***************
X*** 42,44 ****
X    _cursesscroll(0,0,LINES-1,COLS-1,0,0x0);
X!   wrefresh(curscr); */
X    } /* flash */
X--- 42,45 ----
X    _cursesscroll(0,0,LINES-1,COLS-1,0,0x0);
X!   wrefresh(curscr);
X! #endif  
X    } /* flash */
Xdiff -c1 orig/charget.c ./charget.c
X*** orig/charget.c	Sat Sep 22 19:12:48 1990
X--- ./charget.c	Sat Sep 22 21:42:59 1990
X***************
X*** 141,143 ****
X    wmove(stdscr,y,x);
X!   wgetch(stdscr);
X    } /* mvgetch */
X--- 141,143 ----
X    wmove(stdscr,y,x);
X!   return wgetch(stdscr);
X    } /* mvgetch */
X***************
X*** 155,157 ****
X    wmove(win,y,x);
X!   wgetch(win);
X    } /* mvwgetch */
X--- 155,157 ----
X    wmove(win,y,x);
X!   return wgetch(win);
X    } /* mvwgetch */
X***************
X*** 188,190 ****
X  /****************************************************************/
X! /* #undef getch					/* we use MSC getch() below */
X  
X--- 188,192 ----
X  /****************************************************************/
X! #if 0
X! #undef getch					/* we use MSC getch() below */
X! #endif
X  
X***************
X*** 192,194 ****
X--- 194,198 ----
X    {
X+ #ifndef MINIX  
X    int c;
X+ #endif  
X  
X***************
X*** 221,223 ****
X    {
X-   int *scanp;
X  #ifdef MINIX
X--- 225,226 ----
X***************
X*** 225,226 ****
X--- 228,231 ----
X  #else
X+   int *scanp;
X+   
X    if (c == 0x0300)			/* special case, ^@ = NULL */
Xdiff -c1 orig/charins.c ./charins.c
X*** orig/charins.c	Sat Sep 22 19:12:49 1990
X--- ./charins.c	Sat Sep 22 21:44:51 1990
X***************
X*** 59,61 ****
X    {
X!   winsch(stdscr,c);
X    } /* insch */
X--- 59,61 ----
X    {
X!   return winsch(stdscr,c);
X    } /* insch */
Xdiff -c1 orig/curspriv.h ./curspriv.h
X*** orig/curspriv.h	Sat Sep 22 23:08:46 1990
X--- ./curspriv.h	Sat Sep 22 21:50:52 1990
X***************
X*** 68,74 ****
X  extern	char	*malloc();
X  extern	void	 free();
X- #ifndef MINIX
X- extern	int	 sprintf();
X- extern	int	 sscanf();
X- #endif
X  
X--- 68,71 ----
X  extern	char	*malloc();
X+ extern	void	 exit();
X  extern	void	 free();
X  
Xdiff -c1 orig/longname.c ./longname.c
X*** orig/longname.c	Sat Sep 22 19:12:51 1990
X--- ./longname.c	Sat Sep 22 21:46:44 1990
X***************
X*** 31,33 ****
X  #else
X!   return(IBM PC BIOS");
X  #endif
X--- 31,33 ----
X  #else
X!   return("IBM PC BIOS");
X  #endif
Xdiff -c1 orig/prntscan.c ./prntscan.c
X*** orig/prntscan.c	Sat Sep 22 19:14:15 1990
X--- ./prntscan.c	Sat Sep 22 21:51:11 1990
X***************
X*** 1,1 ****
X--- 1,2 ----
X+ #define double long
X  /****************************************************************/
X***************
X*** 18,19 ****
X--- 19,21 ----
X  #include <curses.h>
X+ #include <stdio.h>
X  #include "curspriv.h"
Xdiff -c1 orig/refresh.c ./refresh.c
X*** orig/refresh.c	Sat Sep 22 19:14:13 1990
X--- ./refresh.c	Sat Sep 22 20:02:38 1990
X***************
X*** 19,20 ****
X--- 19,21 ----
X  #include <curses.h>
X+ #include <stdio.h>
X  #include "curspriv.h"
X***************
X*** 33,34 ****
X--- 34,36 ----
X    doupdate();
X+   fflush(stdout);
X    } /* wrefresh */
Xdiff -c1 orig/update.c ./update.c
X*** orig/update.c	Sat Sep 22 19:14:14 1990
X--- ./update.c	Sat Sep 22 22:17:04 1990
X***************
X*** 197,200 ****
X    srcp = twin->_line[lineno] + x;
X!   dstc = curscr->_colors;
X!   srcc - twin->_colors;
X    
X--- 197,200 ----
X    srcp = twin->_line[lineno] + x;
X!   dstc = &curscr->_colors;
X!   srcc = &twin->_colors;
X    
X***************
X*** 251,254 ****
X    {
X!   if ((_cursvar.cursrow < LINES) || (_cursvar.curscol < COLS))
X  #ifdef MINIX
X  	_cursessetcolor(win->_colors); 
X--- 251,255 ----
X    {
X!   if ((_cursvar.cursrow < LINES - 1) || (_cursvar.curscol < COLS - 1))
X  #ifdef MINIX
X+     {
X  	_cursessetcolor(win->_colors); 
X***************
X*** 255,256 ****
X--- 256,259 ----
X  	_cursescattr(0,ch,ch >> 8, 0);
X+ 	++_cursvar.curscol;
X+     }	
X  #else
END_OF_FILE
if test 4527 -ne `wc -c <'curses.cdif'`; then
    echo shar: \"'curses.cdif'\" unpacked with wrong size!
fi
# end of 'curses.cdif'
fi
echo shar: End of shell archive.
exit 0
-- 
Bruce Evans		evans@syd.dit.csiro.au

csg020@uk.ac.cov.cck (***CURTIS***) (06/12/91)

Anybody got any idea where I can ftp curses for Minix from? I supose I could use
the pc-curses for DOS and port it over to Minix. Any ideas?

Also, has anyone noticed that if you strings /dev/kmem it shows up everyones
decrypted password who has logged on since the bring up of the system?!


--
_______________________________________________________________________________
| Flesh : ***CURTIS*** E-mail : csg020%uk.ac.cov.cck@uk.ac.earn-relay         |
| Voice : (0203) 599500 Quote : What a great day, watch some bastard spoil it!|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

hp@vmars.tuwien.ac.at (Peter Holzer) (06/12/91)

csg020@uk.ac.cov.cck (***CURTIS***) writes:

>Anybody got any idea where I can ftp curses for Minix from? I supose I could use

Yes, from me :-) 

ftp.vmars.tuwien.ac.at (128.130.39.16) /pub/minix/net/curses2.0-?

>the pc-curses for DOS and port it over to Minix. Any ideas?

I think this version is a port of pc-curses.

>Also, has anyone noticed that if you strings /dev/kmem it shows up everyones
>decrypted password who has logged on since the bring up of the system?!

No. Very interesting. But /dev/kmem shouldn't be world readable
anyway.

--
|    _  | Peter J. Holzer                       | Think of it   |
| |_|_) | Technical University Vienna           | as evolution  |
| | |   | Dept. for Real-Time Systems           | in action!    |
| __/   | hp@vmars.tuwien.ac.at                 |     Tony Rand |

kjh@pollux.usc.edu (Kenneth J. Hendrickson) (06/13/91)

In article <}0K*`?+@cck.cov.ac.uk> csg020@uk.ac.cov.cck (***CURTIS***) writes:
>Also, has anyone noticed that if you strings /dev/kmem it shows up everyones
>decrypted password who has logged on since the bring up of the system?!

This is bad.  Not only because ordinary users may be able to find out
the root password (if the superuser isn't so smart), but also because
the superuser is able to find out other users passwords (if he is).

This is a most serious security hole.  It also means that on PC's that
aren't running in protected mode, and maybe Macs, have no security at
all.

Perhaps an easy solution is to have the login program, and the su
program, go and scribble over each copy of entered passwords after they
are used.  Both login and su should be able to do this since they are
both suid.  Any comments on this idea?  Should it go into 1.6.* right
away?

-- 
favourite oxymorons:   student athlete, military justice, mercy killing
Ken Hendrickson N8DGN/6       kjh@usc.edu      ...!uunet!usc!pollux!kjh

kevin@nuchat.sccsi.com (Kevin Brown) (06/13/91)

In article <33563@usc.edu> kjh@pollux.usc.edu (Kenneth J. Hendrickson) writes:
>In article <}0K*`?+@cck.cov.ac.uk> csg020@uk.ac.cov.cck (***CURTIS***) writes:
>>Also, has anyone noticed that if you strings /dev/kmem it shows up everyones
>>decrypted password who has logged on since the bring up of the system?!

I just tried this and found nothing.  However, you might find something if you
do a "strings /dev/mem"...

If you remove world read permissions from /dev/kmem, you'll have to setuid
or setgid ps (and probably mu).

I'm running Minix-386, so this may be one of the reasons I don't see 
anything.  Has anyone else confirmed the above problem?

>This is bad.  Not only because ordinary users may be able to find out
>the root password (if the superuser isn't so smart), but also because
>the superuser is able to find out other users passwords (if he is).

I must say, I'm a bit perplexed about how this happens to begin with.  I
was under the impression that /dev/kmem was supposed to show kernel memory
ONLY.  What are user passwords, decrypted or otherwise, doing in kernel
memory at all??  The only place I can think of where they might show up is
in the tty buffer, and that gets overwritten with use, so I don't see where
or how it stores *all* passwords since boot time.

>This is a most serious security hole.  It also means that on PC's that
>aren't running in protected mode, and maybe Macs, have no security at
>all.

This is already the case, for those systems that have write access (and,
perhaps, read access) to /dev/mem and /dev/kmem.

>Perhaps an easy solution is to have the login program, and the su
>program, go and scribble over each copy of entered passwords after they
>are used.  Both login and su should be able to do this since they are
>both suid.  Any comments on this idea?  Should it go into 1.6.* right
>away?

The version of login.c I'm using is the original one that came with 1.5.10
(from PH), and I don't see anything in /dev/kmem, so I don't know if that
will work or not because I don't know where the passwords are being stored
or why.


>favourite oxymorons:   student athlete, military justice, mercy killing
>Ken Hendrickson N8DGN/6       kjh@usc.edu      ...!uunet!usc!pollux!kjh



--
Kevin Brown						    Disclaimer: huh?
kevin@nuchat.sccsi.com				kevin@taronga.hackercorp.com
...!uunet!nuchat!kevin			      ...!uunet!nuchat!taronga!kevin

Minix -- the Unix[tm] of the 90's.  System V -- the Multics of the 90's.  :-)

miquels@htsa.htsa.aha.nl (Miquel van Smoorenburg) (06/14/91)

In article <33563@usc.edu# kjh@pollux.usc.edu (Kenneth J. Hendrickson) writes:
#In article <}0K*`?+@cck.cov.ac.uk> csg020@uk.ac.cov.cck (***CURTIS***) writes:
#>Also, has anyone noticed that if you strings /dev/kmem it shows up everyones
#>decrypted password who has logged on since the bring up of the system?!
#
#This is bad.  Not only because ordinary users may be able to find out
#the root password (if the superuser isn't so smart), but also because
#the superuser is able to find out other users passwords (if he is).
#
#This is a most serious security hole.  It also means that on PC's that
#aren't running in protected mode, and maybe Macs, have no security at
#all.
#
#Perhaps an easy solution is to have the login program, and the su
#program, go and scribble over each copy of entered passwords after they
#are used.  Both login and su should be able to do this since they are
#both suid.  Any comments on this idea?  Should it go into 1.6.* right
#away?
#
#-- 
#favourite oxymorons:   student athlete, military justice, mercy killing
#Ken Hendrickson N8DGN/6       kjh@usc.edu      ...!uunet!usc!pollux!kjh

Nope. A user should not be able to read from /dev/[k]mem. If he can,
that's wrong. And on a PC (or Mac?) it is not only possible to READ
all the memory, but also to WRITE it. So there is no security anyway.
(Just change the kernel's proc table, the UID field ofcourse)
Miquel.

-- 
---
%    Miquel van Smoorenburg, Baljuwstraat 20, 2461 SL Langeraar, Holland    %
%  miquels@drinkel.nl.mugnet.org         miquels@maestro.htsa.aha.nl        %
%              God is real, unless declared integer..                       %

kjh@pollux.usc.edu (Kenneth J. Hendrickson) (06/15/91)

In article <119@htsa.htsa.aha.nl> miquels@htsa.htsa.aha.nl (Miquel van Smoorenburg) writes:
>In article <33563@usc.edu# kjh@pollux.usc.edu (Kenneth J. Hendrickson) writes:
>#This is bad.  Not only because ordinary users may be able to find out
>#the root password (if the superuser isn't so smart), but also because
>#the superuser is able to find out other users passwords (if he is).
>#Ken Hendrickson N8DGN/6       kjh@usc.edu      ...!uunet!usc!pollux!kjh
>
>Nope. A user should not be able to read from /dev/[k]mem. If he can,
>that's wrong. And on a PC (or Mac?) it is not only possible to READ
>all the memory, but also to WRITE it. So there is no security anyway.
>(Just change the kernel's proc table, the UID field ofcourse)
>Miquel.

Well, Miquel, I am not so stupid.  Please read my post again, quoted for
your convenience.  "If the superuser isn't so smart" translates to
having world read and write permissions on /dev/*mem, and "if he is"
translates to having them protected.

However, on a PC that is not in protected mode, a user can write a
program to read from any memory location he pleases, even one that isn't
in *his* address space.

-- 
favourite oxymorons:   student athlete, military justice, mercy killing
Ken Hendrickson N8DGN/6       kjh@usc.edu      ...!uunet!usc!pollux!kjh