üÿ35-DISK DOC “¨36-DISK DZC–~ARGS C îCAT CZ \CC CZM‘zCC DZF¯ ®-CC DZCÏ+ž×CC1 CZ úÄÏCC11 CZ ÉCC12 CZ , Ž`CC13 CZ L�CC2 CZ hWCC21 CZ n!®CC22 CZ ‡î8CC3 CZ ¦Š`CC31 CZ ®Ø(CC32 CZ ɬ¨CC33 CZ ÛײCC4 CZ ìQ¤CC41 CZ ñÔyCC42 CZ gCCC SUB)ÅJCCCC SUB*ì–CCCM SUB,þCCCR SUB-}CCM SUB.ØCCRTL MZC/_VCCRTL RZLމDELBR CZM¦>Õ½LU CZMäh|wSCLIB1 LBRL8éSCLIB2 LBR„o,vUW CZ ó½|WC CZ ù û;ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ *******Disk K35 -- Small C (Version 2.1) Compiler & Source****** Disk 35 is Fred Scacchitti's upgrade of the Small C compiler (Version 2.1) and includes source. He's incorporated Jim Hendrix's additions and added a few of his own tricks -- global initialization option, no boot option, conditional operator, 4K file buffers for input, output, and includes files, and many more. Read CC.DOC for all the details. This version requires Microsoft's M80/L80. ***************************************************************** vþ36-DISK.DOC[04/07/91]% €ƒAB¤€$@W2› fói”@T7ˆ†“™¬@K�„Ñh€¦m0› ‚˜žM(I„R�€L &LG# Èò ƒà“ÐTú+FÄÓqÐÂi7IJi6œ æaÄ`5“ ÇSqŒèi7ÒÅÂi¼ætªUކƒ)Î!7ˆA –óÊhe2)BQ¤Ú $MÆKÁàOLHdrY9 Ã…1Íæ±º|F9^¤3 ŒÆh4�," ©ÌÒg7g-± „Öo9:DÎ#y�êcˆiX®Pz¹‚ŒÆ“e¼@bœÃM¦-é¸Î 6íμza›m�Áápøš}Gb,¦ô¶æž.rp:˜ª=4:’nïì',�ïEL7�þZú�ò²‰¬Šrª„ h@‚+ªú±©‹�@;¯ #¾>Cæ¸9£`ò�ŒˆÎ:Œ#8Êû0¯"Ò¦³aê¸ /c†;´cBš7'" ‰¡æ<­#(ÚÌ'àP¨;¢oòn4¹ò@!‰‚H„…Â`„—ˆ"p‰&IÂe)Jˆê>£) ë-Êܯ, Ȉ­ÃÈOcˆê2Œ®ö¥6oš¥$©ƒš&<�ã¨N’ [X‰ ƒ(ð:&ËËÀÈ›"7µ£“L‹ k*|‰Ek… ®8ÎBûÈê˜è<Ž„–Ÿ" ‹)¥âÛŠã�à .§ÂJ­@ޝxÜ­CXÜý©¬˜êµ$ã}.“ÔÓëÄÍŒ+Û¶Ã ,CÆP¨#û²l«.Ÿ2€áêPÏ §È" @Ñ  Ë /* ** args.c Example of obtaining runstring arguments ** via argc and argv in Small C ** ** by F. A. Scacchitti 9/23/84 ** ** Some what different from K & R , but it works ! ** */ #include main(argc,argv) int argc,*argv; { int count; count = 1; /* One line does it all*/ while(count != argc) prntf("\n argument = %2d , argv = %d , *argv = %d , string = %s ", count++,argv++,*argv,*argv); prntf("\n"); /* makes it look neat */ } vþCAT.C [04/07/91]% €‹Å@ÐP¨T 1˜N‚ã$Œi6D3yºt2›¡†˜¸€ r7™ÎFh$b<ˆÂ⸧ 1˜Í“¡ÐÓ„Rqür/ Åã�¤ê ¤Â'Bø4FiŒ¦H ðæt2G…Æ�õ<R: Õ³p²Èd7�Nƒ°LÉŠ ö#)Èæ S�Pci†¤(0œŒæ1f Îvˆ,B F„;Ë£±îÀ HÍ&a c,^`šF㡘P".F!‚©ÌÂg2Ž¡[S5Ècq‰Œ„î/'hÈe!öÌD)ÁµFSÄØQÒêfϽ¼æÀQeµØÇ¶CyÂ7 Ä–Æ%Ñ`ˆÃÑÅ�|¤â©0™§íêõºý‹f*£ƒ&ƒx@ó£n(ŽnƒÉ=‚ë´Ô’3¬ìBŒÐ¨;¦° P…¬{0Œƒ#’2…PV± S§Cc0Æ6 ãœZñ-�¤:ƒE1Zä#ƒhÊŦŒõ# ¬³PƒIC’;ÌèPð¬ÁÊ3A#tŠ“ ¯xäùKo«îü²ïÛX×6†0�Á:Ç/l&ÃP°ä2Žƒ«[Cr?®LøPÑ£3t: rʤ±a Ê"‰â33 eÃG£¤(ïFñÌwG�ÑúÀƒD€h€ÎÃvþCC.COM[04/07/91]% €°Ä`)ÈÂlMưÊ/2Np耀Þf Ph(é7@ȈBÄ"#˜DP á�+hÀ àË4  €`Ðg2@ˆ6”ÓóЅJ¹@,Ôýi Â`WÒ@ ?„ £Hü>e;kµû+éj¶0�€ð$÷ßÂ@`°r�€LÐ)†ºÄg!1’ì-ÙE‘Yôd� …CÖx|:‡šqZ¿W­Ô?ÆO!ã5ˆ(Øm�Kvt:�­ŒØõðÊà?‚ $é@ŽM'I¤P4:}ÀNVhŸƒ5q.è„¡Ýf‰@m‰ñjÊ‹„|ÿ\2­²Ÿ ZÚì™! Ìb�À€î „k3¾@a l"i’Œ@¨"@îB0z™£ˆœÎ!aš æ¾1ŽC Ø"ª‡Œ¨ØÞŒb0:Žƒ„’ ÃJ ¯(@)”T€AüÆ-K‚…,¶ «RˆÀ¼lF Âdœ&‰‚bš®ò‚7€äøÎd…J¨øÎïQü˜!ÒŠ/ƒ pIIòa¤³{8qMì'l?¨1  ŒC|t2Œ�„‰ZZ—¦)™|elaibJdɾƒ&Lß)) 2 u~p„@ph�aÅ<†iò@ øˆH! …W"[§]Ä€)(ÊAU®r…Vƒ¼Q€‡ Ãw€#pM5™§|Yràäe@ü)E÷É×ç‘&ß.ð.œ6=ЀVè"’ݦõŠàGðîe88®aØ`'‡Ä@p-˜¨8‘§ŠÞn1�Wæ< ä…Û|ØVëR[ùrÅgxÎ7kÙ³bÐ Y�©„@•ÃkèÀÈüs&Q Ô׋¦x {è¶å½pc‰(2/bµœ\7[ÀUüÜûøô^Ca € ö^š\PU¼†ÀÐFo&™²‚»Ft#�uylŠv´ž‚¨‰û*KÒm9àU­Î3œêr‚`Ð6F€F°€ ‚ka´a€†°@aø´8a0@i¾À¦_�p �€¡ 0Á’>³€ µ…ÆWÎX  &ÑöÃÙ¥úxþh&Æýê]@Eø>èÆìKÀ\�7Ê2�p|y¯ö,„¤w�è!ôsñüF<£”jŒØ.½ÆI÷„JaÀ 3@ =Ã%©µæÀ†P]{Ãü§ÖºÛÖùZnmÕ»¹VôVš~bØa € ÑAC, à4MI¸�{ÀQÍ´×:çψ± è @0£!‡Iõq´„ÑÚ݈ŒýnÄ 6�Xsr®uÀºŸ Do-‚¡„?âk]XaùLxÑÃðo_‰ô¨¨”aNð$£d¬´E$ÒUHØ:0�� 8àˆ“‚À«ÆI™Àš‡YèMpŒ>€a‚$qˆ€¬+!€V�°O„C¬JÒƒf(#Ëu uÚåT¬Q­ädƒ0f}‡ " ì‡ƒ|$¥@Írò�5Fˆ¡èYŒ¡‘*(Í“J Ø` §`ë‚ê%€`ú.èN/�p‡pG(PÂÀiÏà¯áAä7£~€`ö?€ÂÓœctà?€Âàf�°2GóˆSœRA’0Õ<"¡žñn>€ø²”€pB¥Í9§tòŸSAƒ#h±ä@@žÂÒ‚ª”¥àVꨊj”‘›Ó‚¨€�c‚ãˆ-Ù¼DV:·bDJÕÍ/8ç�yñõ4Ç&‚•c‹•o7šù#´xo1ítGåØej³€!Ý~ø),SòØ3ƒh�æÖ0dÒɪS(ÆÕZ¥( ðõ«@*U(Ú¾,ªñOæp€ƒ¼@EžN!øÎÝeM£Dv΋MóÉ àC¶�<Ã'VÕ 'ÑœöÝ8Œ0N<Þ@R²54ì1WÊû_«ý|Vfƒ`�¬€8 (Û´Að Q�‡ÎÊGð#(K[@Uzðá”#(b½"‚=FhN�x›ì€=À@"ø®ÐK Þ½*õ”¼0Ä·>÷« yšÖÏ€Â×X’Œ1Ãu£M¢Ðe :ÀÚ‹DTÔÇ€ ?É(�¦ à ÐP¥¸ :âH9” ÀP! 0r‚ eó¹†x?;/Xøa»�dƒ(< ƒƒp˜::H1€½˜6ÀØ4ƒp1ƒ`:ƒ 2ÀÜ’p7A0bŒ@’³(§4(h†¨9…3¬+ç2ø9ðk*¦˜ôª3B´ˆf³h²`ah6Xu¦û=­°ë²(ïÈ,ðïxªl(û$(² 9h3ƒ”/Ahë„4C4P“qƒ‹¬¸†hL�ØaÂP�a~…(>X.ha�È­Àb�Ð}ž“hzºÀ€p—,0…xZ)ˆˆDx<€pï”?3\0¥¼H²(fƒH8ÂÄ-C¬;ƒ¼GÅ9D˜}EXøÅ\O˜fÁô-‰2[µü"3<#²`:Dx’Å:¦Ä‹6·d:ÃTC8fÃL8:À4”d;`CÔ>Cða�pG$Ð"›×‘K…¾G‹DM†hZ2Àdƒq"A7¼ø78„5ƒ(: ;27`Ûƒ‡é³I¬»Ð§ |€@Ðă��{ÈTD ~HP{>Ûv�“íS�·C´3³#S1l²`x³”'(§Ã€[RÉXf€ó#ÃC¬Ù‡I[�ޏ Áàf„p¾Xkɳ�3¬�ð%�p`—Œ›¾9�Ƀ$FCqƒû¬4 «l¦%¸¸q0L†šŒ†RÉïÈ[ðɨ©ÈD³KŠH4®ËXÐDD·K@H„¹K$‰K’¿3£I4 ��KØï4›,�ÄÀ4ŒÁKë-†i6¾\š†hsƒˆ€x&4€x À ‚kv€x(C€x$€H€x'M€x'±àË °$Ð:ˆ¨3ƒ(<01�-’pˆè%ð-�h0‚ìÜ�h4Îà`Î8ƒlåƒt僀.€â|éh«¡Ð9¨7äŒ�Sƒ£ƒ<�Iø†I#uÎøÉ@IT– —¥¼™Fc¬à#4•²˜pLõ”+Y¹«…œôÃ4ÄÁ†OäôÌÄ—ìÆË„†h �‚šÏÐ8IÊ8H²`kOC²¸ha†äôcšÐ­ ‘07’3Ñ89Û ¸*³˜�«–…83´+D³U+l(Q½¥¸[ÑÓ4ÑàÑòÁ2� ¬[†E"ÃERC� 5 R£¤è4QÝ)Qðí%¸õ/9†--R5.8ò£SOT"R 5%¸(ƒL"Qð:@`Sl€Ò ;SS͸ð:@9ÓýT ¤e9È 1…}BÒ F¥¸ÁS£�•/Ô0Ô½1‡](R="Õ+�P¥¸~Tõ4ŠhÕU%¸.Õ=@ˆ TÅ Õ•1ƒeWÒ˜›=QUÚ[ƒí\QðU›�V1„}`8ó_Õe%¸PUy`�È|�S™¥ºhF:ÀT¹€O€˜ïG@`ÑH¢Õi†HfÀPløÉ€I™x×\—I€Iœg2`2€œ}A„€™ †¨Ô�ºÀ%WÈ ÅÍuIÊWŒ—¹„P­v×xœÕˆ¥¸¿Ï­{ˆ×Ì%½�³Ha‹ ™��Z[Ø‚:·pa‡;˜Y+"ºí’EËH�ËB†8WÍ~—=x×ä)Aà†oÐQ9›„µ|ÎË™�aZp×r‡Ìu, •(AA!!MÝ©�uƒ H6x;•(Q]’h0’x:ƒ‘!= «A Á)&’|#€£)—(ï>ሤH4ìVŽð(¢ÏjF ™e¼¾3ß¾ ¤\P\}Œ‘s¬ÀÒõ½YõÂÜ=q\Qu1\4 aØ hW�HÞpï@h\ í†heJ¦†]Üݳ&íÀ†mô?¸eÅãÁ|HÙ¨†…÷@ ûY ï`Ÿ´T\¬4²`߸i]Íp×Ó:È ¥¼¥à ø‚mûß)ƒ å„ àHÖÓ&`Ë22œ!Ù„"€ ŸÜ$0E¨fº^ž½)^ÚX2�;C )Òö¾}Ÿ†hc=ÀÓµi¥¸wßÓ† ­Àa‚•Ø�@HHF'‚ØA,/ƒxlÙZþ*ƒcÆÚÐ4ƒ” Û„y[zân)âˆc!ÑÁ­É²+‡Nc,ÖÄ€ÞVÑØ†Ø ]­÷ƒx nêÝ2`+j$V²`%ê&žYý/Èï a`†þ£äXa@ § j pê8qß(aê©a¥ÎÂŽª†n«êÌVָϫßEX\´¨²`Zj$ag6V´(ï°/2Ë>åü"j„��dBkfhðdD"¦ÁÚM€=écvÇÌ.hhì‚Ø æƒjØžIƒkVÕ�Pm W3ÞÒà¬ÒžØ× oá Άn²Îí«Am3kÑâMhÞ’=›Ïƒ>-GeÓ�€7ÁïYQÛ9@<€1¼ˆžóoFöouÔˆ<|‚ j •è§$Önå^˜ Õ}fâoãàpx!ð&ÙGÒo†htÀ‚Ï ëA`l´éAP3âÀ;σÑ!xˆq06éC8cˆ‹´�‘dhëRºgpHKºÀIÕgy~´Ò¦äµè^“…�…�cuqP²MS“²`còXo»ØhIñѹ>gî^õ2`ß O•Éàèø�4ß´�7‡(Ê\�mÌú²` €ß;_#åóÊoóã¤+wtA m5•‚§Aäµ½Â�Î2›±ºxáð“g †—,j@Zä×A†§PZvž:€r'1‡Pjè€ç4ä¿)�ˆot“½‚åï2`WõÈït(a†ß_Šs)ÆunvòhïtÖy—?VÑøuha‡OA‡'S2Àf‚D”WMu²˜}ueæL€ŸY‡çX?½¦u˜vÅqdø€ðYƭǃ/’h:Á [~ùhö+ú4 ¢|u’)#ƒ†�@ž'ú¡F²Ҟ܃ñ…(¤‚8^µÇÔý“ië)ó6{¿c H9èåÅ-OÙ03û¿Œ“ sŠHTÂJ= OÙ08Dχè‡Ù35p+&cS¾C5Ôùj€SB\P¤Tû¨HdÝ-Óï~Į̀384[®*hÈ3 h¥Òï»ÙÁ4:ƒd|h»¿Û4{Ûd ǘ2ƒ5ï»ÐÀÀ7¬Ü ˆЏKD®„z=ÄA×a„ª=c‡†Nkzp9ƒ(6ÀÈ7Û Áf`çD€3U�VwEà§ãÐ8YÊ8Xƒ°p+‡˜½Æ9ˆv£Ð<,†x“€ða†U�¸X�…ç,aj´�¦ø:c®7±·/ä�uðB°¨6Ôø·0aÿzw0 °+¬à”3;;�Ys¶Û¥€IØpÀ�¨g·z2t‰†agu&JÜ$ˆH*z×å8fñöðÿ  X,ÜG”�úã@aøa†ÏÉò_][mÑà¦yVÛñâ[νlÃ~l2`w©@rŽð-ÁùHs%qyFëlü¥ø2ƒ`9Û°|V�¦å=þ†hÂÖÊe³5ë€y>UÑH!Pg¹l=ð&p�>ß¾à¾XíþªZˆç•iðPCÊ;2J¬÷ô‚TH¦scÜô§þ\Jªg3´ð@ëÑœ‚h~·æp{zA GŒ\k‡QáØyÍ«�A(ë�òÙ¤ª“2 rJŸ·ù“–Mœdœ÷D�ÓHy£ª5s½‘ˆ€«‡£„i¨ïGŒ ,oR>Ïqõ#€ê¶¢€'uahiG^³|s(þ®„Ó×i©êÉOc铸nëRvÙ�̪咦€A^wHdwaG*)Oñ H ×lÿ?þYÚ3­ñ­ÁdkÆ0ýq²#g˜d¢~kf¶'âx‡s„lF3[0—8=¤tÄ^S]#÷ÇØJ89]!Dü­^#5p* q( KôEÀJᬸ޷ìˆÑá“Zå÷Äk`‘Æj„�ÓHy$k«²`}-E»2£@4´#4�Y´›ó,=ŽðRÄô/NÛh;B�X¼ÉØ'ÅDi9Ì´Ä[ö,#J��T®2`�0JáìùIÝ4�³ýÿ5&˜0HÍÁØ8ØÔ½s"~'»#ƒ�@Äí–±;U†hdºÀ=8[ NÙëRh;Qú€¿Å0ý¼ Ê5 û¯‚Ú¦†(Ä¿BMh„hV†L“¿’#Å<.ün+ÊÑã8ø‡Êã&û�ðÄùu8?,�9˜mþæÏÉðdèÞúH8¿Üƒ®ú<¡ù=Ðèh4ÂWÅx�8øœƒ0òÈa�í�».8ü¡~äĂІho9†1YØB?,Þ´ubþ‚[‰ŠF“|z�n“ˆKÊ0•6�ûo'¼GÕ…d­çŸÿ[Plà`�z[Œ'@ˆe“æ\0ûïM&Mxæéé¿Ø§l·;~t‰²`b[lד&�BkHu¦ÀFÅçm•'Mvt‰·WõÐwó2jɃ¸2ñ‡ý�ŽÀ7ú´¬öµGbγ×—†L3ê©;Ø)¿ß6uE�BÏŽóAv5t2ÏtCÆ:MC;2«,^e±H6g禓",ÿ=³¬÷_Sù‡ù…¨pÖ5lªà“¬ÚxÙ‚XOô†KÜc“s×>œòax»Ó+4¡âÉE 9 †Hˆ`2*qöØfýhï\£²`5ú`g»Ü2À4IB6†*×8D™ÆQhïQ 9h‘(aÿfȆðlHföí…oü_qÊC<Æ>kÉb ¸]°•§vØdú¨„�9ƒÈ6•i�tˆM¶˜+ÂÁD[)Hjè|ÞÈ}Fþñ¤wƒ9!ƒX† ¸þ÷WèÞ’{oMƒ°„ƒ¬a‡Tº5LTx»  º¤(CN™ Â[ös&À7U§“îwnü­j×s:f†K¬7T‡µC¥6Èݶì(Žð>š_2`U�V•¬¬ƒ‘>ºá3¶½Š¶Ä�H=Ã%»±ñˆe7Øá”ZÞëY²s&xS'ël±8ýˆx£Á¥�[{:}µXü¬©PdºÀýˆdLU iÓA{–Â:·s9[á­•“u¥ƒ‘ÁÙx¶ÌX4ÀZÿyб¨ –ó'£1±Ì1IxïaK&Ê2qÊ2wºØ본óÃ}•„oØë¥’†Pv '%”õì<£‹˜k£ªØ\ó´*öƒ=±{`…BAýx…@°‡’7ñ@95±¸i8„µP<ŸÐ7‹ð‹[r“v%±Š¼ÄEj¼2B,1ד#޼72`*`a�Ü+dÃ?Éꆩ³b•IÕ#Æ+7ˆXfC40eÖÙò[V¸ëÊŒgQàaƒ˜&ùP3¬_ˆt™|HÃ[ÁÙîÎ꥾€]†–" û<ŽðzÉó€Šrn�1uA{3³NH³FŽ�ˆ9!çêéˆø‚ EÊ6³"íŠ6Žôž�µ•‚º­ÔC¤Àhï#j ¹ƒžI†Ï(ez6³;†ªßÌÕ1‰+‘—Rn¦Ü º:¥¸0åæt˜Ðë„Ê•käó!ã:§²Ck�3ëÑ>ÇéÊGêÊÅÝqXè�0yhïü?€'ÂÐd‚!·¦è%¸•l7eº…Ô`ý¿fذÌÀf­O¨P-aÓq“MË庅ýzܹç�ÊÀfÃ\H¨PŽl?-ˆ«´Ÿeº:Ê,£Æw¢ËoB ðšü!-Ÿ®Øñõù9Yx¶ ×¥1²­7^ ÐÀó²íàT7Ø ¥äHz²è89X�}E\œ1†Œö’øvÊ8d”H.U° qGM¼8<¢²—;b2 ¬�Á¹^rJ˹Z‹ 6&ϺÀ7"0=|ÇGÐH7’`Œ¼0�À||68µ …jð�I›&:#Q>×�8þ߆P^ÆÀ8Ä3ù`gŽ[&Ôl>DõÂé_¥ƒ&¸Á×Zäÿ oWXa‡èÁÉXW]…W�‹ƒÁË&ÐXTœJ` ¹>É[®Î°o¿Ù>ÁË‚9c8k& z•Ã�Ÿ’€f£o¢®óšë¨˜þo*³Ü(ePd=�S™´)ô5àF&}„ÑGïÏàƒýÁîÀoÏÄòug†ë;áBÖ«–ÖÇ•†+zÚL�[zÎËš†l̘ïûýõ8a‚lü$ÐÃ<šs"Â$Ä F§ÀåÈ %¸?Ñ|˜N¿2`‹-,£&&©†È’²`0ȼð ¬7|€n�1§C[¨P?­•†w·©§a’þºnäfóÃÜ(e�0 Ÿ²`q�ˆ8¹Ê8¸¹†PO�Œi�ˆfÀP€ý•&L*i5‹i2˜›Ci7B€24éR`|GN[‡¸¸8¯ø ™GP†P#‘ßXX8¸8«&€f­PÈN¶LZS§¶’åè�7 )¡cêd{=i¨ø‚Òs<³ƒ¤�� ”sPE #‹àðÒ8©s¸¸˜˜³„ în`£ MJHC��f…h@`™G5 Òy°ø…öT:v®:ÀZDIÖ8ª�_iÈ`ö‚I€6 ø†z öË[‘(eZ„;½ €yÄNkÛ½€[JraxÇÿ×,ó<±8ˆ—l†­�±4ƒ4@Ø4ƒ3Ń(3@Ø2ƒfâ�ÓŃH3He¹h?޾D‚�Îäõ]…�e€M1«ËwÈ9,_Ö3�ÈÈf›‰M�ˆ8¦âM0õc7䌆o<&éNÈeµ,‘àhD�{&x÷Á&é8ÄYIRdÅé‡W‡ÞŤÕ} ”Ó¶’åÇç¾�Ë¢õâÆÕi¨QØ·Tó²`(ž['¢Ä²�”ÄŒL£ˆ 2`'¸a�^f‚Ø�X¿,òàdº{þØüŽôáaœòˆ:SáuêZn©o%¦Ú…ë¬Õ>mAgÏS' €XSáÖ6Êš‚ð¢ŒFO�”.C=I~é†P|SäÄ~ëkeÒäÿfà a†"˜ Ü2κP Ž[€Èµ¿U8Ì35èå“댶|V�Œ²`ÊÊØÄ-UÐf†ˆ5pH{¸GâÁ„€šÂ[€�>HÙö>pËý™óÔ0ðß³T™ðŪh¤u.^:À/�Ö`·›5^=C €2ÕŸh^ºÀs½«:³¿4ímÐÏ´Pa…ËÚé®[²(ÊÃq9H¨T¬8šv¶¶kÊ[þ¬Qò ø�éÉþ+¤È HÛ˜f¢¬¿ÅÏ Qvìšv™M]žA_N,¨ï”?C¨†Hf…,UÓºCòÊíì§Cs&!Éͪ;W—ÚÃðaƒømI†PnÕW8 êã¬Aɇ˜yìcUqÊ8͓ň9YXv~6èyàï\¾«ÈdÀ¨0ƒ:SG�:ƒ03{p7¬=±EÉÛ�Ã,â^ºÀ�Øfƒ®Œhž‰†jÛ,÷ºÀ(ØfÈÁa=ÂK¼¾Î¾%IÙ÷ä8E�ßö=b¦•bMy$ƒ�&=”ë� Ej*�7í¤ÏŒ"L¤Òï8{&ütšË‡¡er}³´À+÷`�Ô†0;¬Ð‹wö,ë}È7$2`�ç44ÂL~|˜y÷•�È`Y#` Љ7�â„Ex*�àøþ‰¨@ï¿qõ<3ˤ›³¬2A„1—=x†ƒ¬`w¼E«É¾X3à†kÄZºbæ¼E¬Áò6TUá`d�zPH#$C<�–ºpÔ�2` �îÒŸ�Ÿàv½pÇ2`K¨’ðO´´Xkâoì´3Á{à�dHPK©Õľ¶Å½wo•ƒÓ#&©Bq‹É„§dH> 2ÈàtK²8ëäHK�2ÈûKE�QöÔBj]$…ܺ”‘D‹ÉßC†PkK¯\"ñ_ªá…|Z÷Ë:Àöë›ýŠ˜Ì€Ë4¹fW^ëu‚Ésak¬°n´“P\Ž÷C†P(�ðfýha�ðcõ§ì²×�`:‘ Õ`;³ÚóŒ§2S&ÁA¡A_½Ž»žåaƒh_øË+v€�Î’Š5™A2`ûoQAJb[ìÁöôñ ¢6ô¼Ók ü—·ÕæÆc�þ?pI–ºÀüO³¸2‰Ê2ˆa�`Šv#ƒ=È¢é†P&ù<_˜eA[£ha‚H©­tÉYs¸˜âC9ÕcØøƒP›ð¿RC8�ú‡®�•æ>²�kYýkIØi‚Ë3R-a˜f‚ãà²`=‘A!ËýÜ3†¨³ïÞV¸qößkpªj�Eþì %¾ªg§é‘ˆU抰P;Ýëqða˜f†9;Â(Qn‚Ü\ �ÑãÊÈ�7šn^ëlÿ2íEá�ŸS)Ö°9�*²™ðCÔ^QÛEQå#‰*[ê¦z6Xj¦z)¨@�û¼6ê²`l‚HP,>X{«ÿõ2÷2`{«ÿõa­õa)ÒUŸå‚q‡O‡s„ÉÕ–D>j ï`!%¿|g¡1–Ø’¥¼Vg¢šƒ mÅe¨†*_3 Îk€‘W4FØÿC –JûR>ꀉ˺À‚³•! ,ò/u> Žìå8fŒ›,Û�5nü€Û�AuæÅYòs"Û&�X.¶k¡@IèÒâ¶©�®¦�Zè×05WlUŸw*-Ž~¨ÎÐf�¸+ÿ8fåÐïnå†'‚$:ƒsc†ìV+&8!æ€ï, È䔲`fh 1u‚ÛÔ��ƒ5V´˜í5àG‚v‹ˆç)mBdÕ-_X*tÅ­,ÿ9¤ÉØv¥xd‚„*�á´FRÏóÓðï<Î(€[ÞËa¾È‰Â²Íkvb2Ùùð\ 6}Ö}Öêû,�ÒËñ€à"h'>('LTšTËdRcƒ=�|Å[‰‚AÀÍ^$àø†Ø"½½*Í"ý=_mGÓÏt¨eß#ÛÒô(mGäYýKá´mÆÌ†‚+F´W—é {õŸŠ(·›E‚ "½»Æ.®©Ù÷ùIƒ3æ¾ë†P)1jˆ‚(q‡KÛÓµ1Ö·Öx"ÆÖoõõ¸À³Ã "V´˜U¸˜ "Ì‚-¥¾ÃK¯Z[­!à²e»ëc¼ÈfÔé1a[ë¹ãa.ÕÞ(H"ì~Ãh5Q«Q?Ì?ÑO€"í.½C�7Ü¥" €4·ÒxÑ4Î|ø=‚K0¥½gm$ÌçÏ„°$³ [ÔîÑlÎ|øX‚K0¥¹Å�$�(Ìçφ`$³ â4XmH¦�ÊU‘�3•a˜$†k[ u$ÈqlÀ/lÀlÀìÀìÀÒ€ìÀìÅ}ìÀæÌlÁ}({„[FÅ¡*ÆñõÑ:œdÄoënÞìq®(lÿ2†Õf¶;y]|nLæ,ÂÆÉ>ÙÑ7j¥¨Œ#ÃÛÑ@y#¡}’c)„h47Ïb� S4mQ8�ÿ³Ð>à«�ÔC¨4v3Nµ€áÄ4íp¨nzHà‚ÜCl.Ä0ñh ¥¾ªg d›5Ä2#ƒê]îÀ꥾ªg d‚ð«„ÜC2¨„ïoQ »Â&*`]Ä3㲘` ´Z§nªg d�è�ኸoÄ73t ¶û [ê¦zOÂ"˜�"˜«€8&²�µ� ÑósóÕ×ÝœW �]¼sÓ)�}¼,@ ¥¾ªg d�XI�‚m¼$P‚�¿ô€ ¥¾ªg¡>��Œ8Ä @(p+&ˆ&�à)‚méƒØ&ÌØ vC�x4:ðï+ùEÆC„šŒsPf‚k0M‹…»;±IpH+D©ŠÐ�o„¶Ø|ø ‚v£@z‚iÞ´—G„R÷½Ùôl†hweØä0L M÷ƒJÁ® )ó ø‚Ë�ëùhlƒ?„B»¯FÈf‡®]Êð„Ô±@[¬¾ìŸ:ˆH¬º|×Þ¤�aÇ ‚ðÞ]­8N£&H'Ï &ú˧Ì\|žêí¶é†P„ð kIÔÕ�'«{¤a®Ùñ•^#5AÜŽuä"VC„ñº2`l‚|Su:x…Ø`QI Îì›sDR”™Wðpë�S«YôªÏv¾‚|¯n°f‚€.³‚왲XIĦfCÌ@ñ°(~{5�º2`»?ð±8‚‡0­8ƒD©ÍæÃÙñŸa$�‚°4+g…™º2`C8Q)18,žêC‚°4Jšã­çˆ³¨É؃B¶l·ð­ÂÜX€É�? ¸I–&窈M° 2[ný€¿ÉýЏr8@æ2œ§E¨]Ÿç³QÃw0í³òWM0­ÌqÔš'Ü·*ˆ‚˜µüM:G¼�)ð+&X))Q8(�J.æÙvÕì…"î?D\%½aP Ãmîà2`58 _ÑÛI8�s‹:ù\eüâîÐæ^#5,ÂÆŒ™ádm*Þ#5lÀ¡€'“)�ÿG°©%¸[.æÇIoÓÏs&P)qY'P“FË&?Ê�ŸI‚Ò:Àü«>ÆÎïåÐïjW‚!Ü1‚°Öå†h.ƒ?ø¤µŸ$\�%ºÒ:À2‚—cÑÐ.ƒ>„ëuV.ÊÁ^&]¦Ô�B„ív]°Tæàa�À)�\.ç5RêgQwÊ• ‚³å€%Tí×8àã¬ÏʵùJÏ¡Rßý/[ÑÿÒ¤²™‚2�wCk¤1kò4Paþáˆç¢š€‹€êgQ¢›=Êš&\6ÞÄ‹^ù§Å¨( À§mÛ ›<¾0ßùâžüpÚø9ƒ¨1›ÿH8GÄéøÚþÑïi™¬€N’'­x·²`t¡œ.0*M#€�+‚/ ËNì0ÚôêÎKr“ñ‡¨*ßï;~v:*kÔ—±8 f€ +JñHÈ1-ãî’”"AÝâRìéö]ë×8´¨ø…H*ký1ýðÛÙñ•bRìéò–R8³«^àÜÁß\6×eÚÓ¯¯ÌEñ^ïçºÀS®½Fàëù_ÃÉ¢Yõ¢1n½s‹”:À7‚®½ Ü™²`4‘ÄÐï™ñ–]žÚÊÜ*CÁÚóL…LAÚ°Ý5—§%ô¥Íö.ø'ÈuÅ—fGjÞ#5—® ~î[€@+lo*X`¢~'ÞÐ+yé~¼ÊzL°„ƒIS@x8[ný½r%ó0Þ$1-Wu-`˜LƒP+¡ŽÎ±8]àŸw†P;‚°a…Ø+_é æ©18J`˜r"ƒ3¼2,ªÃ$=P†\ �] “ÏI�½¸ Â€I�Š^˜wµB6°�Žðeƒ¦ÒÀeX+À•/†hAøa€p+˸2ñ¦Üà (7ûµ�Íu>'ÃÞ'‚!‚)8!Џð¼b[ᯕ‚š†Äè¼c&3´Æ0©çú¬ÕæÃ&r†)u8eqâ¿—õ°ø€ ,[>�4E) ›+s:Åí)14(14”ÑâÊʬ÷2`8}A`î3¬ð,(1Hx>L¼÷º5•–@,ûln”€R¿�döÐ1Ί(ºK4½úa<Ƀ:ˆý–+À,o‡±—Ú­l賬÷2``1¢X»á„†d»_ØJÊí¶×öl�IJÔ®C&,”€j å€P,”€KÈ-hiuŸ2`‚ȃP-™…þ’É莸 ä²`$‚ÌÈ©º¦ƒ`-ð/ä‚Î� }è5‚Èaƒu Î`° P†P@‚ȃp-ŒÚˆø† ,ñYBaÚ+&˜,§N7Q�<Ò×30€��Ïs&P-¬vOpkR†k–ƒéAí¸f¹hOSnkò ø€¸-4²™³ã‚Æ…d¥ða‚8-�Pf¹hb®x†k–…zl©W*ˆ'JjƒG-kvªó¦áe‘M0f¹hÁ €;JiƒJ§Ž¸:m{‚:ê9jG‰€OJR¹�ï:l¯®£–†lºÀbJÚX_ÑYê9mD‰€vJcþꎪó¦¯Y¹h9¦Ë¬£· 5!\»k¦éf¹h(Ó›^ã· B›<»]Pþ‘;u¢†h:àH*ŸŽì«¬ñdˆ�“,×-¨¢z–Œ:__éMžìÄd“¥õ]N± hŠNuZ;p`‚ÜEnú_o¯ûkÿƒw ÝHvM¶ïÚOޏ<ø¼ˆ‚|©hÁXx46�Se—<œ¤�Ãg—W}Ö4¾é)Sž¼72`-‚ô’ôfÙá›eOT‚âAžCcî®0A¨dƒf†8„�?ƒ(:ÛrÃÛAd �Ã�PËüeÞˆañ ¿ÚMØÁÔœ ‰€nŸR6� ë­ÄGÀ˜¯8"7í­Ä„�ˆ‚ù ¢5/-Ä7„�ˆ‹êrÓ¶CäþH3Uà “:Â×$2`'ƒ *rødýáé0C&®ž„P0�¯%%‹ºC÷/†DòI)ô,×UÆ€Hƒï*Š(, )s$~žx 賬÷mȘÆž†0Ž÷^¾X`ièeƒ ûÁødë#‚$dfƒ€°‚8$‚p*h<|ÂæhmµpÓ<èéô˜?Šÿˆ‚01PÿD äÃ÷/�%â·àH"TÐ)© N–RûºC÷/¤Ð&$¤Ìø!‚Ÿêh8`$`"2Dè¾8üŽ÷ó s¸‹kŽóÌ�@)2¨ "")‚„|ÂáY9`9pÕðV×ðuXíÍà²`iÔÐu£P†rJU�Ut^,¦rmÐdºÀW&ëd@2!�úT‹ ³;6æP3WÚC—çÜ…]¬‡- §¼nmÔ­P+�Ø#&í¤ yr¹nÐ-vfàa…C äû†$ a€ˆ2q§hÜÒMOÍô!ôŸ""ꊸo ï,ê8ˆÿ€Hd‚€'‚‚K�vƒ ï,L¦i ¸}ƒ"ûÁødë)‚¸$‚ èh8«€Ø2ÐùHoÉâ ‚`&2E�¨ÑêH)(*¸<ÊP)(ÓºC÷/†n»+(Ñêq¦æ†HX€(„Ê #tˆ‡œÃ°d‚P&‚ƒ$+Â� …�0˜T(Ðf�H4x‰èÅÙB'‚”¤Ì %×¼– �Òï AÝ–j,ÿ(°ò:K^€2�|¨×'F¸|z˜~¨ÑÐ$Ð"l˜ +²B¢ƒ0ï-6! XGÌ.j‘sÕ Ï´Ro±86h,ørÅxI6 GšŽO`kn¸e03ƒ8ï,O} Ë&û&P3[K ýÜeB(Ï´Pa¼éEˆrãàuƒ6Ȇk%2eªàiÕ@3_€2Ä÷´£²o²`qƒ0�ØçD÷ÝÿSó´Xa2þ)ø‡È3;îëkÌ�!C’¦‚L9mšNˆQÖCl©_‚H'ÀeZºkÈ!",]­N!""U¾®â+Ã’)ÕüЏ3C’Å&óƒ­øBXdÊ *‚ƒŠ¸CU„†N°‚h*‚aìØ„ÅXAødë"H+h8ëÖ;¾�0XU„†N°•ÖƒŠ¸`U„†N°‚ÄÎØ†�XAødñp'&ƒŠ¸qU„†N°‚`'(#è8«‡¥XAødñp)‚–ƒŠ¸ƒBûÁødñp)‚fƒŠ¸ BûÁødë'(#è8«�84/¼†H!¥ð'‚nƒŠ¸(@ï,O3«6îþD‚`4'ƒ@a�x4H$ }üЏ;ƒ@ï,O3«6îþDƒ˜4;@a‚µ'°,_È«„04/¼†N°‚((è8«…�4ð2Äð]@ï,O4`9)EÛS®úî� »]JLÊQ¦2@†p4/¼†M.ƒŠ¸}@ï,O?°˜¨ÑƒGïÒÿÆ )JLÊP-2@€©*ÑŽ°¢¶ƒŠ¸ ’¨2Äð#’¨2Äð&Ú„?ƒGïÔÅÊLÌ|5ü€%kÈ«‚ÕfAødçO÷C˜„ñ*ƒ,O1*ƒ,Oa*ƒ,O™*ƒ,OÉ*ƒ,OûÓrTÛ´~ý $Jh)JLÊP-XÅÊLÌ|5üÓZAfVd†N°‚9ìÚwƒPï,OÐ5ð2ÄðQfÍ»Gµ8� 5ð2ÄðVþ;aâL\¤ÌÇÃ_Í5‚k$|0L %Ó$tð5/¼†N°‚:抸1ƒPï,OH5ð2Äð7ƒW kG­X)JLÌ|5ü‘«$>RûÁødë*¢¶ƒŠ¸LƒQ™4~ýÊASƒRûÁød›&.h«…À5/¼†I°‚9ìØ†H5/¼†OÁ®lÒ|—²`Snr…86µ£ñ�¨5΋$B€cƒkZ?Xf��8_ê·"xfô˜RØ LôÄ §t˜Qƒnr†x6µ£ñ„¼ûTå2˜wƒkZ?=ƒX��8\+PßéÆŽ¿I„ 5§|Wh(5 þ«t§OÈ6�Ô‰KHø„x6ç({ƒkZ?hƒ]�pï,O Ÿˆ Ž¿I„`6ç(oíñÿ ø€6Å,Oôr0 žƒnr‚X¤�p‚Å,OôrD;ç(3PE8²`/w>Ð@2Ä÷ÿG ¼6E„`6ç(EÐGˆF÷eP@2Ä÷ÿG!}xa„`6ç(lPG†P^w ƒxï,OöiŽ»ç(ƒ{Z?u÷‹Žð2Ä÷ÿG !»ç(:ƒ{Z? h…¸7Žð2Ä÷ÿg8ë±.r†(7µ£ñ‚LLJ7Žð2Ä÷ÿG Ž»ç(x{Z?¯NÛ4#4Ù;0íµ•ç¨d‚ &Šp<€xi 8€ÈWƒÀ‚8<€ø'…€dx=€¸/ƒÐ ‚¸Y†@aƒp8‚ &ƒÐT¨Þ‡àeˆ<¸~�8�ð¨u™'hmˆe°8—ð8‡Ð[ˆ>‡°ƒx=„ˆ/ƒÐL¸x�èeø8‡¨a„ø8‡ˆx_8‡Y="`=x+ƒØ‚ø †H<x#ƒÈ‚z_ƒÞ!ƒÐ ‚¸Y†JØ‹8dÂp'#<‰’’$Ú$tƒˆ]ˆ8ƒ4‡Hu€è|à ƒàƒ8>€ø7†27(×8�t€ÈaÉ~ƒ�È?x„ø3†O¿´7"@3xd£rô×�·pd�k@.Ù{Èû){ïá4�íy†4€Èûbð ˜>‘ò˜7ƒàY9ò\pP3Ÿ QÇQ8dÝP9@†O‰†L…`9À†O‰@lXdø�hXdø�lXdƒàw3ƒÓ…àaÈ9Ø^ÜXf†¸9€†Hf†¿ XdÀXk¥Ðd†hkƒ’XdƒÐ^o6ü‘S­„¨7ƒÐN8d†hw °dƒàƒ8>�x7†K‡è9p¸ÀàQ8dò†O‰0dÀXV ·!†À†I �Xdø�lXdƒãüËë o‘|chkù†Hf†¸»@Xk‹°fˆ \äÈl Ù'¥ã ¼r=¯D $ö•7ž“†vK5Ür²O‚ó9ô^o�-XOÓ�¸É€kvþCC.DEF[04/07/91]% €ƒABñTT*ͦa°ZCÍæÓ�¤Øe9 Ñ£™¤Þn …Ä" „ÄÍçÉÈÒg4Èàd % „Yá Ên2L‰@€šo2LÆ“)�@v�H$F#È€Œ. ‹Šf3 ŒÆh4�†™¨À^7Ž”iT(ªp3œŒ&C)Ì@a9D™„å!7› æsMxØ 7œ®Ç)á 6âï—ã6.e�ˆ/f{Õ,Üg£ÒÌÆhÕÇwŒ§C¹–‚ :X¯#”6a¡l�É òìs1Ì5• ôè]>$ „ç:<2‰wGXp³8eÓFΆø™ \D'ø-Ò¹¸`6J"Üž’�P�`cg Ôç|îì£FÛðÂ:7É(7Œ ,=€H†!†I †¾lXP½�jüጣ ò¨:*Š:µOØÆ�²ã�ÚÙ;É cA�Š#B˪íްðš èÜ1³Ià�9S˜¼EaP†áKÖ·�0X†ÁàHà˜!£�ó E¢hBRÀ8@ÎÀT9�#hè0ŒRÐhË L 0£Ô²·„8`ÂÃ2Ý)áê8/-Úö; 0ã¾ͨ“ö2�ƒKü7@ ä<ÙÀ<9 CÎ2½Œ’”¼C`ê»Ô¿) šJò6ãò¼@Ñ Ž7;ÁhÆÅL*¤+&’DÍÐØ×:!2p[Ïн{Uñ Ú†·tpÜý;ËòÆ4¡ÃHõNÉ H@9»«¥8¼¯pÝ_p0-RB6*ã»z‘8#Jö2=–‰.¯°*ú3 ”Øw}Xb‹Xð¤™e=·ÀÒã Öå¼=@ ¥^» ϸؚ?b §\°Ò¡ „Å#b ¯WŽrý@š.Œ¶T}Ãe_x=; ƒª-v�öHU‡ ¬š¤¨¨˜& â°!Õ®À¦&ˆ:`¾+ ®À¡�»2¿.òÔ^#PO“l<ŽRQ¯ÎÛ ñÜ|BÊhñ?R ˆÄ:Œ÷òó áhË#T‹G–мü/Ûô%l îtšl“BÅ Ûo 9párÙñÜš£ÎáÄ,ɯy”ø7f#4ÁªÅ5t ãzh˜*}`ÄÇvÃR9ŽkÒ¯¯»Nm=QTœr&&ˆ‚ø˜$‰Â.ÌzB¾�æùâvÆ"F†w~·PêÅ6rÔ¯µMFå´÷Ì›f ‘ @„w êÒ�;ÅjïCÂV ŒÈè¿ÆÚ£”‚’7…ñÿ´Å<ᣇ/˜À¢€¦ I à¸$!e\˪~eáÀ40ÊÂÏÙ_Ze*-€î È�±.$›ë߈= ¶ŽŸ�ó¾ ¯á%w7Ès•;M†Á5 Îü:rˆ0¾w Wè(#!˜šuÖ´ÃiA�Í`:DêI€9BÎY?€‚àÛð�E@"�œBhIiè4¥8TdްÐF òjˆšÌƒ|®ƒr]A@ŒeÖ–Rp#9“/ج´I®—Ìê&àfbz²veÌ)fóÀ Ø °úfd 3âPÊè{Kž_®gY�;Ï\ Õv“ÌÀ'*äÌï,óÎTz/Iå<´’t;d{éF'QÍ?–�¦—Ë·3¦ÍªÐn¶ÊãYg * ë2$%-DyT̈{ ¹0¶Òr›nV©h³Ãz½Á�¬r¡Ö‰†LXcâ~\¥,Á‚éËQ¦âÜ—~e½®5²\͇¶_"2KÄ„ wH/3bãn^¿ªËY„—f“@x'ˆ�˜ÒŽ$;¡‚(jñÇ@ÈSA)ú ·žÀ¦š ½Ñ[@ˆÊd±ß#ÇÆ…Sñ´š‹õEã�Ä?£U!¦Ie[ ÿ!œ\�m¬Í’k)#ƒfvˆ4èÀ×£c° ºa#ç`ô€@ úx3búƒë~i)e¥./†ãqÈWItV‡³®?(|»F÷sAÀ7Ô2<ÛC9<VÀ;°º˜Ýhm a¤.ö®»×ÃKj/„d©Î࿊]uZ!—»Ù>ógòcXP¿ÂvÌtÚ|I!¶>mù°_Î÷r¨~‹p+d{t¹©»Gu3µ322€A'`ža#…Üßs»ÍUùøBx „ƒs¨pÎðD‰,I:0_òH-º!_ß+ìEñˆ#Å)«`¤*Ð@$1Råýû`ÛùšÅ^&«—HˆbÑr+’`�Sü¿Ûñx( $£¸-@»ìˆ©š ñ+Èš.¸l¿Ô‚pñŸø)8‰?A\ ‡ "?ÁЉ@ü>ˆ¾?ø$?(¿@ü â=ƒšr�Ƚ ؆¾p¼B,Â:s'rt�ô$¯?a£ X«ƒ <”ˆÿ?°«ÂÛôA¾€'šd%¿C¹"É6) ‹º;q@>œCˆ‰Ã£ò¿8…¢½±� cûƒ¸±§*‹‘  -Ä* ”4À…AxÅ+Ñ4Ƹ�•¾D´‚¨(€"‚“ò€#ô1¶(6ƒÁ !@&J|TÂéèr‚„&TGŸ$'7ÜH'ð¿YåŒ"ˆÜ-¾Sì(À°¿à»¡# Ð0¢ùº>¤#?¾(daÀ¿@«¼EØ;ŒX¨Eôq´rÇ82dN§ðÂ��G±%Ç›þœrˆ�HGÃòÇP…*(1¨v T]¶ðº+´hÁÅp)'žè2ä} ir¢ð®�¿ŠTT?É&>Y:Ŭ[ŒLQªU�ïBäzIî‚p*E‚Þĸ,Ål%¤œA‚&#i�H0Gþx#4IÁaœ£¿wœa�¬¨ ä¤ÊX$ÁA#Ê�ÊĦA‚˜,š¨+9; 4«\²¨,K@¶€TiŠ<•ŒÙ?Œn ¤oˆô™D'¨&‚`ñÊ �”ªÉœ�DÂÂÌ KE¬QKP"‚p"L\„DÆ“H�D¿LÁT±Ë(#�L°Á´¿‚8&Á��IÔ ¬ ‚¤ÒÄÔÈL’�Ì;ñM”ØL¤ÙL\ÌLÌÒM0)�h�LÎË` ‚ÄÐËTϤӂԄ4°•t0ˆTÍLX)Î$Ï�ž¬ßM<ëËlIDj™Z DyRÃX¾úµ,¨ÈË£Æ#ŠÂ쩜­š4M¨¾J”ï�Ó€TðŠ;¹,ƒz&ñ‰€Õ,�I¬È KäÊ!*È4ÕÂêO�$ÄÈ&œŸÀ| À ,Å„£OËþ‚yèÀ´Wº¬µP'‚x'¸P:Ð�Ð!¸0§)€*Ià"Ðq:È3 ™HƉÕ‹¼h5�ÓÏù‰‰[ÄyЉŒ�Ù¸h ™R9 ƒ%”¸4Š’ 3�›0è5":I“ô?5М„t€¿#dW–ˆàM.‚E„G5?T‚Q¨•Ѻ«™ª0P=� Ê!Ãx…SŒLÓœaÓ¬ùG¤ÖÁ,‚Çĵ*‚ 'š­P‰Ç‚Å£ªÑ]Õ-S‚-VÈD¸K‘:�9Ò¨°�»P$¾&0í?ëÿÀ 䂼úÎm=��GýdDÄæ8„ÎÖL­K · ãô?ò6À AMekÖXK„±½h‚œæ‰4� ÒN•bÖðœÂÝEˆP™9Uûš4mÒ˜2‘ Âè+‚�tNkªÐ´zXeB\§Ñ-�Ný=ƒ¸8�]�X ØMlTU\‰]H ¹×ƒ1U‘W¹š×í‰UO?å„‚„œËU�L ËE–‚�Z‚LœU\ÿØÐ…qº";¹ €G¡èX$þÍTµZþE¡DÍtÎ `W¡Dú]ZþF"ÏâÒ“ÍÚ­ePëH¾´”‰Z/@9°Ú›ñKl ‚9�:¬F"ŒÁG™ùÏ™øÖÙÝÁˆÜ¬úÐ�,-?ÍœÅ:Dú¢Œ1ÌàÒ’ õ™Å”?Ö‚8"Úä„mƒÌ@ Üiè#½›EÆ\tûZmŒ¾¸£ÂÀÀ’:5]Ÿ*Ý“¾ýaœÔ$ËRÄ‚p!SÐ×]Ö‚!‚uÇ”LÕHCôWZÊO¤û]@W.ÝtÙ°BÀ7]×Zå@ǢĂ�ÇÎ�WGÕÞ´\i?ÕmW|$ÞçÝ­èϰšÝ�슆¿Eî^ÄA¬M¤^…®\íœ\ü•15}—ø:<ôpÑ* ‚I²¿5Bê ‚¸$%©Ì$ä‚ )(*¨)Q•XËåà@ Æ×,Ö¤ŒÉ¼XL6£h&ÂX`5Z‚…=%¬àxñD31ÀÄ“•-u_Œ Ãå; â ‚0'ÓгNÀX¾a€ÂŒ=îÌ@)‚½š‚%3vAeUోŠðü�yŒ˜Ø:bb%Åà½oHADà1îßä|Q&‚8'Õ>/²¶&ah°îâÎ!ÞÀ €,].vþCC.DOC[04/07/91]% €ƒAB€P¦m0› ‚h€†  æ3©´Ên:N†“yº ƒ ÆS‘΋Vð²£KÎê¶bj¸:¡m8’űìsj9 £Þ6³ì™ÈÂÀ¬(ê9Œ§“ 8£’”0Žm›!Ctå Ãyä,(Ú7ŽG+ �¬ëÄÙ¶£¤"Ž3í äú!O°†'ÀP�±ãt\9!HëàB#8Â9;qÎý6p›"�1ÏÊÈ9£é6r$ "·Cv6 #å,+<"íÆ ¼º ÎCf!‰‚H„‚z"Þµ SXŽa¡rK‚0Llq D<ÂŽã �#; …¹®XÄ�² ¤ú9 çm4Œc“0!Ʊ\'MFL{ÎÚˆ��Ê6¼1€b‡›ˆÇ=©:<ó¥�€f ´í�@8)XÂ3Œ¥c OʵøÒöŒ–Ú%OAàTBÐŽƒ}²êÃÁÄçNC”)7£cg1Œ­êxO²l8Ù¸ã¡Ðˆ"˜šbx›´-­Ë Ž<é ²ÌÆXVCxæ7ŒÃ£]G‡€^&†,Ë #]ð2Êâ63ÍOœØÚ»häDï°¯”3Z£¯˜¸ƒs*Í Pèâ:£#¥L4Á¸€@1ªŠã)ˆ•�C7‰Œ0¼3‹ÄÓãö9� ÈË,)L„¸3£tÏfhL©ÂÃ#pÂ6�'S`F®sjè¬HÃN) ³Î¹>O׺!$‚)�FÔsŽ‘¾ 4U£pÞ6]uˆÂå6ªZɽgG4pý�ÖÌÅ¡°ÏÂä1Ò´±-K‘ È:ª�|^Âí;\¦7\Ñ'L2Œ˜k×ĬÒ0ÊÍ�åÜõãˆÀîý´#6èä # a�`“ãj&äY&LÌ㯰2Òi½,×òÜa/Õ=ìS�Èy›­>í[b?Ô@QÕZö³ã¢ >fÔÑ‚L¢ƒpd5f´ÇU–• `±j eM‡!\IçkGa) C0ŠÃ;ç¡6"âÎ:[ì;3Ây’qdT¯r AQ{&ü9CØõˆ�Gî`…€@ôÉú ¤88°àï zŽya’ l^ʘo D-'ǬœCÑ%12'ÐÓâ© Á½wœxâla¤€ÀCXnCá� `€*�áBœ} gd«’uü�gs1d†™6¢–#qš:ÃøüZ�ĘŽ#P@Ã(xÈ‚~$ü¡/@êSJä Ãì’/`Ð5§Õ6»Ã©Ú=Ò'"èYÃxu’ñ¡DœÔC©“–…RHÇ8©$ãú‹©UµÒ0µ²Ø‰)B£¨&fLØpF¡Ðˆ ŒBT ¡H"…9‡pH!8!„PšBpT i*IÙÃC ”ˆ!²!ÄRÄJ—lJŒQ„è¢ùÑC6MØâBPîu£ËOF`0Ã¥ÒýQTFåÑÜá ¨C ¼fÐH\µ^Y•v†Í=’e[ *ӣ븅àÄ— ‘T8Å1±P Â`Ì0¦M?דF¡(÷‰’iu# YC’e�éPüѹÂÙêJ"lç¢�ÈðÜiÂD& «)qŒ”@{¤¹ .ä2†Ê:zü¿ �Ì�z“ •à £ôÈ4†Õðêe ‚¦Š­¸„uH%O­’ˆ­ªYD†Lv¦TÚÕÀäƒCK£K¦š$Ó»/ÌŠ8Õàʆpèë“B!ͳ··`)ýd|ÆIÅyÈé 1~'FèÇL ƒ®LÞ‰HÄ€‡LucƒfZÁ­«Dä]TÑ’‚Ø– ›ªá„<¦+–„®í¨�ò%R‡“N_‰ì=Ħ'Êr‡Á(?‡¡©[&xäÈü! ž¶22 WðuOMÚ‡EÆd"åÀKàä˜YáèeÆ®�»fP‰1˜Á d®§B; )L,HÀ" @ÉÒhDà€pƒxoÜ¢F×[ø¼ªÊ³pÅxÉ« ‡‘rG‚¹$d¬™’Á“} p2CJ8n�E�*d÷`n•„1ïÌÙшR·deçUfÖó³)z�ÉÄÆÁÍie17)…rõ@è¦rŒL(Dfí�P깕)Œ ó“ÂË|ÛV;‹·U‘„h¯a… 9ˆ‡“2ÀƒÚ=fÖ(®=(èb*ó0´ôÆeŒy¤ªh Ãʶ©ýRà‘¨eƆ½¸3TE¡/´Ÿn†tr–tØq#]¥tÇW˜qXF)•xV†YV}| ñ ü¨Ê2õÚO€·N=<Ø�]/–É 7*`b-Û_Û¸êÐ4Øž�8tÆ�c)Éfær�¨µÝûpÇ´"ÒMè{2˜¤6$\Œ,ØsC«S”âƒY� öä‚I8ÓÃ|m«$ª8Ðå/dnVs4U*†4ei"ƒ‰ò”R¥¨«QÕ³»r…u§E^m\�Tƒkpз'lŽYód@Á±hÈB‘˜d6wX¤k�0hw:@Uý/†§ítxJlL¤jÁ›6|Ð šO‰Á9'@äs�B�P`ºuÀSM®™¿»„óîB™§Ðu ë ¹>s¦²«ßk¬w¦]£ IèwOÜ7.<‚„€a h qϵ=�äf©*¼›/¯5#ÔfgIÜ1 É,¯ùŸ=èt7±¡ºÓA?*¿MO×v"ôk›˜_-æ<Ñ…ÆtÝúaX²r°ËÖ NâùŸ6dê³uÙJt±#nòߨcfd4Z¥ßÙ.éÞµn§°.a5˜(æl3Lw¿ÇÚµŸõfÌŸ²yú»Þ¢?¿Œë©­Z×—y™’МCͬÛõ£Â9áo(‰÷“Û™©[‘Œ ?hÈ!3ãÙ­«ý™Óþ·¨½Âë½ÙäÀ ï¿õÀ+ô$"ɯYú ¨!0i¼—ƒ“ÿ r>ƒ‘(B›�¸ð9x߸ùÀ,BŒŒ+¸!C ÜŒ¨*”'Xh �Û†�QTƒa×)+’ʰ¤Ël�ZˆÃ�RI£¹X£Ò>#ô$G&Óæ"Ó3¤qÞ&X‚-áÎ +ç°Û>’ÀÙ´¨Ù“¡M#‰ŠH±¼ ù�«�:1-–áÔ¾ñP�0TÄÛ—+ƒ(’e.x7º�” @ï˜ý íœÈ£³|C>ˆ±»° Ášä(�Ú&”൅ÉÑ (Ô :�q�DBkÅ:œ‰€RS®é¹Á¯s£¨å Úœƒ�ÇQ•¨˜åCàåCô5Àô è•‹9¹*, ²_ƒ˜æ‘ØšPǃ�E©W�@±®¹RŽs†¾èEE£¸üƒKÇ»@�¸ºHûÑ—Ñl@Xõ t7‹9Æ„9›¸:#ã¨ÃÁæ,h«¨²ü“d�º‹ñ¬Ëò‘™¼»hô-ˆ4Œ˜�°<—ÐY˃¸ø·XçÙ6™Ú»;«E;;XÈ ©ô;úÍŠIL“ˆ9‹ ÊÁŒê¸—|ª>5DÔ ‰AÓ¹LÊíÈËC±s=Ê@ÁYd=z0H,PÕ•~Œ2_¾ŠŸJùÆ�Ñ�œ˜ê¯Êð ™Ëƒ¤8$™Z¤©Þ$Ä!$ÚC$òV%R¥89%JU¥ W9 ×�[®:0®8û¥07(°ÆÈûš�Ì�ì(yâ“ÇaÛÌ2©ž!Õù9[ƒ”»•h:ƒ84bí‚X“2Á+®ØS@);襃,c�€Ù Ð6c�›£ìà­�1–Èá�Ê»ƒ�5“×Ë*A [ÎcÀEü§-Q Éi66Æ¡ ™à«¯±H6HÁLEHÚʸޤª�ÐõÃJMª¡1a:3`;.@ ºÁ1.Øì�hÚ«™¯#¹`Q«?òjª˜Ã¡ ©5|E¦ð¤Œ‚×<¹Ã(®rÛEL’@ _‘ÙŠ öƒdÀ%ŠYœ2$ƒ[ŽÚB&ÐÈ%â_&aMƒbc¦ÉMÄ ¿1JÑLà®LðÅ>ÑX›� ïJM:j:¡GŸ‹i37ªÛJ$n¼Ù�ˆÁwƒÌÛœ2QГH©&Óz x'Ê98!²ÁS ¬¿Œý®Ñ�qÉ¡‚Ž Ì2óŠ€²¼I‹/ꤎ„î+4É�%Kš°¥TÑÊ?hü¶MMÔ´Ÿ 04«\'ƒw�à6É«x±.ÝN“,1qƒÈ7‡¨â „&Ý-8ÀÓ‚}B¢(0ÉàÌ+šÁ•!ÉOys&¡€‘+’à¤è« çY=Ñæ©”® ‰Ÿ¥:ÑÊ\S1¾1íKѳ\_§¯“£Ÿ ÂÊ‚_¦:�k§œš�µLh,GÏ¡·ÐÉ—t¨`79Ðö¼›“(‹³ŒtS")²) õX�å«ù6À9¿ ±­ÊgG膻 .&±Ÿ¦Â]Fâo âp¨pÙ‚’i»/¡Ã·C¯‘CÓ—(åËqR+‚"�X¦¡s8üKÕRÕ¸�`>ˆçF˜3ΰوÌÎР�˜BË�P7?¼yi�ªÃ�èМTJÄ�*d.BòȈÈFò÷Á¼FW±U {‚ƒ«ƒ³H…HÕùõ¼æ‘üÂÕÍ̶ ¸u�É?µM8‰<[‚ee ,¨H†xÂÒµ¼<‘q®ð;zク­i�LïÆRÎQL‹5š‰R%#åD`±°]J‹׃ÞÊ"û-`²¸p8¬…‡<(‚³ÛK¹–Ýà‹¹(&̉eâ^ÞEå^^�ÍDà鲊\¬Â•äa”Ô—ä ŽÚ¨ ìV™:Ÿ©Ý›hõ…à•�È%ŸúŠ¢CKЕP$¿’PÁ‹¨ƒ¨1©éÚò;9µÒ)ŠÙ³¨Ñpï³Ì˜@)‚¨!`mà�v1d+ƒËà®Óȱ��ŒsÏS�R¼EŽW–Ò@p….ãlÞÆœ�ƒžˆ6“fI¸�:Ï´¼‡y Œ ¬Ÿã]‰A"u*EH"`¢0 =žµRî €5ÔY bÏK!²±& ž Ñ‘HE¨)‚H':=@"ˆ�…‚€$‚`"‚•–‘H0ƒQ&ŽÅrêò!q+ Š[êÇÌbXæEµôٻ߅ vHš� M¹¸*VY« åÒ |&MT4ÈpÌW±t<�?»þKн‚“f‰èf$8ÌIê�$�Ì íÊs›Ý½:‰u áU“�¡ÛI¸L ŽTΚ•håŠ è~�è]¹(Í=ʽ çiÐ7ŽP)ÞZ iÜÒ)ÛòÏ"¦–âŽ>í2RÖR=cÓ�XȰàê:iu[á6@�0‡i›ž€R9N°ØÀ±ÛÀÊ®%w�D„Ÿ£°“#Œ;¨ú¥¨Ã`°ášœÃ”¡˜À Hœ€*œÛaŽ ¢]¦Ë#Q/ì‚$èâqlR<‹(²kfÆlvÎËú<ŽÁ“>…WºVÇœÀ¯lØË Ѩ@§øƒ`mßm†Ïm%Ì#n…¡áDáA¢NÕì¶Ö‰È ©qŽX•-BnÓfйƒ`›ŠNÝí�mŠFÜÊ&ìk`çí6ßíJvîïl¦Ö ¦äî^Ìnr«‘©Gn‰µn˜†n¶ÎmŽðîÖüávÙ§þïjÎðmîñíBamZƒÑ¾ðavöežæúSo†è =xð˜ðï¶×îÚ<Šè;ïÖíïîÛ Ò2pZðÊvðÞðí.%p.Éð>þnè‚„€ X̃Íxî&æŒÉY*90 4ƒ"L>l�‹ôµˆ7ï¿ýì÷£R8ˆp6�ì�ñNÓìÎôð÷ñî»›«%Дs7–PÌ£éà‰üü‹.ˆ#T&!à3.è3‰ü 2o:$Œ‡ózZ‘*mŸõ$‰¹…npç)UH( $‚x''`˜+‚H*n‚˜’Rí ƒp˜…’À6ñÆç¦_LOMqû¯K r,>‚er0“rG.Û%ó¨âqóù'sÖ†�lg—®ïó¿ÿõÆz¢L D—"öYrƒË�ê¿7ï8ö 5<¿/4—0öÿ2 73*)v’%¼¾öõô8îmWnnÌ2$n`…q¨ð÷$³hÊqôBfÎm‚¦næÿAçrt Ÿçž‘]¾H ÆuÑØÅ"@ó¨ú°ŠàçLÉw½¯•i¬ƒhÓ‚¹è»ÿ‡àÐEpóœ¹(°½lŸ¥Þ« �ñÚH¾'W‹<Íá^òû�ÙZø]—�8*Y�Ç“™,ËÇÏ4”½ÞÛÉ? 9©˜7 Ò‰WIøY›¨£9½Û�ŸüÍ‘øç'ªÂÕ�Á”6Õí+ ܖ™¢à d”H& ±e„ɃY�<õ¶x9Ò>Ÿg„U¸ô5¥8¨3§o–0å÷™ŽÏï\½ð9C€#ªt'UT‚6nf÷~ø.rŒ'w,S%ôŽtÑ�ØýÊÙ›�Ì¡AOt­×˜ ó‚Ö?¥:7� ¥OÛÚ�9ø°ù–!‘k¿ƒl¸<%ÖH2ŸšüšiN—š±"È®X$9Vª…˜Sz¥! ¸ X3›ƒ(å-¡Èâ�ž­k�C„�ÀÇñYM Ê°@e�â‘¿ñ�úÿÚù$"0l¡ÛF�ÈñɸI}Û™)J•Ÿn½°š_‹4PˆTí�¡ ¸ €ü€vþCC1.C [04/07/91]% €ƒABñTT*ͦa°ZCÍæÓ�¤Øe9 Ñ£™¤Þn …ÃD ‰›Î“‘¤Îh:#‘ÀÈ@J³²A”Üd—ž$òq@Âr™Œaø$Fi7͇S!”@"9� ’q EP©U*Õ�ŒÆ.«™¬ ¨$Œm4œÌfXy„Üe7�Nb Ù¼äa3™i°C¢“OTLÖ±< T$“I%¢,@ – 7#Ñ”X ƒfŽÌõböt8ffó5øé‚©Ä#©˜Í ©Øºw_£Èd²™mÞ÷0 ‡RMº€Fa«LQžQ³™š‘FŽX˜ÿ�É6ÈM'L‡E ñ›¼¸˜ëSÎHDƒ)†®rïøAY“ƒ¤9´žÑ¿ëâ°3=Éb40¼ÈÛèî;Ïxñ€Ì6 îpÑŒhª.ëA(Ø› 9Cœ6º¨Ô&Þ³#L0Á9΂©<£J4³áÌ3îèʾŎHÜ1CÔ„�Ê:£’Eb HKs±Â ²',¢$ÌJÛ@ˆSRÕ¦sÎÙ¶­»r�Â�ìÄ<�­ˆÅ ´cœê1 ãdv0ÅOãv6<£‹œ´t(éOã€ß??‹2µâ@‚)‰†ŒcuÑÓ®è@7 #j°Û7 Ôä·ñ{ÒRôÍ%9Ó´<D½CÇQ«ixÜÚU3…*ó@ªJ?`MÕTã…Cm�2É5ßgXs’ »@5„·.Ëôa2 b˜¨ ˆâ(¦Êˆ¢èXäÏsµs "h¨! bÕÞäÑcˆ¶& 7Eó}Þ»ÇVTÓÅ]�ÂØš ˆbuØË_�òƒW´xUhÌÖØ~"(â—v ÿZ˜’']wn-ŽäØS‘e‹ðïŠb¾}bÕn0à¡W¼$¢VÜçjTU©‹ìyc*MB7iéÖ ØÒŽZ0AªÇvÀÊò¾Ö„Â3�ƒ«<èã£õ­Tƒ(ð™¨8Ó jcxDz@pæÌ�Ç‹ÎØ ›š¿O”ŒäÝÍjÖ:�ö™¿ @©\Œ‰Ã; ß…rÜhÉÇò<5Æ8Ž£}-†W}aEÑ­…~ÚDANö&é³êã»5ë>—l/È@é6ÍWhöƒ�e’^0gƒðZ)é¢ "{ÑÍö’Ì)ý4‘²76SÞ|C?9Nq%¢vãR).ý˜ i¤RIÓ¾·É HÙñ#᜼ÅIFƒNòã%…H«‡ƒÐhåÓkm$4:H hb—À�™ù)2ÍA¯–³!Ȇ ò£%2ñêìÎdhÛ8u+H�•s”ÌÏ)‡\aÌ;–³¤I£��Öw7Õ]�#4+t¬@—˜ƒ»Œ’Ž:MÄs^ãnO�hΣäÉBHzµ ¨E )eý³ô¾˜Y¡ÎæŒ;†‚0VeœñV†Å¼hèãA\lÐ-…p¢Î*Üg‹}.4„r$�I áŒ9ÐçØ_u@}φ `æÇÂÀA A)ºtôl_kó áØ‚òÂøc ¡�/­@@ �0 'À‡ÕðRÇS4n©™Ý7•±A¨ºãQuÅ»×6Ó] ­ \jv½=ux¶º—ááZ‚þØS a­«‡b’�Ô¹uÁš])Ô”jZ”)§,iL)¦†«Š¹¯�1e¦Û×ä„£jô ˆÈ³k(,Ñ=Ñ:KÅÆaéIÉ. ¼`d¹º‰�15Åš] ij‚öù€gâ.!I›W ×Ü«˜m.pnº„«ÈT–± vÒ¸ ©5¤!ؼ³æ–€Z A#((�•‡Â‹ÈÌÜ ’öô"ð\$j¢—þ{>æÃJÆ ¸Ì7Ü#=�m÷¤“ Æ`\ƒpy¹¦Ä¥X¨ømÐ1¡Ó}[�Ò~‰�º“„76ðžµÕo�†Ê‰érÓýé|*/ÉLk=¯HaDäÂè#ÇR`Tr�Oï†å¶%2™R=‹7"§ðZ O~-¢˜ÂÞ>„uÔ!Hx‹RR6’ÎÄÛ+mܵš”ƒ>r’™ˆúTü@<Ù™!Ö Ì® éAd‹5(óã ”‚Ï„î#ެ Àn¨ùÞ†eFÁ�B$mÏUh&Û—z Ù�=$ÅHHtÉ[ÒÍ*TþT“M‰ô7&šcg¼®rìÖeó­®“KÈÆä+_^—\‹U*à‹b_ÉNš fyŠ›1Íof¶,§Ûɇi}^¨Õ~áo¥Í5L`Ƌۄ´ÑU‡t—•Ǹjx ;iÕ�ƒ.×aH§cJ¸½]¦œ„Œ‚¤kZÂÃ'·ª1¶n> ¬LKEÊÅ0ZËØr.¶õ~)¦85#¤­bÕ¬Þ9Èö¡˜0ÑòsìH�þIY¹!WË«Æê Ú=ÐÒ8MtÝ4P«‡j�Ë䃚rû&‰¶ÐðC¬Ä‹‘Fivf2ÄÁí�õ PíÖslí¥ßlgkay(!.#…vÂ�CÔìj=9ywƒ2ã¹Aï‡*auKÀk}㺛b-àJ¡÷ÅÉ“Ç'ïUÃg ¾ß•¿ LΡð:Ì2pC.¡/�¨!£Ô$Æ“çIW I™oÀ‘€Ø÷=šDš¾dž‚¤µ<j>!¯× Aƒˆ�oƳÀø?UîØìò3…¯À—œHy¢ðnøfeÆw¿œ©gÓªœ—†?jooº=¦ñý˜’Vý—Ý /ø·:#à‹Iýç¡4úßwÝRXü<ÃÀ� ¥ ˆÁÀÔÀ³ƒ(8À:½³þ¼ð¨8&09;à< ¥#PŠ*»‘'»¤�ò 8“ø¼Ðûîø9À³î‹X¿Œ öBˆ®ƒ´>@[Í+ø<Á;Nµ¤>@4=|(ƒ<>èûÄ>ëà Ì> û"R ¼ %ÄÐôBˆ9ƒ¨1@;Á�À³cÀƒ¬J�DcÅØÌ§“ôFdSEä'&3˜ö^c¿Ò�"è€a›Í“a–�+‹E9 ì¼ìs-Ñ…b²îx@*Ømg¢5œÂk2ˆ/&‰ŽÖo8Z�ôÉ|lU"ev 0ˆ§%6¤1ZëÊö9/«ú©kÚ˜" "p‚&‰"¨;�È`èŒc ¶7Œa@¦+Š‚„)‹A`bý¨C˜îº �ìW  VCñ G…±¦$‹AH|E Š3Œ°Ì6¯ÃœD#ˆ±à´"ÄñKð0È£cé Hƒ(W%ˆ2h˜$Â"£D;Ž2<9 âŒED +Êc`Ò:LÐÔÐLdK)@àT3Aa� ŠbC(’ŒctÏ$… ˜†'IòŒ„Ê c€è9´H܆3#JÓ… ­-L⤠Ò(œ"&AUIL´0DZ¥·ÈU C7.•0Œs´‘ÑÕH£IO¬ á9ÂÔeƒ0 Òt{IÊcm“#Nôm›gÊ3§?Œ£`æá·ðl»ÎŒ)Ë3,‡ Ñta Ë‘¼Û ò|†:J¶ô±ß2,¹&³Ä¿„u¢™qAЄ%]). ï^¢#´ŒÈ€íøÜ7¨¨¤W: cFþKWK>HÍøÈ4£ãjë‚Î7¯y”34ø˜Ù’ ýA /(ÈÎþŒ¹»pô\ùÖ4Ù5½’dÈVyŸhÊ7-ƒªˆ� «†”¡Q4½2È�-øÆÓ¥!莸ä³ (Ù™­c˜àÜ[~âŒcXA±©¨ü¯‰ µs¤¡/™¬«œâú¸ç¦††…À¬"6ˆ»pwl[›’œrj2¹¡ò2¦¼ö²6Ž&ö…cÓ“Ö¬t¨: «š‰ºŒÍ0Ê˲�öÒ•3õ“ø8ޏÈÊ-†"èz‹�€NÑ ÚØÆäˆ*ßKÈAëk(Š'ºŒkböÓÌŽt….ŒOÀ#ã†à1øÝ¢sÓ.ÆÝx«gx†�P7’C©ÃsÏ%å…°`óÁ8"z‡¤ßŸ3„K� w'õ:ä6ÝHË.C|ˆ#>BxFOÄȦØHÜ.€Muµ¶ÐÜ� y¡œ9CbÔEˆÁ…n —9P_Œ‹Û š‡UÀ�Ê|diºœ¢èIâ0�bÄ(0»r2�L„DÕáÀˆ„üÃ+óC¯Ú"“Ö}ÝK| ¥ï­F@‚PeAŒ)rÇe…Pì„<†Õò–Z ÁT&„Àž˜* ad©…`ŽX ‘!4#„ÄI$$‘S mƒ-õ­äurBÈpQ&ddŽ“ÒL#­²„oâI_ Pu»«Ó‡ w%À;§F>UëBÁݬ)‚ÔÈ2îV¦ý\‰œÁÕ° \l-s+´ÿÊdÓR¯ñ.… ©&Â�SîýQµ`©�«“™W+zñæ{(a™\´£(Ã`bœHŠrNcE?ƒ‹ ï¤Ñ2´/=M (5Äs~M�ÉfNyp@àè˜�‰ld7áy9DØ9òt#))\}Ø?ÒÈØA �0¡Â¦D{£í˜…18vŽe> ,Ê-–§ÂÊÏuS˜Ó‡*ƒÃzà´:·‡Ïh ôÅ–‘¦dÖä*D&š?ZlKœÔamh\„zÒB‚ 5…¤m›-âZDÃaj8§¶ÐJN1ã`²¹™ ‚ÈËÀ%¤e´RöFâÙp©±FŲ[ b�–#í3¡¶zÉ ÀÔ£(iùMt¡˜Ï[X` Y($¡Ñ�$.Gƒq÷À¤™3àÈÌHrW#æ,CƒÂb)+«yp0Ì -Í»V4†0Ep‰ñ®´jÑ øN ælH‹‹a.A¨K¡Q ] Ãxï)¸ ):õJÌd@%Ò—·VöÜrS|òw ýà ©uŽ5ØgÐ6ÝÛ†..�fºÿÊLuÃAbA-d6Y@Ë….-’Äuèa»§mðö ³¸–ïQÈ¢pÉ€Á‚@ Lš›�ïðbJá¸5Ñè¯_„~®|¦+Pà­Ã32FR³JÑZƒ!ro °á§7sJÛ£rªöœew[—(ñâN¡“\ÐIé[)Nð5ÐÖhƒ]µ° ¦†°y—µ�Š(ús†‚CÐtä$)®°&Th‡A„6æ²ùVâŒÕš˜¤•Ô^L"ú·†§Òñïõ®T!¨ÕÛ[u¬ (‰DÐeÀâ ÃYx 9§à �ÃX+Í·¨+Tk©- |¬Üü¦.öp½a¸6cëÖˆùÁ½@"þ²S¬ƒË¹œ{ ¶ÝüÊE*�¬ÈÞ3Kpx' °ÂCc‹Ðv’b7�˜·nï ú‡\†RZÖŠ!2&‡�ðWl3y”á!¨¿ÛpBRÒ¸g9ÃðbjTA†¬+¬d±@¦zníûÕÄ;�f“rrZØtÅ{K Ìp[Ï6¼q h4Ý�¥3D„Í ¢4 LÑqßèêi¤t™4Òª^§´©îRôÞ�z•¤^Vá¯Þ¤z˜®êƒQª�eß+€”¡î?°¶ (5|ð<`S²67ä#™_M­1³­àÛ}¨ˆmíÁ¸·&ÂÜ÷÷šL¦öì]D)e¨¶:Û^‹HÙ֧祾¯f«IÒó&Õ”.5±`p&EðÂ&0ZÊû÷h›Y^œ éÉ÷Mg®•ª%äÖâR"aÏ1Cèâ/hÎ%Ñ�™ ƒ fuÁ¹%y ñÌ¥cK%èëÓ~�¹É ÌL¢u9¸ O É¥¯ÔƒoªÏLÍÑú–„u?�ºƒ†ÊÅœa ‰H6”Љ“ ÂêÔ¢a#/@Ñ/ò?à¯È)�jÑjð¡;"uŒéSŒÈú¾@®£ Ï�€ÙHž0Ób¢ ºÙ��kr@øâÝø*Û&ª¤žsg¯ .˜‚`�Ñš h7 ��.ÛY¬x-��.‰� l�˜Û»œÁl à “˜¼¾€ÜAL&�Áié¯P »ël p ¶Ø °4ƒ9Œ‹0¾Aó7Aèú‚ ! “IŒü¯P Ã;¿ŠàCœ‚l=‚Ï "ü/Ð×DkÄ!õÄ8‚„E@BéÃüGŠäH»ð¿€LJ‚LE?òó@ €HôÄPD¨'DSý/¼MÀ”TÅYŸEk@£óú“ hC¬‚|E"€4¿{–E¤@ÅÉn¿˜ßÅãõ‚+üw#ñf‚\_ø!CÓÓB:�ô/ÂpB„%°-™S ø»� 12À;hŠÇh.€ -¼#h‹* >�:>¢ïFHÈ€£m€¢ ’B›€:ƒ9�‹!Ê›‚'D;ª&°ßÆ£ü\9C° p·£{¤!Ž ë &Ô!Ÿ0Ú1‚ê҂؃ÛÉ\É0ƒ`Épƒlšƒtšƒ€.�ü�(ýÅЦFl_ à ¨ÿɈ7Éà¼Iñ?’|?£ôÅé(F€¥Æ�¦F ×J4�•ƒšIéJteJ„‰H'\Š„­�ø.-ü¦Kè�Á à @Å `Ç6ËÀ¼H =»u=È…=Ùt©Ù—£á€R*!¨7>;Òƒrž!*ÀšÇ�Ád,|  u ª1‰zw@ë� ôÊA• Œ“�ø—Á2Û.¬ jÙÁt cñÂ4:âÿ-¸#ƒ4ÅG‚90¢Ù¤Jœ¹JäÅH`ÂB°�Óaðä¸Nk^K ÂŒ8ÄŒXÆ·+s£ËÅ@À`í¶ ø:¨9rý¼RÛÎèÚ½IÐNøÊ0dÜ�Œ¾à…>óð?K§àþO i«( (Øå2#ä=ø dÖŒˆŽUžx¡Ð= $ûˆà2™H¢˜8P@q’P`8 e�ƒÅ ¥¨…é”�µ ÐÜ&Ðõ�…Q=,½ QH9>ùÏU Â�ÑQí3H8ѵ �Qb¥„…ÒUÑ™  `ž{{3sßÒ­(PˆÓÒ)”�Í$�€R¹"‰íS ÏÑ�3?m �½+·½3Ñý7ÓU.¸u6 `S+‡RÐSÕ:ƒÐ3Ó¸þR Í&RuCP}� 9Rø9=$�=DPmIŒýF˜6R� mRmJÑF 2Tx��IQ•OÑÑ•ƒ˜:ƒMÐ@Ò UmЈ6ÈåR�•IR]m_Ñ™”µYm+VÖEƒi˜�³ÑŸ|ÎvþCC12.C [04/07/91]% €ƒABñTT*ÎSp€Ã4›Œfé�Ê 3M†X@¾d7Äâ±s( R à’£ ÂrÅ‚Q˜Üa6™f¦#©˜Ì[�K£¹h‚&t¤Q�R¨4µ … §:Q˜ß27Uj†JDR-9Ä ‘ŠðÐ^7ŽbÈ]P©CA¦Æm0žmÑ™ñÈÒe¯Íó³¹ ÊrŒ™M‡9å¸ëJ$ˆ$Fá=+4�7!T‚›H3 "g ˆÈ@!ˆ¤ò4¦YMH1'*È E[«`«òXÄj9U�ô£ °Øo;à„Bš`ƒfkŽ%¾€ H3ñ1B UZf"qœý@ Š:NFî~ÌûG1"&³ŸW ìœúGXìÄ„ Þá§O3@§ í’æ0¬­àÆ7·ð@˜ Ã":Þ¬(Ê6ާ)Ú¾#«Šá++pä0ŒcXÊ:lð@´«ZÚ·³ÐCDºPØ8‰�zÕ„áN”�‹¤wÇòy"6@Ò5aƒÞ'4¢È(£ஃHx†’sd rÀT…qä|÷€ÃKÄ4€HR A#NRŒ‚Iª€(5s ¬ì«�ÆÅ� Ú4Û ¯Þ†&ÐA 1Œtþ›ÃÃ,Ó, skâ̯ٔ ‹�€O*JÐûVŸKOE@•RÈõCU#-\Ö9:ăô…8“¬†…¦A<˜º+#HΉ¸é˜Þ7@pè4Ù‰KÎÐÍó‹JÓ‡ªÂ7¨XNhS ¨˜&Ln€ l�“VÖˆÒ£jÛ„Hb� (ãØŒÙ�ÊLà#®l©X“�üK²ŠŒ©‹¼®ƒ˜æ”©)žœ9ºÍŠUk'Z^Ü%éˆDLWSg¥gƒP!ˆb@‚)&ºžç=sï¸Ô/S؇†8"�Y4SŽ´:k�“°aHR>i£Ÿ ¢À¨"ŠBpƒtì`&Ê6lâ’' ›v©ºÝ{›ªônïhA½Uê?L‡Êj>f‚ÁY¾”˜£#@«hcLÌ;&#HÂùÖv§1³ŽƒÊÏñz†±gÀ^;·ê©Z�© i¨Ôçãëº:<µ¬‡ вP”õ•Ó°…$Xš·“]v²õÀ�  E9³ÀAøpAUÆ•�*‰Ù-«Pè`ÔB€OsŽ@)&ÐÖ]rdV;µu)B³l !!À‹ë©‚ =80òTÐ(iêhš…�Š×$j'"ºfµˆÚlР9©§þ¨lZ`Ñ” a£! Ü•ÆßóèIÄpQMÁ(�#Pœ I á9y˜Ó4œ"°" oò hVÌs­œç.³²Ñc¸ !é±fj~HQ/ ¨¨�"`À �èr a¸7ÐNJ‹Aj-ˆœ¨x¥yt€°9×"gM�^�ÈÜ;DPÑ{Æ!§ â‘�rŽd4€€õ¶ ‚UÐ; „ÒbŠ áŸdÉ™S.ª1.å "îXЀm'k<"wÚ¥ ŒTz.5ǹ&ºAecf$œ�HˆNâ3}ZÁ¨Ôš¸·büa%0‰™·~cK«ÏÀø=rjÎp ad(ƒiªkâ„°êÔMeA�zÀ€6d’ò[‚T’ñU­Ä¦ÀsR0|¨±¼(BJÈeô‚»jìä K#'$1¬©ïÞ Fxt¾™OpàJJùJ•Yé­WšõžÃÔˆaÝ­Je ¸8‡Vœ²¼DÝà ~, ÿK‚0#Mñ0¨ÂxT õ JeSƒ‘¶”FæUœs“Uù›~Aœâ†öAá’çf²VjÐÉ«T¤7€ðR ¿[רm§‚Ääx*±ó 誾š¸÷õC]vt“ÙøÖø³ã‡¯™‹>ú6nÜ=€°¹Úß`´ƒPq6јI �5 @ЮÂûtášmeÈDÓX¤*'´È5‚Údq˵@A¾;d%c`=A@+Û¸ÍkcDjOëZ6†Xß_#ý@Yª ,³–§¼-iP�Û�045ƒÀx/ ã**ÊÈJèdš¶p-ƒ^ Äuƒëþ‡fùÍPT® µ�Æ+ÄË`gl^Œ‰‹NƒGO/ójm€¤‰3”ƒaÀЧxBm±xÕä@ Ø2m ööà¹øóƒƒngø™J^íC!5ÔÊŠ‚‚k@M1|!ËÞÃZŸ„EÒ3® ‰HOYíof†–;"<Ö�Ç�$ežö|Xb R‘ò �§©÷yäšÜÒ ¨d !µ¨¼Ý´YYú?Hµg©¥ Òµìž@è’`sÙZÚ†�’�B–l %AÏO˜-"u ÙÑ¡È<ºE«/0=½ ‡¸ ÷°`¢…±¨ÜfáFŠ)cGQ-”{Ô¾ÄTw6¢|͵°ôn ˆ ­ÐDlÜšó£f‡MŸ¥¶Ž�ËUÕkÔã«S¦¯Æ['ZƒÝe¨4Œ=‚€«­H �5Ò¡— x�£~“�/y’ ÈChpÔš#<º)Ń„z6Û´Çï#Bë7zÏ{9Ì„ ÊïH³C_¯³CgŽA¡/ÞëäZ_xMÿOãÆîáÛLk{AϹpu º Ñ‡­(�7G ¼-}¤�1¶8ƒŽ#‘§½' OV@ð<¥�)Ð#^&AÀ‘¬ô‰¥é{ÜæÏ¡éÏ«r˜(Ô‰$e>¡ÃMAHˈ’žÔRuâë`¸±94R¨‡Nﯿõ^!«upk¤F¨‘ŸÙnÈ ð½±qDnø/Pám*w5jýg{uÄ•r¦lB®ÛDA¤ÅîÞ_8O6ÜÂ9¦¯ÑŽ?J£[d.¿ÎL”æ ½‡ùû„¾ÔqâÛŸ�ñࣧœ}·Ë ÿJ.œ¸XÈ(m,uq+a�Ý ~fŽ@eýA³¸€N]«¹w²8w³p†ýÆn>Z9”¡BŠÉD#À7àŒµ‡4I ˆ3x‡¿¸èˆˆ&[“>œ½¡›ƒø*±Ûƒ2cƒS9[•‰šº á’ (8 ˆÇ ñ ±�˜½XˆÔAÚˆXȘ’î$©ˆ˜3™Á�Á‚��à†‰�(p&&˜+”�ñ  " %�¨$ñjLˆ ”> £»@›H¦+ò°ƒ(ñ,³«HÐŽ"½ PÕ„€ŽÈ‡ +Ñ �Ȫ&‰¾¢¶,É,>pH@œ<·.’ê,ÉŸ²ªR–‰¹ªúÀÁ+,7,0Кqƒ¤:C±^�$>ƒ,?�<£¼»É58èY†釵#Ѓ?E@Í� 1êíŸÆÃç�à cü˜Ù‰ŠSµ|Z»-ER²`*`'±ú:#üW‰’ê³òšÃÈá@i÷–`ÍŠÈ”ŽHÈ»Àò¸@:·¸âÞ!*§(Ç¡b5ZÐ “ó�À�›øT0A H– * Hcù˜8ê#˜ìˆ›—.k˜Z=›²‘3ƒ‰›ô|­ ô;P«EØê@Ùž#H‹SÈyk52ƒ"Çk€ ìŽ9Žƒ ¾*²Þƒc�l�”¤ª*H-‚H")΂èÕ1:w‚p”•Úå¢ 5²[¨£Çô› p#˜"‚ .’Ÿ1H”ÊF"¢,4 £à…&ø˜�!žS‹ á ÀÜGÊS> ÊX#Jl§ÊŒ©£¦KiØ!‚` ‚˜)ÊŒf3' ˜ƒ˜É¢•›â2C$¨Lv‰¬¹‚pš¯ùÏDzŠðšËø$³ä#:%Ç‹°ñ—½Úƒss¦ùgµÓÔx1µ4f”gF�쉈3вÄ(È+uˆ€9B!&8¥@kd#;Gˆ=�JfÄßžlÚ šI87 àŽ¿‰�øŸ8ºëÍée΂–²ÞÇd¬²`G{©"™ ¬Ì£!ì«"õ­«  LX6Ê0š¸:ʼn¬æƒ¢ˆ²Ê̲Û.²û0ÌÚOœÞͲ^P<þ[¶ñ‹7Lø»{N¤ÚK)æ”Ñ�ƒRcƒXꦸù�©º¤‚�͈¨7´LM Ås„@7¡ø¯KBg‹Ôî¢(8»ÂŠŽj�!„ysl6Mz+‘‘ Ó¸€2k­1ñ7b³(0³<‡ƒ(ÅXH@ì¼xª£¹Ü¤½@lÚ8PLÚÏáì¶Dý§ôy0ÌPPŽŠRÈ� ÉŒ9¡²q�»Bç"˜ì” »Q9ÛMí DåŽìšÊ3»A°ëƒØ‘Ni´1€)qÑŽuJMD/1Âaà …GÐ9´ MJQ KˆÈ=»;�µƒs‹@Ø™xñP¬?ƒ™�Òƒ3¦¹‚Îð:9„?‰@Õ+ )Jx*œ“7MYkEH9³ÇŠL‹G:Eº#„�’£Š¸»Œžì‚K�F Ä®²•x‚£:Gê˜Mà3Ô;)Åq©›÷Šôp܃(;ÇÌÓȱ�°È˜£$À¤Ôô•¥8ÄA$kÂÉs?UÜD™Ñ‡ |ê�åY4l#™¸ÅUHÍŠ ‡Â`Bt()ˆ±�D+BÄ-Bã›TüÚ‹«IªN* ¥(hñǸ6ÑìÃ(š ´ÚC8£¶D‰6ÑÓLxŸ4_õ‡–}=ºœÏ-yû£:×§‹Ê­¢o°jÛ±ºÜ ê€¢�“ŒéŽ9M7äu­üÆÏá¶Úã-û¿>IÁ1"À…"•£/2,<À˜½µÚº3£L’Ÿû:‹E�»ÐŠ 9I™IÛ”RŠ«„Eþ�Àõоƒ å—Â4p¨¾Zj€3d˜1ȪUð�:FˆÑŸ Ô M[.A#ð™ŒBAÒB¤:D¤ZF‘€´‘šI ’J\ Œ¤ËÁ<±?»RÑ(zU*’º¥y6­ŠM R’ ¯5Ⱦ\Y JîÜ %�¬ÙŠ"Ñù¬Íì�OB�É#eÉ8²²¥]ˆà±Õ…;A…åý¢¤ý›Ë¼œIÔ¨ê£ßeíK¸*È(,¨ƒ£k 1hxS†jí¼5öƒ�Êd§LžH-1Ôý_®`T§‰®à}°ñ¾Í ¹ˆ}¡ƒ¥$¦½ŸSHÐhèRÂ?žh‘¸‡Ô=Ï­='JÕYå³(å!ÑöR80¿œÃ€P €9—žvþCC13.C [04/07/91]% €ƒABñTT*Èc˜¸‡ƒ‚¡"™ÐÂt2›L¦ã €àa9̧(”H@c0› †S €îhŽ™NÒX±æ�bÄ�ÃxÎ7‡¯€Øù �Ø@ƒ"ž0ŒIhA ƒ{R¢ ÃÈ@0@PFŽÃì„;@P$Y@À0Æ9ŽèÚ7Œˆ¸ÖÉÇ¡[;�ÈX Â{‹BðÈ@û¡‹FöÏ0@ö¹Îƒ¤=„NÀ1�ðb¤´90ôµ.{\46 {h;3r7¹Î,0‹¢áì$ˆÎL×6¹ÍdàØ&#JZڮô2 ôRZäOƒ¤ý â@’&´ý¿£+þ*�+Ù64ê½ /Î!#:NÓÅ#JŒ3èé?Ô¢}?- |8…@4pýEõH# â• UMÔ;£W+C“¬ì³Å¥ZÖõÍ’)W‘� –å‰PXÃ3ü@˜®$Š‚‘f9­Užéc¸Óh6�³nÅR7µð×Ïuµ/\]WeÜ$SòåSyMöƒ`•$�£lĽ³Æ"2Û8%r!ˆ"�=-½´-çV¶ðÂ:�ލX¶õ�G”eXÕ1Rˆ´Í^ÆVÒ*]wmßrT7=GžFÕ>‘áΔJ7¶�).R˜ß9-šhØVEf½ã|0º ŒF*ËÍÁ`À0Ÿ ÕMéW4 mõ~O�Üä<�Þ±‚Š‚�Š* ¢��­á•^IDCz0�tm£ÌA*g©¤ÄŸ“Îcˆñ !ÙÔl *påù†7ÕaÒ=°î"Ä#|bp�Éõ%"zã C¦µ¡ î’O‰=jæø•‚ìHƒJ!%¥ š@V ÐR Cb@!Ò­Ii5 …ø8ÕÈcT™Wx$>¦(4 SYÎ3fv%À °"ƒá˜ªÆ9”Ë’q®õ¾Úa AdjÂ@¡Õ"_Š´}Hà¶7ÃĸPé¼ æ 1–Â{ 㹦•í¤† "4;I‰8â³³tKHÔa±’3F‚®�C øm§ñ¡ªFŒiP@ö#D8âéj %Uì¶Ô‹£ñNR“^(‚y2&Á‰=l.u dJ°xRáä6™9ß&�qªžal$„@ŠxBêT>Á0 „ Š'‚:�óòuÎÙæ�QdÛ7ѵ*"ÉçdÒZ^%^yÄ™° §ó8[èÍ´´fÚcb|Q›Q2"% B¦+å*ñ1‡9ôšüå4‘Pù¥T¯M"Èa‹mR/!ˆÁC”gDP*TBФSÔ†§PB€Ä Ae\¤Æ’®zß+`4ÍYÖb?Z#ÊÒ«d¬Ô8²Î_%A"ࢱ¤À²BœÃ­o”Ò½B„ÃII…œ—×D_C5r*ñ®ÉâÆG¥Cªþ(‡PÊ“%)E²†T+ö”«�Kƒ&ZxHË2�qÙM þ>žÔ;a�b#:a˜ZðõjÕ�YµºÙ€@á,C¥n¯M�Oæï@J±V |\7ÇX+-gD5¦K4%Ð�[\5@¡¾B}�p. ‚kÄöˆýåh­¬Û†¢ä.J!N­™6®YdŒiμwÂó¸ŒMôA—Ü1_“÷JYÝÞFöHÒ\R/r+€!VúÜQp¯ña“öZa { Zò'Vœ”¡€êj0þ¸÷e±V 0H*|7³tçU5Ф^›Õ1.ôÊ[ƒ¢LŒ¡²†‚D‹ ¢Ò³´\Œ èú¨Š‘g´’0HRÆA6O+yDL©%šE„�V¿‚€M‘HºLÙ'3ÓxäɬÀ£0Ô™™¦sŸæL¾ßN 9‰“®+ê .Zk|uQHÑg f.”Ž 6Rjq°ìæ³,�Éáú©4®êº ŠEZPú³ ön¨IˆšMk­çC×9˜�p¼d 9•ׯ-…±Ä]òa“T5*Ĺ²:¢y¼$áXWžïý£´ö«êÛ £î©¸Á}¯ï«~óí³Î¶_Sá¡G®uz‚i¸Á¤oF’”+êTÏ\Ü�nr“9yeÿåÚ›˜N:½8ë 5æºã]>«•Ð.G:lÖ¶x÷ÕÒC'Ké ˆØs¨,ÃÁ�¹dcë (w�ƒz¨>á÷Pøû?B¹^qØÁy j½Yë|?®Ìž†Ðî?€`ËÕ¹møû‘ìÜó¡uNÛ*ϳóÀ§ÚŸ‰â{}&@ÞþÂgê÷G— ý1¼&.¡ëM'ÇD:>úúÓò:!…Ýý‹Füέòz—Ëí=¯�q~oÑÌk¹™Ñp—¼91¢1Ÿ—‚ª¥‰{˜{¿µ#—ºñ›>ƒºg²8‹¸ÿb º{ÀÙ{&Â"À¨1•Á{@°4‰¬òm@ɘK*�!{'¼&Ä'¼+¶ƒ4Rƒ”SŽøðÅ\VŒlb Ø »ÊÆ¡õt6Áq•0;FÇBÇÁ{ûE�±Dc®¿Û·?ìIÀééÁ,|ƒÄGL}�ôA<:A4!c£’2 KG<9A@2½ G ò¥'0‹ä5“tGѱÅ6�¨¤y8Ö‘T[ T5�jæ´ƒ¨ÇŒcHÒ|(Ðû<œ>9Ó7ÓÒɈ:FK¸CCð¼ÈHÃI ÈZð%ô‡ ¬�Èl7GPÒÉ �6Áx4ƒ�ÊqKÉQñYfÈ’HH¤3H°4HÄ*ÊñÊx.Dv™‰\I«¡Cë¹0kº0yž˜9 @!c¯‰;á¦J;ç�A ¡ ܨ¤y ø•Ÿ˜;Ÿù| é ð5�j� <Œi "�ôÀ)à6ƒpÖÈ9ƒœÏˆãr+üu°Kš¼{�!4à €15ªq�4²¾$ƒ—)H¼{!!ò‹¡ÈÓAÒ³ƒ\ÚÁŒÞƒdÎ:(Ç0ÕLìÒM ÑÍÓrC�P3˜Ê�84;,€4G�[[MZ�›¹¨úNkF0J#Mò(Ìš~ÉjÏË‘rÍT>*Âÿ¨¤�´"_N€ŽN™Tr€¨‚ºêò¨R†(t¨I‰ÌLÙd­Ÿ6©šÌìÿNq&PJ†ÐÒ…Ðá.ĸ3‚—ƒ•ÐS�O+`ê(�9X'‚0#ø*eQ”%‚,¸¡¬D½›c¼‰»² !$@´+ÊÔ¾¡5¾¹ë4 : N’“ÊèÔRr^Ò‘&½èÒ Sÿ\Ûƒ{DÒ†!¸Mû猈A©Æ9±E¹Ä¢ˆÏ= æ™Ú¸0¡¶Ê>0ý+Ò€É&ÃgBK�=ãij:‹8©’�'[~4m?¸tF’àë~Ša¸š¶ÅÃQÊ#"Äûµ%3NS §Xû5Í3§=7 ‹,>ªÓM5œ�6”¢wÒ@ÏŸ(нð…S°7¶Í<#Ü3EÍWSR(Ô"¶¨4M*!­>%aƒ•@�ARÕB%x–Ô=DŠ05Ôbµ±Ôƒ€?ª8Ô …T³„UãmTÜù»áä´ªk(Ý"¸HWK‰mRp«•°á�T#ýUÊdiŠ©Œ´Ò ×àÛÖLêBD�M…•AùŠšñX&EØ8 œj¡¨5”\r×t¢Ã¬ÛÐHH€+LvþCC2.C [04/07/91]% €ƒABñTT*ͦa°ZCÍæÓ�¤Øe9 Ñ£™¤Þn …ÃD ‰›Î“‘¤Îh:#‘ÀÈ@J³²A”Üd—ž$òq@Âr™Œ¡ø ŒÒn1›¦C(€Ds:$ã@ŠŸQ©Õjâ#Œ]V3XPH5Êx:F�ÐáÈÊf�P fS˜‚¢ 8Rfclãs9HŒfŠLÂfµ…’qšI!Á£™äÚt0˜…™ÌöˆÎeÒÛAU •ä@H ”ÉhiŒÝ«Ð+†ac³$giÚÌîÜã«Îœ •VÛšnçë7fÃ�_�•ËæbB®(€AŸÐèËe2É4¨B)–‹¼¯ Ëå*HäR™$´Eöä5¦�{|Ù6Œà@Û�ÂØš ˆbsîü¿mkxÿ7èTá»ÏãÀä@ðH£?Os˜ç b`’'>ÏÄ=�®‹ãİìݨ0‹²Ë3 Ó‰ „r’6…ŒèÎ6 C€è9GÁTW# ’ŠÎŒr\�'H�”}&Éa›•#�òŒ˜6Žk¨Úø»q4*%ƒ Ò6�#ÓTð0c«¯*#¨Þ¹‹a”ΫC R6 *Ô�=5.’俌Bäº0pèþ5Ì›µ3`SÀîJž2ºÎÂH;‘Å&RÂØ®(¾oSØÝB ôhíÆð³¨ÿ(-„)Œ#×TÆU\&áSðÎ7ªÒ£aŽc„¨2�ã5�9C4ú3Ê�ò2;S/r¢8£¥¤7[#¤¦ð9ªÐÍcôžð*CCÜ7.SëHð%‚Øb=·Š/Y(à�Ís-µoJƒ„ŸŽcXÒæ ¶¨Ù*R£Œ—Bµ�âÞ”¡LJè»/ Òð©/ÔS£þ¿áž( ‚K2üÐìRD¨Ñ•à2Œ£€Ð7£!@SˆÆ-ì%“å9\O_?ª’¨«+ 8d…Ãبhë&”1†I&ž‚D€D€J5vþCC21.C [04/07/91]% €ƒAF£©¸Ö(ˆpA€ÒfMƒI¸Äy:aI€îh4›#‘AAŒÐ)…™å¡Ü8@e6̲ ’'” G£Ñ„. $‘9¢{?ŽFS ®_B¢K èuû01"†³�Z„ ¬‚ †Sq�æt…C+UÈE|SQ‡ÓN‡S‘¸@(Zi§A°àt9 C±¤ùG¤Šc×+ #6Œ&Øå`e9�ç!@‹$e3˜M‚™äÚb7›0øè4"Á±Á §SaÐÒd2ÄŽyL´,A(0œ„­îTÊ;¶XsYÌð‹IM0™" Ñš.e2kf0Q¸ËÚ:ÍvkÞ �Ââq°\ª >#y6˜N’Ûäò} æçsæÓHæ9¢ã8@ñ¼£s¸°»Ï´6Í"Ö÷¦,Ûø6«J–šÁ­ ê2Á “ ; 8Î6 KÛ|2½#C†â¸ì³Ýh‹® ¦$& 2há¾Ñ@X b ‚) ‚8˜!H˜²&‰¢± ¢p‰#É!œ*‰²¨§ š"¥J¸º.ËÀÆÀŽJˆF™&�^F±¸�â…é„ÐÁ²‰#I rB‘£“È Å4³ ’Љ +àÊ¿EÃ,�A…rôÁ.Ëâ,œ,%AÊ»¸3Jä¢PaëÀ<�8Ú“Ñ5 ±Í‹;ã8NQÄë.c*ëP† s½ ƒ`Þ1ÄîDU8ÑC”å¡ô@„ž„�™Zǃ’P¥Œ#Ö;¸c @33ª]¦5ÚV#H9× œYáôƒ!È¢`ž!ÑJ gÚ6£‹AÕê5ÁR3-JM4ÌÁNSÕñV°A«KÌ5}ûQbX¥5‰ÚÕzÇ]W‹Å|îÄšÐÔ`ôš 2H ò8HpÙH`Ï4áN ¹3¼VõÒRs—fb.:žjâæùËJgƒœ`°¨Ús4ÚˆMCÑ6jˆ£Pa�{`ÐùV]ÌØÈä*($d3F‘´q1ì3K¯€ÏÛŸ ãHÓ5 SJ: *Új7ŽÌÐÍaŽðñ aáH©ÎôØ™¦µ®ç:S²Èn ;v‚Í.$ˆ{ª%®âAõ£)J’EõÈolþû¿´µ_pÉ AÄñ|oÈí5íIËmë0ÉZN=7P!ÝÓ0jã•GåVc4ß8óž•�&<οF/ö&³y…�î!…²\›'ÓÏk ¹öŸݵ}ïàqC“Œ î8¸•p áŒéj¡H)0ž´d •¬­ªÎÁíLo…A…°“‚pT  ôܘè6ÈP°…—‡HšBØC ˆÜ)ÂÆÔŒpp¦à7¦–ÊÔ¨OÁ)„P¨�"B !j– ÖƒkQ=g‚´®¦“ù7$¤Ue,r ›+Š�QIFÜèQ›¤sˆè‰=h&ÖÖ›^~`/&˜¢¿££‰§(H•²®Ö‘f áÐ4.å÷ZyÄZ1�±1÷”øÜÚs�Œ;ÇcV¬y(qñ8“F’It��nx˜Hh/"ŠŽ‘•¸#Gž—ÝLj/ðYë±"zâ%kÁ !„˜û‹l� ¸˜+U ®×i¤~æà7—†öDØn à€6™Òje¦˜r:«¹Y<Ƕ­ehMu/~m¼Õlç\ù0rL’ºPª™If0Aä…ž£‹<&ÃT!óØê­õ)âª`Šê©õ¯ž„—¸¹ºã“Ò€¥‘¢k(‹ ’ŸJý' “ˆg�Í Ñ§€ö茂�åà3ÀÚ9M@¸2@åGSˆ(#$lÓ)8ƒ5“”L(qƒ¡‡£®~�Tb'LÌ)žmâÒó”Ò)Lø"ìˆàÓÁUM¦“ø‚Ù=C(i" ò Λ£‰Nji ó1T¼³µ$W�“ÕŒ…ÕÕ¢E�²Ž~¢´‚,�){6,ÕEdÕK0D-Àn«Ü¿–jôùU/ ËFÈ7XžAð>1ѰUjÚ>3¶¬Ùrø€ˆ‚í$†�Ý8'ôŠ*IUh¡•$êÔr)85J-¢û{{o}XªÅBz3VÊép«Š4À"²Ž~ S’r„<5“êN 1;QM¾3½°ª!@Ru`¢ûK`PÀ2’ a®‡Pà Ð(*„*¨´Ú^ÌÜ¡¸W ½ü=ˆ1=Å8­}”`Ö« ”ନA’a�¡ Sï¼-yÖA,�•\«lšâLLq/rn4�Á†%vCs¼à+*bpƲ2µø"Džƒ­NA9 Åä1×üسy rY©jƒ0eŽŸn�6G'][(œ\•Ú (8‘Ùƒ4e )\ˆ”7SRf³ KÒÉNŒ” #nU:C?ìžœC€oBá…i8beVP h&¡ÀÎpäes§-:d6ýX+ÝZ×UcY4�u¯4Ž~ f¬Ø‚Ý®õÔµ­ȹñ@ÛM‹ Zº³(�1–øµ�7µ ÊŸèÍ à8$‰Z¶ù¦Á‰—šôŽD%:ÿÂt(ªs£1¸�"o¥x°´H0‰È"‚›Ë“‹äšJeÁÉoXŸÉÂñÄòºmZrBÁ訲X«Û(S7²I‘ô< <�èˆX�“&(»%›—1Ëu*²þ%ƒ”‰Ø¥´ 8@³ó@º�1D«·5ù¤®G�7\@¿äSZà Éñ–‘»ƒ`ì°£¢zŸ$ E0…Å¢¯ ûîD×XÉA¤Åxð0`­D蟹p‹«pµ·Rá A¼#‹Ù*γÄE0H¢5�2ÁêŸ�ؾ„DÃóÆKfŽÌ`­è5�`ƒ½rU0˜€'¥è˜%Ôw¥ìKï-TÁú–©ͱ"e ‹'n“Œzc ²�DÁò=�‹¬ºZ‚* [Í‹0‹ÆñòƘ3F©‘4ÇP:!7*+>šÐHˆ#\�É ¢ÈèÂ¥Šüa™X&H'Ù'¯`7=püÂ^� 2µ@ŽHûç€0£Hr¢ˆ�„‰.Ü¥"|“žCÊy¤Êh#BÀéñŸ˜Dà6Ä´d !‡ÊË".›{ˆrM¶¨4œÿ 3,ꄃ4˜(RA ë ‘]­)5¨‘®ð‚à7<´œü—¦0ó·O­ù ŠÝÁª¶³L`2¡Ÿ‘`1’ö%™52*R¢zî¤û‰¨*'ªYbÌk8°¸…Êb„Ì >38�B±«,=“9È„§”ž‚aWʤÎî³›8�Œ×Á8�˜9¼Xá½pê¬éí¼loÀlÑhÎÇDP¾ij€ÐHà€ˆ’vþCC22.C [04/07/91]% €ƒAF“1°Òn2Š"Ü@ ;š &ÈXÆHL" Ä#°aA”Þf†œŒ§C©ÈÝ#�ÉLƒi„èc4 B81�Êf c2@0¬W‹Œ¦É”p &9šÍ' ]6c7›Ž�“©–ž��†q¬ç"‚A'Æj˜@H ”Éc™äÚn0›afÓ�êø,'Å6ŒÔæe0œ§SkýìÊ,MÌfì‘8‚M"”É%¢(¬e’&�Hdâ)8‰¢ÒˆE,�ÀR=ì-”ÜH€^*¸ÜÉP¾�&3BL™AA°àt9lvb�©¸ÉÜn®WM÷$Têµs`ö”e¦S¨ÕªåzÁF>É#ÓY¼æw=ƒt(4:,Î�Iƒø©¸j’¨«?ƒb²­«£r¾Ã,‹2е; RÚ··k¢ì¼0 ëÀ°l+‚Ä1Lbv¿BÌ“(Ë Ã4Î3ÍTÒ´íH@Ñ´­k^¢6£cnÜÂMë ã9TkŒ®ƒ¥º±Û°í;� Æð?o ó@ÐCÔö$Ï{ž¶Ã+ì‡G¯ Æû£€CþîÀM”Ƭs¼Ù¬ D¼MzšÙ6Œß5M�"f=oÄè7 è0Ê9Pj¡*½ 5Ž=©²q.r3¢¡(“ ð“OÓ)!3±á(»Èlù(�ZÏÓ• ±P”0ÍDQPÛñFÀïKñXRUDÛ\Êé�$„c Ì8Sì;Ž4ØÖCd7Ž£ ái@–�P‡a;%hÚv« 6[¶bÉX¶=“GË)ªu<À�=t°€ƒX0�w� PH Ö2Œ£ƒ1¡¡tÅàaÝ6ˆ¤Ãƒ’9‚`’Ó4b«!#(¶¤anPºŒj}òµ�C‚Y‘�ãÊ9­3,ꮲ!��.=˜$ô Sà"@2‡£nyx©Xµš$éJV–¥é‹Ù|NˆÕ#ž¸ª �Ùæˆ%‰ra{æÐä¡Zãèš*…§YÒM³Žˆ]5§¬WåüÆ„áO[ª:,m»z3±»ÊÅ^Ι°ÐÙáñ„nWíþ�íL7�ð`6ö…… ÐBñ[ÀøS�†lŽ`r!7EÒ9AoSÎuI ñµ5Ä9¼hZ�ã’žP¡â:�ûr†°�W›—¦`U`n|€QÊ!œ£z¼·¥ºñ|· Œ³­×܆aÍ•î'7-í0ÜÇC͇¿_AÖHC—LÙv]_GûuáK±u.ÑÛ8uÚîÝêŠO0‡Þ±ƒ�o¡/¸7”½iyçiô½GõÕ€}¥ ¾µÒ°Ü15w$·‡V—c�Máe êC€(u/¸Š7Çi Á<1u@¢;�O Ê$n.ݵi �ANM8’RÐà¡&%ª&Ag’ô üM†ðå,BgÂøÁAfw Â'Œûã8n�$4PÁâ'¬H¢°GQÈ7:çi™¶ÊC'@î>€hÿ T!P~A—É ÇS!B#ÓbÌl“2&L0™S.fLÙ�3æ…´\‹ a®ÁO½zÉi Ži†¸ðŠB)’ŒJ÷†6}(ÃŒ…�ä6 °äûãCjp E #Qä‘FÈàêÉT 0k¨üâÊ3…”ÔØ¡ŽcÈ`VfS�` ÝK$rà’fä×(ÑI@N /0¡ÛigÈa‹ÎÉÜ˧ƒ‘ƒÑ�H§H6öœ_ )†àzÃØˆAb`‚“Æx o à�p†àÎò„6 }¨µ5vDc(¥,Á}¥ ¡ÔI aiD»çƒHRÙ¤€€¶‚çiIˆÝ:D0†xÙQé˜a “Œ1Ó†žË£.cåI ™ Êd ¹„‰ d6Ä,Ö ¥ck i¥5Ú�? ‘l'òi%3T;'‘Dr�ËÙPŠåZ-5¹Ë˜ž›Š’ l01ÖC_x*±'(†ÂdèÈ�´>} 6Œ¤Z�Èøƒ0u¬u¨V¦¹BˆêøZˆ\™Fd¬ˆr—’š_L ä�'±ÖšäE÷Û�(,Äî·³Ð飩Ì{~zÀ‚H\)þ .$ä{NÒ¬žéGDÁê1�N4YÛ?H`q ï ¯•ðAiíI…‘ßK�Š‚�C á"ÐõñLî½S`$E‚6=NL¤Ç¶ŒmŽÝµ'mÁåà£4¤`�äÇí`n`ÔÊLWá\ÀQ¹ €¨ÝIÔ?{]òn/ˆ7†ÉD|1 º+`ƒ °6 d¸tzó.®–‰Ðœ2Ã`èSv<Ä'cÚñ¨f\©É)zòàf%LÛì𠡦P7Ê]ƒÕjE”¥VÈ9aƒÕ[oc,�=Ëà­Ð³ æNè)ªL<:`R ˆ°no$JêÙ jç,%â$Á†Pâ 2m·d§0GˆôÒÞl«©ø0ÌÝn3ù ¢”hè�9—Ú ëÆ¦ËY-,Ò£¦m¦+ |c9úDižtÎÓ™˜°PU@³[5e¡¦ÛUš›uCš²ºõ ‚Aè( ð€VÍ*>3 ,~™©hËoÒYœG;à&dØ6Q�×õÊVë�uwX<Â�¬šè£•£4r"Àà¯u˜)M¥\k—ÝÓ-î¹’a±žë„ªE÷à~(è%á| ‚YšØDu¦Ú9êb夫šŒHtXÕ,…†"‚ï¥!AÓf²Ü½ÉIa’סÐŇMÒÂaG-ÇİòlBƒÇ*€¼ñ#^Îù”¶cüÇ™ônEϹ¦AÁŒ‹¾„ 9'9äüË”•�Êoº¿&棚Sž•Ïz tر›¡tìá˃.­µµ©u®T¦ë�n“A<(@’eAì<4b²Ø­îÝ7]ë¾wã=7Hès\]‰n-+crxÒ9ñ]öTqÕ#Y Ý(M†ÞHrØK-ô~—šæ@Ö Ðscùl1óãÌ0¬‹G æn‚_eu«. ÄÛ·=Jˆ–ö|på³ÁoÌ¡ët1–ܶkx⺠´G@×EÃ�aÇß0vÀؾdÓ‘†ëÝ\hûÛ¡ dd¤ÈØÛö±öjþ¯ÃÊ¿›¸Ê>€;ܼpö£¡ÍàÀ �p> C×£Pü={àŒ3é>¡´žûå¡«Ò�ëÛ„„¿ãö"pX¾ì©›®±!·!‚˜`-‚ë1ª©ãAˆå˜ù«Y�t,k]›Á»»{*!ƒ™¶âmB\&½Ü>©»>ÃŒ’@ÝB`!<ã –’AÛ@Á|1ŽT2Â#T7K»�ˆ(x&a˜!Ô:"zøÈ0«7ƒ» x3ƒ�½ª±Zƒ¨äƒK¦ºy¼¸ÝCÈ&C ƒh:–0‰ð5ˆ�4ƒ 41CÒ1ZÑ­*ÐŒƒ›p9h„‰À2ƒ"&23?ƒ›ê° Ù=[¹ºk³·“G:;¡º+¦%°²–1e,ëž/C'2ÁD2¦*IpƒºÕ ‹­rñ£+²Æ`:,¡±6³Î™�: Ñk½™n¼« H˜0ʧ v¥ËÙ¯h2:ᙘ:\GÜ7»�š–Ai0É pæ('‚0†ƒÁq»¨#Ⱥó©$„Gä5¹ˆ9/D™h·F,‚-ˆ´È°3ÈÄ…Hd‡HƒŒqp–¹žI<�2IœÈ¢\É„}´ |À.qmÉÔ–$‡–¹•È+� äx’¤ôŸÉ0 K@¯“”�Bú¯ºü¯Ü¡t\\ÉìŸÅñB‚ª„°Bü±ˆ ­d³rL‹‚üCª£Ë�Ô-’+ĹB¼`@él»ËBì½Ãœ0©š�‹ð3Çé°LL7Ü€,t£1ZªTÅ1”y‰Š�#,Ê *¦4Ê£Étœ´¨¤©Aäu©ÙkÌLÒM4ˆÈ3‹,Tl£ª˜ÍaZÍpˆ±£±í´Ëª„jƒ2ƒi7M)Z“«”*«¯81ƒ 6Ex2ƒÓø4ý@ÔpÔ%QÁ¼€3ûÕÔJ F1<’¨ÑâT�Ô´l9D¸³ù»0QÅ;Ôä€ »à=ýP£¨UúÃŽ‘ÐÕ=T¶}QÕ@¢Yz—ŒÝ”ŒÞĬKŠ·NsQEh”Äû1d(Mù O„TEQ·P@<�dë±LPÅ„YJ&EP9XQaÁC¹ƒ•aUE.¼À¢Ùæ5=UÕm��厜exÕ U›ì×J4WX¢G�£¥—T5w�M˜¸´Ì*Àˆ)šŸ–cºÉ”NRš«×  9•>*:º0–4iûUôN@¹H©{ø—‹Ìüu6½�=ú§Ùð„¥_1�2Û?Zc5¡ÙÚ£Ú14 t§zZaÖƒ•§ÚûO™Õ©¸‚ê¦x4Ð„Æ ·Ú­�Z½ZÚËK¥ˆ§©›§ �fF� –3Õ²ÚØA¼³ƒ€â:#´Û]¤7kc¾úà€9ƒH=íX€"Ç—0õ“EÀ8ÝÐÝ2¤;d—0¤�É]…Ò$µ�ÝÉžÕÕ§2 dŽqN9½¹4ˆ8]ÒQ9±9Î�P’Iú¥ÝÞÞXß^5Þ�1Ú^…«Y ²\i¸�És 0¤ …ÌĈé:YÅÂ5±�ÜÜ·61¾\øö&¾7ù¶£ê”Ò镊2°½ô!‹ ‘Ÿ˜µW—‰‘—ò™9”šÂ,=”Ap‚ÐHP€ÌÿvþCC3.C [04/07/91]% €ƒABñTT*ͦa°ZCÍæÓ�¤Øe9 Ñ£™¤Þn …ÃD ‰›Î“‘¤Îh:#‘ÀÈ@J³²A”Üd—ž$òq@Âr™Œáø ŒÒn1›¦C(€Ds:$ã@ŠŸQ©Õjâ#Œ]V3XPH5Êx:F�ÐáÈÊf�P fS˜‚¢ 8Rfclãs9HŒfŠLÂfµ…’qšI!ÁªÑ„ÎegFÃIÐã£̦Ã�^ ”Ëf3YÚp(@ ÏèKe2¡ŽE)’KDRî«s¦ÔÉ„�ù¦ZãÓèÃ0ƒc•ËæbB­¾�Îl1‡!ftÙäónNg;©´Ê[íð¸œo8€âu7ÜËc.;:ݨ HvÈ- Sº0pèÎ kî1Žcƒîå ƒÅ 4ïSî© ºX-†!³þ%�”C¹(à�C躂¸ÅÈøô2À�2Þ”¡PC»/ Òð©/ÐSÂ$j,s¤JŒ·#È2cÈÚ/¸Å ÃXç*Êãª-.·*˜Ê¤À3@ê«Rê�4C�Þ9Lã2¢2<#å: ƒxÇ3Œìlú2Ž�°ÄÖÍrl1+œÎ5²ÔÎ†Ž“ü¬Ü�Ã(Ê2 ƒ²3ÒÔÀè7�j •²ä–S£e;/£CLùJD£¨éDÑuˆßYªÕƒUR×¢µ8Ö#€Þ­Pt-„—Áv5WaVr]H…7T ÍXØ(ã3ÊCkÞ2ʱ²#¥RLz¼¯r þÀ°jP@\!T“I—•)-8Ðø•zï_*2á +èÈ÷º°=AAPÊ8hp“^ˆPÂöŒ£l°�4Þ6„ ,9 7ÐÜ3ͳz66Žc:þ;� 4 7Bþ1¢¨º22]ÍÎ'Œ“>€ ècÖ1f>úç`Âv“1iêÐ×hLH¬Ï]hÊàí¬Wâð3èÖ¼Ïk†¨A„´4ÍX´4÷@�„©Xí#¤ú:m•å¢4�¯†…Xï»øe3¬\*‚4¯ïXѳ­6a(ÌÎŒïNM-°Ö3Ôž¤ÏÚ0ÙÆB›ÎÏ„�£ûôÒˆéªV=0ínî£ÐÚ:ô5-NŒ»ÔÙÌhÓ„ÏaŽê9�å�lã…g©ÌëÇBö!ªWƒ£c¬ïjŽã…ìû~o!C®j×î>ã®ÕXüþ€AÚö?7môôÝ„�þê� ÿ%¼ÃÀÊ�R*…X¬pf Apc-�ü±À"ÌÁ™$�†H�œ-€hHâávþCC31.C [04/07/91]% €ƒABñTT*Èc1ˆ¸‡ƒ‚¡1!°ìa6ÆÑ´@s<›LFó`€èa1 ¢ �Èr2œÎbÁ”Øs–ŒcyÈ@c7›Žr“qÒ-�Æ1éÐòp–›ÌÂI¸Èi™΂yˆÕ(7ÏL§C¢m8�'“êÂt4˜é1˜ØÊ�(¨Ôê§}\èe OåÇ#‘„óiœÎç¸HÔœÞt4`®´±�äèr:ËM5Z�]2ž)¡¦‡•��/7lÝ{=C¸QæúM1ÏPnÕƹŒÖr«:Ï™ '#È‚dg4ÑpRãfddÝ�¯&c©º¹¹—L6û ÒgÉÑEæÃ @b«ñxæú–é?Ý�ï7<¶_1™œûÂ/sšJÞ2 ¬RÖ!z‚ Ȱæ5�#j¼;9®€Úþ%ãRþ7*ã8@>‰r°Á2¼÷®)øç �„$=Ê(ä›0*+¬ì&ɋܻ-*ÄzÒl¥ �J(#CŠQ“2Á€T’À% ˜é qÐå#QðÉ 2r.» bèvr”¨Ú i³À:&¡v8<ÿ;J2›¾4Î!èa=I#»À–ˆS4É€5‡³«®3†!DÅLˆÐS@ÑlèP74oˆáŽ˜SDMR™  C¨ÛPFCHô2ÓP MΘ{?Ô´P[¡�2N“°zûŽ“²pVU8>Ös Þ:Ž�DÝ+Fî¼µ9Ë“ªU".ÖPATYµ8µ8œú9×U8 gÚ6œk+Ë2ÛÝ;[´½23ê(P2Ç÷½f5Uuú2Xv-Ž6Y6ýP¿(¸@Qa%X]òÙZS¥½|a¶2Ud`“¶'"©‚è{�¯$ÊËäê[é?ß �è:ŽCrÙ|\WÈŹ .c™�tÈ ›‰¡6ªº·&î(ØãݺD¹ Ä*ò�&írâÜň¤i×~�y6³èc{HÊ´ÛxZÑÎÄ:l”²73Ñ T�« Ö�95Ã(Q"Ûé¾sMä,½}ZY Yen‘´±k߃ÆÇL0A€Õ�↞£KXU®n𠢡TxÜû¬Ir.7ŽîjY �‘hѾõ f›=Ê Í7ÈT®ûº,òd�QJ^ήöÃ7q ÌyãSn’­©"†BØq3î”ocIR›.ýMÓ£Å?Ù³!MpoÞdgÞvì5ïÖùŒJ[¥4д>å›û´óÝðŽU#øU ©V;5^¬WÁî*è<ØV +xÁ™Œ†Å •[�°(.»Pàô É£ƒo%ݤ¢ÄÙ²‹\¬é˜>…¢šžJH8Š£®{±%§ÅÔ:¢€ë Á&A¸0†ÐÊ"{ ‡#ÂzÉ8w<ñD¢!ÒKB¤X3£Ð ’QÅ?‡\4‡^ÒBh8'‡œ�BX�s¯{ MÝ=·‰›*fM5=»â€ ƒe-È&—ä u}Iì�'Rì�4�$ØH@èâSÚ�„OÁ·4öàY@]p„²0HÖ÷$ ú|©¡É†ÀÞKР &Ðóš×K/g�¦C¹ødÑ�TB8ÐÞ :HrXåd<"á•ÖÄûâ,R˜aœD¢bOŠ1"h†Y§‹X ±j.ؽ# Œ„¶3F‚\M,l0Q½­�Gc�ú•žàÉܼ¨H]�’G“‰±âžø8`§Ôvm陲½'˜ðãâM”ÄÈ›©)!äYöor>@Jy%%ó!7ªù4 @OO28E âL’rå u'QÎ7FBËडš“ÎÐ@ŒŒGÂ@¢„€‰G !âZ¾¹4FÜi\ɸYbñY™, ÅtÜ Z{OÃÉeu¾gÓ5Ʀã‹Úmóý÷£7Sgû?“Å,Ö>EMY{Ò8X,áÂè<��•¸ºÜöØ\/Op¤=®äéðnµPÚ9бVƒM\¬ŒÜ8Sвkƒv¬ñδ¿öó[Ü%³õ¸-Ôû¢ê›ª¥y™ÄÃÅe¬Ä¶UÄ6=*æ®hK,¢ªÍMÏupƒÑùT®H…ÓÑÊñ’9¥6†Õ¢Ö­D>®¥¬°ÆÀ=»¡Àƒ%€år£¢ˆÈ)R®ëåª5–Áô¯ShZ¤¤`UÊØ�JJÄ6³"Af+;{˜­ð¯öÁßT‹}Ü�®!R²WT%€-Àw2B—å@ôIµXœBvpZíh ±ÅÈÛŽåÙ™%2D†Ë“;¶¸68¡ÓXRBJd+Sj„Á\[ŽLH|ÈAË"0êŸú¦\!Mß; ƒa*ˆ ‹@•˜ Êìò»Êx-}áæúº©ÀsŠ �…µÜµrî_Tà*ážü—“TFh 9©L€¨O€×^$h9ÌÁfe4Ýœ#Ðà™èÚ¹A5~¼h1Ôжk(,##VòP/‹ÌeavW¬›J”’¬é#…¹þ`U×�Y+#W šÕ2erº•Ü÷Î í��@{v)rxÌ£™Ó�t.Â*�¸_jÍn{à´–Ê:í‘݋ȸ/Ñ ØEÈ3lS'±ÏŽÉWx‹h,”n6LÉÚ;W&]hÂHN €§Yh½Û»÷Ž„Ã§8e ¡˜X¸Çœ9Yä’AˆQYǤãƒ$›€sö6ÜmÛ$ç\�’.&æÈ¡’Ò0êsïµ£gíφ=$ß$tÒäÚÚ‰+l¯)9‡–G”Ö$>ä á$Üb~ù¡[3äÕe$¢.cm[ô)çêãŽ{ ¥ÏA+ €/K~e%d?HnÓßœëÞV9÷O²©%ô^YÑÜY=ýo�«ã×ßGPI<ë•õféÖ2OjNöî�ØA!׽ϳ¾“¯{Èz%�ðw@<Uðk›­s¯}üWŒÞ?£u~ÏÝü¥Æ9þ_¿Ωæû¯�ò~ã~[.;~Þ—²ùÏ ÚoJ¸áÍÿtï_ÉÒH>ö> Úy.Óî;fõÝ÷ßxßIð½?µóÝsŒú/– ý—t±>£âý-Ñõ:úþEºý�u=¼ù_|…vO°’{·©ðü#ïu_ø~ãþ•4’ ³ç‰k䙢$àÑ�(ý�È(›ò:�T’h»Aü9q2ž¢C•©Ý“2ŽA÷›ì 42O´ @yŠ©P»PÕž©qš Á(Ðl!J@ÜÀ¨¥›‰¹q´4Yê9€2¨Ï›$! úò릉ì�ОÙ@ªbæ 2Î�¢©DKp‹j(°Â2•5ÊNÁË4k~«ó ´) 8>ì+’Jâ<8Ÿ¿¹MÃt*ô9Ÿúì>“¦”<Ãh¸Ãx4?D@<:Xƒ$BD=ÀÄT:³¤F‰„HD�lJÄcs²lMD4*TOC³ò¸ê½>ËèDØÅ4K®3„E)ÀÅ{!¼86�$YÄ;àD¬S½ÌAÀñÄÚÀEüX=È6Eä*Dª¡C³T¿qœÀD’¡ö+¢!N¢)"·ÙEÀh[@Ã8�Šl·#B2̓šÎ˜šÒ ¢ÓŸ‹Uz²K˜A±²¯ºÔ§¹D1ÚÃÁyœ²ƒB²LtGr¶ÀùYÇ¢{Ç´ GÃ�›5c@È­A»L­$'ñ�*�´XÞ™ªüjÄŒQÄ+2|,¶…Bä/ÈþC 1ƒp¹Ê„ŠiLÃ!І5é"É´˜$n€)�Šl™É�_”T ‹´¢IÀ7BAS€) Š*Sªi¿Fú]Ÿ‘®Ê\Ÿ•,,€)ÉÉ\/Ér[#ª� Q·K 1(<@‘áË8– ²˜yÈœ™bˆ¹Ž 9¤ƒ1Í h1 8ìC©0•”·˜Ú?˜L¹Tº@ÆŠÌ�xÑ“ìÀYÊ•¶œŠå.póD ¸Ü‰´GL¾‹9Ì™ÊÌ�¬�8¡�@@XÁpIÉÌp–ÌäÄÓL K:·±´Ù ù¶¡�L�|Ë%P…KÉœ—èÌŽ8¿¬ÓÚ!É Ðaû¹Ñò‰¸Ã ü8 Vœ(®"**º¸ÛM°7M\ÖÍxHMŒäKÔÓÌìÛ¿©ºN$»MÑ;MäßLyÇŠê²ùJœ©¨„¨i=Àƒl8 ë ¸8�€›u¡B|QJ¥Aɸ9¥9™ÐT85í P¡· й=Ð Ý­©åÐú[Ñ a�½Ã�P¡Jµ’MŠÐQ’Y-ѳŸÑÂbC€/PuÐÒ¡‘J½"Ší@¤!ÅPrƒ” R�!�RÅ@›(?E%��9ÓÀPt'!Ó*�ÐÓ=-RÝÒèæPu:T1·H=S´ŠH©³Pê<M5T…Ę�Ò}(H¢ƒÔÍ ÔØ9оÁÅÔmPÔ}>TˆSú�-'Ó”S•UÒ Ò’FÓvþCC32.C [04/07/91]% €ƒAFƒ)¤ä1Š ‡c °R MÇA6[.ŽâG¸$J)5Žãâ Âr ŽC”� 3 ¦¤œP"ŠÄB˜‰ì@� ‹ÅB Ü`Ù+ÇÒCLÎ …C!Ñèôa?¦�ÆS)’�(Ì( c‘”èu9„ "@ }¦gC)ÀQ1‹"õ[ÎÏiµÛmàK”Ä@e6̱9œÖnhœ‹E³ÙýDe)«�0SéÁÎˉ°°£• ¹Ì‹':ª(ê7%#Ë7)±#¹/ÑBñ¼®›FʪýÇlÜ}°M¬”’®[ç²AU(’{5*JÉ\²í42ãI/ Á/Ì+@–ŽAëô ¡Kô‹¡í-Š‚È "£kœäà ‚Ý*ˆbHœ*E“@eK-È“43 ƒÎ #˜@7 è°à7¤#*T7¥IHä0ÊáR—3£!�ZŽ…eZVÕÅt“ ãrê0¢´�¶3ƒP4ÌìO3ܧ*ŽR¸M@Kj•à´êÓc_ŽV r4�ƒ`Ê3¡õ¨È2,ã˜æž­í”Üã6-›FÑóE#U#5e.—S4Ý;E¦t¥%CBzæÍ ã`Þ1_×er7¶‹@ 89…lÆcx å‹S”ô��a-Ì— 5MÈÖÄ¡¤ÅŒÉ΂w<‚,Ò��Ë 3A¢+š‚5««3kæ|HX º®ëÈÜßÅjÛz1¼¢ÝXÁ”ǃ¸°’Ë…€— é'„L¤òiê«)©j—“R¦k*ö¶‡ë»¿»ì;ÊÞ7ËæÔØ¯[vá¹nœ† ¼ÔúF㤬: £LI´)愉ÛCZøôZã¢øªòê¨d-‡Ú$“¥)]¾Ci`Œ¾-°9‹ A¢�ÒšÝZBK†Òø@1VCpט¸LpP$ê¸N-„áHùò�8QõjêkôÒÖórÍ1�¨É?,ã8il¤¨;¯’’ñÁu1�‘@pоO 1~MM¾¶ž@�š aÌ:† æÞ™-?«ĨÂ\áÚ�KÕ{‚ ƶA9ƒPr’ZÁJ` IP5¸àÖƒ o hœ…ØljÀSŸ†ì,7¶dÅBHDª¡KРÕ8T¡H¨pؘ\ÃX‰Šb'ŨA=!H)²ü¡Hr^ÁÈœÂÐÝ Á1ƒ°|:DR‚š#‘Q(ÆE°Ï &xá™ä—ÀLó¢c!Þ,²°[À@p‹¡¸3ƒ P äž•Ýðe(Ãcs#Ž RzË’YqE~ÄÝããa4H-¬¸Ü×Ù)�§’DȲژÀT¹wi¥ùÈHÎÓ:*ê™Tj]däº?€ðÀ„ºcŠ€H ª&¼É?“€=¦\p arĪO1Éš˜™êvhÅr"|_oúN¹Û"SÚaÌIf8–m>»¿l-o8–Ç9'$øê ¬ c�¥k€\$„F¬L× WÐf£ô†‘•™-btPŠQœ#Pœ I á:7Eȼ¢¡½. ”Á´S)kM"LóI•"¥R E-Yœ–h” ýIG"ØŠÛ¢g®‘…:SK³aˆ™DÖqâ‘W§töŸÔä'k0­ŒÒ$!2JèÞ{§OIê%gTìH³­*®¼’¼TK sÏ$/BÈA4íFL¸�†hPðôƒ+ª´¡d46Š—¹Ù‡Ñ!Ùn+õd"AÀ:Ò+'e1|jnMâÆ³Š,¾ ¯βµ�hßs!µ*†ÓÈÀî[Êd"…:5 Ô ÄP°öÛsƒ ̺¨ÄàÌ|S �'…@žVæh[­Ñ”«„À‚‚(L~Q.ίW+ÛX0è ’‹z/UìHÅ–CFFÛj¹[¡ 5ƒPÖ+>h„­—œ_(©•DY¿,Úi*šªÔµgRY±ÞûããLk�®"•¦'ŠÉ¿îJ¯¤Æ¿DëÙ¥—e² Ä .õà7º{ÓxÉ�íq§Õ¡c&±„l~%#*’®âÌ7“±|l�Ùs&•x«ñ¡møŸ ÐòßÙî>�±*»ÙöcƒñšhT˜Ó5LìÙŽí]o,6v܃Ցî†P®a8¾b9?#2#Ä*ÞÀŠ¡°(„V tÉÈÁÎç—Í”´\WÑ €hò\_/@A§á ØR“s•‰yùÏ-ž0‡"a‰) œ«d:&'g…ü|WüX �²2¡‰Ž¬ŠPÓ¶30ª±ñj»i:ø¡Ëßk»,��J¥Lj­yx¢Æá#¨þnHb å$:ºcP1.Jë¶¢+ ® HgnÑkWpCÞzéàT’½Õ²øYA\êÔ6v\•Øaà€7ìrØ Jß•˜Ô[ æd­ép3U Š+@�7ä �Ù—PâC%¬4Õžë€]K \Rµݯ�78&œ²2£d –£«8sá„8XwoLÔþŽªî…þÀT$äÄq=®À­C�g·1ÖZ4ɿØ=áÌÍЯ؀7)Ÿëk·®è»O‹JNÀ°ž¸~ƒpz¾1¦ZQ�´h ©gæª4„à‚B)|A !Æ�Žügdl»¶ÞâÜmÜß²{¢¤VÏ'åB+âT#ªnÆÀ= ¡¼2{?j_q/—JêWò„€" 5hvþCC33.C [04/07/91]% €ƒABñTT*GS(€ÒfŒ&Áˆ€Z>ˆŽ‚�¼Ó2œ„ù$†:a9Œ'‘„Üd‰ÅFBq¾:p†Id’©aæ/‚ Fá”ætE"ÂÊ`ÈSŽÓ%²è²flU‡bÜA3RâµQ‘tB=!’IÅJ‰ÈÊt:œ�€îÁb²V‹v{}Æçu»Þn+ €cxXO°H$ 2\dfÙ <èy8CÍñ#†U.7æå‡CI¼ÝA‚\gZ0 ÙL¬lf•@ƒhl«léõÊõæ"(ØS/¶�èÀR&áÍ8¶žEF¿‹H7<^>(AÓÆâÄSaÎÁÜÖïÛþ—Sˆ0.�|e¿Wc§Õúý¿?‡¢+ÖöÙþý¼c)#(à4ixжÈâJÒA к®º.Æù ®‚Àé¼N k <ÎÈ 8£˜Ð/€ 9)ˆs–6DÐ?QcŠʃ D K©)0ËEΔPÀ.‘;üé»ÏêÃ�ëÉ#üE(¬VÜÈKÌc¬ñ¬o„òá »¶‚Mr°¶î¬!/Pª£ŽŠH×6¯2RHèÚ2�´ ¹8RðÙ0)�R;;Â0˜@á:¯SœäÆo˜zã…*ˆÎ¸ÑTÃ7PnÈ2�ŒƒJà1©UBóF¨êK`0ŒNò°8%C(Ü9ª*“q\×hõ}`+³Ììâ‚ò1� P@WC4~¬JJT:MÎ z¸X ˆÜ2Œ£ è7�uøP]’˜@;�HÙ 0»ÎðOàÃR5­l5¶9’œ2±�-^È+|U9ÒO»‚6Œ#¥£v�D w¢Um߸à¬`˜3ïU K€Â5¿°˜QpWö mrÜ÷M×�ãvô(âpèö° ØëQmÁc(ð85ƒ›Nº…JÏ� ¹÷‘ ¶¾H»`à$4ü†�ë À¾ãPê6Àƒe‹¾û� Ky{ªçú �¡ãÈ2iI*$F+°E¡²v¦žì€‘‹ØâІ…âÉ0@3£uc¦%ûÆõ§CKƒ´•ô= £ˆR>Cg:‘Ô pËŽt#�ß±ì¡GD6{D­U\çô'IÓu—T3àÊ�]Øl�%ÉÚØ•ÐÙÜeû‰x\øõâøé“Ùx¾nÏçú;ouê÷�IíuýŒ R{ý»q‰|~šÅLwƒ¯Ð°ê:�ùˆ¿;ˆ,9I%‘êç�èz(Ï¥î6`èûŸ ðA0 ê@WRMs,/!õ‚ˆ/–2³<ï’ <8½ T^�yèAÒü’X�*Ø:B†Ð֒⪆PÑç®÷ô›¨(da•’¯¶ »Ôhch…¤#%$°ÁQLRÇpÛÄ…€·V‚Ò$‹U«0µ"±Ü_0ýŶ°Àâòïhí$¤4³P¿¢¡I+ÄîCØJÄni¨1šU¢"ä4«™À�÷3‹oŠ€äÒVI—`mDDu]48ªLìiiM1�DŠ]dBnˆñ$½©2³S¨mQ‘&0ê ˜c”i¸7ÉV£ˆR�aÅ—*4¹]á¾VÊùb^eœµ?à(‚H‰,�Sª R©äܸ‚* ÁšnSLÄ��Ѓs5ª ˆÐî¼Ã` ’a†J4R;!S«Õ Í‘]# V Ó ¶—Òª4?8Ì J2žäB|̃»?¨qŸì9&@T‹jö:à�¡s6VHtáÌ—¦¢HC;–o1­Á¶ÐÓ@ÚÓI%€ï .øÔÂ�ˆ<”pP ÁX'†Ê ù¶³›©„Ä›1ȰÌußO D @Ä6Ï9u.ÏÊx:3<ކ²°e§ˆsMÁ¬ÕdDuËÊñ^kÕ{¸V(ŘÀ"ll¨Á"ôÅXº$@¶µ ¸Ò½leMI–¶Ô¸pjQ# 2Áh‚™ j1ƒ;•�z)Šþ¬(°eF­°T A€+†™S@R A80§ íLW[$A@- k¼ôžºöw*2X–Ó(7zC8� *+Ei‚¢t¥5•4˜P›z ÂpA ¡wÔJ‘lƒ… ‰µ9ÛóokK Z±¾ÑÖjà ØÝ…K²t»&ë�‰i`ä¨�:´ X&@Ô‚�U|A° j`6Q{tŒŽMñ¾i¸3±‹T~OP=º×„Ã[a2H%!•4ÛœJ¡Ö˜c´@¢·1€âIì¼7Z³ÙEííä^V.È‚Ów©Å 8+FðW–X}Ñðw¿jÊþE„JV³.;˜ .ürBÞ9¸ ¬õÝœ`j:´@ß—²ÉCK¡”ŒC+:¨Xé`t¸­/,|AL !P&„±XÒL�F@‹’2*0èe!Ä•(‡ ÌxwgD¼1b”B�Ra<"\¬€XSé(Ê‘ÜQpã=±1 Ën±7d‚‰s yˆ2ÜÓAÀQ ɦ1—5Â¥(¾tœ÷õ�N‡”n-éªXæþ¢U–‚ÃIX êÅ�œ+ÎAÉP€¡É†‹ _ð\~À˜ h²üdA8nÅáï!#ÍSƒ&¸}¢D(!…*G!±Z ô`èm´M·K9{�¡€©¹g~çÚÁ‹lî»Q�8Þ;„ §½‹ÖÕá›}íÜ A—hA#p`Òf¹%V5zÄ─$i ´ƒã�r–Že³ôã“€yµ�½8*;D Ubà3 ¯vYëA°ø¨=*»~PT—Q¹•ÍB@!�m¼vþCC4.C [04/07/91]% €ƒABñTT*ͦa°ZCÍæÓ�¤Øe9 Ñ£™¤Þn …ÃD ‰›Î“‘¤Îh:#‘ÀÈ@J³²A”Üd—ž$òq@Âr™�!ø ŒÒn1›¦C(€Ds:$ã@ŠŸQ©Õjâ#Œ]V3XPH5Êx:F�ÐáÈÊf�P fS˜‚¢ 8Rfclãs9HŒfŠLÂfµ ™" CLfáe>�\3 ÙL±#5N¶‚³F3�Ðä,ÍÏ&Ó¡„ÅŸÕÔ2W‘< T$“I%¢.fXt4›M'£.èG¡4èô¼�©Èk £��˜ØgÝ Æ/‹2*­Lô NÈæsº›L¥²qšE)ñH¥ÑÛ¶Ä.K£7ŒÈ@1 £8ØÜ6AÆ9Ž �Þ:Žƒ„*ÿµkzR…1+¢ì¼/K¤¿@Œ‘¨°ä<ÅÀ�48“·Œ›*˨Áæ2©,hP·HK¢6GZÓ2ál3*##9GÁS¢ ºrŠÌFàA£*KÖöɲÀÆ7�’ô “Úå@³8Ê:A�LÅÆÃtá ë藌sÃ=ÌÑì°8%ð,Ü2Α°Ù2Ïpª­=OáÊ­S"2Ž1ä2„ÅITXº�‹ºò½Ä‹ûÁ©AgMTä]2 ÊÕ/M5K ¤ª*ÊÂÎ!pƶ*¢É[Œa¢I^ €Ñ % �ävþCC41.C [04/07/91]% €ƒABñTT*F“qÐ@a6"'3™”Úb6NBq˜Þ 1d#,DÜyÍæI9¤æ 3™MÑà ÐÊd„ à“ÐQ Êa—…‘€÷£ÈÌæÃ ˆ{3:S¤fÊ(î” 5M§E2¨)¬�³è ŒÒf—„BÉ8‚M$�çÐhD*ˆe1X¼f79�¦kdÖs9ˆÄ”Òt OPC¡ÈÂiÀÑhçº<úŽc4c¢£†\v H ÃQ¦N²cÓœ‡¥2¡¤T#“Z”€ž 3ìTs¹£4el²ãÂ)8‰»!Q³É‡”Õ-<½™l’Dç• £ÑéªN!• $òp€L&•÷Èd L§å�J¥BxŠ, Š0@ì8�P 2� Àä7"Nó.®hб5@ì í#˜9m¨²&‰¢°ßЕ ­Pe�KBÔ’¨ (¢’²î… ˜z3!Ã"š1D$‰ÁR£>!tË‹bxŒ# b+Èó=SØ÷I D5Î F2�ˆ¼p3ci�ÑøÙ „Ck27HòKå3ÉÒ„¥*<ïKÖö‰ÒÓ<Öµì¤Á5-- Á0\«B¨™"‰r;S.b5„¢B9¨xÒ6¤ãjZ:£a‰®èÜ1 Ã`Î<Á²"ŠaH ÁLÂA”ÒB!ˆb€@ÔðÈ7Ñ¢Ñ Ø"€t(â „£†4�S0Ìn)!dYVe�hZV @Zî(@²ÜöL„爗2 tÌO]-Ð’çc.¨;$¼!¨zP• (²0�#�°ã+21tÓÈ'ió.̳p< ‹Ó5A+?sÕ‹à9�#hè§„X@¡€w\;G†¤¡Ü7ÍCÌ6�#–3`AL Ž%ÃÆG‘ea�n…r8J8DÕz¥«�:¥ò8îL9Œ„ê5@j «êÚ®®ë:Ü ;°ãÀñ ÓÌ­>=σ幾¯»òó?�ô;qkT»¨�àÑ…VÁ®0¥˜ÇÁHåÈBP¦a.8[„6Ù…a[S\5N¾¢ìÅ$U .Ýq s½L\´­q”iL“4w4Ísl‰#KRTë'Ê2›õ¼KöË@ËöÈËÝLñä} HSz9or[¿âÏD÷åOòä½A²3+mÑ<´QÔ€�IB´­.7S4Þ4 ã’!KŒLÀr%J¡ôªµZ«Õˆ=VjÕ[¬Åt¯ª¾~ë9b5ÃT·RËY« p–ÕÆµ‹Ø^h¢ (0¸Œ(ë–®uÒQ×X"]«¼²wÌ[©o.+âeø¥ƒyBŒˆ‡ ÎLI%$á™O0èYÉ+"A±‰ ÙÃ!¤ áŒb$Q˜Ü\ †¤¤¾„^í‚A÷ 苚CD�‚pOX&à#„0D ˜a aº;9 ¦BÐE`Ê;" †—lƒ2!(ì Iæ‘Å"/5+˜H‚„y2»Ôß�oŽ!J9¤y u!¢…†Ä*KI‡>wcÔ*!]0k€ áÑ!ЬAA‹™†ðê tZ•ì~[†â­ ÎØ}– YËW>óÁ/ H ”p‚¤åˆšmp¬ÂÕо‹¸ ˜å8“1Ã.Jƒ€o/QLšNÓ9átÅ0e‹3ÀË3‰Zë…e�Ú£ÞÓ"K  à*àÎQ‰dÍ™@fy&EÔ­“4N¨@ÈZhº‘œP²sCÙÒi :ŠräI]’B8MÐ2FR”>­?(q£4³ò1èËA�&…ªùL¶À$¹]ˆ)ù„†¦ tŸ ¢›Q5Dg$ÖžÕ:|z¤U ÎCT>ŠTh^á*]MuržŽÊ�AF G]$�@ƒ(t4S\1 Ëò…$Õùû—”ß)Xg&.)£àÓ`eÐl•õýþF¶iÚç;¶@‰°b~– g T:(¤%ƒí#sÇÉA ãV•"…KQj«‰_uÒ»W€ÐDX;(‰¬ýPª; KÈ�’$6Ò¢Mb ŠeJá‚‹4º¶VËšp©Ù(mcì“Û² ,³Ñ»íÐñ…ÐBB€O¶hØ‚`QzB YF¶x!Úþêª@" �mÖŠŸTnû‘Bu‚‰QUkÈ�¤aMÛ\Uä¥Y¨òëŒ0%[ŸL›9·UU]Tä¶õÌ…[ºòPƒ! å°Æ’pæ+éi &*ï†%“rY °·02ÜëLH!Rбjï 3Di.ó&»sü70PT‹ÕõÄOu)Çg»� - xÖBüS Ú‘×Cþ‰=ʰ×6İbôHL7gÄ­0Å,Œƒ„źwVë¯û³e¤“!» ªïÞ¿y,¥æ¼(æôž×{o}ñ´7Òû_€‹~¯åE;p¼&„ð­/Á`LÀ˜hÛ`<*Vfµÿ’øvÕ`Z¹�ÜÔþÄÔ‰ôb¢1f¸naøÑ”7ìcƒ yÆÕê¾Wâ�Õ˰ùÌ9E<ÿT kº–FìYM =¤ÖÙ³vtóYóq¨*r�Ôz–`jŒ õXX-µ£ Ql£Vu³Â—‡Û’¨Ã¶oÈC9\ò:ýȹ,MW.)ï㕨&¾èÔ…´�gÄ5(EÔù«]ïÆÃpÙÙ”0ÞÎb¾qÈ{H9Å0çÇŠ÷›ì#ƒ°v¤Ê:ºÆÁ•Æ,ž©&,PÍå`¹£Th›îs‡IiQŸ!Ö&Dí€ýÊ‘ ª†Ž“rO­0®™×`òÊx%‹ë$æz•›þľ t¨{ÓØiéùLËõ(›úµwëk¼‰¯�ŒÂjœý‹’ðžQ‘.†}ThvµÕ†»t¾�Ë}f²ñÏíîpÈ^;üí°Ã^ÔóÞR(Рd¸ â“û0‡{ìÁhB _Íñ¹Î§³øs·¯è…†þ@À©Xq¶4œòË 'y^º±Û;¿¸½¡6á©É¦—é‡L£fl 5 ¨ç•u+âù9*ãÄÇŸ˜¦‰5½÷©û}ÏÎR°àS©}¾÷öô;†“o¹k�¢›÷¾ pÁ©»'T¾ãCŠ9�ƒJð¾Êï& 9 �€¶ ¸! È9À˜�. ,9“£”£œ[�ˆØÎ?[ ŒÃ¡ƒs¢º9®’‹Ô ¤Ì |C™¹¬‹ÄŸÌŠ4”ÔŸ¤9¬!©JÁ²·�¯AKE@˜£@H2ŒÑ* yÑ4d³¸™‰©/ )P�lè'D,¡æP¡ ØÁ­ú<È“+°“r—‰Š)ì  *0î§È2ƒŠúÀš`Á2³;4¯é&´Ä [á2Ä,CÃR`‹h ³34Ê1¨â�D‘j+z[ÃD5&PH½ÃÝ@C2© àŽñÇDS©Ê*ÈÌ.êEðƒH£à8;s ”5BÜ5X™yTU�Še!™m€BkE\hÆÂ¥¼o+I�±«Ú±¨ÅkÝ«“Ž>|:¶!_»ó;+Ñ6£â=S‡’÷–w=”q½œs=Ìt-Âs¿û�=h¸#‘ÇcÓ³ì�Œl9�F� 8ÔtºX9|> ‹–¿â¼³¸œ‡¹`;Ç«z°€)‚¸$‚¢ý·Êq¿›z˜;1Ð:Ÿò§ˆp“§â)É 9©²î@Dž*ð2²Šÿ‚ ‚`&0ó1±úª˜¬µÊ¸?šð3H°6˜<šH²bɺ)•äz¡x)œ‰È ºˆà’ʰ9ÊÄ› ª(.9ûºð“¢{;¶$�"Œ†Ç«È»T¥6°¢X­T§¸ë�˳1½bý·dGärÇ<–=âŠØ®Çp½)HŠ ¡0™¸® i³ìȾ€§“ AŸäÐ# &» P&–Õ È‡Ì¸«M{\0c]H¢‰Ä:H+��\„LòM+¨‰ÐâM¸:LòêM$Ñ´ÒJ‹53د ‚zm+kYÍ@-JJðÍh©Í$ã ¬Ù+¨LzºN²Ï\‹N+ââ;M|ý6ÑÏÀ9OÔÒOâÍ¶èØˆØÒCå.È‚êFŸ“œ x™²“”ùœ©P– rLÏüîM €5àµÉºßŸÐ0Ð’< `9(ìÇp9ƒLõ¢˜µ³hÌ šúÑj~¬‘ƒÑ«îĵ�0Š2ÿ–œëµrÖC  +ÒÚKº'y�Ÿ¸�˜7¿Ýz½«ê]˜Ç›+Èy!R8KðK^ ´‰T¹Í&ˆyƒKp‰:ø™M 8X–˰šƒ»¾�0·üäSµ<==JÓØ5¯5�í>ƒƒ01«H“-CêGJ“`TEF@5�õG·4JÔ¨»sEUF�5@an!y"·„O+\4&PFôXDƒ[s!|!*mUíUÌlnÅ}H™¸2Ó¸8ELp' îƒX$‹ V@mNÕOÔ­PÕ£2SÄuVƒ\/!WÅ�YÕZ½rLUÅTÔ5mÕê Õ}`TœWÖ25T£Hﲓ*Uœç”lFUE|4H’D%xÌ—¯ vVEÌtÚ« 2&!‚Ï#ж•ØhÀ²z³$N=�I—H €bIvþCC42.C [04/07/91]% €ƒABñTT*NF“¡ Úe:Lb‘¼ë7Nb�ÈÊf0˜Ì¦AÞh�G¡€èo̦S€€š8B!F™ÌÊm1 §!š.m̱³‘†4gQbôciÌÏ;š)³A¦;`ÍæÓ�¦ˆd„ à�H4òd“GÍ&Øaæn“P,—«¼XÊg°(±ÑD€æu6“tzv9E6¸$´Ãr D³y°P""H‚ ˆR;>Û`°pT$A‰1)æà@ ³¤=C´»Nàˆ$ŠÐ‹S «‚A/J(@7ŒÐô@<…ïøóÊ o)¹rÜiÅ£L^þÊñë)ÀƒxÉ¥²6Žc¸Â8N’kZ¸1ÃØ:ŽpÌ: ã’_-¯+Û}Dϸä9Ë®Cù1FSc Ë�T4ˆìHž)Io$)><ê˜ñ?Ð4WC%è|;D¾4[é¸T}#S?NLÓ-À0ôGxA Š,Œn¥kO '6d«ú“Òb%ÄØŸ8dü¡¤Ò˜@V)H"›ÑT ÒùÇ'"D¥œó¦TNÉU;¤Œñ–1ºz› >;×8´F^™|Ih(z ò–„6ÂЃ}–ueÁÊŽ]9Fš>iQtThÜh£²FmÒa7éœå¤ó’WÎ`”gT§’®ŸÊùå\ ã”UΜ©O(ëÍ>šõò ½Ú‡*ÙF«µ~¥Q9RêlÀeÅ2>UC¸è]X±°¶{Õà d« T(Ò"€HªÉ#Jeg’NÎ�DZ@•Õ1œøSYÃ`ëµ;!³¶2ÎøÑb§�B`’ ÇÏ™siÁ@u Ô§#ó“fá8CAÕ] Z‹&uJ¬d\üÝ ¥f$iɶbµ[ZèiÕ†¸4öá׸)_e}Y±ÖއÜÙùD­Lÿ¢·>èÔÊ u(;¹¡+Yû·rfUú)u!)ÜëÉ�.�çª7ZcZ­C*Ö²5&ÓÙKWxð—˜!ÖÍU;¯‡0c8T€�æ¡Ä¬€T !4$… ŠA�5 Ï¿ðàm àcŸ…dPåZÝÓþ/#?¬d±  �!<·›@�¤#1 ¸`X / ¸³)£4¡L(fÜʸ‚`LuâÝ SA�ÙtâI“X3Y�2…€†8;f¡a‡à “¦LºGŸÀ4@(ü ½( t¹´Ó&ÓCƒ-; ãÁÔwAeý m4Vfͨg@éœr×™Û5�Ô{Sk;àw¶vf¬Ûš¼kóƒ~E.¯È2ì}ó´`ÌD¯7šMœóptØYä!„|ö’ö8€œ#…>¨žÜÁȃ g'D€Û›³dï�m¾µîü› ç~Á6/¤_„ò=† Dá­÷‡ñ'«8ÛÚË{kM–µ¾¾Øÿ…p=Y¶Òˆð „$nYÀ‚' |;¥s@d 8·xwPñ½kϸö¾ä= ¦ÙÞ‹Ñóï)éh/±òîaÔy—SÕŠu~qÖùÞÊÌD2qü㿳,™4Ñ?^xŠ g"䛫ëÇŠñÂGˆå¡C‚³~ÊüHCx¾c©gþ!ÜuP6â¼ß¬ñ®ïÇ9÷zß}÷ÁÒ0‰à·ÿ„ðÞC’ù=x 7�ì^_Ér)Ú<·-�Ívÿ9Í=tô|çvåîñ­½G|ß¾®&zßqßé…ðþç–„~Êx|cÆyJ’}œÊòËÇ4ýŸ¤ùÏÀ¼Ïn‹_ão‘º×:ùž˜|þ�߃£À>£ñ>ÃÙ; $:3ï7ûÛ"„+K©B`½lˆT'ˆè¾, ¸˜¿© �œ(1ø£P"‚@�‰º¾K»Ažµ¼§K°³«µÁc”?[•B£�B¼¾$ “T¸�9³¥ô4ˆñ)Ãl7ÃŒ9ŽˆÖ4ô É ™ ûwˆ˜6Ÿ�Ç ‘u`¥ƒxŽ® 0�`‚BcåAÓ,‚W K®CÀ—³;4‚C5³hÓ7㠳˵¹4Ä zûC˜³6{G´‹õ4£K6Ä24ÛV¿»Q5 854jÄLeŒl7T·¼ÅÓ\Åë]Œ{þÅû¡Æ,@:Ì\GfÆ{hÆ�86¬iÆôE\k»©·mÇÌnGÜpGåÁ P7‰Ö7¤y8è—Ç`ÇÇsÉÀ›¥@«—8d,Ä;ÎÆûU;œ´ôr9ã|ȄȔbH£õA›µA«˜HÓøÈä~DcúÉ åHs¯I+ÕI;˾ä;3ÊÄ…¾ãÍÄD™:±àT¾\rÃÀ•ÆÒ» aÉãî½ì@»Hí»[—Ê�º£ÐÄt:¿Ä¦;ÈIËèŒ|=pœ>»ØÉÛí½ Ç¼kðËlBIL Ic–¼Ì—À̘´3ãÉ@Iæ½<²J|³KSéËKØ>Ì©KsÞEüK”ÆK£ÞH¬)Ë»§>½:»ãJóÎJT›¿ÜÂHŒÃ¼ ÜM$ËœÀ8Åü¸Í3À@l_À„ IT‹J ÌpîJ$¾<üJüI³ÒÁ½L,aKD×Ë\ÅÇtªL{ÛÅüØKc_¿8ÓL¬AL¼ MÔ®C$ɤÀN dÈ|ÂÊŒ=ALÔÁ\ºÁs+A„'É\¬IlC/AØ7Aè:Áü µ�ÇÂ$#d$Ä%Âl/‰Ô[L´÷B¬BÌÔX i ´'P)J+¹C4¿ÆÌÐJs°EüòJŒèL\ÙΤڲ«+ÏdÛN»¶„ ´AätüB4Â+$OèÛOøèÅ‹PÐt(P„«ºBµPT.PmQÔ1P‹fLë‹ÌüáJh—ÐÔvÃôôJ´‹ÐDݺ¤FÌô°J\‘Ï 'Ë:‘͈ÇÐóô˵D%Ò´2:¬3¿´M �‡” #Ä…E=E"[—YŸ$1.mac m80 $1=$1 l80 $1,clib/s,$1/n/e CC -M -A -P -O -I CC1.C >CC1.MAC CC -M -A -P -O -I CC2.C >CC2.MAC CC -M -A -P -O -I CC3.C >CC3.MAC CC -M -A -P -O -I CC4.C >CC4.MAC M80 CC1=CC1 M80 CC2=CC2 M80 CC3=CC3 M80 CC4=CC4 L80 CCRTL,CC1,CC2,CC3,CC4,CLIB/S,CCNEW/N/E M80 CC1=CC1 M80 CC2=CC2 M80 CC3=CC3 M80 CC4=CC4 L80 CCRTL,CC1,CC2,CC3,CC4,CLIB/S,CCNEW/N/E L80 CCRTL,CC1,CC2,CC3,CC4,CLIB/S,CCNEW/N/E CC -a -p -l2 $2 $3 $4 $1.c >$1.mac vþCCRTL.MAC[04/07/91]% €ŽÁ ¡Ù †R*ÄÒ @ !›Í§I°ÊrŽ¦ã¡¤Úe &#‘„äyÅ☀Z Ä‘y<@b:™ŒÑ“œ ¤f#Í€ ‘… 4¦c0˜ÌfƒIÒ?IŒ†¢<`Üv4™Nò3 ¸ËZ)ê¦S™Ò2,‹"ˆÐl0Ò(@‘b0˜+³ÀÒùA‚ETAE, DàL8’N¹B…29'6C)äîE¢ÑªFÇб #‚P:—¼ PŒ)¢(Œ&VB,*†!�q ºŽ}Ûѵd×17ãì0¢ãÄŒ8#ð‘ƒ× ¢(ŸIÛ3�Âê¹�L�*Íýn‘  ~1 ®`@«ˆ(®…[Õ¸àgWŽk‚�ã’¯|�T”Z-RëÔh�zÊ6PC> ‘TQ 4�'�ûŸ#dõœ27£n98$ÉœÔíû ¢v,´7 é“»~“Ð4å�ö”2‰8¢lÊ<­ã(Ú*CcÜ1ºër !‰‚|á%†9f®7Ê€‹ÍŽ š)²’Xs Ž„�8@ì ‰¯Qœ>gAm4æ7£…ª Š‘…· S v6ÞéÂá(ˆ‡Nydîu‚ ‹2 # ÉŽc�¤"¢`‹Ïn¼ wÆÊ#(0ïœÐ#ø‘ºÃ0m´áI<ÒŒõ#’)ËP|ÌÙæŠœ -Ð[°Àwé½34Nà{{FÛïybg'Š¢¤–Ã9!êË~ÁJŽ8·¸ÀÊXƒl á@"™gÊ _È; ìy!:–úABƒöyëü¿µˆ–žºaJ�ÁÌ<´*¥BÊs�íIf³ÎÔ“ê;w¤; Ò+œNO”>wÓٱ ©Áß„7ïTÀ;…€µ¼‡Èá› A%àæ3ÙÄy0ü9À˜›«çqÅ à0èl—Ú�ªÔ° Z�la$Py.!ðPJ�rdk‘ 5Z–”D A1”æY#st¡Èš2@•–k'à(*)(¼ùAÀ0zíÛ;‚ÜoØ!Ø Á„:†ÅšmžC·w2E„FæþÈE#Ĥ%õˆ@IÄ8À€!JÀ¦±Oâ DAŒ1Fò % »&­¿„¤Åд—“2á±¶ÐÚéCq鎇‰™3€H3ta40‡‚@БBh� ’€ÎÀJ;C¡ÀÞ ²œD3)-ó„@Ë(e�T…¼þ†è‚%cöz î~OéH¼ˆÕ7lJ{Pe*ù㣡rІÈÊFbÝ�0$¸.†hÌÿ¡Ê0øœú$PB"Ø ÁL%ƒ§bÖê†0Î`÷  $‰°ÊðÜI eMÑH“:VÐÊdUj=¤)Q'iÚ\YÔ�¡Rêk£L€�àP^}]©”ÙÑÁêÄUk+«­} ÖÀT+zÓ .þ¯V¥lßQFM�4'»Ú÷S�Ýt?�”‚ˆz© àeZAiçØZÖõž©A ARÊ!šÂ F ÖlÖÌŒXièˆú†äÒ\¬ÆT�Œ8Û\´�„”´@Œ9àšxR™…ÖJ)P@ý.Í5sm8; mÕË –ü‰?Pœç‚‘| aZ³Ú*èõn1aÍu¹äÿÖRCÔ|)Os3h«r HtőҮ³ƒ0 @gõ½‡Ô(7žïÖÍS[ {è�¼¾aºú¬ûòoÙp¿³ÞÃLB(MU.´ØbBy%”´L4ôô”fÒ[Yl ¦™À„ge xFÁŽ)•f¢\ƒ»5¼m„&‚s~[Ê™4Ä|ø6“ì€Ô:ž&‡ÀÚ!Ûë|TNCÀáÐ@¦_�éDØÔãp@™ÔIø{aÔ3††iŽ”Dò…huÓÍsh1*ɨˆü›— ’‰Ynë’" áƒxg$í¡zI©5¦ÆjQ–v2å;µÐL)fßT¬¯L‘6� & gz!"- ]! Ï£Îb�(è1Þé̃5ް}�¨� �ç«NZq ´4>³ï*]7ä`3%$w­È–œ�� S¹b:³AF‹ZD™œZB`X $$ÇÎW’Ž:ÇŠ3éÔÀt€UL)È)… ôÒrÅAS6§Žo¬ŒWévì<’êY� ¡[l„ X™9�Úûgmše$ Ö±áb¦ÄT‹pEw )q“RÊ8!Š-U®¶bü à洯 ¬eÁ`A(` Ü÷€S�”º5*RõÛ²pµ±�›¦¦s!—õ~¢j”~¦�Œ€J Ì¥8Mú�iæf•Mq¨ Ê Š!|;¸&oµ…Ž9ãûd!‚ÈJ¡;N…SÓ?Âè”srA�a Kyw+Zp(—ð†aÌYŽ Zù™RÜÁ§:P× k˜LIH;žÒVvôHf˜[·yTÊ`gB_`ì|ÂU·0VèöòÍ L,‘0Nû/|×§s bß ×ùfÚåûÓ¬¶¥¢t×iÚÛsv… 4RšvUñëØ1ä =¹ŠÖâ[nöíÛ»ÀMë Óå§œ³o…þC¼G…Ìý¾¯cúÿ•ûý¿»—r�`à=«n6¹}t_â÷w–´à¡óuq¾>ø5:Y#G5“µHÚ¨75*(¸`<ŒØ(b q‘*F›Zž ø;´“2�<ƒ¸á3 ¡z²jµ³D¹…–,*(�¯²Yƒ8ð “È1¹Ô�3%½@<¯90bú’¡ä˜X1ƒH4œ‘ö<˜üƒ„Áˆ2œZ%Џ‚¿À"`(8&›þ·+ÿÂt(,ÅŸY¨»Ã½šì¦ëÝ)ÓP–kd‰�B±x5‹‘ *FAAé�p·•0¦®+oµYe°r�±` ¡¿ÁKC'£D2�{¹2ƒ(”A¨©L85;L7;„¸še¦h?ãÿ)ÜE'dF‹C„:,:§`7ž¢Ý5ûYÅ16 ¸'¹k‚ùä5"��)³òƒ!HDÛè¹zf¿ØJÙ<GO4 „ð„Ê2«+µ3¶RZ‘ô³ÁíÏd÷Lól¹ÓLôƒ¬ÍADL<´ÆÒ[ÉxÌ ±§ “”S©Ü„ƒ�6#¯$Ù ‹lI‹#ìQÀ¢ ÉŠf¹\[9q>;ÝÅ*IÉ)$2Ì쬂C€Q°&�`" …!RH'°!¿¢ÖK1C¿»s–¨*+ý,*m¦è’ BÚ¯FˆÂÐ&‚p °°Î  ¡¼�ª[¼»ÙÞ‚&p%·¡|LÐŒ±öœ©¤ŒÈBä�(©°K‰‚J�é‹j2€Lþ6Ô3»ØâÍ2Â᧘8 Q„BŒd‹€Š–S75 Th$]H ä%³ ƒ‹ÔEEG z©Ñƒ:– ôý‚¬ðÅóè?H”P%Ð2Õ›D±‚T²ÀU´ðÒ÷¿Š M �&›ucÏíF˜# J›' ”” «s­ñ%REo Lã·;Û¹d€Jß¹� Ô�è¾ZüˆûKU>‚T��è).¼â¾³ìI 6 ú(¢°kœŠxÉmD×hȨ·º=ÖZ/„ý×pØQ%WCø¹ n�tNQ%Xdq&¼¹¤F#„Ç׸ÈÎLpQTÚHÓÆT7µ%¨‘Õ‚-8ÓœaÆu‚�;'¤I¨™ÓÜÆÓìg”µ\‚”.T‘Ô#DT0èÔCÐÍŒˆLL|Gò¦Y½9<ý*9ÔuH*\N6Ý^ M_TœV,¥LÌÓ¤Ö”ñQÍXÖ‰>µ›±°'rjs[H‘ 3�Á¸€,��¹m# %Úœ¬YÝtZ3¦Ë]•%HK&Ú½@WÔ¿\\ˆÌT&º{¨Ç­ÂNEÉÓ4æ9pX¥ŒR#–»]v݇ˆ˜!Œ…*Ã�Ì•°¸”,TÀ=_*< ��Ò=[¨ùñÖ£¾%å¼12—Bú¡Pß³A£2øê’êÚ*(÷=xô¼- ’)]ºV‚Ъe0ƒ•4]@VeòÓŽõ53’æ�µ5°¸Ï_xÆ :b¥ÀYw—‰*I9DÉbG›éÅ áçÕ ÒÔM[Ïé°2ÄÉ! ¢µ;(ÝÈh‘¨šÕ·Õͱ8-ú Kà8 À›…Pp&Ü+¥Ú=«àfÅQ§\UE×-9H¥˜”ÕnŒ(ÌD{�tŠ)à�¸•‰¸žI^ëÜù”áža½ŒáÐ;W”´– @ßçÀ9 @ô‘ÝYX”1(7#ÔX >=Ž/Quy°Ÿ-p7rt �×£ìVÖˆ•9`Úº+ƒ((ظH"|;p�9(‚ Te1H¥ã º&m‹LgiÝÜ dEqÌ£þÌÐû²zª�ÕÔÊÔ¢e¦å¹0‘ÛUè!³ñvºVDÙ¡fzÖfá¶ŽÁD ˆj‹}Vö[…׋}Ø·åÛ}‹TV?ÔkÖ›!âôE^ëØåñb½­Õ¾ \çˆ3”JGJs˜>.°�üB:R@ݤâ‚hÜN¹kmì{ëÚè I+ ¸gxÅ‚™ÌÑ+2°ÞhœÁC?4£hø¡͇³Û¹!i;ª ¡žÔŒ[!�ƒ¡–ji åð¬Õ°×ëõkÕsŒ…u9 ãD Ÿ)Rˆ€I…a‡M‚ÈÉZ¾ßcƱÖEå‘Q¹£ú Ì ‘¼aøê�VEäVë[  ¼à&)�:#‰81iX4ƒ8¦¡cº!†”ëÐ"¹}ÊŒŽäeh;2‘a7[€£õã¢"¢!°5³?ÍB%–vªÕO›Ñ©±°k«Á=ž¼gq¯‚cë7‹yͱê1óå·"ô¾߯ÚÞ’a°gû£ã IämÈû¬dIœÇå>@äšj¶¤WFãl�”ñð…RîÈXØ&c“�ΪÁ‚-+ä$]ÓlÂÆ@‚¥ßq(ôãHÞ"ñ•ã‹Ü—kz^_CŸ,]õ÷�€"6Ü&‚°…ÏV@‚(s`¶ß6ãÖe8Åí81-vÍq¨óÙ³§x73AR™Ö�‘ñ‹È—V£I(¤ºÁz:Ð9ƒpÈдMxè½�� e0 ‚:à~ªXH8ÎÒq RK²è5aC‚¸=e=Æ K‡€#»ŠY”8Ã�8à#8õrΟ9/_gT9R[ñt.i_× €Ÿi‡ð3ÙA”õ>@•««îø7ɰàˆï.чtaSº¡‘¦œ©*G}·7=ÇÕÌÈ€Oo‚«9—KÊb¡ªË®ºÿ\[�™¦ôÁÓ�ïN]©à ÝY©Õ‹ç}�ÓR1 jD‰£¤’w³Æð¬NBÀ¸yYkÔñE©ß�Qïv“‘9xiûåâMY…YúùP5ô)ÊP7�E�lØøá½øô7Ÿu)¹'U �ÝhH§XY—Zo4hšnr#Ø:j)Ür¢;�£¥F?:'EÁGøï³ù(Êfuÿ“º'C^ñ_™™aÅ£ ù‹àR7e³ãz/£§púI‡cï‚8/ƒ:'•t²ÌÎÝ·?�N�D(�bÄç}k RÐ�Ö¤zã™bcRSîDž‡�Ö�~?BÁî¤X°,f; ë2¼òŽìVŸÜW&ÕÅå÷Ó~é­�4ç@ô¾{±’¤ä$Z¹msé¨óz î�èõ&þãx;™W‚>�Gêþ5Ú‚×¹ö ‹îB²4å�8wñ‘{çûçÝþD¬7dM¾²®~x8Ù#Œ˜(ëN2²Û�ëçù 8ט}ߨGÙq ô*ãü8'üO˜dWæQ¾*ëÕ#X·¿Gåi«Ì芸B�ïýÕtq ô}©ßãöí.óWGÓ8CëS¹¦›JÙ²@W¡>{Û‚f,>=Û§2p¼ '™r„>·Ö‡²~€,Oé�=ô‹ð>â±)0�8)8ƒÞáÙ•ª6È�—Ó¹”&ßHø�ÈPŽú¸Ázִͫ{5õâÐ�¨Êéªý_ì¯hÚ”O¬zÔÈ]ÎH#n¾O1'ÏöCùV¸Ëjwƒ6V­˜+ˆz„ ¸E¾uñ7?Ø$…åðÇ< `ë¾�¼6âã‡"’T¯rKkJª): ¥|?Ÿð`:5WÞ}Ï _¦‚y|WêÝïí×—îø5úüŸ§ŒXƒé J¹¹S„™%owÿu[“�ýöÀ>’aï“…‹m‹y$â@-#}½ÆEV+\=#Œ†TŒX>ÑT¯ Ai J¹á~Tšp2äúŸ,Ž£�=ø�Ù dκÛÛ„(NáËûÙ¿=iªvœXlõÖ$ºü!å”ÊöÉÜ༗²:oŒÚÉÁ P´m³2«˜ú Ø‚ DPZ[Ò9ßÌf 1Þ�ùÏ|+î߯è±Äþ_Ø$†ok‡ <½˜ï½³�;X„‚)ÎïÊÓƒ6V‹3Kç?ÁЏ¦ —Mï7}Žo]ƒ¿¼¤¼'î/V:z‡ J¹�›„Jª)]ïtÆžÛ¥òñk7è¦>…]üf÷~ß9~óçü›úŠP>ð244§Œ9%-ûù8å#œv1>’™7“�˜}ß’pkŽ‘ri�e'RW%N„Jª(ïu�ß“á1Š"�"‚ùl>’8§^ù‡ÝØÓ‘ *¶âã†,½½Äbú«š#¹è>ð0¢Œª¢�²2Ñ(ßtÝ&<¾~¶îצ£¡?Ç‚»Þ÷q�¼�•úÑ&TŒX>ð2( æQ¿²K„àäoB›Á(p`:|Ù¸›˜"°ÏÐ_¿÷þRéøƒ1=¿çP) ð`:à¨~¿Vi¨�Q!Óe)QÁºÿ(ˆ¹ˆ1Šh{àR� ¡€!§~Ýy Ÿƒ>|Nm˜ÈÇqföÀþ?~_§×çƒ7 -ù8.€HBð/–Ç”ÕÓ‰ù?˜}Ýszè œH˜¥¹4�€&XL/Þ@Ê$Þ³@1�B@`/‚Ö¥ƒ§ãdåù8Dªï:ëq  ¸*l]…db áǨ¬—?;ö�Y"8·õÿ�RwöØ·÷ªã„�ÞßkN÷üH.¾’8)$‹tyŽýúè¬À,,bËø}—÷«;„¦‡«³Nïûab™Cçù&ò™Jì.ø÷«¡Eëë'øîØ+‚DA€(Å€LîVƒ€+·>²³Œ‡¸Dõsçeص�ì¸%>Œÿ$¼q”îØÏ¬·%9'h¨&\ø×nßrI¸²/UìS˜�RÙX�‚[Œ¡åÓçñ ô+?¿vê@ÿ sÃW÷«>/¤ $f:BG‹Âø,ñhèe_Açžkçþ¶¸Dªï:ð¤z‚k~ýw×nrFÚ‡›Š(Bûùïp¢u‡ãñBnÙç †TŒ\Ñ:’‘2¶·>TŒX>®å„´¥�uvîM/ÄïÓFnæþƒ“¸DªïP$†o]ƒ¿¼¶eðïþ½ÖÌ‚‡§#Åx×íS$„>«ô,Ï))“•;û'‰ôëó¯ I˜"Ñ‘8G»]WŽ€#ø&X:_¯ÉÓWÊQJc€v¸¾8«J}3¢}3ý-Šº&!zߺƒ‡¹}Ö¶k%tJÏwÛ¸3|ºÀØ‚íÑ×ËõÅÆ}ÍÚ®ªãCŠØMÍ:÷ŸlT(Œ‚þ8*¶È$ņº(%ïú¸µ¡ç¾¨C¡ïtYXŠÛçÙXÈb�°‚@�¤›Ýïè ‰ƒ�h‚ ÛL;“ˆÐ©€«‹òõz½ö:yŽ‘Z¹òK°ÓeIº�ɽ޹˜vÀϽ§‚ ” 4È]fHAWT‚7~ X>º—T°àÀ:õ©�:{$æž; "% /©È2Š é #JN7®|H08X€Ol×ÙÝ\ØÖ=Bnš�NQI[ƒb\�gÌGÀÅúØÕ( ™rf2¾püKHöÅ•¹d�r¤&�`ß­7V©é—&g·=鬎aX2@H`{{�R‚#ø{Š‚ƒtÂø¶š�|�¶Y†Ù–e9#_^Êy£a2ë4ƒpÅ M•¹dàø:gÌh±eÐ¥5Î^�ˆ‚@¿€&e;Šé�&.î+ø?ÄÛ0Œ@&ðÁ3£�@ ú`"H?)¾"�Õ w�98=î+žnš¼‚g$¶´uXµÎ>"Ú¾§rKÙxþé×$½“ó}?í>@)¼ûˆ³£‚)¸=-³§˜íwî»Ù¸ ‚@î�Ä�>Àæ•ïú½öw°¥ÍSvží,?ÓþÓ�´áÙ�lÅjhó‚”LÕ,CyEWÐŒX�[N*VÕÍ•Ýè"Xÿc¦x?í`�kçÆâ‡à5wÝè>Ð� cŒt‚ À{%¤ƒ*È‚'�3¬|õm°¹?¾½“:ãïMjrË7 Ú¾½á¼Â X"^WâýwòN½´§8â.åýb)¯÷Ƨ":þ3â¦Y]+Á ¢D ZPÀÙ0|ƒt)£�°k@ga­+ž‡&e<)7JîûfšÑÀc-ùMt¹å”š`"rLþv÷nð�[NGã£Ë1JÍ\܃ÔÄôÁšdRƒê 7Nìo7šwäx¡!V ú»Ÿ æ$FõlÏ­û²YÏÒçíw?©´£²p`:_®¶æñðývá�a<švýQ€._Hûë�œH�¸#}?ÄÔÆnƒ› @«³ƒZ¦[ ~#>4oUkmÞƒÙÞ¿:Å,žÑå; #-Îplª 쿌aà4ºÍyŸØé(ð`:gx!Ÿ JdN¶jé¶žá�g!؃7h¨&H=ãB¿žèþÔž˜X9Ì›' `ýó‚Bf]镞¶Í>~DÅ,žôŠÕS^’ •ô&óE)* 3<�ø„ž«+ ¤”yŸ7Œ_ŒX>›�ðá~ñœOåù"t•Žåp`:ß“¯3£—Ø#ùlÿöØ·eâÈ õß ˜µ«‚<ýXL/�`î�íK‡æß¯É‚<ýXKTLÛ¼ÍvÅ�Äa>’8§ñ‘˜qÉõÿüNš­“Nr?O‚ïöwvýÍeÆëÔ,wGØ¿99+;„¥ƒ1cO”? Â�ëõûìØ·öÝæ+âÌ5n6,÷À#ÏÑ~�zq$PœØˆ70TK$IЍ»�v±(A«e˜'�B[2pÚ` £- ³ ‘ÙÝ )xíÍgôI£+çñ—|N#¯¨Äa>’8¤è,ò —˜}ß’^c»H:h'àc¾Á¢ 1—âîÒ+Üû'¢¯­SDðߘ}ÝÇ÷½Ð:œe9¥¶ÙÎE.ý-ŸA¡Æk‘¾d=¦½gäö:éøy¿Ñ–ó>Q%]æ+ò8rgM<ý#D¿ ¿¼.[¢-Ð$¥è*B‘­Ø$$/Ú¾À�‚*�‚p: ËÜý#C¢-Ð'x¹"ÁJ‚(¥éç¦b^ŒËö뜙JŒ†T¹˜È"‚˜¹ lCBþ…n�í~ß9o«çü˜#ÏÒ46z®]ìæ‰=§yÖÕ¹8á1“‘sçù!ùßç˜}ß’o&.ÿ%R6øeŽÿÒ;„ßí_oþö¾’o!O®¾ÙnÕ?H$sæTŒ\ÓñžÅ)8#ÏÑ~¶z®¨-¾È"èÄ÷_¾ÈùC%oæ,ÃSÛÂÆ,Æ}Å’Üw¨!ÅW½okÖ?HÎfüNûNàý{ieH8DùõÆîôÿ˜aVêo† ÖÆ>²³îRÈ­—éÁÀ/‚×”ÿ7®íÓl�¸#}?ÄÉéÒƒ› @«‰tË¢Üàä mÝ#ÏÔ]=gäö=ÞÐ÷ª>vÇ ‚ýšûŸ^ù‡Ýö^,­ûlÚó“oû—Âü<ÝîØ�úÑ&TŒX>ˆ(#ÏÔ*±Ç®½½(9ƒ]3H7 4Í:8˜�¿·¹èäl ŠHЉGBe>õ|õܶ}'ɰ~€9#'ÒŠØîxÞá�aèÈÉì¼îpœîƒ.ȽƒL”n+žYNõ@)d.¶ýó¾0™ZÆCð#óçêµñ�~ì®õhÄAüH>�æ�àIêúHŠFaËœÉãÉEãïWÓüM2eXoW=¦Mã¾}7p¼°¥ðëë³ÙŽûÛQ´1 Sà+6¶ÉG}:±�Vnµö¢¸—AL#ÉF\å@:~�Àÿ|@÷×Ù¥¶ßæÝí2~h �@÷ÝÎ#>å÷é£>þÝð��÷ë¶ÃHÞ ð8.rÛ"Ó�;Z ÏÕŒ¹þ"îoK _=‡<'ŠfÜ}Üó{ƒ3H7õúÒ®šƒì ŠJeùSgyð‚›u Ë1xÂå}Õ\ÊA§K„n ƒh@º2ÆKÎÒ�a"dƒÞáÕâ¹ä>)ä/Âø$¿´p°kY°XígFÁ3H7&5MA¤‹’KÍ'<3çò oÆùBdáÓnF×ÎiÞd¾4óägèÞšúóNH-þkÊ*ñ�“NI¬“ÊkÔ,v—ÄšI¬T«NH@¿O€á0�ËZ¶Ê—K�ïÝz¹#¹ÂeHõx0õ�ö.™C7?óy§e_¥@Êa¤�h{zÛ�ft ¦oK _B¤¼$�½cô¾Ÿ²H-šI¬T®HAb¯W«�€¦‚¼-—¦Ë½¾þbÌ5XÔ,xÿöÝã�Nîó3çušÆ6öǯRaSV3Nzð>Œeîøj lX±ÚUë~š³BFðÝ·Œ 2eò;åæðÓÀêJ5&C„xe |L¸Mú¦W²ïBÔÖVðp°9w@rJËu›_+#.ƒ§°ºWÌóäÉu�}q° 3Ü Ù.™C}ÔEáóuòk°óçeƉ°~…ÿq¥‹Þ€=î-€ ž˜X9Ì›'EÞÄçFBëoß@ÔÖVƒ€ƒØ^Á3IDålôwéà0ÒräùÞNta÷®Ê³ÐO¯úÙOl-“çÕq°LÄÍq8š1¨�#gGgäHùañ9 (£xæ&H=ë^á�Ãsî5'nžt"?:̤³—ÝY �M$ýPH¿€ 1²Q•ð`:+Õ…îQ>v^o×éðÚdÉè1�õ‹ŸÌ”n+žnžt,¶óGöz‹ô.ʳÐH¿ åh8àiÓ¿ ‡Ýè¢Iéôüx�üˆä1ÅóH‡X·|6tÀÐ 3‘)5M¢-{c¼qtv³6tQ(ÅÌ,æÅ¥±?˜Ðkð@ÄxøßÉFžpóƒÆ´ùæFÝè¢tŠ?‚cU6tx¿ów›çeäæ�åûÖØ Æà²P1ý~ � ÀcçeMLIÒ [.ÛD¦¤#ÉF"î  ›¬ FÜìÀ$‚6t¥Ó)uŠ -‘`�‚”iä ƒJŽq:Òú‹ô.ʳê ô�«~F°ÔÑM“ŒQe.vVÉ6S‚4 7T $ÉÞ¢fÓ¥dLcMÛØ1®œs®eb½‹r'òƒ7n”a"dƒÞ4@Ò+Lž˜X9ë�ç çSÂ<CbšLžÍÈø©`¦ÉF?Uû‹î€OéîXÞp'¯ ÆBëmåÀ×ϱÚëej½jh�Ø> ² SlħºŠÐLæÊP3pgPvÂŽ£ÇÃFÝÐ@×$ø| xËU‚ç,åpúøí~Ýy9ߺO×gÜâ{©ÀÐLæ°Z‚•p·�Hƒß¯ Åeó¯ `x*aoU€Þ2 :Z+çøÄ jË4ƒvKT x¼Èqp(OÑJ˜ÈÐNh‘?x¥šçÈ9p>Ü Ï:ý=»ƒ6V³BÅ„~}ÔRƒ?x�Ð: :<>}7H‘û}váß6z¹änkè!¨®áÓåƒ6VÑ€._I¯Üâ¢Fß Åij.ÝêÙ àw4^¿:êž²Xµ7QåäKå váß6z¹än{:Šù«K–CVî$ß~ì¬ (¯U¶¡ˆÈ94¤Éyo9o¨ ˆ{­®€ÀO‡æ³Ê3E'Ú(¾~´ –Doï2ÑÏ Ñýîô€H-}ãÂ*0äeXB óŸ°$ßÁI pÀêJ5!Üt¹‚‹XôÄôƒ6Vþ™rúùûBBØÖþ"íÞåXB ó� .û}W ó›õò;ã#;ûÀêJ5JŽŽ‚žñ ô(·ÓüL¸Hã x>³lo­�Þ,W¡ àâ±rró[nËënµ×s°ñ�7?ä¸þWñ<ïò¶ŽyhÄag¾à;j®l·Oé«;öÇ#ôûÊy‡Ý›dÖj ÛÂÅb$†KãO>q OnR-MþƒªuÄ,>ÈùT¿óMf î4ïp<ýXL/�fyÝîý!÷ to¡y“ûï:×G§Òéøy¿¶¢ ýÞDÝæ+ò8rgMx!—ì/ÃÍÞþß9y~¥{Q;„ßíNiÞ'{5“€"a1“‘sçù"ïU¹8ù‡Ýù&òbïðô–*¦˜Ü=a9*åÞßlr= Ô” )<§_Ü6Ù]—ÙêèÎ †TŒZ“¹è> ´ýXKgªç_¾É9FE‘‰Ä÷˜}Ù¶Mf ½¼,bÌgÜ]l;v�¦˜RwÍókÏûö¡˜Ô3b¬D}‹„)!¥þüù…‚\>5âªi�ÄtÚAç鬸 3hÆbdÐîh߯ýBi¹z t}ãxAŒQe.qëgÎSÀ×Ï]ÉWI‘.Ÿ:Õζ¸A×Iòƒ2ÆCç àm(|'Ã1ÅQPMOæ¡fîpœîƒ.Ñ4ŒœŒ”n+žJê hÆBëm� ÅÚÅ/LJ& Þ+ÒÂ%Lh�÷îÊÀ×fõ_IÒÁ½ئY²Ðý›ô(±è OÊrÞx‘IDD}�7švU�D 6ÚMµ«ù@× ;ã#;ú_¼,¿J‹}=»ƒ6Vþ˜µ78ÒN©{$žàÛ @çÚjB<”`áyÀ¯³‚E„¾þ"íÞåX@Óm­"Ø%¼,ÄvoK _=ƒÂù©çØKg¨·ÓüL¸Hòôú+3}Ú—³@î»ð¾~µuŽ™%} §Sûëmws¬ÊkW¿E0áÕòƒ2Æ2ˆm(­°%lî+žJéûqZéøN¾Á3L‡ÞdÇ?vÀ<3çÚbTÕÏÉ—5Âû°m|æ�æáâÆšÑÂOFâ¹ä®Î½f,r0: òÐ߬5kmãÀ× ;ã#;ûgu6ë—5*õ[a2ë4ƒw~ž t-åo3nSñ”ë—%¦%LpùÂT˜¨8.œs¬_q”ëáeÂá°9ÎV�èâÅ�Úd£¤VÎ*î+žn™sV_:ûÒ[ø{8'�ÔQŒ~BÏÔGƒ0lø1¹éðØƒØ¯Ðnóg«ž^äëòJTÕÊã _íó— µWN¿gøÇ¨ysOÅß‘JyÝÓñøû7²ë4ƒr?‚cU Uö­§ 07I6SšÈ'³Ó1dN¨WG÷­D}ŽKü¯cëZéó­\ñ—|NU²BÈÞ¼Ò†,ØÒ³s¯ 8‚|)•ûñ ² £hùC‡^›çù#Š^žäeXc‘ëÚ IJP­úÿn]Þò.—˜y3ô‚J>2ç‚+$,ó�*ÂÒà5X"¨) È#‰' JÞDGØÞ9Öl�7p¼°¥óâgs„>²Ðiª‹3Ĺ¹kµòf{9p`X�‚+t�~yÙ`(-Øœ'â‚*"-ø)ã�ËûÂåóP)¬úB神2ð}ˆ‚·é¹ NDgï58+ˆ�'‚qñ‚ª"!0§@'ýfs‰�%¹Âéžã�Êçíš‚ §‘­ü: VŒ P)V°)p':Ýw>|¤ÊÝ%`'8*§ÓŽÝX)îä`â_½”‚p'¬òéú‹ôk®n®øÁØŽÁóTo~Û—Ï�YA”·îß à'zÏÄ—ðÇ5!Æ’¶!Ï râ‚*"-ý·‚€)‚¾o)ŒžK€JÌêE¾‚¾âã³™ÔÚÇäwg  œ â¬|óë|7îßsR¹ô�Ñ þ±þBP$d4¿j`,.]ʹ5zÇÆºßúºâ¾JߥêV=«·îjÎ+yZT)½a9s™IóRI8Ч "¨)‚Ÿ_�‰âí—˜óW;­éû$-¹Âé.«g)ùd¸ó›ÕÊçíݫȹ’G}°´9åHsÀ‡fô°®yà?bK(+¹Ä$Æþój…t ¬xú‹~íöŸ™5ˆ"íÕ–sæDê…ŒÕyÖ9‡²e_¶ˆp$›®EÝ�cÒžoK _IQݸGy¥»ƒ0ïkâdí€û~+ý?ÄÎiã‹ø˃“¾~ãrdmݬ°ä/ôz¸�~é턌¼n¹¬Ñ>¥ UöÇ6”–f”öL '™3ÖéjéÀó4m»ƒ1f[&âã…¨™J&]„ÄGØóxÅåX"ä�a>Šöaô!?“›¢&oK _/‘i"dÕ¢åø „o|ª‘SŸ¾ˆ( € ˆ@FvþCCRTL.REL[04/07/91]% €¡J ¢T& *©T�B£`2i4“J QpªL$“‰h‰X$U �P!QЂG¤’�„D'”Ð`™€Èd1£BÀD‚U(ƒ€¤b9¨C�4J¡�èU" �€ˆt*Q'QhåB𢔠Ó\XÅNªÐeå­zÁb*… L¾<šE 0ZE pY€%�˜U €$ÐxM‹ñ3*°èÀ,Œ€¨Ð&‹€i»!.ÁÄB¡à „) ‚ì�Äí @V Œ@�àe�@ð1Qvt€4Z‘]¸àC¶EЀXjˆoÆÔç¥@¨‡ÀSéb ©Þ¨²@æÌ*�@Ìl˜0 ž£‰çŽÁ„ÀèÌîð€0` †4áFpa¢ì0›c€&L‡ FC)x  r‚LHˆa´GÓ¢ ÃhHŒÆÀ q¦` …4MG(Ìi1"¨Ê*ˆ* h.g9ôp’£€ ¤À£à O˜@0ª #!5X(Ùb ¹ª€ 1dU=#Iø "‘@– „&Œ„ Ô|À$f€D0;€!ÈmVpÁ™"hÐJ‰¦0'N™At ˜€1æ@’†à@“¢q•&€€3„ØQá\¦`@…F˜DæyÂ9�Fr™ç6\eYŒ* ø‚‰IF¨0È\ `)jŽE˜€PcÀ: ã!T â7EÁ$�§Ø0Έ>@pဪ^å„d.2]œ9¢Jž` ÔP€JM `v—@hA A¹8G˜A~ �@ @ÈB¡SÒE@È$¨† a¬ »Í¸%ƒŒo�ä0²àY*E-¸Œ€X …€¸Lá¢:µâ@J•F(ÌoŒ8Áh²ÝdUÓ0aqb*€k³pq‰È(Š H…  6B˜]‹Øp† ”fæ§p"*�`~‘ÂaTw‡ðR  Ýø[  [�"Èм¦4™!.Á’�8Ý !s@ ˜#C ¾8|¾SÌðU…Ǥ Å€¯ `=·º÷Àp B 1ZÐ@-Á\ €ªoà¬@ ÖÛ]Ié`H.@˜‚*CŒ@ã ‹º!ÃèÀ†@áŒÑD p;`d�P 0K£ λ0¬ XÀ.s`"„8€‚'l">Ð'ÄàÀÁT@€0 !—ãµ|âÌ7Vï]û™snuϺÌ]€% d,�g:(¢ 7 uˆ ΠÃÐ^¨t¢-žư• &,@F� 0 #h‘0¢N‘-�B²`†ƒ’…à9"UB�t6EPCtr†P1Ô]‹ñ…Æ °Šà"L´d‡h`VbP /Ä8Laè ÖaçôZ‡6“ð …ì`L\‘n`\a˜nŒb  ÃD  ` ‚qª.ÁPÿ"> AþÃý ãð�ÀÂBø€ãÄvŠPý=×€˜† ˜ø ƒ(PŒ8*ò(lzR?pa &ðL�V2)‡ô- 8Š#³2C…‘  úÀü_ˆ†€@å Bα‚7z2C@¸ ‚´)Ž!º!B�A"ÐQD4T�¶Fa€ ‚¨Z€@_�ñØ$_1é'ÈH�WT Á"HxÁX:ÀˆP”�žÎ¡�&<hlBàP)b™žø/}¶>„pá…`¬ P€à¢arE¨¶Ë�¬.€u¡§à*+¬…’²–¢€V"!l/†!Qø‚(h‚ T{ðt` @æƒ ¼`¬ à„,ÄÀªB ÐÅ¡òàÄ Œ€ªBÁŒ}�€h0…ø€¶N‘½!N9Å€À„?‹ñ² ÇxNñ,(¡ öØÆ\„ È Ä,  àLÈ�ã€i€¨V „@_ãÜxQ ñh @<ER‰�e^µ€91CÊÆP©¸X€š+[Řk¬ˆ,d./kß ÁZŒPÊ8Eˆ=CT:ˆ11¸Áhç9�€±FhÀÈÁ3 Ʀ{ÀG¶Ñ03DÑä- À¢6`ðá„,® Á°˜BÀ,¸PX¨hÃhSŠQ6 ‡‚!cã,6B±)@¨Q ,Çé¡Ä „ñV-€¨Å­¬�`’=Fw"禆H‚¢¼ƒ8à‚Ð.à¬*ˆ ôà8Ð#´~Â�†£ÄAƒ€² ÑH À 9 f Gà !|8ohW¾[ :@32  Ó·¡D`1Ö>ÐÂaa I�Ã0Ôš[ñn0ÀX%XƒÆ ºeéñ¬æ ô4>I¡<èÁ@¬‚+Û¦°¸’R�El€t1¬0�+…‘ú@H)($4|.P‚q†ȅ ÃB Ä¤|m€4C@Ÿ°U€€ÌÌב€ÅÀ€9�9‚ bİkñÀª"È”0V°Ä3ƒªÐ€ˆº· ï`ƒ3…cª7APFàLÜY�Ì À¨Ê\|ŒZ::ÄËàÀ æ É› 4#XR~†¨ Ì�ñ€5€¨òÀ<£ÁQ�düAä,R°ªEað-‹!PØ•a@�ŽdÄ üá”(�åkWÉù`  íÈömÒÀ"¡² ®t@žu@0¤”€ ` áÀª€ d €X@�Èl£.da ˆ êMXüb�†�¸Ço|€:wÇd�d‘.ªLv`Á2˜ÀA&á„!*m(˜ g¬!< á‚àA’ar)\�Âð‚ à¨, ²>)žx ÁØaÀtFÀª@ ¢´à&> 2°øÏ!Ï�VÒ àÖv¡D0€Lpnr‰�àaÄ¡ Á‚™§JÁÞlŠáì `ŠJÞà¬�VÀ`ÏA˜Æà`:_áP’@”!´…`0�ÁNñÐ  Ò!2ôÁ Á` :  Ô!bäÍ\Uan!`A"á`�Á0ÁL`: �Š!®´�b�N DAP!ÔR!¸õ¡Pà:À”AT@â@ ù!€: �Š %Æ 4à2à!P S ဠ!¡†Ò%$Dá}!TüsQ¼ R âèVAh�A 8V `’R#N’�ÁPA.'4À5qÑt±$ )Ñ1G4q;ì�QIÑQQYÁWqkñsq{ñƒq‹ñ“q›ñ£q«ñ² öØvþDELBR.COM[04/07/91]% €°Î�fkÈ}ˆ^€AË”ü#3Ån· ÌFr€ Ó -”¶ˆ^Ðè„HÞ#Å£'YxFV—…€ltS ‘I!Ó ”ù×+º¡ÒÖªGD‡Äbr¸¼eÖ+¡Ïf.³òÝ”³¤Õ'óG[ S[Ð ÓF¨…´r³^ Æ‹F6uÃ(±–ÀÍ4#ˆ` ³Há¶9ˆ„Hr7ݨBðµ[-×p×m¸ óK†&Ö» \ X0&ѹº.§#ÒÍ„LYÜÕÇC£ža§ó;ZLÍ8‹-â^`CÀ‡³[œKƒS‚ž\/�ñ 8ÖH=bÊ!npL k˜+²ù³µ¢ûý›9e!6}Ðm•€¼ ÝHð9. 0 ­ë™¤öÁ ãÜø>Fê“%›òâ¿�̹™�i†o¶pÒ–”)Éj¢ÃéóÖ‡)ƒyš1¤(¤O Ù�¨é®dsº ­cÄ Õ&ƒÚ÷¾)ŽĪàC±ÂæFG� ‰ .³üÝDÌ<›'„2ˆs„&¼ªÜE áÖ…1Ó² ™¡À\f‹ÁpBl+†©š„�ô™¥H\a’IÕ ?oëþ€ŽÌf®M ˜6(i8™¡\@€f›á�Âf‰s�ÍÓ„þ�Æ%MKÍ*8f»a‰” Æ *ç>)mE™¡�\P\p­syšõDa‡5S³V¡�pì×u"×_Ó@%—9×)òÎ¥[ðy;“ é£MÚ�ÌU7$´`€ÌÊÝCBóÛ³q\-ðBû[æi]Õv1jÌ`^Lõë,&›$Èw!šGxqœÙ‹øSo_Ø©¢d‰#`Ø2ŒãØ ã€è4�ãptá(ƽ Ê6 C�@;£›Ñ_†!l‰C¨Ü‡ @ �C Ê1€¨æ0Œã.a›ç9ØÌ4äƒpÂ6Œ¡@\&B�@0Žc˜ë°Œ�KÐ)Žƒ�Ò8mA®dƒžð9 ãnÐBpÞ; ã˜ÓœcXÒm�Æ4 #°Ê=è £pÞ:Œã@A°�£xä<…Á˜& ‚x†C(è:ŽCpÊ2p«Ô½v´ ›èê1d�¬:eƒpÎ ƒO\1Ž�ó¾oÁ|ôcÝÍóxáÍzcŸ*zÞÀßÌ }pçûߊè‘g�膑PC9“è`Ž}‘ÉÝF)2ž²˜µ�"á)‹˜&–ƒ†}Ó‰s8¥Ú$§…«Œ vA A*¥”šƒ²pÆ*¨Õ ®“Yf‘ª}QŠ¤ÌšÑ©"*4핵f” ÷L¤5KˆäƒˆÞJéÂ9À„(°C)¦<^¢¨­Êå]+µ ‹Ñ ¹F°^TªÃXª°¬¥Bœë™ËWêeMŒÛ±“‚ž¯’X G*×[HšaW*š¾Pš'‹š¤Wv’2ØÓa-<ý“@.6˵x¹+:gM@„YàßL#v®±âTI[a.‘+rªO/á  …š*£$9ÒG.%="´ü�øG‰�’‹zÀ0æ~2aÁbÖðÜZ|®ï2¨c‚õ¦z”�ÅœÓ<7@™R�L†H|Aœ>Š0Þ-/ø/À@¿Œ‘Ò8F)>a&—r:ÁÈù¡€4–ɘ8GÈÁaðZŒ�ô+�ÇR¢9ƒ¬P-ÇÐùa÷ ÑNŽq�É¢La0�Ê@,¸Šüq޲>XòXc|B*‡Ð[Æ"L>  ~€Î¾œb@9€Z'&� ë”ržVË‚ÿåÜ¿–ÃÖ'Å /]Œ1ÿãÈL€¼pP#Yç‚ð®Áx_cŒ\$\AðC¦¤Ô4…Ð aôH†ðø&8Ò@,ƒ­$tˆ1BÈŒnõ 1ÔÚKTê¼o£0™ÑúPu�!ã¨�èÂ:Ógí9‚4ÎÄYŒ Aä,¶Ð7ø†ð:0� ÀÛOjí}² w(5™3éÁ4ñ¡8„bVG^úß�è\  ¼عAˆ 2JÁ;à!²|ôú,<‹á” ¸Z›aÃ…‡�|0ƒï E\@uãœÎþiË|¯) ¬Ñ–yŽÔÚÛcm }ÂwåÛÛ U`!W‚Ãð`L‡�b0†8 )XìŒQªF@1À£ô� 0†ð #¬1Ò0s¸§¼×TšÉkó"ˆ -`”0.Òz ¨Z}µ‰‹€[û¨þ‡a<á,4¼@¨aLøPáð—Vq¨G€Á”iq# ùyUAJ ®¦ÚøémË!^aX[R"-†PŒòçðaˆÿ/K=4B@‘€=R)ò×0Œ0ÓêÕ'­CØ€†1¼¹‰»ŠrÙ;DýÊA÷~õ$a”;~™ø¾°úàêý�õ@î ß§íþ²@.gß Ò@ ½YŠ ]l‰œS›ì¯©<!uËâ=X}ø(¼À½b�®˜>h;€Y€h0€xh&?JX«›í@¯IM€ˆr›‡ 8JëK?¸ ˜½á]£ã Øþ=ê1Tƒ“ ;ªëË€ e€,¨kÂH¡¸ù»Õ¯Ð³‘°µ‡r/#;߉'¢zë–øb†l*»ò<ëÂ$û ñP<˜e¨«è½`6Ä7z(؇+«™‡(7)†‰c”SÄ?aÂð;�¸A¤8Ü—€r—9t­¬( �Ä7><8hÃü@­�–BÜI ŒAâÞȹÁЖ°Òp§Š^=¦\ »XìÃ+ÞC84ÃHfÃX€�{�\_(hrÂð‹¿FdbÅÒ‘§@÷Eúó‰¨÷»ÑF”0»P¼%<‚5ëÊ ÅT@ìVˆ¼-¾«í��iH<ÊcÃCô¨D©Áº £[£üD#ýhaÄ\F� G‘8ľà’X 0 ¢�Œ,@Hê‡Z(IÄYÔ¸DŒ’‚°pÅ©CAñ^JܧE\¨È»÷0È4ƺŸ�\lÆt9É|}IŒÄ²X>àP€““äÆÁè–†L�›d† MsÒ l× “�˜a‡DºÍ;‚ð Èr?"\ݧ´·Á¨»”º�´Ê|VL¬–Œ<Ո˺‡Â­  Á þ#PU8\ÚÈ‘iÆ`–¢X*˜õÏ\‘Op‹ˆ„ø/x—Œ:K 0DÏ:ýO1/ÔûMüOò¬‰QÄø‰ÆCÊ@ BãÏ<üè­ãîÔýªÉqOút °Ðdè"³÷ ÅQ#Tž§‰•ŠªÎ;b8Q- <Á U ÔúÏdøOäB¢‚ýOJ��TÐÚ¬“HµÍù ¬|ò € »¨~!ܪÒäÆÒ,ïÏ ï�a‡-¯¥=*ÇÐ5„óÊ  ÒZ¤—Ú÷•tÄE9På =6I݆P.Ó•?M‘]7ÓÍ9�íÓ°fÓÀ0¨a†�4 %:Ð%‰’ÎÊ8‹î¥=P­ReKÑ ·QmPÔX³Ï­vU4Ôb±I!3ÑEL­ÍCS��*²¾Õ¥LSíR' Z­¥BSå_ VE^Ô%`“=TPuѬ֫˜|†hB€¸Äˆè¾`=ˆ0i,(G€´Á†mpS«°�Qi†mn[5W*Â…h W…s:¸u�PÄ�YM¸lZ×P×Hf˜t†*Ú¸LX1°Xµøl°%…Ø�a q€ð[+ ¸0?‡ð †Ð'¸Øi( †° Ùh0Ù]–ƒØiY`k;€�@P‡ðP€¸¬@ €éZ¸f‚¨ ƒ¸† Z€=„+N2À3€õŽ€§Z�ªÚ»r�È ²`¢€÷ƒà[Û`lð=†€kü¢¨ Ìhð¹`MÐ@½¾˜[ë±!»ø2í!�k‹Q[Pô²e@�Dèo¦™M�À�ÑL³d¦X¹„2z]Àr�UËV€BÊÓŽé]ŒKd… .Mµ îÌÉkëÓªÚ¦†ÁDÞ2¤Éœ>àÝøwÞ ç/€¬]òÚ´má:¡„�æ^íã¨ÊmUð^jú^…òß=îÞ"E¯« 0ˆ&ÌÚt�åæK –è}�a‡%ÃܵنÀ‹X€ =”8цJê;°f‚ÔeÔÛñÃeæÍÙhq�-NÖðd‚!M�p)‚¨!`ZëìÀZ'Æä»P`�’Á‚B§� ƪ!°â!N´�|\²ß pØÖ�†á²+ah�`“UÚ[ñ¿—Ñð‚x'bÀ6˜:bÀ&˜*bÀ8–,€)bÞF Û¾¢<=ÉM΢‡È®¼MIRZ¾ÑX”,bRzžÅÝd ;ƤØe Q1^ADч *°€Ða…¶ά@d;«X0�a€Ø Gü%>@dZÕIÒ‰�ÀçVR† ä\3 <õ#¿Í�¨h¡H}EM$9†PJä\ú¯­'B%åø’a>MüÂ(Ä�åèffff Øf~cäÌWÌU¨Ä§/uKæ•R'­&”ÞpU¡MÆÌc�Ä-X+ê‹8 ;vx­¶y—ZäiIЇ$°õ‚H„( �HgU6â -Ö4`b@¸¤Øaž€¯xä8�†P^èfÆMϬ€ã° ´lŒÌL‘#V}YˆÒV(íEºX=ìh -|ÇÏ®„†Õ€ha�H<*œhø&¼(<�G< "à�,b  ×†P'àa�£Îd"}‚ˆf†( xeN£@FŒfVFH8A€å‚€˜þ„f¬†�‚€~´ë\¾ªhe6£Oàæ^…γš ^µ ~¸¾àaê0÷êû̇6º¨Àü(jî+îl@ÃÎÃIHˆÜÇ��A¬\®XÃæí�^[Ø¡jF•¦Xe�8€èð­&FÕ`)íX+ívÏT,TÄÖ„½´þjB˜a[»Fc€X*;þµì¦Ó'«üaVåLjgò§Õ膉 fm^‹áFŒÒhóFç|ËH ßCDBdçÈéãš@@¸´j0%úWè†ÍÈŽ€ö…ožaÈÕlž°�¹¥1vSxe&ûe«‰Ø.ZæÙ‰‚(˜úÂÞZ°Öþ`½ÜíÉõ0âîïµf®Þ0Ñ0çxf„– DćêXvðå(PŒžðªÁ£d#€Ê(T ½ÚÂqŒ%oýÇNVÿ ÷ Iê;ðø4ñ ï»vði ŒO1 �€ˆ o8ª°ãºoZˆæ÷(ƓT ÂzöÓ‡ 0ïÕ€fÿp÷¼ *ì¯_v2<°pwnäß°ßð²¼ðÄá˜eöÊðïzò1‰„טŸð×tSñPG{ñxq�¨Çq€,éó qÒLÐGhrh+rr r.‚"xpwŽrfZ×&çsø#w ò§,ò¶Êò¨häÈôú§ˆT€Œƒ�FxèŽfÇ™y€ðò�f€K¹¹Lyì¶O§Ê§w-·0½2 _4Ý‚�›rØZ†PhxîMú¼™ój·s|9‹Ÿ0ƒš%€¼/;ßv”3 sê0GÚXÈ{ÍÚû¦]ôbM$ˆ %ø°�½ Ðða‡Ÿ¿q¥è��Gûòl� ny�*€ÐâgÍqr††”†ˆøT&‰Zûô)�Ëô‘Íf|zŒ(ÖWØ�WÍ|ä܇÷Ù_Ò†Px}Aó2‰õJä� Mnø†Þ—â¿ã}=èNçõª§Ù=uÒïíbA4A qï>¥ €4“×_•ðûþvîhàsv€+8Ÿ?8a€Pî'›l ÿFdWö dØ.Ì|ÆÊ{jë�Ë‘Jkݬ˜6�{ÿsŠ¥NÙJƒ±8¡8,©V`™n�(êô£¯öÀr��àD Ä…æÍ€|� ~ÒVlÃí$±V¹mh9˜,’Vl±]ïëŠ��p÷2ë–ˆûR‡oív–9KבNغ�¹ì±]´Ð/5p=Xa„ø׈b×ø¹ó WXÐfÖà`’U{â8¸aÀ×9³ó¸e(�¤�ˆÉ8±�aÛc0dÈ`Èð»¨n!Ùk� Wž¬)k�´|ÀdØ-ƒƒpuº`eÃe€À[b"‚'—#t⑽+#¦¥‡˜>¤>àqZV%2z¤Ý%zl‹ž,=(ƒø¹«cÒ‚5 ɞ؛¾àf6Ê-Ù«¥Í/Wà�†¹:Ñ�–§¥zVX_.dÍØÊW��fý¨&?¨ÀÄØejàØ_ߺµ`7„y �…ÒÀy-9W>à`ËŠVey]‚2Q®:ñÎXŽý«Ù•¹�Ë^=NW‘:’ì<{HhzÎÒÀ3ËŽ=É>à{ËŽ°%tä]Š�ÄöнA`5�Dû‘86k�$^X#He÷ØÊWóðµRžúçøÒá6“|XŒ�¸$]0À(™˜«æ J�O > …•)c“–©!\�RˆS(jÈ·0W?å+•˜wÞZ³u=…ÿÁ8É8[pzQu*âW‰¸ð•rì'ú””‹j!Ø[�¿ðfã),¨zZ;“>.%d–�cÛp-b°ôÓ=,2³.…�†b[ ´¨£70úf£ñ;áÁ �•,k*–�c–�¹Àª1`bö�‚BöAÊq†�4+˜7€;EÉਨƒÀ؃˜šˆA�HJÇEÜ4©vQ œi]œiåyvh˜^W‘9Æ•Ùí¾@%“]…®ÂŠƤø�:x¯%i(a€Ó5¥‰õ 04Yõ|‰ °¬C‘¨ÇÐü�| Jû ¨¯¯ i(À\ZD8o³Ö.›¸¹ñMhœ®(ÈðeÈé†YPa‡�5àñŽš{�6„Ž«€p’½!0ê•e¬†h€f–�€çòDªO'AŠ„l•̦,2Ê"Ëhs,aQñ@©~'–T1û̘ê‘VÚ]8P bë’ÿœÝgƒû:Û� JɄغ¿ö?Ï0Ôs¤f€šÂ«Ò#±�xXxZÞ⃉ :™tÆË¶QâÁ�-�ôñcÌr¾-U‚¤ácÛtòÆ`|ÌCÈb€ Â0�l.` 9(0�`¬xC¤¶X$``¼À`†Ð5�bX1¹1ºÏÑaG ð¶øX†PI�c£ŠÂ—ÛÐa„ ¶,ù.à{ŽX˜Å 9[MÑoÔÁË·Øu˜p$b[�ðjÔÄw4f†QaÂTPj¹”ûT)z¡‡èe‡p ü;ê+­L,Àp…xa�6¢¨õ¡�€…Øe°˜x�mµ¯øZÛeœ�áÅ]m& e‘º€a‚Hìh�X?Øa*øaš"σðe8‡ðÆÀ‡ô:8†Nb¸þ]”†×ÈÙpi|‹%…»ü£}¹ÖOƒØm>+ˆã",ø?ðÖO�Ö«oCø�#ÙÀbhYÛc[Ã0}ºÏƒñ‘ÐÙpirøc܆M‚Á¡u‚;‚xXRª±è+±è/±èž8YÐp=…­|�vÁ*¨ Z»¥�sQ[Ãv·X ¶X u¶ …(‡]|2Ha�àQËÇ/I×8ës¤¶ ¹v·3ñº:3�€”,€�d‡hߨ ‚·Ä�Xj¬È/¨^óÐÑï²MQÚÇ­u<�ñ�$Ö�dœÖú W€°2°OZ¸ †O�qO�šŽŠ¸a`�êp0�ˆW�í¶x[a%z$yüÙM€˜ ¤ èp}ùä‡ ù‡Ð]�p#tÖS†<” ®‡}¶WÂUXW€2s¤›®‡ø[a%+K$ë¢ó¤ ða¨Ûa%w�€23¤ ò§í8d’S¸€2³¤ ðaû½’R®¡€W:@¿*;ÝñËpÙ°a Ík$ƒðsød(#ß; C]�D�xºè@�}tú –�8�8[eU®1¸½ñ�MЏ}‡( [ƒðƒ¸·(YTI�xdõ€¾¦¤sr†#ª†[H#­‹ða ‚x[‡€�È”˜I%z �Ír�x<��Ù耈 �š¦ÔeL$�˜f‚˜}ùïú !€; ®€x ª›ÈI%y1î�Ø„eU^­�𦠩A�éïÍI¡Ò aëföÛvš‘…£…}«ºè,�€ÄÈB„z†5€O²ð'€0�£� …¸ ð mð?�€<†ðM†s�˜+X�¨a "�ݯÛ9ÜÝrU(S݉“ˆ-£æªø€Ô=mð]u ,OHG€$”4E�–߯R’S$€0‚Ðý\ºèt…ñ€3±UË®‡Âš‘�Ü€ºè�(§x‰/=ö¸(a¸†�!:À‚�Ïʸ(a_w€Ó,“�ˆ¿Oƒ¨†��ÆÈc‚†(�‹ƒ¥$ÇlP0πąx/4ÒA†„âðÒA†Su?Ùõ¸Ha¤ÎÓ„º†A×Ç¢zå…�…œ¢zã@‡�Rˆú æUV®‰Mx@"îÔ_Ð䀀ðfüºd€~2à°� �°�À¡1™¸3ÐÖÐÄ„€€ÄŒI€þ HHÈ�™MˆàÄÁPàEH0þ HyÂ[(qÖãØÐä�M2Ð"Õg8Îxèf4id®bÐ-Èg˜þû²¾P † Î"ÒýnqÀ·�9•nØ="HÐÚŽà à€]lvþLU.COM[04/07/91]% €°Ç@ÃXc° 4Äf¨A 3ÐMP�ÛDÆÙU†vE¤iYvFÄ‘®@¬2,µù-˜d¸ItÉ àÍÙ«Pk Â^•„nQPT?ÌÆöM&šSê5:­^•L§T&ëf·d³V,N°Mz­XrºÄÀ }R¬!ƒ2l‘ í�#¿A›Ûø±‚½h3âú½†Ù!O+„Êe±Œ–37�ÊWlâé’ë=/µî§NÀÒlO'`ô·x ö�'˜ùºÞž¬ÒÐ ×Æä3E 'Žèø/3ŸEæüìøµd5\¬ÔH ¢Í5€º=>¨�¢d«ÆF07+“Çñ‡^àûCËÔë2x/“ô¾ 0xö€ÆIŠfŽ ‚dˆ‚k<&@ðˆãÈ>'šD �aIÖ�¼ŽÔJCÓÎn}R‘’Î@ðƒ)ºE¸š£Ð^+�ax¾ ƒ&‰^=ò>/ž!é�z� ¸ž<â9†SOcÜøK®ù†&¼…ѰÙmH8™xøº`øÞaœÎDÐd&èò?ï9“È20£Êà¿À†€aCÑ!FÑ@e"�Ô !H‚"X @ @rb€Àpü `˜ a Ç!âT0"fàÉòa€`UWŸ*¸D2Óƒ§`D/Ó‡@ 4á¸,„B a�³iša�¹i™!�¶BóÞ/`Ûp Ö˜> –˜àfAÝ9LAý8 {y�ƒP�fh à”d€`rƒ„$œ@8Œ�¹„nlù†•KSã…x$â¬ø2�`È*gð@e`nedðDa e—˜`P�±àùjžo�¢8u—–ãÁ‚eÀ&ta &\c¸G™klfjj€ÀHBl€ûGSˆ Ub�jáš}CŽÉ”/€ØW“b–´ 7uXXHBp„a`!Ò@üŸæH|8©Q´E€ƒzêî¤Ç œæø‘�(x‰sÉü¡'0eà#º €pBXu�À† ' š€;ü°æú+šÀA°!ù°j‹êÖÖªG0š#Ñ�ÀæiHœ ˜4 ŸÁÐ|G  ¤Ø k˜'¯ÀAš€)B há„@(ÄJ ðî@ -z 0î4P`Å€€¨ñ”`Þ£h€V¼©†£ú� 6˜Ã@¼©á;¯œf‹ 4ƒ  8áþðƈ! °‚0Á0PÃTk¨!È@€#¾¨{Ã8À¼e0 4FP�#„< 0³_´ã!öÇ1üã°!#ø0½0ö4°  mõ3!”)c �à=ƒ¦Ÿ ÅáB2Lˆ� x�œ�Ç,ÅS,a� $Ð!€î‰@ñÝPÃDH@A.Ô©0=„䳚tN ;$ûœàxa� :ÁSÃäu ÀJ˜  Îˆ€Jx% `è‡0]Ghµ¤Dƒ€@wø²NĨ@N€bøÀk€º0à~ @€ H$„à¨1‚D ãLµT9;dìb‚–GÊ!´NÁr D°�0ä ØBÌe· €ÝsüÃÏá£B ¡¤èàÞ€r áœ9ÚHn´2†ÐÞƒÈPÄ K€ à)…@¤(Î !L)…‚Æ(T áT(Š4‘²‡Run¬ÛÚº?ý`AÕ­aŒÚ÷_Á �5¢µOÀ €#lhžAj×^kYànàiqs£³­½…N§©v­µº¸ [ˆ:Ç Ì­`*¶Öðçuç,ç»CêîU»‰~@¼7b¬WûâV¯uä£(V(z¶‰ï­pQw¨¥ÞÀæ0ìÍĺa§‡<&pè×~çV0ÇeeSµ‚Á©b B‚´€+¸ S€TñÞ«£öàÖ¿Õ ¦ 0ª3FX)­sÜ€yçxÁXÑ ¨„ÐúÍÇHV9y�f¸K¨°!ðY1fÃè2Ë „;€Éè(s±‹ž•îz ¬òFèçS±N)3º(Ñ#üÁDtÅo#€��øÆ�,mCO; Юˆ!à0 pª€{B´*ê¡Y’ÉØ"úÁ~‹LŸ?8y`dfŠúYÃÛ7 í¨E]€3¢A¶ °t Œ–æ'  »#-d.rXÚz'k ¬–A€MкX’sÏ­pxM¸Ú%†ì¾2�¸ 1`$Ïß)ù•2´÷ ¼e¦õ¼A X.åWRzK†îÀ´aðÀK±p༩ƒº `Ñ`¬ìðÞÀ¸•kàÜ ¼=ݳB¨*ÙÁô”ÀPþC(Bs†2…w1ƒ(Zs�Ï9ˆEC+˜„ñ”3yˆUCC˜„Á”;¹ˆXCߘ…!”?€PÀ(fˆ  …@U;³Àh· ÝÖzØ*U½ž² w�§tƒ8ÑÚrwý¼¬•=¯s`ÝÛ-ìçFA·‚î¹ha�v %J?Žë½°ö0CÙpXÇíóÉŒ>á™òøÂ`+1úGç·�Nñ]Û­uμ3Cøñ -¶?gäûb½‘½ëFhÔl¾;flïQÊ‚¯,åÁ$ó!”~o;?7¡ ß›ÏÅÏÍèÃWæô¡ãïÀnòä[‘qNB*À|hîC�†þ'É8 Í Gõ~.#ù'ç#â¿Ä`�_êýŽBÿ/Ìü€öÏþüoãOàýÁš )ïï-Ëoâ€Úýï÷€˜P10'cº@4ÿíÀÄ!$!šò ô­ŽãIè ïVË@TÛÏRÍÑ,¶ÛÚPrËAš`\¡ öÅ„`Þò@Ò àЀ@Æ @ rfÄ @à³@ \ ÀÞ`Ò  Ø`Ö +D`Z e'* €Ò K ª€Ò €Ò�¸ ÀÊJ8 Š>~£ À @Ê ê ä ª"` àšdÀ` / @Ê€é  €’@¤ ¤¥ À‰ÀÊ `è²ð¸Àê €Ø Z¨ ë €ÃðÆ@ê ÀÍ« ¢*.ç±nJ�…$‰è0f'ÞM^¡Àç Š@@ž ‘×Ðñ àó'j" `Ù ñÔÀ!%XÈÐVªÖwAšà>ó„*M¢»8Ô0@m+Iøw@Bà;²\<2Èž’b ˆã2ÖœòÊÒ»+î: € [-F÷@µ.+’¯2ü; êÌ´NÃ#ì²õ& B(nèð�š`6g�0�š1 «1a”sì@BòúШÐb!]4`ã-š¯ã�jA<ÀU5ƒºà;*óm2òÇ.c»$ÒQ%@B“_%Â\’nå.Ö)Ór÷/-,àB€`:¡+5ï!@„ 2�ðó €Ü±ÀË( À™€'ÓÉ(K1( @ ¢ œ  îƒ<Ò‹ `ƒ€ß?€Ñ@‹& Ý €Ê Â�™~ÚJ.'J$j-tAÐңТ @Š ˆž À˜ RRŸCt`X¢QÖ Ñ. ²– º ŠAÎÔí“h‚ˆŸ€8ž€Ì3$ñ€º*×H2©*Æô@ "´Ü+¢lt Â€¬ÂÀ6½Ô€¤N; Tòâ3à?IáH”º "íüÓ8ÎýÐs±Hô’ž�H�¶¡×Æô 4ž”ðña‡HêûN¡›0ÓSÃ¥JÌ,aYËtŠPJƒ BW ~ªÌ +™J¬¨¹Iè  *Àuf¶nhsf@±„Éù‹`B x³O(ÐÀ*­x·IrÀøÄœøÈ˜Ïk!‡�B T.Ô©J)èl¯zLµ�)犃º-úÔ8¬8þßYÔ8õЬ¯�ùŠÔùÏBXx¹N€ÁÓ‡�C‹3ßV{H¢Žà+�¹,/BÙP9C�«ñO9M�­[W£zvÉy� B¸ëfà¡Çk€‡A O Ç>ö: ±½= wb ;b6S>`óF J@z¤Œ²ë€Ý?`| x ò~† È ñ0 Ù�Íô.R‚  Å  ê òb à écàvJ ‹3àè¤1½@à×àî²SñžúxŸ•áO¹VcAÑ�z"ž€˜ÔŠ�†Ê×^«,VÀC|+¡¤×R¼Z1LáI{5DÁ`PÔÎÿ­C¤å€*z=¤ è º7�ŒÁý—JžY‹˜ð  �չ𣹡 y§?ÖV‰©�ùc¹ú«¡Ó¢ Îc»¢oBZ>Ÿš¿i`1£�† 0­z¿�ÆôºK¤éá|7s­¸|Ú^s>Zgp³)ÚRÜ%À-­ZÙ¬©èšÑ�±50á¢U3àjõ„÷Œ²Úî¬zÐS­55‹U'ÍUz×`mBÖ5}®ó53›(oAvõ×X;GT�µûcX5gRÕ’òµ‡¶Ì¶ÃY-:5…Y›~[ƒ´r:5ž /ZÕO´u¨�M\µÃ\nBÕMüÁ{MV{²/õ­{8 ›=4í%û¡/`ᓘÙ× ÊP¡©ú Qªk0R‹¾kz³¡¦-ºœ¢8¤± ñÓ¥ à† @† ±@å y¥�ÀÙ™±)€Ò óÐ \5FªºX"µ=V ‘`×ÄU=W-C1áÍ^²Mg|k^ð6¡9† ä®yÛJ#9ŠjÅ—¶)Î×{Ø_°X§|˜A|êèÀ3(%wJAÊ•'¯&Ë{¿_‰V{†à•÷n-eà3È3¼ªˆ ìÒ x¾Ø÷Wß»�…íîÓÍAïß ×M*@Пð#ãcÇëž¼c@Z�›ì?)`Wï,‚^Ü÷^á%ÿG𬲡Ê!•ò@B ß%ÕÖÏžý]ãº;B㡯òw«¼«çÊÒ¿ý\|ˆ­5;ðŸ+òþ=Çu´5ÌÐcÃõÁ•÷ÀB ßñ|QMU÷R�¤b*ÊÊ�ùp6<#ÆSY_îSÆ×µRn樴vo@]þn×_Î×Ê·±Ra†;&ÍY†¸�±¾'¦³ à SÇÖ('ùüM>OgÂ<&\*Ê  `ʲª#óì =£o¡1ö�@ Dœ\}oPÁ란Ï�±GÑqo¶[ßéÎÍhÍ0Ÿç·»©3 Œ -BiÓñräŠBœÖ×¼»�ýþml¡ Å—¬r$9!—ãÊÖÀFk?Äc�¬êÒxÞ;ý «ýw¶ö^8Nž»¢�„ <!ÑO'0a¤ÜqJ�þ� ØB~€AS÷ugU¾üôÙuôáûÁ›"³/@?£ƒËà=<8’ “€Ê ñÇÓlÑ�TAPÆ© æ‹#F²êvKÞ6!n€è ¥!MXËá”à?]pq÷K^2_øßK–€3ùåù\r.H>~ñúR"Ð�ÕÕR*ûSÞͯfôR-üµ“íµ<“õ8ç_[õîº4 ?-2¾K`ªA€¹ã`êÉ«" þ(ar‰Böú'x5+y;²½»�š`@0ºòí¿¯¦A˜”oÒžŸ€ t¡” @S·Hž—0þ%…CHQ:1d`Hl‚v¤¤ß×¹Þ¡fl,³O½ «÷m`«·lÔ!ˆºjÚÀp0„!œ èBß§Pí¨A€‚@H!\ `ªÆ \!‚@ž @¨ªÈA† ›8¡æ ¤»Ñ;á’àŠ @¤IT)�€¡ež2¦ ”ÑJ±^KQHÑæÒ"ë  ºØ›ë|ÝíBÚÇ÷v+a¯ËR¹íB¤Àº î­x ­m»a¤@CLøoA&6–Pá* ]O{v+WeḾAˆÿW·mEÏŽ€D,Ä âÿWpàÏ,Þ;ô‰~.¼X­`Mp€ÝSkXÀ]�Ù-ƒ0w…w¨�š*�XædR ¹ËíOA+\QMæêâ`Üž‰í…A_……ˆ­"ž…B´°ö�3u8V å‰3`ßÒY}$K®a6A†µÄ'a†’ R°jº¸šGÕ€B@G†X gu,¾AÚÞÙIÇÒ»3Ÿ{œ•…Ä:�ÕÔÆÀAë�8–­`bDMôK�£w‡�B1t‰¥qå;°k³Ójá}Nh¬XÂÃ+ŽÑ›ïR®‰,RfXÎC‚r_�wIêË—ÊÖúc�DUt•UûPPáŽl Tk²ÜT¨^w€Ù0t'0aŽj�ìØ³Jº WDåQ35ç¨3X¡]†5Õ-×8;²á�Wß}í¡š »—O`DÖÀB€L¡ ¾XÅ “õÑ"L˜ÖÜq{œ÷;QK�—”!`.Àlë¤y�e>T§y�dÀ\e!¤`L­a`ÀeÃã»_ª H­zà# :¡/5#¦Lƒºc õÒl®ŸŒî¾á%ö‚áÁšþ=ÒbíÅw‚»ãÇÏBÁ´†Ÿ�Y€ ¡†CÊÖ‰é|"(Ô7ž�ƒ^{ß÷ló!šsB\5-íÏuÅþ¥Ðquïð6À€J»SéÀ•ið Îõ–û~AZ¡›8aš ²Tã`U\¨Ž;Àþ;·,ÏåcöÿÁ{/°IèÕæãQ,WLã Û°ÿÃò [«Šh¬Ëì`þŒýÄû{¹•ž M3+K%&¾æãbÕ TÕ�]éÀs¼è­d€Ç¼W�'‘ ‡u«xÖ†; YQQs½èõçO*ÛÚ@¤ «/¦€ÝÖ #cÚ ä” `[=À¤ÀH! à>럼U¼)vP£²ê£³ÖDÆ�A=a@\"ešºŠCºØêþó åO@Rå¨L¹d^âºá†N¥7-Ã+ÿã#Â7á¤ÀOã"œÉÖf;¾v!œÉ_¨eA«nþL�ccº’HÌ”ÊA” N'0AŸ­{Œ”–Þ:)Ìœ³âU|ÃáËY,”W© A† NcìœhAš£`ê ¤@ ”÷Rا–iø´`P'0&#ò·)móì÷A3´>ÇéÌ \2ô¦4úÛP~À‚ýÀ\áËDz”)n)Ï 0a+‚;´ Ù͵‚Ït`i ùf’¶M”;¿ç%ú€ÇF^£@t}êºØšÛ[>jÀ`"¸¾AáuT¬¤ORè» Cæ hÀcÓMÀþˆ‚µ6a_¸-PÃÉäÛ)ì¤YžÉèS¯l Tù!üça !üéØöÎ�aü A•�a†€Rž4ÌÊéùÍÞ ÀR­q¼Í%ø7ì BŠ2”º#¥ƒ�×{ì B+\­q$àj�‚hR‹Œ¨žÉè«\h#»Jh!†ä?ÍÖ¸¡ñœ¢”$ Š2 j8£Ê@±Š@«®fAåaÕ‹¯âwРRQw:ñw(Ñ*R°bv°Ü±k±öQÑqo¾Yì;®1kW”¾e¼ ¨‚™dŸ‹ö»�âKÀ¼@îã&ô TaµKéì­¬-KIÏê) ¹©ÎL:ü«ôe!¤‡Ä·>¡®Áã56+KÜè\Áazèá¨X?Jüá BMVJÌ7‡ØPå]Ç@LLaú^­€�õp¸%4ïS¢ ,¬!¢wt)¼•,<žÐ@v‚àâ‚Æ #v·"¹‚¸ <3\ òõD:G@"Öí:ÕxB“vö¦®˜Çi_)¸€\ îÀ-Þ,N€\ž°#–{€Þá@xAŒaü�”àXÀV@¡üÁ”@Za '-$üŽqnLô!ÈÄàz¢¸ ô«Ó+¯ƒ¬;¡§À;šã ’›>!J–aš`m†SÒOÉ8P7[bkiè*z!°€`”+„¥ Iàifµhr—D¡9..:€X+„¥RôÜÍlÚ¡f õ6a¨rÉò@€hn¯ðœéq´½ô6êA5ÔÒOðJp(:ЈZ'Ð$ ÊŠ!~Þ¤ÒOð1ÃÓß@#�°Ö­!‡%¢¸o¿KÉ'^þd SmÙHT9ic@šßm!˜yâ4<#|!e�™ê¼è+€"À Rýðºð(yî�µžŸë0aÖvß̉s…u �»>!óØÍéò�hãÞÎc@¹Ãv{† éëæ÷Ëø@mÆ”"À­$ÿ ôp)�é ]K”Ä!Ò«æLÀçƒõ^®¸7j7Ë„,.Gf’v7êM$ÿ &.(º îiÍ'$(ø>OjàÃV¡ ©× “A�¤RybÀš ’ ÈOÓ]bÀš ž  ¨| ÷köV)„Üàà 1± 9Ýß�€Ç®Y›B”lŽà ÝàZâ¹ø ^"5ˆLÒÍm‚¦ôâþAڛΈîíÞô Ÿ%¥RåÄ¡ä�¢¸&§Æ; 4 ·Ã D¿Ô!ˆ?Üè!ŸÚBCü˜0ŽàÝæ( ¸ ž�Ììþ €«ªG ¸Oú €ßA=ƒžb›>!ä?Â途A‘N  à²?Tà§ÀÝíu¤|,R¯u¤ ù÷íf¸ š¨nÅ*öà„±@׊ê}Y€ï4V†n `+Љ^²*þóµÔv�6€|œ óꇊ*þó äa\š  hü°ʪ "¶ìkÐhõ”KÜu+ƒnû•¢š+“Er:+iò%ᕽõ®ƒÒÏHŸ-�âoiøfÇh‡ÒÓh `'0a¸vVz+Î(¡„ `ö Ük¯!À`¥3`Æ ‡è­Þ b+�n`ì uà�’¥þhýõ×Aš7áš+¸9í"œ~BˆX¾(�€b'1 ^³ƒ@B@eÕˆï¼æn ;sA„ bºî¡•ÿ¹֕.7j;¡ä�«ð3‰Sb¹ÖÝç¥K°^¬µYá‚“¹~`dwi £|Žà¶^aí"ã±ì`r@C�°~a!” : Ð~bã©(~ ”ûäPëRK®†�”eIëíC8�°0õ#Kâ¥+�¹›žàè÷Âyâ²ù¡bpÙ� ë€~R ¬£¸3‹Ü?¦°8¡ƒúbü° r, F.¸ Q·ú/DËDÅ ÀFÀF.ð!”àd`4c¹�ƒ´!†@dUk)@F.,öྠ/ð . á¤@d�ܦÀB à*Aœ[Øy×-€BxÉsº@u2»ÙCÀB b`¼–(1½€ópÏ" B¥ÉïLáîÏ�,,o€”<ûì¯08Rø”Zº (À >j 䟀(Í_Ä;ù³¶oAdŠÖd)ùÔÀŠÎ­8*×É~@ˆŸ–›,†¤RœàÕ‰ŒÀ#Â7á´@h˜À…{”N¬¿VŽ€h­}vŒ<"œèpÇ5. n—n"à2_ ¶€@Œ�†È æq/ì­bØ'ÂCºÀ…%ùD¨r…z�Àä`”º‡4!Ï!¼o¾žhÔ°#“¹ A†œÞ˜RÔÙD ÒÁÂë�êÂ_#»_Vµy@BpŠAô‹³Yà¨�ÌðŸP}"56n°@”²¶¾cУ~@�érÈ`V†�…Îh­"ž$β kƒõ^®ôúêÖÎÁ›$8aÅ”õ˜)ø@"pþ,ë³ @A2†I»#»àg .fƾd°¹½ª»CÐ\ÿ@‡víôIb!¤lx•CÉž�”öÔ] ôÓúÏ0A‰`Fº¤{;bá @Bs4&¬ËíâHX¬àöfàÐÍÚåƒP l­`žž°ïI ­`Ì Åø[šã ÊÀBs† ÂÁ†`l‰n¡ €”<�* µŠþ�ÀåàA¤€l'1ès·ÃòŠD¤á“Ί@FÜk¤‰-Á’ ‘9Ræ+€!´ l0óM.nC¹�ÅÃ)!öÒ¡´`n�%È¡„ n}áx@y à3Îãóa” PÞc<°Þ’ °Þƒ<4ÄY àá‡9(­®Ñ"qþðæýäB—�4÷zUu€åƒPn<þÈ5¹‚3X†àNÓ¶`G"€&n:KTQ–fJRŠNBqx@A²µG1¨H¤k¥’l"S·ÃòÅE [‰;|?‹Ô Çõ�SaÖ.°ÄVòŸ;`# ¡´`p‰ /@hÔøoà˜ùé3¶`F�Dsü`"Q˜\C¯;¡Â iPfdJ 9gg¤´ p'0nºàWFO7Š_‰;`Fbào@R?Ói_;d¥ B ó‡5œ“¶bš‡)þ[‰;|?RèrŸã…êPN- y/ÈcÒMIÎÀG÷€l‰Ãòö%êJ´á*S6f_H¤ã áé"x`8Ibã¡ Œù)E•IÓ¶`FW0M6€ L'”ò̯ÈMãYgí.A°~¤q @ÂD ’¤åŒ©@VÏó·Ãòö h�ÚÅB1‹Ô ö—ê™*SD‘8�à ã ‰ÌU€¼AÊ&� "-*@Äki`GÕð:ã¶<'1¨LU°µõ6¤ø|'pÄa²È!íÁlÁäË k°ôÝÐL¢?õžÄsÄ щ¡9ˆ±âBáêœá8¡-yIW@ÅZ¬âRAÜÍÚå€JA~Ͼ.Ê·”!)>F;J�".Ôî!º Íqò¤á@Z@Äsê2l<ª›rå€`@äÚéº i·+Ä2ÝáÚä(;¡ÂhÐM®'jW”‘—vC8¤9h „‡cðË�ÎQrsà`)ñ@ÆŠMÚ¼AÁüç` �üé@…æ °@—æ.Œ žba”^b a”`xiÌÊÖÂàÒᥡ`B¼Þ®x³¸À¤/]êHB¸Cräë ´�æÀ ÎÞ`lC²8fâÍçx-ˆÂn%> ®øv³A^ úF�Àä`†®›/‘SÇëC¬Ú¥ª«â;#"švÍõ˼ԌäÜ!�Ü`CÜË×Sš /` ‹õ€†ªÖ†ôlг�®<Å4 U¢ÚÎ]óÎ=Ê¢ x­aJ—1,÷”,ç�CÈIø®¡„{êÖÌ è³�®0ç0a$·nPbð&¦{àBs‡m€BªHô!úÍ�Uè¶6hóc[×&ž†DÝá´Í`PáºÍ|!Ö×o¾SÂà&¦LÐs‡m�†czœý<Ýà‚¦Iù™ÊÖ�ªmâbJž€^ÊŽ.Òj`|ħ0p[6 BªìfáÄ£˜ð·çgöŽªeç7Ô‹©è`}oqdja¥o� –Á†Šeç7Õ-ó |ñª&§àBs‡¡Ö¦^s—‹"ðá¸È` áÒjjX'0pZ v¡1½ªº8šžZÍ’ÔU.žœø Î±ràKªåRÊà|‹�Üç#|JÖpˆlES9 Eü¡”~Q ¸¹Va”@~Êa† „ '9 .À”@lDONì«qêÖ®A„ ~Dæ`øÂ¾éù«Å5Ú(AœåRÊë6a¢àBs  =ÛJù®ÁÂΤ`€ÎŒ }¶ç`éÛn”ý¶ A”À‚À¦@v™ †@fA†2¹@mIñaMÁû‹á´ €"fß^G•aü…€OˆäΪ0{tÇ2Ū`GêQ`¬–µ6xÛ^Â+� C×!› .Xd��ü ÞÝíŒß&C8}� º ï”W€˜0²¼@ýÄ;šã¡š ü±2¹W�jô ¾¡šªìµ9â‚Ãñ@În‚­s[”XU½[Iy÷S…i~rk˜a›�4¬ð¡†ñ2ß-»l^ †VSH× yè@õè"æ$aøIÎ× n¶‚Ú ×ꄜùFœàçÃÂ;é; ‡x*¬ì¦À°Áš9±]ã‰trÞGaÀ‡ÛtJ +ªG³¶.íÄ­ÞÀ‰h…!´–f^ò6! Ò½XaÞøD¦`jŠS6^Yä>|+KÜóâ@ÚŒT Œ’ÞPàꑽª»CØ"»¸è¬b�¡�ÇÁl�]MÁ’Òµ6a¼³È »ªfá²³Ä)à¬Ò *òG'0Uu�s×T"´`ÀAú³Ç0A�†À‹D: nw tS`ž@šÃ’`þ†Y„E� 2@~ V`T '~?ãÏé †¡¤!ÁÖ`DYÂ*ᆠ5a°ö5á†g\aüÁ¤ àŠÀ " ‹a’àŠ ŠŠÀŠ Š@ŠÀŠ€ŒŒ€ŒŒ€Œ`ŒçðÀÀÄM<~êê Âð˜‘ObQŠ + m4žàÎ0¨b q ä  ½ùØ `Ù ù›¾RA €¦  Ë›1n5¬9 —gŠóC`pÙ↠€Ì±x´€Ê ¹²ˆç `Þ ÄÓ ‚xÂ`´tT1�TAYÛTj# 4¤uG Ð *¹’ ‚yE™© @ z噹ÝÃWÆ ¿Ù?¡ /`l jfÇÛ:@‹%Wàät@ –äìàáš‹¸€Œβ\ä `TSaÖA^ t ƒÞ@ˆ`ç– |a”àŒ@_= Ϭà,a”Œ ,¨|\À|�…#€,ÿdÁä–çŽ$ì @t&…ÏduŠSa‹A¢J…¡ , ¸»æxàya‚@à| dpíО ƒƒfC@Dì>Ñ´d^À6}F4ÀŽ'0!|@8ã¸T üc@{ML¶Sc„ 4Á”€Ž(ÐAvü u8çVÀ@ºàdpáƒÎãº€ŽŒt à féÌàz@æà39Àøä=àR üÇa¢ˆ`FxgŽ!Â;¹ðŒ2v”•+˜°hû‹Â#+2Y  4Ri-Hãà8Èta‡@#`„ƒ à@1Ñ, ÍCðøŒN*rÈ$P³ó4dhµX á4 `¸B1 ÉøFf7³F 4"G ’"(¤Z| P�ñÐTM:ÅRÑ< O †ÏK6ˆ�ÁdœDl0Ñ!›¬Öë²h¼:6ƒé˜>oNêâ« ñjÈb‘ µªåzDÝ6Ž4ÐñÔe$;V³ðHFž,,ݬ uêÀcìéœ\gÂB°Þ“M²µŸLêî¯-…JÑÑ’zs‡À†W%Šz˜Þ®òA” Œàl8*ï0›3” �†×�uú½â®ÏÐBÕ÷´Vì $ISÏàÊÄ“ø�D�„ÿ?Ì3$HxÑHAà Â%…�{0‰[„‚7ußv@h ‚1±Å¥0‹á #Ã`>”ó Ã#tYV°„\{—•í"L€àMïQb4lÁ?�ó(iL�ø S· wBÜ`Úħ,€“*^t�G ×v]¸�àbL"ÔI„¤§¥ë{^÷ÄÉcÎWÐ�á fˆUÀ8"}�çøÝ€R’˜I‡ÝèV ¤¸–'Šb¸´›£c(Ò6JJ:)Pc×Ò„¥9)�”‘HÆæWVRüf—…é|u0„v­—�Fµ�y%FväÙ<_¥9U•Åèz�á( @#4EO`Ã"À#øC0‰k^Ù=€C6Ïn€x0ìóøR0�€ÍE�cîB£ ¨‘æ<AyÖc¦‡€ÈÒ‚±X+‚°՛ĦDå3@A,:ÃHv O˜0ÿ2BôÅ9NP„j?Ó”6"à(ë{Àà§xœ#4G‡øÿšˆ0Ï!(¯§…ÉXdcó.9WúÞDu �ØCŒ„øÈM4@à>Ädã<ß©�›…!,VÍYî €„øþA3wi´µ0· …a�ÆÍÔHI@Œ‡9T ´2‰A,>³4ýÁ LÇâÜ ¶¨Äö¡àþÍ£p)„°8 {Ì0ÜKÄQ`EÄÀè Æñ´mFá� ‘¸eñØe†a°oÀÐ($^ÑÀ„À„ÖðhwÂ0Â4„³*ÀC f L#°K €Ã=D³ø!0¿ "?‡¸ddlrŒ7Â?ƒØÁìh `@2@‹ð&§Ô�@xÁ?£(|Ô†�³ð{ELuŒ1²|  å A¬ 7H ‚`bT7‡¡8Ì2³1æ�ó:@œ ‰†.¦D º@È[ä4N�5ÄB2Ad!ø€?�ÈÀ&-€¡� bŒS!ù�@˜G0_*Í1§ð4/“xL‰Œ!’%¡ÌRЇl†€,ŒQð�Ža¾?‚ rd†ñÒ4Kø#Mì2A†;�ðà 퉆B>GYk „x²áòcA yË  �ERATOS C ÝóFA C "¾FB C É6FC C $ß¿FFD C +b9FM C . ªISPRINT C ÁISPUNCT C 9SISSPACE C W,ISUPPER C †5ISXDIGITC óHITOA C ø¯ITOAB C /¡ITOD C $¯ITOO C *þ�ITOU C /pœITOX C 5¬LCC SUB7†DLEFT C :aÊLEXCMP C < ù�LIBID C HA§MALLOC C IȯMAX C Lã®MIN C MbcNEWLIB SUBNðþOTOI C U2OUTP MACXåPAD C [×QPOLL C ]žŸPRNTF C ar¦PUTCHAR C wȸPUTLIST MACy!\PUTS C ~?:READ C €'ÜRENAME C „äÁREVERSE C ‡PREWIND C ‰ñ¶SIGN C ‹ìSTDIO H ´STRCAT C �STRCHR C �ýÊSTRCMP C ‘æSTRCPY C “W"STRLEN C ”úSTRNCAT C •½ÎSTRNCMP C ˜8åSTRNCPY C ›-ßSTRRCHR C žÞ�TIME C óH¦TOASCII C ¡oTOLOWER C ¢rTOPOFMEMMAC¤ô<TOUPPER C ¦ŽUALLOC C ¨Œ[ULINK MAC­/+,UNGETC C Ü÷ÜUNLINK MACÞœ*UTOI C â´WRITE C åqöXTOI C éiZZBUF MACíâvZZFIO MACïB²ÿ ÿ ÿ ÿ ÿ /* ** stdiol.h -- header for resident stdio/crtl/call ** -Set up for Version 2.08 compiler 8/4/84 (fas) */ #define stdin 0 #define stdout 1 #define stderr 2 #define stdport 3 #define stdlist 4 #define ERR -2 #define EOF -1 #define YES 1 #define NO 0 #define TRUE 1 #define FALSE 0 #define NULL 0 #define CR 13 #define LF 10 /* ** return 'true' if c is a printable character ** (32-126) */ isprint(c) int c; { return (c>=32 && c<=126); } #define NOCCARGC /* no argument count passing */ /* ** return 'true' if c is a punctuation character ** (all but control and alphanumeric) */ ispunct(c) int c; { return (!isalnum(c) && !iscntrl(c)); } /* ** return 'true' if c is a white-space character */ isspace(c) int c; { /* first check gives quick exit in most cases */ return(c<=' ' && (c==' ' || (c<=13 && c>=9))); } /* ** return 'true' if c is upper-case alphabetic */ isupper(c) int c; { return (c<='Z' && c>='A'); } /* ** return 'true' if c is a hexadecimal digit ** (0-9, A-F, or a-f) */ isxdigit(c) int c; { return ((c<='f' && c>='a') || (c<='F' && c>='A') || (c<='9' && c>='0')); } #define NOCCARGC /* no argument count passing */ /* ** itoa(n,s) - Convert n to characters in s */ itoa(n, s) char *s; int n; { int sign; char *ptr; ptr = s; if ((sign = n) < 0) /* record sign */ n = -n; /* make n positive */ do { /* generate digits in reverse order */ *ptr++ = n % 10 + '0'; /* get next digit */ } while ((n = n / 10) > 0); /* delete it */ if (sign < 0) *ptr++ = '-'; *ptr = '\0'; reverse(s); } #define NOCCARGC /* no argument count passing */ /* ** itoab(n,s,b) - Convert "unsigned" n to characters in s using base b. ** NOTE: This is a non-standard function. */ itoab(n, s, b) int n; char *s; int b; { char *ptr; int lowbit; ptr = s; b >>= 1; do { lowbit = n & 1; n = (n >> 1) & 32767; *ptr = ((n % b) << 1) + lowbit; if(*ptr < 10) *ptr += '0'; else *ptr += 55; ++ptr; } while(n /= b); *ptr = 0; reverse (s); } #include stdio.h /* ** itod -- convert nbr to signed decimal string of width sz ** right adjusted, blank filled; returns str ** ** if sz > 0 terminate with null byte ** if sz = 0 find end of string ** if sz < 0 use last byte for data */ itod(nbr, str, sz) int nbr; char str[]; int sz; { char sgn; if(nbr<0) {nbr = -nbr; sgn='-';} else sgn=' '; if(sz>0) str[--sz]=NULL; else if(sz<0) sz = -sz; else while(str[sz]!=NULL) ++sz; while(sz) { str[--sz]=(nbr%10+'0'); if((nbr=nbr/10)==0) break; } if(sz) str[--sz]=sgn; while(sz>0) str[--sz]=' '; return str; } /* ** itoo -- converts nbr to octal string of length sz ** right adjusted and blank filled, returns str ** ** if sz > 0 terminate with null byte ** if sz = 0 find end of string ** if sz < 0 use last byte for data */ itoo(nbr, str, sz) int nbr; char str[]; int sz; { int digit; if(sz>0) str[--sz]=0; else if(sz<0) sz = -sz; else while(str[sz]!=0) ++sz; while(sz) { digit=nbr&7; nbr=(nbr>>3)&8191; str[--sz]=digit+48; if(nbr==0) break; } while(sz) str[--sz]=' '; return str; } #include stdio.h /* ** itou -- convert nbr to unsigned decimal string of width sz ** right adjusted, blank filled; returns str ** ** if sz > 0 terminate with null byte ** if sz = 0 find end of string ** if sz < 0 use last byte for data */ itou(nbr, str, sz) int nbr; char str[]; int sz; { int lowbit; if(sz>0) str[--sz]=NULL; else if(sz<0) sz = -sz; else while(str[sz]!=NULL) ++sz; while(sz) { lowbit=nbr&1; nbr=(nbr>>1)&32767; /* divide by 2 */ str[--sz]=((nbr%5)<<1)+lowbit+'0'; if((nbr=nbr/5)==0) break; } while(sz) str[--sz]=' '; return str; } /* ** itox -- converts nbr to hex string of length sz ** right adjusted and blank filled, returns str ** ** if sz > 0 terminate with null byte ** if sz = 0 find end of string ** if sz < 0 use last byte for data */ itox(nbr, str, sz) int nbr; char str[]; int sz; { int digit, offset; if(sz>0) str[--sz]=0; else if(sz<0) sz = -sz; else while(str[sz]!=0) ++sz; while(sz) { digit=nbr&15; nbr=(nbr>>4)&4095; if(digit<10) offset=48; else offset=55; str[--sz]=digit+offset; if(nbr==0) break; } while(sz) str[--sz]=' '; return str; } /* ** left -- left adjust and null terminate a string */ left(str) char *str; { char *str2; str2=str; while(*str2==' ') ++str2; while(*str++ = *str2++); } #define NOCCARGC /* no argument count passing */ /* ** lexcmp(s, t) - Return a number <0, 0, or>0 ** as s is <, =, or > t. */ lexcmp(s, t) char *s, *t; { while(*s == *t) { if(*s == 0) return (0); ++s; ++t; } return (lexorder(*s, *t)); } /* ** lexorder(c1, c2) ** ** Return a negative, zero, or positive number if ** c1 is less than, equal to, or greater than c2, ** based on a lexicographical (dictionary order) ** colating sequence. ** */ char Ulex[128] = { /**** NUL - / ****/ 000,001,002,003,004,005,006,007,008,009, 010,011,012,013,014,015,016,017,018,019, 020,021,022,023,024,025,026,027,028,029, 030,031,032,033,034,035,036,037,038,039, 040,041,042,043,044,045,046,047, /**** 0-9 ****/ 065,066,067,068,069,070,071,072,073,074, /**** : ; < = > ? @ ****/ 048,049,050,051,052,053,054, /**** A-Z ****/ 075,076,077,078,079,080,081,082,083,084,085,086,087, 088,089,090,091,092,093,094,095,096,097,098,099,100, /**** [ \ ] ^ U ` ****/ 055,056,057,058,059,060, /**** a-z ****/ 075,076,077,078,079,080,081,082,083,084,085,086,087, 088,089,090,091,092,093,094,095,096,097,098,099,100, /**** { | } ~ ****/ 061,062,063,064, /**** DEL ****/ 101 }; lexorder(c1, c2) char c1, c2; { return(Ulex[c1] - Ulex[c2]); } #include libid() { puts("\n\n This library created 11/24/84 by F. A. Scacchitti\n\n"); } #define NOCCARGC /* no argument count passing */ #include stdio.h /* ** Memory allocation of size bytes. ** size = Size of the block in bytes. ** Returns the address of the allocated block, ** else NULL for failure. */ malloc(size) char *size; { return (Ualloc(size, NO)); } /* ** max.c by F.A.Scacchitti 9 - 10 - 84 */ max(a,b) int a, b; { if(a > b) return(a); return(b); } /* ** min.c by F.A.Scacchitti 9 - 10 - 84 */ min(a,b) int a, b; { if(a < b) return(a); return(b); } XSUB LIB80 NEWCLIB= ULINK LIBID UNGETC FFLUSH REWIND CTELL CTELLC CSEEK FILELIB FREAD READ FWRITE WRITE GRABUF GRABIO FREBUF FREEIO FPRINTF FSCANF PRNTF FPUTS FGETS GETS PUTS FPUTC FGETC PUTCHAR GETCHAR GETCHX CPMIO CPMDISK PUTLIST CALLOC MALLOC UALLOC AVAIL FREE POLL ABS ATOI ATOIB DTOI ISALNUM ISALPHA ISASCII ISATTY ISCNTRL ISDIGIT ISGRAPH ISLOWER ISPRINT ISPUNCT ISSPACE ISUPPER ISXDIGIT ITOA ITOAB ITOD ITOO ITOU ITOX LEFT LEXCMP OTOI REVERSE SIGN STRCAT STRCHR STRCMP STRCPY STRLEN STRNCAT STRNCMP STRNCPY STRRCHR TOASCII TOLOWER TOUPPER UTOI XTOI PAD FEOF FERROR CLEARERR DELAY DOLDDR DOLDIR INP OUTP TOPOFMEM UNLINK MIN MAX ABORT BDOS CALL1 CALL2 CALL3 CALL4 CALL5 ZZFIO ZZBUF /E A: PIP A:=B:NEWCLIB.REL[v] #include stdio.h /* ** otoi -- convert unsigned octal string to integer nbr ** returns field size, else ERR on error */ otoi(octstr, nbr) char *octstr; int *nbr; { int d,t; d=0; *nbr=0; while((*octstr>='0')&(*octstr<='7')) { t=*nbr; t=(t<<3) + (*octstr++ - '0'); if ((t>=0)&(*nbr<0)) return ERR; d++; *nbr=t; } return d; }  ; outp(port#,data) ; added 2/84 (fas) OUTP:: INX SP ; Skip over return address INX SP POP H ; Load data in L POP B ; Load port # in C DB 0EDH, 069H ; Do instruction PUSH B ; Restore stack PUSH H DCX SP DCX SP ; All gone RET END #define NOCCARGC /* no argument count passing */ /* ** Place n occurrences of ch at dest. */ pad(dest, ch, n) char *dest, *n; int ch; { /* n is a fake unsigned integer */ while(n--) *dest++ = ch; } #define NOCCARGC /* no argument count passing */ #define ABORT 3 #define PAUSE 19 #include stdio.h /* ** Poll for console input or interruption */ poll(pause) int pause; { int i; i = bdos(6,255); if(pause) { if(i == PAUSE) { while(!(i = bdos(6,255))) ; if(i == ABORT) abort(0); return (0); } if(i == ABORT) abort(0); } return (i); }  /* ** prntf("format string"[, arg, arg, ...]) -- formatted print ** operates as described by Kernighan & Ritchie with ** the following exceptions: ** ** - only d, c, and s formats supported ** - maximum field-width specification of 9 ** - no field seperator specification ** ** Modified version of J. E. Hendrix's printf distributed ** with Small-C Version 2.0. This version uses putchar for ** for output and is renamed to prntf to avoid mutiple ** global defines. It is designed to occupy minimum code ** space and can be used interchangeably with printf(),as ** long as the exceptions are taken into consideration. ** ** F. A. Scacchitti 10/7/84 */ #include /* ** Making the following variables static greatly reduces size ** while increasing speed. However, if static globals aren't ** available on your compiler, the prntf.mac file must be ** edited to remove the additional colon generated by the ** compiler to ensure no problems occur with multiple global ** definitions. An alternative to this method would involve ** renaming all the static variable with some little used ** prefix. (eg. qqq, xxx, ppp) */ static int i, width, len, *nxtarg, sz; static char *ctl, *cx, c, right, str[7], *sptr, pad, sgn; prntf(argc) int argc; { i = CCARGC(); /* fetch arg count from A reg first */ nxtarg = &argc + i - 1; ctl = *nxtarg; while(c = *ctl++) { if(c != '%') { putchar(c); continue; } if(*ctl == '%') { putchar(*ctl++); continue; } cx = ctl; right = 1; pad = ' '; if(*cx == '-') { right = 0; ++cx; } if(*cx == '0') { pad = '0'; ++cx; } width = *cx - '0'; if(width < 1 || width >9) width = 0; else cx++; sptr=str; c = *cx++; i = *(--nxtarg); switch(c) { case 'd': sz = 7; if(i < 0) { i = -i; sgn='-'; } else sgn=' '; str[--sz] = NULL; while(sz) { str[--sz] = (i % 10 + '0'); if((i = i / 10) == 0) break; } if(sz) str[--sz] = sgn; while(sz > 0) str[--sz]=' '; break; case 'c': str[0] = i; str[1] = NULL; break; case 's': sptr = i; break; default : continue; } ctl = cx; /* accept conversion spec */ if(c == 'd') while(*sptr==' ') ++sptr; len = -1; while(sptr[++len]); /* get length */ if(right) while(((width--) - len) > 0) putchar(pad); while(len) { putchar(*sptr++); --len; --width; } while(((width--) - len) > 0) putchar(pad); } } #define NOCCARGC /* no argument count passing */ /* * putchar() Normal console output via BDOS(2) */ #include putchar(c) char c; { bdos(2,c); if (c == CR) bdos(2,LF); }  ; ; putlist(c) ; ; F. A. Scacchitti 8/4/84 ; ; CBDOS EQU 5 ;/* bdos entry point */ LF EQU 10 EOL EQU 13 ; ; CP/M BDOS CALLS ; LSTOUT EQU 5 ;write character to list device ; ; Storage varibles found in ulink() or ulinq() ; EXTRN ZZTEMP ; ; PUTLIST:: POP B POP D PUSH D PUSH B SHLD ZZTEMP MVI C,LSTOUT ; cpm(LSTOUT,c); CALL CBDOS ; (mod to cbdos(fas)) LDA ZZTEMP CPI EOL ; if(c==EOL) JNZ PUTLS1 MVI E,LF ; cpm(LSTOUT,LF); MVI C,LSTOUT CALL CBDOS ; (mod to cbdos(fas)) PUTLS1: LHLD ZZTEMP ; return(c & 0377) MVI H,0 RET END #define NOCCARGC /* no argument count passing */ /* *puts(string) Print string to console via BDOS(9) */ puts(string) char *string; { int i; i = 0; while(string[i] != 0){ putchar(string[i]); i++; } } /* ** read.c by F. A. Scacchitti 11/24/84 */ #include extern int zzbuf; read(fd,buffer,cnt) int fd, cnt; char *buffer; { int i, n; char *tbuff, flag; tbuff = &zzbuf; n=0; while(cnt >0){ if((flag = bdos(20,fd)) != NULL) { *(fd + 40) = flag; return(n); }else i = 0; while(i <= 127 && cnt > 0){ buffer[n] = tbuff[i]; i++; cnt--; n++; } } return(n); } /* ** rename(old,new) char *old, *new; by F.A.Scacchitti 9/11/84 */ #define NOCCARGC #include rename(old,new) char *old, *new; { int fcbloc; if ((fcbloc = grabio()) == NULL) return(ERR); fcb(fcbloc, old); fcb(fcbloc + 16, new); freeio(fcbloc); if(bdos(23,fcbloc) >= 0) return(NULL); return(ERR); } #define NOCCARGC /* no argument count passing */ /* ** reverse string in place */ reverse(s) char *s; { char *j; int c; j = s + strlen(s) - 1; while(s < j) { c = *s; *s++ = *j; *j-- = c; } }  /* ** rewind.c by F. A. Scacchitti 9/11/84 */ #define NOCCARGC #include rewind(fd) int fd; { return(cseek(fd, 0, 0)); } /* ** sign -- return -1, 0, +1 depending on the sign of nbr */ sign(nbr) int nbr; { if(nbr>0) return 1; if(nbr==0) return 0; return -1; } /* ** concatenate t to end of s ** s must be large enough */ strcat(s, t) char *s, *t; { char *d; d = s; --s; while (*++s) ; while (*s++ = *t++) ; return(d); } /* ** return pointer to 1st occurrence of c in str, else 0 */ strchr(str, c) char *str, c; { while(*str) { if(*str == c) return (str); ++str; } return (0); } /* ** return <0, 0, >0 aUording to ** st */ strcmp(s, t) char *s, *t; { while(*s == *t) { if(*s == 0) return (0); ++s; ++t; } return (*s - *t); } /* ** copy t to s */ strcpy(s, t) char *s, *t; { char *d; d = s; while (*s++ = *t++) ; return(d); } /* ** return length of s */ strlen(s) char *s; { char *t; t = s - 1; while (*++t) ; return (t - s); } /* ** concatenate n bytes max from t to end of s ** s must be large enough */ strncat(s, t, n) char *s, *t; int n; { char *d; d = s; --s; while(*++s) ; while(n--) { if(*s++ = *t++) continue; return(d); } *s = 0; return(d); } /* ** strncmp(s,t,n) - Compares two strings for at most n ** characters and returns an integer ** >0, =0, or <0 as s is >t, =t, or 0) { if(*d++ = *sour++) continue; while(n-- > 0) *d++ = 0; } *d = 0; return (dest); } /* ** strrchr(s,c) - Search s for rightmost occurrance of c. ** s = Pointer to string to be searched. ** c = Character to search for. ** Returns pointer to rightmost c or NULL. */ strrchr(s, c) char *s, c; { char *ptr; ptr = 0; while(*s) { if(*s==c) ptr = s; ++s; } return (ptr); } /* ** return ASCII equivalent of c */ toascii(c) int c; { return (c); } /* ** return lower-case of c if upper-case, else c */ tolower(c) int c; { if(c<='Z' && c>='A') return (c+32); return (c); } ; ; ; End of memory function ; Returns top memory location in HL CBDOS EQU 5 TOPOFMEM:: LDA CBDOS+2 ; Get base of BDOS (mod to cbdos (fas)) MOV H,A ; Save page in HL MVI L,0 RET END /* ** return upper-case of c if it is lower-case, else c */ toupper(c) int c; { if(c<='z' && c>='a') return (c-32); return (c); }  /* ** ------------ Memory Allocation */ /* ** Allocate n bytes of (possibly zeroed) memory. ** Entry: n = Size of the items in bytes. ** clear = "true" if clearing is desired. ** Returns the address of the allocated block of memory ** or NULL if the requested amount of space is not available. */ #include extern char *zzmem; Ualloc(n, clear) char *n; int clear; { char *oldptr; if(n < avail(YES)) { if(clear) pad(zzmem, NULL, n); oldptr = zzmem; zzmem += n; return (oldptr); } return (NULL); } ; ulink ; ; Small-C System Library Version 1.0 ; ; by ; ; Fred A. Scacchitti ; 25 Glenview Lane ; Roch., NY 14609 ; ; 11 - 24 - 84 ; ; This module is a derivative of RUNTIME.MAC by Glen Fisher ; and Bill Randle. It contains a minimal implementation of ; CP/M hooks to allow proper linking of Small-C programs ; compiled by Version 2.08 (and later) of the Small-C compiler. ; ; This module contains the following routines: ; ; -ULINK entry point just like J. E. Hendrix Vers. 2.1 ; ; -Initialization of stack, memory buffers, and argument ; passing (argv, argc). ; ; ; call to main() ; links to main in user program ; ; -Cleans house and returns to CP/M ; ; ; ; ; Now then here's the starting code ; ; ; ; 1st - Save CPM's stack pointer, establish file i/o constructs set ; new default buffer and establish start of available memory. ; ; 2nd - Get the default disk and set stack at base of BDOS or CCP ; depending on the status ZZZCCP. 0 = bdos 1 = ccp ; ; 3rd - Parse the CPM input line and modify it so that we can pass ; the C program in the argc, argv form that it expects. ; HL = pointer to next argv entry ; DE = pointer to next character in command line ; B = number of characters left in line ; C = argument count (argc) ; ; 4th - Call MAIN to commence operation of the user program ; ; 5th - Work, work, work and then return to here via exit(), abort() ; or normal return from program. ; ; 6th - Close any open files (buffers are not flushed) ; ; 7th - Restore CP/M's stack pointer, select the disk you entered ; with, reset the default buffer and return to CP/M either ; via a JMP 0 (ZZZCCP = 0) or RET (ZZZCCP = 1). ; ; CBDOS EQU 5 ;/* bdos entry point */ CPMARG EQU 128 ;/* CP/M command line */ MAXARG EQU 24 ;/* Maximum number of input args */ STDIN EQU 0 STDOUT EQU 1 STDERR EQU 2 STDLST EQU 4 CBDOS EQU 5 CLOSE EQU 16 ; FCBSIZE EQU 36 ;size, in bytes, of an FCB BUFFER EQU 6 ;offset to disk sector buf. in I/O struct. UNGOT EQU 5 ;offset to char ungotten by ungetc() FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available BUFSIZ EQU 1024 ;how long the sector buffer is NBUFS EQU 8 ;number of I/O buffers TBUFSZ EQU 128 ;size of default disk buffer ; EXTRN MAIN, ZZBUF, ZZZCCP ; ; ULINK:: ; LXI H,0 ; get CPM's stack pointer DAD SP SHLD ZZSTAK ; save it for later ; MVI C,26 LXI D,ZZBUF CALL CBDOS ; Set the default buffer out there ; SETIO: MVI B,NBUFS LXI H,ZZBUF+TBUFSZ+FLAG LXI D,FCBSIZE+BUFFER+BUFSIZ MVI A,FREEFLG SETIO2: MOV M,A ;set all buffers to free DAD D ;on to next buffer DCR B JNZ SETIO2 ;if there is one... SHLD ZZMEM ;put it where it belongs ; MVI C,25 ; get logged-in disk CALL CBDOS INR A STA ZZDFLT ; save it ; LDA CBDOS+2 ; get base of BDOS MOV H,A ; save page in HL MVI L,0 ; where do we put the stack ; LDA ZZZCCP ; let's check ORA A ; JZ SETSTK ; just below the BDOS MOV A,H SUI 8 ; just below the CCP MOV H,A ; SETSTK: SPHL ; set stack pointer ; MVI C,0 ; Init argc LXI H,ARGV ; Pointer to first entry of argv array ; ; CPM does not tell us what the first word of the command ; line was (the name of pgm), so we fake it by pointing it ; to an ascii string with '*' in it ; LXI D,PGM ; Pointer to 'pgmname' string CALL SVARG ; Save next argument ; ; Ok, now for the real stuff. Set DE pair to point to ; CPM command line and start searching for arguments LXI D,CPMARG ; Pointer to CPM arg line LDAX D ; Load # character in line MOV B,A ; Save it in B NXTSP: INX D ; Point to next character DCR B ; Decrement character count JM ENDCMD ; End of cmd line LDAX D ; Load next character in line CPI ' ' ; Space? JZ NXTSP ; Yes...continue searching CALL SVARG ; Nope, save starting point of this arg ; Loop looking for either end of line of a space NXTCH: INX D ; Point to next character DCR B ; Decrement character count JM ENDWRD ; End of cmd line, but need to end arg LDAX D ; Load next character in line CPI ' ' ; Space? JNZ NXTCH ; Nope...keep looking MVI A,0 ; Yes, replace it with a zero byte STAX D JMP NXTSP ; Look for start of next arg ENDWRD: MVI A,0 STAX D ENDCMD: MVI B,0 ; Zero B (BC now is 16 bit argc) PUSH B ; First arg to main procedure LXI H,ARGV ; Point to argv array PUSH H ; Second argument to main procedure MVI A,2 ; Load up the argument count ; CALL MAIN ; Transfer to the C world.... ; ; anchors ; away ; my ; bo ; y ; y ; y ; y ; y ; EXIT:: MVI B,NBUFS ; Prepare to scan for open files MVI C,CLOSE LXI H,ZZBUF+TBUFSZ+FLAG LXI D,FCBSIZE+BUFFER+BUFSIZ SCANEM: MOV A,M ; Get free flag CPI FREEFLG ; Is it free ? JZ NOPEN ; Yes - not open, go get next PUSH B ; No - prepare to close PUSH D PUSH H LXI D,-FLAG DAD D XCHG ; DE --> Start of FCB CALL CBDOS ; Close the file POP H ; Restore scan setup POP D POP B NOPEN: DAD D ; Point to next flag DCR B ; Last one ? JNZ SCANEM ; No - keep scanning until done ; MVI C,26 LXI D,80H CALL CBDOS ; Reset the default buffer ; LHLD ZZSTAK ; Load stack pointer SPHL LDA ZZZCCP ; How do we get back ? ORA A RNZ ; this way to CCP ; ; or ; ; this way to warm boot ; LDA ZZDFLT ; Grab orig. logged-in disk MOV E,A DCR E ; (cvt. back to 0-n) MVI C,14 ; and log it in again CALL CBDOS ; (mod to cbdos (fas)) ; JMP 0 ; ; SVARG: MOV M,E ; Save pointer to start of string INX H MOV M,D INX H INR C ; Increment argc RET PGM: DB '*',0 ; ARGV: DS MAXARG*2 ; ZZDFLT:: DB 0 ; default disk ; ZZSTAK:: DW 0 ; CP/M's stack ; ZZMEM:: DW 0 ; useable memory pointer ; ZZTEMP:: DW 0 ; available to anyone ; ; ; END ULINK  /* ** ungetc.c by fas 8/30/84 */ #include #define FCBSIZE 36 #define UNGOT 5 ungetc(c,fd) char c, *fd;{ if(fd[FCBSIZE+UNGOT] != EOF) return(EOF); fd[FCBSIZE+UNGOT] = c; return(c); } ; ; unlink(name) ; UNLINK:: DELETE:: POP B POP D PUSH D PUSH B PUSH D ; name ; /* open file to unlink in LXI H,"r" ; Mode ; order to get fcb for it. */ PUSH H CALL FOPEN ; unit = fopen(name,'r'); POP D POP D SHLD UNIT MVI C,19 ; bdos(19,unit); CALL BDOS ; (mod to cbdos(fas)) LHLD UNIT ; freeio(unit); PUSH H CALL FREEIO POP D RET ; return; UNIT: DS 2 EXTRN BDOS EXTRN FOPEN EXTRN FREEIO END ;#include stdio.h /* ** utoi -- convert unsigned decimal string to integer nbr ** returns field size, else ERR on error */ utoi(decstr, nbr) char *decstr; int *nbr; { int d,t; d=0; *nbr=0; while((*decstr>='0')&(*decstr<='9')) { t=*nbr;t=(10*t) + (*decstr++ - '0'); if ((t>=0)&(*nbr<0)) return ERR; d++; *nbr=t; } return d; } /* ** write.c by F. A. Scacchitti 11/24/84 */ #include extern int zzbuf; write(fd,buffer,cnt) int fd, cnt; char *buffer; { int i, n; char *tbuff, flag; tbuff = &zzbuf; n = fd + 33; /* prevents fcb buffer flush */ *n = NULL; n=0; while(cnt >0){ i = 0; while(i <= 127 && cnt > 0){ tbuff[i] = buffer[n]; i++; cnt--; n++; } if((flag = bdos(21,fd)) != NULL) { *(fd + 40) = flag; return(n); } } return(n); } #include stdio.h /* ** xtoi -- convert hex string to integer nbr ** returns field size, else ERR on error */ xtoi(hexstr, nbr) char *hexstr; int *nbr; { int d,t; d=0; *nbr=0; while(1) { if((*hexstr>='0')&(*hexstr<='9')) t=48; else if((*hexstr>='A')&(*hexstr<='F')) t=55; else if((*hexstr>='a')&(*hexstr<='f')) t=87; else break; if(d<4) ++d; else return ERR; *nbr=*nbr<<4; *nbr=*nbr+(*hexstr++)-t; } return d; } ; ; ZZBUF.MAC by F. A. Scacchitti 9-18-84 ; ; Default Buffer for disk I/O ; ; Used to preserve standard CP/M buffer for input arguments ; and mark the end of the code space. ; ZZBUF:: NOP END  ; File i/o storage varibles ; ; ZZUNIT:: DS 2 ;I/O structure address to act on ZZIP:: DS 2 ;int *ZZIP; ZZCHP:: DS 2 ;char *ZZCHP; ZZDP:: DS 2 ;char *ZZDP; ZZFILE:: DS 2 ;file name ZZMODE:: DS 2 ;char *mode;(read or write) ZZCH:: DS 2 ;char ch; ZZT:: DS 2 ;int t; ZZFN:: DS 2 ;int ZZFN; i/o function (for cpmio) ZZNUBU:: DS 2 ;# TEMPORARY BUFFER STORAGE ZZMXSC:: DS 1 ;# SECTOR COUNTER ZZSVCH:: DS 2 ;char *ZZSVCH; saved character pointer END /* ** time.c Time set/display Program by F.A.Scacchitti 9/23/84 ** Copyright 1984 25 Glenview Lane ** All rights reserved Roch, NY 14609 ** ** Written in Small-C (Version 2.09) ** ** Time Utility for the Xerox 820 ** ** time p ---> prints current time and date ** time s ---> enter time set routine ** ** This program is designed to be used with an auxiliary printf routine ** (prntf) to minimize program size. (printf may be substituted for prntf) ** (fas) ** */ #include #define CLEAR 26 #define BACKSP 8 #define SPACE 32 #define VERTAB 11 #define LINSIZ 18 /*#define MEM 65369 pointer to first time byte for the 820-I */ #define MEM 65366 /* pointer to first time byte for the 820-II */ char array[LINSIZ]; int num[6]; int lolim[] = { 1, 1, 84, 0, 0, 0}; int hilim[] = {31, 12, 99, 23, 59, 59}; main(argc,argv) int argc, *argv; { char *entry; argv++; /* point to option */ entry = *argv; /* set up 2nd indirect pointer *entry = **argv */ switch (*entry) { case 'P': if(!gudtim(gettim())) settim(); if(gudtim()) prntim(); break; case 'S': if(settim()) prntim(); break; default: argc = 0; break; } if (argc != 2){ prntf(" usage: time p prints time and date\n"); prntf(" time s to set time and date\n"); } } prntim(){ /* Routine to print time and date */ char *clkmem; putchar(VERTAB); clkmem = MEM; clkmem++; switch (*clkmem){ case 1: prntf("January"); break; case 2: prntf("February"); break; case 3: prntf("March"); break; case 4: prntf("April"); break; case 5: prntf("May"); break; case 6: prntf("June"); break; case 7: prntf("July"); break; case 8: prntf("August"); break; case 9: prntf("September"); break; case 10: prntf("October"); break; case 11: prntf("November"); break; case 12: prntf("December"); break; default: abort('?'); } clkmem--; prntf(" %d, 19%d %02d:%02d:%02d",*clkmem++,*++clkmem,*++clkmem, *++clkmem,*++clkmem); } settim(){ /* Routine to set time and date */ int i; char c, *clkmem; clkmem = MEM; /* Display the time set header */ putchar(CLEAR); prntf("Enter the time and date as dd/mm/yy hh:mm:ss\n"); prntf("\n eg. for 1:45 P.M. on August 12, 1984\n"); prntf(" Enter ---> 12/08/84 13:45:00\n"); prntf(" dd/mm/yy hh:mm:ss"); prntf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); /* Get the input string */ i = -1; while (((c = getchar()) != CR) && i++ < 17) if (c == BACKSP) if (i == 0){ i = -1; putchar(SPACE);} else i = i - 2; else array[i] = c; /* Convert the characters to integer values */ for (i = 0; i <= 18; i = i + 3) num[i/3] = ((array[i] - '0') * 10) + (array[i+1] - '0'); prntf("\n\n"); /* Store the values to memory if they're valid */ if (gudtim()) { for (i = 0; i <=5; i++) *clkmem++ = num[i]; return(TRUE); }else{ prntf(" Incorrect data entered - time not updated"); return(FALSE); } } gudtim(){ int i; for(i = 0; i <= 5;i++) if (num[i] < lolim[i] || num[i] > hilim[i]) return(FALSE); return(TRUE); } gettim(){ /* Routine to get time data from memory to an array */ int i; char *clkmem; clkmem = MEM; for (i = 0; i <=5; i++) num[i] = *clkmem++; } /* Eratosthenes Sieve Prime Number Program in C */ /* Uses local (automatic) Variables */ #include #define SIZE 8190 #define SIZEP1 8191 char flags[SIZEP1]; main() { int i, prime, k, count, iter; /* variables defined here are local */ printf("10 iterations :"); for (iter = 1; iter<=10; iter ++) { count = 0; for (i = 0; i<= SIZE; i++) flags[i] = TRUE; for (i = 0; i<= SIZE; i++) { if (flags[i]) { prime = i + i + 3; k = i + prime; while (k <= SIZE) { flags [k] = FALSE; k += prime; } count = count + 1; } } } printf(" %d primes", count); }  /* ** fa.c File Append Program by F.A.Scacchitti 9/23/84 ** ** Written in Small-C Version 2.09 or later ** ** Appends one files on to another ** ** printf may be substituted for prntf (fas) */ #include int fdin, fdin2; main(argc,argv) int argc, argv[]; { int fdin, fdin2; char c; if (argc != 3) { prntf("\nfa usage: fa \n"); exit(); } if((fdin = fopen(argv[1],"a")) == NULL) { prntf("\nUnable to open file %s\n",argv[1]); exit(); } if((fdin2 = fopen(argv[2],"r")) == NULL) { prntf("\nUnable to create file %s.\n",argv[2]); exit(); } while((c = fgetc(fdin2)) != EOF) fputc(c,fdin); fclose(fdin); fclose(fdin2); } /* ** fb.c File Copy (Bin) Program by F.A.Scacchitti 9/23/84 ** ** Written in Small-C Version 2.09 or later ** ** Copies file from file to file ** Byte modifications may be made during transfer */ #include #define BUFSIZE 8192 main(argc,argv) int argc, argv[]; { int fdin, fdout; /* file i/o channel pointers */ int i, count; char *inbuf; i = 0; inbuf = malloc(BUFSIZE); if(argc != 3) { puts("\nfc usage: fc \n"); exit(); } if((fdin = fopen(argv[1],"r")) == NULL) { puts("\nUnable to open input file.\n"); exit(); } if((fdout = fopen(argv[2],"w")) == NULL) { puts("\nUnable to create output file.\n"); exit(); } while((count = read(fdin,inbuf,BUFSIZE)) == BUFSIZE) { write(fdout,inbuf,count); i += count; } i += count; write(fdout,inbuf,count); fclose(fdin); fclose(fdout); } /* ** fc.c File Copy Program by F.A.Scacchitti 9/23/84 ** ** Written in Small-C Version 2.09 or later ** ** Copies file from file to file ** Byte modifications may be made during transfer ** ** printf may be substituted for prntf (fas) ** */ #include main(argc,argv) int argc, argv[]; { int fdin, fdout; /* file i/o channel pointers */ char c; if (argc != 3) { prntf("\nfc usage: fc \n"); exit(); } if((fdin = fopen(argv[1],"r")) == NULL) { prntf("\nUnable to open file %s\n",argv[1]); exit(); } if((fdout = fopen(argv[2],"w")) == NULL) { prntf("\nUnable to create file %s.\n",argv[2]); exit(); } while((c = fgetc(fdin)) != EOF) /* ** Here's where we can modify the file */ fputc(c,fdout); fclose(fdin); fclose(fdout); } /* ** ffd.c formfeed Program by F.A.Scacchitti 11/26/84 ** Copyright 1984 25 Glenview Lane ** All rights reserved Roch, NY 14609 ** ** Written in Small-C (Version 2.10) ** ** ** ** ** ** */ #include int i; main() { for(i = 1; i <= 66; i++) putlist(LF); } /* ** fm.c File Modification Program by F.A.Scacchitti 9/23/84 ** ** Written in Small-C Version 2.09 or later ** ** Copies from source file to new file modifying on the fly. ** Mod. description is in modify routine. ** ** This program may be used as a shell for any ascii file ** modification utilities. */ #include int fdin, fdout; /* file i/o channel pointers */ char c; /* the byte we're modifying */ main(argc,argv) int argc, argv[]; { if (argc != 3) { puts("\nfm usage: fm \n"); exit(); } if((fdin = fopen(argv[1],"r")) == NULL) { puts("\nUnable to open input file\n"); exit(); } if((fdout = fopen(argv[2],"w")) == NULL) { puts("\nUnable to create output file\n"); exit(); } while((c = fgetc(fdin)) != EOF) /* ** Here's where we modify the file */ fputc((modify(c)),fdout); fclose(fdin); fclose(fdout); } /* this routine double spaces an ascii file */ modify(c) char c; { if( c == CR) { fputc(CR,fdout); return(LF); }else return(c); }  cc -a -p -l2 $1.c >$1.mac m80 $1=$1 l80 $1,$2,$3,$4,$5,$6,$7,$8,$9,clib/s,$1/n/e  [ABORT MACéABS C º ATOI C 4kATOIB C oAVAIL C xBDOS MAC ±’CALL1 MAC%ê1CALL2 MAC+€ŒCALL3 MAC9¬üCALL4 MACA91CALL5 MACF.eECALLOC C tW×CLEARERRC w>{CLIB DOCytý CLIB LSTí ÐÆCPMDISK MACö(àCPMIO MACù©CSEEK C  ‘[CTELL C ’CTELLC C #jDELAY MAC%d(DOLDDR MAC+4DOLDIR MAC.4¨DTOI C 1]EXIT MAC5âFEOF C 9"FERROR C ;æÿFFLUSH C =ÍoFGETC MACB#èjFGETS MACejFILELIB MAC|JåeFPRINTF C Æå¸FPUTC MACÙŸEFPUTS MACø•�FREAD C ÐFREBUF C »°FREE C `IFREEIO MACÖÉFSCANF C  FWRITE C -C2GETCHAR C /’GETCHX C 1®GETS MAC3DGRABIO MACF¯¶GRABUF C NœsINP MACPG1ISALNUM C S‘|ISALPHA C UŒòISASCII C VþéISATTY C Xu�ISCNTRL C ZÔ€ISDIGIT C \ºISGRAPH C ]ÌAISLOWER C ^vISPRINT C _ÁISPUNCT C `9SISSPACE C bW,ISUPPER C d†5ISXDIGITC eóHITOA C gø¯ITOAB C k/¡ÿ ÿ ; ; abort.mac by F. A. Scacchitti 11 - 24 - 84 ; ; abort(error code) ; EXTRN EXIT ; ABORT:: ; POP B ; throw away return address POP H ; get abort code ORA A ; code passed ? JZ ABORT2 ; no - leave it as is MOV A,L STA ABCODE ; yes - imbed it in the message ABORT2: LXI D,ABTMSG ; Load abort message MVI C,9 CALL 5 JMP EXIT ; ABTMSG: DB 0DH, 'Aborted ' ; ABCODE: DB 07,0D,'$' ; END /* ** abs -- returns absolute value of nbr */ abs(nbr) int nbr; { if(nbr < 0) return (-nbr); return (nbr); } #define NOCCARGC /* no argument count passing */ /* ** atoi(s) - convert s to integer. */ atoi(s) char *s; { int sign, n; while(isspace(*s)) ++s; sign = 1; switch(*s) { case '-': sign = -1; case '+': ++s; } n = 0; while(isdigit(*s)) n = 10 * n + *s++ - '0'; return (sign * n); } #define NOCCARGC /* no argument count passing */ /* ** atoib(s,b) - Convert s to "unsigned" integer in base b. ** NOTE: This is a non-standard function. */ atoib(s, b) char *s; int b; { int n, digit; n = 0; while(isspace(*s)) ++s; while((digit = (127 & *s++)) >= '0') { if(digit >= 'a') digit -= 87; else if(digit >= 'A') digit -= 55; else digit -= '0'; if(digit >= b) break; n = b * n + digit; } return (n); } #define NOCCARGC /* no argument count passing */ /* ** Return the number of bytes of available memory. ** In case of a stack overflow condition, if 'abort' ** is non-zero the program aborts with an 'S' clue, ** otherwise zero is returned. */ external char *zzmem avail(aburt) int aburt; { char x; if(&x < zzmem) { if(aburt) abort('M'); return (0); } return (&x - zzmem); } ; ; bdos.mac by F. A. Scacchitti 9 - 18 - 84 ; ; This assembly routine allows CPM calls from Small C. ; ; bdos(function,data) or cpm(function,data) ; ; NOTE - This function only returns what the bdos call ; placed in the accumulator ; BDOS:: ; CPM:: ; POP H ; Pop rtn address POP D ; Pop input parameter in DE register pair POP B ; Pop function code into C register PUSH B ; Restore stack PUSH D PUSH H CALL 5 MOV L,A ; Sign extend A into HL register pair RLC SBB A MOV H,A ; RET ; END  ;----- call1.mac Small-C arithmetic and logical library ; ; part 1 Multiply Routine ; ; ; ; ;MULTIPLY DE BY HL AND RETURN IN HL ;(SIGNED MULTIPLY) ; CCMULT:: MULT: MOV B,H MOV C,L LXI H,0 CCMLT1: MOV A,C RRC JNC CCMLT2 DAD D CCMLT2: XRA A MOV A,B RAR MOV B,A MOV A,C RAR MOV C,A ORA B RZ XRA A MOV A,E RAL MOV E,A MOV A,D RAL MOV D,A ORA E RZ JMP CCMLT1 END ; ;----- call2.mac Small-C arithmetic and logical library ; ; ; part 2 divide routine ; ; ;DIVIDE DE BY HL AND RETURN QUOTIENT IN HL, REMAINDER IN DE ;(SIGNED DIVIDE) ; CCDIV:: DIV: MOV B,H MOV C,L MOV A,D XRA B PUSH PSW MOV A,D ORA A CM CCDENEG MOV A,B ORA A CM CCBCNEG MVI A,16 PUSH PSW XCHG LXI D,0 CCDIV1: DAD H CALL CCRDEL JZ CCDIV2 CALL CCCMPBCDE JM CCDIV2 MOV A,L ORI 1 MOV L,A MOV A,E SUB C MOV E,A MOV A,D SBB B MOV D,A CCDIV2: POP PSW DCR A JZ CCDIV3 PUSH PSW JMP CCDIV1 CCDIV3: POP PSW RP CALL CCDENEG XCHG CALL CCDENEG XCHG RET ; ;NEGATE THE INTEGER IN DE ;(INTERNAL ROUTINE) ; CCDENEG: MOV A,D CMA MOV D,A MOV A,E CMA MOV E,A INX D RET ; ;NEGATE THE INTEGER IN BC ;(INTERNAL ROUTINE) ; CCBCNEG: MOV A,B CMA MOV B,A MOV A,C CMA MOV C,A INX B RET ; ;ROTATE DE LEFT ONE BIT ;(INTERNAL ROUTINE) ; CCRDEL: MOV A,E RAL MOV E,A MOV A,D RAL MOV D,A ORA E RET ; ;COMPARE BC TO DE ;(INTERNAL ROUTINE) ; CCCMPBCDE: MOV A,E SUB C MOV A,D SBB B RET END ; ;----- call3.mac Small-C arithmetic and logical library ; ; ; part 3 switch routine ; ; ; EXECUTE "SWITCH" STATEMENT ; ; HL = SWITCH VALUE ; (SP) -> SWITCH TABLE ; DW ADDR1, VALUE1 ; DW ADDR2, VALUE2 ; ... ; DW 0 ; [JMP default] ; continuation ; CCSWITCH:: XCHG ;;DE = SWITCH VALUE POP H ;;HL -> SWITCH TABLE SWLOOP: MOV C,M INX H MOV B,M ;;BC -> CASE ADDR, ELSE 0 INX H MOV A,B ORA C JZ SWEND ;;DEFAULT OR CONTINUATION CODE MOV A,M INX H CMP E MOV A,M INX H JNZ SWLOOP CMP D JNZ SWLOOP MOV H,B ;;CASE MATCHED MOV L,C SWEND: PCHL END  ; ;----- call4.mac Small-C arithmetic and logical library ; ; ; part 4 arithmetic shift routines ; ; ;SHIFT DE ARITHMETICALLY RIGHT BY HL AND RETURN IN HL ; CCASR:: XCHG DCR E RM MOV A,H RAL MOV A,H RAR MOV H,A MOV A,L RAR MOV L,A JMP CCASR+1 ; ;SHIFT DE ARITHMETICALLY LEFT BY HL AND RETURN IN HL ; CCASL:: XCHG DCR E RM DAD H JMP CCASL+1 ; END  ; ;----- call5.mac Small-C arithmetic and logical library ; ; ; part 5 main routine - multiply, divide, switch and ; shift routines in seperate modules ; CCDCAL:: PCHL CCDDGC:: DAD D JMP CCGCHAR ; CCDSGC:: INX H INX H DAD SP ; ;FETCH A SINGLE BYTE FROM THE ADDRESS IN HL AND ;SIGN EXTEND INTO HL ; CCGCHAR:: MOV A,M ; ;PUT THE ACCUM INTO HL AND SIGN EXTEND THROUGH H. ; CCARGC:: CCSXT:: MOV L,A RLC SBB A MOV H,A RET ; CCDDGI:: DAD D JMP CCGINT ; CCDSGI:: INX H INX H DAD SP ; ;FETCH A FULL 16-BIT INTEGER FROM THE ADDRESS IN HL ;INTO HL ; CCGINT:: MOV A,M INX H MOV H,M MOV L,A RET ; CCDECC:: INX H INX H DAD SP MOV D,H MOV E,L CALL CCGCHAR DCX H MOV A,L STAX D RET ; CCINCC:: INX H INX H DAD SP MOV D,H MOV E,L CALL CCGCHAR INX H MOV A,L STAX D RET ; ; ; CCDDPC:: CDPDPC:: ; DAD D CCPDPC:: POP B ;;RET ADDR POP D PUSH B ; ;STORE A SINGLE BYTE FROM HL AT THE ADDRESS IN DE ; CCPCHAR:: PCHAR:: MOV A,L STAX D RET ; CCDECI:: INX H INX H DAD SP MOV D,H MOV E,L CALL CCGINT DCX H JMP CCPINT ; CCINCI:: INX H INX H DAD SP MOV D,H MOV E,L CALL CCGINT INX H JMP CCPINT ; ; ; CCDDPI:: CDPDPI:: ; DAD D CCPDPI:: POP B ;;RET ADDR POP D PUSH B ; ;STORE A 16-BIT INTEGER IN HL AT THE ADDRESS IN DE ; CCPINT:: PINT:: MOV A,L STAX D INX D MOV A,H STAX D RET ; ;INCLUSIVE "OR" HL AND DE INTO HL ; CCOR:: MOV A,L ORA E MOV L,A MOV A,H ORA D MOV H,A RET ; ;EXCLUSIVE "OR" HL AND DE INTO HL ; CCXOR:: MOV A,L XRA E MOV L,A MOV A,H XRA D MOV H,A RET ; ;"AND" HL AND DE INTO HL ; CCAND:: MOV A,L ANA E MOV L,A MOV A,H ANA D MOV H,A RET ; ;IN ALL THE FOLLOWING COMPARE ROUTINES, HL IS SET TO 1 IF THE ;CONDITION IS TRUE, OTHERWISE IT IS SET TO 0 (ZERO). ; ;TEST IF HL = DE ; CCEQ:: CALL CCCMP RZ DCX H RET ; ;TEST IF DE <> HL ; CCNE:: CALL CCCMP RNZ DCX H RET ; ;TEST IF DE > HL (SIGNED) ; CCGT:: XCHG CALL CCCMP RC DCX H RET ; ;TEST IF DE <= HL (SIGNED) ; CCLE:: CALL CCCMP RZ RC DCX H RET ; ;TEST IF DE >= HL (SIGNED) ; CCGE:: CALL CCCMP RNC DCX H RET ; ;TEST IF DE < HL (SIGNED) ; CCLT:: CALL CCCMP RC DCX H RET ; ;COMMON ROUTINE TO PERFORM A SIGNED COMPARE ; OF DE AND HL ;THIS ROUTINE PERFORMS DE - HL AND SETS THE CONDITIONS: ; CARRY REFLECTS SIGN OF DIFFERENCE (SET MEANS DE < HL) ; ZERO/NON-ZERO SET ACCORDING TO EQUALITY. ; CCCMP:: MOV A,H ;;INVERT SIGN OF HL XRI 80H MOV H,A MOV A,D ;;INVERT SIGN OF DE XRI 80H CMP H ;;COMPARE MSBS JNZ CCCMP1 ;;DONE IF NEQ MOV A,E ;;COMPARE LSBS CMP L CCCMP1: LXI H,1 ;;PRESET TRUE COND RET ; ;TEST IF DE >= HL (UNSIGNED) ; CCUGE:: CALL CCUCMP RNC DCX H RET ; ;TEST IF DE < HL (UNSIGNED) ; CCULT:: CALL CCUCMP RC DCX H RET ; ;TEST IF DE > HL (UNSIGNED) ; CCUGT:: XCHG CALL CCUCMP RC DCX H RET ; ;TEST IF DE <= HL (UNSIGNED) ; CCULE:: CALL CCUCMP RZ RC DCX H RET ; ;COMMON ROUTINE TO PERFORM UNSIGNED COMPARE ;CARRY SET IF DE < HL ;ZERO/NONZERO SET ACCORDINGLY ; CCUCMP:: MOV A,D CMP H JNZ CCUCP1 MOV A,E CMP L CCUCP1: LXI H,1 RET ; ;SUBTRACT HL FROM DE AND RETURN IN HL ; CCSUB:: MOV A,E SUB L MOV L,A MOV A,D SBB H MOV H,A RET ; ;FORM THE TWO'S COMPLEMENT OF HL ; CCNEG:: CALL CCCOM INX H RET ; ;FORM THE ONE'S COMPLEMENT OF HL ; CCCOM:: MOV A,H CMA MOV H,A MOV A,L CMA MOV L,A RET CCLNEG:: MOV A,H ORA L JNZ $+6 MVI L,1 RET LXI H,0 RET ; ; END #define NOCCARGC /* no argument count passing */ #include stdio.h /* ** Cleared-memory allocation of n items of size bytes. ** n = Number of items to allocate space for. ** size = Size of the items in bytes. ** Returns the address of the allocated block, ** else NULL for failure. */ calloc(n, size) char *n, *size; { return (Ualloc(n*size, YES)); } /* ** clearerr.c by F. A. Scacchitti 11/22/84 ** ** Clears errors and end of file marks in fd. ** */ #include clearerr(fd) int fd; { *(fd + 40) = NULL; }  CLIB.DOC by F. A. Scacchitti 25 Glenview Lane Rochester, NY 14609 11 - 24 - 84 Thió  'C§ Librarù containó mosô oæ thå functionó describeä iî  J® � E®  Hendrix'ó  "Thå Small-à Handbook"®  Theså functionó arå  alsï � describeä iî thå Maù 198´ Dr®  Dobb'ó Journal®  Mù intent¬  aó ió � his¬   ió  tï  providå  á  completå  standarä  librarù  followinç � specicationó  describeä  iî "Thå à Programminç  Language"®  Thió � librarù  ió  á  combinatioî oæ moduleó  obtaineä  froí  Hendrix'ó � library¬  á  modifieä  publiã domaiî runtimå librarù anä  moduleó � writteî  bù  myself®  Thå  followinç  sourcå  fileó  contaiî  thå � functionó describeä iî thió document: ABORT .MAC ABS .C ATOI .C ATOIB .C AVAIL .C BDOS .MAC CALL1 .MAC CALL2 .MAC CALL3 .MAC CALL4 .MAC CALL5. .MAC CALLOC .C CLEARERR.C CPMDISK .MAC CPMIO .MAC CSEEK .C CTELL .C CTELLC .C DELAY .MAC DOLDDR .MAC DOLDIR .MAC DTOI .C FEOF .C FERROR .C FFLUSH .C FGETC .MAC FGETS .MAC FILELIB .C FPRINTF .C FPUTC .MAC FPUTS .MAC FREAD .C FREBUF .C FREE .C FREEIO .MAC FSCANF .C FWRITE .C GETCHAR .C GETCHX .C GETS .MAC GRABIO .MAC GRABUF .C INP .MAC ISALNUM .C ISALPHA .C ISASCII .C ISATTY .C ISCNTRL .C ISDIGIT .C ISGRAPH .C ISLOWER .C ISPRINT .C ISPUNCT .C ISSPACE .C ISUPPER .C ISXDIGIT.C ITOA .C ITOAB .C ITOD .C ITOO .C ITOU .C ITOX .C LEFT .C LEXCMP .C LIBID .C MALLOC .C MAX .C MIN .C OTOI .C OUTP .MAC PAD .C POLL .C PRNTF .C PUTCHAR .C PUTLIST .MAC PUTS .C READ .C RENAME .C REVERSE .C REWIND .C SIGN .C STRCAT .C STRCHR .C STRCMP .C STRCPY .C STRLEN .C STRNCAT .C STRNCMP .C STRNCPY .C STRRCHR .C TOASCII .C TOLOWER .C TOPOFMEM.MAC TOUPPER .C UALLOC .C ULINK .C UNGETC .C UNLINK .MAC UTOI .C WRITE .C XTOI .C ZZBUF .MAC ZZFIO .MAC ŠRatheò  thaî  tryinç tï providå á Unix-likå environmenô (anä  thå � resultinç  overhead)¬  I'vå attempteä tï puô á  packagå  togetheò � whicè  ió  morå conducivå to CP/M®  Thió Librarù ió  designeä  tï � producå  minimuí  sizå fileó whilå retaininç thå flavoò  oæ  'C'® � Manù  oæ  thå  functionó arå writteî iî assembleò  and¬  aó  timå � permits¬  morå  functionó  wilì bå optimizeä foò  botè  sizå  anä � speed®  Mosô functionó containeä iî thió librarù arå useablå witè � anù CP/Í 8° system¬  however¬  manù oæ thå I/Ï functionó interacô � witè eacè otheò aó welì aó thå runtimå routines®  Anyonå adaptinç � anù  portionó oæ thió librarù shoulä evaluatå thå sourcå codå  oæ � thå particulaò module(s© iî question® Aó witè alì libraries¬ its§ � valuå  manifestó itselæ wheî useä witè á linking-loadeò thaô  haó � searcè capabilities® (eg® Microsoftó M80/L80/LIB8° package) .pa ŠFEATURES OF THE LIBRARY 104 functionó (5 aliases© arå available¬  includinç mosô standarä � 'C§ functions. Smalleò  prograí  sizå thaî mosô - minimuí prograí  sizå  ió  25¶ � bytes. This would be the result of the following 'C' code. #include main() { } Argã anä argö arå handleä bù thå runtimå modulå anä alwayó passeä � tï thå useò program® Á maximuí oæ 2´ argumentó maù bå passeä witè � 23 availablå tï the user. Fileó maù bå openeä iî read¬  writå oò appenä  modes®  Read/writå � (+© modeó arå noô supported. All I/O buffers are allocated outside program space including: 1 128 byte default disk I/O buffer 8 1 K byte file buffers (available for general use) Thå  defaulô disë I/Ï buffeò ió seô bù thå runtimå modulå tï � preservå thå contentó oæ thå ruî strinç residinç aô thå CP/Í � defaulô  buffer®   Thå  standarä  defaulô  buffeò  (80h©  ió � restoreä aô prograí completion. Thå   ¸  filå  bufferó  arå  automaticallù   allocateä   anä � deallocateä  bù  thå  filå handlinç routineó  anä  thå  useò � needn'ô worrù abouô sequence® However¬ theså bufferó arå noô � restricteä  tï  filå  I/O®  Theù maù bå  allocateä  viá  thå � grabuf(© functioî anä deallocateä viá frebuf()® Cautioî musô � bå  useä  tï insurå thaô anù uså oæ theså bufferó  doeó  noô � exceeä  thå ± K-bytå limit®  Thå resultó oæ failinç tï  staù � withiî thå limitó ió unpredictable. Sequentiaì    dynamiã   memorù   allocation/deallocatioî   schemå � (calloc,malloc¬  anä  free© startó aô thå enä oæ thå lasô  buffeò � anä  endó aô thå stack®  Thå useò musô maintaiî thå integritù  oæ � thió  area®  Iæ  á  buffeò ió seô freå belo÷ onå thaô  shoulä  bå � maintained, thå  schemá  wilì  indicatå  alì  memorù  abovå  anä � includinç thå releaseä buffeò ió available®  Allocatinç anä usinç � anotheò buffeò aô thió poinô maù undesirablù wipå ouô datá  whicè � should have been maintained. Optionallù  eliminatå  thå  warí  booô  thaô  occuró  oî  prograí � termination®  Thió  ió accomplisheä in the following manner: Defininç  thå globaì ZZZCCÐ ½ ° placeó thå stacë aô thå baså � oæ thå BDOÓ anä returnó viá warí booô. (jmp 0) Defininç thå globaì ZZZCCÐ ½ ± placeó thå stacë aô thå  baså �Š oæ thå CCÐ anä returnó tï thå CCP. ZZZCCÐ maù bå generateä aó á compileò functioî viá á switch¬ � oò addeä aó thå followinç inlinå codå tï á prograí oò headeò � file. #asm zzzccp:: db 1 #endasm Iæ  lefô undefineä iô wilì defaulô tï warí boot®  Thå linkeò � wilì indicatå iô aó undefined¬ witè nï consequence® CP/Í  integritù ió maintaineä bù thå runtimå modulå anä  restoreä � aô  prograí completion®  Also¬  alì opeî fileó  arå  closed¬  buô � buffers are NOT flushed. prntf(© ió á speciaì versioî oæ printæ whicè onlù supportó thå d¬ � c¬  anä ó specifications® Fielä lengtè specifieró (wheî used© arå � limiteä tï á sizå oæ ¹ anä fielä separatoò specificationó  aren'ô � alloweä anä shoulä noô bå used® Thió modulå occupieó 82¸ byteó oæ � codå space. getchx(©  ió  á  speciaì versioî oæ getchar(© whicè  useó  direcô � consolå inpuô ratheò thaî thå standarä consolå input® Iô doeó noô � reflecô  characteró  tï  thå  screeî oò  trað  thå  CP/Í  controì � characters. grabuf(©  anä  frebuf(© allo÷ thå useò accesó tï á selæ  managinç � memorù allocatioî scheme®  Eacè buffeò returneä bù grabuf(© ió 1Ë � byteó oæ memorù anä shoulä noô bå exceeded®  Althougè thió  isn'ô � standard¬  iô  doeó providå á somewhaô bomâ resistanô (noô proof© � memory alloc./dealloc. schema along with the standards. .pa ŠFUNCTIONS IN THE LIBRARY Onlù  thå  functionó noô describeä iî  J®  E®  Hendrix'ó  Small-à � Manuaì, or those that differ from his, wilì bå described. abort(code) exitó  thå  prograí  displayinç thå  "Aborted¢  messagå  anä � optionaì  codå  passeä bù thå user®  Iæ nï codå ió passeä  á � default code of control g (bell) is used. abs(nbr) int nbr atoi(str) char *str atoib(str,base) char *str; int base; avail(abort) int abort; bdos(fn,data) int fn, data; standarä CP/Í bdoó calì fî ió thå functioî codå anä datá  ió � thå  settinç oæ thå då register®  Returnó whateveò thå  calì � places in the accumulator. calloc(nbr,sz) int nbr, sz; cfree(addr) char *addr; clearerr(fd) int fd; cpm(fn,data) same as bdos(fn,data) cpmdisk(nbr) int nbr; log in disk number nbr. cseek(fd,offset,mode) ctell(fd) int fd; ctellc(fd) int fd; delay(n) int n; delaù  foò  î  millisecondó, baseä oî á  ´  Mhú  clocë  (25° � nanoseconä cyclå time). delete(name) char *name; dolddr(source, destination, n) int source, destination, n; perform z80 lddr instruction. doldir(source, destination, n) int source, destination, n; perform z80 ldir instruction dtoi(decstr, nbr) char *decstr; int nbr; Šexit(code) exit(); exits program and returns to CP/M fcb(fd,name) char *name; int fd; construct a file fcb on file name at location fd. (located in filelib module) fclose(fd) int fd; (located in file lib module) feof(fd) int fd; ferror(fd) int fd; fflush(fd) int fd; fgetc(fd) int fd; fgets(str, sz, fd) char *str; int sz, fd; fopen(filename, mode) char *name, mode; (locateä iî fileliâ modulå - onlù r¬ w¬ anä á modeó ) fprintf(fd, format[, arg1, ar2,...]) int fd; char *format; fputc(c, fd) char c; int fd; fputs(str, fd) char *str; int fd; fread(buffer, sz, n, fd) char *buffer; int fd, n, sz; frebuf(buff) int buff; freå  thå  buffeò  bufæ allocateä bù grabuf(©  anä  makå  iô � available for use. free(addr) same as cfree(addr) freeio(fd) int fd; freå  thå  filå structurå allocateä bù grabio(© anä makå  iô � available for use. fscanf(fd, format, arg, arg, . . . ) fwrite(buff, sz, n, fd) char *buf; int sz, n, fd; getc(fd) same as fgetc(fd) getchar() getchx(© ió á speciaì versioî oæ getchar(© whicè useó direcô  consolå � inpuô  ratheò thaî thå standarä consolå input®  Iô doeó  noô � reflecô  characteró  tï thå screeî oò trað thå CP/Í  controì � characters. Šgets(str) char *str; grabio() returnó  thå  addresó  oæ  thå  firsô  availablå  filå   I/Ï � structure. If none is available NULL is returned. grabuf() returnó  thå  addresó oæ thå firsô availablå buffeò  iî  thå � file I/O structure. If none is available NULL is returned. inp(nbr) int nbr; returns the value read in at port nbr isalnum(c) char c; isalpha(c) char c; isascii(c) char c; isatty(fd) int fd; iscntrl(c) char c; isdigit(c) char c; isgraph(c) char c; islower(c) char c; isprint(c) char c; ispunct(c) char c; isspace(c) char c; isupper(c) char c; isxdigit(c) char c; itoa(nbr, str) int nbr; char *str; itoab(nbr, str, base) int nbr, base; char *str; itod(nbr, str, sz) int nbr,sz; char *str; itoo(nbr,str,sz) int nbr,sz; char *str; itou(nbr,str,sz) int nbr,sz; char *str; itox(nbr,str,sz) int nbr,sz; char *str; left(str) char *str; lexcmp(str1, str2) char *str1, *str2; Šlibid() displays the date and originator of this library malloc(sz) int sz; max(a, b) int a, b; returns the greater of a or b min(a, b) int a, b; returns the lesser of a or b otoi(str,nbr) char *str; int nbr; outp(nbr,data) int nbr, data; transmits data out of port nbr. pad(dest, ch, n) char *dest, *n; int ch; poll(pause) int pause; printf(format[,arg1,arg2,...]) prntf(format[,arg1,arg2,...]) ió á speciaì versioî oæ printæ whicè onlù supportó thå d¬ c¬ � anä  ó specifications®  Fielä lengtè specifieró (wheî  used© � arå   limiteä   tï  á  sizå  oæ  ¹   anä   fielä   separatoò � specificationó  aren'ô alloweä anä shoulä noô bå used® putc(c, fd) same as fputc(c, fd) putchar(c) char c; putlist(c) char c; outputs character c to the list device. puts(str) char *str; read(fd, buff, n) int fd, n; char *buff rename(old,new) char *old, *new; reverse(str) char *str; rewind(fd) int fd; scanf(format, arg1, arg2, . . .) sign(nbr) int nbr; strcat(dest, sour) char *dest, *sour; strchr(str, c) char *str, c; strcmp(str1, str2) char *str1, *str2; Šstrcpy(dest, sour) char *dest, *sour; strlen(str) char *str; strncat(dest, sour, n) char *dest, *sour; int n; strncmp(str1, str2, n) char *str1, *str2; int n; strncpy(dest, sour, n) char *dest, *sour; int n; strrchr(str, c) char *str, c; toascii(c) char c; tolower(c) char c; topofmem() returns base of system bdos toupper(c) char c; ualloc(n, clear) char *n; int clear; ungetc(c, fd) char c; int fd; unlink(name) same as delete(name) utoi(str, nbr) char *str; int nbr; write(fd,buffer,n) int fd, n; char *buffer; xtoi()(str, nbr) char *str; int nbr; .pa ŠLIBRARY STRUCTURE Thå  clib.reì  Small-C systeí librarù moduleó arå loadeä  iî  thå � followinç sequencå tï avoiä backwarä referencinç bù L80: ULINK** LIBID* UNGETC RENAME FREAD READ FWRITE WRITE FFLUSH REWIND CSEEK CTELL CTELLC FILELIB GRABUF* GRABIO* FREBUF* FREEIO* FPRINTF FSCANF PRNTF* FPUTS FGETS GETS PUTS FPUTC FGETC PUTCHAR GETCHAR GETCHX* CPMIO* CPMDISK* PUTLIST* CALLOC MALLOC UALLOC* AVAIL* FREE POLL* ABS ATOI ATOIB DTOI ISALNUM ISALPHA ISASCII ISATTY ISCNTRL ISDIGIT ISGRAPH ISLOWER ISPRINT ISPUNCT ISSPACE ISUPPER ISXDIGIT ITOA ITOAB ITOD ITOO ITOU ITOX LEFT LEXCMP OTOI REVERSE SIGN STRCAT STRCHR STRCMP STRCPY STRLEN STRNCAT STRNCMP STRNCPY STRRCHR TOASCII TOLOWER TOUPPER UTOI XTOI PAD FEOF FERROR CLEARERR DELAY* DOLDDR* DOLDIR* INP* OUTP* TOPOFMEM* UNLINK MIN* MAX* CALL1** CALL2** CALL3** CALL4** CALL5** BDOS* ABORT ZZFIO** ZZBUF** * indicates a non standard function ** indicates a system function SYSTEM MODULES Refeò  tï  thå  sourcå fileó oæ theså moduleó  foò  morå  detailó � regarding operation. ULINË  (25± bytes© containó thå routineó tï steeò thå 'C§ prograí � froí CP/Í tï thå useò prograí anä bacë agaiî tï CP/M® Thió modulå � ió thå onlù onå iî thå librarù tï havå aî entrù poinô defineä  aó � á startinç point¬ thereforå thå prograí wilì alwayó starô here® CALL±  (3²  bytes©  containó  thå codå tï  supporô  thå  multiplù � operator. ( * ) CALL²  (9´  bytes©  containó  thå  codå  tï  supporô  thå  dividå � and modulus operators. ( / % ) Š CALL³  (2¶  bytes©  containó  thå  codå  tï  supporô  thå  switcè � statement. CALL´ (2± bytes© containó thå codå tï supporô thå righô anä  lefô � shifô operators. ( >> << ) CALLµ  (23µ  bytes©  containó  thå  codå  tï  supporô  alì  otheò � arithmetiã  anä  logicaì operatoró aó welì aó memorù anä  addresó � fetch and store operations. ZZFIÏ  (23  bytes© containó storagå foò globaì variableó useä  bù � file I/O and fgetc, fputc, etc . . . ZZBUÆ  (± byte© ió thå lasô modulå iî thå librarù anä  serveó  tï � marë  thå  startinç poinô foò I/Ï bufferó anä thå dynamiã  memorù � allocation scheme.  #ABS.C #ATOI.C #ATOIB.C #AVAIL.C #BDOS.MAC #CALL1.MAC #CALL2.MAC #CALL3.MAC #CALL4.MAC #CALL5.MAC #CALLOC.C #CPMDISK.MAC #CPMIO.MAC #CSEEK.C #CTELL.C #CTELLC.C #DELAY.MAC #DOLDDR.MAC #DOLDIR.MAC #DTOI.C #EXIT.MAC #FFLUSH.C #FGETC.MAC #FGETS.MAC #FILELIB.MAC #FPRINTF.C #FPUTC.MAC #FPUTS.MAC #FREAD.C #FREBUF.C #FREE.C #FREEIO.MAC #FSCANF.C #FWRITE.C #GETCHAR.C #GETCHX.C #GETS.MAC #GRABIO.MAC #GRABUF.C #INP.MAC #ISALNUM.C #ISALPHA.C #ISASCII.C #ISATTY.C #ISCNTRL.C #ISDIGIT.C #ISGRAPH.C #ISLOWER.C #ISPRINT.C #ISPUNCT.C #ISSPACE.C #ISUPPER.C #ISXDIGIT.C #ITOA.C #ITOAB.C #ITOD.C #ITOO.C #ITOU.C #ITOX.C #LEFT.C #LEXCMP.C #LIBID.C #MALLOC.C #MAX.C #MIN.C #OTOI.C #OUTP.MAC #PAD.C #POLL.C #PRNTF.C #PUTCHAR.C #PUTLIST.MAC #PUTS.C #READ.C #RENAME.C #REVERSE.C #REWIND.C #SIGN.C #STRCAT.C #STRCHR.C #STRCMP.C #STRCPY.C #STRLEN.C #STRNCAT.C #STRNCMP.C #STRNCPY.C #STRRCHR.C #TOASCII.C #TOLOWER.C #TOPOFMEM.MAC #TOUPPER.C #UALLOC.C #ULINK.MAC #UNGETC.C #UNLINK.MAC #UTOI.C #WRITE.C #XTOI.C #ZZBUF.MAC #ZZFIO.MAC ; ; cpmdisk(disk) ; ; F. A. Scacchitti 8/4/84 ; CBDOS EQU 5 ;/* bdos entry point */ LF EQU 10 EOL EQU 13 ; ; CP/M BDOS CALLS ; SELECT EQU 14 ;log-in a drive ; ; CPMDISK:: POP D POP H PUSH H PUSH D MOV A,L ; if(d~=0) ORA H JZ DISKIF1 XCHG ; cpm(SELECT,d-1); DCX D MVI C,SELECT CALL CBDOS ; (mod fas) DISKIF1: RET END ; ; cpmio(fn,unit) ; ; F. A. Scacchitti 9/4/84 ; CBDOS EQU 5 ;/* bdos entry point */ CPMARG EQU 128 ;/* CP/M command line */ MAXARG EQU 32 ;/* Maximum number of input args */ STDIN EQU 0 STDOUT EQU 1 STDERR EQU 2 STDLST EQU 4 CTRLZ EQU 26 ;control z NULL EQU 0 ;pointer to nothing FCBSIZE EQU 36 ;size, in bytes, of an FCB NEXTP EQU 0 ;offset to next-character pointer in I/O structure UNUSED EQU 2 ;offset to unused-positions-count in I/O structure BUFFER EQU 6 ;offset to disk sector buffer in I/O structure UNGOT EQU 5 ;offset to char ungotten by ungetc() FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available for the taking EOFFLG EQU 2 ;The end of this file has been hit WRTFLG EQU 1 ;This file open for writing BUFSIZ EQU 1024 ;how long the sector buffer is NBUFS EQU 8 ;number of I/O buffers TBUFF EQU 128 ;default cpm buffer LF EQU 10 EOL EQU 13 ; ; CP/M BDOS CALLS ; CLOSE EQU 16 ;close a file CPMSTR EQU 9 ;print '$' delimited string on console CREATE EQU 22 ;make a file DMA EQU 26 ;set DMA (I/O address) DELETE EQU 19 ;delete a file GETCH EQU 1 ;read character from console GETSTR EQU 10 ;read string from console LSTOUT EQU 5 ;write character to list device OPEN EQU 15 ;open a file PUTCH EQU 2 ;write character to console QUERY EQU 25 ;get logged-in drive id READ EQU 20 ;read a sector SELECT EQU 14 ;log-in a drive WRITE EQU 21 ;write a sector ; ; File i/o storage varibles found in ulink() ; EXTRN ZZUNIT EXTRN ZZIP EXTRN ZZCHP EXTRN ZZDP EXTRN ZZFILE EXTRN ZZMODE EXTRN ZZCH EXTRN ZZT EXTRN ZZFN EXTRN ZZNUBU EXTRN ZZMXSC ; ; Characteristics variable storage found in ulink() ; EXTRN ZZSVCH EXTRN ZZDFLT EXTRN ZZSTAK EXTRN ZZMEM ; EXTRN CPMDISK ; ; Default disk I/O buffer ; EXTRN ZZBUF ; CPMIO:: POP B POP D POP H SHLD ZZFN XCHG SHLD ZZUNIT PUSH D PUSH H PUSH B LHLD ZZUNIT ; cpmdisk(*unit); MOV L,M MVI H,0 PUSH H CALL CPMDISK POP H LHLD ZZUNIT ; ZZIP = unit+FCBSIZE; LXI D,FCBSIZE ; cpm(DMA,&ZZIP[BUFFER]); DAD D LXI D,BUFFER DAD D SHLD ZZNUBU ;# SAVE TO UPGRADE DURING LOOPING XCHG MVI C,DMA CALL CBDOS ; (mod fas) LHLD ZZFN ; t = cpm(ZZFN,unit); MOV C,L MVI A,8 ;# READ/WRITE UP TO 8 SECTORS STA ZZMXSC ;# SAVE IT LHLD ZZUNIT XCHG IOLOOP: PUSH H ;# NEW CONSTRUCT TO ACCOMODATE 1K BUFFERS PUSH D ;# SAVE IT ALL FOR REPEAT PERFORMANCE PUSH B ; PUSH H ;# DON'T WRITE BLANKS MOV A,C CPI READ POP H JZ NOWRIT PUSH H LHLD ZZNUBU MOV A,M POP H CPI 1AH ;# END OF FILE CHAR ? JZ IOEXIT ; NOWRIT: CALL CBDOS ;# READ/WRITE A SECTOR PUSH PSW CALL CCSXT## SHLD ZZT POP PSW ORA A ;# CHECK FOR LAST SECTOR JNZ IOEXIT ;# IF LAST GET OUT OF HERE LDA ZZMXSC DCR A ;# CHECK FOR 8 SECTORS DONE JZ IOEXIT STA ZZMXSC LHLD ZZNUBU ;# GET BUFFER ADDRESS LXI D,128 DAD D ;# COMPUTE NEW BUFFER ADDRESS SHLD ZZNUBU ;# SAVE TIL NEXT TIME XCHG MVI C,DMA CALL CBDOS ;# SET THE NEW BUFFER POP B POP D POP H JMP IOLOOP IOEXIT: POP B ;# CLEAN UP POP D POP H MVI C,DMA ; cpm(DMA,ZZBUF); LXI D,ZZBUF CALL CBDOS ; (mod fas) LHLD ZZT ; if(t~=0) return(-1); MOV A,H ; else return(0); ORA L JNZ CPMIF1 LXI H,0 JMP CPMIF2 CPMIF1: LXI H,-1 CPMIF2: RET ; END #include stdio.h /* ** cseek(fd,offset,base) by F.A.Scacchitti 9/15/84 ** ** Position fd to the 128-byte record indicated by ** "offset" relative to the point indicated by "base." ** ** BASE OFFSET-RELATIVE-TO ** 0 first record ** 1 current record ** 2 end of file (last record + 1) ** ** Returns NULL on success, else EOF. */ extern char zzmxsc; char zzzext, zzzrec; cseek(fd, offset, base) int fd, offset, base; { char *fcbdata; int tempofs, unused; fcbdata = fd; switch (base) { case 0: getval(offset); break; case 1: tempofs = gettof(fcbdata); if(tempofs >= 8) tempofs -= (8 - zzmxsc); getval(tempofs + offset); break; case 2: while(bdos(20, fd) == NULL); tempofs = gettof(fcbdata); getval(tempofs - offset); break; default: return (EOF); } fcbdata[12] = zzzext; fcbdata[32] = zzzrec; if(fcbdata[33] != 1){ fcbdata[33] = 0; if(cpmio(20,fd) == EOF); if(zzmxsc == 8) return(EOF); unused = 1024 - (zzmxsc * 128); }else{ unused = 0; } *(fd + 38) = unused; *(fd + 36) = fd + 42; return (NULL); } getval(offset) int offset;{ zzzext = offset / 80; zzzrec = offset % 80; } gettof(fcbdata) char *fcbdata; { int tempofs; return(fcbdata[12] * 80 + fcbdata[32]); }  /* ** ctell.c by F. A. Scacchitti 9/11/84 */ #define NOCCARGC #include ctell(fd) int fd; { char *fcb; int bsec, osec, t; fcb = fd; bsec = (*(fd + 36) - fd - 42) / 128 ; t = fcb[32]; if((osec = t % 8) == 0 && t != 0) osec = 8; if(t < 0) t = 128; return((fcb[12] * 128) + t - osec + bsec); }  /* ** ctellc.c by F. A. Scacchitti 9/11/84 */ #define NOCCARGC #include ctellc(fd) int fd; { return(( *(fd + 36) - fd - 42) % 128 ); } ; ; delay(n) ; int n; ; ; n = number of milliseconds to delay ; DELAY:: POP H ; Return address POP D ; Delay Value PUSH D ; Restore Stack PUSH H ; DELAY1: ;# 51 (overhead) 12.5 usec. LXI B,123 ;# 10 CALL DELAY2 ;# 3963 (17 + 10 + (123 X 32)) DCX D ;# 5 MOV A,D ;# 5 ORA E ;# 4 JNZ DELAY1 ;# 10 RET ;-------- ; 3997 cycles @ 250 nanosec per ; --------------------------- ; 0.99925 milliseconds ; ; ; Delay Loop set for 10 usec. per count based on 4 MHz clock ; DELAY2: DCX B ;# 5 ORA A ;# 4 ORA A ;# 4 MOV A,B ;# 5 ORA C ;# 4 JNZ DELAY2 ;# 10 RET ;# ;#------ ;# 32 cycles @ 250 nanosec per = 12.5 usec. END  ; lddr(source, dest, n) DOLDDR:: INX SP ; Skip over return address INX SP POP B ; Load n POP D ; Load destination POP H ; Load source DB 0EDH, 0B8H ; Do LDDR instruction PUSH H ; Restore stack PUSH D PUSH B DCX SP DCX SP RET END  ; doldir(source, dest, n) DOLDIR:: INX SP ; Skip over return address INX SP POP B ; Load n POP D ; Load destination POP H ; Load source DB 0EDH, 0B0H ; Do LDIR instruction PUSH H ; Restore stack PUSH D PUSH B DCX SP DCX SP RET END #define NOCCARGC /* no argument count passing */ #include stdio.h /* ** dtoi -- convert signed decimal string to integer nbr ** returns field length, else ERR on error */ dtoi(decstr, nbr) char *decstr; int *nbr; { int len, s; if((*decstr)=='-') {s=1; ++decstr;} else s=0; if((len=utoi(decstr, nbr))<0) return ERR; if(*nbr<0) return ERR; if(s) {*nbr = -*nbr; return ++len;} else return len; } ; exit.mac by F. A. Scacchitti 9 - 18 - 84 ; ; abort(error code) ; ; EXTRN ZZFINI ; EXIT:: ; ABORT:: ; POP B ; throw away return address POP H ; get abort code ORA A ; code passed ? JZ ABORT2 ; no - leave it as is MOV A,L STA ABCODE ; yes - imbed it in the message ABORT2: LXI D,ABTMSG ; Load abort message MVI C,9 CALL 5 JMP ZZFINI ; ABTMSG: DB 0DH, 'Aborted ' ; ABCODE: DB 07,0D,'$' ; END /* ** feof.c by F. A. Scacchitti 11/22/84 ** ** Returns true only if end of file is reached. ** */ #include feof(fd) int fd; { char c; c = *(fd + 40); return(c == EOF ? TRUE : FALSE); } /* ** ferror.c by F. A. Scacchitti 11/22/84 ** ** Returns true only if a file error has occurred. ** */ #include ferror(fd) int fd; { char c; c = *(fd + 40); return(c == EOF ? FALSE : c); }  /* ** fflush.c by F. A. Scacchitti 9/15/84 */ #define WRITE 1 #define OPEN 15 #include fflush(fd) int fd; { int unused, charptr; char mode, record, extent; mode = *(fd + 33); if(mode != WRITE) return(NULL); charptr = *(fd + 36); unused = *(fd + 38); extent = *(fd + 12); record = *(fd + 32); if(fclose(fd) != NULL || bdos(OPEN,fd) < NULL) return(EOF); *(fd + 36) = charptr; *(fd + 38) = unused; *(fd + 12) = extent; *(fd + 32) = record; *(fd + 33) = mode; return(NULL); } ; ; ; fgetc(unit) by F. A. Scacchitti 11 - 24 - 84 ; ; getc(unit) ; ; CBDOS EQU 5 ;/* bdos entry point */ CPMARG EQU 128 ;/* CP/M command line */ MAXARG EQU 32 ;/* Maximum number of input args */ STDIN EQU 0 STDOUT EQU 1 STDERR EQU 2 STDLST EQU 4 CTRLZ EQU 26 ;control z NULL EQU 0 ;pointer to nothing FCBSIZE EQU 36 ;size, in bytes, of an FCB NEXTP EQU 0 ;offset to next-char. pointer in I/O struct. UNUSED EQU 2 ;offset to unused-pos.-count in I/O struct. BUFFER EQU 6 ;offset to disk sector buf. in I/O struct. UNGOT EQU 5 ;offset to char ungotten by ungetc() FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available for the taking EOF EQU 0FFH ;# END OF FILE BYTE FOR UNGOTTEN CHAR ID EOFFLG EQU 2 ;The end of this file has been hit WRTFLG EQU 1 ;This file open for writing BUFSIZ EQU 1024 ;how long the sector buffer is NBUFS EQU 8 ;number of I/O buffers TBUFF EQU 128 ;default cpm buffer LF EQU 10 EOL EQU 13 ; ; CP/M BDOS CALLS ; CLOSE EQU 16 ;close a file CPMSTR EQU 9 ;print '$' delimited string on console CREATE EQU 22 ;make a file DMA EQU 26 ;set DMA (I/O address) DELETE EQU 19 ;delete a file GETCH EQU 1 ;read character from console GETSTR EQU 10 ;read string from console LSTOUT EQU 5 ;write character to list device OPEN EQU 15 ;open a file PUTCH EQU 2 ;write character to console QUERY EQU 25 ;get logged-in drive id READ EQU 20 ;read a sector SELECT EQU 14 ;log-in a drive WRITE EQU 21 ;write a sector ; ; File i/o storage varibles found in ulink() ; EXTRN ZZUNIT EXTRN ZZIP EXTRN ZZCHP EXTRN ZZDP EXTRN ZZFILE EXTRN ZZMODE EXTRN ZZCH EXTRN ZZT EXTRN ZZFN EXTRN ZZNUBU EXTRN ZZMXSC ; ; Characteristics variable storage found in ulink() ; EXTRN ZZSVCH EXTRN ZZDFLT EXTRN ZZSTAK EXTRN ZZMEM ; EXTRN GETCHAR EXTRN CPMIO ; FGETC:: GETC:: POP B POP H ; get args PUSH H PUSH B ; c=cget(unit); PUSH H CALL CGET POP D MOV A,L ; if(c=='\r') ANI 7FH ; /* mask parity in compare */ CPI EOL JNZ GETCRET PUSH H ; cget(unit); PUSH D ; /* to skip LF */ CALL CGET POP H POP H GETCRET: RET ; ; cget(unit) ; CGET:: POP D POP H PUSH H PUSH D MOV A,H ORA A ; if(unit < 256) { JNZ CGET1 ; /* assume stdin */ CALL GETCHAR ; getchar(); POP D ;/* return to caller of getc() POP D ; to bypass CR check */ RET ; return; } CGET1: SHLD ZZUNIT LXI D,FLAG ; if(unit[FLAG] & EOF_FL) DAD D MOV A,M ANI EOFFLG JZ GTCIF1 LXI H,-1 ; return(-1); RET GTCIF1: LHLD ZZUNIT ; ip = unit + FCBSIZE; LXI D,FCBSIZE DAD D SHLD ZZIP ; LXI D,UNGOT ;# CHECK FOR UNGOTTEN CHAR. DAD D MOV A,M CPI EOF ;# IS IT EOF ? JZ GTCCON ;# YES-CONTINUE WITH FGETC MOV B,A ;# NO-LET'S GET THE UNGOTTEN MVI A,EOF MOV M,A ;# PUT IN EOF TO MARK IT CLEAR MOV L,B MOV H,0 RET ;# RETURN WITH CHAR IN HL ; GTCCON: LHLD ZZIP LXI D,NEXTP ; cp = ip[NEXTP]; DAD D MOV E,M INX H MOV D,M XCHG SHLD ZZCHP LHLD ZZIP ; if(ip[UNUSED]==0){ LXI D,UNUSED DAD D MOV A,M INX H ORA M JNZ GTCIF2 ; ; Mark beginning of each 128 byte segment of buffer with EOF to ; eliminate possible bogus read ; LHLD ZZUNIT LXI D,FCBSIZE + 4 ; UNIT + FCBSIZE DAD D LXI D,128 MVI B,8 MVI A,1AH SETEOF: MOV M,A DAD D DCR B JNZ SETEOF ; LXI H,READ ;if(cpmio(READ,unit)~=0) PUSH H LHLD ZZUNIT PUSH H CALL CPMIO POP D POP D MOV A,H ORA L JZ GTCIF3 LDA ZZMXSC ;# IS THIS THE FIRST READ CPI 8 ;# JNZ GTCIF3 ;#NO,THERE'S CHARS IN THAT BUF. ;# YES, GETOUTAHERE LXI H,-1 ; return(-1); RET GTCIF3: LHLD ZZIP ;else { ip[UNUSED] = BUFSIZ; LXI D,UNUSED DAD D LXI D,BUFSIZ MOV M,E INX H MOV M,D LHLD ZZIP ; cp = &ip[BUFFER]; LXI D,BUFFER DAD D SHLD ZZCHP ; } ;} GTCIF2: LHLD ZZIP ; ip[UNUSED]--; LXI D,UNUSED DAD D MOV E,M INX H MOV D,M DCX D MOV M,D DCX H MOV M,E LHLD ZZCHP ; ip[NEXTP] = cp+1; INX H XCHG LHLD ZZIP LXI B,NEXTP DAD B MOV M,E INX H MOV M,D LHLD ZZCHP ; if(*cp==CTRL_Z){ MOV A,M ANI 7FH ; /* mask parity */ CPI CTRLZ JNZ GTCIF4 LHLD ZZUNIT ;unit[FLAG] |= EOF_FL; LXI D,FLAG DAD D MOV A,M ORI EOFFLG MOV M,A LXI H,-1 ; return(-1); RET ; } GTCIF4: MOV A,M MOV L,A ; return(*cp & 0377); MVI H,0 RET END  ; ; fgets(cp,len,unit) ; ; CBDOS EQU 5 ;/* bdos entry point */ CPMARG EQU 128 ;/* CP/M command line */ MAXARG EQU 32 ;/* Maximum number of input args */ STDIN EQU 0 STDOUT EQU 1 STDERR EQU 2 STDLST EQU 4 CTRLZ EQU 26 ;control z NULL EQU 0 ;pointer to nothing FCBSIZE EQU 36 ;size, in bytes, of an FCB NEXTP EQU 0 ;offset to next-character pointer in I/O structure UNUSED EQU 2 ;offset to unused-positions-count in I/O structure BUFFER EQU 6 ;offset to disk sector buffer in I/O structure UNGOT EQU 5 ;offset to char ungotten by ungetc() FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available for the taking EOFFLG EQU 2 ;The end of this file has been hit WRTFLG EQU 1 ;This file open for writing BUFSIZ EQU 1024 ;how long the sector buffer is NBUFS EQU 8 ;number of I/O buffers TBUFF EQU 128 ;default cpm buffer LF EQU 10 EOL EQU 13 ; ; CP/M BDOS CALLS ; CLOSE EQU 16 ;close a file CPMSTR EQU 9 ;print '$' delimited string on console CREATE EQU 22 ;make a file DMA EQU 26 ;set DMA (I/O address) DELETE EQU 19 ;delete a file GETCH EQU 1 ;read character from console GETSTR EQU 10 ;read string from console LSTOUT EQU 5 ;write character to list device OPEN EQU 15 ;open a file PUTCH EQU 2 ;write character to console QUERY EQU 25 ;get logged-in drive id READ EQU 20 ;read a sector SELECT EQU 14 ;log-in a drive WRITE EQU 21 ;write a sector ; ; File i/o storage varibles found in ulink() ; EXTRN ZZUNIT EXTRN ZZIP EXTRN ZZCHP EXTRN ZZDP EXTRN ZZFILE EXTRN ZZMODE EXTRN ZZCH EXTRN ZZT EXTRN ZZFN EXTRN ZZNUBU EXTRN ZZMXSC ; ; Characteristics variable storage found in ulink() ; EXTRN ZZSVCH EXTRN ZZDFLT EXTRN ZZSTAK EXTRN ZZMEM ; EXTRN GETC EXTRN GETS ; FGETS:: INX SP ; skip rtn addr INX SP POP B ; unit POP D ; length POP H ; cp PUSH H PUSH D PUSH B DCX SP DCX SP MOV A,B ; if(unit < 256) { ORA A ; /* assume stdin */ JNZ FGETS1 PUSH H CALL GETS ; gets(cp) POP B ; return (cp); RET ; } else { FGETS1: SHLD ZZSVCH ; save_cp = cp; PUSH D ; keep stack right FGETS2: POP D DCX D ; while (--len) { PUSH D MOV A,D ORA E JZ FGETS4 PUSH H ; save cp PUSH B ; unit CALL GETC ; c = getc(unit); POP B MOV A,H ; if(c==EOF) /* c>255 */ ORA A JZ FGETS3 POP D ; cp LHLD ZZSVCH ; if (cp<>save_cp) XCHG ; /* read something */ MOV A,H CMP D JNZ FGETS4 ; goto fgets4; MOV A,L CMP E JNZ FGETS4 ; else LXI H,0 ; /* no characters */ POP D ; fix stack RET ; return (NULL); FGETS3: MOV A,L ; else { POP H MOV M,A ; *cp++ = c; INX H ANI 7FH ; /* mask parity in compare */ CPI LF ; if(c=='\n') JNZ FGETS2 FGETS4: MVI M,0 ; *cp='\0'; POP D ; fix stack LHLD ZZSVCH ; return save_cp; RET ; } } } } END FGETS ; filelib.mac ; ; Small-C File Library Version 1.0 ; ; by ; ; Fred A. Scacchitti ; 25 Glenview Lane ; Roch., NY 14609 ; ; 11 - 24 - 84 ; ; This module is a derivative of RUNTIME.MAC by Glen Fisher ; and Bill Randle. It contains the constructs necessary for ; handling file i/o for C programs compiled by Version 2.08 ; (and later) of the Small-C compiler. ; ; This module contains the following routines: ; ; fopen(name,mode) ; ; fclose(name) ; ; fcb() ; ; fcbpad() ; ; fcbsize() ; ; ; Now then here's the file i/o code ; CBDOS EQU 5 ;/* bdos entry point */ CPMARG EQU 128 ;/* CP/M command line */ MAXARG EQU 32 ;/* Maximum number of input args */ STDIN EQU 0 STDOUT EQU 1 STDERR EQU 2 STDLST EQU 4 CTRLZ EQU 26 ;control z NULL EQU 0 ;pointer to nothing FCBSIZE EQU 36 ;size, in bytes, of an FCB NEXTP EQU 0 ;offset to next-char. pointer in I/O struct. UNUSED EQU 2 ;offset to unused-pos.-count in I/O struct. BUFFER EQU 6 ;offset to disk sector buf. in I/O struct. UNGOT EQU 5 ;offset to char ungotten by ungetc() FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available EOF EQU 0FFH EOFFLG EQU 2 ;The end of this file has been hit WRTFLG EQU 1 ;This file open for writing BUFSIZ EQU 1024 ;how long the sector buffer is NBUFS EQU 8 ;number of I/O buffers TBUFF EQU 128 ;default cpm buffer LF EQU 10 EOL EQU 13 ; ; CP/M BDOS CALLS ; CLOSE EQU 16 ;close a file CPMSTR EQU 9 ;print '$' delimited string on console CREATE EQU 22 ;make a file DMA EQU 26 ;set DMA (I/O address) DELETE EQU 19 ;delete a file GETCH EQU 1 ;read character from console GETSTR EQU 10 ;read string from console LSTOUT EQU 5 ;write character to list device OPEN EQU 15 ;open a file PUTCH EQU 2 ;write character to console QUERY EQU 25 ;get logged-in drive id READ EQU 20 ;read a sector SELECT EQU 14 ;log-in a drive WRITE EQU 21 ;write a sector ; ; ; File i/o storage varibles found in ZZFIO.MAC ; ; EXTRN ZZUNIT EXTRN ZZIP EXTRN ZZCHP EXTRN ZZDP EXTRN ZZFILE EXTRN ZZMODE EXTRN ZZCH EXTRN ZZT EXTRN ZZFN EXTRN ZZNUBU EXTRN ZZMXSC EXTRN ZZSVCH ; ; ; ; Characteristics variable storage found in ulink() ; ; EXTRN ZZDFLT EXTRN ZZSTAK EXTRN ZZMEM EXTRN ZZTEMP ; ; Start of file buffers found at end of program ; EXTRN GRABIO EXTRN FREEIO EXTRN CPMIO EXTRN CPMDISK ; ; Required to set buffer in append mode ; EXTRN PUTC ; ; Default disk I/O buffer ; EXTRN ZZBUF ; ; Storage variables used by append mode ; CURREC: DB 0 CUREXT: DB 0 OLDREC: DB 0 OLDEXT: DB 0 ; ; fopen(name,mode) ; FOPEN:: ; POP B ;get args POP H ;mode SHLD ZZMODE POP D XCHG SHLD ZZFILE PUSH H PUSH D PUSH B CALL GRABIO ; unit = grabio(); SHLD ZZUNIT MOV A,H ; if(unit==NULL) ORA L ; return(NULL); RZ LXI D,FCBSIZE ; ZZIP = unit+FCBSIZE; DAD D SHLD ZZIP ; LXI D,UNGOT ;# OFFSET TO UNGOTTEN CHAR DAD D MVI M,0FFH ;# EOF TO AVOID EXTRA CHAR ; DCX H ;# POINT TO ERROR BYTE MVI M,0 ;# CLEAR IT ; LHLD ZZIP ;ZZIP[NEXTP]=&ZZIP[BUFFER]; LXI D,BUFFER DAD D XCHG LHLD ZZIP LXI B,NEXTP DAD B MOV M,E INX H MOV M,D LHLD ZZUNIT ; fcb(unit,name); PUSH H LHLD ZZFILE PUSH H CALL FCB POP H POP H LHLD ZZUNIT ; cpmdisk(*unit); MOV L,M MVI H,0 PUSH H CALL CPMDISK POP H LHLD ZZMODE ;if(*mode=='R'||*mode=='A'){ MOV A,M ; ANI 5FH ;# CONVERT TO UPPERCASE CPI 'R' ;# MODE = R ? JNZ FOPIF1 ; FOPIF0: MVI C,OPEN ; if(cpm(OPEN,unit)<0){ LHLD ZZUNIT XCHG CALL CBDOS ; (mod to€cbdos (fas)) ORA A JP FOPIF2 LHLD ZZUNIT ; freeio(unit); PUSH H CALL FREEIO POP H LXI H,NULL ; return(NULL); RET ; } FOPIF2: LHLD ZZIP ; ZZIP[UNUSED] = 0; LXI D,UNUSED DAD D LXI D,0 MOV M,E INX H MOV M,D ; } JMP FOPIFX FOPIF1: ; else if(*mode=='W'){ LHLD ZZMODE MOV A,M ANI 5FH CPI 'W' ;# WRITE MODE ? JZ FOPIFA ;# YES - GO DO IT CPI 'A' ;# APPEND MODE ? JNZ FOPIF5 ;# NO - BACK TO CALLER OF FOPEN ; ;# NO MODES LEFT TO TRY ; MVI C,OPEN ;# FIRST LET'S SEE IF IT'S THERE LHLD ZZUNIT XCHG CALL CBDOS ORA A JP FOPIF3 ;# YES - SET IT UP FOR USE ; ;# NO - LET'S MAKE ONE LHLD ZZMODE ;# SET MODE TO 'W' ON NEW FILE MVI M,'W' ;# TO AVOID WASTING TIME AND CODE ;# SEARCHING AN EMPTY FILE ; FOPIFA: MVI C,DELETE ; cpm(DELETE,unit); LHLD ZZUNIT XCHG CALL CBDOS ; (mod to cbdos(fas)) MVI C,CREATE ; if(cpm(CREATE,unit)<0){ LHLD ZZUNIT XCHG CALL CBDOS ; (mod to cbdos(fas)) ORA A JP FOPIF3 LHLD ZZUNIT ; freeio(unit); PUSH H CALL FREEIO POP H LXI H,NULL ; return(NULL); RET ; } FOPIF3: LHLD ZZIP ; ZZIP[UNUSED] = BUFSIZ; LXI D,UNUSED DAD D LXI D,BUFSIZ MOV M,E INX H MOV M,D LHLD ZZUNIT ; unit[FLAG] = WRITE_FL; LXI D,FLAG DAD D MVI A,WRTFLG ORA M MOV M,A JMP FOPIF4 ; } FOPIF5: LHLD ZZUNIT ; else{ freeio(unit); PUSH H CALL FREEIO POP H LXI H,NULL ; return(NULL); RET ; ; } FOPIF4: ; LHLD ZZMODE ;# MOV A,M ;# GET MODE ANI 5FH CPI 'A' ;# APPEND MODE ? JNZ FOPIFX ;# NO - RETURN NORMALLY ; AMSCRD: ; LDA CUREXT ;# SAVE EXTENT AND RECORD NUMBERS STA OLDEXT ;# TWO DEEP LDA CURREC STA OLDREC LHLD ZZUNIT LXI D,12 DAD D MOV A,M ;# GET CURRENT EXTENT # STA CUREXT LXI D,20 DAD D MOV A,M ;# GET CURRENT RECORD # STA CURREC ; LHLD ZZUNIT ;# YES - LET'S READ TO THE END XCHG ;# DE --> FCB MVI C,READ CALL CBDOS ;# READ A SECTOR ORA A JZ AMSCRD ;# READ TO PHYSICAL END OF FILE ; LHLD ZZUNIT LXI D,12 DAD D LDA OLDEXT MOV M,A ;# RESTORE LAST EXTENT # LXI D,20 DAD D LDA OLDREC MOV M,A ;# RESTORE LAST RECORD # ; LXI H,ZZBUF SHLD ZZTEMP ;# SAVE THE BUFF. WE'RE READING FROM AMCHRD: LHLD ZZTEMP ;# HL --> TEMPORARY BUFFER MOV A,M ; CPI 0AH ;# LINE FEED CHECK JNZ NOTLF INX H ;# INCREMENT POINTER SHLD ZZTEMP ;# AND GO ON TO NEXT CHARACTER JMP AMCHRD ; NOTLF: CPI 1AH ;# END OF FILE MARKER ? JZ FOPIFX ;# YES - EXIT GRACEFULLY MOV C,A MVI B,0 ;# BC CONTAINS THE CHARACTER INX H SHLD ZZTEMP ;# SAVE UPDATED POINTER MOV A,L ORA A ;# END OF BUFFER ? JZ FOPIFX ;# YES - EXIT JUST AS GRACEFUL LHLD ZZUNIT PUSH B PUSH H CALL PUTC ;# PUTC(CHAR,ZZUNIT) POP B POP B JMP AMCHRD ;# CONTINUE SCANNING ; FOPIFX: LHLD ZZUNIT ; return(unit); RET ; FCLOSE:: POP B POP H SHLD ZZUNIT PUSH H PUSH B MOV A,H ; if (unit<256) ORA A ; /* assume stdin, stdout, etc. */ MVI L,0 RZ ; return NULL; LXI H,1 ; t = 1; SHLD ZZT LHLD ZZUNIT ; if(unit[FLAG] & WRITE_FL){ LXI D,FLAG DAD D MOV A,M ANI WRTFLG JZ FCLIF1 LXI H,CTRLZ ; putc(CTRL_Z,unit); PUSH H LHLD ZZUNIT PUSH H CALL PUTC POP H POP H LHLD ZZUNIT ; ZZIP = unit + FCBSIZE; LXI D,FCBSIZE DAD D SHLD ZZIP LHLD ZZIP ; cp = ZZIP[NEXTP]; LXI D,NEXTP DAD D MOV E,M INX H MOV D,M XCHG SHLD ZZCHP LHLD ZZIP ; ZZDP = &ZZIP[BUFFER]+BUFSIZ; LXI D,BUFFER+BUFSIZ DAD D SHLD ZZDP FCLWH1: ; while(cp'a'-'A') /* lower case? */ JC FCBIF2 SUI 61H-41H ; A -= 'a'-'A' JMP FCBIF2 ; } FCBIF1: LDA ZZDFLT ; else A = default_drive; FCBIF2: STAX B ; *fp++ = A; INX B MVI H,' ' ; fp = fcbfill(fp,name,' ',8); MVI L,8 CALL FCBFILL MVI L,3 ; fp = fcbfill(fp,name,' ',3); CALL FCBFILL MVI H,0 ; fp = fcbpad(fp,0,4); MVI L,4 CALL FCBPAD LXI H,16 ; fp[16] = 0; DAD B MVI M,0 RET ; return; ; ; fcbfill(dest,name,pad,size) ; B D H L ; FCBFILL:: MOV A,L ; while(L>0 && (A= *D)~='.' && A~=0){ ORA A JZ FILL2 LDAX D CPI '.' JZ FILL2 CPI 0 JZ FILL2 CPI 61H ; if(A>='a' && A<='z') JC FILL1 CPI 7AH+1 ; 'z' 9 Jun 80 rj JNC FILL1 SUI 61H-41H ; A = A - 'a' + 'A'; FILL1: STAX B ; *B++ = A; INX B INX D ; D++; DCR L ; L--; JMP FCBFILL ; } FILL2: LDAX D ; while(*D~='.' && *D~=0) CPI '.' JZ FILL3 CPI 0 JZ FILL3 INX D ; D++; JMP FILL2 FILL3: CPI '.' ; if(*D=='.') JNZ FILL4 INX D ; D++; FILL4: ; fall into... ; ; fcbpad(dest,pad,size) ; B H L ; FCBPAD:: MOV A,L ; while(L>0){ ORA A JZ PAD2 MOV A,H ; *B++ = H; STAX B INX B DCR L ; L--; JMP FCBPAD ; } PAD2: RET ; return; ; ; END #define NOCCARGC /* ** Yes, that is correct. Although these functions use an ** argument count, they do not call functions which need one. */ #include stdio.h /* ** fprintf(fd, ctlstring, arg, arg, ...) - Formatted print. ** Operates as described by Kernighan & Ritchie. ** b, c, d, o, s, u, and x specifications are supported. ** Note: b (binary) is a non-standard extension. */ fprintf(argc) int argc; { int *nxtarg; nxtarg = CCARGC() + &argc; return(Uprint(*(--nxtarg), --nxtarg)); } /* ** printf(ctlstring, arg, arg, ...) - Formatted print. ** Operates as described by Kernighan & Ritchie. ** b, c, d, o, s, u, and x specifications are supported. ** Note: b (binary) is a non-standard extension. */ printf(argc) int argc; { return(Uprint(stdout, CCARGC() + &argc - 1)); } /* ** Uprint(fd, ctlstring, arg, arg, ...) ** Called by fprintf() and printf(). */ Uprint(fd, nxtarg) int fd, *nxtarg; { int arg, left, pad, cc, len, maxchr, width; char *ctl, *sptr, str[17]; cc = 0; ctl = *nxtarg--; while(*ctl) { if(*ctl!='%') {fputc(*ctl++, fd); ++cc; continue;} else ++ctl; if(*ctl=='%') {fputc(*ctl++, fd); ++cc; continue;} if(*ctl=='-') {left = 1; ++ctl;} else left = 0; if(*ctl=='0') pad = '0'; else pad = ' '; if(isdigit(*ctl)) { width = atoi(ctl++); while(isdigit(*ctl)) ++ctl; } else width = 0; if(*ctl=='.') { maxchr = atoi(++ctl); while(isdigit(*ctl)) ++ctl; } else maxchr = 0; arg = *nxtarg--; sptr = str; switch(*ctl++) { case 'c': str[0] = arg; str[1] = NULL; break; case 's': sptr = arg; break; case 'd': itoa(arg,str); break; case 'b': itoab(arg,str,2); break; case 'o': itoab(arg,str,8); break; case 'u': itoab(arg,str,10); break; case 'x': itoab(arg,str,16); break; default: return (cc); } len = strlen(sptr); if(maxchr && maxchrlen) width = width - len; else width = 0; if(!left) while(width--) {fputc(pad,fd); ++cc;} while(len--) {fputc(*sptr++,fd); ++cc; } if(left) while(width--) {fputc(pad,fd); ++cc;} } return(cc); }  ; ; putc(c,unit) ; ; CBDOS EQU 5 ;/* bdos entry point */ CPMARG EQU 128 ;/* CP/M command line */ MAXARG EQU 32 ;/* Maximum number of input args */ STDIN EQU 0 STDOUT EQU 1 STDERR EQU 2 STDLST EQU 4 CTRLZ EQU 26 ;control z NULL EQU 0 ;pointer to nothing FCBSIZE EQU 36 ;size, in bytes, of an FCB NEXTP EQU 0 ;offset to next-character pointer in I/O structure UNUSED EQU 2 ;offset to unused-positions-count in I/O structure BUFFER EQU 6 ;offset to disk sector buffer in I/O structure UNGOT EQU 5 ;offset to char ungotten by ungetc() FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available for the taking EOFFLG EQU 2 ;The end of this file has been hit WRTFLG EQU 1 ;This file open for writing BUFSIZ EQU 1024 ;how long the sector buffer is NBUFS EQU 8 ;number of I/O buffers TBUFF EQU 128 ;default cpm buffer LF EQU 10 EOL EQU 13 ; ; CP/M BDOS CALLS ; CLOSE EQU 16 ;close a file CPMSTR EQU 9 ;print '$' delimited string on console CREATE EQU 22 ;make a file DMA EQU 26 ;set DMA (I/O address) DELETE EQU 19 ;delete a file GETCH EQU 1 ;read character from console GETSTR EQU 10 ;read string from console LSTOUT EQU 5 ;write character to list device OPEN EQU 15 ;open a file PUTCH EQU 2 ;write character to console QUERY EQU 25 ;get logged-in drive id READ EQU 20 ;read a sector SELECT EQU 14 ;log-in a drive WRITE EQU 21 ;write a sector ; ; File i/o storage varibles found in ulink() ; EXTRN ZZUNIT EXTRN ZZIP EXTRN ZZCHP EXTRN ZZDP EXTRN ZZFILE EXTRN ZZMODE EXTRN ZZCH EXTRN ZZT EXTRN ZZFN EXTRN ZZNUBU EXTRN ZZMXSC ; ; Characteristics variable storage found in ulink() ; EXTRN ZZSVCH EXTRN ZZDFLT EXTRN ZZSTAK EXTRN ZZMEM ; EXTRN PUTCHAR EXTRN PUTLIST EXTRN CPMIO ; FPUTC:: PUTC:: POP B ;rtn addr POP D ;unit POP H ;c PUSH H PUSH D PUSH B MOV A,D ORA A ; if(unit < 256) { JNZ PUTC4 ; /* assume stdout, stderr */ MOV A,E ; /* or stdlist. */ CPI STDOUT ; if(unit == stdout) { JNZ PUTC1 PUSH H CALL PUTCHAR ; putchar(c); POP H RET ; return;} PUTC1: CPI STDERR ; elseif(unit == stderr) { JNZ PUTC2 CALL PUTCHAR ; putchar(c); RET ; return;} PUTC2: CPI STDLST ; elseif(unit == stdlist) { JNZ PUTC3 PUSH H CALL PUTLIST ; putlist(c); POP H RET ; return;} PUTC3: JMP PTCER1 ; else goto putcerr; } PUTC4: PUSH H ; if(cput(c,unit)<0) PUSH D ; goto putcerr; CALL CPUT POP D MOV A,H ORA A JM PUTCERR MOV A,L ; if(c=='\r') CPI EOL JNZ PUTCRET LXI H,LF ; cput('\n',unit); PUSH H PUSH D CALL CPUT POP D POP D MOV A,H ORA A JM PUTCERR PUTCRET: POP H ; return(c); RET PUTCERR: ;putcerr: POP B ; return(-1); PTCER1: LXI H,-1 RET ; ; cput(c,unit) ; CPUT:: POP B POP D POP H PUSH H PUSH D PUSH B SHLD ZZCH XCHG SHLD ZZUNIT LXI D,FCBSIZE ; ip = unit + FCBSIZE; DAD D SHLD ZZIP LXI D,NEXTP ; cp = ip[NEXTP]; DAD D MOV E,M INX H MOV D,M XCHG SHLD ZZCHP LHLD ZZIP ; if(ip[UNUSED]==0){ LXI D,UNUSED DAD D MOV A,M INX H ORA M JNZ PTCIF1 LXI H,WRITE ; if(cpmio(WRITE,unit)~=0) PUSH H LHLD ZZUNIT PUSH H CALL CPMIO POP D POP D MOV A,H ORA L JZ PTCIF2 LXI H,-1 ; return(-1); RET PTCIF2: LHLD ZZIP ; else { ip[UNUSED] = BUFSIZ; LXI D,UNUSED DAD D LXI D,BUFSIZ MOV M,E INX H MOV M,D LHLD ZZIP ; cp = &ip[BUFFER]; LXI D,BUFFER DAD D SHLD ZZCHP ; } ; } PTCIF1: LHLD ZZIP LXI D,UNUSED ; ip[UNUSED]--; DAD D MOV E,M INX H MOV D,M DCX D MOV M,D DCX H MOV M,E LHLD ZZCHP ; ip[NEXTP] = cp+1; INX H XCHG LHLD ZZIP LXI B,NEXTP DAD B MOV M,E INX H MOV M,D LDA ZZCH ; return((*cp = c) & 0377); LHLD ZZCHP MOV M,A MVI H,0 MOV L,A RET END  ; ; fputs(cp,unit) ; ; CBDOS EQU 5 ;/* bdos entry point */ CPMARG EQU 128 ;/* CP/M command line */ MAXARG EQU 32 ;/* Maximum number of input args */ STDIN EQU 0 STDOUT EQU 1 STDERR EQU 2 STDLST EQU 4 CTRLZ EQU 26 ;control z NULL EQU 0 ;pointer to nothing FCBSIZE EQU 36 ;size, in bytes, of an FCB NEXTP EQU 0 ;offset to next-character pointer in I/O structure UNUSED EQU 2 ;offset to unused-positions-count in I/O structure BUFFER EQU 6 ;offset to disk sector buffer in I/O structure UNGOT EQU 5 ;offset to char ungotten by ungetc() FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available for the taking EOFFLG EQU 2 ;The end of this file has been hit WRTFLG EQU 1 ;This file open for writing BUFSIZ EQU 1024 ;how long the sector buffer is NBUFS EQU 8 ;number of I/O buffers TBUFF EQU 128 ;default cpm buffer LF EQU 10 EOL EQU 13 ; ; CP/M BDOS CALLS ; CLOSE EQU 16 ;close a file CPMSTR EQU 9 ;print '$' delimited string on console CREATE EQU 22 ;make a file DMA EQU 26 ;set DMA (I/O address) DELETE EQU 19 ;delete a file GETCH EQU 1 ;read character from console GETSTR EQU 10 ;read string from console LSTOUT EQU 5 ;write character to list device OPEN EQU 15 ;open a file PUTCH EQU 2 ;write character to console QUERY EQU 25 ;get logged-in drive id READ EQU 20 ;read a sector SELECT EQU 14 ;log-in a drive WRITE EQU 21 ;write a sector ; ; File i/o storage varibles found in ulink() ; EXTRN ZZUNIT EXTRN ZZIP EXTRN ZZCHP EXTRN ZZDP EXTRN ZZFILE EXTRN ZZMODE EXTRN ZZCH EXTRN ZZT EXTRN ZZFN EXTRN ZZNUBU EXTRN ZZMXSC ; ; Characteristics variable storage found in ulink() ; EXTRN ZZSVCH EXTRN ZZDFLT EXTRN ZZSTAK EXTRN ZZMEM ; EXTRN PUTC ; FPUTS:: POP B POP D ; unit POP H ; cp PUSH H PUSH D PUSH B FPUTS1: MOV A,M ; while((c=*cp++) <> NULL) { INX H ORA A JZ FPUTS3 PUSH H MOV C,A MVI B,0 PUSH B PUSH D CALL PUTC ; if(putc(c,unit)==EOF) POP D POP B MOV A,H ORA A JZ FPUTS2 POP B RET ; return(EOF); FPUTS2: POP H JMP FPUTS1 ; } FPUTS3: LXI H,0 RET ; return(NULL); END FPUTS /* ** fread.c by F.A.Scacchitti 9/3/84 */ fread(buf, sz, n, fd) char *buf; int sz, n, fd; { return(read(fd, buf, n*sz)); }  /* ** frebufc.c by fas 8/30/84 */ #include frebuf(buffer) int buffer; { freeio(buffer-42); return(NULL); } #define NOCCARGC /* no argument count passing */ extern char *zzmem; /* ** free(ptr) - Free previously allocated memory block. ** Memory must be freed in the reverse order from which ** it was allocated. ** ptr = Value returned by calloc() or malloc(). ** Returns ptr if successful or NULL otherwise. */ free(ptr) char *ptr; { return (zzmem = ptr); } #asm cfree equ free entry cfree #endasm ; ; freeio(unit) by F.A.Scacchitti 9/12/84 ; ; mark a buffer as free. ; ; ; NBUFS EQU 8 FCBSIZE EQU 36 ;size, in bytes, of an FCB BUFFER EQU 6 ;offset to disk sector buffer in I/O structure FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available for the taking BUFSIZ EQU 1024 ;how long the sector buffer is NULL EQU 0 ; EXTRN IOBUFS ; ; FREEIO:: ;Mod 6 May 80 rj POP B ;save rtn addr POP H ;get buffer addr PUSH H ;put the stack back together PUSH B LXI D,FLAG ;find flag byte DAD D MVI M,FREEFLG ;mark buffer as 'free' LXI H,NULL ;return something RET END #define NOCCARGC /* no argument count passing */ /* ** Yes, that is correct. Although these functions use an ** argument count, they do not call functions which need one. */ #include stdio.h /* ** fscanf(fd, ctlstring, arg, arg, ...) - Formatted read. ** Operates as described by Kernighan & Ritchie. ** b, c, d, o, s, u, and x specifications are supported. ** Note: b (binary) is a non-standard extension. */ fscanf(argc) int argc; { int *nxtarg; nxtarg = CCARGC() + &argc; return (Uscan(*(--nxtarg), --nxtarg)); } /* ** scanf(ctlstring, arg, arg, ...) - Formatted read. ** Operates as described by Kernighan & Ritchie. ** b, c, d, o, s, u, and x specifications are supported. ** Note: b (binary) is a non-standard extension. */ scanf(argc) int argc; { return (Uscan(stdin, CCARGC() + &argc - 1)); } /* ** Uscan(fd, ctlstring, arg, arg, ...) - Formatted read. ** Called by fscanf() and scanf(). */ Uscan(fd,nxtarg) int fd, *nxtarg; { char *carg, *ctl, *unsigned; int *narg, wast, ac, width, ch, cnv, base, ovfl, sign; ac = 0; ctl = *nxtarg--; while(*ctl) { if(isspace(*ctl)) {++ctl; continue;} if(*ctl++ != '%') continue; if(*ctl == '*') {narg = carg = &wast; ++ctl;} else narg = carg = *nxtarg--; ctl += utoi(ctl, &width); if(!width) width = 32767; if(!(cnv = *ctl++)) break; while(isspace(ch = fgetc(fd))) ; if(ch == EOF) {if(ac) break; else return(EOF);} ungetc(ch,fd); switch(cnv) { case 'c': *carg = fgetc(fd); break; case 's': while(width--) { if((*carg = fgetc(fd)) == EOF) break; if(isspace(*carg)) break; if(carg != &wast) ++carg; } *carg = 0; break; default: switch(cnv) { case 'b': base = 2; sign = 1; ovfl = 32767; break; case 'd': base = 10; sign = 0; ovfl = 3276; break; case 'o': base = 8; sign = 1; ovfl = 8191; break; case 'u': base = 10; sign = 1; ovfl = 6553; break; case 'x': base = 16; sign = 1; ovfl = 4095; break; default: return (ac); } *narg = unsigned = 0; while(width-- && !isspace(ch=fgetc(fd)) && ch!=EOF) { if(!sign) if(ch == '-') {sign = -1; continue;} else sign = 1; if(ch < '0') return (ac); if(ch >= 'a') ch -= 87; else if(ch >= 'A') ch -= 55; else ch -= '0'; if(ch >= base || unsigned > ovfl) return (ac); unsigned = unsigned * base + ch; } *narg = sign * unsigned; } ++ac; } return (ac); } /* ** fwrite.c by F.A.Scacchitti 9/3/84 */ fwrite(buf, sz, n, fd) char *buf; int sz, n, fd; { return(write(fd, buf, n*sz)); } #define NOCCARGC /* no argument count passing */ /* * getchar() Normal console input via BDOS(1) */ #include getchar(){ char c; c = bdos(1,0); if(c == 26) return(-1); else return(c); } /* ** getchx() Direct console input via BDOS(6) */ #include getchx() { char c; while(!(c = bdos(6,255))); return(c); }  ; ; gets(buff) ; ; CBDOS EQU 5 ;/* bdos entry point */ CPMARG EQU 128 ;/* CP/M command line */ MAXARG EQU 32 ;/* Maximum number of input args */ STDIN EQU 0 STDOUT EQU 1 STDERR EQU 2 STDLST EQU 4 CTRLZ EQU 26 ;control z NULL EQU 0 ;pointer to nothing FCBSIZE EQU 36 ;size, in bytes, of an FCB NEXTP EQU 0 ;offset to next-character pointer in I/O structure UNUSED EQU 2 ;offset to unused-positions-count in I/O structure BUFFER EQU 6 ;offset to disk sector buffer in I/O structure UNGOT EQU 5 ;offset to char ungotten by ungetc() FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available for the taking EOFFLG EQU 2 ;The end of this file has been hit WRTFLG EQU 1 ;This file open for writing BUFSIZ EQU 1024 ;how long the sector buffer is NBUFS EQU 8 ;number of I/O buffers TBUFF EQU 128 ;default cpm buffer LF EQU 10 EOL EQU 13 ; ; CP/M BDOS CALLS ; CLOSE EQU 16 ;close a file CPMSTR EQU 9 ;print '$' delimited string on console CREATE EQU 22 ;make a file DMA EQU 26 ;set DMA (I/O address) DELETE EQU 19 ;delete a file GETCH EQU 1 ;read character from console GETSTR EQU 10 ;read string from console LSTOUT EQU 5 ;write character to list device OPEN EQU 15 ;open a file PUTCH EQU 2 ;write character to console QUERY EQU 25 ;get logged-in drive id READ EQU 20 ;read a sector SELECT EQU 14 ;log-in a drive WRITE EQU 21 ;write a sector ; ; File i/o storage varibles found in ulink() ; EXTRN ZZUNIT EXTRN ZZIP EXTRN ZZCHP EXTRN ZZDP EXTRN ZZFILE EXTRN ZZMODE EXTRN ZZCH EXTRN ZZT EXTRN ZZFN EXTRN ZZNUBU EXTRN ZZMXSC ; ; Characteristics variable storage found in ulink() ; EXTRN ZZSVCH EXTRN ZZDFLT EXTRN ZZSTAK EXTRN ZZMEM ; EXTRN GETC ; GETS:: POP B POP H PUSH H PUSH B SHLD ZZCHP DCX H ; save = buff[-1]; save2 = buff[-2]; MOV D,M ; buff[-1] = 0; buff[-2] = 79; MVI M,0 DCX H MOV E,M MVI M,79 ;6 May 80 rj PUSH H PUSH D XCHG ; cpm(GETSTR,buff-2); MVI C,GETSTR CALL CBDOS ; (mod to cbdos(fas)) LHLD ZZCHP ; buff[buff[-1]] = 0; (9 Jun 80. Was cp) DCX H MOV E,M INX H MVI D,0 DAD D MVI M,0 POP D ; buff[-1] = save; buff[-2] = save2; POP H MOV M,E INX H MOV M,D INX H MVI C,PUTCH ; putchar('\n'); MVI E,LF CALL CBDOS ; (mod to cbdos(fas)) LHLD ZZCHP ; return(buff); RET ; } END GETS ; ; grabio() by F.A.Scacchitti 9/18/84 ; ; find an input buffer, and return its address. ; if there isn't one, return a NULL. ; ; NBUFS EQU 8 FCBSIZE EQU 36 ;size, in bytes, of an FCB BUFFER EQU 6 ;offset to disk sector buffer in I/O structure FLAG EQU 33 ;file-type flag byte (in unused part of FCB) FREEFLG EQU 128 ;This I/O structure is available for the taking BUFSIZ EQU 1024 ;how long the sector buffer is NULL EQU 0 TBUFSZ EQU 128 ; Default buffer size ; EXTRN ZZBUF ; GRABIO:: ;6 May 80 rj MVI B,NBUFS LXI H,ZZBUF+TBUFSZ+FLAG LXI D,FCBSIZE+BUFFER+BUFSIZ MVI A,FREEFLG GRAB2: CMP M ;flag byte == freeflg? JZ GRAB3 ;if so, found a free buffer DAD D ;on to next buffer DCR B JNZ GRAB2 ;if there is one... LXI H,NULL ;there ain't RET ;give up ; GRAB3: MVI M,0 ;mark buffer as taken LXI D,-FLAG ;back up to buffer start DAD D RET ;and hand it back ; END  /* ** grabufc.c by fas 8/30/84 */ #include grabuf() { int buf; if((buf = grabio) != NULL) return(buf+42); return(NULL); }  ; inp(port#) ; Added 2/84 (fas) INP:: INX SP ; Skip over return address INX SP POP B ; Load port # into C DB 0EDH, 068H ; Do instruction PUSH B ; Restore stack DCX SP DCX SP MOV A,L ; Data was returned in L RLC ; Sign extend HL SBB A ; MOV H,A ; That's it RET END /* ** return 'true' if c is alphanumeric */ isalnum(c) int c; { return ((c<='z' && c>='a') || (c<='Z' && c>='A') || (c<='9' && c>='0')); } /* ** return 'true' if c is alphabetic */ isalpha(c) int c; { return ((c<='z' && c>='a') || (c<='Z' && c>='A')); } /* ** return 'true' if c is an ASCII character (0-127) */ isascii(c) char *c; { /* c is a simulated unsigned integer */ return (c <= 127); } /* ** Return "true" if fd is a device, else "false" */ #include isatty(fd) int fd; { if(fd >255) return(FALSE); else return(TRUE); } /* ** return 'true' if c is a control character ** (0-31 or 127) */ iscntrl(c) char *c; { /* c is a simulated unsigned integer */ return ((c <= 31) || (c == 127)); } /* ** return 'true' if c is a decimal digit */ isdigit(c) int c; { return (c<='9' && c>='0'); } /* ** return 'true' if c is a graphic character ** (33-126) */ isgraph(c) int c; { return (c>=33 && c<=126); } /* ** return 'true' if c is lower-case alphabetic */ islower(c) int c; { return (c<='z' && c>='a'); } /* ** return 'true' if c is a printable character ** (32-126) */ isprint(c) int c; { return (c>=32 && c<=126); } #define NOCCARGC /* no argument count passing */ /* ** return 'true' if c is a punctuation character ** (all but control and alphanumeric) */ ispunct(c) int c; { return (!isalnum(c) && !iscntrl(c)); } /* ** return 'true' if c is a white-space character */ isspace(c) int c; { /* first check gives quick exit in most cases */ return(c<=' ' && (c==' ' || (c<=13 && c>=9))); } /* ** return 'true' if c is upper-case alphabetic */ isupper(c) int c; { return (c<='Z' && c>='A'); } /* ** return 'true' if c is a hexadecimal digit ** (0-9, A-F, or a-f) */ isxdigit(c) int c; { return ((c<='f' && c>='a') || (c<='F' && c>='A') || (c<='9' && c>='0')); } #define NOCCARGC /* no argument count passing */ /* ** itoa(n,s) - Convert n to characters in s */ itoa(n, s) char *s; int n; { int sign; char *ptr; ptr = s; if ((sign = n) < 0) /* record sign */ n = -n; /* make n positive */ do { /* generate digits in reverse order */ *ptr++ = n % 10 + '0'; /* get next digit */ } while ((n = n / 10) > 0); /* delete it */ if (sign < 0) *ptr++ = '-'; *ptr = '\0'; reverse(s); } #define NOCCARGC /* no argument count passing */ /* ** itoab(n,s,b) - Convert "unsigned" n to characters in s using base b. ** NOTE: This is a non-standard function. */ itoab(n, s, b) int n; char *s; int b; { char *ptr; int lowbit; ptr = s; b >>= 1; do { lowbit = n & 1; n = (n >> 1) & 32767; *ptr = ((n % b) << 1) + lowbit; if(*ptr < 10) *ptr += '0'; else *ptr += 55; ++ptr; } while(n /= b); *ptr = 0; reverse (s); } vþUW.C [04/07/91]% €‹Å@�h(T*Nâã$F4› ¢¼ày „R¸ „i7 D‘¼Îr0›A&(Ñ\AÌfŒÐi: "ä^2‹ÇH<&�•ÎS£¡”Ü ‘ fÓ °Ø-!ˆ ÆS‘ÌÒo¨Œ…ÃÈ€Þr 4ó•&“‹œ &S˜€ÍŠ™¤æÛÅè@t7ßâ—ITÜ-;ÚL‡3¡†¾ 0ÝçB9¾íGÁàâ9ŒØu2EG˜ã%„\hgB=äÝ!HÅ2IhŠ  G#-eZD(ÈÌbÎÚI":dŽ\Ag0Îv-—GbÞ³•xÓ›¹æc!¼êt‚`˜H­H_ƒœMÛ`€àoåW®â¬Ø+²içš¹æ?Üñ ïZÔ$Cê3m`@HièzPAÃt3‚¬¬ ã@Ú6ÍÀS  ð¨Ò38NhÆ0€f’:àP8<#˜P ƒpÍ£˜Â3Œ¡Òñ4¯ä1¯kÐ|�ˆîóI�à†)ÑÐE àHÊ<'AD³ A£ìMÅ@Pï*p€ÌŒ*S¢-†"èXRÂHÂpª& ‘ŒÈF£¤o�Ì@Â1"Œ 6ª)óÒ¼ÁÒä½JLS$Íûà /lÞéS˜D;ÎðÔõ>OεAP‘ÕD¢¬@1ŽC*ÚŠ¼¥ ¼¢”�Ý,Bt­.:Kö54ScºrŠLïðëT5ÐÂ2SÉYAcfÚ¶â(S „“MæCI˜Òe2 ÑáNHl6 HbJ@…ÄqLÆa1˜Í3¡¦aGŽEã)Hài0±L�%C)àè ’˜M‡“™¤æ :ÕÍ‘3ȸ@G4�¢Ö¡Ôçi7™„[DðÒl2œäð±Â$n:ë&ûžÞt¶ ÇSiˆËÁˆ*†•J*rÆñã%ÆK;º›±bL\ËR4b1U�ŽÚ/l6o6§CyœÊt4ho"¾¸æ"“òÎFY>˜Ê ·›NÑ�Ëu6ÄçUšQˆÙ%5êóF+ŒûhwÙâÅÖ8�4Âx4›sÙÌó@Ñ0�hä×­CsdÛ¶®À@ܪ‰@d†ÁºN12îS²ÒŽJÈÆË2M²â; #�è:¸HÐê7‡õÓó» Îõü¼ÓhàÒ‚iNýÀ?¶,¾"clu�²ÎÙ_«~e«©Æ³6LÙ £~glþ)40� d41lå·¸PÍYÇ­?Dp@Ÿkï~0%[EæRj�-ŒïÁÍ2(Û �Z°tÑ'Æ�J¢°hqZ>U• 45�qa.$Ì�Cz»{�ŕÕê„€ ’