IMD 1.18: 6/11/2012 10:57:40 carousel microtools carousel toolkits version 2.0 builder toolbook files - cp/m-80 disk b 1 of 3 televideo 1983    åååååååååååååååååå   åååååååååååååååååå   åååååååååååååååååå   åååååååååååååååååå   AR AR €AR AR € AR AR [CMTLIB 336oCMTLIB 344p !"#$LIBDEFS %&PUBLIB RAT€'()*+,-.PUBLIB RAT€/0123456ååer common /carch/ fname, fstat, fcount, errcnt, verbos, chead, typef, sizef, seeksz, ccount, intrls, rswich character fname (FILENAMESIZE, MAXFILES) # list of archive members integer fstat (MAXFILES) # mark meCHARS if count chars; # CSEEK if seek to end; # CLINES if await trailer integer intrls # YES if trailer required; # NO if trailer p3 ascii 08/30/83 12:30:00 # define(byte,integer*2) define(ON,) define(OFF,#) define(FOLDF,ON) # if on, fold file names to lower case ifdef(CPM,define(BIN,OFF)) # process binary files if on ifnotdef(CPM,define(BIN,ON)) iPUBLIB RAT€789:;<=>PUBLIB RAT8?@ABR AR +CDERATDEF 8FGHIRATLIB 336€JKLMNOPQRATLIB 336€RSTUVWXYRATLIB 336CZ[\]^RATLIB 344€_`abcdefååmber when processed integer fcount # number of members integer errcnt # running error count integer verbos # verbose flag character chead (MAXLINE) # holds current header integer typerohibited; # DONT_KNOW if still optional integer rswich # YES if -r on command line #-t- carch 9_38 ascii 08/30/83 12:30:00 #-h- binbuf 0_102 ascii 08/30/83 12:30:00 ## bifdef(CPM,define(NOTBIN,ON)) ifnotdef(CPM,define(NOTBIN,OFF)) define(MAXFILES,200) # maximum number of files processable # Values for ccount: how to find end of archive element define(CCHARS,1) # use character countRATLIB 344€ghijklmnRATLIB 344€opqrstuvRATLIB 344%wxyREADME-B8SD)z{|RUNSYS 336}~RUNSYS 344€ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå#-h- list 0_31 ascii 08/30/83 12:30:00 carch binbuf ar.rat ar.doc #-t- list 0_31 ascii 08/30/83 12:30:00 #-h- carch 9_38 ascii 08/30/83 12:30:00 ## carch - common blocks for the archivf # holds current member type integer sizef # holds current member size integer seeksz(2) # size of member as a seek # offset integer ccount # Cnbuf - buffer for binary file reads (archiver) common /binbuf/ buf(BINARY_BUFSIZE) byte buf #-t- binbuf 0_102 ascii 08/30/83 12:30:00 #-h- ar.rat 248_107 ascii 08/30/83 12:30:00 #-h- defns 12_ define(CSEEK,2) # use seek offset define(CLINES,3) # check each line for trailer # Value for intrls: whether trailers expected on input define(DONT_KNOW,2) # alternative to YES or NO define(DELETE_CMD,LETD) # de   lete member from archive (by name only) define(PRINT_CMD,LETP) # print archive members define(READ_CMD,LETR) # ignore file sizes while # reading, use trailers only define(TABLE_CMD,LETT) # print table of contents dee of buffer for binary reads #-t- defns 12_3 ascii 08/30/83 12:30:00 #-h- ar 19_101 ascii 08/30/83 12:30:00 ## ar - archive file maintainer # This archiver can read archives in various formats. When # insisting upon it. # Option 'r' forces the archiver to ignore file sizes and to # infer file boundaries from header-trailer matchups alone. # It is assumed that if ANY archive element carries a trailer # then ALL of them do. Exceptions triggerand, 2, cmd, 1) # without MINUS else call scopy (comand, 1, cmd, 1) call fold (cmd) if (index(cmd, VERBOSE_CMD) > 0) { ifv = 1 verbos = YES } else verbos = NO if (index(cmd, READ_CMD) > 0) { ) call update (aname) else if (ift == 1) call table (aname) else if (ifx == 1) call extrac (aname, EXTRACT_CMD) else if (ifp == 1) call extrac (aname, PRINT_CMD) else if (ifd == 1) call delete (aname) , fdi) == EOF) { acopy = EOF break } if (fdo != ERR) call putch (c, fdo) } return end #-t- acopy 3_27 ascii 08/30/83 12:30:00 #-h- addfil 7_57 ascii 0fine(UPDATE_CMD,LETU) # update archive member define(VERBOSE_CMD,LETV) # controls amount of output define(EXTRACT_CMD,LETX) # extract archive member define(USAGE_MESSAGE,"usage: ar (dptux)[v][r] archive [files].") define(HEADER_it finds a file size in a header (either a character # count or a seek offset in local format), it uses that # size to read or to skip over the archive element. Then # it expects either an end of file, a valid header, or a # trailer to error messages. DRIVER(ar) include carch character aname (FILENAMESIZE), comand (MAXARG), cmd(MAXARG) integer ifd, ifp, ift, ifu, ifx, ifv, ifr data ifd, ifp, ift, ifu, ifx, ifv, ifr / 7*0 / integer getarg, length, index  ifr = 1 rswich = YES ccount = CLINES intrls = YES } else { rswich = NO intrls = DONT_KNOW } if (index(cmd, DELETE_CMD) > 0) ifd = 1 if (index(cmd, PRINT_CMD) > 0) ifp = 1 if (indeelse call error ("error in main: can't happen.") if (errcnt != 0) call error (".") DRETURN end #-t- ar 19_101 ascii 08/30/83 12:30:00 #-h- acopy 3_27 ascii 08/30/83 12:30:00 ## ac8/30/83 12:30:00 ## addfil - add file 'name' to archive open on 'fd' subroutine addfil (name, fd) character name (ARB) filedes fd include carch character head(MAXLINE), trail(MAXLINE) integer seksz(2), cpin filedes nfd STRING,"#-h-") define(TRAILER_STRING,"#-t-") define(NAMESIZE,20) # size of name allowed in header define(ASCII_STRING,"ascii") define(LOCAL_STRING,"local") define(BINARY_STRING,"binary") define(BINARY_BUFSIZE,1024) # siz match this element's header. If there is no # no file size recorded in the header, then it simply scans # for the proper matching trailer. In this way the # archiver exploits any available file size information # without necessarily string usage USAGE_MESSAGE errcnt = 0 call query (usage) if (getarg (1, comand, MAXARG) == EOF | getarg (2, aname, FILENAMESIZE) == EOF) call error (usage) call getfns if (comand(1) == MINUS) call scopy (comx(cmd, TABLE_CMD) > 0) ift = 1 if (index(cmd, UPDATE_CMD) > 0) ifu = 1 if (index(cmd, EXTRACT_CMD) > 0) ifx = 1 if (ifd + ifp + ift + ifu + ifx != 1 | ifr + ifv + 1 != length(cmd)) call error (usage) if (ifu == 1opy - copy size characters from fdi to fdo # NOTE - if fdo == ERR, copy to null integer function acopy (fdi, fdo, size) character getch character c integer fdi, fdo, i, size acopy = YES for (i=1; i <= size; i=i+1) { if (getch (c filedes open nfd = open (name, READ) if (nfd == ERR) { call putlin (name, ERROUT) call remark (": can't add.") errcnt = errcnt + 1 return } if (errcnt == 0) { call makhdr (head, nam   e, seksz) if (errcnt == 0) { if (verbos == YES) { call putlin (name, STDOUT) call putch (NEWLINE, STDOUT) } call putlin (head, fd) if (cpin (nfd, fd, seksz) == EOF) { errcnt = errcnt + 1 + (t1/128) return # total is already properly normalized. end #-t- addsek 1_127 ascii 08/30/83 12:30:00 #-h- bncopy 5_14 ascii 08/30/83 12:30:00 BIN ## bncopy - copy binary archive member BIN integer functiuf, len, fd2) BIN j = j - i BIN } BIN BIN return BIN end #-t- bncopy 5_14 ascii 08/30/83 12:30:00 #-h- cmpsek 5_18 ascii 08/30/83 12:30:00 ## cmpsek -- compare seek offsets, return -1, 0, or  lb(1)) cmpsek = isign(1, la(1) - lb(1)) else cmpsek = 0 return end #-t- cmpsek 5_18 ascii 08/30/83 12:30:00 #-h- cpin 1_76 ascii 08/30/83 12:30:00 ## cpin --- copy a file into an archiv 2_121 ascii 08/30/83 12:30:00 ## ctosek -- decode seek offset from string, increment i subroutine ctosek (in, i, offset) character in(ARB) integer i, offset(2) integer isseek, ctoi if (isseek(in(i)) == NO) call ejunk integer remove, amove, mkuniq string tprefx "arctemp" if (fcount <= 0) call error ("delete by name only.") afd = open (aname, READ) if (afd == ERR) call cant (aname) junk = mkuniq (tprefx, tname) tfd = call putlin (name, ERROUT) call remark (": unexpected end of file.") } call maktrl (head, trail) call putlin (trail, fd) } } call close (nfd) return end #-t- addfil 7_57 ascii 08/30/83 1on bncopy (fd1, fd2, size) BIN # Note: if fd2 == ERR, copy to NULL BIN filedes fd1, fd2 BIN integer size, i, j, len BIN integer readf, writef, junk BIN BIN include binbuf BIN BIN bncopy = YES BIN j = size BIN for (i=min(j,BINARY_BUFSIZE); i >1 # returns -1 if ab, 0 if a=b. integer function cmpsek (a, b) integer a(2), b(2) integer la(2), lb(2), a2, b2 la(1) = a(1) la(2) = a(2) lb(1) = b(1) lb(2) = b(2) call seknrm(la) call seknrm(lb) a2 = la(2) b2 e integer function cpin (fd, afd, seksz) filedes fd, afd integer seksz(2) integer sekcpy cpin = sekcpy (fd, afd, seksz) return end #-t- cpin 1_76 ascii 08/30/83 12:30:00 #-h- cpout rror ("ctosek: invalid seek offset.") offset(2) = ctoi(in,i) i = i + 1 # skip past UNDERLINE offset(1) = ctoi(in,i) call seknrm (offset) return end #-t- ctosek 2_121 ascii 08/30/83 12:30:00 #-h- delete  create (tname, READWRITE) if (tfd == ERR) call cant (tname) call replac (afd, tfd, DELETE_CMD) call notfnd call close (afd) call close (tfd) if (errcnt == 0) { if (amove (tname, aname) == ERR) { errcnt = 2:30:00 #-h- addsek 1_127 ascii 08/30/83 12:30:00 ## addsek -- add seek offsets subroutine addsek (a, b, total) integer a(2), b(2), total(2) integer t1 t1 = a(1) + b(1) total(1) = mod(t1, 128) total(2) = a(2) + b(2)  0; i = min (j, BINARY_BUFSIZE) ) BIN { BIN len = readf (buf, i, fd1) BIN if (len == EOF) BIN { BIN bncopy = EOF BIN break BIN } BIN if (fd2 != ERR) BIN junk = writef(b= lb(2) if (a2 >= 0 & b2 < 0) # Compare a2 & b2 as unsigned integers cmpsek = -1 else if (a2 < 0 & b2 >= 0) cmpsek = 1 else if (a2 != b2) # a2 & b2 have the same sign cmpsek = isign(1, a2 - b2) else if (la(1) != 1_18 ascii 08/30/83 12:30:00 ## cpout --- copy a file out of an archive subroutine cpout (afd, fd) filedes afd, fd call fromar (afd, fd) return end #-t- cpout 1_18 ascii 08/30/83 12:30:00 #-h- ctosek  7_57 ascii 08/30/83 12:30:00 ## delete - delete files from the archive subroutine delete (aname) character aname (ARB) include carch character tname (FILENAMESIZE) filedes afd, tfd filedes create, open integer errcnt + 1 call remark ("can't rename/move temp file.") } } else { call remark ("fatal errors - archive not altered.") junk = remove (tname) } return end #-t- delete 7_   57 ascii 08/30/83 12:30:00 #-h- done 2_31 ascii 08/30/83 12:30:00 ## done - see if all files have been extracted/printed integer function done (junk) integer i include carch if (fcount <= 0) return (NO) for (i=1;tring if (tstr(i) != str(i) ) return(NO) call skipbl (str, i) return ( equal(str(i), chead) ) end #-t- elend 3_20 ascii 08/30/83 12:30:00 #-h- extrac 9_13 ascii 08/30/83 12:30 call putlin (name, STDOUT) call putch (NEWLINE, STDOUT) } if (cmd == PRINT_CMD) call cpout (afd, STDOUT) else { fd = create (name, WRITE) if (fd != ERR) { /83 12:30:00 ## filarg - see if name is present in argument list integer function filarg (name) character name (ARB) include carch integer i integer equal if (fcount <= 0) return (YES) for (i = 1; i <= fcount;  character text (MAXLINE) string hdrstr HEADER_STRING string blanks " " string astr ASCII_STRING string lstr LOCAL_STRING BIN string bstr BINARY_STRING i = 1 call stcopy (hdrstr, 1, head, i) call stcopy (blanks, 1, headall stcopy (lstr, 1, head, i) head(i) = NEWLINE i = i + 1 head(i) = EOS return end #-t- formhd 8_93 ascii 08/30/83 12:30:00 #-h- fromar 15_69 ascii 08/30/83 12:30:00 ## fromar -- general rou i <= fcount; i=i+1) { if (fstat(i) == NO) return (NO) } return (YES) end #-t- done 2_31 ascii 08/30/83 12:30:00 #-h- elend 3_20 ascii 08/30/83 12:30:00 ## elend --:00 ## extrac - extract files from archive subroutine extrac (aname, cmd) character aname (ARB), cmd include carch character name (FILENAMESIZE), hdr (MAXLINE) filedes afd, fd filedes create, open integer filarg, geth call cpout (afd, fd) call close (fd) } else { call putlin (name, ERROUT) call remark (": can't create.") errcnt = errcnt + 1 call skipf (ai = i + 1) if (equal (name, fname (1, i)) == YES) { fstat (i) = YES return (YES) } return (NO) end #-t- filarg 3_5 ascii 08/30/83 12:30:00 #-h- formhd 8_93 ascii 08/3, i) call stcopy (name, 1, head, i) for (l = length(name) + 1; l <= NAMESIZE; l = l+1) { head(i) = BLANK i = i + 1 } for (l = sektoc(seksz, text, MAXLINE) ; l <= 10 ; l = l + 1) { heatine to read or copy an archive element subroutine fromar (fromfd, tofd) filedes fromfd, tofd # tofd == ERR if output to be discarded include carch character line(MAXLINE) integer getlin, elend, here(2), ans integer sekcpy, acopy BIN in- see if string is end of archive element integer function elend (str) character str (ARB) integer i integer equal include carch string tstr TRAILER_STRING for (i=1; tstr(i) != EOS; i=i+1) # look for trailer sdr integer done afd = open (aname, READ) if (afd == ERR) call cant (aname) while (gethdr (afd, hdr, name) != EOF) if (filarg (name) == NO) call skipf (afd) else { if (verbos == YES) { fd) } } if (done(junk) == YES) break } call notfnd return end #-t- extrac 9_13 ascii 08/30/83 12:30:00 #-h- filarg 3_5 ascii 08/300/83 12:30:00 ## formhd - form version-specific portion of header line subroutine formhd (head, i, name, type, seksz) character head (ARB), name (ARB) integer i, type integer seksz(2) integer l integer length integer sektocd(i) = BLANK i = i + 1 } call stcopy (text, 1, head, i) call stcopy (blanks, 1, head, i) if (type == ASCII) call stcopy (astr, 1, head, i) BIN else if (type == BINARY) BIN call stcopy (bstr, 1, head, i) else cteger bncopy if (ccount != CLINES) { # then we can copy without scanning for trailer if (ccount == CSEEK) ans = sekcpy (fromfd, tofd, seeksz) else { ifelse(BIN,ON, if (typef == BINARY) ans = bncopy (fromfd, tofd, sizef)     else ,) # ifelse ans = acopy (fromfd, tofd, sizef) } if (ans == EOF) { errcnt = errcnt + 1 call remark ("unexpected end of archive file.") } switch (intrls) # handle any trailer { case YES: # must find a trailerence of trailers is strictly monitored by # the cases YES and NO above. case DONT_KNOW: # might find a trailer { call note (here, fromfd) if (getlin(line, fromfd) == EOF) return if (elend(line) == YES) intrls = YES el 11_90 ascii 08/30/83 12:30:00 ## getfns - get file names into 'fname', check for duplicates subroutine getfns include carch integer ap, fp, len, i integer getarg, getlin, equal character line (MAXLINE) fp = 1  call error ("too many file names.") } else { FOLDF call fold (fname (1, fp)) fp = fp + 1 if (fp > MAXFILES) if (getarg (ap + 1, line, MAXLINE) != EOF) call error ("too many file d #-t- getfns 11_90 ascii 08/30/83 12:30:00 #-h- gethdr 17_0 ascii 08/30/83 12:30:00 ## gethdr - read archive header, prepare output header integer function gethdr (fd, ohdr, name) filedes fd characte errcnt = errcnt + 1 return (EOF) } call savhdr (hdr) len = getwrd (hdr, i, name) # pick up member name savei = i len = getwrd (hdr, i, text) # try to find member size if (type(text(1)) != DIGIT) {  { if (getlin(line,fromfd) != EOF) { if (elend(line) == YES) return # found correct trailer } } # fall through means trailer missing case NO: # trailer prohibited on input return # Note: this case DONT_KNOWse { intrls = NO call seek (here, fromfd) } return } } } else # copy while scanning for trailer { while (getlin(line, fromfd) != EOF) { if (elend(line) == YES) return else {  for (ap = 3; getarg (ap, fname (1, fp), FILENAMESIZE) != EOF; ap = ap + 1) if (fname (1, fp) == MINUS & fname (2, fp) == EOS) { while (fp <= MAXFILES) { len = getlin (fname (1, fp), STDIN) if (len == EOF) names.") } fcount = fp - 1 for (fp = 1; fp <= fcount; fp = fp + 1) fstat (fp) = NO for (fp = 1; fp < fcount; fp = fp + 1) for (i = fp + 1; i <= fcount; i = i + 1) if (equal (fname (1, fp), fname (1, i)) == r ohdr (ARB), name (ARB) include carch character text (FILENAMESIZE), hdr(MAXLINE) character type integer i, savei, j, len integer getwrd, equal, getlin, ctoi integer isseek string hdrstr HEADER_STRING string astr ASCI i = savei # back up: that wasn't a size # no valid size => must find trailer # Note: rswich makes no difference here. switch (intrls) # trailer already required? { case YES: # ok, no problem case NO: # trailer prohibited {  occurs at most once, that # is, at the end of the first archive element. It is # assumed that either all or none of the elements # carry a trailer. Therefore case DONT_KNOW # always resets intrls to YES or to NO. From then on, # the presif (tofd != ERR) call putlin (line, tofd) } } } call remark ("archive integrity in doubt - missing trailer.") errcnt = errcnt + 1 return end #-t- fromar 15_69 ascii 08/30/83 12:30:00 #-h- getfns  break fname (len, fp) = EOS # remove the NEWLINE FOLDF call fold (fname (1, fp)) fp = fp + 1 } if (fp > MAXFILES) if (getlin (line, STDIN) != EOF) YES) { call putlin (fname (1, i), ERROUT) call remark (": duplicate file name.") errcnt = errcnt + 1 } if (errcnt != 0) call error ("fatal errors - archive not altered.") return enI_STRING string bstr BINARY_STRING if (getlin (hdr, fd) == EOF) return (EOF) FOLDF call fold (hdr) i = 1 len = getwrd (hdr, i, text) if (equal (text, hdrstr) == NO) { call remark ("archive not in proper format.") errcnt = errcnt + 1 call putlin (name, ERROUT) call remark (": missing size.") return (EOF) } case DONT_KNOW: intrls = YES } ccount = CLINES sizef = 0 } else # there is a size here    { if (rswich == NO) { # take note of the size if (isseek(text) == YES) { j = 1 call ctosek (text, j, seeksz) ccount = CSEEK } else { j = 1 sizef = ctoi(text, j) ccount = CCHARS } } } len = -t- gethdr 17_0 ascii 08/30/83 12:30:00 #-h- isseek 3_66 ascii 08/30/83 12:30:00 ## isseek -- check whether next word is a seek offset integer function isseek (text) character text(ARB) integer i, ctoi, hdr (head, name, seksz) character head (ARB), name (ARB) integer type integer seksz(2) include carch integer i, now (7) integer gettyp character text (MAXLINE) string blanks " " type = gettyp (name) NOTBIN if (typ), 1, head, i) head (i) = NEWLINE head (i + 1) = EOS return end #-t- makhdr 7_28 ascii 08/30/83 12:30:00 #-h- maktrl 3_19 ascii 08/30/83 12:30:00 ## maktrl - make trailer line for an archive message if member isn't in archive subroutine notfnd include carch integer i for (i = 1; i <= fcount; i = i + 1) if (fstat (i) == NO) { call putlin (fname (1, i), ERROUT) call remark (": not in archive.") ave the file name len = getwrd(hdr, i, save) # skip the file size len = getwrd(hdr, i, save) # skip the file type call scopy (hdr, i, save, 1) # save all the rest call formhd (hdr, i, name, typef, offset) call scopy (save, 1, hdr, i - 1) # replacgetwrd (hdr, i, text) # pick up member type if (equal (text, astr) == YES) typef = ASCII else if (equal (text, bstr) == YES) { BIN typef = BINARY BIN if (ccount == CLINES) { errcnt = errcnt + 1 call putlin (name, ERROUT) j character type j = 1 call skipbl (text, j) if (type(text(j)) != DIGIT & text(j) != MINUS) return NO i = ctoi(text, j) if (text(j) != UNDERLINE) return NO j = j + 1 # skip past UNDERLINE if (type(text(j)) != DIGIT e == BINARY){ NOTBIN errcnt = errcnt + 1 NOTBIN call putlin (name, ERROUT) NOTBIN call remark (": binary file, can't handle.") NOTBIN return} call szseek (name, seksz) call formhd (head, i, name, type, seksz) mber subroutine maktrl (head, trail) character trail (ARB), head (ARB) integer i, j, len integer getwrd include carch string tstr TRAILER_STRING i = 1 len = getwrd (head, i, trail) # skip over header string  errcnt = errcnt + 1 } return end #-t- notfnd 2_95 ascii 08/30/83 12:30:00 #-h- remkhd 4_98 ascii 08/30/83 12:30:00 ## remkhd -- put file size (as seek offset) into existing hdr subre the rest return end #-t- remkhd 4_98 ascii 08/30/83 12:30:00 #-h- replac 10_17 ascii 08/30/83 12:30:00 ## replac - replace or delete archive members subroutine replac (afd, tfd, cmd) filedes afd,  call remark (": binary element, can't handle.") return (EOF) } } else typef = LOCAL call formhd (ohdr, j, name, typef, seeksz) call scopy (hdr, i, ohdr, j - 1) # copy rest of header return (YES) end #& text(j) != MINUS) return NO return YES end #-t- isseek 3_66 ascii 08/30/83 12:30:00 #-h- makhdr 7_28 ascii 08/30/83 12:30:00 ## makhdr - make header line for an archive member subroutine mak i = i - 1 # overwrite the NEWLINE left by formhd call stcopy (blanks, 1, head, i) call getnow (now) call fmtdat (text(1), text(25), now, 0) call stcopy (text(1), 1, head, i) call stcopy (blanks, 1, head, i) call stcopy (text(25 j = 1 call stcopy (tstr, 1, trail, j) call stcopy (head, i, trail, j) return end #-t- maktrl 3_19 ascii 08/30/83 12:30:00 #-h- notfnd 2_95 ascii 08/30/83 12:30:00 ## notfnd - print 'not found' meoutine remkhd (hdr, offset) character hdr(ARB) integer offset(2) include carch character save(MAXLINE), name(FILENAMESIZE) integer len, getwrd, i i = 1 len = getwrd(hdr, i, save) # skip the header string len = getwrd(hdr, i, name) # stfd character cmd include carch character hdr (MAXLINE), trl(MAXLINE), name (FILENAMESIZE) integer bfrhed(2), bfrfil(2), after(2), diff(2), afthed(2) integer gethdr, filarg, subsek, cmpsek while (gethdr (afd, hdr, name) != EOF   ) if (filarg (name) == YES) { if (cmd == UPDATE_CMD) call addfil (name, tfd) if (verbos == YES & cmd == DELETE_CMD) { call putlin (name, STDOUT) call putch (NEWLINE, STDOUT) } OUT) call error (": can't position new header.") } call seek (after, tfd) call maktrl (hdr, trl) call putlin (trl, tfd) } return end #-t- replac 10_17 ascii 08/30/83 12:30:00 #-h- savhdr fd, tofd, seeksz) filedes fromfd, tofd # tofd == ERR if output discarded integer seeksz(2) include binbuf integer readf, writef, len, here(2), target(2) integer subsek, sektoi, j, yet(2) sekcpy = YES call note (here, fromfd) calinput data call seek (target, fromfd) return end #-t- sekcpy 7_25 ascii 08/30/83 12:30:00 #-h- seknrm 2_6 ascii 08/30/83 12:30:00 ## seknrm -- normalize seek offset subroutine seknrm (offset) ter str(ARB) integer gitoc, addset sektoc = gitoc(offset(2), str, len, -10) + 1 if (addset(UNDERLINE, str, sektoc, len) == YES) sektoc = sektoc + gitoc(offset(1), str(sektoc), len - sektoc + 1, -10) sektoc = sektoc - 1 return e 1_22 ascii 08/30/83 12:30:00 ## skipf --- skip current archive element on file afd subroutine skipf (afd) filedes afd call fromar (afd, ERR) return end #-t- skipf 1_22 ascii 08/30/83 12:30:00 #-h- subsek call skipf (afd) } else { call note (bfrhed, tfd) call putlin (hdr, tfd) call note (bfrfil, tfd) call cpout (afd, tfd) call note (after, tfd) if (subsek(after, bfrfil, diff) < 0) { call putlin (na 2_4 ascii 08/30/83 12:30:00 ## savhdr - save current header subroutine savhdr (head) include carch character head(ARB) integer i, len integer getwrd i = 1 len = getwrd (head, i, chead) call skipbl (head, i) call scl addsek (here, seeksz, target) if (tofd != ERR) { # there's really a file to copy to for(;subsek(target,here,yet)>0;call note(here,fromfd)) { j = sektoi(yet) if (j == ERR | j > BINARY_BUFSIZE) j integer offset(2) integer o1 o1 = offset(1) if (o1 > 127) { offset(2) = offset(2) + (o1/128) offset(1) = mod(o1, 128) # maximum of 127 } return end #-t- seknrm 2_6 ascii 08/30/83 12:30:00 #nd #-t- sektoc 3_71 ascii 08/30/83 12:30:00 #-h- sektoi 2_37 ascii 08/30/83 12:30:00 ## sektoi - convert seek offset to positive integer if possible integer function sektoi(offset) integer offset(2) integ 4_11 ascii 08/30/83 12:30:00 ## subsek -- subtract seek offsets integer function subsek(subtrh, minuen, differ) integer subtrh(2), minuen(2), differ(2) integer top(2), bottom(2), cmpsek top(1) = subtrh(1) top(2) = subme, ERROUT) call error (": inconsistent seek offsets.") } call remkhd (hdr, diff) call seek (bfrhed, tfd) call putlin (hdr, tfd) call note (afthed, tfd) # check placement if (cmpsek(afthed, bfrfil) != 0) { call putlin (name, ERRopy (head, i, chead, 1) return end #-t- savhdr 2_4 ascii 08/30/83 12:30:00 #-h- sekcpy 7_25 ascii 08/30/83 12:30:00 ## sekcpy - copy file using seek offset to know when done integer function sekcpy (from= BINARY_BUFSIZE len = readf(buf, j, fromfd) if (len == EOF) { sekcpy = EOF break } len = writef(buf, len, tofd) } } else # just skipping (discarding) the -h- sektoc 3_71 ascii 08/30/83 12:30:00 ## sektoc -- convert seek offset to character string integer function sektoc (offset, str, len) # return no. of chars needed integer offset(2), len characer o2 o2 = offset(2) if (o2 >= 256 | o2 < 0) # that is, if some bit 8-15 is set sektoi = ERR else sektoi = (o2 * 128) + offset(1) return end #-t- sektoi 2_37 ascii 08/30/83 12:30:00 #-h- skipf trh(2) bottom(1) = minuen(1) bottom(2) = minuen(2) call seknrm (top) call seknrm (bottom) if (top(1) < bottom(1)) { # then borrow from top(2) top(2) = top(2) - 1 top(1) = top(1) + 128 } differ(1) = top(1) - bottom(1) differ(2) =    top(2) - bottom(2) return (cmpsek(subtrh, minuen)) end #-t- subsek 4_11 ascii 08/30/83 12:30:00 #-h- szseek 2_59 ascii 08/30/83 12:30:00 ## szseek - find size of file in terms of a seek offset subroutine szaracter hdr (MAXLINE), name (FILENAMESIZE) integer gethdr, filarg integer done afd = open (aname, READ) if (afd == ERR) call cant (aname) while (gethdr (afd, hdr, name) != EOF) { if (filarg (name) == YES) ilename call putlin (name, STDOUT) if (verbos == YES) { # print other info only if asked for (; chead(i) != NEWLINE & chead(i) != EOS; i = i + 1) call putch (chead(i), STDOUT) } call putch (NEWLINE, STDOU # try to create a new archive afd = create (aname, READ) # afd = create (aname, WRITE) # if (afd == ERR) # call cant (aname) # call close (afd) # close and reopen to mark EOF # afd = open (aname, READ) i(amove (tname, aname) == ERR) { errcnt = errcnt + 1 call remark ("can't rename/move temp file.") } } else { call remark ("fatal errors - archive not altered.") junk = remove (tname) } returnd versions, and data about the contents can be listed. If a minus sign ('-') is given as a file name, further file names are read from the standard input, one file name per line. Files that are to be added to an archive must exist as files with tseek (name, offset) character name(ARB) integer offset(2) filedes fd, open fd = open(name, READ) if (fd == ERR) call cant (name) call seek (END_OF_FILE, fd) call note (offset, fd) call close (fd) return end #-t- szseek call tprint if (done(junk) == YES) break call skipf (afd) } call close (afd) call notfnd return end #-t- table 4_37 ascii 08/30/83 12:30:00 #-h- tprint 4_7 ascii 0T) return end #-t- tprint 4_7 ascii 08/30/83 12:30:00 #-h- update 10_117 ascii 08/30/83 12:30:00 ## update - update existing files, add new ones at end subroutine update (aname) character aname f (afd == ERR) call cant (aname) } junk = mkuniq (tprefx, tname) tfd = create (tname, READWRITE) if (tfd == ERR) call cant (tname) call replac (afd, tfd, UPDATE_CMD) # update existing members for (fp end #-t- update 10_117 ascii 08/30/83 12:30:00 #-t- ar.rat 248_107 ascii 08/30/83 12:30:00 #-h- ar.doc 82_80 ascii 08/30/83 12:30:00 .so manhdr .hd AR (1) 06/06/83 archive file maintainer .she name given. Files that are extracted from an archive will be put onto files with the name given. Files that are added to archives can, of course, be archive files themselves. There is no (theoretical) limit to the number of files that can be nest 2_59 ascii 08/30/83 12:30:00 #-h- table 4_37 ascii 08/30/83 12:30:00 ## table - print table of archive contents subroutine table (aname) character aname (ARB) filedes afd filedes open ch8/30/83 12:30:00 ## tprint - print table entry for one archive member subroutine tprint include carch character name (FILENAMESIZE) integer i, len integer getwrd i = 1 len = getwrd (chead, i, name) # grab the f(ARB) include carch filedes afd, tfd filedes open, create integer fp, junk integer remove, amove, mkuniq character tname (FILENAMESIZE) string tprefx "arctemp" afd = open (aname, READ) if (afd == ERR) {  = 1; fp <= fcount; fp = fp + 1) # add new members if (fstat (fp) == NO) { call addfil (fname (1, fp), tfd) fstat (fp) = YES } call close (afd) call close (tfd) if (errcnt == 0) { if y ar [-](d|p|t|u|x)[v][r] arcname [files] .ds Ar collects sets of arbitrary files into one big file and maintains that file as an 'archive'. Files can be extracted from the archive, new ones can be added, old ones can be deleted or replaced by updateed this way. Thus ar provides the utility necessary to maintain tree-structured file directories. Ar is invoked by the command line .ti +10 ar command arcname [optional filenames] where 'command' is any one of 'dptux', optionally concatenated    with 'v' and/or with 'r', specifying what operation to perform on the archive file named 'arcname'. (For consistency with other tools, the command may be preceded with a minus "-" sign.) The possible commands are: .in +10 u - Update named archivechive. p - Print named files on standard output. Using the 'v' option will cause the file name to precede the file. r - Read a (possibly) damaged archive. This option causes the archiver to try harder than usual to read a spoiled archive. (Editithe above commands, and will cause the archiver to print additional information, generally file names, on the standard output. Its specific action for each command has already been described. .in -10 The optional filenames in the command line specand chap3 .sp .ti -5 ar -xv source rtnA rtnB .br From the archive file "source", extract the members "rtnA" and "rtnB" and put them into files with the same name. Print the member names as they are extracted. (The minus sign "-" preceding the "xv"e (possibly invalid) format information stored in "arc". .in -5 .fl A file whose exact name is based on 'arctemp' is created and subsequently deleted for each run. .sa The Unix commands 'ar' and 'ls' in the Unix manual .di archive not in proper fominate each file by a special line called a "trailer". The message is caused by the lack of a trailer line when one was expected. This archiver can read old-style archives a la Kernighan & Plauger, which lack trailers. However, if ANY archive elemen by replacing existing files or adding new ones at end. If the 'v' option is used, file names will be printed on the standard output as files are written to the new archived file. x - Extract named files from archive. Put onto file of the same nameng an archive can spoil its format. Some other archivers create archives in formats that this archiver has trouble reading.) Archives created or updated by this archiver will not need this special handling unless they are later spoiled. t - Print tify individual files that may participate in the action. If no files are named, the action is done on ALL files in the archive, but if any files are explicitly named, they are the ONLY ones that take part in the action. (The 'd' command is an except is optional.) .sp .ti -5 ar t library .br List all the members of the archive file "library". .sp .ti -5 ar p book | format .br Extract all the members from the archive "book" and send them to the formatter. .sp .ti -5 ar uv somefile a b c |rmat .in +10 The basic problem is that archive didn't find a header line where one was expected. Typical reasons include misspelling the file name, using an existing file (not in archive format) on a creation run, and referencing an archive file that is found to have a trailer, then this archiver reports an error unless ALL elements have a proper trailer. .in -10 binary element, can't handle .br binary file, can't handle .in +10 This version of the archiver isn't built to handle binary fil. If the 'v' option is added, file names will be printed on the standard output as files are extracted. d - Delete named files from archive. If the 'v' option is used, file names will be printed on the standard output as they are deleted from the arable of archive contents. Normally, the table will contain only the file name. If the 'v' option is used, the table will also contain the file's length, type, and date and time of last change. v - Verbose. This command may be concatenated to any of ion--files may be deleted only by specifying their names.) .sp Binary files are NOT allowed in an archive. .ex .in +5 .fi .ti -5 ar u book chap1 chap2 chap3 .br Create an archive file called "book" and insert 3 members into it -- chap1, chap2,  rm - .br Update members "a", "b", and "c" in archive file "somefile", and then delete them from the file system. .sp .ti -5 ar uvr arc one two three .br Insert three members into the archive file "arc", while ignoring (and correcting) some of tht has been modified directly (say with the editor). For the latter case, try again using the 'r' option. .in -10 archive integrity in doubt - missing trailer .in +10 Some archives (including all those produced by this version of the archiver) teres, and it distrusts archive elements marked "binary". .in -10 can't rename/move temp file .in +10 The scratch file named above was successfully generated but could not be renamed or copied to its final destination. Possibly there isn't enough room    for the new file, or there is some other file system problem. .in -10 ctosek: invalid seek offset .in +10 This indicates a logical error in the portion of code which extracts seek offsets from header records. .in -10 delete by name only .in . An archive is never altered unless EVERYTHING has run properly. .in -10 too many file names .in +10 The maximum number of files that can be handled is set by the parameter "MAXFILES" in the source code. .in -10 unexpected end of archive file the archiver is in error. Possibly the command is wrong or the archive file name has not been given. .in -10 'filename': can't add .in +10 The file specified by 'filename' doesn't exist or can't be opened (e. g. is locked). .in -10 'filename' After processing an archive element without a trailer, this archiver insists that ALL elements in this archive must lack trailers, and therefore that they must have proper sizes recorded. But now it has found an element with no size recorded. This cDavid Hanson (University of Arizona). .bu With this version only TEXT files can be archived. When the update and print commands are used, the files are updated or printed in the order they appear on the archived file, NOT the order listed on the ecorded sizes and to rely strictly on header-trailer matchups to delimit elements when reading an archive. In any event, it is assumed that either ALL or NONE of the elements in an archive carry a trailer, and exceptions are treated as format errors. +10 For user protection, files are allowed to be deleted from an archive only by specifying each file name. .in -10 duplicate file name .in +10 A file was listed more than once when calling the archiver .in -10 error in main: can't happen .in .in +10 The last element in the archive had a size recorded, but the archive ended before the whole element was read. This may reflect a truncated archive or an incorrect notation of file size. Try option 'r' to aid reading the archive: if it works: can't create .in +10 The archiver could not generate a local file by the name of 'filename'. Probably the archiver's internal file buffer space has been exceeded. .in -10 'filename': can't position new header .br 'filename': inconsistent seean result from concatenating archives of differing styles, or from otherwise monkeying with archive internals. .in -10 'filename': not in archive .in +10 The archiver could not locate the file specified by 'filename' in the archived file. .in -10 command line. This version creates archives having headers and trailers. Each header records the file size in terms of seek offsets in a format peculiar to this archiver and to the CP/M-80 implementation of the tools. Other archivers attempting to r The Unix archiver allows files to be positioned in the archive, rather than simply added at the end as ar does. This is done by adding the following commands: .br .in +10 m - Move specified files to end of archive ma posname - Move specified f +10 This indicates a logical error in the portion of code which parses the command line. See the main program. .in -10 fatal errors-archive not altered .in +10 This message is generated whenever one or more of the other errors have been detected, then the cause was the latter. Something indeed may have removed data from the archive to cause the invalid format, but if so it wasn't mere archive truncation. .in -10 usage: ar (dptux)[v][r] arcname [files] .in +10 The command line passed tok offsets .in +10 The archiver was navigating around an existing archive or the scratch file using seek offsets, and detected a mistake. This is a profound malfunction, probably reflecting a coding error. .in -10 'filename': missing size .in +10 .au Original code from Kernighan and Plauger's 'Software Tools', with rewrites by Allen Akin (Georgia Institute of Technology), Debbie Scherrer (Lawrence Berkeley Laboratory), Philip Davidson (for Carousel MicroTools), and minor changes suggested by ead these archives should ignore the file sizes and use only the header-trailer pairs to delimit the elements. This version uses the file size (if any) recorded in the header, and reports resulting discrepancies. The 'r' option forces it to ignore riles to position after file 'posname' mb posname - Move specified files to position before file 'posname' r - Replace specified files and place at end of archive ra posname - Replace files and place after file 'posname' rb posname - Replace fil   es and place before file 'posname' .br .in -10 There are some discrepancies between the Unix version of ar and this version. Unix uses 'r'--replace instead of 'u'--update. Unix also requires the user to specify an additional command 'n' when creatå^2Ì v!ƒ´ÒS•‰9 4˜�+ÆPn:*r±'€;M!95O‘€3@!ˆÄgÐ:ÕÌZ5€)ñxË0-Ø@&bˆÄ / %?û3@%Ÿ@ëW1ýhÖ§Åã,À·a 0bÆ*Ä êfx«0€Ä?Øš@ %àÐŽ%ÿ`h}­\Çõ£XŸŒ³Ý„0À ŒðG€°4€@,N>Œ±  €q8‡€3lhôµsÖƒÖ±ý>/f»ë5�-` |^2Ì v>Œ¼( ˜¤± XÖ§Åã,À·aàËÃLX¦*S€)ˆxǘcz1¥˜Ã€ÌM€f! ,;¦1îb@àË0í¸Å  cBèà`!f€ ™CÄœŒ–€DõTè˘ CTOIŒš�D5Dô8ÊpGETLINŒà€dtUEu$HÎàEQUAL˜•‚0!�bXFH*zª¢a$e쪨("©Fj€2šZJ‚deì ¡¦'©¢Ía€£ Q9Zp…TÒdü#3ÄX“( š‹€G@2‚’²rz$à…“RÐT‘É dÔ´$rHy=I1% (°ÑÓQSDX\A–�€K‚@RÐ0 pPžZ. 9Ë@À%Á€©h¸4A-—% `¨; M57‚PÈ‹€p(47…Óæq`P‹€p«€:Ä8<š °¬U€@",¯`ð¸„`0Ž`h*À`,+uаdE„@X<Ö*À “óXŸa0V?5…Í` |C„ÀÂ8 šp4`0HGÿ†OÂ31¼E€ÀtXbj*À Ú‚É”FNÀ2ªrbJr\ed")£)"¢ÍW# I1MRp…’S’‘PÕ d”ä¤T5Hy=I1% (°ÑÓQSDX$Ö"Á`H‹€ °høFf7ŠB0v"šj*o Ÿ„fcx‹€Ï u«˜þ´kSâñ–[°€V f€,1/`ðŒE‡8pš°¸ôµsÖ�` |^2Ã` v.7�N‚y˜@m2›Mç#ȺZ¸ing a new archive. #-t- ar.doc 82_80 ascii 08/30/83 12:30:00 n. Unix uses 'r'--replace instead of 'u'--update. Unix also requires the user to specify an additional command 'n' when creat…‘ÑUS• dtUDTåhy=I1% )¨°ÓÓ‘’Qâ“/ %>(ð´ÒS•‰"Š`M!95N(°Ó•“â€@9X’\RT–€KŠ€2Ð qX Z.,K@%Å Ih¸¸‹-—€e ã„´\b –€KŒ€’Ð q˜Z.4*K@%Æ Yh¸ØA-—€e ã€ ´\rX–€KŽ€’Ð qØZ.<+K@%Ç  h¸ø‡-—€% ä”´\‚Láp f€³èjæ?­Àø¼e˜ì u‰­` |^2Ì vÄ ìÍ£(; =9%Œ0À �èë5€M` |^2Ì v*Ä / %?ú€DY„`ì4ôäd”~*Ì Ð†LG@GX�¬kSâñ–`[°€ðeˆÀXŒ¬µ�éñ–`[°€Ö#7…ÓæqHG„DY„#‰@0^JöfÐ`X«0€Äg!Ö# ±¦€ÌVÀX`Åu‰ÀF°>/ EU4ˆy=I1%E‚@b,*Á`Bh«€:ÅX$š°&PÉ)ÉH¨j“Q èPUSHœ„ÔÔ 5õy=I1% (°ÑÓQSDX$Ö"Á`H‹€ °høFf7ŠB0v"šj*oþÿ Ÿ„fcx‹€K„À0ˆ´|Uƒ@XT„ÀX,Ö*Á ÐE€@8Dš °&P.0Ë ŠH(j‘“� ¤Ššœž‰5?Ž€5õ À…”‘SS“Ñ e$TÔäôHy=I1% (°ÑÓQSDXU€Âñ–[°€f€®?€", 8šp(„f€:!¶€†L_€`ư‡@À&5à ™@¨ƘŒˆ€ETT¹Œˆ,É©êɨd‘”° ¦–’ „™„©êªŠd‘™p ž–‹©ÈH‰êdˆ“0PkvÉ©h*Hä“€…“PRÓÕ dÔ´Å5Hy=I1% (°ÑÓQSDX$B3@ >�Ö®cúѬO‹ÆX<nÂ%Â3 ¸NtM†ÃyŒÂt2ˆ †“q!ÃÀ Ðb´Âà¬Í ‹ € °˜¬UƒÀiSyé8g>�Ö®cúÐzÖ?§ÆXlnÂX\Fëa0È‹ € B?ûü2"À¬&)ŠÝb¬?ÌÆ÷X«Äg!Vˆ°˜¸€Lc@X\E€@2‚ÀɨILENŒ£TE4tUHËERRORŒ´€TĔ䵮Pt$§%"¡ªN…–�PÕ e…E$5Hy=I1% (°ÑÓQSDX$Ö"Á`à‡€3@V ?ÌÆ÷X«€„fcyí*o='å–€K�€rÐ r‚Z.D(K@%È h¹©-—#€% ä€´\’E–€K’€ Ð rXRZ.LK@%É h¹8©-—'€e åt´\¢D–€K”€Ð r˜2Z.T$Ë@%Ê 9h¹X©-—+€% å€´´\²E–€K–€ RÐ rØ Z.\'Ë@%Ë 9h¹x‹-—/€% ¨79X“€ ÆY€nÂ3�óüeÀ\f»bP�õ Ÿ†Pvzr2J? a€pÖ$kZÀø¼e˜ì |AØiÊŠIˆ|†Lm@GX�¬kSâñ–`[°€V%Áxi)ÿÔ2"Ì #a§§#$£òVafÓ01Íb@°¬O‹ÆY€nÂX”#ᤧÿPÈ‹0€nÐFÃONFIGê`¬Âͼ`,0cì:Ä€ `CXŸŒ³Ý„ ±(F ÃIOþ ‘a€; =9%À ³6†0À ˆø@ ‹€ °øFf7ºÅX$ö•7ž“†sèjæ?­Àø¼e‚Àì “1,`h"À ¬Í2€ÀɘUNLINKŒƒ€då…DäôHÉàDSFREEšŸ€G@2’*jrz$à…“–“Ñ då…DäôHy=I1% (°ÑÓQSDX$U‚@Â31¼Rƒ°ÑÓQS÷ødü#3ÄX“( š‹€G@2r¢rz$à…”•““Ñ e%däôHy=I1% (°ÑÓQSDX$U‚@Â31¼Rƒ°ÑÓQSx¬Êd '3 ºZ:! Ðb6*Á ‘+ÁØhŠi¨©¿ûü2"Å ¬ëbИŒä*Å`bðV uбxÌFrb°� ˆ±ˆ«€„fc{¬UŒ@b3�«€°&Pf¨Šh誓@2BQT”“Ô¦®Ð š‚–˜¦©8…‘”‘SÕ de$TÅ5Hy=I1% (°ÑÓQSDXU€@Â31¼Rƒ°ÑÓQS÷ødü#3ÄX U€Àb¬~™�ç´©¼ôœ3Ÿ@ëW1ýhÖ§ÆXn çÐ:ÕÌZ5€)ñxË€-Ø@…þÿ`LÄÌUƒÀÂ31¼Rƒ°ÑÓQSxdü#3ÄXLF}­\Çõ£XŸŒ°èÝ„ °høFf7ŠB<2"ÃÀ¬D&аH¬U‡€ ‹ € °H4a01_a0X«€„fcyí*o=' çÐ:ÕÌZZÇôø¼e‡@ì U‚ÀÂ31¼E„À&5àE…ÀX\Ö*Â`´©¼ôœ3Ÿ@ëW1ýh=kÓã,:·a¬.#uаhøFf7†DXlU…À"±   [¬U‚@",<*Ã`��þÿ Ÿ„fc{¬U‡€b3�« €ÄX\‡p@&; ÀV`L €2úÕÐã0À19Q"2ÉU&¤ 1Ð °¨¤‚†©8…PSSÕ‘`TÔõdXy=I1%E‚@b,!~¿ÄX#†€X$š ³G °X6Š ³ Ö§ÆY”u˜ÀÀ6°>!Ì  axË3-Ø@«€2f'ààË €°ÈXO‹ÆY”nÂXde™@8dÞO™Ã",Î:Ì zo §ÌÑÓQSDX$#ᤧý V f€,:ú` aþŸ`ðÖ c?Óâ¶Œ°€Ý„_¯ñdÌJ€?Hš  ì4ôäd”:!‚ðÒSþ�4AØiéÈÉ(þpUa¢)¦¢¦ð@ˆaŒ†’Ÿô€8Dš@dÊÀ#!@A -962nÑÕI#( ’2¬ÒÑf«àÐ †®ˆ’¥8…‘Ñ�UV dtE$Uˆy=I1% (°ÑÓQSb“/ %p(4—; d¼.Ÿ3ˆ±0ôµsÖ�` |e�€ì U�@„ÐŽ:`Pm-˜­«ÅXî!Ä€ Г(E˜¤€@”šž¬’†IO‰ê©Ñ˜�’¨ž‡.©)Ȉ«ð(cÞ FC@" ¤d”*¨%§&’LJ@Ê0CTOC˜ž@–À†‚œ©hÈiéÈh*“°X2æPÓÔÑf°@1Ð Žˆ¤‚ª±8…‘Ñ”“`dtE%$Øy=I1% (°ÑÓQSDX$Ö"Á`¬~™�â�Œ†ˆ¦šŠ›4´äØÈ€CD$ŒŽd$Dõ2DˆÈ|5bŽ€dtUDäDYÀ…‘ÑUT dtUEE•y=I1% )0ðÒSÄX$#ᤧý V f€,:û  bkXŸ`Ð×ÜkÚÀøË¾ØX†Ö§Ä88L!Á  axË€-Ø@„x`LÄìu÷@ÄÆ°>2Á ¯¸Ö'µ€)ñ–}°±Q¬Oˆpp˜Cƒ@Âñ–[°€ð"À ™‹€„`L @U€@1�   ‚†–œ›5„Ž€dtUEE•dÍ¡  Í €à˰X=kÓã,Š·a¬o §Ìâ, £ C�@ ë`¼4”ÿÿþo §Ìá“ñ¼.Ÿ3ˆ°(ôµsÖ�` |^2È  v.FK[@9š0À ‹XŸ@fÔpÖð�x]>g Ÿ�átùœE�@5Ü#^€8›`X#ÝÀ átùœ2~7…ÓæqÙ`�™àPmŸ` �7…ÓæpÉøÞO™ÄXm@6àC�@¶øu€€ áGàpVGf€gù¼.Ÿ3ˆ°(«lЇ€3jà«€^ðÉôµsÖ�` |^2È  v!³ LÛþ1»`p‹€0ë Åè \¢.–æ�rˆ6ûÌ~@GXx2À@ ;j1ÃdÊ€&:` f8 &§«$¡’Lo€€` �°1˜#8 Y9]1%:2,”US£4`YAUQ%9R3¢”‘SPT’ã) L‘ækÌ©©Š“€…’TÓÔS d•4õTèy=I1% )0ðÒSÄX$#ᤧý á‘ifpð«4€%šÀøË3-Ø@«€LbXdx2à :”1‹a�°5¬O‹ÆY”nÂX“1¥f@°>/fP»ãàh:Ã@|–kSâñ–e[°€Ž>á h"À ™ŽxÆÜ" °H4aPŒF}­\Çõ£XŸŒ³(Ý„ °&cøX,š°¸ŒF#>�Ö®cúѬO‹ÆY”nÂX“1 f@°>2Ì ¬ÆÖ§Ä9”L/f`»%¡àâð´<\`R–‡€KŒ@òÐð q�>Z.3KCÀ%Æ€ hx¸ÔA-—¥¡àãp|´<\pW–‡€KŽ@Ðð qЂZ.;KCÀ%Ç€9hx¸ô³-—å¡àãð´<U€@Â31¼Rƒ°ÑÓQSxdE�8$U� Dà�h#b Ž ˆ²dX«€3@ˆ!Á ÐE‰b1ôµsÖ�` |^2È@ v!Á ÐbÌ*Ä€�ÿ¿Ã'á˜Þ+>�Ö®cúѬO‹ÆX¸nÂÁ–"`�ðŒÌo„÷ødE‹À ¬U‹Àb3“ ˜“€‚C,D1H`�ðŒÌo„y dE‹ÀX¼Ö! Ë€ °HøFf7ŠB<2"Æ ¬bëâ ho §Ìâ,L}­\Çõ ]>/b໿ßâ,ɘ̀ ±0¤R)„B`ˬU‚@Â31¼2"ÄÀ��þÿ ˆ±xG€ ±x4€ÍX #ƒ@",^X,Ö*Åà  À…RS T„TÅHy=I1% )0ðÒS⚀ =9%(°ÑÓQSeÁ ih¸(É-—€% àÀ´\s–€Kƒ€’Ð px‚Z.2K@% Yh¸Hí-— €% á@$´\*r–€K…€’Ð p¸‚Z.;Ë@%à )h¸hé-— €% áÀ´\:n–€K‡€2Ð pø‚Z. 6K@%Ä h¸ˆç-—€% â@´tùœRð“ðŒÌo`P ÔÝpfÝÐÖ7…ÓæqHG˜DY|À «#€3oàëÂéó8¤#Ç",Ž¡À!"*Èà Ú.:À@ðº|Î)ô@È‹#€iHF–в86™Ž°¼.Ÿ3ŠB>ð2"Èàˆ¨à"¬ŽÍ© #¬o §Ìâ��” ˆ²8¯€„k«#€3k@ëÂéó8¤#ê",ޝ@!ú*Èà Û!² ,Ú81t` àË0éÄÄ|` Ök‡­V f€ `XŸŒ°pÝ„_¯ñdÌEÀ?Hš°&P$É*iê Ä‘�   ‚†–œ›5*Ž€d•4õTéÀ…“ÐÐÓÓ`dÄô44ôØy=I1% )¨°ÓÓ‘’QÄX$Ö"Á`U‚@ ôµsÖƒÖ±ý>2À¬~k ÚÀø‡-…ã,:·aU‚Àb¬Íb," ¬Íâñ–[°€ õþ"À ™Š˜ ˜˜@ `°!4#ƒÀ0vzr2J?!ápf€ 0b~Âà*Í&)`"4Í· .Í ‹€2e `0c¾FB@r’* ¢,g”'¨"§FV€r’*jz±$g`)"§ ¦’FH2‚ Zrle !!§¨,’FUj2z‚Ìe€¡¦'©¢Í[@c 5=Yp…�ÓÔÑ d4Äõ4E(y=I1%E€@Xš2e`�p ˆ¦Œ¤Š‹5 Ž€d4Äõ4E)À…PÕÑT T5tD•(y=I1% )¨°ÓÓ‘’Qâ“/ %>(°Œ†’ŸÖ'á˜Þ#b`*À ±&f€,D#b V"¾Ÿá“èjæ?­­cú|e�€ì Uˆ€n±V ˆ²ø@*ÈqV"ˆ±ÉLjXˆVë`PÈ‹ +ÅYî*Ä€��¼ Ÿ„fcx‹ B0v"šj*oþÿ ˆ²Dd0hæ@Âéó8‹@ëW1ýhÖ§ÆYnÂXˆMâàVf€ 0b*À BhG °(6ŽÌGÀEX°Rÿßá‘@€¬€ÐE€@2ƒ0 ŽðPfÈH‰êdˆQ˜ „ˆž¦H‡èˆj‰èq� ’œˆŠ±1c #9UA-94’c–:M}# IAI6p…‘ÑU‘`dtUDäDXy=I1% (°ÑÓQSb“/ %¹�æñßÀ�)àPmÙ`0HGÿ†OÂ31¼øæÏ®gù½Ö! ‹€i`F©�p(6™@@`p‹qþ>�Ö®cúÐzÖ?§ÆYnÂX Rÿßá‘f€,"}­\Çõ£XŸŒ°àÝ„_¯ñdÌa@X,üÖ5€)ñxË-Ø@D`°h*Á` ÐE„@&3 ¬"#a[¬U‚À",<! b¬"{J›ÏIÃ8‹q«:ÅX$›O@b¬"aŽ`°mJŒ°àÝ„0À �¨²€L~&+ ¬ÍX,š°&PD܈j‰èq�pŽŠ¨¨²¡qÈ誊êH‘�à ’œˆŠ±¬Éˆ©ÈꉞР˜ž†žšI13    &! f˜£«¢$©LhÀÈ FOLDš‰€Ç@2bzzlà…“RÕS’T`dÔµTä•y=I1% )¨°ÓÓ‘’QÄX$Ö"Á`àðt´\ $–ƒ€K„@’Ðp p�’Z.KAÀ ‹€ °X‹ K…€0h´L… †ÃONFIGà ÐU‚ÀX`\4ƒ@%¤ 0¢à¬Í£ ¬"Àáà -7áÀ�)àðm/`ÐX‹€2e°2‚”ÕÓÔf© Ð…T‘PQ U$TDhy=I1%E‚@b,`4ˆ°h„a VuаXøFf7žÒ¦óÒpÎ}­\Çõ õ¬OŒ° Ý„ °h¬C„ XŸa@»aÓ Š0« Ýb¬aPÖaP¸« ÄXH‡D€&) ¬$+>�Ö®cúѬO‹ÆXPnÂ/÷ø‹ 0À ‹Ø« ÄXHc*Â@,É” €FO2:*¢A$ÖP:T‘PQ§…”‘SSÕ‘`e$TÔõdXy=I1% )0ðpØRZ."Ë@%àéh¸x‰-—€% â´\BM–€Kˆ€2Ð qbZ.$"K@%Ä Yh¸˜­-—€% â€´\RP–€KŠ€2Ð qXRZ.,$K@%Å  h¸¸-—€e ãÄ´\bT–€KŒ€Ð q˜Z.4!Ë@%Æ Ih¸Ø¥-—€% ã€´\r–€KŽ€ ’Ð qØ&Z.<)Ë@%Ç IhCŽ€´¨C�@´Àb~:ðÀÖ°>/dp»àP?fÔ€fÔàŠè‡€3@L¡„b€FAÀ2’* ¢,Æ Œ’e$TÔ$¸É8EXITŒ³åUDÄ”èÌPPUTINTŒ¶ääUtÄ”èÍ`PUTCHŒ¹Ô4Äõ4Y«È t)¢ª"§+N…”ÑUSÑ e4UDÔôHy=I1% )0ðÒSÄX$Ö"Á`¬ÍX$ü#3Â0^Jÿÿ ˆ°xùŒkSã,"*Áàæ°>! axË  d$4õ’Hy=I1% )0ðÒSÄXÖ"À`¬ÍX ü#3Â0^J ŸšÀø¼e‚ì “1"`ðŒÌo„z dü#3ÄX#�€Xš5€)ñxË-Ø@«€„fcx¤#ê",*À á˜Þ)ú€ÉøFf7ºÅX$æ#9 °øFf7ŠB> 2"Á`Ö*Á`1ÈU€ÀÂ31¼Ræ‘  ±V 9ˆÎB¬~™�áî`ððUƒÀâ¬ÍXF"ÀÀ :@b,1·`ðàË€0ëÀÆUƒ@n±V ˆ°À¼U†â¬+>Œ°&P>/‰*‰èsP2>Éf¤à1Ð ª –œšI8…QÕÑT TutD•(y=I1% )¨°ÓÓ‘’QÄXÖ"À`¨; =9%΀Âéó8‹@ŽàÀh#`Àà@È‹ ¼à‚*Â@qVàPÈ‹ ‡B¬(waŽ ˆ°°¼U…€â¬~™�â±YôµsÖ�` |^2à v*À š–ªœ’£8…“ÔS‘ dõTäE(y=I1% (°ÑÓQSbš€ =9%E‚@b,.ËAÀ%Âùh8¸D-— å àá0ü´\(?–ƒ€K…@òÐp p°þZ.ËAÀ%Ãùh8¸d-— % àš:ÅX,æ#9:Ï u«˜þ´kSâñ–[°€ õþ"À ™‰ «€„fcx¤#a¢)¦¢¦ÿïðÈ‹@ X«Äg!V ?ÌÆñHG€DXxU‡€b¬ÒSâ�@ M54E‚@0^JÒ`�hÖ§ÆXTnÂ/×ø‹€2f"€¤ÍX0úZ¹�ëAëXþŸaP»a€PV ÷pÈ‹ +ÅXXî*Á€��” Ÿ„fcx‹€ B0v"šj*oþÿ Ÿ„fcx‹ € °˜¬U„@iSyé8g>�Ö®cúѬOŒ°¨Ý„ °˜¤#Á",,!b¬,sœ…XLRÿßá“ðŒÌoa0d˜¿€p`4aÑÐ ‰À† ÃIOú@ ÐÞO™ÄX¸ø-—€¥ ä,´\‚R–€K�€RÐ r>Z.D)Ë@%È Yh¹-€;M!95O‘€3@ˆÄgÐ:ÕÌZ5€)ñxË#€-Ø@¹ Æa7 ΂™„ìeMÇcIÈÞn6™MÇAt´€C’ 4˜� ì4ôäd”~0o §Ìâ,À Í8#@@8šp(4àPfÓ "À`¬|¿Ã'Ð:ÕÌZZÇôøË#€-Ø@«€ -Ø@…úÿ`LÄÔU‚ÀÃÖ3ý>2 ¬ÍgÐ:ÕÌZ5€)ñS ÆXHnÂX$ü#3Â?ÿü2"Áàç°UƒÀâ¬~™�á?ZÀø¼e„@ì U‚@Â31¼#Â@",> °xÞc *Á`ãx]>g`LÅŒU‚@Â31¼#ÿÿÃ",~s>ÅX<î*Á á˜Þá “óXÖ§Åã,"·a¬~™�á`ððUƒÀóà"À ™@˜e4$© ª*,Æp1JdÊ@#'àQH’2Q‘ÒÉ#7€1UM"k’ÈHiê $“€…”‘S�SI e$TäÒHy=I1%E‚@b,!b¬`à*ÁÀ±V f€€Ö*Á ‘WаpÜU‚@bšÂéó8‹€2e“p „ˆž¦H‡©©êÈD“0€bhMQ@# I94’p…•TÓ“I eU´äÒHy=I1%E‚@b,*Á ãx]>ga ã˜g>¹Ÿæ÷X„ f€, ±f€ 0bÖXÖ!À  ÐbðÉ” €FFÀ"J¢zÅì(˜‰À—P š– ‚¨‘…ˆj‰èsXÀèGWDIRœ…“ÐÓÓI dÄô4ôÒHy=I1% (°ÑÓQSbš€ =9%)0ðÒSÄX$Ö"Á`/ %?é °H4kSã,P·a ñ–dÌF_l¬ kSã,P·a¤! ]>/b€»WŒ° ˜Ÿ€Ÿã,1F`Lİ|?}°ðüe÷ÍX,ü#3Å!ýþaÀVb q-tâˆ!Áà ÐB°&PH1x€#!`MRdDLB `ÊèPACKNMŒ¿U44õ™¬ht'¨"§")N…”“ÓT e$ôÕHy=I1%E‚@b,`4ˆ°h«€3@YôµsÖ�` |^2 v*Á ÐbD*Á ±V f€,É” FL€2:*¢bJtd@$© ª*,ÆJ*zª¢™$Ôà:”“ÓT'P0*À ˜Í¨REMOV$Œ�€d•4õâHÈPPACKNMŒÖT4Äõ4Y®t)"¦§«"Î…”ÑUS• e4UDTåhy=I1% )¨°ÓÓ‘’Qâ�M!9X’(¦´Ò�ST† 9QI1\T–€K‚€2Ð pX Z. K@%Á  h¸8‰-—€e á¤´\"E–€K„€Ð p˜Z.*K@% Yh¸X›-— €% á€´\2–€K†€2Ð B< 2"Ëà Y|›Q€X F"À` :º1sàPmLàP!fÕPŽð�h!À  Û4À (Í´` !à Ûv!À  ÛdÀ 4͸€ !ðà Û¦!À  Û”À RÍ»€ !ä ÛÖ!À  ÛÄÀ ^;€ !ê` Ú!À  Ûô:ƒ°Ó•“øõ¬O‹ÆYnÂ8C�´0C�@´HbB:ƒ°ÓÓ‘’Qü(õ¬O‹ÆYnÂ8BÀ*2"zY$×ì:”ÑUSÑ'…•“SÕU eE$ÔõUHy=I1%E€@Xš2e`�p ¨Š¤š’�5 Ž€eE$ÔõUIÀ…•Ô’UQ eu$•DThy=I1%E‚@b,`4ˆ°h„`ðVuаXøFf7žÒ¦óÒpÎ}­\Çõ õ¬OŒ°ˆÝ„ °x­Ö*Á ‘`ÐX« 3@Vˆ°x‰LL€X,ü#3ÄX“(Œ¤eUD4‚Iªøt+©$ª"£N…��ÓÔI(X,Ö!€ ÐF"Á ,0+uаXdE†€XHøæÏ®`y¼"AO¢¬4wa€X«€DXp|:aÀ¸«€Äb,>Œ°€ø2Áà¬Ö…Óâñ–[°€Ö7…ÓæwX…þÿ ºÅX$2~sÆXD¬ kSâñ–[°€Ö`ðð0e„`ƤuƒÀÀ¦°>/aà»`Ð[¬U‚À",0> °ÀÜUƒ@b,> °€ÇUƒ@n±V ˆ°Àë€ °ÀÜUƒÃñ—ÝFXh|a°ð¸e‡€ã,D*ƒ°ÑÓQSx E ˆ°hG€@h‚ðÒSþ�‡ 3i¨Ë€Óâñ–([°€1šaÐx]>gŠE"‘HD ŸFXtÞO™Ýb¬b�ÃàRÍ ‹ € °¨Eöÿ Ÿ@ëW1ýhO‹ÆX nÂXT#‡@",R~sÅX¤î~kÀø¼eŠì U…@8t2"Å ñV);ÌA@EXTF"  ;¢1æ€@,>   Œ°à€px†ÃONFIGê` ÐúZ¹�ëAëXþŸŒ±@Ý„q4aÀKÓâñ–([°€Ž#áàh+>�Ö®cúѬO‹ÆX nÂX|¬OŒ±@Ý„ °XøFf7ŠÝb¬b�*Å ±f€`Öµ€)ñxË-Ø@ùþ2À ™��ë °ØÅä†LW€Xuc‚:ÀÁ–aÒ°Ž ø$2Ã@ ; 1�a°±ý¬O‹ÆX nÂã,Ãᤧð�ÉøzÖ?§Åã,·aE€@`ÄdB°ĈU€@2€À ©pt$© ª*,Î…•T“RS eDU$Ô”èy=I1%E€@%À`Ih¸©-—€e `à`Ô´ \–�€@Vuˆp4dÊ#!À Q=bMDÀ# QI5%:p…“RÔU dÔµDˆy=I1%E€@b,!€X" °4`°èjæ?­­cú|^2ÁÀ v>а…‘ÑUS• dtUDTåhy=I1% )¨°ÓÓ‘’Qâ“/ %>(ð´ÒS•‰"Š`M!95N(°Ó•“â€@9X’\RT–€KŠ€2Ð qX Z.,K@%Å Ih¸¸‹-—€e ã„´\b –€KŒ€’Ð q˜Z.4*K@%Æ Yh¸ØA-—€e ã€ ´\rX–€KŽ€’Ð qØZ.<+K@%Ç  h¸ø‡-—€% ä”´\‚Láp f€³èjæ?­Àø¼e˜ì u‰­` |^2Ì vÄ ìÍ£(; =9%Œ0À �èë5€M` |^2Ì v*Ä / %?ú€DY„`ì4ôäd”~*Ì Ð†LG@GX�¬kSâñ–`[°€ðeˆÀXŒ¬µ�éñ–`[°€Ö#7…ÓæqHG„DY„#‰@0^JöfÐ`X«0€Äg!Ö# ±¦€ÌVÀX`Åu‰ÀF°>/Zp…TÒ EU4ˆy=I1%E‚@b,*Á`Bh«€:ÅX$š°&PÉ)ÉH¨j“Q èPUSHœ„ÔÔ 5õy=I1% (°ÑÓQSDX$Ö"Á`H‹€ °høFf7ŠB0v"šj*oþÿ Ÿ„fcx‹€K„À0ˆ´|Uƒ@XT„ÀX,Ö*Á ÐE€@8Dš °&P.0Ë ŠH(j‘“� ¤Ššœž‰5?Ž€5õ À…”‘SS“Ñ e$TÔäôHy=I1% (°Ñ5…Í` |C„ÀÂñ–[°€f€®?€", 8šp(„f€:!¶€†L_€`ư‡@À&5à ™@¨Ƙ#" A.c"€’À šž¬š†IKÊii*I‘˜@ žª¨¦I—Š éh±š� „ˆž¦H‰1£ ®t&¥ ©#’N…“PRÓÕ dÔ´Å5Hy=I1% (°ÑÓQSDX$B3@ >�Ö®cúѬO‹ÆX<nÂ%Â3 ¸N&<À#çøË€L{@GX“(+˜Ì€�@–pŠ¢ª‚™5È誊êH‘�à  ‚†–œ›�ÈH‰êdˆs xc€Fa2"z™"$Æ4Œä€dÔõdÔ2HÊh UPPERŒÑ€Ä5Dô9¨t&'¡§¦’N…’TÓÔ‰ d•4õâHy=I1% )0ðÒSâ�@ M54E‚@ ‹€ °xEìÿ Ÿ@ëW1ýh=kÓã,*·a¬‚ðÒSÿÿødüÖ§Åã,*·a 0bd*Áà��¼ Ÿ„fcx‹ ÜB°8„`PVºÅX2"Áàæ°äzÆ@§ÆX8B0:ÅX<üo §Ìç´©¼ôœ3Ÿ@ëW1ýh=c S⦌°ˆÝ„ °8­Ö*À`‘`P[¬U€@'áV;а8ŒE�ÀXF"À  :z1y`p[¬U€À",>аxÜU�Àb,*À ±V =¥Mç¤áœúZ¹�ë@º|^2ÁÀ v*Àà·X«€DX<U�@n±V Ÿ…X<î*Àà1`P‹€0íøÇhbR–€K�€rÐ r‚Z.D(K@%È h¹©-—#€% ä€´\’E–€K’€ Ð rXRZ.LK@%É h¹8©-—'€e åt´\¢D–€K”€Ð r˜2Z.T$Ë@%Ê 9h¹X©-—+€% å€´´\²E–€K–€ RÐ rØ Z.\'Ë@%Ë 9h¹x‹-—/€% ¨79X“€ ÆY€nÂ3�óüeÀ\f»bP�õ Ÿ†Pvzr2J? a€pÖ$kZÀø¼e˜ì |AØiÊŠIˆ|†Lm@GX�¬kSâñ–`[°€V%Áxi)ÿÔ2"Ì #a§§#$£òVafÓ01Íb@°¬O‹ÆY€nÂX”#ᤧÿPÈ‹0€nÐFÃONFIGê`¬Âͼ`,0cì:Ä€ `CXŸŒ³Ý„ ±(F ÃIOþ ‘a€; =9%À ³6†0À ˆøÓQSDXU€@ ‹€ °øFf7ºÅX$ö•7ž“†sèjæ?­Àø¼e‚Àì “1,`h"À ¬Í2€ÀɘUNLINKŒƒ€då…DäôHÉàDSFREEšŸ€G@2’*jrz$à…“–“Ñ då…DäôHy=I1% (°ÑÓQSDX$U‚@Â31¼Rƒ°ÑÓQS÷ødü#3ÄX“( š‹€G@2r¢rz$à…”•““Ñ e%däôHy=I1% (°ÑÓQSDX$U‚@Â31¼RƒtM†ÃyŒÂt2ˆ †“q¬Êd '3 ºZ:! Ðb6*Á ‘+ÁØhŠi¨©¿ûü2"Å ¬ëbИŒä*Å`bðV uбxÌFrb°� ˆ±ˆ«€„fc{¬UŒ@b3�«€°&Pf¨Šh誓@Œ�€TU%$õ)«�t& ¥¦)ªN…‘”‘SÕ de$TÅ5Hy=I1% (°ÑÓQSDXU€@Â31¼Rƒ°ÑÓQS÷ødü#3ÄX U€Àb¬~™�ç´©€€#,!€X4Uƒ@/7ødúZ¹�ë@º|^2  v*Á ·X«€DXXU„À!; M57ÿ†DX`#ƒ@X`š °¨« „8T,Ö§ÆXhnÂã,1›`Ћ€0êˆŘu‚À­` |^2  v*Áà,ɘÜLM@X<F"Áà :1¿_â,É” €Fa€2jz²J$×H:’TÓÔ‰'…’TÐU`d•4EE˜y=I1% )0ðÒSÄX$U‚@Â31¼#*Á`±V ˆ°x«€ Ýb¬a Të`pÚTÞzNÄXP…XHÖ*Áà Г(ŒŠT”äDU‰ˆpè9ˆj‰èsSàèMKPATHœž¬U€@'áV;а8ŒE�ÀXF"À  :z1y`p[¬U€À",>аxÜU�Àb,*À ±V =¥Mç¤áœúZ¹�ë@º|^2ÁÀ v*Àà·X«€DX<U�@n±V Ÿ…X<î*Àà1`P‹€0íøÇhbR^2Ì v!ƒ´ÒS•‰9 4˜�+ÆPn:*r±'€;M!95O‘€3@!ˆÄgÐ:ÕÌZ5€)ñxË0-Ø@&bˆÄ / %?û3@%Ÿ@ëW1ýhÖ§Åã,À·a 0bÆ*Ä êfx«0€Ä?Øš@ %àÐŽ%ÿ`h}­\Çõ£XŸŒ³Ý„0À ŒðG€°4€@,N>Œ±  €q8‡€3lhôµsÖƒÖ±ý>/f»ë5�-` |^2Ì v>Œ¼( ˜¤± XÖ§Åã,À·aàËÃLX¦*S€)ˆxǘcz1¥˜Ã€ÌM€f! ,;¦1îb@àË0í¸Å  cBèà`!f€ ™CÄœ#% =A:2æÕÒc& Q Q=2œ‘ÑUS£8 Q]I3¸QTUPS&%@ €1 ‰`PFH*zª¢a$e쪨("©Fj€2šZJ‚deì ¡¦'©¢Íc€£ Q9°ÑÓQSxdü#3ÄX“( š‹€G@2‚’²rz$à…“RÐT‘É dÔ´$rHy=I1% (°ÑÓQSDX\A–�€K‚@RÐ0 pPžZ. 9Ë@À%Á€©h¸4A-—% `¨; M57‚PÈ‹€p(47…Óæq`P‹€p«€:Ä8<š °¬U€@",¯`ð¸„`0Ž`h*À`,+uаdE„@X<Ö*À “óXŸa0V?¼ôœ3Ÿ@ëW1ýhÖ§ÆXnÂ8 šp4`0HGÿ†OÂ31¼E€ÀtXbj*À Ú‚É”FNÀ2ªrbJr\ed")£)"¢ÍW# I1MRp…’S’‘PÕ d”ä¤T5Hy=I1% (°ÑÓQSDX$Ö"Á`H‹€ °høFf7ŠB0v"šj*o Ÿ„fcx‹€Ï u«˜þ´kSâñ–[°€V f€,1/`ðŒE‡8pš°¸ôµsÖ�` |^2Ã` v.    7�N‚y˜@m2›Mç#ȺZ¸!ÃÀ Ðb´Âà¬Í ‹ € °˜¬UƒÀiSyé8g>�Ö®cúÐzÖ?§ÆXlnÂX\Fëa0È‹ € B?ûü2"À¬&)ŠÝb¬?ÌÆ÷X«Äg!Vˆ°˜¸€Lc@X\E€@2‚ÀɨILENŒ£TE4tUHËERRORŒ´€TĔ䵮Pt$§%"¡ªN…–�PÕ e…E$5Hy=I1% (°ÑÓQSDX$Ö"Á`à‡€3@V O™Ã",Î:Ì zo §Ìá‘ifpð«4€%šÀøË3-Ø@«€LbXdx2à :”1‹a�°5¬O‹ÆY”nÂX“1¥f@°>/fP»ãàh:Ã@|–kSâñ–e[°€Ž>á h"À ™ŽxÆÜ" °H4aPŒF}­\Çõ£XŸŒ³(Ý„ °&cøX,š°¸ŒF#>�Ö®cúѬO‹ÆY”nÂX“1 f@°>2Ì “/ %p(4—%¡àâð´<\`R–‡€KŒ@òÐð q�>Z.3KCÀ%Æ€ hx¸ÔA-—¥¡àãp|´<\pW–‡€KŽ@Ðð qЂZ.;KCÀ%Ç€9hx¸ô³-—å¡àãð´<U€@Â31¼Rƒ°ÑÓQSxdE�8$U� Dà�h#b Ž ˆ²dX«€3@ˆ!Á ÐE‰b1ôµsÖ�` |1% (°ÑÓQSDX$Ö"Á`¬~™�â�Œ†ˆ¦šŠ›ÿ¿Ã'á˜Þ+>�Ö®cúѬO‹ÆX¸nÂÁ–"`�ðŒÌo„÷ødE‹À ¬U‹Àb3“ ˜“€‚C,D1H`�ðŒÌo„y dE‹ÀX¼Ö! Ë€ °HøFf7ŠB<2"Æ ¬bëâ ho §Ìâ,L}­\Çõ ]>/b໿ßâ,ɘ̀ ±0¤R)„B`ˬU‚@Â31¼2"ÄÀ��þÿ ˆ±xG€ ±xð"À ™‹€„`L @U€@1�   ‚†–œ›5„Ž€dtUEE• À…RS T„TÅHy=I1% )0ðÒS⚀ =9%(°ÑÓQSeÁ ih¸(É-—€% àÀ´\s–€Kƒ€’Ð px‚Z.2K@% Yh¸Hí-— €% á@$´\*r–€K…€’Ð p¸‚Z.;Ë@%à )h¸hé-— €% áÀ´\:n–€K‡€2àPmŸ` �7…ÓæpÉøÞO™ÄXm@6àC�@¶øu€€ átùœRð“ðŒÌo`P ÔÝpfÝÐÖ7…ÓæqHG˜DY|À «#€3oàëÂéó8¤#Ç",Ž¡À!"*Èà Ú.:À@ðº|Î)ô@È‹#€iHF–в86™Ž°¼.Ÿ3ŠB>ð2"Èàˆ¨à"¬ŽÍ© #¬o §Ìâ��” ˆ²8¯€„k«#€3k@ëÂéó8¤#ê",ޝ@!?ÌÆ÷X«€„fcyí*o=' çÐ:ÕÌZ5€)ñxË€-Ø@…þÿ`LÄÌUƒÀÂ31¼Rƒ°ÑÓQSxdü#3ÄXLF}­\Çõ£XŸŒ°èÝ„ °høFf7ŠB<2"ÃÀ¬D&аH¬U‡€ ‹ € °H4a01_a0X«€„fcyí*o=' çÐ:ÕÌZZÇôø¼e‡@ì U‚ÀÂ31¼E„À&5àE…ÀX\Ö*Â`´©¼ôœ3Ÿ@ëW1ýh=kÓã,:·a¬.#u¬ÆÖ§Ä9”L/f`»ápf€ 0b~Âà*Í&)`"4Í· .Í ‹€2e `0˜ï€@d$!©" ª"Æy@"z‚*teh)"¦§«Fv2’*r i$d€( ¡¥§&ÆRrz‚É$eP£!§¨,ÆXjbzš,ÕÄ:PSSÕ‘g…�ÓÔÑ d4Äõ4E(y=I1%E€@Xš2e`�p ˆ¦Œ¤Š‹5 Ž€d4Äõ4E)À…PÕÑT T5tD•(y=^2È@ v!Á ÐbÌ*Ä€�Œ†’ŸÖ'á˜Þ#b`*À ±&f€,D#b V"¾Ÿá“èjæ?­­cú|e�€ì Uˆ€n±V ˆ²ø@*ÈqV"ˆ±ÉLjXˆVë`PÈ‹ +ÅYî*Ä€��¼ Ÿ„fcx‹ B0v"šj*oþÿ ˆ²Dd0hæ@Âéó8‹@ëW1ýhÖ§ÆYnÂXˆMâàVf€ 0b*À BhG °(64€ÍX #ƒ@",^X,Ö*Åà ÐE€@2ƒ0 ŽðPFY€2"z™"f!"'©’!Æz"¢zgD¤§""¬LXÀ@3�•TÓ“I&9` 5úŽ€dtE%$ÙÀ…‘ÑU‘`dtUDäDXy=I1% (°ÑÓQSb“/ %¹�æñßÀ�)àPmÙ`0HGÿ†OÂ31¼øæÏ®gù½Ö! ‹€i`F©�p(аhøFf7†DXlU…À"±[¬U‚@",<*Ã`��þÿ Ÿ„fc{¬U‡€b3�« €ÄX\‡p@&; ÀV`L €2úÕÐã0À19Q"2ÉU&¤ 1Ð °¨¤‚†©8…PSSÕ‘`TÔõdXy=I1%E‚@b,!~¿ÄX#†€X$š ³G °X6Š ³ Ö§ÆY”u˜ÀÀ6°>!Ì  axË3-Ø@«€2f'ààË €°ÈXO‹ÆY”nÂXde™@8dÞI1% )¨°ÓÓ‘’Qâ“/ %>(°ÑÓQSDX$#ᤧý V f€,:ú` aþŸ`ðÖ c?Óâ¶Œ°€Ý„_¯ñdÌJ€?Hš  ì4ôäd”:!‚ðÒSþ�4AØiéÈÉ(þpUa¢)¦¢¦ð@ˆaŒ†’Ÿô€8Dš@dÊÀ#!@A -962nÑÕI#( ’2¬ÒÑf«àÐ †®ˆ’¥8…‘Ñ�UV dtE$Uˆy=I1% (°ÑÓQSbŽÌGÀEX°Rÿßá‘@€¬€Í¾ d¼.Ÿ3ˆ±0ôµsÖ�` |e�€ì U�@„ÐŽ:`Pm-˜­«ÅXî!Ä€ Г(E˜¤€@e&§«$¡’FSÀ"z‚*tf$$ª'¡ÆK€*Jr"*ÄÅü &=à  dˆ*‘’P ª –œšI1(Ê0CTOC˜ž@e°! §*FZrzr ¤Äì#.`5 1=MkÈèŠH*«€…‘Ñ”“`dtE%$Øy=I*ÁÀÇ0Î}s?Íâ7X« DX8E€@2�@ÊPEEKŒ…e4´äØÈ€CD$ŒŽd$Dõ2DˆÈ|MY# Q9p…‘ÑUT dtUEE•y=I1% )0ðÒSÄX$#ᤧý V f€,:û  bkXŸ`Ð×ÜkÚÀøË¾ØX†Ö§Ä88L!Á  axË€-Ø@„x`LÄìu÷@ÄÆ°>2Á ¯¸Ö'µ€)ñ–}°±Q¬Oˆpp˜Cƒ@Âñ–[°€)h¹ë-—!€¥ ä@´B3@�à�h àdÍ¡  Í €à˰X=kÓã,Š·a¬o §Ìâ, £ C�@ ë`¼4”ÿÿþo §Ìá“ñ¼.Ÿ3ˆ°(ôµsÖ�` |^2È  v.FK[@9š0À ‹XŸ@fÔpÖð�x]>g Ÿ�átùœE�@5Ü#^€8›`X#ÝÀ átùœ2~7…ÓæqÙ`�™6™@@`p‹qþ>�Ö®cúÐzÖ?§ÆYnÂX Rÿßá‘GàpVGf€gù¼.Ÿ3ˆ°(«lЇ€3jà«€^ðÉôµsÖ�` |^2È  v!³ LÛþ1»`p‹€0ë Åè \¢.–æ�rˆ6ûÌ~@GXx2À@ ;j1ÃdÊ€&:` ŽÉ©êÉ(d“à ˜ûÆ` #8 Y9]1%:2,”US£4`YAUQ%9R3¢”‘SPT’ã) L‘    ækÜ©©Š“€…’TÓÔS d•4õTèy=I1% )0ðÒSÄX$#ᤧý V f€ `XŸŒ°pÝ„_¯ñdÌEÀ?Hš°&P$É*iê Ä‘�   ‚†–œ›5*Ž€d•4õTéÀ…“ÐÐÓÓ`dÄô44ôØy=I1% )¨°ÓÓ‘’QÄX$Ö"Á`U‚@ ôµsÖƒÖ±ý>2À¬~k ÚÀø‡-…ã,:·aU‚Àb¬Íb," ¬Í ¬"Àáà -7áÀ�)àðm/`ÐX‹€2e°Œ €e5D4õ™ªxt&¥ª§$¨Î…“ÔS‘ dõTäE(y=I1% (°ÑÓQSbš€ =9%E‚@b,.ËAÀ%Âùh8¸D-— å àá0ü´\(?–ƒ€K…@òÐp p°þZ.ËAÀ%Ãùh8¸d-— % àš:ÅX,æ#9:Ï u«˜þ´kSâñ–[°€ õþ"À  ÄXHc*Â@,É” €FO2:*¢A$ÖP:T‘PQ§…”‘SSÕ‘`e$TÔõdXy=I1% )0ðÒSâ�@ M54E‚@0^JÒ`�hÖ§ÆXTnÂ/×ø‹€2f"€¤ÍX0úZ¹�ëAëXþŸaP»a€PV ÷pÈ‹ +ÅXXî*Á€��” Ÿ„fcx‹€ B0v"šj*oþÿ Ÿ„fcx‹ € °˜¬U„@iSyé8g>�Ö®cúѬOŒ°¨Ý„ °˜¤#Á.4!Ë@%Æ Ih¸Ø¥-—€% ã€´\r–€KŽ€ ’Ð qØ&Z.<)Ë@%Ç Ih¸ø-—€¥ ä,´\‚R–€K�€RÐ r>Z.D)Ë@%È Yh¹-€;M!95O‘€3@ˆÄgÐ:ÕÌZ5€)ñxË#€-Ø@¹ Æa7 ΂™„ìeMÇcIÈÞn6™MÇAt´€C’ 4˜� ì4ôäd”~0o §Ìâ,À ÍHy=I1% )0ðÒSÄX$Ö"Á`¬ÍX$ü#3Â0^Jÿÿ ˆ°xùŒkSã,"*Áàæ°>! axË -Ø@…úÿ`LÄÔU‚ÀÃÖ3ý>2 ¬ÍgÐ:ÕÌZ5€)ñS ÆXHnÂX$ü#3Â?ÿü2"Áàç°UƒÀâ¬~™�á?ZÀø¼e„@ì U‚@Â31¼#Â@",> °xÞc *Á`ãx]>g`LÅŒU‚@Â31¼#ÿÿÃ",~s>ÅX<îÖ*Á`1ÈU€ÀÂ31¼Ræ‘  ±V 9ˆÎB¬~™�áî`ððUƒÀâ¬ÍXF"ÀÀ :p1JdÊ@#'àQH’2Q‘ÒÉ#7€1UM"k’ÈHiê $“€…”‘S�SI e$TäÒHy=I1%E‚@b,!b¬`à*ÁÀ±V f€€Ö*Á ‘WаpÜU‚@bšÂéó8‹€2e“p „ˆž¦H‡©©êÈD“0€˜šâñ–[°€ õþ"À ™Š˜ ˜˜@ `°!4#ƒÀ0vzr2J?!f€,"}­\Çõ£XŸŒ°àÝ„_¯ñdÌa@X,üÖ5€)ñxË-Ø@D`°h*Á` ÐE„@&3 ¬"#a[¬U‚À",<! b¬"{J›ÏIÃ8‹q«:ÅX$›O@b¬"aŽ`°mJŒ°àÝ„0À �¨²€L~&+ ¬ÍX,š°&PD ™‰ «€„fcx¤#a¢)¦¢¦ÿïðÈ‹@ X«Äg!V ?ÌÆñHG€DXxU‡€b¬ÍX,ü#3Å!ýþaÀVb q-tâˆ!Áà ÐB°&PH1x€ÈXDSGET™Ä ¦#+ A -962üTÐÓÔf²`Ð ž Šœˆ¥8…”“ÓT e$ôÕHy=I1%E‚@b,`4ˆ°h«€3@YôµsÖ�` |^2 v*",,!b¬,sœ…XLRÿßá“ðŒÌoa0d˜¿€p`4aÑÐ ‰À† ÃIOú@ ÐÞO™ÄXP0*À ˜Í¨REMOV$Œ�€d•4õâHÈPPACKNMŒÖT4Äõ4Y®t)"¦§«"Î…”ÑUS• e4UDTåhy=I1% )¨°ÓÓ‘’Qâ�M!9X’(¦´Ò�ST† 9QI1\T–€K‚€2Ð pX Z. K@%Á  h¸8‰-—€e á¤´\"8#@@8šp(4àPfÓ "À`¬|¿Ã'Ð:ÕÌZZÇôøË#€-Ø@«€ B< 2"Ëà Y|›Q€X F"À` :º1sàPmLàP!fÕPŽð�h!À  Û4À (Í´` !à Ûv!À  ÛdÀ 4͸€ !ðà Û¦!À  Û”À RÍ»€ !ä ÛÖ!À  ÛÄÀ ^;€ !ê` Ú!À  Ûô*Á á˜Þá “óXÖ§Åã,"·a¬~™�á`ððUƒÀóà"À ™@˜e4$© ª*,ÆBÀ*2"zY$×ì:”ÑUSÑ'…•“SÕU eE$ÔõUHy=I1%E€@Xš2e`�p ¨Š¤š’�5 Ž€eE$ÔõUIÀ…•Ô’UQ eu$•DThy=I1%E‚@b,`4ˆ°h„`ðVuаXøFf7žÒ¦óÒpÎ}­\Çõ õ¬OŒ°ˆÝ„ °x­Ö*Á ‘ÀÕ$:”‘S�SI'…•TÓ“I eU´äÒHy=I1%E‚@b,*Á ãx]>ga ã˜g>¹Ÿæ÷X„ f€,(X,Ö!€ ÐF"Á ,0+uаXdE†€XHøæÏ®`y¼"AO¢¬4wa€X«€DXp|:aÀ¸«€Äb,>Œ°€ø2Áà¬Ö…Óâñ–[°€Ö7…ÓæwX…þÿ ºÅX$2~sÆXD¬ kSâñ–[°€Ö`ðð0e„`Ƥ܈j‰èq�pŽŠ¨¨²¡qÈ誊êH‘�à ’œˆŠ±¬Éˆ©ÈꉞР˜ž†žšI13 ˆ@èFi€*:º"J”Æ€ # 1=1j2ɉèhié³€…“RÕS’T`dÔµTä•y=I1% )¨°ÓÓ‘’QÄX$Ö"Á`àðt´\ $–ƒ€K„@’Ðp p�’Z.KAÀ ‹€ °X‹ K…€0h´L… †ÃONFIGà ÐU‚ÀX`\4ƒ@%¤ 0¢à¬Í£Á ÐbD*Á ±V f€,É” FL€2:*¢bJtd@$© ª*,ÆJ*zª¢™$Ôà:”“ÓT'…T‘PQ U$TDhy=I1%E‚@b,`4ˆ°h„a VuаXøFf7žÒ¦óÒpÎ}­\Çõ õ¬OŒ° Ý„ °h¬C„ XŸa@»aÓ Š0« Ýb¬aPÖaP¸« ÄXH‡D€&) ¬$+>�Ö®cúѬO‹ÆXPnÂ/÷ø‹ 0À ‹Ø«E–€K„€Ð p˜Z.*K@% Yh¸X›-— €% á€´\2–€K†€2Ð pØRZ."Ë@%àéh¸x‰-—€% â´\BM–€Kˆ€2Ð qbZ.$"K@%Ä Yh¸˜­-—€% â€´\RP–€KŠ€2Ð qXRZ.,$K@%Å  h¸¸-—€e ãÄ´\bT–€KŒ€Ð q˜Z:ƒ°Ó•“øõ¬O‹ÆYnÂ8C�´0C�@´HbB:ƒ°ÓÓ‘’Qü(õ¬O‹ÆYnÂ8CŽ€´¨C�@´Àb~:ðÀÖ°>/dp»àP?fÔ€fÔàŠè‡€3@L¡„b€�p †¤Š‚¨‹1„€É REMARKŒ“€DU„•HË0PUTLINŒÅeUD”åHË`NEWLINŒÖUUD4ˆË� CLOSEš¾€Ç@2š*¢*r´à…”ÑUSÑ e4UDÔô`ÐX« 3@Vˆ°x‰LL€X,ü#3ÄX“(Œ¤eUD4‚Iªøt+©$ª"£N…��ÓÔI d$4õ’Hy=I1% )0ðÒSÄXÖ"À`¬ÍX ü#3Â0^J ŸšÀø¼e‚ì “1"`ðŒÌo„z dü#3ÄX#�€Xš5€)ñxË-Ø@«€„fcx¤#ê",*À á˜Þ)ú€ÉøFf7ºÅX$æ#9 °øFf7ŠB> 2"Á`uƒÀÀ¦°>/aà»`Ð[¬U‚À",0> °ÀÜUƒ@b,> °€ÇUƒ@n±V ˆ°Àë€ °ÀÜUƒ@b,1·`ðàË€0ëÀÆUƒ@n±V ˆ°À¼U†â¬+>Œ°&P>/‰*‰èsPŒ�€2DC™©H t*¨%§&’N…QÕÑT TutD•(y=I1% )¨°ÓÓ‘’QÄXÖ"À`¨; =9%΀Âéó8‹@ŽàÀh#`Àà    @È‹ ¼à‚*Â@qVàPÈ‹ ‡B¬(waŽ ˆ°°¼U…€â¬~™�â±YôµsÖ�` |^2à v*À ±f€ 0bÖXÖ!À  ÐbðÉ” €FFÀ"J¢zÅì(&"@0uÉ©j*‰˜P†¨ž‡5�Ž€TutD•)À…“ÐÓÓI dÄô4ôÒHy=I1% (°ÑÓQSbš€ =9%)0ðÒSÄX$Ö"Á`/ %?é °H4kSã,P·aØ@ùþ2À ™��ë °ØÅä†LW€Xuc‚:ÀÁ–aÒ°Ž ø$2Ã@ ; 1�a°±ý¬O‹ÆX nÂã,Ã&<À#çøË€L{@GX“(+˜Ì€�@eœ¢¨ª ¦FM@r:*¢º’$d8( ¡¥§&Æc@2"z™"ÄÈ&80„ÈH‰êdˆ“ÐŒä€dÔõdÔ2HÊh UPPERŒÑ€Ä5Dô9¨@t&'¡§¦’N…’TÓÔ‰ d•4õâHy=I1% )0ðÒQPèTERMINœ…“RÔU dÔµDˆy=I1%E€@b,!€X" °4`°èjæ?­­cú|^2ÁÀ v>аÜB°8„`PVºÅX2"Áàæ°äzÆ@§ÆX8B0:ÅX<üo §Ìç´©¼ôœ3Ÿ@ëW1ýh=c S⦌°ˆÝ„ °8­Ö*À`‘`P[¬U€@'áV;а8ŒE�ÀXF"À  :z1y`p[¬U€À",>аdefinitions for the pattern matching routines define(ANY,QMARK) # symbol for matching any character define(BOL,PERCENT) # symbol for referring to beginning of line define(CCL,LBRACK) # symbol for start of character class define(CCLEND,Rer class define(PREVCL,2) #offset in stack; index of previous closure #in pattern define(START,3) #offset in stack; index in input line where #match starts # Symbol definitions fofine(NEXTBUF,0) # link forward define(PREVBUF,1) # link backward define(LISTDATA,2) # queue start of data # Symbol definitions for the io primitives define(MAXARGS,15) #Max nbr command line arguments allowed define(MAXCDEV,6) # number of ch ñ–dÌF_l¬ kSã,P·a¤! ]>/b€»WŒ° ˜Ÿ€Ÿã,1F`Lİ|?}°ðüe÷Ãñ—ÝFXh|a°ð¸e‡€ã,D*ƒ°ÑÓQSx E ˆ°hG€@h‚ðÒSþ�‡ 3i¨Ë€Óâñ–([°€1šaÐx]>gŠE"‘HD ŸFXtÞO™Ýb¬b�ÃàRÍ ‹ € °¨Eöÿ Ÿ@ëW1ýhOSâ�@ M54E‚@ ‹€ °xEìÿ Ÿ@ëW1ýh=kÓã,*·a¬‚ðÒSÿÿødüÖ§Åã,*·a 0bd*Áà��¼ Ÿ„fcx‹ €€#,!€X4Uƒ@/7ødúZ¹�ë@º|^2  v*Á ·X«€DXXU„À!; M57ÿ†DX`#ƒ@X`š °¨« „8T,Ö§ÆXhnÂã,1›`Ћ€0êˆŘu‚À­` |^2  v*Áà,ɘÜxÜU�Àb,*À ±V =¥Mç¤áœúZ¹�ë@º|^2ÁÀ v*Àà·X«€DX<U�@n±V Ÿ…X<î*Àà1`P‹€0íøÇhbR*Á`±V ˆ°x«€ Ýb¬a Të`pÚTÞzNÄXP…XHÖ*Áà Г(ŒŠT”äDU‰ˆpèFN@b¢zÕ:“RÔU'ž€@'áV;а8ŒE�ÀXF"À  :z1y`p[¬U€À",>аBRACK) # symbol for terminating character class define(CHAR,LETA) # symbol in list for character define(CLOSIZE,4) # dummy closure size returned by patsiz # (an unimplemented feature) define(CLOSURE,STAR) # symbr string conversion routines define(RADIX,PERCENT) #Radix indicator for 'gctoi' # Symbol definitions for memory management define(DS_MEMEND,1) # pointer to end of available memory define(DS_FIRST,2) # pointer to start of available memory definearacter devices define(ARGBUFSIZE,129) #Size of buffer to hold command line args define(IOBUFSIZE,128) #Size of buffer for terminal/disk io define(FCBSIZE,36) #size of CP/M fcb for BDOS calls define(IFCBSIZE,20) #fcb + queue head size in ints de‹ÆX nÂXT#‡@",R~sÅX¤î~kÀø¼eŠì U…@8t2"Å ñV);ÌA@EXTF"  ;¢1æ€@,>Œ°à€px†ÃONFIGê` ÐúZ¹�ëAëXþŸŒ±@Ý„q4aÀKÓâñ–([°€Ž#áàh+>�Ö®cúѬO‹ÆX nÂX|¬OŒ±@Ý„ °XøFf7ŠÝb¬b�*Å ±f€`Öµ€)ñxË-LM@X<F"Áà :1¿_â,É” €Fa€2jz²J$×H:’TÓÔ‰'…’TÐU`d•4EE˜y=I1% )0ðÒSÄX$U‚@Â31¼#ᤧð�ÉøzÖ?§Åã,·aE€@`ÄdB°ĈU€@2€À ©pt$© ª*,Î…•T“RS eDU$Ô”èy=I1%E€@%À`Ih¸©-—€e `à`Ô´ \–�€@Vuˆp4dÊ#!À Q=b # Symbol definitions for the hash table routines define(ST_LINK,0) # offset of link field in symbol table node define(ST_DATA,1) # offset of data field in symbol table node define(ST_HTABSIZE,43) # should be a prime number # Symbol ol for defining a closure define(COUNT,1) #offset in stack for repeat count for matches define(EOL,DOLLAR) # symbol for referring to end-of-line define(LAMBDA,0) # end of list marker define(NCCL,LETN) # flag for negated charact(DS_CLOSE,8) # threshhold for smallest allowed blocks define(DS_LINK,1) # block link pointer address define(DS_SIZE,0) # block size address define(DS_OHEAD,2) # block administration overhead # Symbol definitions for queue management routines define(IOBUFNEED,68) #io buffer size + links in ints define(CONBUFSIZE,125) #for CPM console buffered input define(DIRBUFSIZE,83) define(CPMEOF,26) define(DISK,0) define(CONSOLE,1) define(PRINTER,3) define(PUNCH,4) define(READER,4) define(N    ULLDEV,5) define(USERDEV,6) define(BUFBLOCK,2) # block of buffer in cache define(BUFSTATE,3) # dirty of buffer in cache define(BUFDATA,4) # start of data of buffer in cache define(CLOSED,0) # free file descriptor define(READABLE,READ) # access DISK,25) define(CPM_SETDMA,26) define(CPM_GETRO,29) define(CPM_GETDPB,31) define(CPM_USER,32) define(CPM_READ,33) define(CPM_WRITE,40) define(CPM_GETSIZE,35) #-h- libincld 0_58 ascii 06/10/83 15:35:00 # include standard libdefs file include "/1/c/libdefs" #-t- libincld 0_58 ascii 06/10/83 15:35:00 #-h- addstr 2_17 ascii 06/10/83 15:35:00 ## addstr - unction atodat (str, date) character str(ARB) integer date(7) # date(1) = year # date(2) = month # date(3) = day # date(4) = hour # date(5) = minute # date(6) = second # date(7) = millisecond integer ctoi, gmonth, chkdat, sktok inte3) = 1 Skipx if (type(str(loc)) == DIGIT) { Nextx if (i <= 31) { date(3) = i #day Skipx if (type(str(loc)) == DIGIT) { Nextx date(1) = i #year } } else date(1) = i #year } } else if (i >  { date(2) = i #month if (str(loc) == SLASH) loc = loc + 1 Nextx date(3) = i #day if (str(loc) == SLASH) loc = loc + 1 Nextx date(1) = i #year } Skipx Nextx date(4) = i #hour if (str(loc) == LETH | str(loc) == Bbit flag define(RAWMODE,4) # " " " # CPM BDOS call function codes: define(CPM_CONIN,1) define(CPM_CONOUT,2) define(CPM_READER,3) define(CPM_PUNCH,4) define(CPM_LIST,5) define(CPM_DIRECT,6) define(CPM_CONBUFIN,10) define(CPM_CONSåadd s to str(j) if it fits, increment j integer function addstr(s, str, j, maxsiz) character s(ARB), str(ARB) integer j, maxsiz integer i, ctoc i = ctoc (s, str(j), maxsiz) j = j+i if (i == 0) return(NO) return(YES) ger i, loc character type string tseps " .:,-" # BLANK,TAB,.,:,-,,, define(Skipx, loc = sktok(str,loc,tseps)) define(Nextx, i = ctoi(str, loc)) define(get_month, date(2) = gmonth(str(loc)) if (date(2) == ERR) return (ERR) while (31) # y m d { date(1) = i #year date(2) = 1 #month date(3) = 1 #day Skipx if (type(str(loc)) == DIGIT) { Nextx date(2) = i #month } else if (type(str(loc)) == LETTER) { get_month } Skipx if (type(str(lIGH) loc = loc + 1 Skipx Nextx date(5) = i #minute if (str(loc) == LETM | str(loc) == BIGM) loc = loc + 1 Skipx Nextx date(6) = i #second if (str(loc) == LETS | str(loc) == BIGS) loc = loc + 1 Skipx Nextx date(7) = i TAT,11) define(CPM_RESET,37) define(CPM_RESET_ALL,13) define(CPM_CD,14) define(CPM_OPEN,15) define(CPM_CLOSE,16) define(CPM_SFIRST,17) define(CPM_SNEXT,18) define(CPM_DELETE,19) define(CPM_MAKE,22) define(CPM_RENAME,23) define(CPM_GETåend #-t- addstr 2_17 ascii 06/10/83 15:35:00 #-h- atodat 17_45 ascii 06/10/83 15:35:00 ## atodat - convert ascii characters to integer dates # Copyright 1981 by Unicorn Systems, Castro Valley, CA 94546 integer ftype(str(loc)) == LETTER) loc = loc + 1 ) for (i=1; i<=7; i=i+1) #zero date array date(i) = 0 loc = 1 Skipx Nextx if (i == 0) #mon d y { if (type(str(loc)) == LETTER) { get_month } else #string not date return(ERR) date(oc)) == DIGIT) { Nextx date(3) = i #day } } else if (str(loc) != SLASH) #d mon y { date(3) = i #day Skipx if (type(str(loc)) == LETTER) { get_month } Skipx Nextx date(1) = i #year } else #m d y  #millisecond return (chkdat (date)) end #-t- atodat 17_45 ascii 06/10/83 15:35:00 #-h- concat 3_4 ascii 06/10/83 15:35:00 ## concat - concatenate two strings together subroutine concat (buf1, buf2, outstr)     character buf1(ARB), buf2(ARB), outstr(ARB) integer len integer length call scopy(buf1, 1, outstr, 1) len = length(outstr) j = 1 for (i=len+1; buf2(j) != EOS; i=i+1) { call scopy(buf2, j, outstr, i) j = j + 1, BIGX, EOS, BIGE, BIGT, BIGX, EOS, BIGE, BIGO, BIGT, EOS, BIGE, BIGN, BIGQ, EOS, BIGA, BIGC, BIGK, EOS, BIGB, BIGE, BIGL, EOS, BIGB, BIGS, EOS, EOS, BIGH, BIGT, EOS, EOS, BIGL, BIGF, EOS, EOS,  BIGF, BIGS, EOS, EOS, BIGG, BIGS, EOS, EOS, BIGR, BIGS, EOS, EOS, BIGU, BIGS, EOS, EOS, BIGS, BIGP, EOS, EOS, BIGD, BIGE, BIGL, EOS/ # i = and (c, 127) i = c & 127 if (0 <= i & i <= 32) # non-printi line argument subroutine delarg (n) integer n, i integer nbrarg integer ptr character arg common /args/ nbrarg, ptr(MAXARGS), arg(ARGBUFSIZE) if (n > nbrarg) #check for valid argument return for (i=n; i 16) base = radix else i = j + 2 } for (; str (i) != EOS; i = i + 1) { routine gdate (date,time) character date(ARB), time(ARB) integer now (7), dummy call getnow (now) call fmtdat (date, time, now, dummy) return end #-t- gdate 2_19 ascii 06/10/83 15:35:00 #-h- getc 1_1) { len = length(buf) + 1 buf(len) = BLANK } buf(len) = EOS return end #-t- getcl 2_49 ascii 06/10/83 15:35:00 #-h- getdir 2_51 ascii 06/10/83 15:35:00 ## getdir - get associated directory name # C getpat = makpat(str, 1, EOS, pat) return end #-t- getpat 1_50 ascii 06/10/83 15:35:00 #-h- getwrd 3_50 ascii 06/10/83 15:35:00 ## getwrd - get non-blank word from in(i) into out, increment i integer functie from the argument list # NOTE: This routine was provided by Georgia Tech. Their # installation allows multiple standard inputs and outputs. # Those sections of the code have been commented out in this version. integer function gfnarg (name, staelse if (state (1) == 2) { if (getarg (state (2), name, MAXARG) != EOF) { state (1) = 2 # stay in same state state (2) = state (2) + 1 # bump argument count if (name (1) != MINUS) { stat if (IS_DIGIT(str (i))) d = str (i) - DIG0 else d = index (digits, clower (str (i))) - 1 if (d < 0 | d >= base) break v = v * base + d } if (neg) return (-v) else return 4 ascii 06/10/83 15:35:00 ## getc - get character from STDIN character function getc(c) character c character getch getc = getch(c, STDIN) return end #-t- getc 1_14 ascii 06/10/83 15:35:00 #-h- getcl opyright 1981 by Unicorn Systems, Castro Valley, CA 94546 subroutine getdir (type, buf) integer type character buf(ARB) string homedr "/0/a/" if (type == HOME_DIRECTORY) call ctoc (homedr, buf, FILENAMESIZE) else buf(1) = EOS return on getwrd (in, i, out) character in(ARB), out(ARB) integer i, j while (in(i) == BLANK | in(i) == TAB) i = i + 1 j = 1 while (in(i) != EOS & in(i) != BLANK & in(i) != TAB & in(i) != NEWLINE) { out(j) = in(i) te) character name (ARB) integer state (4) integer l integer getarg, getlin, length filedes fd filedes open string in1 "STDIN" # string in1 "/dev/stdin1" # string in2 "/dev/stdin2"" # string in3 "/dev/stdin3" e (4) = state (4) + 1 # bump input file count return (OK) } else if (name (2) == EOS) { call scopy (in1, 1, name, 1) state (4) = state (4) + 1 # bump input file count      return (OK) } # else if (name (2) == DIG1 & name (3) == EOS) { # call scopy (in1, 1, name, 1) # state (4) = state (4) + 1 # bump input file count # return (OK) #  state (1) = 3 # new state if (name (3) == EOS) state (3) = STDIN # else if (name (3) == DIG1 & name (4) == EOS) # state (3) = STDIN1 # else if (name (3) == return (ERR) } else state (1) = 4 # EOF state } else if (state (1) == 3) { l = getlin (name, state (3)) if (l != EOF) { name (l) = EOS state (4)  state (1) value.") } # end of infinite repeat name (1) = EOS return (EOF) end #-t- gfnarg 29_10 ascii 06/10/83 15:35:00 #-h- gitoc 16_59 ascii 06/10/83 15:35:00 ## gitoc --- convert single pan unsign conversion if (unsign) { # make pos. but keep high-order bits intact n = (int/2 & MAX_INTEGER) # n = and(int / 2, # make pos. but keep high-order bits intact # MAX_INTEGER) # carry = and (int, 1) # if (d >= radix) { # check for generated carry d = d - radix carry = 1 } else carry = 0 } i = i + 1 str (i) = digits (d + 1) # convert to character and store  } # else if (name (2) == DIG2 & name (3) == EOS) { # call scopy (in2, 1, name, 1) # state (4) = state (4) + 1 # bump input file count # return (OK) # } # else if (name (2) = DIG2 & name (4) == EOS) # state (3) = STDIN2 # else if (name (3) == DIG3 & name (4) == EOS) # state (3) = STDIN3 else { state (3) = open (name (3), READ) = state (4) + 1 # bump input file count return (OK) } if (fd != ERR & fd != STDIN) call close (state (3)) state (1) = 2 } else if (state (1) == 4) { state (1) = 5 recision integer to any radix string integer function gitoc (int, str, size, base) integer int, size, base character str (size) integer carry, d, i, radix, n logical unsign string digits "0123456789ABCDEF" if (size <=  get initial carry carry = int & 1 if (int == -1) n = MAX_INTEGER # the oddball case else if (carry == 1 & int < 0) n = n - 1 # division by 2 rounds up, so this #  n = n / radix } until (n == 0 | i >= size) if (unsign) { if (carry != 0 & i < size) { # check for final carry i = i + 1 str (i) = DIG1 } } else if (int < 0 & i < size) { # add sign if nee= DIG3 & name (3) == EOS) { # call scopy (in3, 1, name, 1) # state (4) = state (4) + 1 # bump input file count # return (OK) # } else if (name (2) == LETN | name (2) == BIGN) {  if (state (3) == ERR) { call putlin (name, ERROUT) call remark (": can't open.") state (1) = 2 } } } else  if (state (4) == 0) {# no input files call scopy (in1, 1, name, 1) return (OK) } break } else if (state (1) == 5) break else call error ("in gfnarg: bad1) return (0) str (1) = EOS # digit string is generated backwards, then reversed radix = iabs (base) # get actual conversion radix if (radix < 2 | radix > 16) radix = 10 unsign = (base < 0) # negative radices me corrects } else n = int i = 1 repeat { d = iabs (mod (n, radix)) # generate next digit if (unsign) { # this is only half of actual digit value d = 2 * d + carry # get actual digit value ded i = i + 1 str (i) = MINUS } gitoc = i - 1 # will return length of string for (d = 1; d < i; d = d + 1) { # reverse digits carry = str (d) str (d) = str (i) str (i) = carry i = i - 1      } return end #-t- gitoc 16_59 ascii 06/10/83 15:35:00 #-h- hshfcn 3_53 ascii 06/10/83 15:35:00 ## hshfcn - hash function # # This is a portable version of the hash function. It takes the scapes) integer function isin (str, c) character c, str(ARB) character toggle, tc for (isin = 1; ; isin=isin+1) { tc = str(isin) if (tc == EOS) break if (tc == c) { if (isin == 1) return if (str(isin-1) != ESCAPE) retuf) pointer head, buf DS_DECLARE pointer nxtp nxtp = Mem(head+NEXTBUF) Mem(buf+NEXTBUF) = nxtp Mem(buf+PREVBUF) = head Mem(head+NEXTBUF) = buf Mem(nxtp+PREVBUF) = buf return end #-t- linkq 2_92 ascii 06/10 NO return } nodsiz = Mem (st) j = node + ST_DATA ifdef(CPM, j = j + ilen(Mem(j)) ) ifnotdef(CPM, j = j + slen (Mem(j)) ) if (nodsiz == CHAR_DEFN) i = unpack (Mem(j), info) else #pick up integer data { foratch - find match anywhere on line integer function match(lin, pat) character lin(MAXLINE), pat(MAXPAT) integer amatch integer i for (i = 1; lin(i) != EOS; i = i + 1) if (amatch(lin, i, pat) > 0) { mat { st = st + 1 Mem (st) = LAMBDA # null link } return end #-t- mktabl 3_22 ascii 06/10/83 15:35:00 #-h- putdec 3_5 ascii 06/10/83 15:35:00 ## putdec - put decimal integ # first and last characters of the string, sums them, and then # returns the (sum modulo n) + 1. # integer function hshfcn(strng, n) character strng(ARB) integer n, i, length, i1, i2 i = length(strng) i = max(i, 1) i1 rn } else if (tc == SQUOTE | tc == DQUOTE) #skip quoted strgs { toggle = tc repeat { isin = isin+1 tc = str(isin) if (tc == EOS | tc == toggle) break } if (tc == EOS) break } } return (0) end #-t- isi/83 15:35:00 #-h- lookup 6_52 ascii 06/10/83 15:35:00 ## lookup - find a symbol in the symbol table, return its data integer function lookup (symbol, info, st) character symbol (ARB) integer info (ARB) #may actually be  (i = 1; i <= nodsiz; i = i + 1) { info (i) = Mem (j) j = j + 1 } } lookup = YES return end #-t- lookup 6_52 ascii 06/10/83 15:35:00 #-h- lower 1_3 ascii 06/10/83 15:35:00 ## ch = YES return } match = NO return end #-t- match 2_89 ascii 06/10/83 15:35:00 #-h- mktabl 3_22 ascii 06/10/83 15:35:00 ## mktabl - make a new (empty) symbol table er n in field width >= w subroutine putdec(n,w) character chars(MAXCHARS) integer itoc integer i,n,nd,w nd = itoc(n,chars,MAXCHARS) for(i = nd+1; i <= w; i = i+1) call putc(BLANK) = strng(1) i2 = strng(i) hshfcn = mod(i1+i2, n) + 1 return end #-t- hshfcn 3_53 ascii 06/10/83 15:35:00 #-h- isin 4_45 ascii 06/10/83 15:35:00 ## isin - find character 'c' in string (knows about en 4_45 ascii 06/10/83 15:35:00 #-h- linkq 2_92 ascii 06/10/83 15:35:00 ## linkq - link buffer into circular queue at head # Copyright 1981 by Unicorn Systems, Castro Valley, CA 94546 subroutine linkq(head,bua character pointer st integer i integer nodsiz, j integer stlu, unpack ifdef(CPM, integer ilen) ifnotdef(CPM, integer slen) pointer node, pred DS_DECL(Mem, 1) if (stlu (symbol, node, pred, st) == NO) { lookup =lower - fold all letters to lower case subroutine lower (token) character token(ARB) call fold(token) return end #-t- lower 1_3 ascii 06/10/83 15:35:00 #-h- match 2_89 ascii 06/10/83 15:35:00 ## m pointer function mktabl (nodsiz) integer nodsiz DS_DECL(Mem, 1) pointer st pointer dsget integer i st = dsget (ST_HTABSIZE + 1) # +1 for record of nodsiz Mem (st) = nodsiz mktabl = st do i = 1, ST_HTABSIZE; for(i = 1; i <= nd; i = i+1) call putc(chars(i)) return end #-t- putdec 3_5 ascii 06/10/83 15:35:00 #-h- putint 2_24 ascii 06/10/83 15:35:00 ## putint - output integer i    n specified field subroutine putint(n, w, fd) character chars(MAXCHARS) integer itoc integer n, w, fd, junk junk = itoc(n,chars,MAXCHARS) call putstr(chars, w, fd) return end #-t- (node) } } call dsfree (st) return end #-t- rmtabl 3_80 ascii 06/10/83 15:35:00 #-h- sctabl 12_19 ascii 06/10/83 15:35:00 ## sctabl - scan symbol table, returning next entry or EOF chain } bucket = Mem (posn) # recover previous position walker = Mem (posn + 1) nodsiz = Mem (table) repeat # until the next symbol, or none are left { if (walker != LAMBDA) # symbol available? { ZE) break j = table + bucket walker = Mem (j) } } call dsfree (posn) # throw away position information posn = 0 sctabl = EOF return end #-t- sctabl 12_19 ascii end #-t- sdrop 3_57 ascii 06/10/83 15:35:00 #-h- sindex 3_50 ascii 06/10/83 15:35:00 ## sindex - find tok in str separared by sep # Copyright 1981 by Unicorn Systems, Castro Valley, CA 94546 integer funr each system integer function slen (int) integer int(ARB) character buf(MAXLINE) integer pack, unpack integer junk # Here's a quick-and-dirty way to do it; rewrite for your system junk = unpack(int, buf) return (pack(buf, int)) end #-putint 2_24 ascii 06/10/83 15:35:00 #-h- rmtabl 3_80 ascii 06/10/83 15:35:00 ## rmtabl - remove a symbol table, deleting all entries subroutine rmtabl (st) pointer st integer i pointer walker, b integer function sctabl (table, sym, info, posn) pointer table, posn character sym (ARB) integer info (ARB) integer unpack, ilen pointer bucket, walker pointer dsget integer i integer nodsiz, j DS_DECL(Mem, 1)  j = walker + ST_DATA i = unpack(Mem(j), sym) j = j + ilen(sym) if (nodsiz == CHAR_DEFN) i = unpack (Mem(j), info) else #pick up integers { for (i=1; i<= nodsiz; i=i+1) { info(i) = Mem(j) j = j + 1 } }  06/10/83 15:35:00 #-h- sdrop 3_57 ascii 06/10/83 15:35:00 ## sdrop --- drop characters from a string APL-style integer function sdrop (from, to, chars) character from (ARB), to (ARB) integer chars integer len, stction sindex (str, tok, sep) character str(ARB), tok(MAXTOK), sep(ARB) character t(MAXTOK) integer gettok, equal, sktok integer i, j j = 1 for (i=sktok(str,1,sep); gettok(str,i,t,sep) != 0; i=sktok(str,i,sep)) { if (equal(t, tok) == YES) t- slen 2_73 ascii 06/10/83 15:35:00 #-h- slstr 4_78 ascii 06/10/83 15:35:00 ## slstr --- slice a substring from a string integer function slstr (from, to, first, chars) character from (ARB), to (ARB) ucket, node DS_DECL(Mem, 1) bucket = st do i = 1, ST_HTABSIZE; { bucket = bucket + 1 walker = Mem (bucket) while (walker != LAMBDA) { node = walker walker = Mem (node + ST_LINK) call dsfree if (posn == 0) { # just starting scan? posn = dsget (2) # get space for position info Mem (posn) = 1 # get index of first bucket Mem (posn + 1) = Mem (table + 1) # get pointer to first  Mem (posn) = bucket # save position of next symbol Mem (posn + 1) = Mem (walker + ST_LINK) sctabl = 1 # not EOF return } else { bucket = bucket + 1 if (bucket > ST_HTABSIart integer ctoc, length integer i len = length (from) if (chars < 0) return (ctoc (from, to, len + chars + 1)) else { start = min0 (chars, len) i = start + 1 return (ctoc (from (i), to, len + 1)) }  return (j) else j = j + 1 } return (0) end #-t- sindex 3_50 ascii 06/10/83 15:35:00 #-h- slen 2_73 ascii 06/10/83 15:35:00 ## slen - determine number words taken up by packed string # Different fo integer first, chars integer len, i, j, k integer length len = length (from) i = first if (i < 1) i = i + len + 1 if (chars < 0) { i = i + chars + 1 chars = - chars } j = i + chars - 1      if (i < 1) i = 1 if (j > len) j = len for (k = 0; i <= j; k = k + 1) { to (k + 1) = from (i) i = i + 1 } to (k + 1) = EOS return (k) end #-t- slstr 4_78 ascii 06/10/83 15:33_28 ascii 06/10/83 15:35:00 #-h- stcopy 1_112 ascii 06/10/83 15:35:00 ## stcopy - copy string updates dest. subroutine stcopy(in, i, out, j) character in(ARB), out(ARB) integer i, j, k for (k=i; in(k) != EOS; k=k+1) { } return end #-t- stdel 2_73 ascii 06/10/83 15:35:00 #-h- strcmp 3_104 ascii 06/10/83 15:35:00 ## strcmp - compare 2 strings integer function strcmp (str1, str2) character str1(ARB), str2(ARB) integerim trailing blanks and tabs from a string integer function strim (str) character str (ARB) integer lnb, i lnb = 0 for (i = 1; str (i) != EOS; i = i + 1) if (str (i) != BLANK & str (i) != TAB) lnb = i str (lnunlink 2_86 ascii 06/10/83 15:35:00 #-h- upper 1_79 ascii 06/10/83 15:35:00 ## upper - fold all alphas to upper case subroutine upper (token) character token(ARB), cupper integer i for (i=1; token(i<= 0) { lmonth = lmonth + 12 lyear = lyear - 1 } wkday = mod (lday + (26 * lmonth - 2) / 10 + lyear + lyear / 4 - 34, 7) + 1 return end #-t- wkday 3_116 ascii 06/10/83 15:35:00 #-h- type 5:00 #-h- stake 3_28 ascii 06/10/83 15:35:00 ## stake --- take characters from a string APL-style integer function stake (from, to, chars) character from (ARB), to (ARB) integer chars integer len, start intege out(j) = in(k) j = j + 1 } out(j) = EOS return end #-t- stcopy 1_112 ascii 06/10/83 15:35:00 #-h- stdel 2_73 ascii 06/10/83 15:35:00 ## stdel - delete substring of 'len' chars, starting at  i for (i=1; str1(i) == str2(i); i=i+1) { if (str1(i) == EOS) { strcmp = 0 return } } if (str1(i) == EOS) strcmp = -1 else if (str2(i) == EOS) b + 1) = EOS return (lnb) end #-t- strim 2_56 ascii 06/10/83 15:35:00 #-h- unlink 2_86 ascii 06/10/83 15:35:00 ## unlink - remove buffer from any circular queue it may be in # Copyright 1981 by Unicorn) != EOS; i=i+1) token(i) = cupper(token(i)) return end #-t- upper 1_79 ascii 06/10/83 15:35:00 #-h- wkday 3_116 ascii 06/10/83 15:35:00 ## wkday --- get day-of-week corresponding to month,day,year  2_12 ascii 06/10/83 15:35:00 ## type - determine type of character character function type (c) character c if ( (c >= LETA & c <= LETZ) | ( c >= BIGA & c <= BIGZ)) type = LETTER else if (c >= DIG0 & c <= DIG9) r length, ctoc len = length (from) if (chars < 0) { start = max0 (len + chars, 0) return (ctoc (from (start + 1), to, len + 1)) } else return (ctoc (from, to, chars + 1)) end #-t- stake 'from' subroutine stdel (str, from, len) character str (ARB) integer from, len integer length, i, j j = length(str) + 1 i = from + len if (j < i) i = j for (j=from; i > j; j=j+1) { str(j) = str(i) if (str(j) == EOS) break i = i + 1  strcmp = + 1 else if (str1(i) < str2(i)) strcmp = -1 else strcmp = +1 return end #-t- strcmp 3_104 ascii 06/10/83 15:35:00 #-h- strim 2_56 ascii 06/10/83 15:35:00 ## strim --- tr Systems, Castro Valley, CA 94546 pointer function unlink(buf) pointer buf DS_DECLARE pointer prev, nxtp prev = Mem(buf+PREVBUF) nxtp = Mem(buf+NEXTBUF) Mem(prev+NEXTBUF) = nxtp Mem(nxtp+PREVBUF) = prev return(prev) end #-t-  # NOTE: 20th century is assumed, no matter what is passed integer function wkday (month, day, year) integer month, day, year integer lmonth, lday, lyear lmonth = month - 2 lday = day lyear = mod (year, 100) if (lmonth  type = DIGIT else type = c return end #-t- type 2_12 ascii 06/10/83 15:35:00 #-h- chkdat 9_104 ascii 06/10/83 15:35:00 ## chkdat - check date and time for out-of-range # Copyright 1981 by    Unicorn Systems, Castro Valley, CA 94546 integer function chkdat (date) integer date(7) # date(1) = year # date(2) = month # date(3) = day # date(4) = hour # date(5) = minute # date(6) = second # date(7) = millisecond integer mlen(1date(1),4) != 0 | ((mod(date(1),100) == 0) & (mod(date(1),400) != 0) )) return (ERR) # check hour if (date(4) < 0 | date(4) > 23) return (ERR) # check minute if (date(5) < 0 | date(5) > 59) return (ERR) str,1,month,1,3) month(4) = EOS call fold(month) for (i=1; i<=12; i=i+1) if (stncmp(month,months(3*i-2),3) == 0) return(i) return(ERR) end #-t- gmonth 2_125 ascii 06/10/83 15:35:00 #-h- ctoi 4_14 asUS) ctoi = (-ctoi) return end #-t- ctoi 4_14 ascii 06/10/83 15:35:00 #-h- delete 2_97 ascii 06/10/83 15:35:00 ## delete - remove a symbol from the symbol table subroutine delete (symbol, st) charne fmtdat (date, time, now, form) character date(ARB), time(ARB) integer now(7), form, year integer itoc #note:'form' selects the format of #the character representation #right now the only one used is: # MM/DD/YY HH:MM:SS if (itoc time(i+2) = COLON i = i + 3 } time(9) = EOS return end #-t- fmtdat 7_71 ascii 06/10/83 15:35:00 #-h- getnow 1_111 ascii 06/10/83 15:35:00 ## getnow - get current time and date (in integers) # Copyrig2) data mlen(1), mlen(2), mlen(3), mlen(4), mlen(5), mlen(6), mlen(7), mlen(8), mlen(9), mlen(10), mlen(11), mlen (12) /31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 / # check year if (date(1) < 0 ) return (ERR) if (date(1) <  # check second if (date(6) < 0 | date(6) > 59) return (ERR) # check millisecond if (date(7) < 0 | date(7) > 999) return (ERR) return (OK) end #-t- chkdat 9_104 ascii 06/10/83 15:35:00 #-h- gmonth 2cii 06/10/83 15:35:00 ## ctoi - convert string at in(i) to integer, increment i integer function ctoi (in, i) character in (ARB) integer index, mul10 character sign integer d, i string digits "0123456789" call skipbl (in, i) sign = PLUacter symbol (ARB) pointer st DS_DECL(Mem, 1) integer stlu pointer node, pred if (stlu (symbol, node, pred, st) == YES) { Mem (pred + ST_LINK) = Mem (node + ST_LINK) call dsfree (node) } return end (now(2), date(1), 3) == 1) #only needed 1 character { date(2) = date(1) date(1) = DIG0 } date(3) = SLASH if (itoc (now(3), date(4), 3) == 1) { date(5) = date(4) date(4) = DIG0 } date(6) = SLASH year = now(1) if (year > 99) yearht 1981 by Unicorn Systems, Castro Valley, CA 94546 subroutine getnow (now) integer now(7) include config for (i=1; i<=7; i=i+1) now(i) = ddate(i) return end #-t- getnow 1_111 ascii 06/10/83 15:35:00 #-h- makpat 100) date(1) = date(1) + 1900 # check month if (date(2) < 1 | date(2) > 12) return (ERR) # check day m = date(2) if (date(3) < 1 | date(3) > mlen(m)) return (ERR) if (m == 2 & date(3) == 29) # make sure it's a leap year if ( mod(_125 ascii 06/10/83 15:35:00 ## gmonth - get month number associated with name integer function gmonth (str) character str(ARB) character buf(MAXPAT), month(4) integer stncmp string months "janfebmaraprmayjunjulaugsepoctnovdec" call stncpy(S if (in(i) == MINUS) { sign = MINUS i = i + 1 } else if (in(i) == PLUS) i = i + 1 for (ctoi = 0; in(i) != EOS; i = i + 1) { d = index (digits, in(i)) if (d == 0) #non-digit break ctoi = mul10(ctoi) + d - 1 } if (sign == MIN #-t- delete 2_97 ascii 06/10/83 15:35:00 #-h- fmtdat 7_71 ascii 06/10/83 15:35:00 ## fmtdat - convert date information to character string # Copyright 1981 by Unicorn Systems, Castro Valley, CA 94546 subrouti = mod(year, 100) if (itoc (year, date(7), 3) == 1) { date(8) = date(7) date(7) = DIG0 } date(9) = EOS # get time i = 1 for (j=4; j<=6; j=j+1) { if (itoc(now(j), time(i), 3) == 1) { time(i+1) = time(i) time(i) = DIG0 } 10_121 ascii 06/10/83 15:35:00 ## makpat - make pattern from arg(from), terminate at delim integer function makpat(arg, from, delim, pat) character esc character arg(MAXARG), delim, pat(MAXPAT) integer addset, getccl,    stclos integer from, i, j, junk, lastcl, lastj, lj j = 1 # pat index lastj = 1 lastcl = 0 for (i = from; arg(i) != delim & arg(i) != EOS; i = i + 1) { lj = j if (arg(i) == ANY) junk = add = stclos(pat, j, lastj, lastcl) } else { junk = addset(CHAR, pat, j, MAXPAT) junk = addset(esc(arg, i), pat, j, MAXPAT) } lastj = lj } if (arg(i) != delim) # terminated ear break if (c == NEWLINE) call putch$ (13,fd) call putch$ (c,fd) } return end #-t- putlin 2_80 ascii 06/10/83 15:35:00 #-h- scopy 2_47 ascii 06/10/83 15:35:00 ## scopy - copy stcharacter line(ARB) integer i integer fd character getch for (i=1; ;i=i+1) { if (getch(line(i), fd) == NEWLINE) { line(i+1) = EOS d #-t- getlin 6_107 ascii 06/10/83 15:35:00 #-h- amatch 10_100 ascii 06/10/83 15:35:00 ## amatch (non-recursive) - look for match starting at lin(from) integer function amatch(lin, from, pat) character eak pat(stack+COUNT) = i - offset pat(stack+START) = offset offset = i # character that made us fail } else if (omatch(lin, offset, pat, j) == NO) { # non-closure for ( ; stack > 0set(ANY, pat, j, MAXPAT) else if (arg(i) == BOL & i == from) junk = addset(BOL, pat, j, MAXPAT) else if (arg(i) == EOL & arg(i + 1) == delim) junk = addset(EOL, pat, j, MAXPAT) else if (arg(i) == CCL) { ly makpat = ERR else if (addset(EOS, pat, j, MAXPAT) == NO) # no room makpat = ERR else makpat = i return end #-t- makpat 10_121 ascii 06/10/83 15:35:00 #-h- putlin ring at from(i) to to(j) subroutine scopy(from, i, to, j) character from(ARB), to(ARB) integer i, j, k1, k2 k2 = j for (k1 = i; from(k1) != EOS; k1 = k1 + 1) { to(k2) = from(k1) k2 = k2 + 1 } to(k2)  getlin = i return } if (line(i) == EOF) { getlin = EOF line(i) = EOS return lin(MAXLINE), pat(MAXPAT) integer omatch, patsiz integer from, i, j, offset, stack stack = 0 offset = from # next unexamined input character for (j = 1; pat(j) != EOS; j = j + patsiz(pat, j)) if (pat(j) == CL; stack = pat(stack+PREVCL)) if (pat(stack+COUNT) > 0) break if (stack <= 0) { # stack is empty amatch = 0 # return failure return } pat(stack+C if (getccl(arg, i, pat, j) == ERR) break } else if (arg(i) == CLOSURE & i > from) { lj = lastj if (pat(lj)==BOL | pat(lj)==EOL | pat(lj)==CLOSURE) break lastcl 2_80 ascii 06/10/83 15:35:00 ## putlin - put out line by repeated calls to putch subroutine putlin (line, fd) character line(ARB) integer fd character c integer i for (i=1; ; i=i+1) { c = line(i) if (c == EOS)= EOS return end #-t- scopy 2_47 ascii 06/10/83 15:35:00 #-h- getlin 6_107 ascii 06/10/83 15:35:00 ## getlin - get line by repeated calls to getch integer function getlin (line, fd)  } if (i >= MAXLINE-1) { line(i+1) = EOS getlin = i return } } enOSURE) { # a closure entry stack = j j = j + CLOSIZE # step over CLOSURE for (i = offset; lin(i) != EOS; ) # match as many as if (omatch(lin, i, pat, j) == NO) # possible brOUNT) = pat(stack+COUNT) - 1 j = stack + CLOSIZE offset = pat(stack+START) + pat(stack+COUNT) } # else omatch succeeded amatch = offset return # success end #-t- amatch     10_100 ascii 06/10/83 15:35:00 #-h- putc 0_118 ascii 06/10/83 15:35:00 ## putc - put character onto STDOUT subroutine putc (c) character c call putch (c, STDOUT) return end #-t- putc 0_118 ascii /10/83 15:35:00 #-h- ilen 2_76 ascii 06/10/83 15:35:00 ## ilen - determine number integer words need to pack char string # Copyright 1981 by Unicorn Systems, Castro Valley, CA 94546 integer function ilen (str) character str(ARBeat { c = buf(i) if (c == EOS) break for (j=1; tok(j) != EOS; j=j+1) if (c == tok(j)) break if (tok(j) == EOS) break i = i+1 } return(i) end #-t- sktok 3_24 ascii 06/10/83 15:35:00 #-h- gettok end #-t- gettok 3_90 ascii 06/10/83 15:35:00 #-h- unpack 3_50 ascii 06/10/83 15:35:00 ## unpack - unpack characters from integers into character strings # Copyright 1981 by Unicorn Systems, Castro Valley, CA 9454t 1981 by Unicorn Systems, Castro Valley, CA 94546 # CP/M version - change for different systems integer function pack (str, int) character str(ARB) # integer int(ARB) character int(ARB) #Microsoft Fortran allows this - 'twill do #the right thii + 1) to (i) = from (i) to (i) = EOS return (i - 1) end #-t- ctoc 2_54 ascii 06/10/83 15:35:00 #-h- cupper 2_1 ascii 06/10/83 15:35:00 ## cupper - change letter to upper case 06/10/83 15:35:00 #-h- putstr 3_2 ascii 06/10/83 15:35:00 ## putstr - output character string in specified field subroutine putstr(str, w, fd) character str(ARB) integer length integer w, fd, len len = length(str) for) integer length # CP/M version - rewrite for your system: return ( (length(str) + 2) / 2) #don't forget to count #the EOS marker end #-t- ilen 2_76 ascii 06/10/83 15:35:00 #-h- sktok 3_24 as 3_90 ascii 06/10/83 15:35:00 ## gettok - get token delimited by any of sep, return size # Copyright 1981 by Unicorn Systems, Castro Valley, CA 94546 integer function gettok (buf,i,tok,sep) character buf(ARB), tok(ARB), sep(ARB) inte6 # CP/M version - change for different systems integer function unpack (int, str) character str(ARB) # integer int(ARB) character int(ARB) #fool CP/M and Microsoft Fortran integer i for (i=1; ; i=i+1) { str(i) = int(i) ifng integer i for (i=1; ; i=i+1) { int(i) = str(i) if (str(i) == EOS) break } return ( (i+1) / 2 ) #return the number of integers used end #-t- pack 3_114 ascii 06/10/83 15:35:00 #-h- ctoc 2 character function cupper(c) character c, k if (c >= LETA & c <= LETZ) cupper = c + (BIGA - LETA) else cupper = c return end #-t- cupper 2_1 ascii 06/10 (i = len+1; i <= w; i=i+1) call putch(BLANK, fd) for (i = 1; i <= len; i=i+1) call putch(str(i), fd) for (i = (-w) - len; i > 0; i = i - 1) call putch(BLANK, fd) return end #-t- putstr 3_2 ascii 06cii 06/10/83 15:35:00 ## sktok - skip past chars in token # Copyright 1981 by Unicorn Systems, Castro Valley, CA 94546 integer function sktok(buf,loc,tok) character buf(ARB), tok(ARB) integer loc integer i,j character c i = loc repger i integer j,k character c for (j = 1; buf(i) != EOS; i = i+1) { c = buf(i) for (k = 1; sep(k) != EOS; k = k+1) if (c == sep(k)) { tok(j) = EOS return(j-1) } tok(j) = c j = j+1 } tok(j) = EOS return(j-1)  (str(i) == EOS) break } return(i-1) end #-t- unpack 3_50 ascii 06/10/83 15:35:00 #-h- pack 3_114 ascii 06/10/83 15:35:00 ## pack - pack characters into integer words; return nbr words needed # Copyrigh_54 ascii 06/10/83 15:35:00 ## ctoc --- convert EOS-terminated string to EOS-terminated string integer function ctoc (from, to, len) integer len character from (ARB), to (len) integer i for (i = 1; i < len & from (i) != EOS; i = /83 15:35:00 #-h- fold 1_75 ascii 06/10/83 15:35:00 ## fold - fold all letters to lower case subroutine fold (token) character token(ARB), clower integer i for (i=1; token(i) != EOS; i=i+1) token(i) = clower(tok   en(i)) return end #-t- fold 1_75 ascii 06/10/83 15:35:00 #-h- stncpy 2_39 ascii 06/10/83 15:35:00 ## stncpy - copy n characters from in(i) to out(j) subroutine stncpy(in, i, out, j, n) character in(ARB (i == n | str1(i) == EOS) { stncmp = 0 return } } else break } if (str1(i) == EOS) stncmp = -1 else if (str2(i) == EOS) stncmp = +1 else if (str1(i) < str2(i)) stncmp = -1 else stncmp = +1 return end #-t- stnnode, pred, st) character symbol (ARB) pointer node, pred, st integer hash, j, nodsiz integer i integer equal ifnotdef(CPM, integer unpack; character buf(MAXLINE) ) DS_DECL(Mem, 1) nodsiz = Mem (st) hash = 0 0/83 15:35:00 #-h- itoc 5_62 ascii 06/10/83 15:35:00 ## itoc - convert integer int to char string in str integer function itoc(int, str, size) character d integer i, int, intval, j, k, size character str(size end #-t- itoc 5_62 ascii 06/10/83 15:35:00 #-h- stclos 5_19 ascii 06/10/83 15:35:00 ## stclos - insert closure entry at pat(j) integer function stclos(pat, j, lastj, lastcl) character pat(MAXP return end #-t- stclos 5_19 ascii 06/10/83 15:35:00 #-h- getccl 5_26 ascii 06/10/83 15:35:00 ## getccl - expand char class at arg(i) into pat(j) integer function getccl(arg, i, pat, j) c), out(ARB) integer i,j,n integer k,l,m character c l = j + n m = i for (k=j; k= size) if (int < 0AT) integer addset integer j, jp, jt, junk, lastcl, lastj for (jp = j - 1; jp >= lastj; jp = jp - 1) { # make a hole jt = jp + CLOSIZE junk = addset(pat(jp), pat, jt, MAXPAT) } j = j + CLOSIZE haracter arg(MAXARG), pat(MAXPAT) integer addset integer i, j, jstart, junk i = i + 1 # skip over [ if (arg(i) == NOT) { junk = addset(NCCL, pat, j, MAXPAT) i = i + 1 } else junk = cmp 3_66 ascii 06/10/83 15:35:00 ## stncmp - compare first n chars of strings integer function stncmp (str1, str2, n) character str1(ARB), str2(ARB) integer n,i for (i=1; i<=n; i=i+1) { if (str1(i) == str2(i)) { if | lin(i) == TAB) i = i + 1 return end #-t- skipbl 1_67 ascii 06/10/83 15:35:00 #-h- stlu 6_30 ascii 06/10/83 15:35:00 ## stlu - symbol table lookup primitive integer function stlu (symbol,  == YES) return(YES) ) ifnotdef(CPM, i = unpack(Mem(j), buf(1)) if (equal(symbol, buf) == YES) return(YES) ) pred = node node = Mem (pred + ST_LINK) } return (NO) end #-t- stlu 6_30 ascii 06/1 & i < size) { # then sign i = i + 1 str(i) = MINUS } itoc = i - 1 for (j = 1; j < i; j = j + 1) { # then reverse k = str(i) str(i) = str(j) str(j) = k i = i - 1 } returnstclos = lastj junk = addset(CLOSURE, pat, lastj, MAXPAT) # put closure in it junk = addset(0, pat, lastj, MAXPAT) # COUNT junk = addset(lastcl, pat, lastj, MAXPAT) # PREVCL junk = addset(0, pat, lastj, MAXPAT) # STARTaddset(CCL, pat, j, MAXPAT) jstart = j junk = addset(0, pat, j, MAXPAT) # leave room for count call filset(CCLEND, arg, i, pat, j, MAXPAT) pat(jstart) = j - jstart - 1 if (arg(i) == CCLEND) getccl = OK else    getccl = ERR return end #-t- getccl 5_26 ascii 06/10/83 15:35:00 #-h- patsiz 4_19 ascii 06/10/83 15:35:00 ## patsiz - returns size of pattern entry at pat(n) integer function patsiz(p- omatch 8_57 ascii 06/10/83 15:35:00 ## omatch - try to match a single pattern at pat(j) integer function omatch(lin, i, pat, j) character lin(MAXLINE), pat(MAXPAT) character lini, patj integer locate intCCL) { if (locate(lini, pat, j + 1) == YES) bump = 1 } else if (patj == NCCL) { if (lini != NEWLINE & locate(lini, pat, j + 1) == NO) bump = 1 } else call error('in omatch: ca 2_115 ascii 06/10/83 15:35:00 ## clower - change letter to lower case character function clower(c) character c, k if (c >= BIGA & c <= BIGZ) { #avoid integer overflow in byte machines { equal = YES return } equal = NO return end #-t- equal 2_84 ascii 06/10/83 15:35:00 #-h- filset 8_84 ascii 06/10/83 15:35:00 ## filset - expand set at ar (array(i) != DASH) junk = addset(array(i), set, j, maxset) else if (j <= 1 | array(i+1) == EOS) # literal - junk = addset(DASH, set, j, maxset) else if (index(digits, set(j-1)) > 0) call dodash(digits, arat, n) character pat(MAXPAT) integer n character patn patn = pat(n) if (patn == CHAR) patsiz = 2 else if (patn == BOL | patn == EOL | patn == ANY) patsiz = 1 else if (patn == CCL | patn == NCCL)eger bump, i, j omatch = NO lini = lin(i) patj = pat(j) if (lini == EOS) return bump = -1 if (patj == CHAR) { if (lini == pat(j + 1)) bump = 1 } else if (patj == BOL) { nt happen.') if (bump >= 0) { i = i + bump omatch = YES } return end #-t- omatch 8_57 ascii 06/10/83 15:35:00 #-h- length 1_56 ascii 06/10/83 15:35:00 ## length - com k = LETA - BIGA clower = c + k } else clower = c return end #-t- clower 2_115 ascii 06/10/83 15:35:00 #-h- equal 2_84 ascii ray(i) into set(j), stop at delim subroutine filset(delim, array, i, set, j, maxset) character esc integer addset, index integer i, j, junk, maxset character array(ARB), delim, set(maxset) string digits '0123456789' sray, i, set, j, maxset) else if (index(lowalf, set(j-1)) > 0) call dodash(lowalf, array, i, set, j, maxset) else if (index(upalf, set(j-1)) > 0) call dodash(upalf, array, i, set, j, maxset) else junk patsiz = pat(n + 1) + 2 else if (patn == CLOSURE) # optional patsiz = CLOSIZE else call error('in patsiz: cant happen.') return end #-t- patsiz 4_19 ascii 06/10/83 15:35:00 #-h if (i == 1) bump = 0 } else if (patj == ANY) { if (lini != NEWLINE) bump = 1 } else if (patj == EOL) { if (lini == NEWLINE) bump = 0 } else if (patj == pute length of string integer function length (str) character str(ARB) for (length=0; str(length+1) != EOS; length = length + 1) ; return end #-t- length 1_56 ascii 06/10/83 15:35:00 #-h- clower 06/10/83 15:35:00 ## equal - compare str1 to str2; return YES if equal, NO if not integer function equal (str1, str2) character str1(ARB), str2(ARB) integer i for (i=1; str1(i) == str2(i); i=i+1) if (str1(i) == EOS) tring lowalf 'abcdefghijklmnopqrstuvwxyz' string upalf 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' for ( ; array(i) != delim & array(i) != EOS; i = i + 1) if (array(i) == ESCAPE) junk = addset(esc(array, i), set, j, maxset) else if = addset(DASH, set, j, maxset) return end #-t- filset 8_84 ascii 06/10/83 15:35:00 #-h- locate 3_22 ascii 06/10/83 15:35:00 ## locate - look for c in char class at pat(offset) integer function l   ocate(c, pat, offset) character c, pat(MAXPAT) integer i, offset # size of class is at pat(offset), characters follow for (i = offset + pat(offset); i > offset; i = i - 1) if (c == pat(i)) { locate = YES  = index(valid, esc(array, i)) for (k = index(valid, set(j)); k <= limit; k = k + 1) junk = addset(valid(k), set, j, maxset) return end #-t- dodash 3_96 ascii 06/10/83 15:35:00 #-h- index ) integer j, maxsiz character c, str(maxsiz) if (j > maxsiz) addset = NO else { str(j) = c j = j + 1 addset = YES } return end #-t- addset 2_44 ascii 06/10/83 15:3 esc = TAB else esc = array(i) } return end #-t- esc 4_24 ascii 06/10/83 15:35:00 å0 #-h- reset.r 1_96 ascii 08/30/83 12:30:00 DRIVER(reset) character args(MAXLINE) string pmpt "'return' when ready " call mkarg$ (args) if (args(1) != EOS) { call outl$ (args) call prompt (pmpt, args, STDIN) } call return } locate = NO return end #-t- locate 3_22 ascii 06/10/83 15:35:00 #-h- dodash 3_96 ascii 06/10/83 15:35:00 ## dodash - expand array(i-1)-array(i+1) into set(j)... fr 1_127 ascii 06/10/83 15:35:00 ## index - find character c in string str integer function index(str, c) character c, str(ARB) for (index = 1; str(index) != EOS; index = index + 1) if (str(index) == c) return 5:00 #-h- esc 4_24 ascii 06/10/83 15:35:00 ## esc - map array(i) into escaped character if appropriate character function esc (array, i) character array(ARB) integer i if (array(i) != ESCAPE) esc = array(i) eåå bdos$d (13, 0) DRETURN end #-t- reset.r 1_96 ascii 08/30/83 12:30:00 #-t- reset.rat 2_92 ascii 08/30/83 12:30:00 #-t- reset.ar 4_95 ascii 09/02/83 09:15:00 #-h- rev.ar 12_80 om valid subroutine dodash(valid, array, i, set, j, maxset) character esc integer addset, index integer i, j, junk, k, limit, maxset character array(ARB), set(maxset), valid(ARB) i = i + 1 j = j - 1 limitindex = 0 return end #-t- index 1_127 ascii 06/10/83 15:35:00 #-h- addset 2_44 ascii 06/10/83 15:35:00 ## addset - put c in string(j) if it fits, increment j integer function addset (c, str, j, maxsizlse if (array(i+1) == EOS) # @ not special at end esc = ESCAPE else { i = i + 1 if (array(i) == LETN | array(i) == BIGN) esc = NEWLINE else if (array(i) == LETT | array(i) == BIGT) å#-h- reset.ar 4_95 ascii 09/02/83 09:15:00 #-h- list 0_11 ascii 08/30/83 12:30:00 reset.rat #-t- list 0_11 ascii 08/30/83 12:30:00 #-h- reset.rat 2_92 ascii 08/30/83 12:30:0ascii 09/02/83 09:15:00 #-h- list 0_9 ascii 08/30/83 12:30:00 rev.rat #-t- list 0_9 ascii 08/30/83 12:30:00 #-h- rev.rat 10_79 ascii 08/30/83 12:30:00 #-h- defns 0_62    ascii 08/30/83 12:30:00 # include general symbol definitions # include ratdef #-t- defns 0_62 ascii 08/30/83 12:30:00 #-h- rev 4_111 ascii 08/30/83 12:30:00 # rev - reverse lines DRIVER character iles given, read STDIN call revl(STDIN) DRETURN end #-t- rev 4_111 ascii 08/30/83 12:30:00 #-h- revl 2_46 ascii 08/30/83 12:30:00 ## revl - reverse lines in file 'fd' subroutine revl(fd) int 0_8 ascii 08/30/83 12:30:00 rm.rat #-t- list 0_8 ascii 08/30/83 12:30:00 #-h- rm.rat 20_73 ascii 08/30/83 12:30:00 #-h- rm 10_97 ascii 08/30/83 12:30:00 # rm - remove (delete) filepen users terminal for prompting ttyin = open(trmin, READ) #open users terminal for prompting ttyout = open(trmout, WRITE) if (ttyin == ERR | ttyout == ERR) call error ("can't open users terminal.") } == EOF) break } DRETURN end #-t- rm 10_97 ascii 08/30/83 12:30:00 #-h- kill 7_112 ascii 08/30/83 12:30:00 ## kill - remove file; asking permission if requested integ(1) == LETQ | line(1) == BIGQ) # quit return(EOF) else if ((line(1) ^= LETY) & (line(1) ^= BIGY)) return(OK) } if (remove(name) == ERR) { call putlin(name, ERROUT) call remark(lin(MAXLINE) integer i, fd integer getarg, open call query ("usage: rev [files].") for (i=1; getarg(i, lin, FILENAMESIZE) != EOF; i=i+1) { if (lin(1) == MINUS & lin(2) == EOS) fd = STDIN else eger fd, i integer getlin character lin(MAXLINE) for (i = getlin(lin, fd); i ^= EOF; i = getlin(lin, fd)) { for (i = i - 1; i > 0; i = i - 1) call putc(lin(i)) call putc(NEWLINE) } return end #-t- revl s DRIVER character arg(MAXLINE) integer i, j, vflag, aflag, ttyin, ttyout, len integer getarg, open, getlin, kill string trmin TERMINAL_IN string trmout TERMINAL_OUT vflag = NO aflag = NO for (i = 1; getarg(i, arg, MAXLI else if (arg(1) == QMARK & arg(2) ==EOS) call error ("usage: rm [-v] [-a] [files].") else if (arg(1) == MINUS & arg(2) == EOS) { for (len=getlin(arg,STDIN); len!=EOF; len=getlin(arg,STDIN)) { er function kill (name, aflag, vflag, ttyin, ttyout) character name(ARB), line(MAXLINE) integer aflag, vflag, ttyin, ttyout integer getlin, remove if (aflag == YES) { call putlin(name, ttyout) call putch(BLANK, ttyout) ": can't remove.") } else if (vflag == YES) { call putlin(name, ERROUT) call putch(NEWLINE, ERROUT) } return(OK) end #-t- kill 7_112 ascii 08/30/83 12:30:00 #-t- rm.rat  { fd = open(lin, READ) if (fd == ERR) call cant(lin) } call revl(fd) if (fd != STDIN) call close(fd) } if (i == 1) # no f 2_46 ascii 08/30/83 12:30:00 #-t- rev.rat 10_79 ascii 08/30/83 12:30:00 #-t- rev.ar 12_80 ascii 09/02/83 09:15:00 #-h- rm.ar 22_73 ascii 09/02/83 09:15:00 #-h- list NE) ^= EOF; i = i + 1) { if (arg(1) == MINUS & (arg(2) == LETV | arg(2) == BIGV)) vflag = YES else if (arg(1) == MINUS & (arg(2) == LETA | arg(2) == BIGA)) { aflag = YES call termin(arg) #o arg(len) = EOS # remove NEWLINE char if ( kill (arg, aflag, vflag, ttyin, ttyout) == EOF) break } } else if ( kill (arg, aflag, vflag, ttyin, ttyout) call putch(QMARK, ttyout) call putch(BLANK, ttyout) call flush (ttyout) if (getlin(line, ttyin) == EOF) return(EOF) if (line(1) == LETG | line(1) == BIGG) aflag = NO else if (line 20_73 ascii 08/30/83 12:30:00 #-t- rm.ar 22_73 ascii 09/02/83 09:15:00 WLINE, ERROUT) } return(OK) end #-t- kill 7_112 ascii 08/30/83 12:30:00 #-t- rm.rat    åT,8%04) # define(ENQ,8%05) # define(ACK,8%06) # define(BEL,8%07) # define(BS,8%10) # define(HT,8%11) # define(LF,8%12) # define(VT,8%13) # define(FF,8%14) # define(CR,8%15) # define(SO,8%16) # define(SI,8%17) # define(DLE,8%20) # ame as ampersand define(APPEND,4) define(ARB,100) define(ASCII,12) # flag for ascii character file define(ATSIGN,64) define(BACKSLASH,92) define(BACKSPACE,8) define(BANG,33) # exclamation mark define(BAR,12fine(BIGT,84) define(BIGU,85) define(BIGV,86) define(BIGW,87) define(BIGX,88) define(BIGY,89) define(BIGZ,90) define(BINARY,60) # flag for indicating binary file define(BLANK,32) define(CARET,94) define(CHAR_D # you need to do to start a software # tools program running. define(DRIVER, call initst ifelse($1,, call main, call $1) call endst(OK) end ifelse($1,, subroutine main, subroutineILENAMESIZE,20) #max characters in file name # (including EOS) define(FORMFEED,11) define(GREATER,62) define(HOME_DIRECTORY,1) # define(HUGE,30000) #some arbitrarily large number define(LBRACE,123)ådefine(DC1,8%21) # define(DC2,8%22) # define(DC3,8%23) # define(DC4,8%24) # define(NAK,8%25) # define(SYN,8%26) # define(ETB,8%27) # define(CAN,8%30) # define(EM,8%31) # define(SUB,8%32) # define(ESC,8%33) # define(FS,8%34) # define4) define(BEGINNING_OF_FILE,-3) # flag to seek for positioning at # the beginning of a file define(BIGA,65) define(BIGB,66) define(BIGC,67) define(BIGD,68) define(BIGE,69) define(BIGF,70) defineEFN,-1) # flag for mktabl character data define(COLON,58) define(COMMA,44) define(COOKED,1) define(DASH,45) #same as MINUS define(DIG0,48) define(DIG1,49) define(DIG2,50) define(DIG3,51) define(DIG4,52) de $1) ) define(DRETURN,return) # this is the return statement from the # subroutine defined in DRIVER define(END_OF_FILE,-2) # flag to seek for positioning at # end of file define(EOF define(LBRACK,91) define(LESS,60) define(LETA,97) define(LETB,98) define(LETC,99) define(LETD,100) define(LETE,101) define(LETF,102) define(LETG,103) define(LETH,104) define(LETI,105) define(LETJ,106) de# General Symbols - include in every tool # CP/M environment define(CPM,) # CP/M version define(NEGDEF,) # ASCII control character definitions: # define(NUL,8%00) # define(SOH,8%01) # define(STX,8%02) # define(ETX,8%03) # define(EO(GS,8%35) # define(RS,8%36) # define(US,8%37) # define(SP,8%40) # define(DEL,8%177) # general symbols define(ACCENT,96) define(ALPHA,-9) define(AMPER,38) # ampersand define(AMPERSAND,38) define(AND,38) # s(BIGG,71) define(BIGH,72) define(BIGI,73) define(BIGJ,74) define(BIGK,75) define(BIGL,76) define(BIGM,77) define(BIGN,78) define(BIGO,79) define(BIGP,80) define(BIGQ,81) define(BIGR,82) define(BIGS,83) define(DIG5,53) define(DIG6,54) define(DIG7,55) define(DIG8,56) define(DIG9,57) define(DIGIT,2) define(DIRECTORY,2) define(DOLLAR,36) define(DQUOTE,34) # DRIVER is defined as those things ,-1) define(EOS,0) define(EQUALS,61) define(ERR,-3) define(ERROUT,3) #standard error file define(ESCAPE,ATSIGN) #escape character for ch, find, tr, ed, # and sh define(FILENAME,1) define(Ffine(LETK,107) define(LETL,108) define(LETM,109) define(LETN,110) define(LETO,111) define(LETP,112) define(LETQ,113) define(LETR,114) define(LETS,115) define(LETT,116) define(LETTER,1) define(LETU,117) define   (LETV,118) define(LETW,119) define(LETX,120) define(LETY,121) define(LETZ,122) define(LOCAL,6) # flag for local-type character file and pathnames define(LPAREN,40) define(MAXARG,128) # max size of strings to be e(MAXPAT,64) #max size of encoded patterns define(MAXPATH,50) # max chars in path pre- or suffix list # (used in string matching) define(MAXTOK,25) define(MINUS,45) define(NCHARS,33) # number of spe(QMARK,63) define(RARE,2) define(RAW,3) define(RBRACE,125) define(RBRACK,93) define(READ,1) # flag to open file at read access define(READWRITE,3) #flag to open file at read/write access define(RPAREN,41) deine(YES,1) # Definitions of language extensions define(character,byte) define(CHARACTER,character) define(short_int,byte) define(pointer,integer) define(POINTER,pointer) define(max,max0) define(min,min0) define(MAX,max) dååncoded # for pattern matching define(MAXCHARS,20) # max nbr of chars when converting # from integers to characters # (used by putint, outnum, etc.) definecial characters define(NEWLINE,10) # character used to mark end-of-line define(NO,0) define(NOERR,0) #flag for successful completion define(NOT,BANG) #choose your favorite: ! ^ or ~ fine(SEMICOL,59) define(SHARP,35) define(SLASH,47) define(SQUOTE,39) define(STDERR,ERROUT) define(STDIN,1) #standard input file define(STDOUT,2) #standard output file define(STAR,42) define(TAB,9) defefine(MIN,min) define(andif,if) define(DS_DECLARE,integer Mem(5);common /cdsmem/Mem) define(DS_DECL,integer $1(5);common /cdsmem/$1) define(ABS,IABS) define(abs,iabs) define(filedes,integer) define(IS_DIGIT,(DIG0<=$1&$1<=DIG9)) # valå…‘ÑUS• dtUDTåhy=I1% )¨�ÓÓ‘’Qâ“- %>(ð”ÒS•‰"Š`M!95N(�Ó•“â€@9X’\RT–€KŠ€2Ð qX Z.,K@%Å Ih¸¸‹-—€e ã„´\b –€KŒ€’Ð q˜Z.4*K@%Æ Yh¸ØA-—€e ã€ ´\rX–€KŽ€’Ð qØZ.<+K@%Ç  h¸ø‡-—€% ä”´\‚Le(MAXLINE,128) #normal size of line buffers; #must be at least 1 more than MAXCARD define(MAXNAME,FILENAMESIZE) #max size of file name define(MAXOFILES,10) #max nbr opened files allowed at a time define #(used in pattern matching) define(NULL,0) #empty pointer define(OK,0) # success flag define(OR,BAR) define(PATH,2) # flag for UNIX-style pathnames define(PERCENT,37) define(PERIOD,46) define(PLUS,43) definine(TERMINAL_IN,"CON:") #name of input channel to users console define(TERMINAL_OUT,"CON:") #name of output channel to users console define(TILDE,126) define(UNDERLINE,95) define(WRITE,2) # flag to open file at write access defid only for ASCII! define(IS_LETTER,(IS_UPPER($1)|IS_LOWER($1))) define(IS_LOWER,(LETA<=$1&$1<=LETZ)) define(IS_UPPER,(BIGA<=$1&$1<=BIGZ)) define(MAX_INTEGER,32767) #******* end of symbols ******* å–€K�€rÐ r‚Z.D(K@%È h¹©-—#€% ä€´\’E–€K’€ Ð rXRZ.LK@%É h¹8©-—'€e åt´\¢D–€K”€Ð r˜2Z.T$Ë@%Ê 9h¹X©-—+€% å€´´\²E–€K–€ RÐ rØ Z.\'Ë@%Ë 9h¹x‹-—/€% ¨59X“€ ÆY€nÂ3�óüeÀ\   ^2Ì v!ƒ”ÒS•‰9 4˜�+ÆPj:*r±'€9M!95O‘€3@!ˆÄgÐ:ÕÌZ5€)ñxË0-Ø@&bˆÄ - %?û3@%Ÿ@ëW1ýhÖ§Åã,À·a 0bÆ*Ä êfx«0€Ä?Øš@ %àÐŽ%ÿ`h}­\Çõ£XŸŒ³Ý„0À ŒðG€°4€@,N>Œ±  €q8‡€3lhôµsÖƒÖ±ý>/f»ë5�-` |^2Ì v>Œ¼( ˜¤± XÖ§Åã,À·aàËÃLX¦*S€)ˆxǘcz1¥˜Ã€ÌM€f! ,;¦1îb@àË0í¸Å  cBèà`!f€ ™CÄœŒ–€DõTè˘ CTOIŒš�D5Dô8ÊpGETLINŒà€dtUEu$HÎàEQUAL˜•‚0!�bXFH*zª¢a$e쪨("©Fj€2šZJ‚deì ¡¦'©¢Ía€£ Q9Zp…TÒdü#3ÄX“( š‹€G@2‚’²rz$à…“RÐT‘É dÔ´$rHy=I1% (�ÑÓQSDX\A–�€K‚@RÐ0 pPžZ. 9Ë@À%Á€©h¸4A-—% `¨9 M57‚PÈ‹€p(47…Óæq`P‹€p«€:Ä8<š °¬U€@",¯`ð¸„`0Ž`h*À`,+uаdE„@X<Ö*À “óXŸa0V?5…Í` |C„ÀÂ8 šp4`0HGÿ†OÂ31¼E€ÀtXbj*À Ú‚É”FNÀ2ªrbJr\ed")£)"¢ÍW# I1MRp…’S’‘PÕ d”ä¤T5Hy=I1% (�ÑÓQSDX$Ö"Á`H‹€ °høFf7ŠB0r"šj*o Ÿ„fcx‹€Ï u«˜þ´kSâñ–[°€V f€,1/`ðŒE‡8pš°¸ôµsÖ�` |^2Ã` v.7�N‚y˜@m2›Mç#ȺZ¸[¬U‚@",<*Ã`��þÿ Ÿ„fc{¬U‡€b3�« €ÄX\‡p@&; ÀV`L €2úÕÐã0À19Q"2ÉU&¤ 1Ð °¨¤‚†©8…PSSÕ‘`TÔõdXy=I1%E‚@b,!~¿ÄX#†€X$š ³G °X6Š ³ Ö§ÆY”u˜ÀÀ6°>!Ì  axË3-Ø@«€2f'ààË €°ÈXO‹ÆY”nÂXde™@8dÞO™Ã",Î:Ì zo §ÌÑÓQSDX$#¡¤§ý V f€,:ú` aþŸ`ðÖ c?Óâ¶Œ°€Ý„_¯ñdÌJ€?Hš  ä4ôäd”:!‚ÐÒSþ�4AÈiéÈÉ(þpU!¢)¦¢¦ð@ˆaŒ†’Ÿô€8Dš@dÊÀ#!@A -962nÑÕI#( ’2¬ÒÑf«àÐ †®ˆ’¥8…‘Ñ�UV dtE$Uˆy=I1% (�ÑÓQSb“- %p(4—áp f€³èjæ?­Àø¼e˜ì u‰­` |^2Ì vÄ ìÍ£(9 =9%Œ0À �èë5€M` |^2Ì v*Ä - %?ú€DY„`ä4ôäd”~*Ì Ð†LG@GX�¬kSâñ–`[°€ðeˆÀXŒ¬µ�éñ–`[°€Ö#7…ÓæqHG„DY„#‰@0ZJöfÐ`X«0€Äg!Ö# ±¦€ÌVÀX`Åu‰ÀF°>/ EU4ˆy=I1%E‚@b,*Á`Bh«€:ÅX$š°&PÉ)ÉH¨j“Q èPUSHœ„ÔÔ 5õy=I1% (�ÑÓQSDX$Ö"Á`H‹€ °høFf7ŠB0r"šj*oþÿ Ÿ„fcx‹€K„À0ˆ´|Uƒ@XT„ÀX,Ö*Á ÐE€@8Dš °&P.0Ë ŠH(j‘“� ¤Ššœž‰5?Ž€5õ À…”‘SS“Ñ e$TÔäôHy=I1% (�ÑÓQSDXU€Âñ–[°€f€®?€", 8šp(„f€:!¶€†L_€`ư‡@À&5à ™@¨ƘŒˆ€ETT¹Œˆ,É©êɨd‘”° ¦–’ „™„©êªŠd‘™p ž–‹©ÈH‰êdˆ“0PkvÉ©h*Hä“€…“PRÓÕ dÔ´Å5Hy=I1% (�ÑÓQSDX$B3@ >�Ö®cúѬO‹ÆX<nÂ%Â3 ¸NtM†ÃyŒÂt2ˆ †“q!ÃÀ Ðb´Âà¬Í ‹ € °˜¬UƒÀiSyé8g>�Ö®cúÐzÖ?§ÆXlnÂX\Fëa0È‹ € B?ûü2"À¬&)ŠÝb¬?ÌÆ÷X«Äg!Vˆ°˜¸€Lc@X\E€@2‚ÀɨILENŒ£TE4tUHËERRORŒ´€TĔ䵮Pt$§%"¡ªN…–�PÕ e…E$5Hy=I1% (�ÑÓQSDX$Ö"Á`à‡€3@V ?ÌÆ÷X«€„fcyí*o='á‘ifpð«4€%šÀøË3-Ø@«€LbXdx2à :”1‹a�°5¬O‹ÆY”nÂX“1¥f@°>/fP»ãàh:Ã@|–kSâñ–e[°€Ž>á h"À ™ŽxÆÜ" °H4aPŒF}­\Çõ£XŸŒ³(Ý„ °&cøX,š°¸ŒF#>�Ö®cúѬO‹ÆY”nÂX“1 f@°>2Ì ¬ÆÖ§Ä9”L/f`»%¡àâð´<\`R–‡€KŒ@òÐð q�>Z.3KCÀ%Æ€ hx¸ÔA-—¥¡àãp|´<\pW–‡€KŽ@Ðð qЂZ.;KCÀ%Ç€9hx¸ô³-—å¡àãð´<U€@Â31¼Rƒ�ÑÓQSxdE�8$U� Dà�h#b Ž ˆ²dX«€3@ˆ!Á ÐE‰b1ôµsÖ�` |^2È@ v!Á ÐbÌ*Ä€�f»bP�õ Ÿ†Przr2J? a€pÖ$kZÀø¼e˜ì |AÈiÊŠIˆ|†Lm@GX�¬kSâñ–`[°€V%Áhi)ÿÔ2"Ì #!§§#$£òVafÓ01Íb@°¬O‹ÆY€nÂX”#¡¤§ÿPÈ‹0€nÐFCONFIGê`¬Âͼ`,0cì:Ä€ `CXŸŒ³Ý„ ±(F CIOþ ‘a€9 =9%À ³6†0À ˆø@ ‹€ °øFf7ºÅX$ö•7ž“†sèjæ?­Àø¼e‚Àì “1,`h"À ¬Í2€ÀɘUNLINKŒƒ€då…DäôHÉàDSFREEšŸ€G@2’*jrz$à…“–“Ñ då…DäôHy=I1% (�ÑÓQSDX$U‚@Â31¼Rƒ�ÑÓQS÷ødü#3ÄX“( š‹€G@2r¢rz$à…”•““Ñ e%däôHy=I1% (�ÑÓQSDX$U‚@Â31¼Rƒ�ÑÓQSx¬Êd '3 ºZ:! Ðb6*Á ‘+ÁÈhŠi¨©¿ûü2"Å ¬ëbИŒä*Å`bðV uбxÌFrb°� ˆ±ˆ«€„fc{¬UŒ@b3�«€°&Pf¨Šh誓@2BQT”“Ô¦®Ð š‚–˜¦©8…‘”‘SÕ de$TÅ5Hy=I1% (�ÑÓQSDXU€@Â31¼Rƒ�ÑÓQS÷ødü#3ÄX U€Àb¬~™�ç´©¼ôœ3Ÿ@ëW1ýhÖ§ÆXn çÐ:ÕÌZ5€)ñxË€-Ø@…þÿ`LÄÌUƒÀÂ31¼Rƒ�ÑÓQSxdü#3ÄXLF}­\Çõ£XŸŒ°èÝ„ °høFf7ŠB<2"ÃÀ¬D&аH¬U‡€ ‹ € °H4a01_a0X«€„fcyí*o=' çÐ:ÕÌZZÇôø¼e‡@ì U‚ÀÂ31¼E„À&5àE…ÀX\Ö*Â`´©¼ôœ3Ÿ@ëW1ýh=kÓã,:·a¬.#uаhøFf7†DXlU…À"±ápf€ 0b~Âà*Í&)`"4Í· .Í ‹€2e `0c¾FB@r’* ¢,g”'¨"§FV€r’*jz±$g`)"§ ¦’FH2‚ Zrle !!§¨,’FUj2z‚Ìe€¡¦'©¢Í[@c 5=Yp…�ÓÔÑ d4Äõ4E(y=I1%E€@Xš2e`�p ˆ¦Œ¤Š‹5 Ž€d4Äõ4E)À…PÕÑT T5tD•(y=I1% )¨�ÓÓ‘’Qâ“- %>(�Œ†’ŸÖ'á˜Þ#b`*À ±&f€,D#b V"¾Ÿá“èjæ?­­cú|e�€ì Uˆ€n±V ˆ²ø@*ÈqV"ˆ±ÉLjXˆVë`PÈ‹ +ÅYî*Ä€��¼ Ÿ„fcx‹ B0r"šj*oþÿ ˆ²Dd0hæ@Âéó8‹@ëW1ýhÖ§ÆYnÂXˆMâàVf€ 0b*À BhG °(6ŽÌGÀEX°Rÿßá‘@€¬€   ; d¼.Ÿ3ˆ±0ôµsÖ�` |e�€ì U�@„ÐŽ:`Pm-˜­«ÅXî!Ä€ Г(E˜¤€@”šž¬’†IO‰ê©Ñ˜�’¨ž‡.©)Ȉ«ð(cÞ FC@" ¤d”*¨%§&’LJ@Ê0CTOC˜ž@–À†‚œ©hÈiéÈh*“°X2æPÓÔÑf°@1Ð Žˆ¤‚ª±8…‘Ñ”“`dtE%$Øy=I1% (�ÑÓQSDX$Ö"Á`¬~™�â�Œ†ˆ¦šŠ›4´äØÈ€CD$ŒŽd$Dõ2DˆÈ|5bŽ€dtUDäDYÀ…‘ÑUT dtUEE•y=I1% )0ÐÒSÄX$#¡¤§ý V f€,:û  bkXŸ`Ð×ÜkÚÀøË¾ØX†Ö§Ä88L!Á  axË€-Ø@„x`LÄìu÷@ÄÆ°>2Á ¯¸Ö'µ€)ñ–}°±Q¬Oˆpp˜Cƒ@Âñ–[°€ð"À ™‹€„`L @U€@1�   ‚†–œ›5„Ž€dtUEE•dÍ¡  Í €à˰X=kÓã,Š·a¬o §Ìâ, £ C�@ ë`´4”ÿÿþo §Ìá“ñ¼.Ÿ3ˆ°(ôµsÖ�` |^2È  v.FK[@9š0À ‹XŸ@fÔpÖð�x]>g Ÿ�átùœE�@5Ü#^€8›`X#ÝÀ átùœ2~7…ÓæqÙ`�™àPmŸ` �7…ÓæpÉøÞO™ÄXm@6àC�@¶øu€€ áGàpVGf€gù¼.Ÿ3ˆ°(«lЇ€3jà«€^ðÉôµsÖ�` |^2È  v!³ LÛþ1»`p‹€0ë Åè \¢.–æ�rˆ6ûÌ~@GXx2À@ ;j1ÃdÊ€&:` f8 &§«$¡’Lo€€` �°1˜#8 Y9]1%:2,”US£4`YAUQ%9R3¢”‘SPT’ã) L‘ækÌ©©Š“€…’TÓÔS d•4õTèy=I1% )0ÐÒSÄX$#¡¤§ý  &! f˜£«¢$©LhÀÈ FOLDš‰€Ç@2bzzlà…“RÕS’T`dÔµTä•y=I1% )¨�ÓÓ‘’QÄX$Ö"Á`àðt´\ $–ƒ€K„@’Ðp p�’Z.KAÀ ‹€ °X‹ K…€0h´L… †CONFIGà ÐU‚ÀX`\4ƒ@%¤ 0¢à¬Í£ ¬"Àáà -7áÀ�)àðm/`ÐX‹€2e°2‚”ÕÓÔf© Ð…T‘PQ U$TDhy=I1%E‚@b,`4ˆ°h„a VuаXøFf7žÒ¦óÒpÎ}­\Çõ õ¬OŒ° Ý„ °h¬C„ XŸa@»aÓ Š0« Ýb¬aPÖaP¸« ÄXH‡D€&) ¬$+>�Ö®cúѬO‹ÆXPnÂ/÷ø‹ 0À ‹Ø« ÄXHc*Â@,É” €FO2:*¢A$ÖP:T‘PQ§…”‘SSÕ‘`e$TÔõdXy=I1% )0Ðÿ¿Ã'á˜Þ+>�Ö®cúѬO‹ÆX¸nÂÁ–"`�ðŒÌo„÷ødE‹À ¬U‹Àb3“ ˜“€‚C,D1H`�ðŒÌo„y dE‹ÀX¼Ö! Ë€ °HøFf7ŠB<2"Æ ¬bëâ ho §Ìâ,L}­\Çõ ]>/b໿ßâ,ɘ̀ ±0¤R)„B`ˬU‚@Â31¼2"ÄÀ��þÿ ˆ±xG€ ±x4€ÍX #ƒ@",^X,Ö*Åà  À…RS T„TÅHy=I1% )0ÐÒS⚀ =9%(�ÑÓQSeÁ ih¸(É-—€% àÀ´\s–€Kƒ€’Ð px‚Z.2K@% Yh¸Hí-— €% á@$´\*r–€K…€’Ð p¸‚Z.;Ë@%à )h¸hé-— €% áÀ´\:n–€K‡€2Ð pø‚Z. 6K@%Ä h¸ˆç-—€% â@´tùœRð“ðŒÌo`P ÔÝpfÝÐÖ7…ÓæqHG˜DY|À «#€3oàëÂéó8¤#Ç",Ž¡À!"*Èà Ú.:À@ðº|Î)ô@È‹#€iHF–в86™Ž°¼.Ÿ3ŠB>ð2"Èàˆ¨à"¬ŽÍ© #¬o §Ìâ��” ˆ²8¯€„k«#€3k@ëÂéó8¤#ê",ޝ@!ú*Èà Û!² ,Ú81t` àË0éÄÄ|` Ök‡­V f€ `XŸŒ°pÝ„_¯ñdÌEÀ?Hš°&P$É*iê Ä‘�   ‚†–œ›5*Ž€d•4õTéÀ…“ÐÐÓÓ`dÄô44ôØy=I1% )¨�ÓÓ‘’QÄX$Ö"Á`U‚@ ôµsÖƒÖ±ý>2À¬~k ÚÀø‡-…ã,:·aU‚Àb¬Íb," ¬Íâñ–[°€ õþ"À ™Š˜ ˜˜@ `°!4#ƒÀ0rzr2J?! š–ªœ’£8…“ÔS‘ dõTäE(y=I1% (�ÑÓQSbš€ =9%E‚@b,.ËAÀ%Âùh8¸D-— å àá0ü´\(?–ƒ€K…@òÐp p°þZ.ËAÀ%Ãùh8¸d-— % àš:ÅX,æ#9:Ï u«˜þ´kSâñ–[°€ õþ"À ™‰ «€„fcx¤#!¢)¦¢¦ÿïðÈ‹@ X«Äg!V ?ÌÆñHG€DXxU‡€b¬ÒSâ�@ M54E‚@0ZJÒ`�hÖ§ÆXTnÂ/×ø‹€2f"€¤ÍX0úZ¹�ëAëXþŸaP»a€PV ÷pÈ‹ +ÅXXî*Á€��” Ÿ„fcx‹€ B0r"šj*oþÿ Ÿ„fcx‹ € °˜¬U„@iSyé8g>�Ö®cúѬOŒ°¨Ý„ °˜¤#Á",,!b¬,sœ…XLRÿßá“ðŒÌoa0d˜¿€p`4aÑÐ ‰À† CIOú@ ÐÞO™ÄXÐE€@2ƒ0 ŽðPfÈH‰êdˆQ˜ „ˆž¦H‡èˆj‰èq� ’œˆŠ±1c #9UA-94’c–:M}# IAI6p…‘ÑU‘`dtUDäDXy=I1% (�ÑÓQSb“- %¹�æñßÀ�)àPmÙ`0HGÿ†OÂ31¼øæÏ®gù½Ö! ‹€i`F©�p(6™@@`p‹qþ>�Ö®cúÐzÖ?§ÆYnÂX Rÿßá‘f€,"}­\Çõ£XŸŒ°àÝ„_¯ñdÌa@X,üÖ5€)ñxË-Ø@D`°h*Á` ÐE„@&3 ¬"#a[¬U‚À",<! b¬"{J›ÏIÃ8‹q«:ÅX$›O@b¬"aŽ`°mJŒ°àÝ„0À �¨²€L~&+ ¬ÍX,š°&PD܈j‰èq�pŽŠ¨¨²¡qÈ誊êH‘�à ’œˆŠ±¬Éˆ©ÈꉞР˜ž†žšI13ÍX,ü#3Å!ýþaÀVb q-tâˆ!Áà ÐB°&PH1x€#!`MRdDLB `ÊèPACKNMŒ¿U44õ™¬ht'¨"§")N…”“ÓT e$ôÕHy=I1%E‚@b,`4ˆ°h«€3@YôµsÖ�` |^2 v*Á ÐbD*Á ±V f€,É” FL€2:*¢bJtd@$© ª*,ÆJ*zª¢™$Ôà:”“ÓT'P0*À ˜Í¨REMOV$Œ�€d•4õâHÈPPACKNMŒÖT4Äõ4Y®t)"¦§«"Î…”ÑUS• e4UDTåhy=I1% )¨�ÓÓ‘’Qâ�M!9X’(¦”Ò�ST† 9QI1\T–€K‚€2Ð pX Z. K@%Á  h¸8‰-—€e á¤´\"E–€K„€Ð p˜Z.*K@% Yh¸X›-— €% á€´\2–€K†€2Ð    pØRZ."Ë@%àéh¸x‰-—€% â´\BM–€Kˆ€2Ð qbZ.$"K@%Ä Yh¸˜­-—€% â€´\RP–€KŠ€2Ð qXRZ.,$K@%Å  h¸¸-—€e ãÄ´\bT–€KŒ€Ð q˜Z.4!Ë@%Æ Ih¸Ø¥-—€% ã€´\r–€KŽ€ ’Ð qØ&Z.<)Ë@%Ç IhCŽ€´¨C�@´Àb~:ðÀÖ°>/dp»àP?fÔ€fÔàŠè‡€3@L¡„b€FAÀ2’* ¢,Æ Œ’e$TÔ$¸É8EXITŒ³åUDÄ”èÌPPUTINTŒ¶ääUtÄ”èÍ`PUTCHŒ¹Ô4Äõ4Y«È t)¢ª"§+N…”ÑUSÑ e4UDÔôHy=I1% )0ÐÒSÄX$Ö"Á`¬ÍX$ü#3Â0ZJÿÿ ˆ°xùŒkSã,"*Áàæ°>! axË  d$4õ’Hy=I1% )0ÐÒSÄXÖ"À`¬ÍX ü#3Â0ZJ ŸšÀø¼e‚ì “1"`ðŒÌo„z dü#3ÄX#�€Xš5€)ñxË-Ø@«€„fcx¤#ê",*À á˜Þ)ú€ÉøFf7ºÅX$æ#9 °øFf7ŠB> 2"Á`Ö*Á`1ÈU€ÀÂ31¼Ræ‘  ±V 9ˆÎB¬~™�áî`ððUƒÀâ¬ÍXF"ÀÀ :@b,1·`ðàË€0ëÀÆUƒ@n±V ˆ°À¼U†â¬+>Œ°&P>/‰*‰èsP2>Éf¤à1Ð ª –œšI8…QÕÑT TutD•(y=I1% )¨�ÓÓ‘’QÄXÖ"À`¨9 =9%΀Âéó8‹@ŽàÀh#`Àà@È‹ ¼à‚*Â@qVàPÈ‹ ‡B¬(waŽ ˆ°°¼U…€â¬~™�â±YôµsÖ�` |^2à v*ÀŒ°à€px†CONFIGê` ÐúZ¹�ëAëXþŸŒ±@Ý„q4aÀKÓâñ–([°€Ž#áàh+>�Ö®cúѬO‹ÆX nÂX|¬OŒ±@Ý„ °XøFf7ŠÝb¬b�*Å ±f€`Öµ€)ñxË-Ø@ùþ2À ™��ë °ØÅä†LW€Xuc‚:ÀÁ–aÒ°Ž ø$2Ã@ ; 1�a°±ý¬O‹ÆX nÂã,ᤧð�ÉøzÖ?§Åã,·aE€@`ÄdB°ĈU€@2€À ©pt$© ª*,Î…•T“RS eDU$Ô”èy=I1%E€@%À`Ih¸©-—€e `à`Ô´ \–�€@Vuˆp4dÊ#!À Q=bMDÀ# QI5%:p…“RÔU dÔµDˆy=I1%E€@b,!€X" °4`°èjæ?­­cú|^2ÁÀ v>а¸ø-—€¥ ä,´\‚R–€K�€RÐ r>Z.D)Ë@%È Yh¹-€9M!95O‘€3@ˆÄgÐ:ÕÌZ5€)ñxË#€-Ø@¹ Æa7 ΂™„ìeMÇcIÈÞn6™MÇAt´€C’ 4˜� ä4ôäd”~0o §Ìâ,À Í8#@@8šp(4àPfÓ "À`¬|¿Ã'Ð:ÕÌZZÇôøË#€-Ø@«€ -Ø@…úÿ`LÄÔU‚ÀÃÖ3ý>2 ¬ÍgÐ:ÕÌZ5€)ñS ÆXHnÂX$ü#3Â?ÿü2"Áàç°UƒÀâ¬~™�á?ZÀø¼e„@ì U‚@Â31¼#Â@",> °xÞc *Á`ãx]>g`LÅŒU‚@Â31¼#ÿÿÃ",~s>ÅX<î*Á á˜Þá “óXÖ§Åã,"·a¬~™�á`ððUƒÀóà"À ™@˜e4$© ª*,Æp1JdÊ@#'àQH’2Q‘ÒÉ#7€1UM"k’ÈHiê $“€…”‘S�SI e$TäÒHy=I1%E‚@b,!b¬`à*ÁÀ±V f€€Ö*Á ‘WаpÜU‚@bšÂéó8‹€2e“p „ˆž¦H‡©©êÈD“0€bhMQ@# I94’p…•TÓ“I eU´äÒHy=I1%E‚@b,*Á ãx]>ga ã˜g>¹Ÿæ÷X„ f€, ±f€ 0bÖXÖ!À  ÐbðÉ” €FFÀ"J¢zÅì(˜‰À—P š– ‚¨‘…ˆj‰èsXÀèGWDIRœ…“ÐÓÓI dÄô4ôÒHy=I1% (�ÑÓQSbš€ =9%)0ÐÒSÄX$Ö"Á`- %?é °H4kSã,P·a ñ–dÌF_l¬ kSã,P·a¤! ]>/b€»WŒ° ˜Ÿ€Ÿã,1F`Lİ|?}°ðüe÷&<À#çøË€L{@GX“(+˜Ì€�@–pŠ¢ª‚™5È誊êH‘�à  ‚†–œ›�ÈH‰êdˆs xc€Fa2"z™"$Æ4Œä€dÔõdÔ2HÊh UPPERŒÑ€Ä5Dô9¨t&'¡§¦’N…’TÓÔ‰ d•4õâHy=I1% )0ÐÒSâ�@ M54E‚@ ‹€ °xEìÿ Ÿ@ëW1ýh=kÓã,*·a¬‚ÐÒSÿÿødüÖ§Åã,*·a 0bd*Áà��¼ Ÿ„fcx‹ ÜB°8„`PVºÅX2"Áàæ°äzÆ@§ÆX8B0:ÅX<üo §Ìç´©¼ôœ3Ÿ@ëW1ýh=c S⦌°ˆÝ„ °8­Ö*À`‘`P[¬U€@'áV;а8ŒE�ÀXF"À  :z1y`p[¬U€À",>аxÜU�Àb,*À ±V =¥Mç¤áœúZ¹�ë@º|^2ÁÀ v*Àà·X«€DX<U�@n±V Ÿ…X<î*Àà1`P‹€0íøÇhbRB< 2"Ëà Y|›Q€X F"À` :º1sàPmLàP!fÕPŽð�h!À  Û4À (Í´` !à Ûv!À  ÛdÀ 4͸€ !ðà Û¦!À  Û”À RÍ»€ !ä ÛÖ!À  ÛÄÀ ^;€ !ê` Ú!À  Ûô:ƒ�Ó•“øõ¬O‹ÆYnÂ8C�´0C�@´HbB:ƒ�ÓÓ‘’Qü(õ¬O‹ÆYnÂ8BÀ*2"zY$×ì:”ÑUSÑ'…•“SÕU eE$ÔõUHy=I1%E€@Xš2e`�p ¨Š¤š’�5 Ž€eE$ÔõUIÀ…•Ô’UQ eu$•DThy=I1%E‚@b,`4ˆ°h„`ðVuаXøFf7žÒ¦óÒpÎ}­\Çõ õ¬OŒ°ˆÝ„ °x­Ö*Á ‘`ÐX« 3@Vˆ°x‰LL€X,ü#3ÄX“(Œ¤eUD4‚Iªøt+©$ª"£N…��ÓÔI(X,Ö!€ ÐF"Á ,0+uаXdE†€XHøæÏ®`y¼"AO¢¬4wa€X«€DXp|:aÀ¸«€Äb,>Œ°€ø2Áà¬Ö…Óâñ–[°€Ö7…ÓæwX…þÿ ºÅX$2~sÆXD¬ kSâñ–[°€Ö`ðð0e„`ƤuƒÀÀ¦°>/aà»`Ð[¬U‚À",0> °ÀÜUƒ@b,> °€ÇUƒ@n±V ˆ°Àë€ °ÀÜUƒÃñ—ÝFXh|a°ð¸e‡€ã,D*ƒ�ÑÓQSx E ˆ°hG€@h‚ÐÒSþ�‡ 3i¨Ë€Óâñ–([°€1šaÐx]>gŠE"‘HD ŸFXtÞO™Ýb¬b�ÃàRÍ ‹ € °¨Eöÿ Ÿ@ëW1ýhO‹ÆX nÂXT#‡@",R~sÅX¤î~kÀø¼eŠì U…@8t2"Å ñV);ÌA@EXTF"  ;¢1æ€@,>€€#,!€X4Uƒ@/7ødúZ¹�ë@º|^2  v*Á ·X«€DXXU„À!9 M57ÿ†DX`#ƒ@X`š °¨« „8T,Ö§ÆXhnÂã,1›`Ћ€0êˆŘu‚À­` |^2  v*Áà,ɘÜLM@X<F"Áà :1¿_â,É” €Fa€2jz²J$×H:’TÓÔ‰'…’TÐU`d•4EE˜y=I1% )0ÐÒSÄX$U‚@Â31¼#*Á`±V ˆ°x«€ Ýb¬a Të`pÚTÞzNÄXP…XHÖ*Áà Г(ŒŠT”äDU‰ˆpè9ˆj‰èsSàèMKPATHœ…�QÕ dDE5E(y=I1%E‚@b,>ph4`ÐðŒÌoºÅX,2" ¬D&а¨¬U‚@ ‹€:ÅX4ü#3Ã.±V 9ˆÎB¬"}­\Çõ£XŸŒ°¸Ý„@dÌTÀ ‹€2e’À†¨ž‡ dˆ   *“V0èADDSTRœ…�UÑU dDôDHy=I1%E‚@b,.KAÀ%Ã`™h8¸p]-—€¥ àáàd´\>-–ƒ€KˆÐp" ¬*|¿Ã'Ð:ÕÌZZÇôøË€-Ø@« € Eb·X«€DXˆB:ÅXˆæ#9 °¨ŒE…@t4bF!€X\†€8\U‚@ ‹ €p¸«€3@>�Ö®cúѬO‹ÆX„nÂX\Vë`�È‹ ±4µ¸­Ö*Á ‘&b`m¦kšÀø¼eˆ@ì #…ÀX$›oDXTB:ÅX,2"Ä@¬*ëb ˜ŒäÃ&)ÀB¬.+uаHdEˆ€Xˆ›P@‡­` |^2Ä v!b¬b VºÅX$2"Ä€¬HͶ@±V"9ˆÎBÖ*Á`“ðŒÌoˆÄgÐ:ÕÌZ5€)ñxË€-Ø@…úÿ`LÇPU…Àn±V ˆ±«3l õ¬O‹ÆX„nÂX\F"Âà ;º1ù˜ÈL\€ÄX\cTÂà¬ͯ`‚,*ë`°˜Œå1?˜©Ìu€@8h#…ÀX$›I�X\#…ÀX$›n�XTB:ÅX,2"Ä@¬*ëb ˜Œä*Âà·X«€DX�üÖ$5€)ñ–!b@óXÐÖ§Ä8„l/b€»ap‹ €LG�@8h#…ÀX$›tX\#…ÀX$›wXTB:ÅX,2"Ä@¬*ëb ˜Œä*Âà·X«€DX�üÖ&µ€)ñ–!b@óXÚÖ§Ä8„l/b€»,.'I€™<�)• )P°"“Ê€)8¢ �É`˜!ÀAP&€±P#€H)“À™$" ! b"Æ@! f"Æ€q–)–IÀ)P„!�IÀ)4)•H@)L†#À9L)À©L)”!˜–ƒ€ °HùÌ7…Óæq ¸á“èjæ?­¬d |e¦@ ¬Uƒ@iSyé8g>�Ö®cúÐzÆ@§Ä:dL/i »`ÐH¤F"Ó`¬"Ó éðļU€@´øFë`pÈ‹€LR€%ÀTZ¶*À ,<À&*À ÐV}­\Çõ£XŸŒ°ÈÝ„ °(¬U€@ ­€L_@8,š°˜ôµsÖ�` |^2à v. 7�N‚y˜@m2›Mç#Ⱥ[L!Ä Ð“1¤a0HGÿ†DXhB:ÅXhæ#9 °¨¤#ÿ¿Ã",\*Â`±V.9ˆÎB¬&#`�HGÿ†DXÀUŒb¬ÍX,Ö*Á ‘ `pôµsÖ�â·X«€DX°üÖµ€)ñ–.bÀóX@Ö§Ä8¸l/bð»`°ðŒÌoºÅX,æ#90èàÅ U‚ÀÂ31¼Vë`�È‹šÂÖ°>2Ã@¬X~k ZÀøË ±`ù¬+kSâ\¶Œ±xÝ„ °XøFf7ˆÝb¬sœ¦2€¬~™�â,X#uаHdEŒX°Vë`�È‹ ±`¬U‚@",h*Å€±V ˆ±°«:ÅX$2"ǬX+uаHdEŽ€X°Vë`�Éù€)ñxË€-Ø@„uаXdEˆ€X\Vë`�È‹ ± 4uбÌFr€€±V Ÿ„fcxŒF#>�Ö®cúѬO‹ÆX„nÂ/×ø‹€2f; ¬.+uаHdEˆ€Xˆ›b@­` |^2Ä v*Âà1aÞ �ð ˜Ê€_¯ñdÌBÀD @¬U‚À",D!€b¬Dsœ€8h#…ÀX$›UÀX\Vë`�È‹ ± 6ù5€M` |^2Ä vÂà¬ͬ`,*€€8h#…ÀX$›KÀ„X\Vë`�È‹ ±6ö�5€M` |^2Ä vÂà¬ͪàB,*!b¬b VuбÌFr˜—°À �x« € Ýb¬?5…í` |eˆ@ì B:ÅX,2"Ä@¬*ëb ˜ŒäÃ@.*Á Ú"Âà·X«€DX�U‰´„ zÖ§Åã,B·aÖ*Á`‘"ap[¬U‚@",H*Ä€ ÛZëb ˜Œä!b¬?ÌÆñŒF}ap‹ €L_Á@8h#…ÀX$›LADX\#…ÀX$›OADXTB :ÅX,2"Ä@¬*ëb ˜Œä*Âà·X«€DX�üÖ)µ€)ñ–!b@óXæÖ§Ä8„l/b€»ap‹ €Lx@8h#…ÀX$›d�DX\#…ÀX$›g�DXTB :ÅX,2"Ä@¬*ëb ˜Œä*Á` ÐE€@2‚�Ïø,CTOIŒâätÔôåDˆÈè6CHKDATŒù‚Õ4µDô¸È $TYPEš‘ƒG@2 ¢z" ¤àZ®Ó 6! Ð†LQ€X4"�†O u«˜þ´kSâñ–™[°€V j uŸ–ÂuDámaa€ÀV ? °XÜB:ÅX,2"Ó` ñV›;Ìd@&,€¬ÍX“(¥™Q€@šð ˜ŠœŽ¨‘Žªhiê 3€(kr¨j‰é©Ó€…‘ST‘àdDTÄ$xy=I1% )BT‘ÔÄXU€@Â31½Ö*ƒT‘Ôøí*o=' çÐ:ÕÌZZÇôø¼e�@�` |^2à v*Á ��þÿ ˆ°Ð« :ÅX ›{€X,†LC€D ‹€ °X¬U�ÀiSyé8g>�Ö®cúÐzÖ?§ÆXdnÂX$Rÿßá‘`°H¬Vë`0ÉøFf7ºÅXhæ#9 °HŒE‚@X,F"Á` :b1M˜”€²e@–°¦¨˜«P‰)ˆ©Ñ’0 ‚†—�¨Šh誑˜p ˆŠ˜Š¨‹ªÊH©¨*IsX èENTERœ…Q�ÓÔ`Td4õ˜y=I1%E€@b,*À ±¬9±�)ñ–.Œ±V:?Âéó9í*o=' çÐ:ÕÌZXÈø‡)†X¼UŽÍa+XŸâð0Ë ±°ù¬9±�)ñ–=Œ±V4?Âéó9í*o=' çÐ:ÕÌZXÈø‡€)†XøUŒ€Ía‹XŸcðV0?5„­` |C�ÀÂ|¦ãÀ°¼e�ì U‚ÀÂ31¼E‹n±V ŸšÃx]>g`ðV ?ÌÆñbÀX«€OÍa+XŸbà»aP‹ € Ýb¬?5†,\p¿Ã'Ð:ÕÌZZÇôøË€-Ø@„uаXdEˆ€XTÖ*Ä@1Ȇ€8\U‚@´ÌE…Àn±V ˆ± «3j( XÖ§Åã,B·a.*Á Ú¶" ±V 9ˆÎS01saPX«€Äg)ŽH ÅH†L]ÀXT"á†O u«˜þ´µ�éñxË€-Ø@« €:ÅX,æ#9@@X«€DXˆB:ÅXˆæ#9@€X«€DX�B:ÅX�æ#9pÐG € °H6ʈ°­\Çõ£XŸŒ±Ý„_¯ñdÌzÀÅX\Vë`�È‹ ±6Í��ZÀø¼eˆ@ì U…Àb,.þ€sI�8 p¸«€3lH‹ €p¸«€3i¸‹ €:ÅX,æ#90À ‹@„uаXdEˆ€XTÖ*Ä@1ÈU…Àn±V ŸšÂö°>/b»ap‹ €LZÁ8\U‚@´ÈE…@ @¬U‚À",D* ±V"9ˆÎB¬.+uаHdüÖµ€)ñxË€-Ø@« …�ÓÓ�ÐU d4ôä4Hy=I1%E€@b,`4ˆ°(«€°X¸4–‰pXG€ °4`Ph"ÀàEƒÀXF" ¬+uаdüÖ§ÆXLnÂXE…%ÂÀDZœ€*À` Ú8*Áà1a‹€0é ÅU„@n±V ˆ°À¼U†ì™@ÐÄXŒ‘dÄTäuDˆÊÀSCOPYš¿€G@2zr ¤à…PÕÓS T5DôÔèy=I1%E‚@bì “1$`ðŒÌo`0VuЏí*o=' çÐ:ÕÌZÓâñ–[°€Vˆ°0G€DX U�€<2~™�î±V9ˆÎB¬#`01˜¦ ¸¬EÀ2€  ¬t""¦ ©#Î…QS•T TTåDU(y=I1% (�ÑÓQSDXÖ"À`H‹€ °(øFf7ŠB0r"šj*oþÿ Ÿ„fcx‹€Ï u«˜þ´kSâñ–[°€Vf€,4*À Új#uаÐdE‚À`f€ư>2Àà v*À`±f€ :1dÊ#!àQ "2HTUÒ&¥@Ð Œ†ž ³8…QÐÕÒ`Tt5Dô˜y=I1%E‚@b,`4ˆ°h¸la- — e¡€áД´0\<3–†K‡À’ÐÀ qÖZ.!KC%Ä@yh`¸Œq- —e¡€âP ´0\Lb–†K‰À rÐÀ q@’Z.)2ËC%Å@ih`¸¬- €,"*Á á˜Þ"Áà¬~™*Áà±(Íc¬\o §Ìᑘ《°xEàÿ Ÿ@ëW1ýh=kÓã,\*Áà±YôµsÖ�tø‡-…ã,^·a¬~™�â,Ã&# B¬*#ºÅX,æ#9LJ€¦1À"¬~™�â·X«€OÍ` |e‹€ì U‚ÀÂ31¼Vë`�È‹šÃ‘ëŸbàÀëbÀñ¼.Ÿ3žÒ¦óÒpÎ}­\Çõ õŒ�Oˆqp˜^2Åà v*Á`á˜Þ+uаHdüÖÂéó8‹ €0À Œ€«   €„fcx­Ö*Á ‘,bÀh2ÅÀ\!Ã` ÐV"Â` !Vuаxí*o=' çÐ:ÕÌZÇéñ–.a0èjæ?­éñ.[ ÆX¼nÂu8 b* ±VfÞ@X« €DXDU‚ÀÂ31¼Fë`°˜ŒäçS01ÖŒ±pÝ„ °ˆ½*oN%Lâ,ɘ™аˆ‹€2e ¬ÉŒæT”äDUˆÎCLOWERŒ†�²DÓ™ª`t£¡ª'¤Î…QÑU`TtDDXy=I1%P58Ž€dtUDD•)À…‘ÑUU dtUEHy=I1%E‚@b,.% à¬" X$š°&P&1€&Aàd\& ¥¨ ªMH@# QARp…‘ÑUÔ‘ dtUEu$Hy=I1%E‚@b,`4ˆ°h«€„fcx­Ö*Á ‘?5�-` |e„ÀXDüÖ5€)ñ[ ÆXPnÂX,ü#3Än±V 9ˆÎL:18€@,*Á`á˜Þ+uаHë`°È‹„fcx�Ö*Ä1ÈB°&c¼!€b¬?5€)ñxË€-Ø@«€±0¸ –Œ€q0GpÈ4�€±V ˆ±øFf7ˆÝb¬@sœ„ ‹€2f""Ö*Á ‘ ?5‰Í` |e‡ÀX€üÖ75€)ñ[ ÆX¨n 0¬U‚Àb3�„uаHdüÖ§Åã,>·a Ö*Á`‘ €@±V 9ˆÎL0c!b¬bë*Á`á˜Þ}¿Ã'Ð:ÕÌZ5€)ñxË€-Ø@™�ÌSÀåÇ “p€Îf7NFqЀ@b0™3¡„èe "‘ØÂl:™EÒÕ@1=f€@)ˆÀŨ‡AÀ&*@jñV ;ˆ_ïñdÊ@&$``fp#¢ª ©#ÆR²:*¢bJtfø'¨"§Lz@` Œ�)ªhiê 1žà ª¨˜’�ôÊH©¨*Iqœp*†˜ž¦‹X¨ªJIêSVð8èGFNARGœ…QÒUÐàTt•Dô8y=I1%E‚@b,>pJ›ÏIÃ9ôµsÖ�tøË€-Ø@« €:ÅX\ö•7ž“†q€@,"Ã&+€"E„@&. 3pVˆ°¨­Ö*Á`‘/a0Ž Ÿ…X¼î*à ±VfÙ0aPX«€„fcyí*o=' çÐ:ÕÌZÇéñ–-a�èjæ?­Àø‡€-…ã,\·aQ�ÖŒ±hÝ„ °¨¬Uƒ@Â31¼ö•7ž“†sèjæ?­éñ–-aèjæ?­Ïôø‡€)…ã,\·a¬*#aP†X8¬O‹ÆX<nÂ`ÄŒuƒ€X,,Ö§Åã,·a¬+>�Ö®cúѬO‹ÆX<nÂX“1M`X­Ö*Á “óX€Ö§ÆX<nÂX“1ha€€ÖkšÀøË€°pXNÖ§Ä8<l/a»`à– `‹€ Ýb¬? °p‡€%šÀøË€°pXŸàð°¼e„ì †Lp@vXcˆ:ÁÀ ` |^2Áà väÀP ŒpżU€@E€@b,!À  Ð\*�@%¡ áp &- áPVuа4dÊ@#!`Q9=^20‘“UU&£`Ð Žˆ‚¨‹8…ÑUàDtUD8y=I1%E‚@ «€3@–dÊ& €d(£¢ª!¤MD€# Qp…QÑUÓ TtUD4Èy=I1%E€@b,!XB°(«€:ÅX2"Á ¬~™�î±V=¥Mç¤áœEƒÀ8<Uƒ@b ÍgÐ:ÕÌZ5€)dE„@Í`SþŸa0V?5�,gú|e…XDüÖ1Ÿéñ–aóþŸáP0‡ )„8LL/a`»`ð[¬Uƒ@","*Á`á˜Þ+uаHdü* qV ?ÌÆñ¬U‚Àb3�«€ÄX<‡T€&3€¬+uаhdE„@â¬"w`ðX‹€2eà^àèGETWRDœ…‘Ñ“�T‘àdtdä$xy=I1%E‚@b,.)ËAÀ%Ã@Ih8¸l‰-—e àáÐt´\`�È‹hà«3@X«Äg!ë`°ÉøFf7ˆÄb3èjæ?­Àø¼e‡Àì " °H4—€„„Ü': ç)¸]-ðâ°h!b¬sœ¦< 3ð1i¿_â,ɘ€�0À �h„uаXÌFr˜…�0À Œ «€„fcx¬V+>�Ö®cúѬO‹ÆX|n @¬U‚À",@*ıV f€,#>�Ö®cúѬOŒ°øÝ„ °h­Ö*Á ‘ h4— %¡àáÐŒ´<\<2–‡€K‡ÀrÐð qÒZ.!ËCÀ%Ä@ihx¸Œo-—%¡àâPÌ´<\LA–‡€K‰ÀRÐð q@Z.)"KCÀ%Å@Yhx¸¬�-—%¡à¬~™�â³èjæ?­­cú|e‹@ì B°&bL¯`°¸«€3@¼á“èjæ?­­cú|e‹@X\V+>�Ö®cúÐ.Ÿâа¼e‹€ì B °¸Å”UƒÀÂ31¼úZ¹[¬U‚À",^>бxÞb0Ã&<€"¬*ë`ÐðŒÌo=¥Mç¤áœúZ¹�ë@º|e‹@X$ü#3Ï u«˜þ´ §Ä8´L/bà»aP‹ € Ýb¬bðð´U‹Àó€)‰ˆ« € ÄXB°˜« €:ÅXTö•7ž“†sèjæ?­éñxË€-Ø@« € Ýb¬bðñ¼.Ÿ3ˆ°ˆ« € ÄXÄÖ*Á`“ð«€ÅXÄÖ*Á`‘3aV3;а¨¬E…@XLF"Â` ;1¨b,á €"À ™@ˆ׬:TÒS§…SS’Ô`TÄ”äµy=I1% (�ÑÓQSDXÖ"À`¬~™�â�Œ†ˆ¦šŠ›ÿ¿Ã'á˜Þ"À ¬~™�â��þÿ ˆ°8«€:ÅXæ#9 °øFf7ŠB<2"Á ¬~™�î±V 9ˆÎB¬~™�â��þÿ ˆ°X«€„fc{¬U‚Àb3�«€ B<2"Á ¬~™�î±V 9ˆÎL™@xÖ:SS’Ôg…“ÓÒÕT dÄñ–[°€Vf€1ºÅX2"Á á«€ÅXF"À  :&1N`p[¬U€@",¯`л&P$=È誈*Hñ•@ ˜ŠœŽ¨‘5…Ž€TtUD4ÉÀ…‘ÑUT dtUDD•(y=I1%E€@b,.ËAÀ%ÀÀ h8¸_-—e àà�|´\–ƒ€ °øFf7ŠÏ u«˜þ´kSâñ– [°€*À`±f€ 0b<¯`0¼Ä¸“( Œ•€D5Dô9‰<–ƒ€ °XøFf7ŠÏ u«˜þ´kSâñ–[°€ë`°˜Œä!b¬bëb˜Œä!b¬b  õþëb ˜Œä!b¬b@ëb@˜ŒäÃ&#À¬~™�â±YôµsÖ�` |^2Ãà v!b¬b*Á ±V f€3èjæ?­ÀøË€-Ø@„uаXÌFr€€±V ˆ±øFf7ˆÝb¬@sœ…X$üÖµ€)ñ–[°€WбÜB:ÅX,2"Ä@á˜Þ#uбÌFr€,ɘ® °¨¬úZ¹�ëF3ý>2Ãà¬*#ˆÏ u«˜þ´c?Óâ>¦Œ±PÝ„@€X«€DX€Uˆ ÆØB:ÅX,æ#90À ‰˜«€„fcxEøÿ Ÿ@ëW1ýhÖ§Åã,>·a(Ö*Á`1ÈB:ÅX,2~™�çÐ:ÕÌZ5€)ñxË€-Ø@«€±È¸ìÜËGÀÀ8ä#ŽÀ8d›H€D ‹€2f"àl0cà�ë@º|e†Àã,Z·a¬~™�î±ÍŽcùœúæ›ÄXdU‚@Â31¼øæÏ®` ¼E„@X$ü#3ÄgÐ:ÕÌZ5€)ñxË€-Ø@…þa�1É`�ðŒÌo>�Ö®cúÐ.ŸbÐVŸ@ëW1ýhÖ§Ä8´L/bà»a�X‹ €L@&:@ 0c *Á á˜Þ"à p" .!à ÐE‹À8¼›NXLu†Àã,Z·a¬&)uаˆdE„Àb¬.{`L Ô2@ÓSÑ#% 1% N2ÉU#4 ,‘ækì¨é*‰ès€…’Ò�Ó d…4„d4èy=I1%E‚@b,*Á ÐEƒ@ ‡€€LÐEƒ@X$üo §Ìâ,"*Á ·X«€OÆðº|Î"Â`±V ˆ°¨«€:Ä8TšÄX“(ŒŒ€DÔƒÊPMOD˜ˆ€@�° ˜ŠœŽ¨‘5SŽ€d…4„d4éÀ…TÒS D•4”èy=I1%E‚@b,!€XU€@n±V ŸôôµUy=I1% (�ÑÓQSDX$Ö"Á`H‹€K‡À0è´0Uƒ@X„‡À8lU‚@ ôµsÖ�` |^2Ä` v!X“1-`ÐðŒÌo„`ä4E4ÔTßýþ?ÌÆña°‹ € B?ûü2"Ä€¬HÍb¬&a0VŸ@ëW1ýhÖ§Åã,F·a¬&)ÿïðÈ‹ °X¬U‰ ‹€0À ‹È„`ðVuаˆí*o=' çÐ:ÕÌZZÇôøË€-Ø@   «€ Eb·X«€DX�U„À!ýþ?ÌÆ÷X«Äg!Vˆ°˜«€ÄX<‡g&7@"À ™A0dp)ª&*Æc€2ªr‚ \ep$¦"§M|À# 1==-UBp…SÕÑT TÄõtU(y=I1%E€@Xš2e`�pŒž˜‰5 Ž€TÄõtU)À…SPUÒ TÔD4ˆy=I1%E‚@b,!€X<UƒÀn±V ŸšÀøË€-Ø@«€ ¡*Á ÐúZ¹�ëAëX(àpVf€,:*À Bh«€:Ä8š2eàР2,UÐã%AUQMQJjZÊ ª‰)Ê“€…”“UP“ e$ÕD$Èy=I1% (�ÑÓQSDXU€@Â31¼E�À ‹€ °8ŒE�À!9 M57ÿ†OÂ31¼E�@XúZ¹�ëF°>2Á` v*À ,)ÿïðÉøFf7ˆ°(‡€3@&˜›€ °Œ|+J�€ Ç•`mOdÊ#, MIjÐÅ!b@V„÷ødü#3Ýb¬Hsœ„ ‹€2f6 ¬*#aP‹Uþ>�Ö®cúÐzÖ?§Åã,B·a 0cˆ* ±V ?ÌÆðÈ‹€ B?ûü2~™�â,.ô€pVf€Ö*Áà1ÈBÿˆ°&PL1(#! 9U9A .3®SS£%`MR2ÉU#=`9MIjÊhjˆ(I“€…TÑ“Ô U4E$õy=I1%E‚@b,`4ˆ°h«€3@ U4Å5E(y=I1%E‚@b,>ph4`�h" ¬~™�â,&+>�Ö®cúÐ.ŸŒ°ØÝ„ °˜�Ö* ‘˜˜€ °xøFf7Ÿ@ëW1ýhO‹ÆXlnÂXLFë`ððŒÌo ˆ°˜«€„fcz½*oN%Lî±V9ˆÎS@Vˆ°à¬UƒÀÂ31¼2" ¬8}­\Çõ ]>/a°»€@,&1žaPX«€Ò¦óÒpÎ}­\Çõ õ¬O‹ÆXlnÂXDE…@&�‹€0èÈĬU�ÀÂ31¼Vë`PÈ‹+ÅX0îÉ”FC@" ¤Õè:”ÕÓÔg…TÕS U5DDTÈy=I1%E€@b,`4ˆ°(«€3@‹€ °(øFf7ºÅX ü#3Ã",*Á`±V =¥Mç¤áœúZ¹�ë@º|^2Á  v*Á`,1D`0ðŒÌo`°V uаXí*o=' çÐ:ÕÌZZÇôø¼eƒ@ì U‚Àb,ë`È‹ °H­Ö*À “ð«ÅX˜¥€ °hŒEƒ@t<bB*Á`±V ˆ°€¼U„â¬"À ™@˜ÕÐ:TÕ’Sg…•S“S’àeTäÄ”ä¸y=I1% (�ÑÓQSDX$U‚@Â31¼R"Áà9 M57€OÂ31¼E‚ÀX<#ÿ¿Ã'á˜Þ"Á ¬)ÿïðÈ‹€ °h¬U„@b3�«€ B<2"Â`¬ëa0˜Œä*Á`,É” €MV# U91%9.p…UTT UUU(y=I1%E€@ ‹ ° þŸŒ°ˆÝ„@ dÌOÀX<F"Áà :1€,É” FK@2 j ¢DÕd:SPUÒ'…“RÕP“ dÔµD$Èy=I1% (�ÑÓQSDX$B3@ „`ä4E4ÔTßýþaV ?ÌÆ÷X«€Äg!V `"Áà¬#`°HGÿ†DXDB:ÅXDæ#9 °xŒ|+J�€ Ç•+`L L2QÑÑU& €ÀÕh:“RÕP“'…”UPàeÊIªˆ(I“€…”ÐÕP“ e45D$Èy=I1% (�ÑÓQSDX$Ö"Á`à‡€3@V?ÌÆóèjæ?­Àø¼eˆ@ì B3@X«€Äg'X¤#!¢)¦¢¦ÿïðÈ‹@ X«Äg!V?ÌÆñHG€DX�U‚@Â31¼Rà“ðŒÌouб ÌFr˜’€ °xøFf7ŠDXˆ#ÿ¿Ã'á˜Þ" ¬Dà“ðŒÌoapV ?ÌÆñHGÿ†OÂ31¼E‡@X\úZ¹�ëF°>`ÐðŒÌo>�Ö®cúÐ.ŸŒ°ÈÝ„ °x�Ö*Á á˜Þa `°X«€3@dÌJ€8<Uƒ@À&h" 1ºÅX$2"Ã@¬#aÀ`°X« 3j8‹€2eÀ¬ÉŒ«DÔ”ãËÐCTOCŒˆdÄTäuD‰¬ t©¢)'¨N…”ÒS‘V e4”äDUˆy=I1%E‚@b,`4ˆ°h„cV "B «€3@.—`ð i«€± 8`E…ÀXLÖ* ´©¼ôœ3Ÿ@ëW1ýh=kÓã,6·a¬.ë`°È‹ °˜­Ö*Á “ð«ÅXLF"Â`¬.#apјö€ °¸¬U‚À",8¯aÀ¸« €°&P<Ɉ©Èê‰�ÐH‚©50Ž€U4Å5E)À…TÕRÑ`U5D´Xy=I1%E‚@b,`4ˆ°h«€3@`ÐðŒÌo>�Ö®cúÐ.ŸŒ°¸Ý„ °x¬Uƒ@Â31¼2"ÃC†À&h8Ö*À “óXŸŒ°hÝ„0ë˜Æ�U‚@b,*Á`1 aÕ` �8&P$Ɉ©Èê‰[°èSTDELœ…”Õ�ÓT e5E$4Õy=I1%E‚@b,!€X4Uƒ@b,ë`�È‹€ °x¬U‚À",&* áVK5€)ñxË €-Ø@«€ Ýb¬?5€)ñxË €-Ø@„`LÅ4Uƒ@b,á €V ºÅX$2~kSâñ–[°€ ýþ"À 0bæ­Ö*À “óXŸ``»`@[¬U€@",*Àà ÐU�Àâ¬#`@ ˜�€2e ’Ð †ª  Š¥5>Ž€UUU)À…UÒÑV`Ut´D˜y=I1%E‚@b,`4ˆ°h«€„fcx¬V"Áà¬~™�â,"X4š°˜«€@ëW1ýh=kÓã,*·a¬",*Â`±˜  °˜¬B3@`ðX„4f€±[¬B 3jØE¼ÿ ºÅXX2ëUDDT8y=I1%E€@b,8U€@ ‹€ÄXlU†Àb¬~™�ç´©¼ôœ3Ÿ@ëW1ýh=kÓã,>·aš °ØŒE†Àthbt!€XlU†Àb¬:{J›ÏIÃ9ôµsÖƒÖ±ý>2Ãà v*Ã`bV fÔVˆ°Ø©L[€2‚ ˆ@P‰*‰èq—à ª¨‡1=&±àÐ  ª¨ˆŠ‡8…”US• eUD”åHy=I1%E€@b,`4ˆ°2Ä v*Âà1„÷ødEˆ€X,Ö*Ä@ ÐE†ÀX,š:ÅX|2"Ãà¬:#>�Ö®cúѬO‹ÆX„nÂX|Rÿßá‘"`ÐX«3np‹ €0À � „a°Vuаèí*o=' çÐ:ÕÌZZÇôøË€-Ø@« € Eb·X«€DXˆU‡À!ýþ?ÌÆ÷X«Äg!Vˆ°ø« €ÄXl‡EÀf&`3ðV?ÌÆñHGÿ†DXˆU…@b¬Dsœ…X<ü#3qp«€3@èjæ?­ÀøË-Ø@«€:Ä8<š Ï u«˜þ´kSâñ–6[°€V0`LÅ|UŒb,`*Á BhG °H6�±p‘€LPÀ ‹€2eà€2f‘ÑUÒã) EU22öTÒÕÒæ±€Ð ¦’œˆŠ±8…ÓS E4ÄTèy=I1%E‚@8,U‚@ ‹G€ °H¬C‚À ‹€2e ‘p ‚†— Ê©Ê(isQÐèSLENœ…TÓÕ" ±V ˆ°Ð«€ÄXp‡X,Ö*Ã@ ÐE€@3 V ?ÌÆñ‹ pÀ«€:ÅX$›XÀX“(`Le& ¬LOÈ€LENGTHŒ¿€D5Dô9¬Xt©ª ¥¢Î…”ÕÓÔ`e5D4õ˜y=I1%E€@b,>p(4`0ðŒÌo`�V ºÅX2~kSã,·a¬~™�â·X«€DX0U‚@n±V Ÿ…X0î*Ààá˜Þ#uа8ÌFr`*Á ·X«€OÍ` |^2  v!€X†Ld@X4V"Áà±V ˆ°ˆ«€:ÅX,2"Â`¬"~a0°]>/aP»¿ßâ,Ã&8ÀE€@&9à  ‹à«€2eÀ]°èSTRCMPœ…TÕ’S`U5E$”Øy=I1%E‚@ ‹€@  `Ð[¬U‚@'æ°>2Áà v*Á ·X«€DX@üÖ±Ÿéñ–aóX@ƧÄ8<L/a »`Ð a0ˬU„@",08`›J@b,É” Fdjz$ČȘÅÀ—Hˆshd‰§3Y°èWKDAYœ…T`EE•Xy=I1%E‚@X$üÖ-XÈøË€ °Hù¬A �Óâ¦`ÀV ?5�CÖ2>2Á ¬~kBãôø‡€)„80l/`à»FX†LQX$üÖ�XÈøË€ °Hù¬0 �Ó⦌°`Ý„€C,Ã&-À¬~` ‹°Å0u€   @2€ð ¬t*,¨"Î…�ÒÑU d4„´DHy=I1%E‚@%Á`ð¸4:—€Àáð\&K…@À p¸|.€%Ã`à¸t>—€€âøZ*Á á˜Þ}­\Çõ ]>/b0»¿_â,ɘŒ °HøFf7„S�ðÉôµsÖ�tø¼eˆÀì U‚@Â31¼"l†]b¬sœ¦'@Ö*Á ‘$?ÌÆð‹Ñþ>�Ö®cúÐzÖ?§ÆXŒU‰Â31¼V}­\ÇõFf7Ÿ@ëW1ýhOˆqØ^2ÄÀ v!~¿ÄX“1Aƒ±V ˆ± øFf7„C/ÀÉôµsÖƒÖ±ý>2Ä`¬H~™�çÐ:ÕÌZÓâF¶Œ±0Ý„_¯ñdÌ`À„ ‹€2e€–`šž‰1`&(à&@ÄÈ šÌ�G@2BZ" ¤à…‘ÓSÓ• dtÔôåDˆy=I1%E‚@%Ê ©h¹HÃ-—)€¥ `å@4´ \ªe–�€K•€ RÐ0 r¸¶Z.X0Ë@À%Ë )h€K†€ÒÐp pØÞZ.KAÀ%à™h8¸x-`°X«€3@ð¬e„@X,ü#3Ån±V ŸšÂÖ°>/að» FXDU‚ÀÂ31¼Fë`°˜ŒäÃ&%à¬~™�â·X«€OÍa[XŸŒ°øÝ„ °XøFf7ˆÝb¬sœ¦, `"À ¬~™�â·X«€OÍ` |e‡Àì U‚ÀÂ31¼Vë`�È‹ ±¬C… ‹ @ëW1ýhÖ§Åã,>·a±V ˆ°h„uаdü*Á q ë`È‹†¬ w˜Ë@ X«€DX4|/`и«€„fcx‹€S¯ðÉôµsÖƒÖ±ý>/`ð»€ÍX$cà!b¬`Ð z`ÐX‡€3l ¬úZ¹�ëF°>/`ð»�À±V ˆ°h„ uаdü*Á që`È‹†¬ w˜“ˆAX«€DX4^*Á q"€ E…€XX"ú%˜Ïôø‡)…ã,N·a¬4"Ä@¬0+uаHdüÖµ€)ñxË-Ø@¸  K\€%Å@µÈŠX<Ö! ‹0À ‹€« Ýb¬b@VuаXøFf7žÒ¦óÒpÎ}­\Çõ£XŸb`V$?5„­` |C‰€Âñ–'[°€ q`–á€K‹€1P· ‹X<Ö!µôE‡`ÇU†X�Vë`�È‹ ± ¬U‚@'áV K5€)ñ–&cóXHÖ§È Õ G`ðX„fѰ#èjæ?­Àø¼e‰€ì Býˆ° ˜¶� °À‹€L]€¦)àB¬É”%€LV@€ÈXESC™$€•À,‚ˆˆ¦Š©GÈ誈hi‘žÀ¦¨†˜ž§ dˆ*“ øc–%LE@D€ �à „5ŽŽ€dÔµIÀ…”US eUDÄ”èy=I1%E€@b,!€XU�€n±V Ÿ†X¬O‹ÆX nÂ`ÄŒu�@À¦°>/`€»` ]>!Ä` axË-Ø@…úÿ`LÆ B:ÅX$2~™�â,N!b¬b@V'„pHdEŠ@X�ü#3Ýb¬R~™�ç´©¼ôœ3Ÿ@ëW1ýh=kÓã,F*Ä€á˜Þ+>�Ö®cúÐ.Ÿâ0°¼e‰€ì Býˆ°&cä!b¬?ÌÆð‹�þ>�Ö®cúѬOŒ±«€ ÅgÐ:ÕÌZ5€)ñ#S ÆX˜n «€3@èjæ?­ÏôøË€@V fÓ€èjæ?­À¹hÃ-—-€% `åÀ”´ \ºm–�€K—€ 2Ð0 røæZ.`5K@À%Ì Yh¹ˆÝ-—1€¥ `æ@¬´ \Êl–�€K™€ 2Ð0 s8ÖZ.h3Ë@À%Í 9h¹¨Ë-—5€% `æÀ|´ \Úc–�€K›€’Ð0 sxºZ.p7Ë@À%Î ih¹ÈÉ-—9€e `ç@´ \ê–�€K�€2X´ \ðK@À%Ï@´ �€9àU‚@ ¼e“€9,š ;1¼àh+uа�dE€@X,ü#3Än±V 9ˆÎL:ð1¿a°µ¬O‹ÆX|nÂX^•7§¦q˜ø °&PD¨©)Ȉ«œP šª˜baÊii*I“P èCTOIœ…‘SU`dDTÄUDXy=I1% (�ÑÓQSDXÖ"À`à° -`0 à°Ž`h+>�Ö®cúѬO‹ÆX<nÂX$Rƒ�ÑÓQS÷ødE„XRÿßá“ðŒÌou†O u«˜þ´µ�éñ–[°€VŠÅn±V ˆ°h« Ýb¬a aX«€3h ¬úZ¹�ëF°>/`ð»a@ uаdE„X4Vë`0ÉøU„â¬+uаdE„€ÃV;ÌoEXPFë`0È‹€‡B¬wa@ŒF"€¬,#a`m˜Á€ˆAX«€DX4^*Á vL `3òÓSÑ&>`@f¨$ª'¡ÆC@" ¤Æ€š“G@22j¢" ¤Ä8˜L/bp»—a  hh ¸ÐKC@@8ÈUƒÀb›s€Xp†LBÀEX`Vë`�Éù¬[kSâñ–&[°€Vc` qÀ–ž€€q°G °H4ˆÄgÐ:ÕÌZ5€)ñxË-Ø@©€LVÀX`ÄÔU†n±V ˆ± « :ÅX,ü#3ÏiSyé8g>�Ö®cúÐzÖ?§ÆX˜U‰ÍaSXŸâ`0¼e‰Àì UˆXˆVë`ðÈ‹šÂ¦°>2ÄÀ¬H~k À0X„f€`Vuˆp(6  °0ŒE�€t4bLÉ”€FR€2‚ª¢A$Äôš¬€G@2‚ª¢bJtà…TÐÓÔ`U44õ˜y=I1%E€@b,>p(4`pðŒÌo`°V?ÌÆñ `�[¬U€@'æ°>2Á  v*Á`·X«€DX8U‚@n±V Ÿ…X8î*Á`1 `�‹€0éÄÔU‚Àn±V ˆ°p¼Uƒ€ì™@€d4’ ªM]# M =Afp…ø‡€)†X˜" °H6¦€Ÿ@ëW1ýhƧÄ8˜l/b°»¿_â,ɘ½€ÌKÀD `¬U‚@",H~™�áKü2}­\Çõ õ¬OŒ±«„fcyôµsÖ�tø‡€-…ã,L·aëüE€@3Ð ë`�È‹„fcxEŠÿ Ÿ@ëW1ýh=kÓã,F*Ä€á˜Þ}­\Çõ ]>!Ä` axË-Ø@…úÿ`LÇüB :ÅX$2"Ä€á˜Þb¿Ã'Ð:ÕÌZZÇôøË€ ± ø@ |gÀ‹Ñþ>�Ö®cúÐzÖ?§ÆYønÂYðÖ!€ G'DYüž€YüÖ!É` ÐúZ¹�ëF°>/gà»gÀdÌYYðF"Ï€ :>15¿_â,É”@€LAÀ ʘSTNCMP˜¤€À�Ð ¦¨œ† ³ˆÉ鈑“ðHšs5‚Ž€dtÔôåD‰À…ÕÒ`D5Dô˜y=I1%E‚@b,.KAÀ% h8¸Xe-— € å àဤ´\25–ƒа€ÌFràph1)dÊ€#"àMQ1V2š‘Ñ”‘QfªÐ ˆŠ˜Š¨‹8…‘“UU ddÕDDHy=I1%E€@b,>p(4€€±V ˆ°h`X«€3@YôµsÖ�` |^2Áà v!€b¬`ÐV? °hÜ|0`¼ÄÜB:ÅX2"Á áx«€Ä @¬U�@", !€b¬a a X«3i(¬úZ¹�ëF°>/`ð»�à…‘ÑU“ÕàdtUDäõxy=I1% )¨�ÓÓ‘’QÄXB°«€_/ðÉôµsÖƒÖ±ý>2À  v*À`‘ŠÝb¬`€VÁÈiéÈÉ(ü 2~™�î±V9ˆÎB¬#`0 ˜�€2e@TðèGETNOWœ…“PRÔU dÔµHy=I1%E‚@b,>ph4€@,4!€X€B°ð«€„fcx‹ °À­Ö*Á ‘$?1Ÿéñ–&b@ð«€øË€ ± ù¬%kSâN¶â`°¼eŽ€ì ‡W€f; 2ã° @-â—€aà o€pЫ€3@a€qø–úË�@1 ·Ð�ÀX<Ö!´`E‡8`U‚@ ËK�À0д@ \Š�@%¢@†*Áà±&fßð˜ùÌX@f#À3@ Œ«±« ÄX`‡JÀ&<"¬0+uаHdü*Á  f°>2ÄÀ v!~¿ÄX†LQ€¥ÈàhZ¢.I‘ÑUS dtUDÄ”èy=I1%E‚@b,!€X4Uƒ@n±V ˆ°€«€:ÅX@š5�M` |^2Â@ v*Á ±V ˆ°€¼U„â¬"À ™‰p«€ Ýb¬?Àø¼e„€ì Bÿˆ°«€ Ýb¬ax«ÅX“1[`Њþ>�Ö®cúÐ.Ÿa »`ÐX«€DX@^*ÂqV `LÆ0Uƒ@b,á �0VdÆH@*:*¢DÖÌ:‘Ñ   US§…�SPUÒ dÔD4ˆy=I1%E‚@b,`4ˆ°h„a�V ?ÌÆñ€@,** ·X«€OÍ` |e†Àì U…@n±V ŸšÂ¦°>/a°»aPaPˆaPVa0VºÅX$2~kSã,6·a¬"Àáà *-}áÀŽ`�h}­\Çõ£XŸŒ°ØÝ„0ë¨Æ`‡XÀ&3`¬2"ıV ˆ±« €:ÅX\ö•7XÖ! «€ÄX,‡F@&' E‚ÀX,Ö*Á ´©¼ôœ3Ÿ@ëW1ýh=kÓã,·a¬+uаdEƒ€XÖ*ÁÀ Ú†*Á`1 aÕP ‹ˆ«€:ÅX ü#3Ã*ô©½8•3ˆ°X«€@ëW1ýh=kÓâñ– [°€Vuˆj6À °X¬E‚Àv cvÉ”FD2b*r:¢Dg¨*ª!¤Lp€ ® t(*ª)ª)N…SS D”ÄTèy=I1%E‚@X$š„@b,"*Á`á˜Þ#uаXÌFraÑP ‰X«€ Ýb¬apx« €ÅXDV"À ™@Èd4’ ªMw€# QQ=.p…•S”PÒàeTå4¸y=I1%E‚@b,!€X4Uƒ@b,ë`°È‹€ °x¬U‚@'áV;аx¬U‚À'æ°>/a0»a€°V ˆ°h†€LO€X4V"À ™@ ÕH:•S”PÒç…PÒàE4¸y=I1%E‚@b,!€Àâ¬#`@ ˜�€2e ’Ð †˜ž®Š¥5>Ž€DdôÄIÀ…”Õ�Ô`e5Dä5˜y=I1%E€@b,>ˆp(4`�ðŒÌouа8øFf7†DX4U€ÀÂ31¼EƒÀXü#3ÄX,U‚Àb¬{J›ÏIÃ9ôµsÖ�tø¼e„€ì UƒÀn±V Ÿ†XDU‚Àn±V ˆ°˜ë€ °˜Üu„@ÀøË -Ø@«€ÄX<bü*Á`1 aÓ` Šˆ&P* dˆ*“Y èÌÆñ¬U€Àb3“ƒ€LLÀ2€� ª@t)¥¤¨!&N…Õ`E5DÅXy=I1% (�ÑÓQSDX$Ö"Á`à‡€3@V?ÌÆñHFCDSMEMÿßá“ðŒÌoaP" E…ÀX\Vë`�Éù¬OŒ°ØÝ„ °¸­Ö*Á “ñ¼.Ÿ3ºÅXD2" ¬.#ap.˜ @f€1uаxøFf7†]b¬sœ�b��þÿ Ÿ„fc{¬U‚Àb3�«€„fcyôµsÖ(+aÀX«€O¬0waÀX«€DXxu…€Xxî*±a@‹ 0ï(ÄU€@2‚ÉpMODŒˆD”%9‰@(Qdˆ‡3UèITOCœ…”ÕÓÔàe5D4Äõ8y=I1%E‚@b,>ph4`°ðŒÌoˆ°˜« €:ÅX4ü#3ÏiSyé8g>�Ö®cúÐ.Ÿa�»a0ˆaPVºÅX$2"Ã@áÀ *-P—Õ`�X« 3@ž“†sè«ÅX€F#uаhdE‰X\U‰â¬&"Âà 0b–*Á ,L.( Þ0&ápV fØpèjæ?­Àø¼e†Àì U†@ u«˜þ´µ�éñxË €-Ø@« €:ÅX42~µ�éñxË €-Ø@‰€ÌJEXdFë`ÐÉøÞO™ÄXd‡@f%`"¬2}­\Çõ õ¬OŒ°ØÝ„@dÌTÀEXdEˆb¬b ðôUˆ€â¬2",**Ä1¬Uƒ@"Än±ÍX“( Œƒ€dÄTäuDˆÈ€$D9š‹G@"Jb*tà…TÒÕÒàU4µDô¸y=I1%E‚@b,`4ˆ°h«€„fcx‹€ °x­Ö*Á “ðË €5€)ñxË -Ø@ ˜–@ a[¬Uƒ@'æ°>2€ v* ·X«€DXTu„ÀXT,Ö§Åã,(·a :’1ga‹€0é¸ŨU„@n±V ŸšÀø¼e…ì ‡KÀ&1 ¬#`ð˜X4Uƒ@b,ë`°È‹€ °x¬U‚@'áV;аx¬U‚@'æ°>/a0»a€°V ˆ°h†€LO€X4F뀀 ÐE€@2�@ʘ$D9š¬€G@"‚ \à…ÕÐàD5Dô8y=I1%E‚@b,`4ˆ°h„`ðVºÅX$2~c?Óã,"*Áà±V ?ÌÆóÚTÞzNÏ u«˜þ´ §Ä8DL/a »`ðX‹ €:ÅX,2" ¬&ë`�ÉøU…@â¬STNCPYœ…”Õ�ÓT e5Dä4Õy=I1%E‚@b,`4ˆ°h„`ðVuаhøFf7žÒ¦óÒpÎ}­\Çõ õ¬OŒ°ˆÝ„ °x¬E„€b¬a@VuаXdE…€XPü*ÂÀ f°>/a»`ð[¬U‚@'æ°>2 ¬ë`ÐðŒÌo=¥Mç¤áœúZ¹�ëF°>! axË -Ø@„`LÆT†LWÀtÈc>*Áà1aÑ �«€ Ýb¬?�` |e†Àì U‚ÀÂ31¼F"Â`��þÿ ˆ°à«:ÅX$š Ï u«˜þ´kSâñ–[°€"À ™Ž «€„fc{¬Uƒ@b3“¬Rÿßá“ðŒÌouаXÌFraÙ �(„`L x2ÒÓSÑ#8@EU22ÉU&,`°Ô :Õg…UÐàD•Dô8y=I1%E‚@b,`4ˆ°h«€3@WаXÜB°€«ÄX@"p�4>Œ°x« Ýb¬a0X‹ €0èÐÄàU‚ÀÂ31¼"]b¬sœ…X4ü#3ÄXUƒ@X€\D‡€%±€@*Á ±Í«`,.*Á ,H.&Ä@Ú $`�X„fÙp`Ð(—b` mÀ °H¬UƒÀ¶´E…ÀX4E‹%ÅÀ¨[œÅ€¬ëÚ mÃapVdÊ &:Àȸ€Œì€dDE4UHÈh$AT˜Ê €^€èSTCLOSœ…‘ÑUÐÓ dtUD4,H*ıV Ÿ…X� o §Ìâ,.1þ˜í€p¨«€3@X« €DXT‡H€&&€¬."À ™APg´'¦ ª!¤Fh€r‚ ¢šJÔÖØ:�SPUÒ'…UàEUD8y=I1%E€@ «€3@L  bFB€*‚ª¢DÔ<:Uç…”UÕ eUE5E(y=I1%E€@b,`4ˆ°(«€3@ ˆ°X«€:ÅX ü#3ÏiSyé8g>�Ö®cúÐzÖ?§ÆX4nÂÆ °x‹€2eàYðèSKTOKœ…‘ÑUÒàdtUEDô¸y=I1%E‚@b,>ph4€@,"*Á`á˜Þ+uаHdüÖ§ÆXXnÂX,ü#3Ån±V Ÿ†XTB°˜« € Ýb¬?5€)ñ–[°€VºÅX<2"Âà¬**Âà f°>/a`»a[¬Uƒ@",.¯ap¸«€ ÄX“1ta0‹ €0ê ÅXU„@n±V ˆ°¸ë € °¸ÜU#`𘢀 °x­Ö*Á`‘Wа˜ÜUƒÀb,É” €Ma€#  Q=p…�ÕTT d5UU(y=I1%E‚@X$üÖ=XÈøË °Hù¬a �Ó⦌°hÝ„ °HøÞO™Ýbü2}`1#`�ðË€LMÀX“(š¢G@2ª‚‚*”à…“Ó DdôÄHy=I1%E€@ ‹ ° ­Ö*À “óXŸ``»`@[¬U€@",*Àà ÐU�5€)ñxË€-Ø@…þÿ`1Á`ð[¬U‚À'æ°>/a»€@,Ã&;à¬+a X«€DXPU„€b¬a`V? °°X.ŸŒ°ˆÝ„_ïña€@"À Ð�@Ç(U€@2�� ©H t)ª'!¦¨N…”ÒÒT“ e4´•$Èy=I1%E€@b,*À`á˜Þ+uаdE�@Í`KXŸ`pV?5„ ` |C�ÀÂñ–[°€V?a€Öc X`î*Â@±(ÍXHU„b¬~™�ç´©¼ôœ3Ÿ@ëW1ýh§ÆXhU„€ u«˜þ´kSâ4¶Œ°ØÝ…HX@Ö*Á á˜Þ{J›ÏIÃ9ôµsÖ�tøË °HøFf7Ÿ@ëW1ýhOˆpИ^2Ã` v*Â1ºÅX,2"Ãáh« æ8¬ +`"€¬(ëaÚTÞzNÏ u«˜þ´ §Åã,4·a¬ +uаXdE†Æðº|Î"ÂÀ¬4Èy=I1%E‚@b,>ph4`°ðŒÌoºÅX,æ#9:Ån±V ŸšÂ°>/ap»`ð— Ó�`ÐX„f€,**Á`á˜Þ#uаXÌFra€VaÀ pð–°€pà«€:Ä 6¢°¨ÅdUƒÀÂ31¼E„ÀX<Eˆ%Ä@x[Ä¬ë€ ÚØ" ¬"Ä€¬"ÄÀ¬"Åâ  D-£â@V uˆ@h*Â`   ·X«€DX°U„Àn±V?ÌÆóÚTÞzNÕéSzq*g>б`ÜU‚ÀÂ31¼Vë`�Éù¬]kSâñ–[°€"À 0cä!~¿ÄXcö*À ™ApÆ$™˜À ‚ˆˆ¦Š© dˆ*“pbÒ[Fk€22Jbš*¤Æ¬ºšˆ€Ç@2:*¢dà…”UÒV eE4•¨y=I1%E‚@b,*Á`á˜Þ+uаHdü2Á  c XŸŒ°pÝ„@@a€0Ö kÖkšÀøË €-Ø@„aP ŽÀ ˜ä€°�XHÖ§Åã,.·a¬"Ö5€)ñxË €-Ø@„aP ˆ ˜ø€°�X¶Ö§Åã,.·a¬~™�â1á€V uˆpˆ4Ÿ@ëW1ýhÖ§Åã,.·aE…@&(€,0b4:Â@ csXŸŒ°¸Ý„ °xøFf7ˆÄX`†X4Ö! Úd}­\Çõ£XŸapÖk˜Ïôø‡ €)…ã,4·aá €"À ™@°Õœ:QTUPS'…‘’SÑU dd”Å4UHy=I1%E€@b,>p(4— %¡àáPŒ´<\,2–‡€K…ÀrÐð pÀÒZ.ËCÀ%Ã@ihx¸lo-—%¡àáÐÌ´<\<–‡€K‡À 2Ðð qŠZ.!1ËCÀ%Ä@Ihx¸ŒË-—¥¡àâP<´<\Lh–‡€K‰À 2Ðð q@ªZ.)5ËCÀ%Å@Éhx¸¬Û-—¥a 1œ`PðŒÌouаdüÖ§ÆY\U‚@Â31¼V}­\Çõ õŒ�Oˆr¸Ø^2Ë v*Á ,Â*Á`,ÆÌ ¬ë€ ÛŠ"Â@ 0cø*Á á˜Þ+ºÅX2"Ê ¬ªëá@h}­\Çõ õ¬O‹ÆY\nÂXE™@XE™ÀX$Eš@X,EšÀ9”U€Àb(Í`Å U‚@Â31¼V+uа8dE•@YTÖ!Ãà Úl}­\Çõ õ¬O‹ÆY\nÂE€@b,>p(4`PðŒÌoºÅXæ#9 °HøFf7ŠÝb¬sœ…XÖ*À` Ðe†8`U€@ ‹ °HøFf7ŠÝb¬a�Vuа6 €° « :ÅXXö•7ž“†sèjæ?­­cú|e†ì U…n±V ˆ°È«€°Ø«€°è € °8¬U†@ ‹ ° ŒE…uŒbþÉ”€FM@*šf� ¢")¢ªFW€*Jr"*Äd4’ ªMm# =Lb€X,ü#3Ån±V ˆ°pù¬TkSã,*ÁÀæ±Ñ¬OˆphØ^2 v>Œ° ˜à °XøFf7ŠÝb¬? °Ç c$1S˜™€°&P"5ߎ€4U49ÀžX†[¬U‚@'á–a€ðV ?ÌÆ÷X«€OÍ` |^2Á  v> ° ˜¥€ °XøFf7ˆÝb¬sœ�b·X«€DX8üÖ'5€)ñ– `àóXÜÖ§Ä84l/a»†X†ÚÀøË°hXHÖ§ÆX<uƒ@ÂV°>!Áà a[ ÆX@n ‹€0À ŠÐë€5�Í` |eƒ€X4¬[kSâ¶Œ°xÝ„ °XøFf7ºÅX$2~c�átùœE€@`Æuƒ@¦°>/`à»�,Ã&5`áI¸@p0�f“Ðè@c0›Ž‚A„àp2›…ÒÛ`f€@ ŒØÅŒbX*À ™A@f袩)'©Mp# AQM%jp…“ÓPUÒ dôÔDE…@&2 ,0bº.4›„ói„èc4„3 ¸è 4N)¸]- á°h1ž˜¦€ÌB€f< � Œ8« €@ëW1ýhOŒ°¸Ý„ °¨¬U‚ÀÂ31¼2ë`°˜Œä!€Xcl*À ™A�eÔ&'¡ ª"ÆC@" ¤f�¢©)'©Mu@c =5Q "p…“S‘Õ dÄTäuDˆy=I1%E‚@ ‹€ °¬U‚@'æ°>2Á` v*À 1aÐ� ˆÐ«€2e€R èLE¡àâÐ|´<\\p–‡€K‹À2Ðð q€ÊZ.19ËCÀ%Æ@Ihx¸Ìë-—¥¡àãP¼´<\lx–‡€K�À2Ðð qÀêZ.9KCÀ%Ç@hx¸ì…-—å¡àãÐ$´<\|E–‡€K�ÀÒÐð rZ.A$KCÀ%È@™hx¹ •-—"å¡àäPd´<\ŒM–‡€K‘À ÒÐð r@>Z.I(KCÀ%É@hx¹,¥-—&å¡àäФ´<\œU–‡€K“ÀXE›@XE›ÀX$Eœ@X,EœÀ9´U€Àb>Í­ ,0c:*Á á˜Þ+ºÅX2"Ê ¬ªëã m‹>�Ö®cúÐzÖ?§Åã,®·a¬ "Π¬"Îà¬"Ï ¬"Ï`ê*À`±:fÜ 1ò`�}`°çÐVuˆh� 6Š€ˆ°�Äh cŠ1p˜�€ÌrÀ&0@¬ ~™�â7X«€Äg&˜�€2e –Ц‡3È(ˆŠhª‘ž’œˆŠ±M"p…RS‘V T”äDUˆy=I1%E‚@b,!€XU€@n±V ŸšÀøË€-Ø@«€ Ýb¬? °XY¬O‹ÆX4nÂX“18`‹€0èhÄ|B°&P5OŽ€T”äDU‰À…�QÑU dDE4UHy=I1%E‚@b,>ph4`ÐðŒÌouаxøFf7žÒ¦óÒpÎ}­\Çõ õ¬O‹ÆXDn ‹€0À ‰ «€„fcx­Ö*Á`‘å4ˆy=I1%E‚@b,>ph4€,*Á`á˜Þ+uаHdü2 ¬~™�â·X«€OÃ,$: ` |^2Âà v*À ™Š…þÿaPÖkZÀø¼e…Àì UƒÀÂ31½Ö*Á ‘aVK5€)ñxË €-Ø@„aP ‹ð ˜®€°�XJÖ§Åã,.·a¬~™�â³èjæ?­Àø¼e…Àì B°¨ÆÀ†LeÀXH¬?kSâñ–[°€NGTHœ…�ÓÕÑT d4ÄõtU(y=I1%E‚@X$üÖ-XÈøË °Hù¬A �Ó⦌°hÝ„„,*Á a–a€0V ? °ÄÈu€@2€à ©øt!¦'«¢©N…QTUPS TUTÈy=I1%E‚@b,!€X4Uƒ@b,ë`�È‹€ °x¬U‚À",&* áVK5€)ñxË €-Ø@«€ Ýb¬?5€)ñxË €-Ø@„`LÅ4Uƒ@b, ÒÐð r€^Z.Q,KCÀ%Ê@™hx¹Lµ-—*%¡à¬ ~™�â·X«€DYTüƧÆY\U•@¬–c?Ó⮦Œ²ÀÝ„ °(øFf7ŠÝb¬?5ˆ ` |^2Êà v*À ±Vf€,®*Á ,²*Á`,¶Ë ¬ëåph"Â@ 0b¬*À á˜Þ+uаdüÖµ€)ñ–W[°€V?ÌÆñ[¬U€À",ª*Á ,º*Á`,¾Ë ¬ëePm| dˆ*“!h2.‘ÑTÒ&© QÐ Œ’˜¦Š©8…“ÐÐU`dÄô4DXy=I1%E‚@b,`4ˆ°h«€„fcx­Ö*Á`“ñ¼.Ÿ3ºÅX4ü#3Ã",*Áà±V ?ÌÆóÚTÞzNÏ u«˜þ´µ�éñxË€-Ø@«€ Ýb¬a V ? °�Y¬O‹ÆXDn ‹€2f-@¬+`ð*˜¥€@dÊ&°€Ð ˜ž†‚¨‹8…‘ÑTÒ dDôD4ˆy=I1%`�ð« ÅX4ü#3Än±V 9ˆÎBE€@&' ¬É” FC@" ¤ÕÀ:�QÑU'„ÑTÐà4U48y=I1%E‚@b,*Á`á˜Þ+uаHdüÖ 5€)ñ– [°€V ?ÌÆñ[¬U‚@'á–a€ðV ?ÌÆ÷X«€OÍ` |^2Á  v> ° ˜¥€ °XøFf7ˆÝb¬sœ�b·X«€DX8üÖ'5€)ñ– `àóXÜÖ§Ä84l/a»†X†å   åå^2Ì v!ƒ”ÒS•‰9 4˜�+ÆPj:*r±'€9M!95O‘€3@!ˆÄgÐ:ÕÌZ5€)ñxË0-Ø@&bˆÄ - %?û3@%Ÿ@ëW1ýhÖ§Åã,À·a 0bÆ*Ä êfx«0€Ä?Øš@ %àÐŽ%ÿ`h}­\Çõ£XŸŒ³Ý„0À ŒðG€°4€@,N>Œ±  €q8‡€3lhôµsÖƒÖ±ý>/f»ë5�-` |^2Ì v>Œ¼( ˜¤± XÖ§Åã,À·aàËÃLX¦*S€)ˆxǘcz1¥˜Ã€ÌM€f! ,;¦1îb@àË0í¸Å  cBèà`!f€ ™CÄœ#% =A:2æÕÒc& Q Q=2œ‘ÑUS£8 Q]I3¸QTUPS&%@ €1 ‰`PFH*zª¢a$e쪨("©Fj€2šZJ‚deì ¡¦'©¢Íc€£ Q9�ÑÓQSxdü#3ÄX“( š‹€G@2‚’²rz$à…“RÐT‘É dÔ´$rHy=I1% (�ÑÓQSDX\A–�€K‚@RÐ0 pPžZ. 9Ë@À%Á€©h¸4A-—% `¨9 M57‚PÈ‹€p(47…Óæq`P‹€p«€:Ä8<š °¬U€@",¯`ð¸„`0Ž`h*À`,+uаdE„@X<Ö*À “óXŸa0V?¼ôœ3Ÿ@ëW1ýhÖ§ÆXnÂ8 šp4`0HGÿ†OÂ31¼E€ÀtXbj*À Ú‚É”FNÀ2ªrbJr\ed")£)"¢ÍW# I1MRp…’S’‘PÕ d”ä¤T5Hy=I1% (�ÑÓQSDX$Ö"Á`H‹€ °høFf7ŠB0r"šj*o Ÿ„fcx‹€Ï u«˜þ´kSâñ–[°€V f€,1/`ðŒE‡8pš°¸ôµsÖ�` |^2Ã` v.å…‘ÑUS• dtUDTåhy=I1% )¨�ÓÓ‘’Qâ“- %>(ð”ÒS•‰"Š`M!95N(�Ó•“â€@9X’\RT–€KŠ€2Ð qX Z.,K@%Å Ih¸¸‹-—€e ã„´\b –€KŒ€’Ð q˜Z.4*K@%Æ Yh¸ØA-—€e ã€ ´\rX–€KŽ€’Ð qØZ.<+K@%Ç  h¸ø‡-—€% ä”´\‚Láp f€³èjæ?­Àø¼e˜ì u‰­` |^2Ì vÄ ìÍ£(9 =9%Œ0À �èë5€M` |^2Ì v*Ä - %?ú€DY„`ä4ôäd”~*Ì Ð†LG@GX�¬kSâñ–`[°€ðeˆÀXŒ¬µ�éñ–`[°€Ö#7…ÓæqHG„DY„#‰@0ZJöfÐ`X«0€Äg!Ö# ±¦€ÌVÀX`Åu‰ÀF°>/Zp…TÒ EU4ˆy=I1%E‚@b,*Á`Bh«€:ÅX$š°&PÉ)ÉH¨j“Q èPUSHœ„ÔÔ 5õy=I1% (�ÑÓQSDX$Ö"Á`H‹€ °høFf7ŠB0r"šj*oþÿ Ÿ„fcx‹€K„À0ˆ´|Uƒ@XT„ÀX,Ö*Á ÐE€@8Dš °&P.0Ë ŠH(j‘“� ¤Ššœž‰5?Ž€5õ À…”‘SS“Ñ e$TÔäôHy=I1% (�Ñ5…Í` |C„ÀÂñ–[°€f€®?€", 8šp(„f€:!¶€†L_€`ư‡@À&5à ™@¨Ƙ#" A.c"€’À šž¬š†IKÊii*I‘˜@ žª¨¦I—Š éh±š� „ˆž¦H‰1£ ®t&¥ ©#’N…“PRÓÕ dÔ´Å5Hy=I1% (�ÑÓQSDX$B3@ >�Ö®cúѬO‹ÆX<nÂ%Â3 ¸N7�N‚y˜@m2›Mç#ȺZ¸!ÃÀ Ðb´Âà¬Í ‹ € °˜¬UƒÀiSyé8g>�Ö®cúÐzÖ?§ÆXlnÂX\Fëa0È‹ € B?ûü2"À¬&)ŠÝb¬?ÌÆ÷X«Äg!Vˆ°˜¸€Lc@X\E€@2‚ÀɨILENŒ£TE4tUHËERRORŒ´€TĔ䵮Pt$§%"¡ªN…–�PÕ e…E$5Hy=I1% (�ÑÓQSDX$Ö"Á`à‡€3@V å–€K�€rÐ r‚Z.D(K@%È h¹©-—#€% ä€´\’E–€K’€ Ð rXRZ.LK@%É h¹8©-—'€e åt´\¢D–€K”€Ð r˜2Z.T$Ë@%Ê 9h¹X©-—+€% å€´´\²E–€K–€ RÐ rØ Z.\'Ë@%Ë 9h¹x‹-—/€% ¨59X“€ ÆY€nÂ3�óüeÀ\f»bP�õ Ÿ†Przr2J? a€pÖ$kZÀø¼e˜ì |AÈiÊŠIˆ|†Lm@GX�¬kSâñ–`[°€V%Áhi)ÿÔ2"Ì #!§§#$£òVafÓ01Íb@°¬O‹ÆY€nÂX”#¡¤§ÿPÈ‹0€nÐFCONFIGê`¬Âͼ`,0cì:Ä€ `CXŸŒ³Ý„ ±(F CIOþ ‘a€9 =9%À ³6†0À ˆøÓQSDXU€@ ‹€ °øFf7ºÅX$ö•7ž“†sèjæ?­Àø¼e‚Àì “1,`h"À ¬Í2€ÀɘUNLINKŒƒ€då…DäôHÉàDSFREEšŸ€G@2’*jrz$à…“–“Ñ då…DäôHy=I1% (�ÑÓQSDX$U‚@Â31¼Rƒ�ÑÓQS÷ødü#3ÄX“( š‹€G@2r¢rz$à…”•““Ñ e%däôHy=I1% (�ÑÓQSDX$U‚@Â31¼RƒtM†ÃyŒÂt2ˆ †“q¬Êd '3 ºZ:! Ðb6*Á ‘+ÁÈhŠi¨©¿ûü2"Å ¬ëbИŒä*Å`bðV uбxÌFrb°� ˆ±ˆ«€„fc{¬UŒ@b3�«€°&Pf¨Šh誓@Œ�€TU%$õ)«�t& ¥¦)ªN…‘”‘SÕ de$TÅ5Hy=I1% (�ÑÓQSDXU€@Â31¼Rƒ�ÑÓQS÷ødü#3ÄX U€Àb¬~™�ç´©?ÌÆ÷X«€„fcyí*o=' çÐ:ÕÌZ5€)ñxË€-Ø@…þÿ`LÄÌUƒÀÂ31¼Rƒ�ÑÓQSxdü#3ÄXLF}­\Çõ£XŸŒ°èÝ„ °høFf7ŠB<2"ÃÀ¬D&аH¬U‡€ ‹ € °H4a01_a0X«€„fcyí*o=' çÐ:ÕÌZZÇôø¼e‡@ì U‚ÀÂ31¼E„À&5àE…ÀX\Ö*Â`´©¼ôœ3Ÿ@ëW1ýh=kÓã,:·a¬.#u   аhøFf7†DXlU…À"±[¬U‚@",<*Ã`��þÿ Ÿ„fc{¬U‡€b3�« €ÄX\‡p@&; ÀV`L €2úÕÐã0À19Q"2ÉU&¤ 1Ð °¨¤‚†©8…PSSÕ‘`TÔõdXy=I1%E‚@b,!~¿ÄX#†€X$š ³G °X6Š ³ Ö§ÆY”u˜ÀÀ6°>!Ì  axË3-Ø@«€2f'ààË €°ÈXO‹ÆY”nÂXde™@8dÞI1% )¨�ÓÓ‘’Qâ“- %>(�ÑÓQSDX$#¡¤§ý V f€,:ú` aþŸ`ðÖ c?Óâ¶Œ°€Ý„_¯ñdÌJ€?Hš  ä4ôäd”:!‚ÐÒSþ�4AÈiéÈÉ(þpU!¢)¦¢¦ð@ˆaŒ†’Ÿô€8Dš@dÊÀ#!@A -962nÑÕI#( ’2¬ÒÑf«àÐ †®ˆ’¥8…‘Ñ�UV dtE$Uˆy=I1% (�ÑÓQSbŽÌGÀEX°Rÿßá‘@€¬€Í¾ d¼.Ÿ3ˆ±0ôµsÖ�` |e�€ì U�@„ÐŽ:`Pm-˜­«ÅXî!Ä€ Г(E˜¤€@e&§«$¡’FSÀ"z‚*tf$$ª'¡ÆK€*Jr"*ÄÅü &=à  dˆ*‘’P ª –œšI1(Ê0CTOC˜ž@e°! §*FZrzr ¤Äì#.`5 1=MkÈèŠH*«€…‘Ñ”“`dtE%$Øy=I*ÁÀÇ0Î}s?Íâ7X« DX8E€@2�@ÊPEEKŒ…e4´äØÈ€CD$ŒŽd$Dõ2DˆÈ|MY# Q9p…‘ÑUT dtUEE•y=I1% )0ÐÒSÄX$#¡¤§ý V f€,:û  bkXŸ`Ð×ÜkÚÀøË¾ØX†Ö§Ä88L!Á  axË€-Ø@„x`LÄìu÷@ÄÆ°>2Á ¯¸Ö'µ€)ñ–}°±Q¬Oˆpp˜Cƒ@Âñ–[°€)h¹ë-—!€¥ ä@´B3@�à�h àdÍ¡  Í €à˰X=kÓã,Š·a¬o §Ìâ, £ C�@ ë`´4”ÿÿþo §Ìá“ñ¼.Ÿ3ˆ°(ôµsÖ�` |^2È  v.FK[@9š0À ‹XŸ@fÔpÖð�x]>g Ÿ�átùœE�@5Ü#^€8›`X#ÝÀ átùœ2~7…ÓæqÙ`�™6™@@`p‹qþ>�Ö®cúÐzÖ?§ÆYnÂX Rÿßá‘GàpVGf€gù¼.Ÿ3ˆ°(«lЇ€3jà«€^ðÉôµsÖ�` |^2È  v!³ LÛþ1»`p‹€0ë Åè \¢.–æ�rˆ6ûÌ~@GXx2À@ ;j1ÃdÊ€&:` ŽÉ©êÉ(d“à ˜ûÆ` #8 Y9]1%:2,”US£4`YAUQ%9R3¢”‘SPT’ã) L‘O™Ã",Î:Ì zo §Ìá‘ifpð«4€%šÀøË3-Ø@«€LbXdx2à :”1‹a�°5¬O‹ÆY”nÂX“1¥f@°>/fP»ãàh:Ã@|–kSâñ–e[°€Ž>á h"À ™ŽxÆÜ" °H4aPŒF}­\Çõ£XŸŒ³(Ý„ °&cøX,š°¸ŒF#>�Ö®cúѬO‹ÆY”nÂX“1 f@°>2Ì “- %p(4—%¡àâð´<\`R–‡€KŒ@òÐð q�>Z.3KCÀ%Æ€ hx¸ÔA-—¥¡àãp|´<\pW–‡€KŽ@Ðð qЂZ.;KCÀ%Ç€9hx¸ô³-—å¡àãð´<U€@Â31¼Rƒ�ÑÓQSxdE�8$U� Dà�h#b Ž ˆ²dX«€3@ˆ!Á ÐE‰b1ôµsÖ�` |1% (�ÑÓQSDX$Ö"Á`¬~™�â�Œ†ˆ¦šŠ›ÿ¿Ã'á˜Þ+>�Ö®cúѬO‹ÆX¸nÂÁ–"`�ðŒÌo„÷ødE‹À ¬U‹Àb3“ ˜“€‚C,D1H`�ðŒÌo„y dE‹ÀX¼Ö! Ë€ °HøFf7ŠB<2"Æ ¬bëâ ho §Ìâ,L}­\Çõ ]>/b໿ßâ,ɘ̀ ±0¤R)„B`ˬU‚@Â31¼2"ÄÀ��þÿ ˆ±xG€ ±xð"À ™‹€„`L @U€@1�   ‚†–œ›5„Ž€dtUEE• À…RS T„TÅHy=I1% )0ÐÒS⚀ =9%(�ÑÓQSeÁ ih¸(É-—€% àÀ´\s–€Kƒ€’Ð px‚Z.2K@% Yh¸Hí-— €% á@$´\*r–€K…€’Ð p¸‚Z.;Ë@%à )h¸hé-— €% áÀ´\:n–€K‡€2àPmŸ` �7…ÓæpÉøÞO™ÄXm@6àC�@¶øu€€ átùœRð“ðŒÌo`P ÔÝpfÝÐÖ7…ÓæqHG˜DY|À «#€3oàëÂéó8¤#Ç",Ž¡À!"*Èà Ú.:À@ðº|Î)ô@È‹#€iHF–в86™Ž°¼.Ÿ3ŠB>ð2"Èàˆ¨à"¬ŽÍ© #¬o §Ìâ��” ˆ²8¯€„k«#€3k@ëÂéó8¤#ê",ޝ@!ækÜ©©Š“€…’TÓÔS d•4õTèy=I1% )0ÐÒSÄX$#¡¤§ý V f€ `XŸŒ°pÝ„_¯ñdÌEÀ?Hš°&P$É*iê Ä‘�   ‚†–œ›5*Ž€d•4õTéÀ…“ÐÐÓÓ`dÄô44ôØy=I1% )¨�ÓÓ‘’QÄX$Ö"Á`U‚@ ôµsÖƒÖ±ý>2À¬~k ÚÀø‡-…ã,:·aU‚Àb¬Íb," ¬Í¬ÆÖ§Ä9”L/f`»ápf€ 0b~Âà*Í&)`"4Í· .Í ‹€2e `0˜ï€@d$!©" ª"Æy@"z‚*teh)"¦§«Fv2’*r i$d€( ¡¥§&ÆRrz‚É$eP£!§¨,ÆXjbzš,ÕÄ:PSSÕ‘g…�ÓÔÑ d4Äõ4E(y=I1%E€@Xš2e`�p ˆ¦Œ¤Š‹5 Ž€d4Äõ4E)À…PÕÑT T5tD•(y=^2È@ v!Á ÐbÌ*Ä€�Œ†’ŸÖ'á˜Þ#b`*À ±&f€,D#b V"¾Ÿá“èjæ?­­cú|e�€ì Uˆ€n±V ˆ²ø@*ÈqV"ˆ±ÉLjXˆVë`PÈ‹ +ÅYî*Ä€��¼ Ÿ„fcx‹ B0r"šj*oþÿ ˆ²Dd0hæ@Âéó8‹@ëW1ýhÖ§ÆYnÂXˆMâàVf€ 0b*À BhG °(64€ÍX #ƒ@",^X,Ö*Åà ÐE€@2ƒ0 ŽðPFY€2"z™"f!"'©’!Æz"¢zgD¤§""¬LXÀ@3�•TÓ“I&9` 5úŽ€dtE%$ÙÀ…‘ÑU‘`dtUDäDXy=I1% (�ÑÓQSb“- %¹�æñßÀ�)àPmÙ`0HGÿ†OÂ31¼øæÏ®gù½Ö! ‹€i`F©�p(âñ–[°€ õþ"À ™Š˜ ˜˜@ `°!4#ƒÀ0rzr2J?!f€,"}­\Çõ£XŸŒ°àÝ„_¯ñdÌa@X,üÖ5€)ñxË-Ø@D`°h*Á` ÐE„@&3 ¬"#a[¬U‚À",<! b¬"{J›ÏIÃ8‹q«:ÅX$›O@b¬"aŽ`°mJŒ°àÝ„0À �¨²€L~&+ ¬ÍX,š°&PD   ܈j‰èq�pŽŠ¨¨²¡qÈ誊êH‘�à ’œˆŠ±¬Éˆ©ÈꉞР˜ž†žšI13 ˆ@èFi€*:º"J”Æ€ # 1=1j2ɉèhié³€…“RÕS’T`dÔµTä•y=I1% )¨�ÓÓ‘’QÄX$Ö"Á`àðt´\ $–ƒ€K„@’Ðp p�’Z.KAÀ ‹€ °X‹ K…€0h´L… †CONFIGà ÐU‚ÀX`\4ƒ@%¤ 0¢à¬Í£Á ÐbD*Á ±V f€,É” FL€2:*¢bJtd@$© ª*,ÆJ*zª¢™$Ôà:”“ÓT'…T‘PQ U$TDhy=I1%E‚@b,`4ˆ°h„a VuаXøFf7žÒ¦óÒpÎ}­\Çõ õ¬OŒ° Ý„ °h¬C„ XŸa@»aÓ Š0« Ýb¬aPÖaP¸« ÄXH‡D€&) ¬$+>�Ö®cúѬO‹ÆXPnÂ/÷ø‹ 0À ‹Ø«E–€K„€Ð p˜Z.*K@% Yh¸X›-— €% á€´\2–€K†€2Ð pØRZ."Ë@%àéh¸x‰-—€% â´\BM–€Kˆ€2Ð qbZ.$"K@%Ä Yh¸˜­-—€% â€´\RP–€KŠ€2Ð qXRZ.,$K@%Å  h¸¸-—€e ãÄ´\bT–€KŒ€Ð q˜Z:ƒ�Ó•“øõ¬O‹ÆYnÂ8C�´0C�@´HbB:ƒ�ÓÓ‘’Qü(õ¬O‹ÆYnÂ8CŽ€´¨C�@´Àb~:ðÀÖ°>/dp»àP?fÔ€fÔàŠè‡€3@L¡„b€�p †¤Š‚¨‹1„€É REMARKŒ“€DU„•HË0PUTLINŒÅeUD”åHË`NEWLINŒÖUUD4ˆË� CLOSEš¾€Ç@2š*¢*r´à…”ÑUSÑ e4UDÔô`ÐX« 3@Vˆ°x‰LL€X,ü#3ÄX“(Œ¤eUD4‚Iªøt+©$ª"£N…��ÓÔI d$4õ’Hy=I1% )0ÐÒSÄXÖ"À`¬ÍX ü#3Â0ZJ ŸšÀø¼e‚ì “1"`ðŒÌo„z dü#3ÄX#�€Xš5€)ñxË-Ø@«€„fcx¤#ê",*À á˜Þ)ú€ÉøFf7ºÅX$æ#9 °øFf7ŠB> 2"Á`uƒÀÀ¦°>/aà»`Ð[¬U‚À",0> °ÀÜUƒ@b,> °€ÇUƒ@n±V ˆ°Àë€ °ÀÜUƒ@b,1·`ðàË€0ëÀÆUƒ@n±V ˆ°À¼U†â¬+>Œ°&P>/‰*‰èsPŒ�€2DC™©H t*¨%§&’N…QÕÑT TutD•(y=I1% )¨�ÓÓ‘’QÄXÖ"À`¨9 =9%΀Âéó8‹@ŽàÀh#`Àà ¬"Àáà -7áÀ�)àðm/`ÐX‹€2e°Œ €e5D4õ™ªxt&¥ª§$¨Î…“ÔS‘ dõTäE(y=I1% (�ÑÓQSbš€ =9%E‚@b,.ËAÀ%Âùh8¸D-— å àá0ü´\(?–ƒ€K…@òÐp p°þZ.ËAÀ%Ãùh8¸d-— % àš:ÅX,æ#9:Ï u«˜þ´kSâñ–[°€ õþ"À  ÄXHc*Â@,É” €FO2:*¢A$ÖP:T‘PQ§…”‘SSÕ‘`e$TÔõdXy=I1% )0ÐÒSâ�@ M54E‚@0ZJÒ`�hÖ§ÆXTnÂ/×ø‹€2f"€¤ÍX0úZ¹�ëAëXþŸaP»a€PV ÷pÈ‹ +ÅXXî*Á€��” Ÿ„fcx‹€ B0r"šj*oþÿ Ÿ„fcx‹ € °˜¬U„@iSyé8g>�Ö®cúѬOŒ°¨Ý„ °˜¤#Á.4!Ë@%Æ Ih¸Ø¥-—€% ã€´\r–€KŽ€ ’Ð qØ&Z.<)Ë@%Ç Ih¸ø-—€¥ ä,´\‚R–€K�€RÐ r>Z.D)Ë@%È Yh¹-€9M!95O‘€3@ˆÄgÐ:ÕÌZ5€)ñxË#€-Ø@¹ Æa7 ΂™„ìeMÇcIÈÞn6™MÇAt´€C’ 4˜� ä4ôäd”~0o §Ìâ,À ÍHy=I1% )0ÐÒSÄX$Ö"Á`¬ÍX$ü#3Â0ZJÿÿ ˆ°xùŒkSã,"*Áàæ°>! axË -Ø@…úÿ`LÄÔU‚ÀÃÖ3ý>2 ¬ÍgÐ:ÕÌZ5€)ñS ÆXHnÂX$ü#3Â?ÿü2"Áàç°UƒÀâ¬~™�á?ZÀø¼e„@ì U‚@Â31¼#Â@",> °xÞc *Á`ãx]>g`LÅŒU‚@Â31¼#ÿÿÃ",~s>ÅX<îÖ*Á`1ÈU€ÀÂ31¼Ræ‘  ±V 9ˆÎB¬~™�áî`ððUƒÀâ¬ÍXF"ÀÀ :p1JdÊ@#'àQH’2Q‘ÒÉ#7€1UM"k’ÈHiê $“€…”‘S�SI e$TäÒHy=I1%E‚@b,!b¬`à*ÁÀ±V f€€Ö*Á ‘WаpÜU‚@bšÂéó8‹€2e“p „ˆž¦H‡©©êÈD“0€˜š@È‹ ¼à‚*Â@qVàPÈ‹ ‡B¬(waŽ ˆ°°¼U…€â¬~™�â±YôµsÖ�` |^2à v*À ±f€ 0bÖXÖ!À  ÐbðÉ” €FFÀ"J¢zÅì(&"@0uÉ©j*‰˜P†¨ž‡5�Ž€TutD•)À…“ÐÓÓI dÄô4ôÒHy=I1% (�ÑÓQSbš€ =9%)0ÐÒSÄX$Ö"Á`- %?é °H4kSã,P·a ™‰ «€„fcx¤#!¢)¦¢¦ÿïðÈ‹@ X«Äg!V ?ÌÆñHG€DXxU‡€b¬ÍX,ü#3Å!ýþaÀVb q-tâˆ!Áà ÐB°&PH1x€ÈXDSGET™Ä ¦#+ A -962üTÐÓÔf²`Ð ž Šœˆ¥8…”“ÓT e$ôÕHy=I1%E‚@b,`4ˆ°h«€3@YôµsÖ�` |^2 v*",,!b¬,sœ…XLRÿßá“ðŒÌoa0d˜¿€p`4aÑÐ ‰À† CIOú@ ÐÞO™ÄXP0*À ˜Í¨REMOV$Œ�€d•4õâHÈPPACKNMŒÖT4Äõ4Y®t)"¦§«"Î…”ÑUS• e4UDTåhy=I1% )¨�ÓÓ‘’Qâ�M!9X’(¦”Ò�ST† 9QI1\T–€K‚€2Ð pX Z. K@%Á  h¸8‰-—€e á¤´\"8#@@8šp(4àPfÓ "À`¬|¿Ã'Ð:ÕÌZZÇôøË#€-Ø@«€ B< 2"Ëà Y|›Q€X F"À` :º1sàPmLàP!fÕPŽð�h!À  Û4À (Í´` !à Ûv!À  ÛdÀ 4͸€ !ðà Û¦!À  Û”À RÍ»€ !ä ÛÖ!À  ÛÄÀ ^;€ !ê` Ú!À  Ûô*Á á˜Þá “óXÖ§Åã,"·a¬~™�á`ððUƒÀóà"À ™@˜e4$© ª*,ÆBÀ*2"zY$×ì:”ÑUSÑ'…•“SÕU eE$ÔõUHy=I1%E€@Xš2e`�p ¨Š¤š’�5 Ž€eE$ÔõUIÀ…•Ô’UQ eu$•DThy=I1%E‚@b,`4ˆ°h„`ðVuаXøFf7žÒ¦óÒpÎ}­\Çõ õ¬OŒ°ˆÝ„ °x­Ö*Á ‘ÀÕ$:”‘S�SI'…•TÓ“I eU´äÒHy=I1%E‚@b,*Á ãx]>ga ã˜g>¹Ÿæ÷X„ f€,(X,Ö!€ ÐF"Á ,0+uаXdE†€XHøæÏ®`y¼"AO¢¬4wa€X«€DXp|:aÀ¸«€Äb,>Œ°€ø2Áà¬Ö…Óâñ–[°€Ö7…ÓæwX…þÿ ºÅX$2~sÆXD¬ kSâñ–[°€Ö`ðð0e„`Ƥ ñ–dÌF_l¬ kSã,P·a¤! ]>/b€»WŒ° ˜Ÿ€Ÿã,1F`Lİ|?}°ðüe÷Ãñ—ÝFXh|a°ð¸e‡€ã,D*ƒ�ÑÓQSx E ˆ°hG€@h‚ÐÒSþ�‡ 3i¨Ë€Óâñ–([°€1šaÐx]>gŠE"‘HD ŸFXtÞO™Ýb¬b�ÃàRÍ ‹ € °¨Eöÿ Ÿ@ëW1ýhO   ‹ÆX nÂXT#‡@",R~sÅX¤î~kÀø¼eŠì U…@8t2"Å ñV);ÌA@EXTF"  ;¢1æ€@,>Œ°à€px†CONFIGê` ÐúZ¹�ëAëXþŸŒ±@Ý„q4aÀKÓâñ–([°€Ž#áàh+>�Ö®cúѬO‹ÆX nÂX|¬OŒ±@Ý„ °XøFf7ŠÝb¬b�*Å ±f€`Öµ€)ñxË-LM@X<F"Áà :1¿_â,É” €Fa€2jz²J$×H:’TÓÔ‰'…’TÐU`d•4EE˜y=I1% )0ÐÒSÄX$U‚@Â31¼#¡¤§ð�ÉøzÖ?§Åã,·aE€@`ÄdB°ĈU€@2€À ©pt$© ª*,Î…•T“RS eDU$Ô”èy=I1%E€@%À`Ih¸©-—€e `à`Ô´ \–�€@Vuˆp4dÊ#!À Q=b2" ¬D&а¨¬U‚@ ‹€:ÅX4ü#3Ã.±V 9ˆÎB¬"}­\Çõ£XŸŒ°¸Ý„@dÌTÀ ‹€2e’À†¨ž‡ dˆ*“V0èADDSTRœ…�UÑU dDôDHy=I1%E‚@b,.KAÀ%Ã`™h8¸p]-—€¥ àáàd´\>-–ƒ€KˆÐp" ¬*|¿Ã'Ð:ÕÌZZÇôøË€-Ø@« € Eb·X«€DXˆB:T"á†O u«˜þ´µ�éñxË€-Ø@« €:ÅX,æ#9@@X«€DXˆB:ÅXˆæ#9@€X«€DX�B:ÅX�æ#9pÐG € °H6ʈ°¸­Ö*Á ‘&b`m¦kšÀø¼eˆ@ì #…ÀX$›oDXTB:ÅX,2"Ä@¬*ëb ˜ŒäÃ&)ÀB¬.+uаHdEˆ€Xˆ›P@‡­` |^2Ä v!b¬b VºÅX$2"Ä€¬HͶ@±V"9ˆÎÀn±V ŸšÂö°>/b»ap‹ €LZÁ8\U‚@´ÈE…@ @¬U‚À",D* ±V"9ˆÎB¬.+uаHdüÖµ€)ñxË€-Ø@« €ÄX\cTÂà¬ͯ`‚,*ë`°˜Œå1?˜©Ìu€@8h#…ÀX$›I�X\#…ÀX$›n�XTB:ÅX,2"Ä@¬*ëb ˜Œä*Âà·X«€DX�üÖ$5€)ñ–!b@óXÐÖ§Ä8„l/b€»ap‹ €LGa‹€0é ÅU„@n±V ˆ°À¼U†ì™@ÐÄX#$@19Q"2°TÐÓÔf° Ð †žœ†‚©8…PÕÓS T5DôÔèy=I1%E‚@b,.'I€™<�)• )P°"“Ê€)8¢ �É`˜!ÀAP&€±P#€H)“À™$" ! b"Æ@! f"Æ€q–)–IÀ)P„!�IÀ)4)•H@)L†#À9L)À©L)”Ø@ùþ2À ™��ë °ØÅä†LW€Xuc‚:ÀÁ–aÒ°Ž ø$2Ã@ ; 1�a°±ý¬O‹ÆX nÂã,Ã&<À#çøË€L{@GX“(+˜Ì€�@eœ¢¨ª ¦FM@r:*¢º’$d8( ¡¥§&Æc@2"z™"ÄÈ&80„ÈH‰êdˆ“ÐŒä€dÔõdÔ2HÊh UPPERŒÑ€Ä5Dô9¨@t&'¡§¦’N…’TÓÔ‰ d•4õâHy=I1% )0ÐÒQPèTERMINœ…“RÔU dÔµDˆy=I1%E€@b,!€X" °4`°èjæ?­­cú|^2ÁÀ v>аÜB°8„`PVºÅX2"Áàæ°äzÆ@§ÆX8B0:ÅX<üo §Ìç´©¼ôœ3Ÿ@ëW1ýh=c S⦌°ˆÝ„ °8­Ö*À`‘`P[¬U€@'áV;а8ŒE�ÀXF"À  :z1y`p[¬U€À",>аÅXˆæ#9 °¨ŒE…@t4bF!€X\†€8\U‚@ ‹ €p¸«€3@>�Ö®cúѬO‹ÆX„nÂX\Vë`�È‹ ±4µ€)ñxË€-Ø@„uаXdEˆ€X\Vë`�È‹ ± 4uбÌFr€€±V Ÿ„fcxŒF#>�Ö®cúѬO‹ÆX„nÂ/×ø‹€2f; ¬.+uаHdEˆ€Xˆ›b@­` |^2Ä v*Âà1aÞ �ð ˜BÖ*Á`“ðŒÌoˆÄgÐ:ÕÌZ5€)ñxË€-Ø@…úÿ`LÇPU…Àn±V ˆ±«3l õ¬O‹ÆX„nÂX\F"Âà ;º1ù˜ÈL\€€8h#…ÀX$›KÀ„X\Vë`�È‹ ±6ö�5€M` |^2Ä vÂà¬ͪàB,*!b¬b VuбÌFr˜—°À �x« € Ýb¬?5…í` |eˆ@ì B:ÅX,2"Ä@¬*ëb ˜ŒäÃ@.�@8h#…ÀX$›tX\#…ÀX$›wXTB:ÅX,2"Ä@¬*ëb ˜Œä*Âà·X«€DX�üÖ&µ€)ñ–!b@óXÚÖ§Ä8„l/b€»ap‹ €L_Á@8h#…ÀX$›LADX\#…ÀX$›OADXTB :ÅX,2"Ä@¬*ëb ˜Œä*Âà·X«€DX�üÖ)µ€)ñ–!b@óXæÖ§Ä8„l/b€»ap‹ €Lx@8h#…ÀX$›d�DX\#…ÀX$!˜–ƒ€ °HùÌ7…Óæq ¸á“èjæ?­¬d |e¦@ ¬Uƒ@iSyé8g>�Ö®cúÐzÆ@§Ä:dL/i »`ÐH¤F"Ó`¬"Ó éðZ®Ó 6! Ð†LQ€X4"�†O u«˜þ´kSâñ–™[°€V j uŸ–ÂuDámaa€ÀV ? °XÜB:ÅX,2"Ó` ñV›;Ìd@&,€¬ÍX“(¥™Q€@f¼&"§Sâ�@ M54E‚@ ‹€ °xEìÿ Ÿ@ëW1ýh=kÓã,*·a¬‚ÐÒSÿÿødüÖ§Åã,*·a 0bd*Áà��¼ Ÿ„fcx‹ €€#,!€X4Uƒ@/7ødúZ¹�ë@º|^2  v*Á ·X«€DXXU„À!9 M57ÿ†DX`#ƒ@X`š °¨« „8T,Ö§ÆXhnÂã,1›`Ћ€0êˆŘu‚À­` |^2  v*Áà,ɘÜxÜU�Àb,*À ±V =¥Mç¤áœúZ¹�ë@º|^2ÁÀ v*Àà·X«€DX<U�@n±V Ÿ…X<î*Àà1`P‹€0íøÇhbR*Á`±V ˆ°x«€ Ýb¬a Të`pÚTÞzNÄXP…XHÖ*Áà Г(ŒŠT”äDU‰ˆpèFN@b¢zÕ:“RÔU'…�QÕ dDE5E(y=I1%E‚@b,>ph4`ÐðŒÌoºÅX,Ê€_¯ñdÌBÀD @¬U‚À",D!€b¬Dsœ€8h#…ÀX$›UÀX\Vë`�È‹ ± 6ù5€M` |^2Ä vÂà¬ͬ`,*p¿Ã'Ð:ÕÌZZÇôøË€-Ø@„uаXdEˆ€XTÖ*Ä@1Ȇ€8\U‚@´ÌE…Àn±V ˆ± «3j( XÖ§Åã,B·a.*Á Ú¶" ±V 9ˆÎS01saPX«€Äg)ŽH ÅH†L]ÀX*Á Ú"Âà·X«€DX�U‰´„ zÖ§Åã,B·aÖ*Á`‘"ap[¬U‚@",H*Ä€ ÛZëb ˜Œä!b¬?ÌÆñŒF}­\Çõ£XŸŒ±Ý„_¯ñdÌzÀÅX\Vë`�È‹ ±6Í��ZÀø¼eˆ@ì U…Àb,.þ€sI�8 p¸«€3lH‹ €p¸«€3i¸‹ €:ÅX,æ#90À ‹@„uаXdEˆ€XTÖ*Ä@1ÈU…›g�DXTB :ÅX,2"Ä@¬*ëb ˜Œä*Á` ÐE€@2‚�Ïø,CTOIŒâätÔôåDˆÈè6CHKDATŒù‚Õ4µDô¸È $TYPEš‘ƒG@2 ¢z" ¤à…�ÓÓ�ÐU d4ôä4Hy=I1%E€@b,`4ˆ°(«€°X¸4–‰pXG€ °4`Ph"ÀàEƒÀXF" ¬+uаdüÖ§ÆXLnÂXE…%ÂÀDZœ€*À` Ú8*Áà1#ª$Fc€*šz‚ÌÆ  &· Ð †¨žš�8…‘ST‘àdDTÄ$xy=I1% )BT‘ÔÄXU€@Â31½Ö*ƒT‘Ôøí*o=' çÐ:ÕÌZZÇôø¼e�@ì “1$`ðŒÌo`0VuЏí*o=' çÐ:ÕÌZÓâñ–[°€Vˆ°0G€DX U�€<2~™�î±V9ˆÎB¬#`01˜¦ ¸¬EÀ2€  ¬t""¦ ©#Î…QS•T TTåDU(y   =I1% (�ÑÓQSDXÖ"À`H‹€ °(øFf7ŠB0r"šj*oþÿ Ÿ„fcx‹€Ï u«˜þ´kSâñ–[°€Vf€,4*À Új#uаÐdE‚À`ļU€@´øFë`pÈ‹€LR€%ÀTZ¶*À ,<À&*À ÐV}­\Çõ£XŸŒ°ÈÝ„ °(¬U€@ ­€L_@8,š°˜ôµsÖ�` |^2à v. 7�N‚y˜@m2›Mç#Ⱥ[L!Ä .!KC%Ä@yh`¸Œq- —e¡€âP ´0\Lb–†K‰À rÐÀ q@’Z.)2ËC%Å@ih`¸¬- €,"*Á á˜Þ"Áà¬~™�â·X«€DX°üÖµ€)ñ–.bÀóX@Ö§Ä8¸l/bð»`°ðŒÌoºÅX,æ#90èàÅ U‚ÀÂ31¼Vë`�È‹šÂÖ°>2Ã@¬X~k ZÀøË ±`ù¬+kSâ\¶Œ±xÝ„ °XøFf7ˆÝb¬ÀÂ31¼Vë`�È‹šÃ‘ëŸbàÀëbÀñ¼.Ÿ3žÒ¦óÒpÎ}­\Çõ õŒ�Oˆqp˜^2Åà v*Á`á˜Þ+uаHdüÖÂéó8‹ €0À Œ€«€„fcx­Ö*Á ‘,bÀh2ÅÀ\!Ã` ÐV"Â` !Vuаxí*o=' çÐ:ÕÌZÇéñ–.a0èjæ?­éñ.[ ÆX¼nÂu8 b* ±VfÞ@X« €DXDU‚ÀÂ31¼Fë`°˜ŒäçSAÀ%ÀÀ h8¸_-—e àà�|´\–ƒ€ °øFf7ŠÏ u«˜þ´kSâñ– [°€*À`±f€ 0b<¯`0¼Ä¸“( Œ•€D5Dô9‰PMN€# Q%Jp…‘ÑUU dtUEHy=I1%E‚@b,.% à¬" X$š°&P&1€ �xFEÀ2j Z‚ ¤Ô”:‘ÑUU'…‘ÑUÔ‘ dtUEu$HsÖ�` |^2Ãà v!b¬b*Á ±V f€3èjæ?­ÀøË€-Ø@„uаXÌFr€€±V ˆ±øFf7ˆÝb¬@sœ…X$üÖµ€)ñ–[°€ë`°È‹„fcx�Ö*Ä1ÈB°&c¼!€b¬?5€)ñxË€-Ø@«€±0¸ –Œ€q0GpÈ4�€±V ˆ±øFf7ˆÝb¬@sœ„ ‹€2f""Ö*Á ‘fcxEøÿ Ÿ@ëW1ýhÖ§Åã,>·a(Ö*Á`1ÈB:ÅX,2~™�çÐ:ÕÌZ5€)ñxË€-Ø@«€±È¸ìÜËGÀÀ8ä#ŽÀ8d›H€D ‹€2f"àl0cà*Á`á˜Þ}¿Ã'Ð:ÕÌZ5€)ñxË€-Ø@™�ÌSÀåÇ “p€Îf7NFqЀ@b0™3¡„èe "‘ØÂl:™EÒÕ@1=f€@)ˆÀŨ‡AÀ&*@jñV ;ˆ_ïñdÊ@&$``œÈ誈*HñГ1¤a0HGÿ†DXhB:ÅXhæ#9 °¨¤#ÿ¿Ã",\*Â`±V.9ˆÎB¬&#`�HGÿ†DXÀUŒb¬ÍX,Ö*Á ‘ `pôµsÖ�` |^2à v*Á ��þÿ ˆ°Ð« :ÅX ›{€X,†LC€D ‹€ °X¬U�ÀiSyé8g>�Ö®cúÐzÖ?§ÆXdnÂX$Rÿßá‘`°H¬Vë`0ÉøFf7ºÅXhæ#9 °HŒE‚@X,F"Á` :b1Msœ¦2€¬~™�â,X#uаHdEŒX°Vë`�È‹ ±`¬U‚@",h*Å€±V ˆ±°«:ÅX$2"ǬX+uаHdEŽ€X°Vë`�Éù¬9±�)ñ–.Œ±V:?Âéó9í*o=' çÐ:ÕÌZXÈø‡)†X¼UŽÍa+XŸâð0Ë ±°ù¬9±�)ñ–=Œ±V4?Âéó9í*o=' çÐ:ÕÌZXÈø‡€)†XøUŒ€Ía‹XŸcðV0?5„­` |C01ÖŒ±pÝ„ °ˆ½*oN%Lâ,ɘ™аˆ‹€2e ¬ÉŒæT”äDUˆÎCLOWERŒ†�²DÓ™ª`t£¡ª'¤Î…QÑU`TtDDXy=I1%E€@b,!À  Ð\*�@%¡ áp &- áPVuа4dÊ@#!`Q9=^20‘“UU&£`Ð Žˆ‚¨‹8…ÑUàDtUD8y=I1%E‚@ «€3@–dÊ& € ¨èªˆiQ@èy=I1%E‚@b,`4ˆ°h«€„fcx­Ö*Á ‘?5�-` |e„ÀXDüÖ5€)ñ[ ÆXPnÂX,ü#3Än±V 9ˆÎL:18€@,*Á`á˜Þ+uаHdE„@Í`SþŸa0V?5�,gú|e…XDüÖ1Ÿéñ–aóþŸáP0‡ )„8LL/a`»`ð[¬Uƒ@","*Á`á˜Þ+uаHdü* qV ?ÌÆñ¬U‚Àb3�«€ÄX<‡T€&3 ?5‰Í` |e‡ÀX€üÖ75€)ñ[ ÆX¨n 0¬U‚Àb3�„uаHdüÖ§Åã,>·a Ö*Á`‘ €@±V 9ˆÎL0c!b¬bë`�È‹hà«3@X«Äg!ë`°ÉøFf7ˆÄb3èjæ?­Àø¼e‡Àì " °H4—€„„Ü': ç)¸]-ðâ°h!b¬sœ¦< 3ð1i¿_â,ɘ€�0”€,ŽŠ¨˜’�¾‰ê©Ó€˜É d¤©¡§¨,Æ{€r‚ª¢bJtgÐ)"¦ ©%ÆqÀªbzš,e`¢©)'©M]@ã 9Ip…QÒUÐàTt•Dô8y=I1%E‚@b,>ph4— %¡àáÐŒ´<\<2–‡€K‡ÀrÐð qÒZ.!ËCÀ%Ä@ihx¸Œo-—%¡àâPÌ´<\LA–‡€K‰ÀRÐð q@Z.)"KCÀ%Å@Yhx¸¬�-—%¡à¬˜”€²e@–°¦¨˜«P‰)ˆ©Ñ’0 ‚†—�¨Šh誑˜p ˆŠ˜Š¨‹ªÊH©¨*IsX èENTERœ…Q�ÓÔ`Td4õ˜y=I1%E€@b,*À ±f€ư>2Àà v*À`±f€ :1dÊ#!àQ "2HTUÒ&¥@Ð Œ†ž ³8…QÐÕÒ`Tt5Dô˜y=I1%E‚@b,`4ˆ°h¸la- — e¡€áД´0\<3–†K‡À’ÐÀ qÖZ�ÀÂ|¦ãÀ°¼e�ì U‚ÀÂ31¼E‹n±V ŸšÃx]>g`ðV ?ÌÆñbÀX«€OÍa+XŸbà»aP‹ € Ýb¬?5†,\*Áà±(Íc¬\o §Ìᑘ《°xEàÿ Ÿ@ëW1ýh=kÓã,\*Áà±YôµsÖ�tø‡-…ã,^·a¬~™�â,Ã&# B¬*#ºÅX,æ#9LJ€¦1À"¬~™�â·X«€OÍ` |e‹€ì U‚GETCœ…QÑUÓ TtUD4Èy=I1%E€@b,!XB°(«€:ÅX2"Á ¬~™�î±V=¥Mç¤áœEƒÀ8<Uƒ@b ÍgÐ:ÕÌZ5€)ñ–[°€Vf€1ºÅX2"Á á«€ÅXF"À  :&1N`p[¬U€@",¯`л&P$=È誈*Hñ•@ ˜ŠœŽ¨‘5…Ž€TtUD4ÉÀ…‘ÑUT dtUDD•(y=I1%E€@b,.Ë€¬+uаhdE„@â¬"w`ðX‹€2eà^àèGETWRDœ…‘Ñ“�T‘àdtdä$xy=I1%E‚@b,.)ËAÀ%Ã@Ih8¸l‰-—e àáÐt´\<–ƒ€ °XøFf7ŠÏ u«˜þ´kSâñ–[°€ë`°˜Œä!b¬bëb˜Œä!b¬b  õþëb ˜Œä!b¬b@ëb@˜ŒäÃ&#À¬~™�â±YôµÀ �h„uаXÌFr˜…�0À Œ «€„fcx¬V+>�Ö®cúѬO‹ÆX|n @¬U‚À",@*ıV f€,#>�Ö®cúѬOŒ°øÝ„ °h­Ö*Á ‘ WбÜB:ÅX,2"Ä@á˜Þ#uбÌFr€,ɘ® °¨¬úZ¹�ëF3ý>2Ãà¬*#ˆÏ u«˜þ´c?Óâ>¦Œ±PÝ„@€X«€DX€Uˆ ÆØB:ÅX,æ#90À ‰˜«€„~™�â³èjæ?­­cú|e‹@ì B°&bL¯`°¸«€3@¼á“èjæ?­­cú|e‹@X\V+>�Ö®cúÐ.Ÿâа¼e‹€ì B °¸Å”UƒÀÂ31¼úZ¹�ë@º|e†Àã,Z·a¬~™�î±ÍŽcùœúæ›ÄXdU‚@Â31¼øæÏ®` ¼E„@X$ü#3ÄgÐ:ÕÌZ5€)ñxË€-Ø@…þa�1É`�ðŒÌo>�Ö®cúÐ.ŸbÐV   Ÿ@ëW1ýhÖ§Ä8´L/bà»a�X‹ €L@&:@ 0c *Á á˜Þ"à p" .!à ÐE‹À8¼›NXLu†Àã,Z·a¬&)uаˆdE„Àb¬.{J›ÏIÃ9ôµsÖ�tøË€-Ø@« €:ÅX\ö•7ž“†q€@,"Ã&+€"E„@&. 3pVˆ°¨­Ö*Á`‘/a0Ž Ÿ…X¼î*à ±VfÙ0aPX«€„fcyí*o=|Î"Â`±V ˆ°¨«€:Ä8TšÄX“(ŒŒ€DÔƒÊPMOD˜ˆ€@d,&"§#ª$MU@# !M! :p…TÒS D•4”èy=I1%E‚@b,!€XU€@n±V Ÿ†X8¬O‹ÆX<nÂ`ÄŒuƒ€X,,Ö§Åã,·a¬+>�Ö®cúѬO‹ÆX<nÂX“1M`X­Ö*Á “óX€Ö§ÆX<nÂX“1ha€€ÖkšÀøË€° € B?ûü2"Ä€¬HÍb¬&a0VŸ@ëW1ýhÖ§Åã,F·a¬&)ÿïðÈ‹ °X¬U‰ ‹€0À ‹È„`ðVuаˆí*o=' çÐ:ÕÌZZÇôøË€-Ø@«€ Eb·X«€DX�U„À!ýþ?ÌÆ÷X«Äg!Vˆ°˜«€ÄX<‡g&7@"À ™A0dp)ª&*Æc€2ªr‚ \ep$¦"§M|À# 1==-UBp…SÕÑT TÄõtU(yÖƒÖ±ý>2Ãà v*Ã`bV fÔVˆ°Ø©L[€2‚ ˆ@PFD@"J¢zeø(*ª!ÌO@k&Ê ªˆˆ¨s€…”US• eUD”åHy=I1%E€@b,`4ˆ°(àpVf€,:*À Bh«€:Ä8š2eàРŒ‹D•Dô8É@PUTSTRš—€G@2‚ª¢Jr¤à…”“UP“ e$ÕD$Èy=I1% (�ÑÓQSDXU€@Â31Vuаèí*o=' çÐ:ÕÌZZÇôøË€-Ø@« € Eb·X«€DXˆU‡À!ýþ?ÌÆ÷X«Äg!Vˆ°ø« €ÄXl‡EÀf&`3ðV?ÌÆñHGÿ†DXˆU…@b¬Dsœ…X<ü#3Å!b@V„÷ødü#3Ýb¬Hsœ„ ‹€2f6 ¬*#aP‹Uþ>�Ö®cúÐzÖ?§Åã,B·a 0cˆ* ±V ?ÌÆðÈ‹€ B?ûü2~™�â,.ô€pVŒ™€dtUEDô¸ÊhEQUALŒ½€U4µDô¹¬pt)¤§""¬N…ÓS E4ÄTèy=I1%E‚@8,U‚@ ‹G€ °H¬C‚À ‹€2e ‘p ‚†— Ê©Ê(isQÐèSLENœ…TÓÕ U4Å5E(y=I1%E‚@b,>ph4`�h" ¬~™�â,&+>�Ö®cúÐ.ŸŒ°ØÝ„ °˜�Ö* ‘˜˜€ °xøFf7Ÿ@ëW1ýhO‹ÆXlnÂ' çÐ:ÕÌZÇéñ–-a�èjæ?­Àø‡€-…ã,\·aQ�ÖŒ±hÝ„ °¨¬Uƒ@Â31¼ö•7ž“†sèjæ?­éñ–-aèjæ?­Ïôø‡€)…ã,\·a¬*#aP[¬U‚À",^>бxÞb0Ã&<€"¬*ë`ÐðŒÌo=¥Mç¤áœúZ¹�ë@º|e‹@X$ü#3Ï u«˜þ´ §Ä8´L/bà»aP‹ € Ýb¬bðð´U‹Àó€)‰ˆ« € ÄXBpXNÖ§Ä8<l/a»`à– `‹€ Ýb¬? °p‡€%šÀøË€°pXŸàð°¼e„ì †Lp@vXcˆ:ÁÀ ` |^2Áà väÀP ŒpżU€@b,á €"À ™@ˆ׬:TÒS§…SS’Ô`TÄ”äµy=I1% (�ÑÓQSDXÖ"À`¬~™�â�Œ†ˆ¦šŠ›ÿ¿Ã'á˜Þ"À ¬~™�â��þÿ ˆ°8«€:ÅXæ#=I1%E€@Xš2e`�pŒž˜‰5 Ž€TÄõtU)À…SPUÒ TÔD4ˆy=I1%E‚@b,!€X<UƒÀn±V ŸšÀøË€-Ø@«€ ¡*Á ÐúZ¹�ëAëXþŸŒ°ˆÝ„@ dÌOÀX<F"Áà :1€,É” FK@2 j ¢DÕd:SPUÒ'…“RÕP“ dÔµD$Èy=I1% (�ÑÓQSDX$B3@ „`ä4E4ÔTßýþ¼E�À ‹€ °8ŒE�À!9 M57ÿ†OÂ31¼E�@XúZ¹�ëF°>2Á` v*À ,)ÿïðÉøFf7ˆ°(‡€3@&˜›€ °Œ|+J�€ Ç•`mOdÊ#, MIjÐÊIªˆ(I“€…”ÐÕP“ e45D$Èy=I1% (�ÑÓQSDX$Ö"Á`à‡€3@V?ÌÆóèjæ?­Àø¼eˆ@ì B3@X«€Äg'X¤#!¢)¦¢¦ÿïðÈ‹f€Ö*Áà1ÈBÿˆ°&PL1(ÈHUNPACKŒë€D”ÄTèÉXDSGETŒ†€2DHÏXDSFREEš�G@2š¢ dà…TÑ“Ô U4E$õy=I1%E‚@b,`4ˆ°h«€3@`ÐðŒÌo>�Ö®cúÐ.ŸŒ°ÈÝ„ °x�Ö*Á á˜Þa `°X«€3@dÌJ€8<Uƒ@À&h" 1ºÅX$2"Ã@¬#aÀ`°X« 3XLFë`ððŒÌo ˆ°˜«€„fcz½*oN%Lî±V9ˆÎS@Vˆ°à¬UƒÀÂ31¼2" ¬8}­\Çõ ]>/a°»€@,&1žaPX«€Ò¦óÒpÎ}­\Çõ õ¬O‹ÆXlnÂXDE…@&8`E…ÀXLÖ* ´©¼ôœ3Ÿ@ëW1ýh=kÓã,6·a¬.ë`°È‹ °˜­Ö*Á “ð«ÅXLF"Â`¬.#apјö€ °¸¬U‚À",8¯aÀ¸« °˜« €:ÅXTö•7ž“†sèjæ?­éñxË€-Ø@« € Ýb¬bðñ¼.Ÿ3ˆ°ˆ« € ÄXÄÖ*Á`“ð«€ÅXÄÖ*Á`‘3aV3;а¨¬E…@XLF"Â` ;1¨`L Ô2@ÓSÑ#% 1% N2ÉU#4 ,‘ækì¨é*‰ès€…’Ò�Ó d…4„d4èy=I1%E‚@b,*Á ÐEƒ@ ‡€€LÐEƒ@X$üo §Ìâ,"*Á ·X«€OÆðº9 °øFf7ŠB<2"Á ¬~™�î±V 9ˆÎB¬~™�â��þÿ ˆ°X«€„fc{¬U‚Àb3�«€ B<2"Á ¬~™�î±V 9ˆÎL™@xÖ:SS’Ôg…“ÓÒÕT dÄôôµUy=I1% (�ÑÓQSDX$Ö"Á`H‹€K‡À0è´0Uƒ@X„‡À8lU‚@ ôµsÖ�` |^2Ä` v!X“1-`ÐðŒÌo„`ä4E4ÔTßýþ?ÌÆña°‹aV ?ÌÆ÷X«€Äg!V `"Áà¬#`°HGÿ†DXDB:ÅXDæ#9 °xŒ|+J�€ Ç•+`L L2QÑÑU& €À5\Ž€dÔµD$ÉÀ…”UPàeUDDT8y=I1%E€@b,8U€@ ‹€ÄXlU†Àb¬~™�ç´©¼ôœ3Ÿ@ëW1ýh=kÓã,>·aš °ØŒE†Àthbt!€XlU†Àb¬:{J›ÏIÃ9ôµs@ X«Äg!V?ÌÆñHG€DX�U‚@Â31¼Rà“ðŒÌouб ÌFr˜’€ °xøFf7ŠDXˆ#ÿ¿Ã'á˜Þ" ¬Dà“ðŒÌoapV ?ÌÆñHGÿ†OÂ31¼E‡@X\úZ¹�ëF°>2Ä v*Âà1„÷ødEˆ€X,Ö*Ä@ ÐE†ÀX,š:ÅX|2"Ãà¬:#>�Ö®cúѬO‹ÆX„nÂX|Rÿßá‘"`ÐX«3np‹ €0À � „a°j8‹€2eÀ¬ÉŒ«DÔ”ãËÐCTOCŒˆdÄTäuD‰¬ t©¢)'¨N…”ÒS‘V e4”äDUˆy=I1%E‚@b,`4ˆ°h„cV "B «€3@.—`ð i«€± qp«€3@èjæ?­ÀøË-Ø@«€:Ä8<š Ï u«˜þ´kSâñ–6[°€V0`LÅ|UŒb,`*Á BhG °H6�±p‘€LPÀ ‹€2eà€€°&P<Ɉ©Èê‰�ÐH‚©50Ž€U4Å5E)À…TÕRÑ`U5D´Xy=I1%E‚@b,`4ˆ°h«€3@`ÐðŒÌo>�Ö®cúÐ.ŸŒ°¸Ý„ °x¬Uƒ@Â31¼2"ÃC†À&h" ±V ˆ°Ð«€ÄXp‡X,Ö*Ã@ ÐE€@3 V ?ÌÆñ‹ pÀ«€:ÅX$›XÀX“(`Le& ¬LO2 “S‘Õ#/à Q=   kªjˆ)h³€…”ÕÓÔ`e5D4õ˜y=I1%E€@b,>p(4`0ðŒÌo`�V ºÅX2~kSã,·a¬~™�â·X«€DX0U‚@n±V Ÿ…X0î*Ààá˜Þ#uа8ÌFr`�‹€0èÈĬU�ÀÂ31¼Vë`PÈ‹+ÅX0îÉ”FC@" ¤Õè:”ÕÓÔg…TÕS U5DDTÈy=I1%E€@b,`4ˆ°(«€3@‹€ °(ø ‹à«€2eÀ]°èSTRCMPœ…TÕ’S`U5E$”Øy=I1%E‚@ ‹€@  `Ð[¬U‚@'æ°>2Áà v*Á ·X«€DX@üÖ±Ÿéñ–aóX@ƧÄ8<L/a »`Ð ˜¥€ °hŒEƒ@t<bB*Á`±V ˆ°€¼U„â¬"À ™@˜ÕÐ:TÕ’Sg…•S“S’àeTäÄ”ä¸y=I1% (�ÑÓQSDX$U‚@Â31¼R"Áà9øË€ °Hù¬A �Óâ¦`ÀV ?5�CÖ2>2Á ¬~kBãôø‡€)„80l/`à»FX†LQX$üÖ�XÈøË€ °Hù¬0 �Ó⦌°`Ý„€C,Ã&-À¬~` ‹°Å0u€@2€ð ¬t*,¨"Î…�ÒÑU d4„´DHy=I1%E‚@%Á`ð¸4:—€Àáð\&K…@À p¸|.€%Ã`à¸t>—€€âøtø‡€-…ã,L·aëüE€@3Ð ë`�È‹„fcxEŠÿ Ÿ@ëW1ýh=kÓã,F*Ä€á˜Þ}­\Çõ ]>!Ä` axË-Ø@…úÿ`LÇüB :ÅX$2"Ä€á˜Þb¿Ã'Ð:ÕÌZZÇôøË€ ± øFf7Ÿ@ëW1ýhOˆqØ^2ÄÀ v!~¿ÄX“1Aƒ±V ˆ± øFf7„C/ÀÉôµsÖƒÖ±ý>2Ä`¬H~™�çÐ:ÕÌZÓâF¶Œ±0Ý„_¯ñðF"Ï€ :>15¿_â,É”@€LAÀ 2¦”Õ�ÓT&) 0 Êj‰Èj 1‘pŒž˜‰?d‰§3X`èGMONTHœ…ÕÒ`D5Dô˜y=I1%E‚@b,.KAÀ% h8¸Xe-— € å àဤ´\25–ƒ€K†€ÒÐp pØÞZ.KAÀ%à™h8¸x-`°X«€3@ð¬e„@X,ü#3Ån±V ŸšÂÖ°>/að» FXDU‚ÀÂ3V ˆ°h`X«€3@YôµsÖ�` |^2Áà v!€b¬`ÐV? °hÜ|0`¼ÄÜB:ÅX2"Á áx«€Ä @¬U�@", !€b¬a a X«3i(¬úZ¹�ëF°>/`ð»�±V ˆ°h„uаdü*Á q ë`È‹†¬ w˜Ë@ X«€DX4|/`и«€„fcx‹€S¯ðÉôµsÖƒÖ±ý>/`ðFf7ºÅX ü#3Ã",*Á`±V =¥Mç¤áœúZ¹�ë@º|^2Á  v*Á`,1D`0ðŒÌo`°V uаXí*o=' çÐ:ÕÌZZÇôø¼eƒ@ì U‚Àb,ë`È‹ °H­Ö*À “ð«ÅX8Ö*À “óXŸŒ°hÝ„0ë˜Æ�U‚@b,*Á`1 aÕ` �8&P$Ɉ©Èê‰[°èSTDELœ…”Õ�ÓT e5E$4Õy=I1%E‚@b,!€ M57€OÂ31¼E‚ÀX<#ÿ¿Ã'á˜Þ"Á ¬)ÿïðÈ‹€ °h¬U„@b3�«€ B<2"Â`¬ëa0˜Œä*Á`,É” €MV# U91%9.p…UTT UUU(y=I1%E€@ ‹ ° ­Ö*À “óXŸ``»`@[¬U€@",*Àà ÐU�Àâ¬#`@ ˜�€2e ’Ð †ª  Š¥5>Ž€UUU)À…UÒÑV`Ut´D˜y=I1%E‚@bZ*Á á˜Þ}­\Çõ ]>/b0»¿_â,ɘŒ °HøFf7„S�ðÉôµsÖ�tø¼eˆÀì U‚@Â31¼"l†]b¬sœ¦'@Ö*Á ‘$?ÌÆð‹Ñþ>�Ö®cúÐzÖ?§ÆXŒU‰Â31¼V}­\Çõ ]>!Ä` axË-Ø@…úÿ`LÆ B:ÅX$2~™�â,N!b¬b@V'„pHdEŠ@X�ü#3Ýb¬R~™�ç´©¼ôœ3Ÿ@ëW1ýh=kÓã,F*dÌ`À„ ‹€2e€–`šž‰1` Š8 �LL€Rk>Èi hˆ*“€…‘ÓSÓ• dtÔôåDˆy=I1%E‚@%Ê ©h¹HÃ-—)€¥ `å@4´ \ªe–�€K•€ RÐ0 r¸¶Z.X0Ë@À%Ë )h¹hÃ-—-€% `åÀ”´ \ºm–�€K—€ 2Ð0 røæZ.`5K@À%Ì Yh¹ˆÝ-—1€¥ `æ@¬´ \Êl–�€K™€ 2Ð0 s8ÖZ1¼Fë`°˜ŒäÃ&%à¬~™�â·X«€OÍa[XŸŒ°øÝ„ °XøFf7ˆÝb¬sœ¦, `"À ¬~™�â·X«€OÍ` |e‡Àì U‚ÀÂ31¼Vë`�È‹ ±¬C… ‹ @ëW1ýhÖ§Åã,>·a ;1¼àh+uа�dE€@X,ü#3Än±V 9ˆÎL:ð1¿a°µ¬O‹ÆX|nÂX^•7§¦q˜ø °&PD¨©)Ȉ»€ÍX$cà!b¬`Ð z`ÐX‡€3l ¬úZ¹�ëF°>/`ð»�À±V ˆ°h„ uаdü*Á që`È‹†¬ w˜“ˆAX«€DX4^*Á q"€ E…€XX"ú†O u«˜þ´µ�éñ–[°€VŠÅn±V ˆ°h« Ýb¬a aX«€3h ¬úZ¹�ëF°>/`ð»a@ uаX4Uƒ@b,ë`�È‹€ °x¬U‚À",&* áVK5€)ñxË €-Ø@«€ Ýb¬?5€)ñxË €-Ø@„`LÅ4Uƒ@b,á €V ºÅX$2~kSâñ–[°€ ýþ"À 0bæ*Á ·X«€OÍ` |^2  v!€X†Ld@X4V"Áà±V ˆ°ˆ«€:ÅX,2"Â`¬"~a0°]>/aP»¿ßâ,Ã&8ÀE€@&9à ,`4ˆ°h«€„fcx¬V"Áà¬~™�â,"X4š°˜«€@ëW1ýh=kÓã,*·a¬",*Â`±˜  °˜¬B3@`ðX„4f€±[¬B 3jØE¼ÿ ºÅXX2ëa0ˬU„@",08`›J@b,É” Fdjz$ÄŒÈ&1@pqdˆ‡1–€Hšs5ŸŽ€Ut´D™À…T`EE•Xy=I1%E‚@X$üÖ-XÈÄ€á˜Þ+>�Ö®cúÐ.Ÿâ0°¼e‰€ì Býˆ°&cä!b¬?ÌÆð‹�þ>�Ö®cúѬOŒ±«€ ÅgÐ:ÕÌZ5€)ñ#S ÆX˜n «€3@èjæ?­ÏôøË€@V fÓ€èjæ?­Àø‡€)†X˜" °H6¦€Ÿ@ëW1ýhƧÄ8˜l/b°»¿_â,ɘ½€ÌKÀD `¬U‚@",H~™�áKü2}­\Çõ õ¬OŒ±«„fcyôµsÖ�.h3Ë@À%Í 9h¹¨Ë-—5€% `æÀ|´ \Úc–�€K›€’Ð0 sxºZ.p7Ë@À%Î ih¹ÈÉ-—9€e `ç@´ \ê–�€K�€2X´ \ðK@À%Ï@´ �€9àU‚@ ¼e“€9,š@ |gÀ‹Ñþ>�Ö®cúÐzÖ?§ÆYønÂYðÖ!€ G'DYüž€YüÖ!É` ÐúZ¹�ëF°>/gà»gÀdÌYY«œP šª˜baÊii*I“P èCTOIœ…‘SU`dDTÄUDXy=I1% (�ÑÓQSDXÖ"À`à° -`0 à°Ž`h+>�Ö®cúѬO‹ÆX<nÂX$Rƒ�ÑÓQS÷ødE„XRÿßá“ðŒÌouа€ÌFràph1)dÊ€#"àMQ1V2š‘Ñ”‘QfªÐ ˆŠ˜Š¨‹8…‘“UU ddÕDDHy=I1%E€@b,>p(4€€±dE„X4Vë`0ÉøU„â¬+uаdE„€ÃV;ÌoEXPFë`0È‹€‡B¬wa@ŒF"€¬,#a`m˜Á€ˆAX«€DX4^*Á vL `3òÓSÑ&>`@ª‰*‰èq�ÐH‚©1 € ©Pt#&ª" ªN…‘ÑU“ÕàdtUDäõxy=I1% )¨�ÓÓ‘’QÄXB°«€_/ðÉôµsÖƒÖ±ý>2À  v*À`‘ŠÝb¬`€V   ÁÈiéÈÉ(ü 2~™�î±V9ˆÎB¬#`0 ˜�€2e@TðèGETNOWœ…“PRÔU dÔµHy=I1%E‚@b,>ph4€@,4!€X€B°ð«€„fcx‹ °À­Ö*Á ‘$?1Ÿéñ–&b@ð«€%˜Ïôø‡)…ã,N·a¬4"Ä@¬0+uаHdüÖµ€)ñxË-Ø@¸  K\€%Å@µÈŠX<Ö! ‹0À ‹€1 ·Ð�ÀX<Ö!´`E‡8`U‚@ ËK�À0д@ \Š�@%¢@†*Áà±&fßð˜ùÌX@f#À3@ Œ«±« ÄX`‡JÀ&<"¬0+uаHdü*Á  f°>2ÄÀ v!~¿ÄX†LQ€¥ÈàhZ¢.IÈ Õ G`ðX„fѰ#èjæ?­Àø¼e‰€ì Býˆ° ˜¶� °À‹€L]€¦)àB¬É”%€LV@€2ÑTÐæI Á ±V ˆ°€¼U„â¬"À ™‰p«€ Ýb¬?Àø¼e„€ì Bÿˆ°«€ Ýb¬ax«ÅX“1[`Њþ>�Ö®cúÐ.Ÿa »`ÐX«€DX@^*ÂqV `LÆ0Uƒ@b,á �0VdÆH@*:*¢DÖÌ:‘ÑUS§…�SPUÒ dÔD4ˆy=I1%E‚@b,`4ˆ°h„a�V ?ÌÆñ€@,** ·X«!¤Fh€r‚ ¢šJÔÖØ:�SPUÒ'…UàEUD8y=I1%E€@ «€3@L  b�   ª¨†‘5Ž€EUD9À…”UÕ eUE5E(y=I1%E€@b,`4ˆ°(«€3@ ˆ°X«€:ÅX ü#3ÏiSyé8g>�Ö®cúÐzÖ?§ÆX4nÂXÖ! «€ÄX,‡F@&' E‚ÀX,Ö*Á ´©¼ôœ3Ÿ@ëW1ýh=kÓã,·a¬+u"*Á`á˜Þ+uаHdüÖ§ÆXXnÂX,ü#3Ån±V Ÿ†XTB°˜« € Ýb¬?5€)ñ–[°€VºÅX<2"Âà¬**Âà f°>/a`»a[¬Uƒ@",.¯ap¸«€ ÄX“1ta0‹ €0ê ÅXU„@n±V ˆ°¸ë € °¸ÜU„@b,"*Á`á˜Þ#uаXÌFraÑP ‰X«€ Ýb¬apx« €ÅXDV"À ™@Èd4’ ªMw€#=I1%E‚@X$üÖ=XÈøË °Hù¬a �Ó⦌°hÝ„ °HøÞO™Ýbü2}`1#`�ðË€LMÀX“(š¢G@2ª‚‚*”à…“Ó DdôÄHy=I1%E€@ ‹ ° ­Ö*À “óXŸ``»`@[¬U€@",*Àà ÐU�Àâ¬#`@ ˜�€2e ’Ð †˜ž®Š¥5>Ž€DdôÄIÀ…”Õ�Ô`e5Dä5˜y=I1%E€@b,« Ýb¬b@VuаXøFf7žÒ¦óÒpÎ}­\Çõ£XŸb`V$?5„­` |C‰€Âñ–'[°€ q`–á€K‹€1P· ‹X<Ö!µôE‡`ÇU†X�Vë`�È‹ ± ¬U‚@'áV K5€)ñ–&cóXHÖ§Ä8˜L/bp»—a  hh ¸ÐKC@@8ÈUƒÀb›s€Xp†LBÀEX`Vë`�Éù¬[kSâñ–&[°€Vc` qÀ\È(ˆŠhª‘”pŽŠ¨††™ìÊjˆi‰êq�ÐH‚©1z€ ŽX”LE@D€cøaY (èMAKPATœ…”US eUDÄ”èy=I1%E€@b,!€XU�€n±V Ÿ†X¬O‹ÆX nÂ`ÄŒu�@À¦°>/`€»`0X„f€`Vuˆp(6  °0ŒE�€t4bLÉ”€FR€2‚ª¢A$Äô&«`Ð  ª¨˜’�8…TЀOÍ` |e†Àì U…@n±V ŸšÂ¦°>/a°»aPaPˆaPVa0VºÅX$2~kSã,6·a¬"Àáà *-}áÀŽ`�h}­\Çõ£XŸŒ°ØÝ„0ë¨Æ`‡XÀ&3`¬2"ıV ˆ±« €:ÅX\ö•7ž“†sè«ÅX€F#uаhdE‰X\U‰â¬&"Âà 0b–*Á ,L.( Þ0&ápV fØpèаdEƒ€XÖ*ÁÀ Ú†*Á`1 aÕP ‹ˆ«€:ÅX ü#3Ã*ô©½8•3ˆ°X«€@ëW1ýh=kÓâñ– [°€Vuˆj6À °X¬E‚Àv cvÉ”FD2b*r:¢Dg¨*ª!¤Lp€k¬Ê ªŠjŠS€…SS D”ÄTèy=I1%E‚@X$šÄn±ÍX“( Œƒ€dÄTäuDˆÈ€$D9š‹G@"Jb*tà…TÒÕÒàU4µDô¸y=I1%E‚@b QQ=.p…•S”PÒàeTå4¸y=I1%E‚@b,!€X4Uƒ@b,ë`°È‹€ °x¬U‚@'áV;аx¬U‚À'æ°>/a0»a€°V ˆ°h†€LO€X4V"À ™@ ÕH:•S”PÒç…PÒàE4¸y=I1%E‚@b,!€X4Uƒ@b,ë`°È‹€ °x¬U‚@'áV;аx¬U‚@'æ°>/a0»a€°V ˆ°h>ˆp(4`�ðŒÌouа8øFf7†DX4U€ÀÂ31¼EƒÀXü#3ÄX,U‚Àb¬{J›ÏIÃ9ôµsÖ�tø¼e„€ì UƒÀn±V Ÿ†XDU‚Àn±V ˆ°˜ë€ °˜Üu„@ÀøË -Ø@«€ÄX<bü*Á`1 aÓ` Šˆ&P* dˆ*“Y èSTNCPYœ…”Õ�ÓT e5Dä4Õy=I1%E‚@b,`4ˆ°h„`ðVuаhøFf7žÒ¦óÒpΖž€€q°G °H4ˆÄgÐ:ÕÌZ5€)ñxË-Ø@©€LVÀX`ÄÔU†n±V ˆ± « :ÅX,ü#3ÏiSyé8g>�Ö®cúÐzÖ?§ÆX˜U‰ÍaSXŸâ`0¼e‰Àì UˆXˆVë`ðÈ‹šÂ¦°>2ÄÀ¬H~k ÀøË€ ± ù¬%kSâN¶â`°¼eŽ€ì ‡W€f; 2ã° @-â—€aà o€pЫ€3@a€qø–úË�@ÓÔ`U44õ˜y=I1%E€@b,>p(4`pðŒÌo`°V?ÌÆñ `�[¬U€@'æ°>2Á  v*Á`·X«€DX8U‚@n±V Ÿ…X8î*Á`1 `�‹€0éÄÔU‚Àn±V ˆ°p¼Uƒ€ì™@€d4’ ªM]# M =Afp…‘ÑUS dtUDÄ”èy=I1%E‚@b,!€X4Uƒ@n±V ˆ°€«€:ÅX@š5�M` |^2Â@ v*jæ?­Àø¼e†Àì U†@ u«˜þ´µ�éñxË €-Ø@« €:ÅX42~µ�éñxË €-Ø@‰€ÌJEXdFë`ÐÉøÞO™ÄXd‡@f%`"¬2}­\Çõ õ¬OŒ°ØÝ„@dÌTÀEXdEˆb¬b ðôUˆ€â¬2",**Ä1¬Uƒ@",H*ıV Ÿ…X� o §Ìâ,.1þ˜í€p¨«€3@X« €DXT‡H€&&€¬."À ™APg´'¦ ª,`4ˆ°h«€„fcx‹€ °x­Ö*Á “ðË €5€)ñxË -Ø@ ˜–@ a[¬Uƒ@'æ°>2€ v* ·X«€DXTu„ÀXT,Ö§Åã,(·a :’1ga‹€0é¸ŨU„@n±V ŸšÀø¼e…ì ‡KÀ&1 ¬#`ð˜Æ °x‹€2eàYðèSKTOKœ…‘ÑUÒàdtUEDô¸y=I1%E‚@b,>ph4€@,†€LO€X4F뀀 ÐE€@2�@ʘ$D9š¬€G@"‚ \à…ÕÐàD5Dô8y=I1%E‚@b,`4ˆ°h„`ðVºÅX$2~c?Óã,"*Áà±V ?ÌÆóÚTÞzNÏ u«˜þ´ §Ä8DL/a »`ðX‹ €:ÅX,2" ¬&ë`�ÉøU…@â¬#`𘢀 °x­Ö*Á`‘Wа˜ÜUƒÀb,É” €Ma€#  Q=p…�ÕTT d5UU(y}­\Çõ õ¬OŒ°ˆÝ„ °x¬E„€b¬a@VuаXdE…€XPü*ÂÀ f°>/a»`ð[¬U‚@'æ°>2 ¬ë`ÐðŒÌo=¥Mç¤áœúZ¹�ëF°>! axË -Ø@„`LÆT†LWÀtÈc>*Áà1aÑ �«€ Ýb¬?5€)ñxË€-Ø@…þÿ`1Á`ð[¬U‚À'æ°>/a»€@,Ã&;à¬+a X   «€DXPU„€b¬a`V? °°X.ŸŒ°ˆÝ„_ïña€@"À Ð�@Ç(U€@2�� ©H t)ª'!¦¨N…”ÒÒT“ e4´•$Èy=I1%E€@b,*À`á˜Þ+uаdE�@Í`KXŸ`pV?5„ ` |C�ÀÂñ–[°€V?ÌÆñ¬U€Àb3“ƒ€LLÀ2€� ª@t)¥¤¨!&N…Õ`E5DÅXy=I1% (�ÑÓQSDX$Ö"Á«˜þ´kSâ4¶Œ°ØÝ…HX@Ö*Á á˜Þ{J›ÏIÃ9ôµsÖ�tøË °HøFf7Ÿ@ëW1ýhOˆpИ^2Ã` v*Â1ºÅX,2"Ãáh« æ8¬ +`"€¬(ëaÚTÞzNÏ u«˜þ´ §Åã,4·a¬ +uаXdE†Æðº|Î"ÂÀ¬(+aÀX«€O¬0waÀX«€DXxu…€Xxî*±a@‹ 0ï(ÄU€@2‚Édefine(DC1,8%21) # define(DC2,8%22) # define(DC3,8%23) # define(DC4,8%24) # define(NAK,8%25) # define(SYN,8%26) # define(ETB,8%27) # define(CAN,8%30) # define(EM,8%31) # define(SUB,8%32) # define(ESC,8%33) # define(FS,8%34) # define4) define(BEGINNING_OF_FILE,-3) # flag to seek for positioning at # the beginning of a file define(BIGA,65) define(BIGB,66) define(BIGC,67) define(BIGD,68) define(BIGE,69) define(BIGF,70) defineEFN,-1) # flag for mktabl character data define(COLON,58) define(COMMA,44) define(COOKED,1) define(DASH,45) #same as MINUS define(DIG0,48) define(DIG1,49) define(DIG2,50) define(DIG3,51) define(DIG4,52) de $1) ) define(DRETURN,return) # this is the return statement from the # subroutine defined in DRIVER define(END_OF_FILE,-2) # flag to seek for positioning at # end of file define(EOF`à‡€3@V?ÌÆñHFCDSMEMÿßá“ðŒÌoaP" E…ÀX\Vë`�Éù¬OŒ°ØÝ„ °¸­Ö*Á “ñ¼.Ÿ3ºÅXD2" ¬.#ap.˜ @f€1uаxøFf7†]b¬sœ�b��þÿ Ÿ„fc{¬U‚Àb3�«€„fcyôµsÖ�` |e†Àì U‚ÀÂ31¼F"Â`��þÿ ˆ°à«:ÅX$š Ï u«˜þ´kSâñ–[°€"À # General Symbols - include in every tool # CP/M environment define(CPM,) # CP/M version define(NEGDEF,) # ASCII control character definitions: # define(NUL,8%00) # define(SOH,8%01) # define(STX,8%02) # define(ETX,8%03) # define(EO(GS,8%35) # define(RS,8%36) # define(US,8%37) # define(SP,8%40) # define(DEL,8%177) # general symbols define(ACCENT,96) define(ALPHA,-9) define(AMPER,38) # ampersand define(AMPERSAND,38) define(AND,38) # s(BIGG,71) define(BIGH,72) define(BIGI,73) define(BIGJ,74) define(BIGK,75) define(BIGL,76) define(BIGM,77) define(BIGN,78) define(BIGO,79) define(BIGP,80) define(BIGQ,81) define(BIGR,82) define(BIGS,83) define(DIG5,53) define(DIG6,54) define(DIG7,55) define(DIG8,56) define(DIG9,57) define(DIGIT,2) define(DIRECTORY,2) define(DOLLAR,36) define(DQUOTE,34) # DRIVER is defined as those things ,-1) define(EOS,0) define(EQUALS,61) define(ERR,-3) define(ERROUT,3) #standard error file define(ESCAPE,ATSIGN) #escape character for ch, find, tr, ed, # and sh define(FILENAME,1) define(F™Ž «€„fc{¬Uƒ@b3“¬Rÿßá“ðŒÌouаXÌFraÙ �(„`L x2ÒÓSÑ#8@EU22ÉU&,`°5 Ž€E5DÅYÀ…UÐàD•Dô8y=I1%E‚@b,`4ˆ°h«€3@WаXÜB°€«ÄX@"p�4>Œ°x« Ýb¬a€Öc X`î*Â@±(ÍXHU„b¬~™�ç´©¼ôœ3Ÿ@ëW1ýh§ÆXhU„€ uT,8%04) # define(ENQ,8%05) # define(ACK,8%06) # define(BEL,8%07) # define(BS,8%10) # define(HT,8%11) # define(LF,8%12) # define(VT,8%13) # define(FF,8%14) # define(CR,8%15) # define(SO,8%16) # define(SI,8%17) # define(DLE,8%20) # ame as ampersand define(APPEND,4) define(ARB,100) define(ASCII,12) # flag for ascii character file define(ATSIGN,64) define(BACKSLASH,92) define(BACKSPACE,8) define(BANG,33) # exclamation mark define(BAR,12fine(BIGT,84) define(BIGU,85) define(BIGV,86) define(BIGW,87) define(BIGX,88) define(BIGY,89) define(BIGZ,90) define(BINARY,60) # flag for indicating binary file define(BLANK,32) define(CARET,94) define(CHAR_D # you need to do to start a software # tools program running. define(DRIVER, call initst ifelse($1,, call main, call $1) call endst(OK) end ifelse($1,, subroutine main, subroutineILENAMESIZE,20) #max characters in file name # (including EOS) define(FORMFEED,11) define(GREATER,62) define(HOME_DIRECTORY,1) # define(HUGE,30000) #some arbitrarily large number define(LBRACE,123)    define(LBRACK,91) define(LESS,60) define(LETA,97) define(LETB,98) define(LETC,99) define(LETD,100) define(LETE,101) define(LETF,102) define(LETG,103) define(LETH,104) define(LETI,105) define(LETJ,106) dencoded # for pattern matching define(MAXCHARS,20) # max nbr of chars when converting # from integers to characters # (used by putint, outnum, etc.) definecial characters define(NEWLINE,10) # character used to mark end-of-line define(NO,0) define(NOERR,0) #flag for successful completion define(NOT,BANG) #choose your favorite: ! ^ or ~ fine(SEMICOL,59) define(SHARP,35) define(SLASH,47) define(SQUOTE,39) define(STDERR,ERROUT) define(STDIN,1) #standard input file define(STDOUT,2) #standard output file define(STAR,42) define(TAB,9) defefine(MIN,min) define(andif,if) define(DS_DECLARE,integer Mem(5);common /cdsmem/Mem) define(DS_DECL,integer $1(5);common /cdsmem/$1) define(ABS,IABS) define(abs,iabs) define(filedes,integer) define(IS_DIGIT,(DIG0<=$1&$1<=DIG9)) # valÔÒ»îå÷ ðïéîôåò�ŠÒÅÔ»ôï æïòíáô òïõôéîå�Š»�Š»­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­�Š»¨Â© Ãïîöåòô îõíâåò ïæ óåãôïòó éîôï îõíâåò ïæ âùôåó æïò ÄÍÁ�Š»­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­�Š» äõòéîç éîéôéáìéúáôéïfine(LETK,107) define(LETL,108) define(LETM,109) define(LETN,110) define(LETO,111) define(LETP,112) define(LETQ,113) define(LETR,114) define(LETS,115) define(LETT,116) define(LETTER,1) define(LETU,117) definee(MAXLINE,128) #normal size of line buffers; #must be at least 1 more than MAXCARD define(MAXNAME,FILENAMESIZE) #max size of file name define(MAXOFILES,10) #max nbr opened files allowed at a time define #(used in pattern matching) define(NULL,0) #empty pointer define(OK,0) # success flag define(OR,BAR) define(PATH,2) # flag for UNIX-style pathnames define(PERCENT,37) define(PERIOD,46) define(PLUS,43) definine(TERMINAL_IN,"CON:") #name of input channel to users console define(TERMINAL_OUT,"CON:") #name of output channel to users console define(TILDE,126) define(UNDERLINE,95) define(WRITE,2) # flag to open file at write access defid only for ASCII! define(IS_LETTER,(IS_UPPER($1)|IS_LOWER($1))) define(IS_LOWER,(LETA<=$1&$1<=LETZ)) define(IS_UPPER,(BIGA<=$1&$1<=BIGZ)) define(MAX_INTEGER,32767) #******* end of symbols ******* ÄÄÔ òåáäó ôèå äéóë äòéöå§ó ðáòáíåôåòó�Š»          ÓÅÃÓÉÚÅ ½ °¯±¯² ¨±²¸¯²µ¶¯µ±² âùôå óåãôïò©�Š»          ÍÁØÓÃÔÒ ½ íáøéíõí óåãôïò óéúå�Š»          ÍÁØÈÅÁÄ ½ íáøéíõí èåáä îõíâåò�Š»          ÍÁØÃÙÌ  ½ íáøéíõí ãùìéîäåò ¨íóâ¯ìóâ©�Š» áîä ãïíðõôåó ïææóåôó æïò (LETV,118) define(LETW,119) define(LETX,120) define(LETY,121) define(LETZ,122) define(LOCAL,6) # flag for local-type character file and pathnames define(LPAREN,40) define(MAXARG,128) # max size of strings to be e(MAXPAT,64) #max size of encoded patterns define(MAXPATH,50) # max chars in path pre- or suffix list # (used in string matching) define(MAXTOK,25) define(MINUS,45) define(NCHARS,33) # number of spe(QMARK,63) define(RARE,2) define(RAW,3) define(RBRACE,125) define(RBRACK,93) define(READ,1) # flag to open file at read access define(READWRITE,3) #flag to open file at read/write access define(RPAREN,41) deine(YES,1) # Definitions of language extensions define(character,byte) define(CHARACTER,character) define(short_int,byte) define(pointer,integer) define(POINTER,pointer) define(max,max0) define(min,min0) define(MAX,max) dåáãè óåãôïò�Š»­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­�ŠÂÕÍкÉÎØÈ»íïöå ðïéîôåò�лɯ Ì ÇÅ ²°°»õððåò èáìæ ãèåãë�ÌÁÌ�ÃÐɬ²°°�ÊÔ쥱±³Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÉÎÈ»óëéð ôï îå÷ ðáçå�ŠÌÌɬ°°°»òåóåô ìï÷ áääòåóó�Š»ÅÎÄÉÆ�¥±±³Òºª®«°°°�ŠÓÔÈ̬ÍÁÐåáãè äéóë âìïãë�Š» á äéóë âìïãë éó ôèå ôïôáì äéóë áòåá äéöéäåä âù ôèå îõíâåò ïæ�Š» äéóë èåáäó®�Š» èåò嬠áî áâóïìõôå äéóë áääòåóó ¨éî ÖÍÓ éó ² âùôåó ÷èéãè�Š» éäåîôéæù á óåãôïò îõíâåò¬ áìôèïõçè á äéóôéîãôéïî éó íáäå�Š» âåô÷ååî ðìáôôåòó© éó íáððåä ôï á ãùìéîä   åò áääòåóó ÷éôè á èåáä�Š» îõíâåò áîä óôáòô óåãôïò éîäéãáôåä®�Š»­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­�Š» åîôåò󺠠 ½ îõíâåò ïæ óåãôïòó�Š»          Ã ½ ü×üÄüÂüÂüÂüÕüÕüÕü�Š»              × ½ ÷òéôå ðòïôåãôåä�Š»              Ä ½ äòéöå­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­�ŠÃÎÔÃÏÎÖºÐÓÈÈ»ðòåóåòöå òåçéóôåòó�ŠÌÁûçåô äòéö壠áîä âìïãë�ŠÎÄɬ±°°»çåô äòéöå£�ŠÒÌûóèéæô éîôï ðìáãå�ŠÒÌÃ�ŠÓÔØÁ¬ÄÒÉÖÅ£»óôïòå æïò ãïîôòïììåò�ŠÌÁûòåæòåóè�ŠÎÄɬ°·°»çåô âìïãë îõíâåò�ŠÒÒûóèéæô éîôï ðìáãå�ŠÒÒÃ�ŠÒÒÃ�ŠÓÔØÁ¬ÈÅÁÄ»ãë ±�ÌÁɬ²°°�ÎÄÄ�ÊÔÚ¬¥±±¶Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÁÄ»äéóë áääòåóó�ŠÎÄɬ±··»óôòéð ïõô ²°°�ŠÌÄÁ»îå÷ áääòåóó�ŠÌÄÈ̬ÁÄı»ïææóåô æïò âìïãë ±�Š»ÅÌÓÅ�ÊÍЬ¥±±¶Ñ�¥±±¶Òºª®«°°°�ŠÌØÉȬ°°°»ïææóåô æïò âìïãë °�Š»ÅÎÄÉÆ�¥±±¶Ñºª®«°°°�Š»ÅÌÓÅÉÆ Á ½ ±»óåìåãôåä âìïãë ±�ÊÍЬ¥�¥±²°Òºª®«°°°�ÃÐɬ°°µ�ÊÆÚ¬¥±²±Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÄÈ̬ÁÄĵ»ïææóåô æïò âìïãë µ�Š»ÅÌÓÅÉÆ Á ½ ¶»óåìåãôåä âìïãë ¶�ÊÍЬ¥±±´Ñ�¥±²±Òºª®«°°°�ÃÐɬ°°¶�ÊÆÚ¬¥±²²Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÄÈ̬ÁÄĶ»ïææóåô æïò âìïãë ¶�Š»ÅÌÓÅÉÆ Á ½ ·»óåìåãôåä âìïãë ·�ÊÍЬ¥±±´Ñ�¥ÃÁ»Âàõóåä æïò îåçáôéïî�ŠÌÂɬ³··»íáëå ãïíðìåíåîô�ŠÌÁ»éîéôéáì èåáä�ŠÓÔØÁ¬ÈÅÁÄ»ãõòòåîô èåáä�ŠÏÕÔ¬×ÄÔ»èéô ÷áôãèäïç ôéíåò�Š»�Š»åáãè ãùìéîäåò ½ £ ïæ èåáäó ø ôòáã묠åç Í²° éó ´ ôòáãëó ÷éäå�Š»÷éìì óôáòô áô ãùìéîäåò ° ôòáãë °�Š»óõâôòáãô ïîå ôòáãë æòïí äéóë áääòåóåãô èåáä�ŠÉÎÁ»òïìì õð�ŠÓÔØÁ¬ÈÅÁÄ»îå÷ ãõòòåîô èåáä�лɯ Á ÇÔ ÀÍÁØÈÅÁÄ»ãèåãë æïò ïöåòæìï÷�ÐÓÈÈ�ÌÄÈ̬ÍÁØÈÅÁÄ�ÃÐÌ�ÐÏÐÈ�ÊÆÚ¬®«°°´�ÃÍÃ�ÊÔ쥱²µÒ�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠØÒÁ»òåóåô�ŠÓÔØÁ¬ÈÅÁÄ»îå÷ ãõòòåîô èåáä�ŠÉÎØÈ»îåøô ãùìéîäåò�Š»ÅÎÄÉÆ�¥±²µÒºª®«°°°�Š»�Š»áää éî î îõíâåò�Š»              Â ½ âìïãë îõíâåò�Š»              Õ ½ õððåòíïóô ãïõîô�Š»         ÄÅ ½ äéóë áääòåóó æòïí õóåò�Š»         ÈÌ ½ õóåò§ó òáí áääòåóó�Š»  áìóï ìïáä öáìõåó æïò äéóë ãïîôòïììåò ¨ÄÒÉÖŬÈÅÁĬÁÍÏÕÎÔ©�Š»  áìóï ãèáîçå äéóë áääòåóó éîôï ãùìéîäåò£ óôïòå æïò ãïîôòïììåò�Š»�Š»õóå âìïãë îõíâåò ôï æéîä ãùìéîäåò ïææóåô�Š»äõòéîç éîéô¬ äéóë ÷áó äéöéäåä éîôï âìïãëó�Š»åáãè âìïãë éó á ãåòôáéî îõíâåò ïæ ãùìéîäåòó�Š»ôèå îõíâåò éó ôèå ôïôáì ãùìéîäåòó äéöéäåä âù ôèå èåáäó�лɯ Á ½ °»óåìåãôåä âìïãë úåòï�ÃÐɬ°°°�ÊÆÚ±±´Ñ�¥±±´Òºª®«°°°�ÃÐɬ°°±�ÊÆÚ¬¥±±·Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÄÈ̬ÁÄı»ïææóåô æïò âìïãë ±�Š»ÅÌÓÅÉÆ Á ½ ²»óåìåãôåä âìïãë ²�ÊÍЬ¥±±´Ñ�¥±±·Òºª®«°°°�ÃÐɬ°°²�ÊÆÚ¬¥±±¸Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÄÈ̬ÁÄIJ»ïææóåô æïò âìïãë ²�Š»ÅÌÓÅÉÆ Á ½ ³»óåìåãôåä âìïãë ³�ÊÍЬ¥±±±²²Òºª®«°°°�ÃÐɬ°°·�ÊÆÚ¬¥±²³Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÄÈ̬ÁÄÄ·»ïææóåô æïò âìïãë ·�Š»ÅÌÓÅ»õîåøðåãôåä åòòïò�ÊÍЬ¥±±´Ñ�¥±²³Òºª®«°°°�ŠÐÏÐÈ»òåóôïòå òåçéóôåòó�ŠÌÁɬ²³²»âìïãë £ ïõô ïæ òáîçå�ŠÊÍЬÒÅÔÕÒλåøéô æáéìåä�Š»ÅÎÄÉÆ�¥±±´Ñºª®«°°°�ŠÓÔÈ̬ÁÄÄÏÎ»ïææóåô ôï áää ó õîôéì æïõîä�Š»ôèå ìåæôïöåò óåãôïòó ÷éìì âå ôèå óôáòô óåãôïò £�Š»áæôåò åáãè óõâôòáãô ÷éìì éîãòåíåîô èåáä £ õîôéì òåáãè�Š»íáø èåáä ôèåî ÷éìì íïöå ôï îåøô ãùìéîäåò�Š»å笠æïò Í²° ÷éìì ôòù èåáäó °¬ ±¬ ²¬ ³ æïò ãùìéîäåò °�Š»ôèåî èåáä ° æïò ãùìéîäåò ± ® ® ®�Š»÷pMODŒˆD”%9‰@(FT@"!ÌÕH:UÐç…”ÕÓÔàe5D4Äõ8y=I1%E‚@b,>ph4`°ðŒÌoˆ°˜« €:ÅX4ü#3ÏiSyé8g>�Ö®cúÐ.Ÿa�»a0ˆaPVºÅX$2"Ã@áÀ *-P—Õ`�X« 3@a0X‹ €0èÐÄàU‚ÀÂ31¼"]b¬sœ…X4ü#3ÄXUƒ@X€\D‡€%±€@« ïææóåô�Š» åøéôóº   Á¬ Âì ÄÅ òåçéóôåòó ãèáîçåä�Š»         ÄÅ ½ ãïõîô­± éî âùôåó æïò ÄÍÁ�Š» áöåòáçå åøåãõôéïî ôéí庠³°³ õó ôï ±¶®³ íó�Š»                         ìï÷åóô    èéçèåóô�Š»                          óåãôïò éî âìïãë�Š»­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­¬¥±±´Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�лɯ ÀÁÌÔÓÅའ³··»õóå óåãïîäáòù äéóë áòåá�ÌÄØÁ¬ÁÌÔÓÅÃ�ÃÐɬ³··�ÊÆÚ¬¥±±µÒ�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÁÄ»èéçè äéóë áääòåóó�ŠÏÒɬ²°°»æïòãå ôï áìôåòîáôå�ŠÌÄÁ»îå÷ íóâ áääòåóó�Š»ÅÎÄÉÆ�¥±±µÒºª®«°°°�лɯ Ä ÏΠ²°°»ôåóô æïò éíðìéãéô âìï´Ñ�¥±±¸Òºª®«°°°�ÃÐɬ°°³�ÊÆÚ¬¥±±¹Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÄÈ̬ÁÄij»ïææóåô æïò âìïãë ³�Š»ÅÌÓÅÉÆ Á ½ ´»óåìåãôåä âìïãë ´�ÊÍЬ¥±±´Ñ�¥±±¹Òºª®«°°°�ÃÐɬ°°´�ÊÆÚ¬¥±²°Ò�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÄÈ̬ÁÄÄ´»ïææóåô æïò âìïãë ´�Š»ÅÌÓÅÉÆ Á ½ µ»óåìåãôåä âìïãë µ�ÊÍЬ¥±±´Ñïî�Š»�Š»ãïîöåòô óåãôïòó ôï âùôåó æïò ÄÍÁ�ŠÌÁ»óåãôïò ãïõîô�ŠÓÔØÁ¬ÁÍÏÕÎÔ»óôïòå æïò ãïîôòïììåò�ŠÃÁ̬ÄÍÁÓÉÚÅ»ãïíðõôå ÄÍÁ óéúå æïò äéóë�ŠÐÓÈ»óáöå ãïðù ïî óôáãë�Š»�Š»ãïîöåòô äéóë áääòåóó ôï ãùìéîäåò £ « ïææóåô�ŠÌÄØÁ¬ÍÁØÓÃÔÒ»íáø óåãôïò îõíâåò�ŠÃÍÁ»ãïíðìåíåîô�ŠÌèåî æéîä ãïòòåãô ãùìéîäåò¬ ÷éìì áää ôï ÷èéãè âìïãë ïæ�Š»ãùìéîäåòó éó ãõòòåîôìù òåñõåóôåä�Š»ÄÅ ½ äéóë áääòåóó�Š»ÄÏ ÈÌ ½ °¬ ¸³¶Ä»ÈÌ ½ ãùìéîäåò £�ÌØÉȬ°°°�ÐÓÈÄ�¥±²´ÂºØÃÈÄ�ÌØÉȬ­°°³¯±°´�ÄÃØÈ�ÄÁÄÄ�ØÃÈÄ�ÐÏÐÄ�ÊÔ쥱²´Ø�»­­­­­­­ÅÎÄ ÏÆ ÇÅήÃÏÄÅ�ŠÌÄØÁ¬ÈÅÁÄ»æéîä ãïòò*Á ±Í«`,.*Á ,H.&Ä@Ú $`�X„fÙp`Ð(—b` mÀ °H¬UƒÀ¶´E…ÀX4E‹%ÅÀ¨[œÅ€¬ëÚ mÃapVdÊ &:À2. ÎÈADDSETŒ†€2DIŒ ¨M{€# MQ 1=Np…‘ÑUÐÓ dtUD44Èy=I1%E‚@b,>ph4`°ðŒÌoºÅX,æ#9:Ån±V ŸšÂ°>/ap   »`ð— Ó�`ÐX„f€,**Á`á˜Þ#uаXÌFra€VaÀ pð–°€pà«€:Ä 6¢°¨ÅdUƒÀÂ31¼E„ÀX<Eˆ%Ä@x[Ä¬ë€ ÚØ" ¬"Ä€¬"ÄÀ¬"Åâ  D-£â@V uˆ@h*Â`·X«€DX°U„Àn±V?ÌÆóÚTÞzNÕéSzq*g>б`ÜU‚ÀÂ31¼Vë`�Éù¬]k¬~™�â·X«€OÃ,$: ` |^2Âà v*À ™Š…þÿaPÖkZÀø¼e…Àì UƒÀÂ31½Ö*Á ‘aVK5€)ñxË €-Ø@„aP ‹ð ˜®€°�XJÖ§Åã,.·a¬~™�â³èjæ?­Àø¼e…Àì B°¨ÆÀ†LeÀXH¬?kSâñ–[°€ÖkšÀøË €-Ø@„aP ŽÀ ˜ä€°�XHÖ§Åã,.·aù¬A �Ó⦌°hÝ„„,*Á a–a€0V ? °ÄÈu€@2€à ©øt!¦'«¢©N…QTUPS TUTÈy=I1%E‚@b,!€X4Uƒ@b,ë`�È‹€ °x¬U‚À",&* áVK5€)ñxË €-Ø@«€ Ýb¬?5€)ñxË €-Ø@„`LÅ4Uƒ@b,á €"À ™@°Õœ:QTUPS'…‘’SÑU dd”Å4UHy«€DYTüƧÆY\U•@¬–c?Ó⮦Œ²ÀÝ„ °(øFf7ŠÝb¬?5ˆ ` |^2Êà v*À ±Vf€,®*Á ,²*Á`,¶Ë ¬ëåph"Â@ 0b¬*À á˜Þ+uаdüÖµ€)ñ–W[°€V?ÌÆñ[¬U€À",ª*Á ,º*Á`,¾Ë ¬ëePm|a 1œ`PðŒÌouаdüÖ§ÆY\U‚@Â31¼V}­\Çõ õŒ�ODXy=I1%E‚@b,`4ˆ°h«€„fcx­Ö*Á`“ñ¼.Ÿ3ºÅX4ü#3Ã",*Áà±V ?ÌÆóÚTÞzNÏ u«˜þ´µ�éñxË€-Ø@«€ Ýb¬a V ? °�Y¬O‹ÆXDn ‹€2f-@¬+`ð*˜¥€@dÊ&°€Ð ˜ž†‚¨‹8…‘ÑTÒ dDôD4ˆy=I1%E€@b,>p(4`PðŒÌoºÅXæ#9 °HøFf7ŠÝb¬¤ÕÀ:�QÑU'„ÑTÐà4U48y=I1%E‚@b,*Á`á˜Þ+uаHdüÖ 5€)ñ– [°€V ?ÌÆñ[¬U‚@'á–a€ðV ?ÌÆ÷X«€OÍ` |^2Á  v> ° ˜¥€ °XøFf7ˆÝb¬sœ�b·X«€DX8üÖ'5€)ñ– `àóXÜÖ§Ä84l/a»†X†Lb€X,ü#3Ån±V ˆ°pù¬TkSã,*ÁÀæ±Ñ¬OˆphØ^Sâñ–[°€"À 0cä!~¿ÄXcö*À ™ApÆ$&E@ŒÈ(ˆŠhª‘�ÐH‚©1A7 ‹HlFk€22Jbš*¤Æ¬º&£`1Ð ŽŠ¨††™8…”UÒV eE4•¨y=I1%E‚@b,*Á`á˜Þ+uаHdü2Á  c XŸŒ°pÝ„@@a€0Ö kÚÀøË°hXHÖ§ÆX<uƒ@ÂV°>!Áà a[ ÆX@n ‹¬"Ö5€)ñxË €-Ø@„aP ˆ ˜ø€°�X¶Ö§Åã,.·a¬~™�â1á€V uˆpˆ4Ÿ@ëW1ýhÖ§Åã,.·aE…@&(€,0b4:Â@ csXŸŒ°¸Ý„ °xøFf7ˆÄX`†X4Ö! Úd}­\Çõ£XŸapÖk˜Ïôø‡ €)…ã,4·aE…@&2 ,0bº.4›„ói„èc4„3 ¸è 4N)¸]- á°h=I1%E€@b,>p(4— %¡àáPŒ´<\,2–‡€K…ÀrÐð pÀÒZ.ËCÀ%Ã@ihx¸lo-—%¡àáÐÌ´<\<–‡€K‡À 2Ðð qŠZ.!1ËCÀ%Ä@Ihx¸ŒË-—¥¡àâP<´<\Lh–‡€K‰À 2Ðð q@ªZ.)5ËCÀ%Å@Éhx¸¬Û-—¥¡àâÐ|´<\\p–‡€K‹À2Ðð q€ÊZ.19ËCÀ%Æ@Ihx¸Ìë-ˆr¸Ø^2Ë v*Á ,Â*Á`,ÆÌ ¬ë€ ÛŠ"Â@ 0cø*Á á˜Þ+ºÅX2"Ê ¬ªëá@h}­\Çõ õ¬O‹ÆY\nÂXE™@XE™ÀX$Eš@X,EšÀ9”U€Àb(Í`Å U‚@Â31¼V+uа8dE•@YTÖ!Ãà Úl}­\Çõ õ¬O‹ÆY\nÂXE›@XE›ÀX$Eœ@X,EœÀ9´U€Àb>Í­ ,0c:*sœ…XÖ*À` Ðe†8`U€@ ‹ °HøFf7ŠÝb¬a�Vuа6 €° « :ÅXXö•7ž“†sèjæ?­­cú|e†ì U…n±V ˆ°È«€°Ø«€°è € °8¬U†@ ‹ ° ŒE…uŒbþÉ”€FM@*šf� ¢")¢ªFW€*Jr"*Äd4’ ªMm# =M"p…RS‘V T”äDUˆy=I1%E‚@b,!€XU€@n±V 2 v>Œ° ˜à °XøFf7ŠÝb¬? °Ç c$1S˜™€°&P"5ߎ€4U49ÀžX†Lb€X,ü#3Ån±V ˆ°pù¬TkSã,*ÁÀæ±Ñ¬OˆphØ^ ˜¥€ °XøFf7ˆÝb¬sœ�b·X«€DX8üÖ'5€)ñ– `àóXÜÖ§Ä84l/a»†X†Lb€X,ü#3Ån±V ˆ°pù¬TkSã,*ÁÀæ±Ñ¬OˆphØ^€0À ŠÐë€5�Í` |eƒ€X4¬[kSâ¶Œ°xÝ„ °XøFf7ºÅX$2~c�átùœE€@`Æuƒ@¦°>/`à»�,Ã&5`áI¸@p0�f“Ðè@c0›Ž‚A„àp2›…ÒÛ`f€@ ŒØÅŒbX*À ™A@f袩)'©Mp# AQM%jp…“ÓPUÒ dôÔD4ˆy=I1%E‚@b,>ph4€,*Á`á˜Þ+uаHdü2 1ž˜¦€ÌB€f< � Œ8« €@ëW1ýhOŒ°¸Ý„ °¨¬U‚ÀÂ31¼2ë`°˜Œä!€Xcl*À ™A�eÔ&'¡ ª"ÆC@" ¤f�¢©)'©Mu@c =5Q "p…“S‘Õ dÄTäuDˆy=I1%E‚@ ‹€ °¬U‚@'æ°>2Á` v*À 1aÐ� ˆÐ«€2e€R èLENGTHœ…�ÓÕÑT d4ÄõtU(y=I1%E‚@X$üÖ-XÈøË °H—¥¡àãP¼´<\lx–‡€K�À2Ðð qÀêZ.9KCÀ%Ç@hx¸ì…-—å¡àãÐ$´<\|E–‡€K�ÀÒÐð rZ.A$KCÀ%È@™hx¹ •-—"å¡àäPd´<\ŒM–‡€K‘À ÒÐð r@>Z.I(KCÀ%É@hx¹,¥-—&å¡àäФ´<\œU–‡€K“À ÒÐð r€^Z.Q,KCÀ%Ê@™hx¹Lµ-—*%¡à¬ ~™�â·XÁ á˜Þ+ºÅX2"Ê ¬ªëã m‹>�Ö®cúÐzÖ?§Åã,®·a¬ "Π¬"Îà¬"Ï ¬"Ï`ê*À`±:fÜ 1ò`�}`°çÐVuˆh� 6Š€ˆ°�Äh cŠ1p˜�€ÌrÀ&0@¬ ~™�â7X«€Äg&˜�€2e –Ц‡3È(ˆŠhª‘ž’œˆŠ± dˆ*“!hŒ‹�dDôD4‰ªxt#$¦)¢ªN…“ÐÐU`dÄô4 ŸšÀøË€-Ø@«€ Ýb¬? °XY¬O‹ÆX4nÂX“18`‹€0èhÄ|B°&P5OŽ€T”äDU‰À…�QÑU dDE4UHy=I1%E‚@b,>ph4`ÐðŒÌouаxøFf7žÒ¦óÒpÎ}­\Çõ õ¬O‹ÆXDn ‹€0À ‰ «€„fcx­Ö*Á`‘`�ð« ÅX4ü#3Än±V 9ˆÎBE€@&' ¬É” FC@" å   ååequireä foò � buildinç  thå tooló anä foò usinç thå Carouseì Shelì Tool®  Sucè � relocatablå binarù fileó arå amonç thoså thaô arå copyrighteä anä � arå proprietarù tï Carouseì MicroTools®  Otheò files¬ thoså witè � thå .aieó � anä useó thå sourcå codå provideä herå aô his/heò owî risk. Thå  fileó  oæ  thió  ToolBooë arå provideä  oî  standarä  8-incè � single-sided¬  single-densitù disketteó foò transporô tï  systemó � thaô  caî  uså  suctains: cmtlib.336 proprietary relocatable binary files cmtlib.344 ratlib.336 public domain relocatable binary files ratlib.344 runsys.336 load shell of run.com  expand Š 1 ed.ar source for ed(e) f.aò sourcå foò fb¬ field¬ find¬ form¬ fsort format.ar source for format i.ar å Version 2.0 CAROUSEL TOOLKITS(tm) CP/M-80 Disk-B, BUILDER TOOLBOOK (tm) Certaiî  fileó oî theså disketteó arå copyrighteä (c)¬  1983¬  bù � Carouseì MicroTools¬ Inc® ò anä .raô designators¬  arå thå sourcå codå foò thå  Soft-� warå Tooì programó anä librarieó commonlù understooä tï bå iî thå � publiã  domain®  Carouseì MicroTools¬  Inc®  doeó noô claií  anù � proprietarù  rightó  tï thå sourcå è  á format®  Effectivå uså  oæ  theså  diskó � requireó  thaô thå useò havå á copù oæ thå  MicroSofô  Fortran-8° � Compileò  anä Linker®  Sincå therå arå differenceó iî thå Linkeò � formaô betweeî F-8° versionó 3.3¶ anä 3.44¬  re runsys.344 libdefs standard compilation definitions ratdef publib.rat public library source ar.ar source for ar r.ar source for reset, rev, rm  source for includ, isam l.ar source for lam, ld, ll, logout, ls Disk B3 contains: k.ar source for kwic m.ar source for macro, mcol, mv n.ar såanä maù bå useä onlù iî accordancå witè � á dulù executeä softwarå licenså froí Carouseì MicroTools¬ Inc. Theså threå disketteó contaiî thå fileó oæ thå Buildeò  ToolBook® � Somå oæ thå fileó contaiî relocatablå binarù moduleó rcodå publisheä iî sucè  files® � Carouseì  doeó noô warranô thaô thå codå provideä ió  correcô  oò � freå oæ defects®  Noò doeó Carouseì warranô thaô thå sourcå codå � listeä  ió noô proprietarù tï somå otheò party®  Thå useò coplocatablå  librarù � fileó foò botè versionó oæ thå Linkeò arå provided. Iî  thió  formaô thå fulì seô oæ Buildeò fileó arå  containeä  oî � threå diskettes® Thå fileó oî theså disketteó arå thå following: Disë B± conDisk B2 contains: c.ar source for cat, cd, ch, cmp, comm, cp, cpress, crt, crypt d.ar source for date, dc, detab, diff e.ar source for echo, entab,ource for number o.ar source for os p.ar source for pl, pr, pwd ratfor.ar source for ratfor s.ar source for sedit, set, show, sort, split t.ar     source for tail, tee, tr, tsort u.ar source for uniq, unrot w.ar source for wc, which x.ar source for xref SPECIAL INSTRUCTIONS 1®  D� them. 4®  Thå  CMTLI fileó contaiî relocatablå librarù routineó thaô � arå proprietarù tï Carouseì MicroTools¬  Inc® Theù arå necessarù � foò  buildinç  programó oò tooló thaô interfacå tï  thå  Carouseì � S iî establishinç reasonablå arrangements. 2 ô Carouseì MicroTools¬  Inc®  directlù abouô � thå speciaì licensinç requirements® Wå wilì gladlù worë witè yoõ � å‰h¼d^0˜EàZ/!ãy„^% õ0qÐÞl Œfóh€\Z/…K@%ðÀ h¾x–€Kè Ð }bZ/¢% € ¨à…š€KG%£àÒ i(´ ZV-.–˜€KM%¦àÓ  ièµZ†-F–¤€KS%©àÕ j¨µ`Z¶-^–°€KY%¬àÖ  khµÀZæ-v–¼€K_%¯àØ l(¶ [-Ž–È€Ke%²àÙ  lè¶€[F-¦–Ô€Kk%µàÛ m¨¶à[v-¾–à€Kq%¸àÜ  nh·@[¦-Ö–ì€Kwvù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vùÏ NOÔ writå oî theså diskettes® Dï noô eraså oò renamå anù � oæ  thå  fileó oî them®  Makå workinç copieó oæ theså diskó  anä � theî  puô  theså diskó iî á safå place®  Theù  arå  youò  MASTEÒ � DISKS® Keeð theí safe!! hell®  Youò  single-useò  licenså  permitó  yoõ  tï  uså  theså � routineó foò buildinç ne÷ tooló foò youò owî use¬ buô iô doeó noô � allo÷ yoõ tï incorporatå theså routineó iî ne÷ tooló oò  programó � thaô yoõ intenä tï distributåå…�ÓSS”É#  559L’FORLIBŠ<e4„TåbH¢˜SHNAMSŠd4E4ÔTØ¥ARGSŠ€dE4dÄrH CNTRLCŠ€e4…$UBH¡¸CHARIOŠTtTåbH¤À CIOŠjd4ôäd”x9M!9X’^fH–€KÍfó�ääi3š‚AŒR ŽG1`€†a9Χ3)°@M4˜ÎFò¡¼Þl9‹“qŒ\,M‚”är4� âÁ ‚.†Bá€Z)¤' ¦©ËÀäÑL� ”€@ÐZ›\X 2DT8‘%=1SHDEL$€ÐÑ TU„T2H‘IJ$EX�IS’U DU„•HIL’BDOS$A��‘ÔÉ d$Dõ2D8 =L‘GD$€ÑÕI TÕTÃ-%11OUTC$�SÕU TõUE2H=UQ90’MOVB$�“SÕ�ÒI dÔõd”2H5=Y5 ’PEEK�ÒÑ`UD”åBHA%9P’CANT�PÓÔÑ`d5$TDX Q=CTOI��ÕTT dE4d”äHMIDSGET�‘ÒS’U  ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�¥·ÈBŽ„Í´ :* ç#y¸Î +NG3I¼ÜŽ€2DT8è $ERRŽƒ€2DUˆèP$INITŽ�bD”ôdÄxè€ADDRS$މ€d$Dõ2Dè°BDOS$BŽŒ€d$Dõ2D8èàBDOS$DŽ�€D4åHéCD$ 2®  Relocatablå  librarù  fileó arå iî onå oæ thå twï  differenô � Microsofô Fortran-8° Linkeò format®  Uså thå copù thaô fitó  yoõ � versioî oæ thå compiler. 3®  Sourcå fileó arå iî archivå format®  Uså tooì aò tï extracô  oò selì tï others. Iæ yoõ wisè tï builä portablå softwarå foò distributioî baseä  oî � thió library¬  contacô Carouseì MicroTools¬  Inc®  directlù abouô � thå speciaì licensinç requirements® Wå wilì gladlù worë witè yoõ � å/ #£™ Þk ‚@-—‘€ÑÌÐ.2›ŽÀ–€KÌ€A �@ 2©Ð9M!IP’^–€A¨è©ÊÄ’ð´^ÿ–€Ahi)ò÷€€@ €@  h†žœŒ’�/Œæx–€KáÀZ/ (K@%á@K@%ãTTäE5HEU2ERROR�VPàTdDô²H1UM"GETARG�QÑUÒ dtUD4‚HQ1%:GETR$�‘ÑUT dtUEu$H%9bINITST�TÒS dÄTäuDˆ1%9-FMKLOCL�“Õ`DõTèA -96PUTCH�”UÒ eUDÄ”èEUIfREMARK�”‘SSÕ‰ E4TT¸M-%A 2STDEL�•S“S’àUUU(9]1%:P5ØB–�KA% àР hh´@Z&-–ŒŽ’€T4Äõ4Xé@CREATEŽ•€D5Dô8épCTOIŽ˜€d5UU(é DSFINDŽ›€dE4e$TXéÐDSGETŽž€dE4”ä•HêENDSTŽ¡€TUTÈê0ERRORަDU„T8êHEXEC$ކ€DU„•HêxFDOK$Ž©TdÅU4ˆê¨GD$ެdtUD$xêðGETCHŽ­€dtUD4‚HëGETLIN޲TtUE"Hë8GETTYP޵dtUEu$HëhGU$ޏT”äDUˆë˜INITSTŽ»D•4”èëÈKILL   ED޾dÄTäuDˆëøLINKQŽÁdÔ´Äô4Èì(MOVB$ŽÄdÔõd4’HìXMOVIC$ŽÇdÔõdÔ2HìˆMUL10ŽÊdäUtÄ”èì¸NOTEŽÍDõTèìèOUTC$ŽÐTõUDÂHíOUTNL$ŽÓTõUE2HíHPACKNMŽÖETT¸íxPINT$ŽÙEô´XíÀPUTCHŽÚ€eUD4‚HíØPUTLINŽßUTU%˜îREMARKŽâe$TÔõbHî8SEEKŽåe4„DTÂHîhSKIPBLŽèU5DDåå/ #£™ Þk ‚@-—‘€ÑÌÐ.2›ŽÀ–€KÌ€A �@ 2©Ð9M!IP’^–€A¨è©ÊÄ’ð´^ÿ–€Ahi)ò÷€€@ €@  h†žœŒ’�/Œæx–€KáÀZ/ (K@%á@K@%ãTTäE5HEU2ERROR�VPàTdDô²H1UM"GETARG�QÑUÒ dtUD4‚HQ1%:GETR$�‘ÑUT dtUEu$H%9bINITST�TÒS dÄTäuDˆ1%9-FMKLOCL�“Õ`DõTèA -96PUTCH�”UÒ eUDÄ”èEUIfREMARK�”‘SSÕ‰ E4TT¸M-%A 2STDEL�•S“S’àUUU(9]1%:P5ØB–�KA% àР hh´@Z&-–ŒŽ’€T4Äõ4Xé@CREATEŽ•€D5Dô8épCTOIŽ˜€d5UU(é DSFINDŽ›€dE4e$TXéÐDSGETŽž€dE4”ä•HêENDSTŽ¡€TUTÈê0ERRORަDU„T8êHEXEC$ކ€DU„•HêxFDOK$Ž©TdÅU4ˆê¨GD$ެdtUD$xêðGETCHŽ­€dtUD4‚HëGETLIN޲TtUE"Hë8GETTYP޵dtUEu$HëhGU$ޏT”äDUˆë˜INITSTŽ»D•4”èëÈKILLTÈî˜TINT$ŽëeTäÄ”ä¸îÈUPPERœ…\œÞ\Î bDÔTÕ%™@ÔZG@1"j*j’ÌàžTU%˜îREMARKŽâe$TÔõbHî8SEEKŽåe4„DTÂHîhSKIPBLŽèU5DDTõUE2HíHPACKNMŽÖETT¸íxPINT$ŽÙEô´XíÀPUTCHŽÚ€eUD4‚HíØPUTLINŽßUTU%˜îREMARKŽâe$TÔõbHî8SEEKŽåe4„DTÂHîhSKIPBLŽèU5DDåå‰h¼d^0˜EàZ/!ãy„^% õ0qÐÞl Œfóh€\Z/…K@%ðÀ h¾x–€Kè Ð }bZ/¢% € ¨à…š€KG%£àÒ i(´ ZV-.–˜€KM%¦àÓ  ièµZ†-F–¤€KS%©àÕ j¨µ`Z¶-^–°€KY%¬àÖ  khµÀZæ-v–¼€K_%¯àØ l(¶ [-Ž–È€Ke%²àÙ  lè¶€[F-¦–Ô€Kk%µàÛ m¨¶à[v-¾–à€Kq%¸àÜ  nh·@[¦-Ö–ì€Kwvù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vùED޾dÄTäuDˆëøLINKQŽÁdÔ´Äô4Èì(MOVB$ŽÄdÔõd4’HìXMOVIC$ŽÇdÔõdÔ2HìˆMUL10ŽÊdäUtÄ”èì¸NOTEŽÍDõTèìèOUTC$ŽÐTõUDÂHíOUTNL$ŽÓTõUE2HíHPACKNMŽÖETT¸íxPINT$ŽÙEô´XíÀPUTCHŽÚ€eUD4‚HíØPUTLINŽßUTU%˜îREMARKŽâe$TÔõbHî8SEEKŽåe4„DTÂHîhSKIPBLŽèU5DDåå…�ÓSS”É#  559L’FORLIBŠ<e4„TåbH¢˜SHNAMSŠd4E4ÔTØ¥ARGSŠ€dE4dÄrH CNTRLCŠ€e4…$UBH¡¸CHARIOŠTtTåbH¤À CIOŠjd4ôäd”x9M!9X’^fH–€KÍfó�ääi3š‚AŒR ŽG1`€†a9Χ3)°@M4˜ÎFò¡¼Þl9‹“qŒ\,M‚”är4� âÁ ‚.†Bá€Z)¤' ¦©ËÀäÑL� ”€@ÐZ›\X 2DT8‘%=1SHDEL$€ÐÑ TU„T2H‘IJ$EX�IS’U DU„•HIL’BDOS$A��‘ÔÉ d$Dõ2D8 =L‘GD$€ÑÕI TÕTÃ-%11OUTC$�SÕU TõUE2H=UQ90’MOVB$�“SÕ�ÒI dÔõd”2H5=Y5 ’PEEK�ÒÑ`UD”åBHA%9P’CANT�PÓÔÑ`d5$TDX Q=CTOI��ÕTT dE4d”äHMIDSGET�‘ÒS’U  ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�˜vù ‡o�¥·ÈBŽ„Í´ :* ç#y¸Î +NG3I¼ÜŽ€2DT8è $ERRŽƒ€2DUˆèP$INITŽ�bD”ôdÄxè€ADDRS$މ€d$Dõ2Dè°BDOS$BŽŒ€d$Dõ2D8èàBDOS$DŽ�€D4åHéCD$TÈî˜TINT$ŽëeTäÄ”ä¸îÈUPPERœ…\œÞ\Î bDÔTÕ%™@ÔZG@1"j*j’ÌàžTU%˜îREMARKŽâe$TÔõbHî8SEEKŽåe4„DTÂHîhSKIPBLŽèU5DDTõUE2HíHPACKNMŽÖETT¸íxPINT$ŽÙEô´XíÀPUTCHŽÚ€eUD4‚HíØPUTLINŽßUTU%˜îREMARKŽâe$TÔõbHî8SEEKŽåe4„DTÂHîhSKIPBLŽèU5DD   åååååååååååååååååå   åååååååååååååååååå   åååååååååååååååååå    åååååååååååååååååå    åååååååååååååååååå!   åååååååååååååååååå!   åååååååååååååååååå"   åååååååååååååååååå"   åååååååååååååååååå#   åååååååååååååååååå#   åååååååååååååååååå$   åååååååååååååååååå$   åååååååååååååååååå%   åååååååååååååååååå%   åååååååååååååååååå&   åååååååååååååååååå&   åååååååååååååååååå'   åååååååååååååååååå'   åååååååååååååååååå