4IBM ?@ >> FastCopy III << by Martin Backschat, Bergstr.16, 8071 Hepberg, West-Germany, Tel. 08456/5495 -- It's Freeware! -- (Greetings to all 'Masters Of Puppets')O` @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmo/s@uw{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(O(b((((()")B)b)))))*"*B*b*****+"+O+b+++++,",B,b,ǂ,ɢ,,,-"-B-b-ׂ-٢---.".B.o..../"/B/b///0/0c00000O` @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmo/s@uw{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(O(b((((()")B)b)))))*"*B*b*****+"+O+b+++++,",B,b,ǂ,ɢ,,,-"-B-b-ׂ-٢---.".B.o..../"/B/b///0/0c00000STF_35_2 zmASSEMBLE mGFABASIC mxRAYTRACE ˊm. m.. ATARI IS gX^"GFA-ASM CFG ]X GFA-ASM INF dXGFA-ASM MON tXGFA-ASM PRG mRxSYS_VARSIS lXqJTMAUS IS oXvHS-ASS.IS1Macro calls for the operating system functions(GEMDOS, BIOS, XBIOS)*This file is part of the GFA Assembler.$(c) November 1988 Peter Holzwarth Trap-Definitions# gemdofunctiole GEMDOS-TrapE  Function numberu  execute trap/ ; pass Parameter 2 ?' ; yes-  Clear up stack with few parameters/A Clear up stack with many parameters ; no    biofunctiole BIOS-TrapE  Function numberu  Execute trap -  Clear up stack with few parameters/A Clear up stack with many parameters ! xbiofunctiole XBIOS-TrapE  Function numberu  Execute trap -  Clear up stack with few parameters/A Clear up stack with many parameters    GEMDOS-Functions# Ptersta Functions $0 to $4cEgemdo L gemdo [ Cconigemdo   CconouchaEgemdo   Cauxigemdo   CauxouchaEgemdo    CprnouchaEgemdo    CrawiparEgemdo   Crawcigemdo  Cnecigemdo   CconwaddEgemdo    CconraddEgemdo   Cconigemdo    Dsetdrdri $e, DsetdrvEgemdo   Cconogemdo  Cprnogemdo  Cauxigemdo  Cauxogemdo  Dgetdrgemdo   FsetdtaddEgemdo   SupestcEgemdo   Tgetdatgemdo *  Tsetdatdat Edatgemdo +  Tgettimgemdo ,  Tsettimtim Etimgemdo -  Fgetdtgemdo / Sversiogemdo 0  PtermrekeeexiEEgemdo 1   DfreinfdriEEgemdo 6   DcreatpatEgemdo 9   DdeletpatEgemdo :   DsetpatpatEgemdo ;   FcreatpatattEEgemdo < w  FopepatattEEgemdo = w  FcloshndEgemdo > w  FreahndbytbufEEEgemdo ?  w  FwrithndbytbufEEEgemdo @  w  Fdeletpat Epatgemdo A w  FseenbyhndfmoEEEgemdo B    FattripatwriattEEEgemdo C   FdushnEgemdo E   FforcnhnshnEEgemdo F   dgetpatpatdriEEgemdo G   MallonbyEgemdo H  MfrefraEgemdo I   MshrinmmermeEE"gemdo J    PexemodpatpcmpenEEEEgemdo K   FsfirspatsatEEgemdo N  Fsnexgemdo O  FrenampthpthEE"gemdo V    FdatimbufhndinfEEEgemdo W    BIOS-Functions GetmbpmbEbio    BconstadeEbio   BconideEbio    BconoudechaEEbio    RwabrwfbusecrecdriEEEEEbio    SetexvecveEEbio   Tickcabio    GetbpdriEbio    BcostadeEbio    MediacdriEbio   Drvmabio    KbshifmodEbio    XBIOS-Functions InitmoutypparvecEEExbio    Physbasxbio  Logbasxbio  Getrexbio   SetscreelloploreEEExbio     SetpallettpalExbio    SetcolocolcolEExbio   " FloprbufdevststrksidsecEEEEE"Exbio   " FlopwbufdevststrksidsecEEEEE"Exbio   + FlopfmbufdevspttrksidintmagfcoEEEEEEE"Exbio    MidiwcnptEExbio    MfpinintvecEExbio   IoredevExbio    RsconbauflousrstsscEEEEEExbio    KeytbunsshfcapEEExbio   Randoxbio   ProtobbufserdskexfEEEExbio   # FlopvebufdevststrksidsecEEEEE"Exbio   Scrdmxbio   CursconattratEExbio    SettimdatExbio   Gettimxbio  Bioskeyxbio   IkbdwncpntEExbio    JdisinintExbio    JenabinregExbio    GiaccesdatregEExbio    OffgibibitExbio    OngibibitExbio    XbtimetimcntdatveEEEExbio     DosounptExbio    SetprconExbio !  Kbdvbasxbio "  KbratinirepEExbio #  prtblptExbio $  Vsynxbio %  SupexecodExbio &  Puntaexbio '  BlitmodflaExbio @  4 Auxiliary macros for simple, frequent situations$ setmestacmor Reserve memorystac [Stack = new USP](F [more = memory to be reserved%Fstac in addition]FFE   &F Start address of free memoryE rememberMshrinF and return at a1  prinstrin output string Call format: print 'String' or print #Address1 ; String direct7place all strings resulting from print callsL ;in memory one after the other%AB put string in memory F  Cconw) ; String address Cconw  writstrindesti1 ; String direct, put all strings from write callsO ; into memory one after the other'AB put string into memoryE A  E@F$ ; Adressing E@ 0 commanbuffe put command line for program$A star into a buffer"Abuffe and finish with 0EB q  EB5"B3o buffe Length of command strings after d0E q  GFA-CFG:Star NL-10 H -- !@"L .@@.L  L 8(D(L (D(8L L L L  @ L $BJ$ L <}}< L p0 L  L pP L  L  L ||L L `L lL L ` L l L ~L llL `lL #R#$R$@R@[R[\R\]R]^R^`R`{R{|R|}R}~R~L  "@" R~a~o~R\R|L " L |L  D L FD TL \@"@R~'L @@L pL ||L ||L ``@`L ""! L |~L fff64bffL ffffff~~L `ffh~~L `````~~``L nn`````~~L `~~L @@@^n@L ~~`````~~L ~~~L `````xxL fffff~<L ``fnxpL ^~ @@fnL ff~~L |~bbbbb~|L ~~~~L vvVVVV~~L bbb2r`L @@__@~~L ```````~>L ~~vv~~L ~~@@@~~L ``L `````L @@~~~~L pPPPPL `pR@L  L **TL ((L PPL 588014*?wP`GFA-MON.TABA; file GFA-ASM.MON ; a macro file for GFA Assembler*; created by Andy Quayle GFA User Magazine/; to use this file either rename it GFA-ASM.MON4; or load it as an ASCII source file, then press F9 ; then select USE MACRO TABLE;PROGRAM KEY $08260000;alt l - produces - move.l KEY TAB KEY "move.l" KEY TABENDPROGRAM KEY $08110000;alt w - produces - move.w KEY TAB KEY "move.w" KEY TABENDPROGRAM KEY $08300000;alt b - produces - move.b KEY TAB KEY "move.b" KEY TABENDPROGRAM KEY CTRLW ; contrl w = movea.w KEY TAB  KEY "movea.w" KEY TAB ENDPROGRAM KEY CTRLB ; contrl b = movea.b KEY TAB  KEY "movea.b" KEY TAB ENDPROGRAM KEY CTRLL ; contrl l = movea.l KEY TAB  KEY "movea.l" KEY TAB ENDPROGRAM KEY $08820000;ALT - (minus) -(sp) KEY "-(sp)"ENDPROGRAM KEY $081E0000'ALT A (assemble) MENU 6 2ENDPROGRAM KEY $08200000H; ALT D ** use with care ** this will quit the assembler without warning MENU 1 10 KLICK 323 292END`x2`Pack-IceI*Lv,Lx(a*oMGLA "grѓg f``GP$]*$**ԓ**ԓpAG$QC&NN&&Sj&n$.抑&&SjN%a*d"ra$dCv !a"H@@Vҩ%QnNuf%Nurf%AQNuCtaTxr1 Hka1 Ag"CvtaTr1 HaBq jD`rptadpt?aBC@!!Q`R   ICE!vx(`XFhp@[>wDrPFN5ت0~/TI&J IW @f :rApa㭓`̖<{}sβ. !$$!n&5j7@7ABk7|r$&qg UbLdpNYuU%Hb(hnQfhZQfgFnۘhp2Y2涨s8&3$#QƘ, n8dk :(ڄ9?)ڀ`y~|B&g@eR` U`fYÑ0g~~g q|`vgDAA}Ad+XA`UAk/Pp|9W`9c^@<쪴Aas , >Bp6r(@:dϒ)sv}6.QH@Q`l΂sp5Fr$2 ’1| 3a[m J6X/A׆f@7)hVrc*B@0rݞ0AU{.fA 0CFrmhLUXjZZ"-,xdRPPcxf( kFlQSf06g4RB UBeg  LMWR8f.0Z$UBJPJSAK6@Gf2V BP @Mf!0` N2= e mgf[ؖ-ļxSASBI~xBEBF |fRD`=Ec:` KRe 2| AV`Bf(sBF(NRF/ / pDHR@EI[bh+ED2230 v 4TB~L5 _(_*L02_P@RAE51H$_&_'vbf J9am`B`2*@^?QUAJfJfJ)1h j1d[er[$k"dH.Eg/rg fضp`uT"y2;J@g `Jp/({584l7808621S84`1:3$a[ ejC[h(a Eq)4bﺇ\fq>Z ҽ5 p 3SV xahQS0fn6ZfcaV[2J`TڙH@̮0gf@h6px{bfF5ۦ~f&Hy_TN^S&YcGCwA 7*fjeafY4P/01RC"HVH0:*L ,f I>r_fŪj]VQxBT4`Ŭf XDjma.f"bg / aN&_gfaoa sfaE`&`v`Œy+f&`" JA24?g,,ABCWCkR?a LVs" Vo8#a\RA#e 0p nc6c&H6ꦘ[ K̘r/3+VL=daRfِtAl6A W8uOڸ /E(xoQɍ6,t ?e0"VgzZ)C_E'`AjY Ya/.AаSƫ½NHRHP _S@D#r#rr^J(vgg.`30b'I̙6<}aW|\Ȼ^f ?gHMJ@fX0C` rNM\ (H8B@7aVŮcxS$/]&O0єKfv5șp[dprn4#ʒT Kc`MVؽJ+RVV[ ` c;Xp?BVk pbQ0"R;:c\ʢH>2‰t̃(K& GfrT Kg``Jf\żBrZkLFaRkDyaJk<aBk4Q!a:k,"ra2yBBf2RA`0~X'.la՞g +淣`C$Kvg4\vY`Y]wjR kK1e - 1@ArtX3`ؠypUS@ػ&>tgԾXE7f0Tc6v;/?NnuǞl/ 0`AB&Ƙ,SCfQ'h]+{8h3t!_9fs0`BCx03Q80:2[kRC C{eDpBA?=a Y}YpRK"UT ^2Wo 쀬3R;@o>3ͯ̀,xIIّHnN?Y Bg%js{/n|>X NAԃb 8 7 U0Bf&aB)VJ'I!a(bDebuf ggerfc># ! KpCGQ XBRA7?Jp`.#q"f%Нb MF6gJ]X/ L&N\%=1$`3k4`7|[a7A7BS/a]&,B7If8&g;v{wd(s}00(,fs18`a1JL gaV՛-LE CMfa xg]a:hvaZu 4Z`Ay9"NNT&)p/?NMPp a pMa53'r 0`]V40f/\~Q@GࢧeY@{1#Upq2a{tNBW(0vGz#;r& jG #n Y P r4fRf hLB@\b4%RyK~URavto AqWA${9,kF"H0;2]1S@!SA#'bj̍f`Τf<6/?!nBE6FB`Yn>QSƋ~%I7{0sͱ" .[YN@vub,6,E(҄ ? 8B_sH҂#{FK)h mg dwpywdf/pa`8o!WDdlp4,d1e_0T.&F!""- kbV#-B"gBB]PB`@ u0* pPXB`B.RR@zs@gJSBN6BYufb\̰BiV!!fnj٩ @`29~tA AC Bt|̖^j DAAAH,BA8D>k=Itxu?Y{oz7) ]36ܲ$I#KwK:B>$6׃lmG2g>ri%\"Jr{.I7 A8:de D01SE3+0)u>:D3K%IǒЩn k{? f"nWƶ  2xhm fTnnSFw[gSA+Ș( u [["fJ[ J[afe[Ў35#ei: .jg}uCUڸLgvs#XdRܲr`>3qa ̀crP Bip 8ڀE ij3|jLXǗ%!a2Lfto1.Qnöwf(*ꥄ@.]eH|Q…`te/VPg`Zċ>g&ZuXfwKkٝe&n)X`,d2?W]x`|`Pw;UM$s$a4  [ "icf )n` 02T\`p"HA'ged qb^:NfN`H/B6 :g^fga&-. d w &8"}+ȬMXa-/   h}h} 뻄&|ivg 1I¯zr..dtR6fnigDkp/?< NMTO: 1Sj+_fe OS@0܊J{D[2+@dIc,)BKDlΖ(HKF\qok #g)5 9BH瀀%_J(pLfh`g`0fXKjN` {j/ AB@Z5XgdH#z.}#sఱE*Čeiۦg|dg¦!¥gjx`#gp?`+ďgHeߔ%wqṖn,}9׶ȱ}ͬǔi߹fr5;Tl**B2Pbmx<3ؑ?<`oA4C’mt}k!sēHS@g@4@B"HӺmǸuAfHXXpxPClBCDI/KSCSA4 /fb92ss|\?xTgd+$f\{fTpNKH"~ \f4G   @aB0<rR0LY 8;co~0@w2]{H@HoɌ&$QĻg&[YoB4f|Wt/c݊tuM@`jZIe$0 ` _$ܫއ_n 7nF ͏]KJF@\O>C_^@ZL TUZQ.a,4a atuZ %`a`3 'Sl@wAn$-_,BB{,v*Nr:ج'B]QQЈAfJAgu+S[e_b|`>'g`֜h je YD@! f‚VAB@?g |`0/CM@xav׽mf n`Y6KaT`nNf Vw^6a4/ ʓ˪"_{-@h _8 "g[~Ŝsa+l24;& 8gDjFkEl~RGSBs68:<$YCeEbDeFbf {dZ"kR{eSC]E5\D BA6C3Q1tG^ w6z34*pfxˀ3|lz#ؕ uNVvZhV'nGj.cvc+R'(J3xU[eŢgn[`\udXW"4rXgK3܇nRųnM"UDjxp4ʲ /6 ˂ &CxBEof-|4gNKr[*f&opHP.Y4Z %єz)Р!@|t8mnl,[i+2 "ruPk.eJf -'De`JQ>e6f&d0md*`[gƶe +/wa.nTve*-[>f0\ 9u#x.f΅NP9 \".@OەS@TBXQ)c# :6Y2f ca:˜C~V_f͆r> *n X 3hObpf2BTG1240>BC3I2ǠgbyϏfE` 8DSDOS e<:BEEb2HRoR^ykRGc3kBeo, &ꈙԴ;&tBFcpDFVVSG9pJxw@BDBEbN p0bl f# 30n[t ZpNfpf+SBF,2({.@YQ{,F.*JR;a$I4"D=224 202p20v8D1eʘ¡jz/lDf&BnH[@;C8] T@\gٯc @g߀@H @2 r?HeTjJA6hmRezY[AxHXYEF0r>:0P3RHnpN+%8"Pg a XO`BLgt<϶,fL}?A qi@"0ggbH"AN`=H,52<Tk xvf~,@+NN\-_ w6"2Tfm!W&$f\B 3~a,Iָa\t& \PdfaBDfmHD84?I@Ls3%bgq4A*w@ΐmqp+NvP2.}1-da f,?ysJvOB7o"qEf^|^,VB@qHrf3뮳>i%~ܹ +eB*!s"rPmXTpZ=B(g`0*g:wwJgq.g {ـ\)gm yf],3\##LcQW(fcCk0Y'gw8  K=p͝5 –>^B`wH\dK,JUt1rnޞޗ/x8kN{ f> 1 2g;TI`e2CV0N0JVg+/gf։,H@S@<䯍8H4uJfp8JAf`Չ.e1R"`D3e6dj`v`em*[x2URjXbE%de'X6T=^HVC@WC^1C"#3ۭQ֘bp L; "<crVujY]tVi#(H(JfzV3 X`h6<r%RB[J,kYű[( 38 <f.R\,`[*gkCX4Pd+U+J":3e0_#Ьt$ˁ޾Pe =bnkaX@hdXJWaJD- Lr 3SSLڠJcpfBu>fxNf LAPp5ُ&|.-Wjia$gL#adnd !f~٠N Igg` gJfzhe'\6qL㔶gԤxfF# ,QW`f9w`1``x8Npu(\VHcA? FJRHX爅`S`F!f`epW-X@d ]XO~@$V,9/p NMTȃBBd@_=ؾP"H0pA:BH0V2`dLn RBJfO,+,+\RiHL6 PqL$=7u>p_r"\KYA[=o m&IBHP?<;NA\O_Ǹ`$~ f$HW I$+*Ty.X(BHڭuM~X&z}s9`41 f4s?( \fB:86`B'+?gf(e*&LSE]Ew^Ebf YypN(K<:/nQ.FL:f^ $Ix~*BjPCɽr.i&f?qEn%#bu./BY BALV2/8> 6G _#PKlUe#e 7V|eEڒj-ZLffQC(HY0΃ $$B)#LPu$((ַC"dY8kFɛ !&thgi(rRHRArg.gH`? ֝By,fR6ion`rp 3/þ!6R0($NV>BS8˲Jkࢺg~E#fBkgh%Ŝ/ܟ¤1m" _ (!AQpGaC6p<ᖁ5rYg(&JbnEPp\uyNB4<:7;pb؍#aeyXF[,qu1L (g"$aM "gn.gvֹ*}B#ڠM"x?-"KaH&I`Z*f$f(W= \s3fA "` da6i3g`~UF0!^@?Q 0g`J f| BN(KvRJfHRCPCf"H^ f$+$!I~""CQ˗Ԩ5PPnbk2pxг[| 2Os̅21m$k VH@q4΍Ft,kt"Qn$G&P#kbR@ڠfB<,7BaP1^`:PF0$'SZ@":g/ 2xL5M KsàB#Q 3m" υ@C2t& hMVVص*vf9 Rq`[в ”:"b0NѺٛRffc\b`g42|gbAW`gpv> Af44(g,`$ qj"Yfl nR\>-+`p`+`G` PwpgހEBA(B@`Vg-kg*a*ae h2zb J٫֑kaSSJR/(J8q"H2gkaY?G`` (KHBa k *:RE EeBB]dgA$f0].^~q9c_;v0b 郆~^jTx"F]x'TLTBk37 xv'3vyHhǍv'kxkxa%8e2B`_0u&؄؎kD9b0dK @O0(Kn^k i fB dv$LRkcgJf`Jfx opJBDkBtB>@RC`H@J@fr`j ,xr[>RrhJL4gttFDv`t;GR6*trPrx$"$ޖ(3f'.kR͋T8 kg gCd1:!"43PD.tuU A2]cHABA`(:Ucv&1kP/IeRPcNe"8Xfr P "f$ J4T!IJ.'lbfr`Ԭ)f0 x@ Z煎/#mi2\a{UfWbwZjf"F[\Q:T] Jm& f"<@Cxm`vbH Cyer8 +S@9v%g&fLjwI"k#5`pvp!kbw0eF <+8fJR"Hf߇ PﮞgrBft` ~kg~R򳜺˚+`{-pp˴g4 H@ @CL(k)Ζ2oNnYM+\mcv9XOxj6"j CxXOoW`KBvˁ8zk$g"ͻkB~`.dB7ؚ L?g5vdwwʸUgrz ,+HBrdjx`qv;UA@dfq]gnfAKn`wǸrZB6r]Eʌ8A͓r^X`|B5`wBvv8[<8 [NB?8p7 1f@AXHgm-gٝ`P}GjV(;[dZ[΀pM1tRj^ݙBg ߸% p rt?v2 %4/h !(ut rkw7lނ:vRtdt|%\f~{.f֚xޮGtODqHM8J@22&I_8D&r &E2@sp0a">,R@peBf.X{ǹ"HTm\`0oABPB$OCg:pe\xvpA] 8Dt5FҸʲŊ~)>| x~2RAfns"1 {΂NJxYY}bafͅe@(r6]aΒ|wB6kgqØ"]i,gyWKd %\ ݒJI Q@ư |4&d< [YP "q9An4osխd4RxZ+v$IRs1A Un 2ÌB{^Ǿh9 BC CdRBJ00gj&B @wNaNvs=0^2B&~YSA@cSBRA&zu4X۲g8J18[. L%&fGe=q50NZ_<(RVf6_eWff 5cN"3Rc8>X:7; V ,~sPTTJg:=9`"T Z5mfϟ"}\@Ha$\dvK5NY/0U\( mȊAd|DdU1}!o"w^=5zn]r{˨oń[@gSY>^,ʻR@R&I6nrN(fT@CsJ0{9W:8DHZjsp6#V@QtZqv8`+@SA$IBB  pzB`Shu$>hfRA AdJ0gc8/ѸWɷQ}#pJr e XU' I7.)Zfz3_` v6oDEhRܷPetp=4,3ssembleOifr!Wl{ #f'$#DI{#ή4f#xO PCK67 CdwWe6h{a`'вusLa4,9{g«g5elMA{Q8/B#ϱd(Mf쎋ن!f`0W MgsTh k / &_`oŀe f5e^:z/gv ]L#ȋ,+\`HfG*siQoܣg2qn< .#aFSf &V nhlGeNaaV(v,f9ƕ,:Eug\@xA"HUֿqr j]hvBBrf/`6}F vQtXBYWg` '(s,JH fH@"y\^öfҾagSA }I<'kSg7 z@5/N,#n)(1R18`J1|(RS0t Ss!X/ofJ5a?앩@I>pfh0eϫV-u=?"gps 5^Ìq72B;Q SVPn6\gu$J` .}q3.Zl;` ޥXL 0Sw9qW3}>^Ce?2苮%v8̄@ Ix?,zXaNuxƁ@Լ泄ܔif"x-"ayiz6ÌzPE~n pfa&]2Rq(bt-X`2 k?{zI8"ؘ23z1o' I~ yV]4nǁ9?w{r]l\!Wtr Hә#Ȧ[Jr.ğGxQ̈8JfhtV\gvp OgcagZp{6pjjLB@gRp.e6p e(ple(&ep7;d`pjpWg[dpNDf6+ eBd w?(H#M/1$nUcvk`#0r7/^+_%ҙ{\Iv gHP~iaYdjg JAgFSAazf_Pac2͒BC B2et2aNg RCRA tB3D zASBkaBn`hl̦n5D" 2b1v=fJ@7)ϖdvjfv,` j?g^q ב M eR&qTz+s+BAНnzZ>JVڄe.bFH鸶eb0g<8Sf/a.=g-Uz6`@ϼ5k pY/Ooq궫Lff<"q@;1vBҷv8 "#v678-ܖ H~Kط{"zBc&BDe bDeg|ABf/GoB74 HxѢrLwDd8#!rSz#sc(#NT*Uls,m} $q6\lFfP@"pRA$qNwwU3I[ןhLX}upK;$'+ 7|8 VG]ڬm834"ޜr$j.#հ(f!XVh;UgY㔇m!f 3tP8 Hf7ۍ t(6Ơm˂q#\@k珅VTon l-/ik+#<9̸Df eMk >HBb$wbHD ~KB[jSKfFmS$nB _"H PgP݀0n`;5H J%(P9+B Lztvv{a>qEˇ5H4͚0~ pv(*B./и ,vja"\gJgs\t=JTAQL:I2^s,/a -̲,%\AP27F ] Nрg[Q (,Tw`]P 9& ZezPNskui aU9 b%l>qvng:JgbR[g1\aBg8ܮV-N8W~ViQ-فP)q`prw? 'BXM Aab=X6{!dgXe^ If>ߊaSf2٦բ f&sc^k:ghX 2l-tiˋLX!fJf蹝04C-.6&H "Hv2/"[aVD@@V"xe SNV/N=/Y\D /H / r{ ~:mTmҭb0 g$K@M|FP-(rfO||L~ P2"қ/ ҇eȟ 2a+e/" NcN$]NB /IcH:;ٰ/:c(Oa, #c,ol^ӌnuL &,@_g /w@oKs D &O̿ g}[gROa\Ў+ !1xR[OBLeD5yɸA=8V Y}4qnJZxz˙5YXnۡu$Y#b]if{fHsfJfQe N*8)Xrޒ::2A^8x$nr;Yֽro{$\ g^KPnPVtn?i0{a'h-lZoM'?`;`]!Ȝ#&I> B#pvR>sW`Gc}u=$x?z*f}1Cj;8"Οp!>.{.kظ4fs~/lV_$IfvSf Jgc V ͩ&38nn @WX\ 6 n7H Ix$ت`{ Şd)g`wz;nkx zf^n0JkP"LBCph` ~gV"D!,h"U.| L /, 8!`JCgsrqsv1܈` JfRKf7Ș2f\O`L R~?MfB`?Rw KJR.gQ7a60]3 F1tfosJg a8tZ#GњQҚP{AQjCfb #Pnpyl{#DIk g=N`e^Ί3`eڡz:`@6N̯ۛp.0x\نVSj I9c[-E0<! U /SITm9 Toc t"&\~V38e=XYQYD?lhVd4RB Be_QYT:s,|k!X|XC^hZ%Rm\ >ŏfjRv[ G"&!xW ̌>ХIDK$p"xww\8 sp/h:Vl7/Tbpr@aP~ur`aJp{}aB062)P$Ip *q J;jl8la:a\J&eYeR@Ac|"kV72q.FZ:*rghgЍPg0g62e Q?9b` P@GDs0WY[H@J@g 0*E6 K+ŕ_@N+p[w%mrp.$ HBJB7|*f.]JgPf,]瘷/~ _qـfnIΈmݎp?B^p` p`pr hBA@ AdP`8AH݃=~uFpZ r5Ru.B`=>0(vuL\qlp#l@PH{ ؞`,"$:oާل̘ygff 13DLJc’B3;B_dx@4vBD`RCVfAg{{@kd;f7TLQ kx#ȼf "m'`"C7[f| 3<Qa<ܔj2MHmJmb-yJm;5Ŭvܚ?:JCj]C4+2,1B;)1Cl!/LBh۔2W#2(xml`re b( q|qew g* mb erbX(mW7*Cv)f;l-m x f ,ty8ÔB7Ap*`}ep(o0o6v [f&Ff`yN (^lKg3t0 O, muq.Y/ AC[ pv+ib.^C媘U (JgC *$vl]7 1R+Pm8ka&<^,+#q*\@,GpDiV#qB`JgHoL8wodpX[e8VDc>iY#7!26螅lI2mcSѹ4gp} J~KxCԕB[4 ,U*!8-*. Ņ"6o 2&HR#%P$H\ݜH{>-^LgNebCc`ba± g !K=C`؛`&,o((KRVf!HDS 4ۺtkqPutL`p`p_nE- eakВ03Kk!03,V1G2l?$BAff0?_1%p: r$|0C0n$k#¡R30r+O p/xvRBrptϖ\7)/xAk0-sUet`/qJfp.~RA A .3-vt>t$pJj2gVfVg3H~8U@k[%~[6a\W0{w3ew X>[Nz4v Z!8CtX$\Pg`g:˯禊 ^.$.++&<X̫n.FpJK(P[}g.{ΌەoQx\սzMxnwF{az/Jk.sa@0Wv a Nx Dnmܢ̾8`0 3쐻CVHH>}i Я2 &&xGa"QkaR If+:f/C*<<  +0p 3\xfg2o`8w.6X4`XSgT7bf8`ggj`'JfwBC`,܈SFkڶW K/ v a|PHg$BJFj`?Yh$H2bBB` JjuA R@8_BcVT1>uȸF9 RffoXZ0P<ݢ0B "hp~ )"@!I SACo(Cz6Gf Hy*"L*[ѺkLJCgEd:ՒKruJGx"HR!Wf SE$IR(K,MlB0g4JEjYn$^X>X\,[fp;̊S`8{?tl\@{;n@ OPסp`4su]`a6RA?`0_. H@n.)2œH{XSAqn\ g~g ISI3-}9eDd <_`qpS[$Rg}]p>a gF@աHn9J@f2g6 fRP PeBP`SPj0. 0+˜2`6/fmd :k0(9jl5c˚ۃavlfhFxHr<mjg&"<(n]@Jb)6.mYB 5n_c^/{9Tr2t vBCg,RC?j, f+z/hg=o`3þnB<@Ffz®;@@lgBAh'VopnfCj`ܮeeameawOnse#0<tQ2Ntnb/,;.vOx +8NՁB 6[g 燚K̞0bQRUdvf(` | 3-<f*O2&Jfd;3pӇe`>7bCHf(e@AnO.@g{kf*PX~f oh]-l5·L(5ܒ\`.`Yžg7Cr#<05Bg<{egzxVf30ԢGz`xx88bs:cWtp7dKyKb ˷2{b~VT[\28nefHlRnf[Hs, leZ7˜x:<5M*nܸEJfc&2#)ˆRts8uZƝtrͱm g .p| `M auf[y+6$H4!^#nU?&Iw?nSd2Ik0N@"Q D SSBkQ˿8f%3a#.ftq*7f TU:wGpfNstp`p`?H=|p6ŘvDp&nFp"` Cs)ͥsFtnFkgGf&q#`"˺v[7d1p*Zog2/f.HD'LkA*LB4atd0m Wa&MC*qCv)A0j k+Gk N/ ҆,Ok#(lHӮڀ$g0k.3of&EWvŜ gkS@猦(K,g*$oRr2R\9]ƘY:(;buO\<!f s:*)f(S6]zvhQB Lrf$k&I`lpQtv _ !(8͘z#MiNu ~qYZ6sG8ƹ1▸&ϚcѶi]ѬЍϙcPfb:u|xn^~>:a\\b a`\,6\^i,쥝xSv>MY7ekgSm+(g$6[-ؗqBnf[[֞x Zf-J 3"j昜 |nablhpJqΤxsڻ㊸ v/f<( 9nF~P愙BD*\ΡPr `^B;j.dqK0SuWgnYd`0_@5xXQnIyE x<w$ .qu\0~sZOpn *3K,-۽ +,] + ft gZg@hrg:ωHgrPfRl@ eKa\`SwC4DTgT8_ntLEHHfmFJFg b2!ELBhl0d-<5A6g` ̇prqq0Za087p8YӌE-/;\dWa";#ܼ Y+m޼ ;g%e ]a > \.;+KݣmKxwNDkIӄo<8OD n 4[b Bdp &\q<-XqJޚ.rv[jy(L K?i$ pZ.5{ghZr.'qX@fFn^,[þ2kuJB zYEe !kybvVklx6UxPvSnp r>2+ԹLF9 ז3+ H2sZ$9=fٞ`;"igaPk>(5Vag@"Hm:Yd/ _G(_ٍ$p,f,ٍ ,,AH@kЍcg`skw޴<.jf,p,$'v3zu [o=kvw&+ao(`֫M(i0+d:LFj+"v 蜿V  x.Z AsOkfdDebu; rgerWzºgJVp9qNx2Zjg1)Q C'c ҖBAWB4rp_\r1 2 B@er6Y r0pPJ_g #SK V֒Y Ĝk g)_jW X}5`2 Ŝgk(򅬔g`b#)cxg3s։#Ùng4HQT߻^~g1pٶghC(2. fN'kY@f` & LTk]qfBP6 t9?fuR̮J ]3*Y &\&z | W`B<$IP8*L>O(Q@TDAc8P<ԄDSDks\f"_ "AJuk`KFW!By@ #B@fmUgZp`BflLr nŎb DT 0y/م _Ю|2Jj`ʂg"TAc2g $KB~ `vAMk*B>Wf0.┆gU:$yULx|˜Nsc h$ggH JgJ) fg uC?@Jڸ9 (&L Ђ"Qf8sFkAb:xJPfݿ؄gvfnvԗffp[ԫEHaҶgo"n\l2ky.C~YԨgBwfDOrooh6dq;󐣗A¿ٳ%6NnA8[[>yf3+ԭmgq~XOqnf^S: *|ݹ-,ا/ D.   !"#$%&'S*+,-./+:;<=>?@\]^_`"|}~磥ѿoըa8^߀B3.*?\: .()+-x^=o []_{}0123456789_?abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ8OFfyTl Q{z.m4kaVG`(BPgJp;k@f5xq9˭f*l5#T!{[; 87loa!3czfjR˨e /?gˊ(h{7;ФdC8əceMuVavZ&!qD%>J1:bvC}a*to I ǓB(RM~`fu 4$L"/sCf6$G&/aʲH "0{6'Vt҂//qb, U(3I3Rs 1F@unjpB)tz=LvH{qFDfR;o\- |ܴgb6v RC8PCHZ(26c!^^Ez$&L((%'!@ \CnjϤ1frcLƐAkZ2ŲIWf%k01y0 li>^,AYS=͉8HgS"R{ Qа&If/fj*f(GN $Q$따a&BPAHo&Nu=2H+Bk"">Id s #[X((QaTQS`*a`ٕ#]@Kx."H WBgaRuVH9p@\=@VTRU`T݃f`Dnx g PfMg&/ fw g"#uK##Hy"_oìuװUcۖ`q Ppr>+!jY&D$|G&(d 9"QS) Iċ$` e"Q_2$`&wƂ"CSj`Pπ8 nPo3^ &( dN`>YݜagOH"P`K6GB$-7$X<;P@s0bMaqFJ@gB@ִ@4 RJjGP <\Aa0Sֳ)N"7_֙Cb^5Z o`G KԸ< u`<# %0OV贒.k? *,p a"we(P,)33ƒ(A\n kv % P f KgnHs>jg JB{.f,,Af %Bs @f46&xdf( ~z4X>Q9:*z0<&_[Pz&f$$BJg@f[`P 7q-2g(T`(+_NH.EL`mBPB1)Sjd*Ql &4_b0R`k\kې#gZdaΚdNf&3րeЊ.!QB ռg$yjK`LZl 7E 5cp.$IR@?ָ40Ngw pf062rg2,& pzBA{BDVv.`( ?-z4RBJkB2f8nDV1@1ESzJAr+~HAIEcv参}n&~ݜye) EDNV/N{ef/H!Kv`RFfM /prP?ӂfݰ.Qt3<[;Y,OsƜR2!` 1!5fUA``[`ZevI`f EfxZ|X[jvb 0/ ~gRc3Axb0lInfN ,oN^0NPH=YcE#LfO`@B@=Vj=4|,f`"@Uj04>Eb d@PVf%`qA/p 'eB&6 CfdV^,_J_g nBC`g;`RC`RI& 3"CVl$\17uVTJYf~eg CE^4!dBQ/ $*V_g TH|,@zּqL@k({k"XV~|dTFB]r+Bޘ,f|ڪn Z~E x:JHgʓjTZR|V92d1lJ^q`f@[C$̱BA g&ˆ?eT~V|@d[2Q:`/Yjhg )0'܈.H0l|0HA/x<i4y@SBBB~t,>R\ k0<@0yZ@ QKH٘6Nco"nU"i&Q!ͮ $$+'Jx@c"RA-PAA2SdvPB"~Ÿ`  b aٍ#"Gra I3YI敘P(HN^.p,0{ s1`aa¸a"T?&&j&k$K>Y@2Df[`$Qʔ iej*S *%H<)V#KA>&(-+LxBh!M}N !hܐ BXZp#H/d?<&NN\Lp|ճ>hJg B}"d}1ha=l"taBxzS~ߍH1f@|LPa6"-0ҀGvSfaFq>@ #IYFݶȆ"[dߋlVUX2fr;Hg bḃbg)Y&Y(Y*P,bpY">둷⾆H aNuqy:z3/d &cRN, e ֕,T%OVֹbx%N| ij.Y.ޢS*L}`L~t;5"*Qs{Q[~0}FMf˕per3* BBCٶg2,˘&TcR3 o|r`pvKGY @`:<%K&"l%A^!6fq@hWf(2(k$%_A",N?o0v΂ysbXC*I/3gnJ-j \u"g,ȰC6F"p0=55N15k3,@nPBKk6-B+kln< uCFƻ*^|sk g^k  (fP!H|pBlbU_soGޅ.ulfvS9j`+ g5%LM:-b!Em Z%m^XbxdZ!) sPN3~Ɇ6Xݳfv؝5'3Rfh8U.'x0{b2KdQ00gRI1fB.Ԃղ fmg 0,)fTZRBc9d`plf2,,a*m)b};͠Bg]r`BIV13qƹD` yvc\/BovU@ f g<̻D"e Z—RR`B'3ț,cB(# YzI| jEfր+@Y)pmRfA/>%2RPcط3Y&e]?L>렳z B@3+1 BAo#->XifRA Ac]`4@r>QHB2LG6aPR@`J?SAЙHAjSS@LPO_ @+^kb &Ž *X`g(0X`1u(K&"(_bė|iYV 8֤ak-w,az̢ ,F 7 prPk`H`(+JC&s08`vg $sC*2*BC*B,@,~[mgJ%fm g\RCQWOCLE[p ըF5ʌ ޖ G,A1^QpVfl,jkhJ_y _V=B̬tlT 5΅ qY˝8 ,T6dfˤr۽;g gP9(H,HIcf4bZ5@dභ"Գ j Tym*f: *n06%rU %f(f6 (f"Y6fŒTage+ )27 愛 , m5pUq4BhdX a.,wV vg`E(pg4M6KT@_Cg@`R/ HD(Eˤ}Slb@\ I w?{ f xKF .+*p jz/5оa p 1dPLX}4RΡ 865 ^a| | PnzzLh%LgAFB@F\\EH2@ p RCTEJ1n̹J38NʬSHK]V5j Tvfk zX2Xgj4`jnfZsnW@NX֨neX~6W<| 6Bc68U/ B$Lp]0/g2zQ."/ AE(Dž,py }f<JU $ Y\]a`Gg5b.j #?lvB6ϔ`pdNg ?h" ~0[Yˏ@Q65{vsEfH`p8`y} fc9X)`pa'ֶׅ~BBB0./0n/XWٞ:VVXQVr@BCBD0r<8Ԟ0a=, {^G B&puV=prI`U5f#fȗb1׌5vFaB0%$+jlh.k FnUXGe8` ·hFk̦e' mQ> Gb_H܇`apr0X@@xt/+[ 1fp70gyf]r WfXfrhPgN0熌I3+ƈaU`Xp`8@a@$6M2-%F>13;5^0]J@k"HJg]m@^R$.jDQJ.+f ^9k! L1Rcmn4/rD/ ',snj=WfU>eu"g38ڗ Y~gQdPlpfWbWxSۂ<)P9/-ltcD3BoP/ szb\l:~J+jdQ-DbWJ3Gw&$?a'ncga@̑2.CVf>S࡚ 1EY' ?7f:(x, |%3Xc8&kofWK gmEVt kE`ԙjP1vX.[V$ HVMOXHp}eZ"x^4b6.dSBSCJB`?pJCkH@?@aVL_(%,6fa p%h/ jRjI5urRPJfZcH'T\v2':J*a.#)l*q*sZ PPLMfu.C*W|@>(*H_4#h]k o (6nK{fXfSflP]f*g& kgJwCdvs`b/ ;fD f7&yyHm2/j{"&f*(1`[S@"-$LjBqb3c*^[[-^cz,!׶'+RzzQJ #+-b dВ9DGG pwHB:BDTdd=QRDԍPo< DmB%0aYEgpkJËޝBÈ/ *<&M>)&sZdP # GRaQ_eWF̌-`t{̂`a| avaaJk܏3w8lQ`NaLܓ<)S.pm`E5˲$.crUَs,pQ#ZZXвO 9:3CF2As#93g"qNѽυua,]`a`6r2r`.r`*r`&r`"r`r`r `r `r `r ` r `r`rH+y8ykK孧7XR@`JjU3Z,r wWPJ0{j'bk,ٮ40shugCΪq`\qg5Lpon4sΜcgD"`m-Q Lk3O㫬hrJ@fvRBtʌ2b*3&4HPp5v@2`6ށ0X}8`f\yz8\g*ϛ(SjTQgA:b)FQ>!16U}N[-,Y a[n3m@r$Q2 gH6jIay*RD+(f/O 艜; f߿f3~`\0$tlTT<XB{RH0 9c@'T"gHHJk+HDۃ-` HUBr ?9+&tА[GD rAPЃQ %p0K%$my eʌZ1PNJk=y1(" %t 6ؓPBCBHAe0`91QfL@a*Qp _D@Ê0Jl9l_d(kpC$#hVfOpQ HF6G,"pT|B<|"aMC.W^b 7R3g.Rvkgub w[a͵d ?p0ponWhgSXyJ`S 6ja:Xa$_Jj Nv 3juD`D@M@EZj J114hPb 2H#zԮuք=ΒhdJfsmS Zgm҉,S$#prP5`,ִH^f( 7~hDy4kW J 46ÍLp8_:*vť,f`.82R^-pS¥sl'73?W^8Vg[j²V h57gr2_ur2tB@0@8^3^6jfxB@#:BRy,fNZHfp"2#ր"[HM⨙7p3nFbp9Rp t-?uA#`.qrg`~M:gMԑVux0S@}d Ylpu*Zaq W!Xbr 9mUqHyfTZF5h됒 +J,u8`n-uw.jGS&ةBZ«3ð(r&* A ]4P}3tVDi%1z$684VHJZVgfHT)(_"$5 u`ncy/R|Ћ>ПC*`⁝ BZ4S"?> $/<W\`}xhK3RV/-HNATu/ lf7 @$@p?Ba~ X&HCp6^B%J"Ӫ%Q Б3i7%@%i Щ ".#b ufa6&[\ rUBgY`ד`P_¬,C`{Ү{ 3Za$J g(і"n5h]en0UgUֿ)= YqŜf8=z }vM˲HzlWjgf*p`<)瓁 KEfYQTs[j i $"H._3 SfOewG&`l ̽pR@=Ffo\ 0:WPfA|f? C gspL [X `İgG, s_ +:L`ì?<>NA?a'oDWrC"!s!Ps̄^QEaf0<7B|/,lN Մ,_Q \a0WA l˴b-0Rs<ܙzgJQg #"/qα#^'̴옼K'-M$prtv""z ~ȓ [a(+Plx!J}B@=gwhHճHuJFnk؀`r*T ugB%sjFI(,°B-l3oΌZ``eln }jDTqVަ3;S@kAOjJ(LFwSBhn+UnH@J@ @b?.Z~("Q083,Zq{\ޏ+Y,~g\ 6Fhk` ɋRa,GJxbT]q1@{Q vy g`oY% xMg Îfd$>lXjw"̻3( / *_ W gIFOLtSS~`w{rQ)j2&DDi=V38;JpoѫsՋ%4 @b*<syJ>`J L(_Jf뇀:`zQrz3x&.\o`PqwIGp&lA YB{P/ @&_UN!>LffXX|,t/|&3dw9RJ{LmA*VCY"*T ՜`g@X12ʳ&\C[V"BK - r @\-HؼhLЁrB`Ufw pP0D*HE@-oHF83F <ׂ"L'Jjc : nK M=IX J2kacjspحyL7dƍKu'?1(H1ƼTSG<=G$ O1&1HF"&>fm:0x%' 4px^-/bTdYs.2TP:_6HR$?k 0lf.Mg `&LJ0K2L.VP3LaDGG`C*HpqNT>0pNP$l6? Cg2jVl Dl@&r\mό810"~f<۷?Ֆ= -wT .WdI0 kϚfKqp HRn&o<8yl08 S-@u5 8y ·?of?23k7gx?hi:[Kf[͛K3ߝ3w(f*Jf0I.8;?!<1+ F*^i<}ۑ*ITq/ sNbևSg]~f0<jͬ Wa̬6q0~mSFk/TZ4 0ހ {bN"_SGkQUW20$*3ęln'J2QiANeSѮNپ,Lg~coh \f^SKp+l| _{Mp@oFlN>/N*_PI:K"[cND02`"H\N3澘zE}*P>п,&% E(J(B_db5)fv Hok5p&هp :뺛3"~q[g -LXRHTJk:(_׭VĠcK5L/^/-(OgU@kK_V8=hھ**xHHD!OP=vUb*?BP޾706@"R2)&n DBEeL$(Ҙ$*3r<Do<ktL[JEkJDk}ugTRmDH%A#LHx/6ߚy'*Z^sg@|X'x#p?>CSESD~_KSG<ۚWx qg"=<f C pm"i I`Jo"n`[jWz!tB@@@+&"qґ+Nqj/6p3XD=( *X\ȌfJ!m1 -wc7{XWq_H&^*gK:HP ui0kY&+,S mGg fW[.D:2K&nA )"p~N,uttgu'0@f{`PatyZ[]V"aIbT"b3 VBIIAJw odT>g45h2!g0дȐU69:kDMػ`tN.HgJMX@nC?pr $YAIgf&"(HĸD6ö!(LKk$f@Jyg8Gp:xKg]Rg"b E8?px6 BqVpћc#_H;f3/bJ۾ Ye׌}k ff~jL7"fY% fX ?% 45,RYmz rTjXFF|!&݋=pg$(K&l֯ )fs)K{&` G=-KbL`L8W``3_f D`(},Jg g.bhf̰B2+$U>AyRfc.HY ˺HA7{jq2e=Yuj@]3K loꙹd0BkދRnr 7.V-%m<4m2 n m(M7Y-m;˜at3=Pj= k}¾ .FBQƕF[EPA1P:o8, _!FwgTJ8gPkF"J)n,*[#&x+I!m+eJ-^X[Y)BM`!i ,#HO I,pD XAڱwc1^~R#n!@u!A !Bp!CP* P1MB7f@"ndm.$on\m&HnTm nLm?E_n>mx3ZQ` BhD}&Jsƺ` '(|kV"gNdkCnffxf'"f (xDg!EDp 47B nP0VX(F I'lBf* \RQok,<H/r&}x>B0TKgM@ugpA(*LԱJfTvPmU]u5`mj!PYy`̕UBhwQ8BAũ -H ~6 xRLzJfp3Hp PN>-FgBk$6+]YJ`\gm@f.^!BD p~r-B0Q[A L l~X:ۀD`KqT!:yN5sg{BBCBF' L3 S^^4gR2_"hP6:800Mo [?RF O`JFg>n4B"A") SFa,4 " `JBg a 4:Dg`[?3XSb .fUR }e;K4LQNM"JuJB, 3RI׌ -4 <9LklTgF`808>s~Fz6fFyͿEJ1ٽd=@ pq7ЕRnI1|Yeb2jw"RONf*O7V,Rb7့t(2^gnqL :7glN8B$ՔUH:U-OR$N,vfŸ8T\ ; 0\-fvb fj'h7OtXE^``y2QzVzҚ#4M[W[af*$&MdON*K3_#3h^L'ِg }` &|(n.B/AԾT Ucp"S$Rx0B<4SVܲjb+J̅..L'mk ֩`QH]fϯ!f V&PpCBpLD26BW5[K.Fh98FAf B <=7`E0BD|Nf ̶@ Q fp` }G@Z'tr`:r`6r`2r`.r`*r`&r`"r`r`r?\r `r `r ` r `rgr.$J#8a0nN<X#`%0(3L:]`LMMH_ۀY X\8ApSDkN <fg hQJDZPZp*`p,HR?NAT$_o=6YҒ5<x2# xCB I-x+épj4Ck<ηVWvQ!\cQg(V/0Hqzf# u5fX4#"N􈈳iJWf-`6ntL9Mp2`  p*^*@^nmx>q>yx# ]7Xh=tS/0bz'pts (Ԟ>Ϯw>.<"|8<נ'~9yXy<|xށbD]`/ I(( 8d &m ϗ1β2c6 dx1!N]~ox$ Wld@|S6ޠ԰v0b4* 'hCHS@?xD0:A5tSfWpn[/҂Qusa`9$eU O@/ (H~(_Tqfq ءXjfg(QŧKg%4k[iY̪Q] ,k _ VHp<"MXe4]?u7 Uf"h#j0\ B.n8ߎna p^cv;p?LUs2, <*pSrjzwG0*gCO3RSu!UfS*Iq8:BJWNM\WǬSt(2 wv;0A3xIIlL8 ]Q^xnu{Y*n Yd:\`oΑ4u`,r_USHZgv,L`DP:[V [ ǐxk<|Gag̼qZgƻ EfP":V0δzL/ d溘5JHf%RL߭KN[(_Jg= fb`8qU(`H3~l(Hq[RJfC4ra`:fa~0pA7LeZ`T{&YJЬ听UdgFfB{Clb&SfR@D@k@0u%$fv,g82Cs N(!g&S0@g=2/p{])pF@{ˆjqoU ` BB}a۶:&J -a]1w1nJji^~a`crW퀎r,ns  "f:`ul .ffpPs94++:q̺` rPq`VZKj3oTKF' Kl`/(L8vq=%Ff6[QqHH=6 @A9r6C@f}N%HRU 3gKt۲bFhs6ag 0UT6Ұ66pjpI~X[qfkg 6`8 u2st[F*Bf gfHBEO;k(f40M%HH}EJj`Qʊ mgg a۳1VN?Eײm(pMܔ8Ȍ*^->@)w`4< *Rmg7H)*\pgT:1 ?9Xj0/ < &_ ^IDzĒkT6:h قv-@>ۑ%u3N@>Bbj2 xPQm.LB:\b 69B-9xz?:z J9gnl˗ɑBR`e,K6cVwijp*gaV1fWk㭰4m xuRա'r&qGFQ `-FuAa-`.֭gpZ"Ra|@o]n>]&θx-BAg:SAu=?sGZ4߳_ XjڝYz2AWdH HJ۟g>a*g r| W"Ff nyJ%ՃJk,)/p wSf~p=yTpr3"BM 2 " ҀX"-AGAuDz9}.  ˊu[,3>${-HwBIBIL0pr"Bf0Rj&l¨T@j!G`3[K8_ygf<fg&&h0q1z} NufV\x ^_Q],g3]:_Hk/ja-^v=qVfX gN RFiN*Tf@f UI{]k(\g `a>[̨jpm-r׮t$ƕkg`%eu͢`.._??Si`4SBg(_$_@ڴD`z8Df:2b,nm6fuî̈́Xw !~> n };f LdmŒֱW} JLg=V a}[ma_N~55^ fnZ`f`42 0j/ /(YH̋(H|?lgJ0g*FKVZ $E`U٦e!0^{hF@`c*U(K1= B&6dXں(1p#rPE1D+T,[N62ćL0Hdodv-;s@.eH8rtvp?" 6":EQ;GSgIHk$A ,+.sI /f$NԾ=fnpLpԜfzIn## cp/d3 T 8 爟yF VA!h4f d.6p-PǠRPz&i\3<A&:C':0Y?P@!֐Urܺlr[BlFaAm\ qG! JJgp^ 2րUAa0 .E04B? (t BAq Ykв+b Ct+\PZB@l2U֖g=mI c#:zagtԾlofu`Sy%-fi.gMof*YB|=%Ej'BV[ÇQz`qNrp4oWvPx: h6AFc@XlD)",(Q\8ׄ욲(W)YV\W3?370HSAk`t?f:YGj$6BkB=CSBj^? oL 2JW/<^KJB_-r 23V)*->Zz*?k/ |)6UkaNIIaN"4UBk$0D@|'z` *~pvvJg)00fp' Њx|(YX 6|C"Wn@|N,|A%B,l,l BضqH/gSv`(`eF:\)ATHT5hЀ~-n _HHP=2fU03Ն\(EhpJ{V!L{|pp(P:\bF823HSęǎ(B:L`L&_ar "Q^>Vfp VEWJF0 5p"2#2-c^Y[(H6FPfxװ9!F"ͼg@Y.3gXBWdHf'zS-h@/-I^.Ma@bɲ΢[D -sLhcLgydH_H>L𬈱`gF@=@~``Q`:k4R>/UºzJ& rZ@ciP`?}1S/ 6Ь|Ѩ0:"6GH@D@ W SHoIfBx-KXyzwC)9p J#n;B{JFHC_s)rR"2 A݌b-@=b W&lb(fzcSDkLN2B+XBMаXb-[IL/qSekHq *Ԙ-_y0.B_N0-H ElbL n xVj3gPsA .Xf%PVQl?%uRk:g8("f !b?f\ S<#D&y,ƕˋHSFF uJfPʴ L(_Jj_Re*bfň`&_2d\3X7gDGGA >-N=r.8JtQئX3 )aaa XaVh-|g(0H4W U!N5fo^Bf} n><!@0S"g&hk1H3lSgӮ4Bzjb!  .f͘*_Gk pn kVX8`4*@ŖxJf{Wܚ#$\T %m]r&/ [&_$,Ur&!ZrIp`Z-@BMPPQai/Ob^-_Ztp^(pX 2J.Dql63bQA,TJg k4~]]v.*W1u+FSHkE`[FBAgSA?~52Zjx;mHJ0V--]F[(JkCR?./.DHRHT4 t~drB}jB@Ss4}qPJf߄*.)YRxCh~3 :[`<<9H~f?5Jg!7R5°;II_=03,rka6gUKaRחŰ0/Ťaހق QVŬ^"̞u!"H[Vخqr, @@ A8lAB1':AwǤBghf?$0Hz2^j {"rl?tA>NA{/ly3EDș`/{s,+uM,w "$& "&VRnNv(HSKryR&8]^Ř0 "jGd\D tpIX iw`!T,Z5jfH j"D @:tn]-&gB2HAtWu`X0"iqlֵ@܅Bk*g0S>xxg|Vdz `?h` ]. `OvA&[@%' RQ (Kx1;e:l_Dg.&gvk]`-[W/(@3,2d LU3͈˰:rPE,DprtvxP0PGpy9g523 fgd 2 3jLjL]jL*c3 nr%o9 ڄH ص`-$wf!wanp:R@q,aҋXrV18זtf"$,Vp( [a`xf`ZgX萈w*jNԱg@/v /r;2O\1m^O-,#tgv p/af~ә,s~g $gSgPk . T^ `^"GUk* 8cfoY5_͘`B&.rWws>b#csX_~ŌiSw:b2KjLKVمa` ,y*HQ"_l8*S@WfScŢrkg j< VfYl#ζl8pq#nsܖ!*?,NAT27&miYK~fpY3<-B,Vk\[ٝgV8?f Մ4 -eԼt"Vd-3-ύ !-\j]"Tj,#k²aNk#@"P<, QDBZbPtE@OZ-KgB,O1d2B.OIJ;J ^z$kprPvPx:);qƆj&ԙz$A7 ~-j-*,6]Q&("҆/LStb f"SbfSb_'ŋb| )jcc`ֱb&f bf?bf bfbpQ*|THfchHh2UHA 4 H 4 S*K2 HT 4H4 5&jH+8ւmw,c P-x-x,b؂J0^&nI,qz|Jg* CQ("|fLaH-9kVOHKP4uAdL. W@RAوhfLpF"tH_ M4̉&@?XY^2Y :Zg߰TOJFj9Od%LԻZHDn4"Ȃ fz*T`2 @fb*HH@r}sЀ (/B0+AB?(< _PSF?kP f?):25D+y:"̐|f'5G ppJ.#g`HTk8t(<„ĄƄHGtH@0.FJGk6&6|(_|&n6PRbBGa֓`aBB[a `Ŀ@`><~{ghT^p`^?m?ln [3f3'BUr 0.WgrDB0(X34Gu T^P^.53ph*V[R"<[M4(gqRB62 O "BQEPf!Br{ŀ2B& up\ qԊf $gg(8WHoN|>ރ0#ld4;T6dVbJ@B@f"/ 8UDz?PRE E@_fE>$_gVkTP2h@E69pWƍUnSaSBk/ I RZ RVjRh-HZ`<bR\i8+GTcfUS:PSDHo *,ցM0`R@2UAA4#?6)i3I{.g^APP|` BC*C|SAU}x`HBQDM QO6SCهPTfRBJ7)yYTiyĀzxʸ,LP聠 Fb`*T &g.= )% M;g5x:Y?-ASp ܔ ʼn `IS;PRGLST7REF+_WMP.ERRꃺ*dB&V. 6Y  B!>f!?+G(Oޛ>y U(/ThGLOBTZDATi5ABS EXTOM T$\5AMIGA1lAܨ<uh$ g%mY<1PUP2"Ph0#z2 :ov^p'X<zcluUfmB0 S2Croح4`&EY prx0r"C8(xkY3tn8>,Wtu<%offlFj%RbLUe_X".ykd K;L hi Hquid.ֲicSd.! PaL scifRRaFA-V1.5 *.]t)` NXe*˒objec< (->oHge)L6 /< VxD/@on"mAdd]be%,fi`f|Opx2wLk0Aibryodul8=RefxceGa lo map!Header InfoOTextA/DataNBss Symbol[ Leth h Bytes Warnings: ( Kh3/<&/F 8\8/Іk xzyK0o.}LQY<l¦VYH:¸vȘ,Tl퐙m!;d6V, n[a[$Y~ !"m†V،NtCfa2+l쭰𶃰NQ:x;ƙ9!:!ZBSF2.FgS@H9̂/ 0-O(/}4߷"4Z_ppxq* igދQQܷ>`a88zB96 ";LRB8h}/¢5Cz X>BgzBPP-aIl/("[2h!g) eթC_ Y-z[,""ւ"B!Bok[z*VeY>јѐ-nqC܁rE#I"Ҫ%AbbE\HB5@fepTY$JXTUo` X~dc ``BW\-Iudh]6f,C<(BA><*\0gXS@3Lru3RA=c]f20g( c"6H*t@@RBYW_JC5B`mHh??*EBBΒ ,<@.dDKL~LyLLHN@HE&H Mm:SEo_E$ߚrKn?66O agz8""Cf$CR g 4R&B$+p/ &9AR :V䂳M `&7RQ1f BS 0νC)fpBgo_ˉyJg$B KB1 &gXYRY``&1{ &×p\9- k$$.0^qYؐMzj .-@8B%&INu {—jif,vp&1VPU>\871 3n-8/, /qY,SB#û_i^j 4RPuzfJSB UR00.SGq0*o"]$u 3hgT:mD` $,@ @ nNq`Np<`F=``uE/ GX?&_*Iǯ4F@ .7fR"RX\mJGj&nFkYbQÊ1&Q-!X|9E|L>q0[PÐ*ԩ1"g%f` VD!3Ӯ7i)7:a~y&Wx)ܢKq >8BAG0: @!AIxIKe$Q .2cP;k&n// ,><›/ #LKP 6v@L%,kBjL&M$,vBE:65j8DǸ@f 2:TUʵܖрt~oa~'q^͝']c X3"҆ u?cHlr 8ւ<`г''̱'Ǭ̱*2NS"O(O/ r/Ctr,AR8RX`*_JV?':nu $NE,p?Plg"$Ԃ84 ?< B^<&O,ým' x1B@fvz$BNq3Xf)V5_x[^YD"B >nUAJor3Cun`m/| `!5 9Qshyr ĒT6"HgxI6DSDk .f .('q(W]fB1G Y-BE[/J1|gZЧPXREzY3ŝ3E37UEkF$Lͧ( & n(y2' l LWD8#$8񑶎l&QYH PXQ)V ͶM6BBJRCB4f(ց։l/:$IBf#,O1g:K*I(&gP8IJ8 f8$[L8f݃$m`B01 7:H@D@^@O cG(I*LBkTBx 5P(?[H D^_ڄڂ( 4XB5HgVSSjk0Rm›Jf+<SFBqXPX~,_Bg[<$h)7/cf@'g"ఁp}7L!.A.#5C#`q[mkVjkWl[*@dHU%kRM#ss:,. ,' S>fn23/v8ׇ}Q Oޞϥ0طW"}Zg,qc&6[468:HÆGXJCgRC`HC s\$K*KP0} 0U2B>3I `0aPa|oH8:CBDt5g63O2>η3Jj!^axf8a6oRDKR@QL`  rDc=|B~HGmN LWaHJ 1/E m#uv]Nu,6݂q7,|+@{ naX _,TqVPp`3U`7MS`y3LfWASfd9`3Af}01D͒vߜ"\<BAt8O@NRnJ:Xf #m`:$fB[Em"0 c$ mbHր`#GAQ<HTe PufpTX?P4\H/SBXfyRKW jFkA&l0k,2(\LN]PX3|\;LY;d2\]T.\S.YJZ Ig$r 53%Wgr'.OB5ڿFNajB)WUm>65kef޻e;"-ڰ9Cg%ʘx,vB$(,Pa0ݰk.l #/hѸ@qK"_T,%"5hk!W-.deAXTq;AuAxpCHt('>zJYp\ xU <%SF"%ԏLQW`2PP3CQ enfLlepY)Xg|."ISB6~9kY.\lkfd͛'xzflt:h5xg-sԬh-أB(T"C4y֖3f ʷ#c!`-|0lHHŒ$%NG2&9tܨ{R-U0( -P*BBn"avHTΌ"U~LgNu[Wb@BFm0\BBq'BH-hfl%ԫ֬ ЂЄЅлt,3kob>ΰOefP"T(2Q )#* yەP2u#"tB.Bӱf oy$DX~ OVTvpy$x;WP,nԍr"&^ @$6 2-(agoZ %@JD%@؀8x ^PK %qD[`%RnJjF< _"_$_&H(IF@7QHT"m$RT& (؂*Ky6(Ew)l*;l+/16"@/3 $h~Jlp&_7rJg~]5$U3BFuLxHuj4v6 aWX]HALO4=6 ΢vKgBg|B P /-Aє`snxG-R99bb@xg$Ķ`0(ѨMW  h`"$P ]^&J~g6 (> /6`]a "Sg o?BPߟkMEEcҐ G*-Eڮ n0 ʟ ;k>Q FU+Vf`$ҕ`((T`"., nӰ `M4{ۤHpqLH}#z[1Xde. 9󎊕NDev$9p) YB  &Lr6:29+a,B(Q'CVD('&m 'cC^ [_d\p͌g>f6LԸ/&8 "+ '&f'l 8ԬP GQ䬲fH/h~BJ f44 E,/X !]f(:p 90,o>m.Q1kge(G,EW= Imgua,k\(ۈ&Ul8SDBBt.X$*6@?xHJ,3۫Be, tm 9fW @bkH@2C 6$ ыKа`Jdreu(Ff.JBfҒ`V/c=fٛe""HAб` hgHgHp%u s@TUlD v04*0 gAXA`" ӳ:"5txBA9xXYXFQC4F,Q ; IٚfZvj ln tg>of& MgҾѲGf/Bad?"H3sPPMLgV\b%8se ]J( XHCzcM#p̬3/DLY, g`"2g"e%D"гBQ`TwVs"7Q 10ѩ;"Гg+UJU^*RL@H Zfة*Dj«ּ(8N$PBջ[pz[kf;#Փnl#==$ _[JVg\"*$ن Szv)H4äR$@П"|⁝ BZ4S/"l@"  !s0]6`lNq'LfNua JIX0,D`8"ҫc R{{ "Uas "+3#"80UkU)fBgHiYs[MB6w"p~HPXF*v? 4`J`*_Kϋ* Ms͎Q@Hٯ;8"w7Urvv.WgrN!JfmB0x[up!CF.KPXNj&[Pv'p<>NAuswQSJJWSgR"OOk$Rig(JP <{gS8[k";W`9 m&zb `c|dEoԛtC¢9N@ p A"AJZ cp 0\޿#lfR>*4f ަ~~x#Һv83Zَk1EG=N?(/plيA$& "Ս2lbaj1qUqH D g&?2f3<'.P?LDKBQ6m(Z.n6@ 9R,kXy[*DH0?T8:X/h@<TũX P gK , fJȇh gL_;r8 ̪A5h@8Of<Jf>bgDf`qf0 @mS=j\]z` R(*0PV@TSr#}psΜkO`ށqrT /KД;x<4̅ k7.@BլDlOEO0ոþU:,Ƶϸ'Ck@fh?ue3ĸ(!D!a]") q~MH|@l(!CFd,0`w`/3 q)DkR@RAA<P6ba r`U^a@f0f*<$fx& ]3N@AR)NmpX+R8*B ?ާn`/6 O?[a97GY1۲.뎙2.a 9FBrV nXb-g Fefa>&E&Lpur>p$z l$ ֎SfӯŸU "(S/ˍ n1("[j& z 6?r8$gla O8U y)Tvմmvrաhff8p `3Rܦ$< @y:w`J= 1ƕyȢ3p K`KfBQm| B3z)v8 Nؐq”f/Y8[0Eמ"\fkXb us-C kmBX0`A  0 H 'X2:&`Vr W1xR|Rd<n9f#{Oڲg .$T 4됆9 t<q؎q&o0+V?BByvRB?jTUBkN0'XT[8[1ـ`g>`.0D?Qfx 4Qi)!,47Y&[F.,Mlj ôB+iwf3p rGݛRB)og-fP׉3e^R!>+aN7g1|Ē.֙ubQ/QWm  ՞ R@kFrdf>DfAHPHQ?ì?AJk"8kg-\pN Lt f"hCԉRA`HS0fYArr1~g$P 3ZI k ag3Vp_ JnkXg #rg`I2gj>dBVBմ%@)h3B( Bhp J0_og19u/LĶHvIŠ"pIxtr(_ɲ PP1yþsJk@ ngHz4$|dXB`(J?Hg"6"Ch,fp`7{PlŜNu{.PPDpvPx:A39`=@pqbfP1f0/UQx 4ve0•BBw@ >BcCgH*/<HEDE^E 2`g4 zf^bxf^ a?H8LܟRDGRCGfnNigD6 @${\VHĈ{xml\ 5OHHy ιv`LoH, ֜lxlpԘZR>/fbDp\$@8EDeSDBzal:"¸ CQkpa]_02 H?{8꾓XRQ8~=X oRڅjxQ*=z<;SFzpXWKXF.8`B(ő fBsetPg0 J$t"$Hٹ)^ bPE XUadTx8 IUMBPLRTS:ra*!xWZQgOr`r&1X*gL$8 ԱX"ւ1(g*a4f?x8Ndw"#ȑ/aaxE(HgQWXm+_/ "yD 9B=OJ1VVHQ"@Jg`"_Nu#JD@(@ENCJJT`EVuJxMШ /r@ Ђ8@K`;P XPN!)O/T jEm~>$Ж " 2))V <4~@*Ow\}fN h .(3b[U5_o];% 9'? PCIIJ] Kq7Axp-C7N Bt\=iry3s`g8xcӞD9SExv]".ub 3P!*zASM 8 hevnIGoٌnk3ml.3:CT^ \3/)ע8opX10E1{$ E?SSc|ng/$+/Zn2.>7to218R!3 X,BP -KPC2r |3qjmpObA&z$xx.$mqbE5x#aq, subqUui Obj#pvmW,evEʹ,[qJN- }@gXp>y> d(An;lT'1õnew;.gnPg|ڦqOV.Nrtőu&ϋ):dUkSe7([ _ذew)++u9 Lj[CY9Zfeƒ V3ImevZy->l [797a<P[udOpc])0-"{ʍb[L>Pok SymoIi3pilize ܃frf"-Ȧ w797j-l7pv-Es9 0a7-dmcø`-JAw!;Low7l=lfC-~XSpeci >oVBehɡ.CMqVuuȻ!Yas`tq!6+>S\<qF=ÍCjsKP )g+EE63dKmâ ًƸ-%w[F,Fc^0w߹t- 9dxb QO]Yޘ8/7nWXB*N]uP KVj*ޢ/?-Jo3O'_'B Upl\CceX ScvFμӔ7  ) `v+q <?h( 8s>)S98a d^' +AguHq: sr]fbU 09rN Dp. & um#LefǸargNHf@z3N9spoo?n\+&%:*Apv4Z B a4p*m>-28s|WȌf4ƥI*\e{6uޑh<nBuTs;ĤUx΅trukS!Z)b5ZEy*/df3,t fʀCRC~ie>q x +43EliK pF GT[Wr5opVUg@>IMedia WRdev#Syss mhchnik,ld f| |=lLs.#Y_zs VXsDlA:?LNQKRI"D' 4Si2p6 8'ZJcardֿ]V $Ux3mri2Ps;iAPZT~ gE7Fno$ %B U= xsSCII2ũ’ sp-3NfSr׳"ItabbV#1cنM%^W3MIGADz+s& KG* l4Kl>c xVTfd)e[ff Оp, (6 Text{ (M!se)Infv{y<7wr&AGiK}) >+?>8B4a9EN2}Kʘ?ii ư*SnScʳlng fnuXuchCliS4+=f+1N#{"y n)S(caf=5"61j@30 m;Onh$L 4Whi tBYD` & ,s2籜bEx%f Typ EmulǂDiskٟ rmmFMn#TOS7 R.PRkf" "v_+.t}&B.ۃ9&S6kRf5ahe|GFA-A56cA0R XFFKǑ` ^?X4Bb)-hs6 KByΈI09%jD'c%pr*"!cH-eǖ S6G *SymbR\Lo7apN mMogmObji􂙟y(IMG'" >bsolPިEw@AQay$ OnlGbal X Nd YV)-6x6~`= Cros^e)0N4bM>t[Pr,.!r CIc%8if7((Oput@w%I-rchi!:HHUUpdaBwNbbQAdd6GD[ ErasModuTab$jC"t5E7IexX 8cadyRx -Z<5 g __A >z "P9[-Changm痉 D7of Block till3Undo Rrr0 LineڏweP 0;*9R…LT@N^niYmW>~|"Ԥ5*zp2|Q~ gCjK8#j߳يY]Y Z?SSSO@OUJRP ?k .@ `& `^/  n?@ [>w1caB p 0!o"l%+ LJ_=p5X 88 ?Uن `/iIdZe`#a'Cp 7X 0pBPIOPP@^?zQUY!58A6%)J@1 }uAF#jB*g~5scY{5ֵ1u`k~ ~Xٌ~,110$7r<&d,Hp]]YdEB8sdq88\p?(?pb|`@@:@d9CZ$JHy 0@Hf0Sj&qW E3 H$P@ .a|!*dI.=7fV  ^a ^1^l3$UzD]B%ИƵsa@ D5V,֪2Fhp0:U\ր7$V>4JxOS3t\@ n°g_23ޮဒꛥh&:g&Ӻ  x)v#[ :`xS tׅbǜ/ һ|E .W)+xwhPպ%ඒy)VZ\E]L%hkru@+َVӜP̊ ; k6789PR( arHP4Y ["#$%&'(,-./012345cdefghijklmnopqJ$_ KC^dx Yga͂@pooBkSetup FauZ1Njufficie׬Memor#l <~RG2B;nY=>j9  nojklghi45'(GwbH.҂n!ogm0. #%&/-,2$1"@@@B@@xyz{|}~mnojklghiE K<@s!tSstjq_ mYM-⚙selectArAlPH5_aQɢ OGRA|Í3 NK4mUCCǼ`_LAp4bUMÉWJEMBw1LKD6RURa&{q~`F=81Eb!FF.U.JYxC6!CF.CF.CF.CF.CF.CF.CFG.6TQ%dTXTW+x %MdPRTSF10S`FTZW0^GU{PGDHHOMENM-C D[a!H+Kl*#!U+VlWXYZVM J[aN+QlOG6*- OdP34V5 [!7+8lKETM9BSPB1vOEY2@INS}fF67qW R*[CTRL7BNVSPLEFRIGHT}WORDD;𘖲B0'8X 0p8#1/%IIeV2ڂ x@lw?8"W̄<{kSavA8k\withvnsi'""Xf@DRtû頢_W0 fe,ExecJCF [Ta\K  o/+;. 5-# /UAB^r*T u<瀼,j+"T3*I];$us q` U4RHSSjS! $.*INFޝ̖ *eXԉ .BE;_Vag + ; 3Ch:Abor.Eo-t6n pPg; +dy !|O< put cancelled53Go on>a`Y XV(WaZ%+YfǺfRRPcWcV'cXJ cVcX5ccNcuegvvvyQxXEe;CĢ`&H_j_E%cźea}1 YPJb`YE}*|dZPȎČK0fMbbYBYbYSbX6#ffՃbVy*j*iTK_X&%GA ^ЀY[UBYWYV-YXeY.[P.IYAZ6[e\Be W2Y.XXf!Xm.~ Mø"NkYkN4Yn4 *)iT_mk=7BgBiv¸$v Xec\nm zz"}~Q}yQ-Y`y@[X[af#\ Ýj?ŝAa՝?L<~ 0P2d> ̽$Q¾duX.4,X`n/7DRW]h~цՖўѧ(ѐA:*.PRIKEYCABCFGTOS*MONb RUVB[Bc  - !#ASCII :Wr[ ꂿC\ b E^wk|eTP*T8W(.AqdA֑ k ^*R, eŠdY.Ǹl}b`UԎ,-T 2:"4`y YBR<๼, u*.Ybe`A"l +`JXpL5IucIVX4 l:pqHrv`^q3sWte[EtfF(<;A& 5.Ȕ,٠8B 2^ouA?V4֭YAvfp5 VٙqxpA]ElA6ŒX¨GFA-ASM:U^%>2JW,NVn h[ N-q3ABx l&nta怡Nk._|O <"nJYes[ No2\P $ss&ZlF\Y9=KMhP!OW A OI GJS :# OK2P k+ȄRdɄ*  !jDEiOPDterS>cen÷reak ontinue ? KFILExPRINTER|-> SCREEN3xN ~fPpSBbCVxaܸtk| J2xRЊrffj&g+mg . %ggUasg / YJ5hbrh%iXiWjSlkdJ_ri,lblJm j%j:em)_WYW_u$Xfbp:W$MZW[V'p HW%pa ,.l# UV / (ݭ Hs v + X, Kx+h ,FlElAj^[xxE-..A# b ,Hl! sAV@(ZgkX&E@N@F@ԉ@Z@P?J?Jd@+6@@*@$@@Wk>ZiuA`-iA5A՝AZAAAV- ZU(+AZhAAՊAV+AZhAAՊ>̘:A0 U(CA*A>JT(=@@E@BҪPZ@<@ A0>|A,pTwB%Be`C* V?C5`\P7xdA^ЇWG xA] u?`JV?V5?YJN?VS?xY|PR?e?B??=,nh@Ifoq C5DE*FHLIJVKKU4L*Lo NDVPdUtG`-xA^PgAPq] C\+Ta.Ț^o l7h s dA^Ї 3xA]m:0z\Pe^ bUfBjnrPv*zT~ 5ȄP*T~Y rBe@qdYtP+ (T(mYZ[BԻ ~Rx@z D۫w4B9H.*CT[ qUBJHcJ nb #rguntaBAeO~0aOp. vVulfp bu^eDZ3.!WEšXj.whz2kfdT<λIFsLWY$`R^8M/gsXITܼxk fk u2\ RiHHizQBrl&pC[' 8' ?.rM)C- t%]R/4er|ouCof Ra+I0Off.Ygit-6 Huv:l)Fs2xE# exp؆tSRT/FAIL*P{h"̜ orfwF*Ilgal pagQ<sAM`lV+"U&+baHKMA.ENDBBg䗕 $Et avaaYe#.St)YctiigYrCSp4 oo loType" ch'ded strUnknow{filFfoa Assemblrmdd@Le in .INCKDfrom disko CV8Ԃ P)b><=>=<>+-*/|^s <>%vBRBPEVB  O,  2OO?^#>-@+=.*Լ20` 3 Ӗg0K ϖ;m*T UʨBjNMLOQA T C;&pPGB φ"D/RWLOCAT0SSABSOLUTO@G.`xXTERN aՆ[8 ڶ`&TF3MODULEI$@C.̮~`V,$RARY-InfoqsK^1""Fremo)fx1 NAMALREADEXISTS!.  Existing anX0 x '0_=D( 4OK=vrCX0s!qfB@n2 ,dE*28XV0 @x E-ɌnPlvȣ,|%bTK Pjs`uI fS8>q늵 $v $7Phf}lnVI p>se3O:(6*Y{zqs RXYL7H +қr 3.+H1"'åf>X 7cce0jNHDeh*$,\3mzn hfiiI437Y[f̻o{8VbRڙ,.*uV(dLn5b˔3kx^3_+{nnɰl,4V*$.tbi*ٞ9㢮) _%f-{sVX l̨`2&HB?q8+"7 B~v  ,bˠ ;G ḙ `Y%a,B[f2(`P2s\P {/T&x,\̋D&4#VB{w [}N͂?졖AYFɸ]3Z.cܭV D [Rf!579ˆnְDa*sN16CY%7Z$a\Fkf[~y&g7] [] h3 Lr aR`Y6th]LuQǸ;3&i}O9G   5ٲ)FA܎a t`vj h6e;ka lnuq0n~{)]3ޠ\Ld+V% vƽP㼥KIf 0tRkrcu2pʋR1CG2:`Z`fO7; V+襇䙭  N}G,a3|e :7=NVE̤Nfuk[ʹf;t-g$*aI5.ex"t3l8x[t&zș,g5-tls],J & YCzSMqfCf2aqvED":r 6L*Duθ7 bN&@uH,5n<2}gI%"XBu$fh^aլ ^0a+;", O-X{$xdd\iyw ("Yp;ۙ+ͺ?HmCX4ۜ,VBae-U/U66+C!Y "5bf<̔f$8v 23"w- 5X*b,qn{^zE]0N9`9wv &7J btRu3咐q 2n5oBba~nHJ[S,fVTn 9vcn1uE,a,o7vex&7hlonZs@L_gp J&f5 w u-E`2U"%0#]M*2-be&qka`܈ >NGn2f`܈f#X6U^3k ( q<ꑵoV(79>bˁflV5Ylf8;Ғv(,{sZKl;"g}.P%xB]<ތCuBt9m8X° adf ZAƌ/fr1ꛔڀp~ Haq8l{ ">'v3G[4kK~uNM uV \6=׸0=75kffS:bd]L8gL.,޾b  XW5 r'uu1lrWPг3}qsp5M /f5,p^c~֪*tj^93($3wYr*jә̾keVf0[6e-mh(9#o;kzP@g+fEpCnr"&k8VD0 ]ErtBn#7NV-f`2",b\yr5R08@3MV)c!3$"@*d(ֽ06Ll`;@b[u1[΅3ljg+cFf~,4:.m+.'NYx[bffH>vf ( (kjN$&%eEhn.*값,fZHAd)),*(P-Q>6 @.ZOҖ,ap fJ1fVDµ -*"E IVZXX+A!U&FX,$Y Z[EQk9[AƱX=2}P$<f0:fbYq|@$~KH ,4,D濚v0CY4*rn^fn&`BfƜQX2(p(r " 6 6l0%LD L>~ F S O*|0l RI,fc* $}4͂8Zw3+uaF͒%Dzd3TZ9O,&/d"n yhQR+82IJ0m"'"[d (f&v>RXPT~q*"8&>fR\DDE)&(Raܙbk!$BBt&T #8! P 8D `f@V د[1",ͼd9Y#3 J|a<nրl$VXd2#d>,R"f`ΘNf2`dN؜ *S=`'AbH"Z ,[| 0:y+2}bAK(#F " *P6v6֜C0TvθMXssL"6dxX69'- brVV{MR 85vJuIC|du4XȽ$hIHHnNh 97H"rVN\LUŒ; z ^\we< :C;ΐTx$& x>z"YM ? xOJeD(% 9 %ұL1 "2,V"*4"P@XLk>< VaE -Aڕ8`.݁{uLeKQCV .(nV(P^38@X6aX, `&&8(PKDDd`aE(ex4eW,:\ V"5 mXJ%;bc&yG$$6(Da $@XcX>.t/n n 0s 04 P.`R ,2.,(A~/a\[@8ZxA^Ё4upn&P{㐥uK%&l *x.fL>6yQo"n)@,f`F ( lZHS-ASS.IS2 Documented system variables and port addresses MEMORY and SHIFTER:)memcon Memory configuration/dbase High byte of screen address.dbase Mid byte of screen address8vcounth High byte of video address counter*vcountmi Midbyte -"-*vcountlo Lowbyte -"-*syncmod Synchronisation mode1color@ Shifter- colour register 0-15colorBcolorDcolorFcolorHcolorJcolorLcolorNcolorPcolorRcolor1Tcolor1Vcolor1Xcolor1Zcolor1\color1^'shiftm` Picture resolution DMA and DISK:8diskctr Disk controller register selection%DMAmod DMA-Status/-Mode/DMAhig DMA Base and counter: high-DMAmi -"- : mid-DMAlo -"- : low 1770-REGISTER:8cmdre 1770/FIFO command register selection8trackre 1770/FIFO track register selection:sectorre 1770/FIFO sector register selection6datare 1770/FIFO data register selection SOUND CHIP:-PSGselec (W) register selection"PSGrea (R) read data$PSGwrit (W) write data1PSGtoneA Channel A: fine adjustment2PSGtoneA -"- A: rough adjustment PSGtoneB Channel BPSGtoneB PSGtoneC Channel CPSGtoneC%PSGnois Noise generator(PSGmixe I/O-control, mixer/PSGamp Channel A, B, C: amplitudePSGamp PSGamp 7PSGenvlp Envelope curve : fine adjustment8PSGenvlp -"- : rough adjustment*PSGport PORT A (output only)0PSGport PORT B (Centronics-output) Bits in "PSGportA":RTSou RTS outputDTRou DTR output,STROB Centronics strobe output)M= $40 ; "general purpose" output 68901 (MFP):MF Register-BaseMFPgpi I/O&MFPae active edge)MFPdd Data direction.MFPier interrupt enable A.MFPier -"- B/MFPipr interrupt pending A/MFPipr -"- B1MFPisr interrupt inService A1MFPisr -"- B,MFPimr interrupt mask A,MFPimr -"- B)MFPv Vector-Register+MFPtac timer A control+MFPtbc timer B control0MFPtcdc timer C & D control(MFPtad timer A data(MFPtbd! timer B data(MFPtcd# timer C data(MFPtdd% timer D data$MFPsc' sync char,MFPuc) USART control reg*MFPrs+ receiver status*MFPts- transmit status%MFPud/ USART data ACIA's 6850:.ACIAkeyctr keyboard ACIA control$ACIAkeyd keyboard data)ACIAmidic MIDI ACIA control!ACIAmidid MIDI data Documented bios variablesetv_timeetv_critietv_teretv_xtr memvali memcntl$resvali&resvecto*physto._membo2_memto6memval:floc>seekrat@_timr_mB_fverifD_bootdeFpalmodHdefshiftmJsshiftmL_v_bas_aNvblseRnvblT_vblqueuVcolorptZscreenp^_vbclocb_frclocfhdv_inijswv_venhdv_bprhdv_rvhdv_boozhdv_mediac~_cmdloacontertrp14recriticrethem_____msavpt_nflopcon_statsave_rosav_contex_buf_hz_20_drvbit_dskbuf_autopat_vbl_lis_dumpfl_prtab_sysbas_shell_end_oexec_oscr_dumprv_lstprv_ls prv_auxprv_au Device numbersPR PrinterAU RS-232(CO Screen (vt-52 Emulator)MID MIDIIKB Keyboard:RAWCO Screen (raw ASCII-chars from 0 to 255)HS-ASS.IS]+ ***************************************& Turbo-Mouse Accessory% 16.4.1989 27.4.1989+ Peter Holzwarth Frank Ostrowski+ ***************************************=This accessory installs itself as a mouse speeder. It uses>the XBRA identifications as the GFA assembler only supportsmouse speeders with XBRA.starA stac a_-E "Fetch vectors list from keyboardu processor interruptsFS iniinstall turbo mouse E & u   e_8 move.w #2,-(sp) ;invert screen> trap #14 ;test:then also e_t:B addq.l #2,sp ;move.l #$00010000,intinE movea.l d0,a0 ;(i.e. return very quickly)) move.w #32000/4-1,d0!.1: not.l (a0)+! dbra d0,.1@"iniFinstall turbo mouse Fold mouse vectorE olsave old contents*E turbset own mouse vector [finishedXBRAPHFOol)turbGsave registers required$%D Cis it a mouse interrupt? no %D C noEB x-movementEB y-movement %D B@0EB@0MB 0K0%D B@0EB@0MB 0K0!EBand write back valuesEBGrestore registers E ol[a_I   I  I  I  aes2e_E  intiEVNT_TIMER(-1) = never I  I  I  I aesI G contr E aesb E  u [;aesbcontrglobintiintouaddriaddroucontr globintiintouaddriaddrou stac. mx.. GFABASICPRG z$yGFABASICTXT H{VWINDOW GFA ql`$@`$Ewp3>pA N<:PDE`4~WbTNu??/a"DB`~WbTNu??/a"&8:HSHnghDBHngXDE~<En g6CDEDFGcGcGb8(vHDl`G8BCHC` GHD8HD쬵k&Dуd QRB BbJjDBNu ABNupN֓DjdDA@ cAр[SBoJjDBNurptNuH@g0J`Ѐ[rGoJjDBNu0ftNu@[rB oH@JjDBNuk(g.JBjDBAр[SBDBjNuAр[SBkNuJlNu0gH@rJBk| JkЀ[`DBЀ[`J.gPpr4<NupNJBgVB&8TTDуdQRBNua!JBjDBNugDBgkDE` DBDEaDBNugDBaDBNutNuHoHoE|z:g|HC҅H@:ۆ҄ۆ<HC>H@ЃdڼHA@B@H@хk HAҁHAрSB|bNuJBj4tNu~(WbTNu??/a v&8:HSCDEJEoHnfNupNtNugDEDBHngDBE|kQ*HEJDg?<>0rHGGdܼHGGdSWDуdi?<>0rHGGdܼHGGdSWDуdi?<>0rHGGdܼHGGdSWDуd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNuCEdмSW`?<,>CEdGeH@0r`f?<`|Aр&AdRAрAрDуNuprt|PQ< g<+g <-f<.g2<0< b<0e<9bda`RF`<.f<0e<9bdahSF`<Eg<efX<+g <-f<0e<9oSH`0<0< b&Hz<0< b E|o`\JjDDDS4<.aJFkSFk6aQa`(HL4FFaQ&8*L/a,H܆jDBJ.gtBnNu|?b4<rp¼Av JBlDBv-|JBgĴ|b̴|k(H>Lar C<5e&!R<0c <9c0`<R"_`VC0 Ef"_Nuaa/ Cr  g 00VJAgB| nN|mHJ@j0.4DBUBk0QSAg Q.`S@k 0`0BA "_Nu.WAkQA<0g`a'<|e=@NuaHjDBaDBNu|e|/d$AрQ4<`|Nu <r4<NutNuaJBgkpNuaraf pNuafafpNu>jDG|e|bFGNu||bFGNu~Nua.6jDC|e|/jC|@j| jr0H@{08H@Nur{0Nu{0Nua6j(:<DCaf AfBfNu`vr$o.b4< J@k @[H@NuH@RBNu4<Ѐ[NuDg8k2b4< J@k @[H@DBNuH@RBDBNu4<Ѐ[DBNu4&<ݳB88<:<aH L&<]:Z8<:<a*&::gֵ8<>:H@Ѓdڼ`HCH@:">H@`2g&HCH@:<HC>H@Ѓdڼ`zHCH@:H@r`hgDBgkDE`H@Ѓdڼ`HCH@:H@`..v.^.B. --# ?D;;<LLv  8*oM( N0#C~Ep4N$Q=| .`<.@`0:aOi\,NqN-|{-M̑HPHU-HBg?<JNANN?<NN-@>NN=@$Ƞ-IC"N4Hx?<HNA@-@ /?<HNA-@Oi\3.N0NRaN nJgJ~CN  g -Wf R  gSfNNasdJfNdk`Oi\B.{Bna4HTNNLa4` N,bNNPNa"nBn|a=|HPB.J.%gaM,AzNa4aM,`AjNa4B.BnAN gV_fLa7AN  g gPNN*QN kfFApJ.%fN`^Ap`HPaLAEN _N`Zqb?c0J9*fD0.PH|zg8||g2|xg,|g&|tb|`f(NKNp0+`NdJgp'`p&INNNdka*nP`aNPNBn%A>NNNB%>NBn#pa^pNN"EvfY2 Y3 v OK >QBHR$nJjg$_NuH LNuJ.BfNuPBHR$nJjf$_NuHC/*%I $n%_LNu,yOi\(M< {`N*L`Npn||ʞ|8*ʢr|fDf*Jl06Z@Z#@+j.*$+HMĔĔĔhi`hi(hiqsrsprshi`hi(hiqsrsprs X~4N,,,,,,V`#@fH8$XX#@XjPj inhn3l]+}|}}|ظزتؖB:ղӴ|\Z\Z]]54PQHI#@#@#@#@}}~,f}}}2l ~V~l~ F ~~*~@TF Zl&`ZZs*,,,,,33B3Vdn# .8<@DHLrPTX\X5ee00f8f8^t8`d^<D+JlB:26hvz{H@X\>lm[,[&`bb\$#@:#@al]]veahY#@"ca$`,``m(D &4+([[yXya$,pDtX6BJ".IIWNXXXXXXn22RZw>ݔdd6DDܞy6X;#@[",6[H[x"7w(x|w xvy$yuuuDqqrttttvp{~f~xP7B88#@#@#@v e6 ndC p0" V|*A"T Nu~?GG {pN~GG {p &HNp N6XFPh0 H b @@@@@@@@?++l'H'H'H# }(2Z  L'H 4`'D4=r45Bd'H<~><>?d?t'H<'H'H'H'H'H'H'H'H'H'H'H~ <5<5@5L'H'H'H'H 22MJMT'H3<<B=BLAAA'H'H# 3.'HFFx8xxx3'HV'HUBA4C2C$C`ICIZ>#@#@'H'Hst ss#@#@#@#@#@#@#@'H#@'H'H'H'H..#@'H'H'H#@#@#@'H'H#@'H'H'H'H'H'H'H#@#@#@#@#@'H#@hJh<hJFFHFFFF++++++++++'L'H'H'H'H'H'H-j-l-j-l-j-l-j=N-lgiHgh(qpsr0s"gh 'H'Hrr'H'HgiBgh"qjsr*sgh'H'Hrr'H'HpBNTNuHz(~GG {pN~@ RnX^@PFFL<djdpZv|>08@HP\ht+++8-D-$-*-0EECCC4=LEELZHZYv5,cc033344ZZLL&Jb6"6FJfx|222224,*j|4V20 @6Tpb,F  nH," &P$,,&III666b.cDcpc~ct2MMM0M*68l8r8x8888R8ax@%+Hd| %*NuB.%*Nua^&aր._fajNup e0@ n 0g(@NupN FgaHJLpNuaDBNu~GGA ppN  gNuR~GGA pp&HHNL8G` R `ܪR Nua> n0(n% HNua, n0(n% HNua n0(HNuaaaaa`B:fNuaXrNua J[HHNuaT|o"U@|6a Hz` X28VHHNu?:lfaF0| zZ0Nua|o6a |Hz` 08 dHKdHrNuaJgp`p?Q@,HyNM\NuaNua/a _Nua0Nua NuHz&` Hz$`Hz"a/a&&_?<&NN\NuNu6Nu&NuHz(` Hz(`Hz(aR&@?<&NN\NuHzG`pNup0Nu Nua(NuR 24Nua2HfNuabNupNpN.Bg`HyBga`a/a/a/a/a/a/a/aLGFEDNua/a/a/a/a~/ax/atL~FEDNuaf/ab/a^/aZ/aV/aRL>EDCNuaD/a@/a1ÉK1ÉHC1É1ĉL1ĉHD1ĉ|1ʼn JFk|1ƉNu|1ÉNu1É$x$f3"NuA`A gp00|Nu28VHHNu8L08 |hHNu08"|HNua gNupbN0:gHHNuP8 a8 NuHz`vE Rp"O$8J28$Nup.I$NupC `JVHHNuHzT` HzH`Hz\a &a~`HzZ`Hzf`Hz `HzaO68?<&NN\NuaJBgHNupN$H$& nCe aBd4 a2Aךf B EraEr $gbђXQNupNH>d d3 d# d# # d# # # # d ALH dAL H LH d AL`H L|0H>L|H>d~# # # # A`@ALH L|H>L|H>L|PH>L| H>L|H>L|H>L|H>L|`H>L|0H>L|H>QL|Nu$H$&"BA .a@XAf B E$fBBraEr $gdXQNuH>dd2d"d""d""""d LHC dLHLH C@d LHL|H| L|H|PCd~""""C`:LHL|H| L|H|PL|H|L|H|L|H|L|H|L|H|@L|H|pL|H|L|H|CQL|NuA*p0<rX0QNuaHUC"2<.,HdY3R*Nu2(g"P@g4RA<DAH""nr2gZA<e0 1@#-INu1@NuA*p2<XJX[j]`p+Na"ndpNH n$n"HgJ k&@ S`g6 k#&@0+Hd3 Hd3 Hd# Hd `# # # # Q&f-ILNua xJ@g:`Da lJ@g.0`6Ng Jf*.paFHG|2 Nu  @apa, Nuapa Nua>pa 2 Nua.pa" NuaANDBjDB|jt|ct|B 1Ap$aňS@kH2Q NupaHdHd `Q NuaaJjptNuatHPa pJk NuCg.BJ@g  g <&g,<$g<%gNNutNuRpt`2Rpt`Rptr<ae< <OgX<Xgn<HgSRB<ae< <Fb$<0k< c_< cb退`tSHka*NuRB0<b఼b瀀`RB0 fрd`a @HP"Xp0gr~ RAfS@n`1V` Nuaj/a Whd4a($ W PHd2Hd2Hd"Hd `""""Q  _`J Nua /aJ Whda$ W2( P"IdHdHd `Q  _"X2bP6gHRC<(D#HNua/a?p`a/a?a2fr W4(Ae$RBBc0?aN$2 W PA`p~AWbTNu/a` @"_HSHPHQ0(ika $It _a\IUd4Id4Id$Id `$$$$Q _Jf*a,Id4Id4Id$Id `$$$$QNuSaIdIdId`QNup N/a @a$I> _aG` VNu~ _a*4Ae4v` VfANua @2(g b P"H`Nu/0Ha2  _ PSAvjx E&Wf* <ae <zb< QNuaJ]@k 24|gB|JjDBNuptNuaY@k rtg|DBNu|NuaQ@k 24NuaHjDB|jtpr|c4<prJj</Bpa" Nua??/pa"" NupaHPa NuHQ?<,NAT _2X|a:0H|?a :|A0H 0 0H@Nu?<*NAT.p a, I:Vk2|a.0H|a.`2H|a/0|a/Y¼ҼdaHAa Nua*/a^2 `ar ?a2R@H`2Q Nua6 bNuag߶/a߰"gD @4(gHP²b a^$_// Z4HQ`S@Q _Q _ `a?ANBHP?<GNAPAN `Hp`ap/a:/a4 @"_ `a(/a"/aLL/HQa4 _/ ?a*0 _$gS@cY6 :fRS@g.t;ak&AA :fRS@g t;akIA??<-NAXNu !gac0ga %Fgk.tak$6g~ .fS@gt atkAg A .fS@f.`\t a\kVAgR6 /fJS@gFtaFk@JAga$Ha.LHP?.=hN=_2 "@$Y4Ad2`0QNu$HBJ gDBv ҁрQHANuHABAJBj DBaNu|e <rNu HBv QHBNur$|Bg|DBNu|NuJBjDBa NupNu|k|e <NuЀNuLp%H`aHN&g^(bRbLLHa.%N<jRGgVGg>TGjpN<.%NJogaANa`a6ANaJk -Ff\Nu fRp"Ma !g pCdaaHANJoga` -Ff\NuafJkDR -FgJg`aANJoga( -Ff\Nua.Jk R -FgJg`pR@0< gF< f`.~SgYf "gBpR@0<,g"< g< fa~ (fR~Nua ~ `a~NuHpa _NupR@0< gڲ< gIJ<"fR@0<,g"< g< fa~ (fR~Nua ~ `a~NuHpRU@a _NupR@0<,g"< g< fa~ (fR~Nua ~ `a~NuaJkHQ ! gRfa" _NuXX~Nu<.%NHSGNa0AMg< f< &_NuHPa2  _`Q`$0j \@??<NMXJk/._gp Nu<.%NHSGNa<,g< gAMf< &_Nu ."Nf +"g<,g`v`v??a?@aΤNMXNuDW?<NMXNua?k?<NM"|f J@fH@<Nua n 0fpNu\@`a `ax]@><CNpa\0.NHNua `aV]@><CNpa: .NNuag \SG??<NMXJk..._V t&_Nu nP hg hfBNu-H=|Nu<Fgv<e6C n 00g @~`p!Np"Np#N .g @aJkfRH=H -FfNu nav`4.A%Zf nLR@RANu4.g S@SAH%>Nutbpbr??papYa0a0`|Bn`pBn`p=| |=F|=@aH=A~`TaNJf\H@<RfF.ϰ<Kg<<Mg:<sg,<tg4.g.g<Pg<Hg .f`~`zSGjvRGFcp>`lAN< gt< gn<g<grffrnelnfJ.j6pRGFc$SG` J.jpRGFcRF` FfNRFpRGa`*NL`  `?~ap aLp aF0NuJFf J.gRF`|`LCpE`bf`FgRGJGgSGSFFgCpE`Yf`Nua@Jf gH@<fa(@<fza<0< b @|e0NuN._fJgNup Nu4.f?HyaNM\Nu=|%N`LazEfpa`ppa\ANEg0PaEfaBRE`ܾEfp ag8<_g>:3g@<+gN<-gR<$f<,fHQ!aRn%"_p$RHQa"_`Rn%`)< g<*fp `Jn%$jp-`Jn%$kp `=_%Sn%Rn%(`HL%=B%$jDBNlLx"nE0RJCfRCR@r2HAARACd `<Efr0Sb<Eg2<5e,!e<0R<9c0`R1R@0c JEr+J@jr-D@UEoJYEc0SEnHJEf<0SEH@HdREf<0SEH@H 0 0REfH@"n n% X%Rn%0n%cJ:g<_g :g<+g<-g HQaJL`Rn%`Jn%$jp-`Jn%$kp `=_%Sn%Rn%(`0@F@A Jhg PLNuNCNpHQ/Hy@NA NuCNpa.NNuHQ/Hy?NA Nu&g2|gagJAga2< R@AdSf0Nu0alp|e`&gD|gaNJBjaHgZAe|balJfBLNu R@Sf0Nu|gFagJBjaAea0RP0 pNupNּ|g6agJAga @eaRP NuHѨB?<?/?<BNAO Jk#LLNua|JBjav!| ??<>NAXOJkpNuN&8aPJBjaJJAg Df*ڃkd0Nu DfրBH??/?<BNAO LJk!@NuNLJg*HBHh/??<@NAXLf ѨLNuJkp%NHBHh Hx??<?NAO LJo ѨLNuk2:gJg3rNupNBHPHQ/??<?NAO _JoѨfNuBHPHQS/??<@NAXLfpѨNua*o&??Hn?<,NA=@>*NA=@>WNAO NuaԲrddXA H<Nuao aШNupNuaJFoHPJhja?<?B?<BNAO _*kBg?/(?<BNAO Jk NuNaoaJBkAf`a|??/?<BNA.k \Hx?<BNAO [HHNu?<`Bga@o?a<2JjJAfr`TNuajp.Nua^p.NuaӺ|A%NrAeA`?a0`aӔJ@g*?Cap0g?CpaSWfJ_Nua` aZ]@=@%NaPa -FfNu Mfa` a2]@=@%Na(CN2pa -FfNu Mfaz` a]@=@%NaCN"pan -FfNuaR Fg -Fg` -Fg -"gp,a 7f aDa`p"aa4ap"a`p MfRa҂dd&2A gH=@%NNuaCN"E p`pNpNB.=|%N`Ra~`Ra`B.a %FgR<Ygt<FgR<!g.<"g<<Wg<g<g<gaƂa\S`aF`.F@RCaJR FfNuC2 p`4 Ra`|p Cp`a @aBH .<.%NA$I"t Q k"RGef~`SG * g *fSG`<.%Nj^\FkFJn%g|gqj|gqbHS&I.aQ`p???<NM\Qj&_NuHQ/?<`aI|?Ra:fHPaI>Er$ļWgrSTD:grCOM:g rLPT:fVFA0 _=@%NT~J@k$C eA 0< BhaܞB2"NuA CQ 0 B2"NuApHPB2/ <Og.<Rg<AgF<Ug6<Ig<og`zp=`zpAHPBHQ?NA\ _JkNua/aGX$$IAHPB BaGLAHPBHRHQBg?<VNAO _`*.*p`p3abr FgaGSANJAg"0<@e2`QB :g \f RCf?9abHnN?<N /./?.%N?<?NAO _JkѨf^ n"[6\`$Y4jDB`Q]CnNu&ZRf`Q]CnNuabHP~"[6>X n`"$Y4j DB`Q`&ZRf`Q]Cn/. /?.%N?<@NAO _Jk ѨfNup%Na\AdghHAA HP -Ff P (R`aǾ&_ S2 Sb`v6a2<<.%N>`Ha^ n"n`HaL"n n <}aPLNup=alkDHQ??<>NAX"WANfSp g<\g <.WgJfS.BAKBHnN?<ANAT//Bg?<VNAO "_`BgHQ?NA"oPJ@Nu6`v n\CC p0 24Nu6`v ndCC p0 ` ^6`v n|CC p00H` @6`v nCC p0p` "6`v nhCC p0Jg <r4<NuprtNu6`v ndCC p0 Nu6`v n|CC p00HNu6`v nCC p0pNu6`v nhCC p0JVHHNu6 n\CC/00aL _ 00Nu6 ndCC/00aŘ _ Nu6 n|CC/00al _0Nu6 nCC/00ab _Nu6 nhCC/00a _JBVNu6`v n`CC 00NuHp8`6CC n`/00a _g c/"@0)a" _$PS@kH2QNu2(g"PRA|4DBH#"@$Y2Pg 1AHRA|%NuBhNuRanJkxg8|AfAD v\ p@"F`6vg6CTxg8Dr@A"v\ q0"q@  "002Nuvg6r@A2;N0 zr0" nlaHp` n\C/00Rv<e6g nla` C n\ p0"_  "  "Nu ntaHp` ndC/00Rv<e6g nta` C nd p0"_  "Nu na`ЀHp` n|C/00Rv<e6g na.Ѐ` C n| p0"_002Nu na Hp` nC/00Rv<e6g na` C n p0"_Nu nxa?Hp` nhC p0JgBgHPRv<e6g nxa|"`C nh p0Jgp"_2g fQPNufNu npa@ЀЀHp` n`C/00Rv<e6g npa ЀЀ` C n` p0"_ r2$v60!2#RA|g$@%RC|g$B%8NuatRHPa;$_ Z0AcA`QS@ QNuHd0Hd0Hd` QNuac4ASB Q`QNuaRHPa;8$_ Z0ANuvg6g npa.ЀЀSNuC n` p8NuaHP !gRaմ?g<0< -!faՠ? oa68Cc2SDĐDo@c2`QXNu\Nu".~C\pa:pa6pa2pa.R|pa$a"a apapaR|TCpaa`$Dԁee"RNuXNua>,aJj Nu*HEJEgpNua/J@gbU@gxS@g[@gS@gp@NaS@f/`vC8;0N@,Tx(PtvC8;0N@@F@f@@ L@@@B@b@@H@@N6NH`6C nd p0 RNu6NH`6C0@f n| p00RNupNpN6NH`6C n p0rfRNu60H`6C nh p0JVRNu6C n\ p0a` 00RNu6NH`6/ nta!RNu6NH`60@fV? nap1RNu6NH`6rf, naBRNu6/ nla* `^60H`6/ nxa"RJgNuNu6C n\ p0 00RNu6??/ nla RNuvgC<fC n` p0R`b/ npaЀЀ R`H~C\aaaaaaaaaa PTGaa~NuLdfXNuXRGNu6`v nla( 24Nu6 nlaHpa _ 00NuC p0/6gh|fa -!gh _dVNu`SNu??aSWgL/H` -!g`: -!g2T8 _*dUD*< c ІQNupNpNpNpNpN6`v ntah 0Nv6`v ntaJ 0Nu6`v na0Ѐ00HNu6`v napNu6`v naЀ00H`6`v nap`t6 ntaHpa _ Nu6 naЀHpax _0Nu6 naHpan _Nu6`v nxav0g <r4<NuptNu6`v nxaF0fpNupNu6 nxa*//a _ JBfNuNu6`v npaЀЀЈtNu6 npaЀ&Ѐր`p@2;N FfNuRRRRDtPRRRRh\RRRRRR|@pLRRRRdXRR0r np`:0r nx`.0r n`"0r n`0r nt` 0r nl@ pJhfHP?BgaDRo2/RA? - f8:E&<27P 7P`bn$7PbdYEf` RAf rЁЀ`$Ѐe "ЀeЁdpNJAkfgRer?DDЁatAaø8$HX :` SEjT"_$P"2trDDd0d d d` QjNuaDa DNu na\ n"ng42 $`gk.&Hg|f deђ$`ebѐXfNu|gebѐA``x$ n$n"Hg8" &Ak cѐ S`g"" k#&Acё2+SAI3 Q&f-INux$&ր n$n"HgR" k&Ac b S` S`g4" k#&AcbrkX`ޑ2+SAI3 Q&f-INupr<e2TtćB v(\ p"X2g6C/ !UAk$!Q"_Nup<e0@|G$vp\"r Y2g|$6p`g "ZfBQ` YH瀀aLL"nc4&$GlaaaaGaaA(`$[` .ϊfϊeNuLA .aR FfVNup@NaJo8H@< gvUg,]gBnVarJBgtLrЁ`2QjNuaL`"QjNuaL4H@0d2`a~@Ld2`aHA2L`""QjNua - g>??/a&8:BmnJBj efAc` bfAd 24 - fNua - g>??/a&8:BnmJBj bfAd` efAc 24 - fNup`py4aB - fNu/a2L @"C2(8) P"Q:De:|`VfAbCJ9y4gC @/a `p-#p #p aqNup<e0@|A/?;8aN2&N,p<e0@|A/?;a$2&N R8L`~ nlaLHPaH _ 00Nu~ nta4HPa _ Nu~ na HPap _0Nu~ na HPaj _Nu p8"X PfH(dHqr҄AĒ a _Nu" e" d` QjNupN nl~a*BBNu nt~aBNu n~aB`Nu n~aB Nu p8"X Pf(d^rҀHqHA a _Nu" e" d`QjNu np p8"X Pff(d.ЀЇЀHq.؄؇؄AHĘ aHPa"_ WBhal`$$Pt4(gRB|&D%(Nu np p8"X Pf(d.ЀЇЀ.؄؇؄HqHAIaI HQa _"_BBa]tv`$P4(gRBC%(\cNua@zByYZ. HoB. an. HoB. a^ -@-@v n"nE*p`$ k&@p0+R@De b PbP| nP$n hg0fQ|-H.z".fapANa&P}Jyf nvPbJvg`=@#-H#p4`.r][Return]a-CNua -C|^Nuv e6C"n"q0& g )Ff& Nuv"CNuBNuQ^NuP^NuOi\BaZ*L`a^a AN `AcFCN"[3][ g&gJf`Jj* fAHSfNuAd fJj<-TDd<0@H@H 0 0H@B`0@ nd pSNu0@ n| pSPNu0@ n pSNu0@ nd pRNu0@ n| pRPNu0@ n pRNu0@ nd/0af _Nu0@ n|/0a< _PNu0@ n/0a _Nu0@ nd/0a$ _ѐNu0@ n|/0a _PNu0@ n/0a _Nua/a&JjDDj DaDNuJkb dNueC"HAHABAЁNuDBaDBNux6o@|e*RCFCĴ|dЄeNu|/dHDDdRdQRBNu&<:<NgSC|bSCĴ|cjNu|cHDDdSkg RBAрjNu0ftNu| H@"jNuamNuanzNu0@ nd/0a W (p a/HRa$_%"Nu0@ nd/0a _ /HPpaHRa$W%@a$_%"$"JknNumNuYUQ Lp|2<"HٰQbYef(HNu"n] Q !k:Аi" n (]Nup"n] QАi n(]NuY -INup"n] QА i氡m(]Nu _$ne ad-J]D@5%NpNa@m\Nua@nRNu0@ n|/0a W0<pa?HRa$_52Nu0@ n|/0a _0?HPp a|HRal$W5@ab$_524"J@kBnNuBmNu"n] Q0!k:Pi"0an (]Nup"n] QPi 0an(]NuUI0-INup"n] QP0iam(]NuaeNuabvNu0@ n/0a WpaHRa$_5Nu0@ n/0a _HPpaHRax$W@an$_"JkbNueNu"n] Q!ke2!b0(]Nud$!e"(]Nup"n] Qe ab (]NuSS-INup"n] Qd!e(]Nuav j&8:~JBkJEkEffDbNu`rJEjEf춀fA`a: j&8:~JEkJBkBffAbNu`6JBjBf찃fD`p0@ n\/0a& W 00pavHRa$_55%Nu"n] Q 24a11!:!8!&!JBkJEkEffDb(]Nu-INuJEjEf춀fA`"n] Q 24an11!:!8!&!JEkJBkBffAb(]Nu-INuJBjBf찃fD`p0@ n\/0a^ W 00paHRaJHaBL855%55% j 24~Jjk`z"n] Q 24:!8!&!NJij`L/aJBg(_NuXNu/aJBg"nY-I(_Nu/a$&pSAkSAk0SAk SAj `/a _ Xf"HXjaF Gg$f IY(HNu Q`ز<Fgea"n`Rj&am°n`Sm`IJ<d dR$Nutg4B<kg$n$r tNu$n|$r 4HNu$nd$r $Nup4*]]fY(MNu lg lg l<fNu 9\g *@B\`Np)N/aJBf(_Nu/aJBgXNu/aJBgXNu/aJBfXNu*@(MT/ahJBf k(@Nu (@Nu(]Nu0@ n\ p 24a`0@ n\ p 24a11!Nu0@ n\/0aDB`0@ n\/0a _&8:N11!Nu0@ n\/0a _&8:NL11!Nu0@ n\/0a _&8:N11!Nu0@ nd/0a _&a Nu0@ n|/0a _0Nu0@ n/0a _rNu0@ nd/0a _&aT Nu0@ n|/0aj _2HJ@g0Nu0@ n/0a2 _rJ@gNuaF/a@&C"gpkdHöfiHNufnpNupNu&lDaDNuJnDkaDNu∶c`aЀDNuzxeփ؄d`ef NupNa/a& "gTkdHöfiH@HNugmNupNuz&lDaDNuJlDxeփ؄d`efNupNaNhHNuaFhHNua>xHNua6xHNua.(Nua"(Nua8Nua 8Nua/a"ANuaЁNua萁NuaNua܀NuaֳNuaгFNuaȳFNuaNuaNuaNuaNuaVHHNuaNuaNua@NuaNuaHNua|NuapH@NuahRNua`SNuaHa<.gf <r4<?k(SWgN`TL8HNLaBL8NRWgN`T&8:LHNaL8NLL`at|e&g(|bg.JBj SBa&RB`RBaSBN6tNu4< <rNu4<`Hz`Hz6 nlaNuHzaR"_HPNHz`Hz0`HzP`Hz`Hz6 ntadNuHzaR"_HPNHz`HzB`Hz`Hz`Hzb6 na*ЀNuHzaR"_HPNHz`Hz$`Hzl`Hzn`Hz86 naNuHzaR"_HPNHz`Hz`HzV`H?<NABW@|A:G6HS?<GNAPJf<\L`ANCH#E@fCJgf|*p" QBa@ep[`pZaHS/.Xakt-_X.0.#gLAN"Hg<\f`BCNAfSAE@p.gfBAfU .fB0.#NuGFA-BASIC3SAVE GFALOAD GFAASCII SAVE LSTASCII MERGE LST&|.GFAEa gaavCp aACEN J9j (@"jr$fCN <a"nJ9g B9"nP .\aТByByYZ0.%NA  fB fB|m<`Nu&|.GFAE)afgHza*BBAp BQaѴCNp a zp AOC۳elVfdCN <a PPYZACEN "Ҁ f "QCdb*"n .\a a6a J9fNup `p `p ?a`p`p?a0NNuByna~a`H=G%N0ANfNuS@|e0<QBHz`(_3n&|.LSTEaHgaQ`` Byna~a`$_3nApQpaS@gNu=|%NP?<,NA3>*NA3TArCF 0BBBBBBBXBByX"nPr I0|g|f4|ߴ|LLgj|PLgl|HEgF|FOgF|INgF|P fPY|P fQY|FFg.|LRg>|Ne|Nb|=B`-Hx`-H|`-H`-H`a=@v`a=@r`a=@`Rp  g<0e< cNuH A`=nrtJ|gUnta6a."nP|Jyng"n>4)J|g̴|-gJynggA:g|6g(|g |?b0 gSgSg`RG`SGSF?F3H J9fHQNN"_`FHQNN"_*nRL|g|f$Bo4<6<8<,LRBg DgCfLPHQJ9gJ9Xfal-M`HPp0:kaʾCN _ a"_<._gJ9f J9ga:`HyPY[&|.LST/.XEWa|-_XJ@fNua4aCNa.N< g< g< eaGN` GN"Ka  g f`  fENgEMbf  fV  fANr p g gfS g@ .>Nf,| NN* n(Pf=|P` nPf=|P`N*" gj(CN"AN  f |NR@=@NpAXCN0 Yf: eTV"ҀR|b=AN/ a"HH`BXQ I `aPRCNHS@0Q`ApppaU@gHTa(_Nu N,ca`(a6NdkL` .gNp(Na`2Ndja` a0gANS@|e0<QBHTaBy(_NuPa0gANS@|e0<QBHTa8`Nu <.LST` <.GFAAMBJfS"H .gJg :g \frQB ICNNu0)|߰|L g&|L g|PAf HahaL`PX`QX`BnRn .xg2 @a0  Tn` .|g @EN"J4 a CN`pNuEN<#g<\g<< f Nu0.HdJ@g<0B@H@ g<0H@<0`p<Tg<Dgla`<0e&<9b |<0e A<0e ANuSNu nCN$I f  `Fa<\g< f` n fNuRJ0: aXJ`(RJ0: aJ`AN:g ..NfSNu$H0.vGHCN0.` bQ0.gB .HANgp` aZaf"H _2.t J@o1S@SAf "_0:k` bQ.< g8e  g* HPa$L Gr 0.g ANe G` CN ._f adž0.R@=@nte aa`NuJng .|g"0.ntgCN2 paDRn`a`bBgp FfR`p a^paZpaV`0paPpaLpaHpaDpa@p a< dr.QANT@Nup%a o"X aڌ`p!a o"Xpgp`p&a o"X0H`p|av o"Xp`p|`p&` p!`p%`p$aXp(aR"o Y"X2g@ !H@@9qfSaa"HaLSAoH@@p,a L`p)apNup ap@`p$ap apFapN`p:<:Wap a~Jg~ o g" nP cR hg`Nu<.%NaJhgNuX`INLINE LOADINLINE SAVEH&|.INLEpЗfEag0 <.INLapПfaTLa`>aHLa`.LNuAFpCpQ$nP8<:<<<LEdDfNuFba`HIA0CFpNNTa/a/a/N\ "_ _o4" $IdLb&d d `    QjNudd `QjNubX`aa^/aX"_`aaJ/aD"_<.%NN\`(a| n((@؆*. |؆kD`(aa,k..*ڼB(. ؅kl/.?<INA\/?<HNA\JgF n$n"y۹ۮۮۮ-D `&bۛp0R@|b CX` /. ?<HNA\p=NOad?a/a/a na,/J a$/J a/JNx?<KNA_ONu$H @a J4<Bc2QBBNu <r4<Nu <r4<Nu <r4<NuaHANuJ.%aHNuHz?<&NN\?<%NNTNuBxNua/?<HNA\Nua/?<INA\NuazHBg?<JNA Nuaaz. -FgH@aVLG| -GfH@N..RLAc.܆܆ n|Sk|&Y24A|'b6<IdIdId`Q  TF`HAP"n a0L < n|'eH@"Kp0aL n|`"n `XaaٜH@aLG| -GfH灀N..RLAc.܆܆B|z&n`a(JgRSjgH r<.%Na L `,C>r Fe aRJf 3PREfU  fS C>HQa$_R@Hd2Hd"Hd `""""Q\NuH@a L,zNu<.%Nk&a /"K <PY[aQY[aNupNapApaފNXHyXQ{a´`a*f"a NHyX#\-L-Lv|}NupAp2a:S@Nu3._gNx_Vga_ga6_g".ah_g".aZJg_3Nq*LNJ.^fag`_Nuk".J/g B/a8NuB B ANC%VfJ/g B/`8"L igF ig>HNNLp".f=n%P%N CNa0y4fgpQNu~`aRHg"=G%PB_3NqNua0-Cf_3.NuAbBBBBBBB._3.NxNuAC g#P NuAC f Nu?/Ne4T`NpNuNeC!H,yAp<f J.^k3Nq_ n!|v |eC!|.`"XLv:g 4zg8Ag61 <cg<Jg<;e,<]b&<Te<`<Db<; g f <g< bJg fg fg,HC#0z ` Hx Dg;0\!YBj@1BAf gbШ 3Nq_An gdBB3Nq_L@Nu wHHKMPPR g*g$n``bBy XB@etAg1B# `NHCHSGvg*1B<f< f&< # XB@etAf&_` Bn_Nu-nrnNuBf_Nu-njfNua-CHnNua -CHbNua/a"Ҁ$aZfprtNua@`NuaJrQkH`aJ` yb"XLpAgڲPer 1`a&Hz ?<&NN\Nu| yb"XLXB@etAg1B# NuaS@?a|0|b@A|erQBNuBy <". n҈Cp"Q p"Q""#ҼB"BBAp BQCAFppQB.{B.^aAzbB\a,Bna-n n .g0rd0d d d` Qar`A NuLg ҀfXNu".C\papapapaR|paaaapapaR|CpaaA Nua"nP0<rL R@fSҁ"yQ-I-I nP8<z<<><L ¶Gg,Fg2Q`L „D2¶EgQBaBNuL „D2¶|,gQ`Gv?"NN @A C0#P B?< NA\#/aZa?< NA\Nu?<"NN @!y$ THz?<&NN\Nu#,Nu?<"NNT&@/&`B,pa,J,ga&ALH CDpJg XXQA# >< x hg.($34Nu*06<BHNTLH!`Hx`(Hx`"Hx`Hx`Hx`Hx` Hx`Hx !4VxH A3 Ni LH,yOi\|1R/9?< NA,yOi\pdzNH,yNLxNp"A ӘQNu($($P$x$4 LL!LL###$LL"L#L <Nu :Nu :Nu :Nu :Nu :Nu :Nu :Nu :Nu :Nu :NuA$ NuN# @N?DJAfCNuNS@jp` tb@tbxA@A$0HNuaHPN. _0Nu .ЮNu .Nu .мNu?<&VHx9`?<4Hx `?<(Hx`?b `BgpJygpAoN|S@f*NPNa"aHz?< NA\N@?<LNATNufC2A0AT2r22N"< 0<NB0.#Nurt=@=A=BN\"<$psNB0."LNuN.^=C>`N.v=B6=A:`N.=@4N\"<psNBNuN.C(2| e$|bA,0A2r22N"<0<NB0.$PHNu&0D4(*<B$,>2::(   F..26"8@"PQ1!P1P!0PP`0  q#0.HNupNup`po`pa - fNu?N.vH$(0`pd` pe`pa`?NH$(0`p?N.-@$xf-|F$x0`|N# &<x:<NLNHJjNuN.H@-@$(p`HNHNHG-F$xf-|F$x-G$DH?$8LH$(pa - gL~$R/H> a a `*Nupj`p?NH$(0`p4`p#?N.?a=_$(`0NHalL=A$(H$xp"`pQ`p `pn?aJ-I$x0AHPBat _NuNH$(ppa^"g".$ - g / a Nupq` p `p `p?NH$(-B$x0`p)`p` pr`p2`p?N-@$x=A$(0`p-` p!`p `p?N-@$xH$(0`p(`p*?N-@$xH~$(0`p+?N-@$xH$(0`N-@$xH$(p8`N-@$xH$(p.azL$R`N./NH$(-_$xp/`Tp3?N.?NH$*=_$(0`4pk` pf`pg`p5?N.=@$(0`NH?$(pl`"NH$(ph`pM`pO` N.-@$xp6aL$R  g* - g /H8 a a a a NuRNupPAN-H$xa/ .$xN3 a NuN-@$x=A$(p,`N-@$xH$(p7` NH$(pFaRL$R - g// a a NuNH$(pG`pH?NH?$(0`pI?NH$(0`pJ`N-@$xpH$(pK`pL?N-@$xH$(0`N=@$(-A$xpN`NH?$(pi`N.vHN# /aR _H@@N?DJAfCVLH$xLH$(EHRBEHRBpyaN _ _NuN.?N# @0Ha-I$x=@$(pz`N.?a-I$x=_$(p{`HUN# aANH$xAHPBp}a _ M*_HP .Na0.$PH*_NuN# @HP"X2AN-H$x|erQBp|a`N# /N# /px`FN# /N# W"X2/ @$X4AN|derdQBAN|detdQBpZAN-H$xAN-H$|a$ANJfO  _aAN`QANJfN  _aAN`QL$P`p`"p`p`p`p`p `p` p`p`p?a0_00HNua @ ( NuNЁNup`"p`p`p`p`p `p` p`p`p?NЁ0_1NuN @! Nu?<"NNT @#!|Nu?<"NNT @!z4Nu#H,y nJhg_3NqLANeC!p`pd?N.? - g8NHN-H T-_ P=_ L0?.@r tar0.@=_@HNuA `0p 1<Q`p`pertaD0.=@=@@`p`prta(0.!LHNupw`px?N.=@ L0`N.?N# =_ L/rt0<aA!NBh@pR@JXf _aA!N`4QL!LNuapA LtBe26`0QBXtptaL!L - g/LLHHyYHp`NuN.^HN.^L Ԁn ؆n$ցn"ڇn&oJoz`zHt`<>Hz ?<&NN\Nu nLLJFj|@c<JGj~Ac>02 h|N nHHNuNa -FgN.|@;`Hz?<&NN\Nu| |4Vq<B(B(`N\N.va n"h $h224NuNa n"h 22HNuN-a n1F$1E"H&a^1| NuN-a n1F2!E.1D$a8H&Bh4NuN-al n1G2!F.1E$aH&Bh4Nu8A0L0L0L0x````ANuNuN-a n1G2!F.1E$><"h3A!@ a n1F(RFFdNuN. a| n1Eh1DZ1BN1ALb "nC&10$CBh$1|jBhr!jLT1jPXj$"jH@1qHBhJ61hH1CP1jRRBhf1|B1|D1j>\1j@^1j:`&*6HC([fv!Cb1|F1|@C$!Il1|@pNuN.B nH6NuN.vHaha&I>`Lxzpa n hP.SGjO NuN.n% NuN.n% NuNn% n% Nup=CLrt`A pBXQpapB% papava=|LBnNprtaBLplrtapapapapa,pa0pa4BLp'rtaf nCLB2SY2SY=|L0<rta>paRpapa`v !g$ %FgJN.&jD@ava -Fg, !g( %Fg N.=@LBnNprta -FfNup !g %FgN.?p -Fg FgN.=_L=@Nplrt` !gSa|NALI0`0Qpptajp`jN.vh`vN.v`lN.vj`bN.v `XN.v`NN.vq`DN.v`:N.v `0N.v`&N.v`N.v`N.v`N.vC=CLrt`papap? !g %FgN.6a %FgRTNupapa FfNuN.=@Nprt`N$&`N.^n% n% n% n% HLH prt`N6ALC1=@01=@WCk1Qrp`"N.^n% n% n% n% AL0000000000prt`N.vn% n% HLBP=BTBnVp rt=|`N.Bn% n% HLBPBT=BXBnZHLp rt=|`N.^n% n% HLp rt=|`\N. n% n% HLH0Lp rt=|`2r`r `r?N.^n% n% n% n% HLp tr=_`N.vv8<`N.Bn% n% HLHLBPBT=BXBnZp rt=|`N.^x:<`N. n% n% H0LHLp rt=|`|By GfR?.?.RyaF?aL?Ry -Ff yg T4:`Nq?/t`N.v`Ntn% n% =BLHLpgrt`pa&pja p a !g" %Fg&N.-@Lrtp a -Fg Fgap&a=n"V%D=n#P%F=n#R%HNuN.Bg?N# /N.?@N# @N?D, > _N?D4$FAN0||[000][vx`*<[g"<]g<|g QSx` xQSrQ][vx`*<[g"<]g<|g QSx` xQStQ]BAN0aHNnaHLpirtap0."NNuN|???<NN\NuN.^~GGGABBC`pNp`p`p ?N..fTNuba??.% /Ra??.% / Fg/N.oN.o.CN _<0aCL _<0a 4r0`zڇ|gk0F2TQNu F2TQNu 24NHF2TQNuv<e6Cr@AA\ p p8 hf X eRNupNpNN.|=@#pN`&NALI0`0QtpoaHNxN-L% HIHIHIHIE$4 RCL%bEPB@@HƜCAAHǞდ 2 ІQ2 @`ЈQЂ2 @`ЈQмZ 2 ЇQ2 @`ЈQЃ2 @`ЈQмZRIcprt`fN.rtFSggRRfNu$n\eN<d-JaBb% Jg(CNup\B.{Np!`-np]`aJ.|f .Zzg .[zgB.z(n Ff(nNup`pv e6C֮ C/g?a nc*2 ng|f` `JfY-H`Jf a`flJfN;v(_B.zNu&n .nN< .bpZNvC2;0N-K FfNuX:4444x444444T64444tN6C nd B& &6Nu6C n` BB[& &6 Nu6C n| B[& &6Nu6C n B[& &6Nu6C nh B[& &6Nu6C n\ BB& &6 NupZNg _3Nq-K*@XN.z-KAiXf J.|gN fXNu&n0#f #o-K(@Nu|gG`T-KNuk c | gT0f #ox-K(@NuPp0 cgR@|"D!`aHp N. _ NuaRNutrg4A v\B 0 gRNuaRNuvrg6A v\fC 00<f @ Nu?Nq2|eg QAeg|gЀЈNuЀЈNuЈNuЀЀ 0Nu$n\eN<d"-JBb% 0@ n 0g @ (Ff Ffb(HNupN FgL @0Hp\a(_Nuj-< g,|@4; N <2gS  f#&Nu:4444bBFF44FF64444^>N0Jk"n\@HqHPN# _??/  fSab&npЮbN<pЮe( && _& &6 -KNupN0Jk^"nd@HqHPN. _/  fSa&npЮbN<pЮe( & _& &6-KNup*Np-Np.Np/Np+Np,N0Jk"nh@HqHPN# 0VH`<0Jk"n@HqHPN-^X`0Jk"n|@HqHPN-t _?  fSa@&npЮbN<pЮe( 6 _& &6-KNu0JjD"n`@HqHPN# _/  fSa&npЮbN<pЮe( $_e6Bk K0*N$RHd2Hd2Hd"He`""""Q`"Z&p0P7@g R@|#\ _& &6 -KNuS  g$j|@2;,N(U  fj#&NuS ( fR#&Nu|@pL $0dX<x<lH ,`T80"n`r`:0"nhr`.0"nr `"0"n|r`0"ndr` 0"n\rtg gpDN4B@Hq/1 Ra&npЮbN<pЮe"_ _& &6-KNu0"nr tg f4RR`0"nlr`0"npr`0"ntr`0"nxr`0"nr `pg0@ d n` n 0g @HP$n\eN<d\-JBbB _"H Xf^ eRR #g* #g gHU*HN# HaL*_Nu #g -fbHQa""_R y&R`].n%OH (IEi\ \eN<d"n-J5<%Hd2Hd"Hd `""""Q eRR #g* #g g n0 "`k`!MN #g -fHQab"_R`pENN# e0$@0*N$RHd2Hd2Hd`""Q `N# HaL$nUJ&"Kd?"Kd/"Kd `/"/"/"/"Q-JL0/H=G%N_Nup-@$-@$-@$-@$=|$p-@#phaL#H$JKBCH%A'0 1PP1P1PA$L?$<@>AFGH 0000X0000X0000G$~A#0g0  piaN QNu MWfRN.Jf"?S@k:8L$fBfC`2Sk|t A$ $ %`|TNuN. S@k*|> A$1EH`fHa-_% TNuBn#`N. -Fg.?NJWgL$DEFbGcTNuH%a0S@k|> A$P޼'ގ"G0(<JgRJ)@g1@C#2fP2HP"$"%pda W0.#1@A#00 pia=|#@#pia _C#""pe`.=|#=X#HPpia _C#2""piaݸ=| #piaݬ=|#phaݠL#H% P%P%BH%.SBSC@AHLH%6p=@L0<rt`ݠN.S@k| A$=p#fNupa(pa$pa paL%6ra`*N.S@k6| A$=P#gBPpfapga=| #pha=@#f8Bn#a0Q%BLB% `ZXNurt`rtH`N.S@k|?a8L6BPA' E$G#66&:|NexMQBB*g piJn#fNuHS&I.|V%8.%F:.%HL%24.%>RBĴ@cBn%>aL%24.%@RBŴAcJSA=A%@`@pJ.%frJ%Bk8<Eg,2.%D<pg <qfL=A%D=ALpjrta `8a`2< d.<V%Bg"< gt< gZ<gn<fPSn%>jBn%>`D=@L0.%>n% =@L0.%@R@S@n% =@Nprta۠Rn%>0%>n%2eBn%>aQ>j4&_NuBn%>`a*X`Rn%@<%@SFEn%4eSn%@`NuN.S@kN| A$C#0g8?a(=_#p =@#phaL#6FgaLp `p`p=@#pk`ڶNup-@%>"<$&HLA-H-HBnLpmrt`Hz ?<&NN\Nu nMNJDjDxJEjEz0oxDhk@ol2ohEhkAo\H 8N-@-@ p-@*-@-@ H0H00(L=B=B&=CC=C=C$tBft=B=B(NuN.S@ A$00HNuN.A$ʰPgh ghgh$g0<NupNupNupNupNuN\Hz ?<&NN\NuL%6 nMN(8N-D-D x-D*-D| J@jpJAjrRBhe4(RChe6(@otAop=@=@NN.`pH@*A#0.0CL000H?-|F#paӮL#H$PHVv3DLHd"aVHd"aNHd"aFHd"a>Hd` y Fg"`,2:WAARA0:xAi\ hfRAS@f3D"g$$n\eN<d-JBb% (ANuN.@k0;HNuX@gAi\ Nu <FNuN.Bz`N.BzAC|HdXC|2H0`(N.vHpA`Ap` A`Ap4.N| g=BNu((?<NNT. n0(LJvA HA HNuNAHN# /p -FgN.|d _&X PdXNu6:8N\?<NNTHV nMN-@ @6H H00(L=C=B&<RF<>RG=G[fx-KC=C=C$tBft=B=B(tFJ=BBBB*Do>Eo:@l6Al2DDk =DVBnDEk =EnBn@cVo Acno,_Nu=@La _N?D]Ak024Ex$|b5B5A6||5CK5C:8ALB0000DkxEkt00AL<:D>:BSFSGFn\GnXDDk0BhDEk1EBh Fchh Gchh0hb"0hbpmrt-|-|`PNuN.^CBHN# &@N\?<NNT-@`LDbFEbGBj=E\=D^-|XBTBx n0(L=CR?=BfC=Cd=Cr@dnAdjED??RGRF=GN=FPtGJ=BttBft=Bh=Bv|OpЇЇb KN222-InHVMN,_Nup NT KpNN# @ <}N&IaN:rN# @&XaI`N\?<NNT @"K <}Nu @HPN\ _"X0|Jg2zf.HPEJH LppJ$_44&b'JJ|NHD'BNNupNup e0@ nt pT"X PfXLNupNp e0@ nt p"X PfXHVMN$N 4 4 4 4 4$ 4 4$ 4 4 4 4 4$ 4 4 4$ 4 4 4L?H?,_NuN.HV,@,_Nu   FgVSN.|gS@ H{ -Fg`N. W@ -FgL Mg8N. W -FgN. W HAA20i0d R@`RN. W?< NN\ -FgN+(Nu0^ M / haw FgSN.FA  -FgfN.A ff f -Fg"N.i -FgN.AAHP \0\ `0` d0d` prg0@ @A4;A\ PN !gNuXXXXBBXBBNu"X0gBPR|"D#Nu"h P`BfNuAaAaAaAa nPBBgKp0(H|e|g$|b|d``b2;N&J0XRvvvlll666X&`pHP?`h0|f"_0#Hѩ`|g Hya!`"_!I`60|g |g|f"_0#Hѩ`Jg|bg:|dg4J@gHyaX`X0|f"_0#Hѩ`|g Hya;`2"_!I0E#J`0|g |g|f"_0#Hѩ`ް|,gB|.g<|0g6`L0|g |g|f"_0#Hѩ`ް|&g |(g|*f|@1@"W2(igHyac`0|g |g|f"_0#Hѩ`ް|2g |4g|6g`0|g |g|f"_0#Hѩ`ް|8g |:g||pg@Q@k$g*Q@kNgHya`6Hya`.Hya`&Hya!`Hy``Hyao`Hyao`Hya _O~Nu _f"_#HT/?<`Hy``V _f"_#HT`Hya`8Hya`.p fHP?2(A"nJf#p` _ fX`Hyb`r( (eA(A"nJg Hyb`"0ёJWg\`R W gJ W"gB W$g:g HybF`Hyb%`(t(gB( e"n`"nBJ fR# `f<(t(gB( e"nv"`"nv$BJ f# HP?`Hya`Hya`2|"g|$g Hyb`\`|"OYgtJf`"O Y gbXeHyb` nPp2(|g|gT|gʲ|g`~O n"n`VeNuvC e6C"n&10xȃDNuag"CgHPbI~|L|gL|gF|gF|(g8|g2|,g2|Le ||e"|c&e _g`BHybg`RR`SS`Sj`a^g:D|1D~"CL|g@|g:|g4|g.|g(|(g"|g|,g(|Le ||e&|c$`JgBHyb`\Hyb`RR`Sj`p`k}>VVVVVVVk}  c>VV------------------------1aa\aaGbHzHxNyNpyN-n%J#=@#=|##pa„NӴG:-K$xpN S f0+| kLg<Gg<<Hg ֲ<Kg<Mg<Pg<Rgj` gH@JfH@<Gg<Hg<Kgr<Mg<Pg<Rg0<agl<bg <sg<tg<wg<;k< e<e<<bx|?a0a^0@0{N t 6  Z   fa* nXPg0.S@k=@`taj"9 n"nTS0 j|`-IT#a `< fra`0.gBna~Bn nX hg0.R@nb*=@a 0.ANJWfnԑnjBn`taa 4`C0gS@2njvSn`LCAN0J0g\R@2nְzeLRn`"ANpR@Jf=@ABPzvk0`a`a`46<8<:<(<<|eDFU><LCf1DEf1FGfN|`^J.f& nXT Pg Pg Pg P(g Pg`x|f P`|fx P,`a\ nT2."n, .9UAp6<4gjC`Q4jC`-HTU* #`ANb < g< f< eb<gJfB`.jCLEKg"fBnLPRn0.ԐnְzeRn`aAN@`rA2;N@D x@ P\v  &@@@@H @@@H`Vza<0< b @|e0gzAN< g`$Cd0S@kZ|2nd=@`k@Ѐk~0J0f|d B0R@r@f2nְze0z=@`2J0gaRApAfCAN`ANCLEKg"f BnLPNu0 0 fa`S@k 0 gR@C`CELeBnLPNu0.g8CfPSnSnjBn`CJgfP`.fANJgSnp `J.Ng aQ`QJ.NgaAJf0Bna DBnN0.aBn`l>.g.a^Jg.f=|B.NBnBnRnR0.Ұnba` Snaa nX-HXBn=n`B..g a"-nX`A0g ?BPa =_`ANBh  gSJgJfS fB`RHP a6$_B g kPJkaBg nX.k2>(|g(|Wg|W׾|faJp0AXN:` n 9ЀC-I-IN:r n 9pCN00 YfF eTV"ҀR|bl ?.N=@N0AXN8>HS@"HBYQ0` AXN8CNHS@0QBn>kaN.AN0.` ZN|`2Hyp`HypQCNpR@gJf=@Ԑnְze0.Ԑ|aBnABXP-_XJjNuBnap?a0HQa J"_0R@ncNuHp&HagaN`aLNuQJj PNuC 4F.kC $A pQa`J"nA}R.O|\fY"nP`4 j Aµc4 kgRFGd b n$I=F-JT #`aR$nT n 90.Bn"nP2<gS@g4 j Aµb`µb n$I-JT #`"nP$nT n$2<p`0jA0kg bg$IU&#NuaaJ`Ba?9NByNaN|3N`pa` apN`aDa@ka .X-@-@vaFNHz<`>RE&4gk JRjRE4j|`vSEUrt¶GbK00oSgYATAQ g hg#-IX4)FgXGb J0 ScUA?aTB B gRB23g*k(|(cr(B0ENbt b`-IXaffNup|?HyNM\Nu0.a0.AN`"nT I$n( 9:<"|gZ|gT|(gN|gH<"EƵb nPE pt8<g0(аDbH2oUk UBf=BNuTBf`Ept8<g0(аDbH2oUk UBf=BNuTBf`"nT4. 9$n2g\jJt|2kg&2jtvR|`-ITU #A>|bK00oSgYBTB=BNu-nXvHaeL|Hd.U@k\eRAg||;H@B@/a `RAf ` Fala -nXv-nX.n nd-HNuTAfa@aZa,a`R@fn`` 0y4P`zarEbHnHnB`aEWrHnHnQpz?a d2p z`*a(EVBB JpJrzta^apENgt‚ЀҀЁ`&"nP n$2<Sk0gjASk 0kg`-ITU #`B~B/.XBXa-_XNutJ.~ft JRBJfEc4=B z 9 f|HL a: oaaJf n(g`0./:Nu/ oa L 2.AJ@g< g< g<gn<gH<gZJ.~g |0e2|9b,J.gEdRnJ.~j|g|f:Rn`RSAk=AJ.~kSf`J.~k`BnBQJ.~jO NuH@<Kg<Mg@<Rg`SAkJ.~j |g|g=A`J.~fF.`EPgb`EdJgJ.~j (:fRnRn`HPa&Ac(pN|S@f _NuInline | Load | Save | Dump |Clear |xxx |a n h,C GfX FfR AfL -fF :f: &f4pg<9e_A|退A`# |  o AbpzGaa޲aJfH n(g(fLHU@4.if H|be ;`xLSDCxpX?ab0<ae< nXX eTV"T<agB<Lg"<Sg <DgL<Cf`BQaN`ߞp `p HaLa`6H@ajLHVNeC!,_a$`H@p aTL|AN"H0ab:vg  0UGj |f a<`ax?&D$6x@|tALERTADD` ALINE ARECT APOLY ACHAR ACLIP ADDRIN( lADDROUT( lABSOLUTE+AFTERATEXTARRAYFILLBMOVE {BYTE{ BOX> xBGET<BPUT<BOUNDARY BITBLTBSAVE(BLOAD*COLOR CASEp sCONTz xCONTRL( lCARD{ CHAR{ CLOSECLEARJCIRCLEFCHDIRnfCHDRIVEp CLRtCLSv)CLIP~CHAINfCALL0CURVEL DATAxDO DEFLINE*DEFMOUSE.DEFLIST2 DEFMARK4DEFNUM6 DEFTEXT8DEFFILL:pDEFFNrDEFAULT DECP KDIV DPOKE ~DIMDMASOUND DMACONTROL DOUBLE{ DIR~:DELETE 0DRAWDELAY DEFINToDEFBYToDEFWRDoDEFBIToDEFSTRoDEFSNGoDEFDBLoDEFFLToDUMP:DATE$=0fELSE ENDIF ENDFUNC ENDSWITCH ENDSELECT ENDWHILE ENDDO ENDREPEAT ENDFOR> kENDPROC ENDSUB EXIT IFV EXIT IFn ELLIPSENERRORV EDIT ERASE 7EXEC EVERYFOR& FUNCTIONFLOAT{ FILLX FIELDFILES$ FILESELECT$FULLW^GOSUBztGOTOtGEMSYSGINTIN( lGINTOUT( lGCONTRL( lGET.GRAPHMODE, HARDCOPY HIDEM\ HLINE HTAB IF INC@ KINTIN( lINTOUT( lINT{ INFOW(nINFOW #(nINSERT 8INPUTINLINEB KEYPAD KEYTESTKEYGETKEYLOOKKEYPRESS KEYDEFKILLfLOOP LET LINE6 SLPOKE ~LONG{ LOCALjLPRINT^]LSET` LOCATE ~LISTfLLIST fLOADfMATPMONITOR`.MUL MENUZMID$(b|MKDIRfMOUSEMODE< MW_OUT ~NEXT> kNAMENEWd OPENONGOB_NEXT( iOB_HEAD( iOB_TAIL( iOB_TYPE( iOB_FLAGS( iOB_STATE( iOB_SPEC( iOB_X( iOB_Y( iOB_W( iOB_H( iOUTfOUT%JOUT&HOTHERWISE OPTION4YPRINT&DPLOT ~PSET {POKE ~PTSIN( lPTSOUT( lPROCEDURE PUTHPBOX@ xPRBOXD xPCIRCLEJPELLIPSERPAUSE POLYLINEPOLYFILLPOLYMARKPSAVEfQUITj.QSORT KREMxREPEAT RESTOREvRETURN RETURN" RELSEEKRESERVE4RANDOMIZE.RBOXB xRMDIRfRSET RENAMERCALL.RESUMEREADRECORD RUNaRECALL&QRC_COPY:vSWITCH SELECT SWAPSUBp SPOKE ~SDPOKE ~SLPOKE ~SETCOLORSEEKSETTIMESGET (SPUT (SHOWM STOP SYSTEM.SSORT KSTICK SOUNDSINGLE{ SETMOUSE SAVE fSETDRAW {STORE$DSPRITE2TEXT*TRON0TROFF$ TOPW$gTITLEW&nTOUCHgTIME$=.fUNTIL VDISYSVOID VSYNC VTAB V~H=, VSETCOLORF WHILE WEND WAVEWINDTAB(8 iWRITE@WORD{D _DATA=N { ~ FORM INPUT2  LINE INPUT4 SELSE IF END DO WHILEb DO UNTILd LOOP WHILEf LOOP UNTILh ON ERRORG ON ERROR GOSUBGON BREAKG ON BREAK CONTG ON BREAK GOSUBG ON MENU GOSUB GON MENU MESSAGE GOSUB GON MENU KEY GOSUBG ON MENU BUTTONGON MENUG ON MENU IBOXG ON MENU OBOXGMENU OFFZMENU KILLZMENUZOPENW OPENW # CLOSEW CLOSEW # CLEARW CLEARW #" > PROCEDUREl > FUNCTION RELSEEK #SEEK #TOPW #$gTITLEW #&nTOUCH #gDEFAULT SELECTX MAT ADDPMAT SUBTMAT CPYXMAT XCPYZMAT DET\MAT NEG^MAT ABS`MAT NORMbMAT READdMAT PRINTfMAT TRANShMAT CLRjMAT SETlMAT ONEnMAT BASEpMAT QDETrMAT INPUTtMAT RANGvMAT MULxMAT INV#M'W F(#) *+--/,!;"==->< <> <= =<=>>=<=>:|@(.(,+,@<<=<>==E=<=>>>=*н0123)=9}=C]=D)3ANDAND(ABS((ATN(,ASC(CAT(YASIN(AACOS(RASlARRPTR(мADD(ADDRIN(ADDRINADDROUT(ADDROUT APPL_INIT()Ї APPL_READ(Ј APPL_WRITE(Љ APPL_FIND(Њ APPL_TPLAY(Ћ APPL_TRECORD(Ќ APPL_EXIT()ЍBIN$(sBASEPAGEBIOS(UBREAKBUTTONBASEBYTE(BTST(,BSET(-BCLR(.BCHG(/BYTE{tCOS(*COSQ(}CHR$(BCVI(KCVL(LCVS(iCVF(jCVD(kCONTRL(CONTRLCONTC:uCRSLIN8CRSCOL9CARD(CARD{sCHAR{aCINT(gCFLOAT(nCOMBIN(DIV DIV(DOWNTOIDPEEK(@DIM?(QDATE$~DIR$(DFREE(SDOUBLE{]DEG(gDRAW(EOF(#NEOF(NEQVEQV(ERRORERR$($ERRXEVEN(eEXEC(_EXIST(TEXP(/ EVNT_KEYBD()v EVNT_BUTTON(w EVNT_MOUSE(x EVNT_MESAG(y EVNT_TIMER(z EVNT_MULTI({ EVNT_DCLICK(ЎFRAC('FRE(GFALSEFATALYFIX(FNFLOAT{\FORM_DO(Н FORM_DIAL(О FORM_ALERT(П FORM_ERROR(Р FORM_CENTER(С FORM_KEYBD( FORM_BUTTON( FSEL_INPUT(ЮFSFIRST(FSNEXT()FSETDTA(FGETDTA()FACT(GOSUBLGOTOKGB=GCONTRL(GCONTRLGEMDOS(WGINTIN(GINTINGINTOUT(GINTOUTGRAF_RUBBERBOX(Т GRAF_DRAGBOX(У GRAF_MOVEBOX(Ф GRAF_GROWBOX(ХGRAF_SHRINKBOX(Ц GRAF_WATCHBOX(Ч GRAF_SLIDEBOX(Ш GRAF_HANDLE(Щ GRAF_MOUSE(Ъ GRAF_MKSTATE(ЫGDOS?hHEX$(HIMEMIFZIMPIMP( INKEY$SINPUT$(^INP(#MINP(JINP&(#INP&(INP%(#INP%(INP?(]INPUT`INSTR(DINT(%IBOXINTIN( INTIN!INTOUT("INTOUT#INT{rINPAUX$4INPMID$6KEYKILLLEFT$(:LEN(BLOC(#PLOC(PLOF(#OLOF(OLOG(0LOG10(1LPEEK(AL:LPOS([LONG{qL~ALPENXLPENYMAX(wMID$(>MIN(uMKD$(fMKF$(eMKI$(bMKL$(cMKS$(dMOD MOD(MENU_BAR(Џ MENU_ICHECK(А MENU_IENABLE(Б MENU_TNORMAL(В MENU_TEXT(Г MENU_REGISTER(ДMOUSEK<MOUSEX:MOUSEY;MENU(\MENUMESSAGEMUL(MALLOC(иMFREE(йMSHRINK(кNEXTNOTOBOXOCT$(ODD(fOFFSETmOFFOROR(OUT?(^OBJC_ADD(Е OBJC_DELETE(Ж OBJC_DRAW(З OBJC_FIND(И OBJC_OFFSET(Й OBJC_ORDER(К OBJC_EDIT(Л OBJC_CHANGE(МOB_ADR(пOB_NEXT(OB_HEAD(OB_TAIL(OB_TYPE(OB_FLAGS(OB_STATE(OB_SPEC(OB_X(OB_Y(OB_W(OB_H(PEEK(?PIOPOINT(HPOS(ZPTSIN($PTSIN%PTSOUT(&PTSOUT'PTST(+PRED(aPADX(PADY(PADT(RANDOM(VRAND(RRIGHT$(<RND(TRNDUROL( ROR( ROL&(2ROR&(3ROL|(6ROR|(7 RSRC_LOAD(| RSRC_FREE()} RSRC_GADDR(~ RSRC_SADDR( RSRC_OBFIX(ЀRAD(hROUND(pRINSTR( RC_INTERSECT(SGN(dSIN()SINQ({SPACE$(SPC(SQR(NSTEPHSTR$(STRING$(SHL( SHR( SHL&(0SHR&(1SHL|(4SHR|(5SWAP( SHEL_READ(Ё SHEL_WRITE(ЂSHEL_GET(ЃSHEL_PUT(Є SHEL_FIND(Ѕ SHEL_ENVRN(І SCRP_READ(Ь SCRP_WRITE(ЭSUCC(`SUB(STICK(STRIG(STOPSINGLE{ySTE?SCALE(TAB(TAN(+THENJTIME$8TIMER>TOGTRUETRUNC(&TYPE(оTRACE$oTRIM$(TT?UPPER$(USINGVAL(5VAL?(IVARPTR(лVARIAT(VAR2VDIBASE(V:V~HV_OPNWK(iV_CLSWK()jV_OPNVWK(k V_CLSVWK()lV_UPDWK()mVST_LOAD_FONTS(nVST_UNLOAD_FONTS(oV_CLRWK()VQT_NAME( VQT_EXTENT(W:WINDTAB()WINDTAB*WORD( WIND_CREATE(Я WIND_OPEN(а WIND_CLOSE(б WIND_DELETE(вWIND_GET(гWIND_SET(д WIND_FIND(е WIND_UPDATE(ж WIND_CALC(зW_HAND(#bW_INDEX(#cWORK_OUT(WITHrWORD{XBIOS(VXORXOR(\[[P]Q_DATA^ {p}XEOF(#NLOF(#OLOC(#P AT(zSUCC(PRED(p `p`pa̼|b2Id;|g~Nu;If~Nu3333333333UUUUTDwp  ""! JKw'Qxj}GA A9"ApINKNfp <zb <ae< < fANNuR  gNuCP2 za NuQ*#+#*CPBaa#*aaZ f$E10<afEA0<~af E0<xagbkfHPaZa :g, @A o"R"@$HpR@ " gR< f _ CNR@||b2Nu.z z0NuCNut<Ef< (Nf4 (Df, ( g ( fV2E RNuETt@`&Et`E66|Ak|bC620E(HpkFGe>Vg ( g ( g$K L`S+2+2+0+ETNu2E3+NuB*HxHQHPB%R~p b.<f@aJg`lP$_ f .eCNuTng,TjTn g`S`Z`0HRHQHPE`0HRHQHPENJgP$_ g&<g g geRR` W"o`PNuaP@Vf|cXXe#*Nu<Ff !f nBPg<#*`Gq|@`8G|`0%RgN-H%Ra0||Akؼ|dGF<3`G(HrkKeVg&M L`|*HNu MNu-<-*H (Ae6 (Zb.<c(<_g<.g<0e<9c <Ae<Zb|Nu~"Nupb`pf=@PB  g Ug( Wf@ Hf If Lf Ef  gSNuTnPR Nf Tf If L`~Nu ( g  fRG + f~NuRptRB0 b ЀJjR`tptRB0 b瀀 eR`NR<Xg<Ogʰ<HgURptRB Fb"0k  c_  c退eRSJBk|NB& dhS)``a^ &g $g %g "$ &(**,.246688l :4<DHJF.0jjjprtC!C/ O! ' ~+ R3 L3 ! /! /! '4 ! /! \ D R!  ~ `!~ O!U!U> U!R! \ O! 3 U! ` ! ~!~ DE DF     P h 5\ #f  h= h!! cqcuvwx<~ :~ :;~!<~ <=~!>~!>?~! ^^_ vz ~  ~ v|`~ a~ CU`sk aXU R U U tU ~~~   !U!F~R!F~~<~ P F P FbFh*F1>1"!"!qF~MUFqqFMMqWqYU &q&q~!*&q~7 0f ! ~ FF# !7~HP  gS =g W _Nu n&PVNua !g ,g ;g  g 'g"~Nua"N@%-<Ae<ZbvRCg<_g<.g<Ae<Zc` <0e<9ct<{gr<%gV<$gT<&gB<|g@<!g2<#g> G"f8.%-; `.t`t` t `t`t<(fXNuSNutNua"N 9b 0d6`~`~agSJf~Nu~`*~`&~`"~`~`~`~`~`~` ~ `~ `~ af<~NuagSJg<g``agSJfNt`avgSSf8t`AP0|g|g|g|g |6g|fNuP*<d<g<g<Ff"HNu<d6<dd dRVR` Hda`\`a`Z`<gF<gbF<f g ` fP`a< `a< `p`rEN|@@G(s*s~tRGdFtg@gI `6SC2040Vf|bWa@`G_G`HJyNgp(@AL [2][Cb|eCc|fCc|fCbf| ?|t`SB[kEE(f`,# $ % ! #($(%(!(& \ : &(\( $ ][Ok|Error]pALN|S@fLJfSATA|J9Y[fN A8@p0N8B0&HLJfSSAQA`pN8J9Y[fNL`(HKݳbSNu(IK$eRNug g ` fP`taR `haS `\< gNuB9Jt<"g<+g <-f F9Ja`<&g^r<%gr<$gf<0< b.rt@p<0e"<9b<ԂiЂi ԂiԂiԀhp?NuJ9JgD`rr<XgRr<Og0r<Hf<Fbΰ<0eȰ<9c<Ae_<e`<0e<9b<e`<0e<1be|`r< gr<"f <"fbeX(`HPaaҲ<g<<,g<)g<Tg <!g< fvSA& dR)B"~XNu~ _NuHPaza<fr`p`p`pKNuAP0|xg|zg ||g| g |@e |cNu|g|gz|&g|>gBNurp&;.9K@gC`BRC` Xrp>;@gF"HNuBR`r;6(gC EfBR`>B (EfRC`,Nu  p`Q` <e<Fgt<e<d2<d(d" ehR`" d `T` ``<g4b<gp0?HqpANH<G(23gGږr`<Ae <Zb.%*Q0H2IE|2f |g|g|g|g |g|6g|db|be|hcT|gN|gH|gB| g<|g6|g0|Xg*|g$|g| g|ng|pg |>e|VbX| gȼ|lg|&ef|xg |zg||f`|>eV|VeX|@e|cf|e,|b&2|j|I|d|=%,Gp3`p<Fgt<7g<d<dG2I3g @G (23g@Gr`<Ae <Zb.%*QGp)2I3g ` gR og* R"@dp` Q!  g`  B"_TNu< f`<g:<g <g0b<`Z"pgS@<"WfQ"`R 24aj`r<e2|@@E$rtIdId`QSBR%-J.%*gSBk<Ae <Zb QH.%+ft.%-HPA0 _gPg; g;g.%,g(B.%,`#$%!#($(%(!(&|&(|($ 0 0D8@&<k g Uk.g.UgR 24NHa(`R 24NHaN`R 24NHat`lA (0<BXQA (Cpk$r11g|A$ )1C`A(Cpkr1A1$ )1C`A (0<2f1hQA(0<2f1hQA(Bh~Bhxp BXQNuSk(g=@AĄCdE^GIjK<MFQNPRFISU[WKXZy\S]_^`Rb cyd݉Pf9:gnhdj7kYl mznoqm>r us ttuavw&IUGj -FfNuSGkpg< g<gt<Pf<Ug <DfQ\`P\`<Cf <Ofa>NH=@LprtNb`<TffaH8`<Lf<TfaDBL88/N.`԰<Rf <Tfa`ܰ<Ff<DfaHafHLL8a&/a>L8a.&.Dg L0HaL8 a H <ПaL8a&.Pg L0TaL8,aH,aHPJ.\fprtNb`<Bf<KfaDB`L<Mg<DfZ<Ag<RfҰ<MV<AVaHLaJgL8 ajH aJgL8,aTH,Jg`b<Sf<Xg<YfaJBfpHP``aJBftHD`/NL.Nu/N.NuL,an% ?L an% 2NuJBkRBNHdRNuSB`tNu -Fg 7f RN# ~NuN&I>SGk< g<,g<;gSRG K /N=.JkȞHNuN.rd A LNu.\f <r4<NutNuN# H N# H,N# H8NuA#]HH a,aBLPNuH aaLPNu pANpNpg0@|YA;AAl p"p Y Qf//  gRp mfN.cp N=@HS@M<rfdRt<eBRB|AA\ p p "X Pf` <bPAN| g kQ`2Q`"Q FgN.d/@p -Fg0g0@ nt p$X Pf d/@ $@zlxd fzoxc&_"Sp~| eEKDDRDtDD Dl|fLp/HzH .rMfCT`"{p8, g| {pNu__~^^ ^Z_` ^^"^r`l^^]^HL4 fd$R$&k(*ڄNdNjRofNuH]Le(*NdN$&Rgp$(؁*Ne*(NdN(*Ro2(NdS(So&*NdD*RRNf$f$SB`S(l//"a R"mxNupЂmlNu,..3xhNu,.*sh'xh'xNu,.*sh'xh'x*rh%xh%xNu,.܆އ>3xshNu,.܆އ:sh7xh7xNu,.܆އ:sh7xh7x܆އ*rh%xh%xNu3X3HNu,.*rh%xh%x3HXHXNu,.܆އ܄ޅ܆އ(sh*sx<3h>3x?Fc>HHnHSGk Vf>FNuTNuHANpr,.܆އ܄ޅ܆އ(sh*sx<3h>3x?Fc>HHnHSGk00Vf >FLNuTLNu,.܆އ܄ޅ܆އ*sh'xh'x:sh7xh7xNu,.*sh'xh'x*sh'xh'xNu,.*rh%xh%x܆އ*sh'xh'x*sh'xh'xNu,.*rh%xh%x܄ޅ܄ޅ*sh'xh'x:sh7xh7xNuv" [0gt@C!(Q꒼jNuH <3Ho">3XoDFf,3XHf<3XsHL0Nug">3Xl Ff,3HXf<3HsXL0Nu>3X||F`missing Selectmissing EndselectMll - Editor Fehlermissing Wendmissing Untilmissing Loopmissing Nextmissing Whilemissing Repeatmissing Domissing Formissing Endifmissing IfExit without loopmissing ReturnProcedure in loopProcedure redefinedmissing EndfuncFunction in loopFunction redefinedmissing ProcedureLabel redefinedLocal without Procedure/FunctionLocal in loopFunction redefinedGoto into/outof For-Next, Procedure or FunctionResume in For-NextResume without ProcedureResume in Functionmissing FunctionNew VariableNew ProcedureNew FunctionNew label New names [2][Clear Inline ?][Ok|Error]Division by zeroOverflowNot Integer|-2147483648 .. 2147483647Not Byte|0 .. 255Not Word|-32768 .. 32767Square root only|for positive numbersLogarithm only for|numbers greater than zeroUndefined error Out of memory Function or command|not yet implemented String too long|max. 32767 characters Not GFA-BASIC 3.5 program Program too long|memory full|NEW Not GFA-BASIC program|file too short|NEWArray dimensioned twiceArray not dimensionedArray index too largeDim index too largeWrong number of indicesProcedure not foundLabel not foundOn Open only|"I"nput "O"utput "R"andom|"A"ppend "U"pdate|allowedFile already openFile # wrongFile not openInput wrong|not numericEnd of file reachedToo many points for|Polyline/Polyfill/Polymark|max. 128Array must have|one dimensionNumber of points too|large for arrayMerge - Not an ASCII fileMerge - Line too long|aborted ==> Syntax error|program aborted!Undefined label"Out of data#Data not numeric%Disk full&Command not allowed|in direct mode'Program error|Gosub not possible(Clear not allowed in|For-Next-loops or|Procedures)Cont not possible*Parameter missing+Expression too complex,Undefined function-Too many parameters.Parameter wrong|must be a number/Parameter wrong|must be a string0Open "R"|Record length wrong1Too many "R"-files (max 31)2Not an "R"-File4Fields larger|than record length6GET/PUT|Field string length changed7GET/PUT|Record number wrongMENU error?RESERVE error@Pointer (*x) errorAArray too small (<256)BNo VAR-ArrayCASIN/ACOS ErrorDVAR-Type mismatchEENDFUNC without RETURNGIndex too largePMatrix operations for one and|two dimensional arrays onlyQMatrices are of different orderRVector product not definedSMatrix product not definedTScalar product not definedUTransposition for two|dimensional arrays onlyVNon square matrixWTransposition not definedXFACT/COMBIN/VARIAT|not definedZLOCAL error[FOR error\Resume (next) not possible|Fatal, For or Local]Stack ErrorbCommand only available on STEdGFA BASIC Version 3.5E E| Copyright 1986-1990|GFA Systemtechnik GmbHf2 bombs - bus error|Peek or Poke possibly wrongg3 bombs - address error|Odd word address! Possibly at|Dpoke, Dpeek, Lpoke or Lpeekh4 bombs - illegal instruction|executed in machine codei5 bombs - divide by zero|in 68000 Machine Codej6 bombs - CHK exeption|68000 interrupted by CHKk7 bombs - TRAPV exeption|68000 interrupted by TRAPVl8 bombs - privilege violation|by 68000 Machine Codem9 bombs - trace exeptionGeneral errorDrive not readyUnknown commandCRC error|disk check sum wrongBad requestSeek error|track not foundUnknown media|boot sector wrongSector not foundOut of paperWrite faultRead faultGeneral error 12Write protectedMedia change detectedUnknown deviceBad sector (verify)Insert other disk|(request)Invalid function numberFile not foundPath not foundToo many open filesAccess deniedInvalid handleOut of memoryInvalid memory block addressInvalid drive specificationNo more filesGEMDOS range error|seek wrong?GEMDOS internal errorInvalid executable file formatMemory block growth failure[1][Do you really want to quit?][Yes|No][1][Program end][Return][2][Stop program ?][Stop|Cont][2][Printer listing ?][Yes|No][2][NEW - Kill program ?][Yes|No] Syntax Error Line too longp e@R@ nl p"X0|g|f "$Nu"NupPNN[Hz`HzjaS@f. 9pSkL WN"22`&(,:`2.:` WN*چAX 00ReR._gJ.^geXNuH@ .g @pdN=Jjp#Np"N  gS ,g nNM`RH=H`H@NLbANpdN=Jk  g`N[aH@Br FgNHrLS@f,. 9pSk 24aZSkp,a``&(,:`4.:`(*چAX 24a$ReaV` p,a\eReNuH@JrgH%LrNGN\`N"HN]LNuH@Cp` H@Cp`,pWNpUNpVNaU@f FfHAfp<`62RA>`$(؁AH(؀EH& $& $RAނBeR@܂BeNuH`@alU@fLAfBfv|`*p~`(؃*ڀ%HX%HXR@ނAeRC܁BeNuN# N0@2AfγfJ@kAe2@ <r4<`H0/8/GDc.H:/F؅:/Fօ!H8!H8RGoeRFoeO"Nu0/2/FAcr0/2/FAcd~`N2/6/GCcH0/8/GDc:H:/F؅6oH:/Gօ!H8!H8RG0oeRF0oeO"NupQNpRNOa/I?@0?A*?B$Ra/I?@2?A,?B&Ran/I ?@4?A.?B(Bo6Bo:Bo>BoB0/*2/$LLp0SFSESDgJEfzJFfto,fxo.fp?@80:HgSo80/$HPP/I?o,<<:&gSo

$HSB2. 6/.$0/,Hրև"C0 QRo.Q?B"RB?B J/TnUBkgSBg&BoJBo2B44/ H/B8?o2@8/2Hد4CHLHJAgJ/Tk$P$HA>/2?GB?GD?GF?GH`4&8:<jDF>jDGFn mefAc "$?oBF?oDHRoB>/Bo e0/2o"eJ/Tn@ 24 o82o JdDB` &8:NLSI6 nOP _ 00TNupVNp2/ \JZgR@8SAnNv` 24`CLLaHLaL8DBNN4HA:HDNLCLL aL@aHL(aLaL8NHLaL8aL8NH LL aL0aHLL(arL8alL8NHLLaJL@aDL8NL8 `" nЈeN<epNNu&(* <r4<N&L0a"o>:gC"22OPNu JC`a"oE>:gC EHLa%@H LLaDB#@H LLa|DB$HLLah"HOPNu JC ``NL8N0"22Nua$HA "o>:gC(L L8@a HL8L(aL8DBaLL8@aHL8LaL8DEatLL8(aHL LaL8DBaF>:hgPLL8@azHL0L(afL8DEaLL8@aLHL0La8L8DBaLL8(aHLLa L8DEa>:gPLL88aHL0L aL8DBa~LL88aHL0LaL8DEaPLL8 aHLLaxL8DBa"OPNuOa/I?B U@fAfRa/IU@fBfo f"o6:CC0a.$HSB2Cg 8/ H0 QQ?B"RB?B 0H/@8 Wa."H0H War0/HL` S@jUBkgSBgRBoJBo2rx:/ oL4BJp jB64/2HւL 8<jDF>jDGFnmefHAHCAbHA` HC "?DJRDEe.4HAH6/28/J:E1PD1@ ؄/D<0/2HAp?@@oJg* LL8NDBH!8/@H#HHHRo@80/@o eL8a8/2Hد<%HHHBo@8/@o2gjHAHد< 2HLHH BoD8/DoJg,H 1HLHL8 N0&L0NH!RoD80/Do eRo@0/@o e~Bo@0/2o@g.>/@Hޯ< 2xLxL8/N(%HHHRo@0/@o eRo2._gJ.^g^0/2o ev oL"o:|g 0R@HJGgPt:E:0P8D80@H؅"H"HRBFeRCFeOPNupXNpWNAsOk Save Load Deflist Editor* B&* 6"$,< 2  ~R   0tbZ,@&FܺhFV n xH << &&  6P,|D0@  J $> J<&6$:  "D|  Fp"6<( ^$686 "蒀0,D  d xL4NT:F0Z  8"   66 &jJ ,4^ F@0 B  | <&(P>> *0"" .& X80:$6*:,B@   "(8 ( 0 vrHV(B$T$ $@$F02n&4N<B>j66`*X.20( (,n "ڶX R^FDL&>* :*< ~ 0Ԅ >J2 V0 XfT(4n&2f:hlF  H"  FvHB @*8nJƪ$HRj*0>*8$JbFth. :zLnL6N `. L* j,t^`~<,n8 R ,4 Lt&  v26@ 4H*h0,,:0 & ,:R806B($ T XAugust 1991 No part of this publication may be copied , transmitted or stored in a retrieval system or reproduced in any way including but not limited to photography, photocopy, magnetic or other recording means, without prior written permission from the publishers, with the exception of material entered and executed for the reader's own use. This version created fot ST FORMAT. THIS IS NOT PUBLIC DOMAIN. FULL COPYRIGHT REMAINS IN FORCE. MARCH 1992 Copyright 1991 GFA Data Media (UK) Ltd Published by: GFA Data Media (UK) Ltd Box 121 Wokingham Berkshire RG11 5XT Special Offer to ST Format Readers This document is over 129 pages if printed on A4. We have documented all GFA-BASIC commands. All commands are also contained in the full GFA-BASIC REFERENCE manual which contains much more information than is contained in this 'brief' document. Most commands are fully explained with an example program. You can obtain the FULL documentation, normally sold for 50.00 pounds for only 25.00 pounds (plus 5.00 postage). All orders must be returned direct to GFA, using the special coupon in the issue of ST Format that this disk was supplied with. Also you can obtain the GFA-BASIC Compiler 3.5 and manual for only 20.00 (plus postage of 5.00). (normally 30.00). The compiler manual contains 48 pages. You will need the compiler to produce desk top accessories and link C and assembler code into your GFA- BASIC programs. Or order both the Interpreter and Compiler for only 45.00 (plus 5.00 postage) which would normally retail for 80.00. Please make Cheques and Postal Orders payable to GFA-DATA MEDIA (UK) LTD. We also can accept VISA and ACCESS credit cards. TECHNICAL SUPPORT Technical Support is only available to users who have purchased the full GFA-BASIC 3.5 Interpreter. All technical problems should be sent to GFA in writing, enclosing a stamped addressed envelope, and quoting their registration card number (supplied with each purchased product). Sorry but we are unable to supply technical support to users who are unable to quote their registration number. Now to the documentation: Introduction Welcome to GFA-BASIC. With the GFA-BASIC interpreter you now have the opportunity to explore the Atari ST, and create professional programs. We believe that GFA is the best programming language available, not just for the Atari ST, but also for the Amiga, MS-DOS and Windows 3.0/3.1. When you have quickly mastered GFA-BASIC for the Atari ST, you can transport your program to any PC running either MS-DOS or Windows (and soon OS/2 and Unix!). This means that you will only need to learn one language for all these different machines and operating systems. This manual contains all the GFA-BASIC 3.5 command descriptions and syntax. This manual is an edited version of the full reference manual (which is over 540 pages) and is a reference manual for the GFA-BASIC commands only. The full reference manual contains example programs for most of the commands and reference material for the Atari BIOS, XBIOS and GEMDOS. This manual is a reference manual for the GFA-BASIC commands. It does not attempt to teach you to program, there are other books available for this purpose. Neither does this edited manual does not document the hardware or operating system features of the Atari. This is the GFA-BASIC Interpreter. There are many more products in the GFA range to help you develop your programs. Please contact your distributor or GFA for more information and prices of these products. GFA-BASIC Interpreter Reference Manual (Full version) This loose leaf manual has over 540 pages, dealing with each command with a full description an example. The Atari system routines, GEMDOS, AES, VDI and GDOS are all described. The Line-A call is also described (although Line-A is now declared as un supported by Atari). Just about every useful table is presented in this manual, including GFA-BASIC error messages, Bomb Error messages, TOS Error messages, Scan code table, ASCII tables, Fill and style patterns, and VT-52 control codes. GFA-BASIC Compiler The GFA-BASIC Compiler will compile your interpreter code into fast stand alone programs. Desk top accessories can also be easily created. The GFA-BASIC Compiler also has options for optimising code for either speed or size. External code, either C or assembler can also be linked into your programs using the GFA- BASIC Compiler. The manual (48 pages) fully explains how to create a desk top accessory with examples. The compiler also supports the Atari TT, allowing code to be compiled for either ST or TT ram. GFA-BASIC Software Development Book This book covers in depth structured programming, debugging routines, Line A calls, Assembly routines, AES functions and GDOS. Special attention is paid to dialog boxes and their creation. This book is over 341 pages and is supported by a disk containing the many examples of source code discussed within the book. GFA GEM Utility Pack THE GEM GUP is a framework of GFA-BASIC 3 routines that you can merge into your own programs. GUP takes the responsibility of managing the intricate GEM interface, leaving the programmer to concentrate on the main program logic. The example program supplied demonstrates how easy it is to create alternative icons, and use up to 5 different window types. The demonstration also shows how to use all the GEM gadgets, including scroll bars, title bar, info bar, grow box, grab bar etc. GFA GUP is a quick start to programming GEM. GUP is supplied with a 60 page manual and disk, fully documenting all of the GEM routines. GFA Assembler An integrated development tool for the Atari ST/STE, comprising editor, macro assembler, linker and debugger. Supports multiple window, file compare, background assembly. Editor checks syntax of machine code on entry, hence ideal for programmers new to assembly language. Also creates files that can be loaded directly into GFA-BASIC. GFA-Basic and Assembler User Book This book covers all that you will need to know in interfacing assembler routines into GFA-BASIC on the Atari ST/STE. Includes an introduction into assembly programming, creation of desk top accessories, graphic manipulation. Book (364 pages) plus disk. GFA G-Shell Professional development shell for GFA-BASIC Interpreter and Compiler on the Atari ST/STE and TT. GFA-GShell allows the programmer to skip between Interpreter and Compiler and other programs, such as an assembler and resource editor. Supports make facility and on line help files. If you are using GFA-BASIC Interpreter and Compiler professionally, then GFA-GShell will improve your productivity. GFA-DRAFT 3.2 Powerful and comprehensive, yet easy to use CAD software for Atari ST/STE and Atari TT. Runs in both high and medium resolu- tions. Icon and menu driven commands. There are symbol libraries for electrical, electronic users and architects. Libraries of symbols are also easy to create. A program/macro interface (using GFA BASIC) will enable you to create complex forms and repetive patterns. Exports: HPGL, DXF and GEM files. Will support almost any model of printer or plotter. GFA-Draft Plus 3.2 also supports the Atari laser printer. These GFA products and others are available from: GFA Data Media (UK) Ltd Box 121 Wokingham Berkshire UK RG11 5XT Sales Line Only Tel: 44 (0)734 794941 Fax: 44 (0)734 890782 Using GFA-BASIC for the first time The GFA-BASIC program disk is not copy protected, so before you do anything else, make a copy and store the original disk in a safe place. GFA-BASIC is started by double clicking on the program file icon GFABASIC.PRG. After a short while the Editor screen will be displayed, which is where you can write and debug your programs. Lets now try entering an example program. Enter the following program lines, pressing the RETURN key at the end of each line. DEFFILL 1,2,8 REPEAT WHILE MOUSEK=1 PBOX MOUSEX,MOUSEY,MOUSEX+30,MOUSEY+30 WEND UNTIL MOUSEK=2 In the upper right hand corner of the editor screen you will find the RUN menu item. Click the RUN button or press Shift and F10 keys together and the example program will start. A simple program showing the use of the mouse. Move the mouse while holding down the left button. End the program by pressing the right mouse button. Press the Return key to end the program. The program could also have been stopped by pressing the CONTROL, SHIFT and ALTERNATE keys all at the same time. You will now be returned to the editor. GFA-BASIC does not need line numbers. It is bad programming practice to say GOTO 10. If you must use GOTO, then use: GOTO label ... label: GFA-BASIC offers you the chance to create structured programs, and indented in such a way to enable easy documentation and understanding of program flow. How to proceed from here. We suggest you first become familiar with the GFA-BASIC Interpreter's editor. Then load some of the demonstration programs from the disk and run these. Experiment with these programs by changing the values of variables to see the effect. The next step really depends upon the individual, your knowledge of the Atari, your knowledge of programming and your program requirements. What ever your experience or requirements, GFA-BASIC is the best documented programming language available for the Atari ST, and there are several books and development aids to help you. The Editor THE GFA-BASIC Editor has been specially designed for program development. Syntax errors are recognised as you type the commands in, and in addition the commands are indented automatically. Only one instruction per line is allowed, but a comment may be added to the end of a line by beginning the comment with a ! mark. Program lines may be up to 255 characters long, but when a line exceeds 80 characters, the line will scroll. Cursor Keypad Left arrow moves cursor left one character Right arrow moves cursor right one character Up arrow moves cursor up one line Down arrow moves cursor down one line Insert Inserts a blank line ClrHome moves cursor to top left corner Ctrl ClrHome moves cursor to start of program listing Help With the help key procedures and functions can be folded and unfolded. Move the cursor to the start of a procedure or function and then press Help. The procedure will the fold down to a single line Numeric Keypad Ctrl 4 moves cursor left one character Ctrl 6 moves cursor right one character Ctrl 8 moves cursor up one line Ctrl 2 moves cursor down one line Ctrl 7 jumps to start of program Ctrl 1 jump to end of program Ctrl 9 move one page up Ctrl 3 move one page down Ctrl 0 Inserts a line Ctrl . deletes a line The numeric keypad can be swithed to a mode where it is not required to press the Ctrl key. This mode is toggled on and off by pressing Ctrl and - on the numeric keypad. Delete deletes character at cursor position Backspace deletes character to left of cursor Tab moves cursor right eight characters Ctrl Tab moves cursor left eight characters Return moves cursor to start of next line Enter moves cursor to start of next line Escape enter Direct Mode Further editor commands Ctrl Delete deletes line which cursor is on Ctrl U un-deletes line Ctrl Y deletes line which cursor is on Ctrl N inserts blank line Ctrl Q call Block menu (as F4) Ctrl B mark start of block Ctrl K mark end of block Ctrl R Page up Ctrl C Page down Ctrl E replace text Shift Ctrl E find replace text Ctrl F find text Ctrl left arrow cursor to start of line Ctrl right arrow cursor to end of line Ctrl up arrow page up Ctrl down arrow page down Ctrl Clr Home cursor to start of program Ctrl P delete character right of cursor Ctrl O undelete text deleted with Ctrl P Ctrl Z cursor to end of program Ctrl Tab cursor left eight characters Ctrl G move to line number display Editor marks Ctrl n where n= 0 to 6 will mark a position Alt n will jump to marked position n, except: Alt 7 cursor to last cursor position before RUN Alt 8 to start of program Alt 9 cursor to start of last search Alt 0 cursor to position of last change Menu Bar Atari Logo This leads to a GEM menu bar: Save A file select box will appear, and a program can be saved by entering a name and selecting OK. Load A file select box will appear, and a program can be selected and loaded into the editor. Deflist See the DEFLIST command. New Names The editor will warn you if you enter a new variable name. Editor Returns you to the editor. Load (F1) Load a GFA-BASIC 3 .GFA tokenised file. Save (Shift F1) Save the program as a tokenised .GFA file. Merge (F2) Load an ASCII text file into the editor at the cursor position. The existing program in the editor is not erased. Save,A (Shift F2) Save the program in memory in ASCII format. The extension .LST will be added to the file name. If the file already exists the old file will be changed to .BAK. Llist (F3) This command controls the output of the print out. These Dot commands have no effect on the running of the program and only affect the printout: .ll xx Max line length .pl xx Max page length .ff xxx Form feed character for printer .he text Text to appear on first line of each page .fo text Text to appear on last line of each page .lr xx Left margin .l- Switch dot commands off .l+ Switch dot commands on (default) .n1 to .n9 Switch on line numbers up to 9 characters .n0 Switch off line numbers .PA Force form feed .P- Do not list dot commands .P+ List dot commands In the header and footer text, the following can also be inserted: \xxx The ASCII character xxx \d Date \t Time # Page number To print the symbols \ and ##, use \\ and \ respectively. Quit (Shift F3) Results in Do you really want to quit message. If Yes selected, thenyou will return to the desktop. Block (F4) If no block marked then message Block ??? will appear. If a block has been selected using the BlkSta and BlkEnd then the block menu will appear: Copy Copies the block to current cursor position. Move Moves the block to current cursor position. Write Saves the block as an ASCII file (.LST) Llist Prints the block out to printer Start Moves the cursor to start of block End Moves the cursor to end of block Del Deletes the block Hide Removes the block marker Clicking the mouse outside the Block menu or pressing a key also removes the block marker. New (Shift F4) The program currently in the editor is erased from memory. Blk End (F5) The line before the cursor is marked as the end of block. If the start of block marker is located before this line, the block is shown in a different colour (or dotted background on a monochrome screen). Also actioned with Ctrl K. Blk Sta (Shift F5) Marks the beginning of a block as above. Also actioned with Ctrl B. Find (F6) Enter a text string to be searched for. If the string is found, the search cab be continued with Ctrl F or Ctrl L. Also actioned with Shift Ctrl F or Shift Ctrl L. Folded procedures and functions are not searched. Replace (Shift F6) This function will replace one string of text by another. Input the text to be replaced, then the replacement text. On finding an occurrence, the actual replacement can be effected with Ctrl E. Also activated with Shift Ctrl E. Pg down (F7) Scrolls the screen down one page. Also activated with Ctrl C. Pg Up (Shift F7) Scrolls the screen up one page. Also activated with Ctrl R. Insert/Overwr (F8) Switches between insert and overwrite. Txt16/Text8 (Shift F8) Only on monochrome monitor. Either 16 pixel high characters or 8 pixel high characters will provide 23 or 48 lines on the screen respectively. Flip (F9) Flip between Edit and Output screen. Press any key to return to the Edit screen Direct (Shift F9) Switch to Direct mode, where commands will be actioned immediately. Some commands, such as loop commands are not available in direct mode. Direct mode can also be entered by pressing Esc key. The last 8 commands entered in direct mode are remembered and can be recalled using the up and down arrow keys. The Undo key will recall the last command. A procedure can be called from direct mode. Test (F10) Tests all loops, subroutines and conditional instructions for consistency without running the program. Run (Shift F10) The program in the editor memory is started. A running program can be interrupted using Ctrl Shift Alt keys together. Clock Display The clock can be set by clicking on the clock and entering a new time. Line Numbers Clicking on the line number box (beneath the clock) allows you to enter a line number. On input the cursor will jump to this line number. Also activated with Ctrl G. COMMANDS AND FUNCTIONS ====================== The following commands and functions have been sorted by alphabetical order. Each entry describes the command syntax and the action of the command. Some of the more complex commands have examples. The full GFA-BASIC Interpreter Reference manual contains examples for most of the commands. The advanced commands such as the operating system calls BIOS, GEMDOS and XBIOS are not covered here and should be consulted in the GFA-BASIC Interpreter Reference manual. * Syntax: *y Action: returns the address of variables, but for strings or arrays the address of the descritpor is returned. (ARRPTR is the same as *). + Syntax: a$+b$ Action: Concatenation operator, to add strings together. + Arithmetic operator (a+b adds a and b). * a*b (a times b). / a/b (a divided by b). ^ a^b (a to the power b). <> a<>b (a not equal b). <= a<=b (a less than or equal to b). >= a>=b (a greater than or equal to b). == Syntax: a==b Action: Comparison operator for approximately equal 'a' and 'b' are numeric expressions. The == operator is used in the same way as a comparison with = but only 28 bits of the mantissa are compared i.e. about 8.5 digits. @ Syntax: @FRED Action: GOSUB PROCEDURE fred (@ is synonymous with GOSUB). ABS Syntax: ABS(X) Action: Returns the absolute value of a number. (see also SGN). ABSOLUTE Syntax: ABSOLUTE x,y Action: Assigns the address y to the variable x. ACHAR Syntax: ACHAR code,x,y,font,style,angle Action: ASCII characters value 'code' are displayed at the graphics location x,y. Font can be: 0 = 6x6 (Icon font). 1 = 8x8 (Normal colour font). 2 = 8x16 (Normal monochrome font). Larger values are taken to be the font header address of a GDOS font. Text type (bold, faint etc. 0-31) and output angle (0,900,1800,2700) can be specified. ACLIP Syntax: ACLIP flag,xmin,ymin,xmax,ymax Action: To define a 'clipping' rectangle to which LINE-A screen output will be limited. Flag 0 = clipping off, non zero = on. ACOS Syntax: ACOS(x) Action: Returns the arc-cosine (in radians) of x. ADD(x,y) Syntax: z%=ADD(x%,y%) Action: Integer addition. ADD Syntax: ADD x,y Action: Increase value of variable x by y. ADDRIN Syntax: address of the AES Address Input block. With an index after this function, the appropriate parameter block is accessed directly. ADDRIN(2)=x is the same as LPOKE ADDRIN+2,x ADDROUT address of the AES Address Output block, see above. AFTER ticks GOSUB proc (see also EVERY). AFTER CONT AFTER STOP Procedures can be called after the expiry of a set time. Time in ticks (200ths of a second). To continue the process, use CONT, and to stop use STOP. ALERT Syntax: ALERT a,message$,b,button$,var Action: Creates an alert box 'a' chooses type of alert symbol, 0=none, 1=!, 2=?, 3=stop 'message$' Contains main text. Up to 4 lines of 30 characters/line lines are separated by the '|' symbol (Shift \). 'button$' Contains text for the buttons 'B'. 'b' is the button to be highlighted (0,1,2,3) to be selected by just pressing return. 'var' This variable is set to the number of the button selected. Example: ALERT 1,"Pick a|button",1,"Left|Right",a% ALERT 0,"You pressed|Button"+STR$(a%),0,"OK",a% ALINE Syntax: ALINE x1,y1,x2,y2,f,ls,m Action: Draw a line using LINE A. x1,y1 are the start coordinates x2,y2 end of line. f = colour (0-15). ls = line style in 16 bit information, (solid, dashed, dotted ..). m mode 0 Replace 1 Transparent 2 Inverted 3 Inverted transparent AND Syntax: x AND y Action: Logical operator, performs a logical AND, results in a true or false result. AND() Syntax: AND(x,y) Action: See AND above. APOLY TO Syntax: APOLY adr_pnt,num_pnt,y0 TO y1,f,m,addr,num_pattern Action: Similar to POLYFILL, draws a sequence of joined lines, with 'num_pnt' corners, and fills the resulting area with a user defined pattern. 'adr_pnt' is the address of the array holding the alternating x,y corner coordinates. 'num_pnt' is the number of points. y0 and y1 specify the highest and lowest part of the screen where filling can occur. The parameters f,m,addr,num_pattern are the same as for HLINE. APPL_EXIT Syntax: APPL_EXIT() Action: Informs the system prog has finished - this is a dummy function as QUIT or SYSTEM do this automatically. APPL_FIND Syntax: APPL_FIND(fname$) Action: Returns the ID of the sought after application. Either returns the apps ID or -1 if it cant be found. fname$ is an 8 character filename - without extension. Example: PRINT APPL_FIND("CONTROL") prints -1 if it cant find the CONTROL.ACC, or returns it's ID [2]. APPL_INIT Syntax: APPL_INIT() Action: Announce the program as an application. APPL_READ Syntax: APPL_READ(id,len,adr_buffer) Action: Instruction bytes can be read from the event buffer. id - id of the application from whose buffer reading is to be done. len - number of bytes to read. adr_buffer - address of the buffer. APPL_TPLAY(mem,num,speed) APPL_TRECORD(mem,num) APPL_TRECORD makes a record of user activities, and TPLAY plays these back at the specified speed (1 - 1000). * ONLY VALID on TOS 1.4 and above. * APPL_WRITE Syntax: APPL_WRITE(id,len,adr_buffer) Action: Bytes are written to the event buffer. SEE APPL_READ. ARECT Syntax: ARECT x1,y1,x2,y2,f,m,addr,num_pattern Action: Similar to PBOX, x1,y1 and x2,y2 are opposite corners of a rectangle. The parameters f,m,addr,num_pattern are the same as for HLINE. ARRAYFILL Syntax: ARRAYFILL x(),n Action: Assigns the value 'n' to all elements of a field array x(). ARRPTR Syntax: ARRPTR(x) Action: Finds the address of the (6 byte long) descriptor of a string or field. (Same as *x) ASC Syntax: ASC(x$) Action: Finds the ascii code of the first character of a string. ASIN Syntax: ASIN(x) Action: Returns the arc-sine (in radians) of x. ATEXT Syntax: ATEXT x,y,font,s$ Action: Output text at x,y coordinates using A LINE. ATN Syntax: ATN(x) Action: Returns the arc tangent of x. BASEPAGE Syntax: BASEPAGE Action: Returns the address of the basepage of GFA-Basic. BCHG(x,y) BCLR(x,y) Allow setting and resetting of bits. BCLR sets the y-th bit of x to zero. BGET Syntax: BGET #i,adr,cnt Action: Reads from a data channel into an area of memory 'i' \ 'adr' -- integer expressions. 'cnt' / 'i' is the channel number. 'cnt' bytes are read in and stored in memory starting at address 'adr' Unlike BLOAD, several different areas of memory can be read from a file. BIN$ Syntax: BIN$(x[,n]) Action: Changes value of 'x' to a string containing the binary value of 'x'. The optional parameter 'n' specifies the number of character positions to be used (1 to 32). BIOS Syntax: BIOS(n[,x,y]) Action: To call the BIOS routine. The optional parameter list can be prefixed with W: or L: to denote word or longword parameters. (if non given, default is W:) Example: REPEAT UNTIL BIOS(11,-1) AND 4 Waits for the Control key to be pressed. Please refer to GFA-BASIC Interpreter Manual for full list of BIOS calls. BITBLT Syntax: BITBLT s%(),d%(),p%() Action: Raster copying command similar to GET and PUT but more flexible and faster for some applications. 's%' the description of the source raster 'd%' the description of the destination raster 'p%' co-ordinates of the two equally sized rectangles and the copying mode (see PUT). BLOAD/BSAVE Syntax: BLOAD "filename" [,address] BSAVE "filename",address,length Action: Load and save memory from and to disc drive. Example: DEFFILL 1,2,4 PBOX 100,100,200,200 BSAVE "RECT.PIC",XBIOS(2),32000 CLS PRINT "IMAGE STORED. Press a key to continue" ~INP(2) CLS BLOAD "RECT.PIC",XBIOS(2) BMOVE Syntax: BMOVE scr,dst,cnt Action: Fast movement of memory blocks. 'scr' is the address at which the block to be moved begins. 'dst' is the address to which the block is to moved 'cnt' is the length of the block in bytes. BOUNDARY Syntax: BOUNDARY n Action: Uses function vsf_perimeter to switch off (or on) borders on filled shapes (PBOX, PCIRCLE ..). If n is zero - no border, n - non zero = border. BOX Syntax: BOX x,y,xx,yy Action: Draws a rectangle with corners at (x,y) and (xx,yy) BPUT Syntax: BPUT #n,adr,cnt Action: Reads from an area of memory out to a data channel. 'n' is a channel number. 'adr' is start address of memory to read from. 'cnt' bytes are read from address. BSAVE See BLOAD BSET(x,y) Allows setting and resetting of bits. BTST(x,y) BSET sets the y-th bit of x to 1. BTST results in -1 (TRUE) if bit y of x is set. Example: x=BSET(0,3) PRINT x,BSET(0,5) BYTE(x) Returns the lower 8 bits of the numerical expression x. (See also CARD(), WORD() ). BYTE{x} As a function eg. y=BYTE{x} one can read the contents of the address x. As a command one writes to address x. eg. BYTE{x}=y. This is similar to PEEK and POKE but is not done in supervisor mode. (See also CARD{}, INT{}, LONG{}, {}, FLOAT{}, SINGLE{}, DOUBLE{}, CHAR{} ). C: Syntax: C:addr([ x,y,....L:x, w:y]) Action: Calls a C or assembler program with parameters as in C. The parameters can be sent as 32-bit long words or 16-bit words to the subroutine. eg. a%=C:adr%(L:x,W:y,z) leads to the following situation on the stack: (sp) ->return address (4bytes) 4(sp) ->x (4 bytes) 8(sp) ->y (2 bytes) 10(sp) ->z (2 bytes) The value returned by the call is the contents of D0. CALL Syntax: CALL addr([ x,y,....L:x, w:y]) Action: Calls a machine code or C subroutine at address 'addr'. When the call is made, the return address is on the top of the stack, followed by the number of parameters as a 16-bit word, then the address of the parameter list as a 32-bit word. CARD(x) Returns the lower 16 bits of the numerical expression x. (See also BYTE, WORD). CARD{x} Reads/writes a 2-byte unsigned integer (similar to DPEEK/DPOKE). (See also BYTE{}, INT{}, LONG{}, {}, FLOAT{}, SINGLE{}, DOUBLE{}, CHAR{} ). CASE See SELECT. CFLOAT(x) Changes the integer x into a floating point number. (See also CINT). CHAIN Syntax: CHAIN f$ Action: Loads a GFA Basic program file into memory and starts it immediately it is loaded. If no extension is given '.GFA' is assumed. Example: CHAIN "A:\EXAMPLE.GFA" CHAR{x} Reads a string of bytes until a null byte is encountered, or writes the specified string of bytes and appends a null byte. Example: PRINT CHAR{BASEPAGE+129} prints the command line. CHDIR Syntax: CHDIR "directory name" Action: Changes the current directory. Example: CHDIR "B:\TEST" CHDRIVE Syntax: CHDRIVE n or n$ Action: Sets the default disk drive 0=current, 1=A, 2=B etc. Example: CHDRIVE 1 PRINT DFREE(0) PRINT DIR$(2) CHDRIVE "C:\" CHR$(x) Returns the character from a specified ASCII code. Example: PRINT CHR$(65) !PRINTS A CINT(x) Changes a floating point number into a rounded integer. (See also CFLOAT). CIRCLE HOW: CIRCLE x,y,r[,w1,w2] Action: Draws a circle with centre coordinates at x,y and a radius r. Additional start and end angles w1 and w2 can be specified to draw a circular arc. Example: CIRCLE 320,200,100 CLEAR Syntax: CLEAR Action: Clears all variables and fields. CLEARW Syntax: CLEARW n Action: Clears the contents of the window numbered 'n' CLIP x,y,w,h [OFFSET x0,y0] CLIP x1,y1 TO x2,y2 [OFFSET x0,y0] CLIP #n [OFFSET x0,y0] CLIP OFFSET x,y CLIP OFF This group of commands provide 'Clipping' functions,ie. the limiting of graphic display within a specified rectangular screen area. The command CLIP x,y,w,h defines the clipping rectangle starting at upper left coordinates x,y and extends w wide and h high. The next command CLIP .. TO .. allows input of the diagonally opposite corners of the clipping rectangle. The third variant makes it possible to dfine the limits of the window 'n'. The optional additional command OFFSET x0,y0 makes it possible to redefine the origin of the graphic display. If used in its own right this command sets the origin for graphic display at x0,y0. The command CLIP OFF turns clipping off. CLOSE Syntax: CLOSE [#n] Action: Close a data channel or a channel to a previously OPENed device. If the channel number is omitted, all opened channels are closed. CLOSEW Syntax: CLOSEW n Action: Closes the window numbered n. CLR Syntax: CLR var [ ,var ] Action: Deletes and sets specified variables (not arrays) to 0. CLS Syntax: CLS [#n] Action: Clears the screen [numbered n]. COLOR Syntax: COLOR color Action: Sets the colour for drawing/text. (0-15). COMBIN Syntax: z=COMBIN(n,k) Action: Calculates the number of combinations of n elements to the kth class without repetitions. Defined as z=n!/((n-k)!*k!). CONT Syntax: CONT Action: Resumes execution of a program. Continue the execution of a program after interruption. CONTRL Address of the VDI control table. With an index after this function, the appropriate parameter block is accessed directly. CONTRL(2)=x is the same as DPOKE CONTRL+4,x COS Syntax: COS(x) Action: Returns the cosine of value x (radians) COSQ(x) Returns the cosine of value x from an internal table in steps of 16th of a degree so is 10 times faster than COS. (in degrees). CRSCOL CRSLIN Syntax: CRSCOL CRSLIN Action: Returns current cursor line and column. (see also PRINT AT). CURVE HOW: CURVE x0,y0,x1,y1,x2,y2,x3,y3 Action: The BEZIER-Curve starts at x0,y0, and ends at x3,y3. The curve at x0,y0 is at a tangent with a line from x0,y0 to x1,y1; and at x3,y3 is at a tangent with a line between x3,y3 and x2,y2. Example: x0=10 y0=10 x1=50 y1=110 x2=150 y2=200 x3=350 y3=300 LINE x0,y0,x1,y1 LINE x2,y2,x3,y3 CURVE x0,y0,x1,y1,x2,y2,x3,y3 CVI CVL CVS CVF CVD Syntax: CVI(x$) .... CVD(x$) Action: Changes character strings into numeric variables. CVI Changes a 2-byte string into an integer CVL " " 4-byte " " " " CVS " " 4-byte basic string into a floating point number CVF " " 6-byte " " " a GFA 1 or 2 " CVD " " 8-byte " " " a GFA 3 floating point. ******************************************************************* DATA Syntax: DATA [CONST[,CONST] ...] Action: Used as memory variables which can be read by the READ command. The constants are separated by commas. Example: For i=1 to 3 READ A PRINT A Next i DATA 1,2,3,4 DATE$ Syntax: DATE$ Action: Returns the system date. DATE$=date$ Sets the system date. (either DD.MM.YY (UK) orMM.DD.YY (US) The format depends on MODE setting. DEC Syntax: DEC var Action: Reduces the value of 'var' by 1 DEFAULT See SELECT DEFBIT DEFBYT DEFWRD DEFFLT DEFSTR The instruction DEFxxx sets the varaible type to that specified. Example: DEFBIT "a-z" defines all variables as boolean. DEFFILL Syntax: DEFFILL [col],[style],[pattern] or DEFFILLL [col],A$ Action: Sets fill colour and pattern, or allows user-defined patterns. 'style' - 0=empty, 1=filled, 2=dots, 3=lines, 4=user 24 dotted patterns and 12 lined can by chosen. A user-defined fill pattern is defined in the second variation - DEFFILL col,A$ by defining a 16 x 16 bit pattern array. DEFFN Syntax: DEFFN func [(x1,x2,..)]=expression Action: Allows the definition of single line functions. The term 'expression' can be any numeric or string expression. Example: DEFFN test(y,a$)=x-y+LEN(a$) x=2 PRINT @test(4,"abcdef") See also FN DEFLINE Syntax: DEFLINE [style],[thickness],[begin_s,end_s] Action: Sets line style, width & type of line start and end. 'style' determines the style of line: 1 Solid line 2 Long dashed line 3 Dotted 4 Dot-dashed 5 Dashed 6 Dash dot dot .. 7 User defined 'thickness' sets width in pixels (odd numbers only). The start and end symbols are defined by the last parameter, and can be: 0 Square 1 Arrow 2 Round DEFLIST Syntax: DEFLIST x Action: Defines the program listing format. x Command Variable 0 PRINT abc 1 Print Abc 2 PRINT abc# 3 Print Abc# DEFMARK Syntax: DEFMARK [C],[A],[G] Action: Sets colour,type and size of the corner points to be mark using the command polymark 'C' is the colour register number 'A' defines the type of mark. the following types are possible :- 1=dot 2=plus sign 3=asterisk 4=square 5=cross 6=hash all other values return the asterisk symbol 'G' sets the size of mark DEFMOUSE Syntax: DEFMOUSE n or DEFMOUSE a$ Action: Chooses a pre-defined mouse form or defines a new one the following mouse forms are available :- 0=arrow 1=expanded (rounded) X 2=bee 3=pointing hand 4=open hand 5=thin crosswire 6=thick crosswire 7=bordered crosswire A mouse can be defined by the command defmouse a$ 16*16 dots are available to create a shape. Also a 'mask' must be defined so that the cursor remains visible when it is the same colour as the background one of the 256 dots must be defined as the starting point to which the mouse functions will relate. Example: DEFMOUSE 2 PAUSE 1 m$=MKI$(0)+MKI$(0)+MKI$(1)+MKI$(0)+MKI$(1) FOR i%=1 TO 16 m$=m$+MKI$(65535) NEXT I% FOR i%=1 TO 16 m$=m$+MKI$(1) NEXT i% PBOX 200,150,400,250 DEFMOUSE m$ REPEAT UNTIL MOUSEK DEFNUM Syntax: DEFNUM n Action: Affects output of numbers by the PRINT command and its variants. All numbers are outputted to occupy n character positions, not counting the decimal point. DEFTEXT Syntax: DEFTEXT [colour],[attr],[angle],[height],[fontnr] Action: Defines the colour,style,rotation and size of text to be printed using the text command. 'colour' colour register number (0-15). 'attr' text style - 0=normal 1=bold 2=light 4=italic 8=underlined 16=outlined (can be combined). 'angle'= rotation only the following are possible :- 0 deg (0), 90 deg (900), 180 deg (1800), 270 deg (2700) 'height' size of text - 4=icon, 6=8*8, 13=std, 32=enlarged. 'fontnr' - the number of a desired character set. This font must have been previously installed (See also GDOS, VST_LOAD_FONT, VQT_NAME). Example: FOR i%|=0 TO 5 DEFTEXT 1,2^i|,0,13 TEXT 100,i|*16+100,"This is text attribute "+STR$(i|) NEXT i| DEG(x) Converts x from radians to degrees. See also RAD. DELAY x Suspends program operation for x seconds (with a theroetical resolution in milliseconds). See aslo PAUSE. DELETE Syntax: DELETE x(i) Action: Removes the ith element of array x. All elements with a larger index are shifted down one position. See also INSERT. DFREE Syntax: DFREE(n) Action: Locates free space on a disc 'n' = drive number (0-15) DIM Syntax: DIM var(indices)[,var(indices),.....] Action: Sets the dimensions of an array or string array. DIM? Syntax: DIM?(field()) Action: Determines the number of elements in an array. Note - arrays have an element '0'. DIR Syntax: DIR "filespec" [TO "file"] Action: Lists the files on a disc. The output can be directed to a file or other device. Example: "LST:" See also FILES. DIR$ Syntax: DIR$(n) Action: Names the active directory for drive 'n' 'n' is drive number (1=A:, 2=B: ...). DIV Syntax: DIV var,n Action: Divides the value of var by n. As var=var/n but 30% faster. DIV() Syntax: a%=DIV(x,y) Action: See DIV above. DMACONTROL Syntax: DMACONTROL ctrlvar Action: Controls the DMA sound on the STE. cntrlvar = 0 - stop sound 1 - Play sound once 2 - Play sound in a loop DMASOUND Syntax: DMASOUND beg,end,rate[,ctrl] Action: Output of DMA sampled sound on the STE. beg - Sample start address. end - Sample end address. rate - Sample rate 0=6.25 kHz, 1=12.5 kHz, 2=25 kHz, 3=50kHz. ctrl - See DMACONTROL above. Example: 'Try each of the DMASOUND lines below. n%=360*32 DIM a|(n%) 'DMASOUND V:a|(0),V:a|(n%),0 'DMASOUND V:a|(0),V:a|(n%),1 'DMASOUND V:a|(0),V:a|(n%),2 DMASOUND V:a|(0),V:a|(n%),3,3 FOR i%=0 TO n% a|(i%)=128+SINQ(i%*i%/7200)*127 NEXT i% REPEAT UNTIL MOUSEK DMACONTROL 0 DO....LOOP Syntax: DO (instructions) LOOP Action: Creates an endless loop, exit only with EXIT IF or GOTO. DO UNTIL condition DO WHILE condition The commands DO and LOOP can be extended using UNTIL and WHILE. The loop DO WHILE causes a loop as long as the condition is true. See also LOOP WHILE, LOOP UNTIL. DOUBLE{x} Reads/writes an 8-byte floating point variable in IEEE double precision format. (See also BYTE{}, CARD{}, INT{}, LONG{}, {}, FLOAT{}, SINGLE{}, CHAR{} ) DOWNTO Used within a FOR..NEXT loop as a counter. Instead of using step -1, the command DOWNTO is used, however STEP is not possible with DOWNTO. eg: FOR c=100 DOWNTO 1 is the same as FOR c=100 TO 1 STEP -1 DPEEK(x) Reads 2 bytes from address x (a word). Works in supervisor mode. DPOKE x,y Writes y as a 2 byte word to address x. To work in supervisor mode use SDPOKE .. DRAW Syntax: DRAW [TO] [x,y] DRAW [x1,y1][TO x2,y2][TO x3,y3][TO..] Action: Draws points and connects two or more points with straight lines. DRAW x,y is the same as PLOT x,y. DRAW TO x,y connects the point to the last set point (set by PLOT, LINE or DRAW). DRAW expression DRAW(i) SETDRAW These instructions give a turtle like approach to drawing. An imaginary pen is moved over the screen and draws relative to the last point. The 'expression' is a LOGO type of convention controlled by graphic commands. The pen leaving a trail over the 'paper' leaves a graphic image. The statement below is an wxample of how these commands can be used. Example: DRAW "PU FD 40 PD FD 40" The available commands are: FD n ForwarD Moves the 'pen' n pixels forward BK n BacKward Moves the 'pen' n pixels backwards SX x Scale x Scales the 'pen' movement for FD and BK SY y Scale y by the specified factor. Use SX0 or SY0 to turn off scaling. LT a Left turn Turns the 'pen' left through the specified angle a, given in degrees. RT a Right turn As LT but turns right. TT a Turn To Turns the 'pen' to the absolute angle 'a' in degrees. (see below) 0 | | 270 -- zero point -- 90 | | 180 MA x,y Move Absolute Moves the 'pen' to the absolute coordinates x,y DA x,y Draw Absolute Moves the 'pen' to the absolute coordinates x,y and draws a line in the current colour from the last position to the point x,y MR xr,yr Move Relative Moves the 'pen' position in the x and y directions relative to the last position. DR xr,yr Draw Relative Moves the 'pen' by the specified displacement relative to its last position and draws a line in the current colour from the last position to this point. The command SETDRAW x,y,w is an abbreviation for the expression DRAW "MA",x,y,"TT",w. CO c Colour Sets 'c' as the character colour (see parameters for COLOR command). PU Pen Up Lifts the 'pen' from the 'paper'. PD Pen Down Lowers the 'pen' onto the 'paper'. Additionally the following interrogation functions are available: DRAW(0) returns the x position. DRAW(1) returns the y position. DRAW(2) returns angle in degrees. DRAW(3) returns the X axis scale factor. DRAW(4) returns the Y axis scale factor. DRAW(5) returns the pen flag (-1=PD, 0=PU). All these functions return floating point values. Example: DRAW "ma 160,200 tt 0" FOR i&=3 TO 10 polygon(i&,90) NEXT i& PROCEDURE polygon(n&,r&) LOCAL i& FOR i&=1 TO n& DRAW "fd",r&," rt ",360/n& NEXT i& RETURN EDIT Syntax: EDIT Action: Returns to the editor. When used in direct mode the command allows a return to the editor. In a program, is the same as END but without the program end alert box. ELLIPSE Syntax: ELLIPSE x,y,rx,ry [,phi0,phi1] Action: Draws an ellipse at x,y, having 'rx' as length of the horizontal axis and 'ry' as length of the vertical axis The optional angles 'phi0' & 'phi1' give start and end angles in tenths of a degree, to create an elliptical arc. ELSE See command IF. ELSE IF " " " END Syntax: END Action: Closes all files and terminates program execution. ENDFUNC See command FN. ENDIF See command IF. ENDSELECT See command SELECT. EOF Syntax: EOF (#n) Action: Determines whether the file pointer for the file with channel number 'n' is at End Of the File. Returns -1 if it is, otherwise 0. EQV Syntax: x EQV y Action: The operator EQV (equivalence) produces a TRUE result only if the arguments of both are either TRUE or both FALSE. (same as NOT(x XOR y)). EQV(x,y) Syntax: EQV(x,y) Action: Sets a bit of the result if the appropraite bits in x and y are both set, or both reset. eg: PRINT BIN$(EQV(15,6),4) prints 0110 ERASE Syntax: ERASE field() Action: Deletes an array and releases the dimensioned area. ERR Syntax: ERR Action: Returns the error code of any error that has occurred. ERR$ Syntax: ERR$(x) Action: Returns, as a string, the GFA Basic error mesage x. ERROR Syntax: ERROR n Action: Simulates the occurrence of the error with the error code 'n' and the appropriate error message is then displayed. EVEN Syntax: EVEN n Action: Determines if a number is even. Returns TRUE (-1) and FALSE(0). Also see ODD EVERY EVERY CONT EVERY STOP Syntax: EVERY ticks GOSUB proc Action: The command EVERY causes the procedure 'proc' to be called every 'ticks' clock units. The clock unit is defined as one two-hundredth of a second. But a branch can only be done every fourth clock unit, resulting in an effective time resolution of one fiftieth of a second. Using EVERY STOP, the calling of a procedure can be prevented. With EVERY CONT this is again allowed. See also AFTER. EVNT_BUTTON Syntax: EVNT_BUTTON(clicks,mask,state[,mx,my,button,k_state]) Action: Waits for one or more mouse clicks, and returns the number of clicks. INPUTS clicks - Maximum allowable clicks. mask - Mask for the desired mouse key: Bit 0 = 1 : Left Button Bit 1 = 1 : Right Button state - Desired status, in order to terminate the event. Bit allocation as for mask. RETURNED VALUES: mx - x coordinate of mouse pointer on event termination my - y coordinate of mouse pointer on event termination button - state of mouse button, bit allocation as for mask. k_state- Condition of keyboard shift keys: Bit 0 = Right shift key Bit 1 = Left shift key Bit 2 = Control key Bit 3 = Alternate key EVNT_DCLICK Syntax: EVNT_DCLICK(new,get_set) Action: Sets the speed for double-clicks of a mouse button. Returns the speed. new - new speed (0-4) get_set - determine whether to set or read. 0=read,1=set. EVNT_KEYBD Syntax: EVNT_KEYBD() Action: Waits for a key to be pressed and returns a word-sized value. The low order byte contains the ASCII code, the high byte contains the keyboard scan code. EVNT_MESAG Syntax: EVNT_MESAG(adr_buffer) Action: Waits for the arrival of a message in the event buffer. The returned value is always 1. adr_buffer is the address of a 16 byte buffer for the message. If 0 is used, then the sytem message buffer is used, ie. MENU(1) to MENU(8). EVNT_MOUSE Syntax: EVNT_MOUSE(flag,mx,my,mw,mh,mcur_x,mcur_y,button,k_state) Action: Waits for the mouse pointer to be located inside (or optionally, outside) a specified rectangular area of the screen. The returned value is always 1. INPUTS: flag - Presence inside(0) or outside(1) the desired area. mx,my - Coordinates of top left corner of recatngle. mw - Width of rectangle. mh - Height of rectangle. OUTPUTS: mcur_x x coordinate of mouse when event occurs. mcur_y y coordinate of mouse when event occurs. button same as for mask in EVNT_BUTTON. k_state same as for k_state in EVNT_BUTTON. EVNT_MULTI HOW: EVNT_MULTI(flag,clicks,mask,state,m1_flags,m1_x, m1_y,m1_w,m1_h,m2_flags,m2_x,m2_y,m2_w,m2_h,adr_buffer, count[,mcur_x,mcur_y,button,k_state,key,num_clicks]) Action: Waits for the occurence of selected events. Returns the event which actually occured, with bit allocation as for 'flag' below: INPUT: flag Sets the event(s) to be waited for as follows: BIT 0 keyboard MU_KEYBD BIT 1 mouse button MU_BUTTON BIT 2 first mouse event MU_M1 BIT 3 second mouse event MU_M2 BIT 4 report event MU_MESAG BIT 5 timer MU_TIMER OUTPUT: num_clicks: number of expected mouse clicks The parameters are already described for EVNT_MESAG, etc.. With ON MENU, which uses this routine internally, the parameters are installed for the instruction ON MENU xxx GOSUB. MENU(1) to MENU(8) Message buffer. MENU(9) Returned value. MENU(10)=mcur_x x mouse position. MENU(11)=mcur_y y mouse pos. MENU(12)=button Mouse state button. MENU(13)=k_state Shift key status. MENU(14)=key ASCII and scan code. MENU(15)=num_clicks Number of mouse clicks. EVNT_TIMER Syntax: EVNT_TIMER(count) Action: The function waits for a period of time expressed in 'count' millisecondes. The returned value is always 1. EXEC Syntax: EXEC flg,name,cmd,env EXEC (flg,name,cmd,env) Action: Loads and executes machine code programs or compiled programs from disc. flg=0 - load and go. flg=3 - load only. 'name' - the name of the program. 'cmd' - command line (see BASEPAGE). 'env' - environment string (usually just ""). The named program is loaded from disc, the absolute addresses are relocated, a basepage is created, and if required the program run. EXIST Syntax: EXIST ("filespec") Action: Determines whether a particular file is present on a disc. If present -1 is returned, else 0 is returned. EXIT Syntax: EXIT IF Condition Action: Enables the exit from a loop. If the EXIT command is met within a loop and the exit condition is met, the program continues from the first command after the loop. This command allows any loop to be left ie: FOR...NEXT DO...LOOP, REPEAT...UNTIL AND WHILE...WEND. EXP Syntax: EXP(X) Action: Calculates the value of an exponent x. FACT Syntax: x=FACT(n) Action: Calculates the factorial (n!) of n and returns the result in x. (0!=1). FALSE Syntax: FALSE Action: Constant 0. This is simply another way of expressing the value of a condition when it is false and is equal to zero (see also TRUE). FATAL Syntax: FATAL Action: Returns the value 0 or -1 according to the type of error. On normal errors the function returns 0. The value -1 is returned on all errors where the address of the last executed command is no longer known. Normally this is an operating system error which would lead to the 'bomb' errors and the breakdown of the program. FGETDTA Syntax: n%=FGETDTA() Action: Returns the DTA (Disk Transfer Address). FIELD Syntax: FIELD #n,num AS svar$ [,num AS svar$,...] FIELD #n,num AT(x)[,num AT(x),...] Action: Divides records into fields. 'n' is the channel number of a file previously OPENed. The integer expression 'num' determines the field length. 'Svar' is a string variable containing data for one field of a data record. The section 'num AS svar$' can be repeated if the record is to be divided into several fields. The sum of the fields should equal the record length. By using AT() instead of AS, numeric variables can be read and written. 'num' contains the length of the varaible type. The brackets contain a pointer to the variable. eg: FIELD #2,4 AS a$,2 AT(*b&),8 AT(*c#),6 AS d$ FILES Syntax: FILES p$ [TO name$] Action: Lists the files on a disk. Like DIR but more detailed data listing. FILESELECT Syntax: FILESELECT [#title$],path$,default$,name$ Action: Creates a fileselect box on the screen. Title$ can be a string of max 30 characters. Allows a header to be placed in the fileselect box (TOS 1.4 and above). path$ is the drive and path - if none specified then the default drive is assumed. default$ contains the name of the file to apppear in the selection line. ("" for no default). name$ contains the selected file, either an empty string if CANCEL is selected, or the file name selected. See also FSEL_INPUT Example: FILESELECT #"LOAD File","A:\*.PRG","GFABASIC.PRG",name$ FILL Syntax: FILL x,y Action: Fills a bordered area with a pattern commencing at the co-ordinates 'x,y'. Fill pattern can be chosen with the command DEFFILL. FIX Syntax: FIX(x) Action: Returns the integer of 'x' after it has been rounded. Same as INT(x) for positive numbers but for negative numbers INT(-1.99)=-2 AND FIX(-1.99)=1. FIX is identical to the function TRUNC and complements FRAC. FLOAT{x} Reads/writes an 8-byte variable in Basic v3 floating point format. (See also BYTE{}, CARD{}, INT{},LONG{}, {}, SINGLE{}, DOUBLE{}, CHAR{} ) FN Syntax: FN func[(y1,y2...)] Action: Call to a defined DEFFN function or a FUNCTION. (you can also use @). See also DEFFN, FUNCTION. FOR...NEXT Syntax: FOR c=b TO e [STEP s] instructions NEXT c Action: Creates a loop which is executed as many times as specified at the beginning of the loop. FORM INPUT Syntax: FORM INPUT n,a$ Action: Enables the insertion of a character string (limited to 255 characters in length) during program execution. 'n' = the maximum length of the character string. a$ is the name of the string variable. FORM INPUT AS Syntax: FORM INPUT n AS a$ Action: Similar to FORM INPUT, except the current value of a$ is displayed, and can be edited. *** the following 7 commands are part of the AES FORM Library commands, and are similar to C bindings for calling these AES functions *** FORM_ALERT Syntax: a%=FORM_ALERT(button,string$) Action: Creates an alert box. button = number of the default button (0-3). string$ = string defining the message in the alert. (in C format) - note that the square brackets are part of the string: [i][Message][Buttons] where i = the required alert symbol - see ALERT. Message is a string max 30 characters. Buttons = the name of the 3 buttons. A good use of this command is in trapping errors: Example: ~FORM_ALERT(1,ERR$(ERR)) FORM_BUTTON Syntax: FORM_BUTTON(tree,obj,clicks,new_obj) Action: Make inputs in a form possible using the mouse. INPUTS: tree - address of the object tree obj - current object number clicks - max expected number of mouse clicks OUTPUT: new_obj- next object to be edited. Returns 0 if the FORM was exited, otherwise >0. FORM_CENTER Syntax: FORM_CENTER(tree,fx,fy,fw,fh) Action: Centers the tree, and returns its coordinates. INPUT: tree - address of the object tree. OUTPUTS: fx,fy coordinates of top left corner fw,fh form width and height. returns a reserved value (always 1). FORM_DIAL HOW: FORM_DIAL(flag,mi_x,mi_y,mi_w,mi_h,ma_x,ma_y,ma_w,ma_h) Action: Release (or reserve) a rectangular screen area and draw an expanding/shrinking rectangle. Returns 0 if an error occured. flag function 0 FMD_START reserve a display area. 1 FMD_GROW draw expanding box. 2 FMD_SHRINK draw shrinking box. 3 FMD_FINISH release reserved display area. mi_x,mi_y top left corner of rectangle at min size mi_w,mi_h width & height " " " " " ma_x,ma_y top left corner of rectangle at max size ma_w,ma_h width & height " " " " " FORM_DO Syntax: FORM_DO(tree,start_obj) Action: Pass management of FORM over to the AES until an object with EXIT or TOUCH EXIT status is clicked on. Returns the number of the object whose clicking or double clicking caused the function to end. If it was a double click, bit 15 will be set. tree = address of the object tree. start_obj = Number of the first editable field (if there is one). FORM_ERROR Syntax: FORM_ERROR(err) Action: Displays the ALERT associated with the error numbered err. Example: PRINT FORM_ERROR(10) FORM_KEYBD Syntax: FORM_KEYBD(tree,obj,next_obj,char,new_obj,next_char) Action: Allows a form to be edited via the keyboard. Returns 0 if the FORM was exited, otherwise >0. tree address of the object tree obj number of the object to be edited next_obj number of the next EDITable object in the tree char input character new_obj object to be EDITed on the next call returns next_char - next character (derived from keyboard) This function is a subroutine of FORM_DO. FRAC Syntax: FRAC(x) Action: Returns the digits after the decimal point in a number. 'x' can be any numeric expression. if 'X' is an integer then a zero is returned, therefore FRAC(x)=x-TRUNC(x) FRE Syntax: f%=FRE(X) or f%=FRE() Action: Returns the amount of memory free (in bytes). The parameter 'x' is disregarded, but if present a 'Garbage Collection' is carried out. (non current strings are freed from memory). FSEL_INPUT Syntax: n%=FSEL_INPUT(path$,name$,[button]) Action: Calls the AES fileselect library, to provide a fileselector. The optional parameter 'button': Returns a 1 or 0 depending whether 'OK' or 'Cancel' was clicked on. ON ENTRY: path$ = initial directory path name$ = Default name ON EXIT: path$ = final directory path name$ = chosen filename. button = 1 if 'OK' = 0 if 'Cancel' FSETDTA Syntax: ~FSETDTA(addr) Action: Sets the address of the DTA. (See also FGETDTA). FSFIRST Syntax: FSFIRST(p$,attr) Action: Searches for the first file on a disk to fulfill the criteria specified in p$ (eg: "C:\*.GFA"). If found, the filename and attributes are to be found in the DTA. The parameter 'attr' is the file atributes to search on. FSNEXT Syntax: FSNEXT() Action: Search for the next file which fulfills the conditions of FSFIRST. Example: ~FSETDTA(BASEPAGE+128) e%=FSFIRST("\*.GFA",-1) ! all bits set DO UNTIL e% IF BYTE{BASEPAGE+149} AND 16 !if its a folder PRINT "*";CHAR{BASEPAGE+158} ! indicate by a star ELSE ! otherwise PRINT 'CHAR{BASEPAGE+158} ! a space before ' ! the filename ENDIF e%=FSNEXT() ! continue search LOOP FULLW Syntax: FULLW [#]n Action: Enlarges window 'n' to full screen size. 'n' is the window number. If the window has not yet been opened, this takes place automatically. FUNCTION The commands FUNCTION and ENDFUNC form a subroutine, in a similar manner to PROCEDURE. The name of the subroutine and, optionally, the list of varaibles are given after FUNCTION command. Calling the subroutine is done by the use of @ or FN and the function name followed by a list of parameters if necessary. If the command RETURN is met during program execution, the the value given after it or the value of the named variable is returned. In a function, RETURN can be used several times, with IF or the like. A function cannot be terminated without a RETURN command being before the ENDFUNC command. In a function name ending with the $ character the function returns a string result. Example: f1%=@fac_loop(15) PRINT "loop: fac(15) = ";f1% ' FUNCTION fac_loop(f%) w=1 FOR J%=1 TO f% MUL w,j% NEXT j% RETURN w ENDFUNC GB Address of the AES Parameter Block This (unlike the other AES address blocks) cannot be used with index. GCONTRL Address of the AES control block. With index (GCONTRL(2)) the elements can be accessed directly. GDOS? Returns TRUE (-1) if GDOS is resident and FALSE (0) otherwise. GEMDOS Syntax: GEMDOS(n[,x,y]) Action: To call the GEMDOS routines. The optional parameter list can be prefixed with W: or L: to denote word or longword parameters. (if non given, default is W:) Example: DO UNTIL GEMDOS(17) ALERT 1,"Printer not ready",1,"retry|break",d% LOOP UNTIL d%=2 GEMSYS Syntax: GEMSYS n Action: Calls the AES routine 'n'. The parameters necessary for the operation of the routine must first be placed in the appropriate AES parameter blocks. GET Syntax: GET x1,y1,x2,y2,sections$ Action: GET puts a section of the screen into a string variable 'section$' (x1,y1 and x2,y2 are coordinates of diagonally opposite corners). See also PUT. GET # Syntax: GET #n[,r] Action: Reads a record from a random access file. 'n' is the channel number (1 to 99) 'r' is number of the record to be read (1 to 65535) If 'r' is not given then the next record in the file will be read. (See also PUT #). GETSIZE Syntax: bytes%=GETSIZE(x1,y1,x2,y2) Action: The TT does not have a constant screen memory of 32000 Bytes like the ST. A screen could require much more memory (153600 Bytes). The commands GET and PUT are limited to 32000 Bytes and therefore a function has been introduced to support the larger screen resolutions that require more than 32000 Bytes. This function will return the number of Bytes required by the screen between the coordinates x1,y1,x2,y2. Several GET or PUT commands could be used to address the entire screen. GINTIN Address of the AES Integer input block. (Can be used with index GINTIN(0)). GINTOUT Address of the AES Integer output block. (Can be used with index GINTOUT(0)). GOSUB Syntax: GOSUB name [ (LIST OF EXPRESSIONS) ] Action: Branches to the procedure called 'name'. A procedure name can begin with a digit and contain letters, numbers, dots and the underline dash. '(list of expressions)' contains the values of any local variables to be passed to the procedure. When the interpreter comes across a GOSUB command, it branches to the procedure named in the gosub. It is possible to call further procedures whilst in a procedure. It is even possible to call the procedure one is in at the time (recursive call). GOTO Syntax: GOTO label Action: allows an unconditional jump to a label. 'label' must end in a colon and can consist of letters, numbers, dots, dashes and can begin with a digit. *** The following 10 functions form the Graphics library calls to the AES. GRAF_DRAGBOX Syntax: GRAF_DRAGBOX(iw,ih,ix,iy,rx,,ry,rw,rh[,last_ix,last_iy]) Action: Allows a rectangle to be moved about the screen with the mouse. Its movement is restricted to the interior of a larger specified rectangle. This function should only be called when the left mouse button is held down, as it terminates when the button is released. Returns 0 if an error occurs. INPUTS: iw,ih width & height of the moving rectangle ix,iy initial coords of top left corner of moving rectangle rx,ry coords of top left corner of limiting rectangle rw,rh width & height of limiting rectangle OUTPUTS: last_ix coords of top left corner of inside rectangle last_iy when the function terminated. GRAF_GROWBOX Syntax: GRAF_GROWBOX(sx,sy,sw,sh,dx,dy,dw,dh) Action: Draws an expanding rectangle. Returns 0 if error occurs. sx,sy Initial coords of top left corner of rectangle sw,sh Initial width & height of rectangle dx,dy Final coords of top left corner dw,dh Final width & height GRAF_HANDLE Syntax: GRAF_HANDLE(char_w,char_h,box_w,box_h) Action: Returns the ID number of the current VDI workstation and supplies the size of a character from the system set. OUTPUTS: char_w width in pixels of a character char_h height box_w width of a character cell box_h height GRAF_MKSTATE Syntax: GRAF_MKSTATE(mx,my,m_state,k_state) Action: This function supplies the current mouse coordinates and status of tht mouse buttons and shift keys. Returns a reserved value (always 1) OUTPUTS: mx,my mouse coordinates m_state mouse button status bit 0 left button bit 1 right button k_state see k_state in function EVNT_BUTTON GRAF_MOUSE Syntax: GRAF_MOUSE(m_form,pattern_adr) Action: This function allows the mouse shape to be changed. (similar command to DEFMOUSE) Returns 0 if an error occurs. m_form number of the mouse pointer shape 0 = Arrow 1 = Double curly brackets 2 = Busy bee 3 = Pointing finger 4 = Open hand 5 = Thin cross hairs 6 = Thick cross hairs 7 = Outlined cross hairs 255 = User defined 256 = Hide mouse 257 = Show mouse pattern_adr = address of bit information defining the mouse pointer. 37 word-sized values as follows: 1 = x coordinate of the action point 2 = y " " " " " 3 = number of colour levels, always 1 4 = mask colour, always 0 5 = pointer colour, always 1 6 to 21 = Mask definition (16 words ie.16x16 bits) 22 to 37 = Pointer def " GRAF_MOVEBOX Syntax: GRAF_MOVEBOX(w,h,sx,sy,dx,dy) Action: Draws a moving rectangle with constant width & height. Returns 0 on error. INPUTS: w,h width & height of rectangle sx,sy Initial coords of top left corner of rectangle dx,dy Final coords of top left corner GRAF_RUBBERBOX Syntax: GRAF_RUBBERBOX(tx,ty,min_w,min_h[,last_w,last_h]) Action: This function draws an outline of a rectangle while the the left mouse button is held down. The top left corner is fixed, but the width & height of the rectangle change with the position of the mouse. This function should only be called when the left mouse button is held down, as it terminates when the button is released. Returns 0 if an error occurs. INPUTS: tx,ty coords of top left corner min_w,min_h minimum width & height of rectangle OUTPUTS: last_w width of rectangle when function terminates last_h height " " " " " GRAF_SHRINKBOX Syntax: GRAF_SHRINKBOX(sx,sy,sw,sh,dx,dy,dw,dh) Action: Draws an shrinking rectangle. Returns 0 if error occurs. sx,sy Final coords of top left corner sw,sh Final width & height dx,dy Initial coords of top left corner of rectangle dw,dh Initial width & height of rectangle GRAF_SLIDEBOX Syntax: GRAF_SLIDEBOX(tree,parent_obj,slider_obj,flag) Action: This function (really belongs to the OBJECT library) moves one rectangular object within another, in a similar manner to GRAF_DRAGBOX. The object can only be moved vertically or horizontally, and must be a 'child' of the limiting object. This function should only be called when the left mouse button is held down, as it terminates when the button is released. Commonly used in movement of slider bars in windows. Returns the position of the moving rectangle relative to the limiting one: Horizontally: 0 = far left 1000 = far right Vertically: 0 = top 1000 = bottom INPUTS: tree address of oobject tree parent_obj object number of the 'limiting rectangle' slider_obj " " " " moving rectangle flag direction (0=horizontal, 1=vertical) GRAF_WATCHBOX Syntax: GRAF_WATCHBOX(tree,obj,in_state,out_state) Action: This function (really belongs to the OBJECT library) monitors an object tree while a mouse button is pressed, checking whether the mouse pointer is inside or outside. When the mouse button is released, the status of the object takes one of two specified values (normal selected/normal), depending on whether the pointer was inside the object or outside. Returns 1 if the mouse pointer was inside the object when the button was released, or 0 if it was outside. INPUTS: tree address of the tree obj number of the object to be monitored in_state Status (OB_STATE) to be given to the object if the mouse pointer is found within it. out_state Status (OB_STATE) to be given to the object if the mouse pointer is found outside it. GRAPHMODE Syntax: GRAPHMODE n Action: Sets the graphic mode 1 to 4. 1=replace 2=transparent 3=xor 4=reverse transparent HARDCOPY Syntax: HARDCOPY Action: Prints the screen (same as pressing & ). HEX$ Syntax: HEX$(x[,y]) Action: Changes the value of 'x' into a string expression which contains the value of 'x' in hexadecimal form. The optional parameter y specifies the number of character positions (1 to 8) to be used. HIDEM Syntax: HIDEM Action: Switches off the mouse pointer. (see also SHOWM). HIMEM Syntax: HIMEM Action: Returns the address of the area of memory which is not required by GFA Basic. Normally 16384 bytes below the screen. HLINE Syntax: HLINE x1,y,x2,f,m,addr,num_pattern Action: Similar to ALINE, but only horizontal lines can be drawn. x1 and x2 contain the x coordinates of the line start and end points and y the common y coordinate. f is the colour (0-15). m is the graphic mode. addr is the address of a block of memory which contains bit information for several line styles each of 16 bits. Which style is used for a given line depends on both the y coordinate and the parameter num_pattern. They are ANDed together and the resulting number used as an index to the style table. HTAB Positions the cursor to the specified column. (Counting from 0). See also VTAB IF Syntax: IF condition [ THEN ] program block ELSE program block ENDIF Action: Divides a program up into different blocks depending on how it relates to the 'condition'. ELSE IF condition Enables nested IF's to be more clearly expressed in a program. Example: 'the following code has no ELSE IF's DO t$=CHR$(INP(2)) IF t$="l" PRINT "Load text" ELSE IF t$="s" PRINT "Save text" ELSE IF t$="e" PRINT "Enter text" ELSE PRINT "unknown command" ENDIF ENDIF ENDIF LOOP The use of ELSE IF produces shorter code: DO t$=CHR$(INP(2)) IF t$="l" PRINT "Load text" ELSE IF t$="s" PRINT "Save text" ELSE IF t$="e" PRINT "Enter text" ELSE PRINT "unknown command" ENDIF LOOP IMP Syntax: x IMP y Action: The operator IMP (implication) corresponds to a logical consequence. The result is only FALSE if a FALSE expression follows a TRUE one. The sequence of the argument is important. IMP() Syntax: IMP(x,y) Action: This function resets a bit if the appropriate bit in x is set and y is reset, otherwise the bit is set. INC Syntax: INC var Action: Increases the value of 'var' by 1. the same as var=var+1 but executes aprox 3.5 times faster INFOW Syntax: INFOW n,"string$" Action: Allocates the (NEW) information line to the window with the number 'n'.If the string is empty then the line is removed altogether. As the info line cannot be switched off and on when the window is opened, infow has to be used in front of OPENW when an information line is required. If the command INFOW,n,"" is used ("" = null string) before OPENW then the window will have no info line. INKEY$ Syntax: INKEY$ Action: Reads a character from the keyboard. This function returns a string which is 2, 1 or 0 characters long. Normal keys, return the ASCII code. Function keys, HELP, UNDO etc. return two characters: The ASCII code zero and then the key code. Example: DO t$=INKEY$ IF t$<>"" IF LEN(t$)=1 PRINT "Character: ";t$,"ASCII code:";ASC(t$) ELSE PRINT "CHR$(0)+Scan code ";CVI(t$) ENDIF ENDIF LOOP INLINE Syntax: INLINE var,length Action: Reserves an area of memory within a program. var is any integer variable length is how much memory to reserve, less than 32700 bytes The reserved area always starts at an even address and is initially filled with zeros. When implementing INLINE this address is written to the integer variable adr. When the program is loaded or saved, the reserved area is also. Placing the cursor on the line containing the command INLINE and pressing the HELP key causes a new menu to appear with the entries: LOAD SAVE DUMP CLEAR. Load is used to load a machine code program or data into the reserved area, save saves the reserved area to disk (default filename extension .INL). DUMP printsout the reserved area in hex to the printer and CLEAR clears the araea of memory. INP INP&(#) INP%(#) OUT OUT& OUT% Syntax: INP(#n) OUT #n,a[,b,c...] Action: Reads one byte from a file previously opened with OPEN. Similarly OUT#n sends a byte to a file. The numerical expression n is the channel number under which the channel was opened. INP and OUT without the # can be used for communicating with the screen, keyboard etc. eg INP(2) takes a character from the keyboard. These functions cater for 16 and 32 bit input and output. Example: a%=CVL(INPUT$(4,#1)) is replaced by a%=INP%(#1) INP(n) INP?(n) OUT[#]n,a[,b..] OUT?(n) INP reads a byte from a peripheral device. The numerical expression n can accept values 0-5 (see table below), or contains a channel number(#n). The command OUT sends a byte to a peripheral device. You can send several bytes with one OUT command. INP? and OUT? determine the input or output status of a device. TRUE(-1) is device is ready ortherwise FALSE(0). n Device 0 LST: (list) Printer 1 AUX: (Auxiliary) RS232 2 CON: (Console) Keyboard/screen 3 MID: (MIDI) MIDI Interface 4 IKB: (Intelligent kbd) Keyboard processor 5 VID: (Video) Screen INPAUX$ INPMID$ Using these two commands, data can be read from the serial and MIDI interfaces. Example: DO PRINT INPAUX$; LOOP INPUT Syntax: INPUT ["text",]x{,y,...] INPUT ["text";]x[,y,...] Action: Allows entry of data during program execution. If "text" is given, then a string prompt is displayed. Example: INPUT a$ INPUT "",b$ INPUT "enter two numbers: ";x,y INPUT$ Syntax: INPUT$(count[,#n])) Action: Reads 'count' characters from the keyboard and assigns them to a string. Optionally, if the channel number n is specified, the characters are read in from a previously OPENed channel. INPUT #n,var1[,var2,var3,...] LINE INPUT #n,a1$[,a2$,a3$,...] These commands make it possible to take data from a previously OPENed device. Individual variables or variable lists (where the vars are separated by commas) can be input. INSERT Syntax: INSERT x(i)=y Action: Inserts an element into an array. The value of the expression y is inserted into the position x(i). All elements of the array are shifted up by one position, and the last element lost. See also DELETE. INSTR Syntax: INSTR([n,]a$,b$) OR INSTR(a$,b$[,n]) Action: Searches to see if b$ is present in a$ and returns its position. 'n' is a numeric expression indicating the position in a$ at which the search is to begin. If 'n' is not given the search begins at the first character of A$. If b$ is found in a$ the start position is returned. INT Syntax: INT(x) Action: Determines the largest integer that is less than or equal to 'x'. INTIN Address of the VDI integer input block. Also works with index INTIN(2). INTOUT Address of the VDI integer output block. Also works with index INTOUT(2). INT{x} Reads/writes a 2 byte signed integer from/to address x. (See also BYTE{}, CARD{}, LONG{}, {}, FLOAT{}, SINGLE{}, DOUBLE{}, CHAR{} ). KEYDEF Syntax: KEYDEF n,s$ Action: Assign a string to a Function Key. The number n (1-20) is the function key (for 11 and above use shift + function key). The string is any string. Whilst using the Basic Editor, you must also hold down the Alternate key, otherwise the normal menu commands would not work! KEYGET n KEYLOOK n KEYTEST n KEYTEST is simialr to INKEY$ and reads a character from the keyboard. If no key was pressed since the last input (apart from Alternate, Control, Shift and Caps Lock) the returned value is zero, otherwise its value corresponds to the key in the fashion shown below for KEYGET. KEYGET waits for a key to be pressed and then returns a long word value corresponding to the key. This 32 bit word is constructed as follows: Bits 0-8 the ASCII code Bits 8-15 Zero Bits 16-23 the scan code Bits 24-31 status of Shift, Control, Alternate, Caps lock as follows: Bit Key 24 Right shift 25 Left shift 26 Control 27 Alternate 28 Caps Lock KEYLOOK allows a character to be read from the keyboard buffer, without changing the buffer's contents, as with KEYGET or INKEY$. KEYPAD n Sets the usage of the numerical keypad. The numerical expression n is evaluated bit by bit and has the following meaning: Bit Meaning 0 1 0 NUMLOCK On Off 1 NUMLOCK Not Switchable Switchable 2 CTRL-KEYPAD Normal Cursor 3 ALT_KEYPAD Normal ASCII 4 KEYDEF without ALT Off On 5 KEYDEF with ALT Off On With bit 0 set the keypad will act as a 'PC' keypad with numlock off ie. it responds with cursor movements. With bit 1 set the 'PC' numlock mode can be toggled with Alternate and '-', otherwise it can't. With bit 2 set, numlock is effecively switched off while the Control key is held down. Thus Control-4 (on the keypad) produces cursor movements. With bit 3 set ASCII values for characters can be typed in with the Alternate key held down. When ALT is released the character appears. With bit 4 set, the character strings assigned with KEYDEF to the function keys are output when the key is pressed. With bit 5 set, the Alternate key must aslo be held down. The deafult when the ST is turned on is KEYPAD 0. with GFA Basic in operation it is 46. KEYPRESS n This simulates the pressing of a key. The character with the ASCII code contained in the lowest 8 bits of 'n' is added to the keyboard buffer. Additionally the status of the Shift, Control and Alternate keys may be passed in the high order bits as defined in KEYGET. If the ASCII code given is zero, a scan code may be passed in bits 16-23. Example: KEYPRESS &H3B0000 presses F1. Example: FOR i&=65 TO 90 ! Simulates the pressing KEYPRESS i& ! of keys A-Z NEXT i& KEYPRESS 13 !followed by Carriage Ret INPUT a$ !Characters are taken up ' !to the first CR. PRINT a$ KILL Syntax: KILL "filespec" Action: Deletes a file off disk (only one at a time). L: Enable the passing of numerical expressions to Operating system functions or to machine code routines. L: is a long word. Example: ~XBIOS(5,L:log_base%,L:phys_base%,-1) LEFT$ Syntax: LEFT$(a$[,x]) Action: Returns the first [or first 'x'] character[s] of a string. LEN Syntax: LEN(x$) Action: Returns the length of a string. LET Syntax: [LET] var=expression Action: Assigns a variable with the value of an expression. LINE Syntax: LINE x,y,xx,yy Action: Connects two points ('x,y' & 'xx,yy') with a straight line, and is identical to DRAW x,y TO xx,yy. LINE INPUT Syntax: LINE INPUT ["text",]var$ [,var$... ] LINE INPUT ["text";]var$ [,var$... ] Action: Makes it possible to enter a string during program execution. This command is the same as INPUT except that a comma is taken as part of the entered string and not as a separator. Only is regarded as a separator. LINE INPUT# See INPUT# LIST Syntax: LIST "filename" Action: stores the program currently in memory to disk in ASCII format. If the 'filename' is an empty string (eg. "") then the listing is shown on the screen. In all other cases this command is the same as the editor menu option SAVE,A. Programs to be joined together using the command MERGE must be saved using LIST (or SAVE,A from the menu bar) LLIST Syntax: LLIST Action: Prints out the listing of the current program. The setting for the type of output is controlled by the '.' commands in the editor. LOAD Syntax: LOAD "filespec" Action: Loads a program into memory. LOC Syntax: LOC(#n) Action: Returns the location of the file pointer for the file with the channel number 'n' The location is given in number of bytes from the start of the file. LOCAL Syntax: LOCAL var [ ,var.... ] Action: Declares 'var' to be a local variable. LOCATE Syntax: LOCATE row,column Action: Positions the cursor to the specified location. LOF Syntax: LOF(#n) Action: Returns length of file OPENed for channel number 'n'. LOG LOG10 Syntax: LOG(x) LOG10(x) Action: Determines the natural logarithm (log) or the logarithm base 10 (log10) of 'x'. LONG{x} Reads/writes a 4 byte integer from/to address x. or (See also BYTE{}, CARD{}, INT{}, FLOAT{}, SINGLE{}, {x} DOUBLE{}, CHAR{} ). LOOP See DO LOOP UNTIL condition LOOP WHILE condition The commands DO and LOOP can be extended using UNTIL and WHILE. LOOP WHILE causes the program to jump back to the DO command as long as the condition is true. LOOP UNTIL requires the condition to be false to cause the loop back. LPEEK(x) Reads a 4 byte integer from address x. (In supervisor mode) LPENX For the STE. Returns the x coordinate of a light pen. LPENY For the STE. Returns the y coordinate of a light pen. LPOKE n,x Writes a 4 byte ineger 'x' to address n. Not in supervisor mode. (Add an 'S' to do in super mode ie. SLPOKE n,x). LPOS Syntax: LPOS(n) Action: Returns the column in which the printer head (in the printer buffer) is located. LPRINT Syntax: LPRINT [expressions [,][;][']] Action: prints data on the printer. 'expression' is any number of expressions separated by commas or semicolons or apostrophes. If none of these is given a semicolon is assumed. LSET Syntax: LSET var=string Action: Puts the 'string' in the string variable 'var' justified to the left. L~A Returns the base address of the LINE-A variables. MALLOC(x) Allocates an area of memory. (GEMDOS 72) If x is -1, then the function returns the largest contiguous free memory block. If x is positive, then MALLOC reserves that area of memory and returns its base address. If 0 is returned then there was a fault with the allocation. See also RESERVE, MFREE, MSHRINK. The following 33 commands are for the handling of MATRIXES MAT ADD MAT ADD a(),b() MAT ADD a(),x MAT ADD a()=b()+c() MAT BASE MAT CLR a() MAT CPY MAT CPY a([i,j])=b([k,l])[,h,w] MAT DET x=a([i,j])[,n] MAT INPUT #i,a() MAT INV a()=b() MAT MUL MAT MUL a(),x MAT MUL a()=b()*c() MAT MUL x=a()*b() MAT MUL x=a()*b()*c() MAT NORM a(),0 MAT NORM a(),1 MAT ONE a() MAT PRINT MAT PRINT [#i]a[,g,n] MAT QDET x=a([i,j])[,n] MAT RANG x=a([i,j])[,n] MAT READ MAT READ a() MAT SET a()=x MAT SUB MAT SUB a(),b() MAT SUB a(),x MAT SUB a()=b()-c() MAT TRANS a()[=b()] MAT XCPY MAT XCPY a([i,j])=b([k,l])[,h,w] Linear operations with vectors and matrices. All THE MAT functions described relate only to one and/or two- dimensional fields with floating point variables. System commands MAT BASE 0 MAT BASE 1 The MAT BASE command can only sensibly be used when OPTION BASE 0 has been activated. In this case, MAT BASE 1 can be used to set the offset for the start of the row and column indexing of one or two-dimensional fields with floating point variables to 1 for the matrix operations. MAT BASE 0 resets this offset to 0 after a MAT BASE 1. The setting made with MAT BASE n affects the following commands MAT READ MAT PRINT MAT CPY MAT XCPY MAT ADD MAT SUB MAT MUL The default is MAT BASE 1. Generating commands MAT CLR a() MAT SET a()=x MAT ONE a() a: Name of field with numeric variables x: aexp MAT CLR a() corresponds to an ARRAYFILL a(),0, i.e. the command sets all elements in the field (matrix or vector) a() to a value of 0. MAT SET a()=x corresponds to an ARRAYFILL a(),x, i.e. the command sets all elements in the field a() (matrix or vector) to the value x. MAT ONE a() generates from a square matrix a() a uniform matrix, i.e. a square matrix in which elements a(1,1),a(2,2),...,a(n.n) are all equally 1 and all other elements equally 0. Write and Read commands MAT READ a() MAT PRINT [#i]a[,g,n] MAT INPUT #i,a() i,g,n: iexp a: Name of field with numerical variables MAT READ a() reads a previously dimensioned matrix or vector from DATA rows. MAT PRINT [#i,]a()[,g,n] outputs a matrix or a vector. Vectors are output on one row, the elements being separated by commas. With matrix, each row is followed by a rowfeed. The output can optionally be redirected with #i, as with PRINT. If g and n are specified, the numbers are formatted as with STR$(x,g,n). MAT INPUT #1,a() reads a matrix or vector from a file in ASCII format (the format being the reverse of MAT PRINT, commas and rowfeeds may be varied as with INPUT #). Copy and Transposition commands MAT CPY a([i,j])=b([k,l])[,h,w] MAT XCPY a([i,j])=b([k,l])[,h,w] MAT TRANS a()[=b()] a,b: Name of fields with numerical variables i,j,k,l,h,w: iexp MAT CPY a([i,j])=b([k,l])[,h,w] copies h rows with w elements each from matrix b to the row and column offset of matrix a defined by i,j, starting from the row and column offset of matrix b defined by l,k. Special cases MAT COPY a()=b() copies the complete matrix b into matrix a if the matrix are of the same order. Only those elements are copied in this process for which identi- cal indices are given in both the source and the destination matrix. MAT COPY a(i,j)=b() copies matrix b, starting from the row and column offset defined by MAT BASE, to the row and column offset of matrix a defined by i,j. Only those elements are copied for which identical indices are given in both the source and the destination matrix. MAT COPY a()=b(i,j) copies matrix b, starting from the row and column offset defined by i,j, to the offset of matrix a defined by MAT BASE. Only those elements are copied for which identical indices are given in both the source and the destination matrix. MAT COPY a(i,j)=b(k,l) copies matrix b, starting from the row anumn offset of matrix a defined by i,j, starting from the row and column offset of matrix b defined by l,k. Special cases MAT COPY a()=b() copies the complete matrix b into matrix a if the matrix are of the same order. Only those elements are copied in this process for which identi- cal indices are given in both the source and the destination matrix. MAT COPY a(i,j)=b() copies matrix b, starting from the row and column offset defined by MAT BASE, to the row and column offset of matrix a defined by i,j. Only those elements are copied for which identical indices are given in both the source and the destination matrix. MAT COPY a()=b(i,j) copies matrix b, starting from the row and column offset defined by i,j, to the offset of matrix a defined by MAT BASE. Only those elements are copied for which identical indices are given in both the source and the destination matrix. MAT COPY a(i,j)=b(k,l) copies matrix b, starting from the row and column offset defined by k,l, to the offset i,j of matrix a. Only those elements are copied for which identical indices are given in both the source and the destination matrix. MAT COPY a()=b() copies h rows with w elements each from the matrix b, starting from the row and column offset defined by MAT BASE, the row and column offset of matrix a defined by MAT BASE. Only those elements are copied for which identical indices are given in both the source and the destination matrix. MAT XCPY a([i,j])=b([k,l])[,h,w] works basically in the same manner as MAT CPY a([i,j])=b([k,l])[,h,w], except that matrix b is being transposed while being copied to matrix a, i.e. the rows and columns of matrix b are swapped while it is copied to matrix a. Array b remains unchanged, however. Only those elements are copied for which identical indices are given in both the source and the destination matrix. Further special cases As with MAT CPY a(i,j)=b(k,l),w,h. If MAT CPY or MAT XCPY are applied to vectors, j and l may be ignored. Following a DIM a(n),b(m), a() and b() are interpreted as row vectors, i.e. as matrix of the (1,n) or (1,m) types. For a and b to be treated as column vectors, they must be dimensioned as matrix of the (n,1) or (m,1) type, ie. DIM a(n,1),b(n,1). If both vectors are of the same order (both are row or column vectors), MAT CPY must be used. Irrespective of the type of vectors a and b, MAT CPY always treats both vectors syntactically as column vectors, so that the correct syntax to be used for MAT CPY is always MAT CPY a(n,1)=b(m,1)! MAT CPY a(3,1)=b(1,1) ! interprets a() and b() as column vectors For MAT XCPY, one of the two vectors a and b must be explicitly dimensioned as a row vector, the other as a column vector. Since MAT XCPY first transposes the second vector before copying it to the first. For this reason, MAT XCPY can only be used for DIM a(1,n),b(m,1)d column offset defined by k,l, to the offset i,j of matrix a. Only those elements are copied for which identical indices are given in both the source and the destination matrix. MAT COPY a()=b() copies h rows with w elements each from the matrix b, starting from the row and column offset defined by MAT BASE, the row and column offset of matrix a defined by MAT BASE. Only those elements are copied for which identical indices are given in both the source and the destination matrix. MAT XCPY a([i,j])=b([k,l])[,h,w] works basically in the same manner as MAT CPY a([i,j])=b([k,l])[,h,w], except that matrix b is being transposed while being copied to matrix a, i.e. the rows and columns of matrix b are swapped while it is copied to matrix a. Array b remains unchanged, however. Only those elements are copied for which identical indices are given in both the source and the destination matrix. Further special cases As with MAT CPY a(i,j)=b(k,l),w,h. If MAT CPY or MAT XCPY are applied to vectors, j and l may be ignored. Following a DIM a(n),b(m), a() and b() are interpreted as row vectors, i.e. as matrix of the (1,n) or (1,m) types. For a and b to be treated as column vectors, they must be dimensioned as matrix of the (n,1) or (m,1) type, ie. DIM a(n,1),b(n,1). If both vectors are of the same order (both are row or column vectors), MAT CPY must be used. Irrespective of the type of vectors a and b, MAT CPY always treats both vectors syntactically as column vectors, so that the correct syntax to be used for MAT CPY is always MAT CPY a(n,1)=b(m,1)! MAT CPY a(3,1)=b(1,1) ! interprets a() and b() as column vectors For MAT XCPY, one of the two vectors a and b must be explicitly dimensioned as a row vector, the other as a column vector. Since MAT XCPY first transposes the second vector before copying it to the first. For this reason, MAT XCPY can only be used for DIM a(1,n),b(m,1): a()=row vector, b()=column vector and DIM a(n,1),b(1,m): a()=column vector, b()=row vector. Optionally, the parameters h and w can also be used when copying vectors with MAT CPY or MAT XCPY. However, the following applies: with MAT CPY, only the h parameter is used for w=>1. No copying takes place with w=0. With MAT XCPY, only h is used for w=>1 if b is a column vector to be copied into a row vector after transposition. No copying takes place when w=0. On the other hand, only w is used for h=>1 if b is a row vector which is to be copied to a column vector after transposition. In this case, no copying takes place if h=0. MAT TRANS a()=b() copies the transposed from matrix b to matrix a if a and b are dimensioned accordingly, i.e. the number of rows from a must correspond to the number of columns in b, and the number of columns from a to the number of rows of n. In the case of a square matrix, i.e. one with equal numbers of rows and columns, MA: a()=row vector, b()=column vector and DIM a(n,1),b(1,m): a()=column vector, b()=row vector. Optionally, the parameters h and w can also be used when copying vectors with MAT CPY or MAT XCPY. However, the following applies: with MAT CPY, only the h parameter is used for w=>1. No copying takes place with w=0. With MAT XCPY, only h is used for w=>1 if b is a column vector to be copied into a row vector after transposition. No copying takes place when w=0. On the other hand, only w is used for h=>1 if b is a row vector which is to be copied to a column vector after transposition. In this case, no copying takes place if h=0. MAT TRANS a()=b() copies the transposed from matrix b to matrix a if a and b are dimensioned accordingly, i.e. the number of rows from a must correspond to the number of columns in b, and the number of columns from a to the number of rows of n. In the case of a square matrix, i.e. one with equal numbers of rows and columns, MAT TRANS a() may be used. This command swaps the rows and columns of matrix a and writes the matrix thus changed back to a. (The original matrix is lost in the process (but can be restored with another MAT TRANS a()). Operation commands MAT ADD a()=b()+c() MAT ADD a(),b() MAT ADD a(),x MAT SUB a()=b()-c() MAT SUB a(),b() MAT SUB a(),x MAT MUL a()=b()*c() MAT MUL x=a()*b() MAT MUL x=a()*b()*c() MAT MUL a(),x MAT NORM a(),0 MAT NORM a(),1 MAT DET x=a([i,j])[,n] MAT QDET x=a([i,j])[,n] MAT RANG x=a([i,j])[,n] MAT INV a()=b() a,b,c: Names of numerical floating point fields x: aexp; scalar value i.j,n: aexp MAT ADD a()=b()+c() is only defined for matrix (vectors) of the same order, e.g. DIM a(n,m),b(m,m),c(n,m) or DIM a(n),b(n),c(n). Array c is added to matrix b, element by element, and the result is written to matrix a. MAT ADD a(),b() is only defined for matrix (vectors) of the same order, e.g. DIM a(n,m),b(n.m) or DIM a(n),b(n). Array bT TRANS a() may be used. This command swaps the rows and columns of matrix a and writes the matrix thus changed back to a. (The original matrix is lost in the process (but can be restored with another MAT TRANS a()). Operation commands MAT ADD a()=b()+c() MAT ADD a(),b() MAT ADD a(),x MAT SUB a()=b()-c() MAT SUB a(),b() MAT SUB a(),x MAT MUL a()=b()*c() MAT MUL x=a()*b() MAT MUL x=a()*b()*c() MAT MUL a(),x MAT NORM a(),0 MAT NORM a(),1 MAT DET x=a([i,j])[,n] MAT QDET x=a([i,j])[,n] MAT RANG x=a([i,j])[,n] MAT INV a()=b() a,b,c: Names of numerical floating point fields x: aexp; scalar value i.j,n: aexp MAT ADD a()=b()+c() is only defined for matrix (vectors) of the same order, e.g. DIM a(n,m),b(m,m),c(n,m) or DIM a(n),b(n),c(n). Array c is added to matrix b, element by element, and the result is written to matrix a. MAT ADD a(),b() is only defined for matrix (vectors) of the same order, e.g. DIM a(n,m),b(n.m) or DIM a(n),b(n). Array b is added to matrix a, element by element, and the result is written to matrix a. The original matrix a is lost in the process. MAT ADD a(),x is defined for all matrix (vectors). Here, the scalar x is added to matrix a, element by element, and the result is written to matrix a. The original matrix a is lost in the process. MAT SUB a()=b()+c() is only defined for matrix (vectors) of the same order, e.g. DIM a(n,m),b(n,m),c(n,m) or DIM a(n),b(n),c(n). Array c is subtracted from matrix b, element by element, and the result is written to matrix a. MAT SUB a(),b() is only defined for matrix (vectors) of the same order, e.g. DIM a(n,m),b(n,m) or DIM a(n),b(n). Array b is subtracted from matrix a, element by element, and the result written to matrix a. The original matrix a is lost in the process. MAT SUB a(),x is defined for all matrix (vectors). Here, the scalar x is subtracted from matrix x, element by element, and the result is written to mat is added to matrix a, element by element, and the result is written to matrix a. The original matrix a is lost in the process. MAT ADD a(),x is defined for all matrix (vectors). Here, the scalar x is added to matrix a, element by element, and the result is written to matrix a. The original matrix a is lost in the process. MAT SUB a()=b()+c() is only defined for matrix (vectors) of the same order, e.g. DIM a(n,m),b(n,m),c(n,m) or DIM a(n),b(n),c(n). Array c is subtracted from matrix b, element by element, and the result is written to matrix a. MAT SUB a(),b() is only defined for matrix (vectors) of the same order, e.g. DIM a(n,m),b(n,m) or DIM a(n),b(n). Array b is subtracted from matrix a, element by element, and the result written to matrix a. The original matrix a is lost in the process. MAT SUB a(),x is defined for all matrix (vectors). Here, the scalar x is subtracted from matrix x, element by element, and the result is written to matrix a. The original matrix a is lost in the process. MAT MUL a()=b()*c() is defined for matrix of an "appropriate" order. Arrays b and c are multiplied with each other. The result of this multiplication is written to matrix a. In order for the result to be defined, the matrix on the left (matrix b in this case) must have the same number of columns as the matrix on the right (c in this case) has rows. Array a, in this case, must have as many rows as b and as many columns as c. Arrays are multiplied as "row by column", i.e. element a(i.j) is obtained by multiplying the elements in the ith row of matrix b with the elements in the jth column of matrix c, element by element, and then adding up the individual products. With vectors instead of matrix, MAT MUL a()=b()*c() results in the dyadic (or external) product of two vectors. MAT MUL x=a()*b() is only defined for vectors with an equal number of elements. The result x is the scalar product (the so- called interior product) of vectors a and b. The scalar product of two vectors is defined as the sum of n products a(i)*b(i),i=1,...,n. MAT MUL x=a()*b()*c() is defined for qualified Vectors a and c as well as qualified Matrix b(). MAT NORM a(),0 or MAT NORM a(),1 are defined for matrix and vectors. MAT NORM a(),0 normalises a matrix (a vector) by rows, MAT NORM a(),1 by columns. This means that after a normalisation by rows (by columns) the sum of the squares of all elements in each row (column) is identical at 1. MAT DET x=a([i,j])[,n] calculates the determinants of a square matrix of the (n,n) type. The row and column offsets are preset to a(0,0) or a(1,1), depending on MAT BASE 0 or MAT BASE 1, assuming that OPTION BASE 1 is enabled. It is also possible, however, to calculate the determinant of a square part matrix. To do this, the row and column offsets of a() must be specified as i and j, and the number of elements in the part matrix as n. A part matrix of the (n,n) type is then created internally starting from the "position" ith row, jth column. MAT QDET x=a([i,j])[,n] works in the same manner as MAT DET x = a([i,j])[,n], except that it has been optimised for speed rather than accuracy. Both will normally produce identical re- sults. With "critical" matrix, whose determinant is close to 0, you should always use MAT DET, though. MAT RANG x=a([i,j])[,n] outputs the rank of a square matrix. As with MAT DET or MAT QDET, you can select any row and column offset. The number of elements in the part matrix must be specified with n. This creates a part matrix of the (n,n) type internally, starting from the "position ith row, jth column. MAT INV b()=a() is used to determine the inverses of a square matrix. The inverse of matrix a() is written to matrix b(), hence b() must be of the same type as a(). MAX Syntax: MAX(x [,y,z,...]) or MAX(a$[,y$,z$....]) Action: Returns the greatest value (or largest string) from a list of expressions. MENU(x) Returns the information about an event in the variable 'x' (-2 to 15). In the case where an item in a menu is selected, the index of that item is found in MENU(0). MENU(-2) is the address of the message buffer. MENU(-1) is the address of the menu object tree. The Message Buffer lies in the the variables MENU(1) to MENU(8) and the AES Integer Output Block in MENU(9) to MENU(15). The Identification number of the event is in MENU(1). The other elements of the message bufffer contain various values, depending on the type of event that occured. MENU(1)=10 A Menu Item was selected. MENU(0) Menu item index in the item list MENU(4) Object number of the menu title MENU(5) Object number of the chosen menu item MENU(1)=20 A window redraw is required MENU(4) ID number (handle) of the window MENU(5),(6) Coordinates of top left corner of the window MENU(7),(8) Width & height of the window area MENU(1)=21 A window was clicked (activated) MENU(4) ID number (handle) of the window MENU(1)=22 The close box of a window was clicked on MENU(4) ID number (handle) of the window MENU(1)=23 The full box was clicked on MENU(4) ID number (handle) of the window MENU(1)=24 One of the four arrow boxes, or a slider bar area was clciked. The movement of a slider is detected as below, MENU(1)=24 only when the grey area is clicked on. MENU(4) ID number (handle) of the window MENU(5) The area of the window that was clicked: 0: Above the vertical slider 1: Below " " " 2: Up arrow 3: Down arrow 4: Left of the horizontal slider 5: Right " " " " 6: Left arrow 7: Right arrow MENU(1)=25 The horizontal slider was moved MENU(4) ID number (handle) of the window MENU(5) Position of the moved slider (1 to 1000) MENU(1)=26 The vertical slider was moved MENU(4) ID number (handle) of the window MENU(5) Position of the moved slider (1 to 1000) MENU(1)=27 The size of the window was changed (using the size box) MENU(4) ID number (handle) of the window MENU(5),(6) New x and y coordinates of top left MENU(7),(8) New width & height MENU(1)=28 The window's position was changed same parameters as above MENU(1)=29 A new GEM window was activated. MENU(4) ID number (handle) of the window MENU(1)=40 An Accessory was selected. This value can only be received by an accessory, which should chech the value in MENU(5) to see if it is that one being referred to. MENU(5) ID of the accessory MENU(1)=41 An accessory was closed. This value can only be received from an accessory. MENU(5) ID of the accessory The varaible MENU(9) contains bit information on which kind of event has occurred. If the bit for the appropriate event is set, the variables MENU(9) to MENU(15) and GINTOUT(0) to GINTOUT(6) will contain information as follows: Bit 0 Keyboard Bit 1 Mouse button Bit 2 Mouse has entered/left rectangle 1 Bit 3 Mouse has entered/left rectangle 2 Bit 4 A message arrived in the message buffer Bit 5 Timer event MENU(10) x position of mouse when event terminated MENU(11) y position of mouse when event terminated MENU(12) Mouse buttons pressed: 0 = none 1 = left 2 = right 3 = both buttons See also ON MENU BUTTON MENU(13) supplies the status of the keyboard shift keys in a bit pattern: Bit 0 = right shift Bit 1 = left shift Bit 2 = control Bit 3 = alternate See also ON MENU KEY MENU(14) Gives information about a pressed key. The low order byte contains the ASCII code, and the high order byte, the keyboard scan code MENU(15) Returns the number of mouse clicks that caused the event MENU Syntax: MENU m$() Action: Displays a menu bar. The string array m$() contains the headings, entries and reserved space for accessories for the menu bar. The following format must be adhered to: m$(0) Name of the accessory menu heading m$(1) Name of the first entry in the first menu m$(2) A line of minus signs m$(3)-m$(8) Reserved space for accessories. These elements need only be 1 character long. m$(9) An empty string, which marks the end of the first menu. All further menu entries have the following format: 1. Heading of the menu 2. List of menu entries 3. An empty string which marks the end of the menu. After the last entry, a further empty string signifies the end of the entire pull down menu. eg: DIM entry$(20) DATA " Desk "," Test " DATA ----------,1,2,3,4,5,6,"" DATA " File "," Load "," Save " DATA --------," Quit ","" DATA " Titles "," Entry 1 "," Entry 2 ","" DATA End i%=-1 REPEAT INC i% READ entry$(i%) UNTIL entry$(i%)="End" entry$(i%)="" MENU entry$() ON MENU GOSUB evaluate ' REPEAT ON MENU UNTIL MOUSEK AND 2 ' PROCEDURE evaluate MENU OFF ' MENU(0) contains array index of selected item m%=MENU(0) PRINT entry$(m%) ' ALERT 0,"Tick before item ?",0,"YES|NO",a% IF a%=1 MENU m%,1 ELSE MENU m%,0 ENDIF ' ALERT 0,"Lightened characters | (Not selectable)",0,"YES|NO",a% IF a%=1 MENU m%,2 ELSE MENU m%,3 ENDIF RETURN MENU x,y Action: The x-th entry of a menu can be given certain (y) attributes: 0 remove tick from in front of menu entry 1 install tick " " " " " 2 make menu entry non selectable (light text) 3 make menu entry selectable (normal text) See MENU example. MENU KILL Action: Deactivates a menu, but does not remove it from the screen. Also turns off the ON MENU GOSUB options. MENU OFF Action: Returns a menu title to 'normal' display. (After an item is chosen from a menu, the title is shown in reverse video). MENU_BAR Syntax: a%=MENU_BAR(tree%,flag) Action: Displays/erases a menu bar (from a resource file) Returns 0 if an error occurred. tree = address of the menu object tree flag - 1 display bar - 2 erase bar See also MENU x$ and MENU KILL MENU_ICHECK Syntax: a%=MENU_ICHECK(tree,item,flag) Action: Deletes/displays a tick against a menu item. tree = address of the menu object tree item = object number of the menu item flag - 1 delete tick - 2 display tick See also MENU x,0 and MENU x,1 MENU_IENABLE Syntax: a%=MENU_IENABLE(tree,item,flag) Action: Enables/disables a menu entry. tree = address of the menu object tree item = object number of the menu entry flag - 1 disable - 2 enable See also MENU x,2 and MENU x,3 MENU_REGISTER Syntax: a%=MENU_REGISTER(ap_id,m_text$) Action: Give a desk accessory a name, and insert it into the accessory menu entries. (provided the number of Accs is less than 6). Returns the object number of the appropriate menu item: 0-5 for a valid result -1 no more entries possible ap_id = ID number of the accessory m_text$ = name for the Accessory MENU_TEXT Syntax: a%=MENU_TEXT(tree,item,new_text$) Action: Changes the text of a menu item. Returns 0 on error. tree = address of the menu object tree item = object number of the menu item new_text$ the new text for the menu entry (may not exceed the old text length) MENU_TNORMAL Syntax: a%=MENU_TNORMAL(tree,title,flag) Action: Switches the menu title to normal/inverse video. Returns 0 on error. tree = address of the menu object tree item = object number of the menu item flag - 1 inverse video - 2 normal video See MENU OFF MFREE Syntax: a%=MFREE(y) Action: (GEMDOS 73) Releases the storage location reserved with MALLOC. The parameter 'y' specifies the start of the area of memory to be released. Returns 0 if no error occurred, otherwise negative result. MID$ Syntax: MID$(a$,x[,y]) (as a function) Action: Returns 'y' characters in a string from the positon 'x' of the string 'a$'. If x is larger than the length of a$, then a null string is returned. If y is omitted, then the function returns the whole of the string from position x onwards. MID$ Syntax: MID$(a$,x[,y]) (as a command) Action: MID$ used as a command, makes it possible to replace part of a string variable a$ with the string expression b$. So with MID$(a$,x,y)=b$, characters from b$ will overwrite those in a$, starting at the x- th postion of a$. The optional parameter y determines how many characters of b$ are used. If y is omitted, then as many characters as possible of a$ are replaced with those from b$. The length of a$ is unchanged, so that no charatcers will be written beyond the end of a$ eg: a$="GFA SYSTEMTECHNIK" MID$(a$,5)="BASIC " would result in a$ being "GFA BASIC TECHNIK" MIN Syntax: MIN(expression [ ,expression... ]) Action: Returns the smallest value (or smallest string) from a list of expressions. MKDIR Syntax: MKDIR "directory name" Action: Creates a new directory. 'directory name' is the name of the new directory. MKI$ MKL$ MKS$ MKF$ MKD$ Syntax: MKI$(N) MKL$(N) MKS$(N) MKF$(N) MKD$(N) Action: Transforms a number into a character string. MKI$ 16-bit number into a 2-byte string. MKL$ 32-bit number into a 4-byte string. MKS$ a number into an atari basic 4-byte format. MKF$ a number into GFA Basics own 6-byte format. MKD$ a number into a Mbasic compatible 8-byte format. Every number that is to be stored in a random access file must first be transformed with on of the above functions. The example above shows that GFA Basic stores numbers internally in the 6-byte format which can also be created using the MKF$ function. See also CVI,CVL,CVD,CVF MOD Syntax: a=x MOD y or a=MOD(x,y) Action: Produces the remainder of the division of x by y. The command in brackets operates in integer arithmetic. MODE Syntax: MODE n Action: With MODE the representation of decimal point and the 'thousands comma' are interpreted by PRINT USING (and also by STR$ with 3 parameters). Also selects the format of date representation used by DATE$, SETTIME, and FILES. MODE USING DATE$ 0 #,###.## 16.05.1988 1 #,###.## 05/16/1988 2 #.###,## 16.05.1988 3 #.###,## 05/16/1988 MONITOR Syntax: MONITOR [x] Action: Calls a monitor resident in memory. This instruction causes an illegal instruction vector. (address 16). The parameter x is passed via the register D0. MOUSEX MOUSEY MOUSEK MOUSE mx,my,mk Syntax: MOUSE x,y,k x=MOUSEX y=MOUSEY k=MOUSEK Action: Determines the mouse position (x,y) and the status of the mouse buttons: k=0 no buttons pressed k=1 left button k=2 right button k=3 both buttons MSHRINK Syntax: a%=MSHRINK(y,z) Action: (GEMDOS 74) Reduces the size of a storage area previously allocated with MALLOC. y specifies the address of the area,z gives the required size. Returns 0 if no error, -40 if incorrect address, or - 67 if size wrong. See also RESERVE MALLOC MFREE MUL Syntax: MUL var,n Action: Multiplies the value 'var' by 'n'. same as var=var*n but executes 30% faster. MUL() Same as for MUL. but integers only. MW_OUT Syntax: MWOUT mask,data This command controls the STE-Internal Micro-Wire- Interface, and is currently used for controlling sound. MWOUT &H7FF,x x=&X10 011 ddd ddd Set Master Volume 000 000 -80 dB 010 100 -40 dB 101 xxx 0 dB The value of the last 5 Bits is eqivalent to HALF of the volume in dB. x=&X10 101 xdd ddd Set Right Channel Volume 00 000 -40 dB 01 010 -20 dB 10 1xx 0 dB x=&X10 100 xdd ddd Set Right Channel Volume The last 4 Bits*2 = dB x=&X10 010 xxd ddd Set Treble x=&X10 001 xxd ddd Set Bass 0 000 -12dB 0 110 0 dB (flat) 1 100 +12 dB x=&X10 000 xxx xdd Set Mix 00 -12dB 01 Mix GI Sound (normal ST) 10 Not Mix 11 Reserved Example: MWOUT &H7FF,&X10000000010 Switches the ST's sound off. NAME Syntax: NAME "oldfile" AS "newfile" Action: Renames an existing file. The contents of the file are not affected. NEW Syntax: NEW Action: Deletes the program currently in memory and clears all variables. NOT Syntax: NOT x Action: Negates a given logical expression. The following 19 commands belong to the AES Object library. OBJC_ADD Syntax: a%=OBJC_ADD(tree,parent,child) Action: Adds an object to a given tree and pointers between the existing objects and the new object are created. Returns 0 on error. tree address of the object tree parent object number of the parent object child object number of the child to be added. OBJC_CHANGE Syntax: a%=OBJC_CHANGE(tree,obj,res,cx,cy,cw,ch,new_status,re_draw) Action: Changes the status of an object. Returns 0 on error. tree address of the object tree obj number of the object to be changed res reserved (always 0) cx,cy coordinates of top left corner of clipping rectangle cw,ch width & height of clipping rectangle new_status new object status re_draw 1 = redraw object 0 = don't redraw OBJC_DELETE Syntax: a%=OBJC-DELETE(tree,del_obj) Action: An object is deleted from an object tree by removing the pointers. The object is still there and can be restored by repairing the pointers. Rteurns 0 on error. tree address of the object tree del_obj Object number of the object to delete. OBJC_DRAW Syntax: a%=OBJC_DRAW(tree,start_obj,depth,cx,cy,cw,ch) Action: Draws whole objects or part of objects on screen. A clipping rectangle is specified, to which the drawing is limited. Returns 0 on error. tree address of the object tree start_obj number of the first object to be drawn depth Number of object levels to be drawn cx,cy coordinates of top left corner of clipping rectangle cw,ch width & height of clipping rectangle OBJC_EDIT Syntax: a%=OBJC_EDIT(tree,obj,char,old_pos,flag,new_pos) Action: Allows input and editing in G_TEXT and G_BOXTEXT object types. Returns 0 on error. tree address of the object tree obj number of the object to be changed char input character (incl. scan code) old_pos current cursor position in input string flag funtion: 0 ED_START -reserved- 1 ED_INIT string is formatted & cursor on 2 ED_CHAR Character processed & string redisplayed 3 ED_END Text cursor switched off new_pos returns new pos of text cursor to this variable. OBJC_FIND Syntax: a%=OBJC_FIND(tree,start_obj,depth,fx,fy) Action: Determines the object, if any, which is at the coordinates specified in fx,fy. Returns the object number, or -1 if no object found. tree address of the object tree start_obj number of the object from where to search depth Number of object levels to be searched fx x coordinate (usually MOUSEX) fy y coordinate (usually MOUSEY) OBJC_OFFSET Syntax: a%=OBJC_OFFSET(tree,obj,x_abs,y_abs) Action: Calculates the absolute screen coordinates of the specified object. Returns 0 on error. tree address of the object tree obj object number x_abs,y_abs returns the x,y coordinates to these variables. OBJC_ORDER Syntax: a%=OBJC_ORDER(tree,obj,new_pos) Action: re-positions an object within a tree. Returns 0 on error. tree address of the object tree obj object number new_pos new level number OB_ADR Syntax: adr%=OB_ADR(tree,obj) Action: Gets the address of an individual object. Returns 0 on error. tree address of the object tree obj object number OB_FLAGS Syntax: a%=OB_FLAGS(tree,obj) Action: Gets the status of the flags for an object. Returns 0 on error. tree address of the object tree obj object number OB_FLAGS Bit No. Normal - Selectable 0 Default 1 Exit 2 Editable 3 Rbutton 4 Lastob 5 Touchexit 6 Hidetree 7 Indirect 8 OB_H Syntax: h%=OB_H(tree,obj) Action: Returns the height of an object Returns 0 on error. tree address of the object tree obj object number OB_HEAD Syntax: h%=OB_HEAD(tree,obj) Action: Points to the object's first child, or -1 if none. OB_NEXT Syntax: n%=OB_NEXT(tree,obj) Action: Points to the following object on the same level, or, if it is the last object on that level, to the parent object, or -1 if none. OB_SPEC Syntax: a%=OB_SPEC(tree,obj) Action: Returns the address of the the data structure for the object. OB_STATE Syntax: s%=OB_STATE(tree,obj) Action: returns the status of an object: OB_STATE Bit No. Normal - Selected 0 Crossed 1 Checked 2 Disabled 3 Outlined 4 Shadowed 5 OB_TAIL Syntax: t%=OB_TAIL(tree,obj) Action: Points to the objects last child, or -1 if none. OB_TYPE Syntax: t&=OB_TYPE(tree,obj) Action: Returns the type of object specified. OB_W Syntax: w%=OB_W(tree,obj) Action: Returns the width of an object OB_X OB_Y Syntax: x (or y) =OB_X or OB_Y(tree,obj) Action: Rteurns the relative coordinates of the object relative to its parent (or the screen if it is the parent) OCT$ Syntax: OCT$(x[,n]) Action: Changes the value 'x' into a string containing the value of 'x' in octal form (prefix &O), the optional parameter n, giving the number of characters to print. ODD Syntax: ODD(n) Action: Determines whether a number is odd. (see also even) ON BREAK Syntax: ON BREAK ON BREAK CONT ON BREAK GOSUB name Action: ON BREAK CONT makes it impossible to stop a program by pressing break ( ). ON BREAK reactivates it. ON BREAK GOSUB makes it possible to jump to the procedure 'name' by the above key combination. ON ERROR Syntax: ON ERROR ON ERROR GOSUB name Action: Performs the procedure 'name' when an error occurs. The program is not interrupted and no error message is given. See also RESUME ON...GOSUB Syntax: ON x GOSUB proc1,proc2...... Action: Depending on the result of 'x' one of several given procedures is processed. 'proc1' .. is a list of procedure names separated by commas. The result of 'x' denotes which procedure is carried out. Eg: If result = 1 then the first procedure in the procedure list is processed. If result = 2 then the second procedure in the procedure list is processed. If result = 3 then the third procedure in the procedure list is processed and so on. If the value is not in the range then no procedure will be executed. ON MENU Syntax: ON MENU[t] Action: This command handles EVENTs. Prior to use, the required action should be specified with an ON MENU xxx GOSUB command. For constant supervision of events, ON MENU is usually found in a loop. The parameter t is the time in thousandths of a second to elapse before the ON MENU command is terminated. ON MENU xxx GOSUB Syntax: ON MENU BUTTON clicks,but,state GOSUB proc Action: Sets up the action to be taken when one or more mouse clicks are received. With a subsequent ON MENU command, the named procedure will be branched to if the condition imposed by the parameters are met. clicks - sets the maximum number of clicks that will generate a response. button - The expected button combination: 0 - any 1 - left 2 - right 3 - both state - Specifies which button state (up or down) will cause the event. 0 = up, 1 = down proc - The procedure to branch to. Syntax: ON MENU GOSUB proc Action: The procedure to which control will be passed on selection of a menu entry is determined. If an accessory is currently open, the procedure will not be called. See also MENU(0) Syntax: ON MENU IBOX n,x,y,b,h GOSUB proc Action: Monitors the mouse coordinates, and branches to the named procedure if the mouse enters Y k=MOUSEK Action: Determines the mouse position (x,y) and the status of the mouse buttons: k=0 no buttons pressed k=1 left button k=2 right button k=3 both buttons Syntax: ON MENU KEY GOSUB proc Action: Monitors the keyboard, and branches to proc if a key was pressed during an ON MENU loop. See MENU(13) & MENU(14) for the keys. Syntax: ON MENU MESSAGE GOSUB proc Action: Brances to proc if a message arrives in the message buffer during an ON MENU loop. See MENU(x) for the messages. Syntax: ON MENU OBOX n,x,y,w,h GOSUB proc Action: Monitors the mouse coordinates, and branches to the named procedure if the mouse leaves a rectangular screen area. It is possible to wait for two such boxes to be left (n can be 1 or 2 ). x and y are the top left coordinates of the rectangle, w & h being its width and height. Continuous monitoring is done with ON MENU. OPEN Syntax: OPEN mode$,#n,name$[,len] Action: Opens a data channel to a file or a peripheral device. 'mode' must always be written in quotes and is one of the following :- 'O' (output) opens a write file creating a new file if needed. 'I' (input) opens a read file. 'A' (append) enables data to be annexed to an existing file. 'U' (update) read/write, but file must be opened by 'o' first. 'R' stands for random access file. Instead of a filename, a periphral device can ne specified. The expression 'len' is used only with Random Access mode. the following can be used instead of filenames :- 'CON:' for the console. 'LST:' or 'prn:' for the printer. 'AUX:' for the serial interface. 'MID:' for midi. 'VID:' for the console in transparent mode (commands are produced but not executed). 'IKB:' for direct access to the keyboard controller. 'STD:'. (This is the same as 'Stdin','Stdout' resp. in C-programs.) So you can use a shell to redirect the output of a GFA-BASIC program. GFABASIC TEST >DUMMY This line starts GFA BASIC and the program TEST.PRG Any output via 'STD:' is redirected to the file DUMMY. IMPORTANT: CONTROL-C will cause a hang- up when given while reading/writing DUMMY. the default for input/output is the keyboard/console. The numerical expression 'n' contains the channel number (0-99), and the variable name$, the access path and filename. OPENW Syntax: OPENW nr[,x a rectangular screen area. It is possible to wait for two such boxes to be entered (n can be 1 or 2 ). x and y are the top left coordinates of the rectangle, w & h being its width and height. Continuous monitoring is done with ON MENU. OPTION BASE Syntax: OPTION BASE 0 (default) OPTION BASE 1 Action: This command can determine whether an array is to contain a zero element or not. ie. with OPTION BASE 0, doing a DIM a%(10) will allow a%(0) to exist. OR Syntax: x OR y Action: The command OR (disjunction) checks whether at least one of two logical expressions x and y is TRUE. Only if x and y are both FALSE will the result FALSE be produced. OR() Syntax: OR(x,y) Action: The result of OR contains bits set in the places in which bits are set in either x or y or both. OTHERWISE See SELECT OUT Syntax: OUT [#]n,a[,b..] Action: Transfers a byte[s] with the value 'a' to a peripheral device or file 'n'. See OPEN for valid peripherals. See also INP OUT# See INP# OUT? Syntax: OUT?(n) Action: Determines the output status of a periphery. This function returns 0 if a character can be output. (see also INP?) PADT(i) Syntax: a=PADT(i) Action: Reads the paddle buttons on the STE PADX(i) PADY(i) Syntax: a=PADX(i) or PADY(i) Action: Reads the x or y position of the paddles on the STE. i can be 0 or 1. PAUSE Syntax: PAUSE x Action: Interrupts a program for exactly x/50 seconds. See also DELAY. PBOX Syntax: PBOX x,y,x1,y1 Action: Draws a filled rectangle with the coordinates of the two opposite corners specified by x,y and x1,y1. See also BOX,PRBOX, RBOX. PCIRCLE Syntax: PCIRCLE x,y,r[,w1,w2] Action: Draws a filled circle with centre coordinates at x,y and a radius r. Additional start and end angles w1 and w2 can be specified to draw a circular arc. PEEK DPEEK LPEEK Syntax: PEEK(x) DPEEK(x) LPEEK(x) Action: Returns the contents of the memory at address 'x' PEEK returns a 1 byte at address x DPEEK returns a 2 byte number from x and x+1 LPEEK returns a 4 byte number from x, x+1, x+2 & x+3 for DPEEK and LPEEK, 'x' must be an even number. PELLIPSE Syntax: PELLIPSE x,y,rx,ry [,phi0,phi1] Action: Draws a filled ellipse at x,y, having 'rx' as length of the horizontal axis and 'ry' as length of the vertical axis The optional angles 'phi0' & 'phi1' give start and end angles in tenths of a degree, to create an elliptical arc. PI Syntax: PI Action: Returns the value of PI. The value of PI is 3.141592653.....etc. PLOT Syntax: PLOT x,y Action: Plots a point on the screen coordinates 'x,y'. This command is the same as draw x,y. POINT Syntax: POINT x,y Action: Checks if a graphic dot (at 'x,y') has been set and returns its colour value. POKE DPOKE LPOKE Syntax: POKE x,n DPOKE x,n LPOKE x,n Action: Writes 1, 2 or 4 bytes into memory at an address which starts at 'x'. The value of 'x' must be an even number for DPOKE and LPOKE. POLYLINE POLYFILL POLYMARK Syntax: POLYLINE n,x(),y()[OFFSETx_off,y_off] POLYFILL n,x(),y()[OFFSETx_off,y_off] POLYMARK n,x(),y()[OFFSETx_off,y_off] Action: POLYLINE draws a polygon with n corners. The x,y coordinates for the corner pointa are given in arrays x() and y(). The first and last points are automatically connected. The optional parameter OFFSET can be added to these coordinates. POLYFILL fills the polygon with the pattern previously defined by DEFFILL. POLYMARK marks the corner points with the shape defined by DEFMARK. POS Syntax: POS(n) Action: Returns the column in which the cursor is positioned. 'n', a hypothetical argument, is optional. See also CRSCOL, CRSLIN, TAB, HTAB, VTAB. PRBOX Syntax: PRBOX x,y,x1,y1 Action: Draws a filled rectangle with rounded corners. See also BOX, PBOX, RBOX. PRED Syntax: a$=PRED(b$) Action: Supplies the character with the ASCII code one less than that of the first character of the specified string. See also SUCC. PRED() Syntax: i%=PRED(n%) Action: Returns the next lower number of the integer argument. See also SUCC(). PRINT Syntax: PRINT PRINT expression Action: Displays information on the screen. 'expr' can be any number of expressions which must be separated by commas, semicolons or apostrophes. ; -items are printed one after an other in one line. , -items are printed at intervals of 16 columns. ' -each apostrophe causes a space to be printed. PRINT AT Syntax: PRINT AT(column,row);expression Action: Prints 'expression' at a specified row and column. NB. These start at 1, not 0. PRINT USING Syntax: PRINT USING format$,expression[;] PRINT AT(column,row);USING format$,expression[;] Action: Prints formatted digits and character strings. format$ is a string expression which sets the printing format using a list of expressions separated by commas. # reserves space for a digit. . position of the decimal point. + executes a plus sign. - reserves space for a minus sign. * zeros before the comma are replaced by * otherwise the same as #. $ prefix $. , insertion of a comma. ^ execution in exponent form E+ ! indicates that the first character of a string is issued. & the whole string is issued. \..\ as many characters as the length of \..\ is issued (including back-slashes). - prints the proceeding character. PRINT TAB Syntax: PRINT TAB(n) Action: Prints spaces until POS(0) reaches n. If POS(0) already exceeds n then a Line Feed/Carriage Return is executed first. PRINT# Syntax: PRINT #n,expression PRINT #n,USING format$,expression Action: Outputs data to a specified channel n (0-99). PRINT# USING allows formatted data to be output. PROCEDURE Syntax: PROCEDURE proc[(var1,var2,...)] Action: Marks the beginning of a procedure. Basic will only process a procedure when it is called by the command GOSUB (or by simply naming the procedure, or using @proc. If it comes across the command procedure during 'normal' running of the program, it considers it to be the end of the program. Not only the values of variable, but also the variable's address can be passed to procedures using the VAR command in the Procedure's header. PSAVE Syntax: PSAVE f$ Action: Saves the current program to disk with the name f$, it is saved with protection, and cannot be subsequently listed on re-loading; PSAVEd programs RUN automatically on loading. See also SAVE PTSIN Address of the VDI point input table PTSOUT Address of the VDI point output table These two commands can be used with index, to address the array directly. eg. PTSIN(0). PTST() Syntax: a=PTST(x,y) Action: Corresponds to the POINT command. Returns the colour of the pixel at x,y. PUT Syntax: PUT x,y,section$[,mode] Action: Places a graphics block on the screen at x,y which has been previously grabbed by GET, and stored in section$. 'mode' (optional) sets the way the image is placed. 0 - All points are cleared 1 - s AND d Only points set in both remain set. 2 - s AND (NOT d) Sets only points which are set in the source and clear in the destination. 3 - s Overwrite (default GRAPHMODE 1) 4 - (NOT s)AND d 5 - d 6 - s XOR d 7 - s OR d 8 - NOT(s OR d) 9 - NOT(s XOR d) 10 NOT d 11 s OR(NOT d) 12 NOT s 13 (NOT s)OR d 14 NOT(s AND d) 15 1 All points set. The important ones are: 3 Repalce 4 XOR 7 Transparent 13 Inverse Transparent. PUT # Syntax: PUT #n[,r] Action: Writes a record to a random access file. 'n' data channel number (0 to 99). 'r' is an integer expression between 1 and the number of records in the file (max 65535) and denotes the record number of the record to be written. See also GET #, RECORD # QSORT Syntax: QSORT a(s) [OFFSET o] [WITH i()] [,n[,j%()]] QSORT x$(s) WITH i() [,n[,j%()]] Action: Sorts the elements of an array. 's' can be a minus sign or a plus sign, indicating an ascending sort(+) or a descending sort(-), the default being ascending. The parameter 'n' specifies that only the first 'n' elements are to be sorted. (Depends on OPTION BASE) whether 0 or 1. If n=-1, then all elements are sorted. When a further array is specified, then that array will be sorted along with the first array. OFFSET determines how many characters off the beginning shall not be considered. During sorting of string arrays a sorting criteria can be specified in an array of at least 256 elements by using WITH. Without using this option, a normal ASCII sort is used. eg: DIM a$(256) FILES "*.*" TO "liste" OPEN "i",#1,"liste" RECALL #1,a$(),-1,x% CLOSE #1 QSORT a$() OFFSET 13,x% OPEN "o",#1,"con:" STORE #1,a$(),x% CLOSE Saves the directory as 'LISTE', then reloads the file, sorts the array, not on name but on file length. DIM x%(20) PRINT "Unsorted: "; FOR i%=0 TO 10 x%(i%)=RAND(9)+1 PRINT x%(i%);" "; NEXT i% PRINT ' QSORT x%(),11 PRINT "Ascending sort: "; FOR i%=0 TO 10 PRINT x%(i%);" "; NEXT i% PRINT ' QSORT x%(-),11 PRINT "Descending sort: "; FOR i%=0 TO 10 PRINT x%(i%);" "; NEXT i% PRINT QUIT Syntax: QUIT[n] Action: Terminate the program and leave GFA Basic. Returns a two byte integer to the calling routine (normally the desktop). RAD Syntax: RAD(degrees) Action: Converts from degrees to radians. (equivalent to x*PI/180). See also DEG RAND Syntax: RAND(y) Action: Produces a 16 bit random integer in the range 0 to y- 1. Where y is an integer max value &HFFFF. RANDOM Syntax: RANDOM(x) Action: Returns a random integer between 0 (inclusive) and 'x' (exclusive). RANDOMIZE Syntax: RANDOMIZE [y] Action: Initialises the random number generator [with the value y]. RBOX Syntax: RBOX x,y,x1,y1 Action: Draws a rectangle with rounded corners from the two diagonally opposite corner points 'x,y' and 'x1,y1' See also BOX, PBOX, PRBOX. RCALL Syntax: RCALL addr,reg%() Action: Calls an assembler routine (similar to C: or CALL) with pre-allocated values in the registers. The integer array reg% must have 16 elements and holds the values. At the end of the routine, the values are also returned in the array. Data registers d0 to d7 --->reg%(0) to reg%(7) Address registers a0 to a6 --->reg%(8) to reg%(14) User Stack Pointer (a7) --->reg%(15) RC_COPY Syntax: RC_COPY s_adr,sx,sy,sw,sh TO d_adr,dx,dy[,m] Action: Copies rectangular screen sections between areas of memory. s_adr source address sx,sy top left corner of source rectangle sw,sh width & height " " " d_adr destination address dx,dy destination x and y coordinates m optional mode (see PUT for modes). RC_INTERSECT Syntax: y%=RC_INTERSECT(x1,y1,w1,h1,x2,y2,w2,h2) Action: Detects whether two rectangles overlap. The rectangles being specified by the coordinates of the top left corner(x,y) and their width & height (w,h). Returns TRUE (-1) if they do overlap and the variables x2,y2,w2,h2 contain the size of the common rectangle. READ Syntax: READ var[,var1, ...] Action: Reads values from a DATA command and assigns them to a variable 'var'. Reading is taken from the last point a RESTORE was done (if any). RECALL Syntax: RECALL #i,x$(),n[TO m],x Action: Inputs n lines from a text file to the array x$(). If n=-1 all available lines are read. x contains the number of lines read. RECORD RELSEEK Syntax: RELSEEK [#]N,X Action: Moves tINT ' QSORT x%(-),11 PRINT "Descending sort: "; FOR i%=0 TO 10 PRINT x%(i%);" "; NEXT i% PRINT QUIT Syntax: QUIT[n] Action: Terminate the program and leave GFA Basic. Returns a two byte integer to the calling routine (normally the desktop). RAD Syntax: RAD(degrees) Action: Converts from degrees to radians. (equivalent to x*PI/180). See also DEG RAND Syntax: RAND(y) Action: Produces a 16 bit random integer in the range 0 to y- 1. Where y is an integer max value &HFFFF. RANDOM Syntax: RANDOM(x) Action: Returns a random integer between 0 (inclusive) and 'x' (exclusive). RANDOMIZE Syntax: RANDOMIZE [y] Action: Initialises the random number generator [with the value y]. RBOX Syntax: RBOX x,y,x1,y1 Action: Draws a rectangle with rounded corners from the two diagonally opposite corner points 'x,y' and 'x1,y1' See also BOX, PBOX, PRBOX. RCALL Syntax: RCALL addr,reg%() Action: Calls an assembler routine (similar to C: or CALL) with pre-allocated values in the registers. The integer array reg% must have 16 elements and holds the values. At the end of the routine, the values are also returned in the array. Data registers d0 to d7 --->reg%(0) to reg%(7) Address registers a0 to a6 --->reg%(8) to reg%(14) User Stack Pointer (a7) --->reg%(15) RC_COPY Syntax: RC_COPY s_adr,sx,sy,sw,sh TO d_adr,dx,dy[,m] Action: Copies rectangular screen sections between areas of memory. s_adr source address sx,sy top left corner of source rectangle sw,sh width & height " " " d_adr destination address dx,dy destination x and y coordinates m optional mode (see PUT for modes). RC_INTERSECT Syntax: y%=RC_INTERSECT(x1,y1,w1,h1,x2,y2,w2,h2) Action: Detects whether two rectangles overlap. The rectangles being specified by the coordinates of the top left corner(x,y) and their width & height (w,h). Returns TRUE (-1) if they do overlap and the variables x2,y2,w2,h2 contain the size of the common rectangle. READ Syntax: READ var[,var1, ...] Action: Reads values from a DATA command and assigns them to a variable 'var'. Reading is taken from the last point a RESTORE was done (if any). RECALL Syntax: RECALL #i,x$(),n[TO m],x Action: Inputs n lines from a text file to the array x$(). If n=-1 all available lines are read. x contains the number of lines read. The optional parameter TO will read in the start of the file to the named elements of the array. eg. DIM a$(20) FOR n=0 TO 19 a$(n)="Line # "+STR$(n) NEXT n OPEN "o",#1,"test" STORE #1,a$() CLOSE DIM b$(20) OPEN "i",#1,"test" RECALL #1,b$(),12 TO 15,x 'or RECALL #1,b$(),-1,x CLOSE PRINT x FOR n=0 TO 20 PRINT b$(n) NEXT n See Also: STORE RECORD Syntax: RECORD #n,r Action: Sets the number of the next record to br read or stored with GET or PUT. Example: RECORD #1,15 See Also: FIELD,GET#, PUT#, SEEK RELSEEK Syntax: RELSEEK [#]n,x Action: Moves the random access file pointer forward (+X) or backwards (-X) 'X' number of bytes. REM Syntax: REM remark Action: Whatever follows a REM coomand on a particular line is ignored by Basic. ' is synonoymous with REM. Example: REM This is a comment RENAME Syntax: RENAME old$ AS new$ Action: Renames a file. REPEAT...UNTIL Syntax: REPEAT UNTIL end Action: Creates a pre-defined loop. The section of the program between repeat and until is repeated continuously until the condition is fulfilled. Example: REPEAT UNTIL MOUSEK 'Waits for mouse key to be pressed. RESERVE Syntax: RESERVE n Action: Increases or decreases the memory used by basic 'n' is a numeric expression which determines how big FRE(0) should be after this command. (see HIMEM, EXEC) Example: RESERVE 2560 EXEC 0,"\PROGRAM.PRG","","" RESERVE 2560 bytes are reserved and PROGRAM.PRG is loaded and started. After running the reserved space is restored. Memory can be reserved in blocks of 256 bytes. If n is negative then the whole of the free memory is reserved. RESTORE Syntax: RESTORE [label] Action: Positions the data pointer for READ. Places the data pointer at the beginning, or behind the label names 'label' 'label' can be any list of characters and can contain digits, letters, underscore and full stops. Unlike other variable names it can begin with a digit. RESUME Syntax: RESUME RESUME NEXT RESUME label Action: The RESUME command is only meaningful with error capture (ON ERROR GOSUB) where it allows a reaction to an error. RESUME repeats the erroneous command. RESUME NEXT resumes program execution after an incorrect command. RESUME 'label' branches to the 'label'. If a fatal error occurs only RESUME 'label' is possible Example: ON ERROR GOSUB error_trap ERROR 5 PRINT "and again..." ERROR 5 PRINT "is not reached." ' PROCEDURE error_trap PRINT "OK, error intercepted" RESUME NEXT RETURN RETURN Syntax: RETURN Action: Terminates a sub-routine Syntax: RETURN x Action: If the command RETURN is reached during program ececution and is within a FUNCTION...ENDFUNC execution, then the value given after it is returned. RIGHT$ Syntax: RIGHT$(string[,n]) Action: Returns the last characters or 'n' number of characters (from the right) of a character string 'string' Example: PRINT RIGHT$"Hello GFA",3) 'PRINTS GFA RINSTR Syntax: RINSTR(a$,b$) RINSTR(a$,b$,[x]) RINSTR([x],a$,b$) Action: Operates in same way as INSTR except that search begins at the right end of a$. RMDIR Syntax: RMDIR "directory name" Action: Deletes empty directories RND Syntax: RND [(x)] Action: Returns a random number between 0 and 1 The optional parameter (x) is disregarded, and returns a random number between 0 (inclusive) and 1 (exclusive) ROL Syntax: ROL(x,y) ROL&(x,y) ROL|(x,y) Action: Rotates a bit pattern left. ROR Syntax: ROR(x,y) ROR&(x,y) ROR|(x,y) Action: Rotates a bit pattern right. ROUND Syntax: ROUND(x[,n]) Action: Rounds off the numeric expression x. Example: y=ROUND(-1.2) PRINT y,ROUND(1.7) RSET Syntax: RSET a$=b$ Action: Moves a string expression, right justified to a string. See Also: LSET,MID$ The following commands are part of the Resource Library. These routines provide the creation of a graphical user interface. The full descriptions of these functions are beyond the scope of these abreviated manual. A full description is contained within the full GFA-BASIC Reference manual and also the GFA-BASIC Software Development Book. RSRC_FREE Syntax: ~RSRC_FREE(0) Action: This function releases the memory space reserved by RSRC_LOAD. Returns 0 if an error. RSRC_GADDR Syntax: ~RSRC_GADDR(type,index,addr) Action: This function determines the address of a resource structure after it has been loaded with RSRC_LOAD. Depending on the version of GEM, this function may only work for Object trees and Alert boxes. Returns 0 if an error. Type:0 OBJECT TREE 1 OBJECT 2 TEDINFO 3 ICONBLK 4 BITBLK 5 STRING 6 image data 7 obspec 8 te_ptext 9 te_ptmplt 10 te_pvalid 11 ib_pmask 12 ib_pdata 13 pb_ptext 14 bi_pdata 15 ad_frstr 16 ad_frimg Index: The number of the object whose address is required, counting objects of that type one by one from the beginning of the resource file. addr: The required address. Example: ~RSRC_GADDR(0,0,TREE%) RSRC_LOAD Syntax: RSRC_LOAD(name$) Action: This function reserves memory and loads a resource file. Then internal pointers are set and the co-ordinates of characters converted into pixel format. Example: ~RSRC_LOAD("TEST.RSC") RSRC_OBFIX Syntax: RSRC_OBFIX(tree,obj) Action: This function converts the coordinates of an object within a tree, from character coordinates to pixel coordinates, taking into account the current screen resolution. It is automatically called by RSRC_LOAD, but must be used if the object is created direct in memory by POKE. tree: address of the object tree obj: object number RSRC_SADDR Syntax: RSRC_SADDR(type,index,addr) Action: This function sets the address of an object. Returns 0 if an error. type: type of structure index: the number of the object addr address RUN Syntax: RUN(a$) Action: Runs the program in memory, or if a file name is supplied will load and then run the appropriate program. Example: RUN "A:\PROGRAM.GFA" SAVE PSAVE Syntax: SAVE a$ PSAVE a$ Action: Saves a program file (psave is with list protection) 'file name' is the name of the program. Programs which are saved with psave are not listed but run straight after the command 'load' is given. SEEK Syntax: SEEK [#]n,x Action: Sets the file pointer on the byte number 'x' of file #n 'n' is an integer expression between 0 and 99 which refers to the channel number. 'x' has a value (total) either greater or smaller than the length of the file addressed. SCRP_READ Syntax: SCRP_READ(path$) Action: This function reads data, left there by another program, from a small internal buffer, thus allowing communication between GEM programs. Returns 0 if an error. Example: SCRP_READ(a$) See Also: SCRP_WRITE SCRP_WRITE Syntax: SCRP_WRITE(path$) Action: This function writes data, into a small internal buffer, thus allowing communication between GEM programs. Example: SCRP_WRITE("A:\PROGRAM.TXT") See Also: SCRP_READ SDPOKE Syntax: SDPOKE x,y Action: Allows DPOKE to operate in supervisor mode, so that protected address (0 to 2047) can be modified. SEEK Syntax: SEEK #n,pos Action: Absolute positioning of data pointer within file. This allows the realisation of indexed sequential file access. The numerical expression n contains the channel number of the file. SELECT Syntax: SELECT x CASE y [TO z] or CASE y [,z,...] CASE TO y CASE y TO DEFAULT ENDSELECT CONT Action: A conditional command which enables execution of specified program segments depending on an integer. The maximum of a CASE is 4 characters (eg CASE "A,B,C,D" The CONT command provides a method of jumping over a CASE or DEFAULT command. Example: REPEAT a%=ASC(INKEY$) SELECT a% CASE 65 TO 90 PRINT "CAPITAL LETTER" CASE 97 TO 122 PRINT "LOWER CASE LETTER" DEFAULT PRINT "NOT CAPITAL OR LOWER CASE" ENDSELECT UNTIL a%=27 SETCOLOR Syntax: SETCOLOR i,r,g,b SETCOLOR i,n Action: Defines the colours red, green and blue for the colour register 'i'. 'r,g,b' are the levels of the three primary colours from 0 to 7. Another way of defining colours is to use the value 'n' where n=r*256+g*16+b See Also: COLOR,VSETCOLOR SETDRAW See DRAW command. SETMOUSE Syntax: SETMOUSE mx,my,[,mk] Action: The SETMOUSE command permits the positioning of the mouse cursor under program control. Tje optional parameter mk can simulate the mouse button being pressed or released. Example: FOR i%=0 TO 300 HIDEM SETMOUSE i%,i% PLOT MOUSEX,MOUSEY SHOWM PAUSE 2 NEXT i% SETTIME Syntax: SETTIME time$,date$ Action: Sets the time and the date. time$ is a string expression which contains the time. hours, minutes and second can be displayed. The colons are optional as two digits have to be entered. The seconds can also be left out. date$ is a character string expression for the date. It must always contain: day, month and year, each separated by a full stop. Example: PRINT DATE$,TIME$ SETTIME "17:30:30","27.10.1952" PRINT DATE$,TIME$ SGET Syntax: SGET screen$ Action: Fast reading of the entire screen area into a string variable. Example: PCIRCLE 100,100,50 SGET b$ ~INP(2) CLS ~INP(2) SPUT b$ See Also: SPUT, GET, PUT and BMOVE SGN Syntax: SGN(x) Action: Ascertains whether 'x' is positive, negative or 0 'x' can be any numeric expression. SGN(x) is the mathematic sign function. The following commands are part of the Shell Library and enable an application to call another, preserving both the original application and its environment. The full descriptions of these functions are beyond the scope of these abreviated manual. A full description is contained within the full GFA-BASIC Reference manual. SHEL_ENVRN Syntax: SHEL_ENVRN(addr,search$) Action: This function determines the values of variables in the GEM environment. Returns 1. search$: The string to be sought addr: address of the byte following the string Example: PRINT SHEL_ENVRN(a%,"PATH") PRINT CHAR{a%-4} ' Displays: PATH=A:\ SHEL_FIND Syntax: SHEL_FIND(paths$) Action: This function searches for a file and supplies the full file specification. First the path on the current drive is searched, then the root directory of drive A:. Returns 0 if file not found, or 1 if found. On entry: path$: String contains sought after filename. On exit: path$: Contains the full file specification if the file was found, otherwise it is unchanged. SHEL_GET Syntax: SHEL_GET(num,x$) Action: This function reads data from the GEMDOS environmental string buffer (into which the file DESKTOP.INF is read on start up). Returns 0 if an error. num: number of bytes to be read x$: string to contain data Example: SHEL_GET(500,x$) PRINT x$ SHEL_PUT Syntax: SHEL_PUT(len,x$) Action: This function writes data into the GEMDOS environmental string buffer. Returns 0 if an error. x$: String containing the data to be written len: number of bytes to be written Example: 'Register GFA-BASIC ~SHEL_GET(2000,a$) q%=INSTR(a$,CHR$(26)) IF q% a$=LEFT$(a$,q%-1) IF INSTR(a$,"GFABASIC.PRG")=0 a$=s$+"#G 03 04 A:\GFABASIC.PRG@*.GFA +MKI$(&HDOA)+CHR$(26) ~SHEL_PUT(LEN(a$),a$) ENDIF ENDIF ' Registers that all .GFA files cause GFABASIC.PRG to be loaded when clicked on. SHEL_READ Syntax: SHEL_READ(cmd_string$,tail_string$) Action: This function allows the program to identify the command by which it was invoked and supplies the name, eg GFABASIC.PRG, and the command line if any. cmd_string$ string variable to contain the command line. tail_string$ string variable to contain name. SHEL_WRITE Syntax: SHEL_WRITE(prg,grf.gem.cmd$,nam$) Action: This function informs the AES that another application is to be started after the current one has terminated. In contrast to p_exec (GEMDOS 75), however the current program does not remain in memory. prg: 0 Back to desktop 1 Load new program grf: 0 TOS program 1 Graphic application gem: 0 not a GEM application 1 GEM application cmd$ command line string nam$ name of next application Example: ~SHEL_WRITE(1,1,1,"","GFABASIC.PRG") SHL Syntax: SHL(x,y) SHL&(x,y) SHL|(x,y) Action: Shifts a bit pattern left SHOWM Syntax: SHOWM Action: Makes the mouse pointer appear. See Also: HIDEM SHR Syntax: SHR(x,y) SHR&(x,y) SHR|(x,y) Action: Shifts a bit pattern right SIN Syntax: SIN(x) Action: Returns the sine value of 'x' SINGLE{} Syntax: SINGLE{x} Action: Reads/writes a 4 byte floating point variable in IEEE single precision format. SINQ Syntax: SINQ(degrees) Action: Returns the extrapolated sine of a numeric expression. SLPOKE Syntax: SLPOKE x,y Action: Allows LPOKE to operate in supervisor mode, so that protected address (0 to 2047) can be modified. SOUND Syntax: SOUND chn,vol,note,octave[,dur] SOUND chn,vol,note,#period[,dur] Action: GENERATES MUSICAL NOTES 'chn' is a 1, 2, or 3 and selects the sound channel. 'vol' selects the volume. 'note' is a value of 1 to 12 and selects notes: 1=C, 2=C# 3=D 4=D# 5=E 6=F 7=F# 8=G 9=G# 10=A 11=A# 12=B 'octave' is between 1 and 8, and determines octave. 'dur' is the time in 1/50ths of a second that GFA Basic has to wait before execution of the next command. A further possibility to choose the pitch is to enter 'period' prefixed by '#' instead of 'note' and 'octave'. The period can be calculated from the frequency with: Period = TRUNC(125000/frequency +0.5) SPACE$ Syntax: SPACE$(x) Action: Creates a character string containing 'x' spaces. SPC Syntax: SPC(n) Action: Produces 'n' spaces in a print command SPOKE SDPOKE SLPOKE Syntax: SPOKE x,n SDPOKE x, SLPOKE x,n Action: Writes 1, 2 or 4 bytes into an area of memory which begins with the address 'x' SPRITE Syntax: SPRITE A$[,x,y] Action: Puts the sprite defined in a$ at (X,Y) or, if no coordinates are given, deletes it. A$ = MKI$(X POSITION) + MKI$(Y POSITION) + MKI$(0=NORMAL OR 1=XOR MODE) + MKI$(SCREEN COLOUR MOSTLY 0) + MKI$(SPRITE COLOUR MOSTLY 1) + BIT PATTERN OF SCREEN AND SPRITE Unlike defmouse, the bit patterns for screen and sprite are not stored in separate blocks but in alternate words (16 bits). If the same sprite is put onto the screen in another position then the first sprite is deleted. SPUT Syntax: SPUT var Action: Fast copying of a 32000 byte string into the screen area. See Also: SGET, PUT, GET and BMOVE SQR Syntax: SQR(X) Action: Calculates the square root of 'X'. SSORT Syntax: SSORT a(s) {OFFSET o][WITH i()][,n[,j%()]] SSORT x$(s) WITH i() [,n[,j%{}]] Action: Sorts the elements in an array by its size using the Shell- Metzner method. a() array or string array i() integer array j% 4byte integer array x$() string array s + or - or no sign STE? Syntax: STE? Action: Returns -1 for STE otherwise 0 STICK Syntax: STICK m STICK(p) Action: The function STICK(p) returns the position of a joystick. STICK 0 causes port 0 to supply mouse information. STICK 1 causes port 1 to read the joystick. Example: STICK 1 REPEAT direction%=STICK(0) fire%=STRIG(0) SELECT direction% CASE 4 PRINT "LEFT" CASE 8 PRINT "RIGHT" CASE 2 PRINT "DOWN" CASE 1 PRINT "UP" ENDSELECT UNTIL fire! WHILE STRIG(0) WEND STOP Syntax: STOP Action: Stops execution of a program. Unlike the END command it does not close any files and by typing CONT the program will resume from the line following the STOP command. STORE Syntax: STORE #i,x$()[,n[TO m]] Action: Fast save of a string array as a text file. The instruction STORE is used for sending the contents of an array to a file or data channel (elements seperated by CR/LF). See Also: RECALL STR $ Syntax: STR$(X) Action: Transforms the value 'X' into a character string. STRING$ Syntax: STRING$(N,string) OR STRING$(N,C) Action: Produces a string formed by repeating 'string' or CHR$(C) 'N' times. 'N' is a number from 0 to 32767. SUB Syntax: SUB VAR,N Action: Deducts 'N' from 'VAR'. Same as VAR=VAR-N but executes almost twice as fast. Example: x=57 SUB x,3*5 PRINT x 'PRINTS 42 SUB() Syntax: SUB(x,y) Action: Corresponds to x-y Example: PRINT SUB(5^3,4*20+3) 'PRINTS 42 SUCC() Syntax: SUCC(n) Action: Determines the next higher number. See Also: PRED() SWAP Syntax: SWAP var1,var2 Action: Exchanges the values of 'var1' and 'var2'. The variables must be of the same type. When swapping array fields the dimensions are also swap ped. SWAP() Syntax: SWAP(n) Action: Swaps the high and low words of a varaible. SYSTEM Syntax: SYSTEM Action: Causes a return to the desktop, same as quit. TAB Syntax: TAB(n) Action: Sets the tabulator to the nth column. Tab can only be used in conjunction with the print command. If the current position is already past 'N' then the tab function is set for the next line. TAN Syntax: TAN(X) Action: Returns the tangent of 'X' (X is the angle in radians). TEXT Syntax: TEXT X,Y, [ L, ]string Action: Puts a text onto the screen at graphics coordinates 'X,Y'. The graphics can first be defined by using the command DEFTEXT. TIME$ Syntax: TIME$ Action: Returns the system time as a string. Format: hh:mm:ss and is updated every two seconds. Example: PRINT TIME$ TIME$= Syntax: TIME$=a$ Action: The time can be set. Example: TIME$="20:15:30" TIMER Syntax: t%=TIMER Action: TIMER suuplies the elapsed time in 1/200 seconds since the system was started. Example: t%=TIMER FOR i%=1 TO 2500 NEXT i% PRINT (TIMER-t%)/200;" Seconds" TITLEW Syntax: TITLEW n,"title" Action: Gives the window number 'n', the new title 'title'. TOPW Syntax: TOPW #1 Action: Activates the windows number n. TOUCH Syntax: TOUCH[#]n Action: Updates the date and time stamps od a file, giving it the current system time and date. Example OPEN "u",#1,"TEST.TXT" TOUCH #1 CLOSE #1 TRACE$ Syntax: TRACE$ Action: The variable TRACE$ contains the command which is next to be processed. See Also: TRON,TROFF TRIM$ Syntax: TRIM$(a$) Action: Removes spaces at the beginning of a string expression. TROFF Syntax: TROFF Action: Switches the trace function off. TRON Syntax: TRON Action: Switches the trace function on. This causes each command to be listed on the screen. TRON# Syntax: TRON #1 Action: Switches the trace function on. This causes each command to be listed to the relevant channel number. TRONproc Syntax: TRON tr_proc Action: A procedure can be specified which is called before the execution of each command. TRUE Syntax: TRUE Action: Constant 0. This is simply another way of expressing the value of a condition when it is true and is equal to zero. (see also FALSE). TRUNC Syntax: TRUNC(X) Action: Returns the integer portion of 'X'. TT? Syntax: TT? Action: Returns -1 for 68020 or 68030 processeor, otherwise 0. TYPE Syntax: TYPE(ptr) Action: Determines the type of the variable at which a pointer is set. 'ptr' is an integer expression (usually *var). TYPE(ptr) returns a code according to the type of variable to which 'ptr' is pointing. 0=var 1=var$ 2=var% 3=var! 4=var() 5=var$() 6=var%() 7=var!(). On errors -1 is returned. UPPER$ Syntax: A$="basic" PRINT UPPER$(A$) PRINT UPPER$("1a") Action: Transforms all lower case letters of a string to upper case. Any non letter characters are left unchanged. V: Syntax: V:x Action: Returns the address of a variable or strings or elements of an array. VAL Syntax: VAL(X$) Action: Transforms 'X$' into a number, as far as possible. In the case of a purely alphabetical string the value 0 is returned. VAL? Syntax: VAL?(X$) Action: Determines the number of characters starting at the beginning of a string that can be converted into a numerical value with VAL. VAR Syntax: name([a,b,...] VAR x,y..a(),b(),...) Action: Declaration part of the parameter list for a PROCEDURE or FUNCTION. Example: sum(13,12,a) sum(7,9,b) PRINT a,b ' PROCEDURE sum(x,y,VAR z) z=x+y RETURN VARIAT() Syntax: VARIAT(n,k) Action: Returns the number of permutations of n elements to the kth order without repitition. Example: PRINT VARIAT(6,2) 'prints 30 See Also: FACT(), COMBIN() VARPTR Syntax: VAPTR(var) Action: Determines the address or starting address of a variable 'var'. VDIBASE Syntax: VDIBASE Action: Dangerous pokes! Determines the address above the area used by basic and the required tables and variables. This is the point from which this version of gem keeps parameters for the vdi (text style, clipping etc.). By use of peek and poke in this area, various effects (and nasty crashes!) can be obtained. VDISYS Syntax: VDISYS[opcode [,c_int,c_pts[,subopc]]] Action: The VDI function with function code opcode is called. If opcode is not specified, then the function code must, like other parameters, be placed in the control block with DPOKE. The depth of this command is betond the scope of this abbreviated manual. VOID Syntax: VOID exp Action: This command performs a calculation and forgets the result. Sounds silly but there are occasions when this command is required, eg. forced garbage collection (fre(0)), waiting for a keystroke (inp(2)), or calling various bios, xbios, gemdos or c: routines which have no parameters. VQT_EXTENT Syntax: VQT_EXTENT(text$[,x1,y1,x2,y2,x3,y3,x4,y4]) Action: Returns the corner coordinates of a rectangle which will surround the text in text$. The coordinates can either be found in the variables x1,y1 to x4,y4, or in PTSOUT(7). The corner pointers are numbered in a clockwise direction. Example: INPUT text$ CLS ATEXT 100,25,2,text$ ~VQT_EXTENT(text$,x1,y1,x2,y2,x3,y3,x4,y4) BOX x4+100,y4+25,x2+00,y2+25 VQT_NAME Syntax: VQT_NAME(i,font_name$) Action: Supplies the handle of the font with the indentification number i and places the name of the loaded character set into the string variable font_name$. VSETCOLOR Syntax: VSETCOLOR colour,red,green,blue VSETCOLOR colour,composite Action: Due to an error in TOS, SETCOLOR does not correspond to the registers used by COLOR. VSETCOLOR is used to overcome this problem. Low Resolution SETCOLOR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 VSETCOLOR 0 2 3 6 4 7 5 8 9 10 11 14 12 15 13 1 Medium Resolution SETCOLOR 0 1 2 3 VSETCOLOR 0 2 3 1 High Resolution SETCOLOR 0,even = VSETCOLOR 0,0 SETCOLOR 0,odd = VSETCOLOR 0.&H777 The term composite is calculated the same way as with SETCOLOR: ie rgb=(r*256)+(g*16)+b VST_LOAD_FONTS Syntax: VST_LOAD_FONTS(x) Action: Loads the additional character sets specified in ASSIGN.SYS, and the number of loaded fonts is returned. Example: RESERVE 25600 num_fonts%=VST_LOAD_FONTS(0) face%=VQT_NAME(num_fonts%,fonts$) FOR i%=1 to num_fonts% DEFTEXT,,,,face% TEXT 80,80,"This is the "+font$+" font." ~INP(2) NEXT i% ~VST_UNLOAD_FONTS(0) RESERVE VST_UNLOAD_FONTS Syntax: VST_UNLOAD_FONTS(x) Action: Removes the character set previously loaded with VST_LOAD_FONTS from memory. VSYNC Syntax: VSYNC Action: Enables synchronization with the screen by waiting until the next vertical sync pulse is received - helps avoid flickering of the screen during animation when using GET and PUT. Example: t%=TIMER FOR i%=1 TO 100 VSYNC NEXT i% PRINT SUB(TIMER,t%)/200 ' PRINTS the time for 100 scans of screen. VTAB Syntax: VTAB line Action: VTAB positions the cursor to the specified column or line number . Note that the cursor columns and lines are counted from 1, not 0. See Also: HTAB, PRINT AT, TAB The following VDI Workstation routines and functions are only available if GDOS has been booted and a valid ASSIGN.SYS file is available. In depth documentation on the VDI routines are beyond the scope of this abbreviated manual. Further information can be found in the full GFA-BASIC Interpreter Manual or Software Development Book. V_CLRWK Syntax: V_CLRWRK() Action: This function clears the output buffer. For example the screen or the printer buffer is cleared. V_CLSVWK Syntax: V_CLSVWK(id) Action: Closes a virtual workstation opened with V_OPNVWK. V_CLSWK Syntax: V_CLSWK() Action: Closes the current workstation opened with V_OPNWK(). V_OPNVWK Syntax: V_OPNVWK(id,1,1,1,1,1,1,1,1,1,2) Action: Opens a virtual screen driver and supplies the handle for the specified device id. V_OPNWK Syntax: V_OPNWK(id) Action: Supplies the handle for the specified device id. V_UPDWK Syntax: V_UPDWK() Action: Sends buffered graphic instructions to the attached device. V~H Syntax: V~H Action: Returns the internal VDI handle of GFA-BASIC. V~H=x 'Sets internal VDI handle V~H=-1 'Sets VDI handle to value from V_OPNVWK() W: Syntax: W:x Action: Allows passing of numerical expressions to the operating system and C routines as a word (2-byte). See Also: L: WAVE Syntax: WAVE voice,env,form,per,del Action: Produces noises from the three sound channels. WAVE 0,0 switches off all sound channels. voice: Any channel or combination of channels may be activated simultaneously. The value of voice is 256 * by the period. 1 Channel 1 2 Channel 2 4 Channel 3 8 Noise (Channel 1) 16 Noise (Channel 2) 32 Noise (Channel 3) env: Specifies the channels for which the wnvelope is to be active. 1 Channel 1 2 Channel 2 3 Channel 3 form: Envelope shape 0 - 3 As 9 4 - 7 As 15 8 Falling sawtooth 9 Falling linear 10 Triangle falling 11 Falling linear, then to max 12 Rising sawtooth 13 Rising linear and holding 14 Triangle, then rising 15 Linear rising, then to zero per: Period of the waveform multiplied by 125000. del: Delay in 1/59ths second before the next GFA-BASIC command is executed. Example: SOUND 1,15,1,4,20 SOUND 2,15,4,4,20 SOUND 3,15,8,4,20 WAVE 7,7,0,65535,300 ' A tone is generated from each channel then modulated by ' WAVE. See Also: SOUND WHILE....WEND Syntax: WHILE condition WEND Action: Creates a conditional loop between while and wend until the 'condition' is fulfilled. This is checked at the beginning of the loop and so it is possible that the loop is never executed. The following functions are all functions of the Window Library WINDTAB Syntax: WINTAB WINTAB(i,j) Action: Gives the address of the Window Parameter Table. This table contains the data that determines the appearance of a window. Window Parameter Table: Offset 0 Handle of Window 1 2 Attributes for Window 1 4 x coordinates of Window 1 6 y coordinates of Window 1 8 Width of Window 1 10 Height of Window 1 12-22 Parameters for Window 2 24-34 Parameters for Window 3 36-46 Parameters for Window 4 48 -1 50 0 52-58 Coordinates and size of Desktop 60-63 Coordinates of the joint of the four windows 64-65 Origin for graphic instructions (CLIP OFFSET) Window Attibute element: Bit 0 Window Title 1 Close box 2 Full box 3 Move box 4 Information line 5 Sizing box 6 Up arrow 7 Down arrow 8 Vertical slider 9 Left arrow 10 Right arrow 11 Horizontal slider Example: OPEN #1,100,120,200,70,&HFFF ' corresponds to: DPOKE WINTAB+2,&HFFF DPOKE WINTAB+4,100 DPOKE WINTAB+6,120 DPOKE WINTAB+8,200 DPOKE WINTAB+10,70 OPENW 1 ' or WINTAB(1,1)=&HFFF WINTAB(1,2)=100 WINTAB(1,3)=120 WINTAB(1,4)=200 WINTAB(1,5)=70 OPENw 1 WIND_CALC Syntax: WIND_CALC(w_type,attr,ix,iy,iw,ih,ox,oy,ow,oh) Action: This function computes the total size of the work area from the size of the window. Returns 0 if an error. w_type: 0 Compute total size 1 Compute work area size attr: Bit 0 Title bar with name 1 Close box 2 Full size box 3 Move bar 4 Info line 5 Size box 6 Up arrow 7 Down arrow 8 Vertical slider 9 Left arrow 10 Right arrow 11 Horizontal slider ix,iy top left coorinates iw,ih width and height ox,oy Calculated top left coordinates ow,oh Calculated width and height WIND_CLOSE Syntax: WIND_CLOSE(handle) Action: Closes the specified window. WIND_CREATE Syntax: WIND_CREATE(attr,wx,wy.ww.wh) Action: Allocates a new window, specifying the attributes and maximum size. The handle of the window is returned. attr: Bit 0 Title bar with name 1 Close box 2 Full size box 3 Move bar 4 Info line 5 Size box 6 Up arrow 7 Down arrow 8 Vertical slider 9 Left arrow 10 Right arrow 11 Horizontal slider wx Max x position of left edge wy Max y position of top edge ww Max width of window wh Max height of window WIND_DELETE Syntax: WIND_DELETE(handle) Action: Deletes a window allocation and frees reserved memory. WIND_FIND Syntax: WIND_FIND(fx,fy) Action: Determines the id number of a window within which the specified coordinates lie. fx: x coordinates fy: y coordinates WIND_GET Syntax: WIND_GET(handle,code,w1,w2,w3,w4) Action: Supplies information about a window determined by the code. handle: Id number of the window code: depending upon the code, information is supplied in w1,w2,w3,w4. code: 4 supplies size of window work area w1: x coordinates w2: y coordinates w3: width w4: height code: 5 supplies total size of entire window including borders w1: x coordinates w2: y coordinates w3: width w4: height code: 6 supplies total size of previous window w1: x coordinates w2: y coordinates w3: width w4: height code: 7 supplies the total max size of the window. w1: x coordinates w2: y coordinates w3: width w4: height code: 8 supplies the position of the horizontal slider w1: 1=far left 1000=far right code: 9 supplies the position of the vertical slider w1: 1=top 1000=bottom code: 10 supplies the id number of the top (active) window w1: id number of active window code: 11 supplies the coordinates of the first rectangle in the specified rectangle list. w1: x coordinates w2: y coordinates w3: width w4: height code: 12 supplies the coordinates of the next rectangle in the specified windows rectangles list w1: x coordinates w2: y coordinates w3: width w4: height code: 13 reserved code: 15 supplies the size of the horizontal slide bar compared to its max possible w1: -1 = minimum size 1 = small 1000 = full width code: 16 supplies the size of the vertical slide bar compared to its max possible w1: -1 = minimum size 1 = small 1000 = full height WIND_OPEN Syntax: WIND_OPEN(handle,wx,wy,ww,wh) Action: Draws on the screen a window previously created with WIND_CREATE. WIND_SET Syntax: WIND_SET(handle,code,w1,w2,w3,w4) Action: Changes the parts of a window according to the specified function code. code: 1 Sets new windows components as with WIND_CREATE. w1: new window element code: 2 Gives a window a new title w1: Hi word w2: Low word of address of title string code: 3 Specifies a new information line w1: Hi word w2: Low word of address of information string code: 5 Sets the window size w1: x coordinates w2: y coordinates w3: width w4: height code: 8 Positions the horizontal slider w1: 1=far left 1000=far right code: 9 Positions the vertical slider w1: 1=top 1000=bottom code: 10 Sets top (active) window w1: id number code: 14 Sets a new desk top Menu tree w1: Low word w2: High word of address of new tree w3: id number of the first object to be drawn code: 15 Sets the size of the vertical slide bar w1 -1=minimum size 1= small 1000 max size code: 16 Sets the size of the horizontal slider bar w1 -1=minimum size 1= small 1000 max size WIND_UPDATE Syntax: WIND_UPDATE(flag) Action: Coordinates all functions concerned with screen redraws, in particular with drop down menus. flag: 0 screen redraw completed 1 screen redraw starting 2 application loses mouse control 3 application takes on mouse control WORD() Syntax: WORD(x) Action: Extends a word to long word length (32 bits) by copying bits 15 to bit positions 16 to 31, thus preserving the sign. WORK_OUT() Syntax: WORK_OUT(x) Action: Determines the values found in INTOUT(0) to INTOUT(44), PTSOUT(0) and PTSOUT(1) after returning from the function OPEN_WORKSTATION. WRITE Syntax: WRITE [ expressions ][ ; ] WRITE #n [ expressions ][ ; ] Action: Stores data in a sequential file to be read with input. Unlike the PRINT command the numbers are separated by commas and the strings are enclosed in quotes. WRITE# Syntax: WRITE#n,expression Action: Saves data to sequential file, for later reading with INPUT#. Example: OPEN "o",#1,"TEST.DAT" WRITE #1,"Version ",3,".6" CLOSE #1 OPEN "i",#1,"TEST.DAT" INPUT #1,v1$,v2$,v3$ CLOSE #1 PRINT v1$+V2$+v3$ W_HAND Syntax: W_HAND(#n) Action: Returns the GEM handle of the window whose channel number is n. Example: OPENW 2 PRINT W_HAND(#2) ~INP(2) CLOSE #2 W_INDEX Syntax: W_INDEX(#hd) Action: Returns the window number of the specified GEM handle. Reverse of W_HAND(). XBIOS The XBIOS function is used to call XBIOS system routines. ~XBIOS(0,t%,l:p%.l:v%) Initialises the mouse handling routine but not compatible with GEM. t% 0 Switches mouse off 1 Switches mouse into relative mode 2 Switches mouse into absolute mode 4 Mouse in keyboard mode p% Address of information structure v% Address of the mouse handling routine r%=XBIOS(2) Returns the base address of the physical screen memory. r% Address of the physical screen memory r%=XBIOS(3) Returns the address of the logical screen memory when writing to the screen. r% Address of the logical screen memory r%=XBIOS(4) Returns the current screen resolution r% 0 320 x 200 1 640 x 200 2 640 x 400 ~XBIOS(5,l:l%,l:p%,r%) Enables the resolution to be changed from low res and high res when using a colour monitor. Can not be used with GEM. l% New address of logical screen memory p% New address of the physical screen memory r% New screen resolution (see XBIOS(4)) ~XBIOS( 6,L:adr%) Allows all colour registers to be reset at one time. adr% Address of a table of 16 words, which contains new pallete data. r%=XBIOS(7,n%,c%) Sets or gets a colour register. r% For c%=-1 the previous specified colour register is returned. n% Colour register c% New colour, at c%=-1 see r% r%=XBIOS(8,L:b%,L:f%,d%,sec%,t%,side%,n%) Reads sectors of a disk r% 0 if no error b% address of the area from which sectors are read f% unused d% drive number (0=A, 1=B etc) sec% sector number t% track number side% disk side (0 or 1) n% number of sectors to be read r%=XBIOS(9,L:b%,L:f%,d%,sec%,t%,side%,n%) Writes sectors to a disk r% 0 if no error b% address of the area to which sectors are written f% unused d% drive number (0=A, 1=B etc) sec% sector number t% track number side% disk side (0 or 1) n% number of sectors to be written r%=XBIOS(10,L:b%,L:f%,d%,sec%,t%,side%,i%,L:m%,v%) A trace of the disk formats r% 0 if no error b% address of an area for intermediate memory f% unused d% drive number (0=A, 1=B etc) sec% sectors per track t% track number to be formatted side% disk side (0 or 1) i% Interleave factor (normaaly 1) m% Magic number &H87654321 v% value in sectors of format (normally &HE5E5 ~XBIOS(12,n%,L:adr%) Outputs the contents of a block of memory to MIDI. n% number of bytes -1 adr% address of the source storage area ~XBIOS(13,n%,L:adr%) Sets the MFP interrupt vector on the ST. This can only be used from assembly language or C and is not available from GFA-BASIC. n% Interrupt number adr% new address of the interrupt r%=XBIOS(14,d%) Returns the address of the I/O table used by the serial interface. r% Address of the data buffer for the serial I/O table d% 0: RS232 1: IKBD 2: MIDI ~XBIOS(15,b%,h%,ucr%,rsr%,tsr%,scr%) Configures the serial interface. The parameters remain unchanged with a value of -1. b% Baud rate h% hand shake mode 0: no handshake 1: XON/XOFF 2: RTS/CTS 3: both ucr% USART control register of MFP rsr% receiver status register of MFP tsr% transmitter status register of MFP scr% synchronous character register of MFP r%=XBIOS(16,L:us%,L:sh%,L:cl%) Changes the keyboard translation tables. r% address of the KEYTAB structure us% address of the table for keys without shift sh% address of the table for keys with shift cl% address of the table for keys with Cap-lock r%=XBIOS(17) Returns a random number r% number with 24 bit accuracy (0 to 16777215) ~XBIOS(18,L:b%,L:s%,d%,f%) Creates a boot sector for the disk in memory b% address of a 512 byte buffer for producing the boot sector s% serial number that forms part of the boot sector -1: previous serial retained >24 bits: random number returned d% disk type (tracks/sides) 0:40 tracks,single sided (180K) 1:40 tracks,double sided (360K, IBM) 2:80 tracks, single side (360K) 3:80 tracks, double sided (720K) f% 0:non executable boot sector 1:executable -1:leave unchanged r%=XBIOS(19,L:b%,L:f%,d%,sec%,t%,side%,n%) Verifies the disk contents b% address of the memory area with which a comparison is made. f% not used d% disk drive number sec% start sector t% track number side% disk side n% number of sectors ~XBIOS(20) Calls the hardcopy routine and thus dumps the screen to printer. r%=XBIOS(21,c%,s%) Configure cursor. r% when c%=5 returns the cursor blink rate c% 0: Hide cursor 1: Show cursor 2: blink cursor 3: solid cursor 4: blink rate set in s% 5: see r% s% when c%=4, blink rate set to s% ~XBIOS(22,L:t%) Sets date and time t% Bits 0-4: seconds 5-19: minutes 11-15: hours 16-20: day 21-24: month 25-31: year - 1980 r%=XBIOS(23) returns date and time r% see XBIOS(22) for bit settings ~XBIOS(24) re installs the original keyboard allocation (see XBIOS(16)) XBIOS(25,n%,L:adr%) writes bytes from memory to the keyboard processor (IKBD) n% number bytes-1 to be sent adr% address where the data to be sent is stored ~XBIOS(26,i%) Disables an MFP interrupt. i% interrupt number (0-15) to be disabled ~XBIOS(27,i%) enables an MFP interrupt. i% interrupt number (0-15) to be enabled ~XBIOS(28,d%,reg%) reads and writes from and to the sound chip register r% returns register value when reading d% value to be writen (8 bits) r% register number (0-15), bit 7 defines write mode when set. ~XBIOS(29,b%) sets the bit of port A on the register of the sound chip to zero b% bit pattern wicj is OR'ed with existing contents. ~XBIOS(30,b%) sets the port A bit of the sound chip register to 1 b% bit pattern which is ANDed with the existing contents. XBIOS(31,t%,c%,d%,L:adr%) Sets the MFP timers t% number of the timer (0 to 3) c% control register d% data register adr% address of the timer interrupt routine ~XBIOS(32,L:adr%) Starts a sound sequence, whic is processed in the interrupt adr% address of the staorage area r%=XBIOS(33,c%) sets or reads the printer parameters r% current configuration when c%=1 c% Bit set reset 0 Dot Matrix Daisy Wheel 1 Monochrome Colour 2 Atari Epson 3 Parallel RS-232 4 Continuous Single sheet r%=XBIOS(34) returns address of table with vectors to the keyboard and MIDI processor. r% returned address r%=XBIOS(35,a%,w%) sets and reads keyboard repeat rate r% current data bits 0-7 repeat rate 8-15 time of repeat delay a% repeat delay w% repeat rate ~XBIOS(36,L:adr%) Hardcopy routine returns parameter block address adr% address of a parameter block for the hardcopy routine. ~XBIOS(37) waits for next vertical blank interrupt. ~XBIOS(38,L:adr%) calls an assembler routine in supervisor mode adr% address of assembler routine ~XBIOS(39) turns off AES if not in ROM r%=XBIOS(64,b%) contols and interrogates the blitter r% b%=-1 current blitter status bit 1 : blitter there XOR Syntax: x XOR y Action: Logical exclusive OR operator XOR() Syntax: XOR(x,y) Action: Sets those bits in x that are different in x and y. _DATA Syntax: _DATA _DATA= Action: Specifies the position of the DATA pointer. _DATA is 0 if the next READ would result in an out of data message. ~ Syntax: ~function Action: Similar to VOID. Forget the returned value End of File GFA-BASIC3..PPPPPPPPPP^^bnrrrvvTITELADR_MESADR_TITDRAUSMESSAGE_BUFFERWORD0XYWHHANDLEWXWYWWWH** window.lst  t!!F!!!Ft!F H F 16 Byte 8 F !F!F !F !F !F  (@Я/!!!!| F 4WindowFF 8FF,д!! ! !! F"а!d!d!!d Fг!!!!! F!!! F <FFx{0!!!!!!!!!!!!!!!d!!!!!! F 0F!F WM_CLOSED <FF WM_FULLED (д!!!!~!| Fг!!!!! F!!! F@F!,!FF WM_SIZED, WM_MOVED  F @dF$F ߠF @PF$Fд!!!!! Fг!!!!! F!!! F@F!4F FF б F в F. ˊm.. AUTO ̊mBOX SYS rP<GFA_RAY SYS rPRAYTRACEPRG |rPoREADME TXT |SHOW512 LST Y`SHOW512 OBJ ESHOWANIMPRG rPMSHOWANINPRG rPLSTARTSCRSYS rPSYNC60HZPRG öEMIRROR WFL TEWORM WFH nELISTOBJ PRG E?BOW WFH AEBOW WFL BEFUNNEL WFL DEGFA WFL EER JUGGLER WFL JE SWING WAL lEnWORM WFL qE SPIDER WFL UE TRANSPARWFL rP . ͊m.. ˊmSYNC50HZPRG E`Ha49` g`?/8p/8A@C <"Q xN <? Q"xNH<#J0<2<AN"QQ!pPH6<0<,aj6<0<f|H&yJIBK 6<aaA9 gAJgNNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqNqNqA0 A 0A NqNqNqNqQxaLRNsNCNsNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqQta$LRNsww<.Z\NqD   x@x@  !! !!   @@AA44 @@AA xx tt!!44xx@!@!""??##    0000  @ @    @!@!D D pp @@$@$@!!D D pp @@ @!@!   @ @ 8888 ??     ``<<00 0 0@ @   ``>>  @ @ ?? @ @  DD@ @ @ @  DD@ @  @ @   @ @  @ @ 88 8 8 << ??  xx,,DD!!!!~~~~$$qq@@  00 @@  @@@@  ((0000@@  @@@@22 @@  00  ǀ@@$$NNqq||@@   ~~~~  PPxxxx ** q   @ ?      ?    @@  @@4 @@t @@ ` ?  t!t@!4 @!4@! ""?p"?#      x  ? p 8    @@ @ @   @! @ D 0 @D @ @D D D @ @D 0 @ @  @! @ @ @@   0 8 8 |      p8  `  #   @@  @ @     @  > p8@ ? @  @  @  @  @  @ @  @  @  @  @  @  @  @ @     @p8 '      0 ! H H$a ~ `  "` @ @ @@ @@(@@  @" @  @ @@ @ @@$ @ @ @  @t` C (~H` @ @@@a @8p"@ @ !(~  `Ha\!pa |3>#1C\0<2<"QQ#`!RA9!dpI0! #1 )|0)|1#{1aL?</<?<1NAH.9 y"y "&9(9*9$94<ր؁###aN"""؀ځ###a"""QzLNuH 9z 9~ 9 9"9j 9$9rЁ#2<"9n$9v&9҂###$<䡲fgz"9v"9$9n’# 9j"9"9r$9#"9f$6<SC栒#"9##LNuH瀀A^091H091Pl 0<`hl 0<`0< 31LNuH y1"y1$y1&y16<?$2BI0AH@HIJ 1"2$3 IH@Aw QLNuH0<?8< y1"y1$y1"<4C gC *gC *gC *gC3131aVy1291CC21 691SCHSD DfR Dl 8<QR@y1QtLNuH瀀A091H091Pl 0<`hl 0<`0< 31LNu)-=AQUei y}-1@WWFN1Jy0gjJx>fb|H9 3@Ap9 gA$C`E&y1IBK M1rt6<9|NC#2.y1890 Df6<`ZDfT)k)k)k)k )k)k)k)kA 69 gA691` | JgNNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kANNqNqNqNqNqNqA0 A )_A )kNqNqNqNqDfNqNqNqQ*` TJQ` A0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kANNqNqNqNqNqNqA0 A )_A )kUJNqNqNqNqNqNqNqQF`NqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqNqNqA0 A 0A NqNqNqNqQxA0 A 0A NqNqNqNqNqNqNqa .y2LNsNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kANNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqDfNqNqNqQ`TJQ`A0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A )_A )kANNqNqNqNqNqNqA0 A )_A )kNqUJNqNqNqNqNqNqNqQ*C1K.y29y1o6 f IaZ` dHF y1$y1NLb`Jy1gTJy1g\Jy1g E1Ơ E1A% 91 ):091291 Q1P1`Jy1g E1Ơ LNsNC y1^g1_`31^NsNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqQtA0 A 0A NqNqNqNqNqNqNqa.y2LNs#@#D#H#L#P#T#X#\NuHa*xN(9VACEG^0<2t6<Jp f81 LBr@g6TBQt6<Jp f TBQ`1 81 LB5>@JFFUmmmFFgUgmgmgm<Vd <<RAQ" y1|"9V\08<01j1j>:QaLNut316<H,<8D31O8D31OG3181 LB82@:Ey1L0@y1ڀLDy1ڄn ,31TBQLc491`B?< NA\#0Nu/90?< NA\ONuy0l 090`y0o090y0l 290Nuy0o290NuHy0?<?<NNP?<"NNT @#12#*16C#1: h0(A#1?<?<NNX#1Nu31g31y1gy1Ry1(H((I(y0y0ay1gP131y1g31P1NuH?<//.?<aUf:T/< /?90?<@NA ??90?<>NAX0LpNuHB0*y0,y0ޖ$90#0(<>a Uf:T0#0LNuJGfBF`& Gf<<`<<USfX:<TT0ƹ0 m?<=NAPJ@k30./Hg //<G?90?<?NA J@kXHy /<?90?<?NA J@k4,o@$/DK 2<8<a^NAX LNuHB0*y0,y0ޔ4908&<aH/< /<?90?<?NA J@j `2LBA*| 0Q:BNuHa"y1d < z2"<23P3X:Qb01{DZ61 0P^fJddppww3ppww3pww3ppww3Dww3ppww3pp-=AQUei y }!15 "          ,X> . ,d*L .    j  4Pd 0        "  N R H &" `zN IAON5N @oNu0NP퉲` <6hNQ퉲 <`Nbr+@?<NNTrl@+@pWHV퉳 -"Ё+@ -$ԀЀЂ+@SSpJ-gp_D+@pJ-gpFV퉴p+@p+@p+@p+@pd+@`:NA NANANANANA NANANAN m "mN/?? m"mN8:&NF mN/?? m "m N/?? m"mN8:&NF mN8:&NF/?? m"m N/?? m"mN8:&NF mN8:&NpN6`6NA8NA4NA0NA,NA(NA$N m0"m$N/?? m4"m(N8:&Np/?? m8"m,N8:&Np/?? m$ 24N /?? m( 24N 8:&Np/?? m, 24N 8:&Np/?? m0 24N /?? m4 24N 8:&Np/?? m8 24N 8:&Np8:&NN8:&NN6Q퉵Q퉶Bp+@Ax I$ I%p +@$mt$@$mx$P퉷ENENAxNAzNAnN$m|$@$m| NbNNCxNCxN $m|R$m| `fpr~ANp~ANNA~N@A턄N@A턊N@ppNt+@ <Nt+@NHy@NNX@??<@NNX <NbJg"EDp N/N/N"_$rNp~ANptr~AbNpr~AhNpr~ANp~ANp~ANp~ANp~AnNp~AtNp~A`N -~AzN -~A틀Np~A틆Np~A틌Np~A틒Np~A틘Np~A틞Np~A틤Np~A틪Np~A티Np~A틶Np~A틼Np~ANp~ANp~ANp~ANp~ANp~ANp~ANp~ANp~A N <g~AN <g~ANp~ANp~ANp~A$Np~A*Np~ANp~ANp~ANpr~ANp~A0Np~A6Np~ApdN0&<:<N&<:<N$m|( mAH 00$m|R$m| o]$m|B$m| A큀NN$m|( mAH 00$m| A큀NN$m|( mAH 00$m|R$m| hf$mBN$m( mt!H$mR$m rf$mBN$m( mn!H$mR$m rf$mBN$m( m!H$mR$m rfN0):+@ <&Э+@?<NNT+@ < Nt+@-g?<NNT}+@phA턐N`+mޅplA턐N0p`Э+@BpbЭNt+@FprЭNt+@JpvЭNt+@NpzЭNt+@Rp~ЭNt+@VpЭ+@ZpNETpNrN-gp2<NbCN `. <rNpN/pNnD"pNbCN pNNp$m$p$m$N$m|B$m|"pN6$m|R$m| WoN pNN0<-1NCN pNNE[pNCN N!p"<DN|N@NN8P퉸NNuENN:JWHH/pJ-gpJWHHgNFpJ-gpJWHH/N:r]HH/N:rnBN:r%fp.N:J]HHg6pNA턄NRA턊N@N:r%f Hx N+mb^N4p"<DN| mp0 mp0prNN&-g"/-NpgN`Nt` mp0$m|Bpr$m|ҒAxNNf$m|"@Nv$m|R$m| roN-f@E^pN N:NXNEepNNEupNNJpNN8NuNA퀌N-gpN6<ptrN mp0$m  mA80$m  mA@0$m  mA<0$m  mAG0$m  mAG0$m  mZ0+mf <(ЭNz` mfp0p\ѭf -fo]$m r$mђ+mfp0ЭNz` mfp p0|f Pf -fo]N6p Э+@j+|wnp+@f -n mj -n0|j PjRf ƆfoNu-g mp0 <'jЭNt @ <1@. mpA&40 m <A&0 m <A&0 mpA&0 m <WA'0 mpKA'0 mpOA)0 m <A).0 m <A)d0 m <A)v0 m <A)0Nu-g mp0 <'jЭNt @ <?1@. mpA&40 mpA&0 m <?A&0 m <RA&0 m <A'0 m <A'0 mp'A)0 m <@A).0 m <?A)d0 m <?A)v0 mpxA)0NuNNBf"-fpN6Rfpfl <NNt$m$"m$m R <GN"m$m R <@NA~N@pNpNNEp NN"pJ-gpgpNEp NrNpNANBpNN$m$A~ $ <}rN. <Gt ԭrN.pNBNA~NR mp0pN~6<0<4<rNEp(N4<rNtEp!N4<rNtpЭ$m$$m Ah$m$"m| m"$m rZЁNz`$m| R <w0$m|T$m| o]p0|$m0$m FNz`2|\p\$m$m RNp\$mђ$m o]A~N@ mp0pNNN`p-gjpNpNNEpN4<2<NtpNpNNEpN4<xrNtEp!N4<rNtpN-g mp0NBa~N <%Э+@raNNNupN <A틘N -Ѐ$ԀЀЂA틒Nx mBHx m 0H\x m!Hx mBHx m 0H\x m!Hx mBHx mBHx mpe!Hx mpe!H <ANpA틶NpA틼NpJ-gp&<:<N&<x:<NFNdAN-gZ$mB$m( m 0HЀ$m( m!H$m( m 0HЀ$m( m!H$mR$m WoNu <NNt+@A턊N@A턊 "<NNɂpN~pNpN -$DԀԀЀЂ6<trNNN;NuA턊 "<NNɂpN$m RfBv/-vN6Rvpvl` $m/N6NE -"<NNɂA턊NRNuNA퀜N$m RWHH/$m $mWHHgpN$m( m 0H$m$$m( m 0H$mВ$m$$m( m 0H$m$$m( m 0H$mВ$m$pN~$m $m&$m$$m"N$m $m&$m$$m"N -$Ђ$m$m $m&$m$$m"N $m v$m֒$m$r$mҒN -$Ђ$mВv$m֒$m$r$mҒN$m WVHH/$m SnB$m $mVHHg -$爐$mВ"pJ-gpЁ/pNN$r$mҒNt -$爐$mВ"pJ-gpЁ/pNN$r$mҒNt -"ЀЁ$mD"pJ-gpЁ/pNN$r$mҒNt -$爐$mВ"pJ-gpЁ/pNN$r$mҒNt -$爐$mВ"pJ-gpЁ/pNN$r$mҒNt$m( m 0HR/$m( m 0HR/$m( m/0H$m( m 0HПr/$m( m/0H -Ѐ"ЁD/$m( m 0HП&$"NN6NA퀨N$mHQ$m Rf$mBN$mR$m Wo`"m m"NN6$m/N|$m W]HH/$m SnB$m RWHHg$m( m 0H$m\HH/$m( m 0H$moB$m( m 0H$mlB$m( m 0H$m_HHgP퉹NQ`$m( m 0H$m\HH/$m( m 0H$moB$m( m 0H$mlB$m( m 0H$m_HHg P퉹NO`N$mHga~N?$mHQNu mp0HxNprNaNprN6prN6prN6prN6pN~ -$ԀЀЂ6<t2< NN!Nu -brl@+@b -$Ђ$m$ -Ѐ$ԀЂ$m$$m 6<u$m$2<N$m 6<u$m$2<Nx"mN|C턨N 0-NvN&<x:<NFNd/ -Ѐ$mD/A턨$"NtNuNA퀘NpJ-gp&<:<N&<x:<NFNd$m$p $m$pANp+@z$m|B$m| &<:<NNR0<: N/$m|("mN|"_NC턨N $m| r lp NN"HA턨NC턨N HmN$m|*x "m Nю0(H"-zl@+@z$m|R$m| r o^$m|B$m|*x "m Nю/$m|*x "m Nю0(zDN"_N$m|*x "m NX$m|R$m| r oHx NrA턄NRN6p+@bN^-gprN6NaNENٶp+@bNpNNԔNό$m$$m$$m$$m Sf-g m JjR $m ^HH/$m {mB$m mB$m U^HHgX$m &<:<N&<:<NNNd+@~N.N/A$-"<NA턄N@`$m ^HH/$m @mB$m ^HH/$m mB$m ^HH/$m ]HHg`NC$mB m, 24$m( mAH 00A큈 24$m( mAH 00$mR$m So`$m ^HH/$m mB$m !nB$m m]HHg -$mg+m m+P$m$m rN+@n$m N:/?? -n&<:<N8:&NF Bl\ -nN:&<x:<NNd$m$ -$mg, -N:/??$m N:/?? -N:8:&N8:&NNd+@pf+m$m SVHHnJgpl -N:/?? -N:&<x:<N8:&Np/??$m N:&<x:<N8:&NFNd/$m N:&<x:<N&<x:<NFNd"o@+@ -N:/?? -N:&<x:<N8:&Np/??$m N:&<x:<N8:&NFNd/$m N:&<x:<N&<x:<NFNd"o@+@ -N:/?? -N:&<x:<N8:&Np/??$m N:&<x:<N8:&NFNd/$m N:&<x:<N&<x:<NFNd"o@+@`$m N:&<x:<N&<x:<NFNd"-o@+@$m N:&<x:<N&<x:<NFNd"-o@+@$m N:&<x:<N&<x:<NFNd"-o@+@A턄NR -Ѐ$DԀЂ/A$"-NNS|A턊Nx m/0Hx m/0Hx m/0Hx m 0Hїx m/0Hx m 0HїA턨(*,.NA턊N@pN~pNpN <NNt+@ax m/0Hx m/0HA턨$"NA턨NA턄N@A턊N@ -ngNEN?`"-g $m $mђa$mHgaN4`6Nu-g"$m$ -$ЀԀЂ$m$`$m$ -"Ё$m$$m rRЁ$m$$m r)Ё$m$pJ-gpD$ЀԀЂ$m$m $m&$m$$m"N-f>$m $m&$m$$m"N$m Rv$m֒$m$r$mҒN$mP$mX$mQ$mY$m $m&$m$$m"N"m m""m m"$m|B$m $m|( m!H$m $m|( m@!H$m &<:<N/??pJ-gp&<:<N8:&NFNd$m&$m$$m"N $m| W]HH/pJ-gpJWHHg$m $m&$m$$m"N p$mђp $mђ$m|R$m| Wox m 0H^$m$x m@ 0HW$m$pNN$m$r$mҒNtpNN$m$$m"Ntx m@ 0HW$m$pNN$m$r$mҒNtpNN$m$$m"Nt-fjx m0/0H*x"m NюC턨N $m &<:<N/??0-NvN8:&NFNd/A턨t$mԒ"NtNuHxN$m $mmN.f$mBQ퉼N4Nό$m$$m$+CNpWHH"pJ-gpgpfRx m 0H$m^HH/x m 0H$mmBx m@ 0H$mnBx m@ 0H$m]HHgx m 0H$mx m@ 0H$m m rN $mS m r N $m UgP퉽$m g m+P` m+PHx$m/Hx$m/B$m/Hx$m/A~N/$m/B$m/A~N$m"NПA~NN.f`~``x` HxNA턄NRNuNA퀸NA퀴N$m rl@ro@$m$$m rl@ro@$m$$m( m 0HR$m$$m( m@ 0HR$m$x$mؒ m 0HS/x$mؒ m@ 0HS/A턨(*$m,$m.NpA턨$m$$m"NN6NA퀴NA퀸Na(pЭ/BapЭ/HxaN6 -~"ЀЁV+@ -A톂"N $m$$m$|pJ-gpRf$$m Dl $m$C` $m$E -~g -Ѐ"ЁЭ$m$`+m -$ԀЀЂ$m$A$m($m*,-$m.Np A$-$m"NBm <r4< A큐N|fNfGN4NupЭ~~N?SHbpЭ~~NɬT>T(@NuNC~$m Wfp$m$p$m$$m( mCH$m( mAH  "$m( mCH$m( mAH  "$m( mCH$m( mAH  "$m( mCH$m( mAH  "aN?$m N:&<x:<NA큘 00$m N:&<x:<NA큠 00N4Np$m$x m 0Hr+@x m 0Hr+@x m 0Hr+@x m/0H -$ЂD+@x m/0H -$ЂD+@x m/0H -$ЂD+@x m 0HR+@x m 0HR+@x m 0HR+@x m 0H+@x m 0H+@x m 0H+@+mv+m$m gR$m r fDNrx m0 0H$mİ\HH$mJgN-f ``P퉼N9`ZHxNrNA턄NRx m0 0H$mİ\HH$mJg$m UfN6N9` P퉼N9$m fBBBB`N$m SfBBBB+mv+m`&$m UfBBBB+mv+m -jR$m$$m @ m m@0B0 - m@NNdЭ+@ - m@NNdЭ+@pNQ퉼Q퉿BBB?< NATJg\?<NATJjr+@npanfA턄NRP퉼N9`&pbnfpJ-gpFV퉶A턄NRNDNό$m$$m$+C$m &<:<N mD 00$m N:/?? -N:8:&N mH 00-g$m( m 0H_WHHSD$m$ -&<:<NA큨Nj&<x:<NLzNǀ mD 00 -N:/?? -N:8:&NA큰Nj&<x:<NLzNǀ mH 00 -N:/?? -N:8:&NA큸Nj&<x:<NLzNǀ m@ 00 <r4< mDNNd$m$ - mHNNd$m$$m r$mВ m - m@NNd$m$-gz$m( mr؅AHN`+@z$m( mr؅AH 24&<x:<NFNd+@z$m( mr؅AHN`+@`f$m/$m/BA~N+@$m/$m/HxA~ND+@$m/$m/HxA~N+@A큘"m@NNdѭA큘"mDNNdA큘"mHNNdѭ$m So -ѭ - -ѭ -򀭆Jg BBBN:N;QN:$m $mVHH/$m $mgp.$m $mаVHHg,A턄NR"m m""m m""m m"NDpf -Nt+@$m  m `pNό+A$m$+C$m $mذgPA턄NR"m m"$m N:/?? -N:8:&N m@ 00N:N;NDpgN4 - m pfHA턄NRpJ-gp/$m r VHHg QN:N4p$mLJgpJf\ -$m_HH/$m r VHHgHx N m N:` -$mܰlHx NN:P$m R~N^  JT$m \HH/p$mLJgpJgBpJ-gpJWHHgJ$mB$m r f$m/NJ` $m/N$mR$m SoN;A턄N@pJ-gp"pJ-gpVpJ-gp$mJV$mLfTpJ-gp"pJ-gpg0A턄NRP퉿$m( m 0HS$m$$mSNٶ-fQ퉼BQ$mPg0<rN6$mPQ`prN6A턄NRN4NNCNu - mDNNdЭ$m$ - mDNNdЭ$m$ - mHNNdЭ$m$ - mHNNdЭ+@Nu - m@NNdЭ+@ - m@NNdЭ+@NuNATNA퀬NA퀤NA퀨NA퀠NN @p1@N @p1@N /NBr(ЁNh _1@ N" @p$mTJgp0N. @$m 0N. @$m 1@N. @$m 1@N. @$m 1@0<NN6NA퀘NAtNAxN$m RWHH/$m WWHHghx m 0H+@ x m 0H+@$mt$@$mx$x m 0HN:/??$mt N:8:&NA큘 00x m 0HN:/??$mx N:8:&NA큠 00NpN~$mx N:/??$mt N:8:&N&`Nό$m$$m$$m$ -:$m">o@"-6l@$m$$m $mg:A턄NR"m m" -"-*N$mВ$m&$m$$m"NNSgvA턄NR -N:&<x:<N&<:<N/??$m 6N:8:&NNdrl@/$m N:&<x:<N&<x:<NFNd"o@+@n$m f+mn`+mna:aNupNA턄N@$m( m 0H$m$$m( m 0H$m$$m( m 0HrЁ+@6$m "<@N+@& -6&<:<N/?? -&N:8:&NFNd+@:p$m$NϬ/$m( m 0HD+@`zNό$m$$m$$m$ -:$m"o@"-6l@$m$$m $mg2A턄NR"m m"$m &-&$m֒$m$$m"NNSg~A턄NR$m 6&<8<:<NNdrl@/$m N:&<x:<N&<x:<NFNd"o@+@n$m Uf+mn`+mnafa$NuB -N:&<x:<NNd$mg Rpl -"Ё"+@ -Ѐ$DԀЂ/ -$ԀЂ/A(zڭ,.-N -Ѐ$DԀЂ/p A$"-NNuA$-"<NA턄N@Np+@baHx Hx Hx~HxN4 NA~NRHx3aNX-gD6<ptrN <%Э+@rp0|r0N5F mp0N4 mp0-gB mp0NԔ -Nh+@B -BgpЭNh$m$pЭNh$m$`rprNN4NԔNό$m$$m$+CBN$m r^HHB/$m  nBpBWHHg m JjR pBf4$m l@$m &<:<N&<:<NNNdrl@+@FN[6`$m ^HH/$m mB$m )nB$m u]HHg$m $m$$m rN+@n$m N:/?? -n&<:<N8:&NF Blv -nN:&<x:<NNd$m$N5(pN -$刔ԀЂ/ -$ԀԀЂv֭J$"-JNpNNa~N4`$m ]HH/$m ^HHgpJ-gpFV퉵`l$m ^HH/$m ]HHgN`:$m ]HH/$m ^HHgpJ-gpFVN mp0 -NhJf``pBfN5(-gJ <NNt$m$A~ "<NNɂpN~6<ptrN$m "<NNɂNNJBa2A~NR mp0pNNHx3a```r-g mBp0N& mBp0N5(NN-g0Bf"-fpN6Rfpflp0|r0HxNprNNA턄NRN4p^fNA턄N@``N@NupN~pNpJ-gp&<:<N&<x:<NFNd/pJ-gp&<:<N&<x:<NFNd6<t"N -$Ђ/ -Ѐ$ԀЀЂ6<~$2< NpNN$mB -$ЀԀЂ$m$ -N:/?? -N&<:<N&<:<NZ8:&NNd/ -"ЀЁ"N`$m("m&N|0(NvN&<x:<NFNd/pJ-gpЀ$mВ/$m("m&N|$"Nt -"ЀЁ$mВ/ -"ЀЁ$mВ6<|$2< N $mR +$mђ$m"$+JjAoPGp$m$ -&<:<N/??pJ-gpN:N8:&NpNd/0<1/NX$2<NtN`Na~pNNNNupЭF~ N[K[n[z[lqNuNup+@^`Nup+@^`NuNNBaaN <NNt$m$$mXf"m$m R <GN"m$m R <@NNNZ$mt$@$mx$pRf$mt $mtђ$mx $mxђNd<+|;VA n PA =qBmBm <r4<x mAH 00A0B0A N^Np$m\Jgp/p$m`JgpFg prNɰ$m N < NbNNn-gpN6<?ptrN pNAfNxAlNxArNxNA~N@ m+PN5(an$m\f`NuNA퀸NA퀴N$mB$m( mAH 24&<3338<33:<Ng -$m( m!H`r -N:/??$m( mAH24 NNNd$m( m!H$m( m 0Hrl@"-o@$m( m!H$mR$m Uo>x m 0HN:/??x m 0H&<:<N8:&Np/??x m 0H&<:<N8:&NpNd$m( m!HN6 <`A2<7L4<ANA 00A큈C"" m,C""A 24A큈NA 24 m,N m,N/??A큈N8:&Nx mAH 00 m,N/??A큈N8:&Nx mAH 00A큈Nx mAH 00 m,Nx m AH 00 m,NDBx m AH 00 m,NDB/??A큈N8:&Nx mAH 00 m,NDB/??A큈N8:&Nx mAH 00A큈Nx mAH 00A"m,""AC큈""$mt N:&<x:<NA 00$mx N:&<x:<NA 00Nup$m$$m r Ё$m$$m rPЁNz` -Ѐ$DԀЂ/ -$ԀЂ$m&C$$$m"AN -&<:<N/??pJ-gpN:N8:&NpNd/$m N:NR$$m"ANt$m $mђp$mђ$m oJ]NuBJ -JN:&<x:<NNd$m䰒g RJpJl+mJZ -J"Ё(+@J -$刔ԀЂ/ -$ԀԀЂv֭J$"-JNNuNANp $m$Qa-g arNlN6$m &<:<NNNA 00x mAH 24&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$x mAH 24&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$x mAH 24&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$NNcNupNN.4 -bv֭^$-brҭ^N pЭb&-^tԭb"-^N N.\ -jv֭f$-jrҭfN pЭj&-ftԭj"-fN N. -rv֭n$-rrҭnN pЭr&-ntԭr"-nN BBHxHxBgaNuBvBBBA~Nj /BBBA~Nj /ANd"_ _N$mB$m Nz` V$m( m 0H+@zpzf`$m/HxB <@A~Nj$m/HxHx <@A~Njѐ$m/HxHx <@A~Nj`NHpzVHH/pzfBpzVHHg Bp zop$m$pzlp$m|$Bf$m/$m|//-f$m/$m|//-fA~NDA~NRfpfl$m|R$m| WopzlLBf$m/Hx/-f$m/Hx/-fA~NA~NjRfpfl`p$m$p$m|$$m Nz`j$m/$m|/B <@A~Nj$m/$m|/Hx <@A~Njѐ$m/$m|/Hx <@A~Nj$m|R$m| o]pz^HH/pz]HHg$m/HxHxA~N/$m/HxHxA~N"N/$m/HxHxA~N/$m/HxHxA~N"NؐDA(N0$m/HxHxA~N/$m/HxBA~N"N/$m/HxBA~N/$m/HxHxA~N"NؐDA0N0$m/HxBA~N/$m/HxHxA~N"N/$m/HxHxA~N/$m/HxBA~N"NؐDA8N0A( 24z$m( m`؅AH 00A0 24DBz$m( m`؅AH 00A8 24z$m( m`؅AH 00tA(N/tA0NtA8NgA@0B0`BA( 24N /??A0 24N 8:&Np/??A8 24N 8:&NpNA@ 00A(//A0//A8//x mAH//$m/HxBA~NN:8:&NF/??x mAH//$m/HxHxA~NN:8:&NF/??x mAH//$m/HxHxA~NN:8:&NF/??aJBlA@ 24DBA@ 00A@C(Nz$m( m`؅AH 00A@C0Nz$m( m`؅AH 00A@C8Nz$m( m`؅AH 00`D$m/B$m/HxBA~NN:/??$m/HxBA~NN:/??$m/HxBA~NN:/??$m/HxHxA~NN:/??$m/HxHxA~NN:/??$m/HxHxA~NN:/??$m/HxHxA~NN:/??$m/HxHxA~NN:/??$m/HxHxA~NN:/??a*( m`؅AH 00z$m( m`؅AHC큀""4-g$m/HxHxA~N/$m/HxHxA~N"N/$m/HxHxA~N/$m/HxHxA~N"NؐDA큀Nz $m( m`؅AH 00$m/HxBA~N/$m/HxHxA~N"N/$m/HxBA~N/$m/HxHxA~N"NؐDA큀Nz$m( m`؅AH 00$m/HxBA~N/$m/HxHxA~N"N/$m/HxBA~N/$m/HxHxA~N"NؐDA큀Nz$m( m`؅AH 00$m/HxHxA~ND/$m/HxHxA~N"N/$m/HxHxA~N/$m/HxHxA~N"NПA큀Nz$m( m`؅AH 00$m/HxBA~ND/$m/HxHxA~N"N/$m/HxBA~N/$m/HxHxA~N"NПA큀Nz$m( m`؅AH 00$m/HxBA~ND/$m/HxHxA~N"N/$m/HxBA~N/$m/HxHxA~N"NПA큀Nz$m( m`؅AH 00$m/HxHxA~N/$m/HxHxA~N"N/$m/HxHxA~N/$m/HxHxA~N"NؐDA큀Nz$m( m`؅AH 00$m/HxBA~N/$m/HxHxA~N"N/$m/HxBA~N/$m/HxHxA~N"NؐDA큀Nz$m( m`؅AH 00$m/HxBA~N/$m/HxHxA~N"N/$m/HxBA~N/$m/HxHxA~N"NؐDA큀Nz$m( m`؅AH 00`bpzfZ$m/BHxA~NN:&<x:<NF/?? -RN:&<x:<Nǀ8:&NNd+@v$mR$m o]NuNN-g,/-N -fa^`a0<wrN6prN6prNArCtNl/ A큀N0  <r4<A큀NgP퉸aNa2NN5F`NuBNrNA턄NRNuNAN$m( m6 0H$m$$m r g$m( m< 0H$m$pNBz$m|B$m( m0 0HNz`.$m|*$m("m Nю0(H"-zl@+@z$m|R$m| o]Az  p$ѭz$mT -z$mВ$m$$m( m0 0H"ЀЁ$mВrЁ$m$$m Qf$m( m0 0HЀ$m - m"N - m"N $m $m&$m$$m"N$m Rv$m֒$m$r$mҒN$m $m&$m$$m"Np $mђp$mђ -$mђ$m|B$m( m0 0HNz` -Ѐ"Ё$mВ$m&$m$$m"N$m $m|( mB!H$m $m|( mH!H$m $m|( mN!H -Ѐ"Ё$mВ$m|( mT!H$m|*$m("m NюC턨N $m &<:<N/?? -z&<:<N8:&Np/??0-NvN8:&NFNd/$m N:/?? -&<:<N8:&Np/??pJ-gp&<:<N8:&NpNd/A턨$"Nt$m Qf -Ѐ"Ё$mђ` -"ЀЁ$mђ$m|R$m| oV]$mBN$m QWHH/$m Yfp.$m r fp.$m rfp.$m rWHHg$m r fpЭ$m|$`$m QfD <r4< mLNNd$m|$$m|S$m| r o@rl@$m|$`$m rf?<NAT$m|$`x$m Yf."m| m"$m| Uf$m|R`R$m| WfH$m|S`@ <r4<AHNNd$m|$$m|S$m| r o@rl@$m|$$m|( mB 0H$m$$m|( mN 0H$m$$m|( mH 0H$m$$m|( mT 0H$m$A$m($m*$m,$m.Np A$m$$m"NN4Nό$m$$m$$m$$m SWHH/?< NATg$m QWHH/$m Yfp.$m r fp.$m rfp.$m rWHHgA$m$$m"N?< NATJg:?<NAT&<:<N&<x:<Ng$mBNz``>$m|B$m( m0 0HNz`x$m|( mH 0H$m^HH/$m|( mB 0H$mmB$m|( mT 0H$mnB$m|( mN 0H$m]HHf$m|R$m| o|]"m m|"$m( m0 0HR$mİn`r$mR$m|( mB 0H$m$$m|( mN 0H$m$$m|( mH 0H$m$$m|( mT 0H$m$A$m($m*$m,$m.Np A$m$$m"NBm <r4<A큐N|fNfGN4A$m$$m"NANN6NAN$m( mB 0HR$m$$m( mN 0HR$m$$m( mH 0HS$m$$m( mT 0HS$m$A$m($m*$m,$m.Np A$m$$m"NN6NA퀸NA퀨N-g m Ѐ Q퉹a-g2 <NNt+@A턄 "<NNɂN -"<NNɂpNN6NA퀨NA턊N@Hxax m0 0H$mİ\HH$mJg$m &<:<N mL 00p$m$A턊NRN6NA퀜NA퀠NA퀤NA퀨NA퀬N-g$m( m 0H$m$$m( m 0H$mВ$m$$m( m 0H$m$$m( m 0H$mВ/ -$ЂD$m$$m $m]HH/ -$Ђ$mВ$m^HHg $m rЁ$m]HH/$m $m^HHg$m( m/0H$m( m 0Hl p$m$` "m m"$m( mCH$m( mAH  "$m( mCH$m( mAH  "$m( mCH$m( mAH  "$m( mCH$m( mAH  "$mHPP퉹N6$mHQ$m Rf*$mB$m/a$mHf&$mR$m Wo`"m m"$m/aQ퉹$mHf a$mHQNu -N:&<x:<NF/??$m N:8:&NNd$m$ -N:&<x:<NF/??$m N:8:&NNd$m$ -N:&<x:<NF/??$m N:8:&NNd$m$NpNN.4pЭbv֭^tԭbrҭ^N pЭbv֭^tԭbrҭ^N N.\pЭjv֭ftԭjrҭfN pЭjv֭ftԭjrҭfN N.pЭrv֭ntԭrrҭnN pЭrv֭ntԭrrҭnN BBHxHxBgaHNu+mv+m$m fBBBB`N$m SfBBBB+mv+m`&$m UfBBBB+mv+m -v&<:<NA큘 00 -&<:<NA큠 00$m A큘NNd$m$$m A큠NNd$m$$m Э+@^$m A큠NNdЭ+@b$m Э+@f$m Э+@j -$m"N"<NЭ+@n -$mВ+@rNu mDC큨"" mHC큰"" m@C큸"" m+P~$m RftpN$m &-֭$m$"-N -&-֭$-"-N pN -&-֭$-"-N -Э&-$-"-N pN -Э$m&$-$m"N -Э$m&$-$m"N -gpNpNNpyNNt$mԒrҭNtpyNNtԭrҭNtpNNpzNNtԭrҭNtpzNNtԭrҭNtpNNpxNNtԭr$mҒNtpxNNtԭr$mҒNtpNN`$m fpN -&-֭$-"-N pN -Э$m&$-$m"N -gBpNNpzNNtԭrҭNtpNNpxNNtԭr$mҒNt`8pN$m Sf$m &-֭$m$"-N pN -Э$m&$-$m"N -gDpNNpyNNt$mԒrҭNtpNNpxNNtԭr$mҒNt`$m Uf -&-֭$-"-N pN -Э&-$-"-N pN-gJpNNpyNNtԭrҭNtpNNpzNNtԭrҭNtpNN$m SgA큘"mDNNdЭ"<o@+@ -N:/??A큠"mHN8:&Np&<x:<NL&<x:<NFNd+@ -N:/??A큠"m@N8:&Np&<x:<NL&<x:<NFNd+@`A큘"mDNNd"<o@+@A큠"mHN&<x:<NL&<x:<NFNd+@A큠"m@N&<x:<NL&<x:<NFNd+@ -ѭ -ѭ -ѭpNN -$ЀԀԀЀԀЂ/ -&<:<NNR$2<6NtpNN -$ЀԀԀЀԀЂ/ -&<:<NNR$2<\NtpNN -$ЀԀԀЀԀЂ/ -&<:<NNR$2<Nt$m (- m !H -(- m!H$m (- m!H$m (- m"!H -(- m!H -(- m(!H -opf$mdgx m 0Hx m !Hx m 0Hx m!Hx m 0Hx m!Hx m" 0Hx m"!Hx m 0Hx m!Hx m( 0Hx m(!H`Fx m /0Hx m 0Hїx m 0HDx m !Hx m/0Hx m 0Hїx m 0HDx m!Hx m/0Hx m 0Hїx m 0HDx m!Hx m/0Hx m 0Hїx m 0HDx m!Hx m"/0Hx m" 0Hїx m" 0HDx m"!Hx m(/0Hx m( 0Hїx m( 0HDx m(!Hx m 0Hx m !Hx m 0Hx m!Hx m 0Hx m!Hx m" 0Hx m"!Hx m 0Hx m!Hx m( 0Hx m(!Hp+@f$mBN.4(-f m /0H(-f m/0H$m( m /0H$m( m 0H&$"N N.\(-f m/0H(-f m"/0H$m( m/0H$m( m" 0H&$"N N.(-f m/0H(-f m(/0H$m( m/0H$m( m( 0H&$"N $mV$m Wo Rfpfl`BfpЭNz`N.4(-f m /0H(-f m/0Hxحf m /0Hxحf m 0H&$"N N.\(-f m/0H(-f m"/0Hxحf m/0Hxحf m" 0H&$"N N.(-f m/0H(-f m(/0Hxحf m/0Hxحf m( 0H&$"N Rf -fo]`$m So m+P"m m"$m/$m/B -A~N$m/$m/Hx -A~N$m/$m/Hx -A~NN$m( m 0HW~N(..(t m -gN|BBHxHxBgaVNuNAhNN<$m|( m 0H mhNR/ - mhN"_N$m|*$m("m NXN6B$m|( m 0Hrl@$m|( m!H mh0(H+@f$m|( m 0HNz`6"-fp mhNp:NH/"-fp mhNp\NHfRSf -fl]NuNAhNx mp!H$m|BaJ - mhNC턨N N6A턄NR$mB$mBt$m*$m( m؅AH 00$mR$m Uo$mR$m SotAN <r4$m/HxHxA~N@+@$m Uf p$m$`p$m$$m/HxBA~NЭx m!H$m/HxHxA~NЭ>x m@!H$m/HxHxA~NЭx mF!H`$m Sf$m/HxBA~NN:&<x:<NF/??$m N:8:&NNd+@$m/HxHxA~ND$m"N+@>$m/HxHxA~NN:&<x:<NF/??$m N:8:&NNd+@`$m/HxBA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd+@$m/HxHxA~ND$m"N+@>$m/HxHxA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd+@+m+m>+m$m Sf4 -x m!H ->x m@!H -x mF!H`$m/HxBA~N$m"NЭx m!H$m/HxHxA~N$m"NЭ>x m@!H$m/HxHxA~N$m"NЭx mF!HBAP0B0Nh$m( m 0H]fx m 0Hx m!Hx m@ 0Hx m@!Hx mF 0Hx mF!H$m/HxBA~N&<:<NAP 00Nh`$m Sf -(- m!H ->(- m@!H -(- mF!HRx m 0H(- m!Hx m@ 0H(- m@!Hx mF 0H(- mF!HN6$m RfH -N:&<x:<N mP 00Bm^ <r4< mPNjA` 00`$m( m 0Hr f@$m/HxHxA~NA`N0$m/HxBA~NAXN0`>$m/HxHxA~NA`N0$m/HxBA~NAXN0AXC`N*/?? -N:8:&N mP 00AXC`NDg*C`AX  "  " mP 24DB mP 00 mP4(gNN mP 24AXNA`CXNxg mPCXN*A`NJgA`CX""NNuRA`CXN@AX 00AXCh""` <r4<AhN4-nm` <r4<AhN <r4<AhNJfAhN`( mAHCPN/??$m N:8:&NAp 00AhN`( mAHCPN/??$m N:8:&NAx 00 ->N:/??$m/HxHxA~NApN8:&Np/??$m/HxHxA~NAxN8:&NpNd(- m@!H -N:/??$m/HxBA~NApN8:&Np/??$m/HxBA~NAxN8:&NpNd(- m!H -N:/??$m/HxHxA~NApN8:&Np/??$m/HxHxA~NAxN8:&NpNd(- mF!HNuNANALN2p$m$$mLPa\N6Hxax m0 0H$mİ\HH$mJgRx m0 0H$mİfaA턄NR`0$m S$m$$m Uf$mR`$m Wf$mS$m WHH/x m0 0HR$mİWHHgXA턄NRNupN~pJ-gp&<:<N&<x:<NFNd6<t2< NpNpJ-gp&<:<N&<x:<NFNd6<~t2< NpJ-gp&<:<N&<x:<NFNd6<t2< NpN~pNpNpNpNN$mBNua -$ЀԀЂ$m$ -N:/?? -&<:<N&<:<NZ8:&NNd/ -"ЀЁ"N`$m("m,N|0(NvN&<x:<NFNd/pJ-gpЀ$mВ/$m("m,N|$"Nt -"ЀЁ$mВ/ -"ЀЁ$mВ6<{$2<N $m Qf6 -$ԀЂ$mD/ -"ЀЁ$mВ6<D$2<DN $mR +$mђ$m"$+JjAoGNua -$ЀԀЂ$m$ -&<:<N&<:<NZ/?? -N:8:&NNd/ -"ЀЁ"N`$m("m2N|0(NvN&<x:<NFNd/pJ-gpЀ$mВ/$m("m2N|$"Nt -"ЀЁ$mВ/ -"ЀЁ$mВ6<{$2<N $mR +$mђ$m"$+JjAoPGNf$mBa -&<:<N/??pJ-gpN:N8:&NpNd/0<1/NX$2<NtanNu-gNNZNtBNA~ $ <}rN.A턊 $ <JrN.pNp+@+|?p+@x mAH 0|* -0|*0A턊 / -"ЀЁПrЁ0| * A~ / -"ЁП0|* p0|*0 m.HWBgN\N՘R LJojA~N@p+@Hx3N^NN-f`NNux m*AH /x mNAH "@p _NNux mNAH /x m*AH "@p _NNu-g mHWBgN\Nu`8?<NATJjr+@npanWHH"pJ-gpV퉼?< NATJfNuQ퉼Q퉿QQQ$m r WHH"p$mhJgpVA턄N@NN4Nό$m$$m$$m$?< NATJg -N:/?? -vN:8:&N/?? -N:8:&NNd$m$ <f4 <NNt$m$A "<NNɂ-g~ m+P$m $m"N`L$m "-NH( m 0H+@nA / -nЀПNh(- m!HR +ѭ"-$+JjAoG`z m+P$m $m"N`J$m "-NH&<:<N&<x:<NFNd(- m!HR +ѭ"-$+JjAoG$m "<NNɂ`$m rl@$m$x mAH 0|* $m 0|*0A /$m &<:<N&<:<NNdП0| * A /$m "ЁП0|* $m 0|*0 m.HWBgN\N6(- mz 0H+@ -$m"N+@ -$m"N+@(- m/0H$m "N`N/-/-aR +ѭ"-$+JjAoGNu0<wrN6prN60<rN6prN6Nu$m Wo p$m$`$m 2l$mB`p$m$-g4$m( m` 0HWHH$m( m` HJf H` m+PRNuN5(pNNpN -$D爔ԀЀЂ/ -$D爔ԀЀЂ6<|$2< N -$ЀԀԀԀЂ/ -$ЀԀԀԀЂ6<|$2< N -$ЀԀԀЀԀЂ/ -$ЀԀԀЀԀЂ6<|$2< N -$DԀЂ/ -$DԀЂ6<|$2< N -$DԀЂ/ -$ЀԀԀЀԀЂ6<2$2<2N -$DԀЂ/ -$ЀԀԀЀԀЂ6<W$2<WN p NN/pJ-gpnD$mВ("m&N|"_Np NC턨N 0-NvN&<x:<NFNd/pJ-gp&<:<N&<x:<NFNd/A턨$"Ntp NN/pJ-gpnD("m\N|"_Np NC턨N 0-NvN&<x:<NFNd/pJ-gp&<:<N&<x:<NFNd/A턨$"Nt$m$-g\x m` 0HVHHD/x m` 0HVHHD/x m` 0HVHHDN:&<x:<N&<x:<NNd$m$$m r@f p A턨N`A턨Np NN/$m N:NR"_Np N/x$mؒ"m&N|"_N"HA턨NC턨N $m|B$m|("mN|/$m|( m` 0HVHNvN&<:<NZNR"_N4<$m"Ntp%$mђ$m|R$m| Uo`P(-R"mN|C턨N p$m|$$m|("mN|4<.$m"Ntp%$mђ$m|R$m| [o0-NvN&<x:<NFNd/pJ-gp&<:<N&<x:<NFNd/A턨$"NtpNNN4NuNAHN2$mHQ$m( m/0H$m( m 0HП+@v$m( m/0H$m( m 0HП+@p+@" -$ЂD$m]HH/ -$m^HHg$m( m 0H$m]HH/$m( m 0HrЁ$m^HHg6`"$m Uf -"` -"NENf$mHPP퉹`^pЭv$m^HH/pЭv$m]HHg4`"$m Uf -"ѭ` -"ѭNENf$mHPP퉹$mHf,$m( m 0H$m^HH/$m( m 0HrЁ$m]HHg@$m Uf$m "<@N`$m "<@N$mHP`r$m( m 0H$m]HH/pЭv$m^HHg>$m Uf$m "<@Nѭ`$m "<@Nѭ$mHP$mHg P퉹NE`"pЭv$m]HH/ -v$m^HHg$m( m 0H$m]HH/$m( m/0H -$ЂП$m^HHg4` $m g -"` -"NENf$mHPP퉹`r -"ЁD$m]HH/ -$ЂD$m^HHg2` $m g -"ѭ` -"ѭNENf$mHPP퉹$mHf$m( m 0H$m^HH/$m( m 0H$m]HHg>$m g$m "<@N`$m "<@N$mHP`n$m( m 0H$m]HH/ -$m^HHg<$m g$m "<@Nѭ`$m "<@Nѭ$mHP$mHg P퉹NE$mHgN?N6$m g m+PNɔNuNA퀘NN-gNٶ-gNA턄N@N6pbfB -Ѐ$ԀԀЂ/ -$ԀЀЂ6<v$2<Np NN"HANp N/$m &<:<NNR"_Np NC턨N 0-NvN&<x:<NFNd/ -$ЀԀԀЀԀЂ/A턨$"Ntp NN/ -&<:<NNR"_Np N"HANp NC턨N 0-NvN&<x:<NFNd/ -"ЀЁ/A턨$"NtNu$m Dl$m Srl@$m$`p r$mҒo@$m$a@Nu$m Dl$mB` m aNuNANA퀄NA퀘NA퀴NA퀸NANANANAN$m r f2 m $m S$m$pNNN#pN` m $m S$m$N$m R~ N^  J$m R~ N B( ..(tN6$m/HxB$m/HxBA~NDA~Nj$m/HxHx$m/HxHxA~NDA~Nj$m/HxHx$m/HxHxA~NDA~NjNup+@ba(aA턄N@PN4NԔNό$m$$m$$m$$m Sf - m"N $m ^HH/$m {mB -"ЀЁrЁ$mnB$m U^HHg$m &<:<N&<:<NNNd+@~p~]HH/p ~^HHgP퉾N.Q퉾A턄NRpЭ~~ Nm"8CA|X`* - m"N NT$mHgNj``pЭ~nQ -~faA턄N@N!`aм`lNuP퉻N.fA턄N@Q퉻"m m" <NNt+@NJ$mB -Nz`0A턄 "<NNɂa^ -"<NNɂA턄NR$mR$m o]?< NAT/NЀgNJ"m m "a -$ЀԀЂ/ -$ЀԀԀЂ6<l$2<NA턄N@NuNA퀘N$mB$m Nz`$m A킈N0$m( m 0HSWHHDN:A킈N$mBB$m/$m/Af~N/??Hx$m/$m/Af~N/??B$m/$m/Af~N8:&NFA킈N8:&Np$m*$m( ml؅AH 00$mR$m Uo\$mB$m|B$m/$m/$m|/B$m/$m/$m|/A~N/Hx$m/$m/$m|/A~N/B$m/$m/$m|/A~NDA킈NNdПA~N$m|R$m| Uob$mR$m [oJ$mR$m oL]$m|B$m|*x m؅ 0HN:/??$m|*x m؅/0H$m|*x m؅ 0HDA킈N8:&Np$m|( mAH 00$m|R$m| Uorx mAH//x mAH//x mAH24 NNA킈N8:&Np m, 00x mAH//x mAH//x mAH24 NNA킈N8:&NpA큈 00$m gh$mB$m SNz`B$m|BB$m/$m|/A~NN:/??Hx$m/$m|/A~N/B$m/$m|/A~NDA킈N8:&Np$m|*$m( mr؅AH 00B$m/$m|/AB~N/??Hx$m/$m|/AB~N/??B$m/$m|/AB~N8:&NFA킈N8:&Np$m|*$m( mx؅AH 00$m|R$m| Uo$mR$m o]N6HxaNA턄NRx m0 0H$mİ\HH$mJg$m ~Nv2uNu?< NATJg?<NAT+@^ -^&<:<NN/?? -^&<:<N8:&Ngx -^jrrr:+@^p^^HH^/ -b^VHHg8NJ+m^ba^Qp^fNT(`p^fp+@^NX\B^Nu -Ѐ$ԀԀЂ/ -$ԀЀЂ6<v$2<NpNN0< NpNC턨N -&<:<N/??pJ-gpN:N8:&NpNd/A턨$2<NtpNN0< NpNC턨N -&<:<N/??pJ-gpN:N8:&NpNd/A턨$2<Nt -Ѐ$ԀԀЂ/ -Ѐ$ЀԀԀЀԀЂ6<v$2<DN -Ѐ$ԀԀЂ/ -Ѐ$ЀԀԀЀԀЂ6<@$2<N -$DԀЀЂ/ -$ԀЀЂ6<v$2<DN -$DԀЀЂ/ -$ԀЀЂ6<@$2<N -Ѐ$ԀԀЂ/ -Ѐ$ЀԀԀЀԀЂ6<)$2<)N -$DԀЀЂ/ -$ԀЀЂ6<)$2<)N $m$F$m$t$m$$m$A큈N`$m$ND m,N`$m$p$mђp$mђNDNuHxaA턄NR$m ~Nzz: Z NNuNANA NN m+Pp$m$N4Nό$m$$m$$m|$$m $mg"m m" -z$m"N"-N$m$/-$m /$m/$m A~N(- m 0H+@zA턄NRN -Ѐ$ԀЀԀЂ/$m N:NR$2<Ntav-gB$mLg. -Ѐ$ԀЀԀЂ/p N$2<NtN9` Pp$m|$$m| Sf -Ѐ$ԀЀԀЂ/p N$2<NtNN6N?N;Nuzx m؅AH 24&<:<NN/??zx m؅AH 24&<:<NNvN8:&Np/??zx m؅AH 24&<:<NNvN8:&NpNd+@zx m؅AH 24&<:<NN/??zx m؅AH 24&<:<NNvN8:&Np/??zx m؅AH 24&<:<NNvN8:&NpNd+@NuNA퀨NA퀴NA퀸N-ga8NN5F <NNt/"m <8 _NNNtp0|r0BHxHxHxN4 A턊 "@ <G mN <NNt/"m <G _NpЭ+@p0|0B" -" m0 -"0|0 -"0|<0TR"p "l m <w0 <w0|0 <w0|<0pЭ+@B <Э$m|$ <A ЭNz` -&< `8< a:<NNdr$m$ -&< `8< a:<NNdr$m쀒+@"$m|"R mp\N$m| T+@f$m| rЁNz`: -fNh"+@n -n mf0 -n0|f0 -n0|A~ / ->"Ёї$m/NN -:fRA턺rN pNA턢NA텶/p$rN@A텢/p$rN@ <NNt$p(rN@pNA턺rN,pNANB -:PrN m/p$rN@pNrN-g0 ->$DԀЀЂЭ/ -"<G@N$rN@A턊 $$m rN@pN$mRR: -:o]$m\QaNTH`HxN` HxNN6NA퀘N$m( m 0HSfBBBB$m|B$m/$m//-B$m|/$m//-B$m|/A~NA~N$m|R$m| UoRBpBl$m|B$m/$m/$m|/$m|*$m( ml؅AH 24Af~N4$m|R$m| UoN6NAN-g$m  mB0N&N6 -gN\N?$m RotN"m m"$m( m 0H+@zNH -z$m( m!H$m( m 0HRo"$m( mp!HS` HxNNuNX-fN\A턊NRA턄N@$m RoN"m m"$m( m 0H+@zNHpz]HH/pznBpzWHHgzN &x m0 0H$mİ\HH$mJgR$mSpzf$m( mp!H`pЭz$m( m!H$m $m( m!HRNu$mB$m Nz`H$m( m 0H+@zNHpz]HH/pznBpzWHHf$mR$m o]$m $mlHxNP퉼`Q퉼NuNA퀘N$m l HxN$m f HxN$m R^HH/$m VHHV <+@"HxNp"WHH/0-$@}VHH/0-*@ VHH$m $m\HHgBNHxN <Jjr+@"$m $m\HH"Jg0- @}g HxNN6NA퀀NApN2$m Yl*aBN^N0<wrN6prN6prNNpNHxaTNNfNJA턊(<*<?|~Np|NN/$m("m8N|"_Np N/A,r"_tNl$mpJVA턊trNA턊N@$m Y]HH/$m r WHH/p]HHg aNTHN6NA퀈NNtp$m$a~x mBHPp$mXJgpJWHH/$m Q]HHg$m N:&<x:<N&<x:<NF/?? -N:8:&NNdx m!H -$m"Nx m!H -$m"Nx m!HNN;`$mXg A~NR`NA~N@pRWHHSD$m$$m "Ёx m!H$m $ԀЀЂx m!Hx mBHpNN;pN -g($mB$m Nz`B$m( m 0HRo`Na˴NprNN4NJN/NJJVHHgNHxaNanHx aN4NJ"m m"NUo@$m|$N6HxNrA턄NRx m0 0H$mİ\HH$mJg$m ~NvbLn2v@Nu mHWBgN\BaNtA~NRNZNAXN2A\N2$mXP -$m"N+@$m N:&<x:<N&<x:<NF/?? -N:8:&NNd$m$ -$m"N$mВ$m$$m $m+@>pNprN6prNp$m$NNfpNNό$m$$m$$m$$m N:/?? -N:8:&N/?? ->N:8:&NNd$mВ$m$$m $m"o@$m$$m $m԰g("m m"A~NR$m &-$m$rN $m SfHpN$m $mo|$m $mN:/?? ->N:8:&N/?? -N:8:&NNd+@pR^HH"pJ-gpgA JjR N[` a\NNTHN6NA퀘N$m|B$m/$m/$m|/$m|*$m( mr؅AHN`A~N$m/$m/$m|/$m|*$m( mx؅AH 24AB~N4$m|R$m| UovN6NANAdN2$mdP$mLf$mR"m m"$m( mp!HHxNj$mLf+m+m+mp$m|$Bf$m/$m|//-fA~N6Rfpfl$m|R$m| WoNp+@p$m$PNڦN/N8-fR$m/HxNNPRNN/N8-f$m/HxNN(N$mdQBN6Qzx-z m*AH 24z-z$m( ml؅AH 00R-z -zc$m/BB$m A~N$m/BHx <r4< mLNNdA~N$m/BHx$m/BHxA~NЀ"ЁA~NNuNA퀼NA퀘N$m/$m/B -A~N$m/$m/Hx -A~N$m/$m/Hx -A~NN6NA퀼N$m/$m/B -A~N$m/$m/Hx -DA~N$m/$m/Hx -A~NN6$mLgBF$mB`b$mR"m m"$m( mp!Hp$m$ - m0Nό$m$$m$+C$m $m찒gA턄NR"m m" m+P$m N:/?? <r4< A큘N8:&NNd$m$ -Ѐ$ԀЀԀЂ/$m N:NR$2<Nt -v$m"NA큘NNd+@FN m+PFapWHH"pJ-gpg-gP퉿A턄NR`& -Ѐ$ԀЀԀЂ/p N$2<Nt-fb$m( mp!HHxa$mLf@$m/HxB -FA~NaA턄NRN BBHx/-BgN;8Nu-f,$mLf "m m" -&<:<Nz$m( mr؅AH 00 -N:&<x:<NFz$m( mr؅AH 00 -&<:<Nz$m( mr؅AH 00$mLfz$m|B$m|( m*AH 24$m|*$m( mx؅AH 00$m|R$m| UopNN#pNBBHx/-BgN;8$mRNuNANN.4 -F$-$m"NxN.\ -F$m$$m"NxN. -F$-"-NxBBHxHxBgN;8N6 -&<:<Nx mAH 00 -N:&<x:<NFx mAH 00 -&<:<Nx mAH 00P퉽pJ-gpV$mB$m|B$m|( mAHN`$m|*$m( m؅!H$m|R$m| Uo$mR$m SoNuNAXNQ퉼N mX0B0x m 0H&<:<N/?? -N:8:&NA큘 00x m 0H$m$N4Nό$m$$m$$m$$m A큘N/??$m N:8:&Np mH 00 mX"mHNg\ mH"mX""A턄NRx m/0H mHN`/x m/0Hx m 0HПr/ mHN`&$"N aH-gp$m$$m g4$m Ul$m l$mB$mB`"HxN$m $m"l@$m$$m( mp!H$m/BHx$m 9DA~N$mB$m/a$mR$m SoN;N6NAN$mLf$mR"m m"$m( mp!HNN6$mLf$mR"m m"$m( mp!HNNuNANHxa$mLfp+@f$m|B$m//-f$m|/A~N6$m|R$m| UoRfpfl+m+m+mNp+@p$m$PNڦN/N8-fL$m/HxaNRPNN/N8-f$m/Hxa|NaBN6a$m( mp !H$mLga`-fN$m( mp !HNu$m ~N L ^NuNANANAN-g A턄NR`"m m"p$m$BBBp$m$PN N/N8-g A턄NR`FHxa a$m( m 0H_~N..(tp$mLJgpJfN jN6NAN$mLf$mR"m m"$m( mp!H$mLfHxNpJ-gpV퉿NN6NAN$mLf$mR"m m"$m( mp!H$mLfJHxNpJ-gpV퉿$m/HxHxA~pdN$m/HxBA~p2NNN6NA|N$m/$m|/BA~N6$m/$m|/HxA~Nj gN6NANAN"m m"$m( m 0H+@zHxaT$mLfp+@f$m|B$m//-f$m|/A~N6$m|R$m| UoRfpfl+m+m+mp$m$Np$m$PP$mRNN/N8-f`$m/Hxa0NPP$mRNN/N8-f&$m/HxapzlN aNN6apЭz~N(pЭz~N.NuHxN m+PHx Nrx m0 0H$mİ\HH$mJgb m+P$m mN m $m/HxHxA~N@+@N$mB/-a$mR$m SoA턄NRNuQ퉼$m l$mB$mB`"HxN$m $m"l@$m$$m/HxHxA~p N$m/HxHxA~p N$m( mp!HN <Jf*0-$@}WHH/0-*@ WHHT+@N?Nu m| $m| $ЀԀԀЂr(Ё+@J$m/HxB <ЭA~N$m/HxHx <ЭA~N$m/HxHx <Эro@A~N$m/BHx -JA~N$m/BB -JA~N$mB/-Na:$mR$m SoNuNANQ퉼Q퉿Qp$m$PHxNN m+PN/-g m N0`aNN6a$m( mp!H$mLga|`&-g A턄NR`a$m( mp!HNua$m( mp !H$mLga0`\-fV$m/HxBA~N6$m/HxHxA~Nj ga6-f$m( mp !HN Nu$m( m 0H+@zp+@Rp zfRRp+@+|gzp$mLJgpFV/-RBa.A턄NR-f /-RHxa-fpRfNNuE{NNN pNuE{sNN pNuHxNrA턄NRx m0 0H$mİ\HH$mJg$mR"m m" -$mmh$m( mp!H$m|BBf$m/$m|//-fNA~NRfpfl$m|R$m| Wo$m/HxHx$m/HxHxA~NN:/??$m &<:<N8:&NNdA~Np$m|$$m/$m|/B$m/$m|/BA~N&<8<:<NNdA~N$m/$m|/Hx$m/$m|/HxA~N&<8<:<NNdA~N$m|R$m| Wo`aa̐`Hx a m `P퉼Nu <gvpNPN.\$m/HxHxA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&N/?? -N:8:&N&<:<NNdЭ$m$$m &-֭$m$"-N N.$m/HxHxA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&N/?? -N:8:&N&<:<NNdЭ$m$$m &-֭$m$"-N pNPNuNNdN m V m ZN m ^ m bN$ m f m jNNuNANANA$NA(NANA N$m &<:<NA 00N$m/HxBA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$$m/HxHxA~ND$m"N$m$$m/HxHxA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$NNNTNN6aNNd$m A킐N/??A Nx8:&NFNd+@n$m A킘NNd+@r$m A킠NNd+@v$m A킨NNd+@z -$m"N&<:<NA NNNd+@~$m A킸NA NNNd+@ -nЭ$m$ -rЭ$m $N -vЭ$m$ -zЭ$m $N$ -~Э$m$ -Э$m $NNuN.4 -Э$m$ -Э$m$$ -Э$m$ -Э$m($?-X?-\$m?*$m?*$m$?*$m(?*$m?*$m ?*?-X?-\pNB$m "-Vo@$m$"o@$m"o@$m( md!H$m "-Vl@$m$"l@$m"l@$m( mj!H$m "-Zo@$m("o@$m "o@$m( mp!H$m "-Zl@$m("l@$m "l@$m( mv!HNuN.\ -Э$m$ -Э$m$$ -Э$m$ -Э$m($?-`?-d$m?*$m?*$m$?*$m(?*$m?*$m ?*?-`?-dpNB$m "-^o@$m$"o@$m"o@$m( mL!H$m "-^l@$m$"l@$m"l@$m( mX!H$m "-bo@$m("o@$m "o@$m( mR!H$m "-bl@$m("l@$m "l@$m( m^!HNuN. -Э$m$ -Э$m$$ -Э$m$ -Э$m($?-h?-l$m?*$m?*$m$?*$m(?*$m?*$m ?*?-h?-lpNB$m "-fo@$m$"o@$m"o@$m( m!H$m "-fl@$m$"l@$m"l@$m( m!H$m "-jo@$m("o@$m "o@$m( m|!H$m "-jl@$m("l@$m "l@$m( m!HBBHxHxBgN;8Nu -N:/??A Nx8:&NF/??$m A킐N8:&NpNd+@V$m A킘NNdЭ+@Z$m A킠NNdЭ+@^$m A킨NNdЭ+@b -$m"N&<:<NA NNNdЭ+@f$m A킸NA NNNdЭ+@jNu$m/HxBA~N$m"N$m$m/HxHxA~N$m"N$m$m/HxHxA~N$m"N$mБNu$m/HxBA~N$m"N$mђ$m/HxHxA~N$m"N$mђ$m/HxHxA~N$m"N$mђNu$m/HxBA~N$m"N$m$m/HxHxA~N$m"N$m$m/HxHxA~N$m"N$mБNu$m A킐N/??A Nx8:&NFNd+@$m A킘NNd+@$m A킠NNd+@$m A킨NNd+@ -$m"N&<:<NA NNNd+@$m A킸NA NNNd+@Nu$m A킐N/??A Nx8:&NFNd+@$m A킘NNd+@$m A킠NNd+@$m A킨NNd+@ -$m"N&<:<NA NNNd+@$m A킸NA NNNd+@Nu$m &<:<NA 00NHxNdNNu -&<:<NA킐 00 -&<:<NA킘 00 -&<:<NA킠 00 -&<:<NA킨 00 -&<:<NA 00 -&<:<NA킸 00 -&<:<NA킰 00Nu+mʆnNNNBBHxHxBgN;8Nu$m &<:<NA 00aHxNdaNu$m &<:<NA 00aHxNdN\Nu -jR+@nNpЭf+@B(-f m@ 0HA킐NNdЭ/(-f m 0HA킘NNdЭ"NRf -Nz`t(-f m@ 0HA킐NNdЭ$m$(-f m 0HA킘NNdЭ$m$$m?*$m?*pN2$m/$m/NJRf -fo]N(-B m@ 0HA킐NNdЭ?(-B m 0HA킘NNdЭ?pN2x m@ 0HA킐NNdЭ/x m 0HA킘NNdЭ/xحB m@ 0HA킐NNdЭ/xحB m 0HA킘NNdЭ&$"N N(-f m@ 0HA킠NNdЭ/(-f mF 0HA킨NNdЭ"NRf -Nz`t(-f m@ 0HA킠NNdЭ$m$(-f mF 0HA킨NNdЭ$m$$m?*$m?*pN2$m/$m/NJRf -fo]N(-B m@ 0HA킠NNdЭ?(-B mF 0HA킨NNdЭ?pN2x m@ 0HA킠NNdЭ/x mF 0HA킨NNdЭ/xحB m@ 0HA킠NNdЭ/xحB mF 0HA킨NNdЭ&$"N N(-f m 0HA킰NNdЭ/(-f mF 0HA킸NNdЭ"NRf -Nz`t(-f m 0HA킰NNdЭ$m$(-f mF 0HA킸NNdЭ$m$$m?*$m?*pN2$m/$m/NJRf -fo]N(-B m 0HA킰NNdЭ?(-B mF 0HA킸NNdЭ?pN2RBx m 0HA킰NNdЭ/x mF 0HA킸NNdЭ/(-B m 0HA킰NNdЭ/(-B mF 0HA킸NNdЭ&$"N BBHxHxBgN;8NuNANANAN$m/HxBA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$$m/HxHxA~ND$m"N$m$$m/HxHxA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$$m/HxBA~N$m"N+@FN&X$m $m$$m"Nx$m $m$m( md!H$m $mВ$m( mj!HN'd$m $m$m( mp!H$m $mВ$m( mv!HN&$m $m$$m"Nx$m $m$m( mL!H$m $mВ$m( mX!HN'd$m $m$m( mR!H$m $mВ$m( m^!HN'$m $m$$m"Nx$m $m$m( m!H$m $mВ$m( m!HN'd$m $m$m( m|!H$m $mВ$m( m!HN6NANANANA,N$m &<:<NNNA 00z$m( mr؅AH 24&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$z$m( mr؅AH 24&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$z$m( mr؅AH 24&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd$m$$m $鈐+@FA z GN&XN'$m $m( m!H$m $m( m!H$m $m( m!H$m $m( m!HN&N'$m $m( m!H$m $m( m!H$m $m( m!H$m $m( m!HN'N'$m $m( m!H$m $m( m!H$m $m( m!H$m $m( m!HN6aN.4$m A킐NNdЭ$m$$m A킘NNdЭ$m$ -FA킐NNd$m$NuN.\$m A킠NNdЭ$m$$m A킨NNdЭ$m$ -FA킠NNd$m$NuN. -$m"N"<NЭ$m$$m A킸NNdЭ$m$ -FANNd$m$Nu-g"$m &<8<:<NNd$m$Nu"m, m"-g"$m, &<8<:<NNd$m,$$m $m$m$$m $mВ$m$$m $m,$m$$m, $mВ$m$$m $m&$m$$m"N$m $m&$m$$m"N $m $m&$m$$m"N $m $m$$m"NxNu$m &<:<NA 00anHxNdN($m/HxBA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd+@$m/HxHxA~ND$m"N+@>$m/HxHxA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&NNd+@ ->A킐NNdЭ$m$ -A킘NNdЭ$m$ ->A킠NNdЭ$m$ -A킨NNdЭ$m$ -A킰NNdЭ+@ -A킸NNdЭ+@N+$m $m&$m$$m"N $m/$m/NJp+@f -Nz`&N,$m $m&$m$$m"N Rf -fo]NN,$m $m&$m$$m"N $m/$m/NJp+@f -Nz`&N,$m $m&$m$$m"N Rf -fo]NN-^$m $m&$-"-N /-/-NJp+@f -Nz`"N-$m $m&$-"-N Rf -fo]NBBHxHxBgN;8NuN(N.4x m@ 0HA킐NNdЭ$m$x m 0HA킘NNdЭ$m$$m/$m/NJNu(-f m@ 0HA킐NNdЭ$m$(-f m 0HA킘NNdЭ$m$$m?*$m?*pN2$m/$m/NJNuN(N.\x m@ 0HA킠NNdЭ$m$x mF 0HA킨NNdЭ$m$$m/$m/NJNu(-f m@ 0HA킠NNdЭ$m$(-f mF 0HA킨NNdЭ$m$$m?*$m?*pN2$m/$m/NJNuN(N.x m 0HA킰NNdЭ$m$x mF 0HA킸NNdЭ$m$$m/$m/NJNu(-f m 0HA킰NNdЭ$m$(-f mF 0HA킸NNdЭ$m$$m?*$m?*pN2$m/$m/NJNu/-/- -Э/ -Э/?<N;8Nu/-/- -Э/ -Э/?<N;8Nu/-/- -Э/ -Э/?<N;8Nup$m$N.Nup$m$N.NuNANAN$m &<:<NA 00a$m/Nd$m/HxBA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&N/?? -N:8:&NFNd+@$m/HxHxA~ND$m"Nؐ>+@>$m/HxHxA~NN:&<x:<NF/?? -N:8:&NF/??$m N:8:&N/?? -N:8:&NFNd+@axx m@ 0HЭ>A킐NNdЭ$m$x m 0HЭA킘NNdЭ$m$$m $m&$m$$m"N p+@f -Nz`a^$m $m"N(-f m@ 0HЭ>A킐NNdЭ$m$(-f m 0HЭA킘NNdЭ$m$$m/$m/NJ$m?*$m?*pN2$m $m&$m$$m"N Rf -foJ]Nax m@ 0HЭ>A킠NNdЭ$m$x mF 0HЭA킨NNdЭ$m$$m $m&$m$$m"N p+@f -Nz`a$m $m"N(-f m@ 0HЭ>A킠NNdЭ$m$(-f mF 0HЭA킨NNdЭ$m$$m/$m/NJ$m?*$m?*pN2$m $m&$m$$m"N Rf -foJ]Nax m 0HЭA킰NNdЭ$m$x mF 0HЭA킸NNdЭ$m$$m $m&$m$$m"N p+@f -Nz`a$m $m"N(-f m 0HЭA킰NNdЭ$m$(-f mF 0HЭA킸NNdЭ$m$$m/$m/NJ$m?*$m?*pN2$m $m&$m$$m"N Rf -foJ]NBBHxHxBgN;8N6NANA퀌NA퀔NA퀀N$m $m+@$m $m+@p rN -&<:<NNNdrN <rN -&<:<NNNdrN <rN$m  m0$m 0|0$m 0|0$m 0|0N6NfNup0|0p0|0p0| 0N&Nup0|0p0|0N&NuHx Hx Hx~Hxap rNpЭNb/ -NbDrNpЭNb/pЭNbDrNpЭNb/pЭNbDrNpЭNb/pЭNbDrNHx Hx Hx~HxaNuHmNEpN"HA턖N/HmN! AN/Ap\NN$m R^HHg6AC턮N pNA턮rN pNA턖NN=pNA턄NRN!NuHmNEpN"HA턖N/HmN! ANgAC턮N pNNLA턮rNpNANBA턖CNgN9`2pANR/pA턖NR"_NgN9N`N\pNN7bah`A턄NRN!NuA턄NR$mB$m/N6$mR$m UoNEpbfaNupNN$m$pNN$m$pNN$m$pNN$m$pNN+@pNN+@pNN+@pNNx mAH 00pNNx mAH 00pNNx mAH 00pNNAH 00pNN m, 00pNNA큈 00pNN+@QzpNNz-zx m؅AH 00pNNz-zx m؅AH 00R-z -zcNuNANa -$mmJ$mB$m Nz`ZpNN$m( m!H$m( m 0H+@zpzfH$m/BBA~N&<:<N&<:<NNdro@rl@+@pz]HH/pzVHHg p$m$`p$m$$m|BpNN$m|*$m( ml؅AH 00$m|R$m| Uo$mB$m Nz`B$m|BpN$m/$m/$m|/NA~N$m|R$m| Uo$mR$m o]$mR$m o]$m g$mB$m SNz`pNNA 00$m|BpNN$m|*$m( mr؅AH 00pNN$m|*$m( mx؅AH 00$m|R$m| Uo$mR$m ol]N;NNu$mB$m Nz` pN$m( m 0HNX$mR$m o]pN -NX$mB$m Nz` pN$m( m 0HNX$mR$m o]pN -NXpNA2NpNA8N$mBpN$m("mN|N$mR$m r opNpJ-gpNXpNpJ-gpNXNuHxNrx m0 0H$mİ\HH$mJg6NprNɰ$m("m>N|N$m ~N5KCA턄NRNupN$m NXpN$m NXpN$m NXpN$m NXpN -NXpN -NXpN -NXpNx mAHNtpNx mAHNtpNx mAHNtpNAHNtpN m,NtpNA큈NtpN -NXQzpNz-zx m؅AHNtpNz-zx m؅AHNtR-z -zcNuNAA턄NR`NuNAN$mBNprNɰx"mDN|NpNHmN0N|NpNp.NNC턮NA턮NR"HA턜NC턴N HmNEpN"HA턜N/HmN! A턄NRAN/Ap\NNg"AC턴N A턴rN NFdpNNupNN+@aL$mB$m Nz`pNN$m( m!H$m( m 0H+@zpz]HH/pzVHHg p$m$`p$m$$m|BpNN$m|*$m( ml؅AH 00$m|R$m| UoBf$mB$m Nz`F$m|BpN/-f$m/$m/$m|/NA~N$m|R$m| Uo$mR$m o]Rfpfl$mR$m o]$m g$mB$m SNz`pNNA 00$m|BpNN$m|*$m( mr؅AH 00pNN$m|*$m( mx؅AH 00$m|R$m| Uo$mR$m ol]apNHta6N\NupNA턜NpN -NXa$mB$m Nz`pN$m( m 0HNX$m( m 0H+@zpzVHH/pz]HHg p$m$`p$m$$m|BpN$m|*$m( ml؅AHNt$m|R$m| UoBf$mB$m Nz`F$m|BpN/-f$m/$m/$m|/A~NNX$m|R$m| Uo$mR$m o]Rfpfl$mR$m o]$m g$mB$m SNz`vpNANt$m|BpN$m|*$m( mr؅AHNtpN$m|*$m( mx؅AHNt$m|R$m| Uo$mR$m o~]NIabN^Nu$mB$m Nz`b$m|BpNB$m/$m|/NAf~N4pNHx$m/$m|/NAf~N4$m|R$m| Uo$mR$m o]$m|BpNN$m|*x m؅!HpNN$m|*x m؅!H$m|R$m| UopNFgV$m|BpNN$m|( mAH 00pNN$m|( mAH 00$m|R$m| SoNu$mB$m Nz`b$m|BpNB$m/$m|/Af~NNlpNHx$m/$m|/Af~NNl$m|R$m| Uo$mR$m o]$m|BpN$m|*x m؅ 0HNXpN$m|*x m؅ 0HNX$m|R$m| Uo$m|BpN$m|( mAHNtpN$m|( mAHNt$m|R$m| SoNuBN^ -Nh/pbWHHV-g8NN-g HxaN0<wrN6prN6prNNprNɰx"m>N|NNbEpN"HA>N//-lN! NuNA퀐NA퀀NA퀔NA|NA퀘N$m\g$m\Q`aAN/Ap\NNgpNA"mlN -g -N:&<x:<N&<x:<NFNd+@>A~ / ->"Ёї -"<}@N/NNArN pNA>NpN -NX-gR -&<:<N/?? ->&<:<N8:&NpNd/ -"<G@N$rN@A턊 $$m rN@pN`tArN -gpNA>NpN -NX -N:&<x:<N&<x:<NFNd+@>A~ / ->"Ёї -"<}@N$rN@ -&<:<N/?? ->&<:<N8:&NpNd/ -"<G@N$rN@` <NNtr $m$p0|$m0$m$@$m|B$m Nt$m R $mX$mX$m|R$m| _op$mђ$m$p"rN@A~ $ <}rN@pNHx3N^-f&-gNaNTH`A턄NRN!N6NA퀔NA퀀NA턊  m: $m 0|: $m 0|: m>HWBgN\pЭ:Nt$m$N6NprNɰADN <\*.*Nb/N/N! ANgAN0A턄NRNuHxNrA턄NRx m0 0H$mİ\HH$mJg$m Np\NNNNprNɰ$m("mDN|N$m ~N6APRA턄NRNuNA퀔NA퀀NpN}+@p"WHH/pBWHHV-gF WHH/p fp.pBfp. fp.pJ-gpV-g f$$m$ <}rN.$m$p rN.` fp+@p\+@`BBBp l2$m$prN.$m Nh/pJ-gpЀDWHV-g4 -rN$m$p rN. -rN$m$ <}rN.pNN6NANAlNXPPA턄NRN &x m0 0H$mİ\HH$mJgx$mS$m("mN|/NA턨"mlN $m/N޴Npl Hxa$`,A~$m("mND0NNW A$m("mND$m("mN|NRA~$m("mNDA~N@A턊 "@ <G mN$m("mN| /2| <G _N-g(A턊 /$m("mN| "@ <G _N` $m/N޴QQN6 -Nh/pbWHHV-gNNNprNɰx"mDN|N-g HxaFN0<wrN6prN6prN-fNbQEpN"HA>N//-lN! ANgpNArNNA~N@ <NNt/2| <G _NpN8WHH"pJ-gpg m|/p$rN.$m| fA~ $ <}rN.p rN m $m|B$m$p rN.p $mђ$mB$m"Rp0|$mNp$mђ$mR$m So$mB$m"Rp\0|$mNp\$mђ$mR$m So$m|R$m| rDoppNP`N\`^pNǠWHH"pJ-gpgJN$m|B$m|"pN6$m|R$m| roNHxa -"<G@N$m$A턨EpNgA~ / ->"Ёї -"<}@N$rN. -&<:<N/?? ->&<:<N8:&NpNd/ -"<G@N$rN.`pJ-gp/A턨EpNpJ-gp/A턨EpNg-gR -&<:<N/?? ->&<:<N8:&NpNd/ -"<G@N$rN.pN/pNnD+@A턊 $ -rN.A턊  m: A~ / ->"ЁП0|: -"<}@N0|:0 m6HWBgN\P`pNArNA~ //-a-gl+m2| p0|N2|>p0|Np\Э+@n$m|B"mn mp\Np\ѭn$m|R$m| o`N\pN-g m -f&-gaNNTH`A턄NRN!Nu < OK NbrCVtNl+A>NupNg$mB$m SNz`$m|B$m|*$m( mr؅AHN`$m$B$m/$m|/$m A~NHx$m/$m|/$m A~N$m|*$m( mx؅AHC큀""B$m/$m|/A큀 24AB~N4Hx$m/$m|/A큀 24AB~N4$m|R$m| Uo"$mR$m o]`$m g$mB$m SNz`$m|BpNB$m/$m|/NA~NpNHx$m/$m|/NA~NpNB$m/$m|/NAB~N4pNHx$m/$m|/NAB~N4$m|R$m| Uod$mR$m oJ]pNN+@pNN+@Nu$m g$mB$m SNz`$m|BpNB$m/$m|/A~NNXpNHx$m/$m|/A~NNXpNB$m/$m|/AB~NNlpNHx$m/$m|/AB~NNl$m|R$m| Uod$mR$m oJ]pN -NXpN -NXNu-gNغ$mB$m Nz`^ -VAN0$m( m 0H+@zpzf p$m$`p$m$pzWHH/pz]HHg>Qz <r4<z-z$m( ml؅AH 00R-z -zcNbPQz$m/Hxp-z/A~NN:x-z m~AH 00R-z -zcpЭz~NffZgDghpЭz~NklTjpЭz~NffZgDkA 24$m( mHAH 00$mR$m o]Nd< -g$mB -VAN0$mB$m Nz`@$m( m 0H$mf"$m( mHAHCN@A 00$mR$m o]$mB$m Nz`>$m( m 0H$mf A 24$m( mHAH 00$mR$m o]$mR$m r o$Nu$m S+@z$mB -zNz`pzftx mAH 00tx mAH 00$m/HxHxA~NN:/??z$m( mr؅AH24 NNx mAH 00`x$mB$m/$m/$m/A~NN:/??$m*$m( mr؅AH24 NN$m( mAH 00$mR$m Uox mAH//x mAH24 N/??x mAH//x mAH24 N8:&Np/??x mAH//x mAH24 N8:&NpNA 00pzf"$m/HxBA~NN:AN NdA 24$m*$m( m؅AH 00$mR$m o]pzf0pJ-gp&<:<N&<x:<NFANNuA 24AN$mB$m*$m( mx؅AHCN mT 00 mT4(g$m*$m( ml؅AH4(g*$m*$m( ml؅AH 24 mTN <r4< mTN mT 00 mT4(o mTCN@A 00$mR$m Uo,NuQz$m/Hxp-z/x-z m~AH//$m/Hxp-z/A~NAN8:&Np/??$m/Hxp-z/A~NAN8:&NpNdA~NR-z -zc^aNuBmAx 24&<x:<ANfBmQzz-z(- mr؅AH 24x-z mAH 00x-z mAH//x-z m~AH24 NNx-z mAH 00x-z mAH//x-z mAH24 NA8Nx-z mAH 24N ANR-z -zc"ANA 004->l`x mAH4(^HH/pz^HH/pz^HH/pz]HHgA8 24nDBA8 004->o$mB$mB$m( m~AH 24$m( mAH 00$mR$m( mAH//$m( m~AH24 NN$m( mAH 00$mR$mR$m Uotp+@ -VA킀N0$mB$m Nz` -$mg~$m( m 0HS~NZ2$m( m 0H[~N$m( m 0Hr~NZ2 <r4<A킀N~f$mR$m oN]A00B0pgJ/-BBA~NYf./-BHxA~N&<:<NA0 00`Nx mAH 24N /??x mAH 24N 8:&Np/??x mAH 24N 8:&NpNA 00ACNANA8N-g(*-(- m؅AH 24A8N`(- mHAH 24A8NpJ-gp/AC8NxgAC8N*/?? <r4<ANN8:&NA8 00 <r4<A8NNA@ 00$mB$m( mAHC@N$m( mAHN$m*(- mx؅AHC8N$m( mAHN$mR$m Uo m+P`t$mB$m( mAHC8N/??$m*(- mx؅AH24 NA0N$m( mAHa$mR$m UoR -ưon]+m-fTQzx-z mAH//x-z mNAH24 NFx-z mAH 00R-z -zcN6ahNu(- m 0H+@zpzf0ANHN~A 00 -A@NNd$m$`pzfRACN&<x:<a~NANNNN~A 00ANHN~A 00`$pzf <r4<Aa~AN -ANNd$m$ -ANNd$m$(- m 0H$m$$m UltAN`4 <NNt$m$$m("mN| "<NNɂ-g6$m $m"NH( m 0H+@$m//-NN$m("mN| /$m &<:<a}Z&<:<NNdП+@n -g$m| gS -Ѐ$m|Вѭn -nNh+@npn&<:<Nx mAH 00An JjrЁ pn&<:<Nx mAH 00An JjrЁ pn&<:<Nx mAH 00`($m $m"NHSD+@n -nN:AN$m "<NNɂ-fx mAH /x mAH "@p _Np lX+m $mB$m*(- m`؅AH 24$m( mAH 00$mR$m Uoa`aNu+|+m+|+mNuNA퀸NA퀴N$m "-o@+@$m "-o@+@$m "-l@+@$m "-l@+@N6 -$m( m!H -$m( m!H -$m( m$!H -$m( m*!HNupNP$m/BHxA~Na~&<x:<az/??x m 0H&<:<az8:&N&<:<Na}Э$m$x m 0HЭ &$m $m$"- N pNPNu+|+|+|+|NuNA퀸NA퀴N$m "-o@+@$m "-l@+@$m "-o@+@$m "-l@+@N6atN.4x m@ 0HA킐ara|Э/x m 0HA킘aTa|Э"NBf -nNz`r(-f m@ 0HA킐a"a|Э$m$(-f m 0HA킘a~a|rЭ$m$$m?*$m?*pN2$m/$m/aRf -fo]NNu -$m( md!H -$m( mj!H -$m( mp!H -$m( mv!HNuaDN.\x m@ 0HA킠a~Ba{Э/x mF 0HA킨a~$a{Э"NBf -nNz`r(-f m@ 0HA킠a}a{fЭ$m$(-f mF 0HA킨a}a{BЭ$m$$m?*$m?*pN2$m/$m/aRf -fo]NNu -$m( mL!H -$m( mX!H -$m( mR!H -$m( m^!HNuaN.x m 0HA킰a}azЭ/x mF 0HA킸a|azhЭ"NBf -nNz`r(-f m 0HA킰a|az6Э$m$(-f mF 0HA킸a|azЭ$m$$m?*$m?*pN2$m/$m/atRf -fo]NNu -$m( m!H -$m( m!H -$m( m|!H -$m( m!HNuNuNAHayd/APayZ/AXayP//-"A`ayB/Ahay8/NaNuN/-"A`ay/Ahay/Apay/Axax/A타ax/NAHax/APax/AXax/Apax/Axax/A타ax/Na Nua$m/HxBA~N@+@&$m/HxHxA~N@+@*$m/HxHxA~N@+@.$m/HxBA~NЭ&+@"$m/HxHxA~NЭ*A`ax$m/HxHxA~NЭ.Ahax$m/HxBA~NAHax$m/HxHxA~NAPaxd$m/HxHxA~NAXaxD -"AHatfAp 00APC`atVAx 00AXChat@A타 00 -&axAHas -*awAPas -.awAXas/-&/-*/-./-"A`av/Ahav/N/-&/-*/-.AHav/APav/AXav/NNuNA퀰Np$m$HxNdN8N6NAtN2$m( m 0Hr fj$m/HxBA~N@+@2$m/HxHxA~N@+@6$m/HxHxA~N@+@:$mtPS m| ` m|+PfSf$m|( m/0H$m|( m@/0H$m|( mF/0H(-f m/0H(-f m@/0H(-f mF/0HN$mtgB$m|( m/0H$m|( m@/0H$m|( mF/0H/-2/-6/-:N$m|S$m| Ul:(- m/0H(- m@/0H(- mF/0Hx m/0Hx m@/0Hx mF/0HNa@N6NA퀰NNa,N6p$m$NHxNdNNuNA퀰Nap$m|$ -jRNz`r m|+PfSf$m|( m/0H$m|( m@/0H$m|( mF/0H(-f m/0H(-f m@/0H(-f mF/0HN$m|R$m| o]x m/0Hx m@/0Hx mF/0H$m|( m/0H$m|( m@/0H$m|( mF/0HN$m|R -Nz`r m|+PfSf$m|( m/0H$m|( m@/0H$m|( mF/0H(-f m/0H(-f m@/0H(-f mF/0HN$m|R$m| o] -jR+@f$m|S$m|( m/0H$m|( m@/0H$m|( mF/0H(-f m/0H(-f m@/0H(-f mF/0HNaN6$m/HxBA~N@+@z$m/HxHxA~N@+@$m/HxHxA~N@+@> -z mV -0|V ->0|V $m/HxBA~N0| V x mAH 0|V p0|V $mt 0|V $mx 0|V x mAH 0| V mRHWBgN\ -zar6/?? -ar(/?? ->ar/??N@ m B m F$mB$mBx$mؒ m 0H$m$$m( m 0Haq/??$m aq8:&axX&<:<am/??$mt aq8:&asHA큘as:apЭ +@Bx$mؒ m 0HaqZ/??$m aqJ8:&aw&<:<aw&<x:<am./??$mx aq8:&arA큠arap&Э+@F -B$mapN /?? -F$mapN 8:&alautao$m"l@$m$$mV$m r)o$m $m$$m"Nx$m $mђ$m $m/$m $m/a$m $mВ/$m $mВ/alaNup$m$NNup$m$NNNNup$m|$BB$m/$m|//-B$m/$m|//-BA~NDA~NRBpBl$m|R$m| WoNuNA퀰Np$m$$m/Nd$m/HxBA~N/$m/HxBA~ND+@$m/HxHxA~N/$m/HxHxA~ND+@>$m/HxHxA~N/$m/HxHxA~ND+@$m|B -Nz`r$m|( m 0HЭ$m|( m.!H$m|( m@ 0HЭ>$m|( m4!H$m|( mF 0HЭ$m|( m:!H$m|R$m| o]S$m( m 0Hr WHVpJ-gpЭ+@B m| BpJ-gpSDNz`:$m|( m/0H$m|( m@/0H$m|( mF/0H$m|( m./0H$m|( m4/0H$m|( m:/0HN m|+PfSf$m|( m/0H$m|( m@/0H$m|( mF/0H(-f m/0H(-f m@/0H(-f mF/0HN$m|( m./0H$m|( m4/0H$m|( m:/0H(-f m./0H(-f m4/0H(-f m:/0HN$m|S$m| l]aLN6a"Nuz$m( mr؅AHak+@&z$m( mr؅AHak+@*z$m( mr؅AHakh+@.x mAHakT&lfA0B0 -&al/?? -*al/?? -.ak/??N@+mBz+mF -&ak/?? -*Aag/?? -.ak/??N@ -zB$m$$m $-"-zNx"m m"-g"$m &<8<:<aqaj$m$ -z$m쐒$m$ -$m$m$$m Эz$m$$m Э$m$$m $m&$m$$m"N$m $m&$m$$m"N $m $m&$m$$m"N NuNA퀀N$mB$m Nz`$m( m 0H$mg$mR$m o]N6pN$m$ m EatNàNȸ$mB`Nt$m r ]HH$mJgNȸ$m Wl"$m &<:<ae0VHV퉷`$m Ql`P$m ]l </$m W+@P`d </$m &<:<aeXvNah+@`2$m r o$m r WHV`$m r WHVNȸ`` $m$$m gA턄NR-g N?QANAJNxAPNxAZNxNuN+@B -B~AJN"-Bp~APN -B~AZNBzB$mB -BNz`$m("mJN|NN$m( mZ!HR$m("mJN|0(H"-zl@+@zBf$m( mZ 0HNz`D*-f$m("mPNюNR*-f$m("mPNю0(H"-zl@+@zRf -fo]$mR$m o8]Az  p$ѭz$mT -z$mВ$m$ -"-ahB$ЀԀЂ$mВU$m$$m $m&$m$$m"N$m Rv$m֒$m$r$mҒN$m $m&$m$$m"Np $mђp$mђ -Ѐ$mђ$mB$m|B -BNz` -$mВ/$m|("mJN|$$m"Nt -"ЀЁ$mђ$mB$m|( mZ 0HNz`d$m*$m|("mPNюC턨N $m $m( mB!H$m $m( mH!H$m $m( mN!H -Ѐ"Ё$mВ$m$$m $m( mT!H$mR$m $m&$m$$m"NpJ-gp&<:<ag&<x:<aaad$m$m &<:<aa|/?? -z&<:<al8:&aa/??0-afvN8:&aa~ad/A턨$m$"Nt -Ѐ"Ё$mђ$mR$m o]$m|R$m| o$]Nu$mBN4Nό$m$$m$$m$$m SWHH/?< NATg?< NATJg:?<NAT&<:<ak$&<x:<a`*g$mBNȶ``~$m|B$m Nz`x$m|( mH 0H$m^HH/$m|( mB 0H$mmB$m|( mN 0H$mmB$m|( mT 0H$m^HHf$m|R$m| o|]"m m|"$m R$mİn`$mRNupJ-gpr/NzHxa$m $m]HH/pJ-gpF <JWHHg HxNz`pT/NzHxa$m $m]HH/pJ-gpF _HHg HxNz` HxNzpJ-gp_D/NzpJ-gpr D/NzNuEamZN$m$$mB$m Nz`$m*(-J"m NюN$mR$m o]$mS$m|B$m SNz`Z$m|*(-J"m Nю0<: N$m|*(-J"m NX$m|*(-J"m Nю0(H$m|( m!H$m|R$m| o]z(-J"m Nю/A턮N"_a|z(-J"m NXz(-J"m Nю/ mlN"_a|\z(-J"m NXz(-J"m Nю/A2N"_a|0z(-J"m NXz(-J"m Nю/A8N"_a|z(-J"m NXz(-J"m Nю/A턴N"_a{z(-J"m NXNz(-J"m NX m J$m|B$m SNz` $m|*(-J"m Nю/N$m|R$m| o]$m$ -Ѐ"Ё$m$$m $m$$m a`/??$m &<:<a\T&<:<ab /?? -a`l8:&ab&8:&a\&<:<a\j/??pJ-gp&<:<aa8:&a\.a_H$m$pN~pN$m $m&$m$$m"a~@$m $m&$m$$m"a~ $m Rv$m֒$m$r$mҒa}p $mђ$m|B$m SNz`: -"ЀЁ$mђ$m|*(-J"m Nю$m$$m"Nt$m|R$m| o] -"ЀЁ$mђ$m X$m$x"mN|/Na_NR"_ayC턨N A턨$m$$m"NtN$m &<:<aZNRp az~/x"mN|"_ayRC턨N -"ЀЁ$mВ/A턨$$m"Nt$m a^NRp az,/x"mN|"_ayC턨N -"ЀЁ$mВ/A턨$$m"Nt -Ѐ$鈐$mђB"m| m"$m RNz`$m|*(-J"m NюC턨N A턨t$mԒr$mҒNt0-a^TNNvNa\$mВ$m$$m r Ё$m$$m $m&$m$$m"a| $m (- mF!H$m xح mF!H$m (- m@!H$m xح m@!H -$ԀЀЂ$mђT$m|R$m| o]N4NJNό$m$$m$$m$?< NATJg?<NATV$m$$m gA턄NR$m Sf$m|B$m| ЀR( mF 0H$m^HH/$m| Ѐ( mF 0H$mmB$m| Ѐ( m@ 0H$mmB$m| ЀR( m@ 0H$m^HHg$m| R~NВ$m|R$m| SoTNux mAH /x mAH /Aav"_ _afbNFP퉺N &Q퉺Nu -gdx mAH /x mAH /Aau"_ _afNFNJNfN/?< NATgNJA턄NRNu$m Ro$mB$m Nz`$m( m 0HRo$m( m 0HR+@"$m RWHH/$m WHHg$m( md 0H$m$$m( mj 0H$mJjR$mђ$m( mp 0H$m$$m( mv 0H$mJjR$mђx m 0H$m]HH/x m/0Hx m 0HП$mnBx m 0H$mmBx m/0Hx m 0HП$m^HHg -"aYNR$m$$m"Nt$m RWHH/$m SWHHg$m( mL 0H$m$$m( mX 0H$mJjR$mђ$m( mR 0H$m$$m( m^ 0H$mJjR$mђx m 0H$m]HH/x m/0Hx m 0HП$mnBx m 0H$mmBx m/0Hx m 0HП$m^HHg -"aXNR$m$$m"Nt$m RWHH/$m UWHHg$m( m 0H$m$$m( m 0H$mJjR$mђ$m( m| 0H$m$$m( m 0H$mJjR$mђx m 0H$m]HH/x m/0Hx m 0HП$mnBx m 0H$mmBx m/0Hx m 0HП$m^HHg -"aW~NR$m$$m"a$mR$m o.]NuHxNrA턄aXx m0 0H$mİ\HH$mJg$$m &<:<a]rAH 00N;Nu-g(x m` 0HVHH/x m` 0Hgp.x m` 0HVHHgxx mAH 0|* pЭ*+@n$mB$m( m` 0HVHHD( mtAH  mn Xn$mR$m Uo m2HWBgN\x mBH"-pҭЁ$m$$m 0| -0| x mAH 0|  m HWBgN\pAao`<"-pҭЁ$m$$mB$mBpavLpЭR~N bNu$m $mђpaupauN" @p0N /NBr(Ёah _1@ phac$m( m 0Hr$m$ -$mfJ$m $m"as$m r$mҒas$m R$m"as$m Rr$mҒas`.$m QDau&$m Rv$m֒$m$$m"as$mR$mT -$mlJpatpatNu m `@$m( m 0Hg$$m( m 0Hr$m( m!H$mS$m faNupat$m 6<$m$rarpat$m( m 0Hg$m $m"ar$mR -$mlNu$mBz$m( m؅AHC""A 24z$m( m؅AH 00A 24z$m( m؅AH 00$mR$m So$mBz$m( mx؅AHC""A 24z$m( mx؅AH 00A 24z$m( mx؅AH 00$mR$m $mf|$mBz$m( ml؅AHC""A 24z$m( ml؅AH 00A 24z$m( ml؅AH 00$mR$m $ml|Nu0<3ras(-g:p$m|$0<waj $m|"as$m|R$m| ro$m|"0<warNu-gp(+@p(+@` p+@p2+@PNu-gp+@`pd+@PNu-gp2+@p+@` p+@p+@PNu-gp2+@p+@p+@` p+@p+@PNuQBBBNuHyNNX @p!@NuNA\NA`NAdNA md4(g md"m\aVaM m< 00`NN~ m< 00N m<4(g <r4< ma}-g 0a}A턐C>afC>auNuHmNp.a~2C턨NSA턨a$p.ag"mlat mla}"r:WHH/ mla}r\WHHg ml0(HS mla"mlataTA>"mlaf<"mlatpNuanNW -gA"mlatR` mla}Nu$m &<:<aQaKaJrafP`$m @Aa|NuA턊as2$m Ro $m Uo"m m"p$m$$m( mCH$m( mAH  "$m( mCH$m( mAH  "$m( mCH$m( mAH  "$m( mCH$m( mAH  "A턄arzNjN?A턊arTpajprak<$m RWHH/$m WHHgxx m/0Hx m/0Hx m/0Hx m 0HПr/x m/0Hx m 0Hї -Ѐ"ЁD/?<N;8$mB$m ao`$m( m 0HSWHH/$m( m 0Hrfp. -$mfp.pJ-gpgB$m( mdBH$m( mjBH$m( mpBH$m( mvBH`J$m( md/0H$m( mp/0H$m( mj/0H$m( mv 0H&$"ag8$mR$m o]$m RWHH/$m SWHHgxx m/0Hx m/0Hx m/0Hx m 0HПr/x m/0Hx m 0Hї -Ѐ"ЁD/?<N;8$mB$m anF`$m( m 0HSWHH/$m( m 0Hrfp. -$mfp.pJ-gpgB$m( mLBH$m( mRBH$m( mXBH$m( m^BH`J$m( mL/0H$m( mR/0H$m( mX/0H$m( m^ 0H&$"ae$mR$m o]$m RWHH/$m UWHHgxx m/0Hx m/0Hx m/0Hx m 0HПr/x m/0Hx m 0Hї -Ѐ"ЁD/?<N;8$mB$m al`$m( m 0HSWHH/$m( m 0Hrfp. -$mfp.pJ-gpgB$m( m|BH$m( mBH$m( mBH$m( mBH`J$m( m/0H$m( m|/0H$m( m/0H$m( m 0H&$"ad$mR$m o]BBHxHxBgN;8pbfj0-faEvam&<x:<aAFaD`/ -&<:<aF/??pJ-gpaEam8:&aA6aD&/Ab$"am(A턄alpaep$m$NhN-fDpAa^pA@a^vpAFa^l$m RWHH/$m WHHg$mB$m aj`$m( md 0H~_HH/$m( mj 0H~lB$m( mv 0HlB$m( mp 0H_HHg$m( mp!H$mR$m or]$m RWHH/$m SWHHg$mB$m ai`$m( mL 0H$m_HH/$m( mX 0H$mlB$m( m^ 0H$mlB$m( mR 0H$m_HHg$m( m@p!H$mR$m oj]$m RWHH/$m UWHHg$mB$m ai`$m( m 0H_HH/$m( m 0HlB$m( m| 0HoB$m( m 0H\HHg$m( mFp!H$mR$m or]$m f pAFa[`*$m Sf pAFa[`$m Uf pA@a[$mB$m ah4`>$m( m/0H$m( m@ 0Hї$m( mF 0HПSn$mR$m o]$m $ml``"m m"N$m Rm`p$m$HxNA턊airNu$m g*$m S+@NN~$mSa$mRN~`p$m$HxNNupJ-gpFV$mB -Nag4`$m( mLCH$m( mAH  "$m( mXCH$m( mAH  "$m( mdCH$m( mAH  "$m( mjCH$m( mAH  "$m( mRCH$m( mAH  "$m( m^CH$m( mAH  "$m( m|CH$m( mAH  "$m( mCH$m( mAH  "$m( mpCH$m( mAH  "$m( mvCH$m( mAH  "$m( mCH$m( mAH  "$m( mCH$m( mAH  "$mR$m o&]"m m  "Nu$m( mLCHAR  "$m( mXCHAV  "$m( mdCHAZ  "$m( mjCHA^  "$m( mRCHAb  "$m( m^CHAf  "$m( m|CHAj  "$m( mCHAn  "$m( mpCHAr  "$m( mvCHAv  "$m( mCHAz  "$m( mCHA~  "Nu$m( mCHAR  "$m( mCHAV  "$m( mCHAZ  "$m( mCHA^  "$m( mCHAb  "$m( mCHAf  "$m( mCHAj  "$m( mCHAn  "$m( mCHAr  "$m( mCHAv  "$m( mCHAz  "$m( mCHA~  "NuapA@al"AHalADal mD// mH// m@//N`pLapA@akAHakADak mD// mH// m@//NN`papNAalF/-/-NA"mT""p+@p+@ QNlpf"-g -vman` tAaU4`~(- m 0H~a.(- m 0H[~aR(- m 0Hr~a~XXXXH`o -VA킀a;$mB$m aaH`$m( m 0HSf N`*-$m( mf؅ 0HVHH/*-$m( ml؅ 0HVHHg~$m( m 0HS~a~ Z2$m( m 0H[~a}$m( m 0Hr~a}Z2$mR$m o]Nu -v]HH/x mAH4(fBpJ^HHg$m/HxHxA~af a9/??x mAH24 a5/??x mAH24 a@ mT 00A"mTa4/A킀"mTa4`g mTC킀"" m+PNux mAHC""x mAHC탈""x mAHC""x mAHC탐""x mAHC탘""x mAHC탠""$m/HxBA~aea8Aa4/??z $m( m`؅AH24 a:8/??$m/HxHxA~ada8XAa4V/??z$m( m`؅AH24 a98:&a4*/??$m/HxHxA~adVa7A탘a3/??z$m( m`؅AH24 a98:&a3A탨 00$m/HxBA~aca7Aa3/??z$m( m`؅AH24 a9,/??$m/HxHxA~aca7LAa3J/??z$m( m`؅AH24 a88:&a3/??$m/HxHxA~acJa6A탘a2/??z$m( m`؅AH24 a8~8:&a2A탰 00$m/HxBA~aba6Aa2/??z$m( m`؅AH24 a8 /??$m/HxHxA~aba6@Aa2>/??z$m( m`؅AH24 a78:&a2/??$m/HxHxA~ab>a5A탘a1/??z$m( m`؅AH24 a7r8:&a1A탸 00A탈Ca1/??$m/HxBA~aaa5t8:&a1v/??z $m( m`؅AH24 a7/??A탐Ca1Z/??$m/HxHxA~aaha58:&a1/??z$m( m`؅AH24 a68:&a0/??A탠C탘a0/??$m/HxHxA~a`a48:&a0/??z$m( m`؅AH24 a6*8:&a0A탨a0nA 00A탈Ca0n/??$m/HxBA~a`~a4$8:&a0&/??z$m( m`؅AH24 a5/??A탐Ca0 /??$m/HxHxA~a`a38:&a//??z$m( m`؅AH24 a5J8:&a//??A탠C탘a//??$m/HxHxA~a_a3N8:&a/P/??z$m( m`؅AH24 a48:&a/HA탰a/A 00A탈Ca//??$m/HxBA~a_.a28:&a./??z$m( m`؅AH24 a4`/??A탐Ca./??$m/HxHxA~a^a2n8:&a.p/??z$m( m`؅AH24 a38:&a.>/??A탠C탘a.J/??$m/HxHxA~a^Xa18:&a./??z$m( m`؅AH24 a38:&a-A탸a-A 00NuNNuahACa3N/??ACa3<8:&a- mP 00 mP4(gAC탨a3/??AC탰a28:&a-r mPa7A 00A탨C탨a2/??A탰C탰a28:&a-8&<:<a- mPa7A 00NNuACa2Aa, mP 00 mP4(m mPa5Z mP 00A 24DB mPa, mT 00A 24DB mPa,A 00A"mTa2A탸a,~A 00ACa1A탸a,` mP 00A킀C""+m$m( m 0Hr fp+@tAaWh/ <r4<AaVgTA"mTa1~A탨a+A큀 00A"mTa1`A탰a+ m< 00a pf -V mTa/tp+@ACa1$A탸a+ mP 00t mPaV/ <r4< mPaVNgTACa0A탨a+RA큀 00ACa0A탰a+4 m< 00anpf -VAa. mTCa)/ACa*t mPaV8 <r4< mPaUgA"mT"" mPC""+m <r4<AaU/tAaUA"mTa)A킀"mTa)Rg\A"mTa/A탨a*`A 00A"mTa/A탰a*BA 00AC@"" m+P mTC""AC킀""NuNtA큀a)/t m8:&a(a10&<:<a. mP 00$m/HxBA~aXa,F mPaS/$m/HxHxA~aXza, mPaS,gaNuaACa-/??ACa-8:&a(/??ACa-8:&a' mP 00 mP4(gAC탨a-\/??AC탰a-J8:&a'/?? <r4<A탸a'Aa-$8:&a' mPa1A 00A탨C탨a,/??A탰C탰a,8:&a'X/?? <r4<A탸a'ag8:&a' mPa1A 00a NuA큀0B0A큀"m<""x mAH//z$m( m`؅AH24 a,T/??x mAH//z$m( m`؅AH24 a,8:&a&`/??x mAH//z$m( m`؅AH24 a+8:&a& mP 00 mP4(gdx mAH//$m/HxBA~aV,a)8:&a%/??z$m( m`؅AH24 a+^/??x mAH//$m/HxHxA~aUa)n8:&a%p/??z$m( m`؅AH24 a*8:&a%>/??x mAH//$m/HxHxA~aUZa)8:&a%/??z$m( m`؅AH24 a*8:&a$ mPa/Z mT 00A"mTa#/A킀"mTa#gx mAH//$m/HxBA~aTa(h8:&a$j/??$m/HxBA~aTa(>/??x mAH 24DB/??x mAH//$m/HxHxA~aTLa'8:&a#/??$m/HxHxA~aT a'/??x mAH 24DB/??x mAH//$m/HxHxA~aSa'z8:&a#|/??$m/HxHxA~aSa'N/??x mAH 24DB/??N mPa-A큀 00$m/HxBA~aSVa&/??x mAH//$m/HxBA~aS&a&8:&a"/??x mAH 24DB/??$m/HxHxA~aRa&/??x mAH//$m/HxHxA~aRa&T8:&a"V/??x mAH 24DB/??$m/HxHxA~aRha&/??x mAH//$m/HxHxA~aR6a%8:&a!/??x mAH 24DB/??N mPa,B m< 00NuA"mT""x mAH 24abH/??x mAH 24ab,8:&a!/??x mAH 24ab8:&a!` mP 00x mAH//x mAH//$m/HxBA~aQ@a$8:&a 8:&a&/??x mAH//x mAH//$m/HxHxA~aPa$8:&a 8:&a&@8:&a /??x mAH//x mAH//$m/HxHxA~aPa$08:&a 28:&a%8:&a H mPa*A 00x mAH//$m/HxBA~aP0a#8:&aa`/??x mAH//$m/HxHxA~aOa#8:&aa`Z8:&a/??x mAH//$m/HxHxA~aOa#L8:&aNa`8:&aj/??$m/HxBA~aOna#a_8:&a mPa)A 00ACa$Aa mP 00 mP4(mA 24DB/?? mPa'b8:&a mT 00A 24DB/?? mPa'48:&aA 00 mTCal/ACag A"mT""A"mTav/A킀"mTa4g mTC킀"" m+PNuBmF$mB$m( m~AH///-Hx$m/A~aN0a!8:&a/??/-Hx$m/A~aNA@a#X8:&a$m( mAH 00$m( mAH 24a^>A@a@$mR$m UoNA@a%A@ 00x mAH//x mAH//x mAH//x mAH//x m~AH24 a/??x mAH//x m~AH24 a/??x mAH//x m~AH24 a/??NJBlA@ 24DBA@ 00$mB$m( mAHC@a&$m( mAH 00$mR$m UoNuNd<$m/HxBA~aL`a /??$m/HxBA~aL@a/??$m/HxBA~aL a/??$m/HxHxA~aKa/??$m/HxHxA~aKa/??$m/HxHxA~aKa`/??$m/HxHxA~aKa>/??$m/HxHxA~aKva/??$m/HxHxA~aKTa/??NJBfHx NP퉿P퉼NuHxNrx m0 0H$mİ\HH$mJg$m ~ab:&A턄aFNuN -gS$mB$m aD`$m( m 0Hg$mR$m o]$m $mlRa$m Ro -$m( m!Ha-gA턊aFA턄aENu$m$$m|B$m| &<:<aaR$m|*x "m ai$m|R$m| r oHx NrA턄aEB$m r ]HH$mJg m+PNu -gBHxNrx m0 0H$mİ\HH$mJg $m ~a`z` HxNNupAa6BNua -gn m S$mB$m aC `:$m( m 0Hf$m( mp!HpЭ$m$$mR$m o] m+PNuN^x mAHa+@Bx mAHa+@Fx mAHat+@A"mD""A"mH""AHCaaDA 00x mAHC a/??x m AH"mDa8:&a/??x mAH"mHa~8:&avaDda+@x mAHC aR/??x m AH"mDa88:&a/??x mAH"mHa8:&avaCar+@x mAHC a/??x m AH"mDa8:&aB/??x mAH"mHa8:&avaCa+@ -Bѭ -Fѭ -ѭ -BaaW/?? -FaaWn8:&aaFa+@ -BazaWH/?? -FadaW28:&a/?? -aDaW8:&alaaX+@ -fB+|`t -Fa /?? -a8:&a &<:< aa +@ -Ba/?? -a8:&a d&<:< aPa+@ -fB+|`p -a/?? -at8:&a &<:< aa+@ -aL/?? -a>8:&a&<:< aaL+@ - mJ -0|J -0|J -0| J -0|J -0|J -0|J -0|J NuaLA@aHDAHaH-gRCA  "  "CA  "  ""m0 m<  ""m4 m@  ""m8 mD  "$m@ $m4+@>$mD $m8+@x mAH 24&<:<a/??$m0 a8:&a/??$m< $m0a8:&a&A킈 00x mAHar Ё$m<$ ->A킈aap$m4В$m@$ -A킈aaT$m8В$mD$NQQpJ-gp"pJ-gpFg"N^$m $m&$m$$m"a3`H$m0 a/??$m4 a/??$m8 a/??a m$C"" m(C""Nu$m< av/??$m@ af/??$mD aV/??a m$C"" m(C""NuA"m$""A"m(""aX m B m FA"m$""A"m(""a, m B m FNu"m m"$m RoB$mB$m $ЀԀЂR/a$m $mm$mS$mR$m SoNuaGA|aCATaH -$D爔ЂЭ$m|$$m| &<:<aa&<:<aaR$m|x mAH//$m|( mAH24 ax mAH 00x mAH 24aO/??x mAH 24aO8:&a/??x mAH 24aO`8:&aa8 mT 00$m|B$m|( mAH"mTa$m|( mAH 00$m|R$m| Uo`F*$m|BpJ-gpЀDa8V`\$m|( m 0H$mJnD]]HH/$m|( m 0H$mJnD]]HHgA$m$"<a38$mB$m| $mg $m/N$mR$m UoAhx<$mؒ*<l$m,.<a4p$m$`a[$m$$m $m԰gj"m m"$m r6Ё$m"o@/$m Z"l@$m|( m!H$m &<:<a /??$m|( m 0Ha8:&a &<:<a($m|( m*AH 00Ah$m$"<a2$m|/Nx m*AH 24&<:<aa va8/??x m*AH 24&<:<aava88:&a J/??x m*AH 24&<:<aa8:&a a+@ -ra0aZ`SgvN$m|R$m| o]Nu$m |]HH/$m nB$m $mmB$m $m^HHg$m$m $m m r%a m r,a $m a&<x:<a< /??$m &<:<a8:&a a $m$$m|B$m &<:<a(&<x:<a $m|( m*AH 00$m|R$m| UoNNuAaACa7BpJ-gp/Apla*jpJ-gp/Apha*Rg-g$mB$m a4d`vz$m( ml؅AHC""A 24z$m( ml؅AH 00A 24z$m( ml؅AH 00$mR$m o~]$mB$m Sa3`J$m|B <r4<$m|*$m( mx؅AH 00$m|R$m| Uo$mR$m o]$m|Bz$m|( m؅AHC""A 24z$m|( m؅AH 00A 24z$m|( m؅AH 00$m|R$m| So`6$mB$m a2`z$m( ml؅AHC""z$m( ml؅AH 24Aa(z$m( ml؅AH 24Aa <r4<Aaz$m( ml؅AH 00$mR$m oP]$mB$m Sa2 `J$m|B <r4<$m|*$m( mx؅AH 00$m|R$m| Uo$mR$m o]Nua?Apa;Aha;A턊a Cna3a6A턊a2`>p +@p +@Np +@ -~A2aR^pЭN~A&aRNp~AaRB -~A,aR4E{aAJaWAVaWx"maVaWx"maVaVx"maVaVAaVAaVAbaV$mB$m("maVdaV$mR$m rox"maVDaVx"maV6aVx"maV(aVz$mB$m("maVaVb$mR$m [oA,aVJA\aVB$mB -a/`$m("m2aUaV $mR$m o]$mBpЭNa/`$m("m&aUaU$mR$m o]$mB$m("maUjaU$mR$m WoAaUAaUp ~ADaPp~A>aPp$m$$m("mDaUaUj$mR$m _op$m$$m("m>aTaU@$mR$m _o$mB -a.`$m("m,aTaU$mR$m o]pa:p < a%Jpa#x"m,aTLpa:Ppa# < a%$pa#pa#x"m,aT p+@JRJ -J~A0aO"-Jp ~A aO -J~ABaO -J~AHaO -J~ANaO -J~ATaOt -J~Ax"m8aQx"m8aR*x"m8aQpA>a7T$mB$m("maRaRT$mR$m Wox"mDaQaR6x "mDaQaR(x"m>aQaRADaRp~A\aMEp a6x"m\aQbEp a6x"m\aQLNua:?HnF?<6NAP0.PTHNu 24&8:BfJBg f DfpNuJEgpNu 24&8:BgnpNu<ngfDcpNufAcpNu 24&8:BgmpNu<ngfDdpNufAdpNu 24&8:JBgfDf EfpNuJEgpNupa JkpNupNua7AHPB?HQ?<NNAP _NuDExa0`bDEa(`ZaR11!Nua11!Nu 24&8:DE`6 24&8:DB`&a&8:DE`DEx`a` 24&8:HnghDBHngXDE~<En g6@ABDFGcGcGb8(vHDl`G8BCHC` GHD8HD쬵k&Dуd QRB BbJjDBNu DENupN֓DjdDA@ cAр[SBoJjDBNurptNuH@g0J`Ѐ[rGoJjDBNu0ftNu@[rB oH@JjDBNu 24?jDBBg BeTW&8* <r4<a h~ Bf 0e>&<ݳB88<:<aBH L&<]:Z8<:<a&::gjDGGe GbFGNuG GbFGNu~Nu 24HjDBaDBNuBe B/dAрQ4<`BNutNu $HkBk Bj*DBNupNuDBBkBjDBDNuf gp`E 246jDCCe0 C/jC C@j C jr0H@{0>H@Nur{0Nu{0NutNu 246j(:<DCaf AfBfNu`%2a 00Nur$o, b4< J@k @[H@NuH@RBNu4<Ѐ[NuDg8k2 b4< J@k @[H@DBNuH@RBDBNu4<Ѐ[DBNu4H@Ѓdh`^HCH@:">H@`H2g&HCH@:<HC>H@Ѓd(`HCH@:H@r` gDBgkDE`HDBDEaBDBNugDBa8DBNutNua 11!Nux`xaR`aL` 24&8:HoHoEBJAgJDfr:g,|HC҅H@:ۆ<HC>H@Ѓd`vHCH@:H@`fgDBgkDE` DBDEaDBNugDBaDBNutNuHoHoEBz:g|HC҅H@:ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuJBj^tNuk(g.JBjDBAр[SBDBjNutNuAр[SBkNuJlNu0gH@rJBkB JkЀ[`DBЀ[`J.;gP:pr4<Nup`A <r4<NupNJBktNu@AB`&8:~.gNa`&8:` &8:@ABJBgJEgJAfJ@f<jDFF Fdx.HGއQJGfjHGH??UGgkte <r4<` 24HL&8*a dgHL8a`L8aTJ_ k:NuH 24kBaL8a`)dTJ_LkNuTJ_Lja&8* <r4<`dHL aJBfL aVgLJBjDBaL8a@a(DBNuLJBjDBaL8a"`(fNup`@@ 248o6" <(<BJd@؄ЄCӁeg,e Єf`fҁecRH@hrH@NuNup`? 24?o4<&8: 3f AcDA@Aр[SBDBT`SBAрkfJAftTSWa>H&8:aBH&.tNugDEDBHngDBEBkQ*HEJDg?<>0rHGGdHGGdSWDуdi?<>0rHGGdHGGdSWDуdi ?<>0rHGGdHGGdSWDуd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<,>CEdGH@0r`xJCgz?<0rÐdSWЃdi?<0rÐdSWЃdid?<0ÐdSWЃd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<0riR?0i?`?<`@$g\kdHfiHNufnpNupNu"lDaDNuJnDaDNuzxeҁ؄d`ef Nup`<@&gTkdHöfiH@HNugmNupNuz&lDaDNuJlDxeփ؄d`efNupN"_KMZI'TO:HQ <-H*,`N,q~d d3 d# d# # d# # # # d ALH dAL H LH d AL`H L|0H>L|H>d~# # # # A`@ALH L|H>L|H>L|PH>L| H>L|H>L|H>L|H>L|`H>L|0H>L|H>QL|Nu$H$&"BA -KaXA"f B &nNuH>dd2d"d""d""""d LHC dLHLH C@d LHL|H| L|H|PCd~""""C`:LHL|H| L|H|PL|H|L|H|L|H|L|H|L|H|@L|H|pL|H|L|H|CQL|Nu`Na8A-Hhp apMa=@F?<NNTT@A0r p0Q`pdr ta0.F=@=@ACp,2QAp 2Qaa:``peahp`(p?a(arapaHz?< NA\?<LNAfCR2A0A82r22a"<<0<NBLNurt=@:=A@=B2::(   F..26"8@"PQ1!P1P!0PP`0  q#p"AӘQNuA Nu|^|  R^,T:Hz(` NEr$Wgr STD:gr COM:g r LPT:f2FA$_0=@D~CA0< Bha B2"pNu$_AF Ge><QBAFpNuahgzp=` a\gzpaAHPBHQ?NA\ _Jk1NuHz `Hz"` <Hz&?<&NN\Nup CNup C0Nu C NuJBj[B`ZB` 24a"< @Ё` 24a"<-JjЁk`ddReaDBNu$⊰e v@Cr4<L`ЄQJftNuSBЀjNu;ew2Ƕ '\ a0Mj&l g:~lm٬26K! #H%lo'n)7+P-?/2zE4B6Z8:\V<>=@AĄCdE^GIjK<MFQNPRFISU[WKXZy\S]_^`Rb cyd݉Pf9:gnhdj7kYl mznoqm>r us ttuavwaTaRFBd&8*L?aR<aSF Be BgQRB`RAdR e <rRF&0xaCձfEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`HQ2.d Aeg>r C 5e&!R 0c 9c0`<R"_`VC0 Ef"_Nuaa/ CFr  g 00VJAgB @ nN @mHJ@j0.4DBUBk0QSAg Q.`S@k 0`0BAF "_Nu.WAkQA 0g`-@ _aG` VNuag`af`ae `ac` acpNuadpNu/ aN$I> _aD4Ae4v` VfANuHP0(R@kBa* $I _aIUd4Id4Id$Id `$$$$Q @JfNuNup `(aSAfNuag`af`ae `ac` acpNuadpNuaSAkfUANuH HPhkJa $I _azIUd4Id4Id$Id `$$$$Q @JgSL`QNup `(Pa4Af` VNuag`af`ae `ac` acpNuadpNua4@m4v` Vf@Nu/HP0(X@kHa $I _aIUd4Id4Id$Id `$$$$Q @Jf$Nu $Nup `'aYAfNuag`af`ae `ac` acpNuadpNuaPSAkEF$p VfWANu?HP0(T@kHa6 $I _aIUd4Id4Id$Id `$$$$Q @Jf4Nu0XNup `&aUAfQNuag`af`ae `ac` acpNuadpNuaSAkXf SAkXfUANuz`z `z8.^n\Dn\@Hp tr=ED`n\n^n\n^A0000000000prt`n\n^648HH`prt`n\n^n\n^8HH`prt`p"_A `4RB`"_A42L\A` L0GF11Q-p`prHQ`*&x0<n\n^=D=@HBB=CBnp rt=AD`6AC1=@b01=@`WCk1Qrp`Bp'rta n2rt6(SC0(S@apaB\papava0paRG=GYfx-IC=C=C$tBft=B=B(tFJ=BBBB*Do>Eo:@l6Al2DDk =DVBnDEk =EnBn@cVo Acno,_NuAH`/=@a _aP]Ak024E$ Bb5B5A6CC5CK5C:8AB0000DkxEkt00A<:d>:bSFSGFn\GnXDDk0BhDEk1EBh Fchh Gchh0hb"0hbpmrt-|MH-|ML`Nu-HNB:?<NNT-@XDbDEbEBb=ET=DV-|PBLBp n20(L=CJ?=B^C=C\=Cj@drAdnED??RGRF=GF=FHtGJ=BltBft=B`=BnGOpЇЇ b na 222-IfHVMF,_Nup ` T np` p??/ a, > _a4$FAFp_@[000][vx`* [g" ]g |g QSx` xQSrQ][vx`* [g" ]g |g QSx` xQStQ]BAF0-H,=@p4aB2HNu 24DBaDB11!Nu 24DBa DBNu 24x6o<Ce(FC BdЄeNu B/dHDDdRdQRBNu&<:<`g BbUC BcjNu BcHDDdSkg RBAрjNuNu0ftNuB H@"jNu Lx6oFCe0FC BdЄe!Nu B/dHDDdNAXOJkpNu0< aF`0< CF2p`p a0`p CFp`aCF"p`Hza `Hz"J`B.@=|DNua.@FpAR@C` @H` @HHyW(aa""H`HyW(`HyW( 24`@H` @HHyW(aԢa"Hav`JHyW(`HyW( 24`B.@=|DNuB.@ab=GDgNup`La`a0CF"E p`aj@S@k ??<NAXNuJg$_a: HN$_a: HN$_aBHN$_a؄BpHN$_aB0HN$_axBpHN$_alN$_ab؄N$_aXN$_aPN$_aF 0HN$_a:؄00HHN$_a,p0HN$_a 24N$_a:p 0HgpN"X I"_(*UGk*<(؆QNp`p`p` p`pJPg`$_a!HN$_a؄1HN$_aHN$_a 00N&8:` &8:@ABHaNL8aԚL8 DBaL8O <jDFJEjDEFn ffAbtNu&8:aL`&8:a8` 246jDC C b H&<;)8<\:<a"aHa|R/@L&.D<jRGg>VGg:TGjp` HPa0CF$IpR@  f _a|Hd2Hd2`"QNu`n<.DHSGFaAEg f< &_Nua`Nu.dfaBdV=n`r>.D<jRGg:VGg&TGjp` R<.DaAFa$JkNup#` 6 z fa2a"` z f a"a AFa  f#dVJkzNu0:g0.D<jRGg(VGgTGjp` <.Da&` z faa` z f aaAF "g pR@0 ,g  g  fHp`:pR@0  g  g "fR@0 ,g  g  fHpRU@"_  f#dV$H _a`QNupR@0 ,g"  g  fa~ (fR~Nua ~ `a~NuaJkHQ ! gRf _NuXX~Nu0jJ\@??<NMXJk .dgp Nu` <.DHSGFa ,g gAEf< &_Nu ."Ff +"g ,g`?<`Bg/0aXo< 2JjJAfr`\TNu$ a Nua`a`a`]A=ADNua`a`a`H0aL` :H0aL`a|A((@؆*.&|؆kD`&a,k.."*B(.&؅kr-K/.?<INA\/?<HNA\JgB n""n&ۮ&ۮ"$I`&bۛp0R@@b&n CXbЪ`r .&/?<HNA\p=` ?<%NNTNu .2 @Nu0.FHNuJ@j0.=@F=@NupNBT@HgpNu 24JBkCkNuCktNu 24JBoSBNugRBNu2(gbc  P"H`Nu/0Hat2  _ PSAvjx E(Wf* ae zb Q @Nu 24&8:`Bnp`pBnp`p=| p|=Fn@=@b=n`ra|Hj=Ah~`:a JfBH@ RfF.f Kg" Mg sg tg Pg Hf~`xSGjtRGFcn>`jAF gp gj g grffnnpenbfJ.fj6pRGFc$SG` J.fjpRGFcRF` Ff`> `?~ap a0p a*0Nu|``CpE`bf`FgRGJGgSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0NuagNu4.rf?HyaNM\Nu=|D`LjazEfpadppa`AFEg0PaEfaFRE`ܾEfp a@a8?nnnp a2RF`<annoS@f nhfSnl=Ah=FnNup` papq4.rf?Hya~NM\Nu=|DHapLNu|A0"P2(@e2<EF`QHP=|DJ@g$abAF$HpR@ 0 f _a`QNuHPp?ap a| _2<|0`C&pHQ/Hy@NA NuC pa:NuHQ/Hy?NA Nu&g4 FgagJAga2< R@AdSf0Nu0ap Ce`&g4 FgaJBjagPAe CbRa R@Sf0Nu FgRag JBja颰AeaJAg RP0 pNu`D Fg6aXgJAga @eabRP Nup NHѨB?<?/?<BNAO JkLLNu&8aJBjaJAg Df*ڃkd0Nu DfրBH??/?<BNAO LJk!@NuHBHh Hx??<?NAO LJo ѨLNuk:fp`^k: g ѨNuBHPHQ/??<?NAO _JoѨfNuBHPHQS/??<@NAXLfѨNuJkp%` 24&8:Bmn JBj efAc` b fAd 24Nu 24&8:Bnm JBj bfAd` e fAc 24NuB9`$H EaJA AerQBL@͉H Ia"H _/ aa _/ ?a AF-H AerQB2"_A&-H A e ` \gQBa9gaZe -|p[`pZa˒ajAF"H0.g "Hg \f`A&fS !.gR EF _aL`QNuHz?<&NN\ @Nu x NuA@Bh`A@a n@!|}Nu _S@Gd@GHpp/0NuGNpp#fpNup`p`#NuO?// C4<a./J _ta$/J _a/Ja?<KNAdOHNu$Ia JBc2QBB"HNuHz` Hz`Hz&$A?<&NN\NuNu4Nu$Nu?a0` ?a2@@ad` a Nu4.`Af n2LR@RANu4.`g S@SAHNutbpbr??paZpYaT0aN0`HpEZgP`LJg&B.C`a8aD*9fap-I,=|p4aHz*9g ENp9`Ȳ _a &nO:NMZI'TK$<Nu[1][Error +111][Return]E g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNu9HHNu9`aNf"_O:N"_O:HQ`6 9qpg"9qlgJ9fga"AO:Np\B`G06#f&#-KNuk"c" C gT6f`Pv6"cgRCC(D#8`D@v`v??NMXJNuJ@k??<NM"UAf J@fH@Nuaj0fpNu\@`a `]@><CF Ipa<0HNua`]@><CF Ipa Nu?|`?a0R@f|0aHJFkHPa _Nupo`HSHP&I>g\SG??<NMXJk Q _t&_Nu&_`paTJANuag `af`apNuapNuC`C``C` C`CJhfJfRRRRRRRHP? @CFH~8:E#P&<2 `b$bYEf`"RAf rЁЀ`&Ѐe "ЀeЁdp`JAkfgRer?DDЁaAa¤8$HX :CFE` YEjT"_$P"2trDDd0d d d` QjNu`$aDa DNu na^ K"ng42 $`gk2&Hg Af deђ$`ebѐXf&nNu AgebѐA``-Kx$ n&$n""Hg8" &Ak cѐ S`g"" k#&Acё2+SAI3 Q&f-I"&nNu-Kx$&ր n&$n""HgR" k&Ac b S` S`g4" k#&AcbrkX`ޑ2+SAI3 Q&f-I"&nNu$9qlg6ACr2f`ef2f`#ql``aP n2L6(n\n^HHHNua0 n20(n\HNua n20(n^HNua n20(HNua&:ffNuarNua J[HHNu:nfa@ z^0NuJg6$:Pf,H?<"NNT&@p/&wra :,ga &Lr`r??Q@wHyNM\0Nu#wNu"H YJQfNu YH瀀a|LP|HPGzC&֛֛֛֛֛(HDDCBg6Cv6C[RCF8[[[aL6C[RCF8:GzFWfTL L-KA `$I\bfBjQNu$YbfBjQNu؄*؄؅CH`ܴ؅X`$_  IahHR"H @`̘؄*؄؅AHNu؅X`$_ Ia4HR"H` nDd$HJf-HS Nup"`ZHPa _a`QNua JH a&L0Nua`hA`:A`4A`.A|`(A|`"A`A `A`A ` A `A Nu ..NuH.gZ <r4<?k"SWga0`TL8Haa 1988,89 By Dirk Van Assche V2.1 Danny Van AgtmaelGFA-RAYTRACE V 2.1R G BRGB\*.sulsclRainbow OFFRainbow ON  V `(" 8X l(^."(40d"Z  n*4bN0( > $(* hF@XB <`"4P&8"^p 4BHpB,P"2:*"T:rF>H66p >>`LLLL&JL*"Hn(,4<p~ ,0B`"t <&4*f$"4lN" : "\:::: .<, 2&f $J"$.T*:N J.6 ֆN( : dи$^t@4z<$`8LLF"  fLd>ڀ  䴼Z""hht .2FT>T>T^^fVV.2.2&.VrVrVr(((D"JJJX $,& l PLJ ~,&<  t(: &fhPJP <0@4.& \,**@V<J6:\Xn:$ l,," &<\*,(,(:":" Z0" N": &bpL$bR^R8XnDH^^\< "B>j|nF~0f42@2 *f<. f((@P $pf^| *l "*$*VGFA RAYTRACE 2.1 7.12.89 1. GFA Raytrace 2.1 was recompiled with GFA Basic 3.0 Compiler which resulted in approx 30% reduction in calculation time and also 30% reduction in code size (about 32K smaller). 2. Please note that on the PROGRAM disc there is a program LISTOBJ.PRG. When run this program will offer the file selector box, so that you may enter a WF* file name. If you have a printer connected, all of the colour values and positions of objects and lamps will be printed. 3. It has come to our attention that on Atari Mega ST, the HELP key may not always work. It is hoped that this bug will be fixed in the next update. 4. SHOWANIM.PRG The save screen function "S", in the SHOWANIM.PRG is not implented in this version. 5. Some animation demomonstrations on the data disk are too large to run on a 520ST. The length of an animation sequence depends upon the amount of memory available. 6. SHOW512.OBJ The SHOW512.OBJ can not be run directly. This is a routine that can be called from GFA Basic programs to display GFA- Raytrace 512 colour pictures. An example GFA program is contained in the file SHOW512.LST. 7. Raytrace 2.1 now runs with TOS 1.4 and TOS 1.6. 8. Changes are made to the routines to produce objects (spheres) of the type "BRIGHT" to obtain better results (smoother colour change) 9. In the raytrace-menu (F2) there is a new option called "RAINBOW" which can be turned on or off by simply clicking in the surrounding box. This means that, if you're using some coloured lamps, the effect of each lamp on each object will be bigger (normally when RAINBOW=OFF an effect of a lamp on an object depends on the distance). This results in more colourful pictures if you use several coloured lamps and white objects. 10. Old object-types were: Dull/Bright/Mirrored. New types are: Dull/Bright/Mirrored/Transparent. 11. To use transparency you select this item in the 'Material'- menu (see manual) and select a percentage (% - like you do with Mirrored). Default is 60%. Transparency means you can 'look through' an object. So an object of that type will not produce a full (black) shadow, but a grey one. And the colour of that object is a mixture of the object's own colour and what's behind it. The degree of mixing depends on your choice (10% is hardly transparent, 100% is totally transparent). Update release information is available in the independent GFA User Magazine. GFA User also offers an update service for all GFA products to registered users only. Registered owners of GFA Raytrace can purchase GFA Basic 2.0 interpreter and compiler, direct from GFA for 19.95, including post, packing and VAT. Please submit orders direct to GFA Data Media (UK) Ltd Box 121 Wokingham Berkshire RG11 9LP (0734) 794941 Updates of GFA Raytrace are also available from GFA User, Send 3.00 pounds with original disks to receive latest update. This is version 2.0. You will also receive a free copy of the independent GFA User Magazine. Existing subscribers to GFA User can update their GFA product at a reduced cost of 1.50 pounds. For articles on GFA Raytrace and information on public domain raytraced images and utilities, please refer to the independent GFA User Magazine. Available from: GFA User 186 Holland Street Crewe Cheshire CW1 3SJ Tel: 0270 256429 ' This program and the file SHOW512.OBJ are Public Domain ' It is strictly forbidden to use them in commercial programs ! ' Use this routine in your GFA-BASIC 2.x/3.x programs to show ' GFA-RAYTRACE 512-Color pictures. ' ' This will load a picture called demo.sul. ' This picture can be created from within GFA Raytrace by using the save ' screen option. Change to demo.sch for high res. ' RESERVE FRE(0)-21000 ! reserve memory for routines & palettes base%=EXEC(3,"show512.obj","","") ! load routines IF base% AND 1 ERROR base% ENDIF ! continue only if routines loaded @initray ! initialize routines and Palette-table @loadray ! load 512-colors picture CALL init% ! Mode ON VOID INP(2) ! wait for a key CALL exit% ! Mode OFF SETCOLOR 0,&H777 ! now restore colors SETCOLOR 3,0 VOID GEMDOS(73,L:HIMEM) SUB base%,256 VOID GEMDOS(73,L:base%) ! free memory used by routines & palettes END ' PROCEDURE loadray OPEN "i",#1,"demo.sul" ! open file SEEK #1,8 ! skip file-type (used by GFA RAYTRACE) BGET #1,XBIOS(3),32000 ! load screen BGET #1,palbuf%,18400 ! load palettes in buffer CLOSE #1 RETURN ' PROCEDURE initray ADD base%,256 palbuf%=base%+3000 ! palettes behind routines (see Reserve) LPOKE base%,palbuf% ! start palette-buffer init%=LPEEK(base%+4) ! 512-colors On - routine exit%=LPEEK(base%+8) ! 512-colors Off - routine RETURN `t NHah9` gP`3t#pv#p`$Ha&#vp09t`aLNuB?< NA\#zNu/9z?< NA\ONuA@ Nu3Jy>f|H&yIBK 6<aaA(9 gAJgNNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqNqNqA0 A 0A NqNqNqNqQxaLNsNsNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqQta0LNsrs2$  &b`L< ;AONFa6 u0a=P <`a!hr+@@?<NNT+@D?<NNT+@H?<NNTrl@+@LpLWHVpJ-gpFVE.aDE.aDAa4BP <@ЭPa a4Ca%0Ca.PRPpPla1pra'0<wra'a!2 <a Jg"ELrp a3/a3/a3"_$raDT <a +@Tppa |+@Xa<):+@\ <&Э\+@` < a R+@h-g?<NNT}+@l`+mhlpЭha $r +@pp Эh+@tpЭha +@xpЭha+@|p$Эha+@p(Эha+@pTЭha+@pXЭha+@ <Na+@pa,N\p~AaFp~AaFp~AaF-gEL}pA"a,`ELpA"a,NN.aTa5`Aa1$m r}@ap+@$m rH@a^+@$m ax&<x:<av/?? -aZ8:&a gR$m a@&<x:<a>/?? -a"8:&a gRA퀔  A퀘  `4bB -a*x`a:R -o]NuN-g p"<`aBvpra9NNu-g mxp0 <'jЭ\a& @ <1@. m\pA&40 m\ <A&0 m\ <A&0 m\pA&0 m\ <WA'0 m\pKA'0 m\pOA)0 m\ <A).0 m\ <A)d0 m\ <A)v0 m\ <A)0Nu-g mxp0 <'jЭ\aZ @ <?1@. m\pA&40 m\pA&0 m\ <?A&0 m\ <RA&0 m\ <A'0 m\ <A'0 m\p'A)0 m\ <@A).0 m\ <?A)d0 m\ <?A)v0 m\pxA)0Nu0<wra#tpra#l0<ra#bpra#ZNu-g mHWBgN\Nu mlp0 mhp0pra7a8-g" -@"<`a@dp@ga`a` mxp0BPprҭPAa1a/"-P@a@"RPpPla,6-f:ELpa+HaAa+a*ELpa+,a*ELpa+paAaNuQ-g mlp0B -a'~`H(- m 0H"<^a?a7(- m 0H0|l aN-fR -o]pJ-gpFJgZpЭ+@`H(- m 0H"<^a?*a7b(- m 0H0|l aNN-f S -l-g*`\pa 6<0<tra pa pfB -a&|`((-"maDa'~a6aN-fR -o]pJ-gpFJg:pЭ+@`((-"maDa'*a6aN-f S -l`B -a%`,(-"maDRtra!a6DaHN-fR -o]pJ-gpFJg>pЭ+@`,(-"maCtra a5aN-f S -l-gQQaa5 -Trpa=ta5?+@BBm -a Aa$f(Aa( m 0H"-l@+@a$"fG -a.C:a$a+/ <Эl~a'|pЭla,+@ -&<:< aRva3a!a(va$Ja+@EPa:Aa@LAa@D -~Aa= -~Aa= -"<@a S+@ -"<@a S+@BP -a"`t -a-(-P"ma@ -a-(-P"ma@(-P"ma@ +@ -a&<x:<a'JBVHH"pJ-gpg0 -a&<x:<a'&<x:<araѭ -(-P m!H(-P"ma@< (-P m!H-gLpra: ELpa% -@WHa&<:<aH&<x:<aa "p a9EM pa(/ -P&<:<aa,8"_aah(-P m/0H -"<G@a d$ra0 -a|&<x:<a zA 00(-P m/0H <r4<A aLa&<:<aaTП+@+mЀ -"<@a Эa ` mp X -԰o](-Pp mAHѐ`4pa6<0<trapaz <NaH(-P m!HA: /(-P m 0H$ra/A:  m (-P m 0H0|퀌 <Э0|퀌0 mHWBgN\ <Na+@(-P m 0H"<Na7alpVHH"pJ-gpg.paA a/ -"<@a S6<$ra -"<Na7-g6pf(-P"ma=a .`(-P"ma=(-*-|~aRP -Po]Ea6A:a&l -ob -rb@a (U mt0-g p"<`a6a mtpb0`^EMpa%/0H@Nur{0Nu{0NutNu 246j(:<DCaf AfBfNu`|a 00Nur$o, b4< J@k @[H@NuH@RBNu4<Ѐ[NuDg8k2 b4< J@k @[H@DBNuH@RBDBNu4<Ѐ[DBNu4H@Ѓdh`^HCH@:">H@`H2g&HCH@:<HC>H@Ѓd(`HCH@:H@r` gDBgkDE`HDBDEaBDBNugDBa8DBNutNua 11!Nux`xa`a` 24&8:HoHoEBJAgJDfr:g,|HC҅H@:ۆ<HC>H@Ѓd`vHCH@:H@`fgDBgkDE` DBDEaDBNugDBaDBNutNuHoHoEBz:g|HC҅H@:ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuJBj^tNuk(g.JBjDBAр[SBDBjNutNuAр[SBkNuJlNu0gH@rJBkB JkЀ[`DBЀ[`J.;gP:pr4<Nup`0xa2`Ba411!Nux`4 24&8:`& 24&8:`a&8:` &8:@ABJEoHnfNup`0HtNugDEDBHngDBEBkQ*HEJDg?<>0rHGGdHGGdSWDуdi?<>0rHGGdHGGdSWDуdi ?<>0rHGGdHGGdSWDуd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<,>CEdGH@0r`xJCgz?<0rÐdSWЃdi?<0rÐdSWЃdid?<0ÐdSWЃd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<0riR?0i?`?<`@$g\kdHfiHNufnpNupNu"lDaDNuJnDaDNuzxeҁ؄d`ef Nup`.0"_KMFMNNItO:HQ <-H*,`N,Ftd d3 d# d# # d# # # # d ALH dAL H LH d AL`H L|0H>L|H>d~# # # # A`@ALH L|H>L|H>L|PH>L| H>L|H>L|H>L|H>L|`H>L|0H>L|H>QL|Nu$H$&"BA -KaXA"f B &nNuH>dd2d"d""d""""d LHC dLHLH C@d LHL|H| L|H|PCd~""""C`:LHL|H| L|H|PL|H|L|H|L|H|L|H|L|H|@L|H|pL|H|L|H|CQL|Nu`8a8A-Hhp apMa=@F?<NNTT@A0r p0Q`pdr ta0.F=@=@ACp,2QAp 2Qa a2`p`lpeahp`(p?a a\aZaHz?< NA\?<LNAfCR2A0A82r22aB"<0<NBLNurt=@:=A@=B2::(   F..26"8@"PQ1!P1P!0PP`0  q#p"A ӘQNu|^|  R^,T:Hz(` NHz ?<&NN\Nu9gNuWNuaaaNuNuNupc?a0QNurdd6Ag,B(dB(dH Ac<a`tgBAp`NuNu?<OA`d?<IA`Z0<H IaLt Ig Og Ug Ag Rg*afNup`ap`&0affHRaj>Er$Wgr STD:gr COM:g r LPT:f2FA$_0=@D~CA0< BhaB2"pNu$_AF Ge><QBAFpNuahgzp=` a\gzpaTaRFBd&8*L?aT<aSF Be BgQRB`RAdR e <rRF&0xaCձfEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`HQ2.d Aeg>r C 5e&!R 0c 9c0`<R"_`VC0 Ef"_Nuaa/ CFr  g 00VJAgB @ nN @mHJ@j0.4DBUBk0QSAg Q.`S@k 0`0BAF "_Nu.WAkQA 0g`prt|P;Q:  g +g -f .g40  b 0e 9b da6`RF` .f 0e 9b daSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`ZJjDDDS4<.aFJFkSFk4arQa2`&HaFFaZQ&8*L/a,H܆jDBJ.:gtBn:Nu @$@JfS a`QNu$Aa`QBNuHz a J`Hz avH ` HPHQ0(ikah $I _aPIUd4Id4Id$Id `$$$$Q _Jf,a Id4Id4Id$Id `$$$$Q @NuSaIdIdId`Q @Nup `/ a$I> _aG` VNuag`af`ae `ac` acpNuadpNu/ av$I> _al4Ae4v` VfANuz`z `z8.^n\Dn\@Hp tr=ED`Bp'rta n2rt6(SC0(S@apaB\papava0pav`v`v`v`-@prt` v`vj`v `-@p `v`p&rta=n-nNuv `v`vh`SCS@AB8Hp=@0<rt`@H\Nup`~GGGBCCB@???<NN\Nu((?<NNT. n20(LJvA HA HNup @d"X Pe68:aHQ?<NNT"_HV n2MF-@ @6H H00(L=C=B&<RF<>RG=GYfx-IC=C=C$tBft=B=B(tFJ=BBBB*Do>Eo:@l6Al2DDk =DVBnDEk =EnBn@cVo Acno,_NuAH`/=@a _a r]Ak024E$ Bb5B5A6CC5CK5C:8AB0000DkxEkt00A<:d>:bSFSGFn\GnXDDk0BhDEk1EBh Fchh Gchh0hb"0hbpmrt-|(H-|(L`tNu-HN"?<NNT-@XDbDEbEBb=ET=DV-|PBLBp n20(L=CJ?=B^C=C\=Cj@drAdnED??RGRF=GF=FHtGJ=BltBft=B`=BnGOpЇЇ b na 222-IfHVMF,_Nup `T np` ??/ a , > _a 4$FAFp_@[000][vx`* [g" ]g |g QSx` xQSrQ][vx`* [g" ]g |g QSx` xQStQ]BAF0-H,=@p4a2HNu 24DBaDB11!Nu 24DBa DBNu 24x6o<Ce(FC BdЄeNu B/dHDDdRdQRBNu&<:<`g BbUC BcjNu BcHDDdSkg Aр[RBNu0ftNuB H@"jNu Lx6oFCe0FC BdЄe!Nu B/dHDDdNAXOJkpNu0< aF`0< CF2p`p a0`p CFp`aCF"p`Hza `Hz"J`B.@=|DNua.@FpAR@C`d @H` @HHy0aaR"H`2Hy0`Hy0 24`@H` @HHy0ara"Hav`Hy0`Hy0 24`B.@=|DNuB.@ab=GDgNup`a`a0CF"E p`Jg$_a: HN$_a: HN$_aBHN$_a؄BpHN$_aB0HN$_axBpHN$_alN$_ab؄N$_aXN$_aPN$_aF 0HN$_a:؄00HHN$_a,p0HN$_a 24N$_a:p 0HgpN"X I"_(*UGk*<(؆QNp`p`p` p`pJPg`~$_a!HN$_a؄1HN$_aHN$_a 00N&8:` &8:@ABHaNL8a0L8 DBaL8O <jDFJEjDEFn ffAbtNu&8:a`&8:a`.@<.DAp$I"t Q k"RGef~`SG * g *fSG`<.DjZ\FkBJn`g Fgd Fg^HS&I.aQ`p???<NM\Qj&_NuHQ/?"bf "_&& &6NHyNMXJg HyNMXJNuagpNua Nu"H Y0e$b Pr@Ag$D!("fXծ"HNup`rap`QNupaNu4pa2Nu$pa"Nup2(g"P@g2RADAH""n"r2gZAe2 1@#-I"Nu1@NuAt2<XJX[j]`p`a."n"dp`paNu?pa2Nu/pa"NuH n&$n""Hgr k&@ S`g^ k#&@0+Hd3 Hd3 Hd# Hd# # Hd# # # # Hd`# ALH# ALHQ&f-I"LNuat ."NuaJAfCNu"X2ebP6gHRC(D#HNua@gn` a4gb0`/hd6a$ W PHd2Hd2Hd"Hd `""""Q _/a _Nu/hda$ W2( P"IdHdHd `Q`r@/JAnr W4(Ae4RBBc0?a0$2 W PA`HP"Xp0g"r~ RAfS@n _a`1V` _NuJG06#f &#o-K"CNk"c" C gT6f&#o-K"CNPv6"cgRCC(D#8`E"e a"d"_&B[NpZ`AFtЀvQBNuAFt0 9c^QBNuAFt 0QBNua`a`aCF 0gS JfS`>@a Acr `@a A cr `@a\ A cr `N#$H`RHa@LHP?.d=hdN#=_d2 "@$Y4Ad2`0Q @Nu@`r ??ar"P02R@H`2Q NuaaJjtNuaHPa pJk NuCg.BJ@g  g &g, $g %gN$XNutNuRpt`2Rpt`Rptr ae OgX Xgn HgSRB ae Fb$0k  c_  c b退`tSHka0NuRB0 b b瀀`RB0 fрd`ap`ap`ap3:B:Nu>.D<jRGg>VGg:TGjp` $HPa0CF$IpR@  f _aHd2Hd2`"QNu`0<.DHSGFaAEg f< &_Nua`ׂNu.dfabB:=n`r>.D<jRGg:VGg&TGjp` <.DaAFa$JkNup#` t z fa2a` z f a"aAFa  f#:JkzNu0:g0.D<jRGg(VGgTGjp` <.Da&` z faav` z f aa^AF "g pR@0 ,g  g  fHp`:pR@0  g  g "fR@0 ,g  g  fHpRU@"_  f#:$H _a`QNupR@0 ,g"  g  fa~ (fR~Nua ~ `a~NuaJkHQ ! gRf _NuXX~Nu0j \@??<NMXJk .dgp Nu` <.DHSGFa ,g gAEf< &_Nu ."Ff +"g ,g`$ a Nua`a`a`]A=ADNua`a`a`H0aL` H0aL`ap|A((@؆*.&|؆kD`&a:,k.."*B(.&؅kr-K/.?<INA\/?<HNA\JgB n""n&ۮ&ۮ"$I`&bۛp0R@@b&n CXb:` .&/?<HNA\p=`n?<%NNTNu .2 @Nu0.FHNuJ@j0.=@F=@NupNBT@HgpNu 24JBkCkNuCktNu 24JBoSBNugRBNu2(gbc  P"H`Nu/0Ha2  _ PSAvjx E(Wf* ae zb Q @NuBnp`pBnp`p=| p|=Fn@=@b=n`raHj=Ah~`:a JfBH@ RfF.f Kg" Mg sg tg Pg Hf~`xSGjtRGFcn>`jAF gp gj g grffnnpenbfJ.fj6pRGFc$SG` J.fjpRGFcRF` Ff`> `?~ap a0p a*0Nu|``CpE`bf`FgRGJGgSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0NuagNu4.rf?HyatNM\Nu=|D`LjahzEfpadppa`AFEg0PaEfaFRE`ܾEfp a@a8?nnnp a2RF`<annoS@f nhfSnl=Ah=FnNup` papq4.rf?HyaNM\Nu=|DHaLNu|A0"P2(@e2<EF`QHP=|DJ@g$abAF$HpR@ 0 f _av`QNup?ap a~2<|0`C&pHQ/Hy@NA NuC pa:NuHQ/Hy?NA Nu&g4 FgaDgJAga2< R@AdSf0Nu0a2p Ce`&g4 FgaJBjagPAe CbRa R@Sf0Nu FgRag JBjaҰAeaJAg RP0 pNu` Fg6agJAga @eaRP Nup NHѨB?<?/?<BNAO JkLLNu&8a*JBjaBJAg Df*ڃkd0Nu DfրBH??/?<BNAO LJk!@NuHBHh Hx??<?NAO LJo ѨLNuk:fp`^k: g ѨNuBHPHQ/??<?NAO _JoѨfNuBHPHQS/??<@NAXLfѨNuJkp%`hB9`$H EaA AerQBL@͉H Ia*"H _/ a a _/ ?aAF-H AerQB2"_A&-H A e ` \gQBa9gaZe -|p[`pZa؞ajAF"H0.g "Hg \f`A&fS !.gR EF _a `QNuHz?<&NN\ @Nu x NuA@Bh`pA@az n@!|}Nup# fpNup`p`#NuO?// C4<a./J _ta$/J _a/Jaܦ?<KNAdOHNu$Ia JBc2QBB"HNuHz` Hz`Hz&$A?<&NN\NuNu4Nu$Nu?a0` ?a2@@a` a Nu4.`Af n2LR@RANu4.`g S@SAHNutbpbr??papYa0a0`MDpENNgP`LJg&B.C`a8aD*9fap-I,=|p4aHz*9g ENp9` _a &nO:NMNNItKMF$<Nu[1][Error +111][Return]EMD g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNu9HHNu9`D@v`v??NMXJNuJ@k??<NM"UAf J@fH@Nua^j0fpNu\@`aJ`]@><CF Ipa<0HNua.`]@><CF Ipa Nu?|`?a 0R@f|0a(HJFkHPa _Nupo`,HSHP&I>g\SG??<NMXJk Q _t&_Nu&_`aJANuag `af`apNuapNuC`C``C` C`CJhfJfRRRRRRRHP? @CFH~8:E#P&<2 `b$bYEf` RAf rЁЀ`$Ѐe "ЀeЁdpNJAkfgRer?DDЁaAaZ8$HX :CFE` YEjT"_$P"2trDDd0d d d` QjNu`aDa DNu na^ K"ng42 $`gk2&Hg Af deђ$`ebѐXf&nNu AgebѐA``-Kx$ n&$n""Hg8" &Ak cѐ S`g"" k#&Acё2+SAI3 Q&f-I"&nNu-Kx$&ր n&$n""HgR" k&Ac b S` S`g4" k#&AcbrkX`ޑ2+SAI3 Q&f-I"&nNu"H YJQfNuBQ YH瀀aLP|HPGLBC6[[[C8[[[a68v6Cv6C[RCF8[[[a@6C[RCF8.L L-KA `z$I\bfBjQNu$YbfBjQNu؄*؄؅CH`$؅X`$_  IaHR"H @`̘؄*؄؅AHNu؅X`$_ IaHR"H`(Gfa_Ray.SyssalsahError Please report...Press Any Key ...GFA-RAYTRACE 1.6 / ShowanimSelect a file - Cancel to exit\*.test.GFA-RAYTRACE 1.6 / ShowanimLoading frame Not enough memory ! Unknown file-type !  p l 0 frtnTDX LB0H t\((@H$p<| *l `K& ;AON0a5 u0a<: <`a Rr+@@?<NNT+@D?<NNT+@H?<NNTrl@+@LpLWHVpJ-gpFVE.aCE.aCAa3jBP <@ЭPaa3Ca$Ca-:RPpPla0pra&0<wra&a  <aJg"EK\p a2/a2/a2"_$raC> <ap+@Tppaf+@Xa;):+@\ <&Э\+@` < a<+@h-g?<NNT}+@l`+mhlpЭhar +@pp Эh+@tpЭha+@xpЭha+@|p$Эha+@p(Эha+@pTЭha+@pXЭha+@ <Na+@paN\p~AaEp~AaEp~AaE-gEKgpA"a+`EKjpA"a+NN.a>a4JAa0$m r}@aZ+@$m rH@aH+@$m ab&<x:<a`/?? -aD8:&a gR$m a*&<x:<a(/?? -a 8:&a zgRA퀔  A퀘  `3LB -a)b`a9R -o]NuN-g p"<`aA`pra8NNu-g mxp0 <'jЭ\a @ <1@. m\pA&40 m\ <A&0 m\ <A&0 m\pA&0 m\ <WA'0 m\pKA'0 m\pOA)0 m\ <A).0 m\ <A)d0 m\ <A)v0 m\ <A)0Nu-g mxp0 <'jЭ\aD @ <?1@. m\pA&40 m\pA&0 m\ <?A&0 m\ <RA&0 m\ <A'0 m\ <A'0 m\p'A)0 m\ <@A).0 m\ <?A)d0 m\ <?A)v0 m\pxA)0Nu0<wra"^pra"V0<ra"Lpra"DNu-g mHWBgN\Nu mlp0 mhp0pra6a7-g" -@"<`a?Np@ga`a` mxp0BPprҭPAa0ja-"-P@a? RPpPla+ -f:EKmpa*2a@a*xa)EKtpa*a)EKpa*pa@aNuQ-gt mlp0B -a&j`H(- m 0H"<^a>a6(- m 0H0|l aNl-fR -o]-g`pa 86<0<tradpa "pfDB -a%`((-"maDDa&a6:aTNl-fR -o]`FB -a%`,(-"maDtra a5a Nl-fR -o]-ghQQaa5 -Trpa=ta5?+@BBm -a Aa$f(Aa( m 0H"-l@+@a$"fG -a.C:a$a+/ <Эl~a'|pЭla,+@ -&<:< aRva3a!a(va$Ja+@E:a:Aa@LAa@D -~Aa= -~Aa= -"<@a S+@ -"<@a S+@BP -a"`t -a-(-P"ma@ -a-(-P"ma@(-P"ma@ +@ -a&<x:<a'JBVHH"pJ-gpg0 -a&<x:<a'&<x:<araѭ -(-P m!H(-P"ma@< (-P m!H-gLpra: EKpa% -@WHa&<:<aH&<x:<aa "p a9EKpa(/ -P&<:<aa,8"_aah(-P m/0H -"<G@a d$ra0 -a|&<x:<a zA 00(-P m/0H <r4<A aLa&<:<aaTП+@+mЀ -"<@a Эa ` mp X -԰o](-Pp mAHѐ`4pa6<0<trapaz <NaH(-P m!HA: /(-P m 0H$ra/A:  m (-P m 0H0|퀌 <Э0|퀌0 mHWBgN\ <Na+@(-P m 0H"<Na7apVHH"pJ-gpg.paA a/ -"<@a S6<$ra -"<Na7-g6pf(-P"ma=a .`(-P"ma=(-*-|~aRP -Po]Ea6A:a&l -ob -rb@a (U mt0-g p"<`a6a6 mtpb0`^ELpa%/0H@Nur{0Nu{0NutNu 246j(:<DCaf AfBfNu`|a 00Nur$o, b4< J@k @[H@NuH@RBNu4<Ѐ[NuDg8k2 b4< J@k @[H@DBNuH@RBDBNu4<Ѐ[DBNu4H@Ѓdh`^HCH@:">H@`H2g&HCH@:<HC>H@Ѓd(`HCH@:H@r` gDBgkDE`HDBDEaBDBNugDBa8DBNutNua 11!Nux`xa`a` 24&8:HoHoEBJAgJDfr:g,|HC҅H@:ۆ<HC>H@Ѓd`vHCH@:H@`fgDBgkDE` DBDEaDBNugDBaDBNutNuHoHoEBz:g|HC҅H@:ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuJBj^tNuk(g.JBjDBAр[SBDBjNutNuAр[SBkNuJlNu0gH@rJBkB JkЀ[`DBЀ[`J.;gP:pr4<Nup`0xa2`Ba411!Nux`4 24&8:`& 24&8:`a&8:` &8:@ABJEoHnfNup`0HtNugDEDBHngDBEBkQ*HEJDg?<>0rHGGdHGGdSWDуdi?<>0rHGGdHGGdSWDуdi ?<>0rHGGdHGGdSWDуd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<,>CEdGH@0r`xJCgz?<0rÐdSWЃdi?<0rÐdSWЃdid?<0ÐdSWЃd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<0riR?0i?`?<`@$g\kdHfiHNufnpNupNu"lDaDNuJnDaDNuzxeҁ؄d`ef Nup`.0"_KL0MM8I^O:HQ <-H*,`N,E^d d3 d# d# # d# # # # d ALH dAL H LH d AL`H L|0H>L|H>d~# # # # A`@ALH L|H>L|H>L|PH>L| H>L|H>L|H>L|H>L|`H>L|0H>L|H>QL|Nu$H$&"BA -KaXA"f B &nNuH>dd2d"d""d""""d LHC dLHLH C@d LHL|H| L|H|PCd~""""C`:LHL|H| L|H|PL|H|L|H|L|H|L|H|L|H|@L|H|pL|H|L|H|CQL|Nu`8a8A-Hhp apMa=@F?<NNTT@A0r p0Q`pdr ta0.F=@=@ACp,2QAp 2Qa a2`p`lpeahp`(p?a a\aZaHz?< NA\?<LNAfCR2A0A82r22aB"<0<NBLNurt=@:=A@=B2::(   F..26"8@"PQ1!P1P!0PP`0  q#p"A ӘQNu|^|  R^,T:Hz(` NHz ?<&NN\Nu9gNuWNuaaaNuNuNupc?a0QNurdd6Ag,B(dB(dH Ac<a`tgBAp`NuNu?<OA`d?<IA`Z0<H IaLt Ig Og Ug Ag Rg*afNup`ap`&0affHRaj>Er$Wgr STD:gr COM:g r LPT:f2FA$_0=@D~CA0< BhaB2"pNu$_AF Ge><QBAFpNuahgzp=` a\gzpaTaRFBd&8*L?aT<aSF Be BgQRB`RAdR e <rRF&0xaCձfEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`HQ2.d Aeg>r C 5e&!R 0c 9c0`<R"_`VC0 Ef"_Nuaa/ CFr  g 00VJAgB @ nN @mHJ@j0.4DBUBk0QSAg Q.`S@k 0`0BAF "_Nu.WAkQA 0g`prt|P;Q:  g +g -f .g40  b 0e 9b da6`RF` .f 0e 9b daSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`ZJjDDDS4<.aFJFkSFk4arQa2`&HaFFaZQ&8*L/a,H܆jDBJ.:gtBn:Nu @$@JfS a`QNu$Aa`QBNuHz a J`Hz avH ` HPHQ0(ikah $I _aPIUd4Id4Id$Id `$$$$Q _Jf,a Id4Id4Id$Id `$$$$Q @NuSaIdIdId`Q @Nup `/ a$I> _aG` VNuag`af`ae `ac` acpNuadpNu/ av$I> _al4Ae4v` VfANuz`z `z8.^n\Dn\@Hp tr=ED`Bp'rta n2rt6(SC0(S@apaB\papava0pav`v`v`v`-@prt` v`vj`v `-@p `v`p&rta=n-nNuv `v`vh`SCS@AB8Hp=@0<rt`@H\Nup`~GGGBCCB@???<NN\Nu((?<NNT. n20(LJvA HA HNup @d"X Pe68:aHQ?<NNT"_HV n2MF-@ @6H H00(L=C=B&<RF<>RG=GYfx-IC=C=C$tBft=B=B(tFJ=BBBB*Do>Eo:@l6Al2DDk =DVBnDEk =EnBn@cVo Acno,_NuAH`/=@a _a r]Ak024E$ Bb5B5A6CC5CK5C:8AB0000DkxEkt00A<:d>:bSFSGFn\GnXDDk0BhDEk1EBh Fchh Gchh0hb"0hbpmrt-|'lH-|'L`tNu-HN ?<NNT-@XDbDEbEBb=ET=DV-|PBLBp n20(L=CJ?=B^C=C\=Cj@drAdnED??RGRF=GF=FHtGJ=BltBft=B`=BnGOpЇЇ b na 222-IfHVMF,_Nup `T np` ??/ a , > _a 4$FAFp_@[000][vx`* [g" ]g |g QSx` xQSrQ][vx`* [g" ]g |g QSx` xQStQ]BAF0-H,=@p4a2HNu 24DBaDB11!Nu 24DBa DBNu 24x6o<Ce(FC BdЄeNu B/dHDDdRdQRBNu&<:<`g BbUC BcjNu BcHDDdSkg Aр[RBNu0ftNuB H@"jNu Lx6oFCe0FC BdЄe!Nu B/dHDDdNAXOJkpNu0< aF`0< CF2p`p a0`p CFp`aCF"p`Hza `Hz"J`B.@=|DNua.@FpAR@C`d @H` @HHy/aaR"H`2Hy/`Hy/ 24`@H` @HHy/ara"Hav`Hy/`Hy/ 24`B.@=|DNuB.@ab=GDgNup`a`a0CF"E p`Jg$_a: HN$_a: HN$_aBHN$_a؄BpHN$_aB0HN$_axBpHN$_alN$_ab؄N$_aXN$_aPN$_aF 0HN$_a:؄00HHN$_a,p0HN$_a 24N$_a:p 0HgpN"X I"_(*UGk*<(؆QNp`p`p` p`pJPg`~$_a!HN$_a؄1HN$_aHN$_a 00N&8:` &8:@ABHaNL8a0L8 DBaL8O <jDFJEjDEFn ffAbtNu&8:a`&8:a`.@<.DAp$I"t Q k"RGef~`SG * g *fSG`<.DjZ\FkBJn`g Fgd Fg^HS&I.aQ`p???<NM\Qj&_NuHQ/?"bf "_&& &6NHyNMXJg HyNMXJNuagpNua Nu"H Y0e$b Pr@Ag$D!("fXծ"HNup`rap`QNupaNu4pa2Nu$pa"Nup2(g"P@g2RADAH""n"r2gZAe2 1@#-I"Nu1@NuAt2<XJX[j]`p`a."n"dp`paNu?pa2Nu/pa"NuH n&$n""Hgr k&@ S`g^ k#&@0+Hd3 Hd3 Hd# Hd# # Hd# # # # Hd`# ALH# ALHQ&f-I"LNuat ."NuaJAfCNu"X2ebP6gHRC(D#HNua@gn` a4gb0`/hd6a$ W PHd2Hd2Hd"Hd `""""Q _/a _Nu/hda$ W2( P"IdHdHd `Q`r@/JAnr W4(Ae4RBBc0?a0$2 W PA`HP"Xp0g"r~ RAfS@n _a`1V` _NuJG06#f &#o-K"CNk"c" C gT6f&#o-K"CNPv6"cgRCC(D#8`E"e a"d"_&B[NpZ`AFtЀvQBNuAFt0 9c^QBNuAFt 0QBNua`a`aCF 0gS JfS`>@a Acr `@a A cr `@a\ A cr `N"$H`RHa@LHP?.d=hdN"=_d2 "@$Y4Ad2`0Q @Nu@`r ??ar"P02R@H`2Q NuaaJjtNuaHPa pJk NuCg.BJ@g  g &g, $g %gN#BNutNuRpt`2Rpt`Rptr ae OgX Xgn HgSRB ae Fb$0k  c_  c b退`tSHka0NuRB0 b b瀀`RB0 fрd`ap`ap`ap38B8Nu>.D<jRGg>VGg:TGjp` $HPa0CF$IpR@  f _aHd2Hd2`"QNu`0<.DHSGFaAEg f< &_Nua`ׂNu.dfabB8=n`r>.D<jRGg:VGg&TGjp` <.DaAFa$JkNup#` t z fa2a` z f a"aAFa  f#8JkzNu0:g0.D<jRGg(VGgTGjp` <.Da&` z faav` z f aa^AF "g pR@0 ,g  g  fHp`:pR@0  g  g "fR@0 ,g  g  fHpRU@"_  f#8$H _a`QNupR@0 ,g"  g  fa~ (fR~Nua ~ `a~NuaJkHQ ! gRf _NuXX~Nu0j \@??<NMXJk .dgp Nu` <.DHSGFa ,g gAEf< &_Nu ."Ff +"g ,g`$ a Nua`a`a`]A=ADNua`a`a`H0aL` H0aL`ap|A((@؆*.&|؆kD`&a:,k.."*B(.&؅kr-K/.?<INA\/?<HNA\JgB n""n&ۮ&ۮ"$I`&bۛp0R@@b&n CXb:` .&/?<HNA\p=`n?<%NNTNu .2 @Nu0.FHNuJ@j0.=@F=@NupNBT@HgpNu 24JBkCkNuCktNu 24JBoSBNugRBNu2(gbc  P"H`Nu/0Ha2  _ PSAvjx E(Wf* ae zb Q @NuBnp`pBnp`p=| p|=Fn@=@b=n`raHj=Ah~`:a JfBH@ RfF.f Kg" Mg sg tg Pg Hf~`xSGjtRGFcn>`jAF gp gj g grffnnpenbfJ.fj6pRGFc$SG` J.fjpRGFcRF` Ff`> `?~ap a0p a*0Nu|``CpE`bf`FgRGJGgSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0NuagNu4.rf?HyatNM\Nu=|D`LjahzEfpadppa`AFEg0PaEfaFRE`ܾEfp a@a8?nnnp a2RF`<annoS@f nhfSnl=Ah=FnNup` papq4.rf?HyaNM\Nu=|DHaLNu|A0"P2(@e2<EF`QHP=|DJ@g$abAF$HpR@ 0 f _av`QNup?ap a~2<|0`C&pHQ/Hy@NA NuC pa:NuHQ/Hy?NA Nu&g4 FgaDgJAga2< R@AdSf0Nu0a2p Ce`&g4 FgaJBjagPAe CbRa R@Sf0Nu FgRag JBjaҰAeaJAg RP0 pNu` Fg6agJAga @eaRP Nup NHѨB?<?/?<BNAO JkLLNu&8a*JBjaBJAg Df*ڃkd0Nu DfրBH??/?<BNAO LJk!@NuHBHh Hx??<?NAO LJo ѨLNuk:fp`^k: g ѨNuBHPHQ/??<?NAO _JoѨfNuBHPHQS/??<@NAXLfѨNuJkp%`hB9`$H EaA AerQBL@͉H Ia*"H _/ a a _/ ?aAF-H AerQB2"_A&-H A e ` \gQBa9gaZe -|p[`pZa؞ajAF"H0.g "Hg \f`A&fS !.gR EF _a `QNuHz?<&NN\ @Nu x NuA@Bh`pA@az n@!|}Nup#fpNup`p`#NuO?// C4<a./J _ta$/J _a/Jaܦ?<KNAdOHNu$Ia JBc2QBB"HNuHz` Hz`Hz&$A?<&NN\NuNu4Nu$Nu?a0` ?a2@@a` a Nu4.`Af n2LR@RANu4.`g S@SAHNutbpbr??papYa0a0`L.pEM8gP`LJg&B.C`a8aD*9fap-I,=|p4aHz*9g ENp9` _a &nO:NMM8I^KL0$<Nu[1][Error +111][Return]EL. g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNu9HHNu9`D@v`v??NMXJNuJ@k??<NM"UAf J@fH@Nua^j0fpNu\@`aJ`]@><CF Ipa<0HNua.`]@><CF Ipa Nu?|`?a 0R@f|0a(HJFkHPa _Nupo`,HSHP&I>g\SG??<NMXJk Q _t&_Nu&_`aJANuag `af`apNuapNuC`C``C` C`CJhfJfRRRRRRRHP? @CFH~8:E#P&<2 `b$bYEf` RAf rЁЀ`$Ѐe "ЀeЁdpNJAkfgRer?DDЁaAaZ8$HX :CFE` YEjT"_$P"2trDDd0d d d` QjNu`aDa DNu na^ K"ng42 $`gk2&Hg Af deђ$`ebѐXf&nNu AgebѐA``-Kx$ n&$n""Hg8" &Ak cѐ S`g"" k#&Acё2+SAI3 Q&f-I"&nNu-Kx$&ր n&$n""HgR" k&Ac b S` S`g4" k#&AcbrkX`ޑ2+SAI3 Q&f-I"&nNu"H YJQfNuBQ YH瀀aLP|HPGK,C6[[[C8[[[a68v6Cv6C[RCF8[[[a@6C[RCF8.L L-KA `z$I\bfBjQNu$YbfBjQNu؄*؄؅CH`$؅X`$_  IaHR"H @`̘؄*؄؅AHNu؅X`$_ IaHR"H`(Gfa_Ray.SyssalsahError Please report...Press Any Key ...GFA-RAYTRACE 1.6 / ShowaninSelect a file - Cancel to exit\*.test.GFA-RAYTRACE 1.6 / ShowaninLoading frame Not enough memory ! Unknown file-type !  p l 0 fppH LB0H t\((@H$p<| *l sul 1 <`~qx?~p?`p?@~  0????0>???08?xxx| ~p|x~@>@ppp ?80<<<~p6?<809?0L? 87!|9pp >~< <& 8 8@8>><8>><0>>0~@~@<?|0>>| ?>x>>>0??|?0@x??2x~~~>>2p~>>0p||0@~~??||@0@??||@0`?~~@0`? >>@8p? `|??8p߀߀߀  >???<x<00???<x|???><| ???0>>~<~~~@ @@>~~~??  C?@?@@?00'`N>|< |??>>8?>x @ ` ??`? ~ ?~  0? 0N|ecx3<?Y ?00<Ã;0<0?@g@?@ OO ^#,2x` gh? ArBA =2 ?x`@\4] |1(@,3< ߨC]O!/E!wG~=.+@@LA# o?L4 Ǡq=?`  N>@s8 L |x  D?@;~GH@@ z `$ ~IIbg@@ 4 `1?}@ SxO>h 00x<\C @#5|  0P so`C A]S,PC@P0`?X? WHlP Phii_7 &i 80@=gdH(C  1.1c11z:ߞ@# `8(C#|1Ö ?Pd &bTMp;{?| P@J:ZA@qzIx0 "@"w#w 33@p{I0q@ < (0&0@p +"䀠`"xJ~8~4~@7v 0  am`l ``xxx|N Qa }@C\ !DDD  ք @n@$$?? @?._\PP* )P0t { _'h}π`0 ,p`HH2Ih >L00 HH3>33$S|\\DOJH???N(  1Go#p[xbc1"?>?N'` CC@bQ( &`- <9 `q;CDTt `s`;11ao0 !`snPmvvyE iQiPO@hh p"`V ;O;??(?8/CC+&݁ K@0[k%`e@A0:z` _1s1|ȏA@0 & @ @~:*8T*>A А!?!>&s 0&A@Xf(pML'LȈ 7ȀFfF?o 5'GK8܂AY ` 8GQ B/ "?Wd@@&)GȂ88x 11'Nc6c:}44 wK?&Ip rč;`0 >>A''8c8!aaaAr?}eŁ#86P@ B|9 G:^ DT@Op0=„0[ny`;g^?q$]$yf``ǰ|@@@P[/h'Н b lAx@wD@<Q0 @=``$ -1, ?A1 nowyt_: b3#''9 `dd >gOx/y '߃x|qqC p1={cXVXc}a``|p|p ?>2͖-o?22`b71yttr3s3o33`<||7E*?v# ,PVJ;Ahp c8{dd0OL$1ɀ@`;a:_M1^C#cpks }?@%\:gÌpda! _<BA!N t{4 ifi#ppa7_O8ZH17P0 @_88د0u\p\-f{5PDC(p%%8 <||D@PO@P#~@<0L xi;>c{7 @"(~@ߟ(Xjx=q=~??!?<<t@#~M~L ; 2@gaN%D]'s^xx11!RRVOU9_zr"Nn@ 2 O dPeފps [34;2BH> )h`ΈqQB>3@k$T۠@Ha("‡(`` __@/?d]X.@. 4H;``(?e?>  D$@~ @ la?o=n qYS# <>@8~;`C&h <xi8P|! ! P?HCY<8p0z/߃_ހ 9@888&`X?0CǰCo?rR P'pr 8@F2ߦ YQ?o?bz,, ~_^tr)<oGx@];j Y|?>qϾ| HG@5p`pk<??t?@g XhD*XAAx(! !!kkk~+o>xxpxy8`` _? ?S2 w`@  ``N@y-ccca.>q w͉ q w ?|O1 @2;$?f@H??{9Z (( nr X @@4on<``  :26><; < 7`b }k}??8@P㺜{`E(  H?@#~#! z08@ip uv(?;;ml:l*āg? <@@@{{!_\m?lx2 b?^L0q0N+?  www? a `0 XH m3L XD<elkǀǀOGMM@H"HH HH HÀ0~?@ ?d@@000b@?\<>b }?`@܌s/ ? d,0 _AbHbHL\:I tHx@}/ǹ7p1@ $ 10Q 0#\@|+'/L;|ă>Fl>>} 0axǁ8x/E9|$H  H` 8 ?s~ I7<0Q1xu_CL02gP?_"c_<<}߂8AH0 ?Ͽ0ݏ}#??p|p" 0DC>@gh*'HZ爘G y& <  2@07px/?Aa.?~O<<Cqq?D?=?^2P\/(uhHM@<~,o 0`> YAxY?~@~N a`F><oB=3@ A ?@_@?p;?Fw@Cxg8p?\9@U2 <`sxca@0Fp =hv~Qtwdxǃǃ8|ڀڀ)``PqN1~Gw( Q .f1`0 L@72 _ <S2` y   iF?;0 EE?||p0 wsǀ8?Ad}dO0 o>s(yc !u8@?@222@'O O 8 ձ6N!z0(+aH v6peOβH`~;~;9@6N6q9| `@D@ކ2x0` } |QاePCC?K810΄> 2P T<ݿ?:= B}!?FaPst$0?/@IFt@A?O7Ȃ}>Sf}.|у~=J?@|_~ 2w@_HÆ@<aIag@0xnC!'c'wЀ/ y>;>G8?G`#pp[;8Ri fOŏ5pN9 /?^\/PI?!gcW(xpFހ # yLl-M?|B DN3Jp(מA(&&x~׃|89toH~~P P xg>K?x??!ssrrs#ώ0q0q 1 x1 2V @_H'Qw[?{X8804?oX//< >>?L3?9F?Dk ^! >>sp0C"'X   P1>@@sPH_`9q 3cX~<e99z r#=?=DNU?ll}#@x 'll~UÀ<Pb'??Aƾ9S7]!CN20   |0 ;xH/A?'ap@ yYyIy"q/rϏIp=pQG?x19߿߿@ HvOOηαH11 &&;;3'xQ5 0N101v rr~rB@@D@ 1 >8?C!~9ƀ q B6((F_x'< og/###   @ ` ><8 ߀~L?B j@p㢀__ d?|  ߤ1/ vV ?0@?< y9-byL3};~~#(, @޶I!@@@|05A ~AA@OoIɀD?a?({ ||=? x@``_`C<??߽B ?8{_?@?`c |$A?@0!= P>@}${{! B>`{8kn@!?I ~A @9'?_bH_'A}}p3 "o<~?p!>~`kh!?o!~G8 >@c Q0z02> ``gϘ0 CoaA@00}}pxxoo@lA@ /Af 1O^` gi0yA} 0Csp}`?>I?@p0i!G=s??;8$>\!0 CH~xbrrbrrrstssRbrrrssttsRbrrsstttssRbrrsssttssRbrrsstttssRbrsstttsssRbrstttssssRbrttstssssRbrtutsssssRbrtuutssssRbstuuutsssRbcsssttuuutRcsstuuutuutScstuuuttuutcstuvutttuutcstuvutttuutcssttuuvvtutcstttuuvwvutstttuvwvuvuttttuvwwuuvuttttuvwwwuvuttuvwwwutuvuttuuvwwwutvuttuuvwwwutvuttuuvwwwutvuttuuvwwwutvuttuuvwwwutvuttuuvwwwutvuttuuvwwwutvuttuuvwwwutvuttuuvwwwutvuttuuvwwwutvuttuuvwwwutvutqrrwwwwutvutrrqqrwwwwutvutrbqqrwwwwutvutqrbqqrwwwwutvutqrrbRqqqwwwwutvutqqrrbRqqqwwwwutvutqqRSbRqqbwwwwutvutqaSSbRaqRwwwwutvutqaSSbRaRSwwwwutvutqaSSbRaaRwwwwutvutqaSCbRQQRwwwwutvutqaCCbRQQRwwwwutvutvuqaCCbRQQCwwwwutvutvusrqaCC7RQQC56GgwwwrtvutsQaCC7RQQC56GWgwwwtvusrAaCC7RwwwAAB567GWgwwwvusrAaCC7RwwwAAB567GWgwwwusrrAaCC7RwwwAAB567GWgwwwsrrrAAC37RwwwAAB567GWgwwwsrrrAA237RwwwAAB567GWwwwwsrrr1A337Rwww112567GWwwwwsrrr1A337Rwww112567GWwwwwsrrr1A337Rwww112567GWwwwwsrrr1A337Rwww112567GWwwwwsrrr1A337Rwww112567Gwwwwwsrrr1A337Rwww112%&7Gwwwwwsrrr1A33&7'www112$%7Gwwwwwuscb1A#3'7'www!!"$%'7GgwwwwbRvusc1A#3'7'www!!"$%'7GgwwwwbRvutc1A#3'7'www!"#$%'7GgwwwwRRvutc1A#3'7'www!"#$%'7ggwwwwSRvutcB!A#3'7'www!!"$%'7WgwwwwSRvuSRB!A#3'7'www7!"$%'7WgwwwwSRvuSRB!A#3'7'www7!"$%'7WgwwwwSRvuSRB!A#3'7'www7!"$%'7WgwwwwSRvuSRB!A#3'7'www'7"$%'7WgwwwwSRvuSRB!A#3'7'www'7"$%'7WgwwwwSRvuSRB!A#3'7'www'7"$%'7WgwwwwSRvuSRB!A#3'7'www'7"$%'7WgwwwwSRvuSRBU3333P"uU"uTD3DUpqSTDrrbSTDT3"U3333P"uU"uTD3DU"qSTDrrbSTDTD3U3333P"uU"uTD3DU"qSTDrrbSTDTD3U3333P"uU"uTD3DUf"STDrrbSTDTD3U3333P"uU"uTD3DUf"STDrrbSTDTD3U3333P"uU"uTD3DUf"STDrrbSTDTD3U3333P"uU"uTD3DUfw"TDrrbSTDTD3U3333P"uU"uTD3DUfw"TDrrbSTDTD3U3333P"uU"uTD3DUfw"DrrbSTDTD3U3333P"uU"uTD3DUfw"DrrbSTDTD3U3333P"uU"uTD"3DUfwDrrbSTDT3"U3333P"uU"uTD3DUfwDrrbSTDT3"U3333P"uU"uTD"3DUfwDrrbSTDT3"U3333P"uU"uTD3DUfw"DrrbSTDTD3U3333P"uU"uTD"3DUfwDrrbSTDT3"U3333P"uU"uTDDU0"3fwDrrbSTDTUDU3333P"uU"uTD0UfD30"DrrbSTDTUU333w300uU"uTD@@DUfw300"STDTUU333w330  "uTD@@@UfwD00"3TDTUU333fw3  "uTD@@0DUwf0 "3uDTUU33  0Ufw"uTD@@0@D3 0  "3UuU33@0@w"0uTD@0 UfD3 "3uUuC"U33@ 00fw3"@@ @ UD00""3DtUDU33@ 0 @fw3"@ @0UD0333sfDwDU3 @  fw3"@00 UD@"3butw3U3 0 0f3fw3"@@ 0UD03""TD3U3 @  D3 3"@00fU@ """3Dw3U3 @  3"@00DU3@  ""3f3U0@ 0U 03"@ 03D UT"33wfU 0U Uf3"@0@3D E""U""3sU0  30UfwVD0@@0"D EWQRD3DU0 030Ufw4UED"@0@"D3V0A3D"U 0"DWDwfU@03EVD33"D""U@0@@ "W3wfU#03EVD4  ""000"EV4#fU@@ 3DU"0"0000 "4E#fUD@3D"0"@ 0 3"3UD0@"D# !@00DUD"3UD 3"0! 00DUD"3!UD@ "3UD !2@ DUD UD0 "3D !2@00D  UD "3D! !200@!  UD  "3!!2 !0   UD0"2! !2!0  !  UD0"0!!2 @ !  UD00 3 !2 !0 UD0  "0!2 "0  00UD!"20!2 !"!020UD0 "202! " 20UD0"B3 02!0"20 D0 023" !"300"CD0 @23"0 !"0 CD0"3" !0 30D00@"3""!0 0C30D0@"""3C20! 0 03C@D00"3""C@020"0 @"""D23PD"""SC20" 3C00""" "DTU3S2PC"" 000"S3 0"""D03"SS2PC"20 ""D@0 S"""3"@0PS"2PC" "3"P0""""S""D"P@3"" 2"3"00"""""3D""PT""3"2"""0"""" D""""3"""0 "C@""3"""0D"""3""""@P"0dDpt" ""@3"""""@P"0"tuT "Dp"U333"2"S@0"P"00"p"uD"t3U33Tp""""P@2P0"""uUpu0t3"33DpP""S@"2"S"""D30" Cu3U33p""S@DTP0"2"""T3upD3u0U"33PTupD"C""23"D"""3P Tpu"33w3U3D`d"PS"""2""D"0p Pu333U"3DTu333"dPDS""2D"0pDu3333TU33pP"uD33`d@T""2D""P33D333Uu3"PpT33S3`@DC""2""D30pP333"u3Uw3D33"3"`T""2"D"3pUu3333"T33PU33"""3@TD"2"""D"3pU3U333 333"puT3U"3Dd"""2""D333"PU3330U333D3p"U"3"Dd""2DU33"PU333333U3D"p"U"33w@3"""3U33"3DPU333 U3"333Dw""3"""33U33"3DPU333"3D3U33Dw""3"3""3TpP""3DPU333333U"D3"w""33""3"p"33Uup3U333 3"P33Up""33"3"""p"P3uT3U333"33U3p3T"C"3u"P""3"p"3uuT3U33333"pU33u"S"3TP""3"p3"UuT3U333333up"3u"S"3U3"""S2pP"3UP3U33333Dup"3u"S"3U"D"""3p"33Tu"3U333DUp3"33uTS"3P"D"""pP333u"3U333"3Uup33DTS"3"P3""S""PU33D"u3U3333T3UDp"3TS"3uD""3""33UDUp3U3333"u3DPU3TS"3p3""""3""3U3wuU3U333"p33UD3uTT"3"p3UDC""33U33TuUU333"3p33D3UuT"3"p33DC""U3333upw333"3UTP333pu"3"U3D3wPTD333Uupw333"3P33DU3up"3T333wPT333UD3w3333P"Uu33D3up"33"UT3w@DTU33"PD3333U3p3u"3D3up"33U3"`@DTU333D33333"PpUTu333up"3P"3UD`@DT3wp3DU3333"P3u333pDup"3U"T33DDTU3333D333"pPU333Dup"3p"Uu33DTU33w333D333"3UTuwp3Dp"33"U3DT33U333D3D333"pU3w33Dp"3u"3D3UDTU33"333D3333PUuT333"p"33pUD"DTU333U33D333"puT333U3p"3P"3UDTU333"333D333PUTu333"3p"3pU333"DT3U33D3U3D333"pPuTU3333p"3"333"DT333UD3U3D333"333UuT3p"3"p3U33DT33U3Dw3D333"P3333UDPT"3"p333UDT3U3D3w3D333"33U33DpT"33"P333UD3U33w3D333"3U333DpT"33"U33DD333w3D333"3U333DwT"33"U333D3U3w3D333"3U33DDwT"3"3U33DD333w3D333"333DUDwT"3"3333DU3U3w3D333"3U33DDwT"3"3U33DU3U3w3D333"3U33DDwT"3"333DUUuUP"3p3D3333"U33DDwT"33"33UDUpP"33D333"3U33DDwT"3"333UDUp"3P3p333"3U333uTpP"3"333UDUPp"3p3333"33UTpPwP"3"3U33DUww3ppww3>`Ha<9` g`?/8p/8 A@C <"Q xN <? Q"xNH<#R0<2<AV"QQ!pPP6<0<,aj6<0<f|H&yRIBK 6<aaA9 gAJgNNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqNqNqA0 A 0A NqNqNqNqQxaLRNsNCNsNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqNqNqNqA0 A 0A NqNqNqNqNqQta$LRNswwD.Z\Nwfl 4 1 2 1 0 160 159 -70 0 0 0.4 359 354 2 1 1 1 0 0 0 3 1 1 1 2 90 0 582 -202 428 0 -243 -2 57 1 -188 7 1 1 1 3 70 0 20 0 0 415 -234 250 0 0 0 7 1 1 1 3 70 0 20 0 0 410 -323 253 0 0 0 7 1 1 1 3 70 0 20 0 0 412 -410 253 0 0 0 1 1 1 1 640 640 0 159 -1 -93 0 10 0 0 0 10 0 -1 1 0 0.63265306122 66 0.61224489796 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 0 -1 wfh 19 1 2 1 0 170 35 37 56 70 0.3 337 353 2 1 0 1 0 1 0 7 0.8843537415 0.8843537415 0.8843537415 0 70 0 20 0 0 479 -320 320 0 0 0 7 0.62585034014 0.62585034014 0.62585034014 0 70 0 5 0 0 460 -305 324 0 0 0 7 0.62585034014 0.62585034014 0.62585034014 0 70 0 5 0 0 460 -335 324 0 0 0 7 0.9455782313 0.9455782313 0.9455782313 0 70 0 20 0 0 503 -320 320 0 0 0 7 0.9455782313 0.9455782313 0.9455782313 0 70 0 20 0 0 529 -320 320 0 0 0 7 0.9455782313 0.9455782313 0.9455782313 0 70 0 20 0 0 551 -320 320 0 0 0 7 0.9455782313 0.9455782313 0.9455782313 0 70 0 20 0 0 573 -320 320 0 0 0 7 0.42857142857 0.42857142857 0.42857142857 0 70 0 5 0 0 459 -319 313 0 0 0 1 1 1 1 940 940 0 75 -65 -25 0 10 0 0 0 10 7 0.51700680272 0.51700680272 0.51700680272 0 70 0 25 0 0 499 -409 351 0 0 0 7 0.49659863946 0.49659863946 0.49659863946 0 70 0 32 0 0 499 -410 323 0 0 0 7 0.52380952381 0.52380952381 0.52380952381 0 70 0 23 0 0 499 -408 374 0 0 0 7 0.43537414966 0.43537414966 0.43537414966 0 70 0 21 0 0 499 -409 395 0 0 0 7 0.45578231293 0.45578231293 0.45578231293 0 70 0 30 0 0 499 -410 444 0 0 0 7 0.45578231293 0.45578231293 0.45578231293 0 70 0 39 0 0 479 -380 415 0 0 0 7 0.45578231293 0.45578231293 0.45578231293 0 70 0 39 0 0 479 -440 415 0 0 0 7 0.45578231293 0.45578231293 0.45578231293 0 70 0 39 0 0 516 -380 415 0 0 0 7 0.45578231293 0.45578231293 0.45578231293 0 70 0 39 0 0 517 -440 415 0 0 0 7 0.45578231293 0.45578231293 0.45578231293 0 70 0 45 0 0 500 -407 448 0 0 0 7 1 1 1 3 70 0 47 0 0 599 -230 338 0 0 0 0 75 1 65 1 228 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 0 `=SKO` EfvM m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALNbHz6?< NA\pdAxr0XQ)K\NNr6lvHHJrBjNuHz?<&NN\N< |a6RGk0Gg`a(0GVfA1G<ap??<?<NM\Nu??< NMXNu&8*:EENuHn 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuNpNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@Nz?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8N`6.JgtBnNupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N`<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A dNAXJ@jNNuNJ@g,A,BBgHQ?<=NAP FJ@k??<>NAXtNutNuN` A$ HJo d*b` QjNuQjNubNNvNh)@p `H@)@prtNvAHplrtNvB 2pNfpNZpapaprapalpalpalpaTpaTpaTBp'a?<NNT@B){L9|0<rtNvpapap9@p`pvNhv`v`vj`v `v`v`v`?0<}N& ?<NNC`&?<NNT"@ C <}N`N(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4N(HNu*( INA)H @depd ae zb QB DNA\)H @ e` ae zb \gQBA BhNpZN(A BP"`#|}NA"H0,tg"Hg \f`A\fS A ENAR@H`2QNu@9@JpNN("H2@N.0H@N.YdNHAN2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NN~"l`dpNAtrdJhk\QpaNH ld$l`"Hg0 k&@ S`g k#&@0+S@H3 Q&f)I`LNuApNN$Nf$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0Nu _0HpN _0HpNE ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNWHNu(* 0(iNf$E 4R`Q$D 4R`QˈN DN ENua NuN IHPg"B  g &gNxJBjt BNut`Rptr ae OgT Xgj HgSRB ae Fb$0k  c_  c b退`tSJBkNhRB0 b b瀀`RB0 fрd`0H 0 0H@Nu?<,NATAN@pN?<*NATANp N"H2X@N:0H@?N:AAN2p <0Nf`QNuHpx$ ld$l`"Hg8" &Ak eѐ S`g"" k#&Aeё2+SAI3 Q&f)I`LNuHRp` HRpJQfpNNq Y QfdЀЀ 0NuNNNq Y Qfd ЀЀNuNN8$_& Y Qf,d,փփAdRdRBABJk 0NNNz$_& Y Qfdփփ!8NNN$_& if"QdփփHRN.NN~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@/ l\N NJL"2` NqR YEjrd0` SjN$_NЀЀ 2$4BBN$_NЀЀ 0N YQf "_Nq*eNN*< NqbІSGfN$_NփփHRN$_Nփփ!8N YQf "_&Nq*eNN*<&NqbֆSGfN~$_NЀЀЈNp"X4g S`"QNu" KC`e N~`d \N l\Ӭ\ NupNd d3 d# d# # d# # # # d# # # # # # # # dB` # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # QNudd2d"d""d""""d""""""""dB` """"""""""""""""""""""""""""""""QNuPj0,lf$J,nk l*fp?N"p N"9|nNA0,l2J,jk 0"fZRAR@ 0"g 0 f` 0 g 0,f9@lTll`BllA"H"g"A4`Q"AA 0! NuS@R@ 0 g 0,f9@lRll`R@ 0 fQj`NxNBll?<?<?<NM\NHQN.&g ! ge l*g l*gpNNu<,*?Hj\F FfN`H FfN`RGFc8>`4A g6 g0 g` gTlfelhgFf2pRGRFa`a,` `?~ap ap a 0NuCpE`bf`FgRGJGgRSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0Nu?<?<NMXNur9A(HN"LNu0,^2,`NzEfpaRppaNAEg0PaľEfa4RE`p a2a*Efp a(NxldeS@f lbfSl`9Ab9FdNupapqr`p`C l ", Ⲭ dfѬ SA 0! Nup"NNN.JfNup#`NNak NupNuakfpNupNtddA0oH?<?B?<BNA Jk.,?<?B?<BNA *kBg?/?<BNA JkNuNp`pNu)H9@Jp4N(P'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8Nh  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C]fApNNNHP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Fehler # ][Abbruch]\f.B &lX)K\)ld` lp ,BQjNup(NXYp-KNu"l`Yd&-KNN~"l`YepN&#k"C-KN"Cփk փk2##`փk"`2`& $Y8gHRDD*D%H8#$c2g# HRDD%H`p"l`Qd&&| NuN~"l`QepZN,jJk `BffAge Jj 2$NuJjNu,jJj `BffAgb Jj 2$NuJjNu+|;+|P/-HxpC~N/-HxpC ~NpC큎NHxpC큔~N -CN/-pCv~N -CN -CNp C큸N/-PpC|~N/-PpC큂~N -PC큚N -CNA - mN5+| -YnN5+|pANBpAN/-/-/-/-/- -C ~NDC ~NN`NqNqN`NqNq -_nN5BpAN/-Hx -C ~N$//-Hx -C ~N _N`NqNqN5+| +| - AN/-/-pC ~N$/ <@ _/-/-pC ~N$/ <@ _ѐ/-/-pC ~N$/ <@ _N`NqNqN`NqNNN\*.wf?HPNtest.wf?HPAx""_NAxNNJBfN7AxCvrl0f|pP~ LfD\Prwfh 2 2 1 1 0 100 215 -259 0 0 0.5 1 355 514 1 0 1 0 1 0 6 1 1 1 0 70 0 479 -319 320 0 41 -95 0 -80 -88 0 359 0 66 100 0 1 1 1 1 1240 1240 0 159 -59 -270 478 10 348 0 0 10 7 1 1 1 3 70 0 53 0 0 477 -151 261 0 0 0 0 40 1 -121 1 66 1 0 32 1 169 1 -46 1 -1 -1 -1 0 -1 -1 -1 0 \SPECTRUM.\GIRL.SPU 0 -1 wfl 2 4 1 4 0 100 215 -259 0 0 0.5 1 355 514 1 1 1 0 0 0 6 1 1 1 0 70 0 479 -319 320 0 41 -95 0 -80 -88 0 359 0 66 100 0 1 1 1 1 1240 1240 0 159 -59 -270 478 10 348 0 0 10 7 1 1 1 3 70 0 53 0 0 477 -151 261 0 0 0 0 39 1 128 1 156 0 0 40 1 -121 0 66 0 0 38 0 -25 0 -107 1 0 40 0 117 1 -45 0 -1 -1 -1 0 -1 -1 -1 0 \SPECTRUM.\GIRL.SPU 0 -1 wfl 9 2 2 2 0 160 159 -100 0 103 0.7 0 330 2 1 0 1 0 0 1 10 1 0.85714285714 0.85714285714 0 70 0 479 -320 320 61 -51 0 60 50 0 479 -320 277 0 0 0 8 1 0.85714285714 0.85714285714 0 70 0 479 -320 299 18 -12 0 15 16 -1 479 -319 229 0 0 0 7 1 0 0 0 70 0 15 -320 320 479 -280 321 29 -13 0 7 1 1 0 0 70 0 15 0 -51 449 -333 318 0 0 10 7 0 0 1 0 70 0 15 -373 321 506 -319 322 3 -28 0 7 1 0 1 0 70 0 15 0 0 424 -310 328 0 0 0 7 0 1 0 0 70 0 15 -353 319 479 -354 319 0 0 0 7 0 1 1 0 70 0 15 0 0 457 -297 322 0 0 0 7 1 1 1 0 70 0 15 -65 -25 479 -320 333 0 0 10 7 0.36734693878 1 0.81632653061 0 70 0 15 0 0 503 -339 325 0 0 0 0 -123 1 180 1 228 1 0 -129 1 -135 1 219 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 wfl 29 13 1 4 0 0 0 -320 1 -61 0.3 0 0 2 1 0 1 0 0 1 6 1 1 1 0 70 0 479 -230 320 0 30 -30 0 -30 -30 0 285 0 50 100 0 3 1 1 1 0 70 0 479 -240 320 0 0 -13 0 -25 0 3 1 1 1 0 70 0 479 -253 320 0 0 -41 0 -13 0 3 1 1 1 0 70 0 479 -294 361 0 -46 0 0 0 -19 3 1 1 1 0 70 0 479 -305 326 0 0 -16 0 -24 0 3 1 1 1 0 70 0 479 -285 360 0 0 -81 0 -20 0 3 1 1 1 0 70 0 479 -351 277 0 -19 0 0 -33 81 3 1 1 1 0 70 0 479 -387 357 0 -19 0 0 -32 -79 3 1 1 1 0 70 0 479 -379 325 0 -34 0 0 0 -19 6 1 1 1 0 70 0 483 -41 201 0 0 42 0 -32 0 120 359 0 55 100 0 3 1 1 1 0 70 0 483 -31 189 0 -17 0 0 -26 -61 3 1 1 1 0 70 0 483 -85 128 0 -19 0 0 -26 70 3 1 1 1 0 70 0 483 -117 197 0 -20 0 0 -20 -70 3 1 1 1 0 70 0 483 -111 162 0 6 -15 0 -27 0 3 1 1 1 0 70 0 483 -167 196 0 -21 -1 0 -23 -68 3 1 1 1 0 70 0 483 -216 195 0 -23 1 0 52 -120 3 1 1 1 0 70 0 483 -231 243 0 0 -24 0 -84 0 3 1 1 1 0 70 0 483 -261 231 0 -25 0 0 0 -104 6 1 1 1 0 70 0 479 -339 169 0 19 13 0 -14 25 174 359 0 54 100 0 3 1 1 1 0 70 0 479 -335 164 0 -14 2 0 -22 -37 3 1 1 1 0 70 0 479 -310 195 0 -16 0 0 -1 -67 3 1 1 1 0 70 0 479 -389 129 0 -18 0 0 -22 65 3 1 1 1 0 70 0 479 -413 194 0 -18 0 0 -18 -65 3 1 1 1 0 70 0 479 -410 156 0 6 -13 0 -29 -1 6 1 1 1 0 70 0 479 -495 165 0 22 -29 0 -25 -24 0 268 0 55 100 0 3 1 1 1 0 70 0 479 -537 197 0 0 -71 0 -18 1 3 1 1 1 0 70 0 479 -545 198 0 -1 -20 0 -31 -1 3 1 1 1 0 70 0 479 -541 145 0 0 -18 0 -36 1 3 1 1 1 0 70 0 479 -550 167 0 -20 0 0 0 -14 3 1 1 1 0 70 0 483 -10 239 0 -16 0 0 0 -111 0 63 1 139 0 41 0 0 63 0 45 1 -24 0 0 61 0 -27 1 36 0.26530612245 0 60 1 -110 1 -26 0 0 64 1 143 0 -157 1 0 58 0 53 0 -177 1 0 64 0 -14 0.79591836735 -96 1 0 61 0 313 1 -61 0 0 61 1 238 0 -148 0 0 61 0 -73 1 -180 0 0 61 1 -219 1 -109 0 0 61 1 -264 0 -193 0 0 64 1 -133 0 -154 0.87755102041 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 1 1 1 2 2 2 3 3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 4 0 0 wfl 26 1 2 2 0 150 195 -320 -99 81 0.4 356 346 2 1 0 1 1 0 0 7 1 0 0 0 70 0 40 -220 240 479 -320 320 32 25 0 7 1 0 0 0 70 0 37 -320 380 479 -320 295 16 13 0 7 1 0 0 0 70 0 35 0 0 479 -320 270 0 0 0 7 1 0.71428571429 0.87755102041 0 70 0 15 0 0 479 -320 361 0 0 0 7 1 0.71428571429 0.87755102041 0 70 0 25 0 0 479 -320 385 0 0 0 7 0 0 1 0 70 0 8 0 0 460 -302 390 0 0 0 7 0 0 1 0 70 0 8 0 0 460 -338 390 0 0 0 8 1 0.75510204082 0.89795918367 0 70 0 478 -285 335 -2 -8 -5 0 -5 9 414 -281 301 0 0 0 8 1 0.71428571429 0.85714285714 0 70 0 479 -355 335 -1 8 -5 0 5 10 415 -360 305 0 0 0 8 1 0.71428571429 0.85714285714 0 70 0 479 -295 245 0 9 0 8 8 0 447 -295 190 0 0 0 8 1 0.71428571429 0.85714285714 0 70 0 479 -345 245 0 -8 0 8 -8 0 447 -345 190 0 0 0 8 1 0.73469387755 0.89795918367 0 70 0 447 -295 190 8 8 0 8 0 0 478 -295 130 0 0 0 8 1 0.73469387755 0.85714285714 0 70 0 447 -345 190 8 -8 0 8 0 0 478 -345 131 0 0 0 7 1 0.77551020408 0.89795918367 0 70 0 12 0 0 415 -360 305 0 0 0 10 1 0.77551020408 0.89795918367 0 70 0 415 -280 305 0 12 0 0 0 12 356 -280 368 0 0 0 10 1 0.73469387755 0.87755102041 0 0 0 415 -360 305 0 -12 0 0 0 12 362 -399 372 0 0 0 8 1 1 0 0 70 0 479 -320 406 0 13 -1 -22 0 6 489 -320 450 0 0 0 4 1 1 0 0 70 0 479 -320 401 0 33 0 -45 -2 17 7 1 0.73469387755 0.87755102041 0 70 0 14 0 0 447 -295 190 0 0 0 7 1 0.75510204082 0.87755102041 0 70 0 14 0 0 447 -345 190 0 0 0 3 0 0 1 0 70 0 496 -280 130 0 -30 0 -64 0 0 3 0 0 1 0 70 0 496 -360 130 0 30 0 -64 0 0 7 1 0.73469387755 0.85714285714 0 70 0 13 0 0 415 -280 305 0 0 0 1 1 1 1 1240 1240 0 -1 0 -199 0 10 0 0 0 10 7 1 0.85714285714 1 2 90 0 26 0 0 365 -392 410 0 0 0 7 1 0.73469387755 0.85714285714 0 70 0 15 0 0 479 -295 245 0 0 0 7 1 0.73469387755 0.85714285714 0 70 0 15 0 0 479 -345 246 0 0 0 0 -91 1 20 1 255 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 3 3 3 -1 -1 -1 -1 -1 -1 0 1 0 1 -1 -1 -1 -1 -1 0 1 -1 -1 -1 -1 -1 0 1 3 0 -1 wal 9 20 1 4 1 80 310 205 -129 -6 122 0.6 355 343 2 1 1 1 0 0 0 8 1 1 1 0 70 0 530 -230 295 5 -5 0 5 5 0 495 -235 395 0 0 0 0 70 0 530 -230 295 5 -5 0 5 5 0 495 -235 395 0 0 0 8 1 1 1 0 70 0 530 -315 295 0 -5 0 5 0 0 495 -310 395 0 0 0 0 70 0 530 -315 295 0 -5 0 5 0 0 495 -310 395 0 0 0 8 1 1 1 0 70 0 460 -230 295 0 -5 0 6 -1 0 495 -235 395 0 0 0 0 70 0 460 -230 295 0 -5 0 6 -1 0 495 -235 395 0 0 0 8 1 1 1 0 70 0 460 -315 295 0 -5 0 6 0 0 495 -310 395 0 0 0 0 70 0 460 -315 295 0 -5 0 6 0 0 495 -310 395 0 0 0 8 1 1 1 0 0 0 495 -230 395 0 0 5 -5 0 0 495 -315 395 0 0 0 0 0 0 495 -230 395 0 0 5 -5 0 0 495 -315 395 0 0 0 8 1 1 1 0 0 0 495 -250 395 0 -2 0 2 -2 0 515 -250 320 0 0 0 0 0 0 495 -250 395 0 -2 0 2 -2 0 475 -250 320 0 0 0 8 1 1 1 0 0 0 495 -295 395 0 2 0 2 0 0 515 -295 320 0 0 0 0 0 0 495 -295 395 0 2 0 2 0 0 475 -295 320 0 0 0 3 0 1 1 0 70 0 525 -245 320 0 -55 0 -20 0 -1 0 70 0 485 -245 320 0 -55 0 -20 0 -1 7 1 0 0 0 70 0 15 0 0 515 -272 340 0 0 0 0 70 0 15 0 0 475 -272 340 0 0 0 7 1 0 0 0 70 0 15 0 -90 515 -272 335 0 0 10 0 70 0 15 0 -90 475 -272 335 0 0 10 7 1 0.85714285714 0.85714285714 0 70 0 9 0 -90 515 -272 362 0 0 10 0 70 0 9 0 -90 475 -272 362 0 0 10 7 0 0.85714285714 1 0 70 0 3 0 -90 510 -265 365 0 0 10 0 70 0 3 0 -90 470 -265 365 0 0 10 7 0 0.85714285714 1 0 70 0 3 0 -90 510 -279 365 0 0 10 0 70 0 3 0 -90 470 -279 365 0 0 10 10 1 0.85714285714 0.85714285714 0 0 0 510 -265 340 0 0 -5 5 0 0 505 -250 357 0 0 0 0 0 0 470 -265 340 0 0 -5 5 0 0 485 -250 357 0 0 0 10 1 0.85714285714 0.85714285714 0 0 0 510 -279 340 0 0 5 5 0 0 505 -294 357 0 0 0 0 0 0 470 -279 340 0 0 5 5 0 0 485 -294 357 0 0 0 8 1 0.85714285714 0.85714285714 0 70 0 510 -265 328 0 -4 0 0 0 4 492 -265 328 0 0 0 0 70 0 470 -265 328 0 -4 0 0 0 4 453 -265 328 0 0 0 8 1 0.85714285714 0.85714285714 0 70 0 510 -279 328 0 -4 0 0 0 4 493 -279 328 0 0 0 0 70 0 470 -279 328 0 -4 0 0 0 4 453 -279 328 0 0 0 10 1 0.85714285714 0.85714285714 0 0 0 492 -265 328 0 -4 0 0 0 4 460 -260 306 0 0 0 0 0 0 453 -265 328 0 -4 0 0 0 4 440 -265 299 0 0 0 10 1 0.85714285714 0.85714285714 0 0 0 492 -279 328 0 -4 0 0 0 4 460 -283 306 0 0 0 0 0 0 453 -279 328 0 -4 0 0 0 4 440 -279 299 0 0 0 1 1 1 1 640 640 0 179 -51 -25 0 10 0 0 0 10 640 640 0 179 -51 -25 0 10 0 0 0 10 3 0 1 1 0 70 0 479 -390 300 0 -32 -1 27 -1 88 0 70 0 479 -390 300 0 -32 -1 27 -1 88 0 -6 1 79 1 105 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0.85714285714 0.85714285714 0.85714285714 0.85714285714 0 0 0.85714285714 0.85714285714 1 1 0 0 0.85714285714 0.85714285714 1 1 1 1 0.85714285714 0.85714285714 0.85714285714 0.85714285714 1 1 0.85714285714 0.85714285714 0.85714285714 0.85714285714 1 1 0.85714285714 0.85714285714 0.85714285714 0.85714285714 1 1 0.85714285714 0.85714285714 0.85714285714 0.85714285714 1 1 0.85714285714 0.85714285714 0.85714285714 0.85714285714 1 1 0.85714285714 0.85714285714 0.85714285714 0.85714285714 0 0 0 0 0 0 0 0 1 1 1 1 -129 -129 -6 -6 122 122 355 343 355 343 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 \OLD_MAN.SPU 0 -1 -6 -6 1 1 79 79 1 1 105 105 1 1 0 0 wfl 19 1 2 2 0 170 35 37 56 70 0.3 337 353 2 1 0 1 1 0 0 7 1 0.77551020408 0.87755102041 0 70 0 20 0 0 479 -320 320 0 0 0 7 0 0.87755102041 1 0 70 0 5 0 0 460 -305 324 0 0 0 7 0 0.87755102041 1 0 70 0 5 0 0 460 -335 324 0 0 0 7 1 0.83673469388 1 0 70 0 20 0 0 503 -320 320 0 0 0 7 1 0.83673469388 1 0 70 0 20 0 0 529 -320 320 0 0 0 7 1 0.83673469388 1 0 70 0 20 0 0 551 -320 320 0 0 0 7 1 0.83673469388 1 0 70 0 20 0 0 573 -320 320 0 0 0 7 1 0.28571428571 0 0 70 0 5 0 0 459 -319 313 0 0 0 1 1 1 1 940 940 0 75 -65 -25 0 10 0 0 0 10 7 1 0.55102040816 0 0 70 0 25 0 0 499 -409 351 0 0 0 7 1 0.48979591837 0 0 70 0 32 0 0 499 -410 323 0 0 0 7 1 0.57142857143 0 0 70 0 23 0 0 499 -408 374 0 0 0 7 0.91836734694 0.38775510204 0 0 70 0 21 0 0 499 -409 395 0 0 0 7 0.36734693878 1 0 0 70 0 30 0 0 499 -410 444 0 0 0 7 0.36734693878 1 0 0 70 0 39 0 0 479 -380 415 0 0 0 7 0.36734693878 1 0 0 70 0 39 0 0 479 -440 415 0 0 0 7 0.36734693878 1 0 0 70 0 39 0 0 516 -380 415 0 0 0 7 0.36734693878 1 0 0 70 0 39 0 0 517 -440 415 0 0 0 7 0.36734693878 1 0 0 70 0 45 0 0 500 -407 448 0 0 0 7 1 1 1 3 70 0 47 0 0 599 -230 338 0 0 0 0 75 1 65 1 228 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 0 wfl 16 1 1 4 225 225 210 -174 152 58 0.3 316 347 2 0 1 0 0 0.42857142857 0.85714285714 7 1 1 1 0 70 0 43 -230 320 479 -320 320 0 -30 -30 7 1 1 1 0 70 0 24 -240 320 434 -320 309 0 -25 0 7 0 0.85714285714 1 0 70 0 8 -253 320 419 -300 321 0 -13 0 7 0 0.85714285714 1 0 70 0 8 -294 361 419 -340 322 0 0 -19 8 1 0.69387755102 0 0 0 0 505 -318 318 5 -2 6 6 -1 -4 525 -261 353 0 0 0 8 1 0.67346938776 0 0 70 0 505 -320 320 5 0 -7 -6 -1 -4 522 -380 351 0 0 0 8 1 0.67346938776 0 0 70 0 479 -320 320 0 0 -7 -7 0 0 479 -379 350 0 0 0 8 1 0.67346938776 0 0 70 0 479 -320 320 0 0 -7 -7 0 0 479 -260 350 0 0 0 8 1 0.67346938776 0 0 70 0 450 -320 320 0 0 -7 -8 0 0 429 -260 353 0 0 0 8 1 0.67346938776 0 0 70 0 450 -320 320 0 0 -7 -8 0 0 431 -379 350 0 0 0 10 1 0.71428571429 0 0 0 0 479 -259 349 1 0 9 -7 0 1 492 -205 240 0 0 0 10 1 0.71428571429 0 0 0 0 431 -260 350 7 0 0 -2 -1 9 442 -205 240 0 0 0 10 1 0.71428571429 0 0 0 0 523 -260 351 1 -1 -6 -6 1 0 547 -205 241 0 0 0 10 1 0.71428571429 0 0 0 0 522 -378 350 0 -1 8 -7 -1 0 509 -425 240 0 0 0 10 1 0.71428571429 0 0 0 0 479 -379 347 0 0 9 -7 1 2 452 -425 240 0 0 0 10 1 0.71428571429 0 0 0 0 430 -379 349 4 0 8 8 1 -1 404 -425 240 0 0 0 1 0 0 0 640 640 0 -1 0 -90 0 10 0 0 0 10 0 -86 1 179 1 321 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 \BEE.PI1 0 0 wfl 20 1 2 1 0 170 35 13 11 263 0.5 344 313 2 1 0 1 1 0 0 7 1 0.77551020408 0.87755102041 0 70 0 20 0 0 479 -320 320 0 0 0 7 0 0.87755102041 1 0 70 0 5 0 0 460 -305 324 0 0 0 7 0 0.87755102041 1 0 70 0 5 0 0 460 -335 324 0 0 0 7 1 0.83673469388 1 0 70 0 20 0 0 503 -320 320 0 0 0 7 1 0.83673469388 1 0 70 0 20 0 0 529 -320 320 0 0 0 7 1 0.83673469388 1 0 70 0 20 0 0 551 -320 320 0 0 0 7 1 0.83673469388 1 0 70 0 20 0 0 573 -320 320 0 0 0 7 1 0.28571428571 0 0 70 0 5 0 0 459 -319 313 0 0 0 1 1 1 1 940 940 0 75 -65 -25 0 10 0 0 0 10 7 1 0.55102040816 0 0 70 0 25 0 0 499 -409 351 0 0 0 7 1 0.48979591837 0 0 70 0 32 0 0 499 -410 323 0 0 0 7 1 0.57142857143 0 0 70 0 23 0 0 499 -408 374 0 0 0 7 0.91836734694 0.38775510204 0 0 70 0 21 0 0 499 -409 395 0 0 0 7 0.36734693878 1 0 0 70 0 30 0 0 499 -410 444 0 0 0 7 0.36734693878 1 0 0 70 0 39 0 0 479 -380 415 0 0 0 7 0.36734693878 1 0 0 70 0 39 0 0 479 -440 415 0 0 0 7 0.36734693878 1 0 0 70 0 39 0 0 516 -380 415 0 0 0 7 0.36734693878 1 0 0 70 0 39 0 0 517 -440 415 0 0 0 7 0.36734693878 1 0 0 70 0 45 0 0 500 -407 448 0 0 0 7 1 1 1 3 70 0 47 0 0 599 -230 338 0 0 0 7 1 1 1 4 80 0 32 0 0 514 -303 419 0 0 0 0 113 1 -2 1 284 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 0